Built motion from commit 220a9d2c.|2.5.37
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 2 Nov 2021 20:31:41 +0000 (21:31 +0100)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 2 Nov 2021 20:31:41 +0000 (21:31 +0100)
1190 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/hu.json [deleted file]
public/app/errors/500/i18n/hu.json [deleted file]
public/app/footer/i18n/hu.json [deleted file]
public/app/forgot/i18n/hu.json [deleted file]
public/app/header/i18n/hu.json [deleted file]
public/app/login/i18n/hu.json [deleted file]
public/app/main/apps/analytics/i18n/hu.json [deleted file]
public/app/main/apps/callysquare/i18n/hu.json [deleted file]
public/app/main/apps/chat/i18n/hu.json [deleted file]
public/app/main/apps/contactmanager/i18n/hu.json [deleted file]
public/app/main/apps/dashboards/i18n/hu.json [deleted file]
public/app/main/apps/fax/i18n/hu.json [deleted file]
public/app/main/apps/help/i18n/hu.json [deleted file]
public/app/main/apps/integrations/i18n/hu.json [deleted file]
public/app/main/apps/jscripty/i18n/hu.json [deleted file]
public/app/main/apps/mail/i18n/hu.json [deleted file]
public/app/main/apps/marketplace/i18n/hu.json [deleted file]
public/app/main/apps/motiondialer/i18n/hu.json [deleted file]
public/app/main/apps/openchannel/i18n/hu.json [deleted file]
public/app/main/apps/plugins/i18n/hu.json [deleted file]
public/app/main/apps/settings/i18n/hu.json [deleted file]
public/app/main/apps/sms/i18n/hu.json [deleted file]
public/app/main/apps/staff/i18n/hu.json [deleted file]
public/app/main/apps/tools/i18n/hu.json [deleted file]
public/app/main/apps/video/i18n/hu.json [deleted file]
public/app/main/apps/voice/i18n/hu.json [deleted file]
public/app/main/apps/whatsapp/i18n/hu.json [deleted file]
public/app/quick-panel/i18n/hu.json [deleted file]
public/app/reset/i18n/hu.json [deleted file]
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/hu.json [deleted file]
public/app/toolbar/i18n/it.json
public/assets/images/flags/hu.png [deleted file]
public/index.html
public/scripts/app.844a057d.js [moved from public/scripts/app.c65a4752.js with 62% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedDB/voiceExtensions.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js

index d1e036c..6847a11 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-11-02T19:36:08.313Z",
+    "time": "2021-11-02T20:07:18.788Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 8d9ca9f..fe160a4 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-11-02T19:36:08.313Z",
+    "time": "2021-11-02T20:07:18.788Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
diff --git a/public/app/errors/404/i18n/hu.json b/public/app/errors/404/i18n/hu.json
deleted file mode 100644 (file)
index b061703..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "ERROR404": {
-    "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
-  }
-}
diff --git a/public/app/errors/500/i18n/hu.json b/public/app/errors/500/i18n/hu.json
deleted file mode 100644 (file)
index b218b70..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "ERROR500": {
-    "CODE": "500",
-    "MESSAGE": "Well, you broke the internet!",
-    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
-    "REPORT": "Report this problem",
-    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
-    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
-    "GO_BACK": "Go back to dashboard"
-  }
-}
diff --git a/public/app/footer/i18n/hu.json b/public/app/footer/i18n/hu.json
deleted file mode 100644 (file)
index 8a47415..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
-    "ERRORS": {}
-  }
-}
diff --git a/public/app/forgot/i18n/hu.json b/public/app/forgot/i18n/hu.json
deleted file mode 100644 (file)
index be7b81a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "FORGOTPASSWORD": {
-    "TITLE": "Recover your password",
-    "EMAIL_ADRESS": "Email address",
-    "SEND_RESET_LINK": "SEND RESET LINK",
-    "GO_BACK": "Go back to login",
-    "LINK_SENT": "Link Sent",
-    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
-    }
-  }
-}
diff --git a/public/app/header/i18n/hu.json b/public/app/header/i18n/hu.json
deleted file mode 100644 (file)
index f78785b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "HEADER": {
-    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
-    "ERRORS": {}
-  }
-}
diff --git a/public/app/login/i18n/hu.json b/public/app/login/i18n/hu.json
deleted file mode 100644 (file)
index 8a25905..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-{
-  "LOGIN": {
-    "TELEPHONES": "Telephones",
-    "SELECT": "Select",
-    "CANCEL": "Cancel",
-    "TITLE": "Log in to your account",
-    "EMAIL": "Email",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "REMEMBER_ME": "Remember Me",
-    "FORGOT_PASSWORD": "Forgot Password?",
-    "LOG_IN": "LOG IN",
-    "OR": "OR",
-    "WITH_GOOGLE": "Log in with Google",
-    "WITH_FACEBOOK": "Log in with Facebook",
-    "DONT_HAVE_ACCOUNT": "No account?",
-    "CREATE_ACCOUNT": "Create an account",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
-    }
-  }
-}
diff --git a/public/app/main/apps/analytics/i18n/hu.json b/public/app/main/apps/analytics/i18n/hu.json
deleted file mode 100644 (file)
index 71cf72f..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-{
-  "ANALYTICS": {
-    "SEND_IF_EMPTY": "Send if empty",
-    "REPORTNAME": "Report Name",
-    "DELETE": "Delete",
-    "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrics",
-    "ID": "Id",
-    "TABLE": "Table",
-    "DESCRIPTION": "Description",
-    "SEARCH_FOR_ANYONE": "Search",
-    "METRIC": "Metric",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "METRIC_REQUIRED": "Mandatory field",
-      "COLUMN_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field"
-    },
-    "NEW_METRIC": "New Metric",
-    "ADD_METRIC": "Add Metric",
-    "EDIT_METRIC": "Edit Metric",
-    "DELETE_METRIC": "Delete Metric",
-    "SAVE": "Save",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Extracted Reports",
-    "DATE_RANGE_FROM": "Date Range From",
-    "DATE_RANGE_TO": "Date Range To",
-    "GENERATED_AT": "Generated At",
-    "STATUS": "Status",
-    "OUTPUT": "Output",
-    "REPORTS": "Reports",
-    "SEARCH_FOR_FOLDER": "Search for folder",
-    "CREATED_AT": "Created At",
-    "NEW_REPORT": "New Report",
-    "ADD_REPORT": "Add Report",
-    "COPY_REPORT": "Copy Report",
-    "PREVIEW_REPORT": "Preview Report",
-    "WEB_REPORT": "Web Report",
-    "RUN_REPORT": "Run Report",
-    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
-    "EDIT_REPORT": "Edit Report",
-    "DELETE_REPORT": "Delete Report",
-    "CREATE": "Create Folder",
-    "RENAME": "Rename Folder",
-    "REMOVE": "Remove Folder",
-    "SELECT_NODE": "Select Folder",
-    "ERROR": "Error",
-    "QUERY_ERROR": "Query Error",
-    "MESSAGE": "Message",
-    "CLOSE": "Close",
-    "FORMAT": "Format",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FIELDS": "Fields",
-    "CONDITION": "Condition",
-    "OPERATOR": "Operator",
-    "GROUP": "Group",
-    "COLUMN": "Column",
-    "VALUE": "Value",
-    "PREVIEW": "Preview",
-    "LIMITED_RESULT": "*Limited Results",
-    "NO_DATA": "No data results",
-    "CONDITIONS": "Conditions",
-    "ALIAS": "Alias",
-    "FUNCTION": "Function",
-    "GROUP_BY": "Group By",
-    "ORDER_BY": "Order By",
-    "ADD_REPORTFIELD": "Add Field",
-    "EDIT_REPORTFIELD": "Edit Field",
-    "DELETE_REPORTFIELD": "Delete Field",
-    "METRIC_NAME": "Metric",
-    "NO_METRIC_FOUND": "No metric found",
-    "NO_AVAILABLE_INFO": "No available info",
-    "CUSTOM_METRIC": "Custom Metric",
-    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
-    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of"
-  }
-}
diff --git a/public/app/main/apps/callysquare/i18n/hu.json b/public/app/main/apps/callysquare/i18n/hu.json
deleted file mode 100644 (file)
index 1e523a8..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-{
-  "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
-    "AGI": "AGI",
-    "ALL_USERS": "All Users",
-    "ANSWER": "Answer",
-    "APIKEY": "ApiKey",
-    "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Secret",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Attachment Name",
-    "ATTACHMENT_PATH": "Attachment Path",
-    "ATTACHMENT_TYPE": "Attachment Type",
-    "AUDIO": "Audio",
-    "AUDIOENCODING": "Audio Encoding",
-    "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Bot name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Voice",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
-    "AWS_TEXT_TYPE": "Text type",
-    "BACK": "Back",
-    "BCC": "BCC",
-    "BEEP": "Beep",
-    "BODY": "Body",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
-    "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLIENT_EMAIL": "Client Email",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
-    "COMPUTEDVARIABLES": "Computed Variables Script Path",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
-    "CUSTOM_ACTION": "Custom Action",
-    "CUSTOM_ACTION_DATA": "Custom Action Data",
-    "CUSTOM_APP": "Custom Application",
-    "DATABASE": "Database",
-    "DELAY": "delay [min]",
-    "DELETE": "Delete",
-    "DELETE_ODBC": "Delete ODBC",
-    "DELETE_PROJECT": "Delete Project",
-    "DELETE_SQUARERECORDING": "Delete Square Recording",
-    "DESCRIPTION": "Description",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
-    "DIALOGFLOWV2": "DialogflowV2",
-    "DIALOGFLOWV2_LANGUAGE": "Language",
-    "DIALOGFLOWV2_PROJECT_ID": "Project ID",
-    "DIALOGFLOW_LANGUAGE": "Language",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
-    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
-    "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
-    "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field"
-    },
-    "ESCAPE_DIGITS": "Escape Digits",
-    "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
-    "FILE_ID": "Audio",
-    "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
-    "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
-    "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Text Type",
-    "GOOGLE_TTS_LANGUAGE": "Language",
-    "GOSUB": "GoSub",
-    "GOTOC": "GoTo",
-    "GOTOIF": "GoToIf",
-    "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
-    "HEADERS": "Headers",
-    "HELP": {
-      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
-      "MAILBOX": "mailbox@context",
-      "MAX_TEXT_TTS": "The maximum number of characters supported is 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
-    },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
-    "ISPEECHASR": "iSpeech ASR",
-    "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
-    "LANGUAGECODE": "Language Code",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
-    "LUMENVOXASR": "Lumenvox ASR",
-    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
-    "METHOD": "Method",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
-    "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSynth",
-    "NAME": "Name",
-    "NDAACTIVITY_TYPE": "Activity Type",
-    "NDAGENERATE_AUDIO": "Generate Audio File",
-    "NDASSISTANT_URL": "NDASSISTANT Url",
-    "NDAUTH_URL": "NDAUTH Url",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
-    "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NUMBER": "Number",
-    "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
-    "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
-    "PASSWORD": "Password",
-    "PAUSE": "Pause",
-    "PAUSE_ID": "Pause type",
-    "PERMISSIONADD_PROJECTS": "Add Users to Project",
-    "PHONE": "Phone",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
-    "PRIVATE_KEY": "Private Key",
-    "PROJECT": "Project",
-    "PROJECTS": "Projects",
-    "PROJECT_ID": "Project",
-    "QUERY": "Query",
-    "QUEUE": "Queue",
-    "QUEUE_ID": "Queue",
-    "RAWBODY": "Body",
-    "RAWHEADERS": "Headers",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
-    "RESTAPI": "Rest API",
-    "RETRY": "Retries",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECTED_USERS": "Selected Users",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "SENDFAX": "Send Fax",
-    "SENDMAIL": "Send Email",
-    "SENDSMS": "Send SMS",
-    "SESTEKASR": "Sestek ASR",
-    "SESTEKNDA": "Sestek NDA",
-    "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
-    "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
-    "SSMLGENDER": "Gender",
-    "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
-    "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
-    "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
-    "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
-    "URI": "URI",
-    "URL": "URL",
-    "USERNAME": "Username",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch"
-  }
-}
diff --git a/public/app/main/apps/chat/i18n/hu.json b/public/app/main/apps/chat/i18n/hu.json
deleted file mode 100644 (file)
index 13cbf3f..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-{
-  "CHAT": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "VIDAOOESCALATION": "Start Video Call",
-    "VIDAOOAPIKEY": "Vidaoo Api Key",
-    "VIDAOOSESSION": "Start Video Call",
-    "VIDAOOTOPIC": "Vidaoo Topic",
-    "VIDAOONOTE": "Vidaoo Note",
-    "VIDAOOMETADATA": "Vidaoo Metadata",
-    "VIDEO": "Video",
-    "VIDAOO": "Vidaoo",
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
-    "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot Name",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "SYSTEMAVATAR": "System Avatar",
-    "SYSTEMALIAS": "System Alias",
-    "OPEN_NEW_INTERACTION": "Open new interaction",
-    "EMAIL_ACCOUNT": "Email account",
-    "SUBJECT": "Subject",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "LANGUAGE": "Language",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow",
-    "DIALOGFLOW": "Dialogflow",
-    "BACKGROUNDCOLOR": "Background Color",
-    "MESSAGEFONTSIZE": "Message Font Size",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "CUSTOMERALIAS": "Customer Alias",
-    "SNIPPETSWIPEOUT": "Snippet swipe out",
-    "CUSTOMERAVATAR": "Customer Avatar",
-    "SHOWCUSTOMERAVATAR": "Show customer avatar",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "DEFAULTTITLE": "Default Title",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ALTERNATE": "Alternate",
-    "CENTERED": "Centered",
-    "POSITION": "Position",
-    "VERTICALPOSITION": "Vertical position",
-    "ALIGNMENT": "Alignment",
-    "VERTICALALIGNMENT": "Vertical alignment",
-    "BOTTOM_RIGHT": "Bottom right",
-    "RIGHT": "Right",
-    "LEFT": "Left",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "AGENTIDENTIFIER": "Identifier",
-    "WEBSITEALIAS": "Website Alias",
-    "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Fullname",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "HIDEWHENOFFLINE": "Hide",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "TEXTCOLOR": "Text Color",
-    "FONTSIZE": "Font Size",
-    "WEBSCRIPT": "Web Script",
-    "CANNEDANSWERS": "Canned Answers",
-    "CHATCANNEDANSWERS": "Canned Answers",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_CHATCANNEDANSWER": "New Canned Answer",
-    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit",
-    "DELETE_CHATCANNEDANSWER": "Delete",
-    "OFFLINEMESSAGESUBJECT": "Message subject",
-    "OFFLINEMESSAGEBODY": "Message body",
-    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
-    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
-    "PLACEHOLDERMESSAGE": "Message placeholder",
-    "NOTETITLE": "Note's title",
-    "CLOSINGQUESTION": "Closing question",
-    "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Show personal agent avatar",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "WRITING": "Writing",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
-    "FAX": "Fax",
-    "PAUSE": "Pause",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "UNPAUSE": "End Pause",
-    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NEW_CHATDISPOSITION": "New Chat Disposition",
-    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
-    "ENABLESENDBUTTON": "Enable Send Button",
-    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
-    "OFFLINESTATUS": "Offline Status",
-    "NAME": "Name",
-    "CHATQUEUES": "Chat Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "KEY": "Key",
-    "ALIAS": "Alias",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit Close",
-    "TIMEZONE": "Timezone",
-    "MESSAGE": "Message",
-    "ADVANCED": "Advanced",
-    "FORWARDTRANSCRIPT": "Forward Transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
-    "SKIPMESSAGEBUTTON": "Skip Message Button",
-    "EDIT_MESSAGE": "Edit Message",
-    "CONDITION_AGREEMENT": "Condition Agreement",
-    "NONE": "None",
-    "PRIORITY": "Priority",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Unmanaged Status",
-    "AUTOCLOSE": "Enable Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
-    "UNMANAGEDMESSAGE": "Message",
-    "SKIPUNMANAGED": "Skip Message",
-    "SENDUNMANAGED": "Send Message",
-    "WEBSITESCRIPT": "Website Script",
-    "DELETE_OFFLINEMESSAGE": "Delete",
-    "OFFLINEMESSAGES": "Offline Messages",
-    "FORWARD_OFFLINE": "Forward Offline",
-    "SHOW_OFFLINEMESSAGE": "Show",
-    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
-    "CLOSINGFORM": "Closing Form",
-    "ENABLERATING": "Enable Rating",
-    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
-    "ENABLEFEEDBACK": "Enable Feedback",
-    "FEEDBACKTITLE": "Feedback Title",
-    "RATINGTYPE": "Rating Type",
-    "CLOSINGMESSAGE": "Closing Message",
-    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
-    "RATINGSTARSNUMBER": "Rating Stars Number",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "SERVICEID": "Service ID",
-    "CHANNELID": "Channel ID",
-    "EDIT_TVOX": "Edit TVox",
-    "SERVICENAME": "Service name",
-    "TVOX": "TVox",
-    "TVOXURL": "TVox IP URL",
-    "TVOXIP": "TVox IP Address",
-    "TVOXUSERNAME": "TVox Username",
-    "TVOXPASSWD": "TVox Password",
-    "TVOXLOGINURL": "TVox Login REST Url",
-    "TVOXSESSIONURL": "TVox Session REST Url",
-    "MOTIONURLONRING": "Motion URL On Ring",
-    "MOTIONURLONANSWER": "Motion URL On Answer",
-    "MOTIONTITLE": "Motion Title",
-    "MOTIONURL": "Motion URL",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "VIDAOOAPIKEY_REQUIRED": "Mandatory Field",
-      "VIDAOOTOPIC_REQUIRED": "Mandatory Field",
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
-      "AGENTALIAS_REQUIRED": "Mandatory Field",
-      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Wrong format",
-      "ADDRESS_REQUIRED": "Mandatory Field",
-      "ADDRESS_MUST_VALID_URL": "Wrong format",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
-      "WAITINGTITLE_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "EMAIL_ACCOUNT_REQUIRED": "Mandatory field"
-    },
-    "CM_FIELD": "Contact Manager Field",
-    "CHATPROACTIVEACTIONS": "Proactive Actions",
-    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
-    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
-    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
-    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
-    "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Timeout",
-    "TYPE": "Type",
-    "SELECTOR": "Selector",
-    "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "GotoIf",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_GOTOIf": "Edit GotoIf",
-    "EDIT_NOOP": "Edit Noop",
-    "ADD_CHATQUEUE": "Add Chat Queue",
-    "EDIT_CHATQUEUE": "Edit Chat Queue",
-    "DELETE_CHATQUEUE": "Delete Chat Queue",
-    "SETTINGS": "Settings",
-    "SAVE": "Save",
-    "SCRIPT": "Script",
-    "TOKEN": "Token",
-    "CREATED_AT": "Created At",
-    "CHATWEBSITES": "Chat Websites",
-    "MOTIONADDRESS": "Website Domain",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "ADD_CHATWEBSITE": "Add Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Delete Chat Website",
-    "LIST": "List",
-    "SNIPPET": "Snippet",
-    "FORMS": "Forms",
-    "UP": "Up",
-    "DOWN": "Down",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Proactive Actions",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "FIDELITY": "Fidelity",
-    "APPEARANCE": "Appearance",
-    "MAINCOLOR": "Main Color",
-    "FOCUSCOLOR": "Focus Color",
-    "BUTTONCOLOR": "Button Color",
-    "HEADERSHAPE": "Header Shape",
-    "ANIMATION": "Animation",
-    "DEFAULT": "Default",
-    "WHITELABEL": "White Label",
-    "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcript",
-    "ENQUIRY_ENABLE": "Enquiry Enable",
-    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
-    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
-    "LABELS": "Labels",
-    "HEADER_ONLINE": "Online Header",
-    "ONLINE_MESSAGE": "Online Message",
-    "NAME_TITLE": "Name Input Label",
-    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
-    "START_CHAT_BUTTON": "'Start Chat' Button",
-    "AGENTS_BUSY": "Busy Agents Message",
-    "HEADER_OFFLINE": "Offline Header",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "MESSAGE_TITLE": "Message Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
-    "ENQUIRY_BUTTON": "Enquiry Button Text",
-    "RATING_MESSAGE": "Rating Message",
-    "RATING_SEND": "Rating Send Button Text",
-    "RATING_SKIP": "Rating Skip Button Text",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proactive",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "EMBEDDING": "Embedding",
-    "GENERAL": "General",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "HELP": {
-      "VERTICALPOSITION": "Represents the distance in percentage from top",
-      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
-      "HIDEWHENOFFLINE": "Hides snippet when offline",
-      "KEY": "Website short name (5 char) shown on the Agent Tab",
-      "TOKEN": "Automatically generated token used in the Script",
-      "INTEVAL": "To be selected from the list of the available intervals",
-      "TIMEZONE": "Select one from the list (default=local timezone)",
-      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
-      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
-      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
-      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
-      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
-      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "The following Motion Contact Manager field:",
-      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
-      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
-      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate Contacts",
-      "INTERVAL": "Select one from the list",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message"
-    },
-    "ADDRESS": "Address",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Rating State",
-    "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat Dispositions",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
-    "ADD_CHATDISPOSITION": "Add Chat Disposition",
-    "DELETE": "Delete",
-    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
-    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
-    "ID": "Id",
-    "NEW_CHATQUEUE": "New Chat Queue",
-    "NEW_CHATWEBSITE": "New Chat Website",
-    "ROUNDED": "Rounded",
-    "SQUARED": "Squared",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "WEBSITE": "Website",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
-    "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
-    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CREATEDAT": "Created At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECTED_WEBSITE": "Select a website",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "SELECT_WEBSITE": "Select a website",
-    "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
-    "WAITINGTITLE": "Waiting Title",
-    "WAITINGMESSAGE": "Waiting Message",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "No Rating",
-    "DEFAULT_PAUSE": "Default pause",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
diff --git a/public/app/main/apps/contactmanager/i18n/hu.json b/public/app/main/apps/contactmanager/i18n/hu.json
deleted file mode 100644 (file)
index ae09490..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-{
-  "CONTACTMANAGER": {
-    "SELECT_TAG": "Select tags",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "USERID": "Recall Agent ID",
-    "PRIORITY": "Priority",
-    "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Import Contacts",
-    "PREFIX": "Dial Prefix",
-    "VOICEQUEUEID": "VoiceQueue ID",
-    "CAMPAIGNID": "Campaign ID",
-    "STATE": "State",
-    "NAME": "Name",
-    "LISTS": "Lists",
-    "UNIQUEID": "Unique Id",
-    "STATUS": "Status",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MOTION_BULL": "Motion Bull",
-    "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper History",
-    "SCHEDULEDAT": "Scheduled At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_LIST": "Edit List",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Delete List",
-    "DELETE_HOPPER": "Delete Hopper",
-    "RELOAD": "Reload",
-    "NO_COMPANIES": "No Company",
-    "NO_AVAILABLE_ITEMS": "No Available Items",
-    "ADD": "Add",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CLICKTOACTION_REQUIRED": "Mandatory field",
-      "ACTIONTYPE_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on"
-    },
-    "DESCRIPTION": "Description",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice Dispositions",
-    "NEW_VOICEDISPOSITION": "New Voice Disposition",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "ADD_LIST": "Add List",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "COMPANIES": "Companies",
-    "EDIT_COMPANY": "Edit Company",
-    "DELETE_COMPANY": "Delete Company",
-    "PHONE": "Phone",
-    "EMAIL": "Email",
-    "ADD_COMPANY": "Add Company",
-    "CONTACTS": "Contacts",
-    "NEW_LIST": "New List",
-    "FIRSTNAME": "First Name",
-    "LASTNAME": "Last Name",
-    "LIST": "List",
-    "COMPANY": "Company",
-    "ADD_CONTACT": "Add Contact",
-    "EDIT_CONTACT": "Edit Contact",
-    "MERGE_CONTACT": "Merge Contact",
-    "DUPLICATE_CONTACT": "Duplicate Contact",
-    "DELETE_CONTACT": "Delete Contact",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Personal Info",
-    "MOBILE": "Mobile",
-    "FAX": "Fax",
-    "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Show all fields",
-    "FEWER_FIELDS": "Show less fields",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "DELETE": "Delete",
-    "DELETE_ALL": "Delete All",
-    "CONTACTMANAGER": "Contacts Manager",
-    "ID": "Id",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CUSTOMFIELDS": "Custom Fields",
-    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
-    "ADD_TAG": "Add Tag",
-    "NO_TAG": "No Tags",
-    "ALIAS": "Alias",
-    "CLICKTOACTION": "Click to action",
-    "ACTIONTYPE": "Action type",
-    "TYPE": "Type",
-    "VALUE": "Value",
-    "ADD_CUSTOMFIELD": "Add Custom Field",
-    "EDIT_CUSTOMFIELD": "Edit Custom Field",
-    "DELETE_CUSTOMFIELD": "Delete Custom Field",
-    "NEW_COMPANY": "New Company",
-    "NEW_CONTACT": "New Contact",
-    "NEW_TAG": "New Tag",
-    "UPLOAD_CONTACTS": "Upload Contacts",
-    "FINISH": "Finish",
-    "SUCCESS": "Success",
-    "FAILURE": "Failure",
-    "ALL_CONTACTS": "All Contacts",
-    "NEW_CUSTOMFIELD": "New Custom Field",
-    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
-    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "VAT": "VAT",
-    "COMPANYID": "Company ID",
-    "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Email Domain",
-    "ADDRESS": "Address",
-    "POSTAL_CODE": "Postal Code",
-    "SHIPMENTADDRESS": "Shipment Address",
-    "COPY_CONTACT": "Copy Contact",
-    "GOTOCONTACTS_LIST": "Show Contacts",
-    "GOTOCONTACTS_COMPANY": "Show Contacts",
-    "ADD_AGENT_TO_LIST": "Add Agent to List",
-    "AGENTADD_LIST": "Add Agents to List",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NONE": "None",
-    "ALL": "All",
-    "FULLNAME": "Full Name",
-    "CHECK_DUPLICATES": "Check Duplicates",
-    "DUPLICATES": "Duplicates",
-    "UPLOAD_CSV": "Upload CSV",
-    "TAG": "Tag",
-    "UPLOAD": "Upload",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "DATE_OF_BIRTH": "Birthdate",
-    "DATEOFBIRTH": "Birthdate",
-    "NOTES": "Notes",
-    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
-    "GOTO_LIST": "Show Contacts",
-    "GOTO_COMPANY": "Show Contacts",
-    "REQUIRED": "Required",
-    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
-    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
-    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
-    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
-    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
-    "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
-    "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
-    "HELP": {
-      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
-      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
-    "BILLINGINFORMATION": "Billing Information",
-    "FLATDISCOUNT": "Company Discount",
-    "EUROPE": "Europe",
-    "ISOCODE": "ISO National Code",
-    "VATNUMBER_CF": "Codice Fiscale/VAT",
-    "PIVA": "VAT Number",
-    "SDICODE": "SDI Code",
-    "EXPIREDAY": "Expiration Days",
-    "INVOICEARTICLE": "Law Articles",
-    "PAYMENTMETHOD": "Payment Method",
-    "SOCIAL_CAPITAL": "Share Capital",
-    "COMPANY_FISCAL_TYPE": "Company Fiscal Type",
-    "RELATIONSHIP": "Relationship ...",
-    "RELATIONSHIPCOMPANY": " ... with",
-    "CREATE": "Create",
-    "RECALLME": "Recall Me",
-    "NOTIFICATIONS": {
-      "NO_DATA_ERROR": "Unable to retrieve any data",
-      "INTERACTION_OPEN_ERROR": "Unable to open the interaction",
-      "ACCOUNTS_GET_ERROR": "Unable to retrieve any {{channel}} account",
-      "JSCRIPTY_GET_ERROR": "Unable to retrieve any Jscripty project"
-    }
-  }
-}
diff --git a/public/app/main/apps/dashboards/i18n/hu.json b/public/app/main/apps/dashboards/i18n/hu.json
deleted file mode 100644 (file)
index f0ce997..0000000
+++ /dev/null
@@ -1,576 +0,0 @@
-{
-  "DASHBOARDS": {
-    "VISIBILITY": "Visibility",
-    "PUBLIC": "Public",
-    "PRIVATE": "Private",
-    "PUBLIC_INTERACTION": "The interaction is public",
-    "LOST_CONNECTION": "Experiencing network connectivity issues. Please check your internet connection.",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "DOWNLOAD": "Download",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "UNMANAGED_RATE": "Unmanaged Rate",
-    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
-    "VOICE_WAITING": "WAITING",
-    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
-    "VOICE_TALKING": "TALKING",
-    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
-    "VOICE_ANSWERED": "ANSWERED",
-    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
-    "VOICE_ABANDONED": "ABANDONED",
-    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
-    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
-    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
-    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
-    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
-    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
-    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
-    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
-    "VOICE_ANSWER_RATE": "ANSWER RATE",
-    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
-    "VOICE_ABANDON_RATE": "ABANDON RATE",
-    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
-    "VOICE_UNMANAGED": "UNMANAGED",
-    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
-    "ABANDONED": "Abandoned",
-    "ABANDONED_TEXT": "Abandoned Interactions",
-    "ABANDONED_RATE": "Abandoned Rate",
-    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
-    "TOTAL_OFFERED": "Total Offered",
-    "TOTAL_OFFERED_TEXT": "Offered Interactions",
-    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
-    "MANAGED_RATE": "Managed Rate",
-    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "No disposition set",
-    "AGENTS": "Agents",
-    "TRANSFER": "Transfer",
-    "NO_DATA_AVAILABLE": "No data available",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "ME": "Me",
-    "CURRENTLY_IN_USE_BY": "Currently in use by",
-    "NOTAVAILABLE": "Not available",
-    "CLICKRELOAD": "New abandoned calls! Reload please",
-    "ASSIGNTO": "Assign to",
-    "SELECT_QUEUE": "Select Queue",
-    "SELECT_CAMPAIGN": "Select Queue",
-    "FREE": "Free",
-    "RESERVED": "Reserved",
-    "QUEUECALLEREXITREASON": "Reason",
-    "QUEUECALLEREXITAT": "Dropped",
-    "LASTASSIGNEDTO": "Last Assigned To",
-    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
-    "ABANDONAT": "Abandoned",
-    "QUEUE": "Queue",
-    "SELECT_SUBSTATUS": "Select Substatus",
-    "READ": "Read",
-    "UNREAD": "Unread",
-    "SELECT_READ_UNREAD": "Select Read/Unread",
-    "SELECT_AGENT": "Select Agent",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
-    "CHANNEL_QUEUE": "Queue",
-    "CHANNEL_FROM": "From",
-    "LOADING_INTERACTION": "We are loading the interaction...",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
-    "AUGUST": "August",
-    "SEPTEMBER": "September",
-    "OCTOBER": "October",
-    "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Mon",
-    "TUE": "Tue",
-    "WED": "Wed",
-    "THU": "Thu",
-    "FRI": "Fri",
-    "SAT": "Sat",
-    "SUN": "Sun",
-    "DELETE": "Delete",
-    "LAST_3_DAYS": "Last 3 Day",
-    "LAST_YEAR": "Last Year",
-    "THIS_YEAR": "This Year",
-    "LAST_MONTH": "Last Month",
-    "THIS_MONTH": "This Month",
-    "LAST_WEEK": "Last Week",
-    "THIS_WEEK": "This Week",
-    "YESTERDAY": "Yesterday",
-    "TODAY": "Today",
-    "SELECT_DATE": "Select Start Date",
-    "HOME": "Home",
-    "SET_AS": "Set As",
-    "PENDING": "Pending",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "TAGS": "Tags",
-    "SELECT_TAG": "Select Tag",
-    "TYPE": "Type",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "CALLERID": "Caller ID",
-    "END_AT": "End At",
-    "DURATION": "Duration",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "NOT_ASSIGNED": "Not Assigned",
-    "UNKNOWN": "Unknown",
-    "SELECT_USER": "Select User",
-    "LAST_MESSAGE": "Last message",
-    "USER": "User",
-    "RATING": "Rating",
-    "FEEDBACK": "Feedback",
-    "SUBJECT": "Subject",
-    "CUSTOMER_IP": "Originating IP Address",
-    "REFERER": "Referer",
-    "ACCOUNT": "Account",
-    "WEBSITE": "Website",
-    "AGENT": "Agent",
-    "CREATED_AT": "Created At",
-    "CLOSED_AT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CONTACT": "Contact",
-    "INTERACTION": "Interaction",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Operating System Name",
-    "OS_VERSION": "Operating System Version",
-    "DEVICE_MODEL": "Device Model",
-    "DEVICE_VENDOR": "Device Vendor",
-    "DEVICE_TYPE": "Device Type",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Drop Rate",
-    "DROPPED": "Dropped",
-    "DROPPED_TEXT": "Dropped Queue Calls",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
-    "LIMITED": "Limited",
-    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
-    "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Recordings",
-    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
-    "ORIGINATED": "Originated",
-    "ORIGINATED_TEXT": "Queue Calls Originated",
-    "UPDATE": "Update",
-    "MORE": "More",
-    "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Dispose",
-    "QUEUES": "Queues",
-    "DIALER_CALL": "Dialer Call",
-    "ELAPSED_TIME": "Elapsed Time",
-    "EDIT": "Edit",
-    "MERGE": "Merge",
-    "DUPLICATE": "Duplicate",
-    "UNIQUEID": "Uniqueid",
-    "AUTOCLOSE": "Automatically close contact tab after disposal",
-    "CAMPAIGN": "Campaign",
-    "NONE": "None",
-    "NAME": "Name",
-    "ANSWER_MACHINE": "Answer Machine",
-    "INTERESTED": "Interested",
-    "NOT_INTERESTED": "Not Interested",
-    "PERSONAL_INFO": "Personal Info",
-    "SOLD": "Sold",
-    "SPECIAL": "Special",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reschedule",
-    "FIRSTNAME": "Firstname",
-    "LASTNAME": "Lastname",
-    "MOBILE": "Mobile",
-    "DATE_OF_BIRTH": "Birthdate",
-    "COMPANY": "Company",
-    "TAG": "Tag",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Address",
-    "POSTALCODE": "Postal Code",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "GENERAL": "General",
-    "VOICE": "Voice",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
-    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
-    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "INBOUND_ANSWERED": "Answered",
-    "OUTBOUND_ANSWERED": "Answered",
-    "AVG_HOLD_TIME": "Average Hold Time",
-    "INBOUND_ANSWER_RATE": "Answer Rate",
-    "OUTBOUND_ANSWER_RATE": "Answer Rate",
-    "ABANDON_RATE": "Abandon Rate",
-    "UNMANAGED": "Unmanaged",
-    "TOTAL": "Total",
-    "TOT_DURATION": "Total Duration",
-    "AVG_DURATION": "Average Duration",
-    "HELP": {
-      "MANDATORY_DISPOSITION_ENABLED": "Mandatory disposition enabled for this account",
-      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
-      "WAITING": "The total number of Waiting Interactions",
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "ABANDONED": "The total number of Abandoned Interactions",
-      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
-      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
-      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
-      "MANAGED_RATE": "The Managed Rate of all the Interactions",
-      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
-      "UNMANAGED": "The total number of Unmanaged Interactions",
-      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
-      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
-      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
-      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
-      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned + unmanaged in the last queue of the flow). Note that the calls which enter in an IVR and not in a queue, will not be considered",
-      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
-      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
-      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
-      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
-      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
-      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
-      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
-      "DROP_RATE": "The Drop Rate of all the Queue Calls",
-      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
-      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
-      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
-      "TOTAL": "The total number of Outbound Calls",
-      "TOT_DURATION": "The total duration of all the Outbound Calls",
-      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
-      "EXACT_MATCH_FILTER": "Search for an exact match",
-      "LIKE_FILTER": "Search for the specified pattern"
-    },
-    "ERRORS": {
-      "CAMPAIGN_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "FAILED_INITIALIZATION": "Error during initialization"
-    },
-    "NO_AVAILABLE_INFO": "No available info",
-    "WELCOME_TO_MOTION": "Welcome to Motion",
-    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
-    "ADD": "Add",
-    "CONTACTMANAGER": "Contact Manager",
-    "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Edit contact",
-    "EMAIL": "Email",
-    "FULLNAME": "Fullname",
-    "CREATEDAT": "Created At",
-    "LIST": "List",
-    "NEW_CONTACT": "New Contact",
-    "PHONE": "Phone",
-    "SAVE": "Save",
-    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
-    "CONTACTS": "Contacts",
-    "MYCONTACTS": "My Contacts",
-    "ADD_CONTACT": "Add Contact",
-    "RELOAD": "Reload",
-    "WAITING_TEXT": "Waiting Interactions",
-    "TALKING_TEXT": "Active Queue Calls",
-    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
-    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
-    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
-    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
-    "UNMANAGED_TEXT": "Unmanaged Interactions",
-    "TOTAL_TEXT": "Total Outbound Calls",
-    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
-    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
-    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
-    "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Close and dispose",
-    "DISPOSITIONS": "Dispositions",
-    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
-    "ACCEPT": "Accept",
-    "REJECT": "Reject",
-    "CLOSED": "Closed",
-    "INFO": "Info",
-    "NOTE": "Note",
-    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
-    "ATTENTION": "Attention",
-    "SOCIAL": "Social",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Open",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "SELECT_ACCOUNT": "Select Account",
-    "SELECT_WEBSITE": "Select Website",
-    "ALL": "All",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "OPEN": "Open",
-    "SHOW": "Show",
-    "SHOW_DETAILS": "Show Details",
-    "HIDE_DETAILS": "Hide Details",
-    "EXTERNAL_URL": "External Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No Whatsapp Account available",
-    "SELECT_DATE_RANGE": "Select Date Range",
-    "CLEAR": "Clear",
-    "CALL_NUMBER": "Call",
-    "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Call properly saved",
-    "CALL_DISPOSED": "Call properly disposed",
-    "CUSTOMER_PORT": "Originating TCP Port",
-    "INTERACTION_CLOSED": "Interaction properly closed",
-    "INTERACTION_DISPOSED": "Interaction properly disposed",
-    "INTERACTION_CLOSED_DISPOSED": "Interaction properly closed and disposed",
-    "SELECT_ALL": "Select all",
-    "ASSIGNED_TO_OTHERS": "Assigned to others",
-    "ID": "Id",
-    "CHAT_INTERACTIONS": "Chat Interactions",
-    "MAIL_INTERACTIONS": "Email Interactions",
-    "SMS_INTERACTIONS": "SMS Interactions",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel Interactions",
-    "FAX_INTERACTIONS": "Fax Interactions",
-    "DRAFT": "Draft",
-    "DRAFT_SAVE_WARNING_TITLE": "Overwrite existing draft?",
-    "DRAFT_SAVE_WARNING_MESSAGE": "There is already a draft saved for this interaction. Are you sure you want to overwrite it?",
-    "OVERWRITE": "Overwrite",
-    "CANCEL": "Cancel",
-    "UNTITLED": "Untitled",
-    "SAVE_AS_DRAFT": "Save as draft",
-    "UPDATE_DRAFT": "Update draft",
-    "NO_AVAILABLE_INTERACTION": "No available interaction",
-    "DOSSIERS": "Dossiers",
-    "DOSSIER": "Dossier",
-    "DOSSIER_INFO": "Information",
-    "SELECT_COMPANY": "Select Company",
-    "DOSSIERNAME": "Dossier Name",
-    "OPENDATE": "Open Date",
-    "ALL_COMPANIES": "All Companies",
-    "SELECT_WORKFLOW": "Select Workflow",
-    "WORKFLOW": "Select Workflow",
-    "SELECT_WORKFLOWSTEPS": "Select Workflow State",
-    "ALL_WORKFLOW": "All Workflow",
-    "STATE": "State",
-    "STEP": "Step",
-    "NEW_DOSSIER": "New Dossier",
-    "PRICELIST": "Price List",
-    "PRODUCTFILTERNAME": "Filter Name",
-    "PRODUCTNAME": "Product",
-    "PRODUCTINQUOTATION": "PRODUCT DETAILS",
-    "REQUEST": "REQUEST",
-    "QUOTATION": "QUOTATION",
-    "DOSSIERID": "Dossier ID",
-    "QUOTATIONNAME": "Quotation Name",
-    "QUOTATIONNOTES": "Quotation Notes",
-    "QUOTATIONSTATUS": "State",
-    "REQUESTNAME": "Request Name",
-    "REQUESTNOTES": "Request Notes",
-    "ALL_STEP": "All",
-    "UPDATED_AT": "Modified on",
-    "BY": "By",
-    "ORDER": "Order",
-    "PROFORMA": "PROFORMA",
-    "INVOICE": "INVOICE",
-    "REQUESTID": "Request",
-    "QUOTATIONID": "Offer",
-    "ORDERID": "Order",
-    "PRICELISTNAME": "Price List",
-    "PRODUCTCODE": "Product Code",
-    "PRICELISTNETPRICE": "Net Price",
-    "PRICELISTDISCOUNT": "Price list discount",
-    "QUOTATIONQTY": "Quantity",
-    "QUOTATIONTAX": "Tax",
-    "QUOTATIONPROFORMAID": "Proforma ID",
-    "QUOTATIONINVOICEID": "Invoice ID",
-    "QUOTATIONDISCOUNT": "Quotation Discount",
-    "ORDER_INFO": "Order",
-    "REQUEST_INFO": "Request",
-    "QUOTATION_INFO": "Quotation",
-    "ORDERCLIENTCODE": "Customer Code",
-    "ORDERNOTES": "Note",
-    "PROFORMANAME": "Proforma name",
-    "AGENTFULLNAME": "Agent",
-    "PROFORMANOTES": "Note",
-    "PRODUCTINPROFORMA": "Products in proforma",
-    "INVOICENAME": "Invoice Name",
-    "INVOICENOTES": "Note",
-    "DOSSIERNOTES": "Note",
-    "QUOTATIONTOTALPRICE": "Total net",
-    "QUOTATIONTOTALTAX": "Total tax",
-    "PROFORMA_INFO": "Proforma",
-    "PROFORMAID": "Id Proforma",
-    "PRICESALELISTNETPRICE": "Prezzo listino",
-    "PROFORMASTATUS": "State",
-    "INVOICESTATUS": "State",
-    "NO_PRODUCTINVOICE_AVAILABLE": "No product",
-    "INVOICEID": "Invoice",
-    "PRODUCTNOTE": "Note",
-    "INVOICE_INFO": "Invoice",
-    "COMPANYSTREET": "Address",
-    "COMPANYCITY": "City",
-    "COMPANYPOSTALCODE": "Postal Code",
-    "COMPANYCOUNTRY": "Country",
-    "COMPANYFAX": "Fax",
-    "COMPANYVAT": "Fiscal Code/VAT",
-    "COMPANYPHONE": "Telephone",
-    "COMPANYEMAIL": "Email",
-    "NOTES": "Note",
-    "QUOTATIONPRODUCTNOTE": "Product Note",
-    "QUOTATIONVAT": "VAT",
-    "AUTOPROFORMA": "SELF-PROFORMA",
-    "AUTOINVOICE": "SELF-INVOICE",
-    "MOVEASSET": "ASSET",
-    "ORDERSTATUS": "State",
-    "QUOTATIONTOTALS": "Total",
-    "QUOTATIONTOTAL": "TOTAL",
-    "PRODUCTTYPE": "Type",
-    "PRODUCTSUBSCRIPTION": "Duration",
-    "PRODUCTATUNIT": "Unit",
-    "INASSET": "Asset",
-    "PRODUCTININVOICE": "Products on the invoice",
-    "SUBSCRIPTIONS": "CUSTOMER SCHEDULE",
-    "SUBSCRIPTIONNAME": "Subscription",
-    "COMPANYNAME": "Company",
-    "NEXTINVOICE": "Next Invoice",
-    "SUBSCRIPTIONDETAIL": "Detail",
-    "PRODUCTDESCRIPTION": "Description",
-    "NETPRICE": "Price",
-    "DISCOUNT": "Discount",
-    "TAX": "Tax",
-    "ATTENDACELASTINVOICE": "Last invoice",
-    "ATTENDACENEXTINVOICE": "Next invoice",
-    "SELECT_PRODUCT": "Select product",
-    "SELECT_PRODUCTTYPE": "Select type",
-    "ALL_PRODUCTS": "All",
-    "ALL_STATUS": "All",
-    "PAYMENT_INFO": "Payment information",
-    "PAYMENTMETHOD": "Payment methods",
-    "PAYMENT": "Payment",
-    "DETAILS": "Details",
-    "INVOICEDETAILS": "INVOICE DETAILS",
-    "QUANTITY": "Quantity",
-    "MANAGESALES": "Subscriptions",
-    "ACCOUNTINGDOC": "Accounting",
-    "INVOICES": "INVOICES",
-    "PROFORMAS": "PROFORMA",
-    "PAYMENTS": "PAYMENTS",
-    "SELECT_PERIOD": "Select range",
-    "NO_PRODUCTPROFORMA_AVAILABLE": "No data available",
-    "NO_PRODUCTPRICELIST_AVAILABLE": "No data available",
-    "PROFORMAAUTHORIZED": "Authorized proforma",
-    "ADD_PRODUCTPRICELIST": "ADD PRODUCT",
-    "DELETE_PRODUCT": "Delete Product",
-    "AUTHORIZED": "AUTHORIZED",
-    "INVOICEDISCOUNT": "Discount",
-    "DEPOSIT": "DEPOSIT",
-    "BALANCE": "BALANCE",
-    "PRODUCTS": "PRODUCTS",
-    "INVOICENOPRODUCTDESCRIPTION": "Description on the invoice",
-    "INVOICENOPRODUCTAMOUNT": "Amount",
-    "INVOICENOTAXAMOUNT": "TAX",
-    "INVOICENOPRODUCTSAVE": "Save",
-    "INVOICENOPRODUCTUPDATE": "Update",
-    "PDFPROFORMA": "PDF",
-    "PDFINVOICE": "PDF",
-    "PAIDANDEXPIRED": "Payment",
-    "CREDITNOTE": "CREDIT NOTE",
-    "CREDITNOTE_INFO": "Credit Note",
-    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
-    "CREDITNOTEDETAILS": "Credit Note Detail",
-    "PDFCREDITNOTE": "PDF",
-    "CREDITINOTENAME": "Name",
-    "TOTALPAYMENTS": "Total payments",
-    "PROFORMADETAILS": "Details",
-    "CREATIONDATE": "Created at",
-    "STARTDATE": "Invoice Date",
-    "ENDDATE": "Expiry Date",
-    "NUMBER": "Number",
-    "PRODUCTPRICE": "Price",
-    "PRODUCTTAX": "Tax percentage",
-    "PRODUCTQTY": "Quantity",
-    "UPDATE_PRODUCT": "Update Product",
-    "QUOTATIONPRODUCTTYPE": "Type",
-    "QUOTATIONUNIT": "Unit",
-    "QUOTATIONSUBSCRIPTION": "Duration",
-    "SELECT_PERIOD_CREATION": "Select Creation Date",
-    "SELECT_PERIOD_START": "Select Date",
-    "SELECT_PERIOD_EXPIRE": "Select Expiry Date",
-    "NEW_COMPANY": "New",
-    "COMPANIES": "Companies",
-    "PAYED_AY": "Payed on",
-    "CLONEPROFORMA": "Clone",
-    "COMPANYDESC": "Description",
-    "COMPANYNATION": "Nation",
-    "GRAPHINVOICES": "Invoice emission chart",
-    "YEARS": "Years",
-    "FROM": "From",
-    "TO": "To",
-    "INVOICEEMITED": "Issued",
-    "INVOICEPAYED": "Payed",
-    "INVOICETOTAL": "Total",
-    "CHOOSE": "Choose",
-    "ADVANCED_SEARCH": "Advanced Search",
-    "NEW_CONDITION": "New Condition",
-    "SELECT_FIELD": "Select field",
-    "SELECT_OPERATOR": "Select operator",
-    "VALUE": "Value",
-    "VALUES": "Values",
-    "APPLY": "Apply",
-    "MEET_ALL_CONDITIONS": "Meet all conditions",
-    "MEET_ANY_CONDITIONS": "Meet at least one condition",
-    "EQUALS": "Equals",
-    "IS_NOT_EQUAL": "Does not equal",
-    "IS_AMONG": "Is among",
-    "IS_NOT_AMONG": "Is not among",
-    "IS_GREATER_THAN": "Is greater than",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "Is greater than or equal to",
-    "IS_LESS_THAN": "Is less than",
-    "IS_LESS_THAN_OR_EQUAL_TO": "Is less than or equal to",
-    "IS_BETWEEN": "Is between",
-    "CONTAINS": "Contains",
-    "STARTS_WITH": "Starts with",
-    "ENDS_WITH": "Ends with",
-    "STARTING_DATE": "Starting date",
-    "ENDING_DATE": "Ending date",
-    "STARTING_VALUE": "Starting value",
-    "ENDING_VALUE": "Ending value",
-    "VALUE_RANGE_CHECK": "Value must be greater than",
-    "AND": "And",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "ELAPSED_ANSWERED": "Elapsed time since call started",
-    "ELAPSED_DISPOSED": "Elapsed time since call ended",
-    "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector Interactions",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "VIDAOOSESSION": "Start Video Call",
-    "SELECT_CONTACT": "Select contact",
-    "SELECT": "Select",
-    "LAST_UPDATED": "Last updated",
-    "MATCHING_FIELD": "Matching field",
-    "MULTIPLE_CONTACTS_FOUND": "Multiple contacts found for number",
-    "WHICH_ONE_TO_USE": "Which one do you want to use?",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Your license is about to expire! Please contact your Administrator",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "AVAILABLE": "Available",
-    "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Select Team",
-    "NOTIFICATIONS": {
-      "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
-      "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
-    }
-  }
-}
diff --git a/public/app/main/apps/fax/i18n/hu.json b/public/app/main/apps/fax/i18n/hu.json
deleted file mode 100644 (file)
index bfa0d7e..0000000
+++ /dev/null
@@ -1,261 +0,0 @@
-{
-  "FAX": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "CANNEDANSWERS": "Canned Answers",
-    "FAXCANNEDANSWERS": "Canned Answers",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_FAXCANNEDANSWER": "New Canned Answer",
-    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "TAGS": "Tags",
-    "REPLY": "Reply",
-    "SEND": "Send",
-    "TO": "To",
-    "FROM": "From",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-    "EDIT_TRUNK": "Edit Trunk",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "EDIT_ACCOUNT": "Edit Fax Account",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
-    "ACCOUNTS": "Accounts",
-    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-    "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "DEFAULT_PAUSE": "Default pause",
-    "AGENTADD_QUEUE": "Add Agent to Fax queue",
-    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
-    "UNPAUSE": "End Pause",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "PRIORITY": "Priority",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "EDIT_FAXQUEUE": "Edit Fax Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOP": "Edit GotoP",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "EDIT_QUEUE": "Edit Fax Queue",
-    "EDIT_CLOSE": "Edit Close",
-    "QUEUE": "Queue",
-    "GOTOIF": "GotoIf",
-    "GOTOP": "GotoP",
-    "NOOP": "Noop",
-    "AGENT": "Agent",
-    "NOTES": "Notes",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "REALTIME": "Realtime",
-    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-    "NAME": "Name",
-    "FAXQUEUES": "Fax Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause status when in mandatory disposition",
-    "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
-      "MODEM_REQUIRED": "Mandatory Field",
-      "GATEWAY_REQUIRED": "Mandatory Field",
-      "FAXDETECT_REQUIRED": "Mandatory Field",
-      "T38TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "HEADERINFO_REQUIRED": "Mandatory Field",
-      "TRUNK_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "You should specify a pause status when in mandatory disposition"
-    },
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_FAXQUEUE": "Add Fax Queue",
-    "DELETE_FAXQUEUE": "Delete Fax Queue",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_FAXACCOUNT": "Add Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Delete Fax Account",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "TRUNK": "Trunk",
-    "LOCALSTATIONID": "Local Station Identifier",
-    "HELP": {
-      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
-      "HEADERINFO": "Outbound Fax Header information",
-      "MODEM": "Modem Type (v17/v27/v29)",
-      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-      "ECM": "Error Connection Mode (ECM)",
-      "MINRATE": "Minimum transfer rate set before transmission",
-      "MAXRATE": "Maximum transfer rate set before transmission",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status for mandatory disposition",
-      "NAME": "Only numbers, letters and specific characters (._) are supported"
-    },
-    "ADVANCED": "Advanced",
-    "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
-    "MODEM": "Modem",
-    "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
-    "T38TIMEOUT": "T.38 Timeout",
-    "SIP": "Technology",
-    "HEADERINFO": "Header Info",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Dispositions",
-    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-    "NEW_FAXDISPOSITION": "New Fax Disposition",
-    "ADD_FAXDISPOSITION": "Add Fax Disposition",
-    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-    "NEW_FAXQUEUE": "New Fax Queue",
-    "NEW_FAXACCOUNT": "New Fax Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DELETE": "Delete",
-    "KEY": "Key",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "ALL": "All",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "SELECT_ACCOUNT": "Select Account",
-    "INTERACTIONS": "Interactions",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "UNKNOWN": "Unknown",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
diff --git a/public/app/main/apps/help/i18n/hu.json b/public/app/main/apps/help/i18n/hu.json
deleted file mode 100644 (file)
index 0acdb95..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "HELP": {
-    "HELP": "Help",
-    "ABOUT": "About",
-    "USEFUL_LINKS": "Useful links",
-    "CONTACT_US": "Contact us"
-  }
-}
diff --git a/public/app/main/apps/integrations/i18n/hu.json b/public/app/main/apps/integrations/i18n/hu.json
deleted file mode 100644 (file)
index f9429ca..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-{
-  "INTEGRATIONS": {
-    "ZONE": "Zone",
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "LEADS": "Lead",
-    "CONTACTS": "Contact",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
-    "URI": "URL",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
-    "AUTHTYPE": "Authentication Type",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "EMAIL": "Email",
-    "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-    "DESCRIPTION": "Description",
-    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "URI_REQUIRED": "Mandatory field",
-      "URI_MUST_VALID_URL": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TOKEN_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-      "CLIENTID_REQUIRED": "Mandatory field",
-      "CLIENTSECRET_REQUIRED": "Mandatory field",
-      "SECURITYTOKEN_REQUIRED": "Mandatory field",
-      "APIKEY_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "VARIABLENAME_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "CONSUMERKEY_REQUIRED": "Mandatory field",
-      "CONSUMERSECRET_REQUIRED": "Mandatory field",
-      "TOKENSECRET_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "AUTHTOKEN_REQUIRED": "Mandatory field",
-      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-      "ACCESS_KEY_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "TENANTID_REQUIRED": "Mandatory field",
-      "CODE_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_REQUIRED": "Mandatory field"
-    },
-    "HELP": {
-      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "TICKETTYPE": "Ticket Type",
-      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
-      "CLIENTID": "The specific CLient Id of your application",
-      "CLIENTSECRET": "The specific CLientSecret of your application",
-      "CODE": "The specific code generated through Developer Console",
-      "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
-      "LEADID": "Field name used to link Case and Lead objects",
-      "ADDITIONALSEARCHACCOUNT": "Additional field name used to search customer phone number in Accounts",
-      "ADDITIONALSEARCHCONTACT": "Additional field name used to search customer phone number in Contacts",
-      "ADDITIONALSEARCHLEAD": "Additional field name used to search customer phone number in Leads"
-    },
-    "CODE": "Developer Console Code",
-    "REFRESHTOKEN": "Refresh Token (generated)",
-    "ACCOUNT": "Account",
-    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-    "SALESFORCEACCOUNTS": "Salesforce Accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-    "CLIENTID": "Client ID",
-    "CLIENTSECRET": "Client Secret",
-    "SECURITYTOKEN": "Security Token",
-    "SEARCH_FOR_ANYONE": "Search",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-    "CONFIGURATIONS": "Configurations",
-    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-    "NEW_CONFIGURATION": "New Configuration",
-    "ADD_CONFIGURATION": "Add Configuration",
-    "EDIT_CONFIGURATION": "Edit Configuration",
-    "DELETE_CONFIGURATION": "Delete Configuration",
-    "SUBJECTS": "Subjects",
-    "DESCRIPTIONS": "Descriptions",
-    "FIELDS": "Fields",
-    "TAGS": "Tags",
-    "TYPE": "Type",
-    "CONTENT": "Content",
-    "EDIT_SUBJECT": "Edit Subject",
-    "DELETE_SUBJECT": "Delete Subject",
-    "NEW_SUBJECT": "New Subject",
-    "ADD_SUBJECT": "Add Subject",
-    "EDIT_DESCRIPTION": "Edit Description",
-    "DELETE_DESCRIPTION": "Delete Description",
-    "NEW_DESCRIPTION": "New Description",
-    "ADD_DESCRIPTION": "Add Description",
-    "EDIT_FIELD": "Edit Field",
-    "DELETE_FIELD": "Delete Field",
-    "NEW_FIELD": "New Field",
-    "ADD_FIELD": "Add Field",
-    "ADD": "Add",
-    "VOICE": "Voice",
-    "MAIL": "Email",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "INBOUND_IN_QUEUE": "Inbound in Queue",
-    "OUTBOUND_CALL": "Outbound Call",
-    "VALUE": "Value",
-    "FIELD": "Field",
-    "KEY": "Key",
-    "CHANNEL": "Channel",
-    "DELETE": "Delete",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
-    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
-    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
-    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
-    "INTEGRATION_TAB": "Integration Tab",
-    "NEW_TAB": "New Tab",
-    "DESKACCOUNTS": "Desk Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
-    "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Delete Desk Account",
-    "CONSUMERKEY": "Consumer Key",
-    "CONSUMERSECRET": "Consumer Secret",
-    "TOKENSECRET": "Token Secret",
-    "ADD_DESKACCOUNT": "Add Desk Account",
-    "NEW_DESKACCOUNT": "New Desk Account",
-    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
-    "NEW_DESKCONFIGURATION": "New Desk Configuration",
-    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-    "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-    "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-    "ADD_ZOHOACCOUNT": "Add Zoho Account",
-    "NEW_ZOHOACCOUNT": "New Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-    "AUTHTOKEN": "Authorization Token",
-    "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Accounts",
-    "VTIGER_USER_NAME": "vTiger User Name",
-    "MODULE_NAME": "vTiger Module Name",
-    "ACCESS_KEY": "vTiger Access Key",
-    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
-    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-    "TEST_VTIGERACCOUNT": "Test vTiger Account",
-    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-    "NEW_VTIGERACCOUNT": "New vTiger Account",
-    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-    "FRESHSALESACCOUNTS": "Freshsales Accounts",
-    "EDIT_FRESHSALESACCOUNT": "Edit Freshsales Account",
-    "DELETE_FRESHSALESACCOUNT": "Delete Freshsales Account",
-    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
-    "ADD_FRESHSALESACCOUNT": "Add Freshsales Account",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
-    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
-    "ADD_FRESHSALESCONFIGURATION": "Add Freshsales Configuration",
-    "EDIT_FRESHSALESCONFIGURATION": "Edit Freshsales Configuration",
-    "DELETE_FRESHSALESCONFIGURATION": "Delete Freshsales Configuration",
-    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
-    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
-    "ADD_SERVICENOWACCOUNT": "Add new ServiceNow Account",
-    "EDIT_SERVICENOWACCOUNT": "Edit ServiceNow Account",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
-    "DELETE_SERVICENOWACCOUNT": "Delete ServiceNow Account",
-    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
-    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
-    "DELETE_SERVICENOWCONFIGURATION": "Delete ServiceNow Configuration",
-    "ADD_SERVICENOWCONFIGURATION": "Add ServiceNow Configuration",
-    "DYNAMICS365ACCOUNTS": "Dynamics365 Accounts",
-    "TENANTID": "Tenant Id",
-    "ADD_DYNAMICS365ACCOUNT": "Add new Dynamics365 Account",
-    "EDIT_DYNAMICS365ACCOUNT": "Edit Dynamics365 Account",
-    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
-    "DELETE_DYNAMICS365ACCOUNT": "Delete Dynamics365 Account",
-    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
-    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
-    "DELETE_DYNAMICS365CONFIGURATION": "Delete Dynamics365 Configuration",
-    "ADD_DYNAMICS365CONFIGURATION": "Add Dynamics365 Configuration",
-    "TICKETTYPE": "Ticket Type",
-    "CASE": "Case",
-    "LEADID": "Lead Id",
-    "ADDITIONALSEARCHACCOUNT": "Additional Search Account",
-    "ADDITIONALSEARCHCONTACT": "Additional Search Contact",
-    "ADDITIONALSEARCHLEAD": "Additional Search Lead",
-    "PHONECALL": "Phonecall",
-    "TASK": "Task",
-    "MODULECREATE": "Module Create"
-  }
-}
diff --git a/public/app/main/apps/jscripty/i18n/hu.json b/public/app/main/apps/jscripty/i18n/hu.json
deleted file mode 100644 (file)
index c5e12d7..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-{
-  "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
-    },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
-    "JSCRIPTY": "Jscripty",
-    "ID": "Id",
-    "PROJECT": "Project",
-    "CREATED_AT": "Created At",
-    "NEW_PROJECT": "New Project",
-    "EDIT": "Edit",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "OPEN_CONTACT": "Open Contact",
-    "SENDUNPAUSEONSUBMIT": "Unpause agent on Submit",
-    "HELP": {
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-      "SENDUNPAUSEONSUBMIT": "At the end of the survey, automatically stop the agent's pause"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "JSCRIPTYSESSIONS": "Project Sessions",
-    "SESSIONS": "Sessions",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MEMBERNAME": "Member Name",
-    "CALLERIDNUM": "Caller Number",
-    "NO_SESSION_AVAILABLE": "No Sessions available",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
-    "ANSWERS": "Answers",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "TOTAL": "Total",
-    "ANSWER": "Answer",
-    "EXPORT_TO_CSV": "Export to CSV",
-    "NO_ANSWERS_AVAILABLE": "No answers available",
-    "DELETE_SESSION": "Delete Session",
-    "RESET_SESSION": "Reset Session",
-    "YES": "Yes",
-    "NO": "No",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-    "SUBMIT": "Submit",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-    "COMPLETE": "Complete",
-    "SESSIONS_PROJECT": "Go to Sessions"
-  },
-  "mwForm": {
-    "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
-    },
-    "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
-    },
-    "page": {
-      "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
-      },
-      "elements": {
-        "empty": "Empty page"
-      },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
-    },
-    "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
-    },
-    "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
-    },
-    "question": {
-      "types": {
-        "text": {
-          "name": "Short text"
-        },
-        "textarea": {
-          "name": "Long text"
-        },
-        "radio": {
-          "name": "Radio"
-        },
-        "select": {
-          "name": "Select"
-        },
-        "checkbox": {
-          "name": "Checkboxes"
-        },
-        "grid": {
-          "name": "Grid"
-        },
-        "priority": {
-          "name": "Priority"
-        },
-        "division": {
-          "name": "Division"
-        },
-        "number": {
-          "name": "Number"
-        },
-        "date": {
-          "name": "Date"
-        },
-        "datetime": {
-          "name": "Datetime"
-        },
-        "time": {
-          "name": "Time"
-        },
-        "email": {
-          "name": "Email"
-        },
-        "range": {
-          "name": "Range"
-        },
-        "url": {
-          "name": "URL"
-        }
-      },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
-      "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
-      },
-      "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
-      },
-      "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
-      },
-      "grid": {
-        "cellInputType": "Cell input type",
-        "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
-        },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
-      },
-      "range": {
-        "from": "Range from",
-        "to": "to"
-      },
-      "number": {
-        "min": "Min",
-        "max": "Max"
-      },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
-      "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
-      }
-    },
-    "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
-    },
-    "paragraph": {
-      "placeholder": "Enter paragraph text"
-    },
-    "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
-    }
-  }
-}
diff --git a/public/app/main/apps/mail/i18n/hu.json b/public/app/main/apps/mail/i18n/hu.json
deleted file mode 100644 (file)
index 7a1ec06..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-{
-  "MAIL": {
-    "ADVANCED": "Advanced",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "ACCEPTED": "Accepted",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To Email Queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "ACCOUNTS": "Accounts",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
-    "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "REPLY_TYPE": "Reply Type",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
-    "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
-    "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "REPLY_TYPE_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Add Email Queue",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Add Email Account",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Accounts",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
-    "IMAP": "IMAP",
-    "HOST": "Host",
-    "USERNAME": "Username",
-    "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
-    "SSL": "SSL",
-    "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
-    "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Add Email Disposition",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
-    "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "ACTIVE": "Active",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
-    "SMTP_HOST": "SMTP Host",
-    "SMTP_PORT": "SMTP Port",
-    "IMAP_HOST": "IMAP Host",
-    "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "KEY": "Key",
-    "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
-  }
-}
diff --git a/public/app/main/apps/marketplace/i18n/hu.json b/public/app/main/apps/marketplace/i18n/hu.json
deleted file mode 100644 (file)
index 312c4ab..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-  "MARKETPLACE": {
-    "MARKETPLACE": "App Zone",
-    "PLUGINS": "Plugins",
-    "BACK": "Back",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "NAME": "Name",
-    "DESCRIPTION": "Description",
-    "ACTIVE": "Active",
-    "TYPE": "Type",
-    "ICON": "Icon",
-    "ADMINURL": "Admin url",
-    "AGENTURL": "Agent url",
-    "SCRIPTNAME": "Script name",
-    "SCRIPTPATH": "Script path",
-    "SIDEBAR": "Sidebar",
-    "VERSION": "Version",
-    "NO_AVAILABLE_INFO": "No available info",
-    "MORE": "More",
-    "INSTALL_PLUGIN": "Install plugin",
-    "EDIT_PLUGIN": "Edit plugin",
-    "STOP_PLUGIN": "Stop plugin",
-    "RESTART_PLUGIN": "Restart plugin",
-    "DOWNLOAD_PLUGIN": "Download plugin",
-    "UNINSTALL_PLUGIN": "Uninstall plugin",
-    "DELETE_PLUGIN": "Remove plugin",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DELETE": "Delete",
-    "SAVE": "Save",
-    "INSTALLING": "Installing",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
-    "UPLOAD_PLUGIN": "Upload plugin",
-    "UPLOADING": "Uploading",
-    "CREATED_AT": "Created at",
-    "GENERAL": "General",
-    "SETTINGS": "Settings",
-    "EDITOR": "Editor",
-    "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
-    },
-    "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of"
-  }
-}
diff --git a/public/app/main/apps/motiondialer/i18n/hu.json b/public/app/main/apps/motiondialer/i18n/hu.json
deleted file mode 100644 (file)
index bc7a95d..0000000
+++ /dev/null
@@ -1,693 +0,0 @@
-{
-  "MOTIONDIALER": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "ONE_CALL_EVERY": "One call every",
-    "CURRENT_INTERVAL": "Current Interval",
-    "PREVIOUS_INTERVAL": "Previous Interval",
-    "PREDICTIVE_IS_RUNNING": "Predictive is running",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-    "AVG_TALK_TIME": "Avg Talk Time",
-    "ANSWERED_CALLS": "Answered Calls",
-    "TOTAL_CALLS": "Total Calls",
-    "THRESHOLDS": "Thresholds",
-    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-    "RECALLINQUEUE": "Recall in queue",
-    "SELECT_DATE": "Select Date",
-    "SELECT_TYPE": "Select Type",
-    "SELECT_CAMPAIGN": "Select Campaign",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "ANSWERING_MACHINE": "Answering machine",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
-    "ASC": "ASC",
-    "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
-    "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
-    "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
-    "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
-    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
-    "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
-    "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
-    "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
-    "NOSUCHNUMBER": "No such number",
-    "NOSUCHNUMBERMAXRETRY": "Max Retries",
-    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
-    "DROP": "Drop",
-    "DROPMAXRETRY": "Max Retries",
-    "DROPRETRYTIME": "Retry Time [min]",
-    "ABANDONEDMAXRETRY": "Max Retries",
-    "ABANDONEDRETRYTIME": "Retry Time [min]",
-    "MACHINE": "Machine",
-    "MACHINEMAXRETRY": "Max Retries",
-    "MACHINERETRYTIME": "Retry Time [min]",
-    "AGENTREJECT": "Agent Reject",
-    "AGENTREJECTMAXRETRY": "Max Retries",
-    "AGENTREJECTRETRYTIME": "Retry Time [min]",
-    "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
-    },
-    "ERRORS": {
-      "AGENT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
-      "DROPMAXRETRY_REQUIRED": "Mandatory field",
-      "DROPRETRYTIME_REQUIRED": "Mandatory field",
-      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
-      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
-      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
-      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field"
-    },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "HELP": {
-      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
-      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
-      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
-      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
-      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
-      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
-      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
-      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
-      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
-      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
-    },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
-    "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
-    "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
-    "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
-    "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
-  }
-}
diff --git a/public/app/main/apps/openchannel/i18n/hu.json b/public/app/main/apps/openchannel/i18n/hu.json
deleted file mode 100644 (file)
index 8093eec..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-{
-  "OPENCHANNEL": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "DIALOGFLOW": "Dialogflow",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow configuration",
-    "LANGUAGE": "Language",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "ADVANCED": "Advanced",
-    "PROXY": "Proxy",
-    "TOKEN": "Token",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "DELETE": "Delete",
-    "CANNEDANSWERS": "Canned Answers",
-    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
-    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "REALTIME": "Realtime",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NAME": "Name",
-    "OPENCHANNELQUEUES": "Open Channel Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
-      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "The field text is required",
-      "NAME_REQUIRED": "Mandatory field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "REPLYURI_REQUIRED": "Mandatory field",
-      "REPLYURI_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "CONDITION_REQUIRED": "Mandatory field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "STRATEGY": "Strategy",
-    "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "PRIORITY": "Priority",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
-    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
-    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
-    "PENALTY": "Penalty",
-    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
-    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
-    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
-    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
-    "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "OPENCHANNEL": "Open Channel",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
-    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
-    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
-    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
-    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
-    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
-    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "REPLYURI": "Reply URL",
-    "RECEIVEURI": "Receive URL",
-    "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
-    "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "INFO": "Info",
-    "KEY": "Key",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To Open Channel Queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
-    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
-    "SEND": "Send",
-    "TO": "To",
-    "MAPKEY": "Map Key",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
-  }
-}
diff --git a/public/app/main/apps/plugins/i18n/hu.json b/public/app/main/apps/plugins/i18n/hu.json
deleted file mode 100644 (file)
index be8be0f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "PLUGINS": {
-    "PLUGINS": "Plugins",
-    "ERRORS": {},
-    "HELP": {}
-  }
-}
diff --git a/public/app/main/apps/settings/i18n/hu.json b/public/app/main/apps/settings/i18n/hu.json
deleted file mode 100644 (file)
index aa1bc8a..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-{
-  "SETTINGS": {
-    "RTLSUPPORT": "RTL Support",
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
-    "FAVICON": "Favicon",
-    "DEFAULT_FAVICON": "Default Favicon",
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
-    "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
-    "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
-    "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
-    "WEBRTC": "WebRTC",
-    "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
-    "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
-    "FAX": "Fax",
-    "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
-    "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "VIDEO": "Video",
-    "SCREENRECORDING": "Screen Recording",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
-    "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
-    "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
-    "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
-    "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "USERNAME": "Username",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
-    "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
-    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
-    "APPZONE": "App Zone",
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
-    "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
-    "STUNADDR": "STUN Address",
-    "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
-    "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
-    "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
-    "SECURITY": "Security",
-    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-    "BLOCKDURATION": "Minutes to wait before automatic unlock",
-    "AI": "A.I. Tools",
-    "AITOOLS": "A.I. Tools",
-    "SERVICE": "Service",
-    "NEW_CLOUDPROVIDER": "New Account",
-    "ADD_CLOUDPROVIDER": "Add Account",
-    "DELETE": "Delete",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "ACCESSKEY": "Access Key ID",
-    "EDIT_CLOUDPROVIDER": "Edit Account",
-    "DELETE_CLOUDPROVIDER": "Delete Account",
-    "LANGUAGE": "Language",
-    "BUCKET": "Bucket",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIBEREGION": "Transcribe Region",
-    "TRANSCRIBEACCOUNT": "Transcribe Account",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
-    "SSO": "SSO",
-    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
-    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
-    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
-    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
-    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
-    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
-    "HELP": {
-      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
-      "ADDRESS": "External (public) ip address",
-      "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
-      "USERNAME": "Username",
-      "PASSWORD": "Password",
-      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
-      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
-      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
-      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)"
-    },
-    "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-      "BLOCKDURATION_REQUIRED": "Mandatory field",
-      "SERVICE_REQUIRED": "Mandatory field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
-      "ACCESSKEY_REQUIRED": "Mandatory field",
-      "LANGUAGE_REQUIRED": "Mandatory field",
-      "BUCKET_REQUIRED": "Mandatory field",
-      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
-      "SENTIMENTREGION_REQUIRED": "Mandatory field",
-      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
-    }
-  }
-}
diff --git a/public/app/main/apps/sms/i18n/hu.json b/public/app/main/apps/sms/i18n/hu.json
deleted file mode 100644 (file)
index 797230c..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-{
-  "SMS": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "BASEURL": "Base URL",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
-      "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "APIKEY_REQUIRED": "Mandatory Field",
-      "APPLICATIONID_REQUIRED": "Mandatory Field",
-      "ACCOUNTID_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
-    },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
-    "SID": "SID",
-    "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "SMS": "SMS",
-    "ID": "Id",
-    "APIKEY": "ApiKey",
-    "APPLICATIONID": "Application ID",
-    "ACCOUNTID": "Account ID",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "LANGUAGE": "Language",
-    "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
-    },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add Agent To SMS Queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
-  }
-}
diff --git a/public/app/main/apps/staff/i18n/hu.json b/public/app/main/apps/staff/i18n/hu.json
deleted file mode 100644 (file)
index 15d1dea..0000000
+++ /dev/null
@@ -1,375 +0,0 @@
-{
-  "STAFF": {
-    "MANAGE_API_KEY": "API Key Manager",
-    "GENERATE": "Generate",
-    "REGENERATE": "Regenerate",
-    "REMOVE": "Remove",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "APIKEY": "API Key",
-    "VIDEOSUPPORT": "Video support",
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEOECORDING": "Enable Video Recording",
-    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
-    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
-    "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
-    "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
-    "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
-    "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
-    "A_TO_Z": "(A to Z)",
-    "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "Delete",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
-    "ERRORS": {
-      "CONFIRM_REQUIRED": "Mandatory field",
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
-      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
-      "USERPROFILE_REQUIRED": "Mandatory field",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
-    },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
-    "DISABLED": "Deactivated",
-    "BLOCKED": "Locked",
-    "HELP": {
-      "DISABLED": "select to deactivate / unselect to reactivate",
-      "BLOCKED": "Lock / Unlock access",
-      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 120",
-      "SIPPORT": "Default: 5160",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
-      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
-      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
-      "WSS_PORT": "Default: 8089"
-    },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
-    "HOST": "Host",
-    "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
-    "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
-    "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
-    "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
-    "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
-    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READ_PERMISSION": "Read",
-    "EDIT_PERMISSION": "Edit",
-    "DELETE_PERMISSION": "Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
-    "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
-    "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
-    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
-    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
-    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
-    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "USERPROFILES": "User Profiles",
-    "USERPROFILE": "User Profile",
-    "NEW_USERPROFILE": "New User Profile",
-    "ADD_USERPROFILE": "Add User Profile",
-    "EDIT_USERPROFILE": "Edit User Profile",
-    "CLONE_USERPROFILE": "Clone User Profile",
-    "DELETE_USERPROFILE": "Delete User Profile",
-    "CRUDPERMISSIONS": "Permission Type",
-    "SECTIONS": "Sections",
-    "MODULES": "Modules",
-    "SUMMARY": "Summary",
-    "REPORT_TYPE": "Report Type",
-    "PERMISSIONS_MANAGE": "Manage",
-    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
-    "PERMISSIONS_SELECT_SECTION": "Select a section",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
-    "PERMISSIONS_ALL_RESOURCES": "All resources",
-    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
-    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
-    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
-    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
-    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
-    "NOTIFICATIONS": {
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
-      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
-    },
-    "CONFIRM": "Confirm",
-    "CANCEL": "Cancel",
-    "CLOSE": "Close",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
-    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
-    "WSS_PORT": "WSS Port",
-    "DOWNLOADS": "Downloads",
-    "DOWNLOAD_PERMISSIONS": "Download Permissions",
-    "VOICE_RECORDINGS": "Voice Recordings",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
-    "ATTACHMENTS": "Attachments",
-    "SCREEN_RECORDINGS": "Screen Recordings",
-    "JSCRIPTY_SESSIONS": "Jscripty Sessions",
-    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign"
-  }
-}
diff --git a/public/app/main/apps/tools/i18n/hu.json b/public/app/main/apps/tools/i18n/hu.json
deleted file mode 100644 (file)
index 6308cde..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-{
-  "TOOLS": {
-    "VIDEOSUPPORT": "Video support",
-    "PREVIOUSCONTACT": "Previous",
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "TITLEFONTSIZE": "Font Title Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
-    "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
-    "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
-    "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
-    "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SCRIPT": "Script",
-    "SCRIPT_INFO": "Info",
-    "SCRIPT_TYPE": "Type",
-    "ERRORS": {
-      "INFO_REQUIRED": "Mandatory field",
-      "SCRIPT_REQUIRED": "Mandatory field",
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "IGNOREDIALERCONTACTID_REQUIRED": "Ignore dialer contact Id field is required",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
-    },
-    "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
-    "HELP": {
-      "SCRIPT_INFO": "Insert a description for the script",
-      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
-      "INFO": "Insert title",
-      "SCRIPT": "Insert script",
-      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
-    },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
-    "DTMFMODE": "DTMF Mode",
-    "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
-    "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
-    "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
-    "AUG": "August",
-    "SEP": "September",
-    "OCT": "October",
-    "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
-    "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
-    "CSV": "CSV",
-    "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
-    "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
-    "URL": "URL",
-    "APPLICATION": "Application",
-    "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
-    "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
-    "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
-    "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
-    "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
-    "ON_THE": "On the",
-    "OF_EVERY": "Of every",
-    "MONTH_AT": "Month at",
-    "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
-    "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
-    "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "MOTION_TAB": "New Agent Dashboard Tab",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
-    "AGENT": "Agent",
-    "HEADERS": "Headers",
-    "WHATSAPP": "WhatsApp Connector",
-    "LEVEL": "Level",
-    "NOTIFICATIONS": {
-      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
-      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
-      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
-      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
-      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
-      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
-      "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
-      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
-      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
-      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
-      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
-      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
-      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
-      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
-      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
-      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
-      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
-      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
-      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
-      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
-      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
-      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
-      "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
-      "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
-      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
-      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
-      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
-      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
-    },
-    "ALL_DISPOSITIONS": "All dispositions",
-    "SELECT_LEVEL": "Select a level",
-    "ALL": "All",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "SEARCH_FIELDS": "Search fields",
-    "AUTOCREATE_FIELD": "Autocreate field",
-    "STANDARD": "Standard",
-    "GLOBALS": "Globals",
-    "MOTION_BAR": "Motion Bar"
-  }
-}
diff --git a/public/app/main/apps/video/i18n/hu.json b/public/app/main/apps/video/i18n/hu.json
deleted file mode 100644 (file)
index 81b9c5c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "VIDEO": {
-    "VIDEO": "Video",
-    "SCREENRECORDINGS": "Screen Recordings",
-    "SEARCH_FOR_ANYONE": "Search",
-    "INTERACTIONID": "Interaction ID",
-    "CHANNEL": "Channel",
-    "AGENT": "Agent",
-    "RATING": "Rating",
-    "NO_RATING": "No Rating",
-    "RECORDSTARTTIME": "Record Start Time",
-    "RECORDENDTIME": "Record End Time",
-    "DURATION": "Duration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "EDIT_SCREENRECORDING": "Rate Screen Recording",
-    "PLAY_SCREENRECORDING": "Play Screen Recording",
-    "DOWNLOAD_SCREENRECORDING": "Download Screen Recording",
-    "DELETE_SCREENRECORDING": "Delete Screen Recording",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "SAVE": "Save",
-    "DELETE": "Delete",
-    "UPDATEDAT": "Last Update",
-    "PROPERTIES": "Properties",
-    "FORMAT": "Format",
-    "STARTEDAT": "Record Start Time",
-    "CLOSEDAT": "Record End Time",
-    "CREATEDAT": "Created at",
-    "ID": "Id",
-    "AGENTNAME": "Agent",
-    "CANT_PLAY_THIS_FILE": "Can't play this type of file",
-    "LEGEND": {},
-    "ERRORS": {},
-    "HELP": {}
-  }
-}
diff --git a/public/app/main/apps/voice/i18n/hu.json b/public/app/main/apps/voice/i18n/hu.json
deleted file mode 100644 (file)
index 28d2655..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-{
-  "VOICE": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "FAILUREREASON": "Failure reason",
-    "TEXT": "Text",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
-    "INBOUND": "Inbound",
-    "OUTBOUND": "Outbound",
-    "DIALER": "Dialer",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
-    "ALIAS": "Alias",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
-    "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
-    "AGI": "Agi",
-    "DIAL": "Dial",
-    "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
-    "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
-    "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIPT": "Transcript",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "TRANSCRIBESTATUS_COMPLETED": "Completed",
-    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
-    "TRANSCRIBESTATUS_FAILED": "Failed",
-    "TRANSCRIBESTATUS_NEW": "New",
-    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
-    "SENTIMENT_POSITIVE": "Positive",
-    "SENTIMENT_NEGATIVE": "Negative",
-    "SENTIMENT_NEUTRAL": "Neutral",
-    "SENTIMENT_MIXED": "Mixed",
-    "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "SENTIMENT": "Sentiment",
-    "SERVICELEVEL": "Service level",
-    "MAXCAPACITY": "Max capacity",
-    "WORKING": "Working",
-    "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
-    },
-    "ERRORS": {
-      "PROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
-      "PENALTY_REQUIRED": "You must specify a value for penalty"
-    },
-    "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
-      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
-    },
-    "NOTIFICATIONS": {
-      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
-      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
-      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
-      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
-      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
-      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
-      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
-      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
-      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
-      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
-      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
-      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
-      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
-      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
-      "USERS_GET_ERROR": "Unable to retrieve any user",
-      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
-      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
-      "TAGS_GET_ERROR": "Unable to retrieve any tag",
-      "INTERVALS_GET_ERROR": "Unable to retrieve any interval"
-    }
-  }
-}
diff --git a/public/app/main/apps/whatsapp/i18n/hu.json b/public/app/main/apps/whatsapp/i18n/hu.json
deleted file mode 100644 (file)
index 2d8b1f5..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-{
-  "WHATSAPP": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
-    "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
-    "ACCESSKEYID": "Access Key ID",
-    "ACCOUNTSID": "Account SID",
-    "ACTIONS": "Actions",
-    "ADD_NOTE": "Add note",
-    "ADD_WHATSAPPACCOUNT": "Add",
-    "ADD_WHATSAPPCANNEDANSWER": "Add Canned Answer",
-    "ADD_WHATSAPPDISPOSITION": "Add WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Add WhatsApp queue",
-    "ADVANCED": "Advanced",
-    "AGENT": "Agent",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "AGENTADD_QUEUE": "Add Agent To WhatsApp Queue",
-    "AGENTADD_WHATSAPPACCOUNT": "Add Agent To WhatsApp Account",
-    "AGENTADD_WHATSAPPQUEUE": "Add Agent To WhatsApp Queue",
-    "AGENTS": "Agents",
-    "AGENTSADD_QUEUE": "Add agents to WhatsApp queue",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "ALL": "All",
-    "ALL_AGENTS": "All Agents",
-    "ALL_TEAMS": "All Teams",
-    "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Auth Token",
-    "AUTOREPLY": "Auto Reply",
-    "BACK": "Back",
-    "BASEURL": "Base URL",
-    "BOTNAME": "Bot Name",
-    "BUSY": "Busy",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "CANNEDANSWERS": "Canned Answers",
-    "CAPACITY": "Capacity",
-    "CLOSE": "Close",
-    "CLOSED": "Closed",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "COMMAND": "Command",
-    "CONDITION": "Condition",
-    "CONTACT": "Contact",
-    "CREATED_AT": "Created at",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "DELETE": "Delete",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "DELETE_SELECTED": "Delete selected",
-    "DELETE_WHATSAPPACCOUNT": "Delete WhatsApp Account",
-    "DELETE_WHATSAPPCANNEDANSWER": "Deleted",
-    "DELETE_WHATSAPPDISPOSITION": "Delete WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Delete WhatsApp Queue",
-    "DESCRIPTION": "Description",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "DOWNLOAD_INTERACTION": "Download",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download With Attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download Without Attachments",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "EDIT_CLOSE": "Edit Close",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SYSTEM": "Edit System",
-    "EDIT_TAG": "Edit Tag",
-    "EDIT_WHATSAPPACCOUNT": "Edit WhatsApp Account",
-    "EDIT_WHATSAPPCANNEDANSWER": "Edit",
-    "EDIT_WHATSAPPDISPOSITION": "Edit WhatsApp Disposition",
-    "EDIT_WHATSAPPQUEUE": "Edit WhatsApp Queue",
-    "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "DESCRIPTION_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LANGUAGE_REQUIRED": "Mandtory Field",
-      "LEXREGION_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMES_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "VARIABLE_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater or equal than",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less or equal than",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "WELCOMEMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WELCOMEMESSAGE_REQUIRED": "Mandatory Field"
-    },
-    "FALSEPRIORITY": "False Priority",
-    "GENERAL": "General",
-    "GO_TO_WHATSAPPACCOUNTS": "Go To Account",
-    "GOTOIF": "Gotoif",
-    "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Go To Realtime WhatsApp Queue",
-    "HELP": {
-      "LIST": "Contact Manager list used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your WhatsApp Connector provider (POST method must be used): click the clipboard button to copy it",
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions"
-    },
-    "ID": "Id",
-    "IDLE": "Idle",
-    "INSERT_MESSAGE_HERE": "Insert message here",
-    "INTERACTIONS": "Interactions",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Go to Interactions",
-    "KEY": "Key",
-    "LANGUAGE": "Language",
-    "LASTMESSAGE": "Last Message",
-    "LEXREGION": "Region",
-    "LIST": "List",
-    "LOGGED_IN": "Logged In",
-    "LOGIN_TIME": "Login Time",
-    "LOGOUT": "Logout",
-    "MANDATORYDISPOSITION": "Mandatory Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-    "MORE": "More",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "MULTI_SELECT_TOGGLE": "Multi select toggle",
-    "NAME": "Name",
-    "NEW_WHATSAPPACCOUNT": "New WhatsApp Account",
-    "NEW_WHATSAPPCANNEDANSWER": "New WhatsApp Canned Answer",
-    "NEW_WHATSAPPDISPOSITION": "New WhatsApp Disposition",
-    "NEW_WHATSAPPQUEUE": "New WhatsApp Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "NO_INTERACTION_AVAILABLE": "No Interactions Available",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "No WhatsApp Accounts available",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "No WhatsApp Canned Answers Available",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "No WhatsApp Dispositions Available",
-    "NOOP": "Noop",
-    "NOTE": "Note",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "OF": "of",
-    "OPENED": "Open",
-    "PAGE": "Page",
-    "PARTIALPAUSE": "Partial Pause",
-    "PAUSE": "Pause",
-    "PAUSE_TIME": "Pause Time",
-    "PAUSED": "Paused",
-    "PHONE": "Phone",
-    "PRIORITY": "Priority",
-    "PROXY": "Proxy",
-    "QUEUE": "Queue",
-    "QUEUES": "Queues",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "READY": "Ready",
-    "REALTIME": "Realtime",
-    "RECEIVEURL": "Receive URL",
-    "DELIVERYREPORTURL": "Delivery report URL",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "REMOTE": "Remote",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SECRETACCESSKEY": "Access key secret",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "SELECTED": "Selected",
-    "SELECTED_AGENTS": "Selected Agents",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SEND": "Send",
-    "SETTINGS": "Settings",
-    "SPYINTERACTION": "Spy Interaction",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STARTEDAT": "Started at",
-    "STATUS": "Status",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "STRATEGY": "Strategy",
-    "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
-    "TEAMADD_WHATSAPPQUEUE": "Add Team To WhatsApp Queue",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TEXT": "Text",
-    "TIMEOUT": "Timeout",
-    "TIMER": "Timer",
-    "TIMES": "Times",
-    "TO": "To",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TRANSFER": "Transfer",
-    "TRUEPRIORITY": "True Priority",
-    "TYPE": "Type",
-    "UNPAUSE": "End Pause",
-    "VALUE": "Value",
-    "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "WAITING": "Waiting",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPACCOUNTS": "WhatsApp Accounts",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp Canned Answers",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositions",
-    "WHATSAPPQUEUES": "WhatsApp Queues"
-  }
-}
diff --git a/public/app/quick-panel/i18n/hu.json b/public/app/quick-panel/i18n/hu.json
deleted file mode 100644 (file)
index fd2a755..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-{
-  "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
-    "INFO": "Info",
-    "NEW_CHATGROUP": "New Group",
-    "NAME": "Name",
-    "MEMBERS": "Members",
-    "ENABLE_WRITING": "Enable Writing",
-    "GROUPS": "Groups",
-    "YOU": "You + {{participants}}",
-    "NEW_INTERNAL_MESSAGE": "New internal message",
-    "DELETE": "Delete",
-    "SEARCH": "Search",
-    "USERS": "Users",
-    "TODAY": "TODAY",
-    "MONDAY": "Monday",
-    "TUESDAY": "Tuesday",
-    "WEDNESDAY": "Wednesday",
-    "THURSDAY": "Thursday",
-    "FRIDAY": "Friday",
-    "SATURDAY": "Saturday",
-    "SUNDAY": "Sunday",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
-    "AUGUST": "August",
-    "SEPTEMBER": "September",
-    "OCTOBER": "October",
-    "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "CHAT": "CHAT",
-    "ACTIVITY": "ACTIVITY",
-    "FRIENDS": "Friends",
-    "APP_SERVERS": "Application Servers",
-    "USER_STATS": "User Stats",
-    "EVENTS": "Events",
-    "NOTES": "Notes",
-    "QUICK_SETTINGS": "Quick Settings",
-    "NOTIFICATIONS": "Notifications",
-    "CLOUD_SYNC": "Cloud Sync",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Recent",
-    "START_NEW_CHAT": "Start New Chat",
-    "BACK": "Back",
-    "CALL": "Call",
-    "MORE": "More",
-    "SEND_MESSAGE": "Send message",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
-    "EXPIRATION_DATE": "Expiration Date",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "LICENSE": "License",
-    "NEW_TOKEN": "New Token",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email To",
-    "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
-    "WARNING": "Warning",
-    "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
-    }
-  }
-}
diff --git a/public/app/reset/i18n/hu.json b/public/app/reset/i18n/hu.json
deleted file mode 100644 (file)
index c3cf8da..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "RESETPASSWORD": {
-    "TITLE": "Reset your password",
-    "EMAIL_ADRESS": "Email address",
-    "PASSWORD": "Password",
-    "PASSWORD_CONFIRM": "Password (Confirm)",
-    "UPDATE_PASSWORD": "RESET MY PASSWORD",
-    "GO_BACK": "Go back to login",
-    "PASSWORD_RESET": "Password Reset",
-    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
-    "ERRORS": {
-      "EMAIL_REQUIRED": "Email field is required",
-      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
-      "PASSWORD_REQUIRED": "Password field is required",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
-    }
-  }
-}
index 1e9a532..39a5cef 100644 (file)
@@ -70,7 +70,6 @@
     "PORTUGUESE": "Portuguese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Hungarian",
     "TURKISH": "Turkish",
     "PERSIAN": "Persian",
     "LATVIAN": "Latvian",
diff --git a/public/app/toolbar/i18n/hu.json b/public/app/toolbar/i18n/hu.json
deleted file mode 100644 (file)
index 39a5cef..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-{
-  "TOOLBAR": {
-    "CHANGE_LANGUAGE_TITLE": "Change language",
-    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
-    "HEBREW": "Hebrew",
-    "PREFIXES": "Prefixes",
-    "CALL": "Call",
-    "ARABIC": "Arabic",
-    "INDONESIAN": "Indonesian",
-    "RESETPASSWORD": "Reset Password",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
-    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
-    "RECORDING": "Recording",
-    "INVALID_LICENSE": "Invalid License",
-    "BROWSER": "Browser",
-    "OS": "Operating System",
-    "REQUIREMENTS": "Requirements",
-    "LICENSE": "License",
-    "HTTPS": "HTTPS",
-    "WEBRTCSUPPORT": "WebRTC Support",
-    "REGISTERED": "Registered",
-    "NOT_REGISTERED": "Not registered",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
-    "ATTENDED_TRANSFER": "Attended Tranfer",
-    "TRANSFER": "Transfer",
-    "TARGET": "Target",
-    "CANCEL": "Cancel",
-    "FILENAME": "File name",
-    "STATUS": "Status",
-    "ACTIONS": "Actions",
-    "SPEAKER": "Speaker",
-    "RINGING": "Ringing tone",
-    "MICROPHONE": "Microphone",
-    "CONFERENCE": "Conference with 2 active sessions",
-    "PROFILE": "Profile",
-    "SERVICES": "Services",
-    "AUDIO": "Audio",
-    "FULLNAME": "Fullname",
-    "NAME": "Name",
-    "INTERNAL": "Internal",
-    "RINGINGDEVICE": "Ringing Device",
-    "SPEAKERDEVICE": "Speaker Device",
-    "MICROPHONEDEVICE": "Microphone Device",
-    "CHANGEPASSWORD": "Change password",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto answer",
-    "TOGGLE_NAVIGATION": "Toggle navigation",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
-    "SEARCH": "Search",
-    "USER_SETTINGS": "User settings",
-    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
-    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
-    "STAY_LOGGED": "Stay logged",
-    "WARNING": "Warning",
-    "ENGLISH": "English",
-    "ITALIAN": "Italian",
-    "FRENCH": "French",
-    "KOREAN": "Korean",
-    "SPANISH": "Spanish",
-    "SWEDISH": "Swedish",
-    "RUSSIAN": "Russian",
-    "GERMAN": "German",
-    "JAPANESE": "Japanese",
-    "CHINESESIMPLIFIED": "Chinese Simplified",
-    "CHINESETRADITIONAL": "Chinese Traditional",
-    "DUTCH": "Dutch",
-    "FINNISH": "Finnish",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Portuguese",
-    "NORWEGIAN": "Norwegian",
-    "HINDI": "Hindi",
-    "TURKISH": "Turkish",
-    "PERSIAN": "Persian",
-    "LATVIAN": "Latvian",
-    "POLISH": "Polish",
-    "LOGIN_TIME": "Login Time",
-    "PAUSE_TIME": "Pause Time",
-    "PREVIEW": "Preview",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_PASSWORD": "New Password",
-    "OLD_PASSWORD": "Old Password",
-    "SAVE": "Save",
-    "TRIAL_VERSION": "Trial Version",
-    "PAUSE": "Pause",
-    "RESUME": "End Pause",
-    "NO_PAUSES_AVAILABLE": "No pauses available",
-    "CZECH": "Czech",
-    "ERRORS": {
-      "FIELD_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
-    },
-    "BRAZILIAN": "Brazilian",
-    "ESTONIAN": "Estonian",
-    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
-    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-    "NO_AVAILABLE_INFO": "No available info",
-    "LITHUANIAN": "Lithuanian",
-    "NOTIFICATION_TITLE": "New notification from {{sender}}",
-    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
-    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
-    "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
-    "HELP": {
-      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
-    }
-  }
-}
index b64b351..25ff681 100644 (file)
@@ -61,7 +61,6 @@
     "PORTUGUESE": "Portoghese",
     "NORWEGIAN": "Norwegian",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Ungherese",
     "TURKISH": "Turco",
     "PERSIAN": "Persiano",
     "LATVIAN": "Lettone",
diff --git a/public/assets/images/flags/hu.png b/public/assets/images/flags/hu.png
deleted file mode 100644 (file)
index ff1aa24..0000000
Binary files a/public/assets/images/flags/hu.png and /dev/null differ
index 9de0701..5975fd9 100644 (file)
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.c65a4752.js"></script>
+  <script src="scripts/app.844a057d.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 62%
rename from public/scripts/app.c65a4752.js
rename to public/scripts/app.844a057d.js
index c071362..d56dc58 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",res.token,{secure:!0,sameSite:"none"}):r.set("motion.token",res.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\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,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){C(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=C,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){C(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function C(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,n,i,r,l,s,d){var c;return{getToken:t,getCurrentUser:function(){return c},getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return f(e)})},hasModulePermissions:function(i){return o(function(a,n){v()?a(!0):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};v()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:c.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!c&&c.role===e},hasPermission:f,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!v())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:g,isAdmin:v,isLoggedIn:function(){return!!t()},isTelephone:function(){return"telephone"===c.role},isUser:h,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return s.get().secureCookieEnabled?d.set("motion.token",e.token,{secure:!0,sameSite:"none"}):d.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(g()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return g()&&0!==c.showWebBar?m(e):v()||h()?u(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(p(),e()):o.resolve().then(function(){return g()&&0!==c.showWebBar?o(function(e,n){r.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):v()||h()?u(!1):void 0}).then(function(){p(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return v()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:m,reloadPermissions:A,removeCookies:p,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function t(){return e.get("motion.token")}function m(e){return o(function(n,t){r.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(){e.remove("motion.token"),c&&(n.localStorage.removeItem("motion.user:"+c.id),n.localStorage.removeItem("motion.authenticationtype"),c=null)}function g(){return"agent"===c.role}function v(){return"admin"===c.role}function h(){return"user"===c.role}function f(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",res.token,{secure:!0,sameSite:"none"}):r.set("motion.token",res.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\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,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){C(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=C,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){C(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function C(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="!vm.dialerCall">\n          <md-input-container ng-if="vm.recallme && vm.user.selectRecallMeCampaign" class="md-block">\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 32b1c86..a4e8aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf354=['motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','action','STRING'];(function(_0x179e11,_0xf65436){var _0x549f04=function(_0x610545){while(--_0x610545){_0x179e11['push'](_0x179e11['shift']());}};_0x549f04(++_0xf65436);}(_0xf354,0x17c));var _0x4f35=function(_0x1d6000,_0x3118b6){_0x1d6000=_0x1d6000-0x0;var _0x17b872=_0xf354[_0x1d6000];return _0x17b872;};'use strict';var Sequelize=require(_0x4f35('0x0'));module[_0x4f35('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2262f2){return this['getDataValue'](_0x4f35('0x2'));}},'action':{'type':Sequelize[_0x4f35('0x3')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager','integration',_0x4f35('0x4'),_0x4f35('0x5'),_0x4f35('0x6'),_0x4f35('0x7'),_0x4f35('0x8'),_0x4f35('0x9')]],'msg':_0x4f35('0xa')}},'comment':_0x4f35('0xa')},'data1':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':_0x4f35('0xb')},'data3':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comment':_0x4f35('0xc')},'data4':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comments':_0x4f35('0xd')},'data5':{'type':Sequelize[_0x4f35('0x3')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0x4f35('0x3')],'comments':_0x4f35('0xe')},'data7':{'type':Sequelize[_0x4f35('0xf')],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0xf559=['TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','urlForward','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]'];(function(_0x133345,_0x4a78b1){var _0x51f3d2=function(_0x374e6e){while(--_0x374e6e){_0x133345['push'](_0x133345['shift']());}};_0x51f3d2(++_0x4a78b1);}(_0xf559,0x113));var _0x9f55=function(_0x57d3f0,_0x17ffdb){_0x57d3f0=_0x57d3f0-0x0;var _0x24eed8=_0xf559[_0x57d3f0];return _0x24eed8;};'use strict';var Sequelize=require(_0x9f55('0x0'));module[_0x9f55('0x1')]={'name':{'type':Sequelize[_0x9f55('0x2')],'get':function(_0x7f3de4){return this[_0x9f55('0x3')](_0x9f55('0x4'));}},'action':{'type':Sequelize[_0x9f55('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0x9f55('0x6'),_0x9f55('0x7'),_0x9f55('0x8'),_0x9f55('0x9'),_0x9f55('0xa'),'browser',_0x9f55('0xb'),_0x9f55('0xc')]],'msg':_0x9f55('0xd')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x9f55('0xe')},'data2':{'type':Sequelize[_0x9f55('0x5')](0x1000),'comment':_0x9f55('0xf')},'data3':{'type':Sequelize[_0x9f55('0x5')](0x1000),'comment':_0x9f55('0x10')},'data4':{'type':Sequelize[_0x9f55('0x5')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x9f55('0x5')](0x1000),'comments':_0x9f55('0x11')},'data6':{'type':Sequelize[_0x9f55('0x5')],'comments':_0x9f55('0x12')},'data7':{'type':Sequelize[_0x9f55('0x13')],'comments':_0x9f55('0x14')}};
\ No newline at end of file
index 8b49c10..cc029f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dbb=['update','then','destroy','sendStatus','error','name','send','body','Action','catch','find','params','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x574b61,_0x1023c5){var _0x4536a4=function(_0x2a7e3f){while(--_0x2a7e3f){_0x574b61['push'](_0x574b61['shift']());}};_0x4536a4(++_0x1023c5);}(_0x4dbb,0x10e));var _0xb4db=function(_0x4a94b1,_0x4f2518){_0x4a94b1=_0x4a94b1-0x0;var _0x20949f=_0x4dbb[_0x4a94b1];return _0x20949f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb4db('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb4db('0x1'));var rp=require('request-promise');var moment=require(_0xb4db('0x2'));var BPromise=require(_0xb4db('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb4db('0x4'));var sox=require(_0xb4db('0x5'));var csv=require(_0xb4db('0x6'));var ejs=require(_0xb4db('0x7'));var fs=require('fs');var fs_extra=require(_0xb4db('0x8'));var _=require('lodash');var squel=require(_0xb4db('0x9'));var crypto=require('crypto');var jsforce=require(_0xb4db('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xb4db('0x6'));var querystring=require(_0xb4db('0xb'));var Papa=require(_0xb4db('0xc'));var Redis=require('ioredis');var authService=require(_0xb4db('0xd'));var qs=require(_0xb4db('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb4db('0xf'));var logger=require(_0xb4db('0x10'))('api');var utils=require(_0xb4db('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xb4db('0x12'));var db=require(_0xb4db('0x13'))['db'];function respondWithStatusCode(_0x37d921,_0x5467f1){_0x5467f1=_0x5467f1||0xcc;return function(_0x9ca403){if(_0x9ca403){return _0x37d921['sendStatus'](_0x5467f1);}return _0x37d921[_0xb4db('0x14')](_0x5467f1)[_0xb4db('0x15')]();};}function respondWithResult(_0x4b48cc,_0x2aec14){_0x2aec14=_0x2aec14||0xc8;return function(_0x50f4cc){if(_0x50f4cc){return _0x4b48cc[_0xb4db('0x14')](_0x2aec14)[_0xb4db('0x16')](_0x50f4cc);}};}function respondWithFilteredResult(_0x388ac0,_0x47015b){return function(_0x3839c7){if(_0x3839c7){var _0x5c8678=typeof _0x47015b['offset']===_0xb4db('0x17')&&typeof _0x47015b[_0xb4db('0x18')]===_0xb4db('0x17');var _0x39abd1=_0x3839c7[_0xb4db('0x19')];var _0x33c691=_0x5c8678?0x0:_0x47015b['offset'];var _0x1f1419=_0x5c8678?_0x3839c7[_0xb4db('0x19')]:_0x47015b[_0xb4db('0x1a')]+_0x47015b[_0xb4db('0x18')];var _0x3f0ce2;if(_0x1f1419>=_0x39abd1){_0x1f1419=_0x39abd1;_0x3f0ce2=0xc8;}else{_0x3f0ce2=0xce;}_0x388ac0[_0xb4db('0x14')](_0x3f0ce2);return _0x388ac0[_0xb4db('0x1b')](_0xb4db('0x1c'),_0x33c691+'-'+_0x1f1419+'/'+_0x39abd1)['json'](_0x3839c7);}return null;};}function patchUpdates(_0xefc868){return function(_0x495780){try{jsonpatch[_0xb4db('0x1d')](_0x495780,_0xefc868,!![]);}catch(_0x2fb9cf){return BPromise['reject'](_0x2fb9cf);}return _0x495780[_0xb4db('0x1e')]();};}function saveUpdates(_0x36511e,_0x5b46b1){return function(_0x422a4d){if(_0x422a4d){return _0x422a4d[_0xb4db('0x1f')](_0x36511e)[_0xb4db('0x20')](function(_0x2bc0fb){return _0x2bc0fb;});}return null;};}function removeEntity(_0x45d8b8,_0x4f8ffb){return function(_0x1e232f){if(_0x1e232f){return _0x1e232f[_0xb4db('0x21')]()[_0xb4db('0x20')](function(){_0x45d8b8['status'](0xcc)[_0xb4db('0x15')]();});}};}function handleEntityNotFound(_0x49bab3,_0x169b01){return function(_0x138d65){if(!_0x138d65){_0x49bab3[_0xb4db('0x22')](0x194);}return _0x138d65;};}function handleError(_0x5178cc,_0x4937c2){_0x4937c2=_0x4937c2||0x1f4;return function(_0x4c26ec){logger[_0xb4db('0x23')](_0x4c26ec['stack']);if(_0x4c26ec[_0xb4db('0x24')]){delete _0x4c26ec['name'];}_0x5178cc[_0xb4db('0x14')](_0x4937c2)[_0xb4db('0x25')](_0x4c26ec);};}exports[_0xb4db('0x1f')]=function(_0x356331,_0x26d1b4){if(_0x356331[_0xb4db('0x26')]['id']){delete _0x356331[_0xb4db('0x26')]['id'];}return db[_0xb4db('0x27')]['find']({'where':{'id':_0x356331['params']['id']}})['then'](handleEntityNotFound(_0x26d1b4,null))[_0xb4db('0x20')](saveUpdates(_0x356331[_0xb4db('0x26')],null))[_0xb4db('0x20')](respondWithResult(_0x26d1b4,null))[_0xb4db('0x28')](handleError(_0x26d1b4,null));};exports[_0xb4db('0x21')]=function(_0x154f5b,_0x97501e){return db[_0xb4db('0x27')][_0xb4db('0x29')]({'where':{'id':_0x154f5b[_0xb4db('0x2a')]['id']}})[_0xb4db('0x20')](handleEntityNotFound(_0x97501e,null))[_0xb4db('0x20')](removeEntity(_0x97501e,null))['catch'](handleError(_0x97501e,null));};
\ No newline at end of file
+var _0x48cb=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse'];(function(_0x10d888,_0x5c8b27){var _0x1c30e1=function(_0x1c7101){while(--_0x1c7101){_0x10d888['push'](_0x10d888['shift']());}};_0x1c30e1(++_0x5c8b27);}(_0x48cb,0x1c5));var _0xb48c=function(_0x2c7cb0,_0x1e70dc){_0x2c7cb0=_0x2c7cb0-0x0;var _0x2bcd08=_0x48cb[_0x2c7cb0];return _0x2bcd08;};'use strict';var emlformat=require(_0xb48c('0x0'));var rimraf=require(_0xb48c('0x1'));var zipdir=require(_0xb48c('0x2'));var jsonpatch=require(_0xb48c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb48c('0x4'));var Mustache=require(_0xb48c('0x5'));var util=require(_0xb48c('0x6'));var path=require(_0xb48c('0x7'));var sox=require(_0xb48c('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb48c('0x9'));var _=require(_0xb48c('0xa'));var squel=require(_0xb48c('0xb'));var crypto=require(_0xb48c('0xc'));var jsforce=require(_0xb48c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb48c('0xe'));var querystring=require(_0xb48c('0xf'));var Papa=require(_0xb48c('0x10'));var Redis=require(_0xb48c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb48c('0x12'));var as=require(_0xb48c('0x13'));var hardwareService=require(_0xb48c('0x14'));var logger=require(_0xb48c('0x15'))(_0xb48c('0x16'));var utils=require(_0xb48c('0x17'));var config=require(_0xb48c('0x18'));var licenseUtil=require(_0xb48c('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x140772,_0x116704){_0x116704=_0x116704||0xcc;return function(_0x2896c8){if(_0x2896c8){return _0x140772[_0xb48c('0x1a')](_0x116704);}return _0x140772[_0xb48c('0x1b')](_0x116704)[_0xb48c('0x1c')]();};}function respondWithResult(_0x375b70,_0x3db8a2){_0x3db8a2=_0x3db8a2||0xc8;return function(_0x545503){if(_0x545503){return _0x375b70[_0xb48c('0x1b')](_0x3db8a2)[_0xb48c('0x1d')](_0x545503);}};}function respondWithFilteredResult(_0x46729d,_0x5dafd9){return function(_0x4b7ac6){if(_0x4b7ac6){var _0x2652fd=typeof _0x5dafd9[_0xb48c('0x1e')]===_0xb48c('0x1f')&&typeof _0x5dafd9['limit']===_0xb48c('0x1f');var _0x5813b3=_0x4b7ac6[_0xb48c('0x20')];var _0x1922a5=_0x2652fd?0x0:_0x5dafd9[_0xb48c('0x1e')];var _0x1ef60e=_0x2652fd?_0x4b7ac6[_0xb48c('0x20')]:_0x5dafd9['offset']+_0x5dafd9['limit'];var _0x1910c8;if(_0x1ef60e>=_0x5813b3){_0x1ef60e=_0x5813b3;_0x1910c8=0xc8;}else{_0x1910c8=0xce;}_0x46729d[_0xb48c('0x1b')](_0x1910c8);return _0x46729d['set'](_0xb48c('0x21'),_0x1922a5+'-'+_0x1ef60e+'/'+_0x5813b3)[_0xb48c('0x1d')](_0x4b7ac6);}return null;};}function patchUpdates(_0x42194f){return function(_0x53438f){try{jsonpatch[_0xb48c('0x22')](_0x53438f,_0x42194f,!![]);}catch(_0x48cb15){return BPromise[_0xb48c('0x23')](_0x48cb15);}return _0x53438f[_0xb48c('0x24')]();};}function saveUpdates(_0x2c645b,_0x5bc274){return function(_0x383946){if(_0x383946){return _0x383946[_0xb48c('0x25')](_0x2c645b)[_0xb48c('0x26')](function(_0x512a30){return _0x512a30;});}return null;};}function removeEntity(_0x4cbc93,_0x5dfd7a){return function(_0x370c44){if(_0x370c44){return _0x370c44[_0xb48c('0x27')]()['then'](function(){_0x4cbc93[_0xb48c('0x1b')](0xcc)[_0xb48c('0x1c')]();});}};}function handleEntityNotFound(_0x397ac3,_0x11c9a7){return function(_0x17d8ad){if(!_0x17d8ad){_0x397ac3['sendStatus'](0x194);}return _0x17d8ad;};}function handleError(_0x69db91,_0x42f1a5){_0x42f1a5=_0x42f1a5||0x1f4;return function(_0x2d5e42){logger['error'](_0x2d5e42[_0xb48c('0x28')]);if(_0x2d5e42[_0xb48c('0x29')]){delete _0x2d5e42[_0xb48c('0x29')];}_0x69db91[_0xb48c('0x1b')](_0x42f1a5)['send'](_0x2d5e42);};}exports[_0xb48c('0x25')]=function(_0xf7f6e6,_0x38b22d){if(_0xf7f6e6[_0xb48c('0x2a')]['id']){delete _0xf7f6e6['body']['id'];}return db[_0xb48c('0x2b')][_0xb48c('0x2c')]({'where':{'id':_0xf7f6e6[_0xb48c('0x2d')]['id']}})[_0xb48c('0x26')](handleEntityNotFound(_0x38b22d,null))[_0xb48c('0x26')](saveUpdates(_0xf7f6e6[_0xb48c('0x2a')],null))['then'](respondWithResult(_0x38b22d,null))[_0xb48c('0x2e')](handleError(_0x38b22d,null));};exports['destroy']=function(_0x5b168b,_0x2d6506){return db[_0xb48c('0x2b')]['find']({'where':{'id':_0x5b168b[_0xb48c('0x2d')]['id']}})[_0xb48c('0x26')](handleEntityNotFound(_0x2d6506,null))[_0xb48c('0x26')](removeEntity(_0x2d6506,null))[_0xb48c('0x2e')](handleError(_0x2d6506,null));};
\ No newline at end of file
index 30ed272..fb34a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3495=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./action.attributes','exports','Action','lodash','util'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x3495,0x1de));var _0x5349=function(_0x278cb6,_0x17c34d){_0x278cb6=_0x278cb6-0x0;var _0x504ce5=_0x3495[_0x278cb6];return _0x504ce5;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var logger=require(_0x5349('0x2'))(_0x5349('0x3'));var moment=require(_0x5349('0x4'));var BPromise=require(_0x5349('0x5'));var rp=require(_0x5349('0x6'));var fs=require('fs');var path=require(_0x5349('0x7'));var rimraf=require(_0x5349('0x8'));var config=require('../../config/environment');var attributes=require(_0x5349('0x9'));module[_0x5349('0xa')]=function(_0x5ce2cd,_0xcb5a1){return _0x5ce2cd['define'](_0x5349('0xb'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x664b=['rimraf','../../config/environment','./action.attributes','exports','define','tools_actions','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x1507a4,_0x28b369){var _0x10f99b=function(_0x1b6218){while(--_0x1b6218){_0x1507a4['push'](_0x1507a4['shift']());}};_0x10f99b(++_0x28b369);}(_0x664b,0x66));var _0xb664=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x664b[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xb664('0x0'));var util=require('util');var logger=require(_0xb664('0x1'))(_0xb664('0x2'));var moment=require(_0xb664('0x3'));var BPromise=require('bluebird');var rp=require(_0xb664('0x4'));var fs=require('fs');var path=require(_0xb664('0x5'));var rimraf=require(_0xb664('0x6'));var config=require(_0xb664('0x7'));var attributes=require(_0xb664('0x8'));module[_0xb664('0x9')]=function(_0x57af12,_0x1a4a77){return _0x57af12[_0xb664('0xa')]('Action',attributes,{'tableName':_0xb664('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44f35d8..b1dd879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x7217,0x19e));var _0x7721=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x7217[_0x1ddedd];return _0xa3e1ac;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Action,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
+var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x32bcf3,_0x35558b){var _0x1791f9=function(_0x4773fc){while(--_0x4773fc){_0x32bcf3['push'](_0x32bcf3['shift']());}};_0x1791f9(++_0x35558b);}(_0xabce,0x103));var _0xeabc=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0xabce[_0x257642];return _0x3d813b;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
index c853773..b421911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['isAuthenticated','update','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller','put','/:id'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xef17,0xb9));var _0x7ef1=function(_0x2d3056,_0x60b14b){_0x2d3056=_0x2d3056-0x0;var _0x2ab841=_0xef17[_0x2d3056];return _0x2ab841;};'use strict';var multer=require(_0x7ef1('0x0'));var util=require(_0x7ef1('0x1'));var path=require(_0x7ef1('0x2'));var timeout=require(_0x7ef1('0x3'));var express=require('express');var router=express[_0x7ef1('0x4')]();var fs_extra=require(_0x7ef1('0x5'));var auth=require(_0x7ef1('0x6'));var interaction=require(_0x7ef1('0x7'));var config=require('../../config/environment');var controller=require(_0x7ef1('0x8'));router[_0x7ef1('0x9')](_0x7ef1('0xa'),auth[_0x7ef1('0xb')](),controller[_0x7ef1('0xc')]);router[_0x7ef1('0xd')](_0x7ef1('0xa'),auth[_0x7ef1('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x80ec=['isAuthenticated','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','put','/:id'];(function(_0x17fe3a,_0x5f3331){var _0x5862ff=function(_0x550e46){while(--_0x550e46){_0x17fe3a['push'](_0x17fe3a['shift']());}};_0x5862ff(++_0x5f3331);}(_0x80ec,0x18c));var _0xc80e=function(_0x562c42,_0x26e50b){_0x562c42=_0x562c42-0x0;var _0x3b229b=_0x80ec[_0x562c42];return _0x3b229b;};'use strict';var multer=require(_0xc80e('0x0'));var util=require(_0xc80e('0x1'));var path=require('path');var timeout=require(_0xc80e('0x2'));var express=require(_0xc80e('0x3'));var router=express[_0xc80e('0x4')]();var fs_extra=require(_0xc80e('0x5'));var auth=require(_0xc80e('0x6'));var interaction=require(_0xc80e('0x7'));var config=require('../../config/environment');var controller=require('./action.controller');router[_0xc80e('0x8')](_0xc80e('0x9'),auth[_0xc80e('0xa')](),controller[_0xc80e('0xb')]);router[_0xc80e('0xc')](_0xc80e('0x9'),auth[_0xc80e('0xa')](),controller['destroy']);module[_0xc80e('0xd')]=router;
\ No newline at end of file
index 837bd68..2cf239e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['sequelize','exports','STRING','TEXT'];(function(_0x10fcf1,_0x1067cf){var _0x1636f7=function(_0x149a07){while(--_0x149a07){_0x10fcf1['push'](_0x10fcf1['shift']());}};_0x1636f7(++_0x1067cf);}(_0x98a8,0x12c));var _0x898a=function(_0x73281a,_0x247af3){_0x73281a=_0x73281a-0x0;var _0x42689d=_0x98a8[_0x73281a];return _0x42689d;};'use strict';var Sequelize=require(_0x898a('0x0'));module[_0x898a('0x1')]={'name':{'type':Sequelize[_0x898a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x898a('0x2')]},'parent':{'type':Sequelize[_0x898a('0x2')]},'table':{'type':Sequelize[_0x898a('0x2')]},'conditions':{'type':Sequelize[_0x898a('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x5d58=['TEXT','STRING'];(function(_0x5b3418,_0x536a6c){var _0x23ac27=function(_0x330e61){while(--_0x330e61){_0x5b3418['push'](_0x5b3418['shift']());}};_0x23ac27(++_0x536a6c);}(_0x5d58,0x187));var _0x85d5=function(_0x4fba42,_0x17dbfe){_0x4fba42=_0x4fba42-0x0;var _0x5ab5c3=_0x5d58[_0x4fba42];return _0x5ab5c3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x85d5('0x0')]},'conditions':{'type':Sequelize[_0x85d5('0x1')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index b4455a7..9fabb19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe499=['UserProfileSection','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','DATE(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','operator','value','groupBy','order','web','fullPath','%s-%s.%s','randomstring','output','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','COUNT(*)','run','runReport','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','undefined','limit','count','offset','set','apply','save','update','destroy','then','UserProfileResource','end','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','filter','options','includeAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports'];(function(_0x37c17b,_0x2f3b26){var _0x1956d7=function(_0x1240b1){while(--_0x1240b1){_0x37c17b['push'](_0x37c17b['shift']());}};_0x1956d7(++_0x2f3b26);}(_0xe499,0xfb));var _0x9e49=function(_0x10396d,_0x478795){_0x10396d=_0x10396d-0x0;var _0x2e05c5=_0xe499[_0x10396d];return _0x2e05c5;};'use strict';var emlformat=require(_0x9e49('0x0'));var rimraf=require(_0x9e49('0x1'));var zipdir=require(_0x9e49('0x2'));var jsonpatch=require(_0x9e49('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9e49('0x4'));var Mustache=require(_0x9e49('0x5'));var util=require(_0x9e49('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x9e49('0x7'));var ejs=require(_0x9e49('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e49('0x9'));var squel=require(_0x9e49('0xa'));var crypto=require(_0x9e49('0xb'));var jsforce=require(_0x9e49('0xc'));var deskjs=require(_0x9e49('0xd'));var toCsv=require(_0x9e49('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9e49('0xe'));var authService=require(_0x9e49('0xf'));var qs=require(_0x9e49('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e49('0x11'));var logger=require(_0x9e49('0x12'))(_0x9e49('0x13'));var utils=require(_0x9e49('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9e49('0x15'));var db=require(_0x9e49('0x16'))['db'];var dbH=require(_0x9e49('0x16'))[_0x9e49('0x17')];function respondWithStatusCode(_0x4b73d6,_0x999371){_0x999371=_0x999371||0xcc;return function(_0x2e112d){if(_0x2e112d){return _0x4b73d6[_0x9e49('0x18')](_0x999371);}return _0x4b73d6[_0x9e49('0x19')](_0x999371)['end']();};}function respondWithResult(_0x35f9fa,_0x121abd){_0x121abd=_0x121abd||0xc8;return function(_0x41d917){if(_0x41d917){return _0x35f9fa[_0x9e49('0x19')](_0x121abd)[_0x9e49('0x1a')](_0x41d917);}};}function respondWithFilteredResult(_0x31dab6,_0x3e21ba){return function(_0x16784b){if(_0x16784b){var _0x454908=typeof _0x3e21ba['offset']===_0x9e49('0x1b')&&typeof _0x3e21ba[_0x9e49('0x1c')]===_0x9e49('0x1b');var _0x456b58=_0x16784b[_0x9e49('0x1d')];var _0x5e3bbc=_0x454908?0x0:_0x3e21ba[_0x9e49('0x1e')];var _0xb4bd1c=_0x454908?_0x16784b['count']:_0x3e21ba[_0x9e49('0x1e')]+_0x3e21ba['limit'];var _0x3dcd5c;if(_0xb4bd1c>=_0x456b58){_0xb4bd1c=_0x456b58;_0x3dcd5c=0xc8;}else{_0x3dcd5c=0xce;}_0x31dab6[_0x9e49('0x19')](_0x3dcd5c);return _0x31dab6[_0x9e49('0x1f')]('Content-Range',_0x5e3bbc+'-'+_0xb4bd1c+'/'+_0x456b58)[_0x9e49('0x1a')](_0x16784b);}return null;};}function patchUpdates(_0x4d0a0e){return function(_0x4b480d){try{jsonpatch[_0x9e49('0x20')](_0x4b480d,_0x4d0a0e,!![]);}catch(_0x2a6ddc){return BPromise['reject'](_0x2a6ddc);}return _0x4b480d[_0x9e49('0x21')]();};}function saveUpdates(_0x19e63e,_0x2043d3){return function(_0x586a36){if(_0x586a36){return _0x586a36[_0x9e49('0x22')](_0x19e63e)['then'](function(_0x3211f9){return _0x3211f9;});}return null;};}function removeEntity(_0x1f627b,_0x52e534){return function(_0x3e8993){if(_0x3e8993){return _0x3e8993[_0x9e49('0x23')]()[_0x9e49('0x24')](function(){var _0x31a706=_0x3e8993['get']({'plain':!![]});var _0x277b77='CustomReports';return db[_0x9e49('0x25')][_0x9e49('0x23')]({'where':{'type':_0x277b77,'resourceId':_0x31a706['id']}})[_0x9e49('0x24')](function(){return _0x3e8993;});})['then'](function(){_0x1f627b['status'](0xcc)[_0x9e49('0x26')]();});}};}function handleEntityNotFound(_0x3ed135,_0x401050){return function(_0x3e2ae9){if(!_0x3e2ae9){_0x3ed135[_0x9e49('0x18')](0x194);}return _0x3e2ae9;};}function handleError(_0x139675,_0x50ef5a){_0x50ef5a=_0x50ef5a||0x1f4;return function(_0x561976){logger[_0x9e49('0x27')](_0x561976[_0x9e49('0x28')]);if(_0x561976[_0x9e49('0x29')]){delete _0x561976[_0x9e49('0x29')];}_0x139675['status'](_0x50ef5a)[_0x9e49('0x2a')](_0x561976);};}exports[_0x9e49('0x2b')]=function(_0x3072da,_0x5b2d1a){var _0x405765={},_0x2f61fe={},_0x433b40={'count':0x0,'rows':[]};var _0x3e55e7=_[_0x9e49('0x2c')](db[_0x9e49('0x2d')][_0x9e49('0x2e')],function(_0x30ba02){return{'name':_0x30ba02[_0x9e49('0x2f')],'type':_0x30ba02[_0x9e49('0x30')][_0x9e49('0x31')]};});_0x2f61fe['model']=_[_0x9e49('0x2c')](_0x3e55e7,_0x9e49('0x29'));_0x2f61fe[_0x9e49('0x32')]=_[_0x9e49('0x33')](_0x3072da[_0x9e49('0x32')]);_0x2f61fe[_0x9e49('0x34')]=_[_0x9e49('0x35')](_0x2f61fe['model'],_0x2f61fe[_0x9e49('0x32')]);_0x405765['attributes']=_[_0x9e49('0x35')](_0x2f61fe[_0x9e49('0x36')],qs[_0x9e49('0x37')](_0x3072da[_0x9e49('0x32')]['fields']));_0x405765[_0x9e49('0x38')]=_0x405765[_0x9e49('0x38')][_0x9e49('0x39')]?_0x405765[_0x9e49('0x38')]:_0x2f61fe['model'];if(!_0x3072da[_0x9e49('0x32')][_0x9e49('0x3a')](_0x9e49('0x3b'))){_0x405765['limit']=qs['limit'](_0x3072da[_0x9e49('0x32')][_0x9e49('0x1c')]);_0x405765[_0x9e49('0x1e')]=qs[_0x9e49('0x1e')](_0x3072da[_0x9e49('0x32')][_0x9e49('0x1e')]);}_0x405765['order']=qs[_0x9e49('0x3c')](_0x3072da[_0x9e49('0x32')]['sort']);_0x405765['where']=qs[_0x9e49('0x34')](_[_0x9e49('0x3d')](_0x3072da[_0x9e49('0x32')],_0x2f61fe[_0x9e49('0x34')]),_0x3e55e7);if(_0x3072da[_0x9e49('0x32')]['filter']){_0x405765[_0x9e49('0x3e')]=_[_0x9e49('0x3f')](_0x405765[_0x9e49('0x3e')],{'$or':_['map'](_0x3e55e7,function(_0x32001d){if(_0x32001d[_0x9e49('0x30')]!=='VIRTUAL'){var _0x43d454={};_0x43d454[_0x32001d[_0x9e49('0x29')]]={'$like':'%'+_0x3072da['query'][_0x9e49('0x40')]+'%'};return _0x43d454;}})});}_0x405765=_[_0x9e49('0x3f')]({},_0x405765,_0x3072da[_0x9e49('0x41')]);var _0xc4cd5d={'where':_0x405765[_0x9e49('0x3e')]};return db[_0x9e49('0x2d')][_0x9e49('0x1d')](_0xc4cd5d)[_0x9e49('0x24')](function(_0x403a5e){_0x433b40[_0x9e49('0x1d')]=_0x403a5e;if(_0x3072da[_0x9e49('0x32')][_0x9e49('0x42')]){_0x405765['include']=[{'all':!![]}];}return db[_0x9e49('0x2d')]['findAll'](_0x405765);})[_0x9e49('0x24')](function(_0x27bd59){_0x433b40[_0x9e49('0x43')]=_0x27bd59;return _0x433b40;})[_0x9e49('0x24')](respondWithFilteredResult(_0x5b2d1a,_0x405765))[_0x9e49('0x44')](handleError(_0x5b2d1a,null));};exports[_0x9e49('0x45')]=function(_0x16512d,_0x2e6a5b){var _0x592bd3={'raw':![],'where':{'id':_0x16512d[_0x9e49('0x46')]['id']}},_0x13c48d={};_0x13c48d[_0x9e49('0x36')]=_[_0x9e49('0x33')](db['AnalyticCustomReport']['rawAttributes']);_0x13c48d[_0x9e49('0x32')]=_[_0x9e49('0x33')](_0x16512d[_0x9e49('0x32')]);_0x13c48d[_0x9e49('0x34')]=_[_0x9e49('0x35')](_0x13c48d[_0x9e49('0x36')],_0x13c48d[_0x9e49('0x32')]);_0x592bd3[_0x9e49('0x38')]=_[_0x9e49('0x35')](_0x13c48d[_0x9e49('0x36')],qs[_0x9e49('0x37')](_0x16512d[_0x9e49('0x32')][_0x9e49('0x37')]));_0x592bd3['attributes']=_0x592bd3[_0x9e49('0x38')][_0x9e49('0x39')]?_0x592bd3['attributes']:_0x13c48d[_0x9e49('0x36')];if(_0x16512d['query']['includeAll']){_0x592bd3['include']=[{'all':!![]}];}_0x592bd3=_[_0x9e49('0x3f')]({},_0x592bd3,_0x16512d['options']);return db[_0x9e49('0x2d')][_0x9e49('0x47')](_0x592bd3)[_0x9e49('0x24')](handleEntityNotFound(_0x2e6a5b,null))[_0x9e49('0x24')](respondWithResult(_0x2e6a5b,null))[_0x9e49('0x44')](handleError(_0x2e6a5b,null));};exports['create']=function(_0x287038,_0x153a58){return db[_0x9e49('0x2d')][_0x9e49('0x48')](_0x287038[_0x9e49('0x49')],{})[_0x9e49('0x24')](function(_0x2c3e59){var _0x499f87=_0x287038[_0x9e49('0x4a')]['get']({'plain':!![]});if(!_0x499f87)throw new Error(_0x9e49('0x4b'));if(_0x499f87['role']===_0x9e49('0x4a')){var _0x59b7a1=_0x2c3e59['get']({'plain':!![]});var _0x5cb0b9=_0x9e49('0x4c');return db[_0x9e49('0x4d')][_0x9e49('0x47')]({'where':{'name':_0x5cb0b9,'userProfileId':_0x499f87['userProfileId']},'raw':!![]})[_0x9e49('0x24')](function(_0x6803d8){if(_0x6803d8&&_0x6803d8[_0x9e49('0x4e')]===0x0){return db['UserProfileResource'][_0x9e49('0x48')]({'name':_0x59b7a1[_0x9e49('0x29')],'resourceId':_0x59b7a1['id'],'type':_0x9e49('0x4f'),'sectionId':_0x6803d8['id']},{})[_0x9e49('0x24')](function(){return _0x2c3e59;});}else{return _0x2c3e59;}})['catch'](function(_0x361c1c){logger['error'](_0x9e49('0x50'),_0x361c1c);throw _0x361c1c;});}return _0x2c3e59;})[_0x9e49('0x24')](respondWithResult(_0x153a58,0xc9))['catch'](handleError(_0x153a58,null));};exports[_0x9e49('0x22')]=function(_0x2e625b,_0x1f7e44){if(_0x2e625b[_0x9e49('0x49')]['id']){delete _0x2e625b[_0x9e49('0x49')]['id'];}return db[_0x9e49('0x2d')][_0x9e49('0x47')]({'where':{'id':_0x2e625b[_0x9e49('0x46')]['id']}})[_0x9e49('0x24')](handleEntityNotFound(_0x1f7e44,null))[_0x9e49('0x24')](saveUpdates(_0x2e625b[_0x9e49('0x49')],null))['then'](respondWithResult(_0x1f7e44,null))[_0x9e49('0x44')](handleError(_0x1f7e44,null));};exports[_0x9e49('0x23')]=function(_0x196305,_0x52c61a){return db[_0x9e49('0x2d')][_0x9e49('0x47')]({'where':{'id':_0x196305[_0x9e49('0x46')]['id']}})[_0x9e49('0x24')](handleEntityNotFound(_0x52c61a,null))[_0x9e49('0x24')](removeEntity(_0x52c61a,null))[_0x9e49('0x44')](handleError(_0x52c61a,null));};exports[_0x9e49('0x51')]=function(_0x553ceb,_0x39eb6f){var _0x1c5a0c=0xa;var _0x64506d=[_0x9e49('0x52'),_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x4b85b3={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':_0x9e49('0x5b')};var _0x44b611={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':'DATE(%s)','HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x40a7ae=function(_0x485d93){return!_[_0x9e49('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY',_0x9e49('0x61')],_0x485d93);};var _0x4eb711=function(_0x43aed9){if(!_0x43aed9||!_0x43aed9[_0x9e49('0x62')][_0x9e49('0x39')]){return'';}for(var _0x546831='(',_0x565baa=0x0;_0x565baa<_0x43aed9[_0x9e49('0x62')][_0x9e49('0x39')];_0x565baa+=0x1){_0x565baa>0x0&&(_0x546831+='\x20'+_0x43aed9['operator']+'\x20');_0x546831+=_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x63')]?_0x4eb711(_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x63')]):_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x64')]+'\x20'+_0x43aed9['rules'][_0x565baa][_0x9e49('0x65')]+(_0x40a7ae(_0x43aed9[_0x9e49('0x62')][_0x565baa][_0x9e49('0x65')])?'\x20'+_0x43aed9[_0x9e49('0x62')][_0x565baa]['value']:'');}return _0x546831+')';};var _0x33205c={'where':{'id':_0x553ceb[_0x9e49('0x46')]['id']}},_0x35103b,_0x336f0e,_0x2bbc04,_0x1c97b5,_0x2b6a34;_0x33205c=_['merge']({},_0x33205c,_0x553ceb[_0x9e49('0x41')]);return db[_0x9e49('0x2d')][_0x9e49('0x47')](_0x33205c)['then'](function(_0xf95d7e){if(_0xf95d7e){_0x35103b=_0xf95d7e;return _0xf95d7e[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x5e2822){if(_0x5e2822){if(!_0x5e2822[_0x9e49('0x39')]){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))](_0x9e49('0x69'),0x193);}_0x336f0e=_0x5e2822;return db[_0x9e49('0x6a')][_0x9e49('0x6b')]({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x76880f){if(_0x76880f){_0x2bbc04=_[_0x9e49('0x6c')](_0x76880f,'id');var _0x1c2552;var _0x3b8abb=squel[_0x9e49('0x6d')]();_0x3b8abb[_0x9e49('0x6e')](_0x35103b[_0x9e49('0x6f')]);for(var _0x7b878=0x0;_0x7b878<_0x336f0e[_0x9e49('0x39')];_0x7b878+=0x1){_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x70')]?_0x2bbc04[_0x336f0e[_0x7b878]['MetricId']][_0x9e49('0x71')]:_0x336f0e[_0x7b878]['field'];_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x72')]?_[_0x9e49('0x73')](_0x4b85b3[_0x336f0e[_0x7b878][_0x9e49('0x72')]],'%s',_0x1c2552):_0x1c2552;_0x1c2552=_0x336f0e[_0x7b878][_0x9e49('0x74')]?_['replace'](_0x44b611[_0x336f0e[_0x7b878][_0x9e49('0x74')]],'%s',_0x1c2552):_0x1c2552;if(_0x336f0e[_0x7b878]['groupBy']){_0x3b8abb[_0x9e49('0x63')](_0x1c2552);}_0x336f0e[_0x7b878][_0x9e49('0x75')]&&_0x3b8abb['order'](_0x1c2552,_0x336f0e[_0x7b878][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3b8abb[_0x9e49('0x64')](_0x1c2552,_0x336f0e[_0x7b878][_0x9e49('0x77')]||_0x1c2552);}if(_0x35103b[_0x9e49('0x78')]){_0x35103b['joins']=JSON[_0x9e49('0x79')](_0x35103b[_0x9e49('0x78')]);for(var _0x37ec11=0x0;_0x37ec11<_0x35103b[_0x9e49('0x78')][_0x9e49('0x39')];_0x37ec11+=0x1){if(_0x35103b['joins'][_0x37ec11][_0x9e49('0x30')]&&_[_0x9e49('0x60')](_0x64506d,_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x30')])&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7a')]&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7b')]&&_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7c')]){_0x3b8abb[_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x30')]](_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7b')],null,util[_0x9e49('0x74')](_0x9e49('0x7d'),_0x35103b[_0x9e49('0x6f')],_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7a')],_0x35103b[_0x9e49('0x78')][_0x37ec11]['foreignTable'],_0x35103b[_0x9e49('0x78')][_0x37ec11][_0x9e49('0x7c')]));}}}if(_0x35103b[_0x9e49('0x7e')]){_0x35103b['conditions']=JSON[_0x9e49('0x79')](_0x35103b[_0x9e49('0x7e')]);_0x3b8abb[_0x9e49('0x3e')](_0x4eb711(_0x35103b['conditions'][_0x9e49('0x63')]));}_0x2b6a34=_0x3b8abb[_0x9e49('0x7f')]();_0x3b8abb[_0x9e49('0x1c')](_0x1c5a0c);_0x3b8abb[_0x9e49('0x1e')](0x0);logger['debug'](_0x9e49('0x80'),_0x3b8abb[_0x9e49('0x81')]());return dbH['sequelize'][_0x9e49('0x32')](_0x3b8abb[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]});}})[_0x9e49('0x24')](respondWithResult(_0x39eb6f,null))[_0x9e49('0x44')](handleError(_0x39eb6f,null));};function runReport(_0x398ed9,_0x1cf6d9,_0x103cb3){var _0x24eaef=_0x1cf6d9[_0x9e49('0x29')];var _0x171058=0xa;var _0x231ed2=['join',_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x2ea710={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':_0x9e49('0x85'),'MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':_0x9e49('0x86'),'GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x58d1cc={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':_0x9e49('0x87'),'HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x1c8637=function(_0x498c73){return!_[_0x9e49('0x60')]([_0x9e49('0x88'),_0x9e49('0x89'),_0x9e49('0x8a'),_0x9e49('0x61')],_0x498c73);};var _0x4b43a8=function(_0x19de02){if(!_0x19de02||!_0x19de02[_0x9e49('0x62')][_0x9e49('0x39')]){return'';}for(var _0x3c3fbd='(',_0x5c75ec=0x0;_0x5c75ec<_0x19de02[_0x9e49('0x62')][_0x9e49('0x39')];_0x5c75ec+=0x1){_0x5c75ec>0x0&&(_0x3c3fbd+='\x20'+_0x19de02[_0x9e49('0x8b')]+'\x20');_0x3c3fbd+=_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x63')]?_0x4b43a8(_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x63')]):_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x64')]+'\x20'+_0x19de02[_0x9e49('0x62')][_0x5c75ec]['condition']+(_0x1c8637(_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x65')])?'\x20'+_0x19de02[_0x9e49('0x62')][_0x5c75ec][_0x9e49('0x8c')]:'');}return _0x3c3fbd+')';};var _0x311cb5={'where':{'id':_0x398ed9['id']}},_0x19b2e4,_0x6c03bb,_0x24847b,_0x58859e,_0x2a777a;_0x311cb5=_[_0x9e49('0x3f')]({},_0x311cb5,_0x103cb3);return db['AnalyticCustomReport']['find'](_0x311cb5)[_0x9e49('0x24')](function(_0x330c1f){if(_0x330c1f){_0x19b2e4=_0x330c1f;return _0x330c1f[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x6d9bae){if(_0x6d9bae){if(!_0x6d9bae[_0x9e49('0x39')]){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x6c03bb=_0x6d9bae;return db[_0x9e49('0x6a')][_0x9e49('0x6b')]({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x5e4f80){if(_0x5e4f80){_0x24847b=_[_0x9e49('0x6c')](_0x5e4f80,'id');var _0x4d2356;var _0x3f6fe4=squel['select']();_0x3f6fe4[_0x9e49('0x6e')](_0x19b2e4[_0x9e49('0x6f')]);for(var _0x18b770=0x0;_0x18b770<_0x6c03bb[_0x9e49('0x39')];_0x18b770+=0x1){_0x4d2356=_0x6c03bb[_0x18b770][_0x9e49('0x70')]?_0x24847b[_0x6c03bb[_0x18b770][_0x9e49('0x70')]]['metric']:_0x6c03bb[_0x18b770][_0x9e49('0x64')];_0x4d2356=_0x6c03bb[_0x18b770]['function']?_[_0x9e49('0x73')](_0x2ea710[_0x6c03bb[_0x18b770][_0x9e49('0x72')]],'%s',_0x4d2356):_0x4d2356;_0x4d2356=_0x6c03bb[_0x18b770][_0x9e49('0x74')]?_[_0x9e49('0x73')](_0x58d1cc[_0x6c03bb[_0x18b770][_0x9e49('0x74')]],'%s',_0x4d2356):_0x4d2356;if(_0x6c03bb[_0x18b770][_0x9e49('0x8d')]){_0x3f6fe4[_0x9e49('0x63')](_0x4d2356);}_0x6c03bb[_0x18b770][_0x9e49('0x75')]&&_0x3f6fe4[_0x9e49('0x8e')](_0x4d2356,_0x6c03bb[_0x18b770][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3f6fe4[_0x9e49('0x64')](_0x4d2356,_0x6c03bb[_0x18b770]['alias']||_0x4d2356);}if(_0x19b2e4['joins']){_0x19b2e4[_0x9e49('0x78')]=JSON['parse'](_0x19b2e4[_0x9e49('0x78')]);for(var _0x107682=0x0;_0x107682<_0x19b2e4['joins'][_0x9e49('0x39')];_0x107682+=0x1){if(_0x19b2e4[_0x9e49('0x78')][_0x107682]['type']&&_['includes'](_0x231ed2,_0x19b2e4['joins'][_0x107682][_0x9e49('0x30')])&&_0x19b2e4['joins'][_0x107682]['parentKey']&&_0x19b2e4[_0x9e49('0x78')][_0x107682]['foreignTable']&&_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7c')]){_0x3f6fe4[_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x30')]](_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7b')],null,util[_0x9e49('0x74')](_0x9e49('0x7d'),_0x19b2e4['table'],_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7a')],_0x19b2e4[_0x9e49('0x78')][_0x107682][_0x9e49('0x7b')],_0x19b2e4['joins'][_0x107682][_0x9e49('0x7c')]));}}}if(_0x19b2e4[_0x9e49('0x7e')]){_0x19b2e4[_0x9e49('0x7e')]=JSON[_0x9e49('0x79')](_0x19b2e4['conditions']);_0x3f6fe4[_0x9e49('0x3e')](_0x4b43a8(_0x19b2e4[_0x9e49('0x7e')][_0x9e49('0x63')]));}_0x2a777a=_0x3f6fe4['clone']();_0x3f6fe4[_0x9e49('0x1c')](_0x171058);_0x3f6fe4[_0x9e49('0x1e')](0x0);return;}})[_0x9e49('0x24')](function(){if(_0x1cf6d9['output']===_0x9e49('0x8f')){return null;}var _0x2ce733=_[_0x9e49('0x3f')](_0x1cf6d9,{'name':_0x1cf6d9[_0x9e49('0x90')]||_0x1cf6d9[_0x9e49('0x29')]||_0x19b2e4['name'],'basename':_0x24eaef,'savename':util[_0x9e49('0x74')](_0x9e49('0x91'),_0x1cf6d9[_0x9e49('0x29')]||_0x19b2e4[_0x9e49('0x29')],require(_0x9e49('0x92'))['generate'](0x4),_0x1cf6d9[_0x9e49('0x93')]||'csv'),'reportId':_0x19b2e4['id'],'reportType':'custom'});return db[_0x9e49('0x94')][_0x9e49('0x48')](_0x2ce733,{'raw':!![]});})['then'](function(_0x2c0bda){if(_0x19b2e4['table']===_0x9e49('0x95')){_0x2a777a['where'](_0x19b2e4[_0x9e49('0x6f')]+_0x9e49('0x96'),_0x1cf6d9[_0x9e49('0x97')],_0x1cf6d9[_0x9e49('0x98')]);}else{_0x2a777a['where'](_0x19b2e4[_0x9e49('0x6f')]+_0x9e49('0x99'),_0x1cf6d9['startDate'],_0x1cf6d9[_0x9e49('0x98')]);}if(_0x2c0bda){logger[_0x9e49('0x9a')](_0x9e49('0x9b'),_0x2a777a['toString']());require(_0x9e49('0x9c'))[_0x9e49('0x9d')](path[_0x9e49('0x52')](__dirname,_0x9e49('0x9e'),_0x2c0bda['output']),[_0x2c0bda['id'],_0x2a777a[_0x9e49('0x81')](),path['join'](__dirname,_0x9e49('0x9f'),_0x2c0bda[_0x9e49('0xa0')]),_0x24eaef]);return _0x2c0bda;}else{var _0x5bbae5=squel[_0x9e49('0x6d')]();_0x5bbae5[_0x9e49('0x6e')]('('+_0x2a777a['toString']()+')','countTable');_0x5bbae5[_0x9e49('0x64')](_0x9e49('0xa1'),_0x9e49('0x1d'));_0x2a777a[_0x9e49('0x1c')](_0x1cf6d9['limit']||_0x171058);_0x2a777a[_0x9e49('0x1e')](_0x1cf6d9[_0x9e49('0x1e')]||0x0);return dbH[_0x9e49('0x82')][_0x9e49('0x32')](_0x5bbae5[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]})['then'](function(_0x3b7673){if(!_0x3b7673[_0x9e49('0x39')]){_0x58859e=0x0;}else{_0x58859e=_0x3b7673[0x0][_0x9e49('0x1d')]||0x0;}return dbH['sequelize'][_0x9e49('0x32')](_0x2a777a[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')]['SELECT']});})[_0x9e49('0x24')](function(_0xbde454){return{'rows':_0xbde454||[],'count':_0x58859e};});}});}exports[_0x9e49('0xa2')]=function(_0x14374b,_0x106217){return runReport(_0x14374b[_0x9e49('0x46')],_0x14374b[_0x9e49('0x32')],_0x14374b[_0x9e49('0x41')])[_0x9e49('0x24')](respondWithResult(_0x106217,null))[_0x9e49('0x44')](handleError(_0x106217,null));};exports[_0x9e49('0xa3')]=runReport;exports['query']=function(_0x4887ad,_0x1100f1){var _0x1662ce=0xa;var _0x5e770f=[_0x9e49('0x52'),_0x9e49('0x53'),_0x9e49('0x54'),_0x9e49('0x55')];var _0x35daf6={'SUM':_0x9e49('0x56'),'COUNT':_0x9e49('0x57'),'COUNT DISTINCT':_0x9e49('0x85'),'MAX':'MAX(%s)','MIN':_0x9e49('0x58'),'AVG':_0x9e49('0x59'),'GROUP_CONCAT':_0x9e49('0x86'),'GROUP_CONCAT ASC':_0x9e49('0x5a'),'GROUP_CONCAT DESC':_0x9e49('0x5b')};var _0xfc8c44={'SEC_TO_TIME':_0x9e49('0x5c'),'DATE':_0x9e49('0x87'),'HOUR':_0x9e49('0x5d'),'ROUND':_0x9e49('0x5e'),'UNIX_TIMESTAMP':_0x9e49('0x5f')};var _0x395f04=function(_0x2c5c4b){return!_['includes'](['IS\x20NULL',_0x9e49('0x89'),_0x9e49('0x8a'),_0x9e49('0x61')],_0x2c5c4b);};var _0x2711d8=function(_0x255be7){if(!_0x255be7||!_0x255be7[_0x9e49('0x62')]['length']){return'';}for(var _0x4d2372='(',_0x48600b=0x0;_0x48600b<_0x255be7[_0x9e49('0x62')]['length'];_0x48600b+=0x1){_0x48600b>0x0&&(_0x4d2372+='\x20'+_0x255be7[_0x9e49('0x8b')]+'\x20');_0x4d2372+=_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x63')]?_0x2711d8(_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x63')]):_0x255be7[_0x9e49('0x62')][_0x48600b]['field']+'\x20'+_0x255be7['rules'][_0x48600b][_0x9e49('0x65')]+(_0x395f04(_0x255be7[_0x9e49('0x62')][_0x48600b][_0x9e49('0x65')])?'\x20'+_0x255be7['rules'][_0x48600b][_0x9e49('0x8c')]:'');}return _0x4d2372+')';};var _0xd84b46={'where':{'id':_0x4887ad['params']['id']}},_0x5b1375,_0x2b0a9e,_0x123911,_0x58877f,_0x2c0404;_0xd84b46=_[_0x9e49('0x3f')]({},_0xd84b46,_0x4887ad[_0x9e49('0x41')]);return db[_0x9e49('0x2d')]['find'](_0xd84b46)[_0x9e49('0x24')](function(_0x2d9522){if(_0x2d9522){_0x5b1375=_0x2d9522;return _0x2d9522[_0x9e49('0x66')]();}return null;})[_0x9e49('0x24')](function(_0x4643a0){if(_0x4643a0){if(!_0x4643a0['length']){throw new db[(_0x9e49('0x67'))][(_0x9e49('0x68'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2b0a9e=_0x4643a0;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x9e49('0x24')](function(_0x2d7b6c){if(_0x2d7b6c){_0x123911=_[_0x9e49('0x6c')](_0x2d7b6c,'id');var _0x5ecfa8;var _0x3a4d71=squel['select']();_0x3a4d71[_0x9e49('0x6e')](_0x5b1375['table']);for(var _0x2393d2=0x0;_0x2393d2<_0x2b0a9e[_0x9e49('0x39')];_0x2393d2+=0x1){_0x5ecfa8=_0x2b0a9e[_0x2393d2]['MetricId']?_0x123911[_0x2b0a9e[_0x2393d2][_0x9e49('0x70')]][_0x9e49('0x71')]:_0x2b0a9e[_0x2393d2]['field'];_0x5ecfa8=_0x2b0a9e[_0x2393d2][_0x9e49('0x72')]?_[_0x9e49('0x73')](_0x35daf6[_0x2b0a9e[_0x2393d2]['function']],'%s',_0x5ecfa8):_0x5ecfa8;_0x5ecfa8=_0x2b0a9e[_0x2393d2]['format']?_[_0x9e49('0x73')](_0xfc8c44[_0x2b0a9e[_0x2393d2][_0x9e49('0x74')]],'%s',_0x5ecfa8):_0x5ecfa8;if(_0x2b0a9e[_0x2393d2]['groupBy']){_0x3a4d71['group'](_0x5ecfa8);}_0x2b0a9e[_0x2393d2][_0x9e49('0x75')]&&_0x3a4d71[_0x9e49('0x8e')](_0x5ecfa8,_0x2b0a9e[_0x2393d2][_0x9e49('0x75')]===_0x9e49('0x76')?![]:!![]);_0x3a4d71[_0x9e49('0x64')](_0x5ecfa8,_0x2b0a9e[_0x2393d2]['alias']||_0x5ecfa8);}if(_0x5b1375['joins']){_0x5b1375['joins']=JSON['parse'](_0x5b1375[_0x9e49('0x78')]);for(var _0x1f49d3=0x0;_0x1f49d3<_0x5b1375[_0x9e49('0x78')][_0x9e49('0x39')];_0x1f49d3+=0x1){if(_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x30')]&&_['includes'](_0x5e770f,_0x5b1375[_0x9e49('0x78')][_0x1f49d3]['type'])&&_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7a')]&&_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7b')]&&_0x5b1375['joins'][_0x1f49d3][_0x9e49('0x7c')]){_0x3a4d71[_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x30')]](_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7b')],null,util[_0x9e49('0x74')]('%s.%s\x20=\x20%s.%s',_0x5b1375[_0x9e49('0x6f')],_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7a')],_0x5b1375[_0x9e49('0x78')][_0x1f49d3]['foreignTable'],_0x5b1375[_0x9e49('0x78')][_0x1f49d3][_0x9e49('0x7c')]));}}}if(_0x5b1375[_0x9e49('0x7e')]){_0x5b1375['conditions']=JSON[_0x9e49('0x79')](_0x5b1375[_0x9e49('0x7e')]);_0x3a4d71[_0x9e49('0x3e')](_0x2711d8(_0x5b1375[_0x9e49('0x7e')][_0x9e49('0x63')]));}_0x2c0404=_0x3a4d71['clone']();_0x3a4d71[_0x9e49('0x1c')](_0x1662ce);_0x3a4d71['offset'](0x0);logger['debug'](_0x9e49('0x80'),_0x3a4d71[_0x9e49('0x81')]());return dbH[_0x9e49('0x82')]['query'](_0x3a4d71[_0x9e49('0x81')](),{'type':dbH[_0x9e49('0x82')][_0x9e49('0x83')][_0x9e49('0x84')]});}})[_0x9e49('0x24')](function(){return{'sql':_0x2c0404[_0x9e49('0x81')]()};})[_0x9e49('0x24')](respondWithResult(_0x1100f1,null))['catch'](handleError(_0x1100f1,null));};
\ No newline at end of file
+var _0x9f7b=['../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','name','send','map','AnalyticCustomReport','fieldName','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','filters','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','length','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','debug','toString','sequelize','QueryTypes','SELECT','MAX(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','ValidationErrorItem','DESC','parse','output','fullPath','%s-%s.%s','randomstring','generate','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','../../components/export/','../../files/reports','COUNT(*)','run','getFields','Limited\x20Query:','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment'];(function(_0x3df7d0,_0x529396){var _0x30d2a2=function(_0x1677a3){while(--_0x1677a3){_0x3df7d0['push'](_0x3df7d0['shift']());}};_0x30d2a2(++_0x529396);}(_0x9f7b,0x12e));var _0xb9f7=function(_0x295ea2,_0x58f259){_0x295ea2=_0x295ea2-0x0;var _0x113926=_0x9f7b[_0x295ea2];return _0x113926;};'use strict';var emlformat=require(_0xb9f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb9f7('0x1'));var jsonpatch=require(_0xb9f7('0x2'));var rp=require('request-promise');var moment=require(_0xb9f7('0x3'));var BPromise=require(_0xb9f7('0x4'));var Mustache=require(_0xb9f7('0x5'));var util=require(_0xb9f7('0x6'));var path=require(_0xb9f7('0x7'));var sox=require('sox');var csv=require(_0xb9f7('0x8'));var ejs=require(_0xb9f7('0x9'));var fs=require('fs');var fs_extra=require(_0xb9f7('0xa'));var _=require(_0xb9f7('0xb'));var squel=require('squel');var crypto=require(_0xb9f7('0xc'));var jsforce=require(_0xb9f7('0xd'));var deskjs=require(_0xb9f7('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb9f7('0xf'));var Papa=require('papaparse');var Redis=require(_0xb9f7('0x10'));var authService=require(_0xb9f7('0x11'));var qs=require(_0xb9f7('0x12'));var as=require(_0xb9f7('0x13'));var hardwareService=require(_0xb9f7('0x14'));var logger=require(_0xb9f7('0x15'))(_0xb9f7('0x16'));var utils=require('../../config/utils');var config=require(_0xb9f7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xb9f7('0x18'))['db'];var dbH=require('../../mysqldb')[_0xb9f7('0x19')];function respondWithStatusCode(_0x7396cf,_0x35ce16){_0x35ce16=_0x35ce16||0xcc;return function(_0x32ed4b){if(_0x32ed4b){return _0x7396cf[_0xb9f7('0x1a')](_0x35ce16);}return _0x7396cf[_0xb9f7('0x1b')](_0x35ce16)[_0xb9f7('0x1c')]();};}function respondWithResult(_0x4fc714,_0xfe1ad){_0xfe1ad=_0xfe1ad||0xc8;return function(_0x4b8c27){if(_0x4b8c27){return _0x4fc714[_0xb9f7('0x1b')](_0xfe1ad)[_0xb9f7('0x1d')](_0x4b8c27);}};}function respondWithFilteredResult(_0x58fa10,_0x5ed592){return function(_0x49f81c){if(_0x49f81c){var _0x3280a8=typeof _0x5ed592[_0xb9f7('0x1e')]==='undefined'&&typeof _0x5ed592['limit']===_0xb9f7('0x1f');var _0x3b536d=_0x49f81c[_0xb9f7('0x20')];var _0x3b3a2e=_0x3280a8?0x0:_0x5ed592[_0xb9f7('0x1e')];var _0x2d2475=_0x3280a8?_0x49f81c[_0xb9f7('0x20')]:_0x5ed592[_0xb9f7('0x1e')]+_0x5ed592[_0xb9f7('0x21')];var _0x5d8e12;if(_0x2d2475>=_0x3b536d){_0x2d2475=_0x3b536d;_0x5d8e12=0xc8;}else{_0x5d8e12=0xce;}_0x58fa10[_0xb9f7('0x1b')](_0x5d8e12);return _0x58fa10[_0xb9f7('0x22')](_0xb9f7('0x23'),_0x3b3a2e+'-'+_0x2d2475+'/'+_0x3b536d)[_0xb9f7('0x1d')](_0x49f81c);}return null;};}function patchUpdates(_0x420b59){return function(_0x27e29a){try{jsonpatch[_0xb9f7('0x24')](_0x27e29a,_0x420b59,!![]);}catch(_0x29ff80){return BPromise[_0xb9f7('0x25')](_0x29ff80);}return _0x27e29a[_0xb9f7('0x26')]();};}function saveUpdates(_0x207453,_0x52ccf2){return function(_0x1e3629){if(_0x1e3629){return _0x1e3629[_0xb9f7('0x27')](_0x207453)[_0xb9f7('0x28')](function(_0x38d321){return _0x38d321;});}return null;};}function removeEntity(_0x58a003,_0x2585bb){return function(_0x520d51){if(_0x520d51){return _0x520d51[_0xb9f7('0x29')]()[_0xb9f7('0x28')](function(){var _0x223e1c=_0x520d51[_0xb9f7('0x2a')]({'plain':!![]});var _0x316d9a=_0xb9f7('0x2b');return db[_0xb9f7('0x2c')]['destroy']({'where':{'type':_0x316d9a,'resourceId':_0x223e1c['id']}})[_0xb9f7('0x28')](function(){return _0x520d51;});})['then'](function(){_0x58a003['status'](0xcc)[_0xb9f7('0x1c')]();});}};}function handleEntityNotFound(_0x367730,_0x1de22c){return function(_0x5647a4){if(!_0x5647a4){_0x367730[_0xb9f7('0x1a')](0x194);}return _0x5647a4;};}function handleError(_0x2b0431,_0x407c20){_0x407c20=_0x407c20||0x1f4;return function(_0x5e1db0){logger['error'](_0x5e1db0['stack']);if(_0x5e1db0[_0xb9f7('0x2d')]){delete _0x5e1db0[_0xb9f7('0x2d')];}_0x2b0431[_0xb9f7('0x1b')](_0x407c20)[_0xb9f7('0x2e')](_0x5e1db0);};}exports['index']=function(_0x41cb47,_0x45446d){var _0x2a331c={},_0x1caaef={},_0x3eed94={'count':0x0,'rows':[]};var _0x3e450e=_[_0xb9f7('0x2f')](db[_0xb9f7('0x30')]['rawAttributes'],function(_0x4fca8e){return{'name':_0x4fca8e[_0xb9f7('0x31')],'type':_0x4fca8e['type']['key']};});_0x1caaef[_0xb9f7('0x32')]=_[_0xb9f7('0x2f')](_0x3e450e,_0xb9f7('0x2d'));_0x1caaef[_0xb9f7('0x33')]=_[_0xb9f7('0x34')](_0x41cb47['query']);_0x1caaef['filters']=_[_0xb9f7('0x35')](_0x1caaef[_0xb9f7('0x32')],_0x1caaef[_0xb9f7('0x33')]);_0x2a331c[_0xb9f7('0x36')]=_[_0xb9f7('0x35')](_0x1caaef[_0xb9f7('0x32')],qs[_0xb9f7('0x37')](_0x41cb47[_0xb9f7('0x33')][_0xb9f7('0x37')]));_0x2a331c[_0xb9f7('0x36')]=_0x2a331c[_0xb9f7('0x36')]['length']?_0x2a331c['attributes']:_0x1caaef['model'];if(!_0x41cb47[_0xb9f7('0x33')][_0xb9f7('0x38')]('nolimit')){_0x2a331c['limit']=qs[_0xb9f7('0x21')](_0x41cb47[_0xb9f7('0x33')]['limit']);_0x2a331c['offset']=qs[_0xb9f7('0x1e')](_0x41cb47['query'][_0xb9f7('0x1e')]);}_0x2a331c[_0xb9f7('0x39')]=qs[_0xb9f7('0x3a')](_0x41cb47[_0xb9f7('0x33')][_0xb9f7('0x3a')]);_0x2a331c[_0xb9f7('0x3b')]=qs['filters'](_[_0xb9f7('0x3c')](_0x41cb47[_0xb9f7('0x33')],_0x1caaef['filters']),_0x3e450e);if(_0x41cb47[_0xb9f7('0x33')]['filter']){_0x2a331c[_0xb9f7('0x3b')]=_[_0xb9f7('0x3d')](_0x2a331c[_0xb9f7('0x3b')],{'$or':_[_0xb9f7('0x2f')](_0x3e450e,function(_0xd81203){if(_0xd81203[_0xb9f7('0x3e')]!==_0xb9f7('0x3f')){var _0x520829={};_0x520829[_0xd81203[_0xb9f7('0x2d')]]={'$like':'%'+_0x41cb47['query'][_0xb9f7('0x40')]+'%'};return _0x520829;}})});}_0x2a331c=_[_0xb9f7('0x3d')]({},_0x2a331c,_0x41cb47[_0xb9f7('0x41')]);var _0xc5ef44={'where':_0x2a331c[_0xb9f7('0x3b')]};return db['AnalyticCustomReport'][_0xb9f7('0x20')](_0xc5ef44)[_0xb9f7('0x28')](function(_0x1a8c92){_0x3eed94[_0xb9f7('0x20')]=_0x1a8c92;if(_0x41cb47['query'][_0xb9f7('0x42')]){_0x2a331c[_0xb9f7('0x43')]=[{'all':!![]}];}return db[_0xb9f7('0x30')][_0xb9f7('0x44')](_0x2a331c);})['then'](function(_0x349b1e){_0x3eed94[_0xb9f7('0x45')]=_0x349b1e;return _0x3eed94;})[_0xb9f7('0x28')](respondWithFilteredResult(_0x45446d,_0x2a331c))[_0xb9f7('0x46')](handleError(_0x45446d,null));};exports[_0xb9f7('0x47')]=function(_0x234c1e,_0x2053d4){var _0x5031e7={'raw':![],'where':{'id':_0x234c1e[_0xb9f7('0x48')]['id']}},_0x62d66e={};_0x62d66e['model']=_[_0xb9f7('0x34')](db[_0xb9f7('0x30')]['rawAttributes']);_0x62d66e['query']=_[_0xb9f7('0x34')](_0x234c1e[_0xb9f7('0x33')]);_0x62d66e[_0xb9f7('0x49')]=_['intersection'](_0x62d66e[_0xb9f7('0x32')],_0x62d66e[_0xb9f7('0x33')]);_0x5031e7['attributes']=_['intersection'](_0x62d66e['model'],qs[_0xb9f7('0x37')](_0x234c1e['query'][_0xb9f7('0x37')]));_0x5031e7['attributes']=_0x5031e7[_0xb9f7('0x36')]['length']?_0x5031e7['attributes']:_0x62d66e[_0xb9f7('0x32')];if(_0x234c1e[_0xb9f7('0x33')][_0xb9f7('0x42')]){_0x5031e7[_0xb9f7('0x43')]=[{'all':!![]}];}_0x5031e7=_[_0xb9f7('0x3d')]({},_0x5031e7,_0x234c1e['options']);return db[_0xb9f7('0x30')][_0xb9f7('0x4a')](_0x5031e7)[_0xb9f7('0x28')](handleEntityNotFound(_0x2053d4,null))[_0xb9f7('0x28')](respondWithResult(_0x2053d4,null))[_0xb9f7('0x46')](handleError(_0x2053d4,null));};exports[_0xb9f7('0x4b')]=function(_0x126a61,_0x35500d){return db[_0xb9f7('0x30')][_0xb9f7('0x4b')](_0x126a61['body'],{})['then'](function(_0x3986c9){var _0x60edc1=_0x126a61['user'][_0xb9f7('0x2a')]({'plain':!![]});if(!_0x60edc1)throw new Error(_0xb9f7('0x4c'));if(_0x60edc1[_0xb9f7('0x4d')]==='user'){var _0x3bfbb2=_0x3986c9['get']({'plain':!![]});var _0x1200ec='Reports';return db[_0xb9f7('0x4e')][_0xb9f7('0x4a')]({'where':{'name':_0x1200ec,'userProfileId':_0x60edc1[_0xb9f7('0x4f')]},'raw':!![]})[_0xb9f7('0x28')](function(_0x5c71a4){if(_0x5c71a4&&_0x5c71a4[_0xb9f7('0x50')]===0x0){return db[_0xb9f7('0x2c')][_0xb9f7('0x4b')]({'name':_0x3bfbb2[_0xb9f7('0x2d')],'resourceId':_0x3bfbb2['id'],'type':_0xb9f7('0x2b'),'sectionId':_0x5c71a4['id']},{})['then'](function(){return _0x3986c9;});}else{return _0x3986c9;}})[_0xb9f7('0x46')](function(_0x2c1973){logger['error'](_0xb9f7('0x51'),_0x2c1973);throw _0x2c1973;});}return _0x3986c9;})[_0xb9f7('0x28')](respondWithResult(_0x35500d,0xc9))['catch'](handleError(_0x35500d,null));};exports[_0xb9f7('0x27')]=function(_0x5b8e1a,_0x13983b){if(_0x5b8e1a[_0xb9f7('0x52')]['id']){delete _0x5b8e1a[_0xb9f7('0x52')]['id'];}return db['AnalyticCustomReport'][_0xb9f7('0x4a')]({'where':{'id':_0x5b8e1a['params']['id']}})['then'](handleEntityNotFound(_0x13983b,null))[_0xb9f7('0x28')](saveUpdates(_0x5b8e1a[_0xb9f7('0x52')],null))['then'](respondWithResult(_0x13983b,null))['catch'](handleError(_0x13983b,null));};exports['destroy']=function(_0x492fb6,_0x1bd0d9){return db[_0xb9f7('0x30')]['find']({'where':{'id':_0x492fb6['params']['id']}})['then'](handleEntityNotFound(_0x1bd0d9,null))['then'](removeEntity(_0x1bd0d9,null))[_0xb9f7('0x46')](handleError(_0x1bd0d9,null));};exports['preview']=function(_0x422c1d,_0xe0288c){var _0x4460ff=0xa;var _0x216420=[_0xb9f7('0x53'),_0xb9f7('0x54'),_0xb9f7('0x55'),_0xb9f7('0x56')];var _0x12d59d={'SUM':_0xb9f7('0x57'),'COUNT':_0xb9f7('0x58'),'COUNT DISTINCT':_0xb9f7('0x59'),'MAX':'MAX(%s)','MIN':_0xb9f7('0x5a'),'AVG':_0xb9f7('0x5b'),'GROUP_CONCAT':_0xb9f7('0x5c'),'GROUP_CONCAT ASC':_0xb9f7('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x428199={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xb9f7('0x5e'),'HOUR':_0xb9f7('0x5f'),'ROUND':_0xb9f7('0x60'),'UNIX_TIMESTAMP':_0xb9f7('0x61')};var _0x5a6de1=function(_0x3587ca){return!_[_0xb9f7('0x62')]([_0xb9f7('0x63'),_0xb9f7('0x64'),_0xb9f7('0x65'),_0xb9f7('0x66')],_0x3587ca);};var _0x37d7b6=function(_0xf96d47){if(!_0xf96d47||!_0xf96d47[_0xb9f7('0x67')]['length']){return'';}for(var _0x3e701a='(',_0x2e8299=0x0;_0x2e8299<_0xf96d47[_0xb9f7('0x67')]['length'];_0x2e8299+=0x1){_0x2e8299>0x0&&(_0x3e701a+='\x20'+_0xf96d47[_0xb9f7('0x68')]+'\x20');_0x3e701a+=_0xf96d47['rules'][_0x2e8299][_0xb9f7('0x69')]?_0x37d7b6(_0xf96d47['rules'][_0x2e8299]['group']):_0xf96d47[_0xb9f7('0x67')][_0x2e8299][_0xb9f7('0x6a')]+'\x20'+_0xf96d47[_0xb9f7('0x67')][_0x2e8299][_0xb9f7('0x6b')]+(_0x5a6de1(_0xf96d47[_0xb9f7('0x67')][_0x2e8299][_0xb9f7('0x6b')])?'\x20'+_0xf96d47['rules'][_0x2e8299][_0xb9f7('0x6c')]:'');}return _0x3e701a+')';};var _0x1d3b43={'where':{'id':_0x422c1d[_0xb9f7('0x48')]['id']}},_0x1eac35,_0x4bcf1f,_0x5acd9a,_0x547798,_0x9fbd32;_0x1d3b43=_[_0xb9f7('0x3d')]({},_0x1d3b43,_0x422c1d[_0xb9f7('0x41')]);return db[_0xb9f7('0x30')][_0xb9f7('0x4a')](_0x1d3b43)[_0xb9f7('0x28')](function(_0x1e34af){if(_0x1e34af){_0x1eac35=_0x1e34af;return _0x1e34af['getFields']();}return null;})[_0xb9f7('0x28')](function(_0x33feee){if(_0x33feee){if(!_0x33feee[_0xb9f7('0x6d')]){throw new db[(_0xb9f7('0x6e'))]['ValidationErrorItem'](_0xb9f7('0x6f'),0x193);}_0x4bcf1f=_0x33feee;return db[_0xb9f7('0x70')][_0xb9f7('0x44')]({'raw':!![]});}return null;})[_0xb9f7('0x28')](function(_0x1a56b4){if(_0x1a56b4){_0x5acd9a=_[_0xb9f7('0x71')](_0x1a56b4,'id');var _0x42dedd;var _0x4eb147=squel[_0xb9f7('0x72')]();_0x4eb147[_0xb9f7('0x73')](_0x1eac35[_0xb9f7('0x74')]);for(var _0x1ea06a=0x0;_0x1ea06a<_0x4bcf1f[_0xb9f7('0x6d')];_0x1ea06a+=0x1){_0x42dedd=_0x4bcf1f[_0x1ea06a][_0xb9f7('0x75')]?_0x5acd9a[_0x4bcf1f[_0x1ea06a][_0xb9f7('0x75')]][_0xb9f7('0x76')]:_0x4bcf1f[_0x1ea06a][_0xb9f7('0x6a')];_0x42dedd=_0x4bcf1f[_0x1ea06a][_0xb9f7('0x77')]?_[_0xb9f7('0x78')](_0x12d59d[_0x4bcf1f[_0x1ea06a][_0xb9f7('0x77')]],'%s',_0x42dedd):_0x42dedd;_0x42dedd=_0x4bcf1f[_0x1ea06a][_0xb9f7('0x79')]?_[_0xb9f7('0x78')](_0x428199[_0x4bcf1f[_0x1ea06a][_0xb9f7('0x79')]],'%s',_0x42dedd):_0x42dedd;if(_0x4bcf1f[_0x1ea06a][_0xb9f7('0x7a')]){_0x4eb147['group'](_0x42dedd);}_0x4bcf1f[_0x1ea06a][_0xb9f7('0x7b')]&&_0x4eb147[_0xb9f7('0x39')](_0x42dedd,_0x4bcf1f[_0x1ea06a][_0xb9f7('0x7b')]==='DESC'?![]:!![]);_0x4eb147['field'](_0x42dedd,_0x4bcf1f[_0x1ea06a][_0xb9f7('0x7c')]||_0x42dedd);}if(_0x1eac35[_0xb9f7('0x7d')]){_0x1eac35[_0xb9f7('0x7d')]=JSON['parse'](_0x1eac35[_0xb9f7('0x7d')]);for(var _0x393c41=0x0;_0x393c41<_0x1eac35[_0xb9f7('0x7d')][_0xb9f7('0x6d')];_0x393c41+=0x1){if(_0x1eac35['joins'][_0x393c41][_0xb9f7('0x3e')]&&_[_0xb9f7('0x62')](_0x216420,_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x3e')])&&_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x7e')]&&_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x7f')]&&_0x1eac35[_0xb9f7('0x7d')][_0x393c41]['foreignKey']){_0x4eb147[_0x1eac35['joins'][_0x393c41][_0xb9f7('0x3e')]](_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x7f')],null,util['format'](_0xb9f7('0x80'),_0x1eac35['table'],_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x7e')],_0x1eac35[_0xb9f7('0x7d')][_0x393c41][_0xb9f7('0x7f')],_0x1eac35['joins'][_0x393c41][_0xb9f7('0x81')]));}}}if(_0x1eac35[_0xb9f7('0x82')]){_0x1eac35[_0xb9f7('0x82')]=JSON['parse'](_0x1eac35[_0xb9f7('0x82')]);_0x4eb147[_0xb9f7('0x3b')](_0x37d7b6(_0x1eac35[_0xb9f7('0x82')][_0xb9f7('0x69')]));}_0x9fbd32=_0x4eb147[_0xb9f7('0x83')]();_0x4eb147[_0xb9f7('0x21')](_0x4460ff);_0x4eb147[_0xb9f7('0x1e')](0x0);logger[_0xb9f7('0x84')]('Limited\x20Query:',_0x4eb147[_0xb9f7('0x85')]());return dbH[_0xb9f7('0x86')]['query'](_0x4eb147[_0xb9f7('0x85')](),{'type':dbH[_0xb9f7('0x86')][_0xb9f7('0x87')][_0xb9f7('0x88')]});}})[_0xb9f7('0x28')](respondWithResult(_0xe0288c,null))[_0xb9f7('0x46')](handleError(_0xe0288c,null));};function runReport(_0x2a25e6,_0x4f36c2,_0x137e3b){var _0x310423=_0x4f36c2[_0xb9f7('0x2d')];var _0x431751=0xa;var _0x57587b=[_0xb9f7('0x53'),_0xb9f7('0x54'),_0xb9f7('0x55'),_0xb9f7('0x56')];var _0x335818={'SUM':_0xb9f7('0x57'),'COUNT':_0xb9f7('0x58'),'COUNT DISTINCT':_0xb9f7('0x59'),'MAX':_0xb9f7('0x89'),'MIN':_0xb9f7('0x5a'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb9f7('0x5c'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb9f7('0x8a')};var _0xf7e886={'SEC_TO_TIME':_0xb9f7('0x8b'),'DATE':_0xb9f7('0x5e'),'HOUR':_0xb9f7('0x5f'),'ROUND':_0xb9f7('0x60'),'UNIX_TIMESTAMP':_0xb9f7('0x61')};var _0x50a305=function(_0x1e958f){return!_[_0xb9f7('0x62')]([_0xb9f7('0x63'),_0xb9f7('0x64'),_0xb9f7('0x65'),_0xb9f7('0x66')],_0x1e958f);};var _0x4e2948=function(_0x2a42c2){if(!_0x2a42c2||!_0x2a42c2[_0xb9f7('0x67')][_0xb9f7('0x6d')]){return'';}for(var _0x22add3='(',_0x37801a=0x0;_0x37801a<_0x2a42c2[_0xb9f7('0x67')][_0xb9f7('0x6d')];_0x37801a+=0x1){_0x37801a>0x0&&(_0x22add3+='\x20'+_0x2a42c2[_0xb9f7('0x68')]+'\x20');_0x22add3+=_0x2a42c2[_0xb9f7('0x67')][_0x37801a]['group']?_0x4e2948(_0x2a42c2[_0xb9f7('0x67')][_0x37801a][_0xb9f7('0x69')]):_0x2a42c2[_0xb9f7('0x67')][_0x37801a]['field']+'\x20'+_0x2a42c2[_0xb9f7('0x67')][_0x37801a]['condition']+(_0x50a305(_0x2a42c2['rules'][_0x37801a]['condition'])?'\x20'+_0x2a42c2[_0xb9f7('0x67')][_0x37801a]['value']:'');}return _0x22add3+')';};var _0x3dcf9c={'where':{'id':_0x2a25e6['id']}},_0x5c6342,_0xc2bd69,_0x283ca1,_0x14e8c8,_0xbab753;_0x3dcf9c=_[_0xb9f7('0x3d')]({},_0x3dcf9c,_0x137e3b);return db[_0xb9f7('0x30')][_0xb9f7('0x4a')](_0x3dcf9c)[_0xb9f7('0x28')](function(_0x555e6){if(_0x555e6){_0x5c6342=_0x555e6;return _0x555e6['getFields']();}return null;})[_0xb9f7('0x28')](function(_0x41afde){if(_0x41afde){if(!_0x41afde[_0xb9f7('0x6d')]){throw new db[(_0xb9f7('0x6e'))][(_0xb9f7('0x8c'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xc2bd69=_0x41afde;return db[_0xb9f7('0x70')][_0xb9f7('0x44')]({'raw':!![]});}return null;})[_0xb9f7('0x28')](function(_0x1011d1){if(_0x1011d1){_0x283ca1=_[_0xb9f7('0x71')](_0x1011d1,'id');var _0x57985f;var _0x410009=squel[_0xb9f7('0x72')]();_0x410009['from'](_0x5c6342[_0xb9f7('0x74')]);for(var _0x4fb9aa=0x0;_0x4fb9aa<_0xc2bd69[_0xb9f7('0x6d')];_0x4fb9aa+=0x1){_0x57985f=_0xc2bd69[_0x4fb9aa]['MetricId']?_0x283ca1[_0xc2bd69[_0x4fb9aa]['MetricId']][_0xb9f7('0x76')]:_0xc2bd69[_0x4fb9aa][_0xb9f7('0x6a')];_0x57985f=_0xc2bd69[_0x4fb9aa][_0xb9f7('0x77')]?_[_0xb9f7('0x78')](_0x335818[_0xc2bd69[_0x4fb9aa][_0xb9f7('0x77')]],'%s',_0x57985f):_0x57985f;_0x57985f=_0xc2bd69[_0x4fb9aa]['format']?_[_0xb9f7('0x78')](_0xf7e886[_0xc2bd69[_0x4fb9aa][_0xb9f7('0x79')]],'%s',_0x57985f):_0x57985f;if(_0xc2bd69[_0x4fb9aa][_0xb9f7('0x7a')]){_0x410009[_0xb9f7('0x69')](_0x57985f);}_0xc2bd69[_0x4fb9aa][_0xb9f7('0x7b')]&&_0x410009['order'](_0x57985f,_0xc2bd69[_0x4fb9aa][_0xb9f7('0x7b')]===_0xb9f7('0x8d')?![]:!![]);_0x410009[_0xb9f7('0x6a')](_0x57985f,_0xc2bd69[_0x4fb9aa][_0xb9f7('0x7c')]||_0x57985f);}if(_0x5c6342[_0xb9f7('0x7d')]){_0x5c6342[_0xb9f7('0x7d')]=JSON['parse'](_0x5c6342[_0xb9f7('0x7d')]);for(var _0x34492d=0x0;_0x34492d<_0x5c6342[_0xb9f7('0x7d')][_0xb9f7('0x6d')];_0x34492d+=0x1){if(_0x5c6342['joins'][_0x34492d][_0xb9f7('0x3e')]&&_[_0xb9f7('0x62')](_0x57587b,_0x5c6342[_0xb9f7('0x7d')][_0x34492d][_0xb9f7('0x3e')])&&_0x5c6342[_0xb9f7('0x7d')][_0x34492d]['parentKey']&&_0x5c6342[_0xb9f7('0x7d')][_0x34492d][_0xb9f7('0x7f')]&&_0x5c6342['joins'][_0x34492d][_0xb9f7('0x81')]){_0x410009[_0x5c6342[_0xb9f7('0x7d')][_0x34492d][_0xb9f7('0x3e')]](_0x5c6342[_0xb9f7('0x7d')][_0x34492d][_0xb9f7('0x7f')],null,util[_0xb9f7('0x79')]('%s.%s\x20=\x20%s.%s',_0x5c6342['table'],_0x5c6342[_0xb9f7('0x7d')][_0x34492d]['parentKey'],_0x5c6342['joins'][_0x34492d][_0xb9f7('0x7f')],_0x5c6342[_0xb9f7('0x7d')][_0x34492d][_0xb9f7('0x81')]));}}}if(_0x5c6342['conditions']){_0x5c6342[_0xb9f7('0x82')]=JSON[_0xb9f7('0x8e')](_0x5c6342['conditions']);_0x410009[_0xb9f7('0x3b')](_0x4e2948(_0x5c6342[_0xb9f7('0x82')]['group']));}_0xbab753=_0x410009['clone']();_0x410009['limit'](_0x431751);_0x410009[_0xb9f7('0x1e')](0x0);return;}})[_0xb9f7('0x28')](function(){if(_0x4f36c2[_0xb9f7('0x8f')]==='web'){return null;}var _0x483c97=_[_0xb9f7('0x3d')](_0x4f36c2,{'name':_0x4f36c2[_0xb9f7('0x90')]||_0x4f36c2[_0xb9f7('0x2d')]||_0x5c6342[_0xb9f7('0x2d')],'basename':_0x310423,'savename':util['format'](_0xb9f7('0x91'),_0x4f36c2[_0xb9f7('0x2d')]||_0x5c6342[_0xb9f7('0x2d')],require(_0xb9f7('0x92'))[_0xb9f7('0x93')](0x4),_0x4f36c2[_0xb9f7('0x8f')]||'csv'),'reportId':_0x5c6342['id'],'reportType':_0xb9f7('0x94')});return db[_0xb9f7('0x95')][_0xb9f7('0x4b')](_0x483c97,{'raw':!![]});})[_0xb9f7('0x28')](function(_0x2b0d5c){if(_0x5c6342[_0xb9f7('0x74')]==='cdr'){_0xbab753['where'](_0x5c6342[_0xb9f7('0x74')]+_0xb9f7('0x96'),_0x4f36c2[_0xb9f7('0x97')],_0x4f36c2[_0xb9f7('0x98')]);}else{_0xbab753[_0xb9f7('0x3b')](_0x5c6342['table']+_0xb9f7('0x99'),_0x4f36c2[_0xb9f7('0x97')],_0x4f36c2[_0xb9f7('0x98')]);}if(_0x2b0d5c){logger[_0xb9f7('0x9a')](_0xb9f7('0x9b'),_0xbab753[_0xb9f7('0x85')]());require('child_process')[_0xb9f7('0x9c')](path['join'](__dirname,_0xb9f7('0x9d'),_0x2b0d5c[_0xb9f7('0x8f')]),[_0x2b0d5c['id'],_0xbab753[_0xb9f7('0x85')](),path[_0xb9f7('0x53')](__dirname,_0xb9f7('0x9e'),_0x2b0d5c['savename']),_0x310423]);return _0x2b0d5c;}else{var _0x139338=squel[_0xb9f7('0x72')]();_0x139338[_0xb9f7('0x73')]('('+_0xbab753[_0xb9f7('0x85')]()+')','countTable');_0x139338[_0xb9f7('0x6a')](_0xb9f7('0x9f'),_0xb9f7('0x20'));_0xbab753[_0xb9f7('0x21')](_0x4f36c2[_0xb9f7('0x21')]||_0x431751);_0xbab753[_0xb9f7('0x1e')](_0x4f36c2[_0xb9f7('0x1e')]||0x0);return dbH[_0xb9f7('0x86')][_0xb9f7('0x33')](_0x139338[_0xb9f7('0x85')](),{'type':dbH[_0xb9f7('0x86')][_0xb9f7('0x87')][_0xb9f7('0x88')]})[_0xb9f7('0x28')](function(_0x45f539){if(!_0x45f539[_0xb9f7('0x6d')]){_0x14e8c8=0x0;}else{_0x14e8c8=_0x45f539[0x0][_0xb9f7('0x20')]||0x0;}return dbH[_0xb9f7('0x86')][_0xb9f7('0x33')](_0xbab753[_0xb9f7('0x85')](),{'type':dbH['sequelize']['QueryTypes']['SELECT']});})[_0xb9f7('0x28')](function(_0x1bd163){return{'rows':_0x1bd163||[],'count':_0x14e8c8};});}});}exports[_0xb9f7('0xa0')]=function(_0x7cddb5,_0x11c772){return runReport(_0x7cddb5[_0xb9f7('0x48')],_0x7cddb5[_0xb9f7('0x33')],_0x7cddb5[_0xb9f7('0x41')])[_0xb9f7('0x28')](respondWithResult(_0x11c772,null))[_0xb9f7('0x46')](handleError(_0x11c772,null));};exports['runReport']=runReport;exports[_0xb9f7('0x33')]=function(_0xdd8c5a,_0x3ba674){var _0x2283b1=0xa;var _0x1dad5a=[_0xb9f7('0x53'),_0xb9f7('0x54'),_0xb9f7('0x55'),_0xb9f7('0x56')];var _0x3450b2={'SUM':'SUM(%s)','COUNT':_0xb9f7('0x58'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xb9f7('0x89'),'MIN':_0xb9f7('0x5a'),'AVG':_0xb9f7('0x5b'),'GROUP_CONCAT':_0xb9f7('0x5c'),'GROUP_CONCAT ASC':_0xb9f7('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x71be8b={'SEC_TO_TIME':_0xb9f7('0x8b'),'DATE':_0xb9f7('0x5e'),'HOUR':_0xb9f7('0x5f'),'ROUND':_0xb9f7('0x60'),'UNIX_TIMESTAMP':_0xb9f7('0x61')};var _0x5c2c6a=function(_0x258f1b){return!_[_0xb9f7('0x62')](['IS\x20NULL',_0xb9f7('0x64'),_0xb9f7('0x65'),_0xb9f7('0x66')],_0x258f1b);};var _0x2d6ebc=function(_0x5676a6){if(!_0x5676a6||!_0x5676a6[_0xb9f7('0x67')][_0xb9f7('0x6d')]){return'';}for(var _0x16eada='(',_0x39e32b=0x0;_0x39e32b<_0x5676a6[_0xb9f7('0x67')]['length'];_0x39e32b+=0x1){_0x39e32b>0x0&&(_0x16eada+='\x20'+_0x5676a6[_0xb9f7('0x68')]+'\x20');_0x16eada+=_0x5676a6[_0xb9f7('0x67')][_0x39e32b]['group']?_0x2d6ebc(_0x5676a6[_0xb9f7('0x67')][_0x39e32b][_0xb9f7('0x69')]):_0x5676a6[_0xb9f7('0x67')][_0x39e32b][_0xb9f7('0x6a')]+'\x20'+_0x5676a6[_0xb9f7('0x67')][_0x39e32b][_0xb9f7('0x6b')]+(_0x5c2c6a(_0x5676a6['rules'][_0x39e32b][_0xb9f7('0x6b')])?'\x20'+_0x5676a6[_0xb9f7('0x67')][_0x39e32b][_0xb9f7('0x6c')]:'');}return _0x16eada+')';};var _0x1daa65={'where':{'id':_0xdd8c5a['params']['id']}},_0x507cc7,_0x1a8388,_0x35e092,_0x4ce276,_0x65b40c;_0x1daa65=_[_0xb9f7('0x3d')]({},_0x1daa65,_0xdd8c5a[_0xb9f7('0x41')]);return db[_0xb9f7('0x30')]['find'](_0x1daa65)[_0xb9f7('0x28')](function(_0x5cec5a){if(_0x5cec5a){_0x507cc7=_0x5cec5a;return _0x5cec5a[_0xb9f7('0xa1')]();}return null;})['then'](function(_0x2a6f9f){if(_0x2a6f9f){if(!_0x2a6f9f['length']){throw new db[(_0xb9f7('0x6e'))][(_0xb9f7('0x8c'))](_0xb9f7('0x6f'),0x193);}_0x1a8388=_0x2a6f9f;return db['AnalyticMetric'][_0xb9f7('0x44')]({'raw':!![]});}return null;})[_0xb9f7('0x28')](function(_0x424489){if(_0x424489){_0x35e092=_[_0xb9f7('0x71')](_0x424489,'id');var _0x3781d5;var _0x49b091=squel['select']();_0x49b091[_0xb9f7('0x73')](_0x507cc7[_0xb9f7('0x74')]);for(var _0x262552=0x0;_0x262552<_0x1a8388[_0xb9f7('0x6d')];_0x262552+=0x1){_0x3781d5=_0x1a8388[_0x262552]['MetricId']?_0x35e092[_0x1a8388[_0x262552][_0xb9f7('0x75')]][_0xb9f7('0x76')]:_0x1a8388[_0x262552]['field'];_0x3781d5=_0x1a8388[_0x262552][_0xb9f7('0x77')]?_[_0xb9f7('0x78')](_0x3450b2[_0x1a8388[_0x262552][_0xb9f7('0x77')]],'%s',_0x3781d5):_0x3781d5;_0x3781d5=_0x1a8388[_0x262552][_0xb9f7('0x79')]?_[_0xb9f7('0x78')](_0x71be8b[_0x1a8388[_0x262552][_0xb9f7('0x79')]],'%s',_0x3781d5):_0x3781d5;if(_0x1a8388[_0x262552][_0xb9f7('0x7a')]){_0x49b091['group'](_0x3781d5);}_0x1a8388[_0x262552][_0xb9f7('0x7b')]&&_0x49b091[_0xb9f7('0x39')](_0x3781d5,_0x1a8388[_0x262552][_0xb9f7('0x7b')]===_0xb9f7('0x8d')?![]:!![]);_0x49b091[_0xb9f7('0x6a')](_0x3781d5,_0x1a8388[_0x262552]['alias']||_0x3781d5);}if(_0x507cc7[_0xb9f7('0x7d')]){_0x507cc7['joins']=JSON[_0xb9f7('0x8e')](_0x507cc7[_0xb9f7('0x7d')]);for(var _0x1030b5=0x0;_0x1030b5<_0x507cc7[_0xb9f7('0x7d')]['length'];_0x1030b5+=0x1){if(_0x507cc7['joins'][_0x1030b5]['type']&&_[_0xb9f7('0x62')](_0x1dad5a,_0x507cc7['joins'][_0x1030b5]['type'])&&_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x7e')]&&_0x507cc7[_0xb9f7('0x7d')][_0x1030b5]['foreignTable']&&_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x81')]){_0x49b091[_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x3e')]](_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x507cc7[_0xb9f7('0x74')],_0x507cc7[_0xb9f7('0x7d')][_0x1030b5]['parentKey'],_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x7f')],_0x507cc7[_0xb9f7('0x7d')][_0x1030b5][_0xb9f7('0x81')]));}}}if(_0x507cc7[_0xb9f7('0x82')]){_0x507cc7[_0xb9f7('0x82')]=JSON[_0xb9f7('0x8e')](_0x507cc7[_0xb9f7('0x82')]);_0x49b091[_0xb9f7('0x3b')](_0x2d6ebc(_0x507cc7[_0xb9f7('0x82')][_0xb9f7('0x69')]));}_0x65b40c=_0x49b091['clone']();_0x49b091[_0xb9f7('0x21')](_0x2283b1);_0x49b091[_0xb9f7('0x1e')](0x0);logger[_0xb9f7('0x84')](_0xb9f7('0xa2'),_0x49b091[_0xb9f7('0x85')]());return dbH['sequelize']['query'](_0x49b091['toString'](),{'type':dbH['sequelize'][_0xb9f7('0x87')][_0xb9f7('0x88')]});}})['then'](function(){return{'sql':_0x65b40c['toString']()};})[_0xb9f7('0x28')](respondWithResult(_0x3ba674,null))[_0xb9f7('0x46')](handleError(_0x3ba674,null));};
\ No newline at end of file
index 41ef40d..d9e2fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb0=['AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x51b63c,_0x288c0b){var _0x3bb772=function(_0x546d23){while(--_0x546d23){_0x51b63c['push'](_0x51b63c['shift']());}};_0x3bb772(++_0x288c0b);}(_0xadb0,0x9e));var _0x0adb=function(_0x4a6b2d,_0x421473){_0x4a6b2d=_0x4a6b2d-0x0;var _0x16a388=_0xadb0[_0x4a6b2d];return _0x16a388;};'use strict';var _=require(_0x0adb('0x0'));var util=require(_0x0adb('0x1'));var logger=require(_0x0adb('0x2'))(_0x0adb('0x3'));var moment=require('moment');var BPromise=require(_0x0adb('0x4'));var rp=require(_0x0adb('0x5'));var fs=require('fs');var path=require(_0x0adb('0x6'));var rimraf=require(_0x0adb('0x7'));var config=require(_0x0adb('0x8'));var attributes=require(_0x0adb('0x9'));module[_0x0adb('0xa')]=function(_0x5b1c65,_0x22b754){return _0x5b1c65['define'](_0x0adb('0xb'),attributes,{'tableName':_0x0adb('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6df0=['request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','analytics_custom_reports','lodash','../../config/logger','api','bluebird'];(function(_0x4fa166,_0x58b7fb){var _0x5dd974=function(_0x342886){while(--_0x342886){_0x4fa166['push'](_0x4fa166['shift']());}};_0x5dd974(++_0x58b7fb);}(_0x6df0,0x8b));var _0x06df=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x6df0[_0x585d81];return _0x1aca0d;};'use strict';var _=require(_0x06df('0x0'));var util=require('util');var logger=require(_0x06df('0x1'))(_0x06df('0x2'));var moment=require('moment');var BPromise=require(_0x06df('0x3'));var rp=require(_0x06df('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x06df('0x5'));var config=require(_0x06df('0x6'));var attributes=require(_0x06df('0x7'));module['exports']=function(_0x5bc5e1,_0x28eae9){return _0x5bc5e1[_0x06df('0x8')](_0x06df('0x9'),attributes,{'tableName':_0x06df('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ba814a..25a8b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x489a=['then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','client','http','request'];(function(_0x3d8d2e,_0x544f3){var _0x214397=function(_0x29b13e){while(--_0x29b13e){_0x3d8d2e['push'](_0x3d8d2e['shift']());}};_0x214397(++_0x544f3);}(_0x489a,0x15f));var _0xa489=function(_0x5c12ae,_0x29ab56){_0x5c12ae=_0x5c12ae-0x0;var _0x6b60d1=_0x489a[_0x5c12ae];return _0x6b60d1;};'use strict';var _=require('lodash');var util=require(_0xa489('0x0'));var moment=require(_0xa489('0x1'));var BPromise=require(_0xa489('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa489('0x3'));var db=require(_0xa489('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa489('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa489('0x6')][_0xa489('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x12915c,_0x1e4da3,_0x33b0ed){return new BPromise(function(_0x5027ae,_0x53c568){return client[_0xa489('0x8')](_0x12915c,_0x33b0ed)[_0xa489('0x9')](function(_0x3c84a6){logger[_0xa489('0xa')](_0xa489('0xb'),_0x1e4da3,_0xa489('0xc'));logger[_0xa489('0xd')](_0xa489('0xe'),_0x1e4da3,_0xa489('0xc'),JSON[_0xa489('0xf')](_0x3c84a6));if(_0x3c84a6[_0xa489('0x10')]){if(_0x3c84a6['error']['code']===0x1f4){logger['error'](_0xa489('0xb'),_0x1e4da3,_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);return _0x53c568(_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);}logger[_0xa489('0x10')](_0xa489('0xb'),_0x1e4da3,_0x3c84a6['error'][_0xa489('0x11')]);return _0x5027ae(_0x3c84a6[_0xa489('0x10')][_0xa489('0x11')]);}else{logger['info'](_0xa489('0xb'),_0x1e4da3,_0xa489('0xc'));_0x5027ae(_0x3c84a6['result']['message']);}})['catch'](function(_0x3a26ca){logger[_0xa489('0x10')](_0xa489('0xb'),_0x1e4da3,_0x3a26ca);_0x53c568(_0x3a26ca);});});}
\ No newline at end of file
+var _0x4113=['debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x11b86b,_0x269316){var _0x29f428=function(_0x33e3a7){while(--_0x33e3a7){_0x11b86b['push'](_0x11b86b['shift']());}};_0x29f428(++_0x269316);}(_0x4113,0x1ec));var _0x3411=function(_0x9ff058,_0x9d9d2d){_0x9ff058=_0x9ff058-0x0;var _0x579f7f=_0x4113[_0x9ff058];return _0x579f7f;};'use strict';var _=require(_0x3411('0x0'));var util=require('util');var moment=require(_0x3411('0x1'));var BPromise=require(_0x3411('0x2'));var rs=require(_0x3411('0x3'));var fs=require('fs');var Redis=require(_0x3411('0x4'));var db=require(_0x3411('0x5'))['db'];var utils=require(_0x3411('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3411('0x7'));var client=jayson[_0x3411('0x8')][_0x3411('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x12e8ba,_0x52b537,_0x228081){return new BPromise(function(_0x1d1d66,_0xfdaabb){return client[_0x3411('0xa')](_0x12e8ba,_0x228081)[_0x3411('0xb')](function(_0x8269df){logger[_0x3411('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x52b537,_0x3411('0xd'));logger[_0x3411('0xe')](_0x3411('0xf'),_0x52b537,_0x3411('0xd'),JSON[_0x3411('0x10')](_0x8269df));if(_0x8269df[_0x3411('0x11')]){if(_0x8269df[_0x3411('0x11')][_0x3411('0x12')]===0x1f4){logger[_0x3411('0x11')]('AnalyticCustomReport,\x20%s,\x20%s',_0x52b537,_0x8269df[_0x3411('0x11')]['message']);return _0xfdaabb(_0x8269df[_0x3411('0x11')]['message']);}logger['error'](_0x3411('0x13'),_0x52b537,_0x8269df[_0x3411('0x11')][_0x3411('0x14')]);return _0x1d1d66(_0x8269df[_0x3411('0x11')][_0x3411('0x14')]);}else{logger[_0x3411('0xc')](_0x3411('0x13'),_0x52b537,_0x3411('0xd'));_0x1d1d66(_0x8269df[_0x3411('0x15')][_0x3411('0x14')]);}})['catch'](function(_0x223a4b){logger[_0x3411('0x11')](_0x3411('0x13'),_0x52b537,_0x223a4b);_0xfdaabb(_0x223a4b);});});}
\ No newline at end of file
index 81fc328..06fcf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2a=['create','put','/:id','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/run','run','/:id/query','post'];(function(_0x2d994d,_0x168a27){var _0xd54be4=function(_0x1db925){while(--_0x1db925){_0x2d994d['push'](_0x2d994d['shift']());}};_0xd54be4(++_0x168a27);}(_0x3e2a,0x192));var _0xa3e2=function(_0x280a81,_0xbe23b8){_0x280a81=_0x280a81-0x0;var _0x46ba97=_0x3e2a[_0x280a81];return _0x46ba97;};'use strict';var multer=require('multer');var util=require(_0xa3e2('0x0'));var path=require(_0xa3e2('0x1'));var timeout=require(_0xa3e2('0x2'));var express=require(_0xa3e2('0x3'));var router=express['Router']();var fs_extra=require(_0xa3e2('0x4'));var auth=require(_0xa3e2('0x5'));var interaction=require(_0xa3e2('0x6'));var config=require(_0xa3e2('0x7'));var controller=require('./analyticCustomReport.controller');router[_0xa3e2('0x8')]('/',auth['isAuthenticated'](),controller[_0xa3e2('0x9')]);router[_0xa3e2('0x8')]('/:id',auth[_0xa3e2('0xa')](),controller[_0xa3e2('0xb')]);router[_0xa3e2('0x8')]('/:id/preview',auth[_0xa3e2('0xa')](),controller['preview']);router[_0xa3e2('0x8')](_0xa3e2('0xc'),auth[_0xa3e2('0xa')](),controller[_0xa3e2('0xd')]);router['get'](_0xa3e2('0xe'),auth[_0xa3e2('0xa')](),controller['query']);router[_0xa3e2('0xf')]('/',auth[_0xa3e2('0xa')](),controller[_0xa3e2('0x10')]);router[_0xa3e2('0x11')](_0xa3e2('0x12'),auth['isAuthenticated'](),controller[_0xa3e2('0x13')]);router[_0xa3e2('0x14')]('/:id',auth[_0xa3e2('0xa')](),controller['destroy']);module[_0xa3e2('0x15')]=router;
\ No newline at end of file
+var _0x4487=['/:id','show','preview','/:id/run','run','query','post','create','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4487,0x146));var _0x7448=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0x4487[_0x2aa0e7];return _0x1472c0;};'use strict';var multer=require(_0x7448('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7448('0x1'));var express=require(_0x7448('0x2'));var router=express[_0x7448('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7448('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7448('0x5'));var controller=require(_0x7448('0x6'));router[_0x7448('0x7')]('/',auth[_0x7448('0x8')](),controller[_0x7448('0x9')]);router[_0x7448('0x7')](_0x7448('0xa'),auth[_0x7448('0x8')](),controller[_0x7448('0xb')]);router[_0x7448('0x7')]('/:id/preview',auth[_0x7448('0x8')](),controller[_0x7448('0xc')]);router[_0x7448('0x7')](_0x7448('0xd'),auth[_0x7448('0x8')](),controller[_0x7448('0xe')]);router[_0x7448('0x7')]('/:id/query',auth['isAuthenticated'](),controller[_0x7448('0xf')]);router[_0x7448('0x10')]('/',auth['isAuthenticated'](),controller[_0x7448('0x11')]);router['put'](_0x7448('0xa'),auth['isAuthenticated'](),controller[_0x7448('0x12')]);router[_0x7448('0x13')]('/:id',auth[_0x7448('0x8')](),controller['destroy']);module[_0x7448('0x14')]=router;
\ No newline at end of file
index d5ca616..c27692c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['TEXT','exports','STRING'];(function(_0x5af61b,_0x1933d6){var _0x80dbe1=function(_0x1881cc){while(--_0x1881cc){_0x5af61b['push'](_0x5af61b['shift']());}};_0x80dbe1(++_0x1933d6);}(_0x71ab,0x64));var _0xb71a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71ab[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb71a('0x1')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0xb71a('0x1')]},'conditions':{'type':Sequelize[_0xb71a('0x2')]},'joins':{'type':Sequelize[_0xb71a('0x2')]}};
\ No newline at end of file
+var _0x5fc3=['sequelize','exports','STRING','TEXT'];(function(_0x1921cc,_0x1b8a98){var _0x1f0025=function(_0x5f096c){while(--_0x5f096c){_0x1921cc['push'](_0x1921cc['shift']());}};_0x1f0025(++_0x1b8a98);}(_0x5fc3,0xa8));var _0x35fc=function(_0x413727,_0x17adb1){_0x413727=_0x413727-0x0;var _0x5f46d7=_0x5fc3[_0x413727];return _0x5f46d7;};'use strict';var Sequelize=require(_0x35fc('0x0'));module[_0x35fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x35fc('0x2')]},'parent':{'type':Sequelize[_0x35fc('0x2')]},'table':{'type':Sequelize[_0x35fc('0x2')]},'conditions':{'type':Sequelize[_0x35fc('0x3')]},'joins':{'type':Sequelize[_0x35fc('0x3')]}};
\ No newline at end of file
index eaeda50..0e5d728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['keyBy','table','metric','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','from','countTable','COUNT(*)','SELECT','run','cross_join','COUNT(DISTINCT\x20%s)','debug','Limited\x20Query:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','error','stack','name','send','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','AnalyticDefaultReport','includeAll','include','findAll','rows','show','params','keys','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','body','preview','join','left_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','field','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','MetricId','function','replace','format','groupBy','group','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20NULL','IS\x20EMPTY','operator','condition'];(function(_0x2bd443,_0x3b60d8){var _0x45159a=function(_0x1ddbec){while(--_0x1ddbec){_0x2bd443['push'](_0x2bd443['shift']());}};_0x45159a(++_0x3b60d8);}(_0x4819,0xcd));var _0x9481=function(_0x578a80,_0x412698){_0x578a80=_0x578a80-0x0;var _0x4b4ba8=_0x4819[_0x578a80];return _0x4b4ba8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9481('0x0'));var zipdir=require(_0x9481('0x1'));var jsonpatch=require(_0x9481('0x2'));var rp=require(_0x9481('0x3'));var moment=require(_0x9481('0x4'));var BPromise=require(_0x9481('0x5'));var Mustache=require(_0x9481('0x6'));var util=require(_0x9481('0x7'));var path=require(_0x9481('0x8'));var sox=require(_0x9481('0x9'));var csv=require('to-csv');var ejs=require(_0x9481('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9481('0xb'));var crypto=require(_0x9481('0xc'));var jsforce=require(_0x9481('0xd'));var deskjs=require(_0x9481('0xe'));var toCsv=require(_0x9481('0xf'));var querystring=require('querystring');var Papa=require(_0x9481('0x10'));var Redis=require('ioredis');var authService=require(_0x9481('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9481('0x12'));var hardwareService=require(_0x9481('0x13'));var logger=require(_0x9481('0x14'))(_0x9481('0x15'));var utils=require(_0x9481('0x16'));var config=require(_0x9481('0x17'));var licenseUtil=require(_0x9481('0x18'));var db=require(_0x9481('0x19'))['db'];var dbH=require(_0x9481('0x19'))['dbH'];function respondWithStatusCode(_0x5aac02,_0xce6fa2){_0xce6fa2=_0xce6fa2||0xcc;return function(_0x150276){if(_0x150276){return _0x5aac02[_0x9481('0x1a')](_0xce6fa2);}return _0x5aac02[_0x9481('0x1b')](_0xce6fa2)[_0x9481('0x1c')]();};}function respondWithResult(_0xc7a0b5,_0x3fb97f){_0x3fb97f=_0x3fb97f||0xc8;return function(_0x495b30){if(_0x495b30){return _0xc7a0b5[_0x9481('0x1b')](_0x3fb97f)[_0x9481('0x1d')](_0x495b30);}};}function respondWithFilteredResult(_0x5b1fe6,_0x2266d5){return function(_0x518150){if(_0x518150){var _0x34108d=typeof _0x2266d5[_0x9481('0x1e')]===_0x9481('0x1f')&&typeof _0x2266d5[_0x9481('0x20')]==='undefined';var _0x5eda66=_0x518150[_0x9481('0x21')];var _0x50a559=_0x34108d?0x0:_0x2266d5['offset'];var _0x26671c=_0x34108d?_0x518150[_0x9481('0x21')]:_0x2266d5[_0x9481('0x1e')]+_0x2266d5[_0x9481('0x20')];var _0x7000e7;if(_0x26671c>=_0x5eda66){_0x26671c=_0x5eda66;_0x7000e7=0xc8;}else{_0x7000e7=0xce;}_0x5b1fe6[_0x9481('0x1b')](_0x7000e7);return _0x5b1fe6['set'](_0x9481('0x22'),_0x50a559+'-'+_0x26671c+'/'+_0x5eda66)[_0x9481('0x1d')](_0x518150);}return null;};}function patchUpdates(_0x45f9df){return function(_0x615e02){try{jsonpatch[_0x9481('0x23')](_0x615e02,_0x45f9df,!![]);}catch(_0x56da97){return BPromise[_0x9481('0x24')](_0x56da97);}return _0x615e02[_0x9481('0x25')]();};}function saveUpdates(_0x572599,_0x2bcf37){return function(_0xd1cd1a){if(_0xd1cd1a){return _0xd1cd1a[_0x9481('0x26')](_0x572599)[_0x9481('0x27')](function(_0x2dc02e){return _0x2dc02e;});}return null;};}function removeEntity(_0x49ecfa,_0x91e3d9){return function(_0x22f0b5){if(_0x22f0b5){return _0x22f0b5['destroy']()['then'](function(){var _0x12b0c3=_0x22f0b5[_0x9481('0x28')]({'plain':!![]});var _0x550fce=_0x9481('0x29');return db[_0x9481('0x2a')][_0x9481('0x2b')]({'where':{'type':_0x550fce,'resourceId':_0x12b0c3['id']}})[_0x9481('0x27')](function(){return _0x22f0b5;});})['then'](function(){_0x49ecfa[_0x9481('0x1b')](0xcc)[_0x9481('0x1c')]();});}};}function handleEntityNotFound(_0x3c2585,_0x587706){return function(_0x1791b2){if(!_0x1791b2){_0x3c2585['sendStatus'](0x194);}return _0x1791b2;};}function handleError(_0x2e1eff,_0xe153ab){_0xe153ab=_0xe153ab||0x1f4;return function(_0x22ab26){logger[_0x9481('0x2c')](_0x22ab26[_0x9481('0x2d')]);if(_0x22ab26['name']){delete _0x22ab26[_0x9481('0x2e')];}_0x2e1eff[_0x9481('0x1b')](_0xe153ab)[_0x9481('0x2f')](_0x22ab26);};}exports['index']=function(_0x56752e,_0x1addc8){var _0x427c25={},_0x42df68={},_0x2b33f8={'count':0x0,'rows':[]};var _0x5d9926=_['map'](db['AnalyticDefaultReport'][_0x9481('0x30')],function(_0x5d6c65){return{'name':_0x5d6c65[_0x9481('0x31')],'type':_0x5d6c65['type'][_0x9481('0x32')]};});_0x42df68[_0x9481('0x33')]=_[_0x9481('0x34')](_0x5d9926,_0x9481('0x2e'));_0x42df68[_0x9481('0x35')]=_['keys'](_0x56752e[_0x9481('0x35')]);_0x42df68[_0x9481('0x36')]=_[_0x9481('0x37')](_0x42df68['model'],_0x42df68[_0x9481('0x35')]);_0x427c25[_0x9481('0x38')]=_[_0x9481('0x37')](_0x42df68[_0x9481('0x33')],qs[_0x9481('0x39')](_0x56752e[_0x9481('0x35')]['fields']));_0x427c25[_0x9481('0x38')]=_0x427c25['attributes'][_0x9481('0x3a')]?_0x427c25[_0x9481('0x38')]:_0x42df68[_0x9481('0x33')];if(!_0x56752e[_0x9481('0x35')][_0x9481('0x3b')](_0x9481('0x3c'))){_0x427c25['limit']=qs[_0x9481('0x20')](_0x56752e[_0x9481('0x35')]['limit']);_0x427c25['offset']=qs[_0x9481('0x1e')](_0x56752e['query'][_0x9481('0x1e')]);}_0x427c25[_0x9481('0x3d')]=qs[_0x9481('0x3e')](_0x56752e[_0x9481('0x35')]['sort']);_0x427c25[_0x9481('0x3f')]=qs['filters'](_[_0x9481('0x40')](_0x56752e['query'],_0x42df68[_0x9481('0x36')]),_0x5d9926);if(_0x56752e['query'][_0x9481('0x41')]){_0x427c25[_0x9481('0x3f')]=_[_0x9481('0x42')](_0x427c25[_0x9481('0x3f')],{'$or':_[_0x9481('0x34')](_0x5d9926,function(_0x3b7998){if(_0x3b7998[_0x9481('0x43')]!=='VIRTUAL'){var _0x464080={};_0x464080[_0x3b7998[_0x9481('0x2e')]]={'$like':'%'+_0x56752e[_0x9481('0x35')][_0x9481('0x41')]+'%'};return _0x464080;}})});}_0x427c25=_[_0x9481('0x42')]({},_0x427c25,_0x56752e[_0x9481('0x44')]);var _0x2e4241={'where':_0x427c25['where']};return db[_0x9481('0x45')][_0x9481('0x21')](_0x2e4241)['then'](function(_0x704e81){_0x2b33f8[_0x9481('0x21')]=_0x704e81;if(_0x56752e[_0x9481('0x35')][_0x9481('0x46')]){_0x427c25[_0x9481('0x47')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x9481('0x48')](_0x427c25);})['then'](function(_0x23811a){_0x2b33f8[_0x9481('0x49')]=_0x23811a;return _0x2b33f8;})['then'](respondWithFilteredResult(_0x1addc8,_0x427c25))['catch'](handleError(_0x1addc8,null));};exports[_0x9481('0x4a')]=function(_0x1d0df0,_0x42b19a){var _0x4c4caf={'raw':!![],'where':{'id':_0x1d0df0[_0x9481('0x4b')]['id']}},_0x4402f6={};_0x4402f6['model']=_['keys'](db[_0x9481('0x45')]['rawAttributes']);_0x4402f6[_0x9481('0x35')]=_[_0x9481('0x4c')](_0x1d0df0[_0x9481('0x35')]);_0x4402f6[_0x9481('0x36')]=_[_0x9481('0x37')](_0x4402f6['model'],_0x4402f6[_0x9481('0x35')]);_0x4c4caf[_0x9481('0x38')]=_['intersection'](_0x4402f6[_0x9481('0x33')],qs[_0x9481('0x39')](_0x1d0df0[_0x9481('0x35')][_0x9481('0x39')]));_0x4c4caf[_0x9481('0x38')]=_0x4c4caf[_0x9481('0x38')][_0x9481('0x3a')]?_0x4c4caf[_0x9481('0x38')]:_0x4402f6[_0x9481('0x33')];if(_0x1d0df0['query'][_0x9481('0x46')]){_0x4c4caf['include']=[{'all':!![]}];}_0x4c4caf=_['merge']({},_0x4c4caf,_0x1d0df0[_0x9481('0x44')]);return db['AnalyticDefaultReport'][_0x9481('0x4d')](_0x4c4caf)[_0x9481('0x27')](handleEntityNotFound(_0x42b19a,null))['then'](respondWithResult(_0x42b19a,null))[_0x9481('0x4e')](handleError(_0x42b19a,null));};exports[_0x9481('0x4f')]=function(_0x2f3413,_0x13b674){return db[_0x9481('0x45')][_0x9481('0x4f')](_0x2f3413['body'],{})['then'](function(_0x424b22){var _0x44d7e0=_0x2f3413[_0x9481('0x50')][_0x9481('0x28')]({'plain':!![]});if(!_0x44d7e0)throw new Error(_0x9481('0x51'));if(_0x44d7e0[_0x9481('0x52')]===_0x9481('0x50')){var _0x3d2250=_0x424b22['get']({'plain':!![]});var _0x3972c1=_0x9481('0x53');return db[_0x9481('0x54')][_0x9481('0x4d')]({'where':{'name':_0x3972c1,'userProfileId':_0x44d7e0[_0x9481('0x55')]},'raw':!![]})['then'](function(_0x4c3048){if(_0x4c3048&&_0x4c3048[_0x9481('0x56')]===0x0){return db[_0x9481('0x2a')][_0x9481('0x4f')]({'name':_0x3d2250['name'],'resourceId':_0x3d2250['id'],'type':'DefaultReports','sectionId':_0x4c3048['id']},{})['then'](function(){return _0x424b22;});}else{return _0x424b22;}})['catch'](function(_0x538507){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x538507);throw _0x538507;});}return _0x424b22;})[_0x9481('0x27')](respondWithResult(_0x13b674,0xc9))[_0x9481('0x4e')](handleError(_0x13b674,null));};exports['update']=function(_0xd8351c,_0x5f210c){if(_0xd8351c[_0x9481('0x57')]['id']){delete _0xd8351c[_0x9481('0x57')]['id'];}return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0xd8351c[_0x9481('0x4b')]['id']}})[_0x9481('0x27')](handleEntityNotFound(_0x5f210c,null))[_0x9481('0x27')](saveUpdates(_0xd8351c['body'],null))[_0x9481('0x27')](respondWithResult(_0x5f210c,null))[_0x9481('0x4e')](handleError(_0x5f210c,null));};exports['destroy']=function(_0x16416a,_0x1240dc){return db[_0x9481('0x45')][_0x9481('0x4d')]({'where':{'id':_0x16416a[_0x9481('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1240dc,null))[_0x9481('0x27')](removeEntity(_0x1240dc,null))[_0x9481('0x4e')](handleError(_0x1240dc,null));};exports[_0x9481('0x58')]=function(_0x3fc0f9,_0x559dd2){var _0x3ac428=0xa;var _0x2927f5=[_0x9481('0x59'),_0x9481('0x5a'),'right_join','cross_join'];var _0x5b4234={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x589b16={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x239676=function(_0x205b96){return!_['includes'](['IS\x20NULL',_0x9481('0x67'),'IS\x20EMPTY',_0x9481('0x68')],_0x205b96);};var _0x59637f=function(_0x9af916){if(!_0x9af916||!_0x9af916[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x492464='(',_0x28d331=0x0;_0x28d331<_0x9af916[_0x9481('0x69')]['length'];_0x28d331+=0x1){_0x28d331>0x0&&(_0x492464+='\x20'+_0x9af916['operator']+'\x20');_0x492464+=_0x9af916['rules'][_0x28d331]['group']?_0x59637f(_0x9af916[_0x9481('0x69')][_0x28d331]['group']):_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6a')]+'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331]['condition']+(_0x239676(_0x9af916[_0x9481('0x69')][_0x28d331]['condition'])?'\x20'+_0x9af916[_0x9481('0x69')][_0x28d331][_0x9481('0x6b')]:'');}return _0x492464+')';};var _0x3c267b={'where':{'id':_0x3fc0f9[_0x9481('0x4b')]['id']}},_0x4f157d,_0x2f20b4,_0x40fed2,_0x4ff016,_0x321972;_0x3c267b=_[_0x9481('0x42')]({},_0x3c267b,_0x3fc0f9[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x3c267b)[_0x9481('0x27')](function(_0x32ebde){if(_0x32ebde){_0x4f157d=_0x32ebde;return _0x32ebde[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x237d9b){if(_0x237d9b){if(!_0x237d9b[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x2f20b4=_0x237d9b;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})['then'](function(_0x1e05f8){if(_0x1e05f8){_0x40fed2=_['keyBy'](_0x1e05f8,'id');var _0x47bf37;var _0x1a7892=squel['select']();_0x1a7892['from'](_0x4f157d['table']);for(var _0x1b1967=0x0;_0x1b1967<_0x2f20b4[_0x9481('0x3a')];_0x1b1967+=0x1){_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x71')]?_0x40fed2[_0x2f20b4[_0x1b1967][_0x9481('0x71')]]['metric']:_0x2f20b4[_0x1b1967][_0x9481('0x6a')];_0x47bf37=_0x2f20b4[_0x1b1967][_0x9481('0x72')]?_[_0x9481('0x73')](_0x5b4234[_0x2f20b4[_0x1b1967][_0x9481('0x72')]],'%s',_0x47bf37):_0x47bf37;_0x47bf37=_0x2f20b4[_0x1b1967]['format']?_['replace'](_0x589b16[_0x2f20b4[_0x1b1967][_0x9481('0x74')]],'%s',_0x47bf37):_0x47bf37;if(_0x2f20b4[_0x1b1967][_0x9481('0x75')]){_0x1a7892[_0x9481('0x76')](_0x47bf37);}_0x2f20b4[_0x1b1967][_0x9481('0x77')]&&_0x1a7892[_0x9481('0x3d')](_0x47bf37,_0x2f20b4[_0x1b1967]['orderBy']===_0x9481('0x78')?![]:!![]);_0x1a7892[_0x9481('0x6a')](_0x47bf37,_0x2f20b4[_0x1b1967][_0x9481('0x79')]||_0x47bf37);}if(_0x4f157d[_0x9481('0x7a')]){_0x4f157d[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x4f157d[_0x9481('0x7a')]);for(var _0x42a6d2=0x0;_0x42a6d2<_0x4f157d[_0x9481('0x7a')][_0x9481('0x3a')];_0x42a6d2+=0x1){if(_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2927f5,_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')])&&_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7d')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7e')]&&_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x7f')]){_0x1a7892[_0x4f157d[_0x9481('0x7a')][_0x42a6d2][_0x9481('0x43')]](_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x4f157d['table'],_0x4f157d[_0x9481('0x7a')][_0x42a6d2]['parentKey'],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7e')],_0x4f157d['joins'][_0x42a6d2][_0x9481('0x7f')]));}}}if(_0x4f157d[_0x9481('0x80')]){_0x4f157d[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x4f157d['conditions']);_0x1a7892[_0x9481('0x3f')](_0x59637f(_0x4f157d['conditions'][_0x9481('0x76')]));}_0x321972=_0x1a7892[_0x9481('0x81')]();_0x1a7892[_0x9481('0x20')](_0x3ac428);_0x1a7892['offset'](0x0);logger['debug']('Limited\x20Query:',_0x1a7892[_0x9481('0x82')]());return dbH['sequelize']['query'](_0x1a7892[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')]['SELECT']});}})[_0x9481('0x27')](respondWithResult(_0x559dd2,null))[_0x9481('0x4e')](handleError(_0x559dd2,null));};function runReport(_0x545457,_0x226932,_0x3c8241){var _0x1ea93a=_0x226932[_0x9481('0x2e')];var _0x5f4be2=0xa;var _0x2e585d=['join',_0x9481('0x5a'),_0x9481('0x85'),'cross_join'];var _0x1c82a1={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x9481('0x5e'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x55b428={'SEC_TO_TIME':_0x9481('0x86'),'DATE':_0x9481('0x63'),'HOUR':_0x9481('0x64'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9481('0x66')};var _0x31e097=function(_0x339a30){return!_[_0x9481('0x7c')]([_0x9481('0x87'),_0x9481('0x67'),_0x9481('0x88'),_0x9481('0x68')],_0x339a30);};var _0x22e787=function(_0x31b70b){if(!_0x31b70b||!_0x31b70b['rules'][_0x9481('0x3a')]){return'';}for(var _0x5c430e='(',_0x4f55b5=0x0;_0x4f55b5<_0x31b70b['rules'][_0x9481('0x3a')];_0x4f55b5+=0x1){_0x4f55b5>0x0&&(_0x5c430e+='\x20'+_0x31b70b[_0x9481('0x89')]+'\x20');_0x5c430e+=_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x76')]?_0x22e787(_0x31b70b[_0x9481('0x69')][_0x4f55b5]['group']):_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6a')]+'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')]+(_0x31e097(_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x8a')])?'\x20'+_0x31b70b[_0x9481('0x69')][_0x4f55b5][_0x9481('0x6b')]:'');}return _0x5c430e+')';};var _0x28d924={'where':{'id':_0x545457['id']}},_0x426d56,_0x5808c8,_0x27be69,_0x1d49ba,_0x458a6f;_0x28d924=_[_0x9481('0x42')]({},_0x28d924,_0x3c8241);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x28d924)[_0x9481('0x27')](function(_0x1173e9){if(_0x1173e9){_0x426d56=_0x1173e9;return _0x1173e9[_0x9481('0x6c')]();}return null;})[_0x9481('0x27')](function(_0x5557d7){if(_0x5557d7){if(!_0x5557d7[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x5808c8=_0x5557d7;return db[_0x9481('0x70')][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x3ae3e2){if(_0x3ae3e2){_0x27be69=_[_0x9481('0x8b')](_0x3ae3e2,'id');var _0x538fe0;var _0x44e2c2=squel['select']();_0x44e2c2['from'](_0x426d56[_0x9481('0x8c')]);for(var _0x382455=0x0;_0x382455<_0x5808c8[_0x9481('0x3a')];_0x382455+=0x1){_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x71')]?_0x27be69[_0x5808c8[_0x382455][_0x9481('0x71')]][_0x9481('0x8d')]:_0x5808c8[_0x382455]['field'];_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x72')]?_['replace'](_0x1c82a1[_0x5808c8[_0x382455][_0x9481('0x72')]],'%s',_0x538fe0):_0x538fe0;_0x538fe0=_0x5808c8[_0x382455][_0x9481('0x74')]?_[_0x9481('0x73')](_0x55b428[_0x5808c8[_0x382455]['format']],'%s',_0x538fe0):_0x538fe0;if(_0x5808c8[_0x382455]['groupBy']){_0x44e2c2[_0x9481('0x76')](_0x538fe0);}_0x5808c8[_0x382455][_0x9481('0x77')]&&_0x44e2c2[_0x9481('0x3d')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x44e2c2[_0x9481('0x6a')](_0x538fe0,_0x5808c8[_0x382455][_0x9481('0x79')]||_0x538fe0);}if(_0x426d56[_0x9481('0x7a')]){_0x426d56[_0x9481('0x7a')]=JSON['parse'](_0x426d56[_0x9481('0x7a')]);for(var _0xd64114=0x0;_0xd64114<_0x426d56['joins'][_0x9481('0x3a')];_0xd64114+=0x1){if(_0x426d56['joins'][_0xd64114][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x2e585d,_0x426d56['joins'][_0xd64114][_0x9481('0x43')])&&_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')]&&_0x426d56['joins'][_0xd64114][_0x9481('0x7e')]&&_0x426d56[_0x9481('0x7a')][_0xd64114]['foreignKey']){_0x44e2c2[_0x426d56[_0x9481('0x7a')][_0xd64114]['type']](_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x426d56['table'],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7d')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7e')],_0x426d56[_0x9481('0x7a')][_0xd64114][_0x9481('0x7f')]));}}}if(_0x426d56['conditions']){_0x426d56[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x426d56[_0x9481('0x80')]);_0x44e2c2[_0x9481('0x3f')](_0x22e787(_0x426d56[_0x9481('0x80')][_0x9481('0x76')]));}_0x458a6f=_0x44e2c2[_0x9481('0x81')]();_0x44e2c2['limit'](_0x5f4be2);_0x44e2c2[_0x9481('0x1e')](0x0);return;}})[_0x9481('0x27')](function(){if(_0x226932[_0x9481('0x8e')]===_0x9481('0x8f')){return null;}var _0x4e5a8d=_[_0x9481('0x42')](_0x226932,{'name':_0x226932[_0x9481('0x90')]||_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],'basename':_0x1ea93a,'savename':util['format'](_0x9481('0x91'),_0x226932[_0x9481('0x2e')]||_0x426d56[_0x9481('0x2e')],require(_0x9481('0x92'))[_0x9481('0x93')](0x4),_0x226932[_0x9481('0x8e')]||_0x9481('0x94')),'reportId':_0x426d56['id'],'reportType':_0x9481('0x95')});return db[_0x9481('0x96')][_0x9481('0x4f')](_0x4e5a8d,{'raw':!![]});})[_0x9481('0x27')](function(_0x5930d6){if(_0x426d56[_0x9481('0x8c')]==='cdr'){_0x458a6f[_0x9481('0x3f')](_0x426d56[_0x9481('0x8c')]+_0x9481('0x97'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}else{_0x458a6f['where'](_0x426d56[_0x9481('0x8c')]+_0x9481('0x9a'),_0x226932[_0x9481('0x98')],_0x226932[_0x9481('0x99')]);}if(_0x5930d6){logger[_0x9481('0x9b')](_0x9481('0x9c'),_0x458a6f['toString']());require(_0x9481('0x9d'))[_0x9481('0x9e')](path[_0x9481('0x59')](__dirname,_0x9481('0x9f'),_0x5930d6[_0x9481('0x8e')]),[_0x5930d6['id'],_0x458a6f[_0x9481('0x82')](),path[_0x9481('0x59')](__dirname,_0x9481('0xa0'),_0x5930d6[_0x9481('0xa1')]),_0x1ea93a]);return _0x5930d6;}else{var _0x26a666=squel[_0x9481('0xa2')]();_0x26a666[_0x9481('0xa3')]('('+_0x458a6f['toString']()+')',_0x9481('0xa4'));_0x26a666[_0x9481('0x6a')](_0x9481('0xa5'),_0x9481('0x21'));_0x458a6f[_0x9481('0x20')](_0x226932[_0x9481('0x20')]||_0x5f4be2);_0x458a6f[_0x9481('0x1e')](_0x226932[_0x9481('0x1e')]||0x0);return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x26a666[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]})[_0x9481('0x27')](function(_0xcf83d2){if(!_0xcf83d2[_0x9481('0x3a')]){_0x1d49ba=0x0;}else{_0x1d49ba=_0xcf83d2[0x0][_0x9481('0x21')]||0x0;}return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x458a6f['toString'](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});})[_0x9481('0x27')](function(_0x4553fc){return{'rows':_0x4553fc||[],'count':_0x1d49ba};});}});}exports[_0x9481('0xa7')]=function(_0x55c4ab,_0x57928a){return runReport(_0x55c4ab[_0x9481('0x4b')],_0x55c4ab[_0x9481('0x35')],_0x55c4ab[_0x9481('0x44')])[_0x9481('0x27')](respondWithResult(_0x57928a,null))['catch'](handleError(_0x57928a,null));};exports['runReport']=runReport;exports['query']=function(_0x52b980,_0x5792b1){var _0x3a199b=0xa;var _0x4b779b=[_0x9481('0x59'),_0x9481('0x5a'),_0x9481('0x85'),_0x9481('0xa8')];var _0x55a65f={'SUM':_0x9481('0x5b'),'COUNT':_0x9481('0x5c'),'COUNT DISTINCT':_0x9481('0xa9'),'MAX':_0x9481('0x5d'),'MIN':_0x9481('0x5e'),'AVG':_0x9481('0x5f'),'GROUP_CONCAT':_0x9481('0x60'),'GROUP_CONCAT ASC':_0x9481('0x61'),'GROUP_CONCAT DESC':_0x9481('0x62')};var _0x583490={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9481('0x63'),'HOUR':'HOUR(%s)','ROUND':_0x9481('0x65'),'UNIX_TIMESTAMP':_0x9481('0x66')};var _0x1e40fe=function(_0x26c87b){return!_[_0x9481('0x7c')](['IS\x20NULL',_0x9481('0x67'),_0x9481('0x88'),'IS\x20NOT\x20EMPTY'],_0x26c87b);};var _0x4ea411=function(_0x1cdca0){if(!_0x1cdca0||!_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')]){return'';}for(var _0x15c53f='(',_0x7ee854=0x0;_0x7ee854<_0x1cdca0[_0x9481('0x69')][_0x9481('0x3a')];_0x7ee854+=0x1){_0x7ee854>0x0&&(_0x15c53f+='\x20'+_0x1cdca0[_0x9481('0x89')]+'\x20');_0x15c53f+=_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x76')]?_0x4ea411(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x76')]):_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x6a')]+'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854][_0x9481('0x8a')]+(_0x1e40fe(_0x1cdca0['rules'][_0x7ee854][_0x9481('0x8a')])?'\x20'+_0x1cdca0[_0x9481('0x69')][_0x7ee854]['value']:'');}return _0x15c53f+')';};var _0x49a6db={'where':{'id':_0x52b980['params']['id']}},_0x224b16,_0x83543f,_0x58c043,_0x97a67a,_0xe157e4;_0x49a6db=_[_0x9481('0x42')]({},_0x49a6db,_0x52b980[_0x9481('0x44')]);return db[_0x9481('0x45')][_0x9481('0x4d')](_0x49a6db)['then'](function(_0x1a1058){if(_0x1a1058){_0x224b16=_0x1a1058;return _0x1a1058['getFields']();}return null;})[_0x9481('0x27')](function(_0x206661){if(_0x206661){if(!_0x206661[_0x9481('0x3a')]){throw new db[(_0x9481('0x6d'))][(_0x9481('0x6e'))](_0x9481('0x6f'),0x193);}_0x83543f=_0x206661;return db['AnalyticMetric'][_0x9481('0x48')]({'raw':!![]});}return null;})[_0x9481('0x27')](function(_0x40cdf9){if(_0x40cdf9){_0x58c043=_['keyBy'](_0x40cdf9,'id');var _0x5467fe;var _0x440d88=squel['select']();_0x440d88[_0x9481('0xa3')](_0x224b16['table']);for(var _0x2a0367=0x0;_0x2a0367<_0x83543f[_0x9481('0x3a')];_0x2a0367+=0x1){_0x5467fe=_0x83543f[_0x2a0367]['MetricId']?_0x58c043[_0x83543f[_0x2a0367][_0x9481('0x71')]][_0x9481('0x8d')]:_0x83543f[_0x2a0367][_0x9481('0x6a')];_0x5467fe=_0x83543f[_0x2a0367]['function']?_[_0x9481('0x73')](_0x55a65f[_0x83543f[_0x2a0367][_0x9481('0x72')]],'%s',_0x5467fe):_0x5467fe;_0x5467fe=_0x83543f[_0x2a0367][_0x9481('0x74')]?_[_0x9481('0x73')](_0x583490[_0x83543f[_0x2a0367][_0x9481('0x74')]],'%s',_0x5467fe):_0x5467fe;if(_0x83543f[_0x2a0367][_0x9481('0x75')]){_0x440d88[_0x9481('0x76')](_0x5467fe);}_0x83543f[_0x2a0367]['orderBy']&&_0x440d88[_0x9481('0x3d')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x77')]===_0x9481('0x78')?![]:!![]);_0x440d88[_0x9481('0x6a')](_0x5467fe,_0x83543f[_0x2a0367][_0x9481('0x79')]||_0x5467fe);}if(_0x224b16['joins']){_0x224b16[_0x9481('0x7a')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x7a')]);for(var _0x527ef6=0x0;_0x527ef6<_0x224b16['joins'][_0x9481('0x3a')];_0x527ef6+=0x1){if(_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]&&_[_0x9481('0x7c')](_0x4b779b,_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')])&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7d')]&&_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')]&&_0x224b16['joins'][_0x527ef6][_0x9481('0x7f')]){_0x440d88[_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x43')]](_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],null,util[_0x9481('0x74')]('%s.%s\x20=\x20%s.%s',_0x224b16[_0x9481('0x8c')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['parentKey'],_0x224b16[_0x9481('0x7a')][_0x527ef6][_0x9481('0x7e')],_0x224b16[_0x9481('0x7a')][_0x527ef6]['foreignKey']));}}}if(_0x224b16[_0x9481('0x80')]){_0x224b16[_0x9481('0x80')]=JSON[_0x9481('0x7b')](_0x224b16[_0x9481('0x80')]);_0x440d88['where'](_0x4ea411(_0x224b16[_0x9481('0x80')][_0x9481('0x76')]));}_0xe157e4=_0x440d88[_0x9481('0x81')]();_0x440d88[_0x9481('0x20')](_0x3a199b);_0x440d88['offset'](0x0);logger[_0x9481('0xaa')](_0x9481('0xab'),_0x440d88[_0x9481('0x82')]());return dbH[_0x9481('0x83')][_0x9481('0x35')](_0x440d88[_0x9481('0x82')](),{'type':dbH[_0x9481('0x83')][_0x9481('0x84')][_0x9481('0xa6')]});}})[_0x9481('0x27')](function(){return{'sql':_0xe157e4['toString']()};})[_0x9481('0x27')](respondWithResult(_0x5792b1,null))[_0x9481('0x4e')](handleError(_0x5792b1,null));};
\ No newline at end of file
+var _0x7a54=['options','AnalyticDefaultReport','includeAll','include','show','keys','attributes','create','body','user','role','get','Reports','UserProfileSection','userProfileId','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','MetricId','metric','field','function','replace','format','orderBy','DESC','joins','parse','type','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','debug','toString','sequelize','QueryTypes','SELECT','join','left_join','COUNT(DISTINCT\x20%s)','MAX(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','groupBy','alias','output','web','fullPath','%s-%s.%s','generate','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','getFields','clone','Limited\x20Query:','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','limit','count','offset','Content-Range','apply','save','then','destroy','DefaultReports','error','stack','name','index','map','fieldName','model','query','filters','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge'];(function(_0x3f06c7,_0xd58ada){var _0x4aa19f=function(_0xaa7b3){while(--_0xaa7b3){_0x3f06c7['push'](_0x3f06c7['shift']());}};_0x4aa19f(++_0xd58ada);}(_0x7a54,0x106));var _0x47a5=function(_0x33ee77,_0x1a50dd){_0x33ee77=_0x33ee77-0x0;var _0x57898e=_0x7a54[_0x33ee77];return _0x57898e;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];var dbH=require(_0x47a5('0x15'))[_0x47a5('0x16')];function respondWithStatusCode(_0x5beb89,_0x44bd3e){_0x44bd3e=_0x44bd3e||0xcc;return function(_0x221b54){if(_0x221b54){return _0x5beb89[_0x47a5('0x17')](_0x44bd3e);}return _0x5beb89[_0x47a5('0x18')](_0x44bd3e)[_0x47a5('0x19')]();};}function respondWithResult(_0x620ee9,_0x3c6c46){_0x3c6c46=_0x3c6c46||0xc8;return function(_0x190faa){if(_0x190faa){return _0x620ee9['status'](_0x3c6c46)[_0x47a5('0x1a')](_0x190faa);}};}function respondWithFilteredResult(_0x11faf5,_0x3b001e){return function(_0x2a2cbb){if(_0x2a2cbb){var _0x1ef44c=typeof _0x3b001e['offset']==='undefined'&&typeof _0x3b001e[_0x47a5('0x1b')]==='undefined';var _0x5247fd=_0x2a2cbb[_0x47a5('0x1c')];var _0xaf70a6=_0x1ef44c?0x0:_0x3b001e[_0x47a5('0x1d')];var _0x1ef371=_0x1ef44c?_0x2a2cbb[_0x47a5('0x1c')]:_0x3b001e[_0x47a5('0x1d')]+_0x3b001e[_0x47a5('0x1b')];var _0xe3c618;if(_0x1ef371>=_0x5247fd){_0x1ef371=_0x5247fd;_0xe3c618=0xc8;}else{_0xe3c618=0xce;}_0x11faf5[_0x47a5('0x18')](_0xe3c618);return _0x11faf5['set'](_0x47a5('0x1e'),_0xaf70a6+'-'+_0x1ef371+'/'+_0x5247fd)[_0x47a5('0x1a')](_0x2a2cbb);}return null;};}function patchUpdates(_0x47cf3c){return function(_0x2b0360){try{jsonpatch[_0x47a5('0x1f')](_0x2b0360,_0x47cf3c,!![]);}catch(_0x36874d){return BPromise['reject'](_0x36874d);}return _0x2b0360[_0x47a5('0x20')]();};}function saveUpdates(_0x2f142b,_0x23db32){return function(_0x7a9f9e){if(_0x7a9f9e){return _0x7a9f9e['update'](_0x2f142b)[_0x47a5('0x21')](function(_0x385687){return _0x385687;});}return null;};}function removeEntity(_0x513981,_0x28747d){return function(_0xc4cd63){if(_0xc4cd63){return _0xc4cd63[_0x47a5('0x22')]()[_0x47a5('0x21')](function(){var _0x3abd6a=_0xc4cd63['get']({'plain':!![]});var _0x53078a=_0x47a5('0x23');return db['UserProfileResource'][_0x47a5('0x22')]({'where':{'type':_0x53078a,'resourceId':_0x3abd6a['id']}})['then'](function(){return _0xc4cd63;});})[_0x47a5('0x21')](function(){_0x513981[_0x47a5('0x18')](0xcc)[_0x47a5('0x19')]();});}};}function handleEntityNotFound(_0x1dac65,_0x21f296){return function(_0x3ba0b7){if(!_0x3ba0b7){_0x1dac65[_0x47a5('0x17')](0x194);}return _0x3ba0b7;};}function handleError(_0x136b14,_0x16631f){_0x16631f=_0x16631f||0x1f4;return function(_0x361bfa){logger[_0x47a5('0x24')](_0x361bfa[_0x47a5('0x25')]);if(_0x361bfa[_0x47a5('0x26')]){delete _0x361bfa['name'];}_0x136b14[_0x47a5('0x18')](_0x16631f)['send'](_0x361bfa);};}exports[_0x47a5('0x27')]=function(_0x9ac908,_0x16901f){var _0x4d6b57={},_0x256650={},_0x625952={'count':0x0,'rows':[]};var _0x39b50b=_[_0x47a5('0x28')](db['AnalyticDefaultReport']['rawAttributes'],function(_0x6f9a12){return{'name':_0x6f9a12[_0x47a5('0x29')],'type':_0x6f9a12['type']['key']};});_0x256650[_0x47a5('0x2a')]=_[_0x47a5('0x28')](_0x39b50b,'name');_0x256650[_0x47a5('0x2b')]=_['keys'](_0x9ac908[_0x47a5('0x2b')]);_0x256650[_0x47a5('0x2c')]=_['intersection'](_0x256650['model'],_0x256650[_0x47a5('0x2b')]);_0x4d6b57['attributes']=_[_0x47a5('0x2d')](_0x256650[_0x47a5('0x2a')],qs[_0x47a5('0x2e')](_0x9ac908['query'][_0x47a5('0x2e')]));_0x4d6b57['attributes']=_0x4d6b57['attributes'][_0x47a5('0x2f')]?_0x4d6b57['attributes']:_0x256650[_0x47a5('0x2a')];if(!_0x9ac908['query'][_0x47a5('0x30')](_0x47a5('0x31'))){_0x4d6b57[_0x47a5('0x1b')]=qs[_0x47a5('0x1b')](_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x1b')]);_0x4d6b57[_0x47a5('0x1d')]=qs[_0x47a5('0x1d')](_0x9ac908[_0x47a5('0x2b')]['offset']);}_0x4d6b57[_0x47a5('0x32')]=qs[_0x47a5('0x33')](_0x9ac908['query'][_0x47a5('0x33')]);_0x4d6b57[_0x47a5('0x34')]=qs[_0x47a5('0x2c')](_['pick'](_0x9ac908[_0x47a5('0x2b')],_0x256650[_0x47a5('0x2c')]),_0x39b50b);if(_0x9ac908['query'][_0x47a5('0x35')]){_0x4d6b57[_0x47a5('0x34')]=_['merge'](_0x4d6b57['where'],{'$or':_['map'](_0x39b50b,function(_0x12d9f2){if(_0x12d9f2['type']!==_0x47a5('0x36')){var _0x1f9631={};_0x1f9631[_0x12d9f2[_0x47a5('0x26')]]={'$like':'%'+_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x35')]+'%'};return _0x1f9631;}})});}_0x4d6b57=_[_0x47a5('0x37')]({},_0x4d6b57,_0x9ac908[_0x47a5('0x38')]);var _0x1f3d01={'where':_0x4d6b57[_0x47a5('0x34')]};return db[_0x47a5('0x39')][_0x47a5('0x1c')](_0x1f3d01)[_0x47a5('0x21')](function(_0x23d6d8){_0x625952['count']=_0x23d6d8;if(_0x9ac908[_0x47a5('0x2b')][_0x47a5('0x3a')]){_0x4d6b57[_0x47a5('0x3b')]=[{'all':!![]}];}return db[_0x47a5('0x39')]['findAll'](_0x4d6b57);})[_0x47a5('0x21')](function(_0x528ef3){_0x625952['rows']=_0x528ef3;return _0x625952;})['then'](respondWithFilteredResult(_0x16901f,_0x4d6b57))['catch'](handleError(_0x16901f,null));};exports[_0x47a5('0x3c')]=function(_0x5ec4e5,_0x2bb502){var _0x3a740b={'raw':!![],'where':{'id':_0x5ec4e5['params']['id']}},_0x448610={};_0x448610[_0x47a5('0x2a')]=_[_0x47a5('0x3d')](db['AnalyticDefaultReport']['rawAttributes']);_0x448610[_0x47a5('0x2b')]=_['keys'](_0x5ec4e5[_0x47a5('0x2b')]);_0x448610[_0x47a5('0x2c')]=_[_0x47a5('0x2d')](_0x448610[_0x47a5('0x2a')],_0x448610[_0x47a5('0x2b')]);_0x3a740b[_0x47a5('0x3e')]=_[_0x47a5('0x2d')](_0x448610[_0x47a5('0x2a')],qs[_0x47a5('0x2e')](_0x5ec4e5[_0x47a5('0x2b')][_0x47a5('0x2e')]));_0x3a740b[_0x47a5('0x3e')]=_0x3a740b[_0x47a5('0x3e')][_0x47a5('0x2f')]?_0x3a740b[_0x47a5('0x3e')]:_0x448610[_0x47a5('0x2a')];if(_0x5ec4e5['query'][_0x47a5('0x3a')]){_0x3a740b[_0x47a5('0x3b')]=[{'all':!![]}];}_0x3a740b=_['merge']({},_0x3a740b,_0x5ec4e5['options']);return db[_0x47a5('0x39')]['find'](_0x3a740b)[_0x47a5('0x21')](handleEntityNotFound(_0x2bb502,null))[_0x47a5('0x21')](respondWithResult(_0x2bb502,null))['catch'](handleError(_0x2bb502,null));};exports['create']=function(_0x3d85cc,_0x52d409){return db[_0x47a5('0x39')][_0x47a5('0x3f')](_0x3d85cc[_0x47a5('0x40')],{})[_0x47a5('0x21')](function(_0x44fe8a){var _0x26acd2=_0x3d85cc[_0x47a5('0x41')]['get']({'plain':!![]});if(!_0x26acd2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x26acd2[_0x47a5('0x42')]===_0x47a5('0x41')){var _0x1163e3=_0x44fe8a[_0x47a5('0x43')]({'plain':!![]});var _0x2c7020=_0x47a5('0x44');return db[_0x47a5('0x45')]['find']({'where':{'name':_0x2c7020,'userProfileId':_0x26acd2[_0x47a5('0x46')]},'raw':!![]})[_0x47a5('0x21')](function(_0x5f6a){if(_0x5f6a&&_0x5f6a['autoAssociation']===0x0){return db[_0x47a5('0x47')]['create']({'name':_0x1163e3[_0x47a5('0x26')],'resourceId':_0x1163e3['id'],'type':_0x47a5('0x23'),'sectionId':_0x5f6a['id']},{})[_0x47a5('0x21')](function(){return _0x44fe8a;});}else{return _0x44fe8a;}})[_0x47a5('0x48')](function(_0x588551){logger[_0x47a5('0x24')](_0x47a5('0x49'),_0x588551);throw _0x588551;});}return _0x44fe8a;})[_0x47a5('0x21')](respondWithResult(_0x52d409,0xc9))[_0x47a5('0x48')](handleError(_0x52d409,null));};exports[_0x47a5('0x4a')]=function(_0x6a53b3,_0x24e9f4){if(_0x6a53b3['body']['id']){delete _0x6a53b3[_0x47a5('0x40')]['id'];}return db[_0x47a5('0x39')][_0x47a5('0x4b')]({'where':{'id':_0x6a53b3[_0x47a5('0x4c')]['id']}})[_0x47a5('0x21')](handleEntityNotFound(_0x24e9f4,null))[_0x47a5('0x21')](saveUpdates(_0x6a53b3['body'],null))[_0x47a5('0x21')](respondWithResult(_0x24e9f4,null))[_0x47a5('0x48')](handleError(_0x24e9f4,null));};exports[_0x47a5('0x22')]=function(_0x53871e,_0x4c5ed){return db[_0x47a5('0x39')][_0x47a5('0x4b')]({'where':{'id':_0x53871e['params']['id']}})['then'](handleEntityNotFound(_0x4c5ed,null))[_0x47a5('0x21')](removeEntity(_0x4c5ed,null))[_0x47a5('0x48')](handleError(_0x4c5ed,null));};exports['preview']=function(_0x4cf792,_0x6d6b2b){var _0x4d6a82=0xa;var _0x16bb8a=['join','left_join',_0x47a5('0x4d'),_0x47a5('0x4e')];var _0x53eedf={'SUM':_0x47a5('0x4f'),'COUNT':_0x47a5('0x50'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':_0x47a5('0x53'),'GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x199621={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':_0x47a5('0x56'),'HOUR':'HOUR(%s)','ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x485e3c=function(_0x470da6){return!_[_0x47a5('0x58')]([_0x47a5('0x59'),_0x47a5('0x5a'),'IS\x20EMPTY',_0x47a5('0x5b')],_0x470da6);};var _0x5d1550=function(_0x5cbe97){if(!_0x5cbe97||!_0x5cbe97['rules']['length']){return'';}for(var _0x212d92='(',_0x6cd4ea=0x0;_0x6cd4ea<_0x5cbe97[_0x47a5('0x5c')]['length'];_0x6cd4ea+=0x1){_0x6cd4ea>0x0&&(_0x212d92+='\x20'+_0x5cbe97['operator']+'\x20');_0x212d92+=_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5d')]?_0x5d1550(_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5d')]):_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea]['field']+'\x20'+_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea]['condition']+(_0x485e3c(_0x5cbe97[_0x47a5('0x5c')][_0x6cd4ea][_0x47a5('0x5e')])?'\x20'+_0x5cbe97['rules'][_0x6cd4ea][_0x47a5('0x5f')]:'');}return _0x212d92+')';};var _0x345104={'where':{'id':_0x4cf792[_0x47a5('0x4c')]['id']}},_0x132854,_0x3e8274,_0x2d6494,_0x215634,_0x35cca8;_0x345104=_['merge']({},_0x345104,_0x4cf792[_0x47a5('0x38')]);return db[_0x47a5('0x39')][_0x47a5('0x4b')](_0x345104)[_0x47a5('0x21')](function(_0x396cb0){if(_0x396cb0){_0x132854=_0x396cb0;return _0x396cb0['getFields']();}return null;})[_0x47a5('0x21')](function(_0xdfcecc){if(_0xdfcecc){if(!_0xdfcecc[_0x47a5('0x2f')]){throw new db[(_0x47a5('0x60'))][(_0x47a5('0x61'))](_0x47a5('0x62'),0x193);}_0x3e8274=_0xdfcecc;return db[_0x47a5('0x63')][_0x47a5('0x64')]({'raw':!![]});}return null;})[_0x47a5('0x21')](function(_0x44cb90){if(_0x44cb90){_0x2d6494=_[_0x47a5('0x65')](_0x44cb90,'id');var _0x44fda9;var _0x3c0006=squel[_0x47a5('0x66')]();_0x3c0006[_0x47a5('0x67')](_0x132854['table']);for(var _0x42dd7d=0x0;_0x42dd7d<_0x3e8274[_0x47a5('0x2f')];_0x42dd7d+=0x1){_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x68')]?_0x2d6494[_0x3e8274[_0x42dd7d]['MetricId']][_0x47a5('0x69')]:_0x3e8274[_0x42dd7d][_0x47a5('0x6a')];_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x6b')]?_[_0x47a5('0x6c')](_0x53eedf[_0x3e8274[_0x42dd7d]['function']],'%s',_0x44fda9):_0x44fda9;_0x44fda9=_0x3e8274[_0x42dd7d][_0x47a5('0x6d')]?_['replace'](_0x199621[_0x3e8274[_0x42dd7d][_0x47a5('0x6d')]],'%s',_0x44fda9):_0x44fda9;if(_0x3e8274[_0x42dd7d]['groupBy']){_0x3c0006[_0x47a5('0x5d')](_0x44fda9);}_0x3e8274[_0x42dd7d]['orderBy']&&_0x3c0006[_0x47a5('0x32')](_0x44fda9,_0x3e8274[_0x42dd7d][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x3c0006['field'](_0x44fda9,_0x3e8274[_0x42dd7d]['alias']||_0x44fda9);}if(_0x132854['joins']){_0x132854[_0x47a5('0x70')]=JSON[_0x47a5('0x71')](_0x132854[_0x47a5('0x70')]);for(var _0x117510=0x0;_0x117510<_0x132854['joins'][_0x47a5('0x2f')];_0x117510+=0x1){if(_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x72')]&&_[_0x47a5('0x58')](_0x16bb8a,_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x72')])&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x73')]&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x74')]&&_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x75')]){_0x3c0006[_0x132854['joins'][_0x117510][_0x47a5('0x72')]](_0x132854['joins'][_0x117510][_0x47a5('0x74')],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x132854[_0x47a5('0x77')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x73')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x74')],_0x132854[_0x47a5('0x70')][_0x117510][_0x47a5('0x75')]));}}}if(_0x132854[_0x47a5('0x78')]){_0x132854[_0x47a5('0x78')]=JSON[_0x47a5('0x71')](_0x132854[_0x47a5('0x78')]);_0x3c0006[_0x47a5('0x34')](_0x5d1550(_0x132854['conditions']['group']));}_0x35cca8=_0x3c0006['clone']();_0x3c0006['limit'](_0x4d6a82);_0x3c0006[_0x47a5('0x1d')](0x0);logger[_0x47a5('0x79')]('Limited\x20Query:',_0x3c0006[_0x47a5('0x7a')]());return dbH[_0x47a5('0x7b')][_0x47a5('0x2b')](_0x3c0006[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')][_0x47a5('0x7d')]});}})[_0x47a5('0x21')](respondWithResult(_0x6d6b2b,null))[_0x47a5('0x48')](handleError(_0x6d6b2b,null));};function runReport(_0x1ffe3c,_0x24a6c1,_0x5e5f16){var _0x18fa31=_0x24a6c1[_0x47a5('0x26')];var _0x420671=0xa;var _0x4f35ff=[_0x47a5('0x7e'),_0x47a5('0x7f'),_0x47a5('0x4d'),'cross_join'];var _0x19dc8c={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x80'),'MAX':_0x47a5('0x81'),'MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':_0x47a5('0x53'),'GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x592322={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':'DATE(%s)','HOUR':_0x47a5('0x82'),'ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':_0x47a5('0x83')};var _0xb16bdd=function(_0x53ea2b){return!_[_0x47a5('0x58')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x47a5('0x84'),_0x47a5('0x5b')],_0x53ea2b);};var _0x5b91f7=function(_0x1926bd){if(!_0x1926bd||!_0x1926bd[_0x47a5('0x5c')][_0x47a5('0x2f')]){return'';}for(var _0x4c25ec='(',_0x280372=0x0;_0x280372<_0x1926bd['rules'][_0x47a5('0x2f')];_0x280372+=0x1){_0x280372>0x0&&(_0x4c25ec+='\x20'+_0x1926bd[_0x47a5('0x85')]+'\x20');_0x4c25ec+=_0x1926bd[_0x47a5('0x5c')][_0x280372]['group']?_0x5b91f7(_0x1926bd[_0x47a5('0x5c')][_0x280372][_0x47a5('0x5d')]):_0x1926bd[_0x47a5('0x5c')][_0x280372]['field']+'\x20'+_0x1926bd[_0x47a5('0x5c')][_0x280372]['condition']+(_0xb16bdd(_0x1926bd[_0x47a5('0x5c')][_0x280372]['condition'])?'\x20'+_0x1926bd[_0x47a5('0x5c')][_0x280372][_0x47a5('0x5f')]:'');}return _0x4c25ec+')';};var _0x20a742={'where':{'id':_0x1ffe3c['id']}},_0x211fbf,_0x51738b,_0x42fcce,_0x2ae130,_0x23c393;_0x20a742=_[_0x47a5('0x37')]({},_0x20a742,_0x5e5f16);return db[_0x47a5('0x39')]['find'](_0x20a742)['then'](function(_0x569550){if(_0x569550){_0x211fbf=_0x569550;return _0x569550['getFields']();}return null;})[_0x47a5('0x21')](function(_0xa8809a){if(_0xa8809a){if(!_0xa8809a[_0x47a5('0x2f')]){throw new db['Sequelize'][(_0x47a5('0x61'))](_0x47a5('0x62'),0x193);}_0x51738b=_0xa8809a;return db['AnalyticMetric'][_0x47a5('0x64')]({'raw':!![]});}return null;})[_0x47a5('0x21')](function(_0x19acfa){if(_0x19acfa){_0x42fcce=_[_0x47a5('0x65')](_0x19acfa,'id');var _0x58dacd;var _0x4b5353=squel[_0x47a5('0x66')]();_0x4b5353[_0x47a5('0x67')](_0x211fbf['table']);for(var _0x27d422=0x0;_0x27d422<_0x51738b[_0x47a5('0x2f')];_0x27d422+=0x1){_0x58dacd=_0x51738b[_0x27d422]['MetricId']?_0x42fcce[_0x51738b[_0x27d422][_0x47a5('0x68')]][_0x47a5('0x69')]:_0x51738b[_0x27d422][_0x47a5('0x6a')];_0x58dacd=_0x51738b[_0x27d422]['function']?_[_0x47a5('0x6c')](_0x19dc8c[_0x51738b[_0x27d422]['function']],'%s',_0x58dacd):_0x58dacd;_0x58dacd=_0x51738b[_0x27d422][_0x47a5('0x6d')]?_['replace'](_0x592322[_0x51738b[_0x27d422][_0x47a5('0x6d')]],'%s',_0x58dacd):_0x58dacd;if(_0x51738b[_0x27d422][_0x47a5('0x86')]){_0x4b5353['group'](_0x58dacd);}_0x51738b[_0x27d422][_0x47a5('0x6e')]&&_0x4b5353['order'](_0x58dacd,_0x51738b[_0x27d422][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x4b5353[_0x47a5('0x6a')](_0x58dacd,_0x51738b[_0x27d422][_0x47a5('0x87')]||_0x58dacd);}if(_0x211fbf['joins']){_0x211fbf[_0x47a5('0x70')]=JSON['parse'](_0x211fbf['joins']);for(var _0x2bb2df=0x0;_0x2bb2df<_0x211fbf[_0x47a5('0x70')][_0x47a5('0x2f')];_0x2bb2df+=0x1){if(_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')]&&_['includes'](_0x4f35ff,_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')])&&_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x73')]&&_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x74')]&&_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x75')]){_0x4b5353[_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x72')]](_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x74')],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x211fbf[_0x47a5('0x77')],_0x211fbf[_0x47a5('0x70')][_0x2bb2df]['parentKey'],_0x211fbf[_0x47a5('0x70')][_0x2bb2df][_0x47a5('0x74')],_0x211fbf['joins'][_0x2bb2df][_0x47a5('0x75')]));}}}if(_0x211fbf[_0x47a5('0x78')]){_0x211fbf[_0x47a5('0x78')]=JSON['parse'](_0x211fbf['conditions']);_0x4b5353[_0x47a5('0x34')](_0x5b91f7(_0x211fbf[_0x47a5('0x78')]['group']));}_0x23c393=_0x4b5353['clone']();_0x4b5353[_0x47a5('0x1b')](_0x420671);_0x4b5353[_0x47a5('0x1d')](0x0);return;}})['then'](function(){if(_0x24a6c1[_0x47a5('0x88')]===_0x47a5('0x89')){return null;}var _0x4c9e6a=_[_0x47a5('0x37')](_0x24a6c1,{'name':_0x24a6c1[_0x47a5('0x8a')]||_0x24a6c1[_0x47a5('0x26')]||_0x211fbf[_0x47a5('0x26')],'basename':_0x18fa31,'savename':util[_0x47a5('0x6d')](_0x47a5('0x8b'),_0x24a6c1['name']||_0x211fbf['name'],require('randomstring')[_0x47a5('0x8c')](0x4),_0x24a6c1[_0x47a5('0x88')]||'csv'),'reportId':_0x211fbf['id'],'reportType':_0x47a5('0x8d')});return db[_0x47a5('0x8e')][_0x47a5('0x3f')](_0x4c9e6a,{'raw':!![]});})[_0x47a5('0x21')](function(_0xcdbfd7){if(_0x211fbf['table']===_0x47a5('0x8f')){_0x23c393['where'](_0x211fbf['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x24a6c1[_0x47a5('0x90')],_0x24a6c1['endDate']);}else{_0x23c393[_0x47a5('0x34')](_0x211fbf[_0x47a5('0x77')]+_0x47a5('0x91'),_0x24a6c1['startDate'],_0x24a6c1[_0x47a5('0x92')]);}if(_0xcdbfd7){logger[_0x47a5('0x93')](_0x47a5('0x94'),_0x23c393[_0x47a5('0x7a')]());require(_0x47a5('0x95'))['fork'](path[_0x47a5('0x7e')](__dirname,_0x47a5('0x96'),_0xcdbfd7['output']),[_0xcdbfd7['id'],_0x23c393[_0x47a5('0x7a')](),path[_0x47a5('0x7e')](__dirname,_0x47a5('0x97'),_0xcdbfd7[_0x47a5('0x98')]),_0x18fa31]);return _0xcdbfd7;}else{var _0x3c117a=squel[_0x47a5('0x66')]();_0x3c117a['from']('('+_0x23c393[_0x47a5('0x7a')]()+')',_0x47a5('0x99'));_0x3c117a['field'](_0x47a5('0x9a'),_0x47a5('0x1c'));_0x23c393[_0x47a5('0x1b')](_0x24a6c1[_0x47a5('0x1b')]||_0x420671);_0x23c393['offset'](_0x24a6c1['offset']||0x0);return dbH['sequelize']['query'](_0x3c117a[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')][_0x47a5('0x7d')]})[_0x47a5('0x21')](function(_0x6bc37b){if(!_0x6bc37b[_0x47a5('0x2f')]){_0x2ae130=0x0;}else{_0x2ae130=_0x6bc37b[0x0][_0x47a5('0x1c')]||0x0;}return dbH['sequelize'][_0x47a5('0x2b')](_0x23c393[_0x47a5('0x7a')](),{'type':dbH[_0x47a5('0x7b')][_0x47a5('0x7c')]['SELECT']});})['then'](function(_0x3770ae){return{'rows':_0x3770ae||[],'count':_0x2ae130};});}});}exports['run']=function(_0x4cb8e4,_0x1b6a5c){return runReport(_0x4cb8e4[_0x47a5('0x4c')],_0x4cb8e4['query'],_0x4cb8e4[_0x47a5('0x38')])[_0x47a5('0x21')](respondWithResult(_0x1b6a5c,null))[_0x47a5('0x48')](handleError(_0x1b6a5c,null));};exports['runReport']=runReport;exports[_0x47a5('0x2b')]=function(_0xee23c7,_0x48a491){var _0x1172fd=0xa;var _0x280b7b=[_0x47a5('0x7e'),_0x47a5('0x7f'),_0x47a5('0x4d'),_0x47a5('0x4e')];var _0x482c87={'SUM':_0x47a5('0x4f'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x80'),'MAX':_0x47a5('0x81'),'MIN':_0x47a5('0x51'),'AVG':_0x47a5('0x52'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x47a5('0x54'),'GROUP_CONCAT DESC':_0x47a5('0x9b')};var _0x151540={'SEC_TO_TIME':_0x47a5('0x55'),'DATE':_0x47a5('0x56'),'HOUR':_0x47a5('0x82'),'ROUND':_0x47a5('0x57'),'UNIX_TIMESTAMP':_0x47a5('0x83')};var _0x1b3e82=function(_0xa2045c){return!_[_0x47a5('0x58')]([_0x47a5('0x59'),'IS\x20NOT\x20NULL',_0x47a5('0x84'),_0x47a5('0x5b')],_0xa2045c);};var _0x591bde=function(_0x55d955){if(!_0x55d955||!_0x55d955[_0x47a5('0x5c')][_0x47a5('0x2f')]){return'';}for(var _0x2ccf21='(',_0x2ff467=0x0;_0x2ff467<_0x55d955['rules'][_0x47a5('0x2f')];_0x2ff467+=0x1){_0x2ff467>0x0&&(_0x2ccf21+='\x20'+_0x55d955[_0x47a5('0x85')]+'\x20');_0x2ccf21+=_0x55d955[_0x47a5('0x5c')][_0x2ff467][_0x47a5('0x5d')]?_0x591bde(_0x55d955[_0x47a5('0x5c')][_0x2ff467][_0x47a5('0x5d')]):_0x55d955[_0x47a5('0x5c')][_0x2ff467]['field']+'\x20'+_0x55d955['rules'][_0x2ff467][_0x47a5('0x5e')]+(_0x1b3e82(_0x55d955['rules'][_0x2ff467][_0x47a5('0x5e')])?'\x20'+_0x55d955['rules'][_0x2ff467][_0x47a5('0x5f')]:'');}return _0x2ccf21+')';};var _0x8b4354={'where':{'id':_0xee23c7[_0x47a5('0x4c')]['id']}},_0x134c1a,_0x2bc7ae,_0x49cb8c,_0x220557,_0x11f07b;_0x8b4354=_['merge']({},_0x8b4354,_0xee23c7['options']);return db[_0x47a5('0x39')][_0x47a5('0x4b')](_0x8b4354)[_0x47a5('0x21')](function(_0xfccf9c){if(_0xfccf9c){_0x134c1a=_0xfccf9c;return _0xfccf9c[_0x47a5('0x9c')]();}return null;})[_0x47a5('0x21')](function(_0x1c0323){if(_0x1c0323){if(!_0x1c0323[_0x47a5('0x2f')]){throw new db['Sequelize'][(_0x47a5('0x61'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2bc7ae=_0x1c0323;return db[_0x47a5('0x63')][_0x47a5('0x64')]({'raw':!![]});}return null;})['then'](function(_0x48d4cf){if(_0x48d4cf){_0x49cb8c=_[_0x47a5('0x65')](_0x48d4cf,'id');var _0x41d2da;var _0x530387=squel[_0x47a5('0x66')]();_0x530387[_0x47a5('0x67')](_0x134c1a[_0x47a5('0x77')]);for(var _0x44567e=0x0;_0x44567e<_0x2bc7ae['length'];_0x44567e+=0x1){_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x68')]?_0x49cb8c[_0x2bc7ae[_0x44567e]['MetricId']]['metric']:_0x2bc7ae[_0x44567e]['field'];_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x6b')]?_['replace'](_0x482c87[_0x2bc7ae[_0x44567e][_0x47a5('0x6b')]],'%s',_0x41d2da):_0x41d2da;_0x41d2da=_0x2bc7ae[_0x44567e][_0x47a5('0x6d')]?_[_0x47a5('0x6c')](_0x151540[_0x2bc7ae[_0x44567e][_0x47a5('0x6d')]],'%s',_0x41d2da):_0x41d2da;if(_0x2bc7ae[_0x44567e][_0x47a5('0x86')]){_0x530387[_0x47a5('0x5d')](_0x41d2da);}_0x2bc7ae[_0x44567e][_0x47a5('0x6e')]&&_0x530387[_0x47a5('0x32')](_0x41d2da,_0x2bc7ae[_0x44567e][_0x47a5('0x6e')]===_0x47a5('0x6f')?![]:!![]);_0x530387[_0x47a5('0x6a')](_0x41d2da,_0x2bc7ae[_0x44567e][_0x47a5('0x87')]||_0x41d2da);}if(_0x134c1a[_0x47a5('0x70')]){_0x134c1a[_0x47a5('0x70')]=JSON[_0x47a5('0x71')](_0x134c1a['joins']);for(var _0xdd95c8=0x0;_0xdd95c8<_0x134c1a[_0x47a5('0x70')][_0x47a5('0x2f')];_0xdd95c8+=0x1){if(_0x134c1a[_0x47a5('0x70')][_0xdd95c8]['type']&&_[_0x47a5('0x58')](_0x280b7b,_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x72')])&&_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x73')]&&_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x74')]&&_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x75')]){_0x530387[_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x72')]](_0x134c1a['joins'][_0xdd95c8]['foreignTable'],null,util[_0x47a5('0x6d')](_0x47a5('0x76'),_0x134c1a[_0x47a5('0x77')],_0x134c1a[_0x47a5('0x70')][_0xdd95c8][_0x47a5('0x73')],_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x74')],_0x134c1a['joins'][_0xdd95c8][_0x47a5('0x75')]));}}}if(_0x134c1a[_0x47a5('0x78')]){_0x134c1a[_0x47a5('0x78')]=JSON[_0x47a5('0x71')](_0x134c1a['conditions']);_0x530387['where'](_0x591bde(_0x134c1a[_0x47a5('0x78')][_0x47a5('0x5d')]));}_0x11f07b=_0x530387[_0x47a5('0x9d')]();_0x530387[_0x47a5('0x1b')](_0x1172fd);_0x530387[_0x47a5('0x1d')](0x0);logger[_0x47a5('0x79')](_0x47a5('0x9e'),_0x530387[_0x47a5('0x7a')]());return dbH[_0x47a5('0x7b')]['query'](_0x530387['toString'](),{'type':dbH[_0x47a5('0x7b')]['QueryTypes'][_0x47a5('0x7d')]});}})[_0x47a5('0x21')](function(){return{'sql':_0x11f07b[_0x47a5('0x7a')]()};})['then'](respondWithResult(_0x48a491,null))[_0x47a5('0x48')](handleError(_0x48a491,null));};
\ No newline at end of file
index 3398db2..46259aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaa4=['../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','../../config/logger','api','request-promise','path','rimraf'];(function(_0x453b0e,_0x42fd52){var _0x1fc9b8=function(_0x5e8a28){while(--_0x5e8a28){_0x453b0e['push'](_0x453b0e['shift']());}};_0x1fc9b8(++_0x42fd52);}(_0xbaa4,0x1ce));var _0x4baa=function(_0x5e485c,_0x39cd4c){_0x5e485c=_0x5e485c-0x0;var _0x1ea823=_0xbaa4[_0x5e485c];return _0x1ea823;};'use strict';var _=require(_0x4baa('0x0'));var util=require('util');var logger=require(_0x4baa('0x1'))(_0x4baa('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4baa('0x3'));var fs=require('fs');var path=require(_0x4baa('0x4'));var rimraf=require(_0x4baa('0x5'));var config=require(_0x4baa('0x6'));var attributes=require(_0x4baa('0x7'));module[_0x4baa('0x8')]=function(_0x103a0f,_0x47b892){return _0x103a0f[_0x4baa('0x9')](_0x4baa('0xa'),attributes,{'tableName':_0x4baa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6b4=['moment','request-promise','path','rimraf','exports','define','util','../../config/logger','api'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0xc6b4,0xa8));var _0x4c6b=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xc6b4[_0x26b8b5];return _0x2150a9;};'use strict';var _=require('lodash');var util=require(_0x4c6b('0x0'));var logger=require(_0x4c6b('0x1'))(_0x4c6b('0x2'));var moment=require(_0x4c6b('0x3'));var BPromise=require('bluebird');var rp=require(_0x4c6b('0x4'));var fs=require('fs');var path=require(_0x4c6b('0x5'));var rimraf=require(_0x4c6b('0x6'));var config=require('../../config/environment');var attributes=require('./analyticDefaultReport.attributes');module[_0x4c6b('0x7')]=function(_0x598e46,_0x3a7358){return _0x598e46[_0x4c6b('0x8')]('AnalyticDefaultReport',attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e9bef0..3c0809a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f22=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x5ed0f0,_0x2b1700){var _0x46dac5=function(_0x260c94){while(--_0x260c94){_0x5ed0f0['push'](_0x5ed0f0['shift']());}};_0x46dac5(++_0x2b1700);}(_0x3f22,0x152));var _0x23f2=function(_0x24f772,_0x3f57d1){_0x24f772=_0x24f772-0x0;var _0x151760=_0x3f22[_0x24f772];return _0x151760;};'use strict';var _=require(_0x23f2('0x0'));var util=require(_0x23f2('0x1'));var moment=require(_0x23f2('0x2'));var BPromise=require(_0x23f2('0x3'));var rs=require(_0x23f2('0x4'));var fs=require('fs');var Redis=require(_0x23f2('0x5'));var db=require(_0x23f2('0x6'))['db'];var utils=require(_0x23f2('0x7'));var logger=require(_0x23f2('0x8'))('rpc');var config=require(_0x23f2('0x9'));var jayson=require(_0x23f2('0xa'));var client=jayson[_0x23f2('0xb')][_0x23f2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12bddd,_0x3f8eff,_0x1225ce){return new BPromise(function(_0x3327b1,_0x3b43cc){return client[_0x23f2('0xd')](_0x12bddd,_0x1225ce)[_0x23f2('0xe')](function(_0x42c73f){logger[_0x23f2('0xf')](_0x23f2('0x10'),_0x3f8eff,_0x23f2('0x11'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x3f8eff,_0x23f2('0x11'),JSON['stringify'](_0x42c73f));if(_0x42c73f['error']){if(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x13')]===0x1f4){logger[_0x23f2('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);return _0x3b43cc(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);}logger[_0x23f2('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);return _0x3327b1(_0x42c73f[_0x23f2('0x12')][_0x23f2('0x14')]);}else{logger[_0x23f2('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3f8eff,_0x23f2('0x11'));_0x3327b1(_0x42c73f['result']['message']);}})[_0x23f2('0x15')](function(_0x18c2f6){logger[_0x23f2('0x12')](_0x23f2('0x10'),_0x3f8eff,_0x18c2f6);_0x3b43cc(_0x18c2f6);});});}
\ No newline at end of file
+var _0x2da8=['bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2da8,0xae));var _0x82da=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2da8[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0x82da('0x0'));var moment=require(_0x82da('0x1'));var BPromise=require(_0x82da('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x82da('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x82da('0x4'));var logger=require('../../config/logger')(_0x82da('0x5'));var config=require(_0x82da('0x6'));var jayson=require(_0x82da('0x7'));var client=jayson[_0x82da('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x576631,_0x3a4b91,_0x21a87e){return new BPromise(function(_0x46e80d,_0xf8dae2){return client[_0x82da('0x9')](_0x576631,_0x21a87e)[_0x82da('0xa')](function(_0x55f50c){logger[_0x82da('0xb')](_0x82da('0xc'),_0x3a4b91,'request\x20sent');logger[_0x82da('0xd')](_0x82da('0xe'),_0x3a4b91,_0x82da('0xf'),JSON[_0x82da('0x10')](_0x55f50c));if(_0x55f50c[_0x82da('0x11')]){if(_0x55f50c[_0x82da('0x11')][_0x82da('0x12')]===0x1f4){logger[_0x82da('0x11')](_0x82da('0xc'),_0x3a4b91,_0x55f50c[_0x82da('0x11')][_0x82da('0x13')]);return _0xf8dae2(_0x55f50c['error'][_0x82da('0x13')]);}logger[_0x82da('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3a4b91,_0x55f50c[_0x82da('0x11')][_0x82da('0x13')]);return _0x46e80d(_0x55f50c['error']['message']);}else{logger[_0x82da('0xb')](_0x82da('0xc'),_0x3a4b91,_0x82da('0xf'));_0x46e80d(_0x55f50c[_0x82da('0x14')][_0x82da('0x13')]);}})[_0x82da('0x15')](function(_0x42ad85){logger[_0x82da('0x11')](_0x82da('0xc'),_0x3a4b91,_0x42ad85);_0xf8dae2(_0x42ad85);});});}
\ No newline at end of file
index baeac6f..859511b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6183=['isAuthenticated','index','get','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','/:id','update','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller'];(function(_0x1e91eb,_0x5829a3){var _0x2af75a=function(_0x1815d1){while(--_0x1815d1){_0x1e91eb['push'](_0x1e91eb['shift']());}};_0x2af75a(++_0x5829a3);}(_0x6183,0xad));var _0x3618=function(_0x5cc8b9,_0x20e3c3){_0x5cc8b9=_0x5cc8b9-0x0;var _0x58892e=_0x6183[_0x5cc8b9];return _0x58892e;};'use strict';var multer=require(_0x3618('0x0'));var util=require(_0x3618('0x1'));var path=require(_0x3618('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3618('0x3')]();var fs_extra=require(_0x3618('0x4'));var auth=require(_0x3618('0x5'));var interaction=require(_0x3618('0x6'));var config=require(_0x3618('0x7'));var controller=require(_0x3618('0x8'));router['get']('/',auth[_0x3618('0x9')](),controller[_0x3618('0xa')]);router[_0x3618('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x3618('0xc')]);router[_0x3618('0xb')](_0x3618('0xd'),auth[_0x3618('0x9')](),controller[_0x3618('0xe')]);router[_0x3618('0xb')](_0x3618('0xf'),auth[_0x3618('0x9')](),controller[_0x3618('0x10')]);router[_0x3618('0xb')](_0x3618('0x11'),auth[_0x3618('0x9')](),controller[_0x3618('0x12')]);router[_0x3618('0x13')]('/',auth['isAuthenticated'](),controller[_0x3618('0x14')]);router[_0x3618('0x15')](_0x3618('0x16'),auth[_0x3618('0x9')](),controller[_0x3618('0x17')]);router['delete'](_0x3618('0x16'),auth[_0x3618('0x9')](),controller[_0x3618('0x18')]);module[_0x3618('0x19')]=router;
\ No newline at end of file
+var _0xa34b=['query','post','create','/:id','update','exports','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','index','isAuthenticated','show','/:id/preview','/:id/run','run'];(function(_0x2a5b91,_0xd54427){var _0x505beb=function(_0xe06a70){while(--_0xe06a70){_0x2a5b91['push'](_0x2a5b91['shift']());}};_0x505beb(++_0xd54427);}(_0xa34b,0x6a));var _0xba34=function(_0x6186a8,_0x5385c4){_0x6186a8=_0x6186a8-0x0;var _0xf72248=_0xa34b[_0x6186a8];return _0xf72248;};'use strict';var multer=require('multer');var util=require(_0xba34('0x0'));var path=require('path');var timeout=require(_0xba34('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xba34('0x2'));var auth=require(_0xba34('0x3'));var interaction=require(_0xba34('0x4'));var config=require(_0xba34('0x5'));var controller=require(_0xba34('0x6'));router[_0xba34('0x7')]('/',auth['isAuthenticated'](),controller[_0xba34('0x8')]);router[_0xba34('0x7')]('/:id',auth[_0xba34('0x9')](),controller[_0xba34('0xa')]);router[_0xba34('0x7')](_0xba34('0xb'),auth[_0xba34('0x9')](),controller['preview']);router[_0xba34('0x7')](_0xba34('0xc'),auth[_0xba34('0x9')](),controller[_0xba34('0xd')]);router['get']('/:id/query',auth[_0xba34('0x9')](),controller[_0xba34('0xe')]);router[_0xba34('0xf')]('/',auth[_0xba34('0x9')](),controller[_0xba34('0x10')]);router['put'](_0xba34('0x11'),auth['isAuthenticated'](),controller[_0xba34('0x12')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xba34('0x13')]=router;
\ No newline at end of file
index ef4f028..966595e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3073=['scheduled','manual','UNSIGNED','sequelize','exports','STRING','ENUM','csv','xlsx','DATE','Loading'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3073,0x142));var _0x3307=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x3073[_0x37c22c];return _0x119d79;};'use strict';var Sequelize=require(_0x3307('0x0'));var moment=require('moment');module[_0x3307('0x1')]={'name':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x3307('0x3')](_0x3307('0x4'),'pdf',_0x3307('0x5')),'allowNull':![],'defaultValue':_0x3307('0x4')},'savename':{'type':Sequelize[_0x3307('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3307('0x6')]},'endDate':{'type':Sequelize[_0x3307('0x6')]},'status':{'type':Sequelize[_0x3307('0x2')],'defaultValue':_0x3307('0x7')},'type':{'type':Sequelize[_0x3307('0x3')]('manual',_0x3307('0x8')),'allowNull':![],'defaultValue':_0x3307('0x9')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x3307('0xa')]},'reportType':{'type':Sequelize[_0x3307('0x2')]}};
\ No newline at end of file
+var _0x6e32=['manual','INTEGER','UNSIGNED','sequelize','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','scheduled'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6e32,0x121));var _0x26e3=function(_0x10debb,_0x5d11e9){_0x10debb=_0x10debb-0x0;var _0x116297=_0x6e32[_0x10debb];return _0x116297;};'use strict';var Sequelize=require(_0x26e3('0x0'));var moment=require('moment');module[_0x26e3('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x26e3('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x26e3('0x3')](_0x26e3('0x4'),_0x26e3('0x5'),_0x26e3('0x6')),'allowNull':![],'defaultValue':_0x26e3('0x4')},'savename':{'type':Sequelize[_0x26e3('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x26e3('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize['STRING'],'defaultValue':_0x26e3('0x8')},'type':{'type':Sequelize['ENUM']('manual',_0x26e3('0x9')),'allowNull':![],'defaultValue':_0x26e3('0xa')},'reportId':{'type':Sequelize[_0x26e3('0xb')](0xb)[_0x26e3('0xc')]},'reportType':{'type':Sequelize[_0x26e3('0x2')]}};
\ No newline at end of file
index d4d8259..6156ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d1f=['body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','userProfileId','autoAssociation','error','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','format','%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','UserProfileResource','destroy','stack','name','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','show','params','includeAll','include','find','catch','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9d1f,0x196));var _0xf9d1=function(_0x39e164,_0x2cb93b){_0x39e164=_0x39e164-0x0;var _0x13fa6b=_0x9d1f[_0x39e164];return _0x13fa6b;};'use strict';var emlformat=require(_0xf9d1('0x0'));var rimraf=require(_0xf9d1('0x1'));var zipdir=require(_0xf9d1('0x2'));var jsonpatch=require(_0xf9d1('0x3'));var rp=require(_0xf9d1('0x4'));var moment=require(_0xf9d1('0x5'));var BPromise=require(_0xf9d1('0x6'));var Mustache=require(_0xf9d1('0x7'));var util=require(_0xf9d1('0x8'));var path=require(_0xf9d1('0x9'));var sox=require(_0xf9d1('0xa'));var csv=require(_0xf9d1('0xb'));var ejs=require(_0xf9d1('0xc'));var fs=require('fs');var fs_extra=require(_0xf9d1('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf9d1('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf9d1('0xb'));var querystring=require(_0xf9d1('0xf'));var Papa=require(_0xf9d1('0x10'));var Redis=require(_0xf9d1('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf9d1('0x12'));var as=require(_0xf9d1('0x13'));var hardwareService=require(_0xf9d1('0x14'));var logger=require(_0xf9d1('0x15'))(_0xf9d1('0x16'));var utils=require(_0xf9d1('0x17'));var config=require(_0xf9d1('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9d1('0x19'))['db'];function respondWithStatusCode(_0x38f657,_0x355443){_0x355443=_0x355443||0xcc;return function(_0x28575c){if(_0x28575c){return _0x38f657[_0xf9d1('0x1a')](_0x355443);}return _0x38f657[_0xf9d1('0x1b')](_0x355443)['end']();};}function respondWithResult(_0x220be5,_0xe718ea){_0xe718ea=_0xe718ea||0xc8;return function(_0x1335a2){if(_0x1335a2){return _0x220be5[_0xf9d1('0x1b')](_0xe718ea)[_0xf9d1('0x1c')](_0x1335a2);}};}function respondWithFilteredResult(_0x40cc9b,_0x4e1207){return function(_0x197738){if(_0x197738){var _0x2fbddf=typeof _0x4e1207[_0xf9d1('0x1d')]===_0xf9d1('0x1e')&&typeof _0x4e1207['limit']===_0xf9d1('0x1e');var _0x527c2a=_0x197738['count'];var _0x3f83c3=_0x2fbddf?0x0:_0x4e1207['offset'];var _0x5e6e5d=_0x2fbddf?_0x197738[_0xf9d1('0x1f')]:_0x4e1207['offset']+_0x4e1207[_0xf9d1('0x20')];var _0x31480b;if(_0x5e6e5d>=_0x527c2a){_0x5e6e5d=_0x527c2a;_0x31480b=0xc8;}else{_0x31480b=0xce;}_0x40cc9b['status'](_0x31480b);return _0x40cc9b[_0xf9d1('0x21')](_0xf9d1('0x22'),_0x3f83c3+'-'+_0x5e6e5d+'/'+_0x527c2a)['json'](_0x197738);}return null;};}function patchUpdates(_0x372d31){return function(_0x17ce6d){try{jsonpatch[_0xf9d1('0x23')](_0x17ce6d,_0x372d31,!![]);}catch(_0x40d8bd){return BPromise[_0xf9d1('0x24')](_0x40d8bd);}return _0x17ce6d['save']();};}function saveUpdates(_0x23cc35,_0x1dacd9){return function(_0x26a56c){if(_0x26a56c){return _0x26a56c[_0xf9d1('0x25')](_0x23cc35)['then'](function(_0x58b273){return _0x58b273;});}return null;};}function removeEntity(_0x267797,_0x210dfa){return function(_0x391047){if(_0x391047){return _0x391047['destroy']()[_0xf9d1('0x26')](function(){var _0x26fcff=_0x391047['get']({'plain':!![]});var _0x256681='ExtractedReports';return db[_0xf9d1('0x27')][_0xf9d1('0x28')]({'where':{'type':_0x256681,'resourceId':_0x26fcff['id']}})[_0xf9d1('0x26')](function(){return _0x391047;});})[_0xf9d1('0x26')](function(){_0x267797[_0xf9d1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31c2c0,_0x1ef713){return function(_0x3d4dd4){if(!_0x3d4dd4){_0x31c2c0[_0xf9d1('0x1a')](0x194);}return _0x3d4dd4;};}function handleError(_0x11aa0c,_0x4c3951){_0x4c3951=_0x4c3951||0x1f4;return function(_0x224581){logger['error'](_0x224581[_0xf9d1('0x29')]);if(_0x224581['name']){delete _0x224581[_0xf9d1('0x2a')];}_0x11aa0c[_0xf9d1('0x1b')](_0x4c3951)['send'](_0x224581);};}exports['index']=function(_0x3e46d1,_0x5f2675){var _0x28c213={},_0x120e5f={},_0xc899fb={'count':0x0,'rows':[]};var _0x365854=_[_0xf9d1('0x2b')](db[_0xf9d1('0x2c')][_0xf9d1('0x2d')],function(_0x1c009d){return{'name':_0x1c009d[_0xf9d1('0x2e')],'type':_0x1c009d[_0xf9d1('0x2f')][_0xf9d1('0x30')]};});_0x120e5f[_0xf9d1('0x31')]=_[_0xf9d1('0x2b')](_0x365854,'name');_0x120e5f['query']=_[_0xf9d1('0x32')](_0x3e46d1[_0xf9d1('0x33')]);_0x120e5f['filters']=_[_0xf9d1('0x34')](_0x120e5f['model'],_0x120e5f['query']);_0x28c213[_0xf9d1('0x35')]=_[_0xf9d1('0x34')](_0x120e5f[_0xf9d1('0x31')],qs['fields'](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x36')]));_0x28c213[_0xf9d1('0x35')]=_0x28c213[_0xf9d1('0x35')][_0xf9d1('0x37')]?_0x28c213[_0xf9d1('0x35')]:_0x120e5f[_0xf9d1('0x31')];if(!_0x3e46d1[_0xf9d1('0x33')]['hasOwnProperty'](_0xf9d1('0x38'))){_0x28c213[_0xf9d1('0x20')]=qs[_0xf9d1('0x20')](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x20')]);_0x28c213[_0xf9d1('0x1d')]=qs['offset'](_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x1d')]);}_0x28c213[_0xf9d1('0x39')]=qs[_0xf9d1('0x3a')](_0x3e46d1['query']['sort']);_0x28c213[_0xf9d1('0x3b')]=qs[_0xf9d1('0x3c')](_[_0xf9d1('0x3d')](_0x3e46d1['query'],_0x120e5f[_0xf9d1('0x3c')]),_0x365854);if(_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x3e')]){_0x28c213[_0xf9d1('0x3b')]=_[_0xf9d1('0x3f')](_0x28c213[_0xf9d1('0x3b')],{'$or':_[_0xf9d1('0x2b')](_0x365854,function(_0x8c3de4){if(_0x8c3de4[_0xf9d1('0x2f')]!==_0xf9d1('0x40')){var _0x2c0fc7={};_0x2c0fc7[_0x8c3de4[_0xf9d1('0x2a')]]={'$like':'%'+_0x3e46d1[_0xf9d1('0x33')][_0xf9d1('0x3e')]+'%'};return _0x2c0fc7;}})});}_0x28c213=_[_0xf9d1('0x3f')]({},_0x28c213,_0x3e46d1[_0xf9d1('0x41')]);var _0x1ebfe5={'where':_0x28c213[_0xf9d1('0x3b')]};return db[_0xf9d1('0x2c')][_0xf9d1('0x1f')](_0x1ebfe5)[_0xf9d1('0x26')](function(_0x2185ef){_0xc899fb['count']=_0x2185ef;if(_0x3e46d1['query']['includeAll']){_0x28c213['include']=[{'all':!![]}];}return db[_0xf9d1('0x2c')][_0xf9d1('0x42')](_0x28c213);})['then'](function(_0x4399ed){_0xc899fb['rows']=_0x4399ed;return _0xc899fb;})['then'](respondWithFilteredResult(_0x5f2675,_0x28c213))['catch'](handleError(_0x5f2675,null));};exports[_0xf9d1('0x43')]=function(_0xd13554,_0x2ccd34){var _0xefc3f8={'raw':!![],'where':{'id':_0xd13554[_0xf9d1('0x44')]['id']}},_0x12f539={};_0x12f539[_0xf9d1('0x31')]=_[_0xf9d1('0x32')](db[_0xf9d1('0x2c')][_0xf9d1('0x2d')]);_0x12f539[_0xf9d1('0x33')]=_[_0xf9d1('0x32')](_0xd13554['query']);_0x12f539['filters']=_['intersection'](_0x12f539[_0xf9d1('0x31')],_0x12f539[_0xf9d1('0x33')]);_0xefc3f8[_0xf9d1('0x35')]=_[_0xf9d1('0x34')](_0x12f539[_0xf9d1('0x31')],qs[_0xf9d1('0x36')](_0xd13554[_0xf9d1('0x33')][_0xf9d1('0x36')]));_0xefc3f8[_0xf9d1('0x35')]=_0xefc3f8['attributes'][_0xf9d1('0x37')]?_0xefc3f8['attributes']:_0x12f539[_0xf9d1('0x31')];if(_0xd13554[_0xf9d1('0x33')][_0xf9d1('0x45')]){_0xefc3f8[_0xf9d1('0x46')]=[{'all':!![]}];}_0xefc3f8=_['merge']({},_0xefc3f8,_0xd13554[_0xf9d1('0x41')]);return db[_0xf9d1('0x2c')][_0xf9d1('0x47')](_0xefc3f8)[_0xf9d1('0x26')](handleEntityNotFound(_0x2ccd34,null))['then'](respondWithResult(_0x2ccd34,null))[_0xf9d1('0x48')](handleError(_0x2ccd34,null));};exports[_0xf9d1('0x49')]=function(_0x3e3e95,_0x5e6537){return db['AnalyticExtractedReport'][_0xf9d1('0x49')](_0x3e3e95[_0xf9d1('0x4a')],{})['then'](function(_0x3d713f){var _0x78503c=_0x3e3e95[_0xf9d1('0x4b')][_0xf9d1('0x4c')]({'plain':!![]});if(!_0x78503c)throw new Error(_0xf9d1('0x4d'));if(_0x78503c[_0xf9d1('0x4e')]==='user'){var _0x479aef=_0x3d713f[_0xf9d1('0x4c')]({'plain':!![]});var _0x1592b4=_0xf9d1('0x4f');return db['UserProfileSection'][_0xf9d1('0x47')]({'where':{'name':_0x1592b4,'userProfileId':_0x78503c[_0xf9d1('0x50')]},'raw':!![]})[_0xf9d1('0x26')](function(_0x1aea5f){if(_0x1aea5f&&_0x1aea5f[_0xf9d1('0x51')]===0x0){return db[_0xf9d1('0x27')][_0xf9d1('0x49')]({'name':_0x479aef[_0xf9d1('0x2a')],'resourceId':_0x479aef['id'],'type':_0x1aea5f[_0xf9d1('0x2a')],'sectionId':_0x1aea5f['id']},{})[_0xf9d1('0x26')](function(){return _0x3d713f;});}else{return _0x3d713f;}})[_0xf9d1('0x48')](function(_0x53d72c){logger[_0xf9d1('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53d72c);throw _0x53d72c;});}return _0x3d713f;})[_0xf9d1('0x26')](respondWithResult(_0x5e6537,0xc9))['catch'](handleError(_0x5e6537,null));};exports[_0xf9d1('0x25')]=function(_0x39e087,_0x134d47){if(_0x39e087[_0xf9d1('0x4a')]['id']){delete _0x39e087['body']['id'];}return db[_0xf9d1('0x2c')]['find']({'where':{'id':_0x39e087[_0xf9d1('0x44')]['id']}})['then'](handleEntityNotFound(_0x134d47,null))[_0xf9d1('0x26')](saveUpdates(_0x39e087['body'],null))[_0xf9d1('0x26')](respondWithResult(_0x134d47,null))[_0xf9d1('0x48')](handleError(_0x134d47,null));};exports[_0xf9d1('0x28')]=function(_0x8aacf7,_0x34d147){return db['AnalyticExtractedReport'][_0xf9d1('0x47')]({'where':{'id':_0x8aacf7['params']['id']}})['then'](handleEntityNotFound(_0x34d147,null))[_0xf9d1('0x26')](removeEntity(_0x34d147,null))[_0xf9d1('0x48')](handleError(_0x34d147,null));};exports[_0xf9d1('0x53')]=function(_0x192487,_0x2045a2,_0xd4f075){return db[_0xf9d1('0x2c')][_0xf9d1('0x47')]({'where':{'id':_0x192487['params']['id']},'attributes':[_0xf9d1('0x2a'),_0xf9d1('0x54'),_0xf9d1('0x55'),_0xf9d1('0x56')],'raw':!![]})[_0xf9d1('0x26')](handleEntityNotFound(_0x2045a2,null))[_0xf9d1('0x26')](function(_0x5cc791){if(_0x5cc791){if(!fs[_0xf9d1('0x57')](path[_0xf9d1('0x58')](config[_0xf9d1('0x59')],_0xf9d1('0x5a'),_0x5cc791[_0xf9d1('0x55')]))){throw new db[(_0xf9d1('0x5b'))][(_0xf9d1('0x5c'))](_0xf9d1('0x5d'));}if(_0x192487[_0xf9d1('0x33')]['exists']){return _0x2045a2[_0xf9d1('0x1a')](0xc8);}return _0x2045a2[_0xf9d1('0x53')](path[_0xf9d1('0x58')](config[_0xf9d1('0x59')],'server/files/reports',_0x5cc791[_0xf9d1('0x55')]),util[_0xf9d1('0x5e')](_0xf9d1('0x5f'),_0x5cc791[_0xf9d1('0x54')]||_0x5cc791[_0xf9d1('0x2a')],_0x5cc791['output']['toLowerCase']()));}})['catch'](handleError(_0x2045a2,null));};
\ No newline at end of file
+var _0x7888=['set','Content-Range','apply','reject','save','update','destroy','then','get','end','sendStatus','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','rows','catch','show','params','AnalyticExtractedReport','includeAll','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','UserProfileSection','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','savename','output','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','format','%s.%s','basename','toLowerCase','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset'];(function(_0x4e0fb8,_0x4961cf){var _0x43a548=function(_0x4f23d4){while(--_0x4f23d4){_0x4e0fb8['push'](_0x4e0fb8['shift']());}};_0x43a548(++_0x4961cf);}(_0x7888,0x109));var _0x8788=function(_0x526aa9,_0x521c5d){_0x526aa9=_0x526aa9-0x0;var _0x5e75f4=_0x7888[_0x526aa9];return _0x5e75f4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8788('0x0'));var zipdir=require(_0x8788('0x1'));var jsonpatch=require(_0x8788('0x2'));var rp=require('request-promise');var moment=require(_0x8788('0x3'));var BPromise=require(_0x8788('0x4'));var Mustache=require(_0x8788('0x5'));var util=require('util');var path=require(_0x8788('0x6'));var sox=require(_0x8788('0x7'));var csv=require(_0x8788('0x8'));var ejs=require(_0x8788('0x9'));var fs=require('fs');var fs_extra=require(_0x8788('0xa'));var _=require(_0x8788('0xb'));var squel=require(_0x8788('0xc'));var crypto=require(_0x8788('0xd'));var jsforce=require(_0x8788('0xe'));var deskjs=require(_0x8788('0xf'));var toCsv=require(_0x8788('0x8'));var querystring=require(_0x8788('0x10'));var Papa=require('papaparse');var Redis=require(_0x8788('0x11'));var authService=require(_0x8788('0x12'));var qs=require(_0x8788('0x13'));var as=require(_0x8788('0x14'));var hardwareService=require(_0x8788('0x15'));var logger=require(_0x8788('0x16'))(_0x8788('0x17'));var utils=require('../../config/utils');var config=require(_0x8788('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8788('0x19'))['db'];function respondWithStatusCode(_0x49a7dc,_0x4d1ab6){_0x4d1ab6=_0x4d1ab6||0xcc;return function(_0x989d25){if(_0x989d25){return _0x49a7dc['sendStatus'](_0x4d1ab6);}return _0x49a7dc[_0x8788('0x1a')](_0x4d1ab6)['end']();};}function respondWithResult(_0xa8e895,_0x2e4c71){_0x2e4c71=_0x2e4c71||0xc8;return function(_0x308548){if(_0x308548){return _0xa8e895[_0x8788('0x1a')](_0x2e4c71)[_0x8788('0x1b')](_0x308548);}};}function respondWithFilteredResult(_0x30fad4,_0x42e824){return function(_0xd95aa6){if(_0xd95aa6){var _0x22214b=typeof _0x42e824['offset']===_0x8788('0x1c')&&typeof _0x42e824[_0x8788('0x1d')]===_0x8788('0x1c');var _0x2750d0=_0xd95aa6[_0x8788('0x1e')];var _0x58169e=_0x22214b?0x0:_0x42e824['offset'];var _0x3684d0=_0x22214b?_0xd95aa6['count']:_0x42e824[_0x8788('0x1f')]+_0x42e824[_0x8788('0x1d')];var _0x3e5d36;if(_0x3684d0>=_0x2750d0){_0x3684d0=_0x2750d0;_0x3e5d36=0xc8;}else{_0x3e5d36=0xce;}_0x30fad4[_0x8788('0x1a')](_0x3e5d36);return _0x30fad4[_0x8788('0x20')](_0x8788('0x21'),_0x58169e+'-'+_0x3684d0+'/'+_0x2750d0)[_0x8788('0x1b')](_0xd95aa6);}return null;};}function patchUpdates(_0x5c948a){return function(_0xea4a59){try{jsonpatch[_0x8788('0x22')](_0xea4a59,_0x5c948a,!![]);}catch(_0x34e457){return BPromise[_0x8788('0x23')](_0x34e457);}return _0xea4a59[_0x8788('0x24')]();};}function saveUpdates(_0x13d0f7,_0x53b103){return function(_0x4c0d2d){if(_0x4c0d2d){return _0x4c0d2d[_0x8788('0x25')](_0x13d0f7)['then'](function(_0x69d1a0){return _0x69d1a0;});}return null;};}function removeEntity(_0x407b4d,_0x4b71db){return function(_0x3117d8){if(_0x3117d8){return _0x3117d8[_0x8788('0x26')]()[_0x8788('0x27')](function(){var _0x36d2df=_0x3117d8[_0x8788('0x28')]({'plain':!![]});var _0x53cf4a='ExtractedReports';return db['UserProfileResource']['destroy']({'where':{'type':_0x53cf4a,'resourceId':_0x36d2df['id']}})[_0x8788('0x27')](function(){return _0x3117d8;});})[_0x8788('0x27')](function(){_0x407b4d[_0x8788('0x1a')](0xcc)[_0x8788('0x29')]();});}};}function handleEntityNotFound(_0x3b856b,_0xc852bc){return function(_0x1602c2){if(!_0x1602c2){_0x3b856b[_0x8788('0x2a')](0x194);}return _0x1602c2;};}function handleError(_0x199e58,_0x11b914){_0x11b914=_0x11b914||0x1f4;return function(_0x4d0830){logger['error'](_0x4d0830[_0x8788('0x2b')]);if(_0x4d0830['name']){delete _0x4d0830[_0x8788('0x2c')];}_0x199e58[_0x8788('0x1a')](_0x11b914)[_0x8788('0x2d')](_0x4d0830);};}exports['index']=function(_0x33eefc,_0x562629){var _0x4f46d0={},_0x34c15a={},_0x4e17dd={'count':0x0,'rows':[]};var _0x5ee9d5=_[_0x8788('0x2e')](db['AnalyticExtractedReport'][_0x8788('0x2f')],function(_0xa7f276){return{'name':_0xa7f276[_0x8788('0x30')],'type':_0xa7f276[_0x8788('0x31')]['key']};});_0x34c15a[_0x8788('0x32')]=_[_0x8788('0x2e')](_0x5ee9d5,_0x8788('0x2c'));_0x34c15a[_0x8788('0x33')]=_[_0x8788('0x34')](_0x33eefc[_0x8788('0x33')]);_0x34c15a[_0x8788('0x35')]=_[_0x8788('0x36')](_0x34c15a[_0x8788('0x32')],_0x34c15a[_0x8788('0x33')]);_0x4f46d0[_0x8788('0x37')]=_[_0x8788('0x36')](_0x34c15a[_0x8788('0x32')],qs[_0x8788('0x38')](_0x33eefc[_0x8788('0x33')][_0x8788('0x38')]));_0x4f46d0['attributes']=_0x4f46d0[_0x8788('0x37')][_0x8788('0x39')]?_0x4f46d0[_0x8788('0x37')]:_0x34c15a[_0x8788('0x32')];if(!_0x33eefc['query'][_0x8788('0x3a')](_0x8788('0x3b'))){_0x4f46d0['limit']=qs[_0x8788('0x1d')](_0x33eefc[_0x8788('0x33')][_0x8788('0x1d')]);_0x4f46d0[_0x8788('0x1f')]=qs[_0x8788('0x1f')](_0x33eefc[_0x8788('0x33')][_0x8788('0x1f')]);}_0x4f46d0[_0x8788('0x3c')]=qs['sort'](_0x33eefc['query'][_0x8788('0x3d')]);_0x4f46d0[_0x8788('0x3e')]=qs[_0x8788('0x35')](_['pick'](_0x33eefc[_0x8788('0x33')],_0x34c15a[_0x8788('0x35')]),_0x5ee9d5);if(_0x33eefc['query'][_0x8788('0x3f')]){_0x4f46d0[_0x8788('0x3e')]=_[_0x8788('0x40')](_0x4f46d0[_0x8788('0x3e')],{'$or':_['map'](_0x5ee9d5,function(_0x7e7132){if(_0x7e7132['type']!==_0x8788('0x41')){var _0x51c559={};_0x51c559[_0x7e7132[_0x8788('0x2c')]]={'$like':'%'+_0x33eefc['query'][_0x8788('0x3f')]+'%'};return _0x51c559;}})});}_0x4f46d0=_[_0x8788('0x40')]({},_0x4f46d0,_0x33eefc['options']);var _0x281908={'where':_0x4f46d0[_0x8788('0x3e')]};return db['AnalyticExtractedReport'][_0x8788('0x1e')](_0x281908)[_0x8788('0x27')](function(_0x2630d7){_0x4e17dd[_0x8788('0x1e')]=_0x2630d7;if(_0x33eefc['query']['includeAll']){_0x4f46d0['include']=[{'all':!![]}];}return db['AnalyticExtractedReport']['findAll'](_0x4f46d0);})[_0x8788('0x27')](function(_0x3af6aa){_0x4e17dd[_0x8788('0x42')]=_0x3af6aa;return _0x4e17dd;})[_0x8788('0x27')](respondWithFilteredResult(_0x562629,_0x4f46d0))[_0x8788('0x43')](handleError(_0x562629,null));};exports[_0x8788('0x44')]=function(_0x46a6f1,_0x16f5bc){var _0x2f5e64={'raw':!![],'where':{'id':_0x46a6f1[_0x8788('0x45')]['id']}},_0x13d9aa={};_0x13d9aa[_0x8788('0x32')]=_['keys'](db[_0x8788('0x46')][_0x8788('0x2f')]);_0x13d9aa[_0x8788('0x33')]=_[_0x8788('0x34')](_0x46a6f1[_0x8788('0x33')]);_0x13d9aa[_0x8788('0x35')]=_[_0x8788('0x36')](_0x13d9aa[_0x8788('0x32')],_0x13d9aa['query']);_0x2f5e64[_0x8788('0x37')]=_['intersection'](_0x13d9aa['model'],qs[_0x8788('0x38')](_0x46a6f1[_0x8788('0x33')][_0x8788('0x38')]));_0x2f5e64[_0x8788('0x37')]=_0x2f5e64['attributes'][_0x8788('0x39')]?_0x2f5e64[_0x8788('0x37')]:_0x13d9aa[_0x8788('0x32')];if(_0x46a6f1[_0x8788('0x33')][_0x8788('0x47')]){_0x2f5e64[_0x8788('0x48')]=[{'all':!![]}];}_0x2f5e64=_[_0x8788('0x40')]({},_0x2f5e64,_0x46a6f1[_0x8788('0x49')]);return db[_0x8788('0x46')][_0x8788('0x4a')](_0x2f5e64)[_0x8788('0x27')](handleEntityNotFound(_0x16f5bc,null))['then'](respondWithResult(_0x16f5bc,null))[_0x8788('0x43')](handleError(_0x16f5bc,null));};exports[_0x8788('0x4b')]=function(_0x457df0,_0x892d50){return db[_0x8788('0x46')][_0x8788('0x4b')](_0x457df0[_0x8788('0x4c')],{})[_0x8788('0x27')](function(_0x25f1b){var _0x5c2447=_0x457df0[_0x8788('0x4d')][_0x8788('0x28')]({'plain':!![]});if(!_0x5c2447)throw new Error(_0x8788('0x4e'));if(_0x5c2447[_0x8788('0x4f')]===_0x8788('0x4d')){var _0x5c5173=_0x25f1b[_0x8788('0x28')]({'plain':!![]});var _0x2d6743=_0x8788('0x50');return db[_0x8788('0x51')][_0x8788('0x4a')]({'where':{'name':_0x2d6743,'userProfileId':_0x5c2447['userProfileId']},'raw':!![]})[_0x8788('0x27')](function(_0x3881f9){if(_0x3881f9&&_0x3881f9['autoAssociation']===0x0){return db[_0x8788('0x52')][_0x8788('0x4b')]({'name':_0x5c5173[_0x8788('0x2c')],'resourceId':_0x5c5173['id'],'type':_0x3881f9[_0x8788('0x2c')],'sectionId':_0x3881f9['id']},{})[_0x8788('0x27')](function(){return _0x25f1b;});}else{return _0x25f1b;}})[_0x8788('0x43')](function(_0x209d4f){logger[_0x8788('0x53')](_0x8788('0x54'),_0x209d4f);throw _0x209d4f;});}return _0x25f1b;})[_0x8788('0x27')](respondWithResult(_0x892d50,0xc9))['catch'](handleError(_0x892d50,null));};exports['update']=function(_0x10b30c,_0x562b5a){if(_0x10b30c[_0x8788('0x4c')]['id']){delete _0x10b30c[_0x8788('0x4c')]['id'];}return db[_0x8788('0x46')][_0x8788('0x4a')]({'where':{'id':_0x10b30c['params']['id']}})[_0x8788('0x27')](handleEntityNotFound(_0x562b5a,null))[_0x8788('0x27')](saveUpdates(_0x10b30c['body'],null))[_0x8788('0x27')](respondWithResult(_0x562b5a,null))[_0x8788('0x43')](handleError(_0x562b5a,null));};exports['destroy']=function(_0x25a820,_0x3c5d4f){return db[_0x8788('0x46')][_0x8788('0x4a')]({'where':{'id':_0x25a820[_0x8788('0x45')]['id']}})[_0x8788('0x27')](handleEntityNotFound(_0x3c5d4f,null))[_0x8788('0x27')](removeEntity(_0x3c5d4f,null))[_0x8788('0x43')](handleError(_0x3c5d4f,null));};exports['download']=function(_0x167f6c,_0x4f337c,_0x5af988){return db['AnalyticExtractedReport'][_0x8788('0x4a')]({'where':{'id':_0x167f6c['params']['id']},'attributes':['name','basename',_0x8788('0x55'),_0x8788('0x56')],'raw':!![]})[_0x8788('0x27')](handleEntityNotFound(_0x4f337c,null))[_0x8788('0x27')](function(_0x5d1250){if(_0x5d1250){if(!fs['existsSync'](path[_0x8788('0x57')](config[_0x8788('0x58')],_0x8788('0x59'),_0x5d1250[_0x8788('0x55')]))){throw new db[(_0x8788('0x5a'))][(_0x8788('0x5b'))](_0x8788('0x5c'));}if(_0x167f6c[_0x8788('0x33')][_0x8788('0x5d')]){return _0x4f337c[_0x8788('0x2a')](0xc8);}return _0x4f337c[_0x8788('0x5e')](path[_0x8788('0x57')](config['root'],'server/files/reports',_0x5d1250['savename']),util[_0x8788('0x5f')](_0x8788('0x60'),_0x5d1250[_0x8788('0x61')]||_0x5d1250['name'],_0x5d1250[_0x8788('0x56')][_0x8788('0x62')]()));}})[_0x8788('0x43')](handleError(_0x4f337c,null));};
\ No newline at end of file
index 6117214..cfac192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf6=['bluebird','rimraf','./analyticExtractedReport.attributes','exports','AnalyticExtractedReport','lodash','util','../../config/logger'];(function(_0x593564,_0x43583f){var _0x211a89=function(_0x40afd6){while(--_0x40afd6){_0x593564['push'](_0x593564['shift']());}};_0x211a89(++_0x43583f);}(_0x6cf6,0x1b5));var _0x66cf=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6cf6[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x66cf('0x0'));var util=require(_0x66cf('0x1'));var logger=require(_0x66cf('0x2'))('api');var moment=require('moment');var BPromise=require(_0x66cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x66cf('0x4'));var config=require('../../config/environment');var attributes=require(_0x66cf('0x5'));module[_0x66cf('0x6')]=function(_0x1fcf5b,_0x245bcb){return _0x1fcf5b['define'](_0x66cf('0x7'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfbaa=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define'];(function(_0x15c8f5,_0xa91f17){var _0x2a518e=function(_0x2a265e){while(--_0x2a265e){_0x15c8f5['push'](_0x15c8f5['shift']());}};_0x2a518e(++_0xa91f17);}(_0xfbaa,0xcc));var _0xafba=function(_0x5c6244,_0x112ab8){_0x5c6244=_0x5c6244-0x0;var _0x5800ce=_0xfbaa[_0x5c6244];return _0x5800ce;};'use strict';var _=require(_0xafba('0x0'));var util=require(_0xafba('0x1'));var logger=require('../../config/logger')(_0xafba('0x2'));var moment=require(_0xafba('0x3'));var BPromise=require(_0xafba('0x4'));var rp=require(_0xafba('0x5'));var fs=require('fs');var path=require(_0xafba('0x6'));var rimraf=require(_0xafba('0x7'));var config=require(_0xafba('0x8'));var attributes=require(_0xafba('0x9'));module[_0xafba('0xa')]=function(_0x2ef994,_0x1beb3d){return _0x2ef994[_0xafba('0xb')]('AnalyticExtractedReport',attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e1e5dd5..8b6ab0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a49=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x0a49,0x178));var _0x90a4=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0x0a49[_0x1b349a];return _0x5d1f7c;};'use strict';var _=require(_0x90a4('0x0'));var util=require(_0x90a4('0x1'));var moment=require('moment');var BPromise=require(_0x90a4('0x2'));var rs=require(_0x90a4('0x3'));var fs=require('fs');var Redis=require(_0x90a4('0x4'));var db=require(_0x90a4('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x90a4('0x6'));var jayson=require(_0x90a4('0x7'));var client=jayson[_0x90a4('0x8')][_0x90a4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c41df,_0x1e536f,_0x1bbc0f){return new BPromise(function(_0x3759b3,_0x122b4d){return client[_0x90a4('0xa')](_0x1c41df,_0x1bbc0f)[_0x90a4('0xb')](function(_0x21e029){logger[_0x90a4('0xc')](_0x90a4('0xd'),_0x1e536f,_0x90a4('0xe'));logger[_0x90a4('0xf')](_0x90a4('0x10'),_0x1e536f,_0x90a4('0xe'),JSON[_0x90a4('0x11')](_0x21e029));if(_0x21e029[_0x90a4('0x12')]){if(_0x21e029[_0x90a4('0x12')][_0x90a4('0x13')]===0x1f4){logger[_0x90a4('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e536f,_0x21e029['error'][_0x90a4('0x14')]);return _0x122b4d(_0x21e029[_0x90a4('0x12')][_0x90a4('0x14')]);}logger[_0x90a4('0x12')](_0x90a4('0xd'),_0x1e536f,_0x21e029[_0x90a4('0x12')][_0x90a4('0x14')]);return _0x3759b3(_0x21e029['error'][_0x90a4('0x14')]);}else{logger['info'](_0x90a4('0xd'),_0x1e536f,_0x90a4('0xe'));_0x3759b3(_0x21e029[_0x90a4('0x15')]['message']);}})[_0x90a4('0x16')](function(_0x7209bb){logger[_0x90a4('0x12')](_0x90a4('0xd'),_0x1e536f,_0x7209bb);_0x122b4d(_0x7209bb);});});}
\ No newline at end of file
+var _0xf85a=['lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0xc98354,_0x3bf67b){var _0x424479=function(_0x2604c7){while(--_0x2604c7){_0xc98354['push'](_0xc98354['shift']());}};_0x424479(++_0x3bf67b);}(_0xf85a,0x156));var _0xaf85=function(_0x3ce935,_0x39baaa){_0x3ce935=_0x3ce935-0x0;var _0x541729=_0xf85a[_0x3ce935];return _0x541729;};'use strict';var _=require(_0xaf85('0x0'));var util=require(_0xaf85('0x1'));var moment=require('moment');var BPromise=require(_0xaf85('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf85('0x3'))['db'];var utils=require(_0xaf85('0x4'));var logger=require(_0xaf85('0x5'))(_0xaf85('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaf85('0x7')][_0xaf85('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x43fd79,_0x57586d,_0x3a35b5){return new BPromise(function(_0x5f40e0,_0x17acf7){return client[_0xaf85('0x9')](_0x43fd79,_0x3a35b5)[_0xaf85('0xa')](function(_0x13bcd7){logger[_0xaf85('0xb')](_0xaf85('0xc'),_0x57586d,_0xaf85('0xd'));logger[_0xaf85('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x57586d,_0xaf85('0xd'),JSON[_0xaf85('0xf')](_0x13bcd7));if(_0x13bcd7[_0xaf85('0x10')]){if(_0x13bcd7[_0xaf85('0x10')]['code']===0x1f4){logger[_0xaf85('0x10')](_0xaf85('0xc'),_0x57586d,_0x13bcd7['error'][_0xaf85('0x11')]);return _0x17acf7(_0x13bcd7[_0xaf85('0x10')][_0xaf85('0x11')]);}logger[_0xaf85('0x10')](_0xaf85('0xc'),_0x57586d,_0x13bcd7[_0xaf85('0x10')][_0xaf85('0x11')]);return _0x5f40e0(_0x13bcd7['error'][_0xaf85('0x11')]);}else{logger[_0xaf85('0xb')](_0xaf85('0xc'),_0x57586d,_0xaf85('0xd'));_0x5f40e0(_0x13bcd7['result'][_0xaf85('0x11')]);}})['catch'](function(_0x4ad708){logger[_0xaf85('0x10')](_0xaf85('0xc'),_0x57586d,_0x4ad708);_0x17acf7(_0x4ad708);});});}
\ No newline at end of file
index c36ce7e..8ee82da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x657b=['multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','put','update','delete','destroy','exports'];(function(_0x2fda50,_0x42ae90){var _0x4169f6=function(_0x490f0b){while(--_0x490f0b){_0x2fda50['push'](_0x2fda50['shift']());}};_0x4169f6(++_0x42ae90);}(_0x657b,0xa0));var _0xb657=function(_0x107b3f,_0x4e1824){_0x107b3f=_0x107b3f-0x0;var _0x163c23=_0x657b[_0x107b3f];return _0x163c23;};'use strict';var multer=require(_0xb657('0x0'));var util=require('util');var path=require(_0xb657('0x1'));var timeout=require('connect-timeout');var express=require(_0xb657('0x2'));var router=express[_0xb657('0x3')]();var fs_extra=require(_0xb657('0x4'));var auth=require(_0xb657('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb657('0x6'));var controller=require(_0xb657('0x7'));router[_0xb657('0x8')]('/',auth[_0xb657('0x9')](),controller[_0xb657('0xa')]);router[_0xb657('0x8')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0xc')]);router[_0xb657('0x8')](_0xb657('0xd'),auth[_0xb657('0x9')](),controller[_0xb657('0xe')]);router['post']('/',auth[_0xb657('0x9')](),controller['create']);router[_0xb657('0xf')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0x10')]);router[_0xb657('0x11')](_0xb657('0xb'),auth[_0xb657('0x9')](),controller[_0xb657('0x12')]);module[_0xb657('0x13')]=router;
\ No newline at end of file
+var _0x2287=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','show','/:id/download','create','put','delete','exports','multer'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x2287,0x1af));var _0x7228=function(_0xb85aa3,_0xbb2bb5){_0xb85aa3=_0xb85aa3-0x0;var _0x3581b6=_0x2287[_0xb85aa3];return _0x3581b6;};'use strict';var multer=require(_0x7228('0x0'));var util=require(_0x7228('0x1'));var path=require('path');var timeout=require(_0x7228('0x2'));var express=require(_0x7228('0x3'));var router=express['Router']();var fs_extra=require(_0x7228('0x4'));var auth=require(_0x7228('0x5'));var interaction=require(_0x7228('0x6'));var config=require(_0x7228('0x7'));var controller=require(_0x7228('0x8'));router[_0x7228('0x9')]('/',auth[_0x7228('0xa')](),controller['index']);router['get'](_0x7228('0xb'),auth[_0x7228('0xa')](),controller[_0x7228('0xc')]);router[_0x7228('0x9')](_0x7228('0xd'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x7228('0xe')]);router[_0x7228('0xf')](_0x7228('0xb'),auth[_0x7228('0xa')](),controller['update']);router[_0x7228('0x10')](_0x7228('0xb'),auth[_0x7228('0xa')](),controller['destroy']);module[_0x7228('0x11')]=router;
\ No newline at end of file
index 6bff017..f0e4eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7358=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x7358,0xd5));var _0x8735=function(_0x1b36fd,_0x1e31c4){_0x1b36fd=_0x1b36fd-0x0;var _0x391a3d=_0x7358[_0x1b36fd];return _0x391a3d;};'use strict';var Sequelize=require(_0x8735('0x0'));module[_0x8735('0x1')]={'field':{'type':Sequelize[_0x8735('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x8735('0x3')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x8735('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x8735('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x7e02=['BOOLEAN','TEXT','STRING'];(function(_0x52ed51,_0x1838d9){var _0x168c06=function(_0x4bc8ba){while(--_0x4bc8ba){_0x52ed51['push'](_0x52ed51['shift']());}};_0x168c06(++_0x1838d9);}(_0x7e02,0x8b));var _0x27e0=function(_0xbe9c27,_0x204951){_0xbe9c27=_0xbe9c27-0x0;var _0x182726=_0x7e02[_0xbe9c27];return _0x182726;};'use strict';var Sequelize=require('sequelize');module['exports']={'field':{'type':Sequelize[_0x27e0('0x0')]},'alias':{'type':Sequelize[_0x27e0('0x1')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x27e0('0x1')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x27e0('0x2')],'defaultValue':![]}};
\ No newline at end of file
index f2ee239..6546101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde02=['status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','bulkCreate','destroy','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x5cbb33,_0x372f06){var _0x16e5d0=function(_0x3709a4){while(--_0x3709a4){_0x5cbb33['push'](_0x5cbb33['shift']());}};_0x16e5d0(++_0x372f06);}(_0xde02,0xeb));var _0x2de0=function(_0x414663,_0x337d3f){_0x414663=_0x414663-0x0;var _0x1c20d5=_0xde02[_0x414663];return _0x1c20d5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2de0('0x0'));var jsonpatch=require(_0x2de0('0x1'));var rp=require(_0x2de0('0x2'));var moment=require(_0x2de0('0x3'));var BPromise=require(_0x2de0('0x4'));var Mustache=require(_0x2de0('0x5'));var util=require(_0x2de0('0x6'));var path=require(_0x2de0('0x7'));var sox=require(_0x2de0('0x8'));var csv=require(_0x2de0('0x9'));var ejs=require(_0x2de0('0xa'));var fs=require('fs');var fs_extra=require(_0x2de0('0xb'));var _=require(_0x2de0('0xc'));var squel=require(_0x2de0('0xd'));var crypto=require(_0x2de0('0xe'));var jsforce=require(_0x2de0('0xf'));var deskjs=require(_0x2de0('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2de0('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2de0('0x12'));var qs=require(_0x2de0('0x13'));var as=require(_0x2de0('0x14'));var hardwareService=require(_0x2de0('0x15'));var logger=require(_0x2de0('0x16'))(_0x2de0('0x17'));var utils=require(_0x2de0('0x18'));var config=require(_0x2de0('0x19'));var licenseUtil=require(_0x2de0('0x1a'));var db=require(_0x2de0('0x1b'))['db'];function respondWithStatusCode(_0x38b197,_0x1ea6ce){_0x1ea6ce=_0x1ea6ce||0xcc;return function(_0x4aa5d6){if(_0x4aa5d6){return _0x38b197[_0x2de0('0x1c')](_0x1ea6ce);}return _0x38b197[_0x2de0('0x1d')](_0x1ea6ce)[_0x2de0('0x1e')]();};}function respondWithResult(_0x41ed5a,_0x4d8513){_0x4d8513=_0x4d8513||0xc8;return function(_0x591971){if(_0x591971){return _0x41ed5a[_0x2de0('0x1d')](_0x4d8513)[_0x2de0('0x1f')](_0x591971);}};}function respondWithFilteredResult(_0x4c110c,_0x30f40e){return function(_0x43160c){if(_0x43160c){var _0x4dfae4=typeof _0x30f40e[_0x2de0('0x20')]==='undefined'&&typeof _0x30f40e[_0x2de0('0x21')]===_0x2de0('0x22');var _0x5e4742=_0x43160c[_0x2de0('0x23')];var _0x5bf92e=_0x4dfae4?0x0:_0x30f40e[_0x2de0('0x20')];var _0x3452c0=_0x4dfae4?_0x43160c[_0x2de0('0x23')]:_0x30f40e[_0x2de0('0x20')]+_0x30f40e['limit'];var _0x1e5798;if(_0x3452c0>=_0x5e4742){_0x3452c0=_0x5e4742;_0x1e5798=0xc8;}else{_0x1e5798=0xce;}_0x4c110c[_0x2de0('0x1d')](_0x1e5798);return _0x4c110c[_0x2de0('0x24')](_0x2de0('0x25'),_0x5bf92e+'-'+_0x3452c0+'/'+_0x5e4742)[_0x2de0('0x1f')](_0x43160c);}return null;};}function patchUpdates(_0x4f2a8e){return function(_0x24ff4f){try{jsonpatch[_0x2de0('0x26')](_0x24ff4f,_0x4f2a8e,!![]);}catch(_0x25f74b){return BPromise[_0x2de0('0x27')](_0x25f74b);}return _0x24ff4f[_0x2de0('0x28')]();};}function saveUpdates(_0x4b3a05,_0x1b0ca3){return function(_0x5b5d48){if(_0x5b5d48){return _0x5b5d48[_0x2de0('0x29')](_0x4b3a05)[_0x2de0('0x2a')](function(_0x38267b){return _0x38267b;});}return null;};}function removeEntity(_0x2ae399,_0x56114a){return function(_0x47540f){if(_0x47540f){return _0x47540f['destroy']()[_0x2de0('0x2a')](function(){_0x2ae399[_0x2de0('0x1d')](0xcc)[_0x2de0('0x1e')]();});}};}function handleEntityNotFound(_0x21a9e9,_0x29f6d7){return function(_0x26b191){if(!_0x26b191){_0x21a9e9[_0x2de0('0x1c')](0x194);}return _0x26b191;};}function handleError(_0x362553,_0x3f51f0){_0x3f51f0=_0x3f51f0||0x1f4;return function(_0x4724f0){logger['error'](_0x4724f0[_0x2de0('0x2b')]);if(_0x4724f0[_0x2de0('0x2c')]){delete _0x4724f0['name'];}_0x362553[_0x2de0('0x1d')](_0x3f51f0)[_0x2de0('0x2d')](_0x4724f0);};}exports[_0x2de0('0x2e')]=function(_0x5666ca,_0x12c365){var _0x215d7d={},_0x525df5={},_0x1d944e={'count':0x0,'rows':[]};var _0x3c3c96=_[_0x2de0('0x2f')](db[_0x2de0('0x30')][_0x2de0('0x31')],function(_0x5242ab){return{'name':_0x5242ab[_0x2de0('0x32')],'type':_0x5242ab[_0x2de0('0x33')][_0x2de0('0x34')]};});_0x525df5[_0x2de0('0x35')]=_['map'](_0x3c3c96,_0x2de0('0x2c'));_0x525df5[_0x2de0('0x36')]=_[_0x2de0('0x37')](_0x5666ca['query']);_0x525df5['filters']=_[_0x2de0('0x38')](_0x525df5['model'],_0x525df5[_0x2de0('0x36')]);_0x215d7d[_0x2de0('0x39')]=_[_0x2de0('0x38')](_0x525df5[_0x2de0('0x35')],qs[_0x2de0('0x3a')](_0x5666ca[_0x2de0('0x36')][_0x2de0('0x3a')]));_0x215d7d['attributes']=_0x215d7d[_0x2de0('0x39')][_0x2de0('0x3b')]?_0x215d7d[_0x2de0('0x39')]:_0x525df5['model'];if(!_0x5666ca['query']['hasOwnProperty']('nolimit')){_0x215d7d[_0x2de0('0x21')]=qs[_0x2de0('0x21')](_0x5666ca[_0x2de0('0x36')][_0x2de0('0x21')]);_0x215d7d['offset']=qs[_0x2de0('0x20')](_0x5666ca['query'][_0x2de0('0x20')]);}_0x215d7d[_0x2de0('0x3c')]=qs[_0x2de0('0x3d')](_0x5666ca['query'][_0x2de0('0x3d')]);_0x215d7d[_0x2de0('0x3e')]=qs[_0x2de0('0x3f')](_[_0x2de0('0x40')](_0x5666ca[_0x2de0('0x36')],_0x525df5[_0x2de0('0x3f')]),_0x3c3c96);if(_0x5666ca[_0x2de0('0x36')][_0x2de0('0x41')]){_0x215d7d[_0x2de0('0x3e')]=_['merge'](_0x215d7d[_0x2de0('0x3e')],{'$or':_[_0x2de0('0x2f')](_0x3c3c96,function(_0x37eef0){if(_0x37eef0[_0x2de0('0x33')]!==_0x2de0('0x42')){var _0x18aaa4={};_0x18aaa4[_0x37eef0[_0x2de0('0x2c')]]={'$like':'%'+_0x5666ca['query'][_0x2de0('0x41')]+'%'};return _0x18aaa4;}})});}_0x215d7d=_[_0x2de0('0x43')]({},_0x215d7d,_0x5666ca[_0x2de0('0x44')]);var _0x422202={'where':_0x215d7d[_0x2de0('0x3e')]};return db[_0x2de0('0x30')]['count'](_0x422202)[_0x2de0('0x2a')](function(_0x2c720d){_0x1d944e['count']=_0x2c720d;if(_0x5666ca[_0x2de0('0x36')][_0x2de0('0x45')]){_0x215d7d[_0x2de0('0x46')]=[{'all':!![]}];}return db[_0x2de0('0x30')][_0x2de0('0x47')](_0x215d7d);})[_0x2de0('0x2a')](function(_0x239de0){_0x1d944e[_0x2de0('0x48')]=_0x239de0;return _0x1d944e;})[_0x2de0('0x2a')](respondWithFilteredResult(_0x12c365,_0x215d7d))['catch'](handleError(_0x12c365,null));};exports[_0x2de0('0x49')]=function(_0x12a1b9,_0x1d3088){var _0x5ceacf={'raw':![],'where':{'id':_0x12a1b9[_0x2de0('0x4a')]['id']}},_0x88f1cc={};_0x88f1cc[_0x2de0('0x35')]=_[_0x2de0('0x37')](db['AnalyticFieldReport'][_0x2de0('0x31')]);_0x88f1cc['query']=_[_0x2de0('0x37')](_0x12a1b9[_0x2de0('0x36')]);_0x88f1cc[_0x2de0('0x3f')]=_[_0x2de0('0x38')](_0x88f1cc['model'],_0x88f1cc[_0x2de0('0x36')]);_0x5ceacf[_0x2de0('0x39')]=_['intersection'](_0x88f1cc[_0x2de0('0x35')],qs[_0x2de0('0x3a')](_0x12a1b9['query'][_0x2de0('0x3a')]));_0x5ceacf['attributes']=_0x5ceacf[_0x2de0('0x39')]['length']?_0x5ceacf[_0x2de0('0x39')]:_0x88f1cc[_0x2de0('0x35')];if(_0x12a1b9[_0x2de0('0x36')][_0x2de0('0x45')]){_0x5ceacf['include']=[{'all':!![]}];}_0x5ceacf=_[_0x2de0('0x43')]({},_0x5ceacf,_0x12a1b9['options']);return db['AnalyticFieldReport'][_0x2de0('0x4b')](_0x5ceacf)[_0x2de0('0x2a')](handleEntityNotFound(_0x1d3088,null))['then'](respondWithResult(_0x1d3088,null))[_0x2de0('0x4c')](handleError(_0x1d3088,null));};exports['create']=function(_0xb13f2d,_0x4138d0){return db[_0x2de0('0x30')][_0x2de0('0x4d')](_0xb13f2d[_0x2de0('0x4e')],{})[_0x2de0('0x2a')](respondWithResult(_0x4138d0,0xc9))[_0x2de0('0x4c')](handleError(_0x4138d0,null));};exports['bulkCreate']=function(_0x19ed06,_0x438d1d){return db[_0x2de0('0x30')][_0x2de0('0x4f')](_0x19ed06[_0x2de0('0x4e')],{'raw':![],'individualHooks':!![]})[_0x2de0('0x2a')](respondWithResult(_0x438d1d,0xc9))[_0x2de0('0x4c')](handleError(_0x438d1d,null));};exports[_0x2de0('0x29')]=function(_0x3f6576,_0x1b8646){if(_0x3f6576[_0x2de0('0x4e')]['id']){delete _0x3f6576[_0x2de0('0x4e')]['id'];}return db[_0x2de0('0x30')]['find']({'where':{'id':_0x3f6576[_0x2de0('0x4a')]['id']}})[_0x2de0('0x2a')](handleEntityNotFound(_0x1b8646,null))[_0x2de0('0x2a')](saveUpdates(_0x3f6576[_0x2de0('0x4e')],null))[_0x2de0('0x2a')](respondWithResult(_0x1b8646,null))['catch'](handleError(_0x1b8646,null));};exports[_0x2de0('0x50')]=function(_0x5ad69f,_0x2f08cb){return db['AnalyticFieldReport'][_0x2de0('0x4b')]({'where':{'id':_0x5ad69f[_0x2de0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2f08cb,null))['then'](removeEntity(_0x2f08cb,null))[_0x2de0('0x4c')](handleError(_0x2f08cb,null));};exports[_0x2de0('0x51')]=function(_0x160913,_0x4107d6){return db['AnalyticFieldReport'][_0x2de0('0x50')]({'where':{'id':_0x160913['query'][_0x2de0('0x52')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x4107d6,0xcc))[_0x2de0('0x4c')](handleError(_0x4107d6,null));};exports[_0x2de0('0x53')]=function(_0x2a6551,_0x1798de,_0x14b38a){return db[_0x2de0('0x54')][_0x2de0('0x55')]({'where':{'id':_0x2a6551[_0x2de0('0x4a')]['id']}})[_0x2de0('0x2a')](handleEntityNotFound(_0x1798de,null))[_0x2de0('0x2a')](function(_0x52d34a){if(_0x52d34a){return db[_0x2de0('0x56')][_0x2de0('0x57')](function(_0xdc2dbb){return db[_0x2de0('0x30')][_0x2de0('0x50')]({'where':{'CustomReportId':_0x2a6551[_0x2de0('0x4a')]['id']},'transaction':_0xdc2dbb})[_0x2de0('0x2a')](function(_0x5a35d6){var _0x5663b4=_[_0x2de0('0x2f')](_0x2a6551[_0x2de0('0x4e')],function(_0x595118){delete _0x595118['id'];_0x595118['CustomReportId']=_0x2a6551['params']['id'];return _0x595118;});return db[_0x2de0('0x30')][_0x2de0('0x4f')](_0x5663b4,{'transaction':_0xdc2dbb});});})[_0x2de0('0x2a')](function(){return db['AnalyticFieldReport'][_0x2de0('0x47')]({'where':{'CustomReportId':_0x2a6551[_0x2de0('0x4a')]['id']}});});}})[_0x2de0('0x2a')](respondWithResult(_0x1798de,null))[_0x2de0('0x4c')](handleError(_0x1798de,null));};
\ No newline at end of file
+var _0x230b=['pick','merge','VIRTUAL','filter','options','count','includeAll','include','rows','catch','show','params','rawAttributes','attributes','length','find','create','bulkCreate','body','destroy','bulkDestroy','ids','addFields','findOne','sequelize','transaction','findAll','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','update','then','error','stack','name','index','map','AnalyticFieldReport','type','key','model','query','keys','filters','intersection','fields','nolimit','order','sort','where'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x230b,0xbd));var _0xb230=function(_0x484896,_0x41d705){_0x484896=_0x484896-0x0;var _0x3996d1=_0x230b[_0x484896];return _0x3996d1;};'use strict';var emlformat=require(_0xb230('0x0'));var rimraf=require(_0xb230('0x1'));var zipdir=require(_0xb230('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb230('0x3'));var moment=require('moment');var BPromise=require(_0xb230('0x4'));var Mustache=require(_0xb230('0x5'));var util=require(_0xb230('0x6'));var path=require(_0xb230('0x7'));var sox=require(_0xb230('0x8'));var csv=require(_0xb230('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb230('0xa'));var _=require('lodash');var squel=require(_0xb230('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb230('0xc'));var toCsv=require(_0xb230('0x9'));var querystring=require(_0xb230('0xd'));var Papa=require('papaparse');var Redis=require(_0xb230('0xe'));var authService=require(_0xb230('0xf'));var qs=require(_0xb230('0x10'));var as=require(_0xb230('0x11'));var hardwareService=require(_0xb230('0x12'));var logger=require(_0xb230('0x13'))(_0xb230('0x14'));var utils=require(_0xb230('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb230('0x16'));var db=require(_0xb230('0x17'))['db'];function respondWithStatusCode(_0x44c1df,_0x532034){_0x532034=_0x532034||0xcc;return function(_0x440be){if(_0x440be){return _0x44c1df[_0xb230('0x18')](_0x532034);}return _0x44c1df[_0xb230('0x19')](_0x532034)[_0xb230('0x1a')]();};}function respondWithResult(_0x2c4759,_0xced4be){_0xced4be=_0xced4be||0xc8;return function(_0x2498aa){if(_0x2498aa){return _0x2c4759[_0xb230('0x19')](_0xced4be)[_0xb230('0x1b')](_0x2498aa);}};}function respondWithFilteredResult(_0x169b8a,_0x473531){return function(_0x496dd7){if(_0x496dd7){var _0x159de6=typeof _0x473531[_0xb230('0x1c')]==='undefined'&&typeof _0x473531[_0xb230('0x1d')]===_0xb230('0x1e');var _0x5dc2fb=_0x496dd7['count'];var _0x34f002=_0x159de6?0x0:_0x473531[_0xb230('0x1c')];var _0x36730b=_0x159de6?_0x496dd7['count']:_0x473531[_0xb230('0x1c')]+_0x473531[_0xb230('0x1d')];var _0x40b840;if(_0x36730b>=_0x5dc2fb){_0x36730b=_0x5dc2fb;_0x40b840=0xc8;}else{_0x40b840=0xce;}_0x169b8a['status'](_0x40b840);return _0x169b8a[_0xb230('0x1f')](_0xb230('0x20'),_0x34f002+'-'+_0x36730b+'/'+_0x5dc2fb)['json'](_0x496dd7);}return null;};}function patchUpdates(_0x5eab07){return function(_0x16ec2e){try{jsonpatch[_0xb230('0x21')](_0x16ec2e,_0x5eab07,!![]);}catch(_0x40ae93){return BPromise['reject'](_0x40ae93);}return _0x16ec2e['save']();};}function saveUpdates(_0x1ed447,_0x56452c){return function(_0x369ebe){if(_0x369ebe){return _0x369ebe[_0xb230('0x22')](_0x1ed447)[_0xb230('0x23')](function(_0xa69431){return _0xa69431;});}return null;};}function removeEntity(_0x5c99fc,_0x3bbfb2){return function(_0x575bba){if(_0x575bba){return _0x575bba['destroy']()[_0xb230('0x23')](function(){_0x5c99fc[_0xb230('0x19')](0xcc)[_0xb230('0x1a')]();});}};}function handleEntityNotFound(_0x4be9f1,_0x42f4d2){return function(_0x3db49e){if(!_0x3db49e){_0x4be9f1[_0xb230('0x18')](0x194);}return _0x3db49e;};}function handleError(_0x22a1f3,_0x4d2b84){_0x4d2b84=_0x4d2b84||0x1f4;return function(_0x43a3bb){logger[_0xb230('0x24')](_0x43a3bb[_0xb230('0x25')]);if(_0x43a3bb['name']){delete _0x43a3bb[_0xb230('0x26')];}_0x22a1f3[_0xb230('0x19')](_0x4d2b84)['send'](_0x43a3bb);};}exports[_0xb230('0x27')]=function(_0x322683,_0x59038f){var _0x472ced={},_0x3202a8={},_0x5f4cf2={'count':0x0,'rows':[]};var _0x2efde9=_[_0xb230('0x28')](db[_0xb230('0x29')]['rawAttributes'],function(_0x5e2b92){return{'name':_0x5e2b92['fieldName'],'type':_0x5e2b92[_0xb230('0x2a')][_0xb230('0x2b')]};});_0x3202a8[_0xb230('0x2c')]=_[_0xb230('0x28')](_0x2efde9,'name');_0x3202a8[_0xb230('0x2d')]=_[_0xb230('0x2e')](_0x322683[_0xb230('0x2d')]);_0x3202a8[_0xb230('0x2f')]=_['intersection'](_0x3202a8['model'],_0x3202a8['query']);_0x472ced['attributes']=_[_0xb230('0x30')](_0x3202a8['model'],qs[_0xb230('0x31')](_0x322683[_0xb230('0x2d')][_0xb230('0x31')]));_0x472ced['attributes']=_0x472ced['attributes']['length']?_0x472ced['attributes']:_0x3202a8[_0xb230('0x2c')];if(!_0x322683[_0xb230('0x2d')]['hasOwnProperty'](_0xb230('0x32'))){_0x472ced[_0xb230('0x1d')]=qs[_0xb230('0x1d')](_0x322683[_0xb230('0x2d')][_0xb230('0x1d')]);_0x472ced['offset']=qs['offset'](_0x322683[_0xb230('0x2d')][_0xb230('0x1c')]);}_0x472ced[_0xb230('0x33')]=qs['sort'](_0x322683['query'][_0xb230('0x34')]);_0x472ced[_0xb230('0x35')]=qs[_0xb230('0x2f')](_[_0xb230('0x36')](_0x322683[_0xb230('0x2d')],_0x3202a8[_0xb230('0x2f')]),_0x2efde9);if(_0x322683[_0xb230('0x2d')]['filter']){_0x472ced[_0xb230('0x35')]=_[_0xb230('0x37')](_0x472ced[_0xb230('0x35')],{'$or':_['map'](_0x2efde9,function(_0xdc1e75){if(_0xdc1e75[_0xb230('0x2a')]!==_0xb230('0x38')){var _0x21d8ce={};_0x21d8ce[_0xdc1e75[_0xb230('0x26')]]={'$like':'%'+_0x322683[_0xb230('0x2d')][_0xb230('0x39')]+'%'};return _0x21d8ce;}})});}_0x472ced=_['merge']({},_0x472ced,_0x322683[_0xb230('0x3a')]);var _0x42b5b4={'where':_0x472ced['where']};return db['AnalyticFieldReport']['count'](_0x42b5b4)[_0xb230('0x23')](function(_0x1c3a75){_0x5f4cf2[_0xb230('0x3b')]=_0x1c3a75;if(_0x322683[_0xb230('0x2d')][_0xb230('0x3c')]){_0x472ced[_0xb230('0x3d')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x472ced);})[_0xb230('0x23')](function(_0x29e41e){_0x5f4cf2[_0xb230('0x3e')]=_0x29e41e;return _0x5f4cf2;})[_0xb230('0x23')](respondWithFilteredResult(_0x59038f,_0x472ced))[_0xb230('0x3f')](handleError(_0x59038f,null));};exports[_0xb230('0x40')]=function(_0x770c0d,_0x4b5177){var _0x5e7e81={'raw':![],'where':{'id':_0x770c0d[_0xb230('0x41')]['id']}},_0x461230={};_0x461230[_0xb230('0x2c')]=_[_0xb230('0x2e')](db[_0xb230('0x29')][_0xb230('0x42')]);_0x461230[_0xb230('0x2d')]=_[_0xb230('0x2e')](_0x770c0d['query']);_0x461230[_0xb230('0x2f')]=_[_0xb230('0x30')](_0x461230[_0xb230('0x2c')],_0x461230[_0xb230('0x2d')]);_0x5e7e81['attributes']=_['intersection'](_0x461230[_0xb230('0x2c')],qs[_0xb230('0x31')](_0x770c0d[_0xb230('0x2d')][_0xb230('0x31')]));_0x5e7e81[_0xb230('0x43')]=_0x5e7e81[_0xb230('0x43')][_0xb230('0x44')]?_0x5e7e81[_0xb230('0x43')]:_0x461230['model'];if(_0x770c0d['query'][_0xb230('0x3c')]){_0x5e7e81[_0xb230('0x3d')]=[{'all':!![]}];}_0x5e7e81=_[_0xb230('0x37')]({},_0x5e7e81,_0x770c0d[_0xb230('0x3a')]);return db[_0xb230('0x29')][_0xb230('0x45')](_0x5e7e81)[_0xb230('0x23')](handleEntityNotFound(_0x4b5177,null))[_0xb230('0x23')](respondWithResult(_0x4b5177,null))[_0xb230('0x3f')](handleError(_0x4b5177,null));};exports[_0xb230('0x46')]=function(_0x698f94,_0x41d49a){return db[_0xb230('0x29')][_0xb230('0x46')](_0x698f94['body'],{})[_0xb230('0x23')](respondWithResult(_0x41d49a,0xc9))[_0xb230('0x3f')](handleError(_0x41d49a,null));};exports[_0xb230('0x47')]=function(_0x5244e4,_0x14e34a){return db[_0xb230('0x29')][_0xb230('0x47')](_0x5244e4[_0xb230('0x48')],{'raw':![],'individualHooks':!![]})[_0xb230('0x23')](respondWithResult(_0x14e34a,0xc9))[_0xb230('0x3f')](handleError(_0x14e34a,null));};exports['update']=function(_0x5a0689,_0x5a1e5a){if(_0x5a0689[_0xb230('0x48')]['id']){delete _0x5a0689[_0xb230('0x48')]['id'];}return db[_0xb230('0x29')][_0xb230('0x45')]({'where':{'id':_0x5a0689[_0xb230('0x41')]['id']}})[_0xb230('0x23')](handleEntityNotFound(_0x5a1e5a,null))[_0xb230('0x23')](saveUpdates(_0x5a0689[_0xb230('0x48')],null))[_0xb230('0x23')](respondWithResult(_0x5a1e5a,null))[_0xb230('0x3f')](handleError(_0x5a1e5a,null));};exports[_0xb230('0x49')]=function(_0x8da95e,_0x50231c){return db[_0xb230('0x29')]['find']({'where':{'id':_0x8da95e['params']['id']}})['then'](handleEntityNotFound(_0x50231c,null))[_0xb230('0x23')](removeEntity(_0x50231c,null))['catch'](handleError(_0x50231c,null));};exports[_0xb230('0x4a')]=function(_0x48ea2b,_0x300d56){return db[_0xb230('0x29')][_0xb230('0x49')]({'where':{'id':_0x48ea2b[_0xb230('0x2d')][_0xb230('0x4b')]||[]},'raw':![],'individualHooks':!![]})[_0xb230('0x23')](respondWithResult(_0x300d56,0xcc))[_0xb230('0x3f')](handleError(_0x300d56,null));};exports[_0xb230('0x4c')]=function(_0x2a3b78,_0x5a2b6c,_0x3d3c64){return db['AnalyticCustomReport'][_0xb230('0x4d')]({'where':{'id':_0x2a3b78[_0xb230('0x41')]['id']}})['then'](handleEntityNotFound(_0x5a2b6c,null))[_0xb230('0x23')](function(_0x3055f1){if(_0x3055f1){return db[_0xb230('0x4e')][_0xb230('0x4f')](function(_0x3ebf7a){return db[_0xb230('0x29')][_0xb230('0x49')]({'where':{'CustomReportId':_0x2a3b78[_0xb230('0x41')]['id']},'transaction':_0x3ebf7a})[_0xb230('0x23')](function(_0x2a3c0f){var _0x15e22a=_[_0xb230('0x28')](_0x2a3b78[_0xb230('0x48')],function(_0x39d1cb){delete _0x39d1cb['id'];_0x39d1cb['CustomReportId']=_0x2a3b78[_0xb230('0x41')]['id'];return _0x39d1cb;});return db['AnalyticFieldReport'][_0xb230('0x47')](_0x15e22a,{'transaction':_0x3ebf7a});});})[_0xb230('0x23')](function(){return db[_0xb230('0x29')][_0xb230('0x50')]({'where':{'CustomReportId':_0x2a3b78['params']['id']}});});}})[_0xb230('0x23')](respondWithResult(_0x5a2b6c,null))['catch'](handleError(_0x5a2b6c,null));};
\ No newline at end of file
index a4137ac..c9df126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4411=['bluebird','path','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','util','api','moment'];(function(_0x168203,_0x2cc788){var _0x1a994d=function(_0x2e0c15){while(--_0x2e0c15){_0x168203['push'](_0x168203['shift']());}};_0x1a994d(++_0x2cc788);}(_0x4411,0xcc));var _0x1441=function(_0x447481,_0x1df3f2){_0x447481=_0x447481-0x0;var _0x3fa4e2=_0x4411[_0x447481];return _0x3fa4e2;};'use strict';var _=require('lodash');var util=require(_0x1441('0x0'));var logger=require('../../config/logger')(_0x1441('0x1'));var moment=require(_0x1441('0x2'));var BPromise=require(_0x1441('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1441('0x4'));var rimraf=require('rimraf');var config=require(_0x1441('0x5'));var attributes=require(_0x1441('0x6'));module['exports']=function(_0x169312,_0xd8d70){return _0x169312[_0x1441('0x7')](_0x1441('0x8'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd60c=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','lodash','util','../../config/logger','api','moment'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xd60c,0xb1));var _0xcd60=function(_0x2a2c4a,_0x424f7c){_0x2a2c4a=_0x2a2c4a-0x0;var _0x3d2afb=_0xd60c[_0x2a2c4a];return _0x3d2afb;};'use strict';var _=require(_0xcd60('0x0'));var util=require(_0xcd60('0x1'));var logger=require(_0xcd60('0x2'))(_0xcd60('0x3'));var moment=require(_0xcd60('0x4'));var BPromise=require(_0xcd60('0x5'));var rp=require(_0xcd60('0x6'));var fs=require('fs');var path=require(_0xcd60('0x7'));var rimraf=require(_0xcd60('0x8'));var config=require(_0xcd60('0x9'));var attributes=require(_0xcd60('0xa'));module['exports']=function(_0x153d55,_0x4f7628){return _0x153d55[_0xcd60('0xb')](_0xcd60('0xc'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42c58ee..15e35e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb849=['http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x25c864,_0x4eb301){var _0xe5ff84=function(_0x21c594){while(--_0x21c594){_0x25c864['push'](_0x25c864['shift']());}};_0xe5ff84(++_0x4eb301);}(_0xb849,0x85));var _0x9b84=function(_0x3f19f2,_0x302e5b){_0x3f19f2=_0x3f19f2-0x0;var _0x5a6a78=_0xb849[_0x3f19f2];return _0x5a6a78;};'use strict';var _=require(_0x9b84('0x0'));var util=require(_0x9b84('0x1'));var moment=require('moment');var BPromise=require(_0x9b84('0x2'));var rs=require(_0x9b84('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b84('0x4'))['db'];var utils=require(_0x9b84('0x5'));var logger=require(_0x9b84('0x6'))(_0x9b84('0x7'));var config=require(_0x9b84('0x8'));var jayson=require(_0x9b84('0x9'));var client=jayson[_0x9b84('0xa')][_0x9b84('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31a647,_0x18585b,_0x2c242d){return new BPromise(function(_0x5c9de7,_0x361584){return client[_0x9b84('0xc')](_0x31a647,_0x2c242d)[_0x9b84('0xd')](function(_0x50ef55){logger[_0x9b84('0xe')](_0x9b84('0xf'),_0x18585b,_0x9b84('0x10'));logger[_0x9b84('0x11')](_0x9b84('0x12'),_0x18585b,'request\x20sent',JSON[_0x9b84('0x13')](_0x50ef55));if(_0x50ef55[_0x9b84('0x14')]){if(_0x50ef55['error']['code']===0x1f4){logger['error'](_0x9b84('0xf'),_0x18585b,_0x50ef55[_0x9b84('0x14')]['message']);return _0x361584(_0x50ef55[_0x9b84('0x14')][_0x9b84('0x15')]);}logger[_0x9b84('0x14')](_0x9b84('0xf'),_0x18585b,_0x50ef55[_0x9b84('0x14')][_0x9b84('0x15')]);return _0x5c9de7(_0x50ef55[_0x9b84('0x14')]['message']);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x18585b,'request\x20sent');_0x5c9de7(_0x50ef55[_0x9b84('0x16')][_0x9b84('0x15')]);}})[_0x9b84('0x17')](function(_0x23b141){logger[_0x9b84('0x14')](_0x9b84('0xf'),_0x18585b,_0x23b141);_0x361584(_0x23b141);});});}
\ No newline at end of file
+var _0x18ec=['request','then','info','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','code','AnalyticFieldReport,\x20%s,\x20%s','message','error','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x51611d,_0x29dc0e){var _0x219d1e=function(_0x5572ae){while(--_0x5572ae){_0x51611d['push'](_0x51611d['shift']());}};_0x219d1e(++_0x29dc0e);}(_0x18ec,0x6c));var _0xc18e=function(_0x9dfe98,_0x1fc7d1){_0x9dfe98=_0x9dfe98-0x0;var _0x15a898=_0x18ec[_0x9dfe98];return _0x15a898;};'use strict';var _=require(_0xc18e('0x0'));var util=require(_0xc18e('0x1'));var moment=require(_0xc18e('0x2'));var BPromise=require(_0xc18e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc18e('0x4'));var db=require(_0xc18e('0x5'))['db'];var utils=require(_0xc18e('0x6'));var logger=require(_0xc18e('0x7'))('rpc');var config=require(_0xc18e('0x8'));var jayson=require(_0xc18e('0x9'));var client=jayson[_0xc18e('0xa')][_0xc18e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43a65a,_0x59cd9f,_0xbec8ad){return new BPromise(function(_0x34342f,_0x21fd26){return client[_0xc18e('0xc')](_0x43a65a,_0xbec8ad)[_0xc18e('0xd')](function(_0x5abe8e){logger[_0xc18e('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x59cd9f,_0xc18e('0xf'));logger[_0xc18e('0x10')](_0xc18e('0x11'),_0x59cd9f,_0xc18e('0xf'),JSON[_0xc18e('0x12')](_0x5abe8e));if(_0x5abe8e['error']){if(_0x5abe8e['error'][_0xc18e('0x13')]===0x1f4){logger['error'](_0xc18e('0x14'),_0x59cd9f,_0x5abe8e['error'][_0xc18e('0x15')]);return _0x21fd26(_0x5abe8e[_0xc18e('0x16')]['message']);}logger[_0xc18e('0x16')](_0xc18e('0x14'),_0x59cd9f,_0x5abe8e[_0xc18e('0x16')]['message']);return _0x34342f(_0x5abe8e['error']['message']);}else{logger[_0xc18e('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x59cd9f,_0xc18e('0xf'));_0x34342f(_0x5abe8e[_0xc18e('0x17')][_0xc18e('0x15')]);}})['catch'](function(_0x56eba9){logger['error'](_0xc18e('0x14'),_0x59cd9f,_0x56eba9);_0x21fd26(_0x56eba9);});});}
\ No newline at end of file
index f827c4e..e285a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x3b8581,_0x32a9e0){var _0x1e8079=function(_0x487150){while(--_0x487150){_0x3b8581['push'](_0x3b8581['shift']());}};_0x1e8079(++_0x32a9e0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x3b08da,_0x3fe31c){var _0x3e98cc=function(_0x27bc31){while(--_0x27bc31){_0x3b08da['push'](_0x3b08da['shift']());}};_0x3e98cc(++_0x3fe31c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index c791556..0f225ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf257=['TEXT','STRING','name'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xf257,0x82));var _0x7f25=function(_0x1c0261,_0xbe62af){_0x1c0261=_0x1c0261-0x0;var _0x1f81d0=_0xf257[_0x1c0261];return _0x1f81d0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7f25('0x0')],'allowNull':![],'unique':_0x7f25('0x1')},'table':{'type':Sequelize[_0x7f25('0x0')]},'metric':{'type':Sequelize[_0x7f25('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6ea9=['name','sequelize','exports','STRING'];(function(_0x221eae,_0x2a3fa6){var _0x86f9f3=function(_0x59b699){while(--_0x59b699){_0x221eae['push'](_0x221eae['shift']());}};_0x86f9f3(++_0x2a3fa6);}(_0x6ea9,0x89));var _0x96ea=function(_0x4af1a8,_0x2cd95a){_0x4af1a8=_0x4af1a8-0x0;var _0x477ba3=_0x6ea9[_0x4af1a8];return _0x477ba3;};'use strict';var Sequelize=require(_0x96ea('0x0'));module[_0x96ea('0x1')]={'name':{'type':Sequelize[_0x96ea('0x2')],'allowNull':![],'unique':_0x96ea('0x3')},'table':{'type':Sequelize[_0x96ea('0x2')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x96ea('0x2')]}};
\ No newline at end of file
index cdc04f6..2a1c298 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Metrics','UserProfileResource','error','stack','name','map','AnalyticMetric','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','includeAll','include','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x5a7d5f,_0x5695cb){var _0x5dcded=function(_0x13f053){while(--_0x13f053){_0x5a7d5f['push'](_0x5a7d5f['shift']());}};_0x5dcded(++_0x5695cb);}(_0x84ab,0x12f));var _0xb84a=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x84ab[_0x376b45];return _0x2341b3;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){var _0x1aab7d=_0x3aa06f[_0xb84a('0x24')]({'plain':!![]});var _0x409df0=_0xb84a('0x25');return db[_0xb84a('0x26')][_0xb84a('0x23')]({'where':{'type':_0x409df0,'resourceId':_0x1aab7d['id']}})[_0xb84a('0x22')](function(){return _0x3aa06f;});})[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x1db72c,_0x2fe40d){return function(_0x35d1f7){if(!_0x35d1f7){_0x1db72c[_0xb84a('0x16')](0x194);}return _0x35d1f7;};}function handleError(_0x97d71b,_0x5349ea){_0x5349ea=_0x5349ea||0x1f4;return function(_0x582954){logger[_0xb84a('0x27')](_0x582954[_0xb84a('0x28')]);if(_0x582954['name']){delete _0x582954[_0xb84a('0x29')];}_0x97d71b[_0xb84a('0x17')](_0x5349ea)['send'](_0x582954);};}exports['index']=function(_0x28f2e7,_0x8e9319){var _0x49ba3d={},_0x251778={},_0xba1147={'count':0x0,'rows':[]};var _0x3abc22=_[_0xb84a('0x2a')](db[_0xb84a('0x2b')][_0xb84a('0x2c')],function(_0x34b212){return{'name':_0x34b212[_0xb84a('0x2d')],'type':_0x34b212['type'][_0xb84a('0x2e')]};});_0x251778['model']=_['map'](_0x3abc22,_0xb84a('0x29'));_0x251778[_0xb84a('0x2f')]=_['keys'](_0x28f2e7['query']);_0x251778[_0xb84a('0x30')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],_0x251778[_0xb84a('0x2f')]);_0x49ba3d[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],qs[_0xb84a('0x34')](_0x28f2e7['query'][_0xb84a('0x34')]));_0x49ba3d[_0xb84a('0x33')]=_0x49ba3d[_0xb84a('0x33')][_0xb84a('0x35')]?_0x49ba3d[_0xb84a('0x33')]:_0x251778[_0xb84a('0x32')];if(!_0x28f2e7[_0xb84a('0x2f')]['hasOwnProperty'](_0xb84a('0x36'))){_0x49ba3d['limit']=qs[_0xb84a('0x1c')](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x49ba3d['offset']=qs['offset'](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1a')]);}_0x49ba3d[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_0x28f2e7[_0xb84a('0x2f')]['sort']);_0x49ba3d[_0xb84a('0x39')]=qs[_0xb84a('0x30')](_['pick'](_0x28f2e7[_0xb84a('0x2f')],_0x251778[_0xb84a('0x30')]),_0x3abc22);if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3a')]){_0x49ba3d['where']=_['merge'](_0x49ba3d['where'],{'$or':_[_0xb84a('0x2a')](_0x3abc22,function(_0x11e1ac){if(_0x11e1ac[_0xb84a('0x3b')]!==_0xb84a('0x3c')){var _0x55b0b8={};_0x55b0b8[_0x11e1ac[_0xb84a('0x29')]]={'$like':'%'+_0x28f2e7['query'][_0xb84a('0x3a')]+'%'};return _0x55b0b8;}})});}_0x49ba3d=_['merge']({},_0x49ba3d,_0x28f2e7['options']);var _0x59d7a1={'where':_0x49ba3d[_0xb84a('0x39')]};return db[_0xb84a('0x2b')][_0xb84a('0x1d')](_0x59d7a1)[_0xb84a('0x22')](function(_0x5e547e){_0xba1147[_0xb84a('0x1d')]=_0x5e547e;if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x49ba3d[_0xb84a('0x3e')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x49ba3d);})[_0xb84a('0x22')](function(_0x1f3e04){_0xba1147['rows']=_0x1f3e04;return _0xba1147;})[_0xb84a('0x22')](respondWithFilteredResult(_0x8e9319,_0x49ba3d))[_0xb84a('0x3f')](handleError(_0x8e9319,null));};exports[_0xb84a('0x40')]=function(_0x25280a,_0x3f005b){var _0x241536={'raw':!![],'where':{'id':_0x25280a[_0xb84a('0x41')]['id']}},_0x24d700={};_0x24d700[_0xb84a('0x32')]=_[_0xb84a('0x42')](db[_0xb84a('0x2b')][_0xb84a('0x2c')]);_0x24d700[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x25280a[_0xb84a('0x2f')]);_0x24d700['filters']=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],_0x24d700[_0xb84a('0x2f')]);_0x241536[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],qs['fields'](_0x25280a[_0xb84a('0x2f')]['fields']));_0x241536[_0xb84a('0x33')]=_0x241536[_0xb84a('0x33')][_0xb84a('0x35')]?_0x241536[_0xb84a('0x33')]:_0x24d700['model'];if(_0x25280a[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x241536[_0xb84a('0x3e')]=[{'all':!![]}];}_0x241536=_['merge']({},_0x241536,_0x25280a['options']);return db[_0xb84a('0x2b')][_0xb84a('0x43')](_0x241536)[_0xb84a('0x22')](handleEntityNotFound(_0x3f005b,null))['then'](respondWithResult(_0x3f005b,null))['catch'](handleError(_0x3f005b,null));};exports['create']=function(_0x45630d,_0x384a0d){return db[_0xb84a('0x2b')][_0xb84a('0x44')](_0x45630d[_0xb84a('0x45')],{})['then'](function(_0x4b40fe){var _0x5b853a=_0x45630d['user'][_0xb84a('0x24')]({'plain':!![]});if(!_0x5b853a)throw new Error(_0xb84a('0x46'));if(_0x5b853a['role']===_0xb84a('0x47')){var _0xc8bac2=_0x4b40fe[_0xb84a('0x24')]({'plain':!![]});var _0x2f70f0=_0xb84a('0x25');return db[_0xb84a('0x48')]['find']({'where':{'name':_0x2f70f0,'userProfileId':_0x5b853a['userProfileId']},'raw':!![]})[_0xb84a('0x22')](function(_0x50172a){if(_0x50172a&&_0x50172a[_0xb84a('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0xc8bac2['name'],'resourceId':_0xc8bac2['id'],'type':_0x50172a[_0xb84a('0x29')],'sectionId':_0x50172a['id']},{})[_0xb84a('0x22')](function(){return _0x4b40fe;});}else{return _0x4b40fe;}})[_0xb84a('0x3f')](function(_0x25b6a0){logger[_0xb84a('0x27')](_0xb84a('0x4a'),_0x25b6a0);throw _0x25b6a0;});}return _0x4b40fe;})[_0xb84a('0x22')](respondWithResult(_0x384a0d,0xc9))[_0xb84a('0x3f')](handleError(_0x384a0d,null));};exports['update']=function(_0x5afdd0,_0x4c5bdf){if(_0x5afdd0[_0xb84a('0x45')]['id']){delete _0x5afdd0[_0xb84a('0x45')]['id'];}return db['AnalyticMetric'][_0xb84a('0x43')]({'where':{'id':_0x5afdd0['params']['id']}})['then'](handleEntityNotFound(_0x4c5bdf,null))['then'](saveUpdates(_0x5afdd0[_0xb84a('0x45')],null))[_0xb84a('0x22')](respondWithResult(_0x4c5bdf,null))[_0xb84a('0x3f')](handleError(_0x4c5bdf,null));};exports['destroy']=function(_0x5f757e,_0x2e98bf){return db[_0xb84a('0x2b')]['find']({'where':{'id':_0x5f757e[_0xb84a('0x41')]['id']}})['then'](handleEntityNotFound(_0x2e98bf,null))['then'](removeEntity(_0x2e98bf,null))[_0xb84a('0x3f')](handleError(_0x2e98bf,null));};
\ No newline at end of file
+var _0x8ef6=['../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','map','fieldName','key','model','keys','query','intersection','attributes','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','AnalyticMetric','count','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Metrics','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x28642a,_0x5e4127){var _0x2e8225=function(_0x162fdc){while(--_0x162fdc){_0x28642a['push'](_0x28642a['shift']());}};_0x2e8225(++_0x5e4127);}(_0x8ef6,0xf2));var _0x68ef=function(_0x1f05a6,_0x276283){_0x1f05a6=_0x1f05a6-0x0;var _0x5ec318=_0x8ef6[_0x1f05a6];return _0x5ec318;};'use strict';var emlformat=require(_0x68ef('0x0'));var rimraf=require(_0x68ef('0x1'));var zipdir=require(_0x68ef('0x2'));var jsonpatch=require(_0x68ef('0x3'));var rp=require(_0x68ef('0x4'));var moment=require(_0x68ef('0x5'));var BPromise=require(_0x68ef('0x6'));var Mustache=require('mustache');var util=require(_0x68ef('0x7'));var path=require(_0x68ef('0x8'));var sox=require(_0x68ef('0x9'));var csv=require(_0x68ef('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x68ef('0xb'));var squel=require(_0x68ef('0xc'));var crypto=require(_0x68ef('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x68ef('0xe'));var toCsv=require(_0x68ef('0xa'));var querystring=require(_0x68ef('0xf'));var Papa=require(_0x68ef('0x10'));var Redis=require(_0x68ef('0x11'));var authService=require(_0x68ef('0x12'));var qs=require(_0x68ef('0x13'));var as=require(_0x68ef('0x14'));var hardwareService=require(_0x68ef('0x15'));var logger=require(_0x68ef('0x16'))(_0x68ef('0x17'));var utils=require(_0x68ef('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x68ef('0x19'));var db=require(_0x68ef('0x1a'))['db'];function respondWithStatusCode(_0x1e117a,_0x454ef4){_0x454ef4=_0x454ef4||0xcc;return function(_0x40f253){if(_0x40f253){return _0x1e117a[_0x68ef('0x1b')](_0x454ef4);}return _0x1e117a['status'](_0x454ef4)[_0x68ef('0x1c')]();};}function respondWithResult(_0xc50cce,_0x2657c5){_0x2657c5=_0x2657c5||0xc8;return function(_0x47fbb5){if(_0x47fbb5){return _0xc50cce[_0x68ef('0x1d')](_0x2657c5)[_0x68ef('0x1e')](_0x47fbb5);}};}function respondWithFilteredResult(_0x24682d,_0x5005ba){return function(_0x35493d){if(_0x35493d){var _0x37c4cc=typeof _0x5005ba[_0x68ef('0x1f')]===_0x68ef('0x20')&&typeof _0x5005ba['limit']===_0x68ef('0x20');var _0x54139e=_0x35493d['count'];var _0x2633c1=_0x37c4cc?0x0:_0x5005ba[_0x68ef('0x1f')];var _0x4ade0d=_0x37c4cc?_0x35493d['count']:_0x5005ba[_0x68ef('0x1f')]+_0x5005ba[_0x68ef('0x21')];var _0x318514;if(_0x4ade0d>=_0x54139e){_0x4ade0d=_0x54139e;_0x318514=0xc8;}else{_0x318514=0xce;}_0x24682d['status'](_0x318514);return _0x24682d[_0x68ef('0x22')](_0x68ef('0x23'),_0x2633c1+'-'+_0x4ade0d+'/'+_0x54139e)[_0x68ef('0x1e')](_0x35493d);}return null;};}function patchUpdates(_0x5b246b){return function(_0x3c46d4){try{jsonpatch[_0x68ef('0x24')](_0x3c46d4,_0x5b246b,!![]);}catch(_0x5af19f){return BPromise[_0x68ef('0x25')](_0x5af19f);}return _0x3c46d4[_0x68ef('0x26')]();};}function saveUpdates(_0x19aa3d,_0x5ddec7){return function(_0x59723c){if(_0x59723c){return _0x59723c['update'](_0x19aa3d)[_0x68ef('0x27')](function(_0x2023f2){return _0x2023f2;});}return null;};}function removeEntity(_0x312cc9,_0x2e6e39){return function(_0x438b4c){if(_0x438b4c){return _0x438b4c[_0x68ef('0x28')]()[_0x68ef('0x27')](function(){var _0x49374f=_0x438b4c[_0x68ef('0x29')]({'plain':!![]});var _0x13280b='Metrics';return db[_0x68ef('0x2a')]['destroy']({'where':{'type':_0x13280b,'resourceId':_0x49374f['id']}})['then'](function(){return _0x438b4c;});})['then'](function(){_0x312cc9[_0x68ef('0x1d')](0xcc)[_0x68ef('0x1c')]();});}};}function handleEntityNotFound(_0x123041,_0x29518e){return function(_0x52e67e){if(!_0x52e67e){_0x123041['sendStatus'](0x194);}return _0x52e67e;};}function handleError(_0x1cbe4f,_0x28907a){_0x28907a=_0x28907a||0x1f4;return function(_0x7bf96){logger[_0x68ef('0x2b')](_0x7bf96[_0x68ef('0x2c')]);if(_0x7bf96[_0x68ef('0x2d')]){delete _0x7bf96[_0x68ef('0x2d')];}_0x1cbe4f[_0x68ef('0x1d')](_0x28907a)['send'](_0x7bf96);};}exports[_0x68ef('0x2e')]=function(_0x4314bd,_0x132d9e){var _0x4c25aa={},_0x370a8f={},_0x523120={'count':0x0,'rows':[]};var _0x133788=_[_0x68ef('0x2f')](db['AnalyticMetric']['rawAttributes'],function(_0x159395){return{'name':_0x159395[_0x68ef('0x30')],'type':_0x159395['type'][_0x68ef('0x31')]};});_0x370a8f[_0x68ef('0x32')]=_[_0x68ef('0x2f')](_0x133788,_0x68ef('0x2d'));_0x370a8f['query']=_[_0x68ef('0x33')](_0x4314bd[_0x68ef('0x34')]);_0x370a8f['filters']=_[_0x68ef('0x35')](_0x370a8f['model'],_0x370a8f[_0x68ef('0x34')]);_0x4c25aa[_0x68ef('0x36')]=_['intersection'](_0x370a8f[_0x68ef('0x32')],qs['fields'](_0x4314bd[_0x68ef('0x34')]['fields']));_0x4c25aa[_0x68ef('0x36')]=_0x4c25aa[_0x68ef('0x36')][_0x68ef('0x37')]?_0x4c25aa['attributes']:_0x370a8f[_0x68ef('0x32')];if(!_0x4314bd['query'][_0x68ef('0x38')]('nolimit')){_0x4c25aa[_0x68ef('0x21')]=qs[_0x68ef('0x21')](_0x4314bd[_0x68ef('0x34')][_0x68ef('0x21')]);_0x4c25aa[_0x68ef('0x1f')]=qs[_0x68ef('0x1f')](_0x4314bd['query'][_0x68ef('0x1f')]);}_0x4c25aa[_0x68ef('0x39')]=qs[_0x68ef('0x3a')](_0x4314bd['query'][_0x68ef('0x3a')]);_0x4c25aa[_0x68ef('0x3b')]=qs[_0x68ef('0x3c')](_['pick'](_0x4314bd['query'],_0x370a8f[_0x68ef('0x3c')]),_0x133788);if(_0x4314bd[_0x68ef('0x34')][_0x68ef('0x3d')]){_0x4c25aa[_0x68ef('0x3b')]=_[_0x68ef('0x3e')](_0x4c25aa[_0x68ef('0x3b')],{'$or':_[_0x68ef('0x2f')](_0x133788,function(_0x5b1246){if(_0x5b1246[_0x68ef('0x3f')]!==_0x68ef('0x40')){var _0x2f6ee0={};_0x2f6ee0[_0x5b1246[_0x68ef('0x2d')]]={'$like':'%'+_0x4314bd['query'][_0x68ef('0x3d')]+'%'};return _0x2f6ee0;}})});}_0x4c25aa=_[_0x68ef('0x3e')]({},_0x4c25aa,_0x4314bd[_0x68ef('0x41')]);var _0x410c10={'where':_0x4c25aa[_0x68ef('0x3b')]};return db[_0x68ef('0x42')]['count'](_0x410c10)[_0x68ef('0x27')](function(_0x3f7699){_0x523120[_0x68ef('0x43')]=_0x3f7699;if(_0x4314bd[_0x68ef('0x34')][_0x68ef('0x44')]){_0x4c25aa[_0x68ef('0x45')]=[{'all':!![]}];}return db[_0x68ef('0x42')][_0x68ef('0x46')](_0x4c25aa);})[_0x68ef('0x27')](function(_0x531096){_0x523120[_0x68ef('0x47')]=_0x531096;return _0x523120;})[_0x68ef('0x27')](respondWithFilteredResult(_0x132d9e,_0x4c25aa))[_0x68ef('0x48')](handleError(_0x132d9e,null));};exports[_0x68ef('0x49')]=function(_0xdeacf2,_0x183377){var _0xcac58f={'raw':!![],'where':{'id':_0xdeacf2[_0x68ef('0x4a')]['id']}},_0x576767={};_0x576767['model']=_[_0x68ef('0x33')](db[_0x68ef('0x42')][_0x68ef('0x4b')]);_0x576767[_0x68ef('0x34')]=_['keys'](_0xdeacf2[_0x68ef('0x34')]);_0x576767['filters']=_[_0x68ef('0x35')](_0x576767['model'],_0x576767[_0x68ef('0x34')]);_0xcac58f[_0x68ef('0x36')]=_[_0x68ef('0x35')](_0x576767['model'],qs['fields'](_0xdeacf2[_0x68ef('0x34')][_0x68ef('0x4c')]));_0xcac58f['attributes']=_0xcac58f['attributes']['length']?_0xcac58f[_0x68ef('0x36')]:_0x576767[_0x68ef('0x32')];if(_0xdeacf2[_0x68ef('0x34')][_0x68ef('0x44')]){_0xcac58f[_0x68ef('0x45')]=[{'all':!![]}];}_0xcac58f=_['merge']({},_0xcac58f,_0xdeacf2['options']);return db[_0x68ef('0x42')][_0x68ef('0x4d')](_0xcac58f)[_0x68ef('0x27')](handleEntityNotFound(_0x183377,null))[_0x68ef('0x27')](respondWithResult(_0x183377,null))['catch'](handleError(_0x183377,null));};exports[_0x68ef('0x4e')]=function(_0x474e5a,_0x1c9b6f){return db[_0x68ef('0x42')]['create'](_0x474e5a['body'],{})[_0x68ef('0x27')](function(_0x3c3074){var _0x566e7c=_0x474e5a[_0x68ef('0x4f')][_0x68ef('0x29')]({'plain':!![]});if(!_0x566e7c)throw new Error(_0x68ef('0x50'));if(_0x566e7c[_0x68ef('0x51')]===_0x68ef('0x4f')){var _0x4f0f77=_0x3c3074[_0x68ef('0x29')]({'plain':!![]});var _0x3984ca=_0x68ef('0x52');return db['UserProfileSection'][_0x68ef('0x4d')]({'where':{'name':_0x3984ca,'userProfileId':_0x566e7c[_0x68ef('0x53')]},'raw':!![]})[_0x68ef('0x27')](function(_0x50ef1f){if(_0x50ef1f&&_0x50ef1f[_0x68ef('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x4f0f77[_0x68ef('0x2d')],'resourceId':_0x4f0f77['id'],'type':_0x50ef1f['name'],'sectionId':_0x50ef1f['id']},{})[_0x68ef('0x27')](function(){return _0x3c3074;});}else{return _0x3c3074;}})[_0x68ef('0x48')](function(_0x53ebd){logger[_0x68ef('0x2b')](_0x68ef('0x55'),_0x53ebd);throw _0x53ebd;});}return _0x3c3074;})[_0x68ef('0x27')](respondWithResult(_0x1c9b6f,0xc9))[_0x68ef('0x48')](handleError(_0x1c9b6f,null));};exports[_0x68ef('0x56')]=function(_0x2b35f4,_0x247915){if(_0x2b35f4['body']['id']){delete _0x2b35f4['body']['id'];}return db[_0x68ef('0x42')][_0x68ef('0x4d')]({'where':{'id':_0x2b35f4[_0x68ef('0x4a')]['id']}})[_0x68ef('0x27')](handleEntityNotFound(_0x247915,null))[_0x68ef('0x27')](saveUpdates(_0x2b35f4[_0x68ef('0x57')],null))[_0x68ef('0x27')](respondWithResult(_0x247915,null))[_0x68ef('0x48')](handleError(_0x247915,null));};exports[_0x68ef('0x28')]=function(_0x4c2e9c,_0x5685bb){return db[_0x68ef('0x42')]['find']({'where':{'id':_0x4c2e9c[_0x68ef('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5685bb,null))[_0x68ef('0x27')](removeEntity(_0x5685bb,null))[_0x68ef('0x48')](handleError(_0x5685bb,null));};
\ No newline at end of file
index 6506e26..51ee7a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93bb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticMetric','lodash','util','../../config/logger'];(function(_0x3c7ce2,_0xc3c192){var _0x488577=function(_0x8e0744){while(--_0x8e0744){_0x3c7ce2['push'](_0x3c7ce2['shift']());}};_0x488577(++_0xc3c192);}(_0x93bb,0x135));var _0xb93b=function(_0x23f994,_0x5e398a){_0x23f994=_0x23f994-0x0;var _0x3d0858=_0x93bb[_0x23f994];return _0x3d0858;};'use strict';var _=require(_0xb93b('0x0'));var util=require(_0xb93b('0x1'));var logger=require(_0xb93b('0x2'))(_0xb93b('0x3'));var moment=require(_0xb93b('0x4'));var BPromise=require(_0xb93b('0x5'));var rp=require(_0xb93b('0x6'));var fs=require('fs');var path=require(_0xb93b('0x7'));var rimraf=require(_0xb93b('0x8'));var config=require(_0xb93b('0x9'));var attributes=require('./analyticMetric.attributes');module[_0xb93b('0xa')]=function(_0x1ec4dd,_0x4e89c7){return _0x1ec4dd[_0xb93b('0xb')](_0xb93b('0xc'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab36=['util','../../config/logger','api','moment','request-promise','path','rimraf','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash'];(function(_0x5cc2a8,_0x47305e){var _0x36a9ae=function(_0x29c23f){while(--_0x29c23f){_0x5cc2a8['push'](_0x5cc2a8['shift']());}};_0x36a9ae(++_0x47305e);}(_0xab36,0x1df));var _0x6ab3=function(_0x3d6ac9,_0x3343b5){_0x3d6ac9=_0x3d6ac9-0x0;var _0xe78e51=_0xab36[_0x3d6ac9];return _0xe78e51;};'use strict';var _=require(_0x6ab3('0x0'));var util=require(_0x6ab3('0x1'));var logger=require(_0x6ab3('0x2'))(_0x6ab3('0x3'));var moment=require(_0x6ab3('0x4'));var BPromise=require('bluebird');var rp=require(_0x6ab3('0x5'));var fs=require('fs');var path=require(_0x6ab3('0x6'));var rimraf=require(_0x6ab3('0x7'));var config=require('../../config/environment');var attributes=require(_0x6ab3('0x8'));module[_0x6ab3('0x9')]=function(_0x40810a,_0x8a9495){return _0x40810a[_0x6ab3('0xa')](_0x6ab3('0xb'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd4d733..538e5ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc5=['debug','error','code','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x33ccab,_0x3bc60e){var _0x4ea9fe=function(_0x20e68e){while(--_0x20e68e){_0x33ccab['push'](_0x33ccab['shift']());}};_0x4ea9fe(++_0x3bc60e);}(_0x4dc5,0x6a));var _0x54dc=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x4dc5[_0x17928f];return _0x500b63;};'use strict';var _=require('lodash');var util=require(_0x54dc('0x0'));var moment=require(_0x54dc('0x1'));var BPromise=require(_0x54dc('0x2'));var rs=require(_0x54dc('0x3'));var fs=require('fs');var Redis=require(_0x54dc('0x4'));var db=require(_0x54dc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x54dc('0x6'))(_0x54dc('0x7'));var config=require(_0x54dc('0x8'));var jayson=require(_0x54dc('0x9'));var client=jayson['client'][_0x54dc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f5f89,_0x5de6d8,_0x1d4d33){return new BPromise(function(_0x4acd60,_0x4df64f){return client['request'](_0x3f5f89,_0x1d4d33)[_0x54dc('0xb')](function(_0x2a0764){logger['info'](_0x54dc('0xc'),_0x5de6d8,_0x54dc('0xd'));logger[_0x54dc('0xe')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x5de6d8,_0x54dc('0xd'),JSON['stringify'](_0x2a0764));if(_0x2a0764[_0x54dc('0xf')]){if(_0x2a0764['error'][_0x54dc('0x10')]===0x1f4){logger[_0x54dc('0xf')](_0x54dc('0xc'),_0x5de6d8,_0x2a0764[_0x54dc('0xf')]['message']);return _0x4df64f(_0x2a0764['error'][_0x54dc('0x11')]);}logger[_0x54dc('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x5de6d8,_0x2a0764[_0x54dc('0xf')][_0x54dc('0x11')]);return _0x4acd60(_0x2a0764[_0x54dc('0xf')][_0x54dc('0x11')]);}else{logger[_0x54dc('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x5de6d8,_0x54dc('0xd'));_0x4acd60(_0x2a0764['result'][_0x54dc('0x11')]);}})[_0x54dc('0x13')](function(_0x4e9e57){logger[_0x54dc('0xf')](_0x54dc('0xc'),_0x5de6d8,_0x4e9e57);_0x4df64f(_0x4e9e57);});});}
\ No newline at end of file
+var _0x545f=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x81de14,_0x519540){var _0x52ec99=function(_0x1afb4a){while(--_0x1afb4a){_0x81de14['push'](_0x81de14['shift']());}};_0x52ec99(++_0x519540);}(_0x545f,0x1c2));var _0xf545=function(_0x2ff238,_0x1811d2){_0x2ff238=_0x2ff238-0x0;var _0x204a56=_0x545f[_0x2ff238];return _0x204a56;};'use strict';var _=require(_0xf545('0x0'));var util=require('util');var moment=require(_0xf545('0x1'));var BPromise=require('bluebird');var rs=require(_0xf545('0x2'));var fs=require('fs');var Redis=require(_0xf545('0x3'));var db=require(_0xf545('0x4'))['db'];var utils=require(_0xf545('0x5'));var logger=require(_0xf545('0x6'))(_0xf545('0x7'));var config=require(_0xf545('0x8'));var jayson=require(_0xf545('0x9'));var client=jayson[_0xf545('0xa')][_0xf545('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a8138,_0x39c66c,_0x186959){return new BPromise(function(_0x29acf2,_0x537cd1){return client[_0xf545('0xc')](_0x1a8138,_0x186959)[_0xf545('0xd')](function(_0x250c03){logger[_0xf545('0xe')](_0xf545('0xf'),_0x39c66c,_0xf545('0x10'));logger[_0xf545('0x11')](_0xf545('0x12'),_0x39c66c,_0xf545('0x10'),JSON[_0xf545('0x13')](_0x250c03));if(_0x250c03[_0xf545('0x14')]){if(_0x250c03[_0xf545('0x14')][_0xf545('0x15')]===0x1f4){logger[_0xf545('0x14')](_0xf545('0xf'),_0x39c66c,_0x250c03[_0xf545('0x14')][_0xf545('0x16')]);return _0x537cd1(_0x250c03[_0xf545('0x14')][_0xf545('0x16')]);}logger['error'](_0xf545('0xf'),_0x39c66c,_0x250c03[_0xf545('0x14')]['message']);return _0x29acf2(_0x250c03['error'][_0xf545('0x16')]);}else{logger['info'](_0xf545('0xf'),_0x39c66c,_0xf545('0x10'));_0x29acf2(_0x250c03[_0xf545('0x17')][_0xf545('0x16')]);}})[_0xf545('0x18')](function(_0x4d2741){logger[_0xf545('0x14')](_0xf545('0xf'),_0x39c66c,_0x4d2741);_0x537cd1(_0x4d2741);});});}
\ No newline at end of file
index 0cd9c84..90c2fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea5=['isAuthenticated','show','post','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3c90fb,_0x268287){var _0x23533a=function(_0x5ed4c6){while(--_0x5ed4c6){_0x3c90fb['push'](_0x3c90fb['shift']());}};_0x23533a(++_0x268287);}(_0xcea5,0xed));var _0x5cea=function(_0x124948,_0x249380){_0x124948=_0x124948-0x0;var _0x4779e7=_0xcea5[_0x124948];return _0x4779e7;};'use strict';var multer=require(_0x5cea('0x0'));var util=require(_0x5cea('0x1'));var path=require(_0x5cea('0x2'));var timeout=require(_0x5cea('0x3'));var express=require(_0x5cea('0x4'));var router=express['Router']();var fs_extra=require(_0x5cea('0x5'));var auth=require(_0x5cea('0x6'));var interaction=require(_0x5cea('0x7'));var config=require(_0x5cea('0x8'));var controller=require('./analyticMetric.controller');router[_0x5cea('0x9')]('/',auth[_0x5cea('0xa')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x5cea('0xb')]);router[_0x5cea('0xc')]('/',auth['isAuthenticated'](),controller[_0x5cea('0xd')]);router['put'](_0x5cea('0xe'),auth[_0x5cea('0xa')](),controller[_0x5cea('0xf')]);router[_0x5cea('0x10')](_0x5cea('0xe'),auth[_0x5cea('0xa')](),controller[_0x5cea('0x11')]);module[_0x5cea('0x12')]=router;
\ No newline at end of file
+var _0xb079=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','isAuthenticated','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x1e96dc,_0x108b16){var _0x475b0e=function(_0x517159){while(--_0x517159){_0x1e96dc['push'](_0x1e96dc['shift']());}};_0x475b0e(++_0x108b16);}(_0xb079,0x1c9));var _0x9b07=function(_0x50ce03,_0x1f1346){_0x50ce03=_0x50ce03-0x0;var _0x30cfb4=_0xb079[_0x50ce03];return _0x30cfb4;};'use strict';var multer=require('multer');var util=require(_0x9b07('0x0'));var path=require(_0x9b07('0x1'));var timeout=require(_0x9b07('0x2'));var express=require(_0x9b07('0x3'));var router=express[_0x9b07('0x4')]();var fs_extra=require(_0x9b07('0x5'));var auth=require(_0x9b07('0x6'));var interaction=require(_0x9b07('0x7'));var config=require(_0x9b07('0x8'));var controller=require(_0x9b07('0x9'));router[_0x9b07('0xa')]('/',auth['isAuthenticated'](),controller[_0x9b07('0xb')]);router[_0x9b07('0xa')]('/:id',auth[_0x9b07('0xc')](),controller['show']);router['post']('/',auth[_0x9b07('0xc')](),controller[_0x9b07('0xd')]);router[_0x9b07('0xe')](_0x9b07('0xf'),auth['isAuthenticated'](),controller[_0x9b07('0x10')]);router[_0x9b07('0x11')](_0x9b07('0xf'),auth[_0x9b07('0xc')](),controller[_0x9b07('0x12')]);module[_0x9b07('0x13')]=router;
\ No newline at end of file
index 64e0528..5930b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x917c=['sequelize','exports','TEXT'];(function(_0x58933a,_0x3aad0a){var _0x193447=function(_0x482785){while(--_0x482785){_0x58933a['push'](_0x58933a['shift']());}};_0x193447(++_0x3aad0a);}(_0x917c,0x69));var _0xc917=function(_0x296fa9,_0x256c0f){_0x296fa9=_0x296fa9-0x0;var _0x3c783b=_0x917c[_0x296fa9];return _0x3c783b;};'use strict';var Sequelize=require(_0xc917('0x0'));module[_0xc917('0x1')]={'tree':{'type':Sequelize[_0xc917('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x332c=['TEXT','sequelize','exports'];(function(_0x5704b4,_0x35d891){var _0x41c563=function(_0x2e868e){while(--_0x2e868e){_0x5704b4['push'](_0x5704b4['shift']());}};_0x41c563(++_0x35d891);}(_0x332c,0xac));var _0xc332=function(_0x5d9867,_0x5e9030){_0x5d9867=_0x5d9867-0x0;var _0x7d2118=_0x332c[_0x5d9867];return _0x7d2118;};'use strict';var Sequelize=require(_0xc332('0x0'));module[_0xc332('0x1')]={'tree':{'type':Sequelize[_0xc332('0x2')],'allowNull':![]}};
\ No newline at end of file
index dd06ec5..d94d6a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5249=['type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','json','offset','undefined','count','limit','Content-Range','apply','update','destroy','then','sendStatus','error','name','send','AnalyticTreeReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','order','sort','where','filter','merge'];(function(_0x571b0a,_0x2b247d){var _0x3e58de=function(_0x4311b4){while(--_0x4311b4){_0x571b0a['push'](_0x571b0a['shift']());}};_0x3e58de(++_0x2b247d);}(_0x5249,0x124));var _0x9524=function(_0x8698c1,_0x4cad87){_0x8698c1=_0x8698c1-0x0;var _0x3c7f82=_0x5249[_0x8698c1];return _0x3c7f82;};'use strict';var emlformat=require(_0x9524('0x0'));var rimraf=require(_0x9524('0x1'));var zipdir=require(_0x9524('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9524('0x3'));var moment=require(_0x9524('0x4'));var BPromise=require(_0x9524('0x5'));var Mustache=require(_0x9524('0x6'));var util=require('util');var path=require(_0x9524('0x7'));var sox=require(_0x9524('0x8'));var csv=require(_0x9524('0x9'));var ejs=require(_0x9524('0xa'));var fs=require('fs');var fs_extra=require(_0x9524('0xb'));var _=require(_0x9524('0xc'));var squel=require('squel');var crypto=require(_0x9524('0xd'));var jsforce=require(_0x9524('0xe'));var deskjs=require(_0x9524('0xf'));var toCsv=require(_0x9524('0x9'));var querystring=require('querystring');var Papa=require(_0x9524('0x10'));var Redis=require('ioredis');var authService=require(_0x9524('0x11'));var qs=require(_0x9524('0x12'));var as=require(_0x9524('0x13'));var hardwareService=require(_0x9524('0x14'));var logger=require(_0x9524('0x15'))(_0x9524('0x16'));var utils=require(_0x9524('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21e9de,_0x26261d){_0x26261d=_0x26261d||0xcc;return function(_0x672bbf){if(_0x672bbf){return _0x21e9de['sendStatus'](_0x26261d);}return _0x21e9de[_0x9524('0x18')](_0x26261d)[_0x9524('0x19')]();};}function respondWithResult(_0x394b29,_0x5170af){_0x5170af=_0x5170af||0xc8;return function(_0x31c2dc){if(_0x31c2dc){return _0x394b29[_0x9524('0x18')](_0x5170af)[_0x9524('0x1a')](_0x31c2dc);}};}function respondWithFilteredResult(_0x133a03,_0x1ad25d){return function(_0x39eb37){if(_0x39eb37){var _0x314e86=typeof _0x1ad25d[_0x9524('0x1b')]===_0x9524('0x1c')&&typeof _0x1ad25d['limit']===_0x9524('0x1c');var _0x827139=_0x39eb37[_0x9524('0x1d')];var _0x240be8=_0x314e86?0x0:_0x1ad25d[_0x9524('0x1b')];var _0x4a3de0=_0x314e86?_0x39eb37[_0x9524('0x1d')]:_0x1ad25d[_0x9524('0x1b')]+_0x1ad25d[_0x9524('0x1e')];var _0x111505;if(_0x4a3de0>=_0x827139){_0x4a3de0=_0x827139;_0x111505=0xc8;}else{_0x111505=0xce;}_0x133a03['status'](_0x111505);return _0x133a03['set'](_0x9524('0x1f'),_0x240be8+'-'+_0x4a3de0+'/'+_0x827139)['json'](_0x39eb37);}return null;};}function patchUpdates(_0x2be694){return function(_0x27697e){try{jsonpatch[_0x9524('0x20')](_0x27697e,_0x2be694,!![]);}catch(_0x4ec992){return BPromise['reject'](_0x4ec992);}return _0x27697e['save']();};}function saveUpdates(_0x2f8cfa,_0xa304e9){return function(_0x27e3d8){if(_0x27e3d8){return _0x27e3d8[_0x9524('0x21')](_0x2f8cfa)['then'](function(_0x1f479d){return _0x1f479d;});}return null;};}function removeEntity(_0x10a3f7,_0x3f7c60){return function(_0x2eb4be){if(_0x2eb4be){return _0x2eb4be[_0x9524('0x22')]()[_0x9524('0x23')](function(){_0x10a3f7['status'](0xcc)[_0x9524('0x19')]();});}};}function handleEntityNotFound(_0x5e9a7f,_0x5e7c1c){return function(_0x23cb56){if(!_0x23cb56){_0x5e9a7f[_0x9524('0x24')](0x194);}return _0x23cb56;};}function handleError(_0x41ee32,_0x1a4c19){_0x1a4c19=_0x1a4c19||0x1f4;return function(_0x8b3465){logger[_0x9524('0x25')](_0x8b3465['stack']);if(_0x8b3465[_0x9524('0x26')]){delete _0x8b3465[_0x9524('0x26')];}_0x41ee32[_0x9524('0x18')](_0x1a4c19)[_0x9524('0x27')](_0x8b3465);};}exports['index']=function(_0x1dd90e,_0x3ec256){var _0x3f6e9d={},_0x5ba0da={},_0x131667={'count':0x0,'rows':[]};var _0x5b1943=_['map'](db[_0x9524('0x28')][_0x9524('0x29')],function(_0x142730){return{'name':_0x142730[_0x9524('0x2a')],'type':_0x142730['type'][_0x9524('0x2b')]};});_0x5ba0da[_0x9524('0x2c')]=_[_0x9524('0x2d')](_0x5b1943,_0x9524('0x26'));_0x5ba0da[_0x9524('0x2e')]=_[_0x9524('0x2f')](_0x1dd90e[_0x9524('0x2e')]);_0x5ba0da[_0x9524('0x30')]=_[_0x9524('0x31')](_0x5ba0da['model'],_0x5ba0da[_0x9524('0x2e')]);_0x3f6e9d['attributes']=_[_0x9524('0x31')](_0x5ba0da[_0x9524('0x2c')],qs[_0x9524('0x32')](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x32')]));_0x3f6e9d[_0x9524('0x33')]=_0x3f6e9d[_0x9524('0x33')][_0x9524('0x34')]?_0x3f6e9d[_0x9524('0x33')]:_0x5ba0da[_0x9524('0x2c')];if(!_0x1dd90e[_0x9524('0x2e')]['hasOwnProperty']('nolimit')){_0x3f6e9d[_0x9524('0x1e')]=qs['limit'](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x1e')]);_0x3f6e9d[_0x9524('0x1b')]=qs['offset'](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x1b')]);}_0x3f6e9d[_0x9524('0x35')]=qs[_0x9524('0x36')](_0x1dd90e[_0x9524('0x2e')][_0x9524('0x36')]);_0x3f6e9d[_0x9524('0x37')]=qs[_0x9524('0x30')](_['pick'](_0x1dd90e[_0x9524('0x2e')],_0x5ba0da[_0x9524('0x30')]),_0x5b1943);if(_0x1dd90e[_0x9524('0x2e')][_0x9524('0x38')]){_0x3f6e9d[_0x9524('0x37')]=_[_0x9524('0x39')](_0x3f6e9d[_0x9524('0x37')],{'$or':_[_0x9524('0x2d')](_0x5b1943,function(_0x14f802){if(_0x14f802[_0x9524('0x3a')]!==_0x9524('0x3b')){var _0x2d1e83={};_0x2d1e83[_0x14f802[_0x9524('0x26')]]={'$like':'%'+_0x1dd90e[_0x9524('0x2e')]['filter']+'%'};return _0x2d1e83;}})});}_0x3f6e9d=_[_0x9524('0x39')]({},_0x3f6e9d,_0x1dd90e[_0x9524('0x3c')]);var _0x284d6c={'where':_0x3f6e9d[_0x9524('0x37')]};return db[_0x9524('0x28')][_0x9524('0x1d')](_0x284d6c)[_0x9524('0x23')](function(_0x3d9117){_0x131667['count']=_0x3d9117;if(_0x1dd90e[_0x9524('0x2e')][_0x9524('0x3d')]){_0x3f6e9d[_0x9524('0x3e')]=[{'all':!![]}];}return db[_0x9524('0x28')]['findAll'](_0x3f6e9d);})[_0x9524('0x23')](function(_0x570854){_0x131667[_0x9524('0x3f')]=_0x570854;return _0x131667;})['then'](respondWithFilteredResult(_0x3ec256,_0x3f6e9d))[_0x9524('0x40')](handleError(_0x3ec256,null));};exports[_0x9524('0x41')]=function(_0x3389a8,_0x1f25a2){var _0x4be06e={'raw':!![],'where':{'id':_0x3389a8[_0x9524('0x42')]['id']}},_0x5ea0dc={};_0x5ea0dc['model']=_['keys'](db['AnalyticTreeReport'][_0x9524('0x29')]);_0x5ea0dc[_0x9524('0x2e')]=_[_0x9524('0x2f')](_0x3389a8[_0x9524('0x2e')]);_0x5ea0dc[_0x9524('0x30')]=_[_0x9524('0x31')](_0x5ea0dc[_0x9524('0x2c')],_0x5ea0dc[_0x9524('0x2e')]);_0x4be06e['attributes']=_['intersection'](_0x5ea0dc[_0x9524('0x2c')],qs[_0x9524('0x32')](_0x3389a8[_0x9524('0x2e')][_0x9524('0x32')]));_0x4be06e[_0x9524('0x33')]=_0x4be06e[_0x9524('0x33')]['length']?_0x4be06e[_0x9524('0x33')]:_0x5ea0dc[_0x9524('0x2c')];if(_0x3389a8[_0x9524('0x2e')][_0x9524('0x3d')]){_0x4be06e[_0x9524('0x3e')]=[{'all':!![]}];}_0x4be06e=_[_0x9524('0x39')]({},_0x4be06e,_0x3389a8[_0x9524('0x3c')]);return db['AnalyticTreeReport'][_0x9524('0x43')](_0x4be06e)['then'](handleEntityNotFound(_0x1f25a2,null))[_0x9524('0x23')](respondWithResult(_0x1f25a2,null))[_0x9524('0x40')](handleError(_0x1f25a2,null));};exports['create']=function(_0x209934,_0x2f56f4){return db[_0x9524('0x28')][_0x9524('0x44')](_0x209934[_0x9524('0x45')],{})[_0x9524('0x23')](respondWithResult(_0x2f56f4,0xc9))[_0x9524('0x40')](handleError(_0x2f56f4,null));};exports[_0x9524('0x21')]=function(_0x2f39e9,_0x3db402){if(_0x2f39e9[_0x9524('0x45')]['id']){delete _0x2f39e9[_0x9524('0x45')]['id'];}return db[_0x9524('0x28')]['find']({'where':{'id':_0x2f39e9[_0x9524('0x42')]['id']}})[_0x9524('0x23')](handleEntityNotFound(_0x3db402,null))[_0x9524('0x23')](saveUpdates(_0x2f39e9[_0x9524('0x45')],null))[_0x9524('0x23')](respondWithResult(_0x3db402,null))[_0x9524('0x40')](handleError(_0x3db402,null));};exports[_0x9524('0x22')]=function(_0x1aee2a,_0x3a783e){return db['AnalyticTreeReport'][_0x9524('0x43')]({'where':{'id':_0x1aee2a['params']['id']}})['then'](handleEntityNotFound(_0x3a783e,null))[_0x9524('0x23')](removeEntity(_0x3a783e,null))[_0x9524('0x40')](handleError(_0x3a783e,null));};
\ No newline at end of file
+var _0xfb3c=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','Content-Range','reject','then','stack','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','name','options','includeAll','include','findAll','catch','show','length','create','body','update','find','params','destroy','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x4692e7,_0x2f2a16){var _0x247f64=function(_0x47c7f7){while(--_0x47c7f7){_0x4692e7['push'](_0x4692e7['shift']());}};_0x247f64(++_0x2f2a16);}(_0xfb3c,0x120));var _0xcfb3=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xfb3c[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0xcfb3('0x0'));var rimraf=require(_0xcfb3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcfb3('0x2'));var rp=require(_0xcfb3('0x3'));var moment=require('moment');var BPromise=require(_0xcfb3('0x4'));var Mustache=require(_0xcfb3('0x5'));var util=require(_0xcfb3('0x6'));var path=require(_0xcfb3('0x7'));var sox=require(_0xcfb3('0x8'));var csv=require(_0xcfb3('0x9'));var ejs=require(_0xcfb3('0xa'));var fs=require('fs');var fs_extra=require(_0xcfb3('0xb'));var _=require(_0xcfb3('0xc'));var squel=require(_0xcfb3('0xd'));var crypto=require(_0xcfb3('0xe'));var jsforce=require(_0xcfb3('0xf'));var deskjs=require(_0xcfb3('0x10'));var toCsv=require(_0xcfb3('0x9'));var querystring=require(_0xcfb3('0x11'));var Papa=require('papaparse');var Redis=require(_0xcfb3('0x12'));var authService=require(_0xcfb3('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xcfb3('0x14'));var hardwareService=require(_0xcfb3('0x15'));var logger=require(_0xcfb3('0x16'))(_0xcfb3('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcfb3('0x18'));var db=require(_0xcfb3('0x19'))['db'];function respondWithStatusCode(_0x143e6,_0x4cbbec){_0x4cbbec=_0x4cbbec||0xcc;return function(_0x164632){if(_0x164632){return _0x143e6[_0xcfb3('0x1a')](_0x4cbbec);}return _0x143e6['status'](_0x4cbbec)[_0xcfb3('0x1b')]();};}function respondWithResult(_0x447798,_0x591306){_0x591306=_0x591306||0xc8;return function(_0x3ace52){if(_0x3ace52){return _0x447798[_0xcfb3('0x1c')](_0x591306)[_0xcfb3('0x1d')](_0x3ace52);}};}function respondWithFilteredResult(_0xf5cdea,_0x5615bd){return function(_0x4445d7){if(_0x4445d7){var _0x30a32f=typeof _0x5615bd[_0xcfb3('0x1e')]===_0xcfb3('0x1f')&&typeof _0x5615bd['limit']===_0xcfb3('0x1f');var _0x1e03e6=_0x4445d7[_0xcfb3('0x20')];var _0x24fa19=_0x30a32f?0x0:_0x5615bd[_0xcfb3('0x1e')];var _0x52cdc9=_0x30a32f?_0x4445d7[_0xcfb3('0x20')]:_0x5615bd['offset']+_0x5615bd['limit'];var _0x496cef;if(_0x52cdc9>=_0x1e03e6){_0x52cdc9=_0x1e03e6;_0x496cef=0xc8;}else{_0x496cef=0xce;}_0xf5cdea['status'](_0x496cef);return _0xf5cdea['set'](_0xcfb3('0x21'),_0x24fa19+'-'+_0x52cdc9+'/'+_0x1e03e6)[_0xcfb3('0x1d')](_0x4445d7);}return null;};}function patchUpdates(_0x398c28){return function(_0x119da5){try{jsonpatch['apply'](_0x119da5,_0x398c28,!![]);}catch(_0x1fda91){return BPromise[_0xcfb3('0x22')](_0x1fda91);}return _0x119da5['save']();};}function saveUpdates(_0x121628,_0x2d97e4){return function(_0x1857b9){if(_0x1857b9){return _0x1857b9['update'](_0x121628)[_0xcfb3('0x23')](function(_0x208d04){return _0x208d04;});}return null;};}function removeEntity(_0x2ed5dd,_0x45172e){return function(_0x168ea6){if(_0x168ea6){return _0x168ea6['destroy']()['then'](function(){_0x2ed5dd['status'](0xcc)[_0xcfb3('0x1b')]();});}};}function handleEntityNotFound(_0x321363,_0x3f324c){return function(_0xd9c11e){if(!_0xd9c11e){_0x321363[_0xcfb3('0x1a')](0x194);}return _0xd9c11e;};}function handleError(_0x479131,_0x2d0db7){_0x2d0db7=_0x2d0db7||0x1f4;return function(_0x61ade){logger['error'](_0x61ade[_0xcfb3('0x24')]);if(_0x61ade['name']){delete _0x61ade['name'];}_0x479131[_0xcfb3('0x1c')](_0x2d0db7)[_0xcfb3('0x25')](_0x61ade);};}exports[_0xcfb3('0x26')]=function(_0xf19167,_0x222b67){var _0x2c5bf5={},_0x28c43e={},_0x4d9200={'count':0x0,'rows':[]};var _0x3c5185=_[_0xcfb3('0x27')](db[_0xcfb3('0x28')][_0xcfb3('0x29')],function(_0x1d5398){return{'name':_0x1d5398[_0xcfb3('0x2a')],'type':_0x1d5398[_0xcfb3('0x2b')][_0xcfb3('0x2c')]};});_0x28c43e[_0xcfb3('0x2d')]=_[_0xcfb3('0x27')](_0x3c5185,'name');_0x28c43e[_0xcfb3('0x2e')]=_[_0xcfb3('0x2f')](_0xf19167[_0xcfb3('0x2e')]);_0x28c43e['filters']=_[_0xcfb3('0x30')](_0x28c43e[_0xcfb3('0x2d')],_0x28c43e[_0xcfb3('0x2e')]);_0x2c5bf5['attributes']=_['intersection'](_0x28c43e[_0xcfb3('0x2d')],qs['fields'](_0xf19167[_0xcfb3('0x2e')][_0xcfb3('0x31')]));_0x2c5bf5[_0xcfb3('0x32')]=_0x2c5bf5[_0xcfb3('0x32')]['length']?_0x2c5bf5[_0xcfb3('0x32')]:_0x28c43e['model'];if(!_0xf19167[_0xcfb3('0x2e')][_0xcfb3('0x33')](_0xcfb3('0x34'))){_0x2c5bf5[_0xcfb3('0x35')]=qs[_0xcfb3('0x35')](_0xf19167[_0xcfb3('0x2e')]['limit']);_0x2c5bf5[_0xcfb3('0x1e')]=qs[_0xcfb3('0x1e')](_0xf19167[_0xcfb3('0x2e')][_0xcfb3('0x1e')]);}_0x2c5bf5[_0xcfb3('0x36')]=qs[_0xcfb3('0x37')](_0xf19167[_0xcfb3('0x2e')][_0xcfb3('0x37')]);_0x2c5bf5[_0xcfb3('0x38')]=qs[_0xcfb3('0x39')](_['pick'](_0xf19167[_0xcfb3('0x2e')],_0x28c43e[_0xcfb3('0x39')]),_0x3c5185);if(_0xf19167['query'][_0xcfb3('0x3a')]){_0x2c5bf5['where']=_[_0xcfb3('0x3b')](_0x2c5bf5[_0xcfb3('0x38')],{'$or':_[_0xcfb3('0x27')](_0x3c5185,function(_0x4ccd33){if(_0x4ccd33[_0xcfb3('0x2b')]!=='VIRTUAL'){var _0x24efda={};_0x24efda[_0x4ccd33[_0xcfb3('0x3c')]]={'$like':'%'+_0xf19167['query'][_0xcfb3('0x3a')]+'%'};return _0x24efda;}})});}_0x2c5bf5=_[_0xcfb3('0x3b')]({},_0x2c5bf5,_0xf19167[_0xcfb3('0x3d')]);var _0x16e97b={'where':_0x2c5bf5['where']};return db[_0xcfb3('0x28')]['count'](_0x16e97b)[_0xcfb3('0x23')](function(_0x280312){_0x4d9200[_0xcfb3('0x20')]=_0x280312;if(_0xf19167[_0xcfb3('0x2e')][_0xcfb3('0x3e')]){_0x2c5bf5[_0xcfb3('0x3f')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xcfb3('0x40')](_0x2c5bf5);})[_0xcfb3('0x23')](function(_0x241459){_0x4d9200['rows']=_0x241459;return _0x4d9200;})[_0xcfb3('0x23')](respondWithFilteredResult(_0x222b67,_0x2c5bf5))[_0xcfb3('0x41')](handleError(_0x222b67,null));};exports[_0xcfb3('0x42')]=function(_0x459667,_0x73abfa){var _0x1db439={'raw':!![],'where':{'id':_0x459667['params']['id']}},_0x15b239={};_0x15b239[_0xcfb3('0x2d')]=_[_0xcfb3('0x2f')](db[_0xcfb3('0x28')][_0xcfb3('0x29')]);_0x15b239[_0xcfb3('0x2e')]=_['keys'](_0x459667['query']);_0x15b239[_0xcfb3('0x39')]=_[_0xcfb3('0x30')](_0x15b239[_0xcfb3('0x2d')],_0x15b239['query']);_0x1db439[_0xcfb3('0x32')]=_[_0xcfb3('0x30')](_0x15b239[_0xcfb3('0x2d')],qs['fields'](_0x459667[_0xcfb3('0x2e')][_0xcfb3('0x31')]));_0x1db439['attributes']=_0x1db439[_0xcfb3('0x32')][_0xcfb3('0x43')]?_0x1db439[_0xcfb3('0x32')]:_0x15b239[_0xcfb3('0x2d')];if(_0x459667[_0xcfb3('0x2e')][_0xcfb3('0x3e')]){_0x1db439[_0xcfb3('0x3f')]=[{'all':!![]}];}_0x1db439=_[_0xcfb3('0x3b')]({},_0x1db439,_0x459667[_0xcfb3('0x3d')]);return db[_0xcfb3('0x28')]['find'](_0x1db439)[_0xcfb3('0x23')](handleEntityNotFound(_0x73abfa,null))[_0xcfb3('0x23')](respondWithResult(_0x73abfa,null))[_0xcfb3('0x41')](handleError(_0x73abfa,null));};exports[_0xcfb3('0x44')]=function(_0x90187b,_0x1c79dc){return db[_0xcfb3('0x28')][_0xcfb3('0x44')](_0x90187b[_0xcfb3('0x45')],{})[_0xcfb3('0x23')](respondWithResult(_0x1c79dc,0xc9))['catch'](handleError(_0x1c79dc,null));};exports[_0xcfb3('0x46')]=function(_0x241a15,_0x435bd3){if(_0x241a15[_0xcfb3('0x45')]['id']){delete _0x241a15[_0xcfb3('0x45')]['id'];}return db[_0xcfb3('0x28')][_0xcfb3('0x47')]({'where':{'id':_0x241a15[_0xcfb3('0x48')]['id']}})[_0xcfb3('0x23')](handleEntityNotFound(_0x435bd3,null))['then'](saveUpdates(_0x241a15[_0xcfb3('0x45')],null))[_0xcfb3('0x23')](respondWithResult(_0x435bd3,null))['catch'](handleError(_0x435bd3,null));};exports[_0xcfb3('0x49')]=function(_0x195c3e,_0x37a4db){return db['AnalyticTreeReport'][_0xcfb3('0x47')]({'where':{'id':_0x195c3e[_0xcfb3('0x48')]['id']}})[_0xcfb3('0x23')](handleEntityNotFound(_0x37a4db,null))['then'](removeEntity(_0x37a4db,null))[_0xcfb3('0x41')](handleError(_0x37a4db,null));};
\ No newline at end of file
index 547aaf1..ac8521a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc483=['bluebird','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','analytics_report_trees','lodash','api','moment'];(function(_0x119cd8,_0x556b73){var _0x7072a3=function(_0x5908d1){while(--_0x5908d1){_0x119cd8['push'](_0x119cd8['shift']());}};_0x7072a3(++_0x556b73);}(_0xc483,0x1c0));var _0x3c48=function(_0x1217b5,_0x37f1b5){_0x1217b5=_0x1217b5-0x0;var _0x16a893=_0xc483[_0x1217b5];return _0x16a893;};'use strict';var _=require(_0x3c48('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3c48('0x1'));var moment=require(_0x3c48('0x2'));var BPromise=require(_0x3c48('0x3'));var rp=require(_0x3c48('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3c48('0x5'));var config=require(_0x3c48('0x6'));var attributes=require(_0x3c48('0x7'));module[_0x3c48('0x8')]=function(_0x523114,_0x115324){return _0x523114[_0x3c48('0x9')]('AnalyticTreeReport',attributes,{'tableName':_0x3c48('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x989b=['util','api','moment','request-promise','path','rimraf','exports','define','AnalyticTreeReport','analytics_report_trees','lodash'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x989b,0x18b));var _0xb989=function(_0x5c8d31,_0x14ca84){_0x5c8d31=_0x5c8d31-0x0;var _0x5c79ab=_0x989b[_0x5c8d31];return _0x5c79ab;};'use strict';var _=require(_0xb989('0x0'));var util=require(_0xb989('0x1'));var logger=require('../../config/logger')(_0xb989('0x2'));var moment=require(_0xb989('0x3'));var BPromise=require('bluebird');var rp=require(_0xb989('0x4'));var fs=require('fs');var path=require(_0xb989('0x5'));var rimraf=require(_0xb989('0x6'));var config=require('../../config/environment');var attributes=require('./analyticTreeReport.attributes');module[_0xb989('0x7')]=function(_0x23d9ef,_0x52d77c){return _0x23d9ef[_0xb989('0x8')](_0xb989('0x9'),attributes,{'tableName':_0xb989('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6fea852..e705add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0xb1ebf1,_0x40a456){var _0x59f58f=function(_0x2a7a5f){while(--_0x2a7a5f){_0xb1ebf1['push'](_0xb1ebf1['shift']());}};_0x59f58f(++_0x40a456);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5625cc,_0x4f9ebf){_0x5625cc=_0x5625cc-0x0;var _0x1ad1e0=_0x5f2f[_0x5625cc];return _0x1ad1e0;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x522ac9,_0x25eaa7){var _0x7aeed2=function(_0x254573){while(--_0x254573){_0x522ac9['push'](_0x522ac9['shift']());}};_0x7aeed2(++_0x25eaa7);}(_0x5f2f,0x73));var _0xf5f2=function(_0x20df5e,_0x435a74){_0x20df5e=_0x20df5e-0x0;var _0x2b9da1=_0x5f2f[_0x20df5e];return _0x2b9da1;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 386f8b6..d3500a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378f=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post','create','put'];(function(_0x227955,_0x3be5c7){var _0x1aa1f9=function(_0x2bae03){while(--_0x2bae03){_0x227955['push'](_0x227955['shift']());}};_0x1aa1f9(++_0x3be5c7);}(_0x378f,0x1c4));var _0xf378=function(_0x11ba9b,_0x2daf46){_0x11ba9b=_0x11ba9b-0x0;var _0x381c7b=_0x378f[_0x11ba9b];return _0x381c7b;};'use strict';var multer=require(_0xf378('0x0'));var util=require(_0xf378('0x1'));var path=require(_0xf378('0x2'));var timeout=require(_0xf378('0x3'));var express=require('express');var router=express[_0xf378('0x4')]();var fs_extra=require(_0xf378('0x5'));var auth=require(_0xf378('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf378('0x7'));var controller=require(_0xf378('0x8'));router[_0xf378('0x9')]('/',auth[_0xf378('0xa')](),controller[_0xf378('0xb')]);router[_0xf378('0x9')](_0xf378('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xf378('0xd')]('/',auth[_0xf378('0xa')](),controller[_0xf378('0xe')]);router[_0xf378('0xf')]('/:id',auth[_0xf378('0xa')](),controller['update']);router['delete'](_0xf378('0xc'),auth['isAuthenticated'](),controller[_0xf378('0x10')]);module[_0xf378('0x11')]=router;
\ No newline at end of file
+var _0xec84=['/:id','show','post','create','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./analyticTreeReport.controller','isAuthenticated','get'];(function(_0x3a2b5d,_0xa9262c){var _0x51d720=function(_0x590b4b){while(--_0x590b4b){_0x3a2b5d['push'](_0x3a2b5d['shift']());}};_0x51d720(++_0xa9262c);}(_0xec84,0x15c));var _0x4ec8=function(_0x57b159,_0x4c54ac){_0x57b159=_0x57b159-0x0;var _0x2010d5=_0xec84[_0x57b159];return _0x2010d5;};'use strict';var multer=require(_0x4ec8('0x0'));var util=require('util');var path=require(_0x4ec8('0x1'));var timeout=require('connect-timeout');var express=require(_0x4ec8('0x2'));var router=express[_0x4ec8('0x3')]();var fs_extra=require(_0x4ec8('0x4'));var auth=require(_0x4ec8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4ec8('0x6'));router['get']('/',auth[_0x4ec8('0x7')](),controller['index']);router[_0x4ec8('0x8')](_0x4ec8('0x9'),auth[_0x4ec8('0x7')](),controller[_0x4ec8('0xa')]);router[_0x4ec8('0xb')]('/',auth[_0x4ec8('0x7')](),controller[_0x4ec8('0xc')]);router['put'](_0x4ec8('0x9'),auth['isAuthenticated'](),controller[_0x4ec8('0xd')]);router[_0x4ec8('0xe')]('/:id',auth[_0x4ec8('0x7')](),controller[_0x4ec8('0xf')]);module[_0x4ec8('0x10')]=router;
\ No newline at end of file
index 8428959..83a9aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc560=['sequelize','STRING'];(function(_0x3d5db7,_0x501532){var _0x27ffbb=function(_0xd3ba36){while(--_0xd3ba36){_0x3d5db7['push'](_0x3d5db7['shift']());}};_0x27ffbb(++_0x501532);}(_0xc560,0x82));var _0x0c56=function(_0x345218,_0x10d368){_0x345218=_0x345218-0x0;var _0xe7b0f=_0xc560[_0x345218];return _0xe7b0f;};'use strict';var Sequelize=require(_0x0c56('0x0'));module['exports']={'name':{'type':Sequelize[_0x0c56('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x0c56('0x1')]}};
\ No newline at end of file
+var _0xe0c3=['sequelize','STRING'];(function(_0x4408a4,_0x37f362){var _0x4bf6a4=function(_0x1a6d23){while(--_0x1a6d23){_0x4408a4['push'](_0x4408a4['shift']());}};_0x4bf6a4(++_0x37f362);}(_0xe0c3,0xea));var _0x3e0c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe0c3[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3e0c('0x0'));module['exports']={'name':{'type':Sequelize[_0x3e0c('0x1')]},'basename':{'type':Sequelize[_0x3e0c('0x1')]},'type':{'type':Sequelize[_0x3e0c('0x1')]}};
\ No newline at end of file
index 0ecbea2..2366994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed24=['params','find','clone','length','includeAll','get','omit','createdAt','updatedAt','body','create','originalname','file','mimetype','findOne','join','root','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','error','stack','name','index','map','Attachment','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','include','findAll','rows','catch'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xed24,0xc6));var _0x4ed2=function(_0x397928,_0x5731fc){_0x397928=_0x397928-0x0;var _0x52ff06=_0xed24[_0x397928];return _0x52ff06;};'use strict';var emlformat=require(_0x4ed2('0x0'));var rimraf=require(_0x4ed2('0x1'));var zipdir=require(_0x4ed2('0x2'));var jsonpatch=require(_0x4ed2('0x3'));var rp=require(_0x4ed2('0x4'));var moment=require(_0x4ed2('0x5'));var BPromise=require(_0x4ed2('0x6'));var Mustache=require(_0x4ed2('0x7'));var util=require(_0x4ed2('0x8'));var path=require(_0x4ed2('0x9'));var sox=require(_0x4ed2('0xa'));var csv=require(_0x4ed2('0xb'));var ejs=require(_0x4ed2('0xc'));var fs=require('fs');var fs_extra=require(_0x4ed2('0xd'));var _=require(_0x4ed2('0xe'));var squel=require(_0x4ed2('0xf'));var crypto=require(_0x4ed2('0x10'));var jsforce=require(_0x4ed2('0x11'));var deskjs=require(_0x4ed2('0x12'));var toCsv=require(_0x4ed2('0xb'));var querystring=require('querystring');var Papa=require(_0x4ed2('0x13'));var Redis=require(_0x4ed2('0x14'));var authService=require(_0x4ed2('0x15'));var qs=require(_0x4ed2('0x16'));var as=require(_0x4ed2('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4ed2('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x4ed2('0x19'));var licenseUtil=require(_0x4ed2('0x1a'));var db=require(_0x4ed2('0x1b'))['db'];function respondWithStatusCode(_0x4fae6f,_0x43aac2){_0x43aac2=_0x43aac2||0xcc;return function(_0x1f06cd){if(_0x1f06cd){return _0x4fae6f[_0x4ed2('0x1c')](_0x43aac2);}return _0x4fae6f[_0x4ed2('0x1d')](_0x43aac2)[_0x4ed2('0x1e')]();};}function respondWithResult(_0x10c572,_0x5182c2){_0x5182c2=_0x5182c2||0xc8;return function(_0x489312){if(_0x489312){return _0x10c572['status'](_0x5182c2)[_0x4ed2('0x1f')](_0x489312);}};}function respondWithFilteredResult(_0x86f420,_0x125578){return function(_0x333a67){if(_0x333a67){var _0x479400=typeof _0x125578[_0x4ed2('0x20')]===_0x4ed2('0x21')&&typeof _0x125578['limit']===_0x4ed2('0x21');var _0x57e2e6=_0x333a67[_0x4ed2('0x22')];var _0x3d7687=_0x479400?0x0:_0x125578[_0x4ed2('0x20')];var _0x47cac8=_0x479400?_0x333a67[_0x4ed2('0x22')]:_0x125578[_0x4ed2('0x20')]+_0x125578['limit'];var _0x5ba9ef;if(_0x47cac8>=_0x57e2e6){_0x47cac8=_0x57e2e6;_0x5ba9ef=0xc8;}else{_0x5ba9ef=0xce;}_0x86f420[_0x4ed2('0x1d')](_0x5ba9ef);return _0x86f420['set'](_0x4ed2('0x23'),_0x3d7687+'-'+_0x47cac8+'/'+_0x57e2e6)[_0x4ed2('0x1f')](_0x333a67);}return null;};}function patchUpdates(_0x325349){return function(_0x5cf407){try{jsonpatch['apply'](_0x5cf407,_0x325349,!![]);}catch(_0x43f8df){return BPromise['reject'](_0x43f8df);}return _0x5cf407[_0x4ed2('0x24')]();};}function saveUpdates(_0x48d254,_0x4eba5a){return function(_0x1d42ce){if(_0x1d42ce){return _0x1d42ce[_0x4ed2('0x25')](_0x48d254)[_0x4ed2('0x26')](function(_0x581308){return _0x581308;});}return null;};}function removeEntity(_0x29fcf3,_0x2f0bad){return function(_0x25f3b1){if(_0x25f3b1){return _0x25f3b1[_0x4ed2('0x27')]()[_0x4ed2('0x26')](function(){_0x29fcf3[_0x4ed2('0x1d')](0xcc)[_0x4ed2('0x1e')]();});}};}function handleEntityNotFound(_0x398e44,_0x5ce278){return function(_0x1b8843){if(!_0x1b8843){_0x398e44[_0x4ed2('0x1c')](0x194);}return _0x1b8843;};}function handleError(_0x3f506d,_0x1daa27){_0x1daa27=_0x1daa27||0x1f4;return function(_0x30d8ff){logger[_0x4ed2('0x28')](_0x30d8ff[_0x4ed2('0x29')]);if(_0x30d8ff[_0x4ed2('0x2a')]){delete _0x30d8ff['name'];}_0x3f506d[_0x4ed2('0x1d')](_0x1daa27)['send'](_0x30d8ff);};}exports[_0x4ed2('0x2b')]=function(_0xf7f109,_0x392ece){var _0x40c5fd={},_0xd6bbeb={},_0x175501={'count':0x0,'rows':[]};var _0x1df296=_[_0x4ed2('0x2c')](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')],function(_0x244a48){return{'name':_0x244a48['fieldName'],'type':_0x244a48[_0x4ed2('0x2f')][_0x4ed2('0x30')]};});_0xd6bbeb['model']=_[_0x4ed2('0x2c')](_0x1df296,_0x4ed2('0x2a'));_0xd6bbeb[_0x4ed2('0x31')]=_[_0x4ed2('0x32')](_0xf7f109[_0x4ed2('0x31')]);_0xd6bbeb[_0x4ed2('0x33')]=_[_0x4ed2('0x34')](_0xd6bbeb[_0x4ed2('0x35')],_0xd6bbeb[_0x4ed2('0x31')]);_0x40c5fd[_0x4ed2('0x36')]=_[_0x4ed2('0x34')](_0xd6bbeb[_0x4ed2('0x35')],qs[_0x4ed2('0x37')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x37')]));_0x40c5fd['attributes']=_0x40c5fd[_0x4ed2('0x36')]['length']?_0x40c5fd[_0x4ed2('0x36')]:_0xd6bbeb[_0x4ed2('0x35')];if(!_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x38')](_0x4ed2('0x39'))){_0x40c5fd['limit']=qs[_0x4ed2('0x3a')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3a')]);_0x40c5fd[_0x4ed2('0x20')]=qs[_0x4ed2('0x20')](_0xf7f109[_0x4ed2('0x31')]['offset']);}_0x40c5fd[_0x4ed2('0x3b')]=qs[_0x4ed2('0x3c')](_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3c')]);_0x40c5fd[_0x4ed2('0x3d')]=qs[_0x4ed2('0x33')](_['pick'](_0xf7f109[_0x4ed2('0x31')],_0xd6bbeb[_0x4ed2('0x33')]),_0x1df296);if(_0xf7f109['query'][_0x4ed2('0x3e')]){_0x40c5fd[_0x4ed2('0x3d')]=_[_0x4ed2('0x3f')](_0x40c5fd[_0x4ed2('0x3d')],{'$or':_[_0x4ed2('0x2c')](_0x1df296,function(_0x18caf4){if(_0x18caf4[_0x4ed2('0x2f')]!=='VIRTUAL'){var _0x4761c3={};_0x4761c3[_0x18caf4[_0x4ed2('0x2a')]]={'$like':'%'+_0xf7f109[_0x4ed2('0x31')][_0x4ed2('0x3e')]+'%'};return _0x4761c3;}})});}_0x40c5fd=_['merge']({},_0x40c5fd,_0xf7f109[_0x4ed2('0x40')]);var _0x35a8d4={'where':_0x40c5fd['where']};return db[_0x4ed2('0x2d')][_0x4ed2('0x22')](_0x35a8d4)[_0x4ed2('0x26')](function(_0x22af8b){_0x175501[_0x4ed2('0x22')]=_0x22af8b;if(_0xf7f109[_0x4ed2('0x31')]['includeAll']){_0x40c5fd[_0x4ed2('0x41')]=[{'all':!![]}];}return db[_0x4ed2('0x2d')][_0x4ed2('0x42')](_0x40c5fd);})[_0x4ed2('0x26')](function(_0x51a36a){_0x175501[_0x4ed2('0x43')]=_0x51a36a;return _0x175501;})[_0x4ed2('0x26')](respondWithFilteredResult(_0x392ece,_0x40c5fd))[_0x4ed2('0x44')](handleError(_0x392ece,null));};exports['show']=function(_0x367770,_0x33b69d){var _0x4c2d3d={'raw':!![],'where':{'id':_0x367770[_0x4ed2('0x45')]['id']}},_0x4cb02a={};_0x4cb02a[_0x4ed2('0x35')]=_[_0x4ed2('0x32')](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')]);_0x4cb02a['query']=_[_0x4ed2('0x32')](_0x367770[_0x4ed2('0x31')]);_0x4cb02a[_0x4ed2('0x33')]=_[_0x4ed2('0x34')](_0x4cb02a[_0x4ed2('0x35')],_0x4cb02a[_0x4ed2('0x31')]);_0x4c2d3d[_0x4ed2('0x36')]=_['intersection'](_0x4cb02a[_0x4ed2('0x35')],qs['fields'](_0x367770[_0x4ed2('0x31')][_0x4ed2('0x37')]));_0x4c2d3d[_0x4ed2('0x36')]=_0x4c2d3d[_0x4ed2('0x36')]['length']?_0x4c2d3d[_0x4ed2('0x36')]:_0x4cb02a[_0x4ed2('0x35')];if(_0x367770[_0x4ed2('0x31')]['includeAll']){_0x4c2d3d[_0x4ed2('0x41')]=[{'all':!![]}];}_0x4c2d3d=_[_0x4ed2('0x3f')]({},_0x4c2d3d,_0x367770['options']);return db[_0x4ed2('0x2d')][_0x4ed2('0x46')](_0x4c2d3d)['then'](handleEntityNotFound(_0x33b69d,null))['then'](respondWithResult(_0x33b69d,null))['catch'](handleError(_0x33b69d,null));};exports[_0x4ed2('0x47')]=function(_0x5b8417,_0x5bab67){var _0x5c71c9={'where':{'id':_0x5b8417['params']['id']}},_0x2ab11b={};_0x2ab11b[_0x4ed2('0x35')]=_['keys'](db[_0x4ed2('0x2d')][_0x4ed2('0x2e')]);_0x5c71c9[_0x4ed2('0x36')]=_[_0x4ed2('0x34')](_0x2ab11b[_0x4ed2('0x35')],qs['fields'](_0x5b8417[_0x4ed2('0x31')]['fields']));_0x5c71c9['attributes']=_0x5c71c9[_0x4ed2('0x36')][_0x4ed2('0x48')]?_0x5c71c9[_0x4ed2('0x36')]:_0x2ab11b[_0x4ed2('0x35')];if(_0x5b8417[_0x4ed2('0x31')][_0x4ed2('0x49')]){_0x5c71c9['include']=[{'all':!![]}];}_0x5c71c9=_[_0x4ed2('0x3f')]({},_0x5c71c9,_0x5b8417[_0x4ed2('0x40')]);return db[_0x4ed2('0x2d')]['find'](_0x5c71c9)['then'](handleEntityNotFound(_0x5bab67,null))[_0x4ed2('0x26')](function(_0x28edbc){if(_0x28edbc){var _0x2a547c=_0x28edbc[_0x4ed2('0x4a')]({'plain':!![]});_0x2a547c=qs[_0x4ed2('0x4b')](_0x2a547c,['id',_0x4ed2('0x4c'),_0x4ed2('0x4d')]);_0x5b8417[_0x4ed2('0x4e')]=_[_0x4ed2('0x4b')](_0x5b8417[_0x4ed2('0x4e')],['id',_0x4ed2('0x4c'),_0x4ed2('0x4d')]);return db['Attachment'][_0x4ed2('0x4f')](_[_0x4ed2('0x3f')](_0x2a547c,_0x5b8417[_0x4ed2('0x4e')]),{'include':_0x5b8417[_0x4ed2('0x31')][_0x4ed2('0x49')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x5bab67,0xc9))['catch'](handleError(_0x5bab67,null));};exports[_0x4ed2('0x25')]=function(_0x4c1c2d,_0x553cca){if(_0x4c1c2d['body']['id']){delete _0x4c1c2d[_0x4ed2('0x4e')]['id'];}return db[_0x4ed2('0x2d')]['find']({'where':{'id':_0x4c1c2d[_0x4ed2('0x45')]['id']}})[_0x4ed2('0x26')](handleEntityNotFound(_0x553cca,null))[_0x4ed2('0x26')](saveUpdates(_0x4c1c2d[_0x4ed2('0x4e')],null))[_0x4ed2('0x26')](respondWithResult(_0x553cca,null))[_0x4ed2('0x44')](handleError(_0x553cca,null));};exports[_0x4ed2('0x27')]=function(_0x58f95d,_0x2c2b11){return db[_0x4ed2('0x2d')]['find']({'where':{'id':_0x58f95d[_0x4ed2('0x45')]['id']}})['then'](handleEntityNotFound(_0x2c2b11,null))[_0x4ed2('0x26')](removeEntity(_0x2c2b11,null))[_0x4ed2('0x44')](handleError(_0x2c2b11,null));};exports[_0x4ed2('0x4f')]=function(_0xe2844f,_0x4c0ecc,_0x5f04b1){_0xe2844f[_0x4ed2('0x4e')][_0x4ed2('0x2a')]=_0xe2844f['file'][_0x4ed2('0x50')];_0xe2844f[_0x4ed2('0x4e')]['basename']=_0xe2844f[_0x4ed2('0x51')]['filename'];_0xe2844f[_0x4ed2('0x4e')][_0x4ed2('0x2f')]=_0xe2844f[_0x4ed2('0x51')][_0x4ed2('0x52')];return db[_0x4ed2('0x2d')][_0x4ed2('0x4f')](_0xe2844f[_0x4ed2('0x4e')])[_0x4ed2('0x26')](respondWithResult(_0x4c0ecc,0xc9))['catch'](handleError(_0x4c0ecc,null));};exports['download']=function(_0x429d1b,_0x5e24df,_0x36d05e){return db[_0x4ed2('0x2d')][_0x4ed2('0x53')]({'where':{'id':_0x429d1b[_0x4ed2('0x45')]['id']},'raw':!![]})[_0x4ed2('0x26')](handleEntityNotFound(_0x5e24df,null))[_0x4ed2('0x26')](function(_0x4218f9){if(_0x4218f9){var _0x2b458c=_0x4218f9['ChatOfflineMessageId']!==null;var _0x431d6c=path[_0x4ed2('0x54')](config[_0x4ed2('0x55')],_0x4ed2('0x56'));if(_0x2b458c){_0x431d6c=path['join'](_0x431d6c,_0x4ed2('0x57'));}var _0x495e57=path[_0x4ed2('0x54')](_0x431d6c,_0x4218f9[_0x4ed2('0x58')]);return _0x5e24df['download'](_0x495e57);}})[_0x4ed2('0x44')](handleError(_0x5e24df,null));};
\ No newline at end of file
+var _0x1881=['fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','clone','get','omit','createdAt','updatedAt','body','destroy','file','originalname','basename','filename','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/util','../../mysqldb','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','status','end','error','stack','name','send','map','Attachment','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection'];(function(_0x1a26ee,_0x595412){var _0x307be1=function(_0x2e43ac){while(--_0x2e43ac){_0x1a26ee['push'](_0x1a26ee['shift']());}};_0x307be1(++_0x595412);}(_0x1881,0x191));var _0x1188=function(_0x29f9af,_0x4f3d10){_0x29f9af=_0x29f9af-0x0;var _0x56e4a8=_0x1881[_0x29f9af];return _0x56e4a8;};'use strict';var emlformat=require(_0x1188('0x0'));var rimraf=require(_0x1188('0x1'));var zipdir=require(_0x1188('0x2'));var jsonpatch=require(_0x1188('0x3'));var rp=require(_0x1188('0x4'));var moment=require(_0x1188('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1188('0x6'));var util=require(_0x1188('0x7'));var path=require(_0x1188('0x8'));var sox=require(_0x1188('0x9'));var csv=require(_0x1188('0xa'));var ejs=require(_0x1188('0xb'));var fs=require('fs');var fs_extra=require(_0x1188('0xc'));var _=require(_0x1188('0xd'));var squel=require(_0x1188('0xe'));var crypto=require(_0x1188('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x1188('0x10'));var toCsv=require('to-csv');var querystring=require(_0x1188('0x11'));var Papa=require('papaparse');var Redis=require(_0x1188('0x12'));var authService=require(_0x1188('0x13'));var qs=require(_0x1188('0x14'));var as=require(_0x1188('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1188('0x16'));var db=require(_0x1188('0x17'))['db'];function respondWithStatusCode(_0x2db36d,_0x41e855){_0x41e855=_0x41e855||0xcc;return function(_0x15d39e){if(_0x15d39e){return _0x2db36d['sendStatus'](_0x41e855);}return _0x2db36d['status'](_0x41e855)['end']();};}function respondWithResult(_0x1144b3,_0x1fbc0c){_0x1fbc0c=_0x1fbc0c||0xc8;return function(_0x593153){if(_0x593153){return _0x1144b3['status'](_0x1fbc0c)[_0x1188('0x18')](_0x593153);}};}function respondWithFilteredResult(_0x5485f2,_0x431f57){return function(_0x4ced0b){if(_0x4ced0b){var _0x44d6c7=typeof _0x431f57[_0x1188('0x19')]===_0x1188('0x1a')&&typeof _0x431f57[_0x1188('0x1b')]==='undefined';var _0x7f44ab=_0x4ced0b['count'];var _0x3fdf6e=_0x44d6c7?0x0:_0x431f57[_0x1188('0x19')];var _0x1a5942=_0x44d6c7?_0x4ced0b[_0x1188('0x1c')]:_0x431f57[_0x1188('0x19')]+_0x431f57[_0x1188('0x1b')];var _0x4882e2;if(_0x1a5942>=_0x7f44ab){_0x1a5942=_0x7f44ab;_0x4882e2=0xc8;}else{_0x4882e2=0xce;}_0x5485f2['status'](_0x4882e2);return _0x5485f2[_0x1188('0x1d')](_0x1188('0x1e'),_0x3fdf6e+'-'+_0x1a5942+'/'+_0x7f44ab)[_0x1188('0x18')](_0x4ced0b);}return null;};}function patchUpdates(_0x29dc66){return function(_0x2269a8){try{jsonpatch[_0x1188('0x1f')](_0x2269a8,_0x29dc66,!![]);}catch(_0x588944){return BPromise[_0x1188('0x20')](_0x588944);}return _0x2269a8[_0x1188('0x21')]();};}function saveUpdates(_0x5aa3bc,_0x25d6cc){return function(_0x3f0dc9){if(_0x3f0dc9){return _0x3f0dc9[_0x1188('0x22')](_0x5aa3bc)[_0x1188('0x23')](function(_0xd7e003){return _0xd7e003;});}return null;};}function removeEntity(_0x56cf37,_0x20dfb8){return function(_0x1f4129){if(_0x1f4129){return _0x1f4129['destroy']()[_0x1188('0x23')](function(){_0x56cf37[_0x1188('0x24')](0xcc)[_0x1188('0x25')]();});}};}function handleEntityNotFound(_0x33be06,_0x488d19){return function(_0x1e79cf){if(!_0x1e79cf){_0x33be06['sendStatus'](0x194);}return _0x1e79cf;};}function handleError(_0x564960,_0x564418){_0x564418=_0x564418||0x1f4;return function(_0x2ca3e7){logger[_0x1188('0x26')](_0x2ca3e7[_0x1188('0x27')]);if(_0x2ca3e7[_0x1188('0x28')]){delete _0x2ca3e7[_0x1188('0x28')];}_0x564960[_0x1188('0x24')](_0x564418)[_0x1188('0x29')](_0x2ca3e7);};}exports['index']=function(_0x1c1082,_0x2978b9){var _0x190185={},_0x23157d={},_0x3581a3={'count':0x0,'rows':[]};var _0x421971=_[_0x1188('0x2a')](db[_0x1188('0x2b')][_0x1188('0x2c')],function(_0x458889){return{'name':_0x458889[_0x1188('0x2d')],'type':_0x458889[_0x1188('0x2e')][_0x1188('0x2f')]};});_0x23157d['model']=_[_0x1188('0x2a')](_0x421971,_0x1188('0x28'));_0x23157d[_0x1188('0x30')]=_[_0x1188('0x31')](_0x1c1082[_0x1188('0x30')]);_0x23157d[_0x1188('0x32')]=_['intersection'](_0x23157d[_0x1188('0x33')],_0x23157d[_0x1188('0x30')]);_0x190185[_0x1188('0x34')]=_[_0x1188('0x35')](_0x23157d['model'],qs[_0x1188('0x36')](_0x1c1082[_0x1188('0x30')]['fields']));_0x190185['attributes']=_0x190185[_0x1188('0x34')]['length']?_0x190185[_0x1188('0x34')]:_0x23157d[_0x1188('0x33')];if(!_0x1c1082[_0x1188('0x30')][_0x1188('0x37')](_0x1188('0x38'))){_0x190185[_0x1188('0x1b')]=qs['limit'](_0x1c1082[_0x1188('0x30')][_0x1188('0x1b')]);_0x190185['offset']=qs[_0x1188('0x19')](_0x1c1082[_0x1188('0x30')]['offset']);}_0x190185[_0x1188('0x39')]=qs[_0x1188('0x3a')](_0x1c1082[_0x1188('0x30')][_0x1188('0x3a')]);_0x190185[_0x1188('0x3b')]=qs[_0x1188('0x32')](_[_0x1188('0x3c')](_0x1c1082[_0x1188('0x30')],_0x23157d[_0x1188('0x32')]),_0x421971);if(_0x1c1082[_0x1188('0x30')]['filter']){_0x190185[_0x1188('0x3b')]=_[_0x1188('0x3d')](_0x190185[_0x1188('0x3b')],{'$or':_[_0x1188('0x2a')](_0x421971,function(_0x2f3849){if(_0x2f3849['type']!=='VIRTUAL'){var _0x5c3f37={};_0x5c3f37[_0x2f3849[_0x1188('0x28')]]={'$like':'%'+_0x1c1082['query'][_0x1188('0x3e')]+'%'};return _0x5c3f37;}})});}_0x190185=_[_0x1188('0x3d')]({},_0x190185,_0x1c1082[_0x1188('0x3f')]);var _0xec9c3d={'where':_0x190185[_0x1188('0x3b')]};return db[_0x1188('0x2b')]['count'](_0xec9c3d)[_0x1188('0x23')](function(_0x4bf0f8){_0x3581a3[_0x1188('0x1c')]=_0x4bf0f8;if(_0x1c1082[_0x1188('0x30')][_0x1188('0x40')]){_0x190185[_0x1188('0x41')]=[{'all':!![]}];}return db['Attachment'][_0x1188('0x42')](_0x190185);})[_0x1188('0x23')](function(_0x888cf3){_0x3581a3[_0x1188('0x43')]=_0x888cf3;return _0x3581a3;})[_0x1188('0x23')](respondWithFilteredResult(_0x2978b9,_0x190185))[_0x1188('0x44')](handleError(_0x2978b9,null));};exports[_0x1188('0x45')]=function(_0x1d5319,_0xe7aae8){var _0x5b7ff9={'raw':!![],'where':{'id':_0x1d5319[_0x1188('0x46')]['id']}},_0x4ce778={};_0x4ce778[_0x1188('0x33')]=_[_0x1188('0x31')](db[_0x1188('0x2b')][_0x1188('0x2c')]);_0x4ce778[_0x1188('0x30')]=_[_0x1188('0x31')](_0x1d5319[_0x1188('0x30')]);_0x4ce778[_0x1188('0x32')]=_['intersection'](_0x4ce778[_0x1188('0x33')],_0x4ce778[_0x1188('0x30')]);_0x5b7ff9[_0x1188('0x34')]=_[_0x1188('0x35')](_0x4ce778[_0x1188('0x33')],qs[_0x1188('0x36')](_0x1d5319[_0x1188('0x30')][_0x1188('0x36')]));_0x5b7ff9[_0x1188('0x34')]=_0x5b7ff9['attributes'][_0x1188('0x47')]?_0x5b7ff9[_0x1188('0x34')]:_0x4ce778['model'];if(_0x1d5319[_0x1188('0x30')][_0x1188('0x40')]){_0x5b7ff9[_0x1188('0x41')]=[{'all':!![]}];}_0x5b7ff9=_['merge']({},_0x5b7ff9,_0x1d5319[_0x1188('0x3f')]);return db[_0x1188('0x2b')][_0x1188('0x48')](_0x5b7ff9)[_0x1188('0x23')](handleEntityNotFound(_0xe7aae8,null))[_0x1188('0x23')](respondWithResult(_0xe7aae8,null))[_0x1188('0x44')](handleError(_0xe7aae8,null));};exports[_0x1188('0x49')]=function(_0x469832,_0x38135e){var _0x4acaa9={'where':{'id':_0x469832[_0x1188('0x46')]['id']}},_0x1b91af={};_0x1b91af[_0x1188('0x33')]=_['keys'](db[_0x1188('0x2b')][_0x1188('0x2c')]);_0x4acaa9[_0x1188('0x34')]=_[_0x1188('0x35')](_0x1b91af[_0x1188('0x33')],qs[_0x1188('0x36')](_0x469832[_0x1188('0x30')][_0x1188('0x36')]));_0x4acaa9['attributes']=_0x4acaa9['attributes'][_0x1188('0x47')]?_0x4acaa9[_0x1188('0x34')]:_0x1b91af[_0x1188('0x33')];if(_0x469832['query'][_0x1188('0x40')]){_0x4acaa9[_0x1188('0x41')]=[{'all':!![]}];}_0x4acaa9=_[_0x1188('0x3d')]({},_0x4acaa9,_0x469832[_0x1188('0x3f')]);return db['Attachment']['find'](_0x4acaa9)[_0x1188('0x23')](handleEntityNotFound(_0x38135e,null))['then'](function(_0x41f026){if(_0x41f026){var _0x4e80cc=_0x41f026[_0x1188('0x4a')]({'plain':!![]});_0x4e80cc=qs[_0x1188('0x4b')](_0x4e80cc,['id',_0x1188('0x4c'),_0x1188('0x4d')]);_0x469832[_0x1188('0x4e')]=_[_0x1188('0x4b')](_0x469832[_0x1188('0x4e')],['id',_0x1188('0x4c'),'updatedAt']);return db[_0x1188('0x2b')]['create'](_['merge'](_0x4e80cc,_0x469832[_0x1188('0x4e')]),{'include':_0x469832[_0x1188('0x30')][_0x1188('0x40')]?[{'all':!![]}]:undefined});}})[_0x1188('0x23')](respondWithResult(_0x38135e,0xc9))['catch'](handleError(_0x38135e,null));};exports[_0x1188('0x22')]=function(_0x455934,_0x89d374){if(_0x455934['body']['id']){delete _0x455934[_0x1188('0x4e')]['id'];}return db[_0x1188('0x2b')]['find']({'where':{'id':_0x455934['params']['id']}})[_0x1188('0x23')](handleEntityNotFound(_0x89d374,null))[_0x1188('0x23')](saveUpdates(_0x455934[_0x1188('0x4e')],null))[_0x1188('0x23')](respondWithResult(_0x89d374,null))[_0x1188('0x44')](handleError(_0x89d374,null));};exports[_0x1188('0x4f')]=function(_0x271d07,_0xf64c3d){return db[_0x1188('0x2b')][_0x1188('0x48')]({'where':{'id':_0x271d07['params']['id']}})[_0x1188('0x23')](handleEntityNotFound(_0xf64c3d,null))[_0x1188('0x23')](removeEntity(_0xf64c3d,null))[_0x1188('0x44')](handleError(_0xf64c3d,null));};exports['create']=function(_0xebaa46,_0x3fdb15,_0xdedaf4){_0xebaa46[_0x1188('0x4e')][_0x1188('0x28')]=_0xebaa46[_0x1188('0x50')][_0x1188('0x51')];_0xebaa46[_0x1188('0x4e')][_0x1188('0x52')]=_0xebaa46[_0x1188('0x50')][_0x1188('0x53')];_0xebaa46[_0x1188('0x4e')][_0x1188('0x2e')]=_0xebaa46['file'][_0x1188('0x54')];return db[_0x1188('0x2b')]['create'](_0xebaa46[_0x1188('0x4e')])[_0x1188('0x23')](respondWithResult(_0x3fdb15,0xc9))[_0x1188('0x44')](handleError(_0x3fdb15,null));};exports['download']=function(_0x2561bc,_0x3a54ef,_0x2e027b){return db[_0x1188('0x2b')]['findOne']({'where':{'id':_0x2561bc[_0x1188('0x46')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x3a54ef,null))['then'](function(_0x105ea9){if(_0x105ea9){var _0x2cc3df=_0x105ea9[_0x1188('0x55')]!==null;var _0x3bcf44=path[_0x1188('0x56')](config[_0x1188('0x57')],_0x1188('0x58'));if(_0x2cc3df){_0x3bcf44=path['join'](_0x3bcf44,_0x1188('0x59'));}var _0xe2b1ed=path[_0x1188('0x56')](_0x3bcf44,_0x105ea9['basename']);return _0x3a54ef[_0x1188('0x5a')](_0xe2b1ed);}})[_0x1188('0x44')](handleError(_0x3a54ef,null));};
\ No newline at end of file
index 6aeebab..171a7bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ae3=['request-promise','rimraf','./attachment.attributes','exports','Attachment','attachments','lodash','util','../../config/logger'];(function(_0x2330a1,_0x4bb8d3){var _0x32c0a6=function(_0xba8ada){while(--_0xba8ada){_0x2330a1['push'](_0x2330a1['shift']());}};_0x32c0a6(++_0x4bb8d3);}(_0x3ae3,0x1c8));var _0x33ae=function(_0x5993b3,_0x34da84){_0x5993b3=_0x5993b3-0x0;var _0x3108b5=_0x3ae3[_0x5993b3];return _0x3108b5;};'use strict';var _=require(_0x33ae('0x0'));var util=require(_0x33ae('0x1'));var logger=require(_0x33ae('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x33ae('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33ae('0x4'));var config=require('../../config/environment');var attributes=require(_0x33ae('0x5'));module[_0x33ae('0x6')]=function(_0x27437d,_0x26705d){return _0x27437d['define'](_0x33ae('0x7'),attributes,{'tableName':_0x33ae('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d90=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','define','lodash'];(function(_0x372c58,_0x18eacd){var _0xd7a2a5=function(_0x582d5a){while(--_0x582d5a){_0x372c58['push'](_0x372c58['shift']());}};_0xd7a2a5(++_0x18eacd);}(_0x4d90,0x15b));var _0x04d9=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x4d90[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x04d9('0x0'));var util=require(_0x04d9('0x1'));var logger=require(_0x04d9('0x2'))(_0x04d9('0x3'));var moment=require(_0x04d9('0x4'));var BPromise=require(_0x04d9('0x5'));var rp=require(_0x04d9('0x6'));var fs=require('fs');var path=require(_0x04d9('0x7'));var rimraf=require(_0x04d9('0x8'));var config=require(_0x04d9('0x9'));var attributes=require(_0x04d9('0xa'));module['exports']=function(_0x51a8b0,_0x560e37){return _0x51a8b0[_0x04d9('0xb')]('Attachment',attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ecceb7d..62547ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e5=['error','code','message','result','CreateAttachment','Attachment','create','body','options','raw','debug','stringify','catch','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s'];(function(_0x405022,_0x2377a8){var _0x3b29e7=function(_0xb927b5){while(--_0xb927b5){_0x405022['push'](_0x405022['shift']());}};_0x3b29e7(++_0x2377a8);}(_0x98e5,0x8a));var _0x598e=function(_0x2285ab,_0x2479e7){_0x2285ab=_0x2285ab-0x0;var _0x2b2191=_0x98e5[_0x2285ab];return _0x2b2191;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x598e('0x0'));var rs=require(_0x598e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x598e('0x2'))['db'];var utils=require(_0x598e('0x3'));var logger=require('../../config/logger')(_0x598e('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x598e('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4292c3,_0x1fc8b5,_0x10bf8e){return new BPromise(function(_0x3e0212,_0x9dc046){return client[_0x598e('0x6')](_0x4292c3,_0x10bf8e)[_0x598e('0x7')](function(_0x2550b9){logger[_0x598e('0x8')](_0x598e('0x9'),_0x1fc8b5,_0x598e('0xa'));logger['debug'](_0x598e('0xb'),_0x1fc8b5,_0x598e('0xa'),JSON['stringify'](_0x2550b9));if(_0x2550b9[_0x598e('0xc')]){if(_0x2550b9['error'][_0x598e('0xd')]===0x1f4){logger[_0x598e('0xc')](_0x598e('0x9'),_0x1fc8b5,_0x2550b9[_0x598e('0xc')][_0x598e('0xe')]);return _0x9dc046(_0x2550b9['error'][_0x598e('0xe')]);}logger['error'](_0x598e('0x9'),_0x1fc8b5,_0x2550b9[_0x598e('0xc')]['message']);return _0x3e0212(_0x2550b9[_0x598e('0xc')][_0x598e('0xe')]);}else{logger[_0x598e('0x8')](_0x598e('0x9'),_0x1fc8b5,_0x598e('0xa'));_0x3e0212(_0x2550b9[_0x598e('0xf')][_0x598e('0xe')]);}})['catch'](function(_0x9ba324){logger[_0x598e('0xc')](_0x598e('0x9'),_0x1fc8b5,_0x9ba324);_0x9dc046(_0x9ba324);});});}exports[_0x598e('0x10')]=function(_0x50ffbb){var _0x1efdfc=this;return new Promise(function(_0x2ecb1e,_0x1727dd){return db[_0x598e('0x11')][_0x598e('0x12')](_0x50ffbb[_0x598e('0x13')],{'raw':_0x50ffbb[_0x598e('0x14')]?_0x50ffbb[_0x598e('0x14')][_0x598e('0x15')]===undefined?!![]:![]:!![]})[_0x598e('0x7')](function(_0x17e5f1){logger[_0x598e('0x8')](_0x598e('0x10'),_0x50ffbb);logger[_0x598e('0x16')](_0x598e('0x10'),_0x50ffbb,JSON[_0x598e('0x17')](_0x17e5f1));_0x2ecb1e(_0x17e5f1);})[_0x598e('0x18')](function(_0x5b9c3){logger['error'](_0x598e('0x10'),_0x5b9c3['message'],_0x50ffbb);_0x1727dd(_0x1efdfc[_0x598e('0xc')](0x1f4,_0x5b9c3[_0x598e('0xe')]));});});};
\ No newline at end of file
+var _0x0e35=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','create','options','lodash','util'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x0e35,0xc2));var _0x50e3=function(_0x154c4d,_0x3a3af3){_0x154c4d=_0x154c4d-0x0;var _0x51fc92=_0x0e35[_0x154c4d];return _0x51fc92;};'use strict';var _=require(_0x50e3('0x0'));var util=require(_0x50e3('0x1'));var moment=require(_0x50e3('0x2'));var BPromise=require(_0x50e3('0x3'));var rs=require(_0x50e3('0x4'));var fs=require('fs');var Redis=require(_0x50e3('0x5'));var db=require(_0x50e3('0x6'))['db'];var utils=require(_0x50e3('0x7'));var logger=require(_0x50e3('0x8'))(_0x50e3('0x9'));var config=require('../../config/environment');var jayson=require(_0x50e3('0xa'));var client=jayson[_0x50e3('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5defe6,_0x2ac084,_0x1ed6ec){return new BPromise(function(_0x57bb5f,_0x48382f){return client[_0x50e3('0xc')](_0x5defe6,_0x1ed6ec)[_0x50e3('0xd')](function(_0x3e0a06){logger[_0x50e3('0xe')](_0x50e3('0xf'),_0x2ac084,_0x50e3('0x10'));logger[_0x50e3('0x11')](_0x50e3('0x12'),_0x2ac084,_0x50e3('0x10'),JSON[_0x50e3('0x13')](_0x3e0a06));if(_0x3e0a06[_0x50e3('0x14')]){if(_0x3e0a06[_0x50e3('0x14')][_0x50e3('0x15')]===0x1f4){logger['error'](_0x50e3('0xf'),_0x2ac084,_0x3e0a06[_0x50e3('0x14')][_0x50e3('0x16')]);return _0x48382f(_0x3e0a06[_0x50e3('0x14')]['message']);}logger[_0x50e3('0x14')](_0x50e3('0xf'),_0x2ac084,_0x3e0a06['error'][_0x50e3('0x16')]);return _0x57bb5f(_0x3e0a06[_0x50e3('0x14')][_0x50e3('0x16')]);}else{logger[_0x50e3('0xe')](_0x50e3('0xf'),_0x2ac084,'request\x20sent');_0x57bb5f(_0x3e0a06[_0x50e3('0x17')]['message']);}})[_0x50e3('0x18')](function(_0x1bf9df){logger[_0x50e3('0x14')]('Attachment,\x20%s,\x20%s',_0x2ac084,_0x1bf9df);_0x48382f(_0x1bf9df);});});}exports[_0x50e3('0x19')]=function(_0x2d25e6){var _0x1b4279=this;return new Promise(function(_0x3e56b6,_0x47ea2c){return db['Attachment'][_0x50e3('0x1a')](_0x2d25e6['body'],{'raw':_0x2d25e6[_0x50e3('0x1b')]?_0x2d25e6[_0x50e3('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x635288){logger[_0x50e3('0xe')]('CreateAttachment',_0x2d25e6);logger[_0x50e3('0x11')](_0x50e3('0x19'),_0x2d25e6,JSON[_0x50e3('0x13')](_0x635288));_0x3e56b6(_0x635288);})[_0x50e3('0x18')](function(_0x3fdd65){logger[_0x50e3('0x14')]('CreateAttachment',_0x3fdd65[_0x50e3('0x16')],_0x2d25e6);_0x47ea2c(_0x1b4279[_0x50e3('0x14')](0x1f4,_0x3fdd65[_0x50e3('0x16')]));});});};
\ No newline at end of file
index ab987b7..9a28f01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x506d2f,_0x5ab76e){var _0x101255=function(_0x1596b1){while(--_0x1596b1){_0x506d2f['push'](_0x506d2f['shift']());}};_0x101255(++_0x5ab76e);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0x5f66,0x1a0));var _0x65f6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f66[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index d1d508b..cf536e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbc1=['blocked','blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','/login','profile','email','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','emails','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x3003fb,_0x31a074){var _0x3ebe4b=function(_0x166feb){while(--_0x166feb){_0x3003fb['push'](_0x3003fb['shift']());}};_0x3ebe4b(++_0x31a074);}(_0xfbc1,0x1ca));var _0x1fbc=function(_0x28f32c,_0x4cc342){_0x28f32c=_0x28f32c-0x0;var _0x355402=_0xfbc1[_0x28f32c];return _0x355402;};'use strict';var _=require(_0x1fbc('0x0'));var passport=require(_0x1fbc('0x1'));var GoogleStrategy=require(_0x1fbc('0x2'))['Strategy'];var moment=require(_0x1fbc('0x3'));var db=require(_0x1fbc('0x4'))['db'];var config=require(_0x1fbc('0x5'));var signToken=require(_0x1fbc('0x6'))[_0x1fbc('0x7')];var utils=require(_0x1fbc('0x8'));exports[_0x1fbc('0x9')]=passport[_0x1fbc('0xa')](_0x1fbc('0xb'),{'failureRedirect':_0x1fbc('0xc'),'scope':[_0x1fbc('0xd'),_0x1fbc('0xe')],'session':![]});exports['callback']=passport[_0x1fbc('0xa')]('google',{'failureRedirect':'/login','session':![]});passport[_0x1fbc('0xf')](new GoogleStrategy({'clientID':config['google']?config[_0x1fbc('0xb')][_0x1fbc('0x10')]:'id','clientSecret':config[_0x1fbc('0xb')]?config[_0x1fbc('0xb')][_0x1fbc('0x11')]:_0x1fbc('0x12'),'callbackURL':config['google']?config[_0x1fbc('0xb')][_0x1fbc('0x13')]:''},function(_0x58ca54,_0x1234e8,_0x3e5e6e,_0x567c5e){var _0x3ce7dc,_0x18e7ad;return db[_0x1fbc('0x14')][_0x1fbc('0x15')]({'where':{'id':0x1},'attributes':[_0x1fbc('0x16'),_0x1fbc('0x17')],'raw':!![]})[_0x1fbc('0x18')](function(_0x236ca7){_0x3ce7dc=_0x236ca7;return db[_0x1fbc('0x19')][_0x1fbc('0x1a')]({'where':{'email':_[_0x1fbc('0x1b')](_0x3e5e6e[_0x1fbc('0x1c')],'value'),'role':{'$or':[_0x1fbc('0x1d'),_0x1fbc('0x1e'),_0x1fbc('0x1f')]}}});})['then'](function(_0x3ae096){_0x18e7ad=_0x3ae096;if(_0x18e7ad){if(_0x18e7ad[_0x1fbc('0x20')]){return _0x567c5e(_0x1fbc('0x21'));}else if(_0x3ce7dc[_0x1fbc('0x17')]>0x0){if(_0x18e7ad[_0x1fbc('0x22')]){if(moment(_0x18e7ad[_0x1fbc('0x23')])[_0x1fbc('0x24')](_0x3ce7dc['blockDuration'],_0x1fbc('0x25'))>moment()){return _0x567c5e(_0x1fbc('0x21'));}else{return utils[_0x1fbc('0x26')](_0x18e7ad,0x0,![],null)['then'](function(){return utils[_0x1fbc('0x27')](_0x18e7ad);})[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}else{return utils[_0x1fbc('0x27')](_0x18e7ad)[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}else{return utils[_0x1fbc('0x27')](_0x18e7ad)[_0x1fbc('0x18')](function(){return _0x567c5e(null,_0x18e7ad);});}}return _0x567c5e('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x1fbc('0x28')](function(_0x4f7d13){_0x567c5e(_0x4f7d13);});}));
\ No newline at end of file
+var _0x2d34=['lodash','passport','passport-google-oauth20','moment','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','profile','callback','/login','use','clientID','secret','callbackURL','Setting','blockDuration','then','map','emails','admin','user','agent','disabled','blockedAt','add','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','getLicense','catch'];(function(_0x5b15a,_0x309ee4){var _0x26754d=function(_0x8482c3){while(--_0x8482c3){_0x5b15a['push'](_0x5b15a['shift']());}};_0x26754d(++_0x309ee4);}(_0x2d34,0xc6));var _0x42d3=function(_0x26b0e4,_0x2eea8c){_0x26b0e4=_0x26b0e4-0x0;var _0x29e396=_0x2d34[_0x26b0e4];return _0x29e396;};'use strict';var _=require(_0x42d3('0x0'));var passport=require(_0x42d3('0x1'));var GoogleStrategy=require(_0x42d3('0x2'))['Strategy'];var moment=require(_0x42d3('0x3'));var db=require('../../mysqldb')['db'];var config=require(_0x42d3('0x4'));var signToken=require(_0x42d3('0x5'))[_0x42d3('0x6')];var utils=require(_0x42d3('0x7'));exports[_0x42d3('0x8')]=passport[_0x42d3('0x9')](_0x42d3('0xa'),{'failureRedirect':'/login','scope':[_0x42d3('0xb'),'email'],'session':![]});exports[_0x42d3('0xc')]=passport[_0x42d3('0x9')](_0x42d3('0xa'),{'failureRedirect':_0x42d3('0xd'),'session':![]});passport[_0x42d3('0xe')](new GoogleStrategy({'clientID':config[_0x42d3('0xa')]?config[_0x42d3('0xa')][_0x42d3('0xf')]:'id','clientSecret':config[_0x42d3('0xa')]?config[_0x42d3('0xa')]['clientSecret']:_0x42d3('0x10'),'callbackURL':config['google']?config[_0x42d3('0xa')][_0x42d3('0x11')]:''},function(_0x5439a4,_0x5179df,_0x41cf27,_0x537554){var _0x565519,_0x5673f6;return db[_0x42d3('0x12')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x42d3('0x13')],'raw':!![]})[_0x42d3('0x14')](function(_0xbedce9){_0x565519=_0xbedce9;return db['User']['find']({'where':{'email':_[_0x42d3('0x15')](_0x41cf27[_0x42d3('0x16')],'value'),'role':{'$or':[_0x42d3('0x17'),_0x42d3('0x18'),_0x42d3('0x19')]}}});})[_0x42d3('0x14')](function(_0x299e12){_0x5673f6=_0x299e12;if(_0x5673f6){if(_0x5673f6[_0x42d3('0x1a')]){return _0x537554('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x565519[_0x42d3('0x13')]>0x0){if(_0x5673f6['blocked']){if(moment(_0x5673f6[_0x42d3('0x1b')])[_0x42d3('0x1c')](_0x565519[_0x42d3('0x13')],'minutes')>moment()){return _0x537554(_0x42d3('0x1d'));}else{return utils[_0x42d3('0x1e')](_0x5673f6,0x0,![],null)[_0x42d3('0x14')](function(){return utils[_0x42d3('0x1f')](_0x5673f6);})[_0x42d3('0x14')](function(){return _0x537554(null,_0x5673f6);});}}else{return utils[_0x42d3('0x1f')](_0x5673f6)[_0x42d3('0x14')](function(){return _0x537554(null,_0x5673f6);});}}else{return utils['getLicense'](_0x5673f6)[_0x42d3('0x14')](function(){return _0x537554(null,_0x5673f6);});}}return _0x537554(_0x42d3('0x1d'));})[_0x42d3('0x20')](function(_0x4b5ab6){_0x537554(_0x4b5ab6);});}));
\ No newline at end of file
index fd6b099..07aac7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba27=['./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','/callback','isMiddleware','login','exports','passport','Router'];(function(_0x1099f2,_0x3456f3){var _0x14595e=function(_0x1967b1){while(--_0x1967b1){_0x1099f2['push'](_0x1099f2['shift']());}};_0x14595e(++_0x3456f3);}(_0xba27,0x15c));var _0x7ba2=function(_0x123cd1,_0x48cb5a){_0x123cd1=_0x123cd1-0x0;var _0x4c13ee=_0xba27[_0x123cd1];return _0x4c13ee;};'use strict';var express=require('express');var passport=require(_0x7ba2('0x0'));var router=express[_0x7ba2('0x1')]();var controller=require(_0x7ba2('0x2'));var userController=require(_0x7ba2('0x3'));var authService=require(_0x7ba2('0x4'));router[_0x7ba2('0x5')]('/',controller['login']);router[_0x7ba2('0x5')](_0x7ba2('0x6'),controller['callback'],authService[_0x7ba2('0x7')],userController[_0x7ba2('0x8')],authService['setTokenCookie']);module[_0x7ba2('0x9')]=router;
\ No newline at end of file
+var _0xef39=['callback','isMiddleware','exports','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback'];(function(_0x2836e7,_0x4d7134){var _0x997b49=function(_0x2fd4a3){while(--_0x2fd4a3){_0x2836e7['push'](_0x2836e7['shift']());}};_0x997b49(++_0x4d7134);}(_0xef39,0x92));var _0x9ef3=function(_0x529d35,_0x4b243c){_0x529d35=_0x529d35-0x0;var _0xd70688=_0xef39[_0x529d35];return _0xd70688;};'use strict';var express=require('express');var passport=require(_0x9ef3('0x0'));var router=express[_0x9ef3('0x1')]();var controller=require(_0x9ef3('0x2'));var userController=require(_0x9ef3('0x3'));var authService=require(_0x9ef3('0x4'));router[_0x9ef3('0x5')]('/',controller[_0x9ef3('0x6')]);router[_0x9ef3('0x5')](_0x9ef3('0x7'),controller[_0x9ef3('0x8')],authService[_0x9ef3('0x9')],userController[_0x9ef3('0x6')],authService['setTokenCookie']);module[_0x9ef3('0xa')]=router;
\ No newline at end of file
index c4220a9..3dac99a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a1=['password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','blockDuration','clearBlockUser','add','minutes','getLicense','catch','MailAccount','find','MailServerOut','Smtp','service','host','port','secure','authentication','pass','merge','format','\x22%s\x22\x20<%s>','email','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','body','generate','trim','toLowerCase','Setting','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','send','User','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','resetPasswordExpires','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','findOne','allowedLoginAttempts','then','name'];(function(_0x5457ab,_0x5cb3dc){var _0x33d8b4=function(_0x5091f0){while(--_0x5091f0){_0x5457ab['push'](_0x5457ab['shift']());}};_0x33d8b4(++_0x5cb3dc);}(_0xa1a1,0x91));var _0x1a1a=function(_0x3ec122,_0x55150a){_0x3ec122=_0x3ec122-0x0;var _0x4ecf41=_0xa1a1[_0x3ec122];return _0x4ecf41;};'use strict';var util=require(_0x1a1a('0x0'));var passport=require(_0x1a1a('0x1'));var LocalStrategy=require(_0x1a1a('0x2'))[_0x1a1a('0x3')];var jayson=require(_0x1a1a('0x4'));var _=require(_0x1a1a('0x5'));var rs=require(_0x1a1a('0x6'));var moment=require(_0x1a1a('0x7'));var db=require(_0x1a1a('0x8'))['db'];var authService=require(_0x1a1a('0x9'));var utils=require(_0x1a1a('0xa'));var client=jayson[_0x1a1a('0xb')][_0x1a1a('0xc')]({'port':0x232b});function localAuthenticate(_0x1e8807,_0x281043,_0x290168,_0x209795){var _0x31eed4,_0x40e8c1;return db['Setting'][_0x1a1a('0xd')]({'where':{'id':0x1},'attributes':[_0x1a1a('0xe'),'blockDuration'],'raw':!![]})[_0x1a1a('0xf')](function(_0x19304e){_0x31eed4=_0x19304e;return _0x1e8807[_0x1a1a('0xd')]({'attributes':['id',_0x1a1a('0x10'),_0x1a1a('0x11'),_0x1a1a('0x12'),_0x1a1a('0x13'),_0x1a1a('0x14'),_0x1a1a('0x15'),_0x1a1a('0x16'),_0x1a1a('0x17')],'where':{'name':_0x281043,'role':{'$or':[_0x1a1a('0x18'),_0x1a1a('0x19'),'agent']}}});})[_0x1a1a('0xf')](function(_0x3bde36){if(!_0x3bde36||_0x3bde36&&_0x3bde36['name']!==_0x281043){throw new Error(_0x1a1a('0x1a'));}else{_0x40e8c1=_0x3bde36;return _0x40e8c1;}})[_0x1a1a('0xf')](function(){_0x40e8c1[_0x1a1a('0x1b')](_0x290168,function(_0x251583,_0xdc83be){var _0x3d56ac=_0x40e8c1[_0x1a1a('0x17')]+0x1;if(_0x251583){return _0x209795(_0x251583);}else if(!_0xdc83be){if(_0x40e8c1[_0x1a1a('0x14')]){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else if(_0x31eed4[_0x1a1a('0xe')]>0x0){if(_0x40e8c1[_0x1a1a('0x15')]){if(_0x31eed4[_0x1a1a('0x1c')]>0x0){if(moment(_0x40e8c1[_0x1a1a('0x16')])['add'](_0x31eed4[_0x1a1a('0x1c')],'minutes')>moment()){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,_0x3d56ac,![],null)[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});});}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{if(_0x3d56ac>=_0x31eed4[_0x1a1a('0xe')]){return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,!![],moment())[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,_0x3d56ac,![],null)[_0x1a1a('0xf')](function(){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{if(_0x40e8c1['disabled']){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else if(_0x31eed4[_0x1a1a('0xe')]>0x0){if(_0x40e8c1['blocked']){if(_0x31eed4[_0x1a1a('0x1c')]>0x0){if(moment(_0x40e8c1['blockedAt'])[_0x1a1a('0x1e')](_0x31eed4[_0x1a1a('0x1c')],_0x1a1a('0x1f'))>moment()){return _0x209795(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,![],null)[_0x1a1a('0xf')](function(){return utils[_0x1a1a('0x20')](_0x40e8c1);})[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);});}}else{return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}}else{return utils[_0x1a1a('0x1d')](_0x40e8c1,0x0,![],null)['then'](function(){return utils['getLicense'](_0x40e8c1);})[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);})[_0x1a1a('0x21')](function(_0x5b8bc5){return _0x209795(null,![],_0x5b8bc5);});}}else{if(_0x40e8c1[_0x1a1a('0x15')]){return _0x209795(null,![],{'message':_0x1a1a('0x1a')});}else{return utils[_0x1a1a('0x20')](_0x40e8c1)[_0x1a1a('0xf')](function(){return _0x209795(null,_0x40e8c1);});}}}});})[_0x1a1a('0x21')](function(_0x10ddeb){return _0x209795(null,![],_0x10ddeb);});}function sendServiceMail(_0xa2375f){return db[_0x1a1a('0x22')][_0x1a1a('0x23')]({'where':{'service':!![]},'attributes':['id',_0x1a1a('0x10'),'email'],'include':[{'model':db[_0x1a1a('0x24')],'as':_0x1a1a('0x25')}]})[_0x1a1a('0xf')](function(_0x8182a9){if(!_0x8182a9){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x192920={'tls':{'rejectUnauthorized':![]}};if(_0x8182a9[_0x1a1a('0x25')]['service']){_0x192920[_0x1a1a('0x26')]=_0x8182a9[_0x1a1a('0x25')]['service'];}else{_0x192920['host']=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x27')];_0x192920['port']=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x28')];_0x192920[_0x1a1a('0x29')]=_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x29')];}if(_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x2a')]){_0x192920['auth']={'user':_0x8182a9['Smtp'][_0x1a1a('0x19')],'pass':_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x2b')]};}var _0xd97f05={'account':_0x192920,'message':_[_0x1a1a('0x2c')]({'from':util[_0x1a1a('0x2d')](_0x1a1a('0x2e'),_0x8182a9[_0x1a1a('0x10')],_0x8182a9[_0x1a1a('0x2f')]||_0x8182a9[_0x1a1a('0x25')][_0x1a1a('0x19')])},_0xa2375f)};return client['request']('SendMail',_0xd97f05);})[_0x1a1a('0xf')](function(_0x18b5ce){if(_0x18b5ce[_0x1a1a('0x30')]){throw new Error(util[_0x1a1a('0x2d')](_0x1a1a('0x31'),_0x18b5ce[_0x1a1a('0x30')][_0x1a1a('0x32')]||JSON[_0x1a1a('0x33')](_0x18b5ce[_0x1a1a('0x30')])));}return!![];});}function handleError(_0x502e08,_0x577315,_0x5c68f1){return _0x502e08[_0x1a1a('0x34')](_0x577315||0x1f4)['send']({'message':_0x5c68f1?_0x5c68f1[_0x1a1a('0x32')]||_0x5c68f1:''});}exports[_0x1a1a('0x35')]=function(_0x398345,_0x5c786b,_0x406c48){passport['authenticate']('local',function(_0x2ff425,_0x27c4ae,_0x29fdd5){var _0x4eaba5=_0x2ff425||_0x29fdd5;if(_0x4eaba5){return handleError(_0x5c786b,0x191,_0x4eaba5);}if(!_0x27c4ae){return handleError(_0x5c786b,0x194,{'message':_0x1a1a('0x36')});}else{var _0x495579={'payload':{'id':_0x27c4ae['id'],'role':_0x27c4ae[_0x1a1a('0x13')]},'options':{'expiresIn':0x15180}};return authService[_0x1a1a('0x37')](_0x495579)[_0x1a1a('0xf')](function(_0x1e1f33){_0x5c786b[_0x1a1a('0x38')]({'id':_0x27c4ae['id'],'token':_0x1e1f33,'statusCall':'','isAlreadyLogged':_0x27c4ae[_0x1a1a('0x39')]});});}})(_0x398345,_0x5c786b,_0x406c48);};exports['forgot']=function(_0x1161cb,_0x159084,_0x4522e5){if(!_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]){return handleError(_0x159084,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x54503f=rs[_0x1a1a('0x3b')]();_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]=_0x1161cb[_0x1a1a('0x3a')]['email'][_0x1a1a('0x3c')]()[_0x1a1a('0x3d')]();var _0xe64d72;return db[_0x1a1a('0x3e')][_0x1a1a('0xd')]({'where':{'id':0x1},'attributes':[_0x1a1a('0xe'),'blockDuration'],'raw':!![]})[_0x1a1a('0xf')](function(_0x374b3f){_0xe64d72=_0x374b3f;return db['User']['find']({'where':{'email':_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')]}});})[_0x1a1a('0xf')](function(_0xccb192){if(!_0xccb192){throw new Error(_0x1a1a('0x3f'));}if(_0xccb192[_0x1a1a('0x14')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0xccb192[_0x1a1a('0x15')]){if(moment(_0xccb192[_0x1a1a('0x16')])[_0x1a1a('0x1e')](_0xe64d72[_0x1a1a('0x1c')],'minutes')>moment()){throw new Error(_0x1a1a('0x40'));}else{_0xccb192['blocked']=![];_0xccb192[_0x1a1a('0x16')]=null;}}_0xccb192[_0x1a1a('0x41')]=_0x54503f;_0xccb192['resetPasswordExpires']=Date[_0x1a1a('0x42')]()+0x36ee80;return _0xccb192[_0x1a1a('0x43')]();})[_0x1a1a('0xf')](function(){return sendServiceMail({'to':_0x1161cb[_0x1a1a('0x3a')][_0x1a1a('0x2f')],'subject':_0x1a1a('0x44'),'text':_0x1a1a('0x45')+_0x1a1a('0x46')+_0x1a1a('0x47')+_0x1161cb[_0x1a1a('0x48')][_0x1a1a('0x27')]+'/reset/'+_0x54503f+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x1a1a('0xf')](function(){_0x159084[_0x1a1a('0x34')](0xc8)[_0x1a1a('0x49')]({'message':'Reset\x20Email\x20sent!'});})[_0x1a1a('0x21')](function(_0x543e48){return handleError(_0x159084,0x1f4,_0x543e48);});};exports['reset']=function(_0x1bf9eb,_0x5ad080,_0x3ab0c9){return db[_0x1a1a('0x4a')][_0x1a1a('0x23')]({'where':{'resetPasswordToken':_0x1bf9eb['params'][_0x1a1a('0x4b')],'resetPasswordExpires':{'$gt':Date[_0x1a1a('0x42')]()}}})[_0x1a1a('0xf')](function(_0x5841bb){if(!_0x5841bb){throw new Error(_0x1a1a('0x4c'));}return db[_0x1a1a('0x3e')][_0x1a1a('0xd')]({'attributes':['id','securePassword',_0x1a1a('0x4d'),_0x1a1a('0x4e')]})[_0x1a1a('0xf')](function(_0x1be449){if(_0x1be449['securePassword'])authService['validatePasswordPattern'](_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')]);if(!_0x1be449[_0x1a1a('0x4d')]||!_0x5841bb[_0x1a1a('0x4f')])return _0x5841bb;authService['validatePasswordHistory'](_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')],_0x5841bb[_0x1a1a('0x4f')],_0x1be449['passwordHistoryLimit']);return _0x5841bb;})['then'](function(){_0x5841bb[_0x1a1a('0x11')]=_0x1bf9eb[_0x1a1a('0x3a')][_0x1a1a('0x11')];_0x5841bb[_0x1a1a('0x41')]=null;_0x5841bb[_0x1a1a('0x50')]=null;return _0x5841bb['save']();});})['then'](function(){_0x5ad080[_0x1a1a('0x34')](0xc8)['send']({'message':'Password\x20reset!'});})['catch'](function(_0x407a43){return handleError(_0x5ad080,0x1f4,_0x407a43);});};passport['use'](new LocalStrategy({'usernameField':'name','passwordField':_0x1a1a('0x11')},function(_0x1c1896,_0x35c715,_0x2aa562){return localAuthenticate(db[_0x1a1a('0x4a')],_0x1c1896,_0x35c715,_0x2aa562);}));
\ No newline at end of file
+var _0x13a0=['user','merge','format','\x22%s\x22\x20<%s>','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','User','find','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','catch','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','save','Password\x20reset!','use','util','passport-local','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','then','findOne','name','password','salt','role','disabled','loginAttempts','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','allowedLoginAttempts','blocked','blockDuration','blockedAt','add','minutes','clearBlockUser','getLicense','MailAccount','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication'];(function(_0x4370c7,_0x5dbfb0){var _0xce78a9=function(_0x157b2c){while(--_0x157b2c){_0x4370c7['push'](_0x4370c7['shift']());}};_0xce78a9(++_0x5dbfb0);}(_0x13a0,0x128));var _0x013a=function(_0x5bcadb,_0x35270a){_0x5bcadb=_0x5bcadb-0x0;var _0x501049=_0x13a0[_0x5bcadb];return _0x501049;};'use strict';var util=require(_0x013a('0x0'));var passport=require('passport');var LocalStrategy=require(_0x013a('0x1'))['Strategy'];var jayson=require('jayson/promise');var _=require(_0x013a('0x2'));var rs=require(_0x013a('0x3'));var moment=require(_0x013a('0x4'));var db=require(_0x013a('0x5'))['db'];var authService=require(_0x013a('0x6'));var utils=require(_0x013a('0x7'));var client=jayson[_0x013a('0x8')][_0x013a('0x9')]({'port':0x232b});function localAuthenticate(_0x243150,_0x4c926b,_0x13aeca,_0x3d5048){var _0x5bcdd3,_0x517679;return db[_0x013a('0xa')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x013a('0xb')](function(_0x5471b4){_0x5bcdd3=_0x5471b4;return _0x243150[_0x013a('0xc')]({'attributes':['id',_0x013a('0xd'),_0x013a('0xe'),_0x013a('0xf'),_0x013a('0x10'),_0x013a('0x11'),'blocked','blockedAt',_0x013a('0x12')],'where':{'name':_0x4c926b,'role':{'$or':['admin','user',_0x013a('0x13')]}}});})[_0x013a('0xb')](function(_0x1b1be7){if(!_0x1b1be7||_0x1b1be7&&_0x1b1be7[_0x013a('0xd')]!==_0x4c926b){throw new Error(_0x013a('0x14'));}else{_0x517679=_0x1b1be7;return _0x517679;}})[_0x013a('0xb')](function(){_0x517679[_0x013a('0x15')](_0x13aeca,function(_0x320504,_0x15f783){var _0x3889ec=_0x517679[_0x013a('0x12')]+0x1;if(_0x320504){return _0x3d5048(_0x320504);}else if(!_0x15f783){if(_0x517679[_0x013a('0x11')]){return _0x3d5048(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x5bcdd3[_0x013a('0x16')]>0x0){if(_0x517679[_0x013a('0x17')]){if(_0x5bcdd3[_0x013a('0x18')]>0x0){if(moment(_0x517679[_0x013a('0x19')])[_0x013a('0x1a')](_0x5bcdd3[_0x013a('0x18')],_0x013a('0x1b'))>moment()){return _0x3d5048(null,![],{'message':_0x013a('0x14')});}else{return utils[_0x013a('0x1c')](_0x517679,_0x3889ec,![],null)[_0x013a('0xb')](function(){return _0x3d5048(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x3d5048(null,![],{'message':_0x013a('0x14')});}}else{if(_0x3889ec>=_0x5bcdd3[_0x013a('0x16')]){return utils[_0x013a('0x1c')](_0x517679,0x0,!![],moment())[_0x013a('0xb')](function(){return _0x3d5048(null,![],{'message':_0x013a('0x14')});});}else{return utils[_0x013a('0x1c')](_0x517679,_0x3889ec,![],null)[_0x013a('0xb')](function(){return _0x3d5048(null,![],{'message':_0x013a('0x14')});});}}}else{return _0x3d5048(null,![],{'message':_0x013a('0x14')});}}else{if(_0x517679[_0x013a('0x11')]){return _0x3d5048(null,![],{'message':_0x013a('0x14')});}else if(_0x5bcdd3[_0x013a('0x16')]>0x0){if(_0x517679[_0x013a('0x17')]){if(_0x5bcdd3[_0x013a('0x18')]>0x0){if(moment(_0x517679[_0x013a('0x19')])['add'](_0x5bcdd3['blockDuration'],_0x013a('0x1b'))>moment()){return _0x3d5048(null,![],{'message':_0x013a('0x14')});}else{return utils[_0x013a('0x1c')](_0x517679,0x0,![],null)[_0x013a('0xb')](function(){return utils[_0x013a('0x1d')](_0x517679);})[_0x013a('0xb')](function(){return _0x3d5048(null,_0x517679);});}}else{return _0x3d5048(null,![],{'message':_0x013a('0x14')});}}else{return utils[_0x013a('0x1c')](_0x517679,0x0,![],null)['then'](function(){return utils[_0x013a('0x1d')](_0x517679);})[_0x013a('0xb')](function(){return _0x3d5048(null,_0x517679);})['catch'](function(_0x11191f){return _0x3d5048(null,![],_0x11191f);});}}else{if(_0x517679[_0x013a('0x17')]){return _0x3d5048(null,![],{'message':_0x013a('0x14')});}else{return utils[_0x013a('0x1d')](_0x517679)[_0x013a('0xb')](function(){return _0x3d5048(null,_0x517679);});}}}});})['catch'](function(_0x5dca3e){return _0x3d5048(null,![],_0x5dca3e);});}function sendServiceMail(_0x12281a){return db[_0x013a('0x1e')]['find']({'where':{'service':!![]},'attributes':['id','name',_0x013a('0x1f')],'include':[{'model':db[_0x013a('0x20')],'as':_0x013a('0x21')}]})[_0x013a('0xb')](function(_0x27bf76){if(!_0x27bf76){throw new Error(_0x013a('0x22'));}var _0x57c2b9={'tls':{'rejectUnauthorized':![]}};if(_0x27bf76['Smtp']['service']){_0x57c2b9[_0x013a('0x23')]=_0x27bf76['Smtp'][_0x013a('0x23')];}else{_0x57c2b9[_0x013a('0x24')]=_0x27bf76['Smtp']['host'];_0x57c2b9[_0x013a('0x25')]=_0x27bf76['Smtp'][_0x013a('0x25')];_0x57c2b9[_0x013a('0x26')]=_0x27bf76['Smtp'][_0x013a('0x26')];}if(_0x27bf76[_0x013a('0x21')][_0x013a('0x27')]){_0x57c2b9['auth']={'user':_0x27bf76[_0x013a('0x21')][_0x013a('0x28')],'pass':_0x27bf76[_0x013a('0x21')]['pass']};}var _0xe2501c={'account':_0x57c2b9,'message':_[_0x013a('0x29')]({'from':util[_0x013a('0x2a')](_0x013a('0x2b'),_0x27bf76[_0x013a('0xd')],_0x27bf76[_0x013a('0x1f')]||_0x27bf76['Smtp'][_0x013a('0x28')])},_0x12281a)};return client['request'](_0x013a('0x2c'),_0xe2501c);})[_0x013a('0xb')](function(_0x3f451a){if(_0x3f451a['error']){throw new Error(util[_0x013a('0x2a')](_0x013a('0x2d'),_0x3f451a[_0x013a('0x2e')][_0x013a('0x2f')]||JSON[_0x013a('0x30')](_0x3f451a[_0x013a('0x2e')])));}return!![];});}function handleError(_0x1437c6,_0x2e9d99,_0x1b068c){return _0x1437c6[_0x013a('0x31')](_0x2e9d99||0x1f4)[_0x013a('0x32')]({'message':_0x1b068c?_0x1b068c['message']||_0x1b068c:''});}exports['login']=function(_0x6f8a42,_0x37a45a,_0x2aef85){passport[_0x013a('0x15')]('local',function(_0x14a963,_0x556836,_0x503d62){var _0x13ceb8=_0x14a963||_0x503d62;if(_0x13ceb8){return handleError(_0x37a45a,0x191,_0x13ceb8);}if(!_0x556836){return handleError(_0x37a45a,0x194,{'message':_0x013a('0x33')});}else{var _0x5075a8={'payload':{'id':_0x556836['id'],'role':_0x556836[_0x013a('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0x013a('0x34')](_0x5075a8)[_0x013a('0xb')](function(_0x20075e){_0x37a45a[_0x013a('0x35')]({'id':_0x556836['id'],'token':_0x20075e,'statusCall':'','isAlreadyLogged':_0x556836[_0x013a('0x36')]});});}})(_0x6f8a42,_0x37a45a,_0x2aef85);};exports[_0x013a('0x37')]=function(_0xcf3635,_0x10caa7,_0x3230b8){if(!_0xcf3635['body'][_0x013a('0x1f')]){return handleError(_0x10caa7,0x1f4,{'message':_0x013a('0x38')});}var _0x5b5588=rs[_0x013a('0x39')]();_0xcf3635[_0x013a('0x3a')][_0x013a('0x1f')]=_0xcf3635[_0x013a('0x3a')][_0x013a('0x1f')][_0x013a('0x3b')]()[_0x013a('0x3c')]();var _0x40c262;return db[_0x013a('0xa')][_0x013a('0xc')]({'where':{'id':0x1},'attributes':[_0x013a('0x16'),'blockDuration'],'raw':!![]})[_0x013a('0xb')](function(_0x2db8f3){_0x40c262=_0x2db8f3;return db[_0x013a('0x3d')][_0x013a('0x3e')]({'where':{'email':_0xcf3635[_0x013a('0x3a')][_0x013a('0x1f')]}});})[_0x013a('0xb')](function(_0x56d605){if(!_0x56d605){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x56d605[_0x013a('0x11')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x56d605['blocked']){if(moment(_0x56d605['blockedAt'])['add'](_0x40c262[_0x013a('0x18')],_0x013a('0x1b'))>moment()){throw new Error(_0x013a('0x3f'));}else{_0x56d605[_0x013a('0x17')]=![];_0x56d605['blockedAt']=null;}}_0x56d605[_0x013a('0x40')]=_0x5b5588;_0x56d605[_0x013a('0x41')]=Date[_0x013a('0x42')]()+0x36ee80;return _0x56d605['save']();})['then'](function(){return sendServiceMail({'to':_0xcf3635[_0x013a('0x3a')][_0x013a('0x1f')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0x013a('0x43')+_0x013a('0x44')+_0x013a('0x45')+_0xcf3635['headers'][_0x013a('0x24')]+'/reset/'+_0x5b5588+'\x0a\x0a'+_0x013a('0x46')});})[_0x013a('0xb')](function(){_0x10caa7[_0x013a('0x31')](0xc8)[_0x013a('0x32')]({'message':_0x013a('0x47')});})[_0x013a('0x48')](function(_0x2f8c91){return handleError(_0x10caa7,0x1f4,_0x2f8c91);});};exports[_0x013a('0x49')]=function(_0x4de14c,_0x40cf52,_0x285204){return db[_0x013a('0x3d')]['find']({'where':{'resetPasswordToken':_0x4de14c['params'][_0x013a('0x4a')],'resetPasswordExpires':{'$gt':Date[_0x013a('0x42')]()}}})[_0x013a('0xb')](function(_0x164daf){if(!_0x164daf){throw new Error(_0x013a('0x4b'));}return db[_0x013a('0xa')][_0x013a('0xc')]({'attributes':['id',_0x013a('0x4c'),_0x013a('0x4d'),_0x013a('0x4e')]})[_0x013a('0xb')](function(_0x2e94a5){if(_0x2e94a5['securePassword'])authService[_0x013a('0x4f')](_0x4de14c['body'][_0x013a('0xe')]);if(!_0x2e94a5[_0x013a('0x4d')]||!_0x164daf['previousPasswords'])return _0x164daf;authService[_0x013a('0x50')](_0x4de14c[_0x013a('0x3a')][_0x013a('0xe')],_0x164daf['previousPasswords'],_0x2e94a5['passwordHistoryLimit']);return _0x164daf;})[_0x013a('0xb')](function(){_0x164daf[_0x013a('0xe')]=_0x4de14c[_0x013a('0x3a')][_0x013a('0xe')];_0x164daf[_0x013a('0x40')]=null;_0x164daf[_0x013a('0x41')]=null;return _0x164daf[_0x013a('0x51')]();});})[_0x013a('0xb')](function(){_0x40cf52['status'](0xc8)['send']({'message':_0x013a('0x52')});})[_0x013a('0x48')](function(_0x5c9dcc){return handleError(_0x40cf52,0x1f4,_0x5c9dcc);});};passport[_0x013a('0x53')](new LocalStrategy({'usernameField':'name','passwordField':_0x013a('0xe')},function(_0x364af1,_0x27515e,_0x291443){return localAuthenticate(db[_0x013a('0x3d')],_0x364af1,_0x27515e,_0x291443);}));
\ No newline at end of file
index f6b6634..e1d338a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e29=['reset','express','./authLocal.controller','post','/forgot','forgot'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1e29,0x67));var _0x91e2=function(_0x2bb681,_0x2cf558){_0x2bb681=_0x2bb681-0x0;var _0x14810e=_0x1e29[_0x2bb681];return _0x14810e;};'use strict';var express=require(_0x91e2('0x0'));var router=express['Router']();var controller=require(_0x91e2('0x1'));router[_0x91e2('0x2')]('/',controller['login']);router[_0x91e2('0x2')](_0x91e2('0x3'),controller[_0x91e2('0x4')]);router[_0x91e2('0x2')]('/reset/:token',controller[_0x91e2('0x5')]);module['exports']=router;
\ No newline at end of file
+var _0x8359=['./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset','exports','express','Router'];(function(_0x507b94,_0xbf2f73){var _0x323167=function(_0x2c0115){while(--_0x2c0115){_0x507b94['push'](_0x507b94['shift']());}};_0x323167(++_0xbf2f73);}(_0x8359,0x94));var _0x9835=function(_0xe7d655,_0x184955){_0xe7d655=_0xe7d655-0x0;var _0x3e4804=_0x8359[_0xe7d655];return _0x3e4804;};'use strict';var express=require(_0x9835('0x0'));var router=express[_0x9835('0x1')]();var controller=require(_0x9835('0x2'));router[_0x9835('0x3')]('/',controller[_0x9835('0x4')]);router[_0x9835('0x3')](_0x9835('0x5'),controller[_0x9835('0x6')]);router['post'](_0x9835('0x7'),controller[_0x9835('0x8')]);module[_0x9835('0x9')]=router;
\ No newline at end of file
index 9c7dfc3..fd1f2df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb8=['exports','STRING','sequelize'];(function(_0xc82e49,_0x38660f){var _0x57e105=function(_0x5b1c7f){while(--_0x5b1c7f){_0xc82e49['push'](_0xc82e49['shift']());}};_0x57e105(++_0x38660f);}(_0xfdb8,0x1c1));var _0x8fdb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfdb8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8fdb('0x0'));module[_0x8fdb('0x1')]={'name':{'type':Sequelize[_0x8fdb('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
+var _0x5a42=['STRING','BOOLEAN','INTEGER'];(function(_0x4459f5,_0x40c08a){var _0x2567db=function(_0x3b4395){while(--_0x3b4395){_0x4459f5['push'](_0x4459f5['shift']());}};_0x2567db(++_0x40c08a);}(_0x5a42,0x66));var _0x25a4=function(_0x4718e1,_0x38200a){_0x4718e1=_0x4718e1-0x0;var _0x1a5aa1=_0x5a42[_0x4718e1];return _0x1a5aa1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x25a4('0x0')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x25a4('0x0')]},'status':{'type':Sequelize[_0x25a4('0x1')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x25a4('0x2')],'defaultValue':0xa}};
\ No newline at end of file
index e1837ca..f652fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e42=['map','rawAttributes','key','keys','filters','query','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','type','VIRTUAL','filter','options','where','Automation','findAll','rows','catch','show','params','includeAll','include','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','addActions','Action','getActions','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','undefined','limit','count','offset','status','set','Content-Range','json','apply','update','then','destroy','error','stack','name','send','index'];(function(_0x47403b,_0xb36e56){var _0x2525c6=function(_0x4a4096){while(--_0x4a4096){_0x47403b['push'](_0x47403b['shift']());}};_0x2525c6(++_0xb36e56);}(_0x4e42,0xd8));var _0x24e4=function(_0x38f70,_0x47a0f6){_0x38f70=_0x38f70-0x0;var _0x81fa37=_0x4e42[_0x38f70];return _0x81fa37;};'use strict';var emlformat=require(_0x24e4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x24e4('0x1'));var jsonpatch=require(_0x24e4('0x2'));var rp=require(_0x24e4('0x3'));var moment=require(_0x24e4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x24e4('0x5'));var util=require('util');var path=require(_0x24e4('0x6'));var sox=require(_0x24e4('0x7'));var csv=require(_0x24e4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x24e4('0x9'));var _=require(_0x24e4('0xa'));var squel=require(_0x24e4('0xb'));var crypto=require(_0x24e4('0xc'));var jsforce=require(_0x24e4('0xd'));var deskjs=require(_0x24e4('0xe'));var toCsv=require(_0x24e4('0x8'));var querystring=require(_0x24e4('0xf'));var Papa=require(_0x24e4('0x10'));var Redis=require(_0x24e4('0x11'));var authService=require(_0x24e4('0x12'));var qs=require(_0x24e4('0x13'));var as=require(_0x24e4('0x14'));var hardwareService=require(_0x24e4('0x15'));var logger=require(_0x24e4('0x16'))(_0x24e4('0x17'));var utils=require('../../config/utils');var config=require(_0x24e4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x24e4('0x19'))['db'];function respondWithStatusCode(_0x5dabcd,_0xeaa0f9){_0xeaa0f9=_0xeaa0f9||0xcc;return function(_0x3d41fb){if(_0x3d41fb){return _0x5dabcd[_0x24e4('0x1a')](_0xeaa0f9);}return _0x5dabcd['status'](_0xeaa0f9)[_0x24e4('0x1b')]();};}function respondWithResult(_0x88ae59,_0x464ab6){_0x464ab6=_0x464ab6||0xc8;return function(_0x3c76d2){if(_0x3c76d2){return _0x88ae59['status'](_0x464ab6)['json'](_0x3c76d2);}};}function respondWithFilteredResult(_0x2edc6a,_0x4b8dfb){return function(_0x191eaa){if(_0x191eaa){var _0x324f80=typeof _0x4b8dfb['offset']===_0x24e4('0x1c')&&typeof _0x4b8dfb[_0x24e4('0x1d')]===_0x24e4('0x1c');var _0x38eadd=_0x191eaa[_0x24e4('0x1e')];var _0x1b2257=_0x324f80?0x0:_0x4b8dfb[_0x24e4('0x1f')];var _0x5cce74=_0x324f80?_0x191eaa[_0x24e4('0x1e')]:_0x4b8dfb[_0x24e4('0x1f')]+_0x4b8dfb[_0x24e4('0x1d')];var _0x4ecb5b;if(_0x5cce74>=_0x38eadd){_0x5cce74=_0x38eadd;_0x4ecb5b=0xc8;}else{_0x4ecb5b=0xce;}_0x2edc6a[_0x24e4('0x20')](_0x4ecb5b);return _0x2edc6a[_0x24e4('0x21')](_0x24e4('0x22'),_0x1b2257+'-'+_0x5cce74+'/'+_0x38eadd)[_0x24e4('0x23')](_0x191eaa);}return null;};}function patchUpdates(_0x167baf){return function(_0x4e5df2){try{jsonpatch[_0x24e4('0x24')](_0x4e5df2,_0x167baf,!![]);}catch(_0x5e4bb6){return BPromise['reject'](_0x5e4bb6);}return _0x4e5df2['save']();};}function saveUpdates(_0x49c103,_0x192cc0){return function(_0x500b4d){if(_0x500b4d){return _0x500b4d[_0x24e4('0x25')](_0x49c103)[_0x24e4('0x26')](function(_0x194495){return _0x194495;});}return null;};}function removeEntity(_0xb3b32b,_0x4c356b){return function(_0x3f9d51){if(_0x3f9d51){return _0x3f9d51[_0x24e4('0x27')]()[_0x24e4('0x26')](function(){_0xb3b32b[_0x24e4('0x20')](0xcc)[_0x24e4('0x1b')]();});}};}function handleEntityNotFound(_0x181be1,_0x3c0798){return function(_0x147e8a){if(!_0x147e8a){_0x181be1['sendStatus'](0x194);}return _0x147e8a;};}function handleError(_0x3e5c86,_0x4c5c92){_0x4c5c92=_0x4c5c92||0x1f4;return function(_0x23e001){logger[_0x24e4('0x28')](_0x23e001[_0x24e4('0x29')]);if(_0x23e001[_0x24e4('0x2a')]){delete _0x23e001['name'];}_0x3e5c86[_0x24e4('0x20')](_0x4c5c92)[_0x24e4('0x2b')](_0x23e001);};}exports[_0x24e4('0x2c')]=function(_0x4d4ac1,_0x1db1d8){var _0x29da19={},_0x28cff9={},_0x12e140={'count':0x0,'rows':[]};var _0x2bff40=_[_0x24e4('0x2d')](db['Automation'][_0x24e4('0x2e')],function(_0x4360bd){return{'name':_0x4360bd['fieldName'],'type':_0x4360bd['type'][_0x24e4('0x2f')]};});_0x28cff9['model']=_[_0x24e4('0x2d')](_0x2bff40,_0x24e4('0x2a'));_0x28cff9['query']=_[_0x24e4('0x30')](_0x4d4ac1['query']);_0x28cff9[_0x24e4('0x31')]=_['intersection'](_0x28cff9['model'],_0x28cff9[_0x24e4('0x32')]);_0x29da19[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x28cff9[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x36')]));_0x29da19[_0x24e4('0x33')]=_0x29da19[_0x24e4('0x33')][_0x24e4('0x37')]?_0x29da19[_0x24e4('0x33')]:_0x28cff9[_0x24e4('0x35')];if(!_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x38')](_0x24e4('0x39'))){_0x29da19[_0x24e4('0x1d')]=qs[_0x24e4('0x1d')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x29da19['offset']=qs[_0x24e4('0x1f')](_0x4d4ac1['query'][_0x24e4('0x1f')]);}_0x29da19[_0x24e4('0x3a')]=qs[_0x24e4('0x3b')](_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x29da19['where']=qs[_0x24e4('0x31')](_[_0x24e4('0x3c')](_0x4d4ac1[_0x24e4('0x32')],_0x28cff9[_0x24e4('0x31')]),_0x2bff40);if(_0x4d4ac1[_0x24e4('0x32')]['filter']){_0x29da19['where']=_[_0x24e4('0x3d')](_0x29da19['where'],{'$or':_['map'](_0x2bff40,function(_0x5caba2){if(_0x5caba2[_0x24e4('0x3e')]!==_0x24e4('0x3f')){var _0x4ebfc2={};_0x4ebfc2[_0x5caba2[_0x24e4('0x2a')]]={'$like':'%'+_0x4d4ac1[_0x24e4('0x32')][_0x24e4('0x40')]+'%'};return _0x4ebfc2;}})});}_0x29da19=_['merge']({},_0x29da19,_0x4d4ac1[_0x24e4('0x41')]);var _0x2d8800={'where':_0x29da19[_0x24e4('0x42')]};return db[_0x24e4('0x43')][_0x24e4('0x1e')](_0x2d8800)[_0x24e4('0x26')](function(_0x32653d){_0x12e140[_0x24e4('0x1e')]=_0x32653d;if(_0x4d4ac1['query']['includeAll']){_0x29da19['include']=[{'all':!![]}];}return db['Automation'][_0x24e4('0x44')](_0x29da19);})[_0x24e4('0x26')](function(_0x2d53bc){_0x12e140[_0x24e4('0x45')]=_0x2d53bc;return _0x12e140;})[_0x24e4('0x26')](respondWithFilteredResult(_0x1db1d8,_0x29da19))[_0x24e4('0x46')](handleError(_0x1db1d8,null));};exports[_0x24e4('0x47')]=function(_0x221a8f,_0x3f316c){var _0x22d755={'raw':![],'where':{'id':_0x221a8f[_0x24e4('0x48')]['id']}},_0x2753be={};_0x2753be[_0x24e4('0x35')]=_[_0x24e4('0x30')](db['Automation'][_0x24e4('0x2e')]);_0x2753be['query']=_['keys'](_0x221a8f['query']);_0x2753be[_0x24e4('0x31')]=_['intersection'](_0x2753be[_0x24e4('0x35')],_0x2753be[_0x24e4('0x32')]);_0x22d755[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x2753be[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0x221a8f['query'][_0x24e4('0x36')]));_0x22d755[_0x24e4('0x33')]=_0x22d755['attributes']['length']?_0x22d755[_0x24e4('0x33')]:_0x2753be[_0x24e4('0x35')];if(_0x221a8f[_0x24e4('0x32')][_0x24e4('0x49')]){_0x22d755[_0x24e4('0x4a')]=[{'all':!![]}];}_0x22d755=_[_0x24e4('0x3d')]({},_0x22d755,_0x221a8f['options']);return db['Automation'][_0x24e4('0x4b')](_0x22d755)[_0x24e4('0x26')](handleEntityNotFound(_0x3f316c,null))[_0x24e4('0x26')](respondWithResult(_0x3f316c,null))[_0x24e4('0x46')](handleError(_0x3f316c,null));};exports[_0x24e4('0x4c')]=function(_0x3d4a39,_0x2a20fe){return db[_0x24e4('0x43')][_0x24e4('0x4c')](_0x3d4a39[_0x24e4('0x4d')],{})['then'](respondWithResult(_0x2a20fe,0xc9))[_0x24e4('0x46')](handleError(_0x2a20fe,null));};exports[_0x24e4('0x25')]=function(_0x4399d5,_0x34b01c){if(_0x4399d5[_0x24e4('0x4d')]['id']){delete _0x4399d5[_0x24e4('0x4d')]['id'];}return db[_0x24e4('0x43')][_0x24e4('0x4b')]({'where':{'id':_0x4399d5[_0x24e4('0x48')]['id']}})['then'](handleEntityNotFound(_0x34b01c,null))[_0x24e4('0x26')](saveUpdates(_0x4399d5[_0x24e4('0x4d')],null))[_0x24e4('0x26')](respondWithResult(_0x34b01c,null))[_0x24e4('0x46')](handleError(_0x34b01c,null));};exports[_0x24e4('0x27')]=function(_0x6d839c,_0x1ef67e){return db[_0x24e4('0x43')][_0x24e4('0x4b')]({'where':{'id':_0x6d839c[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x1ef67e,null))[_0x24e4('0x26')](removeEntity(_0x1ef67e,null))[_0x24e4('0x46')](handleError(_0x1ef67e,null));};exports[_0x24e4('0x4e')]=function(_0x5c4761,_0x40f5b9,_0xd07942){return db[_0x24e4('0x4f')][_0x24e4('0x4b')]({'where':{'id':_0x5c4761[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x40f5b9,null))[_0x24e4('0x26')](function(_0x34b31c){if(_0x34b31c){return _0x34b31c[_0x24e4('0x4e')](_0x5c4761[_0x24e4('0x4d')][_0x24e4('0x50')],_[_0x24e4('0x51')](_0x5c4761['body'],[_0x24e4('0x50'),'id'])||{});}})[_0x24e4('0x26')](respondWithResult(_0x40f5b9,null))[_0x24e4('0x46')](handleError(_0x40f5b9,null));};exports[_0x24e4('0x52')]=function(_0x17167f,_0x660639,_0x559d3b){var _0x476cc5={};var _0x4cc03d={};var _0x44707f;var _0x3d9c0c;return db[_0x24e4('0x43')][_0x24e4('0x53')]({'where':{'id':_0x17167f['params']['id']}})['then'](handleEntityNotFound(_0x660639,null))[_0x24e4('0x26')](function(_0x5d43ff){if(_0x5d43ff){_0x44707f=_0x5d43ff;_0x4cc03d[_0x24e4('0x35')]=_[_0x24e4('0x30')](db['Condition'][_0x24e4('0x2e')]);_0x4cc03d['query']=_[_0x24e4('0x30')](_0x17167f[_0x24e4('0x32')]);_0x4cc03d[_0x24e4('0x31')]=_['intersection'](_0x4cc03d['model'],_0x4cc03d[_0x24e4('0x32')]);_0x476cc5[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x4cc03d['model'],qs[_0x24e4('0x36')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x36')]));_0x476cc5['attributes']=_0x476cc5[_0x24e4('0x33')][_0x24e4('0x37')]?_0x476cc5[_0x24e4('0x33')]:_0x4cc03d[_0x24e4('0x35')];_0x476cc5[_0x24e4('0x3a')]=qs['sort'](_0x17167f[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x476cc5['where']=qs[_0x24e4('0x31')](_[_0x24e4('0x3c')](_0x17167f['query'],_0x4cc03d[_0x24e4('0x31')]));if(_0x17167f[_0x24e4('0x32')][_0x24e4('0x40')]){_0x476cc5[_0x24e4('0x42')]=_[_0x24e4('0x3d')](_0x476cc5[_0x24e4('0x42')],{'$or':_[_0x24e4('0x2d')](_0x476cc5['attributes'],function(_0x3f3a4e){var _0xec789d={};_0xec789d[_0x3f3a4e]={'$like':'%'+_0x17167f[_0x24e4('0x32')]['filter']+'%'};return _0xec789d;})});}_0x476cc5=_[_0x24e4('0x3d')]({},_0x476cc5,_0x17167f[_0x24e4('0x41')]);return _0x44707f['getConditions'](_0x476cc5);}})[_0x24e4('0x26')](function(_0x3c16f4){if(_0x3c16f4){_0x3d9c0c=_0x3c16f4[_0x24e4('0x37')];if(!_0x17167f['query'][_0x24e4('0x38')]('nolimit')){_0x476cc5[_0x24e4('0x1d')]=qs[_0x24e4('0x1d')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x476cc5[_0x24e4('0x1f')]=qs[_0x24e4('0x1f')](_0x17167f[_0x24e4('0x32')][_0x24e4('0x1f')]);}return _0x44707f['getConditions'](_0x476cc5);}})['then'](function(_0x1fbafa){if(_0x1fbafa){return _0x1fbafa?{'count':_0x3d9c0c,'rows':_0x1fbafa}:null;}})[_0x24e4('0x26')](respondWithResult(_0x660639,null))[_0x24e4('0x46')](handleError(_0x660639,null));};exports[_0x24e4('0x54')]=function(_0x47d78c,_0x9baa7c,_0xba869f){return db[_0x24e4('0x55')][_0x24e4('0x4b')]({'where':{'id':_0x47d78c[_0x24e4('0x48')]['id']}})[_0x24e4('0x26')](handleEntityNotFound(_0x9baa7c,null))[_0x24e4('0x26')](function(_0xb09d39){if(_0xb09d39){return _0xb09d39[_0x24e4('0x54')](_0x47d78c[_0x24e4('0x4d')][_0x24e4('0x50')],_[_0x24e4('0x51')](_0x47d78c[_0x24e4('0x4d')],[_0x24e4('0x50'),'id'])||{});}})[_0x24e4('0x26')](respondWithResult(_0x9baa7c,null))[_0x24e4('0x46')](handleError(_0x9baa7c,null));};exports[_0x24e4('0x56')]=function(_0xf2ff20,_0x37bd14,_0x286f46){var _0x548241={};var _0x351a00={};var _0x10ea80;var _0x52fce7;return db[_0x24e4('0x43')][_0x24e4('0x53')]({'where':{'id':_0xf2ff20['params']['id']}})['then'](handleEntityNotFound(_0x37bd14,null))[_0x24e4('0x26')](function(_0xcab554){if(_0xcab554){_0x10ea80=_0xcab554;_0x351a00['model']=_[_0x24e4('0x30')](db[_0x24e4('0x55')][_0x24e4('0x2e')]);_0x351a00[_0x24e4('0x32')]=_[_0x24e4('0x30')](_0xf2ff20[_0x24e4('0x32')]);_0x351a00[_0x24e4('0x31')]=_['intersection'](_0x351a00['model'],_0x351a00[_0x24e4('0x32')]);_0x548241[_0x24e4('0x33')]=_[_0x24e4('0x34')](_0x351a00[_0x24e4('0x35')],qs[_0x24e4('0x36')](_0xf2ff20[_0x24e4('0x32')]['fields']));_0x548241[_0x24e4('0x33')]=_0x548241[_0x24e4('0x33')]['length']?_0x548241['attributes']:_0x351a00[_0x24e4('0x35')];_0x548241[_0x24e4('0x3a')]=qs['sort'](_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x3b')]);_0x548241[_0x24e4('0x42')]=qs[_0x24e4('0x31')](_['pick'](_0xf2ff20[_0x24e4('0x32')],_0x351a00[_0x24e4('0x31')]));if(_0xf2ff20['query'][_0x24e4('0x40')]){_0x548241['where']=_[_0x24e4('0x3d')](_0x548241[_0x24e4('0x42')],{'$or':_[_0x24e4('0x2d')](_0x548241['attributes'],function(_0x16ec10){var _0x26aea2={};_0x26aea2[_0x16ec10]={'$like':'%'+_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x40')]+'%'};return _0x26aea2;})});}_0x548241=_[_0x24e4('0x3d')]({},_0x548241,_0xf2ff20[_0x24e4('0x41')]);return _0x10ea80['getActions'](_0x548241);}})[_0x24e4('0x26')](function(_0x480a58){if(_0x480a58){_0x52fce7=_0x480a58[_0x24e4('0x37')];if(!_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x38')](_0x24e4('0x39'))){_0x548241['limit']=qs[_0x24e4('0x1d')](_0xf2ff20[_0x24e4('0x32')][_0x24e4('0x1d')]);_0x548241['offset']=qs[_0x24e4('0x1f')](_0xf2ff20[_0x24e4('0x32')]['offset']);}return _0x10ea80[_0x24e4('0x56')](_0x548241);}})[_0x24e4('0x26')](function(_0x2b62c5){if(_0x2b62c5){return _0x2b62c5?{'count':_0x52fce7,'rows':_0x2b62c5}:null;}})['then'](respondWithResult(_0x37bd14,null))['catch'](handleError(_0x37bd14,null));};
\ No newline at end of file
+var _0x7b26=['fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','then','destroy','error','name','send','index','map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','where','merge','Automation','includeAll','include','findAll','rows','catch','rawAttributes','options','find','create','body','params','addConditions','Condition','omit','ids','findOne','sort','getConditions','addActions','Action','getActions','rimraf'];(function(_0x87d497,_0x4ef689){var _0x15d020=function(_0x1c208b){while(--_0x1c208b){_0x87d497['push'](_0x87d497['shift']());}};_0x15d020(++_0x4ef689);}(_0x7b26,0xe6));var _0x67b2=function(_0x240a73,_0xdac4a2){_0x240a73=_0x240a73-0x0;var _0x1acaf0=_0x7b26[_0x240a73];return _0x1acaf0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x67b2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x67b2('0x1'));var rp=require(_0x67b2('0x2'));var moment=require(_0x67b2('0x3'));var BPromise=require(_0x67b2('0x4'));var Mustache=require('mustache');var util=require(_0x67b2('0x5'));var path=require(_0x67b2('0x6'));var sox=require(_0x67b2('0x7'));var csv=require(_0x67b2('0x8'));var ejs=require(_0x67b2('0x9'));var fs=require('fs');var fs_extra=require(_0x67b2('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x67b2('0xb'));var jsforce=require(_0x67b2('0xc'));var deskjs=require(_0x67b2('0xd'));var toCsv=require(_0x67b2('0x8'));var querystring=require(_0x67b2('0xe'));var Papa=require('papaparse');var Redis=require(_0x67b2('0xf'));var authService=require(_0x67b2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x67b2('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x67b2('0x12'));var licenseUtil=require(_0x67b2('0x13'));var db=require(_0x67b2('0x14'))['db'];function respondWithStatusCode(_0x5c0f07,_0xa2a0b1){_0xa2a0b1=_0xa2a0b1||0xcc;return function(_0x4c0ec7){if(_0x4c0ec7){return _0x5c0f07['sendStatus'](_0xa2a0b1);}return _0x5c0f07[_0x67b2('0x15')](_0xa2a0b1)[_0x67b2('0x16')]();};}function respondWithResult(_0x19ddf9,_0x972ce4){_0x972ce4=_0x972ce4||0xc8;return function(_0x532d3a){if(_0x532d3a){return _0x19ddf9[_0x67b2('0x15')](_0x972ce4)[_0x67b2('0x17')](_0x532d3a);}};}function respondWithFilteredResult(_0x5df31f,_0x2ea597){return function(_0x55e2e0){if(_0x55e2e0){var _0x5b3445=typeof _0x2ea597['offset']===_0x67b2('0x18')&&typeof _0x2ea597[_0x67b2('0x19')]===_0x67b2('0x18');var _0x1a78e3=_0x55e2e0[_0x67b2('0x1a')];var _0x5079ff=_0x5b3445?0x0:_0x2ea597[_0x67b2('0x1b')];var _0x45d9a2=_0x5b3445?_0x55e2e0[_0x67b2('0x1a')]:_0x2ea597[_0x67b2('0x1b')]+_0x2ea597[_0x67b2('0x19')];var _0x14fabf;if(_0x45d9a2>=_0x1a78e3){_0x45d9a2=_0x1a78e3;_0x14fabf=0xc8;}else{_0x14fabf=0xce;}_0x5df31f['status'](_0x14fabf);return _0x5df31f['set'](_0x67b2('0x1c'),_0x5079ff+'-'+_0x45d9a2+'/'+_0x1a78e3)[_0x67b2('0x17')](_0x55e2e0);}return null;};}function patchUpdates(_0x3e6960){return function(_0x2f66c7){try{jsonpatch[_0x67b2('0x1d')](_0x2f66c7,_0x3e6960,!![]);}catch(_0x34c4c5){return BPromise[_0x67b2('0x1e')](_0x34c4c5);}return _0x2f66c7['save']();};}function saveUpdates(_0x569d30,_0x27fd81){return function(_0x2181f5){if(_0x2181f5){return _0x2181f5['update'](_0x569d30)[_0x67b2('0x1f')](function(_0x15941e){return _0x15941e;});}return null;};}function removeEntity(_0x1c253a,_0x33c4f5){return function(_0x434451){if(_0x434451){return _0x434451[_0x67b2('0x20')]()['then'](function(){_0x1c253a['status'](0xcc)[_0x67b2('0x16')]();});}};}function handleEntityNotFound(_0x1ff361,_0x1c730c){return function(_0x538fb8){if(!_0x538fb8){_0x1ff361['sendStatus'](0x194);}return _0x538fb8;};}function handleError(_0x4112f8,_0x1adcbb){_0x1adcbb=_0x1adcbb||0x1f4;return function(_0x3ff64a){logger[_0x67b2('0x21')](_0x3ff64a['stack']);if(_0x3ff64a[_0x67b2('0x22')]){delete _0x3ff64a['name'];}_0x4112f8[_0x67b2('0x15')](_0x1adcbb)[_0x67b2('0x23')](_0x3ff64a);};}exports[_0x67b2('0x24')]=function(_0x45db84,_0x1f9b37){var _0x737bc7={},_0x1d5b28={},_0x103bda={'count':0x0,'rows':[]};var _0x5af60e=_[_0x67b2('0x25')](db['Automation']['rawAttributes'],function(_0x2c7dd0){return{'name':_0x2c7dd0[_0x67b2('0x26')],'type':_0x2c7dd0[_0x67b2('0x27')]['key']};});_0x1d5b28[_0x67b2('0x28')]=_[_0x67b2('0x25')](_0x5af60e,_0x67b2('0x22'));_0x1d5b28[_0x67b2('0x29')]=_[_0x67b2('0x2a')](_0x45db84[_0x67b2('0x29')]);_0x1d5b28[_0x67b2('0x2b')]=_[_0x67b2('0x2c')](_0x1d5b28[_0x67b2('0x28')],_0x1d5b28[_0x67b2('0x29')]);_0x737bc7[_0x67b2('0x2d')]=_['intersection'](_0x1d5b28[_0x67b2('0x28')],qs[_0x67b2('0x2e')](_0x45db84[_0x67b2('0x29')][_0x67b2('0x2e')]));_0x737bc7[_0x67b2('0x2d')]=_0x737bc7[_0x67b2('0x2d')][_0x67b2('0x2f')]?_0x737bc7[_0x67b2('0x2d')]:_0x1d5b28['model'];if(!_0x45db84['query'][_0x67b2('0x30')](_0x67b2('0x31'))){_0x737bc7[_0x67b2('0x19')]=qs['limit'](_0x45db84['query'][_0x67b2('0x19')]);_0x737bc7[_0x67b2('0x1b')]=qs['offset'](_0x45db84['query']['offset']);}_0x737bc7[_0x67b2('0x32')]=qs['sort'](_0x45db84[_0x67b2('0x29')]['sort']);_0x737bc7['where']=qs[_0x67b2('0x2b')](_[_0x67b2('0x33')](_0x45db84['query'],_0x1d5b28[_0x67b2('0x2b')]),_0x5af60e);if(_0x45db84[_0x67b2('0x29')][_0x67b2('0x34')]){_0x737bc7[_0x67b2('0x35')]=_[_0x67b2('0x36')](_0x737bc7[_0x67b2('0x35')],{'$or':_[_0x67b2('0x25')](_0x5af60e,function(_0x39504b){if(_0x39504b[_0x67b2('0x27')]!=='VIRTUAL'){var _0x418a03={};_0x418a03[_0x39504b[_0x67b2('0x22')]]={'$like':'%'+_0x45db84[_0x67b2('0x29')]['filter']+'%'};return _0x418a03;}})});}_0x737bc7=_[_0x67b2('0x36')]({},_0x737bc7,_0x45db84['options']);var _0x3d7fa9={'where':_0x737bc7[_0x67b2('0x35')]};return db[_0x67b2('0x37')][_0x67b2('0x1a')](_0x3d7fa9)['then'](function(_0x1e999b){_0x103bda[_0x67b2('0x1a')]=_0x1e999b;if(_0x45db84[_0x67b2('0x29')][_0x67b2('0x38')]){_0x737bc7[_0x67b2('0x39')]=[{'all':!![]}];}return db['Automation'][_0x67b2('0x3a')](_0x737bc7);})[_0x67b2('0x1f')](function(_0x41208c){_0x103bda[_0x67b2('0x3b')]=_0x41208c;return _0x103bda;})[_0x67b2('0x1f')](respondWithFilteredResult(_0x1f9b37,_0x737bc7))[_0x67b2('0x3c')](handleError(_0x1f9b37,null));};exports['show']=function(_0x3b7515,_0x37b1e6){var _0x25012a={'raw':![],'where':{'id':_0x3b7515['params']['id']}},_0x40fba5={};_0x40fba5['model']=_[_0x67b2('0x2a')](db[_0x67b2('0x37')][_0x67b2('0x3d')]);_0x40fba5[_0x67b2('0x29')]=_[_0x67b2('0x2a')](_0x3b7515[_0x67b2('0x29')]);_0x40fba5[_0x67b2('0x2b')]=_[_0x67b2('0x2c')](_0x40fba5['model'],_0x40fba5[_0x67b2('0x29')]);_0x25012a[_0x67b2('0x2d')]=_['intersection'](_0x40fba5[_0x67b2('0x28')],qs[_0x67b2('0x2e')](_0x3b7515[_0x67b2('0x29')][_0x67b2('0x2e')]));_0x25012a['attributes']=_0x25012a['attributes']['length']?_0x25012a[_0x67b2('0x2d')]:_0x40fba5['model'];if(_0x3b7515[_0x67b2('0x29')][_0x67b2('0x38')]){_0x25012a[_0x67b2('0x39')]=[{'all':!![]}];}_0x25012a=_[_0x67b2('0x36')]({},_0x25012a,_0x3b7515[_0x67b2('0x3e')]);return db[_0x67b2('0x37')][_0x67b2('0x3f')](_0x25012a)[_0x67b2('0x1f')](handleEntityNotFound(_0x37b1e6,null))['then'](respondWithResult(_0x37b1e6,null))[_0x67b2('0x3c')](handleError(_0x37b1e6,null));};exports[_0x67b2('0x40')]=function(_0x1b99ac,_0x502a26){return db[_0x67b2('0x37')][_0x67b2('0x40')](_0x1b99ac[_0x67b2('0x41')],{})[_0x67b2('0x1f')](respondWithResult(_0x502a26,0xc9))['catch'](handleError(_0x502a26,null));};exports['update']=function(_0x2fb111,_0x2e6ce2){if(_0x2fb111[_0x67b2('0x41')]['id']){delete _0x2fb111[_0x67b2('0x41')]['id'];}return db[_0x67b2('0x37')][_0x67b2('0x3f')]({'where':{'id':_0x2fb111[_0x67b2('0x42')]['id']}})[_0x67b2('0x1f')](handleEntityNotFound(_0x2e6ce2,null))['then'](saveUpdates(_0x2fb111[_0x67b2('0x41')],null))[_0x67b2('0x1f')](respondWithResult(_0x2e6ce2,null))['catch'](handleError(_0x2e6ce2,null));};exports[_0x67b2('0x20')]=function(_0x488357,_0x6f9011){return db[_0x67b2('0x37')][_0x67b2('0x3f')]({'where':{'id':_0x488357[_0x67b2('0x42')]['id']}})['then'](handleEntityNotFound(_0x6f9011,null))[_0x67b2('0x1f')](removeEntity(_0x6f9011,null))[_0x67b2('0x3c')](handleError(_0x6f9011,null));};exports[_0x67b2('0x43')]=function(_0x924b5e,_0x21e19c,_0x3ec5b8){return db[_0x67b2('0x44')][_0x67b2('0x3f')]({'where':{'id':_0x924b5e[_0x67b2('0x42')]['id']}})[_0x67b2('0x1f')](handleEntityNotFound(_0x21e19c,null))[_0x67b2('0x1f')](function(_0x2adf98){if(_0x2adf98){return _0x2adf98[_0x67b2('0x43')](_0x924b5e['body']['ids'],_[_0x67b2('0x45')](_0x924b5e['body'],[_0x67b2('0x46'),'id'])||{});}})[_0x67b2('0x1f')](respondWithResult(_0x21e19c,null))[_0x67b2('0x3c')](handleError(_0x21e19c,null));};exports['getConditions']=function(_0x36ce7b,_0x44ee31,_0x53bb33){var _0x4936b8={};var _0x1b37f8={};var _0x5c243c;var _0x8e1810;return db['Automation'][_0x67b2('0x47')]({'where':{'id':_0x36ce7b[_0x67b2('0x42')]['id']}})[_0x67b2('0x1f')](handleEntityNotFound(_0x44ee31,null))[_0x67b2('0x1f')](function(_0x3b3128){if(_0x3b3128){_0x5c243c=_0x3b3128;_0x1b37f8['model']=_[_0x67b2('0x2a')](db[_0x67b2('0x44')][_0x67b2('0x3d')]);_0x1b37f8[_0x67b2('0x29')]=_[_0x67b2('0x2a')](_0x36ce7b[_0x67b2('0x29')]);_0x1b37f8[_0x67b2('0x2b')]=_['intersection'](_0x1b37f8[_0x67b2('0x28')],_0x1b37f8[_0x67b2('0x29')]);_0x4936b8[_0x67b2('0x2d')]=_[_0x67b2('0x2c')](_0x1b37f8[_0x67b2('0x28')],qs['fields'](_0x36ce7b[_0x67b2('0x29')][_0x67b2('0x2e')]));_0x4936b8[_0x67b2('0x2d')]=_0x4936b8['attributes'][_0x67b2('0x2f')]?_0x4936b8[_0x67b2('0x2d')]:_0x1b37f8['model'];_0x4936b8[_0x67b2('0x32')]=qs[_0x67b2('0x48')](_0x36ce7b[_0x67b2('0x29')][_0x67b2('0x48')]);_0x4936b8['where']=qs[_0x67b2('0x2b')](_[_0x67b2('0x33')](_0x36ce7b[_0x67b2('0x29')],_0x1b37f8['filters']));if(_0x36ce7b[_0x67b2('0x29')][_0x67b2('0x34')]){_0x4936b8['where']=_[_0x67b2('0x36')](_0x4936b8['where'],{'$or':_['map'](_0x4936b8['attributes'],function(_0x15ada3){var _0x3754f6={};_0x3754f6[_0x15ada3]={'$like':'%'+_0x36ce7b[_0x67b2('0x29')]['filter']+'%'};return _0x3754f6;})});}_0x4936b8=_[_0x67b2('0x36')]({},_0x4936b8,_0x36ce7b[_0x67b2('0x3e')]);return _0x5c243c[_0x67b2('0x49')](_0x4936b8);}})['then'](function(_0x558cff){if(_0x558cff){_0x8e1810=_0x558cff[_0x67b2('0x2f')];if(!_0x36ce7b[_0x67b2('0x29')]['hasOwnProperty'](_0x67b2('0x31'))){_0x4936b8[_0x67b2('0x19')]=qs[_0x67b2('0x19')](_0x36ce7b[_0x67b2('0x29')][_0x67b2('0x19')]);_0x4936b8[_0x67b2('0x1b')]=qs[_0x67b2('0x1b')](_0x36ce7b['query'][_0x67b2('0x1b')]);}return _0x5c243c['getConditions'](_0x4936b8);}})[_0x67b2('0x1f')](function(_0x78788){if(_0x78788){return _0x78788?{'count':_0x8e1810,'rows':_0x78788}:null;}})[_0x67b2('0x1f')](respondWithResult(_0x44ee31,null))['catch'](handleError(_0x44ee31,null));};exports[_0x67b2('0x4a')]=function(_0x15df1e,_0x2eacb6,_0x5ba8f4){return db[_0x67b2('0x4b')][_0x67b2('0x3f')]({'where':{'id':_0x15df1e[_0x67b2('0x42')]['id']}})[_0x67b2('0x1f')](handleEntityNotFound(_0x2eacb6,null))[_0x67b2('0x1f')](function(_0x55e3a5){if(_0x55e3a5){return _0x55e3a5[_0x67b2('0x4a')](_0x15df1e[_0x67b2('0x41')][_0x67b2('0x46')],_[_0x67b2('0x45')](_0x15df1e['body'],[_0x67b2('0x46'),'id'])||{});}})[_0x67b2('0x1f')](respondWithResult(_0x2eacb6,null))[_0x67b2('0x3c')](handleError(_0x2eacb6,null));};exports['getActions']=function(_0x2a17e1,_0x2aca4c,_0x22bbca){var _0x28b133={};var _0x3c181e={};var _0x44a881;var _0x5a1977;return db[_0x67b2('0x37')]['findOne']({'where':{'id':_0x2a17e1['params']['id']}})['then'](handleEntityNotFound(_0x2aca4c,null))[_0x67b2('0x1f')](function(_0x3c7061){if(_0x3c7061){_0x44a881=_0x3c7061;_0x3c181e[_0x67b2('0x28')]=_[_0x67b2('0x2a')](db['Action']['rawAttributes']);_0x3c181e[_0x67b2('0x29')]=_[_0x67b2('0x2a')](_0x2a17e1[_0x67b2('0x29')]);_0x3c181e[_0x67b2('0x2b')]=_[_0x67b2('0x2c')](_0x3c181e[_0x67b2('0x28')],_0x3c181e[_0x67b2('0x29')]);_0x28b133[_0x67b2('0x2d')]=_[_0x67b2('0x2c')](_0x3c181e['model'],qs[_0x67b2('0x2e')](_0x2a17e1[_0x67b2('0x29')][_0x67b2('0x2e')]));_0x28b133['attributes']=_0x28b133[_0x67b2('0x2d')][_0x67b2('0x2f')]?_0x28b133[_0x67b2('0x2d')]:_0x3c181e[_0x67b2('0x28')];_0x28b133[_0x67b2('0x32')]=qs[_0x67b2('0x48')](_0x2a17e1['query'][_0x67b2('0x48')]);_0x28b133[_0x67b2('0x35')]=qs['filters'](_[_0x67b2('0x33')](_0x2a17e1[_0x67b2('0x29')],_0x3c181e[_0x67b2('0x2b')]));if(_0x2a17e1[_0x67b2('0x29')][_0x67b2('0x34')]){_0x28b133[_0x67b2('0x35')]=_['merge'](_0x28b133[_0x67b2('0x35')],{'$or':_[_0x67b2('0x25')](_0x28b133[_0x67b2('0x2d')],function(_0x5328b0){var _0x2f62df={};_0x2f62df[_0x5328b0]={'$like':'%'+_0x2a17e1[_0x67b2('0x29')][_0x67b2('0x34')]+'%'};return _0x2f62df;})});}_0x28b133=_[_0x67b2('0x36')]({},_0x28b133,_0x2a17e1[_0x67b2('0x3e')]);return _0x44a881['getActions'](_0x28b133);}})[_0x67b2('0x1f')](function(_0x5c2cd5){if(_0x5c2cd5){_0x5a1977=_0x5c2cd5[_0x67b2('0x2f')];if(!_0x2a17e1[_0x67b2('0x29')][_0x67b2('0x30')](_0x67b2('0x31'))){_0x28b133[_0x67b2('0x19')]=qs[_0x67b2('0x19')](_0x2a17e1['query'][_0x67b2('0x19')]);_0x28b133[_0x67b2('0x1b')]=qs[_0x67b2('0x1b')](_0x2a17e1[_0x67b2('0x29')][_0x67b2('0x1b')]);}return _0x44a881[_0x67b2('0x4c')](_0x28b133);}})[_0x67b2('0x1f')](function(_0x164e8a){if(_0x164e8a){return _0x164e8a?{'count':_0x5a1977,'rows':_0x164e8a}:null;}})[_0x67b2('0x1f')](respondWithResult(_0x2aca4c,null))['catch'](handleError(_0x2aca4c,null));};
\ No newline at end of file
index 343738c..077550d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7dc=['define','Automation','tools_automations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd7dc,0x161));var _0xcd7d=function(_0x568496,_0x565afd){_0x568496=_0x568496-0x0;var _0x26c5c1=_0xd7dc[_0x568496];return _0x26c5c1;};'use strict';var _=require(_0xcd7d('0x0'));var util=require(_0xcd7d('0x1'));var logger=require(_0xcd7d('0x2'))('api');var moment=require(_0xcd7d('0x3'));var BPromise=require(_0xcd7d('0x4'));var rp=require(_0xcd7d('0x5'));var fs=require('fs');var path=require(_0xcd7d('0x6'));var rimraf=require(_0xcd7d('0x7'));var config=require(_0xcd7d('0x8'));var attributes=require(_0xcd7d('0x9'));module[_0xcd7d('0xa')]=function(_0x3b32d2,_0x533b10){return _0x3b32d2[_0xcd7d('0xb')](_0xcd7d('0xc'),attributes,{'tableName':_0xcd7d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e27=['exports','define','tools_automations','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes'];(function(_0x12631f,_0xa9dae1){var _0x174eaf=function(_0x1346d9){while(--_0x1346d9){_0x12631f['push'](_0x12631f['shift']());}};_0x174eaf(++_0xa9dae1);}(_0x0e27,0x1c6));var _0x70e2=function(_0x448c09,_0x40cacc){_0x448c09=_0x448c09-0x0;var _0x3825cd=_0x0e27[_0x448c09];return _0x3825cd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x70e2('0x0'))(_0x70e2('0x1'));var moment=require('moment');var BPromise=require(_0x70e2('0x2'));var rp=require(_0x70e2('0x3'));var fs=require('fs');var path=require(_0x70e2('0x4'));var rimraf=require(_0x70e2('0x5'));var config=require(_0x70e2('0x6'));var attributes=require(_0x70e2('0x7'));module[_0x70e2('0x8')]=function(_0x3d28b0,_0x51ed8e){return _0x3d28b0[_0x70e2('0x9')]('Automation',attributes,{'tableName':_0x70e2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4040df9..3679190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b8=['client','http','request','then','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../config/logger','rpc'];(function(_0x1c0b91,_0x691caf){var _0x3d1ab4=function(_0x23b647){while(--_0x23b647){_0x1c0b91['push'](_0x1c0b91['shift']());}};_0x3d1ab4(++_0x691caf);}(_0x38b8,0x7f));var _0x838b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x38b8[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x838b('0x0'));var util=require('util');var moment=require(_0x838b('0x1'));var BPromise=require(_0x838b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x838b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x838b('0x4'))(_0x838b('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x838b('0x6')][_0x838b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5c516c,_0x2d3e96,_0x15184b){return new BPromise(function(_0x4b9530,_0x552245){return client[_0x838b('0x8')](_0x5c516c,_0x15184b)[_0x838b('0x9')](function(_0x31ba84){logger['info'](_0x838b('0xa'),_0x2d3e96,'request\x20sent');logger[_0x838b('0xb')](_0x838b('0xc'),_0x2d3e96,_0x838b('0xd'),JSON[_0x838b('0xe')](_0x31ba84));if(_0x31ba84[_0x838b('0xf')]){if(_0x31ba84[_0x838b('0xf')]['code']===0x1f4){logger[_0x838b('0xf')](_0x838b('0xa'),_0x2d3e96,_0x31ba84[_0x838b('0xf')][_0x838b('0x10')]);return _0x552245(_0x31ba84[_0x838b('0xf')][_0x838b('0x10')]);}logger[_0x838b('0xf')](_0x838b('0xa'),_0x2d3e96,_0x31ba84[_0x838b('0xf')]['message']);return _0x4b9530(_0x31ba84[_0x838b('0xf')]['message']);}else{logger['info']('Automation,\x20%s,\x20%s',_0x2d3e96,_0x838b('0xd'));_0x4b9530(_0x31ba84[_0x838b('0x11')][_0x838b('0x10')]);}})[_0x838b('0x12')](function(_0x94e893){logger['error'](_0x838b('0xa'),_0x2d3e96,_0x94e893);_0x552245(_0x94e893);});});}
\ No newline at end of file
+var _0x6fc2=['error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','rpc','../../config/environment','client','http','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5ee952,_0x301b80){var _0x25e485=function(_0x3a94d9){while(--_0x3a94d9){_0x5ee952['push'](_0x5ee952['shift']());}};_0x25e485(++_0x301b80);}(_0x6fc2,0x117));var _0x26fc=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x6fc2[_0x4a53d];return _0x27410e;};'use strict';var _=require(_0x26fc('0x0'));var util=require(_0x26fc('0x1'));var moment=require(_0x26fc('0x2'));var BPromise=require('bluebird');var rs=require(_0x26fc('0x3'));var fs=require('fs');var Redis=require(_0x26fc('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x26fc('0x5'));var config=require(_0x26fc('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x26fc('0x7')][_0x26fc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f5258,_0x3dcd63,_0x5c87f2){return new BPromise(function(_0x23c15a,_0x5616eb){return client['request'](_0x2f5258,_0x5c87f2)[_0x26fc('0x9')](function(_0x2ea728){logger[_0x26fc('0xa')]('Automation,\x20%s,\x20%s',_0x3dcd63,_0x26fc('0xb'));logger[_0x26fc('0xc')](_0x26fc('0xd'),_0x3dcd63,_0x26fc('0xb'),JSON[_0x26fc('0xe')](_0x2ea728));if(_0x2ea728[_0x26fc('0xf')]){if(_0x2ea728[_0x26fc('0xf')][_0x26fc('0x10')]===0x1f4){logger[_0x26fc('0xf')](_0x26fc('0x11'),_0x3dcd63,_0x2ea728[_0x26fc('0xf')][_0x26fc('0x12')]);return _0x5616eb(_0x2ea728[_0x26fc('0xf')][_0x26fc('0x12')]);}logger[_0x26fc('0xf')](_0x26fc('0x11'),_0x3dcd63,_0x2ea728['error'][_0x26fc('0x12')]);return _0x23c15a(_0x2ea728[_0x26fc('0xf')][_0x26fc('0x12')]);}else{logger[_0x26fc('0xa')](_0x26fc('0x11'),_0x3dcd63,_0x26fc('0xb'));_0x23c15a(_0x2ea728[_0x26fc('0x13')][_0x26fc('0x12')]);}})[_0x26fc('0x14')](function(_0x54f0e5){logger[_0x26fc('0xf')]('Automation,\x20%s,\x20%s',_0x3dcd63,_0x54f0e5);_0x5616eb(_0x54f0e5);});});}
\ No newline at end of file
index 610ff32..4aee898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x208d=['create','addConditions','addActions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index','/:id','show','isAuthenticated','getConditions','/:id/actions','getActions','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x208d,0xa4));var _0xd208=function(_0x59f066,_0x3d8a42){_0x59f066=_0x59f066-0x0;var _0x21187c=_0x208d[_0x59f066];return _0x21187c;};'use strict';var multer=require(_0xd208('0x0'));var util=require(_0xd208('0x1'));var path=require(_0xd208('0x2'));var timeout=require(_0xd208('0x3'));var express=require('express');var router=express[_0xd208('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd208('0x5'));var interaction=require(_0xd208('0x6'));var config=require(_0xd208('0x7'));var controller=require(_0xd208('0x8'));router[_0xd208('0x9')]('/',auth['isAuthenticated'](),controller[_0xd208('0xa')]);router[_0xd208('0x9')](_0xd208('0xb'),auth['isAuthenticated'](),controller[_0xd208('0xc')]);router[_0xd208('0x9')]('/:id/conditions',auth[_0xd208('0xd')](),controller[_0xd208('0xe')]);router['get'](_0xd208('0xf'),auth[_0xd208('0xd')](),controller[_0xd208('0x10')]);router[_0xd208('0x11')]('/',auth['isAuthenticated'](),controller[_0xd208('0x12')]);router[_0xd208('0x11')]('/:id/conditions',auth[_0xd208('0xd')](),controller[_0xd208('0x13')]);router[_0xd208('0x11')](_0xd208('0xf'),auth[_0xd208('0xd')](),controller[_0xd208('0x14')]);router[_0xd208('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xd208('0x16')]);router[_0xd208('0x17')](_0xd208('0xb'),auth[_0xd208('0xd')](),controller[_0xd208('0x18')]);module[_0xd208('0x19')]=router;
\ No newline at end of file
+var _0x3667=['index','/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions','addActions','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get','isAuthenticated'];(function(_0x97688b,_0x24a0aa){var _0x4e0ca4=function(_0x1820e3){while(--_0x1820e3){_0x97688b['push'](_0x97688b['shift']());}};_0x4e0ca4(++_0x24a0aa);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7366('0x0'));var util=require(_0x7366('0x1'));var path=require(_0x7366('0x2'));var timeout=require(_0x7366('0x3'));var express=require(_0x7366('0x4'));var router=express['Router']();var fs_extra=require(_0x7366('0x5'));var auth=require(_0x7366('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7366('0x7'));var controller=require(_0x7366('0x8'));router[_0x7366('0x9')]('/',auth[_0x7366('0xa')](),controller[_0x7366('0xb')]);router['get'](_0x7366('0xc'),auth[_0x7366('0xa')](),controller[_0x7366('0xd')]);router[_0x7366('0x9')](_0x7366('0xe'),auth[_0x7366('0xa')](),controller[_0x7366('0xf')]);router[_0x7366('0x9')](_0x7366('0x10'),auth[_0x7366('0xa')](),controller[_0x7366('0x11')]);router[_0x7366('0x12')]('/',auth[_0x7366('0xa')](),controller[_0x7366('0x13')]);router[_0x7366('0x12')](_0x7366('0xe'),auth[_0x7366('0xa')](),controller[_0x7366('0x14')]);router[_0x7366('0x12')](_0x7366('0x10'),auth[_0x7366('0xa')](),controller[_0x7366('0x15')]);router[_0x7366('0x16')](_0x7366('0xc'),auth[_0x7366('0xa')](),controller[_0x7366('0x17')]);router[_0x7366('0x18')](_0x7366('0xc'),auth['isAuthenticated'](),controller[_0x7366('0x19')]);module[_0x7366('0x1a')]=router;
\ No newline at end of file
index 477c024..70b8d8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff5=['Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ivr','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','never','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)'];(function(_0x108a4a,_0xa3df76){var _0x19cf70=function(_0x3eee4c){while(--_0x3eee4c){_0x108a4a['push'](_0x108a4a['shift']());}};_0x19cf70(++_0xa3df76);}(_0x7ff5,0xcd));var _0x57ff=function(_0x2baf56,_0x16fa1c){_0x2baf56=_0x2baf56-0x0;var _0x33657f=_0x7ff5[_0x2baf56];return _0x33657f;};'use strict';var Sequelize=require('sequelize');module[_0x57ff('0x0')]={'name':{'type':Sequelize[_0x57ff('0x1')],'unique':_0x57ff('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x57ff('0x3')),'allowNull':![],'defaultValue':_0x57ff('0x3')},'description':{'type':Sequelize[_0x57ff('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x57ff('0x4')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x57ff('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x57ff('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0x57ff('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x57ff('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x57ff('0x5')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xa')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x57ff('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x57ff('0xf')},'dialTimezone':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':_0x57ff('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x57ff('0x11')]('always',_0x57ff('0x12'),'onlyIfOpen'),'defaultValue':_0x57ff('0x13')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x57ff('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x57ff('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x57ff('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x57ff('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0x57ff('0x8')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x57ff('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x57ff('0x5')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x57ff('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x57ff('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x57ff('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x57ff('0x8')](0x9)[_0x57ff('0x5')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x57ff('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x57ff('0x11')](_0x57ff('0x1d'),_0x57ff('0x1e')),'defaultValue':_0x57ff('0x1d')},'dialPrefix':{'type':Sequelize[_0x57ff('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x57ff('0x1f')},'dialCutDigit':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x22')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x57ff('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x25')},'dialMachineMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)[_0x57ff('0x5')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x57ff('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x57ff('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x57ff('0x5')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x57ff('0x27')}};
\ No newline at end of file
+var _0x4a08=['#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','STRING','name','ENUM','BOOLEAN','INTEGER','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x648163,_0x241576){var _0x199d4d=function(_0x23055d){while(--_0x23055d){_0x648163['push'](_0x648163['shift']());}};_0x199d4d(++_0x241576);}(_0x4a08,0x11b));var _0x84a0=function(_0x41f9a7,_0x27ee8e){_0x41f9a7=_0x41f9a7-0x0;var _0x578c05=_0x4a08[_0x41f9a7];return _0x578c05;};'use strict';var Sequelize=require(_0x84a0('0x0'));module['exports']={'name':{'type':Sequelize[_0x84a0('0x1')],'unique':_0x84a0('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x84a0('0x3')]('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x84a0('0x1')]},'active':{'type':Sequelize[_0x84a0('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x84a0('0x5')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x84a0('0x6')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x84a0('0x5')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0xa')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x84a0('0xb')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'comment':_0x84a0('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x84a0('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x84a0('0xe')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x84a0('0x3')](_0x84a0('0xf'),_0x84a0('0x10'),'onlyIfOpen'),'defaultValue':_0x84a0('0xf')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x84a0('0x11')},'dialAMDInitialSilence':{'type':Sequelize[_0x84a0('0x5')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x84a0('0x12')},'dialAMDGreeting':{'type':Sequelize[_0x84a0('0x5')](0x9)[_0x84a0('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x84a0('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x84a0('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x84a0('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x84a0('0x5')](0x9)[_0x84a0('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x84a0('0x5')](0x9)[_0x84a0('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x84a0('0x5')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x84a0('0x15')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x84a0('0x5')](0x9)[_0x84a0('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x84a0('0x16')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x84a0('0x17'),_0x84a0('0x18')),'defaultValue':_0x84a0('0x17')},'dialPrefix':{'type':Sequelize[_0x84a0('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x84a0('0x19')},'dialCutDigit':{'type':Sequelize[_0x84a0('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x84a0('0x1a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x1b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x1c')},'dialDropRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x84a0('0x1d')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x1e')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x84a0('0x1f')},'dialMachineMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x20')},'dialMachineRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x84a0('0x5')](0x3)[_0x84a0('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x84a0('0x21')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x84a0('0x5')](0x5)[_0x84a0('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x84a0('0x22')}};
\ No newline at end of file
index 337e961..c34b1fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e08=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','get','IvrCampaigns','UserProfileResource','destroy','error','name','send','index','map','Campaign','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','getHoppers','findOne','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','hasOwnProperty','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','deletedAt\x20IS\x20NULL','push','sequelize','removeLists','getBlackLists','spread','cm_hopper_black','all','removeBlackLists','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x2e08,0x186));var _0x82e0=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x2e08[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82e0('0x0'));var zipdir=require(_0x82e0('0x1'));var jsonpatch=require(_0x82e0('0x2'));var rp=require('request-promise');var moment=require(_0x82e0('0x3'));var BPromise=require(_0x82e0('0x4'));var Mustache=require(_0x82e0('0x5'));var util=require(_0x82e0('0x6'));var path=require(_0x82e0('0x7'));var sox=require(_0x82e0('0x8'));var csv=require('to-csv');var ejs=require(_0x82e0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82e0('0xa'));var squel=require(_0x82e0('0xb'));var crypto=require(_0x82e0('0xc'));var jsforce=require(_0x82e0('0xd'));var deskjs=require(_0x82e0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x82e0('0xf'));var Papa=require('papaparse');var Redis=require(_0x82e0('0x10'));var authService=require(_0x82e0('0x11'));var qs=require(_0x82e0('0x12'));var as=require(_0x82e0('0x13'));var hardwareService=require(_0x82e0('0x14'));var logger=require(_0x82e0('0x15'))('api');var utils=require(_0x82e0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x82e0('0x17'))['db'];function respondWithStatusCode(_0x340ac0,_0x56a3e0){_0x56a3e0=_0x56a3e0||0xcc;return function(_0x32bafb){if(_0x32bafb){return _0x340ac0[_0x82e0('0x18')](_0x56a3e0);}return _0x340ac0[_0x82e0('0x19')](_0x56a3e0)[_0x82e0('0x1a')]();};}function respondWithResult(_0xa42e05,_0x3aefe0){_0x3aefe0=_0x3aefe0||0xc8;return function(_0x33c355){if(_0x33c355){return _0xa42e05['status'](_0x3aefe0)[_0x82e0('0x1b')](_0x33c355);}};}function respondWithFilteredResult(_0x2828bd,_0x2f50de){return function(_0x386f8f){if(_0x386f8f){var _0x37032e=typeof _0x2f50de[_0x82e0('0x1c')]===_0x82e0('0x1d')&&typeof _0x2f50de[_0x82e0('0x1e')]===_0x82e0('0x1d');var _0xfabb54=_0x386f8f[_0x82e0('0x1f')];var _0x4a59cb=_0x37032e?0x0:_0x2f50de[_0x82e0('0x1c')];var _0x3b9748=_0x37032e?_0x386f8f[_0x82e0('0x1f')]:_0x2f50de[_0x82e0('0x1c')]+_0x2f50de['limit'];var _0x5ac0c2;if(_0x3b9748>=_0xfabb54){_0x3b9748=_0xfabb54;_0x5ac0c2=0xc8;}else{_0x5ac0c2=0xce;}_0x2828bd[_0x82e0('0x19')](_0x5ac0c2);return _0x2828bd[_0x82e0('0x20')]('Content-Range',_0x4a59cb+'-'+_0x3b9748+'/'+_0xfabb54)['json'](_0x386f8f);}return null;};}function patchUpdates(_0x59a54c){return function(_0x4bf30e){try{jsonpatch[_0x82e0('0x21')](_0x4bf30e,_0x59a54c,!![]);}catch(_0x201669){return BPromise['reject'](_0x201669);}return _0x4bf30e[_0x82e0('0x22')]();};}function saveUpdates(_0x1e93e9,_0x5b3c50){return function(_0x4156d7){if(_0x4156d7){return _0x4156d7['update'](_0x1e93e9)[_0x82e0('0x23')](function(_0x5e291b){return _0x5e291b;});}return null;};}function removeEntity(_0x23111e,_0x268224){return function(_0x1b7ea1){if(_0x1b7ea1){return _0x1b7ea1['destroy']()[_0x82e0('0x23')](function(){var _0x1e7f39=_0x1b7ea1[_0x82e0('0x24')]({'plain':!![]});var _0x43649a=_0x82e0('0x25');return db[_0x82e0('0x26')][_0x82e0('0x27')]({'where':{'type':_0x43649a,'resourceId':_0x1e7f39['id']}})[_0x82e0('0x23')](function(){return _0x1b7ea1;});})[_0x82e0('0x23')](function(){_0x23111e['status'](0xcc)[_0x82e0('0x1a')]();});}};}function handleEntityNotFound(_0xa12632,_0x2a977d){return function(_0x3fcdfe){if(!_0x3fcdfe){_0xa12632[_0x82e0('0x18')](0x194);}return _0x3fcdfe;};}function handleError(_0x166795,_0x3010c8){_0x3010c8=_0x3010c8||0x1f4;return function(_0x5dfe89){logger[_0x82e0('0x28')](_0x5dfe89['stack']);if(_0x5dfe89[_0x82e0('0x29')]){delete _0x5dfe89[_0x82e0('0x29')];}_0x166795[_0x82e0('0x19')](_0x3010c8)[_0x82e0('0x2a')](_0x5dfe89);};}exports[_0x82e0('0x2b')]=function(_0x3aef91,_0x201fab){var _0x5b423c={},_0x50e03d={},_0x14f81c={'count':0x0,'rows':[]};var _0x2bec82=_[_0x82e0('0x2c')](db[_0x82e0('0x2d')]['rawAttributes'],function(_0x162a45){return{'name':_0x162a45[_0x82e0('0x2e')],'type':_0x162a45[_0x82e0('0x2f')][_0x82e0('0x30')]};});_0x50e03d[_0x82e0('0x31')]=_[_0x82e0('0x2c')](_0x2bec82,_0x82e0('0x29'));_0x50e03d[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x3aef91[_0x82e0('0x32')]);_0x50e03d[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x50e03d['model'],_0x50e03d[_0x82e0('0x32')]);_0x5b423c[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x50e03d['model'],qs[_0x82e0('0x37')](_0x3aef91[_0x82e0('0x32')]['fields']));_0x5b423c['attributes']=_0x5b423c[_0x82e0('0x36')][_0x82e0('0x38')]?_0x5b423c[_0x82e0('0x36')]:_0x50e03d['model'];if(!_0x3aef91['query']['hasOwnProperty'](_0x82e0('0x39'))){_0x5b423c[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x5b423c['offset']=qs['offset'](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x1c')]);}_0x5b423c[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x3aef91[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x5b423c[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x3aef91[_0x82e0('0x32')],_0x50e03d[_0x82e0('0x34')]),_0x2bec82);if(_0x3aef91[_0x82e0('0x32')]['filter']){_0x5b423c[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x5b423c[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x2bec82,function(_0xc3ae6){if(_0xc3ae6['type']!==_0x82e0('0x3f')){var _0x529747={};_0x529747[_0xc3ae6[_0x82e0('0x29')]]={'$like':'%'+_0x3aef91[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x529747;}})});}_0x5b423c=_['merge']({},_0x5b423c,_0x3aef91[_0x82e0('0x41')]);var _0x404355={'where':_0x5b423c['where']};return db[_0x82e0('0x2d')][_0x82e0('0x1f')](_0x404355)[_0x82e0('0x23')](function(_0x2b8dff){_0x14f81c['count']=_0x2b8dff;if(_0x3aef91[_0x82e0('0x32')][_0x82e0('0x42')]){_0x5b423c[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x2d')][_0x82e0('0x44')](_0x5b423c);})[_0x82e0('0x23')](function(_0x49e411){_0x14f81c[_0x82e0('0x45')]=_0x49e411;return _0x14f81c;})['then'](respondWithFilteredResult(_0x201fab,_0x5b423c))[_0x82e0('0x46')](handleError(_0x201fab,null));};exports[_0x82e0('0x47')]=function(_0x30407a,_0x1233fa){var _0x1e42b7={'raw':![],'where':{'id':_0x30407a[_0x82e0('0x48')]['id']}},_0x5b491e={};_0x5b491e[_0x82e0('0x31')]=_[_0x82e0('0x33')](db[_0x82e0('0x2d')][_0x82e0('0x49')]);_0x5b491e[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x30407a[_0x82e0('0x32')]);_0x5b491e[_0x82e0('0x34')]=_['intersection'](_0x5b491e['model'],_0x5b491e[_0x82e0('0x32')]);_0x1e42b7['attributes']=_[_0x82e0('0x35')](_0x5b491e['model'],qs['fields'](_0x30407a[_0x82e0('0x32')][_0x82e0('0x37')]));_0x1e42b7['attributes']=_0x1e42b7['attributes']['length']?_0x1e42b7[_0x82e0('0x36')]:_0x5b491e[_0x82e0('0x31')];if(_0x30407a['query'][_0x82e0('0x42')]){_0x1e42b7[_0x82e0('0x43')]=[{'all':!![]}];}_0x1e42b7=_[_0x82e0('0x3e')]({},_0x1e42b7,_0x30407a[_0x82e0('0x41')]);return db[_0x82e0('0x2d')]['find'](_0x1e42b7)['then'](handleEntityNotFound(_0x1233fa,null))[_0x82e0('0x23')](respondWithResult(_0x1233fa,null))[_0x82e0('0x46')](handleError(_0x1233fa,null));};exports['create']=function(_0x51d28e,_0x186513){return db[_0x82e0('0x2d')]['create'](_0x51d28e[_0x82e0('0x4a')],{})[_0x82e0('0x23')](function(_0x229d7c){var _0xc2120e=_0x51d28e[_0x82e0('0x4b')][_0x82e0('0x24')]({'plain':!![]});if(!_0xc2120e)throw new Error(_0x82e0('0x4c'));if(_0xc2120e['role']===_0x82e0('0x4b')){var _0x5ee9af=_0x229d7c[_0x82e0('0x24')]({'plain':!![]});var _0x2004c2='IvrCampaigns';return db[_0x82e0('0x4d')][_0x82e0('0x4e')]({'where':{'name':_0x2004c2,'userProfileId':_0xc2120e['userProfileId']},'raw':!![]})['then'](function(_0x5eb54b){if(_0x5eb54b&&_0x5eb54b[_0x82e0('0x4f')]===0x0){return db['UserProfileResource'][_0x82e0('0x50')]({'name':_0x5ee9af['name'],'resourceId':_0x5ee9af['id'],'type':_0x5eb54b[_0x82e0('0x29')],'sectionId':_0x5eb54b['id']},{})['then'](function(){return _0x229d7c;});}else{return _0x229d7c;}})['catch'](function(_0x241d0a){logger['error'](_0x82e0('0x51'),_0x241d0a);throw _0x241d0a;});}return _0x229d7c;})[_0x82e0('0x23')](respondWithResult(_0x186513,0xc9))[_0x82e0('0x46')](handleError(_0x186513,null));};exports[_0x82e0('0x52')]=function(_0x5b4fdd,_0x574603){var _0x2847c0={'where':{'id':_0x5b4fdd[_0x82e0('0x48')]['id']}},_0x32b262={};_0x32b262[_0x82e0('0x31')]=_['keys'](db[_0x82e0('0x2d')][_0x82e0('0x49')]);_0x2847c0[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x32b262[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x5b4fdd[_0x82e0('0x32')][_0x82e0('0x37')]));_0x2847c0[_0x82e0('0x36')]=_0x2847c0['attributes'][_0x82e0('0x38')]?_0x2847c0[_0x82e0('0x36')]:_0x32b262[_0x82e0('0x31')];if(_0x5b4fdd[_0x82e0('0x32')][_0x82e0('0x42')]){_0x2847c0['include']=[{'all':!![]}];}_0x2847c0=_[_0x82e0('0x3e')]({},_0x2847c0,_0x5b4fdd[_0x82e0('0x41')]);return db[_0x82e0('0x2d')][_0x82e0('0x4e')](_0x2847c0)[_0x82e0('0x23')](handleEntityNotFound(_0x574603,null))[_0x82e0('0x23')](function(_0x26ddb8){if(_0x26ddb8){var _0x5dcfa8=_0x26ddb8[_0x82e0('0x24')]({'plain':!![]});_0x5dcfa8=qs[_0x82e0('0x53')](_0x5dcfa8,['id',_0x82e0('0x54'),_0x82e0('0x55')]);_0x5b4fdd['body']=_['omit'](_0x5b4fdd[_0x82e0('0x4a')],['id',_0x82e0('0x54'),_0x82e0('0x55')]);return db['Campaign'][_0x82e0('0x50')](_['merge'](_0x5dcfa8,_0x5b4fdd['body']),{'include':_0x5b4fdd[_0x82e0('0x32')]['includeAll']?[{'all':!![]}]:undefined})[_0x82e0('0x23')](function(_0x390af0){var _0x4c19fc=_0x5b4fdd[_0x82e0('0x4b')][_0x82e0('0x24')]({'plain':!![]});if(!_0x4c19fc)throw new Error(_0x82e0('0x4c'));if(_0x4c19fc[_0x82e0('0x56')]===_0x82e0('0x4b')){var _0x52714b=_0x390af0[_0x82e0('0x24')]({'plain':!![]});var _0x284181='IvrCampaigns';return db[_0x82e0('0x4d')]['find']({'where':{'name':_0x284181,'userProfileId':_0x4c19fc['userProfileId']},'raw':!![]})[_0x82e0('0x23')](function(_0x487e4c){if(_0x487e4c&&_0x487e4c['autoAssociation']===0x0){return db[_0x82e0('0x26')][_0x82e0('0x50')]({'name':_0x52714b[_0x82e0('0x29')],'resourceId':_0x52714b['id'],'type':_0x487e4c['name'],'sectionId':_0x487e4c['id']},{})['then'](function(){return _0x390af0;});}else{return _0x390af0;}})[_0x82e0('0x46')](function(_0x289e28){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x289e28);throw _0x289e28;});}return _0x390af0;});}})[_0x82e0('0x23')](respondWithResult(_0x574603,0xc9))[_0x82e0('0x46')](handleError(_0x574603,null));};exports['update']=function(_0x280029,_0x48fda4){if(_0x280029[_0x82e0('0x4a')]['id']){delete _0x280029['body']['id'];}return db[_0x82e0('0x2d')]['find']({'where':{'id':_0x280029[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x48fda4,null))[_0x82e0('0x23')](saveUpdates(_0x280029[_0x82e0('0x4a')],null))[_0x82e0('0x23')](respondWithResult(_0x48fda4,null))[_0x82e0('0x46')](handleError(_0x48fda4,null));};exports[_0x82e0('0x27')]=function(_0x46fb3d,_0x39a9e3){return db['Campaign'][_0x82e0('0x4e')]({'where':{'id':_0x46fb3d[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x39a9e3,null))[_0x82e0('0x23')](removeEntity(_0x39a9e3,null))[_0x82e0('0x46')](handleError(_0x39a9e3,null));};exports[_0x82e0('0x57')]=function(_0x4d5764,_0x1e08b4,_0x5d8b26){var _0x296a59={'raw':!![],'where':{}};var _0x48d155={};var _0x559588={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x4d5764['params']['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x1e08b4,null))[_0x82e0('0x23')](function(_0x1470b6){if(_0x1470b6){_0x48d155[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopper']['rawAttributes']);_0x48d155[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x4d5764[_0x82e0('0x32')]);_0x48d155['filters']=_['intersection'](_0x48d155[_0x82e0('0x31')],_0x48d155[_0x82e0('0x32')]);_0x296a59['attributes']=_['intersection'](_0x48d155['model'],qs[_0x82e0('0x37')](_0x4d5764[_0x82e0('0x32')]['fields']));_0x296a59[_0x82e0('0x36')]=_0x296a59[_0x82e0('0x36')][_0x82e0('0x38')]?_0x296a59[_0x82e0('0x36')]:_0x48d155['model'];if(!_0x4d5764[_0x82e0('0x32')]['hasOwnProperty'](_0x82e0('0x39'))){_0x296a59[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x4d5764[_0x82e0('0x32')]['limit']);_0x296a59[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x4d5764[_0x82e0('0x32')][_0x82e0('0x1c')]);}_0x296a59['order']=qs[_0x82e0('0x3b')](_0x4d5764[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x296a59[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x4d5764[_0x82e0('0x32')],_0x48d155[_0x82e0('0x34')]));_0x296a59[_0x82e0('0x3c')][_0x82e0('0x59')]=_0x1470b6['id'];if(_0x4d5764[_0x82e0('0x32')]['filter']){_0x296a59[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x296a59['where'],{'$or':_[_0x82e0('0x2c')](_0x296a59['attributes'],function(_0x2992ad){var _0x1115ab={};_0x1115ab[_0x2992ad]={'$like':'%'+_0x4d5764[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x1115ab;})});}_0x296a59=_[_0x82e0('0x3e')]({},_0x296a59,_0x4d5764[_0x82e0('0x41')]);return db[_0x82e0('0x5a')][_0x82e0('0x1f')]({'where':_0x296a59[_0x82e0('0x3c')]})[_0x82e0('0x23')](function(_0x5e9f55){_0x559588[_0x82e0('0x1f')]=_0x5e9f55;if(_0x4d5764[_0x82e0('0x32')][_0x82e0('0x42')]){_0x296a59[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x5a')][_0x82e0('0x44')](_0x296a59);})['then'](function(_0x1ef56d){_0x559588[_0x82e0('0x45')]=_0x1ef56d;return _0x559588;});}})['then'](respondWithFilteredResult(_0x1e08b4,_0x296a59))[_0x82e0('0x46')](handleError(_0x1e08b4,null));};exports[_0x82e0('0x5b')]=function(_0x4d2823,_0x4ff0cc,_0x51ac5c){var _0x15e306={'raw':!![],'where':{}};var _0xa8d5b3={};var _0x170b9c={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')]['findOne']({'where':{'id':_0x4d2823[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x4ff0cc,null))[_0x82e0('0x23')](function(_0x3c6b5e){if(_0x3c6b5e){_0xa8d5b3[_0x82e0('0x31')]=_[_0x82e0('0x33')](db[_0x82e0('0x5c')][_0x82e0('0x49')]);_0xa8d5b3[_0x82e0('0x32')]=_['keys'](_0x4d2823[_0x82e0('0x32')]);_0xa8d5b3['filters']=_[_0x82e0('0x35')](_0xa8d5b3['model'],_0xa8d5b3[_0x82e0('0x32')]);_0x15e306[_0x82e0('0x36')]=_['intersection'](_0xa8d5b3['model'],qs['fields'](_0x4d2823[_0x82e0('0x32')]['fields']));_0x15e306[_0x82e0('0x36')]=_0x15e306['attributes'][_0x82e0('0x38')]?_0x15e306[_0x82e0('0x36')]:_0xa8d5b3[_0x82e0('0x31')];if(!_0x4d2823[_0x82e0('0x32')][_0x82e0('0x5d')]('nolimit')){_0x15e306[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x4d2823['query'][_0x82e0('0x1e')]);_0x15e306[_0x82e0('0x1c')]=qs['offset'](_0x4d2823['query'][_0x82e0('0x1c')]);}_0x15e306['order']=qs[_0x82e0('0x3b')](_0x4d2823['query'][_0x82e0('0x3b')]);_0x15e306['where']=qs['filters'](_[_0x82e0('0x3d')](_0x4d2823[_0x82e0('0x32')],_0xa8d5b3['filters']));_0x15e306['where']['CampaignId']=_0x3c6b5e['id'];if(_0x4d2823[_0x82e0('0x32')][_0x82e0('0x40')]){_0x15e306[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x15e306['where'],{'$or':_['map'](_0x15e306[_0x82e0('0x36')],function(_0x548a40){var _0x53f773={};_0x53f773[_0x548a40]={'$like':'%'+_0x4d2823[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x53f773;})});}_0x15e306=_[_0x82e0('0x3e')]({},_0x15e306,_0x4d2823['options']);return db['CmHopperHistory']['count']({'where':_0x15e306[_0x82e0('0x3c')]})['then'](function(_0x5b03d5){_0x170b9c[_0x82e0('0x1f')]=_0x5b03d5;if(_0x4d2823['query'][_0x82e0('0x42')]){_0x15e306['include']=[{'all':!![]}];}return db[_0x82e0('0x5c')][_0x82e0('0x44')](_0x15e306);})['then'](function(_0x3112d2){_0x170b9c[_0x82e0('0x45')]=_0x3112d2;return _0x170b9c;});}})['then'](respondWithFilteredResult(_0x4ff0cc,_0x15e306))[_0x82e0('0x46')](handleError(_0x4ff0cc,null));};exports[_0x82e0('0x5e')]=function(_0xca77e,_0x2e768e,_0x40a042){var _0x3e6687={'raw':!![],'where':{}};var _0x5aea85={};var _0x7e799={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0xca77e[_0x82e0('0x48')]['id']}})['then'](handleEntityNotFound(_0x2e768e,null))['then'](function(_0x1f20d4){if(_0x1f20d4){_0x5aea85[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopperFinal'][_0x82e0('0x49')]);_0x5aea85[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0xca77e[_0x82e0('0x32')]);_0x5aea85[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x5aea85[_0x82e0('0x31')],_0x5aea85[_0x82e0('0x32')]);_0x3e6687[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x5aea85[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0xca77e[_0x82e0('0x32')][_0x82e0('0x37')]));_0x3e6687['attributes']=_0x3e6687[_0x82e0('0x36')]['length']?_0x3e6687[_0x82e0('0x36')]:_0x5aea85[_0x82e0('0x31')];if(!_0xca77e['query'][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x3e6687['limit']=qs[_0x82e0('0x1e')](_0xca77e[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x3e6687[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0xca77e['query'][_0x82e0('0x1c')]);}_0x3e6687[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0xca77e['query'][_0x82e0('0x3b')]);_0x3e6687[_0x82e0('0x3c')]=qs['filters'](_[_0x82e0('0x3d')](_0xca77e[_0x82e0('0x32')],_0x5aea85[_0x82e0('0x34')]));_0x3e6687[_0x82e0('0x3c')][_0x82e0('0x59')]=_0x1f20d4['id'];if(_0xca77e[_0x82e0('0x32')][_0x82e0('0x40')]){_0x3e6687[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x3e6687[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x3e6687[_0x82e0('0x36')],function(_0x84712f){var _0xf659b5={};_0xf659b5[_0x84712f]={'$like':'%'+_0xca77e[_0x82e0('0x32')]['filter']+'%'};return _0xf659b5;})});}_0x3e6687=_[_0x82e0('0x3e')]({},_0x3e6687,_0xca77e['options']);return db[_0x82e0('0x5f')][_0x82e0('0x1f')]({'where':_0x3e6687['where']})[_0x82e0('0x23')](function(_0x41834f){_0x7e799[_0x82e0('0x1f')]=_0x41834f;if(_0xca77e[_0x82e0('0x32')]['includeAll']){_0x3e6687[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x5f')][_0x82e0('0x44')](_0x3e6687);})[_0x82e0('0x23')](function(_0x3f4f15){_0x7e799['rows']=_0x3f4f15;return _0x7e799;});}})['then'](respondWithFilteredResult(_0x2e768e,_0x3e6687))[_0x82e0('0x46')](handleError(_0x2e768e,null));};exports[_0x82e0('0x60')]=function(_0x3c3613,_0x21ce07,_0x5183a8){var _0x56675a={'raw':!![],'where':{}};var _0x1c456e={};var _0x22dfe7={'count':0x0,'rows':[]};return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x3c3613[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x21ce07,null))[_0x82e0('0x23')](function(_0x35823a){if(_0x35823a){_0x1c456e[_0x82e0('0x31')]=_[_0x82e0('0x33')](db['CmHopperBlack']['rawAttributes']);_0x1c456e[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x3c3613[_0x82e0('0x32')]);_0x1c456e[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x1c456e[_0x82e0('0x31')],_0x1c456e[_0x82e0('0x32')]);_0x56675a[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x1c456e['model'],qs[_0x82e0('0x37')](_0x3c3613['query'][_0x82e0('0x37')]));_0x56675a[_0x82e0('0x36')]=_0x56675a['attributes'][_0x82e0('0x38')]?_0x56675a['attributes']:_0x1c456e['model'];if(!_0x3c3613['query'][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x56675a[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x3c3613[_0x82e0('0x32')][_0x82e0('0x1e')]);_0x56675a[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x3c3613['query']['offset']);}_0x56675a[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x3c3613[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x56675a[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x3c3613[_0x82e0('0x32')],_0x1c456e[_0x82e0('0x34')]));_0x56675a[_0x82e0('0x3c')]['CampaignId']=_0x35823a['id'];if(_0x3c3613[_0x82e0('0x32')][_0x82e0('0x40')]){_0x56675a[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x56675a['where'],{'$or':_[_0x82e0('0x2c')](_0x56675a['attributes'],function(_0x3f6cb2){var _0x27549f={};_0x27549f[_0x3f6cb2]={'$like':'%'+_0x3c3613[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x27549f;})});}_0x56675a=_[_0x82e0('0x3e')]({},_0x56675a,_0x3c3613[_0x82e0('0x41')]);return db['CmHopperBlack'][_0x82e0('0x1f')]({'where':_0x56675a[_0x82e0('0x3c')]})[_0x82e0('0x23')](function(_0x357827){_0x22dfe7[_0x82e0('0x1f')]=_0x357827;if(_0x3c3613[_0x82e0('0x32')][_0x82e0('0x42')]){_0x56675a[_0x82e0('0x43')]=[{'all':!![]}];}return db[_0x82e0('0x61')][_0x82e0('0x44')](_0x56675a);})[_0x82e0('0x23')](function(_0x1887c6){_0x22dfe7[_0x82e0('0x45')]=_0x1887c6;return _0x22dfe7;});}})[_0x82e0('0x23')](respondWithFilteredResult(_0x21ce07,_0x56675a))[_0x82e0('0x46')](handleError(_0x21ce07,null));};exports[_0x82e0('0x62')]=function(_0x1a059c,_0x534fc4,_0x1b9faa){var _0x40c45e={};var _0x5e4927={};var _0xa8bfc4;var _0x46f471;return db[_0x82e0('0x2d')][_0x82e0('0x58')]({'where':{'id':_0x1a059c[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x534fc4,null))[_0x82e0('0x23')](function(_0x2fe674){if(_0x2fe674){_0xa8bfc4=_0x2fe674;_0x5e4927[_0x82e0('0x31')]=_['keys'](db[_0x82e0('0x63')]['rawAttributes']);_0x5e4927[_0x82e0('0x32')]=_[_0x82e0('0x33')](_0x1a059c[_0x82e0('0x32')]);_0x5e4927['filters']=_[_0x82e0('0x35')](_0x5e4927[_0x82e0('0x31')],_0x5e4927[_0x82e0('0x32')]);_0x40c45e[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x5e4927[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x1a059c[_0x82e0('0x32')][_0x82e0('0x37')]));_0x40c45e[_0x82e0('0x36')]=_0x40c45e['attributes']['length']?_0x40c45e['attributes']:_0x5e4927['model'];_0x40c45e[_0x82e0('0x3a')]=qs[_0x82e0('0x3b')](_0x1a059c[_0x82e0('0x32')][_0x82e0('0x3b')]);_0x40c45e[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_['pick'](_0x1a059c[_0x82e0('0x32')],_0x5e4927[_0x82e0('0x34')]));if(_0x1a059c[_0x82e0('0x32')]['filter']){_0x40c45e[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x40c45e[_0x82e0('0x3c')],{'$or':_[_0x82e0('0x2c')](_0x40c45e[_0x82e0('0x36')],function(_0x34ff9d){var _0x210455={};_0x210455[_0x34ff9d]={'$like':'%'+_0x1a059c[_0x82e0('0x32')][_0x82e0('0x40')]+'%'};return _0x210455;})});}_0x40c45e=_[_0x82e0('0x3e')]({},_0x40c45e,_0x1a059c['options']);return _0xa8bfc4['getLists'](_0x40c45e);}})[_0x82e0('0x23')](function(_0x12a278){if(_0x12a278){_0x46f471=_0x12a278[_0x82e0('0x38')];if(!_0x1a059c[_0x82e0('0x32')][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x40c45e[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x1a059c['query'][_0x82e0('0x1e')]);_0x40c45e[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x1a059c[_0x82e0('0x32')]['offset']);}return _0xa8bfc4[_0x82e0('0x62')](_0x40c45e);}})[_0x82e0('0x23')](function(_0x156d08){if(_0x156d08){return _0x156d08?{'count':_0x46f471,'rows':_0x156d08}:null;}})[_0x82e0('0x23')](respondWithResult(_0x534fc4,null))[_0x82e0('0x46')](handleError(_0x534fc4,null));};exports[_0x82e0('0x64')]=function(_0x2f40cb,_0x275eab,_0x42826a){var _0x229cad,_0xb44467;return db[_0x82e0('0x2d')][_0x82e0('0x4e')]({'where':{'id':_0x2f40cb['params']['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x275eab,null))[_0x82e0('0x23')](function(_0x47cd9b){if(_0x47cd9b){_0xb44467=_0x47cd9b;return _0x47cd9b[_0x82e0('0x64')](_0x2f40cb['body'][_0x82e0('0x65')],_[_0x82e0('0x53')](_0x2f40cb[_0x82e0('0x4a')],[_0x82e0('0x65'),'id'])||{});}return null;})['spread'](function(_0x1d1fc0){var _0x8ec631;_0x229cad=_0x1d1fc0||[];var _0x272a90=[];if(_0x1d1fc0){for(var _0x164bcf=0x0;_0x164bcf<_0x1d1fc0[_0x82e0('0x38')];_0x164bcf+=0x1){var _0xef0356=_0x1d1fc0[_0x164bcf][_0x82e0('0x24')]({'plain':!![]});_0xb44467[_0x82e0('0x66')]=_0x2f40cb[_0x82e0('0x4a')][_0x82e0('0x66')]?_0x2f40cb[_0x82e0('0x4a')]['dialCheckDuplicateType']:_0xb44467['dialCheckDuplicateType'];switch(_0xb44467[_0x82e0('0x66')]){case _0x82e0('0x67'):_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))['fromQuery']([_0x82e0('0x6b'),_0x82e0('0x6c'),_0x82e0('0x6d'),_0x82e0('0x6e'),'CampaignId','createdAt','updatedAt'],squel[_0x82e0('0x6f')]()['field']('phone','phone')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x6c'))[_0x82e0('0x70')]('id',_0x82e0('0x6d'))[_0x82e0('0x70')](_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')](),'ListId')[_0x82e0('0x70')](_0x2f40cb[_0x82e0('0x48')]['id']['toString'](),_0x82e0('0x59'))['field'](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x55'))[_0x82e0('0x74')](_0x82e0('0x75'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x82e0('0x76'),_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')]())[_0x82e0('0x3c')](_0x82e0('0x77'))[_0x82e0('0x3c')](_0x82e0('0x78'),squel['select']()['field'](_0x82e0('0x79'))[_0x82e0('0x74')](_0x82e0('0x7a'))['where'](_0x82e0('0x7b'),_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')]()))[_0x82e0('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x82e0('0x6f')]()[_0x82e0('0x70')](_0x82e0('0x7c'))[_0x82e0('0x74')](_0x82e0('0x6a'))[_0x82e0('0x3c')]('CampaignId\x20=\x20?',_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')]())))[_0x82e0('0x73')]();break;case _0x82e0('0x7d'):_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))[_0x82e0('0x7e')](['phone',_0x82e0('0x6c'),_0x82e0('0x6d'),'ListId','CampaignId',_0x82e0('0x54'),_0x82e0('0x55')],squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('phone',_0x82e0('0x6b'))[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x6c'))['field']('id',_0x82e0('0x6d'))[_0x82e0('0x70')](_0xef0356[_0x82e0('0x72')]['toString'](),_0x82e0('0x6e'))[_0x82e0('0x70')](_0x2f40cb['params']['id']['toString'](),'CampaignId')['field'](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')]('NOW()',_0x82e0('0x55'))[_0x82e0('0x74')]('cm_contacts')['where'](_0x82e0('0x7f'))[_0x82e0('0x3c')](_0x82e0('0x76'),_0xef0356[_0x82e0('0x72')][_0x82e0('0x73')]())[_0x82e0('0x3c')](_0x82e0('0x77'))['where'](_0x82e0('0x78'),squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('COALESCE(phone,\x27\x27)')[_0x82e0('0x74')](_0x82e0('0x6a'))[_0x82e0('0x3c')]('CampaignId\x20=\x20?',_0x2f40cb['params']['id'][_0x82e0('0x73')]())))[_0x82e0('0x73')]();break;default:_0x8ec631=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x6a'))['fromQuery']([_0x82e0('0x6b'),_0x82e0('0x6c'),'ContactId',_0x82e0('0x6e'),'CampaignId','createdAt',_0x82e0('0x55')],squel[_0x82e0('0x6f')]()[_0x82e0('0x70')]('phone',_0x82e0('0x6b'))['field'](_0x82e0('0x71'),_0x82e0('0x6c'))[_0x82e0('0x70')]('id',_0x82e0('0x6d'))['field'](_0xef0356[_0x82e0('0x72')]['toString'](),_0x82e0('0x6e'))['field'](_0x2f40cb[_0x82e0('0x48')]['id'][_0x82e0('0x73')](),'CampaignId')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x54'))[_0x82e0('0x70')](_0x82e0('0x71'),'updatedAt')[_0x82e0('0x74')]('cm_contacts')[_0x82e0('0x3c')](_0x82e0('0x7f'))['where']('ListId\x20=\x20?',_0xef0356['CmListId']['toString']())[_0x82e0('0x3c')](_0x82e0('0x77')))['toString']();}_0x272a90[_0x82e0('0x80')](db[_0x82e0('0x81')][_0x82e0('0x32')](_0x8ec631));}return BPromise['all'](_0x272a90);}})[_0x82e0('0x23')](function(){return _0x229cad;})[_0x82e0('0x23')](respondWithResult(_0x275eab,null))[_0x82e0('0x46')](handleError(_0x275eab,null));};exports[_0x82e0('0x82')]=function(_0x493428,_0x109ef8,_0x3d9734){return db[_0x82e0('0x2d')]['find']({'where':{'id':_0x493428[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x109ef8,null))[_0x82e0('0x23')](function(_0x293f1f){if(_0x293f1f){return _0x293f1f[_0x82e0('0x82')](_0x493428[_0x82e0('0x32')]['ids']);}})['then'](function(_0x4a8712){if(_0x4a8712){return db[_0x82e0('0x5a')][_0x82e0('0x27')]({'where':{'ListId':_0x493428[_0x82e0('0x32')][_0x82e0('0x65')],'CampaignId':_0x493428[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](function(){return _0x4a8712;});}})[_0x82e0('0x23')](respondWithStatusCode(_0x109ef8,null))['catch'](handleError(_0x109ef8,null));};exports[_0x82e0('0x83')]=function(_0x536541,_0xa0398d,_0x113269){var _0x42c390={};var _0x294449={};var _0x384a27;var _0xfc1d91;return db['Campaign'][_0x82e0('0x58')]({'where':{'id':_0x536541[_0x82e0('0x48')]['id']}})['then'](handleEntityNotFound(_0xa0398d,null))[_0x82e0('0x23')](function(_0xbc81c2){if(_0xbc81c2){_0x384a27=_0xbc81c2;_0x294449['model']=_[_0x82e0('0x33')](db[_0x82e0('0x63')]['rawAttributes']);_0x294449[_0x82e0('0x32')]=_['keys'](_0x536541[_0x82e0('0x32')]);_0x294449[_0x82e0('0x34')]=_[_0x82e0('0x35')](_0x294449[_0x82e0('0x31')],_0x294449[_0x82e0('0x32')]);_0x42c390[_0x82e0('0x36')]=_[_0x82e0('0x35')](_0x294449[_0x82e0('0x31')],qs[_0x82e0('0x37')](_0x536541[_0x82e0('0x32')][_0x82e0('0x37')]));_0x42c390[_0x82e0('0x36')]=_0x42c390[_0x82e0('0x36')][_0x82e0('0x38')]?_0x42c390[_0x82e0('0x36')]:_0x294449[_0x82e0('0x31')];_0x42c390['order']=qs['sort'](_0x536541['query'][_0x82e0('0x3b')]);_0x42c390[_0x82e0('0x3c')]=qs[_0x82e0('0x34')](_[_0x82e0('0x3d')](_0x536541[_0x82e0('0x32')],_0x294449['filters']));if(_0x536541[_0x82e0('0x32')]['filter']){_0x42c390[_0x82e0('0x3c')]=_[_0x82e0('0x3e')](_0x42c390['where'],{'$or':_[_0x82e0('0x2c')](_0x42c390[_0x82e0('0x36')],function(_0xa99ed0){var _0x45d0f4={};_0x45d0f4[_0xa99ed0]={'$like':'%'+_0x536541[_0x82e0('0x32')]['filter']+'%'};return _0x45d0f4;})});}_0x42c390=_[_0x82e0('0x3e')]({},_0x42c390,_0x536541['options']);return _0x384a27[_0x82e0('0x83')](_0x42c390);}})[_0x82e0('0x23')](function(_0x371185){if(_0x371185){_0xfc1d91=_0x371185['length'];if(!_0x536541[_0x82e0('0x32')][_0x82e0('0x5d')](_0x82e0('0x39'))){_0x42c390[_0x82e0('0x1e')]=qs[_0x82e0('0x1e')](_0x536541[_0x82e0('0x32')]['limit']);_0x42c390[_0x82e0('0x1c')]=qs[_0x82e0('0x1c')](_0x536541[_0x82e0('0x32')][_0x82e0('0x1c')]);}return _0x384a27['getBlackLists'](_0x42c390);}})[_0x82e0('0x23')](function(_0xc133d3){if(_0xc133d3){return _0xc133d3?{'count':_0xfc1d91,'rows':_0xc133d3}:null;}})[_0x82e0('0x23')](respondWithResult(_0xa0398d,null))[_0x82e0('0x46')](handleError(_0xa0398d,null));};exports['addBlackLists']=function(_0x2100bc,_0x52b0b8,_0x3a1c9e){var _0xdab47,_0x5cd05f;return db[_0x82e0('0x2d')][_0x82e0('0x4e')]({'where':{'id':_0x2100bc[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x52b0b8,null))[_0x82e0('0x23')](function(_0x55982e){if(_0x55982e){_0x5cd05f=_0x55982e;return _0x55982e['addBlackLists'](_0x2100bc[_0x82e0('0x4a')][_0x82e0('0x65')],_['omit'](_0x2100bc[_0x82e0('0x4a')],[_0x82e0('0x65'),'id'])||{});}return null;})[_0x82e0('0x84')](function(_0x15ad80){var _0x524bc3;_0xdab47=_0x15ad80||[];var _0x31fae1=[];if(_0x15ad80){for(var _0x371ccf=0x0;_0x371ccf<_0x15ad80[_0x82e0('0x38')];_0x371ccf+=0x1){var _0x54b333=_0x15ad80[_0x371ccf]['get']({'plain':!![]});_0x524bc3=squel[_0x82e0('0x68')]()[_0x82e0('0x69')](_0x82e0('0x85'))['fromQuery'](['phone',_0x82e0('0x6d'),_0x82e0('0x6e'),_0x82e0('0x59'),_0x82e0('0x54'),'updatedAt'],squel[_0x82e0('0x6f')]()['field'](_0x82e0('0x6b'),_0x82e0('0x6b'))[_0x82e0('0x70')]('id','ContactId')[_0x82e0('0x70')](_0x54b333[_0x82e0('0x72')][_0x82e0('0x73')](),_0x82e0('0x6e'))[_0x82e0('0x70')](_0x2100bc['params']['id'][_0x82e0('0x73')](),_0x82e0('0x59'))[_0x82e0('0x70')](_0x82e0('0x71'),'createdAt')[_0x82e0('0x70')](_0x82e0('0x71'),_0x82e0('0x55'))[_0x82e0('0x74')](_0x82e0('0x75'))[_0x82e0('0x3c')](_0x82e0('0x7f'))[_0x82e0('0x3c')]('ListId\x20=\x20?',_0x54b333[_0x82e0('0x72')]['toString']())[_0x82e0('0x3c')](_0x82e0('0x77')))[_0x82e0('0x73')]();_0x31fae1[_0x82e0('0x80')](db['sequelize'][_0x82e0('0x32')](_0x524bc3));}return BPromise[_0x82e0('0x86')](_0x31fae1);}})[_0x82e0('0x23')](function(){return _0xdab47;})[_0x82e0('0x23')](respondWithResult(_0x52b0b8,null))[_0x82e0('0x46')](handleError(_0x52b0b8,null));};exports[_0x82e0('0x87')]=function(_0x117dbd,_0x273df5,_0x2e55a5){return db['Campaign'][_0x82e0('0x4e')]({'where':{'id':_0x117dbd[_0x82e0('0x48')]['id']}})[_0x82e0('0x23')](handleEntityNotFound(_0x273df5,null))[_0x82e0('0x23')](function(_0x22c78f){if(_0x22c78f){return _0x22c78f[_0x82e0('0x87')](_0x117dbd['query'][_0x82e0('0x65')]);}})[_0x82e0('0x23')](function(_0x34b362){if(_0x34b362){return db['CmHopperBlack'][_0x82e0('0x27')]({'where':{'ListId':_0x117dbd['query'][_0x82e0('0x65')],'CampaignId':_0x117dbd['params']['id']}})[_0x82e0('0x23')](function(){return _0x34b362;});}})[_0x82e0('0x23')](respondWithStatusCode(_0x273df5,null))[_0x82e0('0x46')](handleError(_0x273df5,null));};
\ No newline at end of file
+var _0x0fe6=['getLists','CmList','addLists','ids','omit','spread','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ListId','select','field','NOW()','ContactId','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','name','send','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','IvrCampaigns','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','body','role','findOne','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','CmHopperFinal','rows','getHopperBlacks','CmHopperBlack'];(function(_0x4f3f32,_0x5c9445){var _0x1d242f=function(_0x453b31){while(--_0x453b31){_0x4f3f32['push'](_0x4f3f32['shift']());}};_0x1d242f(++_0x5c9445);}(_0x0fe6,0xad));var _0x60fe=function(_0x5bcc26,_0x561be1){_0x5bcc26=_0x5bcc26-0x0;var _0x3140b6=_0x0fe6[_0x5bcc26];return _0x3140b6;};'use strict';var emlformat=require(_0x60fe('0x0'));var rimraf=require(_0x60fe('0x1'));var zipdir=require(_0x60fe('0x2'));var jsonpatch=require(_0x60fe('0x3'));var rp=require(_0x60fe('0x4'));var moment=require(_0x60fe('0x5'));var BPromise=require(_0x60fe('0x6'));var Mustache=require('mustache');var util=require(_0x60fe('0x7'));var path=require(_0x60fe('0x8'));var sox=require(_0x60fe('0x9'));var csv=require('to-csv');var ejs=require(_0x60fe('0xa'));var fs=require('fs');var fs_extra=require(_0x60fe('0xb'));var _=require('lodash');var squel=require(_0x60fe('0xc'));var crypto=require(_0x60fe('0xd'));var jsforce=require(_0x60fe('0xe'));var deskjs=require(_0x60fe('0xf'));var toCsv=require(_0x60fe('0x10'));var querystring=require('querystring');var Papa=require(_0x60fe('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x60fe('0x12'));var as=require(_0x60fe('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x60fe('0x14'))(_0x60fe('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x60fe('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39b65b,_0x2bd509){_0x2bd509=_0x2bd509||0xcc;return function(_0xb0a352){if(_0xb0a352){return _0x39b65b['sendStatus'](_0x2bd509);}return _0x39b65b[_0x60fe('0x17')](_0x2bd509)[_0x60fe('0x18')]();};}function respondWithResult(_0x5437b3,_0xdb57b4){_0xdb57b4=_0xdb57b4||0xc8;return function(_0x5b73a6){if(_0x5b73a6){return _0x5437b3[_0x60fe('0x17')](_0xdb57b4)[_0x60fe('0x19')](_0x5b73a6);}};}function respondWithFilteredResult(_0x11628e,_0x554b82){return function(_0x4369d9){if(_0x4369d9){var _0x10eec2=typeof _0x554b82[_0x60fe('0x1a')]===_0x60fe('0x1b')&&typeof _0x554b82[_0x60fe('0x1c')]===_0x60fe('0x1b');var _0x334a64=_0x4369d9[_0x60fe('0x1d')];var _0x22ed3f=_0x10eec2?0x0:_0x554b82['offset'];var _0x399a97=_0x10eec2?_0x4369d9[_0x60fe('0x1d')]:_0x554b82['offset']+_0x554b82[_0x60fe('0x1c')];var _0x192c04;if(_0x399a97>=_0x334a64){_0x399a97=_0x334a64;_0x192c04=0xc8;}else{_0x192c04=0xce;}_0x11628e[_0x60fe('0x17')](_0x192c04);return _0x11628e[_0x60fe('0x1e')](_0x60fe('0x1f'),_0x22ed3f+'-'+_0x399a97+'/'+_0x334a64)[_0x60fe('0x19')](_0x4369d9);}return null;};}function patchUpdates(_0x3fb4cd){return function(_0x3498a5){try{jsonpatch[_0x60fe('0x20')](_0x3498a5,_0x3fb4cd,!![]);}catch(_0x2d9979){return BPromise[_0x60fe('0x21')](_0x2d9979);}return _0x3498a5[_0x60fe('0x22')]();};}function saveUpdates(_0x1e730a,_0x35995f){return function(_0x17200f){if(_0x17200f){return _0x17200f[_0x60fe('0x23')](_0x1e730a)[_0x60fe('0x24')](function(_0x52c883){return _0x52c883;});}return null;};}function removeEntity(_0x28a6ae,_0x43575b){return function(_0x3fe4a4){if(_0x3fe4a4){return _0x3fe4a4[_0x60fe('0x25')]()['then'](function(){var _0xc7f228=_0x3fe4a4[_0x60fe('0x26')]({'plain':!![]});var _0x367ed7='IvrCampaigns';return db[_0x60fe('0x27')]['destroy']({'where':{'type':_0x367ed7,'resourceId':_0xc7f228['id']}})[_0x60fe('0x24')](function(){return _0x3fe4a4;});})[_0x60fe('0x24')](function(){_0x28a6ae[_0x60fe('0x17')](0xcc)[_0x60fe('0x18')]();});}};}function handleEntityNotFound(_0x101954,_0x245b18){return function(_0x49a7b6){if(!_0x49a7b6){_0x101954[_0x60fe('0x28')](0x194);}return _0x49a7b6;};}function handleError(_0x52a6c0,_0x1f6bb7){_0x1f6bb7=_0x1f6bb7||0x1f4;return function(_0x46ddfc){logger['error'](_0x46ddfc['stack']);if(_0x46ddfc['name']){delete _0x46ddfc[_0x60fe('0x29')];}_0x52a6c0[_0x60fe('0x17')](_0x1f6bb7)[_0x60fe('0x2a')](_0x46ddfc);};}exports['index']=function(_0x343bc7,_0x386ec1){var _0x24ac83={},_0x56e0ba={},_0x35654b={'count':0x0,'rows':[]};var _0x3c6a3b=_[_0x60fe('0x2b')](db[_0x60fe('0x2c')][_0x60fe('0x2d')],function(_0xfe1d1e){return{'name':_0xfe1d1e[_0x60fe('0x2e')],'type':_0xfe1d1e[_0x60fe('0x2f')][_0x60fe('0x30')]};});_0x56e0ba[_0x60fe('0x31')]=_[_0x60fe('0x2b')](_0x3c6a3b,_0x60fe('0x29'));_0x56e0ba[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x343bc7[_0x60fe('0x32')]);_0x56e0ba['filters']=_[_0x60fe('0x34')](_0x56e0ba[_0x60fe('0x31')],_0x56e0ba['query']);_0x24ac83[_0x60fe('0x35')]=_[_0x60fe('0x34')](_0x56e0ba[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x343bc7[_0x60fe('0x32')][_0x60fe('0x36')]));_0x24ac83[_0x60fe('0x35')]=_0x24ac83[_0x60fe('0x35')]['length']?_0x24ac83['attributes']:_0x56e0ba['model'];if(!_0x343bc7['query'][_0x60fe('0x37')](_0x60fe('0x38'))){_0x24ac83[_0x60fe('0x1c')]=qs[_0x60fe('0x1c')](_0x343bc7[_0x60fe('0x32')][_0x60fe('0x1c')]);_0x24ac83[_0x60fe('0x1a')]=qs['offset'](_0x343bc7[_0x60fe('0x32')][_0x60fe('0x1a')]);}_0x24ac83[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x343bc7['query'][_0x60fe('0x3a')]);_0x24ac83[_0x60fe('0x3b')]=qs[_0x60fe('0x3c')](_[_0x60fe('0x3d')](_0x343bc7[_0x60fe('0x32')],_0x56e0ba[_0x60fe('0x3c')]),_0x3c6a3b);if(_0x343bc7[_0x60fe('0x32')][_0x60fe('0x3e')]){_0x24ac83[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x24ac83['where'],{'$or':_[_0x60fe('0x2b')](_0x3c6a3b,function(_0x2afcd8){if(_0x2afcd8[_0x60fe('0x2f')]!==_0x60fe('0x40')){var _0x121dc9={};_0x121dc9[_0x2afcd8[_0x60fe('0x29')]]={'$like':'%'+_0x343bc7[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x121dc9;}})});}_0x24ac83=_[_0x60fe('0x3f')]({},_0x24ac83,_0x343bc7[_0x60fe('0x41')]);var _0x28b6c6={'where':_0x24ac83[_0x60fe('0x3b')]};return db[_0x60fe('0x2c')][_0x60fe('0x1d')](_0x28b6c6)['then'](function(_0x5732cb){_0x35654b['count']=_0x5732cb;if(_0x343bc7[_0x60fe('0x32')][_0x60fe('0x42')]){_0x24ac83[_0x60fe('0x43')]=[{'all':!![]}];}return db[_0x60fe('0x2c')][_0x60fe('0x44')](_0x24ac83);})['then'](function(_0xca75b0){_0x35654b['rows']=_0xca75b0;return _0x35654b;})[_0x60fe('0x24')](respondWithFilteredResult(_0x386ec1,_0x24ac83))[_0x60fe('0x45')](handleError(_0x386ec1,null));};exports[_0x60fe('0x46')]=function(_0x181c0d,_0x90e35a){var _0x3dc63d={'raw':![],'where':{'id':_0x181c0d[_0x60fe('0x47')]['id']}},_0x286e7d={};_0x286e7d['model']=_['keys'](db[_0x60fe('0x2c')][_0x60fe('0x2d')]);_0x286e7d['query']=_[_0x60fe('0x33')](_0x181c0d['query']);_0x286e7d[_0x60fe('0x3c')]=_[_0x60fe('0x34')](_0x286e7d[_0x60fe('0x31')],_0x286e7d[_0x60fe('0x32')]);_0x3dc63d['attributes']=_[_0x60fe('0x34')](_0x286e7d['model'],qs['fields'](_0x181c0d[_0x60fe('0x32')]['fields']));_0x3dc63d[_0x60fe('0x35')]=_0x3dc63d['attributes'][_0x60fe('0x48')]?_0x3dc63d['attributes']:_0x286e7d[_0x60fe('0x31')];if(_0x181c0d['query'][_0x60fe('0x42')]){_0x3dc63d[_0x60fe('0x43')]=[{'all':!![]}];}_0x3dc63d=_[_0x60fe('0x3f')]({},_0x3dc63d,_0x181c0d['options']);return db[_0x60fe('0x2c')]['find'](_0x3dc63d)[_0x60fe('0x24')](handleEntityNotFound(_0x90e35a,null))[_0x60fe('0x24')](respondWithResult(_0x90e35a,null))['catch'](handleError(_0x90e35a,null));};exports['create']=function(_0x267589,_0x45f080){return db[_0x60fe('0x2c')][_0x60fe('0x49')](_0x267589['body'],{})[_0x60fe('0x24')](function(_0xaf0b66){var _0x5b203a=_0x267589[_0x60fe('0x4a')]['get']({'plain':!![]});if(!_0x5b203a)throw new Error(_0x60fe('0x4b'));if(_0x5b203a['role']===_0x60fe('0x4a')){var _0x509dd8=_0xaf0b66[_0x60fe('0x26')]({'plain':!![]});var _0xa34411=_0x60fe('0x4c');return db[_0x60fe('0x4d')][_0x60fe('0x4e')]({'where':{'name':_0xa34411,'userProfileId':_0x5b203a[_0x60fe('0x4f')]},'raw':!![]})[_0x60fe('0x24')](function(_0x3aa337){if(_0x3aa337&&_0x3aa337[_0x60fe('0x50')]===0x0){return db[_0x60fe('0x27')]['create']({'name':_0x509dd8[_0x60fe('0x29')],'resourceId':_0x509dd8['id'],'type':_0x3aa337[_0x60fe('0x29')],'sectionId':_0x3aa337['id']},{})['then'](function(){return _0xaf0b66;});}else{return _0xaf0b66;}})[_0x60fe('0x45')](function(_0xaf9c93){logger[_0x60fe('0x51')](_0x60fe('0x52'),_0xaf9c93);throw _0xaf9c93;});}return _0xaf0b66;})[_0x60fe('0x24')](respondWithResult(_0x45f080,0xc9))[_0x60fe('0x45')](handleError(_0x45f080,null));};exports[_0x60fe('0x53')]=function(_0x1c7d96,_0x38459f){var _0x109dcb={'where':{'id':_0x1c7d96['params']['id']}},_0xc4d38b={};_0xc4d38b[_0x60fe('0x31')]=_[_0x60fe('0x33')](db['Campaign']['rawAttributes']);_0x109dcb[_0x60fe('0x35')]=_[_0x60fe('0x34')](_0xc4d38b[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x1c7d96[_0x60fe('0x32')]['fields']));_0x109dcb[_0x60fe('0x35')]=_0x109dcb[_0x60fe('0x35')][_0x60fe('0x48')]?_0x109dcb['attributes']:_0xc4d38b['model'];if(_0x1c7d96[_0x60fe('0x32')][_0x60fe('0x42')]){_0x109dcb['include']=[{'all':!![]}];}_0x109dcb=_[_0x60fe('0x3f')]({},_0x109dcb,_0x1c7d96[_0x60fe('0x41')]);return db['Campaign'][_0x60fe('0x4e')](_0x109dcb)['then'](handleEntityNotFound(_0x38459f,null))[_0x60fe('0x24')](function(_0x1db873){if(_0x1db873){var _0x2c90e8=_0x1db873['get']({'plain':!![]});_0x2c90e8=qs['omit'](_0x2c90e8,['id',_0x60fe('0x54'),_0x60fe('0x55')]);_0x1c7d96[_0x60fe('0x56')]=_['omit'](_0x1c7d96[_0x60fe('0x56')],['id',_0x60fe('0x54'),'updatedAt']);return db[_0x60fe('0x2c')][_0x60fe('0x49')](_['merge'](_0x2c90e8,_0x1c7d96['body']),{'include':_0x1c7d96['query']['includeAll']?[{'all':!![]}]:undefined})[_0x60fe('0x24')](function(_0x590ebb){var _0x47aa88=_0x1c7d96[_0x60fe('0x4a')]['get']({'plain':!![]});if(!_0x47aa88)throw new Error(_0x60fe('0x4b'));if(_0x47aa88[_0x60fe('0x57')]===_0x60fe('0x4a')){var _0x4bfc3c=_0x590ebb[_0x60fe('0x26')]({'plain':!![]});var _0x54b248=_0x60fe('0x4c');return db['UserProfileSection'][_0x60fe('0x4e')]({'where':{'name':_0x54b248,'userProfileId':_0x47aa88[_0x60fe('0x4f')]},'raw':!![]})[_0x60fe('0x24')](function(_0x4ac08){if(_0x4ac08&&_0x4ac08['autoAssociation']===0x0){return db[_0x60fe('0x27')][_0x60fe('0x49')]({'name':_0x4bfc3c[_0x60fe('0x29')],'resourceId':_0x4bfc3c['id'],'type':_0x4ac08['name'],'sectionId':_0x4ac08['id']},{})[_0x60fe('0x24')](function(){return _0x590ebb;});}else{return _0x590ebb;}})['catch'](function(_0x3325da){logger[_0x60fe('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3325da);throw _0x3325da;});}return _0x590ebb;});}})[_0x60fe('0x24')](respondWithResult(_0x38459f,0xc9))[_0x60fe('0x45')](handleError(_0x38459f,null));};exports[_0x60fe('0x23')]=function(_0x5a7c22,_0x60e1ae){if(_0x5a7c22[_0x60fe('0x56')]['id']){delete _0x5a7c22['body']['id'];}return db[_0x60fe('0x2c')]['find']({'where':{'id':_0x5a7c22['params']['id']}})['then'](handleEntityNotFound(_0x60e1ae,null))[_0x60fe('0x24')](saveUpdates(_0x5a7c22[_0x60fe('0x56')],null))[_0x60fe('0x24')](respondWithResult(_0x60e1ae,null))[_0x60fe('0x45')](handleError(_0x60e1ae,null));};exports['destroy']=function(_0x27947f,_0x206649){return db['Campaign'][_0x60fe('0x4e')]({'where':{'id':_0x27947f[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x206649,null))[_0x60fe('0x24')](removeEntity(_0x206649,null))[_0x60fe('0x45')](handleError(_0x206649,null));};exports['getHoppers']=function(_0x47556e,_0x2aefc3,_0x20f22d){var _0x295562={'raw':!![],'where':{}};var _0x25bf97={};var _0x48ba71={'count':0x0,'rows':[]};return db[_0x60fe('0x2c')][_0x60fe('0x58')]({'where':{'id':_0x47556e[_0x60fe('0x47')]['id']}})['then'](handleEntityNotFound(_0x2aefc3,null))['then'](function(_0x3c70ca){if(_0x3c70ca){_0x25bf97['model']=_['keys'](db['CmHopper'][_0x60fe('0x2d')]);_0x25bf97[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x47556e[_0x60fe('0x32')]);_0x25bf97[_0x60fe('0x3c')]=_[_0x60fe('0x34')](_0x25bf97['model'],_0x25bf97['query']);_0x295562['attributes']=_[_0x60fe('0x34')](_0x25bf97[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x47556e['query'][_0x60fe('0x36')]));_0x295562['attributes']=_0x295562['attributes'][_0x60fe('0x48')]?_0x295562[_0x60fe('0x35')]:_0x25bf97[_0x60fe('0x31')];if(!_0x47556e[_0x60fe('0x32')]['hasOwnProperty'](_0x60fe('0x38'))){_0x295562[_0x60fe('0x1c')]=qs[_0x60fe('0x1c')](_0x47556e[_0x60fe('0x32')][_0x60fe('0x1c')]);_0x295562[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x47556e['query'][_0x60fe('0x1a')]);}_0x295562[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x47556e[_0x60fe('0x32')]['sort']);_0x295562[_0x60fe('0x3b')]=qs[_0x60fe('0x3c')](_[_0x60fe('0x3d')](_0x47556e[_0x60fe('0x32')],_0x25bf97[_0x60fe('0x3c')]));_0x295562[_0x60fe('0x3b')][_0x60fe('0x59')]=_0x3c70ca['id'];if(_0x47556e['query'][_0x60fe('0x3e')]){_0x295562[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x295562[_0x60fe('0x3b')],{'$or':_['map'](_0x295562[_0x60fe('0x35')],function(_0x4c5aae){var _0x46ebf8={};_0x46ebf8[_0x4c5aae]={'$like':'%'+_0x47556e[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x46ebf8;})});}_0x295562=_[_0x60fe('0x3f')]({},_0x295562,_0x47556e[_0x60fe('0x41')]);return db[_0x60fe('0x5a')][_0x60fe('0x1d')]({'where':_0x295562['where']})['then'](function(_0x1adadf){_0x48ba71['count']=_0x1adadf;if(_0x47556e[_0x60fe('0x32')][_0x60fe('0x42')]){_0x295562['include']=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x295562);})['then'](function(_0x2723d8){_0x48ba71['rows']=_0x2723d8;return _0x48ba71;});}})['then'](respondWithFilteredResult(_0x2aefc3,_0x295562))[_0x60fe('0x45')](handleError(_0x2aefc3,null));};exports[_0x60fe('0x5b')]=function(_0x14af92,_0x117c43,_0x2e8986){var _0x2d3491={'raw':!![],'where':{}};var _0x2e220c={};var _0x5a5ec8={'count':0x0,'rows':[]};return db[_0x60fe('0x2c')]['findOne']({'where':{'id':_0x14af92['params']['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x117c43,null))[_0x60fe('0x24')](function(_0x514363){if(_0x514363){_0x2e220c[_0x60fe('0x31')]=_[_0x60fe('0x33')](db['CmHopperHistory']['rawAttributes']);_0x2e220c[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x14af92[_0x60fe('0x32')]);_0x2e220c[_0x60fe('0x3c')]=_[_0x60fe('0x34')](_0x2e220c[_0x60fe('0x31')],_0x2e220c[_0x60fe('0x32')]);_0x2d3491[_0x60fe('0x35')]=_[_0x60fe('0x34')](_0x2e220c[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x14af92['query'][_0x60fe('0x36')]));_0x2d3491[_0x60fe('0x35')]=_0x2d3491[_0x60fe('0x35')]['length']?_0x2d3491[_0x60fe('0x35')]:_0x2e220c[_0x60fe('0x31')];if(!_0x14af92[_0x60fe('0x32')]['hasOwnProperty']('nolimit')){_0x2d3491[_0x60fe('0x1c')]=qs['limit'](_0x14af92[_0x60fe('0x32')]['limit']);_0x2d3491[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x14af92[_0x60fe('0x32')][_0x60fe('0x1a')]);}_0x2d3491[_0x60fe('0x39')]=qs['sort'](_0x14af92[_0x60fe('0x32')][_0x60fe('0x3a')]);_0x2d3491[_0x60fe('0x3b')]=qs[_0x60fe('0x3c')](_[_0x60fe('0x3d')](_0x14af92[_0x60fe('0x32')],_0x2e220c[_0x60fe('0x3c')]));_0x2d3491['where'][_0x60fe('0x59')]=_0x514363['id'];if(_0x14af92[_0x60fe('0x32')]['filter']){_0x2d3491[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x2d3491['where'],{'$or':_[_0x60fe('0x2b')](_0x2d3491[_0x60fe('0x35')],function(_0x76ebca){var _0x369b21={};_0x369b21[_0x76ebca]={'$like':'%'+_0x14af92[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x369b21;})});}_0x2d3491=_['merge']({},_0x2d3491,_0x14af92['options']);return db[_0x60fe('0x5c')]['count']({'where':_0x2d3491[_0x60fe('0x3b')]})[_0x60fe('0x24')](function(_0x3ce37e){_0x5a5ec8[_0x60fe('0x1d')]=_0x3ce37e;if(_0x14af92[_0x60fe('0x32')][_0x60fe('0x42')]){_0x2d3491[_0x60fe('0x43')]=[{'all':!![]}];}return db[_0x60fe('0x5c')][_0x60fe('0x44')](_0x2d3491);})[_0x60fe('0x24')](function(_0x2430fb){_0x5a5ec8['rows']=_0x2430fb;return _0x5a5ec8;});}})[_0x60fe('0x24')](respondWithFilteredResult(_0x117c43,_0x2d3491))[_0x60fe('0x45')](handleError(_0x117c43,null));};exports['getHopperFinals']=function(_0x206507,_0x32b315,_0x1f734f){var _0x2bc864={'raw':!![],'where':{}};var _0x2f2e76={};var _0x34c205={'count':0x0,'rows':[]};return db[_0x60fe('0x2c')][_0x60fe('0x58')]({'where':{'id':_0x206507['params']['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x32b315,null))[_0x60fe('0x24')](function(_0x5bfb87){if(_0x5bfb87){_0x2f2e76['model']=_[_0x60fe('0x33')](db[_0x60fe('0x5d')]['rawAttributes']);_0x2f2e76[_0x60fe('0x32')]=_['keys'](_0x206507['query']);_0x2f2e76[_0x60fe('0x3c')]=_[_0x60fe('0x34')](_0x2f2e76['model'],_0x2f2e76[_0x60fe('0x32')]);_0x2bc864['attributes']=_['intersection'](_0x2f2e76[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x206507[_0x60fe('0x32')][_0x60fe('0x36')]));_0x2bc864[_0x60fe('0x35')]=_0x2bc864[_0x60fe('0x35')]['length']?_0x2bc864[_0x60fe('0x35')]:_0x2f2e76[_0x60fe('0x31')];if(!_0x206507['query'][_0x60fe('0x37')](_0x60fe('0x38'))){_0x2bc864[_0x60fe('0x1c')]=qs[_0x60fe('0x1c')](_0x206507[_0x60fe('0x32')]['limit']);_0x2bc864[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x206507[_0x60fe('0x32')][_0x60fe('0x1a')]);}_0x2bc864[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x206507[_0x60fe('0x32')][_0x60fe('0x3a')]);_0x2bc864[_0x60fe('0x3b')]=qs['filters'](_[_0x60fe('0x3d')](_0x206507[_0x60fe('0x32')],_0x2f2e76['filters']));_0x2bc864[_0x60fe('0x3b')][_0x60fe('0x59')]=_0x5bfb87['id'];if(_0x206507[_0x60fe('0x32')][_0x60fe('0x3e')]){_0x2bc864[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x2bc864[_0x60fe('0x3b')],{'$or':_[_0x60fe('0x2b')](_0x2bc864[_0x60fe('0x35')],function(_0x30d391){var _0x3236ca={};_0x3236ca[_0x30d391]={'$like':'%'+_0x206507[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x3236ca;})});}_0x2bc864=_['merge']({},_0x2bc864,_0x206507[_0x60fe('0x41')]);return db[_0x60fe('0x5d')][_0x60fe('0x1d')]({'where':_0x2bc864['where']})[_0x60fe('0x24')](function(_0x33e293){_0x34c205[_0x60fe('0x1d')]=_0x33e293;if(_0x206507['query'][_0x60fe('0x42')]){_0x2bc864[_0x60fe('0x43')]=[{'all':!![]}];}return db[_0x60fe('0x5d')][_0x60fe('0x44')](_0x2bc864);})['then'](function(_0x54a0c2){_0x34c205[_0x60fe('0x5e')]=_0x54a0c2;return _0x34c205;});}})['then'](respondWithFilteredResult(_0x32b315,_0x2bc864))['catch'](handleError(_0x32b315,null));};exports[_0x60fe('0x5f')]=function(_0x3136c8,_0x44ea4d,_0x27e676){var _0x2403f8={'raw':!![],'where':{}};var _0x349fac={};var _0x7f035c={'count':0x0,'rows':[]};return db[_0x60fe('0x2c')][_0x60fe('0x58')]({'where':{'id':_0x3136c8[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x44ea4d,null))[_0x60fe('0x24')](function(_0x3cf644){if(_0x3cf644){_0x349fac[_0x60fe('0x31')]=_[_0x60fe('0x33')](db[_0x60fe('0x60')]['rawAttributes']);_0x349fac[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x3136c8[_0x60fe('0x32')]);_0x349fac['filters']=_[_0x60fe('0x34')](_0x349fac[_0x60fe('0x31')],_0x349fac[_0x60fe('0x32')]);_0x2403f8['attributes']=_[_0x60fe('0x34')](_0x349fac[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x3136c8[_0x60fe('0x32')][_0x60fe('0x36')]));_0x2403f8['attributes']=_0x2403f8[_0x60fe('0x35')][_0x60fe('0x48')]?_0x2403f8['attributes']:_0x349fac[_0x60fe('0x31')];if(!_0x3136c8[_0x60fe('0x32')][_0x60fe('0x37')]('nolimit')){_0x2403f8[_0x60fe('0x1c')]=qs[_0x60fe('0x1c')](_0x3136c8[_0x60fe('0x32')]['limit']);_0x2403f8[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x3136c8['query']['offset']);}_0x2403f8[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x3136c8[_0x60fe('0x32')][_0x60fe('0x3a')]);_0x2403f8[_0x60fe('0x3b')]=qs[_0x60fe('0x3c')](_[_0x60fe('0x3d')](_0x3136c8['query'],_0x349fac[_0x60fe('0x3c')]));_0x2403f8[_0x60fe('0x3b')]['CampaignId']=_0x3cf644['id'];if(_0x3136c8[_0x60fe('0x32')][_0x60fe('0x3e')]){_0x2403f8[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x2403f8[_0x60fe('0x3b')],{'$or':_[_0x60fe('0x2b')](_0x2403f8[_0x60fe('0x35')],function(_0x23b7ea){var _0x14def8={};_0x14def8[_0x23b7ea]={'$like':'%'+_0x3136c8[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x14def8;})});}_0x2403f8=_[_0x60fe('0x3f')]({},_0x2403f8,_0x3136c8[_0x60fe('0x41')]);return db['CmHopperBlack'][_0x60fe('0x1d')]({'where':_0x2403f8[_0x60fe('0x3b')]})[_0x60fe('0x24')](function(_0x1b91e9){_0x7f035c[_0x60fe('0x1d')]=_0x1b91e9;if(_0x3136c8[_0x60fe('0x32')][_0x60fe('0x42')]){_0x2403f8[_0x60fe('0x43')]=[{'all':!![]}];}return db[_0x60fe('0x60')][_0x60fe('0x44')](_0x2403f8);})[_0x60fe('0x24')](function(_0x13db1f){_0x7f035c['rows']=_0x13db1f;return _0x7f035c;});}})[_0x60fe('0x24')](respondWithFilteredResult(_0x44ea4d,_0x2403f8))['catch'](handleError(_0x44ea4d,null));};exports[_0x60fe('0x61')]=function(_0x71b36b,_0x46e309,_0x22020f){var _0x2f5b59={};var _0x4a4c82={};var _0x5c8ab5;var _0x4ca9e3;return db['Campaign'][_0x60fe('0x58')]({'where':{'id':_0x71b36b[_0x60fe('0x47')]['id']}})['then'](handleEntityNotFound(_0x46e309,null))[_0x60fe('0x24')](function(_0x27a792){if(_0x27a792){_0x5c8ab5=_0x27a792;_0x4a4c82[_0x60fe('0x31')]=_['keys'](db[_0x60fe('0x62')]['rawAttributes']);_0x4a4c82[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x71b36b[_0x60fe('0x32')]);_0x4a4c82[_0x60fe('0x3c')]=_[_0x60fe('0x34')](_0x4a4c82[_0x60fe('0x31')],_0x4a4c82[_0x60fe('0x32')]);_0x2f5b59[_0x60fe('0x35')]=_[_0x60fe('0x34')](_0x4a4c82[_0x60fe('0x31')],qs[_0x60fe('0x36')](_0x71b36b['query'][_0x60fe('0x36')]));_0x2f5b59[_0x60fe('0x35')]=_0x2f5b59[_0x60fe('0x35')]['length']?_0x2f5b59[_0x60fe('0x35')]:_0x4a4c82[_0x60fe('0x31')];_0x2f5b59[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x71b36b['query'][_0x60fe('0x3a')]);_0x2f5b59[_0x60fe('0x3b')]=qs['filters'](_[_0x60fe('0x3d')](_0x71b36b['query'],_0x4a4c82['filters']));if(_0x71b36b[_0x60fe('0x32')]['filter']){_0x2f5b59[_0x60fe('0x3b')]=_[_0x60fe('0x3f')](_0x2f5b59[_0x60fe('0x3b')],{'$or':_['map'](_0x2f5b59[_0x60fe('0x35')],function(_0x1548ba){var _0x3713a4={};_0x3713a4[_0x1548ba]={'$like':'%'+_0x71b36b[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x3713a4;})});}_0x2f5b59=_[_0x60fe('0x3f')]({},_0x2f5b59,_0x71b36b[_0x60fe('0x41')]);return _0x5c8ab5[_0x60fe('0x61')](_0x2f5b59);}})[_0x60fe('0x24')](function(_0x4d9913){if(_0x4d9913){_0x4ca9e3=_0x4d9913['length'];if(!_0x71b36b[_0x60fe('0x32')][_0x60fe('0x37')](_0x60fe('0x38'))){_0x2f5b59['limit']=qs[_0x60fe('0x1c')](_0x71b36b[_0x60fe('0x32')]['limit']);_0x2f5b59[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x71b36b[_0x60fe('0x32')]['offset']);}return _0x5c8ab5[_0x60fe('0x61')](_0x2f5b59);}})[_0x60fe('0x24')](function(_0xec233d){if(_0xec233d){return _0xec233d?{'count':_0x4ca9e3,'rows':_0xec233d}:null;}})[_0x60fe('0x24')](respondWithResult(_0x46e309,null))[_0x60fe('0x45')](handleError(_0x46e309,null));};exports[_0x60fe('0x63')]=function(_0x10f7b3,_0x425d68,_0x375517){var _0x5a6861,_0x59afd9;return db[_0x60fe('0x2c')][_0x60fe('0x4e')]({'where':{'id':_0x10f7b3['params']['id']}})['then'](handleEntityNotFound(_0x425d68,null))[_0x60fe('0x24')](function(_0x2be5b3){if(_0x2be5b3){_0x59afd9=_0x2be5b3;return _0x2be5b3[_0x60fe('0x63')](_0x10f7b3[_0x60fe('0x56')][_0x60fe('0x64')],_[_0x60fe('0x65')](_0x10f7b3[_0x60fe('0x56')],[_0x60fe('0x64'),'id'])||{});}return null;})[_0x60fe('0x66')](function(_0x20259d){var _0x5d7d22;_0x5a6861=_0x20259d||[];var _0x56a916=[];if(_0x20259d){for(var _0x3dff40=0x0;_0x3dff40<_0x20259d[_0x60fe('0x48')];_0x3dff40+=0x1){var _0xfefb80=_0x20259d[_0x3dff40]['get']({'plain':!![]});_0x59afd9['dialCheckDuplicateType']=_0x10f7b3[_0x60fe('0x56')][_0x60fe('0x67')]?_0x10f7b3[_0x60fe('0x56')]['dialCheckDuplicateType']:_0x59afd9[_0x60fe('0x67')];switch(_0x59afd9[_0x60fe('0x67')]){case _0x60fe('0x68'):_0x5d7d22=squel[_0x60fe('0x69')]()[_0x60fe('0x6a')]('cm_hopper')[_0x60fe('0x6b')]([_0x60fe('0x6c'),_0x60fe('0x6d'),'ContactId',_0x60fe('0x6e'),_0x60fe('0x59'),_0x60fe('0x54'),_0x60fe('0x55')],squel[_0x60fe('0x6f')]()[_0x60fe('0x70')]('phone',_0x60fe('0x6c'))[_0x60fe('0x70')](_0x60fe('0x71'),'scheduledAt')['field']('id',_0x60fe('0x72'))[_0x60fe('0x70')](_0xfefb80[_0x60fe('0x73')][_0x60fe('0x74')](),_0x60fe('0x6e'))['field'](_0x10f7b3[_0x60fe('0x47')]['id'][_0x60fe('0x74')](),_0x60fe('0x59'))['field']('NOW()',_0x60fe('0x54'))[_0x60fe('0x70')](_0x60fe('0x71'),'updatedAt')[_0x60fe('0x75')](_0x60fe('0x76'))[_0x60fe('0x3b')](_0x60fe('0x77'))[_0x60fe('0x3b')](_0x60fe('0x78'),_0xfefb80['CmListId'][_0x60fe('0x74')]())[_0x60fe('0x3b')](_0x60fe('0x79'))[_0x60fe('0x3b')](_0x60fe('0x7a'),squel[_0x60fe('0x6f')]()['field']('COALESCE(calleridnum,\x27\x27)')['from']('cm_hopper_final')[_0x60fe('0x3b')](_0x60fe('0x7b'),_0x10f7b3[_0x60fe('0x47')]['id'][_0x60fe('0x74')]()))[_0x60fe('0x3b')](_0x60fe('0x7a'),squel[_0x60fe('0x6f')]()[_0x60fe('0x70')](_0x60fe('0x7c'))['from'](_0x60fe('0x7d'))['where'](_0x60fe('0x7b'),_0x10f7b3[_0x60fe('0x47')]['id']['toString']())))[_0x60fe('0x74')]();break;case _0x60fe('0x7e'):_0x5d7d22=squel[_0x60fe('0x69')]()[_0x60fe('0x6a')]('cm_hopper')['fromQuery']([_0x60fe('0x6c'),'scheduledAt',_0x60fe('0x72'),_0x60fe('0x6e'),'CampaignId',_0x60fe('0x54'),'updatedAt'],squel[_0x60fe('0x6f')]()[_0x60fe('0x70')](_0x60fe('0x6c'),_0x60fe('0x6c'))['field']('NOW()','scheduledAt')[_0x60fe('0x70')]('id','ContactId')[_0x60fe('0x70')](_0xfefb80[_0x60fe('0x73')]['toString'](),_0x60fe('0x6e'))[_0x60fe('0x70')](_0x10f7b3['params']['id'][_0x60fe('0x74')](),'CampaignId')['field'](_0x60fe('0x71'),'createdAt')[_0x60fe('0x70')](_0x60fe('0x71'),_0x60fe('0x55'))[_0x60fe('0x75')](_0x60fe('0x76'))['where']('deletedAt\x20IS\x20NULL')[_0x60fe('0x3b')](_0x60fe('0x78'),_0xfefb80['CmListId'][_0x60fe('0x74')]())['where'](_0x60fe('0x79'))[_0x60fe('0x3b')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x60fe('0x70')](_0x60fe('0x7c'))[_0x60fe('0x75')](_0x60fe('0x7d'))[_0x60fe('0x3b')]('CampaignId\x20=\x20?',_0x10f7b3[_0x60fe('0x47')]['id']['toString']())))[_0x60fe('0x74')]();break;default:_0x5d7d22=squel[_0x60fe('0x69')]()[_0x60fe('0x6a')](_0x60fe('0x7d'))[_0x60fe('0x6b')]([_0x60fe('0x6c'),_0x60fe('0x6d'),'ContactId',_0x60fe('0x6e'),_0x60fe('0x59'),_0x60fe('0x54'),_0x60fe('0x55')],squel[_0x60fe('0x6f')]()[_0x60fe('0x70')](_0x60fe('0x6c'),_0x60fe('0x6c'))[_0x60fe('0x70')]('NOW()','scheduledAt')[_0x60fe('0x70')]('id','ContactId')[_0x60fe('0x70')](_0xfefb80[_0x60fe('0x73')]['toString'](),_0x60fe('0x6e'))['field'](_0x10f7b3['params']['id'][_0x60fe('0x74')](),_0x60fe('0x59'))['field'](_0x60fe('0x71'),_0x60fe('0x54'))[_0x60fe('0x70')](_0x60fe('0x71'),_0x60fe('0x55'))[_0x60fe('0x75')](_0x60fe('0x76'))['where']('deletedAt\x20IS\x20NULL')[_0x60fe('0x3b')]('ListId\x20=\x20?',_0xfefb80[_0x60fe('0x73')][_0x60fe('0x74')]())['where'](_0x60fe('0x79')))[_0x60fe('0x74')]();}_0x56a916[_0x60fe('0x7f')](db[_0x60fe('0x80')]['query'](_0x5d7d22));}return BPromise[_0x60fe('0x81')](_0x56a916);}})[_0x60fe('0x24')](function(){return _0x5a6861;})['then'](respondWithResult(_0x425d68,null))[_0x60fe('0x45')](handleError(_0x425d68,null));};exports[_0x60fe('0x82')]=function(_0xf4e19d,_0x3960e3,_0x5698c4){return db[_0x60fe('0x2c')][_0x60fe('0x4e')]({'where':{'id':_0xf4e19d[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x3960e3,null))[_0x60fe('0x24')](function(_0xa7cd07){if(_0xa7cd07){return _0xa7cd07['removeLists'](_0xf4e19d[_0x60fe('0x32')][_0x60fe('0x64')]);}})[_0x60fe('0x24')](function(_0x357ab6){if(_0x357ab6){return db[_0x60fe('0x5a')][_0x60fe('0x25')]({'where':{'ListId':_0xf4e19d[_0x60fe('0x32')]['ids'],'CampaignId':_0xf4e19d[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](function(){return _0x357ab6;});}})['then'](respondWithStatusCode(_0x3960e3,null))[_0x60fe('0x45')](handleError(_0x3960e3,null));};exports[_0x60fe('0x83')]=function(_0x4f97d1,_0x55072e,_0x2160c8){var _0x28804a={};var _0x1ffe4f={};var _0x2e11b9;var _0x2b3199;return db['Campaign']['findOne']({'where':{'id':_0x4f97d1['params']['id']}})['then'](handleEntityNotFound(_0x55072e,null))[_0x60fe('0x24')](function(_0x2ddaeb){if(_0x2ddaeb){_0x2e11b9=_0x2ddaeb;_0x1ffe4f[_0x60fe('0x31')]=_[_0x60fe('0x33')](db[_0x60fe('0x62')][_0x60fe('0x2d')]);_0x1ffe4f[_0x60fe('0x32')]=_[_0x60fe('0x33')](_0x4f97d1[_0x60fe('0x32')]);_0x1ffe4f[_0x60fe('0x3c')]=_['intersection'](_0x1ffe4f['model'],_0x1ffe4f[_0x60fe('0x32')]);_0x28804a['attributes']=_['intersection'](_0x1ffe4f['model'],qs[_0x60fe('0x36')](_0x4f97d1['query'][_0x60fe('0x36')]));_0x28804a[_0x60fe('0x35')]=_0x28804a[_0x60fe('0x35')]['length']?_0x28804a[_0x60fe('0x35')]:_0x1ffe4f['model'];_0x28804a[_0x60fe('0x39')]=qs[_0x60fe('0x3a')](_0x4f97d1[_0x60fe('0x32')][_0x60fe('0x3a')]);_0x28804a[_0x60fe('0x3b')]=qs[_0x60fe('0x3c')](_[_0x60fe('0x3d')](_0x4f97d1[_0x60fe('0x32')],_0x1ffe4f[_0x60fe('0x3c')]));if(_0x4f97d1[_0x60fe('0x32')][_0x60fe('0x3e')]){_0x28804a[_0x60fe('0x3b')]=_['merge'](_0x28804a[_0x60fe('0x3b')],{'$or':_[_0x60fe('0x2b')](_0x28804a[_0x60fe('0x35')],function(_0xddc358){var _0x224654={};_0x224654[_0xddc358]={'$like':'%'+_0x4f97d1[_0x60fe('0x32')][_0x60fe('0x3e')]+'%'};return _0x224654;})});}_0x28804a=_[_0x60fe('0x3f')]({},_0x28804a,_0x4f97d1[_0x60fe('0x41')]);return _0x2e11b9['getBlackLists'](_0x28804a);}})['then'](function(_0x42de65){if(_0x42de65){_0x2b3199=_0x42de65[_0x60fe('0x48')];if(!_0x4f97d1[_0x60fe('0x32')][_0x60fe('0x37')](_0x60fe('0x38'))){_0x28804a[_0x60fe('0x1c')]=qs[_0x60fe('0x1c')](_0x4f97d1[_0x60fe('0x32')][_0x60fe('0x1c')]);_0x28804a[_0x60fe('0x1a')]=qs[_0x60fe('0x1a')](_0x4f97d1['query'][_0x60fe('0x1a')]);}return _0x2e11b9[_0x60fe('0x83')](_0x28804a);}})['then'](function(_0x1b5673){if(_0x1b5673){return _0x1b5673?{'count':_0x2b3199,'rows':_0x1b5673}:null;}})[_0x60fe('0x24')](respondWithResult(_0x55072e,null))[_0x60fe('0x45')](handleError(_0x55072e,null));};exports[_0x60fe('0x84')]=function(_0x23eb2c,_0x5b7fab,_0x5f18ec){var _0x3f7b6b,_0x303866;return db['Campaign']['find']({'where':{'id':_0x23eb2c[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x5b7fab,null))[_0x60fe('0x24')](function(_0xf52630){if(_0xf52630){_0x303866=_0xf52630;return _0xf52630[_0x60fe('0x84')](_0x23eb2c[_0x60fe('0x56')]['ids'],_[_0x60fe('0x65')](_0x23eb2c[_0x60fe('0x56')],[_0x60fe('0x64'),'id'])||{});}return null;})[_0x60fe('0x66')](function(_0x144e4f){var _0x450267;_0x3f7b6b=_0x144e4f||[];var _0x58b466=[];if(_0x144e4f){for(var _0x295b67=0x0;_0x295b67<_0x144e4f[_0x60fe('0x48')];_0x295b67+=0x1){var _0x8d73e4=_0x144e4f[_0x295b67][_0x60fe('0x26')]({'plain':!![]});_0x450267=squel['insert']()[_0x60fe('0x6a')](_0x60fe('0x85'))['fromQuery']([_0x60fe('0x6c'),'ContactId','ListId',_0x60fe('0x59'),'createdAt',_0x60fe('0x55')],squel[_0x60fe('0x6f')]()[_0x60fe('0x70')](_0x60fe('0x6c'),_0x60fe('0x6c'))[_0x60fe('0x70')]('id',_0x60fe('0x72'))['field'](_0x8d73e4[_0x60fe('0x73')][_0x60fe('0x74')](),_0x60fe('0x6e'))[_0x60fe('0x70')](_0x23eb2c[_0x60fe('0x47')]['id'][_0x60fe('0x74')](),'CampaignId')[_0x60fe('0x70')](_0x60fe('0x71'),_0x60fe('0x54'))[_0x60fe('0x70')](_0x60fe('0x71'),_0x60fe('0x55'))[_0x60fe('0x75')](_0x60fe('0x76'))['where'](_0x60fe('0x77'))[_0x60fe('0x3b')](_0x60fe('0x78'),_0x8d73e4[_0x60fe('0x73')][_0x60fe('0x74')]())[_0x60fe('0x3b')](_0x60fe('0x79')))[_0x60fe('0x74')]();_0x58b466['push'](db[_0x60fe('0x80')][_0x60fe('0x32')](_0x450267));}return BPromise[_0x60fe('0x81')](_0x58b466);}})[_0x60fe('0x24')](function(){return _0x3f7b6b;})['then'](respondWithResult(_0x5b7fab,null))[_0x60fe('0x45')](handleError(_0x5b7fab,null));};exports[_0x60fe('0x86')]=function(_0x3cce92,_0x57c6f7,_0x17185b){return db['Campaign'][_0x60fe('0x4e')]({'where':{'id':_0x3cce92[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](handleEntityNotFound(_0x57c6f7,null))[_0x60fe('0x24')](function(_0x281800){if(_0x281800){return _0x281800[_0x60fe('0x86')](_0x3cce92[_0x60fe('0x32')][_0x60fe('0x64')]);}})['then'](function(_0x452e89){if(_0x452e89){return db[_0x60fe('0x60')][_0x60fe('0x25')]({'where':{'ListId':_0x3cce92['query'][_0x60fe('0x64')],'CampaignId':_0x3cce92[_0x60fe('0x47')]['id']}})[_0x60fe('0x24')](function(){return _0x452e89;});}})['then'](respondWithStatusCode(_0x57c6f7,null))[_0x60fe('0x45')](handleError(_0x57c6f7,null));};
\ No newline at end of file
index 058bce7..1f588d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x210ceb,_0x2deba8){var _0x5a4541=function(_0x54f80a){while(--_0x54f80a){_0x210ceb['push'](_0x210ceb['shift']());}};_0x5a4541(++_0x2deba8);}(_0x7a54,0x106));var _0x47a5=function(_0x5738aa,_0xa900d1){_0x5738aa=_0x5738aa-0x0;var _0x716497=_0x7a54[_0x5738aa];return _0x716497;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x4c22d6,_0x383512){var _0x35179b=function(_0x42ce65){while(--_0x42ce65){_0x4c22d6['push'](_0x4c22d6['shift']());}};_0x35179b(++_0x383512);}(_0x7a54,0x106));var _0x47a5=function(_0x5afb59,_0x50d8ad){_0x5afb59=_0x5afb59-0x0;var _0x4fe9a4=_0x7a54[_0x5afb59];return _0x4fe9a4;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 102fe86..9eb3bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['attributes','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','options','raw','limit','include','map','model'];(function(_0x1d4975,_0x196c40){var _0x9d5dcd=function(_0x20f1d3){while(--_0x20f1d3){_0x1d4975['push'](_0x1d4975['shift']());}};_0x9d5dcd(++_0x196c40);}(_0x3164,0x182));var _0x4316=function(_0x5d3b1c,_0x3b4a74){_0x5d3b1c=_0x5d3b1c-0x0;var _0x4dc4dd=_0x3164[_0x5d3b1c];return _0x4dc4dd;};'use strict';var _=require(_0x4316('0x0'));var util=require(_0x4316('0x1'));var moment=require(_0x4316('0x2'));var BPromise=require(_0x4316('0x3'));var rs=require(_0x4316('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4316('0x5'))['db'];var utils=require(_0x4316('0x6'));var logger=require(_0x4316('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4316('0x8'));var client=jayson[_0x4316('0x9')][_0x4316('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c3c1,_0x25be1f,_0x473cd2){return new BPromise(function(_0x1bcd38,_0x2b1420){return client[_0x4316('0xb')](_0x29c3c1,_0x473cd2)[_0x4316('0xc')](function(_0x2ad6dc){logger[_0x4316('0xd')](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));logger['debug'](_0x4316('0x10'),_0x25be1f,_0x4316('0xf'),JSON[_0x4316('0x11')](_0x2ad6dc));if(_0x2ad6dc[_0x4316('0x12')]){if(_0x2ad6dc['error'][_0x4316('0x13')]===0x1f4){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2ad6dc[_0x4316('0x12')]['message']);return _0x2b1420(_0x2ad6dc[_0x4316('0x12')]['message']);}logger['error']('Campaign,\x20%s,\x20%s',_0x25be1f,_0x2ad6dc[_0x4316('0x12')][_0x4316('0x14')]);return _0x1bcd38(_0x2ad6dc['error'][_0x4316('0x14')]);}else{logger['info'](_0x4316('0xe'),_0x25be1f,_0x4316('0xf'));_0x1bcd38(_0x2ad6dc[_0x4316('0x15')][_0x4316('0x14')]);}})[_0x4316('0x16')](function(_0x2d579f){logger[_0x4316('0x12')](_0x4316('0xe'),_0x25be1f,_0x2d579f);_0x2b1420(_0x2d579f);});});}exports[_0x4316('0x17')]=function(_0x3bf044){var _0x5a414f=this;return new Promise(function(_0x43069f,_0x34c667){return db['Campaign']['findAll']({'raw':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x19')]===undefined?!![]:![]:!![],'where':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['where']||null:null,'attributes':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')]['attributes']||null:null,'limit':_0x3bf044[_0x4316('0x18')]?_0x3bf044[_0x4316('0x18')][_0x4316('0x1a')]||null:null,'include':_0x3bf044['options']?_0x3bf044[_0x4316('0x18')][_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3bf044['options'][_0x4316('0x1b')],function(_0x3388ae){return{'model':db[_0x3388ae[_0x4316('0x1d')]],'as':_0x3388ae['as'],'attributes':_0x3388ae[_0x4316('0x1e')],'include':_0x3388ae[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x3388ae[_0x4316('0x1b')],function(_0x46bd61){return{'model':db[_0x46bd61[_0x4316('0x1d')]],'as':_0x46bd61['as'],'attributes':_0x46bd61[_0x4316('0x1e')],'include':_0x46bd61[_0x4316('0x1b')]?_[_0x4316('0x1c')](_0x46bd61[_0x4316('0x1b')],function(_0x1f7391){return{'model':db[_0x1f7391[_0x4316('0x1d')]],'as':_0x1f7391['as'],'attributes':_0x1f7391[_0x4316('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4316('0xc')](function(_0x4cdb10){logger['info'](_0x4316('0x17'),_0x3bf044);logger[_0x4316('0x1f')](_0x4316('0x17'),_0x3bf044,JSON[_0x4316('0x11')](_0x4cdb10));_0x43069f(_0x4cdb10);})[_0x4316('0x16')](function(_0x55cfb2){logger[_0x4316('0x12')]('GetCampaign',_0x55cfb2[_0x4316('0x14')],_0x3bf044);_0x34c667(_0x5a414f['error'](0x1f4,_0x55cfb2[_0x4316('0x14')]));});});};
\ No newline at end of file
+var _0x3cfb=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','where','attributes','limit','include','map','model','lodash','util'];(function(_0x2a5160,_0x5f068d){var _0x2b42c5=function(_0x350590){while(--_0x350590){_0x2a5160['push'](_0x2a5160['shift']());}};_0x2b42c5(++_0x5f068d);}(_0x3cfb,0x1b8));var _0xb3cf=function(_0x4f75f9,_0x1e5f59){_0x4f75f9=_0x4f75f9-0x0;var _0xd19926=_0x3cfb[_0x4f75f9];return _0xd19926;};'use strict';var _=require(_0xb3cf('0x0'));var util=require(_0xb3cf('0x1'));var moment=require(_0xb3cf('0x2'));var BPromise=require(_0xb3cf('0x3'));var rs=require(_0xb3cf('0x4'));var fs=require('fs');var Redis=require(_0xb3cf('0x5'));var db=require(_0xb3cf('0x6'))['db'];var utils=require(_0xb3cf('0x7'));var logger=require('../../config/logger')(_0xb3cf('0x8'));var config=require(_0xb3cf('0x9'));var jayson=require(_0xb3cf('0xa'));var client=jayson['client'][_0xb3cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b7131,_0x42ce15,_0x53be8c){return new BPromise(function(_0x19ed7d,_0x4e4cc8){return client['request'](_0x1b7131,_0x53be8c)[_0xb3cf('0xc')](function(_0x44a55d){logger[_0xb3cf('0xd')](_0xb3cf('0xe'),_0x42ce15,_0xb3cf('0xf'));logger[_0xb3cf('0x10')](_0xb3cf('0x11'),_0x42ce15,_0xb3cf('0xf'),JSON[_0xb3cf('0x12')](_0x44a55d));if(_0x44a55d[_0xb3cf('0x13')]){if(_0x44a55d[_0xb3cf('0x13')][_0xb3cf('0x14')]===0x1f4){logger[_0xb3cf('0x13')](_0xb3cf('0xe'),_0x42ce15,_0x44a55d[_0xb3cf('0x13')]['message']);return _0x4e4cc8(_0x44a55d['error'][_0xb3cf('0x15')]);}logger[_0xb3cf('0x13')]('Campaign,\x20%s,\x20%s',_0x42ce15,_0x44a55d[_0xb3cf('0x13')]['message']);return _0x19ed7d(_0x44a55d['error'][_0xb3cf('0x15')]);}else{logger[_0xb3cf('0xd')](_0xb3cf('0xe'),_0x42ce15,'request\x20sent');_0x19ed7d(_0x44a55d[_0xb3cf('0x16')][_0xb3cf('0x15')]);}})[_0xb3cf('0x17')](function(_0x442fd6){logger[_0xb3cf('0x13')](_0xb3cf('0xe'),_0x42ce15,_0x442fd6);_0x4e4cc8(_0x442fd6);});});}exports[_0xb3cf('0x18')]=function(_0x2d0018){var _0x1526c9=this;return new Promise(function(_0x222c1d,_0x4b0a82){return db[_0xb3cf('0x19')][_0xb3cf('0x1a')]({'raw':_0x2d0018[_0xb3cf('0x1b')]?_0x2d0018[_0xb3cf('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2d0018[_0xb3cf('0x1b')]?_0x2d0018[_0xb3cf('0x1b')][_0xb3cf('0x1c')]||null:null,'attributes':_0x2d0018[_0xb3cf('0x1b')]?_0x2d0018[_0xb3cf('0x1b')][_0xb3cf('0x1d')]||null:null,'limit':_0x2d0018[_0xb3cf('0x1b')]?_0x2d0018[_0xb3cf('0x1b')][_0xb3cf('0x1e')]||null:null,'include':_0x2d0018[_0xb3cf('0x1b')]?_0x2d0018['options'][_0xb3cf('0x1f')]?_[_0xb3cf('0x20')](_0x2d0018[_0xb3cf('0x1b')][_0xb3cf('0x1f')],function(_0x1fb3ea){return{'model':db[_0x1fb3ea[_0xb3cf('0x21')]],'as':_0x1fb3ea['as'],'attributes':_0x1fb3ea[_0xb3cf('0x1d')],'include':_0x1fb3ea[_0xb3cf('0x1f')]?_[_0xb3cf('0x20')](_0x1fb3ea[_0xb3cf('0x1f')],function(_0x5d939e){return{'model':db[_0x5d939e[_0xb3cf('0x21')]],'as':_0x5d939e['as'],'attributes':_0x5d939e[_0xb3cf('0x1d')],'include':_0x5d939e[_0xb3cf('0x1f')]?_['map'](_0x5d939e['include'],function(_0x15cf4d){return{'model':db[_0x15cf4d[_0xb3cf('0x21')]],'as':_0x15cf4d['as'],'attributes':_0x15cf4d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xfc0f5b){logger[_0xb3cf('0xd')]('GetCampaign',_0x2d0018);logger[_0xb3cf('0x10')](_0xb3cf('0x18'),_0x2d0018,JSON[_0xb3cf('0x12')](_0xfc0f5b));_0x222c1d(_0xfc0f5b);})[_0xb3cf('0x17')](function(_0x1b1460){logger[_0xb3cf('0x13')](_0xb3cf('0x18'),_0x1b1460[_0xb3cf('0x15')],_0x2d0018);_0x4b0a82(_0x1526c9[_0xb3cf('0x13')](0x1f4,_0x1b1460[_0xb3cf('0x15')]));});});};
\ No newline at end of file
index 990b58b..3b82269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd7=['delete','removeLists','removeBlackLists','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','/:id','show','/:id/hoppers','isAuthenticated','getHoppers','getHopperHistories','/:id/hopper_finals','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','addLists','addBlackLists','put','update','destroy'];(function(_0xb54833,_0x334753){var _0xdf93fe=function(_0x14bf56){while(--_0x14bf56){_0xb54833['push'](_0xb54833['shift']());}};_0xdf93fe(++_0x334753);}(_0xfdd7,0xa3));var _0x7fdd=function(_0x2ae218,_0x21f227){_0x2ae218=_0x2ae218-0x0;var _0x1c65c4=_0xfdd7[_0x2ae218];return _0x1c65c4;};'use strict';var multer=require(_0x7fdd('0x0'));var util=require(_0x7fdd('0x1'));var path=require(_0x7fdd('0x2'));var timeout=require('connect-timeout');var express=require(_0x7fdd('0x3'));var router=express[_0x7fdd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7fdd('0x5'));var interaction=require(_0x7fdd('0x6'));var config=require(_0x7fdd('0x7'));var controller=require(_0x7fdd('0x8'));router[_0x7fdd('0x9')]('/',auth['isAuthenticated'](),controller[_0x7fdd('0xa')]);router[_0x7fdd('0x9')](_0x7fdd('0xb'),auth['isAuthenticated'](),controller[_0x7fdd('0xc')]);router[_0x7fdd('0x9')](_0x7fdd('0xd'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0xf')]);router['get']('/:id/hopper_histories',auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x10')]);router['get'](_0x7fdd('0x11'),auth['isAuthenticated'](),controller['getHopperFinals']);router[_0x7fdd('0x9')]('/:id/hopper_black',auth[_0x7fdd('0xe')](),controller['getHopperBlacks']);router[_0x7fdd('0x9')](_0x7fdd('0x12'),auth['isAuthenticated'](),controller[_0x7fdd('0x13')]);router[_0x7fdd('0x9')](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x15')]);router[_0x7fdd('0x16')]('/',auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x17')]);router['post']('/:id/clone',auth[_0x7fdd('0xe')](),controller['clone']);router[_0x7fdd('0x16')](_0x7fdd('0x12'),auth['isAuthenticated'](),controller[_0x7fdd('0x18')]);router['post'](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x19')]);router[_0x7fdd('0x1a')](_0x7fdd('0xb'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1b')]);router['delete'](_0x7fdd('0xb'),auth['isAuthenticated'](),controller[_0x7fdd('0x1c')]);router[_0x7fdd('0x1d')](_0x7fdd('0x12'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1e')]);router['delete'](_0x7fdd('0x14'),auth[_0x7fdd('0xe')](),controller[_0x7fdd('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x96c7=['./campaign.controller','get','isAuthenticated','index','/:id','show','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','update','destroy','/:id/lists','delete','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1b9272,_0x2e9166){var _0x30c0cc=function(_0x5972cb){while(--_0x5972cb){_0x1b9272['push'](_0x1b9272['shift']());}};_0x30c0cc(++_0x2e9166);}(_0x96c7,0xe0));var _0x796c=function(_0x171039,_0x52cf89){_0x171039=_0x171039-0x0;var _0x4bcc80=_0x96c7[_0x171039];return _0x4bcc80;};'use strict';var multer=require(_0x796c('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x796c('0x1'));var router=express[_0x796c('0x2')]();var fs_extra=require(_0x796c('0x3'));var auth=require(_0x796c('0x4'));var interaction=require(_0x796c('0x5'));var config=require(_0x796c('0x6'));var controller=require(_0x796c('0x7'));router[_0x796c('0x8')]('/',auth[_0x796c('0x9')](),controller[_0x796c('0xa')]);router['get'](_0x796c('0xb'),auth[_0x796c('0x9')](),controller[_0x796c('0xc')]);router[_0x796c('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x796c('0xd')]);router[_0x796c('0x8')](_0x796c('0xe'),auth[_0x796c('0x9')](),controller['getHopperHistories']);router[_0x796c('0x8')](_0x796c('0xf'),auth[_0x796c('0x9')](),controller[_0x796c('0x10')]);router[_0x796c('0x8')](_0x796c('0x11'),auth['isAuthenticated'](),controller[_0x796c('0x12')]);router[_0x796c('0x8')]('/:id/lists',auth[_0x796c('0x9')](),controller['getLists']);router[_0x796c('0x8')](_0x796c('0x13'),auth['isAuthenticated'](),controller[_0x796c('0x14')]);router[_0x796c('0x15')]('/',auth['isAuthenticated'](),controller[_0x796c('0x16')]);router[_0x796c('0x15')](_0x796c('0x17'),auth[_0x796c('0x9')](),controller[_0x796c('0x18')]);router['post']('/:id/lists',auth[_0x796c('0x9')](),controller[_0x796c('0x19')]);router['post']('/:id/blacklists',auth[_0x796c('0x9')](),controller[_0x796c('0x1a')]);router[_0x796c('0x1b')]('/:id',auth['isAuthenticated'](),controller[_0x796c('0x1c')]);router['delete'](_0x796c('0xb'),auth['isAuthenticated'](),controller[_0x796c('0x1d')]);router['delete'](_0x796c('0x1e'),auth[_0x796c('0x9')](),controller['removeLists']);router[_0x796c('0x1f')](_0x796c('0x13'),auth[_0x796c('0x9')](),controller['removeBlackLists']);module[_0x796c('0x20')]=router;
\ No newline at end of file
index 9edacea..722569a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d4=['exports','STRING','TEXT','getDataValue','key','sequelize'];(function(_0x3a7cd9,_0x2efead){var _0x3abab5=function(_0x4820d7){while(--_0x4820d7){_0x3a7cd9['push'](_0x3a7cd9['shift']());}};_0x3abab5(++_0x2efead);}(_0xf9d4,0x77));var _0x4f9d=function(_0x110d61,_0x31cd69){_0x110d61=_0x110d61-0x0;var _0x564121=_0xf9d4[_0x110d61];return _0x564121;};'use strict';var Sequelize=require(_0x4f9d('0x0'));module[_0x4f9d('0x1')]={'key':{'type':Sequelize[_0x4f9d('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x4f9d('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x4f9d('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x4f9d('0x4')](_0x4f9d('0x5'));}}};
\ No newline at end of file
+var _0x0452=['key','STRING','getDataValue'];(function(_0x9f7450,_0x1503d2){var _0x299587=function(_0x3a0e4f){while(--_0x3a0e4f){_0x9f7450['push'](_0x9f7450['shift']());}};_0x299587(++_0x1503d2);}(_0x0452,0x13f));var _0x2045=function(_0x5c4774,_0x4e3c70){_0x5c4774=_0x5c4774-0x0;var _0xb8644=_0x0452[_0x5c4774];return _0xb8644;};'use strict';var Sequelize=require('sequelize');module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x2045('0x0')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x2045('0x1')](_0x2045('0x2'));}}};
\ No newline at end of file
index 5051850..f402c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7893=['desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','stack','name','send','index','CannedAnswer','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','length','body','find','catch','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto'];(function(_0x294ebc,_0x355914){var _0x1db19b=function(_0x173eab){while(--_0x173eab){_0x294ebc['push'](_0x294ebc['shift']());}};_0x1db19b(++_0x355914);}(_0x7893,0x15e));var _0x3789=function(_0x3fcf09,_0x48209a){_0x3fcf09=_0x3fcf09-0x0;var _0x3d5070=_0x7893[_0x3fcf09];return _0x3d5070;};'use strict';var emlformat=require(_0x3789('0x0'));var rimraf=require(_0x3789('0x1'));var zipdir=require(_0x3789('0x2'));var jsonpatch=require(_0x3789('0x3'));var rp=require(_0x3789('0x4'));var moment=require(_0x3789('0x5'));var BPromise=require(_0x3789('0x6'));var Mustache=require(_0x3789('0x7'));var util=require(_0x3789('0x8'));var path=require(_0x3789('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3789('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3789('0xb'));var squel=require(_0x3789('0xc'));var crypto=require(_0x3789('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3789('0xe'));var toCsv=require(_0x3789('0xf'));var querystring=require('querystring');var Papa=require(_0x3789('0x10'));var Redis=require(_0x3789('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3789('0x12'));var as=require(_0x3789('0x13'));var hardwareService=require(_0x3789('0x14'));var logger=require(_0x3789('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3789('0x16'));var licenseUtil=require(_0x3789('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57230e,_0x381af5){_0x381af5=_0x381af5||0xcc;return function(_0x292220){if(_0x292220){return _0x57230e[_0x3789('0x18')](_0x381af5);}return _0x57230e[_0x3789('0x19')](_0x381af5)['end']();};}function respondWithResult(_0x328bf0,_0x25e094){_0x25e094=_0x25e094||0xc8;return function(_0x4f67bd){if(_0x4f67bd){return _0x328bf0['status'](_0x25e094)[_0x3789('0x1a')](_0x4f67bd);}};}function respondWithFilteredResult(_0x14b10f,_0x5c9478){return function(_0x4edf9b){if(_0x4edf9b){var _0x1772aa=typeof _0x5c9478['offset']===_0x3789('0x1b')&&typeof _0x5c9478['limit']===_0x3789('0x1b');var _0x3d3f87=_0x4edf9b[_0x3789('0x1c')];var _0x51144c=_0x1772aa?0x0:_0x5c9478['offset'];var _0x5798e4=_0x1772aa?_0x4edf9b['count']:_0x5c9478['offset']+_0x5c9478[_0x3789('0x1d')];var _0x4998c1;if(_0x5798e4>=_0x3d3f87){_0x5798e4=_0x3d3f87;_0x4998c1=0xc8;}else{_0x4998c1=0xce;}_0x14b10f[_0x3789('0x19')](_0x4998c1);return _0x14b10f[_0x3789('0x1e')](_0x3789('0x1f'),_0x51144c+'-'+_0x5798e4+'/'+_0x3d3f87)[_0x3789('0x1a')](_0x4edf9b);}return null;};}function patchUpdates(_0x37f305){return function(_0x1a7504){try{jsonpatch[_0x3789('0x20')](_0x1a7504,_0x37f305,!![]);}catch(_0x5a8d04){return BPromise[_0x3789('0x21')](_0x5a8d04);}return _0x1a7504[_0x3789('0x22')]();};}function saveUpdates(_0x203c42,_0x510fd9){return function(_0x5526b7){if(_0x5526b7){return _0x5526b7[_0x3789('0x23')](_0x203c42)['then'](function(_0xe71ba){return _0xe71ba;});}return null;};}function removeEntity(_0x1bdb42,_0x2e721e){return function(_0x19841e){if(_0x19841e){return _0x19841e[_0x3789('0x24')]()[_0x3789('0x25')](function(){var _0x372f9f=_0x19841e[_0x3789('0x26')]({'plain':!![]});var _0xf564f7='CannedAnswers';return db[_0x3789('0x27')][_0x3789('0x24')]({'where':{'type':_0xf564f7,'resourceId':_0x372f9f['id']}})[_0x3789('0x25')](function(){return _0x19841e;});})['then'](function(){_0x1bdb42[_0x3789('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb88407,_0xf5bd94){return function(_0x872910){if(!_0x872910){_0xb88407[_0x3789('0x18')](0x194);}return _0x872910;};}function handleError(_0xaa8408,_0x14cbd5){_0x14cbd5=_0x14cbd5||0x1f4;return function(_0x1e0ef1){logger['error'](_0x1e0ef1[_0x3789('0x28')]);if(_0x1e0ef1[_0x3789('0x29')]){delete _0x1e0ef1['name'];}_0xaa8408[_0x3789('0x19')](_0x14cbd5)[_0x3789('0x2a')](_0x1e0ef1);};}exports[_0x3789('0x2b')]=function(_0x2bcfd8,_0x39ed6d){var _0x2f6af9={},_0x42b441={},_0x474aac={'count':0x0,'rows':[]};var _0x342bb3=_['map'](db[_0x3789('0x2c')][_0x3789('0x2d')],function(_0x466eed){return{'name':_0x466eed[_0x3789('0x2e')],'type':_0x466eed[_0x3789('0x2f')]['key']};});_0x42b441['model']=_[_0x3789('0x30')](_0x342bb3,_0x3789('0x29'));_0x42b441['query']=_[_0x3789('0x31')](_0x2bcfd8[_0x3789('0x32')]);_0x42b441[_0x3789('0x33')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],_0x42b441[_0x3789('0x32')]);_0x2f6af9[_0x3789('0x36')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],qs['fields'](_0x2bcfd8[_0x3789('0x32')][_0x3789('0x37')]));_0x2f6af9[_0x3789('0x36')]=_0x2f6af9[_0x3789('0x36')]['length']?_0x2f6af9[_0x3789('0x36')]:_0x42b441[_0x3789('0x35')];if(!_0x2bcfd8[_0x3789('0x32')][_0x3789('0x38')](_0x3789('0x39'))){_0x2f6af9['limit']=qs[_0x3789('0x1d')](_0x2bcfd8[_0x3789('0x32')]['limit']);_0x2f6af9[_0x3789('0x3a')]=qs[_0x3789('0x3a')](_0x2bcfd8['query'][_0x3789('0x3a')]);}_0x2f6af9[_0x3789('0x3b')]=qs[_0x3789('0x3c')](_0x2bcfd8[_0x3789('0x32')]['sort']);_0x2f6af9[_0x3789('0x3d')]=qs[_0x3789('0x33')](_[_0x3789('0x3e')](_0x2bcfd8[_0x3789('0x32')],_0x42b441['filters']),_0x342bb3);if(_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]){_0x2f6af9[_0x3789('0x3d')]=_[_0x3789('0x40')](_0x2f6af9[_0x3789('0x3d')],{'$or':[{'key':{'$like':'%'+_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]+'%'}},{'value':{'$like':'%'+_0x2bcfd8[_0x3789('0x32')]['filter']+'%'}}]});}_0x2f6af9=_[_0x3789('0x40')]({},_0x2f6af9,_0x2bcfd8[_0x3789('0x41')]);var _0x34a865={'where':_0x2f6af9[_0x3789('0x3d')]};return db[_0x3789('0x2c')][_0x3789('0x1c')](_0x34a865)[_0x3789('0x25')](function(_0x2db87d){_0x474aac['count']=_0x2db87d;if(_0x2bcfd8[_0x3789('0x32')][_0x3789('0x42')]){_0x2f6af9[_0x3789('0x43')]=[{'all':!![]}];}return db[_0x3789('0x2c')][_0x3789('0x44')](_0x2f6af9);})['then'](function(_0x9b92df){_0x474aac[_0x3789('0x45')]=_0x9b92df;return _0x474aac;})[_0x3789('0x25')](respondWithFilteredResult(_0x39ed6d,_0x2f6af9))['catch'](handleError(_0x39ed6d,null));};exports[_0x3789('0x46')]=function(_0x5e60b6,_0x28d782){var _0x4e1caa={'raw':!![],'where':{'id':_0x5e60b6[_0x3789('0x47')]['id']}},_0x27525b={};_0x27525b['model']=_[_0x3789('0x31')](db[_0x3789('0x2c')]['rawAttributes']);_0x27525b[_0x3789('0x32')]=_[_0x3789('0x31')](_0x5e60b6[_0x3789('0x32')]);_0x27525b[_0x3789('0x33')]=_[_0x3789('0x34')](_0x27525b[_0x3789('0x35')],_0x27525b['query']);_0x4e1caa[_0x3789('0x36')]=_[_0x3789('0x34')](_0x27525b[_0x3789('0x35')],qs[_0x3789('0x37')](_0x5e60b6[_0x3789('0x32')][_0x3789('0x37')]));_0x4e1caa[_0x3789('0x36')]=_0x4e1caa['attributes'][_0x3789('0x48')]?_0x4e1caa[_0x3789('0x36')]:_0x27525b['model'];if(_0x5e60b6[_0x3789('0x32')][_0x3789('0x42')]){_0x4e1caa['include']=[{'all':!![]}];}_0x4e1caa=_[_0x3789('0x40')]({},_0x4e1caa,_0x5e60b6[_0x3789('0x41')]);return db[_0x3789('0x2c')]['find'](_0x4e1caa)[_0x3789('0x25')](handleEntityNotFound(_0x28d782,null))['then'](respondWithResult(_0x28d782,null))['catch'](handleError(_0x28d782,null));};exports['update']=function(_0x17c26d,_0x2fc21c){if(_0x17c26d[_0x3789('0x49')]['id']){delete _0x17c26d[_0x3789('0x49')]['id'];}return db['CannedAnswer'][_0x3789('0x4a')]({'where':{'id':_0x17c26d[_0x3789('0x47')]['id']}})[_0x3789('0x25')](handleEntityNotFound(_0x2fc21c,null))[_0x3789('0x25')](saveUpdates(_0x17c26d[_0x3789('0x49')],null))[_0x3789('0x25')](respondWithResult(_0x2fc21c,null))[_0x3789('0x4b')](handleError(_0x2fc21c,null));};exports['destroy']=function(_0x21f59d,_0x5830d0){return db[_0x3789('0x2c')][_0x3789('0x4a')]({'where':{'id':_0x21f59d[_0x3789('0x47')]['id']}})['then'](handleEntityNotFound(_0x5830d0,null))[_0x3789('0x25')](removeEntity(_0x5830d0,null))[_0x3789('0x4b')](handleError(_0x5830d0,null));};exports['create']=function(_0x162179,_0x5ce40d){var _0x4b4ba1={'key':_0x162179[_0x3789('0x49')][_0x3789('0x4c')]};if(_0x162179['body']['MailAccountId']){_0x4b4ba1[_0x3789('0x4d')]=_0x162179['body'][_0x3789('0x4d')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x4e')]){_0x4b4ba1['SmsAccountId']=_0x162179[_0x3789('0x49')][_0x3789('0x4e')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x4f')]){_0x4b4ba1[_0x3789('0x4f')]=_0x162179[_0x3789('0x49')][_0x3789('0x4f')];}else if(_0x162179[_0x3789('0x49')][_0x3789('0x50')]){_0x4b4ba1['ChatWebsiteId']=_0x162179[_0x3789('0x49')][_0x3789('0x50')];}return db[_0x3789('0x2c')][_0x3789('0x4a')]({'where':_0x4b4ba1})[_0x3789('0x25')](function(_0x5da8fe){if(_0x5da8fe){throw new db[(_0x3789('0x51'))][(_0x3789('0x52'))](_0x3789('0x53'));}return db['CannedAnswer'][_0x3789('0x54')](_0x162179[_0x3789('0x49')]);})[_0x3789('0x25')](function(_0x1395c8){var _0x1cb2a0=_0x162179[_0x3789('0x55')][_0x3789('0x26')]({'plain':!![]});if(!_0x1cb2a0)throw new Error(_0x3789('0x56'));if(_0x1cb2a0[_0x3789('0x57')]===_0x3789('0x55')){var _0xe3ca39=_0x1395c8[_0x3789('0x26')]({'plain':!![]});return db[_0x3789('0x58')][_0x3789('0x4a')]({'where':{'name':'CannedAnswers','userProfileId':_0x1cb2a0['userProfileId']},'raw':!![]})[_0x3789('0x25')](function(_0x39eb6d){if(_0x39eb6d&&_0x39eb6d[_0x3789('0x59')]===0x0){return db[_0x3789('0x27')]['create']({'name':_0xe3ca39[_0x3789('0x29')],'resourceId':_0xe3ca39['id'],'type':_0x39eb6d[_0x3789('0x29')],'sectionId':_0x39eb6d['id']},{})['then'](function(){return _0x1395c8;});}else{return _0x1395c8;}})['catch'](function(_0x2d9f45){logger[_0x3789('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d9f45);throw _0x2d9f45;});}return _0x1395c8;})[_0x3789('0x25')](respondWithResult(_0x5ce40d,0xc9))['catch'](handleError(_0x5ce40d,null));};
\ No newline at end of file
+var _0xf53b=['rows','catch','show','includeAll','find','params','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','get','CannedAnswers','UserProfileResource','then','error','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include'];(function(_0x26d5d8,_0x39a64a){var _0xe1c335=function(_0x59c3a3){while(--_0x59c3a3){_0x26d5d8['push'](_0x26d5d8['shift']());}};_0xe1c335(++_0x39a64a);}(_0xf53b,0x1b7));var _0xbf53=function(_0x25a321,_0x5caae0){_0x25a321=_0x25a321-0x0;var _0x133ce8=_0xf53b[_0x25a321];return _0x133ce8;};'use strict';var emlformat=require(_0xbf53('0x0'));var rimraf=require(_0xbf53('0x1'));var zipdir=require(_0xbf53('0x2'));var jsonpatch=require(_0xbf53('0x3'));var rp=require('request-promise');var moment=require(_0xbf53('0x4'));var BPromise=require(_0xbf53('0x5'));var Mustache=require('mustache');var util=require(_0xbf53('0x6'));var path=require(_0xbf53('0x7'));var sox=require('sox');var csv=require(_0xbf53('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbf53('0x9'));var _=require(_0xbf53('0xa'));var squel=require(_0xbf53('0xb'));var crypto=require('crypto');var jsforce=require(_0xbf53('0xc'));var deskjs=require(_0xbf53('0xd'));var toCsv=require(_0xbf53('0x8'));var querystring=require('querystring');var Papa=require(_0xbf53('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbf53('0xf'));var as=require(_0xbf53('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf53('0x11'));var utils=require('../../config/utils');var config=require(_0xbf53('0x12'));var licenseUtil=require(_0xbf53('0x13'));var db=require(_0xbf53('0x14'))['db'];function respondWithStatusCode(_0x5e088e,_0x21965e){_0x21965e=_0x21965e||0xcc;return function(_0x43905f){if(_0x43905f){return _0x5e088e[_0xbf53('0x15')](_0x21965e);}return _0x5e088e['status'](_0x21965e)[_0xbf53('0x16')]();};}function respondWithResult(_0x31f7c5,_0x2f13e7){_0x2f13e7=_0x2f13e7||0xc8;return function(_0x14a534){if(_0x14a534){return _0x31f7c5[_0xbf53('0x17')](_0x2f13e7)[_0xbf53('0x18')](_0x14a534);}};}function respondWithFilteredResult(_0x523314,_0x3b82bd){return function(_0x1acaa4){if(_0x1acaa4){var _0x5bbc3a=typeof _0x3b82bd[_0xbf53('0x19')]===_0xbf53('0x1a')&&typeof _0x3b82bd[_0xbf53('0x1b')]===_0xbf53('0x1a');var _0x1a8ab9=_0x1acaa4[_0xbf53('0x1c')];var _0x590ff4=_0x5bbc3a?0x0:_0x3b82bd['offset'];var _0x316e8c=_0x5bbc3a?_0x1acaa4[_0xbf53('0x1c')]:_0x3b82bd[_0xbf53('0x19')]+_0x3b82bd[_0xbf53('0x1b')];var _0x3e8616;if(_0x316e8c>=_0x1a8ab9){_0x316e8c=_0x1a8ab9;_0x3e8616=0xc8;}else{_0x3e8616=0xce;}_0x523314['status'](_0x3e8616);return _0x523314[_0xbf53('0x1d')](_0xbf53('0x1e'),_0x590ff4+'-'+_0x316e8c+'/'+_0x1a8ab9)[_0xbf53('0x18')](_0x1acaa4);}return null;};}function patchUpdates(_0x19256f){return function(_0x50c316){try{jsonpatch[_0xbf53('0x1f')](_0x50c316,_0x19256f,!![]);}catch(_0x5f7b72){return BPromise[_0xbf53('0x20')](_0x5f7b72);}return _0x50c316['save']();};}function saveUpdates(_0x315750,_0x59a354){return function(_0x18400e){if(_0x18400e){return _0x18400e[_0xbf53('0x21')](_0x315750)['then'](function(_0x5ec9ac){return _0x5ec9ac;});}return null;};}function removeEntity(_0x42464c,_0x114f55){return function(_0x299848){if(_0x299848){return _0x299848[_0xbf53('0x22')]()['then'](function(){var _0x29b362=_0x299848[_0xbf53('0x23')]({'plain':!![]});var _0x50e17e=_0xbf53('0x24');return db[_0xbf53('0x25')]['destroy']({'where':{'type':_0x50e17e,'resourceId':_0x29b362['id']}})[_0xbf53('0x26')](function(){return _0x299848;});})['then'](function(){_0x42464c[_0xbf53('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x347087,_0x51ada0){return function(_0x21bfe8){if(!_0x21bfe8){_0x347087['sendStatus'](0x194);}return _0x21bfe8;};}function handleError(_0x33314a,_0x186a3b){_0x186a3b=_0x186a3b||0x1f4;return function(_0x28f81a){logger[_0xbf53('0x27')](_0x28f81a['stack']);if(_0x28f81a[_0xbf53('0x28')]){delete _0x28f81a[_0xbf53('0x28')];}_0x33314a[_0xbf53('0x17')](_0x186a3b)[_0xbf53('0x29')](_0x28f81a);};}exports[_0xbf53('0x2a')]=function(_0x36bd92,_0x52a46a){var _0x1be86d={},_0x2721bd={},_0x434187={'count':0x0,'rows':[]};var _0x43cf38=_[_0xbf53('0x2b')](db[_0xbf53('0x2c')][_0xbf53('0x2d')],function(_0x21b8a0){return{'name':_0x21b8a0[_0xbf53('0x2e')],'type':_0x21b8a0[_0xbf53('0x2f')][_0xbf53('0x30')]};});_0x2721bd[_0xbf53('0x31')]=_[_0xbf53('0x2b')](_0x43cf38,'name');_0x2721bd[_0xbf53('0x32')]=_[_0xbf53('0x33')](_0x36bd92['query']);_0x2721bd[_0xbf53('0x34')]=_[_0xbf53('0x35')](_0x2721bd[_0xbf53('0x31')],_0x2721bd[_0xbf53('0x32')]);_0x1be86d[_0xbf53('0x36')]=_[_0xbf53('0x35')](_0x2721bd[_0xbf53('0x31')],qs[_0xbf53('0x37')](_0x36bd92[_0xbf53('0x32')][_0xbf53('0x37')]));_0x1be86d[_0xbf53('0x36')]=_0x1be86d[_0xbf53('0x36')]['length']?_0x1be86d[_0xbf53('0x36')]:_0x2721bd[_0xbf53('0x31')];if(!_0x36bd92[_0xbf53('0x32')][_0xbf53('0x38')](_0xbf53('0x39'))){_0x1be86d['limit']=qs[_0xbf53('0x1b')](_0x36bd92[_0xbf53('0x32')][_0xbf53('0x1b')]);_0x1be86d[_0xbf53('0x19')]=qs['offset'](_0x36bd92[_0xbf53('0x32')]['offset']);}_0x1be86d['order']=qs['sort'](_0x36bd92[_0xbf53('0x32')][_0xbf53('0x3a')]);_0x1be86d[_0xbf53('0x3b')]=qs[_0xbf53('0x34')](_[_0xbf53('0x3c')](_0x36bd92[_0xbf53('0x32')],_0x2721bd[_0xbf53('0x34')]),_0x43cf38);if(_0x36bd92['query'][_0xbf53('0x3d')]){_0x1be86d['where']=_[_0xbf53('0x3e')](_0x1be86d[_0xbf53('0x3b')],{'$or':[{'key':{'$like':'%'+_0x36bd92[_0xbf53('0x32')]['filter']+'%'}},{'value':{'$like':'%'+_0x36bd92[_0xbf53('0x32')][_0xbf53('0x3d')]+'%'}}]});}_0x1be86d=_[_0xbf53('0x3e')]({},_0x1be86d,_0x36bd92[_0xbf53('0x3f')]);var _0x4df277={'where':_0x1be86d[_0xbf53('0x3b')]};return db[_0xbf53('0x2c')][_0xbf53('0x1c')](_0x4df277)[_0xbf53('0x26')](function(_0x1e6747){_0x434187[_0xbf53('0x1c')]=_0x1e6747;if(_0x36bd92['query']['includeAll']){_0x1be86d[_0xbf53('0x40')]=[{'all':!![]}];}return db[_0xbf53('0x2c')]['findAll'](_0x1be86d);})[_0xbf53('0x26')](function(_0x2c9455){_0x434187[_0xbf53('0x41')]=_0x2c9455;return _0x434187;})[_0xbf53('0x26')](respondWithFilteredResult(_0x52a46a,_0x1be86d))[_0xbf53('0x42')](handleError(_0x52a46a,null));};exports[_0xbf53('0x43')]=function(_0x28bd4d,_0x3029d4){var _0x1bccf1={'raw':!![],'where':{'id':_0x28bd4d['params']['id']}},_0x26f995={};_0x26f995['model']=_[_0xbf53('0x33')](db[_0xbf53('0x2c')][_0xbf53('0x2d')]);_0x26f995['query']=_[_0xbf53('0x33')](_0x28bd4d[_0xbf53('0x32')]);_0x26f995['filters']=_['intersection'](_0x26f995[_0xbf53('0x31')],_0x26f995['query']);_0x1bccf1[_0xbf53('0x36')]=_['intersection'](_0x26f995['model'],qs[_0xbf53('0x37')](_0x28bd4d[_0xbf53('0x32')][_0xbf53('0x37')]));_0x1bccf1[_0xbf53('0x36')]=_0x1bccf1[_0xbf53('0x36')]['length']?_0x1bccf1[_0xbf53('0x36')]:_0x26f995[_0xbf53('0x31')];if(_0x28bd4d['query'][_0xbf53('0x44')]){_0x1bccf1[_0xbf53('0x40')]=[{'all':!![]}];}_0x1bccf1=_[_0xbf53('0x3e')]({},_0x1bccf1,_0x28bd4d['options']);return db[_0xbf53('0x2c')]['find'](_0x1bccf1)[_0xbf53('0x26')](handleEntityNotFound(_0x3029d4,null))[_0xbf53('0x26')](respondWithResult(_0x3029d4,null))['catch'](handleError(_0x3029d4,null));};exports[_0xbf53('0x21')]=function(_0xbbbc4d,_0x50110b){if(_0xbbbc4d['body']['id']){delete _0xbbbc4d['body']['id'];}return db[_0xbf53('0x2c')][_0xbf53('0x45')]({'where':{'id':_0xbbbc4d[_0xbf53('0x46')]['id']}})[_0xbf53('0x26')](handleEntityNotFound(_0x50110b,null))[_0xbf53('0x26')](saveUpdates(_0xbbbc4d[_0xbf53('0x47')],null))[_0xbf53('0x26')](respondWithResult(_0x50110b,null))[_0xbf53('0x42')](handleError(_0x50110b,null));};exports[_0xbf53('0x22')]=function(_0x33f0f0,_0x279338){return db[_0xbf53('0x2c')]['find']({'where':{'id':_0x33f0f0[_0xbf53('0x46')]['id']}})[_0xbf53('0x26')](handleEntityNotFound(_0x279338,null))[_0xbf53('0x26')](removeEntity(_0x279338,null))['catch'](handleError(_0x279338,null));};exports[_0xbf53('0x48')]=function(_0x2cb5bf,_0x1b40c7){var _0x47ffba={'key':_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x30')]};if(_0x2cb5bf[_0xbf53('0x47')]['MailAccountId']){_0x47ffba[_0xbf53('0x49')]=_0x2cb5bf[_0xbf53('0x47')]['MailAccountId'];}else if(_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x4a')]){_0x47ffba['SmsAccountId']=_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x4a')];}else if(_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x4b')]){_0x47ffba[_0xbf53('0x4b')]=_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x4b')];}else if(_0x2cb5bf[_0xbf53('0x47')][_0xbf53('0x4c')]){_0x47ffba[_0xbf53('0x4c')]=_0x2cb5bf[_0xbf53('0x47')]['ChatWebsiteId'];}return db[_0xbf53('0x2c')][_0xbf53('0x45')]({'where':_0x47ffba})[_0xbf53('0x26')](function(_0x160cf2){if(_0x160cf2){throw new db['Sequelize'][(_0xbf53('0x4d'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0xbf53('0x2c')][_0xbf53('0x48')](_0x2cb5bf[_0xbf53('0x47')]);})[_0xbf53('0x26')](function(_0x5b0f6f){var _0x2fe763=_0x2cb5bf[_0xbf53('0x4e')][_0xbf53('0x23')]({'plain':!![]});if(!_0x2fe763)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2fe763[_0xbf53('0x4f')]===_0xbf53('0x4e')){var _0x1eeeed=_0x5b0f6f[_0xbf53('0x23')]({'plain':!![]});return db[_0xbf53('0x50')]['find']({'where':{'name':_0xbf53('0x24'),'userProfileId':_0x2fe763[_0xbf53('0x51')]},'raw':!![]})[_0xbf53('0x26')](function(_0x447a37){if(_0x447a37&&_0x447a37[_0xbf53('0x52')]===0x0){return db['UserProfileResource'][_0xbf53('0x48')]({'name':_0x1eeeed[_0xbf53('0x28')],'resourceId':_0x1eeeed['id'],'type':_0x447a37[_0xbf53('0x28')],'sectionId':_0x447a37['id']},{})['then'](function(){return _0x5b0f6f;});}else{return _0x5b0f6f;}})['catch'](function(_0x7a841f){logger[_0xbf53('0x27')](_0xbf53('0x53'),_0x7a841f);throw _0x7a841f;});}return _0x5b0f6f;})['then'](respondWithResult(_0x1b40c7,0xc9))[_0xbf53('0x42')](handleError(_0x1b40c7,null));};
\ No newline at end of file
index 06a70ff..6f04078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9849=['define','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports'];(function(_0xc51b39,_0x4dd5d6){var _0xdb2519=function(_0x99d076){while(--_0x99d076){_0xc51b39['push'](_0xc51b39['shift']());}};_0xdb2519(++_0x4dd5d6);}(_0x9849,0x140));var _0x9984=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x9849[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0x9984('0x0'));var util=require(_0x9984('0x1'));var logger=require(_0x9984('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9984('0x3'));var rp=require(_0x9984('0x4'));var fs=require('fs');var path=require(_0x9984('0x5'));var rimraf=require(_0x9984('0x6'));var config=require(_0x9984('0x7'));var attributes=require(_0x9984('0x8'));module[_0x9984('0x9')]=function(_0x5615ef,_0x4b2c9e){return _0x5615ef[_0x9984('0xa')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x88a5=['rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','util','moment','bluebird','path'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x88a5,0x80));var _0x588a=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x88a5[_0xbb091];return _0x467a04;};'use strict';var _=require('lodash');var util=require(_0x588a('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x588a('0x1'));var BPromise=require(_0x588a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x588a('0x3'));var rimraf=require(_0x588a('0x4'));var config=require(_0x588a('0x5'));var attributes=require(_0x588a('0x6'));module[_0x588a('0x7')]=function(_0x18d642,_0x15cee7){return _0x18d642[_0x588a('0x8')](_0x588a('0x9'),attributes,{'tableName':_0x588a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index b4543e9..9c3c93b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4149fd,_0xbcf182){var _0x3b2823=function(_0x1a33f8){while(--_0x1a33f8){_0x4149fd['push'](_0x4149fd['shift']());}};_0x3b2823(++_0xbcf182);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2c5eeb,_0x3e1a5d){var _0x5c0cfb=function(_0x13b6fb){while(--_0x13b6fb){_0x2c5eeb['push'](_0x2c5eeb['shift']());}};_0x5c0cfb(++_0x3e1a5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 7d8f2a5..8922983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4047=['get','index','/:id','isAuthenticated','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x4047,0x104));var _0x7404=function(_0x5a6dc3,_0x30c3fc){_0x5a6dc3=_0x5a6dc3-0x0;var _0x3cf73c=_0x4047[_0x5a6dc3];return _0x3cf73c;};'use strict';var multer=require(_0x7404('0x0'));var util=require(_0x7404('0x1'));var path=require(_0x7404('0x2'));var timeout=require(_0x7404('0x3'));var express=require(_0x7404('0x4'));var router=express[_0x7404('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7404('0x6'));var interaction=require(_0x7404('0x7'));var config=require(_0x7404('0x8'));var controller=require(_0x7404('0x9'));router[_0x7404('0xa')]('/',auth['isAuthenticated'](),controller[_0x7404('0xb')]);router[_0x7404('0xa')](_0x7404('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x7404('0xd')](),controller[_0x7404('0xe')]);router[_0x7404('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x7404('0xc'),auth[_0x7404('0xd')](),controller[_0x7404('0x10')]);module[_0x7404('0x11')]=router;
\ No newline at end of file
+var _0xd179=['../../components/interaction/service','get','/:id','isAuthenticated','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x26c311,_0x26a54c){var _0x75f1b7=function(_0x15e470){while(--_0x15e470){_0x26c311['push'](_0x26c311['shift']());}};_0x75f1b7(++_0x26a54c);}(_0xd179,0x9a));var _0x9d17=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xd179[_0x5037ab];return _0x512adb;};'use strict';var multer=require(_0x9d17('0x0'));var util=require(_0x9d17('0x1'));var path=require(_0x9d17('0x2'));var timeout=require(_0x9d17('0x3'));var express=require('express');var router=express[_0x9d17('0x4')]();var fs_extra=require(_0x9d17('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9d17('0x6'));var config=require('../../config/environment');var controller=require('./cannedAnswer.controller');router[_0x9d17('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9d17('0x7')](_0x9d17('0x8'),auth[_0x9d17('0x9')](),controller['show']);router[_0x9d17('0xa')]('/',auth[_0x9d17('0x9')](),controller[_0x9d17('0xb')]);router[_0x9d17('0xc')](_0x9d17('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x9d17('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x9d17('0xe')]);module[_0x9d17('0xf')]=router;
\ No newline at end of file
index 5245db4..4a2b402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ba=['sequelize','exports','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x3df57f,_0x39ee9b){var _0x3a4b94=function(_0x560f2d){while(--_0x560f2d){_0x3df57f['push'](_0x3df57f['shift']());}};_0x3a4b94(++_0x39ee9b);}(_0x92ba,0x17c));var _0xa92b=function(_0x5aaca8,_0xaf7ff3){_0x5aaca8=_0x5aaca8-0x0;var _0x23d392=_0x92ba[_0x5aaca8];return _0x23d392;};'use strict';var Sequelize=require(_0xa92b('0x0'));module[_0xa92b('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xa92b('0x2')},'clid':{'type':Sequelize[_0xa92b('0x3')]},'src':{'type':Sequelize[_0xa92b('0x3')]},'dst':{'type':Sequelize[_0xa92b('0x3')]},'dcontext':{'type':Sequelize[_0xa92b('0x3')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xa92b('0x3')]},'lastapp':{'type':Sequelize[_0xa92b('0x3')]},'lastdata':{'type':Sequelize[_0xa92b('0x3')]},'duration':{'type':Sequelize[_0xa92b('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa92b('0x3')]},'amaflags':{'type':Sequelize[_0xa92b('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xa92b('0x3')]},'uniqueid':{'type':Sequelize[_0xa92b('0x3')]},'linkedid':{'type':Sequelize[_0xa92b('0x3')]},'sequence':{'type':Sequelize[_0xa92b('0x3')]},'peeraccount':{'type':Sequelize[_0xa92b('0x3')]},'type':{'type':Sequelize[_0xa92b('0x3')]},'tag':{'type':Sequelize[_0xa92b('0x3')]}};
\ No newline at end of file
+var _0x82ee=['DATE','STRING','INTEGER','exports'];(function(_0x18b5e8,_0x51e875){var _0x25baed=function(_0x3fcdf9){while(--_0x3fcdf9){_0x18b5e8['push'](_0x18b5e8['shift']());}};_0x25baed(++_0x51e875);}(_0x82ee,0xeb));var _0xe82e=function(_0x5d199f,_0x2b58e0){_0x5d199f=_0x5d199f-0x0;var _0x10ead3=_0x82ee[_0x5d199f];return _0x10ead3;};'use strict';var Sequelize=require('sequelize');module[_0xe82e('0x0')]={'calldate':{'type':Sequelize[_0xe82e('0x1')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0xe82e('0x2')]},'src':{'type':Sequelize[_0xe82e('0x2')]},'dst':{'type':Sequelize[_0xe82e('0x2')]},'dcontext':{'type':Sequelize[_0xe82e('0x2')]},'channel':{'type':Sequelize[_0xe82e('0x2')]},'dstchannel':{'type':Sequelize[_0xe82e('0x2')]},'lastapp':{'type':Sequelize[_0xe82e('0x2')]},'lastdata':{'type':Sequelize[_0xe82e('0x2')]},'duration':{'type':Sequelize[_0xe82e('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe82e('0x2')]},'amaflags':{'type':Sequelize[_0xe82e('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xe82e('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xe82e('0x2')]},'linkedid':{'type':Sequelize[_0xe82e('0x2')]},'sequence':{'type':Sequelize[_0xe82e('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe82e('0x2')]},'tag':{'type':Sequelize[_0xe82e('0x2')]}};
\ No newline at end of file
index 71737c9..32385c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','map','Cdr','rawAttributes','type','model','query','keys','filters','attributes','fields','length','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','params','intersection','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x314335,_0xe2eed0){var _0x231ee9=function(_0x4f108c){while(--_0x4f108c){_0x314335['push'](_0x314335['shift']());}};_0x231ee9(++_0xe2eed0);}(_0xabce,0x103));var _0xeabc=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xabce[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28'));_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x48fb52[_0xeabc('0x30')]);_0x2b568f[_0xeabc('0x32')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],_0x2b568f[_0xeabc('0x30')]);_0x38572d[_0xeabc('0x33')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x48fb52[_0xeabc('0x30')]['fields']));_0x38572d[_0xeabc('0x33')]=_0x38572d[_0xeabc('0x33')][_0xeabc('0x35')]?_0x38572d['attributes']:_0x2b568f[_0xeabc('0x2f')];if(!_0x48fb52[_0xeabc('0x30')]['hasOwnProperty']('nolimit')){_0x38572d[_0xeabc('0x1d')]=qs[_0xeabc('0x1d')](_0x48fb52['query'][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52[_0xeabc('0x30')][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x36')](_0x48fb52['query'][_0xeabc('0x36')]);_0x38572d[_0xeabc('0x37')]=qs[_0xeabc('0x32')](_['pick'](_0x48fb52['query'],_0x2b568f[_0xeabc('0x32')]),_0x149170);if(_0x48fb52['query'][_0xeabc('0x38')]){_0x38572d['where']=_['merge'](_0x38572d['where'],{'$or':_['map'](_0x149170,function(_0x1e222a){if(_0x1e222a['type']!==_0xeabc('0x39')){var _0x1ebfb6={};_0x1ebfb6[_0x1e222a['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x30')]['filter']+'%'};return _0x1ebfb6;}})});}_0x38572d=_[_0xeabc('0x3a')]({},_0x38572d,_0x48fb52['options']);var _0xbd7f03={'where':_0x38572d[_0xeabc('0x37')]};return db[_0xeabc('0x2c')]['count'](_0xbd7f03)['then'](function(_0x54a3ae){_0x2f8633[_0xeabc('0x1e')]=_0x54a3ae;if(_0x48fb52[_0xeabc('0x30')][_0xeabc('0x3b')]){_0x38572d['include']=[{'all':!![]}];}return db['Cdr'][_0xeabc('0x3c')](_0x38572d);})[_0xeabc('0x25')](function(_0x5e9cb3){_0x2f8633[_0xeabc('0x3d')]=_0x5e9cb3;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))[_0xeabc('0x3e')](handleError(_0x2163e6,null));};exports['show']=function(_0x5defaa,_0x5cd04d){var _0x25958b={'raw':!![],'where':{'id':_0x5defaa[_0xeabc('0x3f')]['id']}},_0x37c926={};_0x37c926[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')]['rawAttributes']);_0x37c926[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x5defaa[_0xeabc('0x30')]);_0x37c926[_0xeabc('0x32')]=_[_0xeabc('0x40')](_0x37c926['model'],_0x37c926['query']);_0x25958b[_0xeabc('0x33')]=_['intersection'](_0x37c926[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x5defaa['query'][_0xeabc('0x34')]));_0x25958b[_0xeabc('0x33')]=_0x25958b[_0xeabc('0x33')][_0xeabc('0x35')]?_0x25958b[_0xeabc('0x33')]:_0x37c926[_0xeabc('0x2f')];if(_0x5defaa[_0xeabc('0x30')]['includeAll']){_0x25958b[_0xeabc('0x41')]=[{'all':!![]}];}_0x25958b=_[_0xeabc('0x3a')]({},_0x25958b,_0x5defaa[_0xeabc('0x42')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0x25958b)[_0xeabc('0x25')](handleEntityNotFound(_0x5cd04d,null))[_0xeabc('0x25')](respondWithResult(_0x5cd04d,null))[_0xeabc('0x3e')](handleError(_0x5cd04d,null));};exports[_0xeabc('0x44')]=function(_0x44e714,_0x5689fc){return db[_0xeabc('0x2c')][_0xeabc('0x44')](_0x44e714[_0xeabc('0x45')],{})[_0xeabc('0x25')](respondWithResult(_0x5689fc,0xc9))[_0xeabc('0x3e')](handleError(_0x5689fc,null));};exports[_0xeabc('0x24')]=function(_0x268d95,_0x48df43){if(_0x268d95[_0xeabc('0x45')]['id']){delete _0x268d95[_0xeabc('0x45')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x268d95[_0xeabc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x48df43,null))[_0xeabc('0x25')](saveUpdates(_0x268d95[_0xeabc('0x45')],null))[_0xeabc('0x25')](respondWithResult(_0x48df43,null))[_0xeabc('0x3e')](handleError(_0x48df43,null));};exports['destroy']=function(_0x400b82,_0x1b3aa4){return db['Cdr'][_0xeabc('0x43')]({'where':{'id':_0x400b82['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x1b3aa4,null))['then'](removeEntity(_0x1b3aa4,null))[_0xeabc('0x3e')](handleError(_0x1b3aa4,null));};exports[_0xeabc('0x46')]=function(_0x38f988,_0x1524c3){return db[_0xeabc('0x2c')][_0xeabc('0x46')]()[_0xeabc('0x25')](respondWithResult(_0x1524c3,null))[_0xeabc('0x3e')](handleError(_0x1524c3,null));};
\ No newline at end of file
+var _0xae30=['offset','apply','reject','end','sendStatus','error','name','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','findAll','then','rows','catch','show','params','includeAll','include','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','status','json','undefined','limit','count'];(function(_0x547ff4,_0x416fa1){var _0xe41057=function(_0x1afe63){while(--_0x1afe63){_0x547ff4['push'](_0x547ff4['shift']());}};_0xe41057(++_0x416fa1);}(_0xae30,0x10a));var _0x0ae3=function(_0x460f81,_0x553431){_0x460f81=_0x460f81-0x0;var _0x423f0d=_0xae30[_0x460f81];return _0x423f0d;};'use strict';var emlformat=require(_0x0ae3('0x0'));var rimraf=require(_0x0ae3('0x1'));var zipdir=require(_0x0ae3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ae3('0x3'));var moment=require(_0x0ae3('0x4'));var BPromise=require(_0x0ae3('0x5'));var Mustache=require(_0x0ae3('0x6'));var util=require('util');var path=require(_0x0ae3('0x7'));var sox=require(_0x0ae3('0x8'));var csv=require(_0x0ae3('0x9'));var ejs=require(_0x0ae3('0xa'));var fs=require('fs');var fs_extra=require(_0x0ae3('0xb'));var _=require(_0x0ae3('0xc'));var squel=require(_0x0ae3('0xd'));var crypto=require(_0x0ae3('0xe'));var jsforce=require(_0x0ae3('0xf'));var deskjs=require(_0x0ae3('0x10'));var toCsv=require(_0x0ae3('0x9'));var querystring=require(_0x0ae3('0x11'));var Papa=require(_0x0ae3('0x12'));var Redis=require('ioredis');var authService=require(_0x0ae3('0x13'));var qs=require(_0x0ae3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0ae3('0x15'))(_0x0ae3('0x16'));var utils=require(_0x0ae3('0x17'));var config=require(_0x0ae3('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x245ac0,_0x45242d){_0x45242d=_0x45242d||0xcc;return function(_0x50cee6){if(_0x50cee6){return _0x245ac0['sendStatus'](_0x45242d);}return _0x245ac0[_0x0ae3('0x19')](_0x45242d)['end']();};}function respondWithResult(_0x1b1e46,_0x450000){_0x450000=_0x450000||0xc8;return function(_0x1a6c69){if(_0x1a6c69){return _0x1b1e46[_0x0ae3('0x19')](_0x450000)[_0x0ae3('0x1a')](_0x1a6c69);}};}function respondWithFilteredResult(_0x1600bc,_0x28b547){return function(_0x5af348){if(_0x5af348){var _0x17f280=typeof _0x28b547['offset']===_0x0ae3('0x1b')&&typeof _0x28b547[_0x0ae3('0x1c')]===_0x0ae3('0x1b');var _0x59d0de=_0x5af348[_0x0ae3('0x1d')];var _0x40edc6=_0x17f280?0x0:_0x28b547[_0x0ae3('0x1e')];var _0x1bf406=_0x17f280?_0x5af348[_0x0ae3('0x1d')]:_0x28b547['offset']+_0x28b547[_0x0ae3('0x1c')];var _0x4b8949;if(_0x1bf406>=_0x59d0de){_0x1bf406=_0x59d0de;_0x4b8949=0xc8;}else{_0x4b8949=0xce;}_0x1600bc['status'](_0x4b8949);return _0x1600bc['set']('Content-Range',_0x40edc6+'-'+_0x1bf406+'/'+_0x59d0de)['json'](_0x5af348);}return null;};}function patchUpdates(_0x4e8135){return function(_0x4d1385){try{jsonpatch[_0x0ae3('0x1f')](_0x4d1385,_0x4e8135,!![]);}catch(_0x1fd946){return BPromise[_0x0ae3('0x20')](_0x1fd946);}return _0x4d1385['save']();};}function saveUpdates(_0x1cdd85,_0x5ecc45){return function(_0xfcf4a8){if(_0xfcf4a8){return _0xfcf4a8['update'](_0x1cdd85)['then'](function(_0x5ab18d){return _0x5ab18d;});}return null;};}function removeEntity(_0x281adf,_0x3b49a0){return function(_0x51e7d1){if(_0x51e7d1){return _0x51e7d1['destroy']()['then'](function(){_0x281adf[_0x0ae3('0x19')](0xcc)[_0x0ae3('0x21')]();});}};}function handleEntityNotFound(_0x5a76e5,_0x36ce4e){return function(_0x1613c3){if(!_0x1613c3){_0x5a76e5[_0x0ae3('0x22')](0x194);}return _0x1613c3;};}function handleError(_0x5b0117,_0x2f8134){_0x2f8134=_0x2f8134||0x1f4;return function(_0x1f9cde){logger[_0x0ae3('0x23')](_0x1f9cde['stack']);if(_0x1f9cde[_0x0ae3('0x24')]){delete _0x1f9cde[_0x0ae3('0x24')];}_0x5b0117[_0x0ae3('0x19')](_0x2f8134)['send'](_0x1f9cde);};}exports[_0x0ae3('0x25')]=function(_0x247623,_0xf0e310){var _0x152876={},_0x1f8f61={},_0x10a7bd={'count':0x0,'rows':[]};var _0x5e8979=_[_0x0ae3('0x26')](db[_0x0ae3('0x27')][_0x0ae3('0x28')],function(_0x4032f4){return{'name':_0x4032f4[_0x0ae3('0x29')],'type':_0x4032f4[_0x0ae3('0x2a')][_0x0ae3('0x2b')]};});_0x1f8f61[_0x0ae3('0x2c')]=_['map'](_0x5e8979,_0x0ae3('0x24'));_0x1f8f61[_0x0ae3('0x2d')]=_[_0x0ae3('0x2e')](_0x247623[_0x0ae3('0x2d')]);_0x1f8f61['filters']=_[_0x0ae3('0x2f')](_0x1f8f61[_0x0ae3('0x2c')],_0x1f8f61[_0x0ae3('0x2d')]);_0x152876[_0x0ae3('0x30')]=_[_0x0ae3('0x2f')](_0x1f8f61[_0x0ae3('0x2c')],qs['fields'](_0x247623[_0x0ae3('0x2d')][_0x0ae3('0x31')]));_0x152876[_0x0ae3('0x30')]=_0x152876[_0x0ae3('0x30')][_0x0ae3('0x32')]?_0x152876[_0x0ae3('0x30')]:_0x1f8f61[_0x0ae3('0x2c')];if(!_0x247623['query']['hasOwnProperty'](_0x0ae3('0x33'))){_0x152876[_0x0ae3('0x1c')]=qs[_0x0ae3('0x1c')](_0x247623['query']['limit']);_0x152876[_0x0ae3('0x1e')]=qs[_0x0ae3('0x1e')](_0x247623[_0x0ae3('0x2d')][_0x0ae3('0x1e')]);}_0x152876[_0x0ae3('0x34')]=qs[_0x0ae3('0x35')](_0x247623[_0x0ae3('0x2d')]['sort']);_0x152876[_0x0ae3('0x36')]=qs[_0x0ae3('0x37')](_[_0x0ae3('0x38')](_0x247623['query'],_0x1f8f61['filters']),_0x5e8979);if(_0x247623['query'][_0x0ae3('0x39')]){_0x152876[_0x0ae3('0x36')]=_['merge'](_0x152876[_0x0ae3('0x36')],{'$or':_[_0x0ae3('0x26')](_0x5e8979,function(_0x3ee862){if(_0x3ee862['type']!==_0x0ae3('0x3a')){var _0x5dd8d7={};_0x5dd8d7[_0x3ee862[_0x0ae3('0x24')]]={'$like':'%'+_0x247623[_0x0ae3('0x2d')]['filter']+'%'};return _0x5dd8d7;}})});}_0x152876=_[_0x0ae3('0x3b')]({},_0x152876,_0x247623[_0x0ae3('0x3c')]);var _0xfa6c7f={'where':_0x152876[_0x0ae3('0x36')]};return db[_0x0ae3('0x27')]['count'](_0xfa6c7f)['then'](function(_0x2e95e5){_0x10a7bd[_0x0ae3('0x1d')]=_0x2e95e5;if(_0x247623['query']['includeAll']){_0x152876['include']=[{'all':!![]}];}return db['Cdr'][_0x0ae3('0x3d')](_0x152876);})[_0x0ae3('0x3e')](function(_0x325153){_0x10a7bd[_0x0ae3('0x3f')]=_0x325153;return _0x10a7bd;})[_0x0ae3('0x3e')](respondWithFilteredResult(_0xf0e310,_0x152876))[_0x0ae3('0x40')](handleError(_0xf0e310,null));};exports[_0x0ae3('0x41')]=function(_0x3166af,_0x2cfc16){var _0x1230c9={'raw':!![],'where':{'id':_0x3166af[_0x0ae3('0x42')]['id']}},_0x5a0e74={};_0x5a0e74[_0x0ae3('0x2c')]=_['keys'](db[_0x0ae3('0x27')][_0x0ae3('0x28')]);_0x5a0e74[_0x0ae3('0x2d')]=_[_0x0ae3('0x2e')](_0x3166af[_0x0ae3('0x2d')]);_0x5a0e74['filters']=_[_0x0ae3('0x2f')](_0x5a0e74[_0x0ae3('0x2c')],_0x5a0e74[_0x0ae3('0x2d')]);_0x1230c9[_0x0ae3('0x30')]=_['intersection'](_0x5a0e74[_0x0ae3('0x2c')],qs[_0x0ae3('0x31')](_0x3166af['query'][_0x0ae3('0x31')]));_0x1230c9[_0x0ae3('0x30')]=_0x1230c9['attributes']['length']?_0x1230c9[_0x0ae3('0x30')]:_0x5a0e74[_0x0ae3('0x2c')];if(_0x3166af[_0x0ae3('0x2d')][_0x0ae3('0x43')]){_0x1230c9[_0x0ae3('0x44')]=[{'all':!![]}];}_0x1230c9=_['merge']({},_0x1230c9,_0x3166af['options']);return db[_0x0ae3('0x27')]['find'](_0x1230c9)[_0x0ae3('0x3e')](handleEntityNotFound(_0x2cfc16,null))[_0x0ae3('0x3e')](respondWithResult(_0x2cfc16,null))['catch'](handleError(_0x2cfc16,null));};exports[_0x0ae3('0x45')]=function(_0x3e4bfb,_0x53e018){return db[_0x0ae3('0x27')][_0x0ae3('0x45')](_0x3e4bfb[_0x0ae3('0x46')],{})[_0x0ae3('0x3e')](respondWithResult(_0x53e018,0xc9))[_0x0ae3('0x40')](handleError(_0x53e018,null));};exports['update']=function(_0x3ad6b3,_0x53393b){if(_0x3ad6b3[_0x0ae3('0x46')]['id']){delete _0x3ad6b3[_0x0ae3('0x46')]['id'];}return db[_0x0ae3('0x27')][_0x0ae3('0x47')]({'where':{'id':_0x3ad6b3[_0x0ae3('0x42')]['id']}})[_0x0ae3('0x3e')](handleEntityNotFound(_0x53393b,null))[_0x0ae3('0x3e')](saveUpdates(_0x3ad6b3[_0x0ae3('0x46')],null))['then'](respondWithResult(_0x53393b,null))[_0x0ae3('0x40')](handleError(_0x53393b,null));};exports[_0x0ae3('0x48')]=function(_0x29479f,_0x12ea03){return db[_0x0ae3('0x27')][_0x0ae3('0x47')]({'where':{'id':_0x29479f[_0x0ae3('0x42')]['id']}})[_0x0ae3('0x3e')](handleEntityNotFound(_0x12ea03,null))[_0x0ae3('0x3e')](removeEntity(_0x12ea03,null))[_0x0ae3('0x40')](handleError(_0x12ea03,null));};exports[_0x0ae3('0x49')]=function(_0x572166,_0x256dc5){return db['Cdr'][_0x0ae3('0x49')]()[_0x0ae3('0x3e')](respondWithResult(_0x256dc5,null))[_0x0ae3('0x40')](handleError(_0x256dc5,null));};
\ No newline at end of file
index d60c6f4..89d56c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x2a85f8,_0x4958ed){var _0x4c544c=function(_0xccef93){while(--_0xccef93){_0x2a85f8['push'](_0x2a85f8['shift']());}};_0x4c544c(++_0x4958ed);}(_0x7a54,0x106));var _0x47a5=function(_0x10016f,_0x2b32b2){_0x10016f=_0x10016f-0x0;var _0x4f1e2b=_0x7a54[_0x10016f];return _0x4f1e2b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x339c6d,_0x4a3bc7){var _0x4d47e0=function(_0x1816cb){while(--_0x1816cb){_0x339c6d['push'](_0x339c6d['shift']());}};_0x4d47e0(++_0x4a3bc7);}(_0x7a54,0x106));var _0x47a5=function(_0x2c05e3,_0xfc76b8){_0x2c05e3=_0x2c05e3-0x0;var _0x57875e=_0x7a54[_0x2c05e3];return _0x57875e;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 1f1ab6d..a93db42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b28=['Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x8b28,0x190));var _0x88b2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8b28[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x88b2('0x0'));var util=require(_0x88b2('0x1'));var moment=require(_0x88b2('0x2'));var BPromise=require(_0x88b2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x88b2('0x4'));var db=require(_0x88b2('0x5'))['db'];var utils=require(_0x88b2('0x6'));var logger=require(_0x88b2('0x7'))('rpc');var config=require(_0x88b2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x88b2('0x9')][_0x88b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x193a14,_0x46363f,_0x5a6136){return new BPromise(function(_0x63b565,_0x67cd46){return client[_0x88b2('0xb')](_0x193a14,_0x5a6136)[_0x88b2('0xc')](function(_0x43573a){logger[_0x88b2('0xd')](_0x88b2('0xe'),_0x46363f,_0x88b2('0xf'));logger[_0x88b2('0x10')]('Cdr,\x20%s,\x20%s,\x20%s',_0x46363f,_0x88b2('0xf'),JSON[_0x88b2('0x11')](_0x43573a));if(_0x43573a[_0x88b2('0x12')]){if(_0x43573a[_0x88b2('0x12')][_0x88b2('0x13')]===0x1f4){logger[_0x88b2('0x12')](_0x88b2('0xe'),_0x46363f,_0x43573a[_0x88b2('0x12')]['message']);return _0x67cd46(_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);}logger[_0x88b2('0x12')](_0x88b2('0xe'),_0x46363f,_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);return _0x63b565(_0x43573a[_0x88b2('0x12')][_0x88b2('0x14')]);}else{logger[_0x88b2('0xd')](_0x88b2('0xe'),_0x46363f,_0x88b2('0xf'));_0x63b565(_0x43573a[_0x88b2('0x15')][_0x88b2('0x14')]);}})[_0x88b2('0x16')](function(_0x490664){logger['error'](_0x88b2('0xe'),_0x46363f,_0x490664);_0x67cd46(_0x490664);});});}
\ No newline at end of file
+var _0xf920=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x231a47,_0x46a963){var _0x48d7c9=function(_0x1e69b1){while(--_0x1e69b1){_0x231a47['push'](_0x231a47['shift']());}};_0x48d7c9(++_0x46a963);}(_0xf920,0x162));var _0x0f92=function(_0x4de3ae,_0x4c2d83){_0x4de3ae=_0x4de3ae-0x0;var _0x264e7c=_0xf920[_0x4de3ae];return _0x264e7c;};'use strict';var _=require(_0x0f92('0x0'));var util=require(_0x0f92('0x1'));var moment=require(_0x0f92('0x2'));var BPromise=require('bluebird');var rs=require(_0x0f92('0x3'));var fs=require('fs');var Redis=require(_0x0f92('0x4'));var db=require(_0x0f92('0x5'))['db'];var utils=require(_0x0f92('0x6'));var logger=require(_0x0f92('0x7'))(_0x0f92('0x8'));var config=require(_0x0f92('0x9'));var jayson=require(_0x0f92('0xa'));var client=jayson[_0x0f92('0xb')][_0x0f92('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xf4d76c,_0x6d6ae9,_0x2de039){return new BPromise(function(_0x24d33e,_0x3e558d){return client[_0x0f92('0xd')](_0xf4d76c,_0x2de039)[_0x0f92('0xe')](function(_0x32de91){logger[_0x0f92('0xf')](_0x0f92('0x10'),_0x6d6ae9,_0x0f92('0x11'));logger['debug'](_0x0f92('0x12'),_0x6d6ae9,_0x0f92('0x11'),JSON['stringify'](_0x32de91));if(_0x32de91[_0x0f92('0x13')]){if(_0x32de91[_0x0f92('0x13')][_0x0f92('0x14')]===0x1f4){logger[_0x0f92('0x13')](_0x0f92('0x10'),_0x6d6ae9,_0x32de91['error'][_0x0f92('0x15')]);return _0x3e558d(_0x32de91[_0x0f92('0x13')]['message']);}logger[_0x0f92('0x13')](_0x0f92('0x10'),_0x6d6ae9,_0x32de91[_0x0f92('0x13')][_0x0f92('0x15')]);return _0x24d33e(_0x32de91[_0x0f92('0x13')]['message']);}else{logger[_0x0f92('0xf')](_0x0f92('0x10'),_0x6d6ae9,_0x0f92('0x11'));_0x24d33e(_0x32de91[_0x0f92('0x16')]['message']);}})[_0x0f92('0x17')](function(_0x33ab37){logger['error'](_0x0f92('0x10'),_0x6d6ae9,_0x33ab37);_0x3e558d(_0x33ab37);});});}
\ No newline at end of file
index a852e0f..737b7ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0xc83c25,_0x106681){var _0x5ed069=function(_0x295f04){while(--_0x295f04){_0xc83c25['push'](_0xc83c25['shift']());}};_0x5ed069(++_0x106681);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 889732b..ef03c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x859b=['*,*,*,*','INTEGER','STRING','noop','TEXT'];(function(_0x26617b,_0x33a2bb){var _0x24f91b=function(_0x45ede0){while(--_0x45ede0){_0x26617b['push'](_0x26617b['shift']());}};_0x24f91b(++_0x33a2bb);}(_0x859b,0xe2));var _0xb859=function(_0x332299,_0x247952){_0x332299=_0x332299-0x0;var _0x5f4d5b=_0x859b[_0x332299];return _0x5f4d5b;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xb859('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xb859('0x1')],'allowNull':![],'defaultValue':_0xb859('0x2')},'appdata':{'type':Sequelize[_0xb859('0x3')]()},'description':{'type':Sequelize[_0xb859('0x1')]},'interval':{'type':Sequelize[_0xb859('0x1')],'defaultValue':_0xb859('0x4')}};
\ No newline at end of file
+var _0x728d=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x728d,0x1e7));var _0xd728=function(_0x196e1b,_0x55fa06){_0x196e1b=_0x196e1b-0x0;var _0x5e1f18=_0x728d[_0x196e1b];return _0x5e1f18;};'use strict';var Sequelize=require(_0xd728('0x0'));module[_0xd728('0x1')]={'priority':{'type':Sequelize[_0xd728('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd728('0x3')],'allowNull':![],'defaultValue':_0xd728('0x4')},'appdata':{'type':Sequelize[_0xd728('0x5')]()},'description':{'type':Sequelize[_0xd728('0x3')]},'interval':{'type':Sequelize[_0xd728('0x3')],'defaultValue':_0xd728('0x6')}};
\ No newline at end of file
index 8291e39..46f6c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f94=['destroy','then','error','stack','name','show','params','model','keys','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','ChatApplication','find','body','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','update'];(function(_0x2ddfd9,_0x5877d0){var _0x2668f0=function(_0x70ad6f){while(--_0x70ad6f){_0x2ddfd9['push'](_0x2ddfd9['shift']());}};_0x2668f0(++_0x5877d0);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9f94[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0x49f9('0x0'));var rimraf=require(_0x49f9('0x1'));var zipdir=require(_0x49f9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x49f9('0x3'));var BPromise=require(_0x49f9('0x4'));var Mustache=require(_0x49f9('0x5'));var util=require(_0x49f9('0x6'));var path=require(_0x49f9('0x7'));var sox=require('sox');var csv=require(_0x49f9('0x8'));var ejs=require(_0x49f9('0x9'));var fs=require('fs');var fs_extra=require(_0x49f9('0xa'));var _=require(_0x49f9('0xb'));var squel=require(_0x49f9('0xc'));var crypto=require(_0x49f9('0xd'));var jsforce=require(_0x49f9('0xe'));var deskjs=require(_0x49f9('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x49f9('0x10'));var Redis=require('ioredis');var authService=require(_0x49f9('0x11'));var qs=require(_0x49f9('0x12'));var as=require(_0x49f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49f9('0x14'))('api');var utils=require(_0x49f9('0x15'));var config=require(_0x49f9('0x16'));var licenseUtil=require(_0x49f9('0x17'));var db=require(_0x49f9('0x18'))['db'];function respondWithStatusCode(_0x530980,_0x52c3fe){_0x52c3fe=_0x52c3fe||0xcc;return function(_0x446fb1){if(_0x446fb1){return _0x530980[_0x49f9('0x19')](_0x52c3fe);}return _0x530980[_0x49f9('0x1a')](_0x52c3fe)[_0x49f9('0x1b')]();};}function respondWithResult(_0x47cb50,_0x4e7790){_0x4e7790=_0x4e7790||0xc8;return function(_0x5f1577){if(_0x5f1577){return _0x47cb50[_0x49f9('0x1a')](_0x4e7790)['json'](_0x5f1577);}};}function respondWithFilteredResult(_0x204951,_0x4b8228){return function(_0x398a05){if(_0x398a05){var _0x760ac=typeof _0x4b8228['offset']===_0x49f9('0x1c')&&typeof _0x4b8228[_0x49f9('0x1d')]===_0x49f9('0x1c');var _0x28bb3e=_0x398a05[_0x49f9('0x1e')];var _0x509610=_0x760ac?0x0:_0x4b8228[_0x49f9('0x1f')];var _0x359d48=_0x760ac?_0x398a05[_0x49f9('0x1e')]:_0x4b8228[_0x49f9('0x1f')]+_0x4b8228[_0x49f9('0x1d')];var _0x1971e3;if(_0x359d48>=_0x28bb3e){_0x359d48=_0x28bb3e;_0x1971e3=0xc8;}else{_0x1971e3=0xce;}_0x204951[_0x49f9('0x1a')](_0x1971e3);return _0x204951[_0x49f9('0x20')](_0x49f9('0x21'),_0x509610+'-'+_0x359d48+'/'+_0x28bb3e)['json'](_0x398a05);}return null;};}function patchUpdates(_0x4f0bc9){return function(_0x916ef5){try{jsonpatch['apply'](_0x916ef5,_0x4f0bc9,!![]);}catch(_0x3e8a62){return BPromise['reject'](_0x3e8a62);}return _0x916ef5['save']();};}function saveUpdates(_0x42c0aa,_0xde1383){return function(_0x4e92e5){if(_0x4e92e5){return _0x4e92e5[_0x49f9('0x22')](_0x42c0aa)['then'](function(_0x4a01a8){return _0x4a01a8;});}return null;};}function removeEntity(_0xf2afb7,_0xaadbfc){return function(_0x5757d3){if(_0x5757d3){return _0x5757d3[_0x49f9('0x23')]()[_0x49f9('0x24')](function(){_0xf2afb7['status'](0xcc)[_0x49f9('0x1b')]();});}};}function handleEntityNotFound(_0x184b85,_0x2a897d){return function(_0x2272d3){if(!_0x2272d3){_0x184b85['sendStatus'](0x194);}return _0x2272d3;};}function handleError(_0xa559a2,_0x3aff06){_0x3aff06=_0x3aff06||0x1f4;return function(_0x126aa2){logger[_0x49f9('0x25')](_0x126aa2[_0x49f9('0x26')]);if(_0x126aa2[_0x49f9('0x27')]){delete _0x126aa2[_0x49f9('0x27')];}_0xa559a2['status'](_0x3aff06)['send'](_0x126aa2);};}exports[_0x49f9('0x28')]=function(_0xc64e23,_0x3f95f5){var _0xfc15e={'raw':!![],'where':{'id':_0xc64e23[_0x49f9('0x29')]['id']}},_0x51adc3={};_0x51adc3[_0x49f9('0x2a')]=_[_0x49f9('0x2b')](db['ChatApplication'][_0x49f9('0x2c')]);_0x51adc3['query']=_[_0x49f9('0x2b')](_0xc64e23[_0x49f9('0x2d')]);_0x51adc3[_0x49f9('0x2e')]=_['intersection'](_0x51adc3[_0x49f9('0x2a')],_0x51adc3[_0x49f9('0x2d')]);_0xfc15e[_0x49f9('0x2f')]=_[_0x49f9('0x30')](_0x51adc3[_0x49f9('0x2a')],qs[_0x49f9('0x31')](_0xc64e23[_0x49f9('0x2d')][_0x49f9('0x31')]));_0xfc15e[_0x49f9('0x2f')]=_0xfc15e[_0x49f9('0x2f')][_0x49f9('0x32')]?_0xfc15e[_0x49f9('0x2f')]:_0x51adc3[_0x49f9('0x2a')];if(_0xc64e23[_0x49f9('0x2d')][_0x49f9('0x33')]){_0xfc15e[_0x49f9('0x34')]=[{'all':!![]}];}_0xfc15e=_[_0x49f9('0x35')]({},_0xfc15e,_0xc64e23['options']);return db[_0x49f9('0x36')][_0x49f9('0x37')](_0xfc15e)[_0x49f9('0x24')](handleEntityNotFound(_0x3f95f5,null))[_0x49f9('0x24')](respondWithResult(_0x3f95f5,null))['catch'](handleError(_0x3f95f5,null));};exports['update']=function(_0xa7c6d4,_0x4b5b84){if(_0xa7c6d4[_0x49f9('0x38')]['id']){delete _0xa7c6d4[_0x49f9('0x38')]['id'];}return db[_0x49f9('0x36')][_0x49f9('0x37')]({'where':{'id':_0xa7c6d4[_0x49f9('0x29')]['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x4b5b84,null))[_0x49f9('0x24')](saveUpdates(_0xa7c6d4['body'],null))[_0x49f9('0x24')](respondWithResult(_0x4b5b84,null))[_0x49f9('0x39')](handleError(_0x4b5b84,null));};exports['destroy']=function(_0x4f35b7,_0x4a1d1f){return db[_0x49f9('0x36')]['find']({'where':{'id':_0x4f35b7['params']['id']}})[_0x49f9('0x24')](handleEntityNotFound(_0x4a1d1f,null))[_0x49f9('0x24')](removeEntity(_0x4a1d1f,null))[_0x49f9('0x39')](handleError(_0x4a1d1f,null));};
\ No newline at end of file
+var _0x9993=['set','apply','reject','save','update','then','sendStatus','error','stack','name','send','show','params','model','query','keys','filters','intersection','attributes','fields','length','include','merge','options','ChatApplication','find','catch','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count'];(function(_0xc0c461,_0xdc73eb){var _0x26c224=function(_0x5453ed){while(--_0x5453ed){_0xc0c461['push'](_0xc0c461['shift']());}};_0x26c224(++_0xdc73eb);}(_0x9993,0x109));var _0x3999=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x9993[_0x5f3f88];return _0xd08119;};'use strict';var emlformat=require(_0x3999('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3999('0x1'));var jsonpatch=require(_0x3999('0x2'));var rp=require(_0x3999('0x3'));var moment=require('moment');var BPromise=require(_0x3999('0x4'));var Mustache=require('mustache');var util=require(_0x3999('0x5'));var path=require(_0x3999('0x6'));var sox=require(_0x3999('0x7'));var csv=require('to-csv');var ejs=require(_0x3999('0x8'));var fs=require('fs');var fs_extra=require(_0x3999('0x9'));var _=require('lodash');var squel=require(_0x3999('0xa'));var crypto=require(_0x3999('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x3999('0xc'));var toCsv=require(_0x3999('0xd'));var querystring=require('querystring');var Papa=require(_0x3999('0xe'));var Redis=require('ioredis');var authService=require(_0x3999('0xf'));var qs=require(_0x3999('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3999('0x11'));var logger=require(_0x3999('0x12'))(_0x3999('0x13'));var utils=require(_0x3999('0x14'));var config=require(_0x3999('0x15'));var licenseUtil=require(_0x3999('0x16'));var db=require(_0x3999('0x17'))['db'];function respondWithStatusCode(_0x52c26b,_0x7f35f5){_0x7f35f5=_0x7f35f5||0xcc;return function(_0x3e34e9){if(_0x3e34e9){return _0x52c26b['sendStatus'](_0x7f35f5);}return _0x52c26b[_0x3999('0x18')](_0x7f35f5)[_0x3999('0x19')]();};}function respondWithResult(_0x335b4b,_0x30ca58){_0x30ca58=_0x30ca58||0xc8;return function(_0x5a36b0){if(_0x5a36b0){return _0x335b4b[_0x3999('0x18')](_0x30ca58)['json'](_0x5a36b0);}};}function respondWithFilteredResult(_0x2072bf,_0x5803af){return function(_0x1756e7){if(_0x1756e7){var _0x56787c=typeof _0x5803af[_0x3999('0x1a')]===_0x3999('0x1b')&&typeof _0x5803af[_0x3999('0x1c')]===_0x3999('0x1b');var _0x51f56a=_0x1756e7['count'];var _0xdd19a=_0x56787c?0x0:_0x5803af[_0x3999('0x1a')];var _0x5705f6=_0x56787c?_0x1756e7[_0x3999('0x1d')]:_0x5803af[_0x3999('0x1a')]+_0x5803af['limit'];var _0x1afedd;if(_0x5705f6>=_0x51f56a){_0x5705f6=_0x51f56a;_0x1afedd=0xc8;}else{_0x1afedd=0xce;}_0x2072bf['status'](_0x1afedd);return _0x2072bf[_0x3999('0x1e')]('Content-Range',_0xdd19a+'-'+_0x5705f6+'/'+_0x51f56a)['json'](_0x1756e7);}return null;};}function patchUpdates(_0x5c414){return function(_0x3e4509){try{jsonpatch[_0x3999('0x1f')](_0x3e4509,_0x5c414,!![]);}catch(_0x367dd8){return BPromise[_0x3999('0x20')](_0x367dd8);}return _0x3e4509[_0x3999('0x21')]();};}function saveUpdates(_0x560c2d,_0xb7a29f){return function(_0x53ea75){if(_0x53ea75){return _0x53ea75[_0x3999('0x22')](_0x560c2d)[_0x3999('0x23')](function(_0xf34704){return _0xf34704;});}return null;};}function removeEntity(_0x39858b,_0xb17e81){return function(_0x553535){if(_0x553535){return _0x553535['destroy']()[_0x3999('0x23')](function(){_0x39858b[_0x3999('0x18')](0xcc)[_0x3999('0x19')]();});}};}function handleEntityNotFound(_0x11a394,_0xedc3db){return function(_0x5f3883){if(!_0x5f3883){_0x11a394[_0x3999('0x24')](0x194);}return _0x5f3883;};}function handleError(_0x2cfd2a,_0x2e0b94){_0x2e0b94=_0x2e0b94||0x1f4;return function(_0xe8ed9e){logger[_0x3999('0x25')](_0xe8ed9e[_0x3999('0x26')]);if(_0xe8ed9e[_0x3999('0x27')]){delete _0xe8ed9e[_0x3999('0x27')];}_0x2cfd2a['status'](_0x2e0b94)[_0x3999('0x28')](_0xe8ed9e);};}exports[_0x3999('0x29')]=function(_0x31d7c0,_0x404d3f){var _0xe22b0a={'raw':!![],'where':{'id':_0x31d7c0[_0x3999('0x2a')]['id']}},_0x5937ef={};_0x5937ef[_0x3999('0x2b')]=_['keys'](db['ChatApplication']['rawAttributes']);_0x5937ef[_0x3999('0x2c')]=_[_0x3999('0x2d')](_0x31d7c0[_0x3999('0x2c')]);_0x5937ef[_0x3999('0x2e')]=_[_0x3999('0x2f')](_0x5937ef[_0x3999('0x2b')],_0x5937ef['query']);_0xe22b0a[_0x3999('0x30')]=_[_0x3999('0x2f')](_0x5937ef[_0x3999('0x2b')],qs[_0x3999('0x31')](_0x31d7c0[_0x3999('0x2c')][_0x3999('0x31')]));_0xe22b0a['attributes']=_0xe22b0a['attributes'][_0x3999('0x32')]?_0xe22b0a[_0x3999('0x30')]:_0x5937ef[_0x3999('0x2b')];if(_0x31d7c0['query']['includeAll']){_0xe22b0a[_0x3999('0x33')]=[{'all':!![]}];}_0xe22b0a=_[_0x3999('0x34')]({},_0xe22b0a,_0x31d7c0[_0x3999('0x35')]);return db[_0x3999('0x36')][_0x3999('0x37')](_0xe22b0a)[_0x3999('0x23')](handleEntityNotFound(_0x404d3f,null))[_0x3999('0x23')](respondWithResult(_0x404d3f,null))[_0x3999('0x38')](handleError(_0x404d3f,null));};exports[_0x3999('0x22')]=function(_0x257cb8,_0x31694c){if(_0x257cb8[_0x3999('0x39')]['id']){delete _0x257cb8['body']['id'];}return db['ChatApplication'][_0x3999('0x37')]({'where':{'id':_0x257cb8[_0x3999('0x2a')]['id']}})[_0x3999('0x23')](handleEntityNotFound(_0x31694c,null))[_0x3999('0x23')](saveUpdates(_0x257cb8[_0x3999('0x39')],null))['then'](respondWithResult(_0x31694c,null))[_0x3999('0x38')](handleError(_0x31694c,null));};exports[_0x3999('0x3a')]=function(_0x2204c1,_0x4d2e5c){return db[_0x3999('0x36')][_0x3999('0x37')]({'where':{'id':_0x2204c1[_0x3999('0x2a')]['id']}})['then'](handleEntityNotFound(_0x4d2e5c,null))[_0x3999('0x23')](removeEntity(_0x4d2e5c,null))['catch'](handleError(_0x4d2e5c,null));};
\ No newline at end of file
index 69ec425..5a8d5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f8=['utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','./chatApplication.attributes','exports','define','utf8mb4'];(function(_0x3ca929,_0x1ad240){var _0x9c0a04=function(_0x438737){while(--_0x438737){_0x3ca929['push'](_0x3ca929['shift']());}};_0x9c0a04(++_0x1ad240);}(_0x49f8,0x105));var _0x849f=function(_0x6f66f4,_0x1f410a){_0x6f66f4=_0x6f66f4-0x0;var _0x208926=_0x49f8[_0x6f66f4];return _0x208926;};'use strict';var _=require(_0x849f('0x0'));var util=require(_0x849f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x849f('0x2'));var BPromise=require(_0x849f('0x3'));var rp=require(_0x849f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x849f('0x5'));module[_0x849f('0x6')]=function(_0x43aa94,_0x15562f){return _0x43aa94[_0x849f('0x7')]('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x849f('0x8'),'collate':_0x849f('0x9')});};
\ No newline at end of file
+var _0xac05=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatApplication','utf8mb4'];(function(_0x343ffd,_0x129903){var _0x107cba=function(_0x19aa13){while(--_0x19aa13){_0x343ffd['push'](_0x343ffd['shift']());}};_0x107cba(++_0x129903);}(_0xac05,0x1c3));var _0x5ac0=function(_0x14171a,_0x751d75){_0x14171a=_0x14171a-0x0;var _0x28b78c=_0xac05[_0x14171a];return _0x28b78c;};'use strict';var _=require(_0x5ac0('0x0'));var util=require(_0x5ac0('0x1'));var logger=require(_0x5ac0('0x2'))(_0x5ac0('0x3'));var moment=require(_0x5ac0('0x4'));var BPromise=require(_0x5ac0('0x5'));var rp=require(_0x5ac0('0x6'));var fs=require('fs');var path=require(_0x5ac0('0x7'));var rimraf=require(_0x5ac0('0x8'));var config=require(_0x5ac0('0x9'));var attributes=require('./chatApplication.attributes');module[_0x5ac0('0xa')]=function(_0xfcf73e,_0x5ca7e4){return _0xfcf73e[_0x5ac0('0xb')](_0x5ac0('0xc'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5ac0('0xd'),'collate':_0x5ac0('0xe')});};
\ No newline at end of file
index 3cb2d22..d994710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6734=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6734,0x186));var _0x4673=function(_0x548e64,_0x29e562){_0x548e64=_0x548e64-0x0;var _0x47d34e=_0x6734[_0x548e64];return _0x47d34e;};'use strict';var _=require(_0x4673('0x0'));var util=require(_0x4673('0x1'));var moment=require(_0x4673('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4673('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4673('0x4'));var logger=require(_0x4673('0x5'))(_0x4673('0x6'));var config=require(_0x4673('0x7'));var jayson=require(_0x4673('0x8'));var client=jayson[_0x4673('0x9')][_0x4673('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42b19e,_0x71fc91,_0x3dc636){return new BPromise(function(_0x5a9db4,_0x23676a){return client[_0x4673('0xb')](_0x42b19e,_0x3dc636)[_0x4673('0xc')](function(_0x552256){logger[_0x4673('0xd')](_0x4673('0xe'),_0x71fc91,'request\x20sent');logger['debug'](_0x4673('0xf'),_0x71fc91,'request\x20sent',JSON[_0x4673('0x10')](_0x552256));if(_0x552256[_0x4673('0x11')]){if(_0x552256['error'][_0x4673('0x12')]===0x1f4){logger[_0x4673('0x11')]('ChatApplication,\x20%s,\x20%s',_0x71fc91,_0x552256[_0x4673('0x11')]['message']);return _0x23676a(_0x552256[_0x4673('0x11')]['message']);}logger[_0x4673('0x11')](_0x4673('0xe'),_0x71fc91,_0x552256[_0x4673('0x11')][_0x4673('0x13')]);return _0x5a9db4(_0x552256[_0x4673('0x11')][_0x4673('0x13')]);}else{logger[_0x4673('0xd')](_0x4673('0xe'),_0x71fc91,_0x4673('0x14'));_0x5a9db4(_0x552256['result']['message']);}})[_0x4673('0x15')](function(_0x3c82d9){logger[_0x4673('0x11')](_0x4673('0xe'),_0x71fc91,_0x3c82d9);_0x23676a(_0x3c82d9);});});}
\ No newline at end of file
+var _0xfd7f=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','ChatApplication,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x40f4bd,_0x2d63fb){var _0x12801a=function(_0x171b54){while(--_0x171b54){_0x40f4bd['push'](_0x40f4bd['shift']());}};_0x12801a(++_0x2d63fb);}(_0xfd7f,0x1f4));var _0xffd7=function(_0x5e3836,_0x35936a){_0x5e3836=_0x5e3836-0x0;var _0x2a4f95=_0xfd7f[_0x5e3836];return _0x2a4f95;};'use strict';var _=require(_0xffd7('0x0'));var util=require('util');var moment=require(_0xffd7('0x1'));var BPromise=require('bluebird');var rs=require(_0xffd7('0x2'));var fs=require('fs');var Redis=require(_0xffd7('0x3'));var db=require(_0xffd7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xffd7('0x5'))(_0xffd7('0x6'));var config=require(_0xffd7('0x7'));var jayson=require(_0xffd7('0x8'));var client=jayson[_0xffd7('0x9')][_0xffd7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28bfb2,_0x55f426,_0x4d1490){return new BPromise(function(_0x35b9dd,_0x2323cc){return client[_0xffd7('0xb')](_0x28bfb2,_0x4d1490)[_0xffd7('0xc')](function(_0x76ab04){logger[_0xffd7('0xd')]('ChatApplication,\x20%s,\x20%s',_0x55f426,_0xffd7('0xe'));logger[_0xffd7('0xf')](_0xffd7('0x10'),_0x55f426,_0xffd7('0xe'),JSON[_0xffd7('0x11')](_0x76ab04));if(_0x76ab04[_0xffd7('0x12')]){if(_0x76ab04[_0xffd7('0x12')]['code']===0x1f4){logger[_0xffd7('0x12')](_0xffd7('0x13'),_0x55f426,_0x76ab04[_0xffd7('0x12')][_0xffd7('0x14')]);return _0x2323cc(_0x76ab04[_0xffd7('0x12')][_0xffd7('0x14')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x55f426,_0x76ab04['error'][_0xffd7('0x14')]);return _0x35b9dd(_0x76ab04[_0xffd7('0x12')][_0xffd7('0x14')]);}else{logger[_0xffd7('0xd')](_0xffd7('0x13'),_0x55f426,_0xffd7('0xe'));_0x35b9dd(_0x76ab04[_0xffd7('0x15')][_0xffd7('0x14')]);}})['catch'](function(_0x1cd865){logger[_0xffd7('0x12')](_0xffd7('0x13'),_0x55f426,_0x1cd865);_0x2323cc(_0x1cd865);});});}
\ No newline at end of file
index 209974b..84dc1d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb75=['put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show'];(function(_0x90ed8d,_0x20648b){var _0x35c95d=function(_0x25bafa){while(--_0x25bafa){_0x90ed8d['push'](_0x90ed8d['shift']());}};_0x35c95d(++_0x20648b);}(_0xeb75,0xed));var _0x5eb7=function(_0x46eb54,_0x4f1eac){_0x46eb54=_0x46eb54-0x0;var _0x3902b2=_0xeb75[_0x46eb54];return _0x3902b2;};'use strict';var multer=require(_0x5eb7('0x0'));var util=require(_0x5eb7('0x1'));var path=require(_0x5eb7('0x2'));var timeout=require(_0x5eb7('0x3'));var express=require(_0x5eb7('0x4'));var router=express[_0x5eb7('0x5')]();var fs_extra=require(_0x5eb7('0x6'));var auth=require(_0x5eb7('0x7'));var interaction=require(_0x5eb7('0x8'));var config=require(_0x5eb7('0x9'));var controller=require(_0x5eb7('0xa'));router[_0x5eb7('0xb')](_0x5eb7('0xc'),auth[_0x5eb7('0xd')](),controller[_0x5eb7('0xe')]);router[_0x5eb7('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x5eb7('0x10')]);router['delete'](_0x5eb7('0xc'),auth[_0x5eb7('0xd')](),controller[_0x5eb7('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xc01b=['connect-timeout','express','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','util'];(function(_0x395b4a,_0x363bba){var _0x8efcce=function(_0x39af41){while(--_0x39af41){_0x395b4a['push'](_0x395b4a['shift']());}};_0x8efcce(++_0x363bba);}(_0xc01b,0x19e));var _0xbc01=function(_0x405816,_0x1c7f4c){_0x405816=_0x405816-0x0;var _0x555dca=_0xc01b[_0x405816];return _0x555dca;};'use strict';var multer=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var path=require('path');var timeout=require(_0xbc01('0x2'));var express=require(_0xbc01('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbc01('0x4'));var config=require(_0xbc01('0x5'));var controller=require(_0xbc01('0x6'));router[_0xbc01('0x7')](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller[_0xbc01('0xa')]);router[_0xbc01('0xb')](_0xbc01('0x8'),auth['isAuthenticated'](),controller[_0xbc01('0xc')]);router[_0xbc01('0xd')](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller[_0xbc01('0xe')]);module[_0xbc01('0xf')]=router;
\ No newline at end of file
index e57e8e5..fe09360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['sequelize','BOOLEAN'];(function(_0x9a6c75,_0x2b9dbd){var _0xc07431=function(_0x42abb6){while(--_0x42abb6){_0x9a6c75['push'](_0x9a6c75['shift']());}};_0xc07431(++_0x2b9dbd);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x3f474a,_0xd54130){_0x3f474a=_0x3f474a-0x0;var _0x272589=_0x0a6b[_0x3f474a];return _0x272589;};'use strict';var Sequelize=require(_0xb0a6('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xb0a6('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xee80=['sequelize','STRING','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xee80,0x1b0));var _0x0ee8=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xee80[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x0ee8('0x0'));module['exports']={'name':{'type':Sequelize[_0x0ee8('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x0ee8('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 1e79386..b8227bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7d8=['then','destroy','stack','name','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ChatGroup','includeAll','include','findAll','catch','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','User','removeMembers','ChatGroupId','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','rimraf','zip-dir','request-promise','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update'];(function(_0x1146f7,_0x475356){var _0x2e5725=function(_0x44f2a2){while(--_0x44f2a2){_0x1146f7['push'](_0x1146f7['shift']());}};_0x2e5725(++_0x475356);}(_0xb7d8,0x149));var _0x8b7d=function(_0x284ff3,_0x2b8f6a){_0x284ff3=_0x284ff3-0x0;var _0x2477fd=_0xb7d8[_0x284ff3];return _0x2477fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b7d('0x0'));var zipdir=require(_0x8b7d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8b7d('0x2'));var moment=require('moment');var BPromise=require(_0x8b7d('0x3'));var Mustache=require('mustache');var util=require(_0x8b7d('0x4'));var path=require('path');var sox=require(_0x8b7d('0x5'));var csv=require(_0x8b7d('0x6'));var ejs=require(_0x8b7d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8b7d('0x8'));var squel=require(_0x8b7d('0x9'));var crypto=require(_0x8b7d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x8b7d('0xb'));var toCsv=require(_0x8b7d('0x6'));var querystring=require(_0x8b7d('0xc'));var Papa=require(_0x8b7d('0xd'));var Redis=require('ioredis');var authService=require(_0x8b7d('0xe'));var qs=require(_0x8b7d('0xf'));var as=require(_0x8b7d('0x10'));var hardwareService=require(_0x8b7d('0x11'));var logger=require(_0x8b7d('0x12'))('api');var utils=require(_0x8b7d('0x13'));var config=require(_0x8b7d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b7d('0x15'))['db'];config[_0x8b7d('0x16')]=_[_0x8b7d('0x17')](config['redis'],{'host':_0x8b7d('0x18'),'port':0x18eb});var socket=require(_0x8b7d('0x19'))(new Redis(config['redis']));require(_0x8b7d('0x1a'))[_0x8b7d('0x1b')](socket);function respondWithStatusCode(_0x113318,_0x1ae413){_0x1ae413=_0x1ae413||0xcc;return function(_0x131627){if(_0x131627){return _0x113318['sendStatus'](_0x1ae413);}return _0x113318[_0x8b7d('0x1c')](_0x1ae413)[_0x8b7d('0x1d')]();};}function respondWithResult(_0x33ef2b,_0x2dcc15){_0x2dcc15=_0x2dcc15||0xc8;return function(_0xd65527){if(_0xd65527){return _0x33ef2b[_0x8b7d('0x1c')](_0x2dcc15)[_0x8b7d('0x1e')](_0xd65527);}};}function respondWithFilteredResult(_0x433e4b,_0x528a7f){return function(_0x1e3f83){if(_0x1e3f83){var _0x33c927=typeof _0x528a7f[_0x8b7d('0x1f')]===_0x8b7d('0x20')&&typeof _0x528a7f[_0x8b7d('0x21')]===_0x8b7d('0x20');var _0x32664e=_0x1e3f83[_0x8b7d('0x22')];var _0x39d6cc=_0x33c927?0x0:_0x528a7f[_0x8b7d('0x1f')];var _0x4bb765=_0x33c927?_0x1e3f83['count']:_0x528a7f[_0x8b7d('0x1f')]+_0x528a7f[_0x8b7d('0x21')];var _0xe7f1d4;if(_0x4bb765>=_0x32664e){_0x4bb765=_0x32664e;_0xe7f1d4=0xc8;}else{_0xe7f1d4=0xce;}_0x433e4b['status'](_0xe7f1d4);return _0x433e4b[_0x8b7d('0x23')](_0x8b7d('0x24'),_0x39d6cc+'-'+_0x4bb765+'/'+_0x32664e)['json'](_0x1e3f83);}return null;};}function patchUpdates(_0x474583){return function(_0x395c9a){try{jsonpatch['apply'](_0x395c9a,_0x474583,!![]);}catch(_0x42dd8e){return BPromise[_0x8b7d('0x25')](_0x42dd8e);}return _0x395c9a['save']();};}function saveUpdates(_0x4c7805,_0x177739){return function(_0xd8df57){if(_0xd8df57){return _0xd8df57[_0x8b7d('0x26')](_0x4c7805)[_0x8b7d('0x27')](function(_0x178029){return _0x178029;});}return null;};}function removeEntity(_0x1b5c7b,_0x538bed){return function(_0x59c376){if(_0x59c376){return _0x59c376[_0x8b7d('0x28')]()[_0x8b7d('0x27')](function(){_0x1b5c7b[_0x8b7d('0x1c')](0xcc)[_0x8b7d('0x1d')]();});}};}function handleEntityNotFound(_0xf09f81,_0x63ac54){return function(_0x179246){if(!_0x179246){_0xf09f81['sendStatus'](0x194);}return _0x179246;};}function handleError(_0x22741d,_0x2e6332){_0x2e6332=_0x2e6332||0x1f4;return function(_0x2b9185){logger['error'](_0x2b9185[_0x8b7d('0x29')]);if(_0x2b9185[_0x8b7d('0x2a')]){delete _0x2b9185['name'];}_0x22741d[_0x8b7d('0x1c')](_0x2e6332)['send'](_0x2b9185);};}exports[_0x8b7d('0x2b')]=function(_0x83af5f,_0x24247d){var _0x4c4a80={},_0x536225={},_0x1ecdcb={'count':0x0,'rows':[]};var _0x582453=_['map'](db['ChatGroup'][_0x8b7d('0x2c')],function(_0x1f35e4){return{'name':_0x1f35e4['fieldName'],'type':_0x1f35e4[_0x8b7d('0x2d')][_0x8b7d('0x2e')]};});_0x536225[_0x8b7d('0x2f')]=_[_0x8b7d('0x30')](_0x582453,_0x8b7d('0x2a'));_0x536225[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x83af5f[_0x8b7d('0x31')]);_0x536225[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x536225[_0x8b7d('0x2f')],_0x536225[_0x8b7d('0x31')]);_0x4c4a80[_0x8b7d('0x35')]=_['intersection'](_0x536225[_0x8b7d('0x2f')],qs[_0x8b7d('0x36')](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x36')]));_0x4c4a80['attributes']=_0x4c4a80[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x4c4a80[_0x8b7d('0x35')]:_0x536225[_0x8b7d('0x2f')];if(!_0x83af5f['query'][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x4c4a80[_0x8b7d('0x21')]=qs[_0x8b7d('0x21')](_0x83af5f['query'][_0x8b7d('0x21')]);_0x4c4a80['offset']=qs[_0x8b7d('0x1f')](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x1f')]);}_0x4c4a80[_0x8b7d('0x3a')]=qs['sort'](_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3b')]);_0x4c4a80[_0x8b7d('0x3c')]=qs[_0x8b7d('0x33')](_[_0x8b7d('0x3d')](_0x83af5f[_0x8b7d('0x31')],_0x536225[_0x8b7d('0x33')]),_0x582453);if(_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x4c4a80[_0x8b7d('0x3c')]=_['merge'](_0x4c4a80[_0x8b7d('0x3c')],{'$or':_[_0x8b7d('0x30')](_0x582453,function(_0x35b456){if(_0x35b456[_0x8b7d('0x2d')]!=='VIRTUAL'){var _0x8f9c7f={};_0x8f9c7f[_0x35b456[_0x8b7d('0x2a')]]={'$like':'%'+_0x83af5f[_0x8b7d('0x31')][_0x8b7d('0x3e')]+'%'};return _0x8f9c7f;}})});}_0x4c4a80=_[_0x8b7d('0x3f')]({},_0x4c4a80,_0x83af5f[_0x8b7d('0x40')]);var _0x1fef31={'where':_0x4c4a80['where']};return db[_0x8b7d('0x41')]['count'](_0x1fef31)[_0x8b7d('0x27')](function(_0x5b4bb4){_0x1ecdcb[_0x8b7d('0x22')]=_0x5b4bb4;if(_0x83af5f['query'][_0x8b7d('0x42')]){_0x4c4a80[_0x8b7d('0x43')]=[{'all':!![]}];}return db[_0x8b7d('0x41')][_0x8b7d('0x44')](_0x4c4a80);})['then'](function(_0x509cb7){_0x1ecdcb['rows']=_0x509cb7;return _0x1ecdcb;})[_0x8b7d('0x27')](respondWithFilteredResult(_0x24247d,_0x4c4a80))[_0x8b7d('0x45')](handleError(_0x24247d,null));};exports['show']=function(_0x1c373d,_0x14d822){var _0x16ef2e={'raw':!![],'where':{'id':_0x1c373d[_0x8b7d('0x46')]['id']}},_0x40be68={};_0x40be68['model']=_['keys'](db[_0x8b7d('0x41')][_0x8b7d('0x2c')]);_0x40be68['query']=_['keys'](_0x1c373d[_0x8b7d('0x31')]);_0x40be68[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x40be68['model'],_0x40be68['query']);_0x16ef2e['attributes']=_[_0x8b7d('0x34')](_0x40be68[_0x8b7d('0x2f')],qs[_0x8b7d('0x36')](_0x1c373d[_0x8b7d('0x31')][_0x8b7d('0x36')]));_0x16ef2e['attributes']=_0x16ef2e[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x16ef2e[_0x8b7d('0x35')]:_0x40be68['model'];if(_0x1c373d[_0x8b7d('0x31')][_0x8b7d('0x42')]){_0x16ef2e[_0x8b7d('0x43')]=[{'all':!![]}];}_0x16ef2e=_['merge']({},_0x16ef2e,_0x1c373d[_0x8b7d('0x40')]);return db[_0x8b7d('0x41')][_0x8b7d('0x47')](_0x16ef2e)[_0x8b7d('0x27')](handleEntityNotFound(_0x14d822,null))[_0x8b7d('0x27')](respondWithResult(_0x14d822,null))[_0x8b7d('0x45')](handleError(_0x14d822,null));};exports[_0x8b7d('0x48')]=function(_0x272166,_0x235ff9){return db[_0x8b7d('0x41')][_0x8b7d('0x48')](_0x272166[_0x8b7d('0x49')],{})['then'](respondWithResult(_0x235ff9,0xc9))[_0x8b7d('0x45')](handleError(_0x235ff9,null));};exports[_0x8b7d('0x26')]=function(_0x53f85f,_0x1d1229){if(_0x53f85f[_0x8b7d('0x49')]['id']){delete _0x53f85f[_0x8b7d('0x49')]['id'];}return db['ChatGroup'][_0x8b7d('0x47')]({'where':{'id':_0x53f85f[_0x8b7d('0x46')]['id']}})['then'](handleEntityNotFound(_0x1d1229,null))['then'](saveUpdates(_0x53f85f[_0x8b7d('0x49')],null))[_0x8b7d('0x27')](respondWithResult(_0x1d1229,null))[_0x8b7d('0x45')](handleError(_0x1d1229,null));};exports['destroy']=function(_0x35766a,_0x4f5d0f){return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x35766a[_0x8b7d('0x46')]['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x4f5d0f,null))[_0x8b7d('0x27')](removeEntity(_0x4f5d0f,null))[_0x8b7d('0x45')](handleError(_0x4f5d0f,null));};exports[_0x8b7d('0x4a')]=function(_0x19cdc4,_0x17b497){return db[_0x8b7d('0x41')]['describe']()['then'](respondWithResult(_0x17b497,null))['catch'](handleError(_0x17b497,null));};exports[_0x8b7d('0x4b')]=function(_0xa858b4,_0x175759,_0x5882a1){return db[_0x8b7d('0x4c')][_0x8b7d('0x22')]({'where':{'ChatGroupId':_0xa858b4[_0x8b7d('0x46')]['id'],'ToId':_0xa858b4[_0x8b7d('0x4d')]['id'],'read':![]}})[_0x8b7d('0x27')](function(_0xf45267){return{'id':_[_0x8b7d('0x4e')](_0xa858b4[_0x8b7d('0x46')]['id']),'count':_0xf45267};})['then'](respondWithResult(_0x175759,null))[_0x8b7d('0x45')](handleError(_0x175759,null));};exports[_0x8b7d('0x4f')]=function(_0x2db28e,_0xaebdfe,_0x289c97){return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x2db28e['params']['id']}})['then'](handleEntityNotFound(_0xaebdfe,null))[_0x8b7d('0x27')](function(_0x1e4e0e){if(_0x1e4e0e){return _0x1e4e0e[_0x8b7d('0x4f')](_0x2db28e[_0x8b7d('0x49')][_0x8b7d('0x50')],_[_0x8b7d('0x51')](_0x2db28e[_0x8b7d('0x49')],[_0x8b7d('0x50'),'id'])||{});}})[_0x8b7d('0x27')](respondWithResult(_0xaebdfe,null))[_0x8b7d('0x45')](handleError(_0xaebdfe,null));};exports[_0x8b7d('0x52')]=function(_0x48473c,_0x411520,_0x46c4bf){var _0x4d2ed5={};var _0x44bc82={};var _0xd2ed82;var _0x16ab50;return db[_0x8b7d('0x41')]['findOne']({'where':{'id':_0x48473c[_0x8b7d('0x46')]['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x411520,null))[_0x8b7d('0x27')](function(_0x14c3b3){if(_0x14c3b3){_0xd2ed82=_0x14c3b3;_0x44bc82[_0x8b7d('0x2f')]=_[_0x8b7d('0x32')](db[_0x8b7d('0x53')][_0x8b7d('0x2c')]);_0x44bc82[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x48473c['query']);_0x44bc82[_0x8b7d('0x33')]=_[_0x8b7d('0x34')](_0x44bc82['model'],_0x44bc82[_0x8b7d('0x31')]);_0x4d2ed5[_0x8b7d('0x35')]=_[_0x8b7d('0x34')](_0x44bc82[_0x8b7d('0x2f')],qs['fields'](_0x48473c[_0x8b7d('0x31')]['fields']));_0x4d2ed5[_0x8b7d('0x35')]=_0x4d2ed5[_0x8b7d('0x35')]['length']?_0x4d2ed5[_0x8b7d('0x35')]:_0x44bc82[_0x8b7d('0x2f')];_0x4d2ed5[_0x8b7d('0x3a')]=qs['sort'](_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x3b')]);_0x4d2ed5['where']=qs['filters'](_['pick'](_0x48473c['query'],_0x44bc82[_0x8b7d('0x33')]));if(_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x4d2ed5[_0x8b7d('0x3c')]=_[_0x8b7d('0x3f')](_0x4d2ed5[_0x8b7d('0x3c')],{'$or':_['map'](_0x4d2ed5[_0x8b7d('0x35')],function(_0x46c38e){var _0x3894eb={};_0x3894eb[_0x46c38e]={'$like':'%'+_0x48473c['query'][_0x8b7d('0x3e')]+'%'};return _0x3894eb;})});}_0x4d2ed5=_['merge']({},_0x4d2ed5,_0x48473c[_0x8b7d('0x40')]);return _0xd2ed82[_0x8b7d('0x52')](_0x4d2ed5);}})['then'](function(_0xb376c0){if(_0xb376c0){_0x16ab50=_0xb376c0[_0x8b7d('0x37')];if(!_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x4d2ed5[_0x8b7d('0x21')]=qs[_0x8b7d('0x21')](_0x48473c[_0x8b7d('0x31')]['limit']);_0x4d2ed5['offset']=qs[_0x8b7d('0x1f')](_0x48473c[_0x8b7d('0x31')][_0x8b7d('0x1f')]);}return _0xd2ed82[_0x8b7d('0x52')](_0x4d2ed5);}})[_0x8b7d('0x27')](function(_0x31484b){if(_0x31484b){return _0x31484b?{'count':_0x16ab50,'rows':_0x31484b}:null;}})[_0x8b7d('0x27')](respondWithResult(_0x411520,null))[_0x8b7d('0x45')](handleError(_0x411520,null));};exports['removeMembers']=function(_0x517efa,_0x1af322,_0x4de9fa){return db[_0x8b7d('0x41')]['find']({'where':{'id':_0x517efa['params']['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x1af322,null))[_0x8b7d('0x27')](function(_0x365060){if(_0x365060){return _0x365060[_0x8b7d('0x54')](_0x517efa['query'][_0x8b7d('0x50')]);}})[_0x8b7d('0x27')](respondWithStatusCode(_0x1af322,null))['catch'](handleError(_0x1af322,null));};exports['addMessage']=function(_0x1cbfc8,_0x2e991f,_0x2c5475){if(_0x1cbfc8[_0x8b7d('0x49')]['id']){delete _0x1cbfc8[_0x8b7d('0x49')]['id'];}return db[_0x8b7d('0x41')][_0x8b7d('0x47')]({'where':{'id':_0x1cbfc8['params']['id']}})['then'](handleEntityNotFound(_0x2e991f,null))['then'](function(_0x5689aa){if(_0x5689aa){_0x1cbfc8['body'][_0x8b7d('0x55')]=_0x5689aa['id'];return db[_0x8b7d('0x4c')][_0x8b7d('0x48')](_0x1cbfc8[_0x8b7d('0x49')]);}})[_0x8b7d('0x27')](respondWithResult(_0x2e991f,null))[_0x8b7d('0x45')](handleError(_0x2e991f,null));};exports['getMessages']=function(_0x1e2f0d,_0x2c32fe,_0x23ab18){var _0x2ab495={};var _0x4088d1={};var _0x159182;var _0x3229d2;return db[_0x8b7d('0x41')][_0x8b7d('0x56')]({'where':{'id':_0x1e2f0d['params']['id']}})[_0x8b7d('0x27')](handleEntityNotFound(_0x2c32fe,null))[_0x8b7d('0x27')](function(_0x1c2fc6){if(_0x1c2fc6){_0x159182=_0x1c2fc6;_0x4088d1[_0x8b7d('0x2f')]=_[_0x8b7d('0x32')](db[_0x8b7d('0x4c')][_0x8b7d('0x2c')]);_0x4088d1[_0x8b7d('0x31')]=_[_0x8b7d('0x32')](_0x1e2f0d['query']);_0x4088d1[_0x8b7d('0x33')]=_['intersection'](_0x4088d1['model'],_0x4088d1[_0x8b7d('0x31')]);_0x2ab495[_0x8b7d('0x35')]=_['intersection'](_0x4088d1['model'],qs[_0x8b7d('0x36')](_0x1e2f0d['query'][_0x8b7d('0x36')]));_0x2ab495['attributes']=_0x2ab495[_0x8b7d('0x35')][_0x8b7d('0x37')]?_0x2ab495['attributes']:_0x4088d1['model'];_0x2ab495[_0x8b7d('0x3a')]=qs[_0x8b7d('0x3b')](_0x1e2f0d['query'][_0x8b7d('0x3b')]);_0x2ab495[_0x8b7d('0x3c')]=qs['filters'](_['pick'](_0x1e2f0d[_0x8b7d('0x31')],_0x4088d1[_0x8b7d('0x33')]));if(_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x3e')]){_0x2ab495[_0x8b7d('0x3c')]=_[_0x8b7d('0x3f')](_0x2ab495[_0x8b7d('0x3c')],{'$or':_[_0x8b7d('0x30')](_0x2ab495[_0x8b7d('0x35')],function(_0x292884){var _0x26515d={};_0x26515d[_0x292884]={'$like':'%'+_0x1e2f0d['query']['filter']+'%'};return _0x26515d;})});}if(_0x1e2f0d[_0x8b7d('0x31')]['$gte']){var _0x59c08f=_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x57')][_0x8b7d('0x58')](',');var _0x4361cc={};_0x4361cc[_0x59c08f[0x0]]={'$gte':moment(_0x59c08f[0x1])[_0x8b7d('0x59')](_0x8b7d('0x5a'))};_0x2ab495['where']=_[_0x8b7d('0x3f')](_0x2ab495[_0x8b7d('0x3c')],_0x4361cc);}_0x2ab495=_[_0x8b7d('0x3f')]({},_0x2ab495,_0x1e2f0d['options']);return _0x159182[_0x8b7d('0x5b')](_0x2ab495);}})[_0x8b7d('0x27')](function(_0x7b65fc){if(_0x7b65fc){_0x3229d2=_0x7b65fc[_0x8b7d('0x37')];if(!_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x38')](_0x8b7d('0x39'))){_0x2ab495[_0x8b7d('0x21')]=qs['limit'](_0x1e2f0d[_0x8b7d('0x31')][_0x8b7d('0x21')]);_0x2ab495[_0x8b7d('0x1f')]=qs[_0x8b7d('0x1f')](_0x1e2f0d[_0x8b7d('0x31')]['offset']);}return _0x159182['getMessages'](_0x2ab495);}})[_0x8b7d('0x27')](function(_0x1839b1){if(_0x1839b1){return _0x1839b1?{'count':_0x3229d2,'rows':_0x1839b1}:null;}})[_0x8b7d('0x27')](respondWithResult(_0x2c32fe,null))[_0x8b7d('0x45')](handleError(_0x2c32fe,null));};
\ No newline at end of file
+var _0x98d1=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','status','undefined','count','offset','set','Content-Range','json','reject','then','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','body','update','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','removeMembers','addMessage','ChatGroupId','create','getMessages','keys','split','format','YYYY-MM-DD\x20HH:mm:ss','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x36b0d8,_0x43670e){var _0x3c3f18=function(_0x920845){while(--_0x920845){_0x36b0d8['push'](_0x36b0d8['shift']());}};_0x3c3f18(++_0x43670e);}(_0x98d1,0x1f4));var _0x198d=function(_0x3a7553,_0x2c7660){_0x3a7553=_0x3a7553-0x0;var _0x4d912c=_0x98d1[_0x3a7553];return _0x4d912c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x198d('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x198d('0x1'));var moment=require(_0x198d('0x2'));var BPromise=require(_0x198d('0x3'));var Mustache=require(_0x198d('0x4'));var util=require(_0x198d('0x5'));var path=require(_0x198d('0x6'));var sox=require(_0x198d('0x7'));var csv=require(_0x198d('0x8'));var ejs=require(_0x198d('0x9'));var fs=require('fs');var fs_extra=require(_0x198d('0xa'));var _=require(_0x198d('0xb'));var squel=require(_0x198d('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x198d('0xd'));var toCsv=require(_0x198d('0x8'));var querystring=require('querystring');var Papa=require(_0x198d('0xe'));var Redis=require('ioredis');var authService=require(_0x198d('0xf'));var qs=require(_0x198d('0x10'));var as=require(_0x198d('0x11'));var hardwareService=require(_0x198d('0x12'));var logger=require(_0x198d('0x13'))(_0x198d('0x14'));var utils=require(_0x198d('0x15'));var config=require(_0x198d('0x16'));var licenseUtil=require(_0x198d('0x17'));var db=require(_0x198d('0x18'))['db'];config[_0x198d('0x19')]=_['defaults'](config[_0x198d('0x19')],{'host':_0x198d('0x1a'),'port':0x18eb});var socket=require(_0x198d('0x1b'))(new Redis(config[_0x198d('0x19')]));require(_0x198d('0x1c'))[_0x198d('0x1d')](socket);function respondWithStatusCode(_0xbb4993,_0x2de212){_0x2de212=_0x2de212||0xcc;return function(_0x4daa63){if(_0x4daa63){return _0xbb4993[_0x198d('0x1e')](_0x2de212);}return _0xbb4993['status'](_0x2de212)[_0x198d('0x1f')]();};}function respondWithResult(_0x3a50f6,_0x499009){_0x499009=_0x499009||0xc8;return function(_0x3f61d8){if(_0x3f61d8){return _0x3a50f6[_0x198d('0x20')](_0x499009)['json'](_0x3f61d8);}};}function respondWithFilteredResult(_0xf7a666,_0x518bbd){return function(_0x4290e8){if(_0x4290e8){var _0x4dbb50=typeof _0x518bbd['offset']===_0x198d('0x21')&&typeof _0x518bbd['limit']===_0x198d('0x21');var _0x1c8641=_0x4290e8[_0x198d('0x22')];var _0x34e3d7=_0x4dbb50?0x0:_0x518bbd[_0x198d('0x23')];var _0x13845a=_0x4dbb50?_0x4290e8[_0x198d('0x22')]:_0x518bbd[_0x198d('0x23')]+_0x518bbd['limit'];var _0x3538d5;if(_0x13845a>=_0x1c8641){_0x13845a=_0x1c8641;_0x3538d5=0xc8;}else{_0x3538d5=0xce;}_0xf7a666[_0x198d('0x20')](_0x3538d5);return _0xf7a666[_0x198d('0x24')](_0x198d('0x25'),_0x34e3d7+'-'+_0x13845a+'/'+_0x1c8641)[_0x198d('0x26')](_0x4290e8);}return null;};}function patchUpdates(_0x12a3fc){return function(_0x469b62){try{jsonpatch['apply'](_0x469b62,_0x12a3fc,!![]);}catch(_0xc3da64){return BPromise[_0x198d('0x27')](_0xc3da64);}return _0x469b62['save']();};}function saveUpdates(_0x4574af,_0x4bd70d){return function(_0x174629){if(_0x174629){return _0x174629['update'](_0x4574af)['then'](function(_0x54db67){return _0x54db67;});}return null;};}function removeEntity(_0x238079,_0x15b2c1){return function(_0x1ebf3e){if(_0x1ebf3e){return _0x1ebf3e['destroy']()[_0x198d('0x28')](function(){_0x238079[_0x198d('0x20')](0xcc)[_0x198d('0x1f')]();});}};}function handleEntityNotFound(_0x3d8d05,_0x1cb0d3){return function(_0x482559){if(!_0x482559){_0x3d8d05['sendStatus'](0x194);}return _0x482559;};}function handleError(_0x596837,_0x28a5fc){_0x28a5fc=_0x28a5fc||0x1f4;return function(_0x554153){logger[_0x198d('0x29')](_0x554153[_0x198d('0x2a')]);if(_0x554153[_0x198d('0x2b')]){delete _0x554153[_0x198d('0x2b')];}_0x596837['status'](_0x28a5fc)[_0x198d('0x2c')](_0x554153);};}exports[_0x198d('0x2d')]=function(_0x385ee3,_0x21a602){var _0x11acf4={},_0x4d7fea={},_0x28d4cf={'count':0x0,'rows':[]};var _0x42ad0d=_[_0x198d('0x2e')](db[_0x198d('0x2f')][_0x198d('0x30')],function(_0x2a80cd){return{'name':_0x2a80cd[_0x198d('0x31')],'type':_0x2a80cd[_0x198d('0x32')][_0x198d('0x33')]};});_0x4d7fea[_0x198d('0x34')]=_[_0x198d('0x2e')](_0x42ad0d,_0x198d('0x2b'));_0x4d7fea[_0x198d('0x35')]=_['keys'](_0x385ee3[_0x198d('0x35')]);_0x4d7fea[_0x198d('0x36')]=_['intersection'](_0x4d7fea[_0x198d('0x34')],_0x4d7fea[_0x198d('0x35')]);_0x11acf4[_0x198d('0x37')]=_[_0x198d('0x38')](_0x4d7fea[_0x198d('0x34')],qs[_0x198d('0x39')](_0x385ee3[_0x198d('0x35')][_0x198d('0x39')]));_0x11acf4[_0x198d('0x37')]=_0x11acf4['attributes'][_0x198d('0x3a')]?_0x11acf4['attributes']:_0x4d7fea['model'];if(!_0x385ee3[_0x198d('0x35')][_0x198d('0x3b')](_0x198d('0x3c'))){_0x11acf4[_0x198d('0x3d')]=qs[_0x198d('0x3d')](_0x385ee3[_0x198d('0x35')][_0x198d('0x3d')]);_0x11acf4['offset']=qs[_0x198d('0x23')](_0x385ee3['query'][_0x198d('0x23')]);}_0x11acf4[_0x198d('0x3e')]=qs[_0x198d('0x3f')](_0x385ee3[_0x198d('0x35')][_0x198d('0x3f')]);_0x11acf4[_0x198d('0x40')]=qs[_0x198d('0x36')](_[_0x198d('0x41')](_0x385ee3[_0x198d('0x35')],_0x4d7fea[_0x198d('0x36')]),_0x42ad0d);if(_0x385ee3['query'][_0x198d('0x42')]){_0x11acf4[_0x198d('0x40')]=_[_0x198d('0x43')](_0x11acf4[_0x198d('0x40')],{'$or':_[_0x198d('0x2e')](_0x42ad0d,function(_0x2ce20c){if(_0x2ce20c[_0x198d('0x32')]!==_0x198d('0x44')){var _0xc55844={};_0xc55844[_0x2ce20c[_0x198d('0x2b')]]={'$like':'%'+_0x385ee3['query']['filter']+'%'};return _0xc55844;}})});}_0x11acf4=_[_0x198d('0x43')]({},_0x11acf4,_0x385ee3['options']);var _0x14a57c={'where':_0x11acf4[_0x198d('0x40')]};return db[_0x198d('0x2f')][_0x198d('0x22')](_0x14a57c)[_0x198d('0x28')](function(_0x2ad1c8){_0x28d4cf[_0x198d('0x22')]=_0x2ad1c8;if(_0x385ee3[_0x198d('0x35')][_0x198d('0x45')]){_0x11acf4[_0x198d('0x46')]=[{'all':!![]}];}return db['ChatGroup'][_0x198d('0x47')](_0x11acf4);})[_0x198d('0x28')](function(_0x1055f3){_0x28d4cf[_0x198d('0x48')]=_0x1055f3;return _0x28d4cf;})[_0x198d('0x28')](respondWithFilteredResult(_0x21a602,_0x11acf4))[_0x198d('0x49')](handleError(_0x21a602,null));};exports[_0x198d('0x4a')]=function(_0x487f53,_0x13b4ae){var _0x2db994={'raw':!![],'where':{'id':_0x487f53[_0x198d('0x4b')]['id']}},_0x2e45a9={};_0x2e45a9[_0x198d('0x34')]=_['keys'](db[_0x198d('0x2f')][_0x198d('0x30')]);_0x2e45a9[_0x198d('0x35')]=_['keys'](_0x487f53[_0x198d('0x35')]);_0x2e45a9['filters']=_[_0x198d('0x38')](_0x2e45a9[_0x198d('0x34')],_0x2e45a9[_0x198d('0x35')]);_0x2db994[_0x198d('0x37')]=_[_0x198d('0x38')](_0x2e45a9[_0x198d('0x34')],qs['fields'](_0x487f53['query'][_0x198d('0x39')]));_0x2db994['attributes']=_0x2db994[_0x198d('0x37')][_0x198d('0x3a')]?_0x2db994['attributes']:_0x2e45a9[_0x198d('0x34')];if(_0x487f53['query'][_0x198d('0x45')]){_0x2db994[_0x198d('0x46')]=[{'all':!![]}];}_0x2db994=_[_0x198d('0x43')]({},_0x2db994,_0x487f53[_0x198d('0x4c')]);return db[_0x198d('0x2f')][_0x198d('0x4d')](_0x2db994)[_0x198d('0x28')](handleEntityNotFound(_0x13b4ae,null))[_0x198d('0x28')](respondWithResult(_0x13b4ae,null))[_0x198d('0x49')](handleError(_0x13b4ae,null));};exports['create']=function(_0x4061bc,_0x168564){return db[_0x198d('0x2f')]['create'](_0x4061bc[_0x198d('0x4e')],{})[_0x198d('0x28')](respondWithResult(_0x168564,0xc9))['catch'](handleError(_0x168564,null));};exports[_0x198d('0x4f')]=function(_0x4a3f7b,_0x399666){if(_0x4a3f7b[_0x198d('0x4e')]['id']){delete _0x4a3f7b[_0x198d('0x4e')]['id'];}return db['ChatGroup'][_0x198d('0x4d')]({'where':{'id':_0x4a3f7b['params']['id']}})['then'](handleEntityNotFound(_0x399666,null))['then'](saveUpdates(_0x4a3f7b[_0x198d('0x4e')],null))['then'](respondWithResult(_0x399666,null))[_0x198d('0x49')](handleError(_0x399666,null));};exports[_0x198d('0x50')]=function(_0x236b29,_0x14399f){return db[_0x198d('0x2f')][_0x198d('0x4d')]({'where':{'id':_0x236b29['params']['id']}})[_0x198d('0x28')](handleEntityNotFound(_0x14399f,null))['then'](removeEntity(_0x14399f,null))[_0x198d('0x49')](handleError(_0x14399f,null));};exports[_0x198d('0x51')]=function(_0x444283,_0x1ce5eb){return db['ChatGroup'][_0x198d('0x51')]()[_0x198d('0x28')](respondWithResult(_0x1ce5eb,null))[_0x198d('0x49')](handleError(_0x1ce5eb,null));};exports[_0x198d('0x52')]=function(_0x3c7621,_0xb42ece,_0x2cf545){return db[_0x198d('0x53')][_0x198d('0x22')]({'where':{'ChatGroupId':_0x3c7621['params']['id'],'ToId':_0x3c7621[_0x198d('0x54')]['id'],'read':![]}})[_0x198d('0x28')](function(_0x9fcc1e){return{'id':_[_0x198d('0x55')](_0x3c7621[_0x198d('0x4b')]['id']),'count':_0x9fcc1e};})[_0x198d('0x28')](respondWithResult(_0xb42ece,null))['catch'](handleError(_0xb42ece,null));};exports['addMembers']=function(_0x1524bc,_0x59167a,_0x5e0ee3){return db[_0x198d('0x2f')][_0x198d('0x4d')]({'where':{'id':_0x1524bc[_0x198d('0x4b')]['id']}})[_0x198d('0x28')](handleEntityNotFound(_0x59167a,null))[_0x198d('0x28')](function(_0x22898a){if(_0x22898a){return _0x22898a[_0x198d('0x56')](_0x1524bc[_0x198d('0x4e')]['ids'],_[_0x198d('0x57')](_0x1524bc['body'],[_0x198d('0x58'),'id'])||{});}})[_0x198d('0x28')](respondWithResult(_0x59167a,null))[_0x198d('0x49')](handleError(_0x59167a,null));};exports[_0x198d('0x59')]=function(_0x432170,_0x20b39b,_0x11c476){var _0x3f8234={};var _0x3c559c={};var _0x1df0c6;var _0x2ab5b1;return db['ChatGroup'][_0x198d('0x5a')]({'where':{'id':_0x432170[_0x198d('0x4b')]['id']}})[_0x198d('0x28')](handleEntityNotFound(_0x20b39b,null))[_0x198d('0x28')](function(_0x521feb){if(_0x521feb){_0x1df0c6=_0x521feb;_0x3c559c[_0x198d('0x34')]=_['keys'](db[_0x198d('0x5b')]['rawAttributes']);_0x3c559c[_0x198d('0x35')]=_['keys'](_0x432170[_0x198d('0x35')]);_0x3c559c[_0x198d('0x36')]=_[_0x198d('0x38')](_0x3c559c['model'],_0x3c559c['query']);_0x3f8234[_0x198d('0x37')]=_[_0x198d('0x38')](_0x3c559c[_0x198d('0x34')],qs[_0x198d('0x39')](_0x432170[_0x198d('0x35')][_0x198d('0x39')]));_0x3f8234[_0x198d('0x37')]=_0x3f8234[_0x198d('0x37')][_0x198d('0x3a')]?_0x3f8234[_0x198d('0x37')]:_0x3c559c[_0x198d('0x34')];_0x3f8234[_0x198d('0x3e')]=qs[_0x198d('0x3f')](_0x432170[_0x198d('0x35')][_0x198d('0x3f')]);_0x3f8234['where']=qs['filters'](_[_0x198d('0x41')](_0x432170[_0x198d('0x35')],_0x3c559c[_0x198d('0x36')]));if(_0x432170[_0x198d('0x35')][_0x198d('0x42')]){_0x3f8234[_0x198d('0x40')]=_['merge'](_0x3f8234[_0x198d('0x40')],{'$or':_[_0x198d('0x2e')](_0x3f8234[_0x198d('0x37')],function(_0x121009){var _0x1e44bc={};_0x1e44bc[_0x121009]={'$like':'%'+_0x432170[_0x198d('0x35')][_0x198d('0x42')]+'%'};return _0x1e44bc;})});}_0x3f8234=_[_0x198d('0x43')]({},_0x3f8234,_0x432170[_0x198d('0x4c')]);return _0x1df0c6[_0x198d('0x59')](_0x3f8234);}})[_0x198d('0x28')](function(_0x1c6e32){if(_0x1c6e32){_0x2ab5b1=_0x1c6e32[_0x198d('0x3a')];if(!_0x432170[_0x198d('0x35')][_0x198d('0x3b')]('nolimit')){_0x3f8234[_0x198d('0x3d')]=qs[_0x198d('0x3d')](_0x432170[_0x198d('0x35')][_0x198d('0x3d')]);_0x3f8234['offset']=qs['offset'](_0x432170[_0x198d('0x35')][_0x198d('0x23')]);}return _0x1df0c6['getMembers'](_0x3f8234);}})[_0x198d('0x28')](function(_0x340f7c){if(_0x340f7c){return _0x340f7c?{'count':_0x2ab5b1,'rows':_0x340f7c}:null;}})[_0x198d('0x28')](respondWithResult(_0x20b39b,null))[_0x198d('0x49')](handleError(_0x20b39b,null));};exports[_0x198d('0x5c')]=function(_0x434dbd,_0xfa5f24,_0x28b1f5){return db['ChatGroup'][_0x198d('0x4d')]({'where':{'id':_0x434dbd['params']['id']}})['then'](handleEntityNotFound(_0xfa5f24,null))[_0x198d('0x28')](function(_0x16031f){if(_0x16031f){return _0x16031f[_0x198d('0x5c')](_0x434dbd[_0x198d('0x35')]['ids']);}})[_0x198d('0x28')](respondWithStatusCode(_0xfa5f24,null))[_0x198d('0x49')](handleError(_0xfa5f24,null));};exports[_0x198d('0x5d')]=function(_0xaa2631,_0x41ad53,_0x2a378c){if(_0xaa2631[_0x198d('0x4e')]['id']){delete _0xaa2631[_0x198d('0x4e')]['id'];}return db[_0x198d('0x2f')][_0x198d('0x4d')]({'where':{'id':_0xaa2631[_0x198d('0x4b')]['id']}})[_0x198d('0x28')](handleEntityNotFound(_0x41ad53,null))[_0x198d('0x28')](function(_0x35b086){if(_0x35b086){_0xaa2631[_0x198d('0x4e')][_0x198d('0x5e')]=_0x35b086['id'];return db[_0x198d('0x53')][_0x198d('0x5f')](_0xaa2631[_0x198d('0x4e')]);}})['then'](respondWithResult(_0x41ad53,null))[_0x198d('0x49')](handleError(_0x41ad53,null));};exports[_0x198d('0x60')]=function(_0x5c57d4,_0x2b2bd7,_0x1d94b5){var _0x860057={};var _0x556217={};var _0x5ca2a7;var _0x34eff7;return db[_0x198d('0x2f')][_0x198d('0x5a')]({'where':{'id':_0x5c57d4[_0x198d('0x4b')]['id']}})[_0x198d('0x28')](handleEntityNotFound(_0x2b2bd7,null))[_0x198d('0x28')](function(_0xe96f94){if(_0xe96f94){_0x5ca2a7=_0xe96f94;_0x556217[_0x198d('0x34')]=_[_0x198d('0x61')](db[_0x198d('0x53')][_0x198d('0x30')]);_0x556217[_0x198d('0x35')]=_[_0x198d('0x61')](_0x5c57d4[_0x198d('0x35')]);_0x556217[_0x198d('0x36')]=_[_0x198d('0x38')](_0x556217['model'],_0x556217[_0x198d('0x35')]);_0x860057[_0x198d('0x37')]=_[_0x198d('0x38')](_0x556217[_0x198d('0x34')],qs['fields'](_0x5c57d4[_0x198d('0x35')]['fields']));_0x860057[_0x198d('0x37')]=_0x860057[_0x198d('0x37')][_0x198d('0x3a')]?_0x860057[_0x198d('0x37')]:_0x556217[_0x198d('0x34')];_0x860057[_0x198d('0x3e')]=qs[_0x198d('0x3f')](_0x5c57d4[_0x198d('0x35')]['sort']);_0x860057['where']=qs[_0x198d('0x36')](_[_0x198d('0x41')](_0x5c57d4[_0x198d('0x35')],_0x556217[_0x198d('0x36')]));if(_0x5c57d4[_0x198d('0x35')][_0x198d('0x42')]){_0x860057[_0x198d('0x40')]=_[_0x198d('0x43')](_0x860057[_0x198d('0x40')],{'$or':_[_0x198d('0x2e')](_0x860057['attributes'],function(_0x342958){var _0x12d7ca={};_0x12d7ca[_0x342958]={'$like':'%'+_0x5c57d4[_0x198d('0x35')][_0x198d('0x42')]+'%'};return _0x12d7ca;})});}if(_0x5c57d4['query']['$gte']){var _0x1b27ed=_0x5c57d4['query']['$gte'][_0x198d('0x62')](',');var _0xff455d={};_0xff455d[_0x1b27ed[0x0]]={'$gte':moment(_0x1b27ed[0x1])[_0x198d('0x63')](_0x198d('0x64'))};_0x860057[_0x198d('0x40')]=_[_0x198d('0x43')](_0x860057[_0x198d('0x40')],_0xff455d);}_0x860057=_['merge']({},_0x860057,_0x5c57d4[_0x198d('0x4c')]);return _0x5ca2a7[_0x198d('0x60')](_0x860057);}})[_0x198d('0x28')](function(_0x47ccc7){if(_0x47ccc7){_0x34eff7=_0x47ccc7['length'];if(!_0x5c57d4['query'][_0x198d('0x3b')](_0x198d('0x3c'))){_0x860057['limit']=qs['limit'](_0x5c57d4[_0x198d('0x35')][_0x198d('0x3d')]);_0x860057[_0x198d('0x23')]=qs['offset'](_0x5c57d4[_0x198d('0x35')]['offset']);}return _0x5ca2a7['getMessages'](_0x860057);}})[_0x198d('0x28')](function(_0x4cfd05){if(_0x4cfd05){return _0x4cfd05?{'count':_0x34eff7,'rows':_0x4cfd05}:null;}})[_0x198d('0x28')](respondWithResult(_0x2b2bd7,null))[_0x198d('0x49')](handleError(_0x2b2bd7,null));};
\ No newline at end of file
index dd65331..3b4968b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9303=['events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x1e7214,_0x4a5237){var _0x555261=function(_0x1f12c7){while(--_0x1f12c7){_0x1e7214['push'](_0x1e7214['shift']());}};_0x555261(++_0x4a5237);}(_0x9303,0xd7));var _0x3930=function(_0x37d0bc,_0x109b96){_0x37d0bc=_0x37d0bc-0x0;var _0x170e60=_0x9303[_0x37d0bc];return _0x170e60;};'use strict';var EventEmitter=require(_0x3930('0x0'));var ChatGroup=require('../../mysqldb')['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x3930('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3930('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4fd19e){return function(_0x3e9314,_0x2dddd0,_0x1fb17){ChatGroupEvents[_0x3930('0x3')](_0x4fd19e+':'+_0x3e9314['id'],_0x3e9314);ChatGroupEvents['emit'](_0x4fd19e,_0x3e9314);_0x1fb17(null);};}for(var e in events){if(events[_0x3930('0x4')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0x5204=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5204,0xdf));var _0x4520=function(_0x2ab76b,_0x176579){_0x2ab76b=_0x2ab76b-0x0;var _0x201126=_0x5204[_0x2ab76b];return _0x201126;};'use strict';var EventEmitter=require(_0x4520('0x0'));var ChatGroup=require(_0x4520('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x4520('0x2')](0x0);var events={'afterCreate':_0x4520('0x3'),'afterUpdate':_0x4520('0x4'),'afterDestroy':_0x4520('0x5')};function emitEvent(_0x3db6fc){return function(_0x592fe0,_0x41d89c,_0x58b8a8){ChatGroupEvents[_0x4520('0x6')](_0x3db6fc+':'+_0x592fe0['id'],_0x592fe0);ChatGroupEvents[_0x4520('0x6')](_0x3db6fc,_0x592fe0);_0x58b8a8(null);};}for(var e in events){if(events[_0x4520('0x7')](e)){var event=events[e];ChatGroup[_0x4520('0x8')](e,emitEvent(event));}}module[_0x4520('0x9')]=ChatGroupEvents;
\ No newline at end of file
index 66246f0..741aba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e0=['define','ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x4571a2,_0x14be4c){var _0x1de9e9=function(_0x115600){while(--_0x115600){_0x4571a2['push'](_0x4571a2['shift']());}};_0x1de9e9(++_0x14be4c);}(_0xe1e0,0x78));var _0x0e1e=function(_0x36c8aa,_0x2aa1cd){_0x36c8aa=_0x36c8aa-0x0;var _0x1d196c=_0xe1e0[_0x36c8aa];return _0x1d196c;};'use strict';var _=require(_0x0e1e('0x0'));var util=require(_0x0e1e('0x1'));var logger=require(_0x0e1e('0x2'))(_0x0e1e('0x3'));var moment=require(_0x0e1e('0x4'));var BPromise=require(_0x0e1e('0x5'));var rp=require(_0x0e1e('0x6'));var fs=require('fs');var path=require(_0x0e1e('0x7'));var rimraf=require(_0x0e1e('0x8'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x0e1e('0x9')]=function(_0x115ee3,_0x326d2f){return _0x115ee3[_0x0e1e('0xa')](_0x0e1e('0xb'),attributes,{'tableName':_0x0e1e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f8e=['define','ChatGroup','chat_groups','lodash','util','api','moment','bluebird','path','../../config/environment','./chatGroup.attributes','exports'];(function(_0x1449a6,_0x7be837){var _0xdec613=function(_0x3c17b9){while(--_0x3c17b9){_0x1449a6['push'](_0x1449a6['shift']());}};_0xdec613(++_0x7be837);}(_0x8f8e,0xab));var _0xe8f8=function(_0x4ef734,_0x5826d){_0x4ef734=_0x4ef734-0x0;var _0x33a7cb=_0x8f8e[_0x4ef734];return _0x33a7cb;};'use strict';var _=require(_0xe8f8('0x0'));var util=require(_0xe8f8('0x1'));var logger=require('../../config/logger')(_0xe8f8('0x2'));var moment=require(_0xe8f8('0x3'));var BPromise=require(_0xe8f8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe8f8('0x5'));var rimraf=require('rimraf');var config=require(_0xe8f8('0x6'));var attributes=require(_0xe8f8('0x7'));module[_0xe8f8('0x8')]=function(_0x2365bd,_0x5e109d){return _0x2365bd[_0xe8f8('0x9')](_0xe8f8('0xa'),attributes,{'tableName':_0xe8f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8511af..b61f4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1360=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatGroup.socket','register','then','info','request\x20sent','debug','stringify','error','ChatGroup,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x41fa50,_0x53ad6a){var _0x96a63c=function(_0x11b482){while(--_0x11b482){_0x41fa50['push'](_0x41fa50['shift']());}};_0x96a63c(++_0x53ad6a);}(_0x1360,0x180));var _0x0136=function(_0x9bcc0b,_0x120f6c){_0x9bcc0b=_0x9bcc0b-0x0;var _0x195399=_0x1360[_0x9bcc0b];return _0x195399;};'use strict';var _=require(_0x0136('0x0'));var util=require(_0x0136('0x1'));var moment=require(_0x0136('0x2'));var BPromise=require(_0x0136('0x3'));var rs=require(_0x0136('0x4'));var fs=require('fs');var Redis=require(_0x0136('0x5'));var db=require(_0x0136('0x6'))['db'];var utils=require(_0x0136('0x7'));var logger=require(_0x0136('0x8'))(_0x0136('0x9'));var config=require(_0x0136('0xa'));var jayson=require(_0x0136('0xb'));var client=jayson['client'][_0x0136('0xc')]({'port':0x232a});config[_0x0136('0xd')]=_[_0x0136('0xe')](config['redis'],{'host':_0x0136('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0136('0xd')]));require(_0x0136('0x10'))[_0x0136('0x11')](socket);function respondWithRpcPromise(_0x34e1c6,_0xe1ae06,_0x4fbb44){return new BPromise(function(_0x1a129f,_0x4f33d5){return client['request'](_0x34e1c6,_0x4fbb44)[_0x0136('0x12')](function(_0x1dc80d){logger[_0x0136('0x13')]('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x0136('0x14'));logger[_0x0136('0x15')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0xe1ae06,_0x0136('0x14'),JSON[_0x0136('0x16')](_0x1dc80d));if(_0x1dc80d['error']){if(_0x1dc80d[_0x0136('0x17')]['code']===0x1f4){logger[_0x0136('0x17')](_0x0136('0x18'),_0xe1ae06,_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);return _0x4f33d5(_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);}logger[_0x0136('0x17')]('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);return _0x1a129f(_0x1dc80d[_0x0136('0x17')][_0x0136('0x19')]);}else{logger[_0x0136('0x13')](_0x0136('0x18'),_0xe1ae06,'request\x20sent');_0x1a129f(_0x1dc80d[_0x0136('0x1a')][_0x0136('0x19')]);}})[_0x0136('0x1b')](function(_0x20ed11){logger['error']('ChatGroup,\x20%s,\x20%s',_0xe1ae06,_0x20ed11);_0x4f33d5(_0x20ed11);});});}
\ No newline at end of file
+var _0x2028=['code','message','request\x20sent','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info','ChatGroup,\x20%s,\x20%s','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x2028,0x1e0));var _0x8202=function(_0xb0e69c,_0x37931f){_0xb0e69c=_0xb0e69c-0x0;var _0x521104=_0x2028[_0xb0e69c];return _0x521104;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8202('0x0'));var BPromise=require('bluebird');var rs=require(_0x8202('0x1'));var fs=require('fs');var Redis=require(_0x8202('0x2'));var db=require(_0x8202('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8202('0x4'))('rpc');var config=require(_0x8202('0x5'));var jayson=require(_0x8202('0x6'));var client=jayson[_0x8202('0x7')][_0x8202('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x8202('0x9')],{'host':_0x8202('0xa'),'port':0x18eb});var socket=require(_0x8202('0xb'))(new Redis(config[_0x8202('0x9')]));require('./chatGroup.socket')[_0x8202('0xc')](socket);function respondWithRpcPromise(_0x4393d9,_0x289918,_0xa9228a){return new BPromise(function(_0x49e6a7,_0x1c2336){return client['request'](_0x4393d9,_0xa9228a)[_0x8202('0xd')](function(_0x5e5b3c){logger[_0x8202('0xe')](_0x8202('0xf'),_0x289918,'request\x20sent');logger[_0x8202('0x10')](_0x8202('0x11'),_0x289918,'request\x20sent',JSON[_0x8202('0x12')](_0x5e5b3c));if(_0x5e5b3c[_0x8202('0x13')]){if(_0x5e5b3c['error'][_0x8202('0x14')]===0x1f4){logger[_0x8202('0x13')]('ChatGroup,\x20%s,\x20%s',_0x289918,_0x5e5b3c['error']['message']);return _0x1c2336(_0x5e5b3c['error'][_0x8202('0x15')]);}logger[_0x8202('0x13')](_0x8202('0xf'),_0x289918,_0x5e5b3c[_0x8202('0x13')][_0x8202('0x15')]);return _0x49e6a7(_0x5e5b3c[_0x8202('0x13')][_0x8202('0x15')]);}else{logger['info']('ChatGroup,\x20%s,\x20%s',_0x289918,_0x8202('0x16'));_0x49e6a7(_0x5e5b3c[_0x8202('0x17')]['message']);}})[_0x8202('0x18')](function(_0x540127){logger[_0x8202('0x13')](_0x8202('0xf'),_0x289918,_0x540127);_0x1c2336(_0x540127);});});}
\ No newline at end of file
index ce29767..351b592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d23=['save','remove','removeListener','register','length','./chatGroup.events'];(function(_0x247d2f,_0x3ba76e){var _0x44bf93=function(_0x8be164){while(--_0x8be164){_0x247d2f['push'](_0x247d2f['shift']());}};_0x44bf93(++_0x3ba76e);}(_0x6d23,0x1df));var _0x36d2=function(_0x47314f,_0x3137f0){_0x47314f=_0x47314f-0x0;var _0x4e430d=_0x6d23[_0x47314f];return _0x4e430d;};'use strict';var ChatGroupEvents=require(_0x36d2('0x0'));var events=[_0x36d2('0x1'),_0x36d2('0x2'),'update'];function createListener(_0x252b5b,_0x467445){return function(_0x31548c){_0x467445['emit'](_0x252b5b,_0x31548c);};}function removeListener(_0x36feea,_0x15ec1a){return function(){ChatGroupEvents[_0x36d2('0x3')](_0x36feea,_0x15ec1a);};}exports[_0x36d2('0x4')]=function(_0x18eab7){for(var _0x27b539=0x0,_0x5efc54=events[_0x36d2('0x5')];_0x27b539<_0x5efc54;_0x27b539++){var _0x273e57=events[_0x27b539];var _0x1ba695=createListener('chatGroup:'+_0x273e57,_0x18eab7);ChatGroupEvents['on'](_0x273e57,_0x1ba695);}};
\ No newline at end of file
+var _0x53b7=['./chatGroup.events','save','remove','update','emit','register','length','chatGroup:'];(function(_0x9b5bb2,_0x5db315){var _0x2e1e92=function(_0x5621c9){while(--_0x5621c9){_0x9b5bb2['push'](_0x9b5bb2['shift']());}};_0x2e1e92(++_0x5db315);}(_0x53b7,0x170));var _0x753b=function(_0x51544c,_0x38557d){_0x51544c=_0x51544c-0x0;var _0x2bd56b=_0x53b7[_0x51544c];return _0x2bd56b;};'use strict';var ChatGroupEvents=require(_0x753b('0x0'));var events=[_0x753b('0x1'),_0x753b('0x2'),_0x753b('0x3')];function createListener(_0x21918b,_0x1a88c3){return function(_0x452980){_0x1a88c3[_0x753b('0x4')](_0x21918b,_0x452980);};}function removeListener(_0x533771,_0x340417){return function(){ChatGroupEvents['removeListener'](_0x533771,_0x340417);};}exports[_0x753b('0x5')]=function(_0x38b1b6){for(var _0xc0c0a5=0x0,_0x3bb0da=events[_0x753b('0x6')];_0xc0c0a5<_0x3bb0da;_0xc0c0a5++){var _0x1a3b67=events[_0xc0c0a5];var _0x2014b7=createListener(_0x753b('0x7')+_0x1a3b67,_0x38b1b6);ChatGroupEvents['on'](_0x1a3b67,_0x2014b7);}};
\ No newline at end of file
index c097351..069fd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c89=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatGroup.controller','get','describe','/:id','show','/:id/unread','getUnread','/:id/members','isAuthenticated','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','update','destroy','delete','removeMembers','exports','multer','path'];(function(_0x148f37,_0x325e4d){var _0x53546c=function(_0x2784fe){while(--_0x2784fe){_0x148f37['push'](_0x148f37['shift']());}};_0x53546c(++_0x325e4d);}(_0x0c89,0x72));var _0x90c8=function(_0x2e09b0,_0x34f0bb){_0x2e09b0=_0x2e09b0-0x0;var _0x270c52=_0x0c89[_0x2e09b0];return _0x270c52;};'use strict';var multer=require(_0x90c8('0x0'));var util=require('util');var path=require(_0x90c8('0x1'));var timeout=require(_0x90c8('0x2'));var express=require(_0x90c8('0x3'));var router=express[_0x90c8('0x4')]();var fs_extra=require(_0x90c8('0x5'));var auth=require(_0x90c8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x90c8('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x90c8('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x90c8('0x9')]);router[_0x90c8('0x8')](_0x90c8('0xa'),auth['isAuthenticated'](),controller[_0x90c8('0xb')]);router[_0x90c8('0x8')](_0x90c8('0xc'),auth['isAuthenticated'](),controller[_0x90c8('0xd')]);router[_0x90c8('0x8')](_0x90c8('0xe'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x10')]);router[_0x90c8('0x8')](_0x90c8('0x11'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x12')]);router[_0x90c8('0x13')]('/',auth[_0x90c8('0xf')](),controller[_0x90c8('0x14')]);router[_0x90c8('0x13')](_0x90c8('0xe'),auth['isAuthenticated'](),controller[_0x90c8('0x15')]);router[_0x90c8('0x13')]('/:id/messages',auth['isAuthenticated'](),controller[_0x90c8('0x16')]);router[_0x90c8('0x17')](_0x90c8('0xa'),auth[_0x90c8('0xf')](),controller[_0x90c8('0x18')]);router['delete']('/:id',auth[_0x90c8('0xf')](),controller[_0x90c8('0x19')]);router[_0x90c8('0x1a')]('/:id/members',auth[_0x90c8('0xf')](),controller[_0x90c8('0x1b')]);module[_0x90c8('0x1c')]=router;
\ No newline at end of file
+var _0x88ce=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMessages','create','post','addMembers','addMessage','update','delete','destroy','removeMembers','exports'];(function(_0x141a2f,_0x58d944){var _0x1e84d3=function(_0x57628b){while(--_0x57628b){_0x141a2f['push'](_0x141a2f['shift']());}};_0x1e84d3(++_0x58d944);}(_0x88ce,0xae));var _0xe88c=function(_0x569914,_0x7e4760){_0x569914=_0x569914-0x0;var _0x54cc2a=_0x88ce[_0x569914];return _0x54cc2a;};'use strict';var multer=require(_0xe88c('0x0'));var util=require(_0xe88c('0x1'));var path=require(_0xe88c('0x2'));var timeout=require(_0xe88c('0x3'));var express=require(_0xe88c('0x4'));var router=express[_0xe88c('0x5')]();var fs_extra=require(_0xe88c('0x6'));var auth=require(_0xe88c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe88c('0x8'));var controller=require('./chatGroup.controller');router[_0xe88c('0x9')]('/',auth[_0xe88c('0xa')](),controller[_0xe88c('0xb')]);router['get'](_0xe88c('0xc'),auth[_0xe88c('0xa')](),controller[_0xe88c('0xd')]);router[_0xe88c('0x9')](_0xe88c('0xe'),auth[_0xe88c('0xa')](),controller[_0xe88c('0xf')]);router[_0xe88c('0x9')](_0xe88c('0x10'),auth[_0xe88c('0xa')](),controller[_0xe88c('0x11')]);router[_0xe88c('0x9')](_0xe88c('0x12'),auth[_0xe88c('0xa')](),controller['getMembers']);router[_0xe88c('0x9')]('/:id/messages',auth['isAuthenticated'](),controller[_0xe88c('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe88c('0x14')]);router[_0xe88c('0x15')](_0xe88c('0x12'),auth[_0xe88c('0xa')](),controller[_0xe88c('0x16')]);router['post']('/:id/messages',auth[_0xe88c('0xa')](),controller[_0xe88c('0x17')]);router['put']('/:id',auth[_0xe88c('0xa')](),controller[_0xe88c('0x18')]);router[_0xe88c('0x19')]('/:id',auth[_0xe88c('0xa')](),controller[_0xe88c('0x1a')]);router[_0xe88c('0x19')](_0xe88c('0x12'),auth[_0xe88c('0xa')](),controller[_0xe88c('0x1b')]);module[_0xe88c('0x1c')]=router;
\ No newline at end of file
index ee52ec6..cc961e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['sequelize','exports','BOOLEAN','ENUM','thumb','TEXT','STRING','long','DATE','out'];(function(_0x27790a,_0x51c3b1){var _0x435f1e=function(_0x5ddf99){while(--_0x5ddf99){_0x27790a['push'](_0x27790a['shift']());}};_0x435f1e(++_0x51c3b1);}(_0x7fce,0xdc));var _0xe7fc=function(_0x4a9e74,_0x43ac6e){_0x4a9e74=_0x4a9e74-0x0;var _0x2fb631=_0x7fce[_0x4a9e74];return _0x2fb631;};'use strict';var Sequelize=require(_0xe7fc('0x0'));module[_0xe7fc('0x1')]={'closed':{'type':Sequelize[_0xe7fc('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xe7fc('0x3')]('star',_0xe7fc('0x4')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xe7fc('0x5')]},'pathTranscript':{'type':Sequelize[_0xe7fc('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xe7fc('0x6')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xe7fc('0x6')]},'note':{'type':Sequelize[_0xe7fc('0x6')]},'browserName':{'type':Sequelize[_0xe7fc('0x6')]},'browserVersion':{'type':Sequelize[_0xe7fc('0x6')]},'osName':{'type':Sequelize[_0xe7fc('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0xe7fc('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xe7fc('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0xe7fc('0x6')]},'formData':{'type':Sequelize[_0xe7fc('0x5')](_0xe7fc('0x7'))},'read1stAt':{'type':Sequelize[_0xe7fc('0x8')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xe7fc('0x3')]('in',_0xe7fc('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0xe7fc('0x5')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x80ed=['INTEGER','ENUM','thumb','star','TEXT','DATE','STRING','long','out','sequelize','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x80ed,0x11c));var _0xd80e=function(_0x4352ed,_0x1f0a36){_0x4352ed=_0x4352ed-0x0;var _0x4a35b5=_0x80ed[_0x4352ed];return _0x4a35b5;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'closed':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xd80e('0x2')]},'ratingType':{'type':Sequelize[_0xd80e('0x3')]('star',_0xd80e('0x4')),'defaultValue':_0xd80e('0x5')},'ratingMessage':{'type':Sequelize[_0xd80e('0x6')]},'pathTranscript':{'type':Sequelize[_0xd80e('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xd80e('0x7')]},'disposition':{'type':Sequelize[_0xd80e('0x8')]},'secondDisposition':{'type':Sequelize[_0xd80e('0x8')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd80e('0x8')]},'browserName':{'type':Sequelize[_0xd80e('0x8')]},'browserVersion':{'type':Sequelize[_0xd80e('0x8')]},'osName':{'type':Sequelize[_0xd80e('0x8')]},'osVersion':{'type':Sequelize[_0xd80e('0x8')]},'deviceModel':{'type':Sequelize[_0xd80e('0x8')]},'deviceVendor':{'type':Sequelize[_0xd80e('0x8')]},'deviceType':{'type':Sequelize[_0xd80e('0x8')]},'referer':{'type':Sequelize[_0xd80e('0x6')]},'customerIp':{'type':Sequelize[_0xd80e('0x8')]},'formData':{'type':Sequelize['TEXT'](_0xd80e('0x9'))},'read1stAt':{'type':Sequelize[_0xd80e('0x7')]},'lastMsgAt':{'type':Sequelize[_0xd80e('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xd80e('0x3')]('in',_0xd80e('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xd80e('0x8')]},'customerPort':{'type':Sequelize[_0xd80e('0x8')]},'vidaooSessionId':{'type':Sequelize[_0xd80e('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0xd80e('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 0cb52dc..ad530cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['alias','fullname','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','auth','pass','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','mailTranscript','addMessage','ids','getMessages','YYYY-MM-DD\x20HH:mm:ss','findAll','hasOwnProperty','includeAgent','addTags','setTags','omit','emit','removeTags','download','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','mkdirSync','Chat','Owner','N.A.','browserName','osName','existsSync','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','err','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','json','offset','undefined','limit','set','Content-Range','save','update','destroy','end','stack','name','send','render','body','contact','interaction','account','Users','TagIds','Tags','split','forEach','push','index','ChatInteraction','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','select','field','u.id','u.fullname','ui.ChatInteractionId','from','user_has_chat_interactions','left_join','users','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','Tag','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','ChatWebsiteId','sequelize','toString','count','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','contactName','Contact.firstName','Contact.lastName','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','params','keys','includeAll','include','options','create','describe','createVidaooSession','ChatWebsite','findOne','vidaooEscalation','vidaooTopic','vidaooMetadata','vidaooApiKey','email','isNull','vidaooNote','follow','metadata','ValidationError','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','originalname','basename','file','filename','mimetype','Unauthorized','Attachment','attachId','join','root','server/files/attachments/','offline-chat/','server/files/chat/upload/','format','now','Messages','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','website_alias'];(function(_0x518ccc,_0x408c01){var _0x177dfa=function(_0x30b222){while(--_0x30b222){_0x518ccc['push'](_0x518ccc['shift']());}};_0x177dfa(++_0x408c01);}(_0xef0f,0x168));var _0xfef0=function(_0x3516ae,_0x21a478){_0x3516ae=_0x3516ae-0x0;var _0x2ffc63=_0xef0f[_0x3516ae];return _0x2ffc63;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var pdf=require(_0xfef0('0x14'));var hardwareService=require(_0xfef0('0x15'));var logger=require(_0xfef0('0x16'))(_0xfef0('0x17'));var utils=require(_0xfef0('0x18'));var config=require(_0xfef0('0x19'));var licenseUtil=require(_0xfef0('0x1a'));var db=require('../../mysqldb')['db'];config[_0xfef0('0x1b')]=_[_0xfef0('0x1c')](config[_0xfef0('0x1b')],{'host':_0xfef0('0x1d'),'port':0x18eb});var socket=require(_0xfef0('0x1e'))(new Redis(config[_0xfef0('0x1b')]));require(_0xfef0('0x1f'))['register'](socket);var jayson=require(_0xfef0('0x20'));var client=jayson['client']['http']({'port':0x232b});var client9004=jayson['client'][_0xfef0('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x284b6d,_0x3510a7,_0x1bce2f,_0x2a96d9){return new BPromise(function(_0x3f9a6c,_0x155833){var _0x2887e6=_0x2a96d9||client;return _0x2887e6['request'](_0x284b6d,_0x1bce2f)[_0xfef0('0x22')](function(_0x1642cd){logger[_0xfef0('0x23')](_0xfef0('0x24'),_0x3510a7,_0xfef0('0x25'));logger['debug'](_0xfef0('0x26'),_0x3510a7,'request\x20sent',JSON[_0xfef0('0x27')](_0x1642cd));if(_0x1642cd[_0xfef0('0x28')]){if(_0x1642cd[_0xfef0('0x28')]['code']===0x1f4){logger[_0xfef0('0x28')]('ChatInteraction,\x20%s,\x20%s',_0x3510a7,_0x1642cd[_0xfef0('0x28')][_0xfef0('0x29')]);return _0x155833(_0x1642cd['error']['message']);}logger['error'](_0xfef0('0x24'),_0x3510a7,_0x1642cd['error'][_0xfef0('0x29')]);return _0x3f9a6c(_0x1642cd[_0xfef0('0x28')][_0xfef0('0x29')]);}else{logger[_0xfef0('0x23')](_0xfef0('0x24'),_0x3510a7,_0xfef0('0x25'));_0x3f9a6c(_0x1642cd['result']['message']);}})[_0xfef0('0x2a')](function(_0x1ffaa4){logger[_0xfef0('0x28')](_0xfef0('0x24'),_0x3510a7,_0x1ffaa4);_0x155833(_0x1ffaa4);});});}function respondWithStatusCode(_0xab231c,_0xf60f2){_0xf60f2=_0xf60f2||0xcc;return function(_0x5df04f){if(_0x5df04f){return _0xab231c[_0xfef0('0x2b')](_0xf60f2);}return _0xab231c[_0xfef0('0x2c')](_0xf60f2)['end']();};}function respondWithResult(_0x1a6758,_0x394bad){_0x394bad=_0x394bad||0xc8;return function(_0xca0cce){if(_0xca0cce){return _0x1a6758[_0xfef0('0x2c')](_0x394bad)[_0xfef0('0x2d')](_0xca0cce);}};}function respondWithFilteredResult(_0x1ac4a3,_0x3e3c4c){return function(_0x3e026a){if(_0x3e026a){var _0x26cb9a=typeof _0x3e3c4c[_0xfef0('0x2e')]===_0xfef0('0x2f')&&typeof _0x3e3c4c[_0xfef0('0x30')]==='undefined';var _0x445625=_0x3e026a['count'];var _0x4eaf74=_0x26cb9a?0x0:_0x3e3c4c[_0xfef0('0x2e')];var _0x2ae54a=_0x26cb9a?_0x3e026a['count']:_0x3e3c4c['offset']+_0x3e3c4c['limit'];var _0x4f65cd;if(_0x2ae54a>=_0x445625){_0x2ae54a=_0x445625;_0x4f65cd=0xc8;}else{_0x4f65cd=0xce;}_0x1ac4a3['status'](_0x4f65cd);return _0x1ac4a3[_0xfef0('0x31')](_0xfef0('0x32'),_0x4eaf74+'-'+_0x2ae54a+'/'+_0x445625)[_0xfef0('0x2d')](_0x3e026a);}return null;};}function patchUpdates(_0x5cda6b){return function(_0x4d0778){try{jsonpatch['apply'](_0x4d0778,_0x5cda6b,!![]);}catch(_0x1f8110){return BPromise['reject'](_0x1f8110);}return _0x4d0778[_0xfef0('0x33')]();};}function saveUpdates(_0x3783f9,_0x1b9f39){return function(_0x4a2773){if(_0x4a2773){return _0x4a2773[_0xfef0('0x34')](_0x3783f9)['then'](function(_0x4234e4){return _0x4234e4;});}return null;};}function removeEntity(_0x1f21b7,_0x234d49){return function(_0xe5188e){if(_0xe5188e){return _0xe5188e[_0xfef0('0x35')]()[_0xfef0('0x22')](function(){_0x1f21b7[_0xfef0('0x2c')](0xcc)[_0xfef0('0x36')]();});}};}function handleEntityNotFound(_0x590e37,_0x24ea7c){return function(_0xea09ec){if(!_0xea09ec){_0x590e37[_0xfef0('0x2b')](0x194);}return _0xea09ec;};}function handleError(_0x36b2d1,_0xae697){_0xae697=_0xae697||0x1f4;return function(_0x262341){logger[_0xfef0('0x28')](_0x262341[_0xfef0('0x37')]);if(_0x262341[_0xfef0('0x38')]){delete _0x262341[_0xfef0('0x38')];}_0x36b2d1[_0xfef0('0x2c')](_0xae697)[_0xfef0('0x39')](_0x262341);};}function getMustacheRender(_0x366667,_0x4a8af4){return Mustache[_0xfef0('0x3a')](_0x366667,_['merge'](_0x4a8af4[_0xfef0('0x3b')],{'contact':_0x4a8af4[_0xfef0('0x3c')],'message':_0x4a8af4[_0xfef0('0x29')],'agent':_0x4a8af4['agent'],'interaction':_0x4a8af4[_0xfef0('0x3d')],'account':_0x4a8af4[_0xfef0('0x3e')]}))||'';}function getInteractionUsers(_0x3f2753,_0x5537c8){return new BPromise(function(_0x8613a0,_0x3abcc5){try{if(_0x5537c8[_0x3f2753['id']]){_0x3f2753[_0xfef0('0x3f')]=_['map'](_0x5537c8[_0x3f2753['id']],function(_0x3a6667){return{'id':_0x3a6667['id'],'fullname':_0x3a6667['fullname']};});}}catch(_0x49ed48){_0x3abcc5(_0x49ed48);}_0x8613a0(_0x3f2753);});}function getInteractionTags(_0xf30aff,_0x547a5d){return new BPromise(function(_0x5c3305,_0xbf6ddd){try{if(_0xf30aff[_0xfef0('0x40')]){_0xf30aff[_0xfef0('0x41')]=[];_0xf30aff[_0xfef0('0x40')][_0xfef0('0x42')](',')[_0xfef0('0x43')](function(_0x4dd8f8){_0xf30aff[_0xfef0('0x41')][_0xfef0('0x44')](_0x547a5d[_0x4dd8f8]);});}delete _0xf30aff['TagIds'];}catch(_0x54d5cb){_0xbf6ddd(_0x54d5cb);}_0x5c3305(_0xf30aff);});}function updateChatInteraction(_0x1d554e,_0x5dc824,_0x1fc518){return new BPromise(function(_0x22c940,_0x3c100c){return getInteractionUsers(_0x1d554e,_0x1fc518)[_0xfef0('0x22')](function(_0x199c57){return getInteractionTags(_0x199c57,_0x5dc824);})[_0xfef0('0x22')](function(_0x166a7b){_0x22c940(_0x166a7b);})[_0xfef0('0x2a')](function(_0x4e63f3){_0x3c100c(_0x4e63f3);});});}exports[_0xfef0('0x45')]=function(_0x50e372,_0x4b6da1){var _0x18c656={},_0x17d7f2={},_0x5bf416={'count':0x0,'rows':[]};var _0x2af79f=_['map'](db[_0xfef0('0x46')][_0xfef0('0x47')],function(_0x1f252e){return{'name':_0x1f252e[_0xfef0('0x48')],'type':_0x1f252e['type'][_0xfef0('0x49')]};});_0x17d7f2[_0xfef0('0x4a')]=_['map'](_0x2af79f,'name');_0x17d7f2[_0xfef0('0x4b')]=_['keys'](_0x50e372[_0xfef0('0x4b')]);_0x17d7f2[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x17d7f2[_0xfef0('0x4a')],_0x17d7f2[_0xfef0('0x4b')]);_0x18c656[_0xfef0('0x4e')]=_['intersection'](_0x17d7f2[_0xfef0('0x4a')],qs['fields'](_0x50e372['query'][_0xfef0('0x4f')]));_0x18c656[_0xfef0('0x4e')]=_0x18c656[_0xfef0('0x4e')]['length']?_0x18c656[_0xfef0('0x4e')]:_0x17d7f2['model'];if(!_0x50e372['query']['hasOwnProperty'](_0xfef0('0x50'))){_0x18c656[_0xfef0('0x30')]=qs[_0xfef0('0x30')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x18c656[_0xfef0('0x2e')]=qs[_0xfef0('0x2e')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x2e')]);}_0x18c656['order']=qs['sort'](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x51')]);_0x18c656[_0xfef0('0x52')]=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x50e372[_0xfef0('0x4b')],_0x17d7f2[_0xfef0('0x4c')]),_0x2af79f);var _0x20b647=[];var _0x5e989f=squel[_0xfef0('0x54')]()[_0xfef0('0x55')]('id')[_0xfef0('0x55')](_0xfef0('0x38'))[_0xfef0('0x55')]('color')['from']('tools_tags');var _0x445f3f=squel[_0xfef0('0x54')]()[_0xfef0('0x55')](_0xfef0('0x56'))['field'](_0xfef0('0x57'))[_0xfef0('0x55')](_0xfef0('0x58'))[_0xfef0('0x59')](_0xfef0('0x5a'),'ui')[_0xfef0('0x5b')](_0xfef0('0x5c'),'u','u.id\x20=\x20ui.UserId');var _0x3458b0=squel[_0xfef0('0x54')]()['from'](_0xfef0('0x5d'),'i')['left_join'](_0xfef0('0x5e'),'c',_0xfef0('0x5f'))['left_join'](_0xfef0('0x5c'),'o','o.id\x20=\x20i.UserId')['left_join']('chat_websites','a',_0xfef0('0x60'))[_0xfef0('0x5b')](_0xfef0('0x61'),'me',_0xfef0('0x62'))[_0xfef0('0x5b')](_0xfef0('0x63'),'it','it.ChatInteractionId\x20=\x20i.id')[_0xfef0('0x5b')](_0xfef0('0x64'),'t',_0xfef0('0x65'));var _0x45abb3=squel[_0xfef0('0x66')]();var _0x58d95e=[];var _0x59d1b6=squel['expr']();var _0x135653;if(_0x50e372['query'][_0xfef0('0x67')]){_0x135653=as[_0xfef0('0x68')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x67')]);var _0xd0255c=_0x135653['sqlOperator'];for(var _0x2abdb7=0x0;_0x2abdb7<_0x135653['conditions'][_0xfef0('0x69')];_0x2abdb7++){var _0x4a1316=_0x135653['conditions'][_0x2abdb7];var _0x3a12c5='i';var _0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0x4a1316[_0xfef0('0x55')]]);if(!_0x3c5640){switch(_0x4a1316[_0xfef0('0x55')]){case _0xfef0('0x6b'):if(_0x4a1316[_0xfef0('0x6c')]==0x1){_0x3458b0[_0xfef0('0x6d')]('`'+_0x4a1316[_0xfef0('0x55')]+_0xfef0('0x6e'));}else{_0x3458b0[_0xfef0('0x6d')]('`'+_0x4a1316['field']+_0xfef0('0x6f'));}break;case _0xfef0('0x70'):if(_0x4a1316[_0xfef0('0x71')]===_0xfef0('0x72')){if(_0x4a1316[_0xfef0('0x6c')]['split']('\x20')[_0xfef0('0x69')]>0x1){_0x45abb3[_0xd0255c](_0xfef0('0x73'),qs[_0xfef0('0x74')](_0x4a1316[_0xfef0('0x6c')]),null);}else{var _0x176fc7='%'+_0x4a1316[_0xfef0('0x6c')]+'%';_0x45abb3[_0xd0255c](_0xfef0('0x75'),_0x176fc7,_0x176fc7,_0x176fc7);}}else{_0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0xfef0('0x76')]);_0x4a1316['field']=_0xfef0('0x76');_0x1d7caf=as['buildExpression'](_0x3a12c5,_0x3c5640[_0xfef0('0x77')],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf[_0xfef0('0x78')],_0x1d7caf['value'][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x36')]);}break;case _0xfef0('0x7a'):var _0x1e0ad5=_0x4a1316['value'][_0xfef0('0x42')](',')[_0xfef0('0x7b')](function(_0x2ccb33){return Number(_0x2ccb33);});_0x1e0ad5['forEach'](function(_0x117b74){_0x59d1b6['or'](_0xfef0('0x7c'),'%,'+_0x117b74+',%');});_0x58d95e=_[_0xfef0('0x7d')](_0x58d95e,_0x1e0ad5);break;case _0xfef0('0x7e'):if(_0x4a1316[_0xfef0('0x71')]===_0xfef0('0x72')){_0x45abb3[_0xd0255c](_0xfef0('0x7f'),'%'+_0x4a1316['value']+'%',null);}else{_0x3c5640=_[_0xfef0('0x6a')](_0x2af79f,[_0xfef0('0x38'),_0xfef0('0x80')]);_0x4a1316[_0xfef0('0x55')]=_0xfef0('0x80');_0x1d7caf=as[_0xfef0('0x81')](_0x3a12c5,_0x3c5640['type'],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf[_0xfef0('0x78')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')]['end']);}break;case _0xfef0('0x3b'):_0x1d7caf=as[_0xfef0('0x81')]('me',null,_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf['text'],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x36')]);break;}}else{var _0x1d7caf=as['buildExpression'](_0x3a12c5,_0x3c5640['type'],_0x4a1316);_0x45abb3[_0xd0255c](_0x1d7caf['text'],_0x1d7caf[_0xfef0('0x6c')][_0xfef0('0x79')],_0x1d7caf[_0xfef0('0x6c')]['end']);}}}else{var _0x24229e=_(_0x50e372['query'])['keys']()['map'](function(_0x2a92de){return _[_0xfef0('0x82')](_0x2af79f,['name',_0x2a92de])?_0x2a92de:undefined;})[_0xfef0('0x83')]()[_0xfef0('0x6c')]();if(!_[_0xfef0('0x84')](_0x24229e)){_0x24229e['forEach'](function(_0x3f2b55){if(_0x3f2b55==='ChatWebsiteId'){_0x3458b0['where'](_0xfef0('0x85'),[][_0xfef0('0x86')](_0x50e372[_0xfef0('0x4b')][_0x3f2b55]));}else if(_0x3f2b55===_0xfef0('0x87')){var _0x4df63b=JSON['parse'](_0x50e372['query'][_0x3f2b55])[_0xfef0('0x88')];var _0x546455=JSON[_0xfef0('0x89')](_0x50e372[_0xfef0('0x4b')][_0x3f2b55])[_0xfef0('0x8a')];_0x3458b0[_0xfef0('0x52')](_0xfef0('0x8b'),_0x4df63b,_0x546455);}else{if(_0x50e372['query'][_0x3f2b55]===_0xfef0('0x8c')){_0x3458b0['where']('i.'+_0x3f2b55+'\x20IS\x20NULL');}else{_0x3458b0[_0xfef0('0x52')]('i.'+_0x3f2b55+_0xfef0('0x8d'),_0x50e372[_0xfef0('0x4b')][_0x3f2b55]);}}});}if(_0x50e372[_0xfef0('0x4b')]['read']){if(_0x50e372['query'][_0xfef0('0x8e')]==0x1){_0x3458b0[_0xfef0('0x6d')]('`unreadMessages`\x20=\x200');}else{_0x3458b0[_0xfef0('0x6d')](_0xfef0('0x8f'));}}if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]){_0x58d95e=_[_0xfef0('0x91')](_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')])?_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]:new Array(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x90')]);_0x58d95e[_0xfef0('0x43')](function(_0x3c1136){_0x59d1b6['or'](_0xfef0('0x7c'),'%,'+_0x3c1136+',%');});}if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x92')]){var _0x1a61e4=_0x50e372['query'][_0xfef0('0x92')][_0xfef0('0x93')]('\x5c','\x5c\x5c')[_0xfef0('0x93')](/'/g,'\x27\x27');if(qs[_0xfef0('0x94')](_0x1a61e4)){_0x45abb3['or'](_0xfef0('0x95'),_0x1a61e4+'%');}else{_0x45abb3['or'](_0xfef0('0x96'),qs[_0xfef0('0x74')](_0x1a61e4))['or'](_0xfef0('0x97'),_0x1a61e4+'%');}}}_0x3458b0[_0xfef0('0x52')](_0x45abb3);_0x3458b0[_0xfef0('0x98')](_0xfef0('0x99'));var _0x17c350={'type':db[_0xfef0('0x9a')]['QueryTypes'][_0xfef0('0x9b')],'raw':!![]};var _0x56af65=_0x3458b0['clone']();_0x56af65[_0xfef0('0x55')](_0xfef0('0x99'));_0x56af65['field'](_0xfef0('0x9c'),'unreadMessages');if(_0x18c656['order']){_0x18c656[_0xfef0('0x9d')][_0xfef0('0x43')](function(_0x4ebcf){var _0x437cb2=_0x4ebcf[0x0]==='contactName'?_0x4ebcf[0x0]:'i.'+_0x4ebcf[0x0];_0x3458b0[_0xfef0('0x9d')](_0x437cb2,_0x4ebcf[0x1]===_0xfef0('0x9e')?![]:!![]);});}if(!_['isEmpty'](_0x58d95e)){_0x3458b0[_0xfef0('0x6d')](_0x59d1b6);_0x56af65[_0xfef0('0x52')](_0xfef0('0x9f'),_0x58d95e);}BPromise['resolve']()['then'](function(){if(!_0x135653){if(_0x50e372[_0xfef0('0x4b')]['ChatWebsiteId'])return;_0x56af65['where'](_0xfef0('0xa0'));_0x3458b0['where'](_0xfef0('0xa0'));return;}if(_0x50e372[_0xfef0('0xa1')][_0xfef0('0xa2')]!==_0xfef0('0xa3'))return;return _0x50e372[_0xfef0('0xa1')][_0xfef0('0xa4')]({'attributes':['id'],'raw':!![]})[_0xfef0('0x22')](function(_0x28cc77){if(_[_0xfef0('0x84')](_0x28cc77)){_0x56af65[_0xfef0('0x52')]('i.ChatWebsiteId\x20IS\x20NULL');_0x3458b0[_0xfef0('0x52')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x56af65['where'](_0xfef0('0x85'),_['map'](_0x28cc77,'id'));_0x3458b0[_0xfef0('0x52')](_0xfef0('0x85'),_[_0xfef0('0x7b')](_0x28cc77,'id'));}});})[_0xfef0('0x22')](function(){if(_0x50e372[_0xfef0('0xa1')][_0xfef0('0xa2')]==='agent'&&!_0x135653&&!_0x50e372[_0xfef0('0x4b')][_0xfef0('0xa5')])return[];return db[_0xfef0('0xa6')][_0xfef0('0x4b')](_0x56af65[_0xfef0('0xa7')](),_0x17c350);})[_0xfef0('0x22')](function(_0x3cc27e){_0x5bf416[_0xfef0('0xa8')]=_0x3cc27e['length'];if(_0x5bf416[_0xfef0('0xa8')]===0x0)return[];return db[_0xfef0('0xa6')]['query'](_0x5e989f[_0xfef0('0xa7')](),_0x17c350)[_0xfef0('0x22')](function(_0x221b17){_0x20b647=_['keyBy'](_0x221b17,'id');_0x17c350=_[_0xfef0('0xa9')](_0x17c350,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x50e372[_0xfef0('0x4b')][_0xfef0('0x4f')]){_0x18c656['attributes'][_0xfef0('0x43')](function(_0x51f79b){_0x3458b0[_0xfef0('0x55')]('i.'+_0x51f79b);});}else{_0x3458b0[_0xfef0('0x55')](_0xfef0('0x9c'),_0xfef0('0x6b'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xaa'),_0xfef0('0xab'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xac'),_0xfef0('0xad'));_0x3458b0[_0xfef0('0x55')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xfef0('0xae'));_0x3458b0['field']('i.*');_0x3458b0[_0xfef0('0x55')]('c.firstName',_0xfef0('0xaf'));_0x3458b0['field']('c.lastName',_0xfef0('0xb0'));_0x3458b0['field']('c.email','Contact.email');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb1'),_0xfef0('0xb2'));_0x3458b0[_0xfef0('0x55')]('c.mobile',_0xfef0('0xb3'));_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb4'),_0xfef0('0xb5'));_0x3458b0[_0xfef0('0x55')]('o.fullname','Owner.fullname');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb6'),'Owner.internal');_0x3458b0[_0xfef0('0x55')](_0xfef0('0xb7'),_0xfef0('0x40'));}if(_0x18c656[_0xfef0('0x30')])_0x3458b0[_0xfef0('0x30')](_0x18c656[_0xfef0('0x30')]);if(_0x18c656[_0xfef0('0x2e')])_0x3458b0[_0xfef0('0x2e')](_0x18c656['offset']);return db['sequelize'][_0xfef0('0x4b')](_0x3458b0[_0xfef0('0xa7')](),_0x17c350);})[_0xfef0('0x22')](function(_0x475eb7){if(_0x475eb7[_0xfef0('0x69')]>0x0)_0x445f3f[_0xfef0('0x52')](_0xfef0('0xb8'),_[_0xfef0('0x7b')](_0x475eb7,'id'));return db['sequelize']['query'](_0x445f3f[_0xfef0('0xa7')](),_0x17c350)[_0xfef0('0x22')](function(_0x374877){var _0xd780bb=_[_0xfef0('0xb9')](_0x374877,_0xfef0('0xba'));var _0x5ac2df=[];_0x475eb7[_0xfef0('0x43')](function(_0x1060c2){_0x5ac2df['push'](updateChatInteraction(_0x1060c2,_0x20b647,_0xd780bb));});return BPromise[_0xfef0('0xbb')](_0x5ac2df);});});})[_0xfef0('0x22')](function(_0x36873f){_0x5bf416[_0xfef0('0xbc')]=_0x36873f;return _0x5bf416;})[_0xfef0('0x22')](respondWithFilteredResult(_0x4b6da1,_0x18c656))[_0xfef0('0x2a')](handleError(_0x4b6da1,null));};exports['show']=function(_0x4dd6e8,_0x1084b9){var _0xd7c5b={'raw':![],'where':{'id':_0x4dd6e8[_0xfef0('0xbd')]['id']}},_0xd2c0be={};_0xd2c0be[_0xfef0('0x4a')]=_[_0xfef0('0xbe')](db['ChatInteraction'][_0xfef0('0x47')]);_0xd2c0be['query']=_[_0xfef0('0xbe')](_0x4dd6e8['query']);_0xd2c0be[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0xd2c0be['model'],_0xd2c0be[_0xfef0('0x4b')]);_0xd7c5b[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0xd2c0be['model'],qs['fields'](_0x4dd6e8['query'][_0xfef0('0x4f')]));_0xd7c5b['attributes']=_0xd7c5b[_0xfef0('0x4e')][_0xfef0('0x69')]?_0xd7c5b['attributes']:_0xd2c0be[_0xfef0('0x4a')];if(_0x4dd6e8['query'][_0xfef0('0xbf')]){_0xd7c5b[_0xfef0('0xc0')]=[{'all':!![]}];}_0xd7c5b=_[_0xfef0('0xa9')]({},_0xd7c5b,_0x4dd6e8[_0xfef0('0xc1')]);return db[_0xfef0('0x46')][_0xfef0('0x6a')](_0xd7c5b)[_0xfef0('0x22')](handleEntityNotFound(_0x1084b9,null))['then'](respondWithResult(_0x1084b9,null))[_0xfef0('0x2a')](handleError(_0x1084b9,null));};exports[_0xfef0('0xc2')]=function(_0x38f96f,_0x1bdf18){return db[_0xfef0('0x46')][_0xfef0('0xc2')](_0x38f96f[_0xfef0('0x3b')],{})[_0xfef0('0x22')](respondWithResult(_0x1bdf18,0xc9))[_0xfef0('0x2a')](handleError(_0x1bdf18,null));};exports[_0xfef0('0x34')]=function(_0x2a25cb,_0x34f1db){if(_0x2a25cb[_0xfef0('0x3b')]['id']){delete _0x2a25cb[_0xfef0('0x3b')]['id'];}return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x2a25cb[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x34f1db,null))[_0xfef0('0x22')](saveUpdates(_0x2a25cb[_0xfef0('0x3b')],null))[_0xfef0('0x22')](respondWithResult(_0x34f1db,null))[_0xfef0('0x2a')](handleError(_0x34f1db,null));};exports[_0xfef0('0x35')]=function(_0x191072,_0x5b5a15){return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x191072['params']['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x5b5a15,null))[_0xfef0('0x22')](removeEntity(_0x5b5a15,null))[_0xfef0('0x2a')](handleError(_0x5b5a15,null));};exports[_0xfef0('0xc3')]=function(_0xd9c290,_0x365938){return db[_0xfef0('0x46')][_0xfef0('0xc3')]()[_0xfef0('0x22')](respondWithResult(_0x365938,null))[_0xfef0('0x2a')](handleError(_0x365938,null));};exports[_0xfef0('0xc4')]=function(_0x4c6ddd,_0x17ac08){var _0x40afcb=_0x4c6ddd['params']['id'];var _0xaa5902;var _0x189964;var _0x524db7;return db[_0xfef0('0x46')]['findOne']({'where':{'id':_0x40afcb}})[_0xfef0('0x22')](function(_0x41aadf){_0xaa5902=_0x41aadf;return db[_0xfef0('0xc5')][_0xfef0('0xc6')]({'where':{'id':_0x41aadf[_0xfef0('0xa5')]},'attributes':['id','vidaooApiKey',_0xfef0('0xc7'),_0xfef0('0xc8'),'vidaooNote',_0xfef0('0xc9')],'raw':!![]});})['then'](function(_0x3a180e){if(_0x3a180e&&_0x3a180e[_0xfef0('0xca')]&&_0x3a180e[_0xfef0('0xc7')]){_0x189964=_0x3a180e;var _0x52fb8b={'interaction':{'id':_0x40afcb},'agent':{'id':_0x4c6ddd[_0xfef0('0xa1')]['id'],'name':_0x4c6ddd['user']['name'],'fullname':_0x4c6ddd[_0xfef0('0xa1')]['fullname'],'email':_0x4c6ddd[_0xfef0('0xa1')][_0xfef0('0xcb')]},'contact':_0x4c6ddd[_0xfef0('0x3b')][_0xfef0('0x3c')],'account':_0x4c6ddd[_0xfef0('0x3b')][_0xfef0('0x3e')]};var _0x7f9b61={'rejectUnauthorized':![],'method':'POST','url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x3a180e[_0xfef0('0xca')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4c6ddd['user'][_0xfef0('0xcb')]],'buttons':null,'topic':_0x189964[_0xfef0('0xc8')],'note':_[_0xfef0('0xcc')](_0x189964[_0xfef0('0xcd')])?null:getMustacheRender(_0x189964[_0xfef0('0xcd')],_0x52fb8b),'metadata':null},'redirect':_0xfef0('0xce'),'json':!![]};try{if(!_[_0xfef0('0xcc')](_0x189964[_0xfef0('0xc9')])){var _0x4a3b68=getMustacheRender(_0x189964['vidaooMetadata'],_0x52fb8b);var _0x3c5471=JSON[_0xfef0('0x89')](_0x4a3b68);_0x7f9b61[_0xfef0('0x3b')][_0xfef0('0xcf')]=_0x3c5471;}}catch(_0xdbd7f2){throw new db['Sequelize']['ValidationError']('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x7f9b61);}else{throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0xfef0('0x22')](function(_0x4f171b){_0x524db7=_0x4f171b;if(_0x524db7['id']){var _0x236523={'body':_0x524db7[_0xfef0('0xd1')],'ChatWebsiteId':_0x189964['id'],'ChatInteractionId':_0xaa5902['id'],'direction':_0xfef0('0xd2'),'UserId':_0x4c6ddd[_0xfef0('0xa1')]['id']};return db[_0xfef0('0xd3')][_0xfef0('0xc2')](_0x236523,{});}else{throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))](_0xfef0('0xd4'));}})[_0xfef0('0x22')](function(){return _0xaa5902[_0xfef0('0xd5')]({'vidaooSessionId':_0x524db7['id']});})['then'](respondWithResult(_0x17ac08,null))[_0xfef0('0x2a')](handleError(_0x17ac08,null));};exports['customUpdate']=function(_0xf763b1,_0x1fc6a0){if(_0xf763b1[_0xfef0('0x3b')]['id']){delete _0xf763b1[_0xfef0('0x3b')]['id'];}return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0xf763b1[_0xfef0('0xbd')]['id']},'include':[{'model':db[_0xfef0('0xd6')],'as':_0xfef0('0x70')}]})['then'](handleEntityNotFound(_0x1fc6a0,null))['then'](saveUpdates(_0xf763b1[_0xfef0('0x3b')],null))['then'](respondWithResult(_0x1fc6a0,null))[_0xfef0('0x2a')](handleError(_0x1fc6a0,null));};exports[_0xfef0('0xd7')]=function(_0x45049d,_0x238112,_0x3a7c93){if(_0x45049d['body']['id']){delete _0x45049d[_0xfef0('0x3b')]['id'];}return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x45049d[_0xfef0('0xbd')]['id']}})['then'](function(_0x34bcc3){if(!_0x34bcc3){logger['error'](_0xfef0('0xd8'),'abandon',0x194,'entity\x20not\x20found');_0x238112[_0xfef0('0x2b')](0x194);}else{if(_0x34bcc3['UserId']){throw new db[(_0xfef0('0x9a'))][(_0xfef0('0xd0'))](_0xfef0('0xd9'));}}return _0x34bcc3;})['then'](function(_0x5c7b35){if(_0x5c7b35){return _0x5c7b35[_0xfef0('0x34')]({'closed':_0x45049d[_0xfef0('0x3b')][_0xfef0('0xda')],'disposition':_0x45049d[_0xfef0('0x3b')][_0xfef0('0xdb')]})[_0xfef0('0x22')](function(_0x3107e2){return _0x3107e2;});}})[_0xfef0('0x22')](function(_0x325d36){return respondWithRpcPromise('AbandonInteraction',_0xfef0('0xd7'),_0x45049d[_0xfef0('0x3b')],client9004);})[_0xfef0('0x22')](respondWithResult(_0x238112,null))[_0xfef0('0x2a')](handleError(_0x238112,null));};exports[_0xfef0('0xdc')]=function(_0xb1df6f,_0x42604b,_0x5969d2){_0xb1df6f[_0xfef0('0x3b')][_0xfef0('0x38')]=_0xb1df6f['file'][_0xfef0('0xdd')];_0xb1df6f[_0xfef0('0x3b')][_0xfef0('0xde')]=_0xb1df6f[_0xfef0('0xdf')][_0xfef0('0xe0')];_0xb1df6f['body'][_0xfef0('0x77')]=_0xb1df6f['file'][_0xfef0('0xe1')];return db['Attachment']['create'](_0xb1df6f['body'])[_0xfef0('0x22')](respondWithResult(_0x42604b,0xc9))['catch'](handleError(_0x42604b,null));};exports['attachmentDownload']=function(_0x25fed0,_0x43453b,_0x4da5b0){return db[_0xfef0('0x46')][_0xfef0('0xc6')]({'where':{'id':_0x25fed0[_0xfef0('0xbd')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x43453b,null))['then'](function(_0x39a2a7){if(_0x39a2a7){if(_0x39a2a7[_0xfef0('0xda')]){return _0x43453b[_0xfef0('0x2c')](0x193)[_0xfef0('0x2d')]({'status':0x193,'message':_0xfef0('0xe2')});}return db[_0xfef0('0xe3')][_0xfef0('0xc6')]({'where':{'id':_0x25fed0['query'][_0xfef0('0xe4')]},'raw':!![]})[_0xfef0('0x22')](handleEntityNotFound(_0x43453b,null));}})[_0xfef0('0x22')](function(_0x4544fe){if(_0x4544fe){var _0x5c0f32=_0x4544fe['ChatOfflineMessageId']!==null;var _0x461c91=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0xe7'));if(_0x5c0f32){_0x461c91=path[_0xfef0('0xe5')](_0x461c91,_0xfef0('0xe8'));}var _0xe24c2d=path['join'](_0x461c91,_0x4544fe['basename']);return _0x43453b['download'](_0xe24c2d);}})[_0xfef0('0x2a')](handleError(_0x43453b,null));};exports['close']=function(_0x38ac84,_0x4a1406){var _0x2daf2a=null;var _0x4f703e=null;var _0x20cf67=null;var _0x235122=null;if(_0x38ac84[_0xfef0('0x3b')]['id']){delete _0x38ac84[_0xfef0('0x3b')]['id'];}if(_0x38ac84[_0xfef0('0x3b')]['mailTranscript']){_0x235122=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0xe9'),util[_0xfef0('0xea')]('transcript-%s.txt',Date[_0xfef0('0xeb')]()));_0x38ac84['body']['pathTranscript']=_0x235122;}return db[_0xfef0('0x46')]['find']({'where':{'id':_0x38ac84['params']['id']},'include':[{'model':db[_0xfef0('0xd3')],'as':'Messages','include':[{'model':db[_0xfef0('0x7e')],'as':_0xfef0('0x7e')}]}]})[_0xfef0('0x22')](handleEntityNotFound(_0x4a1406,null))[_0xfef0('0x22')](saveUpdates(_0x38ac84[_0xfef0('0x3b')],null))[_0xfef0('0x22')](function(_0x4f6c50){if(_0x4f6c50){_0x2daf2a=_0x4f6c50;return db[_0xfef0('0xc5')][_0xfef0('0x6a')]({'where':{'id':_0x2daf2a[_0xfef0('0xa5')]}});}})['then'](function(_0x3ac462){if(_0x3ac462){_0x20cf67=_0x3ac462;return db['CmContact'][_0xfef0('0x6a')]({'where':{'id':_0x2daf2a[_0xfef0('0x76')]}});}})[_0xfef0('0x22')](function(_0x5ef687){if(_0x5ef687){_0x4f703e=_0x5ef687;if(_0x235122){var _0x906e55=null;for(var _0x4cec7d=0x1;_0x4cec7d<_0x2daf2a['Messages'][_0xfef0('0x69')];++_0x4cec7d){_0x906e55=_0x2daf2a[_0xfef0('0xec')][_0x4cec7d];var _0x58a4ef=_0x906e55[_0xfef0('0x80')]?util[_0xfef0('0xea')](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');var _0x484cc3=_0x38ac84[_0xfef0('0x3b')][_0xfef0('0xf0')]||util[_0xfef0('0xea')](_0xfef0('0xed'),_0xfef0('0xf1'),_0x906e55[_0xfef0('0x76')]);switch(_0x20cf67[_0xfef0('0xf2')]){case _0xfef0('0xf3'):_0x58a4ef=_0x906e55[_0xfef0('0x80')]?util['format'](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');break;case'agent_alias':_0x58a4ef=_0x906e55[_0xfef0('0x80')]?_0x906e55[_0xfef0('0x7e')][_0xfef0('0xf4')]||_0x906e55[_0xfef0('0x7e')][_0xfef0('0xf5')]:'System';break;case _0xfef0('0xf6'):_0x58a4ef=_0x906e55[_0xfef0('0x80')]?_0x906e55[_0xfef0('0x7e')]['fullname']:'System';break;default:_0x58a4ef=_0x906e55[_0xfef0('0x80')]?util[_0xfef0('0xea')](_0xfef0('0xed'),_0x20cf67[_0xfef0('0xee')],_0x906e55['UserId']):_0xfef0('0xef');}var _0x4b4986=util[_0xfef0('0xea')](_0xfef0('0xf7'),moment(_0x906e55[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0xf8')),_0x906e55['direction']==='in'?_0x484cc3:_0x58a4ef,_0x906e55[_0xfef0('0x3b')]);if(!_0x906e55[_0xfef0('0xf9')]){fs[_0xfef0('0xfa')](_0x235122,_0x4b4986);}}return db[_0xfef0('0xfb')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xfef0('0xfc')],'as':'Smtp','raw':!![]}]});}}})[_0xfef0('0x22')](function(_0x402c7d){if(_0x402c7d&&_0x402c7d[_0xfef0('0xfd')]&&_0x38ac84[_0xfef0('0x3b')]){var _0x5315eb={'tls':{'rejectUnauthorized':![]}};if(_0x402c7d['Smtp'][_0xfef0('0xfe')]){_0x5315eb[_0xfef0('0xfe')]=_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xfe')];}else{_0x5315eb[_0xfef0('0xff')]=_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xff')];_0x5315eb['port']=_0x402c7d['Smtp'][_0xfef0('0x100')];_0x5315eb[_0xfef0('0x101')]=_0x402c7d['Smtp'][_0xfef0('0x101')];}if(_0x402c7d['Smtp']['authentication']){_0x5315eb[_0xfef0('0x102')]={'user':_0x402c7d[_0xfef0('0xfd')][_0xfef0('0xa1')],'pass':_0x402c7d[_0xfef0('0xfd')][_0xfef0('0x103')]};}return respondWithRpcPromise('SendMail',_0xfef0('0x104'),{'account':_0x5315eb,'message':{'from':util[_0xfef0('0xea')](_0xfef0('0x105'),_0x402c7d[_0xfef0('0x38')],_0x402c7d['email']||_0x402c7d['Smtp']['user']),'to':_0x38ac84[_0xfef0('0x3b')]['mailTranscript'],'subject':_0xfef0('0x106'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x38ac84['body'][_0xfef0('0x107')]),'attachments':[{'path':_0x235122}]}})[_0xfef0('0x22')](function(){return _0x2daf2a;})['catch'](function(_0x411870){console['error'](_0x411870);});}else{return _0x2daf2a;}})[_0xfef0('0x22')](respondWithStatusCode(_0x4a1406,0xc8))[_0xfef0('0x2a')](handleError(_0x4a1406,null));};exports[_0xfef0('0x108')]=function(_0x9b2969,_0x1f842f,_0x36c978){return db[_0xfef0('0xd3')][_0xfef0('0x6a')]({'where':{'id':_0x9b2969[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x1f842f,null))['then'](function(_0x1d342a){if(_0x1d342a){return _0x1d342a[_0xfef0('0x108')](_0x9b2969['body'][_0xfef0('0x109')],_['omit'](_0x9b2969[_0xfef0('0x3b')],[_0xfef0('0x109'),'id'])||{});}})[_0xfef0('0x22')](respondWithResult(_0x1f842f,null))[_0xfef0('0x2a')](handleError(_0x1f842f,null));};exports[_0xfef0('0x10a')]=function(_0x422af1,_0xcb9eb8,_0x38e829){var _0x287403={'raw':![],'where':{}};var _0x2ebd8d={};var _0x115454={'count':0x0,'rows':[]};return db[_0xfef0('0x46')][_0xfef0('0xc6')]({'where':{'id':_0x422af1[_0xfef0('0xbd')]['id']}})['then'](handleEntityNotFound(_0xcb9eb8,null))[_0xfef0('0x22')](function(_0x5593de){if(_0x5593de){_0x2ebd8d['model']=_[_0xfef0('0xbe')](db['ChatMessage'][_0xfef0('0x47')]);_0x2ebd8d[_0xfef0('0x4b')]=_[_0xfef0('0xbe')](_0x422af1['query']);_0x2ebd8d[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x2ebd8d[_0xfef0('0x4a')],_0x2ebd8d[_0xfef0('0x4b')]);_0x287403[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0x2ebd8d[_0xfef0('0x4a')],qs[_0xfef0('0x4f')](_0x422af1[_0xfef0('0x4b')][_0xfef0('0x4f')]));_0x287403[_0xfef0('0x4e')]=_0x287403[_0xfef0('0x4e')][_0xfef0('0x69')]?_0x287403[_0xfef0('0x4e')]:_0x2ebd8d['model'];if(!_0x422af1[_0xfef0('0x4b')]['hasOwnProperty'](_0xfef0('0x50'))){_0x287403['limit']=qs[_0xfef0('0x30')](_0x422af1[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x287403[_0xfef0('0x2e')]=qs[_0xfef0('0x2e')](_0x422af1['query']['offset']);}_0x287403[_0xfef0('0x9d')]=qs[_0xfef0('0x51')](_0x422af1['query'][_0xfef0('0x51')]);_0x287403[_0xfef0('0x52')]=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x422af1[_0xfef0('0x4b')],_0x2ebd8d[_0xfef0('0x4c')]));_0x287403[_0xfef0('0x52')][_0xfef0('0xba')]=_0x5593de['id'];if(_0x422af1['query'][_0xfef0('0x92')]){_0x287403[_0xfef0('0x52')]=_['merge'](_0x287403[_0xfef0('0x52')],{'$or':_['map'](_0x287403[_0xfef0('0x4e')],function(_0x41790c){var _0x189965={};_0x189965[_0x41790c]={'$like':'%'+_0x422af1[_0xfef0('0x4b')][_0xfef0('0x92')]+'%'};return _0x189965;})});}if(_0x422af1[_0xfef0('0x4b')][_0xfef0('0x88')]){var _0x5b1b34=_0x422af1[_0xfef0('0x4b')][_0xfef0('0x88')]['split'](',');var _0xfa83e1={};_0xfa83e1[_0x5b1b34[0x0]]={'$gte':moment(_0x5b1b34[0x1])[_0xfef0('0xea')](_0xfef0('0x10b'))};_0x287403['where']=_[_0xfef0('0xa9')](_0x287403[_0xfef0('0x52')],_0xfa83e1);}_0x287403=_[_0xfef0('0xa9')]({},_0x287403,_0x422af1[_0xfef0('0xc1')]);return db[_0xfef0('0xd3')][_0xfef0('0xa8')]({'where':_0x287403[_0xfef0('0x52')]})[_0xfef0('0x22')](function(_0x464d00){_0x115454[_0xfef0('0xa8')]=_0x464d00;if(_0x422af1['query'][_0xfef0('0xbf')]){_0x287403[_0xfef0('0xc0')]=[{'all':!![]}];}return db[_0xfef0('0xd3')][_0xfef0('0x10c')](_0x287403);})[_0xfef0('0x22')](function(_0x1b23f0){_0x115454['rows']=_0x1b23f0;return _0x115454;});}})['then'](respondWithFilteredResult(_0xcb9eb8,_0x287403))[_0xfef0('0x2a')](handleError(_0xcb9eb8,null));};exports['getMyMessages']=function(_0x30f7d5,_0x1a53fa,_0x14a37e){var _0x303128={'where':{}},_0x2b3263={},_0x43e758={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xfef0('0xc6')]({'where':{'id':_0x30f7d5[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x1a53fa,null))[_0xfef0('0x22')](function(_0x273e8b){if(_0x273e8b){_0x2b3263[_0xfef0('0x4a')]=_[_0xfef0('0xbe')](db['ChatMessage'][_0xfef0('0x47')]);_0x2b3263[_0xfef0('0x4b')]=_[_0xfef0('0xbe')](_0x30f7d5[_0xfef0('0x4b')]);_0x2b3263[_0xfef0('0x4c')]=_[_0xfef0('0x4d')](_0x2b3263['model'],_0x2b3263['query']);_0x303128[_0xfef0('0x4e')]=_[_0xfef0('0x4d')](_0x2b3263[_0xfef0('0x4a')],qs[_0xfef0('0x4f')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x4f')]));_0x303128[_0xfef0('0x4e')]=_0x303128[_0xfef0('0x4e')][_0xfef0('0x69')]?_0x303128[_0xfef0('0x4e')]:_0x2b3263[_0xfef0('0x4a')];if(!_0x30f7d5['query'][_0xfef0('0x10d')](_0xfef0('0x50'))){_0x303128[_0xfef0('0x30')]=qs[_0xfef0('0x30')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x30')]);_0x303128['offset']=qs[_0xfef0('0x2e')](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x2e')]);}_0x303128[_0xfef0('0x9d')]=qs['sort'](_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x51')]);_0x303128['where']=qs[_0xfef0('0x4c')](_[_0xfef0('0x53')](_0x30f7d5[_0xfef0('0x4b')],_0x2b3263[_0xfef0('0x4c')]));_0x303128[_0xfef0('0x52')][_0xfef0('0xba')]=_0x273e8b['id'];if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x92')]){_0x303128['where']=_[_0xfef0('0xa9')](_0x303128[_0xfef0('0x52')],{'$or':_['map'](_0x303128['attributes'],function(_0x3081e){var _0xd34b68={};_0xd34b68[_0x3081e]={'$like':'%'+_0x30f7d5[_0xfef0('0x4b')]['filter']+'%'};return _0xd34b68;})});}_0x303128[_0xfef0('0x52')][_0xfef0('0xf9')]=![];if(_0x30f7d5['query']['id']){_0x303128[_0xfef0('0x52')]['id']={'$gt':_0x30f7d5[_0xfef0('0x4b')]['id']};}_0x303128=_[_0xfef0('0xa9')]({},_0x303128,_0x30f7d5[_0xfef0('0xc1')]);return db[_0xfef0('0xd3')]['count']({'where':_0x303128[_0xfef0('0x52')]})['then'](function(_0x63bcae){_0x43e758['count']=_0x63bcae;_0x303128[_0xfef0('0xc0')]=[];if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0x10e')]){_0x303128['include'][_0xfef0('0x44')]({'model':db[_0xfef0('0x7e')],'as':'User','attributes':['id','fullname',_0xfef0('0xf4')]});}if(_0x30f7d5[_0xfef0('0x4b')][_0xfef0('0xbf')]){_0x303128['include']=[{'all':!![]}];}return db[_0xfef0('0xd3')][_0xfef0('0x10c')](_0x303128);})['then'](function(_0x527d0d){_0x43e758[_0xfef0('0xbc')]=_0x527d0d;return _0x43e758;});}})[_0xfef0('0x22')](respondWithFilteredResult(_0x1a53fa,_0x303128))['catch'](handleError(_0x1a53fa,null));};exports[_0xfef0('0x10f')]=function(_0x3f68ed,_0x45a5e8,_0x33cecb){return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0x3f68ed[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0x45a5e8,null))[_0xfef0('0x22')](function(_0x53ce05){if(_0x53ce05){return _0x53ce05[_0xfef0('0x110')](_0x3f68ed[_0xfef0('0x3b')][_0xfef0('0x109')],_[_0xfef0('0x111')](_0x3f68ed[_0xfef0('0x3b')],[_0xfef0('0x109'),'id'])||{})['spread'](function(){return db[_0xfef0('0x7a')][_0xfef0('0x10c')]({'attributes':['id','name','color'],'where':{'id':_0x3f68ed[_0xfef0('0x3b')][_0xfef0('0x109')]}});})[_0xfef0('0x22')](function(_0x4697ee){socket[_0xfef0('0x112')]('chatInteractionTags:save',{'id':Number(_0x3f68ed[_0xfef0('0xbd')]['id']),'tags':_0x4697ee||[]});return{'id':Number(_0x3f68ed[_0xfef0('0xbd')]['id']),'tags':_0x4697ee||[]};});}})[_0xfef0('0x22')](respondWithResult(_0x45a5e8,null))['catch'](handleError(_0x45a5e8,null));};exports[_0xfef0('0x113')]=function(_0x2a229b,_0xcb6d50,_0x53ed7e){return db['ChatInteraction'][_0xfef0('0x6a')]({'where':{'id':_0x2a229b[_0xfef0('0xbd')]['id']}})[_0xfef0('0x22')](handleEntityNotFound(_0xcb6d50,null))['then'](function(_0x241763){if(_0x241763){return _0x241763[_0xfef0('0x113')](_0x2a229b['query'][_0xfef0('0x109')]);}})[_0xfef0('0x22')](respondWithStatusCode(_0xcb6d50,null))['catch'](handleError(_0xcb6d50,null));};exports[_0xfef0('0x114')]=function(_0x57e2d8,_0x3fdeae){var _0x30b0a9=moment()[_0xfef0('0x115')]()['toString']();var _0x416d36=path[_0xfef0('0xe5')](config['root'],_0xfef0('0x116'),_0xfef0('0x117'),_0xfef0('0x118'));var _0x50b3d7=path[_0xfef0('0xe5')](config[_0xfef0('0xe6')],_0xfef0('0x116'),_0xfef0('0x117'),_0xfef0('0x119'));var _0x2a9a1e=path[_0xfef0('0xe5')](_0x416d36,_0x30b0a9);var _0x584c9b=util[_0xfef0('0xea')](_0xfef0('0x11a'),_0x57e2d8[_0xfef0('0xbd')]['id'],_0x30b0a9);var _0x4f4c4e=path[_0xfef0('0xe5')](_0x416d36,_0x584c9b);var _0x1c6ab9=[];_0x1c6ab9[_0xfef0('0x44')]({'model':db[_0xfef0('0x7e')],'as':_0xfef0('0x7e'),'attributes':['id',_0xfef0('0xf5')],'raw':!![]});_0x1c6ab9['push']({'model':db[_0xfef0('0xd6')],'as':'Contact','attributes':['id',_0xfef0('0x11b'),_0xfef0('0x11c')],'raw':!![]});if(_0x57e2d8[_0xfef0('0x4b')][_0xfef0('0x119')]){_0x1c6ab9[_0xfef0('0x44')]({'model':db[_0xfef0('0xe3')],'as':'Attachment','raw':!![]});}var _0x937d8e=[{'model':db[_0xfef0('0xd3')],'as':_0xfef0('0xec'),'attributes':['id',_0xfef0('0x3b'),'createdAt',_0xfef0('0x11d'),_0xfef0('0xf9'),'read'],'include':_0x1c6ab9}];_0x937d8e['push']({'model':db[_0xfef0('0xc5')],'as':_0xfef0('0x11e'),'attributes':['id',_0xfef0('0x38')]});_0x937d8e[_0xfef0('0x44')]({'model':db['User'],'as':'Owner','attributes':['id',_0xfef0('0xf5')]});return db[_0xfef0('0x46')][_0xfef0('0x6a')]({'where':{'id':_0x57e2d8[_0xfef0('0xbd')]['id']},'include':_0x937d8e})[_0xfef0('0x22')](handleEntityNotFound(_0x3fdeae,null))['then'](function(_0x2978cc){if(_0x2978cc){var _0x81bcee=_0x2978cc['get']({'plain':!![]});fs[_0xfef0('0x11f')](_0x2a9a1e);var _0xc8d0ca={'channel':_0xfef0('0x120'),'account':_0x81bcee[_0xfef0('0x11e')][_0xfef0('0x38')],'agent':_0x81bcee[_0xfef0('0x121')]?_0x81bcee['Owner']['fullname']:_0xfef0('0x122'),'createdAt':moment(_0x81bcee[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0x10b'))['toString'](),'closedAt':_0x81bcee['closed']?moment(_0x81bcee['closedAt'])[_0xfef0('0xea')](_0xfef0('0x10b'))[_0xfef0('0xa7')]():'','disposition':_0x81bcee[_0xfef0('0xdb')],'chatInfo':{'browser':_0x81bcee[_0xfef0('0x123')],'os':_0x81bcee[_0xfef0('0x124')],'referer':_0x81bcee['referer'],'customerIp':_0x81bcee['customerIp'],'customerPort':_0x81bcee['customerPort']?_0x81bcee['customerPort']:'N.A.'},'messages':_(_0x81bcee[_0xfef0('0xec')])['tail']()[_0xfef0('0x92')]({'secret':![]})[_0xfef0('0x7b')](function(_0x46ab62){if(_0x46ab62[_0xfef0('0xe3')]){var _0x3507a8=path['join'](_0x50b3d7,_0x46ab62[_0xfef0('0xe3')][_0xfef0('0xde')]);if(fs[_0xfef0('0x125')](_0x3507a8)){fs['createReadStream'](_0x3507a8)[_0xfef0('0x126')](fs[_0xfef0('0x127')](path[_0xfef0('0xe5')](_0x2a9a1e,_0x46ab62[_0xfef0('0xe3')][_0xfef0('0xde')])));}}return{'date':moment(_0x46ab62[_0xfef0('0x87')])[_0xfef0('0xea')](_0xfef0('0x10b'))[_0xfef0('0xa7')](),'sender':_0x46ab62[_0xfef0('0x11d')]===_0xfef0('0xd2')?_0x46ab62[_0xfef0('0x7e')]?_0x46ab62[_0xfef0('0x7e')][_0xfef0('0xf5')]:_0xfef0('0xef'):_0x46ab62[_0xfef0('0x70')][_0xfef0('0x11b')]+(_0x46ab62[_0xfef0('0x70')][_0xfef0('0x11c')]?'\x20'+_0x46ab62[_0xfef0('0x70')]['lastName']:''),'body':_0x46ab62['Attachment']?_0x46ab62['Attachment']['basename']:_0x46ab62[_0xfef0('0x3b')],'direction':_0x46ab62[_0xfef0('0x11d')]===_0xfef0('0xd2')?'A':'C','secret':_0x46ab62['secret'],'read':_0x46ab62[_0xfef0('0x8e')],'attachment':_0x46ab62[_0xfef0('0xe3')]};})[_0xfef0('0x6c')]()};return ejs[_0xfef0('0x128')](path['join'](config['root'],'server',_0xfef0('0x129'),_0xfef0('0x12a')),{'interaction':_0xc8d0ca})[_0xfef0('0x22')](function(_0x2b1f64){var _0x55ecff=path[_0xfef0('0xe5')](_0x2a9a1e,_0xfef0('0x12b')+_0x81bcee['id']+'-'+_0x30b0a9+'.pdf');var _0x409147={'path':_0x55ecff,'channel':_0xfef0('0x120'),'interactionId':_0x81bcee['id']};return pdf[_0xfef0('0x12c')](_0x2b1f64,_0x409147);})[_0xfef0('0x22')](function(){return new BPromise(function(_0x27856d,_0x44081d){zipdir(_0x2a9a1e,{'saveTo':_0x4f4c4e},function(_0x177c9b,_0x322672){if(_0x177c9b)return _0x44081d(_0x177c9b);return _0x27856d(_0x322672);});})[_0xfef0('0x22')](function(){return new BPromise(function(_0x102b4e,_0x2a206b){rimraf(_0x2a9a1e,function(_0x279f5b){if(_0x279f5b)_0x2a206b(_0x279f5b);return _0x102b4e();});});})[_0xfef0('0x22')](function(){return _0x3fdeae[_0xfef0('0x114')](_0x4f4c4e,_0x584c9b,function(_0x44603e){if(_0x44603e){console['log'](_0xfef0('0x12d'),_0x44603e);}else{fs['unlinkSync'](_0x4f4c4e);}});});});}else{return _0x3fdeae[_0xfef0('0x2b')](0xc8);}})['catch'](handleError(_0x3fdeae,null));};
\ No newline at end of file
+var _0xea28=['fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','merge','contact','agent','interaction','account','Users','map','TagIds','Tags','split','forEach','index','ChatInteraction','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','ui.ChatInteractionId','from','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','Contact','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','compact','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','all','params','includeAll','options','create','body','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','now','pathTranscript','%s%d','agentAlias','System','customer','format','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ids','omit','getMessages','include','findAll','rows','getMyMessages','secret','includeAgent','addTags','setTags','spread','emit','removeTags','files','attachments','transcript-%d-%s.zip','firstName','lastName','Messages','read','Account','Chat','Owner','YYYY-MM-DD\x20HH:mm:ss','browserName','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','log','unlinkSync','eml-format','rimraf','zip-dir'];(function(_0x408d87,_0x3a84ee){var _0x5f1f69=function(_0x9fab74){while(--_0x9fab74){_0x408d87['push'](_0x408d87['shift']());}};_0x5f1f69(++_0x3a84ee);}(_0xea28,0x13a));var _0x8ea2=function(_0xb2b394,_0x3fc5f4){_0xb2b394=_0xb2b394-0x0;var _0x68ab9b=_0xea28[_0xb2b394];return _0x68ab9b;};'use strict';var emlformat=require(_0x8ea2('0x0'));var rimraf=require(_0x8ea2('0x1'));var zipdir=require(_0x8ea2('0x2'));var jsonpatch=require(_0x8ea2('0x3'));var rp=require(_0x8ea2('0x4'));var moment=require(_0x8ea2('0x5'));var BPromise=require(_0x8ea2('0x6'));var Mustache=require(_0x8ea2('0x7'));var util=require('util');var path=require(_0x8ea2('0x8'));var sox=require(_0x8ea2('0x9'));var csv=require(_0x8ea2('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ea2('0xb'));var _=require(_0x8ea2('0xc'));var squel=require(_0x8ea2('0xd'));var crypto=require(_0x8ea2('0xe'));var jsforce=require(_0x8ea2('0xf'));var deskjs=require(_0x8ea2('0x10'));var toCsv=require(_0x8ea2('0xa'));var querystring=require(_0x8ea2('0x11'));var Papa=require(_0x8ea2('0x12'));var Redis=require(_0x8ea2('0x13'));var authService=require(_0x8ea2('0x14'));var qs=require(_0x8ea2('0x15'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x8ea2('0x16'));var logger=require(_0x8ea2('0x17'))(_0x8ea2('0x18'));var utils=require('../../config/utils');var config=require(_0x8ea2('0x19'));var licenseUtil=require(_0x8ea2('0x1a'));var db=require(_0x8ea2('0x1b'))['db'];config[_0x8ea2('0x1c')]=_[_0x8ea2('0x1d')](config['redis'],{'host':_0x8ea2('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8ea2('0x1f'))[_0x8ea2('0x20')](socket);var jayson=require(_0x8ea2('0x21'));var client=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232b});var client9004=jayson[_0x8ea2('0x22')][_0x8ea2('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x11f5e8,_0x474873,_0x396aab,_0x2dfa7c){return new BPromise(function(_0x1c1715,_0x3bc774){var _0xaa8abf=_0x2dfa7c||client;return _0xaa8abf[_0x8ea2('0x24')](_0x11f5e8,_0x396aab)[_0x8ea2('0x25')](function(_0x467045){logger[_0x8ea2('0x26')](_0x8ea2('0x27'),_0x474873,_0x8ea2('0x28'));logger[_0x8ea2('0x29')](_0x8ea2('0x2a'),_0x474873,'request\x20sent',JSON['stringify'](_0x467045));if(_0x467045[_0x8ea2('0x2b')]){if(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2c')]===0x1f4){logger['error'](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')]['message']);return _0x3bc774(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}logger[_0x8ea2('0x2b')](_0x8ea2('0x27'),_0x474873,_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);return _0x1c1715(_0x467045[_0x8ea2('0x2b')][_0x8ea2('0x2d')]);}else{logger[_0x8ea2('0x26')]('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x8ea2('0x28'));_0x1c1715(_0x467045['result'][_0x8ea2('0x2d')]);}})[_0x8ea2('0x2e')](function(_0x29b38f){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x474873,_0x29b38f);_0x3bc774(_0x29b38f);});});}function respondWithStatusCode(_0x2e4da3,_0x4dc7bf){_0x4dc7bf=_0x4dc7bf||0xcc;return function(_0x200a49){if(_0x200a49){return _0x2e4da3['sendStatus'](_0x4dc7bf);}return _0x2e4da3[_0x8ea2('0x2f')](_0x4dc7bf)[_0x8ea2('0x30')]();};}function respondWithResult(_0x21c526,_0x266db8){_0x266db8=_0x266db8||0xc8;return function(_0x4e1b90){if(_0x4e1b90){return _0x21c526['status'](_0x266db8)[_0x8ea2('0x31')](_0x4e1b90);}};}function respondWithFilteredResult(_0x4da5b3,_0x4a9875){return function(_0x287078){if(_0x287078){var _0x24f187=typeof _0x4a9875[_0x8ea2('0x32')]===_0x8ea2('0x33')&&typeof _0x4a9875[_0x8ea2('0x34')]===_0x8ea2('0x33');var _0x316707=_0x287078[_0x8ea2('0x35')];var _0x9c5fac=_0x24f187?0x0:_0x4a9875['offset'];var _0x5b7ff9=_0x24f187?_0x287078[_0x8ea2('0x35')]:_0x4a9875[_0x8ea2('0x32')]+_0x4a9875['limit'];var _0x4a110f;if(_0x5b7ff9>=_0x316707){_0x5b7ff9=_0x316707;_0x4a110f=0xc8;}else{_0x4a110f=0xce;}_0x4da5b3[_0x8ea2('0x2f')](_0x4a110f);return _0x4da5b3['set'](_0x8ea2('0x36'),_0x9c5fac+'-'+_0x5b7ff9+'/'+_0x316707)[_0x8ea2('0x31')](_0x287078);}return null;};}function patchUpdates(_0x53fd06){return function(_0x17b21c){try{jsonpatch[_0x8ea2('0x37')](_0x17b21c,_0x53fd06,!![]);}catch(_0x33abc8){return BPromise['reject'](_0x33abc8);}return _0x17b21c['save']();};}function saveUpdates(_0x49a252,_0x3880c3){return function(_0x233e12){if(_0x233e12){return _0x233e12[_0x8ea2('0x38')](_0x49a252)['then'](function(_0x456487){return _0x456487;});}return null;};}function removeEntity(_0x391b08,_0x3d5bf0){return function(_0x278e5d){if(_0x278e5d){return _0x278e5d[_0x8ea2('0x39')]()[_0x8ea2('0x25')](function(){_0x391b08[_0x8ea2('0x2f')](0xcc)[_0x8ea2('0x30')]();});}};}function handleEntityNotFound(_0x5e9b1f,_0x955ef3){return function(_0x29e3f5){if(!_0x29e3f5){_0x5e9b1f[_0x8ea2('0x3a')](0x194);}return _0x29e3f5;};}function handleError(_0x467d97,_0x4eebc1){_0x4eebc1=_0x4eebc1||0x1f4;return function(_0x2a1f14){logger['error'](_0x2a1f14[_0x8ea2('0x3b')]);if(_0x2a1f14[_0x8ea2('0x3c')]){delete _0x2a1f14[_0x8ea2('0x3c')];}_0x467d97[_0x8ea2('0x2f')](_0x4eebc1)['send'](_0x2a1f14);};}function getMustacheRender(_0x2bed24,_0x531979){return Mustache['render'](_0x2bed24,_[_0x8ea2('0x3d')](_0x531979['body'],{'contact':_0x531979[_0x8ea2('0x3e')],'message':_0x531979[_0x8ea2('0x2d')],'agent':_0x531979[_0x8ea2('0x3f')],'interaction':_0x531979[_0x8ea2('0x40')],'account':_0x531979[_0x8ea2('0x41')]}))||'';}function getInteractionUsers(_0x4ae536,_0x84685d){return new BPromise(function(_0x5c5d2d,_0x12a6c2){try{if(_0x84685d[_0x4ae536['id']]){_0x4ae536[_0x8ea2('0x42')]=_[_0x8ea2('0x43')](_0x84685d[_0x4ae536['id']],function(_0x3995ff){return{'id':_0x3995ff['id'],'fullname':_0x3995ff['fullname']};});}}catch(_0x44e8bc){_0x12a6c2(_0x44e8bc);}_0x5c5d2d(_0x4ae536);});}function getInteractionTags(_0x57a6b8,_0x3f0c78){return new BPromise(function(_0x5ba351,_0x2ee78b){try{if(_0x57a6b8[_0x8ea2('0x44')]){_0x57a6b8[_0x8ea2('0x45')]=[];_0x57a6b8[_0x8ea2('0x44')][_0x8ea2('0x46')](',')[_0x8ea2('0x47')](function(_0x2f4fa8){_0x57a6b8['Tags']['push'](_0x3f0c78[_0x2f4fa8]);});}delete _0x57a6b8[_0x8ea2('0x44')];}catch(_0x53455a){_0x2ee78b(_0x53455a);}_0x5ba351(_0x57a6b8);});}function updateChatInteraction(_0x4b03fa,_0x59e2fa,_0x3cbc09){return new BPromise(function(_0x5d9ba0,_0x40a532){return getInteractionUsers(_0x4b03fa,_0x3cbc09)[_0x8ea2('0x25')](function(_0x39c944){return getInteractionTags(_0x39c944,_0x59e2fa);})[_0x8ea2('0x25')](function(_0x989d9b){_0x5d9ba0(_0x989d9b);})[_0x8ea2('0x2e')](function(_0x3b2219){_0x40a532(_0x3b2219);});});}exports[_0x8ea2('0x48')]=function(_0x5352b9,_0x3afb80){var _0x1ef615={},_0x1db25c={},_0x5cb6ad={'count':0x0,'rows':[]};var _0x2d6bbb=_[_0x8ea2('0x43')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')],function(_0x20992d){return{'name':_0x20992d['fieldName'],'type':_0x20992d[_0x8ea2('0x4b')][_0x8ea2('0x4c')]};});_0x1db25c[_0x8ea2('0x4d')]=_['map'](_0x2d6bbb,_0x8ea2('0x3c'));_0x1db25c[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x5352b9[_0x8ea2('0x4e')]);_0x1db25c[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],_0x1db25c[_0x8ea2('0x4e')]);_0x1ef615[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x1db25c[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x1ef615['attributes']=_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x1ef615[_0x8ea2('0x52')]:_0x1db25c[_0x8ea2('0x4d')];if(!_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x55')](_0x8ea2('0x56'))){_0x1ef615[_0x8ea2('0x34')]=qs['limit'](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x34')]);_0x1ef615[_0x8ea2('0x32')]=qs['offset'](_0x5352b9['query'][_0x8ea2('0x32')]);}_0x1ef615[_0x8ea2('0x57')]=qs[_0x8ea2('0x58')](_0x5352b9['query'][_0x8ea2('0x58')]);_0x1ef615[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x5352b9[_0x8ea2('0x4e')],_0x1db25c['filters']),_0x2d6bbb);var _0x4afd85=[];var _0x24a22a=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x5c')]('id')['field'](_0x8ea2('0x3c'))[_0x8ea2('0x5c')](_0x8ea2('0x5d'))['from']('tools_tags');var _0x48aebf=squel['select']()['field'](_0x8ea2('0x5e'))[_0x8ea2('0x5c')]('u.fullname')['field'](_0x8ea2('0x5f'))[_0x8ea2('0x60')](_0x8ea2('0x61'),'ui')['left_join'](_0x8ea2('0x62'),'u',_0x8ea2('0x63'));var _0x59e3df=squel[_0x8ea2('0x5b')]()[_0x8ea2('0x60')](_0x8ea2('0x64'),'i')[_0x8ea2('0x65')](_0x8ea2('0x66'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0x8ea2('0x67'))[_0x8ea2('0x65')](_0x8ea2('0x68'),'a',_0x8ea2('0x69'))[_0x8ea2('0x65')](_0x8ea2('0x6a'),'me',_0x8ea2('0x6b'))['left_join']('chat_interaction_has_tags','it','it.ChatInteractionId\x20=\x20i.id')[_0x8ea2('0x65')](_0x8ea2('0x6c'),'t',_0x8ea2('0x6d'));var _0x2bbec0=squel['expr']();var _0x11824e=[];var _0x2b8662=squel['expr']();var _0x21485a;if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x6e')]){_0x21485a=as[_0x8ea2('0x6f')](_0x5352b9[_0x8ea2('0x4e')]['search']);var _0x479c05=_0x21485a['sqlOperator'];for(var _0x53a62c=0x0;_0x53a62c<_0x21485a[_0x8ea2('0x70')][_0x8ea2('0x54')];_0x53a62c++){var _0x2d8221=_0x21485a[_0x8ea2('0x70')][_0x53a62c];var _0x491d3d='i';var _0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x2d8221[_0x8ea2('0x5c')]]);if(!_0x461d32){switch(_0x2d8221['field']){case _0x8ea2('0x72'):if(_0x2d8221['value']==0x1){_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+_0x8ea2('0x74'));}else{_0x59e3df[_0x8ea2('0x73')]('`'+_0x2d8221['field']+'`\x20>\x200');}break;case _0x8ea2('0x75'):if(_0x2d8221['operator']===_0x8ea2('0x76')){if(_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')]('\x20')[_0x8ea2('0x54')]>0x1){_0x2bbec0[_0x479c05]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8ea2('0x78')](_0x2d8221[_0x8ea2('0x77')]),null);}else{var _0x39776d='%'+_0x2d8221[_0x8ea2('0x77')]+'%';_0x2bbec0[_0x479c05](_0x8ea2('0x79'),_0x39776d,_0x39776d,_0x39776d);}}else{_0x461d32=_[_0x8ea2('0x71')](_0x2d6bbb,[_0x8ea2('0x3c'),_0x8ea2('0x7a')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x7a');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db['text'],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);}break;case _0x8ea2('0x7d'):var _0x219f78=_0x2d8221[_0x8ea2('0x77')][_0x8ea2('0x46')](',')[_0x8ea2('0x43')](function(_0xefb7b){return Number(_0xefb7b);});_0x219f78[_0x8ea2('0x47')](function(_0x35cfc5){_0x2b8662['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x35cfc5+',%');});_0x11824e=_[_0x8ea2('0x7e')](_0x11824e,_0x219f78);break;case _0x8ea2('0x7f'):if(_0x2d8221[_0x8ea2('0x80')]===_0x8ea2('0x76')){_0x2bbec0[_0x479c05](_0x8ea2('0x81'),'%'+_0x2d8221['value']+'%',null);}else{_0x461d32=_['find'](_0x2d6bbb,['name',_0x8ea2('0x82')]);_0x2d8221[_0x8ea2('0x5c')]=_0x8ea2('0x82');_0x3d55db=as[_0x8ea2('0x7b')](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db['value'][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')]['end']);}break;case'body':_0x3d55db=as[_0x8ea2('0x7b')]('me',null,_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x30')]);break;}}else{var _0x3d55db=as['buildExpression'](_0x491d3d,_0x461d32[_0x8ea2('0x4b')],_0x2d8221);_0x2bbec0[_0x479c05](_0x3d55db[_0x8ea2('0x83')],_0x3d55db[_0x8ea2('0x77')][_0x8ea2('0x7c')],_0x3d55db['value'][_0x8ea2('0x30')]);}}}else{var _0x356099=_(_0x5352b9[_0x8ea2('0x4e')])['keys']()[_0x8ea2('0x43')](function(_0x5c2d05){return _['some'](_0x2d6bbb,[_0x8ea2('0x3c'),_0x5c2d05])?_0x5c2d05:undefined;})[_0x8ea2('0x84')]()['value']();if(!_['isEmpty'](_0x356099)){_0x356099['forEach'](function(_0x167f15){if(_0x167f15==='ChatWebsiteId'){_0x59e3df['where'](_0x8ea2('0x85'),[][_0x8ea2('0x86')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15]));}else if(_0x167f15===_0x8ea2('0x87')){var _0x1681d8=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x89')];var _0x14a5de=JSON[_0x8ea2('0x88')](_0x5352b9[_0x8ea2('0x4e')][_0x167f15])[_0x8ea2('0x8a')];_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0x8b'),_0x1681d8,_0x14a5de);}else{if(_0x5352b9['query'][_0x167f15]===_0x8ea2('0x8c')){_0x59e3df[_0x8ea2('0x59')]('i.'+_0x167f15+_0x8ea2('0x8d'));}else{_0x59e3df['where']('i.'+_0x167f15+_0x8ea2('0x8e'),_0x5352b9['query'][_0x167f15]);}}});}if(_0x5352b9[_0x8ea2('0x4e')]['read']){if(_0x5352b9[_0x8ea2('0x4e')]['read']==0x1){_0x59e3df[_0x8ea2('0x73')](_0x8ea2('0x8f'));}else{_0x59e3df['having'](_0x8ea2('0x90'));}}if(_0x5352b9['query'][_0x8ea2('0x91')]){_0x11824e=_[_0x8ea2('0x92')](_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x91')])?_0x5352b9[_0x8ea2('0x4e')]['tag']:new Array(_0x5352b9['query'][_0x8ea2('0x91')]);_0x11824e['forEach'](function(_0x410f78){_0x2b8662['or'](_0x8ea2('0x93'),'%,'+_0x410f78+',%');});}if(_0x5352b9[_0x8ea2('0x4e')][_0x8ea2('0x94')]){var _0x262cef=_0x5352b9[_0x8ea2('0x4e')]['filter']['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8ea2('0x95')](_0x262cef)){_0x2bbec0['or']('i.id\x20LIKE\x20?',_0x262cef+'%');}else{_0x2bbec0['or'](_0x8ea2('0x96'),qs[_0x8ea2('0x78')](_0x262cef))['or'](_0x8ea2('0x97'),_0x262cef+'%');}}}_0x59e3df[_0x8ea2('0x59')](_0x2bbec0);_0x59e3df[_0x8ea2('0x98')](_0x8ea2('0x99'));var _0x4b4d64={'type':db[_0x8ea2('0x9a')][_0x8ea2('0x9b')][_0x8ea2('0x9c')],'raw':!![]};var _0x335a96=_0x59e3df[_0x8ea2('0x9d')]();_0x335a96['field']('i.id');_0x335a96[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));if(_0x1ef615[_0x8ea2('0x57')]){_0x1ef615[_0x8ea2('0x57')][_0x8ea2('0x47')](function(_0x2e0bbe){var _0x9c4960=_0x2e0bbe[0x0]===_0x8ea2('0x9f')?_0x2e0bbe[0x0]:'i.'+_0x2e0bbe[0x0];_0x59e3df[_0x8ea2('0x57')](_0x9c4960,_0x2e0bbe[0x1]===_0x8ea2('0xa0')?![]:!![]);});}if(!_[_0x8ea2('0xa1')](_0x11824e)){_0x59e3df[_0x8ea2('0x73')](_0x2b8662);_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa2'),_0x11824e);}BPromise[_0x8ea2('0xa3')]()[_0x8ea2('0x25')](function(){if(!_0x21485a){if(_0x5352b9['query']['ChatWebsiteId'])return;_0x335a96[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa4'));return;}if(_0x5352b9['user'][_0x8ea2('0xa5')]!=='agent')return;return _0x5352b9[_0x8ea2('0xa6')][_0x8ea2('0xa7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x17dee8){if(_[_0x8ea2('0xa1')](_0x17dee8)){_0x335a96[_0x8ea2('0x59')](_0x8ea2('0xa8'));_0x59e3df[_0x8ea2('0x59')](_0x8ea2('0xa8'));}else{_0x335a96[_0x8ea2('0x59')](_0x8ea2('0x85'),_[_0x8ea2('0x43')](_0x17dee8,'id'));_0x59e3df[_0x8ea2('0x59')]('i.ChatWebsiteId\x20IN\x20?',_[_0x8ea2('0x43')](_0x17dee8,'id'));}});})[_0x8ea2('0x25')](function(){if(_0x5352b9['user'][_0x8ea2('0xa5')]==='agent'&&!_0x21485a&&!_0x5352b9['query']['ChatWebsiteId'])return[];return db[_0x8ea2('0xa9')]['query'](_0x335a96[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x12ed20){_0x5cb6ad[_0x8ea2('0x35')]=_0x12ed20[_0x8ea2('0x54')];if(_0x5cb6ad[_0x8ea2('0x35')]===0x0)return[];return db['sequelize'][_0x8ea2('0x4e')](_0x24a22a['toString'](),_0x4b4d64)[_0x8ea2('0x25')](function(_0x18aa81){_0x4afd85=_[_0x8ea2('0xab')](_0x18aa81,'id');_0x4b4d64=_[_0x8ea2('0x3d')](_0x4b4d64,{'model':db[_0x8ea2('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5352b9['query'][_0x8ea2('0x53')]){_0x1ef615[_0x8ea2('0x52')][_0x8ea2('0x47')](function(_0x2a82b2){_0x59e3df[_0x8ea2('0x5c')]('i.'+_0x2a82b2);});}else{_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0x9e'),_0x8ea2('0x72'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xac'),_0x8ea2('0xad'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xae'),_0x8ea2('0xaf'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb0'),_0x8ea2('0x9f'));_0x59e3df['field'](_0x8ea2('0xb1'));_0x59e3df['field']('c.firstName',_0x8ea2('0xb2'));_0x59e3df[_0x8ea2('0x5c')]('c.lastName',_0x8ea2('0xb3'));_0x59e3df[_0x8ea2('0x5c')]('c.email',_0x8ea2('0xb4'));_0x59e3df[_0x8ea2('0x5c')]('c.phone',_0x8ea2('0xb5'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb6'),_0x8ea2('0xb7'));_0x59e3df[_0x8ea2('0x5c')]('c.fax',_0x8ea2('0xb8'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xb9'),_0x8ea2('0xba'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbb'),_0x8ea2('0xbc'));_0x59e3df[_0x8ea2('0x5c')](_0x8ea2('0xbd'),'TagIds');}if(_0x1ef615[_0x8ea2('0x34')])_0x59e3df['limit'](_0x1ef615[_0x8ea2('0x34')]);if(_0x1ef615[_0x8ea2('0x32')])_0x59e3df[_0x8ea2('0x32')](_0x1ef615[_0x8ea2('0x32')]);return db[_0x8ea2('0xa9')]['query'](_0x59e3df[_0x8ea2('0xaa')](),_0x4b4d64);})[_0x8ea2('0x25')](function(_0x4fdd16){if(_0x4fdd16['length']>0x0)_0x48aebf[_0x8ea2('0x59')](_0x8ea2('0xbe'),_['map'](_0x4fdd16,'id'));return db['sequelize'][_0x8ea2('0x4e')](_0x48aebf[_0x8ea2('0xaa')](),_0x4b4d64)['then'](function(_0x2b7e80){var _0x2f6673=_[_0x8ea2('0xbf')](_0x2b7e80,_0x8ea2('0xc0'));var _0xdf4de9=[];_0x4fdd16['forEach'](function(_0x2e3a5d){_0xdf4de9[_0x8ea2('0xc1')](updateChatInteraction(_0x2e3a5d,_0x4afd85,_0x2f6673));});return BPromise[_0x8ea2('0xc2')](_0xdf4de9);});});})[_0x8ea2('0x25')](function(_0x412af1){_0x5cb6ad['rows']=_0x412af1;return _0x5cb6ad;})[_0x8ea2('0x25')](respondWithFilteredResult(_0x3afb80,_0x1ef615))['catch'](handleError(_0x3afb80,null));};exports['show']=function(_0x9468be,_0x17e9fc){var _0x5c95ec={'raw':![],'where':{'id':_0x9468be[_0x8ea2('0xc3')]['id']}},_0x239516={};_0x239516[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db[_0x8ea2('0x49')][_0x8ea2('0x4a')]);_0x239516['query']=_[_0x8ea2('0x4f')](_0x9468be[_0x8ea2('0x4e')]);_0x239516[_0x8ea2('0x50')]=_['intersection'](_0x239516[_0x8ea2('0x4d')],_0x239516[_0x8ea2('0x4e')]);_0x5c95ec[_0x8ea2('0x52')]=_[_0x8ea2('0x51')](_0x239516[_0x8ea2('0x4d')],qs['fields'](_0x9468be[_0x8ea2('0x4e')][_0x8ea2('0x53')]));_0x5c95ec[_0x8ea2('0x52')]=_0x5c95ec[_0x8ea2('0x52')]['length']?_0x5c95ec['attributes']:_0x239516[_0x8ea2('0x4d')];if(_0x9468be['query'][_0x8ea2('0xc4')]){_0x5c95ec['include']=[{'all':!![]}];}_0x5c95ec=_[_0x8ea2('0x3d')]({},_0x5c95ec,_0x9468be[_0x8ea2('0xc5')]);return db[_0x8ea2('0x49')][_0x8ea2('0x71')](_0x5c95ec)[_0x8ea2('0x25')](handleEntityNotFound(_0x17e9fc,null))[_0x8ea2('0x25')](respondWithResult(_0x17e9fc,null))[_0x8ea2('0x2e')](handleError(_0x17e9fc,null));};exports['create']=function(_0x2c5677,_0x224fca){return db[_0x8ea2('0x49')][_0x8ea2('0xc6')](_0x2c5677[_0x8ea2('0xc7')],{})[_0x8ea2('0x25')](respondWithResult(_0x224fca,0xc9))['catch'](handleError(_0x224fca,null));};exports[_0x8ea2('0x38')]=function(_0x463372,_0x76085){if(_0x463372[_0x8ea2('0xc7')]['id']){delete _0x463372['body']['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x463372[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x76085,null))[_0x8ea2('0x25')](saveUpdates(_0x463372['body'],null))[_0x8ea2('0x25')](respondWithResult(_0x76085,null))[_0x8ea2('0x2e')](handleError(_0x76085,null));};exports[_0x8ea2('0x39')]=function(_0x500b47,_0x331019){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x500b47[_0x8ea2('0xc3')]['id']}})['then'](handleEntityNotFound(_0x331019,null))['then'](removeEntity(_0x331019,null))[_0x8ea2('0x2e')](handleError(_0x331019,null));};exports[_0x8ea2('0xc8')]=function(_0x405020,_0x5c9359){return db[_0x8ea2('0x49')][_0x8ea2('0xc8')]()[_0x8ea2('0x25')](respondWithResult(_0x5c9359,null))[_0x8ea2('0x2e')](handleError(_0x5c9359,null));};exports[_0x8ea2('0xc9')]=function(_0x11c59e,_0x11b02a){var _0x5ab2c4=_0x11c59e[_0x8ea2('0xc3')]['id'];var _0x111f97;var _0xf76d70;var _0x384500;return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x5ab2c4}})[_0x8ea2('0x25')](function(_0x568581){_0x111f97=_0x568581;return db[_0x8ea2('0xcb')][_0x8ea2('0xca')]({'where':{'id':_0x568581[_0x8ea2('0xcc')]},'attributes':['id',_0x8ea2('0xcd'),_0x8ea2('0xce'),'vidaooTopic',_0x8ea2('0xcf'),_0x8ea2('0xd0')],'raw':!![]});})[_0x8ea2('0x25')](function(_0x1c336e){if(_0x1c336e&&_0x1c336e[_0x8ea2('0xcd')]&&_0x1c336e[_0x8ea2('0xce')]){_0xf76d70=_0x1c336e;var _0x473ae2={'interaction':{'id':_0x5ab2c4},'agent':{'id':_0x11c59e[_0x8ea2('0xa6')]['id'],'name':_0x11c59e[_0x8ea2('0xa6')]['name'],'fullname':_0x11c59e['user']['fullname'],'email':_0x11c59e[_0x8ea2('0xa6')]['email']},'contact':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x3e')],'account':_0x11c59e[_0x8ea2('0xc7')][_0x8ea2('0x41')]};var _0x6c0ccc={'rejectUnauthorized':![],'method':_0x8ea2('0xd1'),'url':_0x8ea2('0xd2'),'headers':{'X-APIKEY':_0x1c336e[_0x8ea2('0xcd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x11c59e[_0x8ea2('0xa6')][_0x8ea2('0xd3')]],'buttons':null,'topic':_0xf76d70['vidaooTopic'],'note':_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xcf')])?null:getMustacheRender(_0xf76d70[_0x8ea2('0xcf')],_0x473ae2),'metadata':null},'redirect':_0x8ea2('0xd5'),'json':!![]};try{if(!_[_0x8ea2('0xd4')](_0xf76d70[_0x8ea2('0xd0')])){var _0xc6888c=getMustacheRender(_0xf76d70[_0x8ea2('0xd0')],_0x473ae2);var _0x152d46=JSON[_0x8ea2('0x88')](_0xc6888c);_0x6c0ccc[_0x8ea2('0xc7')][_0x8ea2('0xd6')]=_0x152d46;}}catch(_0x465e7f){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xd8'));}return rp(_0x6c0ccc);}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})['then'](function(_0x4b2c0f){_0x384500=_0x4b2c0f;if(_0x384500['id']){var _0x2fcddc={'body':_0x384500[_0x8ea2('0xd9')],'ChatWebsiteId':_0xf76d70['id'],'ChatInteractionId':_0x111f97['id'],'direction':'out','UserId':_0x11c59e[_0x8ea2('0xa6')]['id']};return db[_0x8ea2('0xda')][_0x8ea2('0xc6')](_0x2fcddc,{});}else{throw new db[(_0x8ea2('0x9a'))]['ValidationError'](_0x8ea2('0xdb'));}})['then'](function(){return _0x111f97[_0x8ea2('0xdc')]({'vidaooSessionId':_0x384500['id']});})[_0x8ea2('0x25')](respondWithResult(_0x11b02a,null))[_0x8ea2('0x2e')](handleError(_0x11b02a,null));};exports[_0x8ea2('0xdd')]=function(_0x3b6b03,_0x3292bc){if(_0x3b6b03['body']['id']){delete _0x3b6b03['body']['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x3b6b03['params']['id']},'include':[{'model':db[_0x8ea2('0xde')],'as':'Contact'}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x3292bc,null))[_0x8ea2('0x25')](saveUpdates(_0x3b6b03[_0x8ea2('0xc7')],null))[_0x8ea2('0x25')](respondWithResult(_0x3292bc,null))[_0x8ea2('0x2e')](handleError(_0x3292bc,null));};exports[_0x8ea2('0xdf')]=function(_0x1383b4,_0x4c1b9d,_0x3f3822){if(_0x1383b4[_0x8ea2('0xc7')]['id']){delete _0x1383b4[_0x8ea2('0xc7')]['id'];}return db[_0x8ea2('0x49')][_0x8ea2('0x71')]({'where':{'id':_0x1383b4[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](function(_0x1c974d){if(!_0x1c974d){logger[_0x8ea2('0x2b')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x8ea2('0xdf'),0x194,_0x8ea2('0xe0'));_0x4c1b9d[_0x8ea2('0x3a')](0x194);}else{if(_0x1c974d['UserId']){throw new db[(_0x8ea2('0x9a'))][(_0x8ea2('0xd7'))](_0x8ea2('0xe1'));}}return _0x1c974d;})[_0x8ea2('0x25')](function(_0xe18090){if(_0xe18090){return _0xe18090[_0x8ea2('0x38')]({'closed':_0x1383b4['body']['closed'],'disposition':_0x1383b4[_0x8ea2('0xc7')][_0x8ea2('0xe2')]})[_0x8ea2('0x25')](function(_0x695f4a){return _0x695f4a;});}})[_0x8ea2('0x25')](function(_0x57ff72){return respondWithRpcPromise(_0x8ea2('0xe3'),'abandon',_0x1383b4[_0x8ea2('0xc7')],client9004);})[_0x8ea2('0x25')](respondWithResult(_0x4c1b9d,null))['catch'](handleError(_0x4c1b9d,null));};exports[_0x8ea2('0xe4')]=function(_0x254b51,_0x2c11d2,_0x2aaa88){_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x3c')]=_0x254b51[_0x8ea2('0xe5')][_0x8ea2('0xe6')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0xe7')]=_0x254b51['file'][_0x8ea2('0xe8')];_0x254b51[_0x8ea2('0xc7')][_0x8ea2('0x4b')]=_0x254b51['file'][_0x8ea2('0xe9')];return db['Attachment'][_0x8ea2('0xc6')](_0x254b51[_0x8ea2('0xc7')])[_0x8ea2('0x25')](respondWithResult(_0x2c11d2,0xc9))[_0x8ea2('0x2e')](handleError(_0x2c11d2,null));};exports[_0x8ea2('0xea')]=function(_0x1786ac,_0x7a45a8,_0x3a68e2){return db[_0x8ea2('0x49')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0xc3')]['id']},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null))[_0x8ea2('0x25')](function(_0x8d4abd){if(_0x8d4abd){if(_0x8d4abd[_0x8ea2('0xeb')]){return _0x7a45a8[_0x8ea2('0x2f')](0x193)[_0x8ea2('0x31')]({'status':0x193,'message':_0x8ea2('0xec')});}return db[_0x8ea2('0xed')]['findOne']({'where':{'id':_0x1786ac[_0x8ea2('0x4e')][_0x8ea2('0xee')]},'raw':!![]})[_0x8ea2('0x25')](handleEntityNotFound(_0x7a45a8,null));}})[_0x8ea2('0x25')](function(_0xcbb6b3){if(_0xcbb6b3){var _0x4bdbe0=_0xcbb6b3[_0x8ea2('0xef')]!==null;var _0x44791f=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf2'));if(_0x4bdbe0){_0x44791f=path['join'](_0x44791f,_0x8ea2('0xf3'));}var _0x4e7aff=path[_0x8ea2('0xf0')](_0x44791f,_0xcbb6b3[_0x8ea2('0xe7')]);return _0x7a45a8[_0x8ea2('0xf4')](_0x4e7aff);}})['catch'](handleError(_0x7a45a8,null));};exports[_0x8ea2('0xf5')]=function(_0x48a2e2,_0x4e804c){var _0x487bab=null;var _0x1a0966=null;var _0x50087b=null;var _0x196b89=null;if(_0x48a2e2[_0x8ea2('0xc7')]['id']){delete _0x48a2e2[_0x8ea2('0xc7')]['id'];}if(_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')]){_0x196b89=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],_0x8ea2('0xf7'),util['format']('transcript-%s.txt',Date[_0x8ea2('0xf8')]()));_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf9')]=_0x196b89;}return db['ChatInteraction']['find']({'where':{'id':_0x48a2e2['params']['id']},'include':[{'model':db[_0x8ea2('0xda')],'as':'Messages','include':[{'model':db['User'],'as':_0x8ea2('0x7f')}]}]})[_0x8ea2('0x25')](handleEntityNotFound(_0x4e804c,null))['then'](saveUpdates(_0x48a2e2['body'],null))[_0x8ea2('0x25')](function(_0x48eac8){if(_0x48eac8){_0x487bab=_0x48eac8;return db['ChatWebsite'][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0xcc')]}});}})[_0x8ea2('0x25')](function(_0x54da21){if(_0x54da21){_0x50087b=_0x54da21;return db[_0x8ea2('0xde')][_0x8ea2('0x71')]({'where':{'id':_0x487bab[_0x8ea2('0x7a')]}});}})[_0x8ea2('0x25')](function(_0x3a43d5){if(_0x3a43d5){_0x1a0966=_0x3a43d5;if(_0x196b89){var _0x535b01=null;for(var _0x22e4cd=0x1;_0x22e4cd<_0x487bab['Messages'][_0x8ea2('0x54')];++_0x22e4cd){_0x535b01=_0x487bab['Messages'][_0x22e4cd];var _0x230a70=_0x535b01['UserId']?util['format'](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');var _0x332670=_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xfd')]||util[_0x8ea2('0xfe')]('%s%d',_0x8ea2('0xff'),_0x535b01[_0x8ea2('0x7a')]);switch(_0x50087b[_0x8ea2('0x100')]){case _0x8ea2('0x101'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?util['format'](_0x8ea2('0xfa'),_0x50087b['agentAlias'],_0x535b01[_0x8ea2('0x82')]):'System';break;case _0x8ea2('0x102'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01[_0x8ea2('0x7f')][_0x8ea2('0x103')]||_0x535b01['User']['fullname']:'System';break;case _0x8ea2('0x104'):_0x230a70=_0x535b01[_0x8ea2('0x82')]?_0x535b01['User'][_0x8ea2('0x105')]:_0x8ea2('0xfc');break;default:_0x230a70=_0x535b01[_0x8ea2('0x82')]?util[_0x8ea2('0xfe')](_0x8ea2('0xfa'),_0x50087b[_0x8ea2('0xfb')],_0x535b01[_0x8ea2('0x82')]):_0x8ea2('0xfc');}var _0x422280=util[_0x8ea2('0xfe')](_0x8ea2('0x106'),moment(_0x535b01[_0x8ea2('0x87')])[_0x8ea2('0xfe')]('MM/DD/YYYY\x20HH:mm:ss'),_0x535b01[_0x8ea2('0x107')]==='in'?_0x332670:_0x230a70,_0x535b01['body']);if(!_0x535b01['secret']){fs[_0x8ea2('0x108')](_0x196b89,_0x422280);}}return db['MailAccount'][_0x8ea2('0xca')]({'where':{'service':!![]},'include':[{'model':db[_0x8ea2('0x109')],'as':_0x8ea2('0x10a'),'raw':!![]}]});}}})[_0x8ea2('0x25')](function(_0xff0fae){if(_0xff0fae&&_0xff0fae['Smtp']&&_0x48a2e2[_0x8ea2('0xc7')]){var _0x3f5688={'tls':{'rejectUnauthorized':![]}};if(_0xff0fae[_0x8ea2('0x10a')]['service']){_0x3f5688['service']=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10b')];}else{_0x3f5688['host']=_0xff0fae[_0x8ea2('0x10a')]['host'];_0x3f5688[_0x8ea2('0x10c')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10c')];_0x3f5688[_0x8ea2('0x10d')]=_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10d')];}if(_0xff0fae[_0x8ea2('0x10a')][_0x8ea2('0x10e')]){_0x3f5688[_0x8ea2('0x10f')]={'user':_0xff0fae['Smtp']['user'],'pass':_0xff0fae[_0x8ea2('0x10a')]['pass']};}return respondWithRpcPromise(_0x8ea2('0x110'),_0x8ea2('0x111'),{'account':_0x3f5688,'message':{'from':util[_0x8ea2('0xfe')](_0x8ea2('0x112'),_0xff0fae['name'],_0xff0fae[_0x8ea2('0xd3')]||_0xff0fae[_0x8ea2('0x10a')]['user']),'to':_0x48a2e2[_0x8ea2('0xc7')][_0x8ea2('0xf6')],'subject':_0x8ea2('0x113'),'text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x48a2e2['body'][_0x8ea2('0xf6')]),'attachments':[{'path':_0x196b89}]}})['then'](function(){return _0x487bab;})[_0x8ea2('0x2e')](function(_0x488acb){console[_0x8ea2('0x2b')](_0x488acb);});}else{return _0x487bab;}})[_0x8ea2('0x25')](respondWithStatusCode(_0x4e804c,0xc8))[_0x8ea2('0x2e')](handleError(_0x4e804c,null));};exports[_0x8ea2('0x114')]=function(_0x54925a,_0x295339,_0x55c23c){return db['ChatMessage']['find']({'where':{'id':_0x54925a[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x295339,null))[_0x8ea2('0x25')](function(_0x48b51d){if(_0x48b51d){return _0x48b51d[_0x8ea2('0x114')](_0x54925a[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x54925a[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{});}})[_0x8ea2('0x25')](respondWithResult(_0x295339,null))[_0x8ea2('0x2e')](handleError(_0x295339,null));};exports[_0x8ea2('0x117')]=function(_0x102d70,_0x2b014d,_0xc35654){var _0x355b91={'raw':![],'where':{}};var _0x1cf414={};var _0x48e543={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8ea2('0xca')]({'where':{'id':_0x102d70['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x2b014d,null))[_0x8ea2('0x25')](function(_0x3ebbc8){if(_0x3ebbc8){_0x1cf414['model']=_[_0x8ea2('0x4f')](db['ChatMessage']['rawAttributes']);_0x1cf414[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x102d70[_0x8ea2('0x4e')]);_0x1cf414[_0x8ea2('0x50')]=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],_0x1cf414[_0x8ea2('0x4e')]);_0x355b91['attributes']=_[_0x8ea2('0x51')](_0x1cf414[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x102d70['query'][_0x8ea2('0x53')]));_0x355b91[_0x8ea2('0x52')]=_0x355b91[_0x8ea2('0x52')]['length']?_0x355b91[_0x8ea2('0x52')]:_0x1cf414[_0x8ea2('0x4d')];if(!_0x102d70[_0x8ea2('0x4e')]['hasOwnProperty']('nolimit')){_0x355b91[_0x8ea2('0x34')]=qs['limit'](_0x102d70[_0x8ea2('0x4e')]['limit']);_0x355b91[_0x8ea2('0x32')]=qs[_0x8ea2('0x32')](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x32')]);}_0x355b91[_0x8ea2('0x57')]=qs['sort'](_0x102d70[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x355b91[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_[_0x8ea2('0x5a')](_0x102d70[_0x8ea2('0x4e')],_0x1cf414['filters']));_0x355b91['where'][_0x8ea2('0xc0')]=_0x3ebbc8['id'];if(_0x102d70[_0x8ea2('0x4e')]['filter']){_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],{'$or':_[_0x8ea2('0x43')](_0x355b91['attributes'],function(_0x19ea2b){var _0x4450e8={};_0x4450e8[_0x19ea2b]={'$like':'%'+_0x102d70['query'][_0x8ea2('0x94')]+'%'};return _0x4450e8;})});}if(_0x102d70['query'][_0x8ea2('0x89')]){var _0x479b40=_0x102d70['query'][_0x8ea2('0x89')][_0x8ea2('0x46')](',');var _0xbb5964={};_0xbb5964[_0x479b40[0x0]]={'$gte':moment(_0x479b40[0x1])[_0x8ea2('0xfe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x355b91[_0x8ea2('0x59')]=_[_0x8ea2('0x3d')](_0x355b91[_0x8ea2('0x59')],_0xbb5964);}_0x355b91=_['merge']({},_0x355b91,_0x102d70[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x355b91[_0x8ea2('0x59')]})[_0x8ea2('0x25')](function(_0x46d38e){_0x48e543[_0x8ea2('0x35')]=_0x46d38e;if(_0x102d70['query'][_0x8ea2('0xc4')]){_0x355b91[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x355b91);})[_0x8ea2('0x25')](function(_0x23f247){_0x48e543[_0x8ea2('0x11a')]=_0x23f247;return _0x48e543;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x2b014d,_0x355b91))[_0x8ea2('0x2e')](handleError(_0x2b014d,null));};exports[_0x8ea2('0x11b')]=function(_0x3a37fb,_0x455009,_0x556919){var _0x58a0e5={'where':{}},_0x3be2ce={},_0x56a973={'count':0x0,'rows':[]};return db[_0x8ea2('0x49')][_0x8ea2('0xca')]({'where':{'id':_0x3a37fb[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x455009,null))[_0x8ea2('0x25')](function(_0x515381){if(_0x515381){_0x3be2ce[_0x8ea2('0x4d')]=_[_0x8ea2('0x4f')](db['ChatMessage'][_0x8ea2('0x4a')]);_0x3be2ce[_0x8ea2('0x4e')]=_[_0x8ea2('0x4f')](_0x3a37fb[_0x8ea2('0x4e')]);_0x3be2ce['filters']=_[_0x8ea2('0x51')](_0x3be2ce[_0x8ea2('0x4d')],_0x3be2ce[_0x8ea2('0x4e')]);_0x58a0e5[_0x8ea2('0x52')]=_['intersection'](_0x3be2ce[_0x8ea2('0x4d')],qs[_0x8ea2('0x53')](_0x3a37fb[_0x8ea2('0x4e')]['fields']));_0x58a0e5[_0x8ea2('0x52')]=_0x58a0e5[_0x8ea2('0x52')][_0x8ea2('0x54')]?_0x58a0e5['attributes']:_0x3be2ce['model'];if(!_0x3a37fb[_0x8ea2('0x4e')]['hasOwnProperty'](_0x8ea2('0x56'))){_0x58a0e5[_0x8ea2('0x34')]=qs[_0x8ea2('0x34')](_0x3a37fb[_0x8ea2('0x4e')]['limit']);_0x58a0e5[_0x8ea2('0x32')]=qs['offset'](_0x3a37fb['query']['offset']);}_0x58a0e5['order']=qs[_0x8ea2('0x58')](_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x58')]);_0x58a0e5[_0x8ea2('0x59')]=qs[_0x8ea2('0x50')](_['pick'](_0x3a37fb['query'],_0x3be2ce[_0x8ea2('0x50')]));_0x58a0e5['where']['ChatInteractionId']=_0x515381['id'];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]){_0x58a0e5[_0x8ea2('0x59')]=_['merge'](_0x58a0e5[_0x8ea2('0x59')],{'$or':_['map'](_0x58a0e5[_0x8ea2('0x52')],function(_0x4041ec){var _0x56178b={};_0x56178b[_0x4041ec]={'$like':'%'+_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x94')]+'%'};return _0x56178b;})});}_0x58a0e5['where'][_0x8ea2('0x11c')]=![];if(_0x3a37fb[_0x8ea2('0x4e')]['id']){_0x58a0e5[_0x8ea2('0x59')]['id']={'$gt':_0x3a37fb[_0x8ea2('0x4e')]['id']};}_0x58a0e5=_[_0x8ea2('0x3d')]({},_0x58a0e5,_0x3a37fb[_0x8ea2('0xc5')]);return db[_0x8ea2('0xda')][_0x8ea2('0x35')]({'where':_0x58a0e5[_0x8ea2('0x59')]})['then'](function(_0xcedece){_0x56a973['count']=_0xcedece;_0x58a0e5[_0x8ea2('0x118')]=[];if(_0x3a37fb[_0x8ea2('0x4e')][_0x8ea2('0x11d')]){_0x58a0e5[_0x8ea2('0x118')][_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':_0x8ea2('0x7f'),'attributes':['id',_0x8ea2('0x105'),'alias']});}if(_0x3a37fb['query'][_0x8ea2('0xc4')]){_0x58a0e5[_0x8ea2('0x118')]=[{'all':!![]}];}return db[_0x8ea2('0xda')][_0x8ea2('0x119')](_0x58a0e5);})[_0x8ea2('0x25')](function(_0x52bf7c){_0x56a973[_0x8ea2('0x11a')]=_0x52bf7c;return _0x56a973;});}})[_0x8ea2('0x25')](respondWithFilteredResult(_0x455009,_0x58a0e5))['catch'](handleError(_0x455009,null));};exports[_0x8ea2('0x11e')]=function(_0x3be5d0,_0x3ac848,_0x52ce76){return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x3be5d0['params']['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x3ac848,null))[_0x8ea2('0x25')](function(_0x1030c9){if(_0x1030c9){return _0x1030c9[_0x8ea2('0x11f')](_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')],_[_0x8ea2('0x116')](_0x3be5d0[_0x8ea2('0xc7')],[_0x8ea2('0x115'),'id'])||{})[_0x8ea2('0x120')](function(){return db[_0x8ea2('0x7d')][_0x8ea2('0x119')]({'attributes':['id',_0x8ea2('0x3c'),_0x8ea2('0x5d')],'where':{'id':_0x3be5d0[_0x8ea2('0xc7')][_0x8ea2('0x115')]}});})[_0x8ea2('0x25')](function(_0x452b94){socket[_0x8ea2('0x121')]('chatInteractionTags:save',{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]});return{'id':Number(_0x3be5d0['params']['id']),'tags':_0x452b94||[]};});}})[_0x8ea2('0x25')](respondWithResult(_0x3ac848,null))[_0x8ea2('0x2e')](handleError(_0x3ac848,null));};exports[_0x8ea2('0x122')]=function(_0x9410dd,_0x497671,_0x5e3e8d){return db[_0x8ea2('0x49')]['find']({'where':{'id':_0x9410dd[_0x8ea2('0xc3')]['id']}})[_0x8ea2('0x25')](handleEntityNotFound(_0x497671,null))[_0x8ea2('0x25')](function(_0x19b042){if(_0x19b042){return _0x19b042[_0x8ea2('0x122')](_0x9410dd[_0x8ea2('0x4e')][_0x8ea2('0x115')]);}})['then'](respondWithStatusCode(_0x497671,null))[_0x8ea2('0x2e')](handleError(_0x497671,null));};exports[_0x8ea2('0xf4')]=function(_0x2dc450,_0x34e1c5){var _0x5b929c=moment()['unix']()[_0x8ea2('0xaa')]();var _0x263123=path[_0x8ea2('0xf0')](config['root'],'server',_0x8ea2('0x123'),'tmp');var _0x40e8e6=path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x123'),_0x8ea2('0x124'));var _0x2dfabc=path[_0x8ea2('0xf0')](_0x263123,_0x5b929c);var _0x515049=util['format'](_0x8ea2('0x125'),_0x2dc450[_0x8ea2('0xc3')]['id'],_0x5b929c);var _0x39000d=path['join'](_0x263123,_0x515049);var _0x3a1752=[];_0x3a1752['push']({'model':db[_0x8ea2('0x7f')],'as':'User','attributes':['id',_0x8ea2('0x105')],'raw':!![]});_0x3a1752['push']({'model':db[_0x8ea2('0xde')],'as':_0x8ea2('0x75'),'attributes':['id',_0x8ea2('0x126'),_0x8ea2('0x127')],'raw':!![]});if(_0x2dc450['query'][_0x8ea2('0x124')]){_0x3a1752[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xed')],'as':_0x8ea2('0xed'),'raw':!![]});}var _0x5ba508=[{'model':db[_0x8ea2('0xda')],'as':_0x8ea2('0x128'),'attributes':['id',_0x8ea2('0xc7'),_0x8ea2('0x87'),_0x8ea2('0x107'),'secret',_0x8ea2('0x129')],'include':_0x3a1752}];_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0xcb')],'as':_0x8ea2('0x12a'),'attributes':['id','name']});_0x5ba508[_0x8ea2('0xc1')]({'model':db[_0x8ea2('0x7f')],'as':'Owner','attributes':['id','fullname']});return db['ChatInteraction'][_0x8ea2('0x71')]({'where':{'id':_0x2dc450[_0x8ea2('0xc3')]['id']},'include':_0x5ba508})[_0x8ea2('0x25')](handleEntityNotFound(_0x34e1c5,null))[_0x8ea2('0x25')](function(_0x3c9013){if(_0x3c9013){var _0x103c43=_0x3c9013['get']({'plain':!![]});fs['mkdirSync'](_0x2dfabc);var _0xc099b6={'channel':_0x8ea2('0x12b'),'account':_0x103c43[_0x8ea2('0x12a')]['name'],'agent':_0x103c43['Owner']?_0x103c43[_0x8ea2('0x12c')][_0x8ea2('0x105')]:'N.A.','createdAt':moment(_0x103c43[_0x8ea2('0x87')])['format'](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'closedAt':_0x103c43[_0x8ea2('0xeb')]?moment(_0x103c43['closedAt'])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))['toString']():'','disposition':_0x103c43[_0x8ea2('0xe2')],'chatInfo':{'browser':_0x103c43[_0x8ea2('0x12e')],'os':_0x103c43['osName'],'referer':_0x103c43['referer'],'customerIp':_0x103c43[_0x8ea2('0x12f')],'customerPort':_0x103c43[_0x8ea2('0x130')]?_0x103c43[_0x8ea2('0x130')]:'N.A.'},'messages':_(_0x103c43[_0x8ea2('0x128')])[_0x8ea2('0x131')]()[_0x8ea2('0x94')]({'secret':![]})[_0x8ea2('0x43')](function(_0x36799a){if(_0x36799a['Attachment']){var _0x1cc1d9=path['join'](_0x40e8e6,_0x36799a[_0x8ea2('0xed')]['basename']);if(fs[_0x8ea2('0x132')](_0x1cc1d9)){fs[_0x8ea2('0x133')](_0x1cc1d9)[_0x8ea2('0x134')](fs[_0x8ea2('0x135')](path['join'](_0x2dfabc,_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')])));}}return{'date':moment(_0x36799a[_0x8ea2('0x87')])[_0x8ea2('0xfe')](_0x8ea2('0x12d'))[_0x8ea2('0xaa')](),'sender':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?_0x36799a[_0x8ea2('0x7f')]?_0x36799a[_0x8ea2('0x7f')][_0x8ea2('0x105')]:'System':_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x126')]+(_0x36799a[_0x8ea2('0x75')]['lastName']?'\x20'+_0x36799a[_0x8ea2('0x75')][_0x8ea2('0x127')]:''),'body':_0x36799a[_0x8ea2('0xed')]?_0x36799a[_0x8ea2('0xed')][_0x8ea2('0xe7')]:_0x36799a[_0x8ea2('0xc7')],'direction':_0x36799a[_0x8ea2('0x107')]===_0x8ea2('0x136')?'A':'C','secret':_0x36799a[_0x8ea2('0x11c')],'read':_0x36799a[_0x8ea2('0x129')],'attachment':_0x36799a['Attachment']};})[_0x8ea2('0x77')]()};return ejs[_0x8ea2('0x137')](path[_0x8ea2('0xf0')](config[_0x8ea2('0xf1')],'server',_0x8ea2('0x138'),_0x8ea2('0x139')),{'interaction':_0xc099b6})[_0x8ea2('0x25')](function(_0x10d2b3){var _0x12a217=path[_0x8ea2('0xf0')](_0x2dfabc,_0x8ea2('0x13a')+_0x103c43['id']+'-'+_0x5b929c+'.pdf');var _0x44b0dc={'path':_0x12a217,'channel':_0x8ea2('0x12b'),'interactionId':_0x103c43['id']};return pdf['createPdfFromHTML'](_0x10d2b3,_0x44b0dc);})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x27f5e9,_0x19b678){zipdir(_0x2dfabc,{'saveTo':_0x39000d},function(_0x50ebcd,_0x5d6c63){if(_0x50ebcd)return _0x19b678(_0x50ebcd);return _0x27f5e9(_0x5d6c63);});})[_0x8ea2('0x25')](function(){return new BPromise(function(_0x55b3a1,_0x57e228){rimraf(_0x2dfabc,function(_0x3c669b){if(_0x3c669b)_0x57e228(_0x3c669b);return _0x55b3a1();});});})[_0x8ea2('0x25')](function(){return _0x34e1c5['download'](_0x39000d,_0x515049,function(_0x688d21){if(_0x688d21){console[_0x8ea2('0x13b')]('err',_0x688d21);}else{fs[_0x8ea2('0x13c')](_0x39000d);}});});});}else{return _0x34e1c5['sendStatus'](0xc8);}})[_0x8ea2('0x2e')](handleError(_0x34e1c5,null));};
\ No newline at end of file
index 3898141..1adca19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f7=['events','../../mysqldb','ChatInteraction','save','remove','getUsers','then','Users','findAll','setDataValue','unreadMessages','length','emit','hasOwnProperty','hook'];(function(_0x5db25b,_0x4455a9){var _0x408708=function(_0x215bc2){while(--_0x215bc2){_0x5db25b['push'](_0x5db25b['shift']());}};_0x408708(++_0x4455a9);}(_0x62f7,0x1c2));var _0x762f=function(_0x2b5444,_0x20e634){_0x2b5444=_0x2b5444-0x0;var _0x258417=_0x62f7[_0x2b5444];return _0x258417;};'use strict';var EventEmitter=require(_0x762f('0x0'));var ChatInteraction=require(_0x762f('0x1'))['db'][_0x762f('0x2')];var ChatMessage=require(_0x762f('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x762f('0x3'),'afterUpdate':'update','afterDestroy':_0x762f('0x4')};function emitEvent(_0x225218){return function(_0xf725cf,_0x695459,_0x2e2d09){_0xf725cf[_0x762f('0x5')]({'attributes':['id'],'raw':!![]})[_0x762f('0x6')](function(_0x14eeb9){_0xf725cf['setDataValue'](_0x762f('0x7'),_0x14eeb9['map'](function(_0x2373c5){return{'id':_0x2373c5['id']};}));return ChatMessage[_0x762f('0x8')]({'where':{'ChatInteractionId':_0xf725cf['id'],'direction':'in','read':![]},'raw':!![]});})[_0x762f('0x6')](function(_0x28e544){_0xf725cf[_0x762f('0x9')](_0x762f('0xa'),_0x28e544[_0x762f('0xb')]);ChatInteractionEvents['emit'](_0x225218+':'+_0xf725cf['id'],_0xf725cf);ChatInteractionEvents[_0x762f('0xc')](_0x225218,_0xf725cf);_0x2e2d09(null);})['catch'](_0x2e2d09(null));};}for(var e in events){if(events[_0x762f('0xd')](e)){var event=events[e];ChatInteraction[_0x762f('0xe')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x5209=['findAll','unreadMessages','emit','catch','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update','remove','getUsers','then','map'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x5209,0xc9));var _0x9520=function(_0x299ecf,_0x5e642b){_0x299ecf=_0x299ecf-0x0;var _0x4813c9=_0x5209[_0x299ecf];return _0x4813c9;};'use strict';var EventEmitter=require(_0x9520('0x0'));var ChatInteraction=require(_0x9520('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0x9520('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x9520('0x2')](0x0);var events={'afterCreate':_0x9520('0x3'),'afterUpdate':_0x9520('0x4'),'afterDestroy':_0x9520('0x5')};function emitEvent(_0x4bf47b){return function(_0x3e49c6,_0x2fc093,_0x9ed31b){_0x3e49c6[_0x9520('0x6')]({'attributes':['id'],'raw':!![]})[_0x9520('0x7')](function(_0x24cd13){_0x3e49c6['setDataValue']('Users',_0x24cd13[_0x9520('0x8')](function(_0xc41525){return{'id':_0xc41525['id']};}));return ChatMessage[_0x9520('0x9')]({'where':{'ChatInteractionId':_0x3e49c6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x9520('0x7')](function(_0x384d71){_0x3e49c6['setDataValue'](_0x9520('0xa'),_0x384d71['length']);ChatInteractionEvents[_0x9520('0xb')](_0x4bf47b+':'+_0x3e49c6['id'],_0x3e49c6);ChatInteractionEvents['emit'](_0x4bf47b,_0x3e49c6);_0x9ed31b(null);})[_0x9520('0xc')](_0x9ed31b(null));};}for(var e in events){if(events[_0x9520('0xd')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x9520('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index 2f66921..85a273d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a93=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./chatInteraction.attributes','define','changed','closed'];(function(_0x1a527d,_0xb9feae){var _0x3150b3=function(_0x25b7dc){while(--_0x25b7dc){_0x1a527d['push'](_0x1a527d['shift']());}};_0x3150b3(++_0xb9feae);}(_0x7a93,0xa8));var _0x37a9=function(_0x5a3ee2,_0x2018f4){_0x5a3ee2=_0x5a3ee2-0x0;var _0x52e22f=_0x7a93[_0x5a3ee2];return _0x52e22f;};'use strict';var _=require(_0x37a9('0x0'));var util=require(_0x37a9('0x1'));var logger=require(_0x37a9('0x2'))(_0x37a9('0x3'));var moment=require(_0x37a9('0x4'));var BPromise=require(_0x37a9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37a9('0x6'));var rimraf=require(_0x37a9('0x7'));var config=require('../../config/environment');var attributes=require(_0x37a9('0x8'));module['exports']=function(_0x253578,_0x6acd4a){return _0x253578[_0x37a9('0x9')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xacb914,_0x2f8375,_0x1d979f){if(_0xacb914[_0x37a9('0xa')](_0x37a9('0xb'))){_0xacb914['closedAt']=moment()[_0x37a9('0xc')](_0x37a9('0xd'));}_0x1d979f(null,_0xacb914);}},'charset':_0x37a9('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x0af5=['request-promise','../../config/environment','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','moment','bluebird'];(function(_0x10333b,_0x444d18){var _0x485c2c=function(_0x1cc41b){while(--_0x1cc41b){_0x10333b['push'](_0x10333b['shift']());}};_0x485c2c(++_0x444d18);}(_0x0af5,0x1bb));var _0x50af=function(_0x3c5187,_0x37d156){_0x3c5187=_0x3c5187-0x0;var _0x35ed86=_0x0af5[_0x3c5187];return _0x35ed86;};'use strict';var _=require(_0x50af('0x0'));var util=require(_0x50af('0x1'));var logger=require(_0x50af('0x2'))('api');var moment=require(_0x50af('0x3'));var BPromise=require(_0x50af('0x4'));var rp=require(_0x50af('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x50af('0x6'));var attributes=require('./chatInteraction.attributes');module[_0x50af('0x7')]=function(_0x14ea45,_0x2c4d5a){return _0x14ea45[_0x50af('0x8')](_0x50af('0x9'),attributes,{'tableName':_0x50af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a5311,_0x4921d8,_0x5fefcb){if(_0x3a5311[_0x50af('0xb')](_0x50af('0xc'))){_0x3a5311[_0x50af('0xd')]=moment()['format'](_0x50af('0xe'));}_0x5fefcb(null,_0x3a5311);}},'charset':_0x50af('0xf'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d4ef215..06bad4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['limit','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ChatInteraction','body','options','raw','where'];(function(_0xe8712b,_0x42aa8c){var _0xf5bcdc=function(_0x1f45fe){while(--_0x1f45fe){_0xe8712b['push'](_0xe8712b['shift']());}};_0xf5bcdc(++_0x42aa8c);}(_0x4888,0xf8));var _0x8488=function(_0x3c81b5,_0x3f5ed7){_0x3c81b5=_0x3c81b5-0x0;var _0x5888c4=_0x4888[_0x3c81b5];return _0x5888c4;};'use strict';var _=require(_0x8488('0x0'));var util=require('util');var moment=require(_0x8488('0x1'));var BPromise=require(_0x8488('0x2'));var rs=require(_0x8488('0x3'));var fs=require('fs');var Redis=require(_0x8488('0x4'));var db=require(_0x8488('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8488('0x6'))('rpc');var config=require(_0x8488('0x7'));var jayson=require(_0x8488('0x8'));var client=jayson[_0x8488('0x9')][_0x8488('0xa')]({'port':0x232a});config[_0x8488('0xb')]=_['defaults'](config[_0x8488('0xb')],{'host':_0x8488('0xc'),'port':0x18eb});var socket=require(_0x8488('0xd'))(new Redis(config[_0x8488('0xb')]));require(_0x8488('0xe'))[_0x8488('0xf')](socket);function respondWithRpcPromise(_0xc0b09b,_0x1e6339,_0x27a62a){return new BPromise(function(_0x255742,_0x3b0522){return client[_0x8488('0x10')](_0xc0b09b,_0x27a62a)[_0x8488('0x11')](function(_0x2857c3){logger['info'](_0x8488('0x12'),_0x1e6339,_0x8488('0x13'));logger[_0x8488('0x14')](_0x8488('0x15'),_0x1e6339,_0x8488('0x13'),JSON[_0x8488('0x16')](_0x2857c3));if(_0x2857c3[_0x8488('0x17')]){if(_0x2857c3[_0x8488('0x17')]['code']===0x1f4){logger[_0x8488('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1e6339,_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);return _0x3b0522(_0x2857c3['error']['message']);}logger[_0x8488('0x17')](_0x8488('0x12'),_0x1e6339,_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);return _0x255742(_0x2857c3[_0x8488('0x17')][_0x8488('0x18')]);}else{logger[_0x8488('0x19')](_0x8488('0x12'),_0x1e6339,_0x8488('0x13'));_0x255742(_0x2857c3['result'][_0x8488('0x18')]);}})[_0x8488('0x1a')](function(_0x296507){logger['error'](_0x8488('0x12'),_0x1e6339,_0x296507);_0x3b0522(_0x296507);});});}exports['UpdateChatInteraction']=function(_0x22c69b){var _0x1cb2c9=this;return new Promise(function(_0x450d16,_0x542586){return db[_0x8488('0x1b')]['update'](_0x22c69b[_0x8488('0x1c')],{'raw':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')][_0x8488('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')][_0x8488('0x1f')]||null:null,'attributes':_0x22c69b[_0x8488('0x1d')]?_0x22c69b[_0x8488('0x1d')]['attributes']||null:null,'limit':_0x22c69b['options']?_0x22c69b['options'][_0x8488('0x20')]||null:null})[_0x8488('0x11')](function(_0x5d388f){logger[_0x8488('0x19')]('UpdateChatInteraction',_0x22c69b);logger[_0x8488('0x14')]('UpdateChatInteraction',_0x22c69b,JSON[_0x8488('0x16')](_0x5d388f));_0x450d16(_0x5d388f);})['catch'](function(_0x422094){logger[_0x8488('0x17')](_0x8488('0x21'),_0x422094[_0x8488('0x18')],_0x22c69b);_0x542586(_0x1cb2c9[_0x8488('0x17')](0x1f4,_0x422094['message']));});});};exports[_0x8488('0x22')]=function(_0x576862){return new Promise(function(_0x1236c6,_0x360ff2){return db[_0x8488('0x1b')][_0x8488('0x23')]({'where':_0x576862['options']?_0x576862['options']['where']||null:null})[_0x8488('0x11')](function(_0x1a8581){if(_0x1a8581){return _0x1a8581[_0x8488('0x24')](_0x576862[_0x8488('0x1c')][_0x8488('0x25')],_[_0x8488('0x26')](_0x576862[_0x8488('0x1c')],[_0x8488('0x25'),'id'])||{});}})['spread'](function(_0x5ca3c1){logger[_0x8488('0x19')](_0x8488('0x27'),_0x576862);logger[_0x8488('0x14')](_0x8488('0x27'),_0x576862,JSON['stringify'](_0x5ca3c1));_0x1236c6(_0x5ca3c1);})['catch'](function(_0x4f7a4e){logger[_0x8488('0x17')](_0x8488('0x27'),_0x4f7a4e[_0x8488('0x18')],_0x576862);_0x360ff2(_this[_0x8488('0x17')](0x1f4,_0x4f7a4e[_0x8488('0x18')]));});});};
\ No newline at end of file
+var _0x82bc=['rpc','client','http','redis','./chatInteraction.socket','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','UpdateChatInteraction','ChatInteraction','body','options','raw','where','attributes','limit','then','AddTagsToChatInteraction','find','addTags','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x43a965,_0x3f5a5a){var _0x5c0329=function(_0xbc1243){while(--_0xbc1243){_0x43a965['push'](_0x43a965['shift']());}};_0x5c0329(++_0x3f5a5a);}(_0x82bc,0x14e));var _0xc82b=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x82bc[_0x4ff09b];return _0x3f5c2e;};'use strict';var _=require(_0xc82b('0x0'));var util=require(_0xc82b('0x1'));var moment=require('moment');var BPromise=require(_0xc82b('0x2'));var rs=require(_0xc82b('0x3'));var fs=require('fs');var Redis=require(_0xc82b('0x4'));var db=require(_0xc82b('0x5'))['db'];var utils=require(_0xc82b('0x6'));var logger=require(_0xc82b('0x7'))(_0xc82b('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc82b('0x9')][_0xc82b('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc82b('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc82b('0xc'))['register'](socket);function respondWithRpcPromise(_0x404e39,_0xbb450c,_0x473afe){return new BPromise(function(_0x162196,_0x444f47){return client['request'](_0x404e39,_0x473afe)['then'](function(_0xcb3e9f){logger['info'](_0xc82b('0xd'),_0xbb450c,_0xc82b('0xe'));logger[_0xc82b('0xf')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0xbb450c,_0xc82b('0xe'),JSON[_0xc82b('0x10')](_0xcb3e9f));if(_0xcb3e9f[_0xc82b('0x11')]){if(_0xcb3e9f[_0xc82b('0x11')][_0xc82b('0x12')]===0x1f4){logger[_0xc82b('0x11')](_0xc82b('0xd'),_0xbb450c,_0xcb3e9f[_0xc82b('0x11')][_0xc82b('0x13')]);return _0x444f47(_0xcb3e9f[_0xc82b('0x11')][_0xc82b('0x13')]);}logger[_0xc82b('0x11')]('ChatInteraction,\x20%s,\x20%s',_0xbb450c,_0xcb3e9f['error'][_0xc82b('0x13')]);return _0x162196(_0xcb3e9f[_0xc82b('0x11')][_0xc82b('0x13')]);}else{logger[_0xc82b('0x14')](_0xc82b('0xd'),_0xbb450c,_0xc82b('0xe'));_0x162196(_0xcb3e9f[_0xc82b('0x15')][_0xc82b('0x13')]);}})[_0xc82b('0x16')](function(_0x49ad59){logger[_0xc82b('0x11')](_0xc82b('0xd'),_0xbb450c,_0x49ad59);_0x444f47(_0x49ad59);});});}exports[_0xc82b('0x17')]=function(_0xd4a825){var _0x3314fd=this;return new Promise(function(_0x49d03f,_0x6736e4){return db[_0xc82b('0x18')]['update'](_0xd4a825[_0xc82b('0x19')],{'raw':_0xd4a825[_0xc82b('0x1a')]?_0xd4a825[_0xc82b('0x1a')][_0xc82b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd4a825[_0xc82b('0x1a')]?_0xd4a825['options'][_0xc82b('0x1c')]||null:null,'attributes':_0xd4a825['options']?_0xd4a825[_0xc82b('0x1a')][_0xc82b('0x1d')]||null:null,'limit':_0xd4a825[_0xc82b('0x1a')]?_0xd4a825[_0xc82b('0x1a')][_0xc82b('0x1e')]||null:null})[_0xc82b('0x1f')](function(_0x5bcc4d){logger[_0xc82b('0x14')](_0xc82b('0x17'),_0xd4a825);logger[_0xc82b('0xf')](_0xc82b('0x17'),_0xd4a825,JSON[_0xc82b('0x10')](_0x5bcc4d));_0x49d03f(_0x5bcc4d);})[_0xc82b('0x16')](function(_0x3b281a){logger[_0xc82b('0x11')]('UpdateChatInteraction',_0x3b281a[_0xc82b('0x13')],_0xd4a825);_0x6736e4(_0x3314fd['error'](0x1f4,_0x3b281a[_0xc82b('0x13')]));});});};exports[_0xc82b('0x20')]=function(_0x477ee2){return new Promise(function(_0x150766,_0x20f102){return db[_0xc82b('0x18')][_0xc82b('0x21')]({'where':_0x477ee2[_0xc82b('0x1a')]?_0x477ee2[_0xc82b('0x1a')][_0xc82b('0x1c')]||null:null})['then'](function(_0x5a2d05){if(_0x5a2d05){return _0x5a2d05[_0xc82b('0x22')](_0x477ee2['body'][_0xc82b('0x23')],_['omit'](_0x477ee2['body'],['ids','id'])||{});}})[_0xc82b('0x24')](function(_0x4bdda2){logger['info']('AddTags',_0x477ee2);logger[_0xc82b('0xf')](_0xc82b('0x25'),_0x477ee2,JSON[_0xc82b('0x10')](_0x4bdda2));_0x150766(_0x4bdda2);})[_0xc82b('0x16')](function(_0x1fd03b){logger[_0xc82b('0x11')]('AddTags',_0x1fd03b[_0xc82b('0x13')],_0x477ee2);_0x20f102(_this[_0xc82b('0x11')](0x1f4,_0x1fd03b[_0xc82b('0x13')]));});});};
\ No newline at end of file
index 5929ecf..4ae4517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf63f=['./chatInteraction.events','remove','update','emit','removeListener','register','length','chatInteraction:'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0xf63f,0xf8));var _0xff63=function(_0x5e8324,_0x475ba7){_0x5e8324=_0x5e8324-0x0;var _0x4b4806=_0xf63f[_0x5e8324];return _0x4b4806;};'use strict';var ChatInteractionEvents=require(_0xff63('0x0'));var events=['save',_0xff63('0x1'),_0xff63('0x2')];function createListener(_0x24ef73,_0x417ac5){return function(_0x13d576){_0x417ac5[_0xff63('0x3')](_0x24ef73,_0x13d576);};}function removeListener(_0x287c04,_0x6245e7){return function(){ChatInteractionEvents[_0xff63('0x4')](_0x287c04,_0x6245e7);};}exports[_0xff63('0x5')]=function(_0x5560b7){for(var _0x344e0d=0x0,_0x2b593c=events[_0xff63('0x6')];_0x344e0d<_0x2b593c;_0x344e0d++){var _0x54d1dc=events[_0x344e0d];var _0x99e266=createListener(_0xff63('0x7')+_0x54d1dc,_0x5560b7);ChatInteractionEvents['on'](_0x54d1dc,_0x99e266);}};
\ No newline at end of file
+var _0x30cf=['update','emit','removeListener','register','length','chatInteraction:','./chatInteraction.events'];(function(_0x30ee8b,_0x25ec9d){var _0x102ea5=function(_0x520535){while(--_0x520535){_0x30ee8b['push'](_0x30ee8b['shift']());}};_0x102ea5(++_0x25ec9d);}(_0x30cf,0x1bf));var _0xf30c=function(_0x1fd840,_0x16cd04){_0x1fd840=_0x1fd840-0x0;var _0x43e2a5=_0x30cf[_0x1fd840];return _0x43e2a5;};'use strict';var ChatInteractionEvents=require(_0xf30c('0x0'));var events=['save','remove',_0xf30c('0x1')];function createListener(_0x1b3406,_0x3c8193){return function(_0x439beb){_0x3c8193[_0xf30c('0x2')](_0x1b3406,_0x439beb);};}function removeListener(_0x2a792f,_0x28ab6e){return function(){ChatInteractionEvents[_0xf30c('0x3')](_0x2a792f,_0x28ab6e);};}exports[_0xf30c('0x4')]=function(_0x594b71){for(var _0x30126a=0x0,_0x4a8855=events[_0xf30c('0x5')];_0x30126a<_0x4a8855;_0x30126a++){var _0x38b81d=events[_0x30126a];var _0x48c75d=createListener(_0xf30c('0x6')+_0x38b81d,_0x594b71);ChatInteractionEvents['on'](_0x38b81d,_0x48c75d);}};
\ No newline at end of file
index dadb8a1..3d0a2b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb338=['download','post','createVidaooSession','diskStorage','root','server/files/attachments/','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','update','put','customUpdate','/:id/abandon','/:id/close','delete','chatinteraction:destroy','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','isAuthenticated','/:id/my_messages','getMyMessages','/:id/download'];(function(_0x36c53b,_0x46c8a2){var _0x49dc1d=function(_0x5820b6){while(--_0x5820b6){_0x36c53b['push'](_0x36c53b['shift']());}};_0x49dc1d(++_0x46c8a2);}(_0xb338,0x10c));var _0x8b33=function(_0x34d6bd,_0x55b744){_0x34d6bd=_0x34d6bd-0x0;var _0x248396=_0xb338[_0x34d6bd];return _0x248396;};'use strict';var multer=require(_0x8b33('0x0'));var util=require('util');var path=require(_0x8b33('0x1'));var timeout=require(_0x8b33('0x2'));var express=require(_0x8b33('0x3'));var router=express[_0x8b33('0x4')]();var fs_extra=require(_0x8b33('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b33('0x6'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x8b33('0x7')]('/',auth['isAuthenticated'](),controller[_0x8b33('0x8')]);router[_0x8b33('0x7')](_0x8b33('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x8b33('0x7')](_0x8b33('0xa'),auth[_0x8b33('0xb')](),controller[_0x8b33('0xc')]);router[_0x8b33('0x7')](_0x8b33('0xd'),auth[_0x8b33('0xb')](),controller[_0x8b33('0xe')]);router[_0x8b33('0x7')](_0x8b33('0xf'),auth[_0x8b33('0x10')](),controller['getMessages']);router['get'](_0x8b33('0x11'),auth[_0x8b33('0xb')](),controller[_0x8b33('0x12')]);router[_0x8b33('0x7')](_0x8b33('0x13'),auth['isAuthenticated'](),controller[_0x8b33('0x14')]);router['post']('/',auth[_0x8b33('0x10')](),controller['create']);router[_0x8b33('0x15')]('/:id/vidaoo',auth[_0x8b33('0x10')](),controller[_0x8b33('0x16')]);var upload=multer({'storage':multer[_0x8b33('0x17')]({'destination':function(_0x50a80e,_0x10fcc3,_0x467bb3){_0x467bb3(null,path['join'](config[_0x8b33('0x18')],_0x8b33('0x19')));},'filename':function(_0x21f6ec,_0x164ac9,_0x3e0a0a){_0x3e0a0a(null,util['format'](_0x8b33('0x1a'),Date[_0x8b33('0x1b')](),_0x164ac9[_0x8b33('0x1c')][_0x8b33('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x8b33('0x15')](_0x8b33('0x1e'),upload[_0x8b33('0x1f')](_0x8b33('0x20')),controller[_0x8b33('0x21')]);router[_0x8b33('0x15')](_0x8b33('0xf'),auth['isChatInteractionAuthorized'](),controller[_0x8b33('0x22')]);router[_0x8b33('0x15')](_0x8b33('0x23'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),_0x8b33('0x26')),controller['addTags']);router['put'](_0x8b33('0xa'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),'chatinteraction:update'),controller[_0x8b33('0x27')]);router[_0x8b33('0x28')]('/:id/custom_update',controller[_0x8b33('0x29')]);router[_0x8b33('0x28')](_0x8b33('0x2a'),auth[_0x8b33('0xb')](),controller['abandon']);router[_0x8b33('0x28')](_0x8b33('0x2b'),controller['close']);router[_0x8b33('0x2c')](_0x8b33('0xa'),auth[_0x8b33('0x10')](),interaction[_0x8b33('0x24')](_0x8b33('0x25'),_0x8b33('0x2d')),controller[_0x8b33('0x2e')]);router[_0x8b33('0x2c')](_0x8b33('0x23'),auth[_0x8b33('0x10')](),controller['removeTags']);module[_0x8b33('0x2f')]=router;
\ No newline at end of file
+var _0xcc76=['originalname','file','attachmentUpload','addMessage','/:id/tags','tracked','chatinteraction:addtags','addTags','put','chat','chatinteraction:update','/:id/custom_update','customUpdate','/:id/abandon','abandon','close','chatinteraction:destroy','destroy','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatInteraction.controller','get','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','join','root','server/files/attachments/','now'];(function(_0x33f01a,_0x5c5d72){var _0x7855bf=function(_0x14fff3){while(--_0x14fff3){_0x33f01a['push'](_0x33f01a['shift']());}};_0x7855bf(++_0x5c5d72);}(_0xcc76,0x1ac));var _0x6cc7=function(_0x370502,_0x2b7963){_0x370502=_0x370502-0x0;var _0x1e1455=_0xcc76[_0x370502];return _0x1e1455;};'use strict';var multer=require(_0x6cc7('0x0'));var util=require(_0x6cc7('0x1'));var path=require(_0x6cc7('0x2'));var timeout=require(_0x6cc7('0x3'));var express=require(_0x6cc7('0x4'));var router=express[_0x6cc7('0x5')]();var fs_extra=require(_0x6cc7('0x6'));var auth=require(_0x6cc7('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6cc7('0x8'));router[_0x6cc7('0x9')]('/',auth[_0x6cc7('0xa')](),controller[_0x6cc7('0xb')]);router[_0x6cc7('0x9')]('/describe',auth[_0x6cc7('0xa')](),controller[_0x6cc7('0xc')]);router[_0x6cc7('0x9')](_0x6cc7('0xd'),auth[_0x6cc7('0xe')](),controller[_0x6cc7('0xf')]);router[_0x6cc7('0x9')](_0x6cc7('0x10'),auth[_0x6cc7('0xe')](),controller[_0x6cc7('0x11')]);router[_0x6cc7('0x9')](_0x6cc7('0x12'),auth['isAuthenticated'](),controller[_0x6cc7('0x13')]);router[_0x6cc7('0x9')]('/:id/my_messages',auth[_0x6cc7('0xe')](),controller[_0x6cc7('0x14')]);router['get'](_0x6cc7('0x15'),auth['isAuthenticated'](),controller[_0x6cc7('0x16')]);router[_0x6cc7('0x17')]('/',auth[_0x6cc7('0xa')](),controller[_0x6cc7('0x18')]);router['post'](_0x6cc7('0x19'),auth['isAuthenticated'](),controller[_0x6cc7('0x1a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x400768,_0x5d4798,_0x1a365e){_0x1a365e(null,path[_0x6cc7('0x1b')](config[_0x6cc7('0x1c')],_0x6cc7('0x1d')));},'filename':function(_0x4027a9,_0x48283d,_0x3d3fe1){_0x3d3fe1(null,util['format']('%s-%s',Date[_0x6cc7('0x1e')](),_0x48283d[_0x6cc7('0x1f')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x6cc7('0x17')]('/:id/attachment_upload',upload['single'](_0x6cc7('0x20')),controller[_0x6cc7('0x21')]);router[_0x6cc7('0x17')](_0x6cc7('0x12'),auth[_0x6cc7('0xe')](),controller[_0x6cc7('0x22')]);router[_0x6cc7('0x17')](_0x6cc7('0x23'),auth[_0x6cc7('0xa')](),interaction[_0x6cc7('0x24')]('chat',_0x6cc7('0x25')),controller[_0x6cc7('0x26')]);router[_0x6cc7('0x27')](_0x6cc7('0xd'),auth[_0x6cc7('0xa')](),interaction['tracked'](_0x6cc7('0x28'),_0x6cc7('0x29')),controller['update']);router['put'](_0x6cc7('0x2a'),controller[_0x6cc7('0x2b')]);router[_0x6cc7('0x27')](_0x6cc7('0x2c'),auth['isChatInteractionAuthorized'](),controller[_0x6cc7('0x2d')]);router[_0x6cc7('0x27')]('/:id/close',controller[_0x6cc7('0x2e')]);router['delete'](_0x6cc7('0xd'),auth[_0x6cc7('0xa')](),interaction['tracked'](_0x6cc7('0x28'),_0x6cc7('0x2f')),controller[_0x6cc7('0x30')]);router[_0x6cc7('0x31')](_0x6cc7('0x23'),auth['isAuthenticated'](),controller['removeTags']);module[_0x6cc7('0x32')]=router;
\ No newline at end of file
index dce8975..2fd933f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e6c=['exports','medium','INTEGER','sequelize'];(function(_0x4a35de,_0x302e63){var _0x6463d3=function(_0x339663){while(--_0x339663){_0x4a35de['push'](_0x4a35de['shift']());}};_0x6463d3(++_0x302e63);}(_0x8e6c,0x117));var _0xc8e6=function(_0x46c6d1,_0x1f5f28){_0x46c6d1=_0x46c6d1-0x0;var _0x3cbf54=_0x8e6c[_0x46c6d1];return _0x3cbf54;};'use strict';var Sequelize=require(_0xc8e6('0x0'));module[_0xc8e6('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc8e6('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xc8e6('0x3')]}};
\ No newline at end of file
+var _0x1214=['sequelize','exports','BOOLEAN','INTEGER'];(function(_0x1ac468,_0x4989ca){var _0x424336=function(_0x23c451){while(--_0x23c451){_0x1ac468['push'](_0x1ac468['shift']());}};_0x424336(++_0x4989ca);}(_0x1214,0x164));var _0x4121=function(_0x49ccaa,_0x5944f2){_0x49ccaa=_0x49ccaa-0x0;var _0x2c1ae1=_0x1214[_0x49ccaa];return _0x2c1ae1;};'use strict';var Sequelize=require(_0x4121('0x0'));module[_0x4121('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x4121('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x4121('0x3')]}};
\ No newline at end of file
index 4348e1a..0f82a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbafe=['Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','isEmpty','resourceId','push','createdAt','ToId','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','ChatInternalMessage','includeAll','include','findAll','rows','catch','length','find','create','body','params','describe','get','messages','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','-online','VoiceQueue'];(function(_0x4d6481,_0x537a88){var _0xb19a68=function(_0x5f1218){while(--_0x5f1218){_0x4d6481['push'](_0x4d6481['shift']());}};_0xb19a68(++_0x537a88);}(_0xbafe,0x1b1));var _0xebaf=function(_0x390034,_0x3a2582){_0x390034=_0x390034-0x0;var _0x48c0d3=_0xbafe[_0x390034];return _0x48c0d3;};'use strict';var emlformat=require(_0xebaf('0x0'));var rimraf=require(_0xebaf('0x1'));var zipdir=require(_0xebaf('0x2'));var jsonpatch=require(_0xebaf('0x3'));var rp=require('request-promise');var moment=require(_0xebaf('0x4'));var BPromise=require(_0xebaf('0x5'));var Mustache=require('mustache');var util=require(_0xebaf('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xebaf('0x7'));var ejs=require(_0xebaf('0x8'));var fs=require('fs');var fs_extra=require(_0xebaf('0x9'));var _=require(_0xebaf('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xebaf('0xb'));var deskjs=require(_0xebaf('0xc'));var toCsv=require('to-csv');var querystring=require(_0xebaf('0xd'));var Papa=require('papaparse');var Redis=require(_0xebaf('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xebaf('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xebaf('0x10'))(_0xebaf('0x11'));var utils=require('../../config/utils');var config=require(_0xebaf('0x12'));var licenseUtil=require(_0xebaf('0x13'));var db=require(_0xebaf('0x14'))['db'];config[_0xebaf('0x15')]=_[_0xebaf('0x16')](config[_0xebaf('0x15')],{'host':_0xebaf('0x17'),'port':0x18eb});var socket=require(_0xebaf('0x18'))(new Redis(config['redis']));require(_0xebaf('0x19'))[_0xebaf('0x1a')](socket);function respondWithStatusCode(_0x2be694,_0x33ec95){_0x33ec95=_0x33ec95||0xcc;return function(_0x370947){if(_0x370947){return _0x2be694[_0xebaf('0x1b')](_0x33ec95);}return _0x2be694['status'](_0x33ec95)[_0xebaf('0x1c')]();};}function respondWithResult(_0x44b0a3,_0xcc2931){_0xcc2931=_0xcc2931||0xc8;return function(_0x25ce47){if(_0x25ce47){return _0x44b0a3['status'](_0xcc2931)[_0xebaf('0x1d')](_0x25ce47);}};}function respondWithFilteredResult(_0xb11eac,_0x182765){return function(_0x32b9a5){if(_0x32b9a5){var _0x2bac8a=typeof _0x182765['offset']===_0xebaf('0x1e')&&typeof _0x182765[_0xebaf('0x1f')]===_0xebaf('0x1e');var _0x3a2f70=_0x32b9a5[_0xebaf('0x20')];var _0x41ba63=_0x2bac8a?0x0:_0x182765['offset'];var _0x36259b=_0x2bac8a?_0x32b9a5[_0xebaf('0x20')]:_0x182765[_0xebaf('0x21')]+_0x182765['limit'];var _0x5be6f4;if(_0x36259b>=_0x3a2f70){_0x36259b=_0x3a2f70;_0x5be6f4=0xc8;}else{_0x5be6f4=0xce;}_0xb11eac[_0xebaf('0x22')](_0x5be6f4);return _0xb11eac[_0xebaf('0x23')](_0xebaf('0x24'),_0x41ba63+'-'+_0x36259b+'/'+_0x3a2f70)[_0xebaf('0x1d')](_0x32b9a5);}return null;};}function patchUpdates(_0x2e185d){return function(_0x59b397){try{jsonpatch[_0xebaf('0x25')](_0x59b397,_0x2e185d,!![]);}catch(_0x79076c){return BPromise[_0xebaf('0x26')](_0x79076c);}return _0x59b397[_0xebaf('0x27')]();};}function saveUpdates(_0x4a5ddc,_0xf0522d){return function(_0x57fff3){if(_0x57fff3){return _0x57fff3[_0xebaf('0x28')](_0x4a5ddc)[_0xebaf('0x29')](function(_0x19e39d){return _0x19e39d;});}return null;};}function removeEntity(_0x5d6bd7,_0x134c2f){return function(_0x1ac766){if(_0x1ac766){return _0x1ac766[_0xebaf('0x2a')]()[_0xebaf('0x29')](function(){_0x5d6bd7[_0xebaf('0x22')](0xcc)[_0xebaf('0x1c')]();});}};}function handleEntityNotFound(_0xf0c2b1,_0x35dfb7){return function(_0x340a96){if(!_0x340a96){_0xf0c2b1[_0xebaf('0x1b')](0x194);}return _0x340a96;};}function handleError(_0x2a7cb2,_0x49f88c){_0x49f88c=_0x49f88c||0x1f4;return function(_0x4952a5){logger[_0xebaf('0x2b')](_0x4952a5[_0xebaf('0x2c')]);if(_0x4952a5[_0xebaf('0x2d')]){delete _0x4952a5[_0xebaf('0x2d')];}_0x2a7cb2[_0xebaf('0x22')](_0x49f88c)['send'](_0x4952a5);};}exports['index']=function(_0x5c9344,_0x147a93){var _0x5d0d71={},_0xdbded8={},_0x41ef62={'count':0x0,'rows':[]};var _0x378812=_[_0xebaf('0x2e')](db['ChatInternalMessage'][_0xebaf('0x2f')],function(_0x79bff){return{'name':_0x79bff[_0xebaf('0x30')],'type':_0x79bff[_0xebaf('0x31')][_0xebaf('0x32')]};});_0xdbded8[_0xebaf('0x33')]=_[_0xebaf('0x2e')](_0x378812,_0xebaf('0x2d'));_0xdbded8['query']=_[_0xebaf('0x34')](_0x5c9344[_0xebaf('0x35')]);_0xdbded8[_0xebaf('0x36')]=_['intersection'](_0xdbded8[_0xebaf('0x33')],_0xdbded8['query']);_0x5d0d71[_0xebaf('0x37')]=_[_0xebaf('0x38')](_0xdbded8[_0xebaf('0x33')],qs[_0xebaf('0x39')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x39')]));_0x5d0d71['attributes']=_0x5d0d71[_0xebaf('0x37')]['length']?_0x5d0d71['attributes']:_0xdbded8['model'];if(!_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3a')](_0xebaf('0x3b'))){_0x5d0d71[_0xebaf('0x1f')]=qs[_0xebaf('0x1f')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x1f')]);_0x5d0d71[_0xebaf('0x21')]=qs[_0xebaf('0x21')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x21')]);}_0x5d0d71[_0xebaf('0x3c')]=qs[_0xebaf('0x3d')](_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3d')]);_0x5d0d71[_0xebaf('0x3e')]=qs[_0xebaf('0x36')](_['pick'](_0x5c9344[_0xebaf('0x35')],_0xdbded8[_0xebaf('0x36')]),_0x378812);if(_0x5c9344[_0xebaf('0x35')][_0xebaf('0x3f')]){_0x5d0d71[_0xebaf('0x3e')]=_['merge'](_0x5d0d71[_0xebaf('0x3e')],{'$or':_[_0xebaf('0x2e')](_0x378812,function(_0x33357b){if(_0x33357b[_0xebaf('0x31')]!==_0xebaf('0x40')){var _0x52f154={};_0x52f154[_0x33357b[_0xebaf('0x2d')]]={'$like':'%'+_0x5c9344[_0xebaf('0x35')]['filter']+'%'};return _0x52f154;}})});}_0x5d0d71=_[_0xebaf('0x41')]({},_0x5d0d71,_0x5c9344[_0xebaf('0x42')]);var _0x4f3add={'where':_0x5d0d71['where']};return db[_0xebaf('0x43')][_0xebaf('0x20')](_0x4f3add)[_0xebaf('0x29')](function(_0x38091){_0x41ef62['count']=_0x38091;if(_0x5c9344[_0xebaf('0x35')][_0xebaf('0x44')]){_0x5d0d71[_0xebaf('0x45')]=[{'all':!![]}];}return db[_0xebaf('0x43')][_0xebaf('0x46')](_0x5d0d71);})[_0xebaf('0x29')](function(_0x5bd43c){_0x41ef62[_0xebaf('0x47')]=_0x5bd43c;return _0x41ef62;})[_0xebaf('0x29')](respondWithFilteredResult(_0x147a93,_0x5d0d71))[_0xebaf('0x48')](handleError(_0x147a93,null));};exports['show']=function(_0x15c0d7,_0x4fb043){var _0x224acc={'raw':!![],'where':{'id':_0x15c0d7['params']['id']}},_0x30442d={};_0x30442d['model']=_[_0xebaf('0x34')](db[_0xebaf('0x43')][_0xebaf('0x2f')]);_0x30442d['query']=_[_0xebaf('0x34')](_0x15c0d7[_0xebaf('0x35')]);_0x30442d[_0xebaf('0x36')]=_['intersection'](_0x30442d[_0xebaf('0x33')],_0x30442d[_0xebaf('0x35')]);_0x224acc[_0xebaf('0x37')]=_[_0xebaf('0x38')](_0x30442d[_0xebaf('0x33')],qs['fields'](_0x15c0d7[_0xebaf('0x35')][_0xebaf('0x39')]));_0x224acc[_0xebaf('0x37')]=_0x224acc[_0xebaf('0x37')][_0xebaf('0x49')]?_0x224acc[_0xebaf('0x37')]:_0x30442d[_0xebaf('0x33')];if(_0x15c0d7['query'][_0xebaf('0x44')]){_0x224acc[_0xebaf('0x45')]=[{'all':!![]}];}_0x224acc=_[_0xebaf('0x41')]({},_0x224acc,_0x15c0d7[_0xebaf('0x42')]);return db[_0xebaf('0x43')][_0xebaf('0x4a')](_0x224acc)[_0xebaf('0x29')](handleEntityNotFound(_0x4fb043,null))[_0xebaf('0x29')](respondWithResult(_0x4fb043,null))['catch'](handleError(_0x4fb043,null));};exports[_0xebaf('0x4b')]=function(_0x4cd5c5,_0x23ee2d){return db[_0xebaf('0x43')]['create'](_0x4cd5c5[_0xebaf('0x4c')],{})['then'](respondWithResult(_0x23ee2d,0xc9))[_0xebaf('0x48')](handleError(_0x23ee2d,null));};exports[_0xebaf('0x28')]=function(_0xedcf0e,_0x21d0e6){if(_0xedcf0e['body']['id']){delete _0xedcf0e[_0xebaf('0x4c')]['id'];}return db[_0xebaf('0x43')][_0xebaf('0x4a')]({'where':{'id':_0xedcf0e[_0xebaf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x21d0e6,null))[_0xebaf('0x29')](saveUpdates(_0xedcf0e[_0xebaf('0x4c')],null))[_0xebaf('0x29')](respondWithResult(_0x21d0e6,null))['catch'](handleError(_0x21d0e6,null));};exports[_0xebaf('0x2a')]=function(_0x505486,_0x199d2d){return db[_0xebaf('0x43')]['find']({'where':{'id':_0x505486['params']['id']}})[_0xebaf('0x29')](handleEntityNotFound(_0x199d2d,null))[_0xebaf('0x29')](removeEntity(_0x199d2d,null))[_0xebaf('0x48')](handleError(_0x199d2d,null));};exports[_0xebaf('0x4e')]=function(_0x1dfa6c,_0xb7b4b5){return db[_0xebaf('0x43')][_0xebaf('0x4e')]()[_0xebaf('0x29')](respondWithResult(_0xb7b4b5,null))[_0xebaf('0x48')](handleError(_0xb7b4b5,null));};function wrapUser(_0x1ee989){return function(_0x7f2cad){var _0x1eb2dc=_0x1ee989[_0xebaf('0x4f')]({'plain':!![]});_0x1eb2dc[_0xebaf('0x50')]=[];if(_0x7f2cad){_0x1eb2dc[_0xebaf('0x51')]=_0x7f2cad['createdAt'];_0x1eb2dc['lastMessage']=_0x7f2cad;}else{_0x1eb2dc[_0xebaf('0x51')]=moment(0x0)[_0xebaf('0x52')](_0xebaf('0x53'));_0x1eb2dc[_0xebaf('0x54')]={};}return _0x1eb2dc;};}exports[_0xebaf('0x55')]=function(_0x14c25c,_0x3c75b6,_0x3f01fb){var _0x24cc9d=[];return db['User']['findAll']({'where':{'role':[_0xebaf('0x56'),_0xebaf('0x57'),_0xebaf('0x58')]},'attributes':['id',_0xebaf('0x59'),_0xebaf('0x2d'),_0xebaf('0x5a'),_0xebaf('0x5b'),_0xebaf('0x5c'),_0xebaf('0x5d'),_0xebaf('0x5e'),'allowmessenger','showWebBar'],'order':qs[_0xebaf('0x3d')](_0xebaf('0x5f')),'include':[{'model':db[_0xebaf('0x60')],'as':'VoiceQueues','attributes':['id',_0xebaf('0x2d'),_0xebaf('0x31')],'through':{'attributes':[]}}]})[_0xebaf('0x29')](function(_0x539f25){if(_0x539f25){var _0x48ea67=_0x14c25c[_0xebaf('0x58')][_0xebaf('0x4f')]({'plain':!![]});if(!_0x48ea67)throw new Error(_0xebaf('0x61'));if(_0x48ea67['role']==='user'){return db[_0xebaf('0x62')][_0xebaf('0x4a')]({'where':{'name':_0xebaf('0x63'),'userProfileId':_0x48ea67['userProfileId']},'raw':!![]})[_0xebaf('0x29')](function(_0x4e0a3b){if(_0x4e0a3b){if(_0x4e0a3b[_0xebaf('0x64')]===0x0){return db['UserProfileResource'][_0xebaf('0x46')]({'where':{'sectionId':_0x4e0a3b['id']},'raw':!![]})[_0xebaf('0x29')](function(_0x1a194c){var _0x53a62b=[];if(_[_0xebaf('0x65')](_0x1a194c)){_0x53a62b=_[_0xebaf('0x3f')](_0x539f25,function(_0x4429f3){if(_0x4429f3['role']!==_0xebaf('0x56')){return _0x4429f3;}});return _0x53a62b;}else{for(var _0x5acb8c=0x0;_0x5acb8c<_0x539f25[_0xebaf('0x49')];_0x5acb8c++){var _0x38befe=_0x539f25[_0x5acb8c];if(_0x38befe[_0xebaf('0x5a')]==='agent'){var _0x3af0b6=_[_0xebaf('0x4a')](_0x1a194c,function(_0x2503c3){return _0x2503c3[_0xebaf('0x66')]===_0x38befe['id'];});if(_0x3af0b6)_0x53a62b[_0xebaf('0x67')](_0x38befe);}else{_0x53a62b[_0xebaf('0x67')](_0x38befe);}}return _0x53a62b;}});}else{return _0x539f25;}}else{var _0x1250a2=_[_0xebaf('0x3f')](_0x539f25,function(_0x49fd38){if(_0x49fd38['role']!==_0xebaf('0x56')){return _0x49fd38;}});return _0x1250a2;}});}else{return _0x539f25;}}})[_0xebaf('0x29')](function(_0x4285c6){var _0x52928d=[];if(_0x4285c6){_0x24cc9d=_0x4285c6;for(var _0x3fe39a=0x0;_0x3fe39a<_0x4285c6['length'];_0x3fe39a+=0x1){_0x24cc9d[_0x3fe39a]['messages']=[];_0x52928d[_0xebaf('0x67')](db[_0xebaf('0x43')][_0xebaf('0x4a')]({'where':{'FromId':[_0x14c25c[_0xebaf('0x58')]['id'],_0x4285c6[_0x3fe39a]['id']],'ToId':[_0x14c25c[_0xebaf('0x58')]['id'],_0x4285c6[_0x3fe39a]['id']],'ChatGroupId':null},'attributes':['id',_0xebaf('0x68'),'FromId',_0xebaf('0x69'),'read','body'],'order':qs[_0xebaf('0x3d')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xebaf('0x29')](wrapUser(_0x4285c6[_0x3fe39a])));}return BPromise['all'](_0x52928d);}return[];})[_0xebaf('0x29')](function(_0x416a1e){return{'rows':_0x416a1e,'count':_0x416a1e[_0xebaf('0x49')]};})[_0xebaf('0x29')](respondWithResult(_0x3c75b6,null))['catch'](handleError(_0x3c75b6,null));};
\ No newline at end of file
+var _0x54b9=['Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','type','query','keys','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','create','body','find','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','findAll','agent','admin','user','fullname','internal','online','lastLoginAt','allowmessenger','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','UserProfileResource','isEmpty','length','resourceId','push','FromId','ToId','read','-createdAt','all','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','limit','count','offset','set'];(function(_0x5994dc,_0x5f5517){var _0x568775=function(_0x4f75f8){while(--_0x4f75f8){_0x5994dc['push'](_0x5994dc['shift']());}};_0x568775(++_0x5f5517);}(_0x54b9,0xb8));var _0x954b=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x54b9[_0x618414];return _0x21c19a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x954b('0x0'));var jsonpatch=require(_0x954b('0x1'));var rp=require('request-promise');var moment=require(_0x954b('0x2'));var BPromise=require(_0x954b('0x3'));var Mustache=require(_0x954b('0x4'));var util=require(_0x954b('0x5'));var path=require(_0x954b('0x6'));var sox=require('sox');var csv=require(_0x954b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x954b('0x8'));var _=require(_0x954b('0x9'));var squel=require('squel');var crypto=require(_0x954b('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x954b('0xb'));var toCsv=require(_0x954b('0x7'));var querystring=require(_0x954b('0xc'));var Papa=require(_0x954b('0xd'));var Redis=require(_0x954b('0xe'));var authService=require(_0x954b('0xf'));var qs=require(_0x954b('0x10'));var as=require(_0x954b('0x11'));var hardwareService=require(_0x954b('0x12'));var logger=require(_0x954b('0x13'))('api');var utils=require(_0x954b('0x14'));var config=require(_0x954b('0x15'));var licenseUtil=require(_0x954b('0x16'));var db=require(_0x954b('0x17'))['db'];config[_0x954b('0x18')]=_[_0x954b('0x19')](config[_0x954b('0x18')],{'host':_0x954b('0x1a'),'port':0x18eb});var socket=require(_0x954b('0x1b'))(new Redis(config[_0x954b('0x18')]));require('./chatInternalMessage.socket')[_0x954b('0x1c')](socket);function respondWithStatusCode(_0x512c44,_0x581747){_0x581747=_0x581747||0xcc;return function(_0x39a52f){if(_0x39a52f){return _0x512c44[_0x954b('0x1d')](_0x581747);}return _0x512c44[_0x954b('0x1e')](_0x581747)[_0x954b('0x1f')]();};}function respondWithResult(_0xcbf5f,_0x21fd3a){_0x21fd3a=_0x21fd3a||0xc8;return function(_0x5ec6db){if(_0x5ec6db){return _0xcbf5f['status'](_0x21fd3a)[_0x954b('0x20')](_0x5ec6db);}};}function respondWithFilteredResult(_0x3dbd06,_0xc827f7){return function(_0x3c38ea){if(_0x3c38ea){var _0x7a4673=typeof _0xc827f7['offset']===_0x954b('0x21')&&typeof _0xc827f7[_0x954b('0x22')]===_0x954b('0x21');var _0x1aede3=_0x3c38ea[_0x954b('0x23')];var _0x5489b9=_0x7a4673?0x0:_0xc827f7[_0x954b('0x24')];var _0x22e2e7=_0x7a4673?_0x3c38ea['count']:_0xc827f7[_0x954b('0x24')]+_0xc827f7[_0x954b('0x22')];var _0x19cd2b;if(_0x22e2e7>=_0x1aede3){_0x22e2e7=_0x1aede3;_0x19cd2b=0xc8;}else{_0x19cd2b=0xce;}_0x3dbd06[_0x954b('0x1e')](_0x19cd2b);return _0x3dbd06[_0x954b('0x25')](_0x954b('0x26'),_0x5489b9+'-'+_0x22e2e7+'/'+_0x1aede3)[_0x954b('0x20')](_0x3c38ea);}return null;};}function patchUpdates(_0x2b2363){return function(_0x1f5d15){try{jsonpatch[_0x954b('0x27')](_0x1f5d15,_0x2b2363,!![]);}catch(_0x53cc66){return BPromise[_0x954b('0x28')](_0x53cc66);}return _0x1f5d15[_0x954b('0x29')]();};}function saveUpdates(_0x46a5c4,_0x5ba814){return function(_0xf216b8){if(_0xf216b8){return _0xf216b8['update'](_0x46a5c4)[_0x954b('0x2a')](function(_0x2dd9c2){return _0x2dd9c2;});}return null;};}function removeEntity(_0x5eafdf,_0x7e1d1f){return function(_0xe88b25){if(_0xe88b25){return _0xe88b25[_0x954b('0x2b')]()[_0x954b('0x2a')](function(){_0x5eafdf[_0x954b('0x1e')](0xcc)[_0x954b('0x1f')]();});}};}function handleEntityNotFound(_0x2b7e1a,_0x4366a3){return function(_0x1c53b5){if(!_0x1c53b5){_0x2b7e1a[_0x954b('0x1d')](0x194);}return _0x1c53b5;};}function handleError(_0x136355,_0x2f916b){_0x2f916b=_0x2f916b||0x1f4;return function(_0xf39342){logger[_0x954b('0x2c')](_0xf39342[_0x954b('0x2d')]);if(_0xf39342['name']){delete _0xf39342[_0x954b('0x2e')];}_0x136355[_0x954b('0x1e')](_0x2f916b)[_0x954b('0x2f')](_0xf39342);};}exports[_0x954b('0x30')]=function(_0x5eeb98,_0x45eedd){var _0x4b9ab5={},_0x27815e={},_0x124330={'count':0x0,'rows':[]};var _0x4548a2=_[_0x954b('0x31')](db[_0x954b('0x32')][_0x954b('0x33')],function(_0x57c6d9){return{'name':_0x57c6d9['fieldName'],'type':_0x57c6d9[_0x954b('0x34')]['key']};});_0x27815e['model']=_['map'](_0x4548a2,_0x954b('0x2e'));_0x27815e[_0x954b('0x35')]=_[_0x954b('0x36')](_0x5eeb98[_0x954b('0x35')]);_0x27815e['filters']=_[_0x954b('0x37')](_0x27815e['model'],_0x27815e[_0x954b('0x35')]);_0x4b9ab5[_0x954b('0x38')]=_['intersection'](_0x27815e[_0x954b('0x39')],qs[_0x954b('0x3a')](_0x5eeb98['query'][_0x954b('0x3a')]));_0x4b9ab5['attributes']=_0x4b9ab5[_0x954b('0x38')]['length']?_0x4b9ab5[_0x954b('0x38')]:_0x27815e[_0x954b('0x39')];if(!_0x5eeb98[_0x954b('0x35')][_0x954b('0x3b')](_0x954b('0x3c'))){_0x4b9ab5[_0x954b('0x22')]=qs['limit'](_0x5eeb98[_0x954b('0x35')][_0x954b('0x22')]);_0x4b9ab5[_0x954b('0x24')]=qs[_0x954b('0x24')](_0x5eeb98['query'][_0x954b('0x24')]);}_0x4b9ab5[_0x954b('0x3d')]=qs['sort'](_0x5eeb98['query'][_0x954b('0x3e')]);_0x4b9ab5[_0x954b('0x3f')]=qs[_0x954b('0x40')](_[_0x954b('0x41')](_0x5eeb98['query'],_0x27815e[_0x954b('0x40')]),_0x4548a2);if(_0x5eeb98[_0x954b('0x35')][_0x954b('0x42')]){_0x4b9ab5[_0x954b('0x3f')]=_[_0x954b('0x43')](_0x4b9ab5[_0x954b('0x3f')],{'$or':_[_0x954b('0x31')](_0x4548a2,function(_0x2eb7d6){if(_0x2eb7d6[_0x954b('0x34')]!==_0x954b('0x44')){var _0x4c2b93={};_0x4c2b93[_0x2eb7d6[_0x954b('0x2e')]]={'$like':'%'+_0x5eeb98[_0x954b('0x35')][_0x954b('0x42')]+'%'};return _0x4c2b93;}})});}_0x4b9ab5=_[_0x954b('0x43')]({},_0x4b9ab5,_0x5eeb98['options']);var _0x28b3d6={'where':_0x4b9ab5[_0x954b('0x3f')]};return db['ChatInternalMessage'][_0x954b('0x23')](_0x28b3d6)['then'](function(_0x34532b){_0x124330[_0x954b('0x23')]=_0x34532b;if(_0x5eeb98[_0x954b('0x35')][_0x954b('0x45')]){_0x4b9ab5[_0x954b('0x46')]=[{'all':!![]}];}return db[_0x954b('0x32')]['findAll'](_0x4b9ab5);})['then'](function(_0x14344d){_0x124330[_0x954b('0x47')]=_0x14344d;return _0x124330;})[_0x954b('0x2a')](respondWithFilteredResult(_0x45eedd,_0x4b9ab5))[_0x954b('0x48')](handleError(_0x45eedd,null));};exports[_0x954b('0x49')]=function(_0x34b01d,_0x2a8d23){var _0xce1cc7={'raw':!![],'where':{'id':_0x34b01d[_0x954b('0x4a')]['id']}},_0x3b54e5={};_0x3b54e5[_0x954b('0x39')]=_[_0x954b('0x36')](db['ChatInternalMessage'][_0x954b('0x33')]);_0x3b54e5[_0x954b('0x35')]=_[_0x954b('0x36')](_0x34b01d[_0x954b('0x35')]);_0x3b54e5[_0x954b('0x40')]=_[_0x954b('0x37')](_0x3b54e5[_0x954b('0x39')],_0x3b54e5[_0x954b('0x35')]);_0xce1cc7[_0x954b('0x38')]=_[_0x954b('0x37')](_0x3b54e5[_0x954b('0x39')],qs[_0x954b('0x3a')](_0x34b01d['query'][_0x954b('0x3a')]));_0xce1cc7[_0x954b('0x38')]=_0xce1cc7['attributes']['length']?_0xce1cc7[_0x954b('0x38')]:_0x3b54e5['model'];if(_0x34b01d[_0x954b('0x35')][_0x954b('0x45')]){_0xce1cc7[_0x954b('0x46')]=[{'all':!![]}];}_0xce1cc7=_[_0x954b('0x43')]({},_0xce1cc7,_0x34b01d[_0x954b('0x4b')]);return db['ChatInternalMessage']['find'](_0xce1cc7)['then'](handleEntityNotFound(_0x2a8d23,null))['then'](respondWithResult(_0x2a8d23,null))['catch'](handleError(_0x2a8d23,null));};exports[_0x954b('0x4c')]=function(_0x3b4359,_0xeeb88d){return db[_0x954b('0x32')][_0x954b('0x4c')](_0x3b4359[_0x954b('0x4d')],{})['then'](respondWithResult(_0xeeb88d,0xc9))[_0x954b('0x48')](handleError(_0xeeb88d,null));};exports['update']=function(_0x5067de,_0x51dcc2){if(_0x5067de[_0x954b('0x4d')]['id']){delete _0x5067de[_0x954b('0x4d')]['id'];}return db[_0x954b('0x32')][_0x954b('0x4e')]({'where':{'id':_0x5067de[_0x954b('0x4a')]['id']}})[_0x954b('0x2a')](handleEntityNotFound(_0x51dcc2,null))[_0x954b('0x2a')](saveUpdates(_0x5067de[_0x954b('0x4d')],null))[_0x954b('0x2a')](respondWithResult(_0x51dcc2,null))[_0x954b('0x48')](handleError(_0x51dcc2,null));};exports[_0x954b('0x2b')]=function(_0x211fd6,_0x857b6){return db[_0x954b('0x32')][_0x954b('0x4e')]({'where':{'id':_0x211fd6[_0x954b('0x4a')]['id']}})[_0x954b('0x2a')](handleEntityNotFound(_0x857b6,null))['then'](removeEntity(_0x857b6,null))[_0x954b('0x48')](handleError(_0x857b6,null));};exports[_0x954b('0x4f')]=function(_0x2790ac,_0x9fde18){return db['ChatInternalMessage'][_0x954b('0x4f')]()[_0x954b('0x2a')](respondWithResult(_0x9fde18,null))['catch'](handleError(_0x9fde18,null));};function wrapUser(_0x58e8e0){return function(_0x1f50b8){var _0x492c46=_0x58e8e0[_0x954b('0x50')]({'plain':!![]});_0x492c46[_0x954b('0x51')]=[];if(_0x1f50b8){_0x492c46[_0x954b('0x52')]=_0x1f50b8[_0x954b('0x53')];_0x492c46[_0x954b('0x54')]=_0x1f50b8;}else{_0x492c46['lastMessageAt']=moment(0x0)['format'](_0x954b('0x55'));_0x492c46[_0x954b('0x54')]={};}return _0x492c46;};}exports['getUsers']=function(_0x377257,_0x3b0045,_0xfe93f){var _0x5ee868=[];return db['User'][_0x954b('0x56')]({'where':{'role':[_0x954b('0x57'),_0x954b('0x58'),_0x954b('0x59')]},'attributes':['id',_0x954b('0x5a'),_0x954b('0x2e'),'role','userpic',_0x954b('0x5b'),_0x954b('0x5c'),_0x954b('0x5d'),_0x954b('0x5e'),'showWebBar'],'order':qs[_0x954b('0x3e')](_0x954b('0x5f')),'include':[{'model':db[_0x954b('0x60')],'as':_0x954b('0x61'),'attributes':['id',_0x954b('0x2e'),_0x954b('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x122d57){if(_0x122d57){var _0x522184=_0x377257[_0x954b('0x59')][_0x954b('0x50')]({'plain':!![]});if(!_0x522184)throw new Error(_0x954b('0x62'));if(_0x522184[_0x954b('0x63')]===_0x954b('0x59')){return db['UserProfileSection']['find']({'where':{'name':'Agents','userProfileId':_0x522184[_0x954b('0x64')]},'raw':!![]})['then'](function(_0x500db4){if(_0x500db4){if(_0x500db4['autoAssociation']===0x0){return db[_0x954b('0x65')][_0x954b('0x56')]({'where':{'sectionId':_0x500db4['id']},'raw':!![]})['then'](function(_0x3d7228){var _0x29f6ea=[];if(_[_0x954b('0x66')](_0x3d7228)){_0x29f6ea=_[_0x954b('0x42')](_0x122d57,function(_0x34aadb){if(_0x34aadb[_0x954b('0x63')]!==_0x954b('0x57')){return _0x34aadb;}});return _0x29f6ea;}else{for(var _0x5f49da=0x0;_0x5f49da<_0x122d57[_0x954b('0x67')];_0x5f49da++){var _0x5c2f53=_0x122d57[_0x5f49da];if(_0x5c2f53[_0x954b('0x63')]===_0x954b('0x57')){var _0x30d467=_[_0x954b('0x4e')](_0x3d7228,function(_0x4db50f){return _0x4db50f[_0x954b('0x68')]===_0x5c2f53['id'];});if(_0x30d467)_0x29f6ea[_0x954b('0x69')](_0x5c2f53);}else{_0x29f6ea[_0x954b('0x69')](_0x5c2f53);}}return _0x29f6ea;}});}else{return _0x122d57;}}else{var _0x572a04=_[_0x954b('0x42')](_0x122d57,function(_0x2999bc){if(_0x2999bc[_0x954b('0x63')]!==_0x954b('0x57')){return _0x2999bc;}});return _0x572a04;}});}else{return _0x122d57;}}})[_0x954b('0x2a')](function(_0x481d60){var _0xbd6909=[];if(_0x481d60){_0x5ee868=_0x481d60;for(var _0x4bbf6d=0x0;_0x4bbf6d<_0x481d60[_0x954b('0x67')];_0x4bbf6d+=0x1){_0x5ee868[_0x4bbf6d][_0x954b('0x51')]=[];_0xbd6909[_0x954b('0x69')](db[_0x954b('0x32')][_0x954b('0x4e')]({'where':{'FromId':[_0x377257[_0x954b('0x59')]['id'],_0x481d60[_0x4bbf6d]['id']],'ToId':[_0x377257[_0x954b('0x59')]['id'],_0x481d60[_0x4bbf6d]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x954b('0x6a'),_0x954b('0x6b'),_0x954b('0x6c'),_0x954b('0x4d')],'order':qs[_0x954b('0x3e')](_0x954b('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x954b('0x2a')](wrapUser(_0x481d60[_0x4bbf6d])));}return BPromise[_0x954b('0x6e')](_0xbd6909);}return[];})[_0x954b('0x2a')](function(_0x55a1bd){return{'rows':_0x55a1bd,'count':_0x55a1bd[_0x954b('0x67')]};})[_0x954b('0x2a')](respondWithResult(_0x3b0045,null))[_0x954b('0x48')](handleError(_0x3b0045,null));};
\ No newline at end of file
index e21c479..931f3a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6d1=['exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','emit'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xa6d1,0x1e1));var _0x1a6d=function(_0x267616,_0x19487d){_0x267616=_0x267616-0x0;var _0xe59e36=_0xa6d1[_0x267616];return _0xe59e36;};'use strict';var EventEmitter=require(_0x1a6d('0x0'));var ChatInternalMessage=require(_0x1a6d('0x1'))['db'][_0x1a6d('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1a6d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x767812){return function(_0x5d1cc9,_0x17bd07,_0xc7c2de){ChatInternalMessageEvents['emit'](_0x767812+':'+_0x5d1cc9['id'],_0x5d1cc9);ChatInternalMessageEvents[_0x1a6d('0x4')](_0x767812,_0x5d1cc9);_0xc7c2de(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x1a6d('0x5')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x4458=['exports','events','../../mysqldb','ChatInternalMessage','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x3432c6,_0x1d2fcf){var _0x2a893f=function(_0x5055f8){while(--_0x5055f8){_0x3432c6['push'](_0x3432c6['shift']());}};_0x2a893f(++_0x1d2fcf);}(_0x4458,0x119));var _0x8445=function(_0x3b151e,_0x51ad64){_0x3b151e=_0x3b151e-0x0;var _0x2b79a4=_0x4458[_0x3b151e];return _0x2b79a4;};'use strict';var EventEmitter=require(_0x8445('0x0'));var ChatInternalMessage=require(_0x8445('0x1'))['db'][_0x8445('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8445('0x3'),'afterUpdate':_0x8445('0x4'),'afterDestroy':_0x8445('0x5')};function emitEvent(_0x906bbb){return function(_0x235829,_0x1a39a9,_0x50caf8){ChatInternalMessageEvents['emit'](_0x906bbb+':'+_0x235829['id'],_0x235829);ChatInternalMessageEvents[_0x8445('0x6')](_0x906bbb,_0x235829);_0x50caf8(null);};}for(var e in events){if(events[_0x8445('0x7')](e)){var event=events[e];ChatInternalMessage[_0x8445('0x8')](e,emitEvent(event));}}module[_0x8445('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 648b252..83d3e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x039b=['api','bluebird','path','../../config/environment','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x1b043d,_0x2515ed){var _0xf0e2fd=function(_0xc394fa){while(--_0xc394fa){_0x1b043d['push'](_0x1b043d['shift']());}};_0xf0e2fd(++_0x2515ed);}(_0x039b,0x198));var _0xb039=function(_0x27976d,_0x4670e5){_0x27976d=_0x27976d-0x0;var _0xfaff20=_0x039b[_0x27976d];return _0xfaff20;};'use strict';var _=require('lodash');var util=require(_0xb039('0x0'));var logger=require(_0xb039('0x1'))(_0xb039('0x2'));var moment=require('moment');var BPromise=require(_0xb039('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb039('0x4'));var rimraf=require('rimraf');var config=require(_0xb039('0x5'));var attributes=require('./chatInternalMessage.attributes');module['exports']=function(_0x548033,_0x3be3e3){return _0x548033[_0xb039('0x6')](_0xb039('0x7'),attributes,{'tableName':_0xb039('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb039('0x9')});};
\ No newline at end of file
+var _0x75a3=['request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird'];(function(_0x19b749,_0x3966ae){var _0x35d536=function(_0x1c96c7){while(--_0x1c96c7){_0x19b749['push'](_0x19b749['shift']());}};_0x35d536(++_0x3966ae);}(_0x75a3,0x181));var _0x375a=function(_0x5c5a99,_0x47e2f6){_0x5c5a99=_0x5c5a99-0x0;var _0x3c2625=_0x75a3[_0x5c5a99];return _0x3c2625;};'use strict';var _=require('lodash');var util=require(_0x375a('0x0'));var logger=require(_0x375a('0x1'))(_0x375a('0x2'));var moment=require(_0x375a('0x3'));var BPromise=require(_0x375a('0x4'));var rp=require(_0x375a('0x5'));var fs=require('fs');var path=require(_0x375a('0x6'));var rimraf=require(_0x375a('0x7'));var config=require(_0x375a('0x8'));var attributes=require(_0x375a('0x9'));module[_0x375a('0xa')]=function(_0x2ae157,_0x3c57ff){return _0x2ae157[_0x375a('0xb')](_0x375a('0xc'),attributes,{'tableName':_0x375a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x375a('0xe')});};
\ No newline at end of file
index 6324d28..144b26e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ee8=['code','ChatInternalMessage,\x20%s,\x20%s','message','result','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','request','info','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x1ee8,0x6d));var _0x81ee=function(_0x465d15,_0x25c5b0){_0x465d15=_0x465d15-0x0;var _0x2029fd=_0x1ee8[_0x465d15];return _0x2029fd;};'use strict';var _=require('lodash');var util=require(_0x81ee('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x81ee('0x1'));var fs=require('fs');var Redis=require(_0x81ee('0x2'));var db=require(_0x81ee('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x81ee('0x4'));var config=require(_0x81ee('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x81ee('0x6')][_0x81ee('0x7')]({'port':0x232a});config[_0x81ee('0x8')]=_['defaults'](config[_0x81ee('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x81ee('0x9'))(new Redis(config[_0x81ee('0x8')]));require(_0x81ee('0xa'))[_0x81ee('0xb')](socket);function respondWithRpcPromise(_0x57170d,_0x30324e,_0x5ed23e){return new BPromise(function(_0x3bec73,_0xa42ddf){return client[_0x81ee('0xc')](_0x57170d,_0x5ed23e)['then'](function(_0x5c9402){logger[_0x81ee('0xd')]('ChatInternalMessage,\x20%s,\x20%s',_0x30324e,_0x81ee('0xe'));logger['debug'](_0x81ee('0xf'),_0x30324e,_0x81ee('0xe'),JSON['stringify'](_0x5c9402));if(_0x5c9402[_0x81ee('0x10')]){if(_0x5c9402[_0x81ee('0x10')][_0x81ee('0x11')]===0x1f4){logger[_0x81ee('0x10')](_0x81ee('0x12'),_0x30324e,_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);return _0xa42ddf(_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);}logger[_0x81ee('0x10')](_0x81ee('0x12'),_0x30324e,_0x5c9402[_0x81ee('0x10')][_0x81ee('0x13')]);return _0x3bec73(_0x5c9402['error']['message']);}else{logger[_0x81ee('0xd')]('ChatInternalMessage,\x20%s,\x20%s',_0x30324e,_0x81ee('0xe'));_0x3bec73(_0x5c9402[_0x81ee('0x14')][_0x81ee('0x13')]);}})['catch'](function(_0x14269d){logger['error'](_0x81ee('0x12'),_0x30324e,_0x14269d);_0xa42ddf(_0x14269d);});});}
\ No newline at end of file
+var _0x2239=['redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','info','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x581feb,_0x475a85){var _0x29fe1a=function(_0x34b44d){while(--_0x34b44d){_0x581feb['push'](_0x581feb['shift']());}};_0x29fe1a(++_0x475a85);}(_0x2239,0x18b));var _0x9223=function(_0x3cc53b,_0x47154b){_0x3cc53b=_0x3cc53b-0x0;var _0x4c3b63=_0x2239[_0x3cc53b];return _0x4c3b63;};'use strict';var _=require('lodash');var util=require(_0x9223('0x0'));var moment=require('moment');var BPromise=require(_0x9223('0x1'));var rs=require(_0x9223('0x2'));var fs=require('fs');var Redis=require(_0x9223('0x3'));var db=require(_0x9223('0x4'))['db'];var utils=require(_0x9223('0x5'));var logger=require(_0x9223('0x6'))('rpc');var config=require(_0x9223('0x7'));var jayson=require(_0x9223('0x8'));var client=jayson[_0x9223('0x9')][_0x9223('0xa')]({'port':0x232a});config[_0x9223('0xb')]=_[_0x9223('0xc')](config['redis'],{'host':_0x9223('0xd'),'port':0x18eb});var socket=require(_0x9223('0xe'))(new Redis(config['redis']));require(_0x9223('0xf'))['register'](socket);function respondWithRpcPromise(_0x50bb2a,_0x15db3f,_0x1067e7){return new BPromise(function(_0x69e5cf,_0x2a47eb){return client[_0x9223('0x10')](_0x50bb2a,_0x1067e7)[_0x9223('0x11')](function(_0x56e6a5){logger[_0x9223('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0x15db3f,_0x9223('0x13'));logger[_0x9223('0x14')](_0x9223('0x15'),_0x15db3f,_0x9223('0x13'),JSON[_0x9223('0x16')](_0x56e6a5));if(_0x56e6a5['error']){if(_0x56e6a5[_0x9223('0x17')][_0x9223('0x18')]===0x1f4){logger[_0x9223('0x17')](_0x9223('0x19'),_0x15db3f,_0x56e6a5['error']['message']);return _0x2a47eb(_0x56e6a5[_0x9223('0x17')][_0x9223('0x1a')]);}logger[_0x9223('0x17')](_0x9223('0x19'),_0x15db3f,_0x56e6a5['error'][_0x9223('0x1a')]);return _0x69e5cf(_0x56e6a5['error']['message']);}else{logger['info'](_0x9223('0x19'),_0x15db3f,_0x9223('0x13'));_0x69e5cf(_0x56e6a5[_0x9223('0x1b')][_0x9223('0x1a')]);}})[_0x9223('0x1c')](function(_0x411657){logger[_0x9223('0x17')]('ChatInternalMessage,\x20%s,\x20%s',_0x15db3f,_0x411657);_0x2a47eb(_0x411657);});});}
\ No newline at end of file
index 302d416..bd2e9dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c96=['save','remove','update','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x68ee8b,_0x3cc6c5){var _0x5148f7=function(_0x5dcbd5){while(--_0x5dcbd5){_0x68ee8b['push'](_0x68ee8b['shift']());}};_0x5148f7(++_0x3cc6c5);}(_0x2c96,0xaf));var _0x62c9=function(_0xcc81f,_0x5bbb70){_0xcc81f=_0xcc81f-0x0;var _0x228e42=_0x2c96[_0xcc81f];return _0x228e42;};'use strict';var ChatInternalMessageEvents=require(_0x62c9('0x0'));var events=[_0x62c9('0x1'),_0x62c9('0x2'),_0x62c9('0x3')];function createListener(_0x3580b3,_0x46693c){return function(_0x3bb8c4){_0x46693c['emit'](_0x3580b3,_0x3bb8c4);};}function removeListener(_0x4a3aac,_0x1d55ef){return function(){ChatInternalMessageEvents[_0x62c9('0x4')](_0x4a3aac,_0x1d55ef);};}exports[_0x62c9('0x5')]=function(_0x97ecbe){for(var _0x3dc786=0x0,_0x5f0b81=events[_0x62c9('0x6')];_0x3dc786<_0x5f0b81;_0x3dc786++){var _0x4bcbc2=events[_0x3dc786];var _0x32871f=createListener(_0x62c9('0x7')+_0x4bcbc2,_0x97ecbe);ChatInternalMessageEvents['on'](_0x4bcbc2,_0x32871f);}};
\ No newline at end of file
+var _0x016f=['save','remove','emit','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x4b71cd,_0x3f70b8){var _0x4dc7ad=function(_0x4d7fe0){while(--_0x4d7fe0){_0x4b71cd['push'](_0x4b71cd['shift']());}};_0x4dc7ad(++_0x3f70b8);}(_0x016f,0x185));var _0xf016=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x016f[_0x5ddb1c];return _0x354adc;};'use strict';var ChatInternalMessageEvents=require(_0xf016('0x0'));var events=[_0xf016('0x1'),_0xf016('0x2'),'update'];function createListener(_0x1366e6,_0x272cac){return function(_0x553490){_0x272cac[_0xf016('0x3')](_0x1366e6,_0x553490);};}function removeListener(_0x56252a,_0x5ccf55){return function(){ChatInternalMessageEvents['removeListener'](_0x56252a,_0x5ccf55);};}exports['register']=function(_0x33b58a){for(var _0x23dede=0x0,_0x7b0a7d=events[_0xf016('0x4')];_0x23dede<_0x7b0a7d;_0x23dede++){var _0x503b69=events[_0x23dede];var _0x2aaa2e=createListener(_0xf016('0x5')+_0x503b69,_0x33b58a);ChatInternalMessageEvents['on'](_0x503b69,_0x2aaa2e);}};
\ No newline at end of file
index 9415639..b475ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0b=['update','delete','destroy','exports','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','post','create','put'];(function(_0x172948,_0x4262cc){var _0x4aeaa9=function(_0x5ec4b3){while(--_0x5ec4b3){_0x172948['push'](_0x172948['shift']());}};_0x4aeaa9(++_0x4262cc);}(_0x8d0b,0xea));var _0xb8d0=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x8d0b[_0x24f31b];return _0x488401;};'use strict';var multer=require('multer');var util=require(_0xb8d0('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb8d0('0x1'));var router=express[_0xb8d0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xb8d0('0x3'));var interaction=require(_0xb8d0('0x4'));var config=require(_0xb8d0('0x5'));var controller=require(_0xb8d0('0x6'));router[_0xb8d0('0x7')]('/',auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x9')]);router[_0xb8d0('0x7')](_0xb8d0('0xa'),auth['isAuthenticated'](),controller[_0xb8d0('0xb')]);router[_0xb8d0('0x7')](_0xb8d0('0xc'),auth['isAuthenticated'](),controller[_0xb8d0('0xd')]);router[_0xb8d0('0x7')](_0xb8d0('0xe'),auth['isAuthenticated'](),controller[_0xb8d0('0xf')]);router[_0xb8d0('0x10')]('/',auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x11')]);router[_0xb8d0('0x12')](_0xb8d0('0xe'),controller[_0xb8d0('0x13')]);router[_0xb8d0('0x14')](_0xb8d0('0xe'),auth[_0xb8d0('0x8')](),controller[_0xb8d0('0x15')]);module[_0xb8d0('0x16')]=router;
\ No newline at end of file
+var _0xe80f=['isAuthenticated','get','/describe','describe','getUsers','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment'];(function(_0x483bee,_0x310a26){var _0x398226=function(_0x31b214){while(--_0x31b214){_0x483bee['push'](_0x483bee['shift']());}};_0x398226(++_0x310a26);}(_0xe80f,0x71));var _0xfe80=function(_0x553499,_0x5c650c){_0x553499=_0x553499-0x0;var _0x2db169=_0xe80f[_0x553499];return _0x2db169;};'use strict';var multer=require(_0xfe80('0x0'));var util=require(_0xfe80('0x1'));var path=require(_0xfe80('0x2'));var timeout=require(_0xfe80('0x3'));var express=require(_0xfe80('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfe80('0x5'));var config=require(_0xfe80('0x6'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth[_0xfe80('0x7')](),controller['index']);router[_0xfe80('0x8')](_0xfe80('0x9'),auth['isAuthenticated'](),controller[_0xfe80('0xa')]);router[_0xfe80('0x8')]('/users',auth[_0xfe80('0x7')](),controller[_0xfe80('0xb')]);router[_0xfe80('0x8')](_0xfe80('0xc'),auth[_0xfe80('0x7')](),controller[_0xfe80('0xd')]);router[_0xfe80('0xe')]('/',auth[_0xfe80('0x7')](),controller[_0xfe80('0xf')]);router[_0xfe80('0x10')](_0xfe80('0xc'),controller['update']);router[_0xfe80('0x11')](_0xfe80('0xc'),auth[_0xfe80('0x7')](),controller[_0xfe80('0x12')]);module[_0xfe80('0x13')]=router;
\ No newline at end of file
index 8255537..87be463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['ENUM','out','DATE','sequelize','exports','TEXT','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7fce,0xdc));var _0xe7fc=function(_0x50f1dd,_0x28850b){_0x50f1dd=_0x50f1dd-0x0;var _0x4e3ddc=_0x7fce[_0x50f1dd];return _0x4e3ddc;};'use strict';var Sequelize=require(_0xe7fc('0x0'));module[_0xe7fc('0x1')]={'body':{'type':Sequelize[_0xe7fc('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe7fc('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xe7fc('0x4')]('in','out'),'defaultValue':_0xe7fc('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xe7fc('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x94df=['out','DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x599870,_0x2c5461){var _0xef3011=function(_0x2185e1){while(--_0x2185e1){_0x599870['push'](_0x599870['shift']());}};_0xef3011(++_0x2c5461);}(_0x94df,0xa3));var _0xf94d=function(_0x912b74,_0x4b7150){_0x912b74=_0x912b74-0x0;var _0x4dd8bc=_0x94df[_0x912b74];return _0x4dd8bc;};'use strict';var Sequelize=require(_0xf94d('0x0'));module[_0xf94d('0x1')]={'body':{'type':Sequelize[_0xf94d('0x2')](_0xf94d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xf94d('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xf94d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xf94d('0x5')),'defaultValue':_0xf94d('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xf94d('0x6')]},'providerName':{'type':Sequelize[_0xf94d('0x7')]},'providerResponse':{'type':Sequelize[_0xf94d('0x2')]}};
\ No newline at end of file
index 79939bf..0b60fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb84c=['length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','find','create','body','params','describe','../../config/logger','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','SIP/%s','channel','motionChannel','event','EventManager','parse','formData','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','email','interface','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','name','send','index','ChatMessage','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields'];(function(_0x21a1a6,_0x1474bf){var _0x5cec0e=function(_0x13abb9){while(--_0x13abb9){_0x21a1a6['push'](_0x21a1a6['shift']());}};_0x5cec0e(++_0x1474bf);}(_0xb84c,0x1cb));var _0xcb84=function(_0x40b689,_0x3f7eab){_0x40b689=_0x40b689-0x0;var _0x4b3635=_0xb84c[_0x40b689];return _0x4b3635;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcb84('0x0'));var zipdir=require(_0xcb84('0x1'));var jsonpatch=require(_0xcb84('0x2'));var rp=require(_0xcb84('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcb84('0x4'));var path=require(_0xcb84('0x5'));var sox=require('sox');var csv=require(_0xcb84('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcb84('0x7'));var _=require(_0xcb84('0x8'));var squel=require(_0xcb84('0x9'));var crypto=require('crypto');var jsforce=require(_0xcb84('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcb84('0xb'));var Papa=require(_0xcb84('0xc'));var Redis=require(_0xcb84('0xd'));var authService=require(_0xcb84('0xe'));var qs=require(_0xcb84('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcb84('0x10'));var utils=require(_0xcb84('0x11'));var config=require(_0xcb84('0x12'));var licenseUtil=require(_0xcb84('0x13'));var db=require(_0xcb84('0x14'))['db'];config[_0xcb84('0x15')]=_[_0xcb84('0x16')](config[_0xcb84('0x15')],{'host':_0xcb84('0x17'),'port':0x18eb});var socket=require(_0xcb84('0x18'))(new Redis(config['redis']));require('./chatMessage.socket')['register'](socket);var jayson=require(_0xcb84('0x19'));var client=jayson[_0xcb84('0x1a')]['http']({'port':0x232c});var client9002=jayson[_0xcb84('0x1a')][_0xcb84('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4ccb78,_0xae971f,_0x5968a2,_0x3891cd){return new BPromise(function(_0x94677c,_0x4721b0){var _0x1a849a=_0x3891cd||client;return _0x1a849a['request'](_0x4ccb78,_0x5968a2)[_0xcb84('0x1c')](function(_0x595f36){logger[_0xcb84('0x1d')](_0xcb84('0x1e'),_0xae971f,_0xcb84('0x1f'));logger[_0xcb84('0x20')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0xae971f,_0xcb84('0x1f'),JSON[_0xcb84('0x21')](_0x595f36));if(_0x595f36[_0xcb84('0x22')]){if(_0x595f36['error']['code']===0x1f4){logger[_0xcb84('0x22')]('ChatMessage,\x20%s,\x20%s',_0xae971f,_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);return _0x4721b0(_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);}logger[_0xcb84('0x22')](_0xcb84('0x1e'),_0xae971f,_0x595f36['error'][_0xcb84('0x23')]);return _0x94677c(_0x595f36[_0xcb84('0x22')][_0xcb84('0x23')]);}else{logger[_0xcb84('0x1d')](_0xcb84('0x1e'),_0xae971f,_0xcb84('0x1f'));_0x94677c(_0x595f36[_0xcb84('0x24')][_0xcb84('0x23')]);}})[_0xcb84('0x25')](function(_0x39055a){logger[_0xcb84('0x22')](_0xcb84('0x1e'),_0xae971f,_0x39055a);_0x4721b0(_0x39055a);});});}function respondWithStatusCode(_0x3343f2,_0x392c3d){_0x392c3d=_0x392c3d||0xcc;return function(_0x499938){if(_0x499938){return _0x3343f2['sendStatus'](_0x392c3d);}return _0x3343f2[_0xcb84('0x26')](_0x392c3d)[_0xcb84('0x27')]();};}function respondWithResult(_0x390e9c,_0x1215a2){_0x1215a2=_0x1215a2||0xc8;return function(_0x294f45){if(_0x294f45){return _0x390e9c[_0xcb84('0x26')](_0x1215a2)[_0xcb84('0x28')](_0x294f45);}};}function respondWithFilteredResult(_0x38d928,_0x163429){return function(_0x12a4ff){if(_0x12a4ff){var _0x58a061=typeof _0x163429['offset']===_0xcb84('0x29')&&typeof _0x163429[_0xcb84('0x2a')]===_0xcb84('0x29');var _0x4b2fa0=_0x12a4ff['count'];var _0x4a18f6=_0x58a061?0x0:_0x163429[_0xcb84('0x2b')];var _0x1ed994=_0x58a061?_0x12a4ff[_0xcb84('0x2c')]:_0x163429[_0xcb84('0x2b')]+_0x163429[_0xcb84('0x2a')];var _0x35fe12;if(_0x1ed994>=_0x4b2fa0){_0x1ed994=_0x4b2fa0;_0x35fe12=0xc8;}else{_0x35fe12=0xce;}_0x38d928[_0xcb84('0x26')](_0x35fe12);return _0x38d928[_0xcb84('0x2d')](_0xcb84('0x2e'),_0x4a18f6+'-'+_0x1ed994+'/'+_0x4b2fa0)[_0xcb84('0x28')](_0x12a4ff);}return null;};}function patchUpdates(_0x1ee2b5){return function(_0x2ca5a4){try{jsonpatch[_0xcb84('0x2f')](_0x2ca5a4,_0x1ee2b5,!![]);}catch(_0x15d80d){return BPromise[_0xcb84('0x30')](_0x15d80d);}return _0x2ca5a4[_0xcb84('0x31')]();};}function saveUpdates(_0xc258f8,_0x4ebe01){return function(_0x554f71){if(_0x554f71){return _0x554f71[_0xcb84('0x32')](_0xc258f8)[_0xcb84('0x1c')](function(_0x4058a5){return _0x4058a5;});}return null;};}function removeEntity(_0x4ac066,_0x4ca0aa){return function(_0x4655ec){if(_0x4655ec){return _0x4655ec[_0xcb84('0x33')]()[_0xcb84('0x1c')](function(){_0x4ac066[_0xcb84('0x26')](0xcc)[_0xcb84('0x27')]();});}};}function handleEntityNotFound(_0x32bc2e,_0x2fec13){return function(_0x50e307){if(!_0x50e307){_0x32bc2e[_0xcb84('0x34')](0x194);}return _0x50e307;};}function handleError(_0x3c23d2,_0x1dd82a){_0x1dd82a=_0x1dd82a||0x1f4;return function(_0x1ae9fc){logger[_0xcb84('0x22')](_0x1ae9fc['stack']);if(_0x1ae9fc[_0xcb84('0x35')]){delete _0x1ae9fc[_0xcb84('0x35')];}_0x3c23d2[_0xcb84('0x26')](_0x1dd82a)[_0xcb84('0x36')](_0x1ae9fc);};}exports[_0xcb84('0x37')]=function(_0x555c2e,_0x2acf52){var _0xaa62ee={},_0x1b7399={},_0x1fb8cb={'count':0x0,'rows':[]};var _0x150c49=_['map'](db[_0xcb84('0x38')][_0xcb84('0x39')],function(_0x364880){return{'name':_0x364880[_0xcb84('0x3a')],'type':_0x364880[_0xcb84('0x3b')][_0xcb84('0x3c')]};});_0x1b7399[_0xcb84('0x3d')]=_[_0xcb84('0x3e')](_0x150c49,_0xcb84('0x35'));_0x1b7399['query']=_[_0xcb84('0x3f')](_0x555c2e[_0xcb84('0x40')]);_0x1b7399[_0xcb84('0x41')]=_[_0xcb84('0x42')](_0x1b7399[_0xcb84('0x3d')],_0x1b7399[_0xcb84('0x40')]);_0xaa62ee[_0xcb84('0x43')]=_[_0xcb84('0x42')](_0x1b7399[_0xcb84('0x3d')],qs[_0xcb84('0x44')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x44')]));_0xaa62ee['attributes']=_0xaa62ee[_0xcb84('0x43')][_0xcb84('0x45')]?_0xaa62ee[_0xcb84('0x43')]:_0x1b7399[_0xcb84('0x3d')];if(!_0x555c2e[_0xcb84('0x40')]['hasOwnProperty'](_0xcb84('0x46'))){_0xaa62ee['limit']=qs[_0xcb84('0x2a')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x2a')]);_0xaa62ee[_0xcb84('0x2b')]=qs[_0xcb84('0x2b')](_0x555c2e[_0xcb84('0x40')][_0xcb84('0x2b')]);}_0xaa62ee[_0xcb84('0x47')]=qs[_0xcb84('0x48')](_0x555c2e['query'][_0xcb84('0x48')]);_0xaa62ee[_0xcb84('0x49')]=qs['filters'](_[_0xcb84('0x4a')](_0x555c2e[_0xcb84('0x40')],_0x1b7399['filters']),_0x150c49);if(_0x555c2e[_0xcb84('0x40')][_0xcb84('0x4b')]){_0xaa62ee[_0xcb84('0x49')]=_['merge'](_0xaa62ee[_0xcb84('0x49')],{'$or':_[_0xcb84('0x3e')](_0x150c49,function(_0x3a4731){if(_0x3a4731['type']!==_0xcb84('0x4c')){var _0x24f0a5={};_0x24f0a5[_0x3a4731[_0xcb84('0x35')]]={'$like':'%'+_0x555c2e[_0xcb84('0x40')][_0xcb84('0x4b')]+'%'};return _0x24f0a5;}})});}_0xaa62ee=_[_0xcb84('0x4d')]({},_0xaa62ee,_0x555c2e[_0xcb84('0x4e')]);var _0x17cdc1={'where':_0xaa62ee[_0xcb84('0x49')]};return db[_0xcb84('0x38')][_0xcb84('0x2c')](_0x17cdc1)[_0xcb84('0x1c')](function(_0x206251){_0x1fb8cb['count']=_0x206251;if(_0x555c2e['query'][_0xcb84('0x4f')]){_0xaa62ee[_0xcb84('0x50')]=[{'all':!![]}];}return db[_0xcb84('0x38')][_0xcb84('0x51')](_0xaa62ee);})[_0xcb84('0x1c')](function(_0x1b7f57){_0x1fb8cb[_0xcb84('0x52')]=_0x1b7f57;return _0x1fb8cb;})[_0xcb84('0x1c')](respondWithFilteredResult(_0x2acf52,_0xaa62ee))[_0xcb84('0x25')](handleError(_0x2acf52,null));};exports[_0xcb84('0x53')]=function(_0xc0fff4,_0x1daa86){var _0x2329cb={'raw':!![],'where':{'id':_0xc0fff4['params']['id']}},_0x1e3bee={};_0x1e3bee[_0xcb84('0x3d')]=_[_0xcb84('0x3f')](db[_0xcb84('0x38')][_0xcb84('0x39')]);_0x1e3bee[_0xcb84('0x40')]=_[_0xcb84('0x3f')](_0xc0fff4['query']);_0x1e3bee['filters']=_[_0xcb84('0x42')](_0x1e3bee[_0xcb84('0x3d')],_0x1e3bee[_0xcb84('0x40')]);_0x2329cb[_0xcb84('0x43')]=_[_0xcb84('0x42')](_0x1e3bee[_0xcb84('0x3d')],qs[_0xcb84('0x44')](_0xc0fff4['query'][_0xcb84('0x44')]));_0x2329cb[_0xcb84('0x43')]=_0x2329cb[_0xcb84('0x43')][_0xcb84('0x45')]?_0x2329cb[_0xcb84('0x43')]:_0x1e3bee[_0xcb84('0x3d')];if(_0xc0fff4[_0xcb84('0x40')][_0xcb84('0x4f')]){_0x2329cb[_0xcb84('0x50')]=[{'all':!![]}];}_0x2329cb=_['merge']({},_0x2329cb,_0xc0fff4[_0xcb84('0x4e')]);return db[_0xcb84('0x38')][_0xcb84('0x54')](_0x2329cb)[_0xcb84('0x1c')](handleEntityNotFound(_0x1daa86,null))[_0xcb84('0x1c')](respondWithResult(_0x1daa86,null))[_0xcb84('0x25')](handleError(_0x1daa86,null));};exports['create']=function(_0x46a9c4,_0x4a99e5){return db[_0xcb84('0x38')][_0xcb84('0x55')](_0x46a9c4[_0xcb84('0x56')],{})[_0xcb84('0x1c')](respondWithResult(_0x4a99e5,0xc9))[_0xcb84('0x25')](handleError(_0x4a99e5,null));};exports[_0xcb84('0x32')]=function(_0x5c9961,_0x1787bc){if(_0x5c9961[_0xcb84('0x56')]['id']){delete _0x5c9961[_0xcb84('0x56')]['id'];}return db['ChatMessage'][_0xcb84('0x54')]({'where':{'id':_0x5c9961[_0xcb84('0x57')]['id']}})['then'](handleEntityNotFound(_0x1787bc,null))[_0xcb84('0x1c')](saveUpdates(_0x5c9961[_0xcb84('0x56')],null))[_0xcb84('0x1c')](respondWithResult(_0x1787bc,null))['catch'](handleError(_0x1787bc,null));};exports[_0xcb84('0x33')]=function(_0x5ab856,_0x20ffbe){return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x5ab856[_0xcb84('0x57')]['id']}})['then'](handleEntityNotFound(_0x20ffbe,null))[_0xcb84('0x1c')](removeEntity(_0x20ffbe,null))[_0xcb84('0x25')](handleError(_0x20ffbe,null));};exports[_0xcb84('0x58')]=function(_0x1bdd2c,_0x210bc4){return db[_0xcb84('0x38')][_0xcb84('0x58')]()[_0xcb84('0x1c')](respondWithResult(_0x210bc4,null))[_0xcb84('0x25')](handleError(_0x210bc4,null));};var interaction_log=require(_0xcb84('0x59'))('chat-interactions');exports[_0xcb84('0x5a')]=function(_0x55f4da,_0xabc662,_0x187e76){var _0x3be1b0={'agent':{},'channel':_0xcb84('0x5b')};if(_0x55f4da[_0xcb84('0x56')]['id']){delete _0x55f4da['body']['id'];}_0x55f4da[_0xcb84('0x56')][_0xcb84('0x5c')]=!![];_0x55f4da['body'][_0xcb84('0x5d')]=moment()[_0xcb84('0x5e')](_0xcb84('0x5f'));_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')]=_0x55f4da['body']['UserId']||_0x55f4da['user']['id'];_0x3be1b0[_0xcb84('0x61')]['id']=_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')];return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x55f4da[_0xcb84('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xabc662,null))['then'](saveUpdates(_0x55f4da['body'],null))[_0xcb84('0x1c')](function(_0x3c689e){if(_0x3c689e){_0x3be1b0[_0xcb84('0x23')]=_0x3c689e[_0xcb84('0x62')]({'plain':!![]});return db[_0xcb84('0x63')][_0xcb84('0x54')]({'where':{'id':_0x3c689e[_0xcb84('0x64')]}});}return null;})[_0xcb84('0x1c')](handleEntityNotFound(_0xabc662,null))[_0xcb84('0x1c')](function(_0x26f8f7){if(_0x26f8f7){return _0x26f8f7['update']({'UserId':_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')],'read1stAt':_[_0xcb84('0x65')](_0x26f8f7[_0xcb84('0x66')])?moment()[_0xcb84('0x5e')](_0xcb84('0x5f')):undefined});}return null;})['then'](function(_0x3777b4){if(_0x3777b4){_0x3be1b0[_0xcb84('0x67')]=_0x3777b4['get']({'plain':!![]});interaction_log['info'](_0xcb84('0x68'),_0x55f4da['user']['id'],_0x55f4da['user']['name'],_0x55f4da[_0xcb84('0x69')][_0xcb84('0x6a')],_0x3be1b0[_0xcb84('0x67')]['id'],_0x55f4da[_0xcb84('0x56')]?JSON[_0xcb84('0x21')](_0x55f4da[_0xcb84('0x56')]):'null');return respondWithRpcPromise(_0xcb84('0x6b'),'acceptMessage',_0x3be1b0);}return null;})['then'](function(_0x8dea05){var _0x2a7752=_0xcb84('0x6c')+_0x8dea05[_0xcb84('0x23')][_0xcb84('0x6d')];return db[_0xcb84('0x6e')]['query'](_0x2a7752,{'type':db[_0xcb84('0x6f')][_0xcb84('0x70')][_0xcb84('0x71')],'raw':!![]})[_0xcb84('0x1c')](function(_0x2f110f){return _0x2f110f;});})[_0xcb84('0x1c')](function(_0x3a31b1){if(_0x3a31b1){_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x72')]=_0x3a31b1[0x0];if(!_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')])return;return db[_0xcb84('0x73')][_0xcb84('0x54')]({'where':{'id':_0x55f4da[_0xcb84('0x56')][_0xcb84('0x60')],'role':'agent'},'attributes':['id',_0xcb84('0x35'),_0xcb84('0x74'),'email',_0xcb84('0x75')],'raw':!![]});}return null;})['then'](function(_0x5313ec){if(!_0x5313ec)return null;_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x61')]=_0x5313ec;return _0x3be1b0;})[_0xcb84('0x1c')](function(_0x5ea044){if(_0x5ea044){if(_0x55f4da[_0xcb84('0x56')]['manual']){_0x3be1b0['message']['interface']=util[_0xcb84('0x5e')](_0xcb84('0x76'),_0x55f4da[_0xcb84('0x69')]['name']);_0x3be1b0['message'][_0xcb84('0x77')]=_0x3be1b0[_0xcb84('0x77')];_0x3be1b0[_0xcb84('0x23')][_0xcb84('0x78')]=_0x3be1b0[_0xcb84('0x77')];_0x3be1b0['message'][_0xcb84('0x79')]='accept';return respondWithRpcPromise(_0xcb84('0x7a'),_0xcb84('0x7a'),{'event':'acceptmessage','message':_[_0xcb84('0x4d')](_0x3be1b0[_0xcb84('0x23')],JSON[_0xcb84('0x7b')](_0x3be1b0['interaction'][_0xcb84('0x7c')]))},client9002)[_0xcb84('0x1c')](function(){return _0x3be1b0;});}return _0x3be1b0;}return null;})[_0xcb84('0x1c')](respondWithResult(_0xabc662,null))[_0xcb84('0x25')](handleError(_0xabc662,null));};var interaction_log=require(_0xcb84('0x59'))(_0xcb84('0x7d'));exports[_0xcb84('0x30')]=function(_0x88cba6,_0x57404a,_0x11e1c6){var _0x30910c={'agent':{},'channel':'chat'};if(_0x88cba6[_0xcb84('0x56')]['id']){delete _0x88cba6[_0xcb84('0x56')]['id'];}_0x88cba6['body'][_0xcb84('0x60')]=_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')]||_0x88cba6[_0xcb84('0x69')]['id'];_0x30910c[_0xcb84('0x61')]['id']=_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')];return db[_0xcb84('0x38')][_0xcb84('0x54')]({'where':{'id':_0x88cba6[_0xcb84('0x57')]['id'],'UserId':null}})[_0xcb84('0x1c')](handleEntityNotFound(_0x57404a,null))['then'](function(_0x162422){if(_0x162422){_0x30910c[_0xcb84('0x23')]=_0x162422[_0xcb84('0x62')]({'plain':!![]});return db[_0xcb84('0x63')]['find']({'where':{'id':_0x162422[_0xcb84('0x64')]}});}return null;})['then'](handleEntityNotFound(_0x57404a,null))[_0xcb84('0x1c')](function(_0x10f7da){if(_0x10f7da){_0x30910c[_0xcb84('0x67')]=_0x10f7da[_0xcb84('0x62')]({'plain':!![]});interaction_log[_0xcb84('0x1d')](_0xcb84('0x7e'),_0x88cba6[_0xcb84('0x69')]['id'],_0x88cba6[_0xcb84('0x69')][_0xcb84('0x35')],_0x88cba6[_0xcb84('0x69')]['role'],_0x30910c[_0xcb84('0x67')]['id'],_0x88cba6[_0xcb84('0x56')]?JSON['stringify'](_0x88cba6[_0xcb84('0x56')]):_0xcb84('0x7f'));return respondWithRpcPromise(_0xcb84('0x80'),_0xcb84('0x81'),_0x30910c);}return null;})[_0xcb84('0x1c')](function(_0x2ff887){var _0x55cab1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2ff887[_0xcb84('0x23')][_0xcb84('0x6d')];return db[_0xcb84('0x6e')][_0xcb84('0x40')](_0x55cab1,{'type':db['Sequelize'][_0xcb84('0x70')][_0xcb84('0x71')],'raw':!![]})[_0xcb84('0x1c')](function(_0x1f627c){return _0x1f627c;});})['then'](function(_0x40c228){if(_0x40c228){_0x30910c[_0xcb84('0x23')][_0xcb84('0x72')]=_0x40c228[0x0];if(!_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')])return;return db['User'][_0xcb84('0x54')]({'where':{'id':_0x88cba6[_0xcb84('0x56')][_0xcb84('0x60')],'role':_0xcb84('0x61')},'attributes':['id',_0xcb84('0x35'),_0xcb84('0x74'),_0xcb84('0x82'),_0xcb84('0x75')],'raw':!![]});}return null;})[_0xcb84('0x1c')](function(_0x3bb807){if(!_0x3bb807)return null;_0x30910c[_0xcb84('0x23')][_0xcb84('0x61')]=_0x3bb807;return _0x30910c;})[_0xcb84('0x1c')](function(_0x560d55){if(_0x560d55){_0x560d55[_0xcb84('0x23')][_0xcb84('0x83')]=util[_0xcb84('0x5e')]('SIP/%s',_0x88cba6[_0xcb84('0x69')][_0xcb84('0x35')]);_0x560d55[_0xcb84('0x23')][_0xcb84('0x77')]=_0x30910c[_0xcb84('0x77')];_0x560d55[_0xcb84('0x23')]['motionChannel']=_0x30910c[_0xcb84('0x77')];_0x560d55[_0xcb84('0x23')][_0xcb84('0x79')]='reject';respondWithRpcPromise(_0xcb84('0x7a'),_0xcb84('0x7a'),{'event':'rejectmessage','message':_['merge'](_0x30910c['message'],JSON[_0xcb84('0x7b')](_0x30910c[_0xcb84('0x67')][_0xcb84('0x7c')]))},client9002);return _0x30910c;}return null;})[_0xcb84('0x1c')](respondWithResult(_0x57404a,null))[_0xcb84('0x25')](handleError(_0x57404a,null));};
\ No newline at end of file
+var _0x4eac=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','save','update','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','options','ChatMessage','includeAll','include','findAll','catch','show','params','find','create','body','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','ChatInteractionId','isNil','read1stAt','get','role','interaction','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','motionChannel','event','EventManager','formData','reject','RejectMessage','rejectMessage','SIP/%s','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x53a7a8,_0xed2bff){var _0x555f71=function(_0x48e696){while(--_0x48e696){_0x53a7a8['push'](_0x53a7a8['shift']());}};_0x555f71(++_0xed2bff);}(_0x4eac,0x185));var _0xc4ea=function(_0x5140b3,_0x106b42){_0x5140b3=_0x5140b3-0x0;var _0x10b4f9=_0x4eac[_0x5140b3];return _0x10b4f9;};'use strict';var emlformat=require(_0xc4ea('0x0'));var rimraf=require(_0xc4ea('0x1'));var zipdir=require(_0xc4ea('0x2'));var jsonpatch=require(_0xc4ea('0x3'));var rp=require(_0xc4ea('0x4'));var moment=require(_0xc4ea('0x5'));var BPromise=require(_0xc4ea('0x6'));var Mustache=require(_0xc4ea('0x7'));var util=require(_0xc4ea('0x8'));var path=require(_0xc4ea('0x9'));var sox=require(_0xc4ea('0xa'));var csv=require(_0xc4ea('0xb'));var ejs=require(_0xc4ea('0xc'));var fs=require('fs');var fs_extra=require(_0xc4ea('0xd'));var _=require(_0xc4ea('0xe'));var squel=require(_0xc4ea('0xf'));var crypto=require(_0xc4ea('0x10'));var jsforce=require(_0xc4ea('0x11'));var deskjs=require(_0xc4ea('0x12'));var toCsv=require('to-csv');var querystring=require(_0xc4ea('0x13'));var Papa=require(_0xc4ea('0x14'));var Redis=require(_0xc4ea('0x15'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc4ea('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4ea('0x17'))(_0xc4ea('0x18'));var utils=require(_0xc4ea('0x19'));var config=require(_0xc4ea('0x1a'));var licenseUtil=require(_0xc4ea('0x1b'));var db=require(_0xc4ea('0x1c'))['db'];config[_0xc4ea('0x1d')]=_[_0xc4ea('0x1e')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc4ea('0x1d')]));require('./chatMessage.socket')[_0xc4ea('0x1f')](socket);var jayson=require(_0xc4ea('0x20'));var client=jayson[_0xc4ea('0x21')][_0xc4ea('0x22')]({'port':0x232c});var client9002=jayson[_0xc4ea('0x21')][_0xc4ea('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x3af49c,_0x32e400,_0x2f8d67,_0xe60b0e){return new BPromise(function(_0x1971d1,_0x4ef9bd){var _0x86659c=_0xe60b0e||client;return _0x86659c[_0xc4ea('0x23')](_0x3af49c,_0x2f8d67)[_0xc4ea('0x24')](function(_0x101646){logger[_0xc4ea('0x25')](_0xc4ea('0x26'),_0x32e400,'request\x20sent');logger[_0xc4ea('0x27')](_0xc4ea('0x28'),_0x32e400,_0xc4ea('0x29'),JSON['stringify'](_0x101646));if(_0x101646['error']){if(_0x101646[_0xc4ea('0x2a')][_0xc4ea('0x2b')]===0x1f4){logger[_0xc4ea('0x2a')]('ChatMessage,\x20%s,\x20%s',_0x32e400,_0x101646[_0xc4ea('0x2a')]['message']);return _0x4ef9bd(_0x101646['error'][_0xc4ea('0x2c')]);}logger[_0xc4ea('0x2a')]('ChatMessage,\x20%s,\x20%s',_0x32e400,_0x101646[_0xc4ea('0x2a')][_0xc4ea('0x2c')]);return _0x1971d1(_0x101646['error'][_0xc4ea('0x2c')]);}else{logger[_0xc4ea('0x25')](_0xc4ea('0x26'),_0x32e400,_0xc4ea('0x29'));_0x1971d1(_0x101646[_0xc4ea('0x2d')][_0xc4ea('0x2c')]);}})['catch'](function(_0x28dc75){logger[_0xc4ea('0x2a')](_0xc4ea('0x26'),_0x32e400,_0x28dc75);_0x4ef9bd(_0x28dc75);});});}function respondWithStatusCode(_0xb58749,_0x4915df){_0x4915df=_0x4915df||0xcc;return function(_0xad2c1c){if(_0xad2c1c){return _0xb58749[_0xc4ea('0x2e')](_0x4915df);}return _0xb58749['status'](_0x4915df)[_0xc4ea('0x2f')]();};}function respondWithResult(_0x3fc48f,_0x542b9d){_0x542b9d=_0x542b9d||0xc8;return function(_0x2b00f9){if(_0x2b00f9){return _0x3fc48f[_0xc4ea('0x30')](_0x542b9d)[_0xc4ea('0x31')](_0x2b00f9);}};}function respondWithFilteredResult(_0x2d34f0,_0xfa00c0){return function(_0x151f01){if(_0x151f01){var _0x2bfedc=typeof _0xfa00c0[_0xc4ea('0x32')]===_0xc4ea('0x33')&&typeof _0xfa00c0[_0xc4ea('0x34')]===_0xc4ea('0x33');var _0x420d2d=_0x151f01[_0xc4ea('0x35')];var _0x32768a=_0x2bfedc?0x0:_0xfa00c0['offset'];var _0x3b20d8=_0x2bfedc?_0x151f01[_0xc4ea('0x35')]:_0xfa00c0[_0xc4ea('0x32')]+_0xfa00c0[_0xc4ea('0x34')];var _0x45a70b;if(_0x3b20d8>=_0x420d2d){_0x3b20d8=_0x420d2d;_0x45a70b=0xc8;}else{_0x45a70b=0xce;}_0x2d34f0[_0xc4ea('0x30')](_0x45a70b);return _0x2d34f0[_0xc4ea('0x36')]('Content-Range',_0x32768a+'-'+_0x3b20d8+'/'+_0x420d2d)[_0xc4ea('0x31')](_0x151f01);}return null;};}function patchUpdates(_0x3894d7){return function(_0x54f79c){try{jsonpatch['apply'](_0x54f79c,_0x3894d7,!![]);}catch(_0x1a9e88){return BPromise['reject'](_0x1a9e88);}return _0x54f79c[_0xc4ea('0x37')]();};}function saveUpdates(_0x370f13,_0x14583c){return function(_0x49ac0d){if(_0x49ac0d){return _0x49ac0d[_0xc4ea('0x38')](_0x370f13)['then'](function(_0x2fca7d){return _0x2fca7d;});}return null;};}function removeEntity(_0x33bf92,_0xaea89c){return function(_0x207473){if(_0x207473){return _0x207473[_0xc4ea('0x39')]()[_0xc4ea('0x24')](function(){_0x33bf92[_0xc4ea('0x30')](0xcc)[_0xc4ea('0x2f')]();});}};}function handleEntityNotFound(_0x626fc8,_0x4a98ca){return function(_0x3b9728){if(!_0x3b9728){_0x626fc8[_0xc4ea('0x2e')](0x194);}return _0x3b9728;};}function handleError(_0x375f3f,_0x2decee){_0x2decee=_0x2decee||0x1f4;return function(_0x43269b){logger['error'](_0x43269b[_0xc4ea('0x3a')]);if(_0x43269b['name']){delete _0x43269b[_0xc4ea('0x3b')];}_0x375f3f[_0xc4ea('0x30')](_0x2decee)[_0xc4ea('0x3c')](_0x43269b);};}exports[_0xc4ea('0x3d')]=function(_0x32f779,_0xee79f3){var _0x537429={},_0x1b4f14={},_0x4b430a={'count':0x0,'rows':[]};var _0x2261ae=_['map'](db['ChatMessage'][_0xc4ea('0x3e')],function(_0x17343e){return{'name':_0x17343e[_0xc4ea('0x3f')],'type':_0x17343e[_0xc4ea('0x40')][_0xc4ea('0x41')]};});_0x1b4f14[_0xc4ea('0x42')]=_['map'](_0x2261ae,'name');_0x1b4f14['query']=_[_0xc4ea('0x43')](_0x32f779[_0xc4ea('0x44')]);_0x1b4f14[_0xc4ea('0x45')]=_[_0xc4ea('0x46')](_0x1b4f14['model'],_0x1b4f14[_0xc4ea('0x44')]);_0x537429[_0xc4ea('0x47')]=_[_0xc4ea('0x46')](_0x1b4f14[_0xc4ea('0x42')],qs[_0xc4ea('0x48')](_0x32f779[_0xc4ea('0x44')][_0xc4ea('0x48')]));_0x537429[_0xc4ea('0x47')]=_0x537429[_0xc4ea('0x47')][_0xc4ea('0x49')]?_0x537429[_0xc4ea('0x47')]:_0x1b4f14[_0xc4ea('0x42')];if(!_0x32f779['query'][_0xc4ea('0x4a')](_0xc4ea('0x4b'))){_0x537429[_0xc4ea('0x34')]=qs[_0xc4ea('0x34')](_0x32f779[_0xc4ea('0x44')][_0xc4ea('0x34')]);_0x537429[_0xc4ea('0x32')]=qs['offset'](_0x32f779[_0xc4ea('0x44')][_0xc4ea('0x32')]);}_0x537429[_0xc4ea('0x4c')]=qs[_0xc4ea('0x4d')](_0x32f779['query'][_0xc4ea('0x4d')]);_0x537429[_0xc4ea('0x4e')]=qs[_0xc4ea('0x45')](_['pick'](_0x32f779[_0xc4ea('0x44')],_0x1b4f14[_0xc4ea('0x45')]),_0x2261ae);if(_0x32f779[_0xc4ea('0x44')][_0xc4ea('0x4f')]){_0x537429['where']=_[_0xc4ea('0x50')](_0x537429[_0xc4ea('0x4e')],{'$or':_[_0xc4ea('0x51')](_0x2261ae,function(_0x27c9d4){if(_0x27c9d4[_0xc4ea('0x40')]!=='VIRTUAL'){var _0x417f02={};_0x417f02[_0x27c9d4['name']]={'$like':'%'+_0x32f779['query']['filter']+'%'};return _0x417f02;}})});}_0x537429=_[_0xc4ea('0x50')]({},_0x537429,_0x32f779[_0xc4ea('0x52')]);var _0x5801cd={'where':_0x537429[_0xc4ea('0x4e')]};return db[_0xc4ea('0x53')]['count'](_0x5801cd)['then'](function(_0x25b004){_0x4b430a[_0xc4ea('0x35')]=_0x25b004;if(_0x32f779[_0xc4ea('0x44')][_0xc4ea('0x54')]){_0x537429[_0xc4ea('0x55')]=[{'all':!![]}];}return db['ChatMessage'][_0xc4ea('0x56')](_0x537429);})['then'](function(_0x38a39d){_0x4b430a['rows']=_0x38a39d;return _0x4b430a;})[_0xc4ea('0x24')](respondWithFilteredResult(_0xee79f3,_0x537429))[_0xc4ea('0x57')](handleError(_0xee79f3,null));};exports[_0xc4ea('0x58')]=function(_0x569ef7,_0x4f9c48){var _0x3032dc={'raw':!![],'where':{'id':_0x569ef7[_0xc4ea('0x59')]['id']}},_0x575ede={};_0x575ede[_0xc4ea('0x42')]=_[_0xc4ea('0x43')](db[_0xc4ea('0x53')][_0xc4ea('0x3e')]);_0x575ede[_0xc4ea('0x44')]=_[_0xc4ea('0x43')](_0x569ef7['query']);_0x575ede[_0xc4ea('0x45')]=_[_0xc4ea('0x46')](_0x575ede[_0xc4ea('0x42')],_0x575ede['query']);_0x3032dc['attributes']=_['intersection'](_0x575ede[_0xc4ea('0x42')],qs[_0xc4ea('0x48')](_0x569ef7[_0xc4ea('0x44')][_0xc4ea('0x48')]));_0x3032dc[_0xc4ea('0x47')]=_0x3032dc['attributes'][_0xc4ea('0x49')]?_0x3032dc[_0xc4ea('0x47')]:_0x575ede[_0xc4ea('0x42')];if(_0x569ef7['query']['includeAll']){_0x3032dc[_0xc4ea('0x55')]=[{'all':!![]}];}_0x3032dc=_[_0xc4ea('0x50')]({},_0x3032dc,_0x569ef7[_0xc4ea('0x52')]);return db[_0xc4ea('0x53')][_0xc4ea('0x5a')](_0x3032dc)[_0xc4ea('0x24')](handleEntityNotFound(_0x4f9c48,null))[_0xc4ea('0x24')](respondWithResult(_0x4f9c48,null))[_0xc4ea('0x57')](handleError(_0x4f9c48,null));};exports[_0xc4ea('0x5b')]=function(_0x1b3252,_0x2813ce){return db[_0xc4ea('0x53')][_0xc4ea('0x5b')](_0x1b3252['body'],{})['then'](respondWithResult(_0x2813ce,0xc9))['catch'](handleError(_0x2813ce,null));};exports[_0xc4ea('0x38')]=function(_0x4ba8dc,_0x2c2310){if(_0x4ba8dc[_0xc4ea('0x5c')]['id']){delete _0x4ba8dc[_0xc4ea('0x5c')]['id'];}return db[_0xc4ea('0x53')]['find']({'where':{'id':_0x4ba8dc[_0xc4ea('0x59')]['id']}})[_0xc4ea('0x24')](handleEntityNotFound(_0x2c2310,null))[_0xc4ea('0x24')](saveUpdates(_0x4ba8dc['body'],null))[_0xc4ea('0x24')](respondWithResult(_0x2c2310,null))['catch'](handleError(_0x2c2310,null));};exports[_0xc4ea('0x39')]=function(_0x5ed38e,_0x5e048e){return db[_0xc4ea('0x53')]['find']({'where':{'id':_0x5ed38e[_0xc4ea('0x59')]['id']}})[_0xc4ea('0x24')](handleEntityNotFound(_0x5e048e,null))[_0xc4ea('0x24')](removeEntity(_0x5e048e,null))['catch'](handleError(_0x5e048e,null));};exports[_0xc4ea('0x5d')]=function(_0x4fc62f,_0x2f19b7){return db[_0xc4ea('0x53')][_0xc4ea('0x5d')]()[_0xc4ea('0x24')](respondWithResult(_0x2f19b7,null))[_0xc4ea('0x57')](handleError(_0x2f19b7,null));};var interaction_log=require('../../config/logger')(_0xc4ea('0x5e'));exports[_0xc4ea('0x5f')]=function(_0xdf332d,_0x58327f,_0x3e9b2b){var _0x486f8e={'agent':{},'channel':_0xc4ea('0x60')};if(_0xdf332d[_0xc4ea('0x5c')]['id']){delete _0xdf332d[_0xc4ea('0x5c')]['id'];}_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x61')]=!![];_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x62')]=moment()[_0xc4ea('0x63')](_0xc4ea('0x64'));_0xdf332d['body'][_0xc4ea('0x65')]=_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x65')]||_0xdf332d[_0xc4ea('0x66')]['id'];_0x486f8e[_0xc4ea('0x67')]['id']=_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x65')];return db['ChatMessage']['find']({'where':{'id':_0xdf332d[_0xc4ea('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x58327f,null))[_0xc4ea('0x24')](saveUpdates(_0xdf332d[_0xc4ea('0x5c')],null))['then'](function(_0x31b45c){if(_0x31b45c){_0x486f8e[_0xc4ea('0x2c')]=_0x31b45c['get']({'plain':!![]});return db[_0xc4ea('0x68')]['find']({'where':{'id':_0x31b45c[_0xc4ea('0x69')]}});}return null;})[_0xc4ea('0x24')](handleEntityNotFound(_0x58327f,null))[_0xc4ea('0x24')](function(_0x508b7d){if(_0x508b7d){return _0x508b7d[_0xc4ea('0x38')]({'UserId':_0xdf332d[_0xc4ea('0x5c')]['UserId'],'read1stAt':_[_0xc4ea('0x6a')](_0x508b7d[_0xc4ea('0x6b')])?moment()['format'](_0xc4ea('0x64')):undefined});}return null;})['then'](function(_0x2908c9){if(_0x2908c9){_0x486f8e['interaction']=_0x2908c9[_0xc4ea('0x6c')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xdf332d['user']['id'],_0xdf332d[_0xc4ea('0x66')][_0xc4ea('0x3b')],_0xdf332d[_0xc4ea('0x66')][_0xc4ea('0x6d')],_0x486f8e[_0xc4ea('0x6e')]['id'],_0xdf332d[_0xc4ea('0x5c')]?JSON[_0xc4ea('0x6f')](_0xdf332d[_0xc4ea('0x5c')]):_0xc4ea('0x70'));return respondWithRpcPromise(_0xc4ea('0x71'),_0xc4ea('0x72'),_0x486f8e);}return null;})['then'](function(_0xeff5e6){var _0xc7df8=_0xc4ea('0x73')+_0xeff5e6['message'][_0xc4ea('0x74')];return db[_0xc4ea('0x75')][_0xc4ea('0x44')](_0xc7df8,{'type':db[_0xc4ea('0x76')][_0xc4ea('0x77')][_0xc4ea('0x78')],'raw':!![]})[_0xc4ea('0x24')](function(_0x2a095f){return _0x2a095f;});})[_0xc4ea('0x24')](function(_0x5d5e6c){if(_0x5d5e6c){_0x486f8e[_0xc4ea('0x2c')][_0xc4ea('0x79')]=_0x5d5e6c[0x0];if(!_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x65')])return;return db[_0xc4ea('0x7a')][_0xc4ea('0x5a')]({'where':{'id':_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x65')],'role':_0xc4ea('0x67')},'attributes':['id','name',_0xc4ea('0x7b'),_0xc4ea('0x7c'),_0xc4ea('0x7d')],'raw':!![]});}return null;})[_0xc4ea('0x24')](function(_0x2c8b7c){if(!_0x2c8b7c)return null;_0x486f8e[_0xc4ea('0x2c')][_0xc4ea('0x67')]=_0x2c8b7c;return _0x486f8e;})[_0xc4ea('0x24')](function(_0x4a280c){if(_0x4a280c){if(_0xdf332d[_0xc4ea('0x5c')][_0xc4ea('0x7e')]){_0x486f8e[_0xc4ea('0x2c')][_0xc4ea('0x7f')]=util[_0xc4ea('0x63')]('SIP/%s',_0xdf332d[_0xc4ea('0x66')][_0xc4ea('0x3b')]);_0x486f8e['message'][_0xc4ea('0x80')]=_0x486f8e[_0xc4ea('0x80')];_0x486f8e[_0xc4ea('0x2c')][_0xc4ea('0x81')]=_0x486f8e[_0xc4ea('0x80')];_0x486f8e[_0xc4ea('0x2c')][_0xc4ea('0x82')]=_0xc4ea('0x5f');return respondWithRpcPromise(_0xc4ea('0x83'),'EventManager',{'event':'acceptmessage','message':_[_0xc4ea('0x50')](_0x486f8e[_0xc4ea('0x2c')],JSON['parse'](_0x486f8e[_0xc4ea('0x6e')][_0xc4ea('0x84')]))},client9002)['then'](function(){return _0x486f8e;});}return _0x486f8e;}return null;})[_0xc4ea('0x24')](respondWithResult(_0x58327f,null))[_0xc4ea('0x57')](handleError(_0x58327f,null));};var interaction_log=require('../../config/logger')(_0xc4ea('0x5e'));exports[_0xc4ea('0x85')]=function(_0x31a938,_0x1e9389,_0x15cb2b){var _0x4decab={'agent':{},'channel':_0xc4ea('0x60')};if(_0x31a938[_0xc4ea('0x5c')]['id']){delete _0x31a938[_0xc4ea('0x5c')]['id'];}_0x31a938['body'][_0xc4ea('0x65')]=_0x31a938[_0xc4ea('0x5c')][_0xc4ea('0x65')]||_0x31a938[_0xc4ea('0x66')]['id'];_0x4decab['agent']['id']=_0x31a938[_0xc4ea('0x5c')][_0xc4ea('0x65')];return db[_0xc4ea('0x53')]['find']({'where':{'id':_0x31a938[_0xc4ea('0x59')]['id'],'UserId':null}})[_0xc4ea('0x24')](handleEntityNotFound(_0x1e9389,null))[_0xc4ea('0x24')](function(_0x5bcdbe){if(_0x5bcdbe){_0x4decab['message']=_0x5bcdbe[_0xc4ea('0x6c')]({'plain':!![]});return db['ChatInteraction'][_0xc4ea('0x5a')]({'where':{'id':_0x5bcdbe[_0xc4ea('0x69')]}});}return null;})['then'](handleEntityNotFound(_0x1e9389,null))['then'](function(_0x12aec2){if(_0x12aec2){_0x4decab[_0xc4ea('0x6e')]=_0x12aec2[_0xc4ea('0x6c')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x31a938['user']['id'],_0x31a938[_0xc4ea('0x66')][_0xc4ea('0x3b')],_0x31a938[_0xc4ea('0x66')][_0xc4ea('0x6d')],_0x4decab[_0xc4ea('0x6e')]['id'],_0x31a938[_0xc4ea('0x5c')]?JSON[_0xc4ea('0x6f')](_0x31a938[_0xc4ea('0x5c')]):_0xc4ea('0x70'));return respondWithRpcPromise(_0xc4ea('0x86'),_0xc4ea('0x87'),_0x4decab);}return null;})['then'](function(_0x3397a4){var _0x243022=_0xc4ea('0x73')+_0x3397a4[_0xc4ea('0x2c')][_0xc4ea('0x74')];return db[_0xc4ea('0x75')][_0xc4ea('0x44')](_0x243022,{'type':db[_0xc4ea('0x76')][_0xc4ea('0x77')]['SELECT'],'raw':!![]})[_0xc4ea('0x24')](function(_0x47a228){return _0x47a228;});})[_0xc4ea('0x24')](function(_0x1f4646){if(_0x1f4646){_0x4decab[_0xc4ea('0x2c')][_0xc4ea('0x79')]=_0x1f4646[0x0];if(!_0x31a938[_0xc4ea('0x5c')][_0xc4ea('0x65')])return;return db[_0xc4ea('0x7a')]['find']({'where':{'id':_0x31a938[_0xc4ea('0x5c')][_0xc4ea('0x65')],'role':_0xc4ea('0x67')},'attributes':['id',_0xc4ea('0x3b'),'fullname',_0xc4ea('0x7c'),'internal'],'raw':!![]});}return null;})['then'](function(_0x4f6c04){if(!_0x4f6c04)return null;_0x4decab[_0xc4ea('0x2c')][_0xc4ea('0x67')]=_0x4f6c04;return _0x4decab;})['then'](function(_0x3e2d4e){if(_0x3e2d4e){_0x3e2d4e['message'][_0xc4ea('0x7f')]=util[_0xc4ea('0x63')](_0xc4ea('0x88'),_0x31a938['user'][_0xc4ea('0x3b')]);_0x3e2d4e[_0xc4ea('0x2c')][_0xc4ea('0x80')]=_0x4decab[_0xc4ea('0x80')];_0x3e2d4e[_0xc4ea('0x2c')][_0xc4ea('0x81')]=_0x4decab[_0xc4ea('0x80')];_0x3e2d4e[_0xc4ea('0x2c')]['event']=_0xc4ea('0x85');respondWithRpcPromise(_0xc4ea('0x83'),_0xc4ea('0x83'),{'event':_0xc4ea('0x89'),'message':_[_0xc4ea('0x50')](_0x4decab['message'],JSON['parse'](_0x4decab[_0xc4ea('0x6e')]['formData']))},client9002);return _0x4decab;}return null;})[_0xc4ea('0x24')](respondWithResult(_0x1e9389,null))['catch'](handleError(_0x1e9389,null));};
\ No newline at end of file
index bb71a2e..7f49218 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa95=['exports','events','../../mysqldb','ChatMessage','setMaxListeners','emit'];(function(_0xd22792,_0x3deea5){var _0x20563a=function(_0x27a095){while(--_0x27a095){_0xd22792['push'](_0xd22792['shift']());}};_0x20563a(++_0x3deea5);}(_0xaa95,0x115));var _0x5aa9=function(_0x4dfbe1,_0x12bdce){_0x4dfbe1=_0x4dfbe1-0x0;var _0x507f8b=_0xaa95[_0x4dfbe1];return _0x507f8b;};'use strict';var EventEmitter=require(_0x5aa9('0x0'));var ChatMessage=require(_0x5aa9('0x1'))['db'][_0x5aa9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x5aa9('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x444b29){return function(_0x1e52ce,_0xd9f300,_0x46a5de){ChatMessageEvents[_0x5aa9('0x4')](_0x444b29+':'+_0x1e52ce['id'],_0x1e52ce);ChatMessageEvents[_0x5aa9('0x4')](_0x444b29,_0x1e52ce);_0x46a5de(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x5aa9('0x5')]=ChatMessageEvents;
\ No newline at end of file
+var _0x7590=['hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x37464d,_0x29bf11){var _0x4e7573=function(_0x4de5e3){while(--_0x4de5e3){_0x37464d['push'](_0x37464d['shift']());}};_0x4e7573(++_0x29bf11);}(_0x7590,0x19c));var _0x0759=function(_0x5f5497,_0x50803a){_0x5f5497=_0x5f5497-0x0;var _0x10e943=_0x7590[_0x5f5497];return _0x10e943;};'use strict';var EventEmitter=require(_0x0759('0x0'));var ChatMessage=require(_0x0759('0x1'))['db'][_0x0759('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x0759('0x3')](0x0);var events={'afterCreate':_0x0759('0x4'),'afterUpdate':'update','afterDestroy':_0x0759('0x5')};function emitEvent(_0x213268){return function(_0x3a73cd,_0x1be70b,_0xd61966){ChatMessageEvents[_0x0759('0x6')](_0x213268+':'+_0x3a73cd['id'],_0x3a73cd);ChatMessageEvents['emit'](_0x213268,_0x3a73cd);_0xd61966(null);};}for(var e in events){if(events[_0x0759('0x7')](e)){var event=events[e];ChatMessage[_0x0759('0x8')](e,emitEvent(event));}}module[_0x0759('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 4d70a69..d4974b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d2a=['UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','direction','toLowerCase','secret','isNil'];(function(_0xcbf392,_0x18ad25){var _0x22477b=function(_0x2fcb6a){while(--_0x2fcb6a){_0xcbf392['push'](_0xcbf392['shift']());}};_0x22477b(++_0x18ad25);}(_0x4d2a,0x1cc));var _0xa4d2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4d2a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa4d2('0x0'));var util=require(_0xa4d2('0x1'));var logger=require(_0xa4d2('0x2'))(_0xa4d2('0x3'));var moment=require(_0xa4d2('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa4d2('0x5'));var rimraf=require('rimraf');var config=require(_0xa4d2('0x6'));var attributes=require(_0xa4d2('0x7'));module[_0xa4d2('0x8')]=function(_0x50c26a,_0x4f860f){return _0x50c26a[_0xa4d2('0x9')](_0xa4d2('0xa'),attributes,{'tableName':_0xa4d2('0xb'),'paranoid':![],'indexes':[{'name':_0xa4d2('0xc'),'fields':[_0xa4d2('0xd')],'type':_0xa4d2('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x245eb3,_0x54c9ce,_0x36d3b3){var _0x1da0b5=_0x50c26a[_0xa4d2('0xf')];var _0x3dd797=_0x245eb3['get']({'plain':!![]});if(_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()==='in'||_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()==='out'&&!_0x3dd797[_0xa4d2('0x12')]&&!_[_0xa4d2('0x13')](_0x3dd797[_0xa4d2('0x14')])){_0x1da0b5[_0xa4d2('0x15')][_0xa4d2('0x16')]({'where':{'id':_0x3dd797[_0xa4d2('0x17')]}})[_0xa4d2('0x18')](function(_0x58b969){if(_0x58b969){_0x58b969['update']({'lastMsgAt':_0x3dd797[_0xa4d2('0x19')],'lastMsgDirection':_0x3dd797[_0xa4d2('0x10')][_0xa4d2('0x11')]()});}})[_0xa4d2('0x1a')](function(_0x223bbc){console[_0xa4d2('0x1b')](_0x223bbc);});}_0x36d3b3();}},'charset':_0xa4d2('0x1c'),'collate':_0xa4d2('0x1d')});};
\ No newline at end of file
+var _0xd765=['then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','fti_chat_messages','get','direction','toLowerCase','isNil','UserId','ChatInteraction','ChatInteractionId'];(function(_0x18ac42,_0x3de9f1){var _0x380855=function(_0x316313){while(--_0x316313){_0x18ac42['push'](_0x18ac42['shift']());}};_0x380855(++_0x3de9f1);}(_0xd765,0xdf));var _0x5d76=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xd765[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x5d76('0x0'));var util=require(_0x5d76('0x1'));var logger=require(_0x5d76('0x2'))(_0x5d76('0x3'));var moment=require(_0x5d76('0x4'));var BPromise=require(_0x5d76('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5d76('0x6'));var rimraf=require('rimraf');var config=require(_0x5d76('0x7'));var attributes=require(_0x5d76('0x8'));module['exports']=function(_0x280536,_0x175058){return _0x280536[_0x5d76('0x9')](_0x5d76('0xa'),attributes,{'tableName':_0x5d76('0xb'),'paranoid':![],'indexes':[{'name':_0x5d76('0xc'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c8b40,_0x1bf530,_0x339e41){var _0x31c85f=_0x280536['models'];var _0x504b8b=_0x3c8b40[_0x5d76('0xd')]({'plain':!![]});if(_0x504b8b[_0x5d76('0xe')][_0x5d76('0xf')]()==='in'||_0x504b8b['direction']['toLowerCase']()==='out'&&!_0x504b8b['secret']&&!_[_0x5d76('0x10')](_0x504b8b[_0x5d76('0x11')])){_0x31c85f[_0x5d76('0x12')]['findOne']({'where':{'id':_0x504b8b[_0x5d76('0x13')]}})[_0x5d76('0x14')](function(_0x5234f7){if(_0x5234f7){_0x5234f7[_0x5d76('0x15')]({'lastMsgAt':_0x504b8b[_0x5d76('0x16')],'lastMsgDirection':_0x504b8b[_0x5d76('0xe')][_0x5d76('0xf')]()});}})[_0x5d76('0x17')](function(_0x565397){console[_0x5d76('0x18')](_0x565397);});}_0x339e41();}},'charset':_0x5d76('0x19'),'collate':_0x5d76('0x1a')});};
\ No newline at end of file
index 9cda6f1..c9afb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf322=['redis','defaults','./chatMessage.socket','request','info','ChatMessage,\x20%s,\x20%s','debug','request\x20sent','error','code','message','catch','CreateChatMessage','ChatMessage','create','body','options','raw','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x497e1a,_0x39bf4e){var _0x6e5280=function(_0x20165c){while(--_0x20165c){_0x497e1a['push'](_0x497e1a['shift']());}};_0x6e5280(++_0x39bf4e);}(_0xf322,0x1b7));var _0x2f32=function(_0x3100cf,_0x287c5d){_0x3100cf=_0x3100cf-0x0;var _0x33e4e5=_0xf322[_0x3100cf];return _0x33e4e5;};'use strict';var _=require(_0x2f32('0x0'));var util=require(_0x2f32('0x1'));var moment=require('moment');var BPromise=require(_0x2f32('0x2'));var rs=require(_0x2f32('0x3'));var fs=require('fs');var Redis=require(_0x2f32('0x4'));var db=require(_0x2f32('0x5'))['db'];var utils=require(_0x2f32('0x6'));var logger=require(_0x2f32('0x7'))('rpc');var config=require(_0x2f32('0x8'));var jayson=require(_0x2f32('0x9'));var client=jayson[_0x2f32('0xa')]['http']({'port':0x232a});config[_0x2f32('0xb')]=_[_0x2f32('0xc')](config[_0x2f32('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2f32('0xb')]));require(_0x2f32('0xd'))['register'](socket);function respondWithRpcPromise(_0x5d970f,_0x210e42,_0x52f466){return new BPromise(function(_0x235222,_0x5eeb24){return client[_0x2f32('0xe')](_0x5d970f,_0x52f466)['then'](function(_0x5b106f){logger[_0x2f32('0xf')](_0x2f32('0x10'),_0x210e42,'request\x20sent');logger[_0x2f32('0x11')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x210e42,_0x2f32('0x12'),JSON['stringify'](_0x5b106f));if(_0x5b106f['error']){if(_0x5b106f[_0x2f32('0x13')][_0x2f32('0x14')]===0x1f4){logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);return _0x5eeb24(_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);}logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x5b106f[_0x2f32('0x13')][_0x2f32('0x15')]);return _0x235222(_0x5b106f['error'][_0x2f32('0x15')]);}else{logger[_0x2f32('0xf')]('ChatMessage,\x20%s,\x20%s',_0x210e42,_0x2f32('0x12'));_0x235222(_0x5b106f['result'][_0x2f32('0x15')]);}})[_0x2f32('0x16')](function(_0x25baca){logger[_0x2f32('0x13')](_0x2f32('0x10'),_0x210e42,_0x25baca);_0x5eeb24(_0x25baca);});});}exports[_0x2f32('0x17')]=function(_0x4c1db6){var _0x145137=this;return new Promise(function(_0x5c8630,_0x513df1){return db[_0x2f32('0x18')][_0x2f32('0x19')](_0x4c1db6[_0x2f32('0x1a')],{'raw':_0x4c1db6[_0x2f32('0x1b')]?_0x4c1db6[_0x2f32('0x1b')][_0x2f32('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x277c31){logger[_0x2f32('0xf')](_0x2f32('0x17'),_0x4c1db6);logger[_0x2f32('0x11')](_0x2f32('0x17'),_0x4c1db6,JSON[_0x2f32('0x1d')](_0x277c31));_0x5c8630(_0x277c31);})['catch'](function(_0x295e64){logger[_0x2f32('0x13')]('CreateChatMessage',_0x295e64[_0x2f32('0x15')],_0x4c1db6);_0x513df1(_0x145137[_0x2f32('0x13')](0x1f4,_0x295e64['message']));});});};
\ No newline at end of file
+var _0x0170=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','ChatMessage','body','options','raw','CreateChatMessage','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x20bf3f,_0x6729a7){var _0x10c51f=function(_0x1886d2){while(--_0x1886d2){_0x20bf3f['push'](_0x20bf3f['shift']());}};_0x10c51f(++_0x6729a7);}(_0x0170,0x1d6));var _0x0017=function(_0x55f174,_0x4c06dd){_0x55f174=_0x55f174-0x0;var _0x4a8265=_0x0170[_0x55f174];return _0x4a8265;};'use strict';var _=require(_0x0017('0x0'));var util=require(_0x0017('0x1'));var moment=require('moment');var BPromise=require(_0x0017('0x2'));var rs=require(_0x0017('0x3'));var fs=require('fs');var Redis=require(_0x0017('0x4'));var db=require(_0x0017('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0017('0x6'))(_0x0017('0x7'));var config=require(_0x0017('0x8'));var jayson=require(_0x0017('0x9'));var client=jayson[_0x0017('0xa')][_0x0017('0xb')]({'port':0x232a});config[_0x0017('0xc')]=_[_0x0017('0xd')](config[_0x0017('0xc')],{'host':_0x0017('0xe'),'port':0x18eb});var socket=require(_0x0017('0xf'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x0017('0x10')](socket);function respondWithRpcPromise(_0x453af3,_0x46c69f,_0x3904cb){return new BPromise(function(_0x3d0dff,_0x15bbe2){return client[_0x0017('0x11')](_0x453af3,_0x3904cb)[_0x0017('0x12')](function(_0x1205f6){logger[_0x0017('0x13')](_0x0017('0x14'),_0x46c69f,_0x0017('0x15'));logger[_0x0017('0x16')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x46c69f,_0x0017('0x15'),JSON[_0x0017('0x17')](_0x1205f6));if(_0x1205f6[_0x0017('0x18')]){if(_0x1205f6[_0x0017('0x18')][_0x0017('0x19')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x46c69f,_0x1205f6[_0x0017('0x18')][_0x0017('0x1a')]);return _0x15bbe2(_0x1205f6[_0x0017('0x18')]['message']);}logger[_0x0017('0x18')](_0x0017('0x14'),_0x46c69f,_0x1205f6[_0x0017('0x18')][_0x0017('0x1a')]);return _0x3d0dff(_0x1205f6['error'][_0x0017('0x1a')]);}else{logger[_0x0017('0x13')]('ChatMessage,\x20%s,\x20%s',_0x46c69f,_0x0017('0x15'));_0x3d0dff(_0x1205f6[_0x0017('0x1b')][_0x0017('0x1a')]);}})[_0x0017('0x1c')](function(_0x5d2439){logger[_0x0017('0x18')](_0x0017('0x14'),_0x46c69f,_0x5d2439);_0x15bbe2(_0x5d2439);});});}exports['CreateChatMessage']=function(_0x39ce0e){var _0x494123=this;return new Promise(function(_0x15a3a7,_0x54833a){return db[_0x0017('0x1d')]['create'](_0x39ce0e[_0x0017('0x1e')],{'raw':_0x39ce0e['options']?_0x39ce0e[_0x0017('0x1f')][_0x0017('0x20')]===undefined?!![]:![]:!![]})[_0x0017('0x12')](function(_0x30b1e5){logger[_0x0017('0x13')](_0x0017('0x21'),_0x39ce0e);logger['debug']('CreateChatMessage',_0x39ce0e,JSON[_0x0017('0x17')](_0x30b1e5));_0x15a3a7(_0x30b1e5);})[_0x0017('0x1c')](function(_0x447cc4){logger[_0x0017('0x18')]('CreateChatMessage',_0x447cc4[_0x0017('0x1a')],_0x39ce0e);_0x54833a(_0x494123[_0x0017('0x18')](0x1f4,_0x447cc4[_0x0017('0x1a')]));});});};
\ No newline at end of file
index a242ea3..9c8c05e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc949=['chatMessage:','./chatMessage.events','remove','update','emit','removeListener','register','length'];(function(_0x178c03,_0x31c7b2){var _0x13e510=function(_0x2f551a){while(--_0x2f551a){_0x178c03['push'](_0x178c03['shift']());}};_0x13e510(++_0x31c7b2);}(_0xc949,0x181));var _0x9c94=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xc949[_0x376b45];return _0x2341b3;};'use strict';var ChatMessageEvents=require(_0x9c94('0x0'));var events=['save',_0x9c94('0x1'),_0x9c94('0x2')];function createListener(_0x209cd8,_0x27613f){return function(_0x54facf){_0x27613f[_0x9c94('0x3')](_0x209cd8,_0x54facf);};}function removeListener(_0x231762,_0x528a17){return function(){ChatMessageEvents[_0x9c94('0x4')](_0x231762,_0x528a17);};}exports[_0x9c94('0x5')]=function(_0x46d560){for(var _0x1357ac=0x0,_0x57fcd7=events[_0x9c94('0x6')];_0x1357ac<_0x57fcd7;_0x1357ac++){var _0x360e7b=events[_0x1357ac];var _0x25ecd0=createListener(_0x9c94('0x7')+_0x360e7b,_0x46d560);ChatMessageEvents['on'](_0x360e7b,_0x25ecd0);}};
\ No newline at end of file
+var _0x68f5=['register','chatMessage:','./chatMessage.events','save','remove','emit','removeListener'];(function(_0x2f96dd,_0x5eae62){var _0xa4f8f1=function(_0x10f1f1){while(--_0x10f1f1){_0x2f96dd['push'](_0x2f96dd['shift']());}};_0xa4f8f1(++_0x5eae62);}(_0x68f5,0x11a));var _0x568f=function(_0x2fe0b5,_0x399055){_0x2fe0b5=_0x2fe0b5-0x0;var _0x27af80=_0x68f5[_0x2fe0b5];return _0x27af80;};'use strict';var ChatMessageEvents=require(_0x568f('0x0'));var events=[_0x568f('0x1'),_0x568f('0x2'),'update'];function createListener(_0x25a405,_0x44b6ad){return function(_0x23bd5b){_0x44b6ad[_0x568f('0x3')](_0x25a405,_0x23bd5b);};}function removeListener(_0x425217,_0x5de1c0){return function(){ChatMessageEvents[_0x568f('0x4')](_0x425217,_0x5de1c0);};}exports[_0x568f('0x5')]=function(_0x31444b){for(var _0x3181fd=0x0,_0x4ca62c=events['length'];_0x3181fd<_0x4ca62c;_0x3181fd++){var _0x953f02=events[_0x3181fd];var _0x3568a0=createListener(_0x568f('0x6')+_0x953f02,_0x31444b);ChatMessageEvents['on'](_0x953f02,_0x3568a0);}};
\ No newline at end of file
index fb68615..e2eede5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc229=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','destroy','util','path','Router','fs-extra','../../components/auth/service'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0xc229,0x199));var _0x9c22=function(_0x4882f4,_0x3a5bbb){_0x4882f4=_0x4882f4-0x0;var _0x5c6f2c=_0xc229[_0x4882f4];return _0x5c6f2c;};'use strict';var multer=require('multer');var util=require(_0x9c22('0x0'));var path=require(_0x9c22('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9c22('0x2')]();var fs_extra=require(_0x9c22('0x3'));var auth=require(_0x9c22('0x4'));var interaction=require(_0x9c22('0x5'));var config=require(_0x9c22('0x6'));var controller=require('./chatMessage.controller');router['get']('/',auth[_0x9c22('0x7')](),controller[_0x9c22('0x8')]);router[_0x9c22('0x9')](_0x9c22('0xa'),auth[_0x9c22('0x7')](),controller[_0x9c22('0xb')]);router[_0x9c22('0x9')](_0x9c22('0xc'),auth[_0x9c22('0x7')](),controller[_0x9c22('0xd')]);router['post']('/',auth[_0x9c22('0x7')](),interaction[_0x9c22('0xe')](_0x9c22('0xf'),_0x9c22('0x10')),controller[_0x9c22('0x11')]);router[_0x9c22('0x12')](_0x9c22('0xc'),controller[_0x9c22('0x13')]);router[_0x9c22('0x12')](_0x9c22('0x14'),auth[_0x9c22('0x7')](),controller[_0x9c22('0x15')]);router['put']('/:id/reject',auth[_0x9c22('0x7')](),controller['reject']);router['delete'](_0x9c22('0xc'),auth[_0x9c22('0x7')](),controller[_0x9c22('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xacad=['/describe','describe','/:id','show','chatmessage:create','create','put','/:id/accept','/:id/reject','reject','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index'];(function(_0x4c4a01,_0x365c6f){var _0x303469=function(_0x9b33f1){while(--_0x9b33f1){_0x4c4a01['push'](_0x4c4a01['shift']());}};_0x303469(++_0x365c6f);}(_0xacad,0x1a4));var _0xdaca=function(_0x17c3a7,_0x3c4a8d){_0x17c3a7=_0x17c3a7-0x0;var _0x4c45dd=_0xacad[_0x17c3a7];return _0x4c45dd;};'use strict';var multer=require(_0xdaca('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdaca('0x1'));var express=require(_0xdaca('0x2'));var router=express[_0xdaca('0x3')]();var fs_extra=require(_0xdaca('0x4'));var auth=require(_0xdaca('0x5'));var interaction=require(_0xdaca('0x6'));var config=require(_0xdaca('0x7'));var controller=require(_0xdaca('0x8'));router[_0xdaca('0x9')]('/',auth[_0xdaca('0xa')](),controller[_0xdaca('0xb')]);router['get'](_0xdaca('0xc'),auth[_0xdaca('0xa')](),controller[_0xdaca('0xd')]);router[_0xdaca('0x9')](_0xdaca('0xe'),auth[_0xdaca('0xa')](),controller[_0xdaca('0xf')]);router['post']('/',auth[_0xdaca('0xa')](),interaction['tracked']('chat',_0xdaca('0x10')),controller[_0xdaca('0x11')]);router[_0xdaca('0x12')](_0xdaca('0xe'),controller['update']);router[_0xdaca('0x12')](_0xdaca('0x13'),auth[_0xdaca('0xa')](),controller['accept']);router['put'](_0xdaca('0x14'),auth[_0xdaca('0xa')](),controller[_0xdaca('0x15')]);router['delete'](_0xdaca('0xe'),auth[_0xdaca('0xa')](),controller[_0xdaca('0x16')]);module[_0xdaca('0x17')]=router;
\ No newline at end of file
index dae0441..24b18e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe080=['TEXT','medium','exports'];(function(_0x4de72a,_0x4f89f0){var _0x486004=function(_0x49813d){while(--_0x49813d){_0x4de72a['push'](_0x4de72a['shift']());}};_0x486004(++_0x4f89f0);}(_0xe080,0x1a6));var _0x0e08=function(_0x13971b,_0x149588){_0x13971b=_0x13971b-0x0;var _0x558d1c=_0xe080[_0x13971b];return _0x558d1c;};'use strict';var Sequelize=require('sequelize');module[_0x0e08('0x0')]={'body':{'type':Sequelize[_0x0e08('0x1')](_0x0e08('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xf117=['TEXT','medium','exports'];(function(_0x5f12b1,_0x330f72){var _0x27e599=function(_0x585f2c){while(--_0x585f2c){_0x5f12b1['push'](_0x5f12b1['shift']());}};_0x27e599(++_0x330f72);}(_0xf117,0x122));var _0x7f11=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xf117[_0x36884e];return _0x1cc367;};'use strict';var Sequelize=require('sequelize');module[_0x7f11('0x0')]={'body':{'type':Sequelize[_0x7f11('0x1')](_0x7f11('0x2')),'allowNull':![]}};
\ No newline at end of file
index cee874b..d65a308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x7a54,0x106));var _0x47a5=function(_0x32aade,_0x24d5db){_0x32aade=_0x32aade-0x0;var _0x148ef7=_0x7a54[_0x32aade];return _0x148ef7;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x2b5d9b,_0x4e3d34){var _0x28c87d=function(_0x675c3f){while(--_0x675c3f){_0x2b5d9b['push'](_0x2b5d9b['shift']());}};_0x28c87d(++_0x4e3d34);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 2884178..9564d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x418c=['../../config/environment','define','ChatOfflineMessage','chat_offline_messages','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5130aa,_0x441b77){var _0x125ec6=function(_0x4d3bf2){while(--_0x4d3bf2){_0x5130aa['push'](_0x5130aa['shift']());}};_0x125ec6(++_0x441b77);}(_0x418c,0x164));var _0xc418=function(_0x239a99,_0x19e74b){_0x239a99=_0x239a99-0x0;var _0x506dc2=_0x418c[_0x239a99];return _0x506dc2;};'use strict';var _=require('lodash');var util=require(_0xc418('0x0'));var logger=require(_0xc418('0x1'))(_0xc418('0x2'));var moment=require(_0xc418('0x3'));var BPromise=require(_0xc418('0x4'));var rp=require(_0xc418('0x5'));var fs=require('fs');var path=require(_0xc418('0x6'));var rimraf=require(_0xc418('0x7'));var config=require(_0xc418('0x8'));var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x134560,_0x578e3e){return _0x134560[_0xc418('0x9')](_0xc418('0xa'),attributes,{'tableName':_0xc418('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc418('0xc')});};
\ No newline at end of file
+var _0xfbeb=['moment','path','rimraf','./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4','lodash','util','api'];(function(_0x423b7e,_0x3387b8){var _0x1974cb=function(_0x1697b0){while(--_0x1697b0){_0x423b7e['push'](_0x423b7e['shift']());}};_0x1974cb(++_0x3387b8);}(_0xfbeb,0x11b));var _0xbfbe=function(_0x57a53b,_0x11494e){_0x57a53b=_0x57a53b-0x0;var _0x29e81c=_0xfbeb[_0x57a53b];return _0x29e81c;};'use strict';var _=require(_0xbfbe('0x0'));var util=require(_0xbfbe('0x1'));var logger=require('../../config/logger')(_0xbfbe('0x2'));var moment=require(_0xbfbe('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbfbe('0x4'));var rimraf=require(_0xbfbe('0x5'));var config=require('../../config/environment');var attributes=require(_0xbfbe('0x6'));module[_0xbfbe('0x7')]=function(_0x36fac9,_0x2d3095){return _0x36fac9[_0xbfbe('0x8')]('ChatOfflineMessage',attributes,{'tableName':_0xbfbe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbfbe('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f760676..016555c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x059d=['info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','error','code','message','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x1bd794,_0x100501){var _0x2fdd69=function(_0x99eb84){while(--_0x99eb84){_0x1bd794['push'](_0x1bd794['shift']());}};_0x2fdd69(++_0x100501);}(_0x059d,0x1b9));var _0xd059=function(_0x93e829,_0x2c4242){_0x93e829=_0x93e829-0x0;var _0x444476=_0x059d[_0x93e829];return _0x444476;};'use strict';var _=require(_0xd059('0x0'));var util=require(_0xd059('0x1'));var moment=require(_0xd059('0x2'));var BPromise=require(_0xd059('0x3'));var rs=require(_0xd059('0x4'));var fs=require('fs');var Redis=require(_0xd059('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd059('0x6'));var logger=require(_0xd059('0x7'))(_0xd059('0x8'));var config=require(_0xd059('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd059('0xa')][_0xd059('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x71a46a,_0x57057e,_0x45afbe){return new BPromise(function(_0x88d4a7,_0x1545e5){return client[_0xd059('0xc')](_0x71a46a,_0x45afbe)[_0xd059('0xd')](function(_0x2bb868){logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0xd059('0xe'));logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x57057e,_0xd059('0xe'),JSON['stringify'](_0x2bb868));if(_0x2bb868[_0xd059('0xf')]){if(_0x2bb868[_0xd059('0xf')][_0xd059('0x10')]===0x1f4){logger[_0xd059('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);return _0x1545e5(_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);}logger[_0xd059('0xf')](_0xd059('0x12'),_0x57057e,_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);return _0x88d4a7(_0x2bb868[_0xd059('0xf')][_0xd059('0x11')]);}else{logger[_0xd059('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,'request\x20sent');_0x88d4a7(_0x2bb868['result'][_0xd059('0x11')]);}})['catch'](function(_0x18b2fc){logger[_0xd059('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x57057e,_0x18b2fc);_0x1545e5(_0x18b2fc);});});}
\ No newline at end of file
+var _0x72bd=['../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','bluebird'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x72bd,0xcf));var _0xd72b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x72bd[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xd72b('0x0'));var util=require('util');var moment=require(_0xd72b('0x1'));var BPromise=require(_0xd72b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd72b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd72b('0x4'))(_0xd72b('0x5'));var config=require(_0xd72b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd72b('0x7')][_0xd72b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x379ec8,_0x326393,_0x2bc0ce){return new BPromise(function(_0x1604d8,_0x288bd8){return client[_0xd72b('0x9')](_0x379ec8,_0x2bc0ce)[_0xd72b('0xa')](function(_0x5675ad){logger['info'](_0xd72b('0xb'),_0x326393,_0xd72b('0xc'));logger[_0xd72b('0xd')](_0xd72b('0xe'),_0x326393,'request\x20sent',JSON[_0xd72b('0xf')](_0x5675ad));if(_0x5675ad[_0xd72b('0x10')]){if(_0x5675ad[_0xd72b('0x10')][_0xd72b('0x11')]===0x1f4){logger[_0xd72b('0x10')](_0xd72b('0xb'),_0x326393,_0x5675ad['error'][_0xd72b('0x12')]);return _0x288bd8(_0x5675ad['error'][_0xd72b('0x12')]);}logger[_0xd72b('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x326393,_0x5675ad['error']['message']);return _0x1604d8(_0x5675ad[_0xd72b('0x10')]['message']);}else{logger[_0xd72b('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0x326393,_0xd72b('0xc'));_0x1604d8(_0x5675ad[_0xd72b('0x14')][_0xd72b('0x12')]);}})['catch'](function(_0x4ce17d){logger['error'](_0xd72b('0xb'),_0x326393,_0x4ce17d);_0x288bd8(_0x4ce17d);});});}
\ No newline at end of file
index 133d9df..b1f69d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ac=['express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x31b081,_0x194db){var _0x59e7fc=function(_0x3af640){while(--_0x3af640){_0x31b081['push'](_0x31b081['shift']());}};_0x59e7fc(++_0x194db);}(_0x84ac,0x1e0));var _0xc84a=function(_0x2f2cb8,_0x417d38){_0x2f2cb8=_0x2f2cb8-0x0;var _0x5a7add=_0x84ac[_0x2f2cb8];return _0x5a7add;};'use strict';var multer=require(_0xc84a('0x0'));var util=require(_0xc84a('0x1'));var path=require(_0xc84a('0x2'));var timeout=require(_0xc84a('0x3'));var express=require(_0xc84a('0x4'));var router=express[_0xc84a('0x5')]();var fs_extra=require(_0xc84a('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc84a('0x7'));var controller=require('./chatOfflineMessage.controller');router[_0xc84a('0x8')]('/',auth[_0xc84a('0x9')](),controller[_0xc84a('0xa')]);router[_0xc84a('0x8')](_0xc84a('0xb'),auth[_0xc84a('0x9')](),controller[_0xc84a('0xc')]);router[_0xc84a('0x8')](_0xc84a('0xd'),auth[_0xc84a('0x9')](),controller[_0xc84a('0xe')]);router[_0xc84a('0xf')]('/',auth['isAuthenticated'](),controller[_0xc84a('0x10')]);router[_0xc84a('0x11')]('/:id',auth[_0xc84a('0x9')](),controller[_0xc84a('0x12')]);router[_0xc84a('0x13')](_0xc84a('0xd'),auth[_0xc84a('0x9')](),controller[_0xc84a('0x14')]);module[_0xc84a('0x15')]=router;
\ No newline at end of file
+var _0x6bf2=['Router','fs-extra','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','delete','exports','multer','util','connect-timeout','express'];(function(_0x43d79c,_0x531a55){var _0x4866b0=function(_0x847a){while(--_0x847a){_0x43d79c['push'](_0x43d79c['shift']());}};_0x4866b0(++_0x531a55);}(_0x6bf2,0x178));var _0x26bf=function(_0x6daf0a,_0x35c740){_0x6daf0a=_0x6daf0a-0x0;var _0x571f2b=_0x6bf2[_0x6daf0a];return _0x571f2b;};'use strict';var multer=require(_0x26bf('0x0'));var util=require(_0x26bf('0x1'));var path=require('path');var timeout=require(_0x26bf('0x2'));var express=require(_0x26bf('0x3'));var router=express[_0x26bf('0x4')]();var fs_extra=require(_0x26bf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x26bf('0x6'));var config=require(_0x26bf('0x7'));var controller=require(_0x26bf('0x8'));router[_0x26bf('0x9')]('/',auth[_0x26bf('0xa')](),controller['index']);router[_0x26bf('0x9')](_0x26bf('0xb'),auth[_0x26bf('0xa')](),controller['describe']);router['get'](_0x26bf('0xc'),auth[_0x26bf('0xa')](),controller[_0x26bf('0xd')]);router[_0x26bf('0xe')]('/',auth['isAuthenticated'](),controller[_0x26bf('0xf')]);router[_0x26bf('0x10')](_0x26bf('0xc'),auth[_0x26bf('0xa')](),controller['update']);router[_0x26bf('0x11')](_0x26bf('0xc'),auth[_0x26bf('0xa')](),controller['destroy']);module[_0x26bf('0x12')]=router;
\ No newline at end of file
index 2e3df4d..1158c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a06=['STRING','mouseOver'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6a06,0xee));var _0x66a0=function(_0x2a7d55,_0x36bd70){_0x2a7d55=_0x2a7d55-0x0;var _0x137989=_0x6a06[_0x2a7d55];return _0x137989;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x66a0('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x66a0('0x1'),'timeout'),'defaultValue':_0x66a0('0x1')},'selector':{'type':Sequelize[_0x66a0('0x0')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9a9d=['STRING','INTEGER','sequelize','exports','mouseOver','timeout'];(function(_0x46a315,_0x349379){var _0x222760=function(_0x503a1f){while(--_0x503a1f){_0x46a315['push'](_0x46a315['shift']());}};_0x222760(++_0x349379);}(_0x9a9d,0x16a));var _0xd9a9=function(_0x12ed0d,_0x29f705){_0x12ed0d=_0x12ed0d-0x0;var _0x7de9d0=_0x9a9d[_0x12ed0d];return _0x7de9d0;};'use strict';var Sequelize=require(_0xd9a9('0x0'));module[_0xd9a9('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xd9a9('0x2'),_0xd9a9('0x3')),'defaultValue':_0xd9a9('0x2')},'selector':{'type':Sequelize[_0xd9a9('0x4')]},'timeout':{'type':Sequelize[_0xd9a9('0x5')]}};
\ No newline at end of file
index ccef463..525c013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','undefined','limit','count','offset','Content-Range','reject','save','then','destroy','sendStatus','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','length','include','merge','find','create','body','catch','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x40a8c8,_0x2bbb4c){var _0x211cae=function(_0x3a5a0a){while(--_0x3a5a0a){_0x40a8c8['push'](_0x40a8c8['shift']());}};_0x211cae(++_0x2bbb4c);}(_0x6334,0x119));var _0x4633=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0x6334[_0x3cc9d9];return _0x1a425d;};'use strict';var emlformat=require(_0x4633('0x0'));var rimraf=require(_0x4633('0x1'));var zipdir=require(_0x4633('0x2'));var jsonpatch=require(_0x4633('0x3'));var rp=require(_0x4633('0x4'));var moment=require(_0x4633('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4633('0x6'));var util=require(_0x4633('0x7'));var path=require(_0x4633('0x8'));var sox=require(_0x4633('0x9'));var csv=require(_0x4633('0xa'));var ejs=require(_0x4633('0xb'));var fs=require('fs');var fs_extra=require(_0x4633('0xc'));var _=require('lodash');var squel=require(_0x4633('0xd'));var crypto=require('crypto');var jsforce=require(_0x4633('0xe'));var deskjs=require(_0x4633('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4633('0x10'));var Papa=require(_0x4633('0x11'));var Redis=require(_0x4633('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x4633('0x13'));var as=require(_0x4633('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4633('0x15'))(_0x4633('0x16'));var utils=require(_0x4633('0x17'));var config=require(_0x4633('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x4633('0x19'))['db'];function respondWithStatusCode(_0xad405,_0x438e87){_0x438e87=_0x438e87||0xcc;return function(_0x48e92c){if(_0x48e92c){return _0xad405['sendStatus'](_0x438e87);}return _0xad405['status'](_0x438e87)[_0x4633('0x1a')]();};}function respondWithResult(_0x1fd00c,_0x579229){_0x579229=_0x579229||0xc8;return function(_0x52955e){if(_0x52955e){return _0x1fd00c[_0x4633('0x1b')](_0x579229)['json'](_0x52955e);}};}function respondWithFilteredResult(_0xcdffcc,_0x33b6e7){return function(_0x2e2dc3){if(_0x2e2dc3){var _0x11fef9=typeof _0x33b6e7['offset']===_0x4633('0x1c')&&typeof _0x33b6e7[_0x4633('0x1d')]===_0x4633('0x1c');var _0x4ffad5=_0x2e2dc3[_0x4633('0x1e')];var _0x37e536=_0x11fef9?0x0:_0x33b6e7[_0x4633('0x1f')];var _0x2ad562=_0x11fef9?_0x2e2dc3[_0x4633('0x1e')]:_0x33b6e7['offset']+_0x33b6e7[_0x4633('0x1d')];var _0xfe3446;if(_0x2ad562>=_0x4ffad5){_0x2ad562=_0x4ffad5;_0xfe3446=0xc8;}else{_0xfe3446=0xce;}_0xcdffcc['status'](_0xfe3446);return _0xcdffcc['set'](_0x4633('0x20'),_0x37e536+'-'+_0x2ad562+'/'+_0x4ffad5)['json'](_0x2e2dc3);}return null;};}function patchUpdates(_0x35e2ad){return function(_0x5b5011){try{jsonpatch['apply'](_0x5b5011,_0x35e2ad,!![]);}catch(_0x109472){return BPromise[_0x4633('0x21')](_0x109472);}return _0x5b5011[_0x4633('0x22')]();};}function saveUpdates(_0x604f3d,_0xd1fcc6){return function(_0x2d46f7){if(_0x2d46f7){return _0x2d46f7['update'](_0x604f3d)[_0x4633('0x23')](function(_0x562e26){return _0x562e26;});}return null;};}function removeEntity(_0x22d9c1,_0xcfac3f){return function(_0xe77cfc){if(_0xe77cfc){return _0xe77cfc[_0x4633('0x24')]()[_0x4633('0x23')](function(){_0x22d9c1['status'](0xcc)[_0x4633('0x1a')]();});}};}function handleEntityNotFound(_0x399220,_0x37e3c4){return function(_0x13ec10){if(!_0x13ec10){_0x399220[_0x4633('0x25')](0x194);}return _0x13ec10;};}function handleError(_0x471d13,_0x1ba1ed){_0x1ba1ed=_0x1ba1ed||0x1f4;return function(_0x368582){logger[_0x4633('0x26')](_0x368582[_0x4633('0x27')]);if(_0x368582[_0x4633('0x28')]){delete _0x368582[_0x4633('0x28')];}_0x471d13[_0x4633('0x1b')](_0x1ba1ed)[_0x4633('0x29')](_0x368582);};}exports[_0x4633('0x2a')]=function(_0x3f03aa,_0x20ca8b){var _0x139e5e={'raw':!![],'where':{'id':_0x3f03aa[_0x4633('0x2b')]['id']}},_0x5de12a={};_0x5de12a[_0x4633('0x2c')]=_[_0x4633('0x2d')](db[_0x4633('0x2e')][_0x4633('0x2f')]);_0x5de12a[_0x4633('0x30')]=_['keys'](_0x3f03aa[_0x4633('0x30')]);_0x5de12a['filters']=_[_0x4633('0x31')](_0x5de12a[_0x4633('0x2c')],_0x5de12a[_0x4633('0x30')]);_0x139e5e[_0x4633('0x32')]=_[_0x4633('0x31')](_0x5de12a[_0x4633('0x2c')],qs[_0x4633('0x33')](_0x3f03aa[_0x4633('0x30')][_0x4633('0x33')]));_0x139e5e[_0x4633('0x32')]=_0x139e5e[_0x4633('0x32')][_0x4633('0x34')]?_0x139e5e[_0x4633('0x32')]:_0x5de12a[_0x4633('0x2c')];if(_0x3f03aa['query']['includeAll']){_0x139e5e[_0x4633('0x35')]=[{'all':!![]}];}_0x139e5e=_[_0x4633('0x36')]({},_0x139e5e,_0x3f03aa['options']);return db[_0x4633('0x2e')][_0x4633('0x37')](_0x139e5e)[_0x4633('0x23')](handleEntityNotFound(_0x20ca8b,null))[_0x4633('0x23')](respondWithResult(_0x20ca8b,null))['catch'](handleError(_0x20ca8b,null));};exports[_0x4633('0x38')]=function(_0x52322e,_0xd606e5){return db[_0x4633('0x2e')][_0x4633('0x38')](_0x52322e[_0x4633('0x39')],{})[_0x4633('0x23')](respondWithResult(_0xd606e5,0xc9))[_0x4633('0x3a')](handleError(_0xd606e5,null));};exports[_0x4633('0x3b')]=function(_0x439a04,_0x546390){if(_0x439a04[_0x4633('0x39')]['id']){delete _0x439a04[_0x4633('0x39')]['id'];}return db['ChatProactiveAction'][_0x4633('0x37')]({'where':{'id':_0x439a04[_0x4633('0x2b')]['id']}})[_0x4633('0x23')](handleEntityNotFound(_0x546390,null))[_0x4633('0x23')](saveUpdates(_0x439a04['body'],null))['then'](respondWithResult(_0x546390,null))[_0x4633('0x3a')](handleError(_0x546390,null));};exports['destroy']=function(_0x4d1707,_0x464533){return db['ChatProactiveAction']['find']({'where':{'id':_0x4d1707[_0x4633('0x2b')]['id']}})[_0x4633('0x23')](handleEntityNotFound(_0x464533,null))[_0x4633('0x23')](removeEntity(_0x464533,null))[_0x4633('0x3a')](handleError(_0x464533,null));};
\ No newline at end of file
+var _0x17c4=['model','attributes','fields','include','options','find','catch','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','end','sendStatus','error','name','send','show','params','keys','ChatProactiveAction','rawAttributes','query','filters','intersection'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x17c4,0x102));var _0x417c=function(_0x1814fa,_0x5b2c26){_0x1814fa=_0x1814fa-0x0;var _0x18e64c=_0x17c4[_0x1814fa];return _0x18e64c;};'use strict';var emlformat=require(_0x417c('0x0'));var rimraf=require(_0x417c('0x1'));var zipdir=require(_0x417c('0x2'));var jsonpatch=require(_0x417c('0x3'));var rp=require(_0x417c('0x4'));var moment=require(_0x417c('0x5'));var BPromise=require(_0x417c('0x6'));var Mustache=require(_0x417c('0x7'));var util=require(_0x417c('0x8'));var path=require(_0x417c('0x9'));var sox=require(_0x417c('0xa'));var csv=require('to-csv');var ejs=require(_0x417c('0xb'));var fs=require('fs');var fs_extra=require(_0x417c('0xc'));var _=require(_0x417c('0xd'));var squel=require(_0x417c('0xe'));var crypto=require(_0x417c('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x417c('0x10'));var querystring=require(_0x417c('0x11'));var Papa=require(_0x417c('0x12'));var Redis=require(_0x417c('0x13'));var authService=require(_0x417c('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x417c('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x417c('0x16'))(_0x417c('0x17'));var utils=require(_0x417c('0x18'));var config=require(_0x417c('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23b22f,_0x5952b2){_0x5952b2=_0x5952b2||0xcc;return function(_0x4e113a){if(_0x4e113a){return _0x23b22f['sendStatus'](_0x5952b2);}return _0x23b22f[_0x417c('0x1a')](_0x5952b2)['end']();};}function respondWithResult(_0x73f8c3,_0x34361a){_0x34361a=_0x34361a||0xc8;return function(_0x49a227){if(_0x49a227){return _0x73f8c3[_0x417c('0x1a')](_0x34361a)[_0x417c('0x1b')](_0x49a227);}};}function respondWithFilteredResult(_0x3feb87,_0x4416c6){return function(_0x509fce){if(_0x509fce){var _0x56d121=typeof _0x4416c6[_0x417c('0x1c')]===_0x417c('0x1d')&&typeof _0x4416c6[_0x417c('0x1e')]==='undefined';var _0x1ab811=_0x509fce[_0x417c('0x1f')];var _0xf8d94c=_0x56d121?0x0:_0x4416c6[_0x417c('0x1c')];var _0x308618=_0x56d121?_0x509fce[_0x417c('0x1f')]:_0x4416c6[_0x417c('0x1c')]+_0x4416c6[_0x417c('0x1e')];var _0x4a8fc3;if(_0x308618>=_0x1ab811){_0x308618=_0x1ab811;_0x4a8fc3=0xc8;}else{_0x4a8fc3=0xce;}_0x3feb87[_0x417c('0x1a')](_0x4a8fc3);return _0x3feb87[_0x417c('0x20')](_0x417c('0x21'),_0xf8d94c+'-'+_0x308618+'/'+_0x1ab811)[_0x417c('0x1b')](_0x509fce);}return null;};}function patchUpdates(_0x226647){return function(_0x7c1e5a){try{jsonpatch[_0x417c('0x22')](_0x7c1e5a,_0x226647,!![]);}catch(_0x32247b){return BPromise[_0x417c('0x23')](_0x32247b);}return _0x7c1e5a[_0x417c('0x24')]();};}function saveUpdates(_0xcb26f7,_0x6b6835){return function(_0xd5a3fa){if(_0xd5a3fa){return _0xd5a3fa['update'](_0xcb26f7)['then'](function(_0x1924eb){return _0x1924eb;});}return null;};}function removeEntity(_0x3b3c60,_0x1867e6){return function(_0x5b6067){if(_0x5b6067){return _0x5b6067[_0x417c('0x25')]()[_0x417c('0x26')](function(){_0x3b3c60[_0x417c('0x1a')](0xcc)[_0x417c('0x27')]();});}};}function handleEntityNotFound(_0x2a27f8,_0x482b3f){return function(_0x243066){if(!_0x243066){_0x2a27f8[_0x417c('0x28')](0x194);}return _0x243066;};}function handleError(_0x528e04,_0x4cebb9){_0x4cebb9=_0x4cebb9||0x1f4;return function(_0x54dd1a){logger[_0x417c('0x29')](_0x54dd1a['stack']);if(_0x54dd1a[_0x417c('0x2a')]){delete _0x54dd1a[_0x417c('0x2a')];}_0x528e04[_0x417c('0x1a')](_0x4cebb9)[_0x417c('0x2b')](_0x54dd1a);};}exports[_0x417c('0x2c')]=function(_0xa9435f,_0x1f0805){var _0x3fb31c={'raw':!![],'where':{'id':_0xa9435f[_0x417c('0x2d')]['id']}},_0x9685fd={};_0x9685fd['model']=_[_0x417c('0x2e')](db[_0x417c('0x2f')][_0x417c('0x30')]);_0x9685fd[_0x417c('0x31')]=_[_0x417c('0x2e')](_0xa9435f[_0x417c('0x31')]);_0x9685fd[_0x417c('0x32')]=_[_0x417c('0x33')](_0x9685fd[_0x417c('0x34')],_0x9685fd[_0x417c('0x31')]);_0x3fb31c[_0x417c('0x35')]=_['intersection'](_0x9685fd[_0x417c('0x34')],qs['fields'](_0xa9435f['query'][_0x417c('0x36')]));_0x3fb31c['attributes']=_0x3fb31c['attributes']['length']?_0x3fb31c['attributes']:_0x9685fd[_0x417c('0x34')];if(_0xa9435f[_0x417c('0x31')]['includeAll']){_0x3fb31c[_0x417c('0x37')]=[{'all':!![]}];}_0x3fb31c=_['merge']({},_0x3fb31c,_0xa9435f[_0x417c('0x38')]);return db[_0x417c('0x2f')][_0x417c('0x39')](_0x3fb31c)['then'](handleEntityNotFound(_0x1f0805,null))[_0x417c('0x26')](respondWithResult(_0x1f0805,null))[_0x417c('0x3a')](handleError(_0x1f0805,null));};exports[_0x417c('0x3b')]=function(_0x10eda8,_0x1a7b88){return db[_0x417c('0x2f')][_0x417c('0x3b')](_0x10eda8['body'],{})['then'](respondWithResult(_0x1a7b88,0xc9))[_0x417c('0x3a')](handleError(_0x1a7b88,null));};exports[_0x417c('0x3c')]=function(_0x47f93a,_0x56391a){if(_0x47f93a[_0x417c('0x3d')]['id']){delete _0x47f93a[_0x417c('0x3d')]['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x47f93a[_0x417c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x56391a,null))[_0x417c('0x26')](saveUpdates(_0x47f93a[_0x417c('0x3d')],null))['then'](respondWithResult(_0x56391a,null))['catch'](handleError(_0x56391a,null));};exports[_0x417c('0x25')]=function(_0x3a1b78,_0x3ddcc6){return db[_0x417c('0x2f')][_0x417c('0x39')]({'where':{'id':_0x3a1b78['params']['id']}})['then'](handleEntityNotFound(_0x3ddcc6,null))[_0x417c('0x26')](removeEntity(_0x3ddcc6,null))[_0x417c('0x3a')](handleError(_0x3ddcc6,null));};
\ No newline at end of file
index 4828697..ee7d37f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7412=['define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x5bad1f,_0x597a32){var _0x23b66d=function(_0xa2a97f){while(--_0xa2a97f){_0x5bad1f['push'](_0x5bad1f['shift']());}};_0x23b66d(++_0x597a32);}(_0x7412,0x14d));var _0x2741=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0x7412[_0xb24a3e];return _0x4038d7;};'use strict';var _=require(_0x2741('0x0'));var util=require(_0x2741('0x1'));var logger=require(_0x2741('0x2'))(_0x2741('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2741('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2741('0x5'));var config=require(_0x2741('0x6'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x2dadbe,_0xe7dde1){return _0x2dadbe[_0x2741('0x7')](_0x2741('0x8'),attributes,{'tableName':_0x2741('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb00a=['../../config/environment','exports','define','chat_proactive_actions','lodash','util','api','path','rimraf'];(function(_0x42129c,_0x1d9ba4){var _0x341b83=function(_0x1b36b3){while(--_0x1b36b3){_0x42129c['push'](_0x42129c['shift']());}};_0x341b83(++_0x1d9ba4);}(_0xb00a,0x16c));var _0xab00=function(_0x508345,_0x3ce2c8){_0x508345=_0x508345-0x0;var _0x321877=_0xb00a[_0x508345];return _0x321877;};'use strict';var _=require(_0xab00('0x0'));var util=require(_0xab00('0x1'));var logger=require('../../config/logger')(_0xab00('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xab00('0x3'));var rimraf=require(_0xab00('0x4'));var config=require(_0xab00('0x5'));var attributes=require('./chatProactiveAction.attributes');module[_0xab00('0x6')]=function(_0x221c81,_0x2f976e){return _0x221c81[_0xab00('0x7')]('ChatProactiveAction',attributes,{'tableName':_0xab00('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7194a95..57ee20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeb3=['request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s'];(function(_0x24f6c0,_0x17e42c){var _0x5cef89=function(_0x397dff){while(--_0x397dff){_0x24f6c0['push'](_0x24f6c0['shift']());}};_0x5cef89(++_0x17e42c);}(_0xbeb3,0x1ac));var _0x3beb=function(_0x455893,_0x909838){_0x455893=_0x455893-0x0;var _0x3851e8=_0xbeb3[_0x455893];return _0x3851e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3beb('0x0'));var BPromise=require(_0x3beb('0x1'));var rs=require(_0x3beb('0x2'));var fs=require('fs');var Redis=require(_0x3beb('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3beb('0x4'))('rpc');var config=require(_0x3beb('0x5'));var jayson=require(_0x3beb('0x6'));var client=jayson[_0x3beb('0x7')][_0x3beb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1af0c4,_0x24fc82,_0x9612d){return new BPromise(function(_0x25f5ee,_0x77921d){return client[_0x3beb('0x9')](_0x1af0c4,_0x9612d)['then'](function(_0xf5bded){logger[_0x3beb('0xa')](_0x3beb('0xb'),_0x24fc82,_0x3beb('0xc'));logger[_0x3beb('0xd')](_0x3beb('0xe'),_0x24fc82,_0x3beb('0xc'),JSON['stringify'](_0xf5bded));if(_0xf5bded[_0x3beb('0xf')]){if(_0xf5bded[_0x3beb('0xf')][_0x3beb('0x10')]===0x1f4){logger[_0x3beb('0xf')]('ChatProactiveAction,\x20%s,\x20%s',_0x24fc82,_0xf5bded[_0x3beb('0xf')][_0x3beb('0x11')]);return _0x77921d(_0xf5bded['error'][_0x3beb('0x11')]);}logger[_0x3beb('0xf')](_0x3beb('0xb'),_0x24fc82,_0xf5bded[_0x3beb('0xf')][_0x3beb('0x11')]);return _0x25f5ee(_0xf5bded['error'][_0x3beb('0x11')]);}else{logger[_0x3beb('0xa')](_0x3beb('0xb'),_0x24fc82,_0x3beb('0xc'));_0x25f5ee(_0xf5bded[_0x3beb('0x12')]['message']);}})[_0x3beb('0x13')](function(_0x4f39a4){logger[_0x3beb('0xf')](_0x3beb('0xb'),_0x24fc82,_0x4f39a4);_0x77921d(_0x4f39a4);});});}
\ No newline at end of file
+var _0xe774=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','client','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x109f54,_0x116940){var _0x46f65c=function(_0x310abd){while(--_0x310abd){_0x109f54['push'](_0x109f54['shift']());}};_0x46f65c(++_0x116940);}(_0xe774,0xf8));var _0x4e77=function(_0xd00b92,_0x575fe3){_0xd00b92=_0xd00b92-0x0;var _0x5cce68=_0xe774[_0xd00b92];return _0x5cce68;};'use strict';var _=require(_0x4e77('0x0'));var util=require(_0x4e77('0x1'));var moment=require(_0x4e77('0x2'));var BPromise=require('bluebird');var rs=require(_0x4e77('0x3'));var fs=require('fs');var Redis=require(_0x4e77('0x4'));var db=require(_0x4e77('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4e77('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4e77('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24b71f,_0x1ebe03,_0x120700){return new BPromise(function(_0x4e1877,_0x4448c7){return client['request'](_0x24b71f,_0x120700)['then'](function(_0x2618af){logger[_0x4e77('0x8')](_0x4e77('0x9'),_0x1ebe03,_0x4e77('0xa'));logger[_0x4e77('0xb')](_0x4e77('0xc'),_0x1ebe03,_0x4e77('0xa'),JSON[_0x4e77('0xd')](_0x2618af));if(_0x2618af[_0x4e77('0xe')]){if(_0x2618af[_0x4e77('0xe')][_0x4e77('0xf')]===0x1f4){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x1ebe03,_0x2618af[_0x4e77('0xe')][_0x4e77('0x10')]);return _0x4448c7(_0x2618af[_0x4e77('0xe')][_0x4e77('0x10')]);}logger[_0x4e77('0xe')](_0x4e77('0x9'),_0x1ebe03,_0x2618af[_0x4e77('0xe')][_0x4e77('0x10')]);return _0x4e1877(_0x2618af[_0x4e77('0xe')][_0x4e77('0x10')]);}else{logger[_0x4e77('0x8')]('ChatProactiveAction,\x20%s,\x20%s',_0x1ebe03,_0x4e77('0xa'));_0x4e1877(_0x2618af[_0x4e77('0x11')][_0x4e77('0x10')]);}})[_0x4e77('0x12')](function(_0x45dcc6){logger[_0x4e77('0xe')](_0x4e77('0x9'),_0x1ebe03,_0x45dcc6);_0x4448c7(_0x45dcc6);});});}
\ No newline at end of file
index 5822681..967d434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['show','post','update','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated'];(function(_0x309652,_0x4724e6){var _0x5029d7=function(_0x6f4a31){while(--_0x6f4a31){_0x309652['push'](_0x309652['shift']());}};_0x5029d7(++_0x4724e6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc4aa[_0x19950b];return _0x3c6b41;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xb')]);router[_0xac4a('0xc')]('/',auth[_0xac4a('0xa')](),controller['create']);router['put'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xd')]);router['delete'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x5fd1=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','create','put','update','multer','path','connect-timeout','express'];(function(_0x53de03,_0x40f619){var _0x531c65=function(_0x2aa370){while(--_0x2aa370){_0x53de03['push'](_0x53de03['shift']());}};_0x531c65(++_0x40f619);}(_0x5fd1,0x155));var _0x15fd=function(_0x5e4323,_0x590736){_0x5e4323=_0x5e4323-0x0;var _0x5e7ed6=_0x5fd1[_0x5e4323];return _0x5e7ed6;};'use strict';var multer=require(_0x15fd('0x0'));var util=require('util');var path=require(_0x15fd('0x1'));var timeout=require(_0x15fd('0x2'));var express=require(_0x15fd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x15fd('0x4'));var interaction=require(_0x15fd('0x5'));var config=require(_0x15fd('0x6'));var controller=require('./chatProactiveAction.controller');router[_0x15fd('0x7')](_0x15fd('0x8'),auth[_0x15fd('0x9')](),controller[_0x15fd('0xa')]);router[_0x15fd('0xb')]('/',auth['isAuthenticated'](),controller[_0x15fd('0xc')]);router[_0x15fd('0xd')](_0x15fd('0x8'),auth['isAuthenticated'](),controller[_0x15fd('0xe')]);router['delete'](_0x15fd('0x8'),auth[_0x15fd('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 98a01be..b812828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ba=['rrmemory','beepall','roundrobin','exports','name','INTEGER'];(function(_0x51f67c,_0x1977ec){var _0x3888c5=function(_0x5469be){while(--_0x5469be){_0x51f67c['push'](_0x51f67c['shift']());}};_0x3888c5(++_0x1977ec);}(_0xf6ba,0x153));var _0xaf6b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xf6ba[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0xaf6b('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xaf6b('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xaf6b('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xaf6b('0x3'),_0xaf6b('0x4'),_0xaf6b('0x5'))}};
\ No newline at end of file
+var _0x0349=['exports','STRING','name','ENUM','rrmemory','beepall','roundrobin'];(function(_0x4f4ac3,_0x418aee){var _0x4bdf6f=function(_0x116630){while(--_0x116630){_0x4f4ac3['push'](_0x4f4ac3['shift']());}};_0x4bdf6f(++_0x418aee);}(_0x0349,0x149));var _0x9034=function(_0x51674a,_0x77ccff){_0x51674a=_0x51674a-0x0;var _0x13fca6=_0x0349[_0x51674a];return _0x13fca6;};'use strict';var Sequelize=require('sequelize');module[_0x9034('0x0')]={'name':{'type':Sequelize[_0x9034('0x1')],'unique':_0x9034('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9034('0x3')](_0x9034('0x4'),_0x9034('0x5'),_0x9034('0x6'))}};
\ No newline at end of file
index 2543396..77245fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf5=['sequelize','addTeams','each','findOrCreate','forEach','removeTeams','ids','select','tq.TeamId','from','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','includes','all','union','compact','value','transaction','isEmpty','emit','userChatQueue:remove','addAgents','omit','userChatQueue:save','removeAgents','isArray','getAgents','eml-format','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','get','ChatQueues','UserProfileResource','stack','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','VIRTUAL','options','where','ChatQueue','includeAll','include','show','params','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','rawAttributes','findAll','agent','chatPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','pick','User','Agents','online','voicePause','flatMap'];(function(_0x1e19f5,_0x8fbdd8){var _0x418d0c=function(_0x24a12f){while(--_0x24a12f){_0x1e19f5['push'](_0x1e19f5['shift']());}};_0x418d0c(++_0x8fbdd8);}(_0xabf5,0xb8));var _0x5abf=function(_0x3424f9,_0x50195d){_0x3424f9=_0x3424f9-0x0;var _0x57ca33=_0xabf5[_0x3424f9];return _0x57ca33;};'use strict';var emlformat=require(_0x5abf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5abf('0x1'));var Mustache=require(_0x5abf('0x2'));var util=require('util');var path=require(_0x5abf('0x3'));var sox=require(_0x5abf('0x4'));var csv=require(_0x5abf('0x5'));var ejs=require(_0x5abf('0x6'));var fs=require('fs');var fs_extra=require(_0x5abf('0x7'));var _=require(_0x5abf('0x8'));var squel=require(_0x5abf('0x9'));var crypto=require(_0x5abf('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5abf('0x5'));var querystring=require(_0x5abf('0xb'));var Papa=require(_0x5abf('0xc'));var Redis=require('ioredis');var authService=require(_0x5abf('0xd'));var qs=require(_0x5abf('0xe'));var as=require(_0x5abf('0xf'));var hardwareService=require(_0x5abf('0x10'));var logger=require(_0x5abf('0x11'))(_0x5abf('0x12'));var utils=require(_0x5abf('0x13'));var config=require(_0x5abf('0x14'));var licenseUtil=require(_0x5abf('0x15'));var db=require('../../mysqldb')['db'];config[_0x5abf('0x16')]=_[_0x5abf('0x17')](config['redis'],{'host':_0x5abf('0x18'),'port':0x18eb});var socket=require(_0x5abf('0x19'))(new Redis(config[_0x5abf('0x16')]));require('./chatQueue.socket')[_0x5abf('0x1a')](socket);var jayson=require(_0x5abf('0x1b'));var client=jayson[_0x5abf('0x1c')][_0x5abf('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x53288c,_0x3d4f96,_0x259499,_0x67cfe3){return new BPromise(function(_0x839d5b,_0x5a8b7f){var _0x1a4eba=_0x67cfe3||client;return _0x1a4eba[_0x5abf('0x1e')](_0x53288c,_0x259499)[_0x5abf('0x1f')](function(_0x83a176){logger['info'](_0x5abf('0x20'),_0x3d4f96,_0x5abf('0x21'));logger[_0x5abf('0x22')](_0x5abf('0x23'),_0x3d4f96,'request\x20sent',JSON['stringify'](_0x83a176));if(_0x83a176[_0x5abf('0x24')]){if(_0x83a176[_0x5abf('0x24')][_0x5abf('0x25')]===0x1f4){logger[_0x5abf('0x24')](_0x5abf('0x20'),_0x3d4f96,_0x83a176[_0x5abf('0x24')]['message']);return _0x5a8b7f(_0x83a176['error'][_0x5abf('0x26')]);}logger[_0x5abf('0x24')](_0x5abf('0x20'),_0x3d4f96,_0x83a176[_0x5abf('0x24')][_0x5abf('0x26')]);return _0x839d5b(_0x83a176[_0x5abf('0x24')][_0x5abf('0x26')]);}else{logger[_0x5abf('0x27')]('ChatQueue,\x20%s,\x20%s',_0x3d4f96,_0x5abf('0x21'));_0x839d5b(_0x83a176['result'][_0x5abf('0x26')]);}})[_0x5abf('0x28')](function(_0x2e628a){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3d4f96,_0x2e628a);_0x5a8b7f(_0x2e628a);});});}function respondWithStatusCode(_0x25fc44,_0x7d0201){_0x7d0201=_0x7d0201||0xcc;return function(_0x46c17d){if(_0x46c17d){return _0x25fc44[_0x5abf('0x29')](_0x7d0201);}return _0x25fc44[_0x5abf('0x2a')](_0x7d0201)[_0x5abf('0x2b')]();};}function respondWithResult(_0x2be738,_0x38a33d){_0x38a33d=_0x38a33d||0xc8;return function(_0x5158f5){if(_0x5158f5){return _0x2be738[_0x5abf('0x2a')](_0x38a33d)[_0x5abf('0x2c')](_0x5158f5);}};}function respondWithFilteredResult(_0x11d8b9,_0x1f0608){return function(_0x1e2d17){if(_0x1e2d17){var _0x34329c=typeof _0x1f0608[_0x5abf('0x2d')]===_0x5abf('0x2e')&&typeof _0x1f0608[_0x5abf('0x2f')]===_0x5abf('0x2e');var _0x42a9ad=_0x1e2d17[_0x5abf('0x30')];var _0x42c2c4=_0x34329c?0x0:_0x1f0608[_0x5abf('0x2d')];var _0x2a8b9a=_0x34329c?_0x1e2d17[_0x5abf('0x30')]:_0x1f0608[_0x5abf('0x2d')]+_0x1f0608['limit'];var _0x4218ad;if(_0x2a8b9a>=_0x42a9ad){_0x2a8b9a=_0x42a9ad;_0x4218ad=0xc8;}else{_0x4218ad=0xce;}_0x11d8b9[_0x5abf('0x2a')](_0x4218ad);return _0x11d8b9[_0x5abf('0x31')](_0x5abf('0x32'),_0x42c2c4+'-'+_0x2a8b9a+'/'+_0x42a9ad)['json'](_0x1e2d17);}return null;};}function patchUpdates(_0x1d2b99){return function(_0x4b9428){try{jsonpatch[_0x5abf('0x33')](_0x4b9428,_0x1d2b99,!![]);}catch(_0x43c65a){return BPromise['reject'](_0x43c65a);}return _0x4b9428['save']();};}function saveUpdates(_0x4c2f8a,_0xd14fb1){return function(_0x371275){if(_0x371275){return _0x371275['update'](_0x4c2f8a)[_0x5abf('0x1f')](function(_0x27bd59){return _0x27bd59;});}return null;};}function removeEntity(_0x5635a7,_0x4267b9){return function(_0x2ea9f2){if(_0x2ea9f2){return _0x2ea9f2[_0x5abf('0x34')]()[_0x5abf('0x1f')](function(){var _0xb40d8a=_0x2ea9f2[_0x5abf('0x35')]({'plain':!![]});var _0x52290b=_0x5abf('0x36');return db[_0x5abf('0x37')][_0x5abf('0x34')]({'where':{'type':_0x52290b,'resourceId':_0xb40d8a['id']}})[_0x5abf('0x1f')](function(){return _0x2ea9f2;});})['then'](function(){_0x5635a7['status'](0xcc)[_0x5abf('0x2b')]();});}};}function handleEntityNotFound(_0xa6bd07,_0x31baae){return function(_0xc5e509){if(!_0xc5e509){_0xa6bd07[_0x5abf('0x29')](0x194);}return _0xc5e509;};}function handleError(_0x587cbb,_0x1daa5b){_0x1daa5b=_0x1daa5b||0x1f4;return function(_0x583c51){logger[_0x5abf('0x24')](_0x583c51[_0x5abf('0x38')]);if(_0x583c51[_0x5abf('0x39')]){delete _0x583c51['name'];}_0x587cbb[_0x5abf('0x2a')](_0x1daa5b)['send'](_0x583c51);};}exports[_0x5abf('0x3a')]=function(_0x5bf5be,_0x15cd83){var _0x2ddc83={},_0x33f9e7={},_0x497dad={'count':0x0,'rows':[]};var _0x3f47ba=_[_0x5abf('0x3b')](db['ChatQueue']['rawAttributes'],function(_0xdbd1d1){return{'name':_0xdbd1d1[_0x5abf('0x3c')],'type':_0xdbd1d1[_0x5abf('0x3d')][_0x5abf('0x3e')]};});_0x33f9e7[_0x5abf('0x3f')]=_[_0x5abf('0x3b')](_0x3f47ba,'name');_0x33f9e7[_0x5abf('0x40')]=_[_0x5abf('0x41')](_0x5bf5be[_0x5abf('0x40')]);_0x33f9e7[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x33f9e7[_0x5abf('0x3f')],_0x33f9e7[_0x5abf('0x40')]);_0x2ddc83[_0x5abf('0x44')]=_[_0x5abf('0x43')](_0x33f9e7['model'],qs[_0x5abf('0x45')](_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x45')]));_0x2ddc83[_0x5abf('0x44')]=_0x2ddc83[_0x5abf('0x44')][_0x5abf('0x46')]?_0x2ddc83[_0x5abf('0x44')]:_0x33f9e7['model'];if(!_0x5bf5be['query'][_0x5abf('0x47')](_0x5abf('0x48'))){_0x2ddc83['limit']=qs[_0x5abf('0x2f')](_0x5bf5be[_0x5abf('0x40')]['limit']);_0x2ddc83['offset']=qs[_0x5abf('0x2d')](_0x5bf5be['query'][_0x5abf('0x2d')]);}_0x2ddc83[_0x5abf('0x49')]=qs[_0x5abf('0x4a')](_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4a')]);_0x2ddc83['where']=qs[_0x5abf('0x42')](_['pick'](_0x5bf5be['query'],_0x33f9e7[_0x5abf('0x42')]),_0x3f47ba);if(_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x2ddc83['where']=_[_0x5abf('0x4c')](_0x2ddc83['where'],{'$or':_[_0x5abf('0x3b')](_0x3f47ba,function(_0xbf803b){if(_0xbf803b['type']!==_0x5abf('0x4d')){var _0xebb61c={};_0xebb61c[_0xbf803b['name']]={'$like':'%'+_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0xebb61c;}})});}_0x2ddc83=_[_0x5abf('0x4c')]({},_0x2ddc83,_0x5bf5be[_0x5abf('0x4e')]);var _0x50d381={'where':_0x2ddc83[_0x5abf('0x4f')]};return db[_0x5abf('0x50')][_0x5abf('0x30')](_0x50d381)[_0x5abf('0x1f')](function(_0x16d372){_0x497dad[_0x5abf('0x30')]=_0x16d372;if(_0x5bf5be[_0x5abf('0x40')][_0x5abf('0x51')]){_0x2ddc83[_0x5abf('0x52')]=[{'all':!![]}];}return db[_0x5abf('0x50')]['findAll'](_0x2ddc83);})[_0x5abf('0x1f')](function(_0x5f17cd){_0x497dad['rows']=_0x5f17cd;return _0x497dad;})[_0x5abf('0x1f')](respondWithFilteredResult(_0x15cd83,_0x2ddc83))[_0x5abf('0x28')](handleError(_0x15cd83,null));};exports[_0x5abf('0x53')]=function(_0x37db47,_0x50480d){var _0x23341f={'raw':!![],'where':{'id':_0x37db47[_0x5abf('0x54')]['id']}},_0x245157={};_0x245157[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x50')]['rawAttributes']);_0x245157[_0x5abf('0x40')]=_['keys'](_0x37db47[_0x5abf('0x40')]);_0x245157['filters']=_[_0x5abf('0x43')](_0x245157[_0x5abf('0x3f')],_0x245157[_0x5abf('0x40')]);_0x23341f[_0x5abf('0x44')]=_[_0x5abf('0x43')](_0x245157[_0x5abf('0x3f')],qs['fields'](_0x37db47[_0x5abf('0x40')][_0x5abf('0x45')]));_0x23341f[_0x5abf('0x44')]=_0x23341f[_0x5abf('0x44')][_0x5abf('0x46')]?_0x23341f['attributes']:_0x245157[_0x5abf('0x3f')];if(_0x37db47['query'][_0x5abf('0x51')]){_0x23341f[_0x5abf('0x52')]=[{'all':!![]}];}_0x23341f=_[_0x5abf('0x4c')]({},_0x23341f,_0x37db47[_0x5abf('0x4e')]);return db[_0x5abf('0x50')][_0x5abf('0x55')](_0x23341f)[_0x5abf('0x1f')](handleEntityNotFound(_0x50480d,null))[_0x5abf('0x1f')](respondWithResult(_0x50480d,null))[_0x5abf('0x28')](handleError(_0x50480d,null));};exports['create']=function(_0x116d74,_0x3e13d7){return db[_0x5abf('0x50')][_0x5abf('0x56')](_0x116d74['body'],{})[_0x5abf('0x1f')](function(_0xc2be7a){var _0x1a1ad3=_0x116d74[_0x5abf('0x57')][_0x5abf('0x35')]({'plain':!![]});if(!_0x1a1ad3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1a1ad3[_0x5abf('0x58')]===_0x5abf('0x57')){var _0x26e5af=_0xc2be7a[_0x5abf('0x35')]({'plain':!![]});var _0x36c79d='ChatQueues';return db[_0x5abf('0x59')][_0x5abf('0x55')]({'where':{'name':_0x36c79d,'userProfileId':_0x1a1ad3[_0x5abf('0x5a')]},'raw':!![]})['then'](function(_0x522e42){if(_0x522e42&&_0x522e42[_0x5abf('0x5b')]===0x0){return db[_0x5abf('0x37')]['create']({'name':_0x26e5af['name'],'resourceId':_0x26e5af['id'],'type':_0x522e42[_0x5abf('0x39')],'sectionId':_0x522e42['id']},{})['then'](function(){return _0xc2be7a;});}else{return _0xc2be7a;}})[_0x5abf('0x28')](function(_0x8b3c73){logger[_0x5abf('0x24')](_0x5abf('0x5c'),_0x8b3c73);throw _0x8b3c73;});}return _0xc2be7a;})['then'](respondWithResult(_0x3e13d7,0xc9))[_0x5abf('0x28')](handleError(_0x3e13d7,null));};exports['update']=function(_0xd0f4f9,_0x335a24){if(_0xd0f4f9[_0x5abf('0x5d')]['id']){delete _0xd0f4f9['body']['id'];}return db[_0x5abf('0x50')]['find']({'where':{'id':_0xd0f4f9[_0x5abf('0x54')]['id']}})['then'](handleEntityNotFound(_0x335a24,null))[_0x5abf('0x1f')](saveUpdates(_0xd0f4f9[_0x5abf('0x5d')],null))[_0x5abf('0x1f')](respondWithResult(_0x335a24,null))[_0x5abf('0x28')](handleError(_0x335a24,null));};exports['destroy']=function(_0xa3c2d6,_0x4ba0a8){return db['ChatQueue'][_0x5abf('0x55')]({'where':{'id':_0xa3c2d6[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x4ba0a8,null))['then'](removeEntity(_0x4ba0a8,null))[_0x5abf('0x28')](handleError(_0x4ba0a8,null));};exports['describe']=function(_0x21046d,_0x570be5){return db['ChatQueue'][_0x5abf('0x5e')]()['then'](respondWithResult(_0x570be5,null))['catch'](handleError(_0x570be5,null));};exports[_0x5abf('0x5f')]=function(_0x162217,_0x7ab347,_0x33e7e3){var _0xe524f0={'raw':!![],'where':{}},_0x43bcac={},_0x1d0dd4;return db[_0x5abf('0x50')][_0x5abf('0x60')]({'where':{'id':_0x162217[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x7ab347,null))[_0x5abf('0x1f')](function(_0x3c2e86){if(_0x3c2e86){_0x1d0dd4=_0x3c2e86[_0x5abf('0x35')]({'plain':!![]});_0x43bcac[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x61')][_0x5abf('0x62')]);_0x43bcac['query']=_[_0x5abf('0x41')](_0x162217[_0x5abf('0x40')]);_0x43bcac[_0x5abf('0x42')]=_['intersection'](_0x43bcac[_0x5abf('0x3f')],_0x43bcac['query']);_0xe524f0[_0x5abf('0x44')]=_['intersection'](_0x43bcac[_0x5abf('0x3f')],qs['fields'](_0x162217[_0x5abf('0x40')][_0x5abf('0x45')]));_0xe524f0[_0x5abf('0x44')]=_0xe524f0[_0x5abf('0x44')][_0x5abf('0x46')]?_0xe524f0[_0x5abf('0x44')]:_0x43bcac[_0x5abf('0x3f')];if(!_0x162217['query']['hasOwnProperty'](_0x5abf('0x48'))){_0xe524f0[_0x5abf('0x2f')]=qs[_0x5abf('0x2f')](_0x162217['query'][_0x5abf('0x2f')]);_0xe524f0[_0x5abf('0x2d')]=qs[_0x5abf('0x2d')](_0x162217[_0x5abf('0x40')]['offset']);}_0xe524f0['order']=qs['sort'](_0x162217[_0x5abf('0x40')]['sort']);_0xe524f0[_0x5abf('0x4f')]=qs[_0x5abf('0x42')](_['pick'](_0x162217[_0x5abf('0x40')],_0x43bcac[_0x5abf('0x42')]));_0xe524f0[_0x5abf('0x4f')]['ChatQueueId']=_0x3c2e86['id'];if(_0x162217['query'][_0x5abf('0x4b')]){_0xe524f0[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0xe524f0['where'],{'$or':_['map'](_0xe524f0[_0x5abf('0x44')],function(_0xb640dc){var _0x2ed2c0={};_0x2ed2c0[_0xb640dc]={'$like':'%'+_0x162217[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x2ed2c0;})});}_0xe524f0=_[_0x5abf('0x4c')]({},_0xe524f0,_0x162217[_0x5abf('0x4e')]);return db['UserChatQueue'][_0x5abf('0x63')](_0xe524f0);}})[_0x5abf('0x1f')](function(_0x4531bf){if(_0x4531bf){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x4531bf,'UserId'),'role':_0x5abf('0x64')},'attributes':['id',_0x5abf('0x39'),_0x5abf('0x65'),_0x5abf('0x66'),_0x5abf('0x67')]});}})[_0x5abf('0x1f')](function(_0x4da4a9){if(_0x4da4a9){return{'count':_0x4da4a9[_0x5abf('0x30')],'rows':_['map'](_0x4da4a9[_0x5abf('0x68')],function(_0x448371){return{'membername':_0x448371[_0x5abf('0x39')],'UserId':_0x448371['id'],'queue_name':_0x1d0dd4[_0x5abf('0x39')],'ChatQueueId':_0x1d0dd4['id'],'interface':util[_0x5abf('0x69')](_0x5abf('0x6a'),_0x5abf('0x6b'),_0x448371[_0x5abf('0x39')]),'penalty':0x0,'paused':_0x448371[_0x5abf('0x65')],'createdAt':_0x448371[_0x5abf('0x67')],'updatedAt':_0x448371[_0x5abf('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5abf('0x1f')](respondWithFilteredResult(_0x7ab347,_0xe524f0))['catch'](handleError(_0x7ab347,null));};exports[_0x5abf('0x6c')]=function(_0x33ba7a,_0xb7135,_0x1f9e49){var _0x556518={};var _0x477efa={};var _0x109846;var _0x39891e;return db['ChatQueue'][_0x5abf('0x60')]({'where':{'id':_0x33ba7a['params']['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0xb7135,null))['then'](function(_0x2b57f4){if(_0x2b57f4){_0x109846=_0x2b57f4;_0x477efa['model']=_[_0x5abf('0x41')](db[_0x5abf('0x6d')][_0x5abf('0x62')]);_0x477efa[_0x5abf('0x40')]=_['keys'](_0x33ba7a[_0x5abf('0x40')]);_0x477efa[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x477efa[_0x5abf('0x3f')],_0x477efa['query']);_0x556518['attributes']=_[_0x5abf('0x43')](_0x477efa[_0x5abf('0x3f')],qs[_0x5abf('0x45')](_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x45')]));_0x556518[_0x5abf('0x44')]=_0x556518['attributes'][_0x5abf('0x46')]?_0x556518[_0x5abf('0x44')]:_0x477efa['model'];_0x556518[_0x5abf('0x49')]=qs[_0x5abf('0x4a')](_0x33ba7a[_0x5abf('0x40')]['sort']);_0x556518[_0x5abf('0x4f')]=qs['filters'](_[_0x5abf('0x6e')](_0x33ba7a[_0x5abf('0x40')],_0x477efa[_0x5abf('0x42')]));if(_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x556518[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0x556518[_0x5abf('0x4f')],{'$or':_[_0x5abf('0x3b')](_0x556518[_0x5abf('0x44')],function(_0x1b423d){var _0x4c225f={};_0x4c225f[_0x1b423d]={'$like':'%'+_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x4c225f;})});}_0x556518=_[_0x5abf('0x4c')]({},_0x556518,_0x33ba7a[_0x5abf('0x4e')]);return _0x109846[_0x5abf('0x6c')](_0x556518);}})[_0x5abf('0x1f')](function(_0xc711c4){if(_0xc711c4){_0x39891e=_0xc711c4['length'];if(!_0x33ba7a[_0x5abf('0x40')][_0x5abf('0x47')](_0x5abf('0x48'))){_0x556518['limit']=qs[_0x5abf('0x2f')](_0x33ba7a[_0x5abf('0x40')]['limit']);_0x556518[_0x5abf('0x2d')]=qs['offset'](_0x33ba7a['query']['offset']);}return _0x109846['getTeams'](_0x556518);}})[_0x5abf('0x1f')](function(_0x3729e1){if(_0x3729e1){return _0x3729e1?{'count':_0x39891e,'rows':_0x3729e1}:null;}})[_0x5abf('0x1f')](respondWithResult(_0xb7135,null))[_0x5abf('0x28')](handleError(_0xb7135,null));};exports['addTeams']=function(_0x236129,_0x4d1dfe,_0x13a8ad){var _0x1b6957=_0x236129[_0x5abf('0x5d')]['ids'];return db[_0x5abf('0x6d')][_0x5abf('0x63')]({'where':{'id':_0x1b6957},'attributes':['id'],'include':[{'model':db[_0x5abf('0x6f')],'as':_0x5abf('0x70'),'attributes':['id',_0x5abf('0x39'),_0x5abf('0x71'),_0x5abf('0x72'),'interface'],'raw':!![]}]})[_0x5abf('0x1f')](function(_0x4e3b37){if(_0x4e3b37){var _0x1fc6f2=_[_0x5abf('0x73')](_0x4e3b37,function(_0x3387a5){var _0x450c31=_0x3387a5['get']({'plain':!![]});return _0x450c31[_0x5abf('0x70')];});return db['ChatQueue'][_0x5abf('0x55')]({'where':{'id':_0x236129['params']['id']}})[_0x5abf('0x1f')](function(_0x269471){return db[_0x5abf('0x74')]['transaction'](function(_0x346211){return _0x269471[_0x5abf('0x75')](_0x1b6957,{'transaction':_0x346211})[_0x5abf('0x1f')](function(){return BPromise[_0x5abf('0x76')](_0x1fc6f2,function(_0x2e41e2){return db['UserChatQueue'][_0x5abf('0x77')]({'where':{'UserId':_0x2e41e2['id'],'ChatQueueId':_0x236129[_0x5abf('0x54')]['id']},'transaction':_0x346211});});})[_0x5abf('0x1f')](function(){_0x1fc6f2[_0x5abf('0x78')](function(_0x3d8847){socket['emit']('userChatQueue:save',{'UserId':_0x3d8847['id'],'ChatQueueId':_0x269471['id']});});});});});}})[_0x5abf('0x1f')](respondWithStatusCode(_0x4d1dfe,null))[_0x5abf('0x28')](handleError(_0x4d1dfe,null));};exports[_0x5abf('0x79')]=function(_0x172bc2,_0x2137fa,_0x2b520c){return db[_0x5abf('0x6d')]['findAll']({'where':{'id':_0x172bc2['query'][_0x5abf('0x7a')]},'attributes':['id'],'include':[{'model':db[_0x5abf('0x6f')],'as':_0x5abf('0x70'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2137fa,null))[_0x5abf('0x1f')](function(_0x1981fa){var _0x2c6904=_[_0x5abf('0x3b')](_0x1981fa,'id');var _0x4a04c3=[];var _0x29e65e=[];var _0x229ec0=squel[_0x5abf('0x7b')]();_0x229ec0['field'](_0x5abf('0x7c'))[_0x5abf('0x7d')]('team_has_chat_queues','tq')[_0x5abf('0x7e')](_0x5abf('0x7f'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x5abf('0x4f')](_0x5abf('0x80'),_0x172bc2[_0x5abf('0x54')]['id']);for(var _0x419777=0x0;_0x419777<_0x1981fa[_0x5abf('0x46')];_0x419777+=0x1){let _0x3b5dac=_0x1981fa[_0x419777];for(var _0x56107e=0x0;_0x56107e<_0x3b5dac[_0x5abf('0x70')][_0x5abf('0x46')];_0x56107e+=0x1){let _0x282e33=_0x3b5dac[_0x5abf('0x70')][_0x56107e];var _0xb42dce=_0x229ec0[_0x5abf('0x81')]();_0xb42dce[_0x5abf('0x4f')](_0x5abf('0x82'),_0x282e33['id']);_0x29e65e[_0x5abf('0x83')](db['sequelize']['query'](_0xb42dce['toString'](),{'type':db[_0x5abf('0x74')][_0x5abf('0x84')][_0x5abf('0x85')]})[_0x5abf('0x1f')](function(_0x286644){if(_0x286644['length']===0x1){return _0x282e33['id'];}else{var _0x2de0e6=_[_0x5abf('0x86')](_[_0x5abf('0x3b')](_0x286644,'TeamId'),function(_0x208215){return _[_0x5abf('0x87')](_0x2c6904,_0x208215);});if(_0x2de0e6){return _0x282e33['id'];}}}));}}return BPromise[_0x5abf('0x88')](_0x29e65e)[_0x5abf('0x1f')](function(_0x3c0e17){_0x4a04c3=_(_0x4a04c3)[_0x5abf('0x89')](_0x3c0e17)[_0x5abf('0x8a')]()[_0x5abf('0x8b')]();return db[_0x5abf('0x50')]['find']({'where':{'id':_0x172bc2[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](function(_0x243233){return db[_0x5abf('0x74')][_0x5abf('0x8c')](function(_0x123a89){return _0x243233['removeTeams'](_0x172bc2['query'][_0x5abf('0x7a')],{'transaction':_0x123a89})[_0x5abf('0x1f')](function(){if(!_[_0x5abf('0x8d')](_0x4a04c3)){return _0x243233['removeAgents'](_0x4a04c3,{'transaction':_0x123a89});}})[_0x5abf('0x1f')](function(){_0x4a04c3[_0x5abf('0x78')](function(_0x3d0094){socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':_0x3d0094,'ChatQueueId':_0x243233['id']});});});});});});})[_0x5abf('0x1f')](respondWithStatusCode(_0x2137fa,null))[_0x5abf('0x28')](handleError(_0x2137fa,null));};exports[_0x5abf('0x90')]=function(_0x4de1d1,_0x24a80c,_0x846094){return db[_0x5abf('0x50')][_0x5abf('0x55')]({'where':{'id':_0x4de1d1[_0x5abf('0x54')]['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x24a80c,null))[_0x5abf('0x1f')](function(_0x317310){if(_0x317310){return _0x317310[_0x5abf('0x90')](_0x4de1d1['body'][_0x5abf('0x7a')],_[_0x5abf('0x91')](_0x4de1d1['body'],[_0x5abf('0x7a'),'id'])||{})['spread'](function(_0x21cae7){for(var _0x57d0a6=0x0;_0x57d0a6<_0x4de1d1[_0x5abf('0x5d')][_0x5abf('0x7a')]['length'];_0x57d0a6+=0x1){socket[_0x5abf('0x8e')](_0x5abf('0x92'),{'UserId':Number(_0x4de1d1[_0x5abf('0x5d')][_0x5abf('0x7a')][_0x57d0a6]),'ChatQueueId':Number(_0x4de1d1[_0x5abf('0x54')]['id'])});}return _0x21cae7;});}})['then'](respondWithResult(_0x24a80c,null))[_0x5abf('0x28')](handleError(_0x24a80c,null));};exports[_0x5abf('0x93')]=function(_0x1cf9b6,_0x57e939,_0x15b506){return db[_0x5abf('0x50')][_0x5abf('0x55')]({'where':{'id':_0x1cf9b6['params']['id']}})[_0x5abf('0x1f')](handleEntityNotFound(_0x57e939,null))[_0x5abf('0x1f')](function(_0x43be2d){if(_0x43be2d){return _0x43be2d[_0x5abf('0x93')](_0x1cf9b6[_0x5abf('0x40')][_0x5abf('0x7a')])[_0x5abf('0x1f')](function(){if(_[_0x5abf('0x94')](_0x1cf9b6[_0x5abf('0x40')]['ids'])){for(var _0x270619=0x0;_0x270619<_0x1cf9b6[_0x5abf('0x40')]['ids']['length'];_0x270619+=0x1){socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':Number(_0x1cf9b6[_0x5abf('0x40')]['ids'][_0x270619]),'ChatQueueId':Number(_0x1cf9b6[_0x5abf('0x54')]['id'])});}}else{socket[_0x5abf('0x8e')](_0x5abf('0x8f'),{'UserId':Number(_0x1cf9b6['query'][_0x5abf('0x7a')]),'ChatQueueId':Number(_0x1cf9b6[_0x5abf('0x54')]['id'])});}});}})[_0x5abf('0x1f')](respondWithStatusCode(_0x57e939,null))[_0x5abf('0x28')](handleError(_0x57e939,null));};exports['getAgents']=function(_0x391b6c,_0x517ad8,_0x3b7410){var _0x30e19f={};var _0x1486b6={};var _0x3cc1ee;var _0x5aeb5e;return db['ChatQueue'][_0x5abf('0x60')]({'where':{'id':_0x391b6c[_0x5abf('0x54')]['id']}})['then'](handleEntityNotFound(_0x517ad8,null))[_0x5abf('0x1f')](function(_0x1ba88c){if(_0x1ba88c){_0x3cc1ee=_0x1ba88c;_0x1486b6[_0x5abf('0x3f')]=_[_0x5abf('0x41')](db[_0x5abf('0x6f')][_0x5abf('0x62')]);_0x1486b6['query']=_['keys'](_0x391b6c[_0x5abf('0x40')]);_0x1486b6[_0x5abf('0x42')]=_[_0x5abf('0x43')](_0x1486b6[_0x5abf('0x3f')],_0x1486b6[_0x5abf('0x40')]);_0x30e19f[_0x5abf('0x44')]=_['intersection'](_0x1486b6['model'],qs['fields'](_0x391b6c[_0x5abf('0x40')]['fields']));_0x30e19f[_0x5abf('0x44')]=_0x30e19f[_0x5abf('0x44')][_0x5abf('0x46')]?_0x30e19f[_0x5abf('0x44')]:_0x1486b6[_0x5abf('0x3f')];_0x30e19f['order']=qs[_0x5abf('0x4a')](_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4a')]);_0x30e19f['where']=qs[_0x5abf('0x42')](_[_0x5abf('0x6e')](_0x391b6c[_0x5abf('0x40')],_0x1486b6[_0x5abf('0x42')]));if(_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4b')]){_0x30e19f[_0x5abf('0x4f')]=_[_0x5abf('0x4c')](_0x30e19f[_0x5abf('0x4f')],{'$or':_['map'](_0x30e19f[_0x5abf('0x44')],function(_0x164f9b){var _0x1ce365={};_0x1ce365[_0x164f9b]={'$like':'%'+_0x391b6c[_0x5abf('0x40')][_0x5abf('0x4b')]+'%'};return _0x1ce365;})});}_0x30e19f=_[_0x5abf('0x4c')]({},_0x30e19f,_0x391b6c[_0x5abf('0x4e')]);return _0x3cc1ee[_0x5abf('0x95')](_0x30e19f);}})[_0x5abf('0x1f')](function(_0x11e2ea){if(_0x11e2ea){_0x5aeb5e=_0x11e2ea[_0x5abf('0x46')];if(!_0x391b6c[_0x5abf('0x40')][_0x5abf('0x47')](_0x5abf('0x48'))){_0x30e19f[_0x5abf('0x2f')]=qs[_0x5abf('0x2f')](_0x391b6c['query'][_0x5abf('0x2f')]);_0x30e19f[_0x5abf('0x2d')]=qs[_0x5abf('0x2d')](_0x391b6c['query'][_0x5abf('0x2d')]);}return _0x3cc1ee[_0x5abf('0x95')](_0x30e19f);}})[_0x5abf('0x1f')](function(_0x1c5256){if(_0x1c5256){return _0x1c5256?{'count':_0x5aeb5e,'rows':_0x1c5256}:null;}})['then'](respondWithResult(_0x517ad8,null))['catch'](handleError(_0x517ad8,null));};
\ No newline at end of file
+var _0xb4c4=['code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','get','stack','name','send','index','map','ChatQueue','query','keys','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','rawAttributes','include','find','create','body','user','role','ChatQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','ChatQueueId','User','UserId','agent','chatPause','updatedAt','format','SIP','createdAt','getTeams','Team','order','addTeams','ids','voicePause','Agents','findOrCreate','emit','userChatQueue:save','removeTeams','select','from','team_has_chat_queues','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','all','union','compact','removeAgents','forEach','userChatQueue:remove','addAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/license/util','defaults','redis','./chatQueue.socket','register','jayson/promise','client','http','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x11b3b7,_0x472173){var _0x5e627d=function(_0x4fcd05){while(--_0x4fcd05){_0x11b3b7['push'](_0x11b3b7['shift']());}};_0x5e627d(++_0x472173);}(_0xb4c4,0xf1));var _0x4b4c=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0xb4c4[_0x1c6ef2];return _0x404b8c;};'use strict';var emlformat=require(_0x4b4c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4b4c('0x1'));var jsonpatch=require(_0x4b4c('0x2'));var rp=require(_0x4b4c('0x3'));var moment=require('moment');var BPromise=require(_0x4b4c('0x4'));var Mustache=require(_0x4b4c('0x5'));var util=require(_0x4b4c('0x6'));var path=require(_0x4b4c('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4b4c('0x8'));var _=require(_0x4b4c('0x9'));var squel=require(_0x4b4c('0xa'));var crypto=require('crypto');var jsforce=require(_0x4b4c('0xb'));var deskjs=require(_0x4b4c('0xc'));var toCsv=require(_0x4b4c('0xd'));var querystring=require(_0x4b4c('0xe'));var Papa=require(_0x4b4c('0xf'));var Redis=require(_0x4b4c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4b4c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b4c('0x12'))(_0x4b4c('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4b4c('0x14'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4b4c('0x15')](config[_0x4b4c('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4b4c('0x16')]));require(_0x4b4c('0x17'))[_0x4b4c('0x18')](socket);var jayson=require(_0x4b4c('0x19'));var client=jayson[_0x4b4c('0x1a')][_0x4b4c('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x198f06,_0x2c7213,_0x3004a6,_0x2ba3da){return new BPromise(function(_0x2b194b,_0x7743de){var _0x3df957=_0x2ba3da||client;return _0x3df957['request'](_0x198f06,_0x3004a6)[_0x4b4c('0x1c')](function(_0xb9c170){logger[_0x4b4c('0x1d')](_0x4b4c('0x1e'),_0x2c7213,_0x4b4c('0x1f'));logger['debug'](_0x4b4c('0x20'),_0x2c7213,_0x4b4c('0x1f'),JSON[_0x4b4c('0x21')](_0xb9c170));if(_0xb9c170['error']){if(_0xb9c170[_0x4b4c('0x22')][_0x4b4c('0x23')]===0x1f4){logger[_0x4b4c('0x22')](_0x4b4c('0x1e'),_0x2c7213,_0xb9c170[_0x4b4c('0x22')][_0x4b4c('0x24')]);return _0x7743de(_0xb9c170[_0x4b4c('0x22')][_0x4b4c('0x24')]);}logger[_0x4b4c('0x22')](_0x4b4c('0x1e'),_0x2c7213,_0xb9c170[_0x4b4c('0x22')]['message']);return _0x2b194b(_0xb9c170['error'][_0x4b4c('0x24')]);}else{logger[_0x4b4c('0x1d')](_0x4b4c('0x1e'),_0x2c7213,'request\x20sent');_0x2b194b(_0xb9c170[_0x4b4c('0x25')][_0x4b4c('0x24')]);}})[_0x4b4c('0x26')](function(_0xfa3a87){logger[_0x4b4c('0x22')](_0x4b4c('0x1e'),_0x2c7213,_0xfa3a87);_0x7743de(_0xfa3a87);});});}function respondWithStatusCode(_0x1c44f7,_0x6d04f6){_0x6d04f6=_0x6d04f6||0xcc;return function(_0x4e868e){if(_0x4e868e){return _0x1c44f7[_0x4b4c('0x27')](_0x6d04f6);}return _0x1c44f7[_0x4b4c('0x28')](_0x6d04f6)[_0x4b4c('0x29')]();};}function respondWithResult(_0x42d752,_0x2dbdf9){_0x2dbdf9=_0x2dbdf9||0xc8;return function(_0x276196){if(_0x276196){return _0x42d752['status'](_0x2dbdf9)['json'](_0x276196);}};}function respondWithFilteredResult(_0x264cdf,_0xf9a6d7){return function(_0x57081c){if(_0x57081c){var _0x4f1df1=typeof _0xf9a6d7[_0x4b4c('0x2a')]===_0x4b4c('0x2b')&&typeof _0xf9a6d7[_0x4b4c('0x2c')]===_0x4b4c('0x2b');var _0x4e833d=_0x57081c[_0x4b4c('0x2d')];var _0x274c98=_0x4f1df1?0x0:_0xf9a6d7[_0x4b4c('0x2a')];var _0x5993d6=_0x4f1df1?_0x57081c[_0x4b4c('0x2d')]:_0xf9a6d7[_0x4b4c('0x2a')]+_0xf9a6d7[_0x4b4c('0x2c')];var _0xdc657e;if(_0x5993d6>=_0x4e833d){_0x5993d6=_0x4e833d;_0xdc657e=0xc8;}else{_0xdc657e=0xce;}_0x264cdf[_0x4b4c('0x28')](_0xdc657e);return _0x264cdf[_0x4b4c('0x2e')](_0x4b4c('0x2f'),_0x274c98+'-'+_0x5993d6+'/'+_0x4e833d)[_0x4b4c('0x30')](_0x57081c);}return null;};}function patchUpdates(_0x52f790){return function(_0x5a0810){try{jsonpatch[_0x4b4c('0x31')](_0x5a0810,_0x52f790,!![]);}catch(_0x143bfe){return BPromise[_0x4b4c('0x32')](_0x143bfe);}return _0x5a0810[_0x4b4c('0x33')]();};}function saveUpdates(_0x4b86b6,_0x4ae1da){return function(_0x2060f3){if(_0x2060f3){return _0x2060f3[_0x4b4c('0x34')](_0x4b86b6)[_0x4b4c('0x1c')](function(_0x444efc){return _0x444efc;});}return null;};}function removeEntity(_0x2127e8,_0x11ef9c){return function(_0x5dda87){if(_0x5dda87){return _0x5dda87[_0x4b4c('0x35')]()[_0x4b4c('0x1c')](function(){var _0x47f366=_0x5dda87[_0x4b4c('0x36')]({'plain':!![]});var _0x5cda68='ChatQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x5cda68,'resourceId':_0x47f366['id']}})['then'](function(){return _0x5dda87;});})[_0x4b4c('0x1c')](function(){_0x2127e8[_0x4b4c('0x28')](0xcc)[_0x4b4c('0x29')]();});}};}function handleEntityNotFound(_0x317aeb,_0x31ecda){return function(_0x26308c){if(!_0x26308c){_0x317aeb[_0x4b4c('0x27')](0x194);}return _0x26308c;};}function handleError(_0x154043,_0xf6281c){_0xf6281c=_0xf6281c||0x1f4;return function(_0x2ff3dc){logger[_0x4b4c('0x22')](_0x2ff3dc[_0x4b4c('0x37')]);if(_0x2ff3dc[_0x4b4c('0x38')]){delete _0x2ff3dc[_0x4b4c('0x38')];}_0x154043[_0x4b4c('0x28')](_0xf6281c)[_0x4b4c('0x39')](_0x2ff3dc);};}exports[_0x4b4c('0x3a')]=function(_0x51a7e3,_0x2e2e81){var _0x931f37={},_0x468cb2={},_0x18a6b2={'count':0x0,'rows':[]};var _0xe62947=_[_0x4b4c('0x3b')](db[_0x4b4c('0x3c')]['rawAttributes'],function(_0x1314e5){return{'name':_0x1314e5['fieldName'],'type':_0x1314e5['type']['key']};});_0x468cb2['model']=_[_0x4b4c('0x3b')](_0xe62947,'name');_0x468cb2[_0x4b4c('0x3d')]=_[_0x4b4c('0x3e')](_0x51a7e3[_0x4b4c('0x3d')]);_0x468cb2['filters']=_['intersection'](_0x468cb2[_0x4b4c('0x3f')],_0x468cb2[_0x4b4c('0x3d')]);_0x931f37['attributes']=_[_0x4b4c('0x40')](_0x468cb2[_0x4b4c('0x3f')],qs['fields'](_0x51a7e3[_0x4b4c('0x3d')][_0x4b4c('0x41')]));_0x931f37[_0x4b4c('0x42')]=_0x931f37[_0x4b4c('0x42')][_0x4b4c('0x43')]?_0x931f37[_0x4b4c('0x42')]:_0x468cb2['model'];if(!_0x51a7e3[_0x4b4c('0x3d')][_0x4b4c('0x44')](_0x4b4c('0x45'))){_0x931f37[_0x4b4c('0x2c')]=qs['limit'](_0x51a7e3[_0x4b4c('0x3d')][_0x4b4c('0x2c')]);_0x931f37[_0x4b4c('0x2a')]=qs['offset'](_0x51a7e3['query']['offset']);}_0x931f37['order']=qs[_0x4b4c('0x46')](_0x51a7e3['query'][_0x4b4c('0x46')]);_0x931f37[_0x4b4c('0x47')]=qs['filters'](_[_0x4b4c('0x48')](_0x51a7e3[_0x4b4c('0x3d')],_0x468cb2[_0x4b4c('0x49')]),_0xe62947);if(_0x51a7e3['query'][_0x4b4c('0x4a')]){_0x931f37[_0x4b4c('0x47')]=_[_0x4b4c('0x4b')](_0x931f37[_0x4b4c('0x47')],{'$or':_['map'](_0xe62947,function(_0xa4b551){if(_0xa4b551['type']!==_0x4b4c('0x4c')){var _0x248f66={};_0x248f66[_0xa4b551[_0x4b4c('0x38')]]={'$like':'%'+_0x51a7e3[_0x4b4c('0x3d')]['filter']+'%'};return _0x248f66;}})});}_0x931f37=_[_0x4b4c('0x4b')]({},_0x931f37,_0x51a7e3[_0x4b4c('0x4d')]);var _0x447b2e={'where':_0x931f37[_0x4b4c('0x47')]};return db[_0x4b4c('0x3c')][_0x4b4c('0x2d')](_0x447b2e)[_0x4b4c('0x1c')](function(_0x47bf09){_0x18a6b2[_0x4b4c('0x2d')]=_0x47bf09;if(_0x51a7e3[_0x4b4c('0x3d')][_0x4b4c('0x4e')]){_0x931f37['include']=[{'all':!![]}];}return db[_0x4b4c('0x3c')][_0x4b4c('0x4f')](_0x931f37);})[_0x4b4c('0x1c')](function(_0x1a92d4){_0x18a6b2[_0x4b4c('0x50')]=_0x1a92d4;return _0x18a6b2;})['then'](respondWithFilteredResult(_0x2e2e81,_0x931f37))[_0x4b4c('0x26')](handleError(_0x2e2e81,null));};exports['show']=function(_0x674110,_0x4d97d2){var _0x5b98e0={'raw':!![],'where':{'id':_0x674110['params']['id']}},_0x562a88={};_0x562a88[_0x4b4c('0x3f')]=_[_0x4b4c('0x3e')](db[_0x4b4c('0x3c')][_0x4b4c('0x51')]);_0x562a88[_0x4b4c('0x3d')]=_[_0x4b4c('0x3e')](_0x674110['query']);_0x562a88[_0x4b4c('0x49')]=_[_0x4b4c('0x40')](_0x562a88[_0x4b4c('0x3f')],_0x562a88[_0x4b4c('0x3d')]);_0x5b98e0[_0x4b4c('0x42')]=_[_0x4b4c('0x40')](_0x562a88[_0x4b4c('0x3f')],qs[_0x4b4c('0x41')](_0x674110['query'][_0x4b4c('0x41')]));_0x5b98e0[_0x4b4c('0x42')]=_0x5b98e0[_0x4b4c('0x42')][_0x4b4c('0x43')]?_0x5b98e0[_0x4b4c('0x42')]:_0x562a88[_0x4b4c('0x3f')];if(_0x674110[_0x4b4c('0x3d')]['includeAll']){_0x5b98e0[_0x4b4c('0x52')]=[{'all':!![]}];}_0x5b98e0=_[_0x4b4c('0x4b')]({},_0x5b98e0,_0x674110[_0x4b4c('0x4d')]);return db[_0x4b4c('0x3c')][_0x4b4c('0x53')](_0x5b98e0)[_0x4b4c('0x1c')](handleEntityNotFound(_0x4d97d2,null))[_0x4b4c('0x1c')](respondWithResult(_0x4d97d2,null))['catch'](handleError(_0x4d97d2,null));};exports[_0x4b4c('0x54')]=function(_0x3782ff,_0x55adc6){return db[_0x4b4c('0x3c')][_0x4b4c('0x54')](_0x3782ff[_0x4b4c('0x55')],{})[_0x4b4c('0x1c')](function(_0x39665d){var _0x498eae=_0x3782ff[_0x4b4c('0x56')][_0x4b4c('0x36')]({'plain':!![]});if(!_0x498eae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x498eae[_0x4b4c('0x57')]===_0x4b4c('0x56')){var _0x58452b=_0x39665d[_0x4b4c('0x36')]({'plain':!![]});var _0x2e4074=_0x4b4c('0x58');return db[_0x4b4c('0x59')][_0x4b4c('0x53')]({'where':{'name':_0x2e4074,'userProfileId':_0x498eae[_0x4b4c('0x5a')]},'raw':!![]})[_0x4b4c('0x1c')](function(_0x4cf9e4){if(_0x4cf9e4&&_0x4cf9e4[_0x4b4c('0x5b')]===0x0){return db[_0x4b4c('0x5c')][_0x4b4c('0x54')]({'name':_0x58452b[_0x4b4c('0x38')],'resourceId':_0x58452b['id'],'type':_0x4cf9e4[_0x4b4c('0x38')],'sectionId':_0x4cf9e4['id']},{})['then'](function(){return _0x39665d;});}else{return _0x39665d;}})[_0x4b4c('0x26')](function(_0x5da781){logger['error'](_0x4b4c('0x5d'),_0x5da781);throw _0x5da781;});}return _0x39665d;})['then'](respondWithResult(_0x55adc6,0xc9))[_0x4b4c('0x26')](handleError(_0x55adc6,null));};exports[_0x4b4c('0x34')]=function(_0xbce39f,_0x44ea9a){if(_0xbce39f['body']['id']){delete _0xbce39f[_0x4b4c('0x55')]['id'];}return db[_0x4b4c('0x3c')][_0x4b4c('0x53')]({'where':{'id':_0xbce39f[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](handleEntityNotFound(_0x44ea9a,null))[_0x4b4c('0x1c')](saveUpdates(_0xbce39f[_0x4b4c('0x55')],null))[_0x4b4c('0x1c')](respondWithResult(_0x44ea9a,null))['catch'](handleError(_0x44ea9a,null));};exports[_0x4b4c('0x35')]=function(_0x3c2278,_0x2e4aa7){return db['ChatQueue'][_0x4b4c('0x53')]({'where':{'id':_0x3c2278[_0x4b4c('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2e4aa7,null))['then'](removeEntity(_0x2e4aa7,null))[_0x4b4c('0x26')](handleError(_0x2e4aa7,null));};exports[_0x4b4c('0x5f')]=function(_0x153ec0,_0x1b2c93){return db[_0x4b4c('0x3c')]['describe']()[_0x4b4c('0x1c')](respondWithResult(_0x1b2c93,null))[_0x4b4c('0x26')](handleError(_0x1b2c93,null));};exports[_0x4b4c('0x60')]=function(_0x21a6fb,_0x4ebf21,_0x44ea8b){var _0x11a89b={'raw':!![],'where':{}},_0x6fd910={},_0x16eacd;return db[_0x4b4c('0x3c')][_0x4b4c('0x61')]({'where':{'id':_0x21a6fb[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](handleEntityNotFound(_0x4ebf21,null))[_0x4b4c('0x1c')](function(_0x3939f3){if(_0x3939f3){_0x16eacd=_0x3939f3[_0x4b4c('0x36')]({'plain':!![]});_0x6fd910[_0x4b4c('0x3f')]=_['keys'](db[_0x4b4c('0x62')]['rawAttributes']);_0x6fd910['query']=_[_0x4b4c('0x3e')](_0x21a6fb['query']);_0x6fd910[_0x4b4c('0x49')]=_[_0x4b4c('0x40')](_0x6fd910[_0x4b4c('0x3f')],_0x6fd910['query']);_0x11a89b[_0x4b4c('0x42')]=_[_0x4b4c('0x40')](_0x6fd910['model'],qs[_0x4b4c('0x41')](_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x41')]));_0x11a89b[_0x4b4c('0x42')]=_0x11a89b[_0x4b4c('0x42')][_0x4b4c('0x43')]?_0x11a89b[_0x4b4c('0x42')]:_0x6fd910[_0x4b4c('0x3f')];if(!_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x44')](_0x4b4c('0x45'))){_0x11a89b[_0x4b4c('0x2c')]=qs[_0x4b4c('0x2c')](_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x2c')]);_0x11a89b[_0x4b4c('0x2a')]=qs[_0x4b4c('0x2a')](_0x21a6fb['query'][_0x4b4c('0x2a')]);}_0x11a89b['order']=qs['sort'](_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x46')]);_0x11a89b[_0x4b4c('0x47')]=qs[_0x4b4c('0x49')](_[_0x4b4c('0x48')](_0x21a6fb[_0x4b4c('0x3d')],_0x6fd910[_0x4b4c('0x49')]));_0x11a89b[_0x4b4c('0x47')][_0x4b4c('0x63')]=_0x3939f3['id'];if(_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x4a')]){_0x11a89b[_0x4b4c('0x47')]=_['merge'](_0x11a89b['where'],{'$or':_[_0x4b4c('0x3b')](_0x11a89b[_0x4b4c('0x42')],function(_0x1aa648){var _0x2af5f4={};_0x2af5f4[_0x1aa648]={'$like':'%'+_0x21a6fb[_0x4b4c('0x3d')][_0x4b4c('0x4a')]+'%'};return _0x2af5f4;})});}_0x11a89b=_[_0x4b4c('0x4b')]({},_0x11a89b,_0x21a6fb[_0x4b4c('0x4d')]);return db[_0x4b4c('0x62')][_0x4b4c('0x4f')](_0x11a89b);}})['then'](function(_0x1c5df0){if(_0x1c5df0){return db[_0x4b4c('0x64')]['findAndCountAll']({'where':{'id':_[_0x4b4c('0x3b')](_0x1c5df0,_0x4b4c('0x65')),'role':_0x4b4c('0x66')},'attributes':['id',_0x4b4c('0x38'),_0x4b4c('0x67'),_0x4b4c('0x68'),'createdAt']});}})[_0x4b4c('0x1c')](function(_0xb86b62){if(_0xb86b62){return{'count':_0xb86b62[_0x4b4c('0x2d')],'rows':_[_0x4b4c('0x3b')](_0xb86b62['rows'],function(_0x2aa393){return{'membername':_0x2aa393[_0x4b4c('0x38')],'UserId':_0x2aa393['id'],'queue_name':_0x16eacd[_0x4b4c('0x38')],'ChatQueueId':_0x16eacd['id'],'interface':util[_0x4b4c('0x69')]('%s/%s',_0x4b4c('0x6a'),_0x2aa393[_0x4b4c('0x38')]),'penalty':0x0,'paused':_0x2aa393['chatPause'],'createdAt':_0x2aa393[_0x4b4c('0x6b')],'updatedAt':_0x2aa393['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4ebf21,_0x11a89b))[_0x4b4c('0x26')](handleError(_0x4ebf21,null));};exports[_0x4b4c('0x6c')]=function(_0x4d3fe6,_0x22218d,_0x21b6b1){var _0x2411db={};var _0x247983={};var _0x4871d4;var _0x3a58d7;return db[_0x4b4c('0x3c')][_0x4b4c('0x61')]({'where':{'id':_0x4d3fe6[_0x4b4c('0x5e')]['id']}})['then'](handleEntityNotFound(_0x22218d,null))['then'](function(_0x1e5578){if(_0x1e5578){_0x4871d4=_0x1e5578;_0x247983[_0x4b4c('0x3f')]=_[_0x4b4c('0x3e')](db[_0x4b4c('0x6d')][_0x4b4c('0x51')]);_0x247983[_0x4b4c('0x3d')]=_[_0x4b4c('0x3e')](_0x4d3fe6[_0x4b4c('0x3d')]);_0x247983[_0x4b4c('0x49')]=_[_0x4b4c('0x40')](_0x247983[_0x4b4c('0x3f')],_0x247983[_0x4b4c('0x3d')]);_0x2411db[_0x4b4c('0x42')]=_[_0x4b4c('0x40')](_0x247983[_0x4b4c('0x3f')],qs[_0x4b4c('0x41')](_0x4d3fe6[_0x4b4c('0x3d')][_0x4b4c('0x41')]));_0x2411db[_0x4b4c('0x42')]=_0x2411db[_0x4b4c('0x42')][_0x4b4c('0x43')]?_0x2411db[_0x4b4c('0x42')]:_0x247983[_0x4b4c('0x3f')];_0x2411db[_0x4b4c('0x6e')]=qs[_0x4b4c('0x46')](_0x4d3fe6[_0x4b4c('0x3d')][_0x4b4c('0x46')]);_0x2411db[_0x4b4c('0x47')]=qs[_0x4b4c('0x49')](_[_0x4b4c('0x48')](_0x4d3fe6[_0x4b4c('0x3d')],_0x247983[_0x4b4c('0x49')]));if(_0x4d3fe6['query'][_0x4b4c('0x4a')]){_0x2411db['where']=_[_0x4b4c('0x4b')](_0x2411db[_0x4b4c('0x47')],{'$or':_[_0x4b4c('0x3b')](_0x2411db[_0x4b4c('0x42')],function(_0x34fe2e){var _0x17d283={};_0x17d283[_0x34fe2e]={'$like':'%'+_0x4d3fe6[_0x4b4c('0x3d')]['filter']+'%'};return _0x17d283;})});}_0x2411db=_[_0x4b4c('0x4b')]({},_0x2411db,_0x4d3fe6[_0x4b4c('0x4d')]);return _0x4871d4[_0x4b4c('0x6c')](_0x2411db);}})[_0x4b4c('0x1c')](function(_0x42798d){if(_0x42798d){_0x3a58d7=_0x42798d[_0x4b4c('0x43')];if(!_0x4d3fe6[_0x4b4c('0x3d')][_0x4b4c('0x44')](_0x4b4c('0x45'))){_0x2411db[_0x4b4c('0x2c')]=qs['limit'](_0x4d3fe6[_0x4b4c('0x3d')][_0x4b4c('0x2c')]);_0x2411db['offset']=qs[_0x4b4c('0x2a')](_0x4d3fe6[_0x4b4c('0x3d')][_0x4b4c('0x2a')]);}return _0x4871d4[_0x4b4c('0x6c')](_0x2411db);}})['then'](function(_0x12a04b){if(_0x12a04b){return _0x12a04b?{'count':_0x3a58d7,'rows':_0x12a04b}:null;}})[_0x4b4c('0x1c')](respondWithResult(_0x22218d,null))[_0x4b4c('0x26')](handleError(_0x22218d,null));};exports[_0x4b4c('0x6f')]=function(_0x858199,_0x19ca82,_0xd639df){var _0x22e7a9=_0x858199[_0x4b4c('0x55')][_0x4b4c('0x70')];return db[_0x4b4c('0x6d')][_0x4b4c('0x4f')]({'where':{'id':_0x22e7a9},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x4b4c('0x38'),'online',_0x4b4c('0x71'),'interface'],'raw':!![]}]})[_0x4b4c('0x1c')](function(_0x1d8c00){if(_0x1d8c00){var _0x1c81cd=_['flatMap'](_0x1d8c00,function(_0x464e17){var _0x4ca05f=_0x464e17[_0x4b4c('0x36')]({'plain':!![]});return _0x4ca05f[_0x4b4c('0x72')];});return db[_0x4b4c('0x3c')][_0x4b4c('0x53')]({'where':{'id':_0x858199[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](function(_0x17d4ae){return db['sequelize']['transaction'](function(_0x3415de){return _0x17d4ae[_0x4b4c('0x6f')](_0x22e7a9,{'transaction':_0x3415de})[_0x4b4c('0x1c')](function(){return BPromise['each'](_0x1c81cd,function(_0x455a94){return db[_0x4b4c('0x62')][_0x4b4c('0x73')]({'where':{'UserId':_0x455a94['id'],'ChatQueueId':_0x858199[_0x4b4c('0x5e')]['id']},'transaction':_0x3415de});});})[_0x4b4c('0x1c')](function(){_0x1c81cd['forEach'](function(_0x2dae79){socket[_0x4b4c('0x74')](_0x4b4c('0x75'),{'UserId':_0x2dae79['id'],'ChatQueueId':_0x17d4ae['id']});});});});});}})[_0x4b4c('0x1c')](respondWithStatusCode(_0x19ca82,null))['catch'](handleError(_0x19ca82,null));};exports[_0x4b4c('0x76')]=function(_0x2d7f68,_0x792f2b,_0x414e4e){return db[_0x4b4c('0x6d')]['findAll']({'where':{'id':_0x2d7f68[_0x4b4c('0x3d')][_0x4b4c('0x70')]},'attributes':['id'],'include':[{'model':db[_0x4b4c('0x64')],'as':_0x4b4c('0x72'),'attributes':['id'],'raw':!![]}]})[_0x4b4c('0x1c')](handleEntityNotFound(_0x792f2b,null))[_0x4b4c('0x1c')](function(_0x574ed8){var _0x4f7ced=_[_0x4b4c('0x3b')](_0x574ed8,'id');var _0x46b9d0=[];var _0x54d2f3=[];var _0x25d9ab=squel[_0x4b4c('0x77')]();_0x25d9ab['field']('tq.TeamId')[_0x4b4c('0x78')](_0x4b4c('0x79'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x4b4c('0x47')]('ChatQueueId\x20=\x20?',_0x2d7f68[_0x4b4c('0x5e')]['id']);for(var _0x5e6956=0x0;_0x5e6956<_0x574ed8[_0x4b4c('0x43')];_0x5e6956+=0x1){let _0x5b5fc6=_0x574ed8[_0x5e6956];for(var _0x1c57fd=0x0;_0x1c57fd<_0x5b5fc6[_0x4b4c('0x72')][_0x4b4c('0x43')];_0x1c57fd+=0x1){let _0x981976=_0x5b5fc6[_0x4b4c('0x72')][_0x1c57fd];var _0xbd6e99=_0x25d9ab['clone']();_0xbd6e99[_0x4b4c('0x47')](_0x4b4c('0x7a'),_0x981976['id']);_0x54d2f3[_0x4b4c('0x7b')](db[_0x4b4c('0x7c')][_0x4b4c('0x3d')](_0xbd6e99[_0x4b4c('0x7d')](),{'type':db[_0x4b4c('0x7c')][_0x4b4c('0x7e')][_0x4b4c('0x7f')]})['then'](function(_0x4104e8){if(_0x4104e8['length']===0x1){return _0x981976['id'];}else{var _0x1605e3=_['every'](_['map'](_0x4104e8,_0x4b4c('0x80')),function(_0x5022e8){return _['includes'](_0x4f7ced,_0x5022e8);});if(_0x1605e3){return _0x981976['id'];}}}));}}return BPromise[_0x4b4c('0x81')](_0x54d2f3)[_0x4b4c('0x1c')](function(_0x50e607){_0x46b9d0=_(_0x46b9d0)[_0x4b4c('0x82')](_0x50e607)[_0x4b4c('0x83')]()['value']();return db[_0x4b4c('0x3c')][_0x4b4c('0x53')]({'where':{'id':_0x2d7f68[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](function(_0x42be30){return db[_0x4b4c('0x7c')]['transaction'](function(_0x3a3a12){return _0x42be30[_0x4b4c('0x76')](_0x2d7f68['query'][_0x4b4c('0x70')],{'transaction':_0x3a3a12})[_0x4b4c('0x1c')](function(){if(!_['isEmpty'](_0x46b9d0)){return _0x42be30[_0x4b4c('0x84')](_0x46b9d0,{'transaction':_0x3a3a12});}})['then'](function(){_0x46b9d0[_0x4b4c('0x85')](function(_0x22cc0c){socket['emit'](_0x4b4c('0x86'),{'UserId':_0x22cc0c,'ChatQueueId':_0x42be30['id']});});});});});});})[_0x4b4c('0x1c')](respondWithStatusCode(_0x792f2b,null))[_0x4b4c('0x26')](handleError(_0x792f2b,null));};exports[_0x4b4c('0x87')]=function(_0x3fac80,_0x45dd74,_0x2dc8e7){return db[_0x4b4c('0x3c')][_0x4b4c('0x53')]({'where':{'id':_0x3fac80[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](handleEntityNotFound(_0x45dd74,null))[_0x4b4c('0x1c')](function(_0x2bdfaf){if(_0x2bdfaf){return _0x2bdfaf['addAgents'](_0x3fac80[_0x4b4c('0x55')][_0x4b4c('0x70')],_['omit'](_0x3fac80[_0x4b4c('0x55')],[_0x4b4c('0x70'),'id'])||{})['spread'](function(_0x25d7ca){for(var _0x589e1d=0x0;_0x589e1d<_0x3fac80[_0x4b4c('0x55')][_0x4b4c('0x70')][_0x4b4c('0x43')];_0x589e1d+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x3fac80['body'][_0x4b4c('0x70')][_0x589e1d]),'ChatQueueId':Number(_0x3fac80[_0x4b4c('0x5e')]['id'])});}return _0x25d7ca;});}})['then'](respondWithResult(_0x45dd74,null))['catch'](handleError(_0x45dd74,null));};exports[_0x4b4c('0x84')]=function(_0x49916e,_0x35b2ac,_0x332f22){return db[_0x4b4c('0x3c')][_0x4b4c('0x53')]({'where':{'id':_0x49916e[_0x4b4c('0x5e')]['id']}})[_0x4b4c('0x1c')](handleEntityNotFound(_0x35b2ac,null))[_0x4b4c('0x1c')](function(_0x10ebb3){if(_0x10ebb3){return _0x10ebb3[_0x4b4c('0x84')](_0x49916e[_0x4b4c('0x3d')][_0x4b4c('0x70')])['then'](function(){if(_[_0x4b4c('0x88')](_0x49916e[_0x4b4c('0x3d')][_0x4b4c('0x70')])){for(var _0x696794=0x0;_0x696794<_0x49916e[_0x4b4c('0x3d')][_0x4b4c('0x70')][_0x4b4c('0x43')];_0x696794+=0x1){socket[_0x4b4c('0x74')](_0x4b4c('0x86'),{'UserId':Number(_0x49916e[_0x4b4c('0x3d')]['ids'][_0x696794]),'ChatQueueId':Number(_0x49916e['params']['id'])});}}else{socket['emit'](_0x4b4c('0x86'),{'UserId':Number(_0x49916e[_0x4b4c('0x3d')][_0x4b4c('0x70')]),'ChatQueueId':Number(_0x49916e[_0x4b4c('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x35b2ac,null))[_0x4b4c('0x26')](handleError(_0x35b2ac,null));};exports['getAgents']=function(_0x1745dc,_0x36d032,_0x1ba9c4){var _0x4cf4df={};var _0x168d88={};var _0x14a538;var _0x483e01;return db[_0x4b4c('0x3c')][_0x4b4c('0x61')]({'where':{'id':_0x1745dc['params']['id']}})['then'](handleEntityNotFound(_0x36d032,null))[_0x4b4c('0x1c')](function(_0x5af592){if(_0x5af592){_0x14a538=_0x5af592;_0x168d88['model']=_[_0x4b4c('0x3e')](db[_0x4b4c('0x64')][_0x4b4c('0x51')]);_0x168d88[_0x4b4c('0x3d')]=_[_0x4b4c('0x3e')](_0x1745dc[_0x4b4c('0x3d')]);_0x168d88[_0x4b4c('0x49')]=_[_0x4b4c('0x40')](_0x168d88[_0x4b4c('0x3f')],_0x168d88['query']);_0x4cf4df['attributes']=_[_0x4b4c('0x40')](_0x168d88['model'],qs[_0x4b4c('0x41')](_0x1745dc['query'][_0x4b4c('0x41')]));_0x4cf4df[_0x4b4c('0x42')]=_0x4cf4df['attributes'][_0x4b4c('0x43')]?_0x4cf4df['attributes']:_0x168d88[_0x4b4c('0x3f')];_0x4cf4df[_0x4b4c('0x6e')]=qs[_0x4b4c('0x46')](_0x1745dc['query'][_0x4b4c('0x46')]);_0x4cf4df[_0x4b4c('0x47')]=qs[_0x4b4c('0x49')](_[_0x4b4c('0x48')](_0x1745dc[_0x4b4c('0x3d')],_0x168d88[_0x4b4c('0x49')]));if(_0x1745dc[_0x4b4c('0x3d')][_0x4b4c('0x4a')]){_0x4cf4df['where']=_[_0x4b4c('0x4b')](_0x4cf4df[_0x4b4c('0x47')],{'$or':_[_0x4b4c('0x3b')](_0x4cf4df[_0x4b4c('0x42')],function(_0x2b8308){var _0x343ee2={};_0x343ee2[_0x2b8308]={'$like':'%'+_0x1745dc[_0x4b4c('0x3d')][_0x4b4c('0x4a')]+'%'};return _0x343ee2;})});}_0x4cf4df=_[_0x4b4c('0x4b')]({},_0x4cf4df,_0x1745dc[_0x4b4c('0x4d')]);return _0x14a538['getAgents'](_0x4cf4df);}})['then'](function(_0xee568a){if(_0xee568a){_0x483e01=_0xee568a[_0x4b4c('0x43')];if(!_0x1745dc[_0x4b4c('0x3d')]['hasOwnProperty'](_0x4b4c('0x45'))){_0x4cf4df['limit']=qs[_0x4b4c('0x2c')](_0x1745dc[_0x4b4c('0x3d')][_0x4b4c('0x2c')]);_0x4cf4df['offset']=qs['offset'](_0x1745dc[_0x4b4c('0x3d')][_0x4b4c('0x2a')]);}return _0x14a538[_0x4b4c('0x89')](_0x4cf4df);}})[_0x4b4c('0x1c')](function(_0x132181){if(_0x132181){return _0x132181?{'count':_0x483e01,'rows':_0x132181}:null;}})[_0x4b4c('0x1c')](respondWithResult(_0x36d032,null))[_0x4b4c('0x26')](handleError(_0x36d032,null));};
\ No newline at end of file
index cbff14a..62c7ea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x335f=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','events'];(function(_0x504e95,_0xc57356){var _0x3ab8ee=function(_0x3f1104){while(--_0x3f1104){_0x504e95['push'](_0x504e95['shift']());}};_0x3ab8ee(++_0xc57356);}(_0x335f,0xfb));var _0xf335=function(_0x43855d,_0x2b362b){_0x43855d=_0x43855d-0x0;var _0x29c80a=_0x335f[_0x43855d];return _0x29c80a;};'use strict';var EventEmitter=require(_0xf335('0x0'));var ChatQueue=require(_0xf335('0x1'))['db'][_0xf335('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xf335('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf335('0x4'),'afterDestroy':'remove'};function emitEvent(_0x44f9cb){return function(_0xbc8680,_0x3dd964,_0x3a7c6e){ChatQueueEvents[_0xf335('0x5')](_0x44f9cb+':'+_0xbc8680['id'],_0xbc8680);ChatQueueEvents[_0xf335('0x5')](_0x44f9cb,_0xbc8680);_0x3a7c6e(null);};}for(var e in events){if(events[_0xf335('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x9290=['exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','update','remove','emit','hook'];(function(_0x3c5e54,_0x2b991b){var _0x3ae1f3=function(_0x43f80f){while(--_0x43f80f){_0x3c5e54['push'](_0x3c5e54['shift']());}};_0x3ae1f3(++_0x2b991b);}(_0x9290,0x79));var _0x0929=function(_0x434783,_0xff395d){_0x434783=_0x434783-0x0;var _0x13efcf=_0x9290[_0x434783];return _0x13efcf;};'use strict';var EventEmitter=require(_0x0929('0x0'));var ChatQueue=require(_0x0929('0x1'))['db'][_0x0929('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x0929('0x3')](0x0);var events={'afterCreate':_0x0929('0x4'),'afterUpdate':_0x0929('0x5'),'afterDestroy':_0x0929('0x6')};function emitEvent(_0x2715cd){return function(_0x2cd417,_0x545938,_0x34d723){ChatQueueEvents[_0x0929('0x7')](_0x2715cd+':'+_0x2cd417['id'],_0x2cd417);ChatQueueEvents['emit'](_0x2715cd,_0x2cd417);_0x34d723(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x0929('0x8')](e,emitEvent(event));}}module[_0x0929('0x9')]=ChatQueueEvents;
\ No newline at end of file
index 29ee968..557f12f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f4=['path','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','../../config/logger','api','moment','request-promise'];(function(_0x163f11,_0x1e2509){var _0x3830a9=function(_0x2e0bdb){while(--_0x2e0bdb){_0x163f11['push'](_0x163f11['shift']());}};_0x3830a9(++_0x1e2509);}(_0x22f4,0x17b));var _0x422f=function(_0x48c615,_0x4cc757){_0x48c615=_0x48c615-0x0;var _0x3d9e22=_0x22f4[_0x48c615];return _0x3d9e22;};'use strict';var _=require(_0x422f('0x0'));var util=require('util');var logger=require(_0x422f('0x1'))(_0x422f('0x2'));var moment=require(_0x422f('0x3'));var BPromise=require('bluebird');var rp=require(_0x422f('0x4'));var fs=require('fs');var path=require(_0x422f('0x5'));var rimraf=require(_0x422f('0x6'));var config=require(_0x422f('0x7'));var attributes=require(_0x422f('0x8'));module['exports']=function(_0x48b35b,_0x167c3e){return _0x48b35b[_0x422f('0x9')](_0x422f('0xa'),attributes,{'tableName':_0x422f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcca8=['request-promise','path','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','util','api','moment','bluebird'];(function(_0x2c6333,_0x49929f){var _0x51a1e9=function(_0x33d855){while(--_0x33d855){_0x2c6333['push'](_0x2c6333['shift']());}};_0x51a1e9(++_0x49929f);}(_0xcca8,0x1b4));var _0x8cca=function(_0x39fd7e,_0x17607d){_0x39fd7e=_0x39fd7e-0x0;var _0x1d5746=_0xcca8[_0x39fd7e];return _0x1d5746;};'use strict';var _=require('lodash');var util=require(_0x8cca('0x0'));var logger=require('../../config/logger')(_0x8cca('0x1'));var moment=require(_0x8cca('0x2'));var BPromise=require(_0x8cca('0x3'));var rp=require(_0x8cca('0x4'));var fs=require('fs');var path=require(_0x8cca('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8cca('0x6'));module[_0x8cca('0x7')]=function(_0x5920cd,_0x25d11a){return _0x5920cd[_0x8cca('0x8')](_0x8cca('0x9'),attributes,{'tableName':_0x8cca('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edece27..14313c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d3=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','attributes','limit','include','map','model','find','raw','where','ShowChatQueue','lodash','util'];(function(_0x18f82b,_0x3ea7a0){var _0x5d8128=function(_0x16a009){while(--_0x16a009){_0x18f82b['push'](_0x18f82b['shift']());}};_0x5d8128(++_0x3ea7a0);}(_0x11d3,0x1ac));var _0x311d=function(_0x4b33c0,_0x17fb55){_0x4b33c0=_0x4b33c0-0x0;var _0x43c889=_0x11d3[_0x4b33c0];return _0x43c889;};'use strict';var _=require(_0x311d('0x0'));var util=require(_0x311d('0x1'));var moment=require(_0x311d('0x2'));var BPromise=require(_0x311d('0x3'));var rs=require(_0x311d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x311d('0x5'));var logger=require(_0x311d('0x6'))(_0x311d('0x7'));var config=require(_0x311d('0x8'));var jayson=require(_0x311d('0x9'));var client=jayson[_0x311d('0xa')][_0x311d('0xb')]({'port':0x232a});config[_0x311d('0xc')]=_[_0x311d('0xd')](config['redis'],{'host':_0x311d('0xe'),'port':0x18eb});var socket=require(_0x311d('0xf'))(new Redis(config[_0x311d('0xc')]));require(_0x311d('0x10'))['register'](socket);function respondWithRpcPromise(_0x28f9bc,_0x2269da,_0x24bbed){return new BPromise(function(_0x4232dd,_0x5bb5ce){return client[_0x311d('0x11')](_0x28f9bc,_0x24bbed)[_0x311d('0x12')](function(_0x1cb3c9){logger[_0x311d('0x13')](_0x311d('0x14'),_0x2269da,_0x311d('0x15'));logger[_0x311d('0x16')](_0x311d('0x17'),_0x2269da,_0x311d('0x15'),JSON[_0x311d('0x18')](_0x1cb3c9));if(_0x1cb3c9[_0x311d('0x19')]){if(_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1a')]===0x1f4){logger[_0x311d('0x19')]('ChatQueue,\x20%s,\x20%s',_0x2269da,_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1b')]);return _0x5bb5ce(_0x1cb3c9['error'][_0x311d('0x1b')]);}logger[_0x311d('0x19')]('ChatQueue,\x20%s,\x20%s',_0x2269da,_0x1cb3c9[_0x311d('0x19')]['message']);return _0x4232dd(_0x1cb3c9[_0x311d('0x19')][_0x311d('0x1b')]);}else{logger['info'](_0x311d('0x14'),_0x2269da,_0x311d('0x15'));_0x4232dd(_0x1cb3c9[_0x311d('0x1c')][_0x311d('0x1b')]);}})[_0x311d('0x1d')](function(_0x75882e){logger[_0x311d('0x19')](_0x311d('0x14'),_0x2269da,_0x75882e);_0x5bb5ce(_0x75882e);});});}exports[_0x311d('0x1e')]=function(_0x2934c4){var _0x1b4175=this;return new Promise(function(_0x397700,_0x5021cb){return db[_0x311d('0x1f')][_0x311d('0x20')]({'raw':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x2934c4['options']?_0x2934c4['options']['where']||null:null,'attributes':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x22')]||null:null,'limit':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x23')]||null:null,'include':_0x2934c4[_0x311d('0x21')]?_0x2934c4[_0x311d('0x21')][_0x311d('0x24')]?_[_0x311d('0x25')](_0x2934c4['options'][_0x311d('0x24')],function(_0x4e52d2){return{'model':db[_0x4e52d2[_0x311d('0x26')]],'as':_0x4e52d2['as'],'attributes':_0x4e52d2[_0x311d('0x22')],'include':_0x4e52d2['include']?_[_0x311d('0x25')](_0x4e52d2['include'],function(_0x75c288){return{'model':db[_0x75c288[_0x311d('0x26')]],'as':_0x75c288['as'],'attributes':_0x75c288[_0x311d('0x22')],'include':_0x75c288[_0x311d('0x24')]?_[_0x311d('0x25')](_0x75c288[_0x311d('0x24')],function(_0x4d632f){return{'model':db[_0x4d632f[_0x311d('0x26')]],'as':_0x4d632f['as'],'attributes':_0x4d632f[_0x311d('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bfc25){logger['info'](_0x311d('0x1e'),_0x2934c4);logger[_0x311d('0x16')]('GetChatQueue',_0x2934c4,JSON[_0x311d('0x18')](_0x2bfc25));_0x397700(_0x2bfc25);})['catch'](function(_0x56a14a){logger[_0x311d('0x19')]('GetChatQueue',_0x56a14a[_0x311d('0x1b')],_0x2934c4);_0x5021cb(_0x1b4175[_0x311d('0x19')](0x1f4,_0x56a14a[_0x311d('0x1b')]));});});};exports['ShowChatQueue']=function(_0xeeb681){var _0x52e291=this;return new Promise(function(_0x113eaf,_0x1c2ec5){return db[_0x311d('0x1f')][_0x311d('0x27')]({'raw':_0xeeb681['options']?_0xeeb681[_0x311d('0x21')][_0x311d('0x28')]===undefined?!![]:![]:!![],'where':_0xeeb681[_0x311d('0x21')]?_0xeeb681['options'][_0x311d('0x29')]||null:null,'attributes':_0xeeb681[_0x311d('0x21')]?_0xeeb681[_0x311d('0x21')][_0x311d('0x22')]||null:null,'include':_0xeeb681[_0x311d('0x21')]?_0xeeb681[_0x311d('0x21')][_0x311d('0x24')]?_[_0x311d('0x25')](_0xeeb681[_0x311d('0x21')][_0x311d('0x24')],function(_0x3ff783){return{'model':db[_0x3ff783[_0x311d('0x26')]],'as':_0x3ff783['as'],'attributes':_0x3ff783[_0x311d('0x22')],'include':_0x3ff783['include']?_[_0x311d('0x25')](_0x3ff783[_0x311d('0x24')],function(_0x5b946d){return{'model':db[_0x5b946d[_0x311d('0x26')]],'as':_0x5b946d['as'],'attributes':_0x5b946d[_0x311d('0x22')],'include':_0x5b946d[_0x311d('0x24')]?_[_0x311d('0x25')](_0x5b946d[_0x311d('0x24')],function(_0x28d6da){return{'model':db[_0x28d6da['model']],'as':_0x28d6da['as'],'attributes':_0x28d6da['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b278b){logger[_0x311d('0x13')](_0x311d('0x2a'),_0xeeb681);logger[_0x311d('0x16')]('ShowChatQueue',_0xeeb681,JSON[_0x311d('0x18')](_0x2b278b));_0x113eaf(_0x2b278b);})[_0x311d('0x1d')](function(_0x4c7a5d){logger[_0x311d('0x19')](_0x311d('0x2a'),_0x4c7a5d[_0x311d('0x1b')],_0xeeb681);_0x1c2ec5(_0x52e291['error'](0x1f4,_0x4c7a5d['message']));});});};
\ No newline at end of file
+var _0xd732=['find','raw','lodash','moment','ioredis','../../mysqldb','rpc','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','ChatQueue','findAll','options','where','attributes','limit','include','map','model','GetChatQueue','ShowChatQueue'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd732,0x18e));var _0x2d73=function(_0x4d808c,_0x583544){_0x4d808c=_0x4d808c-0x0;var _0x1ea225=_0xd732[_0x4d808c];return _0x1ea225;};'use strict';var _=require(_0x2d73('0x0'));var util=require('util');var moment=require(_0x2d73('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d73('0x2'));var db=require(_0x2d73('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2d73('0x4'));var config=require('../../config/environment');var jayson=require(_0x2d73('0x5'));var client=jayson[_0x2d73('0x6')]['http']({'port':0x232a});config['redis']=_[_0x2d73('0x7')](config['redis'],{'host':_0x2d73('0x8'),'port':0x18eb});var socket=require(_0x2d73('0x9'))(new Redis(config[_0x2d73('0xa')]));require(_0x2d73('0xb'))['register'](socket);function respondWithRpcPromise(_0x37f251,_0x471bdc,_0x6aa84b){return new BPromise(function(_0x2655b1,_0x5b6b1f){return client[_0x2d73('0xc')](_0x37f251,_0x6aa84b)[_0x2d73('0xd')](function(_0x260305){logger[_0x2d73('0xe')](_0x2d73('0xf'),_0x471bdc,_0x2d73('0x10'));logger[_0x2d73('0x11')](_0x2d73('0x12'),_0x471bdc,_0x2d73('0x10'),JSON[_0x2d73('0x13')](_0x260305));if(_0x260305[_0x2d73('0x14')]){if(_0x260305[_0x2d73('0x14')]['code']===0x1f4){logger[_0x2d73('0x14')]('ChatQueue,\x20%s,\x20%s',_0x471bdc,_0x260305[_0x2d73('0x14')]['message']);return _0x5b6b1f(_0x260305[_0x2d73('0x14')][_0x2d73('0x15')]);}logger[_0x2d73('0x14')](_0x2d73('0xf'),_0x471bdc,_0x260305[_0x2d73('0x14')]['message']);return _0x2655b1(_0x260305['error']['message']);}else{logger[_0x2d73('0xe')](_0x2d73('0xf'),_0x471bdc,_0x2d73('0x10'));_0x2655b1(_0x260305['result'][_0x2d73('0x15')]);}})[_0x2d73('0x16')](function(_0x37ba35){logger[_0x2d73('0x14')]('ChatQueue,\x20%s,\x20%s',_0x471bdc,_0x37ba35);_0x5b6b1f(_0x37ba35);});});}exports['GetChatQueue']=function(_0xb7dc00){var _0x24066c=this;return new Promise(function(_0x1ae947,_0x350d7d){return db[_0x2d73('0x17')][_0x2d73('0x18')]({'raw':_0xb7dc00[_0x2d73('0x19')]?_0xb7dc00[_0x2d73('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xb7dc00[_0x2d73('0x19')]?_0xb7dc00[_0x2d73('0x19')][_0x2d73('0x1a')]||null:null,'attributes':_0xb7dc00[_0x2d73('0x19')]?_0xb7dc00['options'][_0x2d73('0x1b')]||null:null,'limit':_0xb7dc00[_0x2d73('0x19')]?_0xb7dc00[_0x2d73('0x19')][_0x2d73('0x1c')]||null:null,'include':_0xb7dc00[_0x2d73('0x19')]?_0xb7dc00[_0x2d73('0x19')][_0x2d73('0x1d')]?_[_0x2d73('0x1e')](_0xb7dc00[_0x2d73('0x19')][_0x2d73('0x1d')],function(_0x361e5e){return{'model':db[_0x361e5e[_0x2d73('0x1f')]],'as':_0x361e5e['as'],'attributes':_0x361e5e[_0x2d73('0x1b')],'include':_0x361e5e[_0x2d73('0x1d')]?_[_0x2d73('0x1e')](_0x361e5e[_0x2d73('0x1d')],function(_0x38396b){return{'model':db[_0x38396b['model']],'as':_0x38396b['as'],'attributes':_0x38396b[_0x2d73('0x1b')],'include':_0x38396b[_0x2d73('0x1d')]?_[_0x2d73('0x1e')](_0x38396b['include'],function(_0x59075b){return{'model':db[_0x59075b[_0x2d73('0x1f')]],'as':_0x59075b['as'],'attributes':_0x59075b[_0x2d73('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5aa9ea){logger[_0x2d73('0xe')](_0x2d73('0x20'),_0xb7dc00);logger[_0x2d73('0x11')]('GetChatQueue',_0xb7dc00,JSON['stringify'](_0x5aa9ea));_0x1ae947(_0x5aa9ea);})[_0x2d73('0x16')](function(_0x407bc0){logger[_0x2d73('0x14')]('GetChatQueue',_0x407bc0['message'],_0xb7dc00);_0x350d7d(_0x24066c[_0x2d73('0x14')](0x1f4,_0x407bc0['message']));});});};exports[_0x2d73('0x21')]=function(_0x34cb34){var _0x376de7=this;return new Promise(function(_0x207aad,_0x2587ec){return db[_0x2d73('0x17')][_0x2d73('0x22')]({'raw':_0x34cb34[_0x2d73('0x19')]?_0x34cb34[_0x2d73('0x19')][_0x2d73('0x23')]===undefined?!![]:![]:!![],'where':_0x34cb34['options']?_0x34cb34[_0x2d73('0x19')]['where']||null:null,'attributes':_0x34cb34[_0x2d73('0x19')]?_0x34cb34['options'][_0x2d73('0x1b')]||null:null,'include':_0x34cb34[_0x2d73('0x19')]?_0x34cb34[_0x2d73('0x19')][_0x2d73('0x1d')]?_[_0x2d73('0x1e')](_0x34cb34[_0x2d73('0x19')][_0x2d73('0x1d')],function(_0x35ce21){return{'model':db[_0x35ce21['model']],'as':_0x35ce21['as'],'attributes':_0x35ce21[_0x2d73('0x1b')],'include':_0x35ce21['include']?_[_0x2d73('0x1e')](_0x35ce21[_0x2d73('0x1d')],function(_0x1455f6){return{'model':db[_0x1455f6[_0x2d73('0x1f')]],'as':_0x1455f6['as'],'attributes':_0x1455f6[_0x2d73('0x1b')],'include':_0x1455f6[_0x2d73('0x1d')]?_['map'](_0x1455f6['include'],function(_0x2b2137){return{'model':db[_0x2b2137[_0x2d73('0x1f')]],'as':_0x2b2137['as'],'attributes':_0x2b2137['attributes']};}):[]};}):[]};}):[]:[]})[_0x2d73('0xd')](function(_0x334149){logger[_0x2d73('0xe')]('ShowChatQueue',_0x34cb34);logger[_0x2d73('0x11')](_0x2d73('0x21'),_0x34cb34,JSON['stringify'](_0x334149));_0x207aad(_0x334149);})[_0x2d73('0x16')](function(_0x1211e7){logger['error'](_0x2d73('0x21'),_0x1211e7['message'],_0x34cb34);_0x2587ec(_0x376de7[_0x2d73('0x14')](0x1f4,_0x1211e7[_0x2d73('0x15')]));});});};
\ No newline at end of file
index f5513d3..7868a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9b=['save','emit','removeListener','register','length','chatQueue:'];(function(_0x59c318,_0x44589d){var _0x795014=function(_0x491d2d){while(--_0x491d2d){_0x59c318['push'](_0x59c318['shift']());}};_0x795014(++_0x44589d);}(_0x9b9b,0x114));var _0xb9b9=function(_0x57f8c0,_0x136cf6){_0x57f8c0=_0x57f8c0-0x0;var _0x117f08=_0x9b9b[_0x57f8c0];return _0x117f08;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xb9b9('0x0'),'remove','update'];function createListener(_0x2ae8a0,_0x153734){return function(_0x1adf50){_0x153734[_0xb9b9('0x1')](_0x2ae8a0,_0x1adf50);};}function removeListener(_0x1d6ab6,_0x43c8ff){return function(){ChatQueueEvents[_0xb9b9('0x2')](_0x1d6ab6,_0x43c8ff);};}exports[_0xb9b9('0x3')]=function(_0x79dd){for(var _0x3d1a95=0x0,_0x85eec=events[_0xb9b9('0x4')];_0x3d1a95<_0x85eec;_0x3d1a95++){var _0x5be5bc=events[_0x3d1a95];var _0x297cb6=createListener(_0xb9b9('0x5')+_0x5be5bc,_0x79dd);ChatQueueEvents['on'](_0x5be5bc,_0x297cb6);}};
\ No newline at end of file
+var _0xb469=['./chatQueue.events','save','remove','update','register'];(function(_0x517754,_0x1b21b0){var _0x1f65b3=function(_0x2579dc){while(--_0x2579dc){_0x517754['push'](_0x517754['shift']());}};_0x1f65b3(++_0x1b21b0);}(_0xb469,0x13b));var _0x9b46=function(_0x505922,_0x2a31c6){_0x505922=_0x505922-0x0;var _0x206b88=_0xb469[_0x505922];return _0x206b88;};'use strict';var ChatQueueEvents=require(_0x9b46('0x0'));var events=[_0x9b46('0x1'),_0x9b46('0x2'),_0x9b46('0x3')];function createListener(_0x1a41e8,_0x895347){return function(_0x9212ae){_0x895347['emit'](_0x1a41e8,_0x9212ae);};}function removeListener(_0x31f853,_0x45322f){return function(){ChatQueueEvents['removeListener'](_0x31f853,_0x45322f);};}exports[_0x9b46('0x4')]=function(_0x405d1c){for(var _0x50b49e=0x0,_0x1b2dd3=events['length'];_0x50b49e<_0x1b2dd3;_0x50b49e++){var _0x4c1ed9=events[_0x50b49e];var _0x34c0de=createListener('chatQueue:'+_0x4c1ed9,_0x405d1c);ChatQueueEvents['on'](_0x4c1ed9,_0x34c0de);}};
\ No newline at end of file
index caae734..b5ac5d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x402c78,_0x344469){var _0x3c2d70=function(_0x46961f){while(--_0x46961f){_0x402c78['push'](_0x402c78['shift']());}};_0x3c2d70(++_0x344469);}(_0x008c,0x188));var _0xc008=function(_0xf2ee1d,_0x21796d){_0xf2ee1d=_0xf2ee1d-0x0;var _0x250b14=_0x008c[_0xf2ee1d];return _0x250b14;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x5fc3[_0x2dea24];return _0x309d58;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
index 646a2b3..99afe6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9973=['moment','exports','STRING','DATE'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9973,0x130));var _0x3997=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9973[_0x57b54c];return _0x59cc19;};'use strict';var moment=require(_0x3997('0x0'));var Sequelize=require('sequelize');module[_0x3997('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x3997('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x3997('0x3')]},'acceptAt':{'type':Sequelize[_0x3997('0x3')]},'exitAt':{'type':Sequelize[_0x3997('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd21c=['exports','STRING','DATE','sequelize'];(function(_0x4e8dd0,_0x2b3ed5){var _0x322f2e=function(_0x24863d){while(--_0x24863d){_0x4e8dd0['push'](_0x4e8dd0['shift']());}};_0x322f2e(++_0x2b3ed5);}(_0xd21c,0xf3));var _0xcd21=function(_0x5d5177,_0x24d3c8){_0x5d5177=_0x5d5177-0x0;var _0x195c11=_0xd21c[_0x5d5177];return _0x195c11;};'use strict';var moment=require('moment');var Sequelize=require(_0xcd21('0x0'));module[_0xcd21('0x1')]={'uniqueid':{'type':Sequelize[_0xcd21('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xcd21('0x2')]},'joinAt':{'type':Sequelize[_0xcd21('0x3')]},'leaveAt':{'type':Sequelize[_0xcd21('0x3')]},'acceptAt':{'type':Sequelize[_0xcd21('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xcd21('0x2')]}};
\ No newline at end of file
index 92bdf4f..59e0941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49df=['key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','findAll','then','rows','catch','params','include','merge','find','create','body','update','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','destroy','sendStatus','error','stack','name','send','map','ChatQueueReport','fieldName','type'];(function(_0x413b62,_0x740bd3){var _0x19bad0=function(_0x419a1b){while(--_0x419a1b){_0x413b62['push'](_0x413b62['shift']());}};_0x19bad0(++_0x740bd3);}(_0x49df,0xad));var _0xf49d=function(_0x1d606d,_0x376e51){_0x1d606d=_0x1d606d-0x0;var _0x3c38bd=_0x49df[_0x1d606d];return _0x3c38bd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf49d('0x0'));var jsonpatch=require(_0xf49d('0x1'));var rp=require(_0xf49d('0x2'));var moment=require(_0xf49d('0x3'));var BPromise=require(_0xf49d('0x4'));var Mustache=require(_0xf49d('0x5'));var util=require(_0xf49d('0x6'));var path=require('path');var sox=require(_0xf49d('0x7'));var csv=require(_0xf49d('0x8'));var ejs=require(_0xf49d('0x9'));var fs=require('fs');var fs_extra=require(_0xf49d('0xa'));var _=require(_0xf49d('0xb'));var squel=require(_0xf49d('0xc'));var crypto=require('crypto');var jsforce=require(_0xf49d('0xd'));var deskjs=require(_0xf49d('0xe'));var toCsv=require(_0xf49d('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf49d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf49d('0x10'));var hardwareService=require(_0xf49d('0x11'));var logger=require(_0xf49d('0x12'))('api');var utils=require(_0xf49d('0x13'));var config=require(_0xf49d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf49d('0x15'))['db'];function respondWithStatusCode(_0x57feff,_0x54354a){_0x54354a=_0x54354a||0xcc;return function(_0x32786c){if(_0x32786c){return _0x57feff['sendStatus'](_0x54354a);}return _0x57feff[_0xf49d('0x16')](_0x54354a)[_0xf49d('0x17')]();};}function respondWithResult(_0xe6c42b,_0x5ab175){_0x5ab175=_0x5ab175||0xc8;return function(_0x16b0a4){if(_0x16b0a4){return _0xe6c42b[_0xf49d('0x16')](_0x5ab175)[_0xf49d('0x18')](_0x16b0a4);}};}function respondWithFilteredResult(_0x4c37ae,_0x30d271){return function(_0x11603e){if(_0x11603e){var _0x1d65cd=typeof _0x30d271[_0xf49d('0x19')]==='undefined'&&typeof _0x30d271[_0xf49d('0x1a')]===_0xf49d('0x1b');var _0x349c20=_0x11603e[_0xf49d('0x1c')];var _0x2a7a78=_0x1d65cd?0x0:_0x30d271[_0xf49d('0x19')];var _0xbc6fdd=_0x1d65cd?_0x11603e[_0xf49d('0x1c')]:_0x30d271['offset']+_0x30d271[_0xf49d('0x1a')];var _0x4034fc;if(_0xbc6fdd>=_0x349c20){_0xbc6fdd=_0x349c20;_0x4034fc=0xc8;}else{_0x4034fc=0xce;}_0x4c37ae[_0xf49d('0x16')](_0x4034fc);return _0x4c37ae[_0xf49d('0x1d')](_0xf49d('0x1e'),_0x2a7a78+'-'+_0xbc6fdd+'/'+_0x349c20)[_0xf49d('0x18')](_0x11603e);}return null;};}function patchUpdates(_0x199f35){return function(_0x3752e8){try{jsonpatch[_0xf49d('0x1f')](_0x3752e8,_0x199f35,!![]);}catch(_0x1f70ca){return BPromise[_0xf49d('0x20')](_0x1f70ca);}return _0x3752e8['save']();};}function saveUpdates(_0x57aa50,_0x2cf806){return function(_0x15bdcb){if(_0x15bdcb){return _0x15bdcb['update'](_0x57aa50)['then'](function(_0xb5d580){return _0xb5d580;});}return null;};}function removeEntity(_0x2ba02e,_0x5cce78){return function(_0x58c1e7){if(_0x58c1e7){return _0x58c1e7[_0xf49d('0x21')]()['then'](function(){_0x2ba02e[_0xf49d('0x16')](0xcc)[_0xf49d('0x17')]();});}};}function handleEntityNotFound(_0xb8dcf8,_0x1e08cf){return function(_0x4d909d){if(!_0x4d909d){_0xb8dcf8[_0xf49d('0x22')](0x194);}return _0x4d909d;};}function handleError(_0x14adc0,_0x394fc0){_0x394fc0=_0x394fc0||0x1f4;return function(_0x33168c){logger[_0xf49d('0x23')](_0x33168c[_0xf49d('0x24')]);if(_0x33168c[_0xf49d('0x25')]){delete _0x33168c[_0xf49d('0x25')];}_0x14adc0[_0xf49d('0x16')](_0x394fc0)[_0xf49d('0x26')](_0x33168c);};}exports['index']=function(_0x516d70,_0x82b5eb){var _0x1de573={},_0x1832cd={},_0x1c5cf3={'count':0x0,'rows':[]};var _0x43e868=_[_0xf49d('0x27')](db[_0xf49d('0x28')]['rawAttributes'],function(_0x351c1d){return{'name':_0x351c1d[_0xf49d('0x29')],'type':_0x351c1d[_0xf49d('0x2a')][_0xf49d('0x2b')]};});_0x1832cd[_0xf49d('0x2c')]=_[_0xf49d('0x27')](_0x43e868,_0xf49d('0x25'));_0x1832cd[_0xf49d('0x2d')]=_[_0xf49d('0x2e')](_0x516d70[_0xf49d('0x2d')]);_0x1832cd['filters']=_['intersection'](_0x1832cd[_0xf49d('0x2c')],_0x1832cd[_0xf49d('0x2d')]);_0x1de573['attributes']=_[_0xf49d('0x2f')](_0x1832cd[_0xf49d('0x2c')],qs[_0xf49d('0x30')](_0x516d70['query'][_0xf49d('0x30')]));_0x1de573[_0xf49d('0x31')]=_0x1de573[_0xf49d('0x31')][_0xf49d('0x32')]?_0x1de573[_0xf49d('0x31')]:_0x1832cd[_0xf49d('0x2c')];if(!_0x516d70[_0xf49d('0x2d')][_0xf49d('0x33')]('nolimit')){_0x1de573[_0xf49d('0x1a')]=qs[_0xf49d('0x1a')](_0x516d70['query'][_0xf49d('0x1a')]);_0x1de573[_0xf49d('0x19')]=qs['offset'](_0x516d70[_0xf49d('0x2d')][_0xf49d('0x19')]);}_0x1de573['order']=qs[_0xf49d('0x34')](_0x516d70[_0xf49d('0x2d')][_0xf49d('0x34')]);_0x1de573[_0xf49d('0x35')]=qs[_0xf49d('0x36')](_[_0xf49d('0x37')](_0x516d70['query'],_0x1832cd[_0xf49d('0x36')]),_0x43e868);if(_0x516d70[_0xf49d('0x2d')][_0xf49d('0x38')]){_0x1de573[_0xf49d('0x35')]=_['merge'](_0x1de573[_0xf49d('0x35')],{'$or':_[_0xf49d('0x27')](_0x43e868,function(_0x5c30b1){if(_0x5c30b1[_0xf49d('0x2a')]!==_0xf49d('0x39')){var _0x17c3b3={};_0x17c3b3[_0x5c30b1['name']]={'$like':'%'+_0x516d70[_0xf49d('0x2d')][_0xf49d('0x38')]+'%'};return _0x17c3b3;}})});}_0x1de573=_['merge']({},_0x1de573,_0x516d70[_0xf49d('0x3a')]);var _0x4e5f14={'where':_0x1de573['where']};return db[_0xf49d('0x28')]['count'](_0x4e5f14)['then'](function(_0x293bd4){_0x1c5cf3[_0xf49d('0x1c')]=_0x293bd4;if(_0x516d70[_0xf49d('0x2d')][_0xf49d('0x3b')]){_0x1de573['include']=[{'all':!![]}];}return db['ChatQueueReport'][_0xf49d('0x3c')](_0x1de573);})[_0xf49d('0x3d')](function(_0x29505e){_0x1c5cf3[_0xf49d('0x3e')]=_0x29505e;return _0x1c5cf3;})[_0xf49d('0x3d')](respondWithFilteredResult(_0x82b5eb,_0x1de573))[_0xf49d('0x3f')](handleError(_0x82b5eb,null));};exports['show']=function(_0x21a0a7,_0xdc92b9){var _0x1926a2={'raw':!![],'where':{'id':_0x21a0a7[_0xf49d('0x40')]['id']}},_0x3a3ecc={};_0x3a3ecc[_0xf49d('0x2c')]=_[_0xf49d('0x2e')](db[_0xf49d('0x28')]['rawAttributes']);_0x3a3ecc[_0xf49d('0x2d')]=_[_0xf49d('0x2e')](_0x21a0a7['query']);_0x3a3ecc[_0xf49d('0x36')]=_['intersection'](_0x3a3ecc[_0xf49d('0x2c')],_0x3a3ecc[_0xf49d('0x2d')]);_0x1926a2['attributes']=_[_0xf49d('0x2f')](_0x3a3ecc[_0xf49d('0x2c')],qs[_0xf49d('0x30')](_0x21a0a7[_0xf49d('0x2d')]['fields']));_0x1926a2['attributes']=_0x1926a2[_0xf49d('0x31')][_0xf49d('0x32')]?_0x1926a2[_0xf49d('0x31')]:_0x3a3ecc[_0xf49d('0x2c')];if(_0x21a0a7['query'][_0xf49d('0x3b')]){_0x1926a2[_0xf49d('0x41')]=[{'all':!![]}];}_0x1926a2=_[_0xf49d('0x42')]({},_0x1926a2,_0x21a0a7['options']);return db['ChatQueueReport'][_0xf49d('0x43')](_0x1926a2)[_0xf49d('0x3d')](handleEntityNotFound(_0xdc92b9,null))[_0xf49d('0x3d')](respondWithResult(_0xdc92b9,null))[_0xf49d('0x3f')](handleError(_0xdc92b9,null));};exports['create']=function(_0x7552a3,_0x11f3bc){return db[_0xf49d('0x28')][_0xf49d('0x44')](_0x7552a3[_0xf49d('0x45')],{})[_0xf49d('0x3d')](respondWithResult(_0x11f3bc,0xc9))[_0xf49d('0x3f')](handleError(_0x11f3bc,null));};exports[_0xf49d('0x46')]=function(_0x20276c,_0x2fad7e){if(_0x20276c[_0xf49d('0x45')]['id']){delete _0x20276c[_0xf49d('0x45')]['id'];}return db[_0xf49d('0x28')][_0xf49d('0x43')]({'where':{'id':_0x20276c['params']['id']}})[_0xf49d('0x3d')](handleEntityNotFound(_0x2fad7e,null))[_0xf49d('0x3d')](saveUpdates(_0x20276c[_0xf49d('0x45')],null))[_0xf49d('0x3d')](respondWithResult(_0x2fad7e,null))[_0xf49d('0x3f')](handleError(_0x2fad7e,null));};exports[_0xf49d('0x21')]=function(_0x4f3527,_0x1dc986){return db[_0xf49d('0x28')]['find']({'where':{'id':_0x4f3527[_0xf49d('0x40')]['id']}})[_0xf49d('0x3d')](handleEntityNotFound(_0x1dc986,null))['then'](removeEntity(_0x1dc986,null))[_0xf49d('0x3f')](handleError(_0x1dc986,null));};exports['describe']=function(_0x3cc892,_0x3948be){return db['ChatQueueReport'][_0xf49d('0x47')]()[_0xf49d('0x3d')](respondWithResult(_0x3948be,null))['catch'](handleError(_0x3948be,null));};
\ No newline at end of file
+var _0x0af5=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','ChatQueueReport','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','rows','catch','show','length','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','querystring','../../components/auth/service'];(function(_0x3ea0f2,_0x314821){var _0x2a1f59=function(_0x534079){while(--_0x534079){_0x3ea0f2['push'](_0x3ea0f2['shift']());}};_0x2a1f59(++_0x314821);}(_0x0af5,0x158));var _0x50af=function(_0x144a06,_0x4bf50e){_0x144a06=_0x144a06-0x0;var _0x37807d=_0x0af5[_0x144a06];return _0x37807d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x50af('0x0'));var zipdir=require(_0x50af('0x1'));var jsonpatch=require(_0x50af('0x2'));var rp=require(_0x50af('0x3'));var moment=require(_0x50af('0x4'));var BPromise=require(_0x50af('0x5'));var Mustache=require(_0x50af('0x6'));var util=require(_0x50af('0x7'));var path=require(_0x50af('0x8'));var sox=require(_0x50af('0x9'));var csv=require(_0x50af('0xa'));var ejs=require(_0x50af('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x50af('0xc'));var crypto=require(_0x50af('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x50af('0xa'));var querystring=require(_0x50af('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x50af('0xf'));var qs=require(_0x50af('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x50af('0x11'));var logger=require(_0x50af('0x12'))(_0x50af('0x13'));var utils=require(_0x50af('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x50af('0x15'));var db=require(_0x50af('0x16'))['db'];function respondWithStatusCode(_0x2792bb,_0x3373bf){_0x3373bf=_0x3373bf||0xcc;return function(_0x252a02){if(_0x252a02){return _0x2792bb[_0x50af('0x17')](_0x3373bf);}return _0x2792bb['status'](_0x3373bf)['end']();};}function respondWithResult(_0x569851,_0x620389){_0x620389=_0x620389||0xc8;return function(_0x561cd2){if(_0x561cd2){return _0x569851[_0x50af('0x18')](_0x620389)[_0x50af('0x19')](_0x561cd2);}};}function respondWithFilteredResult(_0x4fba1c,_0x5c3db3){return function(_0x1378fd){if(_0x1378fd){var _0x13cbf4=typeof _0x5c3db3['offset']==='undefined'&&typeof _0x5c3db3[_0x50af('0x1a')]===_0x50af('0x1b');var _0x33869f=_0x1378fd[_0x50af('0x1c')];var _0x1906e6=_0x13cbf4?0x0:_0x5c3db3[_0x50af('0x1d')];var _0x23bad2=_0x13cbf4?_0x1378fd[_0x50af('0x1c')]:_0x5c3db3[_0x50af('0x1d')]+_0x5c3db3[_0x50af('0x1a')];var _0x5c6f8e;if(_0x23bad2>=_0x33869f){_0x23bad2=_0x33869f;_0x5c6f8e=0xc8;}else{_0x5c6f8e=0xce;}_0x4fba1c[_0x50af('0x18')](_0x5c6f8e);return _0x4fba1c[_0x50af('0x1e')](_0x50af('0x1f'),_0x1906e6+'-'+_0x23bad2+'/'+_0x33869f)[_0x50af('0x19')](_0x1378fd);}return null;};}function patchUpdates(_0x4b0164){return function(_0x2a96fb){try{jsonpatch[_0x50af('0x20')](_0x2a96fb,_0x4b0164,!![]);}catch(_0x4b5e21){return BPromise[_0x50af('0x21')](_0x4b5e21);}return _0x2a96fb[_0x50af('0x22')]();};}function saveUpdates(_0x3b6d04,_0x2d093c){return function(_0xb6de0d){if(_0xb6de0d){return _0xb6de0d[_0x50af('0x23')](_0x3b6d04)[_0x50af('0x24')](function(_0x53e362){return _0x53e362;});}return null;};}function removeEntity(_0x76a6b3,_0x156154){return function(_0x3c6388){if(_0x3c6388){return _0x3c6388[_0x50af('0x25')]()[_0x50af('0x24')](function(){_0x76a6b3[_0x50af('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb3c15a,_0x1550ee){return function(_0x5e096d){if(!_0x5e096d){_0xb3c15a[_0x50af('0x17')](0x194);}return _0x5e096d;};}function handleError(_0x3fa2da,_0x311b08){_0x311b08=_0x311b08||0x1f4;return function(_0x5dc58a){logger['error'](_0x5dc58a[_0x50af('0x26')]);if(_0x5dc58a[_0x50af('0x27')]){delete _0x5dc58a[_0x50af('0x27')];}_0x3fa2da[_0x50af('0x18')](_0x311b08)[_0x50af('0x28')](_0x5dc58a);};}exports[_0x50af('0x29')]=function(_0x520bd6,_0x212fc2){var _0x5122e5={},_0x1a1104={},_0x382c5d={'count':0x0,'rows':[]};var _0x4118af=_['map'](db[_0x50af('0x2a')]['rawAttributes'],function(_0xadca5b){return{'name':_0xadca5b['fieldName'],'type':_0xadca5b['type']['key']};});_0x1a1104[_0x50af('0x2b')]=_[_0x50af('0x2c')](_0x4118af,_0x50af('0x27'));_0x1a1104[_0x50af('0x2d')]=_[_0x50af('0x2e')](_0x520bd6[_0x50af('0x2d')]);_0x1a1104[_0x50af('0x2f')]=_[_0x50af('0x30')](_0x1a1104[_0x50af('0x2b')],_0x1a1104[_0x50af('0x2d')]);_0x5122e5['attributes']=_[_0x50af('0x30')](_0x1a1104[_0x50af('0x2b')],qs[_0x50af('0x31')](_0x520bd6[_0x50af('0x2d')][_0x50af('0x31')]));_0x5122e5['attributes']=_0x5122e5[_0x50af('0x32')]['length']?_0x5122e5['attributes']:_0x1a1104['model'];if(!_0x520bd6[_0x50af('0x2d')][_0x50af('0x33')](_0x50af('0x34'))){_0x5122e5[_0x50af('0x1a')]=qs[_0x50af('0x1a')](_0x520bd6['query']['limit']);_0x5122e5[_0x50af('0x1d')]=qs[_0x50af('0x1d')](_0x520bd6[_0x50af('0x2d')][_0x50af('0x1d')]);}_0x5122e5[_0x50af('0x35')]=qs['sort'](_0x520bd6[_0x50af('0x2d')][_0x50af('0x36')]);_0x5122e5[_0x50af('0x37')]=qs[_0x50af('0x2f')](_['pick'](_0x520bd6[_0x50af('0x2d')],_0x1a1104[_0x50af('0x2f')]),_0x4118af);if(_0x520bd6[_0x50af('0x2d')][_0x50af('0x38')]){_0x5122e5[_0x50af('0x37')]=_['merge'](_0x5122e5['where'],{'$or':_['map'](_0x4118af,function(_0x198ec5){if(_0x198ec5[_0x50af('0x39')]!==_0x50af('0x3a')){var _0x194539={};_0x194539[_0x198ec5[_0x50af('0x27')]]={'$like':'%'+_0x520bd6[_0x50af('0x2d')][_0x50af('0x38')]+'%'};return _0x194539;}})});}_0x5122e5=_[_0x50af('0x3b')]({},_0x5122e5,_0x520bd6[_0x50af('0x3c')]);var _0x2d2a3f={'where':_0x5122e5[_0x50af('0x37')]};return db[_0x50af('0x2a')][_0x50af('0x1c')](_0x2d2a3f)[_0x50af('0x24')](function(_0xb96d73){_0x382c5d[_0x50af('0x1c')]=_0xb96d73;if(_0x520bd6['query'][_0x50af('0x3d')]){_0x5122e5[_0x50af('0x3e')]=[{'all':!![]}];}return db[_0x50af('0x2a')]['findAll'](_0x5122e5);})['then'](function(_0x208c88){_0x382c5d[_0x50af('0x3f')]=_0x208c88;return _0x382c5d;})[_0x50af('0x24')](respondWithFilteredResult(_0x212fc2,_0x5122e5))[_0x50af('0x40')](handleError(_0x212fc2,null));};exports[_0x50af('0x41')]=function(_0x2917b7,_0x37bdfc){var _0x3f74bb={'raw':!![],'where':{'id':_0x2917b7['params']['id']}},_0x533d35={};_0x533d35[_0x50af('0x2b')]=_[_0x50af('0x2e')](db['ChatQueueReport']['rawAttributes']);_0x533d35[_0x50af('0x2d')]=_[_0x50af('0x2e')](_0x2917b7[_0x50af('0x2d')]);_0x533d35['filters']=_[_0x50af('0x30')](_0x533d35[_0x50af('0x2b')],_0x533d35[_0x50af('0x2d')]);_0x3f74bb[_0x50af('0x32')]=_[_0x50af('0x30')](_0x533d35[_0x50af('0x2b')],qs[_0x50af('0x31')](_0x2917b7[_0x50af('0x2d')][_0x50af('0x31')]));_0x3f74bb['attributes']=_0x3f74bb[_0x50af('0x32')][_0x50af('0x42')]?_0x3f74bb[_0x50af('0x32')]:_0x533d35[_0x50af('0x2b')];if(_0x2917b7['query']['includeAll']){_0x3f74bb['include']=[{'all':!![]}];}_0x3f74bb=_[_0x50af('0x3b')]({},_0x3f74bb,_0x2917b7[_0x50af('0x3c')]);return db['ChatQueueReport'][_0x50af('0x43')](_0x3f74bb)[_0x50af('0x24')](handleEntityNotFound(_0x37bdfc,null))[_0x50af('0x24')](respondWithResult(_0x37bdfc,null))[_0x50af('0x40')](handleError(_0x37bdfc,null));};exports[_0x50af('0x44')]=function(_0xb64bed,_0x59057e){return db['ChatQueueReport'][_0x50af('0x44')](_0xb64bed[_0x50af('0x45')],{})[_0x50af('0x24')](respondWithResult(_0x59057e,0xc9))[_0x50af('0x40')](handleError(_0x59057e,null));};exports[_0x50af('0x23')]=function(_0x97713f,_0x5f0834){if(_0x97713f[_0x50af('0x45')]['id']){delete _0x97713f[_0x50af('0x45')]['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x97713f[_0x50af('0x46')]['id']}})[_0x50af('0x24')](handleEntityNotFound(_0x5f0834,null))[_0x50af('0x24')](saveUpdates(_0x97713f[_0x50af('0x45')],null))[_0x50af('0x24')](respondWithResult(_0x5f0834,null))[_0x50af('0x40')](handleError(_0x5f0834,null));};exports[_0x50af('0x25')]=function(_0x1401a3,_0x173a2a){return db[_0x50af('0x2a')]['find']({'where':{'id':_0x1401a3[_0x50af('0x46')]['id']}})[_0x50af('0x24')](handleEntityNotFound(_0x173a2a,null))[_0x50af('0x24')](removeEntity(_0x173a2a,null))[_0x50af('0x40')](handleError(_0x173a2a,null));};exports[_0x50af('0x47')]=function(_0x5e112a,_0x5ca12d){return db['ChatQueueReport'][_0x50af('0x47')]()['then'](respondWithResult(_0x5ca12d,null))[_0x50af('0x40')](handleError(_0x5ca12d,null));};
\ No newline at end of file
index 1f3f26c..812312e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x232e4e,_0x5eb705){var _0x44bec8=function(_0x259d15){while(--_0x259d15){_0x232e4e['push'](_0x232e4e['shift']());}};_0x44bec8(++_0x5eb705);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xb7e7[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x19217d,_0x5e9718){var _0x110150=function(_0x1af3f2){while(--_0x1af3f2){_0x19217d['push'](_0x19217d['shift']());}};_0x110150(++_0x5e9718);}(_0x757a,0xde));var _0xa757=function(_0xd93056,_0x397364){_0xd93056=_0xd93056-0x0;var _0x1b3598=_0x757a[_0xd93056];return _0x1b3598;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 76c42ee..ea4292d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17ec=['update','where','attributes','UpdateChatQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw'];(function(_0x18bb64,_0x3f50d1){var _0x4ec94c=function(_0x462b2e){while(--_0x462b2e){_0x18bb64['push'](_0x18bb64['shift']());}};_0x4ec94c(++_0x3f50d1);}(_0x17ec,0x185));var _0xc17e=function(_0x81ba5f,_0x35e0d0){_0x81ba5f=_0x81ba5f-0x0;var _0x2b518b=_0x17ec[_0x81ba5f];return _0x2b518b;};'use strict';var _=require(_0xc17e('0x0'));var util=require(_0xc17e('0x1'));var moment=require(_0xc17e('0x2'));var BPromise=require(_0xc17e('0x3'));var rs=require(_0xc17e('0x4'));var fs=require('fs');var Redis=require(_0xc17e('0x5'));var db=require(_0xc17e('0x6'))['db'];var utils=require(_0xc17e('0x7'));var logger=require(_0xc17e('0x8'))('rpc');var config=require(_0xc17e('0x9'));var jayson=require(_0xc17e('0xa'));var client=jayson[_0xc17e('0xb')][_0xc17e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x20dac1,_0x55c330,_0xa40cf6){return new BPromise(function(_0xbb585,_0xcd1a8b){return client['request'](_0x20dac1,_0xa40cf6)[_0xc17e('0xd')](function(_0x1358f3){logger[_0xc17e('0xe')](_0xc17e('0xf'),_0x55c330,_0xc17e('0x10'));logger[_0xc17e('0x11')](_0xc17e('0x12'),_0x55c330,_0xc17e('0x10'),JSON[_0xc17e('0x13')](_0x1358f3));if(_0x1358f3[_0xc17e('0x14')]){if(_0x1358f3['error'][_0xc17e('0x15')]===0x1f4){logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);return _0xcd1a8b(_0x1358f3[_0xc17e('0x14')]['message']);}logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);return _0xbb585(_0x1358f3[_0xc17e('0x14')][_0xc17e('0x16')]);}else{logger[_0xc17e('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x55c330,'request\x20sent');_0xbb585(_0x1358f3[_0xc17e('0x17')][_0xc17e('0x16')]);}})[_0xc17e('0x18')](function(_0x4c8482){logger[_0xc17e('0x14')](_0xc17e('0xf'),_0x55c330,_0x4c8482);_0xcd1a8b(_0x4c8482);});});}exports[_0xc17e('0x19')]=function(_0x3d2d15){var _0x48ed3a=this;return new Promise(function(_0x5d3afe,_0x2d0dd6){return db[_0xc17e('0x1a')][_0xc17e('0x1b')](_0x3d2d15[_0xc17e('0x1c')],{'raw':_0x3d2d15[_0xc17e('0x1d')]?_0x3d2d15['options'][_0xc17e('0x1e')]===undefined?!![]:![]:!![]})[_0xc17e('0xd')](function(_0x115f68){logger[_0xc17e('0xe')]('CreateChatQueueReport',_0x3d2d15);logger[_0xc17e('0x11')]('CreateChatQueueReport',_0x3d2d15,JSON[_0xc17e('0x13')](_0x115f68));_0x5d3afe(_0x115f68);})[_0xc17e('0x18')](function(_0x56a2a1){logger[_0xc17e('0x14')]('CreateChatQueueReport',_0x56a2a1[_0xc17e('0x16')],_0x3d2d15);_0x2d0dd6(_0x48ed3a[_0xc17e('0x14')](0x1f4,_0x56a2a1[_0xc17e('0x16')]));});});};exports['UpdateChatQueueReport']=function(_0x2862db){var _0x3837b8=this;return new Promise(function(_0x5790f2,_0x41937f){return db[_0xc17e('0x1a')][_0xc17e('0x1f')](_0x2862db['body'],{'raw':_0x2862db[_0xc17e('0x1d')]?_0x2862db['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')][_0xc17e('0x20')]||null:null,'attributes':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')][_0xc17e('0x21')]||null:null,'limit':_0x2862db[_0xc17e('0x1d')]?_0x2862db[_0xc17e('0x1d')]['limit']||null:null})['then'](function(_0x112332){logger['info'](_0xc17e('0x22'),_0x2862db);logger[_0xc17e('0x11')](_0xc17e('0x22'),_0x2862db,JSON[_0xc17e('0x13')](_0x112332));_0x5790f2(_0x112332);})['catch'](function(_0x55bdcd){logger['error']('UpdateChatQueueReport',_0x55bdcd[_0xc17e('0x16')],_0x2862db);_0x41937f(_0x3837b8[_0xc17e('0x14')](0x1f4,_0x55bdcd[_0xc17e('0x16')]));});});};
\ No newline at end of file
+var _0xb02e=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','update','where','attributes','limit','UpdateChatQueueReport'];(function(_0x5e312c,_0x533f4e){var _0x46e6e8=function(_0x5c9368){while(--_0x5c9368){_0x5e312c['push'](_0x5e312c['shift']());}};_0x46e6e8(++_0x533f4e);}(_0xb02e,0x66));var _0xeb02=function(_0x4996e3,_0x4fc197){_0x4996e3=_0x4996e3-0x0;var _0xcb520d=_0xb02e[_0x4996e3];return _0xcb520d;};'use strict';var _=require('lodash');var util=require(_0xeb02('0x0'));var moment=require(_0xeb02('0x1'));var BPromise=require(_0xeb02('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb02('0x3'));var db=require(_0xeb02('0x4'))['db'];var utils=require(_0xeb02('0x5'));var logger=require(_0xeb02('0x6'))(_0xeb02('0x7'));var config=require(_0xeb02('0x8'));var jayson=require(_0xeb02('0x9'));var client=jayson[_0xeb02('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fb753,_0x2cf90a,_0x12eb28){return new BPromise(function(_0x4336ab,_0x357471){return client[_0xeb02('0xb')](_0x1fb753,_0x12eb28)[_0xeb02('0xc')](function(_0x3ba40f){logger[_0xeb02('0xd')](_0xeb02('0xe'),_0x2cf90a,_0xeb02('0xf'));logger[_0xeb02('0x10')](_0xeb02('0x11'),_0x2cf90a,_0xeb02('0xf'),JSON[_0xeb02('0x12')](_0x3ba40f));if(_0x3ba40f[_0xeb02('0x13')]){if(_0x3ba40f[_0xeb02('0x13')][_0xeb02('0x14')]===0x1f4){logger[_0xeb02('0x13')](_0xeb02('0xe'),_0x2cf90a,_0x3ba40f[_0xeb02('0x13')]['message']);return _0x357471(_0x3ba40f[_0xeb02('0x13')][_0xeb02('0x15')]);}logger[_0xeb02('0x13')](_0xeb02('0xe'),_0x2cf90a,_0x3ba40f[_0xeb02('0x13')]['message']);return _0x4336ab(_0x3ba40f[_0xeb02('0x13')][_0xeb02('0x15')]);}else{logger['info'](_0xeb02('0xe'),_0x2cf90a,_0xeb02('0xf'));_0x4336ab(_0x3ba40f['result'][_0xeb02('0x15')]);}})[_0xeb02('0x16')](function(_0x581eb7){logger[_0xeb02('0x13')](_0xeb02('0xe'),_0x2cf90a,_0x581eb7);_0x357471(_0x581eb7);});});}exports[_0xeb02('0x17')]=function(_0x52195d){var _0x44cd14=this;return new Promise(function(_0x23362d,_0xc6ca0a){return db[_0xeb02('0x18')][_0xeb02('0x19')](_0x52195d[_0xeb02('0x1a')],{'raw':_0x52195d[_0xeb02('0x1b')]?_0x52195d['options'][_0xeb02('0x1c')]===undefined?!![]:![]:!![]})[_0xeb02('0xc')](function(_0x511fb6){logger[_0xeb02('0xd')](_0xeb02('0x17'),_0x52195d);logger['debug'](_0xeb02('0x17'),_0x52195d,JSON['stringify'](_0x511fb6));_0x23362d(_0x511fb6);})[_0xeb02('0x16')](function(_0x25fdcf){logger[_0xeb02('0x13')]('CreateChatQueueReport',_0x25fdcf[_0xeb02('0x15')],_0x52195d);_0xc6ca0a(_0x44cd14[_0xeb02('0x13')](0x1f4,_0x25fdcf[_0xeb02('0x15')]));});});};exports['UpdateChatQueueReport']=function(_0x35fa4b){var _0x3f7bf9=this;return new Promise(function(_0x85ea15,_0x4a3fdc){return db[_0xeb02('0x18')][_0xeb02('0x1d')](_0x35fa4b['body'],{'raw':_0x35fa4b[_0xeb02('0x1b')]?_0x35fa4b[_0xeb02('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35fa4b[_0xeb02('0x1b')]?_0x35fa4b[_0xeb02('0x1b')][_0xeb02('0x1e')]||null:null,'attributes':_0x35fa4b[_0xeb02('0x1b')]?_0x35fa4b[_0xeb02('0x1b')][_0xeb02('0x1f')]||null:null,'limit':_0x35fa4b[_0xeb02('0x1b')]?_0x35fa4b['options'][_0xeb02('0x20')]||null:null})[_0xeb02('0xc')](function(_0x2ebf25){logger['info'](_0xeb02('0x21'),_0x35fa4b);logger[_0xeb02('0x10')](_0xeb02('0x21'),_0x35fa4b,JSON[_0xeb02('0x12')](_0x2ebf25));_0x85ea15(_0x2ebf25);})[_0xeb02('0x16')](function(_0x3efe7f){logger[_0xeb02('0x13')](_0xeb02('0x21'),_0x3efe7f[_0xeb02('0x15')],_0x35fa4b);_0x4a3fdc(_0x3f7bf9[_0xeb02('0x13')](0x1f4,_0x3efe7f[_0xeb02('0x15')]));});});};
\ No newline at end of file
index 75a4c27..682f0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe50f=['delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update'];(function(_0x9d1e6b,_0x3bdc22){var _0x2b3070=function(_0x4c4ced){while(--_0x4c4ced){_0x9d1e6b['push'](_0x9d1e6b['shift']());}};_0x2b3070(++_0x3bdc22);}(_0xe50f,0x9a));var _0xfe50=function(_0x3d38f0,_0x1750bd){_0x3d38f0=_0x3d38f0-0x0;var _0x329af5=_0xe50f[_0x3d38f0];return _0x329af5;};'use strict';var multer=require('multer');var util=require(_0xfe50('0x0'));var path=require(_0xfe50('0x1'));var timeout=require(_0xfe50('0x2'));var express=require('express');var router=express[_0xfe50('0x3')]();var fs_extra=require(_0xfe50('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe50('0x5'));var config=require(_0xfe50('0x6'));var controller=require(_0xfe50('0x7'));router[_0xfe50('0x8')]('/',auth[_0xfe50('0x9')](),controller[_0xfe50('0xa')]);router[_0xfe50('0x8')](_0xfe50('0xb'),auth[_0xfe50('0x9')](),controller[_0xfe50('0xc')]);router[_0xfe50('0x8')](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0xe')]);router[_0xfe50('0xf')]('/',auth[_0xfe50('0x9')](),controller['create']);router['put'](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0x10')]);router[_0xfe50('0x11')](_0xfe50('0xd'),auth[_0xfe50('0x9')](),controller[_0xfe50('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa4ad=['put','update','delete','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0x4cc4f3,_0x2115ca){var _0x294ea7=function(_0x5a5446){while(--_0x5a5446){_0x4cc4f3['push'](_0x4cc4f3['shift']());}};_0x294ea7(++_0x2115ca);}(_0xa4ad,0x6d));var _0xda4a=function(_0x57975f,_0x388556){_0x57975f=_0x57975f-0x0;var _0x4793b8=_0xa4ad[_0x57975f];return _0x4793b8;};'use strict';var multer=require(_0xda4a('0x0'));var util=require(_0xda4a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xda4a('0x2'));var router=express[_0xda4a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xda4a('0x4'));var interaction=require(_0xda4a('0x5'));var config=require(_0xda4a('0x6'));var controller=require(_0xda4a('0x7'));router[_0xda4a('0x8')]('/',auth[_0xda4a('0x9')](),controller[_0xda4a('0xa')]);router[_0xda4a('0x8')](_0xda4a('0xb'),auth[_0xda4a('0x9')](),controller[_0xda4a('0xc')]);router[_0xda4a('0x8')](_0xda4a('0xd'),auth[_0xda4a('0x9')](),controller[_0xda4a('0xe')]);router[_0xda4a('0xf')]('/',auth['isAuthenticated'](),controller[_0xda4a('0x10')]);router[_0xda4a('0x11')](_0xda4a('0xd'),auth['isAuthenticated'](),controller[_0xda4a('0x12')]);router[_0xda4a('0x13')](_0xda4a('0xd'),auth[_0xda4a('0x9')](),controller[_0xda4a('0x14')]);module['exports']=router;
\ No newline at end of file
index 620af9d..f795ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x303c30,_0x16edcb){var _0x43161b=function(_0x3330ff){while(--_0x3330ff){_0x303c30['push'](_0x303c30['shift']());}};_0x43161b(++_0x16edcb);}(_0xb43b,0x1b2));var _0xbb43=function(_0x40cb23,_0x50f41e){_0x40cb23=_0x40cb23-0x0;var _0x3eae17=_0xb43b[_0x40cb23];return _0x3eae17;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x4154ba,_0x289e31){var _0x1eb32f=function(_0x40097d){while(--_0x40097d){_0x4154ba['push'](_0x4154ba['shift']());}};_0x1eb32f(++_0x289e31);}(_0xaa88,0x137));var _0x8aa8=function(_0x4ad0f7,_0x1920b0){_0x4ad0f7=_0x4ad0f7-0x0;var _0x30f5c8=_0xaa88[_0x4ad0f7];return _0x30f5c8;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index ee16472..1bb28b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x328e=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','ChatTransferReport','count','include','findAll','rows','catch','show','params','length','includeAll','merge','create','body','find','destroy','describe','eml-format','rimraf','fast-json-patch'];(function(_0x1afe5a,_0x1d6303){var _0x6a431b=function(_0x435e81){while(--_0x435e81){_0x1afe5a['push'](_0x1afe5a['shift']());}};_0x6a431b(++_0x1d6303);}(_0x328e,0x18d));var _0xe328=function(_0x323b84,_0x4255bf){_0x323b84=_0x323b84-0x0;var _0x54cf6d=_0x328e[_0x323b84];return _0x54cf6d;};'use strict';var emlformat=require(_0xe328('0x0'));var rimraf=require(_0xe328('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe328('0x2'));var rp=require(_0xe328('0x3'));var moment=require('moment');var BPromise=require(_0xe328('0x4'));var Mustache=require(_0xe328('0x5'));var util=require(_0xe328('0x6'));var path=require(_0xe328('0x7'));var sox=require(_0xe328('0x8'));var csv=require(_0xe328('0x9'));var ejs=require(_0xe328('0xa'));var fs=require('fs');var fs_extra=require(_0xe328('0xb'));var _=require(_0xe328('0xc'));var squel=require(_0xe328('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe328('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe328('0xf'));var Papa=require(_0xe328('0x10'));var Redis=require('ioredis');var authService=require(_0xe328('0x11'));var qs=require(_0xe328('0x12'));var as=require(_0xe328('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe328('0x14'))(_0xe328('0x15'));var utils=require('../../config/utils');var config=require(_0xe328('0x16'));var licenseUtil=require(_0xe328('0x17'));var db=require(_0xe328('0x18'))['db'];function respondWithStatusCode(_0x6a6746,_0xac23ae){_0xac23ae=_0xac23ae||0xcc;return function(_0x372747){if(_0x372747){return _0x6a6746[_0xe328('0x19')](_0xac23ae);}return _0x6a6746['status'](_0xac23ae)[_0xe328('0x1a')]();};}function respondWithResult(_0x15fcb4,_0x5aceb4){_0x5aceb4=_0x5aceb4||0xc8;return function(_0x240486){if(_0x240486){return _0x15fcb4[_0xe328('0x1b')](_0x5aceb4)[_0xe328('0x1c')](_0x240486);}};}function respondWithFilteredResult(_0x5bc870,_0x1aba6b){return function(_0x3efcc3){if(_0x3efcc3){var _0x238d4b=typeof _0x1aba6b[_0xe328('0x1d')]===_0xe328('0x1e')&&typeof _0x1aba6b[_0xe328('0x1f')]==='undefined';var _0x14fdea=_0x3efcc3['count'];var _0x313943=_0x238d4b?0x0:_0x1aba6b['offset'];var _0x41e8f5=_0x238d4b?_0x3efcc3['count']:_0x1aba6b['offset']+_0x1aba6b[_0xe328('0x1f')];var _0x1b0043;if(_0x41e8f5>=_0x14fdea){_0x41e8f5=_0x14fdea;_0x1b0043=0xc8;}else{_0x1b0043=0xce;}_0x5bc870[_0xe328('0x1b')](_0x1b0043);return _0x5bc870[_0xe328('0x20')](_0xe328('0x21'),_0x313943+'-'+_0x41e8f5+'/'+_0x14fdea)[_0xe328('0x1c')](_0x3efcc3);}return null;};}function patchUpdates(_0x2b1236){return function(_0x4c0a9b){try{jsonpatch[_0xe328('0x22')](_0x4c0a9b,_0x2b1236,!![]);}catch(_0x356e34){return BPromise['reject'](_0x356e34);}return _0x4c0a9b[_0xe328('0x23')]();};}function saveUpdates(_0x2ee9cc,_0x53cc67){return function(_0x268f3d){if(_0x268f3d){return _0x268f3d[_0xe328('0x24')](_0x2ee9cc)['then'](function(_0x399ff2){return _0x399ff2;});}return null;};}function removeEntity(_0x27e09f,_0x387975){return function(_0x44a0b3){if(_0x44a0b3){return _0x44a0b3['destroy']()[_0xe328('0x25')](function(){_0x27e09f['status'](0xcc)[_0xe328('0x1a')]();});}};}function handleEntityNotFound(_0x32cc30,_0x48b6a6){return function(_0x5593bc){if(!_0x5593bc){_0x32cc30[_0xe328('0x19')](0x194);}return _0x5593bc;};}function handleError(_0x421c47,_0x2d161b){_0x2d161b=_0x2d161b||0x1f4;return function(_0x13c123){logger[_0xe328('0x26')](_0x13c123[_0xe328('0x27')]);if(_0x13c123[_0xe328('0x28')]){delete _0x13c123[_0xe328('0x28')];}_0x421c47[_0xe328('0x1b')](_0x2d161b)[_0xe328('0x29')](_0x13c123);};}exports[_0xe328('0x2a')]=function(_0x4e8746,_0xa061e9){var _0x24fbd8={},_0x2bea83={},_0x356692={'count':0x0,'rows':[]};var _0x1a41e9=_[_0xe328('0x2b')](db['ChatTransferReport'][_0xe328('0x2c')],function(_0xe41734){return{'name':_0xe41734[_0xe328('0x2d')],'type':_0xe41734[_0xe328('0x2e')][_0xe328('0x2f')]};});_0x2bea83[_0xe328('0x30')]=_[_0xe328('0x2b')](_0x1a41e9,_0xe328('0x28'));_0x2bea83[_0xe328('0x31')]=_[_0xe328('0x32')](_0x4e8746[_0xe328('0x31')]);_0x2bea83[_0xe328('0x33')]=_[_0xe328('0x34')](_0x2bea83[_0xe328('0x30')],_0x2bea83['query']);_0x24fbd8[_0xe328('0x35')]=_[_0xe328('0x34')](_0x2bea83[_0xe328('0x30')],qs[_0xe328('0x36')](_0x4e8746[_0xe328('0x31')][_0xe328('0x36')]));_0x24fbd8[_0xe328('0x35')]=_0x24fbd8[_0xe328('0x35')]['length']?_0x24fbd8['attributes']:_0x2bea83['model'];if(!_0x4e8746[_0xe328('0x31')][_0xe328('0x37')](_0xe328('0x38'))){_0x24fbd8[_0xe328('0x1f')]=qs[_0xe328('0x1f')](_0x4e8746[_0xe328('0x31')][_0xe328('0x1f')]);_0x24fbd8['offset']=qs[_0xe328('0x1d')](_0x4e8746[_0xe328('0x31')][_0xe328('0x1d')]);}_0x24fbd8[_0xe328('0x39')]=qs[_0xe328('0x3a')](_0x4e8746[_0xe328('0x31')][_0xe328('0x3a')]);_0x24fbd8['where']=qs[_0xe328('0x33')](_[_0xe328('0x3b')](_0x4e8746['query'],_0x2bea83[_0xe328('0x33')]),_0x1a41e9);if(_0x4e8746[_0xe328('0x31')][_0xe328('0x3c')]){_0x24fbd8[_0xe328('0x3d')]=_['merge'](_0x24fbd8[_0xe328('0x3d')],{'$or':_[_0xe328('0x2b')](_0x1a41e9,function(_0x59258c){if(_0x59258c['type']!==_0xe328('0x3e')){var _0xb44d07={};_0xb44d07[_0x59258c[_0xe328('0x28')]]={'$like':'%'+_0x4e8746['query'][_0xe328('0x3c')]+'%'};return _0xb44d07;}})});}_0x24fbd8=_['merge']({},_0x24fbd8,_0x4e8746[_0xe328('0x3f')]);var _0x5e3418={'where':_0x24fbd8[_0xe328('0x3d')]};return db[_0xe328('0x40')]['count'](_0x5e3418)['then'](function(_0x4e007f){_0x356692[_0xe328('0x41')]=_0x4e007f;if(_0x4e8746[_0xe328('0x31')]['includeAll']){_0x24fbd8[_0xe328('0x42')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xe328('0x43')](_0x24fbd8);})[_0xe328('0x25')](function(_0x18d637){_0x356692[_0xe328('0x44')]=_0x18d637;return _0x356692;})['then'](respondWithFilteredResult(_0xa061e9,_0x24fbd8))[_0xe328('0x45')](handleError(_0xa061e9,null));};exports[_0xe328('0x46')]=function(_0x8b7cc5,_0x2b3de8){var _0x2d6086={'raw':!![],'where':{'id':_0x8b7cc5[_0xe328('0x47')]['id']}},_0x1d7ae0={};_0x1d7ae0[_0xe328('0x30')]=_[_0xe328('0x32')](db['ChatTransferReport'][_0xe328('0x2c')]);_0x1d7ae0[_0xe328('0x31')]=_[_0xe328('0x32')](_0x8b7cc5[_0xe328('0x31')]);_0x1d7ae0[_0xe328('0x33')]=_['intersection'](_0x1d7ae0[_0xe328('0x30')],_0x1d7ae0[_0xe328('0x31')]);_0x2d6086['attributes']=_[_0xe328('0x34')](_0x1d7ae0[_0xe328('0x30')],qs[_0xe328('0x36')](_0x8b7cc5[_0xe328('0x31')][_0xe328('0x36')]));_0x2d6086['attributes']=_0x2d6086[_0xe328('0x35')][_0xe328('0x48')]?_0x2d6086[_0xe328('0x35')]:_0x1d7ae0[_0xe328('0x30')];if(_0x8b7cc5[_0xe328('0x31')][_0xe328('0x49')]){_0x2d6086['include']=[{'all':!![]}];}_0x2d6086=_[_0xe328('0x4a')]({},_0x2d6086,_0x8b7cc5['options']);return db[_0xe328('0x40')]['find'](_0x2d6086)[_0xe328('0x25')](handleEntityNotFound(_0x2b3de8,null))[_0xe328('0x25')](respondWithResult(_0x2b3de8,null))[_0xe328('0x45')](handleError(_0x2b3de8,null));};exports[_0xe328('0x4b')]=function(_0x4687f5,_0x101bb1){return db[_0xe328('0x40')][_0xe328('0x4b')](_0x4687f5[_0xe328('0x4c')],{})['then'](respondWithResult(_0x101bb1,0xc9))[_0xe328('0x45')](handleError(_0x101bb1,null));};exports[_0xe328('0x24')]=function(_0x3b8806,_0x32ba0d){if(_0x3b8806['body']['id']){delete _0x3b8806[_0xe328('0x4c')]['id'];}return db[_0xe328('0x40')][_0xe328('0x4d')]({'where':{'id':_0x3b8806['params']['id']}})['then'](handleEntityNotFound(_0x32ba0d,null))['then'](saveUpdates(_0x3b8806[_0xe328('0x4c')],null))[_0xe328('0x25')](respondWithResult(_0x32ba0d,null))['catch'](handleError(_0x32ba0d,null));};exports[_0xe328('0x4e')]=function(_0x2c8044,_0x433b4d){return db[_0xe328('0x40')][_0xe328('0x4d')]({'where':{'id':_0x2c8044[_0xe328('0x47')]['id']}})[_0xe328('0x25')](handleEntityNotFound(_0x433b4d,null))[_0xe328('0x25')](removeEntity(_0x433b4d,null))[_0xe328('0x45')](handleError(_0x433b4d,null));};exports[_0xe328('0x4f')]=function(_0x578ccd,_0x90bf17){return db[_0xe328('0x40')][_0xe328('0x4f')]()[_0xe328('0x25')](respondWithResult(_0x90bf17,null))[_0xe328('0x45')](handleError(_0x90bf17,null));};
\ No newline at end of file
+var _0x71cc=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','undefined','offset','count','limit','set','save','update','then','destroy','sendStatus','error','stack','name','send','map','ChatTransferReport','rawAttributes','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','params','include','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x5cd678,_0x59cd4e){var _0x14a0de=function(_0xd8b140){while(--_0xd8b140){_0x5cd678['push'](_0x5cd678['shift']());}};_0x14a0de(++_0x59cd4e);}(_0x71cc,0x1dc));var _0xc71c=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x71cc[_0x13b02f];return _0x12e9a6;};'use strict';var emlformat=require(_0xc71c('0x0'));var rimraf=require(_0xc71c('0x1'));var zipdir=require(_0xc71c('0x2'));var jsonpatch=require(_0xc71c('0x3'));var rp=require(_0xc71c('0x4'));var moment=require(_0xc71c('0x5'));var BPromise=require(_0xc71c('0x6'));var Mustache=require(_0xc71c('0x7'));var util=require('util');var path=require(_0xc71c('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc71c('0x9'));var _=require(_0xc71c('0xa'));var squel=require('squel');var crypto=require(_0xc71c('0xb'));var jsforce=require(_0xc71c('0xc'));var deskjs=require(_0xc71c('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc71c('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc71c('0xf'));var as=require(_0xc71c('0x10'));var hardwareService=require(_0xc71c('0x11'));var logger=require(_0xc71c('0x12'))(_0xc71c('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc71c('0x14'));var db=require(_0xc71c('0x15'))['db'];function respondWithStatusCode(_0x1a7d83,_0x55266c){_0x55266c=_0x55266c||0xcc;return function(_0x28150e){if(_0x28150e){return _0x1a7d83['sendStatus'](_0x55266c);}return _0x1a7d83[_0xc71c('0x16')](_0x55266c)[_0xc71c('0x17')]();};}function respondWithResult(_0x5f08b4,_0x53f2ce){_0x53f2ce=_0x53f2ce||0xc8;return function(_0x339f9e){if(_0x339f9e){return _0x5f08b4[_0xc71c('0x16')](_0x53f2ce)[_0xc71c('0x18')](_0x339f9e);}};}function respondWithFilteredResult(_0x2ff3ff,_0x50ca22){return function(_0x5af0b2){if(_0x5af0b2){var _0x214ecb=typeof _0x50ca22['offset']===_0xc71c('0x19')&&typeof _0x50ca22['limit']===_0xc71c('0x19');var _0x21a96d=_0x5af0b2['count'];var _0x1ade07=_0x214ecb?0x0:_0x50ca22[_0xc71c('0x1a')];var _0x4860a7=_0x214ecb?_0x5af0b2[_0xc71c('0x1b')]:_0x50ca22[_0xc71c('0x1a')]+_0x50ca22[_0xc71c('0x1c')];var _0xb04665;if(_0x4860a7>=_0x21a96d){_0x4860a7=_0x21a96d;_0xb04665=0xc8;}else{_0xb04665=0xce;}_0x2ff3ff[_0xc71c('0x16')](_0xb04665);return _0x2ff3ff[_0xc71c('0x1d')]('Content-Range',_0x1ade07+'-'+_0x4860a7+'/'+_0x21a96d)[_0xc71c('0x18')](_0x5af0b2);}return null;};}function patchUpdates(_0x4034fc){return function(_0x33d840){try{jsonpatch['apply'](_0x33d840,_0x4034fc,!![]);}catch(_0x128b65){return BPromise['reject'](_0x128b65);}return _0x33d840[_0xc71c('0x1e')]();};}function saveUpdates(_0x328fd2,_0x5914ab){return function(_0x1c3da5){if(_0x1c3da5){return _0x1c3da5[_0xc71c('0x1f')](_0x328fd2)[_0xc71c('0x20')](function(_0x283b2e){return _0x283b2e;});}return null;};}function removeEntity(_0x420f38,_0x1c10a1){return function(_0x58a6af){if(_0x58a6af){return _0x58a6af[_0xc71c('0x21')]()[_0xc71c('0x20')](function(){_0x420f38['status'](0xcc)[_0xc71c('0x17')]();});}};}function handleEntityNotFound(_0x550c66,_0xd0d0e5){return function(_0x4a280e){if(!_0x4a280e){_0x550c66[_0xc71c('0x22')](0x194);}return _0x4a280e;};}function handleError(_0x5326ee,_0x32dfbe){_0x32dfbe=_0x32dfbe||0x1f4;return function(_0x1f1392){logger[_0xc71c('0x23')](_0x1f1392[_0xc71c('0x24')]);if(_0x1f1392[_0xc71c('0x25')]){delete _0x1f1392[_0xc71c('0x25')];}_0x5326ee[_0xc71c('0x16')](_0x32dfbe)[_0xc71c('0x26')](_0x1f1392);};}exports['index']=function(_0x46ba7a,_0x1d45fb){var _0x53cced={},_0x4559a3={},_0x15b0b5={'count':0x0,'rows':[]};var _0x23bc28=_[_0xc71c('0x27')](db[_0xc71c('0x28')][_0xc71c('0x29')],function(_0x1bafa0){return{'name':_0x1bafa0['fieldName'],'type':_0x1bafa0[_0xc71c('0x2a')]['key']};});_0x4559a3['model']=_[_0xc71c('0x27')](_0x23bc28,'name');_0x4559a3['query']=_[_0xc71c('0x2b')](_0x46ba7a[_0xc71c('0x2c')]);_0x4559a3[_0xc71c('0x2d')]=_[_0xc71c('0x2e')](_0x4559a3[_0xc71c('0x2f')],_0x4559a3[_0xc71c('0x2c')]);_0x53cced[_0xc71c('0x30')]=_[_0xc71c('0x2e')](_0x4559a3[_0xc71c('0x2f')],qs[_0xc71c('0x31')](_0x46ba7a[_0xc71c('0x2c')]['fields']));_0x53cced[_0xc71c('0x30')]=_0x53cced['attributes'][_0xc71c('0x32')]?_0x53cced[_0xc71c('0x30')]:_0x4559a3[_0xc71c('0x2f')];if(!_0x46ba7a[_0xc71c('0x2c')][_0xc71c('0x33')](_0xc71c('0x34'))){_0x53cced[_0xc71c('0x1c')]=qs[_0xc71c('0x1c')](_0x46ba7a['query'][_0xc71c('0x1c')]);_0x53cced[_0xc71c('0x1a')]=qs['offset'](_0x46ba7a['query'][_0xc71c('0x1a')]);}_0x53cced['order']=qs[_0xc71c('0x35')](_0x46ba7a[_0xc71c('0x2c')][_0xc71c('0x35')]);_0x53cced[_0xc71c('0x36')]=qs['filters'](_[_0xc71c('0x37')](_0x46ba7a[_0xc71c('0x2c')],_0x4559a3[_0xc71c('0x2d')]),_0x23bc28);if(_0x46ba7a[_0xc71c('0x2c')][_0xc71c('0x38')]){_0x53cced[_0xc71c('0x36')]=_[_0xc71c('0x39')](_0x53cced[_0xc71c('0x36')],{'$or':_[_0xc71c('0x27')](_0x23bc28,function(_0x450407){if(_0x450407[_0xc71c('0x2a')]!==_0xc71c('0x3a')){var _0x4852d6={};_0x4852d6[_0x450407['name']]={'$like':'%'+_0x46ba7a['query'][_0xc71c('0x38')]+'%'};return _0x4852d6;}})});}_0x53cced=_[_0xc71c('0x39')]({},_0x53cced,_0x46ba7a['options']);var _0x13c6c8={'where':_0x53cced[_0xc71c('0x36')]};return db[_0xc71c('0x28')][_0xc71c('0x1b')](_0x13c6c8)['then'](function(_0x299e96){_0x15b0b5[_0xc71c('0x1b')]=_0x299e96;if(_0x46ba7a['query'][_0xc71c('0x3b')]){_0x53cced['include']=[{'all':!![]}];}return db[_0xc71c('0x28')][_0xc71c('0x3c')](_0x53cced);})[_0xc71c('0x20')](function(_0x594b8e){_0x15b0b5[_0xc71c('0x3d')]=_0x594b8e;return _0x15b0b5;})[_0xc71c('0x20')](respondWithFilteredResult(_0x1d45fb,_0x53cced))['catch'](handleError(_0x1d45fb,null));};exports['show']=function(_0x497f39,_0x3fe04e){var _0x110434={'raw':!![],'where':{'id':_0x497f39[_0xc71c('0x3e')]['id']}},_0x20387c={};_0x20387c[_0xc71c('0x2f')]=_[_0xc71c('0x2b')](db[_0xc71c('0x28')][_0xc71c('0x29')]);_0x20387c[_0xc71c('0x2c')]=_[_0xc71c('0x2b')](_0x497f39[_0xc71c('0x2c')]);_0x20387c['filters']=_['intersection'](_0x20387c[_0xc71c('0x2f')],_0x20387c[_0xc71c('0x2c')]);_0x110434[_0xc71c('0x30')]=_[_0xc71c('0x2e')](_0x20387c['model'],qs['fields'](_0x497f39[_0xc71c('0x2c')][_0xc71c('0x31')]));_0x110434[_0xc71c('0x30')]=_0x110434[_0xc71c('0x30')]['length']?_0x110434[_0xc71c('0x30')]:_0x20387c[_0xc71c('0x2f')];if(_0x497f39[_0xc71c('0x2c')][_0xc71c('0x3b')]){_0x110434[_0xc71c('0x3f')]=[{'all':!![]}];}_0x110434=_[_0xc71c('0x39')]({},_0x110434,_0x497f39[_0xc71c('0x40')]);return db[_0xc71c('0x28')][_0xc71c('0x41')](_0x110434)[_0xc71c('0x20')](handleEntityNotFound(_0x3fe04e,null))['then'](respondWithResult(_0x3fe04e,null))[_0xc71c('0x42')](handleError(_0x3fe04e,null));};exports[_0xc71c('0x43')]=function(_0x76a510,_0x58ff72){return db[_0xc71c('0x28')][_0xc71c('0x43')](_0x76a510[_0xc71c('0x44')],{})[_0xc71c('0x20')](respondWithResult(_0x58ff72,0xc9))['catch'](handleError(_0x58ff72,null));};exports[_0xc71c('0x1f')]=function(_0x599d8c,_0x16f068){if(_0x599d8c[_0xc71c('0x44')]['id']){delete _0x599d8c['body']['id'];}return db[_0xc71c('0x28')][_0xc71c('0x41')]({'where':{'id':_0x599d8c['params']['id']}})[_0xc71c('0x20')](handleEntityNotFound(_0x16f068,null))['then'](saveUpdates(_0x599d8c['body'],null))[_0xc71c('0x20')](respondWithResult(_0x16f068,null))[_0xc71c('0x42')](handleError(_0x16f068,null));};exports[_0xc71c('0x21')]=function(_0x3e5fd1,_0x2c1048){return db['ChatTransferReport'][_0xc71c('0x41')]({'where':{'id':_0x3e5fd1[_0xc71c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x2c1048,null))[_0xc71c('0x20')](removeEntity(_0x2c1048,null))[_0xc71c('0x42')](handleError(_0x2c1048,null));};exports[_0xc71c('0x45')]=function(_0x131e86,_0x15b20b){return db[_0xc71c('0x28')][_0xc71c('0x45')]()[_0xc71c('0x20')](respondWithResult(_0x15b20b,null))[_0xc71c('0x42')](handleError(_0x15b20b,null));};
\ No newline at end of file
index 8f74daf..eb2968b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2849=['api','moment','bluebird','request-promise','path','rimraf','./chatTransferReport.attributes','define','report_chat_transfer','uniqueid','lodash','util'];(function(_0x9ae730,_0x4105be){var _0x151049=function(_0x17c3bf){while(--_0x17c3bf){_0x9ae730['push'](_0x9ae730['shift']());}};_0x151049(++_0x4105be);}(_0x2849,0x14e));var _0x9284=function(_0xcd8e6f,_0x1ed0e6){_0xcd8e6f=_0xcd8e6f-0x0;var _0x41abe3=_0x2849[_0xcd8e6f];return _0x41abe3;};'use strict';var _=require(_0x9284('0x0'));var util=require(_0x9284('0x1'));var logger=require('../../config/logger')(_0x9284('0x2'));var moment=require(_0x9284('0x3'));var BPromise=require(_0x9284('0x4'));var rp=require(_0x9284('0x5'));var fs=require('fs');var path=require(_0x9284('0x6'));var rimraf=require(_0x9284('0x7'));var config=require('../../config/environment');var attributes=require(_0x9284('0x8'));module['exports']=function(_0xc010e6,_0x538244){return _0xc010e6[_0x9284('0x9')]('ChatTransferReport',attributes,{'tableName':_0x9284('0xa'),'paranoid':![],'indexes':[{'name':_0x9284('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd0c=['rimraf','./chatTransferReport.attributes','exports','define','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x23602f,_0xff9581){var _0x446145=function(_0x53a4b3){while(--_0x53a4b3){_0x23602f['push'](_0x23602f['shift']());}};_0x446145(++_0xff9581);}(_0xcd0c,0x7f));var _0xccd0=function(_0x4f0ea1,_0x35f0da){_0x4f0ea1=_0x4f0ea1-0x0;var _0x40f568=_0xcd0c[_0x4f0ea1];return _0x40f568;};'use strict';var _=require(_0xccd0('0x0'));var util=require(_0xccd0('0x1'));var logger=require(_0xccd0('0x2'))(_0xccd0('0x3'));var moment=require(_0xccd0('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xccd0('0x5'));var config=require('../../config/environment');var attributes=require(_0xccd0('0x6'));module[_0xccd0('0x7')]=function(_0x167df3,_0x1535a1){return _0x167df3[_0xccd0('0x8')]('ChatTransferReport',attributes,{'tableName':_0xccd0('0x9'),'paranoid':![],'indexes':[{'name':_0xccd0('0xa'),'fields':[_0xccd0('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index cad6279..67f6c0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x656f=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result'];(function(_0x931900,_0x9357c8){var _0x4c0c04=function(_0x39251e){while(--_0x39251e){_0x931900['push'](_0x931900['shift']());}};_0x4c0c04(++_0x9357c8);}(_0x656f,0x1a4));var _0xf656=function(_0xd226e5,_0x1b30b3){_0xd226e5=_0xd226e5-0x0;var _0x16c904=_0x656f[_0xd226e5];return _0x16c904;};'use strict';var _=require(_0xf656('0x0'));var util=require('util');var moment=require(_0xf656('0x1'));var BPromise=require(_0xf656('0x2'));var rs=require(_0xf656('0x3'));var fs=require('fs');var Redis=require(_0xf656('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf656('0x5'));var logger=require(_0xf656('0x6'))(_0xf656('0x7'));var config=require(_0xf656('0x8'));var jayson=require(_0xf656('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1676e4,_0x3820d3,_0x16d74e){return new BPromise(function(_0x107e68,_0x3b1a18){return client[_0xf656('0xa')](_0x1676e4,_0x16d74e)[_0xf656('0xb')](function(_0x5f0c25){logger[_0xf656('0xc')](_0xf656('0xd'),_0x3820d3,'request\x20sent');logger[_0xf656('0xe')](_0xf656('0xf'),_0x3820d3,_0xf656('0x10'),JSON[_0xf656('0x11')](_0x5f0c25));if(_0x5f0c25[_0xf656('0x12')]){if(_0x5f0c25[_0xf656('0x12')]['code']===0x1f4){logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x5f0c25[_0xf656('0x12')][_0xf656('0x13')]);return _0x3b1a18(_0x5f0c25['error']['message']);}logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x5f0c25[_0xf656('0x12')][_0xf656('0x13')]);return _0x107e68(_0x5f0c25['error'][_0xf656('0x13')]);}else{logger['info'](_0xf656('0xd'),_0x3820d3,_0xf656('0x10'));_0x107e68(_0x5f0c25[_0xf656('0x14')]['message']);}})['catch'](function(_0x1d8e56){logger[_0xf656('0x12')](_0xf656('0xd'),_0x3820d3,_0x1d8e56);_0x3b1a18(_0x1d8e56);});});}
\ No newline at end of file
+var _0x33ae=['message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','then','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x33ae,0x81));var _0xe33a=function(_0x27def7,_0x3f0835){_0x27def7=_0x27def7-0x0;var _0x581cbc=_0x33ae[_0x27def7];return _0x581cbc;};'use strict';var _=require(_0xe33a('0x0'));var util=require(_0xe33a('0x1'));var moment=require(_0xe33a('0x2'));var BPromise=require('bluebird');var rs=require(_0xe33a('0x3'));var fs=require('fs');var Redis=require(_0xe33a('0x4'));var db=require(_0xe33a('0x5'))['db'];var utils=require(_0xe33a('0x6'));var logger=require('../../config/logger')(_0xe33a('0x7'));var config=require('../../config/environment');var jayson=require(_0xe33a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x133084,_0x3447d7,_0x17e115){return new BPromise(function(_0x317c74,_0x52a0db){return client['request'](_0x133084,_0x17e115)[_0xe33a('0x9')](function(_0x23b6a3){logger[_0xe33a('0xa')](_0xe33a('0xb'),_0x3447d7,'request\x20sent');logger[_0xe33a('0xc')](_0xe33a('0xd'),_0x3447d7,_0xe33a('0xe'),JSON[_0xe33a('0xf')](_0x23b6a3));if(_0x23b6a3['error']){if(_0x23b6a3[_0xe33a('0x10')][_0xe33a('0x11')]===0x1f4){logger[_0xe33a('0x10')](_0xe33a('0xb'),_0x3447d7,_0x23b6a3[_0xe33a('0x10')][_0xe33a('0x12')]);return _0x52a0db(_0x23b6a3[_0xe33a('0x10')][_0xe33a('0x12')]);}logger['error'](_0xe33a('0xb'),_0x3447d7,_0x23b6a3[_0xe33a('0x10')]['message']);return _0x317c74(_0x23b6a3['error'][_0xe33a('0x12')]);}else{logger[_0xe33a('0xa')](_0xe33a('0xb'),_0x3447d7,_0xe33a('0xe'));_0x317c74(_0x23b6a3[_0xe33a('0x13')]['message']);}})[_0xe33a('0x14')](function(_0x542f11){logger[_0xe33a('0x10')](_0xe33a('0xb'),_0x3447d7,_0x542f11);_0x52a0db(_0x542f11);});});}
\ No newline at end of file
index 6567e6f..ce9ed4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce5=['describe','/:id','post','put','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x3b4c9b,_0x197a81){var _0x498020=function(_0x3b2691){while(--_0x3b2691){_0x3b4c9b['push'](_0x3b4c9b['shift']());}};_0x498020(++_0x197a81);}(_0x2ce5,0x16c));var _0x52ce=function(_0x842685,_0x540bd3){_0x842685=_0x842685-0x0;var _0x978848=_0x2ce5[_0x842685];return _0x978848;};'use strict';var multer=require(_0x52ce('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x52ce('0x1'));var express=require('express');var router=express[_0x52ce('0x2')]();var fs_extra=require(_0x52ce('0x3'));var auth=require(_0x52ce('0x4'));var interaction=require(_0x52ce('0x5'));var config=require('../../config/environment');var controller=require('./chatTransferReport.controller');router[_0x52ce('0x6')]('/',auth[_0x52ce('0x7')](),controller[_0x52ce('0x8')]);router[_0x52ce('0x6')](_0x52ce('0x9'),auth[_0x52ce('0x7')](),controller[_0x52ce('0xa')]);router[_0x52ce('0x6')](_0x52ce('0xb'),auth[_0x52ce('0x7')](),controller['show']);router[_0x52ce('0xc')]('/',auth[_0x52ce('0x7')](),controller['create']);router[_0x52ce('0xd')]('/:id',auth[_0x52ce('0x7')](),controller[_0x52ce('0xe')]);router['delete']('/:id',auth[_0x52ce('0x7')](),controller[_0x52ce('0xf')]);module[_0x52ce('0x10')]=router;
\ No newline at end of file
+var _0x0dea=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','/:id','create','put','update','delete','exports','multer','util','connect-timeout','Router'];(function(_0x1607b4,_0xb2a193){var _0x34d91f=function(_0x309604){while(--_0x309604){_0x1607b4['push'](_0x1607b4['shift']());}};_0x34d91f(++_0xb2a193);}(_0x0dea,0x1be));var _0xa0de=function(_0x3da647,_0xa1a501){_0x3da647=_0x3da647-0x0;var _0x2e91a2=_0x0dea[_0x3da647];return _0x2e91a2;};'use strict';var multer=require(_0xa0de('0x0'));var util=require(_0xa0de('0x1'));var path=require('path');var timeout=require(_0xa0de('0x2'));var express=require('express');var router=express[_0xa0de('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa0de('0x4'));var interaction=require(_0xa0de('0x5'));var config=require(_0xa0de('0x6'));var controller=require(_0xa0de('0x7'));router[_0xa0de('0x8')]('/',auth[_0xa0de('0x9')](),controller[_0xa0de('0xa')]);router[_0xa0de('0x8')](_0xa0de('0xb'),auth[_0xa0de('0x9')](),controller['describe']);router['get'](_0xa0de('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xa0de('0x9')](),controller[_0xa0de('0xd')]);router[_0xa0de('0xe')](_0xa0de('0xc'),auth[_0xa0de('0x9')](),controller[_0xa0de('0xf')]);router[_0xa0de('0x10')](_0xa0de('0xc'),auth[_0xa0de('0x9')](),controller['destroy']);module[_0xa0de('0x11')]=router;
\ No newline at end of file
index 4a42a78..7159df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4420=['You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','squared','We\x20are\x20here!','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','ENUM','star','thumb','name','text','input','getDataValue','onlineForm','parse','setDataValue','stringify','Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName'];(function(_0x28791b,_0x1c8869){var _0x4edb30=function(_0x24e105){while(--_0x24e105){_0x28791b['push'](_0x28791b['shift']());}};_0x4edb30(++_0x1c8869);}(_0x4420,0x9d));var _0x0442=function(_0x4d511f,_0x24a112){_0x4d511f=_0x4d511f-0x0;var _0x5c11ff=_0x4420[_0x4d511f];return _0x5c11ff;};'use strict';var Sequelize=require(_0x0442('0x0'));var rs=require('randomstring');module[_0x0442('0x1')]={'name':{'type':Sequelize[_0x0442('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'unique':_0x0442('0x3')},'description':{'type':Sequelize[_0x0442('0x2')]},'mapKey':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0x0442('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xb')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0xc')},'header_offline':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x0442('0xe')]},'closingQuestion':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x11')},'noteTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x12')},'placeholderMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x13')},'closingMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x14')},'closingMessageButton':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0xc')},'skipMessageButton':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x0442('0x15')](_0x0442('0x16'),_0x0442('0x17')),'defaultValue':_0x0442('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x0442('0x18'),'type':_0x0442('0x19'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x0442('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x0442('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x0442('0x1b')](_0x0442('0x1c'))?JSON[_0x0442('0x1d')](this['getDataValue'](_0x0442('0x1c'))):{};},'set':function(_0x52b487){return this[_0x0442('0x1e')]('onlineForm',JSON[_0x0442('0x1f')](_0x52b487));}},'offlineForm':{'type':Sequelize[_0x0442('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x0442('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x0442('0x4'),'type':_0x0442('0x4')},'variable':null},{'type':'textarea','config':{'placeholder':_0x0442('0x20')},'props':{'title':_0x0442('0x20'),'helpText':_0x0442('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x0442('0x1b')](_0x0442('0x22'))?JSON[_0x0442('0x1d')](this[_0x0442('0x1b')]('offlineForm')):{};},'set':function(_0xef0bfd){return this[_0x0442('0x1e')]('offlineForm',JSON[_0x0442('0x1f')](_0xef0bfd));}},'token':{'type':Sequelize[_0x0442('0x2')],'defaultValue':function(){return rs[_0x0442('0x23')]();}},'autoclose':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x0442('0x2')]},'forwardOffline':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x0442('0x2')]},'waitingTitle':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x24')},'waitingMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x26')},'offlineMessageBody':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x28')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0x29')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x0442('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x0442('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x0442('0x2a');}},'notificationSound':{'type':Sequelize[_0x0442('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x0442('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x0442('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x0442('0x2')],'defaultValue':_0x0442('0x2b')},'verticalAlignment':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x0442('0x2')]},'customerAvatar':{'type':Sequelize[_0x0442('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x0442('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0x0442('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0442('0x8')],'comment':_0x0442('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0x0442('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x21dfcb){if(!_0x21dfcb)this[_0x0442('0x1e')]('mandatoryDispositionPauseId',null);this[_0x0442('0x1e')](_0x0442('0x2e'),_0x21dfcb);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x0442('0x2')]},'vidaooTopic':{'type':Sequelize[_0x0442('0x2')],'allowNull':![],'defaultValue':_0x0442('0x2f')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x0442('0x30');}},'vidaooMetadata':{'type':Sequelize[_0x0442('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xd2dd=['website_alias','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','STRING','email','Agent','#011F6A','INTEGER','BOOLEAN','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','star','thumb','stringify','name','text','input','getDataValue','onlineForm','setDataValue','textarea','Comments','offlineForm','parse','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x41ca97,_0x45cad7){var _0x52263c=function(_0x2e0b8c){while(--_0x2e0b8c){_0x41ca97['push'](_0x41ca97['shift']());}};_0x52263c(++_0x45cad7);}(_0xd2dd,0xc9));var _0xdd2d=function(_0x3fa777,_0x285b6e){_0x3fa777=_0x3fa777-0x0;var _0x3d7436=_0xd2dd[_0x3fa777];return _0x3d7436;};'use strict';var Sequelize=require(_0xdd2d('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0xdd2d('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xdd2d('0x1')]},'mapKey':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x2')},'mapKeyOffline':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'email'},'key':{'type':Sequelize[_0xdd2d('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xdd2d('0x3')},'customerAlias':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xdd2d('0x1')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xdd2d('0x1')],'allowNull':![],'defaultValue':_0xdd2d('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xdd2d('0x5')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xdd2d('0x1')]},'animation':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xdd2d('0x7'),_0xdd2d('0x8')),'defaultValue':_0xdd2d('0x7')},'header_online':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x9')},'start_chat_button':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xa')},'offline_chat_button':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xb')},'header_offline':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xc')},'download_transcript':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xdd2d('0x5')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xdd2d('0xe')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0xdd2d('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x10')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x11')},'closingMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x12')},'closingMessageButton':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xb')},'skipMessageButton':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x13')},'conditionAgreement':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x14')},'ratingType':{'type':Sequelize[_0xdd2d('0x15')](_0xdd2d('0x16'),_0xdd2d('0x17')),'defaultValue':_0xdd2d('0x16')},'ratingStarsNumber':{'type':Sequelize[_0xdd2d('0x5')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xdd2d('0xe')],'defaultValue':function(){return JSON[_0xdd2d('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0xdd2d('0x19'),'type':_0xdd2d('0x1a'),'required':!![]},'props':{'title':_0xdd2d('0x19'),'helpText':''}},{'type':_0xdd2d('0x1b'),'props':{'title':_0xdd2d('0x2'),'helpText':''},'config':{'required':!![],'placeholder':_0xdd2d('0x2'),'type':_0xdd2d('0x2')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xdd2d('0x1c')](_0xdd2d('0x1d'))?JSON['parse'](this[_0xdd2d('0x1c')](_0xdd2d('0x1d'))):{};},'set':function(_0x2d9a37){return this[_0xdd2d('0x1e')](_0xdd2d('0x1d'),JSON[_0xdd2d('0x18')](_0x2d9a37));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xdd2d('0x18')]({'items':[{'type':_0xdd2d('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xdd2d('0x2'),'type':'email'},'variable':null},{'type':_0xdd2d('0x1f'),'config':{'placeholder':_0xdd2d('0x20')},'props':{'title':_0xdd2d('0x20'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xdd2d('0x21'))?JSON[_0xdd2d('0x22')](this[_0xdd2d('0x1c')]('offlineForm')):{};},'set':function(_0x1ea1f4){return this[_0xdd2d('0x1e')](_0xdd2d('0x21'),JSON[_0xdd2d('0x18')](_0x1ea1f4));}},'token':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xdd2d('0x1')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xdd2d('0x23')},'waitingMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x24')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0xdd2d('0x25')},'enableUnmanagedNote':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x13')},'sendUnmanaged':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xdd2d('0xe')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xdd2d('0x26');}},'notificationSound':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0xdd2d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xdd2d('0x5')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x28')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0xdd2d('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xdd2d('0x5')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xdd2d('0x1')],'allowNull':![],'defaultValue':_0xdd2d('0x29'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xdd2d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xdd2d('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':_0xdd2d('0x2a')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xdd2d('0x5')],'comment':_0xdd2d('0x2b')},'mandatoryDisposition':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![],'comment':_0xdd2d('0x2c'),'set':function(_0x1014e1){if(!_0x1014e1)this[_0xdd2d('0x1e')](_0xdd2d('0x2d'),null);this[_0xdd2d('0x1e')]('mandatoryDisposition',_0x1014e1);}},'vidaooEscalation':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xdd2d('0x1')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xdd2d('0x2e')},'vidaooNote':{'type':Sequelize[_0xdd2d('0x1')],'defaultValue':function(){return _0xdd2d('0x2f');}},'vidaooMetadata':{'type':Sequelize[_0xdd2d('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xdd2d('0x6')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 0514c1e..897bfd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc807=['getApplications','addProactiveActions','getFields','false','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Attachment','Attachments','addAgents','spread','emit','userChatWebsite:remove','getAgents','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','jayson/promise','http','client','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','ChatWebsite,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','destroy','ChatWebsites','stack','name','index','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','count','includeAll','include','findAll','rows','params','length','options','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','body','describe','addDisposition','ChatWebsiteId','Disposition','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','filename','addAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','setUA','headers','user-agent','getResult','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','ChatApplication','Applications','account','applications','orderBy','priority','asc','ListId','contact','customerIp','x-forwarded-for','split','lastName','x-real-port','browser','version','unknown','%s\x20%s','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','autoclose','push','close','unmanaged','ChatMessage','AttachmentId','UserId','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','offline','files','from\x20is\x20mandatory','send','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','originalname','mimetype','server','attachments','basename','sequelize','transaction','MailServerOut','Smtp','service','host','port','secure','authentication','pass','forwardOfflineAddress','offlineMessageSubject','openNewInteraction','subjectOffline','toPairsIn','email','Chat','notifyMail','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','format','iftime\x20%s,%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','License','chatLicenseExceeded','some','remote','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','textColor','color_button','backgroundColor','addApplications','bulkCreate','findAndCountAll'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xc807,0x13c));var _0x7c80=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xc807[_0x1e3c16];return _0x47a0c9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7c80('0x0'));var moment=require(_0x7c80('0x1'));var BPromise=require(_0x7c80('0x2'));var Mustache=require(_0x7c80('0x3'));var util=require('util');var path=require(_0x7c80('0x4'));var sox=require(_0x7c80('0x5'));var csv=require(_0x7c80('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7c80('0x7'));var squel=require(_0x7c80('0x8'));var crypto=require(_0x7c80('0x9'));var jsforce=require(_0x7c80('0xa'));var deskjs=require(_0x7c80('0xb'));var toCsv=require(_0x7c80('0x6'));var querystring=require(_0x7c80('0xc'));var Papa=require(_0x7c80('0xd'));var Redis=require(_0x7c80('0xe'));var authService=require(_0x7c80('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x7c80('0x10'));var hardwareService=require(_0x7c80('0x11'));var logger=require(_0x7c80('0x12'))(_0x7c80('0x13'));var utils=require('../../config/utils');var config=require(_0x7c80('0x14'));var licenseUtil=require(_0x7c80('0x15'));var db=require(_0x7c80('0x16'))['db'];config[_0x7c80('0x17')]=_[_0x7c80('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7c80('0x19'))(new Redis(config['redis']));require(_0x7c80('0x1a'))['register'](socket);var jayson=require(_0x7c80('0x1b'));var client=jayson['client'][_0x7c80('0x1c')]({'port':0x232c});var client9002=jayson[_0x7c80('0x1d')][_0x7c80('0x1c')]({'port':0x232a});var client9003=jayson[_0x7c80('0x1d')]['http']({'port':0x232b});var client9001=jayson['client']['http']({'port':0x2329});function respondWithRpcPromise(_0x5c868b,_0x3495fd,_0x29805a,_0x58586f){return new BPromise(function(_0xd59e76,_0x1e273d){var _0x282376=_0x58586f||client;return _0x282376[_0x7c80('0x1e')](_0x5c868b,_0x29805a)[_0x7c80('0x1f')](function(_0x2cb669){logger[_0x7c80('0x20')]('ChatWebsite,\x20%s,\x20%s',_0x3495fd,'request\x20sent');logger[_0x7c80('0x21')](_0x7c80('0x22'),_0x3495fd,_0x7c80('0x23'),JSON[_0x7c80('0x24')](_0x2cb669));if(_0x2cb669[_0x7c80('0x25')]){if(_0x2cb669[_0x7c80('0x25')]['code']===0x1f4){logger[_0x7c80('0x25')](_0x7c80('0x26'),_0x3495fd,_0x2cb669['error'][_0x7c80('0x27')]);return _0x1e273d(_0x2cb669[_0x7c80('0x25')][_0x7c80('0x27')]);}logger[_0x7c80('0x25')]('ChatWebsite,\x20%s,\x20%s',_0x3495fd,_0x2cb669[_0x7c80('0x25')][_0x7c80('0x27')]);return _0xd59e76(_0x2cb669[_0x7c80('0x25')]['message']);}else{logger[_0x7c80('0x20')](_0x7c80('0x26'),_0x3495fd,_0x7c80('0x23'));_0xd59e76(_0x2cb669[_0x7c80('0x28')][_0x7c80('0x27')]);}})['catch'](function(_0x31dbae){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x3495fd,_0x31dbae);_0x1e273d(_0x31dbae);});});}function respondWithStatusCode(_0x78668b,_0x2fd455){_0x2fd455=_0x2fd455||0xcc;return function(_0x3de47e){if(_0x3de47e){return _0x78668b[_0x7c80('0x29')](_0x2fd455);}return _0x78668b[_0x7c80('0x2a')](_0x2fd455)[_0x7c80('0x2b')]();};}function respondWithResult(_0x2b62f3,_0x493ea4){_0x493ea4=_0x493ea4||0xc8;return function(_0x4f8dc4){if(_0x4f8dc4){return _0x2b62f3[_0x7c80('0x2a')](_0x493ea4)[_0x7c80('0x2c')](_0x4f8dc4);}};}function respondWithFilteredResult(_0x58caa7,_0x5b2047){return function(_0x2c7ff0){if(_0x2c7ff0){var _0xe7fbf5=typeof _0x5b2047[_0x7c80('0x2d')]===_0x7c80('0x2e')&&typeof _0x5b2047['limit']===_0x7c80('0x2e');var _0x2810bc=_0x2c7ff0['count'];var _0x29d058=_0xe7fbf5?0x0:_0x5b2047['offset'];var _0x18c3a6=_0xe7fbf5?_0x2c7ff0['count']:_0x5b2047[_0x7c80('0x2d')]+_0x5b2047[_0x7c80('0x2f')];var _0x3080f5;if(_0x18c3a6>=_0x2810bc){_0x18c3a6=_0x2810bc;_0x3080f5=0xc8;}else{_0x3080f5=0xce;}_0x58caa7[_0x7c80('0x2a')](_0x3080f5);return _0x58caa7[_0x7c80('0x30')]('Content-Range',_0x29d058+'-'+_0x18c3a6+'/'+_0x2810bc)['json'](_0x2c7ff0);}return null;};}function patchUpdates(_0xba07eb){return function(_0x515929){try{jsonpatch[_0x7c80('0x31')](_0x515929,_0xba07eb,!![]);}catch(_0x2c59d0){return BPromise[_0x7c80('0x32')](_0x2c59d0);}return _0x515929[_0x7c80('0x33')]();};}function saveUpdates(_0x41680b,_0x2c21b7){return function(_0x36741d){if(_0x36741d){return _0x36741d[_0x7c80('0x34')](_0x41680b)[_0x7c80('0x1f')](function(_0x296763){return _0x296763;});}return null;};}function removeEntity(_0x494e31,_0x8143e5){return function(_0x35b444){if(_0x35b444){return _0x35b444[_0x7c80('0x35')]()[_0x7c80('0x1f')](function(){var _0x395eed=_0x35b444['get']({'plain':!![]});var _0x24a8d8=_0x7c80('0x36');return db['UserProfileResource'][_0x7c80('0x35')]({'where':{'type':_0x24a8d8,'resourceId':_0x395eed['id']}})[_0x7c80('0x1f')](function(){return _0x35b444;});})[_0x7c80('0x1f')](function(){_0x494e31['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27fa2f,_0xca290f){return function(_0x467011){if(!_0x467011){_0x27fa2f[_0x7c80('0x29')](0x194);}return _0x467011;};}function handleError(_0x2555e9,_0x45bac7){_0x45bac7=_0x45bac7||0x1f4;return function(_0x9d1766){logger['error'](_0x9d1766[_0x7c80('0x37')]);if(_0x9d1766[_0x7c80('0x38')]){delete _0x9d1766['name'];}_0x2555e9[_0x7c80('0x2a')](_0x45bac7)['send'](_0x9d1766);};}exports[_0x7c80('0x39')]=function(_0x2c1661,_0x30d7dc){var _0xfd9328={'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]},_0xd0bf30={},_0x282f8c={'count':0x0,'rows':[]};var _0x3066bc=_[_0x7c80('0x3b')](db[_0x7c80('0x3c')][_0x7c80('0x3d')],function(_0x3ddb39){return{'name':_0x3ddb39[_0x7c80('0x3e')],'type':_0x3ddb39[_0x7c80('0x3f')][_0x7c80('0x40')]};});_0xd0bf30['model']=_[_0x7c80('0x3b')](_0x3066bc,_0x7c80('0x38'));_0xd0bf30[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x2c1661[_0x7c80('0x41')]);_0xd0bf30[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0xd0bf30[_0x7c80('0x45')],_0xd0bf30['query']);_0xfd9328[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0xd0bf30[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x2c1661['query'][_0x7c80('0x47')]));_0xfd9328[_0x7c80('0x46')]=_0xfd9328[_0x7c80('0x46')]['length']?_0xfd9328[_0x7c80('0x46')]:_0xd0bf30[_0x7c80('0x45')];if(!_0x2c1661[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0xfd9328[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x2c1661[_0x7c80('0x41')]['limit']);_0xfd9328['offset']=qs[_0x7c80('0x2d')](_0x2c1661[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0xfd9328['order']=qs[_0x7c80('0x4a')](_0x2c1661['query'][_0x7c80('0x4a')]);_0xfd9328['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x2c1661[_0x7c80('0x41')],_0xd0bf30[_0x7c80('0x43')]),_0x3066bc);if(_0x2c1661[_0x7c80('0x41')][_0x7c80('0x4c')]){_0xfd9328[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0xfd9328[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x3066bc,function(_0x496584){if(_0x496584[_0x7c80('0x3f')]!==_0x7c80('0x4f')){var _0x4fa7a1={};_0x4fa7a1[_0x496584[_0x7c80('0x38')]]={'$like':'%'+_0x2c1661[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x4fa7a1;}})});}_0xfd9328=_[_0x7c80('0x4e')]({},_0xfd9328,_0x2c1661['options']);var _0xdee3a0={'where':_0xfd9328[_0x7c80('0x4d')]};return db[_0x7c80('0x3c')][_0x7c80('0x50')](_0xdee3a0)[_0x7c80('0x1f')](function(_0x5743db){_0x282f8c[_0x7c80('0x50')]=_0x5743db;if(_0x2c1661[_0x7c80('0x41')][_0x7c80('0x51')]){_0xfd9328[_0x7c80('0x52')]=[{'all':!![]}];}return db[_0x7c80('0x3c')][_0x7c80('0x53')](_0xfd9328);})[_0x7c80('0x1f')](function(_0x52b162){_0x282f8c[_0x7c80('0x54')]=_0x52b162;return _0x282f8c;})['then'](respondWithFilteredResult(_0x30d7dc,_0xfd9328))['catch'](handleError(_0x30d7dc,null));};exports['show']=function(_0x11c20c,_0xa38425){var _0x26487c={'raw':![],'where':{'id':_0x11c20c[_0x7c80('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]},_0x499824={};_0x499824[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['ChatWebsite'][_0x7c80('0x3d')]);_0x499824[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x11c20c[_0x7c80('0x41')]);_0x499824[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x499824['model'],_0x499824[_0x7c80('0x41')]);_0x26487c['attributes']=_[_0x7c80('0x44')](_0x499824[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x11c20c[_0x7c80('0x41')][_0x7c80('0x47')]));_0x26487c[_0x7c80('0x46')]=_0x26487c[_0x7c80('0x46')][_0x7c80('0x56')]?_0x26487c['attributes']:_0x499824[_0x7c80('0x45')];if(_0x11c20c[_0x7c80('0x41')][_0x7c80('0x51')]){_0x26487c[_0x7c80('0x52')]=[{'all':!![]}];}_0x26487c=_['merge']({},_0x26487c,_0x11c20c[_0x7c80('0x57')]);return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x26487c)['then'](handleEntityNotFound(_0xa38425,null))[_0x7c80('0x1f')](respondWithResult(_0xa38425,null))[_0x7c80('0x59')](handleError(_0xa38425,null));};exports[_0x7c80('0x5a')]=function(_0x55d730,_0x49cddd){return db[_0x7c80('0x3c')][_0x7c80('0x5a')](_0x55d730['body'],{})[_0x7c80('0x1f')](function(_0x341e5f){var _0x40772b=_0x55d730[_0x7c80('0x5b')][_0x7c80('0x5c')]({'plain':!![]});if(!_0x40772b)throw new Error(_0x7c80('0x5d'));if(_0x40772b[_0x7c80('0x5e')]==='user'){var _0x3d6bbe=_0x341e5f[_0x7c80('0x5c')]({'plain':!![]});var _0x5c1c6f='ChatWebsites';return db[_0x7c80('0x5f')][_0x7c80('0x58')]({'where':{'name':_0x5c1c6f,'userProfileId':_0x40772b[_0x7c80('0x60')]},'raw':!![]})[_0x7c80('0x1f')](function(_0x59cf03){if(_0x59cf03&&_0x59cf03['autoAssociation']===0x0){return db[_0x7c80('0x61')][_0x7c80('0x5a')]({'name':_0x3d6bbe[_0x7c80('0x38')],'resourceId':_0x3d6bbe['id'],'type':_0x59cf03['name'],'sectionId':_0x59cf03['id']},{})[_0x7c80('0x1f')](function(){return _0x341e5f;});}else{return _0x341e5f;}})[_0x7c80('0x59')](function(_0x55fc63){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55fc63);throw _0x55fc63;});}return _0x341e5f;})[_0x7c80('0x1f')](respondWithResult(_0x49cddd,0xc9))[_0x7c80('0x59')](handleError(_0x49cddd,null));};exports[_0x7c80('0x34')]=function(_0x39a620,_0x2163ea){if(_0x39a620[_0x7c80('0x62')]['id']){delete _0x39a620[_0x7c80('0x62')]['id'];}return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x39a620[_0x7c80('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x7c80('0x3a')}]})[_0x7c80('0x1f')](handleEntityNotFound(_0x2163ea,null))[_0x7c80('0x1f')](saveUpdates(_0x39a620['body'],null))['then'](respondWithResult(_0x2163ea,null))['catch'](handleError(_0x2163ea,null));};exports[_0x7c80('0x35')]=function(_0x450cb3,_0x1e3d97){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x450cb3[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1e3d97,null))[_0x7c80('0x1f')](removeEntity(_0x1e3d97,null))[_0x7c80('0x59')](handleError(_0x1e3d97,null));};exports[_0x7c80('0x63')]=function(_0xa2d399,_0x5cf073){return db['ChatWebsite'][_0x7c80('0x63')]()['then'](respondWithResult(_0x5cf073,null))[_0x7c80('0x59')](handleError(_0x5cf073,null));};exports[_0x7c80('0x64')]=function(_0x4d3d6f,_0x1ffa62,_0x542410){if(_0x4d3d6f[_0x7c80('0x62')]['id']){delete _0x4d3d6f['body']['id'];}return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x4d3d6f[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1ffa62,null))['then'](function(_0x2d172c){if(_0x2d172c){_0x4d3d6f[_0x7c80('0x62')][_0x7c80('0x65')]=_0x2d172c['id'];return db[_0x7c80('0x66')][_0x7c80('0x5a')](_0x4d3d6f['body']);}})[_0x7c80('0x1f')](respondWithResult(_0x1ffa62,null))[_0x7c80('0x59')](handleError(_0x1ffa62,null));};exports['getDispositions']=function(_0x130a58,_0x3152b9,_0xd5af2b){var _0x1b2595={'raw':![],'where':{}};var _0x597e63={};var _0xd8d345={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x7c80('0x67')]({'where':{'id':_0x130a58['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x3152b9,null))['then'](function(_0x3d0eea){if(_0x3d0eea){_0x597e63[_0x7c80('0x45')]=_['keys'](db[_0x7c80('0x66')][_0x7c80('0x3d')]);_0x597e63[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x130a58[_0x7c80('0x41')]);_0x597e63[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x597e63[_0x7c80('0x45')],_0x597e63[_0x7c80('0x41')]);_0x1b2595[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x597e63[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x47')]));_0x1b2595[_0x7c80('0x46')]=_0x1b2595['attributes'][_0x7c80('0x56')]?_0x1b2595['attributes']:_0x597e63[_0x7c80('0x45')];if(!_0x130a58[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x1b2595[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x1b2595[_0x7c80('0x2d')]=qs['offset'](_0x130a58[_0x7c80('0x41')]['offset']);}_0x1b2595[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x130a58[_0x7c80('0x41')][_0x7c80('0x4a')]);_0x1b2595['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x130a58[_0x7c80('0x41')],_0x597e63[_0x7c80('0x43')]));_0x1b2595[_0x7c80('0x4d')][_0x7c80('0x65')]=_0x3d0eea['id'];if(_0x130a58[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x1b2595['where']=_[_0x7c80('0x4e')](_0x1b2595[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x1b2595[_0x7c80('0x46')],function(_0x51804b){var _0x3bc3ea={};_0x3bc3ea[_0x51804b]={'$like':'%'+_0x130a58['query'][_0x7c80('0x4c')]+'%'};return _0x3bc3ea;})});}_0x1b2595=_[_0x7c80('0x4e')]({},_0x1b2595,_0x130a58[_0x7c80('0x57')]);return db[_0x7c80('0x66')][_0x7c80('0x50')]({'where':_0x1b2595[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x7aa48a){_0xd8d345[_0x7c80('0x50')]=_0x7aa48a;if(_0x130a58[_0x7c80('0x41')][_0x7c80('0x51')]){_0x1b2595[_0x7c80('0x52')]=[{'all':!![]}];}return db[_0x7c80('0x66')][_0x7c80('0x53')](_0x1b2595);})[_0x7c80('0x1f')](function(_0x43f572){_0xd8d345['rows']=_0x43f572;return _0xd8d345;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x3152b9,_0x1b2595))[_0x7c80('0x59')](handleError(_0x3152b9,null));};exports[_0x7c80('0x69')]=function(_0x2d295b,_0x4a0cf3,_0xb68a63){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x2d295b[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x4a0cf3,null))[_0x7c80('0x1f')](function(_0x4c84a1){if(_0x4c84a1){return _0x4c84a1[_0x7c80('0x69')](_0x2d295b[_0x7c80('0x41')][_0x7c80('0x6a')]);}})['then'](respondWithStatusCode(_0x4a0cf3,null))['catch'](handleError(_0x4a0cf3,null));};exports[_0x7c80('0x6b')]=function(_0x14ef00,_0x21bb12,_0x5eafb9){if(_0x14ef00[_0x7c80('0x62')]['id']){delete _0x14ef00[_0x7c80('0x62')]['id'];}return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x14ef00['params']['id']}})['then'](handleEntityNotFound(_0x21bb12,null))[_0x7c80('0x1f')](function(_0xe9de8f){if(_0xe9de8f){_0x14ef00['body']['ChatWebsiteId']=_0xe9de8f['id'];return db[_0x7c80('0x6c')][_0x7c80('0x5a')](_0x14ef00[_0x7c80('0x62')]);}})[_0x7c80('0x1f')](respondWithResult(_0x21bb12,null))['catch'](handleError(_0x21bb12,null));};exports[_0x7c80('0x6d')]=function(_0x36d39e,_0x1130f5,_0xb48683){var _0x50e988={'raw':![],'where':{}};var _0x478e72={};var _0x4962b7={'count':0x0,'rows':[]};return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x36d39e['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x1130f5,null))[_0x7c80('0x1f')](function(_0xc917b7){if(_0xc917b7){_0x478e72[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['CannedAnswer'][_0x7c80('0x3d')]);_0x478e72[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x36d39e['query']);_0x478e72[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x478e72[_0x7c80('0x45')],_0x478e72[_0x7c80('0x41')]);_0x50e988['attributes']=_['intersection'](_0x478e72[_0x7c80('0x45')],qs['fields'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x47')]));_0x50e988['attributes']=_0x50e988[_0x7c80('0x46')][_0x7c80('0x56')]?_0x50e988[_0x7c80('0x46')]:_0x478e72[_0x7c80('0x45')];if(!_0x36d39e[_0x7c80('0x41')][_0x7c80('0x48')]('nolimit')){_0x50e988[_0x7c80('0x2f')]=qs['limit'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x50e988[_0x7c80('0x2d')]=qs['offset'](_0x36d39e[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0x50e988[_0x7c80('0x68')]=qs['sort'](_0x36d39e[_0x7c80('0x41')]['sort']);_0x50e988[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x36d39e[_0x7c80('0x41')],_0x478e72[_0x7c80('0x43')]));_0x50e988[_0x7c80('0x4d')][_0x7c80('0x65')]=_0xc917b7['id'];if(_0x36d39e[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x50e988[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x50e988[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x50e988['attributes'],function(_0x2e3b26){var _0x3aea61={};_0x3aea61[_0x2e3b26]={'$like':'%'+_0x36d39e[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x3aea61;})});}_0x50e988=_[_0x7c80('0x4e')]({},_0x50e988,_0x36d39e['options']);return db[_0x7c80('0x6c')][_0x7c80('0x50')]({'where':_0x50e988[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x210bbe){_0x4962b7[_0x7c80('0x50')]=_0x210bbe;if(_0x36d39e['query']['includeAll']){_0x50e988[_0x7c80('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0x7c80('0x53')](_0x50e988);})[_0x7c80('0x1f')](function(_0x172102){_0x4962b7[_0x7c80('0x54')]=_0x172102;return _0x4962b7;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x1130f5,_0x50e988))[_0x7c80('0x59')](handleError(_0x1130f5,null));};exports[_0x7c80('0x6e')]=function(_0x290f9e,_0x4601fb,_0x1f5686){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x290f9e[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x4601fb,null))[_0x7c80('0x1f')](function(_0x5a01b7){if(_0x5a01b7){return _0x5a01b7['removeAnswers'](_0x290f9e['query'][_0x7c80('0x6a')]);}})[_0x7c80('0x1f')](respondWithStatusCode(_0x4601fb,null))[_0x7c80('0x59')](handleError(_0x4601fb,null));};exports[_0x7c80('0x6f')]=function(_0x3922a1,_0x520077,_0x1ee3bb){_0x3922a1[_0x7c80('0x62')][_0x7c80('0x70')]=_0x3922a1[_0x7c80('0x71')][_0x7c80('0x72')];return db[_0x7c80('0x3c')]['find']({'where':{'id':_0x3922a1[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x520077,null))[_0x7c80('0x1f')](saveUpdates(_0x3922a1[_0x7c80('0x62')],null))[_0x7c80('0x1f')](respondWithResult(_0x520077,null))['catch'](handleError(_0x520077,null));};exports[_0x7c80('0x73')]=function(_0xccbc70,_0x21a443,_0x308f02){_0xccbc70[_0x7c80('0x62')]['agentAvatar']=_0xccbc70['file'][_0x7c80('0x72')];return db[_0x7c80('0x3c')]['find']({'where':{'id':_0xccbc70[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x21a443,null))[_0x7c80('0x1f')](saveUpdates(_0xccbc70[_0x7c80('0x62')],null))[_0x7c80('0x1f')](respondWithResult(_0x21a443,null))[_0x7c80('0x59')](handleError(_0x21a443,null));};exports[_0x7c80('0x74')]=function(_0x2ec9ba,_0xe73c55,_0x463da6){_0x2ec9ba[_0x7c80('0x62')][_0x7c80('0x75')]=_0x2ec9ba[_0x7c80('0x71')][_0x7c80('0x72')];return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x2ec9ba[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0xe73c55,null))[_0x7c80('0x1f')](saveUpdates(_0x2ec9ba[_0x7c80('0x62')],null))['then'](respondWithResult(_0xe73c55,null))['catch'](handleError(_0xe73c55,null));};exports['addSystemAvatar']=function(_0x247f2b,_0x4caa59,_0x16ad87){_0x247f2b['body'][_0x7c80('0x76')]=_0x247f2b[_0x7c80('0x71')][_0x7c80('0x72')];return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x247f2b['params']['id']}})['then'](handleEntityNotFound(_0x4caa59,null))[_0x7c80('0x1f')](saveUpdates(_0x247f2b[_0x7c80('0x62')],null))['then'](respondWithResult(_0x4caa59,null))['catch'](handleError(_0x4caa59,null));};exports[_0x7c80('0x77')]=function(_0x462b47,_0x27d7e1,_0x108139){var _0x50970e=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x7a'));var _0x530e14={'where':{'id':_0x462b47[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x70')],'raw':!![]};var _0x1f3f5a=![];return require(_0x7c80('0x15'))[_0x7c80('0x7b')]()['then'](function(_0x5f2593){if(_0x5f2593){_0x1f3f5a=_0x5f2593[_0x7c80('0x7c')];}})[_0x7c80('0x1f')](function(){return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x530e14);})[_0x7c80('0x1f')](handleEntityNotFound(_0x27d7e1,null))[_0x7c80('0x1f')](function(_0x1da07e){if(_0x1da07e){if(!_[_0x7c80('0x7d')](_0x1da07e[_0x7c80('0x70')])){if(fs[_0x7c80('0x7e')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x7f'),_0x1da07e[_0x7c80('0x70')]))&&_0x1f3f5a){_0x50970e=path['join'](config[_0x7c80('0x79')],_0x7c80('0x7f'),_0x1da07e[_0x7c80('0x70')]);}}return _0x27d7e1[_0x7c80('0x80')](_0x50970e);}})[_0x7c80('0x59')](handleError(_0x27d7e1,null));};exports[_0x7c80('0x81')]=function(_0x339112,_0x198d95,_0x295d57){var _0xb58d61=path['join'](config['root'],_0x7c80('0x82'));var _0x257e22={'where':{'id':_0x339112[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x83')],'raw':!![]};return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x257e22)[_0x7c80('0x1f')](handleEntityNotFound(_0x198d95,null))['then'](function(_0x242d5b){if(_0x242d5b){if(!_[_0x7c80('0x7d')](_0x242d5b[_0x7c80('0x83')])){if(fs[_0x7c80('0x7e')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x242d5b['agentAvatar']))){_0xb58d61=path[_0x7c80('0x78')](config['root'],_0x7c80('0x84'),_0x242d5b[_0x7c80('0x83')]);}}return _0x198d95['download'](_0xb58d61);}})[_0x7c80('0x59')](handleError(_0x198d95,null));};exports[_0x7c80('0x85')]=function(_0x4fb5db,_0x3b3f31,_0x380d13){var _0x3f1bb8=path[_0x7c80('0x78')](config['root'],_0x7c80('0x86'));var _0x251fc5={'where':{'id':_0x4fb5db[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x75'),_0x7c80('0x87')],'raw':!![]};return db[_0x7c80('0x3c')][_0x7c80('0x58')](_0x251fc5)[_0x7c80('0x1f')](handleEntityNotFound(_0x3b3f31,null))['then'](function(_0x203063){if(_0x203063){if(!_[_0x7c80('0x7d')](_0x203063['customerAvatar'])){if(fs['existsSync'](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x203063[_0x7c80('0x75')]))&&_0x203063[_0x7c80('0x87')]){_0x3f1bb8=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x203063[_0x7c80('0x75')]);}}return _0x3b3f31['download'](_0x3f1bb8);}})[_0x7c80('0x59')](handleError(_0x3b3f31,null));};exports['getSystemAvatar']=function(_0x4f3fe9,_0x50a5c4,_0x96b8d6){var _0x569420=path['join'](config[_0x7c80('0x79')],_0x7c80('0x88'));var _0x1480ee={'where':{'id':_0x4f3fe9[_0x7c80('0x55')]['id']},'attributes':['id',_0x7c80('0x76')],'raw':!![]};return db[_0x7c80('0x3c')]['find'](_0x1480ee)['then'](handleEntityNotFound(_0x50a5c4,null))[_0x7c80('0x1f')](function(_0x57c3c6){if(_0x57c3c6){if(!_['isNil'](_0x57c3c6[_0x7c80('0x76')])){if(fs['existsSync'](path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x57c3c6[_0x7c80('0x76')]))){_0x569420=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0x84'),_0x57c3c6[_0x7c80('0x76')]);}}return _0x50a5c4[_0x7c80('0x80')](_0x569420);}})[_0x7c80('0x59')](handleError(_0x50a5c4,null));};exports['notify']=function(_0x9fa3d,_0x47cea9,_0xfa5e7b){var _0x4fc0d7=require('user-agent-parser');var _0x2726d2=new _0x4fc0d7();var _0x42ea0b=_0x2726d2[_0x7c80('0x89')](_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0x8b')])[_0x7c80('0x8c')]();var _0x2ebe29={'body':_0x9fa3d['body'],'channel':'chat'};var _0x1272c3=[];var _0x4a8502=[];var _0x1e19b4={};var _0x3da5ba=![];return db[_0x7c80('0x8d')][_0x7c80('0x63')]()['then'](function(_0x111dec){if(!_0x111dec){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x90'));}_0x1272c3=_[_0x7c80('0x91')](_[_0x7c80('0x42')](_0x111dec),['createdAt',_0x7c80('0x92')]);_0x4a8502=_[_0x7c80('0x91')](_['keys'](_0x111dec),[_0x7c80('0x93'),_0x7c80('0x92'),_0x7c80('0x94'),'ListId']);if(_0x9fa3d[_0x7c80('0x62')]['id']){delete _0x9fa3d[_0x7c80('0x62')]['id'];}if(_[_0x7c80('0x7d')](_0x9fa3d['body'][_0x7c80('0x95')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))]('from\x20is\x20mandatory');}if(_[_0x7c80('0x7d')](_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x62')])||_0x9fa3d['body'][_0x7c80('0x62')]===''){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x96'));}if(_[_0x7c80('0x7d')](_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x98')+_0x4a8502);}if(!_[_0x7c80('0x99')](_0x4a8502,_0x9fa3d['body'][_0x7c80('0x97')])){throw new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x9a')+_0x4a8502);}_0x1e19b4[_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')]]=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x95')];})['then'](function(){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x9fa3d['params']['id']},'include':[{'model':db['CmList'],'as':_0x7c80('0x9b'),'include':[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0x9c'),'where':_0x1e19b4,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x7c80('0x9d')],'as':_0x7c80('0x9e')}]});})[_0x7c80('0x1f')](handleEntityNotFound(_0x47cea9,null))['then'](function(_0xc81598){if(_0xc81598&&_0xc81598['List']){_0x2ebe29[_0x7c80('0x9f')]=_0xc81598;_0x2ebe29['applications']=_0xc81598['Applications'];_0x2ebe29['list']=_0xc81598[_0x7c80('0x9b')];_0x2ebe29[_0x7c80('0xa0')]=_[_0x7c80('0xa1')](_0x2ebe29['applications'],[_0x7c80('0xa2')],[_0x7c80('0xa3')]);if(_0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9e')]){delete _0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9e')];}if(_0x2ebe29['account'][_0x7c80('0x9b')]&&_0x2ebe29['account'][_0x7c80('0x9b')]['Contacts'][_0x7c80('0x56')]){return _0x2ebe29[_0x7c80('0x9f')][_0x7c80('0x9b')][_0x7c80('0x9c')][0x0];}var _0x300871=_[_0x7c80('0x18')](_0x9fa3d[_0x7c80('0x62')],{'firstName':_0x9fa3d['body'][_0x7c80('0x95')],'ListId':_0xc81598[_0x7c80('0xa4')]});_0x300871[_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x97')]]=_0x9fa3d[_0x7c80('0x62')]['from'];return db[_0x7c80('0x8d')][_0x7c80('0x5a')](_0x300871,{'fields':_0x1272c3,'raw':!![]});}})[_0x7c80('0x1f')](handleEntityNotFound(_0x47cea9,null))['then'](function(_0x212e0f){_0x2ebe29[_0x7c80('0xa5')]=_0x212e0f;var _0x1039da=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xa6')];if(_0x9fa3d['headers']['cf-connecting-ip']){_0x1039da=_0x9fa3d[_0x7c80('0x8a')]['cf-connecting-ip'];}else if(_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xa7')]){_0x1039da=_['first'](_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xa7')][_0x7c80('0xa8')](','));}if(_0x212e0f){var _0x1297e0={'ContactId':_0x212e0f['id'],'ChatWebsiteId':_0x9fa3d['params']['id'],'from':(_0x212e0f['firstName']||'')+'\x20'+(_0x212e0f[_0x7c80('0xa9')]||''),'customerIp':_0x1039da,'customerPort':_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xaa')]?_0x9fa3d[_0x7c80('0x8a')][_0x7c80('0xaa')]:null,'referer':_0x9fa3d[_0x7c80('0x62')]['referer'],'browserName':_0x42ea0b[_0x7c80('0xab')][_0x7c80('0x38')]&&_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]?util['format']('%s\x20%s',_0x42ea0b['browser'][_0x7c80('0x38')],_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]):'unknown','browserVersion':_0x42ea0b[_0x7c80('0xab')][_0x7c80('0xac')]||_0x7c80('0xad'),'osName':util['format'](_0x7c80('0xae'),_0x42ea0b['os'][_0x7c80('0x38')],_0x42ea0b['os']['version']),'osVersion':_0x42ea0b['os'][_0x7c80('0xac')],'deviceModel':_0x42ea0b[_0x7c80('0xaf')]['model']&&_0x42ea0b[_0x7c80('0xaf')]['vendor']?util['format'](_0x7c80('0xb0'),_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0x45')],_0x42ea0b[_0x7c80('0xaf')]['vendor'],_0x42ea0b['device'][_0x7c80('0x3f')]):null,'deviceVendor':_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0xb1')],'deviceType':_0x42ea0b[_0x7c80('0xaf')][_0x7c80('0x3f')],'formData':JSON['stringify'](_0x9fa3d[_0x7c80('0x62')])};var _0x5d2913={'ChatWebsiteId':_0x9fa3d[_0x7c80('0x55')]['id'],'closed':![]};if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')]){_0x5d2913[_0x7c80('0xb2')]=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')];return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':_0x5d2913})[_0x7c80('0x1f')](function(_0x42acd4){if(_0x42acd4){return[_0x42acd4,![]];}_0x1297e0[_0x7c80('0xb2')]=_0x9fa3d['body'][_0x7c80('0xb2')];_0x1297e0['externalUrl']=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb4')];return db[_0x7c80('0xb3')][_0x7c80('0x5a')](_0x1297e0)[_0x7c80('0x1f')](function(_0x8c1896){return[_0x8c1896,!![]];});});}_0x5d2913[_0x7c80('0xb5')]=_0x212e0f['id'];if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]&&_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]['id']){_0x5d2913['id']=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb6')]['id'];return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':_0x5d2913})[_0x7c80('0x1f')](function(_0x1cf94a){if(_0x1cf94a){return[_0x1cf94a,![]];}return db[_0x7c80('0xb3')]['create'](_0x1297e0)[_0x7c80('0x1f')](function(_0x470353){return[_0x470353,!![]];});});}return db[_0x7c80('0xb3')][_0x7c80('0x5a')](_0x1297e0)['then'](function(_0x46b268){return[_0x46b268,!![]];});}})['spread'](function(_0x4100ec,_0x43df33){if(_0x4100ec){_0x3da5ba=_0x43df33;if(!_0x43df33){var _0x918382={'from':(_0x2ebe29['contact']['firstName']||'')+'\x20'+(_0x2ebe29[_0x7c80('0xa5')][_0x7c80('0xa9')]||'')};if(_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb2')]&&_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb7')]&&_0x9fa3d[_0x7c80('0x62')]['threadId']!=_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xb7')]){_0x918382['threadId']=_0x9fa3d['body'][_0x7c80('0xb7')];}return _0x4100ec['update'](_0x918382);}else{return _0x4100ec;}}})[_0x7c80('0x1f')](function(_0x3c93da){_0x2ebe29[_0x7c80('0xb6')]=_0x3c93da['get']({'plain':!![]});_0x2ebe29[_0x7c80('0xb6')]['created']=_0x3da5ba;if(_0x2ebe29[_0x7c80('0xb6')][_0x7c80('0xb8')]){if(_0x2ebe29[_0x7c80('0x9f')][_0x7c80('0xb9')]){_0x2ebe29['applications'][_0x7c80('0xba')]({'id':0x0,'priority':_0x2ebe29[_0x7c80('0xa0')][_0x7c80('0x56')]+0x1,'app':_0x7c80('0xbb'),'appdata':_0x7c80('0xbc'),'interval':'*,*,*,*'});}}return db[_0x7c80('0xbd')][_0x7c80('0x5a')]({'body':_0x9fa3d[_0x7c80('0x62')][_0x7c80('0x62')],'ChatWebsiteId':_0x9fa3d[_0x7c80('0x55')]['id'],'ChatInteractionId':_0x3c93da['id'],'direction':'in','ContactId':_0x2ebe29[_0x7c80('0xa5')]['id'],'AttachmentId':_0x9fa3d[_0x7c80('0x62')][_0x7c80('0xbe')]});})[_0x7c80('0x1f')](function(_0x126e89){_0x2ebe29[_0x7c80('0x27')]=_0x126e89;if(_0x2ebe29[_0x7c80('0xb6')]['UserId']){return db['User']['find']({'attributes':['id',_0x7c80('0x38')],'where':{'id':_0x2ebe29[_0x7c80('0xb6')][_0x7c80('0xbf')]}})[_0x7c80('0x1f')](function(_0x470e24){if(_0x470e24){_0x2ebe29['applications'][_0x7c80('0xc0')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x470e24[_0x7c80('0x38')]+','+(_0x2ebe29['account'][_0x7c80('0xc1')]||0xa),'interval':'*,*,*,*'});_0x2ebe29[_0x7c80('0xc2')]=!![];}return respondWithRpcPromise(_0x7c80('0xc3'),_0x7c80('0xc4'),_0x2ebe29);});}return respondWithRpcPromise(_0x7c80('0xc3'),'startRouting',_0x2ebe29);})['then'](function(_0x21a9f5){respondWithRpcPromise(_0x7c80('0xc5'),_0x7c80('0xc5'),{'event':_0x7c80('0xc6'),'message':_0x21a9f5},client9002);return _0x21a9f5;})[_0x7c80('0x1f')](respondWithResult(_0x47cea9,null))[_0x7c80('0x59')](handleError(_0x47cea9,null));};exports[_0x7c80('0xc7')]=function(_0x5f020b,_0x37c74d,_0x29f702){var _0x1b6e71,_0x2fcdac,_0x30790c;var _0x268629=[];var _0x7546b8=[];var _0x591d03={};var _0x216f7d=_0x5f020b[_0x7c80('0xc8')]||[];var _0x14890e=[];var _0x2eb302;return db[_0x7c80('0x8d')][_0x7c80('0x63')]()['then'](function(_0x30e6d9){if(!_0x30e6d9){throw new db['Sequelize'][(_0x7c80('0x8f'))](_0x7c80('0x90'));}_0x7546b8=_[_0x7c80('0x91')](_[_0x7c80('0x42')](_0x30e6d9),['createdAt',_0x7c80('0x92')]);_0x268629=_['difference'](_[_0x7c80('0x42')](_0x30e6d9),[_0x7c80('0x93'),_0x7c80('0x92'),_0x7c80('0x94'),_0x7c80('0xa4')]);if(_0x5f020b[_0x7c80('0x62')]['id']){delete _0x5f020b[_0x7c80('0x62')]['id'];}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)['send'](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xc9')));}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x62')])||_0x5f020b['body']['body']===''){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)[_0x7c80('0xca')](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0x96')));}if(_[_0x7c80('0x7d')](_0x5f020b[_0x7c80('0x62')]['mapKeyOffline'])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)[_0x7c80('0xca')](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xcb')+_0x268629));}if(!_[_0x7c80('0x99')](_0x268629,_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')])){throw _0x37c74d[_0x7c80('0x2a')](0x1f4)['send'](new db[(_0x7c80('0x8e'))][(_0x7c80('0x8f'))](_0x7c80('0xcd')+_0x268629));}_0x591d03[_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')]]=_0x5f020b[_0x7c80('0x62')]['from'];})[_0x7c80('0x1f')](function(){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x5f020b[_0x7c80('0x55')]['id']},'include':[{'model':db[_0x7c80('0xce')],'as':_0x7c80('0x9b')},{'model':db[_0x7c80('0xcf')],'as':_0x7c80('0xcf')}]});})[_0x7c80('0x1f')](handleEntityNotFound(_0x37c74d,null))[_0x7c80('0x1f')](function(_0x35087b){if(_0x35087b&&_0x35087b[_0x7c80('0x9b')]){_0x2fcdac=_0x35087b;var _0x283677=_['defaults'](_0x5f020b['body'],{'firstName':_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')],'phone':_0x5f020b['body'][_0x7c80('0x95')],'ListId':_0x35087b[_0x7c80('0xa4')]});_0x283677[_0x5f020b[_0x7c80('0x62')][_0x7c80('0xcc')]]=_0x5f020b[_0x7c80('0x62')][_0x7c80('0x95')];return db[_0x7c80('0x8d')][_0x7c80('0xd0')]({'where':_0x591d03,'defaults':_0x283677});}})['spread'](function(_0x58be84){if(_0x58be84){_0x30790c=_0x58be84;var _0x2ed612=fs[_0x7c80('0xd1')](path['join'](config[_0x7c80('0x79')],_0x7c80('0xd2')),_0x7c80('0xd3'));var _0x5d4eb7=ejs[_0x7c80('0xd4')](_0x2ed612,{'body':_[_0x7c80('0xd5')](_0x5f020b[_0x7c80('0x62')][_0x7c80('0x62')]),'bodyTitle':_0x2fcdac[_0x7c80('0xd6')]});return db['ChatOfflineMessage'][_0x7c80('0x5a')]({'body':_0x5d4eb7,'ContactId':_0x58be84['id'],'ChatWebsiteId':_0x2fcdac['id']});}})[_0x7c80('0x1f')](function(_0x4982d5){_0x2eb302=_0x4982d5;if(_0x216f7d[_0x7c80('0x56')]){var _0x39dec2=_0x216f7d[_0x7c80('0x3b')](function(_0x22183c){return{'name':_0x22183c[_0x7c80('0xd7')],'basename':_0x22183c[_0x7c80('0x72')],'type':_0x22183c[_0x7c80('0xd8')],'ChatOfflineMessageId':_0x4982d5['id']};});_0x14890e=_0x39dec2[_0x7c80('0x3b')](_0x3c60c1=>{var _0x405ace={'filename':_0x3c60c1[_0x7c80('0x38')],'path':path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0xd9'),_0x7c80('0xc8'),_0x7c80('0xda'),'offline-chat',_0x3c60c1[_0x7c80('0xdb')])};return _0x405ace;});if(!_0x2fcdac['openNewInteraction']){return db[_0x7c80('0xdc')][_0x7c80('0xdd')](function(_0x45040d){return db['Attachment']['bulkCreate'](_0x39dec2,{'transaction':_0x45040d});});}}})[_0x7c80('0x1f')](function(){if(_0x2eb302){_0x1b6e71=_0x2eb302;return db[_0x7c80('0xcf')][_0x7c80('0x67')]({'where':{'active':!![]},'include':[{'model':db[_0x7c80('0xde')],'as':_0x7c80('0xdf'),'raw':!![]}]});}})[_0x7c80('0x1f')](function(_0x19bffb){if(_0x19bffb&&_0x19bffb[_0x7c80('0xdf')]&&_0x2fcdac['forwardOffline']&&_0x2fcdac['forwardOfflineAddress']){var _0x46c2f0={'tls':{'rejectUnauthorized':![]}};if(_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe0')]){_0x46c2f0[_0x7c80('0xe0')]=_0x19bffb['Smtp']['service'];}else{_0x46c2f0[_0x7c80('0xe1')]=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe1')];_0x46c2f0['port']=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe2')];_0x46c2f0[_0x7c80('0xe3')]=_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe3')];}if(_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe4')]){_0x46c2f0['auth']={'user':_0x19bffb[_0x7c80('0xdf')]['user'],'pass':_0x19bffb[_0x7c80('0xdf')][_0x7c80('0xe5')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x46c2f0,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x19bffb[_0x7c80('0x38')],_0x19bffb['email']||_0x19bffb['Smtp'][_0x7c80('0x5b')]),'to':_0x2fcdac[_0x7c80('0xe6')],'subject':_0x2fcdac[_0x7c80('0xe7')],'html':_0x1b6e71[_0x7c80('0x62')],'attachments':_0x14890e}},client9003)[_0x7c80('0x1f')](function(){return _0x1b6e71;})[_0x7c80('0x59')](function(_0x41bc97){console[_0x7c80('0x25')](_0x41bc97);});}})[_0x7c80('0x1f')](function(){if(_0x2fcdac&&_0x2fcdac[_0x7c80('0xe8')]&&_0x2fcdac['MailAccountId']){var _0xbaca7b=[];if(_0x216f7d[_0x7c80('0x56')]){_0xbaca7b=_0x216f7d[_0x7c80('0x3b')](function(_0x4dc6f8){return{'name':_0x4dc6f8[_0x7c80('0xd7')],'basename':_0x4dc6f8[_0x7c80('0x72')],'type':_0x4dc6f8['mimetype'],'ChatOfflineMessageId':_0x2eb302['id']};});}var _0x5773c8;if(!_[_0x7c80('0x7d')](_0x2fcdac[_0x7c80('0xe9')])){var _0xb5d76d=_['map'](_0x5f020b['body'],function(_0x4f7b0c){return _0x4f7b0c;});var _0x153f68=_[_0x7c80('0xea')](_0xb5d76d)[0x0];var _0x1d00bf=_['mapValues'](_0x153f68,function(_0x3b5e3f){return _0x3b5e3f;});_0x5773c8=_0x1d00bf[0x1][_0x2fcdac[_0x7c80('0xe9')]];}var _0x2b8f94={'from':_0x30790c[_0x7c80('0xeb')],'firstName':_0x30790c['firstName'],'lastName':_0x30790c['lastName'],'mapKey':'email','message':{'from':_0x30790c[_0x7c80('0xeb')],'to':_0x2fcdac['MailAccount']['email'],'cc':'','subject':_[_0x7c80('0x7d')](_0x5773c8)?_0x2fcdac['offlineMessageSubject']:_0x5773c8,'messageId':'','sentAt':new Date(),'attach':_0xbaca7b[_0x7c80('0x56')],'attachments':_0xbaca7b,'originChannel':_0x7c80('0xec'),'ChatWebsiteId':_0x2fcdac['id'],'ChatOfflineMessageId':_0x1b6e71['id'],'originTo':_0x2fcdac[_0x7c80('0xcf')][_0x7c80('0xeb')]},'body':_0x1b6e71['body']};var _0x1c4011={'account':{'id':_0x2fcdac['MailAccountId']},'body':_0x2b8f94,'log':'NotifyMailAccount'};return respondWithRpcPromise('NotifyMailAccount',_0x7c80('0xed'),_0x1c4011,client9001)[_0x7c80('0x1f')](function(){return _0x1b6e71;})[_0x7c80('0x59')](function(_0xb736fe){console[_0x7c80('0x25')](_0xb736fe);});}return;})[_0x7c80('0x1f')](function(){if(_0x1b6e71){return _0x1b6e71;}})[_0x7c80('0x1f')](respondWithResult(_0x37c74d,null))[_0x7c80('0x59')](function(_0x1d6d5c){console[_0x7c80('0x25')](_0x7c80('0x59'),_0x1d6d5c);for(var _0x43dd94 of _0x216f7d){var _0x3d119d=path[_0x7c80('0x78')](config[_0x7c80('0x79')],_0x7c80('0xd9'),_0x7c80('0xc8'),_0x7c80('0xda'),_0x7c80('0xee'),_0x43dd94[_0x7c80('0x72')]);fs_extra[_0x7c80('0xef')](_0x3d119d)[_0x7c80('0x59')](function(_0x42f702){console['error'](_0x7c80('0xf0'),_0x3d119d,_0x42f702);});}});};exports['addInteraction']=function(_0x5bd3e8,_0x57897e,_0x5f3a74){return db[_0x7c80('0xb3')][_0x7c80('0x58')]({'where':{'id':_0x5bd3e8['params']['id']}})['then'](handleEntityNotFound(_0x57897e,null))['then'](function(_0x30ec33){if(_0x30ec33){return _0x30ec33[_0x7c80('0xf1')](_0x5bd3e8['body'][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0x5bd3e8['body'],[_0x7c80('0x6a'),'id'])||{});}})[_0x7c80('0x1f')](respondWithResult(_0x57897e,null))[_0x7c80('0x59')](handleError(_0x57897e,null));};exports[_0x7c80('0xf3')]=function(_0x16d73a,_0xfe039a,_0x1f1375){var _0xb792ac={'raw':![],'where':{}};var _0x15cf6d={};var _0x26593f={'count':0x0,'rows':[]};return db[_0x7c80('0x3c')]['findOne']({'where':{'id':_0x16d73a[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0xfe039a,null))[_0x7c80('0x1f')](function(_0xc49a1f){if(_0xc49a1f){_0x15cf6d[_0x7c80('0x45')]=_[_0x7c80('0x42')](db[_0x7c80('0xb3')][_0x7c80('0x3d')]);_0x15cf6d[_0x7c80('0x41')]=_['keys'](_0x16d73a[_0x7c80('0x41')]);_0x15cf6d['filters']=_[_0x7c80('0x44')](_0x15cf6d['model'],_0x15cf6d[_0x7c80('0x41')]);_0xb792ac[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x15cf6d[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x16d73a[_0x7c80('0x41')][_0x7c80('0x47')]));_0xb792ac['attributes']=_0xb792ac['attributes'][_0x7c80('0x56')]?_0xb792ac['attributes']:_0x15cf6d[_0x7c80('0x45')];if(!_0x16d73a[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0xb792ac[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x16d73a[_0x7c80('0x41')]['limit']);_0xb792ac['offset']=qs['offset'](_0x16d73a[_0x7c80('0x41')]['offset']);}_0xb792ac[_0x7c80('0x68')]=qs['sort'](_0x16d73a['query'][_0x7c80('0x4a')]);_0xb792ac[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x16d73a[_0x7c80('0x41')],_0x15cf6d[_0x7c80('0x43')]));_0xb792ac[_0x7c80('0x4d')][_0x7c80('0x65')]=_0xc49a1f['id'];if(_0x16d73a['query'][_0x7c80('0x4c')]){_0xb792ac[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0xb792ac[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0xb792ac[_0x7c80('0x46')],function(_0x40f6d5){var _0x540309={};_0x540309[_0x40f6d5]={'$like':'%'+_0x16d73a[_0x7c80('0x41')]['filter']+'%'};return _0x540309;})});}_0xb792ac=_[_0x7c80('0x4e')]({},_0xb792ac,_0x16d73a[_0x7c80('0x57')]);return db[_0x7c80('0xb3')][_0x7c80('0x50')]({'where':_0xb792ac[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x2a70e1){_0x26593f[_0x7c80('0x50')]=_0x2a70e1;if(_0x16d73a[_0x7c80('0x41')][_0x7c80('0x51')]){_0xb792ac['include']=[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0xf4'),'required':![]},{'model':db[_0x7c80('0xf5')],'as':_0x7c80('0xf6'),'attributes':['name',_0x7c80('0xf7'),_0x7c80('0xf8')],'required':![]},{'model':db[_0x7c80('0xf9')],'as':'Tags','attributes':['id',_0x7c80('0x38'),_0x7c80('0xfa')],'where':_0x16d73a[_0x7c80('0x41')][_0x7c80('0xfb')]?{'id':_0x16d73a['query']['tag']}:undefined,'required':_0x16d73a[_0x7c80('0x41')]['tag']?!![]:![]}];}return db['ChatInteraction'][_0x7c80('0x53')](_0xb792ac);})['then'](function(_0x1ee03e){_0x26593f[_0x7c80('0x54')]=_0x1ee03e;return _0x26593f;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0xfe039a,_0xb792ac))[_0x7c80('0x59')](handleError(_0xfe039a,null));};function iftimePromise(_0x5ede0f,_0x4196e7){return respondWithRpcPromise(_0x7c80('0xfc'),_0x7c80('0xfd'),{'command':_0x4196e7[_0x7c80('0xfe')]?util[_0x7c80('0xff')](_0x7c80('0x100'),_0x5ede0f[_0x7c80('0x101')],_0x4196e7[_0x7c80('0xfe')]):util[_0x7c80('0xff')]('iftime\x20%s',_0x5ede0f[_0x7c80('0x101')])},client9002)['then'](function(_0x3be28f){var _0x38f164=_0x3be28f&&_0x3be28f[_0x7c80('0x102')](_0x7c80('0x103'))>=0x0?!![]:![];logger[_0x7c80('0x20')](_0x7c80('0x104'),_0x4196e7['id'],_0x5ede0f['id'],_0x5ede0f[_0x7c80('0x101')],_0x38f164?_0x7c80('0x105'):_0x7c80('0x106'),_0x4196e7[_0x7c80('0xfe')]?_0x4196e7[_0x7c80('0xfe')]:_0x7c80('0x107'));return _0x38f164;})['catch'](function(_0x6ac16){logger['error'](_0x7c80('0x104'),_0x4196e7['id'],_0x5ede0f['id'],_0x5ede0f[_0x7c80('0x101')],util[_0x7c80('0x108')](_0x6ac16,{'showHidden':![],'depth':null}),_0x4196e7['timezone']?_0x4196e7[_0x7c80('0xfe')]:_0x7c80('0x107'));return![];});}exports[_0x7c80('0xfd')]=function(_0x582a72,_0x243dd9,_0x528b89){var _0x29838e=0x0;var _0x49e673=0x0;var _0xc489e9=![];var _0x1b0f1e;var _0x3b7b00;return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x582a72[_0x7c80('0x55')]['id']},'include':[{'model':db['Interval'],'as':_0x7c80('0x109'),'include':[{'model':db[_0x7c80('0x109')],'as':_0x7c80('0x10a'),'attributes':['id',_0x7c80('0x101')],'raw':!![]}]}]})[_0x7c80('0x1f')](handleEntityNotFound(_0x243dd9,null))['then'](function(_0x5320f5){if(_0x5320f5){_0x1b0f1e=_0x5320f5;return _0x5320f5[_0x7c80('0x10b')]({'raw':!![]});}})[_0x7c80('0x1f')](function(_0x1f63df){if(_0x1b0f1e){if(_0x1f63df){_0x3b7b00=_0x1f63df;}}return require(_0x7c80('0x15'))[_0x7c80('0x7b')]();})[_0x7c80('0x1f')](function(_0x3f9e67){if(_0x3f9e67){_0x49e673=_0x3f9e67['virtual'];_0xc489e9=_0x3f9e67['custom'];}})[_0x7c80('0x1f')](function(){return db[_0x7c80('0xb3')][_0x7c80('0x50')]({'where':{'closed':![]}});})[_0x7c80('0x1f')](function(_0x9447b8){_0x29838e=_0x9447b8;if(_0x49e673&&_0x9447b8>_0x49e673){return db[_0x7c80('0x10c')][_0x7c80('0x67')]({'where':{'id':0x1}})[_0x7c80('0x1f')](function(_0x521101){if(_0x521101){_0x521101['increment'](_0x7c80('0x10d'));}});}})[_0x7c80('0x1f')](function(){if(_0x1b0f1e[_0x7c80('0x109')]&&_0x1b0f1e[_0x7c80('0x109')][_0x7c80('0x10a')]){var _0x274562=[];for(var _0x162b0a=0x0;_0x162b0a<_0x1b0f1e[_0x7c80('0x109')][_0x7c80('0x10a')][_0x7c80('0x56')];_0x162b0a++){var _0x5ce8dd=_0x1b0f1e['Interval'][_0x7c80('0x10a')][_0x162b0a][_0x7c80('0x5c')]({'plain':!![]});_0x274562[_0x7c80('0xba')](iftimePromise(_0x5ce8dd,_0x1b0f1e));}return BPromise['all'](_0x274562)[_0x7c80('0x1f')](function(_0x1c8c80){return _[_0x7c80('0x10e')](_0x1c8c80);});}else{return!![];}})[_0x7c80('0x1f')](function(_0x1a5cb7){var _0xb2bca8=fs[_0x7c80('0xd1')](path[_0x7c80('0x78')](config[_0x7c80('0x79')],'server/files/chat/iframe.ejs'),_0x7c80('0xd3'));var _0xda73e7={'remote':_0x1b0f1e[_0x7c80('0x10f')],'query':querystring[_0x7c80('0x24')](_[_0x7c80('0x4e')](_0x1b0f1e[_0x7c80('0x5c')]({'plain':!![]}),{'customerIp':_0x582a72[_0x7c80('0x8a')][_0x7c80('0xa7')]||_0x582a72[_0x7c80('0x8a')][_0x7c80('0x110')]||_0x582a72[_0x7c80('0x111')][_0x7c80('0x112')]||_0x582a72['ip'],'referer':_0x582a72[_0x7c80('0x8a')]['referer'],'openedInteractions':_0x29838e,'maxInteractions':_0x49e673,'virtual':_0xc489e9['virtual'],'online':_0x1a5cb7,'custom':_0xc489e9}))[_0x7c80('0x113')](/'/g,'\x5c\x27')};_0x243dd9[_0x7c80('0xca')](ejs[_0x7c80('0xd4')](Mustache['render'](_0xb2bca8,_0xda73e7),{'proactiveActions':_0x3b7b00,'alignment':_0x1b0f1e[_0x7c80('0x114')],'verticalAlignment':_0x1b0f1e[_0x7c80('0x115')],'div_color':_0x1b0f1e['color'],'text_color':_0x1b0f1e[_0x7c80('0x116')],'button_color':_0x1b0f1e[_0x7c80('0x117')],'background_color':_0x1b0f1e[_0x7c80('0x118')]}));})['catch'](handleError(_0x243dd9,null));};exports[_0x7c80('0x119')]=function(_0x2f670c,_0x4c8384,_0xd33686){return db[_0x7c80('0x3c')]['findOne']({'where':{'id':_0x2f670c['params']['id']}})['then'](handleEntityNotFound(_0x4c8384,null))[_0x7c80('0x1f')](function(_0x2e4ab8){if(_0x2e4ab8){return db['sequelize']['transaction'](function(_0x361030){return db[_0x7c80('0x9d')][_0x7c80('0x35')]({'where':{'ChatWebsiteId':_0x2f670c['params']['id']},'transaction':_0x361030})['then'](function(_0x506d5d){var _0x39006a=_['map'](_0x2f670c[_0x7c80('0x62')],function(_0x5ebca5){_0x5ebca5[_0x7c80('0x65')]=_0x2f670c[_0x7c80('0x55')]['id'];return _0x5ebca5;});return db[_0x7c80('0x9d')][_0x7c80('0x11a')](_0x39006a,{'transaction':_0x361030});});})[_0x7c80('0x1f')](function(){return db['ChatApplication'][_0x7c80('0x11b')]({'where':{'ChatWebsiteId':_0x2f670c[_0x7c80('0x55')]['id']},'order':_0x7c80('0xa2')});});}})[_0x7c80('0x1f')](respondWithResult(_0x4c8384,null))[_0x7c80('0x59')](handleError(_0x4c8384,null));};exports['getApplications']=function(_0x3f17d9,_0x1337f2,_0x2a71ba){var _0x206a5d={};var _0x4a3d90={};var _0x35c7dc;var _0x5edb34;return db['ChatWebsite']['findOne']({'where':{'id':_0x3f17d9[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x1337f2,null))[_0x7c80('0x1f')](function(_0x3440df){if(_0x3440df){_0x35c7dc=_0x3440df;_0x4a3d90[_0x7c80('0x45')]=_['keys'](db[_0x7c80('0x9d')][_0x7c80('0x3d')]);_0x4a3d90['query']=_[_0x7c80('0x42')](_0x3f17d9[_0x7c80('0x41')]);_0x4a3d90['filters']=_[_0x7c80('0x44')](_0x4a3d90[_0x7c80('0x45')],_0x4a3d90['query']);_0x206a5d[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x4a3d90[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x47')]));_0x206a5d[_0x7c80('0x46')]=_0x206a5d[_0x7c80('0x46')]['length']?_0x206a5d[_0x7c80('0x46')]:_0x4a3d90[_0x7c80('0x45')];_0x206a5d['order']=qs[_0x7c80('0x4a')](_0x3f17d9['query']['sort']);_0x206a5d['where']=qs[_0x7c80('0x43')](_['pick'](_0x3f17d9['query'],_0x4a3d90['filters']));if(_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x4c')]){_0x206a5d[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x206a5d[_0x7c80('0x4d')],{'$or':_['map'](_0x206a5d[_0x7c80('0x46')],function(_0x1a1d31){var _0x51f840={};_0x51f840[_0x1a1d31]={'$like':'%'+_0x3f17d9[_0x7c80('0x41')]['filter']+'%'};return _0x51f840;})});}_0x206a5d=_[_0x7c80('0x4e')]({},_0x206a5d,_0x3f17d9[_0x7c80('0x57')]);return _0x35c7dc[_0x7c80('0x11c')](_0x206a5d);}})[_0x7c80('0x1f')](function(_0x572bed){if(_0x572bed){_0x5edb34=_0x572bed[_0x7c80('0x56')];if(!_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x206a5d[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x2f')]);_0x206a5d[_0x7c80('0x2d')]=qs[_0x7c80('0x2d')](_0x3f17d9[_0x7c80('0x41')][_0x7c80('0x2d')]);}return _0x35c7dc[_0x7c80('0x11c')](_0x206a5d);}})[_0x7c80('0x1f')](function(_0x187f9c){if(_0x187f9c){return _0x187f9c?{'count':_0x5edb34,'rows':_0x187f9c}:null;}})[_0x7c80('0x1f')](respondWithResult(_0x1337f2,null))[_0x7c80('0x59')](handleError(_0x1337f2,null));};exports['addProactiveActions']=function(_0xb959e4,_0x4ed04b,_0x518807){return db['chatProactiveAction']['find']({'where':{'id':_0xb959e4[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x4ed04b,null))['then'](function(_0x4157c6){if(_0x4157c6){return _0x4157c6[_0x7c80('0x11d')](_0xb959e4[_0x7c80('0x62')][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0xb959e4[_0x7c80('0x62')],['ids','id'])||{});}})['then'](respondWithResult(_0x4ed04b,null))[_0x7c80('0x59')](handleError(_0x4ed04b,null));};exports[_0x7c80('0x10b')]=function(_0x699d3d,_0x6d634b,_0x4261e5){var _0x2c3117={};var _0x4f49de={};var _0x203b58;var _0x542b13;return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x699d3d[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x6d634b,null))[_0x7c80('0x1f')](function(_0x5429bd){if(_0x5429bd){_0x203b58=_0x5429bd;_0x4f49de[_0x7c80('0x45')]=_[_0x7c80('0x42')](db['ChatProactiveAction'][_0x7c80('0x3d')]);_0x4f49de[_0x7c80('0x41')]=_['keys'](_0x699d3d[_0x7c80('0x41')]);_0x4f49de[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x4f49de[_0x7c80('0x45')],_0x4f49de[_0x7c80('0x41')]);_0x2c3117[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x4f49de[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x699d3d[_0x7c80('0x41')][_0x7c80('0x47')]));_0x2c3117[_0x7c80('0x46')]=_0x2c3117[_0x7c80('0x46')]['length']?_0x2c3117[_0x7c80('0x46')]:_0x4f49de[_0x7c80('0x45')];_0x2c3117[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x699d3d[_0x7c80('0x41')]['sort']);_0x2c3117['where']=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x699d3d[_0x7c80('0x41')],_0x4f49de['filters']));if(_0x699d3d[_0x7c80('0x41')]['filter']){_0x2c3117[_0x7c80('0x4d')]=_[_0x7c80('0x4e')](_0x2c3117[_0x7c80('0x4d')],{'$or':_['map'](_0x2c3117[_0x7c80('0x46')],function(_0x1b596f){var _0x526a26={};_0x526a26[_0x1b596f]={'$like':'%'+_0x699d3d[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x526a26;})});}_0x2c3117=_[_0x7c80('0x4e')]({},_0x2c3117,_0x699d3d['options']);return _0x203b58[_0x7c80('0x10b')](_0x2c3117);}})[_0x7c80('0x1f')](function(_0x157018){if(_0x157018){_0x542b13=_0x157018[_0x7c80('0x56')];if(!_0x699d3d[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x2c3117[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x699d3d['query'][_0x7c80('0x2f')]);_0x2c3117[_0x7c80('0x2d')]=qs['offset'](_0x699d3d['query'][_0x7c80('0x2d')]);}return _0x203b58[_0x7c80('0x10b')](_0x2c3117);}})[_0x7c80('0x1f')](function(_0x4dcc7f){if(_0x4dcc7f){return _0x4dcc7f?{'count':_0x542b13,'rows':_0x4dcc7f}:null;}})['then'](respondWithResult(_0x6d634b,null))[_0x7c80('0x59')](handleError(_0x6d634b,null));};exports[_0x7c80('0x11e')]=function(_0x46ee1c,_0x34736b,_0x38857f){var _0x435c23=_0x46ee1c['query']['online']===_0x7c80('0x11f')?'offlineForm':_0x7c80('0x120');return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'attributes':['id',_0x435c23],'where':{'id':_0x46ee1c[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x34736b,null))[_0x7c80('0x1f')](function(_0x8de693){if(_0x8de693){var _0x3e99bb=_0x8de693[_0x435c23];var _0x25875d=_0x3e99bb&&_0x3e99bb[_0x7c80('0x121')]?_0x3e99bb[_0x7c80('0x121')]:[];_0x34736b[_0x7c80('0xca')]({'fromKey':_[_0x7c80('0x7d')](_0x3e99bb[_0x7c80('0x122')])?undefined:_0x3e99bb['fromKey'],'count':_0x25875d[_0x7c80('0x56')],'rows':_0x25875d});}})['catch'](handleError(_0x34736b,null));};exports[_0x7c80('0x123')]=function(_0x45333b,_0x11a34d,_0xa9f706){var _0x5b1c84={'raw':![],'where':{}};var _0x5c1c8a={};var _0x183723={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x7c80('0x67')]({'where':{'id':_0x45333b[_0x7c80('0x55')]['id']}})['then'](handleEntityNotFound(_0x11a34d,null))[_0x7c80('0x1f')](function(_0x468af6){if(_0x468af6){_0x5c1c8a['model']=_[_0x7c80('0x42')](db[_0x7c80('0x124')][_0x7c80('0x3d')]);_0x5c1c8a['query']=_[_0x7c80('0x42')](_0x45333b[_0x7c80('0x41')]);_0x5c1c8a[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x5c1c8a['model'],_0x5c1c8a['query']);_0x5b1c84[_0x7c80('0x46')]=_['intersection'](_0x5c1c8a[_0x7c80('0x45')],qs['fields'](_0x45333b['query'][_0x7c80('0x47')]));_0x5b1c84['attributes']=_0x5b1c84[_0x7c80('0x46')][_0x7c80('0x56')]?_0x5b1c84[_0x7c80('0x46')]:_0x5c1c8a[_0x7c80('0x45')];if(!_0x45333b['query'][_0x7c80('0x48')](_0x7c80('0x49'))){_0x5b1c84['limit']=qs['limit'](_0x45333b[_0x7c80('0x41')]['limit']);_0x5b1c84[_0x7c80('0x2d')]=qs[_0x7c80('0x2d')](_0x45333b[_0x7c80('0x41')][_0x7c80('0x2d')]);}_0x5b1c84[_0x7c80('0x68')]=qs['sort'](_0x45333b[_0x7c80('0x41')]['sort']);_0x5b1c84[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x45333b[_0x7c80('0x41')],_0x5c1c8a[_0x7c80('0x43')]));_0x5b1c84[_0x7c80('0x4d')]['ChatWebsiteId']=_0x468af6['id'];if(_0x45333b['query'][_0x7c80('0x4c')]){_0x5b1c84['where']=_[_0x7c80('0x4e')](_0x5b1c84[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x5b1c84['attributes'],function(_0x190c0d){var _0x2d032d={};_0x2d032d[_0x190c0d]={'$like':'%'+_0x45333b[_0x7c80('0x41')]['filter']+'%'};return _0x2d032d;})});}_0x5b1c84=_[_0x7c80('0x4e')]({},_0x5b1c84,_0x45333b[_0x7c80('0x57')]);return db[_0x7c80('0x124')][_0x7c80('0x50')]({'where':_0x5b1c84[_0x7c80('0x4d')]})[_0x7c80('0x1f')](function(_0x5d5211){_0x183723[_0x7c80('0x50')]=_0x5d5211;if(_0x45333b[_0x7c80('0x41')][_0x7c80('0x51')]){_0x5b1c84[_0x7c80('0x52')]=[{'all':!![]}];}else{_0x5b1c84['include']=[{'model':db[_0x7c80('0x8d')],'as':_0x7c80('0xf4'),'required':![]},{'model':db[_0x7c80('0x125')],'as':_0x7c80('0x126'),'required':![]}];}return db[_0x7c80('0x124')][_0x7c80('0x53')](_0x5b1c84);})['then'](function(_0x1bbf8d){_0x183723[_0x7c80('0x54')]=_0x1bbf8d;return _0x183723;});}})[_0x7c80('0x1f')](respondWithFilteredResult(_0x11a34d,_0x5b1c84))[_0x7c80('0x59')](handleError(_0x11a34d,null));};exports['addAgents']=function(_0x3213ee,_0x385e5c,_0x140a4c){return db[_0x7c80('0x3c')][_0x7c80('0x58')]({'where':{'id':_0x3213ee[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x385e5c,null))['then'](function(_0xc66bde){if(_0xc66bde){return _0xc66bde[_0x7c80('0x127')](_0x3213ee[_0x7c80('0x62')][_0x7c80('0x6a')],_[_0x7c80('0xf2')](_0x3213ee[_0x7c80('0x62')],[_0x7c80('0x6a'),'id'])||{})[_0x7c80('0x128')](function(_0x1d25f8){for(var _0x2f8ecc=0x0;_0x2f8ecc<_0x3213ee[_0x7c80('0x62')][_0x7c80('0x6a')]['length'];_0x2f8ecc+=0x1){socket[_0x7c80('0x129')]('userChatWebsite:save',{'UserId':Number(_0x3213ee[_0x7c80('0x62')]['ids'][_0x2f8ecc]),'ChatWebsiteId':Number(_0x3213ee[_0x7c80('0x55')]['id'])});}return _0x1d25f8;});}})[_0x7c80('0x1f')](respondWithResult(_0x385e5c,null))[_0x7c80('0x59')](handleError(_0x385e5c,null));};exports['removeAgents']=function(_0x3f76dd,_0x39ffb1,_0x11ef50){return db['ChatWebsite'][_0x7c80('0x58')]({'where':{'id':_0x3f76dd['params']['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x39ffb1,null))[_0x7c80('0x1f')](function(_0x42f1b0){if(_0x42f1b0){return _0x42f1b0['removeAgents'](_0x3f76dd['query'][_0x7c80('0x6a')])['then'](function(){if(_['isArray'](_0x3f76dd['query'][_0x7c80('0x6a')])){for(var _0x27e3c6=0x0;_0x27e3c6<_0x3f76dd[_0x7c80('0x41')][_0x7c80('0x6a')]['length'];_0x27e3c6+=0x1){socket[_0x7c80('0x129')](_0x7c80('0x12a'),{'UserId':Number(_0x3f76dd[_0x7c80('0x41')][_0x7c80('0x6a')][_0x27e3c6]),'ChatWebsiteId':Number(_0x3f76dd[_0x7c80('0x55')]['id'])});}}else{socket[_0x7c80('0x129')]('userChatWebsite:remove',{'UserId':Number(_0x3f76dd[_0x7c80('0x41')]['ids']),'ChatWebsiteId':Number(_0x3f76dd[_0x7c80('0x55')]['id'])});}});}})[_0x7c80('0x1f')](respondWithStatusCode(_0x39ffb1,null))[_0x7c80('0x59')](handleError(_0x39ffb1,null));};exports['getAgents']=function(_0x5628a7,_0x517210,_0x5bf37f){var _0x404415={};var _0x37eec1={};var _0x333316;var _0x20b209;return db[_0x7c80('0x3c')][_0x7c80('0x67')]({'where':{'id':_0x5628a7[_0x7c80('0x55')]['id']}})[_0x7c80('0x1f')](handleEntityNotFound(_0x517210,null))[_0x7c80('0x1f')](function(_0xb92a68){if(_0xb92a68){_0x333316=_0xb92a68;_0x37eec1[_0x7c80('0x45')]=_['keys'](db['User'][_0x7c80('0x3d')]);_0x37eec1[_0x7c80('0x41')]=_[_0x7c80('0x42')](_0x5628a7[_0x7c80('0x41')]);_0x37eec1[_0x7c80('0x43')]=_[_0x7c80('0x44')](_0x37eec1[_0x7c80('0x45')],_0x37eec1[_0x7c80('0x41')]);_0x404415[_0x7c80('0x46')]=_[_0x7c80('0x44')](_0x37eec1[_0x7c80('0x45')],qs[_0x7c80('0x47')](_0x5628a7[_0x7c80('0x41')][_0x7c80('0x47')]));_0x404415[_0x7c80('0x46')]=_0x404415[_0x7c80('0x46')][_0x7c80('0x56')]?_0x404415[_0x7c80('0x46')]:_0x37eec1[_0x7c80('0x45')];_0x404415[_0x7c80('0x68')]=qs[_0x7c80('0x4a')](_0x5628a7[_0x7c80('0x41')][_0x7c80('0x4a')]);_0x404415[_0x7c80('0x4d')]=qs[_0x7c80('0x43')](_[_0x7c80('0x4b')](_0x5628a7[_0x7c80('0x41')],_0x37eec1[_0x7c80('0x43')]));if(_0x5628a7['query'][_0x7c80('0x4c')]){_0x404415[_0x7c80('0x4d')]=_['merge'](_0x404415[_0x7c80('0x4d')],{'$or':_[_0x7c80('0x3b')](_0x404415[_0x7c80('0x46')],function(_0x13ae85){var _0x377bc={};_0x377bc[_0x13ae85]={'$like':'%'+_0x5628a7[_0x7c80('0x41')][_0x7c80('0x4c')]+'%'};return _0x377bc;})});}_0x404415=_[_0x7c80('0x4e')]({},_0x404415,_0x5628a7[_0x7c80('0x57')]);return _0x333316[_0x7c80('0x12b')](_0x404415);}})['then'](function(_0x495924){if(_0x495924){_0x20b209=_0x495924['length'];if(!_0x5628a7[_0x7c80('0x41')][_0x7c80('0x48')](_0x7c80('0x49'))){_0x404415[_0x7c80('0x2f')]=qs[_0x7c80('0x2f')](_0x5628a7['query'][_0x7c80('0x2f')]);_0x404415['offset']=qs[_0x7c80('0x2d')](_0x5628a7['query'][_0x7c80('0x2d')]);}return _0x333316['getAgents'](_0x404415);}})[_0x7c80('0x1f')](function(_0x2c3e73){if(_0x2c3e73){return _0x2c3e73?{'count':_0x20b209,'rows':_0x2c3e73}:null;}})[_0x7c80('0x1f')](respondWithResult(_0x517210,null))['catch'](handleError(_0x517210,null));};
\ No newline at end of file
+var _0x0107=['register','jayson/promise','client','http','info','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','status','end','json','undefined','limit','offset','count','set','Content-Range','then','destroy','get','ChatWebsites','UserProfileResource','sendStatus','name','send','Pause','mandatoryDispositionPause','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','ChatWebsite','findAll','rows','show','params','keys','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','Disposition','create','getDispositions','findOne','ChatWebsiteId','ids','addAnswer','CannedAnswer','getAnswers','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','join','root','sitepic','../../config/license/util','getLicense','isNil','existsSync','server/files/images/logos/','download','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','notify','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','ChatApplication','Applications','account','list','applications','orderBy','priority','asc','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','threadId','externalUrl','ContactId','interaction','ChatInteraction','spread','messageId','created','push','unmanaged','*,*,*,*','UserId','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','offline','files','from\x20is\x20mandatory','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','mapKeyOffline','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','MailAccountId','subjectOffline','toPairsIn','email','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','custom','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','remote','stringify','connection','virtual','replace','textColor','color_button','backgroundColor','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','omit','getFields','false','offlineForm','onlineForm','items','fromKey','Contact','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','User','getAgents','bluebird','mustache','util','path','ejs','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','./chatWebsite.socket'];(function(_0x13841,_0x2e0b39){var _0x294848=function(_0x28751d){while(--_0x28751d){_0x13841['push'](_0x13841['shift']());}};_0x294848(++_0x2e0b39);}(_0x0107,0x111));var _0x7010=function(_0x30b0d8,_0x57470c){_0x30b0d8=_0x30b0d8-0x0;var _0x459c09=_0x0107[_0x30b0d8];return _0x459c09;};'use strict';var BPromise=require(_0x7010('0x0'));var Mustache=require(_0x7010('0x1'));var util=require(_0x7010('0x2'));var path=require(_0x7010('0x3'));var ejs=require(_0x7010('0x4'));var fs=require('fs');var fs_extra=require(_0x7010('0x5'));var _=require(_0x7010('0x6'));var querystring=require(_0x7010('0x7'));var Redis=require(_0x7010('0x8'));var qs=require(_0x7010('0x9'));var logger=require(_0x7010('0xa'))(_0x7010('0xb'));var config=require(_0x7010('0xc'));var db=require(_0x7010('0xd'))['db'];config[_0x7010('0xe')]=_[_0x7010('0xf')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7010('0xe')]));require(_0x7010('0x10'))[_0x7010('0x11')](socket);var jayson=require(_0x7010('0x12'));var client=jayson[_0x7010('0x13')][_0x7010('0x14')]({'port':0x232c});var client9002=jayson[_0x7010('0x13')][_0x7010('0x14')]({'port':0x232a});var client9003=jayson[_0x7010('0x13')]['http']({'port':0x232b});var client9001=jayson['client'][_0x7010('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x2c4404,_0x47e34e,_0x8e82fc,_0x92a965){return new BPromise(function(_0x3da1c8,_0x3fa796){var _0x127b5b=_0x92a965||client;return _0x127b5b['request'](_0x2c4404,_0x8e82fc)['then'](function(_0x4a5860){logger[_0x7010('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x47e34e,_0x7010('0x16'));logger['debug'](_0x7010('0x17'),_0x47e34e,'request\x20sent',JSON['stringify'](_0x4a5860));if(_0x4a5860[_0x7010('0x18')]){if(_0x4a5860['error'][_0x7010('0x19')]===0x1f4){logger[_0x7010('0x18')](_0x7010('0x1a'),_0x47e34e,_0x4a5860[_0x7010('0x18')]['message']);return _0x3fa796(_0x4a5860['error'][_0x7010('0x1b')]);}logger[_0x7010('0x18')](_0x7010('0x1a'),_0x47e34e,_0x4a5860['error'][_0x7010('0x1b')]);return _0x3da1c8(_0x4a5860[_0x7010('0x18')][_0x7010('0x1b')]);}else{logger[_0x7010('0x15')](_0x7010('0x1a'),_0x47e34e,_0x7010('0x16'));_0x3da1c8(_0x4a5860[_0x7010('0x1c')][_0x7010('0x1b')]);}})[_0x7010('0x1d')](function(_0x53a1cf){logger['error'](_0x7010('0x1a'),_0x47e34e,_0x53a1cf);_0x3fa796(_0x53a1cf);});});}function respondWithStatusCode(_0x318da0,_0x4db771){_0x4db771=_0x4db771||0xcc;return function(_0x3ed6f3){if(_0x3ed6f3){return _0x318da0['sendStatus'](_0x4db771);}return _0x318da0[_0x7010('0x1e')](_0x4db771)[_0x7010('0x1f')]();};}function respondWithResult(_0x43f00c,_0x5775ee){_0x5775ee=_0x5775ee||0xc8;return function(_0x72f848){if(_0x72f848){return _0x43f00c[_0x7010('0x1e')](_0x5775ee)[_0x7010('0x20')](_0x72f848);}};}function respondWithFilteredResult(_0x39a503,_0x384f8c){return function(_0x443149){if(_0x443149){var _0x1c7924=typeof _0x384f8c['offset']===_0x7010('0x21')&&typeof _0x384f8c[_0x7010('0x22')]===_0x7010('0x21');var _0x306589=_0x443149['count'];var _0x1dbd10=_0x1c7924?0x0:_0x384f8c[_0x7010('0x23')];var _0x524a17=_0x1c7924?_0x443149[_0x7010('0x24')]:_0x384f8c[_0x7010('0x23')]+_0x384f8c['limit'];var _0x377db7;if(_0x524a17>=_0x306589){_0x524a17=_0x306589;_0x377db7=0xc8;}else{_0x377db7=0xce;}_0x39a503[_0x7010('0x1e')](_0x377db7);return _0x39a503[_0x7010('0x25')](_0x7010('0x26'),_0x1dbd10+'-'+_0x524a17+'/'+_0x306589)[_0x7010('0x20')](_0x443149);}return null;};}function saveUpdates(_0x35f2f0){return function(_0x112672){if(_0x112672){return _0x112672['update'](_0x35f2f0)[_0x7010('0x27')](function(_0xb2f1f9){return _0xb2f1f9;});}return null;};}function removeEntity(_0x4b6891){return function(_0x70e5f4){if(_0x70e5f4){return _0x70e5f4[_0x7010('0x28')]()['then'](function(){var _0x46acbf=_0x70e5f4[_0x7010('0x29')]({'plain':!![]});var _0x48dbdc=_0x7010('0x2a');return db[_0x7010('0x2b')][_0x7010('0x28')]({'where':{'type':_0x48dbdc,'resourceId':_0x46acbf['id']}})[_0x7010('0x27')](function(){return _0x70e5f4;});})[_0x7010('0x27')](function(){_0x4b6891[_0x7010('0x1e')](0xcc)[_0x7010('0x1f')]();});}};}function handleEntityNotFound(_0x46808d){return function(_0x163abd){if(!_0x163abd){_0x46808d[_0x7010('0x2c')](0x194);}return _0x163abd;};}function handleError(_0x1d0e67,_0x227ea5){_0x227ea5=_0x227ea5||0x1f4;return function(_0x3d9908){logger[_0x7010('0x18')](_0x3d9908['stack']);if(_0x3d9908[_0x7010('0x2d')]){delete _0x3d9908['name'];}_0x1d0e67[_0x7010('0x1e')](_0x227ea5)[_0x7010('0x2e')](_0x3d9908);};}exports['index']=function(_0x495fb5,_0x5d91ca){var _0x59ed45={'include':[{'model':db[_0x7010('0x2f')],'as':_0x7010('0x30')}]},_0x1e40f2={},_0x192b5d={'count':0x0,'rows':[]};var _0x3c7f40=_['map'](db['ChatWebsite']['rawAttributes'],function(_0x448223){return{'name':_0x448223[_0x7010('0x31')],'type':_0x448223[_0x7010('0x32')][_0x7010('0x33')]};});_0x1e40f2[_0x7010('0x34')]=_[_0x7010('0x35')](_0x3c7f40,'name');_0x1e40f2[_0x7010('0x36')]=_['keys'](_0x495fb5['query']);_0x1e40f2[_0x7010('0x37')]=_[_0x7010('0x38')](_0x1e40f2[_0x7010('0x34')],_0x1e40f2[_0x7010('0x36')]);_0x59ed45[_0x7010('0x39')]=_['intersection'](_0x1e40f2[_0x7010('0x34')],qs['fields'](_0x495fb5['query'][_0x7010('0x3a')]));_0x59ed45[_0x7010('0x39')]=_0x59ed45[_0x7010('0x39')][_0x7010('0x3b')]?_0x59ed45['attributes']:_0x1e40f2[_0x7010('0x34')];if(!_0x495fb5[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x59ed45[_0x7010('0x22')]=qs['limit'](_0x495fb5[_0x7010('0x36')][_0x7010('0x22')]);_0x59ed45['offset']=qs[_0x7010('0x23')](_0x495fb5['query'][_0x7010('0x23')]);}_0x59ed45[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0x495fb5['query'][_0x7010('0x3f')]);_0x59ed45[_0x7010('0x40')]=qs[_0x7010('0x37')](_[_0x7010('0x41')](_0x495fb5[_0x7010('0x36')],_0x1e40f2[_0x7010('0x37')]),_0x3c7f40);if(_0x495fb5[_0x7010('0x36')][_0x7010('0x42')]){_0x59ed45[_0x7010('0x40')]=_[_0x7010('0x43')](_0x59ed45['where'],{'$or':_[_0x7010('0x35')](_0x3c7f40,function(_0x25dfb0){if(_0x25dfb0[_0x7010('0x32')]!=='VIRTUAL'){var _0x2e6ec0={};_0x2e6ec0[_0x25dfb0[_0x7010('0x2d')]]={'$like':'%'+_0x495fb5[_0x7010('0x36')]['filter']+'%'};return _0x2e6ec0;}})});}_0x59ed45=_[_0x7010('0x43')]({},_0x59ed45,_0x495fb5[_0x7010('0x44')]);var _0x5466ec={'where':_0x59ed45[_0x7010('0x40')]};return db['ChatWebsite'][_0x7010('0x24')](_0x5466ec)['then'](function(_0x10fd84){_0x192b5d[_0x7010('0x24')]=_0x10fd84;if(_0x495fb5[_0x7010('0x36')][_0x7010('0x45')]){_0x59ed45[_0x7010('0x46')]=[{'all':!![]}];}return db[_0x7010('0x47')][_0x7010('0x48')](_0x59ed45);})[_0x7010('0x27')](function(_0x56ec0f){_0x192b5d[_0x7010('0x49')]=_0x56ec0f;return _0x192b5d;})[_0x7010('0x27')](respondWithFilteredResult(_0x5d91ca,_0x59ed45))['catch'](handleError(_0x5d91ca,null));};exports[_0x7010('0x4a')]=function(_0x8cfd30,_0x7eb9f6){var _0x2d5694={'raw':![],'where':{'id':_0x8cfd30[_0x7010('0x4b')]['id']},'include':[{'model':db[_0x7010('0x2f')],'as':_0x7010('0x30')}]},_0x3f4bae={};_0x3f4bae[_0x7010('0x34')]=_[_0x7010('0x4c')](db['ChatWebsite'][_0x7010('0x4d')]);_0x3f4bae['query']=_['keys'](_0x8cfd30['query']);_0x3f4bae['filters']=_[_0x7010('0x38')](_0x3f4bae['model'],_0x3f4bae['query']);_0x2d5694[_0x7010('0x39')]=_[_0x7010('0x38')](_0x3f4bae[_0x7010('0x34')],qs[_0x7010('0x3a')](_0x8cfd30[_0x7010('0x36')][_0x7010('0x3a')]));_0x2d5694[_0x7010('0x39')]=_0x2d5694[_0x7010('0x39')][_0x7010('0x3b')]?_0x2d5694[_0x7010('0x39')]:_0x3f4bae[_0x7010('0x34')];if(_0x8cfd30[_0x7010('0x36')][_0x7010('0x45')]){_0x2d5694['include']=[{'all':!![]}];}_0x2d5694=_['merge']({},_0x2d5694,_0x8cfd30[_0x7010('0x44')]);return db[_0x7010('0x47')][_0x7010('0x4e')](_0x2d5694)[_0x7010('0x27')](handleEntityNotFound(_0x7eb9f6,null))['then'](respondWithResult(_0x7eb9f6,null))[_0x7010('0x1d')](handleError(_0x7eb9f6,null));};exports['create']=function(_0x28dfa3,_0x3432db){return db[_0x7010('0x47')]['create'](_0x28dfa3[_0x7010('0x4f')],{})[_0x7010('0x27')](function(_0x48368a){var _0xacc60a=_0x28dfa3[_0x7010('0x50')][_0x7010('0x29')]({'plain':!![]});if(!_0xacc60a)throw new Error(_0x7010('0x51'));if(_0xacc60a[_0x7010('0x52')]===_0x7010('0x50')){var _0x490e5d=_0x48368a[_0x7010('0x29')]({'plain':!![]});var _0x581808=_0x7010('0x2a');return db[_0x7010('0x53')][_0x7010('0x4e')]({'where':{'name':_0x581808,'userProfileId':_0xacc60a[_0x7010('0x54')]},'raw':!![]})[_0x7010('0x27')](function(_0x574490){if(_0x574490&&_0x574490[_0x7010('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x490e5d['name'],'resourceId':_0x490e5d['id'],'type':_0x574490[_0x7010('0x2d')],'sectionId':_0x574490['id']},{})[_0x7010('0x27')](function(){return _0x48368a;});}else{return _0x48368a;}})[_0x7010('0x1d')](function(_0x5afc1e){logger[_0x7010('0x18')](_0x7010('0x56'),_0x5afc1e);throw _0x5afc1e;});}return _0x48368a;})[_0x7010('0x27')](respondWithResult(_0x3432db,0xc9))[_0x7010('0x1d')](handleError(_0x3432db,null));};exports[_0x7010('0x57')]=function(_0xb12aaa,_0xf2ee64){if(_0xb12aaa[_0x7010('0x4f')]['id']){delete _0xb12aaa[_0x7010('0x4f')]['id'];}return db[_0x7010('0x47')]['find']({'where':{'id':_0xb12aaa[_0x7010('0x4b')]['id']},'include':[{'model':db[_0x7010('0x2f')],'as':_0x7010('0x30')}]})[_0x7010('0x27')](handleEntityNotFound(_0xf2ee64,null))[_0x7010('0x27')](saveUpdates(_0xb12aaa[_0x7010('0x4f')],null))[_0x7010('0x27')](respondWithResult(_0xf2ee64,null))[_0x7010('0x1d')](handleError(_0xf2ee64,null));};exports[_0x7010('0x28')]=function(_0x1beb67,_0x2b9a13){return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x1beb67[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x2b9a13,null))[_0x7010('0x27')](removeEntity(_0x2b9a13,null))['catch'](handleError(_0x2b9a13,null));};exports[_0x7010('0x58')]=function(_0x50368f,_0x1d3f19){return db[_0x7010('0x47')][_0x7010('0x58')]()['then'](respondWithResult(_0x1d3f19,null))[_0x7010('0x1d')](handleError(_0x1d3f19,null));};exports[_0x7010('0x59')]=function(_0x4db55e,_0x4215fc){if(_0x4db55e['body']['id']){delete _0x4db55e['body']['id'];}return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x4db55e[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x4215fc,null))['then'](function(_0x3ba0de){if(_0x3ba0de){_0x4db55e[_0x7010('0x4f')]['ChatWebsiteId']=_0x3ba0de['id'];return db[_0x7010('0x5a')][_0x7010('0x5b')](_0x4db55e[_0x7010('0x4f')]);}})['then'](respondWithResult(_0x4215fc,null))['catch'](handleError(_0x4215fc,null));};exports[_0x7010('0x5c')]=function(_0x1b193c,_0x3e1607){var _0x29a74b={'raw':![],'where':{}};var _0x480f59={};var _0x4931ee={'count':0x0,'rows':[]};return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x1b193c[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x3e1607,null))['then'](function(_0x59d5ac){if(_0x59d5ac){_0x480f59['model']=_[_0x7010('0x4c')](db[_0x7010('0x5a')][_0x7010('0x4d')]);_0x480f59['query']=_['keys'](_0x1b193c[_0x7010('0x36')]);_0x480f59[_0x7010('0x37')]=_[_0x7010('0x38')](_0x480f59[_0x7010('0x34')],_0x480f59[_0x7010('0x36')]);_0x29a74b['attributes']=_[_0x7010('0x38')](_0x480f59[_0x7010('0x34')],qs[_0x7010('0x3a')](_0x1b193c[_0x7010('0x36')][_0x7010('0x3a')]));_0x29a74b['attributes']=_0x29a74b[_0x7010('0x39')][_0x7010('0x3b')]?_0x29a74b[_0x7010('0x39')]:_0x480f59['model'];if(!_0x1b193c[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x29a74b[_0x7010('0x22')]=qs[_0x7010('0x22')](_0x1b193c[_0x7010('0x36')][_0x7010('0x22')]);_0x29a74b['offset']=qs[_0x7010('0x23')](_0x1b193c[_0x7010('0x36')][_0x7010('0x23')]);}_0x29a74b[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0x1b193c[_0x7010('0x36')][_0x7010('0x3f')]);_0x29a74b[_0x7010('0x40')]=qs[_0x7010('0x37')](_[_0x7010('0x41')](_0x1b193c[_0x7010('0x36')],_0x480f59[_0x7010('0x37')]));_0x29a74b[_0x7010('0x40')][_0x7010('0x5e')]=_0x59d5ac['id'];if(_0x1b193c[_0x7010('0x36')][_0x7010('0x42')]){_0x29a74b[_0x7010('0x40')]=_['merge'](_0x29a74b[_0x7010('0x40')],{'$or':_[_0x7010('0x35')](_0x29a74b[_0x7010('0x39')],function(_0x370ff8){var _0x5c99aa={};_0x5c99aa[_0x370ff8]={'$like':'%'+_0x1b193c['query'][_0x7010('0x42')]+'%'};return _0x5c99aa;})});}_0x29a74b=_[_0x7010('0x43')]({},_0x29a74b,_0x1b193c[_0x7010('0x44')]);return db[_0x7010('0x5a')][_0x7010('0x24')]({'where':_0x29a74b['where']})[_0x7010('0x27')](function(_0x420578){_0x4931ee[_0x7010('0x24')]=_0x420578;if(_0x1b193c[_0x7010('0x36')][_0x7010('0x45')]){_0x29a74b[_0x7010('0x46')]=[{'all':!![]}];}return db[_0x7010('0x5a')][_0x7010('0x48')](_0x29a74b);})[_0x7010('0x27')](function(_0x4ec80d){_0x4931ee[_0x7010('0x49')]=_0x4ec80d;return _0x4931ee;});}})[_0x7010('0x27')](respondWithFilteredResult(_0x3e1607,_0x29a74b))[_0x7010('0x1d')](handleError(_0x3e1607,null));};exports['removeDispositions']=function(_0x301da0,_0x49199d){return db['ChatWebsite'][_0x7010('0x4e')]({'where':{'id':_0x301da0['params']['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x49199d,null))[_0x7010('0x27')](function(_0xf5efd1){if(_0xf5efd1){return _0xf5efd1['removeDispositions'](_0x301da0[_0x7010('0x36')][_0x7010('0x5f')]);}})[_0x7010('0x27')](respondWithStatusCode(_0x49199d,null))[_0x7010('0x1d')](handleError(_0x49199d,null));};exports[_0x7010('0x60')]=function(_0x15a402,_0x39aae1){if(_0x15a402[_0x7010('0x4f')]['id']){delete _0x15a402['body']['id'];}return db[_0x7010('0x47')]['find']({'where':{'id':_0x15a402[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x39aae1,null))[_0x7010('0x27')](function(_0x37e149){if(_0x37e149){_0x15a402['body']['ChatWebsiteId']=_0x37e149['id'];return db[_0x7010('0x61')][_0x7010('0x5b')](_0x15a402[_0x7010('0x4f')]);}})[_0x7010('0x27')](respondWithResult(_0x39aae1,null))[_0x7010('0x1d')](handleError(_0x39aae1,null));};exports[_0x7010('0x62')]=function(_0x36c183,_0x12dd73){var _0x15d4b6={'raw':![],'where':{}};var _0x107266={};var _0x53c079={'count':0x0,'rows':[]};return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x36c183[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x12dd73,null))['then'](function(_0x370ecf){if(_0x370ecf){_0x107266[_0x7010('0x34')]=_[_0x7010('0x4c')](db['CannedAnswer'][_0x7010('0x4d')]);_0x107266['query']=_[_0x7010('0x4c')](_0x36c183[_0x7010('0x36')]);_0x107266['filters']=_['intersection'](_0x107266[_0x7010('0x34')],_0x107266[_0x7010('0x36')]);_0x15d4b6[_0x7010('0x39')]=_['intersection'](_0x107266[_0x7010('0x34')],qs[_0x7010('0x3a')](_0x36c183['query']['fields']));_0x15d4b6[_0x7010('0x39')]=_0x15d4b6[_0x7010('0x39')][_0x7010('0x3b')]?_0x15d4b6['attributes']:_0x107266[_0x7010('0x34')];if(!_0x36c183['query']['hasOwnProperty'](_0x7010('0x3d'))){_0x15d4b6['limit']=qs[_0x7010('0x22')](_0x36c183[_0x7010('0x36')][_0x7010('0x22')]);_0x15d4b6['offset']=qs[_0x7010('0x23')](_0x36c183[_0x7010('0x36')][_0x7010('0x23')]);}_0x15d4b6[_0x7010('0x3e')]=qs['sort'](_0x36c183[_0x7010('0x36')][_0x7010('0x3f')]);_0x15d4b6[_0x7010('0x40')]=qs[_0x7010('0x37')](_['pick'](_0x36c183[_0x7010('0x36')],_0x107266[_0x7010('0x37')]));_0x15d4b6[_0x7010('0x40')][_0x7010('0x5e')]=_0x370ecf['id'];if(_0x36c183[_0x7010('0x36')]['filter']){_0x15d4b6[_0x7010('0x40')]=_[_0x7010('0x43')](_0x15d4b6[_0x7010('0x40')],{'$or':_['map'](_0x15d4b6[_0x7010('0x39')],function(_0x512305){var _0x534a0d={};_0x534a0d[_0x512305]={'$like':'%'+_0x36c183['query'][_0x7010('0x42')]+'%'};return _0x534a0d;})});}_0x15d4b6=_[_0x7010('0x43')]({},_0x15d4b6,_0x36c183[_0x7010('0x44')]);return db[_0x7010('0x61')][_0x7010('0x24')]({'where':_0x15d4b6[_0x7010('0x40')]})[_0x7010('0x27')](function(_0x1184d2){_0x53c079[_0x7010('0x24')]=_0x1184d2;if(_0x36c183['query']['includeAll']){_0x15d4b6[_0x7010('0x46')]=[{'all':!![]}];}return db[_0x7010('0x61')]['findAll'](_0x15d4b6);})['then'](function(_0x1be4e2){_0x53c079[_0x7010('0x49')]=_0x1be4e2;return _0x53c079;});}})[_0x7010('0x27')](respondWithFilteredResult(_0x12dd73,_0x15d4b6))[_0x7010('0x1d')](handleError(_0x12dd73,null));};exports['removeAnswers']=function(_0x57dacd,_0x23eb3c){return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x57dacd['params']['id']}})['then'](handleEntityNotFound(_0x23eb3c,null))['then'](function(_0x11c8a3){if(_0x11c8a3){return _0x11c8a3['removeAnswers'](_0x57dacd[_0x7010('0x36')][_0x7010('0x5f')]);}})['then'](respondWithStatusCode(_0x23eb3c,null))['catch'](handleError(_0x23eb3c,null));};exports['addLogo']=function(_0x544b6d,_0x358f37){_0x544b6d['body']['sitepic']=_0x544b6d[_0x7010('0x63')][_0x7010('0x64')];return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x544b6d[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x358f37,null))[_0x7010('0x27')](saveUpdates(_0x544b6d[_0x7010('0x4f')],null))[_0x7010('0x27')](respondWithResult(_0x358f37,null))[_0x7010('0x1d')](handleError(_0x358f37,null));};exports[_0x7010('0x65')]=function(_0x564568,_0x5f3405){_0x564568[_0x7010('0x4f')][_0x7010('0x66')]=_0x564568[_0x7010('0x63')][_0x7010('0x64')];return db['ChatWebsite'][_0x7010('0x4e')]({'where':{'id':_0x564568[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x5f3405,null))['then'](saveUpdates(_0x564568['body'],null))[_0x7010('0x27')](respondWithResult(_0x5f3405,null))[_0x7010('0x1d')](handleError(_0x5f3405,null));};exports[_0x7010('0x67')]=function(_0x100c31,_0x5805d1){_0x100c31['body'][_0x7010('0x68')]=_0x100c31[_0x7010('0x63')][_0x7010('0x64')];return db['ChatWebsite']['find']({'where':{'id':_0x100c31[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x5805d1,null))['then'](saveUpdates(_0x100c31[_0x7010('0x4f')],null))['then'](respondWithResult(_0x5805d1,null))['catch'](handleError(_0x5805d1,null));};exports['addSystemAvatar']=function(_0x59f0a6,_0x3f9c15){_0x59f0a6[_0x7010('0x4f')][_0x7010('0x69')]=_0x59f0a6[_0x7010('0x63')][_0x7010('0x64')];return db[_0x7010('0x47')]['find']({'where':{'id':_0x59f0a6[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x3f9c15,null))[_0x7010('0x27')](saveUpdates(_0x59f0a6[_0x7010('0x4f')],null))[_0x7010('0x27')](respondWithResult(_0x3f9c15,null))[_0x7010('0x1d')](handleError(_0x3f9c15,null));};exports['getLogo']=function(_0x1bc56c,_0x52c87b){var _0x48304c=path[_0x7010('0x6a')](config[_0x7010('0x6b')],'server/files/images/logos/default_logo.svg');var _0x2d01e2={'where':{'id':_0x1bc56c[_0x7010('0x4b')]['id']},'attributes':['id',_0x7010('0x6c')],'raw':!![]};var _0x3e6365=![];return require(_0x7010('0x6d'))[_0x7010('0x6e')]()['then'](function(_0x14aad5){if(_0x14aad5){_0x3e6365=_0x14aad5['custom'];}})['then'](function(){return db['ChatWebsite'][_0x7010('0x4e')](_0x2d01e2);})[_0x7010('0x27')](handleEntityNotFound(_0x52c87b,null))[_0x7010('0x27')](function(_0x5b42a3){if(_0x5b42a3){if(!_[_0x7010('0x6f')](_0x5b42a3[_0x7010('0x6c')])){if(fs[_0x7010('0x70')](path['join'](config[_0x7010('0x6b')],_0x7010('0x71'),_0x5b42a3[_0x7010('0x6c')]))&&_0x3e6365){_0x48304c=path[_0x7010('0x6a')](config['root'],_0x7010('0x71'),_0x5b42a3[_0x7010('0x6c')]);}}return _0x52c87b[_0x7010('0x72')](_0x48304c);}})[_0x7010('0x1d')](handleError(_0x52c87b,null));};exports['getAvatar']=function(_0x4a32d0,_0x345d2d){var _0x334d33=path[_0x7010('0x6a')](config['root'],'server/files/images/avatars/default_avatar.png');var _0x24d4ae={'where':{'id':_0x4a32d0[_0x7010('0x4b')]['id']},'attributes':['id',_0x7010('0x66')],'raw':!![]};return db['ChatWebsite'][_0x7010('0x4e')](_0x24d4ae)[_0x7010('0x27')](handleEntityNotFound(_0x345d2d,null))['then'](function(_0x396b03){if(_0x396b03){if(!_['isNil'](_0x396b03['agentAvatar'])){if(fs['existsSync'](path['join'](config[_0x7010('0x6b')],'server/files/images/avatars/',_0x396b03[_0x7010('0x66')]))){_0x334d33=path[_0x7010('0x6a')](config[_0x7010('0x6b')],_0x7010('0x73'),_0x396b03[_0x7010('0x66')]);}}return _0x345d2d['download'](_0x334d33);}})[_0x7010('0x1d')](handleError(_0x345d2d,null));};exports[_0x7010('0x74')]=function(_0xb8fc98,_0x136f33){var _0x5d1b9b=path[_0x7010('0x6a')](config['root'],_0x7010('0x75'));var _0x503467={'where':{'id':_0xb8fc98[_0x7010('0x4b')]['id']},'attributes':['id',_0x7010('0x68'),'showCustomerAvatar'],'raw':!![]};return db[_0x7010('0x47')][_0x7010('0x4e')](_0x503467)['then'](handleEntityNotFound(_0x136f33,null))[_0x7010('0x27')](function(_0x5ec536){if(_0x5ec536){if(!_['isNil'](_0x5ec536['customerAvatar'])){if(fs[_0x7010('0x70')](path['join'](config[_0x7010('0x6b')],_0x7010('0x73'),_0x5ec536[_0x7010('0x68')]))&&_0x5ec536['showCustomerAvatar']){_0x5d1b9b=path['join'](config[_0x7010('0x6b')],_0x7010('0x73'),_0x5ec536['customerAvatar']);}}return _0x136f33[_0x7010('0x72')](_0x5d1b9b);}})[_0x7010('0x1d')](handleError(_0x136f33,null));};exports['getSystemAvatar']=function(_0x4feb5c,_0x2fc78a){var _0x5466b4=path[_0x7010('0x6a')](config[_0x7010('0x6b')],'server/files/images/avatars/system_avatar.png');var _0x418f30={'where':{'id':_0x4feb5c[_0x7010('0x4b')]['id']},'attributes':['id',_0x7010('0x69')],'raw':!![]};return db[_0x7010('0x47')][_0x7010('0x4e')](_0x418f30)[_0x7010('0x27')](handleEntityNotFound(_0x2fc78a,null))['then'](function(_0x2a84ad){if(_0x2a84ad){if(!_['isNil'](_0x2a84ad['systemAvatar'])){if(fs[_0x7010('0x70')](path[_0x7010('0x6a')](config['root'],_0x7010('0x73'),_0x2a84ad[_0x7010('0x69')]))){_0x5466b4=path['join'](config['root'],_0x7010('0x73'),_0x2a84ad[_0x7010('0x69')]);}}return _0x2fc78a[_0x7010('0x72')](_0x5466b4);}})[_0x7010('0x1d')](handleError(_0x2fc78a,null));};exports[_0x7010('0x76')]=function(_0x5436b6,_0x48b356){var _0x1c68b6=require('user-agent-parser');var _0x1a5553=new _0x1c68b6();var _0x3b7fcc=_0x1a5553[_0x7010('0x77')](_0x5436b6[_0x7010('0x78')][_0x7010('0x79')])[_0x7010('0x7a')]();var _0x1b9214={'body':_0x5436b6[_0x7010('0x4f')],'channel':_0x7010('0x7b')};var _0x3e98cd=[];var _0x4f5274=[];var _0x4eb8de={};var _0x1f2e95=![];return db[_0x7010('0x7c')]['describe']()[_0x7010('0x27')](function(_0x21b83f){if(!_0x21b83f){throw new db[(_0x7010('0x7d'))]['ValidationError'](_0x7010('0x7e'));}_0x3e98cd=_[_0x7010('0x7f')](_['keys'](_0x21b83f),[_0x7010('0x80'),_0x7010('0x81')]);_0x4f5274=_['difference'](_['keys'](_0x21b83f),[_0x7010('0x80'),_0x7010('0x81'),_0x7010('0x82'),_0x7010('0x83')]);if(_0x5436b6[_0x7010('0x4f')]['id']){delete _0x5436b6[_0x7010('0x4f')]['id'];}if(_[_0x7010('0x6f')](_0x5436b6[_0x7010('0x4f')][_0x7010('0x84')])){throw new db[(_0x7010('0x7d'))][(_0x7010('0x85'))]('from\x20is\x20mandatory');}if(_[_0x7010('0x6f')](_0x5436b6[_0x7010('0x4f')][_0x7010('0x4f')])||_0x5436b6[_0x7010('0x4f')][_0x7010('0x4f')]===''){throw new db[(_0x7010('0x7d'))][(_0x7010('0x85'))](_0x7010('0x86'));}if(_[_0x7010('0x6f')](_0x5436b6[_0x7010('0x4f')][_0x7010('0x87')])){throw new db['Sequelize'][(_0x7010('0x85'))](_0x7010('0x88')+_0x4f5274);}if(!_['includes'](_0x4f5274,_0x5436b6[_0x7010('0x4f')][_0x7010('0x87')])){throw new db[(_0x7010('0x7d'))]['ValidationError'](_0x7010('0x89')+_0x4f5274);}_0x4eb8de[_0x5436b6[_0x7010('0x4f')][_0x7010('0x87')]]=_0x5436b6[_0x7010('0x4f')]['from'];})[_0x7010('0x27')](function(){return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x5436b6['params']['id']},'include':[{'model':db[_0x7010('0x8a')],'as':_0x7010('0x8b'),'include':[{'model':db[_0x7010('0x7c')],'as':_0x7010('0x8c'),'where':_0x4eb8de,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x7010('0x8d')],'as':_0x7010('0x8e')}]});})[_0x7010('0x27')](handleEntityNotFound(_0x48b356,null))[_0x7010('0x27')](function(_0xc87135){if(_0xc87135&&_0xc87135[_0x7010('0x8b')]){_0x1b9214[_0x7010('0x8f')]=_0xc87135;_0x1b9214['applications']=_0xc87135['Applications'];_0x1b9214[_0x7010('0x90')]=_0xc87135['List'];_0x1b9214[_0x7010('0x91')]=_[_0x7010('0x92')](_0x1b9214[_0x7010('0x91')],[_0x7010('0x93')],[_0x7010('0x94')]);if(_0x1b9214['account'][_0x7010('0x8e')]){delete _0x1b9214[_0x7010('0x8f')]['Applications'];}if(_0x1b9214['account']['List']&&_0x1b9214['account'][_0x7010('0x8b')][_0x7010('0x8c')][_0x7010('0x3b')]){return _0x1b9214['account'][_0x7010('0x8b')][_0x7010('0x8c')][0x0];}var _0x4c6598=_[_0x7010('0xf')](_0x5436b6['body'],{'firstName':_0x5436b6[_0x7010('0x4f')][_0x7010('0x84')],'ListId':_0xc87135['ListId']});_0x4c6598[_0x5436b6[_0x7010('0x4f')][_0x7010('0x87')]]=_0x5436b6['body']['from'];return db['CmContact']['create'](_0x4c6598,{'fields':_0x3e98cd,'raw':!![]});}})['then'](handleEntityNotFound(_0x48b356,null))['then'](function(_0x24bb75){_0x1b9214[_0x7010('0x95')]=_0x24bb75;var _0x18cecc=_0x5436b6['body'][_0x7010('0x96')];if(_0x5436b6[_0x7010('0x78')][_0x7010('0x97')]){_0x18cecc=_0x5436b6['headers']['cf-connecting-ip'];}else if(_0x5436b6[_0x7010('0x78')][_0x7010('0x98')]){_0x18cecc=_[_0x7010('0x99')](_0x5436b6['headers'][_0x7010('0x98')][_0x7010('0x9a')](','));}if(_0x24bb75){var _0x203b43={'ContactId':_0x24bb75['id'],'ChatWebsiteId':_0x5436b6[_0x7010('0x4b')]['id'],'from':(_0x24bb75[_0x7010('0x9b')]||'')+'\x20'+(_0x24bb75[_0x7010('0x9c')]||''),'customerIp':_0x18cecc,'customerPort':_0x5436b6[_0x7010('0x78')]['x-real-port']?_0x5436b6[_0x7010('0x78')][_0x7010('0x9d')]:null,'referer':_0x5436b6[_0x7010('0x4f')][_0x7010('0x9e')],'browserName':_0x3b7fcc[_0x7010('0x9f')][_0x7010('0x2d')]&&_0x3b7fcc[_0x7010('0x9f')][_0x7010('0xa0')]?util[_0x7010('0xa1')](_0x7010('0xa2'),_0x3b7fcc[_0x7010('0x9f')][_0x7010('0x2d')],_0x3b7fcc[_0x7010('0x9f')][_0x7010('0xa0')]):_0x7010('0xa3'),'browserVersion':_0x3b7fcc[_0x7010('0x9f')][_0x7010('0xa0')]||'unknown','osName':util[_0x7010('0xa1')]('%s\x20%s',_0x3b7fcc['os']['name'],_0x3b7fcc['os'][_0x7010('0xa0')]),'osVersion':_0x3b7fcc['os']['version'],'deviceModel':_0x3b7fcc['device']['model']&&_0x3b7fcc[_0x7010('0xa4')][_0x7010('0xa5')]?util['format']('%s\x20%s\x20%s',_0x3b7fcc['device'][_0x7010('0x34')],_0x3b7fcc[_0x7010('0xa4')]['vendor'],_0x3b7fcc[_0x7010('0xa4')][_0x7010('0x32')]):null,'deviceVendor':_0x3b7fcc[_0x7010('0xa4')][_0x7010('0xa5')],'deviceType':_0x3b7fcc[_0x7010('0xa4')]['type'],'formData':JSON['stringify'](_0x5436b6[_0x7010('0x4f')])};var _0x11ffdf={'ChatWebsiteId':_0x5436b6[_0x7010('0x4b')]['id'],'closed':![]};if(_0x5436b6[_0x7010('0x4f')][_0x7010('0xa6')]){_0x11ffdf[_0x7010('0xa6')]=_0x5436b6[_0x7010('0x4f')][_0x7010('0xa6')];return db['ChatInteraction'][_0x7010('0x4e')]({'where':_0x11ffdf})[_0x7010('0x27')](function(_0x1acbf0){if(_0x1acbf0){return[_0x1acbf0,![]];}_0x203b43[_0x7010('0xa6')]=_0x5436b6[_0x7010('0x4f')][_0x7010('0xa6')];_0x203b43[_0x7010('0xa7')]=_0x5436b6[_0x7010('0x4f')][_0x7010('0xa7')];return db['ChatInteraction'][_0x7010('0x5b')](_0x203b43)[_0x7010('0x27')](function(_0x2dfe22){return[_0x2dfe22,!![]];});});}_0x11ffdf[_0x7010('0xa8')]=_0x24bb75['id'];if(_0x5436b6[_0x7010('0x4f')][_0x7010('0xa9')]&&_0x5436b6['body'][_0x7010('0xa9')]['id']){_0x11ffdf['id']=_0x5436b6[_0x7010('0x4f')][_0x7010('0xa9')]['id'];return db['ChatInteraction']['find']({'where':_0x11ffdf})[_0x7010('0x27')](function(_0x4c70c7){if(_0x4c70c7){return[_0x4c70c7,![]];}return db[_0x7010('0xaa')][_0x7010('0x5b')](_0x203b43)[_0x7010('0x27')](function(_0x5e2f2d){return[_0x5e2f2d,!![]];});});}return db[_0x7010('0xaa')][_0x7010('0x5b')](_0x203b43)['then'](function(_0x137492){return[_0x137492,!![]];});}})[_0x7010('0xab')](function(_0x503c66,_0x5628d6){if(_0x503c66){_0x1f2e95=_0x5628d6;if(!_0x5628d6){var _0x426daa={'from':(_0x1b9214[_0x7010('0x95')][_0x7010('0x9b')]||'')+'\x20'+(_0x1b9214[_0x7010('0x95')]['lastName']||'')};if(_0x5436b6['body'][_0x7010('0xa6')]&&_0x5436b6[_0x7010('0x4f')][_0x7010('0xac')]&&_0x5436b6[_0x7010('0x4f')]['threadId']!=_0x5436b6[_0x7010('0x4f')][_0x7010('0xac')]){_0x426daa['threadId']=_0x5436b6['body']['messageId'];}return _0x503c66[_0x7010('0x57')](_0x426daa);}else{return _0x503c66;}}})[_0x7010('0x27')](function(_0x1418dd){_0x1b9214['interaction']=_0x1418dd[_0x7010('0x29')]({'plain':!![]});_0x1b9214[_0x7010('0xa9')][_0x7010('0xad')]=_0x1f2e95;if(_0x1b9214[_0x7010('0xa9')][_0x7010('0xad')]){if(_0x1b9214[_0x7010('0x8f')]['autoclose']){_0x1b9214[_0x7010('0x91')][_0x7010('0xae')]({'id':0x0,'priority':_0x1b9214[_0x7010('0x91')][_0x7010('0x3b')]+0x1,'app':'close','appdata':_0x7010('0xaf'),'interval':_0x7010('0xb0')});}}return db['ChatMessage'][_0x7010('0x5b')]({'body':_0x5436b6[_0x7010('0x4f')][_0x7010('0x4f')],'ChatWebsiteId':_0x5436b6[_0x7010('0x4b')]['id'],'ChatInteractionId':_0x1418dd['id'],'direction':'in','ContactId':_0x1b9214[_0x7010('0x95')]['id'],'AttachmentId':_0x5436b6[_0x7010('0x4f')]['AttachmentId']});})['then'](function(_0x24fd5d){_0x1b9214[_0x7010('0x1b')]=_0x24fd5d;if(_0x1b9214[_0x7010('0xa9')][_0x7010('0xb1')]){return db['User'][_0x7010('0x4e')]({'attributes':['id',_0x7010('0x2d')],'where':{'id':_0x1b9214[_0x7010('0xa9')][_0x7010('0xb1')]}})['then'](function(_0x5c4d04){if(_0x5c4d04){_0x1b9214[_0x7010('0x91')]['unshift']({'id':0x0,'priority':0x0,'app':_0x7010('0xb2'),'appdata':_0x5c4d04['name']+','+(_0x1b9214[_0x7010('0x8f')][_0x7010('0xb3')]||0xa),'interval':'*,*,*,*'});_0x1b9214['forcedOwnership']=!![];}return respondWithRpcPromise(_0x7010('0xb4'),'startRouting',_0x1b9214);});}return respondWithRpcPromise(_0x7010('0xb4'),_0x7010('0xb5'),_0x1b9214);})[_0x7010('0x27')](function(_0x3c7b7f){respondWithRpcPromise(_0x7010('0xb6'),_0x7010('0xb6'),{'event':_0x7010('0x76'),'message':_0x3c7b7f},client9002);return _0x3c7b7f;})[_0x7010('0x27')](respondWithResult(_0x48b356,null))[_0x7010('0x1d')](handleError(_0x48b356,null));};exports[_0x7010('0xb7')]=function(_0x55c8c4,_0x12d207){var _0x3f09ce,_0x5f571e,_0x4ecf85;var _0x48c789=[];var _0x24d191={};var _0x34dadf=_0x55c8c4[_0x7010('0xb8')]||[];var _0x315a3b=[];var _0x246893;return db['CmContact'][_0x7010('0x58')]()['then'](function(_0x45b640){if(!_0x45b640){throw new db[(_0x7010('0x7d'))]['ValidationError'](_0x7010('0x7e'));}_0x48c789=_[_0x7010('0x7f')](_['keys'](_0x45b640),['createdAt','updatedAt',_0x7010('0x82'),'ListId']);if(_0x55c8c4['body']['id']){delete _0x55c8c4['body']['id'];}if(_[_0x7010('0x6f')](_0x55c8c4[_0x7010('0x4f')][_0x7010('0x84')])){throw _0x12d207[_0x7010('0x1e')](0x1f4)['send'](new db[(_0x7010('0x7d'))][(_0x7010('0x85'))](_0x7010('0xb9')));}if(_[_0x7010('0x6f')](_0x55c8c4['body'][_0x7010('0x4f')])||_0x55c8c4[_0x7010('0x4f')][_0x7010('0x4f')]===''){throw _0x12d207[_0x7010('0x1e')](0x1f4)['send'](new db[(_0x7010('0x7d'))]['ValidationError'](_0x7010('0x86')));}if(_[_0x7010('0x6f')](_0x55c8c4['body']['mapKeyOffline'])){throw _0x12d207['status'](0x1f4)['send'](new db[(_0x7010('0x7d'))][(_0x7010('0x85'))](_0x7010('0xba')+_0x48c789));}if(!_['includes'](_0x48c789,_0x55c8c4['body']['mapKeyOffline'])){throw _0x12d207['status'](0x1f4)[_0x7010('0x2e')](new db['Sequelize'][(_0x7010('0x85'))](_0x7010('0xbb')+_0x48c789));}_0x24d191[_0x55c8c4[_0x7010('0x4f')]['mapKeyOffline']]=_0x55c8c4[_0x7010('0x4f')][_0x7010('0x84')];})[_0x7010('0x27')](function(){return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x55c8c4[_0x7010('0x4b')]['id']},'include':[{'model':db[_0x7010('0x8a')],'as':_0x7010('0x8b')},{'model':db[_0x7010('0xbc')],'as':_0x7010('0xbc')}]});})[_0x7010('0x27')](handleEntityNotFound(_0x12d207,null))['then'](function(_0x5b43bc){if(_0x5b43bc&&_0x5b43bc['List']){_0x5f571e=_0x5b43bc;var _0x30af95=_[_0x7010('0xf')](_0x55c8c4[_0x7010('0x4f')],{'firstName':_0x55c8c4['body'][_0x7010('0x84')],'phone':_0x55c8c4[_0x7010('0x4f')][_0x7010('0x84')],'ListId':_0x5b43bc['ListId']});_0x30af95[_0x55c8c4[_0x7010('0x4f')][_0x7010('0xbd')]]=_0x55c8c4[_0x7010('0x4f')][_0x7010('0x84')];return db[_0x7010('0x7c')][_0x7010('0xbe')]({'where':_0x24d191,'defaults':_0x30af95});}})[_0x7010('0xab')](function(_0x3be37f){if(_0x3be37f){_0x4ecf85=_0x3be37f;var _0x537fef=fs[_0x7010('0xbf')](path[_0x7010('0x6a')](config[_0x7010('0x6b')],_0x7010('0xc0')),'utf8');var _0x2a1d59=ejs[_0x7010('0xc1')](_0x537fef,{'body':_[_0x7010('0xc2')](_0x55c8c4[_0x7010('0x4f')][_0x7010('0x4f')]),'bodyTitle':_0x5f571e[_0x7010('0xc3')]});return db[_0x7010('0xc4')]['create']({'body':_0x2a1d59,'ContactId':_0x3be37f['id'],'ChatWebsiteId':_0x5f571e['id']});}})[_0x7010('0x27')](function(_0x20df8b){_0x246893=_0x20df8b;if(_0x34dadf[_0x7010('0x3b')]){var _0x29fe66=_0x34dadf[_0x7010('0x35')](function(_0x519ed1){return{'name':_0x519ed1[_0x7010('0xc5')],'basename':_0x519ed1['filename'],'type':_0x519ed1[_0x7010('0xc6')],'ChatOfflineMessageId':_0x20df8b['id']};});_0x315a3b=_0x29fe66[_0x7010('0x35')](_0x7b608d=>{var _0x54ab6f={'filename':_0x7b608d[_0x7010('0x2d')],'path':path[_0x7010('0x6a')](config['root'],_0x7010('0xc7'),'files',_0x7010('0xc8'),_0x7010('0xc9'),_0x7b608d[_0x7010('0xca')])};return _0x54ab6f;});if(!_0x5f571e[_0x7010('0xcb')]){return db[_0x7010('0xcc')][_0x7010('0xcd')](function(_0x4744ce){return db[_0x7010('0xce')]['bulkCreate'](_0x29fe66,{'transaction':_0x4744ce});});}}})[_0x7010('0x27')](function(){if(_0x246893){_0x3f09ce=_0x246893;return db[_0x7010('0xbc')][_0x7010('0x5d')]({'where':{'active':!![]},'include':[{'model':db[_0x7010('0xcf')],'as':_0x7010('0xd0'),'raw':!![]}]});}})[_0x7010('0x27')](function(_0x33e0f0){if(_0x33e0f0&&_0x33e0f0[_0x7010('0xd0')]&&_0x5f571e[_0x7010('0xd1')]&&_0x5f571e[_0x7010('0xd2')]){var _0x3faf24={'tls':{'rejectUnauthorized':![]}};if(_0x33e0f0[_0x7010('0xd0')]['service']){_0x3faf24[_0x7010('0xd3')]=_0x33e0f0[_0x7010('0xd0')][_0x7010('0xd3')];}else{_0x3faf24[_0x7010('0xd4')]=_0x33e0f0[_0x7010('0xd0')][_0x7010('0xd4')];_0x3faf24[_0x7010('0xd5')]=_0x33e0f0['Smtp'][_0x7010('0xd5')];_0x3faf24['secure']=_0x33e0f0['Smtp'][_0x7010('0xd6')];}if(_0x33e0f0[_0x7010('0xd0')][_0x7010('0xd7')]){_0x3faf24[_0x7010('0xd8')]={'user':_0x33e0f0[_0x7010('0xd0')]['user'],'pass':_0x33e0f0[_0x7010('0xd0')][_0x7010('0xd9')]};}return respondWithRpcPromise(_0x7010('0xda'),_0x7010('0xdb'),{'account':_0x3faf24,'message':{'from':util[_0x7010('0xa1')](_0x7010('0xdc'),_0x33e0f0[_0x7010('0x2d')],_0x33e0f0['email']||_0x33e0f0[_0x7010('0xd0')][_0x7010('0x50')]),'to':_0x5f571e[_0x7010('0xd2')],'subject':_0x5f571e['offlineMessageSubject'],'html':_0x3f09ce[_0x7010('0x4f')],'attachments':_0x315a3b}},client9003)['then'](function(){return _0x3f09ce;})[_0x7010('0x1d')](function(_0x36a648){console[_0x7010('0x18')](_0x36a648);});}})[_0x7010('0x27')](function(){if(_0x5f571e&&_0x5f571e['openNewInteraction']&&_0x5f571e[_0x7010('0xdd')]){var _0x42c5c4=[];if(_0x34dadf[_0x7010('0x3b')]){_0x42c5c4=_0x34dadf[_0x7010('0x35')](function(_0xfeaf92){return{'name':_0xfeaf92['originalname'],'basename':_0xfeaf92[_0x7010('0x64')],'type':_0xfeaf92[_0x7010('0xc6')],'ChatOfflineMessageId':_0x246893['id']};});}var _0x26df68;if(!_['isNil'](_0x5f571e[_0x7010('0xde')])){var _0x9188b8=_['map'](_0x55c8c4['body'],function(_0x21a2a4){return _0x21a2a4;});var _0x76a800=_[_0x7010('0xdf')](_0x9188b8)[0x0];var _0x19c817=_['mapValues'](_0x76a800,function(_0x9deafa){return _0x9deafa;});_0x26df68=_0x19c817[0x1][_0x5f571e['subjectOffline']];}var _0xc64d2e={'from':_0x4ecf85[_0x7010('0xe0')],'firstName':_0x4ecf85[_0x7010('0x9b')],'lastName':_0x4ecf85['lastName'],'mapKey':_0x7010('0xe0'),'message':{'from':_0x4ecf85['email'],'to':_0x5f571e[_0x7010('0xbc')]['email'],'cc':'','subject':_[_0x7010('0x6f')](_0x26df68)?_0x5f571e[_0x7010('0xe1')]:_0x26df68,'messageId':'','sentAt':new Date(),'attach':_0x42c5c4['length'],'attachments':_0x42c5c4,'originChannel':_0x7010('0xe2'),'ChatWebsiteId':_0x5f571e['id'],'ChatOfflineMessageId':_0x3f09ce['id'],'originTo':_0x5f571e['MailAccount'][_0x7010('0xe0')]},'body':_0x3f09ce[_0x7010('0x4f')]};var _0x23bec5={'account':{'id':_0x5f571e['MailAccountId']},'body':_0xc64d2e,'log':_0x7010('0xe3')};return respondWithRpcPromise(_0x7010('0xe3'),_0x7010('0xe4'),_0x23bec5,client9001)['then'](function(){return _0x3f09ce;})['catch'](function(_0x45aae9){console[_0x7010('0x18')](_0x45aae9);});}return;})[_0x7010('0x27')](function(){if(_0x3f09ce){return _0x3f09ce;}})[_0x7010('0x27')](respondWithResult(_0x12d207,null))[_0x7010('0x1d')](function(_0x63917e){console['error']('catch',_0x63917e);for(var _0x2c4f9e of _0x34dadf){var _0x42c477=path[_0x7010('0x6a')](config['root'],_0x7010('0xc7'),_0x7010('0xb8'),'attachments',_0x7010('0xc9'),_0x2c4f9e[_0x7010('0x64')]);fs_extra[_0x7010('0xe5')](_0x42c477)[_0x7010('0x1d')](function(_0x215a9d){console['error'](_0x7010('0xe6'),_0x42c477,_0x215a9d);});}});};exports[_0x7010('0xe7')]=function(_0x50c578,_0x22f065){return db[_0x7010('0xaa')][_0x7010('0x4e')]({'where':{'id':_0x50c578[_0x7010('0x4b')]['id']}})['then'](handleEntityNotFound(_0x22f065,null))[_0x7010('0x27')](function(_0x95f97c){if(_0x95f97c){return _0x95f97c[_0x7010('0xe7')](_0x50c578['body'][_0x7010('0x5f')],_['omit'](_0x50c578['body'],['ids','id'])||{});}})[_0x7010('0x27')](respondWithResult(_0x22f065,null))['catch'](handleError(_0x22f065,null));};exports['getInteractions']=function(_0xf9aacd,_0x29e9e2){var _0x211e32={'raw':![],'where':{}};var _0xbf0615={};var _0x5d5dc6={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0xf9aacd[_0x7010('0x4b')]['id']}})['then'](handleEntityNotFound(_0x29e9e2,null))['then'](function(_0x3f9e59){if(_0x3f9e59){_0xbf0615[_0x7010('0x34')]=_['keys'](db[_0x7010('0xaa')][_0x7010('0x4d')]);_0xbf0615['query']=_[_0x7010('0x4c')](_0xf9aacd['query']);_0xbf0615[_0x7010('0x37')]=_['intersection'](_0xbf0615[_0x7010('0x34')],_0xbf0615['query']);_0x211e32[_0x7010('0x39')]=_[_0x7010('0x38')](_0xbf0615[_0x7010('0x34')],qs[_0x7010('0x3a')](_0xf9aacd[_0x7010('0x36')][_0x7010('0x3a')]));_0x211e32[_0x7010('0x39')]=_0x211e32[_0x7010('0x39')][_0x7010('0x3b')]?_0x211e32[_0x7010('0x39')]:_0xbf0615[_0x7010('0x34')];if(!_0xf9aacd[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x211e32['limit']=qs[_0x7010('0x22')](_0xf9aacd[_0x7010('0x36')]['limit']);_0x211e32[_0x7010('0x23')]=qs['offset'](_0xf9aacd[_0x7010('0x36')][_0x7010('0x23')]);}_0x211e32[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0xf9aacd[_0x7010('0x36')][_0x7010('0x3f')]);_0x211e32[_0x7010('0x40')]=qs['filters'](_[_0x7010('0x41')](_0xf9aacd[_0x7010('0x36')],_0xbf0615[_0x7010('0x37')]));_0x211e32[_0x7010('0x40')][_0x7010('0x5e')]=_0x3f9e59['id'];if(_0xf9aacd['query'][_0x7010('0x42')]){_0x211e32[_0x7010('0x40')]=_['merge'](_0x211e32[_0x7010('0x40')],{'$or':_['map'](_0x211e32['attributes'],function(_0x22d933){var _0x51b40a={};_0x51b40a[_0x22d933]={'$like':'%'+_0xf9aacd['query']['filter']+'%'};return _0x51b40a;})});}_0x211e32=_[_0x7010('0x43')]({},_0x211e32,_0xf9aacd['options']);return db[_0x7010('0xaa')][_0x7010('0x24')]({'where':_0x211e32[_0x7010('0x40')]})[_0x7010('0x27')](function(_0x96a818){_0x5d5dc6[_0x7010('0x24')]=_0x96a818;if(_0xf9aacd[_0x7010('0x36')]['includeAll']){_0x211e32[_0x7010('0x46')]=[{'model':db[_0x7010('0x7c')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x7010('0xe8'),'attributes':[_0x7010('0x2d'),_0x7010('0xe9'),_0x7010('0xea')],'required':![]},{'model':db[_0x7010('0xeb')],'as':'Tags','attributes':['id',_0x7010('0x2d'),_0x7010('0xec')],'where':_0xf9aacd[_0x7010('0x36')][_0x7010('0xed')]?{'id':_0xf9aacd[_0x7010('0x36')][_0x7010('0xed')]}:undefined,'required':_0xf9aacd['query'][_0x7010('0xed')]?!![]:![]}];}return db[_0x7010('0xaa')]['findAll'](_0x211e32);})['then'](function(_0x3768eb){_0x5d5dc6[_0x7010('0x49')]=_0x3768eb;return _0x5d5dc6;});}})['then'](respondWithFilteredResult(_0x29e9e2,_0x211e32))['catch'](handleError(_0x29e9e2,null));};function iftimePromise(_0x169a32,_0x14dea4){return respondWithRpcPromise(_0x7010('0xee'),_0x7010('0xef'),{'command':_0x14dea4[_0x7010('0xf0')]?util['format']('iftime\x20%s,%s',_0x169a32[_0x7010('0xf1')],_0x14dea4[_0x7010('0xf0')]):util[_0x7010('0xa1')](_0x7010('0xf2'),_0x169a32['interval'])},client9002)[_0x7010('0x27')](function(_0x1591ad){var _0x4d93b0=_0x1591ad&&_0x1591ad[_0x7010('0xf3')](_0x7010('0xf4'))>=0x0?!![]:![];logger[_0x7010('0x15')](_0x7010('0xf5'),_0x14dea4['id'],_0x169a32['id'],_0x169a32[_0x7010('0xf1')],_0x4d93b0?'ONLINE':_0x7010('0xf6'),_0x14dea4['timezone']?_0x14dea4[_0x7010('0xf0')]:_0x7010('0xf7'));return _0x4d93b0;})[_0x7010('0x1d')](function(_0x27020c){logger['error'](_0x7010('0xf5'),_0x14dea4['id'],_0x169a32['id'],_0x169a32[_0x7010('0xf1')],util[_0x7010('0xf8')](_0x27020c,{'showHidden':![],'depth':null}),_0x14dea4[_0x7010('0xf0')]?_0x14dea4['timezone']:_0x7010('0xf7'));return![];});}exports[_0x7010('0xef')]=function(_0x3a5293,_0x14b032){var _0x278919=0x0;var _0x300d21=0x0;var _0x188144=![];var _0x31d6da;var _0x4090f0;return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x3a5293['params']['id']},'include':[{'model':db['Interval'],'as':_0x7010('0xf9'),'include':[{'model':db[_0x7010('0xf9')],'as':_0x7010('0xfa'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x7010('0x27')](handleEntityNotFound(_0x14b032,null))['then'](function(_0x561cab){if(_0x561cab){_0x31d6da=_0x561cab;return _0x561cab[_0x7010('0xfb')]({'raw':!![]});}})[_0x7010('0x27')](function(_0x26621a){if(_0x31d6da){if(_0x26621a){_0x4090f0=_0x26621a;}}return require(_0x7010('0x6d'))[_0x7010('0x6e')]();})[_0x7010('0x27')](function(_0x2df7f8){if(_0x2df7f8){_0x300d21=_0x2df7f8['virtual'];_0x188144=_0x2df7f8[_0x7010('0xfc')];}})[_0x7010('0x27')](function(){return db['ChatInteraction'][_0x7010('0x24')]({'where':{'closed':![]}});})['then'](function(_0x272d0b){_0x278919=_0x272d0b;if(_0x300d21&&_0x272d0b>_0x300d21){return db[_0x7010('0xfd')][_0x7010('0x5d')]({'where':{'id':0x1}})[_0x7010('0x27')](function(_0x22e4f7){if(_0x22e4f7){_0x22e4f7[_0x7010('0xfe')](_0x7010('0xff'));}});}})[_0x7010('0x27')](function(){if(_0x31d6da['Interval']&&_0x31d6da[_0x7010('0xf9')][_0x7010('0xfa')]){var _0xb13da3=[];for(var _0x8e2a92=0x0;_0x8e2a92<_0x31d6da[_0x7010('0xf9')][_0x7010('0xfa')][_0x7010('0x3b')];_0x8e2a92++){var _0x4db0b2=_0x31d6da[_0x7010('0xf9')]['Intervals'][_0x8e2a92][_0x7010('0x29')]({'plain':!![]});_0xb13da3[_0x7010('0xae')](iftimePromise(_0x4db0b2,_0x31d6da));}return BPromise[_0x7010('0x100')](_0xb13da3)[_0x7010('0x27')](function(_0x20dc1c){return _[_0x7010('0x101')](_0x20dc1c);});}else{return!![];}})['then'](function(_0x2c1e97){var _0x50d1d5=fs[_0x7010('0xbf')](path[_0x7010('0x6a')](config[_0x7010('0x6b')],_0x7010('0x102')),'utf8');var _0x40bd8a={'remote':_0x31d6da[_0x7010('0x103')],'query':querystring[_0x7010('0x104')](_[_0x7010('0x43')](_0x31d6da[_0x7010('0x29')]({'plain':!![]}),{'customerIp':_0x3a5293[_0x7010('0x78')]['x-forwarded-for']||_0x3a5293[_0x7010('0x78')]['x-real-ip']||_0x3a5293[_0x7010('0x105')]['remoteAddress']||_0x3a5293['ip'],'referer':_0x3a5293[_0x7010('0x78')]['referer'],'openedInteractions':_0x278919,'maxInteractions':_0x300d21,'virtual':_0x188144[_0x7010('0x106')],'online':_0x2c1e97,'custom':_0x188144}))[_0x7010('0x107')](/'/g,'\x5c\x27')};_0x14b032[_0x7010('0x2e')](ejs[_0x7010('0xc1')](Mustache[_0x7010('0xc1')](_0x50d1d5,_0x40bd8a),{'proactiveActions':_0x4090f0,'alignment':_0x31d6da['alignment'],'verticalAlignment':_0x31d6da['verticalAlignment'],'div_color':_0x31d6da[_0x7010('0xec')],'text_color':_0x31d6da[_0x7010('0x108')],'button_color':_0x31d6da[_0x7010('0x109')],'background_color':_0x31d6da[_0x7010('0x10a')]}));})[_0x7010('0x1d')](handleError(_0x14b032,null));};exports['addApplications']=function(_0x4e04d9,_0x20835c){var _0x562c3b=_0x4e04d9['params']['id'];var _0x105a92=_0x4e04d9[_0x7010('0x4f')];var _0x389cc9=0xc8;var _0x415663=null;return db['sequelize'][_0x7010('0xcd')]({'isolationLevel':db[_0x7010('0xcc')][_0x7010('0x10b')][_0x7010('0x10c')][_0x7010('0x10d')]},function(_0x3582ee){return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x562c3b},'transaction':_0x3582ee})[_0x7010('0x27')](function(_0x1d0433){if(_0x1d0433){return db[_0x7010('0x8d')][_0x7010('0x28')]({'where':{'ChatWebsiteId':_0x562c3b},'transaction':_0x3582ee})[_0x7010('0x27')](function(){var _0x17a184=_[_0x7010('0x35')](_0x105a92,function(_0x471502){_0x471502['ChatWebsiteId']=_0x562c3b;return _0x471502;});return db[_0x7010('0x8d')]['bulkCreate'](_0x17a184,{'transaction':_0x3582ee});});}else{_0x389cc9=0x194;_0x415663=[];}});})[_0x7010('0x27')](function(){if(_0x389cc9!==0x194){return db['ChatApplication'][_0x7010('0x10e')]({'where':{'ChatWebsiteId':_0x562c3b},'order':_0x7010('0x93')})[_0x7010('0x27')](function(_0x325596){_0x415663=_0x325596;});}})['catch'](function(_0x5586a){_0x389cc9=0x1f4;logger[_0x7010('0x18')](_0x5586a['stack']);if(_0x5586a[_0x7010('0x2d')]){delete _0x5586a[_0x7010('0x2d')];}_0x415663=_0x5586a;})['finally'](function(){if(_0x415663===null){_0x20835c['sendStatus'](_0x389cc9);}else{if(_0x389cc9===0x1f4){_0x20835c['status'](_0x389cc9)['send'](_0x415663);}else{_0x20835c['status'](_0x389cc9)[_0x7010('0x20')](_0x415663);}}});};exports[_0x7010('0x10f')]=function(_0x39a149,_0x405e04){var _0x4ad774={};var _0x3f8572={};var _0x456925;var _0x2894ec;return db[_0x7010('0x47')]['findOne']({'where':{'id':_0x39a149[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x405e04,null))[_0x7010('0x27')](function(_0x4e785a){if(_0x4e785a){_0x456925=_0x4e785a;_0x3f8572[_0x7010('0x34')]=_[_0x7010('0x4c')](db[_0x7010('0x8d')][_0x7010('0x4d')]);_0x3f8572['query']=_[_0x7010('0x4c')](_0x39a149[_0x7010('0x36')]);_0x3f8572[_0x7010('0x37')]=_[_0x7010('0x38')](_0x3f8572[_0x7010('0x34')],_0x3f8572[_0x7010('0x36')]);_0x4ad774[_0x7010('0x39')]=_[_0x7010('0x38')](_0x3f8572[_0x7010('0x34')],qs[_0x7010('0x3a')](_0x39a149[_0x7010('0x36')]['fields']));_0x4ad774[_0x7010('0x39')]=_0x4ad774['attributes']['length']?_0x4ad774[_0x7010('0x39')]:_0x3f8572[_0x7010('0x34')];_0x4ad774[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0x39a149[_0x7010('0x36')]['sort']);_0x4ad774[_0x7010('0x40')]=qs[_0x7010('0x37')](_[_0x7010('0x41')](_0x39a149[_0x7010('0x36')],_0x3f8572[_0x7010('0x37')]));if(_0x39a149[_0x7010('0x36')][_0x7010('0x42')]){_0x4ad774['where']=_[_0x7010('0x43')](_0x4ad774[_0x7010('0x40')],{'$or':_[_0x7010('0x35')](_0x4ad774['attributes'],function(_0x4afee5){var _0x1265c4={};_0x1265c4[_0x4afee5]={'$like':'%'+_0x39a149[_0x7010('0x36')][_0x7010('0x42')]+'%'};return _0x1265c4;})});}_0x4ad774=_['merge']({},_0x4ad774,_0x39a149[_0x7010('0x44')]);return _0x456925['getApplications'](_0x4ad774);}})['then'](function(_0x5d993a){if(_0x5d993a){_0x2894ec=_0x5d993a['length'];if(!_0x39a149[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x4ad774[_0x7010('0x22')]=qs[_0x7010('0x22')](_0x39a149['query']['limit']);_0x4ad774[_0x7010('0x23')]=qs[_0x7010('0x23')](_0x39a149[_0x7010('0x36')]['offset']);}return _0x456925[_0x7010('0x10f')](_0x4ad774);}})[_0x7010('0x27')](function(_0x115eaf){if(_0x115eaf){return _0x115eaf?{'count':_0x2894ec,'rows':_0x115eaf}:null;}})['then'](respondWithResult(_0x405e04,null))[_0x7010('0x1d')](handleError(_0x405e04,null));};exports[_0x7010('0x110')]=function(_0x283483,_0x25de9d){return db[_0x7010('0x111')][_0x7010('0x4e')]({'where':{'id':_0x283483[_0x7010('0x4b')]['id']}})['then'](handleEntityNotFound(_0x25de9d,null))[_0x7010('0x27')](function(_0x5373a8){if(_0x5373a8){return _0x5373a8[_0x7010('0x110')](_0x283483[_0x7010('0x4f')][_0x7010('0x5f')],_[_0x7010('0x112')](_0x283483[_0x7010('0x4f')],[_0x7010('0x5f'),'id'])||{});}})[_0x7010('0x27')](respondWithResult(_0x25de9d,null))[_0x7010('0x1d')](handleError(_0x25de9d,null));};exports[_0x7010('0xfb')]=function(_0x5c24d4,_0x5d059d){var _0x128906={};var _0x5910d0={};var _0x135a5f;var _0x2eaa06;return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x5c24d4[_0x7010('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5d059d,null))[_0x7010('0x27')](function(_0x118508){if(_0x118508){_0x135a5f=_0x118508;_0x5910d0[_0x7010('0x34')]=_[_0x7010('0x4c')](db['ChatProactiveAction']['rawAttributes']);_0x5910d0[_0x7010('0x36')]=_[_0x7010('0x4c')](_0x5c24d4['query']);_0x5910d0[_0x7010('0x37')]=_[_0x7010('0x38')](_0x5910d0[_0x7010('0x34')],_0x5910d0[_0x7010('0x36')]);_0x128906['attributes']=_[_0x7010('0x38')](_0x5910d0['model'],qs[_0x7010('0x3a')](_0x5c24d4[_0x7010('0x36')][_0x7010('0x3a')]));_0x128906[_0x7010('0x39')]=_0x128906[_0x7010('0x39')][_0x7010('0x3b')]?_0x128906[_0x7010('0x39')]:_0x5910d0['model'];_0x128906['order']=qs['sort'](_0x5c24d4['query'][_0x7010('0x3f')]);_0x128906[_0x7010('0x40')]=qs[_0x7010('0x37')](_[_0x7010('0x41')](_0x5c24d4['query'],_0x5910d0[_0x7010('0x37')]));if(_0x5c24d4[_0x7010('0x36')][_0x7010('0x42')]){_0x128906[_0x7010('0x40')]=_[_0x7010('0x43')](_0x128906[_0x7010('0x40')],{'$or':_[_0x7010('0x35')](_0x128906['attributes'],function(_0x28d151){var _0x4182fc={};_0x4182fc[_0x28d151]={'$like':'%'+_0x5c24d4[_0x7010('0x36')][_0x7010('0x42')]+'%'};return _0x4182fc;})});}_0x128906=_[_0x7010('0x43')]({},_0x128906,_0x5c24d4['options']);return _0x135a5f[_0x7010('0xfb')](_0x128906);}})[_0x7010('0x27')](function(_0x159d2c){if(_0x159d2c){_0x2eaa06=_0x159d2c[_0x7010('0x3b')];if(!_0x5c24d4[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x128906[_0x7010('0x22')]=qs[_0x7010('0x22')](_0x5c24d4[_0x7010('0x36')]['limit']);_0x128906[_0x7010('0x23')]=qs[_0x7010('0x23')](_0x5c24d4[_0x7010('0x36')][_0x7010('0x23')]);}return _0x135a5f[_0x7010('0xfb')](_0x128906);}})[_0x7010('0x27')](function(_0x2e6853){if(_0x2e6853){return _0x2e6853?{'count':_0x2eaa06,'rows':_0x2e6853}:null;}})[_0x7010('0x27')](respondWithResult(_0x5d059d,null))[_0x7010('0x1d')](handleError(_0x5d059d,null));};exports[_0x7010('0x113')]=function(_0x30f082,_0x506a07){var _0x40dd0d=_0x30f082[_0x7010('0x36')]['online']===_0x7010('0x114')?_0x7010('0x115'):_0x7010('0x116');return db[_0x7010('0x47')][_0x7010('0x4e')]({'attributes':['id',_0x40dd0d],'where':{'id':_0x30f082[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x506a07,null))['then'](function(_0x71f5c7){if(_0x71f5c7){var _0x329361=_0x71f5c7[_0x40dd0d];var _0x2b42c0=_0x329361&&_0x329361[_0x7010('0x117')]?_0x329361[_0x7010('0x117')]:[];_0x506a07[_0x7010('0x2e')]({'fromKey':_[_0x7010('0x6f')](_0x329361[_0x7010('0x118')])?undefined:_0x329361[_0x7010('0x118')],'count':_0x2b42c0[_0x7010('0x3b')],'rows':_0x2b42c0});}})[_0x7010('0x1d')](handleError(_0x506a07,null));};exports['getOfflineMessages']=function(_0x18cf88,_0xbd18e2){var _0xa84e66={'raw':![],'where':{}};var _0x2c9c3f={};var _0x37512a={'count':0x0,'rows':[]};return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x18cf88[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0xbd18e2,null))[_0x7010('0x27')](function(_0x3aefa6){if(_0x3aefa6){_0x2c9c3f[_0x7010('0x34')]=_[_0x7010('0x4c')](db[_0x7010('0xc4')][_0x7010('0x4d')]);_0x2c9c3f[_0x7010('0x36')]=_[_0x7010('0x4c')](_0x18cf88[_0x7010('0x36')]);_0x2c9c3f[_0x7010('0x37')]=_[_0x7010('0x38')](_0x2c9c3f[_0x7010('0x34')],_0x2c9c3f[_0x7010('0x36')]);_0xa84e66[_0x7010('0x39')]=_[_0x7010('0x38')](_0x2c9c3f[_0x7010('0x34')],qs['fields'](_0x18cf88['query'][_0x7010('0x3a')]));_0xa84e66[_0x7010('0x39')]=_0xa84e66['attributes']['length']?_0xa84e66[_0x7010('0x39')]:_0x2c9c3f[_0x7010('0x34')];if(!_0x18cf88[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0xa84e66[_0x7010('0x22')]=qs[_0x7010('0x22')](_0x18cf88[_0x7010('0x36')][_0x7010('0x22')]);_0xa84e66['offset']=qs[_0x7010('0x23')](_0x18cf88['query'][_0x7010('0x23')]);}_0xa84e66[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0x18cf88[_0x7010('0x36')][_0x7010('0x3f')]);_0xa84e66[_0x7010('0x40')]=qs['filters'](_[_0x7010('0x41')](_0x18cf88[_0x7010('0x36')],_0x2c9c3f['filters']));_0xa84e66[_0x7010('0x40')]['ChatWebsiteId']=_0x3aefa6['id'];if(_0x18cf88[_0x7010('0x36')][_0x7010('0x42')]){_0xa84e66['where']=_[_0x7010('0x43')](_0xa84e66[_0x7010('0x40')],{'$or':_[_0x7010('0x35')](_0xa84e66['attributes'],function(_0x2b78ef){var _0x3892df={};_0x3892df[_0x2b78ef]={'$like':'%'+_0x18cf88[_0x7010('0x36')][_0x7010('0x42')]+'%'};return _0x3892df;})});}_0xa84e66=_[_0x7010('0x43')]({},_0xa84e66,_0x18cf88[_0x7010('0x44')]);return db[_0x7010('0xc4')]['count']({'where':_0xa84e66['where']})[_0x7010('0x27')](function(_0x20808a){_0x37512a[_0x7010('0x24')]=_0x20808a;if(_0x18cf88[_0x7010('0x36')][_0x7010('0x45')]){_0xa84e66[_0x7010('0x46')]=[{'all':!![]}];}else{_0xa84e66['include']=[{'model':db['CmContact'],'as':_0x7010('0x119'),'required':![]},{'model':db[_0x7010('0xce')],'as':_0x7010('0x11a'),'required':![]}];}return db[_0x7010('0xc4')]['findAll'](_0xa84e66);})[_0x7010('0x27')](function(_0x561530){_0x37512a[_0x7010('0x49')]=_0x561530;return _0x37512a;});}})[_0x7010('0x27')](respondWithFilteredResult(_0xbd18e2,_0xa84e66))[_0x7010('0x1d')](handleError(_0xbd18e2,null));};exports[_0x7010('0x11b')]=function(_0x3e676f,_0x3814cd){return db[_0x7010('0x47')]['find']({'where':{'id':_0x3e676f[_0x7010('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3814cd,null))['then'](function(_0x2decdb){if(_0x2decdb){return _0x2decdb[_0x7010('0x11b')](_0x3e676f[_0x7010('0x4f')][_0x7010('0x5f')],_['omit'](_0x3e676f[_0x7010('0x4f')],[_0x7010('0x5f'),'id'])||{})[_0x7010('0xab')](function(_0x3303fd){for(var _0x4ab240=0x0;_0x4ab240<_0x3e676f['body'][_0x7010('0x5f')][_0x7010('0x3b')];_0x4ab240+=0x1){socket[_0x7010('0x11c')]('userChatWebsite:save',{'UserId':Number(_0x3e676f[_0x7010('0x4f')][_0x7010('0x5f')][_0x4ab240]),'ChatWebsiteId':Number(_0x3e676f[_0x7010('0x4b')]['id'])});}return _0x3303fd;});}})['then'](respondWithResult(_0x3814cd,null))[_0x7010('0x1d')](handleError(_0x3814cd,null));};exports['removeAgents']=function(_0x4d50cb,_0x3e7ce2){return db[_0x7010('0x47')][_0x7010('0x4e')]({'where':{'id':_0x4d50cb[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x3e7ce2,null))['then'](function(_0x31edb2){if(_0x31edb2){return _0x31edb2[_0x7010('0x11d')](_0x4d50cb[_0x7010('0x36')][_0x7010('0x5f')])[_0x7010('0x27')](function(){if(_[_0x7010('0x11e')](_0x4d50cb[_0x7010('0x36')][_0x7010('0x5f')])){for(var _0x54e0fe=0x0;_0x54e0fe<_0x4d50cb[_0x7010('0x36')][_0x7010('0x5f')][_0x7010('0x3b')];_0x54e0fe+=0x1){socket['emit'](_0x7010('0x11f'),{'UserId':Number(_0x4d50cb['query']['ids'][_0x54e0fe]),'ChatWebsiteId':Number(_0x4d50cb[_0x7010('0x4b')]['id'])});}}else{socket[_0x7010('0x11c')](_0x7010('0x11f'),{'UserId':Number(_0x4d50cb['query'][_0x7010('0x5f')]),'ChatWebsiteId':Number(_0x4d50cb[_0x7010('0x4b')]['id'])});}});}})[_0x7010('0x27')](respondWithStatusCode(_0x3e7ce2,null))[_0x7010('0x1d')](handleError(_0x3e7ce2,null));};exports['getAgents']=function(_0x17f0a,_0x398503){var _0x2fcf17={};var _0x4676c4={};var _0x396f94;var _0x52e484;return db[_0x7010('0x47')][_0x7010('0x5d')]({'where':{'id':_0x17f0a[_0x7010('0x4b')]['id']}})[_0x7010('0x27')](handleEntityNotFound(_0x398503,null))[_0x7010('0x27')](function(_0x1d488e){if(_0x1d488e){_0x396f94=_0x1d488e;_0x4676c4[_0x7010('0x34')]=_[_0x7010('0x4c')](db[_0x7010('0x120')][_0x7010('0x4d')]);_0x4676c4['query']=_[_0x7010('0x4c')](_0x17f0a[_0x7010('0x36')]);_0x4676c4[_0x7010('0x37')]=_[_0x7010('0x38')](_0x4676c4[_0x7010('0x34')],_0x4676c4[_0x7010('0x36')]);_0x2fcf17[_0x7010('0x39')]=_[_0x7010('0x38')](_0x4676c4['model'],qs[_0x7010('0x3a')](_0x17f0a[_0x7010('0x36')][_0x7010('0x3a')]));_0x2fcf17['attributes']=_0x2fcf17[_0x7010('0x39')][_0x7010('0x3b')]?_0x2fcf17[_0x7010('0x39')]:_0x4676c4[_0x7010('0x34')];_0x2fcf17[_0x7010('0x3e')]=qs[_0x7010('0x3f')](_0x17f0a[_0x7010('0x36')][_0x7010('0x3f')]);_0x2fcf17[_0x7010('0x40')]=qs[_0x7010('0x37')](_['pick'](_0x17f0a[_0x7010('0x36')],_0x4676c4['filters']));if(_0x17f0a[_0x7010('0x36')]['filter']){_0x2fcf17[_0x7010('0x40')]=_[_0x7010('0x43')](_0x2fcf17[_0x7010('0x40')],{'$or':_['map'](_0x2fcf17[_0x7010('0x39')],function(_0x4d0471){var _0x519cda={};_0x519cda[_0x4d0471]={'$like':'%'+_0x17f0a[_0x7010('0x36')][_0x7010('0x42')]+'%'};return _0x519cda;})});}_0x2fcf17=_['merge']({},_0x2fcf17,_0x17f0a[_0x7010('0x44')]);return _0x396f94[_0x7010('0x121')](_0x2fcf17);}})['then'](function(_0x288a0c){if(_0x288a0c){_0x52e484=_0x288a0c[_0x7010('0x3b')];if(!_0x17f0a[_0x7010('0x36')][_0x7010('0x3c')](_0x7010('0x3d'))){_0x2fcf17[_0x7010('0x22')]=qs['limit'](_0x17f0a['query'][_0x7010('0x22')]);_0x2fcf17[_0x7010('0x23')]=qs[_0x7010('0x23')](_0x17f0a[_0x7010('0x36')]['offset']);}return _0x396f94[_0x7010('0x121')](_0x2fcf17);}})['then'](function(_0x5b508e){if(_0x5b508e){return _0x5b508e?{'count':_0x52e484,'rows':_0x5b508e}:null;}})['then'](respondWithResult(_0x398503,null))[_0x7010('0x1d')](handleError(_0x398503,null));};
\ No newline at end of file
index c6c90ce..025fe04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceae=['hasOwnProperty','hook','exports','events','../../mysqldb','update','emit'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xceae,0x122));var _0xecea=function(_0x3e0c6b,_0x52636f){_0x3e0c6b=_0x3e0c6b-0x0;var _0x4bf365=_0xceae[_0x3e0c6b];return _0x4bf365;};'use strict';var EventEmitter=require(_0xecea('0x0'));var ChatWebsite=require(_0xecea('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xecea('0x2'),'afterDestroy':'remove'};function emitEvent(_0x5bba59){return function(_0x28b2cf,_0x457d37,_0x39d285){ChatWebsiteEvents[_0xecea('0x3')](_0x5bba59+':'+_0x28b2cf['id'],_0x28b2cf);ChatWebsiteEvents[_0xecea('0x3')](_0x5bba59,_0x28b2cf);_0x39d285(null);};}for(var e in events){if(events[_0xecea('0x4')](e)){var event=events[e];ChatWebsite[_0xecea('0x5')](e,emitEvent(event));}}module[_0xecea('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x891b=['setMaxListeners','update','remove','emit','hasOwnProperty','ChatWebsite'];(function(_0x12b449,_0x2b8a36){var _0x4e3784=function(_0xf2848c){while(--_0xf2848c){_0x12b449['push'](_0x12b449['shift']());}};_0x4e3784(++_0x2b8a36);}(_0x891b,0xc5));var _0xb891=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x891b[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var ChatWebsite=require('../../mysqldb')['db'][_0xb891('0x0')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb891('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb891('0x2'),'afterDestroy':_0xb891('0x3')};function emitEvent(_0x1c519f){return function(_0x467558,_0x587bf1,_0x379509){ChatWebsiteEvents[_0xb891('0x4')](_0x1c519f+':'+_0x467558['id'],_0x467558);ChatWebsiteEvents['emit'](_0x1c519f,_0x467558);_0x379509(null);};}for(var e in events){if(events[_0xb891('0x5')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 6636f69..7d525ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9434=['path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','util','../../config/logger','api'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x9434,0x1b6));var _0x4943=function(_0xf074cc,_0x5520f7){_0xf074cc=_0xf074cc-0x0;var _0xd3cc9f=_0x9434[_0xf074cc];return _0xd3cc9f;};'use strict';var _=require('lodash');var util=require(_0x4943('0x0'));var logger=require(_0x4943('0x1'))(_0x4943('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4943('0x3'));var rimraf=require(_0x4943('0x4'));var config=require(_0x4943('0x5'));var attributes=require(_0x4943('0x6'));module[_0x4943('0x7')]=function(_0x5ea249,_0x173c64){return _0x5ea249[_0x4943('0x8')]('ChatWebsite',attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa678=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa678,0x76));var _0x8a67=function(_0x1b1da9,_0x16cecb){_0x1b1da9=_0x1b1da9-0x0;var _0xe8c7a3=_0xa678[_0x1b1da9];return _0xe8c7a3;};'use strict';var _=require(_0x8a67('0x0'));var util=require(_0x8a67('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8a67('0x2'));var BPromise=require(_0x8a67('0x3'));var rp=require(_0x8a67('0x4'));var fs=require('fs');var path=require(_0x8a67('0x5'));var rimraf=require(_0x8a67('0x6'));var config=require(_0x8a67('0x7'));var attributes=require(_0x8a67('0x8'));module[_0x8a67('0x9')]=function(_0x4feef4,_0x4b84b0){return _0x4feef4['define'](_0x8a67('0xa'),attributes,{'tableName':_0x8a67('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b3eb7f..469f5b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x437b=['./chatWebsite.socket','register','then','info','request\x20sent','debug','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x437b,0x1ac));var _0xb437=function(_0x49beea,_0x47add1){_0x49beea=_0x49beea-0x0;var _0x27693a=_0x437b[_0x49beea];return _0x27693a;};'use strict';var _=require(_0xb437('0x0'));var util=require(_0xb437('0x1'));var moment=require(_0xb437('0x2'));var BPromise=require(_0xb437('0x3'));var rs=require(_0xb437('0x4'));var fs=require('fs');var Redis=require(_0xb437('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb437('0x6'))(_0xb437('0x7'));var config=require(_0xb437('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb437('0x9')][_0xb437('0xa')]({'port':0x232a});config['redis']=_[_0xb437('0xb')](config['redis'],{'host':_0xb437('0xc'),'port':0x18eb});var socket=require(_0xb437('0xd'))(new Redis(config['redis']));require(_0xb437('0xe'))[_0xb437('0xf')](socket);function respondWithRpcPromise(_0x114bc7,_0x26771d,_0x329646){return new BPromise(function(_0x351929,_0x5da899){return client['request'](_0x114bc7,_0x329646)[_0xb437('0x10')](function(_0x204f54){logger[_0xb437('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x26771d,_0xb437('0x12'));logger[_0xb437('0x13')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x26771d,_0xb437('0x12'),JSON[_0xb437('0x14')](_0x204f54));if(_0x204f54['error']){if(_0x204f54[_0xb437('0x15')][_0xb437('0x16')]===0x1f4){logger['error'](_0xb437('0x17'),_0x26771d,_0x204f54[_0xb437('0x15')][_0xb437('0x18')]);return _0x5da899(_0x204f54[_0xb437('0x15')]['message']);}logger[_0xb437('0x15')](_0xb437('0x17'),_0x26771d,_0x204f54[_0xb437('0x15')][_0xb437('0x18')]);return _0x351929(_0x204f54[_0xb437('0x15')]['message']);}else{logger['info'](_0xb437('0x17'),_0x26771d,'request\x20sent');_0x351929(_0x204f54[_0xb437('0x19')][_0xb437('0x18')]);}})['catch'](function(_0x383a67){logger[_0xb437('0x15')](_0xb437('0x17'),_0x26771d,_0x383a67);_0x5da899(_0x383a67);});});}
\ No newline at end of file
+var _0x0112=['./chatWebsite.socket','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x2b134a,_0x655159){var _0x33ca03=function(_0x15452e){while(--_0x15452e){_0x2b134a['push'](_0x2b134a['shift']());}};_0x33ca03(++_0x655159);}(_0x0112,0xd7));var _0x2011=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x0112[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0x2011('0x0'));var util=require(_0x2011('0x1'));var moment=require(_0x2011('0x2'));var BPromise=require(_0x2011('0x3'));var rs=require(_0x2011('0x4'));var fs=require('fs');var Redis=require(_0x2011('0x5'));var db=require(_0x2011('0x6'))['db'];var utils=require(_0x2011('0x7'));var logger=require(_0x2011('0x8'))(_0x2011('0x9'));var config=require(_0x2011('0xa'));var jayson=require(_0x2011('0xb'));var client=jayson[_0x2011('0xc')][_0x2011('0xd')]({'port':0x232a});config[_0x2011('0xe')]=_[_0x2011('0xf')](config[_0x2011('0xe')],{'host':_0x2011('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2011('0x11'))['register'](socket);function respondWithRpcPromise(_0x37489a,_0x909289,_0x336fd4){return new BPromise(function(_0x3e2132,_0xb5f632){return client['request'](_0x37489a,_0x336fd4)[_0x2011('0x12')](function(_0x3f16e7){logger[_0x2011('0x13')](_0x2011('0x14'),_0x909289,'request\x20sent');logger[_0x2011('0x15')](_0x2011('0x16'),_0x909289,_0x2011('0x17'),JSON[_0x2011('0x18')](_0x3f16e7));if(_0x3f16e7[_0x2011('0x19')]){if(_0x3f16e7[_0x2011('0x19')]['code']===0x1f4){logger[_0x2011('0x19')](_0x2011('0x14'),_0x909289,_0x3f16e7[_0x2011('0x19')][_0x2011('0x1a')]);return _0xb5f632(_0x3f16e7[_0x2011('0x19')]['message']);}logger[_0x2011('0x19')](_0x2011('0x14'),_0x909289,_0x3f16e7['error'][_0x2011('0x1a')]);return _0x3e2132(_0x3f16e7[_0x2011('0x19')][_0x2011('0x1a')]);}else{logger['info'](_0x2011('0x14'),_0x909289,_0x2011('0x17'));_0x3e2132(_0x3f16e7[_0x2011('0x1b')]['message']);}})[_0x2011('0x1c')](function(_0x53428d){logger[_0x2011('0x19')](_0x2011('0x14'),_0x909289,_0x53428d);_0xb5f632(_0x53428d);});});}
\ No newline at end of file
index f47b10d..323aa78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7976=['length','./chatWebsite.events','save','remove','update','removeListener','register'];(function(_0x182648,_0x2a7b01){var _0x10d106=function(_0x343645){while(--_0x343645){_0x182648['push'](_0x182648['shift']());}};_0x10d106(++_0x2a7b01);}(_0x7976,0x17b));var _0x6797=function(_0xa4cc62,_0x4084fe){_0xa4cc62=_0xa4cc62-0x0;var _0x47f040=_0x7976[_0xa4cc62];return _0x47f040;};'use strict';var ChatWebsiteEvents=require(_0x6797('0x0'));var events=[_0x6797('0x1'),_0x6797('0x2'),_0x6797('0x3')];function createListener(_0x220b74,_0x41563d){return function(_0x438ba5){_0x41563d['emit'](_0x220b74,_0x438ba5);};}function removeListener(_0x2f5815,_0x573446){return function(){ChatWebsiteEvents[_0x6797('0x4')](_0x2f5815,_0x573446);};}exports[_0x6797('0x5')]=function(_0x31b362){for(var _0x397e7e=0x0,_0x4156d7=events[_0x6797('0x6')];_0x397e7e<_0x4156d7;_0x397e7e++){var _0x1a59b7=events[_0x397e7e];var _0x4680f4=createListener('chatWebsite:'+_0x1a59b7,_0x31b362);ChatWebsiteEvents['on'](_0x1a59b7,_0x4680f4);}};
\ No newline at end of file
+var _0xdf4a=['remove','emit','register','length','chatWebsite:','./chatWebsite.events','save'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xdf4a,0x178));var _0xadf4=function(_0x4577b2,_0x92875e){_0x4577b2=_0x4577b2-0x0;var _0x405ec5=_0xdf4a[_0x4577b2];return _0x405ec5;};'use strict';var ChatWebsiteEvents=require(_0xadf4('0x0'));var events=[_0xadf4('0x1'),_0xadf4('0x2'),'update'];function createListener(_0x1a486f,_0xa0bb67){return function(_0x2b3fed){_0xa0bb67[_0xadf4('0x3')](_0x1a486f,_0x2b3fed);};}function removeListener(_0x57c639,_0x3eb368){return function(){ChatWebsiteEvents['removeListener'](_0x57c639,_0x3eb368);};}exports[_0xadf4('0x4')]=function(_0x752885){for(var _0x16ab4e=0x0,_0x4f7372=events[_0xadf4('0x5')];_0x16ab4e<_0x4f7372;_0x16ab4e++){var _0x7044f8=events[_0x16ab4e];var _0x4a1f46=createListener(_0xadf4('0x6')+_0x7044f8,_0x752885);ChatWebsiteEvents['on'](_0x7044f8,_0x4a1f46);}};
\ No newline at end of file
index 9f7c7b6..03c7245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae16=['server/files/images/avatars/','/:id/system_avatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','offline','addApplications','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/:id','show','/:id/dispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','diskStorage','join','server/files/images/logos/','format','%s-%s','now','single','file','addLogo','root','originalname','addAvatar'];(function(_0x174c43,_0xc04363){var _0x18209f=function(_0x1db89d){while(--_0x1db89d){_0x174c43['push'](_0x174c43['shift']());}};_0x18209f(++_0xc04363);}(_0xae16,0x1ac));var _0x6ae1=function(_0xd27db7,_0x4aa388){_0xd27db7=_0xd27db7-0x0;var _0x2f5973=_0xae16[_0xd27db7];return _0x2f5973;};'use strict';var multer=require('multer');var util=require(_0x6ae1('0x0'));var path=require('path');var timeout=require(_0x6ae1('0x1'));var express=require(_0x6ae1('0x2'));var router=express[_0x6ae1('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6ae1('0x4'));var config=require(_0x6ae1('0x5'));var controller=require(_0x6ae1('0x6'));router[_0x6ae1('0x7')]('/',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x9')]);router[_0x6ae1('0x7')]('/describe',auth[_0x6ae1('0x8')](),controller['describe']);router[_0x6ae1('0x7')](_0x6ae1('0xa'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0xb')]);router['get'](_0x6ae1('0xc'),auth[_0x6ae1('0x8')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0xd')]);router[_0x6ae1('0x7')](_0x6ae1('0xe'),controller[_0x6ae1('0xf')]);router[_0x6ae1('0x7')](_0x6ae1('0x10'),controller['getAvatar']);router[_0x6ae1('0x7')](_0x6ae1('0x11'),controller[_0x6ae1('0x12')]);router[_0x6ae1('0x7')]('/:id/system_avatar',controller[_0x6ae1('0x13')]);router[_0x6ae1('0x7')](_0x6ae1('0x14'),auth[_0x6ae1('0x8')](),controller['getInteractions']);router[_0x6ae1('0x7')]('/:id/snippet',controller[_0x6ae1('0x15')]);router[_0x6ae1('0x7')](_0x6ae1('0x16'),auth['isAuthenticated'](),controller['getApplications']);router[_0x6ae1('0x7')](_0x6ae1('0x17'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x18')]);router[_0x6ae1('0x7')](_0x6ae1('0x19'),controller[_0x6ae1('0x1a')]);router['get'](_0x6ae1('0x1b'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x1c')]);router[_0x6ae1('0x7')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x1e')]);router[_0x6ae1('0x1f')]('/',auth['isAuthenticated'](),controller[_0x6ae1('0x20')]);router['post']('/:id/dispositions',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x21')]);router[_0x6ae1('0x1f')](_0x6ae1('0x22'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x23')]);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x7ad5d7,_0xa71114,_0x1350bc){_0x1350bc(null,path[_0x6ae1('0x25')](config['root'],_0x6ae1('0x26')));},'filename':function(_0x4c468a,_0x55aacd,_0x51af6d){_0x51af6d(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x55aacd['originalname']));}})});router['post'](_0x6ae1('0xe'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x2c')]);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x40e8f5,_0x420c46,_0x186af8){_0x186af8(null,path['join'](config[_0x6ae1('0x2d')],'server/files/images/avatars/'));},'filename':function(_0x4d9496,_0x4e0104,_0x3fb316){_0x3fb316(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x4e0104[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x10'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x210fa0,_0x380f75,_0x2b5a7a){_0x2b5a7a(null,path[_0x6ae1('0x25')](config['root'],_0x6ae1('0x30')));},'filename':function(_0xc814ea,_0x353e68,_0x598d4c){_0x598d4c(null,util[_0x6ae1('0x27')]('%s-%s',Date['now'](),_0x353e68[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x11'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x37e965,_0x34574e,_0x5bd4db){_0x5bd4db(null,path[_0x6ae1('0x25')](config[_0x6ae1('0x2d')],_0x6ae1('0x30')));},'filename':function(_0x3b42c8,_0x2c1c89,_0x239d51){_0x239d51(null,util[_0x6ae1('0x27')](_0x6ae1('0x28'),Date[_0x6ae1('0x29')](),_0x2c1c89[_0x6ae1('0x2e')]));}})});router[_0x6ae1('0x1f')](_0x6ae1('0x31'),upload[_0x6ae1('0x2a')](_0x6ae1('0x2b')),controller[_0x6ae1('0x32')]);router[_0x6ae1('0x1f')](_0x6ae1('0x33'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x6ae1('0x24')]({'destination':function(_0x363570,_0x564769,_0x6d048){const _0xff5db=path[_0x6ae1('0x25')](config[_0x6ae1('0x2d')],_0x6ae1('0x34'),_0x6ae1('0x35'),_0x6ae1('0x36'));fs_extra[_0x6ae1('0x37')](_0xff5db,function(){_0x6d048(null,_0xff5db);});},'filename':function(_0x566b41,_0x1302b5,_0xb22dea){const _0x1e84d6=_0x1302b5['originalname'][_0x6ae1('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x3999b8=path[_0x6ae1('0x39')](_0x1e84d6);const _0x35a2ac=Date['now']()+'-'+_0x1e84d6[_0x6ae1('0x38')](_0x3999b8,'')+_0x3999b8;_0xb22dea(null,_0x35a2ac);}})});router['post']('/:id/offline',offlineUploadMulter['any'](),controller[_0x6ae1('0x3a')]);router[_0x6ae1('0x1f')](_0x6ae1('0x14'),auth[_0x6ae1('0x8')](),controller['addInteraction']);router['post']('/:id/applications',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3b')]);router[_0x6ae1('0x1f')](_0x6ae1('0x17'),auth[_0x6ae1('0x8')](),controller['addProactiveActions']);router[_0x6ae1('0x1f')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller['addAgents']);router[_0x6ae1('0x3c')](_0x6ae1('0xa'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3d')]);router[_0x6ae1('0x3e')]('/:id',auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x3f')]);router[_0x6ae1('0x3e')](_0x6ae1('0xc'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x40')]);router[_0x6ae1('0x3e')](_0x6ae1('0x22'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x41')]);router[_0x6ae1('0x3e')](_0x6ae1('0x1d'),auth[_0x6ae1('0x8')](),controller[_0x6ae1('0x42')]);module[_0x6ae1('0x43')]=router;
\ No newline at end of file
+var _0x9124=['/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages','/:id/users','getAgents','post','create','diskStorage','join','server/files/images/logos/','format','%s-%s','now','originalname','single','file','root','addAvatar','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','ensureDir','replace','any','addInteraction','/:id/applications','addApplications','addProactiveActions','put','update','destroy','delete','removeAnswers','removeAgents','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet'];(function(_0x5cf3c6,_0x1366c7){var _0x6b0834=function(_0x5185d1){while(--_0x5185d1){_0x5cf3c6['push'](_0x5cf3c6['shift']());}};_0x6b0834(++_0x1366c7);}(_0x9124,0xf7));var _0x4912=function(_0x14b85c,_0xb1d76e){_0x14b85c=_0x14b85c-0x0;var _0x26c5f2=_0x9124[_0x14b85c];return _0x26c5f2;};'use strict';var multer=require(_0x4912('0x0'));var util=require(_0x4912('0x1'));var path=require(_0x4912('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4912('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4912('0x4'));var interaction=require(_0x4912('0x5'));var config=require(_0x4912('0x6'));var controller=require(_0x4912('0x7'));router[_0x4912('0x8')]('/',auth[_0x4912('0x9')](),controller[_0x4912('0xa')]);router['get'](_0x4912('0xb'),auth[_0x4912('0x9')](),controller[_0x4912('0xc')]);router[_0x4912('0x8')](_0x4912('0xd'),auth['isAuthenticated'](),controller[_0x4912('0xe')]);router['get'](_0x4912('0xf'),auth[_0x4912('0x9')](),controller[_0x4912('0x10')]);router[_0x4912('0x8')](_0x4912('0x11'),auth['isAuthenticated'](),controller[_0x4912('0x12')]);router['get'](_0x4912('0x13'),controller[_0x4912('0x14')]);router[_0x4912('0x8')](_0x4912('0x15'),controller[_0x4912('0x16')]);router[_0x4912('0x8')](_0x4912('0x17'),controller[_0x4912('0x18')]);router[_0x4912('0x8')]('/:id/system_avatar',controller[_0x4912('0x19')]);router['get'](_0x4912('0x1a'),auth['isAuthenticated'](),controller[_0x4912('0x1b')]);router[_0x4912('0x8')]('/:id/snippet',controller[_0x4912('0x1c')]);router[_0x4912('0x8')]('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0x4912('0x8')](_0x4912('0x1d'),auth['isAuthenticated'](),controller[_0x4912('0x1e')]);router[_0x4912('0x8')](_0x4912('0x1f'),controller[_0x4912('0x20')]);router[_0x4912('0x8')]('/:id/offline_messages',auth[_0x4912('0x9')](),controller[_0x4912('0x21')]);router[_0x4912('0x8')](_0x4912('0x22'),auth[_0x4912('0x9')](),controller[_0x4912('0x23')]);router[_0x4912('0x24')]('/',auth[_0x4912('0x9')](),controller[_0x4912('0x25')]);router[_0x4912('0x24')](_0x4912('0xf'),auth[_0x4912('0x9')](),controller['addDisposition']);router[_0x4912('0x24')](_0x4912('0x11'),auth[_0x4912('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x4912('0x26')]({'destination':function(_0x259e2c,_0x93eb5,_0x2f2554){_0x2f2554(null,path[_0x4912('0x27')](config['root'],_0x4912('0x28')));},'filename':function(_0x31b3aa,_0x2285f6,_0x43842b){_0x43842b(null,util[_0x4912('0x29')](_0x4912('0x2a'),Date[_0x4912('0x2b')](),_0x2285f6[_0x4912('0x2c')]));}})});router[_0x4912('0x24')](_0x4912('0x13'),upload[_0x4912('0x2d')](_0x4912('0x2e')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2e1064,_0x486f60,_0x3ef5a3){_0x3ef5a3(null,path['join'](config[_0x4912('0x2f')],'server/files/images/avatars/'));},'filename':function(_0x39d14e,_0x2f8afc,_0x1a17d5){_0x1a17d5(null,util['format'](_0x4912('0x2a'),Date[_0x4912('0x2b')](),_0x2f8afc[_0x4912('0x2c')]));}})});router['post'](_0x4912('0x15'),upload[_0x4912('0x2d')](_0x4912('0x2e')),controller[_0x4912('0x30')]);var upload=multer({'storage':multer[_0x4912('0x26')]({'destination':function(_0x12ed7c,_0x3c8ae3,_0xfee081){_0xfee081(null,path[_0x4912('0x27')](config[_0x4912('0x2f')],_0x4912('0x31')));},'filename':function(_0x5e8996,_0x4683b5,_0x3f0f4f){_0x3f0f4f(null,util['format'](_0x4912('0x2a'),Date['now'](),_0x4683b5[_0x4912('0x2c')]));}})});router[_0x4912('0x24')]('/:id/customer_avatar',upload[_0x4912('0x2d')](_0x4912('0x2e')),controller[_0x4912('0x32')]);var upload=multer({'storage':multer[_0x4912('0x26')]({'destination':function(_0xe29b64,_0x13ee1b,_0x4b26a4){_0x4b26a4(null,path[_0x4912('0x27')](config[_0x4912('0x2f')],_0x4912('0x31')));},'filename':function(_0x3c150b,_0x17ade0,_0x41b635){_0x41b635(null,util[_0x4912('0x29')](_0x4912('0x2a'),Date[_0x4912('0x2b')](),_0x17ade0[_0x4912('0x2c')]));}})});router['post']('/:id/system_avatar',upload[_0x4912('0x2d')](_0x4912('0x2e')),controller[_0x4912('0x33')]);router['post'](_0x4912('0x34'),controller[_0x4912('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x4912('0x26')]({'destination':function(_0x5b35e9,_0x179fd1,_0x48f177){const _0x7bbb3d=path[_0x4912('0x27')](config[_0x4912('0x2f')],_0x4912('0x36'),'attachments',_0x4912('0x37'));fs_extra[_0x4912('0x38')](_0x7bbb3d,function(){_0x48f177(null,_0x7bbb3d);});},'filename':function(_0x3f2c05,_0x248761,_0x45fe73){const _0x1107bf=_0x248761[_0x4912('0x2c')][_0x4912('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x270caa=path['extname'](_0x1107bf);const _0xa6f8b=Date['now']()+'-'+_0x1107bf[_0x4912('0x39')](_0x270caa,'')+_0x270caa;_0x45fe73(null,_0xa6f8b);}})});router['post']('/:id/offline',offlineUploadMulter[_0x4912('0x3a')](),controller['offline']);router[_0x4912('0x24')]('/:id/interactions',auth[_0x4912('0x9')](),controller[_0x4912('0x3b')]);router['post'](_0x4912('0x3c'),auth[_0x4912('0x9')](),controller[_0x4912('0x3d')]);router[_0x4912('0x24')](_0x4912('0x1d'),auth[_0x4912('0x9')](),controller[_0x4912('0x3e')]);router[_0x4912('0x24')](_0x4912('0x22'),auth[_0x4912('0x9')](),controller['addAgents']);router[_0x4912('0x3f')](_0x4912('0xd'),auth[_0x4912('0x9')](),controller[_0x4912('0x40')]);router['delete']('/:id',auth[_0x4912('0x9')](),controller[_0x4912('0x41')]);router[_0x4912('0x42')](_0x4912('0xf'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x4912('0x42')](_0x4912('0x11'),auth['isAuthenticated'](),controller[_0x4912('0x43')]);router[_0x4912('0x42')](_0x4912('0x22'),auth[_0x4912('0x9')](),controller[_0x4912('0x44')]);module['exports']=router;
\ No newline at end of file
index 64012e7..a3b9f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1939=['AmazonAWS','sequelize','STRING','ENUM'];(function(_0x815fb4,_0x18718c){var _0xeab0c8=function(_0x38d44d){while(--_0x38d44d){_0x815fb4['push'](_0x815fb4['shift']());}};_0xeab0c8(++_0x18718c);}(_0x1939,0x1d1));var _0x9193=function(_0x5dcca6,_0x1672e8){_0x5dcca6=_0x5dcca6-0x0;var _0x178cae=_0x1939[_0x5dcca6];return _0x178cae;};'use strict';var Sequelize=require(_0x9193('0x0'));module['exports']={'name':{'type':Sequelize[_0x9193('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x9193('0x2')](_0x9193('0x3'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x9193('0x1')]},'data2':{'type':Sequelize[_0x9193('0x1')]}};
\ No newline at end of file
+var _0x1203=['AmazonAWS','Google','sequelize','exports','STRING','ENUM'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x3120('0x0'));module[_0x3120('0x1')]={'name':{'type':Sequelize[_0x3120('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x3120('0x3')](_0x3120('0x4'),_0x3120('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x3120('0x2')]},'data2':{'type':Sequelize[_0x3120('0x2')]}};
\ No newline at end of file
index baad7f0..40b016c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['body','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','CloudProvider','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','rows','show','params','keys','rawAttributes','includeAll','find','catch'];(function(_0x3c763c,_0x3caeaa){var _0x5b9fb1=function(_0x255a82){while(--_0x255a82){_0x3c763c['push'](_0x3c763c['shift']());}};_0x5b9fb1(++_0x3caeaa);}(_0x2032,0xd9));var _0x2203=function(_0x5b5a8e,_0x211dca){_0x5b5a8e=_0x5b5a8e-0x0;var _0x3ba1ba=_0x2032[_0x5b5a8e];return _0x3ba1ba;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'all':!![]}];}return db[_0x2203('0x2c')]['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x446209){_0x34b8ba[_0x2203('0x3f')]=_0x446209;return _0x34b8ba;})['then'](respondWithFilteredResult(_0x1df508,_0x9c53f))['catch'](handleError(_0x1df508,null));};exports[_0x2203('0x40')]=function(_0x3739f6,_0x368444){var _0x1e09f3={'raw':!![],'where':{'id':_0x3739f6[_0x2203('0x41')]['id']}},_0x372709={};_0x372709['model']=_[_0x2203('0x42')](db[_0x2203('0x2c')][_0x2203('0x43')]);_0x372709[_0x2203('0x30')]=_[_0x2203('0x42')](_0x3739f6[_0x2203('0x30')]);_0x372709[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x372709[_0x2203('0x31')],_0x372709[_0x2203('0x30')]);_0x1e09f3['attributes']=_[_0x2203('0x33')](_0x372709[_0x2203('0x31')],qs[_0x2203('0x34')](_0x3739f6[_0x2203('0x30')]['fields']));_0x1e09f3['attributes']=_0x1e09f3[_0x2203('0x32')]['length']?_0x1e09f3[_0x2203('0x32')]:_0x372709[_0x2203('0x31')];if(_0x3739f6[_0x2203('0x30')][_0x2203('0x44')]){_0x1e09f3['include']=[{'all':!![]}];}_0x1e09f3=_[_0x2203('0x3c')]({},_0x1e09f3,_0x3739f6[_0x2203('0x3e')]);return db['CloudProvider'][_0x2203('0x45')](_0x1e09f3)[_0x2203('0x23')](handleEntityNotFound(_0x368444,null))[_0x2203('0x23')](respondWithResult(_0x368444,null))[_0x2203('0x46')](handleError(_0x368444,null));};exports['create']=function(_0x4c1a29,_0x21b8ab){return db['CloudProvider']['create'](_0x4c1a29[_0x2203('0x47')],{})[_0x2203('0x23')](respondWithResult(_0x21b8ab,0xc9))[_0x2203('0x46')](handleError(_0x21b8ab,null));};exports['update']=function(_0x4c1496,_0x131aec){if(_0x4c1496[_0x2203('0x47')]['id']){delete _0x4c1496[_0x2203('0x47')]['id'];}return db[_0x2203('0x2c')][_0x2203('0x45')]({'where':{'id':_0x4c1496[_0x2203('0x41')]['id']}})['then'](handleEntityNotFound(_0x131aec,null))[_0x2203('0x23')](saveUpdates(_0x4c1496['body'],null))[_0x2203('0x23')](respondWithResult(_0x131aec,null))[_0x2203('0x46')](handleError(_0x131aec,null));};exports[_0x2203('0x24')]=function(_0x1e49dd,_0x58b9bb){return db['CloudProvider'][_0x2203('0x45')]({'where':{'id':_0x1e49dd[_0x2203('0x41')]['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x58b9bb,null))[_0x2203('0x23')](removeEntity(_0x58b9bb,null))['catch'](handleError(_0x58b9bb,null));};
\ No newline at end of file
+var _0x5f66=['update','catch','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','CloudProvider','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body'];(function(_0x1e9ecf,_0x45e253){var _0x3ddda4=function(_0xb3ae80){while(--_0xb3ae80){_0x1e9ecf['push'](_0x1e9ecf['shift']());}};_0x3ddda4(++_0x45e253);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['CloudProvider'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};
\ No newline at end of file
index 143559b..6937ec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcff7=['request-promise','rimraf','../../config/environment','exports','cloud_providers','lodash','util','../../config/logger'];(function(_0x377137,_0x5804a1){var _0x2a9c0f=function(_0x3cd087){while(--_0x3cd087){_0x377137['push'](_0x377137['shift']());}};_0x2a9c0f(++_0x5804a1);}(_0xcff7,0x6d));var _0x7cff=function(_0x4e5549,_0xf515b2){_0x4e5549=_0x4e5549-0x0;var _0x448296=_0xcff7[_0x4e5549];return _0x448296;};'use strict';var _=require(_0x7cff('0x0'));var util=require(_0x7cff('0x1'));var logger=require(_0x7cff('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7cff('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7cff('0x4'));var config=require(_0x7cff('0x5'));var attributes=require('./cloudProvider.attributes');module[_0x7cff('0x6')]=function(_0x2e57d3,_0x26e1e6){return _0x2e57d3['define']('CloudProvider',attributes,{'tableName':_0x7cff('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9880=['../../config/logger','api','moment','bluebird','path','rimraf','exports','lodash','util'];(function(_0x38f61d,_0x1d26cd){var _0x13fc46=function(_0x37c3a7){while(--_0x37c3a7){_0x38f61d['push'](_0x38f61d['shift']());}};_0x13fc46(++_0x1d26cd);}(_0x9880,0x6a));var _0x0988=function(_0x438fe1,_0x3308d5){_0x438fe1=_0x438fe1-0x0;var _0x3c8e1b=_0x9880[_0x438fe1];return _0x3c8e1b;};'use strict';var _=require(_0x0988('0x0'));var util=require(_0x0988('0x1'));var logger=require(_0x0988('0x2'))(_0x0988('0x3'));var moment=require(_0x0988('0x4'));var BPromise=require(_0x0988('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0988('0x6'));var rimraf=require(_0x0988('0x7'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module[_0x0988('0x8')]=function(_0x493fb2,_0x39a6c2){return _0x493fb2['define']('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17db555..b58509f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['stringify','error','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CloudProvider,\x20%s,\x20%s','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4e757c,_0x20ea62){var _0x517d89=function(_0x626fcb){while(--_0x626fcb){_0x4e757c['push'](_0x4e757c['shift']());}};_0x517d89(++_0x20ea62);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c7586,_0x1d46bd){_0x1c7586=_0x1c7586-0x0;var _0x3bd9a1=_0xb10b[_0x1c7586];return _0x3bd9a1;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}
\ No newline at end of file
+var _0x4dcb=['client','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5f5e0c,_0x2cea79){var _0x54a9c1=function(_0x11074c){while(--_0x11074c){_0x5f5e0c['push'](_0x5f5e0c['shift']());}};_0x54a9c1(++_0x2cea79);}(_0x4dcb,0x186));var _0xb4dc=function(_0x1ecfc6,_0x3afbf2){_0x1ecfc6=_0x1ecfc6-0x0;var _0x2bee0d=_0x4dcb[_0x1ecfc6];return _0x2bee0d;};'use strict';var _=require('lodash');var util=require(_0xb4dc('0x0'));var moment=require(_0xb4dc('0x1'));var BPromise=require(_0xb4dc('0x2'));var rs=require(_0xb4dc('0x3'));var fs=require('fs');var Redis=require(_0xb4dc('0x4'));var db=require(_0xb4dc('0x5'))['db'];var utils=require(_0xb4dc('0x6'));var logger=require(_0xb4dc('0x7'))(_0xb4dc('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb4dc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x445f93,_0x14790e,_0x2d4522){return new BPromise(function(_0x34c857,_0x6d25){return client[_0xb4dc('0xa')](_0x445f93,_0x2d4522)['then'](function(_0xa50528){logger[_0xb4dc('0xb')](_0xb4dc('0xc'),_0x14790e,_0xb4dc('0xd'));logger[_0xb4dc('0xe')](_0xb4dc('0xf'),_0x14790e,_0xb4dc('0xd'),JSON[_0xb4dc('0x10')](_0xa50528));if(_0xa50528[_0xb4dc('0x11')]){if(_0xa50528[_0xb4dc('0x11')][_0xb4dc('0x12')]===0x1f4){logger[_0xb4dc('0x11')](_0xb4dc('0xc'),_0x14790e,_0xa50528['error'][_0xb4dc('0x13')]);return _0x6d25(_0xa50528[_0xb4dc('0x11')][_0xb4dc('0x13')]);}logger[_0xb4dc('0x11')](_0xb4dc('0xc'),_0x14790e,_0xa50528['error']['message']);return _0x34c857(_0xa50528[_0xb4dc('0x11')][_0xb4dc('0x13')]);}else{logger[_0xb4dc('0xb')](_0xb4dc('0xc'),_0x14790e,_0xb4dc('0xd'));_0x34c857(_0xa50528[_0xb4dc('0x14')]['message']);}})['catch'](function(_0x301ef4){logger[_0xb4dc('0x11')](_0xb4dc('0xc'),_0x14790e,_0x301ef4);_0x6d25(_0x301ef4);});});}
\ No newline at end of file
index b9d594f..6b74cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0530=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','post','create','/:id'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x0530,0x72));var _0x0053=function(_0x383dc5,_0x48a679){_0x383dc5=_0x383dc5-0x0;var _0x1381ba=_0x0530[_0x383dc5];return _0x1381ba;};'use strict';var multer=require(_0x0053('0x0'));var util=require(_0x0053('0x1'));var path=require('path');var timeout=require(_0x0053('0x2'));var express=require('express');var router=express[_0x0053('0x3')]();var fs_extra=require(_0x0053('0x4'));var auth=require(_0x0053('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0053('0x6'));var controller=require(_0x0053('0x7'));router[_0x0053('0x8')]('/',auth[_0x0053('0x9')](),controller[_0x0053('0xa')]);router['get']('/:id',auth[_0x0053('0x9')](),controller['show']);router[_0x0053('0xb')]('/',auth[_0x0053('0x9')](),controller[_0x0053('0xc')]);router['put'](_0x0053('0xd'),auth[_0x0053('0x9')](),controller['update']);router[_0x0053('0xe')](_0x0053('0xd'),auth[_0x0053('0x9')](),controller['destroy']);module[_0x0053('0xf')]=router;
\ No newline at end of file
+var _0xc971=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x42ca6d,_0x2b69e0){var _0x2da3f9=function(_0x5171d8){while(--_0x5171d8){_0x42ca6d['push'](_0x42ca6d['shift']());}};_0x2da3f9(++_0x2b69e0);}(_0xc971,0x17b));var _0x1c97=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xc971[_0x30ae5e];return _0x1f2e93;};'use strict';var multer=require(_0x1c97('0x0'));var util=require(_0x1c97('0x1'));var path=require(_0x1c97('0x2'));var timeout=require(_0x1c97('0x3'));var express=require(_0x1c97('0x4'));var router=express['Router']();var fs_extra=require(_0x1c97('0x5'));var auth=require(_0x1c97('0x6'));var interaction=require(_0x1c97('0x7'));var config=require('../../config/environment');var controller=require('./cloudProvider.controller');router[_0x1c97('0x8')]('/',auth[_0x1c97('0x9')](),controller['index']);router['get'](_0x1c97('0xa'),auth[_0x1c97('0x9')](),controller['show']);router[_0x1c97('0xb')]('/',auth[_0x1c97('0x9')](),controller['create']);router[_0x1c97('0xc')](_0x1c97('0xa'),auth[_0x1c97('0x9')](),controller['update']);router[_0x1c97('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x1c97('0xe')]);module[_0x1c97('0xf')]=router;
\ No newline at end of file
index 147cf5e..efd3926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bd6=['exports','name','STRING'];(function(_0x537828,_0xbc42fb){var _0x387347=function(_0xf2ff5e){while(--_0xf2ff5e){_0x537828['push'](_0x537828['shift']());}};_0x387347(++_0xbc42fb);}(_0x8bd6,0x126));var _0x68bd=function(_0x392d30,_0x4e15bf){_0x392d30=_0x392d30-0x0;var _0x2c0530=_0x8bd6[_0x392d30];return _0x2c0530;};'use strict';var Sequelize=require('sequelize');module[_0x68bd('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x68bd('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x68bd('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x68bd('0x2')]},'city':{'type':Sequelize[_0x68bd('0x2')]},'country':{'type':Sequelize[_0x68bd('0x2')]},'email':{'type':Sequelize[_0x68bd('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x68bd('0x2')]},'sStreet':{'type':Sequelize[_0x68bd('0x2')]},'sPostalCode':{'type':Sequelize[_0x68bd('0x2')]},'sCity':{'type':Sequelize[_0x68bd('0x2')]},'sCountry':{'type':Sequelize[_0x68bd('0x2')]},'description':{'type':Sequelize[_0x68bd('0x2')]}};
\ No newline at end of file
+var _0x612f=['STRING','sequelize','exports'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x612f,0x19f));var _0xf612=function(_0x56cd22,_0xd4c827){_0x56cd22=_0x56cd22-0x0;var _0x57918f=_0x612f[_0x56cd22];return _0x57918f;};'use strict';var Sequelize=require(_0xf612('0x0'));module[_0xf612('0x1')]={'name':{'type':Sequelize[_0xf612('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xf612('0x2')]},'companyId':{'type':Sequelize[_0xf612('0x2')]},'website':{'type':Sequelize[_0xf612('0x2')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xf612('0x2')]},'type':{'type':Sequelize[_0xf612('0x2')]},'street':{'type':Sequelize[_0xf612('0x2')]},'postalCode':{'type':Sequelize[_0xf612('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xf612('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xf612('0x2')]},'sStreet':{'type':Sequelize[_0xf612('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0xf612('0x2')]},'description':{'type':Sequelize[_0xf612('0x2')]}};
\ No newline at end of file
index e079528..f91b3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad42=['order','sort','where','filters','pick','filter','merge','map','options','includeAll','include','rows','catch','rawAttributes','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','update','params','addContacts','ids','omit','getContacts','findOne','CmContact','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','then','get','Companies','destroy','error','stack','name','index','CmCompany','describe','model','keys','query','intersection','fields','attributes','hasOwnProperty'];(function(_0x2a6585,_0x4097d6){var _0x42c6a9=function(_0x38b32c){while(--_0x38b32c){_0x2a6585['push'](_0x2a6585['shift']());}};_0x42c6a9(++_0x4097d6);}(_0xad42,0x7e));var _0x2ad4=function(_0x52d504,_0x2cbabe){_0x52d504=_0x52d504-0x0;var _0x39f039=_0xad42[_0x52d504];return _0x39f039;};'use strict';var emlformat=require(_0x2ad4('0x0'));var rimraf=require(_0x2ad4('0x1'));var zipdir=require(_0x2ad4('0x2'));var jsonpatch=require(_0x2ad4('0x3'));var rp=require(_0x2ad4('0x4'));var moment=require(_0x2ad4('0x5'));var BPromise=require(_0x2ad4('0x6'));var Mustache=require(_0x2ad4('0x7'));var util=require(_0x2ad4('0x8'));var path=require(_0x2ad4('0x9'));var sox=require(_0x2ad4('0xa'));var csv=require(_0x2ad4('0xb'));var ejs=require(_0x2ad4('0xc'));var fs=require('fs');var fs_extra=require(_0x2ad4('0xd'));var _=require(_0x2ad4('0xe'));var squel=require(_0x2ad4('0xf'));var crypto=require(_0x2ad4('0x10'));var jsforce=require(_0x2ad4('0x11'));var deskjs=require(_0x2ad4('0x12'));var toCsv=require(_0x2ad4('0xb'));var querystring=require(_0x2ad4('0x13'));var Papa=require(_0x2ad4('0x14'));var Redis=require(_0x2ad4('0x15'));var authService=require(_0x2ad4('0x16'));var qs=require(_0x2ad4('0x17'));var as=require(_0x2ad4('0x18'));var hardwareService=require(_0x2ad4('0x19'));var logger=require(_0x2ad4('0x1a'))(_0x2ad4('0x1b'));var utils=require(_0x2ad4('0x1c'));var config=require('../../config/environment');var licenseUtil=require(_0x2ad4('0x1d'));var db=require(_0x2ad4('0x1e'))['db'];function respondWithStatusCode(_0xeb0901,_0x27a346){_0x27a346=_0x27a346||0xcc;return function(_0x203cd2){if(_0x203cd2){return _0xeb0901[_0x2ad4('0x1f')](_0x27a346);}return _0xeb0901[_0x2ad4('0x20')](_0x27a346)[_0x2ad4('0x21')]();};}function respondWithResult(_0x54b6a8,_0x24806b){_0x24806b=_0x24806b||0xc8;return function(_0x43bef7){if(_0x43bef7){return _0x54b6a8['status'](_0x24806b)['json'](_0x43bef7);}};}function respondWithFilteredResult(_0x546b66,_0x541bbc){return function(_0x478f54){if(_0x478f54){var _0x509488=typeof _0x541bbc['offset']===_0x2ad4('0x22')&&typeof _0x541bbc[_0x2ad4('0x23')]==='undefined';var _0x412fac=_0x478f54[_0x2ad4('0x24')];var _0x2d2fc0=_0x509488?0x0:_0x541bbc['offset'];var _0x582741=_0x509488?_0x478f54['count']:_0x541bbc[_0x2ad4('0x25')]+_0x541bbc['limit'];var _0x8eb2cb;if(_0x582741>=_0x412fac){_0x582741=_0x412fac;_0x8eb2cb=0xc8;}else{_0x8eb2cb=0xce;}_0x546b66[_0x2ad4('0x20')](_0x8eb2cb);return _0x546b66[_0x2ad4('0x26')](_0x2ad4('0x27'),_0x2d2fc0+'-'+_0x582741+'/'+_0x412fac)[_0x2ad4('0x28')](_0x478f54);}return null;};}function patchUpdates(_0x165c3c){return function(_0x4ad99a){try{jsonpatch['apply'](_0x4ad99a,_0x165c3c,!![]);}catch(_0x2fe947){return BPromise[_0x2ad4('0x29')](_0x2fe947);}return _0x4ad99a[_0x2ad4('0x2a')]();};}function saveUpdates(_0x398766,_0x268a25){return function(_0x5df1bf){if(_0x5df1bf){return _0x5df1bf['update'](_0x398766)[_0x2ad4('0x2b')](function(_0x31358){return _0x31358;});}return null;};}function removeEntity(_0x13f972,_0x496a0a){return function(_0x23ee38){if(_0x23ee38){return _0x23ee38['destroy']()[_0x2ad4('0x2b')](function(){var _0x918a0b=_0x23ee38[_0x2ad4('0x2c')]({'plain':!![]});var _0x284e73=_0x2ad4('0x2d');return db['UserProfileResource'][_0x2ad4('0x2e')]({'where':{'type':_0x284e73,'resourceId':_0x918a0b['id']}})['then'](function(){return _0x23ee38;});})[_0x2ad4('0x2b')](function(){_0x13f972[_0x2ad4('0x20')](0xcc)[_0x2ad4('0x21')]();});}};}function handleEntityNotFound(_0x2700e3,_0x548902){return function(_0x52c979){if(!_0x52c979){_0x2700e3['sendStatus'](0x194);}return _0x52c979;};}function handleError(_0xbfe36,_0x46807e){_0x46807e=_0x46807e||0x1f4;return function(_0x23a9b5){logger[_0x2ad4('0x2f')](_0x23a9b5[_0x2ad4('0x30')]);if(_0x23a9b5[_0x2ad4('0x31')]){delete _0x23a9b5[_0x2ad4('0x31')];}_0xbfe36['status'](_0x46807e)['send'](_0x23a9b5);};}exports[_0x2ad4('0x32')]=function(_0x8a41b8,_0x25c232){var _0x55b880={},_0x176ca1={},_0x4386ed={'count':0x0,'rows':[]};return db[_0x2ad4('0x33')][_0x2ad4('0x34')]()[_0x2ad4('0x2b')](function(_0x19775e){_0x176ca1[_0x2ad4('0x35')]=_[_0x2ad4('0x36')](_0x19775e);_0x176ca1[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x8a41b8[_0x2ad4('0x37')]);_0x176ca1['filters']=_[_0x2ad4('0x38')](_0x176ca1[_0x2ad4('0x35')],_0x176ca1[_0x2ad4('0x37')]);_0x55b880['attributes']=_[_0x2ad4('0x38')](_0x176ca1[_0x2ad4('0x35')],qs[_0x2ad4('0x39')](_0x8a41b8[_0x2ad4('0x37')]['fields']));_0x55b880['attributes']=_0x55b880[_0x2ad4('0x3a')]['length']?_0x55b880[_0x2ad4('0x3a')]:_0x176ca1['model'];if(!_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x3b')]('nolimit')){_0x55b880[_0x2ad4('0x23')]=qs['limit'](_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x23')]);_0x55b880['offset']=qs[_0x2ad4('0x25')](_0x8a41b8[_0x2ad4('0x37')]['offset']);}_0x55b880[_0x2ad4('0x3c')]=qs['sort'](_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x3d')]);_0x55b880[_0x2ad4('0x3e')]=qs[_0x2ad4('0x3f')](_[_0x2ad4('0x40')](_0x8a41b8[_0x2ad4('0x37')],_0x176ca1[_0x2ad4('0x3f')]),_0x19775e);if(_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x41')]){_0x55b880[_0x2ad4('0x3e')]=_[_0x2ad4('0x42')](_0x55b880[_0x2ad4('0x3e')],{'$or':_[_0x2ad4('0x43')](_0x55b880[_0x2ad4('0x3a')],function(_0x48ac02){var _0x59d2b8={};_0x59d2b8[_0x48ac02]={'$like':'%'+_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x41')]+'%'};return _0x59d2b8;})});}_0x55b880=_[_0x2ad4('0x42')]({},_0x55b880,_0x8a41b8[_0x2ad4('0x44')]);var _0x318459={'where':_0x55b880[_0x2ad4('0x3e')]};return db[_0x2ad4('0x33')]['count'](_0x318459)[_0x2ad4('0x2b')](function(_0x2365db){_0x4386ed['count']=_0x2365db;if(_0x8a41b8[_0x2ad4('0x37')][_0x2ad4('0x45')]){_0x55b880[_0x2ad4('0x46')]=[{'all':!![]}];}return db[_0x2ad4('0x33')]['findAll'](_0x55b880);})[_0x2ad4('0x2b')](function(_0x526dd4){_0x4386ed[_0x2ad4('0x47')]=_0x526dd4;return _0x4386ed;})[_0x2ad4('0x2b')](respondWithFilteredResult(_0x25c232,_0x55b880))[_0x2ad4('0x48')](handleError(_0x25c232,null));})[_0x2ad4('0x48')](handleError(_0x25c232,null));};exports['show']=function(_0x3fe80b,_0x4b4aa5){var _0x4a6059={'raw':![],'where':{'id':_0x3fe80b['params']['id']}},_0x1f3cc1={};_0x1f3cc1[_0x2ad4('0x35')]=_[_0x2ad4('0x36')](db[_0x2ad4('0x33')][_0x2ad4('0x49')]);_0x1f3cc1[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x3fe80b[_0x2ad4('0x37')]);_0x1f3cc1[_0x2ad4('0x3f')]=_[_0x2ad4('0x38')](_0x1f3cc1[_0x2ad4('0x35')],_0x1f3cc1[_0x2ad4('0x37')]);_0x4a6059['attributes']=_[_0x2ad4('0x38')](_0x1f3cc1[_0x2ad4('0x35')],qs['fields'](_0x3fe80b[_0x2ad4('0x37')][_0x2ad4('0x39')]));_0x4a6059[_0x2ad4('0x3a')]=_0x4a6059[_0x2ad4('0x3a')][_0x2ad4('0x4a')]?_0x4a6059[_0x2ad4('0x3a')]:_0x1f3cc1[_0x2ad4('0x35')];if(_0x3fe80b[_0x2ad4('0x37')][_0x2ad4('0x45')]){_0x4a6059[_0x2ad4('0x46')]=[{'all':!![]}];}_0x4a6059=_[_0x2ad4('0x42')]({},_0x4a6059,_0x3fe80b['options']);return db[_0x2ad4('0x33')]['find'](_0x4a6059)[_0x2ad4('0x2b')](handleEntityNotFound(_0x4b4aa5,null))['then'](respondWithResult(_0x4b4aa5,null))[_0x2ad4('0x48')](handleError(_0x4b4aa5,null));};exports[_0x2ad4('0x4b')]=function(_0xc7909a,_0x35e354){return db[_0x2ad4('0x33')][_0x2ad4('0x4b')](_0xc7909a[_0x2ad4('0x4c')],{})['then'](function(_0xef7f1c){var _0x3e4fb8=_0xc7909a[_0x2ad4('0x4d')]['get']({'plain':!![]});if(!_0x3e4fb8)throw new Error(_0x2ad4('0x4e'));if(_0x3e4fb8[_0x2ad4('0x4f')]===_0x2ad4('0x4d')){var _0x696d47=_0xef7f1c['get']({'plain':!![]});var _0xcb3a5e='Companies';return db[_0x2ad4('0x50')][_0x2ad4('0x51')]({'where':{'name':_0xcb3a5e,'userProfileId':_0x3e4fb8[_0x2ad4('0x52')]},'raw':!![]})['then'](function(_0x419e4d){if(_0x419e4d&&_0x419e4d[_0x2ad4('0x53')]===0x0){return db['UserProfileResource'][_0x2ad4('0x4b')]({'name':_0x696d47[_0x2ad4('0x31')],'resourceId':_0x696d47['id'],'type':_0x419e4d['name'],'sectionId':_0x419e4d['id']},{})[_0x2ad4('0x2b')](function(){return _0xef7f1c;});}else{return _0xef7f1c;}})[_0x2ad4('0x48')](function(_0x587bb5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x587bb5);throw _0x587bb5;});}return _0xef7f1c;})['then'](respondWithResult(_0x35e354,0xc9))[_0x2ad4('0x48')](handleError(_0x35e354,null));};exports[_0x2ad4('0x54')]=function(_0xe3722,_0x265d2b){if(_0xe3722[_0x2ad4('0x4c')]['id']){delete _0xe3722[_0x2ad4('0x4c')]['id'];}return db['CmCompany'][_0x2ad4('0x51')]({'where':{'id':_0xe3722['params']['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0x265d2b,null))[_0x2ad4('0x2b')](saveUpdates(_0xe3722[_0x2ad4('0x4c')],null))[_0x2ad4('0x2b')](respondWithResult(_0x265d2b,null))[_0x2ad4('0x48')](handleError(_0x265d2b,null));};exports[_0x2ad4('0x2e')]=function(_0x2d35da,_0x5a5a16){return db[_0x2ad4('0x33')][_0x2ad4('0x51')]({'where':{'id':_0x2d35da[_0x2ad4('0x55')]['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0x5a5a16,null))[_0x2ad4('0x2b')](removeEntity(_0x5a5a16,null))[_0x2ad4('0x48')](handleError(_0x5a5a16,null));};exports[_0x2ad4('0x34')]=function(_0x2b51dd,_0x38f42a){return db[_0x2ad4('0x33')]['describe']()[_0x2ad4('0x2b')](respondWithResult(_0x38f42a,null))[_0x2ad4('0x48')](handleError(_0x38f42a,null));};exports[_0x2ad4('0x56')]=function(_0x17160e,_0x3df36a,_0x290058){return db['CmContact']['find']({'where':{'id':_0x17160e[_0x2ad4('0x55')]['id']}})['then'](handleEntityNotFound(_0x3df36a,null))[_0x2ad4('0x2b')](function(_0xc165bf){if(_0xc165bf){return _0xc165bf['addContacts'](_0x17160e['body'][_0x2ad4('0x57')],_[_0x2ad4('0x58')](_0x17160e[_0x2ad4('0x4c')],[_0x2ad4('0x57'),'id'])||{});}})[_0x2ad4('0x2b')](respondWithResult(_0x3df36a,null))['catch'](handleError(_0x3df36a,null));};exports[_0x2ad4('0x59')]=function(_0x533f32,_0xc3720e,_0x450bfa){var _0x596ba={};var _0xd17704={};var _0xad7ddd;var _0x2c52b2;return db[_0x2ad4('0x33')][_0x2ad4('0x5a')]({'where':{'id':_0x533f32['params']['id']}})[_0x2ad4('0x2b')](handleEntityNotFound(_0xc3720e,null))['then'](function(_0x49e157){if(_0x49e157){_0xad7ddd=_0x49e157;_0xd17704[_0x2ad4('0x35')]=_['keys'](db[_0x2ad4('0x5b')][_0x2ad4('0x49')]);_0xd17704[_0x2ad4('0x37')]=_[_0x2ad4('0x36')](_0x533f32[_0x2ad4('0x37')]);_0xd17704[_0x2ad4('0x3f')]=_[_0x2ad4('0x38')](_0xd17704[_0x2ad4('0x35')],_0xd17704[_0x2ad4('0x37')]);_0x596ba[_0x2ad4('0x3a')]=_['intersection'](_0xd17704[_0x2ad4('0x35')],qs[_0x2ad4('0x39')](_0x533f32[_0x2ad4('0x37')][_0x2ad4('0x39')]));_0x596ba[_0x2ad4('0x3a')]=_0x596ba[_0x2ad4('0x3a')][_0x2ad4('0x4a')]?_0x596ba['attributes']:_0xd17704[_0x2ad4('0x35')];_0x596ba[_0x2ad4('0x3c')]=qs[_0x2ad4('0x3d')](_0x533f32[_0x2ad4('0x37')]['sort']);_0x596ba[_0x2ad4('0x3e')]=qs[_0x2ad4('0x3f')](_['pick'](_0x533f32[_0x2ad4('0x37')],_0xd17704['filters']));if(_0x533f32['query'][_0x2ad4('0x41')]){_0x596ba[_0x2ad4('0x3e')]=_[_0x2ad4('0x42')](_0x596ba[_0x2ad4('0x3e')],{'$or':_[_0x2ad4('0x43')](_0x596ba[_0x2ad4('0x3a')],function(_0x4b4525){var _0x2cf01={};_0x2cf01[_0x4b4525]={'$like':'%'+_0x533f32[_0x2ad4('0x37')][_0x2ad4('0x41')]+'%'};return _0x2cf01;})});}_0x596ba=_['merge']({},_0x596ba,_0x533f32[_0x2ad4('0x44')]);return _0xad7ddd[_0x2ad4('0x59')](_0x596ba);}})[_0x2ad4('0x2b')](function(_0x51490a){if(_0x51490a){_0x2c52b2=_0x51490a[_0x2ad4('0x4a')];if(!_0x533f32[_0x2ad4('0x37')]['hasOwnProperty'](_0x2ad4('0x5c'))){_0x596ba[_0x2ad4('0x23')]=qs['limit'](_0x533f32['query']['limit']);_0x596ba[_0x2ad4('0x25')]=qs[_0x2ad4('0x25')](_0x533f32['query'][_0x2ad4('0x25')]);}return _0xad7ddd[_0x2ad4('0x59')](_0x596ba);}})[_0x2ad4('0x2b')](function(_0x434930){if(_0x434930){return _0x434930?{'count':_0x2c52b2,'rows':_0x434930}:null;}})[_0x2ad4('0x2b')](respondWithResult(_0xc3720e,null))[_0x2ad4('0x48')](handleError(_0xc3720e,null));};
\ No newline at end of file
+var _0xa349=['hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','CmCompany','include','findAll','rows','catch','show','length','includeAll','find','create','get','role','user','UserProfileSection','userProfileId','autoAssociation','body','params','addContacts','getContacts','CmContact','rawAttributes','map','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','UserProfileResource','stack','name','send','index','describe','model','keys','query','filters','intersection','attributes','fields'];(function(_0x1e20c6,_0x573a5a){var _0x1d4bc3=function(_0x49115f){while(--_0x49115f){_0x1e20c6['push'](_0x1e20c6['shift']());}};_0x1d4bc3(++_0x573a5a);}(_0xa349,0x74));var _0x9a34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa349[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9a34('0x0'));var rimraf=require(_0x9a34('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9a34('0x2'));var rp=require(_0x9a34('0x3'));var moment=require(_0x9a34('0x4'));var BPromise=require(_0x9a34('0x5'));var Mustache=require('mustache');var util=require(_0x9a34('0x6'));var path=require(_0x9a34('0x7'));var sox=require(_0x9a34('0x8'));var csv=require(_0x9a34('0x9'));var ejs=require(_0x9a34('0xa'));var fs=require('fs');var fs_extra=require(_0x9a34('0xb'));var _=require(_0x9a34('0xc'));var squel=require(_0x9a34('0xd'));var crypto=require(_0x9a34('0xe'));var jsforce=require(_0x9a34('0xf'));var deskjs=require(_0x9a34('0x10'));var toCsv=require(_0x9a34('0x9'));var querystring=require(_0x9a34('0x11'));var Papa=require(_0x9a34('0x12'));var Redis=require(_0x9a34('0x13'));var authService=require(_0x9a34('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9a34('0x15'));var logger=require(_0x9a34('0x16'))(_0x9a34('0x17'));var utils=require(_0x9a34('0x18'));var config=require(_0x9a34('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e09ae,_0xf81c05){_0xf81c05=_0xf81c05||0xcc;return function(_0x1f0520){if(_0x1f0520){return _0x4e09ae[_0x9a34('0x1a')](_0xf81c05);}return _0x4e09ae[_0x9a34('0x1b')](_0xf81c05)['end']();};}function respondWithResult(_0x1b2e50,_0x42c8db){_0x42c8db=_0x42c8db||0xc8;return function(_0x168c3b){if(_0x168c3b){return _0x1b2e50[_0x9a34('0x1b')](_0x42c8db)[_0x9a34('0x1c')](_0x168c3b);}};}function respondWithFilteredResult(_0x5933b4,_0x203488){return function(_0x465d77){if(_0x465d77){var _0x55b35e=typeof _0x203488[_0x9a34('0x1d')]===_0x9a34('0x1e')&&typeof _0x203488[_0x9a34('0x1f')]==='undefined';var _0x5bc711=_0x465d77[_0x9a34('0x20')];var _0x32b04b=_0x55b35e?0x0:_0x203488[_0x9a34('0x1d')];var _0x2b332f=_0x55b35e?_0x465d77[_0x9a34('0x20')]:_0x203488[_0x9a34('0x1d')]+_0x203488[_0x9a34('0x1f')];var _0x33e654;if(_0x2b332f>=_0x5bc711){_0x2b332f=_0x5bc711;_0x33e654=0xc8;}else{_0x33e654=0xce;}_0x5933b4[_0x9a34('0x1b')](_0x33e654);return _0x5933b4['set']('Content-Range',_0x32b04b+'-'+_0x2b332f+'/'+_0x5bc711)[_0x9a34('0x1c')](_0x465d77);}return null;};}function patchUpdates(_0x2d7fbe){return function(_0x13ec73){try{jsonpatch[_0x9a34('0x21')](_0x13ec73,_0x2d7fbe,!![]);}catch(_0x103f6f){return BPromise[_0x9a34('0x22')](_0x103f6f);}return _0x13ec73[_0x9a34('0x23')]();};}function saveUpdates(_0x4a75dc,_0x4d2d40){return function(_0x359c8a){if(_0x359c8a){return _0x359c8a[_0x9a34('0x24')](_0x4a75dc)[_0x9a34('0x25')](function(_0x48c77d){return _0x48c77d;});}return null;};}function removeEntity(_0x50e7f9,_0x1c142d){return function(_0xbd86e4){if(_0xbd86e4){return _0xbd86e4[_0x9a34('0x26')]()[_0x9a34('0x25')](function(){var _0x39c6cf=_0xbd86e4['get']({'plain':!![]});var _0x65f48a='Companies';return db[_0x9a34('0x27')][_0x9a34('0x26')]({'where':{'type':_0x65f48a,'resourceId':_0x39c6cf['id']}})[_0x9a34('0x25')](function(){return _0xbd86e4;});})['then'](function(){_0x50e7f9[_0x9a34('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x30b072,_0x1fb7f5){return function(_0x1b37f9){if(!_0x1b37f9){_0x30b072['sendStatus'](0x194);}return _0x1b37f9;};}function handleError(_0x29b370,_0x3966d5){_0x3966d5=_0x3966d5||0x1f4;return function(_0x16e3fc){logger['error'](_0x16e3fc[_0x9a34('0x28')]);if(_0x16e3fc[_0x9a34('0x29')]){delete _0x16e3fc[_0x9a34('0x29')];}_0x29b370['status'](_0x3966d5)[_0x9a34('0x2a')](_0x16e3fc);};}exports[_0x9a34('0x2b')]=function(_0x36143d,_0x2d83ec){var _0x4ba248={},_0x5526a2={},_0x5049bd={'count':0x0,'rows':[]};return db['CmCompany'][_0x9a34('0x2c')]()[_0x9a34('0x25')](function(_0x31f241){_0x5526a2[_0x9a34('0x2d')]=_[_0x9a34('0x2e')](_0x31f241);_0x5526a2[_0x9a34('0x2f')]=_['keys'](_0x36143d['query']);_0x5526a2[_0x9a34('0x30')]=_[_0x9a34('0x31')](_0x5526a2[_0x9a34('0x2d')],_0x5526a2[_0x9a34('0x2f')]);_0x4ba248[_0x9a34('0x32')]=_[_0x9a34('0x31')](_0x5526a2['model'],qs[_0x9a34('0x33')](_0x36143d[_0x9a34('0x2f')][_0x9a34('0x33')]));_0x4ba248[_0x9a34('0x32')]=_0x4ba248[_0x9a34('0x32')]['length']?_0x4ba248[_0x9a34('0x32')]:_0x5526a2[_0x9a34('0x2d')];if(!_0x36143d['query'][_0x9a34('0x34')](_0x9a34('0x35'))){_0x4ba248[_0x9a34('0x1f')]=qs[_0x9a34('0x1f')](_0x36143d[_0x9a34('0x2f')]['limit']);_0x4ba248[_0x9a34('0x1d')]=qs['offset'](_0x36143d[_0x9a34('0x2f')]['offset']);}_0x4ba248[_0x9a34('0x36')]=qs['sort'](_0x36143d[_0x9a34('0x2f')][_0x9a34('0x37')]);_0x4ba248['where']=qs[_0x9a34('0x30')](_[_0x9a34('0x38')](_0x36143d[_0x9a34('0x2f')],_0x5526a2['filters']),_0x31f241);if(_0x36143d['query']['filter']){_0x4ba248[_0x9a34('0x39')]=_[_0x9a34('0x3a')](_0x4ba248[_0x9a34('0x39')],{'$or':_['map'](_0x4ba248[_0x9a34('0x32')],function(_0x31e3b8){var _0xf67492={};_0xf67492[_0x31e3b8]={'$like':'%'+_0x36143d['query'][_0x9a34('0x3b')]+'%'};return _0xf67492;})});}_0x4ba248=_[_0x9a34('0x3a')]({},_0x4ba248,_0x36143d[_0x9a34('0x3c')]);var _0x56ebb2={'where':_0x4ba248[_0x9a34('0x39')]};return db[_0x9a34('0x3d')][_0x9a34('0x20')](_0x56ebb2)[_0x9a34('0x25')](function(_0xd34ac3){_0x5049bd[_0x9a34('0x20')]=_0xd34ac3;if(_0x36143d[_0x9a34('0x2f')]['includeAll']){_0x4ba248[_0x9a34('0x3e')]=[{'all':!![]}];}return db[_0x9a34('0x3d')][_0x9a34('0x3f')](_0x4ba248);})[_0x9a34('0x25')](function(_0x3329c0){_0x5049bd[_0x9a34('0x40')]=_0x3329c0;return _0x5049bd;})[_0x9a34('0x25')](respondWithFilteredResult(_0x2d83ec,_0x4ba248))['catch'](handleError(_0x2d83ec,null));})[_0x9a34('0x41')](handleError(_0x2d83ec,null));};exports[_0x9a34('0x42')]=function(_0x33dbe7,_0x39b9dc){var _0x448c7f={'raw':![],'where':{'id':_0x33dbe7['params']['id']}},_0x52059a={};_0x52059a[_0x9a34('0x2d')]=_[_0x9a34('0x2e')](db[_0x9a34('0x3d')]['rawAttributes']);_0x52059a[_0x9a34('0x2f')]=_[_0x9a34('0x2e')](_0x33dbe7['query']);_0x52059a[_0x9a34('0x30')]=_[_0x9a34('0x31')](_0x52059a['model'],_0x52059a[_0x9a34('0x2f')]);_0x448c7f[_0x9a34('0x32')]=_[_0x9a34('0x31')](_0x52059a[_0x9a34('0x2d')],qs[_0x9a34('0x33')](_0x33dbe7['query'][_0x9a34('0x33')]));_0x448c7f[_0x9a34('0x32')]=_0x448c7f['attributes'][_0x9a34('0x43')]?_0x448c7f[_0x9a34('0x32')]:_0x52059a['model'];if(_0x33dbe7['query'][_0x9a34('0x44')]){_0x448c7f[_0x9a34('0x3e')]=[{'all':!![]}];}_0x448c7f=_['merge']({},_0x448c7f,_0x33dbe7[_0x9a34('0x3c')]);return db[_0x9a34('0x3d')][_0x9a34('0x45')](_0x448c7f)['then'](handleEntityNotFound(_0x39b9dc,null))['then'](respondWithResult(_0x39b9dc,null))[_0x9a34('0x41')](handleError(_0x39b9dc,null));};exports['create']=function(_0x1fe373,_0x1287af){return db[_0x9a34('0x3d')][_0x9a34('0x46')](_0x1fe373['body'],{})[_0x9a34('0x25')](function(_0xea9396){var _0x249e2f=_0x1fe373['user'][_0x9a34('0x47')]({'plain':!![]});if(!_0x249e2f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x249e2f[_0x9a34('0x48')]===_0x9a34('0x49')){var _0x238b94=_0xea9396[_0x9a34('0x47')]({'plain':!![]});var _0x2ee0b9='Companies';return db[_0x9a34('0x4a')][_0x9a34('0x45')]({'where':{'name':_0x2ee0b9,'userProfileId':_0x249e2f[_0x9a34('0x4b')]},'raw':!![]})[_0x9a34('0x25')](function(_0x39ed61){if(_0x39ed61&&_0x39ed61[_0x9a34('0x4c')]===0x0){return db[_0x9a34('0x27')][_0x9a34('0x46')]({'name':_0x238b94[_0x9a34('0x29')],'resourceId':_0x238b94['id'],'type':_0x39ed61['name'],'sectionId':_0x39ed61['id']},{})['then'](function(){return _0xea9396;});}else{return _0xea9396;}})[_0x9a34('0x41')](function(_0x2dc7a7){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2dc7a7);throw _0x2dc7a7;});}return _0xea9396;})[_0x9a34('0x25')](respondWithResult(_0x1287af,0xc9))[_0x9a34('0x41')](handleError(_0x1287af,null));};exports['update']=function(_0xfe9671,_0x50cfc7){if(_0xfe9671[_0x9a34('0x4d')]['id']){delete _0xfe9671[_0x9a34('0x4d')]['id'];}return db[_0x9a34('0x3d')][_0x9a34('0x45')]({'where':{'id':_0xfe9671[_0x9a34('0x4e')]['id']}})[_0x9a34('0x25')](handleEntityNotFound(_0x50cfc7,null))[_0x9a34('0x25')](saveUpdates(_0xfe9671['body'],null))[_0x9a34('0x25')](respondWithResult(_0x50cfc7,null))[_0x9a34('0x41')](handleError(_0x50cfc7,null));};exports['destroy']=function(_0x716089,_0x551b38){return db[_0x9a34('0x3d')][_0x9a34('0x45')]({'where':{'id':_0x716089[_0x9a34('0x4e')]['id']}})['then'](handleEntityNotFound(_0x551b38,null))['then'](removeEntity(_0x551b38,null))[_0x9a34('0x41')](handleError(_0x551b38,null));};exports[_0x9a34('0x2c')]=function(_0x266685,_0x4334af){return db[_0x9a34('0x3d')][_0x9a34('0x2c')]()[_0x9a34('0x25')](respondWithResult(_0x4334af,null))[_0x9a34('0x41')](handleError(_0x4334af,null));};exports[_0x9a34('0x4f')]=function(_0x577773,_0x2b913f,_0x3cacf8){return db['CmContact'][_0x9a34('0x45')]({'where':{'id':_0x577773['params']['id']}})['then'](handleEntityNotFound(_0x2b913f,null))[_0x9a34('0x25')](function(_0x4bc46c){if(_0x4bc46c){return _0x4bc46c[_0x9a34('0x4f')](_0x577773[_0x9a34('0x4d')]['ids'],_['omit'](_0x577773[_0x9a34('0x4d')],['ids','id'])||{});}})[_0x9a34('0x25')](respondWithResult(_0x2b913f,null))[_0x9a34('0x41')](handleError(_0x2b913f,null));};exports[_0x9a34('0x50')]=function(_0x654b7d,_0x3c5739,_0x16af84){var _0x564074={};var _0x4ef865={};var _0x29119d;var _0x23b980;return db[_0x9a34('0x3d')]['findOne']({'where':{'id':_0x654b7d[_0x9a34('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c5739,null))[_0x9a34('0x25')](function(_0x1b5340){if(_0x1b5340){_0x29119d=_0x1b5340;_0x4ef865[_0x9a34('0x2d')]=_[_0x9a34('0x2e')](db[_0x9a34('0x51')][_0x9a34('0x52')]);_0x4ef865['query']=_[_0x9a34('0x2e')](_0x654b7d[_0x9a34('0x2f')]);_0x4ef865[_0x9a34('0x30')]=_[_0x9a34('0x31')](_0x4ef865[_0x9a34('0x2d')],_0x4ef865[_0x9a34('0x2f')]);_0x564074['attributes']=_[_0x9a34('0x31')](_0x4ef865[_0x9a34('0x2d')],qs[_0x9a34('0x33')](_0x654b7d[_0x9a34('0x2f')][_0x9a34('0x33')]));_0x564074[_0x9a34('0x32')]=_0x564074[_0x9a34('0x32')][_0x9a34('0x43')]?_0x564074['attributes']:_0x4ef865[_0x9a34('0x2d')];_0x564074[_0x9a34('0x36')]=qs[_0x9a34('0x37')](_0x654b7d[_0x9a34('0x2f')][_0x9a34('0x37')]);_0x564074[_0x9a34('0x39')]=qs['filters'](_[_0x9a34('0x38')](_0x654b7d[_0x9a34('0x2f')],_0x4ef865[_0x9a34('0x30')]));if(_0x654b7d[_0x9a34('0x2f')]['filter']){_0x564074[_0x9a34('0x39')]=_['merge'](_0x564074[_0x9a34('0x39')],{'$or':_[_0x9a34('0x53')](_0x564074['attributes'],function(_0x346df1){var _0xe0e1ec={};_0xe0e1ec[_0x346df1]={'$like':'%'+_0x654b7d['query']['filter']+'%'};return _0xe0e1ec;})});}_0x564074=_['merge']({},_0x564074,_0x654b7d[_0x9a34('0x3c')]);return _0x29119d[_0x9a34('0x50')](_0x564074);}})[_0x9a34('0x25')](function(_0x5670d0){if(_0x5670d0){_0x23b980=_0x5670d0[_0x9a34('0x43')];if(!_0x654b7d['query']['hasOwnProperty'](_0x9a34('0x35'))){_0x564074[_0x9a34('0x1f')]=qs[_0x9a34('0x1f')](_0x654b7d[_0x9a34('0x2f')][_0x9a34('0x1f')]);_0x564074['offset']=qs['offset'](_0x654b7d['query'][_0x9a34('0x1d')]);}return _0x29119d[_0x9a34('0x50')](_0x564074);}})[_0x9a34('0x25')](function(_0x5f00cf){if(_0x5f00cf){return _0x5f00cf?{'count':_0x23b980,'rows':_0x5f00cf}:null;}})[_0x9a34('0x25')](respondWithResult(_0x3c5739,null))['catch'](handleError(_0x3c5739,null));};
\ No newline at end of file
index d31c76e..26f9f53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbd2=['exports','define','CmCompany','cm_companies','lodash','util','moment','request-promise','path','../../config/environment'];(function(_0xe67c79,_0x220587){var _0x4a8b94=function(_0x1ceb45){while(--_0x1ceb45){_0xe67c79['push'](_0xe67c79['shift']());}};_0x4a8b94(++_0x220587);}(_0xbbd2,0xe0));var _0x2bbd=function(_0x393500,_0x1037af){_0x393500=_0x393500-0x0;var _0x120d3b=_0xbbd2[_0x393500];return _0x120d3b;};'use strict';var _=require(_0x2bbd('0x0'));var util=require(_0x2bbd('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2bbd('0x2'));var BPromise=require('bluebird');var rp=require(_0x2bbd('0x3'));var fs=require('fs');var path=require(_0x2bbd('0x4'));var rimraf=require('rimraf');var config=require(_0x2bbd('0x5'));var attributes=require('./cmCompany.attributes');module[_0x2bbd('0x6')]=function(_0x4ce103,_0x317774){return _0x4ce103[_0x2bbd('0x7')](_0x2bbd('0x8'),attributes,{'tableName':_0x2bbd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b4b=['api','bluebird','request-promise','path','../../config/environment','./cmCompany.attributes','exports','define','../../config/logger'];(function(_0x417320,_0x3aeafc){var _0x1054c7=function(_0x2ea43d){while(--_0x2ea43d){_0x417320['push'](_0x417320['shift']());}};_0x1054c7(++_0x3aeafc);}(_0x1b4b,0x18b));var _0xb1b4=function(_0x1ea059,_0x1188f5){_0x1ea059=_0x1ea059-0x0;var _0x312cee=_0x1b4b[_0x1ea059];return _0x312cee;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb1b4('0x0'))(_0xb1b4('0x1'));var moment=require('moment');var BPromise=require(_0xb1b4('0x2'));var rp=require(_0xb1b4('0x3'));var fs=require('fs');var path=require(_0xb1b4('0x4'));var rimraf=require('rimraf');var config=require(_0xb1b4('0x5'));var attributes=require(_0xb1b4('0x6'));module[_0xb1b4('0x7')]=function(_0xb4a087,_0x12c16a){return _0xb4a087[_0xb1b4('0x8')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2babfe6..5d205cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1a=['info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1d1a,0xb9));var _0xa1d1=function(_0x12d1cb,_0x5110c8){_0x12d1cb=_0x12d1cb-0x0;var _0x5c8068=_0x1d1a[_0x12d1cb];return _0x5c8068;};'use strict';var _=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var moment=require(_0xa1d1('0x2'));var BPromise=require(_0xa1d1('0x3'));var rs=require(_0xa1d1('0x4'));var fs=require('fs');var Redis=require(_0xa1d1('0x5'));var db=require(_0xa1d1('0x6'))['db'];var utils=require(_0xa1d1('0x7'));var logger=require(_0xa1d1('0x8'))(_0xa1d1('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa1d1('0xa')][_0xa1d1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20410b,_0x25979a,_0x10b46b){return new BPromise(function(_0x3c3d50,_0x7a1586){return client['request'](_0x20410b,_0x10b46b)[_0xa1d1('0xc')](function(_0x3cef7a){logger[_0xa1d1('0xd')](_0xa1d1('0xe'),_0x25979a,_0xa1d1('0xf'));logger[_0xa1d1('0x10')](_0xa1d1('0x11'),_0x25979a,'request\x20sent',JSON['stringify'](_0x3cef7a));if(_0x3cef7a['error']){if(_0x3cef7a[_0xa1d1('0x12')]['code']===0x1f4){logger[_0xa1d1('0x12')]('CmCompany,\x20%s,\x20%s',_0x25979a,_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);return _0x7a1586(_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);}logger[_0xa1d1('0x12')](_0xa1d1('0xe'),_0x25979a,_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);return _0x3c3d50(_0x3cef7a[_0xa1d1('0x12')][_0xa1d1('0x13')]);}else{logger[_0xa1d1('0xd')](_0xa1d1('0xe'),_0x25979a,'request\x20sent');_0x3c3d50(_0x3cef7a[_0xa1d1('0x14')][_0xa1d1('0x13')]);}})[_0xa1d1('0x15')](function(_0x6f6ea0){logger[_0xa1d1('0x12')](_0xa1d1('0xe'),_0x25979a,_0x6f6ea0);_0x7a1586(_0x6f6ea0);});});}
\ No newline at end of file
+var _0x7bc6=['jayson/promise','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x360e59,_0x4fdbcb){var _0x50b612=function(_0x929194){while(--_0x929194){_0x360e59['push'](_0x360e59['shift']());}};_0x50b612(++_0x4fdbcb);}(_0x7bc6,0xbc));var _0x67bc=function(_0x20410e,_0x11ea83){_0x20410e=_0x20410e-0x0;var _0x18e1cc=_0x7bc6[_0x20410e];return _0x18e1cc;};'use strict';var _=require(_0x67bc('0x0'));var util=require(_0x67bc('0x1'));var moment=require(_0x67bc('0x2'));var BPromise=require(_0x67bc('0x3'));var rs=require(_0x67bc('0x4'));var fs=require('fs');var Redis=require(_0x67bc('0x5'));var db=require(_0x67bc('0x6'))['db'];var utils=require(_0x67bc('0x7'));var logger=require('../../config/logger')(_0x67bc('0x8'));var config=require(_0x67bc('0x9'));var jayson=require(_0x67bc('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x225382,_0x36f392,_0xca9a7e){return new BPromise(function(_0xd145fa,_0x105dab){return client[_0x67bc('0xb')](_0x225382,_0xca9a7e)[_0x67bc('0xc')](function(_0x45a9bf){logger[_0x67bc('0xd')](_0x67bc('0xe'),_0x36f392,_0x67bc('0xf'));logger[_0x67bc('0x10')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x36f392,'request\x20sent',JSON[_0x67bc('0x11')](_0x45a9bf));if(_0x45a9bf[_0x67bc('0x12')]){if(_0x45a9bf[_0x67bc('0x12')][_0x67bc('0x13')]===0x1f4){logger[_0x67bc('0x12')](_0x67bc('0xe'),_0x36f392,_0x45a9bf[_0x67bc('0x12')][_0x67bc('0x14')]);return _0x105dab(_0x45a9bf['error'][_0x67bc('0x14')]);}logger[_0x67bc('0x12')]('CmCompany,\x20%s,\x20%s',_0x36f392,_0x45a9bf[_0x67bc('0x12')]['message']);return _0xd145fa(_0x45a9bf[_0x67bc('0x12')]['message']);}else{logger['info']('CmCompany,\x20%s,\x20%s',_0x36f392,_0x67bc('0xf'));_0xd145fa(_0x45a9bf[_0x67bc('0x15')][_0x67bc('0x14')]);}})['catch'](function(_0x801ee7){logger['error']('CmCompany,\x20%s,\x20%s',_0x36f392,_0x801ee7);_0x105dab(_0x801ee7);});});}
\ No newline at end of file
index 2a0c16a..6f06158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x119b=['get','describe','show','/:id/contacts','getContacts','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated'];(function(_0x239e38,_0x501c54){var _0x5a744c=function(_0x20b0c6){while(--_0x20b0c6){_0x239e38['push'](_0x239e38['shift']());}};_0x5a744c(++_0x501c54);}(_0x119b,0x7a));var _0xb119=function(_0x301c34,_0x15701e){_0x301c34=_0x301c34-0x0;var _0x1a8c5a=_0x119b[_0x301c34];return _0x1a8c5a;};'use strict';var multer=require(_0xb119('0x0'));var util=require(_0xb119('0x1'));var path=require(_0xb119('0x2'));var timeout=require(_0xb119('0x3'));var express=require(_0xb119('0x4'));var router=express[_0xb119('0x5')]();var fs_extra=require(_0xb119('0x6'));var auth=require(_0xb119('0x7'));var interaction=require(_0xb119('0x8'));var config=require('../../config/environment');var controller=require('./cmCompany.controller');router['get']('/',auth[_0xb119('0x9')](),controller['index']);router[_0xb119('0xa')]('/describe',auth[_0xb119('0x9')](),controller[_0xb119('0xb')]);router[_0xb119('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xb119('0xc')]);router[_0xb119('0xa')](_0xb119('0xd'),auth[_0xb119('0x9')](),controller[_0xb119('0xe')]);router[_0xb119('0xf')]('/',auth[_0xb119('0x9')](),controller['create']);router[_0xb119('0xf')](_0xb119('0xd'),auth[_0xb119('0x9')](),controller['addContacts']);router[_0xb119('0x10')](_0xb119('0x11'),auth[_0xb119('0x9')](),controller[_0xb119('0x12')]);router[_0xb119('0x13')](_0xb119('0x11'),auth[_0xb119('0x9')](),controller[_0xb119('0x14')]);module[_0xb119('0x15')]=router;
\ No newline at end of file
+var _0x431d=['get','isAuthenticated','/:id','/:id/contacts','getContacts','create','post','put','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller'];(function(_0x534b61,_0x106cad){var _0x30de7f=function(_0x1be43f){while(--_0x1be43f){_0x534b61['push'](_0x534b61['shift']());}};_0x30de7f(++_0x106cad);}(_0x431d,0x10f));var _0xd431=function(_0x5a4ac1,_0x2f8345){_0x5a4ac1=_0x5a4ac1-0x0;var _0x54fb9d=_0x431d[_0x5a4ac1];return _0x54fb9d;};'use strict';var multer=require(_0xd431('0x0'));var util=require('util');var path=require(_0xd431('0x1'));var timeout=require(_0xd431('0x2'));var express=require(_0xd431('0x3'));var router=express['Router']();var fs_extra=require(_0xd431('0x4'));var auth=require(_0xd431('0x5'));var interaction=require(_0xd431('0x6'));var config=require(_0xd431('0x7'));var controller=require(_0xd431('0x8'));router[_0xd431('0x9')]('/',auth[_0xd431('0xa')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0xd431('0xb'),auth[_0xd431('0xa')](),controller['show']);router[_0xd431('0x9')](_0xd431('0xc'),auth['isAuthenticated'](),controller[_0xd431('0xd')]);router['post']('/',auth[_0xd431('0xa')](),controller[_0xd431('0xe')]);router[_0xd431('0xf')](_0xd431('0xc'),auth['isAuthenticated'](),controller['addContacts']);router[_0xd431('0x10')](_0xd431('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xd431('0x11')](_0xd431('0xb'),auth[_0xd431('0xa')](),controller[_0xd431('0x12')]);module[_0xd431('0x13')]=router;
\ No newline at end of file
index 582ae30..d54cc7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3665=['INTEGER','UNSIGNED','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x23405c,_0x2972e5){var _0x8a1f0a=function(_0x3c40b7){while(--_0x3c40b7){_0x23405c['push'](_0x23405c['shift']());}};_0x8a1f0a(++_0x2972e5);}(_0x3665,0x10b));var _0x5366=function(_0x4a434d,_0xb94e4e){_0x4a434d=_0x4a434d-0x0;var _0x1ee26c=_0x3665[_0x4a434d];return _0x1ee26c;};'use strict';var _=require(_0x5366('0x0'));var Sequelize=require(_0x5366('0x1'));module[_0x5366('0x2')]={'firstName':{'type':Sequelize[_0x5366('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x5366('0x3')]},'street':{'type':Sequelize[_0x5366('0x3')]},'postalCode':{'type':Sequelize[_0x5366('0x3')]},'city':{'type':Sequelize[_0x5366('0x3')]},'country':{'type':Sequelize[_0x5366('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5366('0x4')]},'phone':{'type':Sequelize[_0x5366('0x3')]},'mobile':{'type':Sequelize[_0x5366('0x3')]},'fax':{'type':Sequelize[_0x5366('0x3')]},'email':{'type':Sequelize[_0x5366('0x3')]},'url':{'type':Sequelize[_0x5366('0x3')]},'facebook':{'type':Sequelize[_0x5366('0x3')]},'fb_data':{'type':Sequelize[_0x5366('0x3')]},'twitter':{'type':Sequelize[_0x5366('0x3')]},'skype':{'type':Sequelize[_0x5366('0x3')]},'teams':{'type':Sequelize[_0x5366('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x5366('0x3')]},'wechat':{'type':Sequelize[_0x5366('0x3')]},'telegram':{'type':Sequelize[_0x5366('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0x5366('0x5')](0x2)[_0x5366('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0x5366('0x7')]}};
\ No newline at end of file
+var _0xda0d=['DATE','lodash','sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED'];(function(_0x2a9f4,_0x25c14a){var _0x3c39e0=function(_0x3b8deb){while(--_0x3b8deb){_0x2a9f4['push'](_0x2a9f4['shift']());}};_0x3c39e0(++_0x25c14a);}(_0xda0d,0x111));var _0xdda0=function(_0x3e6dc3,_0x191cef){_0x3e6dc3=_0x3e6dc3-0x0;var _0x4397d4=_0xda0d[_0x3e6dc3];return _0x4397d4;};'use strict';var _=require(_0xdda0('0x0'));var Sequelize=require(_0xdda0('0x1'));module[_0xdda0('0x2')]={'firstName':{'type':Sequelize[_0xdda0('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xdda0('0x3')]},'street':{'type':Sequelize[_0xdda0('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xdda0('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xdda0('0x3')]},'description':{'type':Sequelize[_0xdda0('0x4')]},'phone':{'type':Sequelize[_0xdda0('0x3')]},'mobile':{'type':Sequelize[_0xdda0('0x3')]},'fax':{'type':Sequelize[_0xdda0('0x3')]},'email':{'type':Sequelize[_0xdda0('0x3')]},'url':{'type':Sequelize[_0xdda0('0x3')]},'facebook':{'type':Sequelize[_0xdda0('0x3')]},'fb_data':{'type':Sequelize[_0xdda0('0x3')]},'twitter':{'type':Sequelize[_0xdda0('0x3')]},'skype':{'type':Sequelize[_0xdda0('0x3')]},'teams':{'type':Sequelize[_0xdda0('0x3')]},'viber':{'type':Sequelize[_0xdda0('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xdda0('0x3')]},'telegram':{'type':Sequelize[_0xdda0('0x3')]},'UserId':{'type':Sequelize[_0xdda0('0x5')]},'priority':{'type':Sequelize[_0xdda0('0x5')](0x2)[_0xdda0('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xdda0('0x7')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 7a78b6d..282b96e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe7=['undefined','limit','count','set','Content-Range','json','update','then','destroy','end','sendStatus','error','name','send','index','CmContact','describe','keys','length','CmCustomField','findOne','all','cf_','fieldType','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','select','field','tools_tags','from','cm_contacts','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','uc.UserId\x20=\x20?','dateOfBirth','castTo','buildExpression','start','filter','isNil','Contact','push','isEmpty','ListId','c.ListId\x20IN\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','Sequelize','QueryTypes','SELECT','clone','order','DESC','user','role','agent','getLists','c.ListId\x20IS\x20NULL','toString','sequelize','keyBy','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','startsWith','columnName','analytics','findAll','alias','custom','values','merge','body','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','duplicates','findOrCreate','spread','$and','omit','format','pickBy','cf_%d','table','setFields','id\x20=\x20?','toParam','text','phone','CmHopper','rawAttributes','pick','getTags','setTags','getHoppers','ContactId','include','options','CmHopperFinal','includeAll','No\x20ListId\x20specified','binding_keys','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','firstName','No\x20firstName\x20column\x20specified','root','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','pid','createReadStream','file','meta','import','No\x20phone\x20column\x20specified','binding','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','mail','sms','fax','whatsapp','voice','-createdAt','resolve','channel','Invalid\x20channel','toLowerCase','parse','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','callerid','starttime','note','createdAt','userSecondDisposition','userThirdDisposition','fullname','findAndCountAll','startCase','Account','closed','closedAt','disposition','thirdDisposition','UserId','Owner','chat','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','openchannel','Interaction','sortBy','reverse','slice','moment','bluebird','path','lodash','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./cmContact.socket','register','status','offset'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcfe7,0xfb));var _0x7cfe=function(_0x4be2c9,_0x574826){_0x4be2c9=_0x4be2c9-0x0;var _0x54b362=_0xcfe7[_0x4be2c9];return _0x54b362;};'use strict';var moment=require(_0x7cfe('0x0'));var BPromise=require(_0x7cfe('0x1'));var util=require('util');var path=require(_0x7cfe('0x2'));var fs=require('fs');var _=require(_0x7cfe('0x3'));var squel=require('squel');var Papa=require(_0x7cfe('0x4'));var Redis=require(_0x7cfe('0x5'));var qs=require(_0x7cfe('0x6'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x7cfe('0x7'))(_0x7cfe('0x8'));var config=require(_0x7cfe('0x9'));var db=require(_0x7cfe('0xa'))['db'];config[_0x7cfe('0xb')]=_['defaults'](config[_0x7cfe('0xb')],{'host':_0x7cfe('0xc'),'port':0x18eb});var socket=require(_0x7cfe('0xd'))(new Redis(config[_0x7cfe('0xb')]));require(_0x7cfe('0xe'))[_0x7cfe('0xf')](socket);function respondWithResult(_0x5b9101,_0x2ccc90){_0x2ccc90=_0x2ccc90||0xc8;return function(_0x30d8e9){if(_0x30d8e9){return _0x5b9101[_0x7cfe('0x10')](_0x2ccc90)['json'](_0x30d8e9);}};}function respondWithFilteredResult(_0x4ce217,_0x142f67){return function(_0x193fdb){if(_0x193fdb){var _0x2e2caa=typeof _0x142f67[_0x7cfe('0x11')]===_0x7cfe('0x12')&&typeof _0x142f67[_0x7cfe('0x13')]==='undefined';var _0x59ed79=_0x193fdb[_0x7cfe('0x14')];var _0x3e1810=_0x2e2caa?0x0:_0x142f67['offset'];var _0x50bceb=_0x2e2caa?_0x193fdb[_0x7cfe('0x14')]:_0x142f67[_0x7cfe('0x11')]+_0x142f67[_0x7cfe('0x13')];var _0x2c5ea8;if(_0x50bceb>=_0x59ed79){_0x50bceb=_0x59ed79;_0x2c5ea8=0xc8;}else{_0x2c5ea8=0xce;}_0x4ce217['status'](_0x2c5ea8);return _0x4ce217[_0x7cfe('0x15')](_0x7cfe('0x16'),_0x3e1810+'-'+_0x50bceb+'/'+_0x59ed79)[_0x7cfe('0x17')](_0x193fdb);}return null;};}function saveUpdates(_0x15747b){return function(_0xe613f4){if(_0xe613f4){return _0xe613f4[_0x7cfe('0x18')](_0x15747b)[_0x7cfe('0x19')](function(_0x2f8d59){return _0x2f8d59;});}return null;};}function removeEntity(_0x45bbed){return function(_0x3694e1){if(_0x3694e1){return _0x3694e1[_0x7cfe('0x1a')]()[_0x7cfe('0x19')](function(){_0x45bbed[_0x7cfe('0x10')](0xcc)[_0x7cfe('0x1b')]();});}};}function handleEntityNotFound(_0x420b0b){return function(_0x384b80){if(!_0x384b80){_0x420b0b[_0x7cfe('0x1c')](0x194);}return _0x384b80;};}function handleError(_0x56daba,_0x7f863c){_0x7f863c=_0x7f863c||0x1f4;return function(_0x4b8247){logger[_0x7cfe('0x1d')](_0x4b8247['stack']);if(_0x4b8247[_0x7cfe('0x1e')]){delete _0x4b8247[_0x7cfe('0x1e')];}_0x56daba[_0x7cfe('0x10')](_0x7f863c)[_0x7cfe('0x1f')](_0x4b8247);};}exports[_0x7cfe('0x20')]=function(_0x4ac7a8,_0x1a7e00){var _0x415504={},_0x56ca57={},_0x5e7fa6={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x4109f8){var _0x3a1ee1=[];for(var _0x18e600=0x0;_0x18e600<Object[_0x7cfe('0x23')](_0x4109f8)[_0x7cfe('0x24')];_0x18e600++){var _0x5a50f4=Object[_0x7cfe('0x23')](_0x4109f8)[_0x18e600];if(_['startsWith'](_0x5a50f4,'cf_')){_0x3a1ee1['push'](db[_0x7cfe('0x25')][_0x7cfe('0x26')]({'where':{'id':_['trimStart'](_0x5a50f4,'cf_')},'raw':!![]}));}}return BPromise[_0x7cfe('0x27')](_0x3a1ee1)['then'](function(_0x4c746f){for(var _0xc34e39=0x0;_0xc34e39<_0x4c746f[_0x7cfe('0x24')];_0xc34e39++){if(_0x4c746f[_0xc34e39]){var _0x4dd717=_0x7cfe('0x28')+_0x4c746f[_0xc34e39]['id'];var _0x2dde2b=_0x4109f8[_0x4dd717];_0x2dde2b[_0x7cfe('0x29')]=_0x4c746f[_0xc34e39][_0x7cfe('0x2a')];}}return _0x4109f8;});})['then'](function(_0x22bec9){_0x56ca57[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](_0x22bec9);_0x56ca57[_0x7cfe('0x2c')]=_['keys'](_0x4ac7a8[_0x7cfe('0x2c')]);_0x56ca57[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x56ca57[_0x7cfe('0x2b')],_0x56ca57[_0x7cfe('0x2c')]);_0x415504[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x56ca57[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x4ac7a8['query'][_0x7cfe('0x30')]));_0x415504[_0x7cfe('0x2f')]=_0x415504[_0x7cfe('0x2f')]['length']?_0x415504[_0x7cfe('0x2f')]:_0x56ca57[_0x7cfe('0x2b')];if(!_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x415504[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x415504[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x4ac7a8['query'][_0x7cfe('0x11')]);}_0x415504['order']=qs[_0x7cfe('0x33')](_0x4ac7a8['query']['sort']);_0x415504[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_['pick'](_0x4ac7a8[_0x7cfe('0x2c')],_0x56ca57[_0x7cfe('0x2d')]),_0x22bec9);var _0x55902a=[];var _0x354f1f=squel[_0x7cfe('0x35')]()[_0x7cfe('0x36')]('id')['field'](_0x7cfe('0x1e'))[_0x7cfe('0x36')]('color')['from'](_0x7cfe('0x37'));var _0x380e2e=squel[_0x7cfe('0x35')]()[_0x7cfe('0x38')](_0x7cfe('0x39'),'c')[_0x7cfe('0x3a')](_0x7cfe('0x3b'),'uc','uc.CmContactId\x20=\x20c.id')[_0x7cfe('0x3a')](_0x7cfe('0x3c'),'ct',_0x7cfe('0x3d'))[_0x7cfe('0x3a')](_0x7cfe('0x37'),'t',_0x7cfe('0x3e'))['where'](_0x7cfe('0x3f'));var _0x3ee1a6=squel[_0x7cfe('0x40')]();var _0x1966fb=[];var _0x367fed=squel[_0x7cfe('0x40')]();var _0x645e0d;if(_0x4ac7a8['query']['search']){_0x645e0d=as[_0x7cfe('0x41')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x42')]);var _0x500e5a=_0x645e0d['sqlOperator'];for(var _0x5bbae6=0x0;_0x5bbae6<_0x645e0d[_0x7cfe('0x43')][_0x7cfe('0x24')];_0x5bbae6++){var _0x38c056=_0x645e0d[_0x7cfe('0x43')][_0x5bbae6];var _0x347449='c';var _0x1cfb10=_(_0x22bec9)[_0x7cfe('0x23')]()[_0x7cfe('0x44')](function(_0x39aafd){return _0x39aafd===_0x38c056['field'];});if(_0x1cfb10)_0x1cfb10=_0x22bec9[_0x38c056[_0x7cfe('0x36')]];if(!_0x1cfb10){if(_0x38c056[_0x7cfe('0x36')]===_0x7cfe('0x45')){var _0x114465=_0x38c056[_0x7cfe('0x46')][_0x7cfe('0x47')](',')[_0x7cfe('0x48')](function(_0x4a0b3d){return Number(_0x4a0b3d);});_0x114465[_0x7cfe('0x49')](function(_0x2e8641){_0x367fed['or'](_0x7cfe('0x4a'),'%,'+_0x2e8641+',%');});_0x1966fb=_['union'](_0x1966fb,_0x114465);}else if(_0x38c056[_0x7cfe('0x36')]===_0x7cfe('0x4b')){_0x3ee1a6[_0x7cfe('0x4c')](_0x7cfe('0x4d'),_0x38c056[_0x7cfe('0x46')]);}}else{if(_0x38c056['field']===_0x7cfe('0x4e')||_0x1cfb10[_0x7cfe('0x29')]==='datetime')_0x38c056[_0x7cfe('0x4f')]='DATE';var _0x3b85e1=as[_0x7cfe('0x50')](_0x347449,_0x1cfb10[_0x7cfe('0x2a')],_0x38c056);_0x3ee1a6[_0x500e5a](_0x3b85e1['text'],_0x3b85e1['value'][_0x7cfe('0x51')],_0x3b85e1[_0x7cfe('0x46')][_0x7cfe('0x1b')]);}}}else{var _0x4a9585=_(Object[_0x7cfe('0x23')](_0x4ac7a8[_0x7cfe('0x2c')]))[_0x7cfe('0x48')](function(_0x34f001){return _0x22bec9[_0x7cfe('0x31')](_0x34f001)?_0x34f001:undefined;})[_0x7cfe('0x52')](function(_0x29363e){return!_[_0x7cfe('0x53')](_0x29363e);})[_0x7cfe('0x46')]();if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x54')])_0x4a9585[_0x7cfe('0x55')](_0x7cfe('0x54'));if(!_[_0x7cfe('0x56')](_0x4a9585)){_0x4a9585['forEach'](function(_0x248281){if(_0x248281===_0x7cfe('0x57')){_0x380e2e[_0x7cfe('0x34')](_0x7cfe('0x58'),[]['concat'](_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]));}else if(_0x248281===_0x7cfe('0x54')){var _0x6e68e1='%'+_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]+'%';_0x380e2e['where']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x6e68e1);}else{_0x380e2e[_0x7cfe('0x34')]('c.'+_0x248281+_0x7cfe('0x59'),_0x4ac7a8[_0x7cfe('0x2c')][_0x248281]);}});}if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')]){_0x1966fb=_[_0x7cfe('0x5b')](_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')])?_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x5a')]:new Array(_0x4ac7a8['query'][_0x7cfe('0x5a')]);_0x1966fb[_0x7cfe('0x49')](function(_0x333671){_0x367fed['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x333671+',%');});}if(_0x4ac7a8[_0x7cfe('0x2c')][_0x7cfe('0x52')]){var _0x1c7e3b=_0x4ac7a8[_0x7cfe('0x2c')]['filter'][_0x7cfe('0x5c')]('\x5c','\x5c\x5c')[_0x7cfe('0x5c')](/'/g,'\x27\x27');if(_0x1c7e3b[_0x7cfe('0x47')]('\x20')[_0x7cfe('0x24')]>0x1){_0x3ee1a6['or'](_0x7cfe('0x5d'),qs['getFullTextValue'](_0x1c7e3b),null);}else{if(qs['isNumeric'](_0x1c7e3b)){_0x3ee1a6['or'](_0x7cfe('0x5e'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x5f'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x60'),_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x61'),_0x1c7e3b+'%');}else if(qs[_0x7cfe('0x62')](_0x1c7e3b)){_0x3ee1a6['or'](_0x7cfe('0x63'),_0x1c7e3b+'%');}else{_0x3ee1a6['or'](_0x7cfe('0x64'),'%'+_0x1c7e3b+'%');_0x3ee1a6['or'](_0x7cfe('0x65'),'%'+_0x1c7e3b+'%');_0x3ee1a6['or']('c.email\x20LIKE\x20?','%'+_0x1c7e3b+'%');}}}}_0x380e2e[_0x7cfe('0x34')](_0x3ee1a6);_0x380e2e['group'](_0x7cfe('0x66'));var _0x810ce5={'type':db[_0x7cfe('0x67')][_0x7cfe('0x68')][_0x7cfe('0x69')],'raw':!![]};var _0x19e1b2=_0x380e2e[_0x7cfe('0x6a')]()[_0x7cfe('0x36')](_0x7cfe('0x66'));if(_0x415504[_0x7cfe('0x6b')]){_0x415504[_0x7cfe('0x6b')][_0x7cfe('0x49')](function(_0x5ba30e){_0x380e2e[_0x7cfe('0x6b')]('c.'+_0x5ba30e[0x0],_0x5ba30e[0x1]===_0x7cfe('0x6c')?![]:!![]);});}if(!_['isEmpty'](_0x1966fb)){_0x380e2e['having'](_0x367fed);_0x19e1b2[_0x7cfe('0x34')]('t.id\x20IN\x20?',_0x1966fb);}BPromise['resolve']()[_0x7cfe('0x19')](function(){if(!_0x645e0d)return;if(_0x4ac7a8[_0x7cfe('0x6d')][_0x7cfe('0x6e')]!==_0x7cfe('0x6f'))return;if(!_['some'](_0x645e0d['conditions'],[_0x7cfe('0x36'),_0x7cfe('0x4b')])){return _0x4ac7a8[_0x7cfe('0x6d')][_0x7cfe('0x70')]({'attributes':['id'],'raw':!![]})[_0x7cfe('0x19')](function(_0x23e02b){if(_[_0x7cfe('0x56')](_0x23e02b)){_0x19e1b2['where'](_0x7cfe('0x71'));_0x380e2e[_0x7cfe('0x34')]('c.ListId\x20IS\x20NULL');}else{_0x19e1b2[_0x7cfe('0x34')](_0x7cfe('0x58'),_[_0x7cfe('0x48')](_0x23e02b,'id'));_0x380e2e[_0x7cfe('0x34')](_0x7cfe('0x58'),_[_0x7cfe('0x48')](_0x23e02b,'id'));}});}})[_0x7cfe('0x19')](function(){if(_0x4ac7a8['user'][_0x7cfe('0x6e')]===_0x7cfe('0x6f')&&!_0x645e0d&&!_0x4ac7a8['query'][_0x7cfe('0x57')])return[];return db['sequelize'][_0x7cfe('0x2c')](_0x19e1b2[_0x7cfe('0x72')](),_0x810ce5);})[_0x7cfe('0x19')](function(_0x27c745){_0x5e7fa6['count']=_0x27c745['length'];if(_0x5e7fa6[_0x7cfe('0x14')]===0x0)return[];return db[_0x7cfe('0x73')]['query'](_0x354f1f[_0x7cfe('0x72')](),_0x810ce5)[_0x7cfe('0x19')](function(_0x5e83c5){_0x55902a=_[_0x7cfe('0x74')](_0x5e83c5,'id');_0x810ce5=_['merge'](_0x810ce5,{'model':db[_0x7cfe('0x21')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ac7a8[_0x7cfe('0x2c')]['fields']){_0x415504[_0x7cfe('0x2f')][_0x7cfe('0x49')](function(_0x427273){_0x380e2e['field']('c.'+_0x427273);});}else{_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x66'));_0x380e2e[_0x7cfe('0x36')]('c.firstName');_0x380e2e[_0x7cfe('0x36')]('c.lastName');_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x75'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x76'));_0x380e2e['field'](_0x7cfe('0x77'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x78'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x79'));_0x380e2e['field'](_0x7cfe('0x7a'));_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x7b'));_0x380e2e['field']('c.CompanyId');_0x380e2e[_0x7cfe('0x36')](_0x7cfe('0x7c'),_0x7cfe('0x7d'));}if(_0x415504[_0x7cfe('0x13')])_0x380e2e['limit'](_0x415504[_0x7cfe('0x13')]);if(_0x415504[_0x7cfe('0x11')])_0x380e2e['offset'](_0x415504[_0x7cfe('0x11')]);return db[_0x7cfe('0x73')][_0x7cfe('0x2c')](_0x380e2e[_0x7cfe('0x72')](),_0x810ce5);});})[_0x7cfe('0x19')](function(_0x463abf){_0x463abf['forEach'](function(_0x7ac8f3){if(_0x7ac8f3['TagIds']){_0x7ac8f3['Tags']=[];_0x7ac8f3[_0x7cfe('0x7d')][_0x7cfe('0x47')](',')[_0x7cfe('0x49')](function(_0x8ff21c){_0x7ac8f3[_0x7cfe('0x7e')]['push'](_0x55902a[_0x8ff21c]);});}delete _0x7ac8f3[_0x7cfe('0x7d')];});_0x5e7fa6[_0x7cfe('0x7f')]=_0x463abf;return _0x5e7fa6;})[_0x7cfe('0x19')](respondWithFilteredResult(_0x1a7e00,_0x415504));})[_0x7cfe('0x80')](handleError(_0x1a7e00,null));};exports['destroy']=function(_0x5ef297,_0x448e18){return db[_0x7cfe('0x21')][_0x7cfe('0x44')]({'where':{'id':_0x5ef297[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x448e18,null))['then'](removeEntity(_0x448e18,null))[_0x7cfe('0x80')](handleError(_0x448e18,null));};exports[_0x7cfe('0x22')]=function(_0xc05f3,_0x1e2ab2){return db[_0x7cfe('0x21')]['describe']()[_0x7cfe('0x19')](function(_0x121b94){delete _0x121b94[_0x7cfe('0x82')];for(var _0x5c1f26=0x0;_0x5c1f26<Object[_0x7cfe('0x23')](_0x121b94)[_0x7cfe('0x24')];_0x5c1f26++){var _0x3406ad=Object['keys'](_0x121b94)[_0x5c1f26];if(!_[_0x7cfe('0x83')](_0x3406ad,_0x7cfe('0x28'))){_0x121b94[_0x3406ad][_0x7cfe('0x84')]=_0x3406ad;_0x121b94[_0x3406ad]['displayName']=_0x3406ad;}}return _0x121b94;})[_0x7cfe('0x19')](function(_0x25db6e){var _0x296352={'where':Boolean(_0xc05f3[_0x7cfe('0x2c')][_0x7cfe('0x85')])===!![]?undefined:{'$or':[{'ListId':_0xc05f3[_0x7cfe('0x2c')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x7cfe('0x25')][_0x7cfe('0x86')](_0x296352)[_0x7cfe('0x19')](function(_0xbb3365){for(var _0x50957b=0x0;_0x50957b<_0xbb3365[_0x7cfe('0x24')];_0x50957b++){var _0x2456dc='cf_'+_0xbb3365[_0x50957b]['id'];_0x25db6e[_0x2456dc][_0x7cfe('0x84')]=_0x2456dc;_0x25db6e[_0x2456dc]['displayName']=_0xbb3365[_0x50957b][_0x7cfe('0x87')];_0x25db6e[_0x2456dc][_0x7cfe('0x88')]={'type':_0xbb3365[_0x50957b]['type'],'values':_0xbb3365[_0x50957b][_0x7cfe('0x89')]};}Object['keys'](_0x25db6e)[_0x7cfe('0x49')](function(_0x53deda){if(!_0x25db6e[_0x53deda][_0x7cfe('0x31')]('columnName')){delete _0x25db6e[_0x53deda];}});return _0x25db6e;});})[_0x7cfe('0x19')](respondWithResult(_0x1e2ab2,null))[_0x7cfe('0x80')](handleError(_0x1e2ab2,null));};exports[_0x7cfe('0x8a')]=function(_0x310a23,_0x459e46){var _0x801ff9;var _0x357f16;var _0x2f8cb6;if(_0x310a23[_0x7cfe('0x8b')]['id']){delete _0x310a23[_0x7cfe('0x8b')]['id'];}return db['CmContact'][_0x7cfe('0x86')]({'where':{'id':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body']['from']]}})['then'](function(_0x2cbe26){if(_0x2cbe26){if(_0x2cbe26['length']!==0x2){return null;}_0x2cbe26[0x0]=_0x2cbe26[0x0][_0x7cfe('0x8c')]({'plain':!![]});_0x2cbe26[0x1]=_0x2cbe26[0x1][_0x7cfe('0x8c')]({'plain':!![]});delete _0x2cbe26[0x0]['id'];delete _0x2cbe26[0x1]['id'];return _[_0x7cfe('0x8d')](_0x2cbe26[0x0],_0x2cbe26[0x1],function(_0x26d5ab,_0x53e035){if(Array['isArray'](_0x53e035)&&!_0x53e035['length']){return _0x26d5ab;}else if(!_0x53e035){return _0x26d5ab;}});}})['then'](handleEntityNotFound(_0x459e46,null))[_0x7cfe('0x19')](function(_0x544ee4){if(_0x544ee4){if(_0x544ee4[_0x7cfe('0x82')]&&_['isArray'](_0x544ee4[_0x7cfe('0x82')])){_0x544ee4[_0x7cfe('0x82')]=_0x544ee4['tags'][_0x7cfe('0x8e')]();}logger[_0x7cfe('0x8f')](_0x7cfe('0x90'),_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]);return db['CmHopper'][_0x7cfe('0x1a')]({'where':{'ContactId':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body'][_0x7cfe('0x38')]]}})[_0x7cfe('0x19')](function(_0x26acb0){logger[_0x7cfe('0x8f')](_0x7cfe('0x91'),_0x26acb0);return db['CmHopperBlack'][_0x7cfe('0x1a')]({'where':{'ContactId':[_0x310a23['body']['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]]}})[_0x7cfe('0x19')](function(_0x4484cc){logger[_0x7cfe('0x8f')](_0x7cfe('0x92'),_0x4484cc);return db['CmContact'][_0x7cfe('0x93')](_0x544ee4);});});}})[_0x7cfe('0x19')](function(_0x2be559){if(_0x2be559){_0x801ff9=_0x2be559;_0x357f16={'ContactId':_0x801ff9['id']};_0x2f8cb6={'where':{'ContactId':[_0x310a23['body']['to'],_0x310a23[_0x7cfe('0x8b')][_0x7cfe('0x38')]]}};return db[_0x7cfe('0x94')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x95')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x96')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x97')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x98')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x97')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['MailMessage'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['SmsInteraction'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x99')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9a')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9b')]['update'](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db['OpenchannelInteraction'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9c')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['CmHopperFinal'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9d')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9e')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['VoiceCallReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db['ChatQueueReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x9f')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa0')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa1')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa2')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa3')][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})['then'](function(){if(_0x801ff9){return db[_0x7cfe('0xa4')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0xa5')]['update'](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db['WhatsappQueueReport'][_0x7cfe('0x18')](_0x357f16,_0x2f8cb6);}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return db[_0x7cfe('0x21')]['destroy']({'where':{'id':[_0x310a23[_0x7cfe('0x8b')]['to'],_0x310a23['body'][_0x7cfe('0x38')]]}});}})[_0x7cfe('0x19')](function(){if(_0x801ff9){return _0x801ff9;}})[_0x7cfe('0x19')](respondWithResult(_0x459e46,null))['catch'](handleError(_0x459e46,null));};exports[_0x7cfe('0x93')]=function(_0x1825d1,_0xe84d26){return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x435806){if(_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]&&_[_0x7cfe('0x5b')](_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')])){if(_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')][_0x7cfe('0x24')]){_0x1825d1['body']['tags']=_0x1825d1['body'][_0x7cfe('0x82')][_0x7cfe('0x8e')](';')+';';}else{_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]=null;}}else{_0x1825d1[_0x7cfe('0x8b')][_0x7cfe('0x82')]=null;}return db[_0x7cfe('0x21')][_0x7cfe('0x93')](_0x1825d1['body'],{'fields':_[_0x7cfe('0x23')](_0x435806),'raw':!![]});})[_0x7cfe('0x19')](respondWithResult(_0xe84d26,0xc9))['catch'](handleError(_0xe84d26,null));};exports['bulkCreate']=function(_0x1544d8,_0x5ce451){var _0x8e015c=0x0;var _0x4ecd2f=0x0;var _0x5350d1=0x0;return db[_0x7cfe('0x21')]['describe']()[_0x7cfe('0x19')](function(_0x4a3bc7){return BPromise['each'](_0x1544d8[_0x7cfe('0x8b')],function(_0x32178f){var _0x4961e3={'where':{'$or':[]},'defaults':_0x32178f,'fields':_['keys'](_0x4a3bc7),'raw':!![]};if(_0x32178f['duplicates']){for(var _0x175b51=0x0;_0x175b51<_0x32178f[_0x7cfe('0xa6')][_0x7cfe('0x24')];_0x175b51++){var _0x42bed8={};_0x42bed8[_0x32178f['duplicates'][_0x175b51]]=_0x32178f[_0x32178f[_0x7cfe('0xa6')][_0x175b51]];_0x4961e3[_0x7cfe('0x34')]['$or'][_0x7cfe('0x55')](_0x42bed8);}_0x4961e3[_0x7cfe('0x34')][_0x7cfe('0x57')]=_0x32178f[_0x7cfe('0x57')];}return db[_0x7cfe('0x21')][_0x7cfe('0xa7')](_0x4961e3)[_0x7cfe('0xa8')](function(_0x2f71e4,_0x5514ea){if(_0x5514ea){_0x8e015c++;}else{_0x5350d1++;}})[_0x7cfe('0x80')](function(){_0x4ecd2f++;});});})[_0x7cfe('0x19')](function(_0xcc3e06){if(_0xcc3e06){return{'success':_0x8e015c,'failure':_0x4ecd2f,'duplicates':_0x5350d1};}})[_0x7cfe('0x19')](respondWithResult(_0x5ce451,0xc9))[_0x7cfe('0x80')](handleError(_0x5ce451,null));};exports['show']=function(_0x521683,_0xe9b8c6){var _0x3a423f;return db[_0x7cfe('0x21')][_0x7cfe('0x22')]()[_0x7cfe('0x19')](function(_0x3bb509){return db['CmContact'][_0x7cfe('0x44')]({'where':{'id':_0x521683['params']['id']},'include':[{'model':db[_0x7cfe('0x45')],'as':_0x7cfe('0x7e'),'attributes':['id',_0x7cfe('0x1e'),'color'],'required':_0x521683['query'][_0x7cfe('0x5a')]?!![]:![]}],'attributes':_['keys'](_0x3bb509)});})[_0x7cfe('0x19')](function(_0x17adc0){if(!_[_0x7cfe('0x53')](_0x17adc0)){_0x3a423f=_0x17adc0[_0x7cfe('0x8c')]({'plain':!![]});var _0x9c1d63={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x17adc0&&_0x17adc0[_0x7cfe('0x57')]){if(_0x17adc0['ListId']){_0x9c1d63['where'][_0x7cfe('0xa9')][_0x7cfe('0x55')]({'ListId':{'$ne':_0x17adc0[_0x7cfe('0x57')]}});}}return db[_0x7cfe('0x25')]['findAll'](_0x9c1d63);}})[_0x7cfe('0x19')](function(_0x4f54dc){if(!_[_0x7cfe('0x53')](_0x4f54dc)){return _[_0x7cfe('0xaa')](_0x3a423f,_[_0x7cfe('0x48')](_0x4f54dc,function(_0x1c1220){return util[_0x7cfe('0xab')]('cf_%d',_0x1c1220['id']);}));}})[_0x7cfe('0x19')](handleEntityNotFound(_0xe9b8c6,null))[_0x7cfe('0x19')](respondWithResult(_0xe9b8c6,null))[_0x7cfe('0x80')](handleError(_0xe9b8c6,null));};exports[_0x7cfe('0x18')]=function(_0x4764ac,_0x595956){var _0x16fb8b;if(_0x4764ac[_0x7cfe('0x8b')]['id']){delete _0x4764ac['body']['id'];}return db[_0x7cfe('0x21')][_0x7cfe('0x44')]({'where':{'id':_0x4764ac[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x595956,null))[_0x7cfe('0x19')](saveUpdates(_0x4764ac[_0x7cfe('0x8b')],null))[_0x7cfe('0x19')](function(_0x5e213d){_0x16fb8b=_0x5e213d;var _0x2b3ebf={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5e213d&&_0x5e213d[_0x7cfe('0x57')]){if(_0x5e213d[_0x7cfe('0x57')]){_0x2b3ebf[_0x7cfe('0x34')]['$and'][_0x7cfe('0x55')]({'ListId':{'$ne':_0x5e213d[_0x7cfe('0x57')]}});}}return db[_0x7cfe('0x25')][_0x7cfe('0x86')](_0x2b3ebf);})[_0x7cfe('0x19')](function(_0x2d68bb){if(_0x2d68bb){return _[_0x7cfe('0xaa')](_[_0x7cfe('0xac')](_0x4764ac[_0x7cfe('0x8b')],function(_0x42a15c,_0x49de2c){return _[_0x7cfe('0x83')](_0x49de2c,_0x7cfe('0x28'));}),_[_0x7cfe('0x48')](_0x2d68bb,function(_0x27315b){return util[_0x7cfe('0xab')](_0x7cfe('0xad'),_0x27315b['id']);}));}})[_0x7cfe('0x19')](function(_0x384f06){if(_0x384f06&&!_[_0x7cfe('0x56')](_0x384f06)){var _0xc774cb=squel[_0x7cfe('0x18')]()[_0x7cfe('0xae')](_0x7cfe('0x39'))[_0x7cfe('0xaf')](_0x384f06)[_0x7cfe('0x34')](_0x7cfe('0xb0'),_0x4764ac[_0x7cfe('0x81')]['id'])[_0x7cfe('0xb1')]();return db[_0x7cfe('0x73')]['query'](_0xc774cb[_0x7cfe('0xb2')],{'replacements':_0xc774cb[_0x7cfe('0x89')]});}})[_0x7cfe('0x19')](function(){if(_0x4764ac[_0x7cfe('0x8b')][_0x7cfe('0xb3')]&&_0x16fb8b){return db[_0x7cfe('0xb4')][_0x7cfe('0x18')]({'phone':_0x4764ac[_0x7cfe('0x8b')][_0x7cfe('0xb3')]},{'where':{'ContactId':_0x16fb8b['id']}});}})[_0x7cfe('0x19')](function(){return _0x16fb8b;})[_0x7cfe('0x19')](respondWithResult(_0x595956,null))['catch'](handleError(_0x595956,null));};exports['getTags']=function(_0x1810e4,_0x492350){var _0x2f7fff={};var _0x361918={};var _0x39edce;var _0x286ff8;return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x1810e4[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x492350,null))[_0x7cfe('0x19')](function(_0x34ffbc){if(_0x34ffbc){_0x39edce=_0x34ffbc;_0x361918[_0x7cfe('0x2b')]=_['keys'](db[_0x7cfe('0x45')][_0x7cfe('0xb5')]);_0x361918[_0x7cfe('0x2c')]=_[_0x7cfe('0x23')](_0x1810e4['query']);_0x361918[_0x7cfe('0x2d')]=_['intersection'](_0x361918[_0x7cfe('0x2b')],_0x361918[_0x7cfe('0x2c')]);_0x2f7fff[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x361918[_0x7cfe('0x2b')],qs['fields'](_0x1810e4[_0x7cfe('0x2c')]['fields']));_0x2f7fff[_0x7cfe('0x2f')]=_0x2f7fff[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x2f7fff['attributes']:_0x361918[_0x7cfe('0x2b')];_0x2f7fff[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x1810e4['query'][_0x7cfe('0x33')]);_0x2f7fff[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x1810e4['query'],_0x361918[_0x7cfe('0x2d')]));if(_0x1810e4['query']['filter']){_0x2f7fff[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x2f7fff[_0x7cfe('0x34')],{'$or':_['map'](_0x2f7fff['attributes'],function(_0x2f9f48){var _0x730d8a={};_0x730d8a[_0x2f9f48]={'$like':'%'+_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x730d8a;})});}_0x2f7fff=_[_0x7cfe('0x8a')]({},_0x2f7fff,_0x1810e4['options']);return _0x39edce[_0x7cfe('0xb7')](_0x2f7fff);}})['then'](function(_0x11e667){if(_0x11e667){_0x286ff8=_0x11e667['length'];if(!_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x2f7fff[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x1810e4[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x2f7fff[_0x7cfe('0x11')]=qs['offset'](_0x1810e4['query'][_0x7cfe('0x11')]);}return _0x39edce['getTags'](_0x2f7fff);}})[_0x7cfe('0x19')](function(_0x38167e){if(_0x38167e){return _0x38167e?{'count':_0x286ff8,'rows':_0x38167e}:null;}})['then'](respondWithResult(_0x492350,null))[_0x7cfe('0x80')](handleError(_0x492350,null));};exports['setTags']=function(_0x4363d1,_0x2fb99d){if(_0x4363d1[_0x7cfe('0x8b')]['id']){delete _0x4363d1[_0x7cfe('0x8b')]['id'];}return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x4363d1[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x2fb99d,null))['then'](function(_0x2a6d1b){if(_0x2a6d1b){return _0x2a6d1b[_0x7cfe('0xb8')](_0x4363d1[_0x7cfe('0x8b')]['ids']||[]);}return null;})[_0x7cfe('0x19')](respondWithResult(_0x2fb99d,null))[_0x7cfe('0x80')](handleError(_0x2fb99d,null));};exports[_0x7cfe('0xb9')]=function(_0x3c5c43,_0x2cf25d){var _0x4ed1c3={'raw':![],'where':{}};var _0x236d92={};var _0x46ee52={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x3c5c43[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x2cf25d,null))[_0x7cfe('0x19')](function(_0x477b14){if(_0x477b14){_0x236d92['model']=_[_0x7cfe('0x23')](db[_0x7cfe('0xb4')][_0x7cfe('0xb5')]);_0x236d92[_0x7cfe('0x2c')]=_['keys'](_0x3c5c43['query']);_0x236d92[_0x7cfe('0x2d')]=_['intersection'](_0x236d92[_0x7cfe('0x2b')],_0x236d92[_0x7cfe('0x2c')]);_0x4ed1c3['attributes']=_[_0x7cfe('0x2e')](_0x236d92[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x3c5c43['query'][_0x7cfe('0x30')]));_0x4ed1c3[_0x7cfe('0x2f')]=_0x4ed1c3[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x4ed1c3['attributes']:_0x236d92[_0x7cfe('0x2b')];if(!_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x4ed1c3[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x4ed1c3[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x4ed1c3[_0x7cfe('0x6b')]=qs['sort'](_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x33')]);_0x4ed1c3[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x3c5c43[_0x7cfe('0x2c')],_0x236d92[_0x7cfe('0x2d')]));_0x4ed1c3[_0x7cfe('0x34')][_0x7cfe('0xba')]=_0x477b14['id'];if(_0x3c5c43[_0x7cfe('0x2c')]['filter']){_0x4ed1c3[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x4ed1c3[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x4ed1c3[_0x7cfe('0x2f')],function(_0xb8e643){var _0x54f748={};_0x54f748[_0xb8e643]={'$like':'%'+_0x3c5c43[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x54f748;})});}_0x4ed1c3=_[_0x7cfe('0x8a')]({},_0x4ed1c3,_0x3c5c43['options']);return db['CmHopper'][_0x7cfe('0x14')]({'where':_0x4ed1c3[_0x7cfe('0x34')]})[_0x7cfe('0x19')](function(_0x47686c){_0x46ee52['count']=_0x47686c;if(_0x3c5c43[_0x7cfe('0x2c')]['includeAll']){_0x4ed1c3[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xb4')][_0x7cfe('0x86')](_0x4ed1c3);})[_0x7cfe('0x19')](function(_0x48929d){_0x46ee52[_0x7cfe('0x7f')]=_0x48929d;return _0x46ee52;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x2cf25d,_0x4ed1c3))['catch'](handleError(_0x2cf25d,null));};exports['getHopperHistories']=function(_0x198f46,_0x1925f3){var _0x62148f={'raw':!![],'where':{}};var _0x2e1586={};var _0x4f7fcd={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x198f46[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x1925f3,null))['then'](function(_0x44d05f){if(_0x44d05f){_0x2e1586[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](db[_0x7cfe('0x9d')][_0x7cfe('0xb5')]);_0x2e1586[_0x7cfe('0x2c')]=_[_0x7cfe('0x23')](_0x198f46[_0x7cfe('0x2c')]);_0x2e1586[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x2e1586['model'],_0x2e1586['query']);_0x62148f[_0x7cfe('0x2f')]=_[_0x7cfe('0x2e')](_0x2e1586[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x198f46[_0x7cfe('0x2c')]['fields']));_0x62148f[_0x7cfe('0x2f')]=_0x62148f[_0x7cfe('0x2f')]['length']?_0x62148f[_0x7cfe('0x2f')]:_0x2e1586[_0x7cfe('0x2b')];if(!_0x198f46['query']['hasOwnProperty'](_0x7cfe('0x32'))){_0x62148f['limit']=qs[_0x7cfe('0x13')](_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x62148f[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x62148f[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x198f46['query'][_0x7cfe('0x33')]);_0x62148f[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x198f46[_0x7cfe('0x2c')],_0x2e1586[_0x7cfe('0x2d')]));_0x62148f['where']['ContactId']=_0x44d05f['id'];if(_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x52')]){_0x62148f[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x62148f[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x62148f[_0x7cfe('0x2f')],function(_0x501a87){var _0x32a7a3={};_0x32a7a3[_0x501a87]={'$like':'%'+_0x198f46[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x32a7a3;})});}_0x62148f=_['merge']({},_0x62148f,_0x198f46[_0x7cfe('0xbc')]);return db['CmHopperHistory']['count']({'where':_0x62148f[_0x7cfe('0x34')]})['then'](function(_0x1d6e75){_0x4f7fcd[_0x7cfe('0x14')]=_0x1d6e75;if(_0x198f46[_0x7cfe('0x2c')]['includeAll']){_0x62148f[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0x9d')][_0x7cfe('0x86')](_0x62148f);})[_0x7cfe('0x19')](function(_0x3940c7){_0x4f7fcd['rows']=_0x3940c7;return _0x4f7fcd;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x1925f3,_0x62148f))['catch'](handleError(_0x1925f3,null));};exports['getHopperFinals']=function(_0x428b8b,_0x53fb7c){var _0x267d76={'raw':!![],'where':{}};var _0x112431={};var _0x3dd28e={'count':0x0,'rows':[]};return db[_0x7cfe('0x21')][_0x7cfe('0x26')]({'where':{'id':_0x428b8b[_0x7cfe('0x81')]['id']}})[_0x7cfe('0x19')](handleEntityNotFound(_0x53fb7c,null))[_0x7cfe('0x19')](function(_0x330ad6){if(_0x330ad6){_0x112431['model']=_[_0x7cfe('0x23')](db[_0x7cfe('0xbd')]['rawAttributes']);_0x112431['query']=_['keys'](_0x428b8b[_0x7cfe('0x2c')]);_0x112431[_0x7cfe('0x2d')]=_[_0x7cfe('0x2e')](_0x112431[_0x7cfe('0x2b')],_0x112431[_0x7cfe('0x2c')]);_0x267d76['attributes']=_[_0x7cfe('0x2e')](_0x112431[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x428b8b['query'][_0x7cfe('0x30')]));_0x267d76[_0x7cfe('0x2f')]=_0x267d76[_0x7cfe('0x2f')][_0x7cfe('0x24')]?_0x267d76[_0x7cfe('0x2f')]:_0x112431[_0x7cfe('0x2b')];if(!_0x428b8b[_0x7cfe('0x2c')]['hasOwnProperty']('nolimit')){_0x267d76[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x13')]);_0x267d76[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x11')]);}_0x267d76[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x428b8b[_0x7cfe('0x2c')][_0x7cfe('0x33')]);_0x267d76[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x428b8b[_0x7cfe('0x2c')],_0x112431[_0x7cfe('0x2d')]));_0x267d76['where']['ContactId']=_0x330ad6['id'];if(_0x428b8b['query'][_0x7cfe('0x52')]){_0x267d76[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x267d76[_0x7cfe('0x34')],{'$or':_['map'](_0x267d76[_0x7cfe('0x2f')],function(_0x55e0f1){var _0xceecbe={};_0xceecbe[_0x55e0f1]={'$like':'%'+_0x428b8b[_0x7cfe('0x2c')]['filter']+'%'};return _0xceecbe;})});}_0x267d76=_['merge']({},_0x267d76,_0x428b8b[_0x7cfe('0xbc')]);return db[_0x7cfe('0xbd')][_0x7cfe('0x14')]({'where':_0x267d76[_0x7cfe('0x34')]})['then'](function(_0x3d2339){_0x3dd28e[_0x7cfe('0x14')]=_0x3d2339;if(_0x428b8b[_0x7cfe('0x2c')]['includeAll']){_0x267d76[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xbd')][_0x7cfe('0x86')](_0x267d76);})[_0x7cfe('0x19')](function(_0x34a230){_0x3dd28e[_0x7cfe('0x7f')]=_0x34a230;return _0x3dd28e;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x53fb7c,_0x267d76))['catch'](handleError(_0x53fb7c,null));};exports['getJscriptySessions']=function(_0x4ca084,_0x27a4b9){var _0x1f3d6f={'raw':!![],'where':{}};var _0x198bf5={};var _0x118a2e={'count':0x0,'rows':[]};return db['CmContact'][_0x7cfe('0x26')]({'where':{'id':_0x4ca084[_0x7cfe('0x81')]['id']}})['then'](handleEntityNotFound(_0x27a4b9,null))['then'](function(_0x42f1b0){if(_0x42f1b0){_0x198bf5[_0x7cfe('0x2b')]=_[_0x7cfe('0x23')](db[_0x7cfe('0xa3')]['rawAttributes']);_0x198bf5['query']=_['keys'](_0x4ca084['query']);_0x198bf5['filters']=_['intersection'](_0x198bf5[_0x7cfe('0x2b')],_0x198bf5[_0x7cfe('0x2c')]);_0x1f3d6f[_0x7cfe('0x2f')]=_['intersection'](_0x198bf5[_0x7cfe('0x2b')],qs[_0x7cfe('0x30')](_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x30')]));_0x1f3d6f['attributes']=_0x1f3d6f[_0x7cfe('0x2f')]['length']?_0x1f3d6f[_0x7cfe('0x2f')]:_0x198bf5[_0x7cfe('0x2b')];if(!_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x31')]('nolimit')){_0x1f3d6f[_0x7cfe('0x13')]=qs['limit'](_0x4ca084['query'][_0x7cfe('0x13')]);_0x1f3d6f[_0x7cfe('0x11')]=qs['offset'](_0x4ca084[_0x7cfe('0x2c')]['offset']);}_0x1f3d6f[_0x7cfe('0x6b')]=qs[_0x7cfe('0x33')](_0x4ca084['query'][_0x7cfe('0x33')]);_0x1f3d6f[_0x7cfe('0x34')]=qs[_0x7cfe('0x2d')](_[_0x7cfe('0xb6')](_0x4ca084['query'],_0x198bf5[_0x7cfe('0x2d')]));_0x1f3d6f[_0x7cfe('0x34')]['ContactId']=_0x42f1b0['id'];if(_0x4ca084['query'][_0x7cfe('0x52')]){_0x1f3d6f[_0x7cfe('0x34')]=_[_0x7cfe('0x8a')](_0x1f3d6f[_0x7cfe('0x34')],{'$or':_[_0x7cfe('0x48')](_0x1f3d6f[_0x7cfe('0x2f')],function(_0x8e968d){var _0x463c82={};_0x463c82[_0x8e968d]={'$like':'%'+_0x4ca084[_0x7cfe('0x2c')][_0x7cfe('0x52')]+'%'};return _0x463c82;})});}_0x1f3d6f=_[_0x7cfe('0x8a')]({},_0x1f3d6f,_0x4ca084[_0x7cfe('0xbc')]);return db[_0x7cfe('0xa3')][_0x7cfe('0x14')]({'where':_0x1f3d6f[_0x7cfe('0x34')]})[_0x7cfe('0x19')](function(_0x4cc4b6){_0x118a2e['count']=_0x4cc4b6;if(_0x4ca084['query'][_0x7cfe('0xbe')]){_0x1f3d6f[_0x7cfe('0xbb')]=[{'all':!![]}];}return db[_0x7cfe('0xa3')][_0x7cfe('0x86')](_0x1f3d6f);})[_0x7cfe('0x19')](function(_0xf4bf21){_0x118a2e[_0x7cfe('0x7f')]=_0xf4bf21;return _0x118a2e;});}})[_0x7cfe('0x19')](respondWithFilteredResult(_0x27a4b9,_0x1f3d6f))[_0x7cfe('0x80')](handleError(_0x27a4b9,null));};exports['uploadCsv']=function(_0x406ede,_0xa0c291){try{if(!_0x406ede[_0x7cfe('0x8b')]['ListId']){throw new Error(_0x7cfe('0xbf'));}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc1')]){throw new Error(_0x7cfe('0xc2'));}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc3')]){throw new Error(_0x7cfe('0xc4'));}var _0x1e2357=_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')]['split'](',');var _0x3157eb=_0x406ede['body'][_0x7cfe('0xc1')][_0x7cfe('0x47')](',');if(!_0x1e2357[_0x7cfe('0x24')]||!_0x3157eb[_0x7cfe('0x24')]||_0x1e2357[_0x7cfe('0x24')]!==_0x3157eb[_0x7cfe('0x24')]){throw new Error(_0x7cfe('0xc5'));}_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')]=_[_0x7cfe('0xc6')](_0x1e2357,_0x3157eb);if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x30')][_0x7cfe('0xc7')]){throw new Error(_0x7cfe('0xc8'));}var _0x4e22cd=path[_0x7cfe('0x8e')](config[_0x7cfe('0xc9')],'server/files/tmp',_0x406ede['file'][_0x7cfe('0xca')]);fs[_0x7cfe('0xcb')](_0x4e22cd,parseInt(_0x7cfe('0xcc'),0x8));var _0x40d9ec=require(_0x7cfe('0xcd'))[_0x7cfe('0xce')](path['join'](__dirname,_0x7cfe('0xcf')),[_0x4e22cd,_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc0')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc1')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0x57')],_0x406ede[_0x7cfe('0x8b')]['CompanyId'],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xa6')],_0x406ede[_0x7cfe('0x8b')][_0x7cfe('0xc3')]]);return _0xa0c291[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'message':'File\x20uploaded\x20correctly!','pid':_0x40d9ec[_0x7cfe('0xd0')]});}catch(_0x42e0d1){return _0xa0c291[_0x7cfe('0x10')](0x1f4)['send'](_0x42e0d1);}};exports['upload']=function(_0x821b30,_0x476d95){var _0xe75564=fs[_0x7cfe('0xd1')](_0x821b30['file']['path']);Papa['parse'](_0xe75564,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x36f8d3){return _0x476d95[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'file':_0x821b30[_0x7cfe('0xd2')],'fields':_0x36f8d3[_0x7cfe('0xd3')][_0x7cfe('0x30')]});}});};exports[_0x7cfe('0xd4')]=function(_0x2ae921,_0x1ddc59){return db[_0x7cfe('0x4b')][_0x7cfe('0x86')]({'raw':!![],'attributes':['id'],'where':{'role':_0x7cfe('0x6f')}})[_0x7cfe('0x19')](function(_0x18808a){var _0x4c1bf4=![];if(!_0x2ae921['body'][_0x7cfe('0x57')]){throw new Error(_0x7cfe('0xbf'));}if(!_0x2ae921['body']['binding'][_0x7cfe('0xb3')]){throw new Error(_0x7cfe('0xd5'));}if(!_0x2ae921[_0x7cfe('0x8b')][_0x7cfe('0xd6')][_0x7cfe('0xc7')]){throw new Error(_0x7cfe('0xc8'));}if(!_0x2ae921[_0x7cfe('0x8b')][_0x7cfe('0xc3')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x51db37=require('child_process')['fork'](path[_0x7cfe('0x8e')](__dirname,'../../components/import/cm/csv2'),[_0x2ae921['params']['id'],JSON[_0x7cfe('0xd7')](_0x2ae921['body']),JSON['stringify'](_0x18808a)]);_0x51db37['on'](_0x7cfe('0xd8'),function(){_0x4c1bf4=!![];return _0x1ddc59[_0x7cfe('0x10')](0xc8)[_0x7cfe('0x17')]({'message':_0x7cfe('0xd9'),'pid':_0x51db37[_0x7cfe('0xd0')]});});_0x51db37['on'](_0x7cfe('0xda'),function(_0x19711e){if(_0x19711e&&!_0x4c1bf4){return _0x1ddc59[_0x7cfe('0x10')](0x1f4)[_0x7cfe('0x17')]({'message':_0x7cfe('0xdb'),'pid':_0x51db37[_0x7cfe('0xd0')]});}});})[_0x7cfe('0x80')](handleError(_0x1ddc59,null));};exports['getJourney']=function(_0x1646c0,_0x4e997e){var _0xd46fb=[_0x7cfe('0xdc'),'chat',_0x7cfe('0xdd'),'openchannel',_0x7cfe('0xde'),_0x7cfe('0xdf'),_0x7cfe('0xe0')];var _0x24736d={'offset':0x0,'order':qs[_0x7cfe('0x33')](_0x7cfe('0xe1'))},_0x44dfad={'count':0x0,'rows':[]};Promise[_0x7cfe('0xe2')]()[_0x7cfe('0x19')](function(){if(_0x1646c0['query'][_0x7cfe('0xe3')]){if(!_['includes'](_0xd46fb,_0x1646c0['query'][_0x7cfe('0xe3')]['toLowerCase']())){throw new Error(_0x7cfe('0xe4'));}_0xd46fb=[_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0xe3')][_0x7cfe('0xe5')]()];}if(_0x1646c0[_0x7cfe('0x2c')]['range']){try{var _0x1926f1=JSON[_0x7cfe('0xe6')](_0x1646c0['query'][_0x7cfe('0xe7')]);if(!moment(_0x1926f1['from'])[_0x7cfe('0xe8')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1926f1['to'])[_0x7cfe('0xe8')]()){throw new Error(_0x7cfe('0xe9'));}}catch(_0x422b01){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0x31')](_0x7cfe('0x32'))){_0x24736d[_0x7cfe('0x13')]=qs[_0x7cfe('0x13')](_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0x13')]||0xa);_0x24736d[_0x7cfe('0x11')]=qs[_0x7cfe('0x11')](_0x1646c0['query'][_0x7cfe('0x11')]);}var _0x1b6856=_0xd46fb[_0x7cfe('0x48')](function(_0x3757e9){if(_0x3757e9==='voice'){var _0x33acea={'attributes':['id',_0x7cfe('0xea'),_0x7cfe('0x2a'),_0x7cfe('0xeb'),'destination',_0x7cfe('0xec'),_0x7cfe('0xed'),'endtime','duration',_0x7cfe('0xee'),_0x7cfe('0xef'),'userDisposition',_0x7cfe('0xf0'),_0x7cfe('0xf1'),'UserId'],'where':{'ContactId':_0x1646c0[_0x7cfe('0x81')]['id']},'include':[{'model':db[_0x7cfe('0x4b')],'as':_0x7cfe('0x4b'),'attributes':['id',_0x7cfe('0x1e'),_0x7cfe('0xf2'),_0x7cfe('0x87')]}],'order':[['createdAt','DESC']]};if(_0x1646c0[_0x7cfe('0x2c')][_0x7cfe('0xe7')]){_0x33acea[_0x7cfe('0x34')][_0x7cfe('0xef')]={'$gte':_0x1926f1['from'],'$lte':_0x1926f1['to']};}return db['VoiceCallReport'][_0x7cfe('0xf3')](_0x33acea)[_0x7cfe('0x19')](function(_0x527af1){_0x44dfad[_0x7cfe('0x14')]+=_0x527af1[_0x7cfe('0x14')];return _[_0x7cfe('0x48')](_0x527af1[_0x7cfe('0x7f')],function(_0x236ed3){var _0x524837=_0x236ed3[_0x7cfe('0x8c')]({'plain':!![]});_0x524837[_0x7cfe('0xe3')]=_0x3757e9;if(_0x524837['User']){_0x524837[_0x7cfe('0x4b')]={'id':_0x524837[_0x7cfe('0x4b')]['id'],'name':_0x524837[_0x7cfe('0x4b')][_0x7cfe('0x1e')],'fullname':_0x524837['User']['fullname'],'alias':_0x524837[_0x7cfe('0x4b')][_0x7cfe('0x87')]};}return _0x524837;});});}else{var _0x39f3df=_[_0x7cfe('0xf4')](_0x3757e9)+(_0x3757e9==='chat'?'Website':_0x7cfe('0xf5'));var _0x11f441={'attributes':['id',_0x7cfe('0xf6'),_0x7cfe('0xf7'),_0x7cfe('0xef'),_0x7cfe('0xee'),_0x7cfe('0xf8'),'secondDisposition',_0x7cfe('0xf9'),_0x7cfe('0xfa'),_0x39f3df+'Id'],'where':{'ContactId':_0x1646c0['params']['id']},'include':[{'model':db[_0x39f3df],'as':_0x7cfe('0xf5'),'attributes':['id','name','key']},{'model':db['User'],'as':_0x7cfe('0xfb'),'attributes':['id',_0x7cfe('0x1e'),_0x7cfe('0xf2')]},{'model':db[_0x7cfe('0x45')],'as':_0x7cfe('0x7e'),'attributes':['id',_0x7cfe('0x1e'),'color'],'through':{'attributes':[]}}],'order':[[_0x7cfe('0xef'),_0x7cfe('0x6c')]]};if(_0x1646c0['query'][_0x7cfe('0xe7')]){_0x11f441[_0x7cfe('0x34')][_0x7cfe('0xef')]={'$gte':_0x1926f1['from'],'$lte':_0x1926f1['to']};}switch(_0x3757e9){case _0x7cfe('0xfc'):_0x11f441['attributes'][_0x7cfe('0x55')](_0x7cfe('0xfd'),_0x7cfe('0xfe'),_0x7cfe('0xff'),_0x7cfe('0x100'),_0x7cfe('0x101'),_0x7cfe('0x102'),_0x7cfe('0x103'),_0x7cfe('0x104'),_0x7cfe('0x105'));break;case _0x7cfe('0xdc'):_0x11f441[_0x7cfe('0x2f')][_0x7cfe('0x55')](_0x7cfe('0x106'),_0x7cfe('0x107'));break;case _0x7cfe('0x108'):_0x11f441[_0x7cfe('0x2f')][_0x7cfe('0x55')]('externalUrl','threadId');break;}return db[_[_0x7cfe('0xf4')](_0x3757e9)+_0x7cfe('0x109')][_0x7cfe('0xf3')](_0x11f441)[_0x7cfe('0x19')](function(_0x2fe20a){_0x44dfad['count']+=_0x2fe20a['count'];return _['map'](_0x2fe20a[_0x7cfe('0x7f')],function(_0xe000e6){var _0x245b3e=_0xe000e6[_0x7cfe('0x8c')]({'plain':!![]});_0x245b3e[_0x7cfe('0xe3')]=_0x3757e9;if(_0x245b3e[_0x7cfe('0xfb')]){_0x245b3e['Owner']={'id':_0x245b3e[_0x7cfe('0xfb')]['id'],'name':_0x245b3e['Owner'][_0x7cfe('0x1e')],'fullname':_0x245b3e[_0x7cfe('0xfb')]['fullname']};}return _0x245b3e;});});}});return Promise[_0x7cfe('0x27')](_0x1b6856);})[_0x7cfe('0x19')](function(_0x4eb20b){return _(_0x4eb20b)['flatten']()[_0x7cfe('0x10a')](_0x7cfe('0xef'))[_0x7cfe('0x10b')]()[_0x7cfe('0x46')]();})['then'](function(_0x4c4faf){_0x44dfad[_0x7cfe('0x7f')]=_0x24736d[_0x7cfe('0x13')]?_0x4c4faf[_0x7cfe('0x10c')](_0x24736d[_0x7cfe('0x11')],_0x24736d[_0x7cfe('0x11')]+_0x24736d['limit']):_0x4c4faf;return _0x44dfad;})[_0x7cfe('0x19')](respondWithFilteredResult(_0x4e997e,_0x24736d))[_0x7cfe('0x80')](handleError(_0x4e997e,null));};
\ No newline at end of file
+var _0x0c87=['group','c.id','Sequelize','DESC','having','t.id\x20IN\x20?','user','role','some','getLists','c.ListId\x20IS\x20NULL','agent','sequelize','keyBy','merge','c.lastName','c.phone','c.mobile','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','toString','TagIds','Tags','rows','catch','find','params','tags','columnName','displayName','analytics','findAll','custom','values','body','get','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','MailInteraction','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','ReportAgentPreview','VoiceCallReport','MailQueueReport','OpenchannelQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','bulkCreate','each','duplicates','findOrCreate','spread','$and','omit','format','cf_%d','pickBy','table','setFields','id\x20=\x20?','toParam','phone','CmHopper','getTags','rawAttributes','pick','options','setTags','ids','includeAll','include','getHopperHistories','ContactId','CmHopperFinal','getJscriptySessions','JscriptySessionReport','uploadCsv','binding_keys','No\x20association\x20keys\x20specified!','binding_values','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','send','createReadStream','parse','meta','import','binding','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','fax','-createdAt','resolve','channel','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','destination','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','findAndCountAll','Website','Account','closed','disposition','secondDisposition','key','Owner','browserName','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','startCase','flatten','sortBy','reverse','slice','moment','bluebird','util','path','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./cmContact.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','index','CmContact','describe','keys','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','length','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','field','color','from','tools_tags','select','cm_contacts','left_join','cm_user_has_contacts','cm_contact_has_tags','t.id\x20=\x20ct.TagId','where','expr','search','parseSearch','conditions','Tag','value','split','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','text','start','filter','isNil','Contact','isEmpty','forEach','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.lastName\x20LIKE\x20?'];(function(_0x303325,_0x2ef389){var _0x3659dd=function(_0x2cf237){while(--_0x2cf237){_0x303325['push'](_0x303325['shift']());}};_0x3659dd(++_0x2ef389);}(_0x0c87,0x1d5));var _0x70c8=function(_0x190dd7,_0x561a05){_0x190dd7=_0x190dd7-0x0;var _0xc2c951=_0x0c87[_0x190dd7];return _0xc2c951;};'use strict';var moment=require(_0x70c8('0x0'));var BPromise=require(_0x70c8('0x1'));var util=require(_0x70c8('0x2'));var path=require(_0x70c8('0x3'));var fs=require('fs');var _=require(_0x70c8('0x4'));var squel=require(_0x70c8('0x5'));var Papa=require(_0x70c8('0x6'));var Redis=require(_0x70c8('0x7'));var qs=require(_0x70c8('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x70c8('0x9'))(_0x70c8('0xa'));var config=require('../../config/environment');var db=require(_0x70c8('0xb'))['db'];config[_0x70c8('0xc')]=_[_0x70c8('0xd')](config[_0x70c8('0xc')],{'host':_0x70c8('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x70c8('0xc')]));require(_0x70c8('0xf'))[_0x70c8('0x10')](socket);function respondWithResult(_0x3118c3,_0x1dfd93){_0x1dfd93=_0x1dfd93||0xc8;return function(_0x8e7ae2){if(_0x8e7ae2){return _0x3118c3[_0x70c8('0x11')](_0x1dfd93)[_0x70c8('0x12')](_0x8e7ae2);}};}function respondWithFilteredResult(_0x58b611,_0x59b650){return function(_0x71553a){if(_0x71553a){var _0xaed642=typeof _0x59b650[_0x70c8('0x13')]===_0x70c8('0x14')&&typeof _0x59b650[_0x70c8('0x15')]===_0x70c8('0x14');var _0x522653=_0x71553a[_0x70c8('0x16')];var _0x56cd22=_0xaed642?0x0:_0x59b650[_0x70c8('0x13')];var _0xca91ac=_0xaed642?_0x71553a[_0x70c8('0x16')]:_0x59b650[_0x70c8('0x13')]+_0x59b650[_0x70c8('0x15')];var _0x571342;if(_0xca91ac>=_0x522653){_0xca91ac=_0x522653;_0x571342=0xc8;}else{_0x571342=0xce;}_0x58b611[_0x70c8('0x11')](_0x571342);return _0x58b611[_0x70c8('0x17')](_0x70c8('0x18'),_0x56cd22+'-'+_0xca91ac+'/'+_0x522653)[_0x70c8('0x12')](_0x71553a);}return null;};}function saveUpdates(_0xdf3598){return function(_0x4c785d){if(_0x4c785d){return _0x4c785d[_0x70c8('0x19')](_0xdf3598)[_0x70c8('0x1a')](function(_0x11b298){return _0x11b298;});}return null;};}function removeEntity(_0x2bde98){return function(_0x3db296){if(_0x3db296){return _0x3db296[_0x70c8('0x1b')]()[_0x70c8('0x1a')](function(){_0x2bde98[_0x70c8('0x11')](0xcc)[_0x70c8('0x1c')]();});}};}function handleEntityNotFound(_0x5ab9f1){return function(_0x4c0f58){if(!_0x4c0f58){_0x5ab9f1[_0x70c8('0x1d')](0x194);}return _0x4c0f58;};}function handleError(_0x2c318f,_0x44112c){_0x44112c=_0x44112c||0x1f4;return function(_0x186e0e){logger[_0x70c8('0x1e')](_0x186e0e[_0x70c8('0x1f')]);if(_0x186e0e[_0x70c8('0x20')]){delete _0x186e0e[_0x70c8('0x20')];}_0x2c318f[_0x70c8('0x11')](_0x44112c)['send'](_0x186e0e);};}exports[_0x70c8('0x21')]=function(_0x390258,_0x1e8d8d){var _0x5aa35a={},_0x474238={},_0x16b110={'count':0x0,'rows':[]};return db[_0x70c8('0x22')][_0x70c8('0x23')]()[_0x70c8('0x1a')](function(_0x110d4e){var _0x54274d=[];for(var _0x5039b7=0x0;_0x5039b7<Object[_0x70c8('0x24')](_0x110d4e)['length'];_0x5039b7++){var _0x41a168=Object[_0x70c8('0x24')](_0x110d4e)[_0x5039b7];if(_[_0x70c8('0x25')](_0x41a168,_0x70c8('0x26'))){_0x54274d[_0x70c8('0x27')](db[_0x70c8('0x28')][_0x70c8('0x29')]({'where':{'id':_[_0x70c8('0x2a')](_0x41a168,'cf_')},'raw':!![]}));}}return BPromise[_0x70c8('0x2b')](_0x54274d)[_0x70c8('0x1a')](function(_0x53783d){for(var _0x2c23df=0x0;_0x2c23df<_0x53783d[_0x70c8('0x2c')];_0x2c23df++){if(_0x53783d[_0x2c23df]){var _0x31f0cc=_0x70c8('0x26')+_0x53783d[_0x2c23df]['id'];var _0x4d0cb5=_0x110d4e[_0x31f0cc];_0x4d0cb5['fieldType']=_0x53783d[_0x2c23df]['type'];}}return _0x110d4e;});})[_0x70c8('0x1a')](function(_0x54859f){_0x474238[_0x70c8('0x2d')]=_[_0x70c8('0x24')](_0x54859f);_0x474238[_0x70c8('0x2e')]=_[_0x70c8('0x24')](_0x390258[_0x70c8('0x2e')]);_0x474238[_0x70c8('0x2f')]=_[_0x70c8('0x30')](_0x474238[_0x70c8('0x2d')],_0x474238[_0x70c8('0x2e')]);_0x5aa35a['attributes']=_[_0x70c8('0x30')](_0x474238[_0x70c8('0x2d')],qs[_0x70c8('0x31')](_0x390258[_0x70c8('0x2e')][_0x70c8('0x31')]));_0x5aa35a[_0x70c8('0x32')]=_0x5aa35a[_0x70c8('0x32')][_0x70c8('0x2c')]?_0x5aa35a[_0x70c8('0x32')]:_0x474238['model'];if(!_0x390258[_0x70c8('0x2e')][_0x70c8('0x33')](_0x70c8('0x34'))){_0x5aa35a[_0x70c8('0x15')]=qs[_0x70c8('0x15')](_0x390258[_0x70c8('0x2e')][_0x70c8('0x15')]);_0x5aa35a[_0x70c8('0x13')]=qs['offset'](_0x390258['query'][_0x70c8('0x13')]);}_0x5aa35a[_0x70c8('0x35')]=qs[_0x70c8('0x36')](_0x390258['query']['sort']);_0x5aa35a['where']=qs[_0x70c8('0x2f')](_['pick'](_0x390258[_0x70c8('0x2e')],_0x474238[_0x70c8('0x2f')]),_0x54859f);var _0x23637c=[];var _0x39b64c=squel['select']()['field']('id')[_0x70c8('0x37')](_0x70c8('0x20'))['field'](_0x70c8('0x38'))[_0x70c8('0x39')](_0x70c8('0x3a'));var _0x53b67d=squel[_0x70c8('0x3b')]()['from'](_0x70c8('0x3c'),'c')[_0x70c8('0x3d')](_0x70c8('0x3e'),'uc','uc.CmContactId\x20=\x20c.id')[_0x70c8('0x3d')](_0x70c8('0x3f'),'ct','ct.CmContactId\x20=\x20c.id')['left_join'](_0x70c8('0x3a'),'t',_0x70c8('0x40'))[_0x70c8('0x41')]('c.deletedAt\x20IS\x20NULL');var _0xa49d4=squel[_0x70c8('0x42')]();var _0x1b346a=[];var _0x17b40b=squel['expr']();var _0x3629e6;if(_0x390258[_0x70c8('0x2e')][_0x70c8('0x43')]){_0x3629e6=as[_0x70c8('0x44')](_0x390258[_0x70c8('0x2e')]['search']);var _0x424360=_0x3629e6['sqlOperator'];for(var _0x35688b=0x0;_0x35688b<_0x3629e6[_0x70c8('0x45')][_0x70c8('0x2c')];_0x35688b++){var _0x4f94f7=_0x3629e6[_0x70c8('0x45')][_0x35688b];var _0x24600a='c';var _0x2a3e3a=_(_0x54859f)[_0x70c8('0x24')]()['find'](function(_0x42acdd){return _0x42acdd===_0x4f94f7[_0x70c8('0x37')];});if(_0x2a3e3a)_0x2a3e3a=_0x54859f[_0x4f94f7[_0x70c8('0x37')]];if(!_0x2a3e3a){if(_0x4f94f7[_0x70c8('0x37')]===_0x70c8('0x46')){var _0xa24843=_0x4f94f7[_0x70c8('0x47')][_0x70c8('0x48')](',')[_0x70c8('0x49')](function(_0xe6eea8){return Number(_0xe6eea8);});_0xa24843['forEach'](function(_0x3f9035){_0x17b40b['or'](_0x70c8('0x4a'),'%,'+_0x3f9035+',%');});_0x1b346a=_[_0x70c8('0x4b')](_0x1b346a,_0xa24843);}else if(_0x4f94f7['field']===_0x70c8('0x4c')){_0xa49d4[_0x70c8('0x4d')](_0x70c8('0x4e'),_0x4f94f7[_0x70c8('0x47')]);}}else{if(_0x4f94f7[_0x70c8('0x37')]===_0x70c8('0x4f')||_0x2a3e3a[_0x70c8('0x50')]===_0x70c8('0x51'))_0x4f94f7['castTo']=_0x70c8('0x52');var _0x2e13f8=as[_0x70c8('0x53')](_0x24600a,_0x2a3e3a[_0x70c8('0x54')],_0x4f94f7);_0xa49d4[_0x424360](_0x2e13f8[_0x70c8('0x55')],_0x2e13f8['value'][_0x70c8('0x56')],_0x2e13f8[_0x70c8('0x47')][_0x70c8('0x1c')]);}}}else{var _0x14fd68=_(Object['keys'](_0x390258[_0x70c8('0x2e')]))[_0x70c8('0x49')](function(_0x1af6a4){return _0x54859f[_0x70c8('0x33')](_0x1af6a4)?_0x1af6a4:undefined;})[_0x70c8('0x57')](function(_0x34a0dd){return!_[_0x70c8('0x58')](_0x34a0dd);})[_0x70c8('0x47')]();if(_0x390258[_0x70c8('0x2e')][_0x70c8('0x59')])_0x14fd68[_0x70c8('0x27')]('Contact');if(!_[_0x70c8('0x5a')](_0x14fd68)){_0x14fd68[_0x70c8('0x5b')](function(_0x43be6a){if(_0x43be6a===_0x70c8('0x5c')){_0x53b67d['where'](_0x70c8('0x5d'),[][_0x70c8('0x5e')](_0x390258[_0x70c8('0x2e')][_0x43be6a]));}else if(_0x43be6a===_0x70c8('0x59')){var _0x560fb6='%'+_0x390258['query'][_0x43be6a]+'%';_0x53b67d[_0x70c8('0x41')](_0x70c8('0x5f'),_0x560fb6);}else{_0x53b67d[_0x70c8('0x41')]('c.'+_0x43be6a+_0x70c8('0x60'),_0x390258[_0x70c8('0x2e')][_0x43be6a]);}});}if(_0x390258[_0x70c8('0x2e')][_0x70c8('0x61')]){_0x1b346a=_[_0x70c8('0x62')](_0x390258[_0x70c8('0x2e')][_0x70c8('0x61')])?_0x390258[_0x70c8('0x2e')][_0x70c8('0x61')]:new Array(_0x390258[_0x70c8('0x2e')][_0x70c8('0x61')]);_0x1b346a[_0x70c8('0x5b')](function(_0x401688){_0x17b40b['or'](_0x70c8('0x4a'),'%,'+_0x401688+',%');});}if(_0x390258['query'][_0x70c8('0x57')]){var _0x4faf1f=_0x390258[_0x70c8('0x2e')][_0x70c8('0x57')][_0x70c8('0x63')]('\x5c','\x5c\x5c')[_0x70c8('0x63')](/'/g,'\x27\x27');if(_0x4faf1f[_0x70c8('0x48')]('\x20')[_0x70c8('0x2c')]>0x1){_0xa49d4['or'](_0x70c8('0x64'),qs[_0x70c8('0x65')](_0x4faf1f),null);}else{if(qs[_0x70c8('0x66')](_0x4faf1f)){_0xa49d4['or'](_0x70c8('0x67'),_0x4faf1f+'%');_0xa49d4['or'](_0x70c8('0x68'),_0x4faf1f+'%');_0xa49d4['or'](_0x70c8('0x69'),_0x4faf1f+'%');_0xa49d4['or'](_0x70c8('0x6a'),_0x4faf1f+'%');}else if(qs[_0x70c8('0x6b')](_0x4faf1f)){_0xa49d4['or']('c.email\x20LIKE\x20?',_0x4faf1f+'%');}else{_0xa49d4['or']('c.firstName\x20LIKE\x20?','%'+_0x4faf1f+'%');_0xa49d4['or'](_0x70c8('0x6c'),'%'+_0x4faf1f+'%');_0xa49d4['or']('c.email\x20LIKE\x20?','%'+_0x4faf1f+'%');}}}}_0x53b67d[_0x70c8('0x41')](_0xa49d4);_0x53b67d[_0x70c8('0x6d')](_0x70c8('0x6e'));var _0x267092={'type':db[_0x70c8('0x6f')]['QueryTypes']['SELECT'],'raw':!![]};var _0x11d316=_0x53b67d['clone']()[_0x70c8('0x37')]('c.id');if(_0x5aa35a['order']){_0x5aa35a['order']['forEach'](function(_0x1fb9ff){_0x53b67d[_0x70c8('0x35')]('c.'+_0x1fb9ff[0x0],_0x1fb9ff[0x1]===_0x70c8('0x70')?![]:!![]);});}if(!_[_0x70c8('0x5a')](_0x1b346a)){_0x53b67d[_0x70c8('0x71')](_0x17b40b);_0x11d316[_0x70c8('0x41')](_0x70c8('0x72'),_0x1b346a);}BPromise['resolve']()['then'](function(){if(!_0x3629e6)return;if(_0x390258[_0x70c8('0x73')][_0x70c8('0x74')]!=='agent')return;if(!_[_0x70c8('0x75')](_0x3629e6[_0x70c8('0x45')],['field',_0x70c8('0x4c')])){return _0x390258[_0x70c8('0x73')][_0x70c8('0x76')]({'attributes':['id'],'raw':!![]})[_0x70c8('0x1a')](function(_0x6baad0){if(_['isEmpty'](_0x6baad0)){_0x11d316[_0x70c8('0x41')](_0x70c8('0x77'));_0x53b67d[_0x70c8('0x41')](_0x70c8('0x77'));}else{_0x11d316[_0x70c8('0x41')](_0x70c8('0x5d'),_[_0x70c8('0x49')](_0x6baad0,'id'));_0x53b67d[_0x70c8('0x41')](_0x70c8('0x5d'),_['map'](_0x6baad0,'id'));}});}})[_0x70c8('0x1a')](function(){if(_0x390258[_0x70c8('0x73')][_0x70c8('0x74')]===_0x70c8('0x78')&&!_0x3629e6&&!_0x390258['query'][_0x70c8('0x5c')])return[];return db[_0x70c8('0x79')][_0x70c8('0x2e')](_0x11d316['toString'](),_0x267092);})[_0x70c8('0x1a')](function(_0x1f275b){_0x16b110[_0x70c8('0x16')]=_0x1f275b[_0x70c8('0x2c')];if(_0x16b110[_0x70c8('0x16')]===0x0)return[];return db['sequelize'][_0x70c8('0x2e')](_0x39b64c['toString'](),_0x267092)[_0x70c8('0x1a')](function(_0x41d094){_0x23637c=_[_0x70c8('0x7a')](_0x41d094,'id');_0x267092=_[_0x70c8('0x7b')](_0x267092,{'model':db[_0x70c8('0x22')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x390258[_0x70c8('0x2e')][_0x70c8('0x31')]){_0x5aa35a['attributes'][_0x70c8('0x5b')](function(_0x57cadb){_0x53b67d[_0x70c8('0x37')]('c.'+_0x57cadb);});}else{_0x53b67d[_0x70c8('0x37')](_0x70c8('0x6e'));_0x53b67d[_0x70c8('0x37')]('c.firstName');_0x53b67d['field'](_0x70c8('0x7c'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x7d'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x7e'));_0x53b67d[_0x70c8('0x37')]('c.fax');_0x53b67d[_0x70c8('0x37')](_0x70c8('0x7f'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x80'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x81'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x82'));_0x53b67d[_0x70c8('0x37')](_0x70c8('0x83'));_0x53b67d['field'](_0x70c8('0x84'),'TagIds');}if(_0x5aa35a[_0x70c8('0x15')])_0x53b67d[_0x70c8('0x15')](_0x5aa35a[_0x70c8('0x15')]);if(_0x5aa35a['offset'])_0x53b67d[_0x70c8('0x13')](_0x5aa35a[_0x70c8('0x13')]);return db[_0x70c8('0x79')]['query'](_0x53b67d[_0x70c8('0x85')](),_0x267092);});})[_0x70c8('0x1a')](function(_0x1fd4d5){_0x1fd4d5[_0x70c8('0x5b')](function(_0x22829b){if(_0x22829b[_0x70c8('0x86')]){_0x22829b[_0x70c8('0x87')]=[];_0x22829b[_0x70c8('0x86')]['split'](',')[_0x70c8('0x5b')](function(_0x41204c){_0x22829b[_0x70c8('0x87')]['push'](_0x23637c[_0x41204c]);});}delete _0x22829b[_0x70c8('0x86')];});_0x16b110[_0x70c8('0x88')]=_0x1fd4d5;return _0x16b110;})['then'](respondWithFilteredResult(_0x1e8d8d,_0x5aa35a));})[_0x70c8('0x89')](handleError(_0x1e8d8d,null));};exports[_0x70c8('0x1b')]=function(_0x453189,_0x5be8ba){return db['CmContact'][_0x70c8('0x8a')]({'where':{'id':_0x453189[_0x70c8('0x8b')]['id']}})['then'](handleEntityNotFound(_0x5be8ba,null))[_0x70c8('0x1a')](removeEntity(_0x5be8ba,null))[_0x70c8('0x89')](handleError(_0x5be8ba,null));};exports[_0x70c8('0x23')]=function(_0x1c3033,_0x36c1a9){return db[_0x70c8('0x22')][_0x70c8('0x23')]()['then'](function(_0x2769cd){delete _0x2769cd[_0x70c8('0x8c')];for(var _0x3d4e89=0x0;_0x3d4e89<Object[_0x70c8('0x24')](_0x2769cd)[_0x70c8('0x2c')];_0x3d4e89++){var _0x587ea3=Object[_0x70c8('0x24')](_0x2769cd)[_0x3d4e89];if(!_['startsWith'](_0x587ea3,'cf_')){_0x2769cd[_0x587ea3][_0x70c8('0x8d')]=_0x587ea3;_0x2769cd[_0x587ea3][_0x70c8('0x8e')]=_0x587ea3;}}return _0x2769cd;})['then'](function(_0x4ab466){var _0x3172b7={'where':Boolean(_0x1c3033['query'][_0x70c8('0x8f')])===!![]?undefined:{'$or':[{'ListId':_0x1c3033[_0x70c8('0x2e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x70c8('0x28')][_0x70c8('0x90')](_0x3172b7)[_0x70c8('0x1a')](function(_0x50d153){for(var _0x43030a=0x0;_0x43030a<_0x50d153[_0x70c8('0x2c')];_0x43030a++){var _0x5d5319=_0x70c8('0x26')+_0x50d153[_0x43030a]['id'];_0x4ab466[_0x5d5319][_0x70c8('0x8d')]=_0x5d5319;_0x4ab466[_0x5d5319][_0x70c8('0x8e')]=_0x50d153[_0x43030a]['alias'];_0x4ab466[_0x5d5319][_0x70c8('0x91')]={'type':_0x50d153[_0x43030a]['type'],'values':_0x50d153[_0x43030a][_0x70c8('0x92')]};}Object[_0x70c8('0x24')](_0x4ab466)['forEach'](function(_0xf98f51){if(!_0x4ab466[_0xf98f51][_0x70c8('0x33')](_0x70c8('0x8d'))){delete _0x4ab466[_0xf98f51];}});return _0x4ab466;});})[_0x70c8('0x1a')](respondWithResult(_0x36c1a9,null))[_0x70c8('0x89')](handleError(_0x36c1a9,null));};exports[_0x70c8('0x7b')]=function(_0x28392b,_0x513ae1){var _0x3d5c23;var _0x5e8fd1;var _0x577a7e;if(_0x28392b[_0x70c8('0x93')]['id']){delete _0x28392b[_0x70c8('0x93')]['id'];}return db[_0x70c8('0x22')][_0x70c8('0x90')]({'where':{'id':[_0x28392b[_0x70c8('0x93')]['to'],_0x28392b[_0x70c8('0x93')][_0x70c8('0x39')]]}})[_0x70c8('0x1a')](function(_0x1e90fd){if(_0x1e90fd){if(_0x1e90fd[_0x70c8('0x2c')]!==0x2){return null;}_0x1e90fd[0x0]=_0x1e90fd[0x0][_0x70c8('0x94')]({'plain':!![]});_0x1e90fd[0x1]=_0x1e90fd[0x1]['get']({'plain':!![]});delete _0x1e90fd[0x0]['id'];delete _0x1e90fd[0x1]['id'];return _['mergeWith'](_0x1e90fd[0x0],_0x1e90fd[0x1],function(_0x4a0c75,_0x1ddcf1){if(Array[_0x70c8('0x62')](_0x1ddcf1)&&!_0x1ddcf1[_0x70c8('0x2c')]){return _0x4a0c75;}else if(!_0x1ddcf1){return _0x4a0c75;}});}})[_0x70c8('0x1a')](handleEntityNotFound(_0x513ae1,null))[_0x70c8('0x1a')](function(_0x1cbe79){if(_0x1cbe79){if(_0x1cbe79[_0x70c8('0x8c')]&&_[_0x70c8('0x62')](_0x1cbe79[_0x70c8('0x8c')])){_0x1cbe79[_0x70c8('0x8c')]=_0x1cbe79[_0x70c8('0x8c')][_0x70c8('0x95')]();}logger[_0x70c8('0x96')](_0x70c8('0x97'),_0x28392b[_0x70c8('0x93')]['to'],_0x28392b[_0x70c8('0x93')][_0x70c8('0x39')]);return db['CmHopper'][_0x70c8('0x1b')]({'where':{'ContactId':[_0x28392b[_0x70c8('0x93')]['to'],_0x28392b['body'][_0x70c8('0x39')]]}})[_0x70c8('0x1a')](function(_0x1f4e72){logger[_0x70c8('0x96')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x1f4e72);return db[_0x70c8('0x98')][_0x70c8('0x1b')]({'where':{'ContactId':[_0x28392b[_0x70c8('0x93')]['to'],_0x28392b[_0x70c8('0x93')][_0x70c8('0x39')]]}})['then'](function(_0x2c4c16){logger[_0x70c8('0x96')](_0x70c8('0x99'),_0x2c4c16);return db[_0x70c8('0x22')][_0x70c8('0x9a')](_0x1cbe79);});});}})[_0x70c8('0x1a')](function(_0x20b6af){if(_0x20b6af){_0x3d5c23=_0x20b6af;_0x5e8fd1={'ContactId':_0x3d5c23['id']};_0x577a7e={'where':{'ContactId':[_0x28392b[_0x70c8('0x93')]['to'],_0x28392b[_0x70c8('0x93')][_0x70c8('0x39')]]}};return db[_0x70c8('0x9b')]['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0x9c')]['update'](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['ChatOfflineMessage']['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0x9d')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['MailMessage'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['MailInteraction'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['MailMessage']['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0x9e')]['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db['SmsMessage'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0x9f')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0xa0')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa1')]['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0xa2')]['update'](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db['CmHopperFinal'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})['then'](function(){if(_0x3d5c23){return db[_0x70c8('0xa3')]['update'](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa4')]['update'](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa5')]['update'](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['ChatQueueReport'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['FaxQueueReport'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa6')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa7')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['SmsQueueReport'][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db['JscriptySessionReport']['update'](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa8')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xa9')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0xaa')][_0x70c8('0x19')](_0x5e8fd1,_0x577a7e);}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return db[_0x70c8('0x22')]['destroy']({'where':{'id':[_0x28392b['body']['to'],_0x28392b['body']['from']]}});}})[_0x70c8('0x1a')](function(){if(_0x3d5c23){return _0x3d5c23;}})['then'](respondWithResult(_0x513ae1,null))[_0x70c8('0x89')](handleError(_0x513ae1,null));};exports['create']=function(_0x3d4f32,_0x5b75af){return db[_0x70c8('0x22')]['describe']()[_0x70c8('0x1a')](function(_0x3439da){if(_0x3d4f32[_0x70c8('0x93')][_0x70c8('0x8c')]&&_[_0x70c8('0x62')](_0x3d4f32[_0x70c8('0x93')][_0x70c8('0x8c')])){if(_0x3d4f32['body'][_0x70c8('0x8c')][_0x70c8('0x2c')]){_0x3d4f32[_0x70c8('0x93')][_0x70c8('0x8c')]=_0x3d4f32[_0x70c8('0x93')][_0x70c8('0x8c')][_0x70c8('0x95')](';')+';';}else{_0x3d4f32[_0x70c8('0x93')][_0x70c8('0x8c')]=null;}}else{_0x3d4f32[_0x70c8('0x93')]['tags']=null;}return db[_0x70c8('0x22')][_0x70c8('0x9a')](_0x3d4f32[_0x70c8('0x93')],{'fields':_[_0x70c8('0x24')](_0x3439da),'raw':!![]});})[_0x70c8('0x1a')](respondWithResult(_0x5b75af,0xc9))[_0x70c8('0x89')](handleError(_0x5b75af,null));};exports[_0x70c8('0xab')]=function(_0x3cc7c0,_0x4e7853){var _0x23d6ce=0x0;var _0x17b386=0x0;var _0x855024=0x0;return db['CmContact'][_0x70c8('0x23')]()[_0x70c8('0x1a')](function(_0x324fe5){return BPromise[_0x70c8('0xac')](_0x3cc7c0[_0x70c8('0x93')],function(_0x15db9d){var _0x9796dc={'where':{'$or':[]},'defaults':_0x15db9d,'fields':_[_0x70c8('0x24')](_0x324fe5),'raw':!![]};if(_0x15db9d[_0x70c8('0xad')]){for(var _0xf0bb22=0x0;_0xf0bb22<_0x15db9d[_0x70c8('0xad')][_0x70c8('0x2c')];_0xf0bb22++){var _0x130319={};_0x130319[_0x15db9d['duplicates'][_0xf0bb22]]=_0x15db9d[_0x15db9d[_0x70c8('0xad')][_0xf0bb22]];_0x9796dc[_0x70c8('0x41')]['$or'][_0x70c8('0x27')](_0x130319);}_0x9796dc[_0x70c8('0x41')][_0x70c8('0x5c')]=_0x15db9d['ListId'];}return db[_0x70c8('0x22')][_0x70c8('0xae')](_0x9796dc)[_0x70c8('0xaf')](function(_0x417799,_0x18ee02){if(_0x18ee02){_0x23d6ce++;}else{_0x855024++;}})[_0x70c8('0x89')](function(){_0x17b386++;});});})[_0x70c8('0x1a')](function(_0x1744a7){if(_0x1744a7){return{'success':_0x23d6ce,'failure':_0x17b386,'duplicates':_0x855024};}})[_0x70c8('0x1a')](respondWithResult(_0x4e7853,0xc9))[_0x70c8('0x89')](handleError(_0x4e7853,null));};exports['show']=function(_0x21fba1,_0x229d55){var _0x5158f1;return db['CmContact'][_0x70c8('0x23')]()[_0x70c8('0x1a')](function(_0x2d3fc4){return db[_0x70c8('0x22')][_0x70c8('0x8a')]({'where':{'id':_0x21fba1['params']['id']},'include':[{'model':db[_0x70c8('0x46')],'as':'Tags','attributes':['id','name',_0x70c8('0x38')],'required':_0x21fba1[_0x70c8('0x2e')][_0x70c8('0x61')]?!![]:![]}],'attributes':_['keys'](_0x2d3fc4)});})['then'](function(_0x39af32){if(!_[_0x70c8('0x58')](_0x39af32)){_0x5158f1=_0x39af32[_0x70c8('0x94')]({'plain':!![]});var _0x6f67e0={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x39af32&&_0x39af32[_0x70c8('0x5c')]){if(_0x39af32[_0x70c8('0x5c')]){_0x6f67e0[_0x70c8('0x41')][_0x70c8('0xb0')][_0x70c8('0x27')]({'ListId':{'$ne':_0x39af32[_0x70c8('0x5c')]}});}}return db[_0x70c8('0x28')][_0x70c8('0x90')](_0x6f67e0);}})[_0x70c8('0x1a')](function(_0x26a0ed){if(!_[_0x70c8('0x58')](_0x26a0ed)){return _[_0x70c8('0xb1')](_0x5158f1,_[_0x70c8('0x49')](_0x26a0ed,function(_0x56f915){return util[_0x70c8('0xb2')](_0x70c8('0xb3'),_0x56f915['id']);}));}})[_0x70c8('0x1a')](handleEntityNotFound(_0x229d55,null))[_0x70c8('0x1a')](respondWithResult(_0x229d55,null))['catch'](handleError(_0x229d55,null));};exports[_0x70c8('0x19')]=function(_0x2a0e06,_0x24fd7b){var _0x351ebe;if(_0x2a0e06[_0x70c8('0x93')]['id']){delete _0x2a0e06[_0x70c8('0x93')]['id'];}return db[_0x70c8('0x22')][_0x70c8('0x8a')]({'where':{'id':_0x2a0e06[_0x70c8('0x8b')]['id']}})[_0x70c8('0x1a')](handleEntityNotFound(_0x24fd7b,null))[_0x70c8('0x1a')](saveUpdates(_0x2a0e06[_0x70c8('0x93')],null))[_0x70c8('0x1a')](function(_0x1830d0){_0x351ebe=_0x1830d0;var _0xdba50d={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1830d0&&_0x1830d0['ListId']){if(_0x1830d0[_0x70c8('0x5c')]){_0xdba50d[_0x70c8('0x41')][_0x70c8('0xb0')]['push']({'ListId':{'$ne':_0x1830d0[_0x70c8('0x5c')]}});}}return db[_0x70c8('0x28')][_0x70c8('0x90')](_0xdba50d);})[_0x70c8('0x1a')](function(_0x291618){if(_0x291618){return _['omit'](_[_0x70c8('0xb4')](_0x2a0e06[_0x70c8('0x93')],function(_0x52bc72,_0x4e48a9){return _['startsWith'](_0x4e48a9,_0x70c8('0x26'));}),_[_0x70c8('0x49')](_0x291618,function(_0x1eb7b7){return util[_0x70c8('0xb2')](_0x70c8('0xb3'),_0x1eb7b7['id']);}));}})[_0x70c8('0x1a')](function(_0x4bb691){if(_0x4bb691&&!_['isEmpty'](_0x4bb691)){var _0x584dcd=squel[_0x70c8('0x19')]()[_0x70c8('0xb5')](_0x70c8('0x3c'))[_0x70c8('0xb6')](_0x4bb691)['where'](_0x70c8('0xb7'),_0x2a0e06['params']['id'])[_0x70c8('0xb8')]();return db[_0x70c8('0x79')]['query'](_0x584dcd[_0x70c8('0x55')],{'replacements':_0x584dcd['values']});}})[_0x70c8('0x1a')](function(){if(_0x2a0e06[_0x70c8('0x93')][_0x70c8('0xb9')]&&_0x351ebe){return db[_0x70c8('0xba')][_0x70c8('0x19')]({'phone':_0x2a0e06[_0x70c8('0x93')][_0x70c8('0xb9')]},{'where':{'ContactId':_0x351ebe['id']}});}})['then'](function(){return _0x351ebe;})[_0x70c8('0x1a')](respondWithResult(_0x24fd7b,null))['catch'](handleError(_0x24fd7b,null));};exports[_0x70c8('0xbb')]=function(_0x21bd1a,_0x1d3b56){var _0x52f34f={};var _0x1b42cb={};var _0x3da885;var _0x431edd;return db['CmContact'][_0x70c8('0x29')]({'where':{'id':_0x21bd1a['params']['id']}})[_0x70c8('0x1a')](handleEntityNotFound(_0x1d3b56,null))[_0x70c8('0x1a')](function(_0x1df9d7){if(_0x1df9d7){_0x3da885=_0x1df9d7;_0x1b42cb[_0x70c8('0x2d')]=_[_0x70c8('0x24')](db[_0x70c8('0x46')][_0x70c8('0xbc')]);_0x1b42cb[_0x70c8('0x2e')]=_[_0x70c8('0x24')](_0x21bd1a[_0x70c8('0x2e')]);_0x1b42cb['filters']=_['intersection'](_0x1b42cb[_0x70c8('0x2d')],_0x1b42cb[_0x70c8('0x2e')]);_0x52f34f['attributes']=_[_0x70c8('0x30')](_0x1b42cb['model'],qs['fields'](_0x21bd1a[_0x70c8('0x2e')][_0x70c8('0x31')]));_0x52f34f[_0x70c8('0x32')]=_0x52f34f[_0x70c8('0x32')][_0x70c8('0x2c')]?_0x52f34f[_0x70c8('0x32')]:_0x1b42cb['model'];_0x52f34f[_0x70c8('0x35')]=qs['sort'](_0x21bd1a[_0x70c8('0x2e')][_0x70c8('0x36')]);_0x52f34f[_0x70c8('0x41')]=qs[_0x70c8('0x2f')](_[_0x70c8('0xbd')](_0x21bd1a[_0x70c8('0x2e')],_0x1b42cb[_0x70c8('0x2f')]));if(_0x21bd1a[_0x70c8('0x2e')][_0x70c8('0x57')]){_0x52f34f['where']=_[_0x70c8('0x7b')](_0x52f34f[_0x70c8('0x41')],{'$or':_[_0x70c8('0x49')](_0x52f34f[_0x70c8('0x32')],function(_0x49c59a){var _0x87d8e8={};_0x87d8e8[_0x49c59a]={'$like':'%'+_0x21bd1a[_0x70c8('0x2e')][_0x70c8('0x57')]+'%'};return _0x87d8e8;})});}_0x52f34f=_[_0x70c8('0x7b')]({},_0x52f34f,_0x21bd1a[_0x70c8('0xbe')]);return _0x3da885[_0x70c8('0xbb')](_0x52f34f);}})[_0x70c8('0x1a')](function(_0x2b4976){if(_0x2b4976){_0x431edd=_0x2b4976['length'];if(!_0x21bd1a['query'][_0x70c8('0x33')](_0x70c8('0x34'))){_0x52f34f[_0x70c8('0x15')]=qs['limit'](_0x21bd1a['query']['limit']);_0x52f34f[_0x70c8('0x13')]=qs['offset'](_0x21bd1a[_0x70c8('0x2e')][_0x70c8('0x13')]);}return _0x3da885[_0x70c8('0xbb')](_0x52f34f);}})['then'](function(_0x504779){if(_0x504779){return _0x504779?{'count':_0x431edd,'rows':_0x504779}:null;}})[_0x70c8('0x1a')](respondWithResult(_0x1d3b56,null))['catch'](handleError(_0x1d3b56,null));};exports[_0x70c8('0xbf')]=function(_0x34b895,_0x57ae0e){if(_0x34b895[_0x70c8('0x93')]['id']){delete _0x34b895['body']['id'];}return db[_0x70c8('0x22')]['findOne']({'where':{'id':_0x34b895['params']['id']}})[_0x70c8('0x1a')](handleEntityNotFound(_0x57ae0e,null))[_0x70c8('0x1a')](function(_0x2e0ea2){if(_0x2e0ea2){return _0x2e0ea2[_0x70c8('0xbf')](_0x34b895[_0x70c8('0x93')][_0x70c8('0xc0')]||[]);}return null;})[_0x70c8('0x1a')](respondWithResult(_0x57ae0e,null))['catch'](handleError(_0x57ae0e,null));};exports['getHoppers']=function(_0x4089de,_0x53e3eb){var _0x16a6e4={'raw':![],'where':{}};var _0x34074b={};var _0x4125c7={'count':0x0,'rows':[]};return db['CmContact'][_0x70c8('0x29')]({'where':{'id':_0x4089de[_0x70c8('0x8b')]['id']}})['then'](handleEntityNotFound(_0x53e3eb,null))[_0x70c8('0x1a')](function(_0x5bad1f){if(_0x5bad1f){_0x34074b['model']=_[_0x70c8('0x24')](db['CmHopper'][_0x70c8('0xbc')]);_0x34074b[_0x70c8('0x2e')]=_[_0x70c8('0x24')](_0x4089de[_0x70c8('0x2e')]);_0x34074b[_0x70c8('0x2f')]=_[_0x70c8('0x30')](_0x34074b[_0x70c8('0x2d')],_0x34074b[_0x70c8('0x2e')]);_0x16a6e4[_0x70c8('0x32')]=_[_0x70c8('0x30')](_0x34074b[_0x70c8('0x2d')],qs['fields'](_0x4089de[_0x70c8('0x2e')]['fields']));_0x16a6e4[_0x70c8('0x32')]=_0x16a6e4[_0x70c8('0x32')][_0x70c8('0x2c')]?_0x16a6e4[_0x70c8('0x32')]:_0x34074b[_0x70c8('0x2d')];if(!_0x4089de['query'][_0x70c8('0x33')](_0x70c8('0x34'))){_0x16a6e4[_0x70c8('0x15')]=qs[_0x70c8('0x15')](_0x4089de[_0x70c8('0x2e')][_0x70c8('0x15')]);_0x16a6e4[_0x70c8('0x13')]=qs[_0x70c8('0x13')](_0x4089de[_0x70c8('0x2e')][_0x70c8('0x13')]);}_0x16a6e4['order']=qs[_0x70c8('0x36')](_0x4089de[_0x70c8('0x2e')][_0x70c8('0x36')]);_0x16a6e4['where']=qs[_0x70c8('0x2f')](_['pick'](_0x4089de[_0x70c8('0x2e')],_0x34074b[_0x70c8('0x2f')]));_0x16a6e4[_0x70c8('0x41')]['ContactId']=_0x5bad1f['id'];if(_0x4089de['query'][_0x70c8('0x57')]){_0x16a6e4[_0x70c8('0x41')]=_[_0x70c8('0x7b')](_0x16a6e4[_0x70c8('0x41')],{'$or':_[_0x70c8('0x49')](_0x16a6e4[_0x70c8('0x32')],function(_0x585a83){var _0x2a3be2={};_0x2a3be2[_0x585a83]={'$like':'%'+_0x4089de[_0x70c8('0x2e')][_0x70c8('0x57')]+'%'};return _0x2a3be2;})});}_0x16a6e4=_[_0x70c8('0x7b')]({},_0x16a6e4,_0x4089de['options']);return db[_0x70c8('0xba')][_0x70c8('0x16')]({'where':_0x16a6e4[_0x70c8('0x41')]})[_0x70c8('0x1a')](function(_0x13a922){_0x4125c7[_0x70c8('0x16')]=_0x13a922;if(_0x4089de['query'][_0x70c8('0xc1')]){_0x16a6e4[_0x70c8('0xc2')]=[{'all':!![]}];}return db[_0x70c8('0xba')][_0x70c8('0x90')](_0x16a6e4);})[_0x70c8('0x1a')](function(_0x2948a6){_0x4125c7[_0x70c8('0x88')]=_0x2948a6;return _0x4125c7;});}})[_0x70c8('0x1a')](respondWithFilteredResult(_0x53e3eb,_0x16a6e4))['catch'](handleError(_0x53e3eb,null));};exports[_0x70c8('0xc3')]=function(_0x4f865a,_0x35ea1e){var _0x3acace={'raw':!![],'where':{}};var _0x86bc25={};var _0x2fafd7={'count':0x0,'rows':[]};return db[_0x70c8('0x22')][_0x70c8('0x29')]({'where':{'id':_0x4f865a[_0x70c8('0x8b')]['id']}})['then'](handleEntityNotFound(_0x35ea1e,null))[_0x70c8('0x1a')](function(_0x8989b0){if(_0x8989b0){_0x86bc25[_0x70c8('0x2d')]=_[_0x70c8('0x24')](db[_0x70c8('0xa3')]['rawAttributes']);_0x86bc25['query']=_[_0x70c8('0x24')](_0x4f865a[_0x70c8('0x2e')]);_0x86bc25[_0x70c8('0x2f')]=_[_0x70c8('0x30')](_0x86bc25[_0x70c8('0x2d')],_0x86bc25[_0x70c8('0x2e')]);_0x3acace['attributes']=_['intersection'](_0x86bc25[_0x70c8('0x2d')],qs['fields'](_0x4f865a[_0x70c8('0x2e')][_0x70c8('0x31')]));_0x3acace[_0x70c8('0x32')]=_0x3acace[_0x70c8('0x32')][_0x70c8('0x2c')]?_0x3acace['attributes']:_0x86bc25[_0x70c8('0x2d')];if(!_0x4f865a[_0x70c8('0x2e')][_0x70c8('0x33')](_0x70c8('0x34'))){_0x3acace[_0x70c8('0x15')]=qs[_0x70c8('0x15')](_0x4f865a[_0x70c8('0x2e')][_0x70c8('0x15')]);_0x3acace['offset']=qs[_0x70c8('0x13')](_0x4f865a[_0x70c8('0x2e')][_0x70c8('0x13')]);}_0x3acace[_0x70c8('0x35')]=qs['sort'](_0x4f865a[_0x70c8('0x2e')]['sort']);_0x3acace[_0x70c8('0x41')]=qs[_0x70c8('0x2f')](_[_0x70c8('0xbd')](_0x4f865a[_0x70c8('0x2e')],_0x86bc25[_0x70c8('0x2f')]));_0x3acace[_0x70c8('0x41')][_0x70c8('0xc4')]=_0x8989b0['id'];if(_0x4f865a['query']['filter']){_0x3acace[_0x70c8('0x41')]=_[_0x70c8('0x7b')](_0x3acace[_0x70c8('0x41')],{'$or':_['map'](_0x3acace[_0x70c8('0x32')],function(_0x3d246f){var _0x3f94cc={};_0x3f94cc[_0x3d246f]={'$like':'%'+_0x4f865a[_0x70c8('0x2e')]['filter']+'%'};return _0x3f94cc;})});}_0x3acace=_[_0x70c8('0x7b')]({},_0x3acace,_0x4f865a[_0x70c8('0xbe')]);return db[_0x70c8('0xa3')][_0x70c8('0x16')]({'where':_0x3acace[_0x70c8('0x41')]})[_0x70c8('0x1a')](function(_0xea5e4a){_0x2fafd7[_0x70c8('0x16')]=_0xea5e4a;if(_0x4f865a[_0x70c8('0x2e')][_0x70c8('0xc1')]){_0x3acace[_0x70c8('0xc2')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x70c8('0x90')](_0x3acace);})[_0x70c8('0x1a')](function(_0x35fada){_0x2fafd7[_0x70c8('0x88')]=_0x35fada;return _0x2fafd7;});}})[_0x70c8('0x1a')](respondWithFilteredResult(_0x35ea1e,_0x3acace))['catch'](handleError(_0x35ea1e,null));};exports['getHopperFinals']=function(_0x39eea1,_0x3718be){var _0x43234c={'raw':!![],'where':{}};var _0x1f1c77={};var _0x5848f5={'count':0x0,'rows':[]};return db['CmContact'][_0x70c8('0x29')]({'where':{'id':_0x39eea1[_0x70c8('0x8b')]['id']}})[_0x70c8('0x1a')](handleEntityNotFound(_0x3718be,null))[_0x70c8('0x1a')](function(_0x5ab1ad){if(_0x5ab1ad){_0x1f1c77['model']=_['keys'](db['CmHopperFinal'][_0x70c8('0xbc')]);_0x1f1c77[_0x70c8('0x2e')]=_['keys'](_0x39eea1[_0x70c8('0x2e')]);_0x1f1c77['filters']=_[_0x70c8('0x30')](_0x1f1c77[_0x70c8('0x2d')],_0x1f1c77[_0x70c8('0x2e')]);_0x43234c[_0x70c8('0x32')]=_[_0x70c8('0x30')](_0x1f1c77['model'],qs[_0x70c8('0x31')](_0x39eea1['query'][_0x70c8('0x31')]));_0x43234c[_0x70c8('0x32')]=_0x43234c[_0x70c8('0x32')][_0x70c8('0x2c')]?_0x43234c[_0x70c8('0x32')]:_0x1f1c77[_0x70c8('0x2d')];if(!_0x39eea1[_0x70c8('0x2e')][_0x70c8('0x33')]('nolimit')){_0x43234c[_0x70c8('0x15')]=qs[_0x70c8('0x15')](_0x39eea1[_0x70c8('0x2e')][_0x70c8('0x15')]);_0x43234c[_0x70c8('0x13')]=qs['offset'](_0x39eea1[_0x70c8('0x2e')]['offset']);}_0x43234c[_0x70c8('0x35')]=qs[_0x70c8('0x36')](_0x39eea1[_0x70c8('0x2e')][_0x70c8('0x36')]);_0x43234c[_0x70c8('0x41')]=qs[_0x70c8('0x2f')](_['pick'](_0x39eea1[_0x70c8('0x2e')],_0x1f1c77[_0x70c8('0x2f')]));_0x43234c[_0x70c8('0x41')][_0x70c8('0xc4')]=_0x5ab1ad['id'];if(_0x39eea1[_0x70c8('0x2e')][_0x70c8('0x57')]){_0x43234c[_0x70c8('0x41')]=_[_0x70c8('0x7b')](_0x43234c[_0x70c8('0x41')],{'$or':_[_0x70c8('0x49')](_0x43234c['attributes'],function(_0x3d0c89){var _0x270877={};_0x270877[_0x3d0c89]={'$like':'%'+_0x39eea1[_0x70c8('0x2e')][_0x70c8('0x57')]+'%'};return _0x270877;})});}_0x43234c=_[_0x70c8('0x7b')]({},_0x43234c,_0x39eea1['options']);return db[_0x70c8('0xc5')]['count']({'where':_0x43234c['where']})[_0x70c8('0x1a')](function(_0x5c88d6){_0x5848f5[_0x70c8('0x16')]=_0x5c88d6;if(_0x39eea1[_0x70c8('0x2e')]['includeAll']){_0x43234c['include']=[{'all':!![]}];}return db[_0x70c8('0xc5')][_0x70c8('0x90')](_0x43234c);})['then'](function(_0x2b4b62){_0x5848f5[_0x70c8('0x88')]=_0x2b4b62;return _0x5848f5;});}})['then'](respondWithFilteredResult(_0x3718be,_0x43234c))[_0x70c8('0x89')](handleError(_0x3718be,null));};exports[_0x70c8('0xc6')]=function(_0x235313,_0x89822f){var _0x554948={'raw':!![],'where':{}};var _0x3ba506={};var _0x2bb913={'count':0x0,'rows':[]};return db[_0x70c8('0x22')]['findOne']({'where':{'id':_0x235313[_0x70c8('0x8b')]['id']}})[_0x70c8('0x1a')](handleEntityNotFound(_0x89822f,null))[_0x70c8('0x1a')](function(_0x500661){if(_0x500661){_0x3ba506['model']=_[_0x70c8('0x24')](db[_0x70c8('0xc7')][_0x70c8('0xbc')]);_0x3ba506[_0x70c8('0x2e')]=_[_0x70c8('0x24')](_0x235313['query']);_0x3ba506['filters']=_['intersection'](_0x3ba506[_0x70c8('0x2d')],_0x3ba506[_0x70c8('0x2e')]);_0x554948['attributes']=_[_0x70c8('0x30')](_0x3ba506[_0x70c8('0x2d')],qs[_0x70c8('0x31')](_0x235313[_0x70c8('0x2e')]['fields']));_0x554948[_0x70c8('0x32')]=_0x554948[_0x70c8('0x32')]['length']?_0x554948[_0x70c8('0x32')]:_0x3ba506[_0x70c8('0x2d')];if(!_0x235313[_0x70c8('0x2e')][_0x70c8('0x33')]('nolimit')){_0x554948['limit']=qs[_0x70c8('0x15')](_0x235313[_0x70c8('0x2e')][_0x70c8('0x15')]);_0x554948[_0x70c8('0x13')]=qs['offset'](_0x235313[_0x70c8('0x2e')][_0x70c8('0x13')]);}_0x554948[_0x70c8('0x35')]=qs[_0x70c8('0x36')](_0x235313[_0x70c8('0x2e')][_0x70c8('0x36')]);_0x554948[_0x70c8('0x41')]=qs[_0x70c8('0x2f')](_[_0x70c8('0xbd')](_0x235313[_0x70c8('0x2e')],_0x3ba506['filters']));_0x554948[_0x70c8('0x41')][_0x70c8('0xc4')]=_0x500661['id'];if(_0x235313['query'][_0x70c8('0x57')]){_0x554948[_0x70c8('0x41')]=_[_0x70c8('0x7b')](_0x554948[_0x70c8('0x41')],{'$or':_[_0x70c8('0x49')](_0x554948[_0x70c8('0x32')],function(_0x6b8f63){var _0x25ff8b={};_0x25ff8b[_0x6b8f63]={'$like':'%'+_0x235313[_0x70c8('0x2e')][_0x70c8('0x57')]+'%'};return _0x25ff8b;})});}_0x554948=_[_0x70c8('0x7b')]({},_0x554948,_0x235313[_0x70c8('0xbe')]);return db['JscriptySessionReport'][_0x70c8('0x16')]({'where':_0x554948['where']})[_0x70c8('0x1a')](function(_0x3dce41){_0x2bb913['count']=_0x3dce41;if(_0x235313['query'][_0x70c8('0xc1')]){_0x554948[_0x70c8('0xc2')]=[{'all':!![]}];}return db[_0x70c8('0xc7')][_0x70c8('0x90')](_0x554948);})[_0x70c8('0x1a')](function(_0x5400c2){_0x2bb913[_0x70c8('0x88')]=_0x5400c2;return _0x2bb913;});}})[_0x70c8('0x1a')](respondWithFilteredResult(_0x89822f,_0x554948))[_0x70c8('0x89')](handleError(_0x89822f,null));};exports[_0x70c8('0xc8')]=function(_0x55c7c3,_0x63473b){try{if(!_0x55c7c3[_0x70c8('0x93')][_0x70c8('0x5c')]){throw new Error('No\x20ListId\x20specified');}if(!_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xc9')]){throw new Error(_0x70c8('0xca'));}if(!_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xcb')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xcc')]){throw new Error(_0x70c8('0xcd'));}var _0x549295=_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xc9')]['split'](',');var _0x3fee73=_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xcb')][_0x70c8('0x48')](',');if(!_0x549295[_0x70c8('0x2c')]||!_0x3fee73[_0x70c8('0x2c')]||_0x549295[_0x70c8('0x2c')]!==_0x3fee73[_0x70c8('0x2c')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x55c7c3['body'][_0x70c8('0x31')]=_[_0x70c8('0xce')](_0x549295,_0x3fee73);if(!_0x55c7c3['body'][_0x70c8('0x31')][_0x70c8('0xb9')]){throw new Error(_0x70c8('0xcf'));}if(!_0x55c7c3[_0x70c8('0x93')][_0x70c8('0x31')][_0x70c8('0xd0')]){throw new Error(_0x70c8('0xd1'));}var _0x360053=path[_0x70c8('0x95')](config[_0x70c8('0xd2')],_0x70c8('0xd3'),_0x55c7c3[_0x70c8('0xd4')][_0x70c8('0xd5')]);fs[_0x70c8('0xd6')](_0x360053,parseInt(_0x70c8('0xd7'),0x8));var _0x33cb69=require(_0x70c8('0xd8'))[_0x70c8('0xd9')](path['join'](__dirname,_0x70c8('0xda')),[_0x360053,_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xc9')],_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xcb')],_0x55c7c3[_0x70c8('0x93')]['ListId'],_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xdb')],_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xad')],_0x55c7c3[_0x70c8('0x93')][_0x70c8('0xcc')]]);return _0x63473b[_0x70c8('0x11')](0xc8)[_0x70c8('0x12')]({'message':_0x70c8('0xdc'),'pid':_0x33cb69[_0x70c8('0xdd')]});}catch(_0x8a624d){return _0x63473b[_0x70c8('0x11')](0x1f4)[_0x70c8('0xde')](_0x8a624d);}};exports['upload']=function(_0x3243de,_0x500f31){var _0x432cf4=fs[_0x70c8('0xdf')](_0x3243de[_0x70c8('0xd4')][_0x70c8('0x3')]);Papa[_0x70c8('0xe0')](_0x432cf4,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3832ac){return _0x500f31[_0x70c8('0x11')](0xc8)['json']({'file':_0x3243de[_0x70c8('0xd4')],'fields':_0x3832ac[_0x70c8('0xe1')][_0x70c8('0x31')]});}});};exports[_0x70c8('0xe2')]=function(_0x20a0f9,_0x8e9ec5){return db[_0x70c8('0x4c')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x70c8('0x78')}})['then'](function(_0x500cd5){var _0x47cad4=![];if(!_0x20a0f9['body'][_0x70c8('0x5c')]){throw new Error('No\x20ListId\x20specified');}if(!_0x20a0f9[_0x70c8('0x93')]['binding']['phone']){throw new Error(_0x70c8('0xcf'));}if(!_0x20a0f9['body'][_0x70c8('0xe3')][_0x70c8('0xd0')]){throw new Error(_0x70c8('0xd1'));}if(!_0x20a0f9['body'][_0x70c8('0xcc')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xf0f070=require(_0x70c8('0xd8'))[_0x70c8('0xd9')](path[_0x70c8('0x95')](__dirname,'../../components/import/cm/csv2'),[_0x20a0f9[_0x70c8('0x8b')]['id'],JSON[_0x70c8('0xe4')](_0x20a0f9[_0x70c8('0x93')]),JSON[_0x70c8('0xe4')](_0x500cd5)]);_0xf0f070['on'](_0x70c8('0xe5'),function(){_0x47cad4=!![];return _0x8e9ec5[_0x70c8('0x11')](0xc8)[_0x70c8('0x12')]({'message':_0x70c8('0xe6'),'pid':_0xf0f070['pid']});});_0xf0f070['on'](_0x70c8('0xe7'),function(_0x384f3c){if(_0x384f3c&&!_0x47cad4){return _0x8e9ec5[_0x70c8('0x11')](0x1f4)[_0x70c8('0x12')]({'message':_0x70c8('0xe8'),'pid':_0xf0f070[_0x70c8('0xdd')]});}});})[_0x70c8('0x89')](handleError(_0x8e9ec5,null));};exports[_0x70c8('0xe9')]=function(_0x5941dc,_0x27d1dc){var _0x10fdb7=[_0x70c8('0xea'),_0x70c8('0xeb'),_0x70c8('0xec'),_0x70c8('0xed'),_0x70c8('0xee'),'whatsapp','voice'];var _0x879276={'offset':0x0,'order':qs[_0x70c8('0x36')](_0x70c8('0xef'))},_0x829c97={'count':0x0,'rows':[]};Promise[_0x70c8('0xf0')]()[_0x70c8('0x1a')](function(){if(_0x5941dc['query']['channel']){if(!_['includes'](_0x10fdb7,_0x5941dc[_0x70c8('0x2e')][_0x70c8('0xf1')][_0x70c8('0xf2')]())){throw new Error(_0x70c8('0xf3'));}_0x10fdb7=[_0x5941dc[_0x70c8('0x2e')][_0x70c8('0xf1')]['toLowerCase']()];}if(_0x5941dc['query'][_0x70c8('0xf4')]){try{var _0x22297f=JSON['parse'](_0x5941dc[_0x70c8('0x2e')]['range']);if(!moment(_0x22297f['from'])[_0x70c8('0xf5')]()){throw new Error(_0x70c8('0xf6'));}if(!moment(_0x22297f['to'])[_0x70c8('0xf5')]()){throw new Error(_0x70c8('0xf7'));}}catch(_0xba5b49){throw new Error(_0x70c8('0xf8'));}}if(!_0x5941dc['query']['hasOwnProperty']('nolimit')){_0x879276[_0x70c8('0x15')]=qs[_0x70c8('0x15')](_0x5941dc['query'][_0x70c8('0x15')]||0xa);_0x879276['offset']=qs[_0x70c8('0x13')](_0x5941dc[_0x70c8('0x2e')][_0x70c8('0x13')]);}var _0x3f20b2=_0x10fdb7[_0x70c8('0x49')](function(_0x2d256d){if(_0x2d256d===_0x70c8('0xf9')){var _0x420f45={'attributes':['id',_0x70c8('0xfa'),_0x70c8('0x54'),_0x70c8('0xfb'),_0x70c8('0xfc'),'callerid',_0x70c8('0xfd'),_0x70c8('0xfe'),_0x70c8('0xff'),_0x70c8('0x100'),_0x70c8('0x101'),_0x70c8('0x102'),_0x70c8('0x103'),_0x70c8('0x104'),_0x70c8('0x105')],'where':{'ContactId':_0x5941dc[_0x70c8('0x8b')]['id']},'include':[{'model':db[_0x70c8('0x4c')],'as':_0x70c8('0x4c'),'attributes':['id',_0x70c8('0x20'),_0x70c8('0x106'),_0x70c8('0x107')]}],'order':[['createdAt',_0x70c8('0x70')]]};if(_0x5941dc[_0x70c8('0x2e')][_0x70c8('0xf4')]){_0x420f45['where'][_0x70c8('0x101')]={'$gte':_0x22297f['from'],'$lte':_0x22297f['to']};}return db[_0x70c8('0xa5')][_0x70c8('0x108')](_0x420f45)['then'](function(_0xa9394d){_0x829c97[_0x70c8('0x16')]+=_0xa9394d['count'];return _['map'](_0xa9394d['rows'],function(_0x233a78){var _0x25671b=_0x233a78[_0x70c8('0x94')]({'plain':!![]});_0x25671b[_0x70c8('0xf1')]=_0x2d256d;if(_0x25671b['User']){_0x25671b[_0x70c8('0x4c')]={'id':_0x25671b['User']['id'],'name':_0x25671b[_0x70c8('0x4c')][_0x70c8('0x20')],'fullname':_0x25671b[_0x70c8('0x4c')]['fullname'],'alias':_0x25671b[_0x70c8('0x4c')][_0x70c8('0x107')]};}return _0x25671b;});});}else{var _0x2f1271=_['startCase'](_0x2d256d)+(_0x2d256d===_0x70c8('0xeb')?_0x70c8('0x109'):_0x70c8('0x10a'));var _0x7f928b={'attributes':['id',_0x70c8('0x10b'),'closedAt',_0x70c8('0x101'),_0x70c8('0x100'),_0x70c8('0x10c'),_0x70c8('0x10d'),'thirdDisposition',_0x70c8('0x105'),_0x2f1271+'Id'],'where':{'ContactId':_0x5941dc[_0x70c8('0x8b')]['id']},'include':[{'model':db[_0x2f1271],'as':'Account','attributes':['id',_0x70c8('0x20'),_0x70c8('0x10e')]},{'model':db[_0x70c8('0x4c')],'as':_0x70c8('0x10f'),'attributes':['id',_0x70c8('0x20'),_0x70c8('0x106')]},{'model':db[_0x70c8('0x46')],'as':'Tags','attributes':['id',_0x70c8('0x20'),_0x70c8('0x38')],'through':{'attributes':[]}}],'order':[[_0x70c8('0x101'),_0x70c8('0x70')]]};if(_0x5941dc[_0x70c8('0x2e')][_0x70c8('0xf4')]){_0x7f928b[_0x70c8('0x41')]['createdAt']={'$gte':_0x22297f[_0x70c8('0x39')],'$lte':_0x22297f['to']};}switch(_0x2d256d){case _0x70c8('0xeb'):_0x7f928b[_0x70c8('0x32')][_0x70c8('0x27')](_0x70c8('0x110'),_0x70c8('0x111'),_0x70c8('0x112'),_0x70c8('0x113'),_0x70c8('0x114'),_0x70c8('0x115'),_0x70c8('0x116'),_0x70c8('0x117'),_0x70c8('0x118'));break;case _0x70c8('0xea'):_0x7f928b[_0x70c8('0x32')]['push'](_0x70c8('0x119'),_0x70c8('0x11a'));break;case'openchannel':_0x7f928b[_0x70c8('0x32')]['push'](_0x70c8('0x11b'),'threadId');break;}return db[_[_0x70c8('0x11c')](_0x2d256d)+'Interaction']['findAndCountAll'](_0x7f928b)[_0x70c8('0x1a')](function(_0x3d469c){_0x829c97['count']+=_0x3d469c['count'];return _['map'](_0x3d469c[_0x70c8('0x88')],function(_0x1e27e1){var _0x2c4a09=_0x1e27e1['get']({'plain':!![]});_0x2c4a09[_0x70c8('0xf1')]=_0x2d256d;if(_0x2c4a09['Owner']){_0x2c4a09[_0x70c8('0x10f')]={'id':_0x2c4a09[_0x70c8('0x10f')]['id'],'name':_0x2c4a09[_0x70c8('0x10f')][_0x70c8('0x20')],'fullname':_0x2c4a09['Owner'][_0x70c8('0x106')]};}return _0x2c4a09;});});}});return Promise[_0x70c8('0x2b')](_0x3f20b2);})['then'](function(_0x2b51bd){return _(_0x2b51bd)[_0x70c8('0x11d')]()[_0x70c8('0x11e')]('createdAt')[_0x70c8('0x11f')]()['value']();})['then'](function(_0x18c488){_0x829c97[_0x70c8('0x88')]=_0x879276[_0x70c8('0x15')]?_0x18c488[_0x70c8('0x120')](_0x879276[_0x70c8('0x13')],_0x879276[_0x70c8('0x13')]+_0x879276[_0x70c8('0x15')]):_0x18c488;return _0x829c97;})[_0x70c8('0x1a')](respondWithFilteredResult(_0x27d1dc,_0x879276))['catch'](handleError(_0x27d1dc,null));};
\ No newline at end of file
index 04b9b22..ad087ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7408=['events','../../mysqldb','CmContact','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0x7408,0x13b));var _0x8740=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0x7408[_0x4ed520];return _0x4415a6;};'use strict';var EventEmitter=require(_0x8740('0x0'));var CmContact=require(_0x8740('0x1'))['db'][_0x8740('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8740('0x3'),'afterUpdate':'update','afterDestroy':_0x8740('0x4')};function emitEvent(_0x277a4e){return function(_0x24fbcd,_0x54c1c8,_0x218e7f){CmContactEvents[_0x8740('0x5')](_0x277a4e+':'+_0x24fbcd['id'],_0x24fbcd);CmContactEvents[_0x8740('0x5')](_0x277a4e,_0x24fbcd);_0x218e7f(null);};}for(var e in events){if(events[_0x8740('0x6')](e)){var event=events[e];CmContact[_0x8740('0x7')](e,emitEvent(event));}}module[_0x8740('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x8eab=['hasOwnProperty','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','save','update','remove','emit'];(function(_0x229139,_0x952d96){var _0x10760b=function(_0x2fd778){while(--_0x2fd778){_0x229139['push'](_0x229139['shift']());}};_0x10760b(++_0x952d96);}(_0x8eab,0x184));var _0xb8ea=function(_0x40e090,_0x185f63){_0x40e090=_0x40e090-0x0;var _0x523827=_0x8eab[_0x40e090];return _0x523827;};'use strict';var EventEmitter=require(_0xb8ea('0x0'));var CmContact=require(_0xb8ea('0x1'))['db'][_0xb8ea('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xb8ea('0x3')](0x0);var events={'afterCreate':_0xb8ea('0x4'),'afterUpdate':_0xb8ea('0x5'),'afterDestroy':_0xb8ea('0x6')};function emitEvent(_0x50bf24){return function(_0x50eca6,_0x2c9c44,_0x367c01){CmContactEvents[_0xb8ea('0x7')](_0x50bf24+':'+_0x50eca6['id'],_0x50eca6);CmContactEvents[_0xb8ea('0x7')](_0x50bf24,_0x50eca6);_0x367c01(null);};}for(var e in events){if(events[_0xb8ea('0x8')](e)){var event=events[e];CmContact[_0xb8ea('0x9')](e,emitEvent(event));}}module[_0xb8ea('0xa')]=CmContactEvents;
\ No newline at end of file
index 11ce69d..775999f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e4=['cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','isEmpty','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','findOne','isNil','cmContact,\x20afterCreate\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xf0e4,0x198));var _0x4f0e=function(_0x2a8184,_0x32581a){_0x2a8184=_0x2a8184-0x0;var _0x3ed812=_0xf0e4[_0x2a8184];return _0x3ed812;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4f0e('0x0'));var moment=require(_0x4f0e('0x1'));var BPromise=require(_0x4f0e('0x2'));var rp=require(_0x4f0e('0x3'));var fs=require('fs');var path=require(_0x4f0e('0x4'));var rimraf=require(_0x4f0e('0x5'));var config=require(_0x4f0e('0x6'));var attributes=require(_0x4f0e('0x7'));module[_0x4f0e('0x8')]=function(_0x2c5999,_0x85019f){return _0x2c5999['define']('CmContact',attributes,{'tableName':_0x4f0e('0x9'),'paranoid':!![],'indexes':[{'name':_0x4f0e('0xa'),'fields':[_0x4f0e('0xa')]},{'name':_0x4f0e('0xb'),'fields':['firstName',_0x4f0e('0xc'),_0x4f0e('0xa'),_0x4f0e('0xd'),_0x4f0e('0xe'),_0x4f0e('0xf')],'type':_0x4f0e('0x10')}],'timestamps':!![],'charset':_0x4f0e('0x11'),'collate':_0x4f0e('0x12'),'hooks':{'afterCreate':function(_0x53e784,_0x46b794,_0x162267){var _0x2104ff=_0x2c5999[_0x4f0e('0x13')];var _0x2db416=_0x53e784[_0x4f0e('0x14')]({'plain':!![]});function _0x3783a5(){return function(_0x562098){logger[_0x4f0e('0x15')](_0x4f0e('0x16'),'afterCreate',util[_0x4f0e('0x17')](_0x562098,{'showHidden':![],'depth':null}));};}var _0x37ac31=function(_0x5b9321){return new BPromise(function(_0x57af8e,_0x54272d){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x5b9321['id']}})[_0x4f0e('0x19')](function(_0x5b0e18){if(!_['isNil'](_0x5b0e18)){throw new Error('cmContact,\x20afterCreate\x20'+_0x2db416['phone']+_0x4f0e('0x1a')+_0x5b9321['id']);}return _0x2104ff['CmHopper']['create']({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416['scheduledat']?_0x2db416[_0x4f0e('0x1d')]:moment()['format'](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416['callbackUniqueid']:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x5b9321['id']});})[_0x4f0e('0x21')](function(_0x23427b){_0x54272d(_0x23427b);});});};var _0x5d87c6=function(_0x208b94){return new BPromise(function(_0x44a527,_0x44b055){_0x2104ff['CmHopper'][_0x4f0e('0x22')]({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x208b94['id']}})[_0x4f0e('0x19')](function(_0x5e2364){if(!_[_0x4f0e('0x23')](_0x5e2364)){throw new Error(_0x4f0e('0x24')+_0x2db416['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x208b94['id']);}return _0x2104ff[_0x4f0e('0x25')][_0x4f0e('0x22')]({'where':{'calleridnum':_0x2db416[_0x4f0e('0xa')],'VoiceQueueId':_0x208b94['id']}});})[_0x4f0e('0x19')](function(_0x509a45){if(!_[_0x4f0e('0x23')](_0x509a45)){throw new Error(_0x4f0e('0x26')+_0x2db416['phone']+_0x4f0e('0x27')+_0x208b94['id']);}return _0x2104ff['CmHopper'][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416['ListId'],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()['format'](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x208b94['id']});})[_0x4f0e('0x21')](function(_0x5e15cd){_0x44b055(_0x5e15cd);});});};function _0x198811(){return function(_0x51be66){logger[_0x4f0e('0x15')]('cmContact',_0x4f0e('0x29'),util[_0x4f0e('0x17')](_0x51be66,{'showHidden':![],'depth':null}));};}var _0x43f26e=function(_0x10cd4a){return new BPromise(function(_0xe0ae8,_0x241e51){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0x10cd4a['id']}})['then'](function(_0x4a29d1){if(!_[_0x4f0e('0x23')](_0x4a29d1)){throw new Error('cmContact,\x20afterCreate\x20'+_0x2db416['phone']+_0x4f0e('0x2a')+_0x10cd4a['id']);}return _0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416['phone'],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416['priority']:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2db416['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'CampaignId':_0x10cd4a['id']});})[_0x4f0e('0x21')](function(_0x2d8812){_0x241e51(_0x2d8812);});});};var _0x325586=function(_0xec778a){return new BPromise(function(_0x3e8f31,_0x371f6c){_0x2104ff[_0x4f0e('0x18')]['findOne']({'where':{'phone':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0xec778a['id']}})[_0x4f0e('0x19')](function(_0xb864f){if(!_[_0x4f0e('0x23')](_0xb864f)){throw new Error(_0x4f0e('0x24')+_0x2db416[_0x4f0e('0xa')]+_0x4f0e('0x2b')+_0xec778a['id']);}return _0x2104ff[_0x4f0e('0x25')][_0x4f0e('0x22')]({'where':{'calleridnum':_0x2db416[_0x4f0e('0xa')],'CampaignId':_0xec778a['id']}});})[_0x4f0e('0x19')](function(_0x2257e9){if(!_[_0x4f0e('0x23')](_0x2257e9)){throw new Error(_0x4f0e('0x26')+_0x2db416[_0x4f0e('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0xec778a['id']);}return _0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'priority':_0x2db416['priority']?_0x2db416[_0x4f0e('0x1c')]:0x2,'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')),'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416['callbackUniqueid']?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416['callbackUniqueid']?moment()['format'](_0x4f0e('0x1e')):undefined,'CampaignId':_0xec778a['id']});})[_0x4f0e('0x21')](function(_0x4f1350){_0x371f6c(_0x4f1350);});});};if(_0x2db416[_0x4f0e('0x1b')]){_0x2104ff[_0x4f0e('0x2c')][_0x4f0e('0x2d')]({'where':{'type':_0x4f0e('0x2e')},'attributes':['id',_0x4f0e('0x2f')],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x31'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})['then'](function(_0x4aadf8){if(_0x4aadf8){var _0x2aac55=[];for(var _0x48578b=0x0,_0x3ff575;_0x48578b<_0x4aadf8[_0x4f0e('0x32')];_0x48578b+=0x1){_0x3ff575=_0x4aadf8[_0x48578b][_0x4f0e('0x14')]({'plain':!![]});switch(_0x3ff575[_0x4f0e('0x2f')]){case _0x4f0e('0x33'):_0x5d87c6(_0x3ff575)[_0x4f0e('0x21')](_0x3783a5());break;case _0x4f0e('0x34'):_0x37ac31(_0x3ff575)['catch'](_0x3783a5());break;default:_0x2104ff[_0x4f0e('0x18')][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'scheduledat':_0x2db416[_0x4f0e('0x1d')]?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416[_0x4f0e('0x1c')]:0x2,'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416['callbackUniqueid']?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'VoiceQueueId':_0x3ff575['id']})['catch'](_0x3783a5());}}}})['then'](function(){return _0x2104ff[_0x4f0e('0x2c')]['findAll']({'where':{'type':_0x4f0e('0x2e')},'attributes':['id'],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x35'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})['then'](function(_0xc45a69){if(_0xc45a69){var _0x2292c8=[];for(var _0x1b2d6a=0x0,_0x526dd1;_0x1b2d6a<_0xc45a69[_0x4f0e('0x32')];_0x1b2d6a+=0x1){_0x526dd1=_0xc45a69[_0x1b2d6a][_0x4f0e('0x14')]({'plain':!![]});_0x2104ff['CmHopperBlack'][_0x4f0e('0x28')]({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'VoiceQueueId':_0x526dd1['id']})[_0x4f0e('0x21')](function(_0x473603){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x473603[_0x4f0e('0x37')]);});}}});})[_0x4f0e('0x19')](function(){return _0x2104ff[_0x4f0e('0x38')]['findAll']({'attributes':['id',_0x4f0e('0x2f')],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':'Lists','where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})[_0x4f0e('0x19')](function(_0x294be4){if(_0x294be4){var _0x5e99ae=[];for(var _0x29a5f7=0x0,_0x52376c;_0x29a5f7<_0x294be4[_0x4f0e('0x32')];_0x29a5f7+=0x1){_0x52376c=_0x294be4[_0x29a5f7]['get']({'plain':!![]});switch(_0x52376c[_0x4f0e('0x2f')]){case _0x4f0e('0x33'):_0x325586(_0x52376c)['catch'](_0x198811());break;case _0x4f0e('0x34'):_0x43f26e(_0x52376c)[_0x4f0e('0x21')](_0x198811());break;default:_0x2104ff['CmHopper']['create']({'phone':_0x2db416[_0x4f0e('0xa')],'ContactId':_0x2db416['id'],'ListId':_0x2db416['ListId'],'scheduledat':_0x2db416['scheduledat']?_0x2db416[_0x4f0e('0x1d')]:moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')),'priority':_0x2db416[_0x4f0e('0x1c')]?_0x2db416['priority']:0x2,'callback':_0x2db416[_0x4f0e('0x1f')]?!![]:![],'callbackuniqueid':_0x2db416[_0x4f0e('0x1f')]?_0x2db416[_0x4f0e('0x1f')]:undefined,'callbackat':_0x2db416[_0x4f0e('0x1f')]?moment()[_0x4f0e('0x20')](_0x4f0e('0x1e')):undefined,'CampaignId':_0x52376c['id']})[_0x4f0e('0x21')](_0x198811());}}}});})[_0x4f0e('0x19')](function(){return _0x2104ff[_0x4f0e('0x38')][_0x4f0e('0x2d')]({'attributes':['id'],'include':[{'model':_0x2104ff[_0x4f0e('0x30')],'as':_0x4f0e('0x35'),'where':{'id':_0x2db416[_0x4f0e('0x1b')]}}]})[_0x4f0e('0x19')](function(_0x4b5179){if(_0x4b5179){var _0x295c02=[];for(var _0x53f6fc=0x0,_0x390adb;_0x53f6fc<_0x4b5179[_0x4f0e('0x32')];_0x53f6fc+=0x1){_0x390adb=_0x4b5179[_0x53f6fc]['get']({'plain':!![]});_0x2104ff['CmHopperBlack'][_0x4f0e('0x28')]({'phone':_0x2db416['phone'],'ContactId':_0x2db416['id'],'ListId':_0x2db416[_0x4f0e('0x1b')],'CampaignId':_0x390adb['id']})[_0x4f0e('0x21')](function(_0x231cab){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x231cab[_0x4f0e('0x37')]);});}}});})['then'](function(){_0x162267();})['catch'](function(_0x129876){logger['error'](_0x4f0e('0x36'),_0x4f0e('0x29'),_0x129876[_0x4f0e('0x37')]);_0x162267(_0x129876);});}else{_0x162267(new Error(_0x4f0e('0x39')));}},'afterDestroy':function(_0x5a9e7c,_0x485b6a,_0x5d8602){var _0x3ffb1f=_0x2c5999[_0x4f0e('0x13')];var _0x29e32a=_0x5a9e7c[_0x4f0e('0x14')]({'plain':!![]});return _0x3ffb1f[_0x4f0e('0x18')][_0x4f0e('0x2d')]({'raw':!![],'where':{'ListId':_0x29e32a[_0x4f0e('0x1b')],'ContactId':_0x29e32a['id']}})[_0x4f0e('0x19')](function(_0x73ff68){if(!_[_0x4f0e('0x3a')](_0x73ff68)){var _0x200efe=[];for(var _0x5dbb41=0x0;_0x5dbb41<_0x73ff68[_0x4f0e('0x32')];_0x5dbb41+=0x1){var _0x4c28a7=_0x3ffb1f[_0x4f0e('0x18')]['destroy']({'where':{'ListId':_0x73ff68[_0x5dbb41][_0x4f0e('0x1b')],'ContactId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3b')],'VoiceQueueId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3c')],'CampaignId':_0x73ff68[_0x5dbb41][_0x4f0e('0x3d')]}});_0x200efe[_0x4f0e('0x3e')](_0x4c28a7);}return BPromise[_0x4f0e('0x3f')](_0x200efe);}})[_0x4f0e('0x19')](function(_0xe8c991){logger['info'](_0x4f0e('0x40'),util[_0x4f0e('0x17')](_0xe8c991,{'showHidden':![],'depth':null}));_0x5d8602();})[_0x4f0e('0x21')](function(_0x2d16f1){logger[_0x4f0e('0x15')](_0x4f0e('0x41'),util[_0x4f0e('0x17')](_0x2d16f1,{'showHidden':![],'depth':null}));_0x5d8602(_0x2d16f1);});}}});};
\ No newline at end of file
+var _0x670c=['create','ListId','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','priority','catch','cmContact','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','Lists','length','onlyIfOpen','VoiceQueue','CmHopperBlack','cmContact,\x20%s,\x20%s','message','CmList','BlackLists','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','all','info','[CmContact][afterDestroy][Error]','lodash','util','moment','bluebird','request-promise','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','afterCreate','inspect','CmHopper','findOne','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x670c,0x12c));var _0xc670=function(_0x2ddd9d,_0x2a28ad){_0x2ddd9d=_0x2ddd9d-0x0;var _0xd5a552=_0x670c[_0x2ddd9d];return _0xd5a552;};'use strict';var _=require(_0xc670('0x0'));var util=require(_0xc670('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc670('0x2'));var BPromise=require(_0xc670('0x3'));var rp=require(_0xc670('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc670('0x5'));var attributes=require(_0xc670('0x6'));module[_0xc670('0x7')]=function(_0x50d5a6,_0x31cf0e){return _0x50d5a6[_0xc670('0x8')](_0xc670('0x9'),attributes,{'tableName':_0xc670('0xa'),'paranoid':!![],'indexes':[{'name':_0xc670('0xb'),'fields':[_0xc670('0xb')]},{'name':_0xc670('0xc'),'fields':['firstName',_0xc670('0xd'),_0xc670('0xb'),_0xc670('0xe'),_0xc670('0xf'),_0xc670('0x10')],'type':_0xc670('0x11')}],'timestamps':!![],'charset':_0xc670('0x12'),'collate':_0xc670('0x13'),'hooks':{'afterCreate':function(_0x46e55a,_0x1126f4,_0x4d1379){var _0xbc8ca2=_0x50d5a6[_0xc670('0x14')];var _0xf7680f=_0x46e55a[_0xc670('0x15')]({'plain':!![]});function _0x2c3235(){return function(_0x34f7bb){logger[_0xc670('0x16')]('cmContact',_0xc670('0x17'),util[_0xc670('0x18')](_0x34f7bb,{'showHidden':![],'depth':null}));};}var _0x446347=function(_0x381553){return new BPromise(function(_0x3f10a2,_0x244f4b){_0xbc8ca2[_0xc670('0x19')][_0xc670('0x1a')]({'where':{'phone':_0xf7680f[_0xc670('0xb')],'VoiceQueueId':_0x381553['id']}})[_0xc670('0x1b')](function(_0x440f45){if(!_[_0xc670('0x1c')](_0x440f45)){throw new Error('cmContact,\x20afterCreate\x20'+_0xf7680f[_0xc670('0xb')]+_0xc670('0x1d')+_0x381553['id']);}return _0xbc8ca2[_0xc670('0x19')][_0xc670('0x1e')]({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'priority':_0xf7680f['priority']?_0xf7680f['priority']:0x2,'scheduledat':_0xf7680f[_0xc670('0x20')]?_0xf7680f[_0xc670('0x20')]:moment()[_0xc670('0x21')](_0xc670('0x22')),'callback':_0xf7680f[_0xc670('0x23')]?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f['callbackUniqueid']:undefined,'callbackat':_0xf7680f[_0xc670('0x23')]?moment()[_0xc670('0x21')](_0xc670('0x22')):undefined,'VoiceQueueId':_0x381553['id']});})['catch'](function(_0x308a72){_0x244f4b(_0x308a72);});});};var _0x123d28=function(_0x4f54be){return new BPromise(function(_0x42b5f5,_0x4e61ca){_0xbc8ca2[_0xc670('0x19')][_0xc670('0x1a')]({'where':{'phone':_0xf7680f[_0xc670('0xb')],'VoiceQueueId':_0x4f54be['id']}})['then'](function(_0x5b0528){if(!_[_0xc670('0x1c')](_0x5b0528)){throw new Error('cmContact,\x20afterCreate\x20'+_0xf7680f['phone']+_0xc670('0x24')+_0x4f54be['id']);}return _0xbc8ca2[_0xc670('0x25')]['findOne']({'where':{'calleridnum':_0xf7680f[_0xc670('0xb')],'VoiceQueueId':_0x4f54be['id']}});})[_0xc670('0x1b')](function(_0x3ced04){if(!_['isNil'](_0x3ced04)){throw new Error(_0xc670('0x26')+_0xf7680f[_0xc670('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x4f54be['id']);}return _0xbc8ca2['CmHopper'][_0xc670('0x1e')]({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f['ListId'],'priority':_0xf7680f[_0xc670('0x27')]?_0xf7680f['priority']:0x2,'scheduledat':_0xf7680f[_0xc670('0x20')]?_0xf7680f[_0xc670('0x20')]:moment()[_0xc670('0x21')](_0xc670('0x22')),'callback':_0xf7680f['callbackUniqueid']?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f['callbackUniqueid']:undefined,'callbackat':_0xf7680f[_0xc670('0x23')]?moment()[_0xc670('0x21')](_0xc670('0x22')):undefined,'VoiceQueueId':_0x4f54be['id']});})[_0xc670('0x28')](function(_0x2983bd){_0x4e61ca(_0x2983bd);});});};function _0x4b9ce4(){return function(_0x21560a){logger[_0xc670('0x16')](_0xc670('0x29'),'afterCreate',util[_0xc670('0x18')](_0x21560a,{'showHidden':![],'depth':null}));};}var _0x49815f=function(_0x12d1fb){return new BPromise(function(_0x1ed571,_0x39f066){_0xbc8ca2['CmHopper'][_0xc670('0x1a')]({'where':{'phone':_0xf7680f[_0xc670('0xb')],'CampaignId':_0x12d1fb['id']}})['then'](function(_0x344cb9){if(!_['isNil'](_0x344cb9)){throw new Error(_0xc670('0x2a')+_0xf7680f[_0xc670('0xb')]+_0xc670('0x2b')+_0x12d1fb['id']);}return _0xbc8ca2['CmHopper']['create']({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'priority':_0xf7680f[_0xc670('0x27')]?_0xf7680f['priority']:0x2,'scheduledat':_0xf7680f['scheduledat']?_0xf7680f[_0xc670('0x20')]:moment()[_0xc670('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xf7680f[_0xc670('0x23')]?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f[_0xc670('0x23')]:undefined,'callbackat':_0xf7680f[_0xc670('0x23')]?moment()[_0xc670('0x21')](_0xc670('0x22')):undefined,'CampaignId':_0x12d1fb['id']});})[_0xc670('0x28')](function(_0x12c1cd){_0x39f066(_0x12c1cd);});});};var _0x4f4ebb=function(_0x297ca6){return new BPromise(function(_0x498736,_0x4a462f){_0xbc8ca2[_0xc670('0x19')][_0xc670('0x1a')]({'where':{'phone':_0xf7680f[_0xc670('0xb')],'CampaignId':_0x297ca6['id']}})[_0xc670('0x1b')](function(_0x281de2){if(!_['isNil'](_0x281de2)){throw new Error(_0xc670('0x2a')+_0xf7680f[_0xc670('0xb')]+_0xc670('0x2c')+_0x297ca6['id']);}return _0xbc8ca2[_0xc670('0x25')][_0xc670('0x1a')]({'where':{'calleridnum':_0xf7680f[_0xc670('0xb')],'CampaignId':_0x297ca6['id']}});})[_0xc670('0x1b')](function(_0x4b080b){if(!_['isNil'](_0x4b080b)){throw new Error(_0xc670('0x26')+_0xf7680f[_0xc670('0xb')]+_0xc670('0x2d')+_0x297ca6['id']);}return _0xbc8ca2[_0xc670('0x19')][_0xc670('0x1e')]({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'priority':_0xf7680f[_0xc670('0x27')]?_0xf7680f[_0xc670('0x27')]:0x2,'scheduledat':_0xf7680f['scheduledat']?_0xf7680f[_0xc670('0x20')]:moment()[_0xc670('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xf7680f[_0xc670('0x23')]?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f[_0xc670('0x23')]:undefined,'callbackat':_0xf7680f['callbackUniqueid']?moment()[_0xc670('0x21')](_0xc670('0x22')):undefined,'CampaignId':_0x297ca6['id']});})[_0xc670('0x28')](function(_0x191f90){_0x4a462f(_0x191f90);});});};if(_0xf7680f[_0xc670('0x1f')]){_0xbc8ca2['VoiceQueue'][_0xc670('0x2e')]({'where':{'type':_0xc670('0x2f')},'attributes':['id',_0xc670('0x30')],'include':[{'model':_0xbc8ca2['CmList'],'as':_0xc670('0x31'),'where':{'id':_0xf7680f['ListId']}}]})['then'](function(_0x4e3e1b){if(_0x4e3e1b){var _0x5020dc=[];for(var _0x592237=0x0,_0x371abd;_0x592237<_0x4e3e1b[_0xc670('0x32')];_0x592237+=0x1){_0x371abd=_0x4e3e1b[_0x592237]['get']({'plain':!![]});switch(_0x371abd[_0xc670('0x30')]){case'always':_0x123d28(_0x371abd)['catch'](_0x2c3235());break;case _0xc670('0x33'):_0x446347(_0x371abd)['catch'](_0x2c3235());break;default:_0xbc8ca2['CmHopper'][_0xc670('0x1e')]({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'scheduledat':_0xf7680f['scheduledat']?_0xf7680f[_0xc670('0x20')]:moment()[_0xc670('0x21')](_0xc670('0x22')),'priority':_0xf7680f['priority']?_0xf7680f['priority']:0x2,'callback':_0xf7680f[_0xc670('0x23')]?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f[_0xc670('0x23')]:undefined,'callbackat':_0xf7680f[_0xc670('0x23')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x371abd['id']})['catch'](_0x2c3235());}}}})['then'](function(){return _0xbc8ca2[_0xc670('0x34')][_0xc670('0x2e')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0xbc8ca2['CmList'],'as':'BlackLists','where':{'id':_0xf7680f['ListId']}}]})[_0xc670('0x1b')](function(_0x48d634){if(_0x48d634){var _0x41a700=[];for(var _0x21a209=0x0,_0x59f812;_0x21a209<_0x48d634[_0xc670('0x32')];_0x21a209+=0x1){_0x59f812=_0x48d634[_0x21a209][_0xc670('0x15')]({'plain':!![]});_0xbc8ca2[_0xc670('0x35')][_0xc670('0x1e')]({'phone':_0xf7680f['phone'],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'VoiceQueueId':_0x59f812['id']})['catch'](function(_0x151c4a){logger[_0xc670('0x16')](_0xc670('0x36'),_0xc670('0x17'),_0x151c4a[_0xc670('0x37')]);});}}});})['then'](function(){return _0xbc8ca2['Campaign'][_0xc670('0x2e')]({'attributes':['id',_0xc670('0x30')],'include':[{'model':_0xbc8ca2[_0xc670('0x38')],'as':_0xc670('0x31'),'where':{'id':_0xf7680f[_0xc670('0x1f')]}}]})['then'](function(_0x4cde0b){if(_0x4cde0b){var _0x1a6358=[];for(var _0x2df98a=0x0,_0x430f8a;_0x2df98a<_0x4cde0b[_0xc670('0x32')];_0x2df98a+=0x1){_0x430f8a=_0x4cde0b[_0x2df98a][_0xc670('0x15')]({'plain':!![]});switch(_0x430f8a['dialCheckDuplicateType']){case'always':_0x4f4ebb(_0x430f8a)['catch'](_0x4b9ce4());break;case _0xc670('0x33'):_0x49815f(_0x430f8a)['catch'](_0x4b9ce4());break;default:_0xbc8ca2[_0xc670('0x19')]['create']({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'scheduledat':_0xf7680f[_0xc670('0x20')]?_0xf7680f[_0xc670('0x20')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0xf7680f['priority']?_0xf7680f[_0xc670('0x27')]:0x2,'callback':_0xf7680f[_0xc670('0x23')]?!![]:![],'callbackuniqueid':_0xf7680f[_0xc670('0x23')]?_0xf7680f[_0xc670('0x23')]:undefined,'callbackat':_0xf7680f[_0xc670('0x23')]?moment()[_0xc670('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x430f8a['id']})[_0xc670('0x28')](_0x4b9ce4());}}}});})[_0xc670('0x1b')](function(){return _0xbc8ca2['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0xbc8ca2[_0xc670('0x38')],'as':_0xc670('0x39'),'where':{'id':_0xf7680f[_0xc670('0x1f')]}}]})[_0xc670('0x1b')](function(_0x53099e){if(_0x53099e){var _0x11fecf=[];for(var _0x3f2666=0x0,_0x1226ca;_0x3f2666<_0x53099e[_0xc670('0x32')];_0x3f2666+=0x1){_0x1226ca=_0x53099e[_0x3f2666][_0xc670('0x15')]({'plain':!![]});_0xbc8ca2['CmHopperBlack'][_0xc670('0x1e')]({'phone':_0xf7680f[_0xc670('0xb')],'ContactId':_0xf7680f['id'],'ListId':_0xf7680f[_0xc670('0x1f')],'CampaignId':_0x1226ca['id']})[_0xc670('0x28')](function(_0x5a2c05){logger['error'](_0xc670('0x36'),'afterCreate',_0x5a2c05['message']);});}}});})[_0xc670('0x1b')](function(){_0x4d1379();})[_0xc670('0x28')](function(_0x29c875){logger['error'](_0xc670('0x36'),_0xc670('0x17'),_0x29c875[_0xc670('0x37')]);_0x4d1379(_0x29c875);});}else{_0x4d1379(new Error(_0xc670('0x3a')));}},'afterDestroy':function(_0x1b8a9f,_0x276e90,_0x2b32ab){var _0x34541c=_0x50d5a6[_0xc670('0x14')];var _0x2052ff=_0x1b8a9f['get']({'plain':!![]});return _0x34541c[_0xc670('0x19')][_0xc670('0x2e')]({'raw':!![],'where':{'ListId':_0x2052ff[_0xc670('0x1f')],'ContactId':_0x2052ff['id']}})[_0xc670('0x1b')](function(_0x39c38a){if(!_[_0xc670('0x3b')](_0x39c38a)){var _0x3752d1=[];for(var _0x7b54e0=0x0;_0x7b54e0<_0x39c38a[_0xc670('0x32')];_0x7b54e0+=0x1){var _0xfd4b53=_0x34541c[_0xc670('0x19')][_0xc670('0x3c')]({'where':{'ListId':_0x39c38a[_0x7b54e0]['ListId'],'ContactId':_0x39c38a[_0x7b54e0][_0xc670('0x3d')],'VoiceQueueId':_0x39c38a[_0x7b54e0][_0xc670('0x3e')],'CampaignId':_0x39c38a[_0x7b54e0]['CampaignId']}});_0x3752d1['push'](_0xfd4b53);}return BPromise[_0xc670('0x3f')](_0x3752d1);}})[_0xc670('0x1b')](function(_0x1b4fae){logger[_0xc670('0x40')]('[CmContact][afterDestroy][Succesfull]',util['inspect'](_0x1b4fae,{'showHidden':![],'depth':null}));_0x2b32ab();})[_0xc670('0x28')](function(_0x8ca6d9){logger[_0xc670('0x16')](_0xc670('0x41'),util[_0xc670('0x18')](_0x8ca6d9,{'showHidden':![],'depth':null}));_0x2b32ab(_0x8ca6d9);});}}});};
\ No newline at end of file
index 9eeeba0..587c523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9450=['register','request','then','info','CmContact,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','GetCmContact','CmContact','findAll','options','where','include','map','model','attributes','catch','CreateCmContact','body','raw','keys','startsWith','cf_','update','table','id\x20=\x20?','toString','sequelize','lodash','util','moment','bluebird','ioredis','squel','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','./cmContact.socket'];(function(_0x44695d,_0x87bb4c){var _0x1562a3=function(_0x3b99e0){while(--_0x3b99e0){_0x44695d['push'](_0x44695d['shift']());}};_0x1562a3(++_0x87bb4c);}(_0x9450,0xdd));var _0x0945=function(_0x554496,_0x27e942){_0x554496=_0x554496-0x0;var _0x173f5a=_0x9450[_0x554496];return _0x173f5a;};'use strict';var _=require(_0x0945('0x0'));var util=require(_0x0945('0x1'));var moment=require(_0x0945('0x2'));var BPromise=require(_0x0945('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0945('0x4'));var squel=require(_0x0945('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0945('0x6'));var logger=require(_0x0945('0x7'))('rpc');var config=require(_0x0945('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0945('0x9')]['http']({'port':0x232a});config[_0x0945('0xa')]=_[_0x0945('0xb')](config[_0x0945('0xa')],{'host':_0x0945('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0945('0xa')]));require(_0x0945('0xd'))[_0x0945('0xe')](socket);function respondWithRpcPromise(_0x2cd031,_0x2aeadd,_0x301d52){return new BPromise(function(_0x1e7ff4,_0x1de769){return client[_0x0945('0xf')](_0x2cd031,_0x301d52)[_0x0945('0x10')](function(_0x2e2d55){logger[_0x0945('0x11')](_0x0945('0x12'),_0x2aeadd,'request\x20sent');logger[_0x0945('0x13')]('CmContact,\x20%s,\x20%s,\x20%s',_0x2aeadd,_0x0945('0x14'),JSON[_0x0945('0x15')](_0x2e2d55));if(_0x2e2d55['error']){if(_0x2e2d55['error'][_0x0945('0x16')]===0x1f4){logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2e2d55['error'][_0x0945('0x18')]);return _0x1de769(_0x2e2d55[_0x0945('0x17')]['message']);}logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2e2d55['error'][_0x0945('0x18')]);return _0x1e7ff4(_0x2e2d55[_0x0945('0x17')][_0x0945('0x18')]);}else{logger[_0x0945('0x11')](_0x0945('0x12'),_0x2aeadd,_0x0945('0x14'));_0x1e7ff4(_0x2e2d55[_0x0945('0x19')][_0x0945('0x18')]);}})['catch'](function(_0x2bb263){logger[_0x0945('0x17')](_0x0945('0x12'),_0x2aeadd,_0x2bb263);_0x1de769(_0x2bb263);});});}exports[_0x0945('0x1a')]=function(_0x441883){var _0x41a002=this;return new Promise(function(_0x7a1b03,_0x1d8ad3){return db[_0x0945('0x1b')][_0x0945('0x1c')]({'raw':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')][_0x0945('0x1e')]||null:null,'attributes':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['attributes']||null:null,'limit':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')]['limit']||null:null,'include':_0x441883[_0x0945('0x1d')]?_0x441883[_0x0945('0x1d')][_0x0945('0x1f')]?_[_0x0945('0x20')](_0x441883['options'][_0x0945('0x1f')],function(_0x215567){return{'model':db[_0x215567[_0x0945('0x21')]],'as':_0x215567['as'],'attributes':_0x215567['attributes'],'include':_0x215567[_0x0945('0x1f')]?_[_0x0945('0x20')](_0x215567['include'],function(_0x1d2599){return{'model':db[_0x1d2599[_0x0945('0x21')]],'as':_0x1d2599['as'],'attributes':_0x1d2599[_0x0945('0x22')],'include':_0x1d2599[_0x0945('0x1f')]?_[_0x0945('0x20')](_0x1d2599[_0x0945('0x1f')],function(_0x541965){return{'model':db[_0x541965[_0x0945('0x21')]],'as':_0x541965['as'],'attributes':_0x541965['attributes']};}):[]};}):[]};}):[]:[]})[_0x0945('0x10')](function(_0x520674){logger[_0x0945('0x11')]('GetCmContact',_0x441883);logger[_0x0945('0x13')](_0x0945('0x1a'),_0x441883,JSON[_0x0945('0x15')](_0x520674));_0x7a1b03(_0x520674);})[_0x0945('0x23')](function(_0x2a6d13){logger[_0x0945('0x17')]('GetCmContact',_0x2a6d13[_0x0945('0x18')],_0x441883);_0x1d8ad3(_0x41a002['error'](0x1f4,_0x2a6d13[_0x0945('0x18')]));});});};exports[_0x0945('0x24')]=function(_0x1f9fe1){var _0x3f1b48=this;return new Promise(function(_0x474766,_0x3a6396){return db[_0x0945('0x1b')]['create'](_0x1f9fe1[_0x0945('0x25')],{'raw':_0x1f9fe1[_0x0945('0x1d')]?_0x1f9fe1[_0x0945('0x1d')][_0x0945('0x26')]===undefined?!![]:![]:!![]})['then'](function(_0x44db70){var _0x3f0656;for(var _0x2c6869=0x0;_0x2c6869<Object[_0x0945('0x27')](_0x1f9fe1['body'])['length'];_0x2c6869++){var _0x5e2ba1=Object[_0x0945('0x27')](_0x1f9fe1[_0x0945('0x25')])[_0x2c6869];if(_0x5e2ba1[_0x0945('0x28')](_0x0945('0x29'))){_0x3f0656=squel[_0x0945('0x2a')]()[_0x0945('0x2b')]('cm_contacts')['set'](_0x5e2ba1,_0x1f9fe1[_0x0945('0x25')][_0x5e2ba1])[_0x0945('0x1e')](_0x0945('0x2c'),_0x44db70['id'])[_0x0945('0x2d')]();break;}}if(!_0x3f0656)return _0x44db70;return db[_0x0945('0x2e')]['query'](_0x3f0656)[_0x0945('0x10')](function(){return _0x44db70;});})[_0x0945('0x10')](function(_0x2ec24a){logger[_0x0945('0x11')]('CreateCmContact',_0x1f9fe1);logger[_0x0945('0x13')](_0x0945('0x24'),_0x1f9fe1,JSON['stringify'](_0x2ec24a));_0x474766(_0x2ec24a);})[_0x0945('0x23')](function(_0xbe3e79){logger[_0x0945('0x17')](_0x0945('0x24'),_0xbe3e79[_0x0945('0x18')],_0x1f9fe1);_0x3a6396(_0x3f1b48['error'](0x1f4,_0xbe3e79[_0x0945('0x18')]));});});};
\ No newline at end of file
+var _0x4995=['localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','GetCmContact','CmContact','findAll','options','raw','where','attributes','limit','include','model','map','CreateCmContact','create','body','keys','length','startsWith','cf_','update','cm_contacts','id\x20=\x20?','sequelize','lodash','util','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis'];(function(_0x1b0cc8,_0x6e3392){var _0x441d1a=function(_0x248cef){while(--_0x248cef){_0x1b0cc8['push'](_0x1b0cc8['shift']());}};_0x441d1a(++_0x6e3392);}(_0x4995,0x192));var _0x5499=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4995[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x5499('0x0'));var util=require(_0x5499('0x1'));var moment=require(_0x5499('0x2'));var BPromise=require(_0x5499('0x3'));var rs=require(_0x5499('0x4'));var fs=require('fs');var Redis=require(_0x5499('0x5'));var squel=require(_0x5499('0x6'));var db=require(_0x5499('0x7'))['db'];var utils=require(_0x5499('0x8'));var logger=require(_0x5499('0x9'))(_0x5499('0xa'));var config=require(_0x5499('0xb'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5499('0xc')]({'port':0x232a});config[_0x5499('0xd')]=_['defaults'](config['redis'],{'host':_0x5499('0xe'),'port':0x18eb});var socket=require(_0x5499('0xf'))(new Redis(config['redis']));require(_0x5499('0x10'))[_0x5499('0x11')](socket);function respondWithRpcPromise(_0x3f3d06,_0x4f0b56,_0x5c9593){return new BPromise(function(_0x174181,_0x4d6237){return client[_0x5499('0x12')](_0x3f3d06,_0x5c9593)[_0x5499('0x13')](function(_0x30193c){logger[_0x5499('0x14')](_0x5499('0x15'),_0x4f0b56,_0x5499('0x16'));logger[_0x5499('0x17')](_0x5499('0x18'),_0x4f0b56,_0x5499('0x16'),JSON[_0x5499('0x19')](_0x30193c));if(_0x30193c['error']){if(_0x30193c['error'][_0x5499('0x1a')]===0x1f4){logger['error'](_0x5499('0x15'),_0x4f0b56,_0x30193c['error']['message']);return _0x4d6237(_0x30193c[_0x5499('0x1b')]['message']);}logger[_0x5499('0x1b')](_0x5499('0x15'),_0x4f0b56,_0x30193c['error'][_0x5499('0x1c')]);return _0x174181(_0x30193c[_0x5499('0x1b')][_0x5499('0x1c')]);}else{logger['info'](_0x5499('0x15'),_0x4f0b56,'request\x20sent');_0x174181(_0x30193c['result'][_0x5499('0x1c')]);}})[_0x5499('0x1d')](function(_0x1c9725){logger[_0x5499('0x1b')](_0x5499('0x15'),_0x4f0b56,_0x1c9725);_0x4d6237(_0x1c9725);});});}exports[_0x5499('0x1e')]=function(_0x5b6bc4){var _0x2a7c3c=this;return new Promise(function(_0x2b8093,_0x497c6f){return db[_0x5499('0x1f')][_0x5499('0x20')]({'raw':_0x5b6bc4[_0x5499('0x21')]?_0x5b6bc4['options'][_0x5499('0x22')]===undefined?!![]:![]:!![],'where':_0x5b6bc4['options']?_0x5b6bc4[_0x5499('0x21')][_0x5499('0x23')]||null:null,'attributes':_0x5b6bc4['options']?_0x5b6bc4[_0x5499('0x21')][_0x5499('0x24')]||null:null,'limit':_0x5b6bc4[_0x5499('0x21')]?_0x5b6bc4['options'][_0x5499('0x25')]||null:null,'include':_0x5b6bc4[_0x5499('0x21')]?_0x5b6bc4[_0x5499('0x21')]['include']?_['map'](_0x5b6bc4[_0x5499('0x21')][_0x5499('0x26')],function(_0x4add02){return{'model':db[_0x4add02[_0x5499('0x27')]],'as':_0x4add02['as'],'attributes':_0x4add02[_0x5499('0x24')],'include':_0x4add02[_0x5499('0x26')]?_['map'](_0x4add02[_0x5499('0x26')],function(_0x5be867){return{'model':db[_0x5be867[_0x5499('0x27')]],'as':_0x5be867['as'],'attributes':_0x5be867[_0x5499('0x24')],'include':_0x5be867[_0x5499('0x26')]?_[_0x5499('0x28')](_0x5be867[_0x5499('0x26')],function(_0x4328cb){return{'model':db[_0x4328cb[_0x5499('0x27')]],'as':_0x4328cb['as'],'attributes':_0x4328cb['attributes']};}):[]};}):[]};}):[]:[]})[_0x5499('0x13')](function(_0x32e320){logger[_0x5499('0x14')]('GetCmContact',_0x5b6bc4);logger['debug'](_0x5499('0x1e'),_0x5b6bc4,JSON['stringify'](_0x32e320));_0x2b8093(_0x32e320);})[_0x5499('0x1d')](function(_0x3c2ecd){logger[_0x5499('0x1b')](_0x5499('0x1e'),_0x3c2ecd[_0x5499('0x1c')],_0x5b6bc4);_0x497c6f(_0x2a7c3c[_0x5499('0x1b')](0x1f4,_0x3c2ecd[_0x5499('0x1c')]));});});};exports[_0x5499('0x29')]=function(_0x53b2a0){var _0x4868a1=this;return new Promise(function(_0x5884c3,_0x4e001c){return db[_0x5499('0x1f')][_0x5499('0x2a')](_0x53b2a0[_0x5499('0x2b')],{'raw':_0x53b2a0['options']?_0x53b2a0[_0x5499('0x21')][_0x5499('0x22')]===undefined?!![]:![]:!![]})[_0x5499('0x13')](function(_0x4abec9){var _0x4943be;for(var _0x3020a6=0x0;_0x3020a6<Object[_0x5499('0x2c')](_0x53b2a0['body'])[_0x5499('0x2d')];_0x3020a6++){var _0x8dcaca=Object[_0x5499('0x2c')](_0x53b2a0[_0x5499('0x2b')])[_0x3020a6];if(_0x8dcaca[_0x5499('0x2e')](_0x5499('0x2f'))){_0x4943be=squel[_0x5499('0x30')]()['table'](_0x5499('0x31'))['set'](_0x8dcaca,_0x53b2a0[_0x5499('0x2b')][_0x8dcaca])[_0x5499('0x23')](_0x5499('0x32'),_0x4abec9['id'])['toString']();break;}}if(!_0x4943be)return _0x4abec9;return db[_0x5499('0x33')]['query'](_0x4943be)[_0x5499('0x13')](function(){return _0x4abec9;});})['then'](function(_0xccc0fa){logger[_0x5499('0x14')](_0x5499('0x29'),_0x53b2a0);logger[_0x5499('0x17')]('CreateCmContact',_0x53b2a0,JSON[_0x5499('0x19')](_0xccc0fa));_0x5884c3(_0xccc0fa);})[_0x5499('0x1d')](function(_0x401e9c){logger[_0x5499('0x1b')](_0x5499('0x29'),_0x401e9c['message'],_0x53b2a0);_0x4e001c(_0x4868a1[_0x5499('0x1b')](0x1f4,_0x401e9c['message']));});});};
\ No newline at end of file
index fb72dc5..5424a59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 3041b61..6d37063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b06=['update','delete','destroy','exports','multer','util','express','Router','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','/describe','describe','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','join','root','server/files/tmp','originalname','replace','%s-%s%s','basename','extname','now','single','file','uploadCsv','format','upload','/upload/:id','import','put','/:id'];(function(_0x53e3de,_0x13da7b){var _0x7b905b=function(_0x29b56a){while(--_0x29b56a){_0x53e3de['push'](_0x53e3de['shift']());}};_0x7b905b(++_0x13da7b);}(_0x0b06,0x1b4));var _0x60b0=function(_0x31920c,_0x2f48b6){_0x31920c=_0x31920c-0x0;var _0x4d046e=_0x0b06[_0x31920c];return _0x4d046e;};'use strict';var multer=require(_0x60b0('0x0'));var util=require(_0x60b0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x60b0('0x2'));var router=express[_0x60b0('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x60b0('0x4'));var config=require(_0x60b0('0x5'));var controller=require(_0x60b0('0x6'));router[_0x60b0('0x7')]('/',auth[_0x60b0('0x8')](),controller[_0x60b0('0x9')]);router[_0x60b0('0x7')](_0x60b0('0xa'),auth[_0x60b0('0x8')](),controller[_0x60b0('0xb')]);router[_0x60b0('0x7')]('/:id',auth[_0x60b0('0x8')](),controller[_0x60b0('0xc')]);router[_0x60b0('0x7')](_0x60b0('0xd'),auth[_0x60b0('0x8')](),controller[_0x60b0('0xe')]);router['get'](_0x60b0('0xf'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x10')]);router[_0x60b0('0x7')](_0x60b0('0x11'),auth[_0x60b0('0x8')](),controller['getHopperHistories']);router[_0x60b0('0x7')](_0x60b0('0x12'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x13')]);router[_0x60b0('0x7')](_0x60b0('0x14'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x15')]);router['get'](_0x60b0('0x16'),auth['isAuthenticated'](),controller[_0x60b0('0x17')]);router[_0x60b0('0x18')]('/merge',auth[_0x60b0('0x8')](),controller['merge']);router[_0x60b0('0x18')]('/',auth[_0x60b0('0x8')](),controller[_0x60b0('0x19')]);router['post']('/create_many',auth['isAuthenticated'](),controller['bulkCreate']);router[_0x60b0('0x18')](_0x60b0('0xd'),auth[_0x60b0('0x8')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x659917,_0x57ddab,_0x1832e2){_0x1832e2(null,path[_0x60b0('0x1a')](config[_0x60b0('0x1b')],_0x60b0('0x1c')));},'filename':function(_0x28f1a1,_0x1d20b5,_0x5a0c15){_0x1d20b5[_0x60b0('0x1d')]=_0x1d20b5[_0x60b0('0x1d')][_0x60b0('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5a0c15(null,util['format'](_0x60b0('0x1f'),path[_0x60b0('0x20')](_0x1d20b5[_0x60b0('0x1d')],path[_0x60b0('0x21')](_0x1d20b5[_0x60b0('0x1d')])),Date[_0x60b0('0x22')](),path[_0x60b0('0x21')](_0x1d20b5[_0x60b0('0x1d')])));}})});router[_0x60b0('0x18')]('/csv',upload[_0x60b0('0x23')](_0x60b0('0x24')),controller[_0x60b0('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xe1fc28,_0x1cca24,_0x59fd49){_0x59fd49(null,path['join'](config[_0x60b0('0x1b')],'server/files/tmp'));},'filename':function(_0x5c7404,_0x34a582,_0x4e0f5e){_0x34a582['originalname']=_0x34a582[_0x60b0('0x1d')][_0x60b0('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4e0f5e(null,util[_0x60b0('0x26')](_0x60b0('0x1f'),path[_0x60b0('0x20')](_0x34a582['originalname'],path[_0x60b0('0x21')](_0x34a582['originalname'])),Date[_0x60b0('0x22')](),path[_0x60b0('0x21')](_0x34a582[_0x60b0('0x1d')])));}})});router[_0x60b0('0x18')]('/upload',upload[_0x60b0('0x23')]('file'),controller[_0x60b0('0x27')]);router[_0x60b0('0x18')](_0x60b0('0x28'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x29')]);router[_0x60b0('0x2a')](_0x60b0('0x2b'),auth['isAuthenticated'](),controller[_0x60b0('0x2c')]);router[_0x60b0('0x2d')](_0x60b0('0x2b'),auth[_0x60b0('0x8')](),controller[_0x60b0('0x2e')]);module[_0x60b0('0x2f')]=router;
\ No newline at end of file
+var _0x7ab7=['path','express','Router','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','/:id','show','/:id/tags','getTags','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','/create_many','bulkCreate','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','extname','now','/csv','single','uploadCsv','diskStorage','/upload','file','upload','/upload/:id','import','put','delete','destroy','exports','multer','util'];(function(_0x819ce,_0xf25f51){var _0x1edcf0=function(_0x192389){while(--_0x192389){_0x819ce['push'](_0x819ce['shift']());}};_0x1edcf0(++_0xf25f51);}(_0x7ab7,0x136));var _0x77ab=function(_0x291515,_0x4772c7){_0x291515=_0x291515-0x0;var _0x1072d2=_0x7ab7[_0x291515];return _0x1072d2;};'use strict';var multer=require(_0x77ab('0x0'));var util=require(_0x77ab('0x1'));var path=require(_0x77ab('0x2'));var timeout=require('connect-timeout');var express=require(_0x77ab('0x3'));var router=express[_0x77ab('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x77ab('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x77ab('0x6'));var controller=require('./cmContact.controller');router[_0x77ab('0x7')]('/',auth['isAuthenticated'](),controller[_0x77ab('0x8')]);router[_0x77ab('0x7')](_0x77ab('0x9'),auth[_0x77ab('0xa')](),controller['describe']);router['get'](_0x77ab('0xb'),auth[_0x77ab('0xa')](),controller[_0x77ab('0xc')]);router[_0x77ab('0x7')](_0x77ab('0xd'),auth[_0x77ab('0xa')](),controller[_0x77ab('0xe')]);router[_0x77ab('0x7')]('/:id/hoppers',auth[_0x77ab('0xa')](),controller[_0x77ab('0xf')]);router['get'](_0x77ab('0x10'),auth['isAuthenticated'](),controller[_0x77ab('0x11')]);router[_0x77ab('0x7')](_0x77ab('0x12'),auth[_0x77ab('0xa')](),controller[_0x77ab('0x13')]);router[_0x77ab('0x7')]('/:id/jscripty_sessions',auth[_0x77ab('0xa')](),controller[_0x77ab('0x14')]);router[_0x77ab('0x7')](_0x77ab('0x15'),auth[_0x77ab('0xa')](),controller[_0x77ab('0x16')]);router[_0x77ab('0x17')](_0x77ab('0x18'),auth['isAuthenticated'](),controller[_0x77ab('0x19')]);router[_0x77ab('0x17')]('/',auth[_0x77ab('0xa')](),controller[_0x77ab('0x1a')]);router[_0x77ab('0x17')](_0x77ab('0x1b'),auth['isAuthenticated'](),controller[_0x77ab('0x1c')]);router[_0x77ab('0x17')](_0x77ab('0xd'),auth[_0x77ab('0xa')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x17f8b9,_0x41c987,_0x485c44){_0x485c44(null,path[_0x77ab('0x1d')](config[_0x77ab('0x1e')],_0x77ab('0x1f')));},'filename':function(_0xce7667,_0x391ac2,_0x397f96){_0x391ac2[_0x77ab('0x20')]=_0x391ac2[_0x77ab('0x20')][_0x77ab('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x397f96(null,util[_0x77ab('0x22')](_0x77ab('0x23'),path[_0x77ab('0x24')](_0x391ac2[_0x77ab('0x20')],path[_0x77ab('0x25')](_0x391ac2['originalname'])),Date[_0x77ab('0x26')](),path[_0x77ab('0x25')](_0x391ac2[_0x77ab('0x20')])));}})});router[_0x77ab('0x17')](_0x77ab('0x27'),upload[_0x77ab('0x28')]('file'),controller[_0x77ab('0x29')]);var upload=multer({'storage':multer[_0x77ab('0x2a')]({'destination':function(_0x7d6fe6,_0x4a5761,_0x4070e0){_0x4070e0(null,path[_0x77ab('0x1d')](config[_0x77ab('0x1e')],_0x77ab('0x1f')));},'filename':function(_0x9164be,_0x444714,_0x52f067){_0x444714[_0x77ab('0x20')]=_0x444714[_0x77ab('0x20')][_0x77ab('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x52f067(null,util[_0x77ab('0x22')]('%s-%s%s',path[_0x77ab('0x24')](_0x444714[_0x77ab('0x20')],path[_0x77ab('0x25')](_0x444714[_0x77ab('0x20')])),Date[_0x77ab('0x26')](),path[_0x77ab('0x25')](_0x444714[_0x77ab('0x20')])));}})});router[_0x77ab('0x17')](_0x77ab('0x2b'),upload[_0x77ab('0x28')](_0x77ab('0x2c')),controller[_0x77ab('0x2d')]);router['post'](_0x77ab('0x2e'),auth[_0x77ab('0xa')](),controller[_0x77ab('0x2f')]);router[_0x77ab('0x30')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x77ab('0x31')](_0x77ab('0xb'),auth[_0x77ab('0xa')](),controller[_0x77ab('0x32')]);module[_0x77ab('0x33')]=router;
\ No newline at end of file
index 5b88b6e..dff19af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca51=['BOOLEAN','ENUM','voice','sequelize','lodash','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','type','parse','values','isArray','stringify'];(function(_0x50181a,_0x2be9c1){var _0x169d9c=function(_0x184dc8){while(--_0x184dc8){_0x50181a['push'](_0x50181a['shift']());}};_0x169d9c(++_0x2be9c1);}(_0xca51,0x1b3));var _0x1ca5=function(_0x17f67d,_0x266613){_0x17f67d=_0x17f67d-0x0;var _0x3e838c=_0xca51[_0x17f67d];return _0x3e838c;};'use strict';var Sequelize=require(_0x1ca5('0x0'));var _=require(_0x1ca5('0x1'));module['exports']={'name':{'type':Sequelize[_0x1ca5('0x2')],'get':function(_0x19af33){return this[_0x1ca5('0x3')](_0x1ca5('0x4'));}},'alias':{'type':Sequelize[_0x1ca5('0x5')],'allowNull':![],'set':function(_0x1d5e82){this[_0x1ca5('0x6')]('alias',_0x1d5e82?_0x1d5e82:this['getDataValue']('name'));}},'type':{'type':Sequelize[_0x1ca5('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x1ca5('0x7')]('long'),'get':function(){if(this['getDataValue'](_0x1ca5('0x8'))==='select'){return JSON[_0x1ca5('0x9')](this[_0x1ca5('0x3')]('values'));}else{return this[_0x1ca5('0x3')](_0x1ca5('0xa'));}},'set':function(_0x3c81e5){if(Array[_0x1ca5('0xb')](_0x3c81e5)){this['setDataValue'](_0x1ca5('0xa'),JSON[_0x1ca5('0xc')](_0x3c81e5));}else{this[_0x1ca5('0x6')](_0x1ca5('0xa'),_0x3c81e5);}}},'required':{'type':Sequelize[_0x1ca5('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x1ca5('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x1ca5('0xe')](_0x1ca5('0xf'))}};
\ No newline at end of file
+var _0xc9a8=['ENUM','voice','lodash','exports','VIRTUAL','getDataValue','STRING','alias','TEXT','values','isArray','stringify','setDataValue','BOOLEAN'];(function(_0x336376,_0xe4b28d){var _0x1d2a8e=function(_0x3afe68){while(--_0x3afe68){_0x336376['push'](_0x336376['shift']());}};_0x1d2a8e(++_0xe4b28d);}(_0xc9a8,0x1ec));var _0x8c9a=function(_0x316c42,_0x3391f0){_0x316c42=_0x316c42-0x0;var _0x2b38f7=_0xc9a8[_0x316c42];return _0x2b38f7;};'use strict';var Sequelize=require('sequelize');var _=require(_0x8c9a('0x0'));module[_0x8c9a('0x1')]={'name':{'type':Sequelize[_0x8c9a('0x2')],'get':function(_0x5022dc){return this[_0x8c9a('0x3')]('alias');}},'alias':{'type':Sequelize[_0x8c9a('0x4')],'allowNull':![],'set':function(_0x29899e){this['setDataValue'](_0x8c9a('0x5'),_0x29899e?_0x29899e:this['getDataValue']('name'));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x8c9a('0x6')]('long'),'get':function(){if(this['getDataValue']('type')==='select'){return JSON['parse'](this[_0x8c9a('0x3')](_0x8c9a('0x7')));}else{return this[_0x8c9a('0x3')](_0x8c9a('0x7'));}},'set':function(_0x5e8a82){if(Array[_0x8c9a('0x8')](_0x5e8a82)){this['setDataValue'](_0x8c9a('0x7'),JSON[_0x8c9a('0x9')](_0x5e8a82));}else{this[_0x8c9a('0xa')]('values',_0x5e8a82);}}},'required':{'type':Sequelize[_0x8c9a('0xb')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x8c9a('0xc')](_0x8c9a('0xd'))}};
\ No newline at end of file
index f8c28fb..c2fc5c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd71=['ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','where','filter','merge','VIRTUAL','include','keys','includeAll','find','update','body','params','catch','create','transaction','TEXT','text','number','Sequelize','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xfd71,0x132));var _0x1fd7=function(_0x380168,_0x40546c){_0x380168=_0x380168-0x0;var _0x12e86d=_0xfd71[_0x380168];return _0x12e86d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1fd7('0x0'));var zipdir=require(_0x1fd7('0x1'));var jsonpatch=require(_0x1fd7('0x2'));var rp=require(_0x1fd7('0x3'));var moment=require(_0x1fd7('0x4'));var BPromise=require(_0x1fd7('0x5'));var Mustache=require(_0x1fd7('0x6'));var util=require(_0x1fd7('0x7'));var path=require(_0x1fd7('0x8'));var sox=require(_0x1fd7('0x9'));var csv=require(_0x1fd7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1fd7('0xb'));var _=require(_0x1fd7('0xc'));var squel=require(_0x1fd7('0xd'));var crypto=require(_0x1fd7('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x1fd7('0xf'));var toCsv=require(_0x1fd7('0xa'));var querystring=require(_0x1fd7('0x10'));var Papa=require(_0x1fd7('0x11'));var Redis=require(_0x1fd7('0x12'));var authService=require(_0x1fd7('0x13'));var qs=require(_0x1fd7('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fd7('0x15'));var logger=require(_0x1fd7('0x16'))(_0x1fd7('0x17'));var utils=require(_0x1fd7('0x18'));var config=require(_0x1fd7('0x19'));var licenseUtil=require(_0x1fd7('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e11e5,_0x561bb2){_0x561bb2=_0x561bb2||0xcc;return function(_0x3037bd){if(_0x3037bd){return _0x3e11e5['sendStatus'](_0x561bb2);}return _0x3e11e5[_0x1fd7('0x1b')](_0x561bb2)[_0x1fd7('0x1c')]();};}function respondWithResult(_0x11628d,_0x20de67){_0x20de67=_0x20de67||0xc8;return function(_0x20baf2){if(_0x20baf2){return _0x11628d[_0x1fd7('0x1b')](_0x20de67)[_0x1fd7('0x1d')](_0x20baf2);}};}function respondWithFilteredResult(_0x2a9ce1,_0x240be6){return function(_0x5dc0ae){if(_0x5dc0ae){var _0x1bbf66=typeof _0x240be6[_0x1fd7('0x1e')]===_0x1fd7('0x1f')&&typeof _0x240be6[_0x1fd7('0x20')]===_0x1fd7('0x1f');var _0x4ae0fe=_0x5dc0ae[_0x1fd7('0x21')];var _0x5a0d61=_0x1bbf66?0x0:_0x240be6[_0x1fd7('0x1e')];var _0x4fbfbd=_0x1bbf66?_0x5dc0ae['count']:_0x240be6[_0x1fd7('0x1e')]+_0x240be6[_0x1fd7('0x20')];var _0x1791c6;if(_0x4fbfbd>=_0x4ae0fe){_0x4fbfbd=_0x4ae0fe;_0x1791c6=0xc8;}else{_0x1791c6=0xce;}_0x2a9ce1[_0x1fd7('0x1b')](_0x1791c6);return _0x2a9ce1[_0x1fd7('0x22')]('Content-Range',_0x5a0d61+'-'+_0x4fbfbd+'/'+_0x4ae0fe)['json'](_0x5dc0ae);}return null;};}function patchUpdates(_0x12980d){return function(_0x496406){try{jsonpatch['apply'](_0x496406,_0x12980d,!![]);}catch(_0xd529b5){return BPromise[_0x1fd7('0x23')](_0xd529b5);}return _0x496406[_0x1fd7('0x24')]();};}function saveUpdates(_0xa4f4f7,_0x4209e1){return function(_0x33ec61){if(_0x33ec61){return _0x33ec61['update'](_0xa4f4f7)[_0x1fd7('0x25')](function(_0x33538e){return _0x33538e;});}return null;};}function removeEntity(_0x4660da,_0x47fd75){return function(_0x2cb779){if(_0x2cb779){return _0x2cb779[_0x1fd7('0x26')]()[_0x1fd7('0x25')](function(){_0x4660da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a2902,_0x25b7b1){return function(_0x364ccb){if(!_0x364ccb){_0x5a2902['sendStatus'](0x194);}return _0x364ccb;};}function handleError(_0x44ebe8,_0x57ded8){_0x57ded8=_0x57ded8||0x1f4;return function(_0x426999){logger[_0x1fd7('0x27')](_0x426999[_0x1fd7('0x28')]);if(_0x426999[_0x1fd7('0x29')]){delete _0x426999[_0x1fd7('0x29')];}_0x44ebe8[_0x1fd7('0x1b')](_0x57ded8)[_0x1fd7('0x2a')](_0x426999);};}exports[_0x1fd7('0x2b')]=function(_0x47a11f,_0x5adfe7){var _0x31ad81={},_0x52c91d={},_0x869bde={'count':0x0,'rows':[]};var _0x3735cb=_[_0x1fd7('0x2c')](db[_0x1fd7('0x2d')][_0x1fd7('0x2e')],function(_0x5c4d96){return{'name':_0x5c4d96['fieldName'],'type':_0x5c4d96[_0x1fd7('0x2f')][_0x1fd7('0x30')]};});_0x52c91d[_0x1fd7('0x31')]=_['differenceBy'](_[_0x1fd7('0x2c')](_0x3735cb,_0x1fd7('0x29')),[_0x1fd7('0x29')]);_0x52c91d[_0x1fd7('0x32')]=_['keys'](_0x47a11f[_0x1fd7('0x32')]);_0x52c91d[_0x1fd7('0x33')]=_[_0x1fd7('0x34')](_0x52c91d[_0x1fd7('0x31')],_0x52c91d[_0x1fd7('0x32')]);_0x31ad81[_0x1fd7('0x35')]=_['intersection'](_0x52c91d[_0x1fd7('0x31')],qs['fields'](_0x47a11f['query'][_0x1fd7('0x36')]));_0x31ad81[_0x1fd7('0x35')]=_0x31ad81['attributes'][_0x1fd7('0x37')]?_0x31ad81['attributes']:_0x52c91d[_0x1fd7('0x31')];if(!_0x47a11f['query']['hasOwnProperty']('nolimit')){_0x31ad81['limit']=qs[_0x1fd7('0x20')](_0x47a11f[_0x1fd7('0x32')][_0x1fd7('0x20')]);_0x31ad81['offset']=qs[_0x1fd7('0x1e')](_0x47a11f['query'][_0x1fd7('0x1e')]);}_0x31ad81['order']=qs['sort'](_0x47a11f[_0x1fd7('0x32')]['sort']);_0x31ad81[_0x1fd7('0x38')]=qs[_0x1fd7('0x33')](_['pick'](_0x47a11f[_0x1fd7('0x32')],_0x52c91d['filters']),_0x3735cb);if(_0x47a11f[_0x1fd7('0x32')][_0x1fd7('0x39')]){_0x31ad81[_0x1fd7('0x38')]=_[_0x1fd7('0x3a')](_0x31ad81[_0x1fd7('0x38')],{'$or':_[_0x1fd7('0x2c')](_0x3735cb,function(_0x3fd5a4){if(_0x3fd5a4[_0x1fd7('0x2f')]!==_0x1fd7('0x3b')){var _0x2818c1={};_0x2818c1[_0x3fd5a4['name']]={'$like':'%'+_0x47a11f['query'][_0x1fd7('0x39')]+'%'};return _0x2818c1;}})});}_0x31ad81=_[_0x1fd7('0x3a')]({},_0x31ad81,_0x47a11f['options']);var _0x38b29d={'where':_0x31ad81[_0x1fd7('0x38')]};return db[_0x1fd7('0x2d')][_0x1fd7('0x21')](_0x38b29d)[_0x1fd7('0x25')](function(_0x4dde2b){_0x869bde['count']=_0x4dde2b;if(_0x47a11f[_0x1fd7('0x32')]['includeAll']){_0x31ad81[_0x1fd7('0x3c')]=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0x31ad81);})[_0x1fd7('0x25')](function(_0x5420e4){_0x869bde['rows']=_0x5420e4;return _0x869bde;})[_0x1fd7('0x25')](respondWithFilteredResult(_0x5adfe7,_0x31ad81))['catch'](handleError(_0x5adfe7,null));};exports['show']=function(_0x837cee,_0x1d9fce){var _0x1e06ae={'raw':!![],'where':{'id':_0x837cee['params']['id']}},_0xa6a6d6={};_0xa6a6d6['model']=_[_0x1fd7('0x3d')](db[_0x1fd7('0x2d')]['rawAttributes']);_0xa6a6d6[_0x1fd7('0x32')]=_['keys'](_0x837cee[_0x1fd7('0x32')]);_0xa6a6d6[_0x1fd7('0x33')]=_['intersection'](_0xa6a6d6[_0x1fd7('0x31')],_0xa6a6d6[_0x1fd7('0x32')]);_0x1e06ae[_0x1fd7('0x35')]=_[_0x1fd7('0x34')](_0xa6a6d6[_0x1fd7('0x31')],qs[_0x1fd7('0x36')](_0x837cee[_0x1fd7('0x32')][_0x1fd7('0x36')]));_0x1e06ae[_0x1fd7('0x35')]=_0x1e06ae[_0x1fd7('0x35')][_0x1fd7('0x37')]?_0x1e06ae[_0x1fd7('0x35')]:_0xa6a6d6[_0x1fd7('0x31')];if(_0x837cee[_0x1fd7('0x32')][_0x1fd7('0x3e')]){_0x1e06ae['include']=[{'all':!![]}];}_0x1e06ae=_[_0x1fd7('0x3a')]({},_0x1e06ae,_0x837cee['options']);return db[_0x1fd7('0x2d')][_0x1fd7('0x3f')](_0x1e06ae)['then'](handleEntityNotFound(_0x1d9fce,null))[_0x1fd7('0x25')](respondWithResult(_0x1d9fce,null))['catch'](handleError(_0x1d9fce,null));};exports[_0x1fd7('0x40')]=function(_0x385c6d,_0x4ad6d3){if(_0x385c6d['body']['id']){delete _0x385c6d[_0x1fd7('0x41')]['id'];}return db['CmCustomField'][_0x1fd7('0x3f')]({'where':{'id':_0x385c6d[_0x1fd7('0x42')]['id']}})[_0x1fd7('0x25')](handleEntityNotFound(_0x4ad6d3,null))[_0x1fd7('0x25')](saveUpdates(_0x385c6d[_0x1fd7('0x41')],null))[_0x1fd7('0x25')](respondWithResult(_0x4ad6d3,null))[_0x1fd7('0x43')](handleError(_0x4ad6d3,null));};exports[_0x1fd7('0x26')]=function(_0x57f49b,_0x2bd8f4){return db[_0x1fd7('0x2d')][_0x1fd7('0x3f')]({'where':{'id':_0x57f49b[_0x1fd7('0x42')]['id']}})[_0x1fd7('0x25')](handleEntityNotFound(_0x2bd8f4,null))['then'](removeEntity(_0x2bd8f4,null))['catch'](handleError(_0x2bd8f4,null));};exports[_0x1fd7('0x44')]=function(_0x34552f,_0x2e622d){var _0x5991ff;return db['sequelize'][_0x1fd7('0x45')](function(_0x3b9d3c){return db[_0x1fd7('0x2d')][_0x1fd7('0x44')](_0x34552f[_0x1fd7('0x41')],{'transaction':_0x3b9d3c})[_0x1fd7('0x25')](function(_0x30e1c0){_0x5991ff=_0x30e1c0;var _0x39fc3d={'type':db['Sequelize'][_0x1fd7('0x46')],'transaction':_0x3b9d3c};switch(_0x34552f['body']['type']){case _0x1fd7('0x47'):_0x39fc3d['type']=db['Sequelize'][_0x1fd7('0x46')];break;case _0x1fd7('0x48'):_0x39fc3d[_0x1fd7('0x2f')]=db[_0x1fd7('0x49')]['INTEGER'];break;case _0x1fd7('0x4a'):_0x39fc3d[_0x1fd7('0x2f')]=db[_0x1fd7('0x49')][_0x1fd7('0x4b')];_0x39fc3d[_0x1fd7('0x4c')]=![];break;default:}return db[_0x1fd7('0x4d')][_0x1fd7('0x4e')][_0x1fd7('0x4f')]('cm_contacts',util[_0x1fd7('0x50')]('cf_%d',_0x5991ff['id']),_0x39fc3d);})['then'](function(){return _0x5991ff;});})[_0x1fd7('0x25')](respondWithResult(_0x2e622d,0xc9))[_0x1fd7('0x43')](handleError(_0x2e622d,null));};
\ No newline at end of file
+var _0xf52f=['request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','count','set','Content-Range','then','destroy','error','stack','name','send','index','map','CmCustomField','fieldName','type','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','update','body','params','create','transaction','Sequelize','text','number','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','fast-json-patch'];(function(_0x569283,_0x6bebbf){var _0x848726=function(_0xf91bad){while(--_0xf91bad){_0x569283['push'](_0x569283['shift']());}};_0x848726(++_0x6bebbf);}(_0xf52f,0xa7));var _0xff52=function(_0x48aa9f,_0x26e09d){_0x48aa9f=_0x48aa9f-0x0;var _0x1efb5f=_0xf52f[_0x48aa9f];return _0x1efb5f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xff52('0x0'));var rp=require(_0xff52('0x1'));var moment=require(_0xff52('0x2'));var BPromise=require(_0xff52('0x3'));var Mustache=require(_0xff52('0x4'));var util=require('util');var path=require('path');var sox=require(_0xff52('0x5'));var csv=require(_0xff52('0x6'));var ejs=require(_0xff52('0x7'));var fs=require('fs');var fs_extra=require(_0xff52('0x8'));var _=require(_0xff52('0x9'));var squel=require(_0xff52('0xa'));var crypto=require(_0xff52('0xb'));var jsforce=require(_0xff52('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xff52('0x6'));var querystring=require('querystring');var Papa=require(_0xff52('0xd'));var Redis=require(_0xff52('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xff52('0xf'));var as=require(_0xff52('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff52('0x11'))(_0xff52('0x12'));var utils=require(_0xff52('0x13'));var config=require(_0xff52('0x14'));var licenseUtil=require(_0xff52('0x15'));var db=require(_0xff52('0x16'))['db'];function respondWithStatusCode(_0x44a68c,_0x167309){_0x167309=_0x167309||0xcc;return function(_0xe045d6){if(_0xe045d6){return _0x44a68c[_0xff52('0x17')](_0x167309);}return _0x44a68c[_0xff52('0x18')](_0x167309)[_0xff52('0x19')]();};}function respondWithResult(_0x1bcb13,_0x184cb){_0x184cb=_0x184cb||0xc8;return function(_0x2eb133){if(_0x2eb133){return _0x1bcb13['status'](_0x184cb)[_0xff52('0x1a')](_0x2eb133);}};}function respondWithFilteredResult(_0x28ca1a,_0x163e7e){return function(_0x5c1e20){if(_0x5c1e20){var _0x5062ab=typeof _0x163e7e['offset']==='undefined'&&typeof _0x163e7e[_0xff52('0x1b')]==='undefined';var _0x17f60d=_0x5c1e20['count'];var _0x3896b8=_0x5062ab?0x0:_0x163e7e['offset'];var _0x3d237f=_0x5062ab?_0x5c1e20[_0xff52('0x1c')]:_0x163e7e['offset']+_0x163e7e[_0xff52('0x1b')];var _0x1ae805;if(_0x3d237f>=_0x17f60d){_0x3d237f=_0x17f60d;_0x1ae805=0xc8;}else{_0x1ae805=0xce;}_0x28ca1a[_0xff52('0x18')](_0x1ae805);return _0x28ca1a[_0xff52('0x1d')](_0xff52('0x1e'),_0x3896b8+'-'+_0x3d237f+'/'+_0x17f60d)[_0xff52('0x1a')](_0x5c1e20);}return null;};}function patchUpdates(_0x20cb99){return function(_0x43bb1d){try{jsonpatch['apply'](_0x43bb1d,_0x20cb99,!![]);}catch(_0x8b75ef){return BPromise['reject'](_0x8b75ef);}return _0x43bb1d['save']();};}function saveUpdates(_0xf4fd99,_0x21c450){return function(_0xff4d5e){if(_0xff4d5e){return _0xff4d5e['update'](_0xf4fd99)[_0xff52('0x1f')](function(_0x7ab5ee){return _0x7ab5ee;});}return null;};}function removeEntity(_0x5133d8,_0x148354){return function(_0x344d2a){if(_0x344d2a){return _0x344d2a[_0xff52('0x20')]()[_0xff52('0x1f')](function(){_0x5133d8['status'](0xcc)[_0xff52('0x19')]();});}};}function handleEntityNotFound(_0x40e5b4,_0x5fe9f6){return function(_0x4b10ac){if(!_0x4b10ac){_0x40e5b4[_0xff52('0x17')](0x194);}return _0x4b10ac;};}function handleError(_0xe5241d,_0x3c55e5){_0x3c55e5=_0x3c55e5||0x1f4;return function(_0x3220e1){logger[_0xff52('0x21')](_0x3220e1[_0xff52('0x22')]);if(_0x3220e1[_0xff52('0x23')]){delete _0x3220e1[_0xff52('0x23')];}_0xe5241d[_0xff52('0x18')](_0x3c55e5)[_0xff52('0x24')](_0x3220e1);};}exports[_0xff52('0x25')]=function(_0x2eb5ce,_0x278c3e){var _0x506d9a={},_0x5deccf={},_0xbdb5a2={'count':0x0,'rows':[]};var _0x143daf=_[_0xff52('0x26')](db[_0xff52('0x27')]['rawAttributes'],function(_0x49808f){return{'name':_0x49808f[_0xff52('0x28')],'type':_0x49808f[_0xff52('0x29')]['key']};});_0x5deccf[_0xff52('0x2a')]=_[_0xff52('0x2b')](_[_0xff52('0x26')](_0x143daf,_0xff52('0x23')),[_0xff52('0x23')]);_0x5deccf['query']=_[_0xff52('0x2c')](_0x2eb5ce[_0xff52('0x2d')]);_0x5deccf[_0xff52('0x2e')]=_[_0xff52('0x2f')](_0x5deccf[_0xff52('0x2a')],_0x5deccf[_0xff52('0x2d')]);_0x506d9a[_0xff52('0x30')]=_[_0xff52('0x2f')](_0x5deccf['model'],qs[_0xff52('0x31')](_0x2eb5ce[_0xff52('0x2d')][_0xff52('0x31')]));_0x506d9a[_0xff52('0x30')]=_0x506d9a[_0xff52('0x30')][_0xff52('0x32')]?_0x506d9a['attributes']:_0x5deccf['model'];if(!_0x2eb5ce[_0xff52('0x2d')][_0xff52('0x33')](_0xff52('0x34'))){_0x506d9a['limit']=qs['limit'](_0x2eb5ce[_0xff52('0x2d')]['limit']);_0x506d9a['offset']=qs[_0xff52('0x35')](_0x2eb5ce[_0xff52('0x2d')]['offset']);}_0x506d9a['order']=qs[_0xff52('0x36')](_0x2eb5ce['query']['sort']);_0x506d9a['where']=qs[_0xff52('0x2e')](_[_0xff52('0x37')](_0x2eb5ce[_0xff52('0x2d')],_0x5deccf['filters']),_0x143daf);if(_0x2eb5ce['query'][_0xff52('0x38')]){_0x506d9a['where']=_[_0xff52('0x39')](_0x506d9a[_0xff52('0x3a')],{'$or':_[_0xff52('0x26')](_0x143daf,function(_0x5155ec){if(_0x5155ec[_0xff52('0x29')]!==_0xff52('0x3b')){var _0x5005c7={};_0x5005c7[_0x5155ec[_0xff52('0x23')]]={'$like':'%'+_0x2eb5ce[_0xff52('0x2d')]['filter']+'%'};return _0x5005c7;}})});}_0x506d9a=_['merge']({},_0x506d9a,_0x2eb5ce[_0xff52('0x3c')]);var _0x3cbd13={'where':_0x506d9a[_0xff52('0x3a')]};return db[_0xff52('0x27')][_0xff52('0x1c')](_0x3cbd13)[_0xff52('0x1f')](function(_0x3fc43d){_0xbdb5a2[_0xff52('0x1c')]=_0x3fc43d;if(_0x2eb5ce[_0xff52('0x2d')][_0xff52('0x3d')]){_0x506d9a[_0xff52('0x3e')]=[{'all':!![]}];}return db[_0xff52('0x27')][_0xff52('0x3f')](_0x506d9a);})[_0xff52('0x1f')](function(_0x4f48f3){_0xbdb5a2[_0xff52('0x40')]=_0x4f48f3;return _0xbdb5a2;})[_0xff52('0x1f')](respondWithFilteredResult(_0x278c3e,_0x506d9a))['catch'](handleError(_0x278c3e,null));};exports[_0xff52('0x41')]=function(_0x1c22e9,_0x354a57){var _0x23e336={'raw':!![],'where':{'id':_0x1c22e9['params']['id']}},_0x1e8f13={};_0x1e8f13['model']=_[_0xff52('0x2c')](db[_0xff52('0x27')][_0xff52('0x42')]);_0x1e8f13[_0xff52('0x2d')]=_[_0xff52('0x2c')](_0x1c22e9[_0xff52('0x2d')]);_0x1e8f13['filters']=_[_0xff52('0x2f')](_0x1e8f13[_0xff52('0x2a')],_0x1e8f13[_0xff52('0x2d')]);_0x23e336[_0xff52('0x30')]=_[_0xff52('0x2f')](_0x1e8f13[_0xff52('0x2a')],qs['fields'](_0x1c22e9[_0xff52('0x2d')][_0xff52('0x31')]));_0x23e336[_0xff52('0x30')]=_0x23e336['attributes'][_0xff52('0x32')]?_0x23e336[_0xff52('0x30')]:_0x1e8f13['model'];if(_0x1c22e9[_0xff52('0x2d')][_0xff52('0x3d')]){_0x23e336[_0xff52('0x3e')]=[{'all':!![]}];}_0x23e336=_[_0xff52('0x39')]({},_0x23e336,_0x1c22e9['options']);return db['CmCustomField'][_0xff52('0x43')](_0x23e336)[_0xff52('0x1f')](handleEntityNotFound(_0x354a57,null))[_0xff52('0x1f')](respondWithResult(_0x354a57,null))[_0xff52('0x44')](handleError(_0x354a57,null));};exports[_0xff52('0x45')]=function(_0x50a415,_0x1793bb){if(_0x50a415['body']['id']){delete _0x50a415[_0xff52('0x46')]['id'];}return db['CmCustomField'][_0xff52('0x43')]({'where':{'id':_0x50a415[_0xff52('0x47')]['id']}})[_0xff52('0x1f')](handleEntityNotFound(_0x1793bb,null))[_0xff52('0x1f')](saveUpdates(_0x50a415['body'],null))[_0xff52('0x1f')](respondWithResult(_0x1793bb,null))[_0xff52('0x44')](handleError(_0x1793bb,null));};exports[_0xff52('0x20')]=function(_0x45dc16,_0x55156f){return db[_0xff52('0x27')][_0xff52('0x43')]({'where':{'id':_0x45dc16['params']['id']}})['then'](handleEntityNotFound(_0x55156f,null))[_0xff52('0x1f')](removeEntity(_0x55156f,null))[_0xff52('0x44')](handleError(_0x55156f,null));};exports[_0xff52('0x48')]=function(_0x4aa7f3,_0x320c0d){var _0xbe61ad;return db['sequelize'][_0xff52('0x49')](function(_0x3797d4){return db[_0xff52('0x27')][_0xff52('0x48')](_0x4aa7f3['body'],{'transaction':_0x3797d4})['then'](function(_0x4d8d43){_0xbe61ad=_0x4d8d43;var _0x27cf61={'type':db[_0xff52('0x4a')]['TEXT'],'transaction':_0x3797d4};switch(_0x4aa7f3[_0xff52('0x46')][_0xff52('0x29')]){case _0xff52('0x4b'):_0x27cf61[_0xff52('0x29')]=db[_0xff52('0x4a')]['TEXT'];break;case _0xff52('0x4c'):_0x27cf61[_0xff52('0x29')]=db[_0xff52('0x4a')]['INTEGER'];break;case _0xff52('0x4d'):_0x27cf61[_0xff52('0x29')]=db[_0xff52('0x4a')][_0xff52('0x4e')];_0x27cf61['defaultValue']=![];break;default:}return db['sequelize'][_0xff52('0x4f')][_0xff52('0x50')](_0xff52('0x51'),util[_0xff52('0x52')](_0xff52('0x53'),_0xbe61ad['id']),_0x27cf61);})[_0xff52('0x1f')](function(){return _0xbe61ad;});})[_0xff52('0x1f')](respondWithResult(_0x320c0d,0xc9))[_0xff52('0x44')](handleError(_0x320c0d,null));};
\ No newline at end of file
index 2eaac21..69213b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1827=['./cmCustomField.attributes','define','cm_custom_fields','util','../../config/logger','api','bluebird'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x1827,0xdc));var _0x7182=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x1827[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x7182('0x0'));var logger=require(_0x7182('0x1'))(_0x7182('0x2'));var moment=require('moment');var BPromise=require(_0x7182('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7182('0x4'));module['exports']=function(_0x1e5ea6,_0x55ccb3){return _0x1e5ea6[_0x7182('0x5')]('CmCustomField',attributes,{'tableName':_0x7182('0x6'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe395=['define','cm_custom_fields','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cmCustomField.attributes'];(function(_0x36d77d,_0x3d9174){var _0x4bf73d=function(_0x2dd003){while(--_0x2dd003){_0x36d77d['push'](_0x36d77d['shift']());}};_0x4bf73d(++_0x3d9174);}(_0xe395,0x115));var _0x5e39=function(_0x20ee88,_0x4f7539){_0x20ee88=_0x20ee88-0x0;var _0x1596f1=_0xe395[_0x20ee88];return _0x1596f1;};'use strict';var _=require(_0x5e39('0x0'));var util=require(_0x5e39('0x1'));var logger=require(_0x5e39('0x2'))('api');var moment=require(_0x5e39('0x3'));var BPromise=require(_0x5e39('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e39('0x5'));var rimraf=require(_0x5e39('0x6'));var config=require(_0x5e39('0x7'));var attributes=require(_0x5e39('0x8'));module['exports']=function(_0x312805,_0x564ef1){return _0x312805[_0x5e39('0x9')]('CmCustomField',attributes,{'tableName':_0x5e39('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a1e66b..905075a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d44=['http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x3d44,0x139));var _0x43d4=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x3d44[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require('lodash');var util=require(_0x43d4('0x0'));var moment=require(_0x43d4('0x1'));var BPromise=require(_0x43d4('0x2'));var rs=require(_0x43d4('0x3'));var fs=require('fs');var Redis=require(_0x43d4('0x4'));var db=require(_0x43d4('0x5'))['db'];var utils=require(_0x43d4('0x6'));var logger=require(_0x43d4('0x7'))(_0x43d4('0x8'));var config=require(_0x43d4('0x9'));var jayson=require(_0x43d4('0xa'));var client=jayson[_0x43d4('0xb')][_0x43d4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3c925e,_0x55fb53,_0x5e0ed5){return new BPromise(function(_0x28425d,_0x1cbb16){return client[_0x43d4('0xd')](_0x3c925e,_0x5e0ed5)[_0x43d4('0xe')](function(_0x36346b){logger[_0x43d4('0xf')](_0x43d4('0x10'),_0x55fb53,_0x43d4('0x11'));logger[_0x43d4('0x12')](_0x43d4('0x13'),_0x55fb53,_0x43d4('0x11'),JSON[_0x43d4('0x14')](_0x36346b));if(_0x36346b[_0x43d4('0x15')]){if(_0x36346b[_0x43d4('0x15')][_0x43d4('0x16')]===0x1f4){logger[_0x43d4('0x15')]('CmCustomField,\x20%s,\x20%s',_0x55fb53,_0x36346b[_0x43d4('0x15')][_0x43d4('0x17')]);return _0x1cbb16(_0x36346b['error'][_0x43d4('0x17')]);}logger[_0x43d4('0x15')](_0x43d4('0x10'),_0x55fb53,_0x36346b[_0x43d4('0x15')][_0x43d4('0x17')]);return _0x28425d(_0x36346b[_0x43d4('0x15')]['message']);}else{logger[_0x43d4('0xf')](_0x43d4('0x10'),_0x55fb53,'request\x20sent');_0x28425d(_0x36346b[_0x43d4('0x18')][_0x43d4('0x17')]);}})['catch'](function(_0x1ac425){logger['error'](_0x43d4('0x10'),_0x55fb53,_0x1ac425);_0x1cbb16(_0x1ac425);});});}
\ No newline at end of file
+var _0xe26c=['error','code','CmCustomField,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x43ca9c,_0x295274){var _0x57ba10=function(_0x51d2e9){while(--_0x51d2e9){_0x43ca9c['push'](_0x43ca9c['shift']());}};_0x57ba10(++_0x295274);}(_0xe26c,0x1e6));var _0xce26=function(_0x375d62,_0x147494){_0x375d62=_0x375d62-0x0;var _0x282366=_0xe26c[_0x375d62];return _0x282366;};'use strict';var _=require(_0xce26('0x0'));var util=require(_0xce26('0x1'));var moment=require('moment');var BPromise=require(_0xce26('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xce26('0x3'));var db=require(_0xce26('0x4'))['db'];var utils=require(_0xce26('0x5'));var logger=require(_0xce26('0x6'))(_0xce26('0x7'));var config=require('../../config/environment');var jayson=require(_0xce26('0x8'));var client=jayson['client'][_0xce26('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23ba9c,_0x21a44f,_0x2609ff){return new BPromise(function(_0xe94e23,_0x440b6b){return client[_0xce26('0xa')](_0x23ba9c,_0x2609ff)['then'](function(_0x5e01d1){logger['info']('CmCustomField,\x20%s,\x20%s',_0x21a44f,'request\x20sent');logger[_0xce26('0xb')](_0xce26('0xc'),_0x21a44f,_0xce26('0xd'),JSON['stringify'](_0x5e01d1));if(_0x5e01d1['error']){if(_0x5e01d1[_0xce26('0xe')][_0xce26('0xf')]===0x1f4){logger[_0xce26('0xe')](_0xce26('0x10'),_0x21a44f,_0x5e01d1[_0xce26('0xe')][_0xce26('0x11')]);return _0x440b6b(_0x5e01d1[_0xce26('0xe')][_0xce26('0x11')]);}logger[_0xce26('0xe')](_0xce26('0x10'),_0x21a44f,_0x5e01d1['error']['message']);return _0xe94e23(_0x5e01d1['error'][_0xce26('0x11')]);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0x21a44f,_0xce26('0xd'));_0xe94e23(_0x5e01d1[_0xce26('0x12')][_0xce26('0x11')]);}})[_0xce26('0x13')](function(_0x5dc82f){logger[_0xce26('0xe')](_0xce26('0x10'),_0x21a44f,_0x5dc82f);_0x440b6b(_0x5dc82f);});});}
\ No newline at end of file
index 42e5f7e..da396a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc906=['./cmCustomField.controller','get','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc906,0x1ad));var _0x6c90=function(_0x48d29a,_0x1e96fc){_0x48d29a=_0x48d29a-0x0;var _0x11a7bf=_0xc906[_0x48d29a];return _0x11a7bf;};'use strict';var multer=require(_0x6c90('0x0'));var util=require(_0x6c90('0x1'));var path=require('path');var timeout=require(_0x6c90('0x2'));var express=require(_0x6c90('0x3'));var router=express[_0x6c90('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6c90('0x5'));var interaction=require(_0x6c90('0x6'));var config=require(_0x6c90('0x7'));var controller=require(_0x6c90('0x8'));router[_0x6c90('0x9')]('/',auth[_0x6c90('0xa')](),controller['index']);router['get']('/:id',auth[_0x6c90('0xa')](),controller['show']);router[_0x6c90('0xb')]('/',auth[_0x6c90('0xa')](),controller[_0x6c90('0xc')]);router[_0x6c90('0xd')](_0x6c90('0xe'),auth[_0x6c90('0xa')](),controller[_0x6c90('0xf')]);router[_0x6c90('0x10')](_0x6c90('0xe'),auth[_0x6c90('0xa')](),controller[_0x6c90('0x11')]);module[_0x6c90('0x12')]=router;
\ No newline at end of file
+var _0xa400=['put','/:id','update','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','post','create'];(function(_0x34b4a7,_0x3c11ef){var _0x3bfcd3=function(_0x363537){while(--_0x363537){_0x34b4a7['push'](_0x34b4a7['shift']());}};_0x3bfcd3(++_0x3c11ef);}(_0xa400,0xc1));var _0x0a40=function(_0x3595ce,_0x1e27a5){_0x3595ce=_0x3595ce-0x0;var _0xe68766=_0xa400[_0x3595ce];return _0xe68766;};'use strict';var multer=require(_0x0a40('0x0'));var util=require(_0x0a40('0x1'));var path=require(_0x0a40('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x0a40('0x3'));var auth=require(_0x0a40('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0a40('0x5'));var controller=require('./cmCustomField.controller');router[_0x0a40('0x6')]('/',auth[_0x0a40('0x7')](),controller[_0x0a40('0x8')]);router[_0x0a40('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x0a40('0x9')]('/',auth[_0x0a40('0x7')](),controller[_0x0a40('0xa')]);router[_0x0a40('0xb')](_0x0a40('0xc'),auth[_0x0a40('0x7')](),controller[_0x0a40('0xd')]);router[_0x0a40('0xe')](_0x0a40('0xc'),auth[_0x0a40('0x7')](),controller[_0x0a40('0xf')]);module[_0x0a40('0x10')]=router;
\ No newline at end of file
index 38f309c..2ca382e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae88=['sequelize','exports','STRING','BOOLEAN','format','INTEGER','UNSIGNED','contactListQueue','moment'];(function(_0x4727f1,_0x2ff773){var _0x2977ce=function(_0x29be89){while(--_0x29be89){_0x4727f1['push'](_0x4727f1['shift']());}};_0x2977ce(++_0x2ff773);}(_0xae88,0xa1));var _0x8ae8=function(_0x430d54,_0x532e2f){_0x430d54=_0x430d54-0x0;var _0x1e0f1e=_0xae88[_0x430d54];return _0x1e0f1e;};'use strict';var moment=require(_0x8ae8('0x0'));var Sequelize=require(_0x8ae8('0x1'));module[_0x8ae8('0x2')]={'phone':{'type':Sequelize[_0x8ae8('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x8ae8('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x8ae8('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x8ae8('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x8ae8('0x6')](0x2)[_0x8ae8('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x8ae8('0x6')],'unique':_0x8ae8('0x8')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x8ae8('0x8')},'UserId':{'type':Sequelize[_0x8ae8('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x8ae8('0x6')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x8ae8('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8ae8('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa884=['BOOLEAN','DATE','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','sequelize','exports','STRING'];(function(_0x4dd06d,_0x343ed0){var _0x147cb4=function(_0x40fc71){while(--_0x40fc71){_0x4dd06d['push'](_0x4dd06d['shift']());}};_0x147cb4(++_0x343ed0);}(_0xa884,0x1b6));var _0x4a88=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa884[_0x4dbaad];return _0x226c72;};'use strict';var moment=require('moment');var Sequelize=require(_0x4a88('0x0'));module[_0x4a88('0x1')]={'phone':{'type':Sequelize[_0x4a88('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x4a88('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4a88('0x4')],'defaultValue':moment()['format'](_0x4a88('0x5'))},'countbusyretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4a88('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x4a88('0x6')](0x2)[_0x4a88('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4a88('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4a88('0x6')],'unique':_0x4a88('0x8')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x4a88('0x8')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x4a88('0x8')},'CampaignId':{'type':Sequelize[_0x4a88('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4a88('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 8c48c85..ba44e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd73a=['where','merge','type','VIRTUAL','options','CmHopper','includeAll','findAll','rows','catch','show','params','keys','include','find','body','describe','VoiceQueueId','Campaign','CampaignId','dataValues','createdAt','statedesc','deleted','membername','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','create','getPreview','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','filter','value','prev','isEmpty','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','send','map','rawAttributes','fieldName','key','model','name','query','intersection','concat','filters','$gt','$gte','$ne','$not','$between','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','length','hasOwnProperty','order','sort','pick'];(function(_0x53f0b8,_0x30a2eb){var _0x581b8b=function(_0x40bb1c){while(--_0x40bb1c){_0x53f0b8['push'](_0x53f0b8['shift']());}};_0x581b8b(++_0x30a2eb);}(_0xd73a,0x171));var _0xad73=function(_0x26761f,_0x42f5fd){_0x26761f=_0x26761f-0x0;var _0x232e29=_0xd73a[_0x26761f];return _0x232e29;};'use strict';var emlformat=require(_0xad73('0x0'));var rimraf=require(_0xad73('0x1'));var zipdir=require(_0xad73('0x2'));var jsonpatch=require(_0xad73('0x3'));var rp=require(_0xad73('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xad73('0x5'));var util=require(_0xad73('0x6'));var path=require(_0xad73('0x7'));var sox=require(_0xad73('0x8'));var csv=require(_0xad73('0x9'));var ejs=require(_0xad73('0xa'));var fs=require('fs');var fs_extra=require(_0xad73('0xb'));var _=require(_0xad73('0xc'));var squel=require(_0xad73('0xd'));var crypto=require(_0xad73('0xe'));var jsforce=require(_0xad73('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xad73('0x9'));var querystring=require('querystring');var Papa=require(_0xad73('0x10'));var Redis=require(_0xad73('0x11'));var authService=require(_0xad73('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xad73('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad73('0x14'))('api');var utils=require(_0xad73('0x15'));var config=require(_0xad73('0x16'));var licenseUtil=require(_0xad73('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1045be,_0x241ff5){_0x241ff5=_0x241ff5||0xcc;return function(_0x488787){if(_0x488787){return _0x1045be[_0xad73('0x18')](_0x241ff5);}return _0x1045be[_0xad73('0x19')](_0x241ff5)[_0xad73('0x1a')]();};}function respondWithResult(_0x27a9d2,_0x15f72d){_0x15f72d=_0x15f72d||0xc8;return function(_0x82fe13){if(_0x82fe13){return _0x27a9d2['status'](_0x15f72d)[_0xad73('0x1b')](_0x82fe13);}};}function respondWithFilteredResult(_0x35c2c5,_0x4336fa){return function(_0x155548){if(_0x155548){var _0x2f0dcd=typeof _0x4336fa[_0xad73('0x1c')]===_0xad73('0x1d')&&typeof _0x4336fa[_0xad73('0x1e')]===_0xad73('0x1d');var _0xad072c=_0x155548['count'];var _0x47381a=_0x2f0dcd?0x0:_0x4336fa['offset'];var _0x5bd242=_0x2f0dcd?_0x155548[_0xad73('0x1f')]:_0x4336fa[_0xad73('0x1c')]+_0x4336fa[_0xad73('0x1e')];var _0x578068;if(_0x5bd242>=_0xad072c){_0x5bd242=_0xad072c;_0x578068=0xc8;}else{_0x578068=0xce;}_0x35c2c5[_0xad73('0x19')](_0x578068);return _0x35c2c5[_0xad73('0x20')]('Content-Range',_0x47381a+'-'+_0x5bd242+'/'+_0xad072c)[_0xad73('0x1b')](_0x155548);}return null;};}function patchUpdates(_0x4289df){return function(_0x3e02ed){try{jsonpatch[_0xad73('0x21')](_0x3e02ed,_0x4289df,!![]);}catch(_0x2e6cdb){return BPromise[_0xad73('0x22')](_0x2e6cdb);}return _0x3e02ed[_0xad73('0x23')]();};}function saveUpdates(_0x497c3d,_0xfe2758){return function(_0x31f5c4){if(_0x31f5c4){return _0x31f5c4[_0xad73('0x24')](_0x497c3d)[_0xad73('0x25')](function(_0xb3e0b0){return _0xb3e0b0;});}return null;};}function removeEntity(_0x2a1295,_0xbfb297){return function(_0x439f09){if(_0x439f09){return _0x439f09[_0xad73('0x26')]()[_0xad73('0x25')](function(){_0x2a1295[_0xad73('0x19')](0xcc)[_0xad73('0x1a')]();});}};}function handleEntityNotFound(_0x182805,_0xfec523){return function(_0x1b7d84){if(!_0x1b7d84){_0x182805[_0xad73('0x18')](0x194);}return _0x1b7d84;};}function handleError(_0x34f8c4,_0x920ffc){_0x920ffc=_0x920ffc||0x1f4;return function(_0xb7700c){logger[_0xad73('0x27')](_0xb7700c['stack']);if(_0xb7700c['name']){delete _0xb7700c['name'];}_0x34f8c4[_0xad73('0x19')](_0x920ffc)[_0xad73('0x28')](_0xb7700c);};}exports['index']=function(_0x3f1f80,_0x54a8f9){var _0x54eadc={},_0x1f826c={},_0x377273={'count':0x0,'rows':[]};var _0x34fe4d=_[_0xad73('0x29')](db['CmHopper'][_0xad73('0x2a')],function(_0x3fab83){return{'name':_0x3fab83[_0xad73('0x2b')],'type':_0x3fab83['type'][_0xad73('0x2c')]};});_0x1f826c[_0xad73('0x2d')]=_[_0xad73('0x29')](_0x34fe4d,_0xad73('0x2e'));_0x1f826c[_0xad73('0x2f')]=_['keys'](_0x3f1f80['query']);_0x1f826c['filters']=_[_0xad73('0x30')](_0x1f826c['model'],_0x1f826c[_0xad73('0x2f')]);_0x1f826c['filters']=_[_0xad73('0x31')](_0x1f826c[_0xad73('0x32')],['$and','$or',_0xad73('0x33'),_0xad73('0x34'),'$lt','$lte',_0xad73('0x35'),'$eq',_0xad73('0x36'),_0xad73('0x37'),'$notBetween',_0xad73('0x38'),'$notIn',_0xad73('0x39'),_0xad73('0x3a'),_0xad73('0x3b'),_0xad73('0x3c'),_0xad73('0x39'),_0xad73('0x3d'),_0xad73('0x3e'),_0xad73('0x3f'),_0xad73('0x40')]);_0x54eadc['attributes']=_[_0xad73('0x30')](_0x1f826c[_0xad73('0x2d')],qs['fields'](_0x3f1f80[_0xad73('0x2f')][_0xad73('0x41')]));_0x54eadc[_0xad73('0x42')]=_0x54eadc[_0xad73('0x42')][_0xad73('0x43')]?_0x54eadc[_0xad73('0x42')]:_0x1f826c[_0xad73('0x2d')];if(!_0x3f1f80[_0xad73('0x2f')][_0xad73('0x44')]('nolimit')){_0x54eadc[_0xad73('0x1e')]=qs[_0xad73('0x1e')](_0x3f1f80[_0xad73('0x2f')]['limit']);_0x54eadc['offset']=qs[_0xad73('0x1c')](_0x3f1f80['query']['offset']);}_0x54eadc[_0xad73('0x45')]=qs[_0xad73('0x46')](_0x3f1f80[_0xad73('0x2f')][_0xad73('0x46')]);_0x54eadc['where']=qs[_0xad73('0x32')](_[_0xad73('0x47')](_0x3f1f80['query'],_0x1f826c[_0xad73('0x32')]),_0x34fe4d);if(_0x3f1f80[_0xad73('0x2f')]['filter']){_0x54eadc[_0xad73('0x48')]=_[_0xad73('0x49')](_0x54eadc[_0xad73('0x48')],{'$or':_['map'](_0x34fe4d,function(_0x2448da){if(_0x2448da[_0xad73('0x4a')]!==_0xad73('0x4b')){var _0x3d2ef0={};_0x3d2ef0[_0x2448da[_0xad73('0x2e')]]={'$like':'%'+_0x3f1f80['query']['filter']+'%'};return _0x3d2ef0;}})});}_0x54eadc=_['merge']({},_0x54eadc,_0x3f1f80[_0xad73('0x4c')]);var _0x12f035={'where':_0x54eadc[_0xad73('0x48')]};return db[_0xad73('0x4d')][_0xad73('0x1f')](_0x12f035)[_0xad73('0x25')](function(_0x3b0c68){_0x377273['count']=_0x3b0c68;if(_0x3f1f80[_0xad73('0x2f')][_0xad73('0x4e')]){_0x54eadc['include']=[{'all':!![]}];}return db['CmHopper'][_0xad73('0x4f')](_0x54eadc);})[_0xad73('0x25')](function(_0x1658a0){_0x377273[_0xad73('0x50')]=_0x1658a0;return _0x377273;})['then'](respondWithFilteredResult(_0x54a8f9,_0x54eadc))[_0xad73('0x51')](handleError(_0x54a8f9,null));};exports[_0xad73('0x52')]=function(_0xfea484,_0x5d8d87){var _0xa1bb3d={'raw':!![],'where':{'id':_0xfea484[_0xad73('0x53')]['id']}},_0x283783={};_0x283783[_0xad73('0x2d')]=_['keys'](db['CmHopper'][_0xad73('0x2a')]);_0x283783[_0xad73('0x2f')]=_[_0xad73('0x54')](_0xfea484[_0xad73('0x2f')]);_0x283783[_0xad73('0x32')]=_[_0xad73('0x30')](_0x283783[_0xad73('0x2d')],_0x283783[_0xad73('0x2f')]);_0xa1bb3d[_0xad73('0x42')]=_['intersection'](_0x283783['model'],qs[_0xad73('0x41')](_0xfea484[_0xad73('0x2f')][_0xad73('0x41')]));_0xa1bb3d['attributes']=_0xa1bb3d[_0xad73('0x42')][_0xad73('0x43')]?_0xa1bb3d[_0xad73('0x42')]:_0x283783[_0xad73('0x2d')];if(_0xfea484['query'][_0xad73('0x4e')]){_0xa1bb3d[_0xad73('0x55')]=[{'all':!![]}];}_0xa1bb3d=_[_0xad73('0x49')]({},_0xa1bb3d,_0xfea484['options']);return db[_0xad73('0x4d')][_0xad73('0x56')](_0xa1bb3d)[_0xad73('0x25')](handleEntityNotFound(_0x5d8d87,null))[_0xad73('0x25')](respondWithResult(_0x5d8d87,null))['catch'](handleError(_0x5d8d87,null));};exports['create']=function(_0x28b113,_0x361509){return db[_0xad73('0x4d')]['create'](_0x28b113[_0xad73('0x57')],{})[_0xad73('0x25')](respondWithResult(_0x361509,0xc9))[_0xad73('0x51')](handleError(_0x361509,null));};exports[_0xad73('0x24')]=function(_0x3fb4da,_0x36fd80){if(_0x3fb4da[_0xad73('0x57')]['id']){delete _0x3fb4da[_0xad73('0x57')]['id'];}return db['CmHopper'][_0xad73('0x56')]({'where':{'id':_0x3fb4da['params']['id']}})[_0xad73('0x25')](handleEntityNotFound(_0x36fd80,null))['then'](saveUpdates(_0x3fb4da['body'],null))[_0xad73('0x25')](respondWithResult(_0x36fd80,null))[_0xad73('0x51')](handleError(_0x36fd80,null));};exports['describe']=function(_0x25b6f1,_0x2def9f){return db[_0xad73('0x4d')][_0xad73('0x58')]()[_0xad73('0x25')](respondWithResult(_0x2def9f,null))[_0xad73('0x51')](handleError(_0x2def9f,null));};exports[_0xad73('0x26')]=function(_0xf71ea2,_0xeeaa26){var _0x317601;return db['CmHopper'][_0xad73('0x56')]({'where':{'id':_0xf71ea2['params']['id']}})[_0xad73('0x25')](handleEntityNotFound(_0xeeaa26,null))[_0xad73('0x25')](function(_0x2e1d54){if(_0x2e1d54){return _0x2e1d54[_0xad73('0x26')]()['then'](function(_0x404a21){return _0x404a21;});}})['then'](function(_0x4792d5){_0x317601=_0x4792d5;if(_0x4792d5){if(_0x4792d5[_0xad73('0x59')]||_0x4792d5['CampaignId']){return db[_0x4792d5[_0xad73('0x59')]?'VoiceQueue':_0xad73('0x5a')][_0xad73('0x56')]({'where':{'id':_0x4792d5[_0xad73('0x59')]?_0x4792d5['VoiceQueueId']:_0x4792d5[_0xad73('0x5b')]},'attributes':['id',_0xad73('0x2e')],'raw':!![]});}}})[_0xad73('0x25')](function(_0x4bd4b3){var _0x206e3a={};if(_0x4bd4b3){_['merge'](_0x206e3a,_['omit'](_0x317601[_0xad73('0x5c')],[_0xad73('0x5d'),'updatedAt','id']));_0x206e3a['state']=0x15;_0x206e3a[_0xad73('0x5e')]=_0xad73('0x5f');_0x206e3a['campaign']=_0x4bd4b3['name'];_0x206e3a[_0xad73('0x60')]=_0xf71ea2[_0xad73('0x61')][_0xad73('0x2e')];_0x206e3a[_0xad73('0x62')]=_0xf71ea2[_0xad73('0x61')]['id'];_0x206e3a['deleted']=!![];_0x206e3a['deletedat']=moment()[_0xad73('0x63')](_0xad73('0x64'));_0x206e3a[_0xad73('0x65')]=_0x317601[_0xad73('0x66')];_0x206e3a[_0xad73('0x67')]=_0x317601[_0xad73('0x59')]?_0xad73('0x68'):_0xad73('0x69');return db[_0xad73('0x6a')][_0xad73('0x56')]({'where':{'id':_0x206e3a[_0xad73('0x6b')]},'attributes':['firstName',_0xad73('0x6c')]})[_0xad73('0x25')](function(_0x110d1b){if(!_[_0xad73('0x6d')](_0xeeaa26)&&!_[_0xad73('0x6d')](_0x110d1b['firstName'])){_0x206e3a['calleridname']=_0x110d1b[_0xad73('0x6e')];if(!_[_0xad73('0x6d')](_0x110d1b[_0xad73('0x6c')])){_0x206e3a[_0xad73('0x6f')]+='\x20'+_0x110d1b[_0xad73('0x6c')];}}})[_0xad73('0x70')](function(){return db[_0xad73('0x71')][_0xad73('0x72')](_0x206e3a);});}})[_0xad73('0x25')](function(){return _0xeeaa26[_0xad73('0x19')](0xcc)[_0xad73('0x1a')]();})['catch'](handleError(_0xeeaa26,null));};exports[_0xad73('0x73')]=function(_0x269abe,_0x205b56,_0x118504){var _0x31d492=[];return db[_0xad73('0x6a')][_0xad73('0x58')]()['then'](function(_0x2525fe){_0x31d492=_[_0xad73('0x54')](_0x2525fe);return _0x269abe[_0xad73('0x61')][_0xad73('0x74')]({'where':{'type':_0xad73('0x75'),'dialActive':!![],'dialMethod':_0xad73('0x76')},'attributes':['id','dialOrderByScheduledAt',_0xad73('0x77')],'raw':!![]});})[_0xad73('0x25')](function(_0x2f93f9){if(_0x2f93f9&&_0x2f93f9[_0xad73('0x43')]){return db[_0xad73('0x78')]['transaction'](function(_0x3741cb){var _0xae9bdd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xad73('0x63')](_0xad73('0x64'))},'VoiceQueueId':{'$in':_[_0xad73('0x29')](_0x2f93f9,'id')},'$or':[{'UserId':null},{'UserId':_0x269abe[_0xad73('0x61')]['id']}]};var _0x58c8ad={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2f93f9)[_0xad73('0x79')]([_0xad73('0x77'),0x0])[_0xad73('0x29')]('id')[_0xad73('0x7a')]()},'$or':[{'UserId':null},{'UserId':_0x269abe[_0xad73('0x61')]['id']}]};var _0xec1025={'$or':[_0xae9bdd,_0x58c8ad]};var _0xb2324e=[];if(_0x269abe[_0xad73('0x57')]['direction']&&_0x269abe[_0xad73('0x57')]['direction']===_0xad73('0x7b')){if(!_[_0xad73('0x7c')](_0x269abe[_0xad73('0x57')]['hopperIds'])){_0xec1025['id']={'$in':_0x269abe[_0xad73('0x57')][_0xad73('0x7d')]};}_0xb2324e=[[_0xad73('0x7e'),'ASC'],[_0xad73('0x7f'),_0x2f93f9[0x0][_0xad73('0x80')]===_0xad73('0x81')?_0xad73('0x82'):_0xad73('0x81')],db['sequelize'][_0xad73('0x83')](_0xad73('0x84')),['id',_0xad73('0x82')]];}else{if(!_['isEmpty'](_0x269abe[_0xad73('0x57')][_0xad73('0x7d')])){_0xec1025['id']={'$notIn':_0x269abe[_0xad73('0x57')][_0xad73('0x7d')]};}_0xb2324e=[[_0xad73('0x7e'),_0xad73('0x82')],[_0xad73('0x7f'),_0x2f93f9[0x0]['dialOrderByScheduledAt']],db[_0xad73('0x78')]['literal'](_0xad73('0x85')),['id',_0xad73('0x81')]];}return db[_0xad73('0x4d')][_0xad73('0x86')]({'attributes':['id',_0xad73('0x87'),_0xad73('0x88')],'where':_0xec1025,'order':_0xb2324e,'transaction':_0x3741cb,'lock':_0x3741cb[_0xad73('0x89')]['UPDATE'],'include':[{'model':db[_0xad73('0x6a')],'as':_0xad73('0x8a'),'attributes':_0x31d492,'include':[{'model':db['CmCompany'],'as':_0xad73('0x8b'),'attributes':['id','name']}]},{'model':db[_0xad73('0x8c')],'as':_0xad73('0x8d'),'attributes':['id',_0xad73('0x2e')]},{'model':db[_0xad73('0x8e')],'as':_0xad73('0x8f'),'attributes':['id',_0xad73('0x2e'),_0xad73('0x90')]}]})[_0xad73('0x25')](function(_0x2d5321){if(_0x2d5321){return _0x2d5321[_0xad73('0x24')]({'UserId':_0x269abe[_0xad73('0x61')]['id']},{'transaction':_0x3741cb});}});});}})['then'](handleEntityNotFound(_0x205b56,null))['then'](respondWithResult(_0x205b56,null))[_0xad73('0x51')](handleError(_0x205b56,null));};exports[_0xad73('0x91')]=function(_0x3195e0,_0x21bc15,_0x91c99a){return _0x3195e0[_0xad73('0x61')][_0xad73('0x74')]({'where':{'type':_0xad73('0x75'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x3e0057){if(_0x3e0057&&_0x3e0057['length']){return db['CmHopper']['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xad73('0x63')](_0xad73('0x64'))},'VoiceQueueId':{'$in':_[_0xad73('0x29')](_0x3e0057,'id')},'$or':[{'UserId':null},{'UserId':_0x3195e0[_0xad73('0x61')]['id']}]}});}return 0x0;})[_0xad73('0x25')](function(_0x2236e3){if(!_[_0xad73('0x6d')](_0x2236e3)&&_['isNumber'](_0x2236e3)){return _0x21bc15[_0xad73('0x19')](0xc8)[_0xad73('0x1b')]({'contacts':_0x2236e3});}else{logger[_0xad73('0x27')](_0xad73('0x92'),_0xad73('0x91'),0x194,'entity\x20not\x20found');_0x21bc15[_0xad73('0x18')](0x194);}})[_0xad73('0x51')](handleError(_0x21bc15,null));};
\ No newline at end of file
+var _0x4ac7=['includeAll','include','findAll','rows','params','options','find','catch','create','body','describe','destroy','VoiceQueue','Campaign','VoiceQueueId','CampaignId','dataValues','updatedAt','deleted','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','outbound','dialOrderByScheduledAt','sequelize','transaction','dialPreviewAutoRecallMe','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','getOpenContacts','getVoiceQueues','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','update','then','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','intersection','filters','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$in','$notIn','$iLike','$like','$overlap','$contains','$any','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x2b838a,_0x1788ec){var _0x4fe2e2=function(_0x3d1922){while(--_0x3d1922){_0x2b838a['push'](_0x2b838a['shift']());}};_0x4fe2e2(++_0x1788ec);}(_0x4ac7,0x170));var _0x74ac=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x4ac7[_0x13d07a];return _0x5ee0ee;};'use strict';var emlformat=require(_0x74ac('0x0'));var rimraf=require(_0x74ac('0x1'));var zipdir=require(_0x74ac('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x74ac('0x3'));var moment=require(_0x74ac('0x4'));var BPromise=require(_0x74ac('0x5'));var Mustache=require(_0x74ac('0x6'));var util=require(_0x74ac('0x7'));var path=require(_0x74ac('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x74ac('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x74ac('0xa'));var squel=require(_0x74ac('0xb'));var crypto=require(_0x74ac('0xc'));var jsforce=require(_0x74ac('0xd'));var deskjs=require(_0x74ac('0xe'));var toCsv=require(_0x74ac('0xf'));var querystring=require(_0x74ac('0x10'));var Papa=require('papaparse');var Redis=require(_0x74ac('0x11'));var authService=require(_0x74ac('0x12'));var qs=require(_0x74ac('0x13'));var as=require(_0x74ac('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x74ac('0x15'))(_0x74ac('0x16'));var utils=require(_0x74ac('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10ab9d,_0x38ba01){_0x38ba01=_0x38ba01||0xcc;return function(_0x1e82e1){if(_0x1e82e1){return _0x10ab9d[_0x74ac('0x18')](_0x38ba01);}return _0x10ab9d[_0x74ac('0x19')](_0x38ba01)[_0x74ac('0x1a')]();};}function respondWithResult(_0x4390bf,_0x9ba05b){_0x9ba05b=_0x9ba05b||0xc8;return function(_0x2759e6){if(_0x2759e6){return _0x4390bf[_0x74ac('0x19')](_0x9ba05b)['json'](_0x2759e6);}};}function respondWithFilteredResult(_0x18d7eb,_0x2908d7){return function(_0x3ec707){if(_0x3ec707){var _0x1e7fa5=typeof _0x2908d7[_0x74ac('0x1b')]===_0x74ac('0x1c')&&typeof _0x2908d7['limit']===_0x74ac('0x1c');var _0x5cdf82=_0x3ec707[_0x74ac('0x1d')];var _0x17490f=_0x1e7fa5?0x0:_0x2908d7[_0x74ac('0x1b')];var _0x3ad751=_0x1e7fa5?_0x3ec707[_0x74ac('0x1d')]:_0x2908d7['offset']+_0x2908d7[_0x74ac('0x1e')];var _0x4dfb0e;if(_0x3ad751>=_0x5cdf82){_0x3ad751=_0x5cdf82;_0x4dfb0e=0xc8;}else{_0x4dfb0e=0xce;}_0x18d7eb['status'](_0x4dfb0e);return _0x18d7eb[_0x74ac('0x1f')](_0x74ac('0x20'),_0x17490f+'-'+_0x3ad751+'/'+_0x5cdf82)[_0x74ac('0x21')](_0x3ec707);}return null;};}function patchUpdates(_0x15987f){return function(_0x4a2c43){try{jsonpatch[_0x74ac('0x22')](_0x4a2c43,_0x15987f,!![]);}catch(_0x503ce7){return BPromise['reject'](_0x503ce7);}return _0x4a2c43['save']();};}function saveUpdates(_0x27408d,_0x1e962c){return function(_0x469313){if(_0x469313){return _0x469313[_0x74ac('0x23')](_0x27408d)[_0x74ac('0x24')](function(_0x2a8a18){return _0x2a8a18;});}return null;};}function removeEntity(_0x2f9dc8,_0xe4282){return function(_0x2414fa){if(_0x2414fa){return _0x2414fa['destroy']()[_0x74ac('0x24')](function(){_0x2f9dc8[_0x74ac('0x19')](0xcc)[_0x74ac('0x1a')]();});}};}function handleEntityNotFound(_0x1f99b4,_0x14fa7b){return function(_0x4a6687){if(!_0x4a6687){_0x1f99b4[_0x74ac('0x18')](0x194);}return _0x4a6687;};}function handleError(_0x803afc,_0x1c3d22){_0x1c3d22=_0x1c3d22||0x1f4;return function(_0x15f991){logger[_0x74ac('0x25')](_0x15f991[_0x74ac('0x26')]);if(_0x15f991['name']){delete _0x15f991[_0x74ac('0x27')];}_0x803afc[_0x74ac('0x19')](_0x1c3d22)[_0x74ac('0x28')](_0x15f991);};}exports[_0x74ac('0x29')]=function(_0x6fecbf,_0x42242e){var _0x35b316={},_0x22dcb3={},_0x3d1e00={'count':0x0,'rows':[]};var _0x1d55dc=_[_0x74ac('0x2a')](db[_0x74ac('0x2b')][_0x74ac('0x2c')],function(_0xd14c8a){return{'name':_0xd14c8a[_0x74ac('0x2d')],'type':_0xd14c8a[_0x74ac('0x2e')][_0x74ac('0x2f')]};});_0x22dcb3[_0x74ac('0x30')]=_[_0x74ac('0x2a')](_0x1d55dc,_0x74ac('0x27'));_0x22dcb3[_0x74ac('0x31')]=_[_0x74ac('0x32')](_0x6fecbf[_0x74ac('0x31')]);_0x22dcb3['filters']=_[_0x74ac('0x33')](_0x22dcb3[_0x74ac('0x30')],_0x22dcb3['query']);_0x22dcb3[_0x74ac('0x34')]=_['concat'](_0x22dcb3[_0x74ac('0x34')],[_0x74ac('0x35'),_0x74ac('0x36'),'$gt',_0x74ac('0x37'),_0x74ac('0x38'),_0x74ac('0x39'),_0x74ac('0x3a'),_0x74ac('0x3b'),_0x74ac('0x3c'),'$between','$notBetween',_0x74ac('0x3d'),_0x74ac('0x3e'),'$like','$notLike',_0x74ac('0x3f'),'$notILike',_0x74ac('0x40'),_0x74ac('0x41'),_0x74ac('0x42'),'$contained',_0x74ac('0x43')]);_0x35b316[_0x74ac('0x44')]=_['intersection'](_0x22dcb3[_0x74ac('0x30')],qs[_0x74ac('0x45')](_0x6fecbf[_0x74ac('0x31')][_0x74ac('0x45')]));_0x35b316['attributes']=_0x35b316[_0x74ac('0x44')][_0x74ac('0x46')]?_0x35b316[_0x74ac('0x44')]:_0x22dcb3[_0x74ac('0x30')];if(!_0x6fecbf[_0x74ac('0x31')]['hasOwnProperty'](_0x74ac('0x47'))){_0x35b316[_0x74ac('0x1e')]=qs['limit'](_0x6fecbf['query'][_0x74ac('0x1e')]);_0x35b316[_0x74ac('0x1b')]=qs[_0x74ac('0x1b')](_0x6fecbf['query'][_0x74ac('0x1b')]);}_0x35b316[_0x74ac('0x48')]=qs[_0x74ac('0x49')](_0x6fecbf[_0x74ac('0x31')][_0x74ac('0x49')]);_0x35b316[_0x74ac('0x4a')]=qs['filters'](_[_0x74ac('0x4b')](_0x6fecbf[_0x74ac('0x31')],_0x22dcb3[_0x74ac('0x34')]),_0x1d55dc);if(_0x6fecbf['query'][_0x74ac('0x4c')]){_0x35b316[_0x74ac('0x4a')]=_[_0x74ac('0x4d')](_0x35b316[_0x74ac('0x4a')],{'$or':_['map'](_0x1d55dc,function(_0x470bb4){if(_0x470bb4[_0x74ac('0x2e')]!==_0x74ac('0x4e')){var _0x4daedc={};_0x4daedc[_0x470bb4[_0x74ac('0x27')]]={'$like':'%'+_0x6fecbf[_0x74ac('0x31')]['filter']+'%'};return _0x4daedc;}})});}_0x35b316=_['merge']({},_0x35b316,_0x6fecbf['options']);var _0xb80b2c={'where':_0x35b316[_0x74ac('0x4a')]};return db[_0x74ac('0x2b')][_0x74ac('0x1d')](_0xb80b2c)[_0x74ac('0x24')](function(_0x4ddde5){_0x3d1e00[_0x74ac('0x1d')]=_0x4ddde5;if(_0x6fecbf[_0x74ac('0x31')][_0x74ac('0x4f')]){_0x35b316[_0x74ac('0x50')]=[{'all':!![]}];}return db[_0x74ac('0x2b')][_0x74ac('0x51')](_0x35b316);})[_0x74ac('0x24')](function(_0x5bffe8){_0x3d1e00[_0x74ac('0x52')]=_0x5bffe8;return _0x3d1e00;})[_0x74ac('0x24')](respondWithFilteredResult(_0x42242e,_0x35b316))['catch'](handleError(_0x42242e,null));};exports['show']=function(_0x4edab2,_0x1d9414){var _0x5c2445={'raw':!![],'where':{'id':_0x4edab2[_0x74ac('0x53')]['id']}},_0x19db4a={};_0x19db4a[_0x74ac('0x30')]=_[_0x74ac('0x32')](db[_0x74ac('0x2b')][_0x74ac('0x2c')]);_0x19db4a[_0x74ac('0x31')]=_[_0x74ac('0x32')](_0x4edab2[_0x74ac('0x31')]);_0x19db4a['filters']=_[_0x74ac('0x33')](_0x19db4a[_0x74ac('0x30')],_0x19db4a['query']);_0x5c2445[_0x74ac('0x44')]=_[_0x74ac('0x33')](_0x19db4a['model'],qs['fields'](_0x4edab2[_0x74ac('0x31')][_0x74ac('0x45')]));_0x5c2445[_0x74ac('0x44')]=_0x5c2445[_0x74ac('0x44')][_0x74ac('0x46')]?_0x5c2445[_0x74ac('0x44')]:_0x19db4a[_0x74ac('0x30')];if(_0x4edab2[_0x74ac('0x31')][_0x74ac('0x4f')]){_0x5c2445[_0x74ac('0x50')]=[{'all':!![]}];}_0x5c2445=_[_0x74ac('0x4d')]({},_0x5c2445,_0x4edab2[_0x74ac('0x54')]);return db[_0x74ac('0x2b')][_0x74ac('0x55')](_0x5c2445)[_0x74ac('0x24')](handleEntityNotFound(_0x1d9414,null))['then'](respondWithResult(_0x1d9414,null))[_0x74ac('0x56')](handleError(_0x1d9414,null));};exports[_0x74ac('0x57')]=function(_0x35ec6d,_0x1aa957){return db[_0x74ac('0x2b')][_0x74ac('0x57')](_0x35ec6d['body'],{})[_0x74ac('0x24')](respondWithResult(_0x1aa957,0xc9))[_0x74ac('0x56')](handleError(_0x1aa957,null));};exports['update']=function(_0x5da9ad,_0x46a028){if(_0x5da9ad['body']['id']){delete _0x5da9ad[_0x74ac('0x58')]['id'];}return db[_0x74ac('0x2b')][_0x74ac('0x55')]({'where':{'id':_0x5da9ad[_0x74ac('0x53')]['id']}})[_0x74ac('0x24')](handleEntityNotFound(_0x46a028,null))[_0x74ac('0x24')](saveUpdates(_0x5da9ad[_0x74ac('0x58')],null))[_0x74ac('0x24')](respondWithResult(_0x46a028,null))['catch'](handleError(_0x46a028,null));};exports[_0x74ac('0x59')]=function(_0x867837,_0x3f2694){return db[_0x74ac('0x2b')][_0x74ac('0x59')]()['then'](respondWithResult(_0x3f2694,null))['catch'](handleError(_0x3f2694,null));};exports[_0x74ac('0x5a')]=function(_0xd912eb,_0x54bd0c){var _0x118986;return db[_0x74ac('0x2b')][_0x74ac('0x55')]({'where':{'id':_0xd912eb[_0x74ac('0x53')]['id']}})[_0x74ac('0x24')](handleEntityNotFound(_0x54bd0c,null))['then'](function(_0x1298e7){if(_0x1298e7){return _0x1298e7[_0x74ac('0x5a')]()[_0x74ac('0x24')](function(_0x24f500){return _0x24f500;});}})[_0x74ac('0x24')](function(_0x5492e1){_0x118986=_0x5492e1;if(_0x5492e1){if(_0x5492e1['VoiceQueueId']||_0x5492e1['CampaignId']){return db[_0x5492e1['VoiceQueueId']?_0x74ac('0x5b'):_0x74ac('0x5c')]['find']({'where':{'id':_0x5492e1[_0x74ac('0x5d')]?_0x5492e1['VoiceQueueId']:_0x5492e1[_0x74ac('0x5e')]},'attributes':['id',_0x74ac('0x27')],'raw':!![]});}}})['then'](function(_0x4d03e7){var _0x565a93={};if(_0x4d03e7){_[_0x74ac('0x4d')](_0x565a93,_['omit'](_0x118986[_0x74ac('0x5f')],['createdAt',_0x74ac('0x60'),'id']));_0x565a93['state']=0x15;_0x565a93['statedesc']=_0x74ac('0x61');_0x565a93['campaign']=_0x4d03e7['name'];_0x565a93[_0x74ac('0x62')]=_0xd912eb['user'][_0x74ac('0x27')];_0x565a93[_0x74ac('0x63')]=_0xd912eb[_0x74ac('0x64')]['id'];_0x565a93[_0x74ac('0x61')]=!![];_0x565a93[_0x74ac('0x65')]=moment()[_0x74ac('0x66')](_0x74ac('0x67'));_0x565a93[_0x74ac('0x68')]=_0x118986[_0x74ac('0x69')];_0x565a93[_0x74ac('0x6a')]=_0x118986[_0x74ac('0x5d')]?_0x74ac('0x6b'):_0x74ac('0x6c');return db[_0x74ac('0x6d')]['find']({'where':{'id':_0x565a93['ContactId']},'attributes':[_0x74ac('0x6e'),_0x74ac('0x6f')]})[_0x74ac('0x24')](function(_0x47fc67){if(!_[_0x74ac('0x70')](_0x54bd0c)&&!_[_0x74ac('0x70')](_0x47fc67[_0x74ac('0x6e')])){_0x565a93['calleridname']=_0x47fc67[_0x74ac('0x6e')];if(!_['isNil'](_0x47fc67[_0x74ac('0x6f')])){_0x565a93[_0x74ac('0x71')]+='\x20'+_0x47fc67[_0x74ac('0x6f')];}}})[_0x74ac('0x72')](function(){return db[_0x74ac('0x73')][_0x74ac('0x57')](_0x565a93);});}})[_0x74ac('0x24')](function(){return _0x54bd0c['status'](0xcc)['end']();})['catch'](handleError(_0x54bd0c,null));};exports[_0x74ac('0x74')]=function(_0x3fbffb,_0x195bcf,_0x4847f4){var _0x5e4273=[];return db[_0x74ac('0x6d')]['describe']()[_0x74ac('0x24')](function(_0x252432){_0x5e4273=_[_0x74ac('0x32')](_0x252432);return _0x3fbffb['user']['getVoiceQueues']({'where':{'type':_0x74ac('0x75'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x74ac('0x76'),'dialPreviewAutoRecallMe'],'raw':!![]});})['then'](function(_0x2c6eb7){if(_0x2c6eb7&&_0x2c6eb7[_0x74ac('0x46')]){return db[_0x74ac('0x77')][_0x74ac('0x78')](function(_0x92500e){var _0x17c268={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x74ac('0x66')](_0x74ac('0x67'))},'VoiceQueueId':{'$in':_['map'](_0x2c6eb7,'id')},'$or':[{'UserId':null},{'UserId':_0x3fbffb[_0x74ac('0x64')]['id']}]};var _0x3162cb={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2c6eb7)[_0x74ac('0x4c')]([_0x74ac('0x79'),0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x3fbffb['user']['id']}]};var _0x5dc051={'$or':[_0x17c268,_0x3162cb]};var _0xebf9f3=[];if(_0x3fbffb['body'][_0x74ac('0x7a')]&&_0x3fbffb[_0x74ac('0x58')][_0x74ac('0x7a')]===_0x74ac('0x7b')){if(!_[_0x74ac('0x7c')](_0x3fbffb[_0x74ac('0x58')][_0x74ac('0x7d')])){_0x5dc051['id']={'$in':_0x3fbffb[_0x74ac('0x58')][_0x74ac('0x7d')]};}_0xebf9f3=[['priority',_0x74ac('0x7e')],[_0x74ac('0x7f'),_0x2c6eb7[0x0][_0x74ac('0x76')]==='ASC'?'DESC':'ASC'],db[_0x74ac('0x77')][_0x74ac('0x80')](_0x74ac('0x81')),['id',_0x74ac('0x82')]];}else{if(!_[_0x74ac('0x7c')](_0x3fbffb['body'][_0x74ac('0x7d')])){_0x5dc051['id']={'$notIn':_0x3fbffb[_0x74ac('0x58')][_0x74ac('0x7d')]};}_0xebf9f3=[[_0x74ac('0x83'),_0x74ac('0x82')],[_0x74ac('0x7f'),_0x2c6eb7[0x0]['dialOrderByScheduledAt']],db[_0x74ac('0x77')][_0x74ac('0x80')](_0x74ac('0x84')),['id',_0x74ac('0x7e')]];}return db[_0x74ac('0x2b')][_0x74ac('0x85')]({'attributes':['id',_0x74ac('0x86'),_0x74ac('0x87')],'where':_0x5dc051,'order':_0xebf9f3,'transaction':_0x92500e,'lock':_0x92500e[_0x74ac('0x88')][_0x74ac('0x89')],'include':[{'model':db[_0x74ac('0x6d')],'as':_0x74ac('0x8a'),'attributes':_0x5e4273,'include':[{'model':db[_0x74ac('0x8b')],'as':_0x74ac('0x8c'),'attributes':['id',_0x74ac('0x27')]}]},{'model':db[_0x74ac('0x8d')],'as':_0x74ac('0x8e'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x74ac('0x8f'),'attributes':['id',_0x74ac('0x27'),'dialActive']}]})[_0x74ac('0x24')](function(_0x2265e9){if(_0x2265e9){return _0x2265e9[_0x74ac('0x23')]({'UserId':_0x3fbffb[_0x74ac('0x64')]['id']},{'transaction':_0x92500e});}});});}})[_0x74ac('0x24')](handleEntityNotFound(_0x195bcf,null))[_0x74ac('0x24')](respondWithResult(_0x195bcf,null))['catch'](handleError(_0x195bcf,null));};exports[_0x74ac('0x90')]=function(_0x59eaf0,_0x337028,_0x426241){return _0x59eaf0[_0x74ac('0x64')][_0x74ac('0x91')]({'where':{'type':_0x74ac('0x75'),'dialActive':!![],'dialMethod':_0x74ac('0x92')},'attributes':['id'],'raw':!![]})[_0x74ac('0x24')](function(_0x555f78){if(_0x555f78&&_0x555f78['length']){return db[_0x74ac('0x2b')][_0x74ac('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x74ac('0x66')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x555f78,'id')},'$or':[{'UserId':null},{'UserId':_0x59eaf0[_0x74ac('0x64')]['id']}]}});}return 0x0;})[_0x74ac('0x24')](function(_0x52a122){if(!_[_0x74ac('0x70')](_0x52a122)&&_[_0x74ac('0x93')](_0x52a122)){return _0x337028[_0x74ac('0x19')](0xc8)[_0x74ac('0x21')]({'contacts':_0x52a122});}else{logger[_0x74ac('0x25')](_0x74ac('0x94'),_0x74ac('0x90'),0x194,'entity\x20not\x20found');_0x337028[_0x74ac('0x18')](0x194);}})[_0x74ac('0x56')](handleError(_0x337028,null));};
\ No newline at end of file
index e704c6e..86a2c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['phone','priority','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','scheduledat'];(function(_0x3108d9,_0xf08d6){var _0x1455e6=function(_0xfd5906){while(--_0xfd5906){_0x3108d9['push'](_0x3108d9['shift']());}};_0x1455e6(++_0xf08d6);}(_0x814b,0x1a2));var _0xb814=function(_0x5e8c0f,_0x1f20d9){_0x5e8c0f=_0x5e8c0f-0x0;var _0x568dbe=_0x814b[_0x5e8c0f];return _0x568dbe;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]},{'name':_0xb814('0xe'),'fields':[_0xb814('0xe')]},{'name':_0xb814('0xf'),'fields':[_0xb814('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x335db2,_0x3e70f6){var _0x410499=function(_0x47a829){while(--_0x47a829){_0x335db2['push'](_0x335db2['shift']());}};_0x410499(++_0x3e70f6);}(_0x2ef3,0xba));var _0x32ef=function(_0x1881aa,_0x315a16){_0x1881aa=_0x1881aa-0x0;var _0x4ce6cc=_0x2ef3[_0x1881aa];return _0x4ce6cc;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]},{'name':_0x32ef('0xe'),'fields':[_0x32ef('0xe')]},{'name':_0x32ef('0xf'),'fields':[_0x32ef('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index de12d0b..d2164ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe51f=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CmHopper','findAll','raw','options','where','attributes','limit','include','map','model','GetCmHopper','ShowCmHopper','find','create','CreateCmHopper','UpdateCmHopper','update','body','DestroyCmHopper','describe','sequelize','transaction','order','UPDATE','CmContact','Contact','Agent','voicePause','UserId','push','all','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','destroy','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','LOCK','length','GetCmHopperPreview','lodash','bluebird','ioredis'];(function(_0x47c167,_0x130ba6){var _0x113f55=function(_0x3082bb){while(--_0x3082bb){_0x47c167['push'](_0x47c167['shift']());}};_0x113f55(++_0x130ba6);}(_0xe51f,0xcc));var _0xfe51=function(_0x51a93b,_0x3fe7af){_0x51a93b=_0x51a93b-0x0;var _0x47f5ff=_0xe51f[_0x51a93b];return _0x47f5ff;};'use strict';var _=require(_0xfe51('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfe51('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe51('0x2'));var db=require(_0xfe51('0x3'))['db'];var utils=require(_0xfe51('0x4'));var logger=require('../../config/logger')(_0xfe51('0x5'));var config=require(_0xfe51('0x6'));var jayson=require(_0xfe51('0x7'));var client=jayson[_0xfe51('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25f2f6,_0x212a7b,_0x21a68e){return new BPromise(function(_0x42294c,_0x379fe8){return client[_0xfe51('0x9')](_0x25f2f6,_0x21a68e)[_0xfe51('0xa')](function(_0xf5ec9c){logger['info'](_0xfe51('0xb'),_0x212a7b,_0xfe51('0xc'));logger[_0xfe51('0xd')](_0xfe51('0xe'),_0x212a7b,'request\x20sent',JSON[_0xfe51('0xf')](_0xf5ec9c));if(_0xf5ec9c[_0xfe51('0x10')]){if(_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x11')]===0x1f4){logger[_0xfe51('0x10')](_0xfe51('0xb'),_0x212a7b,_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);return _0x379fe8(_0xf5ec9c[_0xfe51('0x10')]['message']);}logger[_0xfe51('0x10')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);return _0x42294c(_0xf5ec9c[_0xfe51('0x10')][_0xfe51('0x12')]);}else{logger[_0xfe51('0x13')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0xfe51('0xc'));_0x42294c(_0xf5ec9c['result'][_0xfe51('0x12')]);}})[_0xfe51('0x14')](function(_0x5d7372){logger[_0xfe51('0x10')]('CmHopper,\x20%s,\x20%s',_0x212a7b,_0x5d7372);_0x379fe8(_0x5d7372);});});}exports['GetCmHopper']=function(_0x79db08){var _0x320b40=this;return new Promise(function(_0x869b9f,_0x408e94){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'raw':_0x79db08['options']?_0x79db08['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'include':_0x79db08[_0xfe51('0x18')]?_0x79db08[_0xfe51('0x18')][_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x79db08['options'][_0xfe51('0x1c')],function(_0x1afb87){return{'model':db[_0x1afb87[_0xfe51('0x1e')]],'as':_0x1afb87['as'],'attributes':_0x1afb87['attributes'],'include':_0x1afb87[_0xfe51('0x1c')]?_['map'](_0x1afb87['include'],function(_0x9599c4){return{'model':db[_0x9599c4['model']],'as':_0x9599c4['as'],'attributes':_0x9599c4[_0xfe51('0x1a')],'include':_0x9599c4[_0xfe51('0x1c')]?_['map'](_0x9599c4[_0xfe51('0x1c')],function(_0x5d953f){return{'model':db[_0x5d953f[_0xfe51('0x1e')]],'as':_0x5d953f['as'],'attributes':_0x5d953f[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f2295){logger[_0xfe51('0x13')](_0xfe51('0x1f'),_0x79db08);logger['debug'](_0xfe51('0x1f'),_0x79db08,JSON[_0xfe51('0xf')](_0x1f2295));_0x869b9f(_0x1f2295);})[_0xfe51('0x14')](function(_0x550890){logger[_0xfe51('0x10')](_0xfe51('0x1f'),_0x550890['message'],_0x79db08);_0x408e94(_0x320b40[_0xfe51('0x10')](0x1f4,_0x550890[_0xfe51('0x12')]));});});};exports[_0xfe51('0x20')]=function(_0x3e2255){var _0x3269ef=this;return new Promise(function(_0x28d5f5,_0x584387){return db[_0xfe51('0x15')][_0xfe51('0x21')]({'raw':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'include':_0x3e2255[_0xfe51('0x18')]?_0x3e2255[_0xfe51('0x18')]['include']?_[_0xfe51('0x1d')](_0x3e2255[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0x178295){return{'model':db[_0x178295['model']],'as':_0x178295['as'],'attributes':_0x178295['attributes'],'include':_0x178295[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x178295[_0xfe51('0x1c')],function(_0x4804db){return{'model':db[_0x4804db[_0xfe51('0x1e')]],'as':_0x4804db['as'],'attributes':_0x4804db[_0xfe51('0x1a')],'include':_0x4804db['include']?_[_0xfe51('0x1d')](_0x4804db[_0xfe51('0x1c')],function(_0x38c0e4){return{'model':db[_0x38c0e4['model']],'as':_0x38c0e4['as'],'attributes':_0x38c0e4[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xad6edd){logger[_0xfe51('0x13')]('ShowCmHopper',_0x3e2255);logger[_0xfe51('0xd')](_0xfe51('0x20'),_0x3e2255,JSON[_0xfe51('0xf')](_0xad6edd));_0x28d5f5(_0xad6edd);})[_0xfe51('0x14')](function(_0x502803){logger[_0xfe51('0x10')]('ShowCmHopper',_0x502803['message'],_0x3e2255);_0x584387(_0x3269ef[_0xfe51('0x10')](0x1f4,_0x502803[_0xfe51('0x12')]));});});};exports['CreateCmHopper']=function(_0x2fae42){var _0xdd4485=this;return new Promise(function(_0xd55eac,_0x200e6e){return db[_0xfe51('0x15')][_0xfe51('0x22')](_0x2fae42['body'],{'raw':_0x2fae42[_0xfe51('0x18')]?_0x2fae42[_0xfe51('0x18')][_0xfe51('0x17')]===undefined?!![]:![]:!![]})[_0xfe51('0xa')](function(_0x4970a5){logger[_0xfe51('0x13')](_0xfe51('0x23'),_0x2fae42);logger[_0xfe51('0xd')](_0xfe51('0x23'),_0x2fae42,JSON['stringify'](_0x4970a5));_0xd55eac(_0x4970a5);})[_0xfe51('0x14')](function(_0x3bc8c8){logger[_0xfe51('0x10')](_0xfe51('0x23'),_0x3bc8c8[_0xfe51('0x12')],_0x2fae42);_0x200e6e(_0xdd4485[_0xfe51('0x10')](0x1f4,_0x3bc8c8[_0xfe51('0x12')]));});});};exports[_0xfe51('0x24')]=function(_0x56b3bb){var _0x4e3300=this;return new Promise(function(_0x54faf2,_0x4cc6e2){return db[_0xfe51('0x15')][_0xfe51('0x25')](_0x56b3bb[_0xfe51('0x26')],{'raw':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb[_0xfe51('0x18')]['where']||null:null,'attributes':_0x56b3bb[_0xfe51('0x18')]?_0x56b3bb[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x56b3bb['options']?_0x56b3bb[_0xfe51('0x18')]['limit']||null:null})[_0xfe51('0xa')](function(_0x3eba8e){logger[_0xfe51('0x13')](_0xfe51('0x24'),_0x56b3bb);logger['debug'](_0xfe51('0x24'),_0x56b3bb,JSON['stringify'](_0x3eba8e));_0x54faf2(_0x3eba8e);})['catch'](function(_0x333b0e){logger[_0xfe51('0x10')](_0xfe51('0x24'),_0x333b0e[_0xfe51('0x12')],_0x56b3bb);_0x4cc6e2(_0x4e3300['error'](0x1f4,_0x333b0e['message']));});});};exports[_0xfe51('0x27')]=function(_0x41ebe5){var _0x21a29b=this;return new Promise(function(_0x1a8f0d,_0x4b1136){return db['CmHopper']['destroy']({'where':_0x41ebe5[_0xfe51('0x18')]?_0x41ebe5['options'][_0xfe51('0x19')]||null:null})[_0xfe51('0xa')](function(_0x159790){logger[_0xfe51('0x13')](_0xfe51('0x27'),_0x41ebe5);logger['debug']('DestroyCmHopper',_0x41ebe5,JSON['stringify'](_0x159790));_0x1a8f0d(_0x159790);})['catch'](function(_0x2bcc22){logger[_0xfe51('0x10')](_0xfe51('0x27'),_0x2bcc22[_0xfe51('0x12')],_0x41ebe5);_0x4b1136(_0x21a29b[_0xfe51('0x10')](0x1f4,_0x2bcc22[_0xfe51('0x12')]));});});};exports['GetContactDialer']=function(_0xcb3dfc){var _0x5b44b4=this;return new Promise(function(_0x42087b,_0x228aad){return db['CmContact'][_0xfe51('0x28')]()[_0xfe51('0xa')](function(_0x51ba9b){return db[_0xfe51('0x29')][_0xfe51('0x2a')](function(_0x3ea055){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'where':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc['options'][_0xfe51('0x1a')]||null:null,'limit':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'order':_0xcb3dfc[_0xfe51('0x18')]?_0xcb3dfc[_0xfe51('0x18')][_0xfe51('0x2b')]||null:null,'transaction':_0x3ea055,'lock':_0x3ea055['LOCK'][_0xfe51('0x2c')],'include':[{'model':db[_0xfe51('0x2d')],'as':_0xfe51('0x2e'),'attributes':_['keys'](_0x51ba9b)},{'model':db['User'],'as':_0xfe51('0x2f'),'attributes':['id','name',_0xfe51('0x30')]}]})['then'](function(_0x51f090){var _0x785c59=[];var _0x255c90=[];for(var _0x4d2231=0x0;_0x4d2231<_0x51f090['length'];_0x4d2231+=0x1){var _0x2e3d93=_0x51f090[_0x4d2231][_0xfe51('0x31')];if(_0x2e3d93===null){_0x785c59[_0xfe51('0x32')](_0x51f090[_0x4d2231]['update'](_0xcb3dfc[_0xfe51('0x26')],{'transaction':_0x3ea055}));}else if(!_0x255c90['includes'](_0x2e3d93)){_0x255c90[_0xfe51('0x32')](_0x2e3d93);_0x785c59['push'](_0x51f090[_0x4d2231]['update'](_0xcb3dfc['body'],{'transaction':_0x3ea055}));}}return BPromise[_0xfe51('0x33')](_0x785c59);});})[_0xfe51('0xa')](function(_0x57284a){logger[_0xfe51('0x13')]('GetContactDialer',_0xcb3dfc);logger[_0xfe51('0xd')](_0xfe51('0x34'),_0xcb3dfc,JSON['stringify'](_0x57284a));_0x42087b(_0x57284a);})[_0xfe51('0x14')](function(_0x8c66c3){logger[_0xfe51('0x10')](_0xfe51('0x34'),_0x8c66c3[_0xfe51('0x12')],_0xcb3dfc);_0x228aad(_0x5b44b4[_0xfe51('0x10')](0x1f4,_0x8c66c3['message']));});});});};exports[_0xfe51('0x35')]=function(_0x963883){var _0xc5c412=this;return new Promise(function(_0x3e4af2,_0x230fa5){return db['sequelize'][_0xfe51('0x2a')](function(_0x34940f){return db[_0xfe51('0x36')]['create'](_0x963883[_0xfe51('0x26')],{'raw':_0x963883[_0xfe51('0x18')]?_0x963883[_0xfe51('0x18')]['raw']===undefined?!![]:![]:!![],'transaction':_0x34940f})[_0xfe51('0xa')](function(){return db[_0xfe51('0x15')][_0xfe51('0x37')]({'where':_0x963883[_0xfe51('0x18')]?_0x963883[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'transaction':_0x34940f});});})['then'](function(_0x3cb017){logger['info']('MoveContactManagedDialer',_0x963883);logger['debug'](_0xfe51('0x35'),_0x963883,JSON[_0xfe51('0xf')](_0x3cb017));_0x3e4af2(_0x3cb017);})[_0xfe51('0x14')](function(_0x30547c){logger[_0xfe51('0x10')](_0xfe51('0x35'),_0x30547c[_0xfe51('0x12')],_0x963883);_0x230fa5(_0xc5c412[_0xfe51('0x10')](0x1f4,_0x30547c['message']));});});};exports['CountReScheduled']=function(_0x50be5e){var _0x1c91a9=this;return new Promise(function(_0x514aad,_0xcaad07){return db[_0xfe51('0x15')][_0xfe51('0x16')]({'raw':_0x50be5e[_0xfe51('0x18')]?_0x50be5e['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x50be5e['options']?_0x50be5e[_0xfe51('0x18')]['where']||null:null,'attributes':[[db[_0xfe51('0x29')]['fn'](_0xfe51('0x38'),db[_0xfe51('0x29')]['fn']('IF',db[_0xfe51('0x29')][_0xfe51('0x39')](_0xfe51('0x3a')+util[_0xfe51('0x3b')](_0xfe51('0x3c'),moment()[_0xfe51('0x3b')](_0xfe51('0x3d')))+_0xfe51('0x3e')))),_0xfe51('0x3f')]]})[_0xfe51('0xa')](function(_0x1ec3e2){logger[_0xfe51('0x13')](_0xfe51('0x40'),_0x50be5e);logger[_0xfe51('0xd')]('CountReScheduled',_0x50be5e,JSON[_0xfe51('0xf')](_0x1ec3e2));_0x514aad(_0x1ec3e2);})[_0xfe51('0x14')](function(_0x578211){logger[_0xfe51('0x10')](_0xfe51('0x40'),_0x578211[_0xfe51('0x12')],_0x50be5e);_0xcaad07(_0x1c91a9['error'](0x1f4,_0x578211[_0xfe51('0x12')]));});});};exports[_0xfe51('0x41')]=function(_0x4bb774){var _0x2748d3=this;return new Promise(function(_0x384f25,_0x572b46){return db['CmContact']['describe']()[_0xfe51('0xa')](function(_0x259066){return db[_0xfe51('0x29')]['transaction'](function(_0x2956de){return db[_0xfe51('0x15')]['findAll']({'where':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':0x1,'order':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')]['order']||null:null,'group':db[_0xfe51('0x15')]['UserId'],'transaction':_0x2956de,'lock':_0x2956de[_0xfe51('0x42')][_0xfe51('0x2c')],'include':_0x4bb774[_0xfe51('0x18')]?_0x4bb774[_0xfe51('0x18')]['include']?_['map'](_0x4bb774[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0x9c77a4){return{'model':db[_0x9c77a4[_0xfe51('0x1e')]],'as':_0x9c77a4['as'],'attributes':_0x9c77a4[_0xfe51('0x1a')],'include':_0x9c77a4[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x9c77a4[_0xfe51('0x1c')],function(_0x551b00){return{'model':db[_0x551b00[_0xfe51('0x1e')]],'as':_0x551b00['as'],'attributes':_0x551b00[_0xfe51('0x1a')],'include':_0x551b00[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x551b00[_0xfe51('0x1c')],function(_0x4e3820){return{'model':db[_0x4e3820['model']],'as':_0x4e3820['as'],'attributes':_0x4e3820[_0xfe51('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1602e9){var _0x14df1b=[];for(var _0x5e512a=0x0;_0x5e512a<_0x1602e9[_0xfe51('0x43')];_0x5e512a+=0x1){_0x14df1b[_0xfe51('0x32')](_0x1602e9[_0x5e512a][_0xfe51('0x25')](_0x4bb774[_0xfe51('0x26')],{'transaction':_0x2956de}));}return BPromise[_0xfe51('0x33')](_0x14df1b);});})[_0xfe51('0xa')](function(_0x5d781a){logger[_0xfe51('0x13')](_0xfe51('0x41'),_0x4bb774);logger[_0xfe51('0xd')](_0xfe51('0x41'),_0x4bb774,JSON[_0xfe51('0xf')](_0x5d781a));_0x384f25(_0x5d781a);})[_0xfe51('0x14')](function(_0x196d6a){logger[_0xfe51('0x10')](_0xfe51('0x41'),_0x196d6a[_0xfe51('0x12')],_0x4bb774);_0x572b46(_0x2748d3[_0xfe51('0x10')](0x1f4,_0x196d6a[_0xfe51('0x12')]));});});});};exports[_0xfe51('0x44')]=function(_0x5eb79f){var _0x169212=this;return new Promise(function(_0x59944e,_0x29b333){db[_0xfe51('0x2d')][_0xfe51('0x28')]()[_0xfe51('0xa')](function(_0x1da18e){return db[_0xfe51('0x15')]['findAll']({'raw':_0x5eb79f['options']?_0x5eb79f['options'][_0xfe51('0x17')]===undefined?!![]:![]:!![],'where':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x19')]||null:null,'attributes':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1a')]||null:null,'limit':_0x5eb79f['options']?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1b')]||null:null,'include':_0x5eb79f[_0xfe51('0x18')]?_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x5eb79f[_0xfe51('0x18')][_0xfe51('0x1c')],function(_0xf4dc8e){return{'model':db[_0xf4dc8e['model']],'as':_0xf4dc8e['as'],'attributes':_0xf4dc8e['as']==='Contact'?_['keys'](_0x1da18e):_0xf4dc8e[_0xfe51('0x1a')],'include':_0xf4dc8e['include']?_['map'](_0xf4dc8e['include'],function(_0x333f41){return{'model':db[_0x333f41[_0xfe51('0x1e')]],'as':_0x333f41['as'],'attributes':_0x333f41[_0xfe51('0x1a')],'include':_0x333f41[_0xfe51('0x1c')]?_[_0xfe51('0x1d')](_0x333f41[_0xfe51('0x1c')],function(_0x6caa0e){return{'model':db[_0x6caa0e[_0xfe51('0x1e')]],'as':_0x6caa0e['as'],'attributes':_0x6caa0e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c542e){logger[_0xfe51('0x13')](_0xfe51('0x1f'),_0x5eb79f);logger[_0xfe51('0xd')](_0xfe51('0x1f'),_0x5eb79f,JSON['stringify'](_0x5c542e));_0x59944e(_0x5c542e);})['catch'](function(_0x5298e3){logger[_0xfe51('0x10')](_0xfe51('0x1f'),_0x5298e3[_0xfe51('0x12')],_0x5eb79f);_0x29b333(_0x169212['error'](0x1f4,_0x5298e3[_0xfe51('0x12')]));});});});};
\ No newline at end of file
+var _0xeadb=['UserId','push','all','CmHopperFinal','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','describe','UPDATE','GetCmHopperPreview','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopper,\x20%s,\x20%s','message','result','findAll','options','raw','where','attributes','include','map','model','GetCmHopper','CmHopper','find','then','ShowCmHopper','catch','CreateCmHopper','create','body','UpdateCmHopper','update','DestroyCmHopper','destroy','GetContactDialer','CmContact','sequelize','transaction','limit','order','LOCK','Contact','keys','User','Agent','name','voicePause','length'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xeadb,0x18d));var _0xbead=function(_0x2f477b,_0x2d8238){_0x2f477b=_0x2f477b-0x0;var _0x3876a6=_0xeadb[_0x2f477b];return _0x3876a6;};'use strict';var _=require(_0xbead('0x0'));var util=require(_0xbead('0x1'));var moment=require(_0xbead('0x2'));var BPromise=require('bluebird');var rs=require(_0xbead('0x3'));var fs=require('fs');var Redis=require(_0xbead('0x4'));var db=require(_0xbead('0x5'))['db'];var utils=require(_0xbead('0x6'));var logger=require(_0xbead('0x7'))(_0xbead('0x8'));var config=require(_0xbead('0x9'));var jayson=require(_0xbead('0xa'));var client=jayson[_0xbead('0xb')][_0xbead('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x52381a,_0x31fa4d,_0x5bceec){return new BPromise(function(_0x42df3d,_0x49e724){return client[_0xbead('0xd')](_0x52381a,_0x5bceec)['then'](function(_0x4da31c){logger[_0xbead('0xe')]('CmHopper,\x20%s,\x20%s',_0x31fa4d,_0xbead('0xf'));logger[_0xbead('0x10')](_0xbead('0x11'),_0x31fa4d,_0xbead('0xf'),JSON[_0xbead('0x12')](_0x4da31c));if(_0x4da31c[_0xbead('0x13')]){if(_0x4da31c[_0xbead('0x13')][_0xbead('0x14')]===0x1f4){logger[_0xbead('0x13')](_0xbead('0x15'),_0x31fa4d,_0x4da31c[_0xbead('0x13')][_0xbead('0x16')]);return _0x49e724(_0x4da31c[_0xbead('0x13')][_0xbead('0x16')]);}logger[_0xbead('0x13')](_0xbead('0x15'),_0x31fa4d,_0x4da31c[_0xbead('0x13')][_0xbead('0x16')]);return _0x42df3d(_0x4da31c['error'][_0xbead('0x16')]);}else{logger[_0xbead('0xe')](_0xbead('0x15'),_0x31fa4d,_0xbead('0xf'));_0x42df3d(_0x4da31c[_0xbead('0x17')][_0xbead('0x16')]);}})['catch'](function(_0x24c84b){logger[_0xbead('0x13')](_0xbead('0x15'),_0x31fa4d,_0x24c84b);_0x49e724(_0x24c84b);});});}exports['GetCmHopper']=function(_0x53a320){var _0x12b76e=this;return new Promise(function(_0x52d440,_0x4372f2){return db['CmHopper'][_0xbead('0x18')]({'raw':_0x53a320[_0xbead('0x19')]?_0x53a320['options'][_0xbead('0x1a')]===undefined?!![]:![]:!![],'where':_0x53a320[_0xbead('0x19')]?_0x53a320[_0xbead('0x19')][_0xbead('0x1b')]||null:null,'attributes':_0x53a320[_0xbead('0x19')]?_0x53a320['options'][_0xbead('0x1c')]||null:null,'limit':_0x53a320[_0xbead('0x19')]?_0x53a320[_0xbead('0x19')]['limit']||null:null,'include':_0x53a320[_0xbead('0x19')]?_0x53a320[_0xbead('0x19')][_0xbead('0x1d')]?_[_0xbead('0x1e')](_0x53a320[_0xbead('0x19')][_0xbead('0x1d')],function(_0x3ddedc){return{'model':db[_0x3ddedc[_0xbead('0x1f')]],'as':_0x3ddedc['as'],'attributes':_0x3ddedc[_0xbead('0x1c')],'include':_0x3ddedc['include']?_[_0xbead('0x1e')](_0x3ddedc['include'],function(_0x4f2f86){return{'model':db[_0x4f2f86[_0xbead('0x1f')]],'as':_0x4f2f86['as'],'attributes':_0x4f2f86[_0xbead('0x1c')],'include':_0x4f2f86['include']?_[_0xbead('0x1e')](_0x4f2f86[_0xbead('0x1d')],function(_0x98319a){return{'model':db[_0x98319a[_0xbead('0x1f')]],'as':_0x98319a['as'],'attributes':_0x98319a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ce936){logger[_0xbead('0xe')](_0xbead('0x20'),_0x53a320);logger[_0xbead('0x10')](_0xbead('0x20'),_0x53a320,JSON[_0xbead('0x12')](_0x3ce936));_0x52d440(_0x3ce936);})['catch'](function(_0x333546){logger['error'](_0xbead('0x20'),_0x333546['message'],_0x53a320);_0x4372f2(_0x12b76e[_0xbead('0x13')](0x1f4,_0x333546[_0xbead('0x16')]));});});};exports['ShowCmHopper']=function(_0x32c379){var _0x167cf0=this;return new Promise(function(_0x5d526d,_0x5a26e0){return db[_0xbead('0x21')][_0xbead('0x22')]({'raw':_0x32c379['options']?_0x32c379[_0xbead('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x32c379['options']?_0x32c379[_0xbead('0x19')]['where']||null:null,'attributes':_0x32c379[_0xbead('0x19')]?_0x32c379['options'][_0xbead('0x1c')]||null:null,'include':_0x32c379['options']?_0x32c379['options'][_0xbead('0x1d')]?_[_0xbead('0x1e')](_0x32c379[_0xbead('0x19')][_0xbead('0x1d')],function(_0x5cba8c){return{'model':db[_0x5cba8c[_0xbead('0x1f')]],'as':_0x5cba8c['as'],'attributes':_0x5cba8c['attributes'],'include':_0x5cba8c['include']?_[_0xbead('0x1e')](_0x5cba8c[_0xbead('0x1d')],function(_0x13e5b3){return{'model':db[_0x13e5b3[_0xbead('0x1f')]],'as':_0x13e5b3['as'],'attributes':_0x13e5b3[_0xbead('0x1c')],'include':_0x13e5b3[_0xbead('0x1d')]?_[_0xbead('0x1e')](_0x13e5b3[_0xbead('0x1d')],function(_0xdd8a80){return{'model':db[_0xdd8a80[_0xbead('0x1f')]],'as':_0xdd8a80['as'],'attributes':_0xdd8a80[_0xbead('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xbead('0x23')](function(_0x2665b5){logger['info'](_0xbead('0x24'),_0x32c379);logger[_0xbead('0x10')](_0xbead('0x24'),_0x32c379,JSON[_0xbead('0x12')](_0x2665b5));_0x5d526d(_0x2665b5);})[_0xbead('0x25')](function(_0x27e069){logger[_0xbead('0x13')](_0xbead('0x24'),_0x27e069[_0xbead('0x16')],_0x32c379);_0x5a26e0(_0x167cf0[_0xbead('0x13')](0x1f4,_0x27e069[_0xbead('0x16')]));});});};exports[_0xbead('0x26')]=function(_0x598a3c){var _0x1a3d8a=this;return new Promise(function(_0x540941,_0x20a45a){return db[_0xbead('0x21')][_0xbead('0x27')](_0x598a3c[_0xbead('0x28')],{'raw':_0x598a3c[_0xbead('0x19')]?_0x598a3c[_0xbead('0x19')][_0xbead('0x1a')]===undefined?!![]:![]:!![]})[_0xbead('0x23')](function(_0x2bab13){logger[_0xbead('0xe')](_0xbead('0x26'),_0x598a3c);logger[_0xbead('0x10')](_0xbead('0x26'),_0x598a3c,JSON[_0xbead('0x12')](_0x2bab13));_0x540941(_0x2bab13);})[_0xbead('0x25')](function(_0x23a6dd){logger[_0xbead('0x13')]('CreateCmHopper',_0x23a6dd[_0xbead('0x16')],_0x598a3c);_0x20a45a(_0x1a3d8a[_0xbead('0x13')](0x1f4,_0x23a6dd['message']));});});};exports[_0xbead('0x29')]=function(_0x48616b){var _0x58c60f=this;return new Promise(function(_0x8df8de,_0x20cf73){return db['CmHopper'][_0xbead('0x2a')](_0x48616b[_0xbead('0x28')],{'raw':_0x48616b[_0xbead('0x19')]?_0x48616b['options'][_0xbead('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48616b[_0xbead('0x19')]?_0x48616b[_0xbead('0x19')][_0xbead('0x1b')]||null:null,'attributes':_0x48616b[_0xbead('0x19')]?_0x48616b[_0xbead('0x19')][_0xbead('0x1c')]||null:null,'limit':_0x48616b[_0xbead('0x19')]?_0x48616b[_0xbead('0x19')]['limit']||null:null})['then'](function(_0x2e26fd){logger['info']('UpdateCmHopper',_0x48616b);logger[_0xbead('0x10')](_0xbead('0x29'),_0x48616b,JSON['stringify'](_0x2e26fd));_0x8df8de(_0x2e26fd);})[_0xbead('0x25')](function(_0x242f27){logger[_0xbead('0x13')]('UpdateCmHopper',_0x242f27['message'],_0x48616b);_0x20cf73(_0x58c60f[_0xbead('0x13')](0x1f4,_0x242f27['message']));});});};exports[_0xbead('0x2b')]=function(_0x3adb65){var _0x5d74e5=this;return new Promise(function(_0x2498b1,_0x1776b9){return db['CmHopper'][_0xbead('0x2c')]({'where':_0x3adb65[_0xbead('0x19')]?_0x3adb65['options'][_0xbead('0x1b')]||null:null})[_0xbead('0x23')](function(_0x3931e1){logger[_0xbead('0xe')]('DestroyCmHopper',_0x3adb65);logger['debug']('DestroyCmHopper',_0x3adb65,JSON[_0xbead('0x12')](_0x3931e1));_0x2498b1(_0x3931e1);})[_0xbead('0x25')](function(_0x1efabb){logger[_0xbead('0x13')](_0xbead('0x2b'),_0x1efabb['message'],_0x3adb65);_0x1776b9(_0x5d74e5['error'](0x1f4,_0x1efabb[_0xbead('0x16')]));});});};exports[_0xbead('0x2d')]=function(_0x26f694){var _0x47ffcb=this;return new Promise(function(_0x34c4f1,_0x5dda94){return db[_0xbead('0x2e')]['describe']()[_0xbead('0x23')](function(_0x1b23ca){return db[_0xbead('0x2f')][_0xbead('0x30')](function(_0x42a431){return db[_0xbead('0x21')][_0xbead('0x18')]({'where':_0x26f694[_0xbead('0x19')]?_0x26f694[_0xbead('0x19')][_0xbead('0x1b')]||null:null,'attributes':_0x26f694[_0xbead('0x19')]?_0x26f694[_0xbead('0x19')][_0xbead('0x1c')]||null:null,'limit':_0x26f694[_0xbead('0x19')]?_0x26f694[_0xbead('0x19')][_0xbead('0x31')]||null:null,'order':_0x26f694[_0xbead('0x19')]?_0x26f694[_0xbead('0x19')][_0xbead('0x32')]||null:null,'transaction':_0x42a431,'lock':_0x42a431[_0xbead('0x33')]['UPDATE'],'include':[{'model':db[_0xbead('0x2e')],'as':_0xbead('0x34'),'attributes':_[_0xbead('0x35')](_0x1b23ca)},{'model':db[_0xbead('0x36')],'as':_0xbead('0x37'),'attributes':['id',_0xbead('0x38'),_0xbead('0x39')]}]})[_0xbead('0x23')](function(_0x4c3b58){var _0x48194d=[];var _0x219d18=[];for(var _0x1eeb64=0x0;_0x1eeb64<_0x4c3b58[_0xbead('0x3a')];_0x1eeb64+=0x1){var _0x50c638=_0x4c3b58[_0x1eeb64][_0xbead('0x3b')];if(_0x50c638===null){_0x48194d['push'](_0x4c3b58[_0x1eeb64]['update'](_0x26f694[_0xbead('0x28')],{'transaction':_0x42a431}));}else if(!_0x219d18['includes'](_0x50c638)){_0x219d18[_0xbead('0x3c')](_0x50c638);_0x48194d['push'](_0x4c3b58[_0x1eeb64]['update'](_0x26f694[_0xbead('0x28')],{'transaction':_0x42a431}));}}return BPromise[_0xbead('0x3d')](_0x48194d);});})[_0xbead('0x23')](function(_0x4d6088){logger['info'](_0xbead('0x2d'),_0x26f694);logger[_0xbead('0x10')](_0xbead('0x2d'),_0x26f694,JSON[_0xbead('0x12')](_0x4d6088));_0x34c4f1(_0x4d6088);})[_0xbead('0x25')](function(_0x395328){logger[_0xbead('0x13')](_0xbead('0x2d'),_0x395328['message'],_0x26f694);_0x5dda94(_0x47ffcb[_0xbead('0x13')](0x1f4,_0x395328[_0xbead('0x16')]));});});});};exports['MoveContactManagedDialer']=function(_0x13ff83){var _0x50e6b7=this;return new Promise(function(_0x1c5b5d,_0x248c66){return db[_0xbead('0x2f')][_0xbead('0x30')](function(_0x90fd12){return db[_0xbead('0x3e')]['create'](_0x13ff83['body'],{'raw':_0x13ff83[_0xbead('0x19')]?_0x13ff83[_0xbead('0x19')][_0xbead('0x1a')]===undefined?!![]:![]:!![],'transaction':_0x90fd12})[_0xbead('0x23')](function(){return db[_0xbead('0x21')]['destroy']({'where':_0x13ff83[_0xbead('0x19')]?_0x13ff83[_0xbead('0x19')]['where']||null:null,'transaction':_0x90fd12});});})[_0xbead('0x23')](function(_0x4178dd){logger['info'](_0xbead('0x3f'),_0x13ff83);logger[_0xbead('0x10')](_0xbead('0x3f'),_0x13ff83,JSON['stringify'](_0x4178dd));_0x1c5b5d(_0x4178dd);})[_0xbead('0x25')](function(_0x5013e5){logger[_0xbead('0x13')](_0xbead('0x3f'),_0x5013e5[_0xbead('0x16')],_0x13ff83);_0x248c66(_0x50e6b7[_0xbead('0x13')](0x1f4,_0x5013e5['message']));});});};exports[_0xbead('0x40')]=function(_0x23e46b){var _0x4d5c6b=this;return new Promise(function(_0x247dc3,_0x5354dd){return db[_0xbead('0x21')]['findAll']({'raw':_0x23e46b['options']?_0x23e46b[_0xbead('0x19')][_0xbead('0x1a')]===undefined?!![]:![]:!![],'where':_0x23e46b[_0xbead('0x19')]?_0x23e46b[_0xbead('0x19')]['where']||null:null,'attributes':[[db[_0xbead('0x2f')]['fn'](_0xbead('0x41'),db[_0xbead('0x2f')]['fn']('IF',db['sequelize'][_0xbead('0x42')](_0xbead('0x43')+util[_0xbead('0x44')](_0xbead('0x45'),moment()['format'](_0xbead('0x46')))+_0xbead('0x47')))),'contactsRescheduled']]})['then'](function(_0x57c785){logger[_0xbead('0xe')]('CountReScheduled',_0x23e46b);logger[_0xbead('0x10')]('CountReScheduled',_0x23e46b,JSON[_0xbead('0x12')](_0x57c785));_0x247dc3(_0x57c785);})[_0xbead('0x25')](function(_0x2683a0){logger[_0xbead('0x13')](_0xbead('0x40'),_0x2683a0[_0xbead('0x16')],_0x23e46b);_0x5354dd(_0x4d5c6b['error'](0x1f4,_0x2683a0[_0xbead('0x16')]));});});};exports[_0xbead('0x48')]=function(_0x320a68){var _0x135292=this;return new Promise(function(_0x74551f,_0x2a2236){return db[_0xbead('0x2e')][_0xbead('0x49')]()[_0xbead('0x23')](function(_0x29b31b){return db[_0xbead('0x2f')]['transaction'](function(_0x369211){return db[_0xbead('0x21')][_0xbead('0x18')]({'where':_0x320a68['options']?_0x320a68[_0xbead('0x19')][_0xbead('0x1b')]||null:null,'attributes':_0x320a68['options']?_0x320a68['options'][_0xbead('0x1c')]||null:null,'limit':0x1,'order':_0x320a68[_0xbead('0x19')]?_0x320a68[_0xbead('0x19')]['order']||null:null,'group':db[_0xbead('0x21')][_0xbead('0x3b')],'transaction':_0x369211,'lock':_0x369211[_0xbead('0x33')][_0xbead('0x4a')],'include':_0x320a68[_0xbead('0x19')]?_0x320a68['options'][_0xbead('0x1d')]?_[_0xbead('0x1e')](_0x320a68['options']['include'],function(_0x4542bd){return{'model':db[_0x4542bd['model']],'as':_0x4542bd['as'],'attributes':_0x4542bd[_0xbead('0x1c')],'include':_0x4542bd[_0xbead('0x1d')]?_['map'](_0x4542bd['include'],function(_0x203122){return{'model':db[_0x203122[_0xbead('0x1f')]],'as':_0x203122['as'],'attributes':_0x203122[_0xbead('0x1c')],'include':_0x203122[_0xbead('0x1d')]?_['map'](_0x203122[_0xbead('0x1d')],function(_0x169317){return{'model':db[_0x169317[_0xbead('0x1f')]],'as':_0x169317['as'],'attributes':_0x169317[_0xbead('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xbead('0x23')](function(_0xc17e76){var _0x537779=[];for(var _0x3be102=0x0;_0x3be102<_0xc17e76[_0xbead('0x3a')];_0x3be102+=0x1){_0x537779['push'](_0xc17e76[_0x3be102][_0xbead('0x2a')](_0x320a68['body'],{'transaction':_0x369211}));}return BPromise[_0xbead('0x3d')](_0x537779);});})[_0xbead('0x23')](function(_0xbafcf0){logger[_0xbead('0xe')](_0xbead('0x48'),_0x320a68);logger[_0xbead('0x10')](_0xbead('0x48'),_0x320a68,JSON['stringify'](_0xbafcf0));_0x74551f(_0xbafcf0);})[_0xbead('0x25')](function(_0xddcde){logger[_0xbead('0x13')]('GetContactRecallMe',_0xddcde['message'],_0x320a68);_0x2a2236(_0x135292[_0xbead('0x13')](0x1f4,_0xddcde[_0xbead('0x16')]));});});});};exports[_0xbead('0x4b')]=function(_0x357c01){var _0x13e565=this;return new Promise(function(_0x602926,_0x516c57){db[_0xbead('0x2e')]['describe']()[_0xbead('0x23')](function(_0x435c1d){return db[_0xbead('0x21')][_0xbead('0x18')]({'raw':_0x357c01['options']?_0x357c01['options'][_0xbead('0x1a')]===undefined?!![]:![]:!![],'where':_0x357c01[_0xbead('0x19')]?_0x357c01[_0xbead('0x19')]['where']||null:null,'attributes':_0x357c01[_0xbead('0x19')]?_0x357c01[_0xbead('0x19')][_0xbead('0x1c')]||null:null,'limit':_0x357c01[_0xbead('0x19')]?_0x357c01[_0xbead('0x19')]['limit']||null:null,'include':_0x357c01[_0xbead('0x19')]?_0x357c01[_0xbead('0x19')]['include']?_[_0xbead('0x1e')](_0x357c01[_0xbead('0x19')]['include'],function(_0x133fe5){return{'model':db[_0x133fe5[_0xbead('0x1f')]],'as':_0x133fe5['as'],'attributes':_0x133fe5['as']===_0xbead('0x34')?_[_0xbead('0x35')](_0x435c1d):_0x133fe5[_0xbead('0x1c')],'include':_0x133fe5['include']?_[_0xbead('0x1e')](_0x133fe5['include'],function(_0x1f6d84){return{'model':db[_0x1f6d84['model']],'as':_0x1f6d84['as'],'attributes':_0x1f6d84['attributes'],'include':_0x1f6d84[_0xbead('0x1d')]?_[_0xbead('0x1e')](_0x1f6d84['include'],function(_0x1dbd92){return{'model':db[_0x1dbd92[_0xbead('0x1f')]],'as':_0x1dbd92['as'],'attributes':_0x1dbd92[_0xbead('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xbead('0x23')](function(_0x378254){logger[_0xbead('0xe')](_0xbead('0x20'),_0x357c01);logger['debug'](_0xbead('0x20'),_0x357c01,JSON['stringify'](_0x378254));_0x602926(_0x378254);})[_0xbead('0x25')](function(_0x1e3be8){logger[_0xbead('0x13')](_0xbead('0x20'),_0x1e3be8[_0xbead('0x16')],_0x357c01);_0x516c57(_0x13e565[_0xbead('0x13')](0x1f4,_0x1e3be8[_0xbead('0x16')]));});});});};
\ No newline at end of file
index 1f42fb0..bfd0720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eaa=['/describe','/opencontacts','getOpenContacts','/:id','show','post','create','/preview','put','delete','destroy','exports','Router','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x24db2b,_0x3a5876){var _0x487ebb=function(_0x337108){while(--_0x337108){_0x24db2b['push'](_0x24db2b['shift']());}};_0x487ebb(++_0x3a5876);}(_0x7eaa,0x1a4));var _0xa7ea=function(_0x59de90,_0x2c9c1c){_0x59de90=_0x59de90-0x0;var _0x5f42b3=_0x7eaa[_0x59de90];return _0x5f42b3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa7ea('0x0')]();var fs_extra=require('fs-extra');var auth=require(_0xa7ea('0x1'));var interaction=require('../../components/interaction/service');var config=require(_0xa7ea('0x2'));var controller=require('./cmHopper.controller');router[_0xa7ea('0x3')]('/',auth[_0xa7ea('0x4')](),controller['index']);router[_0xa7ea('0x3')](_0xa7ea('0x5'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xa7ea('0x6'),auth[_0xa7ea('0x4')](),controller[_0xa7ea('0x7')]);router[_0xa7ea('0x3')](_0xa7ea('0x8'),auth[_0xa7ea('0x4')](),controller[_0xa7ea('0x9')]);router[_0xa7ea('0xa')]('/',auth[_0xa7ea('0x4')](),controller[_0xa7ea('0xb')]);router['post'](_0xa7ea('0xc'),auth[_0xa7ea('0x4')](),controller['getPreview']);router[_0xa7ea('0xd')](_0xa7ea('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xa7ea('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xa7ea('0xf')]);module[_0xa7ea('0x10')]=router;
\ No newline at end of file
+var _0xefdd=['post','create','/preview','getPreview','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show'];(function(_0x52d7bd,_0x1684dd){var _0x19fd8e=function(_0x1a1a70){while(--_0x1a1a70){_0x52d7bd['push'](_0x52d7bd['shift']());}};_0x19fd8e(++_0x1684dd);}(_0xefdd,0x175));var _0xdefd=function(_0x1be1a2,_0x411625){_0x1be1a2=_0x1be1a2-0x0;var _0x1cad40=_0xefdd[_0x1be1a2];return _0x1cad40;};'use strict';var multer=require(_0xdefd('0x0'));var util=require(_0xdefd('0x1'));var path=require(_0xdefd('0x2'));var timeout=require(_0xdefd('0x3'));var express=require(_0xdefd('0x4'));var router=express['Router']();var fs_extra=require(_0xdefd('0x5'));var auth=require(_0xdefd('0x6'));var interaction=require(_0xdefd('0x7'));var config=require(_0xdefd('0x8'));var controller=require(_0xdefd('0x9'));router[_0xdefd('0xa')]('/',auth[_0xdefd('0xb')](),controller[_0xdefd('0xc')]);router[_0xdefd('0xa')](_0xdefd('0xd'),auth[_0xdefd('0xb')](),controller[_0xdefd('0xe')]);router[_0xdefd('0xa')](_0xdefd('0xf'),auth[_0xdefd('0xb')](),controller[_0xdefd('0x10')]);router[_0xdefd('0xa')](_0xdefd('0x11'),auth[_0xdefd('0xb')](),controller[_0xdefd('0x12')]);router[_0xdefd('0x13')]('/',auth[_0xdefd('0xb')](),controller[_0xdefd('0x14')]);router[_0xdefd('0x13')](_0xdefd('0x15'),auth[_0xdefd('0xb')](),controller[_0xdefd('0x16')]);router[_0xdefd('0x17')](_0xdefd('0x11'),auth[_0xdefd('0xb')](),controller[_0xdefd('0x18')]);router[_0xdefd('0x19')](_0xdefd('0x11'),auth['isAuthenticated'](),controller[_0xdefd('0x1a')]);module[_0xdefd('0x1b')]=router;
\ No newline at end of file
index 2ef450c..4135a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d87=['STRING','INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0x31c062,_0x2a40e4){var _0x541b8a=function(_0x4e7ee6){while(--_0x4e7ee6){_0x31c062['push'](_0x31c062['shift']());}};_0x541b8a(++_0x2a40e4);}(_0x5d87,0x16b));var _0x75d8=function(_0x3ea3f9,_0x41e7a1){_0x3ea3f9=_0x3ea3f9-0x0;var _0x4cb191=_0x5d87[_0x3ea3f9];return _0x4cb191;};'use strict';var moment=require(_0x75d8('0x0'));var Sequelize=require(_0x75d8('0x1'));module[_0x75d8('0x2')]={'phone':{'type':Sequelize[_0x75d8('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x75d8('0x4')],'unique':_0x75d8('0x5')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x75d8('0x5')},'VoiceQueueId':{'type':Sequelize[_0x75d8('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0x8caf=['INTEGER','contactListQueue','moment','sequelize','STRING'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x8caf,0x16f));var _0xf8ca=function(_0x167a71,_0x68d27d){_0x167a71=_0x167a71-0x0;var _0x3778c5=_0x8caf[_0x167a71];return _0x3778c5;};'use strict';var moment=require(_0xf8ca('0x0'));var Sequelize=require(_0xf8ca('0x1'));module['exports']={'phone':{'type':Sequelize[_0xf8ca('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xf8ca('0x3')],'unique':_0xf8ca('0x4')},'ListId':{'type':Sequelize[_0xf8ca('0x3')],'unique':_0xf8ca('0x4')},'VoiceQueueId':{'type':Sequelize[_0xf8ca('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
index b9761ce..a5d83fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2193=['rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','merge','includeAll','include','findAll','catch','show','options','find','body','params','destroy','describe','eml-format'];(function(_0x11f0e3,_0x5170bc){var _0x2892e8=function(_0x3292b2){while(--_0x3292b2){_0x11f0e3['push'](_0x11f0e3['shift']());}};_0x2892e8(++_0x5170bc);}(_0x2193,0x1f0));var _0x3219=function(_0x9d2817,_0x3c2c17){_0x9d2817=_0x9d2817-0x0;var _0x5f24d6=_0x2193[_0x9d2817];return _0x5f24d6;};'use strict';var emlformat=require(_0x3219('0x0'));var rimraf=require(_0x3219('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3219('0x2'));var rp=require(_0x3219('0x3'));var moment=require(_0x3219('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3219('0x5'));var util=require(_0x3219('0x6'));var path=require('path');var sox=require(_0x3219('0x7'));var csv=require('to-csv');var ejs=require(_0x3219('0x8'));var fs=require('fs');var fs_extra=require(_0x3219('0x9'));var _=require(_0x3219('0xa'));var squel=require(_0x3219('0xb'));var crypto=require('crypto');var jsforce=require(_0x3219('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3219('0xd'));var Redis=require(_0x3219('0xe'));var authService=require(_0x3219('0xf'));var qs=require(_0x3219('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3219('0x11'));var utils=require(_0x3219('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3219('0x13'))['db'];function respondWithStatusCode(_0x5f1a9a,_0x43ef8b){_0x43ef8b=_0x43ef8b||0xcc;return function(_0xb7afaf){if(_0xb7afaf){return _0x5f1a9a[_0x3219('0x14')](_0x43ef8b);}return _0x5f1a9a[_0x3219('0x15')](_0x43ef8b)[_0x3219('0x16')]();};}function respondWithResult(_0x2c3318,_0x2685aa){_0x2685aa=_0x2685aa||0xc8;return function(_0x371c57){if(_0x371c57){return _0x2c3318[_0x3219('0x15')](_0x2685aa)['json'](_0x371c57);}};}function respondWithFilteredResult(_0x7a9980,_0x552455){return function(_0x41f425){if(_0x41f425){var _0x438a94=typeof _0x552455[_0x3219('0x17')]===_0x3219('0x18')&&typeof _0x552455[_0x3219('0x19')]==='undefined';var _0x425e97=_0x41f425[_0x3219('0x1a')];var _0x1157a4=_0x438a94?0x0:_0x552455[_0x3219('0x17')];var _0x463308=_0x438a94?_0x41f425[_0x3219('0x1a')]:_0x552455[_0x3219('0x17')]+_0x552455[_0x3219('0x19')];var _0x141de8;if(_0x463308>=_0x425e97){_0x463308=_0x425e97;_0x141de8=0xc8;}else{_0x141de8=0xce;}_0x7a9980['status'](_0x141de8);return _0x7a9980[_0x3219('0x1b')](_0x3219('0x1c'),_0x1157a4+'-'+_0x463308+'/'+_0x425e97)['json'](_0x41f425);}return null;};}function patchUpdates(_0x1aebed){return function(_0x23c48d){try{jsonpatch[_0x3219('0x1d')](_0x23c48d,_0x1aebed,!![]);}catch(_0x132828){return BPromise[_0x3219('0x1e')](_0x132828);}return _0x23c48d[_0x3219('0x1f')]();};}function saveUpdates(_0xd07a04,_0x2621da){return function(_0x397c44){if(_0x397c44){return _0x397c44[_0x3219('0x20')](_0xd07a04)['then'](function(_0x369aaf){return _0x369aaf;});}return null;};}function removeEntity(_0x88666e,_0x3e4c9d){return function(_0x4cea32){if(_0x4cea32){return _0x4cea32['destroy']()[_0x3219('0x21')](function(){_0x88666e[_0x3219('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cdf47,_0x54d43d){return function(_0x55d8d7){if(!_0x55d8d7){_0x3cdf47['sendStatus'](0x194);}return _0x55d8d7;};}function handleError(_0x428823,_0x3650fb){_0x3650fb=_0x3650fb||0x1f4;return function(_0x2c4f4d){logger[_0x3219('0x22')](_0x2c4f4d[_0x3219('0x23')]);if(_0x2c4f4d[_0x3219('0x24')]){delete _0x2c4f4d[_0x3219('0x24')];}_0x428823[_0x3219('0x15')](_0x3650fb)[_0x3219('0x25')](_0x2c4f4d);};}exports[_0x3219('0x26')]=function(_0x197f50,_0x3dd827){var _0x29ab60={},_0x16fc95={},_0x44d26f={'count':0x0,'rows':[]};var _0x1c71bd=_[_0x3219('0x27')](db[_0x3219('0x28')][_0x3219('0x29')],function(_0x3cb2a1){return{'name':_0x3cb2a1[_0x3219('0x2a')],'type':_0x3cb2a1['type'][_0x3219('0x2b')]};});_0x16fc95[_0x3219('0x2c')]=_['map'](_0x1c71bd,'name');_0x16fc95[_0x3219('0x2d')]=_[_0x3219('0x2e')](_0x197f50[_0x3219('0x2d')]);_0x16fc95[_0x3219('0x2f')]=_[_0x3219('0x30')](_0x16fc95['model'],_0x16fc95[_0x3219('0x2d')]);_0x29ab60[_0x3219('0x31')]=_[_0x3219('0x30')](_0x16fc95['model'],qs[_0x3219('0x32')](_0x197f50[_0x3219('0x2d')][_0x3219('0x32')]));_0x29ab60['attributes']=_0x29ab60['attributes'][_0x3219('0x33')]?_0x29ab60['attributes']:_0x16fc95[_0x3219('0x2c')];if(!_0x197f50['query']['hasOwnProperty'](_0x3219('0x34'))){_0x29ab60['limit']=qs['limit'](_0x197f50['query'][_0x3219('0x19')]);_0x29ab60[_0x3219('0x17')]=qs[_0x3219('0x17')](_0x197f50[_0x3219('0x2d')][_0x3219('0x17')]);}_0x29ab60[_0x3219('0x35')]=qs[_0x3219('0x36')](_0x197f50['query'][_0x3219('0x36')]);_0x29ab60[_0x3219('0x37')]=qs[_0x3219('0x2f')](_[_0x3219('0x38')](_0x197f50[_0x3219('0x2d')],_0x16fc95[_0x3219('0x2f')]),_0x1c71bd);if(_0x197f50[_0x3219('0x2d')][_0x3219('0x39')]){_0x29ab60[_0x3219('0x37')]=_['merge'](_0x29ab60[_0x3219('0x37')],{'$or':_['map'](_0x1c71bd,function(_0x268146){if(_0x268146[_0x3219('0x3a')]!=='VIRTUAL'){var _0x3f5b91={};_0x3f5b91[_0x268146['name']]={'$like':'%'+_0x197f50[_0x3219('0x2d')]['filter']+'%'};return _0x3f5b91;}})});}_0x29ab60=_[_0x3219('0x3b')]({},_0x29ab60,_0x197f50['options']);var _0x18d19e={'where':_0x29ab60[_0x3219('0x37')]};return db[_0x3219('0x28')][_0x3219('0x1a')](_0x18d19e)[_0x3219('0x21')](function(_0x5240fa){_0x44d26f[_0x3219('0x1a')]=_0x5240fa;if(_0x197f50[_0x3219('0x2d')][_0x3219('0x3c')]){_0x29ab60[_0x3219('0x3d')]=[{'all':!![]}];}return db[_0x3219('0x28')][_0x3219('0x3e')](_0x29ab60);})[_0x3219('0x21')](function(_0x39623d){_0x44d26f['rows']=_0x39623d;return _0x44d26f;})['then'](respondWithFilteredResult(_0x3dd827,_0x29ab60))[_0x3219('0x3f')](handleError(_0x3dd827,null));};exports[_0x3219('0x40')]=function(_0x4d5c03,_0x28a54f){var _0x27d574={'raw':!![],'where':{'id':_0x4d5c03['params']['id']}},_0x13a59a={};_0x13a59a[_0x3219('0x2c')]=_[_0x3219('0x2e')](db['CmHopperBlack'][_0x3219('0x29')]);_0x13a59a[_0x3219('0x2d')]=_[_0x3219('0x2e')](_0x4d5c03[_0x3219('0x2d')]);_0x13a59a[_0x3219('0x2f')]=_[_0x3219('0x30')](_0x13a59a[_0x3219('0x2c')],_0x13a59a[_0x3219('0x2d')]);_0x27d574[_0x3219('0x31')]=_[_0x3219('0x30')](_0x13a59a['model'],qs[_0x3219('0x32')](_0x4d5c03[_0x3219('0x2d')][_0x3219('0x32')]));_0x27d574['attributes']=_0x27d574[_0x3219('0x31')][_0x3219('0x33')]?_0x27d574[_0x3219('0x31')]:_0x13a59a[_0x3219('0x2c')];if(_0x4d5c03[_0x3219('0x2d')][_0x3219('0x3c')]){_0x27d574[_0x3219('0x3d')]=[{'all':!![]}];}_0x27d574=_['merge']({},_0x27d574,_0x4d5c03[_0x3219('0x41')]);return db[_0x3219('0x28')][_0x3219('0x42')](_0x27d574)[_0x3219('0x21')](handleEntityNotFound(_0x28a54f,null))[_0x3219('0x21')](respondWithResult(_0x28a54f,null))['catch'](handleError(_0x28a54f,null));};exports[_0x3219('0x20')]=function(_0x2f474d,_0x1cdcbb){if(_0x2f474d[_0x3219('0x43')]['id']){delete _0x2f474d[_0x3219('0x43')]['id'];}return db[_0x3219('0x28')][_0x3219('0x42')]({'where':{'id':_0x2f474d[_0x3219('0x44')]['id']}})[_0x3219('0x21')](handleEntityNotFound(_0x1cdcbb,null))[_0x3219('0x21')](saveUpdates(_0x2f474d['body'],null))[_0x3219('0x21')](respondWithResult(_0x1cdcbb,null))['catch'](handleError(_0x1cdcbb,null));};exports[_0x3219('0x45')]=function(_0x420a67,_0x119566){return db[_0x3219('0x28')][_0x3219('0x42')]({'where':{'id':_0x420a67[_0x3219('0x44')]['id']}})[_0x3219('0x21')](handleEntityNotFound(_0x119566,null))[_0x3219('0x21')](removeEntity(_0x119566,null))[_0x3219('0x3f')](handleError(_0x119566,null));};exports[_0x3219('0x46')]=function(_0x15c598,_0x3870e5){return db['CmHopperBlack'][_0x3219('0x46')]()[_0x3219('0x21')](respondWithResult(_0x3870e5,null))['catch'](handleError(_0x3870e5,null));};
\ No newline at end of file
+var _0x98d8=['stack','name','send','CmHopperBlack','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','sort','filters','pick','filter','where','merge','type','options','include','findAll','show','params','keys','rawAttributes','includeAll','body','find','catch','destroy','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then'];(function(_0x30cc1a,_0x162bbc){var _0xb3f18f=function(_0x26bdfe){while(--_0x26bdfe){_0x30cc1a['push'](_0x30cc1a['shift']());}};_0xb3f18f(++_0x162bbc);}(_0x98d8,0x184));var _0x898d=function(_0x4bf83e,_0x429223){_0x4bf83e=_0x4bf83e-0x0;var _0x5647c9=_0x98d8[_0x4bf83e];return _0x5647c9;};'use strict';var emlformat=require(_0x898d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x898d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x898d('0x2'));var moment=require(_0x898d('0x3'));var BPromise=require(_0x898d('0x4'));var Mustache=require(_0x898d('0x5'));var util=require('util');var path=require(_0x898d('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x898d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898d('0x8'));var squel=require(_0x898d('0x9'));var crypto=require(_0x898d('0xa'));var jsforce=require(_0x898d('0xb'));var deskjs=require(_0x898d('0xc'));var toCsv=require(_0x898d('0xd'));var querystring=require('querystring');var Papa=require(_0x898d('0xe'));var Redis=require(_0x898d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x898d('0x10'));var as=require(_0x898d('0x11'));var hardwareService=require(_0x898d('0x12'));var logger=require('../../config/logger')(_0x898d('0x13'));var utils=require(_0x898d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x898d('0x15'));var db=require(_0x898d('0x16'))['db'];function respondWithStatusCode(_0x359341,_0x1d0acf){_0x1d0acf=_0x1d0acf||0xcc;return function(_0x2104d5){if(_0x2104d5){return _0x359341[_0x898d('0x17')](_0x1d0acf);}return _0x359341[_0x898d('0x18')](_0x1d0acf)[_0x898d('0x19')]();};}function respondWithResult(_0x1558ff,_0x4683fc){_0x4683fc=_0x4683fc||0xc8;return function(_0x47aad1){if(_0x47aad1){return _0x1558ff[_0x898d('0x18')](_0x4683fc)[_0x898d('0x1a')](_0x47aad1);}};}function respondWithFilteredResult(_0x47daf7,_0x14861e){return function(_0x9d0936){if(_0x9d0936){var _0x4a25dd=typeof _0x14861e[_0x898d('0x1b')]===_0x898d('0x1c')&&typeof _0x14861e['limit']===_0x898d('0x1c');var _0x150453=_0x9d0936['count'];var _0x3005b5=_0x4a25dd?0x0:_0x14861e['offset'];var _0x4d1f17=_0x4a25dd?_0x9d0936[_0x898d('0x1d')]:_0x14861e[_0x898d('0x1b')]+_0x14861e[_0x898d('0x1e')];var _0x567493;if(_0x4d1f17>=_0x150453){_0x4d1f17=_0x150453;_0x567493=0xc8;}else{_0x567493=0xce;}_0x47daf7[_0x898d('0x18')](_0x567493);return _0x47daf7[_0x898d('0x1f')](_0x898d('0x20'),_0x3005b5+'-'+_0x4d1f17+'/'+_0x150453)['json'](_0x9d0936);}return null;};}function patchUpdates(_0x2afcb3){return function(_0x2abd5d){try{jsonpatch[_0x898d('0x21')](_0x2abd5d,_0x2afcb3,!![]);}catch(_0x55b15c){return BPromise[_0x898d('0x22')](_0x55b15c);}return _0x2abd5d[_0x898d('0x23')]();};}function saveUpdates(_0x602362,_0x114eab){return function(_0x1fc949){if(_0x1fc949){return _0x1fc949[_0x898d('0x24')](_0x602362)[_0x898d('0x25')](function(_0x48a19c){return _0x48a19c;});}return null;};}function removeEntity(_0x22b0c7,_0x4d1206){return function(_0x26fcdb){if(_0x26fcdb){return _0x26fcdb['destroy']()['then'](function(){_0x22b0c7['status'](0xcc)[_0x898d('0x19')]();});}};}function handleEntityNotFound(_0x12346a,_0x3eab2c){return function(_0x30b9e9){if(!_0x30b9e9){_0x12346a[_0x898d('0x17')](0x194);}return _0x30b9e9;};}function handleError(_0x10edd3,_0x16a27c){_0x16a27c=_0x16a27c||0x1f4;return function(_0x4d8590){logger['error'](_0x4d8590[_0x898d('0x26')]);if(_0x4d8590[_0x898d('0x27')]){delete _0x4d8590['name'];}_0x10edd3['status'](_0x16a27c)[_0x898d('0x28')](_0x4d8590);};}exports['index']=function(_0x5e70ee,_0x10cfa5){var _0xcd2431={},_0x451131={},_0xaf4f33={'count':0x0,'rows':[]};var _0x39511a=_['map'](db[_0x898d('0x29')]['rawAttributes'],function(_0x53573d){return{'name':_0x53573d[_0x898d('0x2a')],'type':_0x53573d['type'][_0x898d('0x2b')]};});_0x451131[_0x898d('0x2c')]=_['map'](_0x39511a,'name');_0x451131['query']=_['keys'](_0x5e70ee[_0x898d('0x2d')]);_0x451131['filters']=_[_0x898d('0x2e')](_0x451131['model'],_0x451131[_0x898d('0x2d')]);_0xcd2431['attributes']=_['intersection'](_0x451131[_0x898d('0x2c')],qs[_0x898d('0x2f')](_0x5e70ee['query'][_0x898d('0x2f')]));_0xcd2431[_0x898d('0x30')]=_0xcd2431['attributes'][_0x898d('0x31')]?_0xcd2431[_0x898d('0x30')]:_0x451131[_0x898d('0x2c')];if(!_0x5e70ee['query'][_0x898d('0x32')]('nolimit')){_0xcd2431['limit']=qs['limit'](_0x5e70ee['query']['limit']);_0xcd2431[_0x898d('0x1b')]=qs[_0x898d('0x1b')](_0x5e70ee[_0x898d('0x2d')][_0x898d('0x1b')]);}_0xcd2431['order']=qs[_0x898d('0x33')](_0x5e70ee[_0x898d('0x2d')][_0x898d('0x33')]);_0xcd2431['where']=qs[_0x898d('0x34')](_[_0x898d('0x35')](_0x5e70ee[_0x898d('0x2d')],_0x451131[_0x898d('0x34')]),_0x39511a);if(_0x5e70ee[_0x898d('0x2d')][_0x898d('0x36')]){_0xcd2431[_0x898d('0x37')]=_[_0x898d('0x38')](_0xcd2431[_0x898d('0x37')],{'$or':_['map'](_0x39511a,function(_0x27f8d9){if(_0x27f8d9[_0x898d('0x39')]!=='VIRTUAL'){var _0x19b8c7={};_0x19b8c7[_0x27f8d9[_0x898d('0x27')]]={'$like':'%'+_0x5e70ee[_0x898d('0x2d')][_0x898d('0x36')]+'%'};return _0x19b8c7;}})});}_0xcd2431=_[_0x898d('0x38')]({},_0xcd2431,_0x5e70ee[_0x898d('0x3a')]);var _0x4e131b={'where':_0xcd2431[_0x898d('0x37')]};return db[_0x898d('0x29')][_0x898d('0x1d')](_0x4e131b)['then'](function(_0x10ab0e){_0xaf4f33['count']=_0x10ab0e;if(_0x5e70ee[_0x898d('0x2d')]['includeAll']){_0xcd2431[_0x898d('0x3b')]=[{'all':!![]}];}return db[_0x898d('0x29')][_0x898d('0x3c')](_0xcd2431);})[_0x898d('0x25')](function(_0x432972){_0xaf4f33['rows']=_0x432972;return _0xaf4f33;})['then'](respondWithFilteredResult(_0x10cfa5,_0xcd2431))['catch'](handleError(_0x10cfa5,null));};exports[_0x898d('0x3d')]=function(_0x5788e9,_0x165894){var _0x206f1d={'raw':!![],'where':{'id':_0x5788e9[_0x898d('0x3e')]['id']}},_0x83fca0={};_0x83fca0[_0x898d('0x2c')]=_[_0x898d('0x3f')](db[_0x898d('0x29')][_0x898d('0x40')]);_0x83fca0[_0x898d('0x2d')]=_[_0x898d('0x3f')](_0x5788e9[_0x898d('0x2d')]);_0x83fca0[_0x898d('0x34')]=_['intersection'](_0x83fca0['model'],_0x83fca0[_0x898d('0x2d')]);_0x206f1d[_0x898d('0x30')]=_[_0x898d('0x2e')](_0x83fca0[_0x898d('0x2c')],qs[_0x898d('0x2f')](_0x5788e9['query'][_0x898d('0x2f')]));_0x206f1d[_0x898d('0x30')]=_0x206f1d[_0x898d('0x30')][_0x898d('0x31')]?_0x206f1d[_0x898d('0x30')]:_0x83fca0[_0x898d('0x2c')];if(_0x5788e9['query'][_0x898d('0x41')]){_0x206f1d['include']=[{'all':!![]}];}_0x206f1d=_[_0x898d('0x38')]({},_0x206f1d,_0x5788e9[_0x898d('0x3a')]);return db['CmHopperBlack']['find'](_0x206f1d)['then'](handleEntityNotFound(_0x165894,null))[_0x898d('0x25')](respondWithResult(_0x165894,null))['catch'](handleError(_0x165894,null));};exports[_0x898d('0x24')]=function(_0xfddd89,_0x5e7b19){if(_0xfddd89[_0x898d('0x42')]['id']){delete _0xfddd89[_0x898d('0x42')]['id'];}return db[_0x898d('0x29')][_0x898d('0x43')]({'where':{'id':_0xfddd89[_0x898d('0x3e')]['id']}})[_0x898d('0x25')](handleEntityNotFound(_0x5e7b19,null))[_0x898d('0x25')](saveUpdates(_0xfddd89[_0x898d('0x42')],null))[_0x898d('0x25')](respondWithResult(_0x5e7b19,null))[_0x898d('0x44')](handleError(_0x5e7b19,null));};exports[_0x898d('0x45')]=function(_0x302feb,_0x4c69d8){return db[_0x898d('0x29')][_0x898d('0x43')]({'where':{'id':_0x302feb['params']['id']}})[_0x898d('0x25')](handleEntityNotFound(_0x4c69d8,null))[_0x898d('0x25')](removeEntity(_0x4c69d8,null))[_0x898d('0x44')](handleError(_0x4c69d8,null));};exports[_0x898d('0x46')]=function(_0x55b94a,_0x4e560b){return db['CmHopperBlack']['describe']()[_0x898d('0x25')](respondWithResult(_0x4e560b,null))['catch'](handleError(_0x4e560b,null));};
\ No newline at end of file
index 6aa14e8..44fa3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf44=['moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','util','api'];(function(_0x4e11d5,_0x1ce514){var _0x5e4e4c=function(_0xbee63d){while(--_0xbee63d){_0x4e11d5['push'](_0x4e11d5['shift']());}};_0x5e4e4c(++_0x1ce514);}(_0xbf44,0x1e2));var _0x4bf4=function(_0x3f94fa,_0xdf5b42){_0x3f94fa=_0x3f94fa-0x0;var _0xb2cf13=_0xbf44[_0x3f94fa];return _0xb2cf13;};'use strict';var _=require('lodash');var util=require(_0x4bf4('0x0'));var logger=require('../../config/logger')(_0x4bf4('0x1'));var moment=require(_0x4bf4('0x2'));var BPromise=require(_0x4bf4('0x3'));var rp=require(_0x4bf4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4bf4('0x5'));var config=require(_0x4bf4('0x6'));var attributes=require(_0x4bf4('0x7'));module[_0x4bf4('0x8')]=function(_0xba5b8c,_0x57ddcf){return _0xba5b8c[_0x4bf4('0x9')](_0x4bf4('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc82a=['path','rimraf','./cmHopperBlack.attributes','define','cm_hopper_black','moment','bluebird','request-promise'];(function(_0x377d7f,_0x590225){var _0x1adb43=function(_0x231579){while(--_0x231579){_0x377d7f['push'](_0x377d7f['shift']());}};_0x1adb43(++_0x590225);}(_0xc82a,0x105));var _0xac82=function(_0x5efb4a,_0x39b1ec){_0x5efb4a=_0x5efb4a-0x0;var _0x5f31a2=_0xc82a[_0x5efb4a];return _0x5f31a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xac82('0x0'));var BPromise=require(_0xac82('0x1'));var rp=require(_0xac82('0x2'));var fs=require('fs');var path=require(_0xac82('0x3'));var rimraf=require(_0xac82('0x4'));var config=require('../../config/environment');var attributes=require(_0xac82('0x5'));module['exports']=function(_0x56714c,_0x557014){return _0x56714c[_0xac82('0x6')]('CmHopperBlack',attributes,{'tableName':_0xac82('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1201286..0e0151c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5913=['CmHopperBlack','findAll','options','raw','where','attributes','limit','include','model','map','GetCmHopperBlack','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','CmHopperBlack,\x20%s,\x20%s','request\x20sent'];(function(_0xb1e7c2,_0x523673){var _0x9d8c4c=function(_0x9da192){while(--_0x9da192){_0xb1e7c2['push'](_0xb1e7c2['shift']());}};_0x9d8c4c(++_0x523673);}(_0x5913,0x16f));var _0x3591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5913[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3591('0x0'));var util=require('util');var moment=require(_0x3591('0x1'));var BPromise=require(_0x3591('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3591('0x3'))['db'];var utils=require(_0x3591('0x4'));var logger=require(_0x3591('0x5'))('rpc');var config=require(_0x3591('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3591('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x59ab1f,_0x25d58f,_0x23b2db){return new BPromise(function(_0x4f13b3,_0x11e5e1){return client[_0x3591('0x8')](_0x59ab1f,_0x23b2db)[_0x3591('0x9')](function(_0x497be1){logger[_0x3591('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x25d58f,'request\x20sent');logger[_0x3591('0xb')](_0x3591('0xc'),_0x25d58f,'request\x20sent',JSON[_0x3591('0xd')](_0x497be1));if(_0x497be1[_0x3591('0xe')]){if(_0x497be1[_0x3591('0xe')]['code']===0x1f4){logger[_0x3591('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x25d58f,_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);return _0x11e5e1(_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);}logger['error'](_0x3591('0x10'),_0x25d58f,_0x497be1['error'][_0x3591('0xf')]);return _0x4f13b3(_0x497be1[_0x3591('0xe')][_0x3591('0xf')]);}else{logger[_0x3591('0xa')](_0x3591('0x10'),_0x25d58f,_0x3591('0x11'));_0x4f13b3(_0x497be1['result'][_0x3591('0xf')]);}})['catch'](function(_0x5b5451){logger[_0x3591('0xe')](_0x3591('0x10'),_0x25d58f,_0x5b5451);_0x11e5e1(_0x5b5451);});});}exports['GetCmHopperBlack']=function(_0x951f85){var _0xa94edf=this;return new Promise(function(_0x21b63c,_0x56bfbb){return db[_0x3591('0x12')][_0x3591('0x13')]({'raw':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x15')]===undefined?!![]:![]:!![],'where':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x16')]||null:null,'attributes':_0x951f85['options']?_0x951f85[_0x3591('0x14')][_0x3591('0x17')]||null:null,'limit':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x18')]||null:null,'include':_0x951f85[_0x3591('0x14')]?_0x951f85[_0x3591('0x14')][_0x3591('0x19')]?_['map'](_0x951f85[_0x3591('0x14')][_0x3591('0x19')],function(_0x3ad488){return{'model':db[_0x3ad488[_0x3591('0x1a')]],'as':_0x3ad488['as'],'attributes':_0x3ad488[_0x3591('0x17')],'include':_0x3ad488[_0x3591('0x19')]?_[_0x3591('0x1b')](_0x3ad488[_0x3591('0x19')],function(_0x3c04af){return{'model':db[_0x3c04af[_0x3591('0x1a')]],'as':_0x3c04af['as'],'attributes':_0x3c04af[_0x3591('0x17')],'include':_0x3c04af[_0x3591('0x19')]?_[_0x3591('0x1b')](_0x3c04af[_0x3591('0x19')],function(_0x166aa8){return{'model':db[_0x166aa8[_0x3591('0x1a')]],'as':_0x166aa8['as'],'attributes':_0x166aa8[_0x3591('0x17')]};}):[]};}):[]};}):[]:[]})[_0x3591('0x9')](function(_0x43627f){logger[_0x3591('0xa')](_0x3591('0x1c'),_0x951f85);logger[_0x3591('0xb')](_0x3591('0x1c'),_0x951f85,JSON['stringify'](_0x43627f));_0x21b63c(_0x43627f);})['catch'](function(_0x3c4353){logger['error']('GetCmHopperBlack',_0x3c4353['message'],_0x951f85);_0x56bfbb(_0xa94edf['error'](0x1f4,_0x3c4353[_0x3591('0xf')]));});});};exports[_0x3591('0x1d')]=function(_0x1d48b2){var _0x2db532=this;return new Promise(function(_0x34e46d,_0x489703){return db[_0x3591('0x12')][_0x3591('0x1e')](_0x1d48b2[_0x3591('0x1f')],{'raw':_0x1d48b2[_0x3591('0x14')]?_0x1d48b2[_0x3591('0x14')][_0x3591('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d48b2['options']?_0x1d48b2[_0x3591('0x14')]['where']||null:null,'attributes':_0x1d48b2['options']?_0x1d48b2[_0x3591('0x14')][_0x3591('0x17')]||null:null,'limit':_0x1d48b2[_0x3591('0x14')]?_0x1d48b2[_0x3591('0x14')]['limit']||null:null})[_0x3591('0x9')](function(_0x1cfb5f){logger['info'](_0x3591('0x1d'),_0x1d48b2);logger['debug'](_0x3591('0x1d'),_0x1d48b2,JSON[_0x3591('0xd')](_0x1cfb5f));_0x34e46d(_0x1cfb5f);})['catch'](function(_0x2005cf){logger[_0x3591('0xe')]('UpdateCmHopperBlack',_0x2005cf[_0x3591('0xf')],_0x1d48b2);_0x489703(_0x2db532[_0x3591('0xe')](0x1f4,_0x2005cf['message']));});});};exports[_0x3591('0x20')]=function(_0xfbcacf){var _0x1da0c9=this;return new Promise(function(_0x2d9a47,_0x56f3a0){return db[_0x3591('0x12')][_0x3591('0x21')]({'where':_0xfbcacf[_0x3591('0x14')]?_0xfbcacf['options'][_0x3591('0x16')]||null:null})['then'](function(_0x3b4d80){logger[_0x3591('0xa')](_0x3591('0x20'),_0xfbcacf);logger[_0x3591('0xb')](_0x3591('0x20'),_0xfbcacf,JSON['stringify'](_0x3b4d80));_0x2d9a47(_0x3b4d80);})[_0x3591('0x22')](function(_0x6497b2){logger[_0x3591('0xe')](_0x3591('0x20'),_0x6497b2[_0x3591('0xf')],_0xfbcacf);_0x56f3a0(_0x1da0c9[_0x3591('0xe')](0x1f4,_0x6497b2['message']));});});};
\ No newline at end of file
+var _0x2ac4=['info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','GetCmHopperBlack','CmHopperBlack','options','raw','where','limit','include','model','attributes','map','UpdateCmHopperBlack','update','body','debug','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then'];(function(_0x1c10bd,_0x294246){var _0x20db82=function(_0x24c729){while(--_0x24c729){_0x1c10bd['push'](_0x1c10bd['shift']());}};_0x20db82(++_0x294246);}(_0x2ac4,0xe9));var _0x42ac=function(_0x3e27ba,_0x46b120){_0x3e27ba=_0x3e27ba-0x0;var _0x10b3f2=_0x2ac4[_0x3e27ba];return _0x10b3f2;};'use strict';var _=require(_0x42ac('0x0'));var util=require(_0x42ac('0x1'));var moment=require(_0x42ac('0x2'));var BPromise=require(_0x42ac('0x3'));var rs=require(_0x42ac('0x4'));var fs=require('fs');var Redis=require(_0x42ac('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x42ac('0x6'));var logger=require(_0x42ac('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x42ac('0x8'));var client=jayson[_0x42ac('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bab37,_0x498ebd,_0x36009d){return new BPromise(function(_0x64308a,_0x49322d){return client[_0x42ac('0xa')](_0x1bab37,_0x36009d)[_0x42ac('0xb')](function(_0x813b90){logger[_0x42ac('0xc')](_0x42ac('0xd'),_0x498ebd,_0x42ac('0xe'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x498ebd,_0x42ac('0xe'),JSON[_0x42ac('0xf')](_0x813b90));if(_0x813b90[_0x42ac('0x10')]){if(_0x813b90['error']['code']===0x1f4){logger[_0x42ac('0x10')](_0x42ac('0xd'),_0x498ebd,_0x813b90[_0x42ac('0x10')]['message']);return _0x49322d(_0x813b90[_0x42ac('0x10')][_0x42ac('0x11')]);}logger[_0x42ac('0x10')](_0x42ac('0xd'),_0x498ebd,_0x813b90[_0x42ac('0x10')][_0x42ac('0x11')]);return _0x64308a(_0x813b90['error'][_0x42ac('0x11')]);}else{logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x498ebd,'request\x20sent');_0x64308a(_0x813b90['result']['message']);}})[_0x42ac('0x12')](function(_0x3992db){logger['error']('CmHopperBlack,\x20%s,\x20%s',_0x498ebd,_0x3992db);_0x49322d(_0x3992db);});});}exports[_0x42ac('0x13')]=function(_0x5caa8e){var _0x129081=this;return new Promise(function(_0x44cbdc,_0x1b93e2){return db[_0x42ac('0x14')]['findAll']({'raw':_0x5caa8e[_0x42ac('0x15')]?_0x5caa8e[_0x42ac('0x15')][_0x42ac('0x16')]===undefined?!![]:![]:!![],'where':_0x5caa8e[_0x42ac('0x15')]?_0x5caa8e[_0x42ac('0x15')][_0x42ac('0x17')]||null:null,'attributes':_0x5caa8e[_0x42ac('0x15')]?_0x5caa8e[_0x42ac('0x15')]['attributes']||null:null,'limit':_0x5caa8e[_0x42ac('0x15')]?_0x5caa8e['options'][_0x42ac('0x18')]||null:null,'include':_0x5caa8e[_0x42ac('0x15')]?_0x5caa8e[_0x42ac('0x15')][_0x42ac('0x19')]?_['map'](_0x5caa8e[_0x42ac('0x15')][_0x42ac('0x19')],function(_0x3ff593){return{'model':db[_0x3ff593[_0x42ac('0x1a')]],'as':_0x3ff593['as'],'attributes':_0x3ff593[_0x42ac('0x1b')],'include':_0x3ff593[_0x42ac('0x19')]?_['map'](_0x3ff593[_0x42ac('0x19')],function(_0x56414b){return{'model':db[_0x56414b['model']],'as':_0x56414b['as'],'attributes':_0x56414b[_0x42ac('0x1b')],'include':_0x56414b[_0x42ac('0x19')]?_[_0x42ac('0x1c')](_0x56414b[_0x42ac('0x19')],function(_0x41c9c4){return{'model':db[_0x41c9c4[_0x42ac('0x1a')]],'as':_0x41c9c4['as'],'attributes':_0x41c9c4[_0x42ac('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x42ac('0xb')](function(_0x57d3a3){logger[_0x42ac('0xc')](_0x42ac('0x13'),_0x5caa8e);logger['debug']('GetCmHopperBlack',_0x5caa8e,JSON[_0x42ac('0xf')](_0x57d3a3));_0x44cbdc(_0x57d3a3);})[_0x42ac('0x12')](function(_0x26cf29){logger[_0x42ac('0x10')](_0x42ac('0x13'),_0x26cf29[_0x42ac('0x11')],_0x5caa8e);_0x1b93e2(_0x129081[_0x42ac('0x10')](0x1f4,_0x26cf29[_0x42ac('0x11')]));});});};exports[_0x42ac('0x1d')]=function(_0x1ee1b0){var _0x45c61d=this;return new Promise(function(_0x1866cc,_0x2a80fa){return db[_0x42ac('0x14')][_0x42ac('0x1e')](_0x1ee1b0[_0x42ac('0x1f')],{'raw':_0x1ee1b0[_0x42ac('0x15')]?_0x1ee1b0[_0x42ac('0x15')][_0x42ac('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ee1b0[_0x42ac('0x15')]?_0x1ee1b0['options'][_0x42ac('0x17')]||null:null,'attributes':_0x1ee1b0[_0x42ac('0x15')]?_0x1ee1b0[_0x42ac('0x15')][_0x42ac('0x1b')]||null:null,'limit':_0x1ee1b0[_0x42ac('0x15')]?_0x1ee1b0[_0x42ac('0x15')][_0x42ac('0x18')]||null:null})[_0x42ac('0xb')](function(_0x1bfa59){logger[_0x42ac('0xc')](_0x42ac('0x1d'),_0x1ee1b0);logger[_0x42ac('0x20')](_0x42ac('0x1d'),_0x1ee1b0,JSON[_0x42ac('0xf')](_0x1bfa59));_0x1866cc(_0x1bfa59);})[_0x42ac('0x12')](function(_0x2c33aa){logger['error'](_0x42ac('0x1d'),_0x2c33aa[_0x42ac('0x11')],_0x1ee1b0);_0x2a80fa(_0x45c61d[_0x42ac('0x10')](0x1f4,_0x2c33aa[_0x42ac('0x11')]));});});};exports[_0x42ac('0x21')]=function(_0x332058){var _0x2c075c=this;return new Promise(function(_0xbdcfd6,_0x3a577c){return db[_0x42ac('0x14')][_0x42ac('0x22')]({'where':_0x332058['options']?_0x332058[_0x42ac('0x15')]['where']||null:null})[_0x42ac('0xb')](function(_0x98fb8a){logger[_0x42ac('0xc')](_0x42ac('0x21'),_0x332058);logger[_0x42ac('0x20')](_0x42ac('0x21'),_0x332058,JSON[_0x42ac('0xf')](_0x98fb8a));_0xbdcfd6(_0x98fb8a);})['catch'](function(_0x28df12){logger[_0x42ac('0x10')](_0x42ac('0x21'),_0x28df12['message'],_0x332058);_0x3a577c(_0x2c075c[_0x42ac('0x10')](0x1f4,_0x28df12[_0x42ac('0x11')]));});});};
\ No newline at end of file
index 580a4e3..75ad407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['isAuthenticated','index','/describe','describe','show','/:id','update','delete','destroy','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x13992d,_0x3029ea){var _0x3d15bf=function(_0x3444f7){while(--_0x3444f7){_0x13992d['push'](_0x13992d['shift']());}};_0x3d15bf(++_0x3029ea);}(_0xda19,0xd5));var _0x9da1=function(_0x278e93,_0x47961b){_0x278e93=_0x278e93-0x0;var _0x577431=_0xda19[_0x278e93];return _0x577431;};'use strict';var multer=require('multer');var util=require(_0x9da1('0x0'));var path=require(_0x9da1('0x1'));var timeout=require('connect-timeout');var express=require(_0x9da1('0x2'));var router=express['Router']();var fs_extra=require(_0x9da1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var controller=require(_0x9da1('0x6'));router[_0x9da1('0x7')]('/',auth[_0x9da1('0x8')](),controller[_0x9da1('0x9')]);router[_0x9da1('0x7')](_0x9da1('0xa'),auth[_0x9da1('0x8')](),controller[_0x9da1('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x9da1('0xc')]);router['put'](_0x9da1('0xd'),auth[_0x9da1('0x8')](),controller[_0x9da1('0xe')]);router[_0x9da1('0xf')](_0x9da1('0xd'),auth[_0x9da1('0x8')](),controller[_0x9da1('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9a5a=['put','/:id','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','show'];(function(_0x683490,_0x4d722f){var _0x40501a=function(_0x2f778e){while(--_0x2f778e){_0x683490['push'](_0x683490['shift']());}};_0x40501a(++_0x4d722f);}(_0x9a5a,0x194));var _0xa9a5=function(_0x4665be,_0x582813){_0x4665be=_0x4665be-0x0;var _0xaa7b7d=_0x9a5a[_0x4665be];return _0xaa7b7d;};'use strict';var multer=require(_0xa9a5('0x0'));var util=require(_0xa9a5('0x1'));var path=require(_0xa9a5('0x2'));var timeout=require(_0xa9a5('0x3'));var express=require(_0xa9a5('0x4'));var router=express['Router']();var fs_extra=require(_0xa9a5('0x5'));var auth=require(_0xa9a5('0x6'));var interaction=require(_0xa9a5('0x7'));var config=require(_0xa9a5('0x8'));var controller=require(_0xa9a5('0x9'));router[_0xa9a5('0xa')]('/',auth['isAuthenticated'](),controller[_0xa9a5('0xb')]);router[_0xa9a5('0xa')](_0xa9a5('0xc'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa9a5('0xf')]);router[_0xa9a5('0x10')](_0xa9a5('0x11'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0x12')]);router[_0xa9a5('0x13')](_0xa9a5('0x11'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3fff492..8a2d45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb325=['endtime','setDataValue','seconds','dispositionat','BOOLEAN','sequelize','moment','INTEGER','STRING','DATE','getDataValue'];(function(_0x5eb8be,_0x4e6c25){var _0x2871bf=function(_0x728b75){while(--_0x728b75){_0x5eb8be['push'](_0x5eb8be['shift']());}};_0x2871bf(++_0x4e6c25);}(_0xb325,0x15a));var _0x5b32=function(_0x4d6adb,_0x555a76){_0x4d6adb=_0x4d6adb-0x0;var _0x10c3c8=_0xb325[_0x4d6adb];return _0x10c3c8;};'use strict';var Sequelize=require(_0x5b32('0x0'));var moment=require(_0x5b32('0x1'));module['exports']={'state':{'type':Sequelize[_0x5b32('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x5b32('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x5b32('0x3')]},'calleridname':{'type':Sequelize[_0x5b32('0x3')]},'starttime':{'type':Sequelize[_0x5b32('0x4')]},'responsetime':{'type':Sequelize[_0x5b32('0x4')]},'answertime':{'type':Sequelize[_0x5b32('0x4')]},'droptime':{'type':Sequelize[_0x5b32('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x5b32('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5b32('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x5b32('0x3')]},'secondDisposition':{'type':Sequelize[_0x5b32('0x3')]},'thirdDisposition':{'type':Sequelize[_0x5b32('0x3')]},'dispositionat':{'type':Sequelize[_0x5b32('0x4')],'set':function(_0x29b34c){var _0x133a78=this[_0x5b32('0x5')](_0x5b32('0x6'));if(_0x133a78&&_0x29b34c){this[_0x5b32('0x7')]('followuptime',moment(_0x29b34c)['diff'](moment(_0x133a78),_0x5b32('0x8')));}return this[_0x5b32('0x7')](_0x5b32('0x9'),_0x29b34c);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x5b32('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x5b32('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x5b32('0x4')]},'recallme':{'type':Sequelize[_0x5b32('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5b32('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x78b6=['dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','followuptime','diff','seconds'];(function(_0x5df3c1,_0x31881c){var _0x4bad48=function(_0x268da3){while(--_0x268da3){_0x5df3c1['push'](_0x5df3c1['shift']());}};_0x4bad48(++_0x31881c);}(_0x78b6,0x178));var _0x678b=function(_0x32f9cd,_0x4ffb36){_0x32f9cd=_0x32f9cd-0x0;var _0xe80ced=_0x78b6[_0x32f9cd];return _0xe80ced;};'use strict';var Sequelize=require(_0x678b('0x0'));var moment=require(_0x678b('0x1'));module[_0x678b('0x2')]={'state':{'type':Sequelize[_0x678b('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x678b('0x4')]},'scheduledat':{'type':Sequelize[_0x678b('0x5')]},'countbusyretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x678b('0x4')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x678b('0x4')]},'calleridname':{'type':Sequelize[_0x678b('0x4')]},'starttime':{'type':Sequelize[_0x678b('0x5')]},'responsetime':{'type':Sequelize[_0x678b('0x5')]},'answertime':{'type':Sequelize[_0x678b('0x5')]},'droptime':{'type':Sequelize[_0x678b('0x5')]},'endtime':{'type':Sequelize[_0x678b('0x5')]},'ringtime':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x678b('0x4')]},'membername':{'type':Sequelize[_0x678b('0x4')]},'reason':{'type':Sequelize[_0x678b('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x678b('0x5')],'set':function(_0x29b4f0){var _0x1539d4=this['getDataValue']('endtime');if(_0x1539d4&&_0x29b4f0){this['setDataValue'](_0x678b('0x6'),moment(_0x29b4f0)[_0x678b('0x7')](moment(_0x1539d4),_0x678b('0x8')));}return this['setDataValue'](_0x678b('0x9'),_0x29b4f0);}},'amd':{'type':Sequelize[_0x678b('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x678b('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x678b('0x5')]},'callback':{'type':Sequelize[_0x678b('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x678b('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x678b('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x678b('0x5')]},'recallme':{'type':Sequelize[_0x678b('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x678b('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x678b('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 0fb839f..8a279d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['calleridnum\x20IS\x20NOT\x20NULL','CmHopper','findOne','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','stack','name','send','index','map','CmHopperFinal','rawAttributes','type','key','model','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','keys','filters','intersection','describe','catch','body','uniqueid','find','params','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','moveContactsQueueCampaignHopperFinal','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','from','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','Campaign','cm_hopper','CampaignId','ANY_VALUE(ListId)','CampaignId\x20=\x20?','state'];(function(_0x4f9673,_0x4313bd){var _0x337e5e=function(_0x5677cf){while(--_0x5677cf){_0x4f9673['push'](_0x4f9673['shift']());}};_0x337e5e(++_0x4313bd);}(_0x6d38,0x1ef));var _0x86d3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x6d38[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];function respondWithStatusCode(_0x7d4d2e,_0x440a55){_0x440a55=_0x440a55||0xcc;return function(_0x26d64c){if(_0x26d64c){return _0x7d4d2e[_0x86d3('0x14')](_0x440a55);}return _0x7d4d2e[_0x86d3('0x15')](_0x440a55)[_0x86d3('0x16')]();};}function respondWithResult(_0x12ef4a,_0x5ce2ff){_0x5ce2ff=_0x5ce2ff||0xc8;return function(_0x1c1ba8){if(_0x1c1ba8){return _0x12ef4a[_0x86d3('0x15')](_0x5ce2ff)[_0x86d3('0x17')](_0x1c1ba8);}};}function respondWithFilteredResult(_0x207f6f,_0x1ea535){return function(_0x34fb3b){if(_0x34fb3b){var _0x1ff008=typeof _0x1ea535[_0x86d3('0x18')]==='undefined'&&typeof _0x1ea535[_0x86d3('0x19')]===_0x86d3('0x1a');var _0x431b3f=_0x34fb3b[_0x86d3('0x1b')];var _0x46feec=_0x1ff008?0x0:_0x1ea535[_0x86d3('0x18')];var _0x33e459=_0x1ff008?_0x34fb3b[_0x86d3('0x1b')]:_0x1ea535[_0x86d3('0x18')]+_0x1ea535['limit'];var _0x191ba5;if(_0x33e459>=_0x431b3f){_0x33e459=_0x431b3f;_0x191ba5=0xc8;}else{_0x191ba5=0xce;}_0x207f6f['status'](_0x191ba5);return _0x207f6f[_0x86d3('0x1c')]('Content-Range',_0x46feec+'-'+_0x33e459+'/'+_0x431b3f)['json'](_0x34fb3b);}return null;};}function patchUpdates(_0x41486a){return function(_0x1edb6d){try{jsonpatch[_0x86d3('0x1d')](_0x1edb6d,_0x41486a,!![]);}catch(_0x1720ae){return BPromise['reject'](_0x1720ae);}return _0x1edb6d[_0x86d3('0x1e')]();};}function saveUpdates(_0x55e1c3,_0x36e0fa){return function(_0x3fdf67){if(_0x3fdf67){return _0x3fdf67[_0x86d3('0x1f')](_0x55e1c3)['then'](function(_0x39d819){return _0x39d819;});}return null;};}function removeEntity(_0x72b3d4,_0x1fa4ac){return function(_0x4bf5b8){if(_0x4bf5b8){return _0x4bf5b8['destroy']()[_0x86d3('0x20')](function(){_0x72b3d4['status'](0xcc)[_0x86d3('0x16')]();});}};}function handleEntityNotFound(_0x1bea5e,_0x3dfecd){return function(_0x3c5fe4){if(!_0x3c5fe4){_0x1bea5e['sendStatus'](0x194);}return _0x3c5fe4;};}function handleError(_0x481077,_0x3359e4){_0x3359e4=_0x3359e4||0x1f4;return function(_0x611764){logger['error'](_0x611764[_0x86d3('0x21')]);if(_0x611764['name']){delete _0x611764[_0x86d3('0x22')];}_0x481077[_0x86d3('0x15')](_0x3359e4)[_0x86d3('0x23')](_0x611764);};}exports[_0x86d3('0x24')]=function(_0x11a6fd,_0x14c9ff){var _0x1f203e={},_0x35d708={},_0x303f13={'count':0x0,'rows':[]};var _0x44dacf=_[_0x86d3('0x25')](db[_0x86d3('0x26')][_0x86d3('0x27')],function(_0x28c25e){return{'name':_0x28c25e['fieldName'],'type':_0x28c25e[_0x86d3('0x28')][_0x86d3('0x29')]};});_0x35d708[_0x86d3('0x2a')]=_[_0x86d3('0x25')](_0x44dacf,_0x86d3('0x22'));_0x35d708[_0x86d3('0x2b')]=_['keys'](_0x11a6fd[_0x86d3('0x2b')]);_0x35d708['filters']=_['intersection'](_0x35d708[_0x86d3('0x2a')],_0x35d708[_0x86d3('0x2b')]);_0x1f203e[_0x86d3('0x2c')]=_['intersection'](_0x35d708[_0x86d3('0x2a')],qs[_0x86d3('0x2d')](_0x11a6fd['query'][_0x86d3('0x2d')]));_0x1f203e[_0x86d3('0x2c')]=_0x1f203e[_0x86d3('0x2c')][_0x86d3('0x2e')]?_0x1f203e[_0x86d3('0x2c')]:_0x35d708[_0x86d3('0x2a')];if(!_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x2f')]('nolimit')){_0x1f203e['limit']=qs['limit'](_0x11a6fd[_0x86d3('0x2b')]['limit']);_0x1f203e[_0x86d3('0x18')]=qs['offset'](_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x18')]);}_0x1f203e[_0x86d3('0x30')]=qs[_0x86d3('0x31')](_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x31')]);_0x1f203e[_0x86d3('0x32')]=qs['filters'](_[_0x86d3('0x33')](_0x11a6fd[_0x86d3('0x2b')],_0x35d708['filters']),_0x44dacf);if(_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x34')]){_0x1f203e[_0x86d3('0x32')]=_[_0x86d3('0x35')](_0x1f203e['where'],{'$or':_[_0x86d3('0x25')](_0x44dacf,function(_0x42ac0d){if(_0x42ac0d[_0x86d3('0x28')]!=='VIRTUAL'){var _0x5762ca={};_0x5762ca[_0x42ac0d[_0x86d3('0x22')]]={'$like':'%'+_0x11a6fd[_0x86d3('0x2b')][_0x86d3('0x34')]+'%'};return _0x5762ca;}})});}_0x1f203e=_[_0x86d3('0x35')]({},_0x1f203e,_0x11a6fd[_0x86d3('0x36')]);var _0x3666fc={'where':_0x1f203e[_0x86d3('0x32')]};return db['CmHopperFinal'][_0x86d3('0x1b')](_0x3666fc)[_0x86d3('0x20')](function(_0x2bdc67){_0x303f13[_0x86d3('0x1b')]=_0x2bdc67;if(_0x11a6fd['query'][_0x86d3('0x37')]){_0x1f203e[_0x86d3('0x38')]=[{'all':!![]}];}return db[_0x86d3('0x26')][_0x86d3('0x39')](_0x1f203e);})['then'](function(_0x587747){_0x303f13[_0x86d3('0x3a')]=_0x587747;return _0x303f13;})['then'](respondWithFilteredResult(_0x14c9ff,_0x1f203e))['catch'](handleError(_0x14c9ff,null));};exports[_0x86d3('0x3b')]=function(_0x1385fc,_0x43490a){var _0x35d6fe={'raw':!![],'where':{'id':_0x1385fc['params']['id']}},_0x23ef72={};_0x23ef72[_0x86d3('0x2a')]=_[_0x86d3('0x3c')](db[_0x86d3('0x26')]['rawAttributes']);_0x23ef72[_0x86d3('0x2b')]=_[_0x86d3('0x3c')](_0x1385fc['query']);_0x23ef72[_0x86d3('0x3d')]=_[_0x86d3('0x3e')](_0x23ef72['model'],_0x23ef72['query']);_0x35d6fe['attributes']=_[_0x86d3('0x3e')](_0x23ef72[_0x86d3('0x2a')],qs[_0x86d3('0x2d')](_0x1385fc[_0x86d3('0x2b')][_0x86d3('0x2d')]));_0x35d6fe[_0x86d3('0x2c')]=_0x35d6fe['attributes'][_0x86d3('0x2e')]?_0x35d6fe[_0x86d3('0x2c')]:_0x23ef72['model'];if(_0x1385fc[_0x86d3('0x2b')][_0x86d3('0x37')]){_0x35d6fe[_0x86d3('0x38')]=[{'all':!![]}];}_0x35d6fe=_[_0x86d3('0x35')]({},_0x35d6fe,_0x1385fc[_0x86d3('0x36')]);return db[_0x86d3('0x26')]['find'](_0x35d6fe)[_0x86d3('0x20')](handleEntityNotFound(_0x43490a,null))[_0x86d3('0x20')](respondWithResult(_0x43490a,null))['catch'](handleError(_0x43490a,null));};exports[_0x86d3('0x3f')]=function(_0x412d0e,_0xd20863){return db[_0x86d3('0x26')][_0x86d3('0x3f')]()['then'](respondWithResult(_0xd20863,null))[_0x86d3('0x40')](handleError(_0xd20863,null));};exports[_0x86d3('0x1f')]=function(_0x3226b5,_0x14fa58){if(_0x3226b5[_0x86d3('0x41')][_0x86d3('0x42')]){delete _0x3226b5[_0x86d3('0x41')][_0x86d3('0x42')];}return db[_0x86d3('0x26')][_0x86d3('0x43')]({'where':{'uniqueid':_0x3226b5[_0x86d3('0x44')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x14fa58,null))['then'](saveUpdates(_0x3226b5[_0x86d3('0x41')],null))[_0x86d3('0x20')](respondWithResult(_0x14fa58,null))['catch'](handleError(_0x14fa58,null));};exports[_0x86d3('0x45')]=function(_0x23a6ee,_0x197047,_0x2e9af5){return db[_0x86d3('0x26')][_0x86d3('0x39')]({'raw':![],'where':{'VoiceQueueId':_0x23a6ee['params']['id']},'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x48')))),_0x86d3('0x49')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db['sequelize'][_0x86d3('0x47')](_0x86d3('0x4b')))),_0x86d3('0x4c')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')]['literal'](_0x86d3('0x4d')))),'busyContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')]('`state`\x20=\x208,\x201,\x20null'))),_0x86d3('0x4e')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x86d3('0x4f')))),'dropContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x50')))),_0x86d3('0x51')],[db[_0x86d3('0x46')]['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x52')))),'answeringMachine']]})[_0x86d3('0x20')](handleEntityNotFound(_0x197047,null))[_0x86d3('0x20')](respondWithResult(_0x197047,null))['catch'](handleError(_0x197047,null));};exports[_0x86d3('0x53')]=function(_0x416428,_0x15cdd0,_0x29bdee){return db[_0x86d3('0x26')][_0x86d3('0x39')]({'raw':![],'where':{'CampaignId':_0x416428[_0x86d3('0x44')]['id']},'attributes':[[db['sequelize']['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x86d3('0x49')],[db['sequelize']['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x4b')))),'noAnswerContacts'],[db['sequelize']['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x4d')))),_0x86d3('0x54')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x55')))),_0x86d3('0x4e')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db[_0x86d3('0x46')]['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x86d3('0x56')],[db[_0x86d3('0x46')]['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x57')))),_0x86d3('0x58')],[db['sequelize']['fn'](_0x86d3('0x4a'),db['sequelize']['fn']('IF',db[_0x86d3('0x46')][_0x86d3('0x47')](_0x86d3('0x50')))),_0x86d3('0x51')],[db[_0x86d3('0x46')]['fn']('COUNT',db[_0x86d3('0x46')]['fn']('IF',db['sequelize'][_0x86d3('0x47')](_0x86d3('0x52')))),'answeringMachine']]})[_0x86d3('0x20')](handleEntityNotFound(_0x15cdd0,null))[_0x86d3('0x20')](respondWithResult(_0x15cdd0,null))[_0x86d3('0x40')](handleError(_0x15cdd0,null));};exports[_0x86d3('0x59')]=function(_0x308fed,_0x1c966a,_0x379799){return db['VoiceQueue'][_0x86d3('0x43')]({'where':{'id':_0x308fed[_0x86d3('0x44')]['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x1c966a,null))[_0x86d3('0x20')](function(_0x46e356){var _0x47f72e;if(_0x46e356){_0x47f72e=squel[_0x86d3('0x5a')]()[_0x86d3('0x5b')]('cm_hopper')[_0x86d3('0x5c')]([_0x86d3('0x5d'),_0x86d3('0x5e'),_0x86d3('0x5f'),_0x86d3('0x60'),_0x86d3('0x61'),_0x86d3('0x62'),_0x86d3('0x63')],squel[_0x86d3('0x64')]()[_0x86d3('0x65')](_0x86d3('0x66'),_0x86d3('0x5d'))[_0x86d3('0x65')](_0x86d3('0x67'),'scheduledAt')[_0x86d3('0x65')](_0x86d3('0x68'),_0x86d3('0x5f'))[_0x86d3('0x65')]('ANY_VALUE(ListId)',_0x86d3('0x60'))[_0x86d3('0x65')](_0x86d3('0x69'),_0x86d3('0x61'))['field']('NOW()',_0x86d3('0x62'))['field'](_0x86d3('0x67'),'updatedAt')['from'](_0x86d3('0x6a'))[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]())['where'](_0x86d3('0x6d'),_0x308fed[_0x86d3('0x41')]['state'][_0x86d3('0x6c')]())[_0x86d3('0x32')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x86d3('0x32')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x86d3('0x64')]()['field']('phone')[_0x86d3('0x6e')]('cm_hopper')[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]()))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()[_0x86d3('0x65')]('calleridnum')[_0x86d3('0x6e')](_0x86d3('0x6a'))[_0x86d3('0x32')](_0x86d3('0x6b'),_0x308fed[_0x86d3('0x44')]['id']['toString']())[_0x86d3('0x32')](_0x86d3('0x70')))[_0x86d3('0x71')](_0x86d3('0x5f')))[_0x86d3('0x6c')]();return db[_0x86d3('0x46')][_0x86d3('0x2b')](_0x47f72e);}return[];})['then'](respondWithResult(_0x1c966a,null))[_0x86d3('0x40')](handleError(_0x1c966a,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0xca2e0,_0x596b1d,_0x5a22ca){return db[_0x86d3('0x72')][_0x86d3('0x43')]({'where':{'id':_0xca2e0['params']['id']}})[_0x86d3('0x20')](handleEntityNotFound(_0x596b1d,null))[_0x86d3('0x20')](function(_0x879a8b){var _0x1c1384;if(_0x879a8b){_0x1c1384=squel[_0x86d3('0x5a')]()[_0x86d3('0x5b')](_0x86d3('0x73'))['fromQuery'](['phone',_0x86d3('0x5e'),_0x86d3('0x5f'),_0x86d3('0x60'),_0x86d3('0x74'),_0x86d3('0x62'),_0x86d3('0x63')],squel['select']()[_0x86d3('0x65')](_0x86d3('0x66'),_0x86d3('0x5d'))[_0x86d3('0x65')](_0x86d3('0x67'),_0x86d3('0x5e'))[_0x86d3('0x65')](_0x86d3('0x68'),_0x86d3('0x5f'))['field'](_0x86d3('0x75'),_0x86d3('0x60'))['field']('ANY_VALUE(CampaignId)',_0x86d3('0x74'))[_0x86d3('0x65')](_0x86d3('0x67'),'createdAt')[_0x86d3('0x65')](_0x86d3('0x67'),_0x86d3('0x63'))[_0x86d3('0x6e')](_0x86d3('0x6a'))['where'](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id']['toString']())[_0x86d3('0x32')](_0x86d3('0x6d'),_0xca2e0[_0x86d3('0x41')][_0x86d3('0x77')]['toString']())[_0x86d3('0x32')](_0x86d3('0x78'))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()['field'](_0x86d3('0x5d'))[_0x86d3('0x6e')](_0x86d3('0x73'))[_0x86d3('0x32')](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]()))[_0x86d3('0x32')](_0x86d3('0x6f'),squel[_0x86d3('0x64')]()['field']('calleridnum')[_0x86d3('0x6e')](_0x86d3('0x6a'))['where'](_0x86d3('0x76'),_0xca2e0[_0x86d3('0x44')]['id'][_0x86d3('0x6c')]())[_0x86d3('0x32')](_0x86d3('0x70')))[_0x86d3('0x71')](_0x86d3('0x5f')))[_0x86d3('0x6c')]();return db[_0x86d3('0x46')]['query'](_0x1c1384);}return[];})['then'](respondWithResult(_0x596b1d,null))['catch'](handleError(_0x596b1d,null));};exports['checkContactHopper']=function(_0xad83bf,_0x2514c1,_0x28a509){return db[_0x86d3('0x79')][_0x86d3('0x7a')]({'where':{'VoiceQueueId':_0xad83bf[_0x86d3('0x41')][_0x86d3('0x61')],'CampaignId':_0xad83bf['body'][_0x86d3('0x74')],'ContactId':_0xad83bf[_0x86d3('0x41')][_0x86d3('0x5f')]}})[_0x86d3('0x20')](handleEntityNotFound(_0x2514c1,null))['then'](function(_0xe239b5){if(_0xe239b5){return _0xe239b5;}return null;})['then'](respondWithResult(_0x2514c1,null))[_0x86d3('0x40')](handleError(_0x2514c1,null));};
\ No newline at end of file
+var _0x187d=['state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','select','from','cm_hopper','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','into','CampaignId','CampaignId\x20=\x20?','state','checkContactHopper','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','update','destroy','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','where','filter','merge','includeAll','include','findAll','then','rows','catch','show','params','fields','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId\x20=\x20?','toString'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x187d,0x93));var _0xd187=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0x187d[_0x5c3c0b];return _0x52ecd2;};'use strict';var emlformat=require(_0xd187('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd187('0x1'));var jsonpatch=require(_0xd187('0x2'));var rp=require(_0xd187('0x3'));var moment=require(_0xd187('0x4'));var BPromise=require(_0xd187('0x5'));var Mustache=require(_0xd187('0x6'));var util=require('util');var path=require(_0xd187('0x7'));var sox=require(_0xd187('0x8'));var csv=require('to-csv');var ejs=require(_0xd187('0x9'));var fs=require('fs');var fs_extra=require(_0xd187('0xa'));var _=require(_0xd187('0xb'));var squel=require(_0xd187('0xc'));var crypto=require(_0xd187('0xd'));var jsforce=require(_0xd187('0xe'));var deskjs=require(_0xd187('0xf'));var toCsv=require(_0xd187('0x10'));var querystring=require('querystring');var Papa=require(_0xd187('0x11'));var Redis=require(_0xd187('0x12'));var authService=require(_0xd187('0x13'));var qs=require(_0xd187('0x14'));var as=require(_0xd187('0x15'));var hardwareService=require(_0xd187('0x16'));var logger=require('../../config/logger')(_0xd187('0x17'));var utils=require(_0xd187('0x18'));var config=require(_0xd187('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd187('0x1a'))['db'];function respondWithStatusCode(_0x4545cf,_0x32ba07){_0x32ba07=_0x32ba07||0xcc;return function(_0x59ee4a){if(_0x59ee4a){return _0x4545cf[_0xd187('0x1b')](_0x32ba07);}return _0x4545cf[_0xd187('0x1c')](_0x32ba07)[_0xd187('0x1d')]();};}function respondWithResult(_0x126d1a,_0x517b25){_0x517b25=_0x517b25||0xc8;return function(_0x39a927){if(_0x39a927){return _0x126d1a[_0xd187('0x1c')](_0x517b25)[_0xd187('0x1e')](_0x39a927);}};}function respondWithFilteredResult(_0x188cfe,_0x4c8f68){return function(_0x245d3e){if(_0x245d3e){var _0x52a208=typeof _0x4c8f68['offset']===_0xd187('0x1f')&&typeof _0x4c8f68['limit']==='undefined';var _0x207b36=_0x245d3e[_0xd187('0x20')];var _0x374fe0=_0x52a208?0x0:_0x4c8f68[_0xd187('0x21')];var _0x21df74=_0x52a208?_0x245d3e[_0xd187('0x20')]:_0x4c8f68[_0xd187('0x21')]+_0x4c8f68[_0xd187('0x22')];var _0x4f2f88;if(_0x21df74>=_0x207b36){_0x21df74=_0x207b36;_0x4f2f88=0xc8;}else{_0x4f2f88=0xce;}_0x188cfe[_0xd187('0x1c')](_0x4f2f88);return _0x188cfe[_0xd187('0x23')](_0xd187('0x24'),_0x374fe0+'-'+_0x21df74+'/'+_0x207b36)[_0xd187('0x1e')](_0x245d3e);}return null;};}function patchUpdates(_0x5204ee){return function(_0x2f7fb3){try{jsonpatch[_0xd187('0x25')](_0x2f7fb3,_0x5204ee,!![]);}catch(_0xc5bba5){return BPromise['reject'](_0xc5bba5);}return _0x2f7fb3['save']();};}function saveUpdates(_0x57cf1d,_0x435d94){return function(_0x33741d){if(_0x33741d){return _0x33741d[_0xd187('0x26')](_0x57cf1d)['then'](function(_0x2c07c8){return _0x2c07c8;});}return null;};}function removeEntity(_0x57186b,_0x145771){return function(_0x5a7a23){if(_0x5a7a23){return _0x5a7a23[_0xd187('0x27')]()['then'](function(){_0x57186b['status'](0xcc)[_0xd187('0x1d')]();});}};}function handleEntityNotFound(_0x4d992b,_0x12da33){return function(_0x598aa4){if(!_0x598aa4){_0x4d992b['sendStatus'](0x194);}return _0x598aa4;};}function handleError(_0x4eac6a,_0x848ddd){_0x848ddd=_0x848ddd||0x1f4;return function(_0xeff822){logger[_0xd187('0x28')](_0xeff822[_0xd187('0x29')]);if(_0xeff822['name']){delete _0xeff822[_0xd187('0x2a')];}_0x4eac6a[_0xd187('0x1c')](_0x848ddd)['send'](_0xeff822);};}exports[_0xd187('0x2b')]=function(_0x1c87ee,_0x34febe){var _0x4c50a5={},_0x15e2e8={},_0x56e292={'count':0x0,'rows':[]};var _0x263e31=_[_0xd187('0x2c')](db[_0xd187('0x2d')][_0xd187('0x2e')],function(_0x489f2e){return{'name':_0x489f2e[_0xd187('0x2f')],'type':_0x489f2e[_0xd187('0x30')]['key']};});_0x15e2e8['model']=_[_0xd187('0x2c')](_0x263e31,_0xd187('0x2a'));_0x15e2e8[_0xd187('0x31')]=_[_0xd187('0x32')](_0x1c87ee[_0xd187('0x31')]);_0x15e2e8[_0xd187('0x33')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],_0x15e2e8['query']);_0x4c50a5[_0xd187('0x36')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],qs['fields'](_0x1c87ee[_0xd187('0x31')]['fields']));_0x4c50a5[_0xd187('0x36')]=_0x4c50a5[_0xd187('0x36')][_0xd187('0x37')]?_0x4c50a5['attributes']:_0x15e2e8['model'];if(!_0x1c87ee[_0xd187('0x31')][_0xd187('0x38')]('nolimit')){_0x4c50a5[_0xd187('0x22')]=qs[_0xd187('0x22')](_0x1c87ee[_0xd187('0x31')]['limit']);_0x4c50a5['offset']=qs[_0xd187('0x21')](_0x1c87ee[_0xd187('0x31')]['offset']);}_0x4c50a5['order']=qs['sort'](_0x1c87ee[_0xd187('0x31')]['sort']);_0x4c50a5[_0xd187('0x39')]=qs[_0xd187('0x33')](_['pick'](_0x1c87ee[_0xd187('0x31')],_0x15e2e8['filters']),_0x263e31);if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]){_0x4c50a5['where']=_[_0xd187('0x3b')](_0x4c50a5[_0xd187('0x39')],{'$or':_['map'](_0x263e31,function(_0x4399a5){if(_0x4399a5['type']!=='VIRTUAL'){var _0x26b06d={};_0x26b06d[_0x4399a5[_0xd187('0x2a')]]={'$like':'%'+_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]+'%'};return _0x26b06d;}})});}_0x4c50a5=_[_0xd187('0x3b')]({},_0x4c50a5,_0x1c87ee['options']);var _0x8860c={'where':_0x4c50a5[_0xd187('0x39')]};return db[_0xd187('0x2d')]['count'](_0x8860c)['then'](function(_0x538c05){_0x56e292['count']=_0x538c05;if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3c')]){_0x4c50a5[_0xd187('0x3d')]=[{'all':!![]}];}return db[_0xd187('0x2d')][_0xd187('0x3e')](_0x4c50a5);})[_0xd187('0x3f')](function(_0x4699e1){_0x56e292[_0xd187('0x40')]=_0x4699e1;return _0x56e292;})['then'](respondWithFilteredResult(_0x34febe,_0x4c50a5))[_0xd187('0x41')](handleError(_0x34febe,null));};exports[_0xd187('0x42')]=function(_0x31d9d2,_0x51c7fc){var _0x21cbf6={'raw':!![],'where':{'id':_0x31d9d2[_0xd187('0x43')]['id']}},_0x48c100={};_0x48c100[_0xd187('0x35')]=_[_0xd187('0x32')](db[_0xd187('0x2d')][_0xd187('0x2e')]);_0x48c100['query']=_[_0xd187('0x32')](_0x31d9d2[_0xd187('0x31')]);_0x48c100[_0xd187('0x33')]=_[_0xd187('0x34')](_0x48c100['model'],_0x48c100[_0xd187('0x31')]);_0x21cbf6[_0xd187('0x36')]=_['intersection'](_0x48c100[_0xd187('0x35')],qs[_0xd187('0x44')](_0x31d9d2['query']['fields']));_0x21cbf6[_0xd187('0x36')]=_0x21cbf6[_0xd187('0x36')]['length']?_0x21cbf6['attributes']:_0x48c100['model'];if(_0x31d9d2[_0xd187('0x31')][_0xd187('0x3c')]){_0x21cbf6[_0xd187('0x3d')]=[{'all':!![]}];}_0x21cbf6=_[_0xd187('0x3b')]({},_0x21cbf6,_0x31d9d2[_0xd187('0x45')]);return db[_0xd187('0x2d')][_0xd187('0x46')](_0x21cbf6)['then'](handleEntityNotFound(_0x51c7fc,null))[_0xd187('0x3f')](respondWithResult(_0x51c7fc,null))[_0xd187('0x41')](handleError(_0x51c7fc,null));};exports[_0xd187('0x47')]=function(_0x3ce4a1,_0x3f5def){return db[_0xd187('0x2d')][_0xd187('0x47')]()[_0xd187('0x3f')](respondWithResult(_0x3f5def,null))['catch'](handleError(_0x3f5def,null));};exports[_0xd187('0x26')]=function(_0x2657be,_0x4523c8){if(_0x2657be[_0xd187('0x48')][_0xd187('0x49')]){delete _0x2657be['body'][_0xd187('0x49')];}return db[_0xd187('0x2d')]['find']({'where':{'uniqueid':_0x2657be[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x4523c8,null))['then'](saveUpdates(_0x2657be['body'],null))['then'](respondWithResult(_0x4523c8,null))['catch'](handleError(_0x4523c8,null));};exports[_0xd187('0x4a')]=function(_0x22f432,_0x12d448,_0x1bcc3a){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'VoiceQueueId':_0x22f432[_0xd187('0x43')]['id']},'attributes':[[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x200,\x201,\x20null'))),_0xd187('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x4f')))),_0xd187('0x50')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x52')))),'congestionContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xd187('0x53')],[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2022,\x201,\x20null'))),_0xd187('0x56')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x12d448,null))[_0xd187('0x3f')](respondWithResult(_0x12d448,null))[_0xd187('0x41')](handleError(_0x12d448,null));};exports[_0xd187('0x59')]=function(_0x23271b,_0x288a04,_0x39934c){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'CampaignId':_0x23271b[_0xd187('0x43')]['id']},'attributes':[[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x5a')))),_0xd187('0x4e')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x52')))),_0xd187('0x5b')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize']['literal'](_0xd187('0x5c')))),_0xd187('0x53')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x5d')))),'reCallContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x288a04,null))['then'](respondWithResult(_0x288a04,null))[_0xd187('0x41')](handleError(_0x288a04,null));};exports[_0xd187('0x5e')]=function(_0x52e364,_0x569959,_0x3bca83){return db['VoiceQueue'][_0xd187('0x46')]({'where':{'id':_0x52e364[_0xd187('0x43')]['id']}})['then'](handleEntityNotFound(_0x569959,null))[_0xd187('0x3f')](function(_0x570c1c){var _0x317bc3;if(_0x570c1c){_0x317bc3=squel['insert']()['into']('cm_hopper')[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x64'),_0xd187('0x65'),_0xd187('0x66')],squel['select']()[_0xd187('0x67')](_0xd187('0x68'),_0xd187('0x60'))['field'](_0xd187('0x69'),_0xd187('0x61'))[_0xd187('0x67')](_0xd187('0x6a'),'ContactId')[_0xd187('0x67')](_0xd187('0x6b'),'ListId')[_0xd187('0x67')](_0xd187('0x6c'),_0xd187('0x64'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')]('NOW()',_0xd187('0x66'))['from']('cm_hopper_final')['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x6f'),_0x52e364[_0xd187('0x48')]['state'][_0xd187('0x6e')]())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x60'))[_0xd187('0x72')](_0xd187('0x73'))['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x74'))[_0xd187('0x72')](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x6d'),_0x52e364['params']['id']['toString']())[_0xd187('0x39')](_0xd187('0x76')))[_0xd187('0x77')](_0xd187('0x62')))[_0xd187('0x6e')]();return db[_0xd187('0x4c')]['query'](_0x317bc3);}return[];})[_0xd187('0x3f')](respondWithResult(_0x569959,null))['catch'](handleError(_0x569959,null));};exports[_0xd187('0x78')]=function(_0x520f86,_0x5cbfa6,_0x304117){return db['Campaign'][_0xd187('0x46')]({'where':{'id':_0x520f86[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x5cbfa6,null))[_0xd187('0x3f')](function(_0x1b93db){var _0x13a362;if(_0x1b93db){_0x13a362=squel[_0xd187('0x79')]()[_0xd187('0x7a')](_0xd187('0x73'))[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x7b'),'createdAt',_0xd187('0x66')],squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x68'),'phone')[_0xd187('0x67')](_0xd187('0x69'),'scheduledAt')['field'](_0xd187('0x6a'),_0xd187('0x62'))[_0xd187('0x67')](_0xd187('0x6b'),_0xd187('0x63'))[_0xd187('0x67')]('ANY_VALUE(CampaignId)',_0xd187('0x7b'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')](_0xd187('0x69'),_0xd187('0x66'))['from']('cm_hopper_final')[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id']['toString']())[_0xd187('0x39')](_0xd187('0x6f'),_0x520f86[_0xd187('0x48')][_0xd187('0x7d')]['toString']())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field']('phone')['from'](_0xd187('0x73'))[_0xd187('0x39')]('CampaignId\x20=\x20?',_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()['field'](_0xd187('0x74'))['from'](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x76')))['group'](_0xd187('0x62')))[_0xd187('0x6e')]();return db['sequelize'][_0xd187('0x31')](_0x13a362);}return[];})[_0xd187('0x3f')](respondWithResult(_0x5cbfa6,null))['catch'](handleError(_0x5cbfa6,null));};exports[_0xd187('0x7e')]=function(_0x3bd1d8,_0x224312,_0x45b522){return db[_0xd187('0x7f')][_0xd187('0x80')]({'where':{'VoiceQueueId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x64')],'CampaignId':_0x3bd1d8['body'][_0xd187('0x7b')],'ContactId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x62')]}})[_0xd187('0x3f')](handleEntityNotFound(_0x224312,null))[_0xd187('0x3f')](function(_0x400a9){if(_0x400a9){return _0x400a9;}return null;})['then'](respondWithResult(_0x224312,null))['catch'](handleError(_0x224312,null));};
\ No newline at end of file
index 72e326c..264e010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30af=['calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final'];(function(_0x3c9b66,_0xcacdeb){var _0x2d645d=function(_0x4d4ced){while(--_0x4d4ced){_0x3c9b66['push'](_0x3c9b66['shift']());}};_0x2d645d(++_0xcacdeb);}(_0x30af,0x134));var _0xf30a=function(_0x23a1ec,_0x2d521f){_0x23a1ec=_0x23a1ec-0x0;var _0x539cce=_0x30af[_0x23a1ec];return _0x539cce;};'use strict';var _=require(_0xf30a('0x0'));var util=require(_0xf30a('0x1'));var logger=require(_0xf30a('0x2'))(_0xf30a('0x3'));var moment=require(_0xf30a('0x4'));var BPromise=require(_0xf30a('0x5'));var rp=require(_0xf30a('0x6'));var fs=require('fs');var path=require(_0xf30a('0x7'));var rimraf=require(_0xf30a('0x8'));var config=require(_0xf30a('0x9'));var attributes=require(_0xf30a('0xa'));module[_0xf30a('0xb')]=function(_0x53b6bb,_0x2e2fae){return _0x53b6bb[_0xf30a('0xc')](_0xf30a('0xd'),attributes,{'tableName':_0xf30a('0xe'),'paranoid':![],'indexes':[{'name':_0xf30a('0xf'),'fields':[_0xf30a('0xf')]},{'name':_0xf30a('0x10'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf964=['exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3ebb1b,_0xb58978){var _0xbf91be=function(_0x386bda){while(--_0x386bda){_0x3ebb1b['push'](_0x3ebb1b['shift']());}};_0xbf91be(++_0xb58978);}(_0xf964,0xad));var _0x4f96=function(_0x31a6c0,_0xfa10b7){_0x31a6c0=_0x31a6c0-0x0;var _0x4001c1=_0xf964[_0x31a6c0];return _0x4001c1;};'use strict';var _=require(_0x4f96('0x0'));var util=require('util');var logger=require(_0x4f96('0x1'))(_0x4f96('0x2'));var moment=require(_0x4f96('0x3'));var BPromise=require(_0x4f96('0x4'));var rp=require(_0x4f96('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4f96('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopperFinal.attributes');module[_0x4f96('0x7')]=function(_0x51db8c,_0x1ac858){return _0x51db8c['define'](_0x4f96('0x8'),attributes,{'tableName':_0x4f96('0x9'),'paranoid':![],'indexes':[{'name':_0x4f96('0xa'),'fields':['calleridnum']},{'name':_0x4f96('0xb'),'fields':[_0x4f96('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 2501a65..f26b967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x2e1e72,_0x421478){var _0x3c8678=function(_0x140740){while(--_0x140740){_0x2e1e72['push'](_0x2e1e72['shift']());}};_0x3c8678(++_0x421478);}(_0xb10b,0x12a));var _0xbb10=function(_0x401ec9,_0x77c73f){_0x401ec9=_0x401ec9-0x0;var _0x8ef3a1=_0xb10b[_0x401ec9];return _0x8ef3a1;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x14b755,_0x82eaed){var _0x5016e3=function(_0x3d1cc0){while(--_0x3d1cc0){_0x14b755['push'](_0x14b755['shift']());}};_0x5016e3(++_0x82eaed);}(_0x7a54,0x106));var _0x47a5=function(_0x3853f0,_0x318317){_0x3853f0=_0x3853f0-0x0;var _0x5eae44=_0x7a54[_0x3853f0];return _0x5eae44;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index c10cd77..70b9cbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0737=['/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal'];(function(_0x18fe0d,_0x1aa796){var _0x2691f4=function(_0x1a3748){while(--_0x1a3748){_0x18fe0d['push'](_0x18fe0d['shift']());}};_0x2691f4(++_0x1aa796);}(_0x0737,0x79));var _0x7073=function(_0x53d3db,_0x41bfe3){_0x53d3db=_0x53d3db-0x0;var _0x5953e8=_0x0737[_0x53d3db];return _0x5953e8;};'use strict';var multer=require(_0x7073('0x0'));var util=require(_0x7073('0x1'));var path=require(_0x7073('0x2'));var timeout=require(_0x7073('0x3'));var express=require(_0x7073('0x4'));var router=express[_0x7073('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7073('0x6'));var interaction=require(_0x7073('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperFinal.controller');router['get']('/',auth[_0x7073('0x8')](),controller[_0x7073('0x9')]);router[_0x7073('0xa')](_0x7073('0xb'),auth[_0x7073('0x8')](),controller[_0x7073('0xc')]);router[_0x7073('0xa')](_0x7073('0xd'),auth[_0x7073('0x8')](),controller[_0x7073('0xe')]);router['get'](_0x7073('0xf'),auth[_0x7073('0x8')](),controller[_0x7073('0x10')]);router['get'](_0x7073('0x11'),auth[_0x7073('0x8')](),controller[_0x7073('0x12')]);router['post'](_0x7073('0x13'),auth[_0x7073('0x8')](),controller[_0x7073('0x14')]);router[_0x7073('0x15')](_0x7073('0x16'),auth[_0x7073('0x8')](),controller[_0x7073('0x17')]);router[_0x7073('0x15')](_0x7073('0x18'),auth[_0x7073('0x8')](),controller[_0x7073('0x19')]);router[_0x7073('0x1a')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0x7073('0x1b')]=router;
\ No newline at end of file
+var _0x6d1a=['index','/describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/voice/campaign/moveContacts/:id','checkContactHopper','put','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated'];(function(_0x506d2b,_0x51eba7){var _0x1198da=function(_0xa1c688){while(--_0xa1c688){_0x506d2b['push'](_0x506d2b['shift']());}};_0x1198da(++_0x51eba7);}(_0x6d1a,0x91));var _0xa6d1=function(_0x43b8a6,_0x203bb1){_0x43b8a6=_0x43b8a6-0x0;var _0x2052eb=_0x6d1a[_0x43b8a6];return _0x2052eb;};'use strict';var multer=require(_0xa6d1('0x0'));var util=require(_0xa6d1('0x1'));var path=require('path');var timeout=require(_0xa6d1('0x2'));var express=require(_0xa6d1('0x3'));var router=express['Router']();var fs_extra=require(_0xa6d1('0x4'));var auth=require(_0xa6d1('0x5'));var interaction=require(_0xa6d1('0x6'));var config=require(_0xa6d1('0x7'));var controller=require(_0xa6d1('0x8'));router[_0xa6d1('0x9')]('/',auth[_0xa6d1('0xa')](),controller[_0xa6d1('0xb')]);router[_0xa6d1('0x9')](_0xa6d1('0xc'),auth[_0xa6d1('0xa')](),controller['describe']);router[_0xa6d1('0x9')](_0xa6d1('0xd'),auth[_0xa6d1('0xa')](),controller[_0xa6d1('0xe')]);router[_0xa6d1('0x9')](_0xa6d1('0xf'),auth[_0xa6d1('0xa')](),controller['countContactsQueueCampaignHopperFinal']);router[_0xa6d1('0x9')](_0xa6d1('0x10'),auth[_0xa6d1('0xa')](),controller[_0xa6d1('0x11')]);router['post'](_0xa6d1('0x12'),auth['isAuthenticated'](),controller[_0xa6d1('0x13')]);router[_0xa6d1('0x14')](_0xa6d1('0x15'),auth[_0xa6d1('0xa')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0xa6d1('0x14')]('/checkContactHopper',auth[_0xa6d1('0xa')](),controller[_0xa6d1('0x16')]);router[_0xa6d1('0x17')](_0xa6d1('0xd'),auth[_0xa6d1('0xa')](),controller[_0xa6d1('0x18')]);module[_0xa6d1('0x19')]=router;
\ No newline at end of file
index 95ff16a..18a8c95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f3=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x3c51d4,_0x36ba53){var _0x53c45f=function(_0x3d6683){while(--_0x3d6683){_0x3c51d4['push'](_0x3c51d4['shift']());}};_0x53c45f(++_0x36ba53);}(_0x18f3,0xcb));var _0x318f=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x18f3[_0x47e7cb];return _0x2a8874;};'use strict';var Sequelize=require(_0x318f('0x0'));module[_0x318f('0x1')]={'state':{'type':Sequelize[_0x318f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x318f('0x3')]},'scheduledat':{'type':Sequelize[_0x318f('0x4')]},'countbusyretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x318f('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x318f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x318f('0x3')]},'calleridnum':{'type':Sequelize[_0x318f('0x3')]},'calleridname':{'type':Sequelize[_0x318f('0x3')]},'starttime':{'type':Sequelize[_0x318f('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x318f('0x4')]},'droptime':{'type':Sequelize[_0x318f('0x4')]},'endtime':{'type':Sequelize[_0x318f('0x4')]},'ringtime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x318f('0x3')]},'reason':{'type':Sequelize[_0x318f('0x3')]},'amd':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x318f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x318f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x318f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6cb8=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x421263,_0x18187d){var _0x34e4b5=function(_0x4e7978){while(--_0x4e7978){_0x421263['push'](_0x421263['shift']());}};_0x34e4b5(++_0x18187d);}(_0x6cb8,0xe3));var _0x86cb=function(_0x478dbb,_0x48b454){_0x478dbb=_0x478dbb-0x0;var _0x3ff700=_0x6cb8[_0x478dbb];return _0x3ff700;};'use strict';var Sequelize=require(_0x86cb('0x0'));module[_0x86cb('0x1')]={'state':{'type':Sequelize[_0x86cb('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x86cb('0x3')]},'scheduledat':{'type':Sequelize[_0x86cb('0x4')]},'countbusyretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x86cb('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x86cb('0x3')]},'calleridname':{'type':Sequelize[_0x86cb('0x3')]},'starttime':{'type':Sequelize[_0x86cb('0x4')]},'responsetime':{'type':Sequelize[_0x86cb('0x4')]},'answertime':{'type':Sequelize[_0x86cb('0x4')]},'droptime':{'type':Sequelize[_0x86cb('0x4')]},'endtime':{'type':Sequelize[_0x86cb('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x86cb('0x3')]},'campaign':{'type':Sequelize[_0x86cb('0x3')]},'campaigntype':{'type':Sequelize[_0x86cb('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x86cb('0x3')]},'amd':{'type':Sequelize[_0x86cb('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x86cb('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x86cb('0x4')]},'recallme':{'type':Sequelize[_0x86cb('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x86cb('0x4')]},'edited':{'type':Sequelize[_0x86cb('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x86cb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 9611339..850d484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaee4=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','CmHopperHistory','findAll','rows','catch','show','includeAll','include','options','find','create','body','describe','uniqueid','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaee4,0x95));var _0x4aee=function(_0x28172,_0x48c229){_0x28172=_0x28172-0x0;var _0x23c3e9=_0xaee4[_0x28172];return _0x23c3e9;};'use strict';var emlformat=require(_0x4aee('0x0'));var rimraf=require(_0x4aee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4aee('0x2'));var rp=require(_0x4aee('0x3'));var moment=require('moment');var BPromise=require(_0x4aee('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4aee('0x5'));var sox=require(_0x4aee('0x6'));var csv=require(_0x4aee('0x7'));var ejs=require(_0x4aee('0x8'));var fs=require('fs');var fs_extra=require(_0x4aee('0x9'));var _=require(_0x4aee('0xa'));var squel=require(_0x4aee('0xb'));var crypto=require(_0x4aee('0xc'));var jsforce=require(_0x4aee('0xd'));var deskjs=require(_0x4aee('0xe'));var toCsv=require(_0x4aee('0x7'));var querystring=require(_0x4aee('0xf'));var Papa=require(_0x4aee('0x10'));var Redis=require(_0x4aee('0x11'));var authService=require(_0x4aee('0x12'));var qs=require(_0x4aee('0x13'));var as=require(_0x4aee('0x14'));var hardwareService=require(_0x4aee('0x15'));var logger=require(_0x4aee('0x16'))(_0x4aee('0x17'));var utils=require(_0x4aee('0x18'));var config=require(_0x4aee('0x19'));var licenseUtil=require(_0x4aee('0x1a'));var db=require(_0x4aee('0x1b'))['db'];function respondWithStatusCode(_0x35573b,_0x9f8f7e){_0x9f8f7e=_0x9f8f7e||0xcc;return function(_0x82af9a){if(_0x82af9a){return _0x35573b['sendStatus'](_0x9f8f7e);}return _0x35573b[_0x4aee('0x1c')](_0x9f8f7e)[_0x4aee('0x1d')]();};}function respondWithResult(_0x30b4a0,_0x530156){_0x530156=_0x530156||0xc8;return function(_0x2571f6){if(_0x2571f6){return _0x30b4a0[_0x4aee('0x1c')](_0x530156)['json'](_0x2571f6);}};}function respondWithFilteredResult(_0x5adb3f,_0x15f0c3){return function(_0x3b6138){if(_0x3b6138){var _0x4d362d=typeof _0x15f0c3[_0x4aee('0x1e')]===_0x4aee('0x1f')&&typeof _0x15f0c3[_0x4aee('0x20')]===_0x4aee('0x1f');var _0x35b27b=_0x3b6138[_0x4aee('0x21')];var _0x315c33=_0x4d362d?0x0:_0x15f0c3[_0x4aee('0x1e')];var _0x55b667=_0x4d362d?_0x3b6138[_0x4aee('0x21')]:_0x15f0c3['offset']+_0x15f0c3['limit'];var _0x2bc9df;if(_0x55b667>=_0x35b27b){_0x55b667=_0x35b27b;_0x2bc9df=0xc8;}else{_0x2bc9df=0xce;}_0x5adb3f[_0x4aee('0x1c')](_0x2bc9df);return _0x5adb3f[_0x4aee('0x22')]('Content-Range',_0x315c33+'-'+_0x55b667+'/'+_0x35b27b)[_0x4aee('0x23')](_0x3b6138);}return null;};}function patchUpdates(_0x3fbe27){return function(_0x3c1ca6){try{jsonpatch[_0x4aee('0x24')](_0x3c1ca6,_0x3fbe27,!![]);}catch(_0x106724){return BPromise[_0x4aee('0x25')](_0x106724);}return _0x3c1ca6[_0x4aee('0x26')]();};}function saveUpdates(_0x542ca8,_0x540c91){return function(_0x43362b){if(_0x43362b){return _0x43362b[_0x4aee('0x27')](_0x542ca8)['then'](function(_0x46d8ff){return _0x46d8ff;});}return null;};}function removeEntity(_0x29cb4b,_0x483e94){return function(_0x5a7a4a){if(_0x5a7a4a){return _0x5a7a4a[_0x4aee('0x28')]()[_0x4aee('0x29')](function(){_0x29cb4b[_0x4aee('0x1c')](0xcc)[_0x4aee('0x1d')]();});}};}function handleEntityNotFound(_0x496043,_0x8709b0){return function(_0x23a2d9){if(!_0x23a2d9){_0x496043['sendStatus'](0x194);}return _0x23a2d9;};}function handleError(_0x4b895a,_0x44ba3c){_0x44ba3c=_0x44ba3c||0x1f4;return function(_0x5ce591){logger[_0x4aee('0x2a')](_0x5ce591[_0x4aee('0x2b')]);if(_0x5ce591[_0x4aee('0x2c')]){delete _0x5ce591[_0x4aee('0x2c')];}_0x4b895a[_0x4aee('0x1c')](_0x44ba3c)[_0x4aee('0x2d')](_0x5ce591);};}exports[_0x4aee('0x2e')]=function(_0x103f91,_0x4f72b7){var _0x4e061e={},_0x5e699b={},_0x80e991={'count':0x0,'rows':[]};var _0x47afce=_[_0x4aee('0x2f')](db['CmHopperHistory'][_0x4aee('0x30')],function(_0x9e2246){return{'name':_0x9e2246[_0x4aee('0x31')],'type':_0x9e2246[_0x4aee('0x32')][_0x4aee('0x33')]};});_0x5e699b[_0x4aee('0x34')]=_[_0x4aee('0x2f')](_0x47afce,_0x4aee('0x2c'));_0x5e699b[_0x4aee('0x35')]=_[_0x4aee('0x36')](_0x103f91['query']);_0x5e699b[_0x4aee('0x37')]=_['intersection'](_0x5e699b[_0x4aee('0x34')],_0x5e699b[_0x4aee('0x35')]);_0x4e061e[_0x4aee('0x38')]=_['intersection'](_0x5e699b[_0x4aee('0x34')],qs[_0x4aee('0x39')](_0x103f91[_0x4aee('0x35')][_0x4aee('0x39')]));_0x4e061e[_0x4aee('0x38')]=_0x4e061e[_0x4aee('0x38')][_0x4aee('0x3a')]?_0x4e061e['attributes']:_0x5e699b[_0x4aee('0x34')];if(!_0x103f91[_0x4aee('0x35')][_0x4aee('0x3b')](_0x4aee('0x3c'))){_0x4e061e[_0x4aee('0x20')]=qs['limit'](_0x103f91[_0x4aee('0x35')]['limit']);_0x4e061e[_0x4aee('0x1e')]=qs['offset'](_0x103f91[_0x4aee('0x35')][_0x4aee('0x1e')]);}_0x4e061e[_0x4aee('0x3d')]=qs[_0x4aee('0x3e')](_0x103f91['query']['sort']);_0x4e061e['where']=qs['filters'](_['pick'](_0x103f91['query'],_0x5e699b[_0x4aee('0x37')]),_0x47afce);if(_0x103f91[_0x4aee('0x35')][_0x4aee('0x3f')]){_0x4e061e[_0x4aee('0x40')]=_[_0x4aee('0x41')](_0x4e061e[_0x4aee('0x40')],{'$or':_[_0x4aee('0x2f')](_0x47afce,function(_0x9a0a68){if(_0x9a0a68[_0x4aee('0x32')]!=='VIRTUAL'){var _0x56ac8b={};_0x56ac8b[_0x9a0a68[_0x4aee('0x2c')]]={'$like':'%'+_0x103f91[_0x4aee('0x35')][_0x4aee('0x3f')]+'%'};return _0x56ac8b;}})});}_0x4e061e=_[_0x4aee('0x41')]({},_0x4e061e,_0x103f91['options']);var _0x1f1adf={'where':_0x4e061e['where']};return db['CmHopperHistory']['count'](_0x1f1adf)['then'](function(_0x279b38){_0x80e991[_0x4aee('0x21')]=_0x279b38;if(_0x103f91[_0x4aee('0x35')]['includeAll']){_0x4e061e['include']=[{'all':!![]}];}return db[_0x4aee('0x42')][_0x4aee('0x43')](_0x4e061e);})['then'](function(_0x599d3e){_0x80e991[_0x4aee('0x44')]=_0x599d3e;return _0x80e991;})[_0x4aee('0x29')](respondWithFilteredResult(_0x4f72b7,_0x4e061e))[_0x4aee('0x45')](handleError(_0x4f72b7,null));};exports[_0x4aee('0x46')]=function(_0x491a5c,_0x8b7cd6){var _0x4d2f93={'raw':!![],'where':{'id':_0x491a5c['params']['id']}},_0x49ebef={};_0x49ebef['model']=_[_0x4aee('0x36')](db[_0x4aee('0x42')][_0x4aee('0x30')]);_0x49ebef['query']=_['keys'](_0x491a5c['query']);_0x49ebef['filters']=_['intersection'](_0x49ebef[_0x4aee('0x34')],_0x49ebef[_0x4aee('0x35')]);_0x4d2f93[_0x4aee('0x38')]=_['intersection'](_0x49ebef[_0x4aee('0x34')],qs[_0x4aee('0x39')](_0x491a5c[_0x4aee('0x35')]['fields']));_0x4d2f93[_0x4aee('0x38')]=_0x4d2f93[_0x4aee('0x38')]['length']?_0x4d2f93['attributes']:_0x49ebef[_0x4aee('0x34')];if(_0x491a5c[_0x4aee('0x35')][_0x4aee('0x47')]){_0x4d2f93[_0x4aee('0x48')]=[{'all':!![]}];}_0x4d2f93=_[_0x4aee('0x41')]({},_0x4d2f93,_0x491a5c[_0x4aee('0x49')]);return db[_0x4aee('0x42')][_0x4aee('0x4a')](_0x4d2f93)['then'](handleEntityNotFound(_0x8b7cd6,null))[_0x4aee('0x29')](respondWithResult(_0x8b7cd6,null))[_0x4aee('0x45')](handleError(_0x8b7cd6,null));};exports[_0x4aee('0x4b')]=function(_0x55f712,_0x4bc895){return db[_0x4aee('0x42')][_0x4aee('0x4b')](_0x55f712[_0x4aee('0x4c')],{})[_0x4aee('0x29')](respondWithResult(_0x4bc895,0xc9))['catch'](handleError(_0x4bc895,null));};exports[_0x4aee('0x4d')]=function(_0x3d3ec1,_0x4b9741){return db['CmHopperHistory']['describe']()[_0x4aee('0x29')](respondWithResult(_0x4b9741,null))[_0x4aee('0x45')](handleError(_0x4b9741,null));};exports[_0x4aee('0x27')]=function(_0x3ebf39,_0x25989f){if(_0x3ebf39[_0x4aee('0x4c')][_0x4aee('0x4e')]){delete _0x3ebf39[_0x4aee('0x4c')]['uniqueid'];}return db[_0x4aee('0x42')][_0x4aee('0x4a')]({'where':{'uniqueid':_0x3ebf39[_0x4aee('0x4f')]['id']}})[_0x4aee('0x29')](handleEntityNotFound(_0x25989f,null))[_0x4aee('0x29')](saveUpdates(_0x3ebf39['body'],null))[_0x4aee('0x29')](respondWithResult(_0x25989f,null))[_0x4aee('0x45')](handleError(_0x25989f,null));};
\ No newline at end of file
+var _0x943f=['fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','includeAll','rows','catch','params','include','options','find','create','body','describe','update','uniqueid','eml-format','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','then','destroy','error','name','send','map','CmHopperHistory','rawAttributes'];(function(_0x599e54,_0x150c13){var _0x40c2c3=function(_0x46aeca){while(--_0x46aeca){_0x599e54['push'](_0x599e54['shift']());}};_0x40c2c3(++_0x150c13);}(_0x943f,0x181));var _0xf943=function(_0x4c2849,_0x4c88b4){_0x4c2849=_0x4c2849-0x0;var _0x33a395=_0x943f[_0x4c2849];return _0x33a395;};'use strict';var emlformat=require(_0xf943('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf943('0x1'));var jsonpatch=require(_0xf943('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf943('0x3'));var util=require(_0xf943('0x4'));var path=require(_0xf943('0x5'));var sox=require(_0xf943('0x6'));var csv=require(_0xf943('0x7'));var ejs=require(_0xf943('0x8'));var fs=require('fs');var fs_extra=require(_0xf943('0x9'));var _=require(_0xf943('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf943('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf943('0xc'));var Papa=require('papaparse');var Redis=require(_0xf943('0xd'));var authService=require(_0xf943('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xf943('0xf'));var hardwareService=require(_0xf943('0x10'));var logger=require(_0xf943('0x11'))(_0xf943('0x12'));var utils=require(_0xf943('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xf943('0x14'));var db=require(_0xf943('0x15'))['db'];function respondWithStatusCode(_0x1931d4,_0x4fefa2){_0x4fefa2=_0x4fefa2||0xcc;return function(_0xe96071){if(_0xe96071){return _0x1931d4[_0xf943('0x16')](_0x4fefa2);}return _0x1931d4[_0xf943('0x17')](_0x4fefa2)[_0xf943('0x18')]();};}function respondWithResult(_0x24e0c,_0x4316a3){_0x4316a3=_0x4316a3||0xc8;return function(_0x237062){if(_0x237062){return _0x24e0c[_0xf943('0x17')](_0x4316a3)['json'](_0x237062);}};}function respondWithFilteredResult(_0x311eba,_0x73d943){return function(_0x329e67){if(_0x329e67){var _0x5e4925=typeof _0x73d943[_0xf943('0x19')]===_0xf943('0x1a')&&typeof _0x73d943[_0xf943('0x1b')]===_0xf943('0x1a');var _0x1ac500=_0x329e67[_0xf943('0x1c')];var _0x9b8c5f=_0x5e4925?0x0:_0x73d943[_0xf943('0x19')];var _0x5ed143=_0x5e4925?_0x329e67['count']:_0x73d943[_0xf943('0x19')]+_0x73d943[_0xf943('0x1b')];var _0xca6d35;if(_0x5ed143>=_0x1ac500){_0x5ed143=_0x1ac500;_0xca6d35=0xc8;}else{_0xca6d35=0xce;}_0x311eba[_0xf943('0x17')](_0xca6d35);return _0x311eba['set'](_0xf943('0x1d'),_0x9b8c5f+'-'+_0x5ed143+'/'+_0x1ac500)[_0xf943('0x1e')](_0x329e67);}return null;};}function patchUpdates(_0x1dfd06){return function(_0x16bdf6){try{jsonpatch[_0xf943('0x1f')](_0x16bdf6,_0x1dfd06,!![]);}catch(_0x376972){return BPromise[_0xf943('0x20')](_0x376972);}return _0x16bdf6['save']();};}function saveUpdates(_0x18d98c,_0x423935){return function(_0x1d88f2){if(_0x1d88f2){return _0x1d88f2['update'](_0x18d98c)[_0xf943('0x21')](function(_0x48c2a2){return _0x48c2a2;});}return null;};}function removeEntity(_0x1e7fce,_0x1c00c9){return function(_0x388a9c){if(_0x388a9c){return _0x388a9c[_0xf943('0x22')]()[_0xf943('0x21')](function(){_0x1e7fce[_0xf943('0x17')](0xcc)[_0xf943('0x18')]();});}};}function handleEntityNotFound(_0x21cf28,_0x5a7a92){return function(_0x3d97b1){if(!_0x3d97b1){_0x21cf28[_0xf943('0x16')](0x194);}return _0x3d97b1;};}function handleError(_0x1711b9,_0xbd3939){_0xbd3939=_0xbd3939||0x1f4;return function(_0x563dd5){logger[_0xf943('0x23')](_0x563dd5['stack']);if(_0x563dd5[_0xf943('0x24')]){delete _0x563dd5[_0xf943('0x24')];}_0x1711b9['status'](_0xbd3939)[_0xf943('0x25')](_0x563dd5);};}exports['index']=function(_0x1e75af,_0x4a524d){var _0x475788={},_0x44e978={},_0x2fb863={'count':0x0,'rows':[]};var _0x2dbabc=_[_0xf943('0x26')](db[_0xf943('0x27')][_0xf943('0x28')],function(_0x7d20bc){return{'name':_0x7d20bc[_0xf943('0x29')],'type':_0x7d20bc[_0xf943('0x2a')]['key']};});_0x44e978[_0xf943('0x2b')]=_[_0xf943('0x26')](_0x2dbabc,_0xf943('0x24'));_0x44e978[_0xf943('0x2c')]=_[_0xf943('0x2d')](_0x1e75af[_0xf943('0x2c')]);_0x44e978['filters']=_['intersection'](_0x44e978[_0xf943('0x2b')],_0x44e978[_0xf943('0x2c')]);_0x475788[_0xf943('0x2e')]=_[_0xf943('0x2f')](_0x44e978[_0xf943('0x2b')],qs[_0xf943('0x30')](_0x1e75af[_0xf943('0x2c')]['fields']));_0x475788['attributes']=_0x475788[_0xf943('0x2e')][_0xf943('0x31')]?_0x475788[_0xf943('0x2e')]:_0x44e978[_0xf943('0x2b')];if(!_0x1e75af[_0xf943('0x2c')][_0xf943('0x32')](_0xf943('0x33'))){_0x475788['limit']=qs[_0xf943('0x1b')](_0x1e75af[_0xf943('0x2c')]['limit']);_0x475788['offset']=qs['offset'](_0x1e75af[_0xf943('0x2c')]['offset']);}_0x475788[_0xf943('0x34')]=qs[_0xf943('0x35')](_0x1e75af['query'][_0xf943('0x35')]);_0x475788['where']=qs[_0xf943('0x36')](_[_0xf943('0x37')](_0x1e75af[_0xf943('0x2c')],_0x44e978[_0xf943('0x36')]),_0x2dbabc);if(_0x1e75af['query'][_0xf943('0x38')]){_0x475788[_0xf943('0x39')]=_[_0xf943('0x3a')](_0x475788['where'],{'$or':_[_0xf943('0x26')](_0x2dbabc,function(_0xe23949){if(_0xe23949[_0xf943('0x2a')]!=='VIRTUAL'){var _0x1aebbe={};_0x1aebbe[_0xe23949[_0xf943('0x24')]]={'$like':'%'+_0x1e75af[_0xf943('0x2c')][_0xf943('0x38')]+'%'};return _0x1aebbe;}})});}_0x475788=_[_0xf943('0x3a')]({},_0x475788,_0x1e75af['options']);var _0x526be4={'where':_0x475788[_0xf943('0x39')]};return db[_0xf943('0x27')][_0xf943('0x1c')](_0x526be4)['then'](function(_0x14f5c3){_0x2fb863[_0xf943('0x1c')]=_0x14f5c3;if(_0x1e75af[_0xf943('0x2c')][_0xf943('0x3b')]){_0x475788['include']=[{'all':!![]}];}return db[_0xf943('0x27')]['findAll'](_0x475788);})[_0xf943('0x21')](function(_0xdfa8e1){_0x2fb863[_0xf943('0x3c')]=_0xdfa8e1;return _0x2fb863;})['then'](respondWithFilteredResult(_0x4a524d,_0x475788))[_0xf943('0x3d')](handleError(_0x4a524d,null));};exports['show']=function(_0x1d419b,_0xe53a6){var _0xad20ab={'raw':!![],'where':{'id':_0x1d419b[_0xf943('0x3e')]['id']}},_0x45f2c0={};_0x45f2c0[_0xf943('0x2b')]=_['keys'](db['CmHopperHistory'][_0xf943('0x28')]);_0x45f2c0[_0xf943('0x2c')]=_[_0xf943('0x2d')](_0x1d419b[_0xf943('0x2c')]);_0x45f2c0[_0xf943('0x36')]=_[_0xf943('0x2f')](_0x45f2c0[_0xf943('0x2b')],_0x45f2c0[_0xf943('0x2c')]);_0xad20ab['attributes']=_[_0xf943('0x2f')](_0x45f2c0[_0xf943('0x2b')],qs[_0xf943('0x30')](_0x1d419b[_0xf943('0x2c')][_0xf943('0x30')]));_0xad20ab['attributes']=_0xad20ab[_0xf943('0x2e')]['length']?_0xad20ab[_0xf943('0x2e')]:_0x45f2c0['model'];if(_0x1d419b[_0xf943('0x2c')]['includeAll']){_0xad20ab[_0xf943('0x3f')]=[{'all':!![]}];}_0xad20ab=_[_0xf943('0x3a')]({},_0xad20ab,_0x1d419b[_0xf943('0x40')]);return db[_0xf943('0x27')][_0xf943('0x41')](_0xad20ab)[_0xf943('0x21')](handleEntityNotFound(_0xe53a6,null))[_0xf943('0x21')](respondWithResult(_0xe53a6,null))['catch'](handleError(_0xe53a6,null));};exports[_0xf943('0x42')]=function(_0x3f0835,_0x414b0a){return db[_0xf943('0x27')]['create'](_0x3f0835[_0xf943('0x43')],{})[_0xf943('0x21')](respondWithResult(_0x414b0a,0xc9))[_0xf943('0x3d')](handleError(_0x414b0a,null));};exports['describe']=function(_0x3d0cfe,_0x5dd0fb){return db['CmHopperHistory'][_0xf943('0x44')]()[_0xf943('0x21')](respondWithResult(_0x5dd0fb,null))[_0xf943('0x3d')](handleError(_0x5dd0fb,null));};exports[_0xf943('0x45')]=function(_0x23a8fe,_0x11b2a7){if(_0x23a8fe[_0xf943('0x43')][_0xf943('0x46')]){delete _0x23a8fe[_0xf943('0x43')][_0xf943('0x46')];}return db[_0xf943('0x27')][_0xf943('0x41')]({'where':{'uniqueid':_0x23a8fe['params']['id']}})[_0xf943('0x21')](handleEntityNotFound(_0x11b2a7,null))[_0xf943('0x21')](saveUpdates(_0x23a8fe['body'],null))[_0xf943('0x21')](respondWithResult(_0x11b2a7,null))[_0xf943('0x3d')](handleError(_0x11b2a7,null));};
\ No newline at end of file
index aa8806e..b17b4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d7=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x79d7,0x9c));var _0x779d=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x79d7[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x779d('0x0'));var util=require('util');var logger=require(_0x779d('0x1'))(_0x779d('0x2'));var moment=require(_0x779d('0x3'));var BPromise=require(_0x779d('0x4'));var rp=require(_0x779d('0x5'));var fs=require('fs');var path=require(_0x779d('0x6'));var rimraf=require('rimraf');var config=require(_0x779d('0x7'));var attributes=require(_0x779d('0x8'));module[_0x779d('0x9')]=function(_0x4f0103,_0x51870f){return _0x4f0103[_0x779d('0xa')]('CmHopperHistory',attributes,{'tableName':_0x779d('0xb'),'paranoid':![],'indexes':[{'name':_0x779d('0xc'),'fields':['endtime']},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9805=['request-promise','path','rimraf','../../config/environment','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api'];(function(_0x18a036,_0x234941){var _0x4788df=function(_0xddc54e){while(--_0xddc54e){_0x18a036['push'](_0x18a036['shift']());}};_0x4788df(++_0x234941);}(_0x9805,0x18f));var _0x5980=function(_0x27ffa0,_0x3e6c4a){_0x27ffa0=_0x27ffa0-0x0;var _0x37c18b=_0x9805[_0x27ffa0];return _0x37c18b;};'use strict';var _=require(_0x5980('0x0'));var util=require(_0x5980('0x1'));var logger=require(_0x5980('0x2'))(_0x5980('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5980('0x4'));var fs=require('fs');var path=require(_0x5980('0x5'));var rimraf=require(_0x5980('0x6'));var config=require(_0x5980('0x7'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0x1b1c8d,_0x255321){return _0x1b1c8d[_0x5980('0x8')](_0x5980('0x9'),attributes,{'tableName':_0x5980('0xa'),'paranoid':![],'indexes':[{'name':_0x5980('0xb'),'fields':[_0x5980('0xb')]},{'name':_0x5980('0xc'),'fields':[_0x5980('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9a838eb..a844fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74a1=['CreateCmHopperHistory','findAll','sequelize','col','predictiveIntervalTotalCalls','COUNT','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','literal','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','AvgHandleTime','GetVoiceQueueHopperHistory','where','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetCampaignHopperHistory','name','ivrTotalCallsDays','ivrAnswerCallsDay','campaign','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopperHistory','body','options','raw'];(function(_0x2ea4d2,_0x218893){var _0x45e9f2=function(_0x210512){while(--_0x210512){_0x2ea4d2['push'](_0x2ea4d2['shift']());}};_0x45e9f2(++_0x218893);}(_0x74a1,0xff));var _0x174a=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x74a1[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x174a('0x0'));var util=require(_0x174a('0x1'));var moment=require('moment');var BPromise=require(_0x174a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x174a('0x3'));var db=require(_0x174a('0x4'))['db'];var utils=require(_0x174a('0x5'));var logger=require(_0x174a('0x6'))(_0x174a('0x7'));var config=require(_0x174a('0x8'));var jayson=require(_0x174a('0x9'));var client=jayson[_0x174a('0xa')][_0x174a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3297b6,_0x1f30d8,_0x46b36a){return new BPromise(function(_0x4547c2,_0x2a4bf7){return client[_0x174a('0xc')](_0x3297b6,_0x46b36a)[_0x174a('0xd')](function(_0x1f1a52){logger[_0x174a('0xe')](_0x174a('0xf'),_0x1f30d8,_0x174a('0x10'));logger[_0x174a('0x11')](_0x174a('0x12'),_0x1f30d8,_0x174a('0x10'),JSON[_0x174a('0x13')](_0x1f1a52));if(_0x1f1a52[_0x174a('0x14')]){if(_0x1f1a52[_0x174a('0x14')][_0x174a('0x15')]===0x1f4){logger['error'](_0x174a('0xf'),_0x1f30d8,_0x1f1a52[_0x174a('0x14')][_0x174a('0x16')]);return _0x2a4bf7(_0x1f1a52[_0x174a('0x14')][_0x174a('0x16')]);}logger[_0x174a('0x14')]('CmHopperHistory,\x20%s,\x20%s',_0x1f30d8,_0x1f1a52[_0x174a('0x14')]['message']);return _0x4547c2(_0x1f1a52['error']['message']);}else{logger['info'](_0x174a('0xf'),_0x1f30d8,_0x174a('0x10'));_0x4547c2(_0x1f1a52[_0x174a('0x17')][_0x174a('0x16')]);}})[_0x174a('0x18')](function(_0xa93b47){logger[_0x174a('0x14')](_0x174a('0xf'),_0x1f30d8,_0xa93b47);_0x2a4bf7(_0xa93b47);});});}exports['CreateCmHopperHistory']=function(_0x53da20){var _0x3a28ab=this;return new Promise(function(_0x416b4f,_0x4f8b8f){return db[_0x174a('0x19')]['create'](_0x53da20[_0x174a('0x1a')],{'raw':_0x53da20[_0x174a('0x1b')]?_0x53da20[_0x174a('0x1b')][_0x174a('0x1c')]===undefined?!![]:![]:!![]})[_0x174a('0xd')](function(_0x24d080){logger['info'](_0x174a('0x1d'),_0x53da20);logger[_0x174a('0x11')](_0x174a('0x1d'),_0x53da20,JSON[_0x174a('0x13')](_0x24d080));_0x416b4f(_0x24d080);})[_0x174a('0x18')](function(_0x4fcc28){logger[_0x174a('0x14')]('CreateCmHopperHistory',_0x4fcc28[_0x174a('0x16')],_0x53da20);_0x4f8b8f(_0x3a28ab[_0x174a('0x14')](0x1f4,_0x4fcc28['message']));});});};exports['AvgHandleTime']=function(_0x58da55){var _0x5d429b=this;return new Promise(function(_0xad968d,_0x485661){return db[_0x174a('0x19')][_0x174a('0x1e')]({'raw':_0x58da55[_0x174a('0x1b')]?_0x58da55['options'][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x58da55['options']?_0x58da55[_0x174a('0x1b')]['where']||null:null,'attributes':[[db[_0x174a('0x1f')]['fn']('COUNT',db['sequelize'][_0x174a('0x20')]('id')),_0x174a('0x21')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x23')))),'predictiveIntervalAnsweredCalls'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x24')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db['sequelize'][_0x174a('0x25')](_0x174a('0x26')))),_0x174a('0x27')],[db['sequelize']['fn'](_0x174a('0x28'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x174a('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x28'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0x174a('0xd')](function(_0x1c11cd){logger[_0x174a('0xe')]('AvgHandleTime',_0x58da55);logger[_0x174a('0x11')](_0x174a('0x2b'),_0x58da55,JSON['stringify'](_0x1c11cd));_0xad968d(_0x1c11cd);})[_0x174a('0x18')](function(_0x2ee060){logger['error'](_0x174a('0x2b'),_0x2ee060[_0x174a('0x16')],_0x58da55);_0x485661(_0x5d429b[_0x174a('0x14')](0x1f4,_0x2ee060[_0x174a('0x16')]));});});};exports[_0x174a('0x2c')]=function(_0x1f5992){var _0x4ae867=this;return new Promise(function(_0x223c8e,_0x51c318){return db[_0x174a('0x19')][_0x174a('0x1e')]({'raw':_0x1f5992[_0x174a('0x1b')]?_0x1f5992[_0x174a('0x1b')][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x1f5992[_0x174a('0x1b')]?_0x1f5992[_0x174a('0x1b')][_0x174a('0x2d')]||null:null,'attributes':[['campaign','name'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x2e')))),_0x174a('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x30')))),'outboundNoAnswerCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal']('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db[_0x174a('0x1f')]['fn']('COUNT',db[_0x174a('0x1f')]['fn']('IF',db['sequelize']['literal'](_0x174a('0x31')))),_0x174a('0x32')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x33')))),_0x174a('0x34')],[db[_0x174a('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x35')))),_0x174a('0x36')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x37')))),_0x174a('0x38')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db['sequelize'][_0x174a('0x25')](_0x174a('0x39')))),_0x174a('0x3a')],[db['sequelize']['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x3b')))),_0x174a('0x3c')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x3d')))),_0x174a('0x3e')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db['sequelize']['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x3f')))),'outboundAnswerAgiCallsDay'],[db['sequelize']['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x40')))),'outboundRejectCallsDay'],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')]['literal'](_0x174a('0x41')))),'outboundReCallsDay']],'group':['campaign']})[_0x174a('0xd')](function(_0x1f6873){logger[_0x174a('0xe')]('GetVoiceQueueHopperHistory',_0x1f5992);logger[_0x174a('0x11')](_0x174a('0x2c'),_0x1f5992,JSON[_0x174a('0x13')](_0x1f6873));_0x223c8e(_0x1f6873);})[_0x174a('0x18')](function(_0x102d1a){logger[_0x174a('0x14')](_0x174a('0x2c'),_0x102d1a['message'],_0x1f5992);_0x51c318(_0x4ae867[_0x174a('0x14')](0x1f4,_0x102d1a[_0x174a('0x16')]));});});};exports[_0x174a('0x42')]=function(_0x3291c9){var _0xd439ab=this;return new Promise(function(_0x14cd0c,_0x5d1598){return db['CmHopperHistory']['findAll']({'raw':_0x3291c9[_0x174a('0x1b')]?_0x3291c9['options'][_0x174a('0x1c')]===undefined?!![]:![]:!![],'where':_0x3291c9[_0x174a('0x1b')]?_0x3291c9[_0x174a('0x1b')][_0x174a('0x2d')]||null:null,'attributes':[['campaign',_0x174a('0x43')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')][_0x174a('0x20')]('id')),_0x174a('0x44')],[db[_0x174a('0x1f')]['fn'](_0x174a('0x22'),db[_0x174a('0x1f')]['fn']('IF',db[_0x174a('0x1f')][_0x174a('0x25')](_0x174a('0x23')))),_0x174a('0x45')]],'group':[_0x174a('0x46')]})['then'](function(_0x5f0e91){logger[_0x174a('0xe')](_0x174a('0x42'),_0x3291c9);logger['debug'](_0x174a('0x42'),_0x3291c9,JSON['stringify'](_0x5f0e91));_0x14cd0c(_0x5f0e91);})[_0x174a('0x18')](function(_0x441364){logger[_0x174a('0x14')]('GetCampaignHopperHistory',_0x441364[_0x174a('0x16')],_0x3291c9);_0x5d1598(_0xd439ab['error'](0x1f4,_0x441364[_0x174a('0x16')]));});});};
\ No newline at end of file
+var _0xf32e=['outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','../../config/logger','rpc','../../config/environment','request','then','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','info','request\x20sent','result','catch','CmHopperHistory','create','body','options','CreateCmHopperHistory','findAll','raw','sequelize','COUNT','col','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','where','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null'];(function(_0x24646,_0x140a5a){var _0x522a84=function(_0x221803){while(--_0x221803){_0x24646['push'](_0x24646['shift']());}};_0x522a84(++_0x140a5a);}(_0xf32e,0x110));var _0xef32=function(_0xa2049b,_0x7eeb1e){_0xa2049b=_0xa2049b-0x0;var _0x2fd615=_0xf32e[_0xa2049b];return _0x2fd615;};'use strict';var _=require(_0xef32('0x0'));var util=require(_0xef32('0x1'));var moment=require(_0xef32('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xef32('0x3'))(_0xef32('0x4'));var config=require(_0xef32('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5aef88,_0x2b6f2c,_0x35ac44){return new BPromise(function(_0xbe8992,_0x384c52){return client[_0xef32('0x6')](_0x5aef88,_0x35ac44)[_0xef32('0x7')](function(_0x5f208c){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x2b6f2c,'request\x20sent');logger[_0xef32('0x8')](_0xef32('0x9'),_0x2b6f2c,'request\x20sent',JSON[_0xef32('0xa')](_0x5f208c));if(_0x5f208c[_0xef32('0xb')]){if(_0x5f208c[_0xef32('0xb')][_0xef32('0xc')]===0x1f4){logger[_0xef32('0xb')](_0xef32('0xd'),_0x2b6f2c,_0x5f208c[_0xef32('0xb')][_0xef32('0xe')]);return _0x384c52(_0x5f208c[_0xef32('0xb')][_0xef32('0xe')]);}logger['error'](_0xef32('0xd'),_0x2b6f2c,_0x5f208c[_0xef32('0xb')][_0xef32('0xe')]);return _0xbe8992(_0x5f208c['error'][_0xef32('0xe')]);}else{logger[_0xef32('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x2b6f2c,_0xef32('0x10'));_0xbe8992(_0x5f208c[_0xef32('0x11')]['message']);}})[_0xef32('0x12')](function(_0x126f7c){logger['error'](_0xef32('0xd'),_0x2b6f2c,_0x126f7c);_0x384c52(_0x126f7c);});});}exports['CreateCmHopperHistory']=function(_0x728ea2){var _0x5ee04c=this;return new Promise(function(_0xbf21,_0x4c6e54){return db[_0xef32('0x13')][_0xef32('0x14')](_0x728ea2[_0xef32('0x15')],{'raw':_0x728ea2[_0xef32('0x16')]?_0x728ea2[_0xef32('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xef32('0x7')](function(_0x353f29){logger[_0xef32('0xf')](_0xef32('0x17'),_0x728ea2);logger['debug'](_0xef32('0x17'),_0x728ea2,JSON[_0xef32('0xa')](_0x353f29));_0xbf21(_0x353f29);})['catch'](function(_0x3bf32e){logger[_0xef32('0xb')](_0xef32('0x17'),_0x3bf32e['message'],_0x728ea2);_0x4c6e54(_0x5ee04c[_0xef32('0xb')](0x1f4,_0x3bf32e[_0xef32('0xe')]));});});};exports['AvgHandleTime']=function(_0x4ae12a){var _0x145361=this;return new Promise(function(_0x2c414b,_0x1e5620){return db[_0xef32('0x13')][_0xef32('0x18')]({'raw':_0x4ae12a[_0xef32('0x16')]?_0x4ae12a[_0xef32('0x16')][_0xef32('0x19')]===undefined?!![]:![]:!![],'where':_0x4ae12a['options']?_0x4ae12a[_0xef32('0x16')]['where']||null:null,'attributes':[[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db['sequelize'][_0xef32('0x1c')]('id')),'predictiveIntervalTotalCalls'],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')]('`state`\x20=\x204,\x201,\x20null'))),_0xef32('0x1e')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')]['literal'](_0xef32('0x1f')))),_0xef32('0x20')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')]('`state`\x20=\x2011,\x201,\x20null'))),'predictiveIntervalDroppedCallsCallersExit'],[db['sequelize']['fn'](_0xef32('0x21'),db['sequelize']['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')](_0xef32('0x22')))),_0xef32('0x23')],[db['sequelize']['fn']('AVG',db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xef32('0x24')]]})[_0xef32('0x7')](function(_0x286d15){logger['info'](_0xef32('0x25'),_0x4ae12a);logger[_0xef32('0x8')](_0xef32('0x25'),_0x4ae12a,JSON[_0xef32('0xa')](_0x286d15));_0x2c414b(_0x286d15);})[_0xef32('0x12')](function(_0x241890){logger[_0xef32('0xb')]('AvgHandleTime',_0x241890[_0xef32('0xe')],_0x4ae12a);_0x1e5620(_0x145361[_0xef32('0xb')](0x1f4,_0x241890[_0xef32('0xe')]));});});};exports[_0xef32('0x26')]=function(_0x41de14){var _0x1c4d95=this;return new Promise(function(_0x235889,_0x48f8d8){return db[_0xef32('0x13')][_0xef32('0x18')]({'raw':_0x41de14[_0xef32('0x16')]?_0x41de14[_0xef32('0x16')][_0xef32('0x19')]===undefined?!![]:![]:!![],'where':_0x41de14[_0xef32('0x16')]?_0x41de14['options'][_0xef32('0x27')]||null:null,'attributes':[[_0xef32('0x28'),_0xef32('0x29')],[db[_0xef32('0x1a')]['fn']('COUNT',db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')](_0xef32('0x2a')))),_0xef32('0x2b')],[db[_0xef32('0x1a')]['fn']('COUNT',db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')](_0xef32('0x2c')))),_0xef32('0x2d')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db['sequelize']['literal'](_0xef32('0x2e')))),_0xef32('0x2f')],[db['sequelize']['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')]['literal'](_0xef32('0x30')))),_0xef32('0x31')],[db['sequelize']['fn']('COUNT',db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')](_0xef32('0x32')))),'outboundCongestionCallsDay'],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db['sequelize']['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xef32('0x33')],[db[_0xef32('0x1a')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xef32('0x34')))),_0xef32('0x35')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db['sequelize'][_0xef32('0x1d')](_0xef32('0x36')))),_0xef32('0x37')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')][_0xef32('0x1d')](_0xef32('0x38')))),_0xef32('0x39')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')]['literal'](_0xef32('0x3a')))),_0xef32('0x3b')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db['sequelize']['fn']('IF',db['sequelize'][_0xef32('0x1d')](_0xef32('0x3c')))),_0xef32('0x3d')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db['sequelize'][_0xef32('0x1d')](_0xef32('0x3e')))),'outboundAnswerAgiCallsDay'],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db['sequelize'][_0xef32('0x1d')]('`state`\x20=\x2020,\x201,\x20null'))),_0xef32('0x3d')],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db['sequelize'][_0xef32('0x1d')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0xef32('0x28')]})['then'](function(_0x2b099c){logger[_0xef32('0xf')]('GetVoiceQueueHopperHistory',_0x41de14);logger['debug']('GetVoiceQueueHopperHistory',_0x41de14,JSON[_0xef32('0xa')](_0x2b099c));_0x235889(_0x2b099c);})[_0xef32('0x12')](function(_0x390787){logger[_0xef32('0xb')](_0xef32('0x26'),_0x390787[_0xef32('0xe')],_0x41de14);_0x48f8d8(_0x1c4d95[_0xef32('0xb')](0x1f4,_0x390787[_0xef32('0xe')]));});});};exports['GetCampaignHopperHistory']=function(_0x2cbc58){var _0x291085=this;return new Promise(function(_0x110e74,_0x50846c){return db['CmHopperHistory'][_0xef32('0x18')]({'raw':_0x2cbc58[_0xef32('0x16')]?_0x2cbc58['options']['raw']===undefined?!![]:![]:!![],'where':_0x2cbc58['options']?_0x2cbc58['options'][_0xef32('0x27')]||null:null,'attributes':[['campaign','name'],[db['sequelize']['fn']('COUNT',db['sequelize']['col']('id')),'ivrTotalCallsDays'],[db[_0xef32('0x1a')]['fn'](_0xef32('0x1b'),db[_0xef32('0x1a')]['fn']('IF',db[_0xef32('0x1a')]['literal'](_0xef32('0x2e')))),_0xef32('0x3f')]],'group':['campaign']})[_0xef32('0x7')](function(_0x35c916){logger[_0xef32('0xf')](_0xef32('0x40'),_0x2cbc58);logger[_0xef32('0x8')](_0xef32('0x40'),_0x2cbc58,JSON[_0xef32('0xa')](_0x35c916));_0x110e74(_0x35c916);})[_0xef32('0x12')](function(_0x44dc73){logger[_0xef32('0xb')](_0xef32('0x40'),_0x44dc73[_0xef32('0xe')],_0x2cbc58);_0x50846c(_0x291085[_0xef32('0xb')](0x1f4,_0x44dc73[_0xef32('0xe')]));});});};
\ No newline at end of file
index 2982fbf..86ffff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef1=['/describe','describe','/:id','post','put','update','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','get'];(function(_0x2c84ce,_0x5d8d59){var _0x9ddda9=function(_0x150a2d){while(--_0x150a2d){_0x2c84ce['push'](_0x2c84ce['shift']());}};_0x9ddda9(++_0x5d8d59);}(_0x5ef1,0xa6));var _0x15ef=function(_0x53ea77,_0x3edf7e){_0x53ea77=_0x53ea77-0x0;var _0xfc6ae3=_0x5ef1[_0x53ea77];return _0xfc6ae3;};'use strict';var multer=require('multer');var util=require(_0x15ef('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x15ef('0x1')]();var fs_extra=require(_0x15ef('0x2'));var auth=require(_0x15ef('0x3'));var interaction=require(_0x15ef('0x4'));var config=require(_0x15ef('0x5'));var controller=require(_0x15ef('0x6'));router['get']('/',auth[_0x15ef('0x7')](),controller[_0x15ef('0x8')]);router[_0x15ef('0x9')](_0x15ef('0xa'),auth[_0x15ef('0x7')](),controller[_0x15ef('0xb')]);router['get'](_0x15ef('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x15ef('0xd')]('/',auth[_0x15ef('0x7')](),controller['create']);router[_0x15ef('0xe')](_0x15ef('0xc'),auth[_0x15ef('0x7')](),controller[_0x15ef('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x3b10=['create','put','/:id','update','multer','util','path','connect-timeout','express','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3b10,0x82));var _0x03b1=function(_0x3d46cf,_0x1d39e9){_0x3d46cf=_0x3d46cf-0x0;var _0x1e048e=_0x3b10[_0x3d46cf];return _0x1e048e;};'use strict';var multer=require(_0x03b1('0x0'));var util=require(_0x03b1('0x1'));var path=require(_0x03b1('0x2'));var timeout=require(_0x03b1('0x3'));var express=require(_0x03b1('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x03b1('0x5'));var controller=require(_0x03b1('0x6'));router[_0x03b1('0x7')]('/',auth[_0x03b1('0x8')](),controller[_0x03b1('0x9')]);router[_0x03b1('0x7')](_0x03b1('0xa'),auth[_0x03b1('0x8')](),controller[_0x03b1('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x03b1('0xc')]);router[_0x03b1('0xd')]('/',auth[_0x03b1('0x8')](),controller[_0x03b1('0xe')]);router[_0x03b1('0xf')](_0x03b1('0x10'),auth['isAuthenticated'](),controller[_0x03b1('0x11')]);module['exports']=router;
\ No newline at end of file
index fd56c35..318decc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['name','STRING','sequelize','exports'];(function(_0x50d377,_0x55c12d){var _0x108531=function(_0x218bb8){while(--_0x218bb8){_0x50d377['push'](_0x50d377['shift']());}};_0x108531(++_0x55c12d);}(_0x1670,0x9a));var _0x0167=function(_0x4b7380,_0x3e040b){_0x4b7380=_0x4b7380-0x0;var _0x3a2f6b=_0x1670[_0x4b7380];return _0x3a2f6b;};'use strict';var Sequelize=require(_0x0167('0x0'));module[_0x0167('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0167('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x0167('0x3')]}};
\ No newline at end of file
+var _0x20d6=['name','sequelize','exports','STRING'];(function(_0x4d8dc3,_0x585fd1){var _0x9b03d9=function(_0x7a31d5){while(--_0x7a31d5){_0x4d8dc3['push'](_0x4d8dc3['shift']());}};_0x9b03d9(++_0x585fd1);}(_0x20d6,0x9d));var _0x620d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x20d6[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x620d('0x0'));module[_0x620d('0x1')]={'name':{'type':Sequelize[_0x620d('0x2')],'unique':_0x620d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x620d('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d45accc..700b8dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a03=['model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','CmList','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ListId','Disposition','findOne','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','format','cf_%d','getContactsCsv','concat','CustomFields','raw','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','getCustomFields','findAndCountAll','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','fast-json-patch','request-promise','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','Lists','UserProfileResource','end','stack','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x52067d,_0x25ba55){var _0x278376=function(_0x5c6bd9){while(--_0x5c6bd9){_0x52067d['push'](_0x52067d['shift']());}};_0x278376(++_0x25ba55);}(_0x2a03,0xf6));var _0x32a0=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x2a03[_0x57d370];return _0x550fd2;};'use strict';var emlformat=require(_0x32a0('0x0'));var rimraf=require(_0x32a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x32a0('0x2'));var rp=require(_0x32a0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x32a0('0x4'));var path=require('path');var sox=require(_0x32a0('0x5'));var csv=require('to-csv');var ejs=require(_0x32a0('0x6'));var fs=require('fs');var fs_extra=require(_0x32a0('0x7'));var _=require(_0x32a0('0x8'));var squel=require(_0x32a0('0x9'));var crypto=require(_0x32a0('0xa'));var jsforce=require(_0x32a0('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x32a0('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x32a0('0xd'));var qs=require(_0x32a0('0xe'));var as=require(_0x32a0('0xf'));var hardwareService=require(_0x32a0('0x10'));var logger=require(_0x32a0('0x11'))(_0x32a0('0x12'));var utils=require(_0x32a0('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x32a0('0x14'));var db=require(_0x32a0('0x15'))['db'];config[_0x32a0('0x16')]=_[_0x32a0('0x17')](config[_0x32a0('0x16')],{'host':_0x32a0('0x18'),'port':0x18eb});var socket=require(_0x32a0('0x19'))(new Redis(config[_0x32a0('0x16')]));require(_0x32a0('0x1a'))[_0x32a0('0x1b')](socket);function respondWithStatusCode(_0x120255,_0x2a7cf5){_0x2a7cf5=_0x2a7cf5||0xcc;return function(_0x13e530){if(_0x13e530){return _0x120255[_0x32a0('0x1c')](_0x2a7cf5);}return _0x120255[_0x32a0('0x1d')](_0x2a7cf5)['end']();};}function respondWithResult(_0x4a9793,_0x111d58){_0x111d58=_0x111d58||0xc8;return function(_0x392d74){if(_0x392d74){return _0x4a9793['status'](_0x111d58)[_0x32a0('0x1e')](_0x392d74);}};}function respondWithFilteredResult(_0x498c1e,_0x598c6c){return function(_0x50907f){if(_0x50907f){var _0x372904=typeof _0x598c6c['offset']===_0x32a0('0x1f')&&typeof _0x598c6c[_0x32a0('0x20')]===_0x32a0('0x1f');var _0xe606e3=_0x50907f[_0x32a0('0x21')];var _0x15e78e=_0x372904?0x0:_0x598c6c['offset'];var _0x4f49f8=_0x372904?_0x50907f[_0x32a0('0x21')]:_0x598c6c['offset']+_0x598c6c['limit'];var _0x432b13;if(_0x4f49f8>=_0xe606e3){_0x4f49f8=_0xe606e3;_0x432b13=0xc8;}else{_0x432b13=0xce;}_0x498c1e[_0x32a0('0x1d')](_0x432b13);return _0x498c1e['set'](_0x32a0('0x22'),_0x15e78e+'-'+_0x4f49f8+'/'+_0xe606e3)[_0x32a0('0x1e')](_0x50907f);}return null;};}function patchUpdates(_0x224255){return function(_0x23da21){try{jsonpatch[_0x32a0('0x23')](_0x23da21,_0x224255,!![]);}catch(_0x4fb5e8){return BPromise[_0x32a0('0x24')](_0x4fb5e8);}return _0x23da21[_0x32a0('0x25')]();};}function saveUpdates(_0x33330e,_0x574e41){return function(_0x1fdced){if(_0x1fdced){return _0x1fdced['update'](_0x33330e)['then'](function(_0x3206ee){return _0x3206ee;});}return null;};}function removeEntity(_0x1254eb,_0x3534de){return function(_0x6e53ce){if(_0x6e53ce){return _0x6e53ce[_0x32a0('0x26')]()[_0x32a0('0x27')](function(){var _0x143745=_0x6e53ce['get']({'plain':!![]});var _0x22b38c=_0x32a0('0x28');return db[_0x32a0('0x29')][_0x32a0('0x26')]({'where':{'type':_0x22b38c,'resourceId':_0x143745['id']}})[_0x32a0('0x27')](function(){return _0x6e53ce;});})[_0x32a0('0x27')](function(){_0x1254eb[_0x32a0('0x1d')](0xcc)[_0x32a0('0x2a')]();});}};}function handleEntityNotFound(_0x3e8690,_0x28865f){return function(_0x33c333){if(!_0x33c333){_0x3e8690[_0x32a0('0x1c')](0x194);}return _0x33c333;};}function handleError(_0x4b6751,_0x4817ca){_0x4817ca=_0x4817ca||0x1f4;return function(_0x4bc145){logger['error'](_0x4bc145[_0x32a0('0x2b')]);if(_0x4bc145[_0x32a0('0x2c')]){delete _0x4bc145['name'];}_0x4b6751[_0x32a0('0x1d')](_0x4817ca)[_0x32a0('0x2d')](_0x4bc145);};}exports[_0x32a0('0x2e')]=function(_0x41f2b6,_0x4b540c){var _0x2155c6={},_0x2b0884={},_0x23c74b={'count':0x0,'rows':[]};var _0xf5ebc2=_[_0x32a0('0x2f')](db['CmList'][_0x32a0('0x30')],function(_0x5eb2bb){return{'name':_0x5eb2bb[_0x32a0('0x31')],'type':_0x5eb2bb[_0x32a0('0x32')][_0x32a0('0x33')]};});_0x2b0884[_0x32a0('0x34')]=_[_0x32a0('0x2f')](_0xf5ebc2,_0x32a0('0x2c'));_0x2b0884[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x41f2b6[_0x32a0('0x35')]);_0x2b0884[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x2b0884[_0x32a0('0x34')],_0x2b0884[_0x32a0('0x35')]);_0x2155c6['attributes']=_[_0x32a0('0x38')](_0x2b0884['model'],qs[_0x32a0('0x39')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x39')]));_0x2155c6[_0x32a0('0x3a')]=_0x2155c6[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x2155c6[_0x32a0('0x3a')]:_0x2b0884[_0x32a0('0x34')];if(!_0x41f2b6['query'][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x2155c6[_0x32a0('0x20')]=qs[_0x32a0('0x20')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x20')]);_0x2155c6[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x3e')]);}_0x2155c6[_0x32a0('0x3f')]=qs['sort'](_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x40')]);_0x2155c6[_0x32a0('0x41')]=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x41f2b6[_0x32a0('0x35')],_0x2b0884[_0x32a0('0x37')]),_0xf5ebc2);if(_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x43')]){_0x2155c6[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x2155c6[_0x32a0('0x41')],{'$or':_['map'](_0xf5ebc2,function(_0x218978){if(_0x218978[_0x32a0('0x32')]!==_0x32a0('0x45')){var _0x2cb360={};_0x2cb360[_0x218978[_0x32a0('0x2c')]]={'$like':'%'+_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2cb360;}})});}_0x2155c6=_[_0x32a0('0x44')]({},_0x2155c6,_0x41f2b6[_0x32a0('0x46')]);var _0x221de8={'where':_0x2155c6['where']};return db[_0x32a0('0x47')][_0x32a0('0x21')](_0x221de8)[_0x32a0('0x27')](function(_0xd3fe0a){_0x23c74b[_0x32a0('0x21')]=_0xd3fe0a;if(_0x41f2b6[_0x32a0('0x35')][_0x32a0('0x48')]){_0x2155c6[_0x32a0('0x49')]=[{'all':!![]}];}return db[_0x32a0('0x47')][_0x32a0('0x4a')](_0x2155c6);})[_0x32a0('0x27')](function(_0x4979a4){_0x23c74b[_0x32a0('0x4b')]=_0x4979a4;return _0x23c74b;})['then'](respondWithFilteredResult(_0x4b540c,_0x2155c6))[_0x32a0('0x4c')](handleError(_0x4b540c,null));};exports[_0x32a0('0x4d')]=function(_0x1acb30,_0xe65a2e){var _0x460ee1={'raw':![],'where':{'id':_0x1acb30[_0x32a0('0x4e')]['id']}},_0x27bf6b={};_0x27bf6b[_0x32a0('0x34')]=_['keys'](db[_0x32a0('0x47')]['rawAttributes']);_0x27bf6b[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x1acb30[_0x32a0('0x35')]);_0x27bf6b['filters']=_['intersection'](_0x27bf6b[_0x32a0('0x34')],_0x27bf6b[_0x32a0('0x35')]);_0x460ee1[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x27bf6b[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x1acb30[_0x32a0('0x35')]['fields']));_0x460ee1[_0x32a0('0x3a')]=_0x460ee1[_0x32a0('0x3a')]['length']?_0x460ee1[_0x32a0('0x3a')]:_0x27bf6b[_0x32a0('0x34')];if(_0x1acb30['query'][_0x32a0('0x48')]){_0x460ee1[_0x32a0('0x49')]=[{'all':!![]}];}_0x460ee1=_['merge']({},_0x460ee1,_0x1acb30[_0x32a0('0x46')]);return db[_0x32a0('0x47')][_0x32a0('0x4f')](_0x460ee1)[_0x32a0('0x27')](handleEntityNotFound(_0xe65a2e,null))[_0x32a0('0x27')](respondWithResult(_0xe65a2e,null))[_0x32a0('0x4c')](handleError(_0xe65a2e,null));};exports[_0x32a0('0x50')]=function(_0x4e84b1,_0x9bbd2c){return db[_0x32a0('0x47')][_0x32a0('0x50')](_0x4e84b1[_0x32a0('0x51')],{})[_0x32a0('0x27')](function(_0x430930){var _0x5bd019=_0x4e84b1[_0x32a0('0x52')][_0x32a0('0x53')]({'plain':!![]});if(!_0x5bd019)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5bd019[_0x32a0('0x54')]==='user'){var _0x5a9a25=_0x430930['get']({'plain':!![]});var _0x25cb98=_0x32a0('0x28');return db[_0x32a0('0x55')][_0x32a0('0x4f')]({'where':{'name':_0x25cb98,'userProfileId':_0x5bd019[_0x32a0('0x56')]},'raw':!![]})[_0x32a0('0x27')](function(_0x3d0cd8){if(_0x3d0cd8&&_0x3d0cd8[_0x32a0('0x57')]===0x0){return db[_0x32a0('0x29')]['create']({'name':_0x5a9a25[_0x32a0('0x2c')],'resourceId':_0x5a9a25['id'],'type':_0x3d0cd8['name'],'sectionId':_0x3d0cd8['id']},{})[_0x32a0('0x27')](function(){return _0x430930;});}else{return _0x430930;}})['catch'](function(_0x5e931c){logger[_0x32a0('0x58')](_0x32a0('0x59'),_0x5e931c);throw _0x5e931c;});}return _0x430930;})[_0x32a0('0x27')](respondWithResult(_0x9bbd2c,0xc9))[_0x32a0('0x4c')](handleError(_0x9bbd2c,null));};exports[_0x32a0('0x5a')]=function(_0x24d087,_0x163bb8){if(_0x24d087[_0x32a0('0x51')]['id']){delete _0x24d087[_0x32a0('0x51')]['id'];}return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x24d087['params']['id']}})['then'](handleEntityNotFound(_0x163bb8,null))[_0x32a0('0x27')](saveUpdates(_0x24d087[_0x32a0('0x51')],null))[_0x32a0('0x27')](respondWithResult(_0x163bb8,null))[_0x32a0('0x4c')](handleError(_0x163bb8,null));};exports[_0x32a0('0x26')]=function(_0x58cb06,_0x35c60e){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x58cb06[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x35c60e,null))[_0x32a0('0x27')](removeEntity(_0x35c60e,null))[_0x32a0('0x4c')](handleError(_0x35c60e,null));};exports[_0x32a0('0x5b')]=function(_0x16244b,_0x11885f){return db[_0x32a0('0x47')]['describe']()[_0x32a0('0x27')](respondWithResult(_0x11885f,null))['catch'](handleError(_0x11885f,null));};exports[_0x32a0('0x5c')]=function(_0x2f3d08,_0x1dcada,_0x3c4250){if(_0x2f3d08[_0x32a0('0x51')]['id']){delete _0x2f3d08[_0x32a0('0x51')]['id'];}return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x2f3d08[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x1dcada,null))[_0x32a0('0x27')](function(_0x38aabc){if(_0x38aabc){_0x2f3d08[_0x32a0('0x51')][_0x32a0('0x5d')]=_0x38aabc['id'];return db[_0x32a0('0x5e')][_0x32a0('0x50')](_0x2f3d08[_0x32a0('0x51')]);}})[_0x32a0('0x27')](respondWithResult(_0x1dcada,null))[_0x32a0('0x4c')](handleError(_0x1dcada,null));};exports['getDispositions']=function(_0x4e5e20,_0x258481,_0x2147fc){var _0x2ad7a4={'raw':![],'where':{}};var _0x585729={};var _0x244f7a={'count':0x0,'rows':[]};return db[_0x32a0('0x47')][_0x32a0('0x5f')]({'where':{'id':_0x4e5e20[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x258481,null))[_0x32a0('0x27')](function(_0x18f8b7){if(_0x18f8b7){_0x585729[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x5e')][_0x32a0('0x30')]);_0x585729[_0x32a0('0x35')]=_['keys'](_0x4e5e20[_0x32a0('0x35')]);_0x585729[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x585729[_0x32a0('0x34')],_0x585729[_0x32a0('0x35')]);_0x2ad7a4[_0x32a0('0x3a')]=_['intersection'](_0x585729[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x4e5e20['query'][_0x32a0('0x39')]));_0x2ad7a4['attributes']=_0x2ad7a4[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x2ad7a4[_0x32a0('0x3a')]:_0x585729[_0x32a0('0x34')];if(!_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x2ad7a4['limit']=qs[_0x32a0('0x20')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x20')]);_0x2ad7a4['offset']=qs[_0x32a0('0x3e')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x3e')]);}_0x2ad7a4[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x40')]);_0x2ad7a4['where']=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x4e5e20['query'],_0x585729[_0x32a0('0x37')]));_0x2ad7a4['where'][_0x32a0('0x5d')]=_0x18f8b7['id'];if(_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x43')]){_0x2ad7a4[_0x32a0('0x41')]=_['merge'](_0x2ad7a4[_0x32a0('0x41')],{'$or':_['map'](_0x2ad7a4[_0x32a0('0x3a')],function(_0x1d1139){var _0x2ba166={};_0x2ba166[_0x1d1139]={'$like':'%'+_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2ba166;})});}_0x2ad7a4=_['merge']({},_0x2ad7a4,_0x4e5e20[_0x32a0('0x46')]);return db[_0x32a0('0x5e')]['count']({'where':_0x2ad7a4[_0x32a0('0x41')]})[_0x32a0('0x27')](function(_0x29cf2a){_0x244f7a[_0x32a0('0x21')]=_0x29cf2a;if(_0x4e5e20[_0x32a0('0x35')][_0x32a0('0x48')]){_0x2ad7a4[_0x32a0('0x49')]=[{'all':!![]}];}return db[_0x32a0('0x5e')][_0x32a0('0x4a')](_0x2ad7a4);})['then'](function(_0x52b829){_0x244f7a[_0x32a0('0x4b')]=_0x52b829;return _0x244f7a;});}})[_0x32a0('0x27')](respondWithFilteredResult(_0x258481,_0x2ad7a4))[_0x32a0('0x4c')](handleError(_0x258481,null));};exports[_0x32a0('0x60')]=function(_0x364355,_0x2bd2c2,_0x290139){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x364355[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x2bd2c2,null))[_0x32a0('0x27')](function(_0x11bdec){if(_0x11bdec){return _0x11bdec[_0x32a0('0x60')](_0x364355['query'][_0x32a0('0x61')]);}})['then'](respondWithStatusCode(_0x2bd2c2,null))[_0x32a0('0x4c')](handleError(_0x2bd2c2,null));};exports[_0x32a0('0x62')]=function(_0x554333,_0x98fa3f,_0xb99ab){return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x554333[_0x32a0('0x4e')]['id']}})['then'](handleEntityNotFound(_0x98fa3f,null))[_0x32a0('0x27')](function(_0x326506){if(_0x326506){var _0x25785e=[];var _0x5eea2e={'success':[],'errors':[]};return db[_0x32a0('0x63')][_0x32a0('0x5b')]()[_0x32a0('0x27')](function(_0x52392d){if(_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]&&_[_0x32a0('0x65')](_0x554333[_0x32a0('0x51')][_0x32a0('0x64')])){if(_0x554333[_0x32a0('0x51')][_0x32a0('0x64')][_0x32a0('0x3b')]){_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]=_0x554333[_0x32a0('0x51')][_0x32a0('0x64')][_0x32a0('0x66')](';')+';';}else{_0x554333['body'][_0x32a0('0x64')]=null;}}else{_0x554333[_0x32a0('0x51')][_0x32a0('0x64')]=null;}if(_0x554333[_0x32a0('0x51')]&&_['isArray'](_0x554333['body'])){for(var _0x17d3dd=0x0;_0x17d3dd<_0x554333[_0x32a0('0x51')]['length'];_0x17d3dd+=0x1){_0x554333[_0x32a0('0x51')][_0x17d3dd][_0x32a0('0x5d')]=_0x554333[_0x32a0('0x4e')]['id'];_0x25785e[_0x32a0('0x67')](_0x554333[_0x32a0('0x51')][_0x17d3dd]);}return BPromise[_0x32a0('0x68')](_0x25785e,function(_0x283422){return db[_0x32a0('0x63')][_0x32a0('0x50')](_[_0x32a0('0x69')](_0x283422,[_0x32a0('0x61'),'id'])||{},{'fields':_['keys'](_0x52392d),'raw':!![]})[_0x32a0('0x27')](function(_0x3bdc14){_0x5eea2e['success']['push'](_0x3bdc14['dataValues']);})[_0x32a0('0x4c')](function(_0x204497){_0x5eea2e['errors'][_0x32a0('0x67')]({'data':_0x283422,'error':_0x204497[_0x32a0('0x6a')]});});})[_0x32a0('0x27')](function(_0x5c7eac){return _0x5eea2e;})[_0x32a0('0x4c')](function(_0x27f9ef){return _0x27f9ef;});}else{_0x98fa3f['status'](0x190)[_0x32a0('0x1e')]({'message':_0x32a0('0x6b')});}});}})['then'](respondWithResult(_0x98fa3f,null))['catch'](handleError(_0x98fa3f,null));};exports[_0x32a0('0x6c')]=function(_0x5ecd5f,_0xaf1522,_0x41a8cd){var _0x36c9e6;return db['CmList']['find']({'where':{'id':_0x5ecd5f[_0x32a0('0x4e')]['id']},'include':[{'model':db[_0x32a0('0x6d')],'as':'CustomFields'}]})[_0x32a0('0x27')](handleEntityNotFound(_0xaf1522,null))[_0x32a0('0x27')](function(_0x2a05e0){if(_0x2a05e0){_0x36c9e6=_0x2a05e0;return db[_0x32a0('0x63')][_0x32a0('0x30')];}})[_0x32a0('0x27')](function(_0x829b51){if(_0x829b51){var _0x4bd7b7={};var _0x2c95a8={};_0x2c95a8['model']=_['concat'](_['keys'](_0x829b51),_[_0x32a0('0x2f')](_0x36c9e6['CustomFields'],function(_0x203844){return util[_0x32a0('0x6e')](_0x32a0('0x6f'),_0x203844['id']);}));_0x2c95a8['query']=_[_0x32a0('0x36')](_0x5ecd5f[_0x32a0('0x35')]);_0x2c95a8[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x2c95a8['model'],_0x2c95a8[_0x32a0('0x35')]);_0x4bd7b7['attributes']=_[_0x32a0('0x38')](_0x2c95a8['model'],qs['fields'](_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x39')]));_0x4bd7b7[_0x32a0('0x3a')]=_0x4bd7b7[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0x4bd7b7['attributes']:_0x2c95a8[_0x32a0('0x34')];if(!_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x3c')]('nolimit')){_0x4bd7b7[_0x32a0('0x20')]=qs[_0x32a0('0x20')](_0x5ecd5f['query']['limit']);_0x4bd7b7[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x5ecd5f[_0x32a0('0x35')]['offset']);}_0x4bd7b7[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0x5ecd5f['query'][_0x32a0('0x40')]);_0x4bd7b7[_0x32a0('0x41')]=qs['filters'](_['pick'](_0x5ecd5f['query'],_0x2c95a8[_0x32a0('0x37')]));_0x4bd7b7['raw']=!![];if(_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x43')]){_0x4bd7b7[_0x32a0('0x41')]=_['merge'](_0x4bd7b7[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0x4bd7b7['attributes'],function(_0x2409bb){var _0x2a39f0={};_0x2a39f0[_0x2409bb]={'$like':'%'+_0x5ecd5f[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x2a39f0;})});}_0x4bd7b7=_[_0x32a0('0x44')]({},_0x4bd7b7,_0x5ecd5f[_0x32a0('0x46')]);return _0x36c9e6[_0x32a0('0x6c')](_0x4bd7b7);}})[_0x32a0('0x27')](respondWithResult(_0xaf1522,null))[_0x32a0('0x4c')](handleError(_0xaf1522,null));};exports[_0x32a0('0x70')]=function(_0x249f78,_0x2eff8f,_0x28f839){var _0x3f048c;return db['CmList']['find']({'where':{'id':_0x249f78[_0x32a0('0x4e')]['id']},'include':[{'model':db[_0x32a0('0x6d')],'as':'CustomFields'}]})[_0x32a0('0x27')](handleEntityNotFound(_0x2eff8f,null))[_0x32a0('0x27')](function(_0x275728){if(_0x275728){_0x3f048c=_0x275728;return db[_0x32a0('0x63')]['rawAttributes'];}})['then'](function(_0x2bb8f3){if(_0x2bb8f3){var _0x28c107={};var _0x405103={};_0x405103[_0x32a0('0x34')]=_[_0x32a0('0x71')](_[_0x32a0('0x36')](_0x2bb8f3),_[_0x32a0('0x2f')](_0x3f048c[_0x32a0('0x72')],function(_0x15e24b){return util['format']('cf_%d',_0x15e24b['id']);}));_0x405103['query']=_[_0x32a0('0x36')](_0x249f78[_0x32a0('0x35')]);_0x405103[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x405103['model'],_0x405103['query']);_0x28c107[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x405103['model'],qs[_0x32a0('0x39')](_0x249f78[_0x32a0('0x35')][_0x32a0('0x39')]));_0x28c107[_0x32a0('0x3a')]=_0x28c107[_0x32a0('0x3a')]['length']?_0x28c107[_0x32a0('0x3a')]:_0x405103['model'];if(!_0x249f78['query'][_0x32a0('0x3c')](_0x32a0('0x3d'))){_0x28c107['limit']=qs[_0x32a0('0x20')](_0x249f78[_0x32a0('0x35')][_0x32a0('0x20')]);_0x28c107[_0x32a0('0x3e')]=qs[_0x32a0('0x3e')](_0x249f78[_0x32a0('0x35')]['offset']);}_0x28c107['order']=qs[_0x32a0('0x40')](_0x249f78[_0x32a0('0x35')]['sort']);_0x28c107[_0x32a0('0x41')]=qs['filters'](_[_0x32a0('0x42')](_0x249f78[_0x32a0('0x35')],_0x405103['filters']));_0x28c107[_0x32a0('0x73')]=!![];if(_0x249f78[_0x32a0('0x35')][_0x32a0('0x43')]){_0x28c107[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x28c107['where'],{'$or':_[_0x32a0('0x2f')](_0x28c107[_0x32a0('0x3a')],function(_0x4dfcdf){var _0x36827f={};_0x36827f[_0x4dfcdf]={'$like':'%'+_0x249f78['query']['filter']+'%'};return _0x36827f;})});}_0x28c107=_[_0x32a0('0x44')]({},_0x28c107,_0x249f78['options']);return _0x3f048c[_0x32a0('0x6c')](_0x28c107);}})['then'](function(_0x536c67){if(!_[_0x32a0('0x74')](_0x536c67)){var _0x43a8af=toCsv(_0x536c67);var _0x468f7b=Date[_0x32a0('0x75')]();fs[_0x32a0('0x76')](util[_0x32a0('0x6e')](_0x32a0('0x77'),_0x3f048c['id'],_0x468f7b),_0x43a8af);_0x2eff8f['setHeader'](_0x32a0('0x78'),_0x32a0('0x79')+util[_0x32a0('0x6e')]('list_%d_%s.csv',_0x3f048c['id'],_0x468f7b));_0x2eff8f[_0x32a0('0x7a')](_0x32a0('0x7b'),_0x32a0('0x7c'));return _0x2eff8f[_0x32a0('0x7d')](util['format'](_0x32a0('0x77'),_0x3f048c['id'],_0x468f7b));}else{return _0x2eff8f[_0x32a0('0x1c')](0xcc);}})[_0x32a0('0x4c')](handleError(_0x2eff8f,null));};exports[_0x32a0('0x7e')]=function(_0xc9c9f4,_0x2a2d72,_0x5cb07d){var _0x2432bc;delete _0xc9c9f4[_0x32a0('0x51')]['id'];return db['CmList'][_0x32a0('0x5f')]({'where':{'id':_0xc9c9f4['params']['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x2a2d72,null))['then'](function(_0x1a92e7){if(_0x1a92e7){return db[_0x32a0('0x7f')][_0x32a0('0x80')](function(_0x3caf32){return db[_0x32a0('0x6d')][_0x32a0('0x50')](_0xc9c9f4[_0x32a0('0x51')],{'transaction':_0x3caf32})[_0x32a0('0x27')](function(_0xbb6d19){_0x2432bc=_0xbb6d19;return _0x1a92e7[_0x32a0('0x81')](_0xbb6d19,{'transaction':_0x3caf32});})[_0x32a0('0x27')](function(){var _0x49d0a1={'type':db[_0x32a0('0x82')][_0x32a0('0x83')],'transaction':_0x3caf32};switch(_0xc9c9f4[_0x32a0('0x51')]['type']){case'text':_0x49d0a1['type']=db[_0x32a0('0x82')][_0x32a0('0x83')];break;case _0x32a0('0x84'):_0x49d0a1[_0x32a0('0x32')]=db[_0x32a0('0x82')][_0x32a0('0x85')];break;case _0x32a0('0x86'):_0x49d0a1[_0x32a0('0x32')]=db['Sequelize'][_0x32a0('0x87')];_0x49d0a1[_0x32a0('0x88')]=![];break;default:}return db[_0x32a0('0x7f')][_0x32a0('0x89')][_0x32a0('0x8a')](_0x32a0('0x8b'),util[_0x32a0('0x6e')]('cf_%s',_0x2432bc['id']),_0x49d0a1);})[_0x32a0('0x27')](function(){return _0x2432bc;});});}})[_0x32a0('0x27')](respondWithResult(_0x2a2d72,null))[_0x32a0('0x4c')](handleError(_0x2a2d72,null));};exports[_0x32a0('0x8c')]=function(_0xe23708,_0x5ad271,_0x45b745){var _0x509fae={};var _0x4ffa38={};var _0x35ca8d;var _0x3b4f8a;return db[_0x32a0('0x47')][_0x32a0('0x5f')]({'where':{'id':_0xe23708[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x5ad271,null))[_0x32a0('0x27')](function(_0x22f1d3){if(_0x22f1d3){_0x35ca8d=_0x22f1d3;_0x4ffa38[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x6d')][_0x32a0('0x30')]);_0x4ffa38[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0xe23708[_0x32a0('0x35')]);_0x4ffa38[_0x32a0('0x37')]=_[_0x32a0('0x38')](_0x4ffa38['model'],_0x4ffa38[_0x32a0('0x35')]);_0x509fae[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x4ffa38[_0x32a0('0x34')],qs['fields'](_0xe23708[_0x32a0('0x35')][_0x32a0('0x39')]));_0x509fae[_0x32a0('0x3a')]=_0x509fae['attributes'][_0x32a0('0x3b')]?_0x509fae[_0x32a0('0x3a')]:_0x4ffa38['model'];_0x509fae[_0x32a0('0x3f')]=qs[_0x32a0('0x40')](_0xe23708[_0x32a0('0x35')]['sort']);_0x509fae['where']=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0xe23708[_0x32a0('0x35')],_0x4ffa38['filters']));_0x509fae[_0x32a0('0x41')]=_[_0x32a0('0x44')](_0x509fae['where'],{'$or':[{'ListId':_0x22f1d3['id']},{'ListId':null}]});if(_0xe23708['query'][_0x32a0('0x43')]){_0x509fae['where']=_['merge'](_0x509fae[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0x509fae[_0x32a0('0x3a')],function(_0x355f80){var _0x4541a5={};_0x4541a5[_0x355f80]={'$like':'%'+_0xe23708[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x4541a5;})});}_0x509fae=_['merge']({},_0x509fae,_0xe23708[_0x32a0('0x46')]);return db[_0x32a0('0x6d')][_0x32a0('0x8d')](_0x509fae);}})[_0x32a0('0x27')](respondWithResult(_0x5ad271,null))[_0x32a0('0x4c')](handleError(_0x5ad271,null));};exports[_0x32a0('0x8e')]=function(_0x5d3014,_0x3ee0d8,_0x1aa6c9){return db[_0x32a0('0x47')]['find']({'where':{'id':_0x5d3014[_0x32a0('0x4e')]['id']}})[_0x32a0('0x27')](handleEntityNotFound(_0x3ee0d8,null))[_0x32a0('0x27')](function(_0x278150){if(_0x278150){return _0x278150[_0x32a0('0x8e')](_0x5d3014['body'][_0x32a0('0x61')],_['omit'](_0x5d3014[_0x32a0('0x51')],[_0x32a0('0x61'),'id'])||{})['spread'](function(_0x6aa905){for(var _0xe0d49a=0x0;_0xe0d49a<_0x5d3014[_0x32a0('0x51')][_0x32a0('0x61')][_0x32a0('0x3b')];_0xe0d49a+=0x1){socket[_0x32a0('0x8f')](_0x32a0('0x90'),{'UserId':Number(_0x5d3014[_0x32a0('0x51')][_0x32a0('0x61')][_0xe0d49a]),'CmListId':Number(_0x5d3014[_0x32a0('0x4e')]['id'])});}return _0x6aa905;});}})['then'](respondWithResult(_0x3ee0d8,null))['catch'](handleError(_0x3ee0d8,null));};exports[_0x32a0('0x91')]=function(_0x23074a,_0x5d77bd,_0x32ad87){return db[_0x32a0('0x47')][_0x32a0('0x4f')]({'where':{'id':_0x23074a['params']['id']}})['then'](handleEntityNotFound(_0x5d77bd,null))[_0x32a0('0x27')](function(_0xc7e4f6){if(_0xc7e4f6){return _0xc7e4f6[_0x32a0('0x91')](_0x23074a[_0x32a0('0x35')][_0x32a0('0x61')])['then'](function(){if(_[_0x32a0('0x65')](_0x23074a['query'][_0x32a0('0x61')])){for(var _0xa45a6b=0x0;_0xa45a6b<_0x23074a[_0x32a0('0x35')]['ids'][_0x32a0('0x3b')];_0xa45a6b+=0x1){socket[_0x32a0('0x8f')]('userCmList:remove',{'UserId':Number(_0x23074a[_0x32a0('0x35')]['ids'][_0xa45a6b]),'CmListId':Number(_0x23074a['params']['id'])});}}else{socket[_0x32a0('0x8f')](_0x32a0('0x92'),{'UserId':Number(_0x23074a[_0x32a0('0x35')][_0x32a0('0x61')]),'CmListId':Number(_0x23074a['params']['id'])});}});}})[_0x32a0('0x27')](respondWithStatusCode(_0x5d77bd,null))['catch'](handleError(_0x5d77bd,null));};exports[_0x32a0('0x93')]=function(_0x213956,_0x3858f4,_0x534475){var _0xc46981={};var _0x1d4621={};var _0x287392;var _0x8269e1;return db['CmList'][_0x32a0('0x5f')]({'where':{'id':_0x213956[_0x32a0('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3858f4,null))[_0x32a0('0x27')](function(_0xadb089){if(_0xadb089){_0x287392=_0xadb089;_0x1d4621[_0x32a0('0x34')]=_[_0x32a0('0x36')](db[_0x32a0('0x94')][_0x32a0('0x30')]);_0x1d4621[_0x32a0('0x35')]=_[_0x32a0('0x36')](_0x213956[_0x32a0('0x35')]);_0x1d4621['filters']=_[_0x32a0('0x38')](_0x1d4621[_0x32a0('0x34')],_0x1d4621[_0x32a0('0x35')]);_0xc46981[_0x32a0('0x3a')]=_[_0x32a0('0x38')](_0x1d4621[_0x32a0('0x34')],qs[_0x32a0('0x39')](_0x213956['query'][_0x32a0('0x39')]));_0xc46981['attributes']=_0xc46981[_0x32a0('0x3a')][_0x32a0('0x3b')]?_0xc46981['attributes']:_0x1d4621['model'];_0xc46981['order']=qs['sort'](_0x213956[_0x32a0('0x35')][_0x32a0('0x40')]);_0xc46981[_0x32a0('0x41')]=qs[_0x32a0('0x37')](_[_0x32a0('0x42')](_0x213956[_0x32a0('0x35')],_0x1d4621[_0x32a0('0x37')]));if(_0x213956[_0x32a0('0x35')][_0x32a0('0x43')]){_0xc46981['where']=_['merge'](_0xc46981[_0x32a0('0x41')],{'$or':_[_0x32a0('0x2f')](_0xc46981[_0x32a0('0x3a')],function(_0x3f393b){var _0x10fc6d={};_0x10fc6d[_0x3f393b]={'$like':'%'+_0x213956[_0x32a0('0x35')][_0x32a0('0x43')]+'%'};return _0x10fc6d;})});}_0xc46981=_[_0x32a0('0x44')]({},_0xc46981,_0x213956[_0x32a0('0x46')]);return _0x287392['getAgents'](_0xc46981);}})['then'](function(_0x2f4c0e){if(_0x2f4c0e){_0x8269e1=_0x2f4c0e[_0x32a0('0x3b')];if(!_0x213956[_0x32a0('0x35')][_0x32a0('0x3c')]('nolimit')){_0xc46981[_0x32a0('0x20')]=qs['limit'](_0x213956[_0x32a0('0x35')][_0x32a0('0x20')]);_0xc46981['offset']=qs['offset'](_0x213956[_0x32a0('0x35')]['offset']);}return _0x287392[_0x32a0('0x93')](_0xc46981);}})[_0x32a0('0x27')](function(_0x4a6a8f){if(_0x4a6a8f){return _0x4a6a8f?{'count':_0x8269e1,'rows':_0x4a6a8f}:null;}})[_0x32a0('0x27')](respondWithResult(_0x3858f4,null))[_0x32a0('0x4c')](handleError(_0x3858f4,null));};
\ No newline at end of file
+var _0x156f=['type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Lists','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','ListId','Disposition','getDispositions','findOne','filter','removeDispositions','ids','addContacts','CmContact','isArray','tags','push','each','omit','dataValues','Malformed\x20request\x20syntax','getContacts','CmCustomField','concat','format','raw','CustomFields','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','addCustomField','sequelize','addCustomFields','TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cf_%s','getCustomFields','addAgents','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','./cmList.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','map','CmList','rawAttributes','fieldName'];(function(_0x3c873c,_0x344dc8){var _0x52b459=function(_0x3028e1){while(--_0x3028e1){_0x3c873c['push'](_0x3c873c['shift']());}};_0x52b459(++_0x344dc8);}(_0x156f,0xe5));var _0xf156=function(_0x9160c5,_0x4a2dd4){_0x9160c5=_0x9160c5-0x0;var _0x51610a=_0x156f[_0x9160c5];return _0x51610a;};'use strict';var emlformat=require(_0xf156('0x0'));var rimraf=require(_0xf156('0x1'));var zipdir=require(_0xf156('0x2'));var jsonpatch=require(_0xf156('0x3'));var rp=require(_0xf156('0x4'));var moment=require(_0xf156('0x5'));var BPromise=require(_0xf156('0x6'));var Mustache=require(_0xf156('0x7'));var util=require('util');var path=require(_0xf156('0x8'));var sox=require(_0xf156('0x9'));var csv=require(_0xf156('0xa'));var ejs=require(_0xf156('0xb'));var fs=require('fs');var fs_extra=require(_0xf156('0xc'));var _=require(_0xf156('0xd'));var squel=require(_0xf156('0xe'));var crypto=require(_0xf156('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf156('0xa'));var querystring=require(_0xf156('0x10'));var Papa=require(_0xf156('0x11'));var Redis=require(_0xf156('0x12'));var authService=require(_0xf156('0x13'));var qs=require(_0xf156('0x14'));var as=require(_0xf156('0x15'));var hardwareService=require(_0xf156('0x16'));var logger=require(_0xf156('0x17'))(_0xf156('0x18'));var utils=require('../../config/utils');var config=require(_0xf156('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xf156('0x1a')]=_[_0xf156('0x1b')](config[_0xf156('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf156('0x1c'))['register'](socket);function respondWithStatusCode(_0x41ee7c,_0x561cd4){_0x561cd4=_0x561cd4||0xcc;return function(_0x2a302b){if(_0x2a302b){return _0x41ee7c[_0xf156('0x1d')](_0x561cd4);}return _0x41ee7c[_0xf156('0x1e')](_0x561cd4)[_0xf156('0x1f')]();};}function respondWithResult(_0x4e03ca,_0x1effa7){_0x1effa7=_0x1effa7||0xc8;return function(_0x3ddaf9){if(_0x3ddaf9){return _0x4e03ca[_0xf156('0x1e')](_0x1effa7)[_0xf156('0x20')](_0x3ddaf9);}};}function respondWithFilteredResult(_0x1d1e50,_0x133060){return function(_0x630d6c){if(_0x630d6c){var _0x5f1f20=typeof _0x133060[_0xf156('0x21')]===_0xf156('0x22')&&typeof _0x133060[_0xf156('0x23')]==='undefined';var _0x543493=_0x630d6c[_0xf156('0x24')];var _0x42e0c6=_0x5f1f20?0x0:_0x133060[_0xf156('0x21')];var _0x499e0b=_0x5f1f20?_0x630d6c[_0xf156('0x24')]:_0x133060['offset']+_0x133060['limit'];var _0x43cb28;if(_0x499e0b>=_0x543493){_0x499e0b=_0x543493;_0x43cb28=0xc8;}else{_0x43cb28=0xce;}_0x1d1e50[_0xf156('0x1e')](_0x43cb28);return _0x1d1e50[_0xf156('0x25')]('Content-Range',_0x42e0c6+'-'+_0x499e0b+'/'+_0x543493)[_0xf156('0x20')](_0x630d6c);}return null;};}function patchUpdates(_0x480264){return function(_0x5340d1){try{jsonpatch[_0xf156('0x26')](_0x5340d1,_0x480264,!![]);}catch(_0x548cdd){return BPromise[_0xf156('0x27')](_0x548cdd);}return _0x5340d1[_0xf156('0x28')]();};}function saveUpdates(_0x3e94ee,_0x1a6971){return function(_0x4e0641){if(_0x4e0641){return _0x4e0641[_0xf156('0x29')](_0x3e94ee)['then'](function(_0x44cbe4){return _0x44cbe4;});}return null;};}function removeEntity(_0x9a35c7,_0x23a4e4){return function(_0x1e4bb1){if(_0x1e4bb1){return _0x1e4bb1['destroy']()[_0xf156('0x2a')](function(){var _0x2b1fa1=_0x1e4bb1[_0xf156('0x2b')]({'plain':!![]});var _0x2c7293='Lists';return db[_0xf156('0x2c')][_0xf156('0x2d')]({'where':{'type':_0x2c7293,'resourceId':_0x2b1fa1['id']}})[_0xf156('0x2a')](function(){return _0x1e4bb1;});})[_0xf156('0x2a')](function(){_0x9a35c7[_0xf156('0x1e')](0xcc)[_0xf156('0x1f')]();});}};}function handleEntityNotFound(_0x12bdd6,_0x32e27e){return function(_0x411153){if(!_0x411153){_0x12bdd6['sendStatus'](0x194);}return _0x411153;};}function handleError(_0x1986ab,_0x145e2a){_0x145e2a=_0x145e2a||0x1f4;return function(_0x3a325c){logger[_0xf156('0x2e')](_0x3a325c[_0xf156('0x2f')]);if(_0x3a325c['name']){delete _0x3a325c[_0xf156('0x30')];}_0x1986ab[_0xf156('0x1e')](_0x145e2a)['send'](_0x3a325c);};}exports['index']=function(_0x531e37,_0x5a9006){var _0x45d7b8={},_0x3775df={},_0x2476d2={'count':0x0,'rows':[]};var _0x26a7f6=_[_0xf156('0x31')](db[_0xf156('0x32')][_0xf156('0x33')],function(_0x45c06f){return{'name':_0x45c06f[_0xf156('0x34')],'type':_0x45c06f[_0xf156('0x35')]['key']};});_0x3775df[_0xf156('0x36')]=_['map'](_0x26a7f6,_0xf156('0x30'));_0x3775df['query']=_[_0xf156('0x37')](_0x531e37[_0xf156('0x38')]);_0x3775df[_0xf156('0x39')]=_['intersection'](_0x3775df[_0xf156('0x36')],_0x3775df[_0xf156('0x38')]);_0x45d7b8[_0xf156('0x3a')]=_[_0xf156('0x3b')](_0x3775df['model'],qs[_0xf156('0x3c')](_0x531e37['query'][_0xf156('0x3c')]));_0x45d7b8[_0xf156('0x3a')]=_0x45d7b8[_0xf156('0x3a')][_0xf156('0x3d')]?_0x45d7b8[_0xf156('0x3a')]:_0x3775df[_0xf156('0x36')];if(!_0x531e37[_0xf156('0x38')][_0xf156('0x3e')](_0xf156('0x3f'))){_0x45d7b8[_0xf156('0x23')]=qs[_0xf156('0x23')](_0x531e37[_0xf156('0x38')]['limit']);_0x45d7b8['offset']=qs[_0xf156('0x21')](_0x531e37[_0xf156('0x38')][_0xf156('0x21')]);}_0x45d7b8[_0xf156('0x40')]=qs[_0xf156('0x41')](_0x531e37['query'][_0xf156('0x41')]);_0x45d7b8[_0xf156('0x42')]=qs[_0xf156('0x39')](_[_0xf156('0x43')](_0x531e37['query'],_0x3775df[_0xf156('0x39')]),_0x26a7f6);if(_0x531e37['query']['filter']){_0x45d7b8['where']=_[_0xf156('0x44')](_0x45d7b8[_0xf156('0x42')],{'$or':_['map'](_0x26a7f6,function(_0x111b2a){if(_0x111b2a[_0xf156('0x35')]!==_0xf156('0x45')){var _0x5ac510={};_0x5ac510[_0x111b2a[_0xf156('0x30')]]={'$like':'%'+_0x531e37[_0xf156('0x38')]['filter']+'%'};return _0x5ac510;}})});}_0x45d7b8=_[_0xf156('0x44')]({},_0x45d7b8,_0x531e37[_0xf156('0x46')]);var _0x2f6209={'where':_0x45d7b8[_0xf156('0x42')]};return db[_0xf156('0x32')][_0xf156('0x24')](_0x2f6209)[_0xf156('0x2a')](function(_0x2d0c73){_0x2476d2[_0xf156('0x24')]=_0x2d0c73;if(_0x531e37[_0xf156('0x38')][_0xf156('0x47')]){_0x45d7b8[_0xf156('0x48')]=[{'all':!![]}];}return db['CmList'][_0xf156('0x49')](_0x45d7b8);})['then'](function(_0x21ef8f){_0x2476d2[_0xf156('0x4a')]=_0x21ef8f;return _0x2476d2;})[_0xf156('0x2a')](respondWithFilteredResult(_0x5a9006,_0x45d7b8))[_0xf156('0x4b')](handleError(_0x5a9006,null));};exports['show']=function(_0x464398,_0x448988){var _0x5d8a2f={'raw':![],'where':{'id':_0x464398['params']['id']}},_0x139c8e={};_0x139c8e[_0xf156('0x36')]=_[_0xf156('0x37')](db[_0xf156('0x32')][_0xf156('0x33')]);_0x139c8e[_0xf156('0x38')]=_['keys'](_0x464398[_0xf156('0x38')]);_0x139c8e['filters']=_[_0xf156('0x3b')](_0x139c8e[_0xf156('0x36')],_0x139c8e[_0xf156('0x38')]);_0x5d8a2f[_0xf156('0x3a')]=_[_0xf156('0x3b')](_0x139c8e[_0xf156('0x36')],qs['fields'](_0x464398[_0xf156('0x38')][_0xf156('0x3c')]));_0x5d8a2f[_0xf156('0x3a')]=_0x5d8a2f[_0xf156('0x3a')]['length']?_0x5d8a2f[_0xf156('0x3a')]:_0x139c8e[_0xf156('0x36')];if(_0x464398['query'][_0xf156('0x47')]){_0x5d8a2f[_0xf156('0x48')]=[{'all':!![]}];}_0x5d8a2f=_[_0xf156('0x44')]({},_0x5d8a2f,_0x464398[_0xf156('0x46')]);return db[_0xf156('0x32')][_0xf156('0x4c')](_0x5d8a2f)[_0xf156('0x2a')](handleEntityNotFound(_0x448988,null))[_0xf156('0x2a')](respondWithResult(_0x448988,null))['catch'](handleError(_0x448988,null));};exports['create']=function(_0x5165e7,_0x49763a){return db[_0xf156('0x32')][_0xf156('0x4d')](_0x5165e7[_0xf156('0x4e')],{})[_0xf156('0x2a')](function(_0x13e8d4){var _0x16c302=_0x5165e7[_0xf156('0x4f')][_0xf156('0x2b')]({'plain':!![]});if(!_0x16c302)throw new Error(_0xf156('0x50'));if(_0x16c302['role']===_0xf156('0x4f')){var _0x32a630=_0x13e8d4[_0xf156('0x2b')]({'plain':!![]});var _0x426284=_0xf156('0x51');return db[_0xf156('0x52')][_0xf156('0x4c')]({'where':{'name':_0x426284,'userProfileId':_0x16c302[_0xf156('0x53')]},'raw':!![]})[_0xf156('0x2a')](function(_0x2a9e49){if(_0x2a9e49&&_0x2a9e49[_0xf156('0x54')]===0x0){return db['UserProfileResource'][_0xf156('0x4d')]({'name':_0x32a630[_0xf156('0x30')],'resourceId':_0x32a630['id'],'type':_0x2a9e49[_0xf156('0x30')],'sectionId':_0x2a9e49['id']},{})[_0xf156('0x2a')](function(){return _0x13e8d4;});}else{return _0x13e8d4;}})[_0xf156('0x4b')](function(_0x2e5364){logger[_0xf156('0x2e')](_0xf156('0x55'),_0x2e5364);throw _0x2e5364;});}return _0x13e8d4;})['then'](respondWithResult(_0x49763a,0xc9))['catch'](handleError(_0x49763a,null));};exports[_0xf156('0x29')]=function(_0x203001,_0x2cc75c){if(_0x203001[_0xf156('0x4e')]['id']){delete _0x203001[_0xf156('0x4e')]['id'];}return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x203001[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x2cc75c,null))[_0xf156('0x2a')](saveUpdates(_0x203001[_0xf156('0x4e')],null))[_0xf156('0x2a')](respondWithResult(_0x2cc75c,null))[_0xf156('0x4b')](handleError(_0x2cc75c,null));};exports[_0xf156('0x2d')]=function(_0x2e90f5,_0x4838a4){return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x2e90f5['params']['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x4838a4,null))[_0xf156('0x2a')](removeEntity(_0x4838a4,null))[_0xf156('0x4b')](handleError(_0x4838a4,null));};exports[_0xf156('0x57')]=function(_0x587830,_0x429d86){return db[_0xf156('0x32')][_0xf156('0x57')]()[_0xf156('0x2a')](respondWithResult(_0x429d86,null))[_0xf156('0x4b')](handleError(_0x429d86,null));};exports['addDisposition']=function(_0x363d52,_0x1d15a2,_0x2b184e){if(_0x363d52[_0xf156('0x4e')]['id']){delete _0x363d52['body']['id'];}return db['CmList']['find']({'where':{'id':_0x363d52[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x1d15a2,null))[_0xf156('0x2a')](function(_0xb1941){if(_0xb1941){_0x363d52[_0xf156('0x4e')][_0xf156('0x58')]=_0xb1941['id'];return db[_0xf156('0x59')][_0xf156('0x4d')](_0x363d52[_0xf156('0x4e')]);}})[_0xf156('0x2a')](respondWithResult(_0x1d15a2,null))[_0xf156('0x4b')](handleError(_0x1d15a2,null));};exports[_0xf156('0x5a')]=function(_0x340bc0,_0x5d87aa,_0x1fc8da){var _0x5d5131={'raw':![],'where':{}};var _0x3483f1={};var _0x2fb9e5={'count':0x0,'rows':[]};return db[_0xf156('0x32')][_0xf156('0x5b')]({'where':{'id':_0x340bc0[_0xf156('0x56')]['id']}})['then'](handleEntityNotFound(_0x5d87aa,null))[_0xf156('0x2a')](function(_0xf781bc){if(_0xf781bc){_0x3483f1[_0xf156('0x36')]=_[_0xf156('0x37')](db[_0xf156('0x59')][_0xf156('0x33')]);_0x3483f1[_0xf156('0x38')]=_[_0xf156('0x37')](_0x340bc0[_0xf156('0x38')]);_0x3483f1[_0xf156('0x39')]=_[_0xf156('0x3b')](_0x3483f1[_0xf156('0x36')],_0x3483f1[_0xf156('0x38')]);_0x5d5131[_0xf156('0x3a')]=_['intersection'](_0x3483f1[_0xf156('0x36')],qs['fields'](_0x340bc0[_0xf156('0x38')][_0xf156('0x3c')]));_0x5d5131[_0xf156('0x3a')]=_0x5d5131[_0xf156('0x3a')]['length']?_0x5d5131['attributes']:_0x3483f1['model'];if(!_0x340bc0['query'][_0xf156('0x3e')]('nolimit')){_0x5d5131['limit']=qs[_0xf156('0x23')](_0x340bc0['query']['limit']);_0x5d5131[_0xf156('0x21')]=qs['offset'](_0x340bc0[_0xf156('0x38')]['offset']);}_0x5d5131[_0xf156('0x40')]=qs[_0xf156('0x41')](_0x340bc0[_0xf156('0x38')]['sort']);_0x5d5131[_0xf156('0x42')]=qs[_0xf156('0x39')](_[_0xf156('0x43')](_0x340bc0[_0xf156('0x38')],_0x3483f1[_0xf156('0x39')]));_0x5d5131[_0xf156('0x42')][_0xf156('0x58')]=_0xf781bc['id'];if(_0x340bc0['query']['filter']){_0x5d5131[_0xf156('0x42')]=_[_0xf156('0x44')](_0x5d5131[_0xf156('0x42')],{'$or':_['map'](_0x5d5131[_0xf156('0x3a')],function(_0x43b51d){var _0x35c2a8={};_0x35c2a8[_0x43b51d]={'$like':'%'+_0x340bc0[_0xf156('0x38')][_0xf156('0x5c')]+'%'};return _0x35c2a8;})});}_0x5d5131=_['merge']({},_0x5d5131,_0x340bc0[_0xf156('0x46')]);return db['Disposition']['count']({'where':_0x5d5131[_0xf156('0x42')]})[_0xf156('0x2a')](function(_0x3939b6){_0x2fb9e5['count']=_0x3939b6;if(_0x340bc0['query']['includeAll']){_0x5d5131['include']=[{'all':!![]}];}return db['Disposition'][_0xf156('0x49')](_0x5d5131);})[_0xf156('0x2a')](function(_0x3c20f4){_0x2fb9e5[_0xf156('0x4a')]=_0x3c20f4;return _0x2fb9e5;});}})[_0xf156('0x2a')](respondWithFilteredResult(_0x5d87aa,_0x5d5131))['catch'](handleError(_0x5d87aa,null));};exports[_0xf156('0x5d')]=function(_0x2d7d02,_0x38d281,_0x4fdd30){return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x2d7d02[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x38d281,null))[_0xf156('0x2a')](function(_0x27181d){if(_0x27181d){return _0x27181d[_0xf156('0x5d')](_0x2d7d02['query'][_0xf156('0x5e')]);}})[_0xf156('0x2a')](respondWithStatusCode(_0x38d281,null))['catch'](handleError(_0x38d281,null));};exports[_0xf156('0x5f')]=function(_0x4a87bc,_0x21a0a9,_0xcc8e81){return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x4a87bc[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x21a0a9,null))['then'](function(_0x26a2c7){if(_0x26a2c7){var _0x458e37=[];var _0x1abc8f={'success':[],'errors':[]};return db[_0xf156('0x60')][_0xf156('0x57')]()[_0xf156('0x2a')](function(_0xb70f0f){if(_0x4a87bc['body']['tags']&&_[_0xf156('0x61')](_0x4a87bc[_0xf156('0x4e')][_0xf156('0x62')])){if(_0x4a87bc['body']['tags'][_0xf156('0x3d')]){_0x4a87bc[_0xf156('0x4e')][_0xf156('0x62')]=_0x4a87bc[_0xf156('0x4e')][_0xf156('0x62')]['join'](';')+';';}else{_0x4a87bc['body'][_0xf156('0x62')]=null;}}else{_0x4a87bc['body']['tags']=null;}if(_0x4a87bc[_0xf156('0x4e')]&&_['isArray'](_0x4a87bc[_0xf156('0x4e')])){for(var _0x225cc3=0x0;_0x225cc3<_0x4a87bc[_0xf156('0x4e')][_0xf156('0x3d')];_0x225cc3+=0x1){_0x4a87bc[_0xf156('0x4e')][_0x225cc3][_0xf156('0x58')]=_0x4a87bc[_0xf156('0x56')]['id'];_0x458e37[_0xf156('0x63')](_0x4a87bc[_0xf156('0x4e')][_0x225cc3]);}return BPromise[_0xf156('0x64')](_0x458e37,function(_0x34e279){return db[_0xf156('0x60')][_0xf156('0x4d')](_[_0xf156('0x65')](_0x34e279,[_0xf156('0x5e'),'id'])||{},{'fields':_[_0xf156('0x37')](_0xb70f0f),'raw':!![]})[_0xf156('0x2a')](function(_0x1f516e){_0x1abc8f['success']['push'](_0x1f516e[_0xf156('0x66')]);})[_0xf156('0x4b')](function(_0x3ac30c){_0x1abc8f['errors'][_0xf156('0x63')]({'data':_0x34e279,'error':_0x3ac30c['message']});});})[_0xf156('0x2a')](function(_0x49ca81){return _0x1abc8f;})[_0xf156('0x4b')](function(_0x538584){return _0x538584;});}else{_0x21a0a9[_0xf156('0x1e')](0x190)[_0xf156('0x20')]({'message':_0xf156('0x67')});}});}})[_0xf156('0x2a')](respondWithResult(_0x21a0a9,null))['catch'](handleError(_0x21a0a9,null));};exports[_0xf156('0x68')]=function(_0x1c2c6a,_0x4e9c2f,_0x34afc7){var _0x55d2e6;return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x1c2c6a[_0xf156('0x56')]['id']},'include':[{'model':db[_0xf156('0x69')],'as':'CustomFields'}]})[_0xf156('0x2a')](handleEntityNotFound(_0x4e9c2f,null))[_0xf156('0x2a')](function(_0xfda12b){if(_0xfda12b){_0x55d2e6=_0xfda12b;return db[_0xf156('0x60')][_0xf156('0x33')];}})[_0xf156('0x2a')](function(_0x28acac){if(_0x28acac){var _0x18c50f={};var _0x48f84a={};_0x48f84a[_0xf156('0x36')]=_[_0xf156('0x6a')](_[_0xf156('0x37')](_0x28acac),_['map'](_0x55d2e6['CustomFields'],function(_0x3f450a){return util[_0xf156('0x6b')]('cf_%d',_0x3f450a['id']);}));_0x48f84a[_0xf156('0x38')]=_['keys'](_0x1c2c6a[_0xf156('0x38')]);_0x48f84a[_0xf156('0x39')]=_[_0xf156('0x3b')](_0x48f84a[_0xf156('0x36')],_0x48f84a['query']);_0x18c50f[_0xf156('0x3a')]=_[_0xf156('0x3b')](_0x48f84a[_0xf156('0x36')],qs[_0xf156('0x3c')](_0x1c2c6a[_0xf156('0x38')][_0xf156('0x3c')]));_0x18c50f[_0xf156('0x3a')]=_0x18c50f[_0xf156('0x3a')][_0xf156('0x3d')]?_0x18c50f['attributes']:_0x48f84a[_0xf156('0x36')];if(!_0x1c2c6a['query']['hasOwnProperty'](_0xf156('0x3f'))){_0x18c50f['limit']=qs[_0xf156('0x23')](_0x1c2c6a[_0xf156('0x38')]['limit']);_0x18c50f['offset']=qs[_0xf156('0x21')](_0x1c2c6a[_0xf156('0x38')][_0xf156('0x21')]);}_0x18c50f[_0xf156('0x40')]=qs[_0xf156('0x41')](_0x1c2c6a[_0xf156('0x38')][_0xf156('0x41')]);_0x18c50f[_0xf156('0x42')]=qs[_0xf156('0x39')](_['pick'](_0x1c2c6a[_0xf156('0x38')],_0x48f84a[_0xf156('0x39')]));_0x18c50f[_0xf156('0x6c')]=!![];if(_0x1c2c6a[_0xf156('0x38')][_0xf156('0x5c')]){_0x18c50f[_0xf156('0x42')]=_['merge'](_0x18c50f[_0xf156('0x42')],{'$or':_[_0xf156('0x31')](_0x18c50f[_0xf156('0x3a')],function(_0x1f7ed1){var _0x20ef8f={};_0x20ef8f[_0x1f7ed1]={'$like':'%'+_0x1c2c6a['query'][_0xf156('0x5c')]+'%'};return _0x20ef8f;})});}_0x18c50f=_[_0xf156('0x44')]({},_0x18c50f,_0x1c2c6a[_0xf156('0x46')]);return _0x55d2e6['getContacts'](_0x18c50f);}})[_0xf156('0x2a')](respondWithResult(_0x4e9c2f,null))[_0xf156('0x4b')](handleError(_0x4e9c2f,null));};exports['getContactsCsv']=function(_0x3d4b42,_0x5031a7,_0x40bdac){var _0x339722;return db['CmList'][_0xf156('0x4c')]({'where':{'id':_0x3d4b42[_0xf156('0x56')]['id']},'include':[{'model':db[_0xf156('0x69')],'as':_0xf156('0x6d')}]})['then'](handleEntityNotFound(_0x5031a7,null))[_0xf156('0x2a')](function(_0x5d78d3){if(_0x5d78d3){_0x339722=_0x5d78d3;return db[_0xf156('0x60')]['rawAttributes'];}})[_0xf156('0x2a')](function(_0x354e46){if(_0x354e46){var _0x535024={};var _0x1152ec={};_0x1152ec[_0xf156('0x36')]=_[_0xf156('0x6a')](_[_0xf156('0x37')](_0x354e46),_['map'](_0x339722[_0xf156('0x6d')],function(_0x31a8ce){return util[_0xf156('0x6b')](_0xf156('0x6e'),_0x31a8ce['id']);}));_0x1152ec[_0xf156('0x38')]=_[_0xf156('0x37')](_0x3d4b42['query']);_0x1152ec[_0xf156('0x39')]=_['intersection'](_0x1152ec[_0xf156('0x36')],_0x1152ec[_0xf156('0x38')]);_0x535024[_0xf156('0x3a')]=_[_0xf156('0x3b')](_0x1152ec[_0xf156('0x36')],qs[_0xf156('0x3c')](_0x3d4b42[_0xf156('0x38')][_0xf156('0x3c')]));_0x535024[_0xf156('0x3a')]=_0x535024[_0xf156('0x3a')][_0xf156('0x3d')]?_0x535024[_0xf156('0x3a')]:_0x1152ec['model'];if(!_0x3d4b42[_0xf156('0x38')][_0xf156('0x3e')]('nolimit')){_0x535024['limit']=qs[_0xf156('0x23')](_0x3d4b42[_0xf156('0x38')][_0xf156('0x23')]);_0x535024[_0xf156('0x21')]=qs['offset'](_0x3d4b42[_0xf156('0x38')][_0xf156('0x21')]);}_0x535024[_0xf156('0x40')]=qs['sort'](_0x3d4b42['query'][_0xf156('0x41')]);_0x535024[_0xf156('0x42')]=qs[_0xf156('0x39')](_[_0xf156('0x43')](_0x3d4b42[_0xf156('0x38')],_0x1152ec[_0xf156('0x39')]));_0x535024[_0xf156('0x6c')]=!![];if(_0x3d4b42[_0xf156('0x38')][_0xf156('0x5c')]){_0x535024[_0xf156('0x42')]=_[_0xf156('0x44')](_0x535024[_0xf156('0x42')],{'$or':_['map'](_0x535024[_0xf156('0x3a')],function(_0x4d6f0e){var _0x1e7d3e={};_0x1e7d3e[_0x4d6f0e]={'$like':'%'+_0x3d4b42[_0xf156('0x38')][_0xf156('0x5c')]+'%'};return _0x1e7d3e;})});}_0x535024=_['merge']({},_0x535024,_0x3d4b42[_0xf156('0x46')]);return _0x339722['getContacts'](_0x535024);}})[_0xf156('0x2a')](function(_0x57009d){if(!_[_0xf156('0x6f')](_0x57009d)){var _0x120092=toCsv(_0x57009d);var _0x210aae=Date[_0xf156('0x70')]();fs[_0xf156('0x71')](util[_0xf156('0x6b')](_0xf156('0x72'),_0x339722['id'],_0x210aae),_0x120092);_0x5031a7['setHeader'](_0xf156('0x73'),_0xf156('0x74')+util[_0xf156('0x6b')](_0xf156('0x75'),_0x339722['id'],_0x210aae));_0x5031a7['setHeader']('Content-type',_0xf156('0x76'));return _0x5031a7[_0xf156('0x77')](util['format'](_0xf156('0x72'),_0x339722['id'],_0x210aae));}else{return _0x5031a7[_0xf156('0x1d')](0xcc);}})[_0xf156('0x4b')](handleError(_0x5031a7,null));};exports[_0xf156('0x78')]=function(_0x16dc1f,_0xeb03e9,_0x929ba3){var _0x184192;delete _0x16dc1f[_0xf156('0x4e')]['id'];return db['CmList']['findOne']({'where':{'id':_0x16dc1f[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0xeb03e9,null))[_0xf156('0x2a')](function(_0x2d6b3a){if(_0x2d6b3a){return db[_0xf156('0x79')]['transaction'](function(_0x4e13c9){return db[_0xf156('0x69')]['create'](_0x16dc1f[_0xf156('0x4e')],{'transaction':_0x4e13c9})['then'](function(_0x5514e0){_0x184192=_0x5514e0;return _0x2d6b3a[_0xf156('0x7a')](_0x5514e0,{'transaction':_0x4e13c9});})[_0xf156('0x2a')](function(){var _0x12a32b={'type':db['Sequelize'][_0xf156('0x7b')],'transaction':_0x4e13c9};switch(_0x16dc1f[_0xf156('0x4e')][_0xf156('0x35')]){case _0xf156('0x7c'):_0x12a32b[_0xf156('0x35')]=db[_0xf156('0x7d')][_0xf156('0x7b')];break;case _0xf156('0x7e'):_0x12a32b[_0xf156('0x35')]=db[_0xf156('0x7d')][_0xf156('0x7f')];break;case _0xf156('0x80'):_0x12a32b[_0xf156('0x35')]=db['Sequelize'][_0xf156('0x81')];_0x12a32b[_0xf156('0x82')]=![];break;default:}return db[_0xf156('0x79')][_0xf156('0x83')]['addColumn']('cm_contacts',util[_0xf156('0x6b')](_0xf156('0x84'),_0x184192['id']),_0x12a32b);})['then'](function(){return _0x184192;});});}})[_0xf156('0x2a')](respondWithResult(_0xeb03e9,null))['catch'](handleError(_0xeb03e9,null));};exports[_0xf156('0x85')]=function(_0x303c24,_0x1c1810,_0x7d9903){var _0x591a23={};var _0x132a03={};var _0x5e10bb;var _0x355d9c;return db[_0xf156('0x32')][_0xf156('0x5b')]({'where':{'id':_0x303c24[_0xf156('0x56')]['id']}})['then'](handleEntityNotFound(_0x1c1810,null))[_0xf156('0x2a')](function(_0x1f0120){if(_0x1f0120){_0x5e10bb=_0x1f0120;_0x132a03[_0xf156('0x36')]=_['keys'](db['CmCustomField'][_0xf156('0x33')]);_0x132a03[_0xf156('0x38')]=_['keys'](_0x303c24[_0xf156('0x38')]);_0x132a03[_0xf156('0x39')]=_[_0xf156('0x3b')](_0x132a03[_0xf156('0x36')],_0x132a03[_0xf156('0x38')]);_0x591a23['attributes']=_[_0xf156('0x3b')](_0x132a03['model'],qs[_0xf156('0x3c')](_0x303c24[_0xf156('0x38')][_0xf156('0x3c')]));_0x591a23[_0xf156('0x3a')]=_0x591a23[_0xf156('0x3a')][_0xf156('0x3d')]?_0x591a23[_0xf156('0x3a')]:_0x132a03[_0xf156('0x36')];_0x591a23[_0xf156('0x40')]=qs['sort'](_0x303c24['query'][_0xf156('0x41')]);_0x591a23[_0xf156('0x42')]=qs['filters'](_[_0xf156('0x43')](_0x303c24[_0xf156('0x38')],_0x132a03[_0xf156('0x39')]));_0x591a23[_0xf156('0x42')]=_[_0xf156('0x44')](_0x591a23[_0xf156('0x42')],{'$or':[{'ListId':_0x1f0120['id']},{'ListId':null}]});if(_0x303c24[_0xf156('0x38')][_0xf156('0x5c')]){_0x591a23['where']=_[_0xf156('0x44')](_0x591a23['where'],{'$or':_[_0xf156('0x31')](_0x591a23['attributes'],function(_0x474411){var _0x1917fb={};_0x1917fb[_0x474411]={'$like':'%'+_0x303c24[_0xf156('0x38')][_0xf156('0x5c')]+'%'};return _0x1917fb;})});}_0x591a23=_[_0xf156('0x44')]({},_0x591a23,_0x303c24[_0xf156('0x46')]);return db['CmCustomField']['findAndCountAll'](_0x591a23);}})[_0xf156('0x2a')](respondWithResult(_0x1c1810,null))[_0xf156('0x4b')](handleError(_0x1c1810,null));};exports[_0xf156('0x86')]=function(_0x51bdef,_0x39f395,_0x48e71b){return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x51bdef[_0xf156('0x56')]['id']}})['then'](handleEntityNotFound(_0x39f395,null))['then'](function(_0x5b0ac8){if(_0x5b0ac8){return _0x5b0ac8[_0xf156('0x86')](_0x51bdef['body'][_0xf156('0x5e')],_[_0xf156('0x65')](_0x51bdef[_0xf156('0x4e')],[_0xf156('0x5e'),'id'])||{})['spread'](function(_0x3c0ecc){for(var _0x388381=0x0;_0x388381<_0x51bdef[_0xf156('0x4e')]['ids']['length'];_0x388381+=0x1){socket['emit'](_0xf156('0x87'),{'UserId':Number(_0x51bdef[_0xf156('0x4e')][_0xf156('0x5e')][_0x388381]),'CmListId':Number(_0x51bdef['params']['id'])});}return _0x3c0ecc;});}})[_0xf156('0x2a')](respondWithResult(_0x39f395,null))[_0xf156('0x4b')](handleError(_0x39f395,null));};exports[_0xf156('0x88')]=function(_0x8048cd,_0x5b0cdd,_0x4e190d){return db[_0xf156('0x32')][_0xf156('0x4c')]({'where':{'id':_0x8048cd[_0xf156('0x56')]['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x5b0cdd,null))[_0xf156('0x2a')](function(_0x1a465d){if(_0x1a465d){return _0x1a465d[_0xf156('0x88')](_0x8048cd[_0xf156('0x38')][_0xf156('0x5e')])['then'](function(){if(_[_0xf156('0x61')](_0x8048cd['query']['ids'])){for(var _0x155aa5=0x0;_0x155aa5<_0x8048cd[_0xf156('0x38')][_0xf156('0x5e')][_0xf156('0x3d')];_0x155aa5+=0x1){socket[_0xf156('0x89')](_0xf156('0x8a'),{'UserId':Number(_0x8048cd['query'][_0xf156('0x5e')][_0x155aa5]),'CmListId':Number(_0x8048cd[_0xf156('0x56')]['id'])});}}else{socket[_0xf156('0x89')](_0xf156('0x8a'),{'UserId':Number(_0x8048cd['query'][_0xf156('0x5e')]),'CmListId':Number(_0x8048cd['params']['id'])});}});}})[_0xf156('0x2a')](respondWithStatusCode(_0x5b0cdd,null))['catch'](handleError(_0x5b0cdd,null));};exports[_0xf156('0x8b')]=function(_0x15fd2e,_0x4de441,_0x118aeb){var _0x5e3c4a={};var _0x207270={};var _0x30066e;var _0x46491b;return db[_0xf156('0x32')][_0xf156('0x5b')]({'where':{'id':_0x15fd2e['params']['id']}})[_0xf156('0x2a')](handleEntityNotFound(_0x4de441,null))[_0xf156('0x2a')](function(_0x351ad1){if(_0x351ad1){_0x30066e=_0x351ad1;_0x207270[_0xf156('0x36')]=_[_0xf156('0x37')](db[_0xf156('0x8c')]['rawAttributes']);_0x207270['query']=_[_0xf156('0x37')](_0x15fd2e[_0xf156('0x38')]);_0x207270[_0xf156('0x39')]=_[_0xf156('0x3b')](_0x207270[_0xf156('0x36')],_0x207270[_0xf156('0x38')]);_0x5e3c4a[_0xf156('0x3a')]=_[_0xf156('0x3b')](_0x207270[_0xf156('0x36')],qs[_0xf156('0x3c')](_0x15fd2e[_0xf156('0x38')][_0xf156('0x3c')]));_0x5e3c4a['attributes']=_0x5e3c4a[_0xf156('0x3a')][_0xf156('0x3d')]?_0x5e3c4a[_0xf156('0x3a')]:_0x207270[_0xf156('0x36')];_0x5e3c4a[_0xf156('0x40')]=qs[_0xf156('0x41')](_0x15fd2e['query'][_0xf156('0x41')]);_0x5e3c4a[_0xf156('0x42')]=qs['filters'](_[_0xf156('0x43')](_0x15fd2e['query'],_0x207270['filters']));if(_0x15fd2e[_0xf156('0x38')][_0xf156('0x5c')]){_0x5e3c4a[_0xf156('0x42')]=_['merge'](_0x5e3c4a[_0xf156('0x42')],{'$or':_[_0xf156('0x31')](_0x5e3c4a[_0xf156('0x3a')],function(_0x50ebb7){var _0xac66bc={};_0xac66bc[_0x50ebb7]={'$like':'%'+_0x15fd2e[_0xf156('0x38')][_0xf156('0x5c')]+'%'};return _0xac66bc;})});}_0x5e3c4a=_[_0xf156('0x44')]({},_0x5e3c4a,_0x15fd2e['options']);return _0x30066e['getAgents'](_0x5e3c4a);}})[_0xf156('0x2a')](function(_0x40b4c0){if(_0x40b4c0){_0x46491b=_0x40b4c0['length'];if(!_0x15fd2e[_0xf156('0x38')][_0xf156('0x3e')]('nolimit')){_0x5e3c4a[_0xf156('0x23')]=qs[_0xf156('0x23')](_0x15fd2e[_0xf156('0x38')][_0xf156('0x23')]);_0x5e3c4a[_0xf156('0x21')]=qs[_0xf156('0x21')](_0x15fd2e[_0xf156('0x38')]['offset']);}return _0x30066e[_0xf156('0x8b')](_0x5e3c4a);}})[_0xf156('0x2a')](function(_0x3a0388){if(_0x3a0388){return _0x3a0388?{'count':_0x46491b,'rows':_0x3a0388}:null;}})['then'](respondWithResult(_0x4de441,null))[_0xf156('0x4b')](handleError(_0x4de441,null));};
\ No newline at end of file
index 81d5e8e..29a200d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x33007f,_0x4b38d2){var _0x10d38c=function(_0x497992){while(--_0x497992){_0x33007f['push'](_0x33007f['shift']());}};_0x10d38c(++_0x4b38d2);}(_0x814b,0x1a2));var _0xb814=function(_0x5c6022,_0x5cd10b){_0x5c6022=_0x5c6022-0x0;var _0x4ab5af=_0x814b[_0x5c6022];return _0x4ab5af;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
+var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x4551fb,_0x2b8b8e){var _0x562381=function(_0x3b3bff){while(--_0x3b3bff){_0x4551fb['push'](_0x4551fb['shift']());}};_0x562381(++_0x2b8b8e);}(_0x814b,0x1a2));var _0xb814=function(_0x2962d5,_0x38deda){_0x2962d5=_0x2962d5-0x0;var _0x273406=_0x814b[_0x2962d5];return _0x273406;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
index 1653ad6..893909b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['define','CmList','cm_lists','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports'];(function(_0x362d8d,_0x543ba7){var _0x88cef5=function(_0x57d2e8){while(--_0x57d2e8){_0x362d8d['push'](_0x362d8d['shift']());}};_0x88cef5(++_0x543ba7);}(_0x0bb5,0x148));var _0x50bb=function(_0x487117,_0x4f4386){_0x487117=_0x487117-0x0;var _0x3bc62a=_0x0bb5[_0x487117];return _0x3bc62a;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x50bb('0x2'));var BPromise=require(_0x50bb('0x3'));var rp=require(_0x50bb('0x4'));var fs=require('fs');var path=require(_0x50bb('0x5'));var rimraf=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var attributes=require(_0x50bb('0x8'));module[_0x50bb('0x9')]=function(_0x4e6093,_0x4a105c){return _0x4e6093[_0x50bb('0xa')](_0x50bb('0xb'),attributes,{'tableName':_0x50bb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','cm_lists','lodash'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xe14d,0x1ee));var _0xde14=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xe14d[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('CmList',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da140d3..2475bac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d66=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','defaults','localhost','redis','./cmList.socket','request','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util'];(function(_0x16513a,_0x1b528b){var _0x3cbce7=function(_0x5707be){while(--_0x5707be){_0x16513a['push'](_0x16513a['shift']());}};_0x3cbce7(++_0x1b528b);}(_0x1d66,0x14e));var _0x61d6=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1d66[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0x61d6('0x0'));var util=require(_0x61d6('0x1'));var moment=require(_0x61d6('0x2'));var BPromise=require(_0x61d6('0x3'));var rs=require(_0x61d6('0x4'));var fs=require('fs');var Redis=require(_0x61d6('0x5'));var db=require(_0x61d6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x61d6('0x7'))(_0x61d6('0x8'));var config=require(_0x61d6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x61d6('0xa')]['http']({'port':0x232a});config['redis']=_[_0x61d6('0xb')](config['redis'],{'host':_0x61d6('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x61d6('0xd')]));require(_0x61d6('0xe'))['register'](socket);function respondWithRpcPromise(_0x50ef64,_0x670fa1,_0x55cf56){return new BPromise(function(_0x5415b2,_0x1c6e8a){return client[_0x61d6('0xf')](_0x50ef64,_0x55cf56)[_0x61d6('0x10')](function(_0x32fe30){logger[_0x61d6('0x11')](_0x61d6('0x12'),_0x670fa1,'request\x20sent');logger[_0x61d6('0x13')](_0x61d6('0x14'),_0x670fa1,'request\x20sent',JSON[_0x61d6('0x15')](_0x32fe30));if(_0x32fe30['error']){if(_0x32fe30[_0x61d6('0x16')][_0x61d6('0x17')]===0x1f4){logger['error'](_0x61d6('0x12'),_0x670fa1,_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);return _0x1c6e8a(_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);}logger['error'](_0x61d6('0x12'),_0x670fa1,_0x32fe30[_0x61d6('0x16')][_0x61d6('0x18')]);return _0x5415b2(_0x32fe30['error']['message']);}else{logger['info'](_0x61d6('0x12'),_0x670fa1,_0x61d6('0x19'));_0x5415b2(_0x32fe30[_0x61d6('0x1a')]['message']);}})[_0x61d6('0x1b')](function(_0x376947){logger[_0x61d6('0x16')](_0x61d6('0x12'),_0x670fa1,_0x376947);_0x1c6e8a(_0x376947);});});}
\ No newline at end of file
+var _0x6a08=['result','catch','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x31619b,_0x1151ed){var _0xec6e5e=function(_0x983b0a){while(--_0x983b0a){_0x31619b['push'](_0x31619b['shift']());}};_0xec6e5e(++_0x1151ed);}(_0x6a08,0xf2));var _0x86a0=function(_0x2c3a88,_0x48637e){_0x2c3a88=_0x2c3a88-0x0;var _0x4a7925=_0x6a08[_0x2c3a88];return _0x4a7925;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x86a0('0x0'));var db=require(_0x86a0('0x1'))['db'];var utils=require(_0x86a0('0x2'));var logger=require(_0x86a0('0x3'))('rpc');var config=require(_0x86a0('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0x86a0('0x5')]({'port':0x232a});config[_0x86a0('0x6')]=_[_0x86a0('0x7')](config[_0x86a0('0x6')],{'host':_0x86a0('0x8'),'port':0x18eb});var socket=require(_0x86a0('0x9'))(new Redis(config[_0x86a0('0x6')]));require(_0x86a0('0xa'))[_0x86a0('0xb')](socket);function respondWithRpcPromise(_0x10be90,_0x223942,_0x2d66aa){return new BPromise(function(_0x5caf5c,_0x495e4f){return client[_0x86a0('0xc')](_0x10be90,_0x2d66aa)[_0x86a0('0xd')](function(_0x3469c5){logger[_0x86a0('0xe')](_0x86a0('0xf'),_0x223942,_0x86a0('0x10'));logger[_0x86a0('0x11')]('CmList,\x20%s,\x20%s,\x20%s',_0x223942,'request\x20sent',JSON[_0x86a0('0x12')](_0x3469c5));if(_0x3469c5[_0x86a0('0x13')]){if(_0x3469c5[_0x86a0('0x13')][_0x86a0('0x14')]===0x1f4){logger[_0x86a0('0x13')](_0x86a0('0xf'),_0x223942,_0x3469c5['error'][_0x86a0('0x15')]);return _0x495e4f(_0x3469c5[_0x86a0('0x13')][_0x86a0('0x15')]);}logger[_0x86a0('0x13')](_0x86a0('0xf'),_0x223942,_0x3469c5[_0x86a0('0x13')][_0x86a0('0x15')]);return _0x5caf5c(_0x3469c5[_0x86a0('0x13')][_0x86a0('0x15')]);}else{logger[_0x86a0('0xe')]('CmList,\x20%s,\x20%s',_0x223942,_0x86a0('0x10'));_0x5caf5c(_0x3469c5[_0x86a0('0x16')][_0x86a0('0x15')]);}})[_0x86a0('0x17')](function(_0xad0b99){logger[_0x86a0('0x13')]('CmList,\x20%s,\x20%s',_0x223942,_0xad0b99);_0x495e4f(_0xad0b99);});});}
\ No newline at end of file
index 3b7b55e..23ae71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01dc=['register','length','cmList:','./cmList.events','remove','update','emit','removeListener'];(function(_0x4e7ce4,_0x1ee13c){var _0x431441=function(_0x58e3e5){while(--_0x58e3e5){_0x4e7ce4['push'](_0x4e7ce4['shift']());}};_0x431441(++_0x1ee13c);}(_0x01dc,0x1bb));var _0xc01d=function(_0x1cd73b,_0x2b077d){_0x1cd73b=_0x1cd73b-0x0;var _0x1436ad=_0x01dc[_0x1cd73b];return _0x1436ad;};'use strict';var CmListEvents=require(_0xc01d('0x0'));var events=['save',_0xc01d('0x1'),_0xc01d('0x2')];function createListener(_0x32c22a,_0x3cf808){return function(_0x51d222){_0x3cf808[_0xc01d('0x3')](_0x32c22a,_0x51d222);};}function removeListener(_0x541c06,_0x173f01){return function(){CmListEvents[_0xc01d('0x4')](_0x541c06,_0x173f01);};}exports[_0xc01d('0x5')]=function(_0x146571){for(var _0x3e634b=0x0,_0x3e6e74=events[_0xc01d('0x6')];_0x3e634b<_0x3e6e74;_0x3e634b++){var _0x3ea1a5=events[_0x3e634b];var _0x2e1857=createListener(_0xc01d('0x7')+_0x3ea1a5,_0x146571);CmListEvents['on'](_0x3ea1a5,_0x2e1857);}};
\ No newline at end of file
+var _0x086a=['register','cmList:','./cmList.events','save','remove','emit','removeListener'];(function(_0x9bee44,_0x1fd402){var _0x362eaa=function(_0x3fdbc1){while(--_0x3fdbc1){_0x9bee44['push'](_0x9bee44['shift']());}};_0x362eaa(++_0x1fd402);}(_0x086a,0x1e5));var _0xa086=function(_0x2888e8,_0x176ba5){_0x2888e8=_0x2888e8-0x0;var _0x15da03=_0x086a[_0x2888e8];return _0x15da03;};'use strict';var CmListEvents=require(_0xa086('0x0'));var events=[_0xa086('0x1'),_0xa086('0x2'),'update'];function createListener(_0x2e6292,_0x1a03b5){return function(_0x3416d6){_0x1a03b5[_0xa086('0x3')](_0x2e6292,_0x3416d6);};}function removeListener(_0x3f24b3,_0x5b7226){return function(){CmListEvents[_0xa086('0x4')](_0x3f24b3,_0x5b7226);};}exports[_0xa086('0x5')]=function(_0x1ad667){for(var _0x2fc603=0x0,_0x79c16=events['length'];_0x2fc603<_0x79c16;_0x2fc603++){var _0x37c6a7=events[_0x2fc603];var _0x59cf42=createListener(_0xa086('0x6')+_0x37c6a7,_0x1ad667);CmListEvents['on'](_0x37c6a7,_0x59cf42);}};
\ No newline at end of file
index fdea699..6b87d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa548=['exports','connect-timeout','Router','fs-extra','../../components/auth/service','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContactsCsv','/:id/users','getAgents','post','addDisposition','/:id/fields','addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents'];(function(_0x1acc2d,_0x597696){var _0xabfa6d=function(_0x41e83c){while(--_0x41e83c){_0x1acc2d['push'](_0x1acc2d['shift']());}};_0xabfa6d(++_0x597696);}(_0xa548,0x119));var _0x8a54=function(_0x14c55b,_0x1f9802){_0x14c55b=_0x14c55b-0x0;var _0x2cc4e9=_0xa548[_0x14c55b];return _0x2cc4e9;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8a54('0x0'));var express=require('express');var router=express[_0x8a54('0x1')]();var fs_extra=require(_0x8a54('0x2'));var auth=require(_0x8a54('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router['get']('/',auth[_0x8a54('0x4')](),controller['index']);router[_0x8a54('0x5')](_0x8a54('0x6'),auth['isAuthenticated'](),controller[_0x8a54('0x7')]);router[_0x8a54('0x5')](_0x8a54('0x8'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x9')]);router['get'](_0x8a54('0xa'),auth[_0x8a54('0x4')](),controller[_0x8a54('0xb')]);router[_0x8a54('0x5')](_0x8a54('0xc'),auth[_0x8a54('0x4')](),controller['getContacts']);router[_0x8a54('0x5')]('/:id/contacts/csv',auth[_0x8a54('0x4')](),controller[_0x8a54('0xd')]);router['get']('/:id/fields',auth[_0x8a54('0x4')](),controller['getCustomFields']);router[_0x8a54('0x5')](_0x8a54('0xe'),auth['isAuthenticated'](),controller[_0x8a54('0xf')]);router[_0x8a54('0x10')]('/',auth[_0x8a54('0x4')](),controller['create']);router[_0x8a54('0x10')](_0x8a54('0xa'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x11')]);router[_0x8a54('0x10')](_0x8a54('0xc'),auth['isAuthenticated'](),controller['addContacts']);router[_0x8a54('0x10')](_0x8a54('0x12'),auth['isAuthenticated'](),controller[_0x8a54('0x13')]);router['post'](_0x8a54('0xe'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x14')]);router[_0x8a54('0x15')]('/:id',auth[_0x8a54('0x4')](),controller[_0x8a54('0x16')]);router[_0x8a54('0x17')](_0x8a54('0x8'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x18')]);router[_0x8a54('0x17')]('/:id/dispositions',auth[_0x8a54('0x4')](),controller[_0x8a54('0x19')]);router['delete'](_0x8a54('0xe'),auth[_0x8a54('0x4')](),controller[_0x8a54('0x1a')]);module[_0x8a54('0x1b')]=router;
\ No newline at end of file
+var _0x383a=['../../config/environment','isAuthenticated','index','get','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addCustomField','addAgents','put','destroy','removeDispositions','delete','removeAgents','exports','util','path','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x3a7077,_0x1f9d15){var _0x3ad27d=function(_0x3e2ece){while(--_0x3e2ece){_0x3a7077['push'](_0x3a7077['shift']());}};_0x3ad27d(++_0x1f9d15);}(_0x383a,0x1ad));var _0xa383=function(_0x4057a1,_0x315235){_0x4057a1=_0x4057a1-0x0;var _0x12f4a3=_0x383a[_0x4057a1];return _0x12f4a3;};'use strict';var multer=require('multer');var util=require(_0xa383('0x0'));var path=require(_0xa383('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa383('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa383('0x3'));var interaction=require(_0xa383('0x4'));var config=require(_0xa383('0x5'));var controller=require('./cmList.controller');router['get']('/',auth[_0xa383('0x6')](),controller[_0xa383('0x7')]);router[_0xa383('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0xa383('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xa383('0x8')](_0xa383('0xa'),auth['isAuthenticated'](),controller[_0xa383('0xb')]);router[_0xa383('0x8')](_0xa383('0xc'),auth['isAuthenticated'](),controller[_0xa383('0xd')]);router['get']('/:id/contacts/csv',auth[_0xa383('0x6')](),controller[_0xa383('0xe')]);router[_0xa383('0x8')](_0xa383('0xf'),auth['isAuthenticated'](),controller[_0xa383('0x10')]);router[_0xa383('0x8')](_0xa383('0x11'),auth[_0xa383('0x6')](),controller[_0xa383('0x12')]);router[_0xa383('0x13')]('/',auth[_0xa383('0x6')](),controller[_0xa383('0x14')]);router['post']('/:id/dispositions',auth[_0xa383('0x6')](),controller[_0xa383('0x15')]);router[_0xa383('0x13')](_0xa383('0xc'),auth['isAuthenticated'](),controller[_0xa383('0x16')]);router['post'](_0xa383('0xf'),auth[_0xa383('0x6')](),controller[_0xa383('0x17')]);router[_0xa383('0x13')](_0xa383('0x11'),auth[_0xa383('0x6')](),controller[_0xa383('0x18')]);router[_0xa383('0x19')](_0xa383('0x9'),auth[_0xa383('0x6')](),controller['update']);router['delete']('/:id',auth[_0xa383('0x6')](),controller[_0xa383('0x1a')]);router['delete'](_0xa383('0xa'),auth['isAuthenticated'](),controller[_0xa383('0x1b')]);router[_0xa383('0x1c')]('/:id/users',auth[_0xa383('0x6')](),controller[_0xa383('0x1d')]);module[_0xa383('0x1e')]=router;
\ No newline at end of file
index 9cbcc4b..da2cc07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0cd=['sequelize','VIRTUAL','field','STRING'];(function(_0x59a074,_0xdc2d8b){var _0x48ca14=function(_0x54c118){while(--_0x54c118){_0x59a074['push'](_0x59a074['shift']());}};_0x48ca14(++_0xdc2d8b);}(_0xb0cd,0xb4));var _0xdb0c=function(_0x2205dc,_0x1bf0e3){_0x2205dc=_0x2205dc-0x0;var _0x85363b=_0xb0cd[_0x2205dc];return _0x85363b;};'use strict';var Sequelize=require(_0xdb0c('0x0'));module['exports']={'name':{'type':Sequelize[_0xdb0c('0x1')],'get':function(_0x445258){return this['getDataValue'](_0xdb0c('0x2'));}},'field':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xdb0c('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xb7af=['STRING','VIRTUAL','getDataValue','field'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0xb7af,0x18d));var _0xfb7a=function(_0x43d701,_0x4bb2e9){_0x43d701=_0x43d701-0x0;var _0x2ec4c6=_0xb7af[_0x43d701];return _0x2ec4c6;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfb7a('0x0')],'get':function(_0x9b8a94){return this[_0xfb7a('0x1')](_0xfb7a('0x2'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xfb7a('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0xfb7a('0x3')],'allowNull':![]}};
\ No newline at end of file
index 66a46e9..ca04cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0xd708ca,_0x399086){var _0x2695e3=function(_0x9c06e2){while(--_0x9c06e2){_0xd708ca['push'](_0xd708ca['shift']());}};_0x2695e3(++_0x399086);}(_0x7a54,0x106));var _0x47a5=function(_0xfb3172,_0x13103d){_0xfb3172=_0xfb3172-0x0;var _0x21cab2=_0x7a54[_0xfb3172];return _0x21cab2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x26fb3a,_0x4ef5e9){var _0x1350a9=function(_0x3dcc9d){while(--_0x3dcc9d){_0x26fb3a['push'](_0x26fb3a['shift']());}};_0x1350a9(++_0x4ef5e9);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index d45543d..d4c985f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x625a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Condition','tools_conditions','lodash','../../config/logger'];(function(_0x3b15e1,_0x112049){var _0x3c37a7=function(_0x2e8f92){while(--_0x2e8f92){_0x3b15e1['push'](_0x3b15e1['shift']());}};_0x3c37a7(++_0x112049);}(_0x625a,0xa6));var _0xa625=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x625a[_0x3747ae];return _0x339035;};'use strict';var _=require(_0xa625('0x0'));var util=require('util');var logger=require(_0xa625('0x1'))(_0xa625('0x2'));var moment=require(_0xa625('0x3'));var BPromise=require(_0xa625('0x4'));var rp=require(_0xa625('0x5'));var fs=require('fs');var path=require(_0xa625('0x6'));var rimraf=require(_0xa625('0x7'));var config=require(_0xa625('0x8'));var attributes=require('./condition.attributes');module[_0xa625('0x9')]=function(_0x4aefc6,_0x169f0a){return _0x4aefc6['define'](_0xa625('0xa'),attributes,{'tableName':_0xa625('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c49=['tools_conditions','lodash','util','../../config/logger','request-promise','path','rimraf','./condition.attributes','exports','define','Condition'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x8c49,0x161));var _0x98c4=function(_0x588011,_0x5e9d11){_0x588011=_0x588011-0x0;var _0x3b3773=_0x8c49[_0x588011];return _0x3b3773;};'use strict';var _=require(_0x98c4('0x0'));var util=require(_0x98c4('0x1'));var logger=require(_0x98c4('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x98c4('0x3'));var fs=require('fs');var path=require(_0x98c4('0x4'));var rimraf=require(_0x98c4('0x5'));var config=require('../../config/environment');var attributes=require(_0x98c4('0x6'));module[_0x98c4('0x7')]=function(_0x46206c,_0x3e63ac){return _0x46206c[_0x98c4('0x8')](_0x98c4('0x9'),attributes,{'tableName':_0x98c4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8b341cc..c10cee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7906=['message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7906,0xa2));var _0x6790=function(_0x1530f7,_0x379e15){_0x1530f7=_0x1530f7-0x0;var _0x29ec9d=_0x7906[_0x1530f7];return _0x29ec9d;};'use strict';var _=require(_0x6790('0x0'));var util=require(_0x6790('0x1'));var moment=require(_0x6790('0x2'));var BPromise=require('bluebird');var rs=require(_0x6790('0x3'));var fs=require('fs');var Redis=require(_0x6790('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6790('0x5'));var logger=require(_0x6790('0x6'))('rpc');var config=require(_0x6790('0x7'));var jayson=require(_0x6790('0x8'));var client=jayson['client'][_0x6790('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9ae2d8,_0x5092b2,_0x1b4853){return new BPromise(function(_0x521e84,_0x4cc031){return client[_0x6790('0xa')](_0x9ae2d8,_0x1b4853)[_0x6790('0xb')](function(_0x5e1194){logger[_0x6790('0xc')](_0x6790('0xd'),_0x5092b2,_0x6790('0xe'));logger[_0x6790('0xf')](_0x6790('0x10'),_0x5092b2,_0x6790('0xe'),JSON['stringify'](_0x5e1194));if(_0x5e1194[_0x6790('0x11')]){if(_0x5e1194[_0x6790('0x11')]['code']===0x1f4){logger[_0x6790('0x11')]('Condition,\x20%s,\x20%s',_0x5092b2,_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);return _0x4cc031(_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);}logger['error']('Condition,\x20%s,\x20%s',_0x5092b2,_0x5e1194['error']['message']);return _0x521e84(_0x5e1194[_0x6790('0x11')][_0x6790('0x12')]);}else{logger[_0x6790('0xc')](_0x6790('0xd'),_0x5092b2,'request\x20sent');_0x521e84(_0x5e1194['result'][_0x6790('0x12')]);}})[_0x6790('0x13')](function(_0x18b374){logger[_0x6790('0x11')](_0x6790('0xd'),_0x5092b2,_0x18b374);_0x4cc031(_0x18b374);});});}
\ No newline at end of file
+var _0x97e4=['message','result','catch','lodash','util','moment','../../mysqldb','../../config/environment','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x27a1c5,_0x2dc092){var _0x100c03=function(_0x18a830){while(--_0x18a830){_0x27a1c5['push'](_0x27a1c5['shift']());}};_0x100c03(++_0x2dc092);}(_0x97e4,0x17d));var _0x497e=function(_0x6ea106,_0x181b3d){_0x6ea106=_0x6ea106-0x0;var _0x49ecfe=_0x97e4[_0x6ea106];return _0x49ecfe;};'use strict';var _=require(_0x497e('0x0'));var util=require(_0x497e('0x1'));var moment=require(_0x497e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x497e('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x497e('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0x497e('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x11d293,_0x1e7b01,_0x3e2b25){return new BPromise(function(_0x548e8f,_0xd51ff3){return client[_0x497e('0x6')](_0x11d293,_0x3e2b25)[_0x497e('0x7')](function(_0x5aa068){logger[_0x497e('0x8')](_0x497e('0x9'),_0x1e7b01,_0x497e('0xa'));logger[_0x497e('0xb')]('Condition,\x20%s,\x20%s,\x20%s',_0x1e7b01,_0x497e('0xa'),JSON[_0x497e('0xc')](_0x5aa068));if(_0x5aa068[_0x497e('0xd')]){if(_0x5aa068['error'][_0x497e('0xe')]===0x1f4){logger['error']('Condition,\x20%s,\x20%s',_0x1e7b01,_0x5aa068[_0x497e('0xd')][_0x497e('0xf')]);return _0xd51ff3(_0x5aa068[_0x497e('0xd')]['message']);}logger[_0x497e('0xd')](_0x497e('0x9'),_0x1e7b01,_0x5aa068['error']['message']);return _0x548e8f(_0x5aa068[_0x497e('0xd')][_0x497e('0xf')]);}else{logger[_0x497e('0x8')](_0x497e('0x9'),_0x1e7b01,_0x497e('0xa'));_0x548e8f(_0x5aa068[_0x497e('0x10')]['message']);}})[_0x497e('0x11')](function(_0x55a20c){logger[_0x497e('0xd')](_0x497e('0x9'),_0x1e7b01,_0x55a20c);_0xd51ff3(_0x55a20c);});});}
\ No newline at end of file
index 9dc7b80..1e5bce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3693=['../../components/interaction/service','../../config/environment','/:id','update','isAuthenticated','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x43cb1a,_0x776da9){var _0x24435a=function(_0x5330c3){while(--_0x5330c3){_0x43cb1a['push'](_0x43cb1a['shift']());}};_0x24435a(++_0x776da9);}(_0x3693,0x124));var _0x3369=function(_0x1ca03a,_0x3d0fe2){_0x1ca03a=_0x1ca03a-0x0;var _0x478662=_0x3693[_0x1ca03a];return _0x478662;};'use strict';var multer=require(_0x3369('0x0'));var util=require('util');var path=require(_0x3369('0x1'));var timeout=require(_0x3369('0x2'));var express=require(_0x3369('0x3'));var router=express[_0x3369('0x4')]();var fs_extra=require(_0x3369('0x5'));var auth=require(_0x3369('0x6'));var interaction=require(_0x3369('0x7'));var config=require(_0x3369('0x8'));var controller=require('./condition.controller');router['put'](_0x3369('0x9'),auth['isAuthenticated'](),controller[_0x3369('0xa')]);router['delete']('/:id',auth[_0x3369('0xb')](),controller['destroy']);module[_0x3369('0xc')]=router;
\ No newline at end of file
+var _0x95db=['/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./condition.controller','put'];(function(_0x2872c3,_0x5b04cb){var _0x41b1fc=function(_0x59628f){while(--_0x59628f){_0x2872c3['push'](_0x2872c3['shift']());}};_0x41b1fc(++_0x5b04cb);}(_0x95db,0x19b));var _0xb95d=function(_0x1d346e,_0xc9aee1){_0x1d346e=_0x1d346e-0x0;var _0x445ea0=_0x95db[_0x1d346e];return _0x445ea0;};'use strict';var multer=require(_0xb95d('0x0'));var util=require(_0xb95d('0x1'));var path=require(_0xb95d('0x2'));var timeout=require(_0xb95d('0x3'));var express=require('express');var router=express[_0xb95d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb95d('0x5'));var interaction=require(_0xb95d('0x6'));var config=require('../../config/environment');var controller=require(_0xb95d('0x7'));router[_0xb95d('0x8')](_0xb95d('0x9'),auth[_0xb95d('0xa')](),controller[_0xb95d('0xb')]);router[_0xb95d('0xc')](_0xb95d('0x9'),auth[_0xb95d('0xa')](),controller[_0xb95d('0xd')]);module[_0xb95d('0xe')]=router;
\ No newline at end of file
index a967030..5c40760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x4ecc49,_0x5d71e8){var _0x3305d2=function(_0x3241c8){while(--_0x3241c8){_0x4ecc49['push'](_0x4ecc49['shift']());}};_0x3305d2(++_0x5d71e8);}(_0xb10b,0x12a));var _0xbb10=function(_0x52b06f,_0x2e7e09){_0x52b06f=_0x52b06f-0x0;var _0x1ec9f9=_0xb10b[_0x52b06f];return _0x1ec9f9;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x5e4c2d,_0x2e37d4){var _0x13a495=function(_0xba9609){while(--_0xba9609){_0x5e4c2d['push'](_0x5e4c2d['shift']());}};_0x13a495(++_0x2e37d4);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index a8d402e..9a176ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aae=['widgetAttributes:\x20%s','addItem','DashboardItem','getItems','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboard.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','UserProfileResource','stack','send','rawAttributes','key','map','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','Dashboard','findAll','rows','catch','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','userProfileId','error','params','omit','createdAt','updatedAt','body','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','reportType','attrReport','attrRefresh'];(function(_0x49d313,_0x5a6e3b){var _0x2291fd=function(_0x127a6e){while(--_0x127a6e){_0x49d313['push'](_0x49d313['shift']());}};_0x2291fd(++_0x5a6e3b);}(_0x4aae,0x7b));var _0xe4aa=function(_0x4a6508,_0x1c0c78){_0x4a6508=_0x4a6508-0x0;var _0x58f1de=_0x4aae[_0x4a6508];return _0x58f1de;};'use strict';var emlformat=require(_0xe4aa('0x0'));var rimraf=require(_0xe4aa('0x1'));var zipdir=require(_0xe4aa('0x2'));var jsonpatch=require(_0xe4aa('0x3'));var rp=require('request-promise');var moment=require(_0xe4aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe4aa('0x5'));var util=require(_0xe4aa('0x6'));var path=require(_0xe4aa('0x7'));var sox=require(_0xe4aa('0x8'));var csv=require(_0xe4aa('0x9'));var ejs=require(_0xe4aa('0xa'));var fs=require('fs');var fs_extra=require(_0xe4aa('0xb'));var _=require('lodash');var squel=require(_0xe4aa('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe4aa('0x9'));var querystring=require(_0xe4aa('0xd'));var Papa=require(_0xe4aa('0xe'));var Redis=require(_0xe4aa('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe4aa('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe4aa('0x11'))(_0xe4aa('0x12'));var utils=require(_0xe4aa('0x13'));var config=require(_0xe4aa('0x14'));var licenseUtil=require(_0xe4aa('0x15'));var db=require(_0xe4aa('0x16'))['db'];config[_0xe4aa('0x17')]=_['defaults'](config['redis'],{'host':_0xe4aa('0x18'),'port':0x18eb});var socket=require(_0xe4aa('0x19'))(new Redis(config[_0xe4aa('0x17')]));require(_0xe4aa('0x1a'))[_0xe4aa('0x1b')](socket);function respondWithStatusCode(_0x83798b,_0x1e8340){_0x1e8340=_0x1e8340||0xcc;return function(_0x365645){if(_0x365645){return _0x83798b['sendStatus'](_0x1e8340);}return _0x83798b['status'](_0x1e8340)[_0xe4aa('0x1c')]();};}function respondWithResult(_0xfd088c,_0x1f840a){_0x1f840a=_0x1f840a||0xc8;return function(_0x5d1f53){if(_0x5d1f53){return _0xfd088c[_0xe4aa('0x1d')](_0x1f840a)[_0xe4aa('0x1e')](_0x5d1f53);}};}function respondWithFilteredResult(_0x125309,_0x988f52){return function(_0x5ec195){if(_0x5ec195){var _0x27bf49=typeof _0x988f52[_0xe4aa('0x1f')]===_0xe4aa('0x20')&&typeof _0x988f52[_0xe4aa('0x21')]===_0xe4aa('0x20');var _0x32f7c5=_0x5ec195[_0xe4aa('0x22')];var _0x5ec635=_0x27bf49?0x0:_0x988f52['offset'];var _0x431873=_0x27bf49?_0x5ec195[_0xe4aa('0x22')]:_0x988f52[_0xe4aa('0x1f')]+_0x988f52['limit'];var _0x113864;if(_0x431873>=_0x32f7c5){_0x431873=_0x32f7c5;_0x113864=0xc8;}else{_0x113864=0xce;}_0x125309[_0xe4aa('0x1d')](_0x113864);return _0x125309[_0xe4aa('0x23')](_0xe4aa('0x24'),_0x5ec635+'-'+_0x431873+'/'+_0x32f7c5)[_0xe4aa('0x1e')](_0x5ec195);}return null;};}function patchUpdates(_0x469ff7){return function(_0x251822){try{jsonpatch[_0xe4aa('0x25')](_0x251822,_0x469ff7,!![]);}catch(_0x5751f9){return BPromise[_0xe4aa('0x26')](_0x5751f9);}return _0x251822['save']();};}function saveUpdates(_0x3a24a7,_0x302b91){return function(_0x35c50e){if(_0x35c50e){return _0x35c50e['update'](_0x3a24a7)[_0xe4aa('0x27')](function(_0x529fcd){return _0x529fcd;});}return null;};}function removeEntity(_0x390e1e,_0x5578a0){return function(_0x308d5a){if(_0x308d5a){return _0x308d5a[_0xe4aa('0x28')]()[_0xe4aa('0x27')](function(){var _0x40f9e1=_0x308d5a[_0xe4aa('0x29')]({'plain':!![]});var _0x460945='CustomDashboards';return db[_0xe4aa('0x2a')][_0xe4aa('0x28')]({'where':{'type':_0x460945,'resourceId':_0x40f9e1['id']}})[_0xe4aa('0x27')](function(){return _0x308d5a;});})[_0xe4aa('0x27')](function(){_0x390e1e[_0xe4aa('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xaf1087,_0x2f7d4a){return function(_0x35c461){if(!_0x35c461){_0xaf1087['sendStatus'](0x194);}return _0x35c461;};}function handleError(_0x38d26a,_0x5b3539){_0x5b3539=_0x5b3539||0x1f4;return function(_0x14f642){logger['error'](_0x14f642[_0xe4aa('0x2b')]);if(_0x14f642['name']){delete _0x14f642['name'];}_0x38d26a[_0xe4aa('0x1d')](_0x5b3539)[_0xe4aa('0x2c')](_0x14f642);};}exports['index']=function(_0x4903f9,_0x390d50){var _0xc788b5={},_0x50246b={},_0x10454a={'count':0x0,'rows':[]};var _0x93d54f=_['map'](db['Dashboard'][_0xe4aa('0x2d')],function(_0x23b268){return{'name':_0x23b268['fieldName'],'type':_0x23b268['type'][_0xe4aa('0x2e')]};});_0x50246b['model']=_[_0xe4aa('0x2f')](_0x93d54f,'name');_0x50246b[_0xe4aa('0x30')]=_['keys'](_0x4903f9[_0xe4aa('0x30')]);_0x50246b[_0xe4aa('0x31')]=_[_0xe4aa('0x32')](_0x50246b['model'],_0x50246b[_0xe4aa('0x30')]);_0xc788b5[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x50246b[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x4903f9[_0xe4aa('0x30')]['fields']));_0xc788b5[_0xe4aa('0x33')]=_0xc788b5['attributes'][_0xe4aa('0x36')]?_0xc788b5['attributes']:_0x50246b[_0xe4aa('0x34')];if(!_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x37')](_0xe4aa('0x38'))){_0xc788b5['limit']=qs[_0xe4aa('0x21')](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x21')]);_0xc788b5[_0xe4aa('0x1f')]=qs['offset'](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x1f')]);}_0xc788b5[_0xe4aa('0x39')]=qs[_0xe4aa('0x3a')](_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x3a')]);_0xc788b5[_0xe4aa('0x3b')]=qs['filters'](_[_0xe4aa('0x3c')](_0x4903f9[_0xe4aa('0x30')],_0x50246b[_0xe4aa('0x31')]),_0x93d54f);if(_0x4903f9[_0xe4aa('0x30')][_0xe4aa('0x3d')]){_0xc788b5[_0xe4aa('0x3b')]=_[_0xe4aa('0x3e')](_0xc788b5[_0xe4aa('0x3b')],{'$or':_[_0xe4aa('0x2f')](_0x93d54f,function(_0x55b8b8){if(_0x55b8b8['type']!==_0xe4aa('0x3f')){var _0x446745={};_0x446745[_0x55b8b8[_0xe4aa('0x40')]]={'$like':'%'+_0x4903f9['query'][_0xe4aa('0x3d')]+'%'};return _0x446745;}})});}_0xc788b5=_[_0xe4aa('0x3e')]({},_0xc788b5,_0x4903f9[_0xe4aa('0x41')]);var _0x38a98f={'where':_0xc788b5[_0xe4aa('0x3b')]};return db['Dashboard'][_0xe4aa('0x22')](_0x38a98f)[_0xe4aa('0x27')](function(_0x1110f1){_0x10454a[_0xe4aa('0x22')]=_0x1110f1;if(_0x4903f9['query'][_0xe4aa('0x42')]){_0xc788b5['include']=[{'all':!![]}];}return db[_0xe4aa('0x43')][_0xe4aa('0x44')](_0xc788b5);})[_0xe4aa('0x27')](function(_0x1c7cf2){_0x10454a[_0xe4aa('0x45')]=_0x1c7cf2;return _0x10454a;})[_0xe4aa('0x27')](respondWithFilteredResult(_0x390d50,_0xc788b5))[_0xe4aa('0x46')](handleError(_0x390d50,null));};exports['show']=function(_0x42c29b,_0x95d1f2){var _0x205c3b={'raw':![],'where':{'id':_0x42c29b['params']['id']}},_0x124e94={};_0x124e94['model']=_[_0xe4aa('0x47')](db['Dashboard']['rawAttributes']);_0x124e94[_0xe4aa('0x30')]=_['keys'](_0x42c29b[_0xe4aa('0x30')]);_0x124e94[_0xe4aa('0x31')]=_[_0xe4aa('0x32')](_0x124e94[_0xe4aa('0x34')],_0x124e94[_0xe4aa('0x30')]);_0x205c3b[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x124e94[_0xe4aa('0x34')],qs['fields'](_0x42c29b['query']['fields']));_0x205c3b[_0xe4aa('0x33')]=_0x205c3b[_0xe4aa('0x33')][_0xe4aa('0x36')]?_0x205c3b[_0xe4aa('0x33')]:_0x124e94[_0xe4aa('0x34')];if(_0x42c29b[_0xe4aa('0x30')]['includeAll']){_0x205c3b[_0xe4aa('0x48')]=[{'all':!![]}];}_0x205c3b=_[_0xe4aa('0x3e')]({},_0x205c3b,_0x42c29b[_0xe4aa('0x41')]);return db[_0xe4aa('0x43')][_0xe4aa('0x49')](_0x205c3b)[_0xe4aa('0x27')](handleEntityNotFound(_0x95d1f2,null))[_0xe4aa('0x27')](respondWithResult(_0x95d1f2,null))[_0xe4aa('0x46')](handleError(_0x95d1f2,null));};exports[_0xe4aa('0x4a')]=function(_0x514283,_0x2648cb){return db[_0xe4aa('0x43')]['create'](_0x514283['body'],{})[_0xe4aa('0x27')](function(_0x4a02e7){var _0x3841f8=_0x514283[_0xe4aa('0x4b')]['get']({'plain':!![]});if(!_0x3841f8)throw new Error(_0xe4aa('0x4c'));if(_0x3841f8[_0xe4aa('0x4d')]===_0xe4aa('0x4b')){var _0x1116f8=_0x4a02e7[_0xe4aa('0x29')]({'plain':!![]});var _0x4bc80c=_0xe4aa('0x4e');return db['UserProfileSection'][_0xe4aa('0x49')]({'where':{'name':_0x4bc80c,'userProfileId':_0x3841f8[_0xe4aa('0x4f')]},'raw':!![]})[_0xe4aa('0x27')](function(_0x175b3d){if(_0x175b3d&&_0x175b3d['autoAssociation']===0x0){return db['UserProfileResource'][_0xe4aa('0x4a')]({'name':_0x1116f8[_0xe4aa('0x40')],'resourceId':_0x1116f8['id'],'type':_0x175b3d[_0xe4aa('0x40')],'sectionId':_0x175b3d['id']},{})[_0xe4aa('0x27')](function(){return _0x4a02e7;});}else{return _0x4a02e7;}})['catch'](function(_0x179f52){logger[_0xe4aa('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x179f52);throw _0x179f52;});}return _0x4a02e7;})[_0xe4aa('0x27')](respondWithResult(_0x2648cb,0xc9))['catch'](handleError(_0x2648cb,null));};exports['clone']=function(_0x896e24,_0x39fddf){var _0x197f59={'where':{'id':_0x896e24[_0xe4aa('0x51')]['id']}},_0x1e8f26={};_0x1e8f26['model']=_[_0xe4aa('0x47')](db[_0xe4aa('0x43')][_0xe4aa('0x2d')]);_0x197f59[_0xe4aa('0x33')]=_[_0xe4aa('0x32')](_0x1e8f26[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x896e24[_0xe4aa('0x30')]['fields']));_0x197f59[_0xe4aa('0x33')]=_0x197f59['attributes'][_0xe4aa('0x36')]?_0x197f59[_0xe4aa('0x33')]:_0x1e8f26[_0xe4aa('0x34')];if(_0x896e24['query'][_0xe4aa('0x42')]){_0x197f59[_0xe4aa('0x48')]=[{'all':!![]}];}_0x197f59=_[_0xe4aa('0x3e')]({},_0x197f59,_0x896e24[_0xe4aa('0x41')]);return db['Dashboard']['find'](_0x197f59)[_0xe4aa('0x27')](handleEntityNotFound(_0x39fddf,null))[_0xe4aa('0x27')](function(_0x4e05ea){if(_0x4e05ea){var _0x57232d=_0x4e05ea[_0xe4aa('0x29')]({'plain':!![]});_0x57232d=qs[_0xe4aa('0x52')](_0x57232d,['id',_0xe4aa('0x53'),_0xe4aa('0x54')]);_0x896e24[_0xe4aa('0x55')]=_[_0xe4aa('0x52')](_0x896e24[_0xe4aa('0x55')],['id','createdAt',_0xe4aa('0x54')]);return db[_0xe4aa('0x43')][_0xe4aa('0x4a')](_['merge'](_0x57232d,_0x896e24['body']),{'include':_0x896e24[_0xe4aa('0x30')][_0xe4aa('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x26851d){var _0x4723d9=_0x896e24[_0xe4aa('0x4b')][_0xe4aa('0x29')]({'plain':!![]});if(!_0x4723d9)throw new Error(_0xe4aa('0x4c'));if(_0x4723d9[_0xe4aa('0x4d')]===_0xe4aa('0x4b')){var _0x1640df=_0x26851d['get']({'plain':!![]});var _0x8d721b=_0xe4aa('0x4e');return db[_0xe4aa('0x56')][_0xe4aa('0x49')]({'where':{'name':_0x8d721b,'userProfileId':_0x4723d9[_0xe4aa('0x4f')]},'raw':!![]})[_0xe4aa('0x27')](function(_0x395bc8){if(_0x395bc8&&_0x395bc8[_0xe4aa('0x57')]===0x0){return db[_0xe4aa('0x2a')]['create']({'name':_0x1640df[_0xe4aa('0x40')],'resourceId':_0x1640df['id'],'type':_0x395bc8[_0xe4aa('0x40')],'sectionId':_0x395bc8['id']},{})['then'](function(){return _0x26851d;});}else{return _0x26851d;}})[_0xe4aa('0x46')](function(_0x36e24b){logger[_0xe4aa('0x50')](_0xe4aa('0x58'),_0x36e24b);throw _0x36e24b;});}return _0x26851d;});}})[_0xe4aa('0x27')](respondWithResult(_0x39fddf,0xc9))[_0xe4aa('0x46')](handleError(_0x39fddf,null));};exports[_0xe4aa('0x59')]=function(_0x263203,_0xe544db){if(_0x263203['body']['id']){delete _0x263203['body']['id'];}return db[_0xe4aa('0x43')][_0xe4aa('0x49')]({'where':{'id':_0x263203[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0xe544db,null))[_0xe4aa('0x27')](saveUpdates(_0x263203[_0xe4aa('0x55')],null))[_0xe4aa('0x27')](respondWithResult(_0xe544db,null))[_0xe4aa('0x46')](handleError(_0xe544db,null));};exports[_0xe4aa('0x28')]=function(_0x57b16c,_0x23d913){return db[_0xe4aa('0x43')][_0xe4aa('0x49')]({'where':{'id':_0x57b16c[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x23d913,null))[_0xe4aa('0x27')](removeEntity(_0x23d913,null))[_0xe4aa('0x46')](handleError(_0x23d913,null));};function widgetAttributes(_0x16f6e7){try{switch(_0x16f6e7['type']){case _0xe4aa('0x5a'):return[{'name':'attrUrl','value':_0x16f6e7[_0xe4aa('0x5b')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7['attrs'][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x5e')}];case'custom':return[{'name':_0xe4aa('0x5f'),'value':_0x16f6e7[_0xe4aa('0x5f')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||''}];case _0xe4aa('0x60'):return[{'name':'attrHourFormat','value':_0x16f6e7[_0xe4aa('0x61')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7['attrs'][0x0]['value']:undefined)||_0xe4aa('0x62')},{'name':_0xe4aa('0x63'),'value':_0x16f6e7[_0xe4aa('0x63')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1]['value']:undefined)||'0.00'},{'name':'attrFontSize','value':_0x16f6e7[_0xe4aa('0x64')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||0xc}];case _0xe4aa('0x65'):return[{'name':'attrMetric','value':_0x16f6e7[_0xe4aa('0x66')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x67')},{'name':'attrVoiceQueues','value':_0x16f6e7[_0xe4aa('0x68')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1][_0xe4aa('0x5d')]:undefined)||[]},{'name':_0xe4aa('0x64'),'value':_0x16f6e7['attrFontSize']||(_0x16f6e7['attrs']&&_0x16f6e7['attrs'][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||0x14}];case _0xe4aa('0x69'):case _0xe4aa('0x6a'):return[{'name':_0xe4aa('0x6b'),'value':_0x16f6e7[_0xe4aa('0x6b')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||_0xe4aa('0x67')},{'name':'attrSerie2','value':_0x16f6e7[_0xe4aa('0x6c')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7[_0xe4aa('0x5c')][0x1][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x6d'),'value':_0x16f6e7['attrSerie3']||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x2]?_0x16f6e7[_0xe4aa('0x5c')][0x2][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x68'),'value':_0x16f6e7[_0xe4aa('0x68')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x3]?_0x16f6e7[_0xe4aa('0x5c')][0x3][_0xe4aa('0x5d')]:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x16f6e7[_0xe4aa('0x6e')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7['attrs'][0x0]?_0x16f6e7['attrs'][0x0]['type']:undefined)||null,'value':_0x16f6e7[_0xe4aa('0x6f')]||(_0x16f6e7['attrs']&&_0x16f6e7[_0xe4aa('0x5c')][0x0]?_0x16f6e7[_0xe4aa('0x5c')][0x0][_0xe4aa('0x5d')]:undefined)||null},{'name':_0xe4aa('0x70'),'value':_0x16f6e7[_0xe4aa('0x70')]||(_0x16f6e7[_0xe4aa('0x5c')]&&_0x16f6e7[_0xe4aa('0x5c')][0x1]?_0x16f6e7['attrs'][0x1][_0xe4aa('0x5d')]:undefined)||0x0}];default:return[];}}catch(_0xc67a2f){logger['error'](_0xe4aa('0x71'),JSON['stringify'](_0xc67a2f));return[];}}exports[_0xe4aa('0x72')]=function(_0x220e18,_0x2cc9fb,_0x552a8){if(_0x220e18[_0xe4aa('0x55')]['id']){delete _0x220e18[_0xe4aa('0x55')]['id'];}return db[_0xe4aa('0x43')]['find']({'where':{'id':_0x220e18[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x2cc9fb,null))[_0xe4aa('0x27')](function(_0x475334){if(_0x475334){_0x220e18[_0xe4aa('0x55')]['DashboardId']=_0x475334['id'];_0x220e18[_0xe4aa('0x55')][_0xe4aa('0x5c')]=widgetAttributes(_0x220e18[_0xe4aa('0x55')]);return db[_0xe4aa('0x73')]['create'](_0x220e18[_0xe4aa('0x55')]);}})['then'](respondWithResult(_0x2cc9fb,null))[_0xe4aa('0x46')](handleError(_0x2cc9fb,null));};exports[_0xe4aa('0x74')]=function(_0x2d8e96,_0x3f065f,_0x50f486){var _0x3bed61={};var _0x25f963={};var _0xc966ee;var _0x466a45;return db[_0xe4aa('0x43')][_0xe4aa('0x75')]({'where':{'id':_0x2d8e96[_0xe4aa('0x51')]['id']}})[_0xe4aa('0x27')](handleEntityNotFound(_0x3f065f,null))[_0xe4aa('0x27')](function(_0x586133){if(_0x586133){_0xc966ee=_0x586133;_0x25f963['model']=_[_0xe4aa('0x47')](db[_0xe4aa('0x73')][_0xe4aa('0x2d')]);_0x25f963[_0xe4aa('0x30')]=_[_0xe4aa('0x47')](_0x2d8e96[_0xe4aa('0x30')]);_0x25f963[_0xe4aa('0x31')]=_['intersection'](_0x25f963[_0xe4aa('0x34')],_0x25f963['query']);_0x3bed61['attributes']=_[_0xe4aa('0x32')](_0x25f963[_0xe4aa('0x34')],qs[_0xe4aa('0x35')](_0x2d8e96['query'][_0xe4aa('0x35')]));_0x3bed61['attributes']=_0x3bed61[_0xe4aa('0x33')][_0xe4aa('0x36')]?_0x3bed61[_0xe4aa('0x33')]:_0x25f963[_0xe4aa('0x34')];_0x3bed61[_0xe4aa('0x39')]=qs[_0xe4aa('0x3a')](_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x3a')]);_0x3bed61[_0xe4aa('0x3b')]=qs['filters'](_['pick'](_0x2d8e96[_0xe4aa('0x30')],_0x25f963[_0xe4aa('0x31')]));if(_0x2d8e96['query']['filter']){_0x3bed61[_0xe4aa('0x3b')]=_[_0xe4aa('0x3e')](_0x3bed61[_0xe4aa('0x3b')],{'$or':_[_0xe4aa('0x2f')](_0x3bed61[_0xe4aa('0x33')],function(_0x347e5c){var _0x11a8ea={};_0x11a8ea[_0x347e5c]={'$like':'%'+_0x2d8e96['query'][_0xe4aa('0x3d')]+'%'};return _0x11a8ea;})});}_0x3bed61=_['merge']({},_0x3bed61,_0x2d8e96[_0xe4aa('0x41')]);return _0xc966ee[_0xe4aa('0x74')](_0x3bed61);}})['then'](function(_0x4c1ccd){if(_0x4c1ccd){_0x466a45=_0x4c1ccd[_0xe4aa('0x36')];if(!_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x37')](_0xe4aa('0x38'))){_0x3bed61[_0xe4aa('0x21')]=qs['limit'](_0x2d8e96[_0xe4aa('0x30')]['limit']);_0x3bed61[_0xe4aa('0x1f')]=qs[_0xe4aa('0x1f')](_0x2d8e96[_0xe4aa('0x30')][_0xe4aa('0x1f')]);}return _0xc966ee['getItems'](_0x3bed61);}})[_0xe4aa('0x27')](function(_0x245c59){if(_0x245c59){return _0x245c59?{'count':_0x466a45,'rows':_0x245c59}:null;}})['then'](respondWithResult(_0x3f065f,null))['catch'](handleError(_0x3f065f,null));};
\ No newline at end of file
+var _0x913f=['CustomDashboards','UserProfileSection','userProfileId','autoAssociation','catch','clone','omit','updatedAt','createdAt','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','addItem','findOne','DashboardItem','hasOwnProperty','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','socket.io-emitter','./dashboard.socket','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','Dashboard','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x503306,_0x356f2f){var _0x44a99d=function(_0x1a6ec4){while(--_0x1a6ec4){_0x503306['push'](_0x503306['shift']());}};_0x44a99d(++_0x356f2f);}(_0x913f,0xa2));var _0xf913=function(_0xde264c,_0x30fc1e){_0xde264c=_0xde264c-0x0;var _0x100df9=_0x913f[_0xde264c];return _0x100df9;};'use strict';var emlformat=require(_0xf913('0x0'));var rimraf=require(_0xf913('0x1'));var zipdir=require(_0xf913('0x2'));var jsonpatch=require(_0xf913('0x3'));var rp=require(_0xf913('0x4'));var moment=require(_0xf913('0x5'));var BPromise=require(_0xf913('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf913('0x7'));var sox=require(_0xf913('0x8'));var csv=require(_0xf913('0x9'));var ejs=require(_0xf913('0xa'));var fs=require('fs');var fs_extra=require(_0xf913('0xb'));var _=require(_0xf913('0xc'));var squel=require(_0xf913('0xd'));var crypto=require(_0xf913('0xe'));var jsforce=require(_0xf913('0xf'));var deskjs=require(_0xf913('0x10'));var toCsv=require(_0xf913('0x9'));var querystring=require(_0xf913('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf913('0x12'));var as=require(_0xf913('0x13'));var hardwareService=require(_0xf913('0x14'));var logger=require(_0xf913('0x15'))(_0xf913('0x16'));var utils=require(_0xf913('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf913('0x18'));var db=require(_0xf913('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf913('0x1a'))(new Redis(config['redis']));require(_0xf913('0x1b'))['register'](socket);function respondWithStatusCode(_0x207abd,_0xe2bb48){_0xe2bb48=_0xe2bb48||0xcc;return function(_0x57e5e4){if(_0x57e5e4){return _0x207abd[_0xf913('0x1c')](_0xe2bb48);}return _0x207abd[_0xf913('0x1d')](_0xe2bb48)[_0xf913('0x1e')]();};}function respondWithResult(_0x5c75ac,_0x129312){_0x129312=_0x129312||0xc8;return function(_0x30f02d){if(_0x30f02d){return _0x5c75ac[_0xf913('0x1d')](_0x129312)[_0xf913('0x1f')](_0x30f02d);}};}function respondWithFilteredResult(_0x1e4e03,_0xa2fe59){return function(_0x5beb05){if(_0x5beb05){var _0x2db13c=typeof _0xa2fe59[_0xf913('0x20')]==='undefined'&&typeof _0xa2fe59[_0xf913('0x21')]===_0xf913('0x22');var _0x2328a9=_0x5beb05[_0xf913('0x23')];var _0x19cea5=_0x2db13c?0x0:_0xa2fe59['offset'];var _0x4725fb=_0x2db13c?_0x5beb05[_0xf913('0x23')]:_0xa2fe59['offset']+_0xa2fe59[_0xf913('0x21')];var _0x270efc;if(_0x4725fb>=_0x2328a9){_0x4725fb=_0x2328a9;_0x270efc=0xc8;}else{_0x270efc=0xce;}_0x1e4e03[_0xf913('0x1d')](_0x270efc);return _0x1e4e03['set'](_0xf913('0x24'),_0x19cea5+'-'+_0x4725fb+'/'+_0x2328a9)[_0xf913('0x1f')](_0x5beb05);}return null;};}function patchUpdates(_0x5072b0){return function(_0x6196bd){try{jsonpatch['apply'](_0x6196bd,_0x5072b0,!![]);}catch(_0x5c37cd){return BPromise[_0xf913('0x25')](_0x5c37cd);}return _0x6196bd[_0xf913('0x26')]();};}function saveUpdates(_0xbc7380,_0x3d945d){return function(_0x2f54ef){if(_0x2f54ef){return _0x2f54ef[_0xf913('0x27')](_0xbc7380)[_0xf913('0x28')](function(_0x3add61){return _0x3add61;});}return null;};}function removeEntity(_0x8a5af4,_0x495076){return function(_0x4d6281){if(_0x4d6281){return _0x4d6281['destroy']()[_0xf913('0x28')](function(){var _0xb5fdf7=_0x4d6281[_0xf913('0x29')]({'plain':!![]});var _0x23fb17='CustomDashboards';return db[_0xf913('0x2a')][_0xf913('0x2b')]({'where':{'type':_0x23fb17,'resourceId':_0xb5fdf7['id']}})[_0xf913('0x28')](function(){return _0x4d6281;});})['then'](function(){_0x8a5af4[_0xf913('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39a165,_0x7c644d){return function(_0x5d0b1d){if(!_0x5d0b1d){_0x39a165['sendStatus'](0x194);}return _0x5d0b1d;};}function handleError(_0x5bb03e,_0x2d10ad){_0x2d10ad=_0x2d10ad||0x1f4;return function(_0x2830dd){logger[_0xf913('0x2c')](_0x2830dd[_0xf913('0x2d')]);if(_0x2830dd[_0xf913('0x2e')]){delete _0x2830dd[_0xf913('0x2e')];}_0x5bb03e[_0xf913('0x1d')](_0x2d10ad)[_0xf913('0x2f')](_0x2830dd);};}exports[_0xf913('0x30')]=function(_0x155369,_0x41497c){var _0x3e676b={},_0x381632={},_0x2b1fba={'count':0x0,'rows':[]};var _0x2a8546=_[_0xf913('0x31')](db[_0xf913('0x32')][_0xf913('0x33')],function(_0x5f4e4d){return{'name':_0x5f4e4d['fieldName'],'type':_0x5f4e4d[_0xf913('0x34')][_0xf913('0x35')]};});_0x381632[_0xf913('0x36')]=_[_0xf913('0x31')](_0x2a8546,_0xf913('0x2e'));_0x381632[_0xf913('0x37')]=_[_0xf913('0x38')](_0x155369['query']);_0x381632[_0xf913('0x39')]=_[_0xf913('0x3a')](_0x381632[_0xf913('0x36')],_0x381632['query']);_0x3e676b['attributes']=_[_0xf913('0x3a')](_0x381632['model'],qs[_0xf913('0x3b')](_0x155369[_0xf913('0x37')][_0xf913('0x3b')]));_0x3e676b[_0xf913('0x3c')]=_0x3e676b[_0xf913('0x3c')][_0xf913('0x3d')]?_0x3e676b[_0xf913('0x3c')]:_0x381632[_0xf913('0x36')];if(!_0x155369[_0xf913('0x37')]['hasOwnProperty'](_0xf913('0x3e'))){_0x3e676b['limit']=qs[_0xf913('0x21')](_0x155369['query'][_0xf913('0x21')]);_0x3e676b[_0xf913('0x20')]=qs[_0xf913('0x20')](_0x155369[_0xf913('0x37')][_0xf913('0x20')]);}_0x3e676b[_0xf913('0x3f')]=qs[_0xf913('0x40')](_0x155369[_0xf913('0x37')]['sort']);_0x3e676b[_0xf913('0x41')]=qs[_0xf913('0x39')](_[_0xf913('0x42')](_0x155369[_0xf913('0x37')],_0x381632[_0xf913('0x39')]),_0x2a8546);if(_0x155369[_0xf913('0x37')]['filter']){_0x3e676b[_0xf913('0x41')]=_[_0xf913('0x43')](_0x3e676b[_0xf913('0x41')],{'$or':_[_0xf913('0x31')](_0x2a8546,function(_0x50aea3){if(_0x50aea3[_0xf913('0x34')]!==_0xf913('0x44')){var _0x243722={};_0x243722[_0x50aea3[_0xf913('0x2e')]]={'$like':'%'+_0x155369['query'][_0xf913('0x45')]+'%'};return _0x243722;}})});}_0x3e676b=_['merge']({},_0x3e676b,_0x155369[_0xf913('0x46')]);var _0x5f2c4c={'where':_0x3e676b['where']};return db[_0xf913('0x32')][_0xf913('0x23')](_0x5f2c4c)[_0xf913('0x28')](function(_0x2d8680){_0x2b1fba[_0xf913('0x23')]=_0x2d8680;if(_0x155369[_0xf913('0x37')][_0xf913('0x47')]){_0x3e676b[_0xf913('0x48')]=[{'all':!![]}];}return db['Dashboard'][_0xf913('0x49')](_0x3e676b);})[_0xf913('0x28')](function(_0x5737b4){_0x2b1fba[_0xf913('0x4a')]=_0x5737b4;return _0x2b1fba;})['then'](respondWithFilteredResult(_0x41497c,_0x3e676b))['catch'](handleError(_0x41497c,null));};exports[_0xf913('0x4b')]=function(_0x5a19ff,_0x339929){var _0x1fff8a={'raw':![],'where':{'id':_0x5a19ff[_0xf913('0x4c')]['id']}},_0x210dd6={};_0x210dd6[_0xf913('0x36')]=_[_0xf913('0x38')](db[_0xf913('0x32')][_0xf913('0x33')]);_0x210dd6[_0xf913('0x37')]=_[_0xf913('0x38')](_0x5a19ff[_0xf913('0x37')]);_0x210dd6[_0xf913('0x39')]=_[_0xf913('0x3a')](_0x210dd6[_0xf913('0x36')],_0x210dd6[_0xf913('0x37')]);_0x1fff8a['attributes']=_['intersection'](_0x210dd6[_0xf913('0x36')],qs[_0xf913('0x3b')](_0x5a19ff[_0xf913('0x37')][_0xf913('0x3b')]));_0x1fff8a[_0xf913('0x3c')]=_0x1fff8a[_0xf913('0x3c')][_0xf913('0x3d')]?_0x1fff8a[_0xf913('0x3c')]:_0x210dd6['model'];if(_0x5a19ff[_0xf913('0x37')]['includeAll']){_0x1fff8a[_0xf913('0x48')]=[{'all':!![]}];}_0x1fff8a=_[_0xf913('0x43')]({},_0x1fff8a,_0x5a19ff[_0xf913('0x46')]);return db[_0xf913('0x32')][_0xf913('0x4d')](_0x1fff8a)[_0xf913('0x28')](handleEntityNotFound(_0x339929,null))[_0xf913('0x28')](respondWithResult(_0x339929,null))['catch'](handleError(_0x339929,null));};exports['create']=function(_0x470c91,_0x507897){return db[_0xf913('0x32')][_0xf913('0x4e')](_0x470c91[_0xf913('0x4f')],{})['then'](function(_0x4d4a7d){var _0x35ca76=_0x470c91[_0xf913('0x50')][_0xf913('0x29')]({'plain':!![]});if(!_0x35ca76)throw new Error(_0xf913('0x51'));if(_0x35ca76['role']===_0xf913('0x50')){var _0x2a24a9=_0x4d4a7d['get']({'plain':!![]});var _0x3c70d7=_0xf913('0x52');return db[_0xf913('0x53')][_0xf913('0x4d')]({'where':{'name':_0x3c70d7,'userProfileId':_0x35ca76[_0xf913('0x54')]},'raw':!![]})[_0xf913('0x28')](function(_0x443f0e){if(_0x443f0e&&_0x443f0e[_0xf913('0x55')]===0x0){return db[_0xf913('0x2a')][_0xf913('0x4e')]({'name':_0x2a24a9['name'],'resourceId':_0x2a24a9['id'],'type':_0x443f0e['name'],'sectionId':_0x443f0e['id']},{})['then'](function(){return _0x4d4a7d;});}else{return _0x4d4a7d;}})[_0xf913('0x56')](function(_0x241408){logger[_0xf913('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x241408);throw _0x241408;});}return _0x4d4a7d;})[_0xf913('0x28')](respondWithResult(_0x507897,0xc9))[_0xf913('0x56')](handleError(_0x507897,null));};exports[_0xf913('0x57')]=function(_0x566458,_0x186a6c){var _0x300b24={'where':{'id':_0x566458['params']['id']}},_0xf047dd={};_0xf047dd[_0xf913('0x36')]=_['keys'](db[_0xf913('0x32')][_0xf913('0x33')]);_0x300b24[_0xf913('0x3c')]=_[_0xf913('0x3a')](_0xf047dd[_0xf913('0x36')],qs[_0xf913('0x3b')](_0x566458[_0xf913('0x37')][_0xf913('0x3b')]));_0x300b24[_0xf913('0x3c')]=_0x300b24[_0xf913('0x3c')]['length']?_0x300b24[_0xf913('0x3c')]:_0xf047dd[_0xf913('0x36')];if(_0x566458[_0xf913('0x37')][_0xf913('0x47')]){_0x300b24['include']=[{'all':!![]}];}_0x300b24=_[_0xf913('0x43')]({},_0x300b24,_0x566458[_0xf913('0x46')]);return db['Dashboard'][_0xf913('0x4d')](_0x300b24)[_0xf913('0x28')](handleEntityNotFound(_0x186a6c,null))[_0xf913('0x28')](function(_0x53d320){if(_0x53d320){var _0x44ab6b=_0x53d320[_0xf913('0x29')]({'plain':!![]});_0x44ab6b=qs[_0xf913('0x58')](_0x44ab6b,['id','createdAt',_0xf913('0x59')]);_0x566458[_0xf913('0x4f')]=_[_0xf913('0x58')](_0x566458[_0xf913('0x4f')],['id',_0xf913('0x5a'),_0xf913('0x59')]);return db[_0xf913('0x32')]['create'](_[_0xf913('0x43')](_0x44ab6b,_0x566458[_0xf913('0x4f')]),{'include':_0x566458[_0xf913('0x37')][_0xf913('0x47')]?[{'all':!![]}]:undefined})['then'](function(_0x55ecba){var _0xbf4807=_0x566458[_0xf913('0x50')][_0xf913('0x29')]({'plain':!![]});if(!_0xbf4807)throw new Error(_0xf913('0x51'));if(_0xbf4807[_0xf913('0x5b')]===_0xf913('0x50')){var _0xc6d19b=_0x55ecba[_0xf913('0x29')]({'plain':!![]});var _0x1780ed=_0xf913('0x52');return db[_0xf913('0x53')]['find']({'where':{'name':_0x1780ed,'userProfileId':_0xbf4807['userProfileId']},'raw':!![]})[_0xf913('0x28')](function(_0xe34b01){if(_0xe34b01&&_0xe34b01[_0xf913('0x55')]===0x0){return db['UserProfileResource'][_0xf913('0x4e')]({'name':_0xc6d19b[_0xf913('0x2e')],'resourceId':_0xc6d19b['id'],'type':_0xe34b01[_0xf913('0x2e')],'sectionId':_0xe34b01['id']},{})[_0xf913('0x28')](function(){return _0x55ecba;});}else{return _0x55ecba;}})['catch'](function(_0x41aa18){logger[_0xf913('0x2c')](_0xf913('0x5c'),_0x41aa18);throw _0x41aa18;});}return _0x55ecba;});}})[_0xf913('0x28')](respondWithResult(_0x186a6c,0xc9))[_0xf913('0x56')](handleError(_0x186a6c,null));};exports['update']=function(_0x51c9ae,_0x322dc7){if(_0x51c9ae[_0xf913('0x4f')]['id']){delete _0x51c9ae[_0xf913('0x4f')]['id'];}return db[_0xf913('0x32')][_0xf913('0x4d')]({'where':{'id':_0x51c9ae[_0xf913('0x4c')]['id']}})[_0xf913('0x28')](handleEntityNotFound(_0x322dc7,null))[_0xf913('0x28')](saveUpdates(_0x51c9ae[_0xf913('0x4f')],null))[_0xf913('0x28')](respondWithResult(_0x322dc7,null))[_0xf913('0x56')](handleError(_0x322dc7,null));};exports[_0xf913('0x2b')]=function(_0x4591c8,_0x373dcc){return db[_0xf913('0x32')]['find']({'where':{'id':_0x4591c8['params']['id']}})[_0xf913('0x28')](handleEntityNotFound(_0x373dcc,null))[_0xf913('0x28')](removeEntity(_0x373dcc,null))[_0xf913('0x56')](handleError(_0x373dcc,null));};function widgetAttributes(_0xc35d70){try{switch(_0xc35d70['type']){case _0xf913('0x5d'):return[{'name':_0xf913('0x5e'),'value':_0xc35d70[_0xf913('0x5e')]||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70[_0xf913('0x5f')][0x0][_0xf913('0x60')]:undefined)||_0xf913('0x61')}];case'custom':return[{'name':_0xf913('0x62'),'value':_0xc35d70['attrPath']||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70['attrs'][0x0][_0xf913('0x60')]:undefined)||''}];case _0xf913('0x63'):return[{'name':'attrHourFormat','value':_0xc35d70[_0xf913('0x64')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70[_0xf913('0x5f')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0xf913('0x65'),'value':_0xc35d70[_0xf913('0x65')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x1]?_0xc35d70[_0xf913('0x5f')][0x1]['value']:undefined)||_0xf913('0x66')},{'name':'attrFontSize','value':_0xc35d70[_0xf913('0x67')]||(_0xc35d70['attrs']&&_0xc35d70['attrs'][0x2]?_0xc35d70[_0xf913('0x5f')][0x2][_0xf913('0x60')]:undefined)||0xc}];case _0xf913('0x68'):return[{'name':_0xf913('0x69'),'value':_0xc35d70[_0xf913('0x69')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70['attrs'][0x0][_0xf913('0x60')]:undefined)||'total'},{'name':_0xf913('0x6a'),'value':_0xc35d70['attrVoiceQueues']||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70['attrs'][0x1]?_0xc35d70[_0xf913('0x5f')][0x1][_0xf913('0x60')]:undefined)||[]},{'name':_0xf913('0x67'),'value':_0xc35d70['attrFontSize']||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70[_0xf913('0x5f')][0x2]?_0xc35d70[_0xf913('0x5f')][0x2][_0xf913('0x60')]:undefined)||0x14}];case _0xf913('0x6b'):case _0xf913('0x6c'):return[{'name':_0xf913('0x6d'),'value':_0xc35d70[_0xf913('0x6d')]||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70[_0xf913('0x5f')][0x0][_0xf913('0x60')]:undefined)||_0xf913('0x6e')},{'name':_0xf913('0x6f'),'value':_0xc35d70[_0xf913('0x6f')]||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70['attrs'][0x1]?_0xc35d70[_0xf913('0x5f')][0x1][_0xf913('0x60')]:undefined)||null},{'name':_0xf913('0x70'),'value':_0xc35d70[_0xf913('0x70')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x2]?_0xc35d70[_0xf913('0x5f')][0x2][_0xf913('0x60')]:undefined)||null},{'name':_0xf913('0x6a'),'value':_0xc35d70[_0xf913('0x6a')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x3]?_0xc35d70['attrs'][0x3][_0xf913('0x60')]:undefined)||[]}];case _0xf913('0x71'):return[{'name':'attrReport','type':_0xc35d70[_0xf913('0x72')]||(_0xc35d70['attrs']&&_0xc35d70[_0xf913('0x5f')][0x0]?_0xc35d70[_0xf913('0x5f')][0x0][_0xf913('0x34')]:undefined)||null,'value':_0xc35d70[_0xf913('0x73')]||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70['attrs'][0x0]?_0xc35d70[_0xf913('0x5f')][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0xc35d70[_0xf913('0x74')]||(_0xc35d70[_0xf913('0x5f')]&&_0xc35d70['attrs'][0x1]?_0xc35d70[_0xf913('0x5f')][0x1][_0xf913('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x57d5b7){logger[_0xf913('0x2c')]('widgetAttributes:\x20%s',JSON['stringify'](_0x57d5b7));return[];}}exports[_0xf913('0x75')]=function(_0x180043,_0x4bea75,_0x1fb1d6){if(_0x180043['body']['id']){delete _0x180043[_0xf913('0x4f')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x180043[_0xf913('0x4c')]['id']}})[_0xf913('0x28')](handleEntityNotFound(_0x4bea75,null))[_0xf913('0x28')](function(_0x362a65){if(_0x362a65){_0x180043[_0xf913('0x4f')]['DashboardId']=_0x362a65['id'];_0x180043[_0xf913('0x4f')][_0xf913('0x5f')]=widgetAttributes(_0x180043[_0xf913('0x4f')]);return db['DashboardItem'][_0xf913('0x4e')](_0x180043[_0xf913('0x4f')]);}})[_0xf913('0x28')](respondWithResult(_0x4bea75,null))['catch'](handleError(_0x4bea75,null));};exports['getItems']=function(_0xab7538,_0x1af8cf,_0x1ddda3){var _0x1ef284={};var _0x32b5a1={};var _0x38c8fd;var _0x14442b;return db[_0xf913('0x32')][_0xf913('0x76')]({'where':{'id':_0xab7538['params']['id']}})['then'](handleEntityNotFound(_0x1af8cf,null))[_0xf913('0x28')](function(_0x25efad){if(_0x25efad){_0x38c8fd=_0x25efad;_0x32b5a1['model']=_[_0xf913('0x38')](db[_0xf913('0x77')]['rawAttributes']);_0x32b5a1[_0xf913('0x37')]=_[_0xf913('0x38')](_0xab7538[_0xf913('0x37')]);_0x32b5a1[_0xf913('0x39')]=_[_0xf913('0x3a')](_0x32b5a1[_0xf913('0x36')],_0x32b5a1['query']);_0x1ef284[_0xf913('0x3c')]=_[_0xf913('0x3a')](_0x32b5a1[_0xf913('0x36')],qs[_0xf913('0x3b')](_0xab7538[_0xf913('0x37')]['fields']));_0x1ef284['attributes']=_0x1ef284[_0xf913('0x3c')][_0xf913('0x3d')]?_0x1ef284['attributes']:_0x32b5a1[_0xf913('0x36')];_0x1ef284[_0xf913('0x3f')]=qs['sort'](_0xab7538[_0xf913('0x37')][_0xf913('0x40')]);_0x1ef284[_0xf913('0x41')]=qs['filters'](_[_0xf913('0x42')](_0xab7538[_0xf913('0x37')],_0x32b5a1['filters']));if(_0xab7538['query']['filter']){_0x1ef284['where']=_[_0xf913('0x43')](_0x1ef284['where'],{'$or':_[_0xf913('0x31')](_0x1ef284['attributes'],function(_0x38e9cf){var _0x18feb9={};_0x18feb9[_0x38e9cf]={'$like':'%'+_0xab7538[_0xf913('0x37')][_0xf913('0x45')]+'%'};return _0x18feb9;})});}_0x1ef284=_[_0xf913('0x43')]({},_0x1ef284,_0xab7538[_0xf913('0x46')]);return _0x38c8fd['getItems'](_0x1ef284);}})[_0xf913('0x28')](function(_0x59d167){if(_0x59d167){_0x14442b=_0x59d167[_0xf913('0x3d')];if(!_0xab7538[_0xf913('0x37')][_0xf913('0x78')](_0xf913('0x3e'))){_0x1ef284[_0xf913('0x21')]=qs[_0xf913('0x21')](_0xab7538[_0xf913('0x37')][_0xf913('0x21')]);_0x1ef284[_0xf913('0x20')]=qs[_0xf913('0x20')](_0xab7538[_0xf913('0x37')][_0xf913('0x20')]);}return _0x38c8fd[_0xf913('0x79')](_0x1ef284);}})[_0xf913('0x28')](function(_0x233450){if(_0x233450){return _0x233450?{'count':_0x14442b,'rows':_0x233450}:null;}})[_0xf913('0x28')](respondWithResult(_0x1af8cf,null))[_0xf913('0x56')](handleError(_0x1af8cf,null));};
\ No newline at end of file
index 61a09fc..88723fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ad=['events','../../mysqldb','setMaxListeners','save','update','emit','hook','exports'];(function(_0x1547b7,_0x543a7b){var _0xe9d0d8=function(_0x2d5638){while(--_0x2d5638){_0x1547b7['push'](_0x1547b7['shift']());}};_0xe9d0d8(++_0x543a7b);}(_0xa7ad,0x168));var _0xda7a=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xa7ad[_0x47aa64];return _0x549c7a;};'use strict';var EventEmitter=require(_0xda7a('0x0'));var Dashboard=require(_0xda7a('0x1'))['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0xda7a('0x2')](0x0);var events={'afterCreate':_0xda7a('0x3'),'afterUpdate':_0xda7a('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2f7148){return function(_0x211169,_0x546c57,_0x950578){DashboardEvents[_0xda7a('0x5')](_0x2f7148+':'+_0x211169['id'],_0x211169);DashboardEvents[_0xda7a('0x5')](_0x2f7148,_0x211169);_0x950578(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xda7a('0x6')](e,emitEvent(event));}}module[_0xda7a('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x96e0=['hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x2af84b,_0x18be67){var _0x5eaee2=function(_0x963836){while(--_0x963836){_0x2af84b['push'](_0x2af84b['shift']());}};_0x5eaee2(++_0x18be67);}(_0x96e0,0xf4));var _0x096e=function(_0x2e15b0,_0x22c19d){_0x2e15b0=_0x2e15b0-0x0;var _0x839683=_0x96e0[_0x2e15b0];return _0x839683;};'use strict';var EventEmitter=require(_0x096e('0x0'));var Dashboard=require(_0x096e('0x1'))['db'][_0x096e('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x096e('0x3')](0x0);var events={'afterCreate':_0x096e('0x4'),'afterUpdate':_0x096e('0x5'),'afterDestroy':_0x096e('0x6')};function emitEvent(_0x25ce1d){return function(_0x400caf,_0xa1daac,_0x4eb2d8){DashboardEvents['emit'](_0x25ce1d+':'+_0x400caf['id'],_0x400caf);DashboardEvents[_0x096e('0x7')](_0x25ce1d,_0x400caf);_0x4eb2d8(null);};}for(var e in events){if(events[_0x096e('0x8')](e)){var event=events[e];Dashboard[_0x096e('0x9')](e,emitEvent(event));}}module[_0x096e('0xa')]=DashboardEvents;
\ No newline at end of file
index d61b94b..83a5ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ff=['Dashboard','dashboards','lodash','api','bluebird','request-promise','path','./dashboard.attributes','exports'];(function(_0x231e16,_0x67347b){var _0x570a7c=function(_0x2c35b4){while(--_0x2c35b4){_0x231e16['push'](_0x231e16['shift']());}};_0x570a7c(++_0x67347b);}(_0x53ff,0xb6));var _0xf53f=function(_0x5a7894,_0x2f9027){_0x5a7894=_0x5a7894-0x0;var _0x29a65f=_0x53ff[_0x5a7894];return _0x29a65f;};'use strict';var _=require(_0xf53f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf53f('0x1'));var moment=require('moment');var BPromise=require(_0xf53f('0x2'));var rp=require(_0xf53f('0x3'));var fs=require('fs');var path=require(_0xf53f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf53f('0x5'));module[_0xf53f('0x6')]=function(_0x2ab48a,_0x358645){return _0x2ab48a['define'](_0xf53f('0x7'),attributes,{'tableName':_0xf53f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe2d3=['lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./dashboard.attributes','exports','define','Dashboard'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xe2d3,0x1ce));var _0x3e2d=function(_0x24f326,_0x616a7){_0x24f326=_0x24f326-0x0;var _0x488e2d=_0xe2d3[_0x24f326];return _0x488e2d;};'use strict';var _=require(_0x3e2d('0x0'));var util=require(_0x3e2d('0x1'));var logger=require(_0x3e2d('0x2'))('api');var moment=require(_0x3e2d('0x3'));var BPromise=require('bluebird');var rp=require(_0x3e2d('0x4'));var fs=require('fs');var path=require(_0x3e2d('0x5'));var rimraf=require('rimraf');var config=require(_0x3e2d('0x6'));var attributes=require(_0x3e2d('0x7'));module[_0x3e2d('0x8')]=function(_0x575015,_0x23c01b){return _0x575015[_0x3e2d('0x9')](_0x3e2d('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 29696e8..f9e7f23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ac=['jayson/promise','client','http','redis','defaults','./dashboard.socket','register','then','request\x20sent','stringify','error','code','message','Dashboard,\x20%s,\x20%s','result','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0x23ac,0x67));var _0xc23a=function(_0x4c73ac,_0x46b73c){_0x4c73ac=_0x4c73ac-0x0;var _0x9839ee=_0x23ac[_0x4c73ac];return _0x9839ee;};'use strict';var _=require(_0xc23a('0x0'));var util=require(_0xc23a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc23a('0x2'));var db=require(_0xc23a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc23a('0x4'))(_0xc23a('0x5'));var config=require(_0xc23a('0x6'));var jayson=require(_0xc23a('0x7'));var client=jayson[_0xc23a('0x8')][_0xc23a('0x9')]({'port':0x232a});config[_0xc23a('0xa')]=_[_0xc23a('0xb')](config[_0xc23a('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc23a('0xa')]));require(_0xc23a('0xc'))[_0xc23a('0xd')](socket);function respondWithRpcPromise(_0xd919e2,_0x3e80c4,_0x25d22e){return new BPromise(function(_0x3a7d85,_0x92c9f){return client['request'](_0xd919e2,_0x25d22e)[_0xc23a('0xe')](function(_0x219405){logger['info']('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0xc23a('0xf'));logger['debug']('Dashboard,\x20%s,\x20%s,\x20%s',_0x3e80c4,_0xc23a('0xf'),JSON[_0xc23a('0x10')](_0x219405));if(_0x219405[_0xc23a('0x11')]){if(_0x219405[_0xc23a('0x11')][_0xc23a('0x12')]===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0x219405['error'][_0xc23a('0x13')]);return _0x92c9f(_0x219405[_0xc23a('0x11')]['message']);}logger[_0xc23a('0x11')]('Dashboard,\x20%s,\x20%s',_0x3e80c4,_0x219405[_0xc23a('0x11')][_0xc23a('0x13')]);return _0x3a7d85(_0x219405['error'][_0xc23a('0x13')]);}else{logger['info'](_0xc23a('0x14'),_0x3e80c4,_0xc23a('0xf'));_0x3a7d85(_0x219405[_0xc23a('0x15')]['message']);}})['catch'](function(_0x39f8ab){logger[_0xc23a('0x11')](_0xc23a('0x14'),_0x3e80c4,_0x39f8ab);_0x92c9f(_0x39f8ab);});});}
\ No newline at end of file
+var _0x384b=['message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','socket.io-emitter','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x198b80,_0x2e50ff){var _0x2c874d=function(_0x447c01){while(--_0x447c01){_0x198b80['push'](_0x198b80['shift']());}};_0x2c874d(++_0x2e50ff);}(_0x384b,0xc2));var _0xb384=function(_0x19f188,_0x5437ba){_0x19f188=_0x19f188-0x0;var _0x13d35e=_0x384b[_0x19f188];return _0x13d35e;};'use strict';var _=require(_0xb384('0x0'));var util=require('util');var moment=require(_0xb384('0x1'));var BPromise=require('bluebird');var rs=require(_0xb384('0x2'));var fs=require('fs');var Redis=require(_0xb384('0x3'));var db=require(_0xb384('0x4'))['db'];var utils=require(_0xb384('0x5'));var logger=require(_0xb384('0x6'))(_0xb384('0x7'));var config=require(_0xb384('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xb384('0x9')]=_[_0xb384('0xa')](config[_0xb384('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xb384('0xb'))(new Redis(config[_0xb384('0x9')]));require(_0xb384('0xc'))['register'](socket);function respondWithRpcPromise(_0x3057f6,_0x584f9a,_0x437613){return new BPromise(function(_0x48a8dd,_0x17b119){return client[_0xb384('0xd')](_0x3057f6,_0x437613)[_0xb384('0xe')](function(_0x591b6d){logger[_0xb384('0xf')](_0xb384('0x10'),_0x584f9a,_0xb384('0x11'));logger[_0xb384('0x12')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x584f9a,'request\x20sent',JSON[_0xb384('0x13')](_0x591b6d));if(_0x591b6d[_0xb384('0x14')]){if(_0x591b6d[_0xb384('0x14')][_0xb384('0x15')]===0x1f4){logger[_0xb384('0x14')](_0xb384('0x10'),_0x584f9a,_0x591b6d[_0xb384('0x14')][_0xb384('0x16')]);return _0x17b119(_0x591b6d[_0xb384('0x14')][_0xb384('0x16')]);}logger[_0xb384('0x14')](_0xb384('0x10'),_0x584f9a,_0x591b6d[_0xb384('0x14')]['message']);return _0x48a8dd(_0x591b6d[_0xb384('0x14')][_0xb384('0x16')]);}else{logger['info'](_0xb384('0x10'),_0x584f9a,_0xb384('0x11'));_0x48a8dd(_0x591b6d[_0xb384('0x17')]['message']);}})['catch'](function(_0xae2eaa){logger[_0xb384('0x14')]('Dashboard,\x20%s,\x20%s',_0x584f9a,_0xae2eaa);_0x17b119(_0xae2eaa);});});}
\ No newline at end of file
index 8c1eb81..da139b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1397=['save','remove','length','dashboard:'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x1397,0xe4));var _0x7139=function(_0x118922,_0x2a1c1d){_0x118922=_0x118922-0x0;var _0x5eaab1=_0x1397[_0x118922];return _0x5eaab1;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x7139('0x0'),_0x7139('0x1'),'update'];function createListener(_0x8eda6e,_0x3a5b36){return function(_0x4dfac1){_0x3a5b36['emit'](_0x8eda6e,_0x4dfac1);};}function removeListener(_0xb09966,_0x4c159c){return function(){DashboardEvents['removeListener'](_0xb09966,_0x4c159c);};}exports['register']=function(_0x20f5e9){for(var _0x1c8495=0x0,_0x2edca4=events[_0x7139('0x2')];_0x1c8495<_0x2edca4;_0x1c8495++){var _0x18c60f=events[_0x1c8495];var _0x23910e=createListener(_0x7139('0x3')+_0x18c60f,_0x20f5e9);DashboardEvents['on'](_0x18c60f,_0x23910e);}};
\ No newline at end of file
+var _0x6057=['dashboard:','./dashboard.events','save','remove','update','removeListener','register'];(function(_0x56fb95,_0x19c7d2){var _0x2675b5=function(_0x31b29a){while(--_0x31b29a){_0x56fb95['push'](_0x56fb95['shift']());}};_0x2675b5(++_0x19c7d2);}(_0x6057,0x71));var _0x7605=function(_0x43576f,_0x1356ed){_0x43576f=_0x43576f-0x0;var _0x4d2466=_0x6057[_0x43576f];return _0x4d2466;};'use strict';var DashboardEvents=require(_0x7605('0x0'));var events=[_0x7605('0x1'),_0x7605('0x2'),_0x7605('0x3')];function createListener(_0x43ad24,_0x5350e0){return function(_0x40f0c5){_0x5350e0['emit'](_0x43ad24,_0x40f0c5);};}function removeListener(_0x21c1e2,_0x5f1f0d){return function(){DashboardEvents[_0x7605('0x4')](_0x21c1e2,_0x5f1f0d);};}exports[_0x7605('0x5')]=function(_0x3340e0){for(var _0x4d8303=0x0,_0x245f71=events['length'];_0x4d8303<_0x245f71;_0x4d8303++){var _0x4f914b=events[_0x4d8303];var _0x9be76b=createListener(_0x7605('0x6')+_0x4f914b,_0x3340e0);DashboardEvents['on'](_0x4f914b,_0x9be76b);}};
\ No newline at end of file
index 13f32bd..0b36b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d84=['exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','/:id','isAuthenticated','show','/:id/items','getItems','create','post','/:id/clone','clone','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0d84,0x1c9));var _0x40d8=function(_0x5a9edb,_0x44e0fc){_0x5a9edb=_0x5a9edb-0x0;var _0x437b0e=_0x0d84[_0x5a9edb];return _0x437b0e;};'use strict';var multer=require(_0x40d8('0x0'));var util=require('util');var path=require(_0x40d8('0x1'));var timeout=require(_0x40d8('0x2'));var express=require(_0x40d8('0x3'));var router=express['Router']();var fs_extra=require(_0x40d8('0x4'));var auth=require(_0x40d8('0x5'));var interaction=require(_0x40d8('0x6'));var config=require(_0x40d8('0x7'));var controller=require(_0x40d8('0x8'));router[_0x40d8('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x40d8('0x9')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0xc')]);router['get'](_0x40d8('0xd'),auth[_0x40d8('0xb')](),controller[_0x40d8('0xe')]);router['post']('/',auth[_0x40d8('0xb')](),controller[_0x40d8('0xf')]);router[_0x40d8('0x10')](_0x40d8('0x11'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x12')]);router[_0x40d8('0x10')]('/:id/items',auth[_0x40d8('0xb')](),controller['addItem']);router[_0x40d8('0x13')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x14')]);router[_0x40d8('0x15')](_0x40d8('0xa'),auth[_0x40d8('0xb')](),controller[_0x40d8('0x16')]);module[_0x40d8('0x17')]=router;
\ No newline at end of file
+var _0x171d=['clone','addItem','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','./dashboard.controller','get','isAuthenticated','index','/:id','/:id/items','getItems','create','post','/:id/clone'];(function(_0x34a8c8,_0x31e259){var _0x1fe6e5=function(_0x30f28d){while(--_0x30f28d){_0x34a8c8['push'](_0x34a8c8['shift']());}};_0x1fe6e5(++_0x31e259);}(_0x171d,0xb5));var _0xd171=function(_0x1778e1,_0x3e1727){_0x1778e1=_0x1778e1-0x0;var _0x2bc4c6=_0x171d[_0x1778e1];return _0x2bc4c6;};'use strict';var multer=require(_0xd171('0x0'));var util=require(_0xd171('0x1'));var path=require(_0xd171('0x2'));var timeout=require(_0xd171('0x3'));var express=require(_0xd171('0x4'));var router=express[_0xd171('0x5')]();var fs_extra=require(_0xd171('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd171('0x7'));router[_0xd171('0x8')]('/',auth[_0xd171('0x9')](),controller[_0xd171('0xa')]);router[_0xd171('0x8')](_0xd171('0xb'),auth[_0xd171('0x9')](),controller['show']);router[_0xd171('0x8')](_0xd171('0xc'),auth[_0xd171('0x9')](),controller[_0xd171('0xd')]);router['post']('/',auth[_0xd171('0x9')](),controller[_0xd171('0xe')]);router[_0xd171('0xf')](_0xd171('0x10'),auth[_0xd171('0x9')](),controller[_0xd171('0x11')]);router['post'](_0xd171('0xc'),auth[_0xd171('0x9')](),controller[_0xd171('0x12')]);router['put'](_0xd171('0xb'),auth['isAuthenticated'](),controller[_0xd171('0x13')]);router[_0xd171('0x14')](_0xd171('0xb'),auth[_0xd171('0x9')](),controller[_0xd171('0x15')]);module['exports']=router;
\ No newline at end of file
index f127f82..e2c2e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['#ffffff','squel','lodash','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x25d2ab,_0x30ad94){var _0x5ab897=function(_0x451963){while(--_0x451963){_0x25d2ab['push'](_0x25d2ab['shift']());}};_0x5ab897(++_0x30ad94);}(_0x6f47,0xc7));var _0x76f4=function(_0x75f869,_0x3690d6){_0x75f869=_0x75f869-0x0;var _0x10af8b=_0x6f47[_0x75f869];return _0x10af8b;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));module['exports']={'title':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x76f4('0x3')]('long'),'get':function(){try{return JSON[_0x76f4('0x4')](this[_0x76f4('0x5')](_0x76f4('0x6')));}catch(_0x2523ba){return[];}},'set':function(_0x5754ca){try{this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')](_0x5754ca));}catch(_0x497f99){this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![],'defaultValue':_0x76f4('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x76f4('0x2')]},'titleFontSize':{'type':Sequelize[_0x76f4('0x9')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x1261=['squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0xc0638b,_0x2fccf4){var _0xd57dfa=function(_0x322fba){while(--_0x322fba){_0xc0638b['push'](_0xc0638b['shift']());}};_0xd57dfa(++_0x2fccf4);}(_0x1261,0x144));var _0x1126=function(_0x4e9a22,_0x65e645){_0x4e9a22=_0x4e9a22-0x0;var _0x364420=_0x1261[_0x4e9a22];return _0x364420;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x1126('0x0'));var _=require(_0x1126('0x1'));module[_0x1126('0x2')]={'title':{'type':Sequelize[_0x1126('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x1126('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x1126('0x4')](_0x1126('0x5')),'get':function(){try{return JSON[_0x1126('0x6')](this[_0x1126('0x7')](_0x1126('0x8')));}catch(_0x5a2189){return[];}},'set':function(_0x5c68c8){try{this[_0x1126('0x9')](_0x1126('0x8'),JSON['stringify'](_0x5c68c8));}catch(_0x17e5f0){this[_0x1126('0x9')](_0x1126('0x8'),JSON[_0x1126('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x1126('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x1126('0xb')]},'col':{'type':Sequelize[_0x1126('0xb')]},'background':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x1126('0xb')],'defaultValue':0xc}};
\ No newline at end of file
index b29b20e..2f4dd7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5336=['params','type','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','create','body','update','eml-format','zip-dir','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','end','sendStatus','error','name','send','model','keys','DashboardItem','rawAttributes','query','filters','intersection','fields','attributes','length','include','merge','find','catch'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x5336,0x76));var _0x6533=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x5336[_0x243b59];return _0x3e1676;};'use strict';var emlformat=require(_0x6533('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6533('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6533('0x2'));var moment=require(_0x6533('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6533('0x4'));var path=require(_0x6533('0x5'));var sox=require(_0x6533('0x6'));var csv=require('to-csv');var ejs=require(_0x6533('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6533('0x8'));var squel=require('squel');var crypto=require(_0x6533('0x9'));var jsforce=require(_0x6533('0xa'));var deskjs=require(_0x6533('0xb'));var toCsv=require(_0x6533('0xc'));var querystring=require(_0x6533('0xd'));var Papa=require(_0x6533('0xe'));var Redis=require(_0x6533('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6533('0x10'));var as=require(_0x6533('0x11'));var hardwareService=require(_0x6533('0x12'));var logger=require(_0x6533('0x13'))('api');var utils=require(_0x6533('0x14'));var config=require(_0x6533('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6533('0x16'))['db'];config['redis']=_[_0x6533('0x17')](config[_0x6533('0x18')],{'host':_0x6533('0x19'),'port':0x18eb});var socket=require(_0x6533('0x1a'))(new Redis(config['redis']));require(_0x6533('0x1b'))[_0x6533('0x1c')](socket);function respondWithStatusCode(_0x25e7c0,_0x8cd304){_0x8cd304=_0x8cd304||0xcc;return function(_0x45a170){if(_0x45a170){return _0x25e7c0['sendStatus'](_0x8cd304);}return _0x25e7c0[_0x6533('0x1d')](_0x8cd304)['end']();};}function respondWithResult(_0x3a8e04,_0x259db7){_0x259db7=_0x259db7||0xc8;return function(_0x49daf2){if(_0x49daf2){return _0x3a8e04[_0x6533('0x1d')](_0x259db7)[_0x6533('0x1e')](_0x49daf2);}};}function respondWithFilteredResult(_0x18763e,_0x138d9b){return function(_0x38db00){if(_0x38db00){var _0x294527=typeof _0x138d9b[_0x6533('0x1f')]===_0x6533('0x20')&&typeof _0x138d9b['limit']===_0x6533('0x20');var _0x594e61=_0x38db00[_0x6533('0x21')];var _0x5c41a9=_0x294527?0x0:_0x138d9b[_0x6533('0x1f')];var _0x30d2f9=_0x294527?_0x38db00[_0x6533('0x21')]:_0x138d9b[_0x6533('0x1f')]+_0x138d9b[_0x6533('0x22')];var _0x2f2dd3;if(_0x30d2f9>=_0x594e61){_0x30d2f9=_0x594e61;_0x2f2dd3=0xc8;}else{_0x2f2dd3=0xce;}_0x18763e[_0x6533('0x1d')](_0x2f2dd3);return _0x18763e[_0x6533('0x23')](_0x6533('0x24'),_0x5c41a9+'-'+_0x30d2f9+'/'+_0x594e61)[_0x6533('0x1e')](_0x38db00);}return null;};}function patchUpdates(_0x46fda9){return function(_0x3f1e4f){try{jsonpatch[_0x6533('0x25')](_0x3f1e4f,_0x46fda9,!![]);}catch(_0x468e38){return BPromise['reject'](_0x468e38);}return _0x3f1e4f[_0x6533('0x26')]();};}function saveUpdates(_0x5bd3df,_0x1ac462){return function(_0x486639){if(_0x486639){return _0x486639['update'](_0x5bd3df)[_0x6533('0x27')](function(_0x4a44f7){return _0x4a44f7;});}return null;};}function removeEntity(_0x2b790b,_0x27893c){return function(_0x52e4b3){if(_0x52e4b3){return _0x52e4b3[_0x6533('0x28')]()['then'](function(){_0x2b790b[_0x6533('0x1d')](0xcc)[_0x6533('0x29')]();});}};}function handleEntityNotFound(_0x4212a4,_0x502704){return function(_0x5dab0b){if(!_0x5dab0b){_0x4212a4[_0x6533('0x2a')](0x194);}return _0x5dab0b;};}function handleError(_0x192a63,_0x135540){_0x135540=_0x135540||0x1f4;return function(_0x5ac9cb){logger[_0x6533('0x2b')](_0x5ac9cb['stack']);if(_0x5ac9cb['name']){delete _0x5ac9cb[_0x6533('0x2c')];}_0x192a63[_0x6533('0x1d')](_0x135540)[_0x6533('0x2d')](_0x5ac9cb);};}exports['show']=function(_0x58c1d2,_0x5e4b47){var _0xbfa332={'raw':![],'where':{'id':_0x58c1d2['params']['id']}},_0x4f6705={};_0x4f6705[_0x6533('0x2e')]=_[_0x6533('0x2f')](db[_0x6533('0x30')][_0x6533('0x31')]);_0x4f6705[_0x6533('0x32')]=_['keys'](_0x58c1d2[_0x6533('0x32')]);_0x4f6705[_0x6533('0x33')]=_['intersection'](_0x4f6705[_0x6533('0x2e')],_0x4f6705[_0x6533('0x32')]);_0xbfa332['attributes']=_[_0x6533('0x34')](_0x4f6705[_0x6533('0x2e')],qs['fields'](_0x58c1d2['query'][_0x6533('0x35')]));_0xbfa332[_0x6533('0x36')]=_0xbfa332[_0x6533('0x36')][_0x6533('0x37')]?_0xbfa332[_0x6533('0x36')]:_0x4f6705[_0x6533('0x2e')];if(_0x58c1d2[_0x6533('0x32')]['includeAll']){_0xbfa332[_0x6533('0x38')]=[{'all':!![]}];}_0xbfa332=_[_0x6533('0x39')]({},_0xbfa332,_0x58c1d2['options']);return db[_0x6533('0x30')][_0x6533('0x3a')](_0xbfa332)[_0x6533('0x27')](handleEntityNotFound(_0x5e4b47,null))['then'](respondWithResult(_0x5e4b47,null))[_0x6533('0x3b')](handleError(_0x5e4b47,null));};exports[_0x6533('0x28')]=function(_0x115b21,_0x5be69b){return db[_0x6533('0x30')][_0x6533('0x3a')]({'where':{'id':_0x115b21[_0x6533('0x3c')]['id']}})[_0x6533('0x27')](handleEntityNotFound(_0x5be69b,null))[_0x6533('0x27')](removeEntity(_0x5be69b,null))[_0x6533('0x3b')](handleError(_0x5be69b,null));};function widgetAttributes(_0x3d65d9){try{switch(_0x3d65d9[_0x6533('0x3d')]){case'iframe':return[{'name':'attrUrl','value':_0x3d65d9[_0x6533('0x3e')]||(_0x3d65d9['attrs']&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x41')}];case'custom':return[{'name':_0x6533('0x42'),'value':_0x3d65d9['attrPath']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x0]?_0x3d65d9['attrs'][0x0][_0x6533('0x40')]:undefined)||''}];case _0x6533('0x43'):return[{'name':_0x6533('0x44'),'value':_0x3d65d9[_0x6533('0x44')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x45')},{'name':_0x6533('0x46'),'value':_0x3d65d9[_0x6533('0x46')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||_0x6533('0x47')},{'name':_0x6533('0x48'),'value':_0x3d65d9['attrFontSize']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2]['value']:undefined)||0xc}];case _0x6533('0x49'):return[{'name':_0x6533('0x4a'),'value':_0x3d65d9[_0x6533('0x4a')]||(_0x3d65d9['attrs']&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||'total'},{'name':_0x6533('0x4b'),'value':_0x3d65d9[_0x6533('0x4b')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x1]?_0x3d65d9['attrs'][0x1][_0x6533('0x40')]:undefined)||[]},{'name':'attrFontSize','value':_0x3d65d9['attrFontSize']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2][_0x6533('0x40')]:undefined)||0x14}];case _0x6533('0x4c'):case _0x6533('0x4d'):return[{'name':'attrSerie1','value':_0x3d65d9[_0x6533('0x4e')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||_0x6533('0x4f')},{'name':_0x6533('0x50'),'value':_0x3d65d9[_0x6533('0x50')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||null},{'name':'attrSerie3','value':_0x3d65d9[_0x6533('0x51')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x2]?_0x3d65d9[_0x6533('0x3f')][0x2][_0x6533('0x40')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x3d65d9[_0x6533('0x4b')]||(_0x3d65d9['attrs']&&_0x3d65d9[_0x6533('0x3f')][0x3]?_0x3d65d9[_0x6533('0x3f')][0x3]['value']:undefined)||[]}];case _0x6533('0x52'):return[{'name':'attrReport','type':_0x3d65d9['reportType']||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9['attrs'][0x0]['type']:undefined)||null,'value':_0x3d65d9[_0x6533('0x53')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9['attrs'][0x0]?_0x3d65d9[_0x6533('0x3f')][0x0][_0x6533('0x40')]:undefined)||null},{'name':_0x6533('0x54'),'value':_0x3d65d9[_0x6533('0x54')]||(_0x3d65d9[_0x6533('0x3f')]&&_0x3d65d9[_0x6533('0x3f')][0x1]?_0x3d65d9[_0x6533('0x3f')][0x1][_0x6533('0x40')]:undefined)||0x0}];default:return[];}}catch(_0x256e16){logger['error'](_0x6533('0x55'),JSON['stringify'](_0x256e16));return[];}}exports[_0x6533('0x56')]=function(_0x461ddb,_0x3b4195){if(_0x461ddb[_0x6533('0x57')]){_0x461ddb[_0x6533('0x57')]['attrs']=widgetAttributes(_0x461ddb['body']);}return db[_0x6533('0x30')][_0x6533('0x56')](_0x461ddb['body'],{})['then'](respondWithResult(_0x3b4195,0xc9))[_0x6533('0x3b')](handleError(_0x3b4195,null));};exports[_0x6533('0x58')]=function(_0x10142d,_0x5b8517){if(_0x10142d[_0x6533('0x57')]['id']){delete _0x10142d['body']['id'];}_0x10142d[_0x6533('0x57')][_0x6533('0x3f')]=widgetAttributes(_0x10142d['body']);return db['DashboardItem'][_0x6533('0x3a')]({'where':{'id':_0x10142d[_0x6533('0x3c')]['id']}})[_0x6533('0x27')](handleEntityNotFound(_0x5b8517,null))[_0x6533('0x27')](saveUpdates(_0x10142d[_0x6533('0x57')],null))[_0x6533('0x27')](respondWithResult(_0x5b8517,null))[_0x6533('0x3b')](handleError(_0x5b8517,null));};
\ No newline at end of file
+var _0x9a86=['total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','type','attrRefresh','stringify','create','body','update','rimraf','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','destroy','then','error','name','send','show','params','model','DashboardItem','rawAttributes','query','keys','intersection','attributes','fields','length','includeAll','include','options','find','catch','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric'];(function(_0x5239b7,_0x3a66a6){var _0x4df55b=function(_0x36a7b3){while(--_0x36a7b3){_0x5239b7['push'](_0x5239b7['shift']());}};_0x4df55b(++_0x3a66a6);}(_0x9a86,0x1c6));var _0x69a8=function(_0x4ed1d4,_0x512d9a){_0x4ed1d4=_0x4ed1d4-0x0;var _0x28e363=_0x9a86[_0x4ed1d4];return _0x28e363;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x69a8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x69a8('0x1'));var rp=require(_0x69a8('0x2'));var moment=require(_0x69a8('0x3'));var BPromise=require(_0x69a8('0x4'));var Mustache=require('mustache');var util=require(_0x69a8('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x69a8('0x6'));var fs=require('fs');var fs_extra=require(_0x69a8('0x7'));var _=require(_0x69a8('0x8'));var squel=require(_0x69a8('0x9'));var crypto=require(_0x69a8('0xa'));var jsforce=require(_0x69a8('0xb'));var deskjs=require(_0x69a8('0xc'));var toCsv=require(_0x69a8('0xd'));var querystring=require('querystring');var Papa=require(_0x69a8('0xe'));var Redis=require(_0x69a8('0xf'));var authService=require(_0x69a8('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x69a8('0x11'));var logger=require(_0x69a8('0x12'))(_0x69a8('0x13'));var utils=require('../../config/utils');var config=require(_0x69a8('0x14'));var licenseUtil=require(_0x69a8('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x69a8('0x16')](config[_0x69a8('0x17')],{'host':_0x69a8('0x18'),'port':0x18eb});var socket=require(_0x69a8('0x19'))(new Redis(config['redis']));require(_0x69a8('0x1a'))[_0x69a8('0x1b')](socket);function respondWithStatusCode(_0xd7cead,_0x4b5829){_0x4b5829=_0x4b5829||0xcc;return function(_0x49863b){if(_0x49863b){return _0xd7cead[_0x69a8('0x1c')](_0x4b5829);}return _0xd7cead[_0x69a8('0x1d')](_0x4b5829)[_0x69a8('0x1e')]();};}function respondWithResult(_0xbb7bf5,_0xf3de51){_0xf3de51=_0xf3de51||0xc8;return function(_0x92664d){if(_0x92664d){return _0xbb7bf5['status'](_0xf3de51)[_0x69a8('0x1f')](_0x92664d);}};}function respondWithFilteredResult(_0x5076f5,_0x212aca){return function(_0x2a654a){if(_0x2a654a){var _0x5beb8a=typeof _0x212aca[_0x69a8('0x20')]===_0x69a8('0x21')&&typeof _0x212aca[_0x69a8('0x22')]===_0x69a8('0x21');var _0x544b03=_0x2a654a[_0x69a8('0x23')];var _0x317945=_0x5beb8a?0x0:_0x212aca[_0x69a8('0x20')];var _0x4be720=_0x5beb8a?_0x2a654a[_0x69a8('0x23')]:_0x212aca[_0x69a8('0x20')]+_0x212aca[_0x69a8('0x22')];var _0xaa251e;if(_0x4be720>=_0x544b03){_0x4be720=_0x544b03;_0xaa251e=0xc8;}else{_0xaa251e=0xce;}_0x5076f5[_0x69a8('0x1d')](_0xaa251e);return _0x5076f5[_0x69a8('0x24')]('Content-Range',_0x317945+'-'+_0x4be720+'/'+_0x544b03)[_0x69a8('0x1f')](_0x2a654a);}return null;};}function patchUpdates(_0x2d3256){return function(_0x594c4d){try{jsonpatch[_0x69a8('0x25')](_0x594c4d,_0x2d3256,!![]);}catch(_0x42d920){return BPromise['reject'](_0x42d920);}return _0x594c4d[_0x69a8('0x26')]();};}function saveUpdates(_0x2a2c6e,_0x5c1265){return function(_0x198382){if(_0x198382){return _0x198382['update'](_0x2a2c6e)['then'](function(_0x52ca1e){return _0x52ca1e;});}return null;};}function removeEntity(_0x34342c,_0x13ae13){return function(_0x988253){if(_0x988253){return _0x988253[_0x69a8('0x27')]()[_0x69a8('0x28')](function(){_0x34342c[_0x69a8('0x1d')](0xcc)[_0x69a8('0x1e')]();});}};}function handleEntityNotFound(_0x435af0,_0x299d22){return function(_0xade8b0){if(!_0xade8b0){_0x435af0[_0x69a8('0x1c')](0x194);}return _0xade8b0;};}function handleError(_0x5d630c,_0x8ff8cf){_0x8ff8cf=_0x8ff8cf||0x1f4;return function(_0x588552){logger[_0x69a8('0x29')](_0x588552['stack']);if(_0x588552[_0x69a8('0x2a')]){delete _0x588552[_0x69a8('0x2a')];}_0x5d630c['status'](_0x8ff8cf)[_0x69a8('0x2b')](_0x588552);};}exports[_0x69a8('0x2c')]=function(_0x2d57ae,_0x2c229b){var _0x558b27={'raw':![],'where':{'id':_0x2d57ae[_0x69a8('0x2d')]['id']}},_0x1f9b68={};_0x1f9b68[_0x69a8('0x2e')]=_['keys'](db[_0x69a8('0x2f')][_0x69a8('0x30')]);_0x1f9b68[_0x69a8('0x31')]=_[_0x69a8('0x32')](_0x2d57ae[_0x69a8('0x31')]);_0x1f9b68['filters']=_[_0x69a8('0x33')](_0x1f9b68[_0x69a8('0x2e')],_0x1f9b68[_0x69a8('0x31')]);_0x558b27[_0x69a8('0x34')]=_['intersection'](_0x1f9b68[_0x69a8('0x2e')],qs[_0x69a8('0x35')](_0x2d57ae[_0x69a8('0x31')]['fields']));_0x558b27[_0x69a8('0x34')]=_0x558b27[_0x69a8('0x34')][_0x69a8('0x36')]?_0x558b27[_0x69a8('0x34')]:_0x1f9b68[_0x69a8('0x2e')];if(_0x2d57ae[_0x69a8('0x31')][_0x69a8('0x37')]){_0x558b27[_0x69a8('0x38')]=[{'all':!![]}];}_0x558b27=_['merge']({},_0x558b27,_0x2d57ae[_0x69a8('0x39')]);return db[_0x69a8('0x2f')][_0x69a8('0x3a')](_0x558b27)[_0x69a8('0x28')](handleEntityNotFound(_0x2c229b,null))[_0x69a8('0x28')](respondWithResult(_0x2c229b,null))[_0x69a8('0x3b')](handleError(_0x2c229b,null));};exports[_0x69a8('0x27')]=function(_0x4527de,_0x3b8ee9){return db[_0x69a8('0x2f')][_0x69a8('0x3a')]({'where':{'id':_0x4527de[_0x69a8('0x2d')]['id']}})[_0x69a8('0x28')](handleEntityNotFound(_0x3b8ee9,null))[_0x69a8('0x28')](removeEntity(_0x3b8ee9,null))[_0x69a8('0x3b')](handleError(_0x3b8ee9,null));};function widgetAttributes(_0x5e6147){try{switch(_0x5e6147['type']){case _0x69a8('0x3c'):return[{'name':'attrUrl','value':_0x5e6147[_0x69a8('0x3d')]||(_0x5e6147['attrs']&&_0x5e6147[_0x69a8('0x3e')][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0][_0x69a8('0x3f')]:undefined)||_0x69a8('0x40')}];case _0x69a8('0x41'):return[{'name':_0x69a8('0x42'),'value':_0x5e6147[_0x69a8('0x42')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147['attrs'][0x0]?_0x5e6147['attrs'][0x0][_0x69a8('0x3f')]:undefined)||''}];case _0x69a8('0x43'):return[{'name':_0x69a8('0x44'),'value':_0x5e6147[_0x69a8('0x44')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0][_0x69a8('0x3f')]:undefined)||_0x69a8('0x45')},{'name':_0x69a8('0x46'),'value':_0x5e6147[_0x69a8('0x46')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x1]?_0x5e6147[_0x69a8('0x3e')][0x1]['value']:undefined)||'0.00'},{'name':_0x69a8('0x47'),'value':_0x5e6147[_0x69a8('0x47')]||(_0x5e6147['attrs']&&_0x5e6147[_0x69a8('0x3e')][0x2]?_0x5e6147['attrs'][0x2][_0x69a8('0x3f')]:undefined)||0xc}];case _0x69a8('0x48'):return[{'name':_0x69a8('0x49'),'value':_0x5e6147[_0x69a8('0x49')]||(_0x5e6147['attrs']&&_0x5e6147[_0x69a8('0x3e')][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0]['value']:undefined)||_0x69a8('0x4a')},{'name':_0x69a8('0x4b'),'value':_0x5e6147['attrVoiceQueues']||(_0x5e6147['attrs']&&_0x5e6147[_0x69a8('0x3e')][0x1]?_0x5e6147[_0x69a8('0x3e')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x5e6147[_0x69a8('0x47')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x2]?_0x5e6147[_0x69a8('0x3e')][0x2][_0x69a8('0x3f')]:undefined)||0x14}];case'multibar-chart':case _0x69a8('0x4c'):return[{'name':'attrSerie1','value':_0x5e6147[_0x69a8('0x4d')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147['attrs'][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0][_0x69a8('0x3f')]:undefined)||_0x69a8('0x4a')},{'name':_0x69a8('0x4e'),'value':_0x5e6147[_0x69a8('0x4e')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x1]?_0x5e6147[_0x69a8('0x3e')][0x1]['value']:undefined)||null},{'name':_0x69a8('0x4f'),'value':_0x5e6147[_0x69a8('0x4f')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x2]?_0x5e6147['attrs'][0x2][_0x69a8('0x3f')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x5e6147[_0x69a8('0x4b')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x3]?_0x5e6147[_0x69a8('0x3e')][0x3][_0x69a8('0x3f')]:undefined)||[]}];case _0x69a8('0x50'):return[{'name':_0x69a8('0x51'),'type':_0x5e6147['reportType']||(_0x5e6147['attrs']&&_0x5e6147['attrs'][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0][_0x69a8('0x52')]:undefined)||null,'value':_0x5e6147['attrReport']||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147['attrs'][0x0]?_0x5e6147[_0x69a8('0x3e')][0x0][_0x69a8('0x3f')]:undefined)||null},{'name':_0x69a8('0x53'),'value':_0x5e6147[_0x69a8('0x53')]||(_0x5e6147[_0x69a8('0x3e')]&&_0x5e6147[_0x69a8('0x3e')][0x1]?_0x5e6147[_0x69a8('0x3e')][0x1][_0x69a8('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0x49039d){logger[_0x69a8('0x29')]('widgetAttributes:\x20%s',JSON[_0x69a8('0x54')](_0x49039d));return[];}}exports[_0x69a8('0x55')]=function(_0x1ee401,_0x171640){if(_0x1ee401[_0x69a8('0x56')]){_0x1ee401['body'][_0x69a8('0x3e')]=widgetAttributes(_0x1ee401[_0x69a8('0x56')]);}return db[_0x69a8('0x2f')]['create'](_0x1ee401['body'],{})['then'](respondWithResult(_0x171640,0xc9))[_0x69a8('0x3b')](handleError(_0x171640,null));};exports[_0x69a8('0x57')]=function(_0x1d95c4,_0x59ee4f){if(_0x1d95c4[_0x69a8('0x56')]['id']){delete _0x1d95c4[_0x69a8('0x56')]['id'];}_0x1d95c4[_0x69a8('0x56')][_0x69a8('0x3e')]=widgetAttributes(_0x1d95c4['body']);return db['DashboardItem'][_0x69a8('0x3a')]({'where':{'id':_0x1d95c4[_0x69a8('0x2d')]['id']}})[_0x69a8('0x28')](handleEntityNotFound(_0x59ee4f,null))['then'](saveUpdates(_0x1d95c4[_0x69a8('0x56')],null))[_0x69a8('0x28')](respondWithResult(_0x59ee4f,null))['catch'](handleError(_0x59ee4f,null));};
\ No newline at end of file
index 4031be3..5006d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b6=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem'];(function(_0x4f7ccf,_0x55d1f1){var _0x43bba2=function(_0x189914){while(--_0x189914){_0x4f7ccf['push'](_0x4f7ccf['shift']());}};_0x43bba2(++_0x55d1f1);}(_0x20b6,0x1ab));var _0x620b=function(_0x41bfa8,_0x2222f0){_0x41bfa8=_0x41bfa8-0x0;var _0x5a689e=_0x20b6[_0x41bfa8];return _0x5a689e;};'use strict';var EventEmitter=require(_0x620b('0x0'));var DashboardItem=require(_0x620b('0x1'))['db'][_0x620b('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x620b('0x3')](0x0);var events={'afterCreate':_0x620b('0x4'),'afterUpdate':'update','afterDestroy':_0x620b('0x5')};function emitEvent(_0x5ec738){return function(_0x45ba0e,_0x4f51c9,_0x1f5d79){DashboardItemEvents[_0x620b('0x6')](_0x5ec738+':'+_0x45ba0e['id'],_0x45ba0e);DashboardItemEvents['emit'](_0x5ec738,_0x45ba0e);_0x1f5d79(null);};}for(var e in events){if(events[_0x620b('0x7')](e)){var event=events[e];DashboardItem[_0x620b('0x8')](e,emitEvent(event));}}module[_0x620b('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x5fd1=['events','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x429734,_0x89ad58){var _0x2542cb=function(_0xf0375d){while(--_0xf0375d){_0x429734['push'](_0x429734['shift']());}};_0x2542cb(++_0x89ad58);}(_0x5fd1,0x18f));var _0x15fd=function(_0x1f1086,_0x3cee3d){_0x1f1086=_0x1f1086-0x0;var _0x122c26=_0x5fd1[_0x1f1086];return _0x122c26;};'use strict';var EventEmitter=require(_0x15fd('0x0'));var DashboardItem=require('../../mysqldb')['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x15fd('0x1'),'afterUpdate':'update','afterDestroy':_0x15fd('0x2')};function emitEvent(_0x198715){return function(_0x317b6a,_0x1c7508,_0x19a356){DashboardItemEvents[_0x15fd('0x3')](_0x198715+':'+_0x317b6a['id'],_0x317b6a);DashboardItemEvents[_0x15fd('0x3')](_0x198715,_0x317b6a);_0x19a356(null);};}for(var e in events){if(events[_0x15fd('0x4')](e)){var event=events[e];DashboardItem[_0x15fd('0x5')](e,emitEvent(event));}}module[_0x15fd('0x6')]=DashboardItemEvents;
\ No newline at end of file
index 3e908b7..309d073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x307e=['bluebird','request-promise','path','rimraf','./dashboardItem.attributes','define','DashboardItem','dashboard_items','../../config/logger','api','moment'];(function(_0x255642,_0x923271){var _0xf12044=function(_0x47725a){while(--_0x47725a){_0x255642['push'](_0x255642['shift']());}};_0xf12044(++_0x923271);}(_0x307e,0x1ec));var _0xe307=function(_0xa255c2,_0x1cc656){_0xa255c2=_0xa255c2-0x0;var _0x7cd61c=_0x307e[_0xa255c2];return _0x7cd61c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe307('0x0'))(_0xe307('0x1'));var moment=require(_0xe307('0x2'));var BPromise=require(_0xe307('0x3'));var rp=require(_0xe307('0x4'));var fs=require('fs');var path=require(_0xe307('0x5'));var rimraf=require(_0xe307('0x6'));var config=require('../../config/environment');var attributes=require(_0xe307('0x7'));module['exports']=function(_0x275a35,_0x2eaf40){return _0x275a35[_0xe307('0x8')](_0xe307('0x9'),attributes,{'tableName':_0xe307('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab05=['exports','define','DashboardItem','dashboard_items','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xab05,0x1b6));var _0x5ab0=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xab05[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0x5ab0('0x0'));var util=require('util');var logger=require(_0x5ab0('0x1'))(_0x5ab0('0x2'));var moment=require(_0x5ab0('0x3'));var BPromise=require(_0x5ab0('0x4'));var rp=require(_0x5ab0('0x5'));var fs=require('fs');var path=require(_0x5ab0('0x6'));var rimraf=require(_0x5ab0('0x7'));var config=require(_0x5ab0('0x8'));var attributes=require(_0x5ab0('0x9'));module[_0x5ab0('0xa')]=function(_0x2cdab5,_0x432aa5){return _0x2cdab5[_0x5ab0('0xb')](_0x5ab0('0xc'),attributes,{'tableName':_0x5ab0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 475b1f1..b6caa7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x113e=['request','then','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket'];(function(_0x4b0290,_0x188c34){var _0x4bd9f4=function(_0x357f3f){while(--_0x357f3f){_0x4b0290['push'](_0x4b0290['shift']());}};_0x4bd9f4(++_0x188c34);}(_0x113e,0x79));var _0xe113=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0x113e[_0x1762b4];return _0x29beda;};'use strict';var _=require(_0xe113('0x0'));var util=require(_0xe113('0x1'));var moment=require(_0xe113('0x2'));var BPromise=require('bluebird');var rs=require(_0xe113('0x3'));var fs=require('fs');var Redis=require(_0xe113('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe113('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xe113('0x6'));var jayson=require(_0xe113('0x7'));var client=jayson[_0xe113('0x8')][_0xe113('0x9')]({'port':0x232a});config[_0xe113('0xa')]=_['defaults'](config[_0xe113('0xa')],{'host':_0xe113('0xb'),'port':0x18eb});var socket=require(_0xe113('0xc'))(new Redis(config['redis']));require(_0xe113('0xd'))['register'](socket);function respondWithRpcPromise(_0x3bb464,_0x4ed915,_0x7a7923){return new BPromise(function(_0x22354f,_0x29e25c){return client[_0xe113('0xe')](_0x3bb464,_0x7a7923)[_0xe113('0xf')](function(_0x3212eb){logger[_0xe113('0x10')]('DashboardItem,\x20%s,\x20%s',_0x4ed915,'request\x20sent');logger[_0xe113('0x11')](_0xe113('0x12'),_0x4ed915,_0xe113('0x13'),JSON[_0xe113('0x14')](_0x3212eb));if(_0x3212eb[_0xe113('0x15')]){if(_0x3212eb[_0xe113('0x15')][_0xe113('0x16')]===0x1f4){logger[_0xe113('0x15')]('DashboardItem,\x20%s,\x20%s',_0x4ed915,_0x3212eb['error']['message']);return _0x29e25c(_0x3212eb['error']['message']);}logger[_0xe113('0x15')](_0xe113('0x17'),_0x4ed915,_0x3212eb[_0xe113('0x15')]['message']);return _0x22354f(_0x3212eb['error'][_0xe113('0x18')]);}else{logger[_0xe113('0x10')](_0xe113('0x17'),_0x4ed915,_0xe113('0x13'));_0x22354f(_0x3212eb[_0xe113('0x19')][_0xe113('0x18')]);}})[_0xe113('0x1a')](function(_0x224220){logger[_0xe113('0x15')](_0xe113('0x17'),_0x4ed915,_0x224220);_0x29e25c(_0x224220);});});}
\ No newline at end of file
+var _0x66dc=['message','info','DashboardItem,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket','request','then','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4085bd,_0x5d74fe){var _0xa565b=function(_0x5eef45){while(--_0x5eef45){_0x4085bd['push'](_0x4085bd['shift']());}};_0xa565b(++_0x5d74fe);}(_0x66dc,0xd0));var _0xc66d=function(_0x301d8,_0x17fae8){_0x301d8=_0x301d8-0x0;var _0x1384de=_0x66dc[_0x301d8];return _0x1384de;};'use strict';var _=require(_0xc66d('0x0'));var util=require(_0xc66d('0x1'));var moment=require(_0xc66d('0x2'));var BPromise=require(_0xc66d('0x3'));var rs=require(_0xc66d('0x4'));var fs=require('fs');var Redis=require(_0xc66d('0x5'));var db=require(_0xc66d('0x6'))['db'];var utils=require(_0xc66d('0x7'));var logger=require(_0xc66d('0x8'))(_0xc66d('0x9'));var config=require(_0xc66d('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xc66d('0xb')][_0xc66d('0xc')]({'port':0x232a});config[_0xc66d('0xd')]=_['defaults'](config['redis'],{'host':_0xc66d('0xe'),'port':0x18eb});var socket=require(_0xc66d('0xf'))(new Redis(config[_0xc66d('0xd')]));require(_0xc66d('0x10'))['register'](socket);function respondWithRpcPromise(_0x2a1bad,_0x5ecabd,_0x56bab2){return new BPromise(function(_0x2eb920,_0xbbff93){return client[_0xc66d('0x11')](_0x2a1bad,_0x56bab2)[_0xc66d('0x12')](function(_0x5d70a5){logger['info']('DashboardItem,\x20%s,\x20%s',_0x5ecabd,_0xc66d('0x13'));logger[_0xc66d('0x14')](_0xc66d('0x15'),_0x5ecabd,_0xc66d('0x13'),JSON[_0xc66d('0x16')](_0x5d70a5));if(_0x5d70a5[_0xc66d('0x17')]){if(_0x5d70a5[_0xc66d('0x17')]['code']===0x1f4){logger[_0xc66d('0x17')]('DashboardItem,\x20%s,\x20%s',_0x5ecabd,_0x5d70a5['error'][_0xc66d('0x18')]);return _0xbbff93(_0x5d70a5[_0xc66d('0x17')]['message']);}logger[_0xc66d('0x17')]('DashboardItem,\x20%s,\x20%s',_0x5ecabd,_0x5d70a5[_0xc66d('0x17')][_0xc66d('0x18')]);return _0x2eb920(_0x5d70a5[_0xc66d('0x17')][_0xc66d('0x18')]);}else{logger[_0xc66d('0x19')](_0xc66d('0x1a'),_0x5ecabd,'request\x20sent');_0x2eb920(_0x5d70a5[_0xc66d('0x1b')]['message']);}})[_0xc66d('0x1c')](function(_0xb272bc){logger[_0xc66d('0x17')](_0xc66d('0x1a'),_0x5ecabd,_0xb272bc);_0xbbff93(_0xb272bc);});});}
\ No newline at end of file
index b6c6c57..480c30d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x964e=['./dashboardItem.events','update','emit','removeListener','register'];(function(_0xe23de1,_0x2cd4b9){var _0x59d143=function(_0x5039b8){while(--_0x5039b8){_0xe23de1['push'](_0xe23de1['shift']());}};_0x59d143(++_0x2cd4b9);}(_0x964e,0xeb));var _0xe964=function(_0x328a46,_0x55eb2e){_0x328a46=_0x328a46-0x0;var _0x140046=_0x964e[_0x328a46];return _0x140046;};'use strict';var DashboardItemEvents=require(_0xe964('0x0'));var events=['save','remove',_0xe964('0x1')];function createListener(_0x2c1eec,_0x3d130d){return function(_0x28b82a){_0x3d130d[_0xe964('0x2')](_0x2c1eec,_0x28b82a);};}function removeListener(_0x580df5,_0x1bbc4c){return function(){DashboardItemEvents[_0xe964('0x3')](_0x580df5,_0x1bbc4c);};}exports[_0xe964('0x4')]=function(_0x5cc2cb){for(var _0x5c492f=0x0,_0x6d1085=events['length'];_0x5c492f<_0x6d1085;_0x5c492f++){var _0x2c1881=events[_0x5c492f];var _0x44dd5c=createListener('dashboardItem:'+_0x2c1881,_0x5cc2cb);DashboardItemEvents['on'](_0x2c1881,_0x44dd5c);}};
\ No newline at end of file
+var _0x37d6=['update','emit','removeListener','register','length','./dashboardItem.events','remove'];(function(_0x63776c,_0x430c9e){var _0x12bb1c=function(_0x30565a){while(--_0x30565a){_0x63776c['push'](_0x63776c['shift']());}};_0x12bb1c(++_0x430c9e);}(_0x37d6,0x186));var _0x637d=function(_0x479160,_0x3ab560){_0x479160=_0x479160-0x0;var _0x47ac6d=_0x37d6[_0x479160];return _0x47ac6d;};'use strict';var DashboardItemEvents=require(_0x637d('0x0'));var events=['save',_0x637d('0x1'),_0x637d('0x2')];function createListener(_0x15c071,_0x496178){return function(_0x4b90c2){_0x496178[_0x637d('0x3')](_0x15c071,_0x4b90c2);};}function removeListener(_0x32f047,_0x387dd1){return function(){DashboardItemEvents[_0x637d('0x4')](_0x32f047,_0x387dd1);};}exports[_0x637d('0x5')]=function(_0x303fe0){for(var _0x401a86=0x0,_0x4580b3=events[_0x637d('0x6')];_0x401a86<_0x4580b3;_0x401a86++){var _0x5a886d=events[_0x401a86];var _0x5573f0=createListener('dashboardItem:'+_0x5a886d,_0x303fe0);DashboardItemEvents['on'](_0x5a886d,_0x5573f0);}};
\ No newline at end of file
index 84c13d5..a3d9826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','isAuthenticated','show','post','/:id','update','delete','multer','util','path','express'];(function(_0x1d1d09,_0x504d77){var _0x8827e=function(_0x4f3128){while(--_0x4f3128){_0x1d1d09['push'](_0x1d1d09['shift']());}};_0x8827e(++_0x504d77);}(_0xcac4,0xec));var _0x4cac=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xcac4[_0x4ea69d];return _0x5318e0;};'use strict';var multer=require(_0x4cac('0x0'));var util=require(_0x4cac('0x1'));var path=require(_0x4cac('0x2'));var timeout=require('connect-timeout');var express=require(_0x4cac('0x3'));var router=express[_0x4cac('0x4')]();var fs_extra=require(_0x4cac('0x5'));var auth=require(_0x4cac('0x6'));var interaction=require(_0x4cac('0x7'));var config=require('../../config/environment');var controller=require(_0x4cac('0x8'));router['get']('/:id',auth[_0x4cac('0x9')](),controller[_0x4cac('0xa')]);router[_0x4cac('0xb')]('/',auth[_0x4cac('0x9')](),controller['create']);router['put'](_0x4cac('0xc'),auth[_0x4cac('0x9')](),controller[_0x4cac('0xd')]);router[_0x4cac('0xe')](_0x4cac('0xc'),auth[_0x4cac('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6ccb=['../../components/interaction/service','./dashboardItem.controller','/:id','isAuthenticated','show','put','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x31e655,_0x365309){var _0x3cca85=function(_0xdaf8ad){while(--_0xdaf8ad){_0x31e655['push'](_0x31e655['shift']());}};_0x3cca85(++_0x365309);}(_0x6ccb,0xe8));var _0xb6cc=function(_0x2ebbcc,_0x50f1f2){_0x2ebbcc=_0x2ebbcc-0x0;var _0x2f1500=_0x6ccb[_0x2ebbcc];return _0x2f1500;};'use strict';var multer=require(_0xb6cc('0x0'));var util=require(_0xb6cc('0x1'));var path=require(_0xb6cc('0x2'));var timeout=require(_0xb6cc('0x3'));var express=require('express');var router=express[_0xb6cc('0x4')]();var fs_extra=require(_0xb6cc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb6cc('0x6'));var config=require('../../config/environment');var controller=require(_0xb6cc('0x7'));router['get'](_0xb6cc('0x8'),auth[_0xb6cc('0x9')](),controller[_0xb6cc('0xa')]);router['post']('/',auth[_0xb6cc('0x9')](),controller['create']);router[_0xb6cc('0xb')](_0xb6cc('0x8'),auth[_0xb6cc('0x9')](),controller['update']);router[_0xb6cc('0xc')](_0xb6cc('0x8'),auth[_0xb6cc('0x9')](),controller[_0xb6cc('0xd')]);module['exports']=router;
\ No newline at end of file
index 1ac58af..70685d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a4a=['ENUM','first','third','STRING','exports'];(function(_0x33823e,_0x311aea){var _0x1b0ada=function(_0xd27f8c){while(--_0xd27f8c){_0x33823e['push'](_0x33823e['shift']());}};_0x1b0ada(++_0x311aea);}(_0x4a4a,0x167));var _0xa4a4=function(_0x40a08c,_0x15d47e){_0x40a08c=_0x40a08c-0x0;var _0x3481a4=_0x4a4a[_0x40a08c];return _0x3481a4;};'use strict';var Sequelize=require('sequelize');module[_0xa4a4('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0xa4a4('0x1')](_0xa4a4('0x2'),'second',_0xa4a4('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xa4a4('0x4')]}};
\ No newline at end of file
+var _0x8140=['sequelize','exports','ENUM','second','third','first','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8140,0x150));var _0x0814=function(_0x26f282,_0x5248d0){_0x26f282=_0x26f282-0x0;var _0xcd0b7d=_0x8140[_0x26f282];return _0xcd0b7d;};'use strict';var Sequelize=require(_0x0814('0x0'));module[_0x0814('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x0814('0x2')]('first',_0x0814('0x3'),_0x0814('0x4')),'allowNull':![],'defaultValue':_0x0814('0x5')},'description':{'type':Sequelize[_0x0814('0x6')]}};
\ No newline at end of file
index c9219ac..3b797cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x683f=['../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Dispositions','error','name','send','index','map','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','Disposition','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x35810b,_0x5149e9){var _0xb52c7=function(_0x19d43b){while(--_0x19d43b){_0x35810b['push'](_0x35810b['shift']());}};_0xb52c7(++_0x5149e9);}(_0x683f,0x18e));var _0xf683=function(_0x43d701,_0x4bb2e9){_0x43d701=_0x43d701-0x0;var _0x2ec4c6=_0x683f[_0x43d701];return _0x2ec4c6;};'use strict';var emlformat=require(_0xf683('0x0'));var rimraf=require(_0xf683('0x1'));var zipdir=require(_0xf683('0x2'));var jsonpatch=require(_0xf683('0x3'));var rp=require('request-promise');var moment=require(_0xf683('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf683('0x5'));var path=require(_0xf683('0x6'));var sox=require(_0xf683('0x7'));var csv=require(_0xf683('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf683('0x9'));var _=require(_0xf683('0xa'));var squel=require('squel');var crypto=require(_0xf683('0xb'));var jsforce=require(_0xf683('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf683('0x8'));var querystring=require('querystring');var Papa=require(_0xf683('0xd'));var Redis=require(_0xf683('0xe'));var authService=require(_0xf683('0xf'));var qs=require(_0xf683('0x10'));var as=require(_0xf683('0x11'));var hardwareService=require(_0xf683('0x12'));var logger=require(_0xf683('0x13'))(_0xf683('0x14'));var utils=require(_0xf683('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf683('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b2132,_0x173fae){_0x173fae=_0x173fae||0xcc;return function(_0x498f9c){if(_0x498f9c){return _0x4b2132[_0xf683('0x17')](_0x173fae);}return _0x4b2132[_0xf683('0x18')](_0x173fae)[_0xf683('0x19')]();};}function respondWithResult(_0xcec699,_0x18693a){_0x18693a=_0x18693a||0xc8;return function(_0x4e9e17){if(_0x4e9e17){return _0xcec699[_0xf683('0x18')](_0x18693a)[_0xf683('0x1a')](_0x4e9e17);}};}function respondWithFilteredResult(_0x4dd082,_0x466e64){return function(_0x4ef42c){if(_0x4ef42c){var _0x139947=typeof _0x466e64[_0xf683('0x1b')]===_0xf683('0x1c')&&typeof _0x466e64[_0xf683('0x1d')]===_0xf683('0x1c');var _0x3942ee=_0x4ef42c[_0xf683('0x1e')];var _0x2c3255=_0x139947?0x0:_0x466e64[_0xf683('0x1b')];var _0x348fbe=_0x139947?_0x4ef42c[_0xf683('0x1e')]:_0x466e64[_0xf683('0x1b')]+_0x466e64[_0xf683('0x1d')];var _0x151c1d;if(_0x348fbe>=_0x3942ee){_0x348fbe=_0x3942ee;_0x151c1d=0xc8;}else{_0x151c1d=0xce;}_0x4dd082[_0xf683('0x18')](_0x151c1d);return _0x4dd082[_0xf683('0x1f')](_0xf683('0x20'),_0x2c3255+'-'+_0x348fbe+'/'+_0x3942ee)[_0xf683('0x1a')](_0x4ef42c);}return null;};}function patchUpdates(_0x3d9dc9){return function(_0x44e312){try{jsonpatch[_0xf683('0x21')](_0x44e312,_0x3d9dc9,!![]);}catch(_0x5a5b26){return BPromise[_0xf683('0x22')](_0x5a5b26);}return _0x44e312[_0xf683('0x23')]();};}function saveUpdates(_0x2410c9,_0x17ee14){return function(_0x57cb8a){if(_0x57cb8a){return _0x57cb8a['update'](_0x2410c9)[_0xf683('0x24')](function(_0x14aebc){return _0x14aebc;});}return null;};}function removeEntity(_0x13d90a,_0xf336e3){return function(_0x43120d){if(_0x43120d){return _0x43120d[_0xf683('0x25')]()[_0xf683('0x24')](function(){var _0x71d641=_0x43120d[_0xf683('0x26')]({'plain':!![]});var _0x15589a=_0xf683('0x27');return db['UserProfileResource'][_0xf683('0x25')]({'where':{'type':_0x15589a,'resourceId':_0x71d641['id']}})[_0xf683('0x24')](function(){return _0x43120d;});})[_0xf683('0x24')](function(){_0x13d90a[_0xf683('0x18')](0xcc)[_0xf683('0x19')]();});}};}function handleEntityNotFound(_0x1a162d,_0x1c8d58){return function(_0x2ee79c){if(!_0x2ee79c){_0x1a162d[_0xf683('0x17')](0x194);}return _0x2ee79c;};}function handleError(_0x73ae31,_0x45009b){_0x45009b=_0x45009b||0x1f4;return function(_0x1441e6){logger[_0xf683('0x28')](_0x1441e6['stack']);if(_0x1441e6['name']){delete _0x1441e6[_0xf683('0x29')];}_0x73ae31['status'](_0x45009b)[_0xf683('0x2a')](_0x1441e6);};}exports[_0xf683('0x2b')]=function(_0x242442,_0x31087f){var _0x270a33={},_0x4029e9={},_0x385eb7={'count':0x0,'rows':[]};var _0x1b34d2=_[_0xf683('0x2c')](db['Disposition']['rawAttributes'],function(_0x488cf3){return{'name':_0x488cf3[_0xf683('0x2d')],'type':_0x488cf3[_0xf683('0x2e')][_0xf683('0x2f')]};});_0x4029e9['model']=_[_0xf683('0x2c')](_0x1b34d2,_0xf683('0x29'));_0x4029e9['query']=_[_0xf683('0x30')](_0x242442['query']);_0x4029e9[_0xf683('0x31')]=_[_0xf683('0x32')](_0x4029e9[_0xf683('0x33')],_0x4029e9[_0xf683('0x34')]);_0x270a33[_0xf683('0x35')]=_['intersection'](_0x4029e9[_0xf683('0x33')],qs[_0xf683('0x36')](_0x242442['query']['fields']));_0x270a33[_0xf683('0x35')]=_0x270a33[_0xf683('0x35')][_0xf683('0x37')]?_0x270a33[_0xf683('0x35')]:_0x4029e9[_0xf683('0x33')];if(!_0x242442[_0xf683('0x34')][_0xf683('0x38')](_0xf683('0x39'))){_0x270a33[_0xf683('0x1d')]=qs[_0xf683('0x1d')](_0x242442['query'][_0xf683('0x1d')]);_0x270a33['offset']=qs[_0xf683('0x1b')](_0x242442[_0xf683('0x34')][_0xf683('0x1b')]);}_0x270a33['order']=qs[_0xf683('0x3a')](_0x242442[_0xf683('0x34')][_0xf683('0x3a')]);_0x270a33[_0xf683('0x3b')]=qs[_0xf683('0x31')](_[_0xf683('0x3c')](_0x242442[_0xf683('0x34')],_0x4029e9[_0xf683('0x31')]),_0x1b34d2);if(_0x242442[_0xf683('0x34')][_0xf683('0x3d')]){_0x270a33['where']=_[_0xf683('0x3e')](_0x270a33[_0xf683('0x3b')],{'$or':_[_0xf683('0x2c')](_0x1b34d2,function(_0xb38eb9){if(_0xb38eb9[_0xf683('0x2e')]!==_0xf683('0x3f')){var _0x1d066c={};_0x1d066c[_0xb38eb9['name']]={'$like':'%'+_0x242442[_0xf683('0x34')][_0xf683('0x3d')]+'%'};return _0x1d066c;}})});}_0x270a33=_[_0xf683('0x3e')]({},_0x270a33,_0x242442['options']);var _0x5468c2={'where':_0x270a33[_0xf683('0x3b')]};return db[_0xf683('0x40')][_0xf683('0x1e')](_0x5468c2)[_0xf683('0x24')](function(_0x120af2){_0x385eb7[_0xf683('0x1e')]=_0x120af2;if(_0x242442[_0xf683('0x34')][_0xf683('0x41')]){_0x270a33['include']=[{'all':!![]}];}return db['Disposition'][_0xf683('0x42')](_0x270a33);})[_0xf683('0x24')](function(_0x2569e3){_0x385eb7[_0xf683('0x43')]=_0x2569e3;return _0x385eb7;})[_0xf683('0x24')](respondWithFilteredResult(_0x31087f,_0x270a33))[_0xf683('0x44')](handleError(_0x31087f,null));};exports[_0xf683('0x45')]=function(_0x3a8fb2,_0x2ebdc1){var _0x1d55ef={'raw':!![],'where':{'id':_0x3a8fb2[_0xf683('0x46')]['id']}},_0x53a700={};_0x53a700['model']=_[_0xf683('0x30')](db[_0xf683('0x40')][_0xf683('0x47')]);_0x53a700['query']=_[_0xf683('0x30')](_0x3a8fb2['query']);_0x53a700[_0xf683('0x31')]=_[_0xf683('0x32')](_0x53a700[_0xf683('0x33')],_0x53a700[_0xf683('0x34')]);_0x1d55ef[_0xf683('0x35')]=_[_0xf683('0x32')](_0x53a700['model'],qs[_0xf683('0x36')](_0x3a8fb2[_0xf683('0x34')]['fields']));_0x1d55ef[_0xf683('0x35')]=_0x1d55ef[_0xf683('0x35')]['length']?_0x1d55ef['attributes']:_0x53a700[_0xf683('0x33')];if(_0x3a8fb2['query'][_0xf683('0x41')]){_0x1d55ef[_0xf683('0x48')]=[{'all':!![]}];}_0x1d55ef=_[_0xf683('0x3e')]({},_0x1d55ef,_0x3a8fb2['options']);return db[_0xf683('0x40')][_0xf683('0x49')](_0x1d55ef)[_0xf683('0x24')](handleEntityNotFound(_0x2ebdc1,null))[_0xf683('0x24')](respondWithResult(_0x2ebdc1,null))[_0xf683('0x44')](handleError(_0x2ebdc1,null));};exports['create']=function(_0x602d8b,_0x405628){return db[_0xf683('0x40')][_0xf683('0x4a')](_0x602d8b['body'],{})[_0xf683('0x24')](function(_0x339273){var _0x43230e=_0x602d8b[_0xf683('0x4b')][_0xf683('0x26')]({'plain':!![]});if(!_0x43230e)throw new Error(_0xf683('0x4c'));if(_0x43230e[_0xf683('0x4d')]===_0xf683('0x4b')){var _0x41fe4a=_0x339273[_0xf683('0x26')]({'plain':!![]});var _0x10d2e6='Dispositions';return db[_0xf683('0x4e')]['find']({'where':{'name':_0x10d2e6,'userProfileId':_0x43230e[_0xf683('0x4f')]},'raw':!![]})[_0xf683('0x24')](function(_0x3d76b6){if(_0x3d76b6&&_0x3d76b6['autoAssociation']===0x0){return db[_0xf683('0x50')][_0xf683('0x4a')]({'name':_0x41fe4a[_0xf683('0x29')],'resourceId':_0x41fe4a['id'],'type':_0x3d76b6['name'],'sectionId':_0x3d76b6['id']},{})['then'](function(){return _0x339273;});}else{return _0x339273;}})[_0xf683('0x44')](function(_0x46cba9){logger[_0xf683('0x28')](_0xf683('0x51'),_0x46cba9);throw _0x46cba9;});}return _0x339273;})[_0xf683('0x24')](respondWithResult(_0x405628,0xc9))[_0xf683('0x44')](handleError(_0x405628,null));};exports[_0xf683('0x52')]=function(_0x3ca387,_0xa28db6){if(_0x3ca387['body']['id']){delete _0x3ca387['body']['id'];}return db[_0xf683('0x40')]['find']({'where':{'id':_0x3ca387['params']['id']}})[_0xf683('0x24')](handleEntityNotFound(_0xa28db6,null))['then'](saveUpdates(_0x3ca387[_0xf683('0x53')],null))['then'](respondWithResult(_0xa28db6,null))[_0xf683('0x44')](handleError(_0xa28db6,null));};exports[_0xf683('0x25')]=function(_0x229e3e,_0x364559){return db[_0xf683('0x40')]['find']({'where':{'id':_0x229e3e[_0xf683('0x46')]['id']}})[_0xf683('0x24')](handleEntityNotFound(_0x364559,null))[_0xf683('0x24')](removeEntity(_0x364559,null))[_0xf683('0x44')](handleError(_0x364559,null));};
\ No newline at end of file
+var _0x7d55=['squel','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','destroy','then','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','Disposition','includeAll','include','findAll','rows','catch','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x16de6a,_0x44f3de){var _0x5e7993=function(_0x4299ad){while(--_0x4299ad){_0x16de6a['push'](_0x16de6a['shift']());}};_0x5e7993(++_0x44f3de);}(_0x7d55,0x1bc));var _0x57d5=function(_0x3039f3,_0x5efe16){_0x3039f3=_0x3039f3-0x0;var _0x1a8e06=_0x7d55[_0x3039f3];return _0x1a8e06;};'use strict';var emlformat=require(_0x57d5('0x0'));var rimraf=require(_0x57d5('0x1'));var zipdir=require(_0x57d5('0x2'));var jsonpatch=require(_0x57d5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x57d5('0x4'));var Mustache=require(_0x57d5('0x5'));var util=require(_0x57d5('0x6'));var path=require('path');var sox=require(_0x57d5('0x7'));var csv=require(_0x57d5('0x8'));var ejs=require(_0x57d5('0x9'));var fs=require('fs');var fs_extra=require(_0x57d5('0xa'));var _=require(_0x57d5('0xb'));var squel=require(_0x57d5('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x57d5('0xd'));var Papa=require(_0x57d5('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x57d5('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x57d5('0x10'));var logger=require(_0x57d5('0x11'))(_0x57d5('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x57d5('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b7cc5,_0x1226b4){_0x1226b4=_0x1226b4||0xcc;return function(_0x336f38){if(_0x336f38){return _0x1b7cc5[_0x57d5('0x14')](_0x1226b4);}return _0x1b7cc5[_0x57d5('0x15')](_0x1226b4)[_0x57d5('0x16')]();};}function respondWithResult(_0x24c331,_0x25c927){_0x25c927=_0x25c927||0xc8;return function(_0x4dded6){if(_0x4dded6){return _0x24c331['status'](_0x25c927)[_0x57d5('0x17')](_0x4dded6);}};}function respondWithFilteredResult(_0x5ceac8,_0x35d736){return function(_0x2cc76e){if(_0x2cc76e){var _0x48308c=typeof _0x35d736[_0x57d5('0x18')]==='undefined'&&typeof _0x35d736['limit']===_0x57d5('0x19');var _0x12af1c=_0x2cc76e['count'];var _0x573143=_0x48308c?0x0:_0x35d736[_0x57d5('0x18')];var _0x28cb8d=_0x48308c?_0x2cc76e[_0x57d5('0x1a')]:_0x35d736[_0x57d5('0x18')]+_0x35d736[_0x57d5('0x1b')];var _0x394acc;if(_0x28cb8d>=_0x12af1c){_0x28cb8d=_0x12af1c;_0x394acc=0xc8;}else{_0x394acc=0xce;}_0x5ceac8['status'](_0x394acc);return _0x5ceac8[_0x57d5('0x1c')](_0x57d5('0x1d'),_0x573143+'-'+_0x28cb8d+'/'+_0x12af1c)[_0x57d5('0x17')](_0x2cc76e);}return null;};}function patchUpdates(_0x3ac374){return function(_0xaf0b7f){try{jsonpatch[_0x57d5('0x1e')](_0xaf0b7f,_0x3ac374,!![]);}catch(_0x449c4b){return BPromise['reject'](_0x449c4b);}return _0xaf0b7f['save']();};}function saveUpdates(_0x43e2d4,_0x4bda8b){return function(_0x378ee5){if(_0x378ee5){return _0x378ee5[_0x57d5('0x1f')](_0x43e2d4)['then'](function(_0x3b9951){return _0x3b9951;});}return null;};}function removeEntity(_0x58b01b,_0x2becaa){return function(_0x4d6c6b){if(_0x4d6c6b){return _0x4d6c6b[_0x57d5('0x20')]()[_0x57d5('0x21')](function(){var _0x11bdc6=_0x4d6c6b['get']({'plain':!![]});var _0x5e6ff0='Dispositions';return db[_0x57d5('0x22')][_0x57d5('0x20')]({'where':{'type':_0x5e6ff0,'resourceId':_0x11bdc6['id']}})[_0x57d5('0x21')](function(){return _0x4d6c6b;});})[_0x57d5('0x21')](function(){_0x58b01b[_0x57d5('0x15')](0xcc)[_0x57d5('0x16')]();});}};}function handleEntityNotFound(_0x55a778,_0x2b2024){return function(_0x1242dd){if(!_0x1242dd){_0x55a778[_0x57d5('0x14')](0x194);}return _0x1242dd;};}function handleError(_0x348335,_0x20dc20){_0x20dc20=_0x20dc20||0x1f4;return function(_0x2aa68b){logger[_0x57d5('0x23')](_0x2aa68b[_0x57d5('0x24')]);if(_0x2aa68b['name']){delete _0x2aa68b[_0x57d5('0x25')];}_0x348335[_0x57d5('0x15')](_0x20dc20)[_0x57d5('0x26')](_0x2aa68b);};}exports[_0x57d5('0x27')]=function(_0xa1b2a3,_0x50a475){var _0x138732={},_0x1c71e6={},_0x47fde4={'count':0x0,'rows':[]};var _0x18ffa3=_[_0x57d5('0x28')](db['Disposition'][_0x57d5('0x29')],function(_0x12eaa9){return{'name':_0x12eaa9[_0x57d5('0x2a')],'type':_0x12eaa9[_0x57d5('0x2b')][_0x57d5('0x2c')]};});_0x1c71e6['model']=_['map'](_0x18ffa3,_0x57d5('0x25'));_0x1c71e6[_0x57d5('0x2d')]=_['keys'](_0xa1b2a3[_0x57d5('0x2d')]);_0x1c71e6[_0x57d5('0x2e')]=_[_0x57d5('0x2f')](_0x1c71e6['model'],_0x1c71e6[_0x57d5('0x2d')]);_0x138732[_0x57d5('0x30')]=_['intersection'](_0x1c71e6['model'],qs[_0x57d5('0x31')](_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x31')]));_0x138732[_0x57d5('0x30')]=_0x138732['attributes'][_0x57d5('0x32')]?_0x138732['attributes']:_0x1c71e6[_0x57d5('0x33')];if(!_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x34')](_0x57d5('0x35'))){_0x138732['limit']=qs[_0x57d5('0x1b')](_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x1b')]);_0x138732[_0x57d5('0x18')]=qs[_0x57d5('0x18')](_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x18')]);}_0x138732[_0x57d5('0x36')]=qs[_0x57d5('0x37')](_0xa1b2a3['query'][_0x57d5('0x37')]);_0x138732[_0x57d5('0x38')]=qs['filters'](_[_0x57d5('0x39')](_0xa1b2a3[_0x57d5('0x2d')],_0x1c71e6[_0x57d5('0x2e')]),_0x18ffa3);if(_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x3a')]){_0x138732[_0x57d5('0x38')]=_[_0x57d5('0x3b')](_0x138732[_0x57d5('0x38')],{'$or':_[_0x57d5('0x28')](_0x18ffa3,function(_0x39cd94){if(_0x39cd94[_0x57d5('0x2b')]!=='VIRTUAL'){var _0x946ddd={};_0x946ddd[_0x39cd94['name']]={'$like':'%'+_0xa1b2a3[_0x57d5('0x2d')][_0x57d5('0x3a')]+'%'};return _0x946ddd;}})});}_0x138732=_['merge']({},_0x138732,_0xa1b2a3[_0x57d5('0x3c')]);var _0x41d905={'where':_0x138732['where']};return db[_0x57d5('0x3d')][_0x57d5('0x1a')](_0x41d905)[_0x57d5('0x21')](function(_0x2c4188){_0x47fde4[_0x57d5('0x1a')]=_0x2c4188;if(_0xa1b2a3['query'][_0x57d5('0x3e')]){_0x138732[_0x57d5('0x3f')]=[{'all':!![]}];}return db[_0x57d5('0x3d')][_0x57d5('0x40')](_0x138732);})['then'](function(_0x258e94){_0x47fde4[_0x57d5('0x41')]=_0x258e94;return _0x47fde4;})[_0x57d5('0x21')](respondWithFilteredResult(_0x50a475,_0x138732))[_0x57d5('0x42')](handleError(_0x50a475,null));};exports['show']=function(_0x3997ad,_0x503846){var _0x19ece6={'raw':!![],'where':{'id':_0x3997ad[_0x57d5('0x43')]['id']}},_0x190f7a={};_0x190f7a['model']=_['keys'](db[_0x57d5('0x3d')][_0x57d5('0x29')]);_0x190f7a[_0x57d5('0x2d')]=_['keys'](_0x3997ad[_0x57d5('0x2d')]);_0x190f7a[_0x57d5('0x2e')]=_[_0x57d5('0x2f')](_0x190f7a[_0x57d5('0x33')],_0x190f7a[_0x57d5('0x2d')]);_0x19ece6[_0x57d5('0x30')]=_[_0x57d5('0x2f')](_0x190f7a[_0x57d5('0x33')],qs[_0x57d5('0x31')](_0x3997ad['query'][_0x57d5('0x31')]));_0x19ece6[_0x57d5('0x30')]=_0x19ece6[_0x57d5('0x30')][_0x57d5('0x32')]?_0x19ece6['attributes']:_0x190f7a[_0x57d5('0x33')];if(_0x3997ad['query'][_0x57d5('0x3e')]){_0x19ece6[_0x57d5('0x3f')]=[{'all':!![]}];}_0x19ece6=_[_0x57d5('0x3b')]({},_0x19ece6,_0x3997ad[_0x57d5('0x3c')]);return db['Disposition'][_0x57d5('0x44')](_0x19ece6)[_0x57d5('0x21')](handleEntityNotFound(_0x503846,null))[_0x57d5('0x21')](respondWithResult(_0x503846,null))['catch'](handleError(_0x503846,null));};exports[_0x57d5('0x45')]=function(_0x5d5ba8,_0x3b0caf){return db[_0x57d5('0x3d')][_0x57d5('0x45')](_0x5d5ba8[_0x57d5('0x46')],{})[_0x57d5('0x21')](function(_0x7c4def){var _0x1366a6=_0x5d5ba8[_0x57d5('0x47')][_0x57d5('0x48')]({'plain':!![]});if(!_0x1366a6)throw new Error(_0x57d5('0x49'));if(_0x1366a6[_0x57d5('0x4a')]===_0x57d5('0x47')){var _0x16a69f=_0x7c4def['get']({'plain':!![]});var _0x4a6df0='Dispositions';return db['UserProfileSection'][_0x57d5('0x44')]({'where':{'name':_0x4a6df0,'userProfileId':_0x1366a6[_0x57d5('0x4b')]},'raw':!![]})[_0x57d5('0x21')](function(_0x3df1cb){if(_0x3df1cb&&_0x3df1cb['autoAssociation']===0x0){return db[_0x57d5('0x22')][_0x57d5('0x45')]({'name':_0x16a69f[_0x57d5('0x25')],'resourceId':_0x16a69f['id'],'type':_0x3df1cb[_0x57d5('0x25')],'sectionId':_0x3df1cb['id']},{})[_0x57d5('0x21')](function(){return _0x7c4def;});}else{return _0x7c4def;}})[_0x57d5('0x42')](function(_0x53a3cf){logger[_0x57d5('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53a3cf);throw _0x53a3cf;});}return _0x7c4def;})['then'](respondWithResult(_0x3b0caf,0xc9))[_0x57d5('0x42')](handleError(_0x3b0caf,null));};exports[_0x57d5('0x1f')]=function(_0x2d08fb,_0x30239f){if(_0x2d08fb[_0x57d5('0x46')]['id']){delete _0x2d08fb[_0x57d5('0x46')]['id'];}return db[_0x57d5('0x3d')]['find']({'where':{'id':_0x2d08fb[_0x57d5('0x43')]['id']}})[_0x57d5('0x21')](handleEntityNotFound(_0x30239f,null))['then'](saveUpdates(_0x2d08fb[_0x57d5('0x46')],null))[_0x57d5('0x21')](respondWithResult(_0x30239f,null))[_0x57d5('0x42')](handleError(_0x30239f,null));};exports[_0x57d5('0x20')]=function(_0x4ea8ef,_0x16b184){return db[_0x57d5('0x3d')]['find']({'where':{'id':_0x4ea8ef['params']['id']}})[_0x57d5('0x21')](handleEntityNotFound(_0x16b184,null))[_0x57d5('0x21')](removeEntity(_0x16b184,null))[_0x57d5('0x42')](handleError(_0x16b184,null));};
\ No newline at end of file
index b60c7da..46f3abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3341=['name','name_chat','ChatWebsiteId','name_mail','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./disposition.attributes','Disposition','tools_dispositions'];(function(_0x10dfc9,_0x25b62c){var _0x154afc=function(_0x5099ac){while(--_0x5099ac){_0x10dfc9['push'](_0x10dfc9['shift']());}};_0x154afc(++_0x25b62c);}(_0x3341,0x8f));var _0x1334=function(_0x2c8288,_0x578376){_0x2c8288=_0x2c8288-0x0;var _0x22aa83=_0x3341[_0x2c8288];return _0x22aa83;};'use strict';var _=require(_0x1334('0x0'));var util=require(_0x1334('0x1'));var logger=require(_0x1334('0x2'))('api');var moment=require(_0x1334('0x3'));var BPromise=require('bluebird');var rp=require(_0x1334('0x4'));var fs=require('fs');var path=require(_0x1334('0x5'));var rimraf=require(_0x1334('0x6'));var config=require(_0x1334('0x7'));var attributes=require(_0x1334('0x8'));module['exports']=function(_0x4fed65,_0x3286e4){return _0x4fed65['define'](_0x1334('0x9'),attributes,{'tableName':_0x1334('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x1334('0xb'),'ListId']},{'unique':!![],'name':_0x1334('0xc'),'fields':[_0x1334('0xb'),_0x1334('0xd')]},{'unique':!![],'name':_0x1334('0xe'),'fields':[_0x1334('0xb'),'MailAccountId']},{'unique':!![],'name':_0x1334('0xf'),'fields':[_0x1334('0xb'),'SmsAccountId']},{'unique':!![],'name':_0x1334('0x10'),'fields':[_0x1334('0xb'),_0x1334('0x11')]},{'unique':!![],'name':_0x1334('0x12'),'fields':[_0x1334('0xb'),_0x1334('0x13')]},{'unique':!![],'name':_0x1334('0x14'),'fields':[_0x1334('0xb'),_0x1334('0x15')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xca39=['exports','define','Disposition','name_voice','name_chat','name','ChatWebsiteId','MailAccountId','name_fax','FaxAccountId','OpenchannelAccountId','name_whatsapp','lodash','../../config/logger','api','moment','bluebird','path','../../config/environment','./disposition.attributes'];(function(_0x46a742,_0x3d237e){var _0x4436e7=function(_0x2a12e6){while(--_0x2a12e6){_0x46a742['push'](_0x46a742['shift']());}};_0x4436e7(++_0x3d237e);}(_0xca39,0xe8));var _0x9ca3=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xca39[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x9ca3('0x0'));var util=require('util');var logger=require(_0x9ca3('0x1'))(_0x9ca3('0x2'));var moment=require(_0x9ca3('0x3'));var BPromise=require(_0x9ca3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9ca3('0x5'));var rimraf=require('rimraf');var config=require(_0x9ca3('0x6'));var attributes=require(_0x9ca3('0x7'));module[_0x9ca3('0x8')]=function(_0x16b1c4,_0x3e4cea){return _0x16b1c4[_0x9ca3('0x9')](_0x9ca3('0xa'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x9ca3('0xb'),'fields':['name','ListId']},{'unique':!![],'name':_0x9ca3('0xc'),'fields':[_0x9ca3('0xd'),_0x9ca3('0xe')]},{'unique':!![],'name':'name_mail','fields':[_0x9ca3('0xd'),_0x9ca3('0xf')]},{'unique':!![],'name':'name_sms','fields':[_0x9ca3('0xd'),'SmsAccountId']},{'unique':!![],'name':_0x9ca3('0x10'),'fields':[_0x9ca3('0xd'),_0x9ca3('0x11')]},{'unique':!![],'name':'name_openchannel','fields':['name',_0x9ca3('0x12')]},{'unique':!![],'name':_0x9ca3('0x13'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 7371ea4..4549798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x12eb14,_0x47879d){var _0x6a411c=function(_0x3c8848){while(--_0x3c8848){_0x12eb14['push'](_0x12eb14['shift']());}};_0x6a411c(++_0x47879d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x488290,_0x123526){var _0xe8178=function(_0x522c22){while(--_0x522c22){_0x488290['push'](_0x488290['shift']());}};_0xe8178(++_0x123526);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 3bc266f..cd75154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c1=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./disposition.controller','get','isAuthenticated','post','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x310e8e,_0x142cb2){var _0x2191d3=function(_0x1d7dad){while(--_0x1d7dad){_0x310e8e['push'](_0x310e8e['shift']());}};_0x2191d3(++_0x142cb2);}(_0xc0c1,0x97));var _0x1c0c=function(_0x1b5345,_0x4293e5){_0x1b5345=_0x1b5345-0x0;var _0x733c03=_0xc0c1[_0x1b5345];return _0x733c03;};'use strict';var multer=require(_0x1c0c('0x0'));var util=require(_0x1c0c('0x1'));var path=require('path');var timeout=require(_0x1c0c('0x2'));var express=require('express');var router=express[_0x1c0c('0x3')]();var fs_extra=require(_0x1c0c('0x4'));var auth=require(_0x1c0c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1c0c('0x6'));var controller=require(_0x1c0c('0x7'));router[_0x1c0c('0x8')]('/',auth[_0x1c0c('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x1c0c('0xa')]('/',auth[_0x1c0c('0x9')](),controller[_0x1c0c('0xb')]);router[_0x1c0c('0xc')](_0x1c0c('0xd'),auth[_0x1c0c('0x9')](),controller['update']);router[_0x1c0c('0xe')]('/:id',auth[_0x1c0c('0x9')](),controller[_0x1c0c('0xf')]);module[_0x1c0c('0x10')]=router;
\ No newline at end of file
+var _0xd54c=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','show','post','/:id','update','delete','exports','multer','path'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xd54c,0x152));var _0xcd54=function(_0x5d6c27,_0x355fe2){_0x5d6c27=_0x5d6c27-0x0;var _0x3f6895=_0xd54c[_0x5d6c27];return _0x3f6895;};'use strict';var multer=require(_0xcd54('0x0'));var util=require('util');var path=require(_0xcd54('0x1'));var timeout=require('connect-timeout');var express=require(_0xcd54('0x2'));var router=express[_0xcd54('0x3')]();var fs_extra=require(_0xcd54('0x4'));var auth=require(_0xcd54('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xcd54('0x6'));var controller=require(_0xcd54('0x7'));router[_0xcd54('0x8')]('/',auth[_0xcd54('0x9')](),controller[_0xcd54('0xa')]);router[_0xcd54('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xcd54('0xb')]);router[_0xcd54('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xcd54('0xd'),auth[_0xcd54('0x9')](),controller[_0xcd54('0xe')]);router[_0xcd54('0xf')](_0xcd54('0xd'),auth[_0xcd54('0x9')](),controller['destroy']);module[_0xcd54('0x10')]=router;
\ No newline at end of file
index 95174bc..168d528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2aa=['4800','7200','12000','9600','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400'];(function(_0xcab8dd,_0xdfc877){var _0x12fb80=function(_0x21d1ab){while(--_0x21d1ab){_0xcab8dd['push'](_0xcab8dd['shift']());}};_0x12fb80(++_0xdfc877);}(_0xf2aa,0xaa));var _0xaf2a=function(_0x1f3dbb,_0x1671d6){_0x1f3dbb=_0x1f3dbb-0x0;var _0x2d71e6=_0xf2aa[_0x1f3dbb];return _0x2d71e6;};'use strict';var Sequelize=require('sequelize');module[_0xaf2a('0x0')]={'name':{'type':Sequelize[_0xaf2a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xaf2a('0x1')]},'ecm':{'type':Sequelize[_0xaf2a('0x2')]('yes','no'),'defaultValue':_0xaf2a('0x3')},'headerinfo':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':_0xaf2a('0x4')},'localstationid':{'type':Sequelize[_0xaf2a('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0x5'),_0xaf2a('0x6'),_0xaf2a('0x7'),'9600',_0xaf2a('0x8'),'14400'),'defaultValue':_0xaf2a('0x6')},'maxrate':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0x5'),'4800',_0xaf2a('0x7'),_0xaf2a('0x9'),_0xaf2a('0x8'),_0xaf2a('0xa')),'defaultValue':_0xaf2a('0xa')},'modem':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':_0xaf2a('0xb')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xaf2a('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xaf2a('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xaf2a('0x2')](_0xaf2a('0xd'),_0xaf2a('0xe'),_0xaf2a('0xf'),_0xaf2a('0x10')),'defaultValue':_0xaf2a('0xd')},'key':{'type':Sequelize[_0xaf2a('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xaf2a('0x11');}},'notificationSound':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaf2a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaf2a('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xaf2a('0x12')],'defaultValue':![],'comment':_0xaf2a('0x13'),'set':function(_0x4e8c35){if(!_0x4e8c35)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xaf2a('0x14')](_0xaf2a('0x15'),_0x4e8c35);}}};
\ No newline at end of file
+var _0x9d2f=['DADHI','KHOMP','TEXT','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','7200','9600','12000','4800','14400','v17,v27,v29','INTEGER'];(function(_0x80f51a,_0x32e95e){var _0x327148=function(_0x16f788){while(--_0x16f788){_0x80f51a['push'](_0x80f51a['shift']());}};_0x327148(++_0x32e95e);}(_0x9d2f,0xee));var _0xf9d2=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x9d2f[_0x2261ce];return _0x524640;};'use strict';var Sequelize=require(_0xf9d2('0x0'));module[_0xf9d2('0x1')]={'name':{'type':Sequelize[_0xf9d2('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf9d2('0x2')]},'ecm':{'type':Sequelize[_0xf9d2('0x3')](_0xf9d2('0x4'),'no'),'defaultValue':_0xf9d2('0x4')},'headerinfo':{'type':Sequelize[_0xf9d2('0x2')],'defaultValue':_0xf9d2('0x5')},'localstationid':{'type':Sequelize[_0xf9d2('0x2')],'unique':_0xf9d2('0x6')},'minrate':{'type':Sequelize[_0xf9d2('0x3')](_0xf9d2('0x7'),'4800',_0xf9d2('0x8'),_0xf9d2('0x9'),_0xf9d2('0xa'),'14400'),'defaultValue':_0xf9d2('0xb')},'maxrate':{'type':Sequelize[_0xf9d2('0x3')](_0xf9d2('0x7'),'4800',_0xf9d2('0x8'),_0xf9d2('0x9'),_0xf9d2('0xa'),_0xf9d2('0xc')),'defaultValue':_0xf9d2('0xc')},'modem':{'type':Sequelize[_0xf9d2('0x2')],'defaultValue':_0xf9d2('0xd')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xf9d2('0xe')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xf9d2('0x3')]('SIP','IAX',_0xf9d2('0xf'),_0xf9d2('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf9d2('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xf9d2('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf9d2('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf9d2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf9d2('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf9d2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf9d2('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf9d2('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf9d2('0xe')],'allowNull':!![],'defaultValue':null,'comment':_0xf9d2('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xf9d2('0x14'),'set':function(_0x3ae198){if(!_0x3ae198)this[_0xf9d2('0x15')](_0xf9d2('0x16'),null);this[_0xf9d2('0x15')]('mandatoryDisposition',_0x3ae198);}}};
\ No newline at end of file
index 96a8572..a5b66bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68d8=['params','mandatoryDispositionPause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','findAll','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addInteraction','FaxInteraction','CmContact','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','findAndCountAll','priority','getApplications','from-voip-provider','exten','app','system','description','Fax\x20Extension','push','Answer','CDR(type)=inbound-fax','Set','ecm','localstationid','faxdetect','headerinfo','maxrate','minrate','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','updatedAt','DESC','attachments','join','root','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','List','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','emit','removeAgents','isArray','userFaxAccount:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxAccount.socket','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','map','FaxAccount','rawAttributes','fieldName','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','show'];(function(_0x2ea6f6,_0x3ed71c){var _0x12a6f1=function(_0x3a25fc){while(--_0x3a25fc){_0x2ea6f6['push'](_0x2ea6f6['shift']());}};_0x12a6f1(++_0x3ed71c);}(_0x68d8,0x128));var _0x868d=function(_0x3ca8f7,_0x2e1797){_0x3ca8f7=_0x3ca8f7-0x0;var _0x30a9ba=_0x68d8[_0x3ca8f7];return _0x30a9ba;};'use strict';var emlformat=require(_0x868d('0x0'));var rimraf=require(_0x868d('0x1'));var zipdir=require(_0x868d('0x2'));var jsonpatch=require(_0x868d('0x3'));var rp=require(_0x868d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x868d('0x5'));var util=require(_0x868d('0x6'));var path=require('path');var sox=require(_0x868d('0x7'));var csv=require(_0x868d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x868d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x868d('0xa'));var jsforce=require(_0x868d('0xb'));var deskjs=require(_0x868d('0xc'));var toCsv=require(_0x868d('0x8'));var querystring=require(_0x868d('0xd'));var Papa=require(_0x868d('0xe'));var Redis=require(_0x868d('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x868d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x868d('0x11'))(_0x868d('0x12'));var utils=require('../../config/utils');var config=require(_0x868d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x868d('0x14'))['db'];config[_0x868d('0x15')]=_[_0x868d('0x16')](config['redis'],{'host':_0x868d('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x868d('0x15')]));require(_0x868d('0x18'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x868d('0x19')][_0x868d('0x1a')]({'port':0x232c});var client9002=jayson[_0x868d('0x19')][_0x868d('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x1f1a01,_0x4107f5,_0x5c6176,_0x4d8c44){return new BPromise(function(_0x51aca9,_0x14a140){var _0x508967=_0x4d8c44||client;return _0x508967[_0x868d('0x1b')](_0x1f1a01,_0x5c6176)[_0x868d('0x1c')](function(_0x151f5f){logger[_0x868d('0x1d')](_0x868d('0x1e'),_0x4107f5,_0x868d('0x1f'));logger[_0x868d('0x20')](_0x868d('0x21'),_0x4107f5,'request\x20sent',JSON['stringify'](_0x151f5f));if(_0x151f5f[_0x868d('0x22')]){if(_0x151f5f['error'][_0x868d('0x23')]===0x1f4){logger[_0x868d('0x22')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);return _0x14a140(_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);}logger[_0x868d('0x22')](_0x868d('0x1e'),_0x4107f5,_0x151f5f[_0x868d('0x22')][_0x868d('0x24')]);return _0x51aca9(_0x151f5f[_0x868d('0x22')]['message']);}else{logger[_0x868d('0x1d')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0x868d('0x1f'));_0x51aca9(_0x151f5f['result'][_0x868d('0x24')]);}})[_0x868d('0x25')](function(_0xb49d2e){logger[_0x868d('0x22')]('FaxAccount,\x20%s,\x20%s',_0x4107f5,_0xb49d2e);_0x14a140(_0xb49d2e);});});}function respondWithStatusCode(_0x3c0d95,_0x5d8943){_0x5d8943=_0x5d8943||0xcc;return function(_0x2e1977){if(_0x2e1977){return _0x3c0d95[_0x868d('0x26')](_0x5d8943);}return _0x3c0d95[_0x868d('0x27')](_0x5d8943)[_0x868d('0x28')]();};}function respondWithResult(_0x403680,_0x4301f8){_0x4301f8=_0x4301f8||0xc8;return function(_0x2d122a){if(_0x2d122a){return _0x403680[_0x868d('0x27')](_0x4301f8)['json'](_0x2d122a);}};}function respondWithFilteredResult(_0x59e050,_0x400c7d){return function(_0x2c3c0c){if(_0x2c3c0c){var _0x4dccf0=typeof _0x400c7d[_0x868d('0x29')]===_0x868d('0x2a')&&typeof _0x400c7d['limit']==='undefined';var _0x161af7=_0x2c3c0c[_0x868d('0x2b')];var _0x1bfec9=_0x4dccf0?0x0:_0x400c7d['offset'];var _0x184eb3=_0x4dccf0?_0x2c3c0c['count']:_0x400c7d['offset']+_0x400c7d[_0x868d('0x2c')];var _0x2232d4;if(_0x184eb3>=_0x161af7){_0x184eb3=_0x161af7;_0x2232d4=0xc8;}else{_0x2232d4=0xce;}_0x59e050['status'](_0x2232d4);return _0x59e050[_0x868d('0x2d')](_0x868d('0x2e'),_0x1bfec9+'-'+_0x184eb3+'/'+_0x161af7)['json'](_0x2c3c0c);}return null;};}function patchUpdates(_0x15fa90){return function(_0x453685){try{jsonpatch[_0x868d('0x2f')](_0x453685,_0x15fa90,!![]);}catch(_0x41dba2){return BPromise[_0x868d('0x30')](_0x41dba2);}return _0x453685[_0x868d('0x31')]();};}function saveUpdates(_0x3d96d6,_0x2e1152){return function(_0x31f1be){if(_0x31f1be){return _0x31f1be[_0x868d('0x32')](_0x3d96d6)[_0x868d('0x1c')](function(_0x26a720){return _0x26a720;});}return null;};}function removeEntity(_0x34b8a2,_0x4d83d0){return function(_0x22bfec){if(_0x22bfec){return _0x22bfec[_0x868d('0x33')]()['then'](function(){var _0x5d196d=_0x22bfec[_0x868d('0x34')]({'plain':!![]});var _0x50d0c1=_0x868d('0x35');return db[_0x868d('0x36')]['destroy']({'where':{'type':_0x50d0c1,'resourceId':_0x5d196d['id']}})['then'](function(){return _0x22bfec;});})['then'](function(){_0x34b8a2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e316f,_0x40b9d2){return function(_0x4a07dc){if(!_0x4a07dc){_0x4e316f['sendStatus'](0x194);}return _0x4a07dc;};}function handleError(_0x5bde1d,_0x42deaf){_0x42deaf=_0x42deaf||0x1f4;return function(_0x49e1b7){logger[_0x868d('0x22')](_0x49e1b7[_0x868d('0x37')]);if(_0x49e1b7[_0x868d('0x38')]){delete _0x49e1b7[_0x868d('0x38')];}_0x5bde1d['status'](_0x42deaf)[_0x868d('0x39')](_0x49e1b7);};}exports[_0x868d('0x3a')]=function(_0x325c47,_0x57172c){var _0x1eeae0={'include':[{'model':db[_0x868d('0x3b')],'as':'mandatoryDispositionPause'}]},_0x509fb7={},_0x495830={'count':0x0,'rows':[]};var _0x5e3a8b=_[_0x868d('0x3c')](db[_0x868d('0x3d')][_0x868d('0x3e')],function(_0x33543b){return{'name':_0x33543b[_0x868d('0x3f')],'type':_0x33543b['type']['key']};});_0x509fb7['model']=_[_0x868d('0x3c')](_0x5e3a8b,_0x868d('0x38'));_0x509fb7[_0x868d('0x40')]=_[_0x868d('0x41')](_0x325c47[_0x868d('0x40')]);_0x509fb7['filters']=_[_0x868d('0x42')](_0x509fb7[_0x868d('0x43')],_0x509fb7[_0x868d('0x40')]);_0x1eeae0[_0x868d('0x44')]=_[_0x868d('0x42')](_0x509fb7[_0x868d('0x43')],qs['fields'](_0x325c47[_0x868d('0x40')][_0x868d('0x45')]));_0x1eeae0[_0x868d('0x44')]=_0x1eeae0['attributes'][_0x868d('0x46')]?_0x1eeae0[_0x868d('0x44')]:_0x509fb7[_0x868d('0x43')];if(!_0x325c47[_0x868d('0x40')][_0x868d('0x47')](_0x868d('0x48'))){_0x1eeae0[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x325c47[_0x868d('0x40')][_0x868d('0x2c')]);_0x1eeae0['offset']=qs[_0x868d('0x29')](_0x325c47[_0x868d('0x40')][_0x868d('0x29')]);}_0x1eeae0[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x325c47[_0x868d('0x40')][_0x868d('0x4a')]);_0x1eeae0['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x325c47[_0x868d('0x40')],_0x509fb7[_0x868d('0x4b')]),_0x5e3a8b);if(_0x325c47[_0x868d('0x40')][_0x868d('0x4d')]){_0x1eeae0[_0x868d('0x4e')]=_['merge'](_0x1eeae0['where'],{'$or':_['map'](_0x5e3a8b,function(_0x32216c){if(_0x32216c[_0x868d('0x4f')]!==_0x868d('0x50')){var _0x5e5115={};_0x5e5115[_0x32216c[_0x868d('0x38')]]={'$like':'%'+_0x325c47['query'][_0x868d('0x4d')]+'%'};return _0x5e5115;}})});}_0x1eeae0=_[_0x868d('0x51')]({},_0x1eeae0,_0x325c47[_0x868d('0x52')]);var _0x42f984={'where':_0x1eeae0[_0x868d('0x4e')]};return db[_0x868d('0x3d')][_0x868d('0x2b')](_0x42f984)[_0x868d('0x1c')](function(_0x1477dd){_0x495830[_0x868d('0x2b')]=_0x1477dd;if(_0x325c47[_0x868d('0x40')][_0x868d('0x53')]){_0x1eeae0[_0x868d('0x54')]=[{'all':!![]}];}return db[_0x868d('0x3d')]['findAll'](_0x1eeae0);})[_0x868d('0x1c')](function(_0x4857da){_0x495830['rows']=_0x4857da;return _0x495830;})[_0x868d('0x1c')](respondWithFilteredResult(_0x57172c,_0x1eeae0))[_0x868d('0x25')](handleError(_0x57172c,null));};exports[_0x868d('0x55')]=function(_0x28ce2e,_0x2c02b6){var _0x369380={'raw':![],'where':{'id':_0x28ce2e[_0x868d('0x56')]['id']},'include':[{'model':db[_0x868d('0x3b')],'as':_0x868d('0x57')}]},_0x46dd92={};_0x46dd92[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x3d')][_0x868d('0x3e')]);_0x46dd92[_0x868d('0x40')]=_[_0x868d('0x41')](_0x28ce2e[_0x868d('0x40')]);_0x46dd92['filters']=_[_0x868d('0x42')](_0x46dd92['model'],_0x46dd92[_0x868d('0x40')]);_0x369380[_0x868d('0x44')]=_['intersection'](_0x46dd92['model'],qs['fields'](_0x28ce2e[_0x868d('0x40')][_0x868d('0x45')]));_0x369380[_0x868d('0x44')]=_0x369380[_0x868d('0x44')][_0x868d('0x46')]?_0x369380[_0x868d('0x44')]:_0x46dd92[_0x868d('0x43')];if(_0x28ce2e['query'][_0x868d('0x53')]){_0x369380[_0x868d('0x54')]=[{'all':!![]}];}_0x369380=_['merge']({},_0x369380,_0x28ce2e[_0x868d('0x52')]);return db[_0x868d('0x3d')][_0x868d('0x58')](_0x369380)['then'](handleEntityNotFound(_0x2c02b6,null))['then'](respondWithResult(_0x2c02b6,null))[_0x868d('0x25')](handleError(_0x2c02b6,null));};exports[_0x868d('0x59')]=function(_0x36a6fb,_0xa30d4){return db['FaxAccount'][_0x868d('0x59')](_0x36a6fb[_0x868d('0x5a')],{})[_0x868d('0x1c')](function(_0x24a880){var _0x1a60bf=_0x36a6fb[_0x868d('0x5b')][_0x868d('0x34')]({'plain':!![]});if(!_0x1a60bf)throw new Error(_0x868d('0x5c'));if(_0x1a60bf[_0x868d('0x5d')]===_0x868d('0x5b')){var _0x540d46=_0x24a880['get']({'plain':!![]});var _0x780c45='FaxAccounts';return db[_0x868d('0x5e')][_0x868d('0x58')]({'where':{'name':_0x780c45,'userProfileId':_0x1a60bf['userProfileId']},'raw':!![]})[_0x868d('0x1c')](function(_0x439e00){if(_0x439e00&&_0x439e00[_0x868d('0x5f')]===0x0){return db[_0x868d('0x36')][_0x868d('0x59')]({'name':_0x540d46[_0x868d('0x38')],'resourceId':_0x540d46['id'],'type':_0x439e00[_0x868d('0x38')],'sectionId':_0x439e00['id']},{})[_0x868d('0x1c')](function(){return _0x24a880;});}else{return _0x24a880;}})[_0x868d('0x25')](function(_0x53682b){logger[_0x868d('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53682b);throw _0x53682b;});}return _0x24a880;})['then'](respondWithResult(_0xa30d4,0xc9))[_0x868d('0x25')](handleError(_0xa30d4,null));};exports[_0x868d('0x32')]=function(_0x40e99b,_0x2f1b30){if(_0x40e99b['body']['id']){delete _0x40e99b[_0x868d('0x5a')]['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x40e99b[_0x868d('0x56')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x868d('0x1c')](handleEntityNotFound(_0x2f1b30,null))['then'](saveUpdates(_0x40e99b[_0x868d('0x5a')],null))[_0x868d('0x1c')](respondWithResult(_0x2f1b30,null))[_0x868d('0x25')](handleError(_0x2f1b30,null));};exports['destroy']=function(_0x2b04a8,_0x90bca5){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x2b04a8[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x90bca5,null))[_0x868d('0x1c')](removeEntity(_0x90bca5,null))[_0x868d('0x25')](handleError(_0x90bca5,null));};exports[_0x868d('0x60')]=function(_0x2e78b7,_0x1aaf7f){return db[_0x868d('0x3d')]['describe']()['then'](respondWithResult(_0x1aaf7f,null))[_0x868d('0x25')](handleError(_0x1aaf7f,null));};exports[_0x868d('0x61')]=function(_0x7e1a83,_0x46db28,_0x2b5356){if(_0x7e1a83[_0x868d('0x5a')]['id']){delete _0x7e1a83['body']['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x7e1a83[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x46db28,null))[_0x868d('0x1c')](function(_0x4caded){if(_0x4caded){_0x7e1a83[_0x868d('0x5a')][_0x868d('0x62')]=_0x4caded['id'];return db[_0x868d('0x63')]['create'](_0x7e1a83['body']);}})['then'](respondWithResult(_0x46db28,null))[_0x868d('0x25')](handleError(_0x46db28,null));};exports['getDispositions']=function(_0x5abbb7,_0x47815f,_0x2fe293){var _0x2550f3={'raw':![],'where':{}};var _0x4dfc43={};var _0x11651f={'count':0x0,'rows':[]};return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x5abbb7[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x47815f,null))[_0x868d('0x1c')](function(_0x3b90e6){if(_0x3b90e6){_0x4dfc43[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x63')][_0x868d('0x3e')]);_0x4dfc43[_0x868d('0x40')]=_[_0x868d('0x41')](_0x5abbb7[_0x868d('0x40')]);_0x4dfc43[_0x868d('0x4b')]=_['intersection'](_0x4dfc43[_0x868d('0x43')],_0x4dfc43[_0x868d('0x40')]);_0x2550f3['attributes']=_[_0x868d('0x42')](_0x4dfc43[_0x868d('0x43')],qs[_0x868d('0x45')](_0x5abbb7['query'][_0x868d('0x45')]));_0x2550f3[_0x868d('0x44')]=_0x2550f3[_0x868d('0x44')]['length']?_0x2550f3[_0x868d('0x44')]:_0x4dfc43[_0x868d('0x43')];if(!_0x5abbb7[_0x868d('0x40')][_0x868d('0x47')](_0x868d('0x48'))){_0x2550f3['limit']=qs[_0x868d('0x2c')](_0x5abbb7[_0x868d('0x40')][_0x868d('0x2c')]);_0x2550f3[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x5abbb7['query'][_0x868d('0x29')]);}_0x2550f3['order']=qs[_0x868d('0x4a')](_0x5abbb7['query'][_0x868d('0x4a')]);_0x2550f3[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x5abbb7[_0x868d('0x40')],_0x4dfc43['filters']));_0x2550f3[_0x868d('0x4e')][_0x868d('0x62')]=_0x3b90e6['id'];if(_0x5abbb7['query'][_0x868d('0x4d')]){_0x2550f3[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x2550f3[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x2550f3[_0x868d('0x44')],function(_0x1b714f){var _0x5ccc02={};_0x5ccc02[_0x1b714f]={'$like':'%'+_0x5abbb7[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x5ccc02;})});}_0x2550f3=_[_0x868d('0x51')]({},_0x2550f3,_0x5abbb7[_0x868d('0x52')]);return db[_0x868d('0x63')][_0x868d('0x2b')]({'where':_0x2550f3[_0x868d('0x4e')]})['then'](function(_0x3965ad){_0x11651f['count']=_0x3965ad;if(_0x5abbb7[_0x868d('0x40')][_0x868d('0x53')]){_0x2550f3['include']=[{'all':!![]}];}return db[_0x868d('0x63')][_0x868d('0x65')](_0x2550f3);})[_0x868d('0x1c')](function(_0x2744d5){_0x11651f[_0x868d('0x66')]=_0x2744d5;return _0x11651f;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x47815f,_0x2550f3))['catch'](handleError(_0x47815f,null));};exports[_0x868d('0x67')]=function(_0x18b990,_0x55682f,_0x254bc7){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x18b990[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x55682f,null))['then'](function(_0x435012){if(_0x435012){return _0x435012[_0x868d('0x67')](_0x18b990['query']['ids']);}})['then'](respondWithStatusCode(_0x55682f,null))[_0x868d('0x25')](handleError(_0x55682f,null));};exports[_0x868d('0x68')]=function(_0x37db87,_0x45cec5,_0x47c3eb){if(_0x37db87[_0x868d('0x5a')]['id']){delete _0x37db87[_0x868d('0x5a')]['id'];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0x37db87['params']['id']}})['then'](handleEntityNotFound(_0x45cec5,null))[_0x868d('0x1c')](function(_0x1e431a){if(_0x1e431a){_0x37db87['body'][_0x868d('0x62')]=_0x1e431a['id'];return db[_0x868d('0x69')][_0x868d('0x59')](_0x37db87[_0x868d('0x5a')]);}})[_0x868d('0x1c')](respondWithResult(_0x45cec5,null))[_0x868d('0x25')](handleError(_0x45cec5,null));};exports[_0x868d('0x6a')]=function(_0x3fd977,_0x1b15fa,_0x2fa573){var _0x309a92={'raw':![],'where':{}};var _0x25f429={};var _0x24e1b6={'count':0x0,'rows':[]};return db['FaxAccount'][_0x868d('0x64')]({'where':{'id':_0x3fd977[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x1b15fa,null))['then'](function(_0x574c93){if(_0x574c93){_0x25f429[_0x868d('0x43')]=_[_0x868d('0x41')](db['CannedAnswer'][_0x868d('0x3e')]);_0x25f429[_0x868d('0x40')]=_[_0x868d('0x41')](_0x3fd977[_0x868d('0x40')]);_0x25f429[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x25f429[_0x868d('0x43')],_0x25f429[_0x868d('0x40')]);_0x309a92[_0x868d('0x44')]=_[_0x868d('0x42')](_0x25f429[_0x868d('0x43')],qs[_0x868d('0x45')](_0x3fd977[_0x868d('0x40')][_0x868d('0x45')]));_0x309a92['attributes']=_0x309a92[_0x868d('0x44')][_0x868d('0x46')]?_0x309a92[_0x868d('0x44')]:_0x25f429['model'];if(!_0x3fd977['query'][_0x868d('0x47')]('nolimit')){_0x309a92['limit']=qs[_0x868d('0x2c')](_0x3fd977[_0x868d('0x40')][_0x868d('0x2c')]);_0x309a92[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x3fd977['query'][_0x868d('0x29')]);}_0x309a92[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x3fd977[_0x868d('0x40')]['sort']);_0x309a92['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x3fd977[_0x868d('0x40')],_0x25f429[_0x868d('0x4b')]));_0x309a92[_0x868d('0x4e')][_0x868d('0x62')]=_0x574c93['id'];if(_0x3fd977[_0x868d('0x40')]['filter']){_0x309a92[_0x868d('0x4e')]=_['merge'](_0x309a92[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x309a92['attributes'],function(_0x56b238){var _0x391971={};_0x391971[_0x56b238]={'$like':'%'+_0x3fd977[_0x868d('0x40')]['filter']+'%'};return _0x391971;})});}_0x309a92=_['merge']({},_0x309a92,_0x3fd977[_0x868d('0x52')]);return db['CannedAnswer'][_0x868d('0x2b')]({'where':_0x309a92[_0x868d('0x4e')]})[_0x868d('0x1c')](function(_0x115418){_0x24e1b6[_0x868d('0x2b')]=_0x115418;if(_0x3fd977['query'][_0x868d('0x53')]){_0x309a92[_0x868d('0x54')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x309a92);})['then'](function(_0x1b4c49){_0x24e1b6['rows']=_0x1b4c49;return _0x24e1b6;});}})['then'](respondWithFilteredResult(_0x1b15fa,_0x309a92))[_0x868d('0x25')](handleError(_0x1b15fa,null));};exports['removeAnswers']=function(_0x2b93a6,_0x1dd267,_0x2fa833){return db['FaxAccount'][_0x868d('0x58')]({'where':{'id':_0x2b93a6[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x1dd267,null))['then'](function(_0xb15d76){if(_0xb15d76){return _0xb15d76[_0x868d('0x6b')](_0x2b93a6['query'][_0x868d('0x6c')]);}})[_0x868d('0x1c')](respondWithStatusCode(_0x1dd267,null))[_0x868d('0x25')](handleError(_0x1dd267,null));};exports[_0x868d('0x6d')]=function(_0x7a6c08,_0x5cd49e,_0x5f4f10){return db[_0x868d('0x6e')][_0x868d('0x58')]({'where':{'id':_0x7a6c08[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x5cd49e,null))['then'](function(_0x325b78){if(_0x325b78){return _0x325b78['addInteraction'](_0x7a6c08[_0x868d('0x5a')]['ids'],_['omit'](_0x7a6c08[_0x868d('0x5a')],[_0x868d('0x6c'),'id'])||{});}})[_0x868d('0x1c')](respondWithResult(_0x5cd49e,null))[_0x868d('0x25')](handleError(_0x5cd49e,null));};exports['getInteractions']=function(_0x68b807,_0x5ba9f7,_0x146da8){var _0x159a44={'raw':![],'where':{}};var _0x56f7f2={};var _0x3f6e43={'count':0x0,'rows':[]};return db[_0x868d('0x3d')]['findOne']({'where':{'id':_0x68b807['params']['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x5ba9f7,null))[_0x868d('0x1c')](function(_0x1724dd){if(_0x1724dd){_0x56f7f2['model']=_['keys'](db[_0x868d('0x6e')][_0x868d('0x3e')]);_0x56f7f2[_0x868d('0x40')]=_[_0x868d('0x41')](_0x68b807[_0x868d('0x40')]);_0x56f7f2[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x56f7f2[_0x868d('0x43')],_0x56f7f2[_0x868d('0x40')]);_0x159a44[_0x868d('0x44')]=_[_0x868d('0x42')](_0x56f7f2[_0x868d('0x43')],qs['fields'](_0x68b807[_0x868d('0x40')][_0x868d('0x45')]));_0x159a44[_0x868d('0x44')]=_0x159a44[_0x868d('0x44')][_0x868d('0x46')]?_0x159a44[_0x868d('0x44')]:_0x56f7f2[_0x868d('0x43')];if(!_0x68b807[_0x868d('0x40')]['hasOwnProperty'](_0x868d('0x48'))){_0x159a44[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x68b807[_0x868d('0x40')][_0x868d('0x2c')]);_0x159a44[_0x868d('0x29')]=qs['offset'](_0x68b807[_0x868d('0x40')][_0x868d('0x29')]);}_0x159a44[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x68b807[_0x868d('0x40')][_0x868d('0x4a')]);_0x159a44[_0x868d('0x4e')]=qs['filters'](_[_0x868d('0x4c')](_0x68b807[_0x868d('0x40')],_0x56f7f2[_0x868d('0x4b')]));_0x159a44[_0x868d('0x4e')][_0x868d('0x62')]=_0x1724dd['id'];if(_0x68b807[_0x868d('0x40')][_0x868d('0x4d')]){_0x159a44[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x159a44[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x159a44[_0x868d('0x44')],function(_0x30462b){var _0x6a867c={};_0x6a867c[_0x30462b]={'$like':'%'+_0x68b807[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x6a867c;})});}_0x159a44=_['merge']({},_0x159a44,_0x68b807['options']);return db[_0x868d('0x6e')]['count']({'where':_0x159a44['where']})[_0x868d('0x1c')](function(_0x562eb2){_0x3f6e43['count']=_0x562eb2;if(_0x68b807[_0x868d('0x40')][_0x868d('0x53')]){_0x159a44['include']=[{'model':db[_0x868d('0x6f')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x868d('0x70'),'attributes':[_0x868d('0x38'),_0x868d('0x71'),_0x868d('0x72')],'required':![]},{'model':db['Tag'],'as':_0x868d('0x73'),'attributes':['id',_0x868d('0x38'),_0x868d('0x74')],'where':_0x68b807['query'][_0x868d('0x75')]?{'id':_0x68b807[_0x868d('0x40')]['tag']}:undefined,'required':_0x68b807[_0x868d('0x40')]['tag']?!![]:![]}];}return db['FaxInteraction'][_0x868d('0x65')](_0x159a44);})[_0x868d('0x1c')](function(_0xf2bb85){_0x3f6e43['rows']=_0xf2bb85;return _0x3f6e43;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x5ba9f7,_0x159a44))[_0x868d('0x25')](handleError(_0x5ba9f7,null));};exports[_0x868d('0x76')]=function(_0x11440a,_0x5e59ec,_0x293773){return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x11440a[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x5e59ec,null))['then'](function(_0x1a5181){if(_0x1a5181){return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x2d2624){return db[_0x868d('0x79')][_0x868d('0x33')]({'where':{'FaxAccountId':_0x11440a[_0x868d('0x56')]['id']},'transaction':_0x2d2624})[_0x868d('0x1c')](function(_0x5a7510){var _0x3078a5=_[_0x868d('0x3c')](_0x11440a[_0x868d('0x5a')],function(_0x5b90be){_0x5b90be[_0x868d('0x62')]=_0x11440a['params']['id'];return _0x5b90be;});return db[_0x868d('0x79')]['bulkCreate'](_0x3078a5,{'transaction':_0x2d2624});});})[_0x868d('0x1c')](function(){return db[_0x868d('0x79')][_0x868d('0x7a')]({'where':{'FaxAccountId':_0x11440a[_0x868d('0x56')]['id']},'order':_0x868d('0x7b')});});}})[_0x868d('0x1c')](respondWithResult(_0x5e59ec,null))['catch'](handleError(_0x5e59ec,null));};exports['getApplications']=function(_0x389170,_0x1f97ab,_0x133072){var _0x192a58={};var _0x114960={};var _0x229ef0;var _0x48004b;return db['FaxAccount']['findOne']({'where':{'id':_0x389170[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x1f97ab,null))['then'](function(_0x24be7d){if(_0x24be7d){_0x229ef0=_0x24be7d;_0x114960['model']=_['keys'](db[_0x868d('0x79')]['rawAttributes']);_0x114960[_0x868d('0x40')]=_[_0x868d('0x41')](_0x389170[_0x868d('0x40')]);_0x114960[_0x868d('0x4b')]=_[_0x868d('0x42')](_0x114960[_0x868d('0x43')],_0x114960[_0x868d('0x40')]);_0x192a58[_0x868d('0x44')]=_[_0x868d('0x42')](_0x114960['model'],qs[_0x868d('0x45')](_0x389170[_0x868d('0x40')]['fields']));_0x192a58['attributes']=_0x192a58[_0x868d('0x44')][_0x868d('0x46')]?_0x192a58[_0x868d('0x44')]:_0x114960[_0x868d('0x43')];_0x192a58['order']=qs[_0x868d('0x4a')](_0x389170[_0x868d('0x40')][_0x868d('0x4a')]);_0x192a58[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x389170[_0x868d('0x40')],_0x114960[_0x868d('0x4b')]));if(_0x389170['query'][_0x868d('0x4d')]){_0x192a58['where']=_[_0x868d('0x51')](_0x192a58[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x192a58[_0x868d('0x44')],function(_0xf6c63d){var _0x44378d={};_0x44378d[_0xf6c63d]={'$like':'%'+_0x389170['query']['filter']+'%'};return _0x44378d;})});}_0x192a58=_[_0x868d('0x51')]({},_0x192a58,_0x389170[_0x868d('0x52')]);return _0x229ef0[_0x868d('0x7c')](_0x192a58);}})[_0x868d('0x1c')](function(_0x5d6e1f){if(_0x5d6e1f){_0x48004b=_0x5d6e1f[_0x868d('0x46')];if(!_0x389170['query'][_0x868d('0x47')](_0x868d('0x48'))){_0x192a58[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x389170[_0x868d('0x40')][_0x868d('0x2c')]);_0x192a58[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x389170['query'][_0x868d('0x29')]);}return _0x229ef0[_0x868d('0x7c')](_0x192a58);}})[_0x868d('0x1c')](function(_0x572adf){if(_0x572adf){return _0x572adf?{'count':_0x48004b,'rows':_0x572adf}:null;}})['then'](respondWithResult(_0x1f97ab,null))['catch'](handleError(_0x1f97ab,null));};function Extension(_0x37ee5e,_0x5c3d48,_0x4b481c,_0xeaf25c){this['context']=_0x868d('0x7d');this[_0x868d('0x7e')]=_0x37ee5e['localstationid'];this[_0x868d('0x7f')]=_0xeaf25c;this['type']=_0x868d('0x80');this[_0x868d('0x81')]=_0x868d('0x82');this[_0x868d('0x62')]=_0x37ee5e['id'];this[_0x868d('0x7b')]=_0x5c3d48;this['appdata']=_0x4b481c;}function createExtensionsReciveFax(_0x4e6fd4){var _0x47fbba=0x1;var _0x371432=[];_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,'',_0x868d('0x84')));_0x47fbba+=0x1;_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,_0x868d('0x85'),_0x868d('0x86')));_0x47fbba+=0x1;for(var _0x43f5da in _0x4e6fd4){if(_0x4e6fd4['hasOwnProperty'](_0x43f5da)&&(_0x43f5da===_0x868d('0x87')||_0x43f5da===_0x868d('0x88')||_0x43f5da==='gateway'||_0x43f5da===_0x868d('0x89')||_0x43f5da===_0x868d('0x8a')||_0x43f5da===_0x868d('0x8b')||_0x43f5da===_0x868d('0x8c')||_0x43f5da==='modem'||_0x43f5da===_0x868d('0x8d'))){_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,_0x868d('0x8e')+_0x43f5da+')='+_0x4e6fd4[_0x43f5da],_0x868d('0x86')));_0x47fbba+=0x1;}}_0x371432[_0x868d('0x83')](new Extension(_0x4e6fd4,_0x47fbba,'6',_0x868d('0x8f')));_0x47fbba+=0x1;_0x371432['push'](new Extension(_0x4e6fd4,_0x47fbba,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0x868d('0x90')));_0x47fbba=0x0;return _0x371432;}exports[_0x868d('0x91')]=function(_0x226563,_0x22f5d3,_0x1ffb74){var _0x43cee7;return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x224a2d){return db[_0x868d('0x3d')][_0x868d('0x59')](_0x226563[_0x868d('0x5a')],{'transaction':_0x224a2d})[_0x868d('0x1c')](function(_0x58a7f5){_0x43cee7=_0x58a7f5['get']({'plain':!![]});return db['VoiceExtension'][_0x868d('0x92')](createExtensionsReciveFax(_0x43cee7),{'transaction':_0x224a2d});});})['then'](function(){return _0x43cee7;})[_0x868d('0x1c')](respondWithResult(_0x22f5d3,null))['catch'](handleError(_0x22f5d3,null));};exports[_0x868d('0x93')]=function(_0x14ceb8,_0x4bd3c1,_0xd89acf){var _0x531aad;return db[_0x868d('0x77')][_0x868d('0x78')](function(_0x2e009e){return db['FaxAccount'][_0x868d('0x32')](_0x14ceb8[_0x868d('0x5a')],{'where':{'id':_0x14ceb8[_0x868d('0x5a')]['id']},'transaction':_0x2e009e})[_0x868d('0x1c')](function(_0x28463d){return db[_0x868d('0x94')][_0x868d('0x33')]({'where':{'FaxAccountId':_0x14ceb8['body']['id']},'transaction':_0x2e009e})[_0x868d('0x1c')](function(_0x283ad5){return db[_0x868d('0x94')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0x14ceb8[_0x868d('0x5a')],[_0x868d('0x95'),'key',_0x868d('0x96'),'updatedAt',_0x868d('0x97'),_0x868d('0x98')])),{'transaction':_0x2e009e});});});})[_0x868d('0x1c')](function(){return db[_0x868d('0x3d')][_0x868d('0x99')](_0x14ceb8[_0x868d('0x5a')]['id']);})['then'](respondWithResult(_0x4bd3c1,null))[_0x868d('0x25')](handleError(_0x4bd3c1,null));};exports[_0x868d('0x9a')]=function(_0x445abc,_0x1046d6,_0x44eeca){var _0x506d71={'raw':!![],'where':{}};var _0x15f434={};var _0x5a280c={'count':0x0,'rows':[]};return db[_0x868d('0x3d')]['findOne']({'where':{'id':_0x445abc[_0x868d('0x56')]['id']}})['then'](handleEntityNotFound(_0x1046d6,null))['then'](function(_0xf1cb5a){if(_0xf1cb5a){_0x15f434[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0x9b')][_0x868d('0x3e')]);_0x15f434[_0x868d('0x40')]=_[_0x868d('0x41')](_0x445abc[_0x868d('0x40')]);_0x15f434['filters']=_['intersection'](_0x15f434[_0x868d('0x43')],_0x15f434[_0x868d('0x40')]);_0x506d71[_0x868d('0x44')]=_[_0x868d('0x42')](_0x15f434[_0x868d('0x43')],qs[_0x868d('0x45')](_0x445abc[_0x868d('0x40')][_0x868d('0x45')]));_0x506d71[_0x868d('0x44')]=_0x506d71['attributes'][_0x868d('0x46')]?_0x506d71['attributes']:_0x15f434[_0x868d('0x43')];if(!_0x445abc[_0x868d('0x40')]['hasOwnProperty']('nolimit')){_0x506d71['limit']=qs['limit'](_0x445abc[_0x868d('0x40')][_0x868d('0x2c')]);_0x506d71[_0x868d('0x29')]=qs[_0x868d('0x29')](_0x445abc['query'][_0x868d('0x29')]);}_0x506d71[_0x868d('0x49')]=qs[_0x868d('0x4a')](_0x445abc[_0x868d('0x40')]['sort']);_0x506d71['where']=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x445abc[_0x868d('0x40')],_0x15f434[_0x868d('0x4b')]));_0x506d71['where']['FaxAccountId']=_0xf1cb5a['id'];if(_0x445abc[_0x868d('0x40')]['filter']){_0x506d71[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x506d71['where'],{'$or':_[_0x868d('0x3c')](_0x506d71['attributes'],function(_0x9edc10){var _0x1dd880={};_0x1dd880[_0x9edc10]={'$like':'%'+_0x445abc[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x1dd880;})});}if(_0x445abc['query']['$gte']){var _0x218ea6=_0x445abc[_0x868d('0x40')][_0x868d('0x9c')][_0x868d('0x9d')](',');var _0x398475={};_0x398475[_0x218ea6[0x0]]={'$gte':moment(_0x218ea6[0x1])[_0x868d('0x9e')](_0x868d('0x9f'))};_0x506d71[_0x868d('0x4e')]=_[_0x868d('0x51')](_0x506d71['where'],_0x398475);}_0x506d71=_['merge']({},_0x506d71,_0x445abc['options']);return db[_0x868d('0x9b')]['count']({'where':_0x506d71['where']})['then'](function(_0x5bc9d0){_0x5a280c[_0x868d('0x2b')]=_0x5bc9d0;if(_0x445abc['query']['includeAll']){_0x506d71[_0x868d('0x54')]=[{'all':!![]}];}return db[_0x868d('0x9b')][_0x868d('0x65')](_0x506d71);})['then'](function(_0x2d7829){_0x5a280c[_0x868d('0x66')]=_0x2d7829;return _0x5a280c;});}})[_0x868d('0x1c')](respondWithFilteredResult(_0x1046d6,_0x506d71))[_0x868d('0x25')](handleError(_0x1046d6,null));};exports['send']=function(_0xb3aee2,_0x32f651,_0x4f6eca){var _0x2b4be6,_0x50ac56={},_0x9cfe8;if(_0xb3aee2[_0x868d('0x5a')]['to']){_0x9cfe8=_0xb3aee2['body']['to'][0x0];}return db[_0x868d('0x3d')][_0x868d('0x58')]({'where':{'id':_0xb3aee2[_0x868d('0x56')]['id']},'include':[{'model':db[_0x868d('0xa0')],'as':'List','include':[{'model':db[_0x868d('0x6f')],'as':'Contacts','where':{'fax':_0x9cfe8},'limit':0x1,'order':[[_0x868d('0xa1'),_0x868d('0xa2')]]}]}]})['then'](handleEntityNotFound(_0x32f651,null))[_0x868d('0x1c')](function(_0x3c3751){_0x2b4be6=_0x3c3751;if(_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')]&&_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x868d('0x46')]){for(var _0x12e22c=0x0;_0x12e22c<_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')]['length'];_0x12e22c+=0x1){_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c]={'filename':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c][_0x868d('0x38')],'id':_0xb3aee2[_0x868d('0x5a')]['attachments'][_0x12e22c]['id'],'path':path[_0x868d('0xa4')](config[_0x868d('0xa5')],'server/files/attachments',_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][_0x12e22c][_0x868d('0xa6')])};}}return respondWithRpcPromise(_0x868d('0xa7'),_0x868d('0xa7'),{'FaxAccountId':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x56')]['id'])?undefined:_0xb3aee2[_0x868d('0x56')]['id'],'path':_[_0x868d('0xa8')](_0xb3aee2['body'][_0x868d('0xa3')][0x0]['path'])?undefined:_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xa9')],'fax':_['isNil'](_0xb3aee2[_0x868d('0x5a')]['to'][0x0])?undefined:_0xb3aee2['body']['to'][0x0]},client9002);})['then'](function(){if(_0x2b4be6){if(_['isNil'](_0xb3aee2[_0x868d('0x5a')][_0x868d('0xaa')])){_0xb3aee2[_0x868d('0x5a')][_0x868d('0xaa')]=util['format'](_0x868d('0xab'),_0x2b4be6[_0x868d('0x38')],_0x2b4be6['fax']);}if(_0x2b4be6['List']){if(_0x2b4be6[_0x868d('0xac')]['Contacts'][_0x868d('0x46')]){return _0x2b4be6[_0x868d('0xac')]['Contacts'][0x0];}else{return db[_0x868d('0x6f')][_0x868d('0x59')](_[_0x868d('0x16')](_0xb3aee2[_0x868d('0x5a')],{'firstName':_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'phone':_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'fax':_0xb3aee2['body']['to'][0x0],'ListId':_0x2b4be6[_0x868d('0x98')]}));}}else{throw new Error(_0x868d('0xad'));}}else{throw new Error(_0x868d('0xae'));}})[_0x868d('0x1c')](function(_0x5ee136){if(_0x5ee136){return db['FaxInteraction']['find']({'where':{'ContactId':_0x5ee136['id'],'closed':![],'FaxAccountId':_0x2b4be6['id']}})[_0x868d('0x1c')](function(_0x184be0){if(_0x184be0){return[_0x184be0,![]];}return db[_0x868d('0x6e')][_0x868d('0x59')]({'UserId':_0xb3aee2[_0x868d('0x5b')]['id'],'ContactId':_0x5ee136['id'],'FaxAccountId':_0x2b4be6['id'],'fax':_0xb3aee2['body']['to'][0x0],'firstMsgDirection':_0x868d('0xaf'),'Messages':[_[_0x868d('0x51')](_0xb3aee2[_0x868d('0x5a')],{'read':![],'body':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xb0')],'FaxAccountId':_0x2b4be6['id'],'UserId':_0xb3aee2[_0x868d('0x5b')]['id'],'ContactId':_0x5ee136['id'],'AttachmentId':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x868d('0x9b')],'as':_0x868d('0xb1')}]})[_0x868d('0x1c')](function(_0x20b4fd){return[_0x20b4fd,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x868d('0xb2')](function(_0xcc9a7e,_0x2a898c){if(_0x2a898c){return _0xcc9a7e;}return db[_0x868d('0x9b')][_0x868d('0x59')]({'direction':_0x868d('0xaf'),'read':![],'body':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['filename'],'FaxAccountId':_0x2b4be6['id'],'FaxInteractionId':_0xcc9a7e['id'],'UserId':_0xb3aee2['user']['id'],'ContactId':_0xcc9a7e[_0x868d('0xb3')],'AttachmentId':_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0]['id']})[_0x868d('0x1c')](function(_0x2fef86){_0xcc9a7e[_0x868d('0xb4')][_0x868d('0xb1')]=[];_0xcc9a7e['dataValues'][_0x868d('0xb1')][_0x868d('0x83')](_0x2fef86['dataValues']);return _0xcc9a7e;});})[_0x868d('0x1c')](function(_0x38260c){respondWithRpcPromise(_0x868d('0xb5'),_0x868d('0xb5'),{'FaxAccountId':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x56')]['id'])?undefined:_0xb3aee2[_0x868d('0x56')]['id'],'path':_['isNil'](_0xb3aee2[_0x868d('0x5a')]['attachments'][0x0][_0x868d('0xa9')])?undefined:_0xb3aee2[_0x868d('0x5a')][_0x868d('0xa3')][0x0][_0x868d('0xa9')],'fax':_[_0x868d('0xa8')](_0xb3aee2[_0x868d('0x5a')]['to'][0x0])?undefined:_0xb3aee2[_0x868d('0x5a')]['to'][0x0],'AttachmentId':_0xb3aee2['body'][_0x868d('0xa3')][0x0]['id']},client9002)[_0x868d('0x1c')](function(_0x30a6e){logger[_0x868d('0x1d')]('SendFaxRpc,\x20%s',_0x30a6e);})[_0x868d('0x25')](function(_0x4b05ac){logger[_0x868d('0x1d')](_0x868d('0xb6'),_0x4b05ac);});return _0x38260c;})[_0x868d('0x1c')](respondWithResult(_0x32f651,null))['catch'](handleError(_0x32f651,null));};exports[_0x868d('0xb7')]=function(_0xad50cc,_0x2eb886,_0x57015b){return db['FaxAccount'][_0x868d('0x58')]({'where':{'id':_0xad50cc[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x2eb886,null))['then'](function(_0xd70f22){if(_0xd70f22){return _0xd70f22[_0x868d('0xb7')](_0xad50cc['body'][_0x868d('0x6c')],_[_0x868d('0xb8')](_0xad50cc[_0x868d('0x5a')],[_0x868d('0x6c'),'id'])||{})['spread'](function(_0xadbc26){for(var _0x51df07=0x0;_0x51df07<_0xad50cc[_0x868d('0x5a')][_0x868d('0x6c')]['length'];_0x51df07+=0x1){socket[_0x868d('0xb9')]('userFaxAccount:save',{'UserId':Number(_0xad50cc[_0x868d('0x5a')]['ids'][_0x51df07]),'FaxAccountId':Number(_0xad50cc[_0x868d('0x56')]['id'])});}return _0xadbc26;});}})['then'](respondWithResult(_0x2eb886,null))[_0x868d('0x25')](handleError(_0x2eb886,null));};exports[_0x868d('0xba')]=function(_0x16ed05,_0x3ef261,_0x41c698){return db[_0x868d('0x3d')]['find']({'where':{'id':_0x16ed05['params']['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x3ef261,null))['then'](function(_0x13e431){if(_0x13e431){return _0x13e431[_0x868d('0xba')](_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')])['then'](function(){if(_[_0x868d('0xbb')](_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')])){for(var _0x237855=0x0;_0x237855<_0x16ed05[_0x868d('0x40')][_0x868d('0x6c')][_0x868d('0x46')];_0x237855+=0x1){socket[_0x868d('0xb9')](_0x868d('0xbc'),{'UserId':Number(_0x16ed05[_0x868d('0x40')]['ids'][_0x237855]),'FaxAccountId':Number(_0x16ed05['params']['id'])});}}else{socket[_0x868d('0xb9')](_0x868d('0xbc'),{'UserId':Number(_0x16ed05[_0x868d('0x40')]['ids']),'FaxAccountId':Number(_0x16ed05[_0x868d('0x56')]['id'])});}});}})[_0x868d('0x1c')](respondWithStatusCode(_0x3ef261,null))[_0x868d('0x25')](handleError(_0x3ef261,null));};exports['getAgents']=function(_0x2df8ce,_0x41ef86,_0xa2d1ca){var _0x4b50ea={};var _0xffaa25={};var _0xda7ed2;var _0x2c1b74;return db[_0x868d('0x3d')][_0x868d('0x64')]({'where':{'id':_0x2df8ce[_0x868d('0x56')]['id']}})[_0x868d('0x1c')](handleEntityNotFound(_0x41ef86,null))[_0x868d('0x1c')](function(_0x2deb13){if(_0x2deb13){_0xda7ed2=_0x2deb13;_0xffaa25[_0x868d('0x43')]=_[_0x868d('0x41')](db[_0x868d('0xbd')][_0x868d('0x3e')]);_0xffaa25[_0x868d('0x40')]=_['keys'](_0x2df8ce[_0x868d('0x40')]);_0xffaa25[_0x868d('0x4b')]=_['intersection'](_0xffaa25[_0x868d('0x43')],_0xffaa25[_0x868d('0x40')]);_0x4b50ea[_0x868d('0x44')]=_[_0x868d('0x42')](_0xffaa25[_0x868d('0x43')],qs['fields'](_0x2df8ce['query'][_0x868d('0x45')]));_0x4b50ea[_0x868d('0x44')]=_0x4b50ea[_0x868d('0x44')]['length']?_0x4b50ea[_0x868d('0x44')]:_0xffaa25['model'];_0x4b50ea['order']=qs['sort'](_0x2df8ce[_0x868d('0x40')]['sort']);_0x4b50ea[_0x868d('0x4e')]=qs[_0x868d('0x4b')](_[_0x868d('0x4c')](_0x2df8ce[_0x868d('0x40')],_0xffaa25[_0x868d('0x4b')]));if(_0x2df8ce[_0x868d('0x40')][_0x868d('0x4d')]){_0x4b50ea[_0x868d('0x4e')]=_['merge'](_0x4b50ea[_0x868d('0x4e')],{'$or':_[_0x868d('0x3c')](_0x4b50ea['attributes'],function(_0x4f32cd){var _0x125461={};_0x125461[_0x4f32cd]={'$like':'%'+_0x2df8ce[_0x868d('0x40')][_0x868d('0x4d')]+'%'};return _0x125461;})});}_0x4b50ea=_[_0x868d('0x51')]({},_0x4b50ea,_0x2df8ce[_0x868d('0x52')]);return _0xda7ed2[_0x868d('0xbe')](_0x4b50ea);}})[_0x868d('0x1c')](function(_0x36317d){if(_0x36317d){_0x2c1b74=_0x36317d[_0x868d('0x46')];if(!_0x2df8ce[_0x868d('0x40')][_0x868d('0x47')]('nolimit')){_0x4b50ea[_0x868d('0x2c')]=qs[_0x868d('0x2c')](_0x2df8ce[_0x868d('0x40')]['limit']);_0x4b50ea['offset']=qs[_0x868d('0x29')](_0x2df8ce['query'][_0x868d('0x29')]);}return _0xda7ed2['getAgents'](_0x4b50ea);}})[_0x868d('0x1c')](function(_0x2178fb){if(_0x2178fb){return _0x2178fb?{'count':_0x2c1b74,'rows':_0x2178fb}:null;}})[_0x868d('0x1c')](respondWithResult(_0x41ef86,null))[_0x868d('0x25')](handleError(_0x41ef86,null));};
\ No newline at end of file
+var _0x4854=['removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','offset','undefined','count','limit','set','json','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','length','order','sort','where','pick','filters','VIRTUAL','filter','merge','options','includeAll','findAll','rows','show','params','FaxAccount','fields','include','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','Disposition','hasOwnProperty','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','findOne','nolimit','Contact','User','Owner','fullname','internal','Tag','Tags','tag','transaction','sequelize','Transaction','ISOLATION_LEVELS','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','push','Answer','Set','ecm','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Contacts','CmContact','Send\x20Fax\x20failed','out','filename','Messages','spread','ContactId','dataValues','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save'];(function(_0x4423ac,_0xcd668){var _0x2930fa=function(_0x11bdba){while(--_0x11bdba){_0x4423ac['push'](_0x4423ac['shift']());}};_0x2930fa(++_0xcd668);}(_0x4854,0xcd));var _0x4485=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x4854[_0x1c5142];return _0x1268cb;};'use strict';var emlformat=require(_0x4485('0x0'));var rimraf=require(_0x4485('0x1'));var zipdir=require(_0x4485('0x2'));var jsonpatch=require(_0x4485('0x3'));var rp=require('request-promise');var moment=require(_0x4485('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4485('0x5'));var util=require(_0x4485('0x6'));var path=require(_0x4485('0x7'));var sox=require('sox');var csv=require(_0x4485('0x8'));var ejs=require(_0x4485('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4485('0xa'));var squel=require(_0x4485('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4485('0xc'));var toCsv=require(_0x4485('0x8'));var querystring=require(_0x4485('0xd'));var Papa=require(_0x4485('0xe'));var Redis=require(_0x4485('0xf'));var authService=require(_0x4485('0x10'));var qs=require(_0x4485('0x11'));var as=require(_0x4485('0x12'));var hardwareService=require(_0x4485('0x13'));var logger=require(_0x4485('0x14'))(_0x4485('0x15'));var utils=require(_0x4485('0x16'));var config=require(_0x4485('0x17'));var licenseUtil=require(_0x4485('0x18'));var db=require('../../mysqldb')['db'];config[_0x4485('0x19')]=_['defaults'](config[_0x4485('0x19')],{'host':_0x4485('0x1a'),'port':0x18eb});var socket=require(_0x4485('0x1b'))(new Redis(config[_0x4485('0x19')]));require(_0x4485('0x1c'))[_0x4485('0x1d')](socket);var jayson=require(_0x4485('0x1e'));var client=jayson[_0x4485('0x1f')][_0x4485('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x4485('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4c8278,_0x1249d4,_0x4ac9f5,_0x19e8a1){return new BPromise(function(_0x17fe8f,_0x47784d){var _0x5b2167=_0x19e8a1||client;return _0x5b2167[_0x4485('0x21')](_0x4c8278,_0x4ac9f5)[_0x4485('0x22')](function(_0x53dfb9){logger[_0x4485('0x23')](_0x4485('0x24'),_0x1249d4,_0x4485('0x25'));logger[_0x4485('0x26')](_0x4485('0x27'),_0x1249d4,_0x4485('0x25'),JSON['stringify'](_0x53dfb9));if(_0x53dfb9[_0x4485('0x28')]){if(_0x53dfb9['error'][_0x4485('0x29')]===0x1f4){logger[_0x4485('0x28')]('FaxAccount,\x20%s,\x20%s',_0x1249d4,_0x53dfb9[_0x4485('0x28')][_0x4485('0x2a')]);return _0x47784d(_0x53dfb9[_0x4485('0x28')][_0x4485('0x2a')]);}logger['error'](_0x4485('0x24'),_0x1249d4,_0x53dfb9[_0x4485('0x28')]['message']);return _0x17fe8f(_0x53dfb9['error']['message']);}else{logger['info'](_0x4485('0x24'),_0x1249d4,'request\x20sent');_0x17fe8f(_0x53dfb9[_0x4485('0x2b')]['message']);}})['catch'](function(_0x4e12b1){logger[_0x4485('0x28')](_0x4485('0x24'),_0x1249d4,_0x4e12b1);_0x47784d(_0x4e12b1);});});}function respondWithStatusCode(_0x177a3f,_0x12557f){_0x12557f=_0x12557f||0xcc;return function(_0x43a651){if(_0x43a651){return _0x177a3f[_0x4485('0x2c')](_0x12557f);}return _0x177a3f[_0x4485('0x2d')](_0x12557f)[_0x4485('0x2e')]();};}function respondWithResult(_0xf15464,_0x37f92d){_0x37f92d=_0x37f92d||0xc8;return function(_0x44a93d){if(_0x44a93d){return _0xf15464['status'](_0x37f92d)['json'](_0x44a93d);}};}function respondWithFilteredResult(_0x5b727a,_0x2988fe){return function(_0x5b4ae3){if(_0x5b4ae3){var _0x39462f=typeof _0x2988fe[_0x4485('0x2f')]===_0x4485('0x30')&&typeof _0x2988fe['limit']==='undefined';var _0xa9dd55=_0x5b4ae3[_0x4485('0x31')];var _0x52f08c=_0x39462f?0x0:_0x2988fe[_0x4485('0x2f')];var _0x3c21c9=_0x39462f?_0x5b4ae3[_0x4485('0x31')]:_0x2988fe[_0x4485('0x2f')]+_0x2988fe[_0x4485('0x32')];var _0x34f7b4;if(_0x3c21c9>=_0xa9dd55){_0x3c21c9=_0xa9dd55;_0x34f7b4=0xc8;}else{_0x34f7b4=0xce;}_0x5b727a[_0x4485('0x2d')](_0x34f7b4);return _0x5b727a[_0x4485('0x33')]('Content-Range',_0x52f08c+'-'+_0x3c21c9+'/'+_0xa9dd55)[_0x4485('0x34')](_0x5b4ae3);}return null;};}function patchUpdates(_0x30c8fa){return function(_0x306b90){try{jsonpatch['apply'](_0x306b90,_0x30c8fa,!![]);}catch(_0x25fc5d){return BPromise['reject'](_0x25fc5d);}return _0x306b90[_0x4485('0x35')]();};}function saveUpdates(_0x67fefa,_0x2b3c80){return function(_0x107cf9){if(_0x107cf9){return _0x107cf9[_0x4485('0x36')](_0x67fefa)[_0x4485('0x22')](function(_0x2b18e6){return _0x2b18e6;});}return null;};}function removeEntity(_0x3a5915,_0xff2f88){return function(_0x11a93a){if(_0x11a93a){return _0x11a93a[_0x4485('0x37')]()[_0x4485('0x22')](function(){var _0x95bdbd=_0x11a93a[_0x4485('0x38')]({'plain':!![]});var _0x4251fc=_0x4485('0x39');return db[_0x4485('0x3a')][_0x4485('0x37')]({'where':{'type':_0x4251fc,'resourceId':_0x95bdbd['id']}})['then'](function(){return _0x11a93a;});})['then'](function(){_0x3a5915['status'](0xcc)[_0x4485('0x2e')]();});}};}function handleEntityNotFound(_0x5e3d6a,_0x39c1ae){return function(_0x4e31eb){if(!_0x4e31eb){_0x5e3d6a[_0x4485('0x2c')](0x194);}return _0x4e31eb;};}function handleError(_0x131b66,_0x476cbf){_0x476cbf=_0x476cbf||0x1f4;return function(_0x15e5d0){logger[_0x4485('0x28')](_0x15e5d0[_0x4485('0x3b')]);if(_0x15e5d0[_0x4485('0x3c')]){delete _0x15e5d0[_0x4485('0x3c')];}_0x131b66[_0x4485('0x2d')](_0x476cbf)[_0x4485('0x3d')](_0x15e5d0);};}exports['index']=function(_0x4f0389,_0x45746c){var _0x488655={'include':[{'model':db[_0x4485('0x3e')],'as':_0x4485('0x3f')}]},_0x25b25e={},_0x23d267={'count':0x0,'rows':[]};var _0x1cf10d=_[_0x4485('0x40')](db['FaxAccount'][_0x4485('0x41')],function(_0x14e6a9){return{'name':_0x14e6a9[_0x4485('0x42')],'type':_0x14e6a9[_0x4485('0x43')][_0x4485('0x44')]};});_0x25b25e['model']=_[_0x4485('0x40')](_0x1cf10d,_0x4485('0x3c'));_0x25b25e['query']=_[_0x4485('0x45')](_0x4f0389[_0x4485('0x46')]);_0x25b25e['filters']=_[_0x4485('0x47')](_0x25b25e['model'],_0x25b25e[_0x4485('0x46')]);_0x488655[_0x4485('0x48')]=_[_0x4485('0x47')](_0x25b25e[_0x4485('0x49')],qs['fields'](_0x4f0389[_0x4485('0x46')]['fields']));_0x488655[_0x4485('0x48')]=_0x488655[_0x4485('0x48')][_0x4485('0x4a')]?_0x488655[_0x4485('0x48')]:_0x25b25e[_0x4485('0x49')];if(!_0x4f0389['query']['hasOwnProperty']('nolimit')){_0x488655[_0x4485('0x32')]=qs[_0x4485('0x32')](_0x4f0389[_0x4485('0x46')]['limit']);_0x488655[_0x4485('0x2f')]=qs['offset'](_0x4f0389[_0x4485('0x46')]['offset']);}_0x488655[_0x4485('0x4b')]=qs[_0x4485('0x4c')](_0x4f0389[_0x4485('0x46')][_0x4485('0x4c')]);_0x488655[_0x4485('0x4d')]=qs['filters'](_[_0x4485('0x4e')](_0x4f0389['query'],_0x25b25e[_0x4485('0x4f')]),_0x1cf10d);if(_0x4f0389[_0x4485('0x46')]['filter']){_0x488655['where']=_['merge'](_0x488655[_0x4485('0x4d')],{'$or':_[_0x4485('0x40')](_0x1cf10d,function(_0x536a3b){if(_0x536a3b[_0x4485('0x43')]!==_0x4485('0x50')){var _0x2f7d65={};_0x2f7d65[_0x536a3b[_0x4485('0x3c')]]={'$like':'%'+_0x4f0389[_0x4485('0x46')][_0x4485('0x51')]+'%'};return _0x2f7d65;}})});}_0x488655=_[_0x4485('0x52')]({},_0x488655,_0x4f0389[_0x4485('0x53')]);var _0x3e8491={'where':_0x488655[_0x4485('0x4d')]};return db['FaxAccount'][_0x4485('0x31')](_0x3e8491)[_0x4485('0x22')](function(_0x15cabf){_0x23d267['count']=_0x15cabf;if(_0x4f0389['query'][_0x4485('0x54')]){_0x488655['include']=[{'all':!![]}];}return db['FaxAccount'][_0x4485('0x55')](_0x488655);})[_0x4485('0x22')](function(_0x2ab537){_0x23d267[_0x4485('0x56')]=_0x2ab537;return _0x23d267;})[_0x4485('0x22')](respondWithFilteredResult(_0x45746c,_0x488655))['catch'](handleError(_0x45746c,null));};exports[_0x4485('0x57')]=function(_0x45f799,_0x62c4ad){var _0x452265={'raw':![],'where':{'id':_0x45f799[_0x4485('0x58')]['id']},'include':[{'model':db[_0x4485('0x3e')],'as':_0x4485('0x3f')}]},_0x1d492c={};_0x1d492c[_0x4485('0x49')]=_[_0x4485('0x45')](db[_0x4485('0x59')][_0x4485('0x41')]);_0x1d492c[_0x4485('0x46')]=_[_0x4485('0x45')](_0x45f799[_0x4485('0x46')]);_0x1d492c[_0x4485('0x4f')]=_[_0x4485('0x47')](_0x1d492c[_0x4485('0x49')],_0x1d492c['query']);_0x452265[_0x4485('0x48')]=_['intersection'](_0x1d492c[_0x4485('0x49')],qs[_0x4485('0x5a')](_0x45f799['query'][_0x4485('0x5a')]));_0x452265['attributes']=_0x452265[_0x4485('0x48')][_0x4485('0x4a')]?_0x452265[_0x4485('0x48')]:_0x1d492c[_0x4485('0x49')];if(_0x45f799[_0x4485('0x46')]['includeAll']){_0x452265[_0x4485('0x5b')]=[{'all':!![]}];}_0x452265=_['merge']({},_0x452265,_0x45f799[_0x4485('0x53')]);return db[_0x4485('0x59')]['find'](_0x452265)[_0x4485('0x22')](handleEntityNotFound(_0x62c4ad,null))[_0x4485('0x22')](respondWithResult(_0x62c4ad,null))[_0x4485('0x5c')](handleError(_0x62c4ad,null));};exports[_0x4485('0x5d')]=function(_0x1f1ecd,_0x6125dd){return db[_0x4485('0x59')][_0x4485('0x5d')](_0x1f1ecd['body'],{})[_0x4485('0x22')](function(_0x4c796e){var _0x35bb64=_0x1f1ecd[_0x4485('0x5e')][_0x4485('0x38')]({'plain':!![]});if(!_0x35bb64)throw new Error(_0x4485('0x5f'));if(_0x35bb64[_0x4485('0x60')]===_0x4485('0x5e')){var _0x137c57=_0x4c796e[_0x4485('0x38')]({'plain':!![]});var _0x38e6ab=_0x4485('0x39');return db[_0x4485('0x61')][_0x4485('0x62')]({'where':{'name':_0x38e6ab,'userProfileId':_0x35bb64[_0x4485('0x63')]},'raw':!![]})['then'](function(_0x3b77e8){if(_0x3b77e8&&_0x3b77e8[_0x4485('0x64')]===0x0){return db[_0x4485('0x3a')]['create']({'name':_0x137c57[_0x4485('0x3c')],'resourceId':_0x137c57['id'],'type':_0x3b77e8[_0x4485('0x3c')],'sectionId':_0x3b77e8['id']},{})[_0x4485('0x22')](function(){return _0x4c796e;});}else{return _0x4c796e;}})[_0x4485('0x5c')](function(_0x17d36d){logger['error'](_0x4485('0x65'),_0x17d36d);throw _0x17d36d;});}return _0x4c796e;})[_0x4485('0x22')](respondWithResult(_0x6125dd,0xc9))[_0x4485('0x5c')](handleError(_0x6125dd,null));};exports[_0x4485('0x36')]=function(_0x630cdd,_0x2c2486){if(_0x630cdd[_0x4485('0x66')]['id']){delete _0x630cdd[_0x4485('0x66')]['id'];}return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x630cdd[_0x4485('0x58')]['id']},'include':[{'model':db[_0x4485('0x3e')],'as':_0x4485('0x3f')}]})[_0x4485('0x22')](handleEntityNotFound(_0x2c2486,null))[_0x4485('0x22')](saveUpdates(_0x630cdd[_0x4485('0x66')],null))['then'](respondWithResult(_0x2c2486,null))['catch'](handleError(_0x2c2486,null));};exports[_0x4485('0x37')]=function(_0x35c40b,_0x4e37d9){return db[_0x4485('0x59')]['find']({'where':{'id':_0x35c40b[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x4e37d9,null))[_0x4485('0x22')](removeEntity(_0x4e37d9,null))[_0x4485('0x5c')](handleError(_0x4e37d9,null));};exports['describe']=function(_0x237da2,_0x5a07e6){return db[_0x4485('0x59')][_0x4485('0x67')]()['then'](respondWithResult(_0x5a07e6,null))[_0x4485('0x5c')](handleError(_0x5a07e6,null));};exports[_0x4485('0x68')]=function(_0x14ef8e,_0x2a525e,_0x56d99f){if(_0x14ef8e['body']['id']){delete _0x14ef8e['body']['id'];}return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x14ef8e[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x2a525e,null))[_0x4485('0x22')](function(_0x1e95ee){if(_0x1e95ee){_0x14ef8e[_0x4485('0x66')][_0x4485('0x69')]=_0x1e95ee['id'];return db[_0x4485('0x6a')][_0x4485('0x5d')](_0x14ef8e[_0x4485('0x66')]);}})[_0x4485('0x22')](respondWithResult(_0x2a525e,null))[_0x4485('0x5c')](handleError(_0x2a525e,null));};exports['getDispositions']=function(_0x10ca77,_0x183863,_0x2788f6){var _0x2d4564={'raw':![],'where':{}};var _0x7852cc={};var _0x1b5eb6={'count':0x0,'rows':[]};return db[_0x4485('0x59')]['findOne']({'where':{'id':_0x10ca77[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x183863,null))[_0x4485('0x22')](function(_0x30c29d){if(_0x30c29d){_0x7852cc[_0x4485('0x49')]=_['keys'](db[_0x4485('0x6a')]['rawAttributes']);_0x7852cc[_0x4485('0x46')]=_['keys'](_0x10ca77[_0x4485('0x46')]);_0x7852cc[_0x4485('0x4f')]=_[_0x4485('0x47')](_0x7852cc[_0x4485('0x49')],_0x7852cc[_0x4485('0x46')]);_0x2d4564[_0x4485('0x48')]=_[_0x4485('0x47')](_0x7852cc[_0x4485('0x49')],qs[_0x4485('0x5a')](_0x10ca77[_0x4485('0x46')]['fields']));_0x2d4564[_0x4485('0x48')]=_0x2d4564['attributes'][_0x4485('0x4a')]?_0x2d4564[_0x4485('0x48')]:_0x7852cc[_0x4485('0x49')];if(!_0x10ca77['query'][_0x4485('0x6b')]('nolimit')){_0x2d4564[_0x4485('0x32')]=qs[_0x4485('0x32')](_0x10ca77[_0x4485('0x46')]['limit']);_0x2d4564[_0x4485('0x2f')]=qs['offset'](_0x10ca77[_0x4485('0x46')][_0x4485('0x2f')]);}_0x2d4564[_0x4485('0x4b')]=qs[_0x4485('0x4c')](_0x10ca77['query'][_0x4485('0x4c')]);_0x2d4564[_0x4485('0x4d')]=qs[_0x4485('0x4f')](_[_0x4485('0x4e')](_0x10ca77[_0x4485('0x46')],_0x7852cc[_0x4485('0x4f')]));_0x2d4564[_0x4485('0x4d')]['FaxAccountId']=_0x30c29d['id'];if(_0x10ca77['query'][_0x4485('0x51')]){_0x2d4564[_0x4485('0x4d')]=_[_0x4485('0x52')](_0x2d4564['where'],{'$or':_[_0x4485('0x40')](_0x2d4564[_0x4485('0x48')],function(_0x398c64){var _0x245b97={};_0x245b97[_0x398c64]={'$like':'%'+_0x10ca77[_0x4485('0x46')][_0x4485('0x51')]+'%'};return _0x245b97;})});}_0x2d4564=_[_0x4485('0x52')]({},_0x2d4564,_0x10ca77[_0x4485('0x53')]);return db['Disposition'][_0x4485('0x31')]({'where':_0x2d4564[_0x4485('0x4d')]})['then'](function(_0x40974d){_0x1b5eb6[_0x4485('0x31')]=_0x40974d;if(_0x10ca77[_0x4485('0x46')]['includeAll']){_0x2d4564['include']=[{'all':!![]}];}return db[_0x4485('0x6a')][_0x4485('0x55')](_0x2d4564);})[_0x4485('0x22')](function(_0x36fd8c){_0x1b5eb6['rows']=_0x36fd8c;return _0x1b5eb6;});}})[_0x4485('0x22')](respondWithFilteredResult(_0x183863,_0x2d4564))[_0x4485('0x5c')](handleError(_0x183863,null));};exports['removeDispositions']=function(_0x523e0a,_0x4325e6,_0x1dff1b){return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x523e0a['params']['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x4325e6,null))['then'](function(_0xbf6c5c){if(_0xbf6c5c){return _0xbf6c5c[_0x4485('0x6c')](_0x523e0a[_0x4485('0x46')][_0x4485('0x6d')]);}})[_0x4485('0x22')](respondWithStatusCode(_0x4325e6,null))['catch'](handleError(_0x4325e6,null));};exports['addAnswer']=function(_0x42cbac,_0x42fca4,_0x4ffaf9){if(_0x42cbac[_0x4485('0x66')]['id']){delete _0x42cbac[_0x4485('0x66')]['id'];}return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x42cbac[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x42fca4,null))[_0x4485('0x22')](function(_0x417145){if(_0x417145){_0x42cbac[_0x4485('0x66')]['FaxAccountId']=_0x417145['id'];return db['CannedAnswer'][_0x4485('0x5d')](_0x42cbac[_0x4485('0x66')]);}})[_0x4485('0x22')](respondWithResult(_0x42fca4,null))[_0x4485('0x5c')](handleError(_0x42fca4,null));};exports[_0x4485('0x6e')]=function(_0x225879,_0x23d2a5,_0x457018){var _0x12f658={'raw':![],'where':{}};var _0x1dce04={};var _0x3b03ce={'count':0x0,'rows':[]};return db[_0x4485('0x59')]['findOne']({'where':{'id':_0x225879[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x23d2a5,null))[_0x4485('0x22')](function(_0x5d2805){if(_0x5d2805){_0x1dce04[_0x4485('0x49')]=_[_0x4485('0x45')](db[_0x4485('0x6f')][_0x4485('0x41')]);_0x1dce04[_0x4485('0x46')]=_[_0x4485('0x45')](_0x225879['query']);_0x1dce04[_0x4485('0x4f')]=_[_0x4485('0x47')](_0x1dce04['model'],_0x1dce04['query']);_0x12f658[_0x4485('0x48')]=_[_0x4485('0x47')](_0x1dce04['model'],qs['fields'](_0x225879[_0x4485('0x46')][_0x4485('0x5a')]));_0x12f658[_0x4485('0x48')]=_0x12f658[_0x4485('0x48')][_0x4485('0x4a')]?_0x12f658[_0x4485('0x48')]:_0x1dce04[_0x4485('0x49')];if(!_0x225879[_0x4485('0x46')][_0x4485('0x6b')]('nolimit')){_0x12f658['limit']=qs[_0x4485('0x32')](_0x225879['query'][_0x4485('0x32')]);_0x12f658['offset']=qs[_0x4485('0x2f')](_0x225879[_0x4485('0x46')][_0x4485('0x2f')]);}_0x12f658[_0x4485('0x4b')]=qs[_0x4485('0x4c')](_0x225879[_0x4485('0x46')]['sort']);_0x12f658[_0x4485('0x4d')]=qs[_0x4485('0x4f')](_[_0x4485('0x4e')](_0x225879[_0x4485('0x46')],_0x1dce04[_0x4485('0x4f')]));_0x12f658[_0x4485('0x4d')][_0x4485('0x69')]=_0x5d2805['id'];if(_0x225879[_0x4485('0x46')][_0x4485('0x51')]){_0x12f658['where']=_[_0x4485('0x52')](_0x12f658['where'],{'$or':_['map'](_0x12f658[_0x4485('0x48')],function(_0x134409){var _0x504ff8={};_0x504ff8[_0x134409]={'$like':'%'+_0x225879[_0x4485('0x46')][_0x4485('0x51')]+'%'};return _0x504ff8;})});}_0x12f658=_[_0x4485('0x52')]({},_0x12f658,_0x225879[_0x4485('0x53')]);return db['CannedAnswer'][_0x4485('0x31')]({'where':_0x12f658[_0x4485('0x4d')]})['then'](function(_0x25881d){_0x3b03ce['count']=_0x25881d;if(_0x225879[_0x4485('0x46')][_0x4485('0x54')]){_0x12f658[_0x4485('0x5b')]=[{'all':!![]}];}return db['CannedAnswer'][_0x4485('0x55')](_0x12f658);})[_0x4485('0x22')](function(_0x170bde){_0x3b03ce['rows']=_0x170bde;return _0x3b03ce;});}})[_0x4485('0x22')](respondWithFilteredResult(_0x23d2a5,_0x12f658))[_0x4485('0x5c')](handleError(_0x23d2a5,null));};exports['removeAnswers']=function(_0x41f256,_0x5de447,_0x5e78bb){return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x41f256[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x5de447,null))[_0x4485('0x22')](function(_0x241ae7){if(_0x241ae7){return _0x241ae7[_0x4485('0x70')](_0x41f256[_0x4485('0x46')][_0x4485('0x6d')]);}})[_0x4485('0x22')](respondWithStatusCode(_0x5de447,null))[_0x4485('0x5c')](handleError(_0x5de447,null));};exports[_0x4485('0x71')]=function(_0x4c6fe6,_0x2fe3e7,_0x2ca5fc){return db[_0x4485('0x72')][_0x4485('0x62')]({'where':{'id':_0x4c6fe6[_0x4485('0x58')]['id']}})['then'](handleEntityNotFound(_0x2fe3e7,null))[_0x4485('0x22')](function(_0x6f0c4d){if(_0x6f0c4d){return _0x6f0c4d[_0x4485('0x71')](_0x4c6fe6['body'][_0x4485('0x6d')],_[_0x4485('0x73')](_0x4c6fe6[_0x4485('0x66')],[_0x4485('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x2fe3e7,null))[_0x4485('0x5c')](handleError(_0x2fe3e7,null));};exports['getInteractions']=function(_0x2c1fad,_0x15d870,_0x43897b){var _0x431e05={'raw':![],'where':{}};var _0x440de0={};var _0x4ce199={'count':0x0,'rows':[]};return db['FaxAccount'][_0x4485('0x74')]({'where':{'id':_0x2c1fad[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x15d870,null))['then'](function(_0x3b4238){if(_0x3b4238){_0x440de0[_0x4485('0x49')]=_[_0x4485('0x45')](db[_0x4485('0x72')]['rawAttributes']);_0x440de0[_0x4485('0x46')]=_[_0x4485('0x45')](_0x2c1fad[_0x4485('0x46')]);_0x440de0[_0x4485('0x4f')]=_[_0x4485('0x47')](_0x440de0[_0x4485('0x49')],_0x440de0[_0x4485('0x46')]);_0x431e05[_0x4485('0x48')]=_['intersection'](_0x440de0[_0x4485('0x49')],qs[_0x4485('0x5a')](_0x2c1fad[_0x4485('0x46')][_0x4485('0x5a')]));_0x431e05[_0x4485('0x48')]=_0x431e05[_0x4485('0x48')][_0x4485('0x4a')]?_0x431e05[_0x4485('0x48')]:_0x440de0['model'];if(!_0x2c1fad[_0x4485('0x46')][_0x4485('0x6b')](_0x4485('0x75'))){_0x431e05[_0x4485('0x32')]=qs[_0x4485('0x32')](_0x2c1fad[_0x4485('0x46')]['limit']);_0x431e05[_0x4485('0x2f')]=qs[_0x4485('0x2f')](_0x2c1fad[_0x4485('0x46')]['offset']);}_0x431e05[_0x4485('0x4b')]=qs[_0x4485('0x4c')](_0x2c1fad[_0x4485('0x46')][_0x4485('0x4c')]);_0x431e05[_0x4485('0x4d')]=qs[_0x4485('0x4f')](_[_0x4485('0x4e')](_0x2c1fad[_0x4485('0x46')],_0x440de0['filters']));_0x431e05[_0x4485('0x4d')]['FaxAccountId']=_0x3b4238['id'];if(_0x2c1fad[_0x4485('0x46')]['filter']){_0x431e05['where']=_[_0x4485('0x52')](_0x431e05[_0x4485('0x4d')],{'$or':_[_0x4485('0x40')](_0x431e05['attributes'],function(_0x25121f){var _0x506850={};_0x506850[_0x25121f]={'$like':'%'+_0x2c1fad[_0x4485('0x46')][_0x4485('0x51')]+'%'};return _0x506850;})});}_0x431e05=_['merge']({},_0x431e05,_0x2c1fad[_0x4485('0x53')]);return db[_0x4485('0x72')]['count']({'where':_0x431e05[_0x4485('0x4d')]})[_0x4485('0x22')](function(_0x1aa310){_0x4ce199[_0x4485('0x31')]=_0x1aa310;if(_0x2c1fad[_0x4485('0x46')][_0x4485('0x54')]){_0x431e05[_0x4485('0x5b')]=[{'model':db['CmContact'],'as':_0x4485('0x76'),'required':![]},{'model':db[_0x4485('0x77')],'as':_0x4485('0x78'),'attributes':[_0x4485('0x3c'),_0x4485('0x79'),_0x4485('0x7a')],'required':![]},{'model':db[_0x4485('0x7b')],'as':_0x4485('0x7c'),'attributes':['id','name','color'],'where':_0x2c1fad[_0x4485('0x46')][_0x4485('0x7d')]?{'id':_0x2c1fad[_0x4485('0x46')][_0x4485('0x7d')]}:undefined,'required':_0x2c1fad['query']['tag']?!![]:![]}];}return db[_0x4485('0x72')][_0x4485('0x55')](_0x431e05);})[_0x4485('0x22')](function(_0x494905){_0x4ce199[_0x4485('0x56')]=_0x494905;return _0x4ce199;});}})['then'](respondWithFilteredResult(_0x15d870,_0x431e05))[_0x4485('0x5c')](handleError(_0x15d870,null));};exports['addApplications']=function(_0x1aa633,_0x520b81){var _0x4bf55c=_0x1aa633[_0x4485('0x58')]['id'];var _0x41d8e5=_0x1aa633[_0x4485('0x66')];var _0x4d63a1=0xc8;var _0x1d8cda=null;return db['sequelize'][_0x4485('0x7e')]({'isolationLevel':db[_0x4485('0x7f')][_0x4485('0x80')][_0x4485('0x81')]['READ_COMMITTED']},function(_0x365686){return db[_0x4485('0x59')]['findOne']({'where':{'id':_0x4bf55c},'transaction':_0x365686})['then'](function(_0x480ed9){if(_0x480ed9){return db['FaxApplication'][_0x4485('0x37')]({'where':{'FaxAccountId':_0x4bf55c},'transaction':_0x365686})[_0x4485('0x22')](function(){var _0x40e627=_[_0x4485('0x40')](_0x41d8e5,function(_0x3aca47){_0x3aca47['FaxAccountId']=_0x4bf55c;return _0x3aca47;});return db[_0x4485('0x82')][_0x4485('0x83')](_0x40e627,{'transaction':_0x365686});});}else{_0x4d63a1=0x194;_0x1d8cda=[];}});})[_0x4485('0x22')](function(){if(_0x4d63a1!==0x194){return db['FaxApplication'][_0x4485('0x84')]({'where':{'FaxAccountId':_0x4bf55c},'order':_0x4485('0x85')})[_0x4485('0x22')](function(_0x206cbe){_0x1d8cda=_0x206cbe;});}})[_0x4485('0x5c')](function(_0x3c9793){_0x4d63a1=0x1f4;logger[_0x4485('0x28')](_0x3c9793[_0x4485('0x3b')]);if(_0x3c9793[_0x4485('0x3c')]){delete _0x3c9793[_0x4485('0x3c')];}_0x1d8cda=_0x3c9793;})[_0x4485('0x86')](function(){if(_0x1d8cda===null){_0x520b81[_0x4485('0x2c')](_0x4d63a1);}else{if(_0x4d63a1===0x1f4){_0x520b81[_0x4485('0x2d')](_0x4d63a1)[_0x4485('0x3d')](_0x1d8cda);}else{_0x520b81['status'](_0x4d63a1)[_0x4485('0x34')](_0x1d8cda);}}});};exports['getApplications']=function(_0x5dbac0,_0x1cc349,_0x551ad9){var _0x46b238={};var _0x512cde={};var _0x3ee7a8;var _0x2e6864;return db[_0x4485('0x59')][_0x4485('0x74')]({'where':{'id':_0x5dbac0[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x1cc349,null))[_0x4485('0x22')](function(_0x2726f6){if(_0x2726f6){_0x3ee7a8=_0x2726f6;_0x512cde[_0x4485('0x49')]=_['keys'](db[_0x4485('0x82')][_0x4485('0x41')]);_0x512cde[_0x4485('0x46')]=_[_0x4485('0x45')](_0x5dbac0[_0x4485('0x46')]);_0x512cde[_0x4485('0x4f')]=_[_0x4485('0x47')](_0x512cde[_0x4485('0x49')],_0x512cde['query']);_0x46b238[_0x4485('0x48')]=_[_0x4485('0x47')](_0x512cde[_0x4485('0x49')],qs['fields'](_0x5dbac0[_0x4485('0x46')][_0x4485('0x5a')]));_0x46b238[_0x4485('0x48')]=_0x46b238[_0x4485('0x48')][_0x4485('0x4a')]?_0x46b238['attributes']:_0x512cde[_0x4485('0x49')];_0x46b238['order']=qs[_0x4485('0x4c')](_0x5dbac0['query']['sort']);_0x46b238[_0x4485('0x4d')]=qs[_0x4485('0x4f')](_[_0x4485('0x4e')](_0x5dbac0['query'],_0x512cde[_0x4485('0x4f')]));if(_0x5dbac0[_0x4485('0x46')][_0x4485('0x51')]){_0x46b238['where']=_[_0x4485('0x52')](_0x46b238['where'],{'$or':_['map'](_0x46b238['attributes'],function(_0x291497){var _0x41ed33={};_0x41ed33[_0x291497]={'$like':'%'+_0x5dbac0[_0x4485('0x46')]['filter']+'%'};return _0x41ed33;})});}_0x46b238=_['merge']({},_0x46b238,_0x5dbac0['options']);return _0x3ee7a8[_0x4485('0x87')](_0x46b238);}})[_0x4485('0x22')](function(_0x57e09a){if(_0x57e09a){_0x2e6864=_0x57e09a[_0x4485('0x4a')];if(!_0x5dbac0[_0x4485('0x46')][_0x4485('0x6b')](_0x4485('0x75'))){_0x46b238['limit']=qs[_0x4485('0x32')](_0x5dbac0[_0x4485('0x46')][_0x4485('0x32')]);_0x46b238[_0x4485('0x2f')]=qs['offset'](_0x5dbac0[_0x4485('0x46')][_0x4485('0x2f')]);}return _0x3ee7a8[_0x4485('0x87')](_0x46b238);}})[_0x4485('0x22')](function(_0x221580){if(_0x221580){return _0x221580?{'count':_0x2e6864,'rows':_0x221580}:null;}})[_0x4485('0x22')](respondWithResult(_0x1cc349,null))['catch'](handleError(_0x1cc349,null));};function Extension(_0x22aa1b,_0x1ed708,_0xc23faf,_0x6058b1){this[_0x4485('0x88')]=_0x4485('0x89');this[_0x4485('0x8a')]=_0x22aa1b[_0x4485('0x8b')];this[_0x4485('0x8c')]=_0x6058b1;this[_0x4485('0x43')]=_0x4485('0x8d');this[_0x4485('0x8e')]=_0x4485('0x8f');this[_0x4485('0x69')]=_0x22aa1b['id'];this[_0x4485('0x85')]=_0x1ed708;this['appdata']=_0xc23faf;}function createExtensionsReciveFax(_0x142bb5){var _0x4f0c06=0x1;var _0x39546e=[];_0x39546e[_0x4485('0x90')](new Extension(_0x142bb5,_0x4f0c06,'',_0x4485('0x91')));_0x4f0c06+=0x1;_0x39546e[_0x4485('0x90')](new Extension(_0x142bb5,_0x4f0c06,'CDR(type)=inbound-fax',_0x4485('0x92')));_0x4f0c06+=0x1;for(var _0x23aa66 in _0x142bb5){if(_0x142bb5[_0x4485('0x6b')](_0x23aa66)&&(_0x23aa66===_0x4485('0x93')||_0x23aa66===_0x4485('0x8b')||_0x23aa66==='gateway'||_0x23aa66===_0x4485('0x94')||_0x23aa66===_0x4485('0x95')||_0x23aa66===_0x4485('0x96')||_0x23aa66===_0x4485('0x97')||_0x23aa66===_0x4485('0x98')||_0x23aa66===_0x4485('0x99'))){_0x39546e[_0x4485('0x90')](new Extension(_0x142bb5,_0x4f0c06,'FAXOPT('+_0x23aa66+')='+_0x142bb5[_0x23aa66],_0x4485('0x92')));_0x4f0c06+=0x1;}}_0x39546e['push'](new Extension(_0x142bb5,_0x4f0c06,'6',_0x4485('0x9a')));_0x4f0c06+=0x1;_0x39546e[_0x4485('0x90')](new Extension(_0x142bb5,_0x4f0c06,_0x4485('0x9b'),_0x4485('0x9c')));_0x4f0c06=0x0;return _0x39546e;}exports[_0x4485('0x9d')]=function(_0x3f3d51,_0x31d19c,_0x346676){var _0x2861cf;return db[_0x4485('0x7f')][_0x4485('0x7e')](function(_0x4970db){return db[_0x4485('0x59')][_0x4485('0x5d')](_0x3f3d51[_0x4485('0x66')],{'transaction':_0x4970db})['then'](function(_0x54a86b){_0x2861cf=_0x54a86b[_0x4485('0x38')]({'plain':!![]});return db[_0x4485('0x9e')][_0x4485('0x83')](createExtensionsReciveFax(_0x2861cf),{'transaction':_0x4970db});});})[_0x4485('0x22')](function(){return _0x2861cf;})[_0x4485('0x22')](respondWithResult(_0x31d19c,null))[_0x4485('0x5c')](handleError(_0x31d19c,null));};exports[_0x4485('0x9f')]=function(_0x473dca,_0x5daf34,_0x2ff80d){var _0x5b831f;return db[_0x4485('0x7f')][_0x4485('0x7e')](function(_0x1f5f7d){return db[_0x4485('0x59')]['update'](_0x473dca[_0x4485('0x66')],{'where':{'id':_0x473dca[_0x4485('0x66')]['id']},'transaction':_0x1f5f7d})[_0x4485('0x22')](function(_0x25105b){return db[_0x4485('0x9e')]['destroy']({'where':{'FaxAccountId':_0x473dca[_0x4485('0x66')]['id']},'transaction':_0x1f5f7d})[_0x4485('0x22')](function(_0x245937){return db[_0x4485('0x9e')]['bulkCreate'](createExtensionsReciveFax(_[_0x4485('0x73')](_0x473dca[_0x4485('0x66')],[_0x4485('0xa0'),'key',_0x4485('0xa1'),_0x4485('0xa2'),_0x4485('0xa3'),_0x4485('0xa4')])),{'transaction':_0x1f5f7d});});});})['then'](function(){return db[_0x4485('0x59')][_0x4485('0xa5')](_0x473dca['body']['id']);})[_0x4485('0x22')](respondWithResult(_0x5daf34,null))[_0x4485('0x5c')](handleError(_0x5daf34,null));};exports[_0x4485('0xa6')]=function(_0x4f03e9,_0x4f6f5e,_0x17870e){var _0x516b71={'raw':!![],'where':{}};var _0x2a65cf={};var _0x49c08d={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x4f03e9[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x4f6f5e,null))['then'](function(_0x53967d){if(_0x53967d){_0x2a65cf['model']=_['keys'](db[_0x4485('0xa7')][_0x4485('0x41')]);_0x2a65cf[_0x4485('0x46')]=_[_0x4485('0x45')](_0x4f03e9['query']);_0x2a65cf['filters']=_[_0x4485('0x47')](_0x2a65cf[_0x4485('0x49')],_0x2a65cf['query']);_0x516b71['attributes']=_['intersection'](_0x2a65cf[_0x4485('0x49')],qs['fields'](_0x4f03e9[_0x4485('0x46')][_0x4485('0x5a')]));_0x516b71[_0x4485('0x48')]=_0x516b71[_0x4485('0x48')][_0x4485('0x4a')]?_0x516b71[_0x4485('0x48')]:_0x2a65cf[_0x4485('0x49')];if(!_0x4f03e9[_0x4485('0x46')]['hasOwnProperty'](_0x4485('0x75'))){_0x516b71[_0x4485('0x32')]=qs['limit'](_0x4f03e9[_0x4485('0x46')][_0x4485('0x32')]);_0x516b71[_0x4485('0x2f')]=qs[_0x4485('0x2f')](_0x4f03e9[_0x4485('0x46')][_0x4485('0x2f')]);}_0x516b71['order']=qs[_0x4485('0x4c')](_0x4f03e9[_0x4485('0x46')][_0x4485('0x4c')]);_0x516b71[_0x4485('0x4d')]=qs['filters'](_[_0x4485('0x4e')](_0x4f03e9[_0x4485('0x46')],_0x2a65cf[_0x4485('0x4f')]));_0x516b71['where']['FaxAccountId']=_0x53967d['id'];if(_0x4f03e9[_0x4485('0x46')][_0x4485('0x51')]){_0x516b71['where']=_[_0x4485('0x52')](_0x516b71['where'],{'$or':_['map'](_0x516b71[_0x4485('0x48')],function(_0x14072a){var _0x1fb7f8={};_0x1fb7f8[_0x14072a]={'$like':'%'+_0x4f03e9['query'][_0x4485('0x51')]+'%'};return _0x1fb7f8;})});}if(_0x4f03e9[_0x4485('0x46')][_0x4485('0xa8')]){var _0x517660=_0x4f03e9[_0x4485('0x46')][_0x4485('0xa8')]['split'](',');var _0x5440b5={};_0x5440b5[_0x517660[0x0]]={'$gte':moment(_0x517660[0x1])[_0x4485('0xa9')](_0x4485('0xaa'))};_0x516b71[_0x4485('0x4d')]=_[_0x4485('0x52')](_0x516b71[_0x4485('0x4d')],_0x5440b5);}_0x516b71=_[_0x4485('0x52')]({},_0x516b71,_0x4f03e9[_0x4485('0x53')]);return db[_0x4485('0xa7')][_0x4485('0x31')]({'where':_0x516b71[_0x4485('0x4d')]})[_0x4485('0x22')](function(_0xfaf24b){_0x49c08d[_0x4485('0x31')]=_0xfaf24b;if(_0x4f03e9['query'][_0x4485('0x54')]){_0x516b71[_0x4485('0x5b')]=[{'all':!![]}];}return db['FaxMessage'][_0x4485('0x55')](_0x516b71);})[_0x4485('0x22')](function(_0x10b19f){_0x49c08d[_0x4485('0x56')]=_0x10b19f;return _0x49c08d;});}})[_0x4485('0x22')](respondWithFilteredResult(_0x4f6f5e,_0x516b71))[_0x4485('0x5c')](handleError(_0x4f6f5e,null));};exports[_0x4485('0x3d')]=function(_0x41db54,_0x237ca9,_0x2c20eb){var _0x14d12e,_0x26533c={},_0x3d6c70;if(_0x41db54[_0x4485('0x66')]['to']){_0x3d6c70=_0x41db54[_0x4485('0x66')]['to'][0x0];}return db['FaxAccount'][_0x4485('0x62')]({'where':{'id':_0x41db54[_0x4485('0x58')]['id']},'include':[{'model':db[_0x4485('0xab')],'as':_0x4485('0xac'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'fax':_0x3d6c70},'limit':0x1,'order':[[_0x4485('0xa2'),_0x4485('0xad')]]}]}]})[_0x4485('0x22')](handleEntityNotFound(_0x237ca9,null))[_0x4485('0x22')](function(_0x178d18){_0x14d12e=_0x178d18;if(_0x41db54[_0x4485('0x66')][_0x4485('0xae')]&&_0x41db54[_0x4485('0x66')][_0x4485('0xae')][_0x4485('0x4a')]){for(var _0x9c8e87=0x0;_0x9c8e87<_0x41db54[_0x4485('0x66')]['attachments'][_0x4485('0x4a')];_0x9c8e87+=0x1){_0x41db54[_0x4485('0x66')][_0x4485('0xae')][_0x9c8e87]={'filename':_0x41db54[_0x4485('0x66')]['attachments'][_0x9c8e87][_0x4485('0x3c')],'id':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][_0x9c8e87]['id'],'path':path[_0x4485('0xaf')](config[_0x4485('0xb0')],'server/files/attachments',_0x41db54[_0x4485('0x66')][_0x4485('0xae')][_0x9c8e87][_0x4485('0xb1')])};}}return respondWithRpcPromise(_0x4485('0xb2'),'CheckAfterSend',{'FaxAccountId':_[_0x4485('0xb3')](_0x41db54[_0x4485('0x58')]['id'])?undefined:_0x41db54['params']['id'],'path':_[_0x4485('0xb3')](_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0][_0x4485('0x7')])?undefined:_0x41db54['body'][_0x4485('0xae')][0x0][_0x4485('0x7')],'fax':_[_0x4485('0xb3')](_0x41db54[_0x4485('0x66')]['to'][0x0])?undefined:_0x41db54[_0x4485('0x66')]['to'][0x0]},client9002);})[_0x4485('0x22')](function(){if(_0x14d12e){if(_[_0x4485('0xb3')](_0x41db54[_0x4485('0x66')]['from'])){_0x41db54[_0x4485('0x66')][_0x4485('0xb4')]=util[_0x4485('0xa9')](_0x4485('0xb5'),_0x14d12e[_0x4485('0x3c')],_0x14d12e[_0x4485('0xb6')]);}if(_0x14d12e[_0x4485('0xac')]){if(_0x14d12e[_0x4485('0xac')][_0x4485('0xb7')][_0x4485('0x4a')]){return _0x14d12e[_0x4485('0xac')][_0x4485('0xb7')][0x0];}else{return db[_0x4485('0xb8')]['create'](_['defaults'](_0x41db54[_0x4485('0x66')],{'firstName':_0x41db54[_0x4485('0x66')]['to'][0x0],'phone':_0x41db54[_0x4485('0x66')]['to'][0x0],'fax':_0x41db54[_0x4485('0x66')]['to'][0x0],'ListId':_0x14d12e[_0x4485('0xa4')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x4485('0xb9'));}})['then'](function(_0x2f9116){if(_0x2f9116){return db[_0x4485('0x72')][_0x4485('0x62')]({'where':{'ContactId':_0x2f9116['id'],'closed':![],'FaxAccountId':_0x14d12e['id']}})[_0x4485('0x22')](function(_0x289636){if(_0x289636){return[_0x289636,![]];}return db[_0x4485('0x72')][_0x4485('0x5d')]({'UserId':_0x41db54[_0x4485('0x5e')]['id'],'ContactId':_0x2f9116['id'],'FaxAccountId':_0x14d12e['id'],'fax':_0x41db54[_0x4485('0x66')]['to'][0x0],'firstMsgDirection':_0x4485('0xba'),'Messages':[_['merge'](_0x41db54['body'],{'read':![],'body':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0][_0x4485('0xbb')],'FaxAccountId':_0x14d12e['id'],'UserId':_0x41db54[_0x4485('0x5e')]['id'],'ContactId':_0x2f9116['id'],'AttachmentId':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0]['id']})]},{'include':[{'model':db[_0x4485('0xa7')],'as':_0x4485('0xbc')}]})[_0x4485('0x22')](function(_0x2eb455){return[_0x2eb455,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x4485('0xbd')](function(_0x12d5b8,_0x24fad0){if(_0x24fad0){return _0x12d5b8;}return db[_0x4485('0xa7')]['create']({'direction':_0x4485('0xba'),'read':![],'body':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0][_0x4485('0xbb')],'FaxAccountId':_0x14d12e['id'],'FaxInteractionId':_0x12d5b8['id'],'UserId':_0x41db54[_0x4485('0x5e')]['id'],'ContactId':_0x12d5b8[_0x4485('0xbe')],'AttachmentId':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0]['id']})[_0x4485('0x22')](function(_0x2846cf){_0x12d5b8['dataValues']['Messages']=[];_0x12d5b8['dataValues'][_0x4485('0xbc')][_0x4485('0x90')](_0x2846cf[_0x4485('0xbf')]);return _0x12d5b8;});})[_0x4485('0x22')](function(_0x4608de){respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0x4485('0xb3')](_0x41db54[_0x4485('0x58')]['id'])?undefined:_0x41db54[_0x4485('0x58')]['id'],'path':_[_0x4485('0xb3')](_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0][_0x4485('0x7')])?undefined:_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0][_0x4485('0x7')],'fax':_[_0x4485('0xb3')](_0x41db54['body']['to'][0x0])?undefined:_0x41db54[_0x4485('0x66')]['to'][0x0],'AttachmentId':_0x41db54[_0x4485('0x66')][_0x4485('0xae')][0x0]['id']},client9002)[_0x4485('0x22')](function(_0xe0fb7c){logger[_0x4485('0x23')]('SendFaxRpc,\x20%s',_0xe0fb7c);})[_0x4485('0x5c')](function(_0x454a4f){logger[_0x4485('0x23')](_0x4485('0xc0'),_0x454a4f);});return _0x4608de;})['then'](respondWithResult(_0x237ca9,null))[_0x4485('0x5c')](handleError(_0x237ca9,null));};exports[_0x4485('0xc1')]=function(_0x2c6a2a,_0x1dfb1b,_0x29d712){return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x2c6a2a[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x1dfb1b,null))['then'](function(_0xb319b){if(_0xb319b){return _0xb319b['addAgents'](_0x2c6a2a['body'][_0x4485('0x6d')],_[_0x4485('0x73')](_0x2c6a2a[_0x4485('0x66')],[_0x4485('0x6d'),'id'])||{})['spread'](function(_0x2d3e90){for(var _0x51dc27=0x0;_0x51dc27<_0x2c6a2a[_0x4485('0x66')]['ids'][_0x4485('0x4a')];_0x51dc27+=0x1){socket['emit'](_0x4485('0xc2'),{'UserId':Number(_0x2c6a2a['body']['ids'][_0x51dc27]),'FaxAccountId':Number(_0x2c6a2a[_0x4485('0x58')]['id'])});}return _0x2d3e90;});}})[_0x4485('0x22')](respondWithResult(_0x1dfb1b,null))[_0x4485('0x5c')](handleError(_0x1dfb1b,null));};exports[_0x4485('0xc3')]=function(_0x3220d8,_0x44c1b9,_0x4d3c3c){return db[_0x4485('0x59')][_0x4485('0x62')]({'where':{'id':_0x3220d8[_0x4485('0x58')]['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x44c1b9,null))[_0x4485('0x22')](function(_0x3e8eb8){if(_0x3e8eb8){return _0x3e8eb8[_0x4485('0xc3')](_0x3220d8['query'][_0x4485('0x6d')])[_0x4485('0x22')](function(){if(_[_0x4485('0xc4')](_0x3220d8[_0x4485('0x46')]['ids'])){for(var _0x4acbd2=0x0;_0x4acbd2<_0x3220d8[_0x4485('0x46')][_0x4485('0x6d')][_0x4485('0x4a')];_0x4acbd2+=0x1){socket[_0x4485('0xc5')]('userFaxAccount:remove',{'UserId':Number(_0x3220d8[_0x4485('0x46')][_0x4485('0x6d')][_0x4acbd2]),'FaxAccountId':Number(_0x3220d8[_0x4485('0x58')]['id'])});}}else{socket[_0x4485('0xc5')](_0x4485('0xc6'),{'UserId':Number(_0x3220d8[_0x4485('0x46')][_0x4485('0x6d')]),'FaxAccountId':Number(_0x3220d8['params']['id'])});}});}})[_0x4485('0x22')](respondWithStatusCode(_0x44c1b9,null))[_0x4485('0x5c')](handleError(_0x44c1b9,null));};exports[_0x4485('0xc7')]=function(_0x48d35c,_0x33da1f,_0x515e16){var _0x6e7b0={};var _0x5b2af9={};var _0xfadd8d;var _0x5283e9;return db[_0x4485('0x59')][_0x4485('0x74')]({'where':{'id':_0x48d35c['params']['id']}})[_0x4485('0x22')](handleEntityNotFound(_0x33da1f,null))[_0x4485('0x22')](function(_0x2e572e){if(_0x2e572e){_0xfadd8d=_0x2e572e;_0x5b2af9[_0x4485('0x49')]=_[_0x4485('0x45')](db[_0x4485('0x77')][_0x4485('0x41')]);_0x5b2af9['query']=_['keys'](_0x48d35c[_0x4485('0x46')]);_0x5b2af9[_0x4485('0x4f')]=_['intersection'](_0x5b2af9['model'],_0x5b2af9[_0x4485('0x46')]);_0x6e7b0[_0x4485('0x48')]=_[_0x4485('0x47')](_0x5b2af9['model'],qs['fields'](_0x48d35c['query'][_0x4485('0x5a')]));_0x6e7b0['attributes']=_0x6e7b0['attributes']['length']?_0x6e7b0[_0x4485('0x48')]:_0x5b2af9['model'];_0x6e7b0[_0x4485('0x4b')]=qs[_0x4485('0x4c')](_0x48d35c[_0x4485('0x46')][_0x4485('0x4c')]);_0x6e7b0['where']=qs['filters'](_[_0x4485('0x4e')](_0x48d35c[_0x4485('0x46')],_0x5b2af9['filters']));if(_0x48d35c['query'][_0x4485('0x51')]){_0x6e7b0[_0x4485('0x4d')]=_[_0x4485('0x52')](_0x6e7b0[_0x4485('0x4d')],{'$or':_[_0x4485('0x40')](_0x6e7b0[_0x4485('0x48')],function(_0x948f21){var _0x1eab51={};_0x1eab51[_0x948f21]={'$like':'%'+_0x48d35c[_0x4485('0x46')][_0x4485('0x51')]+'%'};return _0x1eab51;})});}_0x6e7b0=_[_0x4485('0x52')]({},_0x6e7b0,_0x48d35c[_0x4485('0x53')]);return _0xfadd8d[_0x4485('0xc7')](_0x6e7b0);}})[_0x4485('0x22')](function(_0x3e3381){if(_0x3e3381){_0x5283e9=_0x3e3381[_0x4485('0x4a')];if(!_0x48d35c[_0x4485('0x46')][_0x4485('0x6b')](_0x4485('0x75'))){_0x6e7b0[_0x4485('0x32')]=qs[_0x4485('0x32')](_0x48d35c['query'][_0x4485('0x32')]);_0x6e7b0['offset']=qs['offset'](_0x48d35c[_0x4485('0x46')][_0x4485('0x2f')]);}return _0xfadd8d[_0x4485('0xc7')](_0x6e7b0);}})[_0x4485('0x22')](function(_0x58084e){if(_0x58084e){return _0x58084e?{'count':_0x5283e9,'rows':_0x58084e}:null;}})['then'](respondWithResult(_0x33da1f,null))[_0x4485('0x5c')](handleError(_0x33da1f,null));};
\ No newline at end of file
index 1d58a12..4b96a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba88=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xba88,0xed));var _0x8ba8=function(_0x48dc44,_0x28ce33){_0x48dc44=_0x48dc44-0x0;var _0x449f61=_0xba88[_0x48dc44];return _0x449f61;};'use strict';var EventEmitter=require(_0x8ba8('0x0'));var FaxAccount=require(_0x8ba8('0x1'))['db'][_0x8ba8('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x8ba8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8ba8('0x4'),'afterDestroy':_0x8ba8('0x5')};function emitEvent(_0x8a6ef1){return function(_0x5ac532,_0x435aba,_0xf4e6de){FaxAccountEvents[_0x8ba8('0x6')](_0x8a6ef1+':'+_0x5ac532['id'],_0x5ac532);FaxAccountEvents['emit'](_0x8a6ef1,_0x5ac532);_0xf4e6de(null);};}for(var e in events){if(events[_0x8ba8('0x7')](e)){var event=events[e];FaxAccount[_0x8ba8('0x8')](e,emitEvent(event));}}module[_0x8ba8('0x9')]=FaxAccountEvents;
\ No newline at end of file
+var _0x0082=['hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','update','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0082,0x157));var _0x2008=function(_0x3e4630,_0x59b7d8){_0x3e4630=_0x3e4630-0x0;var _0x4ddd4e=_0x0082[_0x3e4630];return _0x4ddd4e;};'use strict';var EventEmitter=require(_0x2008('0x0'));var FaxAccount=require(_0x2008('0x1'))['db'][_0x2008('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x2008('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2008('0x4'),'afterDestroy':_0x2008('0x5')};function emitEvent(_0x51ba0f){return function(_0x35116b,_0x273275,_0x378e05){FaxAccountEvents[_0x2008('0x6')](_0x51ba0f+':'+_0x35116b['id'],_0x35116b);FaxAccountEvents[_0x2008('0x6')](_0x51ba0f,_0x35116b);_0x378e05(null);};}for(var e in events){if(events[_0x2008('0x7')](e)){var event=events[e];FaxAccount[_0x2008('0x8')](e,emitEvent(event));}}module[_0x2008('0x9')]=FaxAccountEvents;
\ No newline at end of file
index 47557ca..897c6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd06=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./faxAccount.attributes','define','FaxAccount','lodash','util'];(function(_0x845505,_0x19e5f3){var _0x2513b9=function(_0x10e7af){while(--_0x10e7af){_0x845505['push'](_0x845505['shift']());}};_0x2513b9(++_0x19e5f3);}(_0xfd06,0xb2));var _0x6fd0=function(_0xed01eb,_0x275edb){_0xed01eb=_0xed01eb-0x0;var _0x25b9de=_0xfd06[_0xed01eb];return _0x25b9de;};'use strict';var _=require(_0x6fd0('0x0'));var util=require(_0x6fd0('0x1'));var logger=require(_0x6fd0('0x2'))(_0x6fd0('0x3'));var moment=require(_0x6fd0('0x4'));var BPromise=require(_0x6fd0('0x5'));var rp=require(_0x6fd0('0x6'));var fs=require('fs');var path=require(_0x6fd0('0x7'));var rimraf=require(_0x6fd0('0x8'));var config=require('../../config/environment');var attributes=require(_0x6fd0('0x9'));module['exports']=function(_0x313941,_0x31859d){return _0x313941[_0x6fd0('0xa')](_0x6fd0('0xb'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x398b=['exports','define','FaxAccount','fax_accounts','lodash','util','api','moment','request-promise','path','rimraf','./faxAccount.attributes'];(function(_0x52a7a9,_0x431e54){var _0x144247=function(_0x248eac){while(--_0x248eac){_0x52a7a9['push'](_0x52a7a9['shift']());}};_0x144247(++_0x431e54);}(_0x398b,0x1cc));var _0xb398=function(_0x346f68,_0xb45d9d){_0x346f68=_0x346f68-0x0;var _0x2d1803=_0x398b[_0x346f68];return _0x2d1803;};'use strict';var _=require(_0xb398('0x0'));var util=require(_0xb398('0x1'));var logger=require('../../config/logger')(_0xb398('0x2'));var moment=require(_0xb398('0x3'));var BPromise=require('bluebird');var rp=require(_0xb398('0x4'));var fs=require('fs');var path=require(_0xb398('0x5'));var rimraf=require(_0xb398('0x6'));var config=require('../../config/environment');var attributes=require(_0xb398('0x7'));module[_0xb398('0x8')]=function(_0x169b05,_0x3e30b7){return _0x169b05[_0xb398('0x9')](_0xb398('0xa'),attributes,{'tableName':_0xb398('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e24047d..f2894e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f14=['defaults','FaxInteraction','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','created','interaction','create','ContactId','name','waitForTheAssignedAgent','startRouting','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','catch','NotifyFaxAccount','body','fax','CmContact','then','Sequelize','ValidationError','difference','keys','updatedAt','createdAt','CompanyId','ListId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','FaxAccount','find','account','CmList','Contacts','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length'];(function(_0x102243,_0x2b4dde){var _0x1d302c=function(_0x50c1fb){while(--_0x50c1fb){_0x102243['push'](_0x102243['shift']());}};_0x1d302c(++_0x2b4dde);}(_0x6f14,0x1bd));var _0x46f1=function(_0x204e43,_0x59a350){_0x204e43=_0x204e43-0x0;var _0x3888d2=_0x6f14[_0x204e43];return _0x3888d2;};'use strict';var _=require('lodash');var util=require(_0x46f1('0x0'));var moment=require(_0x46f1('0x1'));var BPromise=require(_0x46f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x46f1('0x3'));var db=require(_0x46f1('0x4'))['db'];var utils=require(_0x46f1('0x5'));var logger=require(_0x46f1('0x6'))(_0x46f1('0x7'));var config=require(_0x46f1('0x8'));var jayson=require(_0x46f1('0x9'));var client=jayson['client'][_0x46f1('0xa')]({'port':0x232c});config[_0x46f1('0xb')]=_['defaults'](config[_0x46f1('0xb')],{'host':_0x46f1('0xc'),'port':0x18eb});var socket=require(_0x46f1('0xd'))(new Redis(config['redis']));require(_0x46f1('0xe'))[_0x46f1('0xf')](socket);function respondWithRpcPromise(_0x7a402e,_0x24f6ea,_0x17cfb2){return new BPromise(function(_0x4f0a9b,_0x4c6a04){return client[_0x46f1('0x10')](_0x7a402e,_0x17cfb2)['then'](function(_0x137b1b){logger[_0x46f1('0x11')](_0x46f1('0x12'),_0x24f6ea,_0x46f1('0x13'));logger[_0x46f1('0x14')](_0x46f1('0x15'),_0x24f6ea,_0x46f1('0x13'),JSON[_0x46f1('0x16')](_0x137b1b));if(_0x137b1b[_0x46f1('0x17')]){if(_0x137b1b[_0x46f1('0x17')][_0x46f1('0x18')]===0x1f4){logger['error'](_0x46f1('0x12'),_0x24f6ea,_0x137b1b[_0x46f1('0x17')][_0x46f1('0x19')]);return _0x4c6a04(_0x137b1b['error']['message']);}logger['error'](_0x46f1('0x12'),_0x24f6ea,_0x137b1b[_0x46f1('0x17')][_0x46f1('0x19')]);return _0x4f0a9b(_0x137b1b[_0x46f1('0x17')]['message']);}else{logger[_0x46f1('0x11')](_0x46f1('0x12'),_0x24f6ea,_0x46f1('0x13'));_0x4f0a9b(_0x137b1b[_0x46f1('0x1a')][_0x46f1('0x19')]);}})['catch'](function(_0xba679f){logger['error'](_0x46f1('0x12'),_0x24f6ea,_0xba679f);_0x4c6a04(_0xba679f);});});}exports['GetFaxAccount']=function(_0x58c51c){var _0x1acdc9=this;return new Promise(function(_0x36c3ba,_0x209bd0){return db['FaxAccount']['findAll']({'raw':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1c')]===undefined?!![]:![]:!![],'where':_0x58c51c['options']?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1d')]||null:null,'attributes':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c['options'][_0x46f1('0x1e')]||null:null,'limit':_0x58c51c['options']?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x1f')]||null:null,'include':_0x58c51c[_0x46f1('0x1b')]?_0x58c51c[_0x46f1('0x1b')][_0x46f1('0x20')]?_['map'](_0x58c51c['options'][_0x46f1('0x20')],function(_0x3ff36b){return{'model':db[_0x3ff36b['model']],'as':_0x3ff36b['as'],'attributes':_0x3ff36b[_0x46f1('0x1e')],'include':_0x3ff36b['include']?_['map'](_0x3ff36b['include'],function(_0x5028b4){return{'model':db[_0x5028b4['model']],'as':_0x5028b4['as'],'attributes':_0x5028b4[_0x46f1('0x1e')],'include':_0x5028b4[_0x46f1('0x20')]?_[_0x46f1('0x21')](_0x5028b4[_0x46f1('0x20')],function(_0x747377){return{'model':db[_0x747377[_0x46f1('0x22')]],'as':_0x747377['as'],'attributes':_0x747377[_0x46f1('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a8d15){logger[_0x46f1('0x11')](_0x46f1('0x23'),_0x58c51c);logger[_0x46f1('0x14')]('GetFaxAccount',_0x58c51c,JSON[_0x46f1('0x16')](_0x2a8d15));_0x36c3ba(_0x2a8d15);})[_0x46f1('0x24')](function(_0x1c9019){logger['error']('GetFaxAccount',_0x1c9019[_0x46f1('0x19')],_0x58c51c);_0x209bd0(_0x1acdc9['error'](0x1f4,_0x1c9019[_0x46f1('0x19')]));});});};exports[_0x46f1('0x25')]=function(_0x4f5795,_0xa7c0e5,_0x45faa2){var _0x4b6411=this;return new Promise(function(_0x23572f,_0x3ece5f){var _0x240cc3={'body':_0x4f5795[_0x46f1('0x26')],'channel':_0x46f1('0x27')};var _0x2a3916=[];var _0xca7cff=[];var _0x37a6ad={};return db[_0x46f1('0x28')]['describe']()[_0x46f1('0x29')](function(_0x49d032){if(!_0x49d032){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))]('no\x20available\x20attributes');}_0x2a3916=_[_0x46f1('0x2c')](_[_0x46f1('0x2d')](_0x49d032),['createdAt',_0x46f1('0x2e')]);_0xca7cff=_[_0x46f1('0x2c')](_[_0x46f1('0x2d')](_0x49d032),[_0x46f1('0x2f'),_0x46f1('0x2e'),_0x46f1('0x30'),_0x46f1('0x31')]);if(_0x4f5795[_0x46f1('0x26')]['id']){delete _0x4f5795[_0x46f1('0x26')]['id'];}if(_[_0x46f1('0x32')](_0x4f5795[_0x46f1('0x26')]['from'])){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')])||_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')]===''){throw new db[(_0x46f1('0x2a'))][(_0x46f1('0x2b'))](_0x46f1('0x33'));}if(_['isNil'](_0x4f5795[_0x46f1('0x26')]['mapKey'])){throw new db['Sequelize'][(_0x46f1('0x2b'))](_0x46f1('0x34')+_0xca7cff);}if(!_['includes'](_0xca7cff,_0x4f5795[_0x46f1('0x26')][_0x46f1('0x35')])){throw new db['Sequelize']['ValidationError'](_0x46f1('0x36')+_0xca7cff);}_0x37a6ad[_0x4f5795['body'][_0x46f1('0x35')]]=_0x4f5795['body'][_0x46f1('0x37')];})[_0x46f1('0x29')](function(){return db[_0x46f1('0x38')][_0x46f1('0x39')]({'where':{'id':_0x4f5795[_0x46f1('0x3a')]['id']},'include':[{'model':db[_0x46f1('0x3b')],'as':'List','include':[{'model':db['CmContact'],'as':_0x46f1('0x3c'),'where':_0x37a6ad,'limit':0x1,'order':[[_0x46f1('0x2e'),'DESC']]}]},{'model':db[_0x46f1('0x3d')],'as':_0x46f1('0x3e')}]});})[_0x46f1('0x29')](function(_0x30a2cc){if(_0x30a2cc&&_0x30a2cc[_0x46f1('0x3f')]){var _0x3177ff=_0x30a2cc[_0x46f1('0x40')]({'plain':!![]});_0x240cc3['account']=_0x3177ff;_0x240cc3[_0x46f1('0x41')]=_0x3177ff['Applications'];_0x240cc3[_0x46f1('0x42')]=_0x3177ff['List'];_0x240cc3[_0x46f1('0x41')]=_[_0x46f1('0x43')](_0x240cc3[_0x46f1('0x41')],[_0x46f1('0x44')],[_0x46f1('0x45')]);if(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3e')]){delete _0x240cc3[_0x46f1('0x3a')]['Applications'];}if(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3f')]&&_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x3f')]['Contacts'][_0x46f1('0x46')]){return _0x240cc3[_0x46f1('0x3a')]['List'][_0x46f1('0x3c')][0x0];}var _0x58fb9e=_[_0x46f1('0x47')](_0x4f5795[_0x46f1('0x26')],{'firstName':_0x4f5795[_0x46f1('0x26')][_0x46f1('0x37')],'ListId':_0x3177ff['ListId']});_0x58fb9e[_0x4f5795['body'][_0x46f1('0x35')]]=_0x4f5795[_0x46f1('0x26')][_0x46f1('0x37')];return db[_0x46f1('0x28')]['create'](_0x58fb9e,{'fields':_0x2a3916,'raw':!![]});}})[_0x46f1('0x29')](function(_0x4027d3){_0x240cc3['contact']=_0x4027d3;if(_0x4027d3){var _0x12cb52={'ContactId':_0x4027d3['id'],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id'],'fax':_0x4027d3[_0x46f1('0x27')]};return db['FaxInteraction'][_0x46f1('0x39')]({'where':{'ContactId':_0x4027d3['id'],'closed':![],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id']}})['then'](function(_0x24f512){if(_0x24f512){return[_0x24f512,![]];}return db[_0x46f1('0x48')]['create'](_0x12cb52)[_0x46f1('0x29')](function(_0x4d538c){return[_0x4d538c,!![]];});});}else{throw new Error(_0x46f1('0x49'));}})[_0x46f1('0x4a')](function(_0x5c11ee,_0x53facf){var _0xe76b59=_0x5c11ee[_0x46f1('0x40')]({'plain':!![]});if(_0x53facf){if(_0x240cc3['account'][_0x46f1('0x4b')]){_0x240cc3[_0x46f1('0x41')]['push']({'id':0x0,'priority':_0x240cc3[_0x46f1('0x41')]['length']+0x1,'app':_0x46f1('0x4c'),'appdata':_0x46f1('0x4d'),'interval':_0x46f1('0x4e')});}_0xe76b59[_0x46f1('0x4f')]=!![];}else{_0xe76b59[_0x46f1('0x4f')]=![];}_0x240cc3[_0x46f1('0x50')]=_0xe76b59;return db['FaxMessage'][_0x46f1('0x51')]({'body':_0x4f5795[_0x46f1('0x26')][_0x46f1('0x26')],'FaxAccountId':_0x4f5795[_0x46f1('0x3a')]['id'],'FaxInteractionId':_0x5c11ee['id'],'direction':'in','ContactId':_0x5c11ee[_0x46f1('0x52')],'AttachmentId':_0x4f5795[_0x46f1('0x26')]['AttachmentId']});})[_0x46f1('0x29')](function(_0x46d4c4){_0x240cc3['message']=_0x46d4c4;if(_0x240cc3['interaction']['UserId']){return db['User'][_0x46f1('0x39')]({'attributes':['id',_0x46f1('0x53')],'where':{'id':_0x240cc3[_0x46f1('0x50')]['UserId']}})['then'](function(_0x42c0c1){if(_0x42c0c1){_0x240cc3['applications']['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x42c0c1[_0x46f1('0x53')]+','+(_0x240cc3[_0x46f1('0x3a')][_0x46f1('0x54')]||0xa),'interval':_0x46f1('0x4e')});}return respondWithRpcPromise('Start','startRouting',_0x240cc3);});}return respondWithRpcPromise('Start',_0x46f1('0x55'),_0x240cc3);})[_0x46f1('0x29')](function(_0x5cee94){_0x23572f(_0x5cee94);})[_0x46f1('0x24')](function(_0x380a1a){_0x3ece5f(_0x4b6411[_0x46f1('0x17')](0x1f4,_0x380a1a[_0x46f1('0x19')]));});});};
\ No newline at end of file
+var _0x6248=['http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','debug','request\x20sent','stringify','error','code','message','FaxAccount,\x20%s,\x20%s','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','NotifyFaxAccount','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','CompanyId','ListId','body','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','find','account','Contacts','DESC','Applications','List','list','applications','orderBy','priority','length','create','contact','FaxInteraction','Contact\x20not\x20found','get','autoclose','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x187541,_0x236b4d){var _0x48f409=function(_0x4c58ca){while(--_0x4c58ca){_0x187541['push'](_0x187541['shift']());}};_0x48f409(++_0x236b4d);}(_0x6248,0x162));var _0x8624=function(_0x8efcd5,_0x372c01){_0x8efcd5=_0x8efcd5-0x0;var _0x3e7a4b=_0x6248[_0x8efcd5];return _0x3e7a4b;};'use strict';var _=require(_0x8624('0x0'));var util=require(_0x8624('0x1'));var moment=require(_0x8624('0x2'));var BPromise=require(_0x8624('0x3'));var rs=require(_0x8624('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8624('0x5'))['db'];var utils=require(_0x8624('0x6'));var logger=require('../../config/logger')(_0x8624('0x7'));var config=require('../../config/environment');var jayson=require(_0x8624('0x8'));var client=jayson[_0x8624('0x9')][_0x8624('0xa')]({'port':0x232c});config[_0x8624('0xb')]=_[_0x8624('0xc')](config['redis'],{'host':_0x8624('0xd'),'port':0x18eb});var socket=require(_0x8624('0xe'))(new Redis(config[_0x8624('0xb')]));require(_0x8624('0xf'))[_0x8624('0x10')](socket);function respondWithRpcPromise(_0x20760f,_0x485a5c,_0x89759){return new BPromise(function(_0x5b4e1c,_0x49bbc2){return client[_0x8624('0x11')](_0x20760f,_0x89759)[_0x8624('0x12')](function(_0x205503){logger[_0x8624('0x13')]('FaxAccount,\x20%s,\x20%s',_0x485a5c,'request\x20sent');logger[_0x8624('0x14')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x485a5c,_0x8624('0x15'),JSON[_0x8624('0x16')](_0x205503));if(_0x205503[_0x8624('0x17')]){if(_0x205503[_0x8624('0x17')][_0x8624('0x18')]===0x1f4){logger[_0x8624('0x17')]('FaxAccount,\x20%s,\x20%s',_0x485a5c,_0x205503[_0x8624('0x17')][_0x8624('0x19')]);return _0x49bbc2(_0x205503['error'][_0x8624('0x19')]);}logger[_0x8624('0x17')]('FaxAccount,\x20%s,\x20%s',_0x485a5c,_0x205503['error'][_0x8624('0x19')]);return _0x5b4e1c(_0x205503['error'][_0x8624('0x19')]);}else{logger[_0x8624('0x13')](_0x8624('0x1a'),_0x485a5c,_0x8624('0x15'));_0x5b4e1c(_0x205503[_0x8624('0x1b')]['message']);}})[_0x8624('0x1c')](function(_0x4c1046){logger[_0x8624('0x17')](_0x8624('0x1a'),_0x485a5c,_0x4c1046);_0x49bbc2(_0x4c1046);});});}exports[_0x8624('0x1d')]=function(_0x57ef38){var _0x5b33d8=this;return new Promise(function(_0x5956d7,_0xf4fb6c){return db[_0x8624('0x1e')][_0x8624('0x1f')]({'raw':_0x57ef38['options']?_0x57ef38[_0x8624('0x20')][_0x8624('0x21')]===undefined?!![]:![]:!![],'where':_0x57ef38[_0x8624('0x20')]?_0x57ef38[_0x8624('0x20')][_0x8624('0x22')]||null:null,'attributes':_0x57ef38[_0x8624('0x20')]?_0x57ef38['options'][_0x8624('0x23')]||null:null,'limit':_0x57ef38[_0x8624('0x20')]?_0x57ef38[_0x8624('0x20')][_0x8624('0x24')]||null:null,'include':_0x57ef38[_0x8624('0x20')]?_0x57ef38[_0x8624('0x20')][_0x8624('0x25')]?_[_0x8624('0x26')](_0x57ef38['options']['include'],function(_0x54a2b2){return{'model':db[_0x54a2b2[_0x8624('0x27')]],'as':_0x54a2b2['as'],'attributes':_0x54a2b2['attributes'],'include':_0x54a2b2[_0x8624('0x25')]?_[_0x8624('0x26')](_0x54a2b2[_0x8624('0x25')],function(_0x1081c8){return{'model':db[_0x1081c8['model']],'as':_0x1081c8['as'],'attributes':_0x1081c8['attributes'],'include':_0x1081c8[_0x8624('0x25')]?_[_0x8624('0x26')](_0x1081c8[_0x8624('0x25')],function(_0x45ce4b){return{'model':db[_0x45ce4b[_0x8624('0x27')]],'as':_0x45ce4b['as'],'attributes':_0x45ce4b[_0x8624('0x23')]};}):[]};}):[]};}):[]:[]})[_0x8624('0x12')](function(_0x27e21c){logger[_0x8624('0x13')](_0x8624('0x1d'),_0x57ef38);logger[_0x8624('0x14')]('GetFaxAccount',_0x57ef38,JSON[_0x8624('0x16')](_0x27e21c));_0x5956d7(_0x27e21c);})['catch'](function(_0x4e4c35){logger[_0x8624('0x17')](_0x8624('0x1d'),_0x4e4c35['message'],_0x57ef38);_0xf4fb6c(_0x5b33d8[_0x8624('0x17')](0x1f4,_0x4e4c35['message']));});});};exports[_0x8624('0x28')]=function(_0x4702d9,_0xd5ca7a,_0x5d4851){var _0x437959=this;return new Promise(function(_0x30888f,_0x6e7a53){var _0x18f1e={'body':_0x4702d9['body'],'channel':_0x8624('0x29')};var _0x573b04=[];var _0x2769a7=[];var _0x43f6f7={};return db[_0x8624('0x2a')][_0x8624('0x2b')]()[_0x8624('0x12')](function(_0x55334b){if(!_0x55334b){throw new db[(_0x8624('0x2c'))][(_0x8624('0x2d'))](_0x8624('0x2e'));}_0x573b04=_[_0x8624('0x2f')](_['keys'](_0x55334b),[_0x8624('0x30'),_0x8624('0x31')]);_0x2769a7=_[_0x8624('0x2f')](_[_0x8624('0x32')](_0x55334b),[_0x8624('0x30'),_0x8624('0x31'),_0x8624('0x33'),_0x8624('0x34')]);if(_0x4702d9['body']['id']){delete _0x4702d9['body']['id'];}if(_['isNil'](_0x4702d9[_0x8624('0x35')]['from'])){throw new db['Sequelize'][(_0x8624('0x2d'))](_0x8624('0x36'));}if(_[_0x8624('0x37')](_0x4702d9[_0x8624('0x35')]['body'])||_0x4702d9[_0x8624('0x35')][_0x8624('0x35')]===''){throw new db[(_0x8624('0x2c'))][(_0x8624('0x2d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8624('0x37')](_0x4702d9[_0x8624('0x35')][_0x8624('0x38')])){throw new db[(_0x8624('0x2c'))][(_0x8624('0x2d'))](_0x8624('0x39')+_0x2769a7);}if(!_['includes'](_0x2769a7,_0x4702d9[_0x8624('0x35')][_0x8624('0x38')])){throw new db[(_0x8624('0x2c'))][(_0x8624('0x2d'))](_0x8624('0x3a')+_0x2769a7);}_0x43f6f7[_0x4702d9[_0x8624('0x35')][_0x8624('0x38')]]=_0x4702d9[_0x8624('0x35')][_0x8624('0x3b')];})[_0x8624('0x12')](function(){return db[_0x8624('0x1e')][_0x8624('0x3c')]({'where':{'id':_0x4702d9[_0x8624('0x3d')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x8624('0x2a')],'as':_0x8624('0x3e'),'where':_0x43f6f7,'limit':0x1,'order':[[_0x8624('0x31'),_0x8624('0x3f')]]}]},{'model':db['FaxApplication'],'as':_0x8624('0x40')}]});})[_0x8624('0x12')](function(_0x32d178){if(_0x32d178&&_0x32d178[_0x8624('0x41')]){var _0x3a1c65=_0x32d178['get']({'plain':!![]});_0x18f1e[_0x8624('0x3d')]=_0x3a1c65;_0x18f1e['applications']=_0x3a1c65[_0x8624('0x40')];_0x18f1e[_0x8624('0x42')]=_0x3a1c65[_0x8624('0x41')];_0x18f1e[_0x8624('0x43')]=_[_0x8624('0x44')](_0x18f1e['applications'],[_0x8624('0x45')],['asc']);if(_0x18f1e[_0x8624('0x3d')][_0x8624('0x40')]){delete _0x18f1e[_0x8624('0x3d')][_0x8624('0x40')];}if(_0x18f1e[_0x8624('0x3d')][_0x8624('0x41')]&&_0x18f1e[_0x8624('0x3d')][_0x8624('0x41')][_0x8624('0x3e')][_0x8624('0x46')]){return _0x18f1e[_0x8624('0x3d')][_0x8624('0x41')][_0x8624('0x3e')][0x0];}var _0x17fb19=_['defaults'](_0x4702d9[_0x8624('0x35')],{'firstName':_0x4702d9[_0x8624('0x35')][_0x8624('0x3b')],'ListId':_0x3a1c65['ListId']});_0x17fb19[_0x4702d9[_0x8624('0x35')][_0x8624('0x38')]]=_0x4702d9[_0x8624('0x35')]['from'];return db[_0x8624('0x2a')][_0x8624('0x47')](_0x17fb19,{'fields':_0x573b04,'raw':!![]});}})[_0x8624('0x12')](function(_0x5b3190){_0x18f1e[_0x8624('0x48')]=_0x5b3190;if(_0x5b3190){var _0x403464={'ContactId':_0x5b3190['id'],'FaxAccountId':_0x4702d9[_0x8624('0x3d')]['id'],'fax':_0x5b3190[_0x8624('0x29')]};return db[_0x8624('0x49')]['find']({'where':{'ContactId':_0x5b3190['id'],'closed':![],'FaxAccountId':_0x4702d9[_0x8624('0x3d')]['id']}})['then'](function(_0x3c8616){if(_0x3c8616){return[_0x3c8616,![]];}return db['FaxInteraction']['create'](_0x403464)[_0x8624('0x12')](function(_0x1a1457){return[_0x1a1457,!![]];});});}else{throw new Error(_0x8624('0x4a'));}})['spread'](function(_0x4cb4ba,_0x44ef9b){var _0x143679=_0x4cb4ba[_0x8624('0x4b')]({'plain':!![]});if(_0x44ef9b){if(_0x18f1e['account'][_0x8624('0x4c')]){_0x18f1e[_0x8624('0x43')]['push']({'id':0x0,'priority':_0x18f1e[_0x8624('0x43')][_0x8624('0x46')]+0x1,'app':_0x8624('0x4d'),'appdata':_0x8624('0x4e'),'interval':_0x8624('0x4f')});}_0x143679[_0x8624('0x50')]=!![];}else{_0x143679[_0x8624('0x50')]=![];}_0x18f1e[_0x8624('0x51')]=_0x143679;return db[_0x8624('0x52')][_0x8624('0x47')]({'body':_0x4702d9[_0x8624('0x35')][_0x8624('0x35')],'FaxAccountId':_0x4702d9[_0x8624('0x3d')]['id'],'FaxInteractionId':_0x4cb4ba['id'],'direction':'in','ContactId':_0x4cb4ba[_0x8624('0x53')],'AttachmentId':_0x4702d9[_0x8624('0x35')][_0x8624('0x54')]});})[_0x8624('0x12')](function(_0x481e){_0x18f1e[_0x8624('0x19')]=_0x481e;if(_0x18f1e[_0x8624('0x51')][_0x8624('0x55')]){return db[_0x8624('0x56')][_0x8624('0x3c')]({'attributes':['id','name'],'where':{'id':_0x18f1e[_0x8624('0x51')][_0x8624('0x55')]}})['then'](function(_0x272326){if(_0x272326){_0x18f1e[_0x8624('0x43')][_0x8624('0x57')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x272326['name']+','+(_0x18f1e[_0x8624('0x3d')][_0x8624('0x58')]||0xa),'interval':_0x8624('0x4f')});}return respondWithRpcPromise(_0x8624('0x59'),_0x8624('0x5a'),_0x18f1e);});}return respondWithRpcPromise('Start',_0x8624('0x5a'),_0x18f1e);})[_0x8624('0x12')](function(_0x312ea5){_0x30888f(_0x312ea5);})['catch'](function(_0xabf4c3){_0x6e7a53(_0x437959['error'](0x1f4,_0xabf4c3['message']));});});};
\ No newline at end of file
index d27e876..fb04036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd451=['emit','length','./faxAccount.events','save','remove','update'];(function(_0x402dcf,_0x49d7a3){var _0x59e607=function(_0x1bf2dc){while(--_0x1bf2dc){_0x402dcf['push'](_0x402dcf['shift']());}};_0x59e607(++_0x49d7a3);}(_0xd451,0x68));var _0x1d45=function(_0x589e34,_0x40fe58){_0x589e34=_0x589e34-0x0;var _0x512a2f=_0xd451[_0x589e34];return _0x512a2f;};'use strict';var FaxAccountEvents=require(_0x1d45('0x0'));var events=[_0x1d45('0x1'),_0x1d45('0x2'),_0x1d45('0x3')];function createListener(_0x11c6b2,_0x17cd06){return function(_0xfa3f62){_0x17cd06[_0x1d45('0x4')](_0x11c6b2,_0xfa3f62);};}function removeListener(_0x71078a,_0x3cd05f){return function(){FaxAccountEvents['removeListener'](_0x71078a,_0x3cd05f);};}exports['register']=function(_0xcb294e){for(var _0x392e25=0x0,_0x5ab958=events[_0x1d45('0x5')];_0x392e25<_0x5ab958;_0x392e25++){var _0x4fb70a=events[_0x392e25];var _0xf0746=createListener('faxAccount:'+_0x4fb70a,_0xcb294e);FaxAccountEvents['on'](_0x4fb70a,_0xf0746);}};
\ No newline at end of file
+var _0xd347=['save','remove','emit','removeListener','register','faxAccount:','./faxAccount.events'];(function(_0x42e2ed,_0x506514){var _0x3b06f5=function(_0x222b49){while(--_0x222b49){_0x42e2ed['push'](_0x42e2ed['shift']());}};_0x3b06f5(++_0x506514);}(_0xd347,0x102));var _0x7d34=function(_0x3680ac,_0x55cadb){_0x3680ac=_0x3680ac-0x0;var _0xc4ef90=_0xd347[_0x3680ac];return _0xc4ef90;};'use strict';var FaxAccountEvents=require(_0x7d34('0x0'));var events=[_0x7d34('0x1'),_0x7d34('0x2'),'update'];function createListener(_0x1fb0c1,_0x283b90){return function(_0x2a98c2){_0x283b90[_0x7d34('0x3')](_0x1fb0c1,_0x2a98c2);};}function removeListener(_0x2dd6eb,_0x43a074){return function(){FaxAccountEvents[_0x7d34('0x4')](_0x2dd6eb,_0x43a074);};}exports[_0x7d34('0x5')]=function(_0x2c6b9c){for(var _0x4570f8=0x0,_0x55b9eb=events['length'];_0x4570f8<_0x55b9eb;_0x4570f8++){var _0x308aae=events[_0x4570f8];var _0x3660a2=createListener(_0x7d34('0x6')+_0x308aae,_0x2c6b9c);FaxAccountEvents['on'](_0x308aae,_0x3660a2);}};
\ No newline at end of file
index c542a27..03030cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0xd4f3c3,_0x538c1b){var _0x2d338b=function(_0x8ad381){while(--_0x8ad381){_0xd4f3c3['push'](_0xd4f3c3['shift']());}};_0x2d338b(++_0x538c1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x4b9806,_0x1517c0){var _0x12f4d4=function(_0x2f0984){while(--_0x2f0984){_0x4b9806['push'](_0x4b9806['shift']());}};_0x12f4d4(++_0x1517c0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index c2fb2aa..29e6fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda97=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x60ef11,_0x1f8b52){var _0x19373b=function(_0x373ce1){while(--_0x373ce1){_0x60ef11['push'](_0x60ef11['shift']());}};_0x19373b(++_0x1f8b52);}(_0xda97,0x153));var _0x7da9=function(_0x8f1fe6,_0x4700b9){_0x8f1fe6=_0x8f1fe6-0x0;var _0x2e8732=_0xda97[_0x8f1fe6];return _0x2e8732;};'use strict';var Sequelize=require(_0x7da9('0x0'));module[_0x7da9('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x7da9('0x2')],'allowNull':![],'defaultValue':_0x7da9('0x3')},'appdata':{'type':Sequelize[_0x7da9('0x4')]()},'description':{'type':Sequelize[_0x7da9('0x2')]},'interval':{'type':Sequelize[_0x7da9('0x2')],'defaultValue':_0x7da9('0x5')}};
\ No newline at end of file
+var _0x7a09=['TEXT','STRING'];(function(_0x2b7957,_0x555d64){var _0x35e30b=function(_0x43ff6c){while(--_0x43ff6c){_0x2b7957['push'](_0x2b7957['shift']());}};_0x35e30b(++_0x555d64);}(_0x7a09,0xa3));var _0x97a0=function(_0x32a884,_0x183853){_0x32a884=_0x32a884-0x0;var _0x242f9b=_0x7a09[_0x32a884];return _0x242f9b;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x97a0('0x0')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x97a0('0x1')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x97a0('0x0')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 16382ed..23e249e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0014=['../../config/logger','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','length','find','catch','create','body','params','eml-format','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0x0014,0xbb));var _0x4001=function(_0x2d20bc,_0x1b7e64){_0x2d20bc=_0x2d20bc-0x0;var _0x442742=_0x0014[_0x2d20bc];return _0x442742;};'use strict';var emlformat=require(_0x4001('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4001('0x1'));var moment=require('moment');var BPromise=require(_0x4001('0x2'));var Mustache=require(_0x4001('0x3'));var util=require(_0x4001('0x4'));var path=require('path');var sox=require(_0x4001('0x5'));var csv=require(_0x4001('0x6'));var ejs=require(_0x4001('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4001('0x8'));var squel=require(_0x4001('0x9'));var crypto=require(_0x4001('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4001('0xb'));var toCsv=require(_0x4001('0x6'));var querystring=require(_0x4001('0xc'));var Papa=require(_0x4001('0xd'));var Redis=require('ioredis');var authService=require(_0x4001('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4001('0xf'));var hardwareService=require(_0x4001('0x10'));var logger=require(_0x4001('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x90b292,_0x508dca){_0x508dca=_0x508dca||0xcc;return function(_0x1077b9){if(_0x1077b9){return _0x90b292[_0x4001('0x12')](_0x508dca);}return _0x90b292[_0x4001('0x13')](_0x508dca)['end']();};}function respondWithResult(_0x32dce2,_0x361182){_0x361182=_0x361182||0xc8;return function(_0x3fec82){if(_0x3fec82){return _0x32dce2[_0x4001('0x13')](_0x361182)[_0x4001('0x14')](_0x3fec82);}};}function respondWithFilteredResult(_0xfc2d72,_0x5849e9){return function(_0x18671d){if(_0x18671d){var _0x4aed3d=typeof _0x5849e9[_0x4001('0x15')]===_0x4001('0x16')&&typeof _0x5849e9[_0x4001('0x17')]==='undefined';var _0x48106b=_0x18671d[_0x4001('0x18')];var _0x6116bb=_0x4aed3d?0x0:_0x5849e9['offset'];var _0x145fdd=_0x4aed3d?_0x18671d[_0x4001('0x18')]:_0x5849e9[_0x4001('0x15')]+_0x5849e9[_0x4001('0x17')];var _0x1b4c86;if(_0x145fdd>=_0x48106b){_0x145fdd=_0x48106b;_0x1b4c86=0xc8;}else{_0x1b4c86=0xce;}_0xfc2d72[_0x4001('0x13')](_0x1b4c86);return _0xfc2d72[_0x4001('0x19')](_0x4001('0x1a'),_0x6116bb+'-'+_0x145fdd+'/'+_0x48106b)[_0x4001('0x14')](_0x18671d);}return null;};}function patchUpdates(_0x18c212){return function(_0x25dabd){try{jsonpatch[_0x4001('0x1b')](_0x25dabd,_0x18c212,!![]);}catch(_0x151be8){return BPromise['reject'](_0x151be8);}return _0x25dabd[_0x4001('0x1c')]();};}function saveUpdates(_0x767b59,_0x48729f){return function(_0x2434c6){if(_0x2434c6){return _0x2434c6[_0x4001('0x1d')](_0x767b59)[_0x4001('0x1e')](function(_0xf9404a){return _0xf9404a;});}return null;};}function removeEntity(_0x2db702,_0x3abf49){return function(_0x48dfa6){if(_0x48dfa6){return _0x48dfa6[_0x4001('0x1f')]()[_0x4001('0x1e')](function(){_0x2db702[_0x4001('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44564f,_0x13d827){return function(_0x1fab31){if(!_0x1fab31){_0x44564f[_0x4001('0x12')](0x194);}return _0x1fab31;};}function handleError(_0x561343,_0x56ff48){_0x56ff48=_0x56ff48||0x1f4;return function(_0x24566e){logger[_0x4001('0x20')](_0x24566e['stack']);if(_0x24566e[_0x4001('0x21')]){delete _0x24566e[_0x4001('0x21')];}_0x561343[_0x4001('0x13')](_0x56ff48)[_0x4001('0x22')](_0x24566e);};}exports[_0x4001('0x23')]=function(_0x10ff66,_0x3664d2){var _0x1d199e={},_0x552948={},_0x2e4fa6={'count':0x0,'rows':[]};var _0x425d64=_[_0x4001('0x24')](db[_0x4001('0x25')][_0x4001('0x26')],function(_0x19abf2){return{'name':_0x19abf2[_0x4001('0x27')],'type':_0x19abf2[_0x4001('0x28')]['key']};});_0x552948[_0x4001('0x29')]=_[_0x4001('0x24')](_0x425d64,_0x4001('0x21'));_0x552948[_0x4001('0x2a')]=_[_0x4001('0x2b')](_0x10ff66['query']);_0x552948['filters']=_[_0x4001('0x2c')](_0x552948[_0x4001('0x29')],_0x552948[_0x4001('0x2a')]);_0x1d199e[_0x4001('0x2d')]=_[_0x4001('0x2c')](_0x552948[_0x4001('0x29')],qs[_0x4001('0x2e')](_0x10ff66['query'][_0x4001('0x2e')]));_0x1d199e[_0x4001('0x2d')]=_0x1d199e[_0x4001('0x2d')]['length']?_0x1d199e[_0x4001('0x2d')]:_0x552948[_0x4001('0x29')];if(!_0x10ff66[_0x4001('0x2a')][_0x4001('0x2f')](_0x4001('0x30'))){_0x1d199e['limit']=qs['limit'](_0x10ff66[_0x4001('0x2a')]['limit']);_0x1d199e[_0x4001('0x15')]=qs[_0x4001('0x15')](_0x10ff66[_0x4001('0x2a')]['offset']);}_0x1d199e['order']=qs[_0x4001('0x31')](_0x10ff66[_0x4001('0x2a')][_0x4001('0x31')]);_0x1d199e[_0x4001('0x32')]=qs[_0x4001('0x33')](_[_0x4001('0x34')](_0x10ff66[_0x4001('0x2a')],_0x552948[_0x4001('0x33')]),_0x425d64);if(_0x10ff66['query'][_0x4001('0x35')]){_0x1d199e[_0x4001('0x32')]=_[_0x4001('0x36')](_0x1d199e['where'],{'$or':_[_0x4001('0x24')](_0x425d64,function(_0x5bccbf){if(_0x5bccbf[_0x4001('0x28')]!==_0x4001('0x37')){var _0x3863f5={};_0x3863f5[_0x5bccbf[_0x4001('0x21')]]={'$like':'%'+_0x10ff66[_0x4001('0x2a')]['filter']+'%'};return _0x3863f5;}})});}_0x1d199e=_['merge']({},_0x1d199e,_0x10ff66[_0x4001('0x38')]);var _0x242a9f={'where':_0x1d199e[_0x4001('0x32')]};return db[_0x4001('0x25')][_0x4001('0x18')](_0x242a9f)[_0x4001('0x1e')](function(_0x508012){_0x2e4fa6[_0x4001('0x18')]=_0x508012;if(_0x10ff66[_0x4001('0x2a')][_0x4001('0x39')]){_0x1d199e[_0x4001('0x3a')]=[{'all':!![]}];}return db[_0x4001('0x25')][_0x4001('0x3b')](_0x1d199e);})[_0x4001('0x1e')](function(_0x2fa92d){_0x2e4fa6[_0x4001('0x3c')]=_0x2fa92d;return _0x2e4fa6;})['then'](respondWithFilteredResult(_0x3664d2,_0x1d199e))['catch'](handleError(_0x3664d2,null));};exports[_0x4001('0x3d')]=function(_0x2d7592,_0x58bb0d){var _0x478d38={'raw':!![],'where':{'id':_0x2d7592['params']['id']}},_0x50c0fb={};_0x50c0fb['model']=_['keys'](db['FaxApplication']['rawAttributes']);_0x50c0fb[_0x4001('0x2a')]=_['keys'](_0x2d7592[_0x4001('0x2a')]);_0x50c0fb['filters']=_[_0x4001('0x2c')](_0x50c0fb[_0x4001('0x29')],_0x50c0fb[_0x4001('0x2a')]);_0x478d38[_0x4001('0x2d')]=_['intersection'](_0x50c0fb[_0x4001('0x29')],qs[_0x4001('0x2e')](_0x2d7592[_0x4001('0x2a')][_0x4001('0x2e')]));_0x478d38['attributes']=_0x478d38[_0x4001('0x2d')][_0x4001('0x3e')]?_0x478d38[_0x4001('0x2d')]:_0x50c0fb['model'];if(_0x2d7592[_0x4001('0x2a')][_0x4001('0x39')]){_0x478d38['include']=[{'all':!![]}];}_0x478d38=_[_0x4001('0x36')]({},_0x478d38,_0x2d7592['options']);return db['FaxApplication'][_0x4001('0x3f')](_0x478d38)['then'](handleEntityNotFound(_0x58bb0d,null))['then'](respondWithResult(_0x58bb0d,null))[_0x4001('0x40')](handleError(_0x58bb0d,null));};exports[_0x4001('0x41')]=function(_0x502c2d,_0x335fc3){return db['FaxApplication'][_0x4001('0x41')](_0x502c2d[_0x4001('0x42')],{})[_0x4001('0x1e')](respondWithResult(_0x335fc3,0xc9))[_0x4001('0x40')](handleError(_0x335fc3,null));};exports[_0x4001('0x1d')]=function(_0xb42e44,_0x3ae9c2){if(_0xb42e44[_0x4001('0x42')]['id']){delete _0xb42e44[_0x4001('0x42')]['id'];}return db[_0x4001('0x25')][_0x4001('0x3f')]({'where':{'id':_0xb42e44[_0x4001('0x43')]['id']}})[_0x4001('0x1e')](handleEntityNotFound(_0x3ae9c2,null))[_0x4001('0x1e')](saveUpdates(_0xb42e44[_0x4001('0x42')],null))[_0x4001('0x1e')](respondWithResult(_0x3ae9c2,null))[_0x4001('0x40')](handleError(_0x3ae9c2,null));};exports['destroy']=function(_0xc65ed2,_0x29a179){return db[_0x4001('0x25')][_0x4001('0x3f')]({'where':{'id':_0xc65ed2['params']['id']}})[_0x4001('0x1e')](handleEntityNotFound(_0x29a179,null))[_0x4001('0x1e')](removeEntity(_0x29a179,null))['catch'](handleError(_0x29a179,null));};
\ No newline at end of file
+var _0x8787=['sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','rimraf','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','send','index','FaxApplication','rawAttributes','fieldName','model','map','name','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x8787,0xeb));var _0x7878=function(_0x503720,_0x2b85c5){_0x503720=_0x503720-0x0;var _0x303cbe=_0x8787[_0x503720];return _0x303cbe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7878('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7878('0x1'));var moment=require(_0x7878('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7878('0x3'));var path=require(_0x7878('0x4'));var sox=require('sox');var csv=require(_0x7878('0x5'));var ejs=require(_0x7878('0x6'));var fs=require('fs');var fs_extra=require(_0x7878('0x7'));var _=require('lodash');var squel=require(_0x7878('0x8'));var crypto=require(_0x7878('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x7878('0xa'));var toCsv=require('to-csv');var querystring=require(_0x7878('0xb'));var Papa=require(_0x7878('0xc'));var Redis=require('ioredis');var authService=require(_0x7878('0xd'));var qs=require(_0x7878('0xe'));var as=require(_0x7878('0xf'));var hardwareService=require(_0x7878('0x10'));var logger=require(_0x7878('0x11'))(_0x7878('0x12'));var utils=require(_0x7878('0x13'));var config=require(_0x7878('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7878('0x15'))['db'];function respondWithStatusCode(_0x309e84,_0x29181f){_0x29181f=_0x29181f||0xcc;return function(_0xdabb18){if(_0xdabb18){return _0x309e84[_0x7878('0x16')](_0x29181f);}return _0x309e84[_0x7878('0x17')](_0x29181f)[_0x7878('0x18')]();};}function respondWithResult(_0x1be16e,_0x26590b){_0x26590b=_0x26590b||0xc8;return function(_0x4bb358){if(_0x4bb358){return _0x1be16e['status'](_0x26590b)[_0x7878('0x19')](_0x4bb358);}};}function respondWithFilteredResult(_0x206d24,_0x5d522c){return function(_0x4bcf33){if(_0x4bcf33){var _0x19ce11=typeof _0x5d522c[_0x7878('0x1a')]===_0x7878('0x1b')&&typeof _0x5d522c[_0x7878('0x1c')]==='undefined';var _0x3bc62d=_0x4bcf33[_0x7878('0x1d')];var _0x3e3e8c=_0x19ce11?0x0:_0x5d522c[_0x7878('0x1a')];var _0x2b4055=_0x19ce11?_0x4bcf33[_0x7878('0x1d')]:_0x5d522c[_0x7878('0x1a')]+_0x5d522c[_0x7878('0x1c')];var _0x4320f2;if(_0x2b4055>=_0x3bc62d){_0x2b4055=_0x3bc62d;_0x4320f2=0xc8;}else{_0x4320f2=0xce;}_0x206d24[_0x7878('0x17')](_0x4320f2);return _0x206d24[_0x7878('0x1e')](_0x7878('0x1f'),_0x3e3e8c+'-'+_0x2b4055+'/'+_0x3bc62d)['json'](_0x4bcf33);}return null;};}function patchUpdates(_0x3dd738){return function(_0x313e5c){try{jsonpatch[_0x7878('0x20')](_0x313e5c,_0x3dd738,!![]);}catch(_0x2ba4de){return BPromise[_0x7878('0x21')](_0x2ba4de);}return _0x313e5c[_0x7878('0x22')]();};}function saveUpdates(_0x2d0d81,_0x135bc2){return function(_0x2f2784){if(_0x2f2784){return _0x2f2784[_0x7878('0x23')](_0x2d0d81)[_0x7878('0x24')](function(_0x453578){return _0x453578;});}return null;};}function removeEntity(_0x20619a,_0x256359){return function(_0x118393){if(_0x118393){return _0x118393[_0x7878('0x25')]()['then'](function(){_0x20619a[_0x7878('0x17')](0xcc)[_0x7878('0x18')]();});}};}function handleEntityNotFound(_0x465bdf,_0x20b378){return function(_0x3d3494){if(!_0x3d3494){_0x465bdf['sendStatus'](0x194);}return _0x3d3494;};}function handleError(_0x3e9509,_0x3199e2){_0x3199e2=_0x3199e2||0x1f4;return function(_0x30a66b){logger[_0x7878('0x26')](_0x30a66b['stack']);if(_0x30a66b['name']){delete _0x30a66b['name'];}_0x3e9509[_0x7878('0x17')](_0x3199e2)[_0x7878('0x27')](_0x30a66b);};}exports[_0x7878('0x28')]=function(_0x6cbe7,_0x289711){var _0x25e4d6={},_0x5829ae={},_0x776e6f={'count':0x0,'rows':[]};var _0x488e4b=_['map'](db[_0x7878('0x29')][_0x7878('0x2a')],function(_0x3413aa){return{'name':_0x3413aa[_0x7878('0x2b')],'type':_0x3413aa['type']['key']};});_0x5829ae[_0x7878('0x2c')]=_[_0x7878('0x2d')](_0x488e4b,_0x7878('0x2e'));_0x5829ae['query']=_[_0x7878('0x2f')](_0x6cbe7[_0x7878('0x30')]);_0x5829ae[_0x7878('0x31')]=_['intersection'](_0x5829ae[_0x7878('0x2c')],_0x5829ae[_0x7878('0x30')]);_0x25e4d6[_0x7878('0x32')]=_[_0x7878('0x33')](_0x5829ae[_0x7878('0x2c')],qs[_0x7878('0x34')](_0x6cbe7[_0x7878('0x30')][_0x7878('0x34')]));_0x25e4d6[_0x7878('0x32')]=_0x25e4d6[_0x7878('0x32')][_0x7878('0x35')]?_0x25e4d6['attributes']:_0x5829ae[_0x7878('0x2c')];if(!_0x6cbe7['query'][_0x7878('0x36')](_0x7878('0x37'))){_0x25e4d6[_0x7878('0x1c')]=qs['limit'](_0x6cbe7['query'][_0x7878('0x1c')]);_0x25e4d6[_0x7878('0x1a')]=qs[_0x7878('0x1a')](_0x6cbe7[_0x7878('0x30')][_0x7878('0x1a')]);}_0x25e4d6[_0x7878('0x38')]=qs[_0x7878('0x39')](_0x6cbe7[_0x7878('0x30')]['sort']);_0x25e4d6['where']=qs['filters'](_['pick'](_0x6cbe7['query'],_0x5829ae[_0x7878('0x31')]),_0x488e4b);if(_0x6cbe7[_0x7878('0x30')][_0x7878('0x3a')]){_0x25e4d6[_0x7878('0x3b')]=_[_0x7878('0x3c')](_0x25e4d6['where'],{'$or':_['map'](_0x488e4b,function(_0x31185c){if(_0x31185c['type']!==_0x7878('0x3d')){var _0x52c927={};_0x52c927[_0x31185c['name']]={'$like':'%'+_0x6cbe7['query'][_0x7878('0x3a')]+'%'};return _0x52c927;}})});}_0x25e4d6=_[_0x7878('0x3c')]({},_0x25e4d6,_0x6cbe7[_0x7878('0x3e')]);var _0x1d941c={'where':_0x25e4d6[_0x7878('0x3b')]};return db[_0x7878('0x29')][_0x7878('0x1d')](_0x1d941c)['then'](function(_0x31dd8c){_0x776e6f['count']=_0x31dd8c;if(_0x6cbe7[_0x7878('0x30')][_0x7878('0x3f')]){_0x25e4d6[_0x7878('0x40')]=[{'all':!![]}];}return db[_0x7878('0x29')][_0x7878('0x41')](_0x25e4d6);})[_0x7878('0x24')](function(_0xd46189){_0x776e6f[_0x7878('0x42')]=_0xd46189;return _0x776e6f;})[_0x7878('0x24')](respondWithFilteredResult(_0x289711,_0x25e4d6))['catch'](handleError(_0x289711,null));};exports[_0x7878('0x43')]=function(_0x2bed7f,_0x133a1d){var _0x13ed70={'raw':!![],'where':{'id':_0x2bed7f[_0x7878('0x44')]['id']}},_0x485141={};_0x485141['model']=_[_0x7878('0x2f')](db[_0x7878('0x29')][_0x7878('0x2a')]);_0x485141[_0x7878('0x30')]=_[_0x7878('0x2f')](_0x2bed7f[_0x7878('0x30')]);_0x485141[_0x7878('0x31')]=_[_0x7878('0x33')](_0x485141['model'],_0x485141['query']);_0x13ed70[_0x7878('0x32')]=_[_0x7878('0x33')](_0x485141[_0x7878('0x2c')],qs[_0x7878('0x34')](_0x2bed7f['query']['fields']));_0x13ed70[_0x7878('0x32')]=_0x13ed70['attributes'][_0x7878('0x35')]?_0x13ed70[_0x7878('0x32')]:_0x485141[_0x7878('0x2c')];if(_0x2bed7f[_0x7878('0x30')][_0x7878('0x3f')]){_0x13ed70[_0x7878('0x40')]=[{'all':!![]}];}_0x13ed70=_[_0x7878('0x3c')]({},_0x13ed70,_0x2bed7f[_0x7878('0x3e')]);return db['FaxApplication'][_0x7878('0x45')](_0x13ed70)[_0x7878('0x24')](handleEntityNotFound(_0x133a1d,null))['then'](respondWithResult(_0x133a1d,null))[_0x7878('0x46')](handleError(_0x133a1d,null));};exports[_0x7878('0x47')]=function(_0x53288b,_0x73b0c1){return db[_0x7878('0x29')][_0x7878('0x47')](_0x53288b[_0x7878('0x48')],{})[_0x7878('0x24')](respondWithResult(_0x73b0c1,0xc9))[_0x7878('0x46')](handleError(_0x73b0c1,null));};exports['update']=function(_0x2a7ab5,_0x495ade){if(_0x2a7ab5['body']['id']){delete _0x2a7ab5[_0x7878('0x48')]['id'];}return db['FaxApplication'][_0x7878('0x45')]({'where':{'id':_0x2a7ab5['params']['id']}})[_0x7878('0x24')](handleEntityNotFound(_0x495ade,null))[_0x7878('0x24')](saveUpdates(_0x2a7ab5[_0x7878('0x48')],null))[_0x7878('0x24')](respondWithResult(_0x495ade,null))[_0x7878('0x46')](handleError(_0x495ade,null));};exports[_0x7878('0x25')]=function(_0x43929c,_0x582d7d){return db[_0x7878('0x29')][_0x7878('0x45')]({'where':{'id':_0x43929c['params']['id']}})[_0x7878('0x24')](handleEntityNotFound(_0x582d7d,null))[_0x7878('0x24')](removeEntity(_0x582d7d,null))['catch'](handleError(_0x582d7d,null));};
\ No newline at end of file
index 6acb18b..906ee24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b61=['request-promise','rimraf','../../config/environment','./faxApplication.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird'];(function(_0x1678dc,_0x30f596){var _0x5b3608=function(_0x23511e){while(--_0x23511e){_0x1678dc['push'](_0x1678dc['shift']());}};_0x5b3608(++_0x30f596);}(_0x1b61,0x134));var _0x11b6=function(_0x9cd01b,_0x568ca3){_0x9cd01b=_0x9cd01b-0x0;var _0x51cd28=_0x1b61[_0x9cd01b];return _0x51cd28;};'use strict';var _=require('lodash');var util=require(_0x11b6('0x0'));var logger=require(_0x11b6('0x1'))('api');var moment=require(_0x11b6('0x2'));var BPromise=require(_0x11b6('0x3'));var rp=require(_0x11b6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x11b6('0x5'));var config=require(_0x11b6('0x6'));var attributes=require(_0x11b6('0x7'));module[_0x11b6('0x8')]=function(_0x38c4c,_0x3d70d9){return _0x38c4c[_0x11b6('0x9')]('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x11b6('0xa'),'collate':_0x11b6('0xb')});};
\ No newline at end of file
+var _0x4e39=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','rimraf','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4'];(function(_0x140e19,_0x597bee){var _0x46315e=function(_0x3ca033){while(--_0x3ca033){_0x140e19['push'](_0x140e19['shift']());}};_0x46315e(++_0x597bee);}(_0x4e39,0x1ae));var _0x94e3=function(_0x4b7d87,_0x238711){_0x4b7d87=_0x4b7d87-0x0;var _0x3b9f82=_0x4e39[_0x4b7d87];return _0x3b9f82;};'use strict';var _=require('lodash');var util=require(_0x94e3('0x0'));var logger=require(_0x94e3('0x1'))(_0x94e3('0x2'));var moment=require(_0x94e3('0x3'));var BPromise=require('bluebird');var rp=require(_0x94e3('0x4'));var fs=require('fs');var path=require(_0x94e3('0x5'));var rimraf=require(_0x94e3('0x6'));var config=require('../../config/environment');var attributes=require(_0x94e3('0x7'));module[_0x94e3('0x8')]=function(_0x33e7d7,_0x1ab14b){return _0x33e7d7['define'](_0x94e3('0x9'),attributes,{'tableName':_0x94e3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x94e3('0xb'),'collate':_0x94e3('0xc')});};
\ No newline at end of file
index 0333506..45cccfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc12f=['code','FaxApplication,\x20%s,\x20%s','message','info','result','FaxApplication','update','body','raw','options','where','attributes','limit','then','UpdateFaxApplication','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x536d1e,_0x1c0299){var _0x56ce53=function(_0x1047bd){while(--_0x1047bd){_0x536d1e['push'](_0x536d1e['shift']());}};_0x56ce53(++_0x1c0299);}(_0xc12f,0xe8));var _0xfc12=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xc12f[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0xfc12('0x0'));var util=require(_0xfc12('0x1'));var moment=require(_0xfc12('0x2'));var BPromise=require(_0xfc12('0x3'));var rs=require(_0xfc12('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc12('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfc12('0x6'));var config=require(_0xfc12('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfc12('0x8')][_0xfc12('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3be23d,_0x2caef9,_0x983b54){return new BPromise(function(_0x4831be,_0x121c98){return client[_0xfc12('0xa')](_0x3be23d,_0x983b54)['then'](function(_0x57b044){logger['info']('FaxApplication,\x20%s,\x20%s',_0x2caef9,_0xfc12('0xb'));logger[_0xfc12('0xc')](_0xfc12('0xd'),_0x2caef9,_0xfc12('0xb'),JSON[_0xfc12('0xe')](_0x57b044));if(_0x57b044['error']){if(_0x57b044[_0xfc12('0xf')][_0xfc12('0x10')]===0x1f4){logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x57b044[_0xfc12('0xf')]['message']);return _0x121c98(_0x57b044['error']['message']);}logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x57b044[_0xfc12('0xf')]['message']);return _0x4831be(_0x57b044['error'][_0xfc12('0x12')]);}else{logger[_0xfc12('0x13')](_0xfc12('0x11'),_0x2caef9,'request\x20sent');_0x4831be(_0x57b044[_0xfc12('0x14')][_0xfc12('0x12')]);}})['catch'](function(_0x1a3fc7){logger[_0xfc12('0xf')](_0xfc12('0x11'),_0x2caef9,_0x1a3fc7);_0x121c98(_0x1a3fc7);});});}exports['UpdateFaxApplication']=function(_0x3c0cac){var _0x49ba95=this;return new Promise(function(_0x1acb53,_0x356214){return db[_0xfc12('0x15')][_0xfc12('0x16')](_0x3c0cac[_0xfc12('0x17')],{'raw':_0x3c0cac['options']?_0x3c0cac['options'][_0xfc12('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c0cac[_0xfc12('0x19')]?_0x3c0cac[_0xfc12('0x19')][_0xfc12('0x1a')]||null:null,'attributes':_0x3c0cac['options']?_0x3c0cac['options'][_0xfc12('0x1b')]||null:null,'limit':_0x3c0cac[_0xfc12('0x19')]?_0x3c0cac[_0xfc12('0x19')][_0xfc12('0x1c')]||null:null})[_0xfc12('0x1d')](function(_0x2c93fe){logger['info'](_0xfc12('0x1e'),_0x3c0cac);logger[_0xfc12('0xc')](_0xfc12('0x1e'),_0x3c0cac,JSON[_0xfc12('0xe')](_0x2c93fe));_0x1acb53(_0x2c93fe);})['catch'](function(_0x220cb4){logger[_0xfc12('0xf')]('UpdateFaxApplication',_0x220cb4[_0xfc12('0x12')],_0x3c0cac);_0x356214(_0x49ba95[_0xfc12('0xf')](0x1f4,_0x220cb4[_0xfc12('0x12')]));});});};
\ No newline at end of file
+var _0xf61e=['UpdateFaxApplication','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','FaxApplication,\x20%s,\x20%s','message','info','catch','FaxApplication','update','options','raw','where','attributes','limit'];(function(_0x32f05c,_0x273aef){var _0x4307ed=function(_0x1be4da){while(--_0x1be4da){_0x32f05c['push'](_0x32f05c['shift']());}};_0x4307ed(++_0x273aef);}(_0xf61e,0x82));var _0xef61=function(_0x266c9d,_0x45f56e){_0x266c9d=_0x266c9d-0x0;var _0x3cb341=_0xf61e[_0x266c9d];return _0x3cb341;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var moment=require(_0xef61('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef61('0x3'));var db=require(_0xef61('0x4'))['db'];var utils=require(_0xef61('0x5'));var logger=require(_0xef61('0x6'))(_0xef61('0x7'));var config=require(_0xef61('0x8'));var jayson=require(_0xef61('0x9'));var client=jayson[_0xef61('0xa')][_0xef61('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ba3f,_0x2a9a98,_0x4c82d6){return new BPromise(function(_0x3bcbd0,_0x269fd9){return client[_0xef61('0xc')](_0x47ba3f,_0x4c82d6)[_0xef61('0xd')](function(_0x38546c){logger['info']('FaxApplication,\x20%s,\x20%s',_0x2a9a98,'request\x20sent');logger[_0xef61('0xe')](_0xef61('0xf'),_0x2a9a98,_0xef61('0x10'),JSON['stringify'](_0x38546c));if(_0x38546c[_0xef61('0x11')]){if(_0x38546c['error'][_0xef61('0x12')]===0x1f4){logger[_0xef61('0x11')](_0xef61('0x13'),_0x2a9a98,_0x38546c[_0xef61('0x11')]['message']);return _0x269fd9(_0x38546c[_0xef61('0x11')]['message']);}logger[_0xef61('0x11')](_0xef61('0x13'),_0x2a9a98,_0x38546c[_0xef61('0x11')][_0xef61('0x14')]);return _0x3bcbd0(_0x38546c[_0xef61('0x11')][_0xef61('0x14')]);}else{logger[_0xef61('0x15')]('FaxApplication,\x20%s,\x20%s',_0x2a9a98,_0xef61('0x10'));_0x3bcbd0(_0x38546c['result'][_0xef61('0x14')]);}})[_0xef61('0x16')](function(_0x2227d5){logger[_0xef61('0x11')](_0xef61('0x13'),_0x2a9a98,_0x2227d5);_0x269fd9(_0x2227d5);});});}exports['UpdateFaxApplication']=function(_0x18b628){var _0x5c295b=this;return new Promise(function(_0x1a87ed,_0x5b8560){return db[_0xef61('0x17')][_0xef61('0x18')](_0x18b628['body'],{'raw':_0x18b628[_0xef61('0x19')]?_0x18b628[_0xef61('0x19')][_0xef61('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18b628['options']?_0x18b628[_0xef61('0x19')][_0xef61('0x1b')]||null:null,'attributes':_0x18b628[_0xef61('0x19')]?_0x18b628[_0xef61('0x19')][_0xef61('0x1c')]||null:null,'limit':_0x18b628[_0xef61('0x19')]?_0x18b628['options'][_0xef61('0x1d')]||null:null})[_0xef61('0xd')](function(_0x248555){logger[_0xef61('0x15')](_0xef61('0x1e'),_0x18b628);logger[_0xef61('0xe')](_0xef61('0x1e'),_0x18b628,JSON[_0xef61('0x1f')](_0x248555));_0x1a87ed(_0x248555);})[_0xef61('0x16')](function(_0x3dea83){logger[_0xef61('0x11')]('UpdateFaxApplication',_0x3dea83[_0xef61('0x14')],_0x18b628);_0x5b8560(_0x5c295b[_0xef61('0x11')](0x1f4,_0x3dea83[_0xef61('0x14')]));});});};
\ No newline at end of file
index 6373d1b..87cde36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x55d55f,_0x5e6a52){var _0x2d26eb=function(_0x168553){while(--_0x168553){_0x55d55f['push'](_0x55d55f['shift']());}};_0x2d26eb(++_0x5e6a52);}(_0xb7e7,0x121));var _0x7b7e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xb7e7[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0x4024=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','update','destroy','exports','multer','util','connect-timeout'];(function(_0x3db514,_0x3da0ce){var _0x10b161=function(_0x8c3a01){while(--_0x8c3a01){_0x3db514['push'](_0x3db514['shift']());}};_0x10b161(++_0x3da0ce);}(_0x4024,0x89));var _0x4402=function(_0xa30626,_0x2f1a53){_0xa30626=_0xa30626-0x0;var _0x33b659=_0x4024[_0xa30626];return _0x33b659;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./faxApplication.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['post']('/',auth[_0x4402('0x7')](),controller['create']);router['put'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xb')]);router['delete'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xc')]);module[_0x4402('0xd')]=router;
\ No newline at end of file
index b25e80e..cc842c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2216=['exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x28337b,_0x1a2f2a){var _0x5d7a45=function(_0x252c50){while(--_0x252c50){_0x28337b['push'](_0x28337b['shift']());}};_0x5d7a45(++_0x1a2f2a);}(_0x2216,0x8a));var _0x6221=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0x2216[_0x47e7cb];return _0x2a8874;};'use strict';var Sequelize=require('sequelize');module[_0x6221('0x0')]={'closed':{'type':Sequelize[_0x6221('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6221('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x6221('0x2')]},'note':{'type':Sequelize[_0x6221('0x2')]},'read1stAt':{'type':Sequelize[_0x6221('0x3')]},'fax':{'type':Sequelize[_0x6221('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x6221('0x4')]('in',_0x6221('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x6221('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xb240=['sequelize','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x299ef2,_0x39842d){var _0x19eae2=function(_0x4df2c8){while(--_0x4df2c8){_0x299ef2['push'](_0x299ef2['shift']());}};_0x19eae2(++_0x39842d);}(_0xb240,0x7e));var _0x0b24=function(_0x4886db,_0x5d64bd){_0x4886db=_0x4886db-0x0;var _0x2066d3=_0xb240[_0x4886db];return _0x2066d3;};'use strict';var Sequelize=require(_0x0b24('0x0'));module[_0x0b24('0x1')]={'closed':{'type':Sequelize[_0x0b24('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0b24('0x3')]},'disposition':{'type':Sequelize[_0x0b24('0x4')]},'secondDisposition':{'type':Sequelize[_0x0b24('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0b24('0x4')]},'note':{'type':Sequelize[_0x0b24('0x4')]},'read1stAt':{'type':Sequelize[_0x0b24('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x0b24('0x5')]('in',_0x0b24('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x0b24('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0b24('0x5')]('in',_0x0b24('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 4c78a7d..12941d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x138b=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','then','stack','name','send','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','index','FaxInteraction','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.FaxInteractionId','from','user_has_fax_interactions','users','left_join','o.id\x20=\x20i.UserId','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','start','body','some','compact','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','having','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','agent','toString','sequelize','merge','a.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','c.email','c.phone','c.mobile','Contact.mobile','Contact.fax','Owner.fullname','o.internal','Owner.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','show','params','rawAttributes','includeAll','include','options','create','describe','FaxMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','findAll','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','get','basename','existsSync','pipe','createWriteStream','err'];(function(_0x321b85,_0x597dbe){var _0x371e5b=function(_0x43fa23){while(--_0x43fa23){_0x321b85['push'](_0x321b85['shift']());}};_0x371e5b(++_0x597dbe);}(_0x138b,0xd6));var _0xb138=function(_0x2e1072,_0x4b12fe){_0x2e1072=_0x2e1072-0x0;var _0x15267e=_0x138b[_0x2e1072];return _0x15267e;};'use strict';var emlformat=require(_0xb138('0x0'));var rimraf=require(_0xb138('0x1'));var zipdir=require(_0xb138('0x2'));var jsonpatch=require(_0xb138('0x3'));var rp=require(_0xb138('0x4'));var moment=require('moment');var BPromise=require(_0xb138('0x5'));var Mustache=require(_0xb138('0x6'));var util=require(_0xb138('0x7'));var path=require(_0xb138('0x8'));var sox=require(_0xb138('0x9'));var csv=require('to-csv');var ejs=require(_0xb138('0xa'));var fs=require('fs');var fs_extra=require(_0xb138('0xb'));var _=require(_0xb138('0xc'));var squel=require(_0xb138('0xd'));var crypto=require(_0xb138('0xe'));var jsforce=require(_0xb138('0xf'));var deskjs=require(_0xb138('0x10'));var toCsv=require(_0xb138('0x11'));var querystring=require(_0xb138('0x12'));var Papa=require(_0xb138('0x13'));var Redis=require(_0xb138('0x14'));var authService=require(_0xb138('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xb138('0x16'));var hardwareService=require(_0xb138('0x17'));var logger=require(_0xb138('0x18'))(_0xb138('0x19'));var utils=require(_0xb138('0x1a'));var config=require(_0xb138('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xb138('0x1c')](config[_0xb138('0x1d')],{'host':_0xb138('0x1e'),'port':0x18eb});var socket=require(_0xb138('0x1f'))(new Redis(config[_0xb138('0x1d')]));require(_0xb138('0x20'))[_0xb138('0x21')](socket);function respondWithStatusCode(_0x2eb4cb,_0x6d3b15){_0x6d3b15=_0x6d3b15||0xcc;return function(_0x1effd6){if(_0x1effd6){return _0x2eb4cb[_0xb138('0x22')](_0x6d3b15);}return _0x2eb4cb['status'](_0x6d3b15)[_0xb138('0x23')]();};}function respondWithResult(_0x3b0b7c,_0x35aec7){_0x35aec7=_0x35aec7||0xc8;return function(_0x2f8acc){if(_0x2f8acc){return _0x3b0b7c[_0xb138('0x24')](_0x35aec7)['json'](_0x2f8acc);}};}function respondWithFilteredResult(_0x5f5697,_0x8f32e3){return function(_0x3cd232){if(_0x3cd232){var _0x50ea88=typeof _0x8f32e3['offset']===_0xb138('0x25')&&typeof _0x8f32e3[_0xb138('0x26')]===_0xb138('0x25');var _0x4552b2=_0x3cd232[_0xb138('0x27')];var _0x3d3e03=_0x50ea88?0x0:_0x8f32e3[_0xb138('0x28')];var _0x3687f7=_0x50ea88?_0x3cd232[_0xb138('0x27')]:_0x8f32e3['offset']+_0x8f32e3[_0xb138('0x26')];var _0x306ed1;if(_0x3687f7>=_0x4552b2){_0x3687f7=_0x4552b2;_0x306ed1=0xc8;}else{_0x306ed1=0xce;}_0x5f5697[_0xb138('0x24')](_0x306ed1);return _0x5f5697[_0xb138('0x29')](_0xb138('0x2a'),_0x3d3e03+'-'+_0x3687f7+'/'+_0x4552b2)[_0xb138('0x2b')](_0x3cd232);}return null;};}function patchUpdates(_0x7c3306){return function(_0x516a71){try{jsonpatch[_0xb138('0x2c')](_0x516a71,_0x7c3306,!![]);}catch(_0x4cb3e3){return BPromise[_0xb138('0x2d')](_0x4cb3e3);}return _0x516a71[_0xb138('0x2e')]();};}function saveUpdates(_0x50e7ae,_0x3dba1e){return function(_0x331bee){if(_0x331bee){return _0x331bee[_0xb138('0x2f')](_0x50e7ae)['then'](function(_0x372b0d){return _0x372b0d;});}return null;};}function removeEntity(_0x1c8dd5,_0x1648a4){return function(_0xa6528d){if(_0xa6528d){return _0xa6528d[_0xb138('0x30')]()[_0xb138('0x31')](function(){_0x1c8dd5[_0xb138('0x24')](0xcc)[_0xb138('0x23')]();});}};}function handleEntityNotFound(_0xb075d0,_0x1dbd3b){return function(_0x472d9b){if(!_0x472d9b){_0xb075d0[_0xb138('0x22')](0x194);}return _0x472d9b;};}function handleError(_0x58db7d,_0x4d7bca){_0x4d7bca=_0x4d7bca||0x1f4;return function(_0x145198){logger['error'](_0x145198[_0xb138('0x32')]);if(_0x145198['name']){delete _0x145198[_0xb138('0x33')];}_0x58db7d[_0xb138('0x24')](_0x4d7bca)[_0xb138('0x34')](_0x145198);};}function getInteractionUsers(_0x1c7cd7,_0xd6ebc5){return new BPromise(function(_0x11723a,_0x168bcb){try{if(_0xd6ebc5[_0x1c7cd7['id']]){_0x1c7cd7[_0xb138('0x35')]=_[_0xb138('0x36')](_0xd6ebc5[_0x1c7cd7['id']],function(_0x42eff2){return{'id':_0x42eff2['id'],'fullname':_0x42eff2[_0xb138('0x37')]};});}}catch(_0x533064){_0x168bcb(_0x533064);}_0x11723a(_0x1c7cd7);});}function getInteractionTags(_0x32bf9f,_0x537737){return new BPromise(function(_0x447afd,_0x56d8c5){try{if(_0x32bf9f['TagIds']){_0x32bf9f[_0xb138('0x38')]=[];_0x32bf9f[_0xb138('0x39')][_0xb138('0x3a')](',')[_0xb138('0x3b')](function(_0x8898eb){_0x32bf9f[_0xb138('0x38')][_0xb138('0x3c')](_0x537737[_0x8898eb]);});}delete _0x32bf9f[_0xb138('0x39')];}catch(_0x25dc37){_0x56d8c5(_0x25dc37);}_0x447afd(_0x32bf9f);});}function updateFaxInteraction(_0x1f110d,_0x59a31c,_0x5ab6f1){return new BPromise(function(_0x19bdc8,_0x3d811f){return getInteractionUsers(_0x1f110d,_0x5ab6f1)[_0xb138('0x31')](function(_0x25df41){return getInteractionTags(_0x25df41,_0x59a31c);})[_0xb138('0x31')](function(_0x1c9e3a){_0x19bdc8(_0x1c9e3a);})[_0xb138('0x3d')](function(_0x5d30cc){_0x3d811f(_0x5d30cc);});});}exports[_0xb138('0x3e')]=function(_0x10f264,_0x57fd1e){var _0x2d0621={},_0x3a4eb6={},_0xd8a7d9={'count':0x0,'rows':[]};var _0x269ff2=_[_0xb138('0x36')](db[_0xb138('0x3f')]['rawAttributes'],function(_0x50274e){return{'name':_0x50274e[_0xb138('0x40')],'type':_0x50274e[_0xb138('0x41')]['key']};});_0x3a4eb6['model']=_[_0xb138('0x36')](_0x269ff2,_0xb138('0x33'));_0x3a4eb6[_0xb138('0x42')]=_[_0xb138('0x43')](_0x10f264[_0xb138('0x42')]);_0x3a4eb6[_0xb138('0x44')]=_[_0xb138('0x45')](_0x3a4eb6[_0xb138('0x46')],_0x3a4eb6[_0xb138('0x42')]);_0x2d0621[_0xb138('0x47')]=_[_0xb138('0x45')](_0x3a4eb6[_0xb138('0x46')],qs[_0xb138('0x48')](_0x10f264[_0xb138('0x42')]['fields']));_0x2d0621['attributes']=_0x2d0621['attributes'][_0xb138('0x49')]?_0x2d0621[_0xb138('0x47')]:_0x3a4eb6['model'];if(!_0x10f264[_0xb138('0x42')][_0xb138('0x4a')]('nolimit')){_0x2d0621[_0xb138('0x26')]=qs[_0xb138('0x26')](_0x10f264['query'][_0xb138('0x26')]);_0x2d0621[_0xb138('0x28')]=qs[_0xb138('0x28')](_0x10f264['query'][_0xb138('0x28')]);}_0x2d0621[_0xb138('0x4b')]=qs[_0xb138('0x4c')](_0x10f264['query'][_0xb138('0x4c')]);_0x2d0621[_0xb138('0x4d')]=qs[_0xb138('0x44')](_[_0xb138('0x4e')](_0x10f264[_0xb138('0x42')],_0x3a4eb6[_0xb138('0x44')]),_0x269ff2);var _0x4ecd3a=[];var _0x241e15=squel[_0xb138('0x4f')]()[_0xb138('0x50')]('id')[_0xb138('0x50')](_0xb138('0x33'))['field'](_0xb138('0x51'))['from'](_0xb138('0x52'));var _0x1a3633=squel[_0xb138('0x4f')]()['field'](_0xb138('0x53'))[_0xb138('0x50')](_0xb138('0x54'))[_0xb138('0x50')](_0xb138('0x55'))[_0xb138('0x56')](_0xb138('0x57'),'ui')['left_join'](_0xb138('0x58'),'u','u.id\x20=\x20ui.UserId');var _0x4d3dec=squel['select']()[_0xb138('0x56')]('fax_interactions','i')[_0xb138('0x59')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0xb138('0x58'),'o',_0xb138('0x5a'))['left_join']('fax_accounts','a','a.id\x20=\x20i.FaxAccountId')[_0xb138('0x59')]('fax_messages','me','me.FaxInteractionId\x20=\x20i.id')[_0xb138('0x59')](_0xb138('0x5b'),'it',_0xb138('0x5c'))[_0xb138('0x59')](_0xb138('0x52'),'t','t.id\x20=\x20it.TagId');var _0x53604e=squel[_0xb138('0x5d')]();var _0x5dec24=[];var _0xa362f6=squel['expr']();var _0x558d76;if(_0x10f264[_0xb138('0x42')]['search']){_0x558d76=as[_0xb138('0x5e')](_0x10f264[_0xb138('0x42')][_0xb138('0x5f')]);var _0x4e5cfc=_0x558d76[_0xb138('0x60')];for(var _0x3a674e=0x0;_0x3a674e<_0x558d76[_0xb138('0x61')][_0xb138('0x49')];_0x3a674e++){var _0x3a3155=_0x558d76[_0xb138('0x61')][_0x3a674e];var _0xb592b4='i';var _0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,[_0xb138('0x33'),_0x3a3155[_0xb138('0x50')]]);if(!_0x2d0ec6){switch(_0x3a3155['field']){case _0xb138('0x63'):if(_0x3a3155[_0xb138('0x64')]==0x1){_0x4d3dec['having']('`'+_0x3a3155[_0xb138('0x50')]+_0xb138('0x65'));}else{_0x4d3dec['having']('`'+_0x3a3155['field']+'`\x20>\x200');}break;case'Contact':if(_0x3a3155[_0xb138('0x66')]===_0xb138('0x67')){if(_0x3a3155[_0xb138('0x64')][_0xb138('0x3a')]('\x20')[_0xb138('0x49')]>0x1){_0x53604e[_0x4e5cfc](_0xb138('0x68'),qs[_0xb138('0x69')](_0x3a3155[_0xb138('0x64')]),null);}else{var _0x2dc0ff='%'+_0x3a3155[_0xb138('0x64')]+'%';_0x53604e[_0x4e5cfc](_0xb138('0x6a'),_0x2dc0ff,_0x2dc0ff,_0x2dc0ff);}}else{_0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,[_0xb138('0x33'),_0xb138('0x6b')]);_0x3a3155[_0xb138('0x50')]='ContactId';_0x1f678c=as['buildExpression'](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c[_0xb138('0x64')]['start'],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}break;case _0xb138('0x6d'):var _0x43aecc=_0x3a3155[_0xb138('0x64')][_0xb138('0x3a')](',')[_0xb138('0x36')](function(_0x1f9bef){return Number(_0x1f9bef);});_0x43aecc[_0xb138('0x3b')](function(_0x1cbe5){_0xa362f6['or'](_0xb138('0x6e'),'%,'+_0x1cbe5+',%');});_0x5dec24=_[_0xb138('0x6f')](_0x5dec24,_0x43aecc);break;case'User':if(_0x3a3155[_0xb138('0x66')]===_0xb138('0x67')){_0x53604e[_0x4e5cfc](_0xb138('0x70'),'%'+_0x3a3155[_0xb138('0x64')]+'%',null);}else{_0x2d0ec6=_[_0xb138('0x62')](_0x269ff2,['name',_0xb138('0x71')]);_0x3a3155[_0xb138('0x50')]='UserId';_0x1f678c=as[_0xb138('0x72')](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c[_0xb138('0x64')][_0xb138('0x73')],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}break;case _0xb138('0x74'):_0x1f678c=as[_0xb138('0x72')]('me',null,_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c['value']['start'],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);break;}}else{var _0x1f678c=as[_0xb138('0x72')](_0xb592b4,_0x2d0ec6[_0xb138('0x41')],_0x3a3155);_0x53604e[_0x4e5cfc](_0x1f678c[_0xb138('0x6c')],_0x1f678c['value'][_0xb138('0x73')],_0x1f678c[_0xb138('0x64')][_0xb138('0x23')]);}}}else{var _0x3d2539=_(_0x10f264[_0xb138('0x42')])['keys']()[_0xb138('0x36')](function(_0x2caece){return _[_0xb138('0x75')](_0x269ff2,[_0xb138('0x33'),_0x2caece])?_0x2caece:undefined;})[_0xb138('0x76')]()[_0xb138('0x64')]();if(!_['isEmpty'](_0x3d2539)){_0x3d2539[_0xb138('0x3b')](function(_0x31efdd){if(_0x31efdd===_0xb138('0x77')){_0x4d3dec[_0xb138('0x4d')](_0xb138('0x78'),[][_0xb138('0x79')](_0x10f264[_0xb138('0x42')][_0x31efdd]));}else if(_0x31efdd===_0xb138('0x7a')){var _0x54369f=JSON[_0xb138('0x7b')](_0x10f264['query'][_0x31efdd])[_0xb138('0x7c')];var _0x1e2deb=JSON['parse'](_0x10f264[_0xb138('0x42')][_0x31efdd])[_0xb138('0x7d')];_0x4d3dec[_0xb138('0x4d')](_0xb138('0x7e'),_0x54369f,_0x1e2deb);}else{if(_0x10f264[_0xb138('0x42')][_0x31efdd]===_0xb138('0x7f')){_0x4d3dec['where']('i.'+_0x31efdd+_0xb138('0x80'));}else{_0x4d3dec[_0xb138('0x4d')]('i.'+_0x31efdd+_0xb138('0x81'),_0x10f264[_0xb138('0x42')][_0x31efdd]);}}});}if(_0x10f264[_0xb138('0x42')][_0xb138('0x82')]){if(_0x10f264[_0xb138('0x42')]['read']==0x1){_0x4d3dec['having'](_0xb138('0x83'));}else{_0x4d3dec['having'](_0xb138('0x84'));}}if(_0x10f264[_0xb138('0x42')][_0xb138('0x85')]){_0x5dec24=_[_0xb138('0x86')](_0x10f264[_0xb138('0x42')][_0xb138('0x85')])?_0x10f264[_0xb138('0x42')][_0xb138('0x85')]:new Array(_0x10f264[_0xb138('0x42')][_0xb138('0x85')]);_0x5dec24['forEach'](function(_0x70179f){_0xa362f6['or'](_0xb138('0x6e'),'%,'+_0x70179f+',%');});}if(_0x10f264['query'][_0xb138('0x87')]){var _0x5631a1=_0x10f264[_0xb138('0x42')][_0xb138('0x87')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xb138('0x88')](_0x5631a1)){_0x53604e['or']('i.id\x20LIKE\x20?',_0x5631a1+'%')['or'](_0xb138('0x89'),_0x5631a1+'%');}_0x53604e['or'](_0xb138('0x8a'),_0x5631a1+'%');}}_0x4d3dec[_0xb138('0x4d')](_0x53604e);_0x4d3dec[_0xb138('0x8b')]('i.id');var _0x2ae93a={'type':db[_0xb138('0x8c')][_0xb138('0x8d')][_0xb138('0x8e')],'raw':!![]};var _0x2b45e0=_0x4d3dec[_0xb138('0x8f')]();_0x2b45e0[_0xb138('0x50')]('i.id');_0x2b45e0[_0xb138('0x50')](_0xb138('0x90'),_0xb138('0x63'));if(_0x2d0621[_0xb138('0x4b')]){_0x2d0621[_0xb138('0x4b')][_0xb138('0x3b')](function(_0x305b44){var _0x33eebc=_0x305b44[0x0]==='contactName'?_0x305b44[0x0]:'i.'+_0x305b44[0x0];_0x4d3dec[_0xb138('0x4b')](_0x33eebc,_0x305b44[0x1]===_0xb138('0x91')?![]:!![]);});}if(!_[_0xb138('0x92')](_0x5dec24)){_0x4d3dec[_0xb138('0x93')](_0xa362f6);_0x2b45e0[_0xb138('0x4d')]('t.id\x20IN\x20?',_0x5dec24);}BPromise['resolve']()['then'](function(){if(!_0x558d76){if(_0x10f264[_0xb138('0x42')][_0xb138('0x77')])return;_0x2b45e0[_0xb138('0x4d')](_0xb138('0x94'));_0x4d3dec[_0xb138('0x4d')](_0xb138('0x94'));return;}if(_0x10f264[_0xb138('0x95')][_0xb138('0x96')]!=='agent')return;return _0x10f264['user'][_0xb138('0x97')]({'attributes':['id'],'raw':!![]})['then'](function(_0x110141){if(_[_0xb138('0x92')](_0x110141)){_0x2b45e0[_0xb138('0x4d')]('i.FaxAccountId\x20IS\x20NULL');_0x4d3dec[_0xb138('0x4d')](_0xb138('0x98'));}else{_0x2b45e0[_0xb138('0x4d')]('i.FaxAccountId\x20IN\x20?',_[_0xb138('0x36')](_0x110141,'id'));_0x4d3dec['where']('i.FaxAccountId\x20IN\x20?',_[_0xb138('0x36')](_0x110141,'id'));}});})[_0xb138('0x31')](function(){if(_0x10f264[_0xb138('0x95')][_0xb138('0x96')]===_0xb138('0x99')&&!_0x558d76&&!_0x10f264[_0xb138('0x42')][_0xb138('0x77')])return[];return db['sequelize']['query'](_0x2b45e0[_0xb138('0x9a')](),_0x2ae93a);})['then'](function(_0x5be0ba){_0xd8a7d9['count']=_0x5be0ba[_0xb138('0x49')];if(_0xd8a7d9[_0xb138('0x27')]===0x0)return[];return db[_0xb138('0x9b')][_0xb138('0x42')](_0x241e15[_0xb138('0x9a')](),_0x2ae93a)[_0xb138('0x31')](function(_0x50b364){_0x4ecd3a=_['keyBy'](_0x50b364,'id');_0x2ae93a=_[_0xb138('0x9c')](_0x2ae93a,{'model':db[_0xb138('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x10f264[_0xb138('0x42')][_0xb138('0x48')]){_0x2d0621[_0xb138('0x47')][_0xb138('0x3b')](function(_0x5b7ee9){_0x4d3dec[_0xb138('0x50')]('i.'+_0x5b7ee9);});}else{_0x4d3dec[_0xb138('0x50')](_0xb138('0x90'),_0xb138('0x63'));_0x4d3dec[_0xb138('0x50')](_0xb138('0x9d'),'Account.key');_0x4d3dec[_0xb138('0x50')](_0xb138('0x9e'),'Account.mandatoryDisposition');_0x4d3dec[_0xb138('0x50')](_0xb138('0x9f'),'contactName');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa0'));_0x4d3dec['field']('c.firstName',_0xb138('0xa1'));_0x4d3dec[_0xb138('0x50')](_0xb138('0xa2'),'Contact.lastName');_0x4d3dec['field'](_0xb138('0xa3'),'Contact.email');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa4'),'Contact.phone');_0x4d3dec[_0xb138('0x50')](_0xb138('0xa5'),_0xb138('0xa6'));_0x4d3dec[_0xb138('0x50')]('c.fax',_0xb138('0xa7'));_0x4d3dec[_0xb138('0x50')]('o.fullname',_0xb138('0xa8'));_0x4d3dec[_0xb138('0x50')](_0xb138('0xa9'),_0xb138('0xaa'));_0x4d3dec['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xb138('0x39'));}if(_0x2d0621['limit'])_0x4d3dec[_0xb138('0x26')](_0x2d0621[_0xb138('0x26')]);if(_0x2d0621['offset'])_0x4d3dec[_0xb138('0x28')](_0x2d0621[_0xb138('0x28')]);return db[_0xb138('0x9b')][_0xb138('0x42')](_0x4d3dec['toString'](),_0x2ae93a);})[_0xb138('0x31')](function(_0x149581){if(_0x149581[_0xb138('0x49')]>0x0)_0x1a3633[_0xb138('0x4d')](_0xb138('0xab'),_['map'](_0x149581,'id'));return db[_0xb138('0x9b')]['query'](_0x1a3633['toString'](),_0x2ae93a)[_0xb138('0x31')](function(_0x5db49c){var _0xd3df59=_[_0xb138('0xac')](_0x5db49c,_0xb138('0xad'));var _0xdb0a63=[];_0x149581[_0xb138('0x3b')](function(_0x3174d3){_0xdb0a63[_0xb138('0x3c')](updateFaxInteraction(_0x3174d3,_0x4ecd3a,_0xd3df59));});return BPromise[_0xb138('0xae')](_0xdb0a63);});});})['then'](function(_0xcbbc2){_0xd8a7d9[_0xb138('0xaf')]=_0xcbbc2;return _0xd8a7d9;})[_0xb138('0x31')](respondWithFilteredResult(_0x57fd1e,_0x2d0621))[_0xb138('0x3d')](handleError(_0x57fd1e,null));};exports[_0xb138('0xb0')]=function(_0x29eb52,_0x11935c){var _0x59f05a={'raw':![],'where':{'id':_0x29eb52[_0xb138('0xb1')]['id']}},_0x2fa383={};_0x2fa383[_0xb138('0x46')]=_[_0xb138('0x43')](db[_0xb138('0x3f')][_0xb138('0xb2')]);_0x2fa383[_0xb138('0x42')]=_[_0xb138('0x43')](_0x29eb52[_0xb138('0x42')]);_0x2fa383[_0xb138('0x44')]=_[_0xb138('0x45')](_0x2fa383['model'],_0x2fa383[_0xb138('0x42')]);_0x59f05a[_0xb138('0x47')]=_[_0xb138('0x45')](_0x2fa383[_0xb138('0x46')],qs['fields'](_0x29eb52[_0xb138('0x42')][_0xb138('0x48')]));_0x59f05a[_0xb138('0x47')]=_0x59f05a[_0xb138('0x47')][_0xb138('0x49')]?_0x59f05a['attributes']:_0x2fa383[_0xb138('0x46')];if(_0x29eb52[_0xb138('0x42')][_0xb138('0xb3')]){_0x59f05a[_0xb138('0xb4')]=[{'all':!![]}];}_0x59f05a=_['merge']({},_0x59f05a,_0x29eb52[_0xb138('0xb5')]);return db[_0xb138('0x3f')][_0xb138('0x62')](_0x59f05a)[_0xb138('0x31')](handleEntityNotFound(_0x11935c,null))[_0xb138('0x31')](respondWithResult(_0x11935c,null))[_0xb138('0x3d')](handleError(_0x11935c,null));};exports[_0xb138('0xb6')]=function(_0xeadbd3,_0x2ae972){return db['FaxInteraction']['create'](_0xeadbd3[_0xb138('0x74')],{})[_0xb138('0x31')](respondWithResult(_0x2ae972,0xc9))[_0xb138('0x3d')](handleError(_0x2ae972,null));};exports[_0xb138('0x2f')]=function(_0x3062af,_0x41adc9){if(_0x3062af[_0xb138('0x74')]['id']){delete _0x3062af[_0xb138('0x74')]['id'];}return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x3062af['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x41adc9,null))[_0xb138('0x31')](saveUpdates(_0x3062af[_0xb138('0x74')],null))['then'](respondWithResult(_0x41adc9,null))[_0xb138('0x3d')](handleError(_0x41adc9,null));};exports['destroy']=function(_0x58d75a,_0x54b174){return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x58d75a['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x54b174,null))[_0xb138('0x31')](removeEntity(_0x54b174,null))[_0xb138('0x3d')](handleError(_0x54b174,null));};exports[_0xb138('0xb7')]=function(_0x5eecef,_0x112521){return db[_0xb138('0x3f')][_0xb138('0xb7')]()[_0xb138('0x31')](respondWithResult(_0x112521,null))[_0xb138('0x3d')](handleError(_0x112521,null));};exports['addMessage']=function(_0x2e50b1,_0x2659d3,_0x5e7743){return db[_0xb138('0xb8')][_0xb138('0x62')]({'where':{'id':_0x2e50b1[_0xb138('0xb1')]['id']}})['then'](handleEntityNotFound(_0x2659d3,null))['then'](function(_0x42e27d){if(_0x42e27d){return _0x42e27d['addMessage'](_0x2e50b1['body'][_0xb138('0xb9')],_[_0xb138('0xba')](_0x2e50b1[_0xb138('0x74')],[_0xb138('0xb9'),'id'])||{});}})[_0xb138('0x31')](respondWithResult(_0x2659d3,null))['catch'](handleError(_0x2659d3,null));};exports[_0xb138('0xbb')]=function(_0x11f313,_0x5e8858,_0x13655f){var _0xc32678={'raw':![],'where':{}};var _0x3e317a={};var _0x4361c7={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xb138('0xbc')]({'where':{'id':_0x11f313['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x5e8858,null))['then'](function(_0xd2d3ec){if(_0xd2d3ec){_0x3e317a['model']=_[_0xb138('0x43')](db[_0xb138('0xb8')][_0xb138('0xb2')]);_0x3e317a[_0xb138('0x42')]=_[_0xb138('0x43')](_0x11f313[_0xb138('0x42')]);_0x3e317a['filters']=_[_0xb138('0x45')](_0x3e317a[_0xb138('0x46')],_0x3e317a['query']);_0xc32678[_0xb138('0x47')]=_[_0xb138('0x45')](_0x3e317a[_0xb138('0x46')],qs[_0xb138('0x48')](_0x11f313[_0xb138('0x42')][_0xb138('0x48')]));_0xc32678[_0xb138('0x47')]=_0xc32678[_0xb138('0x47')][_0xb138('0x49')]?_0xc32678['attributes']:_0x3e317a[_0xb138('0x46')];if(!_0x11f313[_0xb138('0x42')][_0xb138('0x4a')](_0xb138('0xbd'))){_0xc32678['limit']=qs[_0xb138('0x26')](_0x11f313[_0xb138('0x42')][_0xb138('0x26')]);_0xc32678[_0xb138('0x28')]=qs[_0xb138('0x28')](_0x11f313['query'][_0xb138('0x28')]);}_0xc32678[_0xb138('0x4b')]=qs['sort'](_0x11f313[_0xb138('0x42')][_0xb138('0x4c')]);_0xc32678['where']=qs[_0xb138('0x44')](_[_0xb138('0x4e')](_0x11f313['query'],_0x3e317a[_0xb138('0x44')]));_0xc32678[_0xb138('0x4d')][_0xb138('0xad')]=_0xd2d3ec['id'];if(_0x11f313[_0xb138('0x42')]['filter']){_0xc32678['where']=_[_0xb138('0x9c')](_0xc32678[_0xb138('0x4d')],{'$or':_[_0xb138('0x36')](_0xc32678['attributes'],function(_0x40f7e2){var _0x22ecaa={};_0x22ecaa[_0x40f7e2]={'$like':'%'+_0x11f313[_0xb138('0x42')]['filter']+'%'};return _0x22ecaa;})});}if(_0x11f313[_0xb138('0x42')][_0xb138('0x7c')]){var _0x36fe40=_0x11f313[_0xb138('0x42')]['$gte'][_0xb138('0x3a')](',');var _0x137264={};_0x137264[_0x36fe40[0x0]]={'$gte':moment(_0x36fe40[0x1])[_0xb138('0xbe')](_0xb138('0xbf'))};_0xc32678[_0xb138('0x4d')]=_[_0xb138('0x9c')](_0xc32678['where'],_0x137264);}_0xc32678=_[_0xb138('0x9c')]({},_0xc32678,_0x11f313['options']);return db[_0xb138('0xb8')]['count']({'where':_0xc32678[_0xb138('0x4d')]})['then'](function(_0x450ec2){_0x4361c7[_0xb138('0x27')]=_0x450ec2;if(_0x11f313[_0xb138('0x42')]['includeAll']){_0xc32678[_0xb138('0xb4')]=[{'all':!![]}];}return db[_0xb138('0xb8')]['findAll'](_0xc32678);})[_0xb138('0x31')](function(_0xba148e){_0x4361c7[_0xb138('0xaf')]=_0xba148e;return _0x4361c7;});}})['then'](respondWithFilteredResult(_0x5e8858,_0xc32678))['catch'](handleError(_0x5e8858,null));};exports[_0xb138('0xc0')]=function(_0xc8f359,_0x5dc668,_0x4301a0){return db['FaxInteraction'][_0xb138('0x62')]({'where':{'id':_0xc8f359['params']['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x5dc668,null))[_0xb138('0x31')](function(_0x3184cd){if(_0x3184cd){return _0x3184cd[_0xb138('0xc1')](_0xc8f359[_0xb138('0x74')][_0xb138('0xb9')],_[_0xb138('0xba')](_0xc8f359['body'],[_0xb138('0xb9'),'id'])||{})['spread'](function(){return db[_0xb138('0x6d')][_0xb138('0xc2')]({'attributes':['id','name',_0xb138('0x51')],'where':{'id':_0xc8f359['body'][_0xb138('0xb9')]}});})[_0xb138('0x31')](function(_0x54d3f3){socket[_0xb138('0xc3')](_0xb138('0xc4'),{'id':Number(_0xc8f359['params']['id']),'tags':_0x54d3f3||[]});return{'id':Number(_0xc8f359[_0xb138('0xb1')]['id']),'tags':_0x54d3f3||[]};});}})[_0xb138('0x31')](respondWithResult(_0x5dc668,null))[_0xb138('0x3d')](handleError(_0x5dc668,null));};exports['removeTags']=function(_0x225519,_0x40a415,_0x23cf39){return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x225519[_0xb138('0xb1')]['id']}})[_0xb138('0x31')](handleEntityNotFound(_0x40a415,null))[_0xb138('0x31')](function(_0x432096){if(_0x432096){return _0x432096[_0xb138('0xc5')](_0x225519['query'][_0xb138('0xb9')]);}})[_0xb138('0x31')](respondWithStatusCode(_0x40a415,null))[_0xb138('0x3d')](handleError(_0x40a415,null));};exports[_0xb138('0xc6')]=function(_0x14cd3b,_0x5c6ee0){var _0x374a70=moment()[_0xb138('0xc7')]()[_0xb138('0x9a')]();var _0x4902e7=path[_0xb138('0xc8')](config[_0xb138('0xc9')],_0xb138('0xca'),'files','tmp');var _0x2c15c9=path[_0xb138('0xc8')](config['root'],'server',_0xb138('0xcb'),_0xb138('0xcc'));var _0xfddcf=path[_0xb138('0xc8')](_0x4902e7,_0x374a70);var _0x32b392=util[_0xb138('0xbe')](_0xb138('0xcd'),_0x14cd3b['params']['id'],_0x374a70);var _0x53e54f=path['join'](_0x4902e7,_0x32b392);var _0x25ff34=[];_0x25ff34['push']({'model':db[_0xb138('0xce')],'as':_0xb138('0xce'),'raw':!![]});var _0x7ce6b7=[{'model':db[_0xb138('0xb8')],'as':_0xb138('0xcf'),'attributes':['id',_0xb138('0x74'),_0xb138('0x7a')],'include':_0x25ff34}];return db[_0xb138('0x3f')][_0xb138('0x62')]({'where':{'id':_0x14cd3b[_0xb138('0xb1')]['id']},'include':_0x7ce6b7})[_0xb138('0x31')](handleEntityNotFound(_0x5c6ee0,null))[_0xb138('0x31')](function(_0x1374f1){if(_0x1374f1&&_0x1374f1['Messages']){var _0x5701ef=_0x1374f1[_0xb138('0xd0')]({'plain':!![]});fs['mkdirSync'](_0xfddcf);for(var _0x28c86d=0x0;_0x28c86d<_0x5701ef['Messages'][_0xb138('0x49')];_0x28c86d++){var _0x399a91=_0x5701ef[_0xb138('0xcf')][_0x28c86d][_0xb138('0xce')];if(_0x399a91){var _0x2351e1=path[_0xb138('0xc8')](_0x2c15c9,_0x399a91[_0xb138('0xd1')]);if(fs[_0xb138('0xd2')](_0x2351e1)){fs['createReadStream'](_0x2351e1)[_0xb138('0xd3')](fs[_0xb138('0xd4')](path['join'](_0xfddcf,_0x399a91[_0xb138('0xd1')])));}}}return BPromise['resolve']()['then'](function(){return new BPromise(function(_0x5df1b9,_0x31ccd6){zipdir(_0xfddcf,{'saveTo':_0x53e54f},function(_0x561d14,_0x52b00c){if(_0x561d14)return _0x31ccd6(_0x561d14);return _0x5df1b9(_0x52b00c);});})['then'](function(){return new BPromise(function(_0x25abad,_0xb04054){rimraf(_0xfddcf,function(_0x2f0775){if(_0x2f0775)_0xb04054(_0x2f0775);return _0x25abad();});});})[_0xb138('0x31')](function(){return _0x5c6ee0['download'](_0x53e54f,_0x32b392,function(_0x479810){if(_0x479810){console['log'](_0xb138('0xd5'),_0x479810);}else{fs['unlinkSync'](_0x53e54f);}});});});}else{return _0x5c6ee0['sendStatus'](0xc8);}})[_0xb138('0x3d')](handleError(_0x5c6ee0,null));};
\ No newline at end of file
+var _0x5d21=['toString','groupBy','FaxInteractionId','all','rows','catch','show','params','rawAttributes','include','create','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','merge','format','findAll','addTags','setTags','spread','faxInteractionTags:save','removeTags','unix','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','Attachment','createdAt','get','mkdirSync','Messages','existsSync','createReadStream','pipe','basename','download','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','status','end','json','offset','undefined','count','reject','save','update','then','destroy','sendStatus','error','send','Users','map','fullname','TagIds','Tags','split','forEach','push','index','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','body','some','isEmpty','FaxAccountId','concat','$gte','parse','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','user','sequelize','FaxInteraction','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)'];(function(_0x3a90ad,_0x3bbe5d){var _0x20e8b4=function(_0xef8142){while(--_0xef8142){_0x3a90ad['push'](_0x3a90ad['shift']());}};_0x20e8b4(++_0x3bbe5d);}(_0x5d21,0x1e5));var _0x15d2=function(_0x505b02,_0x3453c7){_0x505b02=_0x505b02-0x0;var _0x27b319=_0x5d21[_0x505b02];return _0x27b319;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x15d2('0x0'));var jsonpatch=require(_0x15d2('0x1'));var rp=require(_0x15d2('0x2'));var moment=require(_0x15d2('0x3'));var BPromise=require(_0x15d2('0x4'));var Mustache=require(_0x15d2('0x5'));var util=require(_0x15d2('0x6'));var path=require(_0x15d2('0x7'));var sox=require(_0x15d2('0x8'));var csv=require('to-csv');var ejs=require(_0x15d2('0x9'));var fs=require('fs');var fs_extra=require(_0x15d2('0xa'));var _=require(_0x15d2('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x15d2('0xc'));var toCsv=require(_0x15d2('0xd'));var querystring=require(_0x15d2('0xe'));var Papa=require(_0x15d2('0xf'));var Redis=require(_0x15d2('0x10'));var authService=require(_0x15d2('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x15d2('0x12'));var hardwareService=require(_0x15d2('0x13'));var logger=require('../../config/logger')(_0x15d2('0x14'));var utils=require('../../config/utils');var config=require(_0x15d2('0x15'));var licenseUtil=require(_0x15d2('0x16'));var db=require(_0x15d2('0x17'))['db'];config[_0x15d2('0x18')]=_[_0x15d2('0x19')](config['redis'],{'host':_0x15d2('0x1a'),'port':0x18eb});var socket=require(_0x15d2('0x1b'))(new Redis(config[_0x15d2('0x18')]));require(_0x15d2('0x1c'))['register'](socket);function respondWithStatusCode(_0x4a97ac,_0x2e411a){_0x2e411a=_0x2e411a||0xcc;return function(_0x379c56){if(_0x379c56){return _0x4a97ac['sendStatus'](_0x2e411a);}return _0x4a97ac[_0x15d2('0x1d')](_0x2e411a)[_0x15d2('0x1e')]();};}function respondWithResult(_0x3ff3ba,_0x89e9c9){_0x89e9c9=_0x89e9c9||0xc8;return function(_0x158a1a){if(_0x158a1a){return _0x3ff3ba[_0x15d2('0x1d')](_0x89e9c9)[_0x15d2('0x1f')](_0x158a1a);}};}function respondWithFilteredResult(_0x21755f,_0x4331d1){return function(_0x5f0dd4){if(_0x5f0dd4){var _0x3bb7f0=typeof _0x4331d1[_0x15d2('0x20')]==='undefined'&&typeof _0x4331d1['limit']===_0x15d2('0x21');var _0x1beb05=_0x5f0dd4[_0x15d2('0x22')];var _0x197108=_0x3bb7f0?0x0:_0x4331d1[_0x15d2('0x20')];var _0x35caf2=_0x3bb7f0?_0x5f0dd4[_0x15d2('0x22')]:_0x4331d1[_0x15d2('0x20')]+_0x4331d1['limit'];var _0x10ec17;if(_0x35caf2>=_0x1beb05){_0x35caf2=_0x1beb05;_0x10ec17=0xc8;}else{_0x10ec17=0xce;}_0x21755f[_0x15d2('0x1d')](_0x10ec17);return _0x21755f['set']('Content-Range',_0x197108+'-'+_0x35caf2+'/'+_0x1beb05)[_0x15d2('0x1f')](_0x5f0dd4);}return null;};}function patchUpdates(_0x54145d){return function(_0xa5389b){try{jsonpatch['apply'](_0xa5389b,_0x54145d,!![]);}catch(_0x4009b6){return BPromise[_0x15d2('0x23')](_0x4009b6);}return _0xa5389b[_0x15d2('0x24')]();};}function saveUpdates(_0x5a0e2b,_0x1e5e77){return function(_0x2f57a6){if(_0x2f57a6){return _0x2f57a6[_0x15d2('0x25')](_0x5a0e2b)[_0x15d2('0x26')](function(_0x52675e){return _0x52675e;});}return null;};}function removeEntity(_0x4e0b32,_0x1e3efb){return function(_0xf7b26b){if(_0xf7b26b){return _0xf7b26b[_0x15d2('0x27')]()[_0x15d2('0x26')](function(){_0x4e0b32[_0x15d2('0x1d')](0xcc)[_0x15d2('0x1e')]();});}};}function handleEntityNotFound(_0x13c08c,_0x33e72a){return function(_0xd3f202){if(!_0xd3f202){_0x13c08c[_0x15d2('0x28')](0x194);}return _0xd3f202;};}function handleError(_0x1c81d8,_0x4f8be6){_0x4f8be6=_0x4f8be6||0x1f4;return function(_0x512a24){logger[_0x15d2('0x29')](_0x512a24['stack']);if(_0x512a24['name']){delete _0x512a24['name'];}_0x1c81d8[_0x15d2('0x1d')](_0x4f8be6)[_0x15d2('0x2a')](_0x512a24);};}function getInteractionUsers(_0x72811,_0x36b815){return new BPromise(function(_0x3716da,_0x4130c6){try{if(_0x36b815[_0x72811['id']]){_0x72811[_0x15d2('0x2b')]=_[_0x15d2('0x2c')](_0x36b815[_0x72811['id']],function(_0x20f960){return{'id':_0x20f960['id'],'fullname':_0x20f960[_0x15d2('0x2d')]};});}}catch(_0x34ac8f){_0x4130c6(_0x34ac8f);}_0x3716da(_0x72811);});}function getInteractionTags(_0x25b637,_0x7528df){return new BPromise(function(_0x25e906,_0xb49a7d){try{if(_0x25b637[_0x15d2('0x2e')]){_0x25b637[_0x15d2('0x2f')]=[];_0x25b637[_0x15d2('0x2e')][_0x15d2('0x30')](',')[_0x15d2('0x31')](function(_0x280b58){_0x25b637[_0x15d2('0x2f')][_0x15d2('0x32')](_0x7528df[_0x280b58]);});}delete _0x25b637[_0x15d2('0x2e')];}catch(_0xbda786){_0xb49a7d(_0xbda786);}_0x25e906(_0x25b637);});}function updateFaxInteraction(_0x403fe4,_0x4068ee,_0x1193f5){return new BPromise(function(_0x52b20a,_0x54d91a){return getInteractionUsers(_0x403fe4,_0x1193f5)[_0x15d2('0x26')](function(_0x7e49e){return getInteractionTags(_0x7e49e,_0x4068ee);})[_0x15d2('0x26')](function(_0x37b92a){_0x52b20a(_0x37b92a);})['catch'](function(_0xd78ce1){_0x54d91a(_0xd78ce1);});});}exports[_0x15d2('0x33')]=function(_0x587ad7,_0x4d6f0a){var _0x6538df={},_0x4701e1={},_0x64ff03={'count':0x0,'rows':[]};var _0x181ef5=_[_0x15d2('0x2c')](db['FaxInteraction']['rawAttributes'],function(_0x4a4587){return{'name':_0x4a4587[_0x15d2('0x34')],'type':_0x4a4587[_0x15d2('0x35')][_0x15d2('0x36')]};});_0x4701e1[_0x15d2('0x37')]=_[_0x15d2('0x2c')](_0x181ef5,_0x15d2('0x38'));_0x4701e1[_0x15d2('0x39')]=_[_0x15d2('0x3a')](_0x587ad7['query']);_0x4701e1[_0x15d2('0x3b')]=_[_0x15d2('0x3c')](_0x4701e1[_0x15d2('0x37')],_0x4701e1[_0x15d2('0x39')]);_0x6538df[_0x15d2('0x3d')]=_[_0x15d2('0x3c')](_0x4701e1['model'],qs[_0x15d2('0x3e')](_0x587ad7['query']['fields']));_0x6538df['attributes']=_0x6538df[_0x15d2('0x3d')][_0x15d2('0x3f')]?_0x6538df[_0x15d2('0x3d')]:_0x4701e1[_0x15d2('0x37')];if(!_0x587ad7[_0x15d2('0x39')][_0x15d2('0x40')](_0x15d2('0x41'))){_0x6538df[_0x15d2('0x42')]=qs[_0x15d2('0x42')](_0x587ad7[_0x15d2('0x39')][_0x15d2('0x42')]);_0x6538df[_0x15d2('0x20')]=qs[_0x15d2('0x20')](_0x587ad7[_0x15d2('0x39')][_0x15d2('0x20')]);}_0x6538df[_0x15d2('0x43')]=qs[_0x15d2('0x44')](_0x587ad7[_0x15d2('0x39')][_0x15d2('0x44')]);_0x6538df['where']=qs[_0x15d2('0x3b')](_[_0x15d2('0x45')](_0x587ad7[_0x15d2('0x39')],_0x4701e1['filters']),_0x181ef5);var _0x460139=[];var _0x25ab48=squel[_0x15d2('0x46')]()[_0x15d2('0x47')]('id')[_0x15d2('0x47')](_0x15d2('0x38'))['field'](_0x15d2('0x48'))[_0x15d2('0x49')](_0x15d2('0x4a'));var _0x50a726=squel[_0x15d2('0x46')]()[_0x15d2('0x47')](_0x15d2('0x4b'))['field'](_0x15d2('0x4c'))[_0x15d2('0x47')]('ui.FaxInteractionId')[_0x15d2('0x49')](_0x15d2('0x4d'),'ui')[_0x15d2('0x4e')](_0x15d2('0x4f'),'u',_0x15d2('0x50'));var _0x37a38e=squel[_0x15d2('0x46')]()[_0x15d2('0x49')](_0x15d2('0x51'),'i')[_0x15d2('0x4e')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x15d2('0x4e')](_0x15d2('0x4f'),'o',_0x15d2('0x52'))['left_join'](_0x15d2('0x53'),'a',_0x15d2('0x54'))[_0x15d2('0x4e')](_0x15d2('0x55'),'me',_0x15d2('0x56'))[_0x15d2('0x4e')](_0x15d2('0x57'),'it',_0x15d2('0x58'))[_0x15d2('0x4e')](_0x15d2('0x4a'),'t',_0x15d2('0x59'));var _0x441475=squel[_0x15d2('0x5a')]();var _0x103bef=[];var _0x1a5211=squel['expr']();var _0x54c08f;if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x5b')]){_0x54c08f=as['parseSearch'](_0x587ad7['query'][_0x15d2('0x5b')]);var _0x3f85af=_0x54c08f[_0x15d2('0x5c')];for(var _0x4443bd=0x0;_0x4443bd<_0x54c08f[_0x15d2('0x5d')][_0x15d2('0x3f')];_0x4443bd++){var _0x5c6e82=_0x54c08f[_0x15d2('0x5d')][_0x4443bd];var _0x1be33c='i';var _0x230437=_['find'](_0x181ef5,[_0x15d2('0x38'),_0x5c6e82[_0x15d2('0x47')]]);if(!_0x230437){switch(_0x5c6e82[_0x15d2('0x47')]){case _0x15d2('0x5e'):if(_0x5c6e82[_0x15d2('0x5f')]==0x1){_0x37a38e['having']('`'+_0x5c6e82[_0x15d2('0x47')]+_0x15d2('0x60'));}else{_0x37a38e[_0x15d2('0x61')]('`'+_0x5c6e82[_0x15d2('0x47')]+_0x15d2('0x62'));}break;case _0x15d2('0x63'):if(_0x5c6e82['operator']===_0x15d2('0x64')){if(_0x5c6e82[_0x15d2('0x5f')][_0x15d2('0x30')]('\x20')[_0x15d2('0x3f')]>0x1){_0x441475[_0x3f85af](_0x15d2('0x65'),qs[_0x15d2('0x66')](_0x5c6e82[_0x15d2('0x5f')]),null);}else{var _0x29052e='%'+_0x5c6e82[_0x15d2('0x5f')]+'%';_0x441475[_0x3f85af](_0x15d2('0x67'),_0x29052e,_0x29052e,_0x29052e);}}else{_0x230437=_[_0x15d2('0x68')](_0x181ef5,['name',_0x15d2('0x69')]);_0x5c6e82[_0x15d2('0x47')]=_0x15d2('0x69');_0x51a82b=as[_0x15d2('0x6a')](_0x1be33c,_0x230437['type'],_0x5c6e82);_0x441475[_0x3f85af](_0x51a82b[_0x15d2('0x6b')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x6c')],_0x51a82b[_0x15d2('0x5f')]['end']);}break;case _0x15d2('0x6d'):var _0x981b63=_0x5c6e82[_0x15d2('0x5f')][_0x15d2('0x30')](',')[_0x15d2('0x2c')](function(_0x39fbed){return Number(_0x39fbed);});_0x981b63[_0x15d2('0x31')](function(_0x2a5b6f){_0x1a5211['or'](_0x15d2('0x6e'),'%,'+_0x2a5b6f+',%');});_0x103bef=_[_0x15d2('0x6f')](_0x103bef,_0x981b63);break;case'User':if(_0x5c6e82['operator']===_0x15d2('0x64')){_0x441475[_0x3f85af]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x5c6e82[_0x15d2('0x5f')]+'%',null);}else{_0x230437=_['find'](_0x181ef5,['name','UserId']);_0x5c6e82[_0x15d2('0x47')]='UserId';_0x51a82b=as[_0x15d2('0x6a')](_0x1be33c,_0x230437[_0x15d2('0x35')],_0x5c6e82);_0x441475[_0x3f85af](_0x51a82b[_0x15d2('0x6b')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x6c')],_0x51a82b[_0x15d2('0x5f')]['end']);}break;case _0x15d2('0x70'):_0x51a82b=as['buildExpression']('me',null,_0x5c6e82);_0x441475[_0x3f85af](_0x51a82b[_0x15d2('0x6b')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x6c')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x1e')]);break;}}else{var _0x51a82b=as[_0x15d2('0x6a')](_0x1be33c,_0x230437[_0x15d2('0x35')],_0x5c6e82);_0x441475[_0x3f85af](_0x51a82b[_0x15d2('0x6b')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x6c')],_0x51a82b[_0x15d2('0x5f')][_0x15d2('0x1e')]);}}}else{var _0x35e081=_(_0x587ad7['query'])[_0x15d2('0x3a')]()[_0x15d2('0x2c')](function(_0x1409b0){return _[_0x15d2('0x71')](_0x181ef5,[_0x15d2('0x38'),_0x1409b0])?_0x1409b0:undefined;})['compact']()['value']();if(!_[_0x15d2('0x72')](_0x35e081)){_0x35e081[_0x15d2('0x31')](function(_0x3e0409){if(_0x3e0409===_0x15d2('0x73')){_0x37a38e['where']('i.FaxAccountId\x20IN\x20?',[][_0x15d2('0x74')](_0x587ad7[_0x15d2('0x39')][_0x3e0409]));}else if(_0x3e0409==='createdAt'){var _0x23a29c=JSON['parse'](_0x587ad7[_0x15d2('0x39')][_0x3e0409])[_0x15d2('0x75')];var _0x3833c3=JSON[_0x15d2('0x76')](_0x587ad7[_0x15d2('0x39')][_0x3e0409])['$lte'];_0x37a38e[_0x15d2('0x77')](_0x15d2('0x78'),_0x23a29c,_0x3833c3);}else{if(_0x587ad7[_0x15d2('0x39')][_0x3e0409]===_0x15d2('0x79')){_0x37a38e[_0x15d2('0x77')]('i.'+_0x3e0409+_0x15d2('0x7a'));}else{_0x37a38e['where']('i.'+_0x3e0409+'\x20=\x20?',_0x587ad7[_0x15d2('0x39')][_0x3e0409]);}}});}if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x7b')]){if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x7b')]==0x1){_0x37a38e['having'](_0x15d2('0x7c'));}else{_0x37a38e['having']('`unreadMessages`\x20>\x200');}}if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x7d')]){_0x103bef=_[_0x15d2('0x7e')](_0x587ad7[_0x15d2('0x39')]['tag'])?_0x587ad7['query'][_0x15d2('0x7d')]:new Array(_0x587ad7['query'][_0x15d2('0x7d')]);_0x103bef[_0x15d2('0x31')](function(_0x39c689){_0x1a5211['or'](_0x15d2('0x6e'),'%,'+_0x39c689+',%');});}if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x7f')]){var _0x5b8f5f=_0x587ad7[_0x15d2('0x39')][_0x15d2('0x7f')]['replace']('\x5c','\x5c\x5c')[_0x15d2('0x80')](/'/g,'\x27\x27');if(qs[_0x15d2('0x81')](_0x5b8f5f)){_0x441475['or'](_0x15d2('0x82'),_0x5b8f5f+'%')['or'](_0x15d2('0x83'),_0x5b8f5f+'%');}_0x441475['or'](_0x15d2('0x84'),_0x5b8f5f+'%');}}_0x37a38e[_0x15d2('0x77')](_0x441475);_0x37a38e[_0x15d2('0x85')](_0x15d2('0x86'));var _0x31189f={'type':db[_0x15d2('0x87')]['QueryTypes'][_0x15d2('0x88')],'raw':!![]};var _0x1d3792=_0x37a38e[_0x15d2('0x89')]();_0x1d3792[_0x15d2('0x47')]('i.id');_0x1d3792[_0x15d2('0x47')](_0x15d2('0x8a'),_0x15d2('0x5e'));if(_0x6538df[_0x15d2('0x43')]){_0x6538df[_0x15d2('0x43')]['forEach'](function(_0x1696e2){var _0x50e5f2=_0x1696e2[0x0]===_0x15d2('0x8b')?_0x1696e2[0x0]:'i.'+_0x1696e2[0x0];_0x37a38e['order'](_0x50e5f2,_0x1696e2[0x1]===_0x15d2('0x8c')?![]:!![]);});}if(!_[_0x15d2('0x72')](_0x103bef)){_0x37a38e[_0x15d2('0x61')](_0x1a5211);_0x1d3792['where'](_0x15d2('0x8d'),_0x103bef);}BPromise[_0x15d2('0x8e')]()[_0x15d2('0x26')](function(){if(!_0x54c08f){if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x73')])return;_0x1d3792['where']('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x37a38e[_0x15d2('0x77')](_0x15d2('0x8f'));return;}if(_0x587ad7['user'][_0x15d2('0x90')]!==_0x15d2('0x91'))return;return _0x587ad7['user'][_0x15d2('0x92')]({'attributes':['id'],'raw':!![]})['then'](function(_0x41c336){if(_[_0x15d2('0x72')](_0x41c336)){_0x1d3792[_0x15d2('0x77')]('i.FaxAccountId\x20IS\x20NULL');_0x37a38e[_0x15d2('0x77')](_0x15d2('0x93'));}else{_0x1d3792[_0x15d2('0x77')](_0x15d2('0x94'),_[_0x15d2('0x2c')](_0x41c336,'id'));_0x37a38e[_0x15d2('0x77')](_0x15d2('0x94'),_['map'](_0x41c336,'id'));}});})[_0x15d2('0x26')](function(){if(_0x587ad7[_0x15d2('0x95')]['role']===_0x15d2('0x91')&&!_0x54c08f&&!_0x587ad7[_0x15d2('0x39')][_0x15d2('0x73')])return[];return db['sequelize'][_0x15d2('0x39')](_0x1d3792['toString'](),_0x31189f);})[_0x15d2('0x26')](function(_0x5e6e2e){_0x64ff03[_0x15d2('0x22')]=_0x5e6e2e[_0x15d2('0x3f')];if(_0x64ff03[_0x15d2('0x22')]===0x0)return[];return db[_0x15d2('0x96')][_0x15d2('0x39')](_0x25ab48['toString'](),_0x31189f)[_0x15d2('0x26')](function(_0x13f234){_0x460139=_['keyBy'](_0x13f234,'id');_0x31189f=_['merge'](_0x31189f,{'model':db[_0x15d2('0x97')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x587ad7[_0x15d2('0x39')][_0x15d2('0x3e')]){_0x6538df['attributes'][_0x15d2('0x31')](function(_0x584384){_0x37a38e[_0x15d2('0x47')]('i.'+_0x584384);});}else{_0x37a38e[_0x15d2('0x47')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x15d2('0x5e'));_0x37a38e['field'](_0x15d2('0x98'),_0x15d2('0x99'));_0x37a38e['field'](_0x15d2('0x9a'),'Account.mandatoryDisposition');_0x37a38e[_0x15d2('0x47')](_0x15d2('0x9b'),_0x15d2('0x8b'));_0x37a38e['field'](_0x15d2('0x9c'));_0x37a38e[_0x15d2('0x47')](_0x15d2('0x9d'),'Contact.firstName');_0x37a38e[_0x15d2('0x47')](_0x15d2('0x9e'),_0x15d2('0x9f'));_0x37a38e['field'](_0x15d2('0xa0'),_0x15d2('0xa1'));_0x37a38e[_0x15d2('0x47')](_0x15d2('0xa2'),_0x15d2('0xa3'));_0x37a38e[_0x15d2('0x47')](_0x15d2('0xa4'),_0x15d2('0xa5'));_0x37a38e[_0x15d2('0x47')](_0x15d2('0xa6'),_0x15d2('0xa7'));_0x37a38e['field'](_0x15d2('0xa8'),_0x15d2('0xa9'));_0x37a38e[_0x15d2('0x47')]('o.internal',_0x15d2('0xaa'));_0x37a38e[_0x15d2('0x47')](_0x15d2('0xab'),_0x15d2('0x2e'));}if(_0x6538df['limit'])_0x37a38e['limit'](_0x6538df[_0x15d2('0x42')]);if(_0x6538df[_0x15d2('0x20')])_0x37a38e[_0x15d2('0x20')](_0x6538df[_0x15d2('0x20')]);return db[_0x15d2('0x96')]['query'](_0x37a38e['toString'](),_0x31189f);})[_0x15d2('0x26')](function(_0x1a26c9){if(_0x1a26c9[_0x15d2('0x3f')]>0x0)_0x50a726[_0x15d2('0x77')]('ui.FaxInteractionId\x20IN\x20?',_['map'](_0x1a26c9,'id'));return db['sequelize']['query'](_0x50a726[_0x15d2('0xac')](),_0x31189f)[_0x15d2('0x26')](function(_0xedfa3c){var _0x6b3bf6=_[_0x15d2('0xad')](_0xedfa3c,_0x15d2('0xae'));var _0x4c9644=[];_0x1a26c9['forEach'](function(_0x3c31a3){_0x4c9644[_0x15d2('0x32')](updateFaxInteraction(_0x3c31a3,_0x460139,_0x6b3bf6));});return BPromise[_0x15d2('0xaf')](_0x4c9644);});});})[_0x15d2('0x26')](function(_0x4b61ba){_0x64ff03[_0x15d2('0xb0')]=_0x4b61ba;return _0x64ff03;})[_0x15d2('0x26')](respondWithFilteredResult(_0x4d6f0a,_0x6538df))[_0x15d2('0xb1')](handleError(_0x4d6f0a,null));};exports[_0x15d2('0xb2')]=function(_0xdbece,_0x7632ae){var _0x4dd90c={'raw':![],'where':{'id':_0xdbece[_0x15d2('0xb3')]['id']}},_0x4da626={};_0x4da626[_0x15d2('0x37')]=_[_0x15d2('0x3a')](db[_0x15d2('0x97')][_0x15d2('0xb4')]);_0x4da626[_0x15d2('0x39')]=_[_0x15d2('0x3a')](_0xdbece[_0x15d2('0x39')]);_0x4da626[_0x15d2('0x3b')]=_['intersection'](_0x4da626[_0x15d2('0x37')],_0x4da626[_0x15d2('0x39')]);_0x4dd90c[_0x15d2('0x3d')]=_[_0x15d2('0x3c')](_0x4da626[_0x15d2('0x37')],qs['fields'](_0xdbece[_0x15d2('0x39')]['fields']));_0x4dd90c[_0x15d2('0x3d')]=_0x4dd90c[_0x15d2('0x3d')][_0x15d2('0x3f')]?_0x4dd90c[_0x15d2('0x3d')]:_0x4da626[_0x15d2('0x37')];if(_0xdbece[_0x15d2('0x39')]['includeAll']){_0x4dd90c[_0x15d2('0xb5')]=[{'all':!![]}];}_0x4dd90c=_['merge']({},_0x4dd90c,_0xdbece['options']);return db[_0x15d2('0x97')][_0x15d2('0x68')](_0x4dd90c)[_0x15d2('0x26')](handleEntityNotFound(_0x7632ae,null))['then'](respondWithResult(_0x7632ae,null))['catch'](handleError(_0x7632ae,null));};exports[_0x15d2('0xb6')]=function(_0x380a69,_0x12dfc4){return db[_0x15d2('0x97')][_0x15d2('0xb6')](_0x380a69[_0x15d2('0x70')],{})[_0x15d2('0x26')](respondWithResult(_0x12dfc4,0xc9))[_0x15d2('0xb1')](handleError(_0x12dfc4,null));};exports['update']=function(_0x3c8425,_0x15f29b){if(_0x3c8425[_0x15d2('0x70')]['id']){delete _0x3c8425[_0x15d2('0x70')]['id'];}return db[_0x15d2('0x97')][_0x15d2('0x68')]({'where':{'id':_0x3c8425['params']['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0x15f29b,null))[_0x15d2('0x26')](saveUpdates(_0x3c8425[_0x15d2('0x70')],null))[_0x15d2('0x26')](respondWithResult(_0x15f29b,null))[_0x15d2('0xb1')](handleError(_0x15f29b,null));};exports[_0x15d2('0x27')]=function(_0x17e6e9,_0x42edfd){return db['FaxInteraction'][_0x15d2('0x68')]({'where':{'id':_0x17e6e9[_0x15d2('0xb3')]['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0x42edfd,null))[_0x15d2('0x26')](removeEntity(_0x42edfd,null))[_0x15d2('0xb1')](handleError(_0x42edfd,null));};exports[_0x15d2('0xb7')]=function(_0x17adef,_0x5d224d){return db[_0x15d2('0x97')][_0x15d2('0xb7')]()[_0x15d2('0x26')](respondWithResult(_0x5d224d,null))[_0x15d2('0xb1')](handleError(_0x5d224d,null));};exports[_0x15d2('0xb8')]=function(_0x50e228,_0xb3c42d,_0x36a33a){return db[_0x15d2('0xb9')][_0x15d2('0x68')]({'where':{'id':_0x50e228[_0x15d2('0xb3')]['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0xb3c42d,null))['then'](function(_0x3d8276){if(_0x3d8276){return _0x3d8276[_0x15d2('0xb8')](_0x50e228[_0x15d2('0x70')][_0x15d2('0xba')],_[_0x15d2('0xbb')](_0x50e228[_0x15d2('0x70')],[_0x15d2('0xba'),'id'])||{});}})[_0x15d2('0x26')](respondWithResult(_0xb3c42d,null))[_0x15d2('0xb1')](handleError(_0xb3c42d,null));};exports[_0x15d2('0xbc')]=function(_0x52b8a,_0x5c9b68,_0x55ae49){var _0xd398bd={'raw':![],'where':{}};var _0x93b811={};var _0x3fece0={'count':0x0,'rows':[]};return db[_0x15d2('0x97')][_0x15d2('0xbd')]({'where':{'id':_0x52b8a[_0x15d2('0xb3')]['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0x5c9b68,null))[_0x15d2('0x26')](function(_0x2c3a66){if(_0x2c3a66){_0x93b811[_0x15d2('0x37')]=_[_0x15d2('0x3a')](db[_0x15d2('0xb9')][_0x15d2('0xb4')]);_0x93b811['query']=_[_0x15d2('0x3a')](_0x52b8a[_0x15d2('0x39')]);_0x93b811[_0x15d2('0x3b')]=_[_0x15d2('0x3c')](_0x93b811[_0x15d2('0x37')],_0x93b811[_0x15d2('0x39')]);_0xd398bd[_0x15d2('0x3d')]=_[_0x15d2('0x3c')](_0x93b811[_0x15d2('0x37')],qs[_0x15d2('0x3e')](_0x52b8a['query'][_0x15d2('0x3e')]));_0xd398bd[_0x15d2('0x3d')]=_0xd398bd['attributes'][_0x15d2('0x3f')]?_0xd398bd[_0x15d2('0x3d')]:_0x93b811[_0x15d2('0x37')];if(!_0x52b8a[_0x15d2('0x39')][_0x15d2('0x40')](_0x15d2('0x41'))){_0xd398bd[_0x15d2('0x42')]=qs['limit'](_0x52b8a['query'][_0x15d2('0x42')]);_0xd398bd['offset']=qs['offset'](_0x52b8a[_0x15d2('0x39')][_0x15d2('0x20')]);}_0xd398bd['order']=qs['sort'](_0x52b8a[_0x15d2('0x39')]['sort']);_0xd398bd[_0x15d2('0x77')]=qs[_0x15d2('0x3b')](_['pick'](_0x52b8a[_0x15d2('0x39')],_0x93b811[_0x15d2('0x3b')]));_0xd398bd[_0x15d2('0x77')][_0x15d2('0xae')]=_0x2c3a66['id'];if(_0x52b8a['query'][_0x15d2('0x7f')]){_0xd398bd[_0x15d2('0x77')]=_[_0x15d2('0xbe')](_0xd398bd['where'],{'$or':_['map'](_0xd398bd[_0x15d2('0x3d')],function(_0x23f0c2){var _0x55f87b={};_0x55f87b[_0x23f0c2]={'$like':'%'+_0x52b8a[_0x15d2('0x39')]['filter']+'%'};return _0x55f87b;})});}if(_0x52b8a[_0x15d2('0x39')][_0x15d2('0x75')]){var _0x5012cd=_0x52b8a[_0x15d2('0x39')]['$gte']['split'](',');var _0x1d0801={};_0x1d0801[_0x5012cd[0x0]]={'$gte':moment(_0x5012cd[0x1])[_0x15d2('0xbf')]('YYYY-MM-DD\x20HH:mm:ss')};_0xd398bd[_0x15d2('0x77')]=_[_0x15d2('0xbe')](_0xd398bd[_0x15d2('0x77')],_0x1d0801);}_0xd398bd=_['merge']({},_0xd398bd,_0x52b8a['options']);return db[_0x15d2('0xb9')]['count']({'where':_0xd398bd['where']})['then'](function(_0x1b922b){_0x3fece0[_0x15d2('0x22')]=_0x1b922b;if(_0x52b8a[_0x15d2('0x39')]['includeAll']){_0xd398bd[_0x15d2('0xb5')]=[{'all':!![]}];}return db[_0x15d2('0xb9')][_0x15d2('0xc0')](_0xd398bd);})[_0x15d2('0x26')](function(_0x5b5184){_0x3fece0[_0x15d2('0xb0')]=_0x5b5184;return _0x3fece0;});}})[_0x15d2('0x26')](respondWithFilteredResult(_0x5c9b68,_0xd398bd))[_0x15d2('0xb1')](handleError(_0x5c9b68,null));};exports[_0x15d2('0xc1')]=function(_0x527b5d,_0x1ff1a1,_0x5c8c17){return db[_0x15d2('0x97')][_0x15d2('0x68')]({'where':{'id':_0x527b5d['params']['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0x1ff1a1,null))['then'](function(_0x226d8f){if(_0x226d8f){return _0x226d8f[_0x15d2('0xc2')](_0x527b5d[_0x15d2('0x70')][_0x15d2('0xba')],_[_0x15d2('0xbb')](_0x527b5d[_0x15d2('0x70')],[_0x15d2('0xba'),'id'])||{})[_0x15d2('0xc3')](function(){return db[_0x15d2('0x6d')]['findAll']({'attributes':['id',_0x15d2('0x38'),_0x15d2('0x48')],'where':{'id':_0x527b5d[_0x15d2('0x70')][_0x15d2('0xba')]}});})['then'](function(_0x432c7a){socket['emit'](_0x15d2('0xc4'),{'id':Number(_0x527b5d[_0x15d2('0xb3')]['id']),'tags':_0x432c7a||[]});return{'id':Number(_0x527b5d[_0x15d2('0xb3')]['id']),'tags':_0x432c7a||[]};});}})[_0x15d2('0x26')](respondWithResult(_0x1ff1a1,null))[_0x15d2('0xb1')](handleError(_0x1ff1a1,null));};exports[_0x15d2('0xc5')]=function(_0x425e44,_0x1a7dbe,_0x55b09b){return db['FaxInteraction'][_0x15d2('0x68')]({'where':{'id':_0x425e44['params']['id']}})[_0x15d2('0x26')](handleEntityNotFound(_0x1a7dbe,null))[_0x15d2('0x26')](function(_0x41efcc){if(_0x41efcc){return _0x41efcc['removeTags'](_0x425e44[_0x15d2('0x39')][_0x15d2('0xba')]);}})[_0x15d2('0x26')](respondWithStatusCode(_0x1a7dbe,null))[_0x15d2('0xb1')](handleError(_0x1a7dbe,null));};exports['download']=function(_0x40e06a,_0x3570b2){var _0x2cbc6c=moment()[_0x15d2('0xc6')]()['toString']();var _0x10542d=path['join'](config[_0x15d2('0xc7')],_0x15d2('0xc8'),_0x15d2('0xc9'),_0x15d2('0xca'));var _0x4928db=path[_0x15d2('0xcb')](config[_0x15d2('0xc7')],_0x15d2('0xc8'),_0x15d2('0xc9'),_0x15d2('0xcc'));var _0x25ae00=path[_0x15d2('0xcb')](_0x10542d,_0x2cbc6c);var _0xfe24f0=util['format'](_0x15d2('0xcd'),_0x40e06a[_0x15d2('0xb3')]['id'],_0x2cbc6c);var _0x291224=path[_0x15d2('0xcb')](_0x10542d,_0xfe24f0);var _0x1dc393=[];_0x1dc393['push']({'model':db[_0x15d2('0xce')],'as':_0x15d2('0xce'),'raw':!![]});var _0xfaedde=[{'model':db[_0x15d2('0xb9')],'as':'Messages','attributes':['id',_0x15d2('0x70'),_0x15d2('0xcf')],'include':_0x1dc393}];return db[_0x15d2('0x97')][_0x15d2('0x68')]({'where':{'id':_0x40e06a[_0x15d2('0xb3')]['id']},'include':_0xfaedde})['then'](handleEntityNotFound(_0x3570b2,null))[_0x15d2('0x26')](function(_0x383ea8){if(_0x383ea8&&_0x383ea8['Messages']){var _0x50cfc1=_0x383ea8[_0x15d2('0xd0')]({'plain':!![]});fs[_0x15d2('0xd1')](_0x25ae00);for(var _0x10942c=0x0;_0x10942c<_0x50cfc1['Messages'][_0x15d2('0x3f')];_0x10942c++){var _0x2fe30c=_0x50cfc1[_0x15d2('0xd2')][_0x10942c][_0x15d2('0xce')];if(_0x2fe30c){var _0x4be8e4=path[_0x15d2('0xcb')](_0x4928db,_0x2fe30c['basename']);if(fs[_0x15d2('0xd3')](_0x4be8e4)){fs[_0x15d2('0xd4')](_0x4be8e4)[_0x15d2('0xd5')](fs['createWriteStream'](path[_0x15d2('0xcb')](_0x25ae00,_0x2fe30c[_0x15d2('0xd6')])));}}}return BPromise[_0x15d2('0x8e')]()[_0x15d2('0x26')](function(){return new BPromise(function(_0x3ab1e9,_0x51100){zipdir(_0x25ae00,{'saveTo':_0x291224},function(_0x27f6d2,_0x5610e2){if(_0x27f6d2)return _0x51100(_0x27f6d2);return _0x3ab1e9(_0x5610e2);});})[_0x15d2('0x26')](function(){return new BPromise(function(_0x4853ef,_0x3ce4c2){rimraf(_0x25ae00,function(_0x24b50d){if(_0x24b50d)_0x3ce4c2(_0x24b50d);return _0x4853ef();});});})[_0x15d2('0x26')](function(){return _0x3570b2[_0x15d2('0xd7')](_0x291224,_0xfe24f0,function(_0x17c0d7){if(_0x17c0d7){console[_0x15d2('0xd8')](_0x15d2('0xd9'),_0x17c0d7);}else{fs[_0x15d2('0xda')](_0x291224);}});});});}else{return _0x3570b2[_0x15d2('0x28')](0xc8);}})[_0x15d2('0xb1')](handleError(_0x3570b2,null));};
\ No newline at end of file
index c4f18ac..d19c5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60b9=['FaxMessage','save','remove','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction'];(function(_0x4211bb,_0x424082){var _0x36d8e8=function(_0x8665dc){while(--_0x8665dc){_0x4211bb['push'](_0x4211bb['shift']());}};_0x36d8e8(++_0x424082);}(_0x60b9,0x69));var _0x960b=function(_0x4f54a8,_0x564967){_0x4f54a8=_0x4f54a8-0x0;var _0x103a8a=_0x60b9[_0x4f54a8];return _0x103a8a;};'use strict';var EventEmitter=require(_0x960b('0x0'));var FaxInteraction=require(_0x960b('0x1'))['db'][_0x960b('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x960b('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x960b('0x4'),'afterUpdate':'update','afterDestroy':_0x960b('0x5')};function emitEvent(_0x3ae977){return function(_0x316490,_0x429648,_0x5c1baf){_0x316490['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x642760){_0x316490[_0x960b('0x6')](_0x960b('0x7'),_0x642760[_0x960b('0x8')](function(_0x318890){return{'id':_0x318890['id']};}));return FaxMessage[_0x960b('0x9')]({'where':{'FaxInteractionId':_0x316490['id'],'direction':'in','read':![]},'raw':!![]});})[_0x960b('0xa')](function(_0x426643){_0x316490[_0x960b('0x6')](_0x960b('0xb'),_0x426643[_0x960b('0xc')]);FaxInteractionEvents[_0x960b('0xd')](_0x3ae977+':'+_0x316490['id'],_0x316490);FaxInteractionEvents['emit'](_0x3ae977,_0x316490);_0x5c1baf(null);})[_0x960b('0xe')](_0x5c1baf(null));};}for(var e in events){if(events[_0x960b('0xf')](e)){var event=events[e];FaxInteraction[_0x960b('0x10')](e,emitEvent(event));}}module[_0x960b('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x7a6c=['FaxInteraction','FaxMessage','setMaxListeners','save','remove','then','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x11e210,_0x71410b){var _0x186d30=function(_0x262ab1){while(--_0x262ab1){_0x11e210['push'](_0x11e210['shift']());}};_0x186d30(++_0x71410b);}(_0x7a6c,0x15f));var _0xc7a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a6c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0xc7a6('0x0'))['db'][_0xc7a6('0x1')];var FaxMessage=require(_0xc7a6('0x0'))['db'][_0xc7a6('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc7a6('0x3')](0x0);var events={'afterCreate':_0xc7a6('0x4'),'afterUpdate':'update','afterDestroy':_0xc7a6('0x5')};function emitEvent(_0xc57632){return function(_0xb1593b,_0x85f593,_0x243509){_0xb1593b['getUsers']({'attributes':['id'],'raw':!![]})[_0xc7a6('0x6')](function(_0x5b2ad3){_0xb1593b['setDataValue'](_0xc7a6('0x7'),_0x5b2ad3[_0xc7a6('0x8')](function(_0x34cc55){return{'id':_0x34cc55['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0xb1593b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc7a6('0x6')](function(_0x419aca){_0xb1593b['setDataValue'](_0xc7a6('0x9'),_0x419aca[_0xc7a6('0xa')]);FaxInteractionEvents[_0xc7a6('0xb')](_0xc57632+':'+_0xb1593b['id'],_0xb1593b);FaxInteractionEvents[_0xc7a6('0xb')](_0xc57632,_0xb1593b);_0x243509(null);})[_0xc7a6('0xc')](_0x243509(null));};}for(var e in events){if(events[_0xc7a6('0xd')](e)){var event=events[e];FaxInteraction[_0xc7a6('0xe')](e,emitEvent(event));}}module[_0xc7a6('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index ab14815..84d5a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0427=['bluebird','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','changed','closed','closedAt','lodash','util','api','moment'];(function(_0x14a385,_0x9b6d69){var _0x30b087=function(_0x3c28f1){while(--_0x3c28f1){_0x14a385['push'](_0x14a385['shift']());}};_0x30b087(++_0x9b6d69);}(_0x0427,0x173));var _0x7042=function(_0x42267,_0xb53dc6){_0x42267=_0x42267-0x0;var _0x44ffff=_0x0427[_0x42267];return _0x44ffff;};'use strict';var _=require(_0x7042('0x0'));var util=require(_0x7042('0x1'));var logger=require('../../config/logger')(_0x7042('0x2'));var moment=require(_0x7042('0x3'));var BPromise=require(_0x7042('0x4'));var rp=require(_0x7042('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7042('0x6'));var config=require(_0x7042('0x7'));var attributes=require(_0x7042('0x8'));module[_0x7042('0x9')]=function(_0x430ccd,_0xa68e28){return _0x430ccd[_0x7042('0xa')](_0x7042('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c6214,_0x10a62a,_0x444113){if(_0x4c6214[_0x7042('0xc')](_0x7042('0xd'))){_0x4c6214[_0x7042('0xe')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x444113(null,_0x4c6214);}}});};
\ No newline at end of file
+var _0xbeb6=['define','fax_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports'];(function(_0x5e8526,_0x1b137a){var _0x1156a3=function(_0x2c73fe){while(--_0x2c73fe){_0x5e8526['push'](_0x5e8526['shift']());}};_0x1156a3(++_0x1b137a);}(_0xbeb6,0x19e));var _0x6beb=function(_0xa1cd61,_0x1cbf89){_0xa1cd61=_0xa1cd61-0x0;var _0x4807fc=_0xbeb6[_0xa1cd61];return _0x4807fc;};'use strict';var _=require('lodash');var util=require(_0x6beb('0x0'));var logger=require(_0x6beb('0x1'))(_0x6beb('0x2'));var moment=require(_0x6beb('0x3'));var BPromise=require(_0x6beb('0x4'));var rp=require(_0x6beb('0x5'));var fs=require('fs');var path=require(_0x6beb('0x6'));var rimraf=require(_0x6beb('0x7'));var config=require(_0x6beb('0x8'));var attributes=require(_0x6beb('0x9'));module[_0x6beb('0xa')]=function(_0x261801,_0x17fc47){return _0x261801[_0x6beb('0xb')]('FaxInteraction',attributes,{'tableName':_0x6beb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x186a19,_0x189a4a,_0x5a4152){if(_0x186a19[_0x6beb('0xd')](_0x6beb('0xe'))){_0x186a19[_0x6beb('0xf')]=moment()['format'](_0x6beb('0x10'));}_0x5a4152(null,_0x186a19);}}});};
\ No newline at end of file
index cacf90a..99cee01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20fc=['result','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','stringify','catch','find','addTags','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','redis','localhost','socket.io-emitter','./faxInteraction.socket','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x20fc,0x1cb));var _0xc20f=function(_0xbf5e16,_0x146ce3){_0xbf5e16=_0xbf5e16-0x0;var _0x5975a5=_0x20fc[_0xbf5e16];return _0x5975a5;};'use strict';var _=require(_0xc20f('0x0'));var util=require(_0xc20f('0x1'));var moment=require('moment');var BPromise=require(_0xc20f('0x2'));var rs=require(_0xc20f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc20f('0x4'))['db'];var utils=require(_0xc20f('0x5'));var logger=require('../../config/logger')(_0xc20f('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc20f('0x7')]['http']({'port':0x232a});config[_0xc20f('0x8')]=_['defaults'](config[_0xc20f('0x8')],{'host':_0xc20f('0x9'),'port':0x18eb});var socket=require(_0xc20f('0xa'))(new Redis(config[_0xc20f('0x8')]));require(_0xc20f('0xb'))['register'](socket);function respondWithRpcPromise(_0x5f629d,_0x483035,_0x989f1d){return new BPromise(function(_0x41a50d,_0x589221){return client[_0xc20f('0xc')](_0x5f629d,_0x989f1d)[_0xc20f('0xd')](function(_0x22d155){logger['info'](_0xc20f('0xe'),_0x483035,_0xc20f('0xf'));logger[_0xc20f('0x10')](_0xc20f('0x11'),_0x483035,_0xc20f('0xf'),JSON['stringify'](_0x22d155));if(_0x22d155['error']){if(_0x22d155[_0xc20f('0x12')][_0xc20f('0x13')]===0x1f4){logger[_0xc20f('0x12')]('FaxInteraction,\x20%s,\x20%s',_0x483035,_0x22d155[_0xc20f('0x12')]['message']);return _0x589221(_0x22d155[_0xc20f('0x12')][_0xc20f('0x14')]);}logger[_0xc20f('0x12')](_0xc20f('0xe'),_0x483035,_0x22d155[_0xc20f('0x12')][_0xc20f('0x14')]);return _0x41a50d(_0x22d155['error'][_0xc20f('0x14')]);}else{logger[_0xc20f('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x483035,_0xc20f('0xf'));_0x41a50d(_0x22d155[_0xc20f('0x16')][_0xc20f('0x14')]);}})['catch'](function(_0x4a8480){logger[_0xc20f('0x12')](_0xc20f('0xe'),_0x483035,_0x4a8480);_0x589221(_0x4a8480);});});}exports[_0xc20f('0x17')]=function(_0x41da58){var _0x323e25=this;return new Promise(function(_0x59aa79,_0x1cd1cd){return db[_0xc20f('0x18')][_0xc20f('0x19')](_0x41da58[_0xc20f('0x1a')],{'raw':_0x41da58[_0xc20f('0x1b')]?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41da58[_0xc20f('0x1b')]?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1d')]||null:null,'attributes':_0x41da58[_0xc20f('0x1b')]?_0x41da58['options'][_0xc20f('0x1e')]||null:null,'limit':_0x41da58['options']?_0x41da58[_0xc20f('0x1b')][_0xc20f('0x1f')]||null:null})[_0xc20f('0xd')](function(_0x16f048){logger[_0xc20f('0x15')](_0xc20f('0x17'),_0x41da58);logger[_0xc20f('0x10')]('UpdateFaxInteraction',_0x41da58,JSON[_0xc20f('0x20')](_0x16f048));_0x59aa79(_0x16f048);})[_0xc20f('0x21')](function(_0x11ee71){logger[_0xc20f('0x12')](_0xc20f('0x17'),_0x11ee71[_0xc20f('0x14')],_0x41da58);_0x1cd1cd(_0x323e25[_0xc20f('0x12')](0x1f4,_0x11ee71[_0xc20f('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x105e05){return new Promise(function(_0x1ccf4c,_0x3019ed){return db[_0xc20f('0x18')][_0xc20f('0x22')]({'where':_0x105e05[_0xc20f('0x1b')]?_0x105e05[_0xc20f('0x1b')][_0xc20f('0x1d')]||null:null})[_0xc20f('0xd')](function(_0x54b367){if(_0x54b367){return _0x54b367[_0xc20f('0x23')](_0x105e05[_0xc20f('0x1a')]['ids'],_['omit'](_0x105e05['body'],['ids','id'])||{});}})['spread'](function(_0x439b79){logger[_0xc20f('0x15')](_0xc20f('0x24'),_0x105e05);logger['debug'](_0xc20f('0x24'),_0x105e05,JSON[_0xc20f('0x20')](_0x439b79));_0x1ccf4c(_0x439b79);})[_0xc20f('0x21')](function(_0x5340dd){logger[_0xc20f('0x12')](_0xc20f('0x24'),_0x5340dd[_0xc20f('0x14')],_0x105e05);_0x3019ed(_this['error'](0x1f4,_0x5340dd['message']));});});};
\ No newline at end of file
+var _0x4f1c=['randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','attributes','limit','AddTagsToFaxInteraction','find','where','addTags','ids','omit','AddTags','lodash','util','moment','bluebird'];(function(_0x4756a1,_0x3f8d1){var _0x177c4f=function(_0xddb5e2){while(--_0xddb5e2){_0x4756a1['push'](_0x4756a1['shift']());}};_0x177c4f(++_0x3f8d1);}(_0x4f1c,0x14c));var _0xc4f1=function(_0x1ae989,_0x30b1f2){_0x1ae989=_0x1ae989-0x0;var _0x4c001a=_0x4f1c[_0x1ae989];return _0x4c001a;};'use strict';var _=require(_0xc4f1('0x0'));var util=require(_0xc4f1('0x1'));var moment=require(_0xc4f1('0x2'));var BPromise=require(_0xc4f1('0x3'));var rs=require(_0xc4f1('0x4'));var fs=require('fs');var Redis=require(_0xc4f1('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc4f1('0x6'))('rpc');var config=require(_0xc4f1('0x7'));var jayson=require(_0xc4f1('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xc4f1('0x9')]=_[_0xc4f1('0xa')](config[_0xc4f1('0x9')],{'host':_0xc4f1('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc4f1('0x9')]));require(_0xc4f1('0xc'))[_0xc4f1('0xd')](socket);function respondWithRpcPromise(_0x14fae7,_0xc7e225,_0x2bdaaa){return new BPromise(function(_0x5abb29,_0x147783){return client[_0xc4f1('0xe')](_0x14fae7,_0x2bdaaa)[_0xc4f1('0xf')](function(_0x271b25){logger[_0xc4f1('0x10')](_0xc4f1('0x11'),_0xc7e225,'request\x20sent');logger[_0xc4f1('0x12')](_0xc4f1('0x13'),_0xc7e225,_0xc4f1('0x14'),JSON[_0xc4f1('0x15')](_0x271b25));if(_0x271b25['error']){if(_0x271b25[_0xc4f1('0x16')][_0xc4f1('0x17')]===0x1f4){logger[_0xc4f1('0x16')]('FaxInteraction,\x20%s,\x20%s',_0xc7e225,_0x271b25[_0xc4f1('0x16')][_0xc4f1('0x18')]);return _0x147783(_0x271b25[_0xc4f1('0x16')][_0xc4f1('0x18')]);}logger[_0xc4f1('0x16')](_0xc4f1('0x11'),_0xc7e225,_0x271b25[_0xc4f1('0x16')]['message']);return _0x5abb29(_0x271b25['error']['message']);}else{logger['info'](_0xc4f1('0x11'),_0xc7e225,_0xc4f1('0x14'));_0x5abb29(_0x271b25[_0xc4f1('0x19')]['message']);}})[_0xc4f1('0x1a')](function(_0x3c0ec4){logger[_0xc4f1('0x16')](_0xc4f1('0x11'),_0xc7e225,_0x3c0ec4);_0x147783(_0x3c0ec4);});});}exports[_0xc4f1('0x1b')]=function(_0x4a1816){var _0x393464=this;return new Promise(function(_0x5db335,_0x159b32){return db[_0xc4f1('0x1c')][_0xc4f1('0x1d')](_0x4a1816[_0xc4f1('0x1e')],{'raw':_0x4a1816['options']?_0x4a1816[_0xc4f1('0x1f')][_0xc4f1('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a1816['options']?_0x4a1816[_0xc4f1('0x1f')]['where']||null:null,'attributes':_0x4a1816[_0xc4f1('0x1f')]?_0x4a1816[_0xc4f1('0x1f')][_0xc4f1('0x21')]||null:null,'limit':_0x4a1816[_0xc4f1('0x1f')]?_0x4a1816[_0xc4f1('0x1f')][_0xc4f1('0x22')]||null:null})[_0xc4f1('0xf')](function(_0x107903){logger[_0xc4f1('0x10')](_0xc4f1('0x1b'),_0x4a1816);logger['debug'](_0xc4f1('0x1b'),_0x4a1816,JSON[_0xc4f1('0x15')](_0x107903));_0x5db335(_0x107903);})[_0xc4f1('0x1a')](function(_0x398329){logger[_0xc4f1('0x16')](_0xc4f1('0x1b'),_0x398329[_0xc4f1('0x18')],_0x4a1816);_0x159b32(_0x393464[_0xc4f1('0x16')](0x1f4,_0x398329[_0xc4f1('0x18')]));});});};exports[_0xc4f1('0x23')]=function(_0x5d0df3){return new Promise(function(_0x12afe0,_0x35fa43){return db[_0xc4f1('0x1c')][_0xc4f1('0x24')]({'where':_0x5d0df3['options']?_0x5d0df3['options'][_0xc4f1('0x25')]||null:null})[_0xc4f1('0xf')](function(_0x1e4cf9){if(_0x1e4cf9){return _0x1e4cf9[_0xc4f1('0x26')](_0x5d0df3['body'][_0xc4f1('0x27')],_[_0xc4f1('0x28')](_0x5d0df3[_0xc4f1('0x1e')],[_0xc4f1('0x27'),'id'])||{});}})['spread'](function(_0x2af7fc){logger[_0xc4f1('0x10')](_0xc4f1('0x29'),_0x5d0df3);logger[_0xc4f1('0x12')](_0xc4f1('0x29'),_0x5d0df3,JSON[_0xc4f1('0x15')](_0x2af7fc));_0x12afe0(_0x2af7fc);})[_0xc4f1('0x1a')](function(_0x52b81c){logger[_0xc4f1('0x16')](_0xc4f1('0x29'),_0x52b81c['message'],_0x5d0df3);_0x35fa43(_this[_0xc4f1('0x16')](0x1f4,_0x52b81c['message']));});});};
\ No newline at end of file
index 1eb1a96..f1fdb64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a1=['register','length','faxInteraction:','./faxInteraction.events','remove','update','emit','removeListener'];(function(_0x196f12,_0x92b120){var _0x34aa51=function(_0x22dd87){while(--_0x22dd87){_0x196f12['push'](_0x196f12['shift']());}};_0x34aa51(++_0x92b120);}(_0xd4a1,0x73));var _0x1d4a=function(_0x31f280,_0x1dbe08){_0x31f280=_0x31f280-0x0;var _0x353349=_0xd4a1[_0x31f280];return _0x353349;};'use strict';var FaxInteractionEvents=require(_0x1d4a('0x0'));var events=['save',_0x1d4a('0x1'),_0x1d4a('0x2')];function createListener(_0x3099f7,_0x19d214){return function(_0x49f934){_0x19d214[_0x1d4a('0x3')](_0x3099f7,_0x49f934);};}function removeListener(_0x431b44,_0x4d6197){return function(){FaxInteractionEvents[_0x1d4a('0x4')](_0x431b44,_0x4d6197);};}exports[_0x1d4a('0x5')]=function(_0x4a8c15){for(var _0x253d9e=0x0,_0x5d15eb=events[_0x1d4a('0x6')];_0x253d9e<_0x5d15eb;_0x253d9e++){var _0xfb78d8=events[_0x253d9e];var _0x2c6d62=createListener(_0x1d4a('0x7')+_0xfb78d8,_0x4a8c15);FaxInteractionEvents['on'](_0xfb78d8,_0x2c6d62);}};
\ No newline at end of file
+var _0x3b32=['save','emit','removeListener','register','length','faxInteraction:'];(function(_0xbb737e,_0x31ad33){var _0x23c178=function(_0x320e75){while(--_0x320e75){_0xbb737e['push'](_0xbb737e['shift']());}};_0x23c178(++_0x31ad33);}(_0x3b32,0x168));var _0x23b3=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x3b32[_0x1203f];return _0x365f0a;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0x23b3('0x0'),'remove','update'];function createListener(_0x492a58,_0x303c3d){return function(_0x32ae51){_0x303c3d[_0x23b3('0x1')](_0x492a58,_0x32ae51);};}function removeListener(_0x4abc6f,_0x199e15){return function(){FaxInteractionEvents[_0x23b3('0x2')](_0x4abc6f,_0x199e15);};}exports[_0x23b3('0x3')]=function(_0x558267){for(var _0x5a96f3=0x0,_0xa91f7=events[_0x23b3('0x4')];_0x5a96f3<_0xa91f7;_0x5a96f3++){var _0x26cd93=events[_0x5a96f3];var _0x148fad=createListener(_0x23b3('0x5')+_0x26cd93,_0x558267);FaxInteractionEvents['on'](_0x26cd93,_0x148fad);}};
\ No newline at end of file
index 6d82fe8..a1eae42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x917d=['create','/:id/messages','addMessage','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/:id','show','getMessages','download','post'];(function(_0x49155d,_0x2bb881){var _0x4c5f0f=function(_0x290321){while(--_0x290321){_0x49155d['push'](_0x49155d['shift']());}};_0x4c5f0f(++_0x2bb881);}(_0x917d,0x1cd));var _0xd917=function(_0x5e89e2,_0x2dd5ac){_0x5e89e2=_0x5e89e2-0x0;var _0x1a96f2=_0x917d[_0x5e89e2];return _0x1a96f2;};'use strict';var multer=require(_0xd917('0x0'));var util=require(_0xd917('0x1'));var path=require(_0xd917('0x2'));var timeout=require(_0xd917('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd917('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd917('0x5'));var controller=require(_0xd917('0x6'));router[_0xd917('0x7')]('/',auth[_0xd917('0x8')](),controller[_0xd917('0x9')]);router[_0xd917('0x7')]('/describe',auth[_0xd917('0x8')](),controller['describe']);router['get'](_0xd917('0xa'),auth['isAuthenticated'](),controller[_0xd917('0xb')]);router['get']('/:id/messages',auth[_0xd917('0x8')](),controller[_0xd917('0xc')]);router[_0xd917('0x7')]('/:id/download',auth[_0xd917('0x8')](),controller[_0xd917('0xd')]);router[_0xd917('0xe')]('/',auth['isAuthenticated'](),controller[_0xd917('0xf')]);router[_0xd917('0xe')](_0xd917('0x10'),auth[_0xd917('0x8')](),controller[_0xd917('0x11')]);router['post'](_0xd917('0x12'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')](_0xd917('0x14'),'faxinteraction:addtags'),controller[_0xd917('0x15')]);router[_0xd917('0x16')](_0xd917('0xa'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')]('fax',_0xd917('0x17')),controller[_0xd917('0x18')]);router[_0xd917('0x19')](_0xd917('0xa'),auth[_0xd917('0x8')](),interaction[_0xd917('0x13')](_0xd917('0x14'),'faxinteraction:destroy'),controller[_0xd917('0x1a')]);router[_0xd917('0x19')](_0xd917('0x12'),auth[_0xd917('0x8')](),controller['removeTags']);module[_0xd917('0x1b')]=router;
\ No newline at end of file
+var _0xaa31=['download','post','addMessage','/:id/tags','faxinteraction:addtags','addTags','put','tracked','fax','faxinteraction:update','destroy','delete','exports','util','path','Router','../../components/auth/service','../../config/environment','./faxInteraction.controller','index','get','/describe','isAuthenticated','describe','/:id','/:id/messages','getMessages','/:id/download'];(function(_0xabd123,_0x4ab85a){var _0x10a7d8=function(_0x3e90ba){while(--_0x3e90ba){_0xabd123['push'](_0xabd123['shift']());}};_0x10a7d8(++_0x4ab85a);}(_0xaa31,0x125));var _0x1aa3=function(_0x17406a,_0x1e2320){_0x17406a=_0x17406a-0x0;var _0x1501ff=_0xaa31[_0x17406a];return _0x1501ff;};'use strict';var multer=require('multer');var util=require(_0x1aa3('0x0'));var path=require(_0x1aa3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1aa3('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x1aa3('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x1aa3('0x4'));var controller=require(_0x1aa3('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x1aa3('0x6')]);router[_0x1aa3('0x7')](_0x1aa3('0x8'),auth[_0x1aa3('0x9')](),controller[_0x1aa3('0xa')]);router[_0x1aa3('0x7')](_0x1aa3('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0x1aa3('0xc'),auth[_0x1aa3('0x9')](),controller[_0x1aa3('0xd')]);router[_0x1aa3('0x7')](_0x1aa3('0xe'),auth[_0x1aa3('0x9')](),controller[_0x1aa3('0xf')]);router[_0x1aa3('0x10')]('/',auth[_0x1aa3('0x9')](),controller['create']);router['post'](_0x1aa3('0xc'),auth[_0x1aa3('0x9')](),controller[_0x1aa3('0x11')]);router[_0x1aa3('0x10')](_0x1aa3('0x12'),auth[_0x1aa3('0x9')](),interaction['tracked']('fax',_0x1aa3('0x13')),controller[_0x1aa3('0x14')]);router[_0x1aa3('0x15')](_0x1aa3('0xb'),auth[_0x1aa3('0x9')](),interaction[_0x1aa3('0x16')](_0x1aa3('0x17'),_0x1aa3('0x18')),controller['update']);router['delete'](_0x1aa3('0xb'),auth[_0x1aa3('0x9')](),interaction[_0x1aa3('0x16')]('fax','faxinteraction:destroy'),controller[_0x1aa3('0x19')]);router[_0x1aa3('0x1a')](_0x1aa3('0x12'),auth[_0x1aa3('0x9')](),controller['removeTags']);module[_0x1aa3('0x1b')]=router;
\ No newline at end of file
index 2155206..6fc6208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb66c=['DATE','sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x1888c4,_0x188e77){var _0x565160=function(_0x3329e2){while(--_0x3329e2){_0x1888c4['push'](_0x1888c4['shift']());}};_0x565160(++_0x188e77);}(_0xb66c,0x175));var _0xcb66=function(_0x185b37,_0x2a41e4){_0x185b37=_0x185b37-0x0;var _0x578ccc=_0xb66c[_0x185b37];return _0x578ccc;};'use strict';var Sequelize=require(_0xcb66('0x0'));module['exports']={'body':{'type':Sequelize[_0xcb66('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xcb66('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcb66('0x3')]('in',_0xcb66('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0xcb66('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xcb66('0x5')]}};
\ No newline at end of file
+var _0x00bb=['TEXT','BOOLEAN','out','DATE','sequelize','exports'];(function(_0x2c2040,_0x417973){var _0x4b8f8f=function(_0x257b59){while(--_0x257b59){_0x2c2040['push'](_0x2c2040['shift']());}};_0x4b8f8f(++_0x417973);}(_0x00bb,0x1d8));var _0xb00b=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x00bb[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'body':{'type':Sequelize[_0xb00b('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xb00b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xb00b('0x4')),'defaultValue':_0xb00b('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0xb00b('0x5')]}};
\ No newline at end of file
index 6141bda..a9283b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ad=['FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','undefined','set','apply','reject','save','update','destroy','name','send','index','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','map','type','VIRTUAL','merge','options','FaxMessage','count','includeAll','findAll','rows','params','include','find','body','describe','fax-interactions','accept','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','SIP/%s','motionChannel','create','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','files','Attachment','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxMessage.socket','register','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x14a34a,_0x424129){var _0x4d921e=function(_0x1982be){while(--_0x1982be){_0x14a34a['push'](_0x14a34a['shift']());}};_0x4d921e(++_0x424129);}(_0x20ad,0x66));var _0xd20a=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x20ad[_0xdc37a1];return _0x99b4fe;};'use strict';var emlformat=require(_0xd20a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd20a('0x1'));var jsonpatch=require(_0xd20a('0x2'));var rp=require(_0xd20a('0x3'));var moment=require(_0xd20a('0x4'));var BPromise=require(_0xd20a('0x5'));var Mustache=require('mustache');var util=require(_0xd20a('0x6'));var path=require(_0xd20a('0x7'));var sox=require('sox');var csv=require(_0xd20a('0x8'));var ejs=require(_0xd20a('0x9'));var fs=require('fs');var fs_extra=require(_0xd20a('0xa'));var _=require(_0xd20a('0xb'));var squel=require(_0xd20a('0xc'));var crypto=require(_0xd20a('0xd'));var jsforce=require(_0xd20a('0xe'));var deskjs=require(_0xd20a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd20a('0x10'));var Papa=require(_0xd20a('0x11'));var Redis=require(_0xd20a('0x12'));var authService=require(_0xd20a('0x13'));var qs=require(_0xd20a('0x14'));var as=require(_0xd20a('0x15'));var hardwareService=require(_0xd20a('0x16'));var logger=require(_0xd20a('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xd20a('0x18'));var licenseUtil=require(_0xd20a('0x19'));var db=require(_0xd20a('0x1a'))['db'];config[_0xd20a('0x1b')]=_[_0xd20a('0x1c')](config['redis'],{'host':_0xd20a('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd20a('0x1b')]));require(_0xd20a('0x1e'))[_0xd20a('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xd20a('0x20')][_0xd20a('0x21')]({'port':0x232c});var client9002=jayson[_0xd20a('0x20')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b16db,_0x41c2cd,_0x2227b5,_0x3fa6a7){return new BPromise(function(_0x4c895d,_0x3031ae){var _0x19bb39=_0x3fa6a7||client;return _0x19bb39[_0xd20a('0x22')](_0x1b16db,_0x2227b5)[_0xd20a('0x23')](function(_0x14783b){logger[_0xd20a('0x24')](_0xd20a('0x25'),_0x41c2cd,_0xd20a('0x26'));logger[_0xd20a('0x27')](_0xd20a('0x28'),_0x41c2cd,_0xd20a('0x26'),JSON[_0xd20a('0x29')](_0x14783b));if(_0x14783b[_0xd20a('0x2a')]){if(_0x14783b[_0xd20a('0x2a')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x41c2cd,_0x14783b[_0xd20a('0x2a')]['message']);return _0x3031ae(_0x14783b[_0xd20a('0x2a')]['message']);}logger[_0xd20a('0x2a')](_0xd20a('0x25'),_0x41c2cd,_0x14783b[_0xd20a('0x2a')][_0xd20a('0x2b')]);return _0x4c895d(_0x14783b[_0xd20a('0x2a')]['message']);}else{logger[_0xd20a('0x24')]('FaxMessage,\x20%s,\x20%s',_0x41c2cd,_0xd20a('0x26'));_0x4c895d(_0x14783b[_0xd20a('0x2c')][_0xd20a('0x2b')]);}})[_0xd20a('0x2d')](function(_0x44063e){logger[_0xd20a('0x2a')](_0xd20a('0x25'),_0x41c2cd,_0x44063e);_0x3031ae(_0x44063e);});});}function respondWithStatusCode(_0x3efda9,_0x2b44dc){_0x2b44dc=_0x2b44dc||0xcc;return function(_0x79564b){if(_0x79564b){return _0x3efda9['sendStatus'](_0x2b44dc);}return _0x3efda9[_0xd20a('0x2e')](_0x2b44dc)[_0xd20a('0x2f')]();};}function respondWithResult(_0xf0673f,_0x151c99){_0x151c99=_0x151c99||0xc8;return function(_0xf1cc72){if(_0xf1cc72){return _0xf0673f[_0xd20a('0x2e')](_0x151c99)[_0xd20a('0x30')](_0xf1cc72);}};}function respondWithFilteredResult(_0x1bcd6a,_0x52da7e){return function(_0x190dce){if(_0x190dce){var _0x44b627=typeof _0x52da7e[_0xd20a('0x31')]===_0xd20a('0x32')&&typeof _0x52da7e['limit']==='undefined';var _0x3bc21c=_0x190dce['count'];var _0x541f97=_0x44b627?0x0:_0x52da7e[_0xd20a('0x31')];var _0x56b8d9=_0x44b627?_0x190dce['count']:_0x52da7e[_0xd20a('0x31')]+_0x52da7e['limit'];var _0x540173;if(_0x56b8d9>=_0x3bc21c){_0x56b8d9=_0x3bc21c;_0x540173=0xc8;}else{_0x540173=0xce;}_0x1bcd6a[_0xd20a('0x2e')](_0x540173);return _0x1bcd6a[_0xd20a('0x33')]('Content-Range',_0x541f97+'-'+_0x56b8d9+'/'+_0x3bc21c)[_0xd20a('0x30')](_0x190dce);}return null;};}function patchUpdates(_0x397593){return function(_0xfd9be7){try{jsonpatch[_0xd20a('0x34')](_0xfd9be7,_0x397593,!![]);}catch(_0x4e7381){return BPromise[_0xd20a('0x35')](_0x4e7381);}return _0xfd9be7[_0xd20a('0x36')]();};}function saveUpdates(_0x447509,_0x30021f){return function(_0x14494){if(_0x14494){return _0x14494[_0xd20a('0x37')](_0x447509)[_0xd20a('0x23')](function(_0x17f067){return _0x17f067;});}return null;};}function removeEntity(_0x4fcae4,_0x5cb4d9){return function(_0x2a0a0a){if(_0x2a0a0a){return _0x2a0a0a[_0xd20a('0x38')]()['then'](function(){_0x4fcae4[_0xd20a('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18211d,_0x32bfa3){return function(_0x2aab01){if(!_0x2aab01){_0x18211d['sendStatus'](0x194);}return _0x2aab01;};}function handleError(_0x5ba24e,_0x2526ef){_0x2526ef=_0x2526ef||0x1f4;return function(_0xd629bc){logger['error'](_0xd629bc['stack']);if(_0xd629bc[_0xd20a('0x39')]){delete _0xd629bc[_0xd20a('0x39')];}_0x5ba24e[_0xd20a('0x2e')](_0x2526ef)[_0xd20a('0x3a')](_0xd629bc);};}exports[_0xd20a('0x3b')]=function(_0x4cb27b,_0x554265){var _0x3fe6d3={},_0x2365c9={},_0x4eee39={'count':0x0,'rows':[]};var _0x49600a=_['map'](db['FaxMessage'][_0xd20a('0x3c')],function(_0x1043db){return{'name':_0x1043db['fieldName'],'type':_0x1043db['type']['key']};});_0x2365c9[_0xd20a('0x3d')]=_['map'](_0x49600a,'name');_0x2365c9[_0xd20a('0x3e')]=_[_0xd20a('0x3f')](_0x4cb27b['query']);_0x2365c9[_0xd20a('0x40')]=_[_0xd20a('0x41')](_0x2365c9[_0xd20a('0x3d')],_0x2365c9[_0xd20a('0x3e')]);_0x3fe6d3[_0xd20a('0x42')]=_[_0xd20a('0x41')](_0x2365c9[_0xd20a('0x3d')],qs[_0xd20a('0x43')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x43')]));_0x3fe6d3[_0xd20a('0x42')]=_0x3fe6d3[_0xd20a('0x42')][_0xd20a('0x44')]?_0x3fe6d3[_0xd20a('0x42')]:_0x2365c9[_0xd20a('0x3d')];if(!_0x4cb27b[_0xd20a('0x3e')]['hasOwnProperty'](_0xd20a('0x45'))){_0x3fe6d3[_0xd20a('0x46')]=qs[_0xd20a('0x46')](_0x4cb27b['query'][_0xd20a('0x46')]);_0x3fe6d3[_0xd20a('0x31')]=qs[_0xd20a('0x31')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x31')]);}_0x3fe6d3[_0xd20a('0x47')]=qs[_0xd20a('0x48')](_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x48')]);_0x3fe6d3[_0xd20a('0x49')]=qs['filters'](_[_0xd20a('0x4a')](_0x4cb27b['query'],_0x2365c9[_0xd20a('0x40')]),_0x49600a);if(_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x4b')]){_0x3fe6d3[_0xd20a('0x49')]=_['merge'](_0x3fe6d3['where'],{'$or':_[_0xd20a('0x4c')](_0x49600a,function(_0xe55bad){if(_0xe55bad[_0xd20a('0x4d')]!==_0xd20a('0x4e')){var _0x12a724={};_0x12a724[_0xe55bad['name']]={'$like':'%'+_0x4cb27b[_0xd20a('0x3e')]['filter']+'%'};return _0x12a724;}})});}_0x3fe6d3=_[_0xd20a('0x4f')]({},_0x3fe6d3,_0x4cb27b[_0xd20a('0x50')]);var _0x59830e={'where':_0x3fe6d3['where']};return db[_0xd20a('0x51')][_0xd20a('0x52')](_0x59830e)['then'](function(_0x32be52){_0x4eee39[_0xd20a('0x52')]=_0x32be52;if(_0x4cb27b[_0xd20a('0x3e')][_0xd20a('0x53')]){_0x3fe6d3['include']=[{'all':!![]}];}return db['FaxMessage'][_0xd20a('0x54')](_0x3fe6d3);})[_0xd20a('0x23')](function(_0x4e8709){_0x4eee39[_0xd20a('0x55')]=_0x4e8709;return _0x4eee39;})[_0xd20a('0x23')](respondWithFilteredResult(_0x554265,_0x3fe6d3))[_0xd20a('0x2d')](handleError(_0x554265,null));};exports['show']=function(_0x17e3c9,_0x4fe498){var _0x58fade={'raw':!![],'where':{'id':_0x17e3c9[_0xd20a('0x56')]['id']}},_0x1abdd5={};_0x1abdd5[_0xd20a('0x3d')]=_[_0xd20a('0x3f')](db[_0xd20a('0x51')][_0xd20a('0x3c')]);_0x1abdd5[_0xd20a('0x3e')]=_['keys'](_0x17e3c9[_0xd20a('0x3e')]);_0x1abdd5[_0xd20a('0x40')]=_['intersection'](_0x1abdd5[_0xd20a('0x3d')],_0x1abdd5[_0xd20a('0x3e')]);_0x58fade[_0xd20a('0x42')]=_[_0xd20a('0x41')](_0x1abdd5['model'],qs[_0xd20a('0x43')](_0x17e3c9[_0xd20a('0x3e')][_0xd20a('0x43')]));_0x58fade['attributes']=_0x58fade['attributes'][_0xd20a('0x44')]?_0x58fade['attributes']:_0x1abdd5[_0xd20a('0x3d')];if(_0x17e3c9[_0xd20a('0x3e')][_0xd20a('0x53')]){_0x58fade[_0xd20a('0x57')]=[{'all':!![]}];}_0x58fade=_[_0xd20a('0x4f')]({},_0x58fade,_0x17e3c9[_0xd20a('0x50')]);return db[_0xd20a('0x51')][_0xd20a('0x58')](_0x58fade)[_0xd20a('0x23')](handleEntityNotFound(_0x4fe498,null))['then'](respondWithResult(_0x4fe498,null))[_0xd20a('0x2d')](handleError(_0x4fe498,null));};exports[_0xd20a('0x37')]=function(_0x278f87,_0x56d4e8){if(_0x278f87[_0xd20a('0x59')]['id']){delete _0x278f87[_0xd20a('0x59')]['id'];}return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x278f87['params']['id']}})[_0xd20a('0x23')](handleEntityNotFound(_0x56d4e8,null))[_0xd20a('0x23')](saveUpdates(_0x278f87[_0xd20a('0x59')],null))[_0xd20a('0x23')](respondWithResult(_0x56d4e8,null))[_0xd20a('0x2d')](handleError(_0x56d4e8,null));};exports[_0xd20a('0x38')]=function(_0x2148d7,_0x3be280){return db['FaxMessage'][_0xd20a('0x58')]({'where':{'id':_0x2148d7[_0xd20a('0x56')]['id']}})[_0xd20a('0x23')](handleEntityNotFound(_0x3be280,null))[_0xd20a('0x23')](removeEntity(_0x3be280,null))[_0xd20a('0x2d')](handleError(_0x3be280,null));};exports['describe']=function(_0x2d2dd5,_0x2d1f72){return db[_0xd20a('0x51')][_0xd20a('0x5a')]()[_0xd20a('0x23')](respondWithResult(_0x2d1f72,null))[_0xd20a('0x2d')](handleError(_0x2d1f72,null));};var interaction_log=require(_0xd20a('0x17'))(_0xd20a('0x5b'));exports[_0xd20a('0x5c')]=function(_0x1e392b,_0x1a8366,_0x422b63){var _0x12076b={'agent':{},'channel':_0xd20a('0x5d')};if(_0x1e392b[_0xd20a('0x59')]['id']){delete _0x1e392b[_0xd20a('0x59')]['id'];}_0x1e392b[_0xd20a('0x59')]['read']=!![];_0x1e392b['body'][_0xd20a('0x5e')]=moment()[_0xd20a('0x5f')](_0xd20a('0x60'));_0x1e392b['body'][_0xd20a('0x61')]=_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')]||_0x1e392b[_0xd20a('0x62')]['id'];_0x12076b[_0xd20a('0x63')]['id']=_0x1e392b['body'][_0xd20a('0x61')];return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x1e392b[_0xd20a('0x56')]['id'],'UserId':null}})[_0xd20a('0x23')](handleEntityNotFound(_0x1a8366,null))[_0xd20a('0x23')](saveUpdates(_0x1e392b[_0xd20a('0x59')],null))[_0xd20a('0x23')](function(_0x154327){if(_0x154327){_0x12076b[_0xd20a('0x2b')]=_0x154327[_0xd20a('0x64')]({'plain':!![]});return db[_0xd20a('0x65')][_0xd20a('0x58')]({'where':{'id':_0x154327[_0xd20a('0x66')]}});}return null;})[_0xd20a('0x23')](handleEntityNotFound(_0x1a8366,null))['then'](function(_0x1b4b00){if(_0x1b4b00){return _0x1b4b00['update']({'UserId':_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')],'read1stAt':_[_0xd20a('0x67')](_0x1b4b00[_0xd20a('0x68')])?moment()[_0xd20a('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x57d38c){if(_0x57d38c){_0x12076b[_0xd20a('0x69')]=_0x57d38c[_0xd20a('0x64')]({'plain':!![]});interaction_log[_0xd20a('0x24')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1e392b[_0xd20a('0x62')]['id'],_0x1e392b['user'][_0xd20a('0x39')],_0x1e392b['user'][_0xd20a('0x6a')],_0x12076b[_0xd20a('0x69')]['id'],_0x1e392b[_0xd20a('0x59')]?JSON[_0xd20a('0x29')](_0x1e392b[_0xd20a('0x59')]):_0xd20a('0x6b'));return respondWithRpcPromise(_0xd20a('0x6c'),_0xd20a('0x6d'),_0x12076b);}return null;})['then'](function(_0x592a7a){var _0x331267=_0xd20a('0x6e')+_0x592a7a[_0xd20a('0x2b')][_0xd20a('0x6f')];return db['sequelize'][_0xd20a('0x3e')](_0x331267,{'type':db['Sequelize'][_0xd20a('0x70')][_0xd20a('0x71')],'raw':!![]})[_0xd20a('0x23')](function(_0xf6eaf1){return _0xf6eaf1;});})[_0xd20a('0x23')](function(_0x5e3f6b){if(_0x5e3f6b){_0x12076b[_0xd20a('0x2b')][_0xd20a('0x72')]=_0x5e3f6b[0x0];if(!_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')])return;return db[_0xd20a('0x73')][_0xd20a('0x58')]({'where':{'id':_0x1e392b[_0xd20a('0x59')][_0xd20a('0x61')],'role':_0xd20a('0x63')},'attributes':['id','name',_0xd20a('0x74'),_0xd20a('0x75'),_0xd20a('0x76')],'raw':!![]});}return null;})[_0xd20a('0x23')](function(_0xc79c79){if(!_0xc79c79)return null;_0x12076b[_0xd20a('0x2b')][_0xd20a('0x63')]=_0xc79c79;return _0x12076b;})[_0xd20a('0x23')](function(_0x38b8ed){if(_0x38b8ed){if(_0x1e392b[_0xd20a('0x59')][_0xd20a('0x77')]){_0x12076b[_0xd20a('0x2b')][_0xd20a('0x78')]=util[_0xd20a('0x5f')]('SIP/%s',_0x1e392b[_0xd20a('0x62')][_0xd20a('0x39')]);_0x12076b[_0xd20a('0x2b')]['channel']=_0x12076b[_0xd20a('0x79')];_0x12076b[_0xd20a('0x2b')]['motionChannel']=_0x12076b[_0xd20a('0x79')];_0x12076b[_0xd20a('0x2b')][_0xd20a('0x7a')]=_0xd20a('0x5c');return respondWithRpcPromise('EventManager',_0xd20a('0x7b'),{'event':'acceptmessage','message':_0x12076b[_0xd20a('0x2b')]},client9002)['then'](function(){return _0x12076b;});}return _0x12076b;}return null;})[_0xd20a('0x23')](respondWithResult(_0x1a8366,null))[_0xd20a('0x2d')](handleError(_0x1a8366,null));};var interaction_log=require('../../config/logger')(_0xd20a('0x5b'));exports[_0xd20a('0x35')]=function(_0x5e8016,_0x2ec413,_0x42c79f){var _0x4afe03={'agent':{},'channel':'fax'};if(_0x5e8016[_0xd20a('0x59')]['id']){delete _0x5e8016['body']['id'];}_0x5e8016[_0xd20a('0x59')]['UserId']=_0x5e8016['body']['UserId']||_0x5e8016[_0xd20a('0x62')]['id'];_0x4afe03[_0xd20a('0x63')]['id']=_0x5e8016['body'][_0xd20a('0x61')];return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x5e8016[_0xd20a('0x56')]['id'],'UserId':null}})[_0xd20a('0x23')](handleEntityNotFound(_0x2ec413,null))[_0xd20a('0x23')](function(_0x1d949b){if(_0x1d949b){_0x4afe03['message']=_0x1d949b[_0xd20a('0x64')]({'plain':!![]});return db[_0xd20a('0x65')][_0xd20a('0x58')]({'where':{'id':_0x1d949b[_0xd20a('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x2ec413,null))[_0xd20a('0x23')](function(_0x4403bc){if(_0x4403bc){_0x4afe03[_0xd20a('0x69')]=_0x4403bc['get']({'plain':!![]});interaction_log[_0xd20a('0x24')](_0xd20a('0x7c'),_0x5e8016[_0xd20a('0x62')]['id'],_0x5e8016[_0xd20a('0x62')]['name'],_0x5e8016[_0xd20a('0x62')][_0xd20a('0x6a')],_0x4afe03[_0xd20a('0x69')]['id'],_0x5e8016[_0xd20a('0x59')]?JSON[_0xd20a('0x29')](_0x5e8016[_0xd20a('0x59')]):_0xd20a('0x6b'));return respondWithRpcPromise('RejectMessage',_0xd20a('0x7d'),_0x4afe03);}return null;})[_0xd20a('0x23')](function(_0x4dddef){var _0x5b6ab4='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4dddef[_0xd20a('0x2b')][_0xd20a('0x6f')];return db['sequelize'][_0xd20a('0x3e')](_0x5b6ab4,{'type':db[_0xd20a('0x7e')][_0xd20a('0x70')]['SELECT'],'raw':!![]})['then'](function(_0x4e1b50){return _0x4e1b50;});})[_0xd20a('0x23')](function(_0x371eb0){if(_0x371eb0){_0x4afe03[_0xd20a('0x2b')]['contact']=_0x371eb0[0x0];if(!_0x5e8016[_0xd20a('0x59')]['UserId'])return;return db['User'][_0xd20a('0x58')]({'where':{'id':_0x5e8016[_0xd20a('0x59')][_0xd20a('0x61')],'role':'agent'},'attributes':['id',_0xd20a('0x39'),_0xd20a('0x74'),_0xd20a('0x75'),_0xd20a('0x76')],'raw':!![]});}return null;})[_0xd20a('0x23')](function(_0x12f291){if(!_0x12f291)return null;_0x4afe03['message']['agent']=_0x12f291;return _0x4afe03;})[_0xd20a('0x23')](function(_0x11210a){if(_0x11210a){_0x11210a[_0xd20a('0x2b')][_0xd20a('0x78')]=util[_0xd20a('0x5f')](_0xd20a('0x7f'),_0x5e8016[_0xd20a('0x62')][_0xd20a('0x39')]);_0x11210a[_0xd20a('0x2b')][_0xd20a('0x79')]=_0x4afe03[_0xd20a('0x79')];_0x11210a['message'][_0xd20a('0x80')]=_0x4afe03[_0xd20a('0x79')];_0x11210a['message'][_0xd20a('0x7a')]='reject';respondWithRpcPromise(_0xd20a('0x7b'),'EventManager',{'event':'rejectmessage','message':_0x11210a[_0xd20a('0x2b')]},client9002);return _0x4afe03;}return null;})['then'](respondWithResult(_0x2ec413,null))[_0xd20a('0x2d')](handleError(_0x2ec413,null));};exports[_0xd20a('0x81')]=function(_0xa7c4ce,_0x4aebf3){var _0x46e19b;return db[_0xd20a('0x51')]['create'](_0xa7c4ce[_0xd20a('0x59')],{})[_0xd20a('0x23')](function(_0x342c05){_0x46e19b=_0x342c05;return db[_0xd20a('0x82')][_0xd20a('0x83')]({'where':{'id':_0x46e19b['ContactId']}});})[_0xd20a('0x23')](function(_0x4de117){if(_[_0xd20a('0x67')](_0x4de117)){return;}else{_0x46e19b[_0xd20a('0x5d')]=_0x4de117['fax'];return db['Attachment']['findOne']({'where':{'id':_0x46e19b[_0xd20a('0x84')]}});}})['then'](function(_0x33a22f){return respondWithRpcPromise(_0xd20a('0x85'),_0xd20a('0x85'),{'FaxAccountId':_['isNil'](_0xa7c4ce[_0xd20a('0x59')])?undefined:_0xa7c4ce[_0xd20a('0x59')][_0xd20a('0x86')],'path':_[_0xd20a('0x67')](_0x33a22f)?undefined:util[_0xd20a('0x5f')](_0xd20a('0x87'),_0x33a22f[_0xd20a('0x88')]),'fax':_['isNil'](_0x46e19b['fax'])?undefined:_0x46e19b[_0xd20a('0x5d')],'AttachmentId':_0x46e19b[_0xd20a('0x84')]},client9002);})[_0xd20a('0x23')](respondWithResult(_0x4aebf3,0xc9))[_0xd20a('0x2d')](handleError(_0x4aebf3,null));};exports[_0xd20a('0x89')]=function(_0x5a85a9,_0x1cab98){var _0x5b4379=path[_0xd20a('0x8a')](config[_0xd20a('0x8b')],'server',_0xd20a('0x8c'),'attachments');return db[_0xd20a('0x51')][_0xd20a('0x58')]({'where':{'id':_0x5a85a9['params']['id']},'include':[{'model':db[_0xd20a('0x8d')],'as':_0xd20a('0x8d')}]})[_0xd20a('0x23')](handleEntityNotFound(_0x1cab98,null))['then'](function(_0x41e788){if(_0x41e788){return _0x1cab98[_0xd20a('0x89')](path['join'](_0x5b4379,_0x41e788[_0xd20a('0x8d')][_0xd20a('0x88')]));}})['catch'](handleError(_0x1cab98,null));};
\ No newline at end of file
+var _0xfbc9=['Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','attachments','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','destroy','stack','name','send','map','FaxMessage','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','body','find','params','../../config/logger','accept','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','email','internal','manual','format','SIP/%s','channel','EventManager','FaxInteraction','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','fullname','interface','motionChannel','create','CmContact','findOne'];(function(_0x3b150c,_0x2f93f8){var _0x5cd414=function(_0x26305e){while(--_0x26305e){_0x3b150c['push'](_0x3b150c['shift']());}};_0x5cd414(++_0x2f93f8);}(_0xfbc9,0x12f));var _0x9fbc=function(_0x1a345c,_0x4f0aa0){_0x1a345c=_0x1a345c-0x0;var _0x1f4af5=_0xfbc9[_0x1a345c];return _0x1f4af5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9fbc('0x0'));var jsonpatch=require(_0x9fbc('0x1'));var rp=require(_0x9fbc('0x2'));var moment=require(_0x9fbc('0x3'));var BPromise=require(_0x9fbc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9fbc('0x5'));var sox=require(_0x9fbc('0x6'));var csv=require(_0x9fbc('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9fbc('0x8'));var _=require(_0x9fbc('0x9'));var squel=require(_0x9fbc('0xa'));var crypto=require(_0x9fbc('0xb'));var jsforce=require(_0x9fbc('0xc'));var deskjs=require(_0x9fbc('0xd'));var toCsv=require(_0x9fbc('0x7'));var querystring=require(_0x9fbc('0xe'));var Papa=require(_0x9fbc('0xf'));var Redis=require(_0x9fbc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9fbc('0x11'));var as=require(_0x9fbc('0x12'));var hardwareService=require(_0x9fbc('0x13'));var logger=require('../../config/logger')(_0x9fbc('0x14'));var utils=require(_0x9fbc('0x15'));var config=require(_0x9fbc('0x16'));var licenseUtil=require(_0x9fbc('0x17'));var db=require(_0x9fbc('0x18'))['db'];config[_0x9fbc('0x19')]=_[_0x9fbc('0x1a')](config[_0x9fbc('0x19')],{'host':_0x9fbc('0x1b'),'port':0x18eb});var socket=require(_0x9fbc('0x1c'))(new Redis(config['redis']));require(_0x9fbc('0x1d'))[_0x9fbc('0x1e')](socket);var jayson=require(_0x9fbc('0x1f'));var client=jayson[_0x9fbc('0x20')][_0x9fbc('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x9fbc('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x5968f1,_0x306208,_0x3ecd52,_0x23c276){return new BPromise(function(_0x55d22b,_0x2c3594){var _0x5d01fa=_0x23c276||client;return _0x5d01fa[_0x9fbc('0x22')](_0x5968f1,_0x3ecd52)[_0x9fbc('0x23')](function(_0x2f6d82){logger[_0x9fbc('0x24')](_0x9fbc('0x25'),_0x306208,_0x9fbc('0x26'));logger[_0x9fbc('0x27')](_0x9fbc('0x28'),_0x306208,_0x9fbc('0x26'),JSON[_0x9fbc('0x29')](_0x2f6d82));if(_0x2f6d82[_0x9fbc('0x2a')]){if(_0x2f6d82[_0x9fbc('0x2a')][_0x9fbc('0x2b')]===0x1f4){logger[_0x9fbc('0x2a')](_0x9fbc('0x25'),_0x306208,_0x2f6d82[_0x9fbc('0x2a')][_0x9fbc('0x2c')]);return _0x2c3594(_0x2f6d82[_0x9fbc('0x2a')][_0x9fbc('0x2c')]);}logger[_0x9fbc('0x2a')](_0x9fbc('0x25'),_0x306208,_0x2f6d82[_0x9fbc('0x2a')][_0x9fbc('0x2c')]);return _0x55d22b(_0x2f6d82['error'][_0x9fbc('0x2c')]);}else{logger[_0x9fbc('0x24')](_0x9fbc('0x25'),_0x306208,_0x9fbc('0x26'));_0x55d22b(_0x2f6d82[_0x9fbc('0x2d')][_0x9fbc('0x2c')]);}})[_0x9fbc('0x2e')](function(_0x44aabb){logger[_0x9fbc('0x2a')](_0x9fbc('0x25'),_0x306208,_0x44aabb);_0x2c3594(_0x44aabb);});});}function respondWithStatusCode(_0x311b77,_0xb3f2f9){_0xb3f2f9=_0xb3f2f9||0xcc;return function(_0x5a19a1){if(_0x5a19a1){return _0x311b77['sendStatus'](_0xb3f2f9);}return _0x311b77[_0x9fbc('0x2f')](_0xb3f2f9)['end']();};}function respondWithResult(_0x5ed280,_0x149405){_0x149405=_0x149405||0xc8;return function(_0x24b9a4){if(_0x24b9a4){return _0x5ed280[_0x9fbc('0x2f')](_0x149405)['json'](_0x24b9a4);}};}function respondWithFilteredResult(_0x55da97,_0x4397f0){return function(_0x5713f6){if(_0x5713f6){var _0x4b2fb2=typeof _0x4397f0['offset']===_0x9fbc('0x30')&&typeof _0x4397f0[_0x9fbc('0x31')]===_0x9fbc('0x30');var _0x2b8d76=_0x5713f6[_0x9fbc('0x32')];var _0x30da30=_0x4b2fb2?0x0:_0x4397f0[_0x9fbc('0x33')];var _0x2a7a22=_0x4b2fb2?_0x5713f6['count']:_0x4397f0[_0x9fbc('0x33')]+_0x4397f0[_0x9fbc('0x31')];var _0x1c902f;if(_0x2a7a22>=_0x2b8d76){_0x2a7a22=_0x2b8d76;_0x1c902f=0xc8;}else{_0x1c902f=0xce;}_0x55da97['status'](_0x1c902f);return _0x55da97[_0x9fbc('0x34')](_0x9fbc('0x35'),_0x30da30+'-'+_0x2a7a22+'/'+_0x2b8d76)[_0x9fbc('0x36')](_0x5713f6);}return null;};}function patchUpdates(_0x346375){return function(_0x54f587){try{jsonpatch[_0x9fbc('0x37')](_0x54f587,_0x346375,!![]);}catch(_0xfd3cd2){return BPromise[_0x9fbc('0x38')](_0xfd3cd2);}return _0x54f587['save']();};}function saveUpdates(_0x51c86d,_0x40cd46){return function(_0x139fc5){if(_0x139fc5){return _0x139fc5['update'](_0x51c86d)[_0x9fbc('0x23')](function(_0x1fd49d){return _0x1fd49d;});}return null;};}function removeEntity(_0x26283b,_0x16e24c){return function(_0x3c4c50){if(_0x3c4c50){return _0x3c4c50[_0x9fbc('0x39')]()['then'](function(){_0x26283b[_0x9fbc('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48081c,_0x5ce025){return function(_0x82ebfe){if(!_0x82ebfe){_0x48081c['sendStatus'](0x194);}return _0x82ebfe;};}function handleError(_0x28557a,_0x1da1b1){_0x1da1b1=_0x1da1b1||0x1f4;return function(_0x50f3de){logger[_0x9fbc('0x2a')](_0x50f3de[_0x9fbc('0x3a')]);if(_0x50f3de[_0x9fbc('0x3b')]){delete _0x50f3de[_0x9fbc('0x3b')];}_0x28557a['status'](_0x1da1b1)[_0x9fbc('0x3c')](_0x50f3de);};}exports['index']=function(_0x31f40a,_0x5806e5){var _0x51ec1c={},_0x3f8d9c={},_0x382564={'count':0x0,'rows':[]};var _0x43a774=_[_0x9fbc('0x3d')](db[_0x9fbc('0x3e')]['rawAttributes'],function(_0xcbdae8){return{'name':_0xcbdae8[_0x9fbc('0x3f')],'type':_0xcbdae8[_0x9fbc('0x40')][_0x9fbc('0x41')]};});_0x3f8d9c[_0x9fbc('0x42')]=_[_0x9fbc('0x3d')](_0x43a774,'name');_0x3f8d9c[_0x9fbc('0x43')]=_['keys'](_0x31f40a[_0x9fbc('0x43')]);_0x3f8d9c[_0x9fbc('0x44')]=_[_0x9fbc('0x45')](_0x3f8d9c['model'],_0x3f8d9c[_0x9fbc('0x43')]);_0x51ec1c[_0x9fbc('0x46')]=_[_0x9fbc('0x45')](_0x3f8d9c[_0x9fbc('0x42')],qs['fields'](_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x47')]));_0x51ec1c[_0x9fbc('0x46')]=_0x51ec1c[_0x9fbc('0x46')][_0x9fbc('0x48')]?_0x51ec1c[_0x9fbc('0x46')]:_0x3f8d9c['model'];if(!_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x49')](_0x9fbc('0x4a'))){_0x51ec1c['limit']=qs[_0x9fbc('0x31')](_0x31f40a['query'][_0x9fbc('0x31')]);_0x51ec1c['offset']=qs[_0x9fbc('0x33')](_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x33')]);}_0x51ec1c[_0x9fbc('0x4b')]=qs[_0x9fbc('0x4c')](_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x4c')]);_0x51ec1c[_0x9fbc('0x4d')]=qs[_0x9fbc('0x44')](_['pick'](_0x31f40a['query'],_0x3f8d9c[_0x9fbc('0x44')]),_0x43a774);if(_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x4e')]){_0x51ec1c[_0x9fbc('0x4d')]=_[_0x9fbc('0x4f')](_0x51ec1c[_0x9fbc('0x4d')],{'$or':_['map'](_0x43a774,function(_0x56531d){if(_0x56531d['type']!==_0x9fbc('0x50')){var _0x37cd68={};_0x37cd68[_0x56531d[_0x9fbc('0x3b')]]={'$like':'%'+_0x31f40a[_0x9fbc('0x43')][_0x9fbc('0x4e')]+'%'};return _0x37cd68;}})});}_0x51ec1c=_[_0x9fbc('0x4f')]({},_0x51ec1c,_0x31f40a[_0x9fbc('0x51')]);var _0x1fa78a={'where':_0x51ec1c[_0x9fbc('0x4d')]};return db[_0x9fbc('0x3e')][_0x9fbc('0x32')](_0x1fa78a)[_0x9fbc('0x23')](function(_0x3f3e44){_0x382564['count']=_0x3f3e44;if(_0x31f40a['query'][_0x9fbc('0x52')]){_0x51ec1c[_0x9fbc('0x53')]=[{'all':!![]}];}return db['FaxMessage'][_0x9fbc('0x54')](_0x51ec1c);})[_0x9fbc('0x23')](function(_0x164098){_0x382564[_0x9fbc('0x55')]=_0x164098;return _0x382564;})[_0x9fbc('0x23')](respondWithFilteredResult(_0x5806e5,_0x51ec1c))[_0x9fbc('0x2e')](handleError(_0x5806e5,null));};exports[_0x9fbc('0x56')]=function(_0x2cc137,_0x523e66){var _0x19ffc5={'raw':!![],'where':{'id':_0x2cc137['params']['id']}},_0x43c59c={};_0x43c59c[_0x9fbc('0x42')]=_[_0x9fbc('0x57')](db[_0x9fbc('0x3e')]['rawAttributes']);_0x43c59c[_0x9fbc('0x43')]=_[_0x9fbc('0x57')](_0x2cc137[_0x9fbc('0x43')]);_0x43c59c[_0x9fbc('0x44')]=_[_0x9fbc('0x45')](_0x43c59c[_0x9fbc('0x42')],_0x43c59c[_0x9fbc('0x43')]);_0x19ffc5['attributes']=_[_0x9fbc('0x45')](_0x43c59c[_0x9fbc('0x42')],qs[_0x9fbc('0x47')](_0x2cc137[_0x9fbc('0x43')]['fields']));_0x19ffc5[_0x9fbc('0x46')]=_0x19ffc5[_0x9fbc('0x46')]['length']?_0x19ffc5['attributes']:_0x43c59c['model'];if(_0x2cc137['query'][_0x9fbc('0x52')]){_0x19ffc5[_0x9fbc('0x53')]=[{'all':!![]}];}_0x19ffc5=_['merge']({},_0x19ffc5,_0x2cc137['options']);return db['FaxMessage']['find'](_0x19ffc5)['then'](handleEntityNotFound(_0x523e66,null))[_0x9fbc('0x23')](respondWithResult(_0x523e66,null))[_0x9fbc('0x2e')](handleError(_0x523e66,null));};exports['update']=function(_0x526b9e,_0x232e33){if(_0x526b9e[_0x9fbc('0x58')]['id']){delete _0x526b9e[_0x9fbc('0x58')]['id'];}return db[_0x9fbc('0x3e')][_0x9fbc('0x59')]({'where':{'id':_0x526b9e[_0x9fbc('0x5a')]['id']}})[_0x9fbc('0x23')](handleEntityNotFound(_0x232e33,null))[_0x9fbc('0x23')](saveUpdates(_0x526b9e[_0x9fbc('0x58')],null))[_0x9fbc('0x23')](respondWithResult(_0x232e33,null))[_0x9fbc('0x2e')](handleError(_0x232e33,null));};exports['destroy']=function(_0x599117,_0x3196bf){return db[_0x9fbc('0x3e')][_0x9fbc('0x59')]({'where':{'id':_0x599117[_0x9fbc('0x5a')]['id']}})[_0x9fbc('0x23')](handleEntityNotFound(_0x3196bf,null))['then'](removeEntity(_0x3196bf,null))['catch'](handleError(_0x3196bf,null));};exports['describe']=function(_0x5bbfc6,_0x32ee15){return db[_0x9fbc('0x3e')]['describe']()[_0x9fbc('0x23')](respondWithResult(_0x32ee15,null))[_0x9fbc('0x2e')](handleError(_0x32ee15,null));};var interaction_log=require(_0x9fbc('0x5b'))('fax-interactions');exports[_0x9fbc('0x5c')]=function(_0x5b2d57,_0x146bc5,_0x369cc2){var _0x6e4aef={'agent':{},'channel':_0x9fbc('0x5d')};if(_0x5b2d57[_0x9fbc('0x58')]['id']){delete _0x5b2d57['body']['id'];}_0x5b2d57['body'][_0x9fbc('0x5e')]=!![];_0x5b2d57[_0x9fbc('0x58')][_0x9fbc('0x5f')]=moment()['format'](_0x9fbc('0x60'));_0x5b2d57['body'][_0x9fbc('0x61')]=_0x5b2d57[_0x9fbc('0x58')][_0x9fbc('0x61')]||_0x5b2d57[_0x9fbc('0x62')]['id'];_0x6e4aef['agent']['id']=_0x5b2d57[_0x9fbc('0x58')]['UserId'];return db[_0x9fbc('0x3e')][_0x9fbc('0x59')]({'where':{'id':_0x5b2d57[_0x9fbc('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x146bc5,null))[_0x9fbc('0x23')](saveUpdates(_0x5b2d57[_0x9fbc('0x58')],null))[_0x9fbc('0x23')](function(_0x21fbb4){if(_0x21fbb4){_0x6e4aef['message']=_0x21fbb4[_0x9fbc('0x63')]({'plain':!![]});return db['FaxInteraction'][_0x9fbc('0x59')]({'where':{'id':_0x21fbb4['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x146bc5,null))[_0x9fbc('0x23')](function(_0x535793){if(_0x535793){return _0x535793['update']({'UserId':_0x5b2d57[_0x9fbc('0x58')][_0x9fbc('0x61')],'read1stAt':_[_0x9fbc('0x64')](_0x535793[_0x9fbc('0x65')])?moment()['format'](_0x9fbc('0x60')):undefined});}return null;})[_0x9fbc('0x23')](function(_0x31028b){if(_0x31028b){_0x6e4aef[_0x9fbc('0x66')]=_0x31028b[_0x9fbc('0x63')]({'plain':!![]});interaction_log['info'](_0x9fbc('0x67'),_0x5b2d57[_0x9fbc('0x62')]['id'],_0x5b2d57[_0x9fbc('0x62')][_0x9fbc('0x3b')],_0x5b2d57[_0x9fbc('0x62')][_0x9fbc('0x68')],_0x6e4aef[_0x9fbc('0x66')]['id'],_0x5b2d57[_0x9fbc('0x58')]?JSON[_0x9fbc('0x29')](_0x5b2d57['body']):_0x9fbc('0x69'));return respondWithRpcPromise(_0x9fbc('0x6a'),_0x9fbc('0x6b'),_0x6e4aef);}return null;})['then'](function(_0x799f8){var _0x5b8cdf=_0x9fbc('0x6c')+_0x799f8[_0x9fbc('0x2c')]['ContactId'];return db[_0x9fbc('0x6d')][_0x9fbc('0x43')](_0x5b8cdf,{'type':db[_0x9fbc('0x6e')][_0x9fbc('0x6f')][_0x9fbc('0x70')],'raw':!![]})[_0x9fbc('0x23')](function(_0x53a306){return _0x53a306;});})[_0x9fbc('0x23')](function(_0x5b9249){if(_0x5b9249){_0x6e4aef[_0x9fbc('0x2c')][_0x9fbc('0x71')]=_0x5b9249[0x0];if(!_0x5b2d57['body'][_0x9fbc('0x61')])return;return db[_0x9fbc('0x72')][_0x9fbc('0x59')]({'where':{'id':_0x5b2d57[_0x9fbc('0x58')][_0x9fbc('0x61')],'role':_0x9fbc('0x73')},'attributes':['id','name','fullname',_0x9fbc('0x74'),_0x9fbc('0x75')],'raw':!![]});}return null;})['then'](function(_0x5ee5d7){if(!_0x5ee5d7)return null;_0x6e4aef[_0x9fbc('0x2c')]['agent']=_0x5ee5d7;return _0x6e4aef;})['then'](function(_0x14df90){if(_0x14df90){if(_0x5b2d57[_0x9fbc('0x58')][_0x9fbc('0x76')]){_0x6e4aef[_0x9fbc('0x2c')]['interface']=util[_0x9fbc('0x77')](_0x9fbc('0x78'),_0x5b2d57[_0x9fbc('0x62')][_0x9fbc('0x3b')]);_0x6e4aef[_0x9fbc('0x2c')][_0x9fbc('0x79')]=_0x6e4aef[_0x9fbc('0x79')];_0x6e4aef['message']['motionChannel']=_0x6e4aef[_0x9fbc('0x79')];_0x6e4aef[_0x9fbc('0x2c')]['event']=_0x9fbc('0x5c');return respondWithRpcPromise(_0x9fbc('0x7a'),_0x9fbc('0x7a'),{'event':'acceptmessage','message':_0x6e4aef['message']},client9002)['then'](function(){return _0x6e4aef;});}return _0x6e4aef;}return null;})[_0x9fbc('0x23')](respondWithResult(_0x146bc5,null))['catch'](handleError(_0x146bc5,null));};var interaction_log=require(_0x9fbc('0x5b'))('fax-interactions');exports[_0x9fbc('0x38')]=function(_0x32fe8f,_0x2e00a9,_0x53adeb){var _0x22ecc3={'agent':{},'channel':_0x9fbc('0x5d')};if(_0x32fe8f['body']['id']){delete _0x32fe8f[_0x9fbc('0x58')]['id'];}_0x32fe8f[_0x9fbc('0x58')][_0x9fbc('0x61')]=_0x32fe8f['body'][_0x9fbc('0x61')]||_0x32fe8f['user']['id'];_0x22ecc3['agent']['id']=_0x32fe8f[_0x9fbc('0x58')][_0x9fbc('0x61')];return db[_0x9fbc('0x3e')][_0x9fbc('0x59')]({'where':{'id':_0x32fe8f[_0x9fbc('0x5a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e00a9,null))['then'](function(_0x406c43){if(_0x406c43){_0x22ecc3[_0x9fbc('0x2c')]=_0x406c43['get']({'plain':!![]});return db[_0x9fbc('0x7b')][_0x9fbc('0x59')]({'where':{'id':_0x406c43[_0x9fbc('0x7c')]}});}return null;})['then'](handleEntityNotFound(_0x2e00a9,null))[_0x9fbc('0x23')](function(_0x25f5c9){if(_0x25f5c9){_0x22ecc3['interaction']=_0x25f5c9[_0x9fbc('0x63')]({'plain':!![]});interaction_log[_0x9fbc('0x24')](_0x9fbc('0x7d'),_0x32fe8f['user']['id'],_0x32fe8f[_0x9fbc('0x62')]['name'],_0x32fe8f[_0x9fbc('0x62')][_0x9fbc('0x68')],_0x22ecc3[_0x9fbc('0x66')]['id'],_0x32fe8f[_0x9fbc('0x58')]?JSON[_0x9fbc('0x29')](_0x32fe8f[_0x9fbc('0x58')]):'null');return respondWithRpcPromise(_0x9fbc('0x7e'),_0x9fbc('0x7f'),_0x22ecc3);}return null;})['then'](function(_0x1ed1a1){var _0x1197c2=_0x9fbc('0x6c')+_0x1ed1a1[_0x9fbc('0x2c')][_0x9fbc('0x80')];return db[_0x9fbc('0x6d')][_0x9fbc('0x43')](_0x1197c2,{'type':db['Sequelize']['QueryTypes'][_0x9fbc('0x70')],'raw':!![]})[_0x9fbc('0x23')](function(_0x5721c2){return _0x5721c2;});})[_0x9fbc('0x23')](function(_0x4d96b3){if(_0x4d96b3){_0x22ecc3['message'][_0x9fbc('0x71')]=_0x4d96b3[0x0];if(!_0x32fe8f['body']['UserId'])return;return db[_0x9fbc('0x72')][_0x9fbc('0x59')]({'where':{'id':_0x32fe8f[_0x9fbc('0x58')]['UserId'],'role':_0x9fbc('0x73')},'attributes':['id',_0x9fbc('0x3b'),_0x9fbc('0x81'),_0x9fbc('0x74'),_0x9fbc('0x75')],'raw':!![]});}return null;})[_0x9fbc('0x23')](function(_0x30f67d){if(!_0x30f67d)return null;_0x22ecc3[_0x9fbc('0x2c')][_0x9fbc('0x73')]=_0x30f67d;return _0x22ecc3;})[_0x9fbc('0x23')](function(_0x2a54f4){if(_0x2a54f4){_0x2a54f4[_0x9fbc('0x2c')][_0x9fbc('0x82')]=util['format'](_0x9fbc('0x78'),_0x32fe8f[_0x9fbc('0x62')]['name']);_0x2a54f4[_0x9fbc('0x2c')]['channel']=_0x22ecc3[_0x9fbc('0x79')];_0x2a54f4[_0x9fbc('0x2c')][_0x9fbc('0x83')]=_0x22ecc3[_0x9fbc('0x79')];_0x2a54f4[_0x9fbc('0x2c')]['event']='reject';respondWithRpcPromise(_0x9fbc('0x7a'),'EventManager',{'event':'rejectmessage','message':_0x2a54f4[_0x9fbc('0x2c')]},client9002);return _0x22ecc3;}return null;})[_0x9fbc('0x23')](respondWithResult(_0x2e00a9,null))[_0x9fbc('0x2e')](handleError(_0x2e00a9,null));};exports['create']=function(_0x494dd0,_0x30ee4d){var _0xf9ac0a;return db[_0x9fbc('0x3e')][_0x9fbc('0x84')](_0x494dd0[_0x9fbc('0x58')],{})[_0x9fbc('0x23')](function(_0x2c7ad8){_0xf9ac0a=_0x2c7ad8;return db[_0x9fbc('0x85')][_0x9fbc('0x86')]({'where':{'id':_0xf9ac0a[_0x9fbc('0x80')]}});})[_0x9fbc('0x23')](function(_0x5e6b02){if(_[_0x9fbc('0x64')](_0x5e6b02)){return;}else{_0xf9ac0a[_0x9fbc('0x5d')]=_0x5e6b02[_0x9fbc('0x5d')];return db[_0x9fbc('0x87')][_0x9fbc('0x86')]({'where':{'id':_0xf9ac0a[_0x9fbc('0x88')]}});}})[_0x9fbc('0x23')](function(_0x5e242d){return respondWithRpcPromise(_0x9fbc('0x89'),_0x9fbc('0x89'),{'FaxAccountId':_[_0x9fbc('0x64')](_0x494dd0[_0x9fbc('0x58')])?undefined:_0x494dd0['body'][_0x9fbc('0x8a')],'path':_[_0x9fbc('0x64')](_0x5e242d)?undefined:util[_0x9fbc('0x77')](_0x9fbc('0x8b'),_0x5e242d[_0x9fbc('0x8c')]),'fax':_[_0x9fbc('0x64')](_0xf9ac0a[_0x9fbc('0x5d')])?undefined:_0xf9ac0a[_0x9fbc('0x5d')],'AttachmentId':_0xf9ac0a[_0x9fbc('0x88')]},client9002);})['then'](respondWithResult(_0x30ee4d,0xc9))[_0x9fbc('0x2e')](handleError(_0x30ee4d,null));};exports[_0x9fbc('0x8d')]=function(_0x21ee86,_0x16fd56){var _0x1a7943=path[_0x9fbc('0x8e')](config[_0x9fbc('0x8f')],_0x9fbc('0x90'),'files',_0x9fbc('0x91'));return db[_0x9fbc('0x3e')]['find']({'where':{'id':_0x21ee86['params']['id']},'include':[{'model':db[_0x9fbc('0x87')],'as':_0x9fbc('0x87')}]})[_0x9fbc('0x23')](handleEntityNotFound(_0x16fd56,null))[_0x9fbc('0x23')](function(_0x398c3a){if(_0x398c3a){return _0x16fd56[_0x9fbc('0x8d')](path[_0x9fbc('0x8e')](_0x1a7943,_0x398c3a['Attachment'][_0x9fbc('0x8c')]));}})['catch'](handleError(_0x16fd56,null));};
\ No newline at end of file
index 59c621b..3c89861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x480bc8,_0x1fac40){var _0x28c245=function(_0x22a049){while(--_0x22a049){_0x480bc8['push'](_0x480bc8['shift']());}};_0x28c245(++_0x1fac40);}(_0x4fb4,0x190));var _0x44fb=function(_0x5fa7bc,_0xdb95e2){_0x5fa7bc=_0x5fa7bc-0x0;var _0x5b76bc=_0x4fb4[_0x5fa7bc];return _0x5b76bc;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0x44fb('0x0'))['db'][_0x44fb('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x44fb('0x2')](0x0);var events={'afterCreate':_0x44fb('0x3'),'afterUpdate':_0x44fb('0x4'),'afterDestroy':_0x44fb('0x5')};function emitEvent(_0x53ee5d){return function(_0xec6dce,_0x953327,_0x308b96){FaxMessageEvents[_0x44fb('0x6')](_0x53ee5d+':'+_0xec6dce['id'],_0xec6dce);FaxMessageEvents[_0x44fb('0x6')](_0x53ee5d,_0xec6dce);_0x308b96(null);};}for(var e in events){if(events[_0x44fb('0x7')](e)){var event=events[e];FaxMessage[_0x44fb('0x8')](e,emitEvent(event));}}module[_0x44fb('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x89b8=['exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x4a0e68,_0x45c08c){var _0x4fb274=function(_0x5f36b1){while(--_0x5f36b1){_0x4a0e68['push'](_0x4a0e68['shift']());}};_0x4fb274(++_0x45c08c);}(_0x89b8,0x19f));var _0x889b=function(_0x496d2f,_0x490fee){_0x496d2f=_0x496d2f-0x0;var _0x547b5f=_0x89b8[_0x496d2f];return _0x547b5f;};'use strict';var EventEmitter=require(_0x889b('0x0'));var FaxMessage=require(_0x889b('0x1'))['db'][_0x889b('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x889b('0x3')](0x0);var events={'afterCreate':_0x889b('0x4'),'afterUpdate':_0x889b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x383d3c){return function(_0x1d4725,_0x3db972,_0x58ae50){FaxMessageEvents[_0x889b('0x6')](_0x383d3c+':'+_0x1d4725['id'],_0x1d4725);FaxMessageEvents[_0x889b('0x6')](_0x383d3c,_0x1d4725);_0x58ae50(null);};}for(var e in events){if(events[_0x889b('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0x889b('0x8')]=FaxMessageEvents;
\ No newline at end of file
index 0e526f8..ffb8fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3440=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','createdAt','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x3440,0x1ec));var _0x0344=function(_0x405f26,_0x44eb88){_0x405f26=_0x405f26-0x0;var _0x1a259d=_0x3440[_0x405f26];return _0x1a259d;};'use strict';var _=require('lodash');var util=require(_0x0344('0x0'));var logger=require(_0x0344('0x1'))(_0x0344('0x2'));var moment=require(_0x0344('0x3'));var BPromise=require('bluebird');var rp=require(_0x0344('0x4'));var fs=require('fs');var path=require(_0x0344('0x5'));var rimraf=require(_0x0344('0x6'));var config=require(_0x0344('0x7'));var attributes=require('./faxMessage.attributes');module[_0x0344('0x8')]=function(_0x1d9a37,_0x55e598){return _0x1d9a37[_0x0344('0x9')](_0x0344('0xa'),attributes,{'tableName':_0x0344('0xb'),'paranoid':![],'indexes':[{'name':_0x0344('0xc'),'fields':[_0x0344('0xd')],'type':_0x0344('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1be2b5,_0xa9b27,_0x1c1abd){var _0x5e33da=_0x1d9a37[_0x0344('0xf')];var _0x2fa335=_0x1be2b5[_0x0344('0x10')]({'plain':!![]});if(_0x2fa335[_0x0344('0x11')]['toLowerCase']()==='in'||_0x2fa335['direction'][_0x0344('0x12')]()==='out'&&!_0x2fa335[_0x0344('0x13')]&&!_[_0x0344('0x14')](_0x2fa335[_0x0344('0x15')])){_0x5e33da[_0x0344('0x16')][_0x0344('0x17')]({'where':{'id':_0x2fa335[_0x0344('0x18')]}})[_0x0344('0x19')](function(_0x1684f8){if(_0x1684f8){_0x1684f8['update']({'lastMsgAt':_0x2fa335[_0x0344('0x1a')],'lastMsgDirection':_0x2fa335[_0x0344('0x11')][_0x0344('0x12')]()});}})['catch'](function(_0x363c54){console['error'](_0x363c54);});}_0x1c1abd();}},'charset':_0x0344('0x1b'),'collate':_0x0344('0x1c')});};
\ No newline at end of file
+var _0x9532=['FaxMessage','fax_messages','fti_fax_messages','FULLTEXT','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','error','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','../../config/environment','./faxMessage.attributes','define'];(function(_0x16786a,_0x6b6e8c){var _0x2d1772=function(_0x3acc3e){while(--_0x3acc3e){_0x16786a['push'](_0x16786a['shift']());}};_0x2d1772(++_0x6b6e8c);}(_0x9532,0x1d8));var _0x2953=function(_0x5a6cf0,_0x235c46){_0x5a6cf0=_0x5a6cf0-0x0;var _0x6e4653=_0x9532[_0x5a6cf0];return _0x6e4653;};'use strict';var _=require(_0x2953('0x0'));var util=require('util');var logger=require(_0x2953('0x1'))('api');var moment=require(_0x2953('0x2'));var BPromise=require(_0x2953('0x3'));var rp=require(_0x2953('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2953('0x5'));var attributes=require(_0x2953('0x6'));module['exports']=function(_0x26d1e7,_0xc84ca3){return _0x26d1e7[_0x2953('0x7')](_0x2953('0x8'),attributes,{'tableName':_0x2953('0x9'),'paranoid':![],'indexes':[{'name':_0x2953('0xa'),'fields':['body'],'type':_0x2953('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x19c950,_0x2ef396,_0xc357f7){var _0x40b926=_0x26d1e7['models'];var _0x314ba5=_0x19c950['get']({'plain':!![]});if(_0x314ba5[_0x2953('0xc')]['toLowerCase']()==='in'||_0x314ba5[_0x2953('0xc')][_0x2953('0xd')]()===_0x2953('0xe')&&!_0x314ba5[_0x2953('0xf')]&&!_[_0x2953('0x10')](_0x314ba5[_0x2953('0x11')])){_0x40b926[_0x2953('0x12')][_0x2953('0x13')]({'where':{'id':_0x314ba5[_0x2953('0x14')]}})[_0x2953('0x15')](function(_0x1d17ad){if(_0x1d17ad){_0x1d17ad['update']({'lastMsgAt':_0x314ba5['createdAt'],'lastMsgDirection':_0x314ba5[_0x2953('0xc')]['toLowerCase']()});}})['catch'](function(_0x3f062e){console[_0x2953('0x16')](_0x3f062e);});}_0xc357f7();}},'charset':'utf8mb4','collate':_0x2953('0x17')});};
\ No newline at end of file
index 0661e87..fd62a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['jayson/promise','client','http','redis','defaults','localhost','./faxMessage.socket','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','CreateFaxMessage','FaxMessage','create','body','options','raw','info','catch','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xed1f,0x6a));var _0xfed1=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xed1f[_0x39c734];return _0xb2a2f9;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var moment=require(_0xfed1('0x2'));var BPromise=require(_0xfed1('0x3'));var rs=require(_0xfed1('0x4'));var fs=require('fs');var Redis=require(_0xfed1('0x5'));var db=require(_0xfed1('0x6'))['db'];var utils=require(_0xfed1('0x7'));var logger=require(_0xfed1('0x8'))(_0xfed1('0x9'));var config=require(_0xfed1('0xa'));var jayson=require(_0xfed1('0xb'));var client=jayson[_0xfed1('0xc')][_0xfed1('0xd')]({'port':0x232a});config[_0xfed1('0xe')]=_[_0xfed1('0xf')](config[_0xfed1('0xe')],{'host':_0xfed1('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfed1('0xe')]));require(_0xfed1('0x11'))['register'](socket);function respondWithRpcPromise(_0x1414be,_0x7bf48c,_0x4a564e){return new BPromise(function(_0x3ce017,_0x48c338){return client[_0xfed1('0x12')](_0x1414be,_0x4a564e)[_0xfed1('0x13')](function(_0x4a8369){logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));logger['debug'](_0xfed1('0x16'),_0x7bf48c,'request\x20sent',JSON['stringify'](_0x4a8369));if(_0x4a8369[_0xfed1('0x17')]){if(_0x4a8369[_0xfed1('0x17')]['code']===0x1f4){logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369['error'][_0xfed1('0x18')]);return _0x48c338(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369[_0xfed1('0x17')]['message']);return _0x3ce017(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}else{logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));_0x3ce017(_0x4a8369['result']['message']);}})['catch'](function(_0x1e5afb){logger['error'](_0xfed1('0x14'),_0x7bf48c,_0x1e5afb);_0x48c338(_0x1e5afb);});});}exports[_0xfed1('0x19')]=function(_0x51a860){var _0x94cb84=this;return new Promise(function(_0x65f14b,_0x59ee9d){return db[_0xfed1('0x1a')][_0xfed1('0x1b')](_0x51a860[_0xfed1('0x1c')],{'raw':_0x51a860[_0xfed1('0x1d')]?_0x51a860['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x446558){logger[_0xfed1('0x1f')](_0xfed1('0x19'),_0x51a860);logger['debug'](_0xfed1('0x19'),_0x51a860,JSON['stringify'](_0x446558));_0x65f14b(_0x446558);})[_0xfed1('0x20')](function(_0x2793b7){logger[_0xfed1('0x17')](_0xfed1('0x19'),_0x2793b7[_0xfed1('0x18')],_0x51a860);_0x59ee9d(_0x94cb84[_0xfed1('0x17')](0x1f4,_0x2793b7['message']));});});};exports[_0xfed1('0x21')]=function(_0xcb1cdc){var _0x49072b=this;return new Promise(function(_0x1d6c72,_0x2b9dd2){return db[_0xfed1('0x1a')][_0xfed1('0x22')](_0xcb1cdc[_0xfed1('0x1c')],{'raw':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')]['where']||null:null,'attributes':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')][_0xfed1('0x23')]||null:null,'limit':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x24')]||null:null})[_0xfed1('0x13')](function(_0x13f414){logger[_0xfed1('0x1f')](_0xfed1('0x21'),_0xcb1cdc);logger[_0xfed1('0x25')]('UpdateFaxMessage',_0xcb1cdc,JSON[_0xfed1('0x26')](_0x13f414));_0x1d6c72(_0x13f414);})[_0xfed1('0x20')](function(_0x4fc309){logger['error'](_0xfed1('0x21'),_0x4fc309[_0xfed1('0x18')],_0xcb1cdc);_0x2b9dd2(_0x49072b[_0xfed1('0x17')](0x1f4,_0x4fc309[_0xfed1('0x18')]));});});};
\ No newline at end of file
+var _0xb821=['register','request','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateFaxMessage','create','body','options','raw','stringify','UpdateFaxMessage','FaxMessage','update','where','attributes','limit','util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket'];(function(_0x37f053,_0x4b2ad0){var _0x78f6a0=function(_0x84b926){while(--_0x84b926){_0x37f053['push'](_0x37f053['shift']());}};_0x78f6a0(++_0x4b2ad0);}(_0xb821,0xa7));var _0x1b82=function(_0x5e0b5f,_0x431544){_0x5e0b5f=_0x5e0b5f-0x0;var _0x5436c1=_0xb821[_0x5e0b5f];return _0x5436c1;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var moment=require(_0x1b82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b82('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1b82('0x3'))(_0x1b82('0x4'));var config=require(_0x1b82('0x5'));var jayson=require(_0x1b82('0x6'));var client=jayson['client'][_0x1b82('0x7')]({'port':0x232a});config[_0x1b82('0x8')]=_[_0x1b82('0x9')](config[_0x1b82('0x8')],{'host':_0x1b82('0xa'),'port':0x18eb});var socket=require(_0x1b82('0xb'))(new Redis(config[_0x1b82('0x8')]));require(_0x1b82('0xc'))[_0x1b82('0xd')](socket);function respondWithRpcPromise(_0x4955b5,_0x4011f2,_0x30c6ee){return new BPromise(function(_0x44dfd4,_0x14c57a){return client[_0x1b82('0xe')](_0x4955b5,_0x30c6ee)[_0x1b82('0xf')](function(_0x739f99){logger[_0x1b82('0x10')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x1b82('0x11'));logger[_0x1b82('0x12')](_0x1b82('0x13'),_0x4011f2,_0x1b82('0x11'),JSON['stringify'](_0x739f99));if(_0x739f99[_0x1b82('0x14')]){if(_0x739f99['error']['code']===0x1f4){logger[_0x1b82('0x14')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x739f99[_0x1b82('0x14')][_0x1b82('0x15')]);return _0x14c57a(_0x739f99['error'][_0x1b82('0x15')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x739f99[_0x1b82('0x14')]['message']);return _0x44dfd4(_0x739f99[_0x1b82('0x14')][_0x1b82('0x15')]);}else{logger[_0x1b82('0x10')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,'request\x20sent');_0x44dfd4(_0x739f99[_0x1b82('0x16')]['message']);}})[_0x1b82('0x17')](function(_0x1002a1){logger[_0x1b82('0x14')]('FaxMessage,\x20%s,\x20%s',_0x4011f2,_0x1002a1);_0x14c57a(_0x1002a1);});});}exports[_0x1b82('0x18')]=function(_0x2b6ee8){var _0x11af50=this;return new Promise(function(_0x46e5e2,_0x10d45c){return db['FaxMessage'][_0x1b82('0x19')](_0x2b6ee8[_0x1b82('0x1a')],{'raw':_0x2b6ee8[_0x1b82('0x1b')]?_0x2b6ee8[_0x1b82('0x1b')][_0x1b82('0x1c')]===undefined?!![]:![]:!![]})[_0x1b82('0xf')](function(_0x2d07f4){logger['info'](_0x1b82('0x18'),_0x2b6ee8);logger[_0x1b82('0x12')]('CreateFaxMessage',_0x2b6ee8,JSON[_0x1b82('0x1d')](_0x2d07f4));_0x46e5e2(_0x2d07f4);})[_0x1b82('0x17')](function(_0x1ad9d6){logger['error'](_0x1b82('0x18'),_0x1ad9d6['message'],_0x2b6ee8);_0x10d45c(_0x11af50['error'](0x1f4,_0x1ad9d6['message']));});});};exports[_0x1b82('0x1e')]=function(_0x149d0f){var _0xfd00d1=this;return new Promise(function(_0x257b79,_0x548a3b){return db[_0x1b82('0x1f')][_0x1b82('0x20')](_0x149d0f[_0x1b82('0x1a')],{'raw':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x21')]||null:null,'attributes':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f[_0x1b82('0x1b')][_0x1b82('0x22')]||null:null,'limit':_0x149d0f[_0x1b82('0x1b')]?_0x149d0f['options'][_0x1b82('0x23')]||null:null})[_0x1b82('0xf')](function(_0x155a34){logger[_0x1b82('0x10')](_0x1b82('0x1e'),_0x149d0f);logger[_0x1b82('0x12')](_0x1b82('0x1e'),_0x149d0f,JSON[_0x1b82('0x1d')](_0x155a34));_0x257b79(_0x155a34);})[_0x1b82('0x17')](function(_0x362657){logger['error'](_0x1b82('0x1e'),_0x362657[_0x1b82('0x15')],_0x149d0f);_0x548a3b(_0xfd00d1[_0x1b82('0x14')](0x1f4,_0x362657[_0x1b82('0x15')]));});});};
\ No newline at end of file
index 1f68a6e..7056e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86c7=['save','remove','removeListener','register','./faxMessage.events'];(function(_0x4200b3,_0x3a9eb9){var _0xf3f140=function(_0x49e8b3){while(--_0x49e8b3){_0x4200b3['push'](_0x4200b3['shift']());}};_0xf3f140(++_0x3a9eb9);}(_0x86c7,0xe0));var _0x786c=function(_0x5565a0,_0x1ee2d8){_0x5565a0=_0x5565a0-0x0;var _0x252393=_0x86c7[_0x5565a0];return _0x252393;};'use strict';var FaxMessageEvents=require(_0x786c('0x0'));var events=[_0x786c('0x1'),_0x786c('0x2'),'update'];function createListener(_0x2535b1,_0x390944){return function(_0x161612){_0x390944['emit'](_0x2535b1,_0x161612);};}function removeListener(_0x36ed84,_0x1af211){return function(){FaxMessageEvents[_0x786c('0x3')](_0x36ed84,_0x1af211);};}exports[_0x786c('0x4')]=function(_0x29aab2){for(var _0x9027d6=0x0,_0x127082=events['length'];_0x9027d6<_0x127082;_0x9027d6++){var _0x787089=events[_0x9027d6];var _0x4d8b65=createListener('faxMessage:'+_0x787089,_0x29aab2);FaxMessageEvents['on'](_0x787089,_0x4d8b65);}};
\ No newline at end of file
+var _0xe9b8=['./faxMessage.events','save','remove','update','emit','removeListener','register','length','faxMessage:'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xe9b8,0xa2));var _0x8e9b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe9b8[_0x14add3];return _0x4a174f;};'use strict';var FaxMessageEvents=require(_0x8e9b('0x0'));var events=[_0x8e9b('0x1'),_0x8e9b('0x2'),_0x8e9b('0x3')];function createListener(_0x152101,_0x247962){return function(_0x5621a2){_0x247962[_0x8e9b('0x4')](_0x152101,_0x5621a2);};}function removeListener(_0x4d6650,_0xec8693){return function(){FaxMessageEvents[_0x8e9b('0x5')](_0x4d6650,_0xec8693);};}exports[_0x8e9b('0x6')]=function(_0x26aa33){for(var _0x479503=0x0,_0x3e2f24=events[_0x8e9b('0x7')];_0x479503<_0x3e2f24;_0x479503++){var _0x3ba9db=events[_0x479503];var _0xac830b=createListener(_0x8e9b('0x8')+_0x3ba9db,_0x26aa33);FaxMessageEvents['on'](_0x3ba9db,_0xac830b);}};
\ No newline at end of file
index 7927fe0..5511e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f68=['/:id/reject','reject','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','/:id/download','download','post','tracked','fax','faxmessage:create','put','update','/:id/accept','accept'];(function(_0xe5530b,_0x4477ea){var _0x549c66=function(_0x495293){while(--_0x495293){_0xe5530b['push'](_0xe5530b['shift']());}};_0x549c66(++_0x4477ea);}(_0x2f68,0x9a));var _0x82f6=function(_0x318431,_0x44beeb){_0x318431=_0x318431-0x0;var _0x472456=_0x2f68[_0x318431];return _0x472456;};'use strict';var multer=require('multer');var util=require(_0x82f6('0x0'));var path=require(_0x82f6('0x1'));var timeout=require(_0x82f6('0x2'));var express=require(_0x82f6('0x3'));var router=express['Router']();var fs_extra=require(_0x82f6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x82f6('0x5'));var config=require(_0x82f6('0x6'));var controller=require('./faxMessage.controller');router[_0x82f6('0x7')]('/',auth[_0x82f6('0x8')](),controller['index']);router['get'](_0x82f6('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x82f6('0x7')](_0x82f6('0xa'),auth[_0x82f6('0x8')](),controller['show']);router[_0x82f6('0x7')](_0x82f6('0xb'),auth['isAuthenticated'](),controller[_0x82f6('0xc')]);router[_0x82f6('0xd')]('/',auth[_0x82f6('0x8')](),interaction[_0x82f6('0xe')](_0x82f6('0xf'),_0x82f6('0x10')),controller['create']);router[_0x82f6('0x11')](_0x82f6('0xa'),auth['isAuthenticated'](),controller[_0x82f6('0x12')]);router[_0x82f6('0x11')](_0x82f6('0x13'),auth[_0x82f6('0x8')](),controller[_0x82f6('0x14')]);router[_0x82f6('0x11')](_0x82f6('0x15'),auth[_0x82f6('0x8')](),controller[_0x82f6('0x16')]);router['delete'](_0x82f6('0xa'),auth['isAuthenticated'](),controller[_0x82f6('0x17')]);module[_0x82f6('0x18')]=router;
\ No newline at end of file
+var _0x6b20=['accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','post','fax','faxmessage:create','create','put','update','/:id/accept'];(function(_0x26241d,_0x8b6d47){var _0x43bbd9=function(_0x2df38b){while(--_0x2df38b){_0x26241d['push'](_0x26241d['shift']());}};_0x43bbd9(++_0x8b6d47);}(_0x6b20,0xd1));var _0x06b2=function(_0x955a5f,_0x173a36){_0x955a5f=_0x955a5f-0x0;var _0x8d7866=_0x6b20[_0x955a5f];return _0x8d7866;};'use strict';var multer=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var path=require('path');var timeout=require(_0x06b2('0x2'));var express=require('express');var router=express[_0x06b2('0x3')]();var fs_extra=require(_0x06b2('0x4'));var auth=require(_0x06b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x06b2('0x6'));var controller=require(_0x06b2('0x7'));router[_0x06b2('0x8')]('/',auth[_0x06b2('0x9')](),controller[_0x06b2('0xa')]);router[_0x06b2('0x8')](_0x06b2('0xb'),auth['isAuthenticated'](),controller[_0x06b2('0xc')]);router[_0x06b2('0x8')](_0x06b2('0xd'),auth['isAuthenticated'](),controller[_0x06b2('0xe')]);router['get'](_0x06b2('0xf'),auth['isAuthenticated'](),controller['download']);router[_0x06b2('0x10')]('/',auth[_0x06b2('0x9')](),interaction['tracked'](_0x06b2('0x11'),_0x06b2('0x12')),controller[_0x06b2('0x13')]);router[_0x06b2('0x14')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x15')]);router[_0x06b2('0x14')](_0x06b2('0x16'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x17')]);router[_0x06b2('0x14')](_0x06b2('0x18'),auth['isAuthenticated'](),controller[_0x06b2('0x19')]);router[_0x06b2('0x1a')](_0x06b2('0xd'),auth[_0x06b2('0x9')](),controller[_0x06b2('0x1b')]);module[_0x06b2('0x1c')]=router;
\ No newline at end of file
index a0b4baa..6e564d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ee=['exports','STRING','name','rrmemory','roundrobin','INTEGER','sequelize'];(function(_0x1d8015,_0x49c7b3){var _0x3c7314=function(_0xaeb40f){while(--_0xaeb40f){_0x1d8015['push'](_0x1d8015['shift']());}};_0x3c7314(++_0x49c7b3);}(_0xf2ee,0x110));var _0xef2e=function(_0x118434,_0x2488eb){_0x118434=_0x118434-0x0;var _0x256bfd=_0xf2ee[_0x118434];return _0x256bfd;};'use strict';var Sequelize=require(_0xef2e('0x0'));module[_0xef2e('0x1')]={'name':{'type':Sequelize[_0xef2e('0x2')],'unique':_0xef2e('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xef2e('0x4'),'beepall',_0xef2e('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xef2e('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf7ee=['name','INTEGER','ENUM','rrmemory','beepall','sequelize','STRING'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xf7ee,0x83));var _0xef7e=function(_0x4a8f6f,_0x105405){_0x4a8f6f=_0x4a8f6f-0x0;var _0x4e7c97=_0xf7ee[_0x4a8f6f];return _0x4e7c97;};'use strict';var Sequelize=require(_0xef7e('0x0'));module['exports']={'name':{'type':Sequelize[_0xef7e('0x1')],'unique':_0xef7e('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xef7e('0x1')]},'timeout':{'type':Sequelize[_0xef7e('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xef7e('0x4')](_0xef7e('0x5'),_0xef7e('0x6'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 7e8de68..0982547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95b3=['addAgents','omit','userFaxQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./faxQueue.socket','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','end','sendStatus','error','stack','name','index','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','FaxQueue','findAll','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserFaxQueue','nolimit','FaxQueueId','map','findAndCountAll','UserId','updatedAt','createdAt','rows','format','SIP','getTeams','Team','pick','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','forEach','emit','User','select','field','tq.TeamId','from','team_has_fax_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','transaction','removeTeams','isEmpty','removeAgents','userFaxQueue:remove'];(function(_0x47f7ec,_0x369f9d){var _0x415101=function(_0x41317a){while(--_0x41317a){_0x47f7ec['push'](_0x47f7ec['shift']());}};_0x415101(++_0x369f9d);}(_0x95b3,0x94));var _0x395b=function(_0x3b57fe,_0x2f8615){_0x3b57fe=_0x3b57fe-0x0;var _0x570ed3=_0x95b3[_0x3b57fe];return _0x570ed3;};'use strict';var emlformat=require(_0x395b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x395b('0x1'));var jsonpatch=require(_0x395b('0x2'));var rp=require(_0x395b('0x3'));var moment=require(_0x395b('0x4'));var BPromise=require(_0x395b('0x5'));var Mustache=require(_0x395b('0x6'));var util=require(_0x395b('0x7'));var path=require(_0x395b('0x8'));var sox=require(_0x395b('0x9'));var csv=require(_0x395b('0xa'));var ejs=require(_0x395b('0xb'));var fs=require('fs');var fs_extra=require(_0x395b('0xc'));var _=require(_0x395b('0xd'));var squel=require(_0x395b('0xe'));var crypto=require('crypto');var jsforce=require(_0x395b('0xf'));var deskjs=require(_0x395b('0x10'));var toCsv=require(_0x395b('0xa'));var querystring=require(_0x395b('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x395b('0x12'));var qs=require(_0x395b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x395b('0x14'));var logger=require(_0x395b('0x15'))(_0x395b('0x16'));var utils=require(_0x395b('0x17'));var config=require(_0x395b('0x18'));var licenseUtil=require(_0x395b('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x395b('0x1a')](config[_0x395b('0x1b')],{'host':_0x395b('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x395b('0x1b')]));require(_0x395b('0x1d'))['register'](socket);function respondWithStatusCode(_0x13d5c6,_0x33bc70){_0x33bc70=_0x33bc70||0xcc;return function(_0x2d36f0){if(_0x2d36f0){return _0x13d5c6['sendStatus'](_0x33bc70);}return _0x13d5c6[_0x395b('0x1e')](_0x33bc70)['end']();};}function respondWithResult(_0x1ce6e9,_0x229922){_0x229922=_0x229922||0xc8;return function(_0x399c61){if(_0x399c61){return _0x1ce6e9[_0x395b('0x1e')](_0x229922)['json'](_0x399c61);}};}function respondWithFilteredResult(_0x19eb14,_0x234adb){return function(_0x45e562){if(_0x45e562){var _0x5270a0=typeof _0x234adb[_0x395b('0x1f')]===_0x395b('0x20')&&typeof _0x234adb[_0x395b('0x21')]==='undefined';var _0x5e23f9=_0x45e562[_0x395b('0x22')];var _0x883b3f=_0x5270a0?0x0:_0x234adb[_0x395b('0x1f')];var _0x2a880c=_0x5270a0?_0x45e562['count']:_0x234adb[_0x395b('0x1f')]+_0x234adb[_0x395b('0x21')];var _0x5dd4f5;if(_0x2a880c>=_0x5e23f9){_0x2a880c=_0x5e23f9;_0x5dd4f5=0xc8;}else{_0x5dd4f5=0xce;}_0x19eb14['status'](_0x5dd4f5);return _0x19eb14[_0x395b('0x23')](_0x395b('0x24'),_0x883b3f+'-'+_0x2a880c+'/'+_0x5e23f9)[_0x395b('0x25')](_0x45e562);}return null;};}function patchUpdates(_0x5b1d8c){return function(_0x57a419){try{jsonpatch[_0x395b('0x26')](_0x57a419,_0x5b1d8c,!![]);}catch(_0x4c8e70){return BPromise[_0x395b('0x27')](_0x4c8e70);}return _0x57a419[_0x395b('0x28')]();};}function saveUpdates(_0x4c699d,_0x13f8e2){return function(_0x36dee1){if(_0x36dee1){return _0x36dee1[_0x395b('0x29')](_0x4c699d)[_0x395b('0x2a')](function(_0x4af5fb){return _0x4af5fb;});}return null;};}function removeEntity(_0x466cfe,_0x823ec3){return function(_0xda5686){if(_0xda5686){return _0xda5686[_0x395b('0x2b')]()[_0x395b('0x2a')](function(){var _0x1bcd4d=_0xda5686[_0x395b('0x2c')]({'plain':!![]});var _0x413a92='FaxQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x413a92,'resourceId':_0x1bcd4d['id']}})[_0x395b('0x2a')](function(){return _0xda5686;});})[_0x395b('0x2a')](function(){_0x466cfe[_0x395b('0x1e')](0xcc)[_0x395b('0x2d')]();});}};}function handleEntityNotFound(_0x3593ce,_0x63704f){return function(_0x46d9c2){if(!_0x46d9c2){_0x3593ce[_0x395b('0x2e')](0x194);}return _0x46d9c2;};}function handleError(_0x4969e6,_0x3d1469){_0x3d1469=_0x3d1469||0x1f4;return function(_0x55055d){logger[_0x395b('0x2f')](_0x55055d[_0x395b('0x30')]);if(_0x55055d[_0x395b('0x31')]){delete _0x55055d[_0x395b('0x31')];}_0x4969e6[_0x395b('0x1e')](_0x3d1469)['send'](_0x55055d);};}exports[_0x395b('0x32')]=function(_0x928333,_0x474423){var _0x33e092={},_0x49b966={},_0x4309b8={'count':0x0,'rows':[]};var _0x18a339=_['map'](db['FaxQueue']['rawAttributes'],function(_0x26b618){return{'name':_0x26b618[_0x395b('0x33')],'type':_0x26b618[_0x395b('0x34')][_0x395b('0x35')]};});_0x49b966[_0x395b('0x36')]=_['map'](_0x18a339,_0x395b('0x31'));_0x49b966['query']=_[_0x395b('0x37')](_0x928333[_0x395b('0x38')]);_0x49b966[_0x395b('0x39')]=_[_0x395b('0x3a')](_0x49b966['model'],_0x49b966[_0x395b('0x38')]);_0x33e092[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x49b966['model'],qs[_0x395b('0x3c')](_0x928333[_0x395b('0x38')][_0x395b('0x3c')]));_0x33e092[_0x395b('0x3b')]=_0x33e092['attributes']['length']?_0x33e092[_0x395b('0x3b')]:_0x49b966['model'];if(!_0x928333[_0x395b('0x38')][_0x395b('0x3d')]('nolimit')){_0x33e092[_0x395b('0x21')]=qs[_0x395b('0x21')](_0x928333[_0x395b('0x38')][_0x395b('0x21')]);_0x33e092['offset']=qs['offset'](_0x928333[_0x395b('0x38')]['offset']);}_0x33e092[_0x395b('0x3e')]=qs[_0x395b('0x3f')](_0x928333[_0x395b('0x38')][_0x395b('0x3f')]);_0x33e092[_0x395b('0x40')]=qs[_0x395b('0x39')](_['pick'](_0x928333[_0x395b('0x38')],_0x49b966[_0x395b('0x39')]),_0x18a339);if(_0x928333[_0x395b('0x38')]['filter']){_0x33e092[_0x395b('0x40')]=_[_0x395b('0x41')](_0x33e092[_0x395b('0x40')],{'$or':_['map'](_0x18a339,function(_0x222047){if(_0x222047['type']!==_0x395b('0x42')){var _0x2adf7b={};_0x2adf7b[_0x222047['name']]={'$like':'%'+_0x928333[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x2adf7b;}})});}_0x33e092=_['merge']({},_0x33e092,_0x928333[_0x395b('0x44')]);var _0x307429={'where':_0x33e092['where']};return db['FaxQueue']['count'](_0x307429)[_0x395b('0x2a')](function(_0x247157){_0x4309b8['count']=_0x247157;if(_0x928333[_0x395b('0x38')][_0x395b('0x45')]){_0x33e092[_0x395b('0x46')]=[{'all':!![]}];}return db[_0x395b('0x47')][_0x395b('0x48')](_0x33e092);})[_0x395b('0x2a')](function(_0x149b02){_0x4309b8['rows']=_0x149b02;return _0x4309b8;})['then'](respondWithFilteredResult(_0x474423,_0x33e092))[_0x395b('0x49')](handleError(_0x474423,null));};exports[_0x395b('0x4a')]=function(_0xec6e9c,_0x4888f1){var _0x2b73df={'raw':!![],'where':{'id':_0xec6e9c[_0x395b('0x4b')]['id']}},_0x4b82f9={};_0x4b82f9[_0x395b('0x36')]=_['keys'](db[_0x395b('0x47')][_0x395b('0x4c')]);_0x4b82f9[_0x395b('0x38')]=_[_0x395b('0x37')](_0xec6e9c[_0x395b('0x38')]);_0x4b82f9['filters']=_[_0x395b('0x3a')](_0x4b82f9['model'],_0x4b82f9[_0x395b('0x38')]);_0x2b73df[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x4b82f9[_0x395b('0x36')],qs['fields'](_0xec6e9c[_0x395b('0x38')][_0x395b('0x3c')]));_0x2b73df['attributes']=_0x2b73df[_0x395b('0x3b')][_0x395b('0x4d')]?_0x2b73df[_0x395b('0x3b')]:_0x4b82f9[_0x395b('0x36')];if(_0xec6e9c[_0x395b('0x38')][_0x395b('0x45')]){_0x2b73df[_0x395b('0x46')]=[{'all':!![]}];}_0x2b73df=_['merge']({},_0x2b73df,_0xec6e9c['options']);return db[_0x395b('0x47')][_0x395b('0x4e')](_0x2b73df)[_0x395b('0x2a')](handleEntityNotFound(_0x4888f1,null))[_0x395b('0x2a')](respondWithResult(_0x4888f1,null))[_0x395b('0x49')](handleError(_0x4888f1,null));};exports[_0x395b('0x4f')]=function(_0x45f1a3,_0x3aec4e){return db['FaxQueue'][_0x395b('0x4f')](_0x45f1a3[_0x395b('0x50')],{})[_0x395b('0x2a')](function(_0x4ca019){var _0x2d2f2a=_0x45f1a3[_0x395b('0x51')][_0x395b('0x2c')]({'plain':!![]});if(!_0x2d2f2a)throw new Error(_0x395b('0x52'));if(_0x2d2f2a[_0x395b('0x53')]===_0x395b('0x51')){var _0x2d18cf=_0x4ca019[_0x395b('0x2c')]({'plain':!![]});var _0x4934a1=_0x395b('0x54');return db['UserProfileSection'][_0x395b('0x4e')]({'where':{'name':_0x4934a1,'userProfileId':_0x2d2f2a[_0x395b('0x55')]},'raw':!![]})[_0x395b('0x2a')](function(_0xd3248b){if(_0xd3248b&&_0xd3248b[_0x395b('0x56')]===0x0){return db[_0x395b('0x57')][_0x395b('0x4f')]({'name':_0x2d18cf[_0x395b('0x31')],'resourceId':_0x2d18cf['id'],'type':_0xd3248b['name'],'sectionId':_0xd3248b['id']},{})[_0x395b('0x2a')](function(){return _0x4ca019;});}else{return _0x4ca019;}})[_0x395b('0x49')](function(_0x5b30cb){logger[_0x395b('0x2f')](_0x395b('0x58'),_0x5b30cb);throw _0x5b30cb;});}return _0x4ca019;})[_0x395b('0x2a')](respondWithResult(_0x3aec4e,0xc9))[_0x395b('0x49')](handleError(_0x3aec4e,null));};exports[_0x395b('0x29')]=function(_0x10eaa5,_0x208ecf){if(_0x10eaa5[_0x395b('0x50')]['id']){delete _0x10eaa5[_0x395b('0x50')]['id'];}return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x10eaa5[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x208ecf,null))[_0x395b('0x2a')](saveUpdates(_0x10eaa5['body'],null))[_0x395b('0x2a')](respondWithResult(_0x208ecf,null))['catch'](handleError(_0x208ecf,null));};exports[_0x395b('0x2b')]=function(_0x165dec,_0x397132){return db['FaxQueue'][_0x395b('0x4e')]({'where':{'id':_0x165dec[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x397132,null))[_0x395b('0x2a')](removeEntity(_0x397132,null))[_0x395b('0x49')](handleError(_0x397132,null));};exports['describe']=function(_0x2d4d83,_0x3082b4){return db['FaxQueue'][_0x395b('0x59')]()[_0x395b('0x2a')](respondWithResult(_0x3082b4,null))['catch'](handleError(_0x3082b4,null));};exports['getMembers']=function(_0x4ec6a7,_0x50f7fc,_0x51a93c){var _0x40ffd0={'raw':!![],'where':{}},_0x2c84e2={},_0x111968;return db[_0x395b('0x47')][_0x395b('0x5a')]({'where':{'id':_0x4ec6a7[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x50f7fc,null))[_0x395b('0x2a')](function(_0x2fe30a){if(_0x2fe30a){_0x111968=_0x2fe30a[_0x395b('0x2c')]({'plain':!![]});_0x2c84e2['model']=_[_0x395b('0x37')](db[_0x395b('0x5b')][_0x395b('0x4c')]);_0x2c84e2[_0x395b('0x38')]=_[_0x395b('0x37')](_0x4ec6a7[_0x395b('0x38')]);_0x2c84e2['filters']=_['intersection'](_0x2c84e2[_0x395b('0x36')],_0x2c84e2[_0x395b('0x38')]);_0x40ffd0[_0x395b('0x3b')]=_[_0x395b('0x3a')](_0x2c84e2[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x4ec6a7[_0x395b('0x38')][_0x395b('0x3c')]));_0x40ffd0[_0x395b('0x3b')]=_0x40ffd0['attributes'][_0x395b('0x4d')]?_0x40ffd0[_0x395b('0x3b')]:_0x2c84e2['model'];if(!_0x4ec6a7[_0x395b('0x38')][_0x395b('0x3d')](_0x395b('0x5c'))){_0x40ffd0[_0x395b('0x21')]=qs[_0x395b('0x21')](_0x4ec6a7['query'][_0x395b('0x21')]);_0x40ffd0[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x4ec6a7['query'][_0x395b('0x1f')]);}_0x40ffd0[_0x395b('0x3e')]=qs[_0x395b('0x3f')](_0x4ec6a7['query'][_0x395b('0x3f')]);_0x40ffd0[_0x395b('0x40')]=qs[_0x395b('0x39')](_['pick'](_0x4ec6a7[_0x395b('0x38')],_0x2c84e2['filters']));_0x40ffd0['where'][_0x395b('0x5d')]=_0x2fe30a['id'];if(_0x4ec6a7[_0x395b('0x38')]['filter']){_0x40ffd0['where']=_[_0x395b('0x41')](_0x40ffd0[_0x395b('0x40')],{'$or':_[_0x395b('0x5e')](_0x40ffd0[_0x395b('0x3b')],function(_0x32707c){var _0x364bc7={};_0x364bc7[_0x32707c]={'$like':'%'+_0x4ec6a7[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x364bc7;})});}_0x40ffd0=_[_0x395b('0x41')]({},_0x40ffd0,_0x4ec6a7[_0x395b('0x44')]);return db[_0x395b('0x5b')][_0x395b('0x48')](_0x40ffd0);}})[_0x395b('0x2a')](function(_0x581396){if(_0x581396){return db['User'][_0x395b('0x5f')]({'where':{'id':_[_0x395b('0x5e')](_0x581396,_0x395b('0x60')),'role':'agent'},'attributes':['id',_0x395b('0x31'),'faxPause',_0x395b('0x61'),_0x395b('0x62')]});}})['then'](function(_0x30738a){if(_0x30738a){return{'count':_0x30738a[_0x395b('0x22')],'rows':_[_0x395b('0x5e')](_0x30738a[_0x395b('0x63')],function(_0x3c4ec9){return{'membername':_0x3c4ec9[_0x395b('0x31')],'UserId':_0x3c4ec9['id'],'queue_name':_0x111968[_0x395b('0x31')],'FaxQueueId':_0x111968['id'],'interface':util[_0x395b('0x64')]('%s/%s',_0x395b('0x65'),_0x3c4ec9['name']),'penalty':0x0,'paused':_0x3c4ec9['faxPause'],'createdAt':_0x3c4ec9[_0x395b('0x62')],'updatedAt':_0x3c4ec9[_0x395b('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x395b('0x2a')](respondWithFilteredResult(_0x50f7fc,_0x40ffd0))[_0x395b('0x49')](handleError(_0x50f7fc,null));};exports[_0x395b('0x66')]=function(_0x32a9f3,_0x285e8b,_0x277902){var _0x2fab87={};var _0x1aecaa={};var _0x282e42;var _0x21c34e;return db['FaxQueue'][_0x395b('0x5a')]({'where':{'id':_0x32a9f3[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x285e8b,null))[_0x395b('0x2a')](function(_0x46b6e8){if(_0x46b6e8){_0x282e42=_0x46b6e8;_0x1aecaa[_0x395b('0x36')]=_[_0x395b('0x37')](db[_0x395b('0x67')][_0x395b('0x4c')]);_0x1aecaa['query']=_[_0x395b('0x37')](_0x32a9f3[_0x395b('0x38')]);_0x1aecaa[_0x395b('0x39')]=_['intersection'](_0x1aecaa['model'],_0x1aecaa[_0x395b('0x38')]);_0x2fab87['attributes']=_[_0x395b('0x3a')](_0x1aecaa[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x32a9f3[_0x395b('0x38')][_0x395b('0x3c')]));_0x2fab87[_0x395b('0x3b')]=_0x2fab87[_0x395b('0x3b')][_0x395b('0x4d')]?_0x2fab87[_0x395b('0x3b')]:_0x1aecaa[_0x395b('0x36')];_0x2fab87['order']=qs[_0x395b('0x3f')](_0x32a9f3[_0x395b('0x38')][_0x395b('0x3f')]);_0x2fab87[_0x395b('0x40')]=qs['filters'](_[_0x395b('0x68')](_0x32a9f3[_0x395b('0x38')],_0x1aecaa[_0x395b('0x39')]));if(_0x32a9f3[_0x395b('0x38')][_0x395b('0x43')]){_0x2fab87[_0x395b('0x40')]=_[_0x395b('0x41')](_0x2fab87['where'],{'$or':_[_0x395b('0x5e')](_0x2fab87['attributes'],function(_0x5ad22e){var _0x5c85e9={};_0x5c85e9[_0x5ad22e]={'$like':'%'+_0x32a9f3[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x5c85e9;})});}_0x2fab87=_[_0x395b('0x41')]({},_0x2fab87,_0x32a9f3['options']);return _0x282e42['getTeams'](_0x2fab87);}})['then'](function(_0x3a1d09){if(_0x3a1d09){_0x21c34e=_0x3a1d09[_0x395b('0x4d')];if(!_0x32a9f3['query']['hasOwnProperty'](_0x395b('0x5c'))){_0x2fab87['limit']=qs[_0x395b('0x21')](_0x32a9f3['query'][_0x395b('0x21')]);_0x2fab87[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x32a9f3['query']['offset']);}return _0x282e42[_0x395b('0x66')](_0x2fab87);}})[_0x395b('0x2a')](function(_0x5f4e48){if(_0x5f4e48){return _0x5f4e48?{'count':_0x21c34e,'rows':_0x5f4e48}:null;}})[_0x395b('0x2a')](respondWithResult(_0x285e8b,null))['catch'](handleError(_0x285e8b,null));};exports[_0x395b('0x69')]=function(_0x540079,_0x41853c,_0x3b3c0d){var _0x192ed2=_0x540079[_0x395b('0x50')][_0x395b('0x6a')];return db[_0x395b('0x67')][_0x395b('0x48')]({'where':{'id':_0x192ed2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x395b('0x6b'),'attributes':['id',_0x395b('0x31'),_0x395b('0x6c'),_0x395b('0x6d'),'interface'],'raw':!![]}]})[_0x395b('0x2a')](function(_0xbab128){if(_0xbab128){var _0x8007cf=_[_0x395b('0x6e')](_0xbab128,function(_0x5de422){var _0x84bcd=_0x5de422[_0x395b('0x2c')]({'plain':!![]});return _0x84bcd[_0x395b('0x6b')];});return db['FaxQueue'][_0x395b('0x4e')]({'where':{'id':_0x540079[_0x395b('0x4b')]['id']}})['then'](function(_0x4754f1){return db[_0x395b('0x6f')]['transaction'](function(_0x9d2f88){return _0x4754f1['addTeams'](_0x192ed2,{'transaction':_0x9d2f88})[_0x395b('0x2a')](function(){return BPromise['each'](_0x8007cf,function(_0x548f7a){return db[_0x395b('0x5b')]['findOrCreate']({'where':{'UserId':_0x548f7a['id'],'FaxQueueId':_0x540079[_0x395b('0x4b')]['id']},'transaction':_0x9d2f88});});})[_0x395b('0x2a')](function(){_0x8007cf[_0x395b('0x70')](function(_0x4267a5){socket[_0x395b('0x71')]('userFaxQueue:save',{'UserId':_0x4267a5['id'],'FaxQueueId':_0x4754f1['id']});});});});});}})[_0x395b('0x2a')](respondWithStatusCode(_0x41853c,null))['catch'](handleError(_0x41853c,null));};exports['removeTeams']=function(_0xfb39aa,_0x13ab4c,_0xf90d8c){return db[_0x395b('0x67')][_0x395b('0x48')]({'where':{'id':_0xfb39aa['query'][_0x395b('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x395b('0x72')],'as':_0x395b('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x395b('0x2a')](handleEntityNotFound(_0x13ab4c,null))[_0x395b('0x2a')](function(_0x302f48){var _0x34395b=_[_0x395b('0x5e')](_0x302f48,'id');var _0x226dc8=[];var _0x1ffcc8=[];var _0x3552bf=squel[_0x395b('0x73')]();_0x3552bf[_0x395b('0x74')](_0x395b('0x75'))[_0x395b('0x76')](_0x395b('0x77'),'tq')[_0x395b('0x78')]('user_has_teams','ut',_0x395b('0x79'))['where']('FaxQueueId\x20=\x20?',_0xfb39aa[_0x395b('0x4b')]['id']);for(var _0x597ac4=0x0;_0x597ac4<_0x302f48[_0x395b('0x4d')];_0x597ac4+=0x1){let _0x643ddf=_0x302f48[_0x597ac4];for(var _0x26e369=0x0;_0x26e369<_0x643ddf['Agents'][_0x395b('0x4d')];_0x26e369+=0x1){let _0x3af6c1=_0x643ddf['Agents'][_0x26e369];var _0x1351c7=_0x3552bf[_0x395b('0x7a')]();_0x1351c7[_0x395b('0x40')](_0x395b('0x7b'),_0x3af6c1['id']);_0x1ffcc8['push'](db[_0x395b('0x6f')][_0x395b('0x38')](_0x1351c7[_0x395b('0x7c')](),{'type':db[_0x395b('0x6f')][_0x395b('0x7d')][_0x395b('0x7e')]})[_0x395b('0x2a')](function(_0x5109cc){if(_0x5109cc['length']===0x1){return _0x3af6c1['id'];}else{var _0x4f621e=_[_0x395b('0x7f')](_[_0x395b('0x5e')](_0x5109cc,_0x395b('0x80')),function(_0x141872){return _[_0x395b('0x81')](_0x34395b,_0x141872);});if(_0x4f621e){return _0x3af6c1['id'];}}}));}}return BPromise[_0x395b('0x82')](_0x1ffcc8)[_0x395b('0x2a')](function(_0x26f514){_0x226dc8=_(_0x226dc8)[_0x395b('0x83')](_0x26f514)['compact']()[_0x395b('0x84')]();return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0xfb39aa['params']['id']}})['then'](function(_0x1d248e){return db[_0x395b('0x6f')][_0x395b('0x85')](function(_0x3c98f1){return _0x1d248e[_0x395b('0x86')](_0xfb39aa['query']['ids'],{'transaction':_0x3c98f1})[_0x395b('0x2a')](function(){if(!_[_0x395b('0x87')](_0x226dc8)){return _0x1d248e[_0x395b('0x88')](_0x226dc8,{'transaction':_0x3c98f1});}})[_0x395b('0x2a')](function(){_0x226dc8[_0x395b('0x70')](function(_0x2d1342){socket[_0x395b('0x71')](_0x395b('0x89'),{'UserId':_0x2d1342,'FaxQueueId':_0x1d248e['id']});});});});});});})[_0x395b('0x2a')](respondWithStatusCode(_0x13ab4c,null))[_0x395b('0x49')](handleError(_0x13ab4c,null));};exports[_0x395b('0x8a')]=function(_0x5a021f,_0x2185f1,_0x407b95){return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x5a021f[_0x395b('0x4b')]['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0x2185f1,null))['then'](function(_0x51d8d3){if(_0x51d8d3){return _0x51d8d3[_0x395b('0x8a')](_0x5a021f['body'][_0x395b('0x6a')],_[_0x395b('0x8b')](_0x5a021f[_0x395b('0x50')],[_0x395b('0x6a'),'id'])||{})['spread'](function(_0x33f175){for(var _0x3613e8=0x0;_0x3613e8<_0x5a021f[_0x395b('0x50')][_0x395b('0x6a')][_0x395b('0x4d')];_0x3613e8+=0x1){socket['emit'](_0x395b('0x8c'),{'UserId':Number(_0x5a021f[_0x395b('0x50')][_0x395b('0x6a')][_0x3613e8]),'FaxQueueId':Number(_0x5a021f[_0x395b('0x4b')]['id'])});}return _0x33f175;});}})['then'](respondWithResult(_0x2185f1,null))['catch'](handleError(_0x2185f1,null));};exports[_0x395b('0x88')]=function(_0x2f3ce7,_0x143719,_0x615744){return db[_0x395b('0x47')][_0x395b('0x4e')]({'where':{'id':_0x2f3ce7[_0x395b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x143719,null))[_0x395b('0x2a')](function(_0x473901){if(_0x473901){return _0x473901[_0x395b('0x88')](_0x2f3ce7['query'][_0x395b('0x6a')])[_0x395b('0x2a')](function(){if(_[_0x395b('0x8d')](_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')])){for(var _0x4a0674=0x0;_0x4a0674<_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')][_0x395b('0x4d')];_0x4a0674+=0x1){socket[_0x395b('0x71')](_0x395b('0x89'),{'UserId':Number(_0x2f3ce7['query'][_0x395b('0x6a')][_0x4a0674]),'FaxQueueId':Number(_0x2f3ce7['params']['id'])});}}else{socket[_0x395b('0x71')]('userFaxQueue:remove',{'UserId':Number(_0x2f3ce7[_0x395b('0x38')][_0x395b('0x6a')]),'FaxQueueId':Number(_0x2f3ce7[_0x395b('0x4b')]['id'])});}});}})[_0x395b('0x2a')](respondWithStatusCode(_0x143719,null))[_0x395b('0x49')](handleError(_0x143719,null));};exports[_0x395b('0x8e')]=function(_0x27e93b,_0xc77f7,_0x545e40){var _0x4f070a={};var _0x398d74={};var _0x14bf9c;var _0x176916;return db[_0x395b('0x47')][_0x395b('0x5a')]({'where':{'id':_0x27e93b['params']['id']}})[_0x395b('0x2a')](handleEntityNotFound(_0xc77f7,null))[_0x395b('0x2a')](function(_0x3b81e4){if(_0x3b81e4){_0x14bf9c=_0x3b81e4;_0x398d74[_0x395b('0x36')]=_[_0x395b('0x37')](db[_0x395b('0x72')][_0x395b('0x4c')]);_0x398d74[_0x395b('0x38')]=_['keys'](_0x27e93b[_0x395b('0x38')]);_0x398d74[_0x395b('0x39')]=_[_0x395b('0x3a')](_0x398d74[_0x395b('0x36')],_0x398d74[_0x395b('0x38')]);_0x4f070a[_0x395b('0x3b')]=_['intersection'](_0x398d74[_0x395b('0x36')],qs[_0x395b('0x3c')](_0x27e93b['query'][_0x395b('0x3c')]));_0x4f070a[_0x395b('0x3b')]=_0x4f070a['attributes'][_0x395b('0x4d')]?_0x4f070a[_0x395b('0x3b')]:_0x398d74[_0x395b('0x36')];_0x4f070a['order']=qs[_0x395b('0x3f')](_0x27e93b[_0x395b('0x38')][_0x395b('0x3f')]);_0x4f070a[_0x395b('0x40')]=qs['filters'](_[_0x395b('0x68')](_0x27e93b[_0x395b('0x38')],_0x398d74[_0x395b('0x39')]));if(_0x27e93b[_0x395b('0x38')]['filter']){_0x4f070a['where']=_[_0x395b('0x41')](_0x4f070a['where'],{'$or':_[_0x395b('0x5e')](_0x4f070a['attributes'],function(_0x3757b9){var _0x345f40={};_0x345f40[_0x3757b9]={'$like':'%'+_0x27e93b[_0x395b('0x38')][_0x395b('0x43')]+'%'};return _0x345f40;})});}_0x4f070a=_[_0x395b('0x41')]({},_0x4f070a,_0x27e93b['options']);return _0x14bf9c[_0x395b('0x8e')](_0x4f070a);}})[_0x395b('0x2a')](function(_0x54527b){if(_0x54527b){_0x176916=_0x54527b[_0x395b('0x4d')];if(!_0x27e93b[_0x395b('0x38')]['hasOwnProperty'](_0x395b('0x5c'))){_0x4f070a[_0x395b('0x21')]=qs['limit'](_0x27e93b[_0x395b('0x38')][_0x395b('0x21')]);_0x4f070a[_0x395b('0x1f')]=qs[_0x395b('0x1f')](_0x27e93b[_0x395b('0x38')][_0x395b('0x1f')]);}return _0x14bf9c['getAgents'](_0x4f070a);}})[_0x395b('0x2a')](function(_0x345712){if(_0x345712){return _0x345712?{'count':_0x176916,'rows':_0x345712}:null;}})[_0x395b('0x2a')](respondWithResult(_0xc77f7,null))[_0x395b('0x49')](handleError(_0xc77f7,null));};
\ No newline at end of file
+var _0x0eff=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','order','FaxQueueId','findAll','UserId','agent','faxPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','Team','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','User','select','tq.TeamId','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','all','union','value','isEmpty','removeAgents','userFaxQueue:remove','omit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','FaxQueues','UserProfileResource','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','model'];(function(_0x42e034,_0x5ecdef){var _0x1d3d70=function(_0x800c3c){while(--_0x800c3c){_0x42e034['push'](_0x42e034['shift']());}};_0x1d3d70(++_0x5ecdef);}(_0x0eff,0x16f));var _0xf0ef=function(_0x7729b1,_0x468322){_0x7729b1=_0x7729b1-0x0;var _0x349504=_0x0eff[_0x7729b1];return _0x349504;};'use strict';var emlformat=require(_0xf0ef('0x0'));var rimraf=require(_0xf0ef('0x1'));var zipdir=require(_0xf0ef('0x2'));var jsonpatch=require(_0xf0ef('0x3'));var rp=require(_0xf0ef('0x4'));var moment=require(_0xf0ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf0ef('0x6'));var util=require(_0xf0ef('0x7'));var path=require(_0xf0ef('0x8'));var sox=require(_0xf0ef('0x9'));var csv=require(_0xf0ef('0xa'));var ejs=require(_0xf0ef('0xb'));var fs=require('fs');var fs_extra=require(_0xf0ef('0xc'));var _=require(_0xf0ef('0xd'));var squel=require(_0xf0ef('0xe'));var crypto=require(_0xf0ef('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xf0ef('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf0ef('0x11'));var Redis=require(_0xf0ef('0x12'));var authService=require(_0xf0ef('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xf0ef('0x14'));var hardwareService=require(_0xf0ef('0x15'));var logger=require(_0xf0ef('0x16'))(_0xf0ef('0x17'));var utils=require(_0xf0ef('0x18'));var config=require(_0xf0ef('0x19'));var licenseUtil=require(_0xf0ef('0x1a'));var db=require(_0xf0ef('0x1b'))['db'];config[_0xf0ef('0x1c')]=_[_0xf0ef('0x1d')](config[_0xf0ef('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xf0ef('0x1e'))(new Redis(config['redis']));require(_0xf0ef('0x1f'))[_0xf0ef('0x20')](socket);function respondWithStatusCode(_0x281770,_0x152aa5){_0x152aa5=_0x152aa5||0xcc;return function(_0x1b2621){if(_0x1b2621){return _0x281770[_0xf0ef('0x21')](_0x152aa5);}return _0x281770[_0xf0ef('0x22')](_0x152aa5)[_0xf0ef('0x23')]();};}function respondWithResult(_0x5847ac,_0x35156d){_0x35156d=_0x35156d||0xc8;return function(_0x5c65f6){if(_0x5c65f6){return _0x5847ac[_0xf0ef('0x22')](_0x35156d)[_0xf0ef('0x24')](_0x5c65f6);}};}function respondWithFilteredResult(_0x39c7c0,_0x111375){return function(_0x18fe0d){if(_0x18fe0d){var _0x216b0c=typeof _0x111375[_0xf0ef('0x25')]===_0xf0ef('0x26')&&typeof _0x111375[_0xf0ef('0x27')]===_0xf0ef('0x26');var _0x429027=_0x18fe0d[_0xf0ef('0x28')];var _0x210b86=_0x216b0c?0x0:_0x111375['offset'];var _0x186a3a=_0x216b0c?_0x18fe0d['count']:_0x111375[_0xf0ef('0x25')]+_0x111375['limit'];var _0xa40bbf;if(_0x186a3a>=_0x429027){_0x186a3a=_0x429027;_0xa40bbf=0xc8;}else{_0xa40bbf=0xce;}_0x39c7c0[_0xf0ef('0x22')](_0xa40bbf);return _0x39c7c0[_0xf0ef('0x29')]('Content-Range',_0x210b86+'-'+_0x186a3a+'/'+_0x429027)[_0xf0ef('0x24')](_0x18fe0d);}return null;};}function patchUpdates(_0x42e4ca){return function(_0x249d01){try{jsonpatch[_0xf0ef('0x2a')](_0x249d01,_0x42e4ca,!![]);}catch(_0x4aedac){return BPromise[_0xf0ef('0x2b')](_0x4aedac);}return _0x249d01[_0xf0ef('0x2c')]();};}function saveUpdates(_0x2f258a,_0x5d2fd0){return function(_0x141604){if(_0x141604){return _0x141604[_0xf0ef('0x2d')](_0x2f258a)['then'](function(_0x321a4f){return _0x321a4f;});}return null;};}function removeEntity(_0xaca2ba,_0x3fd6bd){return function(_0x31c2eb){if(_0x31c2eb){return _0x31c2eb['destroy']()[_0xf0ef('0x2e')](function(){var _0x41606d=_0x31c2eb[_0xf0ef('0x2f')]({'plain':!![]});var _0xc9fa6c=_0xf0ef('0x30');return db[_0xf0ef('0x31')]['destroy']({'where':{'type':_0xc9fa6c,'resourceId':_0x41606d['id']}})['then'](function(){return _0x31c2eb;});})[_0xf0ef('0x2e')](function(){_0xaca2ba[_0xf0ef('0x22')](0xcc)[_0xf0ef('0x23')]();});}};}function handleEntityNotFound(_0x400859,_0x4c270f){return function(_0x3ce7aa){if(!_0x3ce7aa){_0x400859[_0xf0ef('0x21')](0x194);}return _0x3ce7aa;};}function handleError(_0x1f89ea,_0x104476){_0x104476=_0x104476||0x1f4;return function(_0x4a061f){logger[_0xf0ef('0x32')](_0x4a061f[_0xf0ef('0x33')]);if(_0x4a061f[_0xf0ef('0x34')]){delete _0x4a061f[_0xf0ef('0x34')];}_0x1f89ea['status'](_0x104476)[_0xf0ef('0x35')](_0x4a061f);};}exports[_0xf0ef('0x36')]=function(_0x2343b8,_0x365027){var _0x45f18c={},_0x435a7c={},_0x27bbfc={'count':0x0,'rows':[]};var _0x5cf758=_[_0xf0ef('0x37')](db[_0xf0ef('0x38')][_0xf0ef('0x39')],function(_0xe6da0b){return{'name':_0xe6da0b[_0xf0ef('0x3a')],'type':_0xe6da0b[_0xf0ef('0x3b')][_0xf0ef('0x3c')]};});_0x435a7c[_0xf0ef('0x3d')]=_[_0xf0ef('0x37')](_0x5cf758,_0xf0ef('0x34'));_0x435a7c[_0xf0ef('0x3e')]=_[_0xf0ef('0x3f')](_0x2343b8[_0xf0ef('0x3e')]);_0x435a7c[_0xf0ef('0x40')]=_[_0xf0ef('0x41')](_0x435a7c[_0xf0ef('0x3d')],_0x435a7c[_0xf0ef('0x3e')]);_0x45f18c[_0xf0ef('0x42')]=_[_0xf0ef('0x41')](_0x435a7c['model'],qs[_0xf0ef('0x43')](_0x2343b8[_0xf0ef('0x3e')][_0xf0ef('0x43')]));_0x45f18c[_0xf0ef('0x42')]=_0x45f18c[_0xf0ef('0x42')][_0xf0ef('0x44')]?_0x45f18c[_0xf0ef('0x42')]:_0x435a7c[_0xf0ef('0x3d')];if(!_0x2343b8[_0xf0ef('0x3e')][_0xf0ef('0x45')](_0xf0ef('0x46'))){_0x45f18c[_0xf0ef('0x27')]=qs[_0xf0ef('0x27')](_0x2343b8['query'][_0xf0ef('0x27')]);_0x45f18c[_0xf0ef('0x25')]=qs[_0xf0ef('0x25')](_0x2343b8[_0xf0ef('0x3e')]['offset']);}_0x45f18c['order']=qs[_0xf0ef('0x47')](_0x2343b8[_0xf0ef('0x3e')][_0xf0ef('0x47')]);_0x45f18c['where']=qs[_0xf0ef('0x40')](_[_0xf0ef('0x48')](_0x2343b8[_0xf0ef('0x3e')],_0x435a7c[_0xf0ef('0x40')]),_0x5cf758);if(_0x2343b8[_0xf0ef('0x3e')][_0xf0ef('0x49')]){_0x45f18c['where']=_[_0xf0ef('0x4a')](_0x45f18c[_0xf0ef('0x4b')],{'$or':_[_0xf0ef('0x37')](_0x5cf758,function(_0x347a23){if(_0x347a23[_0xf0ef('0x3b')]!==_0xf0ef('0x4c')){var _0x52cd95={};_0x52cd95[_0x347a23['name']]={'$like':'%'+_0x2343b8['query'][_0xf0ef('0x49')]+'%'};return _0x52cd95;}})});}_0x45f18c=_[_0xf0ef('0x4a')]({},_0x45f18c,_0x2343b8[_0xf0ef('0x4d')]);var _0x30b674={'where':_0x45f18c['where']};return db[_0xf0ef('0x38')]['count'](_0x30b674)['then'](function(_0x197f85){_0x27bbfc[_0xf0ef('0x28')]=_0x197f85;if(_0x2343b8['query'][_0xf0ef('0x4e')]){_0x45f18c[_0xf0ef('0x4f')]=[{'all':!![]}];}return db[_0xf0ef('0x38')]['findAll'](_0x45f18c);})[_0xf0ef('0x2e')](function(_0x552d5d){_0x27bbfc['rows']=_0x552d5d;return _0x27bbfc;})['then'](respondWithFilteredResult(_0x365027,_0x45f18c))[_0xf0ef('0x50')](handleError(_0x365027,null));};exports[_0xf0ef('0x51')]=function(_0x502134,_0x1942e3){var _0x3e9c71={'raw':!![],'where':{'id':_0x502134[_0xf0ef('0x52')]['id']}},_0x561103={};_0x561103[_0xf0ef('0x3d')]=_[_0xf0ef('0x3f')](db[_0xf0ef('0x38')]['rawAttributes']);_0x561103[_0xf0ef('0x3e')]=_[_0xf0ef('0x3f')](_0x502134[_0xf0ef('0x3e')]);_0x561103[_0xf0ef('0x40')]=_[_0xf0ef('0x41')](_0x561103[_0xf0ef('0x3d')],_0x561103[_0xf0ef('0x3e')]);_0x3e9c71[_0xf0ef('0x42')]=_['intersection'](_0x561103['model'],qs[_0xf0ef('0x43')](_0x502134[_0xf0ef('0x3e')][_0xf0ef('0x43')]));_0x3e9c71[_0xf0ef('0x42')]=_0x3e9c71[_0xf0ef('0x42')][_0xf0ef('0x44')]?_0x3e9c71['attributes']:_0x561103[_0xf0ef('0x3d')];if(_0x502134['query'][_0xf0ef('0x4e')]){_0x3e9c71['include']=[{'all':!![]}];}_0x3e9c71=_[_0xf0ef('0x4a')]({},_0x3e9c71,_0x502134[_0xf0ef('0x4d')]);return db[_0xf0ef('0x38')][_0xf0ef('0x53')](_0x3e9c71)[_0xf0ef('0x2e')](handleEntityNotFound(_0x1942e3,null))[_0xf0ef('0x2e')](respondWithResult(_0x1942e3,null))[_0xf0ef('0x50')](handleError(_0x1942e3,null));};exports[_0xf0ef('0x54')]=function(_0x23053e,_0x9e7daa){return db[_0xf0ef('0x38')]['create'](_0x23053e[_0xf0ef('0x55')],{})['then'](function(_0x26589a){var _0x260fb6=_0x23053e['user'][_0xf0ef('0x2f')]({'plain':!![]});if(!_0x260fb6)throw new Error(_0xf0ef('0x56'));if(_0x260fb6[_0xf0ef('0x57')]===_0xf0ef('0x58')){var _0x1c8b0=_0x26589a[_0xf0ef('0x2f')]({'plain':!![]});var _0x7c4fba=_0xf0ef('0x30');return db[_0xf0ef('0x59')][_0xf0ef('0x53')]({'where':{'name':_0x7c4fba,'userProfileId':_0x260fb6['userProfileId']},'raw':!![]})[_0xf0ef('0x2e')](function(_0x4e6c7f){if(_0x4e6c7f&&_0x4e6c7f[_0xf0ef('0x5a')]===0x0){return db[_0xf0ef('0x31')][_0xf0ef('0x54')]({'name':_0x1c8b0[_0xf0ef('0x34')],'resourceId':_0x1c8b0['id'],'type':_0x4e6c7f[_0xf0ef('0x34')],'sectionId':_0x4e6c7f['id']},{})[_0xf0ef('0x2e')](function(){return _0x26589a;});}else{return _0x26589a;}})[_0xf0ef('0x50')](function(_0x3f1747){logger[_0xf0ef('0x32')](_0xf0ef('0x5b'),_0x3f1747);throw _0x3f1747;});}return _0x26589a;})[_0xf0ef('0x2e')](respondWithResult(_0x9e7daa,0xc9))[_0xf0ef('0x50')](handleError(_0x9e7daa,null));};exports[_0xf0ef('0x2d')]=function(_0x5c4ba2,_0x289c5f){if(_0x5c4ba2[_0xf0ef('0x55')]['id']){delete _0x5c4ba2[_0xf0ef('0x55')]['id'];}return db[_0xf0ef('0x38')][_0xf0ef('0x53')]({'where':{'id':_0x5c4ba2[_0xf0ef('0x52')]['id']}})[_0xf0ef('0x2e')](handleEntityNotFound(_0x289c5f,null))[_0xf0ef('0x2e')](saveUpdates(_0x5c4ba2[_0xf0ef('0x55')],null))[_0xf0ef('0x2e')](respondWithResult(_0x289c5f,null))['catch'](handleError(_0x289c5f,null));};exports[_0xf0ef('0x5c')]=function(_0x5a065f,_0x7dfacf){return db[_0xf0ef('0x38')][_0xf0ef('0x53')]({'where':{'id':_0x5a065f[_0xf0ef('0x52')]['id']}})['then'](handleEntityNotFound(_0x7dfacf,null))[_0xf0ef('0x2e')](removeEntity(_0x7dfacf,null))['catch'](handleError(_0x7dfacf,null));};exports['describe']=function(_0x263017,_0x388df2){return db[_0xf0ef('0x38')][_0xf0ef('0x5d')]()[_0xf0ef('0x2e')](respondWithResult(_0x388df2,null))['catch'](handleError(_0x388df2,null));};exports[_0xf0ef('0x5e')]=function(_0x438e26,_0xb5e07b,_0x133387){var _0x44f781={'raw':!![],'where':{}},_0x2d622a={},_0x291068;return db[_0xf0ef('0x38')][_0xf0ef('0x5f')]({'where':{'id':_0x438e26['params']['id']}})[_0xf0ef('0x2e')](handleEntityNotFound(_0xb5e07b,null))[_0xf0ef('0x2e')](function(_0xb2caba){if(_0xb2caba){_0x291068=_0xb2caba[_0xf0ef('0x2f')]({'plain':!![]});_0x2d622a[_0xf0ef('0x3d')]=_[_0xf0ef('0x3f')](db['UserFaxQueue']['rawAttributes']);_0x2d622a[_0xf0ef('0x3e')]=_[_0xf0ef('0x3f')](_0x438e26[_0xf0ef('0x3e')]);_0x2d622a[_0xf0ef('0x40')]=_[_0xf0ef('0x41')](_0x2d622a[_0xf0ef('0x3d')],_0x2d622a[_0xf0ef('0x3e')]);_0x44f781[_0xf0ef('0x42')]=_[_0xf0ef('0x41')](_0x2d622a['model'],qs['fields'](_0x438e26['query'][_0xf0ef('0x43')]));_0x44f781[_0xf0ef('0x42')]=_0x44f781[_0xf0ef('0x42')][_0xf0ef('0x44')]?_0x44f781[_0xf0ef('0x42')]:_0x2d622a[_0xf0ef('0x3d')];if(!_0x438e26[_0xf0ef('0x3e')]['hasOwnProperty']('nolimit')){_0x44f781[_0xf0ef('0x27')]=qs[_0xf0ef('0x27')](_0x438e26[_0xf0ef('0x3e')]['limit']);_0x44f781[_0xf0ef('0x25')]=qs[_0xf0ef('0x25')](_0x438e26['query'][_0xf0ef('0x25')]);}_0x44f781[_0xf0ef('0x60')]=qs[_0xf0ef('0x47')](_0x438e26[_0xf0ef('0x3e')][_0xf0ef('0x47')]);_0x44f781[_0xf0ef('0x4b')]=qs['filters'](_[_0xf0ef('0x48')](_0x438e26[_0xf0ef('0x3e')],_0x2d622a[_0xf0ef('0x40')]));_0x44f781[_0xf0ef('0x4b')][_0xf0ef('0x61')]=_0xb2caba['id'];if(_0x438e26[_0xf0ef('0x3e')][_0xf0ef('0x49')]){_0x44f781[_0xf0ef('0x4b')]=_['merge'](_0x44f781[_0xf0ef('0x4b')],{'$or':_[_0xf0ef('0x37')](_0x44f781[_0xf0ef('0x42')],function(_0x3a7bc1){var _0xee4f42={};_0xee4f42[_0x3a7bc1]={'$like':'%'+_0x438e26[_0xf0ef('0x3e')]['filter']+'%'};return _0xee4f42;})});}_0x44f781=_[_0xf0ef('0x4a')]({},_0x44f781,_0x438e26[_0xf0ef('0x4d')]);return db['UserFaxQueue'][_0xf0ef('0x62')](_0x44f781);}})['then'](function(_0x52bd0b){if(_0x52bd0b){return db['User']['findAndCountAll']({'where':{'id':_[_0xf0ef('0x37')](_0x52bd0b,_0xf0ef('0x63')),'role':_0xf0ef('0x64')},'attributes':['id',_0xf0ef('0x34'),_0xf0ef('0x65'),_0xf0ef('0x66'),_0xf0ef('0x67')]});}})['then'](function(_0x42ca51){if(_0x42ca51){return{'count':_0x42ca51[_0xf0ef('0x28')],'rows':_[_0xf0ef('0x37')](_0x42ca51[_0xf0ef('0x68')],function(_0x504f35){return{'membername':_0x504f35['name'],'UserId':_0x504f35['id'],'queue_name':_0x291068['name'],'FaxQueueId':_0x291068['id'],'interface':util[_0xf0ef('0x69')](_0xf0ef('0x6a'),'SIP',_0x504f35[_0xf0ef('0x34')]),'penalty':0x0,'paused':_0x504f35[_0xf0ef('0x65')],'createdAt':_0x504f35[_0xf0ef('0x67')],'updatedAt':_0x504f35[_0xf0ef('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf0ef('0x2e')](respondWithFilteredResult(_0xb5e07b,_0x44f781))[_0xf0ef('0x50')](handleError(_0xb5e07b,null));};exports[_0xf0ef('0x6b')]=function(_0x3f6882,_0x265300,_0x516f63){var _0xc25a41={};var _0x32460c={};var _0x22d8a3;var _0x26caa0;return db['FaxQueue'][_0xf0ef('0x5f')]({'where':{'id':_0x3f6882[_0xf0ef('0x52')]['id']}})[_0xf0ef('0x2e')](handleEntityNotFound(_0x265300,null))[_0xf0ef('0x2e')](function(_0x4d9587){if(_0x4d9587){_0x22d8a3=_0x4d9587;_0x32460c[_0xf0ef('0x3d')]=_['keys'](db[_0xf0ef('0x6c')][_0xf0ef('0x39')]);_0x32460c[_0xf0ef('0x3e')]=_[_0xf0ef('0x3f')](_0x3f6882[_0xf0ef('0x3e')]);_0x32460c[_0xf0ef('0x40')]=_[_0xf0ef('0x41')](_0x32460c[_0xf0ef('0x3d')],_0x32460c[_0xf0ef('0x3e')]);_0xc25a41[_0xf0ef('0x42')]=_[_0xf0ef('0x41')](_0x32460c[_0xf0ef('0x3d')],qs['fields'](_0x3f6882[_0xf0ef('0x3e')][_0xf0ef('0x43')]));_0xc25a41[_0xf0ef('0x42')]=_0xc25a41[_0xf0ef('0x42')]['length']?_0xc25a41[_0xf0ef('0x42')]:_0x32460c[_0xf0ef('0x3d')];_0xc25a41[_0xf0ef('0x60')]=qs[_0xf0ef('0x47')](_0x3f6882[_0xf0ef('0x3e')]['sort']);_0xc25a41[_0xf0ef('0x4b')]=qs[_0xf0ef('0x40')](_[_0xf0ef('0x48')](_0x3f6882[_0xf0ef('0x3e')],_0x32460c[_0xf0ef('0x40')]));if(_0x3f6882[_0xf0ef('0x3e')]['filter']){_0xc25a41['where']=_[_0xf0ef('0x4a')](_0xc25a41[_0xf0ef('0x4b')],{'$or':_['map'](_0xc25a41[_0xf0ef('0x42')],function(_0x16d867){var _0xc887bc={};_0xc887bc[_0x16d867]={'$like':'%'+_0x3f6882[_0xf0ef('0x3e')][_0xf0ef('0x49')]+'%'};return _0xc887bc;})});}_0xc25a41=_[_0xf0ef('0x4a')]({},_0xc25a41,_0x3f6882[_0xf0ef('0x4d')]);return _0x22d8a3[_0xf0ef('0x6b')](_0xc25a41);}})[_0xf0ef('0x2e')](function(_0x1a13cb){if(_0x1a13cb){_0x26caa0=_0x1a13cb[_0xf0ef('0x44')];if(!_0x3f6882[_0xf0ef('0x3e')]['hasOwnProperty'](_0xf0ef('0x46'))){_0xc25a41['limit']=qs[_0xf0ef('0x27')](_0x3f6882[_0xf0ef('0x3e')][_0xf0ef('0x27')]);_0xc25a41[_0xf0ef('0x25')]=qs['offset'](_0x3f6882[_0xf0ef('0x3e')][_0xf0ef('0x25')]);}return _0x22d8a3[_0xf0ef('0x6b')](_0xc25a41);}})[_0xf0ef('0x2e')](function(_0x3813d3){if(_0x3813d3){return _0x3813d3?{'count':_0x26caa0,'rows':_0x3813d3}:null;}})[_0xf0ef('0x2e')](respondWithResult(_0x265300,null))[_0xf0ef('0x50')](handleError(_0x265300,null));};exports[_0xf0ef('0x6d')]=function(_0x521c9c,_0x475364,_0x34859d){var _0x6902d0=_0x521c9c[_0xf0ef('0x55')][_0xf0ef('0x6e')];return db[_0xf0ef('0x6c')]['findAll']({'where':{'id':_0x6902d0},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf0ef('0x6f'),'attributes':['id',_0xf0ef('0x34'),_0xf0ef('0x70'),_0xf0ef('0x71'),'interface'],'raw':!![]}]})[_0xf0ef('0x2e')](function(_0x44ae25){if(_0x44ae25){var _0x24183b=_[_0xf0ef('0x72')](_0x44ae25,function(_0x378c17){var _0x3c8dbf=_0x378c17[_0xf0ef('0x2f')]({'plain':!![]});return _0x3c8dbf[_0xf0ef('0x6f')];});return db[_0xf0ef('0x38')][_0xf0ef('0x53')]({'where':{'id':_0x521c9c[_0xf0ef('0x52')]['id']}})[_0xf0ef('0x2e')](function(_0x47534d){return db[_0xf0ef('0x73')][_0xf0ef('0x74')](function(_0x2102df){return _0x47534d['addTeams'](_0x6902d0,{'transaction':_0x2102df})[_0xf0ef('0x2e')](function(){return BPromise[_0xf0ef('0x75')](_0x24183b,function(_0x48364c){return db['UserFaxQueue'][_0xf0ef('0x76')]({'where':{'UserId':_0x48364c['id'],'FaxQueueId':_0x521c9c[_0xf0ef('0x52')]['id']},'transaction':_0x2102df});});})[_0xf0ef('0x2e')](function(){_0x24183b[_0xf0ef('0x77')](function(_0x3b2751){socket[_0xf0ef('0x78')]('userFaxQueue:save',{'UserId':_0x3b2751['id'],'FaxQueueId':_0x47534d['id']});});});});});}})['then'](respondWithStatusCode(_0x475364,null))[_0xf0ef('0x50')](handleError(_0x475364,null));};exports[_0xf0ef('0x79')]=function(_0x22fa60,_0x8e2fca,_0x405206){return db[_0xf0ef('0x6c')][_0xf0ef('0x62')]({'where':{'id':_0x22fa60['query'][_0xf0ef('0x6e')]},'attributes':['id'],'include':[{'model':db[_0xf0ef('0x7a')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xf0ef('0x2e')](handleEntityNotFound(_0x8e2fca,null))[_0xf0ef('0x2e')](function(_0x3730c5){var _0x14ce97=_[_0xf0ef('0x37')](_0x3730c5,'id');var _0x3e5064=[];var _0x40220d=[];var _0x32b4ec=squel[_0xf0ef('0x7b')]();_0x32b4ec['field'](_0xf0ef('0x7c'))['from'](_0xf0ef('0x7d'),'tq')[_0xf0ef('0x7e')](_0xf0ef('0x7f'),'ut',_0xf0ef('0x80'))[_0xf0ef('0x4b')](_0xf0ef('0x81'),_0x22fa60[_0xf0ef('0x52')]['id']);for(var _0xbec1c1=0x0;_0xbec1c1<_0x3730c5[_0xf0ef('0x44')];_0xbec1c1+=0x1){let _0x3b3096=_0x3730c5[_0xbec1c1];for(var _0x5a8304=0x0;_0x5a8304<_0x3b3096[_0xf0ef('0x6f')][_0xf0ef('0x44')];_0x5a8304+=0x1){let _0x379835=_0x3b3096[_0xf0ef('0x6f')][_0x5a8304];var _0x221198=_0x32b4ec[_0xf0ef('0x82')]();_0x221198[_0xf0ef('0x4b')](_0xf0ef('0x83'),_0x379835['id']);_0x40220d['push'](db['sequelize'][_0xf0ef('0x3e')](_0x221198['toString'](),{'type':db[_0xf0ef('0x73')][_0xf0ef('0x84')][_0xf0ef('0x85')]})[_0xf0ef('0x2e')](function(_0x491f38){if(_0x491f38[_0xf0ef('0x44')]===0x1){return _0x379835['id'];}else{var _0x26c41a=_['every'](_[_0xf0ef('0x37')](_0x491f38,_0xf0ef('0x86')),function(_0x34b3df){return _['includes'](_0x14ce97,_0x34b3df);});if(_0x26c41a){return _0x379835['id'];}}}));}}return BPromise[_0xf0ef('0x87')](_0x40220d)[_0xf0ef('0x2e')](function(_0xece05){_0x3e5064=_(_0x3e5064)[_0xf0ef('0x88')](_0xece05)['compact']()[_0xf0ef('0x89')]();return db[_0xf0ef('0x38')]['find']({'where':{'id':_0x22fa60[_0xf0ef('0x52')]['id']}})[_0xf0ef('0x2e')](function(_0x56c6f6){return db[_0xf0ef('0x73')][_0xf0ef('0x74')](function(_0x1b991b){return _0x56c6f6[_0xf0ef('0x79')](_0x22fa60[_0xf0ef('0x3e')]['ids'],{'transaction':_0x1b991b})['then'](function(){if(!_[_0xf0ef('0x8a')](_0x3e5064)){return _0x56c6f6[_0xf0ef('0x8b')](_0x3e5064,{'transaction':_0x1b991b});}})[_0xf0ef('0x2e')](function(){_0x3e5064[_0xf0ef('0x77')](function(_0x498712){socket[_0xf0ef('0x78')](_0xf0ef('0x8c'),{'UserId':_0x498712,'FaxQueueId':_0x56c6f6['id']});});});});});});})[_0xf0ef('0x2e')](respondWithStatusCode(_0x8e2fca,null))[_0xf0ef('0x50')](handleError(_0x8e2fca,null));};exports['addAgents']=function(_0x1fd914,_0x2a2061,_0x2692a3){return db[_0xf0ef('0x38')][_0xf0ef('0x53')]({'where':{'id':_0x1fd914['params']['id']}})[_0xf0ef('0x2e')](handleEntityNotFound(_0x2a2061,null))[_0xf0ef('0x2e')](function(_0x1d63d7){if(_0x1d63d7){return _0x1d63d7['addAgents'](_0x1fd914['body']['ids'],_[_0xf0ef('0x8d')](_0x1fd914[_0xf0ef('0x55')],[_0xf0ef('0x6e'),'id'])||{})['spread'](function(_0x82e2c){for(var _0x180a98=0x0;_0x180a98<_0x1fd914[_0xf0ef('0x55')][_0xf0ef('0x6e')][_0xf0ef('0x44')];_0x180a98+=0x1){socket[_0xf0ef('0x78')]('userFaxQueue:save',{'UserId':Number(_0x1fd914[_0xf0ef('0x55')][_0xf0ef('0x6e')][_0x180a98]),'FaxQueueId':Number(_0x1fd914[_0xf0ef('0x52')]['id'])});}return _0x82e2c;});}})[_0xf0ef('0x2e')](respondWithResult(_0x2a2061,null))['catch'](handleError(_0x2a2061,null));};exports['removeAgents']=function(_0x396d65,_0x220f89,_0xcbbcc3){return db['FaxQueue'][_0xf0ef('0x53')]({'where':{'id':_0x396d65[_0xf0ef('0x52')]['id']}})[_0xf0ef('0x2e')](handleEntityNotFound(_0x220f89,null))['then'](function(_0x2d4011){if(_0x2d4011){return _0x2d4011[_0xf0ef('0x8b')](_0x396d65['query'][_0xf0ef('0x6e')])['then'](function(){if(_['isArray'](_0x396d65[_0xf0ef('0x3e')][_0xf0ef('0x6e')])){for(var _0x4618c3=0x0;_0x4618c3<_0x396d65['query'][_0xf0ef('0x6e')][_0xf0ef('0x44')];_0x4618c3+=0x1){socket[_0xf0ef('0x78')](_0xf0ef('0x8c'),{'UserId':Number(_0x396d65['query']['ids'][_0x4618c3]),'FaxQueueId':Number(_0x396d65[_0xf0ef('0x52')]['id'])});}}else{socket[_0xf0ef('0x78')]('userFaxQueue:remove',{'UserId':Number(_0x396d65[_0xf0ef('0x3e')][_0xf0ef('0x6e')]),'FaxQueueId':Number(_0x396d65['params']['id'])});}});}})[_0xf0ef('0x2e')](respondWithStatusCode(_0x220f89,null))[_0xf0ef('0x50')](handleError(_0x220f89,null));};exports[_0xf0ef('0x8e')]=function(_0x37c62a,_0x5b8238,_0x315d04){var _0x2db3e5={};var _0x2e29ae={};var _0x100f29;var _0x48c54a;return db[_0xf0ef('0x38')]['findOne']({'where':{'id':_0x37c62a[_0xf0ef('0x52')]['id']}})['then'](handleEntityNotFound(_0x5b8238,null))['then'](function(_0xe2d738){if(_0xe2d738){_0x100f29=_0xe2d738;_0x2e29ae[_0xf0ef('0x3d')]=_[_0xf0ef('0x3f')](db['User'][_0xf0ef('0x39')]);_0x2e29ae[_0xf0ef('0x3e')]=_[_0xf0ef('0x3f')](_0x37c62a['query']);_0x2e29ae[_0xf0ef('0x40')]=_[_0xf0ef('0x41')](_0x2e29ae[_0xf0ef('0x3d')],_0x2e29ae[_0xf0ef('0x3e')]);_0x2db3e5[_0xf0ef('0x42')]=_['intersection'](_0x2e29ae['model'],qs[_0xf0ef('0x43')](_0x37c62a[_0xf0ef('0x3e')][_0xf0ef('0x43')]));_0x2db3e5['attributes']=_0x2db3e5[_0xf0ef('0x42')]['length']?_0x2db3e5['attributes']:_0x2e29ae['model'];_0x2db3e5[_0xf0ef('0x60')]=qs[_0xf0ef('0x47')](_0x37c62a[_0xf0ef('0x3e')][_0xf0ef('0x47')]);_0x2db3e5[_0xf0ef('0x4b')]=qs['filters'](_[_0xf0ef('0x48')](_0x37c62a['query'],_0x2e29ae[_0xf0ef('0x40')]));if(_0x37c62a[_0xf0ef('0x3e')][_0xf0ef('0x49')]){_0x2db3e5[_0xf0ef('0x4b')]=_[_0xf0ef('0x4a')](_0x2db3e5[_0xf0ef('0x4b')],{'$or':_[_0xf0ef('0x37')](_0x2db3e5[_0xf0ef('0x42')],function(_0x5308d1){var _0x1f9716={};_0x1f9716[_0x5308d1]={'$like':'%'+_0x37c62a['query'][_0xf0ef('0x49')]+'%'};return _0x1f9716;})});}_0x2db3e5=_[_0xf0ef('0x4a')]({},_0x2db3e5,_0x37c62a[_0xf0ef('0x4d')]);return _0x100f29[_0xf0ef('0x8e')](_0x2db3e5);}})[_0xf0ef('0x2e')](function(_0x1857ad){if(_0x1857ad){_0x48c54a=_0x1857ad[_0xf0ef('0x44')];if(!_0x37c62a[_0xf0ef('0x3e')][_0xf0ef('0x45')](_0xf0ef('0x46'))){_0x2db3e5[_0xf0ef('0x27')]=qs['limit'](_0x37c62a['query'][_0xf0ef('0x27')]);_0x2db3e5[_0xf0ef('0x25')]=qs[_0xf0ef('0x25')](_0x37c62a['query'][_0xf0ef('0x25')]);}return _0x100f29[_0xf0ef('0x8e')](_0x2db3e5);}})[_0xf0ef('0x2e')](function(_0x36bbf1){if(_0x36bbf1){return _0x36bbf1?{'count':_0x48c54a,'rows':_0x36bbf1}:null;}})[_0xf0ef('0x2e')](respondWithResult(_0x5b8238,null))[_0xf0ef('0x50')](handleError(_0x5b8238,null));};
\ No newline at end of file
index 700fa22..689227a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca8=['emit','hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','setMaxListeners','update','remove'];(function(_0x4df937,_0x40b86c){var _0x2e2e51=function(_0x293584){while(--_0x293584){_0x4df937['push'](_0x4df937['shift']());}};_0x2e2e51(++_0x40b86c);}(_0x6ca8,0x136));var _0x86ca=function(_0x26194f,_0x2f47f3){_0x26194f=_0x26194f-0x0;var _0x335df3=_0x6ca8[_0x26194f];return _0x335df3;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x86ca('0x0'))['db'][_0x86ca('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x86ca('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x86ca('0x3'),'afterDestroy':_0x86ca('0x4')};function emitEvent(_0x1694e4){return function(_0x5a2160,_0x4d6671,_0x324549){FaxQueueEvents[_0x86ca('0x5')](_0x1694e4+':'+_0x5a2160['id'],_0x5a2160);FaxQueueEvents[_0x86ca('0x5')](_0x1694e4,_0x5a2160);_0x324549(null);};}for(var e in events){if(events[_0x86ca('0x6')](e)){var event=events[e];FaxQueue[_0x86ca('0x7')](e,emitEvent(event));}}module[_0x86ca('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0xd1af=['../../mysqldb','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x43941d,_0x45fd0d){var _0x27b82a=function(_0x21851e){while(--_0x21851e){_0x43941d['push'](_0x43941d['shift']());}};_0x27b82a(++_0x45fd0d);}(_0xd1af,0x157));var _0xfd1a=function(_0x51991d,_0x18e5a0){_0x51991d=_0x51991d-0x0;var _0x5bc430=_0xd1af[_0x51991d];return _0x5bc430;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xfd1a('0x0'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xfd1a('0x1')](0x0);var events={'afterCreate':_0xfd1a('0x2'),'afterUpdate':'update','afterDestroy':_0xfd1a('0x3')};function emitEvent(_0x47f986){return function(_0x511699,_0x52050c,_0x4a80d1){FaxQueueEvents[_0xfd1a('0x4')](_0x47f986+':'+_0x511699['id'],_0x511699);FaxQueueEvents['emit'](_0x47f986,_0x511699);_0x4a80d1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0xfd1a('0x5')](e,emitEvent(event));}}module[_0xfd1a('0x6')]=FaxQueueEvents;
\ No newline at end of file
index 45634e7..3ead30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0809=['bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment'];(function(_0x2f244b,_0x1c7a9f){var _0x38beea=function(_0x4de55f){while(--_0x4de55f){_0x2f244b['push'](_0x2f244b['shift']());}};_0x38beea(++_0x1c7a9f);}(_0x0809,0xcd));var _0x9080=function(_0x3ba4b5,_0x4f9765){_0x3ba4b5=_0x3ba4b5-0x0;var _0xce9569=_0x0809[_0x3ba4b5];return _0xce9569;};'use strict';var _=require(_0x9080('0x0'));var util=require(_0x9080('0x1'));var logger=require(_0x9080('0x2'))(_0x9080('0x3'));var moment=require(_0x9080('0x4'));var BPromise=require(_0x9080('0x5'));var rp=require(_0x9080('0x6'));var fs=require('fs');var path=require(_0x9080('0x7'));var rimraf=require(_0x9080('0x8'));var config=require(_0x9080('0x9'));var attributes=require(_0x9080('0xa'));module[_0x9080('0xb')]=function(_0x3a89bb,_0x26981a){return _0x3a89bb['define'](_0x9080('0xc'),attributes,{'tableName':_0x9080('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff69=['rimraf','../../config/environment','exports','FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x4c53b1,_0x136f47){var _0x507b98=function(_0x87080e){while(--_0x87080e){_0x4c53b1['push'](_0x4c53b1['shift']());}};_0x507b98(++_0x136f47);}(_0xff69,0xad));var _0x9ff6=function(_0x4cefc3,_0x23f291){_0x4cefc3=_0x4cefc3-0x0;var _0x1cc779=_0xff69[_0x4cefc3];return _0x1cc779;};'use strict';var _=require(_0x9ff6('0x0'));var util=require(_0x9ff6('0x1'));var logger=require(_0x9ff6('0x2'))(_0x9ff6('0x3'));var moment=require(_0x9ff6('0x4'));var BPromise=require(_0x9ff6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9ff6('0x6'));var rimraf=require(_0x9ff6('0x7'));var config=require(_0x9ff6('0x8'));var attributes=require('./faxQueue.attributes');module[_0x9ff6('0x9')]=function(_0x21b3c2,_0x9a3e12){return _0x21b3c2['define'](_0x9ff6('0xa'),attributes,{'tableName':_0x9ff6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef508da..05803c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d8=['stringify','error','code','FaxQueue,\x20%s,\x20%s','message','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','where','attributes','limit','include','map','model','ShowFaxQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','redis','defaults','localhost','register','request','then','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0x4c105a,_0xb47453){var _0x3f36a9=function(_0x5172ec){while(--_0x5172ec){_0x4c105a['push'](_0x4c105a['shift']());}};_0x3f36a9(++_0xb47453);}(_0x79d8,0x14d));var _0x879d=function(_0x459f58,_0x18e32f){_0x459f58=_0x459f58-0x0;var _0x36de05=_0x79d8[_0x459f58];return _0x36de05;};'use strict';var _=require(_0x879d('0x0'));var util=require(_0x879d('0x1'));var moment=require(_0x879d('0x2'));var BPromise=require(_0x879d('0x3'));var rs=require(_0x879d('0x4'));var fs=require('fs');var Redis=require(_0x879d('0x5'));var db=require(_0x879d('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x879d('0x7'));var config=require('../../config/environment');var jayson=require(_0x879d('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x879d('0x9')]=_[_0x879d('0xa')](config[_0x879d('0x9')],{'host':_0x879d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./faxQueue.socket')[_0x879d('0xc')](socket);function respondWithRpcPromise(_0x2866fb,_0x2bc648,_0x620676){return new BPromise(function(_0x741897,_0x411785){return client[_0x879d('0xd')](_0x2866fb,_0x620676)[_0x879d('0xe')](function(_0x4dbd53){logger['info']('FaxQueue,\x20%s,\x20%s',_0x2bc648,_0x879d('0xf'));logger[_0x879d('0x10')](_0x879d('0x11'),_0x2bc648,_0x879d('0xf'),JSON[_0x879d('0x12')](_0x4dbd53));if(_0x4dbd53[_0x879d('0x13')]){if(_0x4dbd53['error'][_0x879d('0x14')]===0x1f4){logger[_0x879d('0x13')](_0x879d('0x15'),_0x2bc648,_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);return _0x411785(_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);}logger['error'](_0x879d('0x15'),_0x2bc648,_0x4dbd53['error'][_0x879d('0x16')]);return _0x741897(_0x4dbd53[_0x879d('0x13')][_0x879d('0x16')]);}else{logger[_0x879d('0x17')](_0x879d('0x15'),_0x2bc648,_0x879d('0xf'));_0x741897(_0x4dbd53[_0x879d('0x18')][_0x879d('0x16')]);}})[_0x879d('0x19')](function(_0x45e2e3){logger[_0x879d('0x13')](_0x879d('0x15'),_0x2bc648,_0x45e2e3);_0x411785(_0x45e2e3);});});}exports[_0x879d('0x1a')]=function(_0x1c7ef2){var _0x265854=this;return new Promise(function(_0x2505c1,_0x3bb0a5){return db[_0x879d('0x1b')][_0x879d('0x1c')]({'raw':_0x1c7ef2[_0x879d('0x1d')]?_0x1c7ef2[_0x879d('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x1e')]||null:null,'attributes':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x1f')]||null:null,'limit':_0x1c7ef2['options']?_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x20')]||null:null,'include':_0x1c7ef2['options']?_0x1c7ef2['options'][_0x879d('0x21')]?_[_0x879d('0x22')](_0x1c7ef2[_0x879d('0x1d')][_0x879d('0x21')],function(_0x4776e7){return{'model':db[_0x4776e7[_0x879d('0x23')]],'as':_0x4776e7['as'],'attributes':_0x4776e7[_0x879d('0x1f')],'include':_0x4776e7[_0x879d('0x21')]?_[_0x879d('0x22')](_0x4776e7[_0x879d('0x21')],function(_0x2b20cb){return{'model':db[_0x2b20cb[_0x879d('0x23')]],'as':_0x2b20cb['as'],'attributes':_0x2b20cb['attributes'],'include':_0x2b20cb[_0x879d('0x21')]?_['map'](_0x2b20cb[_0x879d('0x21')],function(_0x285b96){return{'model':db[_0x285b96[_0x879d('0x23')]],'as':_0x285b96['as'],'attributes':_0x285b96[_0x879d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x879d('0xe')](function(_0x592a88){logger[_0x879d('0x17')](_0x879d('0x1a'),_0x1c7ef2);logger[_0x879d('0x10')](_0x879d('0x1a'),_0x1c7ef2,JSON['stringify'](_0x592a88));_0x2505c1(_0x592a88);})[_0x879d('0x19')](function(_0x22ceba){logger[_0x879d('0x13')](_0x879d('0x1a'),_0x22ceba[_0x879d('0x16')],_0x1c7ef2);_0x3bb0a5(_0x265854[_0x879d('0x13')](0x1f4,_0x22ceba['message']));});});};exports[_0x879d('0x24')]=function(_0x239f3d){var _0x8f3ed3=this;return new Promise(function(_0x445f8d,_0x4fca03){return db[_0x879d('0x1b')][_0x879d('0x25')]({'raw':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')][_0x879d('0x26')]===undefined?!![]:![]:!![],'where':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')][_0x879d('0x1e')]||null:null,'attributes':_0x239f3d[_0x879d('0x1d')]?_0x239f3d[_0x879d('0x1d')]['attributes']||null:null,'include':_0x239f3d[_0x879d('0x1d')]?_0x239f3d['options'][_0x879d('0x21')]?_['map'](_0x239f3d[_0x879d('0x1d')][_0x879d('0x21')],function(_0x362031){return{'model':db[_0x362031[_0x879d('0x23')]],'as':_0x362031['as'],'attributes':_0x362031['attributes'],'include':_0x362031[_0x879d('0x21')]?_[_0x879d('0x22')](_0x362031[_0x879d('0x21')],function(_0x1c8280){return{'model':db[_0x1c8280[_0x879d('0x23')]],'as':_0x1c8280['as'],'attributes':_0x1c8280['attributes'],'include':_0x1c8280[_0x879d('0x21')]?_['map'](_0x1c8280[_0x879d('0x21')],function(_0x3a6269){return{'model':db[_0x3a6269[_0x879d('0x23')]],'as':_0x3a6269['as'],'attributes':_0x3a6269[_0x879d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x879d('0xe')](function(_0x2c4923){logger['info'](_0x879d('0x24'),_0x239f3d);logger[_0x879d('0x10')](_0x879d('0x24'),_0x239f3d,JSON[_0x879d('0x12')](_0x2c4923));_0x445f8d(_0x2c4923);})[_0x879d('0x19')](function(_0x30d634){logger[_0x879d('0x13')]('ShowFaxQueue',_0x30d634[_0x879d('0x16')],_0x239f3d);_0x4fca03(_0x8f3ed3[_0x879d('0x13')](0x1f4,_0x30d634['message']));});});};
\ No newline at end of file
+var _0x370e=['where','attributes','limit','include','map','model','GetFaxQueue','catch','ShowFaxQueue','then','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./faxQueue.socket','request','FaxQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','FaxQueue','findAll','options','raw'];(function(_0x4dcc2d,_0x422839){var _0x1bbd79=function(_0x173341){while(--_0x173341){_0x4dcc2d['push'](_0x4dcc2d['shift']());}};_0x1bbd79(++_0x422839);}(_0x370e,0x10e));var _0xe370=function(_0x313474,_0x1803d7){_0x313474=_0x313474-0x0;var _0x189549=_0x370e[_0x313474];return _0x189549;};'use strict';var _=require(_0xe370('0x0'));var util=require('util');var moment=require(_0xe370('0x1'));var BPromise=require(_0xe370('0x2'));var rs=require(_0xe370('0x3'));var fs=require('fs');var Redis=require(_0xe370('0x4'));var db=require(_0xe370('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe370('0x6'));var config=require(_0xe370('0x7'));var jayson=require(_0xe370('0x8'));var client=jayson[_0xe370('0x9')]['http']({'port':0x232a});config[_0xe370('0xa')]=_[_0xe370('0xb')](config[_0xe370('0xa')],{'host':_0xe370('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe370('0xa')]));require(_0xe370('0xd'))['register'](socket);function respondWithRpcPromise(_0xf71c8b,_0x207e89,_0x5ccf9b){return new BPromise(function(_0x566aea,_0x232785){return client[_0xe370('0xe')](_0xf71c8b,_0x5ccf9b)['then'](function(_0x1dab91){logger['info'](_0xe370('0xf'),_0x207e89,_0xe370('0x10'));logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x207e89,_0xe370('0x10'),JSON[_0xe370('0x11')](_0x1dab91));if(_0x1dab91[_0xe370('0x12')]){if(_0x1dab91[_0xe370('0x12')][_0xe370('0x13')]===0x1f4){logger[_0xe370('0x12')](_0xe370('0xf'),_0x207e89,_0x1dab91['error'][_0xe370('0x14')]);return _0x232785(_0x1dab91[_0xe370('0x12')][_0xe370('0x14')]);}logger[_0xe370('0x12')]('FaxQueue,\x20%s,\x20%s',_0x207e89,_0x1dab91[_0xe370('0x12')]['message']);return _0x566aea(_0x1dab91['error'][_0xe370('0x14')]);}else{logger[_0xe370('0x15')](_0xe370('0xf'),_0x207e89,_0xe370('0x10'));_0x566aea(_0x1dab91['result'][_0xe370('0x14')]);}})['catch'](function(_0x4c4756){logger['error'](_0xe370('0xf'),_0x207e89,_0x4c4756);_0x232785(_0x4c4756);});});}exports['GetFaxQueue']=function(_0x32e3c8){var _0x1bd640=this;return new Promise(function(_0x4f43bd,_0x5aa0dd){return db[_0xe370('0x16')][_0xe370('0x17')]({'raw':_0x32e3c8[_0xe370('0x18')]?_0x32e3c8[_0xe370('0x18')][_0xe370('0x19')]===undefined?!![]:![]:!![],'where':_0x32e3c8['options']?_0x32e3c8['options'][_0xe370('0x1a')]||null:null,'attributes':_0x32e3c8['options']?_0x32e3c8[_0xe370('0x18')][_0xe370('0x1b')]||null:null,'limit':_0x32e3c8['options']?_0x32e3c8[_0xe370('0x18')][_0xe370('0x1c')]||null:null,'include':_0x32e3c8[_0xe370('0x18')]?_0x32e3c8[_0xe370('0x18')][_0xe370('0x1d')]?_[_0xe370('0x1e')](_0x32e3c8[_0xe370('0x18')]['include'],function(_0x4bfbbc){return{'model':db[_0x4bfbbc[_0xe370('0x1f')]],'as':_0x4bfbbc['as'],'attributes':_0x4bfbbc[_0xe370('0x1b')],'include':_0x4bfbbc[_0xe370('0x1d')]?_[_0xe370('0x1e')](_0x4bfbbc['include'],function(_0x955c3e){return{'model':db[_0x955c3e[_0xe370('0x1f')]],'as':_0x955c3e['as'],'attributes':_0x955c3e[_0xe370('0x1b')],'include':_0x955c3e[_0xe370('0x1d')]?_[_0xe370('0x1e')](_0x955c3e['include'],function(_0x486f21){return{'model':db[_0x486f21[_0xe370('0x1f')]],'as':_0x486f21['as'],'attributes':_0x486f21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f2e6a){logger[_0xe370('0x15')](_0xe370('0x20'),_0x32e3c8);logger['debug'](_0xe370('0x20'),_0x32e3c8,JSON[_0xe370('0x11')](_0x5f2e6a));_0x4f43bd(_0x5f2e6a);})[_0xe370('0x21')](function(_0x2f2e4d){logger[_0xe370('0x12')](_0xe370('0x20'),_0x2f2e4d[_0xe370('0x14')],_0x32e3c8);_0x5aa0dd(_0x1bd640['error'](0x1f4,_0x2f2e4d[_0xe370('0x14')]));});});};exports[_0xe370('0x22')]=function(_0x415608){var _0x4c7371=this;return new Promise(function(_0x5dcc51,_0x167989){return db[_0xe370('0x16')]['find']({'raw':_0x415608[_0xe370('0x18')]?_0x415608[_0xe370('0x18')][_0xe370('0x19')]===undefined?!![]:![]:!![],'where':_0x415608[_0xe370('0x18')]?_0x415608['options'][_0xe370('0x1a')]||null:null,'attributes':_0x415608['options']?_0x415608[_0xe370('0x18')][_0xe370('0x1b')]||null:null,'include':_0x415608['options']?_0x415608[_0xe370('0x18')][_0xe370('0x1d')]?_[_0xe370('0x1e')](_0x415608[_0xe370('0x18')][_0xe370('0x1d')],function(_0x4d6023){return{'model':db[_0x4d6023[_0xe370('0x1f')]],'as':_0x4d6023['as'],'attributes':_0x4d6023[_0xe370('0x1b')],'include':_0x4d6023[_0xe370('0x1d')]?_[_0xe370('0x1e')](_0x4d6023[_0xe370('0x1d')],function(_0x328e1b){return{'model':db[_0x328e1b[_0xe370('0x1f')]],'as':_0x328e1b['as'],'attributes':_0x328e1b[_0xe370('0x1b')],'include':_0x328e1b['include']?_['map'](_0x328e1b[_0xe370('0x1d')],function(_0x1354ca){return{'model':db[_0x1354ca[_0xe370('0x1f')]],'as':_0x1354ca['as'],'attributes':_0x1354ca['attributes']};}):[]};}):[]};}):[]:[]})[_0xe370('0x23')](function(_0xa22520){logger[_0xe370('0x15')]('ShowFaxQueue',_0x415608);logger[_0xe370('0x24')](_0xe370('0x22'),_0x415608,JSON[_0xe370('0x11')](_0xa22520));_0x5dcc51(_0xa22520);})[_0xe370('0x21')](function(_0x5c7501){logger[_0xe370('0x12')](_0xe370('0x22'),_0x5c7501[_0xe370('0x14')],_0x415608);_0x167989(_0x4c7371['error'](0x1f4,_0x5c7501[_0xe370('0x14')]));});});};
\ No newline at end of file
index f054990..75b6f51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc50=['update','emit','register','length','faxQueue:','./faxQueue.events','remove'];(function(_0x26c20a,_0x209858){var _0x3e5d00=function(_0x5d909d){while(--_0x5d909d){_0x26c20a['push'](_0x26c20a['shift']());}};_0x3e5d00(++_0x209858);}(_0xdc50,0x147));var _0x0dc5=function(_0x4b9610,_0x472ca4){_0x4b9610=_0x4b9610-0x0;var _0x49956c=_0xdc50[_0x4b9610];return _0x49956c;};'use strict';var FaxQueueEvents=require(_0x0dc5('0x0'));var events=['save',_0x0dc5('0x1'),_0x0dc5('0x2')];function createListener(_0x2d68ac,_0x1e1d80){return function(_0x144174){_0x1e1d80[_0x0dc5('0x3')](_0x2d68ac,_0x144174);};}function removeListener(_0x59640e,_0x43b335){return function(){FaxQueueEvents['removeListener'](_0x59640e,_0x43b335);};}exports[_0x0dc5('0x4')]=function(_0x1cfc70){for(var _0xa625b8=0x0,_0x4e0afc=events[_0x0dc5('0x5')];_0xa625b8<_0x4e0afc;_0xa625b8++){var _0x3209b4=events[_0xa625b8];var _0x3b05b0=createListener(_0x0dc5('0x6')+_0x3209b4,_0x1cfc70);FaxQueueEvents['on'](_0x3209b4,_0x3b05b0);}};
\ No newline at end of file
+var _0x1d40=['emit','removeListener','length','faxQueue:','./faxQueue.events','save','remove','update'];(function(_0x1a046d,_0x3c2120){var _0x1dabe7=function(_0x123dec){while(--_0x123dec){_0x1a046d['push'](_0x1a046d['shift']());}};_0x1dabe7(++_0x3c2120);}(_0x1d40,0xbc));var _0x01d4=function(_0x2131d6,_0x4dba8e){_0x2131d6=_0x2131d6-0x0;var _0xbf7b1b=_0x1d40[_0x2131d6];return _0xbf7b1b;};'use strict';var FaxQueueEvents=require(_0x01d4('0x0'));var events=[_0x01d4('0x1'),_0x01d4('0x2'),_0x01d4('0x3')];function createListener(_0x2806fe,_0x108369){return function(_0x44334a){_0x108369[_0x01d4('0x4')](_0x2806fe,_0x44334a);};}function removeListener(_0x9a4696,_0x30d041){return function(){FaxQueueEvents[_0x01d4('0x5')](_0x9a4696,_0x30d041);};}exports['register']=function(_0x4d600f){for(var _0x2746cb=0x0,_0x1cba7c=events[_0x01d4('0x6')];_0x2746cb<_0x1cba7c;_0x2746cb++){var _0x4e2579=events[_0x2746cb];var _0x2eea43=createListener(_0x01d4('0x7')+_0x4e2579,_0x4d600f);FaxQueueEvents['on'](_0x4e2579,_0x2eea43);}};
\ No newline at end of file
index f976c1e..3d03bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36c3=['/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','post','addAgents','update','destroy','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0xa1d5af,_0xbae3b9){var _0x38f01f=function(_0x1c7ef3){while(--_0x1c7ef3){_0xa1d5af['push'](_0xa1d5af['shift']());}};_0x38f01f(++_0xbae3b9);}(_0x36c3,0x1a6));var _0x336c=function(_0x589bee,_0x3e06b9){_0x589bee=_0x589bee-0x0;var _0x58f126=_0x36c3[_0x589bee];return _0x58f126;};'use strict';var multer=require(_0x336c('0x0'));var util=require(_0x336c('0x1'));var path=require('path');var timeout=require(_0x336c('0x2'));var express=require(_0x336c('0x3'));var router=express[_0x336c('0x4')]();var fs_extra=require(_0x336c('0x5'));var auth=require(_0x336c('0x6'));var interaction=require(_0x336c('0x7'));var config=require(_0x336c('0x8'));var controller=require('./faxQueue.controller');router[_0x336c('0x9')]('/',auth[_0x336c('0xa')](),controller[_0x336c('0xb')]);router[_0x336c('0x9')](_0x336c('0xc'),auth['isAuthenticated'](),controller[_0x336c('0xd')]);router[_0x336c('0x9')](_0x336c('0xe'),auth[_0x336c('0xa')](),controller[_0x336c('0xf')]);router[_0x336c('0x9')](_0x336c('0x10'),auth[_0x336c('0xa')](),controller[_0x336c('0x11')]);router[_0x336c('0x9')](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x13')]);router[_0x336c('0x9')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0x336c('0x16')]);router['post'](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x17')]);router[_0x336c('0x18')]('/:id/users',auth[_0x336c('0xa')](),controller[_0x336c('0x19')]);router['put'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1a')]);router['delete'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1b')]);router[_0x336c('0x1c')]('/:id/teams',auth['isAuthenticated'](),controller[_0x336c('0x1d')]);router[_0x336c('0x1c')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0xa899=['put','update','delete','removeTeams','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','/:id','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','/:id/users','addAgents'];(function(_0x46a999,_0x7d2122){var _0x38001c=function(_0x1ed494){while(--_0x1ed494){_0x46a999['push'](_0x46a999['shift']());}};_0x38001c(++_0x7d2122);}(_0xa899,0x155));var _0x9a89=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0xa899[_0x49b207];return _0x2dc8fa;};'use strict';var multer=require(_0x9a89('0x0'));var util=require(_0x9a89('0x1'));var path=require(_0x9a89('0x2'));var timeout=require('connect-timeout');var express=require(_0x9a89('0x3'));var router=express[_0x9a89('0x4')]();var fs_extra=require(_0x9a89('0x5'));var auth=require(_0x9a89('0x6'));var interaction=require(_0x9a89('0x7'));var config=require(_0x9a89('0x8'));var controller=require(_0x9a89('0x9'));router[_0x9a89('0xa')]('/',auth[_0x9a89('0xb')](),controller[_0x9a89('0xc')]);router[_0x9a89('0xa')](_0x9a89('0xd'),auth[_0x9a89('0xb')](),controller['describe']);router['get'](_0x9a89('0xe'),auth[_0x9a89('0xb')](),controller['show']);router[_0x9a89('0xa')]('/:id/members',auth[_0x9a89('0xb')](),controller[_0x9a89('0xf')]);router[_0x9a89('0xa')](_0x9a89('0x10'),auth[_0x9a89('0xb')](),controller[_0x9a89('0x11')]);router[_0x9a89('0xa')]('/:id/users',auth['isAuthenticated'](),controller[_0x9a89('0x12')]);router[_0x9a89('0x13')]('/',auth[_0x9a89('0xb')](),controller['create']);router['post']('/:id/teams',auth[_0x9a89('0xb')](),controller[_0x9a89('0x14')]);router['post'](_0x9a89('0x15'),auth[_0x9a89('0xb')](),controller[_0x9a89('0x16')]);router[_0x9a89('0x17')]('/:id',auth[_0x9a89('0xb')](),controller[_0x9a89('0x18')]);router['delete']('/:id',auth[_0x9a89('0xb')](),controller['destroy']);router[_0x9a89('0x19')](_0x9a89('0x10'),auth['isAuthenticated'](),controller[_0x9a89('0x1a')]);router['delete'](_0x9a89('0x15'),auth[_0x9a89('0xb')](),controller['removeAgents']);module[_0x9a89('0x1b')]=router;
\ No newline at end of file
index 0ace2c3..08cf01d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa39=['STRING','DATE','exports'];(function(_0x1abefd,_0x42ec09){var _0x481db4=function(_0x2bdb62){while(--_0x2bdb62){_0x1abefd['push'](_0x1abefd['shift']());}};_0x481db4(++_0x42ec09);}(_0xfa39,0x197));var _0x9fa3=function(_0x1cdb2d,_0x8f1f76){_0x1cdb2d=_0x1cdb2d-0x0;var _0x4dafe3=_0xfa39[_0x1cdb2d];return _0x4dafe3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x9fa3('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x9fa3('0x1')]},'joinAt':{'type':Sequelize[_0x9fa3('0x2')]},'leaveAt':{'type':Sequelize[_0x9fa3('0x2')]},'acceptAt':{'type':Sequelize[_0x9fa3('0x2')]},'exitAt':{'type':Sequelize[_0x9fa3('0x2')]},'reason':{'type':Sequelize[_0x9fa3('0x1')]}};
\ No newline at end of file
+var _0xf4f3=['moment','exports','STRING','DATE'];(function(_0x541a67,_0x50728d){var _0x45da2a=function(_0x158929){while(--_0x158929){_0x541a67['push'](_0x541a67['shift']());}};_0x45da2a(++_0x50728d);}(_0xf4f3,0x94));var _0x3f4f=function(_0x457453,_0x3daba8){_0x457453=_0x457453-0x0;var _0x3822dc=_0xf4f3[_0x457453];return _0x3822dc;};'use strict';var moment=require(_0x3f4f('0x0'));var Sequelize=require('sequelize');module[_0x3f4f('0x1')]={'uniqueid':{'type':Sequelize[_0x3f4f('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3f4f('0x2')]},'joinAt':{'type':Sequelize[_0x3f4f('0x3')]},'leaveAt':{'type':Sequelize[_0x3f4f('0x3')]},'acceptAt':{'type':Sequelize[_0x3f4f('0x3')]},'exitAt':{'type':Sequelize[_0x3f4f('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 27ffd7b..6abdfac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49a=['model','keys','filters','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxQueueReport','includeAll','then','catch','show','params','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','update','destroy','error','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x4bf27e,_0x29db91){var _0x1f8df7=function(_0x576a18){while(--_0x576a18){_0x4bf27e['push'](_0x4bf27e['shift']());}};_0x1f8df7(++_0x29db91);}(_0xb49a,0xfb));var _0xab49=function(_0x41f02b,_0x2ca2f0){_0x41f02b=_0x41f02b-0x0;var _0x3411eb=_0xb49a[_0x41f02b];return _0x3411eb;};'use strict';var emlformat=require(_0xab49('0x0'));var rimraf=require(_0xab49('0x1'));var zipdir=require(_0xab49('0x2'));var jsonpatch=require(_0xab49('0x3'));var rp=require(_0xab49('0x4'));var moment=require('moment');var BPromise=require(_0xab49('0x5'));var Mustache=require(_0xab49('0x6'));var util=require('util');var path=require('path');var sox=require(_0xab49('0x7'));var csv=require(_0xab49('0x8'));var ejs=require(_0xab49('0x9'));var fs=require('fs');var fs_extra=require(_0xab49('0xa'));var _=require(_0xab49('0xb'));var squel=require(_0xab49('0xc'));var crypto=require(_0xab49('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xab49('0xe'));var toCsv=require(_0xab49('0x8'));var querystring=require(_0xab49('0xf'));var Papa=require(_0xab49('0x10'));var Redis=require(_0xab49('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xab49('0x12'));var hardwareService=require(_0xab49('0x13'));var logger=require(_0xab49('0x14'))(_0xab49('0x15'));var utils=require(_0xab49('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xab49('0x17'));var db=require(_0xab49('0x18'))['db'];function respondWithStatusCode(_0x34af0d,_0x207d79){_0x207d79=_0x207d79||0xcc;return function(_0x394c1e){if(_0x394c1e){return _0x34af0d[_0xab49('0x19')](_0x207d79);}return _0x34af0d[_0xab49('0x1a')](_0x207d79)[_0xab49('0x1b')]();};}function respondWithResult(_0x24b4ad,_0x389ebb){_0x389ebb=_0x389ebb||0xc8;return function(_0x40f465){if(_0x40f465){return _0x24b4ad['status'](_0x389ebb)[_0xab49('0x1c')](_0x40f465);}};}function respondWithFilteredResult(_0x38ee23,_0x205b09){return function(_0x9c59e1){if(_0x9c59e1){var _0x14d8b8=typeof _0x205b09['offset']===_0xab49('0x1d')&&typeof _0x205b09[_0xab49('0x1e')]===_0xab49('0x1d');var _0xcaa6ca=_0x9c59e1[_0xab49('0x1f')];var _0x47f977=_0x14d8b8?0x0:_0x205b09[_0xab49('0x20')];var _0x24cb8f=_0x14d8b8?_0x9c59e1[_0xab49('0x1f')]:_0x205b09['offset']+_0x205b09['limit'];var _0x31da6b;if(_0x24cb8f>=_0xcaa6ca){_0x24cb8f=_0xcaa6ca;_0x31da6b=0xc8;}else{_0x31da6b=0xce;}_0x38ee23[_0xab49('0x1a')](_0x31da6b);return _0x38ee23['set'](_0xab49('0x21'),_0x47f977+'-'+_0x24cb8f+'/'+_0xcaa6ca)[_0xab49('0x1c')](_0x9c59e1);}return null;};}function patchUpdates(_0x49b716){return function(_0x3662b2){try{jsonpatch['apply'](_0x3662b2,_0x49b716,!![]);}catch(_0x34211e){return BPromise[_0xab49('0x22')](_0x34211e);}return _0x3662b2['save']();};}function saveUpdates(_0x5802db,_0x333506){return function(_0x4fa8d2){if(_0x4fa8d2){return _0x4fa8d2[_0xab49('0x23')](_0x5802db)['then'](function(_0x35682a){return _0x35682a;});}return null;};}function removeEntity(_0x2faeca,_0x2ba18a){return function(_0x579039){if(_0x579039){return _0x579039[_0xab49('0x24')]()['then'](function(){_0x2faeca[_0xab49('0x1a')](0xcc)[_0xab49('0x1b')]();});}};}function handleEntityNotFound(_0x5c3d71,_0x29096f){return function(_0x18e65a){if(!_0x18e65a){_0x5c3d71['sendStatus'](0x194);}return _0x18e65a;};}function handleError(_0x5409a1,_0x11446b){_0x11446b=_0x11446b||0x1f4;return function(_0x2e0e37){logger[_0xab49('0x25')](_0x2e0e37['stack']);if(_0x2e0e37[_0xab49('0x26')]){delete _0x2e0e37[_0xab49('0x26')];}_0x5409a1['status'](_0x11446b)[_0xab49('0x27')](_0x2e0e37);};}exports[_0xab49('0x28')]=function(_0x342fdf,_0x57fbad){var _0x30a3dd={},_0x550f06={},_0xb3927e={'count':0x0,'rows':[]};var _0x53ec05=_[_0xab49('0x29')](db['FaxQueueReport'][_0xab49('0x2a')],function(_0x24bd0f){return{'name':_0x24bd0f[_0xab49('0x2b')],'type':_0x24bd0f[_0xab49('0x2c')]['key']};});_0x550f06[_0xab49('0x2d')]=_[_0xab49('0x29')](_0x53ec05,_0xab49('0x26'));_0x550f06['query']=_[_0xab49('0x2e')](_0x342fdf['query']);_0x550f06[_0xab49('0x2f')]=_['intersection'](_0x550f06['model'],_0x550f06['query']);_0x30a3dd[_0xab49('0x30')]=_['intersection'](_0x550f06[_0xab49('0x2d')],qs[_0xab49('0x31')](_0x342fdf[_0xab49('0x32')]['fields']));_0x30a3dd[_0xab49('0x30')]=_0x30a3dd[_0xab49('0x30')][_0xab49('0x33')]?_0x30a3dd[_0xab49('0x30')]:_0x550f06[_0xab49('0x2d')];if(!_0x342fdf['query'][_0xab49('0x34')](_0xab49('0x35'))){_0x30a3dd['limit']=qs['limit'](_0x342fdf[_0xab49('0x32')][_0xab49('0x1e')]);_0x30a3dd[_0xab49('0x20')]=qs[_0xab49('0x20')](_0x342fdf[_0xab49('0x32')][_0xab49('0x20')]);}_0x30a3dd[_0xab49('0x36')]=qs[_0xab49('0x37')](_0x342fdf[_0xab49('0x32')][_0xab49('0x37')]);_0x30a3dd[_0xab49('0x38')]=qs[_0xab49('0x2f')](_[_0xab49('0x39')](_0x342fdf['query'],_0x550f06[_0xab49('0x2f')]),_0x53ec05);if(_0x342fdf[_0xab49('0x32')][_0xab49('0x3a')]){_0x30a3dd[_0xab49('0x38')]=_[_0xab49('0x3b')](_0x30a3dd['where'],{'$or':_[_0xab49('0x29')](_0x53ec05,function(_0x500f32){if(_0x500f32['type']!==_0xab49('0x3c')){var _0x254806={};_0x254806[_0x500f32[_0xab49('0x26')]]={'$like':'%'+_0x342fdf[_0xab49('0x32')][_0xab49('0x3a')]+'%'};return _0x254806;}})});}_0x30a3dd=_['merge']({},_0x30a3dd,_0x342fdf[_0xab49('0x3d')]);var _0x2cdcbf={'where':_0x30a3dd[_0xab49('0x38')]};return db[_0xab49('0x3e')][_0xab49('0x1f')](_0x2cdcbf)['then'](function(_0x4f89a3){_0xb3927e[_0xab49('0x1f')]=_0x4f89a3;if(_0x342fdf[_0xab49('0x32')][_0xab49('0x3f')]){_0x30a3dd['include']=[{'all':!![]}];}return db[_0xab49('0x3e')]['findAll'](_0x30a3dd);})['then'](function(_0x597e1c){_0xb3927e['rows']=_0x597e1c;return _0xb3927e;})[_0xab49('0x40')](respondWithFilteredResult(_0x57fbad,_0x30a3dd))[_0xab49('0x41')](handleError(_0x57fbad,null));};exports[_0xab49('0x42')]=function(_0x1aa993,_0x2133b3){var _0x3f3776={'raw':!![],'where':{'id':_0x1aa993[_0xab49('0x43')]['id']}},_0x162841={};_0x162841[_0xab49('0x2d')]=_[_0xab49('0x2e')](db['FaxQueueReport'][_0xab49('0x2a')]);_0x162841[_0xab49('0x32')]=_['keys'](_0x1aa993[_0xab49('0x32')]);_0x162841[_0xab49('0x2f')]=_[_0xab49('0x44')](_0x162841[_0xab49('0x2d')],_0x162841[_0xab49('0x32')]);_0x3f3776[_0xab49('0x30')]=_[_0xab49('0x44')](_0x162841[_0xab49('0x2d')],qs['fields'](_0x1aa993[_0xab49('0x32')][_0xab49('0x31')]));_0x3f3776[_0xab49('0x30')]=_0x3f3776['attributes'][_0xab49('0x33')]?_0x3f3776[_0xab49('0x30')]:_0x162841[_0xab49('0x2d')];if(_0x1aa993[_0xab49('0x32')][_0xab49('0x3f')]){_0x3f3776[_0xab49('0x45')]=[{'all':!![]}];}_0x3f3776=_['merge']({},_0x3f3776,_0x1aa993[_0xab49('0x3d')]);return db[_0xab49('0x3e')][_0xab49('0x46')](_0x3f3776)[_0xab49('0x40')](handleEntityNotFound(_0x2133b3,null))[_0xab49('0x40')](respondWithResult(_0x2133b3,null))[_0xab49('0x41')](handleError(_0x2133b3,null));};exports['create']=function(_0x3d4fb2,_0x186fcf){return db[_0xab49('0x3e')][_0xab49('0x47')](_0x3d4fb2[_0xab49('0x48')],{})[_0xab49('0x40')](respondWithResult(_0x186fcf,0xc9))[_0xab49('0x41')](handleError(_0x186fcf,null));};exports[_0xab49('0x23')]=function(_0x2ae9dc,_0xfb7d69){if(_0x2ae9dc[_0xab49('0x48')]['id']){delete _0x2ae9dc[_0xab49('0x48')]['id'];}return db['FaxQueueReport'][_0xab49('0x46')]({'where':{'id':_0x2ae9dc[_0xab49('0x43')]['id']}})[_0xab49('0x40')](handleEntityNotFound(_0xfb7d69,null))[_0xab49('0x40')](saveUpdates(_0x2ae9dc[_0xab49('0x48')],null))[_0xab49('0x40')](respondWithResult(_0xfb7d69,null))[_0xab49('0x41')](handleError(_0xfb7d69,null));};exports['destroy']=function(_0x3b7f1e,_0x5316ae){return db[_0xab49('0x3e')]['find']({'where':{'id':_0x3b7f1e[_0xab49('0x43')]['id']}})[_0xab49('0x40')](handleEntityNotFound(_0x5316ae,null))['then'](removeEntity(_0x5316ae,null))[_0xab49('0x41')](handleError(_0x5316ae,null));};exports[_0xab49('0x49')]=function(_0x1a5326,_0x2b9d6f){return db[_0xab49('0x3e')][_0xab49('0x49')]()[_0xab49('0x40')](respondWithResult(_0x2b9d6f,null))[_0xab49('0x41')](handleError(_0x2b9d6f,null));};
\ No newline at end of file
+var _0x7d13=['index','map','FaxQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','params','options','find','catch','create','body','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x7d13,0x6c));var _0x37d1=function(_0x5f55e1,_0x357754){_0x5f55e1=_0x5f55e1-0x0;var _0x34c48a=_0x7d13[_0x5f55e1];return _0x34c48a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37d1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x37d1('0x1'));var rp=require('request-promise');var moment=require(_0x37d1('0x2'));var BPromise=require(_0x37d1('0x3'));var Mustache=require(_0x37d1('0x4'));var util=require(_0x37d1('0x5'));var path=require(_0x37d1('0x6'));var sox=require('sox');var csv=require(_0x37d1('0x7'));var ejs=require(_0x37d1('0x8'));var fs=require('fs');var fs_extra=require(_0x37d1('0x9'));var _=require(_0x37d1('0xa'));var squel=require('squel');var crypto=require(_0x37d1('0xb'));var jsforce=require(_0x37d1('0xc'));var deskjs=require(_0x37d1('0xd'));var toCsv=require(_0x37d1('0x7'));var querystring=require(_0x37d1('0xe'));var Papa=require(_0x37d1('0xf'));var Redis=require(_0x37d1('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x37d1('0x11'));var hardwareService=require(_0x37d1('0x12'));var logger=require('../../config/logger')(_0x37d1('0x13'));var utils=require(_0x37d1('0x14'));var config=require(_0x37d1('0x15'));var licenseUtil=require(_0x37d1('0x16'));var db=require(_0x37d1('0x17'))['db'];function respondWithStatusCode(_0x110122,_0x3eade4){_0x3eade4=_0x3eade4||0xcc;return function(_0x339d4f){if(_0x339d4f){return _0x110122['sendStatus'](_0x3eade4);}return _0x110122[_0x37d1('0x18')](_0x3eade4)[_0x37d1('0x19')]();};}function respondWithResult(_0x4be8fb,_0x7987b3){_0x7987b3=_0x7987b3||0xc8;return function(_0x309281){if(_0x309281){return _0x4be8fb['status'](_0x7987b3)[_0x37d1('0x1a')](_0x309281);}};}function respondWithFilteredResult(_0x43e615,_0x4a371b){return function(_0x52c41c){if(_0x52c41c){var _0x42bdd5=typeof _0x4a371b[_0x37d1('0x1b')]===_0x37d1('0x1c')&&typeof _0x4a371b['limit']===_0x37d1('0x1c');var _0x1f48d9=_0x52c41c[_0x37d1('0x1d')];var _0x597418=_0x42bdd5?0x0:_0x4a371b[_0x37d1('0x1b')];var _0x4418ea=_0x42bdd5?_0x52c41c['count']:_0x4a371b[_0x37d1('0x1b')]+_0x4a371b[_0x37d1('0x1e')];var _0x2e1094;if(_0x4418ea>=_0x1f48d9){_0x4418ea=_0x1f48d9;_0x2e1094=0xc8;}else{_0x2e1094=0xce;}_0x43e615[_0x37d1('0x18')](_0x2e1094);return _0x43e615[_0x37d1('0x1f')](_0x37d1('0x20'),_0x597418+'-'+_0x4418ea+'/'+_0x1f48d9)[_0x37d1('0x1a')](_0x52c41c);}return null;};}function patchUpdates(_0x546826){return function(_0x5c4513){try{jsonpatch[_0x37d1('0x21')](_0x5c4513,_0x546826,!![]);}catch(_0x3b8dd1){return BPromise[_0x37d1('0x22')](_0x3b8dd1);}return _0x5c4513[_0x37d1('0x23')]();};}function saveUpdates(_0x4ea3c5,_0x52440e){return function(_0x381345){if(_0x381345){return _0x381345[_0x37d1('0x24')](_0x4ea3c5)[_0x37d1('0x25')](function(_0x18c36b){return _0x18c36b;});}return null;};}function removeEntity(_0x461b36,_0xcb9fb7){return function(_0x71391a){if(_0x71391a){return _0x71391a[_0x37d1('0x26')]()[_0x37d1('0x25')](function(){_0x461b36[_0x37d1('0x18')](0xcc)[_0x37d1('0x19')]();});}};}function handleEntityNotFound(_0x4ec3d3,_0xa51780){return function(_0x3ca34c){if(!_0x3ca34c){_0x4ec3d3[_0x37d1('0x27')](0x194);}return _0x3ca34c;};}function handleError(_0x28bf0e,_0x16466f){_0x16466f=_0x16466f||0x1f4;return function(_0x54da9c){logger[_0x37d1('0x28')](_0x54da9c['stack']);if(_0x54da9c[_0x37d1('0x29')]){delete _0x54da9c[_0x37d1('0x29')];}_0x28bf0e[_0x37d1('0x18')](_0x16466f)['send'](_0x54da9c);};}exports[_0x37d1('0x2a')]=function(_0x5a4e98,_0x34c128){var _0x4478ae={},_0x13d21f={},_0x5f5830={'count':0x0,'rows':[]};var _0xcf3373=_[_0x37d1('0x2b')](db[_0x37d1('0x2c')][_0x37d1('0x2d')],function(_0x1b5752){return{'name':_0x1b5752[_0x37d1('0x2e')],'type':_0x1b5752[_0x37d1('0x2f')]['key']};});_0x13d21f[_0x37d1('0x30')]=_[_0x37d1('0x2b')](_0xcf3373,_0x37d1('0x29'));_0x13d21f[_0x37d1('0x31')]=_[_0x37d1('0x32')](_0x5a4e98['query']);_0x13d21f[_0x37d1('0x33')]=_[_0x37d1('0x34')](_0x13d21f[_0x37d1('0x30')],_0x13d21f[_0x37d1('0x31')]);_0x4478ae[_0x37d1('0x35')]=_['intersection'](_0x13d21f[_0x37d1('0x30')],qs[_0x37d1('0x36')](_0x5a4e98[_0x37d1('0x31')][_0x37d1('0x36')]));_0x4478ae[_0x37d1('0x35')]=_0x4478ae[_0x37d1('0x35')][_0x37d1('0x37')]?_0x4478ae['attributes']:_0x13d21f['model'];if(!_0x5a4e98[_0x37d1('0x31')][_0x37d1('0x38')](_0x37d1('0x39'))){_0x4478ae[_0x37d1('0x1e')]=qs[_0x37d1('0x1e')](_0x5a4e98[_0x37d1('0x31')]['limit']);_0x4478ae['offset']=qs[_0x37d1('0x1b')](_0x5a4e98[_0x37d1('0x31')][_0x37d1('0x1b')]);}_0x4478ae['order']=qs[_0x37d1('0x3a')](_0x5a4e98[_0x37d1('0x31')][_0x37d1('0x3a')]);_0x4478ae['where']=qs[_0x37d1('0x33')](_[_0x37d1('0x3b')](_0x5a4e98[_0x37d1('0x31')],_0x13d21f[_0x37d1('0x33')]),_0xcf3373);if(_0x5a4e98[_0x37d1('0x31')][_0x37d1('0x3c')]){_0x4478ae['where']=_[_0x37d1('0x3d')](_0x4478ae[_0x37d1('0x3e')],{'$or':_[_0x37d1('0x2b')](_0xcf3373,function(_0x53d95b){if(_0x53d95b[_0x37d1('0x2f')]!==_0x37d1('0x3f')){var _0x591bcb={};_0x591bcb[_0x53d95b[_0x37d1('0x29')]]={'$like':'%'+_0x5a4e98['query'][_0x37d1('0x3c')]+'%'};return _0x591bcb;}})});}_0x4478ae=_['merge']({},_0x4478ae,_0x5a4e98['options']);var _0x32397c={'where':_0x4478ae[_0x37d1('0x3e')]};return db[_0x37d1('0x2c')][_0x37d1('0x1d')](_0x32397c)[_0x37d1('0x25')](function(_0x2d8610){_0x5f5830['count']=_0x2d8610;if(_0x5a4e98['query'][_0x37d1('0x40')]){_0x4478ae[_0x37d1('0x41')]=[{'all':!![]}];}return db[_0x37d1('0x2c')][_0x37d1('0x42')](_0x4478ae);})['then'](function(_0x43182c){_0x5f5830[_0x37d1('0x43')]=_0x43182c;return _0x5f5830;})['then'](respondWithFilteredResult(_0x34c128,_0x4478ae))['catch'](handleError(_0x34c128,null));};exports['show']=function(_0x21c960,_0x430959){var _0x438497={'raw':!![],'where':{'id':_0x21c960[_0x37d1('0x44')]['id']}},_0x724d9c={};_0x724d9c[_0x37d1('0x30')]=_['keys'](db[_0x37d1('0x2c')][_0x37d1('0x2d')]);_0x724d9c[_0x37d1('0x31')]=_[_0x37d1('0x32')](_0x21c960[_0x37d1('0x31')]);_0x724d9c[_0x37d1('0x33')]=_[_0x37d1('0x34')](_0x724d9c[_0x37d1('0x30')],_0x724d9c['query']);_0x438497[_0x37d1('0x35')]=_[_0x37d1('0x34')](_0x724d9c[_0x37d1('0x30')],qs[_0x37d1('0x36')](_0x21c960['query'][_0x37d1('0x36')]));_0x438497['attributes']=_0x438497['attributes'][_0x37d1('0x37')]?_0x438497[_0x37d1('0x35')]:_0x724d9c['model'];if(_0x21c960['query'][_0x37d1('0x40')]){_0x438497[_0x37d1('0x41')]=[{'all':!![]}];}_0x438497=_['merge']({},_0x438497,_0x21c960[_0x37d1('0x45')]);return db[_0x37d1('0x2c')][_0x37d1('0x46')](_0x438497)[_0x37d1('0x25')](handleEntityNotFound(_0x430959,null))[_0x37d1('0x25')](respondWithResult(_0x430959,null))[_0x37d1('0x47')](handleError(_0x430959,null));};exports[_0x37d1('0x48')]=function(_0x367821,_0x3feaa5){return db[_0x37d1('0x2c')][_0x37d1('0x48')](_0x367821[_0x37d1('0x49')],{})[_0x37d1('0x25')](respondWithResult(_0x3feaa5,0xc9))['catch'](handleError(_0x3feaa5,null));};exports['update']=function(_0xba0901,_0x14673a){if(_0xba0901[_0x37d1('0x49')]['id']){delete _0xba0901[_0x37d1('0x49')]['id'];}return db[_0x37d1('0x2c')]['find']({'where':{'id':_0xba0901['params']['id']}})[_0x37d1('0x25')](handleEntityNotFound(_0x14673a,null))[_0x37d1('0x25')](saveUpdates(_0xba0901['body'],null))[_0x37d1('0x25')](respondWithResult(_0x14673a,null))[_0x37d1('0x47')](handleError(_0x14673a,null));};exports[_0x37d1('0x26')]=function(_0x3cfd4e,_0x29728a){return db['FaxQueueReport'][_0x37d1('0x46')]({'where':{'id':_0x3cfd4e[_0x37d1('0x44')]['id']}})['then'](handleEntityNotFound(_0x29728a,null))['then'](removeEntity(_0x29728a,null))['catch'](handleError(_0x29728a,null));};exports[_0x37d1('0x4a')]=function(_0x358e50,_0x1ac918){return db['FaxQueueReport'][_0x37d1('0x4a')]()[_0x37d1('0x25')](respondWithResult(_0x1ac918,null))['catch'](handleError(_0x1ac918,null));};
\ No newline at end of file
index 53011f9..017bf0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger'];(function(_0x2e1b41,_0x17914a){var _0x163368=function(_0x1b2c7e){while(--_0x1b2c7e){_0x2e1b41['push'](_0x2e1b41['shift']());}};_0x163368(++_0x17914a);}(_0x7217,0x19e));var _0x7721=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7217[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[{'name':_0x7721('0xc'),'fields':[_0x7721('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./faxQueueReport.attributes','exports','define','report_fax_queue','uniqueid','lodash'];(function(_0x36fce5,_0x1d352a){var _0x247a82=function(_0x42a314){while(--_0x42a314){_0x36fce5['push'](_0x36fce5['shift']());}};_0x247a82(++_0x1d352a);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2ecc65,_0xd75c48){_0x2ecc65=_0x2ecc65-0x0;var _0x103cc3=_0x5fc3[_0x2ecc65];return _0x103cc3;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('FaxQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d74a22f..342a88d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc87c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateFaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','FaxQueueReport','update','where','attributes','limit','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x2f4e19,_0x1eadb0){var _0x587b0a=function(_0x17f695){while(--_0x17f695){_0x2f4e19['push'](_0x2f4e19['shift']());}};_0x587b0a(++_0x1eadb0);}(_0xc87c,0x136));var _0xcc87=function(_0x6cb84f,_0x2eecde){_0x6cb84f=_0x6cb84f-0x0;var _0x562322=_0xc87c[_0x6cb84f];return _0x562322;};'use strict';var _=require(_0xcc87('0x0'));var util=require(_0xcc87('0x1'));var moment=require(_0xcc87('0x2'));var BPromise=require(_0xcc87('0x3'));var rs=require(_0xcc87('0x4'));var fs=require('fs');var Redis=require(_0xcc87('0x5'));var db=require(_0xcc87('0x6'))['db'];var utils=require(_0xcc87('0x7'));var logger=require(_0xcc87('0x8'))('rpc');var config=require(_0xcc87('0x9'));var jayson=require(_0xcc87('0xa'));var client=jayson[_0xcc87('0xb')][_0xcc87('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x20b2d2,_0x3f4384,_0x3534a2){return new BPromise(function(_0x570cd0,_0x58291c){return client[_0xcc87('0xd')](_0x20b2d2,_0x3534a2)[_0xcc87('0xe')](function(_0x55efe8){logger[_0xcc87('0xf')](_0xcc87('0x10'),_0x3f4384,_0xcc87('0x11'));logger[_0xcc87('0x12')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x3f4384,_0xcc87('0x11'),JSON[_0xcc87('0x13')](_0x55efe8));if(_0x55efe8['error']){if(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x15')]===0x1f4){logger[_0xcc87('0x14')](_0xcc87('0x10'),_0x3f4384,_0x55efe8['error'][_0xcc87('0x16')]);return _0x58291c(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x16')]);}logger['error'](_0xcc87('0x10'),_0x3f4384,_0x55efe8[_0xcc87('0x14')]['message']);return _0x570cd0(_0x55efe8[_0xcc87('0x14')][_0xcc87('0x16')]);}else{logger[_0xcc87('0xf')](_0xcc87('0x10'),_0x3f4384,_0xcc87('0x11'));_0x570cd0(_0x55efe8['result']['message']);}})['catch'](function(_0x52fc0e){logger[_0xcc87('0x14')](_0xcc87('0x10'),_0x3f4384,_0x52fc0e);_0x58291c(_0x52fc0e);});});}exports[_0xcc87('0x17')]=function(_0x2e92dd){var _0x3dc538=this;return new Promise(function(_0x441085,_0x1521bc){return db['FaxQueueReport'][_0xcc87('0x18')](_0x2e92dd[_0xcc87('0x19')],{'raw':_0x2e92dd[_0xcc87('0x1a')]?_0x2e92dd[_0xcc87('0x1a')][_0xcc87('0x1b')]===undefined?!![]:![]:!![]})[_0xcc87('0xe')](function(_0x3a9ba3){logger[_0xcc87('0xf')](_0xcc87('0x17'),_0x2e92dd);logger['debug'](_0xcc87('0x17'),_0x2e92dd,JSON[_0xcc87('0x13')](_0x3a9ba3));_0x441085(_0x3a9ba3);})['catch'](function(_0x5672d9){logger['error'](_0xcc87('0x17'),_0x5672d9['message'],_0x2e92dd);_0x1521bc(_0x3dc538[_0xcc87('0x14')](0x1f4,_0x5672d9[_0xcc87('0x16')]));});});};exports[_0xcc87('0x1c')]=function(_0x82d4e8){var _0x43a401=this;return new Promise(function(_0x78a2ea,_0x126990){return db[_0xcc87('0x1d')][_0xcc87('0x1e')](_0x82d4e8[_0xcc87('0x19')],{'raw':_0x82d4e8['options']?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x82d4e8['options']?_0x82d4e8['options'][_0xcc87('0x1f')]||null:null,'attributes':_0x82d4e8['options']?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x20')]||null:null,'limit':_0x82d4e8[_0xcc87('0x1a')]?_0x82d4e8[_0xcc87('0x1a')][_0xcc87('0x21')]||null:null})[_0xcc87('0xe')](function(_0x545588){logger[_0xcc87('0xf')](_0xcc87('0x1c'),_0x82d4e8);logger[_0xcc87('0x12')](_0xcc87('0x1c'),_0x82d4e8,JSON[_0xcc87('0x13')](_0x545588));_0x78a2ea(_0x545588);})[_0xcc87('0x22')](function(_0x164970){logger[_0xcc87('0x14')]('UpdateFaxQueueReport',_0x164970[_0xcc87('0x16')],_0x82d4e8);_0x126990(_0x43a401[_0xcc87('0x14')](0x1f4,_0x164970[_0xcc87('0x16')]));});});};
\ No newline at end of file
+var _0xb2eb=['create','body','options','raw','info','CreateFaxQueueReport','UpdateFaxQueueReport','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','FaxQueueReport'];(function(_0x31690e,_0x38b905){var _0x252706=function(_0x33782d){while(--_0x33782d){_0x31690e['push'](_0x31690e['shift']());}};_0x252706(++_0x38b905);}(_0xb2eb,0x8e));var _0xbb2e=function(_0x55dfd7,_0x42d854){_0x55dfd7=_0x55dfd7-0x0;var _0x5ecef1=_0xb2eb[_0x55dfd7];return _0x5ecef1;};'use strict';var _=require('lodash');var util=require(_0xbb2e('0x0'));var moment=require(_0xbb2e('0x1'));var BPromise=require(_0xbb2e('0x2'));var rs=require(_0xbb2e('0x3'));var fs=require('fs');var Redis=require(_0xbb2e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb2e('0x5'));var logger=require(_0xbb2e('0x6'))(_0xbb2e('0x7'));var config=require(_0xbb2e('0x8'));var jayson=require(_0xbb2e('0x9'));var client=jayson[_0xbb2e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x463edc,_0x413b23,_0x125832){return new BPromise(function(_0x45233e,_0x19a50c){return client[_0xbb2e('0xb')](_0x463edc,_0x125832)[_0xbb2e('0xc')](function(_0x66ae73){logger['info'](_0xbb2e('0xd'),_0x413b23,_0xbb2e('0xe'));logger[_0xbb2e('0xf')](_0xbb2e('0x10'),_0x413b23,_0xbb2e('0xe'),JSON[_0xbb2e('0x11')](_0x66ae73));if(_0x66ae73[_0xbb2e('0x12')]){if(_0x66ae73[_0xbb2e('0x12')]['code']===0x1f4){logger[_0xbb2e('0x12')](_0xbb2e('0xd'),_0x413b23,_0x66ae73[_0xbb2e('0x12')]['message']);return _0x19a50c(_0x66ae73['error']['message']);}logger['error'](_0xbb2e('0xd'),_0x413b23,_0x66ae73['error']['message']);return _0x45233e(_0x66ae73[_0xbb2e('0x12')][_0xbb2e('0x13')]);}else{logger['info'](_0xbb2e('0xd'),_0x413b23,_0xbb2e('0xe'));_0x45233e(_0x66ae73[_0xbb2e('0x14')][_0xbb2e('0x13')]);}})[_0xbb2e('0x15')](function(_0x4803cf){logger[_0xbb2e('0x12')](_0xbb2e('0xd'),_0x413b23,_0x4803cf);_0x19a50c(_0x4803cf);});});}exports['CreateFaxQueueReport']=function(_0x7761b4){var _0x586566=this;return new Promise(function(_0x4b7824,_0x40b92f){return db[_0xbb2e('0x16')][_0xbb2e('0x17')](_0x7761b4[_0xbb2e('0x18')],{'raw':_0x7761b4[_0xbb2e('0x19')]?_0x7761b4[_0xbb2e('0x19')][_0xbb2e('0x1a')]===undefined?!![]:![]:!![]})[_0xbb2e('0xc')](function(_0x26a382){logger[_0xbb2e('0x1b')](_0xbb2e('0x1c'),_0x7761b4);logger[_0xbb2e('0xf')](_0xbb2e('0x1c'),_0x7761b4,JSON[_0xbb2e('0x11')](_0x26a382));_0x4b7824(_0x26a382);})[_0xbb2e('0x15')](function(_0x3fa797){logger[_0xbb2e('0x12')](_0xbb2e('0x1c'),_0x3fa797['message'],_0x7761b4);_0x40b92f(_0x586566[_0xbb2e('0x12')](0x1f4,_0x3fa797[_0xbb2e('0x13')]));});});};exports[_0xbb2e('0x1d')]=function(_0x18b2e6){var _0x4a1309=this;return new Promise(function(_0x22211e,_0x4e5c5b){return db[_0xbb2e('0x16')]['update'](_0x18b2e6['body'],{'raw':_0x18b2e6[_0xbb2e('0x19')]?_0x18b2e6[_0xbb2e('0x19')][_0xbb2e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18b2e6['options']?_0x18b2e6['options'][_0xbb2e('0x1e')]||null:null,'attributes':_0x18b2e6['options']?_0x18b2e6[_0xbb2e('0x19')][_0xbb2e('0x1f')]||null:null,'limit':_0x18b2e6[_0xbb2e('0x19')]?_0x18b2e6[_0xbb2e('0x19')][_0xbb2e('0x20')]||null:null})[_0xbb2e('0xc')](function(_0x8de961){logger[_0xbb2e('0x1b')]('UpdateFaxQueueReport',_0x18b2e6);logger[_0xbb2e('0xf')](_0xbb2e('0x1d'),_0x18b2e6,JSON['stringify'](_0x8de961));_0x22211e(_0x8de961);})[_0xbb2e('0x15')](function(_0x3bc58e){logger[_0xbb2e('0x12')](_0xbb2e('0x1d'),_0x3bc58e[_0xbb2e('0x13')],_0x18b2e6);_0x4e5c5b(_0x4a1309[_0xbb2e('0x12')](0x1f4,_0x3bc58e[_0xbb2e('0x13')]));});});};
\ No newline at end of file
index 4c10408..12048c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dc7=['index','/describe','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x2dc7,0xdc));var _0x72dc=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0x2dc7[_0x4a0e68];return _0x4fb274;};'use strict';var multer=require(_0x72dc('0x0'));var util=require(_0x72dc('0x1'));var path=require(_0x72dc('0x2'));var timeout=require('connect-timeout');var express=require(_0x72dc('0x3'));var router=express[_0x72dc('0x4')]();var fs_extra=require(_0x72dc('0x5'));var auth=require(_0x72dc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x72dc('0x7'));var controller=require(_0x72dc('0x8'));router[_0x72dc('0x9')]('/',auth[_0x72dc('0xa')](),controller[_0x72dc('0xb')]);router[_0x72dc('0x9')](_0x72dc('0xc'),auth[_0x72dc('0xa')](),controller['describe']);router['get']('/:id',auth[_0x72dc('0xa')](),controller['show']);router[_0x72dc('0xd')]('/',auth[_0x72dc('0xa')](),controller[_0x72dc('0xe')]);router[_0x72dc('0xf')]('/:id',auth[_0x72dc('0xa')](),controller[_0x72dc('0x10')]);router[_0x72dc('0x11')](_0x72dc('0x12'),auth[_0x72dc('0xa')](),controller[_0x72dc('0x13')]);module[_0x72dc('0x14')]=router;
\ No newline at end of file
+var _0xc29f=['create','put','update','delete','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','/describe','get','/:id','isAuthenticated','show','post'];(function(_0x4ff284,_0x19fa42){var _0x26b86b=function(_0x130160){while(--_0x130160){_0x4ff284['push'](_0x4ff284['shift']());}};_0x26b86b(++_0x19fa42);}(_0xc29f,0x64));var _0xfc29=function(_0x174e58,_0x3d9465){_0x174e58=_0x174e58-0x0;var _0x4f56ca=_0xc29f[_0x174e58];return _0x4f56ca;};'use strict';var multer=require('multer');var util=require(_0xfc29('0x0'));var path=require(_0xfc29('0x1'));var timeout=require(_0xfc29('0x2'));var express=require(_0xfc29('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfc29('0x4'));var interaction=require(_0xfc29('0x5'));var config=require(_0xfc29('0x6'));var controller=require(_0xfc29('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xfc29('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xfc29('0x9')](_0xfc29('0xa'),auth[_0xfc29('0xb')](),controller[_0xfc29('0xc')]);router[_0xfc29('0xd')]('/',auth['isAuthenticated'](),controller[_0xfc29('0xe')]);router[_0xfc29('0xf')](_0xfc29('0xa'),auth['isAuthenticated'](),controller[_0xfc29('0x10')]);router[_0xfc29('0x11')](_0xfc29('0xa'),auth[_0xfc29('0xb')](),controller['destroy']);module[_0xfc29('0x12')]=router;
\ No newline at end of file
index d5dcb7f..e72a004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x531e8c,_0x1829c9){var _0x368e93=function(_0x298701){while(--_0x298701){_0x531e8c['push'](_0x531e8c['shift']());}};_0x368e93(++_0x1829c9);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x184759,_0x1cc38a){_0x184759=_0x184759-0x0;var _0xf26d5f=_0xcb91[_0x184759];return _0xf26d5f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x5c0cf4,_0x265aa9){var _0x3d9f50=function(_0x10f73d){while(--_0x10f73d){_0x5c0cf4['push'](_0x5c0cf4['shift']());}};_0x3d9f50(++_0x265aa9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 80a6525..fa4d050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77f2=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','FaxTransferReport','rawAttributes','fieldName'];(function(_0x1eebf8,_0xff9989){var _0x5acc38=function(_0xc2ff25){while(--_0xc2ff25){_0x1eebf8['push'](_0x1eebf8['shift']());}};_0x5acc38(++_0xff9989);}(_0x77f2,0x189));var _0x277f=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x77f2[_0x12fc8d];return _0x3f9d04;};'use strict';var emlformat=require(_0x277f('0x0'));var rimraf=require(_0x277f('0x1'));var zipdir=require(_0x277f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x277f('0x3'));var moment=require(_0x277f('0x4'));var BPromise=require(_0x277f('0x5'));var Mustache=require(_0x277f('0x6'));var util=require('util');var path=require(_0x277f('0x7'));var sox=require(_0x277f('0x8'));var csv=require('to-csv');var ejs=require(_0x277f('0x9'));var fs=require('fs');var fs_extra=require(_0x277f('0xa'));var _=require(_0x277f('0xb'));var squel=require(_0x277f('0xc'));var crypto=require(_0x277f('0xd'));var jsforce=require(_0x277f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x277f('0xf'));var querystring=require('querystring');var Papa=require(_0x277f('0x10'));var Redis=require(_0x277f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x277f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x277f('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x277f('0x14'));var db=require(_0x277f('0x15'))['db'];function respondWithStatusCode(_0x3b3f73,_0x161d90){_0x161d90=_0x161d90||0xcc;return function(_0x839e3a){if(_0x839e3a){return _0x3b3f73[_0x277f('0x16')](_0x161d90);}return _0x3b3f73['status'](_0x161d90)[_0x277f('0x17')]();};}function respondWithResult(_0x3c5f09,_0x28850c){_0x28850c=_0x28850c||0xc8;return function(_0x39d0c7){if(_0x39d0c7){return _0x3c5f09[_0x277f('0x18')](_0x28850c)[_0x277f('0x19')](_0x39d0c7);}};}function respondWithFilteredResult(_0x2f0927,_0x584127){return function(_0xffdff9){if(_0xffdff9){var _0x4662e9=typeof _0x584127[_0x277f('0x1a')]===_0x277f('0x1b')&&typeof _0x584127[_0x277f('0x1c')]===_0x277f('0x1b');var _0x29c42b=_0xffdff9[_0x277f('0x1d')];var _0x1970a8=_0x4662e9?0x0:_0x584127[_0x277f('0x1a')];var _0x2d8356=_0x4662e9?_0xffdff9[_0x277f('0x1d')]:_0x584127[_0x277f('0x1a')]+_0x584127[_0x277f('0x1c')];var _0x3a1f11;if(_0x2d8356>=_0x29c42b){_0x2d8356=_0x29c42b;_0x3a1f11=0xc8;}else{_0x3a1f11=0xce;}_0x2f0927['status'](_0x3a1f11);return _0x2f0927[_0x277f('0x1e')](_0x277f('0x1f'),_0x1970a8+'-'+_0x2d8356+'/'+_0x29c42b)[_0x277f('0x19')](_0xffdff9);}return null;};}function patchUpdates(_0x5a8731){return function(_0x4feb89){try{jsonpatch[_0x277f('0x20')](_0x4feb89,_0x5a8731,!![]);}catch(_0x1ebcfa){return BPromise[_0x277f('0x21')](_0x1ebcfa);}return _0x4feb89['save']();};}function saveUpdates(_0x5246a7,_0x3c13b2){return function(_0x56b4b9){if(_0x56b4b9){return _0x56b4b9[_0x277f('0x22')](_0x5246a7)[_0x277f('0x23')](function(_0x239d36){return _0x239d36;});}return null;};}function removeEntity(_0x14d9b5,_0xb47c2b){return function(_0x14c96a){if(_0x14c96a){return _0x14c96a[_0x277f('0x24')]()[_0x277f('0x23')](function(){_0x14d9b5[_0x277f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f752e,_0x2364e1){return function(_0x536c51){if(!_0x536c51){_0x4f752e[_0x277f('0x16')](0x194);}return _0x536c51;};}function handleError(_0x440e0e,_0x15d9b0){_0x15d9b0=_0x15d9b0||0x1f4;return function(_0x525fec){logger[_0x277f('0x25')](_0x525fec[_0x277f('0x26')]);if(_0x525fec[_0x277f('0x27')]){delete _0x525fec['name'];}_0x440e0e[_0x277f('0x18')](_0x15d9b0)[_0x277f('0x28')](_0x525fec);};}exports['index']=function(_0x2d0a09,_0x25bd6c){var _0x3f74e5={},_0x14a04c={},_0x1bf281={'count':0x0,'rows':[]};var _0x228d2e=_[_0x277f('0x29')](db[_0x277f('0x2a')][_0x277f('0x2b')],function(_0x3164de){return{'name':_0x3164de[_0x277f('0x2c')],'type':_0x3164de[_0x277f('0x2d')][_0x277f('0x2e')]};});_0x14a04c[_0x277f('0x2f')]=_['map'](_0x228d2e,_0x277f('0x27'));_0x14a04c[_0x277f('0x30')]=_[_0x277f('0x31')](_0x2d0a09['query']);_0x14a04c[_0x277f('0x32')]=_[_0x277f('0x33')](_0x14a04c[_0x277f('0x2f')],_0x14a04c[_0x277f('0x30')]);_0x3f74e5[_0x277f('0x34')]=_[_0x277f('0x33')](_0x14a04c[_0x277f('0x2f')],qs['fields'](_0x2d0a09[_0x277f('0x30')][_0x277f('0x35')]));_0x3f74e5[_0x277f('0x34')]=_0x3f74e5[_0x277f('0x34')][_0x277f('0x36')]?_0x3f74e5[_0x277f('0x34')]:_0x14a04c[_0x277f('0x2f')];if(!_0x2d0a09[_0x277f('0x30')][_0x277f('0x37')]('nolimit')){_0x3f74e5[_0x277f('0x1c')]=qs[_0x277f('0x1c')](_0x2d0a09[_0x277f('0x30')]['limit']);_0x3f74e5['offset']=qs[_0x277f('0x1a')](_0x2d0a09[_0x277f('0x30')][_0x277f('0x1a')]);}_0x3f74e5[_0x277f('0x38')]=qs[_0x277f('0x39')](_0x2d0a09[_0x277f('0x30')][_0x277f('0x39')]);_0x3f74e5[_0x277f('0x3a')]=qs['filters'](_[_0x277f('0x3b')](_0x2d0a09[_0x277f('0x30')],_0x14a04c[_0x277f('0x32')]),_0x228d2e);if(_0x2d0a09['query'][_0x277f('0x3c')]){_0x3f74e5['where']=_[_0x277f('0x3d')](_0x3f74e5[_0x277f('0x3a')],{'$or':_[_0x277f('0x29')](_0x228d2e,function(_0x227b35){if(_0x227b35[_0x277f('0x2d')]!==_0x277f('0x3e')){var _0x1a6b72={};_0x1a6b72[_0x227b35[_0x277f('0x27')]]={'$like':'%'+_0x2d0a09[_0x277f('0x30')][_0x277f('0x3c')]+'%'};return _0x1a6b72;}})});}_0x3f74e5=_[_0x277f('0x3d')]({},_0x3f74e5,_0x2d0a09[_0x277f('0x3f')]);var _0x7a9fcf={'where':_0x3f74e5[_0x277f('0x3a')]};return db['FaxTransferReport'][_0x277f('0x1d')](_0x7a9fcf)[_0x277f('0x23')](function(_0x2f05e2){_0x1bf281[_0x277f('0x1d')]=_0x2f05e2;if(_0x2d0a09[_0x277f('0x30')][_0x277f('0x40')]){_0x3f74e5[_0x277f('0x41')]=[{'all':!![]}];}return db[_0x277f('0x2a')][_0x277f('0x42')](_0x3f74e5);})['then'](function(_0x24fbc1){_0x1bf281['rows']=_0x24fbc1;return _0x1bf281;})['then'](respondWithFilteredResult(_0x25bd6c,_0x3f74e5))[_0x277f('0x43')](handleError(_0x25bd6c,null));};exports['show']=function(_0x1bf054,_0x2a3527){var _0x4a2690={'raw':!![],'where':{'id':_0x1bf054['params']['id']}},_0x4661e6={};_0x4661e6[_0x277f('0x2f')]=_[_0x277f('0x31')](db[_0x277f('0x2a')][_0x277f('0x2b')]);_0x4661e6[_0x277f('0x30')]=_[_0x277f('0x31')](_0x1bf054['query']);_0x4661e6[_0x277f('0x32')]=_[_0x277f('0x33')](_0x4661e6[_0x277f('0x2f')],_0x4661e6[_0x277f('0x30')]);_0x4a2690['attributes']=_[_0x277f('0x33')](_0x4661e6[_0x277f('0x2f')],qs[_0x277f('0x35')](_0x1bf054[_0x277f('0x30')][_0x277f('0x35')]));_0x4a2690[_0x277f('0x34')]=_0x4a2690[_0x277f('0x34')][_0x277f('0x36')]?_0x4a2690[_0x277f('0x34')]:_0x4661e6[_0x277f('0x2f')];if(_0x1bf054[_0x277f('0x30')][_0x277f('0x40')]){_0x4a2690[_0x277f('0x41')]=[{'all':!![]}];}_0x4a2690=_[_0x277f('0x3d')]({},_0x4a2690,_0x1bf054['options']);return db[_0x277f('0x2a')][_0x277f('0x44')](_0x4a2690)[_0x277f('0x23')](handleEntityNotFound(_0x2a3527,null))[_0x277f('0x23')](respondWithResult(_0x2a3527,null))[_0x277f('0x43')](handleError(_0x2a3527,null));};exports[_0x277f('0x45')]=function(_0xfef4d0,_0x3c510d){return db[_0x277f('0x2a')][_0x277f('0x45')](_0xfef4d0[_0x277f('0x46')],{})['then'](respondWithResult(_0x3c510d,0xc9))['catch'](handleError(_0x3c510d,null));};exports[_0x277f('0x22')]=function(_0x15f84a,_0x3ec2d3){if(_0x15f84a[_0x277f('0x46')]['id']){delete _0x15f84a[_0x277f('0x46')]['id'];}return db[_0x277f('0x2a')][_0x277f('0x44')]({'where':{'id':_0x15f84a[_0x277f('0x47')]['id']}})[_0x277f('0x23')](handleEntityNotFound(_0x3ec2d3,null))[_0x277f('0x23')](saveUpdates(_0x15f84a[_0x277f('0x46')],null))[_0x277f('0x23')](respondWithResult(_0x3ec2d3,null))[_0x277f('0x43')](handleError(_0x3ec2d3,null));};exports[_0x277f('0x24')]=function(_0x1dc1b9,_0x3938ee){return db[_0x277f('0x2a')][_0x277f('0x44')]({'where':{'id':_0x1dc1b9[_0x277f('0x47')]['id']}})[_0x277f('0x23')](handleEntityNotFound(_0x3938ee,null))[_0x277f('0x23')](removeEntity(_0x3938ee,null))[_0x277f('0x43')](handleError(_0x3938ee,null));};exports[_0x277f('0x48')]=function(_0x239cf8,_0xb0d5b0){return db['FaxTransferReport']['describe']()[_0x277f('0x23')](respondWithResult(_0xb0d5b0,null))[_0x277f('0x43')](handleError(_0xb0d5b0,null));};
\ No newline at end of file
+var _0x76dc=['fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','end','stack','name','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x76dc,0x197));var _0xc76d=function(_0x4620c5,_0x2079db){_0x4620c5=_0x4620c5-0x0;var _0x15310d=_0x76dc[_0x4620c5];return _0x15310d;};'use strict';var emlformat=require(_0xc76d('0x0'));var rimraf=require(_0xc76d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc76d('0x2'));var rp=require(_0xc76d('0x3'));var moment=require('moment');var BPromise=require(_0xc76d('0x4'));var Mustache=require(_0xc76d('0x5'));var util=require(_0xc76d('0x6'));var path=require(_0xc76d('0x7'));var sox=require(_0xc76d('0x8'));var csv=require(_0xc76d('0x9'));var ejs=require(_0xc76d('0xa'));var fs=require('fs');var fs_extra=require(_0xc76d('0xb'));var _=require('lodash');var squel=require(_0xc76d('0xc'));var crypto=require(_0xc76d('0xd'));var jsforce=require(_0xc76d('0xe'));var deskjs=require(_0xc76d('0xf'));var toCsv=require(_0xc76d('0x9'));var querystring=require(_0xc76d('0x10'));var Papa=require(_0xc76d('0x11'));var Redis=require(_0xc76d('0x12'));var authService=require(_0xc76d('0x13'));var qs=require(_0xc76d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc76d('0x15'))(_0xc76d('0x16'));var utils=require(_0xc76d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xc76d('0x18'));var db=require(_0xc76d('0x19'))['db'];function respondWithStatusCode(_0x472d72,_0x292c48){_0x292c48=_0x292c48||0xcc;return function(_0x3969b8){if(_0x3969b8){return _0x472d72[_0xc76d('0x1a')](_0x292c48);}return _0x472d72[_0xc76d('0x1b')](_0x292c48)['end']();};}function respondWithResult(_0x6b1441,_0x4b1cd4){_0x4b1cd4=_0x4b1cd4||0xc8;return function(_0x3d1cf4){if(_0x3d1cf4){return _0x6b1441[_0xc76d('0x1b')](_0x4b1cd4)['json'](_0x3d1cf4);}};}function respondWithFilteredResult(_0x4cc9b6,_0x507095){return function(_0x5a87a1){if(_0x5a87a1){var _0xa5c9c4=typeof _0x507095[_0xc76d('0x1c')]==='undefined'&&typeof _0x507095[_0xc76d('0x1d')]===_0xc76d('0x1e');var _0x253955=_0x5a87a1[_0xc76d('0x1f')];var _0x1339ed=_0xa5c9c4?0x0:_0x507095[_0xc76d('0x1c')];var _0x28e9c0=_0xa5c9c4?_0x5a87a1[_0xc76d('0x1f')]:_0x507095[_0xc76d('0x1c')]+_0x507095[_0xc76d('0x1d')];var _0x2c1dd8;if(_0x28e9c0>=_0x253955){_0x28e9c0=_0x253955;_0x2c1dd8=0xc8;}else{_0x2c1dd8=0xce;}_0x4cc9b6[_0xc76d('0x1b')](_0x2c1dd8);return _0x4cc9b6['set'](_0xc76d('0x20'),_0x1339ed+'-'+_0x28e9c0+'/'+_0x253955)[_0xc76d('0x21')](_0x5a87a1);}return null;};}function patchUpdates(_0x254b89){return function(_0x15f401){try{jsonpatch['apply'](_0x15f401,_0x254b89,!![]);}catch(_0x4d8e0c){return BPromise[_0xc76d('0x22')](_0x4d8e0c);}return _0x15f401[_0xc76d('0x23')]();};}function saveUpdates(_0x48fa57,_0x333b5e){return function(_0x404651){if(_0x404651){return _0x404651[_0xc76d('0x24')](_0x48fa57)[_0xc76d('0x25')](function(_0x141592){return _0x141592;});}return null;};}function removeEntity(_0x262e79,_0x5e6233){return function(_0x83ced6){if(_0x83ced6){return _0x83ced6[_0xc76d('0x26')]()[_0xc76d('0x25')](function(){_0x262e79[_0xc76d('0x1b')](0xcc)[_0xc76d('0x27')]();});}};}function handleEntityNotFound(_0x8c4ea3,_0x53826e){return function(_0x3f8e43){if(!_0x3f8e43){_0x8c4ea3[_0xc76d('0x1a')](0x194);}return _0x3f8e43;};}function handleError(_0x2806c4,_0x2e7e2d){_0x2e7e2d=_0x2e7e2d||0x1f4;return function(_0x5e0a7f){logger['error'](_0x5e0a7f[_0xc76d('0x28')]);if(_0x5e0a7f[_0xc76d('0x29')]){delete _0x5e0a7f['name'];}_0x2806c4[_0xc76d('0x1b')](_0x2e7e2d)['send'](_0x5e0a7f);};}exports[_0xc76d('0x2a')]=function(_0x54cee4,_0x504458){var _0x5e8d95={},_0x78cacf={},_0x40cd46={'count':0x0,'rows':[]};var _0x1eb3b3=_[_0xc76d('0x2b')](db[_0xc76d('0x2c')][_0xc76d('0x2d')],function(_0x33c771){return{'name':_0x33c771[_0xc76d('0x2e')],'type':_0x33c771[_0xc76d('0x2f')][_0xc76d('0x30')]};});_0x78cacf[_0xc76d('0x31')]=_['map'](_0x1eb3b3,_0xc76d('0x29'));_0x78cacf['query']=_[_0xc76d('0x32')](_0x54cee4[_0xc76d('0x33')]);_0x78cacf[_0xc76d('0x34')]=_[_0xc76d('0x35')](_0x78cacf[_0xc76d('0x31')],_0x78cacf['query']);_0x5e8d95[_0xc76d('0x36')]=_[_0xc76d('0x35')](_0x78cacf['model'],qs['fields'](_0x54cee4[_0xc76d('0x33')][_0xc76d('0x37')]));_0x5e8d95[_0xc76d('0x36')]=_0x5e8d95['attributes']['length']?_0x5e8d95['attributes']:_0x78cacf[_0xc76d('0x31')];if(!_0x54cee4[_0xc76d('0x33')][_0xc76d('0x38')](_0xc76d('0x39'))){_0x5e8d95['limit']=qs[_0xc76d('0x1d')](_0x54cee4[_0xc76d('0x33')][_0xc76d('0x1d')]);_0x5e8d95['offset']=qs[_0xc76d('0x1c')](_0x54cee4[_0xc76d('0x33')][_0xc76d('0x1c')]);}_0x5e8d95[_0xc76d('0x3a')]=qs[_0xc76d('0x3b')](_0x54cee4[_0xc76d('0x33')]['sort']);_0x5e8d95['where']=qs[_0xc76d('0x34')](_[_0xc76d('0x3c')](_0x54cee4[_0xc76d('0x33')],_0x78cacf[_0xc76d('0x34')]),_0x1eb3b3);if(_0x54cee4[_0xc76d('0x33')][_0xc76d('0x3d')]){_0x5e8d95[_0xc76d('0x3e')]=_[_0xc76d('0x3f')](_0x5e8d95[_0xc76d('0x3e')],{'$or':_[_0xc76d('0x2b')](_0x1eb3b3,function(_0x4d938b){if(_0x4d938b[_0xc76d('0x2f')]!=='VIRTUAL'){var _0x423f09={};_0x423f09[_0x4d938b[_0xc76d('0x29')]]={'$like':'%'+_0x54cee4[_0xc76d('0x33')]['filter']+'%'};return _0x423f09;}})});}_0x5e8d95=_[_0xc76d('0x3f')]({},_0x5e8d95,_0x54cee4[_0xc76d('0x40')]);var _0x3f6f20={'where':_0x5e8d95[_0xc76d('0x3e')]};return db[_0xc76d('0x2c')][_0xc76d('0x1f')](_0x3f6f20)[_0xc76d('0x25')](function(_0x2ad394){_0x40cd46[_0xc76d('0x1f')]=_0x2ad394;if(_0x54cee4[_0xc76d('0x33')][_0xc76d('0x41')]){_0x5e8d95['include']=[{'all':!![]}];}return db[_0xc76d('0x2c')][_0xc76d('0x42')](_0x5e8d95);})[_0xc76d('0x25')](function(_0x151e83){_0x40cd46[_0xc76d('0x43')]=_0x151e83;return _0x40cd46;})['then'](respondWithFilteredResult(_0x504458,_0x5e8d95))[_0xc76d('0x44')](handleError(_0x504458,null));};exports[_0xc76d('0x45')]=function(_0x24660e,_0x1e0386){var _0x2b4678={'raw':!![],'where':{'id':_0x24660e[_0xc76d('0x46')]['id']}},_0x3e1545={};_0x3e1545[_0xc76d('0x31')]=_[_0xc76d('0x32')](db[_0xc76d('0x2c')]['rawAttributes']);_0x3e1545[_0xc76d('0x33')]=_[_0xc76d('0x32')](_0x24660e[_0xc76d('0x33')]);_0x3e1545[_0xc76d('0x34')]=_['intersection'](_0x3e1545[_0xc76d('0x31')],_0x3e1545[_0xc76d('0x33')]);_0x2b4678[_0xc76d('0x36')]=_[_0xc76d('0x35')](_0x3e1545[_0xc76d('0x31')],qs['fields'](_0x24660e['query'][_0xc76d('0x37')]));_0x2b4678[_0xc76d('0x36')]=_0x2b4678[_0xc76d('0x36')][_0xc76d('0x47')]?_0x2b4678[_0xc76d('0x36')]:_0x3e1545[_0xc76d('0x31')];if(_0x24660e[_0xc76d('0x33')][_0xc76d('0x41')]){_0x2b4678[_0xc76d('0x48')]=[{'all':!![]}];}_0x2b4678=_[_0xc76d('0x3f')]({},_0x2b4678,_0x24660e['options']);return db[_0xc76d('0x2c')][_0xc76d('0x49')](_0x2b4678)[_0xc76d('0x25')](handleEntityNotFound(_0x1e0386,null))[_0xc76d('0x25')](respondWithResult(_0x1e0386,null))[_0xc76d('0x44')](handleError(_0x1e0386,null));};exports[_0xc76d('0x4a')]=function(_0xf92829,_0x2f9a78){return db[_0xc76d('0x2c')][_0xc76d('0x4a')](_0xf92829[_0xc76d('0x4b')],{})[_0xc76d('0x25')](respondWithResult(_0x2f9a78,0xc9))[_0xc76d('0x44')](handleError(_0x2f9a78,null));};exports[_0xc76d('0x24')]=function(_0x2f11a7,_0x205f93){if(_0x2f11a7['body']['id']){delete _0x2f11a7['body']['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x2f11a7[_0xc76d('0x46')]['id']}})[_0xc76d('0x25')](handleEntityNotFound(_0x205f93,null))[_0xc76d('0x25')](saveUpdates(_0x2f11a7[_0xc76d('0x4b')],null))['then'](respondWithResult(_0x205f93,null))['catch'](handleError(_0x205f93,null));};exports[_0xc76d('0x26')]=function(_0x582bd5,_0xa649cd){return db[_0xc76d('0x2c')][_0xc76d('0x49')]({'where':{'id':_0x582bd5[_0xc76d('0x46')]['id']}})[_0xc76d('0x25')](handleEntityNotFound(_0xa649cd,null))[_0xc76d('0x25')](removeEntity(_0xa649cd,null))['catch'](handleError(_0xa649cd,null));};exports[_0xc76d('0x4c')]=function(_0x526b76,_0x6e505b){return db['FaxTransferReport'][_0xc76d('0x4c')]()[_0xc76d('0x25')](respondWithResult(_0x6e505b,null))[_0xc76d('0x44')](handleError(_0x6e505b,null));};
\ No newline at end of file
index 69fd159..9c6dd60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b2=['./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x117d60,_0x217e31){var _0x155472=function(_0x506d92){while(--_0x506d92){_0x117d60['push'](_0x117d60['shift']());}};_0x155472(++_0x217e31);}(_0xa4b2,0x1da));var _0x2a4b=function(_0x26b5f7,_0x12f74e){_0x26b5f7=_0x26b5f7-0x0;var _0x4f2c5d=_0xa4b2[_0x26b5f7];return _0x4f2c5d;};'use strict';var _=require(_0x2a4b('0x0'));var util=require('util');var logger=require(_0x2a4b('0x1'))(_0x2a4b('0x2'));var moment=require(_0x2a4b('0x3'));var BPromise=require('bluebird');var rp=require(_0x2a4b('0x4'));var fs=require('fs');var path=require(_0x2a4b('0x5'));var rimraf=require('rimraf');var config=require(_0x2a4b('0x6'));var attributes=require(_0x2a4b('0x7'));module[_0x2a4b('0x8')]=function(_0x51a2a5,_0x4451b9){return _0x51a2a5[_0x2a4b('0x9')](_0x2a4b('0xa'),attributes,{'tableName':_0x2a4b('0xb'),'paranoid':![],'indexes':[{'name':_0x2a4b('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x47c5=['uniqueid','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','report_fax_transfer'];(function(_0x511f0e,_0x4786e8){var _0xf20f3d=function(_0xbc441){while(--_0xbc441){_0x511f0e['push'](_0x511f0e['shift']());}};_0xf20f3d(++_0x4786e8);}(_0x47c5,0x1cd));var _0x547c=function(_0x3a7fe5,_0x371426){_0x3a7fe5=_0x3a7fe5-0x0;var _0x18ed66=_0x47c5[_0x3a7fe5];return _0x18ed66;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x547c('0x0'))(_0x547c('0x1'));var moment=require('moment');var BPromise=require(_0x547c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x547c('0x3'));var rimraf=require(_0x547c('0x4'));var config=require(_0x547c('0x5'));var attributes=require(_0x547c('0x6'));module[_0x547c('0x7')]=function(_0x30d70f,_0x519585){return _0x30d70f['define']('FaxTransferReport',attributes,{'tableName':_0x547c('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x547c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index d2add97..d2ff3b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351e=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','randomstring','ioredis'];(function(_0x33ebf5,_0x258ec6){var _0x66957b=function(_0x49739a){while(--_0x49739a){_0x33ebf5['push'](_0x33ebf5['shift']());}};_0x66957b(++_0x258ec6);}(_0x351e,0x184));var _0xe351=function(_0x12ceba,_0x59ba15){_0x12ceba=_0x12ceba-0x0;var _0x36c243=_0x351e[_0x12ceba];return _0x36c243;};'use strict';var _=require(_0xe351('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe351('0x1'));var fs=require('fs');var Redis=require(_0xe351('0x2'));var db=require(_0xe351('0x3'))['db'];var utils=require(_0xe351('0x4'));var logger=require(_0xe351('0x5'))(_0xe351('0x6'));var config=require(_0xe351('0x7'));var jayson=require(_0xe351('0x8'));var client=jayson[_0xe351('0x9')][_0xe351('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11e58b,_0x43e22c,_0x386ed8){return new BPromise(function(_0x554ce7,_0x2f0d19){return client[_0xe351('0xb')](_0x11e58b,_0x386ed8)[_0xe351('0xc')](function(_0x2cb0c4){logger['info'](_0xe351('0xd'),_0x43e22c,_0xe351('0xe'));logger[_0xe351('0xf')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x43e22c,'request\x20sent',JSON[_0xe351('0x10')](_0x2cb0c4));if(_0x2cb0c4['error']){if(_0x2cb0c4[_0xe351('0x11')][_0xe351('0x12')]===0x1f4){logger['error'](_0xe351('0xd'),_0x43e22c,_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);return _0x2f0d19(_0x2cb0c4['error']['message']);}logger[_0xe351('0x11')](_0xe351('0xd'),_0x43e22c,_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);return _0x554ce7(_0x2cb0c4[_0xe351('0x11')][_0xe351('0x13')]);}else{logger[_0xe351('0x14')](_0xe351('0xd'),_0x43e22c,'request\x20sent');_0x554ce7(_0x2cb0c4[_0xe351('0x15')][_0xe351('0x13')]);}})[_0xe351('0x16')](function(_0x45f237){logger[_0xe351('0x11')](_0xe351('0xd'),_0x43e22c,_0x45f237);_0x2f0d19(_0x45f237);});});}
\ No newline at end of file
+var _0x923e=['http','request','FaxTransferReport,\x20%s,\x20%s','FaxTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client'];(function(_0x3a175b,_0x505d13){var _0x9b84fa=function(_0x5533e1){while(--_0x5533e1){_0x3a175b['push'](_0x3a175b['shift']());}};_0x9b84fa(++_0x505d13);}(_0x923e,0xb3));var _0xe923=function(_0x2ba8cc,_0x2ccb6d){_0x2ba8cc=_0x2ba8cc-0x0;var _0x53b54c=_0x923e[_0x2ba8cc];return _0x53b54c;};'use strict';var _=require(_0xe923('0x0'));var util=require(_0xe923('0x1'));var moment=require(_0xe923('0x2'));var BPromise=require('bluebird');var rs=require(_0xe923('0x3'));var fs=require('fs');var Redis=require(_0xe923('0x4'));var db=require(_0xe923('0x5'))['db'];var utils=require(_0xe923('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe923('0x7'));var jayson=require(_0xe923('0x8'));var client=jayson[_0xe923('0x9')][_0xe923('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x381aea,_0x57066d,_0xca154b){return new BPromise(function(_0x4cc893,_0x22e39e){return client[_0xe923('0xb')](_0x381aea,_0xca154b)['then'](function(_0x45021b){logger['info'](_0xe923('0xc'),_0x57066d,'request\x20sent');logger['debug'](_0xe923('0xd'),_0x57066d,_0xe923('0xe'),JSON['stringify'](_0x45021b));if(_0x45021b[_0xe923('0xf')]){if(_0x45021b[_0xe923('0xf')][_0xe923('0x10')]===0x1f4){logger['error'](_0xe923('0xc'),_0x57066d,_0x45021b[_0xe923('0xf')][_0xe923('0x11')]);return _0x22e39e(_0x45021b[_0xe923('0xf')]['message']);}logger[_0xe923('0xf')](_0xe923('0xc'),_0x57066d,_0x45021b[_0xe923('0xf')][_0xe923('0x11')]);return _0x4cc893(_0x45021b[_0xe923('0xf')][_0xe923('0x11')]);}else{logger[_0xe923('0x12')](_0xe923('0xc'),_0x57066d,_0xe923('0xe'));_0x4cc893(_0x45021b[_0xe923('0x13')]['message']);}})[_0xe923('0x14')](function(_0x2f5765){logger[_0xe923('0xf')](_0xe923('0xc'),_0x57066d,_0x2f5765);_0x22e39e(_0x2f5765);});});}
\ No newline at end of file
index 4e2cce2..74cb479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f87=['multer','util','path','fs-extra','../../components/interaction/service','./faxTransferReport.controller','isAuthenticated','index','/describe','/:id','show','create','put','delete','destroy','exports'];(function(_0x3c082e,_0x4bab6b){var _0x102d1f=function(_0x3ad158){while(--_0x3ad158){_0x3c082e['push'](_0x3c082e['shift']());}};_0x102d1f(++_0x4bab6b);}(_0x5f87,0x110));var _0x75f8=function(_0x33748f,_0x3314d8){_0x33748f=_0x33748f-0x0;var _0x39658c=_0x5f87[_0x33748f];return _0x39658c;};'use strict';var multer=require(_0x75f8('0x0'));var util=require(_0x75f8('0x1'));var path=require(_0x75f8('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x75f8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x75f8('0x4'));var config=require('../../config/environment');var controller=require(_0x75f8('0x5'));router['get']('/',auth[_0x75f8('0x6')](),controller[_0x75f8('0x7')]);router['get'](_0x75f8('0x8'),auth[_0x75f8('0x6')](),controller['describe']);router['get'](_0x75f8('0x9'),auth['isAuthenticated'](),controller[_0x75f8('0xa')]);router['post']('/',auth[_0x75f8('0x6')](),controller[_0x75f8('0xb')]);router[_0x75f8('0xc')](_0x75f8('0x9'),auth[_0x75f8('0x6')](),controller['update']);router[_0x75f8('0xd')]('/:id',auth[_0x75f8('0x6')](),controller[_0x75f8('0xe')]);module[_0x75f8('0xf')]=router;
\ No newline at end of file
+var _0x457c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','create','destroy','exports','multer','util','path','express'];(function(_0x2b55b5,_0x78505e){var _0x103d28=function(_0x5095a2){while(--_0x5095a2){_0x2b55b5['push'](_0x2b55b5['shift']());}};_0x103d28(++_0x78505e);}(_0x457c,0x1b1));var _0xc457=function(_0x41d41d,_0x5c943b){_0x41d41d=_0x41d41d-0x0;var _0x4d4632=_0x457c[_0x41d41d];return _0x4d4632;};'use strict';var multer=require(_0xc457('0x0'));var util=require(_0xc457('0x1'));var path=require(_0xc457('0x2'));var timeout=require('connect-timeout');var express=require(_0xc457('0x3'));var router=express[_0xc457('0x4')]();var fs_extra=require(_0xc457('0x5'));var auth=require(_0xc457('0x6'));var interaction=require(_0xc457('0x7'));var config=require(_0xc457('0x8'));var controller=require('./faxTransferReport.controller');router[_0xc457('0x9')]('/',auth[_0xc457('0xa')](),controller[_0xc457('0xb')]);router[_0xc457('0x9')](_0xc457('0xc'),auth[_0xc457('0xa')](),controller['describe']);router[_0xc457('0x9')](_0xc457('0xd'),auth['isAuthenticated'](),controller[_0xc457('0xe')]);router[_0xc457('0xf')]('/',auth[_0xc457('0xa')](),controller[_0xc457('0x10')]);router['put'](_0xc457('0xd'),auth[_0xc457('0xa')](),controller['update']);router['delete'](_0xc457('0xd'),auth[_0xc457('0xa')](),controller[_0xc457('0x11')]);module[_0xc457('0x12')]=router;
\ No newline at end of file
index fd7b9fe..879e041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08b9=['destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','update','delete','/:id'];(function(_0x27d21e,_0x1d0942){var _0x52c3c6=function(_0x3cb923){while(--_0x3cb923){_0x27d21e['push'](_0x27d21e['shift']());}};_0x52c3c6(++_0x1d0942);}(_0x08b9,0x177));var _0x908b=function(_0x34acff,_0x2637b3){_0x34acff=_0x34acff-0x0;var _0x3eacb6=_0x08b9[_0x34acff];return _0x3eacb6;};'use strict';var multer=require(_0x908b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x908b('0x1'));var express=require('express');var router=express[_0x908b('0x2')]();var fs_extra=require(_0x908b('0x3'));var auth=require(_0x908b('0x4'));var interaction=require(_0x908b('0x5'));var config=require(_0x908b('0x6'));var controller=require(_0x908b('0x7'));router[_0x908b('0x8')]('/',auth[_0x908b('0x9')](),controller[_0x908b('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x908b('0xb')]);router[_0x908b('0x8')](_0x908b('0xc'),auth[_0x908b('0x9')](),controller[_0x908b('0xd')]);router[_0x908b('0x8')](_0x908b('0xe'),auth['isAuthenticated'](),controller[_0x908b('0xf')]);router['post']('/',auth[_0x908b('0x9')](),controller[_0x908b('0x10')]);router[_0x908b('0x11')]('/:id/configurations',auth[_0x908b('0x9')](),controller['addConfiguration']);router['put']('/:id',auth[_0x908b('0x9')](),controller[_0x908b('0x12')]);router[_0x908b('0x13')](_0x908b('0x14'),auth[_0x908b('0x9')](),controller[_0x908b('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x4ff4=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','isAuthenticated','index','get','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4ff4,0x184));var _0x44ff=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0x4ff4[_0x58e469];return _0x4c01c5;};'use strict';var multer=require(_0x44ff('0x0'));var util=require(_0x44ff('0x1'));var path=require(_0x44ff('0x2'));var timeout=require(_0x44ff('0x3'));var express=require('express');var router=express[_0x44ff('0x4')]();var fs_extra=require(_0x44ff('0x5'));var auth=require(_0x44ff('0x6'));var interaction=require(_0x44ff('0x7'));var config=require('../../config/environment');var controller=require(_0x44ff('0x8'));router['get']('/',auth[_0x44ff('0x9')](),controller[_0x44ff('0xa')]);router[_0x44ff('0xb')]('/:id',auth[_0x44ff('0x9')](),controller['show']);router[_0x44ff('0xb')](_0x44ff('0xc'),auth[_0x44ff('0x9')](),controller[_0x44ff('0xd')]);router['get'](_0x44ff('0xe'),auth[_0x44ff('0x9')](),controller[_0x44ff('0xf')]);router[_0x44ff('0x10')]('/',auth['isAuthenticated'](),controller[_0x44ff('0x11')]);router['post'](_0x44ff('0xc'),auth['isAuthenticated'](),controller[_0x44ff('0x12')]);router[_0x44ff('0x13')]('/:id',auth[_0x44ff('0x9')](),controller[_0x44ff('0x14')]);router[_0x44ff('0x15')]('/:id',auth[_0x44ff('0x9')](),controller[_0x44ff('0x16')]);module[_0x44ff('0x17')]=router;
\ No newline at end of file
index 8a8dade..36c61e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d44=['basic','integrationTab','newTab','sequelize','STRING','ENUM'];(function(_0x1d875a,_0x13faba){var _0x1da65f=function(_0x742618){while(--_0x742618){_0x1d875a['push'](_0x1d875a['shift']());}};_0x1da65f(++_0x13faba);}(_0x5d44,0x189));var _0x45d4=function(_0x33a12b,_0x526a98){_0x33a12b=_0x33a12b-0x0;var _0x41be89=_0x5d44[_0x33a12b];return _0x41be89;};'use strict';var Sequelize=require(_0x45d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x45d4('0x1')]},'description':{'type':Sequelize[_0x45d4('0x1')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x45d4('0x1')]},'authType':{'type':Sequelize[_0x45d4('0x2')](_0x45d4('0x3')),'defaultValue':_0x45d4('0x3')},'password':{'type':Sequelize[_0x45d4('0x1')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x45d4('0x1')]},'tokenSecret':{'type':Sequelize[_0x45d4('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x45d4('0x2')](_0x45d4('0x4'),_0x45d4('0x5')),'defaultValue':_0x45d4('0x4')}};
\ No newline at end of file
+var _0xcd1c=['ENUM','integrationTab','newTab','exports','STRING'];(function(_0x5b64e5,_0x54b8ec){var _0x2b3f81=function(_0x47aaae){while(--_0x47aaae){_0x5b64e5['push'](_0x5b64e5['shift']());}};_0x2b3f81(++_0x54b8ec);}(_0xcd1c,0x1ca));var _0xccd1=function(_0x5212bf,_0x51d007){_0x5212bf=_0x5212bf-0x0;var _0x1c426c=_0xcd1c[_0x5212bf];return _0x1c426c;};'use strict';var Sequelize=require('sequelize');module[_0xccd1('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xccd1('0x1')]},'username':{'type':Sequelize[_0xccd1('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0xccd1('0x2')]('basic'),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0xccd1('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xccd1('0x1')]},'tokenSecret':{'type':Sequelize[_0xccd1('0x1')]},'serverUrl':{'type':Sequelize[_0xccd1('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xccd1('0x3'),_0xccd1('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 0b22f17..adae422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f4=['Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','DeskAccount','fieldName','type','model','keys','query','filters','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','include','findAll','show','params','intersection','includeAll','options','find','catch','body','getConfigurations','findOne','rawAttributes','order','hasOwnProperty','addConfiguration','channel','Descriptions','getDescriptions','create','Subjects','DeskField','getFields','priority','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','slice','substring','lastIndexOf','format','%s/custom_fields','application/json','headers','Authorization'];(function(_0x24af62,_0x2ec32a){var _0x5f265c=function(_0x258b03){while(--_0x258b03){_0x24af62['push'](_0x24af62['shift']());}};_0x5f265c(++_0x2ec32a);}(_0xb2f4,0xf6));var _0x4b2f=function(_0x3d542c,_0x2098ae){_0x3d542c=_0x3d542c-0x0;var _0x4946de=_0xb2f4[_0x3d542c];return _0x4946de;};'use strict';var emlformat=require(_0x4b2f('0x0'));var rimraf=require(_0x4b2f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4b2f('0x2'));var moment=require(_0x4b2f('0x3'));var BPromise=require(_0x4b2f('0x4'));var Mustache=require(_0x4b2f('0x5'));var util=require(_0x4b2f('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4b2f('0x7'));var ejs=require(_0x4b2f('0x8'));var fs=require('fs');var fs_extra=require(_0x4b2f('0x9'));var _=require(_0x4b2f('0xa'));var squel=require(_0x4b2f('0xb'));var crypto=require('crypto');var jsforce=require(_0x4b2f('0xc'));var deskjs=require(_0x4b2f('0xd'));var toCsv=require(_0x4b2f('0x7'));var querystring=require('querystring');var Papa=require(_0x4b2f('0xe'));var Redis=require(_0x4b2f('0xf'));var authService=require(_0x4b2f('0x10'));var qs=require(_0x4b2f('0x11'));var as=require(_0x4b2f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b2f('0x13'))('api');var utils=require(_0x4b2f('0x14'));var config=require(_0x4b2f('0x15'));var licenseUtil=require(_0x4b2f('0x16'));var db=require(_0x4b2f('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3de4f7,_0x198284){_0x198284=_0x198284||0xcc;return function(_0xca4d5b){if(_0xca4d5b){return _0x3de4f7[_0x4b2f('0x18')](_0x198284);}return _0x3de4f7['status'](_0x198284)[_0x4b2f('0x19')]();};}function respondWithResult(_0x4ba4ba,_0x1edb65){_0x1edb65=_0x1edb65||0xc8;return function(_0x18a0d6){if(_0x18a0d6){return _0x4ba4ba[_0x4b2f('0x1a')](_0x1edb65)['json'](_0x18a0d6);}};}function respondWithFilteredResult(_0x23f168,_0x2dd4bb){return function(_0x180726){if(_0x180726){var _0x586324=typeof _0x2dd4bb[_0x4b2f('0x1b')]===_0x4b2f('0x1c')&&typeof _0x2dd4bb[_0x4b2f('0x1d')]===_0x4b2f('0x1c');var _0x123df1=_0x180726[_0x4b2f('0x1e')];var _0x1b9f10=_0x586324?0x0:_0x2dd4bb[_0x4b2f('0x1b')];var _0x527789=_0x586324?_0x180726[_0x4b2f('0x1e')]:_0x2dd4bb[_0x4b2f('0x1b')]+_0x2dd4bb[_0x4b2f('0x1d')];var _0x15d030;if(_0x527789>=_0x123df1){_0x527789=_0x123df1;_0x15d030=0xc8;}else{_0x15d030=0xce;}_0x23f168[_0x4b2f('0x1a')](_0x15d030);return _0x23f168[_0x4b2f('0x1f')](_0x4b2f('0x20'),_0x1b9f10+'-'+_0x527789+'/'+_0x123df1)[_0x4b2f('0x21')](_0x180726);}return null;};}function patchUpdates(_0x388968){return function(_0x52ebe1){try{jsonpatch[_0x4b2f('0x22')](_0x52ebe1,_0x388968,!![]);}catch(_0x5569e9){return BPromise[_0x4b2f('0x23')](_0x5569e9);}return _0x52ebe1[_0x4b2f('0x24')]();};}function saveUpdates(_0x4a40ad,_0x206bab){return function(_0x2bf49e){if(_0x2bf49e){return _0x2bf49e[_0x4b2f('0x25')](_0x4a40ad)[_0x4b2f('0x26')](function(_0x20901f){return _0x20901f;});}return null;};}function removeEntity(_0x5b578f,_0x1f4a75){return function(_0x254800){if(_0x254800){return _0x254800[_0x4b2f('0x27')]()['then'](function(){_0x5b578f[_0x4b2f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d518a,_0x142938){return function(_0x32a598){if(!_0x32a598){_0x4d518a['sendStatus'](0x194);}return _0x32a598;};}function handleError(_0x30c78e,_0x4f76e3){_0x4f76e3=_0x4f76e3||0x1f4;return function(_0x31c54c){logger['error'](_0x31c54c[_0x4b2f('0x28')]);if(_0x31c54c[_0x4b2f('0x29')]){delete _0x31c54c[_0x4b2f('0x29')];}_0x30c78e[_0x4b2f('0x1a')](_0x4f76e3)[_0x4b2f('0x2a')](_0x31c54c);};}exports[_0x4b2f('0x2b')]=function(_0x3fe776,_0x5156b9){var _0x1f4dba={},_0xb61b1c={},_0x5372b6={'count':0x0,'rows':[]};var _0x5ee052=_[_0x4b2f('0x2c')](db[_0x4b2f('0x2d')]['rawAttributes'],function(_0x594db1){return{'name':_0x594db1[_0x4b2f('0x2e')],'type':_0x594db1[_0x4b2f('0x2f')]['key']};});_0xb61b1c[_0x4b2f('0x30')]=_[_0x4b2f('0x2c')](_0x5ee052,_0x4b2f('0x29'));_0xb61b1c['query']=_[_0x4b2f('0x31')](_0x3fe776[_0x4b2f('0x32')]);_0xb61b1c[_0x4b2f('0x33')]=_['intersection'](_0xb61b1c[_0x4b2f('0x30')],_0xb61b1c[_0x4b2f('0x32')]);_0x1f4dba[_0x4b2f('0x34')]=_['intersection'](_0xb61b1c[_0x4b2f('0x30')],qs['fields'](_0x3fe776['query'][_0x4b2f('0x35')]));_0x1f4dba['attributes']=_0x1f4dba[_0x4b2f('0x34')][_0x4b2f('0x36')]?_0x1f4dba[_0x4b2f('0x34')]:_0xb61b1c[_0x4b2f('0x30')];if(!_0x3fe776[_0x4b2f('0x32')]['hasOwnProperty'](_0x4b2f('0x37'))){_0x1f4dba[_0x4b2f('0x1d')]=qs[_0x4b2f('0x1d')](_0x3fe776[_0x4b2f('0x32')]['limit']);_0x1f4dba[_0x4b2f('0x1b')]=qs['offset'](_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x1b')]);}_0x1f4dba['order']=qs['sort'](_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x38')]);_0x1f4dba[_0x4b2f('0x39')]=qs[_0x4b2f('0x33')](_[_0x4b2f('0x3a')](_0x3fe776['query'],_0xb61b1c[_0x4b2f('0x33')]),_0x5ee052);if(_0x3fe776[_0x4b2f('0x32')]['filter']){_0x1f4dba[_0x4b2f('0x39')]=_[_0x4b2f('0x3b')](_0x1f4dba[_0x4b2f('0x39')],{'$or':_[_0x4b2f('0x2c')](_0x5ee052,function(_0x4409c5){if(_0x4409c5['type']!==_0x4b2f('0x3c')){var _0x3356c3={};_0x3356c3[_0x4409c5[_0x4b2f('0x29')]]={'$like':'%'+_0x3fe776[_0x4b2f('0x32')][_0x4b2f('0x3d')]+'%'};return _0x3356c3;}})});}_0x1f4dba=_[_0x4b2f('0x3b')]({},_0x1f4dba,_0x3fe776['options']);var _0x477a04={'where':_0x1f4dba[_0x4b2f('0x39')]};return db[_0x4b2f('0x2d')][_0x4b2f('0x1e')](_0x477a04)[_0x4b2f('0x26')](function(_0x1bd216){_0x5372b6[_0x4b2f('0x1e')]=_0x1bd216;if(_0x3fe776[_0x4b2f('0x32')]['includeAll']){_0x1f4dba[_0x4b2f('0x3e')]=[{'all':!![]}];}return db[_0x4b2f('0x2d')][_0x4b2f('0x3f')](_0x1f4dba);})['then'](function(_0x2982a0){_0x5372b6['rows']=_0x2982a0;return _0x5372b6;})['then'](respondWithFilteredResult(_0x5156b9,_0x1f4dba))['catch'](handleError(_0x5156b9,null));};exports[_0x4b2f('0x40')]=function(_0x3ff5da,_0x10159d){var _0x1ed4d6={'raw':![],'where':{'id':_0x3ff5da[_0x4b2f('0x41')]['id']}},_0x114dd3={};_0x114dd3['model']=_[_0x4b2f('0x31')](db[_0x4b2f('0x2d')]['rawAttributes']);_0x114dd3[_0x4b2f('0x32')]=_[_0x4b2f('0x31')](_0x3ff5da['query']);_0x114dd3[_0x4b2f('0x33')]=_[_0x4b2f('0x42')](_0x114dd3[_0x4b2f('0x30')],_0x114dd3[_0x4b2f('0x32')]);_0x1ed4d6['attributes']=_[_0x4b2f('0x42')](_0x114dd3[_0x4b2f('0x30')],qs['fields'](_0x3ff5da[_0x4b2f('0x32')]['fields']));_0x1ed4d6['attributes']=_0x1ed4d6[_0x4b2f('0x34')][_0x4b2f('0x36')]?_0x1ed4d6[_0x4b2f('0x34')]:_0x114dd3[_0x4b2f('0x30')];if(_0x3ff5da[_0x4b2f('0x32')][_0x4b2f('0x43')]){_0x1ed4d6[_0x4b2f('0x3e')]=[{'all':!![]}];}_0x1ed4d6=_[_0x4b2f('0x3b')]({},_0x1ed4d6,_0x3ff5da[_0x4b2f('0x44')]);return db[_0x4b2f('0x2d')][_0x4b2f('0x45')](_0x1ed4d6)[_0x4b2f('0x26')](handleEntityNotFound(_0x10159d,null))[_0x4b2f('0x26')](respondWithResult(_0x10159d,null))[_0x4b2f('0x46')](handleError(_0x10159d,null));};exports['create']=function(_0x53882e,_0x1921a4){return db['DeskAccount']['create'](_0x53882e[_0x4b2f('0x47')],{})[_0x4b2f('0x26')](respondWithResult(_0x1921a4,0xc9))[_0x4b2f('0x46')](handleError(_0x1921a4,null));};exports[_0x4b2f('0x25')]=function(_0x10ae9b,_0x2d1134){if(_0x10ae9b[_0x4b2f('0x47')]['id']){delete _0x10ae9b['body']['id'];}return db[_0x4b2f('0x2d')][_0x4b2f('0x45')]({'where':{'id':_0x10ae9b[_0x4b2f('0x41')]['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x2d1134,null))[_0x4b2f('0x26')](saveUpdates(_0x10ae9b[_0x4b2f('0x47')],null))[_0x4b2f('0x26')](respondWithResult(_0x2d1134,null))[_0x4b2f('0x46')](handleError(_0x2d1134,null));};exports['destroy']=function(_0x3d6f29,_0x6e9821){return db[_0x4b2f('0x2d')]['find']({'where':{'id':_0x3d6f29['params']['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x6e9821,null))[_0x4b2f('0x26')](removeEntity(_0x6e9821,null))['catch'](handleError(_0x6e9821,null));};exports[_0x4b2f('0x48')]=function(_0x1ba4f5,_0x3d149f,_0x5467aa){var _0x586cd6={};var _0x586c52={};var _0x396d8e;var _0x2c3951;return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x1ba4f5[_0x4b2f('0x41')]['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x3d149f,null))[_0x4b2f('0x26')](function(_0x138620){if(_0x138620){_0x396d8e=_0x138620;_0x586c52[_0x4b2f('0x30')]=_[_0x4b2f('0x31')](db['DeskConfiguration'][_0x4b2f('0x4a')]);_0x586c52['query']=_['keys'](_0x1ba4f5[_0x4b2f('0x32')]);_0x586c52[_0x4b2f('0x33')]=_[_0x4b2f('0x42')](_0x586c52[_0x4b2f('0x30')],_0x586c52[_0x4b2f('0x32')]);_0x586cd6[_0x4b2f('0x34')]=_[_0x4b2f('0x42')](_0x586c52['model'],qs['fields'](_0x1ba4f5[_0x4b2f('0x32')]['fields']));_0x586cd6[_0x4b2f('0x34')]=_0x586cd6['attributes']['length']?_0x586cd6[_0x4b2f('0x34')]:_0x586c52[_0x4b2f('0x30')];_0x586cd6[_0x4b2f('0x4b')]=qs['sort'](_0x1ba4f5['query'][_0x4b2f('0x38')]);_0x586cd6['where']=qs['filters'](_[_0x4b2f('0x3a')](_0x1ba4f5['query'],_0x586c52[_0x4b2f('0x33')]));if(_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x3d')]){_0x586cd6['where']=_['merge'](_0x586cd6['where'],{'$or':_['map'](_0x586cd6[_0x4b2f('0x34')],function(_0x5bc39e){var _0x2eeff5={};_0x2eeff5[_0x5bc39e]={'$like':'%'+_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x3d')]+'%'};return _0x2eeff5;})});}_0x586cd6=_[_0x4b2f('0x3b')]({},_0x586cd6,_0x1ba4f5[_0x4b2f('0x44')]);return _0x396d8e['getConfigurations'](_0x586cd6);}})[_0x4b2f('0x26')](function(_0xb9bc){if(_0xb9bc){_0x2c3951=_0xb9bc['length'];if(!_0x1ba4f5['query'][_0x4b2f('0x4c')](_0x4b2f('0x37'))){_0x586cd6['limit']=qs[_0x4b2f('0x1d')](_0x1ba4f5[_0x4b2f('0x32')][_0x4b2f('0x1d')]);_0x586cd6[_0x4b2f('0x1b')]=qs['offset'](_0x1ba4f5[_0x4b2f('0x32')]['offset']);}return _0x396d8e[_0x4b2f('0x48')](_0x586cd6);}})[_0x4b2f('0x26')](function(_0xc31054){if(_0xc31054){return _0xc31054?{'count':_0x2c3951,'rows':_0xc31054}:null;}})[_0x4b2f('0x26')](respondWithResult(_0x3d149f,null))[_0x4b2f('0x46')](handleError(_0x3d149f,null));};exports[_0x4b2f('0x4d')]=function(_0x1e2294,_0x1125ff,_0x39ac0d){if(_0x1e2294['body']['id']){delete _0x1e2294[_0x4b2f('0x47')]['id'];}return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x1e2294['params']['id']}})[_0x4b2f('0x26')](handleEntityNotFound(_0x1125ff,null))['then'](function(_0x416117){if(_0x416117){_0x1e2294[_0x4b2f('0x47')]['AccountId']=_0x416117['id'];_0x1e2294[_0x4b2f('0x47')]['Subjects']=integrations['getSubjects'](_0x1e2294[_0x4b2f('0x47')][_0x4b2f('0x4e')],_0x1e2294['body']['type']);_0x1e2294['body'][_0x4b2f('0x4f')]=integrations[_0x4b2f('0x50')](_0x1e2294['body'][_0x4b2f('0x4e')],_0x1e2294[_0x4b2f('0x47')][_0x4b2f('0x2f')]);return db['DeskConfiguration'][_0x4b2f('0x51')](_0x1e2294[_0x4b2f('0x47')],{'include':[{'model':db['DeskField'],'as':_0x4b2f('0x52')},{'model':db[_0x4b2f('0x53')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x1125ff,null))['catch'](handleError(_0x1125ff,null));};exports[_0x4b2f('0x54')]=function(_0x450aeb,_0x1d3e7b,_0x2e2231){var _0x4c9513=[{'name':_0x4b2f('0x55'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x27f378='';return db[_0x4b2f('0x2d')][_0x4b2f('0x49')]({'where':{'id':_0x450aeb[_0x4b2f('0x41')]['id']},'attributes':['id','remoteUri',_0x4b2f('0x56'),_0x4b2f('0x57'),_0x4b2f('0x58'),_0x4b2f('0x59'),_0x4b2f('0x5a'),_0x4b2f('0x5b'),_0x4b2f('0x5c')]})[_0x4b2f('0x26')](handleEntityNotFound(_0x1d3e7b,null))[_0x4b2f('0x26')](function(_0xc09502){if(_0xc09502){_0x27f378=_0xc09502[_0x4b2f('0x5d')];var _0xdee6d4=_0x27f378[_0x4b2f('0x5e')](-0x1);if(_0xdee6d4==='/'){_0x27f378=_0x27f378[_0x4b2f('0x5f')](0x0,_0x27f378[_0x4b2f('0x60')](_0xdee6d4));}var _0x3853d0={'method':'GET','uri':util[_0x4b2f('0x61')](_0x4b2f('0x62'),_0x27f378),'headers':{'Content-Type':_0x4b2f('0x63'),'Accept':_0x4b2f('0x63')},'json':!![]};if(_0xc09502[_0x4b2f('0x56')]==='basic'){_0x3853d0[_0x4b2f('0x64')][_0x4b2f('0x65')]=util[_0x4b2f('0x61')](_0x4b2f('0x66'),new Buffer(util[_0x4b2f('0x61')](_0x4b2f('0x67'),_0xc09502['username'],_0xc09502[_0x4b2f('0x58')]))[_0x4b2f('0x68')](_0x4b2f('0x69')));}return rp(_0x3853d0)[_0x4b2f('0x26')](function(_0x50d59f){return _0x4c9513[_0x4b2f('0x6a')](_['map'](_0x50d59f[_0x4b2f('0x6b')][_0x4b2f('0x6c')],function(_0x5838b0){return{'id':_0x5838b0[_0x4b2f('0x29')],'name':_0x5838b0[_0x4b2f('0x29')],'type':_0x5838b0['type'],'active':_0x5838b0['active'],'label':_0x5838b0[_0x4b2f('0x6d')],'custom':!![]};}));});}})['then'](function(_0x4ffa40){return{'count':_0x4ffa40['length'],'rows':_0x4ffa40};})[_0x4b2f('0x26')](respondWithResult(_0x1d3e7b,null))[_0x4b2f('0x46')](function(_0x5e372f){var _0x2ec62a=_0x450aeb[_0x4b2f('0x32')][_0x4b2f('0x6e')]?0x1f4:_0x5e372f[_0x4b2f('0x6f')]||0x1f4;logger[_0x4b2f('0x70')](_0x4b2f('0x71'),_0x4b2f('0x54'),_0x2ec62a,JSON[_0x4b2f('0x72')](_0x5e372f));delete _0x5e372f['name'];if(_0x2ec62a===0x191){_0x2ec62a=0x190;}_0x1d3e7b[_0x4b2f('0x1a')](_0x2ec62a)[_0x4b2f('0x2a')](_0x450aeb[_0x4b2f('0x32')]['test']?{'message':_0x4b2f('0x73'),'statusCode':_0x5e372f[_0x4b2f('0x6f')]}:_0x5e372f);});};
\ No newline at end of file
+var _0x5f29=['zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','undefined','limit','offset','count','set','reject','save','update','then','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','includeAll','include','catch','show','params','options','find','create','body','destroy','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','username','password','consumerSecret','token','substring','lastIndexOf','GET','format','application/json','authType','basic','Basic\x20%s','%s:%s','concat','_embedded','entries','active','label','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f29,0x6c));var _0x95f2=function(_0x52ab89,_0x58a774){_0x52ab89=_0x52ab89-0x0;var _0x5e689d=_0x5f29[_0x52ab89];return _0x5e689d;};'use strict';var emlformat=require(_0x95f2('0x0'));var rimraf=require(_0x95f2('0x1'));var zipdir=require(_0x95f2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x95f2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x95f2('0x4'));var util=require(_0x95f2('0x5'));var path=require(_0x95f2('0x6'));var sox=require(_0x95f2('0x7'));var csv=require(_0x95f2('0x8'));var ejs=require(_0x95f2('0x9'));var fs=require('fs');var fs_extra=require(_0x95f2('0xa'));var _=require('lodash');var squel=require(_0x95f2('0xb'));var crypto=require(_0x95f2('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x95f2('0x8'));var querystring=require(_0x95f2('0xd'));var Papa=require(_0x95f2('0xe'));var Redis=require('ioredis');var authService=require(_0x95f2('0xf'));var qs=require(_0x95f2('0x10'));var as=require(_0x95f2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x95f2('0x12'))(_0x95f2('0x13'));var utils=require(_0x95f2('0x14'));var config=require(_0x95f2('0x15'));var licenseUtil=require(_0x95f2('0x16'));var db=require(_0x95f2('0x17'))['db'];var integrations=require(_0x95f2('0x18'));function respondWithStatusCode(_0x21f9c8,_0x112ad4){_0x112ad4=_0x112ad4||0xcc;return function(_0x5d7c4c){if(_0x5d7c4c){return _0x21f9c8['sendStatus'](_0x112ad4);}return _0x21f9c8['status'](_0x112ad4)[_0x95f2('0x19')]();};}function respondWithResult(_0x1f4374,_0x3fc00f){_0x3fc00f=_0x3fc00f||0xc8;return function(_0x305b18){if(_0x305b18){return _0x1f4374[_0x95f2('0x1a')](_0x3fc00f)[_0x95f2('0x1b')](_0x305b18);}};}function respondWithFilteredResult(_0x149692,_0x533701){return function(_0x382939){if(_0x382939){var _0xd47cdf=typeof _0x533701['offset']===_0x95f2('0x1c')&&typeof _0x533701[_0x95f2('0x1d')]===_0x95f2('0x1c');var _0x53f65d=_0x382939['count'];var _0x468b5a=_0xd47cdf?0x0:_0x533701[_0x95f2('0x1e')];var _0x2b3f2e=_0xd47cdf?_0x382939[_0x95f2('0x1f')]:_0x533701[_0x95f2('0x1e')]+_0x533701[_0x95f2('0x1d')];var _0x57bb2a;if(_0x2b3f2e>=_0x53f65d){_0x2b3f2e=_0x53f65d;_0x57bb2a=0xc8;}else{_0x57bb2a=0xce;}_0x149692[_0x95f2('0x1a')](_0x57bb2a);return _0x149692[_0x95f2('0x20')]('Content-Range',_0x468b5a+'-'+_0x2b3f2e+'/'+_0x53f65d)[_0x95f2('0x1b')](_0x382939);}return null;};}function patchUpdates(_0x4d7c45){return function(_0x569569){try{jsonpatch['apply'](_0x569569,_0x4d7c45,!![]);}catch(_0x297638){return BPromise[_0x95f2('0x21')](_0x297638);}return _0x569569[_0x95f2('0x22')]();};}function saveUpdates(_0x36d625,_0x4bd994){return function(_0xbe814a){if(_0xbe814a){return _0xbe814a[_0x95f2('0x23')](_0x36d625)[_0x95f2('0x24')](function(_0x45bf93){return _0x45bf93;});}return null;};}function removeEntity(_0x367465,_0x1c8f09){return function(_0xcd10f9){if(_0xcd10f9){return _0xcd10f9['destroy']()[_0x95f2('0x24')](function(){_0x367465[_0x95f2('0x1a')](0xcc)[_0x95f2('0x19')]();});}};}function handleEntityNotFound(_0x2b2bd5,_0x51a7b6){return function(_0x54a0e1){if(!_0x54a0e1){_0x2b2bd5[_0x95f2('0x25')](0x194);}return _0x54a0e1;};}function handleError(_0x12286e,_0x14f71a){_0x14f71a=_0x14f71a||0x1f4;return function(_0x227cdf){logger[_0x95f2('0x26')](_0x227cdf[_0x95f2('0x27')]);if(_0x227cdf[_0x95f2('0x28')]){delete _0x227cdf[_0x95f2('0x28')];}_0x12286e[_0x95f2('0x1a')](_0x14f71a)[_0x95f2('0x29')](_0x227cdf);};}exports[_0x95f2('0x2a')]=function(_0xe4ea1f,_0x5ea49e){var _0xfab897={},_0x20e60a={},_0x580711={'count':0x0,'rows':[]};var _0x3316bc=_[_0x95f2('0x2b')](db[_0x95f2('0x2c')][_0x95f2('0x2d')],function(_0x117860){return{'name':_0x117860[_0x95f2('0x2e')],'type':_0x117860[_0x95f2('0x2f')][_0x95f2('0x30')]};});_0x20e60a['model']=_[_0x95f2('0x2b')](_0x3316bc,_0x95f2('0x28'));_0x20e60a[_0x95f2('0x31')]=_[_0x95f2('0x32')](_0xe4ea1f[_0x95f2('0x31')]);_0x20e60a['filters']=_[_0x95f2('0x33')](_0x20e60a[_0x95f2('0x34')],_0x20e60a[_0x95f2('0x31')]);_0xfab897[_0x95f2('0x35')]=_[_0x95f2('0x33')](_0x20e60a[_0x95f2('0x34')],qs[_0x95f2('0x36')](_0xe4ea1f['query'][_0x95f2('0x36')]));_0xfab897[_0x95f2('0x35')]=_0xfab897[_0x95f2('0x35')][_0x95f2('0x37')]?_0xfab897[_0x95f2('0x35')]:_0x20e60a[_0x95f2('0x34')];if(!_0xe4ea1f[_0x95f2('0x31')][_0x95f2('0x38')]('nolimit')){_0xfab897[_0x95f2('0x1d')]=qs[_0x95f2('0x1d')](_0xe4ea1f[_0x95f2('0x31')]['limit']);_0xfab897['offset']=qs[_0x95f2('0x1e')](_0xe4ea1f[_0x95f2('0x31')]['offset']);}_0xfab897[_0x95f2('0x39')]=qs[_0x95f2('0x3a')](_0xe4ea1f[_0x95f2('0x31')][_0x95f2('0x3a')]);_0xfab897[_0x95f2('0x3b')]=qs['filters'](_[_0x95f2('0x3c')](_0xe4ea1f['query'],_0x20e60a[_0x95f2('0x3d')]),_0x3316bc);if(_0xe4ea1f[_0x95f2('0x31')][_0x95f2('0x3e')]){_0xfab897['where']=_[_0x95f2('0x3f')](_0xfab897[_0x95f2('0x3b')],{'$or':_[_0x95f2('0x2b')](_0x3316bc,function(_0x576715){if(_0x576715[_0x95f2('0x2f')]!=='VIRTUAL'){var _0x218c53={};_0x218c53[_0x576715['name']]={'$like':'%'+_0xe4ea1f[_0x95f2('0x31')][_0x95f2('0x3e')]+'%'};return _0x218c53;}})});}_0xfab897=_[_0x95f2('0x3f')]({},_0xfab897,_0xe4ea1f['options']);var _0x32820f={'where':_0xfab897[_0x95f2('0x3b')]};return db['DeskAccount'][_0x95f2('0x1f')](_0x32820f)['then'](function(_0x1ac7f3){_0x580711['count']=_0x1ac7f3;if(_0xe4ea1f[_0x95f2('0x31')][_0x95f2('0x40')]){_0xfab897[_0x95f2('0x41')]=[{'all':!![]}];}return db[_0x95f2('0x2c')]['findAll'](_0xfab897);})[_0x95f2('0x24')](function(_0x4facec){_0x580711['rows']=_0x4facec;return _0x580711;})[_0x95f2('0x24')](respondWithFilteredResult(_0x5ea49e,_0xfab897))[_0x95f2('0x42')](handleError(_0x5ea49e,null));};exports[_0x95f2('0x43')]=function(_0x36a5ca,_0x5bd1c6){var _0x744738={'raw':![],'where':{'id':_0x36a5ca[_0x95f2('0x44')]['id']}},_0x36bb6c={};_0x36bb6c['model']=_[_0x95f2('0x32')](db[_0x95f2('0x2c')]['rawAttributes']);_0x36bb6c[_0x95f2('0x31')]=_[_0x95f2('0x32')](_0x36a5ca[_0x95f2('0x31')]);_0x36bb6c[_0x95f2('0x3d')]=_[_0x95f2('0x33')](_0x36bb6c[_0x95f2('0x34')],_0x36bb6c[_0x95f2('0x31')]);_0x744738['attributes']=_[_0x95f2('0x33')](_0x36bb6c['model'],qs[_0x95f2('0x36')](_0x36a5ca[_0x95f2('0x31')][_0x95f2('0x36')]));_0x744738[_0x95f2('0x35')]=_0x744738[_0x95f2('0x35')][_0x95f2('0x37')]?_0x744738['attributes']:_0x36bb6c[_0x95f2('0x34')];if(_0x36a5ca[_0x95f2('0x31')][_0x95f2('0x40')]){_0x744738[_0x95f2('0x41')]=[{'all':!![]}];}_0x744738=_[_0x95f2('0x3f')]({},_0x744738,_0x36a5ca[_0x95f2('0x45')]);return db[_0x95f2('0x2c')][_0x95f2('0x46')](_0x744738)['then'](handleEntityNotFound(_0x5bd1c6,null))[_0x95f2('0x24')](respondWithResult(_0x5bd1c6,null))[_0x95f2('0x42')](handleError(_0x5bd1c6,null));};exports[_0x95f2('0x47')]=function(_0x184e0a,_0x48490c){return db[_0x95f2('0x2c')][_0x95f2('0x47')](_0x184e0a[_0x95f2('0x48')],{})[_0x95f2('0x24')](respondWithResult(_0x48490c,0xc9))[_0x95f2('0x42')](handleError(_0x48490c,null));};exports[_0x95f2('0x23')]=function(_0x3ba050,_0x8f730d){if(_0x3ba050[_0x95f2('0x48')]['id']){delete _0x3ba050[_0x95f2('0x48')]['id'];}return db[_0x95f2('0x2c')]['find']({'where':{'id':_0x3ba050['params']['id']}})[_0x95f2('0x24')](handleEntityNotFound(_0x8f730d,null))[_0x95f2('0x24')](saveUpdates(_0x3ba050[_0x95f2('0x48')],null))[_0x95f2('0x24')](respondWithResult(_0x8f730d,null))[_0x95f2('0x42')](handleError(_0x8f730d,null));};exports[_0x95f2('0x49')]=function(_0x3853b5,_0x30ce11){return db['DeskAccount'][_0x95f2('0x46')]({'where':{'id':_0x3853b5['params']['id']}})[_0x95f2('0x24')](handleEntityNotFound(_0x30ce11,null))[_0x95f2('0x24')](removeEntity(_0x30ce11,null))[_0x95f2('0x42')](handleError(_0x30ce11,null));};exports[_0x95f2('0x4a')]=function(_0x3b8a67,_0x126326,_0x253db3){var _0x3b1b14={};var _0x3213cc={};var _0x15e1b5;var _0x54ea1c;return db['DeskAccount'][_0x95f2('0x4b')]({'where':{'id':_0x3b8a67['params']['id']}})['then'](handleEntityNotFound(_0x126326,null))[_0x95f2('0x24')](function(_0x443e9d){if(_0x443e9d){_0x15e1b5=_0x443e9d;_0x3213cc[_0x95f2('0x34')]=_[_0x95f2('0x32')](db[_0x95f2('0x4c')]['rawAttributes']);_0x3213cc['query']=_[_0x95f2('0x32')](_0x3b8a67[_0x95f2('0x31')]);_0x3213cc[_0x95f2('0x3d')]=_[_0x95f2('0x33')](_0x3213cc[_0x95f2('0x34')],_0x3213cc[_0x95f2('0x31')]);_0x3b1b14[_0x95f2('0x35')]=_[_0x95f2('0x33')](_0x3213cc[_0x95f2('0x34')],qs[_0x95f2('0x36')](_0x3b8a67['query']['fields']));_0x3b1b14[_0x95f2('0x35')]=_0x3b1b14[_0x95f2('0x35')][_0x95f2('0x37')]?_0x3b1b14[_0x95f2('0x35')]:_0x3213cc[_0x95f2('0x34')];_0x3b1b14[_0x95f2('0x39')]=qs[_0x95f2('0x3a')](_0x3b8a67[_0x95f2('0x31')]['sort']);_0x3b1b14[_0x95f2('0x3b')]=qs[_0x95f2('0x3d')](_[_0x95f2('0x3c')](_0x3b8a67[_0x95f2('0x31')],_0x3213cc['filters']));if(_0x3b8a67[_0x95f2('0x31')][_0x95f2('0x3e')]){_0x3b1b14[_0x95f2('0x3b')]=_[_0x95f2('0x3f')](_0x3b1b14[_0x95f2('0x3b')],{'$or':_[_0x95f2('0x2b')](_0x3b1b14[_0x95f2('0x35')],function(_0x46d6c9){var _0x3b7810={};_0x3b7810[_0x46d6c9]={'$like':'%'+_0x3b8a67['query'][_0x95f2('0x3e')]+'%'};return _0x3b7810;})});}_0x3b1b14=_[_0x95f2('0x3f')]({},_0x3b1b14,_0x3b8a67['options']);return _0x15e1b5[_0x95f2('0x4a')](_0x3b1b14);}})[_0x95f2('0x24')](function(_0xbc1f7b){if(_0xbc1f7b){_0x54ea1c=_0xbc1f7b[_0x95f2('0x37')];if(!_0x3b8a67[_0x95f2('0x31')][_0x95f2('0x38')]('nolimit')){_0x3b1b14[_0x95f2('0x1d')]=qs[_0x95f2('0x1d')](_0x3b8a67[_0x95f2('0x31')][_0x95f2('0x1d')]);_0x3b1b14[_0x95f2('0x1e')]=qs[_0x95f2('0x1e')](_0x3b8a67['query'][_0x95f2('0x1e')]);}return _0x15e1b5[_0x95f2('0x4a')](_0x3b1b14);}})[_0x95f2('0x24')](function(_0x4d0a18){if(_0x4d0a18){return _0x4d0a18?{'count':_0x54ea1c,'rows':_0x4d0a18}:null;}})['then'](respondWithResult(_0x126326,null))[_0x95f2('0x42')](handleError(_0x126326,null));};exports[_0x95f2('0x4d')]=function(_0x10021a,_0x297cdb,_0x4565aa){if(_0x10021a[_0x95f2('0x48')]['id']){delete _0x10021a['body']['id'];}return db['DeskAccount'][_0x95f2('0x4b')]({'where':{'id':_0x10021a[_0x95f2('0x44')]['id']}})[_0x95f2('0x24')](handleEntityNotFound(_0x297cdb,null))[_0x95f2('0x24')](function(_0x1d08f3){if(_0x1d08f3){_0x10021a[_0x95f2('0x48')][_0x95f2('0x4e')]=_0x1d08f3['id'];_0x10021a[_0x95f2('0x48')][_0x95f2('0x4f')]=integrations[_0x95f2('0x50')](_0x10021a[_0x95f2('0x48')][_0x95f2('0x51')],_0x10021a[_0x95f2('0x48')]['type']);_0x10021a[_0x95f2('0x48')][_0x95f2('0x52')]=integrations[_0x95f2('0x53')](_0x10021a[_0x95f2('0x48')][_0x95f2('0x51')],_0x10021a[_0x95f2('0x48')][_0x95f2('0x2f')]);return db[_0x95f2('0x4c')][_0x95f2('0x47')](_0x10021a[_0x95f2('0x48')],{'include':[{'model':db[_0x95f2('0x54')],'as':_0x95f2('0x4f')},{'model':db[_0x95f2('0x54')],'as':'Descriptions'}]});}return null;})[_0x95f2('0x24')](respondWithResult(_0x297cdb,null))[_0x95f2('0x42')](handleError(_0x297cdb,null));};exports[_0x95f2('0x55')]=function(_0x16bf47,_0x17477d,_0x7b6f97){var _0x31844a=[{'name':_0x95f2('0x56'),'label':_0x95f2('0x56'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0xa6fe33='';return db[_0x95f2('0x2c')][_0x95f2('0x4b')]({'where':{'id':_0x16bf47['params']['id']},'attributes':['id',_0x95f2('0x57'),'authType',_0x95f2('0x58'),_0x95f2('0x59'),'consumerKey',_0x95f2('0x5a'),_0x95f2('0x5b'),'tokenSecret']})['then'](handleEntityNotFound(_0x17477d,null))[_0x95f2('0x24')](function(_0x2f5b5c){if(_0x2f5b5c){_0xa6fe33=_0x2f5b5c[_0x95f2('0x57')];var _0x365b6d=_0xa6fe33['slice'](-0x1);if(_0x365b6d==='/'){_0xa6fe33=_0xa6fe33[_0x95f2('0x5c')](0x0,_0xa6fe33[_0x95f2('0x5d')](_0x365b6d));}var _0xb04113={'method':_0x95f2('0x5e'),'uri':util[_0x95f2('0x5f')]('%s/custom_fields',_0xa6fe33),'headers':{'Content-Type':_0x95f2('0x60'),'Accept':_0x95f2('0x60')},'json':!![]};if(_0x2f5b5c[_0x95f2('0x61')]===_0x95f2('0x62')){_0xb04113['headers']['Authorization']=util[_0x95f2('0x5f')](_0x95f2('0x63'),new Buffer(util[_0x95f2('0x5f')](_0x95f2('0x64'),_0x2f5b5c[_0x95f2('0x58')],_0x2f5b5c[_0x95f2('0x59')]))['toString']('base64'));}return rp(_0xb04113)[_0x95f2('0x24')](function(_0x4d7ad9){return _0x31844a[_0x95f2('0x65')](_[_0x95f2('0x2b')](_0x4d7ad9[_0x95f2('0x66')][_0x95f2('0x67')],function(_0x459b51){return{'id':_0x459b51[_0x95f2('0x28')],'name':_0x459b51['name'],'type':_0x459b51[_0x95f2('0x2f')],'active':_0x459b51[_0x95f2('0x68')],'label':_0x459b51[_0x95f2('0x69')],'custom':!![]};}));});}})['then'](function(_0x37c9fe){return{'count':_0x37c9fe[_0x95f2('0x37')],'rows':_0x37c9fe};})[_0x95f2('0x24')](respondWithResult(_0x17477d,null))[_0x95f2('0x42')](function(_0x1a2fd5){var _0x296bd6=_0x16bf47[_0x95f2('0x31')]['test']?0x1f4:_0x1a2fd5['statusCode']||0x1f4;logger[_0x95f2('0x26')](_0x95f2('0x6a'),_0x95f2('0x55'),_0x296bd6,JSON[_0x95f2('0x6b')](_0x1a2fd5));delete _0x1a2fd5['name'];if(_0x296bd6===0x191){_0x296bd6=0x190;}_0x17477d[_0x95f2('0x1a')](_0x296bd6)[_0x95f2('0x29')](_0x16bf47[_0x95f2('0x31')]['test']?{'message':_0x95f2('0x6c'),'statusCode':_0x1a2fd5[_0x95f2('0x6d')]}:_0x1a2fd5);});};
\ No newline at end of file
index e60b165..d83109f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x895d=['../../config/environment','exports','define','DeskAccount','int_desk_accounts','util','api','moment','request-promise','path','rimraf'];(function(_0x270364,_0x356ac5){var _0xd5c6eb=function(_0x4af9d5){while(--_0x4af9d5){_0x270364['push'](_0x270364['shift']());}};_0xd5c6eb(++_0x356ac5);}(_0x895d,0x14f));var _0xd895=function(_0x4cc526,_0x229c72){_0x4cc526=_0x4cc526-0x0;var _0x2a8d50=_0x895d[_0x4cc526];return _0x2a8d50;};'use strict';var _=require('lodash');var util=require(_0xd895('0x0'));var logger=require('../../config/logger')(_0xd895('0x1'));var moment=require(_0xd895('0x2'));var BPromise=require('bluebird');var rp=require(_0xd895('0x3'));var fs=require('fs');var path=require(_0xd895('0x4'));var rimraf=require(_0xd895('0x5'));var config=require(_0xd895('0x6'));var attributes=require('./intDeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xd895('0x7')]=function(_0xc0f7e7,_0x39d2a1){return _0xc0f7e7[_0xd895('0x8')](_0xd895('0x9'),attributes,{'tableName':_0xd895('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf3b=['define','DeskAccount','util','../../config/logger','api','moment','request-promise','path','rimraf','../../components/integrations/configuration','exports'];(function(_0xd056f7,_0xedbba9){var _0xbcb407=function(_0x137340){while(--_0x137340){_0xd056f7['push'](_0xd056f7['shift']());}};_0xbcb407(++_0xedbba9);}(_0xaf3b,0xb2));var _0xbaf3=function(_0x17776f,_0x1c60f0){_0x17776f=_0x17776f-0x0;var _0x101de2=_0xaf3b[_0x17776f];return _0x101de2;};'use strict';var _=require('lodash');var util=require(_0xbaf3('0x0'));var logger=require(_0xbaf3('0x1'))(_0xbaf3('0x2'));var moment=require(_0xbaf3('0x3'));var BPromise=require('bluebird');var rp=require(_0xbaf3('0x4'));var fs=require('fs');var path=require(_0xbaf3('0x5'));var rimraf=require(_0xbaf3('0x6'));var config=require('../../config/environment');var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xbaf3('0x7'));module[_0xbaf3('0x8')]=function(_0x4e57b5,_0x35eb60){return _0x4e57b5[_0xbaf3('0x9')](_0xbaf3('0xa'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a0207f..ad2c2ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38fc=['rpc','../../config/environment','jayson/promise','http','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','GetDeskAccount','options','where','limit','include','map','model','attributes','then','debug','catch','ShowDeskAccount','DeskAccount','find','raw','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x225823,_0x316937){var _0x39e98f=function(_0x7e632a){while(--_0x7e632a){_0x225823['push'](_0x225823['shift']());}};_0x39e98f(++_0x316937);}(_0x38fc,0x1c7));var _0xc38f=function(_0x53e147,_0x44e047){_0x53e147=_0x53e147-0x0;var _0x518334=_0x38fc[_0x53e147];return _0x518334;};'use strict';var _=require(_0xc38f('0x0'));var util=require('util');var moment=require(_0xc38f('0x1'));var BPromise=require('bluebird');var rs=require(_0xc38f('0x2'));var fs=require('fs');var Redis=require(_0xc38f('0x3'));var db=require(_0xc38f('0x4'))['db'];var utils=require(_0xc38f('0x5'));var logger=require(_0xc38f('0x6'))(_0xc38f('0x7'));var config=require(_0xc38f('0x8'));var jayson=require(_0xc38f('0x9'));var client=jayson['client'][_0xc38f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1dd52f,_0x4912f1,_0x108648){return new BPromise(function(_0x1ef7dd,_0xb24e9){return client['request'](_0x1dd52f,_0x108648)['then'](function(_0x5f51ef){logger['info'](_0xc38f('0xb'),_0x4912f1,_0xc38f('0xc'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x4912f1,_0xc38f('0xc'),JSON[_0xc38f('0xd')](_0x5f51ef));if(_0x5f51ef[_0xc38f('0xe')]){if(_0x5f51ef['error'][_0xc38f('0xf')]===0x1f4){logger[_0xc38f('0xe')]('DeskAccount,\x20%s,\x20%s',_0x4912f1,_0x5f51ef['error']['message']);return _0xb24e9(_0x5f51ef['error']['message']);}logger['error'](_0xc38f('0xb'),_0x4912f1,_0x5f51ef[_0xc38f('0xe')][_0xc38f('0x10')]);return _0x1ef7dd(_0x5f51ef[_0xc38f('0xe')]['message']);}else{logger[_0xc38f('0x11')](_0xc38f('0xb'),_0x4912f1,_0xc38f('0xc'));_0x1ef7dd(_0x5f51ef['result']['message']);}})['catch'](function(_0xd0df92){logger[_0xc38f('0xe')](_0xc38f('0xb'),_0x4912f1,_0xd0df92);_0xb24e9(_0xd0df92);});});}exports[_0xc38f('0x12')]=function(_0x90e3c){var _0x3c38ca=this;return new Promise(function(_0xb3643,_0x1a4202){return db['DeskAccount']['findAll']({'raw':_0x90e3c[_0xc38f('0x13')]?_0x90e3c[_0xc38f('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x90e3c['options']?_0x90e3c['options'][_0xc38f('0x14')]||null:null,'attributes':_0x90e3c[_0xc38f('0x13')]?_0x90e3c['options']['attributes']||null:null,'limit':_0x90e3c[_0xc38f('0x13')]?_0x90e3c['options'][_0xc38f('0x15')]||null:null,'include':_0x90e3c['options']?_0x90e3c[_0xc38f('0x13')][_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x90e3c[_0xc38f('0x13')][_0xc38f('0x16')],function(_0x41cbe2){return{'model':db[_0x41cbe2[_0xc38f('0x18')]],'as':_0x41cbe2['as'],'attributes':_0x41cbe2[_0xc38f('0x19')],'include':_0x41cbe2[_0xc38f('0x16')]?_['map'](_0x41cbe2[_0xc38f('0x16')],function(_0x47dc48){return{'model':db[_0x47dc48[_0xc38f('0x18')]],'as':_0x47dc48['as'],'attributes':_0x47dc48[_0xc38f('0x19')],'include':_0x47dc48[_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x47dc48[_0xc38f('0x16')],function(_0x4c5d50){return{'model':db[_0x4c5d50[_0xc38f('0x18')]],'as':_0x4c5d50['as'],'attributes':_0x4c5d50[_0xc38f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc38f('0x1a')](function(_0x1f78d7){logger['info'](_0xc38f('0x12'),_0x90e3c);logger[_0xc38f('0x1b')]('GetDeskAccount',_0x90e3c,JSON[_0xc38f('0xd')](_0x1f78d7));_0xb3643(_0x1f78d7);})[_0xc38f('0x1c')](function(_0x1e70c1){logger['error']('GetDeskAccount',_0x1e70c1[_0xc38f('0x10')],_0x90e3c);_0x1a4202(_0x3c38ca[_0xc38f('0xe')](0x1f4,_0x1e70c1['message']));});});};exports[_0xc38f('0x1d')]=function(_0x3db760){var _0x151cf6=this;return new Promise(function(_0x2f9bf3,_0x387099){return db[_0xc38f('0x1e')][_0xc38f('0x1f')]({'raw':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x20')]===undefined?!![]:![]:!![],'where':_0x3db760['options']?_0x3db760[_0xc38f('0x13')][_0xc38f('0x14')]||null:null,'attributes':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x19')]||null:null,'include':_0x3db760[_0xc38f('0x13')]?_0x3db760['options'][_0xc38f('0x16')]?_[_0xc38f('0x17')](_0x3db760[_0xc38f('0x13')]['include'],function(_0x352c03){return{'model':db[_0x352c03[_0xc38f('0x18')]],'as':_0x352c03['as'],'attributes':_0x352c03['attributes'],'include':_0x352c03[_0xc38f('0x16')]?_['map'](_0x352c03[_0xc38f('0x16')],function(_0x3d4289){return{'model':db[_0x3d4289[_0xc38f('0x18')]],'as':_0x3d4289['as'],'attributes':_0x3d4289[_0xc38f('0x19')],'include':_0x3d4289[_0xc38f('0x16')]?_['map'](_0x3d4289[_0xc38f('0x16')],function(_0x2a1c42){return{'model':db[_0x2a1c42['model']],'as':_0x2a1c42['as'],'attributes':_0x2a1c42[_0xc38f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xc38f('0x1a')](function(_0x23b73f){logger['info']('ShowDeskAccount',_0x3db760);logger[_0xc38f('0x1b')]('ShowDeskAccount',_0x3db760,JSON[_0xc38f('0xd')](_0x23b73f));_0x2f9bf3(_0x23b73f);})[_0xc38f('0x1c')](function(_0x20bd41){logger[_0xc38f('0xe')](_0xc38f('0x1d'),_0x20bd41[_0xc38f('0x10')],_0x3db760);_0x387099(_0x151cf6[_0xc38f('0xe')](0x1f4,_0x20bd41[_0xc38f('0x10')]));});});};
\ No newline at end of file
+var _0xb55c=['include','map','attributes','model','GetDeskAccount','catch','ShowDeskAccount','DeskAccount','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','options','raw','limit'];(function(_0x4e0b10,_0x25ad73){var _0x1b82b5=function(_0x2e72f3){while(--_0x2e72f3){_0x4e0b10['push'](_0x4e0b10['shift']());}};_0x1b82b5(++_0x25ad73);}(_0xb55c,0x132));var _0xcb55=function(_0x3f0d76,_0x378fed){_0x3f0d76=_0x3f0d76-0x0;var _0x12c12e=_0xb55c[_0x3f0d76];return _0x12c12e;};'use strict';var _=require(_0xcb55('0x0'));var util=require(_0xcb55('0x1'));var moment=require(_0xcb55('0x2'));var BPromise=require(_0xcb55('0x3'));var rs=require(_0xcb55('0x4'));var fs=require('fs');var Redis=require(_0xcb55('0x5'));var db=require(_0xcb55('0x6'))['db'];var utils=require(_0xcb55('0x7'));var logger=require(_0xcb55('0x8'))('rpc');var config=require(_0xcb55('0x9'));var jayson=require(_0xcb55('0xa'));var client=jayson['client'][_0xcb55('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xdb884d,_0x536783,_0xddb2d0){return new BPromise(function(_0x3535b5,_0x214c7b){return client[_0xcb55('0xc')](_0xdb884d,_0xddb2d0)[_0xcb55('0xd')](function(_0x24f9ff){logger[_0xcb55('0xe')]('DeskAccount,\x20%s,\x20%s',_0x536783,_0xcb55('0xf'));logger[_0xcb55('0x10')](_0xcb55('0x11'),_0x536783,'request\x20sent',JSON[_0xcb55('0x12')](_0x24f9ff));if(_0x24f9ff[_0xcb55('0x13')]){if(_0x24f9ff[_0xcb55('0x13')][_0xcb55('0x14')]===0x1f4){logger[_0xcb55('0x13')](_0xcb55('0x15'),_0x536783,_0x24f9ff[_0xcb55('0x13')][_0xcb55('0x16')]);return _0x214c7b(_0x24f9ff[_0xcb55('0x13')][_0xcb55('0x16')]);}logger[_0xcb55('0x13')]('DeskAccount,\x20%s,\x20%s',_0x536783,_0x24f9ff['error'][_0xcb55('0x16')]);return _0x3535b5(_0x24f9ff['error'][_0xcb55('0x16')]);}else{logger['info'](_0xcb55('0x15'),_0x536783,_0xcb55('0xf'));_0x3535b5(_0x24f9ff[_0xcb55('0x17')]['message']);}})['catch'](function(_0x669c2e){logger[_0xcb55('0x13')](_0xcb55('0x15'),_0x536783,_0x669c2e);_0x214c7b(_0x669c2e);});});}exports['GetDeskAccount']=function(_0x22895c){var _0x4dd7e5=this;return new Promise(function(_0x4ba3bc,_0x36aa56){return db['DeskAccount']['findAll']({'raw':_0x22895c[_0xcb55('0x18')]?_0x22895c[_0xcb55('0x18')][_0xcb55('0x19')]===undefined?!![]:![]:!![],'where':_0x22895c[_0xcb55('0x18')]?_0x22895c[_0xcb55('0x18')]['where']||null:null,'attributes':_0x22895c['options']?_0x22895c[_0xcb55('0x18')]['attributes']||null:null,'limit':_0x22895c[_0xcb55('0x18')]?_0x22895c[_0xcb55('0x18')][_0xcb55('0x1a')]||null:null,'include':_0x22895c['options']?_0x22895c[_0xcb55('0x18')][_0xcb55('0x1b')]?_[_0xcb55('0x1c')](_0x22895c[_0xcb55('0x18')]['include'],function(_0x5e0142){return{'model':db[_0x5e0142['model']],'as':_0x5e0142['as'],'attributes':_0x5e0142[_0xcb55('0x1d')],'include':_0x5e0142[_0xcb55('0x1b')]?_['map'](_0x5e0142[_0xcb55('0x1b')],function(_0x2e198e){return{'model':db[_0x2e198e['model']],'as':_0x2e198e['as'],'attributes':_0x2e198e['attributes'],'include':_0x2e198e[_0xcb55('0x1b')]?_[_0xcb55('0x1c')](_0x2e198e['include'],function(_0x484397){return{'model':db[_0x484397[_0xcb55('0x1e')]],'as':_0x484397['as'],'attributes':_0x484397[_0xcb55('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24b1e3){logger['info']('GetDeskAccount',_0x22895c);logger[_0xcb55('0x10')](_0xcb55('0x1f'),_0x22895c,JSON[_0xcb55('0x12')](_0x24b1e3));_0x4ba3bc(_0x24b1e3);})[_0xcb55('0x20')](function(_0x51a73a){logger[_0xcb55('0x13')](_0xcb55('0x1f'),_0x51a73a['message'],_0x22895c);_0x36aa56(_0x4dd7e5[_0xcb55('0x13')](0x1f4,_0x51a73a['message']));});});};exports[_0xcb55('0x21')]=function(_0x470465){var _0x372117=this;return new Promise(function(_0x408c6c,_0xe683aa){return db[_0xcb55('0x22')][_0xcb55('0x23')]({'raw':_0x470465['options']?_0x470465['options'][_0xcb55('0x19')]===undefined?!![]:![]:!![],'where':_0x470465['options']?_0x470465[_0xcb55('0x18')][_0xcb55('0x24')]||null:null,'attributes':_0x470465[_0xcb55('0x18')]?_0x470465[_0xcb55('0x18')][_0xcb55('0x1d')]||null:null,'include':_0x470465[_0xcb55('0x18')]?_0x470465[_0xcb55('0x18')][_0xcb55('0x1b')]?_[_0xcb55('0x1c')](_0x470465[_0xcb55('0x18')]['include'],function(_0x32b95d){return{'model':db[_0x32b95d[_0xcb55('0x1e')]],'as':_0x32b95d['as'],'attributes':_0x32b95d[_0xcb55('0x1d')],'include':_0x32b95d[_0xcb55('0x1b')]?_['map'](_0x32b95d[_0xcb55('0x1b')],function(_0x3eda96){return{'model':db[_0x3eda96[_0xcb55('0x1e')]],'as':_0x3eda96['as'],'attributes':_0x3eda96[_0xcb55('0x1d')],'include':_0x3eda96[_0xcb55('0x1b')]?_[_0xcb55('0x1c')](_0x3eda96[_0xcb55('0x1b')],function(_0x584b5f){return{'model':db[_0x584b5f[_0xcb55('0x1e')]],'as':_0x584b5f['as'],'attributes':_0x584b5f[_0xcb55('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xcb55('0xd')](function(_0x5af49b){logger[_0xcb55('0xe')](_0xcb55('0x21'),_0x470465);logger[_0xcb55('0x10')](_0xcb55('0x21'),_0x470465,JSON['stringify'](_0x5af49b));_0x408c6c(_0x5af49b);})[_0xcb55('0x20')](function(_0x2d09bb){logger[_0xcb55('0x13')](_0xcb55('0x21'),_0x2d09bb[_0xcb55('0x16')],_0x470465);_0xe683aa(_0x372117[_0xcb55('0x13')](0x1f4,_0x2d09bb[_0xcb55('0x16')]));});});};
\ No newline at end of file
index 384f970..73d228b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x391476,_0xa2bc64){var _0x44ace8=function(_0x19d871){while(--_0x19d871){_0x391476['push'](_0x391476['shift']());}};_0x44ace8(++_0xa2bc64);}(_0x3e74,0x175));var _0x43e7=function(_0x10bd83,_0x184674){_0x10bd83=_0x10bd83-0x0;var _0x533344=_0x3e74[_0x10bd83];return _0x533344;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./intDeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x49d881,_0x34d7d4){var _0x2e4d64=function(_0xc14172){while(--_0xc14172){_0x49d881['push'](_0x49d881['shift']());}};_0x2e4d64(++_0x34d7d4);}(_0x34e8,0x12c));var _0x834e=function(_0xf74499,_0x302949){_0xf74499=_0xf74499-0x0;var _0x39b1ea=_0x34e8[_0xf74499];return _0x39b1ea;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xa')](_0x834e('0xf'),auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0xa')](_0x834e('0x13'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);router[_0x834e('0xa')](_0x834e('0x15'),auth['isAuthenticated'](),controller[_0x834e('0x16')]);router[_0x834e('0x17')]('/',auth['isAuthenticated'](),controller[_0x834e('0x18')]);router[_0x834e('0x17')](_0x834e('0x15'),auth[_0x834e('0xd')](),controller['setTags']);router[_0x834e('0x19')](_0x834e('0xc'),auth['isAuthenticated'](),controller[_0x834e('0x1a')]);router['delete'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller['destroy']);module[_0x834e('0x1b')]=router;
\ No newline at end of file
index ed3c4ff..e8a3167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29bb=['exports','STRING','sequelize'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x29bb,0x122));var _0xb29b=function(_0x368e16,_0x32de35){_0x368e16=_0x368e16-0x0;var _0x4dc724=_0x29bb[_0x368e16];return _0x4dc724;};'use strict';var Sequelize=require(_0xb29b('0x0'));module[_0xb29b('0x1')]={'name':{'type':Sequelize[_0xb29b('0x2')]},'description':{'type':Sequelize[_0xb29b('0x2')]}};
\ No newline at end of file
+var _0x3aa4=['sequelize','exports','STRING'];(function(_0x483ab9,_0x419148){var _0x35043b=function(_0x3453a3){while(--_0x3453a3){_0x483ab9['push'](_0x483ab9['shift']());}};_0x35043b(++_0x419148);}(_0x3aa4,0x1e3));var _0x43aa=function(_0x487200,_0x78af45){_0x487200=_0x487200-0x0;var _0x5e03fb=_0x3aa4[_0x487200];return _0x5e03fb;};'use strict';var Sequelize=require(_0x43aa('0x0'));module[_0x43aa('0x1')]={'name':{'type':Sequelize[_0x43aa('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 913eb6b..277b3ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3370=['attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','destroy','getFields','DeskField','hasOwnProperty','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','undefined','count','offset','limit','status','set','Content-Range','save','then','end','error','name','send','DeskConfiguration','fieldName','type','key','model','map','query','keys','filters','intersection'];(function(_0x4b679d,_0x4e647c){var _0x2af4cc=function(_0x4b6051){while(--_0x4b6051){_0x4b679d['push'](_0x4b679d['shift']());}};_0x2af4cc(++_0x4e647c);}(_0x3370,0xc1));var _0x0337=function(_0xfc91a8,_0x8c743d){_0xfc91a8=_0xfc91a8-0x0;var _0x331c48=_0x3370[_0xfc91a8];return _0x331c48;};'use strict';var emlformat=require(_0x0337('0x0'));var rimraf=require(_0x0337('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0337('0x2'));var rp=require(_0x0337('0x3'));var moment=require(_0x0337('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0337('0x5'));var util=require(_0x0337('0x6'));var path=require(_0x0337('0x7'));var sox=require(_0x0337('0x8'));var csv=require(_0x0337('0x9'));var ejs=require(_0x0337('0xa'));var fs=require('fs');var fs_extra=require(_0x0337('0xb'));var _=require(_0x0337('0xc'));var squel=require(_0x0337('0xd'));var crypto=require(_0x0337('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0337('0xf'));var toCsv=require(_0x0337('0x9'));var querystring=require('querystring');var Papa=require(_0x0337('0x10'));var Redis=require('ioredis');var authService=require(_0x0337('0x11'));var qs=require(_0x0337('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0337('0x13'));var logger=require(_0x0337('0x14'))(_0x0337('0x15'));var utils=require(_0x0337('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0337('0x17'));var db=require(_0x0337('0x18'))['db'];function respondWithStatusCode(_0x4923c5,_0x1458c9){_0x1458c9=_0x1458c9||0xcc;return function(_0x2c92a3){if(_0x2c92a3){return _0x4923c5[_0x0337('0x19')](_0x1458c9);}return _0x4923c5['status'](_0x1458c9)['end']();};}function respondWithResult(_0x1f6645,_0x24fa50){_0x24fa50=_0x24fa50||0xc8;return function(_0x6eae50){if(_0x6eae50){return _0x1f6645['status'](_0x24fa50)[_0x0337('0x1a')](_0x6eae50);}};}function respondWithFilteredResult(_0x4a0a28,_0x4d5035){return function(_0x1cbb1e){if(_0x1cbb1e){var _0x11c3a9=typeof _0x4d5035['offset']===_0x0337('0x1b')&&typeof _0x4d5035['limit']===_0x0337('0x1b');var _0x414245=_0x1cbb1e[_0x0337('0x1c')];var _0x42ba84=_0x11c3a9?0x0:_0x4d5035['offset'];var _0x3f272a=_0x11c3a9?_0x1cbb1e[_0x0337('0x1c')]:_0x4d5035[_0x0337('0x1d')]+_0x4d5035[_0x0337('0x1e')];var _0xa17e50;if(_0x3f272a>=_0x414245){_0x3f272a=_0x414245;_0xa17e50=0xc8;}else{_0xa17e50=0xce;}_0x4a0a28[_0x0337('0x1f')](_0xa17e50);return _0x4a0a28[_0x0337('0x20')](_0x0337('0x21'),_0x42ba84+'-'+_0x3f272a+'/'+_0x414245)[_0x0337('0x1a')](_0x1cbb1e);}return null;};}function patchUpdates(_0x311f7e){return function(_0x12324c){try{jsonpatch['apply'](_0x12324c,_0x311f7e,!![]);}catch(_0x268584){return BPromise['reject'](_0x268584);}return _0x12324c[_0x0337('0x22')]();};}function saveUpdates(_0x3f9008,_0x3d4e00){return function(_0x4a2ad1){if(_0x4a2ad1){return _0x4a2ad1['update'](_0x3f9008)[_0x0337('0x23')](function(_0xc98ed8){return _0xc98ed8;});}return null;};}function removeEntity(_0x47d8ea,_0x51ec8e){return function(_0x292faa){if(_0x292faa){return _0x292faa['destroy']()['then'](function(){_0x47d8ea[_0x0337('0x1f')](0xcc)[_0x0337('0x24')]();});}};}function handleEntityNotFound(_0x53f158,_0x1d9779){return function(_0x43eebd){if(!_0x43eebd){_0x53f158['sendStatus'](0x194);}return _0x43eebd;};}function handleError(_0x6a8c8a,_0x4a9ab4){_0x4a9ab4=_0x4a9ab4||0x1f4;return function(_0x18eaec){logger[_0x0337('0x25')](_0x18eaec['stack']);if(_0x18eaec['name']){delete _0x18eaec[_0x0337('0x26')];}_0x6a8c8a[_0x0337('0x1f')](_0x4a9ab4)[_0x0337('0x27')](_0x18eaec);};}exports['index']=function(_0x5d66ed,_0x349e2a){var _0x285bac={},_0x3ebcb7={},_0xee776e={'count':0x0,'rows':[]};var _0x593535=_['map'](db[_0x0337('0x28')]['rawAttributes'],function(_0x2c87c9){return{'name':_0x2c87c9[_0x0337('0x29')],'type':_0x2c87c9[_0x0337('0x2a')][_0x0337('0x2b')]};});_0x3ebcb7[_0x0337('0x2c')]=_[_0x0337('0x2d')](_0x593535,_0x0337('0x26'));_0x3ebcb7[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x5d66ed['query']);_0x3ebcb7[_0x0337('0x30')]=_[_0x0337('0x31')](_0x3ebcb7[_0x0337('0x2c')],_0x3ebcb7[_0x0337('0x2e')]);_0x285bac[_0x0337('0x32')]=_['intersection'](_0x3ebcb7[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x33')]));_0x285bac[_0x0337('0x32')]=_0x285bac[_0x0337('0x32')][_0x0337('0x34')]?_0x285bac['attributes']:_0x3ebcb7[_0x0337('0x2c')];if(!_0x5d66ed[_0x0337('0x2e')]['hasOwnProperty'](_0x0337('0x35'))){_0x285bac[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x5d66ed['query'][_0x0337('0x1e')]);_0x285bac[_0x0337('0x1d')]=qs[_0x0337('0x1d')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x1d')]);}_0x285bac[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x5d66ed[_0x0337('0x2e')][_0x0337('0x37')]);_0x285bac['where']=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x5d66ed['query'],_0x3ebcb7[_0x0337('0x30')]),_0x593535);if(_0x5d66ed[_0x0337('0x2e')][_0x0337('0x39')]){_0x285bac[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x285bac[_0x0337('0x3a')],{'$or':_['map'](_0x593535,function(_0x408b13){if(_0x408b13[_0x0337('0x2a')]!=='VIRTUAL'){var _0x4ba7a4={};_0x4ba7a4[_0x408b13['name']]={'$like':'%'+_0x5d66ed[_0x0337('0x2e')][_0x0337('0x39')]+'%'};return _0x4ba7a4;}})});}_0x285bac=_['merge']({},_0x285bac,_0x5d66ed[_0x0337('0x3c')]);var _0x359629={'where':_0x285bac[_0x0337('0x3a')]};return db['DeskConfiguration'][_0x0337('0x1c')](_0x359629)['then'](function(_0x3f317f){_0xee776e['count']=_0x3f317f;if(_0x5d66ed[_0x0337('0x2e')][_0x0337('0x3d')]){_0x285bac[_0x0337('0x3e')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x0337('0x3f')](_0x285bac);})[_0x0337('0x23')](function(_0x2564d5){_0xee776e[_0x0337('0x40')]=_0x2564d5;return _0xee776e;})[_0x0337('0x23')](respondWithFilteredResult(_0x349e2a,_0x285bac))[_0x0337('0x41')](handleError(_0x349e2a,null));};exports['show']=function(_0x3f7338,_0x7ae4a4){var _0x319b95={'raw':![],'where':{'id':_0x3f7338[_0x0337('0x42')]['id']}},_0x569734={};_0x569734['model']=_[_0x0337('0x2f')](db[_0x0337('0x28')][_0x0337('0x43')]);_0x569734[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x3f7338[_0x0337('0x2e')]);_0x569734[_0x0337('0x30')]=_[_0x0337('0x31')](_0x569734[_0x0337('0x2c')],_0x569734[_0x0337('0x2e')]);_0x319b95[_0x0337('0x32')]=_[_0x0337('0x31')](_0x569734['model'],qs[_0x0337('0x33')](_0x3f7338[_0x0337('0x2e')][_0x0337('0x33')]));_0x319b95['attributes']=_0x319b95['attributes']['length']?_0x319b95[_0x0337('0x32')]:_0x569734['model'];if(_0x3f7338['query'][_0x0337('0x3d')]){_0x319b95['include']=[{'all':!![]}];}_0x319b95=_[_0x0337('0x3b')]({},_0x319b95,_0x3f7338['options']);return db[_0x0337('0x28')][_0x0337('0x44')](_0x319b95)[_0x0337('0x23')](handleEntityNotFound(_0x7ae4a4,null))['then'](respondWithResult(_0x7ae4a4,null))[_0x0337('0x41')](handleError(_0x7ae4a4,null));};exports[_0x0337('0x45')]=function(_0x285977,_0x31c9d8){return db[_0x0337('0x28')]['create'](_0x285977[_0x0337('0x46')],{})[_0x0337('0x23')](respondWithResult(_0x31c9d8,0xc9))[_0x0337('0x41')](handleError(_0x31c9d8,null));};exports['update']=function(_0x3a460b,_0x204c23){if(_0x3a460b['body']['id']){delete _0x3a460b[_0x0337('0x46')]['id'];}return db[_0x0337('0x28')]['find']({'where':{'id':_0x3a460b[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x204c23,null))[_0x0337('0x23')](saveUpdates(_0x3a460b[_0x0337('0x46')],null))[_0x0337('0x23')](respondWithResult(_0x204c23,null))['catch'](handleError(_0x204c23,null));};exports[_0x0337('0x47')]=function(_0x7af185,_0x2f0f19){return db[_0x0337('0x28')]['find']({'where':{'id':_0x7af185[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x2f0f19,null))[_0x0337('0x23')](removeEntity(_0x2f0f19,null))[_0x0337('0x41')](handleError(_0x2f0f19,null));};exports[_0x0337('0x48')]=function(_0x1d9d66,_0x20f7df,_0x3263a5){var _0x5ed0eb={};var _0x3c0a22={};var _0x446734;var _0x1e0929;return db[_0x0337('0x28')]['findOne']({'where':{'id':_0x1d9d66['params']['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x20f7df,null))[_0x0337('0x23')](function(_0x51cecd){if(_0x51cecd){_0x446734=_0x51cecd;_0x3c0a22[_0x0337('0x2c')]=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x3c0a22[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x1d9d66[_0x0337('0x2e')]);_0x3c0a22[_0x0337('0x30')]=_[_0x0337('0x31')](_0x3c0a22[_0x0337('0x2c')],_0x3c0a22[_0x0337('0x2e')]);_0x5ed0eb['attributes']=_[_0x0337('0x31')](_0x3c0a22[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x1d9d66[_0x0337('0x2e')][_0x0337('0x33')]));_0x5ed0eb['attributes']=_0x5ed0eb['attributes'][_0x0337('0x34')]?_0x5ed0eb[_0x0337('0x32')]:_0x3c0a22[_0x0337('0x2c')];_0x5ed0eb['order']=qs[_0x0337('0x37')](_0x1d9d66['query']['sort']);_0x5ed0eb[_0x0337('0x3a')]=qs[_0x0337('0x30')](_['pick'](_0x1d9d66['query'],_0x3c0a22[_0x0337('0x30')]));if(_0x1d9d66[_0x0337('0x2e')]['filter']){_0x5ed0eb[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x5ed0eb[_0x0337('0x3a')],{'$or':_[_0x0337('0x2d')](_0x5ed0eb[_0x0337('0x32')],function(_0x1a2dce){var _0x4a834e={};_0x4a834e[_0x1a2dce]={'$like':'%'+_0x1d9d66['query']['filter']+'%'};return _0x4a834e;})});}_0x5ed0eb=_[_0x0337('0x3b')]({},_0x5ed0eb,_0x1d9d66['options']);return _0x446734[_0x0337('0x48')](_0x5ed0eb);}})[_0x0337('0x23')](function(_0x554a40){if(_0x554a40){_0x1e0929=_0x554a40[_0x0337('0x34')];if(!_0x1d9d66[_0x0337('0x2e')][_0x0337('0x4a')](_0x0337('0x35'))){_0x5ed0eb[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x1d9d66[_0x0337('0x2e')]['limit']);_0x5ed0eb[_0x0337('0x1d')]=qs['offset'](_0x1d9d66[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x446734['getFields'](_0x5ed0eb);}})[_0x0337('0x23')](function(_0x107c94){if(_0x107c94){return _0x107c94?{'count':_0x1e0929,'rows':_0x107c94}:null;}})[_0x0337('0x23')](respondWithResult(_0x20f7df,null))[_0x0337('0x41')](handleError(_0x20f7df,null));};exports['getSubjects']=function(_0xcc3a93,_0x5852bc,_0x452503){var _0x27693c={};var _0x2983da={};var _0x443e2e;var _0x7dabc4;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0xcc3a93[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x5852bc,null))[_0x0337('0x23')](function(_0x1e23a4){if(_0x1e23a4){_0x443e2e=_0x1e23a4;_0x2983da[_0x0337('0x2c')]=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x2983da['query']=_[_0x0337('0x2f')](_0xcc3a93[_0x0337('0x2e')]);_0x2983da[_0x0337('0x30')]=_[_0x0337('0x31')](_0x2983da['model'],_0x2983da[_0x0337('0x2e')]);_0x27693c[_0x0337('0x32')]=_['intersection'](_0x2983da[_0x0337('0x2c')],qs[_0x0337('0x33')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x33')]));_0x27693c[_0x0337('0x32')]=_0x27693c[_0x0337('0x32')][_0x0337('0x34')]?_0x27693c['attributes']:_0x2983da[_0x0337('0x2c')];_0x27693c[_0x0337('0x36')]=qs[_0x0337('0x37')](_0xcc3a93[_0x0337('0x2e')]['sort']);_0x27693c[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0xcc3a93[_0x0337('0x2e')],_0x2983da['filters']));if(_0xcc3a93['query'][_0x0337('0x39')]){_0x27693c[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x27693c[_0x0337('0x3a')],{'$or':_['map'](_0x27693c[_0x0337('0x32')],function(_0x4d6d9b){var _0x42a8b6={};_0x42a8b6[_0x4d6d9b]={'$like':'%'+_0xcc3a93[_0x0337('0x2e')]['filter']+'%'};return _0x42a8b6;})});}_0x27693c=_[_0x0337('0x3b')]({},_0x27693c,_0xcc3a93[_0x0337('0x3c')]);return _0x443e2e[_0x0337('0x4c')](_0x27693c);}})[_0x0337('0x23')](function(_0x45c23b){if(_0x45c23b){_0x7dabc4=_0x45c23b[_0x0337('0x34')];if(!_0xcc3a93[_0x0337('0x2e')][_0x0337('0x4a')]('nolimit')){_0x27693c[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x1e')]);_0x27693c[_0x0337('0x1d')]=qs[_0x0337('0x1d')](_0xcc3a93[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x443e2e[_0x0337('0x4c')](_0x27693c);}})['then'](function(_0x3e59fb){if(_0x3e59fb){return _0x3e59fb?{'count':_0x7dabc4,'rows':_0x3e59fb}:null;}})[_0x0337('0x23')](respondWithResult(_0x5852bc,null))[_0x0337('0x41')](handleError(_0x5852bc,null));};exports[_0x0337('0x4d')]=function(_0x8913ad,_0x47d9dc,_0x4ad4c0){var _0x36553d={};var _0x1a8c94={};var _0x1c4f47;var _0x55866b;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x8913ad[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x47d9dc,null))['then'](function(_0x518aa5){if(_0x518aa5){_0x1c4f47=_0x518aa5;_0x1a8c94['model']=_[_0x0337('0x2f')](db[_0x0337('0x49')][_0x0337('0x43')]);_0x1a8c94[_0x0337('0x2e')]=_[_0x0337('0x2f')](_0x8913ad[_0x0337('0x2e')]);_0x1a8c94[_0x0337('0x30')]=_[_0x0337('0x31')](_0x1a8c94[_0x0337('0x2c')],_0x1a8c94['query']);_0x36553d[_0x0337('0x32')]=_[_0x0337('0x31')](_0x1a8c94['model'],qs[_0x0337('0x33')](_0x8913ad[_0x0337('0x2e')][_0x0337('0x33')]));_0x36553d[_0x0337('0x32')]=_0x36553d['attributes'][_0x0337('0x34')]?_0x36553d[_0x0337('0x32')]:_0x1a8c94[_0x0337('0x2c')];_0x36553d[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x8913ad[_0x0337('0x2e')][_0x0337('0x37')]);_0x36553d[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x8913ad[_0x0337('0x2e')],_0x1a8c94[_0x0337('0x30')]));if(_0x8913ad[_0x0337('0x2e')]['filter']){_0x36553d[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x36553d[_0x0337('0x3a')],{'$or':_[_0x0337('0x2d')](_0x36553d['attributes'],function(_0x34c4ba){var _0x263dd4={};_0x263dd4[_0x34c4ba]={'$like':'%'+_0x8913ad[_0x0337('0x2e')]['filter']+'%'};return _0x263dd4;})});}_0x36553d=_['merge']({},_0x36553d,_0x8913ad[_0x0337('0x3c')]);return _0x1c4f47[_0x0337('0x4d')](_0x36553d);}})[_0x0337('0x23')](function(_0x1ee3a5){if(_0x1ee3a5){_0x55866b=_0x1ee3a5[_0x0337('0x34')];if(!_0x8913ad[_0x0337('0x2e')]['hasOwnProperty'](_0x0337('0x35'))){_0x36553d[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x8913ad['query'][_0x0337('0x1e')]);_0x36553d[_0x0337('0x1d')]=qs['offset'](_0x8913ad[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x1c4f47[_0x0337('0x4d')](_0x36553d);}})['then'](function(_0x35225b){if(_0x35225b){return _0x35225b?{'count':_0x55866b,'rows':_0x35225b}:null;}})['then'](respondWithResult(_0x47d9dc,null))[_0x0337('0x41')](handleError(_0x47d9dc,null));};exports[_0x0337('0x4e')]=function(_0x4aa4d5,_0x5153e0,_0x4986c0){var _0x3d34d4={};var _0x439145={};var _0x40c396;var _0x11cd08;return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x4aa4d5[_0x0337('0x42')]['id']}})[_0x0337('0x23')](handleEntityNotFound(_0x5153e0,null))[_0x0337('0x23')](function(_0x3c1ee4){if(_0x3c1ee4){_0x40c396=_0x3c1ee4;_0x439145[_0x0337('0x2c')]=_['keys'](db[_0x0337('0x4f')][_0x0337('0x43')]);_0x439145['query']=_['keys'](_0x4aa4d5['query']);_0x439145[_0x0337('0x30')]=_[_0x0337('0x31')](_0x439145[_0x0337('0x2c')],_0x439145[_0x0337('0x2e')]);_0x3d34d4[_0x0337('0x32')]=_['intersection'](_0x439145[_0x0337('0x2c')],qs[_0x0337('0x33')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x33')]));_0x3d34d4[_0x0337('0x32')]=_0x3d34d4[_0x0337('0x32')]['length']?_0x3d34d4[_0x0337('0x32')]:_0x439145[_0x0337('0x2c')];_0x3d34d4[_0x0337('0x36')]=qs[_0x0337('0x37')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x37')]);_0x3d34d4[_0x0337('0x3a')]=qs[_0x0337('0x30')](_[_0x0337('0x38')](_0x4aa4d5[_0x0337('0x2e')],_0x439145[_0x0337('0x30')]));if(_0x4aa4d5['query'][_0x0337('0x39')]){_0x3d34d4[_0x0337('0x3a')]=_[_0x0337('0x3b')](_0x3d34d4['where'],{'$or':_[_0x0337('0x2d')](_0x3d34d4['attributes'],function(_0x11b503){var _0x5184d5={};_0x5184d5[_0x11b503]={'$like':'%'+_0x4aa4d5['query']['filter']+'%'};return _0x5184d5;})});}_0x3d34d4=_['merge']({},_0x3d34d4,_0x4aa4d5[_0x0337('0x3c')]);return _0x40c396[_0x0337('0x4e')](_0x3d34d4);}})['then'](function(_0x4f5c8f){if(_0x4f5c8f){_0x11cd08=_0x4f5c8f[_0x0337('0x34')];if(!_0x4aa4d5['query'][_0x0337('0x4a')](_0x0337('0x35'))){_0x3d34d4[_0x0337('0x1e')]=qs[_0x0337('0x1e')](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x1e')]);_0x3d34d4['offset']=qs['offset'](_0x4aa4d5[_0x0337('0x2e')][_0x0337('0x1d')]);}return _0x40c396[_0x0337('0x4e')](_0x3d34d4);}})[_0x0337('0x23')](function(_0x50045c){if(_0x50045c){return _0x50045c?{'count':_0x11cd08,'rows':_0x50045c}:null;}})[_0x0337('0x23')](respondWithResult(_0x5153e0,null))[_0x0337('0x41')](handleError(_0x5153e0,null));};exports[_0x0337('0x50')]=function(_0x1ceb1e,_0x251bc1,_0x1fed41){if(_0x1ceb1e[_0x0337('0x46')]['id']){delete _0x1ceb1e['body']['id'];}return db[_0x0337('0x28')][_0x0337('0x4b')]({'where':{'id':_0x1ceb1e['params']['id']}})['then'](handleEntityNotFound(_0x251bc1,null))[_0x0337('0x23')](function(_0x2ee433){if(_0x2ee433){return _0x2ee433[_0x0337('0x50')](_0x1ceb1e[_0x0337('0x46')]['ids']||[]);}return null;})[_0x0337('0x23')](respondWithResult(_0x251bc1,null))[_0x0337('0x41')](handleError(_0x251bc1,null));};
\ No newline at end of file
+var _0x4885=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','find','findOne','keys','DeskField','filter','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','crypto','jsforce'];(function(_0x5d0b05,_0x3307f3){var _0x5426cd=function(_0x260a92){while(--_0x260a92){_0x5d0b05['push'](_0x5d0b05['shift']());}};_0x5426cd(++_0x3307f3);}(_0x4885,0x9c));var _0x5488=function(_0x55c195,_0x5a8110){_0x55c195=_0x55c195-0x0;var _0x296ec9=_0x4885[_0x55c195];return _0x296ec9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5488('0x0'));var zipdir=require(_0x5488('0x1'));var jsonpatch=require(_0x5488('0x2'));var rp=require(_0x5488('0x3'));var moment=require(_0x5488('0x4'));var BPromise=require(_0x5488('0x5'));var Mustache=require(_0x5488('0x6'));var util=require(_0x5488('0x7'));var path=require(_0x5488('0x8'));var sox=require('sox');var csv=require(_0x5488('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x5488('0xa'));var jsforce=require(_0x5488('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5488('0x9'));var querystring=require('querystring');var Papa=require(_0x5488('0xc'));var Redis=require(_0x5488('0xd'));var authService=require(_0x5488('0xe'));var qs=require(_0x5488('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5488('0x10'));var logger=require('../../config/logger')(_0x5488('0x11'));var utils=require(_0x5488('0x12'));var config=require(_0x5488('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5488('0x14'))['db'];function respondWithStatusCode(_0x473428,_0x2d5fd7){_0x2d5fd7=_0x2d5fd7||0xcc;return function(_0x5c835a){if(_0x5c835a){return _0x473428[_0x5488('0x15')](_0x2d5fd7);}return _0x473428['status'](_0x2d5fd7)[_0x5488('0x16')]();};}function respondWithResult(_0x349ffb,_0x2904dc){_0x2904dc=_0x2904dc||0xc8;return function(_0x536ade){if(_0x536ade){return _0x349ffb[_0x5488('0x17')](_0x2904dc)[_0x5488('0x18')](_0x536ade);}};}function respondWithFilteredResult(_0x582eb4,_0x405b40){return function(_0x24ec9e){if(_0x24ec9e){var _0x541bd8=typeof _0x405b40[_0x5488('0x19')]===_0x5488('0x1a')&&typeof _0x405b40['limit']==='undefined';var _0x280d6d=_0x24ec9e[_0x5488('0x1b')];var _0x1de2ab=_0x541bd8?0x0:_0x405b40['offset'];var _0x45c67b=_0x541bd8?_0x24ec9e['count']:_0x405b40[_0x5488('0x19')]+_0x405b40['limit'];var _0x21c0e8;if(_0x45c67b>=_0x280d6d){_0x45c67b=_0x280d6d;_0x21c0e8=0xc8;}else{_0x21c0e8=0xce;}_0x582eb4['status'](_0x21c0e8);return _0x582eb4[_0x5488('0x1c')](_0x5488('0x1d'),_0x1de2ab+'-'+_0x45c67b+'/'+_0x280d6d)[_0x5488('0x18')](_0x24ec9e);}return null;};}function patchUpdates(_0x261492){return function(_0x540e23){try{jsonpatch[_0x5488('0x1e')](_0x540e23,_0x261492,!![]);}catch(_0x4dc26f){return BPromise[_0x5488('0x1f')](_0x4dc26f);}return _0x540e23[_0x5488('0x20')]();};}function saveUpdates(_0x3c7856,_0x1945be){return function(_0x1aa5f7){if(_0x1aa5f7){return _0x1aa5f7[_0x5488('0x21')](_0x3c7856)[_0x5488('0x22')](function(_0x1f941a){return _0x1f941a;});}return null;};}function removeEntity(_0x3c2d4d,_0x5114d5){return function(_0xf572fc){if(_0xf572fc){return _0xf572fc[_0x5488('0x23')]()[_0x5488('0x22')](function(){_0x3c2d4d[_0x5488('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a6f9a,_0x3f8da9){return function(_0xf102f2){if(!_0xf102f2){_0x4a6f9a[_0x5488('0x15')](0x194);}return _0xf102f2;};}function handleError(_0x33e949,_0x245971){_0x245971=_0x245971||0x1f4;return function(_0x3bbcba){logger[_0x5488('0x24')](_0x3bbcba[_0x5488('0x25')]);if(_0x3bbcba[_0x5488('0x26')]){delete _0x3bbcba[_0x5488('0x26')];}_0x33e949[_0x5488('0x17')](_0x245971)[_0x5488('0x27')](_0x3bbcba);};}exports['index']=function(_0x258c0b,_0x8105bd){var _0x31c551={},_0x424776={},_0x54b31a={'count':0x0,'rows':[]};var _0x241387=_[_0x5488('0x28')](db[_0x5488('0x29')][_0x5488('0x2a')],function(_0x137f40){return{'name':_0x137f40[_0x5488('0x2b')],'type':_0x137f40['type'][_0x5488('0x2c')]};});_0x424776[_0x5488('0x2d')]=_['map'](_0x241387,'name');_0x424776[_0x5488('0x2e')]=_['keys'](_0x258c0b[_0x5488('0x2e')]);_0x424776[_0x5488('0x2f')]=_[_0x5488('0x30')](_0x424776[_0x5488('0x2d')],_0x424776['query']);_0x31c551[_0x5488('0x31')]=_[_0x5488('0x30')](_0x424776[_0x5488('0x2d')],qs[_0x5488('0x32')](_0x258c0b[_0x5488('0x2e')][_0x5488('0x32')]));_0x31c551['attributes']=_0x31c551[_0x5488('0x31')][_0x5488('0x33')]?_0x31c551[_0x5488('0x31')]:_0x424776[_0x5488('0x2d')];if(!_0x258c0b[_0x5488('0x2e')][_0x5488('0x34')](_0x5488('0x35'))){_0x31c551['limit']=qs['limit'](_0x258c0b['query'][_0x5488('0x36')]);_0x31c551[_0x5488('0x19')]=qs['offset'](_0x258c0b['query']['offset']);}_0x31c551[_0x5488('0x37')]=qs[_0x5488('0x38')](_0x258c0b[_0x5488('0x2e')]['sort']);_0x31c551['where']=qs[_0x5488('0x2f')](_[_0x5488('0x39')](_0x258c0b[_0x5488('0x2e')],_0x424776['filters']),_0x241387);if(_0x258c0b[_0x5488('0x2e')]['filter']){_0x31c551[_0x5488('0x3a')]=_[_0x5488('0x3b')](_0x31c551[_0x5488('0x3a')],{'$or':_[_0x5488('0x28')](_0x241387,function(_0x4e395b){if(_0x4e395b[_0x5488('0x3c')]!==_0x5488('0x3d')){var _0x7e19fa={};_0x7e19fa[_0x4e395b[_0x5488('0x26')]]={'$like':'%'+_0x258c0b[_0x5488('0x2e')]['filter']+'%'};return _0x7e19fa;}})});}_0x31c551=_[_0x5488('0x3b')]({},_0x31c551,_0x258c0b[_0x5488('0x3e')]);var _0x1072cf={'where':_0x31c551['where']};return db[_0x5488('0x29')][_0x5488('0x1b')](_0x1072cf)[_0x5488('0x22')](function(_0x2a3c7a){_0x54b31a[_0x5488('0x1b')]=_0x2a3c7a;if(_0x258c0b[_0x5488('0x2e')][_0x5488('0x3f')]){_0x31c551[_0x5488('0x40')]=[{'all':!![]}];}return db[_0x5488('0x29')][_0x5488('0x41')](_0x31c551);})[_0x5488('0x22')](function(_0x1a887d){_0x54b31a[_0x5488('0x42')]=_0x1a887d;return _0x54b31a;})[_0x5488('0x22')](respondWithFilteredResult(_0x8105bd,_0x31c551))['catch'](handleError(_0x8105bd,null));};exports[_0x5488('0x43')]=function(_0x2b8742,_0x497df2){var _0xca0076={'raw':![],'where':{'id':_0x2b8742[_0x5488('0x44')]['id']}},_0x30989b={};_0x30989b[_0x5488('0x2d')]=_['keys'](db['DeskConfiguration']['rawAttributes']);_0x30989b[_0x5488('0x2e')]=_['keys'](_0x2b8742[_0x5488('0x2e')]);_0x30989b[_0x5488('0x2f')]=_['intersection'](_0x30989b[_0x5488('0x2d')],_0x30989b[_0x5488('0x2e')]);_0xca0076[_0x5488('0x31')]=_[_0x5488('0x30')](_0x30989b[_0x5488('0x2d')],qs[_0x5488('0x32')](_0x2b8742[_0x5488('0x2e')][_0x5488('0x32')]));_0xca0076[_0x5488('0x31')]=_0xca0076[_0x5488('0x31')]['length']?_0xca0076[_0x5488('0x31')]:_0x30989b[_0x5488('0x2d')];if(_0x2b8742['query'][_0x5488('0x3f')]){_0xca0076[_0x5488('0x40')]=[{'all':!![]}];}_0xca0076=_[_0x5488('0x3b')]({},_0xca0076,_0x2b8742[_0x5488('0x3e')]);return db[_0x5488('0x29')]['find'](_0xca0076)[_0x5488('0x22')](handleEntityNotFound(_0x497df2,null))['then'](respondWithResult(_0x497df2,null))[_0x5488('0x45')](handleError(_0x497df2,null));};exports[_0x5488('0x46')]=function(_0x593ed5,_0x2fb992){return db[_0x5488('0x29')][_0x5488('0x46')](_0x593ed5[_0x5488('0x47')],{})['then'](respondWithResult(_0x2fb992,0xc9))['catch'](handleError(_0x2fb992,null));};exports['update']=function(_0x5aab23,_0x23c35f){if(_0x5aab23[_0x5488('0x47')]['id']){delete _0x5aab23[_0x5488('0x47')]['id'];}return db[_0x5488('0x29')][_0x5488('0x48')]({'where':{'id':_0x5aab23[_0x5488('0x44')]['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x23c35f,null))[_0x5488('0x22')](saveUpdates(_0x5aab23[_0x5488('0x47')],null))[_0x5488('0x22')](respondWithResult(_0x23c35f,null))[_0x5488('0x45')](handleError(_0x23c35f,null));};exports['destroy']=function(_0x1ac84c,_0x194747){return db['DeskConfiguration'][_0x5488('0x48')]({'where':{'id':_0x1ac84c[_0x5488('0x44')]['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x194747,null))[_0x5488('0x22')](removeEntity(_0x194747,null))[_0x5488('0x45')](handleError(_0x194747,null));};exports['getFields']=function(_0x27dcd6,_0x50b455,_0x5334aa){var _0x20b11d={};var _0x48cbbc={};var _0x18effc;var _0xb142f9;return db['DeskConfiguration'][_0x5488('0x49')]({'where':{'id':_0x27dcd6[_0x5488('0x44')]['id']}})['then'](handleEntityNotFound(_0x50b455,null))[_0x5488('0x22')](function(_0x4e86fc){if(_0x4e86fc){_0x18effc=_0x4e86fc;_0x48cbbc[_0x5488('0x2d')]=_[_0x5488('0x4a')](db[_0x5488('0x4b')][_0x5488('0x2a')]);_0x48cbbc['query']=_[_0x5488('0x4a')](_0x27dcd6['query']);_0x48cbbc[_0x5488('0x2f')]=_[_0x5488('0x30')](_0x48cbbc['model'],_0x48cbbc['query']);_0x20b11d[_0x5488('0x31')]=_[_0x5488('0x30')](_0x48cbbc['model'],qs[_0x5488('0x32')](_0x27dcd6[_0x5488('0x2e')][_0x5488('0x32')]));_0x20b11d['attributes']=_0x20b11d['attributes'][_0x5488('0x33')]?_0x20b11d[_0x5488('0x31')]:_0x48cbbc[_0x5488('0x2d')];_0x20b11d['order']=qs[_0x5488('0x38')](_0x27dcd6[_0x5488('0x2e')]['sort']);_0x20b11d[_0x5488('0x3a')]=qs['filters'](_[_0x5488('0x39')](_0x27dcd6[_0x5488('0x2e')],_0x48cbbc[_0x5488('0x2f')]));if(_0x27dcd6[_0x5488('0x2e')][_0x5488('0x4c')]){_0x20b11d[_0x5488('0x3a')]=_[_0x5488('0x3b')](_0x20b11d['where'],{'$or':_['map'](_0x20b11d[_0x5488('0x31')],function(_0x3877b7){var _0x5688ff={};_0x5688ff[_0x3877b7]={'$like':'%'+_0x27dcd6[_0x5488('0x2e')][_0x5488('0x4c')]+'%'};return _0x5688ff;})});}_0x20b11d=_[_0x5488('0x3b')]({},_0x20b11d,_0x27dcd6[_0x5488('0x3e')]);return _0x18effc[_0x5488('0x4d')](_0x20b11d);}})[_0x5488('0x22')](function(_0x5151e6){if(_0x5151e6){_0xb142f9=_0x5151e6[_0x5488('0x33')];if(!_0x27dcd6['query']['hasOwnProperty'](_0x5488('0x35'))){_0x20b11d[_0x5488('0x36')]=qs[_0x5488('0x36')](_0x27dcd6[_0x5488('0x2e')][_0x5488('0x36')]);_0x20b11d['offset']=qs['offset'](_0x27dcd6[_0x5488('0x2e')][_0x5488('0x19')]);}return _0x18effc['getFields'](_0x20b11d);}})[_0x5488('0x22')](function(_0x5f258a){if(_0x5f258a){return _0x5f258a?{'count':_0xb142f9,'rows':_0x5f258a}:null;}})[_0x5488('0x22')](respondWithResult(_0x50b455,null))[_0x5488('0x45')](handleError(_0x50b455,null));};exports[_0x5488('0x4e')]=function(_0x467f8a,_0x712bca,_0x24492f){var _0x4ffafe={};var _0x2bda8e={};var _0x59f659;var _0x10aebe;return db['DeskConfiguration']['findOne']({'where':{'id':_0x467f8a[_0x5488('0x44')]['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x712bca,null))[_0x5488('0x22')](function(_0x61375a){if(_0x61375a){_0x59f659=_0x61375a;_0x2bda8e[_0x5488('0x2d')]=_[_0x5488('0x4a')](db[_0x5488('0x4b')][_0x5488('0x2a')]);_0x2bda8e['query']=_[_0x5488('0x4a')](_0x467f8a[_0x5488('0x2e')]);_0x2bda8e[_0x5488('0x2f')]=_[_0x5488('0x30')](_0x2bda8e[_0x5488('0x2d')],_0x2bda8e['query']);_0x4ffafe['attributes']=_[_0x5488('0x30')](_0x2bda8e[_0x5488('0x2d')],qs[_0x5488('0x32')](_0x467f8a['query']['fields']));_0x4ffafe['attributes']=_0x4ffafe['attributes'][_0x5488('0x33')]?_0x4ffafe[_0x5488('0x31')]:_0x2bda8e['model'];_0x4ffafe['order']=qs[_0x5488('0x38')](_0x467f8a[_0x5488('0x2e')][_0x5488('0x38')]);_0x4ffafe[_0x5488('0x3a')]=qs['filters'](_['pick'](_0x467f8a[_0x5488('0x2e')],_0x2bda8e[_0x5488('0x2f')]));if(_0x467f8a['query'][_0x5488('0x4c')]){_0x4ffafe['where']=_['merge'](_0x4ffafe[_0x5488('0x3a')],{'$or':_['map'](_0x4ffafe['attributes'],function(_0x3ab051){var _0x27a64b={};_0x27a64b[_0x3ab051]={'$like':'%'+_0x467f8a['query'][_0x5488('0x4c')]+'%'};return _0x27a64b;})});}_0x4ffafe=_[_0x5488('0x3b')]({},_0x4ffafe,_0x467f8a[_0x5488('0x3e')]);return _0x59f659[_0x5488('0x4e')](_0x4ffafe);}})['then'](function(_0x174899){if(_0x174899){_0x10aebe=_0x174899[_0x5488('0x33')];if(!_0x467f8a[_0x5488('0x2e')][_0x5488('0x34')](_0x5488('0x35'))){_0x4ffafe[_0x5488('0x36')]=qs[_0x5488('0x36')](_0x467f8a['query'][_0x5488('0x36')]);_0x4ffafe[_0x5488('0x19')]=qs[_0x5488('0x19')](_0x467f8a[_0x5488('0x2e')][_0x5488('0x19')]);}return _0x59f659['getSubjects'](_0x4ffafe);}})['then'](function(_0x2a1a1a){if(_0x2a1a1a){return _0x2a1a1a?{'count':_0x10aebe,'rows':_0x2a1a1a}:null;}})[_0x5488('0x22')](respondWithResult(_0x712bca,null))[_0x5488('0x45')](handleError(_0x712bca,null));};exports[_0x5488('0x4f')]=function(_0x514bb7,_0x5bcfb9,_0x5646be){var _0x449a3c={};var _0x201d7c={};var _0xe966d7;var _0x3e8388;return db['DeskConfiguration'][_0x5488('0x49')]({'where':{'id':_0x514bb7[_0x5488('0x44')]['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x5bcfb9,null))['then'](function(_0x36107){if(_0x36107){_0xe966d7=_0x36107;_0x201d7c[_0x5488('0x2d')]=_[_0x5488('0x4a')](db[_0x5488('0x4b')][_0x5488('0x2a')]);_0x201d7c['query']=_[_0x5488('0x4a')](_0x514bb7[_0x5488('0x2e')]);_0x201d7c[_0x5488('0x2f')]=_[_0x5488('0x30')](_0x201d7c['model'],_0x201d7c[_0x5488('0x2e')]);_0x449a3c[_0x5488('0x31')]=_[_0x5488('0x30')](_0x201d7c['model'],qs[_0x5488('0x32')](_0x514bb7[_0x5488('0x2e')][_0x5488('0x32')]));_0x449a3c[_0x5488('0x31')]=_0x449a3c[_0x5488('0x31')][_0x5488('0x33')]?_0x449a3c['attributes']:_0x201d7c[_0x5488('0x2d')];_0x449a3c[_0x5488('0x37')]=qs['sort'](_0x514bb7[_0x5488('0x2e')][_0x5488('0x38')]);_0x449a3c[_0x5488('0x3a')]=qs[_0x5488('0x2f')](_['pick'](_0x514bb7['query'],_0x201d7c[_0x5488('0x2f')]));if(_0x514bb7[_0x5488('0x2e')]['filter']){_0x449a3c[_0x5488('0x3a')]=_[_0x5488('0x3b')](_0x449a3c[_0x5488('0x3a')],{'$or':_[_0x5488('0x28')](_0x449a3c['attributes'],function(_0x2bdc10){var _0x259dd2={};_0x259dd2[_0x2bdc10]={'$like':'%'+_0x514bb7[_0x5488('0x2e')][_0x5488('0x4c')]+'%'};return _0x259dd2;})});}_0x449a3c=_['merge']({},_0x449a3c,_0x514bb7[_0x5488('0x3e')]);return _0xe966d7['getDescriptions'](_0x449a3c);}})['then'](function(_0x4e0fe2){if(_0x4e0fe2){_0x3e8388=_0x4e0fe2[_0x5488('0x33')];if(!_0x514bb7[_0x5488('0x2e')][_0x5488('0x34')](_0x5488('0x35'))){_0x449a3c['limit']=qs['limit'](_0x514bb7[_0x5488('0x2e')][_0x5488('0x36')]);_0x449a3c[_0x5488('0x19')]=qs[_0x5488('0x19')](_0x514bb7[_0x5488('0x2e')][_0x5488('0x19')]);}return _0xe966d7['getDescriptions'](_0x449a3c);}})[_0x5488('0x22')](function(_0xcd2ac1){if(_0xcd2ac1){return _0xcd2ac1?{'count':_0x3e8388,'rows':_0xcd2ac1}:null;}})[_0x5488('0x22')](respondWithResult(_0x5bcfb9,null))[_0x5488('0x45')](handleError(_0x5bcfb9,null));};exports[_0x5488('0x50')]=function(_0x19041f,_0x44f896,_0x332ed7){var _0x498525={};var _0x450218={};var _0xe2749e;var _0x3d9e3c;return db[_0x5488('0x29')][_0x5488('0x49')]({'where':{'id':_0x19041f['params']['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x44f896,null))['then'](function(_0x3baff0){if(_0x3baff0){_0xe2749e=_0x3baff0;_0x450218[_0x5488('0x2d')]=_['keys'](db[_0x5488('0x51')][_0x5488('0x2a')]);_0x450218['query']=_[_0x5488('0x4a')](_0x19041f['query']);_0x450218[_0x5488('0x2f')]=_['intersection'](_0x450218['model'],_0x450218['query']);_0x498525[_0x5488('0x31')]=_[_0x5488('0x30')](_0x450218[_0x5488('0x2d')],qs[_0x5488('0x32')](_0x19041f['query']['fields']));_0x498525[_0x5488('0x31')]=_0x498525[_0x5488('0x31')][_0x5488('0x33')]?_0x498525[_0x5488('0x31')]:_0x450218[_0x5488('0x2d')];_0x498525[_0x5488('0x37')]=qs[_0x5488('0x38')](_0x19041f[_0x5488('0x2e')][_0x5488('0x38')]);_0x498525[_0x5488('0x3a')]=qs['filters'](_[_0x5488('0x39')](_0x19041f[_0x5488('0x2e')],_0x450218[_0x5488('0x2f')]));if(_0x19041f[_0x5488('0x2e')][_0x5488('0x4c')]){_0x498525['where']=_[_0x5488('0x3b')](_0x498525['where'],{'$or':_[_0x5488('0x28')](_0x498525[_0x5488('0x31')],function(_0x46ac41){var _0x9916e1={};_0x9916e1[_0x46ac41]={'$like':'%'+_0x19041f[_0x5488('0x2e')][_0x5488('0x4c')]+'%'};return _0x9916e1;})});}_0x498525=_[_0x5488('0x3b')]({},_0x498525,_0x19041f['options']);return _0xe2749e[_0x5488('0x50')](_0x498525);}})['then'](function(_0x37e43c){if(_0x37e43c){_0x3d9e3c=_0x37e43c[_0x5488('0x33')];if(!_0x19041f['query'][_0x5488('0x34')](_0x5488('0x35'))){_0x498525[_0x5488('0x36')]=qs[_0x5488('0x36')](_0x19041f[_0x5488('0x2e')][_0x5488('0x36')]);_0x498525[_0x5488('0x19')]=qs['offset'](_0x19041f[_0x5488('0x2e')]['offset']);}return _0xe2749e[_0x5488('0x50')](_0x498525);}})[_0x5488('0x22')](function(_0x1136e3){if(_0x1136e3){return _0x1136e3?{'count':_0x3d9e3c,'rows':_0x1136e3}:null;}})[_0x5488('0x22')](respondWithResult(_0x44f896,null))['catch'](handleError(_0x44f896,null));};exports[_0x5488('0x52')]=function(_0x931373,_0x18f238,_0xa437f5){if(_0x931373[_0x5488('0x47')]['id']){delete _0x931373[_0x5488('0x47')]['id'];}return db[_0x5488('0x29')][_0x5488('0x49')]({'where':{'id':_0x931373[_0x5488('0x44')]['id']}})[_0x5488('0x22')](handleEntityNotFound(_0x18f238,null))[_0x5488('0x22')](function(_0x580fc4){if(_0x580fc4){return _0x580fc4[_0x5488('0x52')](_0x931373['body'][_0x5488('0x53')]||[]);}return null;})[_0x5488('0x22')](respondWithResult(_0x18f238,null))[_0x5488('0x45')](handleError(_0x18f238,null));};
\ No newline at end of file
index f51f1ff..86f490c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6499=['api','bluebird','request-promise','path','../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger'];(function(_0x1280a1,_0x5967cd){var _0x240d6f=function(_0x480ee9){while(--_0x480ee9){_0x1280a1['push'](_0x1280a1['shift']());}};_0x240d6f(++_0x5967cd);}(_0x6499,0x141));var _0x9649=function(_0x1e36bf,_0x90996d){_0x1e36bf=_0x1e36bf-0x0;var _0x3049e8=_0x6499[_0x1e36bf];return _0x3049e8;};'use strict';var _=require(_0x9649('0x0'));var util=require(_0x9649('0x1'));var logger=require(_0x9649('0x2'))(_0x9649('0x3'));var moment=require('moment');var BPromise=require(_0x9649('0x4'));var rp=require(_0x9649('0x5'));var fs=require('fs');var path=require(_0x9649('0x6'));var rimraf=require('rimraf');var config=require(_0x9649('0x7'));var attributes=require(_0x9649('0x8'));module[_0x9649('0x9')]=function(_0x4935d5,_0x3fcc80){return _0x4935d5['define'](_0x9649('0xa'),attributes,{'tableName':_0x9649('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8529=['../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','../../config/logger','api','moment','path','rimraf'];(function(_0x5d77a7,_0x5eed3d){var _0x3f3cea=function(_0x1605ac){while(--_0x1605ac){_0x5d77a7['push'](_0x5d77a7['shift']());}};_0x3f3cea(++_0x5eed3d);}(_0x8529,0x73));var _0x9852=function(_0xf13e99,_0x577cae){_0xf13e99=_0xf13e99-0x0;var _0x34f0f4=_0x8529[_0xf13e99];return _0x34f0f4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9852('0x0'))(_0x9852('0x1'));var moment=require(_0x9852('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9852('0x3'));var rimraf=require(_0x9852('0x4'));var config=require(_0x9852('0x5'));var attributes=require(_0x9852('0x6'));module[_0x9852('0x7')]=function(_0x267c59,_0x549a04){return _0x267c59['define'](_0x9852('0x8'),attributes,{'tableName':_0x9852('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8ef234..57439d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aea=['DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','ioredis','../../config/logger','rpc','../../config/environment','client','http','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1dd2cc,_0x36ddfe){var _0x305d8e=function(_0x27df09){while(--_0x27df09){_0x1dd2cc['push'](_0x1dd2cc['shift']());}};_0x305d8e(++_0x36ddfe);}(_0x9aea,0x196));var _0xa9ae=function(_0x369e8c,_0x88dfe0){_0x369e8c=_0x369e8c-0x0;var _0x2c568d=_0x9aea[_0x369e8c];return _0x2c568d;};'use strict';var _=require(_0xa9ae('0x0'));var util=require(_0xa9ae('0x1'));var moment=require(_0xa9ae('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa9ae('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa9ae('0x4'))(_0xa9ae('0x5'));var config=require(_0xa9ae('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa9ae('0x7')][_0xa9ae('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e149f,_0xacbb0c,_0x7ae815){return new BPromise(function(_0x4c5866,_0x1e1e41){return client['request'](_0x5e149f,_0x7ae815)[_0xa9ae('0x9')](function(_0x573d7c){logger[_0xa9ae('0xa')](_0xa9ae('0xb'),_0xacbb0c,_0xa9ae('0xc'));logger[_0xa9ae('0xd')](_0xa9ae('0xe'),_0xacbb0c,_0xa9ae('0xc'),JSON[_0xa9ae('0xf')](_0x573d7c));if(_0x573d7c[_0xa9ae('0x10')]){if(_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x11')]===0x1f4){logger[_0xa9ae('0x10')](_0xa9ae('0xb'),_0xacbb0c,_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);return _0x1e1e41(_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);}logger[_0xa9ae('0x10')](_0xa9ae('0xb'),_0xacbb0c,_0x573d7c[_0xa9ae('0x10')][_0xa9ae('0x12')]);return _0x4c5866(_0x573d7c['error'][_0xa9ae('0x12')]);}else{logger[_0xa9ae('0xa')](_0xa9ae('0xb'),_0xacbb0c,'request\x20sent');_0x4c5866(_0x573d7c['result'][_0xa9ae('0x12')]);}})[_0xa9ae('0x13')](function(_0x383c28){logger[_0xa9ae('0x10')]('DeskConfiguration,\x20%s,\x20%s',_0xacbb0c,_0x383c28);_0x1e1e41(_0x383c28);});});}
\ No newline at end of file
+var _0x8d63=['bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment'];(function(_0xabd0bc,_0x203b56){var _0xdbde42=function(_0x45bfed){while(--_0x45bfed){_0xabd0bc['push'](_0xabd0bc['shift']());}};_0xdbde42(++_0x203b56);}(_0x8d63,0xd9));var _0x38d6=function(_0x3cb00f,_0x28e6d1){_0x3cb00f=_0x3cb00f-0x0;var _0x5ed655=_0x8d63[_0x3cb00f];return _0x5ed655;};'use strict';var _=require(_0x38d6('0x0'));var util=require(_0x38d6('0x1'));var moment=require(_0x38d6('0x2'));var BPromise=require(_0x38d6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38d6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x38d6('0x5'));var logger=require(_0x38d6('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x38d6('0x7'));var client=jayson['client'][_0x38d6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5cab6e,_0x37534d,_0x23de58){return new BPromise(function(_0x10dd6f,_0x1aeba8){return client[_0x38d6('0x9')](_0x5cab6e,_0x23de58)[_0x38d6('0xa')](function(_0x5ad3b1){logger[_0x38d6('0xb')](_0x38d6('0xc'),_0x37534d,_0x38d6('0xd'));logger[_0x38d6('0xe')](_0x38d6('0xf'),_0x37534d,_0x38d6('0xd'),JSON['stringify'](_0x5ad3b1));if(_0x5ad3b1[_0x38d6('0x10')]){if(_0x5ad3b1['error'][_0x38d6('0x11')]===0x1f4){logger[_0x38d6('0x10')](_0x38d6('0xc'),_0x37534d,_0x5ad3b1['error'][_0x38d6('0x12')]);return _0x1aeba8(_0x5ad3b1[_0x38d6('0x10')][_0x38d6('0x12')]);}logger[_0x38d6('0x10')](_0x38d6('0xc'),_0x37534d,_0x5ad3b1[_0x38d6('0x10')][_0x38d6('0x12')]);return _0x10dd6f(_0x5ad3b1[_0x38d6('0x10')][_0x38d6('0x12')]);}else{logger[_0x38d6('0xb')](_0x38d6('0xc'),_0x37534d,_0x38d6('0xd'));_0x10dd6f(_0x5ad3b1[_0x38d6('0x13')][_0x38d6('0x12')]);}})['catch'](function(_0x16d65a){logger[_0x38d6('0x10')]('DeskConfiguration,\x20%s,\x20%s',_0x37534d,_0x16d65a);_0x1aeba8(_0x16d65a);});});}
\ No newline at end of file
index 529a873..fbf0412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6f9=['../../config/environment','isAuthenticated','index','get','/:id','show','post','update','exports','util','path','connect-timeout','Router'];(function(_0x2d0031,_0x322541){var _0x3d8f42=function(_0x32432c){while(--_0x32432c){_0x2d0031['push'](_0x2d0031['shift']());}};_0x3d8f42(++_0x322541);}(_0xa6f9,0x11a));var _0x9a6f=function(_0x745eaa,_0x154802){_0x745eaa=_0x745eaa-0x0;var _0x4298b6=_0xa6f9[_0x745eaa];return _0x4298b6;};'use strict';var multer=require('multer');var util=require(_0x9a6f('0x0'));var path=require(_0x9a6f('0x1'));var timeout=require(_0x9a6f('0x2'));var express=require('express');var router=express[_0x9a6f('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9a6f('0x4'));var controller=require('./intDeskField.controller');router['get']('/',auth[_0x9a6f('0x5')](),controller[_0x9a6f('0x6')]);router[_0x9a6f('0x7')](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller[_0x9a6f('0x9')]);router[_0x9a6f('0xa')]('/',auth[_0x9a6f('0x5')](),controller['create']);router['put'](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller[_0x9a6f('0xb')]);router['delete'](_0x9a6f('0x8'),auth[_0x9a6f('0x5')](),controller['destroy']);module[_0x9a6f('0xc')]=router;
\ No newline at end of file
+var _0x9953=['isAuthenticated','index','get','/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller'];(function(_0x80d8ff,_0x114eeb){var _0x2558ae=function(_0x209a5b){while(--_0x209a5b){_0x80d8ff['push'](_0x80d8ff['shift']());}};_0x2558ae(++_0x114eeb);}(_0x9953,0x1d7));var _0x3995=function(_0x115621,_0x341cde){_0x115621=_0x115621-0x0;var _0x5ef5ce=_0x9953[_0x115621];return _0x5ef5ce;};'use strict';var multer=require('multer');var util=require(_0x3995('0x0'));var path=require(_0x3995('0x1'));var timeout=require(_0x3995('0x2'));var express=require('express');var router=express[_0x3995('0x3')]();var fs_extra=require(_0x3995('0x4'));var auth=require(_0x3995('0x5'));var interaction=require(_0x3995('0x6'));var config=require(_0x3995('0x7'));var controller=require(_0x3995('0x8'));router['get']('/',auth[_0x3995('0x9')](),controller[_0x3995('0xa')]);router[_0x3995('0xb')](_0x3995('0xc'),auth[_0x3995('0x9')](),controller[_0x3995('0xd')]);router[_0x3995('0xe')]('/',auth[_0x3995('0x9')](),controller['create']);router[_0x3995('0xf')](_0x3995('0xc'),auth[_0x3995('0x9')](),controller[_0x3995('0x10')]);router[_0x3995('0x11')](_0x3995('0xc'),auth[_0x3995('0x9')](),controller[_0x3995('0x12')]);module[_0x3995('0x13')]=router;
\ No newline at end of file
index f3349a6..c8d8e05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0791=['exports','ENUM','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0x0791,0x179));var _0x1079=function(_0x2aee2f,_0xad9887){_0x2aee2f=_0x2aee2f-0x0;var _0x19337f=_0x0791[_0x2aee2f];return _0x19337f;};'use strict';var Sequelize=require(_0x1079('0x0'));module[_0x1079('0x1')]={'type':{'type':Sequelize[_0x1079('0x2')]('string','variable',_0x1079('0x3'),_0x1079('0x4'),_0x1079('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1079('0x6')]},'keyType':{'type':Sequelize[_0x1079('0x2')]('string',_0x1079('0x7'),_0x1079('0x3'))},'keyContent':{'type':Sequelize[_0x1079('0x6')]},'idField':{'type':Sequelize[_0x1079('0x6')]},'nameField':{'type':Sequelize[_0x1079('0x6')]},'customField':{'type':Sequelize[_0x1079('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1079('0x6')]}};
\ No newline at end of file
+var _0xaba4=['keyValue','string','STRING','variable','BOOLEAN','exports','ENUM','customVariable'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaba4,0x1d5));var _0x4aba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xaba4[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x4aba('0x0')]={'type':{'type':Sequelize[_0x4aba('0x1')]('string','variable',_0x4aba('0x2'),_0x4aba('0x3'),'picklist'),'defaultValue':_0x4aba('0x4')},'content':{'type':Sequelize[_0x4aba('0x5')]},'key':{'type':Sequelize[_0x4aba('0x5')]},'keyType':{'type':Sequelize[_0x4aba('0x1')]('string',_0x4aba('0x6'),_0x4aba('0x2'))},'keyContent':{'type':Sequelize[_0x4aba('0x5')]},'idField':{'type':Sequelize[_0x4aba('0x5')]},'nameField':{'type':Sequelize[_0x4aba('0x5')]},'customField':{'type':Sequelize[_0x4aba('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4aba('0x5')]}};
\ No newline at end of file
index 31b0d3c..682b04a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca7=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','DeskField','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x17f324,_0x3df025){var _0xc5295=function(_0x44e59a){while(--_0x44e59a){_0x17f324['push'](_0x17f324['shift']());}};_0xc5295(++_0x3df025);}(_0xcca7,0x15b));var _0x7cca=function(_0x181c09,_0x1abf25){_0x181c09=_0x181c09-0x0;var _0x20473e=_0xcca7[_0x181c09];return _0x20473e;};'use strict';var emlformat=require(_0x7cca('0x0'));var rimraf=require(_0x7cca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7cca('0x2'));var rp=require(_0x7cca('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7cca('0x4'));var util=require(_0x7cca('0x5'));var path=require(_0x7cca('0x6'));var sox=require('sox');var csv=require(_0x7cca('0x7'));var ejs=require(_0x7cca('0x8'));var fs=require('fs');var fs_extra=require(_0x7cca('0x9'));var _=require(_0x7cca('0xa'));var squel=require(_0x7cca('0xb'));var crypto=require(_0x7cca('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x7cca('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7cca('0xd'));var qs=require(_0x7cca('0xe'));var as=require(_0x7cca('0xf'));var hardwareService=require(_0x7cca('0x10'));var logger=require(_0x7cca('0x11'))(_0x7cca('0x12'));var utils=require(_0x7cca('0x13'));var config=require(_0x7cca('0x14'));var licenseUtil=require(_0x7cca('0x15'));var db=require(_0x7cca('0x16'))['db'];function respondWithStatusCode(_0x2ed119,_0x34ab21){_0x34ab21=_0x34ab21||0xcc;return function(_0x509127){if(_0x509127){return _0x2ed119['sendStatus'](_0x34ab21);}return _0x2ed119[_0x7cca('0x17')](_0x34ab21)[_0x7cca('0x18')]();};}function respondWithResult(_0xdc357a,_0x3f86b9){_0x3f86b9=_0x3f86b9||0xc8;return function(_0x7cd436){if(_0x7cd436){return _0xdc357a[_0x7cca('0x17')](_0x3f86b9)['json'](_0x7cd436);}};}function respondWithFilteredResult(_0x53c5b3,_0x5d40e8){return function(_0x332b51){if(_0x332b51){var _0xb76fc3=typeof _0x5d40e8[_0x7cca('0x19')]===_0x7cca('0x1a')&&typeof _0x5d40e8[_0x7cca('0x1b')]===_0x7cca('0x1a');var _0x34fc4a=_0x332b51[_0x7cca('0x1c')];var _0x3cb2fb=_0xb76fc3?0x0:_0x5d40e8[_0x7cca('0x19')];var _0x51d2b0=_0xb76fc3?_0x332b51['count']:_0x5d40e8['offset']+_0x5d40e8[_0x7cca('0x1b')];var _0x443cd7;if(_0x51d2b0>=_0x34fc4a){_0x51d2b0=_0x34fc4a;_0x443cd7=0xc8;}else{_0x443cd7=0xce;}_0x53c5b3['status'](_0x443cd7);return _0x53c5b3[_0x7cca('0x1d')](_0x7cca('0x1e'),_0x3cb2fb+'-'+_0x51d2b0+'/'+_0x34fc4a)['json'](_0x332b51);}return null;};}function patchUpdates(_0x489360){return function(_0x3cc2bc){try{jsonpatch[_0x7cca('0x1f')](_0x3cc2bc,_0x489360,!![]);}catch(_0x22fa12){return BPromise[_0x7cca('0x20')](_0x22fa12);}return _0x3cc2bc[_0x7cca('0x21')]();};}function saveUpdates(_0x2f1910,_0x5b5363){return function(_0x51e12c){if(_0x51e12c){return _0x51e12c[_0x7cca('0x22')](_0x2f1910)['then'](function(_0x121fe8){return _0x121fe8;});}return null;};}function removeEntity(_0x40338c,_0x4e17e8){return function(_0x27d5fb){if(_0x27d5fb){return _0x27d5fb[_0x7cca('0x23')]()[_0x7cca('0x24')](function(){_0x40338c['status'](0xcc)[_0x7cca('0x18')]();});}};}function handleEntityNotFound(_0x20f031,_0xaef07f){return function(_0x1c1e2c){if(!_0x1c1e2c){_0x20f031['sendStatus'](0x194);}return _0x1c1e2c;};}function handleError(_0x11a140,_0x2a2b8e){_0x2a2b8e=_0x2a2b8e||0x1f4;return function(_0xe1974){logger[_0x7cca('0x25')](_0xe1974[_0x7cca('0x26')]);if(_0xe1974[_0x7cca('0x27')]){delete _0xe1974['name'];}_0x11a140[_0x7cca('0x17')](_0x2a2b8e)['send'](_0xe1974);};}exports[_0x7cca('0x28')]=function(_0x34ce82,_0x1bb757){var _0x43810c={},_0x1d9ccf={},_0x5f398b={'count':0x0,'rows':[]};var _0x327cff=_['map'](db[_0x7cca('0x29')][_0x7cca('0x2a')],function(_0x2d044f){return{'name':_0x2d044f['fieldName'],'type':_0x2d044f[_0x7cca('0x2b')][_0x7cca('0x2c')]};});_0x1d9ccf[_0x7cca('0x2d')]=_[_0x7cca('0x2e')](_0x327cff,_0x7cca('0x27'));_0x1d9ccf[_0x7cca('0x2f')]=_[_0x7cca('0x30')](_0x34ce82[_0x7cca('0x2f')]);_0x1d9ccf[_0x7cca('0x31')]=_[_0x7cca('0x32')](_0x1d9ccf['model'],_0x1d9ccf['query']);_0x43810c[_0x7cca('0x33')]=_[_0x7cca('0x32')](_0x1d9ccf['model'],qs[_0x7cca('0x34')](_0x34ce82['query']['fields']));_0x43810c[_0x7cca('0x33')]=_0x43810c[_0x7cca('0x33')][_0x7cca('0x35')]?_0x43810c[_0x7cca('0x33')]:_0x1d9ccf[_0x7cca('0x2d')];if(!_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x36')](_0x7cca('0x37'))){_0x43810c[_0x7cca('0x1b')]=qs[_0x7cca('0x1b')](_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x1b')]);_0x43810c['offset']=qs[_0x7cca('0x19')](_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x19')]);}_0x43810c[_0x7cca('0x38')]=qs['sort'](_0x34ce82['query'][_0x7cca('0x39')]);_0x43810c[_0x7cca('0x3a')]=qs[_0x7cca('0x31')](_[_0x7cca('0x3b')](_0x34ce82[_0x7cca('0x2f')],_0x1d9ccf[_0x7cca('0x31')]),_0x327cff);if(_0x34ce82[_0x7cca('0x2f')][_0x7cca('0x3c')]){_0x43810c[_0x7cca('0x3a')]=_['merge'](_0x43810c[_0x7cca('0x3a')],{'$or':_[_0x7cca('0x2e')](_0x327cff,function(_0x217e79){if(_0x217e79[_0x7cca('0x2b')]!==_0x7cca('0x3d')){var _0x3c0f9a={};_0x3c0f9a[_0x217e79[_0x7cca('0x27')]]={'$like':'%'+_0x34ce82[_0x7cca('0x2f')]['filter']+'%'};return _0x3c0f9a;}})});}_0x43810c=_[_0x7cca('0x3e')]({},_0x43810c,_0x34ce82['options']);var _0x21a918={'where':_0x43810c[_0x7cca('0x3a')]};return db[_0x7cca('0x29')][_0x7cca('0x1c')](_0x21a918)[_0x7cca('0x24')](function(_0x421454){_0x5f398b['count']=_0x421454;if(_0x34ce82['query'][_0x7cca('0x3f')]){_0x43810c[_0x7cca('0x40')]=[{'all':!![]}];}return db['DeskField'][_0x7cca('0x41')](_0x43810c);})[_0x7cca('0x24')](function(_0x26025e){_0x5f398b['rows']=_0x26025e;return _0x5f398b;})['then'](respondWithFilteredResult(_0x1bb757,_0x43810c))[_0x7cca('0x42')](handleError(_0x1bb757,null));};exports[_0x7cca('0x43')]=function(_0x587f8a,_0x5d228a){var _0xcff9f={'raw':!![],'where':{'id':_0x587f8a[_0x7cca('0x44')]['id']}},_0x29eb45={};_0x29eb45[_0x7cca('0x2d')]=_[_0x7cca('0x30')](db[_0x7cca('0x29')][_0x7cca('0x2a')]);_0x29eb45[_0x7cca('0x2f')]=_[_0x7cca('0x30')](_0x587f8a[_0x7cca('0x2f')]);_0x29eb45[_0x7cca('0x31')]=_['intersection'](_0x29eb45[_0x7cca('0x2d')],_0x29eb45[_0x7cca('0x2f')]);_0xcff9f['attributes']=_[_0x7cca('0x32')](_0x29eb45[_0x7cca('0x2d')],qs[_0x7cca('0x34')](_0x587f8a['query'][_0x7cca('0x34')]));_0xcff9f[_0x7cca('0x33')]=_0xcff9f[_0x7cca('0x33')]['length']?_0xcff9f[_0x7cca('0x33')]:_0x29eb45['model'];if(_0x587f8a['query'][_0x7cca('0x3f')]){_0xcff9f[_0x7cca('0x40')]=[{'all':!![]}];}_0xcff9f=_[_0x7cca('0x3e')]({},_0xcff9f,_0x587f8a[_0x7cca('0x45')]);return db[_0x7cca('0x29')][_0x7cca('0x46')](_0xcff9f)[_0x7cca('0x24')](handleEntityNotFound(_0x5d228a,null))[_0x7cca('0x24')](respondWithResult(_0x5d228a,null))[_0x7cca('0x42')](handleError(_0x5d228a,null));};exports[_0x7cca('0x47')]=function(_0x162144,_0x406fc1){return db[_0x7cca('0x29')][_0x7cca('0x47')](_0x162144['body'],{})[_0x7cca('0x24')](respondWithResult(_0x406fc1,0xc9))[_0x7cca('0x42')](handleError(_0x406fc1,null));};exports['update']=function(_0xf8674d,_0x35efb0){if(_0xf8674d['body']['id']){delete _0xf8674d['body']['id'];}return db[_0x7cca('0x29')][_0x7cca('0x46')]({'where':{'id':_0xf8674d[_0x7cca('0x44')]['id']}})[_0x7cca('0x24')](handleEntityNotFound(_0x35efb0,null))[_0x7cca('0x24')](saveUpdates(_0xf8674d[_0x7cca('0x48')],null))[_0x7cca('0x24')](respondWithResult(_0x35efb0,null))[_0x7cca('0x42')](handleError(_0x35efb0,null));};exports[_0x7cca('0x23')]=function(_0xc9336e,_0x4ddf52){return db[_0x7cca('0x29')][_0x7cca('0x46')]({'where':{'id':_0xc9336e[_0x7cca('0x44')]['id']}})[_0x7cca('0x24')](handleEntityNotFound(_0x4ddf52,null))['then'](removeEntity(_0x4ddf52,null))['catch'](handleError(_0x4ddf52,null));};
\ No newline at end of file
+var _0xa1a9=['include','findAll','rows','catch','show','create','body','find','params','eml-format','fast-json-patch','moment','bluebird','sox','ejs','fs-extra','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','DeskField','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x66f036,_0x4450e5){var _0x2a5b6e=function(_0x266164){while(--_0x266164){_0x66f036['push'](_0x66f036['shift']());}};_0x2a5b6e(++_0x4450e5);}(_0xa1a9,0x9b));var _0x9a1a=function(_0x59e336,_0x17bc53){_0x59e336=_0x59e336-0x0;var _0xff5d2b=_0xa1a9[_0x59e336];return _0xff5d2b;};'use strict';var emlformat=require(_0x9a1a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9a1a('0x1'));var rp=require('request-promise');var moment=require(_0x9a1a('0x2'));var BPromise=require(_0x9a1a('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x9a1a('0x4'));var csv=require('to-csv');var ejs=require(_0x9a1a('0x5'));var fs=require('fs');var fs_extra=require(_0x9a1a('0x6'));var _=require('lodash');var squel=require(_0x9a1a('0x7'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9a1a('0x8'));var toCsv=require('to-csv');var querystring=require(_0x9a1a('0x9'));var Papa=require('papaparse');var Redis=require(_0x9a1a('0xa'));var authService=require(_0x9a1a('0xb'));var qs=require(_0x9a1a('0xc'));var as=require(_0x9a1a('0xd'));var hardwareService=require(_0x9a1a('0xe'));var logger=require(_0x9a1a('0xf'))('api');var utils=require(_0x9a1a('0x10'));var config=require(_0x9a1a('0x11'));var licenseUtil=require(_0x9a1a('0x12'));var db=require(_0x9a1a('0x13'))['db'];function respondWithStatusCode(_0x230d2a,_0x1d3ab7){_0x1d3ab7=_0x1d3ab7||0xcc;return function(_0x338f9b){if(_0x338f9b){return _0x230d2a[_0x9a1a('0x14')](_0x1d3ab7);}return _0x230d2a[_0x9a1a('0x15')](_0x1d3ab7)[_0x9a1a('0x16')]();};}function respondWithResult(_0x130e1c,_0x4b897c){_0x4b897c=_0x4b897c||0xc8;return function(_0x45a525){if(_0x45a525){return _0x130e1c['status'](_0x4b897c)[_0x9a1a('0x17')](_0x45a525);}};}function respondWithFilteredResult(_0x273fb3,_0x53b00a){return function(_0xac3ecd){if(_0xac3ecd){var _0x1f5cda=typeof _0x53b00a[_0x9a1a('0x18')]===_0x9a1a('0x19')&&typeof _0x53b00a[_0x9a1a('0x1a')]===_0x9a1a('0x19');var _0x43b017=_0xac3ecd['count'];var _0x296aeb=_0x1f5cda?0x0:_0x53b00a[_0x9a1a('0x18')];var _0x3f5a8c=_0x1f5cda?_0xac3ecd[_0x9a1a('0x1b')]:_0x53b00a[_0x9a1a('0x18')]+_0x53b00a[_0x9a1a('0x1a')];var _0x22a2a8;if(_0x3f5a8c>=_0x43b017){_0x3f5a8c=_0x43b017;_0x22a2a8=0xc8;}else{_0x22a2a8=0xce;}_0x273fb3['status'](_0x22a2a8);return _0x273fb3[_0x9a1a('0x1c')](_0x9a1a('0x1d'),_0x296aeb+'-'+_0x3f5a8c+'/'+_0x43b017)['json'](_0xac3ecd);}return null;};}function patchUpdates(_0x3777ff){return function(_0x3bb7b1){try{jsonpatch[_0x9a1a('0x1e')](_0x3bb7b1,_0x3777ff,!![]);}catch(_0x509721){return BPromise['reject'](_0x509721);}return _0x3bb7b1[_0x9a1a('0x1f')]();};}function saveUpdates(_0x376f23,_0x1473e9){return function(_0x3054a2){if(_0x3054a2){return _0x3054a2[_0x9a1a('0x20')](_0x376f23)[_0x9a1a('0x21')](function(_0x3b7aec){return _0x3b7aec;});}return null;};}function removeEntity(_0x1f8f40,_0x11a67d){return function(_0x2392ca){if(_0x2392ca){return _0x2392ca[_0x9a1a('0x22')]()[_0x9a1a('0x21')](function(){_0x1f8f40[_0x9a1a('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ba38b,_0x12e006){return function(_0xb2d4f0){if(!_0xb2d4f0){_0x4ba38b[_0x9a1a('0x14')](0x194);}return _0xb2d4f0;};}function handleError(_0x35255b,_0x16027f){_0x16027f=_0x16027f||0x1f4;return function(_0x162d8d){logger[_0x9a1a('0x23')](_0x162d8d[_0x9a1a('0x24')]);if(_0x162d8d[_0x9a1a('0x25')]){delete _0x162d8d[_0x9a1a('0x25')];}_0x35255b['status'](_0x16027f)['send'](_0x162d8d);};}exports[_0x9a1a('0x26')]=function(_0x56458b,_0x59239f){var _0x2eaa45={},_0x566a4d={},_0x4f7956={'count':0x0,'rows':[]};var _0x375b5e=_[_0x9a1a('0x27')](db[_0x9a1a('0x28')][_0x9a1a('0x29')],function(_0x2b2d79){return{'name':_0x2b2d79[_0x9a1a('0x2a')],'type':_0x2b2d79[_0x9a1a('0x2b')][_0x9a1a('0x2c')]};});_0x566a4d[_0x9a1a('0x2d')]=_[_0x9a1a('0x27')](_0x375b5e,_0x9a1a('0x25'));_0x566a4d['query']=_[_0x9a1a('0x2e')](_0x56458b[_0x9a1a('0x2f')]);_0x566a4d['filters']=_[_0x9a1a('0x30')](_0x566a4d['model'],_0x566a4d[_0x9a1a('0x2f')]);_0x2eaa45['attributes']=_['intersection'](_0x566a4d['model'],qs[_0x9a1a('0x31')](_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x31')]));_0x2eaa45['attributes']=_0x2eaa45[_0x9a1a('0x32')][_0x9a1a('0x33')]?_0x2eaa45[_0x9a1a('0x32')]:_0x566a4d[_0x9a1a('0x2d')];if(!_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x34')](_0x9a1a('0x35'))){_0x2eaa45[_0x9a1a('0x1a')]=qs['limit'](_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x1a')]);_0x2eaa45[_0x9a1a('0x18')]=qs[_0x9a1a('0x18')](_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x18')]);}_0x2eaa45[_0x9a1a('0x36')]=qs[_0x9a1a('0x37')](_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x37')]);_0x2eaa45[_0x9a1a('0x38')]=qs[_0x9a1a('0x39')](_[_0x9a1a('0x3a')](_0x56458b[_0x9a1a('0x2f')],_0x566a4d[_0x9a1a('0x39')]),_0x375b5e);if(_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x3b')]){_0x2eaa45[_0x9a1a('0x38')]=_[_0x9a1a('0x3c')](_0x2eaa45[_0x9a1a('0x38')],{'$or':_[_0x9a1a('0x27')](_0x375b5e,function(_0x394e9c){if(_0x394e9c[_0x9a1a('0x2b')]!==_0x9a1a('0x3d')){var _0x18d061={};_0x18d061[_0x394e9c['name']]={'$like':'%'+_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x3b')]+'%'};return _0x18d061;}})});}_0x2eaa45=_[_0x9a1a('0x3c')]({},_0x2eaa45,_0x56458b[_0x9a1a('0x3e')]);var _0x25f261={'where':_0x2eaa45['where']};return db['DeskField']['count'](_0x25f261)['then'](function(_0x451174){_0x4f7956[_0x9a1a('0x1b')]=_0x451174;if(_0x56458b[_0x9a1a('0x2f')][_0x9a1a('0x3f')]){_0x2eaa45[_0x9a1a('0x40')]=[{'all':!![]}];}return db[_0x9a1a('0x28')][_0x9a1a('0x41')](_0x2eaa45);})[_0x9a1a('0x21')](function(_0x15eced){_0x4f7956[_0x9a1a('0x42')]=_0x15eced;return _0x4f7956;})[_0x9a1a('0x21')](respondWithFilteredResult(_0x59239f,_0x2eaa45))[_0x9a1a('0x43')](handleError(_0x59239f,null));};exports[_0x9a1a('0x44')]=function(_0x301b0d,_0x372dfc){var _0x33347c={'raw':!![],'where':{'id':_0x301b0d['params']['id']}},_0x325a64={};_0x325a64[_0x9a1a('0x2d')]=_[_0x9a1a('0x2e')](db[_0x9a1a('0x28')][_0x9a1a('0x29')]);_0x325a64['query']=_[_0x9a1a('0x2e')](_0x301b0d[_0x9a1a('0x2f')]);_0x325a64['filters']=_[_0x9a1a('0x30')](_0x325a64[_0x9a1a('0x2d')],_0x325a64[_0x9a1a('0x2f')]);_0x33347c[_0x9a1a('0x32')]=_[_0x9a1a('0x30')](_0x325a64[_0x9a1a('0x2d')],qs['fields'](_0x301b0d[_0x9a1a('0x2f')]['fields']));_0x33347c[_0x9a1a('0x32')]=_0x33347c[_0x9a1a('0x32')][_0x9a1a('0x33')]?_0x33347c[_0x9a1a('0x32')]:_0x325a64[_0x9a1a('0x2d')];if(_0x301b0d[_0x9a1a('0x2f')][_0x9a1a('0x3f')]){_0x33347c[_0x9a1a('0x40')]=[{'all':!![]}];}_0x33347c=_[_0x9a1a('0x3c')]({},_0x33347c,_0x301b0d[_0x9a1a('0x3e')]);return db['DeskField']['find'](_0x33347c)[_0x9a1a('0x21')](handleEntityNotFound(_0x372dfc,null))[_0x9a1a('0x21')](respondWithResult(_0x372dfc,null))[_0x9a1a('0x43')](handleError(_0x372dfc,null));};exports[_0x9a1a('0x45')]=function(_0x674063,_0x86ef01){return db[_0x9a1a('0x28')][_0x9a1a('0x45')](_0x674063[_0x9a1a('0x46')],{})[_0x9a1a('0x21')](respondWithResult(_0x86ef01,0xc9))[_0x9a1a('0x43')](handleError(_0x86ef01,null));};exports[_0x9a1a('0x20')]=function(_0x4219c9,_0x399c40){if(_0x4219c9[_0x9a1a('0x46')]['id']){delete _0x4219c9[_0x9a1a('0x46')]['id'];}return db[_0x9a1a('0x28')][_0x9a1a('0x47')]({'where':{'id':_0x4219c9[_0x9a1a('0x48')]['id']}})[_0x9a1a('0x21')](handleEntityNotFound(_0x399c40,null))['then'](saveUpdates(_0x4219c9['body'],null))[_0x9a1a('0x21')](respondWithResult(_0x399c40,null))[_0x9a1a('0x43')](handleError(_0x399c40,null));};exports['destroy']=function(_0x16d3c5,_0x2c6df4){return db[_0x9a1a('0x28')][_0x9a1a('0x47')]({'where':{'id':_0x16d3c5[_0x9a1a('0x48')]['id']}})[_0x9a1a('0x21')](handleEntityNotFound(_0x2c6df4,null))['then'](removeEntity(_0x2c6df4,null))[_0x9a1a('0x43')](handleError(_0x2c6df4,null));};
\ No newline at end of file
index 7b42cfb..17e260b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d38=['desk_unique_index','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDeskField.attributes','exports','define','DeskField'];(function(_0x4c0c5f,_0x4518a5){var _0x435960=function(_0x6793f2){while(--_0x6793f2){_0x4c0c5f['push'](_0x4c0c5f['shift']());}};_0x435960(++_0x4518a5);}(_0x3d38,0x1a6));var _0x83d3=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x3d38[_0x432fca];return _0x3adba4;};'use strict';var _=require('lodash');var util=require(_0x83d3('0x0'));var logger=require(_0x83d3('0x1'))(_0x83d3('0x2'));var moment=require(_0x83d3('0x3'));var BPromise=require(_0x83d3('0x4'));var rp=require(_0x83d3('0x5'));var fs=require('fs');var path=require(_0x83d3('0x6'));var rimraf=require(_0x83d3('0x7'));var config=require('../../config/environment');var attributes=require(_0x83d3('0x8'));module[_0x83d3('0x9')]=function(_0x5c29ca,_0x4c0e33){return _0x5c29ca[_0x83d3('0xa')](_0x83d3('0xb'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x83d3('0xc'),'fields':['idField',_0x83d3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe445=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash'];(function(_0x39ce5e,_0x3aae30){var _0x93b4f=function(_0x458426){while(--_0x458426){_0x39ce5e['push'](_0x39ce5e['shift']());}};_0x93b4f(++_0x3aae30);}(_0xe445,0xc2));var _0x5e44=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xe445[_0x102e37];return _0x35a07c;};'use strict';var _=require(_0x5e44('0x0'));var util=require(_0x5e44('0x1'));var logger=require(_0x5e44('0x2'))(_0x5e44('0x3'));var moment=require(_0x5e44('0x4'));var BPromise=require(_0x5e44('0x5'));var rp=require(_0x5e44('0x6'));var fs=require('fs');var path=require(_0x5e44('0x7'));var rimraf=require(_0x5e44('0x8'));var config=require(_0x5e44('0x9'));var attributes=require('./intDeskField.attributes');module['exports']=function(_0x2118bb,_0x176470){return _0x2118bb[_0x5e44('0xa')]('DeskField',attributes,{'tableName':_0x5e44('0xb'),'paranoid':![],'indexes':[{'name':_0x5e44('0xc'),'fields':[_0x5e44('0xd'),_0x5e44('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6d24d54..b6dda3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8994=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x1dd3ba,_0x264100){var _0x3acc9d=function(_0xd681c){while(--_0xd681c){_0x1dd3ba['push'](_0x1dd3ba['shift']());}};_0x3acc9d(++_0x264100);}(_0x8994,0x94));var _0x4899=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x8994[_0x13b02f];return _0x12e9a6;};'use strict';var _=require(_0x4899('0x0'));var util=require('util');var moment=require(_0x4899('0x1'));var BPromise=require(_0x4899('0x2'));var rs=require(_0x4899('0x3'));var fs=require('fs');var Redis=require(_0x4899('0x4'));var db=require(_0x4899('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4899('0x6'))(_0x4899('0x7'));var config=require('../../config/environment');var jayson=require(_0x4899('0x8'));var client=jayson[_0x4899('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x383ad9,_0x337e5b,_0x5318ae){return new BPromise(function(_0x503acd,_0x5d8347){return client[_0x4899('0xa')](_0x383ad9,_0x5318ae)[_0x4899('0xb')](function(_0x5ea14a){logger[_0x4899('0xc')](_0x4899('0xd'),_0x337e5b,_0x4899('0xe'));logger[_0x4899('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x337e5b,_0x4899('0xe'),JSON[_0x4899('0x10')](_0x5ea14a));if(_0x5ea14a[_0x4899('0x11')]){if(_0x5ea14a[_0x4899('0x11')]['code']===0x1f4){logger[_0x4899('0x11')](_0x4899('0xd'),_0x337e5b,_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);return _0x5d8347(_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);}logger[_0x4899('0x11')](_0x4899('0xd'),_0x337e5b,_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);return _0x503acd(_0x5ea14a[_0x4899('0x11')][_0x4899('0x12')]);}else{logger[_0x4899('0xc')]('DeskField,\x20%s,\x20%s',_0x337e5b,'request\x20sent');_0x503acd(_0x5ea14a[_0x4899('0x13')][_0x4899('0x12')]);}})[_0x4899('0x14')](function(_0x421c52){logger['error'](_0x4899('0xd'),_0x337e5b,_0x421c52);_0x5d8347(_0x421c52);});});}
\ No newline at end of file
+var _0xb078=['rpc','http','request','info','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskField,\x20%s,\x20%s','message','result','catch','lodash','moment','ioredis','../../config/utils','../../config/logger'];(function(_0x571efd,_0x775b5d){var _0x4adce8=function(_0x47d0fd){while(--_0x47d0fd){_0x571efd['push'](_0x571efd['shift']());}};_0x4adce8(++_0x775b5d);}(_0xb078,0x1c3));var _0x8b07=function(_0x349b2d,_0x5db8a6){_0x349b2d=_0x349b2d-0x0;var _0x50910e=_0xb078[_0x349b2d];return _0x50910e;};'use strict';var _=require(_0x8b07('0x0'));var util=require('util');var moment=require(_0x8b07('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b07('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b07('0x3'));var logger=require(_0x8b07('0x4'))(_0x8b07('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x8b07('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1910c1,_0x126f3d,_0x56e8c6){return new BPromise(function(_0x5e9ae9,_0x1ab9ed){return client[_0x8b07('0x7')](_0x1910c1,_0x56e8c6)['then'](function(_0x4cbba8){logger[_0x8b07('0x8')]('DeskField,\x20%s,\x20%s',_0x126f3d,_0x8b07('0x9'));logger[_0x8b07('0xa')](_0x8b07('0xb'),_0x126f3d,_0x8b07('0x9'),JSON[_0x8b07('0xc')](_0x4cbba8));if(_0x4cbba8[_0x8b07('0xd')]){if(_0x4cbba8[_0x8b07('0xd')][_0x8b07('0xe')]===0x1f4){logger[_0x8b07('0xd')](_0x8b07('0xf'),_0x126f3d,_0x4cbba8[_0x8b07('0xd')]['message']);return _0x1ab9ed(_0x4cbba8[_0x8b07('0xd')]['message']);}logger[_0x8b07('0xd')]('DeskField,\x20%s,\x20%s',_0x126f3d,_0x4cbba8[_0x8b07('0xd')][_0x8b07('0x10')]);return _0x5e9ae9(_0x4cbba8[_0x8b07('0xd')]['message']);}else{logger[_0x8b07('0x8')]('DeskField,\x20%s,\x20%s',_0x126f3d,_0x8b07('0x9'));_0x5e9ae9(_0x4cbba8[_0x8b07('0x11')][_0x8b07('0x10')]);}})[_0x8b07('0x12')](function(_0x599209){logger['error'](_0x8b07('0xf'),_0x126f3d,_0x599209);_0x1ab9ed(_0x599209);});});}
\ No newline at end of file
index c59e23e..5f4dbb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a6=['./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','post','addConfiguration','put','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0xf5a6,0x14e));var _0x6f5a=function(_0x407132,_0x349b53){_0x407132=_0x407132-0x0;var _0x1dd167=_0xf5a6[_0x407132];return _0x1dd167;};'use strict';var multer=require(_0x6f5a('0x0'));var util=require('util');var path=require(_0x6f5a('0x1'));var timeout=require(_0x6f5a('0x2'));var express=require(_0x6f5a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6f5a('0x4'));var interaction=require(_0x6f5a('0x5'));var config=require('../../config/environment');var controller=require(_0x6f5a('0x6'));router[_0x6f5a('0x7')]('/',auth[_0x6f5a('0x8')](),controller[_0x6f5a('0x9')]);router[_0x6f5a('0x7')](_0x6f5a('0xa'),auth[_0x6f5a('0x8')](),controller[_0x6f5a('0xb')]);router[_0x6f5a('0x7')](_0x6f5a('0xc'),auth[_0x6f5a('0x8')](),controller['getConfigurations']);router[_0x6f5a('0x7')](_0x6f5a('0xd'),auth[_0x6f5a('0x8')](),controller['getFields']);router[_0x6f5a('0xe')]('/',auth[_0x6f5a('0x8')](),controller['create']);router[_0x6f5a('0xe')](_0x6f5a('0xc'),auth['isAuthenticated'](),controller[_0x6f5a('0xf')]);router[_0x6f5a('0x10')](_0x6f5a('0xa'),auth['isAuthenticated'](),controller[_0x6f5a('0x11')]);router['delete']('/:id',auth[_0x6f5a('0x8')](),controller[_0x6f5a('0x12')]);module[_0x6f5a('0x13')]=router;
\ No newline at end of file
+var _0x0335=['isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get'];(function(_0x318256,_0xa773f3){var _0xb1e352=function(_0x4bb14e){while(--_0x4bb14e){_0x318256['push'](_0x318256['shift']());}};_0xb1e352(++_0xa773f3);}(_0x0335,0x99));var _0x5033=function(_0x4ad364,_0x34d600){_0x4ad364=_0x4ad364-0x0;var _0x1ace8f=_0x0335[_0x4ad364];return _0x1ace8f;};'use strict';var multer=require(_0x5033('0x0'));var util=require('util');var path=require(_0x5033('0x1'));var timeout=require('connect-timeout');var express=require(_0x5033('0x2'));var router=express['Router']();var fs_extra=require(_0x5033('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5033('0x4'));var config=require(_0x5033('0x5'));var controller=require(_0x5033('0x6'));router[_0x5033('0x7')]('/',auth[_0x5033('0x8')](),controller[_0x5033('0x9')]);router[_0x5033('0x7')](_0x5033('0xa'),auth[_0x5033('0x8')](),controller[_0x5033('0xb')]);router['get']('/:id/configurations',auth[_0x5033('0x8')](),controller[_0x5033('0xc')]);router[_0x5033('0x7')](_0x5033('0xd'),auth[_0x5033('0x8')](),controller['getFields']);router[_0x5033('0xe')]('/',auth['isAuthenticated'](),controller[_0x5033('0xf')]);router['post'](_0x5033('0x10'),auth[_0x5033('0x8')](),controller[_0x5033('0x11')]);router[_0x5033('0x12')](_0x5033('0xa'),auth[_0x5033('0x8')](),controller[_0x5033('0x13')]);router[_0x5033('0x14')]('/:id',auth[_0x5033('0x8')](),controller[_0x5033('0x15')]);module[_0x5033('0x16')]=router;
\ No newline at end of file
index 9ee3599..116be5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4972=['exports','STRING'];(function(_0x5aa6a9,_0x3ae14c){var _0x119ce5=function(_0x4a97ef){while(--_0x4a97ef){_0x5aa6a9['push'](_0x5aa6a9['shift']());}};_0x119ce5(++_0x3ae14c);}(_0x4972,0x130));var _0x2497=function(_0x8a4811,_0x581ead){_0x8a4811=_0x8a4811-0x0;var _0x376e28=_0x4972[_0x8a4811];return _0x376e28;};'use strict';var Sequelize=require('sequelize');module[_0x2497('0x0')]={'name':{'type':Sequelize[_0x2497('0x1')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x2497('0x1')]},'remoteUri':{'type':Sequelize[_0x2497('0x1')]},'tenantId':{'type':Sequelize[_0x2497('0x1')]},'clientId':{'type':Sequelize[_0x2497('0x1')]},'clientSecret':{'type':Sequelize[_0x2497('0x1')]},'serverUrl':{'type':Sequelize[_0x2497('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2497('0x1')]}};
\ No newline at end of file
+var _0xaf55=['sequelize','exports','STRING'];(function(_0x5a8f34,_0x11c27b){var _0x497614=function(_0x2089e3){while(--_0x2089e3){_0x5a8f34['push'](_0x5a8f34['shift']());}};_0x497614(++_0x11c27b);}(_0xaf55,0x1e0));var _0x5af5=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xaf55[_0x2d2c16];return _0x53f2fb;};'use strict';var Sequelize=require(_0x5af5('0x0'));module[_0x5af5('0x1')]={'name':{'type':Sequelize[_0x5af5('0x2')]},'username':{'type':Sequelize[_0x5af5('0x2')]},'password':{'type':Sequelize[_0x5af5('0x2')]},'remoteUri':{'type':Sequelize[_0x5af5('0x2')]},'tenantId':{'type':Sequelize[_0x5af5('0x2')]},'clientId':{'type':Sequelize[_0x5af5('0x2')]},'clientSecret':{'type':Sequelize[_0x5af5('0x2')]},'serverUrl':{'type':Sequelize[_0x5af5('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5af5('0x2')]}};
\ No newline at end of file
index 381857a..9eb66e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf675=['4.0','MetadataId','GET','EntityDefinitions(','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','isNil','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','send','index','Dynamics365Account','fieldName','type','name','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','rawAttributes','options','create','body','find','params','destroy','findOne','nolimit','getConfigurations','AccountId','Subjects','getSubjects','Descriptions','channel','Dynamics365Configuration','getFields','ticketType','incident','PhoneCall','customerid','ownerid','caseorigincode','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','owneridname','primarycontactidyominame','resolvebykpiidname','responseby','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','remoteUri','clientId','slice','substring','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','username','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20'];(function(_0x53cb11,_0xb3b106){var _0x4ec798=function(_0x1b3d7c){while(--_0x1b3d7c){_0x53cb11['push'](_0x53cb11['shift']());}};_0x4ec798(++_0xb3b106);}(_0xf675,0x199));var _0x5f67=function(_0x46a634,_0x439b70){_0x46a634=_0x46a634-0x0;var _0x42007a=_0xf675[_0x46a634];return _0x42007a;};'use strict';var emlformat=require(_0x5f67('0x0'));var rimraf=require(_0x5f67('0x1'));var zipdir=require(_0x5f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f67('0x3'));var moment=require('moment');var BPromise=require(_0x5f67('0x4'));var Mustache=require(_0x5f67('0x5'));var util=require(_0x5f67('0x6'));var path=require('path');var sox=require(_0x5f67('0x7'));var csv=require(_0x5f67('0x8'));var ejs=require(_0x5f67('0x9'));var fs=require('fs');var fs_extra=require(_0x5f67('0xa'));var _=require('lodash');var squel=require(_0x5f67('0xb'));var crypto=require(_0x5f67('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5f67('0x8'));var querystring=require(_0x5f67('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5f67('0xe'));var qs=require(_0x5f67('0xf'));var as=require(_0x5f67('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5f67('0x11'));var config=require(_0x5f67('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5f67('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4653c7,_0x49e27f){_0x49e27f=_0x49e27f||0xcc;return function(_0x34ad41){if(_0x34ad41){return _0x4653c7[_0x5f67('0x14')](_0x49e27f);}return _0x4653c7[_0x5f67('0x15')](_0x49e27f)['end']();};}function respondWithResult(_0x121c72,_0x59b8c6){_0x59b8c6=_0x59b8c6||0xc8;return function(_0x2d9c4e){if(_0x2d9c4e){return _0x121c72['status'](_0x59b8c6)[_0x5f67('0x16')](_0x2d9c4e);}};}function respondWithFilteredResult(_0x50a146,_0x1d1b15){return function(_0x2ea6ad){if(_0x2ea6ad){var _0x3a4cc3=typeof _0x1d1b15[_0x5f67('0x17')]===_0x5f67('0x18')&&typeof _0x1d1b15[_0x5f67('0x19')]===_0x5f67('0x18');var _0x223295=_0x2ea6ad[_0x5f67('0x1a')];var _0x8f3bd6=_0x3a4cc3?0x0:_0x1d1b15['offset'];var _0x5bc956=_0x3a4cc3?_0x2ea6ad[_0x5f67('0x1a')]:_0x1d1b15[_0x5f67('0x17')]+_0x1d1b15['limit'];var _0x3a867b;if(_0x5bc956>=_0x223295){_0x5bc956=_0x223295;_0x3a867b=0xc8;}else{_0x3a867b=0xce;}_0x50a146[_0x5f67('0x15')](_0x3a867b);return _0x50a146[_0x5f67('0x1b')](_0x5f67('0x1c'),_0x8f3bd6+'-'+_0x5bc956+'/'+_0x223295)[_0x5f67('0x16')](_0x2ea6ad);}return null;};}function patchUpdates(_0x3d487b){return function(_0x145218){try{jsonpatch[_0x5f67('0x1d')](_0x145218,_0x3d487b,!![]);}catch(_0xf3f894){return BPromise[_0x5f67('0x1e')](_0xf3f894);}return _0x145218[_0x5f67('0x1f')]();};}function saveUpdates(_0x8d876e,_0x531f2e){return function(_0x31980e){if(_0x31980e){return _0x31980e[_0x5f67('0x20')](_0x8d876e)[_0x5f67('0x21')](function(_0x5bb1de){return _0x5bb1de;});}return null;};}function removeEntity(_0x537b39,_0x217cf9){return function(_0x40b138){if(_0x40b138){return _0x40b138['destroy']()[_0x5f67('0x21')](function(){_0x537b39[_0x5f67('0x15')](0xcc)[_0x5f67('0x22')]();});}};}function handleEntityNotFound(_0x2dc788,_0x4b24de){return function(_0x41cfc3){if(!_0x41cfc3){_0x2dc788['sendStatus'](0x194);}return _0x41cfc3;};}function handleError(_0x31b02e,_0x167601){_0x167601=_0x167601||0x1f4;return function(_0x5af40c){logger[_0x5f67('0x23')](_0x5af40c[_0x5f67('0x24')]);if(_0x5af40c['name']){delete _0x5af40c['name'];}_0x31b02e[_0x5f67('0x15')](_0x167601)[_0x5f67('0x25')](_0x5af40c);};}exports[_0x5f67('0x26')]=function(_0x5dd8d7,_0x3491b0){var _0xd36b79={},_0x4a10b5={},_0x172b47={'count':0x0,'rows':[]};var _0x11da91=_['map'](db[_0x5f67('0x27')]['rawAttributes'],function(_0x30d3fd){return{'name':_0x30d3fd[_0x5f67('0x28')],'type':_0x30d3fd[_0x5f67('0x29')]['key']};});_0x4a10b5['model']=_['map'](_0x11da91,_0x5f67('0x2a'));_0x4a10b5['query']=_[_0x5f67('0x2b')](_0x5dd8d7[_0x5f67('0x2c')]);_0x4a10b5[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4a10b5['model'],_0x4a10b5['query']);_0xd36b79[_0x5f67('0x2f')]=_[_0x5f67('0x2e')](_0x4a10b5[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x31')]));_0xd36b79['attributes']=_0xd36b79[_0x5f67('0x2f')][_0x5f67('0x32')]?_0xd36b79[_0x5f67('0x2f')]:_0x4a10b5[_0x5f67('0x30')];if(!_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x33')]('nolimit')){_0xd36b79[_0x5f67('0x19')]=qs[_0x5f67('0x19')](_0x5dd8d7['query'][_0x5f67('0x19')]);_0xd36b79[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x17')]);}_0xd36b79[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x35')]);_0xd36b79[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x5dd8d7[_0x5f67('0x2c')],_0x4a10b5[_0x5f67('0x2d')]),_0x11da91);if(_0x5dd8d7[_0x5f67('0x2c')]['filter']){_0xd36b79[_0x5f67('0x36')]=_[_0x5f67('0x37')](_0xd36b79[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x11da91,function(_0x3fed78){if(_0x3fed78[_0x5f67('0x29')]!==_0x5f67('0x39')){var _0x44a43b={};_0x44a43b[_0x3fed78[_0x5f67('0x2a')]]={'$like':'%'+_0x5dd8d7['query'][_0x5f67('0x3a')]+'%'};return _0x44a43b;}})});}_0xd36b79=_['merge']({},_0xd36b79,_0x5dd8d7['options']);var _0x794915={'where':_0xd36b79[_0x5f67('0x36')]};return db[_0x5f67('0x27')][_0x5f67('0x1a')](_0x794915)[_0x5f67('0x21')](function(_0x47a84b){_0x172b47['count']=_0x47a84b;if(_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0xd36b79[_0x5f67('0x3c')]=[{'all':!![]}];}return db[_0x5f67('0x27')][_0x5f67('0x3d')](_0xd36b79);})['then'](function(_0x3da68d){_0x172b47['rows']=_0x3da68d;return _0x172b47;})[_0x5f67('0x21')](respondWithFilteredResult(_0x3491b0,_0xd36b79))[_0x5f67('0x3e')](handleError(_0x3491b0,null));};exports[_0x5f67('0x3f')]=function(_0x3a6405,_0x212cc1){var _0x4d8f32={'raw':![],'where':{'id':_0x3a6405['params']['id']}},_0x4baf80={};_0x4baf80[_0x5f67('0x30')]=_['keys'](db['Dynamics365Account'][_0x5f67('0x40')]);_0x4baf80[_0x5f67('0x2c')]=_[_0x5f67('0x2b')](_0x3a6405[_0x5f67('0x2c')]);_0x4baf80[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],_0x4baf80[_0x5f67('0x2c')]);_0x4d8f32['attributes']=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],qs['fields'](_0x3a6405[_0x5f67('0x2c')]['fields']));_0x4d8f32[_0x5f67('0x2f')]=_0x4d8f32['attributes'][_0x5f67('0x32')]?_0x4d8f32['attributes']:_0x4baf80[_0x5f67('0x30')];if(_0x3a6405[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0x4d8f32['include']=[{'all':!![]}];}_0x4d8f32=_[_0x5f67('0x37')]({},_0x4d8f32,_0x3a6405[_0x5f67('0x41')]);return db['Dynamics365Account']['find'](_0x4d8f32)[_0x5f67('0x21')](handleEntityNotFound(_0x212cc1,null))[_0x5f67('0x21')](respondWithResult(_0x212cc1,null))[_0x5f67('0x3e')](handleError(_0x212cc1,null));};exports[_0x5f67('0x42')]=function(_0xb58550,_0x3f361b){return db[_0x5f67('0x27')][_0x5f67('0x42')](_0xb58550['body'],{})['then'](respondWithResult(_0x3f361b,0xc9))[_0x5f67('0x3e')](handleError(_0x3f361b,null));};exports[_0x5f67('0x20')]=function(_0x3f3bf9,_0x11d2db){if(_0x3f3bf9[_0x5f67('0x43')]['id']){delete _0x3f3bf9[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x3f3bf9[_0x5f67('0x45')]['id']}})['then'](handleEntityNotFound(_0x11d2db,null))[_0x5f67('0x21')](saveUpdates(_0x3f3bf9[_0x5f67('0x43')],null))[_0x5f67('0x21')](respondWithResult(_0x11d2db,null))['catch'](handleError(_0x11d2db,null));};exports[_0x5f67('0x46')]=function(_0x29832a,_0x371bb8){return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x29832a[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x371bb8,null))['then'](removeEntity(_0x371bb8,null))[_0x5f67('0x3e')](handleError(_0x371bb8,null));};exports['getConfigurations']=function(_0x38d730,_0x43e6b0,_0x3d5cbe){var _0x4a9784={};var _0x1d6f6b={};var _0xaa01c1;var _0x3547be;return db[_0x5f67('0x27')][_0x5f67('0x47')]({'where':{'id':_0x38d730['params']['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x43e6b0,null))['then'](function(_0x344dc2){if(_0x344dc2){_0xaa01c1=_0x344dc2;_0x1d6f6b[_0x5f67('0x30')]=_[_0x5f67('0x2b')](db['Dynamics365Configuration'][_0x5f67('0x40')]);_0x1d6f6b[_0x5f67('0x2c')]=_['keys'](_0x38d730[_0x5f67('0x2c')]);_0x1d6f6b[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x1d6f6b['model'],_0x1d6f6b['query']);_0x4a9784['attributes']=_[_0x5f67('0x2e')](_0x1d6f6b[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x38d730['query'][_0x5f67('0x31')]));_0x4a9784[_0x5f67('0x2f')]=_0x4a9784[_0x5f67('0x2f')][_0x5f67('0x32')]?_0x4a9784[_0x5f67('0x2f')]:_0x1d6f6b[_0x5f67('0x30')];_0x4a9784[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x38d730[_0x5f67('0x2c')]['sort']);_0x4a9784[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x38d730[_0x5f67('0x2c')],_0x1d6f6b[_0x5f67('0x2d')]));if(_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]){_0x4a9784['where']=_[_0x5f67('0x37')](_0x4a9784[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x4a9784[_0x5f67('0x2f')],function(_0x545ef5){var _0x3fa9c0={};_0x3fa9c0[_0x545ef5]={'$like':'%'+_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]+'%'};return _0x3fa9c0;})});}_0x4a9784=_[_0x5f67('0x37')]({},_0x4a9784,_0x38d730['options']);return _0xaa01c1['getConfigurations'](_0x4a9784);}})[_0x5f67('0x21')](function(_0xb1e12c){if(_0xb1e12c){_0x3547be=_0xb1e12c[_0x5f67('0x32')];if(!_0x38d730['query'][_0x5f67('0x33')](_0x5f67('0x48'))){_0x4a9784[_0x5f67('0x19')]=qs['limit'](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x19')]);_0x4a9784[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x17')]);}return _0xaa01c1[_0x5f67('0x49')](_0x4a9784);}})[_0x5f67('0x21')](function(_0x43de23){if(_0x43de23){return _0x43de23?{'count':_0x3547be,'rows':_0x43de23}:null;}})[_0x5f67('0x21')](respondWithResult(_0x43e6b0,null))['catch'](handleError(_0x43e6b0,null));};exports['addConfiguration']=function(_0x2e0e52,_0x39b262,_0x58ee8c){if(_0x2e0e52['body']['id']){delete _0x2e0e52[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')]['findOne']({'where':{'id':_0x2e0e52[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x39b262,null))[_0x5f67('0x21')](function(_0x5ed197){if(_0x5ed197){_0x2e0e52['body'][_0x5f67('0x4a')]=_0x5ed197['id'];_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4b')]=integrations[_0x5f67('0x4c')](_0x2e0e52['body']['channel'],_0x2e0e52['body'][_0x5f67('0x29')]);_0x2e0e52['body'][_0x5f67('0x4d')]=integrations['getDescriptions'](_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4e')],_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x29')]);return db[_0x5f67('0x4f')][_0x5f67('0x42')](_0x2e0e52[_0x5f67('0x43')],{'include':[{'model':db['Dynamics365Field'],'as':_0x5f67('0x4b')},{'model':db['Dynamics365Field'],'as':_0x5f67('0x4d')}]});}return null;})[_0x5f67('0x21')](respondWithResult(_0x39b262,null))[_0x5f67('0x3e')](handleError(_0x39b262,null));};exports[_0x5f67('0x50')]=function(_0x2baff6,_0x21e3be,_0xf20c36){var _0x10277c=_0x2baff6['query'][_0x5f67('0x51')];var _0x520762=_0x10277c===_0x5f67('0x52')?'Incident':_0x5f67('0x53');var _0xc8010e='';var _0x41293b='';var _0x588dc5='';var _0x520fb1='';var _0x1dbba7='';var _0x20fce1='';var _0x5a4f9b='';var _0x244fb9='';var _0x136a18=['title','description',_0x5f67('0x54'),_0x5f67('0x55'),_0x5f67('0x56'),'subject',_0x5f67('0x57'),_0x5f67('0x58'),'directioncode',_0x5f67('0x59')];var _0x393558=[_0x5f67('0x5a'),'accountidyominame',_0x5f67('0x5b'),_0x5f67('0x5c'),_0x5f67('0x5d'),_0x5f67('0x5e'),_0x5f67('0x5f'),'contractidname',_0x5f67('0x60'),_0x5f67('0x61'),_0x5f67('0x62'),_0x5f67('0x63'),_0x5f67('0x64'),'createdonbehalfbyname',_0x5f67('0x65'),_0x5f67('0x66'),'customeridtype','customeridyominame','emailaddress',_0x5f67('0x67'),_0x5f67('0x68'),_0x5f67('0x69'),_0x5f67('0x6a'),_0x5f67('0x6b'),'firstresponsebykpiidname','followupby',_0x5f67('0x6c'),_0x5f67('0x6d'),_0x5f67('0x6e'),'lastonholdtime',_0x5f67('0x6f'),_0x5f67('0x70'),_0x5f67('0x71'),_0x5f67('0x72'),_0x5f67('0x73'),_0x5f67('0x74'),'modifiedonbehalfbyname',_0x5f67('0x75'),'msdyn_incidenttypename',_0x5f67('0x76'),_0x5f67('0x77'),'onholdtime','overriddencreatedon',_0x5f67('0x78'),'owneridtype','owneridyominame','parentcaseidname','primarycontactidname',_0x5f67('0x79'),'prioritycodename','productidname','productserialnumber','resolveby',_0x5f67('0x7a'),_0x5f67('0x7b'),'responsiblecontactidname',_0x5f67('0x7c'),'sentimentvalue',_0x5f67('0x7d'),_0x5f67('0x7e'),_0x5f67('0x7f'),_0x5f67('0x80'),_0x5f67('0x81'),_0x5f67('0x82'),'ticketnumber','timezoneruleversionnumber',_0x5f67('0x83'),_0x5f67('0x84'),_0x5f67('0x85'),_0x5f67('0x86')];var _0x5a6a5b=_0x136a18['concat'](_0x393558);return db['Dynamics365Account']['findOne']({'where':{'id':_0x2baff6[_0x5f67('0x45')]['id']},'attributes':['id','username','password',_0x5f67('0x87'),'tenantId',_0x5f67('0x88'),'clientSecret']})[_0x5f67('0x21')](handleEntityNotFound(_0x21e3be,null))['then'](function(_0x1005fa){if(_0x1005fa){_0x244fb9=_0x1005fa['remoteUri'];var _0x5202cb=_0x244fb9[_0x5f67('0x89')](-0x1);if(_0x5202cb==='/'){_0x244fb9=_0x244fb9[_0x5f67('0x8a')](0x0,_0x244fb9['lastIndexOf'](_0x5202cb));}_0x5a4f9b=util['format'](_0x5f67('0x8b'),_0x244fb9);var _0x40c39e={'method':_0x5f67('0x8c'),'uri':_0x5f67('0x8d')+_0x1005fa[_0x5f67('0x8e')]+_0x5f67('0x8f'),'form':{'client_id':_0x1005fa[_0x5f67('0x88')],'resource':_0x244fb9,'username':_0x1005fa[_0x5f67('0x90')],'password':_0x1005fa[_0x5f67('0x91')],'grant_type':_0x5f67('0x91'),'client_secret':_0x1005fa['clientSecret']},'json':!![]};return rp(_0x40c39e);}})[_0x5f67('0x21')](function(_0x5f67f3){_0x20fce1=_0x5f67f3[_0x5f67('0x92')];var _0x3c843e={'method':'GET','uri':encodeURI(_0x5a4f9b+_0x5f67('0x93')+_0x520762+'\x27'),'headers':{'Authorization':_0x5f67('0x94')+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3c843e);})[_0x5f67('0x21')](function(_0x395c97){var _0x1e0df7=_0x395c97['value'][0x0];var _0x30d4c7=_0x1e0df7[_0x5f67('0x96')];var _0x3fd1f4={'method':_0x5f67('0x97'),'uri':_0x5a4f9b+_0x5f67('0x98')+_0x30d4c7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':'Bearer\x20'+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3fd1f4);})[_0x5f67('0x21')](function(_0x1730a7){_0xc8010e=_0x1730a7;_0x41293b=_0xc8010e['Attributes'];_0x41293b=_[_0x5f67('0x99')](_0x41293b,function(_0x77c146){return!_0x5a6a5b[_0x5f67('0x9a')](_0x77c146[_0x5f67('0x9b')]);});var _0x22cf65=[];var _0x24df53=[];_0x41293b[_0x5f67('0x9c')](function(_0x2e3d41){if(_0x2e3d41['@odata.type']){var _0x565e75=_0x2e3d41[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x2e3d41['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0x565e75===_0x5f67('0x9f')){_0x22cf65[_0x5f67('0xa0')](getSelectList(_0x5a4f9b,_0x10277c,_0x24df53,_0xc8010e['MetadataId'],_0x2e3d41[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x22cf65);})[_0x5f67('0x21')](function(_0x549bb8){_0x588dc5=_0x549bb8[0x0];var _0x4471df=[];var _0x5ab2e1=[];_0x41293b[_0x5f67('0x9c')](function(_0x25ad1f){if(!_[_0x5f67('0xa2')](_0x25ad1f[_0x5f67('0x9d')])){var _0xff33a5=_0x25ad1f[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x25ad1f['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0xff33a5==='BooleanAttributeMetadata'){_0x4471df['push'](getBooleanList(_0x5a4f9b,_0x10277c,_0x5ab2e1,_0xc8010e[_0x5f67('0x96')],_0x25ad1f[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x4471df);})[_0x5f67('0x21')](function(_0x55df2a){_0x520fb1=_0x55df2a[0x0];var _0x112186=[];var _0x32272c=[];_0x41293b[_0x5f67('0x9c')](function(_0x259090){if(_0x259090[_0x5f67('0x9d')]){var _0x5cdc1d=_0x259090[_0x5f67('0x9d')]['substring'](_0x259090[_0x5f67('0x9d')][_0x5f67('0x9e')]('.')+0x1);if(_0x5cdc1d===_0x5f67('0xa3')||_0x5cdc1d==='DoubleAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa4')||_0x5cdc1d===_0x5f67('0xa5')||_0x5cdc1d==='MemoAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa6')||_0x5cdc1d==='StatusAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa7')||_0x5cdc1d===_0x5f67('0xa8')||_0x5cdc1d===_0x5f67('0xa9')){_0x112186[_0x5f67('0xa0')](getInputList(_0x5a4f9b,_0x10277c,_0x5cdc1d,_0x32272c,_0xc8010e[_0x5f67('0x96')],_0x259090[_0x5f67('0x96')],_0x20fce1));}}});return Promise['all'](_0x112186);})['then'](function(_0x3f377e){_0x1dbba7=_0x3f377e[0x0];var _0x3b74b0=_0x588dc5[_0x5f67('0xaa')](_0x520fb1)[_0x5f67('0xaa')](_0x1dbba7);var _0x588f57={'count':_0x3b74b0[_0x5f67('0x32')],'rows':_0x3b74b0};return _0x588f57;})[_0x5f67('0x21')](respondWithResult(_0x21e3be,null))['catch'](function(_0x213587){var _0x3362ba=_0x2baff6[_0x5f67('0x2c')][_0x5f67('0xab')]?0x1f4:_0x213587[_0x5f67('0xac')]||0x1f4;logger[_0x5f67('0x23')](_0x213587[_0x5f67('0x24')]);delete _0x213587[_0x5f67('0x2a')];if(_0x3362ba===0x191){_0x3362ba=0x190;}_0x21e3be[_0x5f67('0x15')](_0x3362ba)[_0x5f67('0x25')](_0x2baff6['query'][_0x5f67('0xab')]?{'message':_0x5f67('0xad'),'statusCode':_0x213587[_0x5f67('0xac')]}:_0x213587);});};function getSelectList(_0x468238,_0x2638c9,_0x2c0a9e,_0x14981d,_0x2f80e0,_0x4bf10c){var _0x18f4fb={'method':'GET','uri':_0x468238+_0x5f67('0x98')+_0x14981d+_0x5f67('0xae')+_0x2f80e0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x5f67('0xaf'),'headers':{'Authorization':_0x5f67('0x94')+_0x4bf10c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x18f4fb)['then'](function(_0x8839eb){var _0x20976b=[];var _0x17e554=_0x8839eb[_0x5f67('0xb0')][_0x5f67('0xb1')];_0x17e554[_0x5f67('0x9c')](function(_0x4dab12){_0x20976b[_0x5f67('0xa0')]({'name':_0x4dab12[_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':String(_0x4dab12['Value'])});});var _0x44a972={'id':_0x2638c9+'_'+_0x8839eb['LogicalName'],'name':_0x8839eb[_0x5f67('0xb4')][_0x5f67('0xb3')]['Label'],'custom':![],'options':_0x20976b};_0x2c0a9e[_0x5f67('0xa0')](_0x44a972);return _0x2c0a9e;});}function getBooleanList(_0x112129,_0x33c0bd,_0xf1f5b4,_0x580a30,_0x1e2165,_0x4df798){var _0x1e1b14={'method':_0x5f67('0x97'),'uri':_0x112129+_0x5f67('0x98')+_0x580a30+_0x5f67('0xae')+_0x1e2165+_0x5f67('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x4df798,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x1e1b14)[_0x5f67('0x21')](function(_0x2e09a9){var _0x272d12=[];_0x272d12[_0x5f67('0xa0')]({'name':_0x2e09a9[_0x5f67('0xb0')]['TrueOption'][_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':_0x5f67('0xb6')},{'name':_0x2e09a9[_0x5f67('0xb0')][_0x5f67('0xb7')][_0x5f67('0xb2')]['UserLocalizedLabel'][_0x5f67('0xb2')],'value':'false'});var _0x532202={'id':_0x33c0bd+'_'+_0x2e09a9[_0x5f67('0x9b')],'name':_0x2e09a9[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')],'custom':![],'options':_0x272d12};_0xf1f5b4[_0x5f67('0xa0')](_0x532202);return _0xf1f5b4;});}function getInputList(_0x556718,_0x3dcb35,_0xeb1ec1,_0x5d3054,_0x517f93,_0x1e7ffe,_0xd59c96){var _0x32294c={'method':'GET','uri':_0x556718+_0x5f67('0x98')+_0x517f93+_0x5f67('0xae')+_0x1e7ffe+_0x5f67('0xb8')+_0xeb1ec1+_0x5f67('0xb9'),'headers':{'Authorization':'Bearer\x20'+_0xd59c96,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x32294c)[_0x5f67('0x21')](function(_0x5515be){var _0x1e749e={'id':_0x3dcb35+'_'+_0x5515be[_0x5f67('0x9b')],'name':_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')]?_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')]:_0x5515be[_0x5f67('0x9b')],'custom':![],'options':[]};_0x5d3054[_0x5f67('0xa0')](_0x1e749e);return _0x5d3054;});}
\ No newline at end of file
+var _0x9f62=['findAll','show','params','includeAll','find','catch','create','body','update','getConfigurations','Dynamics365Configuration','merge','nolimit','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','entitlementidname','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','parentcaseidname','primarycontactidname','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','POST','/oauth2/token','username','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','LogicalName','forEach','@odata.type','all','isNil','BooleanAttributeMetadata','push','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','DecimalAttributeMetadata','statusCode','stack','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','4.0','OptionSet','Options','Label','Value','DisplayName','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','include'];(function(_0x214a26,_0x24ff3b){var _0x1965db=function(_0x5a19eb){while(--_0x5a19eb){_0x214a26['push'](_0x214a26['shift']());}};_0x1965db(++_0x24ff3b);}(_0x9f62,0x154));var _0x29f6=function(_0x1e3343,_0x54a5ca){_0x1e3343=_0x1e3343-0x0;var _0x4df590=_0x9f62[_0x1e3343];return _0x4df590;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x29f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29f6('0x1'));var rp=require(_0x29f6('0x2'));var moment=require(_0x29f6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29f6('0x4'));var path=require(_0x29f6('0x5'));var sox=require(_0x29f6('0x6'));var csv=require(_0x29f6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29f6('0x8'));var _=require(_0x29f6('0x9'));var squel=require(_0x29f6('0xa'));var crypto=require(_0x29f6('0xb'));var jsforce=require(_0x29f6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x29f6('0xd'));var authService=require(_0x29f6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29f6('0xf'));var logger=require(_0x29f6('0x10'))('api');var utils=require(_0x29f6('0x11'));var config=require(_0x29f6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x57b2d2,_0x2ae0e4){_0x2ae0e4=_0x2ae0e4||0xcc;return function(_0x55cf4){if(_0x55cf4){return _0x57b2d2[_0x29f6('0x13')](_0x2ae0e4);}return _0x57b2d2[_0x29f6('0x14')](_0x2ae0e4)[_0x29f6('0x15')]();};}function respondWithResult(_0x156c96,_0x35d2e2){_0x35d2e2=_0x35d2e2||0xc8;return function(_0x2418ee){if(_0x2418ee){return _0x156c96[_0x29f6('0x14')](_0x35d2e2)[_0x29f6('0x16')](_0x2418ee);}};}function respondWithFilteredResult(_0x28d314,_0x370484){return function(_0x1dde97){if(_0x1dde97){var _0x3a75d0=typeof _0x370484[_0x29f6('0x17')]===_0x29f6('0x18')&&typeof _0x370484[_0x29f6('0x19')]==='undefined';var _0x51c92f=_0x1dde97[_0x29f6('0x1a')];var _0x3af478=_0x3a75d0?0x0:_0x370484[_0x29f6('0x17')];var _0x5c8246=_0x3a75d0?_0x1dde97[_0x29f6('0x1a')]:_0x370484[_0x29f6('0x17')]+_0x370484['limit'];var _0x159227;if(_0x5c8246>=_0x51c92f){_0x5c8246=_0x51c92f;_0x159227=0xc8;}else{_0x159227=0xce;}_0x28d314[_0x29f6('0x14')](_0x159227);return _0x28d314[_0x29f6('0x1b')](_0x29f6('0x1c'),_0x3af478+'-'+_0x5c8246+'/'+_0x51c92f)[_0x29f6('0x16')](_0x1dde97);}return null;};}function patchUpdates(_0x2bfb3d){return function(_0x5673c8){try{jsonpatch[_0x29f6('0x1d')](_0x5673c8,_0x2bfb3d,!![]);}catch(_0x59def4){return BPromise['reject'](_0x59def4);}return _0x5673c8[_0x29f6('0x1e')]();};}function saveUpdates(_0x1fa159,_0x39c6b3){return function(_0xafb5dd){if(_0xafb5dd){return _0xafb5dd['update'](_0x1fa159)[_0x29f6('0x1f')](function(_0x49f67d){return _0x49f67d;});}return null;};}function removeEntity(_0xd4179c,_0xcce041){return function(_0x4200cc){if(_0x4200cc){return _0x4200cc[_0x29f6('0x20')]()['then'](function(){_0xd4179c[_0x29f6('0x14')](0xcc)[_0x29f6('0x15')]();});}};}function handleEntityNotFound(_0x47c385,_0x1401fb){return function(_0x45f792){if(!_0x45f792){_0x47c385[_0x29f6('0x13')](0x194);}return _0x45f792;};}function handleError(_0x342038,_0x84ccb7){_0x84ccb7=_0x84ccb7||0x1f4;return function(_0x4333bc){logger[_0x29f6('0x21')](_0x4333bc['stack']);if(_0x4333bc[_0x29f6('0x22')]){delete _0x4333bc[_0x29f6('0x22')];}_0x342038[_0x29f6('0x14')](_0x84ccb7)[_0x29f6('0x23')](_0x4333bc);};}exports[_0x29f6('0x24')]=function(_0x16a6ad,_0x3790f5){var _0x17b2f2={},_0x3d88db={},_0x13a3a2={'count':0x0,'rows':[]};var _0x2915bc=_[_0x29f6('0x25')](db[_0x29f6('0x26')][_0x29f6('0x27')],function(_0x375564){return{'name':_0x375564[_0x29f6('0x28')],'type':_0x375564[_0x29f6('0x29')]['key']};});_0x3d88db['model']=_[_0x29f6('0x25')](_0x2915bc,'name');_0x3d88db[_0x29f6('0x2a')]=_[_0x29f6('0x2b')](_0x16a6ad[_0x29f6('0x2a')]);_0x3d88db[_0x29f6('0x2c')]=_['intersection'](_0x3d88db['model'],_0x3d88db[_0x29f6('0x2a')]);_0x17b2f2[_0x29f6('0x2d')]=_[_0x29f6('0x2e')](_0x3d88db[_0x29f6('0x2f')],qs[_0x29f6('0x30')](_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x30')]));_0x17b2f2[_0x29f6('0x2d')]=_0x17b2f2[_0x29f6('0x2d')][_0x29f6('0x31')]?_0x17b2f2[_0x29f6('0x2d')]:_0x3d88db[_0x29f6('0x2f')];if(!_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x32')]('nolimit')){_0x17b2f2['limit']=qs[_0x29f6('0x19')](_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x19')]);_0x17b2f2['offset']=qs[_0x29f6('0x17')](_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x17')]);}_0x17b2f2[_0x29f6('0x33')]=qs[_0x29f6('0x34')](_0x16a6ad['query'][_0x29f6('0x34')]);_0x17b2f2[_0x29f6('0x35')]=qs[_0x29f6('0x2c')](_[_0x29f6('0x36')](_0x16a6ad['query'],_0x3d88db[_0x29f6('0x2c')]),_0x2915bc);if(_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x37')]){_0x17b2f2[_0x29f6('0x35')]=_['merge'](_0x17b2f2['where'],{'$or':_[_0x29f6('0x25')](_0x2915bc,function(_0x4bfc80){if(_0x4bfc80[_0x29f6('0x29')]!=='VIRTUAL'){var _0x3a1a75={};_0x3a1a75[_0x4bfc80['name']]={'$like':'%'+_0x16a6ad[_0x29f6('0x2a')][_0x29f6('0x37')]+'%'};return _0x3a1a75;}})});}_0x17b2f2=_['merge']({},_0x17b2f2,_0x16a6ad[_0x29f6('0x38')]);var _0x5d2553={'where':_0x17b2f2[_0x29f6('0x35')]};return db[_0x29f6('0x26')]['count'](_0x5d2553)[_0x29f6('0x1f')](function(_0xc6a6b1){_0x13a3a2[_0x29f6('0x1a')]=_0xc6a6b1;if(_0x16a6ad[_0x29f6('0x2a')]['includeAll']){_0x17b2f2[_0x29f6('0x39')]=[{'all':!![]}];}return db[_0x29f6('0x26')][_0x29f6('0x3a')](_0x17b2f2);})[_0x29f6('0x1f')](function(_0x1dbd17){_0x13a3a2['rows']=_0x1dbd17;return _0x13a3a2;})[_0x29f6('0x1f')](respondWithFilteredResult(_0x3790f5,_0x17b2f2))['catch'](handleError(_0x3790f5,null));};exports[_0x29f6('0x3b')]=function(_0x552257,_0xbfe671){var _0x3a8a12={'raw':![],'where':{'id':_0x552257[_0x29f6('0x3c')]['id']}},_0x4b1524={};_0x4b1524[_0x29f6('0x2f')]=_[_0x29f6('0x2b')](db[_0x29f6('0x26')]['rawAttributes']);_0x4b1524[_0x29f6('0x2a')]=_[_0x29f6('0x2b')](_0x552257[_0x29f6('0x2a')]);_0x4b1524['filters']=_[_0x29f6('0x2e')](_0x4b1524['model'],_0x4b1524[_0x29f6('0x2a')]);_0x3a8a12['attributes']=_['intersection'](_0x4b1524['model'],qs[_0x29f6('0x30')](_0x552257[_0x29f6('0x2a')][_0x29f6('0x30')]));_0x3a8a12[_0x29f6('0x2d')]=_0x3a8a12[_0x29f6('0x2d')][_0x29f6('0x31')]?_0x3a8a12[_0x29f6('0x2d')]:_0x4b1524[_0x29f6('0x2f')];if(_0x552257[_0x29f6('0x2a')][_0x29f6('0x3d')]){_0x3a8a12['include']=[{'all':!![]}];}_0x3a8a12=_['merge']({},_0x3a8a12,_0x552257[_0x29f6('0x38')]);return db[_0x29f6('0x26')][_0x29f6('0x3e')](_0x3a8a12)[_0x29f6('0x1f')](handleEntityNotFound(_0xbfe671,null))['then'](respondWithResult(_0xbfe671,null))[_0x29f6('0x3f')](handleError(_0xbfe671,null));};exports[_0x29f6('0x40')]=function(_0x532df5,_0x21f023){return db[_0x29f6('0x26')][_0x29f6('0x40')](_0x532df5[_0x29f6('0x41')],{})[_0x29f6('0x1f')](respondWithResult(_0x21f023,0xc9))[_0x29f6('0x3f')](handleError(_0x21f023,null));};exports[_0x29f6('0x42')]=function(_0x1f03b6,_0x2ca712){if(_0x1f03b6[_0x29f6('0x41')]['id']){delete _0x1f03b6[_0x29f6('0x41')]['id'];}return db[_0x29f6('0x26')]['find']({'where':{'id':_0x1f03b6[_0x29f6('0x3c')]['id']}})[_0x29f6('0x1f')](handleEntityNotFound(_0x2ca712,null))[_0x29f6('0x1f')](saveUpdates(_0x1f03b6[_0x29f6('0x41')],null))[_0x29f6('0x1f')](respondWithResult(_0x2ca712,null))['catch'](handleError(_0x2ca712,null));};exports[_0x29f6('0x20')]=function(_0x52be22,_0x546c91){return db[_0x29f6('0x26')][_0x29f6('0x3e')]({'where':{'id':_0x52be22[_0x29f6('0x3c')]['id']}})[_0x29f6('0x1f')](handleEntityNotFound(_0x546c91,null))[_0x29f6('0x1f')](removeEntity(_0x546c91,null))['catch'](handleError(_0x546c91,null));};exports[_0x29f6('0x43')]=function(_0x458ada,_0x5f42f3,_0x3bf079){var _0x513515={};var _0x288cf2={};var _0x241fb0;var _0x27601d;return db[_0x29f6('0x26')]['findOne']({'where':{'id':_0x458ada[_0x29f6('0x3c')]['id']}})[_0x29f6('0x1f')](handleEntityNotFound(_0x5f42f3,null))[_0x29f6('0x1f')](function(_0x217428){if(_0x217428){_0x241fb0=_0x217428;_0x288cf2[_0x29f6('0x2f')]=_[_0x29f6('0x2b')](db[_0x29f6('0x44')]['rawAttributes']);_0x288cf2[_0x29f6('0x2a')]=_[_0x29f6('0x2b')](_0x458ada[_0x29f6('0x2a')]);_0x288cf2[_0x29f6('0x2c')]=_[_0x29f6('0x2e')](_0x288cf2[_0x29f6('0x2f')],_0x288cf2[_0x29f6('0x2a')]);_0x513515[_0x29f6('0x2d')]=_[_0x29f6('0x2e')](_0x288cf2[_0x29f6('0x2f')],qs['fields'](_0x458ada['query'][_0x29f6('0x30')]));_0x513515[_0x29f6('0x2d')]=_0x513515[_0x29f6('0x2d')]['length']?_0x513515[_0x29f6('0x2d')]:_0x288cf2['model'];_0x513515['order']=qs[_0x29f6('0x34')](_0x458ada[_0x29f6('0x2a')]['sort']);_0x513515['where']=qs[_0x29f6('0x2c')](_[_0x29f6('0x36')](_0x458ada[_0x29f6('0x2a')],_0x288cf2['filters']));if(_0x458ada[_0x29f6('0x2a')][_0x29f6('0x37')]){_0x513515[_0x29f6('0x35')]=_[_0x29f6('0x45')](_0x513515[_0x29f6('0x35')],{'$or':_[_0x29f6('0x25')](_0x513515[_0x29f6('0x2d')],function(_0x33b1d7){var _0x2fb6f8={};_0x2fb6f8[_0x33b1d7]={'$like':'%'+_0x458ada[_0x29f6('0x2a')][_0x29f6('0x37')]+'%'};return _0x2fb6f8;})});}_0x513515=_[_0x29f6('0x45')]({},_0x513515,_0x458ada[_0x29f6('0x38')]);return _0x241fb0['getConfigurations'](_0x513515);}})['then'](function(_0x2bd7d9){if(_0x2bd7d9){_0x27601d=_0x2bd7d9['length'];if(!_0x458ada[_0x29f6('0x2a')][_0x29f6('0x32')](_0x29f6('0x46'))){_0x513515[_0x29f6('0x19')]=qs[_0x29f6('0x19')](_0x458ada['query'][_0x29f6('0x19')]);_0x513515[_0x29f6('0x17')]=qs[_0x29f6('0x17')](_0x458ada[_0x29f6('0x2a')][_0x29f6('0x17')]);}return _0x241fb0['getConfigurations'](_0x513515);}})[_0x29f6('0x1f')](function(_0x5accac){if(_0x5accac){return _0x5accac?{'count':_0x27601d,'rows':_0x5accac}:null;}})['then'](respondWithResult(_0x5f42f3,null))[_0x29f6('0x3f')](handleError(_0x5f42f3,null));};exports[_0x29f6('0x47')]=function(_0x5526b6,_0x3df82a,_0xff3886){if(_0x5526b6['body']['id']){delete _0x5526b6[_0x29f6('0x41')]['id'];}return db[_0x29f6('0x26')][_0x29f6('0x48')]({'where':{'id':_0x5526b6[_0x29f6('0x3c')]['id']}})[_0x29f6('0x1f')](handleEntityNotFound(_0x3df82a,null))[_0x29f6('0x1f')](function(_0x31903f){if(_0x31903f){_0x5526b6['body'][_0x29f6('0x49')]=_0x31903f['id'];_0x5526b6['body'][_0x29f6('0x4a')]=integrations['getSubjects'](_0x5526b6['body'][_0x29f6('0x4b')],_0x5526b6[_0x29f6('0x41')][_0x29f6('0x29')]);_0x5526b6['body'][_0x29f6('0x4c')]=integrations[_0x29f6('0x4d')](_0x5526b6[_0x29f6('0x41')]['channel'],_0x5526b6[_0x29f6('0x41')][_0x29f6('0x29')]);return db[_0x29f6('0x44')][_0x29f6('0x40')](_0x5526b6[_0x29f6('0x41')],{'include':[{'model':db[_0x29f6('0x4e')],'as':_0x29f6('0x4a')},{'model':db[_0x29f6('0x4e')],'as':'Descriptions'}]});}return null;})[_0x29f6('0x1f')](respondWithResult(_0x3df82a,null))[_0x29f6('0x3f')](handleError(_0x3df82a,null));};exports[_0x29f6('0x4f')]=function(_0x456578,_0x1636f1,_0x122a1a){var _0x1b14f5=_0x456578[_0x29f6('0x2a')]['ticketType'];var _0x245a53=_0x1b14f5===_0x29f6('0x50')?'Incident':_0x29f6('0x51');var _0x5b87b4='';var _0x1b48e8='';var _0x5a383f='';var _0x5bde9f='';var _0x2c8e28='';var _0x4474f6='';var _0x5d8d05='';var _0x504fb8='';var _0x512ca5=[_0x29f6('0x52'),_0x29f6('0x53'),_0x29f6('0x54'),_0x29f6('0x55'),_0x29f6('0x56'),_0x29f6('0x57'),_0x29f6('0x58'),'regardingobjectid',_0x29f6('0x59'),_0x29f6('0x5a')];var _0x411f3e=[_0x29f6('0x5b'),'accountidyominame',_0x29f6('0x5c'),_0x29f6('0x5d'),_0x29f6('0x5e'),_0x29f6('0x5f'),_0x29f6('0x60'),'contractidname',_0x29f6('0x61'),_0x29f6('0x62'),_0x29f6('0x63'),_0x29f6('0x64'),_0x29f6('0x65'),_0x29f6('0x66'),'createdonbehalfbyyominame',_0x29f6('0x67'),'customeridtype','customeridyominame','emailaddress',_0x29f6('0x68'),'entityimage_timestamp',_0x29f6('0x69'),_0x29f6('0x6a'),_0x29f6('0x6b'),_0x29f6('0x6c'),_0x29f6('0x6d'),_0x29f6('0x6e'),_0x29f6('0x6f'),'kbarticleidname',_0x29f6('0x70'),'masteridname',_0x29f6('0x71'),_0x29f6('0x72'),_0x29f6('0x73'),_0x29f6('0x74'),_0x29f6('0x75'),_0x29f6('0x76'),_0x29f6('0x77'),_0x29f6('0x78'),_0x29f6('0x79'),_0x29f6('0x7a'),_0x29f6('0x7b'),_0x29f6('0x7c'),'owneridname','owneridtype','owneridyominame',_0x29f6('0x7d'),_0x29f6('0x7e'),'primarycontactidyominame',_0x29f6('0x7f'),'productidname',_0x29f6('0x80'),_0x29f6('0x81'),_0x29f6('0x82'),_0x29f6('0x83'),_0x29f6('0x84'),_0x29f6('0x85'),_0x29f6('0x86'),_0x29f6('0x87'),_0x29f6('0x88'),_0x29f6('0x89'),'statecode',_0x29f6('0x8a'),'subjectidname',_0x29f6('0x8b'),_0x29f6('0x8c'),_0x29f6('0x8d'),_0x29f6('0x8e'),_0x29f6('0x8f'),_0x29f6('0x90')];var _0x41d718=_0x512ca5[_0x29f6('0x91')](_0x411f3e);return db['Dynamics365Account'][_0x29f6('0x48')]({'where':{'id':_0x456578[_0x29f6('0x3c')]['id']},'attributes':['id','username','password',_0x29f6('0x92'),_0x29f6('0x93'),_0x29f6('0x94'),_0x29f6('0x95')]})[_0x29f6('0x1f')](handleEntityNotFound(_0x1636f1,null))[_0x29f6('0x1f')](function(_0xbb3661){if(_0xbb3661){_0x504fb8=_0xbb3661[_0x29f6('0x92')];var _0x7dd8b4=_0x504fb8[_0x29f6('0x96')](-0x1);if(_0x7dd8b4==='/'){_0x504fb8=_0x504fb8[_0x29f6('0x97')](0x0,_0x504fb8[_0x29f6('0x98')](_0x7dd8b4));}_0x5d8d05=util['format']('%s/api/data/v9.0/',_0x504fb8);var _0x2e2f16={'method':_0x29f6('0x99'),'uri':'https://login.microsoftonline.com/'+_0xbb3661[_0x29f6('0x93')]+_0x29f6('0x9a'),'form':{'client_id':_0xbb3661[_0x29f6('0x94')],'resource':_0x504fb8,'username':_0xbb3661[_0x29f6('0x9b')],'password':_0xbb3661[_0x29f6('0x9c')],'grant_type':_0x29f6('0x9c'),'client_secret':_0xbb3661[_0x29f6('0x95')]},'json':!![]};return rp(_0x2e2f16);}})['then'](function(_0x240792){_0x4474f6=_0x240792[_0x29f6('0x9d')];var _0x2b6d46={'method':'GET','uri':encodeURI(_0x5d8d05+_0x29f6('0x9e')+_0x245a53+'\x27'),'headers':{'Authorization':_0x29f6('0x9f')+_0x4474f6,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2b6d46);})[_0x29f6('0x1f')](function(_0x24fd9b){var _0x4c6186=_0x24fd9b[_0x29f6('0xa0')][0x0];var _0x4c7a12=_0x4c6186[_0x29f6('0xa1')];var _0x27b428={'method':_0x29f6('0xa2'),'uri':_0x5d8d05+_0x29f6('0xa3')+_0x4c7a12+_0x29f6('0xa4'),'headers':{'Authorization':_0x29f6('0x9f')+_0x4474f6,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x27b428);})['then'](function(_0x3301ed){_0x5b87b4=_0x3301ed;_0x1b48e8=_0x5b87b4[_0x29f6('0xa5')];_0x1b48e8=_['remove'](_0x1b48e8,function(_0x3025df){return!_0x41d718['includes'](_0x3025df[_0x29f6('0xa6')]);});var _0x1f28ad=[];var _0xaa5519=[];_0x1b48e8[_0x29f6('0xa7')](function(_0x13d7b7){if(_0x13d7b7[_0x29f6('0xa8')]){var _0x3454f8=_0x13d7b7['@odata.type'][_0x29f6('0x97')](_0x13d7b7[_0x29f6('0xa8')][_0x29f6('0x98')]('.')+0x1);if(_0x3454f8==='PicklistAttributeMetadata'){_0x1f28ad['push'](getSelectList(_0x5d8d05,_0x1b14f5,_0xaa5519,_0x5b87b4['MetadataId'],_0x13d7b7['MetadataId'],_0x4474f6));}}});return Promise[_0x29f6('0xa9')](_0x1f28ad);})['then'](function(_0x537a8d){_0x5a383f=_0x537a8d[0x0];var _0x4ef1d4=[];var _0x257a39=[];_0x1b48e8[_0x29f6('0xa7')](function(_0x37e2b9){if(!_[_0x29f6('0xaa')](_0x37e2b9[_0x29f6('0xa8')])){var _0x5acdcc=_0x37e2b9[_0x29f6('0xa8')]['substring'](_0x37e2b9[_0x29f6('0xa8')][_0x29f6('0x98')]('.')+0x1);if(_0x5acdcc===_0x29f6('0xab')){_0x4ef1d4[_0x29f6('0xac')](getBooleanList(_0x5d8d05,_0x1b14f5,_0x257a39,_0x5b87b4['MetadataId'],_0x37e2b9['MetadataId'],_0x4474f6));}}});return Promise[_0x29f6('0xa9')](_0x4ef1d4);})[_0x29f6('0x1f')](function(_0x41a1e2){_0x5bde9f=_0x41a1e2[0x0];var _0x49c727=[];var _0x4246c0=[];_0x1b48e8[_0x29f6('0xa7')](function(_0x4b1827){if(_0x4b1827[_0x29f6('0xa8')]){var _0x3b29ba=_0x4b1827[_0x29f6('0xa8')][_0x29f6('0x97')](_0x4b1827[_0x29f6('0xa8')][_0x29f6('0x98')]('.')+0x1);if(_0x3b29ba===_0x29f6('0xad')||_0x3b29ba===_0x29f6('0xae')||_0x3b29ba===_0x29f6('0xaf')||_0x3b29ba===_0x29f6('0xb0')||_0x3b29ba==='MemoAttributeMetadata'||_0x3b29ba===_0x29f6('0xb1')||_0x3b29ba==='StatusAttributeMetadata'||_0x3b29ba==='EntityNameAttributeMetadata'||_0x3b29ba==='StateAttributeMetadata'||_0x3b29ba===_0x29f6('0xb2')){_0x49c727[_0x29f6('0xac')](getInputList(_0x5d8d05,_0x1b14f5,_0x3b29ba,_0x4246c0,_0x5b87b4['MetadataId'],_0x4b1827['MetadataId'],_0x4474f6));}}});return Promise[_0x29f6('0xa9')](_0x49c727);})[_0x29f6('0x1f')](function(_0x588422){_0x2c8e28=_0x588422[0x0];var _0x5605dd=_0x5a383f['concat'](_0x5bde9f)['concat'](_0x2c8e28);var _0x22da5b={'count':_0x5605dd['length'],'rows':_0x5605dd};return _0x22da5b;})[_0x29f6('0x1f')](respondWithResult(_0x1636f1,null))[_0x29f6('0x3f')](function(_0x5e1ae0){var _0x58952f=_0x456578[_0x29f6('0x2a')]['test']?0x1f4:_0x5e1ae0[_0x29f6('0xb3')]||0x1f4;logger[_0x29f6('0x21')](_0x5e1ae0[_0x29f6('0xb4')]);delete _0x5e1ae0[_0x29f6('0x22')];if(_0x58952f===0x191){_0x58952f=0x190;}_0x1636f1[_0x29f6('0x14')](_0x58952f)[_0x29f6('0x23')](_0x456578[_0x29f6('0x2a')][_0x29f6('0xb5')]?{'message':_0x29f6('0xb6'),'statusCode':_0x5e1ae0[_0x29f6('0xb3')]}:_0x5e1ae0);});};function getSelectList(_0x3bcf4a,_0x111a15,_0x16dd3,_0x3c2282,_0x5076ed,_0x24757e){var _0x252bab={'method':_0x29f6('0xa2'),'uri':_0x3bcf4a+_0x29f6('0xa3')+_0x3c2282+_0x29f6('0xb7')+_0x5076ed+_0x29f6('0xb8')+_0x29f6('0xb9'),'headers':{'Authorization':'Bearer\x20'+_0x24757e,'If-None-Match':null,'OData-Version':_0x29f6('0xba')},'json':!![]};return rp(_0x252bab)['then'](function(_0x3f26ba){var _0x540c1c=[];var _0x3f9f31=_0x3f26ba[_0x29f6('0xbb')][_0x29f6('0xbc')];_0x3f9f31[_0x29f6('0xa7')](function(_0x2dc960){_0x540c1c[_0x29f6('0xac')]({'name':_0x2dc960[_0x29f6('0xbd')]['UserLocalizedLabel'][_0x29f6('0xbd')],'value':String(_0x2dc960[_0x29f6('0xbe')])});});var _0x5f043e={'id':_0x111a15+'_'+_0x3f26ba['LogicalName'],'name':_0x3f26ba[_0x29f6('0xbf')][_0x29f6('0xc0')][_0x29f6('0xbd')],'custom':![],'options':_0x540c1c};_0x16dd3[_0x29f6('0xac')](_0x5f043e);return _0x16dd3;});}function getBooleanList(_0x5df735,_0x246144,_0x2fd65b,_0x4dfb51,_0x3d8d44,_0x380327){var _0x210321={'method':_0x29f6('0xa2'),'uri':_0x5df735+_0x29f6('0xa3')+_0x4dfb51+_0x29f6('0xb7')+_0x3d8d44+_0x29f6('0xc1'),'headers':{'Authorization':_0x29f6('0x9f')+_0x380327,'If-None-Match':null,'OData-Version':_0x29f6('0xba')},'json':!![]};return rp(_0x210321)[_0x29f6('0x1f')](function(_0x290cce){var _0x1b8f62=[];_0x1b8f62[_0x29f6('0xac')]({'name':_0x290cce['OptionSet'][_0x29f6('0xc2')][_0x29f6('0xbd')][_0x29f6('0xc0')][_0x29f6('0xbd')],'value':'true'},{'name':_0x290cce[_0x29f6('0xbb')][_0x29f6('0xc3')][_0x29f6('0xbd')]['UserLocalizedLabel'][_0x29f6('0xbd')],'value':_0x29f6('0xc4')});var _0x4d02ae={'id':_0x246144+'_'+_0x290cce[_0x29f6('0xa6')],'name':_0x290cce[_0x29f6('0xbf')][_0x29f6('0xc0')][_0x29f6('0xbd')],'custom':![],'options':_0x1b8f62};_0x2fd65b[_0x29f6('0xac')](_0x4d02ae);return _0x2fd65b;});}function getInputList(_0x2f0981,_0x6c90c3,_0x1bf0e8,_0xcf8b37,_0x303732,_0x1dfd8a,_0x5bc6df){var _0x512055={'method':_0x29f6('0xa2'),'uri':_0x2f0981+_0x29f6('0xa3')+_0x303732+_0x29f6('0xb7')+_0x1dfd8a+_0x29f6('0xc5')+_0x1bf0e8+_0x29f6('0xc6'),'headers':{'Authorization':_0x29f6('0x9f')+_0x5bc6df,'If-None-Match':null,'OData-Version':_0x29f6('0xba')},'json':!![]};return rp(_0x512055)[_0x29f6('0x1f')](function(_0x51c777){var _0x5bd286={'id':_0x6c90c3+'_'+_0x51c777['LogicalName'],'name':_0x51c777[_0x29f6('0xbf')][_0x29f6('0xc0')]?_0x51c777[_0x29f6('0xbf')][_0x29f6('0xc0')]['Label']:_0x51c777[_0x29f6('0xa6')],'custom':![],'options':[]};_0xcf8b37[_0x29f6('0xac')](_0x5bd286);return _0xcf8b37;});}
\ No newline at end of file
index 9db9292..5ea940e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x1e373d,_0x122b53){var _0x2fc1a8=function(_0x1eb0c5){while(--_0x1eb0c5){_0x1e373d['push'](_0x1e373d['shift']());}};_0x2fc1a8(++_0x122b53);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb7e7[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['exports','Dynamics365Account','int_dynamics365_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x13e8ef,_0x5e3b6a){var _0x16e70b=function(_0x533576){while(--_0x533576){_0x13e8ef['push'](_0x13e8ef['shift']());}};_0x16e70b(++_0x5e3b6a);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./intDynamics365Account.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0d8b('0x7')]=function(_0x227c63,_0x39f43a){return _0x227c63['define'](_0x0d8b('0x8'),attributes,{'tableName':_0x0d8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6467b23..229af15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f8a=['findAll','options','raw','where','limit','include','map','model','attributes','catch','find','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetDynamics365Account','Dynamics365Account'];(function(_0x4d5d0a,_0x4148dd){var _0x502c59=function(_0x79c6c){while(--_0x79c6c){_0x4d5d0a['push'](_0x4d5d0a['shift']());}};_0x502c59(++_0x4148dd);}(_0x0f8a,0x6e));var _0xa0f8=function(_0xa9ad65,_0x585c82){_0xa9ad65=_0xa9ad65-0x0;var _0x57d821=_0x0f8a[_0xa9ad65];return _0x57d821;};'use strict';var _=require(_0xa0f8('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa0f8('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa0f8('0x2'))['db'];var utils=require(_0xa0f8('0x3'));var logger=require(_0xa0f8('0x4'))(_0xa0f8('0x5'));var config=require(_0xa0f8('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa0f8('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d7ed9,_0xb043a6,_0x103a51){return new BPromise(function(_0x2400e2,_0x348697){return client[_0xa0f8('0x8')](_0x4d7ed9,_0x103a51)[_0xa0f8('0x9')](function(_0x47c0d6){logger[_0xa0f8('0xa')](_0xa0f8('0xb'),_0xb043a6,'request\x20sent');logger[_0xa0f8('0xc')](_0xa0f8('0xd'),_0xb043a6,'request\x20sent',JSON[_0xa0f8('0xe')](_0x47c0d6));if(_0x47c0d6[_0xa0f8('0xf')]){if(_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x10')]===0x1f4){logger['error'](_0xa0f8('0xb'),_0xb043a6,_0x47c0d6['error']['message']);return _0x348697(_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x11')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0xb043a6,_0x47c0d6[_0xa0f8('0xf')][_0xa0f8('0x11')]);return _0x2400e2(_0x47c0d6[_0xa0f8('0xf')]['message']);}else{logger[_0xa0f8('0xa')]('Dynamics365Account,\x20%s,\x20%s',_0xb043a6,_0xa0f8('0x12'));_0x2400e2(_0x47c0d6[_0xa0f8('0x13')][_0xa0f8('0x11')]);}})['catch'](function(_0x346271){logger['error'](_0xa0f8('0xb'),_0xb043a6,_0x346271);_0x348697(_0x346271);});});}exports[_0xa0f8('0x14')]=function(_0x44bc71){var _0xbfef32=this;return new Promise(function(_0x52e73b,_0x1ea1a7){return db[_0xa0f8('0x15')][_0xa0f8('0x16')]({'raw':_0x44bc71['options']?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x18')]===undefined?!![]:![]:!![],'where':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x19')]||null:null,'attributes':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')]['attributes']||null:null,'limit':_0x44bc71[_0xa0f8('0x17')]?_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x1a')]||null:null,'include':_0x44bc71['options']?_0x44bc71['options'][_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x44bc71[_0xa0f8('0x17')][_0xa0f8('0x1b')],function(_0xb697fa){return{'model':db[_0xb697fa[_0xa0f8('0x1d')]],'as':_0xb697fa['as'],'attributes':_0xb697fa[_0xa0f8('0x1e')],'include':_0xb697fa[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0xb697fa[_0xa0f8('0x1b')],function(_0x19af28){return{'model':db[_0x19af28['model']],'as':_0x19af28['as'],'attributes':_0x19af28[_0xa0f8('0x1e')],'include':_0x19af28[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x19af28[_0xa0f8('0x1b')],function(_0xcceaae){return{'model':db[_0xcceaae[_0xa0f8('0x1d')]],'as':_0xcceaae['as'],'attributes':_0xcceaae[_0xa0f8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa0f8('0x9')](function(_0x5e532d){logger['info'](_0xa0f8('0x14'),_0x44bc71);logger['debug'](_0xa0f8('0x14'),_0x44bc71,JSON['stringify'](_0x5e532d));_0x52e73b(_0x5e532d);})[_0xa0f8('0x1f')](function(_0x59ead2){logger[_0xa0f8('0xf')](_0xa0f8('0x14'),_0x59ead2['message'],_0x44bc71);_0x1ea1a7(_0xbfef32[_0xa0f8('0xf')](0x1f4,_0x59ead2[_0xa0f8('0x11')]));});});};exports['ShowDynamics365Account']=function(_0x4ea811){var _0x29105f=this;return new Promise(function(_0x2d8337,_0xb54671){return db[_0xa0f8('0x15')][_0xa0f8('0x20')]({'raw':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811['options']['raw']===undefined?!![]:![]:!![],'where':_0x4ea811['options']?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x19')]||null:null,'attributes':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x1e')]||null:null,'include':_0x4ea811[_0xa0f8('0x17')]?_0x4ea811[_0xa0f8('0x17')][_0xa0f8('0x1b')]?_['map'](_0x4ea811[_0xa0f8('0x17')]['include'],function(_0x3f5757){return{'model':db[_0x3f5757[_0xa0f8('0x1d')]],'as':_0x3f5757['as'],'attributes':_0x3f5757['attributes'],'include':_0x3f5757['include']?_[_0xa0f8('0x1c')](_0x3f5757[_0xa0f8('0x1b')],function(_0x4f1306){return{'model':db[_0x4f1306[_0xa0f8('0x1d')]],'as':_0x4f1306['as'],'attributes':_0x4f1306[_0xa0f8('0x1e')],'include':_0x4f1306[_0xa0f8('0x1b')]?_[_0xa0f8('0x1c')](_0x4f1306[_0xa0f8('0x1b')],function(_0x57172b){return{'model':db[_0x57172b[_0xa0f8('0x1d')]],'as':_0x57172b['as'],'attributes':_0x57172b[_0xa0f8('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xa0f8('0x9')](function(_0x3f4d7f){logger[_0xa0f8('0xa')]('ShowDynamics365Account',_0x4ea811);logger[_0xa0f8('0xc')]('ShowDynamics365Account',_0x4ea811,JSON[_0xa0f8('0xe')](_0x3f4d7f));_0x2d8337(_0x3f4d7f);})[_0xa0f8('0x1f')](function(_0xe35d65){logger[_0xa0f8('0xf')]('ShowDynamics365Account',_0xe35d65[_0xa0f8('0x11')],_0x4ea811);_0xb54671(_0x29105f[_0xa0f8('0xf')](0x1f4,_0xe35d65[_0xa0f8('0x11')]));});});};
\ No newline at end of file
+var _0x5f55=['limit','include','map','model','GetDynamics365Account','debug','stringify','catch','ShowDynamics365Account','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result','Dynamics365Account','options','raw','where','attributes'];(function(_0x102e5e,_0x57e23b){var _0x472961=function(_0x179755){while(--_0x179755){_0x102e5e['push'](_0x102e5e['shift']());}};_0x472961(++_0x57e23b);}(_0x5f55,0x142));var _0x55f5=function(_0x279614,_0x4cce43){_0x279614=_0x279614-0x0;var _0x2a331c=_0x5f55[_0x279614];return _0x2a331c;};'use strict';var _=require(_0x55f5('0x0'));var util=require(_0x55f5('0x1'));var moment=require(_0x55f5('0x2'));var BPromise=require(_0x55f5('0x3'));var rs=require(_0x55f5('0x4'));var fs=require('fs');var Redis=require(_0x55f5('0x5'));var db=require(_0x55f5('0x6'))['db'];var utils=require(_0x55f5('0x7'));var logger=require(_0x55f5('0x8'))(_0x55f5('0x9'));var config=require(_0x55f5('0xa'));var jayson=require(_0x55f5('0xb'));var client=jayson[_0x55f5('0xc')][_0x55f5('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x189856,_0x1fc06e,_0x549c44){return new BPromise(function(_0x989c54,_0x1ad256){return client[_0x55f5('0xe')](_0x189856,_0x549c44)[_0x55f5('0xf')](function(_0x1a636a){logger[_0x55f5('0x10')](_0x55f5('0x11'),_0x1fc06e,_0x55f5('0x12'));logger['debug'](_0x55f5('0x13'),_0x1fc06e,_0x55f5('0x12'),JSON['stringify'](_0x1a636a));if(_0x1a636a[_0x55f5('0x14')]){if(_0x1a636a['error'][_0x55f5('0x15')]===0x1f4){logger['error'](_0x55f5('0x11'),_0x1fc06e,_0x1a636a[_0x55f5('0x14')]['message']);return _0x1ad256(_0x1a636a[_0x55f5('0x14')][_0x55f5('0x16')]);}logger[_0x55f5('0x14')](_0x55f5('0x11'),_0x1fc06e,_0x1a636a[_0x55f5('0x14')][_0x55f5('0x16')]);return _0x989c54(_0x1a636a[_0x55f5('0x14')][_0x55f5('0x16')]);}else{logger[_0x55f5('0x10')](_0x55f5('0x11'),_0x1fc06e,_0x55f5('0x12'));_0x989c54(_0x1a636a[_0x55f5('0x17')]['message']);}})['catch'](function(_0x4bacfe){logger['error'](_0x55f5('0x11'),_0x1fc06e,_0x4bacfe);_0x1ad256(_0x4bacfe);});});}exports['GetDynamics365Account']=function(_0xb1d365){var _0x22f028=this;return new Promise(function(_0x3f7f36,_0x31746d){return db[_0x55f5('0x18')]['findAll']({'raw':_0xb1d365[_0x55f5('0x19')]?_0xb1d365['options'][_0x55f5('0x1a')]===undefined?!![]:![]:!![],'where':_0xb1d365[_0x55f5('0x19')]?_0xb1d365['options'][_0x55f5('0x1b')]||null:null,'attributes':_0xb1d365[_0x55f5('0x19')]?_0xb1d365[_0x55f5('0x19')][_0x55f5('0x1c')]||null:null,'limit':_0xb1d365[_0x55f5('0x19')]?_0xb1d365['options'][_0x55f5('0x1d')]||null:null,'include':_0xb1d365['options']?_0xb1d365[_0x55f5('0x19')][_0x55f5('0x1e')]?_[_0x55f5('0x1f')](_0xb1d365[_0x55f5('0x19')][_0x55f5('0x1e')],function(_0x32b2bc){return{'model':db[_0x32b2bc[_0x55f5('0x20')]],'as':_0x32b2bc['as'],'attributes':_0x32b2bc[_0x55f5('0x1c')],'include':_0x32b2bc[_0x55f5('0x1e')]?_['map'](_0x32b2bc['include'],function(_0x3daa00){return{'model':db[_0x3daa00['model']],'as':_0x3daa00['as'],'attributes':_0x3daa00['attributes'],'include':_0x3daa00[_0x55f5('0x1e')]?_[_0x55f5('0x1f')](_0x3daa00[_0x55f5('0x1e')],function(_0x539d60){return{'model':db[_0x539d60[_0x55f5('0x20')]],'as':_0x539d60['as'],'attributes':_0x539d60[_0x55f5('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x55f5('0xf')](function(_0x41c4d6){logger['info'](_0x55f5('0x21'),_0xb1d365);logger[_0x55f5('0x22')](_0x55f5('0x21'),_0xb1d365,JSON[_0x55f5('0x23')](_0x41c4d6));_0x3f7f36(_0x41c4d6);})[_0x55f5('0x24')](function(_0x1e4ab0){logger[_0x55f5('0x14')](_0x55f5('0x21'),_0x1e4ab0[_0x55f5('0x16')],_0xb1d365);_0x31746d(_0x22f028[_0x55f5('0x14')](0x1f4,_0x1e4ab0[_0x55f5('0x16')]));});});};exports[_0x55f5('0x25')]=function(_0x1401e5){var _0x54656f=this;return new Promise(function(_0x515dd8,_0x4dfa44){return db['Dynamics365Account'][_0x55f5('0x26')]({'raw':_0x1401e5['options']?_0x1401e5[_0x55f5('0x19')][_0x55f5('0x1a')]===undefined?!![]:![]:!![],'where':_0x1401e5[_0x55f5('0x19')]?_0x1401e5[_0x55f5('0x19')][_0x55f5('0x1b')]||null:null,'attributes':_0x1401e5['options']?_0x1401e5[_0x55f5('0x19')][_0x55f5('0x1c')]||null:null,'include':_0x1401e5[_0x55f5('0x19')]?_0x1401e5[_0x55f5('0x19')][_0x55f5('0x1e')]?_[_0x55f5('0x1f')](_0x1401e5[_0x55f5('0x19')][_0x55f5('0x1e')],function(_0x1d3100){return{'model':db[_0x1d3100['model']],'as':_0x1d3100['as'],'attributes':_0x1d3100['attributes'],'include':_0x1d3100[_0x55f5('0x1e')]?_[_0x55f5('0x1f')](_0x1d3100[_0x55f5('0x1e')],function(_0x5db0bf){return{'model':db[_0x5db0bf[_0x55f5('0x20')]],'as':_0x5db0bf['as'],'attributes':_0x5db0bf[_0x55f5('0x1c')],'include':_0x5db0bf['include']?_[_0x55f5('0x1f')](_0x5db0bf[_0x55f5('0x1e')],function(_0x19fc19){return{'model':db[_0x19fc19[_0x55f5('0x20')]],'as':_0x19fc19['as'],'attributes':_0x19fc19[_0x55f5('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3a6104){logger[_0x55f5('0x10')](_0x55f5('0x25'),_0x1401e5);logger[_0x55f5('0x22')](_0x55f5('0x25'),_0x1401e5,JSON[_0x55f5('0x23')](_0x3a6104));_0x515dd8(_0x3a6104);})[_0x55f5('0x24')](function(_0x4f3260){logger[_0x55f5('0x14')](_0x55f5('0x25'),_0x4f3260[_0x55f5('0x16')],_0x1401e5);_0x4dfa44(_0x54656f[_0x55f5('0x14')](0x1f4,_0x4f3260[_0x55f5('0x16')]));});});};
\ No newline at end of file
index fb956f3..014f016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b70=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','/:id','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b70,0x192));var _0x00b7=function(_0x1626e8,_0x545374){_0x1626e8=_0x1626e8-0x0;var _0x4e3278=_0x0b70[_0x1626e8];return _0x4e3278;};'use strict';var multer=require(_0x00b7('0x0'));var util=require(_0x00b7('0x1'));var path=require(_0x00b7('0x2'));var timeout=require(_0x00b7('0x3'));var express=require(_0x00b7('0x4'));var router=express['Router']();var fs_extra=require(_0x00b7('0x5'));var auth=require(_0x00b7('0x6'));var interaction=require(_0x00b7('0x7'));var config=require(_0x00b7('0x8'));var controller=require(_0x00b7('0x9'));router[_0x00b7('0xa')]('/',auth[_0x00b7('0xb')](),controller[_0x00b7('0xc')]);router[_0x00b7('0xa')]('/:id',auth[_0x00b7('0xb')](),controller[_0x00b7('0xd')]);router[_0x00b7('0xa')]('/:id/fields',auth[_0x00b7('0xb')](),controller[_0x00b7('0xe')]);router['get'](_0x00b7('0xf'),auth[_0x00b7('0xb')](),controller['getSubjects']);router[_0x00b7('0xa')](_0x00b7('0x10'),auth['isAuthenticated'](),controller[_0x00b7('0x11')]);router[_0x00b7('0x12')]('/',auth['isAuthenticated'](),controller[_0x00b7('0x13')]);router['put'](_0x00b7('0x14'),auth['isAuthenticated'](),controller[_0x00b7('0x15')]);router[_0x00b7('0x16')]('/:id',auth[_0x00b7('0xb')](),controller['destroy']);module[_0x00b7('0x17')]=router;
\ No newline at end of file
+var _0xdfa0=['show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated'];(function(_0x5d43c9,_0x5f0739){var _0x359759=function(_0xdc0673){while(--_0xdc0673){_0x5d43c9['push'](_0x5d43c9['shift']());}};_0x359759(++_0x5f0739);}(_0xdfa0,0xc4));var _0x0dfa=function(_0x31c690,_0x4bbce0){_0x31c690=_0x31c690-0x0;var _0xe8da76=_0xdfa0[_0x31c690];return _0xe8da76;};'use strict';var multer=require(_0x0dfa('0x0'));var util=require(_0x0dfa('0x1'));var path=require(_0x0dfa('0x2'));var timeout=require('connect-timeout');var express=require(_0x0dfa('0x3'));var router=express[_0x0dfa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0dfa('0x5'));var interaction=require(_0x0dfa('0x6'));var config=require(_0x0dfa('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0x0dfa('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0dfa('0x8')](_0x0dfa('0x9'),auth[_0x0dfa('0xa')](),controller[_0x0dfa('0xb')]);router[_0x0dfa('0x8')](_0x0dfa('0xc'),auth[_0x0dfa('0xa')](),controller[_0x0dfa('0xd')]);router[_0x0dfa('0x8')](_0x0dfa('0xe'),auth[_0x0dfa('0xa')](),controller[_0x0dfa('0xf')]);router[_0x0dfa('0x8')](_0x0dfa('0x10'),auth[_0x0dfa('0xa')](),controller[_0x0dfa('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0dfa('0x12')]);router['put'](_0x0dfa('0x9'),auth[_0x0dfa('0xa')](),controller[_0x0dfa('0x13')]);router[_0x0dfa('0x14')](_0x0dfa('0x9'),auth['isAuthenticated'](),controller[_0x0dfa('0x15')]);module[_0x0dfa('0x16')]=router;
\ No newline at end of file
index 8abba19..807a366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15e2=['ENUM','incident','phonecall','sequelize','exports'];(function(_0x2e8da3,_0x362e51){var _0x3630dc=function(_0x5ddec0){while(--_0x5ddec0){_0x2e8da3['push'](_0x2e8da3['shift']());}};_0x3630dc(++_0x362e51);}(_0x15e2,0x134));var _0x215e=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0x15e2[_0x24259d];return _0x5a701;};'use strict';var Sequelize=require(_0x215e('0x0'));module[_0x215e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x215e('0x2')](_0x215e('0x3'),_0x215e('0x4')),'defaultValue':_0x215e('0x3')}};
\ No newline at end of file
+var _0xeaa9=['ENUM','sequelize','exports','STRING'];(function(_0x4c4a44,_0x3421c5){var _0x30c71c=function(_0x211732){while(--_0x211732){_0x4c4a44['push'](_0x4c4a44['shift']());}};_0x30c71c(++_0x3421c5);}(_0xeaa9,0xe9));var _0x9eaa=function(_0x4ce9a8,_0xd2e278){_0x4ce9a8=_0x4ce9a8-0x0;var _0x171c31=_0xeaa9[_0x4ce9a8];return _0x171c31;};'use strict';var Sequelize=require(_0x9eaa('0x0'));module[_0x9eaa('0x1')]={'name':{'type':Sequelize[_0x9eaa('0x2')]},'description':{'type':Sequelize[_0x9eaa('0x2')]},'ticketType':{'type':Sequelize[_0x9eaa('0x3')]('incident','phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
index e9f0c79..a682d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9647=['getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','nolimit','order','filter','where','VIRTUAL','merge','includeAll','include','rows','catch','model','find','create','body','params','getFields','findOne','Dynamics365Field','sort','options','hasOwnProperty','getSubjects','pick'];(function(_0x1b97f3,_0xce63f3){var _0x32d818=function(_0x9671b7){while(--_0x9671b7){_0x1b97f3['push'](_0x1b97f3['shift']());}};_0x32d818(++_0xce63f3);}(_0x9647,0x13d));var _0x7964=function(_0xdf1e46,_0x36df44){_0xdf1e46=_0xdf1e46-0x0;var _0x324e3c=_0x9647[_0xdf1e46];return _0x324e3c;};'use strict';var emlformat=require(_0x7964('0x0'));var rimraf=require(_0x7964('0x1'));var zipdir=require(_0x7964('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7964('0x3'));var BPromise=require(_0x7964('0x4'));var Mustache=require(_0x7964('0x5'));var util=require(_0x7964('0x6'));var path=require(_0x7964('0x7'));var sox=require(_0x7964('0x8'));var csv=require(_0x7964('0x9'));var ejs=require(_0x7964('0xa'));var fs=require('fs');var fs_extra=require(_0x7964('0xb'));var _=require(_0x7964('0xc'));var squel=require(_0x7964('0xd'));var crypto=require('crypto');var jsforce=require(_0x7964('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7964('0x9'));var querystring=require(_0x7964('0xf'));var Papa=require('papaparse');var Redis=require(_0x7964('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7964('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7964('0x12'));var logger=require(_0x7964('0x13'))(_0x7964('0x14'));var utils=require(_0x7964('0x15'));var config=require(_0x7964('0x16'));var licenseUtil=require(_0x7964('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b512b,_0x5ef007){_0x5ef007=_0x5ef007||0xcc;return function(_0x38ccd9){if(_0x38ccd9){return _0x1b512b[_0x7964('0x18')](_0x5ef007);}return _0x1b512b[_0x7964('0x19')](_0x5ef007)[_0x7964('0x1a')]();};}function respondWithResult(_0x4379b1,_0x507b4d){_0x507b4d=_0x507b4d||0xc8;return function(_0x2e159d){if(_0x2e159d){return _0x4379b1[_0x7964('0x19')](_0x507b4d)[_0x7964('0x1b')](_0x2e159d);}};}function respondWithFilteredResult(_0x58378a,_0x24fab0){return function(_0x13ef5a){if(_0x13ef5a){var _0x3238b6=typeof _0x24fab0[_0x7964('0x1c')]===_0x7964('0x1d')&&typeof _0x24fab0[_0x7964('0x1e')]===_0x7964('0x1d');var _0x2dee54=_0x13ef5a[_0x7964('0x1f')];var _0x15887b=_0x3238b6?0x0:_0x24fab0[_0x7964('0x1c')];var _0x5281a4=_0x3238b6?_0x13ef5a[_0x7964('0x1f')]:_0x24fab0[_0x7964('0x1c')]+_0x24fab0[_0x7964('0x1e')];var _0x5e2b1f;if(_0x5281a4>=_0x2dee54){_0x5281a4=_0x2dee54;_0x5e2b1f=0xc8;}else{_0x5e2b1f=0xce;}_0x58378a[_0x7964('0x19')](_0x5e2b1f);return _0x58378a[_0x7964('0x20')](_0x7964('0x21'),_0x15887b+'-'+_0x5281a4+'/'+_0x2dee54)[_0x7964('0x1b')](_0x13ef5a);}return null;};}function patchUpdates(_0x3a9b4b){return function(_0x308abf){try{jsonpatch['apply'](_0x308abf,_0x3a9b4b,!![]);}catch(_0x41f0fc){return BPromise[_0x7964('0x22')](_0x41f0fc);}return _0x308abf[_0x7964('0x23')]();};}function saveUpdates(_0x129aed,_0x437038){return function(_0x3eeef6){if(_0x3eeef6){return _0x3eeef6[_0x7964('0x24')](_0x129aed)[_0x7964('0x25')](function(_0x36d314){return _0x36d314;});}return null;};}function removeEntity(_0x39a457,_0x32e208){return function(_0x3e6f9d){if(_0x3e6f9d){return _0x3e6f9d[_0x7964('0x26')]()[_0x7964('0x25')](function(){_0x39a457['status'](0xcc)[_0x7964('0x1a')]();});}};}function handleEntityNotFound(_0x49d85e,_0xf9b6f0){return function(_0x2597fd){if(!_0x2597fd){_0x49d85e[_0x7964('0x18')](0x194);}return _0x2597fd;};}function handleError(_0x3254cd,_0xb72c1e){_0xb72c1e=_0xb72c1e||0x1f4;return function(_0x4420e6){logger['error'](_0x4420e6['stack']);if(_0x4420e6[_0x7964('0x27')]){delete _0x4420e6[_0x7964('0x27')];}_0x3254cd['status'](_0xb72c1e)[_0x7964('0x28')](_0x4420e6);};}exports[_0x7964('0x29')]=function(_0x4885c7,_0x2cfbda){var _0x1954be={},_0x82b46d={},_0xa80cfa={'count':0x0,'rows':[]};var _0x12e4a6=_[_0x7964('0x2a')](db[_0x7964('0x2b')][_0x7964('0x2c')],function(_0x1ece10){return{'name':_0x1ece10[_0x7964('0x2d')],'type':_0x1ece10[_0x7964('0x2e')][_0x7964('0x2f')]};});_0x82b46d['model']=_['map'](_0x12e4a6,'name');_0x82b46d[_0x7964('0x30')]=_[_0x7964('0x31')](_0x4885c7['query']);_0x82b46d[_0x7964('0x32')]=_[_0x7964('0x33')](_0x82b46d['model'],_0x82b46d[_0x7964('0x30')]);_0x1954be[_0x7964('0x34')]=_[_0x7964('0x33')](_0x82b46d['model'],qs[_0x7964('0x35')](_0x4885c7[_0x7964('0x30')][_0x7964('0x35')]));_0x1954be[_0x7964('0x34')]=_0x1954be[_0x7964('0x34')][_0x7964('0x36')]?_0x1954be['attributes']:_0x82b46d['model'];if(!_0x4885c7['query']['hasOwnProperty'](_0x7964('0x37'))){_0x1954be[_0x7964('0x1e')]=qs[_0x7964('0x1e')](_0x4885c7[_0x7964('0x30')][_0x7964('0x1e')]);_0x1954be[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x4885c7[_0x7964('0x30')]['offset']);}_0x1954be[_0x7964('0x38')]=qs['sort'](_0x4885c7['query']['sort']);_0x1954be['where']=qs[_0x7964('0x32')](_['pick'](_0x4885c7[_0x7964('0x30')],_0x82b46d[_0x7964('0x32')]),_0x12e4a6);if(_0x4885c7['query'][_0x7964('0x39')]){_0x1954be[_0x7964('0x3a')]=_['merge'](_0x1954be[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x12e4a6,function(_0x1c3ea6){if(_0x1c3ea6[_0x7964('0x2e')]!==_0x7964('0x3b')){var _0x6182a0={};_0x6182a0[_0x1c3ea6[_0x7964('0x27')]]={'$like':'%'+_0x4885c7[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x6182a0;}})});}_0x1954be=_[_0x7964('0x3c')]({},_0x1954be,_0x4885c7['options']);var _0x18b829={'where':_0x1954be[_0x7964('0x3a')]};return db['Dynamics365Configuration'][_0x7964('0x1f')](_0x18b829)[_0x7964('0x25')](function(_0x4399cc){_0xa80cfa[_0x7964('0x1f')]=_0x4399cc;if(_0x4885c7[_0x7964('0x30')][_0x7964('0x3d')]){_0x1954be[_0x7964('0x3e')]=[{'all':!![]}];}return db[_0x7964('0x2b')]['findAll'](_0x1954be);})['then'](function(_0x487fe1){_0xa80cfa[_0x7964('0x3f')]=_0x487fe1;return _0xa80cfa;})[_0x7964('0x25')](respondWithFilteredResult(_0x2cfbda,_0x1954be))[_0x7964('0x40')](handleError(_0x2cfbda,null));};exports['show']=function(_0x330afc,_0x4d474f){var _0x5ee615={'raw':![],'where':{'id':_0x330afc['params']['id']}},_0x281a5b={};_0x281a5b[_0x7964('0x41')]=_['keys'](db[_0x7964('0x2b')][_0x7964('0x2c')]);_0x281a5b[_0x7964('0x30')]=_[_0x7964('0x31')](_0x330afc[_0x7964('0x30')]);_0x281a5b['filters']=_['intersection'](_0x281a5b['model'],_0x281a5b[_0x7964('0x30')]);_0x5ee615[_0x7964('0x34')]=_[_0x7964('0x33')](_0x281a5b[_0x7964('0x41')],qs[_0x7964('0x35')](_0x330afc['query'][_0x7964('0x35')]));_0x5ee615[_0x7964('0x34')]=_0x5ee615['attributes']['length']?_0x5ee615[_0x7964('0x34')]:_0x281a5b[_0x7964('0x41')];if(_0x330afc['query'][_0x7964('0x3d')]){_0x5ee615[_0x7964('0x3e')]=[{'all':!![]}];}_0x5ee615=_[_0x7964('0x3c')]({},_0x5ee615,_0x330afc['options']);return db[_0x7964('0x2b')][_0x7964('0x42')](_0x5ee615)['then'](handleEntityNotFound(_0x4d474f,null))[_0x7964('0x25')](respondWithResult(_0x4d474f,null))['catch'](handleError(_0x4d474f,null));};exports['create']=function(_0xf39146,_0x3a1a2e){return db['Dynamics365Configuration'][_0x7964('0x43')](_0xf39146[_0x7964('0x44')],{})[_0x7964('0x25')](respondWithResult(_0x3a1a2e,0xc9))[_0x7964('0x40')](handleError(_0x3a1a2e,null));};exports[_0x7964('0x24')]=function(_0x1be3f3,_0x36498c){if(_0x1be3f3[_0x7964('0x44')]['id']){delete _0x1be3f3['body']['id'];}return db[_0x7964('0x2b')][_0x7964('0x42')]({'where':{'id':_0x1be3f3[_0x7964('0x45')]['id']}})['then'](handleEntityNotFound(_0x36498c,null))[_0x7964('0x25')](saveUpdates(_0x1be3f3[_0x7964('0x44')],null))['then'](respondWithResult(_0x36498c,null))[_0x7964('0x40')](handleError(_0x36498c,null));};exports[_0x7964('0x26')]=function(_0x4a60b2,_0x4b2739){return db[_0x7964('0x2b')][_0x7964('0x42')]({'where':{'id':_0x4a60b2[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x4b2739,null))[_0x7964('0x25')](removeEntity(_0x4b2739,null))['catch'](handleError(_0x4b2739,null));};exports[_0x7964('0x46')]=function(_0xa18d25,_0x3e76f3,_0x3fb8f8){var _0x387573={};var _0x29e611={};var _0x2be203;var _0x4abd07;return db['Dynamics365Configuration'][_0x7964('0x47')]({'where':{'id':_0xa18d25[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x3e76f3,null))['then'](function(_0x534b2e){if(_0x534b2e){_0x2be203=_0x534b2e;_0x29e611[_0x7964('0x41')]=_[_0x7964('0x31')](db[_0x7964('0x48')][_0x7964('0x2c')]);_0x29e611[_0x7964('0x30')]=_['keys'](_0xa18d25[_0x7964('0x30')]);_0x29e611[_0x7964('0x32')]=_[_0x7964('0x33')](_0x29e611[_0x7964('0x41')],_0x29e611[_0x7964('0x30')]);_0x387573[_0x7964('0x34')]=_[_0x7964('0x33')](_0x29e611[_0x7964('0x41')],qs[_0x7964('0x35')](_0xa18d25[_0x7964('0x30')][_0x7964('0x35')]));_0x387573[_0x7964('0x34')]=_0x387573[_0x7964('0x34')][_0x7964('0x36')]?_0x387573[_0x7964('0x34')]:_0x29e611[_0x7964('0x41')];_0x387573['order']=qs[_0x7964('0x49')](_0xa18d25[_0x7964('0x30')][_0x7964('0x49')]);_0x387573[_0x7964('0x3a')]=qs[_0x7964('0x32')](_['pick'](_0xa18d25[_0x7964('0x30')],_0x29e611[_0x7964('0x32')]));if(_0xa18d25[_0x7964('0x30')][_0x7964('0x39')]){_0x387573['where']=_[_0x7964('0x3c')](_0x387573[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x387573[_0x7964('0x34')],function(_0x4130ae){var _0x53b094={};_0x53b094[_0x4130ae]={'$like':'%'+_0xa18d25[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x53b094;})});}_0x387573=_['merge']({},_0x387573,_0xa18d25[_0x7964('0x4a')]);return _0x2be203['getFields'](_0x387573);}})[_0x7964('0x25')](function(_0x51dacb){if(_0x51dacb){_0x4abd07=_0x51dacb[_0x7964('0x36')];if(!_0xa18d25[_0x7964('0x30')][_0x7964('0x4b')](_0x7964('0x37'))){_0x387573['limit']=qs['limit'](_0xa18d25[_0x7964('0x30')]['limit']);_0x387573[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0xa18d25[_0x7964('0x30')][_0x7964('0x1c')]);}return _0x2be203['getFields'](_0x387573);}})['then'](function(_0x33aad3){if(_0x33aad3){return _0x33aad3?{'count':_0x4abd07,'rows':_0x33aad3}:null;}})[_0x7964('0x25')](respondWithResult(_0x3e76f3,null))[_0x7964('0x40')](handleError(_0x3e76f3,null));};exports[_0x7964('0x4c')]=function(_0x5cc51f,_0x10d347,_0x27003b){var _0x407f60={};var _0x541a75={};var _0x4d4cfb;var _0x40b88a;return db[_0x7964('0x2b')][_0x7964('0x47')]({'where':{'id':_0x5cc51f[_0x7964('0x45')]['id']}})[_0x7964('0x25')](handleEntityNotFound(_0x10d347,null))[_0x7964('0x25')](function(_0x3b752c){if(_0x3b752c){_0x4d4cfb=_0x3b752c;_0x541a75['model']=_[_0x7964('0x31')](db['Dynamics365Field'][_0x7964('0x2c')]);_0x541a75['query']=_[_0x7964('0x31')](_0x5cc51f[_0x7964('0x30')]);_0x541a75[_0x7964('0x32')]=_[_0x7964('0x33')](_0x541a75[_0x7964('0x41')],_0x541a75[_0x7964('0x30')]);_0x407f60[_0x7964('0x34')]=_[_0x7964('0x33')](_0x541a75['model'],qs[_0x7964('0x35')](_0x5cc51f[_0x7964('0x30')][_0x7964('0x35')]));_0x407f60[_0x7964('0x34')]=_0x407f60[_0x7964('0x34')]['length']?_0x407f60[_0x7964('0x34')]:_0x541a75[_0x7964('0x41')];_0x407f60['order']=qs[_0x7964('0x49')](_0x5cc51f[_0x7964('0x30')][_0x7964('0x49')]);_0x407f60[_0x7964('0x3a')]=qs['filters'](_[_0x7964('0x4d')](_0x5cc51f[_0x7964('0x30')],_0x541a75[_0x7964('0x32')]));if(_0x5cc51f['query'][_0x7964('0x39')]){_0x407f60['where']=_[_0x7964('0x3c')](_0x407f60[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x407f60[_0x7964('0x34')],function(_0x336a79){var _0x200165={};_0x200165[_0x336a79]={'$like':'%'+_0x5cc51f[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x200165;})});}_0x407f60=_[_0x7964('0x3c')]({},_0x407f60,_0x5cc51f[_0x7964('0x4a')]);return _0x4d4cfb[_0x7964('0x4c')](_0x407f60);}})[_0x7964('0x25')](function(_0x32885a){if(_0x32885a){_0x40b88a=_0x32885a['length'];if(!_0x5cc51f[_0x7964('0x30')]['hasOwnProperty'](_0x7964('0x37'))){_0x407f60[_0x7964('0x1e')]=qs['limit'](_0x5cc51f['query']['limit']);_0x407f60[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x5cc51f['query'][_0x7964('0x1c')]);}return _0x4d4cfb[_0x7964('0x4c')](_0x407f60);}})[_0x7964('0x25')](function(_0x32f091){if(_0x32f091){return _0x32f091?{'count':_0x40b88a,'rows':_0x32f091}:null;}})[_0x7964('0x25')](respondWithResult(_0x10d347,null))['catch'](handleError(_0x10d347,null));};exports[_0x7964('0x4e')]=function(_0x2d5f35,_0x38dd41,_0x20e3a8){var _0x6d8e9c={};var _0x3568c6={};var _0x1bfa7a;var _0x3c80f8;return db['Dynamics365Configuration'][_0x7964('0x47')]({'where':{'id':_0x2d5f35['params']['id']}})['then'](handleEntityNotFound(_0x38dd41,null))['then'](function(_0x526390){if(_0x526390){_0x1bfa7a=_0x526390;_0x3568c6[_0x7964('0x41')]=_[_0x7964('0x31')](db[_0x7964('0x48')]['rawAttributes']);_0x3568c6['query']=_[_0x7964('0x31')](_0x2d5f35[_0x7964('0x30')]);_0x3568c6[_0x7964('0x32')]=_[_0x7964('0x33')](_0x3568c6[_0x7964('0x41')],_0x3568c6[_0x7964('0x30')]);_0x6d8e9c[_0x7964('0x34')]=_['intersection'](_0x3568c6[_0x7964('0x41')],qs[_0x7964('0x35')](_0x2d5f35[_0x7964('0x30')][_0x7964('0x35')]));_0x6d8e9c['attributes']=_0x6d8e9c[_0x7964('0x34')]['length']?_0x6d8e9c['attributes']:_0x3568c6[_0x7964('0x41')];_0x6d8e9c[_0x7964('0x38')]=qs[_0x7964('0x49')](_0x2d5f35[_0x7964('0x30')][_0x7964('0x49')]);_0x6d8e9c['where']=qs[_0x7964('0x32')](_[_0x7964('0x4d')](_0x2d5f35[_0x7964('0x30')],_0x3568c6[_0x7964('0x32')]));if(_0x2d5f35[_0x7964('0x30')]['filter']){_0x6d8e9c[_0x7964('0x3a')]=_[_0x7964('0x3c')](_0x6d8e9c[_0x7964('0x3a')],{'$or':_[_0x7964('0x2a')](_0x6d8e9c[_0x7964('0x34')],function(_0x4e32c1){var _0x4d5d05={};_0x4d5d05[_0x4e32c1]={'$like':'%'+_0x2d5f35[_0x7964('0x30')][_0x7964('0x39')]+'%'};return _0x4d5d05;})});}_0x6d8e9c=_[_0x7964('0x3c')]({},_0x6d8e9c,_0x2d5f35['options']);return _0x1bfa7a[_0x7964('0x4e')](_0x6d8e9c);}})[_0x7964('0x25')](function(_0x370826){if(_0x370826){_0x3c80f8=_0x370826['length'];if(!_0x2d5f35[_0x7964('0x30')]['hasOwnProperty'](_0x7964('0x37'))){_0x6d8e9c[_0x7964('0x1e')]=qs['limit'](_0x2d5f35[_0x7964('0x30')][_0x7964('0x1e')]);_0x6d8e9c[_0x7964('0x1c')]=qs[_0x7964('0x1c')](_0x2d5f35[_0x7964('0x30')]['offset']);}return _0x1bfa7a[_0x7964('0x4e')](_0x6d8e9c);}})['then'](function(_0x5b7e27){if(_0x5b7e27){return _0x5b7e27?{'count':_0x3c80f8,'rows':_0x5b7e27}:null;}})[_0x7964('0x25')](respondWithResult(_0x38dd41,null))[_0x7964('0x40')](handleError(_0x38dd41,null));};
\ No newline at end of file
+var _0x5ac9=['index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Dynamics365Configuration','includeAll','include','rows','catch','params','length','find','create','body','update','Dynamics365Field','pick','findOne','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send'];(function(_0x1aba25,_0x1faed1){var _0x47d997=function(_0x4f9e11){while(--_0x4f9e11){_0x1aba25['push'](_0x1aba25['shift']());}};_0x47d997(++_0x1faed1);}(_0x5ac9,0x70));var _0x95ac=function(_0x5b7a3d,_0x19a3f7){_0x5b7a3d=_0x5b7a3d-0x0;var _0x8c7fa4=_0x5ac9[_0x5b7a3d];return _0x8c7fa4;};'use strict';var emlformat=require(_0x95ac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x95ac('0x1'));var jsonpatch=require(_0x95ac('0x2'));var rp=require(_0x95ac('0x3'));var moment=require('moment');var BPromise=require(_0x95ac('0x4'));var Mustache=require(_0x95ac('0x5'));var util=require(_0x95ac('0x6'));var path=require(_0x95ac('0x7'));var sox=require('sox');var csv=require(_0x95ac('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x95ac('0x9'));var squel=require(_0x95ac('0xa'));var crypto=require(_0x95ac('0xb'));var jsforce=require(_0x95ac('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x95ac('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x95ac('0xd'));var authService=require(_0x95ac('0xe'));var qs=require(_0x95ac('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x95ac('0x10'));var logger=require('../../config/logger')(_0x95ac('0x11'));var utils=require(_0x95ac('0x12'));var config=require(_0x95ac('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20d803,_0x5606c7){_0x5606c7=_0x5606c7||0xcc;return function(_0x3fa5f5){if(_0x3fa5f5){return _0x20d803[_0x95ac('0x14')](_0x5606c7);}return _0x20d803[_0x95ac('0x15')](_0x5606c7)[_0x95ac('0x16')]();};}function respondWithResult(_0x3a1398,_0x7af2e3){_0x7af2e3=_0x7af2e3||0xc8;return function(_0x2368fb){if(_0x2368fb){return _0x3a1398['status'](_0x7af2e3)[_0x95ac('0x17')](_0x2368fb);}};}function respondWithFilteredResult(_0x5e7e53,_0x5bf769){return function(_0x9a49f3){if(_0x9a49f3){var _0x3f6694=typeof _0x5bf769[_0x95ac('0x18')]==='undefined'&&typeof _0x5bf769[_0x95ac('0x19')]===_0x95ac('0x1a');var _0x1d80b8=_0x9a49f3[_0x95ac('0x1b')];var _0x2de824=_0x3f6694?0x0:_0x5bf769[_0x95ac('0x18')];var _0x27e053=_0x3f6694?_0x9a49f3[_0x95ac('0x1b')]:_0x5bf769[_0x95ac('0x18')]+_0x5bf769['limit'];var _0x59eaa4;if(_0x27e053>=_0x1d80b8){_0x27e053=_0x1d80b8;_0x59eaa4=0xc8;}else{_0x59eaa4=0xce;}_0x5e7e53[_0x95ac('0x15')](_0x59eaa4);return _0x5e7e53['set'](_0x95ac('0x1c'),_0x2de824+'-'+_0x27e053+'/'+_0x1d80b8)['json'](_0x9a49f3);}return null;};}function patchUpdates(_0xe9a4d2){return function(_0x3a611e){try{jsonpatch[_0x95ac('0x1d')](_0x3a611e,_0xe9a4d2,!![]);}catch(_0x311459){return BPromise[_0x95ac('0x1e')](_0x311459);}return _0x3a611e[_0x95ac('0x1f')]();};}function saveUpdates(_0x470f55,_0x52a3ee){return function(_0x48abd5){if(_0x48abd5){return _0x48abd5['update'](_0x470f55)[_0x95ac('0x20')](function(_0x26d1c6){return _0x26d1c6;});}return null;};}function removeEntity(_0x37ca40,_0x528d6b){return function(_0x2d32db){if(_0x2d32db){return _0x2d32db[_0x95ac('0x21')]()[_0x95ac('0x20')](function(){_0x37ca40[_0x95ac('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23d4c2,_0x372db4){return function(_0x358d8e){if(!_0x358d8e){_0x23d4c2[_0x95ac('0x14')](0x194);}return _0x358d8e;};}function handleError(_0x2e5361,_0x3ea9f7){_0x3ea9f7=_0x3ea9f7||0x1f4;return function(_0x599862){logger[_0x95ac('0x22')](_0x599862[_0x95ac('0x23')]);if(_0x599862[_0x95ac('0x24')]){delete _0x599862['name'];}_0x2e5361['status'](_0x3ea9f7)[_0x95ac('0x25')](_0x599862);};}exports[_0x95ac('0x26')]=function(_0x37e478,_0x487b02){var _0x57d9f1={},_0x4bad80={},_0x141923={'count':0x0,'rows':[]};var _0x429c9b=_[_0x95ac('0x27')](db['Dynamics365Configuration'][_0x95ac('0x28')],function(_0x325f8e){return{'name':_0x325f8e[_0x95ac('0x29')],'type':_0x325f8e['type'][_0x95ac('0x2a')]};});_0x4bad80[_0x95ac('0x2b')]=_[_0x95ac('0x27')](_0x429c9b,_0x95ac('0x24'));_0x4bad80[_0x95ac('0x2c')]=_[_0x95ac('0x2d')](_0x37e478[_0x95ac('0x2c')]);_0x4bad80[_0x95ac('0x2e')]=_[_0x95ac('0x2f')](_0x4bad80['model'],_0x4bad80[_0x95ac('0x2c')]);_0x57d9f1[_0x95ac('0x30')]=_['intersection'](_0x4bad80['model'],qs[_0x95ac('0x31')](_0x37e478[_0x95ac('0x2c')]['fields']));_0x57d9f1[_0x95ac('0x30')]=_0x57d9f1['attributes']['length']?_0x57d9f1['attributes']:_0x4bad80[_0x95ac('0x2b')];if(!_0x37e478[_0x95ac('0x2c')][_0x95ac('0x32')](_0x95ac('0x33'))){_0x57d9f1['limit']=qs[_0x95ac('0x19')](_0x37e478[_0x95ac('0x2c')][_0x95ac('0x19')]);_0x57d9f1[_0x95ac('0x18')]=qs['offset'](_0x37e478['query'][_0x95ac('0x18')]);}_0x57d9f1[_0x95ac('0x34')]=qs['sort'](_0x37e478[_0x95ac('0x2c')][_0x95ac('0x35')]);_0x57d9f1[_0x95ac('0x36')]=qs[_0x95ac('0x2e')](_['pick'](_0x37e478['query'],_0x4bad80['filters']),_0x429c9b);if(_0x37e478[_0x95ac('0x2c')][_0x95ac('0x37')]){_0x57d9f1[_0x95ac('0x36')]=_[_0x95ac('0x38')](_0x57d9f1[_0x95ac('0x36')],{'$or':_[_0x95ac('0x27')](_0x429c9b,function(_0x49bf83){if(_0x49bf83['type']!==_0x95ac('0x39')){var _0x23609d={};_0x23609d[_0x49bf83[_0x95ac('0x24')]]={'$like':'%'+_0x37e478[_0x95ac('0x2c')][_0x95ac('0x37')]+'%'};return _0x23609d;}})});}_0x57d9f1=_[_0x95ac('0x38')]({},_0x57d9f1,_0x37e478[_0x95ac('0x3a')]);var _0x146b44={'where':_0x57d9f1[_0x95ac('0x36')]};return db[_0x95ac('0x3b')]['count'](_0x146b44)['then'](function(_0x393f5d){_0x141923[_0x95ac('0x1b')]=_0x393f5d;if(_0x37e478['query'][_0x95ac('0x3c')]){_0x57d9f1[_0x95ac('0x3d')]=[{'all':!![]}];}return db[_0x95ac('0x3b')]['findAll'](_0x57d9f1);})[_0x95ac('0x20')](function(_0x5c718b){_0x141923[_0x95ac('0x3e')]=_0x5c718b;return _0x141923;})[_0x95ac('0x20')](respondWithFilteredResult(_0x487b02,_0x57d9f1))[_0x95ac('0x3f')](handleError(_0x487b02,null));};exports['show']=function(_0xe9acb6,_0x678f7e){var _0x3c5aac={'raw':![],'where':{'id':_0xe9acb6[_0x95ac('0x40')]['id']}},_0x4b9e06={};_0x4b9e06[_0x95ac('0x2b')]=_[_0x95ac('0x2d')](db[_0x95ac('0x3b')][_0x95ac('0x28')]);_0x4b9e06[_0x95ac('0x2c')]=_[_0x95ac('0x2d')](_0xe9acb6[_0x95ac('0x2c')]);_0x4b9e06['filters']=_[_0x95ac('0x2f')](_0x4b9e06[_0x95ac('0x2b')],_0x4b9e06[_0x95ac('0x2c')]);_0x3c5aac[_0x95ac('0x30')]=_['intersection'](_0x4b9e06[_0x95ac('0x2b')],qs['fields'](_0xe9acb6['query'][_0x95ac('0x31')]));_0x3c5aac[_0x95ac('0x30')]=_0x3c5aac[_0x95ac('0x30')][_0x95ac('0x41')]?_0x3c5aac[_0x95ac('0x30')]:_0x4b9e06[_0x95ac('0x2b')];if(_0xe9acb6[_0x95ac('0x2c')]['includeAll']){_0x3c5aac[_0x95ac('0x3d')]=[{'all':!![]}];}_0x3c5aac=_['merge']({},_0x3c5aac,_0xe9acb6[_0x95ac('0x3a')]);return db[_0x95ac('0x3b')][_0x95ac('0x42')](_0x3c5aac)[_0x95ac('0x20')](handleEntityNotFound(_0x678f7e,null))[_0x95ac('0x20')](respondWithResult(_0x678f7e,null))[_0x95ac('0x3f')](handleError(_0x678f7e,null));};exports[_0x95ac('0x43')]=function(_0x51a588,_0x57dea0){return db['Dynamics365Configuration'][_0x95ac('0x43')](_0x51a588[_0x95ac('0x44')],{})['then'](respondWithResult(_0x57dea0,0xc9))[_0x95ac('0x3f')](handleError(_0x57dea0,null));};exports[_0x95ac('0x45')]=function(_0x1c2778,_0x5bf1ba){if(_0x1c2778[_0x95ac('0x44')]['id']){delete _0x1c2778[_0x95ac('0x44')]['id'];}return db[_0x95ac('0x3b')][_0x95ac('0x42')]({'where':{'id':_0x1c2778[_0x95ac('0x40')]['id']}})[_0x95ac('0x20')](handleEntityNotFound(_0x5bf1ba,null))['then'](saveUpdates(_0x1c2778[_0x95ac('0x44')],null))[_0x95ac('0x20')](respondWithResult(_0x5bf1ba,null))['catch'](handleError(_0x5bf1ba,null));};exports[_0x95ac('0x21')]=function(_0x34adbd,_0x58ab8d){return db['Dynamics365Configuration'][_0x95ac('0x42')]({'where':{'id':_0x34adbd['params']['id']}})[_0x95ac('0x20')](handleEntityNotFound(_0x58ab8d,null))['then'](removeEntity(_0x58ab8d,null))[_0x95ac('0x3f')](handleError(_0x58ab8d,null));};exports['getFields']=function(_0x7b7649,_0x1a6461,_0x13a48a){var _0x3dc217={};var _0x1ee464={};var _0x557293;var _0x11b75f;return db[_0x95ac('0x3b')]['findOne']({'where':{'id':_0x7b7649[_0x95ac('0x40')]['id']}})[_0x95ac('0x20')](handleEntityNotFound(_0x1a6461,null))['then'](function(_0x45b137){if(_0x45b137){_0x557293=_0x45b137;_0x1ee464[_0x95ac('0x2b')]=_[_0x95ac('0x2d')](db[_0x95ac('0x46')][_0x95ac('0x28')]);_0x1ee464['query']=_[_0x95ac('0x2d')](_0x7b7649[_0x95ac('0x2c')]);_0x1ee464[_0x95ac('0x2e')]=_['intersection'](_0x1ee464[_0x95ac('0x2b')],_0x1ee464[_0x95ac('0x2c')]);_0x3dc217[_0x95ac('0x30')]=_[_0x95ac('0x2f')](_0x1ee464[_0x95ac('0x2b')],qs[_0x95ac('0x31')](_0x7b7649['query'][_0x95ac('0x31')]));_0x3dc217[_0x95ac('0x30')]=_0x3dc217['attributes'][_0x95ac('0x41')]?_0x3dc217['attributes']:_0x1ee464[_0x95ac('0x2b')];_0x3dc217['order']=qs[_0x95ac('0x35')](_0x7b7649[_0x95ac('0x2c')][_0x95ac('0x35')]);_0x3dc217[_0x95ac('0x36')]=qs['filters'](_[_0x95ac('0x47')](_0x7b7649['query'],_0x1ee464[_0x95ac('0x2e')]));if(_0x7b7649[_0x95ac('0x2c')]['filter']){_0x3dc217[_0x95ac('0x36')]=_[_0x95ac('0x38')](_0x3dc217['where'],{'$or':_[_0x95ac('0x27')](_0x3dc217[_0x95ac('0x30')],function(_0x1b609a){var _0x22ba1a={};_0x22ba1a[_0x1b609a]={'$like':'%'+_0x7b7649[_0x95ac('0x2c')][_0x95ac('0x37')]+'%'};return _0x22ba1a;})});}_0x3dc217=_[_0x95ac('0x38')]({},_0x3dc217,_0x7b7649[_0x95ac('0x3a')]);return _0x557293['getFields'](_0x3dc217);}})[_0x95ac('0x20')](function(_0x25066a){if(_0x25066a){_0x11b75f=_0x25066a['length'];if(!_0x7b7649['query'][_0x95ac('0x32')](_0x95ac('0x33'))){_0x3dc217[_0x95ac('0x19')]=qs[_0x95ac('0x19')](_0x7b7649[_0x95ac('0x2c')][_0x95ac('0x19')]);_0x3dc217[_0x95ac('0x18')]=qs[_0x95ac('0x18')](_0x7b7649[_0x95ac('0x2c')]['offset']);}return _0x557293['getFields'](_0x3dc217);}})[_0x95ac('0x20')](function(_0x1d498a){if(_0x1d498a){return _0x1d498a?{'count':_0x11b75f,'rows':_0x1d498a}:null;}})['then'](respondWithResult(_0x1a6461,null))['catch'](handleError(_0x1a6461,null));};exports['getSubjects']=function(_0xe31584,_0x1099c9,_0x4c4ca9){var _0x5c2175={};var _0x46e1bc={};var _0x1f6bf1;var _0x5dfdc3;return db[_0x95ac('0x3b')][_0x95ac('0x48')]({'where':{'id':_0xe31584[_0x95ac('0x40')]['id']}})[_0x95ac('0x20')](handleEntityNotFound(_0x1099c9,null))[_0x95ac('0x20')](function(_0x2d3425){if(_0x2d3425){_0x1f6bf1=_0x2d3425;_0x46e1bc[_0x95ac('0x2b')]=_['keys'](db[_0x95ac('0x46')][_0x95ac('0x28')]);_0x46e1bc[_0x95ac('0x2c')]=_[_0x95ac('0x2d')](_0xe31584[_0x95ac('0x2c')]);_0x46e1bc[_0x95ac('0x2e')]=_[_0x95ac('0x2f')](_0x46e1bc[_0x95ac('0x2b')],_0x46e1bc['query']);_0x5c2175[_0x95ac('0x30')]=_[_0x95ac('0x2f')](_0x46e1bc[_0x95ac('0x2b')],qs['fields'](_0xe31584[_0x95ac('0x2c')][_0x95ac('0x31')]));_0x5c2175[_0x95ac('0x30')]=_0x5c2175[_0x95ac('0x30')]['length']?_0x5c2175['attributes']:_0x46e1bc[_0x95ac('0x2b')];_0x5c2175['order']=qs[_0x95ac('0x35')](_0xe31584[_0x95ac('0x2c')]['sort']);_0x5c2175[_0x95ac('0x36')]=qs[_0x95ac('0x2e')](_[_0x95ac('0x47')](_0xe31584[_0x95ac('0x2c')],_0x46e1bc[_0x95ac('0x2e')]));if(_0xe31584[_0x95ac('0x2c')][_0x95ac('0x37')]){_0x5c2175[_0x95ac('0x36')]=_[_0x95ac('0x38')](_0x5c2175['where'],{'$or':_['map'](_0x5c2175['attributes'],function(_0x20ff16){var _0x2dde02={};_0x2dde02[_0x20ff16]={'$like':'%'+_0xe31584[_0x95ac('0x2c')][_0x95ac('0x37')]+'%'};return _0x2dde02;})});}_0x5c2175=_[_0x95ac('0x38')]({},_0x5c2175,_0xe31584[_0x95ac('0x3a')]);return _0x1f6bf1[_0x95ac('0x49')](_0x5c2175);}})[_0x95ac('0x20')](function(_0x253489){if(_0x253489){_0x5dfdc3=_0x253489[_0x95ac('0x41')];if(!_0xe31584['query']['hasOwnProperty'](_0x95ac('0x33'))){_0x5c2175['limit']=qs[_0x95ac('0x19')](_0xe31584[_0x95ac('0x2c')][_0x95ac('0x19')]);_0x5c2175[_0x95ac('0x18')]=qs['offset'](_0xe31584[_0x95ac('0x2c')]['offset']);}return _0x1f6bf1[_0x95ac('0x49')](_0x5c2175);}})[_0x95ac('0x20')](function(_0x4cafc7){if(_0x4cafc7){return _0x4cafc7?{'count':_0x5dfdc3,'rows':_0x4cafc7}:null;}})[_0x95ac('0x20')](respondWithResult(_0x1099c9,null))[_0x95ac('0x3f')](handleError(_0x1099c9,null));};exports['getDescriptions']=function(_0x35fac9,_0x50fb11,_0x3989a3){var _0xa4d2ff={};var _0xc677c3={};var _0x5537f2;var _0x5de58c;return db[_0x95ac('0x3b')][_0x95ac('0x48')]({'where':{'id':_0x35fac9[_0x95ac('0x40')]['id']}})[_0x95ac('0x20')](handleEntityNotFound(_0x50fb11,null))['then'](function(_0x3aa04a){if(_0x3aa04a){_0x5537f2=_0x3aa04a;_0xc677c3[_0x95ac('0x2b')]=_[_0x95ac('0x2d')](db[_0x95ac('0x46')][_0x95ac('0x28')]);_0xc677c3[_0x95ac('0x2c')]=_[_0x95ac('0x2d')](_0x35fac9[_0x95ac('0x2c')]);_0xc677c3[_0x95ac('0x2e')]=_[_0x95ac('0x2f')](_0xc677c3['model'],_0xc677c3[_0x95ac('0x2c')]);_0xa4d2ff['attributes']=_[_0x95ac('0x2f')](_0xc677c3[_0x95ac('0x2b')],qs['fields'](_0x35fac9['query'][_0x95ac('0x31')]));_0xa4d2ff['attributes']=_0xa4d2ff[_0x95ac('0x30')][_0x95ac('0x41')]?_0xa4d2ff[_0x95ac('0x30')]:_0xc677c3[_0x95ac('0x2b')];_0xa4d2ff[_0x95ac('0x34')]=qs[_0x95ac('0x35')](_0x35fac9['query'][_0x95ac('0x35')]);_0xa4d2ff['where']=qs[_0x95ac('0x2e')](_[_0x95ac('0x47')](_0x35fac9[_0x95ac('0x2c')],_0xc677c3[_0x95ac('0x2e')]));if(_0x35fac9[_0x95ac('0x2c')][_0x95ac('0x37')]){_0xa4d2ff[_0x95ac('0x36')]=_[_0x95ac('0x38')](_0xa4d2ff[_0x95ac('0x36')],{'$or':_[_0x95ac('0x27')](_0xa4d2ff[_0x95ac('0x30')],function(_0x21dc97){var _0x47ddf9={};_0x47ddf9[_0x21dc97]={'$like':'%'+_0x35fac9[_0x95ac('0x2c')][_0x95ac('0x37')]+'%'};return _0x47ddf9;})});}_0xa4d2ff=_[_0x95ac('0x38')]({},_0xa4d2ff,_0x35fac9[_0x95ac('0x3a')]);return _0x5537f2[_0x95ac('0x4a')](_0xa4d2ff);}})[_0x95ac('0x20')](function(_0x2abb4a){if(_0x2abb4a){_0x5de58c=_0x2abb4a[_0x95ac('0x41')];if(!_0x35fac9[_0x95ac('0x2c')][_0x95ac('0x32')](_0x95ac('0x33'))){_0xa4d2ff[_0x95ac('0x19')]=qs[_0x95ac('0x19')](_0x35fac9[_0x95ac('0x2c')]['limit']);_0xa4d2ff[_0x95ac('0x18')]=qs[_0x95ac('0x18')](_0x35fac9[_0x95ac('0x2c')][_0x95ac('0x18')]);}return _0x5537f2['getDescriptions'](_0xa4d2ff);}})['then'](function(_0x5e01bc){if(_0x5e01bc){return _0x5e01bc?{'count':_0x5de58c,'rows':_0x5e01bc}:null;}})[_0x95ac('0x20')](respondWithResult(_0x50fb11,null))['catch'](handleError(_0x50fb11,null));};
\ No newline at end of file
index 1a55db8..5486bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','int_dynamics365_configurations','lodash'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xe14d,0x1ee));var _0xde14=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xe14d[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var logger=require(_0xde14('0x2'))(_0xde14('0x3'));var moment=require('moment');var BPromise=require(_0xde14('0x4'));var rp=require(_0xde14('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xde14('0x6'));var config=require(_0xde14('0x7'));var attributes=require(_0xde14('0x8'));module[_0xde14('0x9')]=function(_0x461af3,_0xba1514){return _0x461af3['define']('Dynamics365Configuration',attributes,{'tableName':_0xde14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf109=['Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define'];(function(_0x128847,_0x3dc1f8){var _0x1f9ff2=function(_0xe82b52){while(--_0xe82b52){_0x128847['push'](_0x128847['shift']());}};_0x1f9ff2(++_0x3dc1f8);}(_0xf109,0xce));var _0x9f10=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xf109[_0x42bdad];return _0x122626;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a59da43..d046bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa575=['lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Dynamics365Configuration,\x20%s,\x20%s','message','info','result'];(function(_0xf1e0b1,_0x531f27){var _0x23b714=function(_0x891431){while(--_0x891431){_0xf1e0b1['push'](_0xf1e0b1['shift']());}};_0x23b714(++_0x531f27);}(_0xa575,0x114));var _0x5a57=function(_0x4a3034,_0x4f32aa){_0x4a3034=_0x4a3034-0x0;var _0x536786=_0xa575[_0x4a3034];return _0x536786;};'use strict';var _=require(_0x5a57('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5a57('0x1'));var rs=require(_0x5a57('0x2'));var fs=require('fs');var Redis=require(_0x5a57('0x3'));var db=require(_0x5a57('0x4'))['db'];var utils=require(_0x5a57('0x5'));var logger=require(_0x5a57('0x6'))(_0x5a57('0x7'));var config=require(_0x5a57('0x8'));var jayson=require(_0x5a57('0x9'));var client=jayson[_0x5a57('0xa')][_0x5a57('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x41ceb9,_0x467441,_0x4e2386){return new BPromise(function(_0x2234fb,_0x4a6eb0){return client[_0x5a57('0xc')](_0x41ceb9,_0x4e2386)[_0x5a57('0xd')](function(_0x4e8477){logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x467441,'request\x20sent');logger[_0x5a57('0xe')](_0x5a57('0xf'),_0x467441,_0x5a57('0x10'),JSON[_0x5a57('0x11')](_0x4e8477));if(_0x4e8477['error']){if(_0x4e8477[_0x5a57('0x12')]['code']===0x1f4){logger[_0x5a57('0x12')](_0x5a57('0x13'),_0x467441,_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);return _0x4a6eb0(_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);}logger[_0x5a57('0x12')](_0x5a57('0x13'),_0x467441,_0x4e8477['error'][_0x5a57('0x14')]);return _0x2234fb(_0x4e8477[_0x5a57('0x12')][_0x5a57('0x14')]);}else{logger[_0x5a57('0x15')](_0x5a57('0x13'),_0x467441,'request\x20sent');_0x2234fb(_0x4e8477[_0x5a57('0x16')][_0x5a57('0x14')]);}})['catch'](function(_0x56102a){logger[_0x5a57('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x467441,_0x56102a);_0x4a6eb0(_0x56102a);});});}
\ No newline at end of file
+var _0x604c=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','lodash','util','moment'];(function(_0x3619d4,_0x21475b){var _0x38d543=function(_0x1d390d){while(--_0x1d390d){_0x3619d4['push'](_0x3619d4['shift']());}};_0x38d543(++_0x21475b);}(_0x604c,0x1cb));var _0xc604=function(_0x18071b,_0x49f0ad){_0x18071b=_0x18071b-0x0;var _0x996c1b=_0x604c[_0x18071b];return _0x996c1b;};'use strict';var _=require(_0xc604('0x0'));var util=require(_0xc604('0x1'));var moment=require(_0xc604('0x2'));var BPromise=require(_0xc604('0x3'));var rs=require(_0xc604('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc604('0x5'))['db'];var utils=require(_0xc604('0x6'));var logger=require(_0xc604('0x7'))(_0xc604('0x8'));var config=require('../../config/environment');var jayson=require(_0xc604('0x9'));var client=jayson[_0xc604('0xa')][_0xc604('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15c9d5,_0x3fbdee,_0x772466){return new BPromise(function(_0x3a755f,_0x2f8342){return client[_0xc604('0xc')](_0x15c9d5,_0x772466)[_0xc604('0xd')](function(_0xc46502){logger[_0xc604('0xe')](_0xc604('0xf'),_0x3fbdee,_0xc604('0x10'));logger[_0xc604('0x11')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x3fbdee,_0xc604('0x10'),JSON['stringify'](_0xc46502));if(_0xc46502[_0xc604('0x12')]){if(_0xc46502[_0xc604('0x12')]['code']===0x1f4){logger['error'](_0xc604('0xf'),_0x3fbdee,_0xc46502[_0xc604('0x12')][_0xc604('0x13')]);return _0x2f8342(_0xc46502[_0xc604('0x12')][_0xc604('0x13')]);}logger[_0xc604('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3fbdee,_0xc46502[_0xc604('0x12')][_0xc604('0x13')]);return _0x3a755f(_0xc46502[_0xc604('0x12')][_0xc604('0x13')]);}else{logger[_0xc604('0xe')](_0xc604('0xf'),_0x3fbdee,_0xc604('0x10'));_0x3a755f(_0xc46502[_0xc604('0x14')][_0xc604('0x13')]);}})[_0xc604('0x15')](function(_0x358109){logger['error'](_0xc604('0xf'),_0x3fbdee,_0x358109);_0x2f8342(_0x358109);});});}
\ No newline at end of file
index ba86661..f4deb90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb1a=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x18ed67,_0x51e154){var _0x253b35=function(_0x598c59){while(--_0x598c59){_0x18ed67['push'](_0x18ed67['shift']());}};_0x253b35(++_0x51e154);}(_0xfb1a,0xb6));var _0xafb1=function(_0x214711,_0x2a8642){_0x214711=_0x214711-0x0;var _0x1ca7c8=_0xfb1a[_0x214711];return _0x1ca7c8;};'use strict';var multer=require(_0xafb1('0x0'));var util=require('util');var path=require(_0xafb1('0x1'));var timeout=require(_0xafb1('0x2'));var express=require(_0xafb1('0x3'));var router=express[_0xafb1('0x4')]();var fs_extra=require(_0xafb1('0x5'));var auth=require(_0xafb1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xafb1('0x7'));var controller=require(_0xafb1('0x8'));router[_0xafb1('0x9')]('/',auth[_0xafb1('0xa')](),controller[_0xafb1('0xb')]);router[_0xafb1('0x9')](_0xafb1('0xc'),auth['isAuthenticated'](),controller[_0xafb1('0xd')]);router[_0xafb1('0xe')]('/',auth[_0xafb1('0xa')](),controller[_0xafb1('0xf')]);router[_0xafb1('0x10')](_0xafb1('0xc'),auth['isAuthenticated'](),controller[_0xafb1('0x11')]);router[_0xafb1('0x12')](_0xafb1('0xc'),auth[_0xafb1('0xa')](),controller[_0xafb1('0x13')]);module[_0xafb1('0x14')]=router;
\ No newline at end of file
+var _0x8257=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8257,0x1ad));var _0x7825=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x8257[_0x20cb20];return _0x2fcf4b;};'use strict';var multer=require(_0x7825('0x0'));var util=require(_0x7825('0x1'));var path=require('path');var timeout=require(_0x7825('0x2'));var express=require(_0x7825('0x3'));var router=express['Router']();var fs_extra=require(_0x7825('0x4'));var auth=require(_0x7825('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7825('0x6'));var controller=require(_0x7825('0x7'));router[_0x7825('0x8')]('/',auth[_0x7825('0x9')](),controller[_0x7825('0xa')]);router[_0x7825('0x8')](_0x7825('0xb'),auth['isAuthenticated'](),controller[_0x7825('0xc')]);router['post']('/',auth[_0x7825('0x9')](),controller['create']);router['put'](_0x7825('0xb'),auth[_0x7825('0x9')](),controller['update']);router['delete'](_0x7825('0xb'),auth[_0x7825('0x9')](),controller[_0x7825('0xd')]);module[_0x7825('0xe')]=router;
\ No newline at end of file
index 22bb49b..dd5a23f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0934=['STRING','variable','BOOLEAN','exports','ENUM','string','customVariable','keyValue','picklist'];(function(_0xb82218,_0x58f808){var _0x2aed3f=function(_0x4ede57){while(--_0x4ede57){_0xb82218['push'](_0xb82218['shift']());}};_0x2aed3f(++_0x58f808);}(_0x0934,0x1c5));var _0x4093=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x0934[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require('sequelize');module[_0x4093('0x0')]={'type':{'type':Sequelize[_0x4093('0x1')](_0x4093('0x2'),'variable',_0x4093('0x3'),_0x4093('0x4'),_0x4093('0x5')),'defaultValue':_0x4093('0x2')},'content':{'type':Sequelize[_0x4093('0x6')]},'key':{'type':Sequelize[_0x4093('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x4093('0x7'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4093('0x6')]},'nameField':{'type':Sequelize[_0x4093('0x6')]},'customField':{'type':Sequelize[_0x4093('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4093('0x6')]}};
\ No newline at end of file
+var _0x0269=['variable','ENUM','string','customVariable','picklist','STRING'];(function(_0x14a561,_0x517c66){var _0x391784=function(_0x9e4e56){while(--_0x9e4e56){_0x14a561['push'](_0x14a561['shift']());}};_0x391784(++_0x517c66);}(_0x0269,0x14b));var _0x9026=function(_0x425538,_0x18afff){_0x425538=_0x425538-0x0;var _0x4695c2=_0x0269[_0x425538];return _0x4695c2;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x9026('0x0')](_0x9026('0x1'),'variable',_0x9026('0x2'),'keyValue',_0x9026('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9026('0x4')]},'key':{'type':Sequelize[_0x9026('0x4')]},'keyType':{'type':Sequelize[_0x9026('0x0')](_0x9026('0x1'),_0x9026('0x5'),_0x9026('0x2'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9026('0x4')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9026('0x4')]}};
\ No newline at end of file
index c9b6ba5..a2e3aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b87=['find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy','stack','name','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','Dynamics365Field','includeAll','include','findAll','catch','show','create','body','update','params'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x5b87,0x173));var _0x75b8=function(_0x405de0,_0x57be04){_0x405de0=_0x405de0-0x0;var _0x48e421=_0x5b87[_0x405de0];return _0x48e421;};'use strict';var emlformat=require(_0x75b8('0x0'));var rimraf=require(_0x75b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x75b8('0x2'));var rp=require(_0x75b8('0x3'));var moment=require(_0x75b8('0x4'));var BPromise=require(_0x75b8('0x5'));var Mustache=require('mustache');var util=require(_0x75b8('0x6'));var path=require(_0x75b8('0x7'));var sox=require(_0x75b8('0x8'));var csv=require('to-csv');var ejs=require(_0x75b8('0x9'));var fs=require('fs');var fs_extra=require(_0x75b8('0xa'));var _=require(_0x75b8('0xb'));var squel=require(_0x75b8('0xc'));var crypto=require(_0x75b8('0xd'));var jsforce=require(_0x75b8('0xe'));var deskjs=require(_0x75b8('0xf'));var toCsv=require('to-csv');var querystring=require(_0x75b8('0x10'));var Papa=require(_0x75b8('0x11'));var Redis=require('ioredis');var authService=require(_0x75b8('0x12'));var qs=require(_0x75b8('0x13'));var as=require(_0x75b8('0x14'));var hardwareService=require(_0x75b8('0x15'));var logger=require(_0x75b8('0x16'))('api');var utils=require(_0x75b8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x75b8('0x18'));var db=require(_0x75b8('0x19'))['db'];function respondWithStatusCode(_0x1953a8,_0x1ff6aa){_0x1ff6aa=_0x1ff6aa||0xcc;return function(_0x3e344d){if(_0x3e344d){return _0x1953a8[_0x75b8('0x1a')](_0x1ff6aa);}return _0x1953a8[_0x75b8('0x1b')](_0x1ff6aa)[_0x75b8('0x1c')]();};}function respondWithResult(_0x44452f,_0x427adb){_0x427adb=_0x427adb||0xc8;return function(_0x253015){if(_0x253015){return _0x44452f[_0x75b8('0x1b')](_0x427adb)['json'](_0x253015);}};}function respondWithFilteredResult(_0x4cc92d,_0x5cf82e){return function(_0x3173d0){if(_0x3173d0){var _0x75033b=typeof _0x5cf82e['offset']===_0x75b8('0x1d')&&typeof _0x5cf82e['limit']===_0x75b8('0x1d');var _0x1b6077=_0x3173d0[_0x75b8('0x1e')];var _0x5c8a48=_0x75033b?0x0:_0x5cf82e['offset'];var _0x3acef4=_0x75033b?_0x3173d0[_0x75b8('0x1e')]:_0x5cf82e[_0x75b8('0x1f')]+_0x5cf82e[_0x75b8('0x20')];var _0x4d17cb;if(_0x3acef4>=_0x1b6077){_0x3acef4=_0x1b6077;_0x4d17cb=0xc8;}else{_0x4d17cb=0xce;}_0x4cc92d[_0x75b8('0x1b')](_0x4d17cb);return _0x4cc92d[_0x75b8('0x21')](_0x75b8('0x22'),_0x5c8a48+'-'+_0x3acef4+'/'+_0x1b6077)[_0x75b8('0x23')](_0x3173d0);}return null;};}function patchUpdates(_0x4743ea){return function(_0x316133){try{jsonpatch[_0x75b8('0x24')](_0x316133,_0x4743ea,!![]);}catch(_0x46769d){return BPromise[_0x75b8('0x25')](_0x46769d);}return _0x316133[_0x75b8('0x26')]();};}function saveUpdates(_0x375fca,_0x4272bb){return function(_0x39989f){if(_0x39989f){return _0x39989f['update'](_0x375fca)[_0x75b8('0x27')](function(_0xf29ffc){return _0xf29ffc;});}return null;};}function removeEntity(_0x4a0f39,_0x107177){return function(_0x147990){if(_0x147990){return _0x147990[_0x75b8('0x28')]()[_0x75b8('0x27')](function(){_0x4a0f39[_0x75b8('0x1b')](0xcc)[_0x75b8('0x1c')]();});}};}function handleEntityNotFound(_0x3c6c04,_0xe788a8){return function(_0x3b70e5){if(!_0x3b70e5){_0x3c6c04['sendStatus'](0x194);}return _0x3b70e5;};}function handleError(_0x1b7249,_0x375d60){_0x375d60=_0x375d60||0x1f4;return function(_0x3b4852){logger['error'](_0x3b4852[_0x75b8('0x29')]);if(_0x3b4852[_0x75b8('0x2a')]){delete _0x3b4852[_0x75b8('0x2a')];}_0x1b7249[_0x75b8('0x1b')](_0x375d60)['send'](_0x3b4852);};}exports['index']=function(_0x1ee4a4,_0xebffc7){var _0x5dfb5d={},_0x20f754={},_0x2cd9b7={'count':0x0,'rows':[]};var _0x598229=_[_0x75b8('0x2b')](db['Dynamics365Field']['rawAttributes'],function(_0x521dcc){return{'name':_0x521dcc['fieldName'],'type':_0x521dcc[_0x75b8('0x2c')][_0x75b8('0x2d')]};});_0x20f754[_0x75b8('0x2e')]=_[_0x75b8('0x2b')](_0x598229,_0x75b8('0x2a'));_0x20f754[_0x75b8('0x2f')]=_[_0x75b8('0x30')](_0x1ee4a4[_0x75b8('0x2f')]);_0x20f754[_0x75b8('0x31')]=_[_0x75b8('0x32')](_0x20f754[_0x75b8('0x2e')],_0x20f754[_0x75b8('0x2f')]);_0x5dfb5d['attributes']=_[_0x75b8('0x32')](_0x20f754[_0x75b8('0x2e')],qs[_0x75b8('0x33')](_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x33')]));_0x5dfb5d[_0x75b8('0x34')]=_0x5dfb5d[_0x75b8('0x34')][_0x75b8('0x35')]?_0x5dfb5d['attributes']:_0x20f754['model'];if(!_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x36')](_0x75b8('0x37'))){_0x5dfb5d[_0x75b8('0x20')]=qs['limit'](_0x1ee4a4['query'][_0x75b8('0x20')]);_0x5dfb5d[_0x75b8('0x1f')]=qs[_0x75b8('0x1f')](_0x1ee4a4['query'][_0x75b8('0x1f')]);}_0x5dfb5d[_0x75b8('0x38')]=qs[_0x75b8('0x39')](_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x39')]);_0x5dfb5d[_0x75b8('0x3a')]=qs[_0x75b8('0x31')](_[_0x75b8('0x3b')](_0x1ee4a4[_0x75b8('0x2f')],_0x20f754[_0x75b8('0x31')]),_0x598229);if(_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x3c')]){_0x5dfb5d[_0x75b8('0x3a')]=_[_0x75b8('0x3d')](_0x5dfb5d['where'],{'$or':_[_0x75b8('0x2b')](_0x598229,function(_0x4e366c){if(_0x4e366c[_0x75b8('0x2c')]!=='VIRTUAL'){var _0x5739fb={};_0x5739fb[_0x4e366c[_0x75b8('0x2a')]]={'$like':'%'+_0x1ee4a4[_0x75b8('0x2f')]['filter']+'%'};return _0x5739fb;}})});}_0x5dfb5d=_[_0x75b8('0x3d')]({},_0x5dfb5d,_0x1ee4a4[_0x75b8('0x3e')]);var _0xc9956={'where':_0x5dfb5d['where']};return db[_0x75b8('0x3f')]['count'](_0xc9956)[_0x75b8('0x27')](function(_0x4c14e0){_0x2cd9b7[_0x75b8('0x1e')]=_0x4c14e0;if(_0x1ee4a4[_0x75b8('0x2f')][_0x75b8('0x40')]){_0x5dfb5d[_0x75b8('0x41')]=[{'all':!![]}];}return db['Dynamics365Field'][_0x75b8('0x42')](_0x5dfb5d);})[_0x75b8('0x27')](function(_0x2a9969){_0x2cd9b7['rows']=_0x2a9969;return _0x2cd9b7;})[_0x75b8('0x27')](respondWithFilteredResult(_0xebffc7,_0x5dfb5d))[_0x75b8('0x43')](handleError(_0xebffc7,null));};exports[_0x75b8('0x44')]=function(_0x43c7bb,_0x402a64){var _0x4a6312={'raw':!![],'where':{'id':_0x43c7bb['params']['id']}},_0x1ff805={};_0x1ff805[_0x75b8('0x2e')]=_['keys'](db['Dynamics365Field']['rawAttributes']);_0x1ff805['query']=_[_0x75b8('0x30')](_0x43c7bb[_0x75b8('0x2f')]);_0x1ff805['filters']=_[_0x75b8('0x32')](_0x1ff805[_0x75b8('0x2e')],_0x1ff805[_0x75b8('0x2f')]);_0x4a6312[_0x75b8('0x34')]=_[_0x75b8('0x32')](_0x1ff805['model'],qs[_0x75b8('0x33')](_0x43c7bb[_0x75b8('0x2f')][_0x75b8('0x33')]));_0x4a6312['attributes']=_0x4a6312[_0x75b8('0x34')][_0x75b8('0x35')]?_0x4a6312[_0x75b8('0x34')]:_0x1ff805['model'];if(_0x43c7bb['query'][_0x75b8('0x40')]){_0x4a6312[_0x75b8('0x41')]=[{'all':!![]}];}_0x4a6312=_[_0x75b8('0x3d')]({},_0x4a6312,_0x43c7bb[_0x75b8('0x3e')]);return db[_0x75b8('0x3f')]['find'](_0x4a6312)[_0x75b8('0x27')](handleEntityNotFound(_0x402a64,null))[_0x75b8('0x27')](respondWithResult(_0x402a64,null))[_0x75b8('0x43')](handleError(_0x402a64,null));};exports[_0x75b8('0x45')]=function(_0x53d9d4,_0x136ebf){return db[_0x75b8('0x3f')][_0x75b8('0x45')](_0x53d9d4[_0x75b8('0x46')],{})[_0x75b8('0x27')](respondWithResult(_0x136ebf,0xc9))[_0x75b8('0x43')](handleError(_0x136ebf,null));};exports[_0x75b8('0x47')]=function(_0x46203d,_0x4b54b7){if(_0x46203d[_0x75b8('0x46')]['id']){delete _0x46203d[_0x75b8('0x46')]['id'];}return db[_0x75b8('0x3f')]['find']({'where':{'id':_0x46203d[_0x75b8('0x48')]['id']}})[_0x75b8('0x27')](handleEntityNotFound(_0x4b54b7,null))[_0x75b8('0x27')](saveUpdates(_0x46203d['body'],null))[_0x75b8('0x27')](respondWithResult(_0x4b54b7,null))[_0x75b8('0x43')](handleError(_0x4b54b7,null));};exports['destroy']=function(_0xd69328,_0xbf7fce){return db[_0x75b8('0x3f')][_0x75b8('0x49')]({'where':{'id':_0xd69328[_0x75b8('0x48')]['id']}})[_0x75b8('0x27')](handleEntityNotFound(_0xbf7fce,null))['then'](removeEntity(_0xbf7fce,null))[_0x75b8('0x43')](handleError(_0xbf7fce,null));};
\ No newline at end of file
+var _0x6239=['../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','set','Content-Range','apply','reject','update','destroy','then','end','sendStatus','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','filters','where','merge','VIRTUAL','filter','include','findAll','catch','show','params','options','create','body','eml-format','zip-dir','request-promise','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x24942b,_0x4310e2){var _0x335545=function(_0x1dd0ea){while(--_0x1dd0ea){_0x24942b['push'](_0x24942b['shift']());}};_0x335545(++_0x4310e2);}(_0x6239,0x155));var _0x9623=function(_0x436a07,_0x134c56){_0x436a07=_0x436a07-0x0;var _0x369497=_0x6239[_0x436a07];return _0x369497;};'use strict';var emlformat=require(_0x9623('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9623('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9623('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9623('0x3'));var path=require('path');var sox=require(_0x9623('0x4'));var csv=require(_0x9623('0x5'));var ejs=require(_0x9623('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9623('0x7'));var squel=require(_0x9623('0x8'));var crypto=require(_0x9623('0x9'));var jsforce=require(_0x9623('0xa'));var deskjs=require(_0x9623('0xb'));var toCsv=require(_0x9623('0x5'));var querystring=require(_0x9623('0xc'));var Papa=require(_0x9623('0xd'));var Redis=require('ioredis');var authService=require(_0x9623('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9623('0xf'));var logger=require(_0x9623('0x10'))(_0x9623('0x11'));var utils=require(_0x9623('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x9623('0x13'));var db=require(_0x9623('0x14'))['db'];function respondWithStatusCode(_0xdc6a77,_0xb48160){_0xb48160=_0xb48160||0xcc;return function(_0x158797){if(_0x158797){return _0xdc6a77['sendStatus'](_0xb48160);}return _0xdc6a77[_0x9623('0x15')](_0xb48160)['end']();};}function respondWithResult(_0x4a4595,_0x43eb64){_0x43eb64=_0x43eb64||0xc8;return function(_0x531bf0){if(_0x531bf0){return _0x4a4595[_0x9623('0x15')](_0x43eb64)[_0x9623('0x16')](_0x531bf0);}};}function respondWithFilteredResult(_0x510b2c,_0x396ea5){return function(_0x2d1a1f){if(_0x2d1a1f){var _0x12f0e6=typeof _0x396ea5[_0x9623('0x17')]===_0x9623('0x18')&&typeof _0x396ea5['limit']===_0x9623('0x18');var _0x153afd=_0x2d1a1f['count'];var _0xcef011=_0x12f0e6?0x0:_0x396ea5[_0x9623('0x17')];var _0x200867=_0x12f0e6?_0x2d1a1f[_0x9623('0x19')]:_0x396ea5[_0x9623('0x17')]+_0x396ea5['limit'];var _0x2a5a65;if(_0x200867>=_0x153afd){_0x200867=_0x153afd;_0x2a5a65=0xc8;}else{_0x2a5a65=0xce;}_0x510b2c[_0x9623('0x15')](_0x2a5a65);return _0x510b2c[_0x9623('0x1a')](_0x9623('0x1b'),_0xcef011+'-'+_0x200867+'/'+_0x153afd)[_0x9623('0x16')](_0x2d1a1f);}return null;};}function patchUpdates(_0xfa25f3){return function(_0x58f5af){try{jsonpatch[_0x9623('0x1c')](_0x58f5af,_0xfa25f3,!![]);}catch(_0x54d721){return BPromise[_0x9623('0x1d')](_0x54d721);}return _0x58f5af['save']();};}function saveUpdates(_0x328fee,_0x1b45b1){return function(_0x54169a){if(_0x54169a){return _0x54169a[_0x9623('0x1e')](_0x328fee)['then'](function(_0x500713){return _0x500713;});}return null;};}function removeEntity(_0x1a3e72,_0x5adb76){return function(_0x53710e){if(_0x53710e){return _0x53710e[_0x9623('0x1f')]()[_0x9623('0x20')](function(){_0x1a3e72[_0x9623('0x15')](0xcc)[_0x9623('0x21')]();});}};}function handleEntityNotFound(_0x34610e,_0x1c103e){return function(_0x4601f){if(!_0x4601f){_0x34610e[_0x9623('0x22')](0x194);}return _0x4601f;};}function handleError(_0x20578a,_0x552fcf){_0x552fcf=_0x552fcf||0x1f4;return function(_0x496e60){logger[_0x9623('0x23')](_0x496e60[_0x9623('0x24')]);if(_0x496e60[_0x9623('0x25')]){delete _0x496e60[_0x9623('0x25')];}_0x20578a['status'](_0x552fcf)[_0x9623('0x26')](_0x496e60);};}exports[_0x9623('0x27')]=function(_0x414fda,_0x59f6c3){var _0x2460f9={},_0x396595={},_0x529ef7={'count':0x0,'rows':[]};var _0x25df1d=_[_0x9623('0x28')](db[_0x9623('0x29')][_0x9623('0x2a')],function(_0x2e9ab2){return{'name':_0x2e9ab2[_0x9623('0x2b')],'type':_0x2e9ab2[_0x9623('0x2c')][_0x9623('0x2d')]};});_0x396595['model']=_[_0x9623('0x28')](_0x25df1d,_0x9623('0x25'));_0x396595[_0x9623('0x2e')]=_[_0x9623('0x2f')](_0x414fda[_0x9623('0x2e')]);_0x396595['filters']=_[_0x9623('0x30')](_0x396595['model'],_0x396595['query']);_0x2460f9['attributes']=_[_0x9623('0x30')](_0x396595[_0x9623('0x31')],qs['fields'](_0x414fda[_0x9623('0x2e')][_0x9623('0x32')]));_0x2460f9[_0x9623('0x33')]=_0x2460f9[_0x9623('0x33')][_0x9623('0x34')]?_0x2460f9[_0x9623('0x33')]:_0x396595[_0x9623('0x31')];if(!_0x414fda[_0x9623('0x2e')][_0x9623('0x35')](_0x9623('0x36'))){_0x2460f9[_0x9623('0x37')]=qs[_0x9623('0x37')](_0x414fda['query'][_0x9623('0x37')]);_0x2460f9[_0x9623('0x17')]=qs[_0x9623('0x17')](_0x414fda[_0x9623('0x2e')]['offset']);}_0x2460f9[_0x9623('0x38')]=qs[_0x9623('0x39')](_0x414fda[_0x9623('0x2e')][_0x9623('0x39')]);_0x2460f9['where']=qs[_0x9623('0x3a')](_['pick'](_0x414fda[_0x9623('0x2e')],_0x396595['filters']),_0x25df1d);if(_0x414fda[_0x9623('0x2e')]['filter']){_0x2460f9[_0x9623('0x3b')]=_[_0x9623('0x3c')](_0x2460f9[_0x9623('0x3b')],{'$or':_[_0x9623('0x28')](_0x25df1d,function(_0x192f38){if(_0x192f38[_0x9623('0x2c')]!==_0x9623('0x3d')){var _0x1f8057={};_0x1f8057[_0x192f38['name']]={'$like':'%'+_0x414fda[_0x9623('0x2e')][_0x9623('0x3e')]+'%'};return _0x1f8057;}})});}_0x2460f9=_[_0x9623('0x3c')]({},_0x2460f9,_0x414fda['options']);var _0x57813d={'where':_0x2460f9[_0x9623('0x3b')]};return db[_0x9623('0x29')]['count'](_0x57813d)[_0x9623('0x20')](function(_0x41f46f){_0x529ef7['count']=_0x41f46f;if(_0x414fda[_0x9623('0x2e')]['includeAll']){_0x2460f9[_0x9623('0x3f')]=[{'all':!![]}];}return db[_0x9623('0x29')][_0x9623('0x40')](_0x2460f9);})['then'](function(_0x219343){_0x529ef7['rows']=_0x219343;return _0x529ef7;})['then'](respondWithFilteredResult(_0x59f6c3,_0x2460f9))[_0x9623('0x41')](handleError(_0x59f6c3,null));};exports[_0x9623('0x42')]=function(_0x4a3b46,_0x146460){var _0x2c64a6={'raw':!![],'where':{'id':_0x4a3b46[_0x9623('0x43')]['id']}},_0xe77aea={};_0xe77aea[_0x9623('0x31')]=_[_0x9623('0x2f')](db['Dynamics365Field']['rawAttributes']);_0xe77aea['query']=_[_0x9623('0x2f')](_0x4a3b46[_0x9623('0x2e')]);_0xe77aea[_0x9623('0x3a')]=_['intersection'](_0xe77aea[_0x9623('0x31')],_0xe77aea['query']);_0x2c64a6[_0x9623('0x33')]=_[_0x9623('0x30')](_0xe77aea[_0x9623('0x31')],qs[_0x9623('0x32')](_0x4a3b46['query'][_0x9623('0x32')]));_0x2c64a6[_0x9623('0x33')]=_0x2c64a6['attributes'][_0x9623('0x34')]?_0x2c64a6[_0x9623('0x33')]:_0xe77aea[_0x9623('0x31')];if(_0x4a3b46[_0x9623('0x2e')]['includeAll']){_0x2c64a6[_0x9623('0x3f')]=[{'all':!![]}];}_0x2c64a6=_['merge']({},_0x2c64a6,_0x4a3b46[_0x9623('0x44')]);return db[_0x9623('0x29')]['find'](_0x2c64a6)[_0x9623('0x20')](handleEntityNotFound(_0x146460,null))[_0x9623('0x20')](respondWithResult(_0x146460,null))['catch'](handleError(_0x146460,null));};exports[_0x9623('0x45')]=function(_0x1496ed,_0x335ca0){return db[_0x9623('0x29')][_0x9623('0x45')](_0x1496ed[_0x9623('0x46')],{})[_0x9623('0x20')](respondWithResult(_0x335ca0,0xc9))[_0x9623('0x41')](handleError(_0x335ca0,null));};exports[_0x9623('0x1e')]=function(_0x2b5573,_0x2985c9){if(_0x2b5573[_0x9623('0x46')]['id']){delete _0x2b5573['body']['id'];}return db['Dynamics365Field']['find']({'where':{'id':_0x2b5573[_0x9623('0x43')]['id']}})[_0x9623('0x20')](handleEntityNotFound(_0x2985c9,null))[_0x9623('0x20')](saveUpdates(_0x2b5573[_0x9623('0x46')],null))['then'](respondWithResult(_0x2985c9,null))[_0x9623('0x41')](handleError(_0x2985c9,null));};exports[_0x9623('0x1f')]=function(_0x173bb9,_0x274e0e){return db[_0x9623('0x29')]['find']({'where':{'id':_0x173bb9[_0x9623('0x43')]['id']}})[_0x9623('0x20')](handleEntityNotFound(_0x274e0e,null))[_0x9623('0x20')](removeEntity(_0x274e0e,null))['catch'](handleError(_0x274e0e,null));};
\ No newline at end of file
index 676aa5a..78ec63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdfe=['../../config/environment','./intDynamics365Field.attributes','define','Dynamics365Field','dynamics365_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x149a4c,_0x4d172a){var _0xf63db1=function(_0x358693){while(--_0x358693){_0x149a4c['push'](_0x149a4c['shift']());}};_0xf63db1(++_0x4d172a);}(_0xbdfe,0x172));var _0xebdf=function(_0x10a548,_0x26a534){_0x10a548=_0x10a548-0x0;var _0x2a8b3b=_0xbdfe[_0x10a548];return _0x2a8b3b;};'use strict';var _=require(_0xebdf('0x0'));var util=require(_0xebdf('0x1'));var logger=require(_0xebdf('0x2'))(_0xebdf('0x3'));var moment=require(_0xebdf('0x4'));var BPromise=require(_0xebdf('0x5'));var rp=require(_0xebdf('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xebdf('0x7'));var config=require(_0xebdf('0x8'));var attributes=require(_0xebdf('0x9'));module['exports']=function(_0x43b997,_0x519132){return _0x43b997[_0xebdf('0xa')](_0xebdf('0xb'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xebdf('0xc'),'fields':[_0xebdf('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe311=['dynamics365_unique_index','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe311,0x72));var _0x1e31=function(_0x4ed035,_0x234779){_0x4ed035=_0x4ed035-0x0;var _0x134586=_0xe311[_0x4ed035];return _0x134586;};'use strict';var _=require(_0x1e31('0x0'));var util=require(_0x1e31('0x1'));var logger=require(_0x1e31('0x2'))('api');var moment=require(_0x1e31('0x3'));var BPromise=require(_0x1e31('0x4'));var rp=require(_0x1e31('0x5'));var fs=require('fs');var path=require(_0x1e31('0x6'));var rimraf=require(_0x1e31('0x7'));var config=require(_0x1e31('0x8'));var attributes=require(_0x1e31('0x9'));module[_0x1e31('0xa')]=function(_0x2144dc,_0x2e5f0a){return _0x2144dc[_0x1e31('0xb')](_0x1e31('0xc'),attributes,{'tableName':_0x1e31('0xd'),'paranoid':![],'indexes':[{'name':_0x1e31('0xe'),'fields':['idField',_0x1e31('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5013057..fbe4abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66c2=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x54ab9a,_0x4c5838){var _0x25ef56=function(_0x3f42fb){while(--_0x3f42fb){_0x54ab9a['push'](_0x54ab9a['shift']());}};_0x25ef56(++_0x4c5838);}(_0x66c2,0xc3));var _0x266c=function(_0x3ae495,_0x41213c){_0x3ae495=_0x3ae495-0x0;var _0x2f7937=_0x66c2[_0x3ae495];return _0x2f7937;};'use strict';var _=require(_0x266c('0x0'));var util=require(_0x266c('0x1'));var moment=require(_0x266c('0x2'));var BPromise=require(_0x266c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x266c('0x4'));var db=require(_0x266c('0x5'))['db'];var utils=require(_0x266c('0x6'));var logger=require(_0x266c('0x7'))(_0x266c('0x8'));var config=require(_0x266c('0x9'));var jayson=require(_0x266c('0xa'));var client=jayson[_0x266c('0xb')][_0x266c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x226263,_0x582d43,_0x16dd2e){return new BPromise(function(_0x23c5b0,_0x550edb){return client[_0x266c('0xd')](_0x226263,_0x16dd2e)['then'](function(_0xd3106f){logger[_0x266c('0xe')](_0x266c('0xf'),_0x582d43,_0x266c('0x10'));logger[_0x266c('0x11')](_0x266c('0x12'),_0x582d43,'request\x20sent',JSON[_0x266c('0x13')](_0xd3106f));if(_0xd3106f[_0x266c('0x14')]){if(_0xd3106f['error'][_0x266c('0x15')]===0x1f4){logger[_0x266c('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0x582d43,_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);return _0x550edb(_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);}logger[_0x266c('0x14')](_0x266c('0xf'),_0x582d43,_0xd3106f[_0x266c('0x14')]['message']);return _0x23c5b0(_0xd3106f[_0x266c('0x14')][_0x266c('0x16')]);}else{logger['info']('Dynamics365Field,\x20%s,\x20%s',_0x582d43,_0x266c('0x10'));_0x23c5b0(_0xd3106f[_0x266c('0x17')][_0x266c('0x16')]);}})[_0x266c('0x18')](function(_0x1ac495){logger[_0x266c('0x14')](_0x266c('0xf'),_0x582d43,_0x1ac495);_0x550edb(_0x1ac495);});});}
\ No newline at end of file
+var _0x7e78=['then','info','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','Dynamics365Field,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x7e78,0x1e9));var _0x87e7=function(_0x964ec4,_0x5bcb13){_0x964ec4=_0x964ec4-0x0;var _0xd5196b=_0x7e78[_0x964ec4];return _0xd5196b;};'use strict';var _=require(_0x87e7('0x0'));var util=require('util');var moment=require(_0x87e7('0x1'));var BPromise=require('bluebird');var rs=require(_0x87e7('0x2'));var fs=require('fs');var Redis=require(_0x87e7('0x3'));var db=require(_0x87e7('0x4'))['db'];var utils=require(_0x87e7('0x5'));var logger=require(_0x87e7('0x6'))('rpc');var config=require(_0x87e7('0x7'));var jayson=require(_0x87e7('0x8'));var client=jayson['client'][_0x87e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x19db8f,_0x7426aa,_0x4af121){return new BPromise(function(_0x14676a,_0x3fa79a){return client[_0x87e7('0xa')](_0x19db8f,_0x4af121)[_0x87e7('0xb')](function(_0x47def8){logger[_0x87e7('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x7426aa,_0x87e7('0xd'));logger['debug'](_0x87e7('0xe'),_0x7426aa,_0x87e7('0xd'),JSON['stringify'](_0x47def8));if(_0x47def8[_0x87e7('0xf')]){if(_0x47def8[_0x87e7('0xf')]['code']===0x1f4){logger['error'](_0x87e7('0x10'),_0x7426aa,_0x47def8[_0x87e7('0xf')][_0x87e7('0x11')]);return _0x3fa79a(_0x47def8[_0x87e7('0xf')][_0x87e7('0x11')]);}logger[_0x87e7('0xf')](_0x87e7('0x10'),_0x7426aa,_0x47def8[_0x87e7('0xf')][_0x87e7('0x11')]);return _0x14676a(_0x47def8[_0x87e7('0xf')][_0x87e7('0x11')]);}else{logger[_0x87e7('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x7426aa,_0x87e7('0xd'));_0x14676a(_0x47def8[_0x87e7('0x12')][_0x87e7('0x11')]);}})[_0x87e7('0x13')](function(_0x13ed27){logger[_0x87e7('0xf')](_0x87e7('0x10'),_0x7426aa,_0x13ed27);_0x3fa79a(_0x13ed27);});});}
\ No newline at end of file
index 56b14f5..e1d81c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cb4=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put'];(function(_0x37bfba,_0x39a80e){var _0x2d2e6e=function(_0x69afbc){while(--_0x69afbc){_0x37bfba['push'](_0x37bfba['shift']());}};_0x2d2e6e(++_0x39a80e);}(_0x4cb4,0xde));var _0x44cb=function(_0x20936e,_0x4d5283){_0x20936e=_0x20936e-0x0;var _0x50a212=_0x4cb4[_0x20936e];return _0x50a212;};'use strict';var multer=require(_0x44cb('0x0'));var util=require(_0x44cb('0x1'));var path=require(_0x44cb('0x2'));var timeout=require(_0x44cb('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x44cb('0x4'));var config=require(_0x44cb('0x5'));var controller=require(_0x44cb('0x6'));router[_0x44cb('0x7')]('/',auth[_0x44cb('0x8')](),controller[_0x44cb('0x9')]);router['get'](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller['show']);router[_0x44cb('0x7')](_0x44cb('0xb'),auth['isAuthenticated'](),controller[_0x44cb('0xc')]);router[_0x44cb('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0x44cb('0xd')]);router[_0x44cb('0xe')]('/',auth['isAuthenticated'](),controller[_0x44cb('0xf')]);router[_0x44cb('0xe')](_0x44cb('0xb'),auth['isAuthenticated'](),controller[_0x44cb('0x10')]);router[_0x44cb('0x11')](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller['update']);router[_0x44cb('0x12')](_0x44cb('0xa'),auth[_0x44cb('0x8')](),controller[_0x44cb('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd18a=['show','get','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd18a,0x75));var _0xad18=function(_0x671a12,_0x5d2741){_0x671a12=_0x671a12-0x0;var _0xd05e44=_0xd18a[_0x671a12];return _0xd05e44;};'use strict';var multer=require(_0xad18('0x0'));var util=require(_0xad18('0x1'));var path=require(_0xad18('0x2'));var timeout=require(_0xad18('0x3'));var express=require('express');var router=express[_0xad18('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xad18('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xad18('0x6'));var controller=require(_0xad18('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0xad18('0x8')](),controller[_0xad18('0x9')]);router[_0xad18('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xad18('0xb')]);router[_0xad18('0xa')](_0xad18('0xc'),auth[_0xad18('0x8')](),controller[_0xad18('0xd')]);router[_0xad18('0xe')]('/',auth['isAuthenticated'](),controller[_0xad18('0xf')]);router[_0xad18('0xe')](_0xad18('0x10'),auth[_0xad18('0x8')](),controller['addConfiguration']);router['put'](_0xad18('0x11'),auth[_0xad18('0x8')](),controller[_0xad18('0x12')]);router['delete'](_0xad18('0x11'),auth['isAuthenticated'](),controller[_0xad18('0x13')]);module[_0xad18('0x14')]=router;
\ No newline at end of file
index 83a1b25..66e3ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['sequelize','exports','STRING','username','remoteUri'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x8f4c,0x113));var _0xc8f4=function(_0x5a86a9,_0x49f269){_0x5a86a9=_0x5a86a9-0x0;var _0x3ab2cc=_0x8f4c[_0x5a86a9];return _0x3ab2cc;};'use strict';var Sequelize=require(_0xc8f4('0x0'));module[_0xc8f4('0x1')]={'name':{'type':Sequelize[_0xc8f4('0x2')]},'description':{'type':Sequelize[_0xc8f4('0x2')]},'username':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc8f4('0x2')],'unique':_0xc8f4('0x4')},'serverUrl':{'type':Sequelize[_0xc8f4('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x3a6d=['exports','STRING','username','sequelize'];(function(_0x18ef81,_0x1a4170){var _0x57cc86=function(_0x2c3bd7){while(--_0x2c3bd7){_0x18ef81['push'](_0x18ef81['shift']());}};_0x57cc86(++_0x1a4170);}(_0x3a6d,0x143));var _0xd3a6=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x3a6d[_0x5c2e3e];return _0x53f64a;};'use strict';var Sequelize=require(_0xd3a6('0x0'));module[_0xd3a6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd3a6('0x2')]},'username':{'type':Sequelize[_0xd3a6('0x2')],'unique':_0xd3a6('0x3')},'apiKey':{'type':Sequelize[_0xd3a6('0x2')]},'remoteUri':{'type':Sequelize[_0xd3a6('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xd3a6('0x2')],'allowNull':![]}};
\ No newline at end of file
index 5689273..e3b4db9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a55=['channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','substring','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','agent','description','group','source','ticket_type','remove','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','offset','order','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','body','getConfigurations','findOne','FreshdeskConfiguration','length','sort','nolimit','addConfiguration','AccountId','Subjects','getSubjects'];(function(_0x45a85e,_0x292dd7){var _0x4c85b7=function(_0x10059f){while(--_0x10059f){_0x45a85e['push'](_0x45a85e['shift']());}};_0x4c85b7(++_0x292dd7);}(_0x8a55,0x185));var _0x58a5=function(_0xc2ce3b,_0x44e4c9){_0xc2ce3b=_0xc2ce3b-0x0;var _0x55331e=_0x8a55[_0xc2ce3b];return _0x55331e;};'use strict';var emlformat=require(_0x58a5('0x0'));var rimraf=require(_0x58a5('0x1'));var zipdir=require(_0x58a5('0x2'));var jsonpatch=require(_0x58a5('0x3'));var rp=require(_0x58a5('0x4'));var moment=require(_0x58a5('0x5'));var BPromise=require(_0x58a5('0x6'));var Mustache=require(_0x58a5('0x7'));var util=require('util');var path=require(_0x58a5('0x8'));var sox=require(_0x58a5('0x9'));var csv=require(_0x58a5('0xa'));var ejs=require(_0x58a5('0xb'));var fs=require('fs');var fs_extra=require(_0x58a5('0xc'));var _=require(_0x58a5('0xd'));var squel=require(_0x58a5('0xe'));var crypto=require(_0x58a5('0xf'));var jsforce=require(_0x58a5('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x58a5('0xa'));var querystring=require(_0x58a5('0x11'));var Papa=require(_0x58a5('0x12'));var Redis=require(_0x58a5('0x13'));var authService=require(_0x58a5('0x14'));var qs=require(_0x58a5('0x15'));var as=require(_0x58a5('0x16'));var hardwareService=require(_0x58a5('0x17'));var logger=require(_0x58a5('0x18'))(_0x58a5('0x19'));var utils=require(_0x58a5('0x1a'));var config=require(_0x58a5('0x1b'));var licenseUtil=require(_0x58a5('0x1c'));var db=require(_0x58a5('0x1d'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x23cd4a,_0x3ed0df){_0x3ed0df=_0x3ed0df||0xcc;return function(_0x270805){if(_0x270805){return _0x23cd4a[_0x58a5('0x1e')](_0x3ed0df);}return _0x23cd4a[_0x58a5('0x1f')](_0x3ed0df)['end']();};}function respondWithResult(_0x504295,_0x3ae4e5){_0x3ae4e5=_0x3ae4e5||0xc8;return function(_0x43d237){if(_0x43d237){return _0x504295[_0x58a5('0x1f')](_0x3ae4e5)[_0x58a5('0x20')](_0x43d237);}};}function respondWithFilteredResult(_0x12de1f,_0x598b0f){return function(_0x9577d5){if(_0x9577d5){var _0x42ea0c=typeof _0x598b0f['offset']===_0x58a5('0x21')&&typeof _0x598b0f[_0x58a5('0x22')]==='undefined';var _0x1fe496=_0x9577d5[_0x58a5('0x23')];var _0x59c170=_0x42ea0c?0x0:_0x598b0f['offset'];var _0x24aa8f=_0x42ea0c?_0x9577d5['count']:_0x598b0f['offset']+_0x598b0f['limit'];var _0x12abb2;if(_0x24aa8f>=_0x1fe496){_0x24aa8f=_0x1fe496;_0x12abb2=0xc8;}else{_0x12abb2=0xce;}_0x12de1f[_0x58a5('0x1f')](_0x12abb2);return _0x12de1f['set'](_0x58a5('0x24'),_0x59c170+'-'+_0x24aa8f+'/'+_0x1fe496)[_0x58a5('0x20')](_0x9577d5);}return null;};}function patchUpdates(_0x43e0fc){return function(_0x5afb6b){try{jsonpatch[_0x58a5('0x25')](_0x5afb6b,_0x43e0fc,!![]);}catch(_0x2a2226){return BPromise[_0x58a5('0x26')](_0x2a2226);}return _0x5afb6b[_0x58a5('0x27')]();};}function saveUpdates(_0x4b0df7,_0x5aecca){return function(_0x3aab6d){if(_0x3aab6d){return _0x3aab6d[_0x58a5('0x28')](_0x4b0df7)[_0x58a5('0x29')](function(_0x5d9be2){return _0x5d9be2;});}return null;};}function removeEntity(_0x543c49,_0x2da18b){return function(_0x48e5cf){if(_0x48e5cf){return _0x48e5cf[_0x58a5('0x2a')]()[_0x58a5('0x29')](function(){_0x543c49[_0x58a5('0x1f')](0xcc)[_0x58a5('0x2b')]();});}};}function handleEntityNotFound(_0x3a2e8c,_0x56f0a4){return function(_0x1a0f37){if(!_0x1a0f37){_0x3a2e8c['sendStatus'](0x194);}return _0x1a0f37;};}function handleError(_0x15b1b5,_0x2a884d){_0x2a884d=_0x2a884d||0x1f4;return function(_0x59823d){logger[_0x58a5('0x2c')](_0x59823d[_0x58a5('0x2d')]);if(_0x59823d['name']){delete _0x59823d[_0x58a5('0x2e')];}_0x15b1b5[_0x58a5('0x1f')](_0x2a884d)[_0x58a5('0x2f')](_0x59823d);};}exports['index']=function(_0x34bd7a,_0x2aa897){var _0x3d8968={},_0x3fbcd9={},_0x25bb2a={'count':0x0,'rows':[]};var _0x5bbb59=_[_0x58a5('0x30')](db[_0x58a5('0x31')][_0x58a5('0x32')],function(_0x3af368){return{'name':_0x3af368[_0x58a5('0x33')],'type':_0x3af368[_0x58a5('0x34')]['key']};});_0x3fbcd9[_0x58a5('0x35')]=_[_0x58a5('0x30')](_0x5bbb59,_0x58a5('0x2e'));_0x3fbcd9[_0x58a5('0x36')]=_[_0x58a5('0x37')](_0x34bd7a[_0x58a5('0x36')]);_0x3fbcd9[_0x58a5('0x38')]=_[_0x58a5('0x39')](_0x3fbcd9[_0x58a5('0x35')],_0x3fbcd9[_0x58a5('0x36')]);_0x3d8968[_0x58a5('0x3a')]=_['intersection'](_0x3fbcd9[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x34bd7a['query'][_0x58a5('0x3b')]));_0x3d8968[_0x58a5('0x3a')]=_0x3d8968['attributes']['length']?_0x3d8968['attributes']:_0x3fbcd9['model'];if(!_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x3c')]('nolimit')){_0x3d8968[_0x58a5('0x22')]=qs['limit'](_0x34bd7a[_0x58a5('0x36')]['limit']);_0x3d8968[_0x58a5('0x3d')]=qs[_0x58a5('0x3d')](_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x3d')]);}_0x3d8968[_0x58a5('0x3e')]=qs['sort'](_0x34bd7a[_0x58a5('0x36')]['sort']);_0x3d8968['where']=qs[_0x58a5('0x38')](_[_0x58a5('0x3f')](_0x34bd7a[_0x58a5('0x36')],_0x3fbcd9[_0x58a5('0x38')]),_0x5bbb59);if(_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x40')]){_0x3d8968[_0x58a5('0x41')]=_[_0x58a5('0x42')](_0x3d8968[_0x58a5('0x41')],{'$or':_[_0x58a5('0x30')](_0x5bbb59,function(_0x7074d3){if(_0x7074d3['type']!==_0x58a5('0x43')){var _0x5331bd={};_0x5331bd[_0x7074d3[_0x58a5('0x2e')]]={'$like':'%'+_0x34bd7a['query'][_0x58a5('0x40')]+'%'};return _0x5331bd;}})});}_0x3d8968=_[_0x58a5('0x42')]({},_0x3d8968,_0x34bd7a[_0x58a5('0x44')]);var _0x3cd6c3={'where':_0x3d8968[_0x58a5('0x41')]};return db[_0x58a5('0x31')][_0x58a5('0x23')](_0x3cd6c3)['then'](function(_0x2b43c5){_0x25bb2a['count']=_0x2b43c5;if(_0x34bd7a[_0x58a5('0x36')][_0x58a5('0x45')]){_0x3d8968[_0x58a5('0x46')]=[{'all':!![]}];}return db[_0x58a5('0x31')]['findAll'](_0x3d8968);})['then'](function(_0xb15572){_0x25bb2a[_0x58a5('0x47')]=_0xb15572;return _0x25bb2a;})[_0x58a5('0x29')](respondWithFilteredResult(_0x2aa897,_0x3d8968))['catch'](handleError(_0x2aa897,null));};exports['show']=function(_0x4b62f5,_0xe8ec6){var _0x1eeec1={'raw':![],'where':{'id':_0x4b62f5[_0x58a5('0x48')]['id']}},_0x5b2385={};_0x5b2385[_0x58a5('0x35')]=_[_0x58a5('0x37')](db[_0x58a5('0x31')][_0x58a5('0x32')]);_0x5b2385[_0x58a5('0x36')]=_[_0x58a5('0x37')](_0x4b62f5[_0x58a5('0x36')]);_0x5b2385[_0x58a5('0x38')]=_['intersection'](_0x5b2385[_0x58a5('0x35')],_0x5b2385[_0x58a5('0x36')]);_0x1eeec1[_0x58a5('0x3a')]=_['intersection'](_0x5b2385[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x4b62f5[_0x58a5('0x36')][_0x58a5('0x3b')]));_0x1eeec1[_0x58a5('0x3a')]=_0x1eeec1[_0x58a5('0x3a')]['length']?_0x1eeec1[_0x58a5('0x3a')]:_0x5b2385[_0x58a5('0x35')];if(_0x4b62f5[_0x58a5('0x36')][_0x58a5('0x45')]){_0x1eeec1[_0x58a5('0x46')]=[{'all':!![]}];}_0x1eeec1=_[_0x58a5('0x42')]({},_0x1eeec1,_0x4b62f5[_0x58a5('0x44')]);return db[_0x58a5('0x31')][_0x58a5('0x49')](_0x1eeec1)[_0x58a5('0x29')](handleEntityNotFound(_0xe8ec6,null))[_0x58a5('0x29')](respondWithResult(_0xe8ec6,null))[_0x58a5('0x4a')](handleError(_0xe8ec6,null));};exports[_0x58a5('0x4b')]=function(_0x598219,_0x736443){return db[_0x58a5('0x31')][_0x58a5('0x4b')](_0x598219['body'],{})[_0x58a5('0x29')](respondWithResult(_0x736443,0xc9))[_0x58a5('0x4a')](handleError(_0x736443,null));};exports[_0x58a5('0x28')]=function(_0x381426,_0x118099){if(_0x381426[_0x58a5('0x4c')]['id']){delete _0x381426['body']['id'];}return db[_0x58a5('0x31')][_0x58a5('0x49')]({'where':{'id':_0x381426[_0x58a5('0x48')]['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x118099,null))[_0x58a5('0x29')](saveUpdates(_0x381426[_0x58a5('0x4c')],null))[_0x58a5('0x29')](respondWithResult(_0x118099,null))['catch'](handleError(_0x118099,null));};exports[_0x58a5('0x2a')]=function(_0x4bb401,_0x1b39af){return db[_0x58a5('0x31')][_0x58a5('0x49')]({'where':{'id':_0x4bb401['params']['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x1b39af,null))['then'](removeEntity(_0x1b39af,null))[_0x58a5('0x4a')](handleError(_0x1b39af,null));};exports[_0x58a5('0x4d')]=function(_0x4f785e,_0x4dbd13,_0x4021be){var _0xa8cd6b={};var _0x4e9667={};var _0x2f6ef0;var _0x238269;return db[_0x58a5('0x31')][_0x58a5('0x4e')]({'where':{'id':_0x4f785e[_0x58a5('0x48')]['id']}})['then'](handleEntityNotFound(_0x4dbd13,null))['then'](function(_0x4c81c2){if(_0x4c81c2){_0x2f6ef0=_0x4c81c2;_0x4e9667['model']=_[_0x58a5('0x37')](db[_0x58a5('0x4f')]['rawAttributes']);_0x4e9667['query']=_[_0x58a5('0x37')](_0x4f785e[_0x58a5('0x36')]);_0x4e9667[_0x58a5('0x38')]=_[_0x58a5('0x39')](_0x4e9667[_0x58a5('0x35')],_0x4e9667[_0x58a5('0x36')]);_0xa8cd6b['attributes']=_['intersection'](_0x4e9667[_0x58a5('0x35')],qs[_0x58a5('0x3b')](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x3b')]));_0xa8cd6b[_0x58a5('0x3a')]=_0xa8cd6b[_0x58a5('0x3a')][_0x58a5('0x50')]?_0xa8cd6b['attributes']:_0x4e9667[_0x58a5('0x35')];_0xa8cd6b[_0x58a5('0x3e')]=qs['sort'](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x51')]);_0xa8cd6b['where']=qs[_0x58a5('0x38')](_[_0x58a5('0x3f')](_0x4f785e[_0x58a5('0x36')],_0x4e9667['filters']));if(_0x4f785e[_0x58a5('0x36')][_0x58a5('0x40')]){_0xa8cd6b['where']=_['merge'](_0xa8cd6b[_0x58a5('0x41')],{'$or':_['map'](_0xa8cd6b[_0x58a5('0x3a')],function(_0x21ccf8){var _0x21b5b5={};_0x21b5b5[_0x21ccf8]={'$like':'%'+_0x4f785e[_0x58a5('0x36')]['filter']+'%'};return _0x21b5b5;})});}_0xa8cd6b=_[_0x58a5('0x42')]({},_0xa8cd6b,_0x4f785e[_0x58a5('0x44')]);return _0x2f6ef0[_0x58a5('0x4d')](_0xa8cd6b);}})[_0x58a5('0x29')](function(_0x35e690){if(_0x35e690){_0x238269=_0x35e690[_0x58a5('0x50')];if(!_0x4f785e['query']['hasOwnProperty'](_0x58a5('0x52'))){_0xa8cd6b[_0x58a5('0x22')]=qs[_0x58a5('0x22')](_0x4f785e[_0x58a5('0x36')][_0x58a5('0x22')]);_0xa8cd6b['offset']=qs[_0x58a5('0x3d')](_0x4f785e[_0x58a5('0x36')]['offset']);}return _0x2f6ef0[_0x58a5('0x4d')](_0xa8cd6b);}})[_0x58a5('0x29')](function(_0x445fca){if(_0x445fca){return _0x445fca?{'count':_0x238269,'rows':_0x445fca}:null;}})['then'](respondWithResult(_0x4dbd13,null))[_0x58a5('0x4a')](handleError(_0x4dbd13,null));};exports[_0x58a5('0x53')]=function(_0x4a58c1,_0x508e08,_0x39572b){if(_0x4a58c1[_0x58a5('0x4c')]['id']){delete _0x4a58c1['body']['id'];}return db[_0x58a5('0x31')][_0x58a5('0x4e')]({'where':{'id':_0x4a58c1[_0x58a5('0x48')]['id']}})[_0x58a5('0x29')](handleEntityNotFound(_0x508e08,null))['then'](function(_0x455f2e){if(_0x455f2e){_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x54')]=_0x455f2e['id'];_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x55')]=integrations[_0x58a5('0x56')](_0x4a58c1['body'][_0x58a5('0x57')],_0x4a58c1['body'][_0x58a5('0x34')]);_0x4a58c1[_0x58a5('0x4c')]['Descriptions']=integrations[_0x58a5('0x58')](_0x4a58c1['body'][_0x58a5('0x57')],_0x4a58c1[_0x58a5('0x4c')][_0x58a5('0x34')]);return db[_0x58a5('0x4f')][_0x58a5('0x4b')](_0x4a58c1[_0x58a5('0x4c')],{'include':[{'model':db[_0x58a5('0x59')],'as':_0x58a5('0x55')},{'model':db[_0x58a5('0x59')],'as':_0x58a5('0x5a')}]});}return null;})[_0x58a5('0x29')](respondWithResult(_0x508e08,null))[_0x58a5('0x4a')](handleError(_0x508e08,null));};exports[_0x58a5('0x5b')]=function(_0x89c3e2,_0x2f9ffa,_0xfdc5ac){var _0x132189='';return db['FreshdeskAccount'][_0x58a5('0x4e')]({'where':{'id':_0x89c3e2['params']['id']},'attributes':['id',_0x58a5('0x5c'),_0x58a5('0x5d')]})['then'](handleEntityNotFound(_0x2f9ffa,null))['then'](function(_0x1463bc){if(_0x1463bc){_0x132189=_0x1463bc[_0x58a5('0x5c')];var _0x494ad7=_0x132189['slice'](-0x1);if(_0x494ad7==='/'){_0x132189=_0x132189[_0x58a5('0x5e')](0x0,_0x132189[_0x58a5('0x5f')](_0x494ad7));}return rp({'method':_0x58a5('0x60'),'uri':util[_0x58a5('0x61')]('%s/%s',_0x132189,_0x58a5('0x62')),'headers':{'Authorization':util[_0x58a5('0x61')](_0x58a5('0x63'),new Buffer(util[_0x58a5('0x61')](_0x58a5('0x64'),_0x1463bc[_0x58a5('0x5d')]))[_0x58a5('0x65')]('base64'))},'json':!![]});}})[_0x58a5('0x29')](function(_0x5d85ce){if(_0x5d85ce){var _0x4688c8=[_0x58a5('0x66'),_0x58a5('0x67'),_0x58a5('0x68'),_0x58a5('0x69'),'status','priority',_0x58a5('0x6a'),_0x58a5('0x6b'),_0x58a5('0x6c'),_0x58a5('0x6a'),'company'];_[_0x58a5('0x6d')](_0x5d85ce,function(_0x271704){return _0x4688c8['includes'](_0x271704[_0x58a5('0x2e')])||!_0x271704[_0x58a5('0x6e')]&&_0x271704[_0x58a5('0x34')]!==_0x58a5('0x6f')&&_0x271704[_0x58a5('0x34')]!==_0x58a5('0x70');});return{'count':_0x5d85ce[_0x58a5('0x50')],'rows':_[_0x58a5('0x30')](_0x5d85ce,function(_0x406037){return{'id':_0x406037[_0x58a5('0x2e')],'name':_0x406037[_0x58a5('0x71')],'custom':!_0x406037[_0x58a5('0x6e')],'options':_0x406037[_0x58a5('0x72')]?_[_0x58a5('0x30')](_0x406037[_0x58a5('0x72')],function(_0xae16af){return{'name':_['capitalize'](_0xae16af),'value':_0xae16af};}):[]};})};}})[_0x58a5('0x29')](respondWithResult(_0x2f9ffa,null))[_0x58a5('0x4a')](function(_0x2bac6f){var _0x1da23a=_0x89c3e2['query'][_0x58a5('0x73')]?0x1f4:_0x2bac6f[_0x58a5('0x74')]||0x1f4;logger['error'](_0x58a5('0x75'),_0x58a5('0x5b'),_0x1da23a,JSON['stringify'](_0x2bac6f));delete _0x2bac6f[_0x58a5('0x2e')];if(_0x1da23a===0x191){_0x1da23a=0x190;}_0x2f9ffa[_0x58a5('0x1f')](_0x1da23a)['send'](_0x89c3e2[_0x58a5('0x36')][_0x58a5('0x73')]?{'message':_0x58a5('0x76'),'statusCode':_0x2bac6f['statusCode']}:_0x2bac6f);});};
\ No newline at end of file
+var _0xde56=['mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','update','then','status','error','stack','name','send','index','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','where','merge','type','filter','options','FreshdeskAccount','include','show','params','rawAttributes','includeAll','catch','create','body','find','destroy','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','getFields','remoteUri','apiKey','slice','lastIndexOf','format','%s/%s','Basic\x20%s','base64','requester','subject','agent','description','group','ticket_type','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','getFields,\x20%s,\x20%s,\x20%s','stringify','test','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x54e26b,_0x3d14f1){var _0x1b801f=function(_0x5986c6){while(--_0x5986c6){_0x54e26b['push'](_0x54e26b['shift']());}};_0x1b801f(++_0x3d14f1);}(_0xde56,0x144));var _0x6de5=function(_0x3fb030,_0x12aebe){_0x3fb030=_0x3fb030-0x0;var _0xd6899b=_0xde56[_0x3fb030];return _0xd6899b;};'use strict';var emlformat=require(_0x6de5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6de5('0x1'));var jsonpatch=require(_0x6de5('0x2'));var rp=require(_0x6de5('0x3'));var moment=require(_0x6de5('0x4'));var BPromise=require(_0x6de5('0x5'));var Mustache=require(_0x6de5('0x6'));var util=require(_0x6de5('0x7'));var path=require(_0x6de5('0x8'));var sox=require(_0x6de5('0x9'));var csv=require(_0x6de5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6de5('0xb'));var _=require(_0x6de5('0xc'));var squel=require(_0x6de5('0xd'));var crypto=require(_0x6de5('0xe'));var jsforce=require(_0x6de5('0xf'));var deskjs=require(_0x6de5('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6de5('0x11'));var Redis=require(_0x6de5('0x12'));var authService=require(_0x6de5('0x13'));var qs=require(_0x6de5('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6de5('0x15'));var logger=require(_0x6de5('0x16'))(_0x6de5('0x17'));var utils=require(_0x6de5('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x6de5('0x19'));var db=require(_0x6de5('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2e0d4d,_0x10f7de){_0x10f7de=_0x10f7de||0xcc;return function(_0x38bde1){if(_0x38bde1){return _0x2e0d4d[_0x6de5('0x1b')](_0x10f7de);}return _0x2e0d4d['status'](_0x10f7de)[_0x6de5('0x1c')]();};}function respondWithResult(_0x13405e,_0x3c65c3){_0x3c65c3=_0x3c65c3||0xc8;return function(_0x155b46){if(_0x155b46){return _0x13405e['status'](_0x3c65c3)[_0x6de5('0x1d')](_0x155b46);}};}function respondWithFilteredResult(_0x1a6cab,_0x11fcdb){return function(_0x2e61ca){if(_0x2e61ca){var _0x5afd3c=typeof _0x11fcdb[_0x6de5('0x1e')]===_0x6de5('0x1f')&&typeof _0x11fcdb[_0x6de5('0x20')]===_0x6de5('0x1f');var _0x4aedc4=_0x2e61ca[_0x6de5('0x21')];var _0x7b934e=_0x5afd3c?0x0:_0x11fcdb[_0x6de5('0x1e')];var _0x344bbb=_0x5afd3c?_0x2e61ca['count']:_0x11fcdb['offset']+_0x11fcdb[_0x6de5('0x20')];var _0x486321;if(_0x344bbb>=_0x4aedc4){_0x344bbb=_0x4aedc4;_0x486321=0xc8;}else{_0x486321=0xce;}_0x1a6cab['status'](_0x486321);return _0x1a6cab[_0x6de5('0x22')]('Content-Range',_0x7b934e+'-'+_0x344bbb+'/'+_0x4aedc4)[_0x6de5('0x1d')](_0x2e61ca);}return null;};}function patchUpdates(_0x319e9c){return function(_0x61d544){try{jsonpatch['apply'](_0x61d544,_0x319e9c,!![]);}catch(_0x4020bd){return BPromise['reject'](_0x4020bd);}return _0x61d544['save']();};}function saveUpdates(_0x4c9621,_0x4f9dd1){return function(_0xa3b10c){if(_0xa3b10c){return _0xa3b10c[_0x6de5('0x23')](_0x4c9621)[_0x6de5('0x24')](function(_0x26c9d6){return _0x26c9d6;});}return null;};}function removeEntity(_0x2272dc,_0x28ba44){return function(_0x65617e){if(_0x65617e){return _0x65617e['destroy']()['then'](function(){_0x2272dc[_0x6de5('0x25')](0xcc)[_0x6de5('0x1c')]();});}};}function handleEntityNotFound(_0x4a2ffd,_0x2e27d0){return function(_0x15a62e){if(!_0x15a62e){_0x4a2ffd[_0x6de5('0x1b')](0x194);}return _0x15a62e;};}function handleError(_0x5ebd66,_0x31ec12){_0x31ec12=_0x31ec12||0x1f4;return function(_0x4a21a2){logger[_0x6de5('0x26')](_0x4a21a2[_0x6de5('0x27')]);if(_0x4a21a2[_0x6de5('0x28')]){delete _0x4a21a2[_0x6de5('0x28')];}_0x5ebd66[_0x6de5('0x25')](_0x31ec12)[_0x6de5('0x29')](_0x4a21a2);};}exports[_0x6de5('0x2a')]=function(_0x5aed57,_0x1e1810){var _0xf3db96={},_0x3fc237={},_0x475c2f={'count':0x0,'rows':[]};var _0xed4f37=_['map'](db['FreshdeskAccount']['rawAttributes'],function(_0x45c9a8){return{'name':_0x45c9a8[_0x6de5('0x2b')],'type':_0x45c9a8['type'][_0x6de5('0x2c')]};});_0x3fc237[_0x6de5('0x2d')]=_[_0x6de5('0x2e')](_0xed4f37,_0x6de5('0x28'));_0x3fc237[_0x6de5('0x2f')]=_[_0x6de5('0x30')](_0x5aed57[_0x6de5('0x2f')]);_0x3fc237['filters']=_[_0x6de5('0x31')](_0x3fc237[_0x6de5('0x2d')],_0x3fc237['query']);_0xf3db96[_0x6de5('0x32')]=_[_0x6de5('0x31')](_0x3fc237[_0x6de5('0x2d')],qs[_0x6de5('0x33')](_0x5aed57[_0x6de5('0x2f')][_0x6de5('0x33')]));_0xf3db96[_0x6de5('0x32')]=_0xf3db96[_0x6de5('0x32')][_0x6de5('0x34')]?_0xf3db96[_0x6de5('0x32')]:_0x3fc237[_0x6de5('0x2d')];if(!_0x5aed57[_0x6de5('0x2f')]['hasOwnProperty'](_0x6de5('0x35'))){_0xf3db96[_0x6de5('0x20')]=qs[_0x6de5('0x20')](_0x5aed57[_0x6de5('0x2f')]['limit']);_0xf3db96['offset']=qs['offset'](_0x5aed57[_0x6de5('0x2f')][_0x6de5('0x1e')]);}_0xf3db96[_0x6de5('0x36')]=qs[_0x6de5('0x37')](_0x5aed57['query'][_0x6de5('0x37')]);_0xf3db96['where']=qs['filters'](_['pick'](_0x5aed57[_0x6de5('0x2f')],_0x3fc237[_0x6de5('0x38')]),_0xed4f37);if(_0x5aed57['query']['filter']){_0xf3db96[_0x6de5('0x39')]=_[_0x6de5('0x3a')](_0xf3db96[_0x6de5('0x39')],{'$or':_[_0x6de5('0x2e')](_0xed4f37,function(_0x5f0eb6){if(_0x5f0eb6[_0x6de5('0x3b')]!=='VIRTUAL'){var _0x44b145={};_0x44b145[_0x5f0eb6['name']]={'$like':'%'+_0x5aed57[_0x6de5('0x2f')][_0x6de5('0x3c')]+'%'};return _0x44b145;}})});}_0xf3db96=_['merge']({},_0xf3db96,_0x5aed57[_0x6de5('0x3d')]);var _0x3dc4a8={'where':_0xf3db96['where']};return db[_0x6de5('0x3e')][_0x6de5('0x21')](_0x3dc4a8)[_0x6de5('0x24')](function(_0x43c508){_0x475c2f[_0x6de5('0x21')]=_0x43c508;if(_0x5aed57[_0x6de5('0x2f')]['includeAll']){_0xf3db96[_0x6de5('0x3f')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0xf3db96);})['then'](function(_0x32c659){_0x475c2f['rows']=_0x32c659;return _0x475c2f;})[_0x6de5('0x24')](respondWithFilteredResult(_0x1e1810,_0xf3db96))['catch'](handleError(_0x1e1810,null));};exports[_0x6de5('0x40')]=function(_0x40695e,_0x2268fc){var _0x3bc554={'raw':![],'where':{'id':_0x40695e[_0x6de5('0x41')]['id']}},_0xe1c876={};_0xe1c876[_0x6de5('0x2d')]=_['keys'](db[_0x6de5('0x3e')][_0x6de5('0x42')]);_0xe1c876[_0x6de5('0x2f')]=_[_0x6de5('0x30')](_0x40695e[_0x6de5('0x2f')]);_0xe1c876[_0x6de5('0x38')]=_['intersection'](_0xe1c876[_0x6de5('0x2d')],_0xe1c876[_0x6de5('0x2f')]);_0x3bc554[_0x6de5('0x32')]=_[_0x6de5('0x31')](_0xe1c876['model'],qs['fields'](_0x40695e[_0x6de5('0x2f')][_0x6de5('0x33')]));_0x3bc554[_0x6de5('0x32')]=_0x3bc554['attributes'][_0x6de5('0x34')]?_0x3bc554[_0x6de5('0x32')]:_0xe1c876[_0x6de5('0x2d')];if(_0x40695e[_0x6de5('0x2f')][_0x6de5('0x43')]){_0x3bc554[_0x6de5('0x3f')]=[{'all':!![]}];}_0x3bc554=_[_0x6de5('0x3a')]({},_0x3bc554,_0x40695e[_0x6de5('0x3d')]);return db[_0x6de5('0x3e')]['find'](_0x3bc554)[_0x6de5('0x24')](handleEntityNotFound(_0x2268fc,null))[_0x6de5('0x24')](respondWithResult(_0x2268fc,null))[_0x6de5('0x44')](handleError(_0x2268fc,null));};exports['create']=function(_0x3dfff7,_0x58b65d){return db['FreshdeskAccount'][_0x6de5('0x45')](_0x3dfff7['body'],{})[_0x6de5('0x24')](respondWithResult(_0x58b65d,0xc9))[_0x6de5('0x44')](handleError(_0x58b65d,null));};exports[_0x6de5('0x23')]=function(_0xb55785,_0x43336b){if(_0xb55785[_0x6de5('0x46')]['id']){delete _0xb55785[_0x6de5('0x46')]['id'];}return db[_0x6de5('0x3e')][_0x6de5('0x47')]({'where':{'id':_0xb55785[_0x6de5('0x41')]['id']}})['then'](handleEntityNotFound(_0x43336b,null))['then'](saveUpdates(_0xb55785['body'],null))[_0x6de5('0x24')](respondWithResult(_0x43336b,null))[_0x6de5('0x44')](handleError(_0x43336b,null));};exports[_0x6de5('0x48')]=function(_0x5b2572,_0x4ef8a7){return db[_0x6de5('0x3e')][_0x6de5('0x47')]({'where':{'id':_0x5b2572[_0x6de5('0x41')]['id']}})[_0x6de5('0x24')](handleEntityNotFound(_0x4ef8a7,null))[_0x6de5('0x24')](removeEntity(_0x4ef8a7,null))[_0x6de5('0x44')](handleError(_0x4ef8a7,null));};exports[_0x6de5('0x49')]=function(_0x230c97,_0x19ef80,_0x33889b){var _0x51f4cb={};var _0x9c9e65={};var _0x19850c;var _0x1c52ec;return db[_0x6de5('0x3e')][_0x6de5('0x4a')]({'where':{'id':_0x230c97[_0x6de5('0x41')]['id']}})[_0x6de5('0x24')](handleEntityNotFound(_0x19ef80,null))[_0x6de5('0x24')](function(_0x30fafd){if(_0x30fafd){_0x19850c=_0x30fafd;_0x9c9e65[_0x6de5('0x2d')]=_['keys'](db[_0x6de5('0x4b')]['rawAttributes']);_0x9c9e65['query']=_['keys'](_0x230c97[_0x6de5('0x2f')]);_0x9c9e65[_0x6de5('0x38')]=_[_0x6de5('0x31')](_0x9c9e65[_0x6de5('0x2d')],_0x9c9e65[_0x6de5('0x2f')]);_0x51f4cb[_0x6de5('0x32')]=_[_0x6de5('0x31')](_0x9c9e65['model'],qs[_0x6de5('0x33')](_0x230c97['query'][_0x6de5('0x33')]));_0x51f4cb[_0x6de5('0x32')]=_0x51f4cb['attributes'][_0x6de5('0x34')]?_0x51f4cb[_0x6de5('0x32')]:_0x9c9e65[_0x6de5('0x2d')];_0x51f4cb[_0x6de5('0x36')]=qs[_0x6de5('0x37')](_0x230c97['query']['sort']);_0x51f4cb['where']=qs[_0x6de5('0x38')](_['pick'](_0x230c97[_0x6de5('0x2f')],_0x9c9e65[_0x6de5('0x38')]));if(_0x230c97[_0x6de5('0x2f')][_0x6de5('0x3c')]){_0x51f4cb['where']=_[_0x6de5('0x3a')](_0x51f4cb[_0x6de5('0x39')],{'$or':_[_0x6de5('0x2e')](_0x51f4cb[_0x6de5('0x32')],function(_0x16cca7){var _0x1cb78b={};_0x1cb78b[_0x16cca7]={'$like':'%'+_0x230c97[_0x6de5('0x2f')][_0x6de5('0x3c')]+'%'};return _0x1cb78b;})});}_0x51f4cb=_[_0x6de5('0x3a')]({},_0x51f4cb,_0x230c97[_0x6de5('0x3d')]);return _0x19850c['getConfigurations'](_0x51f4cb);}})[_0x6de5('0x24')](function(_0x200e19){if(_0x200e19){_0x1c52ec=_0x200e19[_0x6de5('0x34')];if(!_0x230c97[_0x6de5('0x2f')][_0x6de5('0x4c')](_0x6de5('0x35'))){_0x51f4cb['limit']=qs[_0x6de5('0x20')](_0x230c97['query']['limit']);_0x51f4cb[_0x6de5('0x1e')]=qs[_0x6de5('0x1e')](_0x230c97['query'][_0x6de5('0x1e')]);}return _0x19850c[_0x6de5('0x49')](_0x51f4cb);}})['then'](function(_0x167add){if(_0x167add){return _0x167add?{'count':_0x1c52ec,'rows':_0x167add}:null;}})[_0x6de5('0x24')](respondWithResult(_0x19ef80,null))['catch'](handleError(_0x19ef80,null));};exports['addConfiguration']=function(_0x30db7f,_0x22d187,_0x104dd5){if(_0x30db7f[_0x6de5('0x46')]['id']){delete _0x30db7f['body']['id'];}return db[_0x6de5('0x3e')][_0x6de5('0x4a')]({'where':{'id':_0x30db7f[_0x6de5('0x41')]['id']}})['then'](handleEntityNotFound(_0x22d187,null))[_0x6de5('0x24')](function(_0x574b86){if(_0x574b86){_0x30db7f[_0x6de5('0x46')][_0x6de5('0x4d')]=_0x574b86['id'];_0x30db7f[_0x6de5('0x46')]['Subjects']=integrations[_0x6de5('0x4e')](_0x30db7f[_0x6de5('0x46')][_0x6de5('0x4f')],_0x30db7f[_0x6de5('0x46')][_0x6de5('0x3b')]);_0x30db7f['body'][_0x6de5('0x50')]=integrations[_0x6de5('0x51')](_0x30db7f[_0x6de5('0x46')]['channel'],_0x30db7f[_0x6de5('0x46')][_0x6de5('0x3b')]);return db['FreshdeskConfiguration'][_0x6de5('0x45')](_0x30db7f[_0x6de5('0x46')],{'include':[{'model':db['FreshdeskField'],'as':_0x6de5('0x52')},{'model':db['FreshdeskField'],'as':_0x6de5('0x50')}]});}return null;})[_0x6de5('0x24')](respondWithResult(_0x22d187,null))[_0x6de5('0x44')](handleError(_0x22d187,null));};exports[_0x6de5('0x53')]=function(_0x169d17,_0x546999,_0x444a19){var _0x50e0ba='';return db[_0x6de5('0x3e')][_0x6de5('0x4a')]({'where':{'id':_0x169d17[_0x6de5('0x41')]['id']},'attributes':['id',_0x6de5('0x54'),_0x6de5('0x55')]})[_0x6de5('0x24')](handleEntityNotFound(_0x546999,null))['then'](function(_0x3e3279){if(_0x3e3279){_0x50e0ba=_0x3e3279[_0x6de5('0x54')];var _0x14c1b3=_0x50e0ba[_0x6de5('0x56')](-0x1);if(_0x14c1b3==='/'){_0x50e0ba=_0x50e0ba['substring'](0x0,_0x50e0ba[_0x6de5('0x57')](_0x14c1b3));}return rp({'method':'GET','uri':util[_0x6de5('0x58')](_0x6de5('0x59'),_0x50e0ba,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x6de5('0x58')](_0x6de5('0x5a'),new Buffer(util[_0x6de5('0x58')]('%s:X',_0x3e3279[_0x6de5('0x55')]))['toString'](_0x6de5('0x5b')))},'json':!![]});}})['then'](function(_0x1f66d3){if(_0x1f66d3){var _0x382a95=[_0x6de5('0x5c'),_0x6de5('0x5d'),_0x6de5('0x5e'),_0x6de5('0x5f'),_0x6de5('0x25'),'priority',_0x6de5('0x60'),'source',_0x6de5('0x61'),_0x6de5('0x60'),'company'];_[_0x6de5('0x62')](_0x1f66d3,function(_0x41a031){return _0x382a95[_0x6de5('0x63')](_0x41a031[_0x6de5('0x28')])||!_0x41a031[_0x6de5('0x64')]&&_0x41a031[_0x6de5('0x3b')]!==_0x6de5('0x65')&&_0x41a031[_0x6de5('0x3b')]!==_0x6de5('0x66');});return{'count':_0x1f66d3[_0x6de5('0x34')],'rows':_[_0x6de5('0x2e')](_0x1f66d3,function(_0x30f943){return{'id':_0x30f943['name'],'name':_0x30f943[_0x6de5('0x67')],'custom':!_0x30f943['default'],'options':_0x30f943[_0x6de5('0x68')]?_[_0x6de5('0x2e')](_0x30f943['choices'],function(_0x28c846){return{'name':_[_0x6de5('0x69')](_0x28c846),'value':_0x28c846};}):[]};})};}})['then'](respondWithResult(_0x546999,null))['catch'](function(_0x5ae74f){var _0xa8474a=_0x169d17[_0x6de5('0x2f')]['test']?0x1f4:_0x5ae74f['statusCode']||0x1f4;logger[_0x6de5('0x26')](_0x6de5('0x6a'),_0x6de5('0x53'),_0xa8474a,JSON[_0x6de5('0x6b')](_0x5ae74f));delete _0x5ae74f[_0x6de5('0x28')];if(_0xa8474a===0x191){_0xa8474a=0x190;}_0x546999[_0x6de5('0x25')](_0xa8474a)['send'](_0x169d17['query'][_0x6de5('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x5ae74f[_0x6de5('0x6d')]}:_0x5ae74f);});};
\ No newline at end of file
index d8e26c0..9eaa128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x681a=['../../components/integrations/configuration','define','int_freshdesk_accounts','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0x681a,0xcf));var _0xa681=function(_0x5c0a22,_0x3e0eb3){_0x5c0a22=_0x5c0a22-0x0;var _0x292d8e=_0x681a[_0x5c0a22];return _0x292d8e;};'use strict';var _=require(_0xa681('0x0'));var util=require(_0xa681('0x1'));var logger=require('../../config/logger')(_0xa681('0x2'));var moment=require(_0xa681('0x3'));var BPromise=require(_0xa681('0x4'));var rp=require(_0xa681('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa681('0x6'));var config=require(_0xa681('0x7'));var attributes=require(_0xa681('0x8'));var integrations=require(_0xa681('0x9'));module['exports']=function(_0x56fd7b,_0x3342ee){return _0x56fd7b[_0xa681('0xa')]('FreshdeskAccount',attributes,{'tableName':_0xa681('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd33=['api','moment','request-promise','path','./intFreshdeskAccount.attributes','define','FreshdeskAccount','int_freshdesk_accounts','../../config/logger'];(function(_0xcf49fe,_0x3f4555){var _0x260fd7=function(_0x34ccf4){while(--_0x34ccf4){_0xcf49fe['push'](_0xcf49fe['shift']());}};_0x260fd7(++_0x3f4555);}(_0xdd33,0x1d3));var _0x3dd3=function(_0x2e6b89,_0xf8776b){_0x2e6b89=_0x2e6b89-0x0;var _0x5f0775=_0xdd33[_0x2e6b89];return _0x5f0775;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3dd3('0x0'))(_0x3dd3('0x1'));var moment=require(_0x3dd3('0x2'));var BPromise=require('bluebird');var rp=require(_0x3dd3('0x3'));var fs=require('fs');var path=require(_0x3dd3('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3dd3('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x219fb8,_0x3e3ed2){return _0x219fb8[_0x3dd3('0x6')](_0x3dd3('0x7'),attributes,{'tableName':_0x3dd3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f340546..b01c209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c39=['catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','map','include','model','debug','ShowFreshdeskAccount','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x438472,_0x3a446d){var _0x176019=function(_0x1cd9f7){while(--_0x1cd9f7){_0x438472['push'](_0x438472['shift']());}};_0x176019(++_0x3a446d);}(_0x9c39,0xe7));var _0x99c3=function(_0x2e76a7,_0x23871a){_0x2e76a7=_0x2e76a7-0x0;var _0x454cde=_0x9c39[_0x2e76a7];return _0x454cde;};'use strict';var _=require(_0x99c3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x99c3('0x1'));var rs=require(_0x99c3('0x2'));var fs=require('fs');var Redis=require(_0x99c3('0x3'));var db=require(_0x99c3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x99c3('0x5'))(_0x99c3('0x6'));var config=require(_0x99c3('0x7'));var jayson=require(_0x99c3('0x8'));var client=jayson[_0x99c3('0x9')][_0x99c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30f750,_0x5d43a0,_0x1ca320){return new BPromise(function(_0x59cb7a,_0x25c620){return client['request'](_0x30f750,_0x1ca320)[_0x99c3('0xb')](function(_0x4d2f58){logger[_0x99c3('0xc')](_0x99c3('0xd'),_0x5d43a0,_0x99c3('0xe'));logger['debug'](_0x99c3('0xf'),_0x5d43a0,_0x99c3('0xe'),JSON[_0x99c3('0x10')](_0x4d2f58));if(_0x4d2f58['error']){if(_0x4d2f58[_0x99c3('0x11')][_0x99c3('0x12')]===0x1f4){logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4d2f58['error'][_0x99c3('0x13')]);return _0x25c620(_0x4d2f58['error'][_0x99c3('0x13')]);}logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4d2f58[_0x99c3('0x11')][_0x99c3('0x13')]);return _0x59cb7a(_0x4d2f58['error'][_0x99c3('0x13')]);}else{logger[_0x99c3('0xc')]('FreshdeskAccount,\x20%s,\x20%s',_0x5d43a0,'request\x20sent');_0x59cb7a(_0x4d2f58[_0x99c3('0x14')]['message']);}})[_0x99c3('0x15')](function(_0x4f4092){logger[_0x99c3('0x11')](_0x99c3('0xd'),_0x5d43a0,_0x4f4092);_0x25c620(_0x4f4092);});});}exports[_0x99c3('0x16')]=function(_0x51dff5){var _0x15edaf=this;return new Promise(function(_0xa37c1b,_0x2856ba){return db[_0x99c3('0x17')][_0x99c3('0x18')]({'raw':_0x51dff5['options']?_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1a')]===undefined?!![]:![]:!![],'where':_0x51dff5[_0x99c3('0x19')]?_0x51dff5['options'][_0x99c3('0x1b')]||null:null,'attributes':_0x51dff5['options']?_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1c')]||null:null,'limit':_0x51dff5[_0x99c3('0x19')]?_0x51dff5['options'][_0x99c3('0x1d')]||null:null,'include':_0x51dff5[_0x99c3('0x19')]?_0x51dff5[_0x99c3('0x19')]['include']?_[_0x99c3('0x1e')](_0x51dff5[_0x99c3('0x19')][_0x99c3('0x1f')],function(_0x45eb70){return{'model':db[_0x45eb70[_0x99c3('0x20')]],'as':_0x45eb70['as'],'attributes':_0x45eb70[_0x99c3('0x1c')],'include':_0x45eb70[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x45eb70[_0x99c3('0x1f')],function(_0x347e2a){return{'model':db[_0x347e2a[_0x99c3('0x20')]],'as':_0x347e2a['as'],'attributes':_0x347e2a[_0x99c3('0x1c')],'include':_0x347e2a['include']?_['map'](_0x347e2a[_0x99c3('0x1f')],function(_0x466f4f){return{'model':db[_0x466f4f[_0x99c3('0x20')]],'as':_0x466f4f['as'],'attributes':_0x466f4f[_0x99c3('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x58be02){logger[_0x99c3('0xc')]('GetFreshdeskAccount',_0x51dff5);logger[_0x99c3('0x21')](_0x99c3('0x16'),_0x51dff5,JSON[_0x99c3('0x10')](_0x58be02));_0xa37c1b(_0x58be02);})[_0x99c3('0x15')](function(_0x56a021){logger[_0x99c3('0x11')](_0x99c3('0x16'),_0x56a021['message'],_0x51dff5);_0x2856ba(_0x15edaf[_0x99c3('0x11')](0x1f4,_0x56a021[_0x99c3('0x13')]));});});};exports[_0x99c3('0x22')]=function(_0x4f712f){var _0x5363fe=this;return new Promise(function(_0x51d431,_0x370264){return db['FreshdeskAccount'][_0x99c3('0x23')]({'raw':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1a')]===undefined?!![]:![]:!![],'where':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1b')]||null:null,'attributes':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1c')]||null:null,'include':_0x4f712f[_0x99c3('0x19')]?_0x4f712f[_0x99c3('0x19')][_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x4f712f[_0x99c3('0x19')]['include'],function(_0x2c8862){return{'model':db[_0x2c8862[_0x99c3('0x20')]],'as':_0x2c8862['as'],'attributes':_0x2c8862[_0x99c3('0x1c')],'include':_0x2c8862[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x2c8862['include'],function(_0x402551){return{'model':db[_0x402551[_0x99c3('0x20')]],'as':_0x402551['as'],'attributes':_0x402551['attributes'],'include':_0x402551[_0x99c3('0x1f')]?_[_0x99c3('0x1e')](_0x402551['include'],function(_0x56cc96){return{'model':db[_0x56cc96[_0x99c3('0x20')]],'as':_0x56cc96['as'],'attributes':_0x56cc96[_0x99c3('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x99c3('0xb')](function(_0x22ea79){logger['info']('ShowFreshdeskAccount',_0x4f712f);logger[_0x99c3('0x21')](_0x99c3('0x22'),_0x4f712f,JSON[_0x99c3('0x10')](_0x22ea79));_0x51d431(_0x22ea79);})['catch'](function(_0x4d61e9){logger[_0x99c3('0x11')](_0x99c3('0x22'),_0x4d61e9['message'],_0x4f712f);_0x370264(_0x5363fe[_0x99c3('0x11')](0x1f4,_0x4d61e9['message']));});});};
\ No newline at end of file
+var _0x05da=['then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','map','include','model','ShowFreshdeskAccount','find','raw','debug','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x05da,0x7d));var _0xa05d=function(_0x31ace2,_0x159b78){_0x31ace2=_0x31ace2-0x0;var _0x331730=_0x05da[_0x31ace2];return _0x331730;};'use strict';var _=require('lodash');var util=require(_0xa05d('0x0'));var moment=require(_0xa05d('0x1'));var BPromise=require('bluebird');var rs=require(_0xa05d('0x2'));var fs=require('fs');var Redis=require(_0xa05d('0x3'));var db=require(_0xa05d('0x4'))['db'];var utils=require(_0xa05d('0x5'));var logger=require('../../config/logger')(_0xa05d('0x6'));var config=require(_0xa05d('0x7'));var jayson=require(_0xa05d('0x8'));var client=jayson[_0xa05d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5f03fa,_0x417e44,_0x58c7a0){return new BPromise(function(_0xd20ad4,_0x91cf1c){return client[_0xa05d('0xa')](_0x5f03fa,_0x58c7a0)[_0xa05d('0xb')](function(_0x1e6611){logger[_0xa05d('0xc')](_0xa05d('0xd'),_0x417e44,_0xa05d('0xe'));logger['debug'](_0xa05d('0xf'),_0x417e44,_0xa05d('0xe'),JSON[_0xa05d('0x10')](_0x1e6611));if(_0x1e6611['error']){if(_0x1e6611[_0xa05d('0x11')]['code']===0x1f4){logger[_0xa05d('0x11')](_0xa05d('0xd'),_0x417e44,_0x1e6611[_0xa05d('0x11')][_0xa05d('0x12')]);return _0x91cf1c(_0x1e6611[_0xa05d('0x11')][_0xa05d('0x12')]);}logger[_0xa05d('0x11')](_0xa05d('0xd'),_0x417e44,_0x1e6611[_0xa05d('0x11')][_0xa05d('0x12')]);return _0xd20ad4(_0x1e6611[_0xa05d('0x11')][_0xa05d('0x12')]);}else{logger[_0xa05d('0xc')](_0xa05d('0xd'),_0x417e44,_0xa05d('0xe'));_0xd20ad4(_0x1e6611[_0xa05d('0x13')][_0xa05d('0x12')]);}})[_0xa05d('0x14')](function(_0x53161c){logger[_0xa05d('0x11')](_0xa05d('0xd'),_0x417e44,_0x53161c);_0x91cf1c(_0x53161c);});});}exports[_0xa05d('0x15')]=function(_0x2f4033){var _0x4f81d2=this;return new Promise(function(_0x16483d,_0x3749b1){return db[_0xa05d('0x16')][_0xa05d('0x17')]({'raw':_0x2f4033[_0xa05d('0x18')]?_0x2f4033[_0xa05d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2f4033[_0xa05d('0x18')]?_0x2f4033[_0xa05d('0x18')][_0xa05d('0x19')]||null:null,'attributes':_0x2f4033[_0xa05d('0x18')]?_0x2f4033[_0xa05d('0x18')][_0xa05d('0x1a')]||null:null,'limit':_0x2f4033['options']?_0x2f4033[_0xa05d('0x18')]['limit']||null:null,'include':_0x2f4033[_0xa05d('0x18')]?_0x2f4033[_0xa05d('0x18')]['include']?_[_0xa05d('0x1b')](_0x2f4033[_0xa05d('0x18')][_0xa05d('0x1c')],function(_0x37a5f2){return{'model':db[_0x37a5f2[_0xa05d('0x1d')]],'as':_0x37a5f2['as'],'attributes':_0x37a5f2[_0xa05d('0x1a')],'include':_0x37a5f2['include']?_['map'](_0x37a5f2[_0xa05d('0x1c')],function(_0x307ffc){return{'model':db[_0x307ffc[_0xa05d('0x1d')]],'as':_0x307ffc['as'],'attributes':_0x307ffc[_0xa05d('0x1a')],'include':_0x307ffc[_0xa05d('0x1c')]?_['map'](_0x307ffc[_0xa05d('0x1c')],function(_0x3902bb){return{'model':db[_0x3902bb[_0xa05d('0x1d')]],'as':_0x3902bb['as'],'attributes':_0x3902bb[_0xa05d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa05d('0xb')](function(_0x3e3946){logger[_0xa05d('0xc')](_0xa05d('0x15'),_0x2f4033);logger['debug'](_0xa05d('0x15'),_0x2f4033,JSON[_0xa05d('0x10')](_0x3e3946));_0x16483d(_0x3e3946);})[_0xa05d('0x14')](function(_0x3263a8){logger['error'](_0xa05d('0x15'),_0x3263a8[_0xa05d('0x12')],_0x2f4033);_0x3749b1(_0x4f81d2['error'](0x1f4,_0x3263a8['message']));});});};exports[_0xa05d('0x1e')]=function(_0x2ea6d4){var _0x416157=this;return new Promise(function(_0x2f41c0,_0x5d2679){return db['FreshdeskAccount'][_0xa05d('0x1f')]({'raw':_0x2ea6d4[_0xa05d('0x18')]?_0x2ea6d4[_0xa05d('0x18')][_0xa05d('0x20')]===undefined?!![]:![]:!![],'where':_0x2ea6d4[_0xa05d('0x18')]?_0x2ea6d4[_0xa05d('0x18')][_0xa05d('0x19')]||null:null,'attributes':_0x2ea6d4[_0xa05d('0x18')]?_0x2ea6d4[_0xa05d('0x18')][_0xa05d('0x1a')]||null:null,'include':_0x2ea6d4['options']?_0x2ea6d4[_0xa05d('0x18')][_0xa05d('0x1c')]?_[_0xa05d('0x1b')](_0x2ea6d4[_0xa05d('0x18')][_0xa05d('0x1c')],function(_0xd55d3f){return{'model':db[_0xd55d3f[_0xa05d('0x1d')]],'as':_0xd55d3f['as'],'attributes':_0xd55d3f[_0xa05d('0x1a')],'include':_0xd55d3f[_0xa05d('0x1c')]?_[_0xa05d('0x1b')](_0xd55d3f[_0xa05d('0x1c')],function(_0x5cb9aa){return{'model':db[_0x5cb9aa[_0xa05d('0x1d')]],'as':_0x5cb9aa['as'],'attributes':_0x5cb9aa[_0xa05d('0x1a')],'include':_0x5cb9aa['include']?_['map'](_0x5cb9aa[_0xa05d('0x1c')],function(_0x52ff20){return{'model':db[_0x52ff20[_0xa05d('0x1d')]],'as':_0x52ff20['as'],'attributes':_0x52ff20[_0xa05d('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11c4f7){logger[_0xa05d('0xc')](_0xa05d('0x1e'),_0x2ea6d4);logger[_0xa05d('0x21')](_0xa05d('0x1e'),_0x2ea6d4,JSON[_0xa05d('0x10')](_0x11c4f7));_0x2f41c0(_0x11c4f7);})['catch'](function(_0x5295e8){logger[_0xa05d('0x11')]('ShowFreshdeskAccount',_0x5295e8['message'],_0x2ea6d4);_0x5d2679(_0x416157[_0xa05d('0x11')](0x1f4,_0x5295e8['message']));});});};
\ No newline at end of file
index f497007..2aa0732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa877=['multer','path','express','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','/:id','/:id/fields','getFields','get','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','setTags','put','update','destroy','exports'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xa877,0xa1));var _0x7a87=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa877[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x7a87('0x0'));var util=require('util');var path=require(_0x7a87('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a87('0x2'));var router=express['Router']();var fs_extra=require(_0x7a87('0x3'));var auth=require(_0x7a87('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7a87('0x5'));var controller=require(_0x7a87('0x6'));router['get']('/',auth[_0x7a87('0x7')](),controller['index']);router['get'](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller['show']);router['get'](_0x7a87('0x9'),auth[_0x7a87('0x7')](),controller[_0x7a87('0xa')]);router[_0x7a87('0xb')]('/:id/subjects',auth[_0x7a87('0x7')](),controller[_0x7a87('0xc')]);router['get'](_0x7a87('0xd'),auth[_0x7a87('0x7')](),controller[_0x7a87('0xe')]);router[_0x7a87('0xb')](_0x7a87('0xf'),auth['isAuthenticated'](),controller[_0x7a87('0x10')]);router['post']('/',auth[_0x7a87('0x7')](),controller[_0x7a87('0x11')]);router['post'](_0x7a87('0xf'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x12')]);router[_0x7a87('0x13')](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x14')]);router['delete'](_0x7a87('0x8'),auth[_0x7a87('0x7')](),controller[_0x7a87('0x15')]);module[_0x7a87('0x16')]=router;
\ No newline at end of file
+var _0x9d94=['destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','update'];(function(_0x2e7361,_0x5cbd15){var _0x37de99=function(_0x3ed4e7){while(--_0x3ed4e7){_0x2e7361['push'](_0x2e7361['shift']());}};_0x37de99(++_0x5cbd15);}(_0x9d94,0xa3));var _0x49d9=function(_0x199255,_0x480f85){_0x199255=_0x199255-0x0;var _0xa06f53=_0x9d94[_0x199255];return _0xa06f53;};'use strict';var multer=require(_0x49d9('0x0'));var util=require(_0x49d9('0x1'));var path=require(_0x49d9('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x49d9('0x3')]();var fs_extra=require(_0x49d9('0x4'));var auth=require(_0x49d9('0x5'));var interaction=require(_0x49d9('0x6'));var config=require('../../config/environment');var controller=require('./intFreshdeskConfiguration.controller');router[_0x49d9('0x7')]('/',auth[_0x49d9('0x8')](),controller[_0x49d9('0x9')]);router['get'](_0x49d9('0xa'),auth[_0x49d9('0x8')](),controller[_0x49d9('0xb')]);router[_0x49d9('0x7')](_0x49d9('0xc'),auth[_0x49d9('0x8')](),controller['getFields']);router['get'](_0x49d9('0xd'),auth[_0x49d9('0x8')](),controller[_0x49d9('0xe')]);router[_0x49d9('0x7')](_0x49d9('0xf'),auth[_0x49d9('0x8')](),controller['getDescriptions']);router[_0x49d9('0x7')](_0x49d9('0x10'),auth[_0x49d9('0x8')](),controller[_0x49d9('0x11')]);router[_0x49d9('0x12')]('/',auth['isAuthenticated'](),controller[_0x49d9('0x13')]);router[_0x49d9('0x12')](_0x49d9('0x10'),auth['isAuthenticated'](),controller['setTags']);router['put'](_0x49d9('0xa'),auth[_0x49d9('0x8')](),controller[_0x49d9('0x14')]);router['delete']('/:id',auth[_0x49d9('0x8')](),controller[_0x49d9('0x15')]);module[_0x49d9('0x16')]=router;
\ No newline at end of file
index 13db291..f359392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8be=['sequelize','STRING'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xf8be,0x92));var _0xef8b=function(_0x5b0ac9,_0x1ce921){_0x5b0ac9=_0x5b0ac9-0x0;var _0x103d08=_0xf8be[_0x5b0ac9];return _0x103d08;};'use strict';var Sequelize=require(_0xef8b('0x0'));module['exports']={'name':{'type':Sequelize[_0xef8b('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0724=['sequelize','exports','STRING'];(function(_0x16ebf8,_0x347eb2){var _0x5e1d37=function(_0x55d4b4){while(--_0x55d4b4){_0x16ebf8['push'](_0x16ebf8['shift']());}};_0x5e1d37(++_0x347eb2);}(_0x0724,0x120));var _0x4072=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0724[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x4072('0x0'));module[_0x4072('0x1')]={'name':{'type':Sequelize[_0x4072('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0b9259d..0749bd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c68=['where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','create','body','params','getFields','findOne','FreshdeskField','order','pick','nolimit','getSubjects','getDescriptions','Tag','getTags','setTags','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','name','send','map','FreshdeskConfiguration','rawAttributes','query','intersection','model','attributes','fields','length','hasOwnProperty','sort'];(function(_0x1afd36,_0x447b43){var _0x59e59f=function(_0x4b71ba){while(--_0x4b71ba){_0x1afd36['push'](_0x1afd36['shift']());}};_0x59e59f(++_0x447b43);}(_0x7c68,0x15b));var _0x87c6=function(_0x1d5e54,_0x5115e6){_0x1d5e54=_0x1d5e54-0x0;var _0x420d64=_0x7c68[_0x1d5e54];return _0x420d64;};'use strict';var emlformat=require(_0x87c6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87c6('0x1'));var jsonpatch=require(_0x87c6('0x2'));var rp=require(_0x87c6('0x3'));var moment=require(_0x87c6('0x4'));var BPromise=require(_0x87c6('0x5'));var Mustache=require(_0x87c6('0x6'));var util=require(_0x87c6('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x87c6('0x8'));var ejs=require(_0x87c6('0x9'));var fs=require('fs');var fs_extra=require(_0x87c6('0xa'));var _=require(_0x87c6('0xb'));var squel=require(_0x87c6('0xc'));var crypto=require(_0x87c6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x87c6('0xe'));var toCsv=require(_0x87c6('0x8'));var querystring=require(_0x87c6('0xf'));var Papa=require('papaparse');var Redis=require(_0x87c6('0x10'));var authService=require(_0x87c6('0x11'));var qs=require(_0x87c6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x87c6('0x13'));var logger=require(_0x87c6('0x14'))(_0x87c6('0x15'));var utils=require(_0x87c6('0x16'));var config=require(_0x87c6('0x17'));var licenseUtil=require(_0x87c6('0x18'));var db=require(_0x87c6('0x19'))['db'];function respondWithStatusCode(_0x42e93c,_0x599aab){_0x599aab=_0x599aab||0xcc;return function(_0x41e965){if(_0x41e965){return _0x42e93c[_0x87c6('0x1a')](_0x599aab);}return _0x42e93c[_0x87c6('0x1b')](_0x599aab)['end']();};}function respondWithResult(_0x460f8a,_0x489e2a){_0x489e2a=_0x489e2a||0xc8;return function(_0x1502f2){if(_0x1502f2){return _0x460f8a[_0x87c6('0x1b')](_0x489e2a)['json'](_0x1502f2);}};}function respondWithFilteredResult(_0x3eb648,_0x53ed7f){return function(_0x51cfb1){if(_0x51cfb1){var _0x1cd49c=typeof _0x53ed7f[_0x87c6('0x1c')]===_0x87c6('0x1d')&&typeof _0x53ed7f[_0x87c6('0x1e')]===_0x87c6('0x1d');var _0x1d1642=_0x51cfb1[_0x87c6('0x1f')];var _0x2b7879=_0x1cd49c?0x0:_0x53ed7f[_0x87c6('0x1c')];var _0x22f6b9=_0x1cd49c?_0x51cfb1[_0x87c6('0x1f')]:_0x53ed7f[_0x87c6('0x1c')]+_0x53ed7f[_0x87c6('0x1e')];var _0x5f3186;if(_0x22f6b9>=_0x1d1642){_0x22f6b9=_0x1d1642;_0x5f3186=0xc8;}else{_0x5f3186=0xce;}_0x3eb648[_0x87c6('0x1b')](_0x5f3186);return _0x3eb648[_0x87c6('0x20')](_0x87c6('0x21'),_0x2b7879+'-'+_0x22f6b9+'/'+_0x1d1642)[_0x87c6('0x22')](_0x51cfb1);}return null;};}function patchUpdates(_0x4cf65b){return function(_0x469238){try{jsonpatch['apply'](_0x469238,_0x4cf65b,!![]);}catch(_0x1d67af){return BPromise[_0x87c6('0x23')](_0x1d67af);}return _0x469238['save']();};}function saveUpdates(_0x25648f,_0x53b0d3){return function(_0x1a2f2d){if(_0x1a2f2d){return _0x1a2f2d[_0x87c6('0x24')](_0x25648f)[_0x87c6('0x25')](function(_0x47e367){return _0x47e367;});}return null;};}function removeEntity(_0x5e02d6,_0x518da4){return function(_0x1dfeac){if(_0x1dfeac){return _0x1dfeac[_0x87c6('0x26')]()[_0x87c6('0x25')](function(){_0x5e02d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a6221,_0x200bc5){return function(_0x5b4471){if(!_0x5b4471){_0x2a6221[_0x87c6('0x1a')](0x194);}return _0x5b4471;};}function handleError(_0x594816,_0xd6ed69){_0xd6ed69=_0xd6ed69||0x1f4;return function(_0x562ff0){logger[_0x87c6('0x27')](_0x562ff0['stack']);if(_0x562ff0[_0x87c6('0x28')]){delete _0x562ff0['name'];}_0x594816['status'](_0xd6ed69)[_0x87c6('0x29')](_0x562ff0);};}exports['index']=function(_0x4a1c46,_0x3c4eea){var _0x183181={},_0x4a1163={},_0x1e1895={'count':0x0,'rows':[]};var _0x305cea=_[_0x87c6('0x2a')](db[_0x87c6('0x2b')][_0x87c6('0x2c')],function(_0x36036c){return{'name':_0x36036c['fieldName'],'type':_0x36036c['type']['key']};});_0x4a1163['model']=_[_0x87c6('0x2a')](_0x305cea,_0x87c6('0x28'));_0x4a1163[_0x87c6('0x2d')]=_['keys'](_0x4a1c46['query']);_0x4a1163['filters']=_[_0x87c6('0x2e')](_0x4a1163[_0x87c6('0x2f')],_0x4a1163['query']);_0x183181[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x4a1163[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x4a1c46['query'][_0x87c6('0x31')]));_0x183181[_0x87c6('0x30')]=_0x183181[_0x87c6('0x30')][_0x87c6('0x32')]?_0x183181[_0x87c6('0x30')]:_0x4a1163['model'];if(!_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x183181[_0x87c6('0x1e')]=qs[_0x87c6('0x1e')](_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x183181[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x4a1c46[_0x87c6('0x2d')]['offset']);}_0x183181['order']=qs['sort'](_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x183181[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_['pick'](_0x4a1c46[_0x87c6('0x2d')],_0x4a1163[_0x87c6('0x36')]),_0x305cea);if(_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x183181['where']=_[_0x87c6('0x38')](_0x183181[_0x87c6('0x35')],{'$or':_[_0x87c6('0x2a')](_0x305cea,function(_0x359ffa){if(_0x359ffa['type']!==_0x87c6('0x39')){var _0x4fc870={};_0x4fc870[_0x359ffa['name']]={'$like':'%'+_0x4a1c46['query']['filter']+'%'};return _0x4fc870;}})});}_0x183181=_['merge']({},_0x183181,_0x4a1c46[_0x87c6('0x3a')]);var _0x389e05={'where':_0x183181[_0x87c6('0x35')]};return db[_0x87c6('0x2b')][_0x87c6('0x1f')](_0x389e05)[_0x87c6('0x25')](function(_0x25632a){_0x1e1895[_0x87c6('0x1f')]=_0x25632a;if(_0x4a1c46[_0x87c6('0x2d')][_0x87c6('0x3b')]){_0x183181[_0x87c6('0x3c')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x87c6('0x3d')](_0x183181);})[_0x87c6('0x25')](function(_0x4ed3b0){_0x1e1895[_0x87c6('0x3e')]=_0x4ed3b0;return _0x1e1895;})[_0x87c6('0x25')](respondWithFilteredResult(_0x3c4eea,_0x183181))[_0x87c6('0x3f')](handleError(_0x3c4eea,null));};exports['show']=function(_0x3cdbbb,_0x5e478a){var _0x5b45a4={'raw':![],'where':{'id':_0x3cdbbb['params']['id']}},_0x3de96e={};_0x3de96e[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db['FreshdeskConfiguration'][_0x87c6('0x2c')]);_0x3de96e[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x3cdbbb['query']);_0x3de96e['filters']=_['intersection'](_0x3de96e['model'],_0x3de96e[_0x87c6('0x2d')]);_0x5b45a4[_0x87c6('0x30')]=_['intersection'](_0x3de96e['model'],qs[_0x87c6('0x31')](_0x3cdbbb[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x5b45a4[_0x87c6('0x30')]=_0x5b45a4[_0x87c6('0x30')][_0x87c6('0x32')]?_0x5b45a4[_0x87c6('0x30')]:_0x3de96e[_0x87c6('0x2f')];if(_0x3cdbbb[_0x87c6('0x2d')][_0x87c6('0x3b')]){_0x5b45a4[_0x87c6('0x3c')]=[{'all':!![]}];}_0x5b45a4=_[_0x87c6('0x38')]({},_0x5b45a4,_0x3cdbbb[_0x87c6('0x3a')]);return db[_0x87c6('0x2b')][_0x87c6('0x41')](_0x5b45a4)[_0x87c6('0x25')](handleEntityNotFound(_0x5e478a,null))[_0x87c6('0x25')](respondWithResult(_0x5e478a,null))[_0x87c6('0x3f')](handleError(_0x5e478a,null));};exports[_0x87c6('0x42')]=function(_0x3b2218,_0x1ce8cf){return db[_0x87c6('0x2b')]['create'](_0x3b2218[_0x87c6('0x43')],{})[_0x87c6('0x25')](respondWithResult(_0x1ce8cf,0xc9))[_0x87c6('0x3f')](handleError(_0x1ce8cf,null));};exports[_0x87c6('0x24')]=function(_0x34180f,_0x1bee96){if(_0x34180f[_0x87c6('0x43')]['id']){delete _0x34180f[_0x87c6('0x43')]['id'];}return db[_0x87c6('0x2b')][_0x87c6('0x41')]({'where':{'id':_0x34180f[_0x87c6('0x44')]['id']}})['then'](handleEntityNotFound(_0x1bee96,null))[_0x87c6('0x25')](saveUpdates(_0x34180f[_0x87c6('0x43')],null))[_0x87c6('0x25')](respondWithResult(_0x1bee96,null))[_0x87c6('0x3f')](handleError(_0x1bee96,null));};exports[_0x87c6('0x26')]=function(_0x54d1f6,_0x421d1c){return db[_0x87c6('0x2b')]['find']({'where':{'id':_0x54d1f6[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x421d1c,null))['then'](removeEntity(_0x421d1c,null))[_0x87c6('0x3f')](handleError(_0x421d1c,null));};exports[_0x87c6('0x45')]=function(_0x4223a0,_0x332755,_0x176a3f){var _0x1cf03c={};var _0x4332f7={};var _0x5b582d;var _0x474cc3;return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x4223a0[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x332755,null))[_0x87c6('0x25')](function(_0x1df12a){if(_0x1df12a){_0x5b582d=_0x1df12a;_0x4332f7[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')][_0x87c6('0x2c')]);_0x4332f7[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x4223a0[_0x87c6('0x2d')]);_0x4332f7[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x4332f7[_0x87c6('0x2f')],_0x4332f7['query']);_0x1cf03c[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x4332f7[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x1cf03c[_0x87c6('0x30')]=_0x1cf03c[_0x87c6('0x30')][_0x87c6('0x32')]?_0x1cf03c[_0x87c6('0x30')]:_0x4332f7[_0x87c6('0x2f')];_0x1cf03c[_0x87c6('0x48')]=qs['sort'](_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x1cf03c['where']=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x4223a0[_0x87c6('0x2d')],_0x4332f7[_0x87c6('0x36')]));if(_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x1cf03c[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x1cf03c['where'],{'$or':_[_0x87c6('0x2a')](_0x1cf03c[_0x87c6('0x30')],function(_0x690da2){var _0x30e4f2={};_0x30e4f2[_0x690da2]={'$like':'%'+_0x4223a0['query'][_0x87c6('0x37')]+'%'};return _0x30e4f2;})});}_0x1cf03c=_[_0x87c6('0x38')]({},_0x1cf03c,_0x4223a0[_0x87c6('0x3a')]);return _0x5b582d[_0x87c6('0x45')](_0x1cf03c);}})['then'](function(_0x293073){if(_0x293073){_0x474cc3=_0x293073[_0x87c6('0x32')];if(!_0x4223a0[_0x87c6('0x2d')][_0x87c6('0x33')](_0x87c6('0x4a'))){_0x1cf03c[_0x87c6('0x1e')]=qs['limit'](_0x4223a0[_0x87c6('0x2d')]['limit']);_0x1cf03c[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x4223a0['query'][_0x87c6('0x1c')]);}return _0x5b582d[_0x87c6('0x45')](_0x1cf03c);}})[_0x87c6('0x25')](function(_0x533db9){if(_0x533db9){return _0x533db9?{'count':_0x474cc3,'rows':_0x533db9}:null;}})[_0x87c6('0x25')](respondWithResult(_0x332755,null))[_0x87c6('0x3f')](handleError(_0x332755,null));};exports[_0x87c6('0x4b')]=function(_0xc61f48,_0x2cb2fd,_0x3208ae){var _0x39f112={};var _0x53dca9={};var _0x81de7;var _0x47fc13;return db[_0x87c6('0x2b')][_0x87c6('0x46')]({'where':{'id':_0xc61f48[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x2cb2fd,null))[_0x87c6('0x25')](function(_0x340b5d){if(_0x340b5d){_0x81de7=_0x340b5d;_0x53dca9[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')]['rawAttributes']);_0x53dca9[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0xc61f48[_0x87c6('0x2d')]);_0x53dca9[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x53dca9[_0x87c6('0x2f')],_0x53dca9['query']);_0x39f112[_0x87c6('0x30')]=_[_0x87c6('0x2e')](_0x53dca9[_0x87c6('0x2f')],qs['fields'](_0xc61f48['query'][_0x87c6('0x31')]));_0x39f112[_0x87c6('0x30')]=_0x39f112['attributes']['length']?_0x39f112[_0x87c6('0x30')]:_0x53dca9[_0x87c6('0x2f')];_0x39f112['order']=qs[_0x87c6('0x34')](_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x39f112[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0xc61f48[_0x87c6('0x2d')],_0x53dca9[_0x87c6('0x36')]));if(_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x37')]){_0x39f112[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x39f112['where'],{'$or':_[_0x87c6('0x2a')](_0x39f112[_0x87c6('0x30')],function(_0x1204bc){var _0x26a758={};_0x26a758[_0x1204bc]={'$like':'%'+_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x26a758;})});}_0x39f112=_[_0x87c6('0x38')]({},_0x39f112,_0xc61f48['options']);return _0x81de7[_0x87c6('0x4b')](_0x39f112);}})[_0x87c6('0x25')](function(_0x22aa9e){if(_0x22aa9e){_0x47fc13=_0x22aa9e[_0x87c6('0x32')];if(!_0xc61f48[_0x87c6('0x2d')]['hasOwnProperty'](_0x87c6('0x4a'))){_0x39f112['limit']=qs['limit'](_0xc61f48['query'][_0x87c6('0x1e')]);_0x39f112[_0x87c6('0x1c')]=qs['offset'](_0xc61f48[_0x87c6('0x2d')][_0x87c6('0x1c')]);}return _0x81de7[_0x87c6('0x4b')](_0x39f112);}})[_0x87c6('0x25')](function(_0xc75fbe){if(_0xc75fbe){return _0xc75fbe?{'count':_0x47fc13,'rows':_0xc75fbe}:null;}})['then'](respondWithResult(_0x2cb2fd,null))['catch'](handleError(_0x2cb2fd,null));};exports['getDescriptions']=function(_0x42af70,_0x218951,_0xe7ff92){var _0x5622f0={};var _0x302dee={};var _0x4b0c24;var _0x3c2cee;return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x42af70[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x218951,null))[_0x87c6('0x25')](function(_0x53f864){if(_0x53f864){_0x4b0c24=_0x53f864;_0x302dee[_0x87c6('0x2f')]=_[_0x87c6('0x40')](db[_0x87c6('0x47')][_0x87c6('0x2c')]);_0x302dee['query']=_[_0x87c6('0x40')](_0x42af70[_0x87c6('0x2d')]);_0x302dee['filters']=_[_0x87c6('0x2e')](_0x302dee['model'],_0x302dee[_0x87c6('0x2d')]);_0x5622f0['attributes']=_[_0x87c6('0x2e')](_0x302dee[_0x87c6('0x2f')],qs[_0x87c6('0x31')](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x31')]));_0x5622f0[_0x87c6('0x30')]=_0x5622f0['attributes'][_0x87c6('0x32')]?_0x5622f0[_0x87c6('0x30')]:_0x302dee['model'];_0x5622f0[_0x87c6('0x48')]=qs[_0x87c6('0x34')](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x34')]);_0x5622f0[_0x87c6('0x35')]=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x42af70[_0x87c6('0x2d')],_0x302dee[_0x87c6('0x36')]));if(_0x42af70[_0x87c6('0x2d')]['filter']){_0x5622f0[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x5622f0[_0x87c6('0x35')],{'$or':_['map'](_0x5622f0[_0x87c6('0x30')],function(_0x114372){var _0x380426={};_0x380426[_0x114372]={'$like':'%'+_0x42af70[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x380426;})});}_0x5622f0=_[_0x87c6('0x38')]({},_0x5622f0,_0x42af70[_0x87c6('0x3a')]);return _0x4b0c24[_0x87c6('0x4c')](_0x5622f0);}})['then'](function(_0x1ca3eb){if(_0x1ca3eb){_0x3c2cee=_0x1ca3eb[_0x87c6('0x32')];if(!_0x42af70[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x5622f0[_0x87c6('0x1e')]=qs['limit'](_0x42af70[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x5622f0[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x42af70['query'][_0x87c6('0x1c')]);}return _0x4b0c24[_0x87c6('0x4c')](_0x5622f0);}})[_0x87c6('0x25')](function(_0xbf8c17){if(_0xbf8c17){return _0xbf8c17?{'count':_0x3c2cee,'rows':_0xbf8c17}:null;}})['then'](respondWithResult(_0x218951,null))[_0x87c6('0x3f')](handleError(_0x218951,null));};exports['getTags']=function(_0x319cf8,_0x573cbc,_0x47d02f){var _0x1d03e7={};var _0x6b0ecc={};var _0x583115;var _0x8bcc6d;return db[_0x87c6('0x2b')]['findOne']({'where':{'id':_0x319cf8[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x573cbc,null))[_0x87c6('0x25')](function(_0x1200e6){if(_0x1200e6){_0x583115=_0x1200e6;_0x6b0ecc['model']=_[_0x87c6('0x40')](db[_0x87c6('0x4d')][_0x87c6('0x2c')]);_0x6b0ecc[_0x87c6('0x2d')]=_[_0x87c6('0x40')](_0x319cf8['query']);_0x6b0ecc[_0x87c6('0x36')]=_[_0x87c6('0x2e')](_0x6b0ecc[_0x87c6('0x2f')],_0x6b0ecc[_0x87c6('0x2d')]);_0x1d03e7[_0x87c6('0x30')]=_['intersection'](_0x6b0ecc[_0x87c6('0x2f')],qs['fields'](_0x319cf8[_0x87c6('0x2d')]['fields']));_0x1d03e7['attributes']=_0x1d03e7['attributes'][_0x87c6('0x32')]?_0x1d03e7['attributes']:_0x6b0ecc['model'];_0x1d03e7[_0x87c6('0x48')]=qs['sort'](_0x319cf8['query'][_0x87c6('0x34')]);_0x1d03e7['where']=qs[_0x87c6('0x36')](_[_0x87c6('0x49')](_0x319cf8[_0x87c6('0x2d')],_0x6b0ecc[_0x87c6('0x36')]));if(_0x319cf8['query'][_0x87c6('0x37')]){_0x1d03e7[_0x87c6('0x35')]=_[_0x87c6('0x38')](_0x1d03e7[_0x87c6('0x35')],{'$or':_[_0x87c6('0x2a')](_0x1d03e7[_0x87c6('0x30')],function(_0x44b015){var _0x52deeb={};_0x52deeb[_0x44b015]={'$like':'%'+_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x37')]+'%'};return _0x52deeb;})});}_0x1d03e7=_[_0x87c6('0x38')]({},_0x1d03e7,_0x319cf8[_0x87c6('0x3a')]);return _0x583115[_0x87c6('0x4e')](_0x1d03e7);}})['then'](function(_0x4d98a3){if(_0x4d98a3){_0x8bcc6d=_0x4d98a3[_0x87c6('0x32')];if(!_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x33')]('nolimit')){_0x1d03e7['limit']=qs[_0x87c6('0x1e')](_0x319cf8[_0x87c6('0x2d')][_0x87c6('0x1e')]);_0x1d03e7[_0x87c6('0x1c')]=qs[_0x87c6('0x1c')](_0x319cf8['query'][_0x87c6('0x1c')]);}return _0x583115['getTags'](_0x1d03e7);}})[_0x87c6('0x25')](function(_0x2b7b47){if(_0x2b7b47){return _0x2b7b47?{'count':_0x8bcc6d,'rows':_0x2b7b47}:null;}})[_0x87c6('0x25')](respondWithResult(_0x573cbc,null))[_0x87c6('0x3f')](handleError(_0x573cbc,null));};exports['setTags']=function(_0x3bf0a0,_0x3d8821,_0x3aafaa){if(_0x3bf0a0[_0x87c6('0x43')]['id']){delete _0x3bf0a0[_0x87c6('0x43')]['id'];}return db['FreshdeskConfiguration'][_0x87c6('0x46')]({'where':{'id':_0x3bf0a0[_0x87c6('0x44')]['id']}})[_0x87c6('0x25')](handleEntityNotFound(_0x3d8821,null))[_0x87c6('0x25')](function(_0x379124){if(_0x379124){return _0x379124[_0x87c6('0x4f')](_0x3bf0a0[_0x87c6('0x43')]['ids']||[]);}return null;})['then'](respondWithResult(_0x3d8821,null))[_0x87c6('0x3f')](handleError(_0x3d8821,null));};
\ No newline at end of file
+var _0xb8cb=['error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','FreshdeskConfiguration','include','findAll','rows','catch','show','params','intersection','includeAll','find','create','update','body','FreshdeskField','pick','getFields','nolimit','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','then','destroy','sendStatus'];(function(_0x170772,_0x1f1ee7){var _0x3ef69c=function(_0x4cde12){while(--_0x4cde12){_0x170772['push'](_0x170772['shift']());}};_0x3ef69c(++_0x1f1ee7);}(_0xb8cb,0xe1));var _0xbb8c=function(_0x225f76,_0x50ac2b){_0x225f76=_0x225f76-0x0;var _0x4f90db=_0xb8cb[_0x225f76];return _0x4f90db;};'use strict';var emlformat=require(_0xbb8c('0x0'));var rimraf=require(_0xbb8c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb8c('0x2'));var rp=require(_0xbb8c('0x3'));var moment=require(_0xbb8c('0x4'));var BPromise=require(_0xbb8c('0x5'));var Mustache=require(_0xbb8c('0x6'));var util=require(_0xbb8c('0x7'));var path=require('path');var sox=require(_0xbb8c('0x8'));var csv=require(_0xbb8c('0x9'));var ejs=require(_0xbb8c('0xa'));var fs=require('fs');var fs_extra=require(_0xbb8c('0xb'));var _=require(_0xbb8c('0xc'));var squel=require(_0xbb8c('0xd'));var crypto=require(_0xbb8c('0xe'));var jsforce=require(_0xbb8c('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbb8c('0x9'));var querystring=require(_0xbb8c('0x10'));var Papa=require(_0xbb8c('0x11'));var Redis=require(_0xbb8c('0x12'));var authService=require(_0xbb8c('0x13'));var qs=require(_0xbb8c('0x14'));var as=require(_0xbb8c('0x15'));var hardwareService=require(_0xbb8c('0x16'));var logger=require('../../config/logger')(_0xbb8c('0x17'));var utils=require('../../config/utils');var config=require(_0xbb8c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb8c('0x19'))['db'];function respondWithStatusCode(_0x4106ed,_0x316a3c){_0x316a3c=_0x316a3c||0xcc;return function(_0x4b3be0){if(_0x4b3be0){return _0x4106ed['sendStatus'](_0x316a3c);}return _0x4106ed[_0xbb8c('0x1a')](_0x316a3c)[_0xbb8c('0x1b')]();};}function respondWithResult(_0x2ae379,_0xeece98){_0xeece98=_0xeece98||0xc8;return function(_0x17a34f){if(_0x17a34f){return _0x2ae379[_0xbb8c('0x1a')](_0xeece98)[_0xbb8c('0x1c')](_0x17a34f);}};}function respondWithFilteredResult(_0x5896c5,_0x486c87){return function(_0x391f30){if(_0x391f30){var _0x458241=typeof _0x486c87[_0xbb8c('0x1d')]==='undefined'&&typeof _0x486c87['limit']===_0xbb8c('0x1e');var _0x5f5822=_0x391f30[_0xbb8c('0x1f')];var _0x23fdfa=_0x458241?0x0:_0x486c87[_0xbb8c('0x1d')];var _0x54006d=_0x458241?_0x391f30[_0xbb8c('0x1f')]:_0x486c87['offset']+_0x486c87[_0xbb8c('0x20')];var _0x26ace6;if(_0x54006d>=_0x5f5822){_0x54006d=_0x5f5822;_0x26ace6=0xc8;}else{_0x26ace6=0xce;}_0x5896c5[_0xbb8c('0x1a')](_0x26ace6);return _0x5896c5['set'](_0xbb8c('0x21'),_0x23fdfa+'-'+_0x54006d+'/'+_0x5f5822)[_0xbb8c('0x1c')](_0x391f30);}return null;};}function patchUpdates(_0x1ad1ba){return function(_0x5cf19a){try{jsonpatch[_0xbb8c('0x22')](_0x5cf19a,_0x1ad1ba,!![]);}catch(_0x2a9a67){return BPromise['reject'](_0x2a9a67);}return _0x5cf19a[_0xbb8c('0x23')]();};}function saveUpdates(_0x54680b,_0x48ae7b){return function(_0x1089b9){if(_0x1089b9){return _0x1089b9['update'](_0x54680b)[_0xbb8c('0x24')](function(_0x173967){return _0x173967;});}return null;};}function removeEntity(_0x36c0bd,_0x31921b){return function(_0x4e7e40){if(_0x4e7e40){return _0x4e7e40[_0xbb8c('0x25')]()[_0xbb8c('0x24')](function(){_0x36c0bd[_0xbb8c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35615c,_0x23a6c7){return function(_0x18baef){if(!_0x18baef){_0x35615c[_0xbb8c('0x26')](0x194);}return _0x18baef;};}function handleError(_0x4b69a5,_0x3cd8c0){_0x3cd8c0=_0x3cd8c0||0x1f4;return function(_0x4b9b42){logger[_0xbb8c('0x27')](_0x4b9b42[_0xbb8c('0x28')]);if(_0x4b9b42[_0xbb8c('0x29')]){delete _0x4b9b42[_0xbb8c('0x29')];}_0x4b69a5[_0xbb8c('0x1a')](_0x3cd8c0)[_0xbb8c('0x2a')](_0x4b9b42);};}exports[_0xbb8c('0x2b')]=function(_0x487603,_0x3d6565){var _0x57abfe={},_0x30ef88={},_0x9c7425={'count':0x0,'rows':[]};var _0x2ff5ee=_[_0xbb8c('0x2c')](db['FreshdeskConfiguration'][_0xbb8c('0x2d')],function(_0x4e10d6){return{'name':_0x4e10d6[_0xbb8c('0x2e')],'type':_0x4e10d6['type'][_0xbb8c('0x2f')]};});_0x30ef88[_0xbb8c('0x30')]=_[_0xbb8c('0x2c')](_0x2ff5ee,_0xbb8c('0x29'));_0x30ef88[_0xbb8c('0x31')]=_[_0xbb8c('0x32')](_0x487603[_0xbb8c('0x31')]);_0x30ef88[_0xbb8c('0x33')]=_['intersection'](_0x30ef88[_0xbb8c('0x30')],_0x30ef88[_0xbb8c('0x31')]);_0x57abfe['attributes']=_['intersection'](_0x30ef88['model'],qs[_0xbb8c('0x34')](_0x487603[_0xbb8c('0x31')][_0xbb8c('0x34')]));_0x57abfe[_0xbb8c('0x35')]=_0x57abfe[_0xbb8c('0x35')][_0xbb8c('0x36')]?_0x57abfe['attributes']:_0x30ef88['model'];if(!_0x487603['query'][_0xbb8c('0x37')]('nolimit')){_0x57abfe[_0xbb8c('0x20')]=qs[_0xbb8c('0x20')](_0x487603[_0xbb8c('0x31')][_0xbb8c('0x20')]);_0x57abfe['offset']=qs[_0xbb8c('0x1d')](_0x487603[_0xbb8c('0x31')][_0xbb8c('0x1d')]);}_0x57abfe[_0xbb8c('0x38')]=qs[_0xbb8c('0x39')](_0x487603['query'][_0xbb8c('0x39')]);_0x57abfe[_0xbb8c('0x3a')]=qs['filters'](_['pick'](_0x487603[_0xbb8c('0x31')],_0x30ef88[_0xbb8c('0x33')]),_0x2ff5ee);if(_0x487603['query']['filter']){_0x57abfe[_0xbb8c('0x3a')]=_[_0xbb8c('0x3b')](_0x57abfe[_0xbb8c('0x3a')],{'$or':_[_0xbb8c('0x2c')](_0x2ff5ee,function(_0x528f80){if(_0x528f80[_0xbb8c('0x3c')]!==_0xbb8c('0x3d')){var _0x472041={};_0x472041[_0x528f80['name']]={'$like':'%'+_0x487603['query'][_0xbb8c('0x3e')]+'%'};return _0x472041;}})});}_0x57abfe=_[_0xbb8c('0x3b')]({},_0x57abfe,_0x487603[_0xbb8c('0x3f')]);var _0x4fd41e={'where':_0x57abfe[_0xbb8c('0x3a')]};return db[_0xbb8c('0x40')][_0xbb8c('0x1f')](_0x4fd41e)['then'](function(_0x3afe5d){_0x9c7425[_0xbb8c('0x1f')]=_0x3afe5d;if(_0x487603[_0xbb8c('0x31')]['includeAll']){_0x57abfe[_0xbb8c('0x41')]=[{'all':!![]}];}return db[_0xbb8c('0x40')][_0xbb8c('0x42')](_0x57abfe);})[_0xbb8c('0x24')](function(_0x88573e){_0x9c7425[_0xbb8c('0x43')]=_0x88573e;return _0x9c7425;})['then'](respondWithFilteredResult(_0x3d6565,_0x57abfe))[_0xbb8c('0x44')](handleError(_0x3d6565,null));};exports[_0xbb8c('0x45')]=function(_0x58b0d2,_0x4c459f){var _0x41e95d={'raw':![],'where':{'id':_0x58b0d2[_0xbb8c('0x46')]['id']}},_0x4572dc={};_0x4572dc[_0xbb8c('0x30')]=_[_0xbb8c('0x32')](db[_0xbb8c('0x40')]['rawAttributes']);_0x4572dc['query']=_[_0xbb8c('0x32')](_0x58b0d2['query']);_0x4572dc[_0xbb8c('0x33')]=_[_0xbb8c('0x47')](_0x4572dc[_0xbb8c('0x30')],_0x4572dc['query']);_0x41e95d[_0xbb8c('0x35')]=_[_0xbb8c('0x47')](_0x4572dc[_0xbb8c('0x30')],qs[_0xbb8c('0x34')](_0x58b0d2[_0xbb8c('0x31')][_0xbb8c('0x34')]));_0x41e95d['attributes']=_0x41e95d[_0xbb8c('0x35')][_0xbb8c('0x36')]?_0x41e95d[_0xbb8c('0x35')]:_0x4572dc[_0xbb8c('0x30')];if(_0x58b0d2[_0xbb8c('0x31')][_0xbb8c('0x48')]){_0x41e95d[_0xbb8c('0x41')]=[{'all':!![]}];}_0x41e95d=_[_0xbb8c('0x3b')]({},_0x41e95d,_0x58b0d2[_0xbb8c('0x3f')]);return db[_0xbb8c('0x40')][_0xbb8c('0x49')](_0x41e95d)[_0xbb8c('0x24')](handleEntityNotFound(_0x4c459f,null))[_0xbb8c('0x24')](respondWithResult(_0x4c459f,null))[_0xbb8c('0x44')](handleError(_0x4c459f,null));};exports[_0xbb8c('0x4a')]=function(_0x4fc41b,_0x25df15){return db[_0xbb8c('0x40')]['create'](_0x4fc41b['body'],{})[_0xbb8c('0x24')](respondWithResult(_0x25df15,0xc9))[_0xbb8c('0x44')](handleError(_0x25df15,null));};exports[_0xbb8c('0x4b')]=function(_0x4b71c5,_0x53564b){if(_0x4b71c5[_0xbb8c('0x4c')]['id']){delete _0x4b71c5[_0xbb8c('0x4c')]['id'];}return db[_0xbb8c('0x40')]['find']({'where':{'id':_0x4b71c5[_0xbb8c('0x46')]['id']}})[_0xbb8c('0x24')](handleEntityNotFound(_0x53564b,null))['then'](saveUpdates(_0x4b71c5['body'],null))[_0xbb8c('0x24')](respondWithResult(_0x53564b,null))[_0xbb8c('0x44')](handleError(_0x53564b,null));};exports['destroy']=function(_0x5ca081,_0x11aedd){return db[_0xbb8c('0x40')][_0xbb8c('0x49')]({'where':{'id':_0x5ca081[_0xbb8c('0x46')]['id']}})[_0xbb8c('0x24')](handleEntityNotFound(_0x11aedd,null))['then'](removeEntity(_0x11aedd,null))[_0xbb8c('0x44')](handleError(_0x11aedd,null));};exports['getFields']=function(_0x13f50e,_0xd888f1,_0x5e8bd8){var _0x11f793={};var _0x27a5f2={};var _0x3ebb20;var _0x2e8e74;return db[_0xbb8c('0x40')]['findOne']({'where':{'id':_0x13f50e[_0xbb8c('0x46')]['id']}})[_0xbb8c('0x24')](handleEntityNotFound(_0xd888f1,null))[_0xbb8c('0x24')](function(_0x5a914e){if(_0x5a914e){_0x3ebb20=_0x5a914e;_0x27a5f2[_0xbb8c('0x30')]=_[_0xbb8c('0x32')](db[_0xbb8c('0x4d')]['rawAttributes']);_0x27a5f2[_0xbb8c('0x31')]=_[_0xbb8c('0x32')](_0x13f50e[_0xbb8c('0x31')]);_0x27a5f2[_0xbb8c('0x33')]=_[_0xbb8c('0x47')](_0x27a5f2[_0xbb8c('0x30')],_0x27a5f2[_0xbb8c('0x31')]);_0x11f793[_0xbb8c('0x35')]=_['intersection'](_0x27a5f2[_0xbb8c('0x30')],qs[_0xbb8c('0x34')](_0x13f50e[_0xbb8c('0x31')]['fields']));_0x11f793[_0xbb8c('0x35')]=_0x11f793['attributes']['length']?_0x11f793[_0xbb8c('0x35')]:_0x27a5f2[_0xbb8c('0x30')];_0x11f793['order']=qs[_0xbb8c('0x39')](_0x13f50e[_0xbb8c('0x31')][_0xbb8c('0x39')]);_0x11f793[_0xbb8c('0x3a')]=qs[_0xbb8c('0x33')](_[_0xbb8c('0x4e')](_0x13f50e['query'],_0x27a5f2[_0xbb8c('0x33')]));if(_0x13f50e[_0xbb8c('0x31')][_0xbb8c('0x3e')]){_0x11f793[_0xbb8c('0x3a')]=_[_0xbb8c('0x3b')](_0x11f793['where'],{'$or':_[_0xbb8c('0x2c')](_0x11f793[_0xbb8c('0x35')],function(_0x3634a1){var _0x268dc2={};_0x268dc2[_0x3634a1]={'$like':'%'+_0x13f50e[_0xbb8c('0x31')]['filter']+'%'};return _0x268dc2;})});}_0x11f793=_[_0xbb8c('0x3b')]({},_0x11f793,_0x13f50e[_0xbb8c('0x3f')]);return _0x3ebb20[_0xbb8c('0x4f')](_0x11f793);}})[_0xbb8c('0x24')](function(_0x218d70){if(_0x218d70){_0x2e8e74=_0x218d70[_0xbb8c('0x36')];if(!_0x13f50e[_0xbb8c('0x31')][_0xbb8c('0x37')](_0xbb8c('0x50'))){_0x11f793['limit']=qs['limit'](_0x13f50e[_0xbb8c('0x31')][_0xbb8c('0x20')]);_0x11f793[_0xbb8c('0x1d')]=qs[_0xbb8c('0x1d')](_0x13f50e[_0xbb8c('0x31')]['offset']);}return _0x3ebb20[_0xbb8c('0x4f')](_0x11f793);}})[_0xbb8c('0x24')](function(_0x181cce){if(_0x181cce){return _0x181cce?{'count':_0x2e8e74,'rows':_0x181cce}:null;}})[_0xbb8c('0x24')](respondWithResult(_0xd888f1,null))['catch'](handleError(_0xd888f1,null));};exports[_0xbb8c('0x51')]=function(_0x42b7bb,_0x234d2d,_0x402843){var _0x3b0cfa={};var _0xd1d003={};var _0x32a0d7;var _0x5dafa2;return db[_0xbb8c('0x40')][_0xbb8c('0x52')]({'where':{'id':_0x42b7bb[_0xbb8c('0x46')]['id']}})['then'](handleEntityNotFound(_0x234d2d,null))[_0xbb8c('0x24')](function(_0x2e38ae){if(_0x2e38ae){_0x32a0d7=_0x2e38ae;_0xd1d003[_0xbb8c('0x30')]=_['keys'](db['FreshdeskField'][_0xbb8c('0x2d')]);_0xd1d003[_0xbb8c('0x31')]=_['keys'](_0x42b7bb['query']);_0xd1d003['filters']=_[_0xbb8c('0x47')](_0xd1d003[_0xbb8c('0x30')],_0xd1d003[_0xbb8c('0x31')]);_0x3b0cfa['attributes']=_['intersection'](_0xd1d003[_0xbb8c('0x30')],qs[_0xbb8c('0x34')](_0x42b7bb['query'][_0xbb8c('0x34')]));_0x3b0cfa[_0xbb8c('0x35')]=_0x3b0cfa[_0xbb8c('0x35')]['length']?_0x3b0cfa['attributes']:_0xd1d003[_0xbb8c('0x30')];_0x3b0cfa[_0xbb8c('0x38')]=qs[_0xbb8c('0x39')](_0x42b7bb[_0xbb8c('0x31')][_0xbb8c('0x39')]);_0x3b0cfa[_0xbb8c('0x3a')]=qs[_0xbb8c('0x33')](_[_0xbb8c('0x4e')](_0x42b7bb[_0xbb8c('0x31')],_0xd1d003[_0xbb8c('0x33')]));if(_0x42b7bb[_0xbb8c('0x31')]['filter']){_0x3b0cfa[_0xbb8c('0x3a')]=_[_0xbb8c('0x3b')](_0x3b0cfa[_0xbb8c('0x3a')],{'$or':_[_0xbb8c('0x2c')](_0x3b0cfa['attributes'],function(_0xb761d3){var _0x17096c={};_0x17096c[_0xb761d3]={'$like':'%'+_0x42b7bb[_0xbb8c('0x31')][_0xbb8c('0x3e')]+'%'};return _0x17096c;})});}_0x3b0cfa=_[_0xbb8c('0x3b')]({},_0x3b0cfa,_0x42b7bb[_0xbb8c('0x3f')]);return _0x32a0d7[_0xbb8c('0x51')](_0x3b0cfa);}})['then'](function(_0x55482e){if(_0x55482e){_0x5dafa2=_0x55482e[_0xbb8c('0x36')];if(!_0x42b7bb['query'][_0xbb8c('0x37')](_0xbb8c('0x50'))){_0x3b0cfa[_0xbb8c('0x20')]=qs[_0xbb8c('0x20')](_0x42b7bb[_0xbb8c('0x31')][_0xbb8c('0x20')]);_0x3b0cfa[_0xbb8c('0x1d')]=qs[_0xbb8c('0x1d')](_0x42b7bb['query'][_0xbb8c('0x1d')]);}return _0x32a0d7[_0xbb8c('0x51')](_0x3b0cfa);}})['then'](function(_0x3c06fc){if(_0x3c06fc){return _0x3c06fc?{'count':_0x5dafa2,'rows':_0x3c06fc}:null;}})[_0xbb8c('0x24')](respondWithResult(_0x234d2d,null))['catch'](handleError(_0x234d2d,null));};exports[_0xbb8c('0x53')]=function(_0x25189e,_0x530910,_0x41fabb){var _0x374b54={};var _0x4ca5d8={};var _0x59d326;var _0x2e8a75;return db[_0xbb8c('0x40')][_0xbb8c('0x52')]({'where':{'id':_0x25189e['params']['id']}})[_0xbb8c('0x24')](handleEntityNotFound(_0x530910,null))[_0xbb8c('0x24')](function(_0x5d3318){if(_0x5d3318){_0x59d326=_0x5d3318;_0x4ca5d8[_0xbb8c('0x30')]=_[_0xbb8c('0x32')](db[_0xbb8c('0x4d')]['rawAttributes']);_0x4ca5d8[_0xbb8c('0x31')]=_[_0xbb8c('0x32')](_0x25189e[_0xbb8c('0x31')]);_0x4ca5d8[_0xbb8c('0x33')]=_['intersection'](_0x4ca5d8[_0xbb8c('0x30')],_0x4ca5d8[_0xbb8c('0x31')]);_0x374b54[_0xbb8c('0x35')]=_[_0xbb8c('0x47')](_0x4ca5d8[_0xbb8c('0x30')],qs['fields'](_0x25189e[_0xbb8c('0x31')][_0xbb8c('0x34')]));_0x374b54[_0xbb8c('0x35')]=_0x374b54['attributes'][_0xbb8c('0x36')]?_0x374b54[_0xbb8c('0x35')]:_0x4ca5d8['model'];_0x374b54[_0xbb8c('0x38')]=qs[_0xbb8c('0x39')](_0x25189e['query'][_0xbb8c('0x39')]);_0x374b54['where']=qs[_0xbb8c('0x33')](_[_0xbb8c('0x4e')](_0x25189e[_0xbb8c('0x31')],_0x4ca5d8[_0xbb8c('0x33')]));if(_0x25189e[_0xbb8c('0x31')][_0xbb8c('0x3e')]){_0x374b54[_0xbb8c('0x3a')]=_[_0xbb8c('0x3b')](_0x374b54['where'],{'$or':_[_0xbb8c('0x2c')](_0x374b54['attributes'],function(_0x2863f6){var _0x160518={};_0x160518[_0x2863f6]={'$like':'%'+_0x25189e[_0xbb8c('0x31')][_0xbb8c('0x3e')]+'%'};return _0x160518;})});}_0x374b54=_[_0xbb8c('0x3b')]({},_0x374b54,_0x25189e[_0xbb8c('0x3f')]);return _0x59d326[_0xbb8c('0x53')](_0x374b54);}})['then'](function(_0x5ecd9f){if(_0x5ecd9f){_0x2e8a75=_0x5ecd9f[_0xbb8c('0x36')];if(!_0x25189e[_0xbb8c('0x31')]['hasOwnProperty'](_0xbb8c('0x50'))){_0x374b54[_0xbb8c('0x20')]=qs[_0xbb8c('0x20')](_0x25189e['query'][_0xbb8c('0x20')]);_0x374b54[_0xbb8c('0x1d')]=qs[_0xbb8c('0x1d')](_0x25189e[_0xbb8c('0x31')][_0xbb8c('0x1d')]);}return _0x59d326[_0xbb8c('0x53')](_0x374b54);}})[_0xbb8c('0x24')](function(_0x169371){if(_0x169371){return _0x169371?{'count':_0x2e8a75,'rows':_0x169371}:null;}})[_0xbb8c('0x24')](respondWithResult(_0x530910,null))[_0xbb8c('0x44')](handleError(_0x530910,null));};exports[_0xbb8c('0x54')]=function(_0x267880,_0x2a96ed,_0x1ad1f6){var _0x28c708={};var _0x112c2a={};var _0x401640;var _0x1eb940;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x267880['params']['id']}})['then'](handleEntityNotFound(_0x2a96ed,null))[_0xbb8c('0x24')](function(_0x42ba05){if(_0x42ba05){_0x401640=_0x42ba05;_0x112c2a['model']=_[_0xbb8c('0x32')](db[_0xbb8c('0x55')][_0xbb8c('0x2d')]);_0x112c2a['query']=_['keys'](_0x267880['query']);_0x112c2a[_0xbb8c('0x33')]=_[_0xbb8c('0x47')](_0x112c2a[_0xbb8c('0x30')],_0x112c2a[_0xbb8c('0x31')]);_0x28c708[_0xbb8c('0x35')]=_[_0xbb8c('0x47')](_0x112c2a[_0xbb8c('0x30')],qs[_0xbb8c('0x34')](_0x267880[_0xbb8c('0x31')][_0xbb8c('0x34')]));_0x28c708[_0xbb8c('0x35')]=_0x28c708[_0xbb8c('0x35')][_0xbb8c('0x36')]?_0x28c708['attributes']:_0x112c2a[_0xbb8c('0x30')];_0x28c708[_0xbb8c('0x38')]=qs[_0xbb8c('0x39')](_0x267880[_0xbb8c('0x31')][_0xbb8c('0x39')]);_0x28c708['where']=qs[_0xbb8c('0x33')](_['pick'](_0x267880[_0xbb8c('0x31')],_0x112c2a[_0xbb8c('0x33')]));if(_0x267880[_0xbb8c('0x31')][_0xbb8c('0x3e')]){_0x28c708['where']=_[_0xbb8c('0x3b')](_0x28c708['where'],{'$or':_[_0xbb8c('0x2c')](_0x28c708[_0xbb8c('0x35')],function(_0x57a688){var _0x435284={};_0x435284[_0x57a688]={'$like':'%'+_0x267880['query'][_0xbb8c('0x3e')]+'%'};return _0x435284;})});}_0x28c708=_['merge']({},_0x28c708,_0x267880[_0xbb8c('0x3f')]);return _0x401640[_0xbb8c('0x54')](_0x28c708);}})['then'](function(_0x17059b){if(_0x17059b){_0x1eb940=_0x17059b['length'];if(!_0x267880['query'][_0xbb8c('0x37')](_0xbb8c('0x50'))){_0x28c708[_0xbb8c('0x20')]=qs[_0xbb8c('0x20')](_0x267880[_0xbb8c('0x31')][_0xbb8c('0x20')]);_0x28c708[_0xbb8c('0x1d')]=qs[_0xbb8c('0x1d')](_0x267880[_0xbb8c('0x31')]['offset']);}return _0x401640[_0xbb8c('0x54')](_0x28c708);}})[_0xbb8c('0x24')](function(_0x499758){if(_0x499758){return _0x499758?{'count':_0x1eb940,'rows':_0x499758}:null;}})['then'](respondWithResult(_0x2a96ed,null))[_0xbb8c('0x44')](handleError(_0x2a96ed,null));};exports[_0xbb8c('0x56')]=function(_0x371370,_0x3d5ef4,_0x4ae037){if(_0x371370[_0xbb8c('0x4c')]['id']){delete _0x371370[_0xbb8c('0x4c')]['id'];}return db[_0xbb8c('0x40')][_0xbb8c('0x52')]({'where':{'id':_0x371370['params']['id']}})[_0xbb8c('0x24')](handleEntityNotFound(_0x3d5ef4,null))[_0xbb8c('0x24')](function(_0x2d84d3){if(_0x2d84d3){return _0x2d84d3[_0xbb8c('0x56')](_0x371370[_0xbb8c('0x4c')][_0xbb8c('0x57')]||[]);}return null;})['then'](respondWithResult(_0x3d5ef4,null))[_0xbb8c('0x44')](handleError(_0x3d5ef4,null));};
\ No newline at end of file
index d2debd7..1c00062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1798=['define','FreshdeskConfiguration','int_freshdesk_configurations','util','api','moment','bluebird','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1798,0xd4));var _0x8179=function(_0x4f6c24,_0x4204af){_0x4f6c24=_0x4f6c24-0x0;var _0x1f67c6=_0x1798[_0x4f6c24];return _0x1f67c6;};'use strict';var _=require('lodash');var util=require(_0x8179('0x0'));var logger=require('../../config/logger')(_0x8179('0x1'));var moment=require(_0x8179('0x2'));var BPromise=require(_0x8179('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8179('0x4'));var rimraf=require('rimraf');var config=require(_0x8179('0x5'));var attributes=require(_0x8179('0x6'));module[_0x8179('0x7')]=function(_0x3cabb1,_0x5988a1){return _0x3cabb1[_0x8179('0x8')](_0x8179('0x9'),attributes,{'tableName':_0x8179('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1ff=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','../../config/logger','api'];(function(_0xbce261,_0x5bf87e){var _0x23848f=function(_0x582169){while(--_0x582169){_0xbce261['push'](_0xbce261['shift']());}};_0x23848f(++_0x5bf87e);}(_0xe1ff,0x102));var _0xfe1f=function(_0x1ce515,_0x36decf){_0x1ce515=_0x1ce515-0x0;var _0xb97603=_0xe1ff[_0x1ce515];return _0xb97603;};'use strict';var _=require(_0xfe1f('0x0'));var util=require('util');var logger=require(_0xfe1f('0x1'))(_0xfe1f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfe1f('0x3'));var config=require(_0xfe1f('0x4'));var attributes=require(_0xfe1f('0x5'));module['exports']=function(_0x1da072,_0x428cd6){return _0x1da072[_0xfe1f('0x6')](_0xfe1f('0x7'),attributes,{'tableName':_0xfe1f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0341be..a847d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cff=['then','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x47adb8,_0x591ccc){var _0x4689a8=function(_0x2ba76f){while(--_0x2ba76f){_0x47adb8['push'](_0x47adb8['shift']());}};_0x4689a8(++_0x591ccc);}(_0x5cff,0x79));var _0xf5cf=function(_0x24a66a,_0xba9d6f){_0x24a66a=_0x24a66a-0x0;var _0x19a92e=_0x5cff[_0x24a66a];return _0x19a92e;};'use strict';var _=require(_0xf5cf('0x0'));var util=require(_0xf5cf('0x1'));var moment=require(_0xf5cf('0x2'));var BPromise=require('bluebird');var rs=require(_0xf5cf('0x3'));var fs=require('fs');var Redis=require(_0xf5cf('0x4'));var db=require(_0xf5cf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf5cf('0x6'))('rpc');var config=require(_0xf5cf('0x7'));var jayson=require(_0xf5cf('0x8'));var client=jayson['client'][_0xf5cf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x396fc1,_0x1c889f,_0x5a9f32){return new BPromise(function(_0x4d068b,_0xe4276b){return client[_0xf5cf('0xa')](_0x396fc1,_0x5a9f32)[_0xf5cf('0xb')](function(_0x11602f){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,'request\x20sent');logger[_0xf5cf('0xc')](_0xf5cf('0xd'),_0x1c889f,'request\x20sent',JSON[_0xf5cf('0xe')](_0x11602f));if(_0x11602f[_0xf5cf('0xf')]){if(_0x11602f['error'][_0xf5cf('0x10')]===0x1f4){logger[_0xf5cf('0xf')](_0xf5cf('0x11'),_0x1c889f,_0x11602f[_0xf5cf('0xf')]['message']);return _0xe4276b(_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);}logger[_0xf5cf('0xf')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);return _0x4d068b(_0x11602f[_0xf5cf('0xf')][_0xf5cf('0x12')]);}else{logger[_0xf5cf('0x13')](_0xf5cf('0x11'),_0x1c889f,'request\x20sent');_0x4d068b(_0x11602f[_0xf5cf('0x14')][_0xf5cf('0x12')]);}})[_0xf5cf('0x15')](function(_0x28dffb){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x1c889f,_0x28dffb);_0xe4276b(_0x28dffb);});});}
\ No newline at end of file
+var _0xd4d9=['error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2a5eab,_0x2de7c4){var _0x10baf2=function(_0x38c2e3){while(--_0x38c2e3){_0x2a5eab['push'](_0x2a5eab['shift']());}};_0x10baf2(++_0x2de7c4);}(_0xd4d9,0x7e));var _0x9d4d=function(_0x36396,_0x33340a){_0x36396=_0x36396-0x0;var _0x1c46b8=_0xd4d9[_0x36396];return _0x1c46b8;};'use strict';var _=require(_0x9d4d('0x0'));var util=require(_0x9d4d('0x1'));var moment=require(_0x9d4d('0x2'));var BPromise=require(_0x9d4d('0x3'));var rs=require(_0x9d4d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9d4d('0x5'));var logger=require(_0x9d4d('0x6'))(_0x9d4d('0x7'));var config=require(_0x9d4d('0x8'));var jayson=require(_0x9d4d('0x9'));var client=jayson[_0x9d4d('0xa')][_0x9d4d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f636a,_0x351f51,_0x412f3a){return new BPromise(function(_0x5375d3,_0xcc83e6){return client['request'](_0x1f636a,_0x412f3a)[_0x9d4d('0xc')](function(_0x2333df){logger[_0x9d4d('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x351f51,_0x9d4d('0xe'));logger[_0x9d4d('0xf')](_0x9d4d('0x10'),_0x351f51,_0x9d4d('0xe'),JSON[_0x9d4d('0x11')](_0x2333df));if(_0x2333df['error']){if(_0x2333df[_0x9d4d('0x12')][_0x9d4d('0x13')]===0x1f4){logger[_0x9d4d('0x12')](_0x9d4d('0x14'),_0x351f51,_0x2333df[_0x9d4d('0x12')][_0x9d4d('0x15')]);return _0xcc83e6(_0x2333df['error'][_0x9d4d('0x15')]);}logger[_0x9d4d('0x12')](_0x9d4d('0x14'),_0x351f51,_0x2333df[_0x9d4d('0x12')][_0x9d4d('0x15')]);return _0x5375d3(_0x2333df[_0x9d4d('0x12')][_0x9d4d('0x15')]);}else{logger[_0x9d4d('0xd')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x351f51,_0x9d4d('0xe'));_0x5375d3(_0x2333df[_0x9d4d('0x16')][_0x9d4d('0x15')]);}})[_0x9d4d('0x17')](function(_0x5d99b6){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x351f51,_0x5d99b6);_0xcc83e6(_0x5d99b6);});});}
\ No newline at end of file
index 786522f..1f259d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173c=['delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x138a41,_0xb4e471){var _0x15bea2=function(_0x2fce81){while(--_0x2fce81){_0x138a41['push'](_0x138a41['shift']());}};_0x15bea2(++_0xb4e471);}(_0x173c,0xb7));var _0xc173=function(_0x11fb6c,_0x2e994e){_0x11fb6c=_0x11fb6c-0x0;var _0x4b6754=_0x173c[_0x11fb6c];return _0x4b6754;};'use strict';var multer=require(_0xc173('0x0'));var util=require(_0xc173('0x1'));var path=require('path');var timeout=require(_0xc173('0x2'));var express=require(_0xc173('0x3'));var router=express[_0xc173('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc173('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc173('0x6'));var controller=require(_0xc173('0x7'));router['get']('/',auth[_0xc173('0x8')](),controller[_0xc173('0x9')]);router[_0xc173('0xa')](_0xc173('0xb'),auth[_0xc173('0x8')](),controller[_0xc173('0xc')]);router[_0xc173('0xd')]('/',auth[_0xc173('0x8')](),controller[_0xc173('0xe')]);router[_0xc173('0xf')]('/:id',auth[_0xc173('0x8')](),controller[_0xc173('0x10')]);router[_0xc173('0x11')](_0xc173('0xb'),auth['isAuthenticated'](),controller[_0xc173('0x12')]);module[_0xc173('0x13')]=router;
\ No newline at end of file
+var _0xa8bd=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','exports'];(function(_0x19c8bd,_0x337e70){var _0x104118=function(_0x28a1dc){while(--_0x28a1dc){_0x19c8bd['push'](_0x19c8bd['shift']());}};_0x104118(++_0x337e70);}(_0xa8bd,0x120));var _0xda8b=function(_0x28b077,_0xe071ed){_0x28b077=_0x28b077-0x0;var _0x43b3d3=_0xa8bd[_0x28b077];return _0x43b3d3;};'use strict';var multer=require(_0xda8b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xda8b('0x1'));var express=require(_0xda8b('0x2'));var router=express[_0xda8b('0x3')]();var fs_extra=require(_0xda8b('0x4'));var auth=require(_0xda8b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xda8b('0x6'));var controller=require(_0xda8b('0x7'));router[_0xda8b('0x8')]('/',auth[_0xda8b('0x9')](),controller[_0xda8b('0xa')]);router[_0xda8b('0x8')](_0xda8b('0xb'),auth[_0xda8b('0x9')](),controller[_0xda8b('0xc')]);router['post']('/',auth[_0xda8b('0x9')](),controller[_0xda8b('0xd')]);router[_0xda8b('0xe')]('/:id',auth[_0xda8b('0x9')](),controller[_0xda8b('0xf')]);router[_0xda8b('0x10')](_0xda8b('0xb'),auth[_0xda8b('0x9')](),controller['destroy']);module[_0xda8b('0x11')]=router;
\ No newline at end of file
index e11a991..a672154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1728=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x148913,_0x22b814){var _0xf60236=function(_0x4b013a){while(--_0x4b013a){_0x148913['push'](_0x148913['shift']());}};_0xf60236(++_0x22b814);}(_0x1728,0x81));var _0x8172=function(_0x5668a5,_0x1b3de7){_0x5668a5=_0x5668a5-0x0;var _0x2ea98a=_0x1728[_0x5668a5];return _0x2ea98a;};'use strict';var Sequelize=require(_0x8172('0x0'));module['exports']={'type':{'type':Sequelize[_0x8172('0x1')](_0x8172('0x2'),_0x8172('0x3'),'customVariable',_0x8172('0x4'),_0x8172('0x5')),'defaultValue':_0x8172('0x2')},'content':{'type':Sequelize[_0x8172('0x6')]},'key':{'type':Sequelize[_0x8172('0x6')]},'keyType':{'type':Sequelize[_0x8172('0x1')]('string',_0x8172('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8172('0x6')]},'nameField':{'type':Sequelize[_0x8172('0x6')]},'customField':{'type':Sequelize[_0x8172('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8172('0x6')]}};
\ No newline at end of file
+var _0x7253=['ENUM','BOOLEAN','exports','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x1b083b,_0x5c0a83){var _0x409f9f=function(_0x335bb5){while(--_0x335bb5){_0x1b083b['push'](_0x1b083b['shift']());}};_0x409f9f(++_0x5c0a83);}(_0x7253,0xf5));var _0x3725=function(_0x15e462,_0x1ee497){_0x15e462=_0x15e462-0x0;var _0x461cc7=_0x7253[_0x15e462];return _0x461cc7;};'use strict';var Sequelize=require('sequelize');module[_0x3725('0x0')]={'type':{'type':Sequelize['ENUM'](_0x3725('0x1'),_0x3725('0x2'),_0x3725('0x3'),_0x3725('0x4'),_0x3725('0x5')),'defaultValue':_0x3725('0x1')},'content':{'type':Sequelize[_0x3725('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3725('0x7')](_0x3725('0x1'),_0x3725('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x3725('0x6')]},'idField':{'type':Sequelize[_0x3725('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3725('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3725('0x6')]}};
\ No newline at end of file
index 156a4c5..18a1583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','save','update','then','destroy','end','error','name','index','map','FreshdeskField','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','show','params','rawAttributes','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xa571,0x107));var _0x1a57=function(_0x482b94,_0x29ad8e){_0x482b94=_0x482b94-0x0;var _0x579e3c=_0xa571[_0x482b94];return _0x579e3c;};'use strict';var emlformat=require(_0x1a57('0x0'));var rimraf=require(_0x1a57('0x1'));var zipdir=require(_0x1a57('0x2'));var jsonpatch=require(_0x1a57('0x3'));var rp=require('request-promise');var moment=require(_0x1a57('0x4'));var BPromise=require(_0x1a57('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1a57('0x6'));var sox=require('sox');var csv=require(_0x1a57('0x7'));var ejs=require(_0x1a57('0x8'));var fs=require('fs');var fs_extra=require(_0x1a57('0x9'));var _=require(_0x1a57('0xa'));var squel=require(_0x1a57('0xb'));var crypto=require(_0x1a57('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1a57('0xd'));var toCsv=require(_0x1a57('0x7'));var querystring=require(_0x1a57('0xe'));var Papa=require('papaparse');var Redis=require(_0x1a57('0xf'));var authService=require(_0x1a57('0x10'));var qs=require(_0x1a57('0x11'));var as=require(_0x1a57('0x12'));var hardwareService=require(_0x1a57('0x13'));var logger=require(_0x1a57('0x14'))(_0x1a57('0x15'));var utils=require(_0x1a57('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1a57('0x17'))['db'];function respondWithStatusCode(_0x1911b2,_0x202d9a){_0x202d9a=_0x202d9a||0xcc;return function(_0x5ae643){if(_0x5ae643){return _0x1911b2[_0x1a57('0x18')](_0x202d9a);}return _0x1911b2[_0x1a57('0x19')](_0x202d9a)['end']();};}function respondWithResult(_0x503278,_0x587422){_0x587422=_0x587422||0xc8;return function(_0xd08107){if(_0xd08107){return _0x503278[_0x1a57('0x19')](_0x587422)[_0x1a57('0x1a')](_0xd08107);}};}function respondWithFilteredResult(_0x153d01,_0x5802d6){return function(_0x20f7ad){if(_0x20f7ad){var _0x53c61f=typeof _0x5802d6['offset']===_0x1a57('0x1b')&&typeof _0x5802d6[_0x1a57('0x1c')]===_0x1a57('0x1b');var _0x51b4c2=_0x20f7ad[_0x1a57('0x1d')];var _0x1662a3=_0x53c61f?0x0:_0x5802d6[_0x1a57('0x1e')];var _0x53bb20=_0x53c61f?_0x20f7ad[_0x1a57('0x1d')]:_0x5802d6[_0x1a57('0x1e')]+_0x5802d6[_0x1a57('0x1c')];var _0xcba6b7;if(_0x53bb20>=_0x51b4c2){_0x53bb20=_0x51b4c2;_0xcba6b7=0xc8;}else{_0xcba6b7=0xce;}_0x153d01[_0x1a57('0x19')](_0xcba6b7);return _0x153d01['set']('Content-Range',_0x1662a3+'-'+_0x53bb20+'/'+_0x51b4c2)[_0x1a57('0x1a')](_0x20f7ad);}return null;};}function patchUpdates(_0x21e811){return function(_0x211c63){try{jsonpatch['apply'](_0x211c63,_0x21e811,!![]);}catch(_0x5c200e){return BPromise['reject'](_0x5c200e);}return _0x211c63[_0x1a57('0x1f')]();};}function saveUpdates(_0x113ad4,_0x3f52b9){return function(_0xee133b){if(_0xee133b){return _0xee133b[_0x1a57('0x20')](_0x113ad4)[_0x1a57('0x21')](function(_0x2efa49){return _0x2efa49;});}return null;};}function removeEntity(_0x2f8b00,_0x183ca3){return function(_0x35d5dc){if(_0x35d5dc){return _0x35d5dc[_0x1a57('0x22')]()[_0x1a57('0x21')](function(){_0x2f8b00[_0x1a57('0x19')](0xcc)[_0x1a57('0x23')]();});}};}function handleEntityNotFound(_0x2f9454,_0x182649){return function(_0x25c1e9){if(!_0x25c1e9){_0x2f9454[_0x1a57('0x18')](0x194);}return _0x25c1e9;};}function handleError(_0x27cfe1,_0xf6ffef){_0xf6ffef=_0xf6ffef||0x1f4;return function(_0x26584b){logger[_0x1a57('0x24')](_0x26584b['stack']);if(_0x26584b['name']){delete _0x26584b[_0x1a57('0x25')];}_0x27cfe1[_0x1a57('0x19')](_0xf6ffef)['send'](_0x26584b);};}exports[_0x1a57('0x26')]=function(_0x54f6a5,_0x2d8738){var _0x4a2901={},_0x53bf6e={},_0x8179a4={'count':0x0,'rows':[]};var _0x274fe6=_[_0x1a57('0x27')](db[_0x1a57('0x28')]['rawAttributes'],function(_0x366d5f){return{'name':_0x366d5f[_0x1a57('0x29')],'type':_0x366d5f[_0x1a57('0x2a')][_0x1a57('0x2b')]};});_0x53bf6e['model']=_[_0x1a57('0x27')](_0x274fe6,_0x1a57('0x25'));_0x53bf6e[_0x1a57('0x2c')]=_[_0x1a57('0x2d')](_0x54f6a5[_0x1a57('0x2c')]);_0x53bf6e[_0x1a57('0x2e')]=_[_0x1a57('0x2f')](_0x53bf6e[_0x1a57('0x30')],_0x53bf6e[_0x1a57('0x2c')]);_0x4a2901['attributes']=_[_0x1a57('0x2f')](_0x53bf6e[_0x1a57('0x30')],qs['fields'](_0x54f6a5['query'][_0x1a57('0x31')]));_0x4a2901[_0x1a57('0x32')]=_0x4a2901[_0x1a57('0x32')][_0x1a57('0x33')]?_0x4a2901[_0x1a57('0x32')]:_0x53bf6e[_0x1a57('0x30')];if(!_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x34')](_0x1a57('0x35'))){_0x4a2901[_0x1a57('0x1c')]=qs[_0x1a57('0x1c')](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x1c')]);_0x4a2901[_0x1a57('0x1e')]=qs[_0x1a57('0x1e')](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x1e')]);}_0x4a2901[_0x1a57('0x36')]=qs['sort'](_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x37')]);_0x4a2901[_0x1a57('0x38')]=qs[_0x1a57('0x2e')](_[_0x1a57('0x39')](_0x54f6a5[_0x1a57('0x2c')],_0x53bf6e[_0x1a57('0x2e')]),_0x274fe6);if(_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3a')]){_0x4a2901['where']=_['merge'](_0x4a2901['where'],{'$or':_['map'](_0x274fe6,function(_0x333b32){if(_0x333b32[_0x1a57('0x2a')]!==_0x1a57('0x3b')){var _0x4d6e1e={};_0x4d6e1e[_0x333b32[_0x1a57('0x25')]]={'$like':'%'+_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3a')]+'%'};return _0x4d6e1e;}})});}_0x4a2901=_[_0x1a57('0x3c')]({},_0x4a2901,_0x54f6a5['options']);var _0x1be254={'where':_0x4a2901['where']};return db[_0x1a57('0x28')][_0x1a57('0x1d')](_0x1be254)[_0x1a57('0x21')](function(_0x534a9a){_0x8179a4[_0x1a57('0x1d')]=_0x534a9a;if(_0x54f6a5[_0x1a57('0x2c')][_0x1a57('0x3d')]){_0x4a2901[_0x1a57('0x3e')]=[{'all':!![]}];}return db[_0x1a57('0x28')]['findAll'](_0x4a2901);})[_0x1a57('0x21')](function(_0x47e998){_0x8179a4['rows']=_0x47e998;return _0x8179a4;})[_0x1a57('0x21')](respondWithFilteredResult(_0x2d8738,_0x4a2901))['catch'](handleError(_0x2d8738,null));};exports[_0x1a57('0x3f')]=function(_0x398c59,_0x3fbae1){var _0x59abb1={'raw':!![],'where':{'id':_0x398c59[_0x1a57('0x40')]['id']}},_0x188a50={};_0x188a50[_0x1a57('0x30')]=_[_0x1a57('0x2d')](db['FreshdeskField'][_0x1a57('0x41')]);_0x188a50[_0x1a57('0x2c')]=_['keys'](_0x398c59[_0x1a57('0x2c')]);_0x188a50['filters']=_['intersection'](_0x188a50[_0x1a57('0x30')],_0x188a50[_0x1a57('0x2c')]);_0x59abb1[_0x1a57('0x32')]=_[_0x1a57('0x2f')](_0x188a50['model'],qs[_0x1a57('0x31')](_0x398c59[_0x1a57('0x2c')][_0x1a57('0x31')]));_0x59abb1[_0x1a57('0x32')]=_0x59abb1[_0x1a57('0x32')]['length']?_0x59abb1[_0x1a57('0x32')]:_0x188a50[_0x1a57('0x30')];if(_0x398c59[_0x1a57('0x2c')][_0x1a57('0x3d')]){_0x59abb1['include']=[{'all':!![]}];}_0x59abb1=_[_0x1a57('0x3c')]({},_0x59abb1,_0x398c59['options']);return db[_0x1a57('0x28')][_0x1a57('0x42')](_0x59abb1)[_0x1a57('0x21')](handleEntityNotFound(_0x3fbae1,null))[_0x1a57('0x21')](respondWithResult(_0x3fbae1,null))[_0x1a57('0x43')](handleError(_0x3fbae1,null));};exports[_0x1a57('0x44')]=function(_0x28f629,_0x401285){return db[_0x1a57('0x28')][_0x1a57('0x44')](_0x28f629[_0x1a57('0x45')],{})[_0x1a57('0x21')](respondWithResult(_0x401285,0xc9))[_0x1a57('0x43')](handleError(_0x401285,null));};exports['update']=function(_0xf4d056,_0x480aff){if(_0xf4d056[_0x1a57('0x45')]['id']){delete _0xf4d056[_0x1a57('0x45')]['id'];}return db[_0x1a57('0x28')][_0x1a57('0x42')]({'where':{'id':_0xf4d056[_0x1a57('0x40')]['id']}})[_0x1a57('0x21')](handleEntityNotFound(_0x480aff,null))[_0x1a57('0x21')](saveUpdates(_0xf4d056[_0x1a57('0x45')],null))[_0x1a57('0x21')](respondWithResult(_0x480aff,null))['catch'](handleError(_0x480aff,null));};exports[_0x1a57('0x22')]=function(_0x439a42,_0x51651d){return db[_0x1a57('0x28')][_0x1a57('0x42')]({'where':{'id':_0x439a42['params']['id']}})[_0x1a57('0x21')](handleEntityNotFound(_0x51651d,null))[_0x1a57('0x21')](removeEntity(_0x51651d,null))['catch'](handleError(_0x51651d,null));};
\ No newline at end of file
+var _0xd757=['type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','keys','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','FreshdeskField','rawAttributes','fieldName'];(function(_0x5f4e82,_0x415a6c){var _0x19fa1d=function(_0x2713d8){while(--_0x2713d8){_0x5f4e82['push'](_0x5f4e82['shift']());}};_0x19fa1d(++_0x415a6c);}(_0xd757,0x1e5));var _0x7d75=function(_0x45aa0d,_0x250238){_0x45aa0d=_0x45aa0d-0x0;var _0x319ba9=_0xd757[_0x45aa0d];return _0x319ba9;};'use strict';var emlformat=require(_0x7d75('0x0'));var rimraf=require(_0x7d75('0x1'));var zipdir=require(_0x7d75('0x2'));var jsonpatch=require(_0x7d75('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7d75('0x4'));var Mustache=require(_0x7d75('0x5'));var util=require('util');var path=require(_0x7d75('0x6'));var sox=require(_0x7d75('0x7'));var csv=require(_0x7d75('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7d75('0x9'));var squel=require(_0x7d75('0xa'));var crypto=require(_0x7d75('0xb'));var jsforce=require(_0x7d75('0xc'));var deskjs=require(_0x7d75('0xd'));var toCsv=require(_0x7d75('0x8'));var querystring=require(_0x7d75('0xe'));var Papa=require(_0x7d75('0xf'));var Redis=require(_0x7d75('0x10'));var authService=require(_0x7d75('0x11'));var qs=require(_0x7d75('0x12'));var as=require(_0x7d75('0x13'));var hardwareService=require(_0x7d75('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x7d75('0x15'));var config=require(_0x7d75('0x16'));var licenseUtil=require(_0x7d75('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e7b97,_0x3a5ca5){_0x3a5ca5=_0x3a5ca5||0xcc;return function(_0x5c9fcf){if(_0x5c9fcf){return _0x3e7b97[_0x7d75('0x18')](_0x3a5ca5);}return _0x3e7b97[_0x7d75('0x19')](_0x3a5ca5)[_0x7d75('0x1a')]();};}function respondWithResult(_0x43e546,_0x2b5d23){_0x2b5d23=_0x2b5d23||0xc8;return function(_0x3be8b2){if(_0x3be8b2){return _0x43e546['status'](_0x2b5d23)[_0x7d75('0x1b')](_0x3be8b2);}};}function respondWithFilteredResult(_0x1a460b,_0x14100f){return function(_0x1a9778){if(_0x1a9778){var _0x44041e=typeof _0x14100f[_0x7d75('0x1c')]==='undefined'&&typeof _0x14100f[_0x7d75('0x1d')]==='undefined';var _0x3896c3=_0x1a9778[_0x7d75('0x1e')];var _0x40edfc=_0x44041e?0x0:_0x14100f[_0x7d75('0x1c')];var _0x356b44=_0x44041e?_0x1a9778[_0x7d75('0x1e')]:_0x14100f[_0x7d75('0x1c')]+_0x14100f[_0x7d75('0x1d')];var _0x55b89d;if(_0x356b44>=_0x3896c3){_0x356b44=_0x3896c3;_0x55b89d=0xc8;}else{_0x55b89d=0xce;}_0x1a460b['status'](_0x55b89d);return _0x1a460b[_0x7d75('0x1f')](_0x7d75('0x20'),_0x40edfc+'-'+_0x356b44+'/'+_0x3896c3)[_0x7d75('0x1b')](_0x1a9778);}return null;};}function patchUpdates(_0xbb0322){return function(_0x47a5f0){try{jsonpatch[_0x7d75('0x21')](_0x47a5f0,_0xbb0322,!![]);}catch(_0x31bfa8){return BPromise[_0x7d75('0x22')](_0x31bfa8);}return _0x47a5f0[_0x7d75('0x23')]();};}function saveUpdates(_0x232c46,_0x187093){return function(_0x486ce1){if(_0x486ce1){return _0x486ce1[_0x7d75('0x24')](_0x232c46)[_0x7d75('0x25')](function(_0x1c0327){return _0x1c0327;});}return null;};}function removeEntity(_0x3be591,_0x21211b){return function(_0x323e20){if(_0x323e20){return _0x323e20[_0x7d75('0x26')]()[_0x7d75('0x25')](function(){_0x3be591[_0x7d75('0x19')](0xcc)[_0x7d75('0x1a')]();});}};}function handleEntityNotFound(_0x3103d6,_0x5a1218){return function(_0xec279d){if(!_0xec279d){_0x3103d6[_0x7d75('0x18')](0x194);}return _0xec279d;};}function handleError(_0x4f67e6,_0x19a230){_0x19a230=_0x19a230||0x1f4;return function(_0x50d798){logger[_0x7d75('0x27')](_0x50d798[_0x7d75('0x28')]);if(_0x50d798[_0x7d75('0x29')]){delete _0x50d798[_0x7d75('0x29')];}_0x4f67e6[_0x7d75('0x19')](_0x19a230)['send'](_0x50d798);};}exports[_0x7d75('0x2a')]=function(_0x31055c,_0x2f783b){var _0xb0c225={},_0x1121a6={},_0x11ba6c={'count':0x0,'rows':[]};var _0x5dd4f1=_[_0x7d75('0x2b')](db[_0x7d75('0x2c')][_0x7d75('0x2d')],function(_0x2a1c5b){return{'name':_0x2a1c5b[_0x7d75('0x2e')],'type':_0x2a1c5b[_0x7d75('0x2f')][_0x7d75('0x30')]};});_0x1121a6['model']=_['map'](_0x5dd4f1,'name');_0x1121a6[_0x7d75('0x31')]=_['keys'](_0x31055c[_0x7d75('0x31')]);_0x1121a6[_0x7d75('0x32')]=_[_0x7d75('0x33')](_0x1121a6[_0x7d75('0x34')],_0x1121a6[_0x7d75('0x31')]);_0xb0c225['attributes']=_[_0x7d75('0x33')](_0x1121a6[_0x7d75('0x34')],qs[_0x7d75('0x35')](_0x31055c[_0x7d75('0x31')][_0x7d75('0x35')]));_0xb0c225[_0x7d75('0x36')]=_0xb0c225[_0x7d75('0x36')][_0x7d75('0x37')]?_0xb0c225[_0x7d75('0x36')]:_0x1121a6[_0x7d75('0x34')];if(!_0x31055c['query'][_0x7d75('0x38')](_0x7d75('0x39'))){_0xb0c225[_0x7d75('0x1d')]=qs[_0x7d75('0x1d')](_0x31055c[_0x7d75('0x31')][_0x7d75('0x1d')]);_0xb0c225['offset']=qs[_0x7d75('0x1c')](_0x31055c[_0x7d75('0x31')]['offset']);}_0xb0c225['order']=qs[_0x7d75('0x3a')](_0x31055c[_0x7d75('0x31')][_0x7d75('0x3a')]);_0xb0c225[_0x7d75('0x3b')]=qs[_0x7d75('0x32')](_[_0x7d75('0x3c')](_0x31055c['query'],_0x1121a6[_0x7d75('0x32')]),_0x5dd4f1);if(_0x31055c[_0x7d75('0x31')]['filter']){_0xb0c225[_0x7d75('0x3b')]=_[_0x7d75('0x3d')](_0xb0c225[_0x7d75('0x3b')],{'$or':_[_0x7d75('0x2b')](_0x5dd4f1,function(_0x30aeab){if(_0x30aeab[_0x7d75('0x2f')]!==_0x7d75('0x3e')){var _0x815d03={};_0x815d03[_0x30aeab[_0x7d75('0x29')]]={'$like':'%'+_0x31055c[_0x7d75('0x31')][_0x7d75('0x3f')]+'%'};return _0x815d03;}})});}_0xb0c225=_[_0x7d75('0x3d')]({},_0xb0c225,_0x31055c[_0x7d75('0x40')]);var _0x35ac15={'where':_0xb0c225[_0x7d75('0x3b')]};return db[_0x7d75('0x2c')][_0x7d75('0x1e')](_0x35ac15)[_0x7d75('0x25')](function(_0x304c32){_0x11ba6c[_0x7d75('0x1e')]=_0x304c32;if(_0x31055c['query']['includeAll']){_0xb0c225[_0x7d75('0x41')]=[{'all':!![]}];}return db[_0x7d75('0x2c')][_0x7d75('0x42')](_0xb0c225);})[_0x7d75('0x25')](function(_0x222ece){_0x11ba6c[_0x7d75('0x43')]=_0x222ece;return _0x11ba6c;})[_0x7d75('0x25')](respondWithFilteredResult(_0x2f783b,_0xb0c225))['catch'](handleError(_0x2f783b,null));};exports[_0x7d75('0x44')]=function(_0x23e6f9,_0x42a57e){var _0x5edd82={'raw':!![],'where':{'id':_0x23e6f9[_0x7d75('0x45')]['id']}},_0x2e1f36={};_0x2e1f36[_0x7d75('0x34')]=_[_0x7d75('0x46')](db[_0x7d75('0x2c')][_0x7d75('0x2d')]);_0x2e1f36[_0x7d75('0x31')]=_[_0x7d75('0x46')](_0x23e6f9[_0x7d75('0x31')]);_0x2e1f36[_0x7d75('0x32')]=_[_0x7d75('0x33')](_0x2e1f36['model'],_0x2e1f36[_0x7d75('0x31')]);_0x5edd82['attributes']=_['intersection'](_0x2e1f36[_0x7d75('0x34')],qs['fields'](_0x23e6f9[_0x7d75('0x31')][_0x7d75('0x35')]));_0x5edd82['attributes']=_0x5edd82[_0x7d75('0x36')][_0x7d75('0x37')]?_0x5edd82[_0x7d75('0x36')]:_0x2e1f36[_0x7d75('0x34')];if(_0x23e6f9[_0x7d75('0x31')][_0x7d75('0x47')]){_0x5edd82[_0x7d75('0x41')]=[{'all':!![]}];}_0x5edd82=_[_0x7d75('0x3d')]({},_0x5edd82,_0x23e6f9['options']);return db[_0x7d75('0x2c')][_0x7d75('0x48')](_0x5edd82)[_0x7d75('0x25')](handleEntityNotFound(_0x42a57e,null))['then'](respondWithResult(_0x42a57e,null))[_0x7d75('0x49')](handleError(_0x42a57e,null));};exports[_0x7d75('0x4a')]=function(_0x34ff66,_0x277788){return db[_0x7d75('0x2c')][_0x7d75('0x4a')](_0x34ff66['body'],{})[_0x7d75('0x25')](respondWithResult(_0x277788,0xc9))[_0x7d75('0x49')](handleError(_0x277788,null));};exports[_0x7d75('0x24')]=function(_0x31b9be,_0x4cb900){if(_0x31b9be[_0x7d75('0x4b')]['id']){delete _0x31b9be['body']['id'];}return db[_0x7d75('0x2c')][_0x7d75('0x48')]({'where':{'id':_0x31b9be[_0x7d75('0x45')]['id']}})['then'](handleEntityNotFound(_0x4cb900,null))[_0x7d75('0x25')](saveUpdates(_0x31b9be['body'],null))[_0x7d75('0x25')](respondWithResult(_0x4cb900,null))['catch'](handleError(_0x4cb900,null));};exports[_0x7d75('0x26')]=function(_0x27a11f,_0x1009eb){return db['FreshdeskField'][_0x7d75('0x48')]({'where':{'id':_0x27a11f['params']['id']}})[_0x7d75('0x25')](handleEntityNotFound(_0x1009eb,null))[_0x7d75('0x25')](removeEntity(_0x1009eb,null))[_0x7d75('0x49')](handleError(_0x1009eb,null));};
\ No newline at end of file
index f8159be..e5feb8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b5=['path','rimraf','../../config/environment','exports','define','int_freshdesk_fields','FieldId','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x3efa90,_0x2a8aef){var _0xdb3449=function(_0x5e2de5){while(--_0x5e2de5){_0x3efa90['push'](_0x3efa90['shift']());}};_0xdb3449(++_0x2a8aef);}(_0x07b5,0x10f));var _0x507b=function(_0x1af05b,_0x5134b5){_0x1af05b=_0x1af05b-0x0;var _0x5be7cc=_0x07b5[_0x1af05b];return _0x5be7cc;};'use strict';var _=require(_0x507b('0x0'));var util=require(_0x507b('0x1'));var logger=require(_0x507b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x507b('0x3'));var rp=require(_0x507b('0x4'));var fs=require('fs');var path=require(_0x507b('0x5'));var rimraf=require(_0x507b('0x6'));var config=require(_0x507b('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0x507b('0x8')]=function(_0x41c082,_0x414133){return _0x41c082[_0x507b('0x9')]('FreshdeskField',attributes,{'tableName':_0x507b('0xa'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0x507b('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3ea=['freshdesk_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','int_freshdesk_fields'];(function(_0x304116,_0x38193b){var _0x5da10a=function(_0x56c45a){while(--_0x56c45a){_0x304116['push'](_0x304116['shift']());}};_0x5da10a(++_0x38193b);}(_0xb3ea,0xc5));var _0xab3e=function(_0x24a2c0,_0x340ea6){_0x24a2c0=_0x24a2c0-0x0;var _0x1d693f=_0xb3ea[_0x24a2c0];return _0x1d693f;};'use strict';var _=require(_0xab3e('0x0'));var util=require(_0xab3e('0x1'));var logger=require(_0xab3e('0x2'))(_0xab3e('0x3'));var moment=require(_0xab3e('0x4'));var BPromise=require(_0xab3e('0x5'));var rp=require(_0xab3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xab3e('0x7'));var config=require(_0xab3e('0x8'));var attributes=require('./intFreshdeskField.attributes');module[_0xab3e('0x9')]=function(_0x5fa9c,_0x32a751){return _0x5fa9c['define']('FreshdeskField',attributes,{'tableName':_0xab3e('0xa'),'paranoid':![],'indexes':[{'name':_0xab3e('0xb'),'fields':[_0xab3e('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 55b3a0d..0338b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x901c=['moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','request','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x20cc29,_0x30a46d){var _0x28d513=function(_0x179b06){while(--_0x179b06){_0x20cc29['push'](_0x20cc29['shift']());}};_0x28d513(++_0x30a46d);}(_0x901c,0x91));var _0xc901=function(_0x45afa4,_0x4112d1){_0x45afa4=_0x45afa4-0x0;var _0x5ea9b9=_0x901c[_0x45afa4];return _0x5ea9b9;};'use strict';var _=require(_0xc901('0x0'));var util=require(_0xc901('0x1'));var moment=require(_0xc901('0x2'));var BPromise=require(_0xc901('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc901('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc901('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xc901('0x6'));var jayson=require(_0xc901('0x7'));var client=jayson['client'][_0xc901('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x48527b,_0x5f145f,_0x581129){return new BPromise(function(_0x4b5458,_0x3d408d){return client[_0xc901('0x9')](_0x48527b,_0x581129)['then'](function(_0x36262e){logger[_0xc901('0xa')](_0xc901('0xb'),_0x5f145f,'request\x20sent');logger[_0xc901('0xc')](_0xc901('0xd'),_0x5f145f,_0xc901('0xe'),JSON[_0xc901('0xf')](_0x36262e));if(_0x36262e[_0xc901('0x10')]){if(_0x36262e['error'][_0xc901('0x11')]===0x1f4){logger[_0xc901('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x5f145f,_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);return _0x3d408d(_0x36262e['error']['message']);}logger['error'](_0xc901('0xb'),_0x5f145f,_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);return _0x4b5458(_0x36262e[_0xc901('0x10')][_0xc901('0x12')]);}else{logger[_0xc901('0xa')](_0xc901('0xb'),_0x5f145f,_0xc901('0xe'));_0x4b5458(_0x36262e[_0xc901('0x13')][_0xc901('0x12')]);}})[_0xc901('0x14')](function(_0x3892c0){logger[_0xc901('0x10')](_0xc901('0xb'),_0x5f145f,_0x3892c0);_0x3d408d(_0x3892c0);});});}
\ No newline at end of file
+var _0x1653=['stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x38cd4e,_0x2ec319){var _0x3510e0=function(_0x2df440){while(--_0x2df440){_0x38cd4e['push'](_0x38cd4e['shift']());}};_0x3510e0(++_0x2ec319);}(_0x1653,0x1bb));var _0x3165=function(_0x407b07,_0x525c69){_0x407b07=_0x407b07-0x0;var _0x2c9b12=_0x1653[_0x407b07];return _0x2c9b12;};'use strict';var _=require(_0x3165('0x0'));var util=require(_0x3165('0x1'));var moment=require(_0x3165('0x2'));var BPromise=require(_0x3165('0x3'));var rs=require(_0x3165('0x4'));var fs=require('fs');var Redis=require(_0x3165('0x5'));var db=require(_0x3165('0x6'))['db'];var utils=require(_0x3165('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x3165('0x8'));var jayson=require(_0x3165('0x9'));var client=jayson['client'][_0x3165('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33b671,_0x120a3b,_0x14283c){return new BPromise(function(_0x3cd10f,_0x30136a){return client[_0x3165('0xb')](_0x33b671,_0x14283c)[_0x3165('0xc')](function(_0x4374d2){logger[_0x3165('0xd')](_0x3165('0xe'),_0x120a3b,_0x3165('0xf'));logger[_0x3165('0x10')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x120a3b,_0x3165('0xf'),JSON[_0x3165('0x11')](_0x4374d2));if(_0x4374d2[_0x3165('0x12')]){if(_0x4374d2['error'][_0x3165('0x13')]===0x1f4){logger[_0x3165('0x12')](_0x3165('0xe'),_0x120a3b,_0x4374d2[_0x3165('0x12')][_0x3165('0x14')]);return _0x30136a(_0x4374d2[_0x3165('0x12')]['message']);}logger[_0x3165('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x120a3b,_0x4374d2[_0x3165('0x12')][_0x3165('0x14')]);return _0x3cd10f(_0x4374d2[_0x3165('0x12')][_0x3165('0x14')]);}else{logger[_0x3165('0xd')]('FreshdeskField,\x20%s,\x20%s',_0x120a3b,_0x3165('0xf'));_0x3cd10f(_0x4374d2[_0x3165('0x15')][_0x3165('0x14')]);}})[_0x3165('0x16')](function(_0x58edb6){logger[_0x3165('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x120a3b,_0x58edb6);_0x30136a(_0x58edb6);});});}
\ No newline at end of file
index 4cf722e..25b60bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75b=['post','create','/:id/configurations','addConfiguration','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields'];(function(_0x17dc4c,_0x365224){var _0x4a885f=function(_0x5b939b){while(--_0x5b939b){_0x17dc4c['push'](_0x17dc4c['shift']());}};_0x4a885f(++_0x365224);}(_0xa75b,0x170));var _0xba75=function(_0xfc9873,_0x4d0651){_0xfc9873=_0xfc9873-0x0;var _0x29e36e=_0xa75b[_0xfc9873];return _0x29e36e;};'use strict';var multer=require(_0xba75('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xba75('0x1'));var express=require(_0xba75('0x2'));var router=express[_0xba75('0x3')]();var fs_extra=require(_0xba75('0x4'));var auth=require(_0xba75('0x5'));var interaction=require(_0xba75('0x6'));var config=require(_0xba75('0x7'));var controller=require(_0xba75('0x8'));router[_0xba75('0x9')]('/',auth[_0xba75('0xa')](),controller[_0xba75('0xb')]);router[_0xba75('0x9')](_0xba75('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xba75('0x9')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xba75('0xd')]);router['get'](_0xba75('0xe'),auth[_0xba75('0xa')](),controller[_0xba75('0xf')]);router[_0xba75('0x10')]('/',auth[_0xba75('0xa')](),controller[_0xba75('0x11')]);router[_0xba75('0x10')](_0xba75('0x12'),auth[_0xba75('0xa')](),controller[_0xba75('0x13')]);router[_0xba75('0x14')](_0xba75('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xba75('0x15')]('/:id',auth[_0xba75('0xa')](),controller[_0xba75('0x16')]);module[_0xba75('0x17')]=router;
\ No newline at end of file
+var _0x36ee=['index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated'];(function(_0x510579,_0x5207d1){var _0x4d3636=function(_0x5506ad){while(--_0x5506ad){_0x510579['push'](_0x510579['shift']());}};_0x4d3636(++_0x5207d1);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe36e('0x0'));var timeout=require('connect-timeout');var express=require(_0xe36e('0x1'));var router=express[_0xe36e('0x2')]();var fs_extra=require(_0xe36e('0x3'));var auth=require(_0xe36e('0x4'));var interaction=require(_0xe36e('0x5'));var config=require(_0xe36e('0x6'));var controller=require(_0xe36e('0x7'));router[_0xe36e('0x8')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0xa')]);router[_0xe36e('0x8')](_0xe36e('0xb'),auth['isAuthenticated'](),controller[_0xe36e('0xc')]);router['get'](_0xe36e('0xd'),auth[_0xe36e('0x9')](),controller[_0xe36e('0xe')]);router['get'](_0xe36e('0xf'),auth['isAuthenticated'](),controller[_0xe36e('0x10')]);router[_0xe36e('0x11')]('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0x12')]);router[_0xe36e('0x11')](_0xe36e('0xd'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x13')]);router['put'](_0xe36e('0xb'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x14')]);router[_0xe36e('0x15')]('/:id',auth[_0xe36e('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 3fa701d..bb30b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['exports','STRING','username','remoteUri','sequelize'];(function(_0x47fdd5,_0x4e0dca){var _0x563b30=function(_0x32ed98){while(--_0x32ed98){_0x47fdd5['push'](_0x47fdd5['shift']());}};_0x563b30(++_0x4e0dca);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x3d233c,_0x12e5ae){_0x3d233c=_0x3d233c-0x0;var _0x1b1426=_0xfcbb[_0x3d233c];return _0x1b1426;};'use strict';var Sequelize=require(_0xbfcb('0x0'));module[_0xbfcb('0x1')]={'name':{'type':Sequelize[_0xbfcb('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0xbfcb('0x3')},'apiKey':{'type':Sequelize[_0xbfcb('0x2')]},'remoteUri':{'type':Sequelize[_0xbfcb('0x2')],'unique':_0xbfcb('0x4')},'serverUrl':{'type':Sequelize[_0xbfcb('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xeb3b=['sequelize','exports','STRING'];(function(_0x35d775,_0x25431e){var _0x59384d=function(_0x1a0c15){while(--_0x1a0c15){_0x35d775['push'](_0x35d775['shift']());}};_0x59384d(++_0x25431e);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x1ed46f,_0x7691d7){_0x1ed46f=_0x1ed46f-0x0;var _0x43b931=_0xeb3b[_0x1ed46f];return _0x43b931;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'name':{'type':Sequelize[_0xbeb3('0x2')]},'description':{'type':Sequelize[_0xbeb3('0x2')]},'username':{'type':Sequelize[_0xbeb3('0x2')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbeb3('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xbeb3('0x2')],'allowNull':![]}};
\ No newline at end of file
index 559ec9d..ab0db2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77f6=['send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','length','catch','create','body','find','params','destroy','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','Descriptions','FreshsalesField','Subjects','getFields','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','email','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','end','error','stack','name'];(function(_0x55701f,_0x57f545){var _0x30497d=function(_0x254a0a){while(--_0x254a0a){_0x55701f['push'](_0x55701f['shift']());}};_0x30497d(++_0x57f545);}(_0x77f6,0x115));var _0x677f=function(_0x6617c,_0x195988){_0x6617c=_0x6617c-0x0;var _0x2a05cb=_0x77f6[_0x6617c];return _0x2a05cb;};'use strict';var emlformat=require(_0x677f('0x0'));var rimraf=require(_0x677f('0x1'));var zipdir=require(_0x677f('0x2'));var jsonpatch=require(_0x677f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x677f('0x4'));var Mustache=require(_0x677f('0x5'));var util=require(_0x677f('0x6'));var path=require('path');var sox=require(_0x677f('0x7'));var csv=require(_0x677f('0x8'));var ejs=require(_0x677f('0x9'));var fs=require('fs');var fs_extra=require(_0x677f('0xa'));var _=require(_0x677f('0xb'));var squel=require(_0x677f('0xc'));var crypto=require(_0x677f('0xd'));var jsforce=require(_0x677f('0xe'));var deskjs=require(_0x677f('0xf'));var toCsv=require(_0x677f('0x8'));var querystring=require(_0x677f('0x10'));var Papa=require(_0x677f('0x11'));var Redis=require(_0x677f('0x12'));var authService=require(_0x677f('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x677f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x677f('0x15'));var utils=require(_0x677f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x677f('0x17'));var db=require(_0x677f('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x428716,_0x5670c5){_0x5670c5=_0x5670c5||0xcc;return function(_0x4e0d2c){if(_0x4e0d2c){return _0x428716[_0x677f('0x19')](_0x5670c5);}return _0x428716[_0x677f('0x1a')](_0x5670c5)['end']();};}function respondWithResult(_0x2b6d5e,_0x53bcb5){_0x53bcb5=_0x53bcb5||0xc8;return function(_0x18b020){if(_0x18b020){return _0x2b6d5e[_0x677f('0x1a')](_0x53bcb5)[_0x677f('0x1b')](_0x18b020);}};}function respondWithFilteredResult(_0x248177,_0x5149b0){return function(_0x2e1188){if(_0x2e1188){var _0x28d84c=typeof _0x5149b0[_0x677f('0x1c')]===_0x677f('0x1d')&&typeof _0x5149b0['limit']===_0x677f('0x1d');var _0x4b7ba2=_0x2e1188[_0x677f('0x1e')];var _0x133d88=_0x28d84c?0x0:_0x5149b0['offset'];var _0x49934d=_0x28d84c?_0x2e1188[_0x677f('0x1e')]:_0x5149b0[_0x677f('0x1c')]+_0x5149b0['limit'];var _0x301d81;if(_0x49934d>=_0x4b7ba2){_0x49934d=_0x4b7ba2;_0x301d81=0xc8;}else{_0x301d81=0xce;}_0x248177[_0x677f('0x1a')](_0x301d81);return _0x248177[_0x677f('0x1f')](_0x677f('0x20'),_0x133d88+'-'+_0x49934d+'/'+_0x4b7ba2)[_0x677f('0x1b')](_0x2e1188);}return null;};}function patchUpdates(_0x443ba6){return function(_0x2b66a3){try{jsonpatch[_0x677f('0x21')](_0x2b66a3,_0x443ba6,!![]);}catch(_0xc4bd12){return BPromise[_0x677f('0x22')](_0xc4bd12);}return _0x2b66a3['save']();};}function saveUpdates(_0x5320fe,_0x26558a){return function(_0x1bf1fb){if(_0x1bf1fb){return _0x1bf1fb[_0x677f('0x23')](_0x5320fe)['then'](function(_0x5d3fa7){return _0x5d3fa7;});}return null;};}function removeEntity(_0x1f2885,_0x481cb9){return function(_0x22be82){if(_0x22be82){return _0x22be82['destroy']()[_0x677f('0x24')](function(){_0x1f2885['status'](0xcc)[_0x677f('0x25')]();});}};}function handleEntityNotFound(_0x2481ac,_0x4c7c27){return function(_0x4f2465){if(!_0x4f2465){_0x2481ac['sendStatus'](0x194);}return _0x4f2465;};}function handleError(_0x37d4cc,_0x4458fe){_0x4458fe=_0x4458fe||0x1f4;return function(_0x484221){logger[_0x677f('0x26')](_0x484221[_0x677f('0x27')]);if(_0x484221[_0x677f('0x28')]){delete _0x484221[_0x677f('0x28')];}_0x37d4cc['status'](_0x4458fe)[_0x677f('0x29')](_0x484221);};}exports[_0x677f('0x2a')]=function(_0x2fbda2,_0x455b71){var _0x467ac0={},_0x45d581={},_0x7ff8c7={'count':0x0,'rows':[]};var _0x5aff7f=_[_0x677f('0x2b')](db[_0x677f('0x2c')][_0x677f('0x2d')],function(_0x541eb5){return{'name':_0x541eb5[_0x677f('0x2e')],'type':_0x541eb5[_0x677f('0x2f')][_0x677f('0x30')]};});_0x45d581[_0x677f('0x31')]=_['map'](_0x5aff7f,'name');_0x45d581[_0x677f('0x32')]=_[_0x677f('0x33')](_0x2fbda2[_0x677f('0x32')]);_0x45d581['filters']=_[_0x677f('0x34')](_0x45d581['model'],_0x45d581['query']);_0x467ac0['attributes']=_[_0x677f('0x34')](_0x45d581[_0x677f('0x31')],qs[_0x677f('0x35')](_0x2fbda2[_0x677f('0x32')][_0x677f('0x35')]));_0x467ac0[_0x677f('0x36')]=_0x467ac0['attributes']['length']?_0x467ac0['attributes']:_0x45d581[_0x677f('0x31')];if(!_0x2fbda2['query']['hasOwnProperty'](_0x677f('0x37'))){_0x467ac0['limit']=qs[_0x677f('0x38')](_0x2fbda2[_0x677f('0x32')][_0x677f('0x38')]);_0x467ac0[_0x677f('0x1c')]=qs['offset'](_0x2fbda2[_0x677f('0x32')][_0x677f('0x1c')]);}_0x467ac0[_0x677f('0x39')]=qs[_0x677f('0x3a')](_0x2fbda2[_0x677f('0x32')]['sort']);_0x467ac0[_0x677f('0x3b')]=qs[_0x677f('0x3c')](_[_0x677f('0x3d')](_0x2fbda2['query'],_0x45d581[_0x677f('0x3c')]),_0x5aff7f);if(_0x2fbda2[_0x677f('0x32')][_0x677f('0x3e')]){_0x467ac0[_0x677f('0x3b')]=_[_0x677f('0x3f')](_0x467ac0[_0x677f('0x3b')],{'$or':_['map'](_0x5aff7f,function(_0x4a6ddb){if(_0x4a6ddb['type']!==_0x677f('0x40')){var _0x27dfad={};_0x27dfad[_0x4a6ddb[_0x677f('0x28')]]={'$like':'%'+_0x2fbda2[_0x677f('0x32')]['filter']+'%'};return _0x27dfad;}})});}_0x467ac0=_[_0x677f('0x3f')]({},_0x467ac0,_0x2fbda2[_0x677f('0x41')]);var _0x563ab0={'where':_0x467ac0['where']};return db['FreshsalesAccount']['count'](_0x563ab0)['then'](function(_0x201573){_0x7ff8c7[_0x677f('0x1e')]=_0x201573;if(_0x2fbda2[_0x677f('0x32')][_0x677f('0x42')]){_0x467ac0[_0x677f('0x43')]=[{'all':!![]}];}return db[_0x677f('0x2c')][_0x677f('0x44')](_0x467ac0);})[_0x677f('0x24')](function(_0x2aa2c4){_0x7ff8c7['rows']=_0x2aa2c4;return _0x7ff8c7;})['then'](respondWithFilteredResult(_0x455b71,_0x467ac0))['catch'](handleError(_0x455b71,null));};exports[_0x677f('0x45')]=function(_0x4f7c85,_0x36f74b){var _0x474570={'raw':![],'where':{'id':_0x4f7c85['params']['id']}},_0x33dda3={};_0x33dda3[_0x677f('0x31')]=_[_0x677f('0x33')](db['FreshsalesAccount'][_0x677f('0x2d')]);_0x33dda3['query']=_['keys'](_0x4f7c85[_0x677f('0x32')]);_0x33dda3[_0x677f('0x3c')]=_[_0x677f('0x34')](_0x33dda3[_0x677f('0x31')],_0x33dda3[_0x677f('0x32')]);_0x474570[_0x677f('0x36')]=_[_0x677f('0x34')](_0x33dda3[_0x677f('0x31')],qs[_0x677f('0x35')](_0x4f7c85['query']['fields']));_0x474570[_0x677f('0x36')]=_0x474570[_0x677f('0x36')][_0x677f('0x46')]?_0x474570[_0x677f('0x36')]:_0x33dda3[_0x677f('0x31')];if(_0x4f7c85[_0x677f('0x32')][_0x677f('0x42')]){_0x474570[_0x677f('0x43')]=[{'all':!![]}];}_0x474570=_['merge']({},_0x474570,_0x4f7c85[_0x677f('0x41')]);return db[_0x677f('0x2c')]['find'](_0x474570)[_0x677f('0x24')](handleEntityNotFound(_0x36f74b,null))[_0x677f('0x24')](respondWithResult(_0x36f74b,null))[_0x677f('0x47')](handleError(_0x36f74b,null));};exports[_0x677f('0x48')]=function(_0x12543b,_0x780e08){return db['FreshsalesAccount'][_0x677f('0x48')](_0x12543b[_0x677f('0x49')],{})[_0x677f('0x24')](respondWithResult(_0x780e08,0xc9))[_0x677f('0x47')](handleError(_0x780e08,null));};exports[_0x677f('0x23')]=function(_0x398c99,_0x1d9333){if(_0x398c99[_0x677f('0x49')]['id']){delete _0x398c99[_0x677f('0x49')]['id'];}return db[_0x677f('0x2c')][_0x677f('0x4a')]({'where':{'id':_0x398c99[_0x677f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1d9333,null))['then'](saveUpdates(_0x398c99[_0x677f('0x49')],null))[_0x677f('0x24')](respondWithResult(_0x1d9333,null))[_0x677f('0x47')](handleError(_0x1d9333,null));};exports[_0x677f('0x4c')]=function(_0x897b4f,_0x355080){return db[_0x677f('0x2c')][_0x677f('0x4a')]({'where':{'id':_0x897b4f['params']['id']}})[_0x677f('0x24')](handleEntityNotFound(_0x355080,null))[_0x677f('0x24')](removeEntity(_0x355080,null))[_0x677f('0x47')](handleError(_0x355080,null));};exports[_0x677f('0x4d')]=function(_0x476f58,_0x3762eb,_0x25fdeb){var _0x57b987={};var _0x2f4126={};var _0x5b0014;var _0x52440c;return db['FreshsalesAccount'][_0x677f('0x4e')]({'where':{'id':_0x476f58['params']['id']}})['then'](handleEntityNotFound(_0x3762eb,null))[_0x677f('0x24')](function(_0x4edf60){if(_0x4edf60){_0x5b0014=_0x4edf60;_0x2f4126[_0x677f('0x31')]=_[_0x677f('0x33')](db[_0x677f('0x4f')][_0x677f('0x2d')]);_0x2f4126[_0x677f('0x32')]=_[_0x677f('0x33')](_0x476f58[_0x677f('0x32')]);_0x2f4126[_0x677f('0x3c')]=_['intersection'](_0x2f4126[_0x677f('0x31')],_0x2f4126[_0x677f('0x32')]);_0x57b987['attributes']=_[_0x677f('0x34')](_0x2f4126[_0x677f('0x31')],qs[_0x677f('0x35')](_0x476f58[_0x677f('0x32')][_0x677f('0x35')]));_0x57b987[_0x677f('0x36')]=_0x57b987[_0x677f('0x36')][_0x677f('0x46')]?_0x57b987[_0x677f('0x36')]:_0x2f4126[_0x677f('0x31')];_0x57b987[_0x677f('0x39')]=qs[_0x677f('0x3a')](_0x476f58[_0x677f('0x32')][_0x677f('0x3a')]);_0x57b987['where']=qs['filters'](_[_0x677f('0x3d')](_0x476f58['query'],_0x2f4126[_0x677f('0x3c')]));if(_0x476f58[_0x677f('0x32')][_0x677f('0x3e')]){_0x57b987[_0x677f('0x3b')]=_[_0x677f('0x3f')](_0x57b987['where'],{'$or':_[_0x677f('0x2b')](_0x57b987['attributes'],function(_0x395a8b){var _0x145b60={};_0x145b60[_0x395a8b]={'$like':'%'+_0x476f58['query'][_0x677f('0x3e')]+'%'};return _0x145b60;})});}_0x57b987=_[_0x677f('0x3f')]({},_0x57b987,_0x476f58[_0x677f('0x41')]);return _0x5b0014['getConfigurations'](_0x57b987);}})[_0x677f('0x24')](function(_0xb2881f){if(_0xb2881f){_0x52440c=_0xb2881f['length'];if(!_0x476f58[_0x677f('0x32')][_0x677f('0x50')](_0x677f('0x37'))){_0x57b987[_0x677f('0x38')]=qs[_0x677f('0x38')](_0x476f58['query'][_0x677f('0x38')]);_0x57b987['offset']=qs[_0x677f('0x1c')](_0x476f58[_0x677f('0x32')][_0x677f('0x1c')]);}return _0x5b0014[_0x677f('0x4d')](_0x57b987);}})['then'](function(_0x3f3e69){if(_0x3f3e69){return _0x3f3e69?{'count':_0x52440c,'rows':_0x3f3e69}:null;}})['then'](respondWithResult(_0x3762eb,null))[_0x677f('0x47')](handleError(_0x3762eb,null));};exports[_0x677f('0x51')]=function(_0x473bff,_0xffc701,_0x21e1d4){if(_0x473bff[_0x677f('0x49')]['id']){delete _0x473bff[_0x677f('0x49')]['id'];}return db[_0x677f('0x2c')][_0x677f('0x4e')]({'where':{'id':_0x473bff[_0x677f('0x4b')]['id']}})[_0x677f('0x24')](handleEntityNotFound(_0xffc701,null))[_0x677f('0x24')](function(_0x40be52){if(_0x40be52){_0x473bff[_0x677f('0x49')][_0x677f('0x52')]=_0x40be52['id'];_0x473bff[_0x677f('0x49')]['Subjects']=integrations[_0x677f('0x53')](_0x473bff[_0x677f('0x49')][_0x677f('0x54')],_0x473bff[_0x677f('0x49')]['type']);_0x473bff['body'][_0x677f('0x55')]=integrations['getDescriptions'](_0x473bff[_0x677f('0x49')][_0x677f('0x54')],_0x473bff[_0x677f('0x49')][_0x677f('0x2f')]);return db[_0x677f('0x4f')][_0x677f('0x48')](_0x473bff[_0x677f('0x49')],{'include':[{'model':db[_0x677f('0x56')],'as':_0x677f('0x57')},{'model':db['FreshsalesField'],'as':_0x677f('0x55')}]});}return null;})[_0x677f('0x24')](respondWithResult(_0xffc701,null))[_0x677f('0x47')](handleError(_0xffc701,null));};exports[_0x677f('0x58')]=function(_0x269b94,_0x1e7cf2,_0x57b0a8){var _0x748b7b='';var _0x108c53='';return db[_0x677f('0x2c')][_0x677f('0x4e')]({'where':{'id':_0x269b94['params']['id']},'attributes':['id',_0x677f('0x59'),_0x677f('0x5a'),'apiKey']})['then'](handleEntityNotFound(_0x1e7cf2,null))[_0x677f('0x24')](function(_0x14a82b){if(_0x14a82b){_0x108c53=_0x14a82b[_0x677f('0x59')];_0x748b7b=_0x14a82b[_0x677f('0x5a')];var _0x15cf3c=_0x14a82b[_0x677f('0x5a')][_0x677f('0x5b')](-0x1);if(_0x15cf3c==='/'){_0x748b7b=_0x748b7b[_0x677f('0x5c')](0x0,_0x748b7b[_0x677f('0x5d')](_0x15cf3c));}return rp({'method':_0x677f('0x5e'),'uri':util[_0x677f('0x5f')](_0x677f('0x60'),_0x748b7b,_0x677f('0x61')),'headers':{'Authorization':_0x677f('0x62')+_0x14a82b[_0x677f('0x63')]},'json':!![]});}})[_0x677f('0x24')](function(_0x3a6143){if(_0x3a6143){var _0x3a8566=_0x3a6143['users'];var _0x5366bf=![];var _0x25d518=null;for(_0x25d518=0x0;_0x25d518<_0x3a8566['length'];_0x25d518++){if(_0x3a8566[_0x25d518][_0x677f('0x64')]===_0x108c53){_0x5366bf=!![];}}if(_0x5366bf){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x677f('0x65')});}}})[_0x677f('0x24')](respondWithResult(_0x1e7cf2,null))[_0x677f('0x47')](function(_0x14d8f3){var _0x40207b=_0x269b94[_0x677f('0x32')][_0x677f('0x66')]?0x1f4:_0x14d8f3[_0x677f('0x67')]||0x1f4;logger[_0x677f('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x677f('0x58'),_0x40207b,JSON[_0x677f('0x68')](_0x14d8f3));delete _0x14d8f3[_0x677f('0x28')];if(_0x40207b===0x191){_0x40207b=0x190;}_0x1e7cf2[_0x677f('0x1a')](_0x40207b)[_0x677f('0x29')](_0x269b94[_0x677f('0x32')]['test']?{'message':_0x677f('0x69'),'statusCode':_0x14d8f3[_0x677f('0x67')]}:_0x14d8f3);});};
\ No newline at end of file
+var _0xce92=['offset','count','set','Content-Range','reject','update','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','FreshsalesAccount','include','findAll','catch','length','includeAll','options','create','body','destroy','find','params','getConfigurations','findOne','FreshsalesConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','substring','lastIndexOf','format','/api/selector/owners','users','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','rimraf','zip-dir','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit'];(function(_0x39d0d2,_0x3a367e){var _0x4b6e8f=function(_0x4afb67){while(--_0x4afb67){_0x39d0d2['push'](_0x39d0d2['shift']());}};_0x4b6e8f(++_0x3a367e);}(_0xce92,0xa3));var _0x2ce9=function(_0x2bcd1f,_0x4f1972){_0x2bcd1f=_0x2bcd1f-0x0;var _0x2381ca=_0xce92[_0x2bcd1f];return _0x2381ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2ce9('0x0'));var zipdir=require(_0x2ce9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2ce9('0x2'));var BPromise=require(_0x2ce9('0x3'));var Mustache=require(_0x2ce9('0x4'));var util=require('util');var path=require(_0x2ce9('0x5'));var sox=require('sox');var csv=require(_0x2ce9('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2ce9('0x7'));var _=require(_0x2ce9('0x8'));var squel=require(_0x2ce9('0x9'));var crypto=require(_0x2ce9('0xa'));var jsforce=require(_0x2ce9('0xb'));var deskjs=require(_0x2ce9('0xc'));var toCsv=require(_0x2ce9('0x6'));var querystring=require('querystring');var Papa=require(_0x2ce9('0xd'));var Redis=require(_0x2ce9('0xe'));var authService=require(_0x2ce9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2ce9('0x10'));var hardwareService=require(_0x2ce9('0x11'));var logger=require(_0x2ce9('0x12'))(_0x2ce9('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2ce9('0x14'));var db=require(_0x2ce9('0x15'))['db'];var integrations=require(_0x2ce9('0x16'));function respondWithStatusCode(_0x2a8748,_0x125ae3){_0x125ae3=_0x125ae3||0xcc;return function(_0x3f226d){if(_0x3f226d){return _0x2a8748[_0x2ce9('0x17')](_0x125ae3);}return _0x2a8748[_0x2ce9('0x18')](_0x125ae3)[_0x2ce9('0x19')]();};}function respondWithResult(_0x154e31,_0x142740){_0x142740=_0x142740||0xc8;return function(_0x27dec7){if(_0x27dec7){return _0x154e31['status'](_0x142740)[_0x2ce9('0x1a')](_0x27dec7);}};}function respondWithFilteredResult(_0x5e934b,_0x311b8b){return function(_0x4bc13f){if(_0x4bc13f){var _0x32f390=typeof _0x311b8b['offset']===_0x2ce9('0x1b')&&typeof _0x311b8b[_0x2ce9('0x1c')]==='undefined';var _0x4fa6ae=_0x4bc13f['count'];var _0x15f0de=_0x32f390?0x0:_0x311b8b[_0x2ce9('0x1d')];var _0x2772d=_0x32f390?_0x4bc13f[_0x2ce9('0x1e')]:_0x311b8b[_0x2ce9('0x1d')]+_0x311b8b[_0x2ce9('0x1c')];var _0x328c38;if(_0x2772d>=_0x4fa6ae){_0x2772d=_0x4fa6ae;_0x328c38=0xc8;}else{_0x328c38=0xce;}_0x5e934b[_0x2ce9('0x18')](_0x328c38);return _0x5e934b[_0x2ce9('0x1f')](_0x2ce9('0x20'),_0x15f0de+'-'+_0x2772d+'/'+_0x4fa6ae)[_0x2ce9('0x1a')](_0x4bc13f);}return null;};}function patchUpdates(_0x3fbccd){return function(_0x96df93){try{jsonpatch['apply'](_0x96df93,_0x3fbccd,!![]);}catch(_0x4f4df7){return BPromise[_0x2ce9('0x21')](_0x4f4df7);}return _0x96df93['save']();};}function saveUpdates(_0x16d32b,_0x122345){return function(_0x136090){if(_0x136090){return _0x136090[_0x2ce9('0x22')](_0x16d32b)[_0x2ce9('0x23')](function(_0x21b578){return _0x21b578;});}return null;};}function removeEntity(_0x1f6b91,_0x423693){return function(_0x509b8c){if(_0x509b8c){return _0x509b8c['destroy']()[_0x2ce9('0x23')](function(){_0x1f6b91[_0x2ce9('0x18')](0xcc)[_0x2ce9('0x19')]();});}};}function handleEntityNotFound(_0x536684,_0x446d8d){return function(_0x25163c){if(!_0x25163c){_0x536684[_0x2ce9('0x17')](0x194);}return _0x25163c;};}function handleError(_0x47c7b0,_0x427f56){_0x427f56=_0x427f56||0x1f4;return function(_0xf7e5fd){logger[_0x2ce9('0x24')](_0xf7e5fd[_0x2ce9('0x25')]);if(_0xf7e5fd['name']){delete _0xf7e5fd[_0x2ce9('0x26')];}_0x47c7b0[_0x2ce9('0x18')](_0x427f56)['send'](_0xf7e5fd);};}exports[_0x2ce9('0x27')]=function(_0x5cf67a,_0x1cf3d5){var _0xe8978a={},_0x54d4f4={},_0xa87d39={'count':0x0,'rows':[]};var _0xa61953=_[_0x2ce9('0x28')](db['FreshsalesAccount'][_0x2ce9('0x29')],function(_0x11c0d4){return{'name':_0x11c0d4[_0x2ce9('0x2a')],'type':_0x11c0d4[_0x2ce9('0x2b')][_0x2ce9('0x2c')]};});_0x54d4f4['model']=_['map'](_0xa61953,'name');_0x54d4f4[_0x2ce9('0x2d')]=_[_0x2ce9('0x2e')](_0x5cf67a[_0x2ce9('0x2d')]);_0x54d4f4[_0x2ce9('0x2f')]=_['intersection'](_0x54d4f4[_0x2ce9('0x30')],_0x54d4f4[_0x2ce9('0x2d')]);_0xe8978a[_0x2ce9('0x31')]=_[_0x2ce9('0x32')](_0x54d4f4['model'],qs['fields'](_0x5cf67a[_0x2ce9('0x2d')][_0x2ce9('0x33')]));_0xe8978a[_0x2ce9('0x31')]=_0xe8978a[_0x2ce9('0x31')]['length']?_0xe8978a[_0x2ce9('0x31')]:_0x54d4f4['model'];if(!_0x5cf67a[_0x2ce9('0x2d')][_0x2ce9('0x34')](_0x2ce9('0x35'))){_0xe8978a[_0x2ce9('0x1c')]=qs[_0x2ce9('0x1c')](_0x5cf67a['query']['limit']);_0xe8978a['offset']=qs[_0x2ce9('0x1d')](_0x5cf67a[_0x2ce9('0x2d')][_0x2ce9('0x1d')]);}_0xe8978a[_0x2ce9('0x36')]=qs['sort'](_0x5cf67a[_0x2ce9('0x2d')][_0x2ce9('0x37')]);_0xe8978a[_0x2ce9('0x38')]=qs[_0x2ce9('0x2f')](_['pick'](_0x5cf67a[_0x2ce9('0x2d')],_0x54d4f4[_0x2ce9('0x2f')]),_0xa61953);if(_0x5cf67a[_0x2ce9('0x2d')]['filter']){_0xe8978a[_0x2ce9('0x38')]=_[_0x2ce9('0x39')](_0xe8978a[_0x2ce9('0x38')],{'$or':_[_0x2ce9('0x28')](_0xa61953,function(_0x44fc26){if(_0x44fc26[_0x2ce9('0x2b')]!==_0x2ce9('0x3a')){var _0x1c05e7={};_0x1c05e7[_0x44fc26[_0x2ce9('0x26')]]={'$like':'%'+_0x5cf67a[_0x2ce9('0x2d')][_0x2ce9('0x3b')]+'%'};return _0x1c05e7;}})});}_0xe8978a=_[_0x2ce9('0x39')]({},_0xe8978a,_0x5cf67a['options']);var _0xc65597={'where':_0xe8978a['where']};return db[_0x2ce9('0x3c')][_0x2ce9('0x1e')](_0xc65597)[_0x2ce9('0x23')](function(_0x2310e3){_0xa87d39[_0x2ce9('0x1e')]=_0x2310e3;if(_0x5cf67a[_0x2ce9('0x2d')]['includeAll']){_0xe8978a[_0x2ce9('0x3d')]=[{'all':!![]}];}return db[_0x2ce9('0x3c')][_0x2ce9('0x3e')](_0xe8978a);})[_0x2ce9('0x23')](function(_0x370556){_0xa87d39['rows']=_0x370556;return _0xa87d39;})[_0x2ce9('0x23')](respondWithFilteredResult(_0x1cf3d5,_0xe8978a))[_0x2ce9('0x3f')](handleError(_0x1cf3d5,null));};exports['show']=function(_0x3ebd19,_0x23210d){var _0x2e6776={'raw':![],'where':{'id':_0x3ebd19['params']['id']}},_0x2533ab={};_0x2533ab['model']=_[_0x2ce9('0x2e')](db[_0x2ce9('0x3c')]['rawAttributes']);_0x2533ab['query']=_[_0x2ce9('0x2e')](_0x3ebd19[_0x2ce9('0x2d')]);_0x2533ab[_0x2ce9('0x2f')]=_[_0x2ce9('0x32')](_0x2533ab[_0x2ce9('0x30')],_0x2533ab[_0x2ce9('0x2d')]);_0x2e6776[_0x2ce9('0x31')]=_[_0x2ce9('0x32')](_0x2533ab['model'],qs[_0x2ce9('0x33')](_0x3ebd19[_0x2ce9('0x2d')][_0x2ce9('0x33')]));_0x2e6776[_0x2ce9('0x31')]=_0x2e6776[_0x2ce9('0x31')][_0x2ce9('0x40')]?_0x2e6776[_0x2ce9('0x31')]:_0x2533ab[_0x2ce9('0x30')];if(_0x3ebd19[_0x2ce9('0x2d')][_0x2ce9('0x41')]){_0x2e6776['include']=[{'all':!![]}];}_0x2e6776=_[_0x2ce9('0x39')]({},_0x2e6776,_0x3ebd19[_0x2ce9('0x42')]);return db[_0x2ce9('0x3c')]['find'](_0x2e6776)[_0x2ce9('0x23')](handleEntityNotFound(_0x23210d,null))['then'](respondWithResult(_0x23210d,null))[_0x2ce9('0x3f')](handleError(_0x23210d,null));};exports[_0x2ce9('0x43')]=function(_0x475073,_0x495dd7){return db[_0x2ce9('0x3c')][_0x2ce9('0x43')](_0x475073[_0x2ce9('0x44')],{})[_0x2ce9('0x23')](respondWithResult(_0x495dd7,0xc9))[_0x2ce9('0x3f')](handleError(_0x495dd7,null));};exports[_0x2ce9('0x22')]=function(_0x560b49,_0x2d8c7f){if(_0x560b49[_0x2ce9('0x44')]['id']){delete _0x560b49[_0x2ce9('0x44')]['id'];}return db[_0x2ce9('0x3c')]['find']({'where':{'id':_0x560b49['params']['id']}})[_0x2ce9('0x23')](handleEntityNotFound(_0x2d8c7f,null))['then'](saveUpdates(_0x560b49['body'],null))[_0x2ce9('0x23')](respondWithResult(_0x2d8c7f,null))[_0x2ce9('0x3f')](handleError(_0x2d8c7f,null));};exports[_0x2ce9('0x45')]=function(_0x410f2b,_0x1bb15b){return db[_0x2ce9('0x3c')][_0x2ce9('0x46')]({'where':{'id':_0x410f2b[_0x2ce9('0x47')]['id']}})[_0x2ce9('0x23')](handleEntityNotFound(_0x1bb15b,null))['then'](removeEntity(_0x1bb15b,null))[_0x2ce9('0x3f')](handleError(_0x1bb15b,null));};exports[_0x2ce9('0x48')]=function(_0x524e8c,_0x44cf02,_0x55f5b8){var _0x173f2e={};var _0x1b73b4={};var _0x8ff67c;var _0x459146;return db[_0x2ce9('0x3c')][_0x2ce9('0x49')]({'where':{'id':_0x524e8c[_0x2ce9('0x47')]['id']}})[_0x2ce9('0x23')](handleEntityNotFound(_0x44cf02,null))[_0x2ce9('0x23')](function(_0x59795c){if(_0x59795c){_0x8ff67c=_0x59795c;_0x1b73b4[_0x2ce9('0x30')]=_[_0x2ce9('0x2e')](db[_0x2ce9('0x4a')][_0x2ce9('0x29')]);_0x1b73b4[_0x2ce9('0x2d')]=_['keys'](_0x524e8c[_0x2ce9('0x2d')]);_0x1b73b4[_0x2ce9('0x2f')]=_[_0x2ce9('0x32')](_0x1b73b4[_0x2ce9('0x30')],_0x1b73b4[_0x2ce9('0x2d')]);_0x173f2e[_0x2ce9('0x31')]=_[_0x2ce9('0x32')](_0x1b73b4[_0x2ce9('0x30')],qs[_0x2ce9('0x33')](_0x524e8c[_0x2ce9('0x2d')][_0x2ce9('0x33')]));_0x173f2e[_0x2ce9('0x31')]=_0x173f2e['attributes']['length']?_0x173f2e['attributes']:_0x1b73b4[_0x2ce9('0x30')];_0x173f2e[_0x2ce9('0x36')]=qs[_0x2ce9('0x37')](_0x524e8c[_0x2ce9('0x2d')]['sort']);_0x173f2e[_0x2ce9('0x38')]=qs['filters'](_[_0x2ce9('0x4b')](_0x524e8c[_0x2ce9('0x2d')],_0x1b73b4[_0x2ce9('0x2f')]));if(_0x524e8c[_0x2ce9('0x2d')][_0x2ce9('0x3b')]){_0x173f2e['where']=_[_0x2ce9('0x39')](_0x173f2e[_0x2ce9('0x38')],{'$or':_['map'](_0x173f2e['attributes'],function(_0x5634d9){var _0x551ce9={};_0x551ce9[_0x5634d9]={'$like':'%'+_0x524e8c[_0x2ce9('0x2d')][_0x2ce9('0x3b')]+'%'};return _0x551ce9;})});}_0x173f2e=_[_0x2ce9('0x39')]({},_0x173f2e,_0x524e8c[_0x2ce9('0x42')]);return _0x8ff67c[_0x2ce9('0x48')](_0x173f2e);}})[_0x2ce9('0x23')](function(_0x41231f){if(_0x41231f){_0x459146=_0x41231f['length'];if(!_0x524e8c[_0x2ce9('0x2d')]['hasOwnProperty'](_0x2ce9('0x35'))){_0x173f2e[_0x2ce9('0x1c')]=qs[_0x2ce9('0x1c')](_0x524e8c['query'][_0x2ce9('0x1c')]);_0x173f2e[_0x2ce9('0x1d')]=qs[_0x2ce9('0x1d')](_0x524e8c[_0x2ce9('0x2d')][_0x2ce9('0x1d')]);}return _0x8ff67c['getConfigurations'](_0x173f2e);}})[_0x2ce9('0x23')](function(_0x3a2c1d){if(_0x3a2c1d){return _0x3a2c1d?{'count':_0x459146,'rows':_0x3a2c1d}:null;}})[_0x2ce9('0x23')](respondWithResult(_0x44cf02,null))[_0x2ce9('0x3f')](handleError(_0x44cf02,null));};exports[_0x2ce9('0x4c')]=function(_0x4fe993,_0x494c13,_0x45d828){if(_0x4fe993[_0x2ce9('0x44')]['id']){delete _0x4fe993[_0x2ce9('0x44')]['id'];}return db[_0x2ce9('0x3c')]['findOne']({'where':{'id':_0x4fe993[_0x2ce9('0x47')]['id']}})[_0x2ce9('0x23')](handleEntityNotFound(_0x494c13,null))['then'](function(_0x9e170){if(_0x9e170){_0x4fe993[_0x2ce9('0x44')][_0x2ce9('0x4d')]=_0x9e170['id'];_0x4fe993[_0x2ce9('0x44')][_0x2ce9('0x4e')]=integrations[_0x2ce9('0x4f')](_0x4fe993['body']['channel'],_0x4fe993[_0x2ce9('0x44')][_0x2ce9('0x2b')]);_0x4fe993['body'][_0x2ce9('0x50')]=integrations[_0x2ce9('0x51')](_0x4fe993[_0x2ce9('0x44')]['channel'],_0x4fe993[_0x2ce9('0x44')][_0x2ce9('0x2b')]);return db[_0x2ce9('0x4a')]['create'](_0x4fe993[_0x2ce9('0x44')],{'include':[{'model':db['FreshsalesField'],'as':_0x2ce9('0x4e')},{'model':db[_0x2ce9('0x52')],'as':_0x2ce9('0x50')}]});}return null;})[_0x2ce9('0x23')](respondWithResult(_0x494c13,null))[_0x2ce9('0x3f')](handleError(_0x494c13,null));};exports[_0x2ce9('0x53')]=function(_0x424542,_0x30b1ae,_0x15800c){var _0x15f390='';var _0x36ba12='';return db[_0x2ce9('0x3c')][_0x2ce9('0x49')]({'where':{'id':_0x424542[_0x2ce9('0x47')]['id']},'attributes':['id','username','remoteUri','apiKey']})[_0x2ce9('0x23')](handleEntityNotFound(_0x30b1ae,null))[_0x2ce9('0x23')](function(_0x118cd1){if(_0x118cd1){_0x36ba12=_0x118cd1[_0x2ce9('0x54')];_0x15f390=_0x118cd1[_0x2ce9('0x55')];var _0x2c752c=_0x118cd1[_0x2ce9('0x55')]['slice'](-0x1);if(_0x2c752c==='/'){_0x15f390=_0x15f390[_0x2ce9('0x56')](0x0,_0x15f390[_0x2ce9('0x57')](_0x2c752c));}return rp({'method':'GET','uri':util[_0x2ce9('0x58')]('%s%s',_0x15f390,_0x2ce9('0x59')),'headers':{'Authorization':'Token\x20token='+_0x118cd1['apiKey']},'json':!![]});}})[_0x2ce9('0x23')](function(_0x2ab126){if(_0x2ab126){var _0x2f93f1=_0x2ab126[_0x2ce9('0x5a')];var _0x36d47f=![];var _0x5c7ec3=null;for(_0x5c7ec3=0x0;_0x5c7ec3<_0x2f93f1[_0x2ce9('0x40')];_0x5c7ec3++){if(_0x2f93f1[_0x5c7ec3]['email']===_0x36ba12){_0x36d47f=!![];}}if(_0x36d47f){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x2ce9('0x5b')});}}})['then'](respondWithResult(_0x30b1ae,null))[_0x2ce9('0x3f')](function(_0x1747cb){var _0x4d46b9=_0x424542['query']['test']?0x1f4:_0x1747cb[_0x2ce9('0x5c')]||0x1f4;logger['error'](_0x2ce9('0x5d'),_0x2ce9('0x53'),_0x4d46b9,JSON[_0x2ce9('0x5e')](_0x1747cb));delete _0x1747cb[_0x2ce9('0x26')];if(_0x4d46b9===0x191){_0x4d46b9=0x190;}_0x30b1ae[_0x2ce9('0x18')](_0x4d46b9)['send'](_0x424542[_0x2ce9('0x2d')][_0x2ce9('0x5f')]?{'message':'Wrong\x20credentials','statusCode':_0x1747cb[_0x2ce9('0x5c')]}:_0x1747cb);});};
\ No newline at end of file
index d34dfd5..4f8f778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['path','./intFreshsalesAccount.attributes','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','api','moment','bluebird','request-promise'];(function(_0x598331,_0x492c9b){var _0x17a8a1=function(_0x3bf13e){while(--_0x3bf13e){_0x598331['push'](_0x598331['shift']());}};_0x17a8a1(++_0x492c9b);}(_0x1623,0xab));var _0x3162=function(_0x37912b,_0x393a25){_0x37912b=_0x37912b-0x0;var _0xa5f34c=_0x1623[_0x37912b];return _0xa5f34c;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3162('0x1'));var moment=require(_0x3162('0x2'));var BPromise=require(_0x3162('0x3'));var rp=require(_0x3162('0x4'));var fs=require('fs');var path=require(_0x3162('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3162('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x3162('0x7')]=function(_0x428de6,_0x53260d){return _0x428de6[_0x3162('0x8')](_0x3162('0x9'),attributes,{'tableName':_0x3162('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x524e=['define','int_freshsales_accounts','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x45b1b0,_0xe25b4d){var _0x4e3520=function(_0x10286a){while(--_0x10286a){_0x45b1b0['push'](_0x45b1b0['shift']());}};_0x4e3520(++_0xe25b4d);}(_0x524e,0x15e));var _0xe524=function(_0x4cdf02,_0x6fa24f){_0x4cdf02=_0x4cdf02-0x0;var _0x13abf4=_0x524e[_0x4cdf02];return _0x13abf4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));var integrations=require(_0xe524('0x9'));module['exports']=function(_0xaaeaa9,_0x41e1a3){return _0xaaeaa9[_0xe524('0xa')]('FreshsalesAccount',attributes,{'tableName':_0xe524('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4981602..d981a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['FreshsalesAccount,\x20%s,\x20%s','message','info','result','catch','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowFreshsalesAccount','FreshsalesAccount','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xdf55,0x83));var _0x5df5=function(_0x3b80d6,_0x18a56a){_0x3b80d6=_0x3b80d6-0x0;var _0x4e08f1=_0xdf55[_0x3b80d6];return _0x4e08f1;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var moment=require('moment');var BPromise=require(_0x5df5('0x2'));var rs=require(_0x5df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5df5('0x4'))['db'];var utils=require(_0x5df5('0x5'));var logger=require(_0x5df5('0x6'))('rpc');var config=require(_0x5df5('0x7'));var jayson=require(_0x5df5('0x8'));var client=jayson[_0x5df5('0x9')][_0x5df5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9b8756,_0x2b7ed9,_0x4722a2){return new BPromise(function(_0x3743f3,_0x4d43a3){return client[_0x5df5('0xb')](_0x9b8756,_0x4722a2)[_0x5df5('0xc')](function(_0x41941e){logger['info']('FreshsalesAccount,\x20%s,\x20%s',_0x2b7ed9,_0x5df5('0xd'));logger['debug'](_0x5df5('0xe'),_0x2b7ed9,_0x5df5('0xd'),JSON['stringify'](_0x41941e));if(_0x41941e['error']){if(_0x41941e[_0x5df5('0xf')][_0x5df5('0x10')]===0x1f4){logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);return _0x4d43a3(_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);}logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e['error'][_0x5df5('0x12')]);return _0x3743f3(_0x41941e['error'][_0x5df5('0x12')]);}else{logger[_0x5df5('0x13')](_0x5df5('0x11'),_0x2b7ed9,_0x5df5('0xd'));_0x3743f3(_0x41941e[_0x5df5('0x14')]['message']);}})[_0x5df5('0x15')](function(_0x457205){logger['error'](_0x5df5('0x11'),_0x2b7ed9,_0x457205);_0x4d43a3(_0x457205);});});}exports[_0x5df5('0x16')]=function(_0xb7e1c2){var _0x44f700=this;return new Promise(function(_0x215d59,_0x4b499d){return db['FreshsalesAccount'][_0x5df5('0x17')]({'raw':_0xb7e1c2['options']?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x19')]===undefined?!![]:![]:!![],'where':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1a')]||null:null,'attributes':_0xb7e1c2['options']?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1b')]||null:null,'limit':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1c')]||null:null,'include':_0xb7e1c2[_0x5df5('0x18')]?_0xb7e1c2['options'][_0x5df5('0x1d')]?_[_0x5df5('0x1e')](_0xb7e1c2[_0x5df5('0x18')][_0x5df5('0x1d')],function(_0x5ca542){return{'model':db[_0x5ca542[_0x5df5('0x1f')]],'as':_0x5ca542['as'],'attributes':_0x5ca542[_0x5df5('0x1b')],'include':_0x5ca542[_0x5df5('0x1d')]?_['map'](_0x5ca542['include'],function(_0x532923){return{'model':db[_0x532923[_0x5df5('0x1f')]],'as':_0x532923['as'],'attributes':_0x532923[_0x5df5('0x1b')],'include':_0x532923[_0x5df5('0x1d')]?_[_0x5df5('0x1e')](_0x532923[_0x5df5('0x1d')],function(_0x1fd83c){return{'model':db[_0x1fd83c[_0x5df5('0x1f')]],'as':_0x1fd83c['as'],'attributes':_0x1fd83c[_0x5df5('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x18bb61){logger['info'](_0x5df5('0x16'),_0xb7e1c2);logger[_0x5df5('0x20')]('GetFreshsalesAccount',_0xb7e1c2,JSON[_0x5df5('0x21')](_0x18bb61));_0x215d59(_0x18bb61);})['catch'](function(_0xd2b213){logger['error'](_0x5df5('0x16'),_0xd2b213['message'],_0xb7e1c2);_0x4b499d(_0x44f700[_0x5df5('0xf')](0x1f4,_0xd2b213['message']));});});};exports[_0x5df5('0x22')]=function(_0x47bebb){var _0x4784ca=this;return new Promise(function(_0x485484,_0xf445de){return db[_0x5df5('0x23')][_0x5df5('0x24')]({'raw':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x19')]===undefined?!![]:![]:!![],'where':_0x47bebb[_0x5df5('0x18')]?_0x47bebb['options']['where']||null:null,'attributes':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1b')]||null:null,'include':_0x47bebb[_0x5df5('0x18')]?_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1d')]?_['map'](_0x47bebb[_0x5df5('0x18')][_0x5df5('0x1d')],function(_0x2f1001){return{'model':db[_0x2f1001[_0x5df5('0x1f')]],'as':_0x2f1001['as'],'attributes':_0x2f1001['attributes'],'include':_0x2f1001[_0x5df5('0x1d')]?_['map'](_0x2f1001[_0x5df5('0x1d')],function(_0x394676){return{'model':db[_0x394676['model']],'as':_0x394676['as'],'attributes':_0x394676[_0x5df5('0x1b')],'include':_0x394676['include']?_[_0x5df5('0x1e')](_0x394676[_0x5df5('0x1d')],function(_0x4697c2){return{'model':db[_0x4697c2[_0x5df5('0x1f')]],'as':_0x4697c2['as'],'attributes':_0x4697c2['attributes']};}):[]};}):[]};}):[]:[]})[_0x5df5('0xc')](function(_0x2e7e64){logger[_0x5df5('0x13')](_0x5df5('0x22'),_0x47bebb);logger['debug'](_0x5df5('0x22'),_0x47bebb,JSON[_0x5df5('0x21')](_0x2e7e64));_0x485484(_0x2e7e64);})[_0x5df5('0x15')](function(_0x18b597){logger[_0x5df5('0xf')](_0x5df5('0x22'),_0x18b597[_0x5df5('0x12')],_0x47bebb);_0xf445de(_0x4784ca['error'](0x1f4,_0x18b597[_0x5df5('0x12')]));});});};
\ No newline at end of file
+var _0x47c5=['include','model','attributes','map','GetFreshsalesAccount','ShowFreshsalesAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FreshsalesAccount','findAll','options','raw'];(function(_0x559190,_0xae9258){var _0x22f1f3=function(_0x112898){while(--_0x112898){_0x559190['push'](_0x559190['shift']());}};_0x22f1f3(++_0xae9258);}(_0x47c5,0x165));var _0x547c=function(_0x3bf2d5,_0x36116c){_0x3bf2d5=_0x3bf2d5-0x0;var _0x29e958=_0x47c5[_0x3bf2d5];return _0x29e958;};'use strict';var _=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var moment=require(_0x547c('0x2'));var BPromise=require(_0x547c('0x3'));var rs=require(_0x547c('0x4'));var fs=require('fs');var Redis=require(_0x547c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x547c('0x6'));var logger=require(_0x547c('0x7'))('rpc');var config=require(_0x547c('0x8'));var jayson=require(_0x547c('0x9'));var client=jayson['client'][_0x547c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x439f25,_0x381f2e,_0x10a334){return new BPromise(function(_0x12fb7d,_0x4ef079){return client[_0x547c('0xb')](_0x439f25,_0x10a334)[_0x547c('0xc')](function(_0x10dec9){logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));logger[_0x547c('0x10')](_0x547c('0x11'),_0x381f2e,_0x547c('0xf'),JSON[_0x547c('0x12')](_0x10dec9));if(_0x10dec9[_0x547c('0x13')]){if(_0x10dec9['error'][_0x547c('0x14')]===0x1f4){logger[_0x547c('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x4ef079(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}logger[_0x547c('0x13')](_0x547c('0xe'),_0x381f2e,_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);return _0x12fb7d(_0x10dec9[_0x547c('0x13')][_0x547c('0x15')]);}else{logger[_0x547c('0xd')](_0x547c('0xe'),_0x381f2e,_0x547c('0xf'));_0x12fb7d(_0x10dec9[_0x547c('0x16')][_0x547c('0x15')]);}})[_0x547c('0x17')](function(_0x39498d){logger[_0x547c('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['GetFreshsalesAccount']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')]({'raw':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e['options'][_0x547c('0x1b')]===undefined?!![]:![]:!![],'where':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e['options']['where']||null:null,'attributes':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')]['attributes']||null:null,'limit':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')]['limit']||null:null,'include':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')][_0x547c('0x1c')]?_['map'](_0x23fa9e[_0x547c('0x1a')][_0x547c('0x1c')],function(_0x470694){return{'model':db[_0x470694[_0x547c('0x1d')]],'as':_0x470694['as'],'attributes':_0x470694[_0x547c('0x1e')],'include':_0x470694[_0x547c('0x1c')]?_[_0x547c('0x1f')](_0x470694[_0x547c('0x1c')],function(_0x507895){return{'model':db[_0x507895[_0x547c('0x1d')]],'as':_0x507895['as'],'attributes':_0x507895['attributes'],'include':_0x507895['include']?_['map'](_0x507895['include'],function(_0x2c725d){return{'model':db[_0x2c725d['model']],'as':_0x2c725d['as'],'attributes':_0x2c725d[_0x547c('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ea493){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x3ea493));_0xeb059e(_0x3ea493);})[_0x547c('0x17')](function(_0x569924){logger['error'](_0x547c('0x20'),_0x569924['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x569924[_0x547c('0x15')]));});});};exports[_0x547c('0x21')]=function(_0x1695be){var _0x4652e7=this;return new Promise(function(_0x51e6e7,_0x342c10){return db['FreshsalesAccount']['find']({'raw':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1b')]===undefined?!![]:![]:!![],'where':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x22')]||null:null,'attributes':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1e')]||null:null,'include':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1c')]?_[_0x547c('0x1f')](_0x1695be[_0x547c('0x1a')]['include'],function(_0x3afc28){return{'model':db[_0x3afc28['model']],'as':_0x3afc28['as'],'attributes':_0x3afc28['attributes'],'include':_0x3afc28['include']?_[_0x547c('0x1f')](_0x3afc28[_0x547c('0x1c')],function(_0x31c7d3){return{'model':db[_0x31c7d3[_0x547c('0x1d')]],'as':_0x31c7d3['as'],'attributes':_0x31c7d3[_0x547c('0x1e')],'include':_0x31c7d3[_0x547c('0x1c')]?_['map'](_0x31c7d3['include'],function(_0x5ea2c7){return{'model':db[_0x5ea2c7[_0x547c('0x1d')]],'as':_0x5ea2c7['as'],'attributes':_0x5ea2c7[_0x547c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x547c('0xc')](function(_0x44687e){logger[_0x547c('0xd')](_0x547c('0x21'),_0x1695be);logger['debug'](_0x547c('0x21'),_0x1695be,JSON['stringify'](_0x44687e));_0x51e6e7(_0x44687e);})[_0x547c('0x17')](function(_0x18fcc5){logger['error'](_0x547c('0x21'),_0x18fcc5['message'],_0x1695be);_0x342c10(_0x4652e7['error'](0x1f4,_0x18fcc5[_0x547c('0x15')]));});});};
\ No newline at end of file
index 5ad97cb..e778dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9312=['/:id','isAuthenticated','show','/:id/subjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9312,0x145));var _0x2931=function(_0x1a89a1,_0x56d889){_0x1a89a1=_0x1a89a1-0x0;var _0x3d5b46=_0x9312[_0x1a89a1];return _0x3d5b46;};'use strict';var multer=require(_0x2931('0x0'));var util=require(_0x2931('0x1'));var path=require(_0x2931('0x2'));var timeout=require(_0x2931('0x3'));var express=require(_0x2931('0x4'));var router=express[_0x2931('0x5')]();var fs_extra=require(_0x2931('0x6'));var auth=require(_0x2931('0x7'));var interaction=require(_0x2931('0x8'));var config=require('../../config/environment');var controller=require('./intFreshsalesConfiguration.controller');router[_0x2931('0x9')]('/',auth['isAuthenticated'](),controller[_0x2931('0xa')]);router['get'](_0x2931('0xb'),auth[_0x2931('0xc')](),controller[_0x2931('0xd')]);router[_0x2931('0x9')](_0x2931('0xe'),auth[_0x2931('0xc')](),controller['getSubjects']);router['get'](_0x2931('0xf'),auth[_0x2931('0xc')](),controller[_0x2931('0x10')]);router[_0x2931('0x9')](_0x2931('0x11'),auth[_0x2931('0xc')](),controller['getFields']);router[_0x2931('0x12')]('/',auth[_0x2931('0xc')](),controller[_0x2931('0x13')]);router['put'](_0x2931('0xb'),auth[_0x2931('0xc')](),controller[_0x2931('0x14')]);router[_0x2931('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x2931('0x16')]);module[_0x2931('0x17')]=router;
\ No newline at end of file
+var _0x7d43=['get','isAuthenticated','/:id','show','getSubjects','/:id/descriptions','/:id/fields','post','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x7d43,0x84));var _0x37d4=function(_0x1c400c,_0x503939){_0x1c400c=_0x1c400c-0x0;var _0x316e3e=_0x7d43[_0x1c400c];return _0x316e3e;};'use strict';var multer=require(_0x37d4('0x0'));var util=require(_0x37d4('0x1'));var path=require(_0x37d4('0x2'));var timeout=require(_0x37d4('0x3'));var express=require('express');var router=express[_0x37d4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x37d4('0x5'));var interaction=require(_0x37d4('0x6'));var config=require(_0x37d4('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x37d4('0x8')]('/',auth[_0x37d4('0x9')](),controller['index']);router[_0x37d4('0x8')](_0x37d4('0xa'),auth['isAuthenticated'](),controller[_0x37d4('0xb')]);router[_0x37d4('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x37d4('0xc')]);router[_0x37d4('0x8')](_0x37d4('0xd'),auth[_0x37d4('0x9')](),controller['getDescriptions']);router[_0x37d4('0x8')](_0x37d4('0xe'),auth[_0x37d4('0x9')](),controller['getFields']);router[_0x37d4('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x37d4('0x9')](),controller[_0x37d4('0x10')]);router[_0x37d4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x37d4('0x12')]);module[_0x37d4('0x13')]=router;
\ No newline at end of file
index 7081abb..af7ead7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf973=['exports','STRING','sequelize'];(function(_0x57405d,_0x5b87c6){var _0x3cf792=function(_0x434e0c){while(--_0x434e0c){_0x57405d['push'](_0x57405d['shift']());}};_0x3cf792(++_0x5b87c6);}(_0xf973,0x92));var _0x3f97=function(_0x20be28,_0x24b925){_0x20be28=_0x20be28-0x0;var _0x8ab067=_0xf973[_0x20be28];return _0x8ab067;};'use strict';var Sequelize=require(_0x3f97('0x0'));module[_0x3f97('0x1')]={'name':{'type':Sequelize[_0x3f97('0x2')]},'description':{'type':Sequelize[_0x3f97('0x2')]}};
\ No newline at end of file
+var _0xa8ba=['exports','STRING','sequelize'];(function(_0x53eba7,_0x38744c){var _0x32491b=function(_0x61ea1d){while(--_0x61ea1d){_0x53eba7['push'](_0x53eba7['shift']());}};_0x32491b(++_0x38744c);}(_0xa8ba,0xb9));var _0xaa8b=function(_0x1990b0,_0x1f9ee9){_0x1990b0=_0x1990b0-0x0;var _0x2bae84=_0xa8ba[_0x1990b0];return _0x2bae84;};'use strict';var Sequelize=require(_0xaa8b('0x0'));module[_0xaa8b('0x1')]={'name':{'type':Sequelize[_0xaa8b('0x2')]},'description':{'type':Sequelize[_0xaa8b('0x2')]}};
\ No newline at end of file
index b4e1dbf..2a0fbee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d77=['sort','where','merge','VIRTUAL','options','FreshsalesConfiguration','findAll','rows','catch','show','params','include','find','body','update','getSubjects','findOne','fields','pick','filter','hasOwnProperty','FreshsalesField','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','set','json','apply','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order'];(function(_0x3df516,_0x36d636){var _0xa6612c=function(_0x5bf41a){while(--_0x5bf41a){_0x3df516['push'](_0x3df516['shift']());}};_0xa6612c(++_0x36d636);}(_0x7d77,0x19e));var _0x77d7=function(_0x146fc2,_0x4beccc){_0x146fc2=_0x146fc2-0x0;var _0x3600ee=_0x7d77[_0x146fc2];return _0x3600ee;};'use strict';var emlformat=require(_0x77d7('0x0'));var rimraf=require(_0x77d7('0x1'));var zipdir=require(_0x77d7('0x2'));var jsonpatch=require(_0x77d7('0x3'));var rp=require(_0x77d7('0x4'));var moment=require(_0x77d7('0x5'));var BPromise=require(_0x77d7('0x6'));var Mustache=require(_0x77d7('0x7'));var util=require(_0x77d7('0x8'));var path=require(_0x77d7('0x9'));var sox=require(_0x77d7('0xa'));var csv=require(_0x77d7('0xb'));var ejs=require(_0x77d7('0xc'));var fs=require('fs');var fs_extra=require(_0x77d7('0xd'));var _=require(_0x77d7('0xe'));var squel=require(_0x77d7('0xf'));var crypto=require(_0x77d7('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x77d7('0x11'));var toCsv=require('to-csv');var querystring=require(_0x77d7('0x12'));var Papa=require('papaparse');var Redis=require(_0x77d7('0x13'));var authService=require(_0x77d7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x77d7('0x15'));var hardwareService=require(_0x77d7('0x16'));var logger=require('../../config/logger')(_0x77d7('0x17'));var utils=require('../../config/utils');var config=require(_0x77d7('0x18'));var licenseUtil=require(_0x77d7('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31de81,_0x3ff3d1){_0x3ff3d1=_0x3ff3d1||0xcc;return function(_0x1af1cd){if(_0x1af1cd){return _0x31de81['sendStatus'](_0x3ff3d1);}return _0x31de81[_0x77d7('0x1a')](_0x3ff3d1)[_0x77d7('0x1b')]();};}function respondWithResult(_0x1b2a10,_0x294a06){_0x294a06=_0x294a06||0xc8;return function(_0x25be4e){if(_0x25be4e){return _0x1b2a10['status'](_0x294a06)['json'](_0x25be4e);}};}function respondWithFilteredResult(_0x2bf848,_0x2ac171){return function(_0x3e2072){if(_0x3e2072){var _0x53e99f=typeof _0x2ac171[_0x77d7('0x1c')]===_0x77d7('0x1d')&&typeof _0x2ac171['limit']===_0x77d7('0x1d');var _0x481e71=_0x3e2072[_0x77d7('0x1e')];var _0x1807e2=_0x53e99f?0x0:_0x2ac171['offset'];var _0x378901=_0x53e99f?_0x3e2072[_0x77d7('0x1e')]:_0x2ac171[_0x77d7('0x1c')]+_0x2ac171[_0x77d7('0x1f')];var _0x166c83;if(_0x378901>=_0x481e71){_0x378901=_0x481e71;_0x166c83=0xc8;}else{_0x166c83=0xce;}_0x2bf848[_0x77d7('0x1a')](_0x166c83);return _0x2bf848[_0x77d7('0x20')]('Content-Range',_0x1807e2+'-'+_0x378901+'/'+_0x481e71)[_0x77d7('0x21')](_0x3e2072);}return null;};}function patchUpdates(_0x117542){return function(_0x43cb67){try{jsonpatch[_0x77d7('0x22')](_0x43cb67,_0x117542,!![]);}catch(_0x4dbb56){return BPromise['reject'](_0x4dbb56);}return _0x43cb67['save']();};}function saveUpdates(_0x5328a4,_0x436e34){return function(_0x486f30){if(_0x486f30){return _0x486f30['update'](_0x5328a4)['then'](function(_0x703506){return _0x703506;});}return null;};}function removeEntity(_0x5deb27,_0x5c8c92){return function(_0x392e14){if(_0x392e14){return _0x392e14[_0x77d7('0x23')]()[_0x77d7('0x24')](function(){_0x5deb27[_0x77d7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7216ec,_0x4a9242){return function(_0x42ba1b){if(!_0x42ba1b){_0x7216ec['sendStatus'](0x194);}return _0x42ba1b;};}function handleError(_0x391bde,_0x242eb5){_0x242eb5=_0x242eb5||0x1f4;return function(_0x4c15f4){logger[_0x77d7('0x25')](_0x4c15f4[_0x77d7('0x26')]);if(_0x4c15f4[_0x77d7('0x27')]){delete _0x4c15f4[_0x77d7('0x27')];}_0x391bde['status'](_0x242eb5)['send'](_0x4c15f4);};}exports['index']=function(_0x4c86ea,_0x5b85e1){var _0x47ff5f={},_0x1b92ff={},_0x19e783={'count':0x0,'rows':[]};var _0x401465=_[_0x77d7('0x28')](db['FreshsalesConfiguration'][_0x77d7('0x29')],function(_0x45ad0e){return{'name':_0x45ad0e[_0x77d7('0x2a')],'type':_0x45ad0e[_0x77d7('0x2b')][_0x77d7('0x2c')]};});_0x1b92ff[_0x77d7('0x2d')]=_['map'](_0x401465,'name');_0x1b92ff[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x4c86ea['query']);_0x1b92ff[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x1b92ff['model'],_0x1b92ff[_0x77d7('0x2e')]);_0x47ff5f[_0x77d7('0x32')]=_[_0x77d7('0x31')](_0x1b92ff['model'],qs['fields'](_0x4c86ea[_0x77d7('0x2e')]['fields']));_0x47ff5f[_0x77d7('0x32')]=_0x47ff5f[_0x77d7('0x32')][_0x77d7('0x33')]?_0x47ff5f[_0x77d7('0x32')]:_0x1b92ff[_0x77d7('0x2d')];if(!_0x4c86ea[_0x77d7('0x2e')]['hasOwnProperty'](_0x77d7('0x34'))){_0x47ff5f[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0x4c86ea['query']['limit']);_0x47ff5f[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x4c86ea['query'][_0x77d7('0x1c')]);}_0x47ff5f[_0x77d7('0x35')]=qs[_0x77d7('0x36')](_0x4c86ea[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x47ff5f[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_['pick'](_0x4c86ea['query'],_0x1b92ff[_0x77d7('0x30')]),_0x401465);if(_0x4c86ea['query']['filter']){_0x47ff5f[_0x77d7('0x37')]=_[_0x77d7('0x38')](_0x47ff5f[_0x77d7('0x37')],{'$or':_[_0x77d7('0x28')](_0x401465,function(_0x1222b7){if(_0x1222b7['type']!==_0x77d7('0x39')){var _0x3ca0d3={};_0x3ca0d3[_0x1222b7['name']]={'$like':'%'+_0x4c86ea[_0x77d7('0x2e')]['filter']+'%'};return _0x3ca0d3;}})});}_0x47ff5f=_[_0x77d7('0x38')]({},_0x47ff5f,_0x4c86ea[_0x77d7('0x3a')]);var _0x5d3f0f={'where':_0x47ff5f[_0x77d7('0x37')]};return db[_0x77d7('0x3b')]['count'](_0x5d3f0f)[_0x77d7('0x24')](function(_0x1a913d){_0x19e783[_0x77d7('0x1e')]=_0x1a913d;if(_0x4c86ea[_0x77d7('0x2e')]['includeAll']){_0x47ff5f['include']=[{'all':!![]}];}return db[_0x77d7('0x3b')][_0x77d7('0x3c')](_0x47ff5f);})[_0x77d7('0x24')](function(_0x54fc98){_0x19e783[_0x77d7('0x3d')]=_0x54fc98;return _0x19e783;})[_0x77d7('0x24')](respondWithFilteredResult(_0x5b85e1,_0x47ff5f))[_0x77d7('0x3e')](handleError(_0x5b85e1,null));};exports[_0x77d7('0x3f')]=function(_0x4299fc,_0x22cab8){var _0x5b94c7={'raw':![],'where':{'id':_0x4299fc[_0x77d7('0x40')]['id']}},_0x4f8fcb={};_0x4f8fcb[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x3b')][_0x77d7('0x29')]);_0x4f8fcb[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x4299fc[_0x77d7('0x2e')]);_0x4f8fcb[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x4f8fcb['model'],_0x4f8fcb['query']);_0x5b94c7['attributes']=_['intersection'](_0x4f8fcb[_0x77d7('0x2d')],qs['fields'](_0x4299fc['query']['fields']));_0x5b94c7[_0x77d7('0x32')]=_0x5b94c7['attributes'][_0x77d7('0x33')]?_0x5b94c7[_0x77d7('0x32')]:_0x4f8fcb[_0x77d7('0x2d')];if(_0x4299fc[_0x77d7('0x2e')]['includeAll']){_0x5b94c7[_0x77d7('0x41')]=[{'all':!![]}];}_0x5b94c7=_['merge']({},_0x5b94c7,_0x4299fc[_0x77d7('0x3a')]);return db[_0x77d7('0x3b')][_0x77d7('0x42')](_0x5b94c7)['then'](handleEntityNotFound(_0x22cab8,null))[_0x77d7('0x24')](respondWithResult(_0x22cab8,null))[_0x77d7('0x3e')](handleError(_0x22cab8,null));};exports['create']=function(_0x4f5d97,_0x21a886){return db[_0x77d7('0x3b')]['create'](_0x4f5d97[_0x77d7('0x43')],{})[_0x77d7('0x24')](respondWithResult(_0x21a886,0xc9))['catch'](handleError(_0x21a886,null));};exports[_0x77d7('0x44')]=function(_0x2f16c1,_0x3d53c2){if(_0x2f16c1['body']['id']){delete _0x2f16c1[_0x77d7('0x43')]['id'];}return db[_0x77d7('0x3b')][_0x77d7('0x42')]({'where':{'id':_0x2f16c1[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x3d53c2,null))[_0x77d7('0x24')](saveUpdates(_0x2f16c1[_0x77d7('0x43')],null))[_0x77d7('0x24')](respondWithResult(_0x3d53c2,null))[_0x77d7('0x3e')](handleError(_0x3d53c2,null));};exports['destroy']=function(_0x5f378e,_0x40cbde){return db[_0x77d7('0x3b')][_0x77d7('0x42')]({'where':{'id':_0x5f378e[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x40cbde,null))[_0x77d7('0x24')](removeEntity(_0x40cbde,null))['catch'](handleError(_0x40cbde,null));};exports[_0x77d7('0x45')]=function(_0x5731ea,_0x141c6b,_0x589667){var _0x4c18fb={};var _0x245599={};var _0x252993;var _0x57dc66;return db['FreshsalesConfiguration'][_0x77d7('0x46')]({'where':{'id':_0x5731ea[_0x77d7('0x40')]['id']}})['then'](handleEntityNotFound(_0x141c6b,null))[_0x77d7('0x24')](function(_0x398b88){if(_0x398b88){_0x252993=_0x398b88;_0x245599[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db['FreshsalesField'][_0x77d7('0x29')]);_0x245599[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x5731ea['query']);_0x245599[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x245599[_0x77d7('0x2d')],_0x245599['query']);_0x4c18fb[_0x77d7('0x32')]=_['intersection'](_0x245599[_0x77d7('0x2d')],qs[_0x77d7('0x47')](_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x47')]));_0x4c18fb[_0x77d7('0x32')]=_0x4c18fb[_0x77d7('0x32')]['length']?_0x4c18fb[_0x77d7('0x32')]:_0x245599[_0x77d7('0x2d')];_0x4c18fb[_0x77d7('0x35')]=qs['sort'](_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x4c18fb[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_[_0x77d7('0x48')](_0x5731ea[_0x77d7('0x2e')],_0x245599[_0x77d7('0x30')]));if(_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x4c18fb[_0x77d7('0x37')]=_['merge'](_0x4c18fb[_0x77d7('0x37')],{'$or':_['map'](_0x4c18fb['attributes'],function(_0x243074){var _0x480e48={};_0x480e48[_0x243074]={'$like':'%'+_0x5731ea[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x480e48;})});}_0x4c18fb=_['merge']({},_0x4c18fb,_0x5731ea[_0x77d7('0x3a')]);return _0x252993['getSubjects'](_0x4c18fb);}})[_0x77d7('0x24')](function(_0xbe6b3f){if(_0xbe6b3f){_0x57dc66=_0xbe6b3f[_0x77d7('0x33')];if(!_0x5731ea['query'][_0x77d7('0x4a')](_0x77d7('0x34'))){_0x4c18fb['limit']=qs[_0x77d7('0x1f')](_0x5731ea['query'][_0x77d7('0x1f')]);_0x4c18fb[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x5731ea[_0x77d7('0x2e')]['offset']);}return _0x252993[_0x77d7('0x45')](_0x4c18fb);}})[_0x77d7('0x24')](function(_0x1b67cb){if(_0x1b67cb){return _0x1b67cb?{'count':_0x57dc66,'rows':_0x1b67cb}:null;}})['then'](respondWithResult(_0x141c6b,null))[_0x77d7('0x3e')](handleError(_0x141c6b,null));};exports['getDescriptions']=function(_0xbbedf7,_0x248472,_0x33cf8e){var _0x5994ab={};var _0x35e450={};var _0x483fdb;var _0x1b14bc;return db[_0x77d7('0x3b')][_0x77d7('0x46')]({'where':{'id':_0xbbedf7['params']['id']}})['then'](handleEntityNotFound(_0x248472,null))['then'](function(_0x5c482d){if(_0x5c482d){_0x483fdb=_0x5c482d;_0x35e450[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x4b')][_0x77d7('0x29')]);_0x35e450[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0xbbedf7[_0x77d7('0x2e')]);_0x35e450[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x35e450['model'],_0x35e450[_0x77d7('0x2e')]);_0x5994ab[_0x77d7('0x32')]=_['intersection'](_0x35e450['model'],qs[_0x77d7('0x47')](_0xbbedf7[_0x77d7('0x2e')]['fields']));_0x5994ab['attributes']=_0x5994ab[_0x77d7('0x32')][_0x77d7('0x33')]?_0x5994ab[_0x77d7('0x32')]:_0x35e450[_0x77d7('0x2d')];_0x5994ab['order']=qs[_0x77d7('0x36')](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x36')]);_0x5994ab[_0x77d7('0x37')]=qs[_0x77d7('0x30')](_['pick'](_0xbbedf7[_0x77d7('0x2e')],_0x35e450[_0x77d7('0x30')]));if(_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x5994ab['where']=_['merge'](_0x5994ab[_0x77d7('0x37')],{'$or':_[_0x77d7('0x28')](_0x5994ab[_0x77d7('0x32')],function(_0x14d175){var _0x4e783d={};_0x4e783d[_0x14d175]={'$like':'%'+_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x4e783d;})});}_0x5994ab=_[_0x77d7('0x38')]({},_0x5994ab,_0xbbedf7[_0x77d7('0x3a')]);return _0x483fdb[_0x77d7('0x4c')](_0x5994ab);}})[_0x77d7('0x24')](function(_0x2e7af0){if(_0x2e7af0){_0x1b14bc=_0x2e7af0[_0x77d7('0x33')];if(!_0xbbedf7['query'][_0x77d7('0x4a')]('nolimit')){_0x5994ab[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x1f')]);_0x5994ab['offset']=qs['offset'](_0xbbedf7[_0x77d7('0x2e')][_0x77d7('0x1c')]);}return _0x483fdb[_0x77d7('0x4c')](_0x5994ab);}})[_0x77d7('0x24')](function(_0x1fa245){if(_0x1fa245){return _0x1fa245?{'count':_0x1b14bc,'rows':_0x1fa245}:null;}})[_0x77d7('0x24')](respondWithResult(_0x248472,null))[_0x77d7('0x3e')](handleError(_0x248472,null));};exports['getFields']=function(_0x3d4158,_0x5afb92,_0x1f265d){var _0x4a7a0e={};var _0x2f0539={};var _0x3f8798;var _0x26ad3e;return db[_0x77d7('0x3b')][_0x77d7('0x46')]({'where':{'id':_0x3d4158[_0x77d7('0x40')]['id']}})[_0x77d7('0x24')](handleEntityNotFound(_0x5afb92,null))[_0x77d7('0x24')](function(_0x3270c7){if(_0x3270c7){_0x3f8798=_0x3270c7;_0x2f0539[_0x77d7('0x2d')]=_[_0x77d7('0x2f')](db[_0x77d7('0x4b')]['rawAttributes']);_0x2f0539[_0x77d7('0x2e')]=_[_0x77d7('0x2f')](_0x3d4158['query']);_0x2f0539[_0x77d7('0x30')]=_[_0x77d7('0x31')](_0x2f0539[_0x77d7('0x2d')],_0x2f0539[_0x77d7('0x2e')]);_0x4a7a0e[_0x77d7('0x32')]=_[_0x77d7('0x31')](_0x2f0539['model'],qs[_0x77d7('0x47')](_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x47')]));_0x4a7a0e[_0x77d7('0x32')]=_0x4a7a0e[_0x77d7('0x32')][_0x77d7('0x33')]?_0x4a7a0e[_0x77d7('0x32')]:_0x2f0539[_0x77d7('0x2d')];_0x4a7a0e[_0x77d7('0x35')]=qs['sort'](_0x3d4158[_0x77d7('0x2e')]['sort']);_0x4a7a0e[_0x77d7('0x37')]=qs['filters'](_[_0x77d7('0x48')](_0x3d4158[_0x77d7('0x2e')],_0x2f0539[_0x77d7('0x30')]));if(_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x49')]){_0x4a7a0e['where']=_[_0x77d7('0x38')](_0x4a7a0e['where'],{'$or':_[_0x77d7('0x28')](_0x4a7a0e['attributes'],function(_0x1049f7){var _0x5543d8={};_0x5543d8[_0x1049f7]={'$like':'%'+_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x49')]+'%'};return _0x5543d8;})});}_0x4a7a0e=_[_0x77d7('0x38')]({},_0x4a7a0e,_0x3d4158[_0x77d7('0x3a')]);return _0x3f8798[_0x77d7('0x4d')](_0x4a7a0e);}})['then'](function(_0x4688f1){if(_0x4688f1){_0x26ad3e=_0x4688f1[_0x77d7('0x33')];if(!_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x4a')]('nolimit')){_0x4a7a0e[_0x77d7('0x1f')]=qs[_0x77d7('0x1f')](_0x3d4158[_0x77d7('0x2e')][_0x77d7('0x1f')]);_0x4a7a0e[_0x77d7('0x1c')]=qs[_0x77d7('0x1c')](_0x3d4158[_0x77d7('0x2e')]['offset']);}return _0x3f8798[_0x77d7('0x4d')](_0x4a7a0e);}})[_0x77d7('0x24')](function(_0x28d85f){if(_0x28d85f){return _0x28d85f?{'count':_0x26ad3e,'rows':_0x28d85f}:null;}})[_0x77d7('0x24')](respondWithResult(_0x5afb92,null))[_0x77d7('0x3e')](handleError(_0x5afb92,null));};
\ No newline at end of file
+var _0x55b0=['save','update','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','includeAll','findAll','rows','then','catch','show','params','include','options','find','create','body','getSubjects','FreshsalesField','pick','merge','getDescriptions','getFields','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject'];(function(_0x3952c4,_0x452d9e){var _0x36b383=function(_0x3f156a){while(--_0x3f156a){_0x3952c4['push'](_0x3952c4['shift']());}};_0x36b383(++_0x452d9e);}(_0x55b0,0xcb));var _0x055b=function(_0x131596,_0x2a54e6){_0x131596=_0x131596-0x0;var _0x4e8625=_0x55b0[_0x131596];return _0x4e8625;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x055b('0x0'));var zipdir=require(_0x055b('0x1'));var jsonpatch=require(_0x055b('0x2'));var rp=require(_0x055b('0x3'));var moment=require(_0x055b('0x4'));var BPromise=require(_0x055b('0x5'));var Mustache=require('mustache');var util=require(_0x055b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x055b('0x7'));var ejs=require(_0x055b('0x8'));var fs=require('fs');var fs_extra=require(_0x055b('0x9'));var _=require('lodash');var squel=require(_0x055b('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x055b('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x055b('0xc'));var Redis=require(_0x055b('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x055b('0xe'));var as=require(_0x055b('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x055b('0x10'))(_0x055b('0x11'));var utils=require('../../config/utils');var config=require(_0x055b('0x12'));var licenseUtil=require(_0x055b('0x13'));var db=require(_0x055b('0x14'))['db'];function respondWithStatusCode(_0x138f4a,_0x3d6d4f){_0x3d6d4f=_0x3d6d4f||0xcc;return function(_0x181c6d){if(_0x181c6d){return _0x138f4a[_0x055b('0x15')](_0x3d6d4f);}return _0x138f4a[_0x055b('0x16')](_0x3d6d4f)[_0x055b('0x17')]();};}function respondWithResult(_0x58488b,_0x1eba1e){_0x1eba1e=_0x1eba1e||0xc8;return function(_0xe6bfa0){if(_0xe6bfa0){return _0x58488b[_0x055b('0x16')](_0x1eba1e)[_0x055b('0x18')](_0xe6bfa0);}};}function respondWithFilteredResult(_0x4abc31,_0x5a34ae){return function(_0x394ed0){if(_0x394ed0){var _0x116b4a=typeof _0x5a34ae['offset']===_0x055b('0x19')&&typeof _0x5a34ae[_0x055b('0x1a')]===_0x055b('0x19');var _0x5d3448=_0x394ed0[_0x055b('0x1b')];var _0x2766ae=_0x116b4a?0x0:_0x5a34ae['offset'];var _0x3b9884=_0x116b4a?_0x394ed0[_0x055b('0x1b')]:_0x5a34ae[_0x055b('0x1c')]+_0x5a34ae[_0x055b('0x1a')];var _0x234ed2;if(_0x3b9884>=_0x5d3448){_0x3b9884=_0x5d3448;_0x234ed2=0xc8;}else{_0x234ed2=0xce;}_0x4abc31[_0x055b('0x16')](_0x234ed2);return _0x4abc31['set'](_0x055b('0x1d'),_0x2766ae+'-'+_0x3b9884+'/'+_0x5d3448)[_0x055b('0x18')](_0x394ed0);}return null;};}function patchUpdates(_0x1b0ff7){return function(_0x2b6df0){try{jsonpatch['apply'](_0x2b6df0,_0x1b0ff7,!![]);}catch(_0x4d4063){return BPromise[_0x055b('0x1e')](_0x4d4063);}return _0x2b6df0[_0x055b('0x1f')]();};}function saveUpdates(_0x2cfbe0,_0x1c5cc6){return function(_0x18bfbd){if(_0x18bfbd){return _0x18bfbd[_0x055b('0x20')](_0x2cfbe0)['then'](function(_0x3b30aa){return _0x3b30aa;});}return null;};}function removeEntity(_0x489b20,_0xa7f366){return function(_0x36c8f9){if(_0x36c8f9){return _0x36c8f9[_0x055b('0x21')]()['then'](function(){_0x489b20['status'](0xcc)[_0x055b('0x17')]();});}};}function handleEntityNotFound(_0x200436,_0x3f54a1){return function(_0x33318e){if(!_0x33318e){_0x200436['sendStatus'](0x194);}return _0x33318e;};}function handleError(_0x415dda,_0x3fd334){_0x3fd334=_0x3fd334||0x1f4;return function(_0x1d644f){logger[_0x055b('0x22')](_0x1d644f[_0x055b('0x23')]);if(_0x1d644f[_0x055b('0x24')]){delete _0x1d644f[_0x055b('0x24')];}_0x415dda['status'](_0x3fd334)[_0x055b('0x25')](_0x1d644f);};}exports[_0x055b('0x26')]=function(_0x4e553c,_0x508eb0){var _0x5ace07={},_0x5c7159={},_0x946bcf={'count':0x0,'rows':[]};var _0x15c1cb=_[_0x055b('0x27')](db[_0x055b('0x28')][_0x055b('0x29')],function(_0x553b1e){return{'name':_0x553b1e[_0x055b('0x2a')],'type':_0x553b1e[_0x055b('0x2b')][_0x055b('0x2c')]};});_0x5c7159['model']=_['map'](_0x15c1cb,_0x055b('0x24'));_0x5c7159[_0x055b('0x2d')]=_[_0x055b('0x2e')](_0x4e553c['query']);_0x5c7159[_0x055b('0x2f')]=_[_0x055b('0x30')](_0x5c7159[_0x055b('0x31')],_0x5c7159['query']);_0x5ace07['attributes']=_['intersection'](_0x5c7159[_0x055b('0x31')],qs[_0x055b('0x32')](_0x4e553c[_0x055b('0x2d')]['fields']));_0x5ace07['attributes']=_0x5ace07[_0x055b('0x33')][_0x055b('0x34')]?_0x5ace07[_0x055b('0x33')]:_0x5c7159[_0x055b('0x31')];if(!_0x4e553c['query'][_0x055b('0x35')](_0x055b('0x36'))){_0x5ace07[_0x055b('0x1a')]=qs[_0x055b('0x1a')](_0x4e553c[_0x055b('0x2d')][_0x055b('0x1a')]);_0x5ace07[_0x055b('0x1c')]=qs[_0x055b('0x1c')](_0x4e553c[_0x055b('0x2d')][_0x055b('0x1c')]);}_0x5ace07[_0x055b('0x37')]=qs[_0x055b('0x38')](_0x4e553c[_0x055b('0x2d')]['sort']);_0x5ace07['where']=qs[_0x055b('0x2f')](_['pick'](_0x4e553c[_0x055b('0x2d')],_0x5c7159[_0x055b('0x2f')]),_0x15c1cb);if(_0x4e553c['query'][_0x055b('0x39')]){_0x5ace07[_0x055b('0x3a')]=_['merge'](_0x5ace07[_0x055b('0x3a')],{'$or':_[_0x055b('0x27')](_0x15c1cb,function(_0x12b025){if(_0x12b025[_0x055b('0x2b')]!=='VIRTUAL'){var _0x2ec3c8={};_0x2ec3c8[_0x12b025[_0x055b('0x24')]]={'$like':'%'+_0x4e553c[_0x055b('0x2d')][_0x055b('0x39')]+'%'};return _0x2ec3c8;}})});}_0x5ace07=_['merge']({},_0x5ace07,_0x4e553c['options']);var _0x586855={'where':_0x5ace07[_0x055b('0x3a')]};return db[_0x055b('0x28')][_0x055b('0x1b')](_0x586855)['then'](function(_0x1fe2c7){_0x946bcf['count']=_0x1fe2c7;if(_0x4e553c[_0x055b('0x2d')][_0x055b('0x3b')]){_0x5ace07['include']=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x055b('0x3c')](_0x5ace07);})['then'](function(_0x59ff36){_0x946bcf[_0x055b('0x3d')]=_0x59ff36;return _0x946bcf;})[_0x055b('0x3e')](respondWithFilteredResult(_0x508eb0,_0x5ace07))[_0x055b('0x3f')](handleError(_0x508eb0,null));};exports[_0x055b('0x40')]=function(_0xe7387a,_0x2785e6){var _0x3618e4={'raw':![],'where':{'id':_0xe7387a[_0x055b('0x41')]['id']}},_0x2e2a37={};_0x2e2a37['model']=_[_0x055b('0x2e')](db[_0x055b('0x28')][_0x055b('0x29')]);_0x2e2a37['query']=_[_0x055b('0x2e')](_0xe7387a[_0x055b('0x2d')]);_0x2e2a37[_0x055b('0x2f')]=_[_0x055b('0x30')](_0x2e2a37['model'],_0x2e2a37[_0x055b('0x2d')]);_0x3618e4[_0x055b('0x33')]=_[_0x055b('0x30')](_0x2e2a37[_0x055b('0x31')],qs[_0x055b('0x32')](_0xe7387a[_0x055b('0x2d')][_0x055b('0x32')]));_0x3618e4[_0x055b('0x33')]=_0x3618e4[_0x055b('0x33')][_0x055b('0x34')]?_0x3618e4[_0x055b('0x33')]:_0x2e2a37['model'];if(_0xe7387a['query'][_0x055b('0x3b')]){_0x3618e4[_0x055b('0x42')]=[{'all':!![]}];}_0x3618e4=_['merge']({},_0x3618e4,_0xe7387a[_0x055b('0x43')]);return db[_0x055b('0x28')][_0x055b('0x44')](_0x3618e4)[_0x055b('0x3e')](handleEntityNotFound(_0x2785e6,null))[_0x055b('0x3e')](respondWithResult(_0x2785e6,null))[_0x055b('0x3f')](handleError(_0x2785e6,null));};exports[_0x055b('0x45')]=function(_0x2ba790,_0x2fd989){return db[_0x055b('0x28')][_0x055b('0x45')](_0x2ba790[_0x055b('0x46')],{})[_0x055b('0x3e')](respondWithResult(_0x2fd989,0xc9))[_0x055b('0x3f')](handleError(_0x2fd989,null));};exports[_0x055b('0x20')]=function(_0x26aa71,_0x35589d){if(_0x26aa71[_0x055b('0x46')]['id']){delete _0x26aa71[_0x055b('0x46')]['id'];}return db[_0x055b('0x28')]['find']({'where':{'id':_0x26aa71['params']['id']}})[_0x055b('0x3e')](handleEntityNotFound(_0x35589d,null))[_0x055b('0x3e')](saveUpdates(_0x26aa71[_0x055b('0x46')],null))[_0x055b('0x3e')](respondWithResult(_0x35589d,null))[_0x055b('0x3f')](handleError(_0x35589d,null));};exports[_0x055b('0x21')]=function(_0x37b1d8,_0x1bd704){return db['FreshsalesConfiguration'][_0x055b('0x44')]({'where':{'id':_0x37b1d8['params']['id']}})['then'](handleEntityNotFound(_0x1bd704,null))[_0x055b('0x3e')](removeEntity(_0x1bd704,null))[_0x055b('0x3f')](handleError(_0x1bd704,null));};exports[_0x055b('0x47')]=function(_0x29fa58,_0x1e6d42,_0x28f450){var _0x2cb272={};var _0x57eb37={};var _0x1e3c90;var _0x12f0b6;return db[_0x055b('0x28')]['findOne']({'where':{'id':_0x29fa58[_0x055b('0x41')]['id']}})[_0x055b('0x3e')](handleEntityNotFound(_0x1e6d42,null))[_0x055b('0x3e')](function(_0x255f84){if(_0x255f84){_0x1e3c90=_0x255f84;_0x57eb37[_0x055b('0x31')]=_[_0x055b('0x2e')](db[_0x055b('0x48')][_0x055b('0x29')]);_0x57eb37['query']=_[_0x055b('0x2e')](_0x29fa58[_0x055b('0x2d')]);_0x57eb37[_0x055b('0x2f')]=_[_0x055b('0x30')](_0x57eb37['model'],_0x57eb37[_0x055b('0x2d')]);_0x2cb272['attributes']=_[_0x055b('0x30')](_0x57eb37[_0x055b('0x31')],qs[_0x055b('0x32')](_0x29fa58[_0x055b('0x2d')][_0x055b('0x32')]));_0x2cb272['attributes']=_0x2cb272[_0x055b('0x33')][_0x055b('0x34')]?_0x2cb272['attributes']:_0x57eb37[_0x055b('0x31')];_0x2cb272['order']=qs[_0x055b('0x38')](_0x29fa58[_0x055b('0x2d')][_0x055b('0x38')]);_0x2cb272[_0x055b('0x3a')]=qs[_0x055b('0x2f')](_[_0x055b('0x49')](_0x29fa58[_0x055b('0x2d')],_0x57eb37[_0x055b('0x2f')]));if(_0x29fa58[_0x055b('0x2d')]['filter']){_0x2cb272[_0x055b('0x3a')]=_[_0x055b('0x4a')](_0x2cb272[_0x055b('0x3a')],{'$or':_[_0x055b('0x27')](_0x2cb272[_0x055b('0x33')],function(_0x186e05){var _0x2d2a1a={};_0x2d2a1a[_0x186e05]={'$like':'%'+_0x29fa58[_0x055b('0x2d')][_0x055b('0x39')]+'%'};return _0x2d2a1a;})});}_0x2cb272=_['merge']({},_0x2cb272,_0x29fa58[_0x055b('0x43')]);return _0x1e3c90[_0x055b('0x47')](_0x2cb272);}})[_0x055b('0x3e')](function(_0x4033b4){if(_0x4033b4){_0x12f0b6=_0x4033b4['length'];if(!_0x29fa58[_0x055b('0x2d')][_0x055b('0x35')]('nolimit')){_0x2cb272[_0x055b('0x1a')]=qs[_0x055b('0x1a')](_0x29fa58[_0x055b('0x2d')]['limit']);_0x2cb272[_0x055b('0x1c')]=qs[_0x055b('0x1c')](_0x29fa58[_0x055b('0x2d')][_0x055b('0x1c')]);}return _0x1e3c90[_0x055b('0x47')](_0x2cb272);}})[_0x055b('0x3e')](function(_0x57c529){if(_0x57c529){return _0x57c529?{'count':_0x12f0b6,'rows':_0x57c529}:null;}})[_0x055b('0x3e')](respondWithResult(_0x1e6d42,null))[_0x055b('0x3f')](handleError(_0x1e6d42,null));};exports[_0x055b('0x4b')]=function(_0x36433c,_0x38d7b7,_0xb3beac){var _0x1c0a5b={};var _0x319609={};var _0x1bbc96;var _0x226c1b;return db[_0x055b('0x28')]['findOne']({'where':{'id':_0x36433c[_0x055b('0x41')]['id']}})['then'](handleEntityNotFound(_0x38d7b7,null))[_0x055b('0x3e')](function(_0x3c3159){if(_0x3c3159){_0x1bbc96=_0x3c3159;_0x319609[_0x055b('0x31')]=_['keys'](db[_0x055b('0x48')][_0x055b('0x29')]);_0x319609[_0x055b('0x2d')]=_[_0x055b('0x2e')](_0x36433c[_0x055b('0x2d')]);_0x319609['filters']=_[_0x055b('0x30')](_0x319609[_0x055b('0x31')],_0x319609[_0x055b('0x2d')]);_0x1c0a5b['attributes']=_[_0x055b('0x30')](_0x319609[_0x055b('0x31')],qs[_0x055b('0x32')](_0x36433c[_0x055b('0x2d')]['fields']));_0x1c0a5b[_0x055b('0x33')]=_0x1c0a5b[_0x055b('0x33')]['length']?_0x1c0a5b[_0x055b('0x33')]:_0x319609[_0x055b('0x31')];_0x1c0a5b[_0x055b('0x37')]=qs['sort'](_0x36433c[_0x055b('0x2d')]['sort']);_0x1c0a5b[_0x055b('0x3a')]=qs[_0x055b('0x2f')](_[_0x055b('0x49')](_0x36433c[_0x055b('0x2d')],_0x319609[_0x055b('0x2f')]));if(_0x36433c[_0x055b('0x2d')][_0x055b('0x39')]){_0x1c0a5b['where']=_['merge'](_0x1c0a5b['where'],{'$or':_[_0x055b('0x27')](_0x1c0a5b['attributes'],function(_0x1e1501){var _0x341449={};_0x341449[_0x1e1501]={'$like':'%'+_0x36433c['query'][_0x055b('0x39')]+'%'};return _0x341449;})});}_0x1c0a5b=_[_0x055b('0x4a')]({},_0x1c0a5b,_0x36433c[_0x055b('0x43')]);return _0x1bbc96[_0x055b('0x4b')](_0x1c0a5b);}})[_0x055b('0x3e')](function(_0x2c1f0b){if(_0x2c1f0b){_0x226c1b=_0x2c1f0b['length'];if(!_0x36433c[_0x055b('0x2d')]['hasOwnProperty']('nolimit')){_0x1c0a5b[_0x055b('0x1a')]=qs[_0x055b('0x1a')](_0x36433c[_0x055b('0x2d')]['limit']);_0x1c0a5b[_0x055b('0x1c')]=qs['offset'](_0x36433c[_0x055b('0x2d')][_0x055b('0x1c')]);}return _0x1bbc96['getDescriptions'](_0x1c0a5b);}})[_0x055b('0x3e')](function(_0x15dac3){if(_0x15dac3){return _0x15dac3?{'count':_0x226c1b,'rows':_0x15dac3}:null;}})[_0x055b('0x3e')](respondWithResult(_0x38d7b7,null))[_0x055b('0x3f')](handleError(_0x38d7b7,null));};exports[_0x055b('0x4c')]=function(_0x4ef460,_0x1651eb,_0x3ba593){var _0x82530d={};var _0x1e6e04={};var _0x254bb8;var _0x118f72;return db[_0x055b('0x28')][_0x055b('0x4d')]({'where':{'id':_0x4ef460[_0x055b('0x41')]['id']}})[_0x055b('0x3e')](handleEntityNotFound(_0x1651eb,null))['then'](function(_0x6e1ed1){if(_0x6e1ed1){_0x254bb8=_0x6e1ed1;_0x1e6e04['model']=_[_0x055b('0x2e')](db[_0x055b('0x48')][_0x055b('0x29')]);_0x1e6e04[_0x055b('0x2d')]=_[_0x055b('0x2e')](_0x4ef460[_0x055b('0x2d')]);_0x1e6e04['filters']=_[_0x055b('0x30')](_0x1e6e04[_0x055b('0x31')],_0x1e6e04[_0x055b('0x2d')]);_0x82530d[_0x055b('0x33')]=_['intersection'](_0x1e6e04[_0x055b('0x31')],qs[_0x055b('0x32')](_0x4ef460['query'][_0x055b('0x32')]));_0x82530d[_0x055b('0x33')]=_0x82530d[_0x055b('0x33')][_0x055b('0x34')]?_0x82530d[_0x055b('0x33')]:_0x1e6e04['model'];_0x82530d[_0x055b('0x37')]=qs['sort'](_0x4ef460['query']['sort']);_0x82530d[_0x055b('0x3a')]=qs[_0x055b('0x2f')](_[_0x055b('0x49')](_0x4ef460[_0x055b('0x2d')],_0x1e6e04[_0x055b('0x2f')]));if(_0x4ef460[_0x055b('0x2d')][_0x055b('0x39')]){_0x82530d['where']=_[_0x055b('0x4a')](_0x82530d['where'],{'$or':_[_0x055b('0x27')](_0x82530d[_0x055b('0x33')],function(_0x259dfe){var _0x587b7b={};_0x587b7b[_0x259dfe]={'$like':'%'+_0x4ef460['query']['filter']+'%'};return _0x587b7b;})});}_0x82530d=_[_0x055b('0x4a')]({},_0x82530d,_0x4ef460['options']);return _0x254bb8[_0x055b('0x4c')](_0x82530d);}})[_0x055b('0x3e')](function(_0x4fd280){if(_0x4fd280){_0x118f72=_0x4fd280[_0x055b('0x34')];if(!_0x4ef460[_0x055b('0x2d')][_0x055b('0x35')](_0x055b('0x36'))){_0x82530d[_0x055b('0x1a')]=qs[_0x055b('0x1a')](_0x4ef460[_0x055b('0x2d')]['limit']);_0x82530d['offset']=qs[_0x055b('0x1c')](_0x4ef460['query'][_0x055b('0x1c')]);}return _0x254bb8[_0x055b('0x4c')](_0x82530d);}})['then'](function(_0x8f962a){if(_0x8f962a){return _0x8f962a?{'count':_0x118f72,'rows':_0x8f962a}:null;}})[_0x055b('0x3e')](respondWithResult(_0x1651eb,null))['catch'](handleError(_0x1651eb,null));};
\ No newline at end of file
index 85a7885..f17861f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ff=['FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define'];(function(_0x193784,_0x445291){var _0x5a009d=function(_0xd74591){while(--_0xd74591){_0x193784['push'](_0x193784['shift']());}};_0x5a009d(++_0x445291);}(_0x46ff,0xfe));var _0xf46f=function(_0x4da9f3,_0x489f0d){_0x4da9f3=_0x4da9f3-0x0;var _0x898997=_0x46ff[_0x4da9f3];return _0x898997;};'use strict';var _=require(_0xf46f('0x0'));var util=require(_0xf46f('0x1'));var logger=require(_0xf46f('0x2'))(_0xf46f('0x3'));var moment=require(_0xf46f('0x4'));var BPromise=require(_0xf46f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf46f('0x6'));var config=require(_0xf46f('0x7'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xf46f('0x8')]=function(_0x433a02,_0x4a0357){return _0x433a02[_0xf46f('0x9')](_0xf46f('0xa'),attributes,{'tableName':_0xf46f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62cd=['exports','define','FreshsalesConfiguration','../../config/logger','bluebird','path','../../config/environment','./intFreshsalesConfiguration.attributes'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x62cd,0xfb));var _0xd62c=function(_0x35527f,_0x43501c){_0x35527f=_0x35527f-0x0;var _0xe362d0=_0x62cd[_0x35527f];return _0xe362d0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd62c('0x0'))('api');var moment=require('moment');var BPromise=require(_0xd62c('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd62c('0x2'));var rimraf=require('rimraf');var config=require(_0xd62c('0x3'));var attributes=require(_0xd62c('0x4'));module[_0xd62c('0x5')]=function(_0x4ebfe2,_0x2340bb){return _0x4ebfe2[_0xd62c('0x6')](_0xd62c('0x7'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0ecb3e..0b461c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd2=['result','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','message'];(function(_0xe896bf,_0x4f8e5e){var _0x4c7a8a=function(_0x410ff2){while(--_0x410ff2){_0xe896bf['push'](_0xe896bf['shift']());}};_0x4c7a8a(++_0x4f8e5e);}(_0x5bd2,0x1b6));var _0x25bd=function(_0x526dc4,_0x56d252){_0x526dc4=_0x526dc4-0x0;var _0x3ed987=_0x5bd2[_0x526dc4];return _0x3ed987;};'use strict';var _=require(_0x25bd('0x0'));var util=require(_0x25bd('0x1'));var moment=require(_0x25bd('0x2'));var BPromise=require(_0x25bd('0x3'));var rs=require(_0x25bd('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x25bd('0x5'));var logger=require(_0x25bd('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x25bd('0x7'));var client=jayson['client'][_0x25bd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x294141,_0x147cdf,_0x2a0886){return new BPromise(function(_0x1fb868,_0x577941){return client[_0x25bd('0x9')](_0x294141,_0x2a0886)[_0x25bd('0xa')](function(_0x54a342){logger[_0x25bd('0xb')](_0x25bd('0xc'),_0x147cdf,_0x25bd('0xd'));logger[_0x25bd('0xe')](_0x25bd('0xf'),_0x147cdf,_0x25bd('0xd'),JSON['stringify'](_0x54a342));if(_0x54a342[_0x25bd('0x10')]){if(_0x54a342[_0x25bd('0x10')]['code']===0x1f4){logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);return _0x577941(_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);}logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x54a342[_0x25bd('0x10')]['message']);return _0x1fb868(_0x54a342[_0x25bd('0x10')][_0x25bd('0x11')]);}else{logger[_0x25bd('0xb')](_0x25bd('0xc'),_0x147cdf,'request\x20sent');_0x1fb868(_0x54a342[_0x25bd('0x12')][_0x25bd('0x11')]);}})['catch'](function(_0x5a24c5){logger[_0x25bd('0x10')](_0x25bd('0xc'),_0x147cdf,_0x5a24c5);_0x577941(_0x5a24c5);});});}
\ No newline at end of file
+var _0xa305=['message','result','lodash','util','moment','../../config/logger','rpc','jayson/promise','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x27bdb9,_0x55ea50){var _0x492fb4=function(_0x2a3d96){while(--_0x2a3d96){_0x27bdb9['push'](_0x27bdb9['shift']());}};_0x492fb4(++_0x55ea50);}(_0xa305,0xdf));var _0x5a30=function(_0xef7a0d,_0xdf4682){_0xef7a0d=_0xef7a0d-0x0;var _0x269256=_0xa305[_0xef7a0d];return _0x269256;};'use strict';var _=require(_0x5a30('0x0'));var util=require(_0x5a30('0x1'));var moment=require(_0x5a30('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5a30('0x3'))(_0x5a30('0x4'));var config=require('../../config/environment');var jayson=require(_0x5a30('0x5'));var client=jayson['client'][_0x5a30('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2e2acb,_0x30d98e,_0x276d8c){return new BPromise(function(_0x1ee05f,_0x1ee61c){return client[_0x5a30('0x7')](_0x2e2acb,_0x276d8c)[_0x5a30('0x8')](function(_0x431821){logger[_0x5a30('0x9')](_0x5a30('0xa'),_0x30d98e,_0x5a30('0xb'));logger['debug'](_0x5a30('0xc'),_0x30d98e,_0x5a30('0xb'),JSON[_0x5a30('0xd')](_0x431821));if(_0x431821[_0x5a30('0xe')]){if(_0x431821[_0x5a30('0xe')]['code']===0x1f4){logger[_0x5a30('0xe')](_0x5a30('0xa'),_0x30d98e,_0x431821[_0x5a30('0xe')][_0x5a30('0xf')]);return _0x1ee61c(_0x431821[_0x5a30('0xe')][_0x5a30('0xf')]);}logger[_0x5a30('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x30d98e,_0x431821[_0x5a30('0xe')]['message']);return _0x1ee05f(_0x431821[_0x5a30('0xe')][_0x5a30('0xf')]);}else{logger[_0x5a30('0x9')](_0x5a30('0xa'),_0x30d98e,_0x5a30('0xb'));_0x1ee05f(_0x431821[_0x5a30('0x10')][_0x5a30('0xf')]);}})['catch'](function(_0x563afb){logger['error'](_0x5a30('0xa'),_0x30d98e,_0x563afb);_0x1ee61c(_0x563afb);});});}
\ No newline at end of file
index ae43f06..3bca2f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a4=['path','express','Router','fs-extra','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x37a4,0xcb));var _0x437a=function(_0x14217c,_0x349af9){_0x14217c=_0x14217c-0x0;var _0x335418=_0x37a4[_0x14217c];return _0x335418;};'use strict';var multer=require(_0x437a('0x0'));var util=require('util');var path=require(_0x437a('0x1'));var timeout=require('connect-timeout');var express=require(_0x437a('0x2'));var router=express[_0x437a('0x3')]();var fs_extra=require(_0x437a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x437a('0x5'));var controller=require(_0x437a('0x6'));router[_0x437a('0x7')]('/',auth[_0x437a('0x8')](),controller['index']);router[_0x437a('0x7')](_0x437a('0x9'),auth['isAuthenticated'](),controller[_0x437a('0xa')]);router[_0x437a('0xb')]('/',auth[_0x437a('0x8')](),controller[_0x437a('0xc')]);router[_0x437a('0xd')](_0x437a('0x9'),auth[_0x437a('0x8')](),controller[_0x437a('0xe')]);router[_0x437a('0xf')](_0x437a('0x9'),auth[_0x437a('0x8')](),controller['destroy']);module[_0x437a('0x10')]=router;
\ No newline at end of file
+var _0x02ef=['../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','multer','path','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x389300,_0x3a9490){var _0x45cfa6=function(_0x18c754){while(--_0x18c754){_0x389300['push'](_0x389300['shift']());}};_0x45cfa6(++_0x3a9490);}(_0x02ef,0x11a));var _0xf02e=function(_0x77e14a,_0x16e0cd){_0x77e14a=_0x77e14a-0x0;var _0x10d19c=_0x02ef[_0x77e14a];return _0x10d19c;};'use strict';var multer=require(_0xf02e('0x0'));var util=require('util');var path=require(_0xf02e('0x1'));var timeout=require('connect-timeout');var express=require(_0xf02e('0x2'));var router=express[_0xf02e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf02e('0x4'));var interaction=require(_0xf02e('0x5'));var config=require(_0xf02e('0x6'));var controller=require(_0xf02e('0x7'));router[_0xf02e('0x8')]('/',auth['isAuthenticated'](),controller[_0xf02e('0x9')]);router[_0xf02e('0x8')](_0xf02e('0xa'),auth[_0xf02e('0xb')](),controller[_0xf02e('0xc')]);router[_0xf02e('0xd')]('/',auth[_0xf02e('0xb')](),controller[_0xf02e('0xe')]);router[_0xf02e('0xf')](_0xf02e('0xa'),auth[_0xf02e('0xb')](),controller[_0xf02e('0x10')]);router['delete']('/:id',auth[_0xf02e('0xb')](),controller[_0xf02e('0x11')]);module['exports']=router;
\ No newline at end of file
index c1fde33..ed5af16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe42e=['variable','customVariable','keyValue','STRING','exports','ENUM','string'];(function(_0x36fa1f,_0x3a8689){var _0x51754b=function(_0x95b538){while(--_0x95b538){_0x36fa1f['push'](_0x36fa1f['shift']());}};_0x51754b(++_0x3a8689);}(_0xe42e,0x82));var _0xee42=function(_0x3f5b2d,_0x4bd45e){_0x3f5b2d=_0x3f5b2d-0x0;var _0x2b43a1=_0xe42e[_0x3f5b2d];return _0x2b43a1;};'use strict';var Sequelize=require('sequelize');module[_0xee42('0x0')]={'type':{'type':Sequelize[_0xee42('0x1')](_0xee42('0x2'),_0xee42('0x3'),_0xee42('0x4'),_0xee42('0x5'),'picklist'),'defaultValue':_0xee42('0x2')},'content':{'type':Sequelize[_0xee42('0x6')]},'key':{'type':Sequelize[_0xee42('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xee42('0x2'),_0xee42('0x3'),_0xee42('0x4'))},'keyContent':{'type':Sequelize[_0xee42('0x6')]},'idField':{'type':Sequelize[_0xee42('0x6')]},'nameField':{'type':Sequelize[_0xee42('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xee42('0x6')]}};
\ No newline at end of file
+var _0x8e3c=['ENUM','string','variable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8e3c,0x10c));var _0xc8e3=function(_0x3f3d54,_0x1e03ef){_0x3f3d54=_0x3f3d54-0x0;var _0x2e1d4a=_0x8e3c[_0x3f3d54];return _0x2e1d4a;};'use strict';var Sequelize=require(_0xc8e3('0x0'));module[_0xc8e3('0x1')]={'type':{'type':Sequelize[_0xc8e3('0x2')](_0xc8e3('0x3'),_0xc8e3('0x4'),'customVariable',_0xc8e3('0x5'),_0xc8e3('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xc8e3('0x7')]},'key':{'type':Sequelize[_0xc8e3('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0xc8e3('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xc8e3('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xc8e3('0x7')]},'customField':{'type':Sequelize[_0xc8e3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f8d9eb5..c375bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe019=['sort','where','pick','merge','filter','options','includeAll','findAll','catch','show','keys','fields','include','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','sendStatus','error','stack','name','index','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order'];(function(_0x48a660,_0x35ad89){var _0x874e67=function(_0x6a0c8a){while(--_0x6a0c8a){_0x48a660['push'](_0x48a660['shift']());}};_0x874e67(++_0x35ad89);}(_0xe019,0xec));var _0x9e01=function(_0x39165a,_0x704f0){_0x39165a=_0x39165a-0x0;var _0x10e796=_0xe019[_0x39165a];return _0x10e796;};'use strict';var emlformat=require(_0x9e01('0x0'));var rimraf=require(_0x9e01('0x1'));var zipdir=require(_0x9e01('0x2'));var jsonpatch=require(_0x9e01('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x9e01('0x4'));var sox=require(_0x9e01('0x5'));var csv=require(_0x9e01('0x6'));var ejs=require(_0x9e01('0x7'));var fs=require('fs');var fs_extra=require(_0x9e01('0x8'));var _=require(_0x9e01('0x9'));var squel=require(_0x9e01('0xa'));var crypto=require(_0x9e01('0xb'));var jsforce=require(_0x9e01('0xc'));var deskjs=require(_0x9e01('0xd'));var toCsv=require(_0x9e01('0x6'));var querystring=require(_0x9e01('0xe'));var Papa=require(_0x9e01('0xf'));var Redis=require(_0x9e01('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e01('0x11'));var hardwareService=require(_0x9e01('0x12'));var logger=require('../../config/logger')(_0x9e01('0x13'));var utils=require(_0x9e01('0x14'));var config=require(_0x9e01('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x9e01('0x16'))['db'];function respondWithStatusCode(_0x45d286,_0x4d9ad9){_0x4d9ad9=_0x4d9ad9||0xcc;return function(_0x426be5){if(_0x426be5){return _0x45d286['sendStatus'](_0x4d9ad9);}return _0x45d286[_0x9e01('0x17')](_0x4d9ad9)[_0x9e01('0x18')]();};}function respondWithResult(_0x2ed6e8,_0x4995de){_0x4995de=_0x4995de||0xc8;return function(_0x17c49e){if(_0x17c49e){return _0x2ed6e8[_0x9e01('0x17')](_0x4995de)[_0x9e01('0x19')](_0x17c49e);}};}function respondWithFilteredResult(_0x422a0e,_0x39a68e){return function(_0x4fe30d){if(_0x4fe30d){var _0x24cb64=typeof _0x39a68e['offset']===_0x9e01('0x1a')&&typeof _0x39a68e[_0x9e01('0x1b')]===_0x9e01('0x1a');var _0x55facd=_0x4fe30d[_0x9e01('0x1c')];var _0xcc325c=_0x24cb64?0x0:_0x39a68e[_0x9e01('0x1d')];var _0x511707=_0x24cb64?_0x4fe30d['count']:_0x39a68e['offset']+_0x39a68e['limit'];var _0x101866;if(_0x511707>=_0x55facd){_0x511707=_0x55facd;_0x101866=0xc8;}else{_0x101866=0xce;}_0x422a0e['status'](_0x101866);return _0x422a0e[_0x9e01('0x1e')]('Content-Range',_0xcc325c+'-'+_0x511707+'/'+_0x55facd)[_0x9e01('0x19')](_0x4fe30d);}return null;};}function patchUpdates(_0x1fee55){return function(_0x45337d){try{jsonpatch[_0x9e01('0x1f')](_0x45337d,_0x1fee55,!![]);}catch(_0x53d5ed){return BPromise['reject'](_0x53d5ed);}return _0x45337d[_0x9e01('0x20')]();};}function saveUpdates(_0x43bede,_0x553819){return function(_0x379af2){if(_0x379af2){return _0x379af2[_0x9e01('0x21')](_0x43bede)[_0x9e01('0x22')](function(_0x4fcd40){return _0x4fcd40;});}return null;};}function removeEntity(_0x593d86,_0x52dd86){return function(_0x23b979){if(_0x23b979){return _0x23b979[_0x9e01('0x23')]()['then'](function(){_0x593d86[_0x9e01('0x17')](0xcc)[_0x9e01('0x18')]();});}};}function handleEntityNotFound(_0x3e5af5,_0x1f47e2){return function(_0x33ecad){if(!_0x33ecad){_0x3e5af5[_0x9e01('0x24')](0x194);}return _0x33ecad;};}function handleError(_0x8fbe67,_0x39cb8d){_0x39cb8d=_0x39cb8d||0x1f4;return function(_0x6adc1){logger[_0x9e01('0x25')](_0x6adc1[_0x9e01('0x26')]);if(_0x6adc1[_0x9e01('0x27')]){delete _0x6adc1[_0x9e01('0x27')];}_0x8fbe67[_0x9e01('0x17')](_0x39cb8d)['send'](_0x6adc1);};}exports[_0x9e01('0x28')]=function(_0x58e652,_0x1149cc){var _0x1991c1={},_0x633dd8={},_0x14871d={'count':0x0,'rows':[]};var _0x5588a4=_['map'](db[_0x9e01('0x29')][_0x9e01('0x2a')],function(_0x9dc633){return{'name':_0x9dc633[_0x9e01('0x2b')],'type':_0x9dc633[_0x9e01('0x2c')][_0x9e01('0x2d')]};});_0x633dd8[_0x9e01('0x2e')]=_[_0x9e01('0x2f')](_0x5588a4,_0x9e01('0x27'));_0x633dd8[_0x9e01('0x30')]=_['keys'](_0x58e652[_0x9e01('0x30')]);_0x633dd8[_0x9e01('0x31')]=_['intersection'](_0x633dd8[_0x9e01('0x2e')],_0x633dd8['query']);_0x1991c1[_0x9e01('0x32')]=_[_0x9e01('0x33')](_0x633dd8[_0x9e01('0x2e')],qs['fields'](_0x58e652[_0x9e01('0x30')]['fields']));_0x1991c1[_0x9e01('0x32')]=_0x1991c1[_0x9e01('0x32')][_0x9e01('0x34')]?_0x1991c1[_0x9e01('0x32')]:_0x633dd8[_0x9e01('0x2e')];if(!_0x58e652[_0x9e01('0x30')][_0x9e01('0x35')](_0x9e01('0x36'))){_0x1991c1[_0x9e01('0x1b')]=qs[_0x9e01('0x1b')](_0x58e652['query']['limit']);_0x1991c1[_0x9e01('0x1d')]=qs[_0x9e01('0x1d')](_0x58e652[_0x9e01('0x30')][_0x9e01('0x1d')]);}_0x1991c1[_0x9e01('0x37')]=qs['sort'](_0x58e652[_0x9e01('0x30')][_0x9e01('0x38')]);_0x1991c1[_0x9e01('0x39')]=qs[_0x9e01('0x31')](_[_0x9e01('0x3a')](_0x58e652[_0x9e01('0x30')],_0x633dd8[_0x9e01('0x31')]),_0x5588a4);if(_0x58e652[_0x9e01('0x30')]['filter']){_0x1991c1['where']=_[_0x9e01('0x3b')](_0x1991c1[_0x9e01('0x39')],{'$or':_[_0x9e01('0x2f')](_0x5588a4,function(_0x2d4c32){if(_0x2d4c32[_0x9e01('0x2c')]!=='VIRTUAL'){var _0xbbcf00={};_0xbbcf00[_0x2d4c32[_0x9e01('0x27')]]={'$like':'%'+_0x58e652['query'][_0x9e01('0x3c')]+'%'};return _0xbbcf00;}})});}_0x1991c1=_[_0x9e01('0x3b')]({},_0x1991c1,_0x58e652[_0x9e01('0x3d')]);var _0x2cbf78={'where':_0x1991c1[_0x9e01('0x39')]};return db[_0x9e01('0x29')]['count'](_0x2cbf78)[_0x9e01('0x22')](function(_0x38d337){_0x14871d[_0x9e01('0x1c')]=_0x38d337;if(_0x58e652[_0x9e01('0x30')][_0x9e01('0x3e')]){_0x1991c1['include']=[{'all':!![]}];}return db[_0x9e01('0x29')][_0x9e01('0x3f')](_0x1991c1);})[_0x9e01('0x22')](function(_0x181290){_0x14871d['rows']=_0x181290;return _0x14871d;})[_0x9e01('0x22')](respondWithFilteredResult(_0x1149cc,_0x1991c1))[_0x9e01('0x40')](handleError(_0x1149cc,null));};exports[_0x9e01('0x41')]=function(_0x28fb11,_0x3c1ac9){var _0x2065e4={'raw':!![],'where':{'id':_0x28fb11['params']['id']}},_0x1ffbbf={};_0x1ffbbf[_0x9e01('0x2e')]=_[_0x9e01('0x42')](db[_0x9e01('0x29')]['rawAttributes']);_0x1ffbbf[_0x9e01('0x30')]=_[_0x9e01('0x42')](_0x28fb11[_0x9e01('0x30')]);_0x1ffbbf[_0x9e01('0x31')]=_[_0x9e01('0x33')](_0x1ffbbf[_0x9e01('0x2e')],_0x1ffbbf[_0x9e01('0x30')]);_0x2065e4['attributes']=_[_0x9e01('0x33')](_0x1ffbbf[_0x9e01('0x2e')],qs[_0x9e01('0x43')](_0x28fb11[_0x9e01('0x30')][_0x9e01('0x43')]));_0x2065e4[_0x9e01('0x32')]=_0x2065e4[_0x9e01('0x32')]['length']?_0x2065e4['attributes']:_0x1ffbbf[_0x9e01('0x2e')];if(_0x28fb11[_0x9e01('0x30')]['includeAll']){_0x2065e4[_0x9e01('0x44')]=[{'all':!![]}];}_0x2065e4=_[_0x9e01('0x3b')]({},_0x2065e4,_0x28fb11['options']);return db[_0x9e01('0x29')][_0x9e01('0x45')](_0x2065e4)[_0x9e01('0x22')](handleEntityNotFound(_0x3c1ac9,null))[_0x9e01('0x22')](respondWithResult(_0x3c1ac9,null))[_0x9e01('0x40')](handleError(_0x3c1ac9,null));};exports['create']=function(_0x579f26,_0x31fcf7){return db[_0x9e01('0x29')][_0x9e01('0x46')](_0x579f26[_0x9e01('0x47')],{})[_0x9e01('0x22')](respondWithResult(_0x31fcf7,0xc9))['catch'](handleError(_0x31fcf7,null));};exports[_0x9e01('0x21')]=function(_0x3fd457,_0x43babc){if(_0x3fd457[_0x9e01('0x47')]['id']){delete _0x3fd457[_0x9e01('0x47')]['id'];}return db[_0x9e01('0x29')]['find']({'where':{'id':_0x3fd457[_0x9e01('0x48')]['id']}})['then'](handleEntityNotFound(_0x43babc,null))[_0x9e01('0x22')](saveUpdates(_0x3fd457[_0x9e01('0x47')],null))['then'](respondWithResult(_0x43babc,null))[_0x9e01('0x40')](handleError(_0x43babc,null));};exports[_0x9e01('0x23')]=function(_0x158e63,_0x27fe37){return db['FreshsalesField']['find']({'where':{'id':_0x158e63[_0x9e01('0x48')]['id']}})['then'](handleEntityNotFound(_0x27fe37,null))[_0x9e01('0x22')](removeEntity(_0x27fe37,null))[_0x9e01('0x40')](handleError(_0x27fe37,null));};
\ No newline at end of file
+var _0x78e6=['intersection','attributes','fields','nolimit','order','sort','pick','filters','where','merge','options','includeAll','include','rows','show','params','length','find','catch','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','FreshsalesField','rawAttributes','type','key','model','query','keys'];(function(_0x56c737,_0x16f433){var _0x10d044=function(_0x3b266c){while(--_0x3b266c){_0x56c737['push'](_0x56c737['shift']());}};_0x10d044(++_0x16f433);}(_0x78e6,0xec));var _0x678e=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x78e6[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0x678e('0x0'));var rimraf=require(_0x678e('0x1'));var zipdir=require(_0x678e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x678e('0x3'));var moment=require(_0x678e('0x4'));var BPromise=require(_0x678e('0x5'));var Mustache=require(_0x678e('0x6'));var util=require(_0x678e('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x678e('0x8'));var ejs=require(_0x678e('0x9'));var fs=require('fs');var fs_extra=require(_0x678e('0xa'));var _=require(_0x678e('0xb'));var squel=require(_0x678e('0xc'));var crypto=require(_0x678e('0xd'));var jsforce=require(_0x678e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x678e('0x8'));var querystring=require(_0x678e('0xf'));var Papa=require('papaparse');var Redis=require(_0x678e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x678e('0x11'));var as=require(_0x678e('0x12'));var hardwareService=require(_0x678e('0x13'));var logger=require(_0x678e('0x14'))('api');var utils=require(_0x678e('0x15'));var config=require(_0x678e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x678e('0x17'))['db'];function respondWithStatusCode(_0x43c4aa,_0x44af3c){_0x44af3c=_0x44af3c||0xcc;return function(_0x4acf86){if(_0x4acf86){return _0x43c4aa[_0x678e('0x18')](_0x44af3c);}return _0x43c4aa[_0x678e('0x19')](_0x44af3c)['end']();};}function respondWithResult(_0x21f564,_0xd4997e){_0xd4997e=_0xd4997e||0xc8;return function(_0x16fcee){if(_0x16fcee){return _0x21f564[_0x678e('0x19')](_0xd4997e)[_0x678e('0x1a')](_0x16fcee);}};}function respondWithFilteredResult(_0x1e69cc,_0x2941c5){return function(_0x57bfed){if(_0x57bfed){var _0xf8a704=typeof _0x2941c5[_0x678e('0x1b')]==='undefined'&&typeof _0x2941c5[_0x678e('0x1c')]===_0x678e('0x1d');var _0x246989=_0x57bfed[_0x678e('0x1e')];var _0xa6cbc9=_0xf8a704?0x0:_0x2941c5[_0x678e('0x1b')];var _0x30aadf=_0xf8a704?_0x57bfed[_0x678e('0x1e')]:_0x2941c5[_0x678e('0x1b')]+_0x2941c5[_0x678e('0x1c')];var _0x525e73;if(_0x30aadf>=_0x246989){_0x30aadf=_0x246989;_0x525e73=0xc8;}else{_0x525e73=0xce;}_0x1e69cc[_0x678e('0x19')](_0x525e73);return _0x1e69cc[_0x678e('0x1f')](_0x678e('0x20'),_0xa6cbc9+'-'+_0x30aadf+'/'+_0x246989)['json'](_0x57bfed);}return null;};}function patchUpdates(_0xf7caca){return function(_0x55910e){try{jsonpatch[_0x678e('0x21')](_0x55910e,_0xf7caca,!![]);}catch(_0x3fa4eb){return BPromise[_0x678e('0x22')](_0x3fa4eb);}return _0x55910e[_0x678e('0x23')]();};}function saveUpdates(_0x478323,_0x419624){return function(_0x2220ee){if(_0x2220ee){return _0x2220ee[_0x678e('0x24')](_0x478323)[_0x678e('0x25')](function(_0x2a4df8){return _0x2a4df8;});}return null;};}function removeEntity(_0x5fd539,_0x674c89){return function(_0x3f36e8){if(_0x3f36e8){return _0x3f36e8[_0x678e('0x26')]()[_0x678e('0x25')](function(){_0x5fd539[_0x678e('0x19')](0xcc)[_0x678e('0x27')]();});}};}function handleEntityNotFound(_0x39a405,_0x1f5b2b){return function(_0x13cde7){if(!_0x13cde7){_0x39a405[_0x678e('0x18')](0x194);}return _0x13cde7;};}function handleError(_0x2115e3,_0xbc4bd9){_0xbc4bd9=_0xbc4bd9||0x1f4;return function(_0x1c422f){logger['error'](_0x1c422f[_0x678e('0x28')]);if(_0x1c422f[_0x678e('0x29')]){delete _0x1c422f[_0x678e('0x29')];}_0x2115e3[_0x678e('0x19')](_0xbc4bd9)[_0x678e('0x2a')](_0x1c422f);};}exports[_0x678e('0x2b')]=function(_0x5bf39e,_0x479762){var _0x73352c={},_0x89a02={},_0x72a439={'count':0x0,'rows':[]};var _0x4a5ead=_[_0x678e('0x2c')](db[_0x678e('0x2d')][_0x678e('0x2e')],function(_0x3ab728){return{'name':_0x3ab728['fieldName'],'type':_0x3ab728[_0x678e('0x2f')][_0x678e('0x30')]};});_0x89a02[_0x678e('0x31')]=_[_0x678e('0x2c')](_0x4a5ead,_0x678e('0x29'));_0x89a02[_0x678e('0x32')]=_[_0x678e('0x33')](_0x5bf39e[_0x678e('0x32')]);_0x89a02['filters']=_[_0x678e('0x34')](_0x89a02[_0x678e('0x31')],_0x89a02['query']);_0x73352c[_0x678e('0x35')]=_['intersection'](_0x89a02[_0x678e('0x31')],qs['fields'](_0x5bf39e[_0x678e('0x32')][_0x678e('0x36')]));_0x73352c[_0x678e('0x35')]=_0x73352c['attributes']['length']?_0x73352c['attributes']:_0x89a02[_0x678e('0x31')];if(!_0x5bf39e[_0x678e('0x32')]['hasOwnProperty'](_0x678e('0x37'))){_0x73352c[_0x678e('0x1c')]=qs['limit'](_0x5bf39e[_0x678e('0x32')][_0x678e('0x1c')]);_0x73352c[_0x678e('0x1b')]=qs[_0x678e('0x1b')](_0x5bf39e[_0x678e('0x32')][_0x678e('0x1b')]);}_0x73352c[_0x678e('0x38')]=qs[_0x678e('0x39')](_0x5bf39e[_0x678e('0x32')][_0x678e('0x39')]);_0x73352c['where']=qs['filters'](_[_0x678e('0x3a')](_0x5bf39e['query'],_0x89a02[_0x678e('0x3b')]),_0x4a5ead);if(_0x5bf39e['query']['filter']){_0x73352c[_0x678e('0x3c')]=_[_0x678e('0x3d')](_0x73352c[_0x678e('0x3c')],{'$or':_['map'](_0x4a5ead,function(_0x5d46c0){if(_0x5d46c0[_0x678e('0x2f')]!=='VIRTUAL'){var _0x38572b={};_0x38572b[_0x5d46c0[_0x678e('0x29')]]={'$like':'%'+_0x5bf39e[_0x678e('0x32')]['filter']+'%'};return _0x38572b;}})});}_0x73352c=_[_0x678e('0x3d')]({},_0x73352c,_0x5bf39e[_0x678e('0x3e')]);var _0x489120={'where':_0x73352c[_0x678e('0x3c')]};return db[_0x678e('0x2d')][_0x678e('0x1e')](_0x489120)[_0x678e('0x25')](function(_0x2ce859){_0x72a439[_0x678e('0x1e')]=_0x2ce859;if(_0x5bf39e[_0x678e('0x32')][_0x678e('0x3f')]){_0x73352c[_0x678e('0x40')]=[{'all':!![]}];}return db[_0x678e('0x2d')]['findAll'](_0x73352c);})[_0x678e('0x25')](function(_0xab93f5){_0x72a439[_0x678e('0x41')]=_0xab93f5;return _0x72a439;})[_0x678e('0x25')](respondWithFilteredResult(_0x479762,_0x73352c))['catch'](handleError(_0x479762,null));};exports[_0x678e('0x42')]=function(_0x189a55,_0x545d65){var _0x4c3837={'raw':!![],'where':{'id':_0x189a55[_0x678e('0x43')]['id']}},_0x4c99bf={};_0x4c99bf[_0x678e('0x31')]=_['keys'](db[_0x678e('0x2d')][_0x678e('0x2e')]);_0x4c99bf['query']=_[_0x678e('0x33')](_0x189a55['query']);_0x4c99bf[_0x678e('0x3b')]=_[_0x678e('0x34')](_0x4c99bf['model'],_0x4c99bf[_0x678e('0x32')]);_0x4c3837[_0x678e('0x35')]=_[_0x678e('0x34')](_0x4c99bf[_0x678e('0x31')],qs['fields'](_0x189a55[_0x678e('0x32')][_0x678e('0x36')]));_0x4c3837[_0x678e('0x35')]=_0x4c3837['attributes'][_0x678e('0x44')]?_0x4c3837[_0x678e('0x35')]:_0x4c99bf[_0x678e('0x31')];if(_0x189a55['query']['includeAll']){_0x4c3837[_0x678e('0x40')]=[{'all':!![]}];}_0x4c3837=_[_0x678e('0x3d')]({},_0x4c3837,_0x189a55['options']);return db[_0x678e('0x2d')][_0x678e('0x45')](_0x4c3837)[_0x678e('0x25')](handleEntityNotFound(_0x545d65,null))[_0x678e('0x25')](respondWithResult(_0x545d65,null))[_0x678e('0x46')](handleError(_0x545d65,null));};exports['create']=function(_0x58db48,_0x3e582b){return db[_0x678e('0x2d')]['create'](_0x58db48[_0x678e('0x47')],{})[_0x678e('0x25')](respondWithResult(_0x3e582b,0xc9))[_0x678e('0x46')](handleError(_0x3e582b,null));};exports[_0x678e('0x24')]=function(_0x5920ff,_0x2547ca){if(_0x5920ff[_0x678e('0x47')]['id']){delete _0x5920ff[_0x678e('0x47')]['id'];}return db[_0x678e('0x2d')][_0x678e('0x45')]({'where':{'id':_0x5920ff['params']['id']}})['then'](handleEntityNotFound(_0x2547ca,null))['then'](saveUpdates(_0x5920ff['body'],null))[_0x678e('0x25')](respondWithResult(_0x2547ca,null))[_0x678e('0x46')](handleError(_0x2547ca,null));};exports[_0x678e('0x26')]=function(_0x42174a,_0xa5d721){return db[_0x678e('0x2d')][_0x678e('0x45')]({'where':{'id':_0x42174a['params']['id']}})['then'](handleEntityNotFound(_0xa5d721,null))[_0x678e('0x25')](removeEntity(_0xa5d721,null))[_0x678e('0x46')](handleError(_0xa5d721,null));};
\ No newline at end of file
index 8ea276b..4cfa7bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['util','../../config/logger','api','request-promise','path','rimraf','./intFreshsalesField.attributes','define','FreshsalesField','int_freshsales_fields'];(function(_0x183f0a,_0x2fff11){var _0xa7d99c=function(_0x19e105){while(--_0x19e105){_0x183f0a['push'](_0x183f0a['shift']());}};_0xa7d99c(++_0x2fff11);}(_0x8603,0x190));var _0x3860=function(_0x599a0f,_0x4ce2d9){_0x599a0f=_0x599a0f-0x0;var _0x392039=_0x8603[_0x599a0f];return _0x392039;};'use strict';var _=require('lodash');var util=require(_0x3860('0x0'));var logger=require(_0x3860('0x1'))(_0x3860('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3860('0x3'));var fs=require('fs');var path=require(_0x3860('0x4'));var rimraf=require(_0x3860('0x5'));var config=require('../../config/environment');var attributes=require(_0x3860('0x6'));module['exports']=function(_0xb0fc24,_0x40739b){return _0xb0fc24[_0x3860('0x7')](_0x3860('0x8'),attributes,{'tableName':_0x3860('0x9'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeda7=['rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xb9336c,_0x2496e1){var _0x5298c3=function(_0x13c26d){while(--_0x13c26d){_0xb9336c['push'](_0xb9336c['shift']());}};_0x5298c3(++_0x2496e1);}(_0xeda7,0x196));var _0x7eda=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0xeda7[_0x54d4a8];return _0x3b321b;};'use strict';var _=require(_0x7eda('0x0'));var util=require(_0x7eda('0x1'));var logger=require(_0x7eda('0x2'))(_0x7eda('0x3'));var moment=require(_0x7eda('0x4'));var BPromise=require(_0x7eda('0x5'));var rp=require(_0x7eda('0x6'));var fs=require('fs');var path=require(_0x7eda('0x7'));var rimraf=require(_0x7eda('0x8'));var config=require(_0x7eda('0x9'));var attributes=require(_0x7eda('0xa'));module[_0x7eda('0xb')]=function(_0x6ee7be,_0x328430){return _0x6ee7be[_0x7eda('0xc')](_0x7eda('0xd'),attributes,{'tableName':_0x7eda('0xe'),'paranoid':![],'indexes':[{'name':_0x7eda('0xf'),'fields':[_0x7eda('0x10'),_0x7eda('0x11')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index eaec96a..5b939e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['info','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x4a2d95,_0x58576a){var _0x58831c=function(_0x3a8e17){while(--_0x3a8e17){_0x4a2d95['push'](_0x4a2d95['shift']());}};_0x58831c(++_0x58576a);}(_0x2bd8,0x130));var _0x82bd=function(_0xd2c6e7,_0x5331bb){_0xd2c6e7=_0xd2c6e7-0x0;var _0x472660=_0x2bd8[_0xd2c6e7];return _0x472660;};'use strict';var _=require(_0x82bd('0x0'));var util=require('util');var moment=require(_0x82bd('0x1'));var BPromise=require(_0x82bd('0x2'));var rs=require(_0x82bd('0x3'));var fs=require('fs');var Redis=require(_0x82bd('0x4'));var db=require(_0x82bd('0x5'))['db'];var utils=require(_0x82bd('0x6'));var logger=require(_0x82bd('0x7'))('rpc');var config=require(_0x82bd('0x8'));var jayson=require(_0x82bd('0x9'));var client=jayson[_0x82bd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19dbb1,_0x77d7a9,_0x226f60){return new BPromise(function(_0x1f7463,_0x4dc3a6){return client[_0x82bd('0xb')](_0x19dbb1,_0x226f60)['then'](function(_0x4a9b2c){logger['info'](_0x82bd('0xc'),_0x77d7a9,'request\x20sent');logger['debug'](_0x82bd('0xd'),_0x77d7a9,'request\x20sent',JSON['stringify'](_0x4a9b2c));if(_0x4a9b2c[_0x82bd('0xe')]){if(_0x4a9b2c[_0x82bd('0xe')]['code']===0x1f4){logger[_0x82bd('0xe')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x4a9b2c[_0x82bd('0xe')]['message']);return _0x4dc3a6(_0x4a9b2c[_0x82bd('0xe')][_0x82bd('0xf')]);}logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x4a9b2c['error'][_0x82bd('0xf')]);return _0x1f7463(_0x4a9b2c[_0x82bd('0xe')]['message']);}else{logger[_0x82bd('0x10')]('FreshsalesField,\x20%s,\x20%s',_0x77d7a9,_0x82bd('0x11'));_0x1f7463(_0x4a9b2c[_0x82bd('0x12')][_0x82bd('0xf')]);}})[_0x82bd('0x13')](function(_0x209081){logger[_0x82bd('0xe')](_0x82bd('0xc'),_0x77d7a9,_0x209081);_0x4dc3a6(_0x209081);});});}
\ No newline at end of file
+var _0x6d38=['request','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x3a9fce,_0x30ac73){var _0x57e555=function(_0x253379){while(--_0x253379){_0x3a9fce['push'](_0x3a9fce['shift']());}};_0x57e555(++_0x30ac73);}(_0x6d38,0x1ef));var _0x86d3=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x6d38[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x86d3('0x0'));var moment=require(_0x86d3('0x1'));var BPromise=require(_0x86d3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x86d3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x86d3('0x4'))(_0x86d3('0x5'));var config=require(_0x86d3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x86d3('0x7')][_0x86d3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33d4aa,_0x2eaa15,_0x47e654){return new BPromise(function(_0x552b07,_0x2aea31){return client[_0x86d3('0x9')](_0x33d4aa,_0x47e654)[_0x86d3('0xa')](function(_0x499640){logger['info'](_0x86d3('0xb'),_0x2eaa15,_0x86d3('0xc'));logger['debug']('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x2eaa15,_0x86d3('0xc'),JSON[_0x86d3('0xd')](_0x499640));if(_0x499640['error']){if(_0x499640[_0x86d3('0xe')]['code']===0x1f4){logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);return _0x2aea31(_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);}logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x499640['error'][_0x86d3('0xf')]);return _0x552b07(_0x499640[_0x86d3('0xe')][_0x86d3('0xf')]);}else{logger[_0x86d3('0x10')](_0x86d3('0xb'),_0x2eaa15,_0x86d3('0xc'));_0x552b07(_0x499640[_0x86d3('0x11')][_0x86d3('0xf')]);}})['catch'](function(_0x2d5ba9){logger[_0x86d3('0xe')](_0x86d3('0xb'),_0x2eaa15,_0x2d5ba9);_0x2aea31(_0x2d5ba9);});});}
\ No newline at end of file
index 163bca0..9a2401b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4bea87,_0x5d2117){var _0x4c309a=function(_0x32ef69){while(--_0x32ef69){_0x4bea87['push'](_0x4bea87['shift']());}};_0x4c309a(++_0x5d2117);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x358b12,_0x30799f){var _0x413028=function(_0x214497){while(--_0x214497){_0x358b12['push'](_0x358b12['shift']());}};_0x413028(++_0x30799f);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index fd87f81..79e9403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3b=['exports','STRING','username','ENUM','integrationTab','sequelize'];(function(_0x14a434,_0x58d0b4){var _0x19fe36=function(_0x562b52){while(--_0x562b52){_0x14a434['push'](_0x14a434['shift']());}};_0x19fe36(++_0x58d0b4);}(_0x1a3b,0x83));var _0xb1a3=function(_0x2541ad,_0x4a0a3b){_0x2541ad=_0x2541ad-0x0;var _0x1aafac=_0x1a3b[_0x2541ad];return _0x1aafac;};'use strict';var Sequelize=require(_0xb1a3('0x0'));module[_0xb1a3('0x1')]={'name':{'type':Sequelize[_0xb1a3('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xb1a3('0x2')],'unique':_0xb1a3('0x3')},'remoteUri':{'type':Sequelize[_0xb1a3('0x2')]},'password':{'type':Sequelize[_0xb1a3('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xb1a3('0x2')]},'securityToken':{'type':Sequelize[_0xb1a3('0x2')]},'serverUrl':{'type':Sequelize[_0xb1a3('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xb1a3('0x4')](_0xb1a3('0x5'),'newTab'),'defaultValue':_0xb1a3('0x5')}};
\ No newline at end of file
+var _0xbd50=['integrationTab','STRING','username'];(function(_0x5ccc50,_0x1a4d88){var _0x25ccd9=function(_0x70e9d0){while(--_0x70e9d0){_0x5ccc50['push'](_0x5ccc50['shift']());}};_0x25ccd9(++_0x1a4d88);}(_0xbd50,0x151));var _0x0bd5=function(_0x3a3833,_0x2b785c){_0x3a3833=_0x3a3833-0x0;var _0x1032de=_0xbd50[_0x3a3833];return _0x1032de;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x0bd5('0x0')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x0bd5('0x0')],'unique':_0x0bd5('0x1')},'remoteUri':{'type':Sequelize[_0x0bd5('0x0')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x0bd5('0x0')]},'securityToken':{'type':Sequelize[_0x0bd5('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab','newTab'),'defaultValue':_0x0bd5('0x2')}};
\ No newline at end of file
index c005349..2fac545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2f=['undefined','limit','count','status','set','Content-Range','apply','reject','then','error','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','find','create','body','destroy','getConfigurations','findOne','SalesforceConfiguration','nolimit','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','SalesforceField','getFields','remoteUri','clientId','clientSecret','password','securityToken','slice','lastIndexOf','username','concat','isNil','sobject','describe','OwnerId','ActivityDate','IsRecurrence','string','int','picklist','email','includes','length','label','custom','picklistValues','boolean','True','true','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2d2f,0x1be));var _0xf2d2=function(_0x1f0cbd,_0x2d5ff5){_0x1f0cbd=_0x1f0cbd-0x0;var _0x229cc8=_0x2d2f[_0x1f0cbd];return _0x229cc8;};'use strict';var emlformat=require(_0xf2d2('0x0'));var rimraf=require(_0xf2d2('0x1'));var zipdir=require(_0xf2d2('0x2'));var jsonpatch=require(_0xf2d2('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf2d2('0x4'));var Mustache=require(_0xf2d2('0x5'));var util=require(_0xf2d2('0x6'));var path=require(_0xf2d2('0x7'));var sox=require('sox');var csv=require(_0xf2d2('0x8'));var ejs=require(_0xf2d2('0x9'));var fs=require('fs');var fs_extra=require(_0xf2d2('0xa'));var _=require(_0xf2d2('0xb'));var squel=require(_0xf2d2('0xc'));var crypto=require(_0xf2d2('0xd'));var jsforce=require(_0xf2d2('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf2d2('0x8'));var querystring=require(_0xf2d2('0xf'));var Papa=require(_0xf2d2('0x10'));var Redis=require(_0xf2d2('0x11'));var authService=require(_0xf2d2('0x12'));var qs=require(_0xf2d2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2d2('0x14'))('api');var utils=require(_0xf2d2('0x15'));var config=require(_0xf2d2('0x16'));var licenseUtil=require(_0xf2d2('0x17'));var db=require(_0xf2d2('0x18'))['db'];var integrations=require(_0xf2d2('0x19'));function respondWithStatusCode(_0x52be6f,_0x5b2d6c){_0x5b2d6c=_0x5b2d6c||0xcc;return function(_0x531e89){if(_0x531e89){return _0x52be6f[_0xf2d2('0x1a')](_0x5b2d6c);}return _0x52be6f['status'](_0x5b2d6c)[_0xf2d2('0x1b')]();};}function respondWithResult(_0x3cd72f,_0x4a96e0){_0x4a96e0=_0x4a96e0||0xc8;return function(_0x3a505a){if(_0x3a505a){return _0x3cd72f['status'](_0x4a96e0)[_0xf2d2('0x1c')](_0x3a505a);}};}function respondWithFilteredResult(_0x2da43a,_0x21e11e){return function(_0x5d6969){if(_0x5d6969){var _0x467c6d=typeof _0x21e11e[_0xf2d2('0x1d')]===_0xf2d2('0x1e')&&typeof _0x21e11e[_0xf2d2('0x1f')]==='undefined';var _0x2fced0=_0x5d6969['count'];var _0x295a12=_0x467c6d?0x0:_0x21e11e['offset'];var _0xd81f4a=_0x467c6d?_0x5d6969[_0xf2d2('0x20')]:_0x21e11e[_0xf2d2('0x1d')]+_0x21e11e[_0xf2d2('0x1f')];var _0xb905d7;if(_0xd81f4a>=_0x2fced0){_0xd81f4a=_0x2fced0;_0xb905d7=0xc8;}else{_0xb905d7=0xce;}_0x2da43a[_0xf2d2('0x21')](_0xb905d7);return _0x2da43a[_0xf2d2('0x22')](_0xf2d2('0x23'),_0x295a12+'-'+_0xd81f4a+'/'+_0x2fced0)[_0xf2d2('0x1c')](_0x5d6969);}return null;};}function patchUpdates(_0x190234){return function(_0x45c5e0){try{jsonpatch[_0xf2d2('0x24')](_0x45c5e0,_0x190234,!![]);}catch(_0x590c6c){return BPromise[_0xf2d2('0x25')](_0x590c6c);}return _0x45c5e0['save']();};}function saveUpdates(_0xf39c82,_0x40c274){return function(_0x512c62){if(_0x512c62){return _0x512c62['update'](_0xf39c82)['then'](function(_0x2e5c5b){return _0x2e5c5b;});}return null;};}function removeEntity(_0x5f7deb,_0x48902a){return function(_0x210a5b){if(_0x210a5b){return _0x210a5b['destroy']()[_0xf2d2('0x26')](function(){_0x5f7deb[_0xf2d2('0x21')](0xcc)[_0xf2d2('0x1b')]();});}};}function handleEntityNotFound(_0x26e596,_0x2b68af){return function(_0x5d1a25){if(!_0x5d1a25){_0x26e596[_0xf2d2('0x1a')](0x194);}return _0x5d1a25;};}function handleError(_0x28d52b,_0x58a2c3){_0x58a2c3=_0x58a2c3||0x1f4;return function(_0x3963e7){logger[_0xf2d2('0x27')](_0x3963e7['stack']);if(_0x3963e7['name']){delete _0x3963e7['name'];}_0x28d52b[_0xf2d2('0x21')](_0x58a2c3)[_0xf2d2('0x28')](_0x3963e7);};}exports[_0xf2d2('0x29')]=function(_0x26f127,_0x15b660){var _0x2afb26={},_0x33db53={},_0x5a4976={'count':0x0,'rows':[]};var _0x3b31b4=_[_0xf2d2('0x2a')](db[_0xf2d2('0x2b')][_0xf2d2('0x2c')],function(_0x40a0f9){return{'name':_0x40a0f9[_0xf2d2('0x2d')],'type':_0x40a0f9[_0xf2d2('0x2e')][_0xf2d2('0x2f')]};});_0x33db53[_0xf2d2('0x30')]=_['map'](_0x3b31b4,_0xf2d2('0x31'));_0x33db53['query']=_['keys'](_0x26f127[_0xf2d2('0x32')]);_0x33db53[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x33db53[_0xf2d2('0x30')],_0x33db53['query']);_0x2afb26[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x33db53[_0xf2d2('0x30')],qs[_0xf2d2('0x36')](_0x26f127['query'][_0xf2d2('0x36')]));_0x2afb26[_0xf2d2('0x35')]=_0x2afb26[_0xf2d2('0x35')]['length']?_0x2afb26[_0xf2d2('0x35')]:_0x33db53[_0xf2d2('0x30')];if(!_0x26f127['query'][_0xf2d2('0x37')]('nolimit')){_0x2afb26['limit']=qs['limit'](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x1f')]);_0x2afb26['offset']=qs[_0xf2d2('0x1d')](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x1d')]);}_0x2afb26['order']=qs['sort'](_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x38')]);_0x2afb26[_0xf2d2('0x39')]=qs['filters'](_[_0xf2d2('0x3a')](_0x26f127[_0xf2d2('0x32')],_0x33db53[_0xf2d2('0x33')]),_0x3b31b4);if(_0x26f127[_0xf2d2('0x32')]['filter']){_0x2afb26[_0xf2d2('0x39')]=_[_0xf2d2('0x3b')](_0x2afb26[_0xf2d2('0x39')],{'$or':_[_0xf2d2('0x2a')](_0x3b31b4,function(_0x441632){if(_0x441632[_0xf2d2('0x2e')]!==_0xf2d2('0x3c')){var _0x5bf175={};_0x5bf175[_0x441632[_0xf2d2('0x31')]]={'$like':'%'+_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x3d')]+'%'};return _0x5bf175;}})});}_0x2afb26=_[_0xf2d2('0x3b')]({},_0x2afb26,_0x26f127[_0xf2d2('0x3e')]);var _0x306cea={'where':_0x2afb26[_0xf2d2('0x39')]};return db['SalesforceAccount'][_0xf2d2('0x20')](_0x306cea)[_0xf2d2('0x26')](function(_0x47a8a2){_0x5a4976[_0xf2d2('0x20')]=_0x47a8a2;if(_0x26f127[_0xf2d2('0x32')][_0xf2d2('0x3f')]){_0x2afb26[_0xf2d2('0x40')]=[{'all':!![]}];}return db[_0xf2d2('0x2b')]['findAll'](_0x2afb26);})[_0xf2d2('0x26')](function(_0x17ce5a){_0x5a4976[_0xf2d2('0x41')]=_0x17ce5a;return _0x5a4976;})['then'](respondWithFilteredResult(_0x15b660,_0x2afb26))[_0xf2d2('0x42')](handleError(_0x15b660,null));};exports[_0xf2d2('0x43')]=function(_0xf4f89e,_0xcfd73b){var _0x2a60b7={'raw':![],'where':{'id':_0xf4f89e[_0xf2d2('0x44')]['id']}},_0x56ae6d={};_0x56ae6d[_0xf2d2('0x30')]=_[_0xf2d2('0x45')](db[_0xf2d2('0x2b')][_0xf2d2('0x2c')]);_0x56ae6d[_0xf2d2('0x32')]=_[_0xf2d2('0x45')](_0xf4f89e['query']);_0x56ae6d[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x56ae6d[_0xf2d2('0x30')],_0x56ae6d[_0xf2d2('0x32')]);_0x2a60b7[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x56ae6d['model'],qs[_0xf2d2('0x36')](_0xf4f89e[_0xf2d2('0x32')][_0xf2d2('0x36')]));_0x2a60b7['attributes']=_0x2a60b7['attributes']['length']?_0x2a60b7[_0xf2d2('0x35')]:_0x56ae6d['model'];if(_0xf4f89e[_0xf2d2('0x32')][_0xf2d2('0x3f')]){_0x2a60b7[_0xf2d2('0x40')]=[{'all':!![]}];}_0x2a60b7=_['merge']({},_0x2a60b7,_0xf4f89e['options']);return db[_0xf2d2('0x2b')][_0xf2d2('0x46')](_0x2a60b7)[_0xf2d2('0x26')](handleEntityNotFound(_0xcfd73b,null))[_0xf2d2('0x26')](respondWithResult(_0xcfd73b,null))[_0xf2d2('0x42')](handleError(_0xcfd73b,null));};exports[_0xf2d2('0x47')]=function(_0x5e7597,_0x1d2d35){return db['SalesforceAccount']['create'](_0x5e7597['body'],{})[_0xf2d2('0x26')](respondWithResult(_0x1d2d35,0xc9))[_0xf2d2('0x42')](handleError(_0x1d2d35,null));};exports['update']=function(_0x22ab0b,_0x271f27){if(_0x22ab0b[_0xf2d2('0x48')]['id']){delete _0x22ab0b[_0xf2d2('0x48')]['id'];}return db['SalesforceAccount'][_0xf2d2('0x46')]({'where':{'id':_0x22ab0b[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x271f27,null))[_0xf2d2('0x26')](saveUpdates(_0x22ab0b['body'],null))[_0xf2d2('0x26')](respondWithResult(_0x271f27,null))['catch'](handleError(_0x271f27,null));};exports[_0xf2d2('0x49')]=function(_0x15ce80,_0x11f25e){return db['SalesforceAccount']['find']({'where':{'id':_0x15ce80['params']['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x11f25e,null))[_0xf2d2('0x26')](removeEntity(_0x11f25e,null))[_0xf2d2('0x42')](handleError(_0x11f25e,null));};exports[_0xf2d2('0x4a')]=function(_0x4e542f,_0x38a17e,_0x17acf1){var _0x26bc04={};var _0x3a847b={};var _0x366c66;var _0x4ce2fd;return db[_0xf2d2('0x2b')][_0xf2d2('0x4b')]({'where':{'id':_0x4e542f[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x38a17e,null))[_0xf2d2('0x26')](function(_0x222310){if(_0x222310){_0x366c66=_0x222310;_0x3a847b[_0xf2d2('0x30')]=_[_0xf2d2('0x45')](db[_0xf2d2('0x4c')][_0xf2d2('0x2c')]);_0x3a847b[_0xf2d2('0x32')]=_[_0xf2d2('0x45')](_0x4e542f['query']);_0x3a847b[_0xf2d2('0x33')]=_[_0xf2d2('0x34')](_0x3a847b[_0xf2d2('0x30')],_0x3a847b['query']);_0x26bc04[_0xf2d2('0x35')]=_[_0xf2d2('0x34')](_0x3a847b['model'],qs[_0xf2d2('0x36')](_0x4e542f[_0xf2d2('0x32')]['fields']));_0x26bc04[_0xf2d2('0x35')]=_0x26bc04[_0xf2d2('0x35')]['length']?_0x26bc04[_0xf2d2('0x35')]:_0x3a847b[_0xf2d2('0x30')];_0x26bc04['order']=qs[_0xf2d2('0x38')](_0x4e542f['query'][_0xf2d2('0x38')]);_0x26bc04[_0xf2d2('0x39')]=qs[_0xf2d2('0x33')](_[_0xf2d2('0x3a')](_0x4e542f[_0xf2d2('0x32')],_0x3a847b[_0xf2d2('0x33')]));if(_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x3d')]){_0x26bc04[_0xf2d2('0x39')]=_[_0xf2d2('0x3b')](_0x26bc04[_0xf2d2('0x39')],{'$or':_['map'](_0x26bc04[_0xf2d2('0x35')],function(_0x15bed3){var _0x662afa={};_0x662afa[_0x15bed3]={'$like':'%'+_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x3d')]+'%'};return _0x662afa;})});}_0x26bc04=_[_0xf2d2('0x3b')]({},_0x26bc04,_0x4e542f[_0xf2d2('0x3e')]);return _0x366c66[_0xf2d2('0x4a')](_0x26bc04);}})[_0xf2d2('0x26')](function(_0x4b244b){if(_0x4b244b){_0x4ce2fd=_0x4b244b['length'];if(!_0x4e542f['query'][_0xf2d2('0x37')](_0xf2d2('0x4d'))){_0x26bc04[_0xf2d2('0x1f')]=qs[_0xf2d2('0x1f')](_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x1f')]);_0x26bc04[_0xf2d2('0x1d')]=qs[_0xf2d2('0x1d')](_0x4e542f[_0xf2d2('0x32')][_0xf2d2('0x1d')]);}return _0x366c66[_0xf2d2('0x4a')](_0x26bc04);}})[_0xf2d2('0x26')](function(_0x1b8f09){if(_0x1b8f09){return _0x1b8f09?{'count':_0x4ce2fd,'rows':_0x1b8f09}:null;}})[_0xf2d2('0x26')](respondWithResult(_0x38a17e,null))[_0xf2d2('0x42')](handleError(_0x38a17e,null));};exports['addConfiguration']=function(_0x498d29,_0x29e49d,_0x47faf6){if(_0x498d29[_0xf2d2('0x48')]['id']){delete _0x498d29[_0xf2d2('0x48')]['id'];}return db['SalesforceAccount']['findOne']({'where':{'id':_0x498d29[_0xf2d2('0x44')]['id']}})[_0xf2d2('0x26')](handleEntityNotFound(_0x29e49d,null))['then'](function(_0xacdcbf){if(_0xacdcbf){_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x4e')]=_0xacdcbf['id'];_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x4f')]=integrations[_0xf2d2('0x50')](_0x498d29[_0xf2d2('0x48')]['channel'],_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x2e')]);_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x51')]=integrations[_0xf2d2('0x52')](_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x53')],_0x498d29[_0xf2d2('0x48')][_0xf2d2('0x2e')]);return db[_0xf2d2('0x4c')][_0xf2d2('0x47')](_0x498d29[_0xf2d2('0x48')],{'include':[{'model':db[_0xf2d2('0x54')],'as':_0xf2d2('0x4f')},{'model':db[_0xf2d2('0x54')],'as':_0xf2d2('0x51')}]});}return null;})[_0xf2d2('0x26')](respondWithResult(_0x29e49d,null))[_0xf2d2('0x42')](handleError(_0x29e49d,null));};exports[_0xf2d2('0x55')]=function(_0x572c5c,_0x42efb1,_0x5f41c7){var _0x497980;var _0x3163e4='';var _0x377a97='Task';return db[_0xf2d2('0x2b')][_0xf2d2('0x4b')]({'where':{'id':_0x572c5c[_0xf2d2('0x44')]['id']},'attributes':['id',_0xf2d2('0x56'),_0xf2d2('0x57'),_0xf2d2('0x58'),'username',_0xf2d2('0x59'),_0xf2d2('0x5a')]})['then'](handleEntityNotFound(_0x42efb1,null))[_0xf2d2('0x26')](function(_0x354955){if(_0x354955){_0x3163e4=_0x354955[_0xf2d2('0x56')];var _0x4c3e9d=_0x3163e4[_0xf2d2('0x5b')](-0x1);if(_0x4c3e9d==='/'){_0x3163e4=_0x3163e4['substring'](0x0,_0x3163e4[_0xf2d2('0x5c')](_0x4c3e9d));}_0x497980=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3163e4,'clientId':_0x354955['clientId'],'clientSecret':_0x354955[_0xf2d2('0x58')]}});return _0x497980['login'](_0x354955[_0xf2d2('0x5d')],_0x354955['password'][_0xf2d2('0x5e')](_0x354955['securityToken']));}})['then'](function(_0x5a0956){if(_0x5a0956){if(!_[_0xf2d2('0x5f')](_0x572c5c[_0xf2d2('0x32')]['ticketType'])){_0x377a97=_0x572c5c[_0xf2d2('0x32')]['ticketType'];}return _0x497980[_0xf2d2('0x60')](_0x377a97)[_0xf2d2('0x61')]();}})['then'](function(_0x5b729e){var _0x3dbb6a=[_0xf2d2('0x62'),_0xf2d2('0x63'),'IsReminderSet',_0xf2d2('0x64'),'Subject','Description'];var _0x337036=[_0xf2d2('0x65'),_0xf2d2('0x66'),_0xf2d2('0x67'),'boolean',_0xf2d2('0x68'),'textarea','phone'];if(_0x5b729e){_['remove'](_0x5b729e[_0xf2d2('0x36')],function(_0xf2ff1){return _0x3dbb6a[_0xf2d2('0x69')](_0xf2ff1[_0xf2d2('0x31')])||!_0x337036[_0xf2d2('0x69')](_0xf2ff1[_0xf2d2('0x2e')]);});return{'count':_0x5b729e[_0xf2d2('0x36')][_0xf2d2('0x6a')],'rows':_['map'](_0x5b729e[_0xf2d2('0x36')],function(_0x510004){return{'id':_0x510004['name'],'name':_0x510004[_0xf2d2('0x6b')],'custom':_0x510004[_0xf2d2('0x6c')],'options':_0x510004[_0xf2d2('0x6d')][_0xf2d2('0x6a')]>0x0?_['map'](_0x510004[_0xf2d2('0x6d')],function(_0x5c128d){return{'name':_0x5c128d[_0xf2d2('0x6b')],'value':_0x5c128d['value']};}):_0x510004['type']==_0xf2d2('0x6e')?[{'name':_0xf2d2('0x6f'),'value':_0xf2d2('0x70')},{'name':'False','value':_0xf2d2('0x71')}]:[]};})};}})[_0xf2d2('0x26')](respondWithResult(_0x42efb1,null))['catch'](function(_0xfc57ef){var _0xcf76e=_0x572c5c[_0xf2d2('0x32')][_0xf2d2('0x72')]?0x1f4:_0xfc57ef[_0xf2d2('0x73')]||0x1f4;logger[_0xf2d2('0x27')](_0xf2d2('0x74'),_0xf2d2('0x55'),_0xcf76e,JSON[_0xf2d2('0x75')](_0xfc57ef));delete _0xfc57ef['name'];if(_0xcf76e===0x191){_0xcf76e=0x190;}_0x42efb1[_0xf2d2('0x21')](_0xcf76e)[_0xf2d2('0x28')](_0x572c5c['query']['test']?{'message':_0xf2d2('0x76'),'statusCode':_0xfc57ef[_0xf2d2('0x73')]}:_0xfc57ef);});};
\ No newline at end of file
+var _0xaf8f=['SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','password','substring','lastIndexOf','Connection','login','securityToken','isNil','ticketType','describe','ActivityDate','IsRecurrence','Subject','Description','string','int','phone','includes','label','custom','value','False','false','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','filter','where','merge','VIRTUAL','options','SalesforceAccount','includeAll','include','rows','catch','rawAttributes','length','create','body','find','params','getConfigurations','SalesforceConfiguration','pick','hasOwnProperty','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','Subjects'];(function(_0x4357c5,_0x5cdb89){var _0x1cad8a=function(_0x500e29){while(--_0x500e29){_0x4357c5['push'](_0x4357c5['shift']());}};_0x1cad8a(++_0x5cdb89);}(_0xaf8f,0x104));var _0xfaf8=function(_0x3d69f7,_0xf213a8){_0x3d69f7=_0x3d69f7-0x0;var _0x541cee=_0xaf8f[_0x3d69f7];return _0x541cee;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfaf8('0x0'));var jsonpatch=require(_0xfaf8('0x1'));var rp=require(_0xfaf8('0x2'));var moment=require(_0xfaf8('0x3'));var BPromise=require(_0xfaf8('0x4'));var Mustache=require(_0xfaf8('0x5'));var util=require('util');var path=require(_0xfaf8('0x6'));var sox=require('sox');var csv=require(_0xfaf8('0x7'));var ejs=require(_0xfaf8('0x8'));var fs=require('fs');var fs_extra=require(_0xfaf8('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfaf8('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfaf8('0x7'));var querystring=require(_0xfaf8('0xb'));var Papa=require(_0xfaf8('0xc'));var Redis=require(_0xfaf8('0xd'));var authService=require(_0xfaf8('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfaf8('0xf'));var hardwareService=require(_0xfaf8('0x10'));var logger=require('../../config/logger')(_0xfaf8('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfaf8('0x12'));var db=require(_0xfaf8('0x13'))['db'];var integrations=require(_0xfaf8('0x14'));function respondWithStatusCode(_0xda41e3,_0x25a2fb){_0x25a2fb=_0x25a2fb||0xcc;return function(_0x352a4f){if(_0x352a4f){return _0xda41e3['sendStatus'](_0x25a2fb);}return _0xda41e3[_0xfaf8('0x15')](_0x25a2fb)[_0xfaf8('0x16')]();};}function respondWithResult(_0x495177,_0x5ada98){_0x5ada98=_0x5ada98||0xc8;return function(_0x26e6cf){if(_0x26e6cf){return _0x495177[_0xfaf8('0x15')](_0x5ada98)[_0xfaf8('0x17')](_0x26e6cf);}};}function respondWithFilteredResult(_0xe9eb54,_0x5eb21f){return function(_0xa8fdfb){if(_0xa8fdfb){var _0x5dc58a=typeof _0x5eb21f[_0xfaf8('0x18')]===_0xfaf8('0x19')&&typeof _0x5eb21f[_0xfaf8('0x1a')]===_0xfaf8('0x19');var _0x5cdf85=_0xa8fdfb[_0xfaf8('0x1b')];var _0x56c619=_0x5dc58a?0x0:_0x5eb21f[_0xfaf8('0x18')];var _0x261c5e=_0x5dc58a?_0xa8fdfb[_0xfaf8('0x1b')]:_0x5eb21f[_0xfaf8('0x18')]+_0x5eb21f[_0xfaf8('0x1a')];var _0x268eda;if(_0x261c5e>=_0x5cdf85){_0x261c5e=_0x5cdf85;_0x268eda=0xc8;}else{_0x268eda=0xce;}_0xe9eb54['status'](_0x268eda);return _0xe9eb54[_0xfaf8('0x1c')]('Content-Range',_0x56c619+'-'+_0x261c5e+'/'+_0x5cdf85)[_0xfaf8('0x17')](_0xa8fdfb);}return null;};}function patchUpdates(_0x308b53){return function(_0x5f542f){try{jsonpatch['apply'](_0x5f542f,_0x308b53,!![]);}catch(_0x5c305c){return BPromise[_0xfaf8('0x1d')](_0x5c305c);}return _0x5f542f[_0xfaf8('0x1e')]();};}function saveUpdates(_0x57f979,_0x7a5299){return function(_0x54073e){if(_0x54073e){return _0x54073e['update'](_0x57f979)[_0xfaf8('0x1f')](function(_0x28fa8f){return _0x28fa8f;});}return null;};}function removeEntity(_0x462286,_0x4947db){return function(_0x516c5c){if(_0x516c5c){return _0x516c5c[_0xfaf8('0x20')]()[_0xfaf8('0x1f')](function(){_0x462286[_0xfaf8('0x15')](0xcc)[_0xfaf8('0x16')]();});}};}function handleEntityNotFound(_0x7da82f,_0x45e7d9){return function(_0x4e2950){if(!_0x4e2950){_0x7da82f['sendStatus'](0x194);}return _0x4e2950;};}function handleError(_0x333756,_0x1ed1e9){_0x1ed1e9=_0x1ed1e9||0x1f4;return function(_0x4377a5){logger[_0xfaf8('0x21')](_0x4377a5[_0xfaf8('0x22')]);if(_0x4377a5[_0xfaf8('0x23')]){delete _0x4377a5[_0xfaf8('0x23')];}_0x333756[_0xfaf8('0x15')](_0x1ed1e9)[_0xfaf8('0x24')](_0x4377a5);};}exports[_0xfaf8('0x25')]=function(_0x1bb933,_0x2766a2){var _0x53b91d={},_0x3e002b={},_0x8b116={'count':0x0,'rows':[]};var _0x32277e=_[_0xfaf8('0x26')](db['SalesforceAccount']['rawAttributes'],function(_0x11bd67){return{'name':_0x11bd67[_0xfaf8('0x27')],'type':_0x11bd67[_0xfaf8('0x28')][_0xfaf8('0x29')]};});_0x3e002b[_0xfaf8('0x2a')]=_[_0xfaf8('0x26')](_0x32277e,'name');_0x3e002b[_0xfaf8('0x2b')]=_[_0xfaf8('0x2c')](_0x1bb933['query']);_0x3e002b[_0xfaf8('0x2d')]=_[_0xfaf8('0x2e')](_0x3e002b[_0xfaf8('0x2a')],_0x3e002b[_0xfaf8('0x2b')]);_0x53b91d[_0xfaf8('0x2f')]=_[_0xfaf8('0x2e')](_0x3e002b[_0xfaf8('0x2a')],qs[_0xfaf8('0x30')](_0x1bb933['query']['fields']));_0x53b91d[_0xfaf8('0x2f')]=_0x53b91d[_0xfaf8('0x2f')]['length']?_0x53b91d[_0xfaf8('0x2f')]:_0x3e002b['model'];if(!_0x1bb933['query']['hasOwnProperty'](_0xfaf8('0x31'))){_0x53b91d['limit']=qs['limit'](_0x1bb933['query'][_0xfaf8('0x1a')]);_0x53b91d[_0xfaf8('0x18')]=qs[_0xfaf8('0x18')](_0x1bb933[_0xfaf8('0x2b')][_0xfaf8('0x18')]);}_0x53b91d[_0xfaf8('0x32')]=qs[_0xfaf8('0x33')](_0x1bb933[_0xfaf8('0x2b')][_0xfaf8('0x33')]);_0x53b91d['where']=qs[_0xfaf8('0x2d')](_['pick'](_0x1bb933[_0xfaf8('0x2b')],_0x3e002b[_0xfaf8('0x2d')]),_0x32277e);if(_0x1bb933[_0xfaf8('0x2b')][_0xfaf8('0x34')]){_0x53b91d[_0xfaf8('0x35')]=_[_0xfaf8('0x36')](_0x53b91d[_0xfaf8('0x35')],{'$or':_['map'](_0x32277e,function(_0x2e2af0){if(_0x2e2af0[_0xfaf8('0x28')]!==_0xfaf8('0x37')){var _0x4ae303={};_0x4ae303[_0x2e2af0['name']]={'$like':'%'+_0x1bb933[_0xfaf8('0x2b')]['filter']+'%'};return _0x4ae303;}})});}_0x53b91d=_['merge']({},_0x53b91d,_0x1bb933[_0xfaf8('0x38')]);var _0xf6ea7b={'where':_0x53b91d[_0xfaf8('0x35')]};return db[_0xfaf8('0x39')][_0xfaf8('0x1b')](_0xf6ea7b)[_0xfaf8('0x1f')](function(_0x56df0e){_0x8b116['count']=_0x56df0e;if(_0x1bb933[_0xfaf8('0x2b')][_0xfaf8('0x3a')]){_0x53b91d[_0xfaf8('0x3b')]=[{'all':!![]}];}return db['SalesforceAccount']['findAll'](_0x53b91d);})[_0xfaf8('0x1f')](function(_0xadbfac){_0x8b116[_0xfaf8('0x3c')]=_0xadbfac;return _0x8b116;})[_0xfaf8('0x1f')](respondWithFilteredResult(_0x2766a2,_0x53b91d))[_0xfaf8('0x3d')](handleError(_0x2766a2,null));};exports['show']=function(_0x2a37a8,_0x23446b){var _0x5c5a7c={'raw':![],'where':{'id':_0x2a37a8['params']['id']}},_0x56d3e8={};_0x56d3e8[_0xfaf8('0x2a')]=_['keys'](db[_0xfaf8('0x39')][_0xfaf8('0x3e')]);_0x56d3e8['query']=_[_0xfaf8('0x2c')](_0x2a37a8[_0xfaf8('0x2b')]);_0x56d3e8[_0xfaf8('0x2d')]=_['intersection'](_0x56d3e8['model'],_0x56d3e8[_0xfaf8('0x2b')]);_0x5c5a7c[_0xfaf8('0x2f')]=_[_0xfaf8('0x2e')](_0x56d3e8[_0xfaf8('0x2a')],qs[_0xfaf8('0x30')](_0x2a37a8[_0xfaf8('0x2b')][_0xfaf8('0x30')]));_0x5c5a7c['attributes']=_0x5c5a7c[_0xfaf8('0x2f')][_0xfaf8('0x3f')]?_0x5c5a7c[_0xfaf8('0x2f')]:_0x56d3e8[_0xfaf8('0x2a')];if(_0x2a37a8[_0xfaf8('0x2b')][_0xfaf8('0x3a')]){_0x5c5a7c[_0xfaf8('0x3b')]=[{'all':!![]}];}_0x5c5a7c=_[_0xfaf8('0x36')]({},_0x5c5a7c,_0x2a37a8[_0xfaf8('0x38')]);return db[_0xfaf8('0x39')]['find'](_0x5c5a7c)[_0xfaf8('0x1f')](handleEntityNotFound(_0x23446b,null))['then'](respondWithResult(_0x23446b,null))[_0xfaf8('0x3d')](handleError(_0x23446b,null));};exports[_0xfaf8('0x40')]=function(_0x11831b,_0x2f30c7){return db['SalesforceAccount']['create'](_0x11831b[_0xfaf8('0x41')],{})[_0xfaf8('0x1f')](respondWithResult(_0x2f30c7,0xc9))[_0xfaf8('0x3d')](handleError(_0x2f30c7,null));};exports['update']=function(_0x454e1b,_0x1225b3){if(_0x454e1b['body']['id']){delete _0x454e1b[_0xfaf8('0x41')]['id'];}return db[_0xfaf8('0x39')][_0xfaf8('0x42')]({'where':{'id':_0x454e1b[_0xfaf8('0x43')]['id']}})[_0xfaf8('0x1f')](handleEntityNotFound(_0x1225b3,null))[_0xfaf8('0x1f')](saveUpdates(_0x454e1b[_0xfaf8('0x41')],null))[_0xfaf8('0x1f')](respondWithResult(_0x1225b3,null))['catch'](handleError(_0x1225b3,null));};exports[_0xfaf8('0x20')]=function(_0x4a5d2d,_0x4ebb81){return db['SalesforceAccount'][_0xfaf8('0x42')]({'where':{'id':_0x4a5d2d['params']['id']}})[_0xfaf8('0x1f')](handleEntityNotFound(_0x4ebb81,null))[_0xfaf8('0x1f')](removeEntity(_0x4ebb81,null))['catch'](handleError(_0x4ebb81,null));};exports[_0xfaf8('0x44')]=function(_0x4c574a,_0x1f9f2a,_0xfa22b3){var _0x348212={};var _0x117b33={};var _0x386033;var _0xd53295;return db[_0xfaf8('0x39')]['findOne']({'where':{'id':_0x4c574a['params']['id']}})[_0xfaf8('0x1f')](handleEntityNotFound(_0x1f9f2a,null))[_0xfaf8('0x1f')](function(_0x14f444){if(_0x14f444){_0x386033=_0x14f444;_0x117b33['model']=_[_0xfaf8('0x2c')](db[_0xfaf8('0x45')][_0xfaf8('0x3e')]);_0x117b33[_0xfaf8('0x2b')]=_[_0xfaf8('0x2c')](_0x4c574a[_0xfaf8('0x2b')]);_0x117b33[_0xfaf8('0x2d')]=_[_0xfaf8('0x2e')](_0x117b33[_0xfaf8('0x2a')],_0x117b33[_0xfaf8('0x2b')]);_0x348212[_0xfaf8('0x2f')]=_[_0xfaf8('0x2e')](_0x117b33['model'],qs['fields'](_0x4c574a[_0xfaf8('0x2b')][_0xfaf8('0x30')]));_0x348212[_0xfaf8('0x2f')]=_0x348212[_0xfaf8('0x2f')][_0xfaf8('0x3f')]?_0x348212[_0xfaf8('0x2f')]:_0x117b33['model'];_0x348212[_0xfaf8('0x32')]=qs[_0xfaf8('0x33')](_0x4c574a['query'][_0xfaf8('0x33')]);_0x348212[_0xfaf8('0x35')]=qs['filters'](_[_0xfaf8('0x46')](_0x4c574a['query'],_0x117b33[_0xfaf8('0x2d')]));if(_0x4c574a[_0xfaf8('0x2b')][_0xfaf8('0x34')]){_0x348212['where']=_[_0xfaf8('0x36')](_0x348212[_0xfaf8('0x35')],{'$or':_[_0xfaf8('0x26')](_0x348212[_0xfaf8('0x2f')],function(_0x3f658f){var _0x98ba44={};_0x98ba44[_0x3f658f]={'$like':'%'+_0x4c574a['query'][_0xfaf8('0x34')]+'%'};return _0x98ba44;})});}_0x348212=_[_0xfaf8('0x36')]({},_0x348212,_0x4c574a[_0xfaf8('0x38')]);return _0x386033[_0xfaf8('0x44')](_0x348212);}})[_0xfaf8('0x1f')](function(_0x5ddbc9){if(_0x5ddbc9){_0xd53295=_0x5ddbc9[_0xfaf8('0x3f')];if(!_0x4c574a[_0xfaf8('0x2b')][_0xfaf8('0x47')](_0xfaf8('0x31'))){_0x348212[_0xfaf8('0x1a')]=qs[_0xfaf8('0x1a')](_0x4c574a[_0xfaf8('0x2b')]['limit']);_0x348212[_0xfaf8('0x18')]=qs['offset'](_0x4c574a[_0xfaf8('0x2b')][_0xfaf8('0x18')]);}return _0x386033['getConfigurations'](_0x348212);}})[_0xfaf8('0x1f')](function(_0x11ebe4){if(_0x11ebe4){return _0x11ebe4?{'count':_0xd53295,'rows':_0x11ebe4}:null;}})[_0xfaf8('0x1f')](respondWithResult(_0x1f9f2a,null))[_0xfaf8('0x3d')](handleError(_0x1f9f2a,null));};exports['addConfiguration']=function(_0x50309d,_0x5d4b3e,_0x5f0ab4){if(_0x50309d[_0xfaf8('0x41')]['id']){delete _0x50309d['body']['id'];}return db['SalesforceAccount'][_0xfaf8('0x48')]({'where':{'id':_0x50309d[_0xfaf8('0x43')]['id']}})[_0xfaf8('0x1f')](handleEntityNotFound(_0x5d4b3e,null))[_0xfaf8('0x1f')](function(_0x4ed7aa){if(_0x4ed7aa){_0x50309d[_0xfaf8('0x41')][_0xfaf8('0x49')]=_0x4ed7aa['id'];_0x50309d[_0xfaf8('0x41')]['Subjects']=integrations[_0xfaf8('0x4a')](_0x50309d[_0xfaf8('0x41')]['channel'],_0x50309d['body']['type']);_0x50309d[_0xfaf8('0x41')][_0xfaf8('0x4b')]=integrations[_0xfaf8('0x4c')](_0x50309d[_0xfaf8('0x41')][_0xfaf8('0x4d')],_0x50309d['body'][_0xfaf8('0x28')]);return db[_0xfaf8('0x45')][_0xfaf8('0x40')](_0x50309d['body'],{'include':[{'model':db['SalesforceField'],'as':_0xfaf8('0x4e')},{'model':db[_0xfaf8('0x4f')],'as':_0xfaf8('0x4b')}]});}return null;})[_0xfaf8('0x1f')](respondWithResult(_0x5d4b3e,null))[_0xfaf8('0x3d')](handleError(_0x5d4b3e,null));};exports[_0xfaf8('0x50')]=function(_0x336901,_0x15c010,_0xc2e4ab){var _0x940f47;var _0x445344='';var _0x4da922=_0xfaf8('0x51');return db[_0xfaf8('0x39')]['findOne']({'where':{'id':_0x336901[_0xfaf8('0x43')]['id']},'attributes':['id',_0xfaf8('0x52'),_0xfaf8('0x53'),_0xfaf8('0x54'),_0xfaf8('0x55'),_0xfaf8('0x56'),'securityToken']})[_0xfaf8('0x1f')](handleEntityNotFound(_0x15c010,null))[_0xfaf8('0x1f')](function(_0x556266){if(_0x556266){_0x445344=_0x556266[_0xfaf8('0x52')];var _0x4d6ebb=_0x445344['slice'](-0x1);if(_0x4d6ebb==='/'){_0x445344=_0x445344[_0xfaf8('0x57')](0x0,_0x445344[_0xfaf8('0x58')](_0x4d6ebb));}_0x940f47=new jsforce[(_0xfaf8('0x59'))]({'oauth2':{'loginUrl':_0x445344,'clientId':_0x556266['clientId'],'clientSecret':_0x556266['clientSecret']}});return _0x940f47[_0xfaf8('0x5a')](_0x556266[_0xfaf8('0x55')],_0x556266[_0xfaf8('0x56')]['concat'](_0x556266[_0xfaf8('0x5b')]));}})[_0xfaf8('0x1f')](function(_0x53e732){if(_0x53e732){if(!_[_0xfaf8('0x5c')](_0x336901[_0xfaf8('0x2b')][_0xfaf8('0x5d')])){_0x4da922=_0x336901[_0xfaf8('0x2b')][_0xfaf8('0x5d')];}return _0x940f47['sobject'](_0x4da922)[_0xfaf8('0x5e')]();}})[_0xfaf8('0x1f')](function(_0x3bd61b){var _0x29ba19=['OwnerId',_0xfaf8('0x5f'),'IsReminderSet',_0xfaf8('0x60'),_0xfaf8('0x61'),_0xfaf8('0x62')];var _0x211044=[_0xfaf8('0x63'),_0xfaf8('0x64'),'picklist','boolean','email','textarea',_0xfaf8('0x65')];if(_0x3bd61b){_['remove'](_0x3bd61b[_0xfaf8('0x30')],function(_0x3994cf){return _0x29ba19[_0xfaf8('0x66')](_0x3994cf[_0xfaf8('0x23')])||!_0x211044[_0xfaf8('0x66')](_0x3994cf[_0xfaf8('0x28')]);});return{'count':_0x3bd61b[_0xfaf8('0x30')]['length'],'rows':_[_0xfaf8('0x26')](_0x3bd61b[_0xfaf8('0x30')],function(_0x40bfec){return{'id':_0x40bfec['name'],'name':_0x40bfec[_0xfaf8('0x67')],'custom':_0x40bfec[_0xfaf8('0x68')],'options':_0x40bfec['picklistValues']['length']>0x0?_[_0xfaf8('0x26')](_0x40bfec['picklistValues'],function(_0x1b96f4){return{'name':_0x1b96f4[_0xfaf8('0x67')],'value':_0x1b96f4[_0xfaf8('0x69')]};}):_0x40bfec[_0xfaf8('0x28')]=='boolean'?[{'name':'True','value':'true'},{'name':_0xfaf8('0x6a'),'value':_0xfaf8('0x6b')}]:[]};})};}})[_0xfaf8('0x1f')](respondWithResult(_0x15c010,null))['catch'](function(_0x4bbc6f){var _0x46d215=_0x336901[_0xfaf8('0x2b')]['test']?0x1f4:_0x4bbc6f[_0xfaf8('0x6c')]||0x1f4;logger['error'](_0xfaf8('0x6d'),'getFields',_0x46d215,JSON[_0xfaf8('0x6e')](_0x4bbc6f));delete _0x4bbc6f[_0xfaf8('0x23')];if(_0x46d215===0x191){_0x46d215=0x190;}_0x15c010[_0xfaf8('0x15')](_0x46d215)[_0xfaf8('0x24')](_0x336901['query'][_0xfaf8('0x6f')]?{'message':_0xfaf8('0x70'),'statusCode':_0x4bbc6f[_0xfaf8('0x6c')]}:_0x4bbc6f);});};
\ No newline at end of file
index a5e4f8c..91b63b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4fb=['rimraf','./intSalesforceAccount.attributes','exports','define','api','moment','bluebird','request-promise','path'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0xe4fb,0x9d));var _0xbe4f=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe4fb[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xbe4f('0x0'));var moment=require(_0xbe4f('0x1'));var BPromise=require(_0xbe4f('0x2'));var rp=require(_0xbe4f('0x3'));var fs=require('fs');var path=require(_0xbe4f('0x4'));var rimraf=require(_0xbe4f('0x5'));var config=require('../../config/environment');var attributes=require(_0xbe4f('0x6'));var integrations=require('../../components/integrations/configuration');module[_0xbe4f('0x7')]=function(_0x1a9396,_0x4a5572){return _0x1a9396[_0xbe4f('0x8')]('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd87b=['request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','util','../../config/logger','api','moment','bluebird'];(function(_0x2dbdbf,_0xa71595){var _0x8b0265=function(_0x1b5c81){while(--_0x1b5c81){_0x2dbdbf['push'](_0x2dbdbf['shift']());}};_0x8b0265(++_0xa71595);}(_0xd87b,0xa4));var _0xbd87=function(_0x52fc81,_0x5d0c20){_0x52fc81=_0x52fc81-0x0;var _0x4c9cab=_0xd87b[_0x52fc81];return _0x4c9cab;};'use strict';var _=require('lodash');var util=require(_0xbd87('0x0'));var logger=require(_0xbd87('0x1'))(_0xbd87('0x2'));var moment=require(_0xbd87('0x3'));var BPromise=require(_0xbd87('0x4'));var rp=require(_0xbd87('0x5'));var fs=require('fs');var path=require(_0xbd87('0x6'));var rimraf=require(_0xbd87('0x7'));var config=require('../../config/environment');var attributes=require(_0xbd87('0x8'));var integrations=require(_0xbd87('0x9'));module[_0xbd87('0xa')]=function(_0x178970,_0x2cd2ac){return _0x178970[_0xbd87('0xb')](_0xbd87('0xc'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7fddd41..470567d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x419f=['GetSalesforceAccount','debug','ShowSalesforceAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','SalesforceAccount','findAll','options','raw','where','limit','include','map','model','attributes'];(function(_0x3e91a9,_0x53c466){var _0x25c9ad=function(_0x69ee2d){while(--_0x69ee2d){_0x3e91a9['push'](_0x3e91a9['shift']());}};_0x25c9ad(++_0x53c466);}(_0x419f,0x176));var _0xf419=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x419f[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xf419('0x0'));var util=require(_0xf419('0x1'));var moment=require(_0xf419('0x2'));var BPromise=require(_0xf419('0x3'));var rs=require(_0xf419('0x4'));var fs=require('fs');var Redis=require(_0xf419('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf419('0x6'));var logger=require('../../config/logger')(_0xf419('0x7'));var config=require(_0xf419('0x8'));var jayson=require(_0xf419('0x9'));var client=jayson[_0xf419('0xa')][_0xf419('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b5526,_0x4082de,_0x2e42a8){return new BPromise(function(_0x3f0c3e,_0x4bb5fd){return client[_0xf419('0xc')](_0x2b5526,_0x2e42a8)[_0xf419('0xd')](function(_0x5ab7d3){logger[_0xf419('0xe')](_0xf419('0xf'),_0x4082de,_0xf419('0x10'));logger['debug'](_0xf419('0x11'),_0x4082de,_0xf419('0x10'),JSON[_0xf419('0x12')](_0x5ab7d3));if(_0x5ab7d3[_0xf419('0x13')]){if(_0x5ab7d3[_0xf419('0x13')]['code']===0x1f4){logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x4bb5fd(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}logger['error'](_0xf419('0xf'),_0x4082de,_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);return _0x3f0c3e(_0x5ab7d3[_0xf419('0x13')][_0xf419('0x14')]);}else{logger[_0xf419('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x4082de,_0xf419('0x10'));_0x3f0c3e(_0x5ab7d3[_0xf419('0x15')]['message']);}})[_0xf419('0x16')](function(_0x19660e){logger[_0xf419('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x4082de,_0x19660e);_0x4bb5fd(_0x19660e);});});}exports['GetSalesforceAccount']=function(_0x599492){var _0x44aad6=this;return new Promise(function(_0x55fb4a,_0x12660e){return db[_0xf419('0x17')][_0xf419('0x18')]({'raw':_0x599492[_0xf419('0x19')]?_0x599492['options'][_0xf419('0x1a')]===undefined?!![]:![]:!![],'where':_0x599492['options']?_0x599492[_0xf419('0x19')][_0xf419('0x1b')]||null:null,'attributes':_0x599492[_0xf419('0x19')]?_0x599492['options']['attributes']||null:null,'limit':_0x599492[_0xf419('0x19')]?_0x599492[_0xf419('0x19')][_0xf419('0x1c')]||null:null,'include':_0x599492[_0xf419('0x19')]?_0x599492['options'][_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x599492['options']['include'],function(_0x4a32d8){return{'model':db[_0x4a32d8[_0xf419('0x1f')]],'as':_0x4a32d8['as'],'attributes':_0x4a32d8[_0xf419('0x20')],'include':_0x4a32d8[_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x4a32d8[_0xf419('0x1d')],function(_0x5aa688){return{'model':db[_0x5aa688[_0xf419('0x1f')]],'as':_0x5aa688['as'],'attributes':_0x5aa688[_0xf419('0x20')],'include':_0x5aa688['include']?_[_0xf419('0x1e')](_0x5aa688['include'],function(_0x1bd979){return{'model':db[_0x1bd979[_0xf419('0x1f')]],'as':_0x1bd979['as'],'attributes':_0x1bd979[_0xf419('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4555f0){logger[_0xf419('0xe')](_0xf419('0x21'),_0x599492);logger[_0xf419('0x22')](_0xf419('0x21'),_0x599492,JSON[_0xf419('0x12')](_0x4555f0));_0x55fb4a(_0x4555f0);})[_0xf419('0x16')](function(_0x4f9ee5){logger[_0xf419('0x13')](_0xf419('0x21'),_0x4f9ee5[_0xf419('0x14')],_0x599492);_0x12660e(_0x44aad6[_0xf419('0x13')](0x1f4,_0x4f9ee5['message']));});});};exports[_0xf419('0x23')]=function(_0x1e2e8d){var _0x4b4b88=this;return new Promise(function(_0x3a8412,_0x5387cc){return db['SalesforceAccount'][_0xf419('0x24')]({'raw':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d['options'][_0xf419('0x1a')]===undefined?!![]:![]:!![],'where':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1b')]||null:null,'attributes':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')]['attributes']||null:null,'include':_0x1e2e8d[_0xf419('0x19')]?_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x1e2e8d[_0xf419('0x19')][_0xf419('0x1d')],function(_0x3742e7){return{'model':db[_0x3742e7[_0xf419('0x1f')]],'as':_0x3742e7['as'],'attributes':_0x3742e7[_0xf419('0x20')],'include':_0x3742e7['include']?_[_0xf419('0x1e')](_0x3742e7[_0xf419('0x1d')],function(_0x4321d7){return{'model':db[_0x4321d7['model']],'as':_0x4321d7['as'],'attributes':_0x4321d7[_0xf419('0x20')],'include':_0x4321d7[_0xf419('0x1d')]?_[_0xf419('0x1e')](_0x4321d7[_0xf419('0x1d')],function(_0x5a673e){return{'model':db[_0x5a673e[_0xf419('0x1f')]],'as':_0x5a673e['as'],'attributes':_0x5a673e[_0xf419('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf419('0xd')](function(_0x45bf10){logger[_0xf419('0xe')]('ShowSalesforceAccount',_0x1e2e8d);logger[_0xf419('0x22')](_0xf419('0x23'),_0x1e2e8d,JSON['stringify'](_0x45bf10));_0x3a8412(_0x45bf10);})[_0xf419('0x16')](function(_0xc605f4){logger[_0xf419('0x13')](_0xf419('0x23'),_0xc605f4[_0xf419('0x14')],_0x1e2e8d);_0x5387cc(_0x4b4b88[_0xf419('0x13')](0x1f4,_0xc605f4['message']));});});};
\ No newline at end of file
+var _0xa91d=['limit','include','map','model','GetSalesforceAccount','stringify','ShowSalesforceAccount','find','where','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','SalesforceAccount,\x20%s,\x20%s','message','SalesforceAccount','options','raw','attributes'];(function(_0x18ce62,_0x598d88){var _0x28e417=function(_0x264114){while(--_0x264114){_0x18ce62['push'](_0x18ce62['shift']());}};_0x28e417(++_0x598d88);}(_0xa91d,0x14e));var _0xda91=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa91d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xda91('0x0'));var util=require(_0xda91('0x1'));var moment=require(_0xda91('0x2'));var BPromise=require(_0xda91('0x3'));var rs=require(_0xda91('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xda91('0x5'))['db'];var utils=require(_0xda91('0x6'));var logger=require(_0xda91('0x7'))(_0xda91('0x8'));var config=require(_0xda91('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xda91('0xa')][_0xda91('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2eaf2c,_0x1f3aad,_0x102c3c){return new BPromise(function(_0x48d3e9,_0x17d7f7){return client[_0xda91('0xc')](_0x2eaf2c,_0x102c3c)[_0xda91('0xd')](function(_0x450c4c){logger[_0xda91('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x1f3aad,_0xda91('0xf'));logger[_0xda91('0x10')](_0xda91('0x11'),_0x1f3aad,_0xda91('0xf'),JSON['stringify'](_0x450c4c));if(_0x450c4c[_0xda91('0x12')]){if(_0x450c4c[_0xda91('0x12')][_0xda91('0x13')]===0x1f4){logger[_0xda91('0x12')](_0xda91('0x14'),_0x1f3aad,_0x450c4c[_0xda91('0x12')]['message']);return _0x17d7f7(_0x450c4c[_0xda91('0x12')][_0xda91('0x15')]);}logger[_0xda91('0x12')](_0xda91('0x14'),_0x1f3aad,_0x450c4c[_0xda91('0x12')][_0xda91('0x15')]);return _0x48d3e9(_0x450c4c[_0xda91('0x12')][_0xda91('0x15')]);}else{logger[_0xda91('0xe')](_0xda91('0x14'),_0x1f3aad,_0xda91('0xf'));_0x48d3e9(_0x450c4c['result']['message']);}})['catch'](function(_0x479afc){logger['error'](_0xda91('0x14'),_0x1f3aad,_0x479afc);_0x17d7f7(_0x479afc);});});}exports['GetSalesforceAccount']=function(_0x4a5d40){var _0x5106bf=this;return new Promise(function(_0x555bc3,_0x3adc51){return db[_0xda91('0x16')]['findAll']({'raw':_0x4a5d40[_0xda91('0x17')]?_0x4a5d40['options'][_0xda91('0x18')]===undefined?!![]:![]:!![],'where':_0x4a5d40[_0xda91('0x17')]?_0x4a5d40[_0xda91('0x17')]['where']||null:null,'attributes':_0x4a5d40[_0xda91('0x17')]?_0x4a5d40[_0xda91('0x17')][_0xda91('0x19')]||null:null,'limit':_0x4a5d40[_0xda91('0x17')]?_0x4a5d40[_0xda91('0x17')][_0xda91('0x1a')]||null:null,'include':_0x4a5d40[_0xda91('0x17')]?_0x4a5d40[_0xda91('0x17')][_0xda91('0x1b')]?_['map'](_0x4a5d40['options'][_0xda91('0x1b')],function(_0x5d03ad){return{'model':db[_0x5d03ad['model']],'as':_0x5d03ad['as'],'attributes':_0x5d03ad[_0xda91('0x19')],'include':_0x5d03ad[_0xda91('0x1b')]?_[_0xda91('0x1c')](_0x5d03ad[_0xda91('0x1b')],function(_0x48c314){return{'model':db[_0x48c314[_0xda91('0x1d')]],'as':_0x48c314['as'],'attributes':_0x48c314[_0xda91('0x19')],'include':_0x48c314['include']?_[_0xda91('0x1c')](_0x48c314[_0xda91('0x1b')],function(_0x54d61b){return{'model':db[_0x54d61b[_0xda91('0x1d')]],'as':_0x54d61b['as'],'attributes':_0x54d61b[_0xda91('0x19')]};}):[]};}):[]};}):[]:[]})[_0xda91('0xd')](function(_0x264969){logger[_0xda91('0xe')](_0xda91('0x1e'),_0x4a5d40);logger['debug'](_0xda91('0x1e'),_0x4a5d40,JSON[_0xda91('0x1f')](_0x264969));_0x555bc3(_0x264969);})['catch'](function(_0x4a71a5){logger[_0xda91('0x12')](_0xda91('0x1e'),_0x4a71a5[_0xda91('0x15')],_0x4a5d40);_0x3adc51(_0x5106bf[_0xda91('0x12')](0x1f4,_0x4a71a5[_0xda91('0x15')]));});});};exports[_0xda91('0x20')]=function(_0x4ddc22){var _0x2f31fe=this;return new Promise(function(_0x1cf849,_0x47b854){return db['SalesforceAccount'][_0xda91('0x21')]({'raw':_0x4ddc22[_0xda91('0x17')]?_0x4ddc22['options']['raw']===undefined?!![]:![]:!![],'where':_0x4ddc22[_0xda91('0x17')]?_0x4ddc22[_0xda91('0x17')][_0xda91('0x22')]||null:null,'attributes':_0x4ddc22[_0xda91('0x17')]?_0x4ddc22[_0xda91('0x17')]['attributes']||null:null,'include':_0x4ddc22[_0xda91('0x17')]?_0x4ddc22[_0xda91('0x17')][_0xda91('0x1b')]?_[_0xda91('0x1c')](_0x4ddc22[_0xda91('0x17')]['include'],function(_0x33584e){return{'model':db[_0x33584e['model']],'as':_0x33584e['as'],'attributes':_0x33584e['attributes'],'include':_0x33584e[_0xda91('0x1b')]?_['map'](_0x33584e[_0xda91('0x1b')],function(_0xeb4f6c){return{'model':db[_0xeb4f6c[_0xda91('0x1d')]],'as':_0xeb4f6c['as'],'attributes':_0xeb4f6c[_0xda91('0x19')],'include':_0xeb4f6c['include']?_[_0xda91('0x1c')](_0xeb4f6c['include'],function(_0x13ea23){return{'model':db[_0x13ea23[_0xda91('0x1d')]],'as':_0x13ea23['as'],'attributes':_0x13ea23[_0xda91('0x19')]};}):[]};}):[]};}):[]:[]})[_0xda91('0xd')](function(_0x9c4403){logger[_0xda91('0xe')](_0xda91('0x20'),_0x4ddc22);logger['debug']('ShowSalesforceAccount',_0x4ddc22,JSON[_0xda91('0x1f')](_0x9c4403));_0x1cf849(_0x9c4403);})[_0xda91('0x23')](function(_0x490509){logger[_0xda91('0x12')](_0xda91('0x20'),_0x490509['message'],_0x4ddc22);_0x47b854(_0x2f31fe[_0xda91('0x12')](0x1f4,_0x490509[_0xda91('0x15')]));});});};
\ No newline at end of file
index 3aff43c..0ee9581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x0b0e,0x187));var _0xe0b0=function(_0x125425,_0x4b6bab){_0x125425=_0x125425-0x0;var _0xd04dc4=_0x0b0e[_0x125425];return _0xd04dc4;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x3dbd70,_0x114211){var _0x13ddf6=function(_0x7bea25){while(--_0x7bea25){_0x3dbd70['push'](_0x3dbd70['shift']());}};_0x13ddf6(++_0x114211);}(_0x7a54,0x106));var _0x47a5=function(_0x2d589a,_0x3fca66){_0x2d589a=_0x2d589a-0x0;var _0x1dfe3b=_0x7a54[_0x2d589a];return _0x1dfe3b;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index be555ef..8a7233e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3a=['account','nothing','contact','exports','STRING','ENUM','Task','lead'];(function(_0x535085,_0x25e65d){var _0x1b6c68=function(_0x412a6d){while(--_0x412a6d){_0x535085['push'](_0x535085['shift']());}};_0x1b6c68(++_0x25e65d);}(_0x0f3a,0x1bb));var _0xa0f3=function(_0x3a74c9,_0x5edbc1){_0x3a74c9=_0x3a74c9-0x0;var _0x49b49e=_0x0f3a[_0x3a74c9];return _0x49b49e;};'use strict';var Sequelize=require('sequelize');module[_0xa0f3('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa0f3('0x1')]},'ticketType':{'type':Sequelize[_0xa0f3('0x2')](_0xa0f3('0x3'),'Case'),'defaultValue':_0xa0f3('0x3')},'moduleSearch':{'type':Sequelize[_0xa0f3('0x2')]('contact_lead','contact',_0xa0f3('0x4'),'account_contact_lead',_0xa0f3('0x5')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xa0f3('0x2')](_0xa0f3('0x6'),_0xa0f3('0x7'),_0xa0f3('0x4'),'account'),'defaultValue':_0xa0f3('0x4')},'leadId':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xa0f3('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x093c=['contact_lead','lead','account_contact_lead','account','nothing','contact','sequelize','STRING','ENUM'];(function(_0xabe560,_0x1d14a5){var _0x3573fa=function(_0x44a38d){while(--_0x44a38d){_0xabe560['push'](_0xabe560['shift']());}};_0x3573fa(++_0x1d14a5);}(_0x093c,0xde));var _0xc093=function(_0x4114ee,_0x3200a8){_0x4114ee=_0x4114ee-0x0;var _0x2cbf62=_0x093c[_0x4114ee];return _0x2cbf62;};'use strict';var Sequelize=require(_0xc093('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc093('0x1')]},'ticketType':{'type':Sequelize[_0xc093('0x2')]('Task','Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0xc093('0x2')](_0xc093('0x3'),'contact',_0xc093('0x4'),_0xc093('0x5'),_0xc093('0x6')),'defaultValue':_0xc093('0x3')},'moduleCreate':{'type':Sequelize[_0xc093('0x2')](_0xc093('0x7'),_0xc093('0x8'),_0xc093('0x4'),_0xc093('0x6')),'defaultValue':_0xc093('0x4')},'leadId':{'type':Sequelize[_0xc093('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xc093('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xc093('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4580513..f504e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ab=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','apply','save','update','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','SalesforceConfiguration','then','includeAll','findAll','show','params','options','find','catch','create','body','findOne','SalesforceField','hasOwnProperty','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x25ab,0xe7));var _0xb25a=function(_0x19b4e1,_0x4c99ac){_0x19b4e1=_0x19b4e1-0x0;var _0x2c71d1=_0x25ab[_0x19b4e1];return _0x2c71d1;};'use strict';var emlformat=require(_0xb25a('0x0'));var rimraf=require(_0xb25a('0x1'));var zipdir=require(_0xb25a('0x2'));var jsonpatch=require(_0xb25a('0x3'));var rp=require(_0xb25a('0x4'));var moment=require(_0xb25a('0x5'));var BPromise=require(_0xb25a('0x6'));var Mustache=require(_0xb25a('0x7'));var util=require(_0xb25a('0x8'));var path=require(_0xb25a('0x9'));var sox=require(_0xb25a('0xa'));var csv=require(_0xb25a('0xb'));var ejs=require(_0xb25a('0xc'));var fs=require('fs');var fs_extra=require(_0xb25a('0xd'));var _=require(_0xb25a('0xe'));var squel=require(_0xb25a('0xf'));var crypto=require(_0xb25a('0x10'));var jsforce=require(_0xb25a('0x11'));var deskjs=require(_0xb25a('0x12'));var toCsv=require(_0xb25a('0xb'));var querystring=require(_0xb25a('0x13'));var Papa=require(_0xb25a('0x14'));var Redis=require(_0xb25a('0x15'));var authService=require(_0xb25a('0x16'));var qs=require(_0xb25a('0x17'));var as=require(_0xb25a('0x18'));var hardwareService=require(_0xb25a('0x19'));var logger=require('../../config/logger')(_0xb25a('0x1a'));var utils=require(_0xb25a('0x1b'));var config=require(_0xb25a('0x1c'));var licenseUtil=require(_0xb25a('0x1d'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b36db,_0x51f00f){_0x51f00f=_0x51f00f||0xcc;return function(_0x562000){if(_0x562000){return _0x4b36db['sendStatus'](_0x51f00f);}return _0x4b36db[_0xb25a('0x1e')](_0x51f00f)[_0xb25a('0x1f')]();};}function respondWithResult(_0x354e13,_0x3f8837){_0x3f8837=_0x3f8837||0xc8;return function(_0x4a3319){if(_0x4a3319){return _0x354e13[_0xb25a('0x1e')](_0x3f8837)[_0xb25a('0x20')](_0x4a3319);}};}function respondWithFilteredResult(_0x43e151,_0x4f1c10){return function(_0xac86c1){if(_0xac86c1){var _0x2e1fec=typeof _0x4f1c10['offset']===_0xb25a('0x21')&&typeof _0x4f1c10[_0xb25a('0x22')]===_0xb25a('0x21');var _0xd880de=_0xac86c1[_0xb25a('0x23')];var _0x208159=_0x2e1fec?0x0:_0x4f1c10[_0xb25a('0x24')];var _0x33b7da=_0x2e1fec?_0xac86c1[_0xb25a('0x23')]:_0x4f1c10[_0xb25a('0x24')]+_0x4f1c10[_0xb25a('0x22')];var _0x569281;if(_0x33b7da>=_0xd880de){_0x33b7da=_0xd880de;_0x569281=0xc8;}else{_0x569281=0xce;}_0x43e151[_0xb25a('0x1e')](_0x569281);return _0x43e151[_0xb25a('0x25')]('Content-Range',_0x208159+'-'+_0x33b7da+'/'+_0xd880de)[_0xb25a('0x20')](_0xac86c1);}return null;};}function patchUpdates(_0x586317){return function(_0x22de33){try{jsonpatch[_0xb25a('0x26')](_0x22de33,_0x586317,!![]);}catch(_0x55f259){return BPromise['reject'](_0x55f259);}return _0x22de33[_0xb25a('0x27')]();};}function saveUpdates(_0x37de98,_0x647640){return function(_0x3a3ed2){if(_0x3a3ed2){return _0x3a3ed2[_0xb25a('0x28')](_0x37de98)['then'](function(_0x5d6530){return _0x5d6530;});}return null;};}function removeEntity(_0x491ac0,_0x1cf6dd){return function(_0xa103e1){if(_0xa103e1){return _0xa103e1[_0xb25a('0x29')]()['then'](function(){_0x491ac0[_0xb25a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x83da8e,_0x4c996f){return function(_0x5e17b2){if(!_0x5e17b2){_0x83da8e[_0xb25a('0x2a')](0x194);}return _0x5e17b2;};}function handleError(_0x54e94d,_0x37dbfc){_0x37dbfc=_0x37dbfc||0x1f4;return function(_0x3ee486){logger[_0xb25a('0x2b')](_0x3ee486['stack']);if(_0x3ee486[_0xb25a('0x2c')]){delete _0x3ee486[_0xb25a('0x2c')];}_0x54e94d[_0xb25a('0x1e')](_0x37dbfc)[_0xb25a('0x2d')](_0x3ee486);};}exports['index']=function(_0x51c3ed,_0x4b0bbf){var _0x1f4298={},_0x1ca885={},_0x1bc7a4={'count':0x0,'rows':[]};var _0x54cb25=_[_0xb25a('0x2e')](db['SalesforceConfiguration'][_0xb25a('0x2f')],function(_0x2b30b4){return{'name':_0x2b30b4[_0xb25a('0x30')],'type':_0x2b30b4[_0xb25a('0x31')]['key']};});_0x1ca885[_0xb25a('0x32')]=_[_0xb25a('0x2e')](_0x54cb25,_0xb25a('0x2c'));_0x1ca885[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x51c3ed[_0xb25a('0x33')]);_0x1ca885[_0xb25a('0x35')]=_[_0xb25a('0x36')](_0x1ca885[_0xb25a('0x32')],_0x1ca885['query']);_0x1f4298[_0xb25a('0x37')]=_[_0xb25a('0x36')](_0x1ca885['model'],qs['fields'](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x38')]));_0x1f4298['attributes']=_0x1f4298[_0xb25a('0x37')][_0xb25a('0x39')]?_0x1f4298['attributes']:_0x1ca885[_0xb25a('0x32')];if(!_0x51c3ed['query']['hasOwnProperty'](_0xb25a('0x3a'))){_0x1f4298['limit']=qs[_0xb25a('0x22')](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x22')]);_0x1f4298[_0xb25a('0x24')]=qs['offset'](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x24')]);}_0x1f4298[_0xb25a('0x3b')]=qs[_0xb25a('0x3c')](_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x3c')]);_0x1f4298[_0xb25a('0x3d')]=qs[_0xb25a('0x35')](_[_0xb25a('0x3e')](_0x51c3ed['query'],_0x1ca885[_0xb25a('0x35')]),_0x54cb25);if(_0x51c3ed[_0xb25a('0x33')]['filter']){_0x1f4298[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0x1f4298[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0x54cb25,function(_0x387bd8){if(_0x387bd8[_0xb25a('0x31')]!==_0xb25a('0x40')){var _0x1a1fb1={};_0x1a1fb1[_0x387bd8[_0xb25a('0x2c')]]={'$like':'%'+_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x1a1fb1;}})});}_0x1f4298=_[_0xb25a('0x3f')]({},_0x1f4298,_0x51c3ed['options']);var _0x2f2246={'where':_0x1f4298['where']};return db[_0xb25a('0x42')]['count'](_0x2f2246)[_0xb25a('0x43')](function(_0x3c6a2a){_0x1bc7a4[_0xb25a('0x23')]=_0x3c6a2a;if(_0x51c3ed[_0xb25a('0x33')][_0xb25a('0x44')]){_0x1f4298['include']=[{'all':!![]}];}return db[_0xb25a('0x42')][_0xb25a('0x45')](_0x1f4298);})[_0xb25a('0x43')](function(_0xe5f90e){_0x1bc7a4['rows']=_0xe5f90e;return _0x1bc7a4;})[_0xb25a('0x43')](respondWithFilteredResult(_0x4b0bbf,_0x1f4298))['catch'](handleError(_0x4b0bbf,null));};exports[_0xb25a('0x46')]=function(_0x408765,_0x334132){var _0x4455b1={'raw':![],'where':{'id':_0x408765[_0xb25a('0x47')]['id']}},_0x59fbf8={};_0x59fbf8[_0xb25a('0x32')]=_['keys'](db[_0xb25a('0x42')][_0xb25a('0x2f')]);_0x59fbf8['query']=_[_0xb25a('0x34')](_0x408765['query']);_0x59fbf8['filters']=_['intersection'](_0x59fbf8['model'],_0x59fbf8[_0xb25a('0x33')]);_0x4455b1[_0xb25a('0x37')]=_[_0xb25a('0x36')](_0x59fbf8['model'],qs[_0xb25a('0x38')](_0x408765[_0xb25a('0x33')][_0xb25a('0x38')]));_0x4455b1[_0xb25a('0x37')]=_0x4455b1[_0xb25a('0x37')]['length']?_0x4455b1[_0xb25a('0x37')]:_0x59fbf8[_0xb25a('0x32')];if(_0x408765[_0xb25a('0x33')][_0xb25a('0x44')]){_0x4455b1['include']=[{'all':!![]}];}_0x4455b1=_[_0xb25a('0x3f')]({},_0x4455b1,_0x408765[_0xb25a('0x48')]);return db['SalesforceConfiguration'][_0xb25a('0x49')](_0x4455b1)[_0xb25a('0x43')](handleEntityNotFound(_0x334132,null))[_0xb25a('0x43')](respondWithResult(_0x334132,null))[_0xb25a('0x4a')](handleError(_0x334132,null));};exports[_0xb25a('0x4b')]=function(_0xbd8d4a,_0x582b70){return db[_0xb25a('0x42')][_0xb25a('0x4b')](_0xbd8d4a[_0xb25a('0x4c')],{})[_0xb25a('0x43')](respondWithResult(_0x582b70,0xc9))[_0xb25a('0x4a')](handleError(_0x582b70,null));};exports[_0xb25a('0x28')]=function(_0x16316e,_0x4b8281){if(_0x16316e['body']['id']){delete _0x16316e[_0xb25a('0x4c')]['id'];}return db[_0xb25a('0x42')]['find']({'where':{'id':_0x16316e['params']['id']}})['then'](handleEntityNotFound(_0x4b8281,null))[_0xb25a('0x43')](saveUpdates(_0x16316e['body'],null))[_0xb25a('0x43')](respondWithResult(_0x4b8281,null))[_0xb25a('0x4a')](handleError(_0x4b8281,null));};exports[_0xb25a('0x29')]=function(_0x503040,_0x8da82b){return db[_0xb25a('0x42')]['find']({'where':{'id':_0x503040[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x8da82b,null))[_0xb25a('0x43')](removeEntity(_0x8da82b,null))[_0xb25a('0x4a')](handleError(_0x8da82b,null));};exports['getFields']=function(_0x80c025,_0x20a1f0,_0x3645f1){var _0xcc74b4={};var _0x4835dc={};var _0x59d4ec;var _0x337a38;return db[_0xb25a('0x42')][_0xb25a('0x4d')]({'where':{'id':_0x80c025[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x20a1f0,null))[_0xb25a('0x43')](function(_0x1a9f89){if(_0x1a9f89){_0x59d4ec=_0x1a9f89;_0x4835dc['model']=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x4835dc[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x80c025[_0xb25a('0x33')]);_0x4835dc[_0xb25a('0x35')]=_['intersection'](_0x4835dc['model'],_0x4835dc[_0xb25a('0x33')]);_0xcc74b4['attributes']=_['intersection'](_0x4835dc[_0xb25a('0x32')],qs[_0xb25a('0x38')](_0x80c025['query'][_0xb25a('0x38')]));_0xcc74b4[_0xb25a('0x37')]=_0xcc74b4[_0xb25a('0x37')][_0xb25a('0x39')]?_0xcc74b4['attributes']:_0x4835dc['model'];_0xcc74b4[_0xb25a('0x3b')]=qs[_0xb25a('0x3c')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x3c')]);_0xcc74b4[_0xb25a('0x3d')]=qs['filters'](_['pick'](_0x80c025[_0xb25a('0x33')],_0x4835dc[_0xb25a('0x35')]));if(_0x80c025[_0xb25a('0x33')][_0xb25a('0x41')]){_0xcc74b4[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0xcc74b4[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0xcc74b4[_0xb25a('0x37')],function(_0x1b3d0c){var _0x44e3c3={};_0x44e3c3[_0x1b3d0c]={'$like':'%'+_0x80c025[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x44e3c3;})});}_0xcc74b4=_[_0xb25a('0x3f')]({},_0xcc74b4,_0x80c025['options']);return _0x59d4ec['getFields'](_0xcc74b4);}})['then'](function(_0x4f613c){if(_0x4f613c){_0x337a38=_0x4f613c[_0xb25a('0x39')];if(!_0x80c025[_0xb25a('0x33')][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0xcc74b4[_0xb25a('0x22')]=qs[_0xb25a('0x22')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x22')]);_0xcc74b4['offset']=qs[_0xb25a('0x24')](_0x80c025[_0xb25a('0x33')][_0xb25a('0x24')]);}return _0x59d4ec[_0xb25a('0x50')](_0xcc74b4);}})[_0xb25a('0x43')](function(_0xe631f2){if(_0xe631f2){return _0xe631f2?{'count':_0x337a38,'rows':_0xe631f2}:null;}})['then'](respondWithResult(_0x20a1f0,null))[_0xb25a('0x4a')](handleError(_0x20a1f0,null));};exports[_0xb25a('0x51')]=function(_0x592c05,_0x2d00ad,_0x2aa8bb){var _0x1f04c9={};var _0x58ca26={};var _0x11278d;var _0x5b8805;return db['SalesforceConfiguration'][_0xb25a('0x4d')]({'where':{'id':_0x592c05[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x2d00ad,null))['then'](function(_0x149e58){if(_0x149e58){_0x11278d=_0x149e58;_0x58ca26[_0xb25a('0x32')]=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x58ca26[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x592c05[_0xb25a('0x33')]);_0x58ca26[_0xb25a('0x35')]=_['intersection'](_0x58ca26[_0xb25a('0x32')],_0x58ca26[_0xb25a('0x33')]);_0x1f04c9[_0xb25a('0x37')]=_['intersection'](_0x58ca26['model'],qs['fields'](_0x592c05[_0xb25a('0x33')]['fields']));_0x1f04c9['attributes']=_0x1f04c9['attributes'][_0xb25a('0x39')]?_0x1f04c9[_0xb25a('0x37')]:_0x58ca26[_0xb25a('0x32')];_0x1f04c9[_0xb25a('0x3b')]=qs['sort'](_0x592c05[_0xb25a('0x33')][_0xb25a('0x3c')]);_0x1f04c9['where']=qs[_0xb25a('0x35')](_['pick'](_0x592c05[_0xb25a('0x33')],_0x58ca26[_0xb25a('0x35')]));if(_0x592c05[_0xb25a('0x33')][_0xb25a('0x41')]){_0x1f04c9[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0x1f04c9[_0xb25a('0x3d')],{'$or':_[_0xb25a('0x2e')](_0x1f04c9[_0xb25a('0x37')],function(_0x1f57ee){var _0x1d7930={};_0x1d7930[_0x1f57ee]={'$like':'%'+_0x592c05[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x1d7930;})});}_0x1f04c9=_[_0xb25a('0x3f')]({},_0x1f04c9,_0x592c05[_0xb25a('0x48')]);return _0x11278d[_0xb25a('0x51')](_0x1f04c9);}})[_0xb25a('0x43')](function(_0x5ef985){if(_0x5ef985){_0x5b8805=_0x5ef985[_0xb25a('0x39')];if(!_0x592c05[_0xb25a('0x33')][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0x1f04c9[_0xb25a('0x22')]=qs[_0xb25a('0x22')](_0x592c05[_0xb25a('0x33')][_0xb25a('0x22')]);_0x1f04c9[_0xb25a('0x24')]=qs[_0xb25a('0x24')](_0x592c05[_0xb25a('0x33')][_0xb25a('0x24')]);}return _0x11278d['getSubjects'](_0x1f04c9);}})['then'](function(_0x18ad1c){if(_0x18ad1c){return _0x18ad1c?{'count':_0x5b8805,'rows':_0x18ad1c}:null;}})[_0xb25a('0x43')](respondWithResult(_0x2d00ad,null))[_0xb25a('0x4a')](handleError(_0x2d00ad,null));};exports['getDescriptions']=function(_0x521ccb,_0x232787,_0x25b414){var _0xeaacd2={};var _0x261f66={};var _0x1e5af8;var _0x8a0975;return db[_0xb25a('0x42')][_0xb25a('0x4d')]({'where':{'id':_0x521ccb[_0xb25a('0x47')]['id']}})[_0xb25a('0x43')](handleEntityNotFound(_0x232787,null))[_0xb25a('0x43')](function(_0x38fb51){if(_0x38fb51){_0x1e5af8=_0x38fb51;_0x261f66['model']=_[_0xb25a('0x34')](db[_0xb25a('0x4e')][_0xb25a('0x2f')]);_0x261f66[_0xb25a('0x33')]=_[_0xb25a('0x34')](_0x521ccb['query']);_0x261f66['filters']=_[_0xb25a('0x36')](_0x261f66[_0xb25a('0x32')],_0x261f66[_0xb25a('0x33')]);_0xeaacd2[_0xb25a('0x37')]=_['intersection'](_0x261f66['model'],qs['fields'](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x38')]));_0xeaacd2[_0xb25a('0x37')]=_0xeaacd2['attributes']['length']?_0xeaacd2[_0xb25a('0x37')]:_0x261f66[_0xb25a('0x32')];_0xeaacd2['order']=qs[_0xb25a('0x3c')](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x3c')]);_0xeaacd2[_0xb25a('0x3d')]=qs[_0xb25a('0x35')](_[_0xb25a('0x3e')](_0x521ccb['query'],_0x261f66[_0xb25a('0x35')]));if(_0x521ccb[_0xb25a('0x33')][_0xb25a('0x41')]){_0xeaacd2[_0xb25a('0x3d')]=_[_0xb25a('0x3f')](_0xeaacd2['where'],{'$or':_[_0xb25a('0x2e')](_0xeaacd2['attributes'],function(_0x40aa0d){var _0x45d7dd={};_0x45d7dd[_0x40aa0d]={'$like':'%'+_0x521ccb[_0xb25a('0x33')][_0xb25a('0x41')]+'%'};return _0x45d7dd;})});}_0xeaacd2=_[_0xb25a('0x3f')]({},_0xeaacd2,_0x521ccb[_0xb25a('0x48')]);return _0x1e5af8[_0xb25a('0x52')](_0xeaacd2);}})['then'](function(_0x16d84a){if(_0x16d84a){_0x8a0975=_0x16d84a[_0xb25a('0x39')];if(!_0x521ccb['query'][_0xb25a('0x4f')](_0xb25a('0x3a'))){_0xeaacd2['limit']=qs[_0xb25a('0x22')](_0x521ccb[_0xb25a('0x33')][_0xb25a('0x22')]);_0xeaacd2[_0xb25a('0x24')]=qs[_0xb25a('0x24')](_0x521ccb['query'][_0xb25a('0x24')]);}return _0x1e5af8[_0xb25a('0x52')](_0xeaacd2);}})[_0xb25a('0x43')](function(_0x5687b5){if(_0x5687b5){return _0x5687b5?{'count':_0x8a0975,'rows':_0x5687b5}:null;}})['then'](respondWithResult(_0x232787,null))[_0xb25a('0x4a')](handleError(_0x232787,null));};
\ No newline at end of file
+var _0x108e=['find','create','body','update','getFields','findOne','SalesforceField','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','name','send','map','SalesforceConfiguration','rawAttributes','type','key','query','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x108e,0x141));var _0xe108=function(_0x5890aa,_0x5e9acd){_0x5890aa=_0x5890aa-0x0;var _0x492ce3=_0x108e[_0x5890aa];return _0x492ce3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe108('0x0'));var zipdir=require(_0xe108('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe108('0x2'));var moment=require('moment');var BPromise=require(_0xe108('0x3'));var Mustache=require('mustache');var util=require(_0xe108('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xe108('0x5'));var ejs=require(_0xe108('0x6'));var fs=require('fs');var fs_extra=require(_0xe108('0x7'));var _=require(_0xe108('0x8'));var squel=require(_0xe108('0x9'));var crypto=require(_0xe108('0xa'));var jsforce=require(_0xe108('0xb'));var deskjs=require(_0xe108('0xc'));var toCsv=require(_0xe108('0x5'));var querystring=require('querystring');var Papa=require(_0xe108('0xd'));var Redis=require(_0xe108('0xe'));var authService=require(_0xe108('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe108('0x10'));var logger=require(_0xe108('0x11'))(_0xe108('0x12'));var utils=require('../../config/utils');var config=require(_0xe108('0x13'));var licenseUtil=require(_0xe108('0x14'));var db=require(_0xe108('0x15'))['db'];function respondWithStatusCode(_0x524ac8,_0x52966a){_0x52966a=_0x52966a||0xcc;return function(_0x5cdc8d){if(_0x5cdc8d){return _0x524ac8[_0xe108('0x16')](_0x52966a);}return _0x524ac8[_0xe108('0x17')](_0x52966a)[_0xe108('0x18')]();};}function respondWithResult(_0x590ccc,_0x5f0646){_0x5f0646=_0x5f0646||0xc8;return function(_0x5efb55){if(_0x5efb55){return _0x590ccc['status'](_0x5f0646)[_0xe108('0x19')](_0x5efb55);}};}function respondWithFilteredResult(_0x2e1dc5,_0x58a66a){return function(_0x4c61f4){if(_0x4c61f4){var _0x323b40=typeof _0x58a66a[_0xe108('0x1a')]==='undefined'&&typeof _0x58a66a[_0xe108('0x1b')]==='undefined';var _0x33ee75=_0x4c61f4[_0xe108('0x1c')];var _0x15fd0a=_0x323b40?0x0:_0x58a66a[_0xe108('0x1a')];var _0x27c06d=_0x323b40?_0x4c61f4[_0xe108('0x1c')]:_0x58a66a[_0xe108('0x1a')]+_0x58a66a[_0xe108('0x1b')];var _0x14beeb;if(_0x27c06d>=_0x33ee75){_0x27c06d=_0x33ee75;_0x14beeb=0xc8;}else{_0x14beeb=0xce;}_0x2e1dc5['status'](_0x14beeb);return _0x2e1dc5[_0xe108('0x1d')](_0xe108('0x1e'),_0x15fd0a+'-'+_0x27c06d+'/'+_0x33ee75)[_0xe108('0x19')](_0x4c61f4);}return null;};}function patchUpdates(_0x4d3434){return function(_0x27834f){try{jsonpatch[_0xe108('0x1f')](_0x27834f,_0x4d3434,!![]);}catch(_0x58d64f){return BPromise[_0xe108('0x20')](_0x58d64f);}return _0x27834f[_0xe108('0x21')]();};}function saveUpdates(_0xefe386,_0x4091cd){return function(_0x434aee){if(_0x434aee){return _0x434aee['update'](_0xefe386)['then'](function(_0x136124){return _0x136124;});}return null;};}function removeEntity(_0x15dd42,_0x4bb055){return function(_0x4dd0e8){if(_0x4dd0e8){return _0x4dd0e8[_0xe108('0x22')]()[_0xe108('0x23')](function(){_0x15dd42['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f42e6,_0x2825ca){return function(_0x1992b5){if(!_0x1992b5){_0x1f42e6[_0xe108('0x16')](0x194);}return _0x1992b5;};}function handleError(_0x275370,_0x6f9087){_0x6f9087=_0x6f9087||0x1f4;return function(_0xa24664){logger[_0xe108('0x24')](_0xa24664['stack']);if(_0xa24664['name']){delete _0xa24664[_0xe108('0x25')];}_0x275370[_0xe108('0x17')](_0x6f9087)[_0xe108('0x26')](_0xa24664);};}exports['index']=function(_0x4521b2,_0x33c973){var _0x21f37d={},_0x3e0b85={},_0x4e5da4={'count':0x0,'rows':[]};var _0x4b736e=_[_0xe108('0x27')](db[_0xe108('0x28')][_0xe108('0x29')],function(_0x4f9df9){return{'name':_0x4f9df9['fieldName'],'type':_0x4f9df9[_0xe108('0x2a')][_0xe108('0x2b')]};});_0x3e0b85['model']=_[_0xe108('0x27')](_0x4b736e,'name');_0x3e0b85[_0xe108('0x2c')]=_['keys'](_0x4521b2[_0xe108('0x2c')]);_0x3e0b85['filters']=_[_0xe108('0x2d')](_0x3e0b85['model'],_0x3e0b85[_0xe108('0x2c')]);_0x21f37d['attributes']=_[_0xe108('0x2d')](_0x3e0b85['model'],qs[_0xe108('0x2e')](_0x4521b2[_0xe108('0x2c')][_0xe108('0x2e')]));_0x21f37d[_0xe108('0x2f')]=_0x21f37d[_0xe108('0x2f')][_0xe108('0x30')]?_0x21f37d[_0xe108('0x2f')]:_0x3e0b85[_0xe108('0x31')];if(!_0x4521b2['query'][_0xe108('0x32')](_0xe108('0x33'))){_0x21f37d['limit']=qs[_0xe108('0x1b')](_0x4521b2[_0xe108('0x2c')][_0xe108('0x1b')]);_0x21f37d[_0xe108('0x1a')]=qs[_0xe108('0x1a')](_0x4521b2['query']['offset']);}_0x21f37d[_0xe108('0x34')]=qs[_0xe108('0x35')](_0x4521b2[_0xe108('0x2c')][_0xe108('0x35')]);_0x21f37d['where']=qs[_0xe108('0x36')](_[_0xe108('0x37')](_0x4521b2[_0xe108('0x2c')],_0x3e0b85[_0xe108('0x36')]),_0x4b736e);if(_0x4521b2[_0xe108('0x2c')][_0xe108('0x38')]){_0x21f37d['where']=_[_0xe108('0x39')](_0x21f37d[_0xe108('0x3a')],{'$or':_[_0xe108('0x27')](_0x4b736e,function(_0x33e0d9){if(_0x33e0d9[_0xe108('0x2a')]!==_0xe108('0x3b')){var _0x13a774={};_0x13a774[_0x33e0d9['name']]={'$like':'%'+_0x4521b2[_0xe108('0x2c')][_0xe108('0x38')]+'%'};return _0x13a774;}})});}_0x21f37d=_[_0xe108('0x39')]({},_0x21f37d,_0x4521b2[_0xe108('0x3c')]);var _0x4c8dbb={'where':_0x21f37d[_0xe108('0x3a')]};return db[_0xe108('0x28')][_0xe108('0x1c')](_0x4c8dbb)[_0xe108('0x23')](function(_0x421b30){_0x4e5da4[_0xe108('0x1c')]=_0x421b30;if(_0x4521b2[_0xe108('0x2c')][_0xe108('0x3d')]){_0x21f37d['include']=[{'all':!![]}];}return db[_0xe108('0x28')][_0xe108('0x3e')](_0x21f37d);})[_0xe108('0x23')](function(_0xe996bf){_0x4e5da4[_0xe108('0x3f')]=_0xe996bf;return _0x4e5da4;})[_0xe108('0x23')](respondWithFilteredResult(_0x33c973,_0x21f37d))[_0xe108('0x40')](handleError(_0x33c973,null));};exports[_0xe108('0x41')]=function(_0x5e57aa,_0x21e6c1){var _0x150cc5={'raw':![],'where':{'id':_0x5e57aa[_0xe108('0x42')]['id']}},_0x52c8d8={};_0x52c8d8[_0xe108('0x31')]=_[_0xe108('0x43')](db[_0xe108('0x28')][_0xe108('0x29')]);_0x52c8d8[_0xe108('0x2c')]=_[_0xe108('0x43')](_0x5e57aa[_0xe108('0x2c')]);_0x52c8d8[_0xe108('0x36')]=_[_0xe108('0x2d')](_0x52c8d8[_0xe108('0x31')],_0x52c8d8[_0xe108('0x2c')]);_0x150cc5[_0xe108('0x2f')]=_[_0xe108('0x2d')](_0x52c8d8[_0xe108('0x31')],qs[_0xe108('0x2e')](_0x5e57aa['query'][_0xe108('0x2e')]));_0x150cc5[_0xe108('0x2f')]=_0x150cc5[_0xe108('0x2f')][_0xe108('0x30')]?_0x150cc5['attributes']:_0x52c8d8['model'];if(_0x5e57aa[_0xe108('0x2c')]['includeAll']){_0x150cc5[_0xe108('0x44')]=[{'all':!![]}];}_0x150cc5=_[_0xe108('0x39')]({},_0x150cc5,_0x5e57aa[_0xe108('0x3c')]);return db[_0xe108('0x28')][_0xe108('0x45')](_0x150cc5)[_0xe108('0x23')](handleEntityNotFound(_0x21e6c1,null))[_0xe108('0x23')](respondWithResult(_0x21e6c1,null))[_0xe108('0x40')](handleError(_0x21e6c1,null));};exports[_0xe108('0x46')]=function(_0x4c0dd6,_0x3211dd){return db[_0xe108('0x28')][_0xe108('0x46')](_0x4c0dd6[_0xe108('0x47')],{})[_0xe108('0x23')](respondWithResult(_0x3211dd,0xc9))['catch'](handleError(_0x3211dd,null));};exports[_0xe108('0x48')]=function(_0x2425f8,_0x4ac21b){if(_0x2425f8[_0xe108('0x47')]['id']){delete _0x2425f8[_0xe108('0x47')]['id'];}return db[_0xe108('0x28')][_0xe108('0x45')]({'where':{'id':_0x2425f8['params']['id']}})[_0xe108('0x23')](handleEntityNotFound(_0x4ac21b,null))[_0xe108('0x23')](saveUpdates(_0x2425f8[_0xe108('0x47')],null))[_0xe108('0x23')](respondWithResult(_0x4ac21b,null))['catch'](handleError(_0x4ac21b,null));};exports[_0xe108('0x22')]=function(_0x182652,_0x56febd){return db[_0xe108('0x28')][_0xe108('0x45')]({'where':{'id':_0x182652[_0xe108('0x42')]['id']}})[_0xe108('0x23')](handleEntityNotFound(_0x56febd,null))[_0xe108('0x23')](removeEntity(_0x56febd,null))[_0xe108('0x40')](handleError(_0x56febd,null));};exports[_0xe108('0x49')]=function(_0x3b4014,_0x2babf0,_0xbb82db){var _0x201b7a={};var _0x42cae0={};var _0x26b4f3;var _0x4e5736;return db[_0xe108('0x28')][_0xe108('0x4a')]({'where':{'id':_0x3b4014[_0xe108('0x42')]['id']}})[_0xe108('0x23')](handleEntityNotFound(_0x2babf0,null))['then'](function(_0x3070c9){if(_0x3070c9){_0x26b4f3=_0x3070c9;_0x42cae0['model']=_['keys'](db[_0xe108('0x4b')][_0xe108('0x29')]);_0x42cae0[_0xe108('0x2c')]=_['keys'](_0x3b4014['query']);_0x42cae0[_0xe108('0x36')]=_[_0xe108('0x2d')](_0x42cae0[_0xe108('0x31')],_0x42cae0[_0xe108('0x2c')]);_0x201b7a['attributes']=_[_0xe108('0x2d')](_0x42cae0[_0xe108('0x31')],qs[_0xe108('0x2e')](_0x3b4014['query']['fields']));_0x201b7a[_0xe108('0x2f')]=_0x201b7a[_0xe108('0x2f')]['length']?_0x201b7a[_0xe108('0x2f')]:_0x42cae0[_0xe108('0x31')];_0x201b7a[_0xe108('0x34')]=qs[_0xe108('0x35')](_0x3b4014[_0xe108('0x2c')][_0xe108('0x35')]);_0x201b7a[_0xe108('0x3a')]=qs[_0xe108('0x36')](_[_0xe108('0x37')](_0x3b4014[_0xe108('0x2c')],_0x42cae0['filters']));if(_0x3b4014[_0xe108('0x2c')][_0xe108('0x38')]){_0x201b7a[_0xe108('0x3a')]=_[_0xe108('0x39')](_0x201b7a[_0xe108('0x3a')],{'$or':_[_0xe108('0x27')](_0x201b7a[_0xe108('0x2f')],function(_0x520b56){var _0x262a80={};_0x262a80[_0x520b56]={'$like':'%'+_0x3b4014[_0xe108('0x2c')][_0xe108('0x38')]+'%'};return _0x262a80;})});}_0x201b7a=_[_0xe108('0x39')]({},_0x201b7a,_0x3b4014[_0xe108('0x3c')]);return _0x26b4f3[_0xe108('0x49')](_0x201b7a);}})['then'](function(_0x56d633){if(_0x56d633){_0x4e5736=_0x56d633[_0xe108('0x30')];if(!_0x3b4014[_0xe108('0x2c')]['hasOwnProperty'](_0xe108('0x33'))){_0x201b7a[_0xe108('0x1b')]=qs['limit'](_0x3b4014[_0xe108('0x2c')][_0xe108('0x1b')]);_0x201b7a[_0xe108('0x1a')]=qs[_0xe108('0x1a')](_0x3b4014[_0xe108('0x2c')][_0xe108('0x1a')]);}return _0x26b4f3['getFields'](_0x201b7a);}})[_0xe108('0x23')](function(_0x356607){if(_0x356607){return _0x356607?{'count':_0x4e5736,'rows':_0x356607}:null;}})['then'](respondWithResult(_0x2babf0,null))[_0xe108('0x40')](handleError(_0x2babf0,null));};exports[_0xe108('0x4c')]=function(_0x263462,_0x2d52ff,_0x2f6453){var _0x46197b={};var _0x536831={};var _0x419bd0;var _0x37834b;return db['SalesforceConfiguration'][_0xe108('0x4a')]({'where':{'id':_0x263462[_0xe108('0x42')]['id']}})[_0xe108('0x23')](handleEntityNotFound(_0x2d52ff,null))[_0xe108('0x23')](function(_0xb7d89b){if(_0xb7d89b){_0x419bd0=_0xb7d89b;_0x536831[_0xe108('0x31')]=_['keys'](db[_0xe108('0x4b')][_0xe108('0x29')]);_0x536831[_0xe108('0x2c')]=_[_0xe108('0x43')](_0x263462['query']);_0x536831[_0xe108('0x36')]=_[_0xe108('0x2d')](_0x536831[_0xe108('0x31')],_0x536831[_0xe108('0x2c')]);_0x46197b['attributes']=_[_0xe108('0x2d')](_0x536831[_0xe108('0x31')],qs[_0xe108('0x2e')](_0x263462[_0xe108('0x2c')][_0xe108('0x2e')]));_0x46197b[_0xe108('0x2f')]=_0x46197b[_0xe108('0x2f')][_0xe108('0x30')]?_0x46197b['attributes']:_0x536831[_0xe108('0x31')];_0x46197b[_0xe108('0x34')]=qs[_0xe108('0x35')](_0x263462['query'][_0xe108('0x35')]);_0x46197b[_0xe108('0x3a')]=qs['filters'](_[_0xe108('0x37')](_0x263462['query'],_0x536831[_0xe108('0x36')]));if(_0x263462[_0xe108('0x2c')][_0xe108('0x38')]){_0x46197b[_0xe108('0x3a')]=_[_0xe108('0x39')](_0x46197b['where'],{'$or':_[_0xe108('0x27')](_0x46197b[_0xe108('0x2f')],function(_0xf3bc56){var _0x328e1b={};_0x328e1b[_0xf3bc56]={'$like':'%'+_0x263462[_0xe108('0x2c')][_0xe108('0x38')]+'%'};return _0x328e1b;})});}_0x46197b=_[_0xe108('0x39')]({},_0x46197b,_0x263462[_0xe108('0x3c')]);return _0x419bd0[_0xe108('0x4c')](_0x46197b);}})['then'](function(_0x193090){if(_0x193090){_0x37834b=_0x193090[_0xe108('0x30')];if(!_0x263462[_0xe108('0x2c')][_0xe108('0x32')](_0xe108('0x33'))){_0x46197b['limit']=qs[_0xe108('0x1b')](_0x263462[_0xe108('0x2c')][_0xe108('0x1b')]);_0x46197b[_0xe108('0x1a')]=qs['offset'](_0x263462[_0xe108('0x2c')][_0xe108('0x1a')]);}return _0x419bd0[_0xe108('0x4c')](_0x46197b);}})[_0xe108('0x23')](function(_0x2d0e8f){if(_0x2d0e8f){return _0x2d0e8f?{'count':_0x37834b,'rows':_0x2d0e8f}:null;}})['then'](respondWithResult(_0x2d52ff,null))[_0xe108('0x40')](handleError(_0x2d52ff,null));};exports[_0xe108('0x4d')]=function(_0x51ad08,_0x4eec3d,_0x2cc4f7){var _0x56fc16={};var _0x5aa913={};var _0x56d152;var _0x2a00e1;return db[_0xe108('0x28')][_0xe108('0x4a')]({'where':{'id':_0x51ad08[_0xe108('0x42')]['id']}})[_0xe108('0x23')](handleEntityNotFound(_0x4eec3d,null))[_0xe108('0x23')](function(_0x1d98ab){if(_0x1d98ab){_0x56d152=_0x1d98ab;_0x5aa913['model']=_[_0xe108('0x43')](db[_0xe108('0x4b')][_0xe108('0x29')]);_0x5aa913[_0xe108('0x2c')]=_['keys'](_0x51ad08[_0xe108('0x2c')]);_0x5aa913[_0xe108('0x36')]=_['intersection'](_0x5aa913[_0xe108('0x31')],_0x5aa913[_0xe108('0x2c')]);_0x56fc16[_0xe108('0x2f')]=_[_0xe108('0x2d')](_0x5aa913[_0xe108('0x31')],qs[_0xe108('0x2e')](_0x51ad08[_0xe108('0x2c')][_0xe108('0x2e')]));_0x56fc16[_0xe108('0x2f')]=_0x56fc16[_0xe108('0x2f')]['length']?_0x56fc16['attributes']:_0x5aa913[_0xe108('0x31')];_0x56fc16[_0xe108('0x34')]=qs['sort'](_0x51ad08[_0xe108('0x2c')][_0xe108('0x35')]);_0x56fc16[_0xe108('0x3a')]=qs['filters'](_[_0xe108('0x37')](_0x51ad08[_0xe108('0x2c')],_0x5aa913[_0xe108('0x36')]));if(_0x51ad08['query']['filter']){_0x56fc16[_0xe108('0x3a')]=_[_0xe108('0x39')](_0x56fc16['where'],{'$or':_['map'](_0x56fc16[_0xe108('0x2f')],function(_0x438478){var _0x3d4d14={};_0x3d4d14[_0x438478]={'$like':'%'+_0x51ad08[_0xe108('0x2c')]['filter']+'%'};return _0x3d4d14;})});}_0x56fc16=_[_0xe108('0x39')]({},_0x56fc16,_0x51ad08[_0xe108('0x3c')]);return _0x56d152[_0xe108('0x4d')](_0x56fc16);}})[_0xe108('0x23')](function(_0x34ddcf){if(_0x34ddcf){_0x2a00e1=_0x34ddcf[_0xe108('0x30')];if(!_0x51ad08['query'][_0xe108('0x32')](_0xe108('0x33'))){_0x56fc16[_0xe108('0x1b')]=qs[_0xe108('0x1b')](_0x51ad08[_0xe108('0x2c')][_0xe108('0x1b')]);_0x56fc16['offset']=qs[_0xe108('0x1a')](_0x51ad08[_0xe108('0x2c')][_0xe108('0x1a')]);}return _0x56d152['getDescriptions'](_0x56fc16);}})['then'](function(_0x3c4e62){if(_0x3c4e62){return _0x3c4e62?{'count':_0x2a00e1,'rows':_0x3c4e62}:null;}})['then'](respondWithResult(_0x4eec3d,null))[_0xe108('0x40')](handleError(_0x4eec3d,null));};
\ No newline at end of file
index 220ad8e..0f7f787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4e=['lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','exports','define','int_salesforce_configurations'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xdd4e,0x8c));var _0xedd4=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0xdd4e[_0x6d6a66];return _0x11eb6e;};'use strict';var _=require(_0xedd4('0x0'));var util=require(_0xedd4('0x1'));var logger=require(_0xedd4('0x2'))(_0xedd4('0x3'));var moment=require(_0xedd4('0x4'));var BPromise=require('bluebird');var rp=require(_0xedd4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xedd4('0x6'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0xedd4('0x7')]=function(_0x2c95ca,_0x4adaad){return _0x2c95ca[_0xedd4('0x8')]('SalesforceConfiguration',attributes,{'tableName':_0xedd4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63cd=['path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','util','../../config/logger','api','moment'];(function(_0x305766,_0x4ed775){var _0x1d6353=function(_0x414f3c){while(--_0x414f3c){_0x305766['push'](_0x305766['shift']());}};_0x1d6353(++_0x4ed775);}(_0x63cd,0x80));var _0xd63c=function(_0x1319ab,_0x4aadf5){_0x1319ab=_0x1319ab-0x0;var _0x11d131=_0x63cd[_0x1319ab];return _0x11d131;};'use strict';var _=require('lodash');var util=require(_0xd63c('0x0'));var logger=require(_0xd63c('0x1'))(_0xd63c('0x2'));var moment=require(_0xd63c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd63c('0x4'));var rimraf=require(_0xd63c('0x5'));var config=require(_0xd63c('0x6'));var attributes=require(_0xd63c('0x7'));module[_0xd63c('0x8')]=function(_0x531ca4,_0x5cbde0){return _0x531ca4[_0xd63c('0x9')](_0xd63c('0xa'),attributes,{'tableName':_0xd63c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bd3f58..3ee8520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0249=['client','request','then','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x19d49e,_0x3300ee){var _0x9f2723=function(_0x57d6fd){while(--_0x57d6fd){_0x19d49e['push'](_0x19d49e['shift']());}};_0x9f2723(++_0x3300ee);}(_0x0249,0x8b));var _0x9024=function(_0x443866,_0x15f7de){_0x443866=_0x443866-0x0;var _0x471bb6=_0x0249[_0x443866];return _0x471bb6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9024('0x0'));var BPromise=require(_0x9024('0x1'));var rs=require(_0x9024('0x2'));var fs=require('fs');var Redis=require(_0x9024('0x3'));var db=require(_0x9024('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9024('0x5'))(_0x9024('0x6'));var config=require('../../config/environment');var jayson=require(_0x9024('0x7'));var client=jayson[_0x9024('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47e919,_0x1637c1,_0x511747){return new BPromise(function(_0x106112,_0x4eb096){return client[_0x9024('0x9')](_0x47e919,_0x511747)[_0x9024('0xa')](function(_0x31ca98){logger['info'](_0x9024('0xb'),_0x1637c1,'request\x20sent');logger[_0x9024('0xc')](_0x9024('0xd'),_0x1637c1,_0x9024('0xe'),JSON[_0x9024('0xf')](_0x31ca98));if(_0x31ca98['error']){if(_0x31ca98[_0x9024('0x10')][_0x9024('0x11')]===0x1f4){logger[_0x9024('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x1637c1,_0x31ca98['error'][_0x9024('0x12')]);return _0x4eb096(_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);}logger[_0x9024('0x10')](_0x9024('0xb'),_0x1637c1,_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);return _0x106112(_0x31ca98[_0x9024('0x10')][_0x9024('0x12')]);}else{logger['info'](_0x9024('0xb'),_0x1637c1,_0x9024('0xe'));_0x106112(_0x31ca98[_0x9024('0x13')][_0x9024('0x12')]);}})[_0x9024('0x14')](function(_0x3c2bfa){logger[_0x9024('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x1637c1,_0x3c2bfa);_0x4eb096(_0x3c2bfa);});});}
\ No newline at end of file
+var _0xf2f2=['stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xf2f2,0x84));var _0x2f2f=function(_0x10b48a,_0x1a0a3f){_0x10b48a=_0x10b48a-0x0;var _0x2c4533=_0xf2f2[_0x10b48a];return _0x2c4533;};'use strict';var _=require(_0x2f2f('0x0'));var util=require('util');var moment=require(_0x2f2f('0x1'));var BPromise=require(_0x2f2f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2f2f('0x3'));var db=require(_0x2f2f('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2f2f('0x5'));var config=require(_0x2f2f('0x6'));var jayson=require(_0x2f2f('0x7'));var client=jayson[_0x2f2f('0x8')][_0x2f2f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fa8d8,_0x5ab7fd,_0x37e19a){return new BPromise(function(_0x172b70,_0x34c1ac){return client[_0x2f2f('0xa')](_0x1fa8d8,_0x37e19a)[_0x2f2f('0xb')](function(_0x365b9c){logger['info'](_0x2f2f('0xc'),_0x5ab7fd,_0x2f2f('0xd'));logger[_0x2f2f('0xe')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x5ab7fd,_0x2f2f('0xd'),JSON[_0x2f2f('0xf')](_0x365b9c));if(_0x365b9c[_0x2f2f('0x10')]){if(_0x365b9c['error'][_0x2f2f('0x11')]===0x1f4){logger[_0x2f2f('0x10')](_0x2f2f('0xc'),_0x5ab7fd,_0x365b9c[_0x2f2f('0x10')][_0x2f2f('0x12')]);return _0x34c1ac(_0x365b9c[_0x2f2f('0x10')][_0x2f2f('0x12')]);}logger[_0x2f2f('0x10')](_0x2f2f('0xc'),_0x5ab7fd,_0x365b9c[_0x2f2f('0x10')]['message']);return _0x172b70(_0x365b9c['error'][_0x2f2f('0x12')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x5ab7fd,'request\x20sent');_0x172b70(_0x365b9c[_0x2f2f('0x13')][_0x2f2f('0x12')]);}})[_0x2f2f('0x14')](function(_0x106e97){logger[_0x2f2f('0x10')](_0x2f2f('0xc'),_0x5ab7fd,_0x106e97);_0x34c1ac(_0x106e97);});});}
\ No newline at end of file
index 857157f..2a4dfe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ad=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xb6ad,0x14d));var _0xdb6a=function(_0x4b1fd7,_0x562f01){_0x4b1fd7=_0x4b1fd7-0x0;var _0x555b16=_0xb6ad[_0x4b1fd7];return _0x555b16;};'use strict';var multer=require(_0xdb6a('0x0'));var util=require(_0xdb6a('0x1'));var path=require(_0xdb6a('0x2'));var timeout=require(_0xdb6a('0x3'));var express=require('express');var router=express[_0xdb6a('0x4')]();var fs_extra=require(_0xdb6a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdb6a('0x6'));var config=require(_0xdb6a('0x7'));var controller=require(_0xdb6a('0x8'));router[_0xdb6a('0x9')]('/',auth[_0xdb6a('0xa')](),controller[_0xdb6a('0xb')]);router['get'](_0xdb6a('0xc'),auth['isAuthenticated'](),controller[_0xdb6a('0xd')]);router[_0xdb6a('0xe')]('/',auth[_0xdb6a('0xa')](),controller[_0xdb6a('0xf')]);router[_0xdb6a('0x10')](_0xdb6a('0xc'),auth[_0xdb6a('0xa')](),controller[_0xdb6a('0x11')]);router[_0xdb6a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xdb6a('0x13')]);module[_0xdb6a('0x14')]=router;
\ No newline at end of file
+var _0x41e3=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports'];(function(_0x5bba1b,_0x30c6ff){var _0x424a30=function(_0x3a4817){while(--_0x3a4817){_0x5bba1b['push'](_0x5bba1b['shift']());}};_0x424a30(++_0x30c6ff);}(_0x41e3,0x1e0));var _0x341e=function(_0x1edb91,_0x11d20e){_0x1edb91=_0x1edb91-0x0;var _0x5f061e=_0x41e3[_0x1edb91];return _0x5f061e;};'use strict';var multer=require(_0x341e('0x0'));var util=require(_0x341e('0x1'));var path=require(_0x341e('0x2'));var timeout=require(_0x341e('0x3'));var express=require(_0x341e('0x4'));var router=express[_0x341e('0x5')]();var fs_extra=require(_0x341e('0x6'));var auth=require(_0x341e('0x7'));var interaction=require(_0x341e('0x8'));var config=require(_0x341e('0x9'));var controller=require('./intSalesforceField.controller');router[_0x341e('0xa')]('/',auth[_0x341e('0xb')](),controller['index']);router['get'](_0x341e('0xc'),auth[_0x341e('0xb')](),controller[_0x341e('0xd')]);router[_0x341e('0xe')]('/',auth[_0x341e('0xb')](),controller[_0x341e('0xf')]);router[_0x341e('0x10')](_0x341e('0xc'),auth[_0x341e('0xb')](),controller[_0x341e('0x11')]);router['delete'](_0x341e('0xc'),auth[_0x341e('0xb')](),controller[_0x341e('0x12')]);module[_0x341e('0x13')]=router;
\ No newline at end of file
index 1324b15..7da8fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9924=['exports','string','variable','picklist','STRING','customVariable'];(function(_0x350ff3,_0x2c05a8){var _0x9d68cb=function(_0x4f3d4c){while(--_0x4f3d4c){_0x350ff3['push'](_0x350ff3['shift']());}};_0x9d68cb(++_0x2c05a8);}(_0x9924,0xe4));var _0x4992=function(_0x38305d,_0x18ad6f){_0x38305d=_0x38305d-0x0;var _0x23db51=_0x9924[_0x38305d];return _0x23db51;};'use strict';var Sequelize=require('sequelize');module[_0x4992('0x0')]={'type':{'type':Sequelize['ENUM'](_0x4992('0x1'),_0x4992('0x2'),'customVariable','keyValue',_0x4992('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4992('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x4992('0x1'),_0x4992('0x2'),_0x4992('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4992('0x4')]},'variableName':{'type':Sequelize[_0x4992('0x4')]}};
\ No newline at end of file
+var _0x5890=['customVariable','keyValue','STRING','sequelize','exports','ENUM','string','variable'];(function(_0x17e45e,_0x27f922){var _0xf32d5=function(_0x18651e){while(--_0x18651e){_0x17e45e['push'](_0x17e45e['shift']());}};_0xf32d5(++_0x27f922);}(_0x5890,0x14b));var _0x0589=function(_0x516d8a,_0x4eee51){_0x516d8a=_0x516d8a-0x0;var _0x1c2c69=_0x5890[_0x516d8a];return _0x1c2c69;};'use strict';var Sequelize=require(_0x0589('0x0'));module[_0x0589('0x1')]={'type':{'type':Sequelize[_0x0589('0x2')](_0x0589('0x3'),_0x0589('0x4'),_0x0589('0x5'),_0x0589('0x6'),'picklist'),'defaultValue':_0x0589('0x3')},'content':{'type':Sequelize[_0x0589('0x7')]},'key':{'type':Sequelize[_0x0589('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x0589('0x3'),'variable',_0x0589('0x5'))},'keyContent':{'type':Sequelize[_0x0589('0x7')]},'idField':{'type':Sequelize[_0x0589('0x7')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1640da0..c40885f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ec=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SalesforceField','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','update','destroy'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x26ec,0x1e0));var _0xc26e=function(_0x13d9af,_0x48cff6){_0x13d9af=_0x13d9af-0x0;var _0xb774b6=_0x26ec[_0x13d9af];return _0xb774b6;};'use strict';var emlformat=require(_0xc26e('0x0'));var rimraf=require(_0xc26e('0x1'));var zipdir=require(_0xc26e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc26e('0x3'));var moment=require(_0xc26e('0x4'));var BPromise=require(_0xc26e('0x5'));var Mustache=require(_0xc26e('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc26e('0x7'));var csv=require(_0xc26e('0x8'));var ejs=require(_0xc26e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc26e('0xa'));var squel=require(_0xc26e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc26e('0xc'));var deskjs=require(_0xc26e('0xd'));var toCsv=require(_0xc26e('0x8'));var querystring=require(_0xc26e('0xe'));var Papa=require(_0xc26e('0xf'));var Redis=require(_0xc26e('0x10'));var authService=require(_0xc26e('0x11'));var qs=require(_0xc26e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc26e('0x13'));var logger=require(_0xc26e('0x14'))(_0xc26e('0x15'));var utils=require(_0xc26e('0x16'));var config=require(_0xc26e('0x17'));var licenseUtil=require(_0xc26e('0x18'));var db=require(_0xc26e('0x19'))['db'];function respondWithStatusCode(_0x191b64,_0xd7dcdc){_0xd7dcdc=_0xd7dcdc||0xcc;return function(_0x4f1349){if(_0x4f1349){return _0x191b64[_0xc26e('0x1a')](_0xd7dcdc);}return _0x191b64['status'](_0xd7dcdc)[_0xc26e('0x1b')]();};}function respondWithResult(_0xf8ef4c,_0x4d3482){_0x4d3482=_0x4d3482||0xc8;return function(_0x54c24b){if(_0x54c24b){return _0xf8ef4c[_0xc26e('0x1c')](_0x4d3482)['json'](_0x54c24b);}};}function respondWithFilteredResult(_0x98c1bb,_0x4f9dcf){return function(_0xf6c337){if(_0xf6c337){var _0x24125b=typeof _0x4f9dcf[_0xc26e('0x1d')]==='undefined'&&typeof _0x4f9dcf[_0xc26e('0x1e')]===_0xc26e('0x1f');var _0x4020e0=_0xf6c337['count'];var _0x503979=_0x24125b?0x0:_0x4f9dcf[_0xc26e('0x1d')];var _0x151ddb=_0x24125b?_0xf6c337[_0xc26e('0x20')]:_0x4f9dcf[_0xc26e('0x1d')]+_0x4f9dcf['limit'];var _0x4744a6;if(_0x151ddb>=_0x4020e0){_0x151ddb=_0x4020e0;_0x4744a6=0xc8;}else{_0x4744a6=0xce;}_0x98c1bb[_0xc26e('0x1c')](_0x4744a6);return _0x98c1bb[_0xc26e('0x21')](_0xc26e('0x22'),_0x503979+'-'+_0x151ddb+'/'+_0x4020e0)[_0xc26e('0x23')](_0xf6c337);}return null;};}function patchUpdates(_0x56e696){return function(_0x28e6bc){try{jsonpatch[_0xc26e('0x24')](_0x28e6bc,_0x56e696,!![]);}catch(_0x2446ca){return BPromise[_0xc26e('0x25')](_0x2446ca);}return _0x28e6bc[_0xc26e('0x26')]();};}function saveUpdates(_0x35a0c2,_0xf8e7c8){return function(_0x22542d){if(_0x22542d){return _0x22542d['update'](_0x35a0c2)[_0xc26e('0x27')](function(_0xb58b6c){return _0xb58b6c;});}return null;};}function removeEntity(_0x455380,_0x1e760c){return function(_0x19f39f){if(_0x19f39f){return _0x19f39f['destroy']()[_0xc26e('0x27')](function(){_0x455380['status'](0xcc)[_0xc26e('0x1b')]();});}};}function handleEntityNotFound(_0x282198,_0x5efd95){return function(_0x57296e){if(!_0x57296e){_0x282198[_0xc26e('0x1a')](0x194);}return _0x57296e;};}function handleError(_0x4a7b6d,_0xc52ae2){_0xc52ae2=_0xc52ae2||0x1f4;return function(_0x2ac771){logger[_0xc26e('0x28')](_0x2ac771[_0xc26e('0x29')]);if(_0x2ac771['name']){delete _0x2ac771[_0xc26e('0x2a')];}_0x4a7b6d[_0xc26e('0x1c')](_0xc52ae2)['send'](_0x2ac771);};}exports[_0xc26e('0x2b')]=function(_0x41d20a,_0x391b8f){var _0x3ea43f={},_0x4976a6={},_0x4adfda={'count':0x0,'rows':[]};var _0x36bc65=_[_0xc26e('0x2c')](db['SalesforceField'][_0xc26e('0x2d')],function(_0x5ded0c){return{'name':_0x5ded0c[_0xc26e('0x2e')],'type':_0x5ded0c[_0xc26e('0x2f')][_0xc26e('0x30')]};});_0x4976a6['model']=_['map'](_0x36bc65,_0xc26e('0x2a'));_0x4976a6[_0xc26e('0x31')]=_['keys'](_0x41d20a[_0xc26e('0x31')]);_0x4976a6[_0xc26e('0x32')]=_[_0xc26e('0x33')](_0x4976a6[_0xc26e('0x34')],_0x4976a6[_0xc26e('0x31')]);_0x3ea43f[_0xc26e('0x35')]=_['intersection'](_0x4976a6[_0xc26e('0x34')],qs[_0xc26e('0x36')](_0x41d20a['query'][_0xc26e('0x36')]));_0x3ea43f[_0xc26e('0x35')]=_0x3ea43f[_0xc26e('0x35')][_0xc26e('0x37')]?_0x3ea43f[_0xc26e('0x35')]:_0x4976a6[_0xc26e('0x34')];if(!_0x41d20a['query'][_0xc26e('0x38')](_0xc26e('0x39'))){_0x3ea43f[_0xc26e('0x1e')]=qs[_0xc26e('0x1e')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x1e')]);_0x3ea43f[_0xc26e('0x1d')]=qs[_0xc26e('0x1d')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x1d')]);}_0x3ea43f[_0xc26e('0x3a')]=qs[_0xc26e('0x3b')](_0x41d20a[_0xc26e('0x31')][_0xc26e('0x3b')]);_0x3ea43f[_0xc26e('0x3c')]=qs['filters'](_[_0xc26e('0x3d')](_0x41d20a['query'],_0x4976a6[_0xc26e('0x32')]),_0x36bc65);if(_0x41d20a['query'][_0xc26e('0x3e')]){_0x3ea43f[_0xc26e('0x3c')]=_[_0xc26e('0x3f')](_0x3ea43f['where'],{'$or':_[_0xc26e('0x2c')](_0x36bc65,function(_0xa73405){if(_0xa73405[_0xc26e('0x2f')]!==_0xc26e('0x40')){var _0x5798d7={};_0x5798d7[_0xa73405['name']]={'$like':'%'+_0x41d20a[_0xc26e('0x31')][_0xc26e('0x3e')]+'%'};return _0x5798d7;}})});}_0x3ea43f=_[_0xc26e('0x3f')]({},_0x3ea43f,_0x41d20a[_0xc26e('0x41')]);var _0x1a2f36={'where':_0x3ea43f[_0xc26e('0x3c')]};return db[_0xc26e('0x42')][_0xc26e('0x20')](_0x1a2f36)[_0xc26e('0x27')](function(_0x228be5){_0x4adfda[_0xc26e('0x20')]=_0x228be5;if(_0x41d20a['query'][_0xc26e('0x43')]){_0x3ea43f[_0xc26e('0x44')]=[{'all':!![]}];}return db[_0xc26e('0x42')][_0xc26e('0x45')](_0x3ea43f);})[_0xc26e('0x27')](function(_0x146dc4){_0x4adfda[_0xc26e('0x46')]=_0x146dc4;return _0x4adfda;})[_0xc26e('0x27')](respondWithFilteredResult(_0x391b8f,_0x3ea43f))[_0xc26e('0x47')](handleError(_0x391b8f,null));};exports[_0xc26e('0x48')]=function(_0x1ac330,_0xf523c2){var _0x324b8f={'raw':!![],'where':{'id':_0x1ac330[_0xc26e('0x49')]['id']}},_0x8d711e={};_0x8d711e[_0xc26e('0x34')]=_[_0xc26e('0x4a')](db[_0xc26e('0x42')][_0xc26e('0x2d')]);_0x8d711e['query']=_[_0xc26e('0x4a')](_0x1ac330[_0xc26e('0x31')]);_0x8d711e[_0xc26e('0x32')]=_[_0xc26e('0x33')](_0x8d711e[_0xc26e('0x34')],_0x8d711e[_0xc26e('0x31')]);_0x324b8f['attributes']=_[_0xc26e('0x33')](_0x8d711e['model'],qs[_0xc26e('0x36')](_0x1ac330['query'][_0xc26e('0x36')]));_0x324b8f[_0xc26e('0x35')]=_0x324b8f['attributes'][_0xc26e('0x37')]?_0x324b8f['attributes']:_0x8d711e[_0xc26e('0x34')];if(_0x1ac330[_0xc26e('0x31')]['includeAll']){_0x324b8f[_0xc26e('0x44')]=[{'all':!![]}];}_0x324b8f=_[_0xc26e('0x3f')]({},_0x324b8f,_0x1ac330[_0xc26e('0x41')]);return db['SalesforceField'][_0xc26e('0x4b')](_0x324b8f)['then'](handleEntityNotFound(_0xf523c2,null))[_0xc26e('0x27')](respondWithResult(_0xf523c2,null))[_0xc26e('0x47')](handleError(_0xf523c2,null));};exports[_0xc26e('0x4c')]=function(_0x4db22d,_0x3b326c){return db[_0xc26e('0x42')][_0xc26e('0x4c')](_0x4db22d[_0xc26e('0x4d')],{})[_0xc26e('0x27')](respondWithResult(_0x3b326c,0xc9))[_0xc26e('0x47')](handleError(_0x3b326c,null));};exports[_0xc26e('0x4e')]=function(_0x5f575f,_0x4d671b){if(_0x5f575f['body']['id']){delete _0x5f575f['body']['id'];}return db['SalesforceField'][_0xc26e('0x4b')]({'where':{'id':_0x5f575f[_0xc26e('0x49')]['id']}})[_0xc26e('0x27')](handleEntityNotFound(_0x4d671b,null))[_0xc26e('0x27')](saveUpdates(_0x5f575f['body'],null))[_0xc26e('0x27')](respondWithResult(_0x4d671b,null))[_0xc26e('0x47')](handleError(_0x4d671b,null));};exports[_0xc26e('0x4f')]=function(_0x314252,_0x3a4cb1){return db['SalesforceField'][_0xc26e('0x4b')]({'where':{'id':_0x314252[_0xc26e('0x49')]['id']}})[_0xc26e('0x27')](handleEntityNotFound(_0x3a4cb1,null))['then'](removeEntity(_0x3a4cb1,null))['catch'](handleError(_0x3a4cb1,null));};
\ No newline at end of file
+var _0xaf2a=['hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','SalesforceField','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields'];(function(_0x5383a4,_0x5a1438){var _0x112d3e=function(_0x22f374){while(--_0x22f374){_0x5383a4['push'](_0x5383a4['shift']());}};_0x112d3e(++_0x5a1438);}(_0xaf2a,0x1e7));var _0xaaf2=function(_0x28b8d9,_0x4aae5f){_0x28b8d9=_0x28b8d9-0x0;var _0x41f6be=_0xaf2a[_0x28b8d9];return _0x41f6be;};'use strict';var emlformat=require(_0xaaf2('0x0'));var rimraf=require(_0xaaf2('0x1'));var zipdir=require(_0xaaf2('0x2'));var jsonpatch=require(_0xaaf2('0x3'));var rp=require('request-promise');var moment=require(_0xaaf2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xaaf2('0x5'));var util=require('util');var path=require(_0xaaf2('0x6'));var sox=require(_0xaaf2('0x7'));var csv=require(_0xaaf2('0x8'));var ejs=require(_0xaaf2('0x9'));var fs=require('fs');var fs_extra=require(_0xaaf2('0xa'));var _=require(_0xaaf2('0xb'));var squel=require(_0xaaf2('0xc'));var crypto=require(_0xaaf2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xaaf2('0xe'));var toCsv=require(_0xaaf2('0x8'));var querystring=require(_0xaaf2('0xf'));var Papa=require(_0xaaf2('0x10'));var Redis=require(_0xaaf2('0x11'));var authService=require(_0xaaf2('0x12'));var qs=require(_0xaaf2('0x13'));var as=require(_0xaaf2('0x14'));var hardwareService=require(_0xaaf2('0x15'));var logger=require('../../config/logger')(_0xaaf2('0x16'));var utils=require(_0xaaf2('0x17'));var config=require(_0xaaf2('0x18'));var licenseUtil=require(_0xaaf2('0x19'));var db=require(_0xaaf2('0x1a'))['db'];function respondWithStatusCode(_0x43b1a4,_0x2eeaa2){_0x2eeaa2=_0x2eeaa2||0xcc;return function(_0x1fbb2e){if(_0x1fbb2e){return _0x43b1a4[_0xaaf2('0x1b')](_0x2eeaa2);}return _0x43b1a4[_0xaaf2('0x1c')](_0x2eeaa2)[_0xaaf2('0x1d')]();};}function respondWithResult(_0x5f0c38,_0x5e007e){_0x5e007e=_0x5e007e||0xc8;return function(_0x1d2bc8){if(_0x1d2bc8){return _0x5f0c38[_0xaaf2('0x1c')](_0x5e007e)['json'](_0x1d2bc8);}};}function respondWithFilteredResult(_0x6772bd,_0x4292ff){return function(_0x5d77e5){if(_0x5d77e5){var _0x57d075=typeof _0x4292ff[_0xaaf2('0x1e')]===_0xaaf2('0x1f')&&typeof _0x4292ff[_0xaaf2('0x20')]==='undefined';var _0x3df994=_0x5d77e5['count'];var _0x2cc6f9=_0x57d075?0x0:_0x4292ff[_0xaaf2('0x1e')];var _0xef0f9b=_0x57d075?_0x5d77e5[_0xaaf2('0x21')]:_0x4292ff[_0xaaf2('0x1e')]+_0x4292ff[_0xaaf2('0x20')];var _0x44b6a5;if(_0xef0f9b>=_0x3df994){_0xef0f9b=_0x3df994;_0x44b6a5=0xc8;}else{_0x44b6a5=0xce;}_0x6772bd[_0xaaf2('0x1c')](_0x44b6a5);return _0x6772bd[_0xaaf2('0x22')](_0xaaf2('0x23'),_0x2cc6f9+'-'+_0xef0f9b+'/'+_0x3df994)['json'](_0x5d77e5);}return null;};}function patchUpdates(_0x3e88f9){return function(_0x5ed8c9){try{jsonpatch[_0xaaf2('0x24')](_0x5ed8c9,_0x3e88f9,!![]);}catch(_0x437cdb){return BPromise[_0xaaf2('0x25')](_0x437cdb);}return _0x5ed8c9[_0xaaf2('0x26')]();};}function saveUpdates(_0x415c60,_0x4163f8){return function(_0x2131d9){if(_0x2131d9){return _0x2131d9[_0xaaf2('0x27')](_0x415c60)[_0xaaf2('0x28')](function(_0x56cbb5){return _0x56cbb5;});}return null;};}function removeEntity(_0x1e511c,_0x597ab0){return function(_0x495a7a){if(_0x495a7a){return _0x495a7a[_0xaaf2('0x29')]()[_0xaaf2('0x28')](function(){_0x1e511c[_0xaaf2('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf2c6a6,_0x1a78e5){return function(_0x494e2d){if(!_0x494e2d){_0xf2c6a6[_0xaaf2('0x1b')](0x194);}return _0x494e2d;};}function handleError(_0x211732,_0xae19fc){_0xae19fc=_0xae19fc||0x1f4;return function(_0xe92436){logger[_0xaaf2('0x2a')](_0xe92436[_0xaaf2('0x2b')]);if(_0xe92436[_0xaaf2('0x2c')]){delete _0xe92436[_0xaaf2('0x2c')];}_0x211732['status'](_0xae19fc)[_0xaaf2('0x2d')](_0xe92436);};}exports[_0xaaf2('0x2e')]=function(_0x376c2e,_0x166836){var _0x48e241={},_0x20f085={},_0x4811de={'count':0x0,'rows':[]};var _0x4d7c12=_['map'](db[_0xaaf2('0x2f')][_0xaaf2('0x30')],function(_0x445259){return{'name':_0x445259['fieldName'],'type':_0x445259[_0xaaf2('0x31')][_0xaaf2('0x32')]};});_0x20f085[_0xaaf2('0x33')]=_[_0xaaf2('0x34')](_0x4d7c12,_0xaaf2('0x2c'));_0x20f085[_0xaaf2('0x35')]=_[_0xaaf2('0x36')](_0x376c2e[_0xaaf2('0x35')]);_0x20f085[_0xaaf2('0x37')]=_[_0xaaf2('0x38')](_0x20f085[_0xaaf2('0x33')],_0x20f085[_0xaaf2('0x35')]);_0x48e241[_0xaaf2('0x39')]=_[_0xaaf2('0x38')](_0x20f085[_0xaaf2('0x33')],qs[_0xaaf2('0x3a')](_0x376c2e[_0xaaf2('0x35')][_0xaaf2('0x3a')]));_0x48e241['attributes']=_0x48e241[_0xaaf2('0x39')]['length']?_0x48e241[_0xaaf2('0x39')]:_0x20f085[_0xaaf2('0x33')];if(!_0x376c2e['query'][_0xaaf2('0x3b')]('nolimit')){_0x48e241[_0xaaf2('0x20')]=qs[_0xaaf2('0x20')](_0x376c2e[_0xaaf2('0x35')][_0xaaf2('0x20')]);_0x48e241[_0xaaf2('0x1e')]=qs[_0xaaf2('0x1e')](_0x376c2e[_0xaaf2('0x35')][_0xaaf2('0x1e')]);}_0x48e241[_0xaaf2('0x3c')]=qs[_0xaaf2('0x3d')](_0x376c2e['query']['sort']);_0x48e241[_0xaaf2('0x3e')]=qs[_0xaaf2('0x37')](_[_0xaaf2('0x3f')](_0x376c2e[_0xaaf2('0x35')],_0x20f085[_0xaaf2('0x37')]),_0x4d7c12);if(_0x376c2e['query'][_0xaaf2('0x40')]){_0x48e241[_0xaaf2('0x3e')]=_[_0xaaf2('0x41')](_0x48e241[_0xaaf2('0x3e')],{'$or':_['map'](_0x4d7c12,function(_0x92d3cb){if(_0x92d3cb[_0xaaf2('0x31')]!==_0xaaf2('0x42')){var _0x11902f={};_0x11902f[_0x92d3cb[_0xaaf2('0x2c')]]={'$like':'%'+_0x376c2e['query'][_0xaaf2('0x40')]+'%'};return _0x11902f;}})});}_0x48e241=_[_0xaaf2('0x41')]({},_0x48e241,_0x376c2e[_0xaaf2('0x43')]);var _0x57a91a={'where':_0x48e241[_0xaaf2('0x3e')]};return db[_0xaaf2('0x2f')][_0xaaf2('0x21')](_0x57a91a)[_0xaaf2('0x28')](function(_0x230514){_0x4811de[_0xaaf2('0x21')]=_0x230514;if(_0x376c2e['query'][_0xaaf2('0x44')]){_0x48e241[_0xaaf2('0x45')]=[{'all':!![]}];}return db[_0xaaf2('0x2f')]['findAll'](_0x48e241);})[_0xaaf2('0x28')](function(_0x502e21){_0x4811de[_0xaaf2('0x46')]=_0x502e21;return _0x4811de;})[_0xaaf2('0x28')](respondWithFilteredResult(_0x166836,_0x48e241))[_0xaaf2('0x47')](handleError(_0x166836,null));};exports[_0xaaf2('0x48')]=function(_0x315ac9,_0x10b013){var _0x1d6e85={'raw':!![],'where':{'id':_0x315ac9[_0xaaf2('0x49')]['id']}},_0x266d3d={};_0x266d3d[_0xaaf2('0x33')]=_[_0xaaf2('0x36')](db[_0xaaf2('0x2f')]['rawAttributes']);_0x266d3d[_0xaaf2('0x35')]=_[_0xaaf2('0x36')](_0x315ac9['query']);_0x266d3d[_0xaaf2('0x37')]=_['intersection'](_0x266d3d[_0xaaf2('0x33')],_0x266d3d[_0xaaf2('0x35')]);_0x1d6e85['attributes']=_[_0xaaf2('0x38')](_0x266d3d[_0xaaf2('0x33')],qs[_0xaaf2('0x3a')](_0x315ac9[_0xaaf2('0x35')][_0xaaf2('0x3a')]));_0x1d6e85[_0xaaf2('0x39')]=_0x1d6e85[_0xaaf2('0x39')][_0xaaf2('0x4a')]?_0x1d6e85[_0xaaf2('0x39')]:_0x266d3d['model'];if(_0x315ac9['query'][_0xaaf2('0x44')]){_0x1d6e85[_0xaaf2('0x45')]=[{'all':!![]}];}_0x1d6e85=_['merge']({},_0x1d6e85,_0x315ac9[_0xaaf2('0x43')]);return db[_0xaaf2('0x2f')][_0xaaf2('0x4b')](_0x1d6e85)[_0xaaf2('0x28')](handleEntityNotFound(_0x10b013,null))[_0xaaf2('0x28')](respondWithResult(_0x10b013,null))[_0xaaf2('0x47')](handleError(_0x10b013,null));};exports[_0xaaf2('0x4c')]=function(_0x1d8ad7,_0x490795){return db[_0xaaf2('0x2f')][_0xaaf2('0x4c')](_0x1d8ad7[_0xaaf2('0x4d')],{})[_0xaaf2('0x28')](respondWithResult(_0x490795,0xc9))['catch'](handleError(_0x490795,null));};exports['update']=function(_0xb80756,_0x17c96a){if(_0xb80756[_0xaaf2('0x4d')]['id']){delete _0xb80756[_0xaaf2('0x4d')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0xb80756[_0xaaf2('0x49')]['id']}})[_0xaaf2('0x28')](handleEntityNotFound(_0x17c96a,null))[_0xaaf2('0x28')](saveUpdates(_0xb80756[_0xaaf2('0x4d')],null))[_0xaaf2('0x28')](respondWithResult(_0x17c96a,null))['catch'](handleError(_0x17c96a,null));};exports[_0xaaf2('0x29')]=function(_0x2209b5,_0x21d5e2){return db[_0xaaf2('0x2f')][_0xaaf2('0x4b')]({'where':{'id':_0x2209b5[_0xaaf2('0x49')]['id']}})['then'](handleEntityNotFound(_0x21d5e2,null))[_0xaaf2('0x28')](removeEntity(_0x21d5e2,null))[_0xaaf2('0x47')](handleError(_0x21d5e2,null));};
\ No newline at end of file
index f622da2..c31dd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378d=['salesforce_unique_index','idField','FieldId','lodash','util','api','moment','request-promise','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x1ed761,_0x14c903){var _0x14c51c=function(_0x31cba4){while(--_0x31cba4){_0x1ed761['push'](_0x1ed761['shift']());}};_0x14c51c(++_0x14c903);}(_0x378d,0x1b3));var _0xd378=function(_0x33c2af,_0x163198){_0x33c2af=_0x33c2af-0x0;var _0x13c04a=_0x378d[_0x33c2af];return _0x13c04a;};'use strict';var _=require(_0xd378('0x0'));var util=require(_0xd378('0x1'));var logger=require('../../config/logger')(_0xd378('0x2'));var moment=require(_0xd378('0x3'));var BPromise=require('bluebird');var rp=require(_0xd378('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd378('0x5'));module[_0xd378('0x6')]=function(_0x46669d,_0x1c1b55){return _0x46669d[_0xd378('0x7')](_0xd378('0x8'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0xd378('0x9'),'fields':[_0xd378('0xa'),_0xd378('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c82=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','util','api','moment','request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x2c82,0x1c4));var _0x22c8=function(_0x2eea9a,_0x368daf){_0x2eea9a=_0x2eea9a-0x0;var _0x1ec61e=_0x2c82[_0x2eea9a];return _0x1ec61e;};'use strict';var _=require('lodash');var util=require(_0x22c8('0x0'));var logger=require('../../config/logger')(_0x22c8('0x1'));var moment=require(_0x22c8('0x2'));var BPromise=require('bluebird');var rp=require(_0x22c8('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22c8('0x4'));var config=require(_0x22c8('0x5'));var attributes=require(_0x22c8('0x6'));module[_0x22c8('0x7')]=function(_0x5699ad,_0xea21f3){return _0x5699ad[_0x22c8('0x8')](_0x22c8('0x9'),attributes,{'tableName':_0x22c8('0xa'),'paranoid':![],'indexes':[{'name':_0x22c8('0xb'),'fields':[_0x22c8('0xc'),_0x22c8('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c2966c3..eb4022c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fd=['http','request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2be93f,_0x38d08a){var _0x5f59b7=function(_0x14f1fd){while(--_0x14f1fd){_0x2be93f['push'](_0x2be93f['shift']());}};_0x5f59b7(++_0x38d08a);}(_0x49fd,0x194));var _0xd49f=function(_0x4a70ef,_0x1210ae){_0x4a70ef=_0x4a70ef-0x0;var _0x3aa3a6=_0x49fd[_0x4a70ef];return _0x3aa3a6;};'use strict';var _=require('lodash');var util=require(_0xd49f('0x0'));var moment=require(_0xd49f('0x1'));var BPromise=require(_0xd49f('0x2'));var rs=require(_0xd49f('0x3'));var fs=require('fs');var Redis=require(_0xd49f('0x4'));var db=require(_0xd49f('0x5'))['db'];var utils=require(_0xd49f('0x6'));var logger=require(_0xd49f('0x7'))(_0xd49f('0x8'));var config=require(_0xd49f('0x9'));var jayson=require(_0xd49f('0xa'));var client=jayson[_0xd49f('0xb')][_0xd49f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4418eb,_0x36876f,_0x40287b){return new BPromise(function(_0x3af8c5,_0x1230d1){return client[_0xd49f('0xd')](_0x4418eb,_0x40287b)[_0xd49f('0xe')](function(_0xaf0d4a){logger[_0xd49f('0xf')](_0xd49f('0x10'),_0x36876f,'request\x20sent');logger[_0xd49f('0x11')](_0xd49f('0x12'),_0x36876f,_0xd49f('0x13'),JSON[_0xd49f('0x14')](_0xaf0d4a));if(_0xaf0d4a[_0xd49f('0x15')]){if(_0xaf0d4a[_0xd49f('0x15')][_0xd49f('0x16')]===0x1f4){logger[_0xd49f('0x15')](_0xd49f('0x10'),_0x36876f,_0xaf0d4a['error'][_0xd49f('0x17')]);return _0x1230d1(_0xaf0d4a[_0xd49f('0x15')]['message']);}logger[_0xd49f('0x15')](_0xd49f('0x10'),_0x36876f,_0xaf0d4a['error']['message']);return _0x3af8c5(_0xaf0d4a[_0xd49f('0x15')][_0xd49f('0x17')]);}else{logger[_0xd49f('0xf')]('SalesforceField,\x20%s,\x20%s',_0x36876f,_0xd49f('0x13'));_0x3af8c5(_0xaf0d4a[_0xd49f('0x18')][_0xd49f('0x17')]);}})[_0xd49f('0x19')](function(_0x48e03e){logger['error'](_0xd49f('0x10'),_0x36876f,_0x48e03e);_0x1230d1(_0x48e03e);});});}
\ No newline at end of file
+var _0xa0e8=['stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa0e8,0xe2));var _0x8a0e=function(_0xc69fda,_0x367f93){_0xc69fda=_0xc69fda-0x0;var _0x721842=_0xa0e8[_0xc69fda];return _0x721842;};'use strict';var _=require('lodash');var util=require(_0x8a0e('0x0'));var moment=require(_0x8a0e('0x1'));var BPromise=require(_0x8a0e('0x2'));var rs=require(_0x8a0e('0x3'));var fs=require('fs');var Redis=require(_0x8a0e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8a0e('0x5'));var logger=require('../../config/logger')(_0x8a0e('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8a0e('0x7')][_0x8a0e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x24fdd7,_0x20243b,_0x1308f1){return new BPromise(function(_0x15264e,_0x158b43){return client[_0x8a0e('0x9')](_0x24fdd7,_0x1308f1)[_0x8a0e('0xa')](function(_0x406cfc){logger[_0x8a0e('0xb')](_0x8a0e('0xc'),_0x20243b,_0x8a0e('0xd'));logger[_0x8a0e('0xe')](_0x8a0e('0xf'),_0x20243b,_0x8a0e('0xd'),JSON[_0x8a0e('0x10')](_0x406cfc));if(_0x406cfc['error']){if(_0x406cfc[_0x8a0e('0x11')][_0x8a0e('0x12')]===0x1f4){logger[_0x8a0e('0x11')](_0x8a0e('0xc'),_0x20243b,_0x406cfc[_0x8a0e('0x11')][_0x8a0e('0x13')]);return _0x158b43(_0x406cfc[_0x8a0e('0x11')]['message']);}logger[_0x8a0e('0x11')](_0x8a0e('0xc'),_0x20243b,_0x406cfc[_0x8a0e('0x11')][_0x8a0e('0x13')]);return _0x15264e(_0x406cfc[_0x8a0e('0x11')]['message']);}else{logger[_0x8a0e('0xb')]('SalesforceField,\x20%s,\x20%s',_0x20243b,_0x8a0e('0xd'));_0x15264e(_0x406cfc[_0x8a0e('0x14')]['message']);}})[_0x8a0e('0x15')](function(_0xc035f1){logger[_0x8a0e('0x11')](_0x8a0e('0xc'),_0x20243b,_0xc035f1);_0x158b43(_0xc035f1);});});}
\ No newline at end of file
index a5e2c4e..1f31fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde56=['/:id','isAuthenticated','show','getConfigurations','/:id/fields','post','create','addConfiguration','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','index'];(function(_0x3cb52a,_0x5a586d){var _0x4e6bab=function(_0xd38f5){while(--_0xd38f5){_0x3cb52a['push'](_0x3cb52a['shift']());}};_0x4e6bab(++_0x5a586d);}(_0xde56,0x144));var _0x6de5=function(_0x3050ca,_0x3e36b0){_0x3050ca=_0x3050ca-0x0;var _0x1eed1d=_0xde56[_0x3050ca];return _0x1eed1d;};'use strict';var multer=require(_0x6de5('0x0'));var util=require('util');var path=require(_0x6de5('0x1'));var timeout=require(_0x6de5('0x2'));var express=require(_0x6de5('0x3'));var router=express[_0x6de5('0x4')]();var fs_extra=require(_0x6de5('0x5'));var auth=require(_0x6de5('0x6'));var interaction=require(_0x6de5('0x7'));var config=require(_0x6de5('0x8'));var controller=require(_0x6de5('0x9'));router[_0x6de5('0xa')]('/',auth['isAuthenticated'](),controller[_0x6de5('0xb')]);router[_0x6de5('0xa')](_0x6de5('0xc'),auth[_0x6de5('0xd')](),controller[_0x6de5('0xe')]);router[_0x6de5('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x6de5('0xf')]);router[_0x6de5('0xa')](_0x6de5('0x10'),auth[_0x6de5('0xd')](),controller['getFields']);router[_0x6de5('0x11')]('/',auth[_0x6de5('0xd')](),controller[_0x6de5('0x12')]);router[_0x6de5('0x11')]('/:id/configurations',auth[_0x6de5('0xd')](),controller[_0x6de5('0x13')]);router['put'](_0x6de5('0xc'),auth[_0x6de5('0xd')](),controller[_0x6de5('0x14')]);router[_0x6de5('0x15')]('/:id',auth[_0x6de5('0xd')](),controller[_0x6de5('0x16')]);module[_0x6de5('0x17')]=router;
\ No newline at end of file
+var _0xaf1b=['addConfiguration','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','post','/:id/configurations'];(function(_0x46c3f9,_0x21cc6a){var _0x2a924e=function(_0x43b689){while(--_0x43b689){_0x46c3f9['push'](_0x46c3f9['shift']());}};_0x2a924e(++_0x21cc6a);}(_0xaf1b,0x182));var _0xbaf1=function(_0x587e10,_0x4886a2){_0x587e10=_0x587e10-0x0;var _0x4f324f=_0xaf1b[_0x587e10];return _0x4f324f;};'use strict';var multer=require(_0xbaf1('0x0'));var util=require('util');var path=require(_0xbaf1('0x1'));var timeout=require(_0xbaf1('0x2'));var express=require(_0xbaf1('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbaf1('0x4'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0xbaf1('0x5')]('/',auth[_0xbaf1('0x6')](),controller[_0xbaf1('0x7')]);router['get'](_0xbaf1('0x8'),auth[_0xbaf1('0x6')](),controller[_0xbaf1('0x9')]);router[_0xbaf1('0x5')]('/:id/configurations',auth[_0xbaf1('0x6')](),controller['getConfigurations']);router[_0xbaf1('0x5')](_0xbaf1('0xa'),auth[_0xbaf1('0x6')](),controller[_0xbaf1('0xb')]);router[_0xbaf1('0xc')]('/',auth[_0xbaf1('0x6')](),controller['create']);router[_0xbaf1('0xc')](_0xbaf1('0xd'),auth[_0xbaf1('0x6')](),controller[_0xbaf1('0xe')]);router[_0xbaf1('0xf')](_0xbaf1('0x8'),auth[_0xbaf1('0x6')](),controller[_0xbaf1('0x10')]);router[_0xbaf1('0x11')](_0xbaf1('0x8'),auth['isAuthenticated'](),controller[_0xbaf1('0x12')]);module[_0xbaf1('0x13')]=router;
\ No newline at end of file
index 697147b..3d3fda2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3001=['username','remoteUri','sequelize','exports','STRING'];(function(_0x30fe8c,_0x272cb9){var _0x4f1068=function(_0x5f52c7){while(--_0x5f52c7){_0x30fe8c['push'](_0x30fe8c['shift']());}};_0x4f1068(++_0x272cb9);}(_0x3001,0x84));var _0x1300=function(_0x5ef8df,_0x4555ab){_0x5ef8df=_0x5ef8df-0x0;var _0x571d33=_0x3001[_0x5ef8df];return _0x571d33;};'use strict';var Sequelize=require(_0x1300('0x0'));module[_0x1300('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1300('0x2')]},'username':{'type':Sequelize[_0x1300('0x2')],'unique':_0x1300('0x3')},'password':{'type':Sequelize[_0x1300('0x2')]},'email':{'type':Sequelize[_0x1300('0x2')]},'remoteUri':{'type':Sequelize[_0x1300('0x2')],'unique':_0x1300('0x4')},'serverUrl':{'type':Sequelize[_0x1300('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xf495=['STRING','remoteUri','exports'];(function(_0x4a7b46,_0x5e916c){var _0x436bee=function(_0x1c98ba){while(--_0x1c98ba){_0x4a7b46['push'](_0x4a7b46['shift']());}};_0x436bee(++_0x5e916c);}(_0xf495,0x1c4));var _0x5f49=function(_0x510201,_0x318624){_0x510201=_0x510201-0x0;var _0x2259d2=_0xf495[_0x510201];return _0x2259d2;};'use strict';var Sequelize=require('sequelize');module[_0x5f49('0x0')]={'name':{'type':Sequelize[_0x5f49('0x1')]},'description':{'type':Sequelize[_0x5f49('0x1')]},'username':{'type':Sequelize[_0x5f49('0x1')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x5f49('0x1')],'unique':_0x5f49('0x2')},'serverUrl':{'type':Sequelize[_0x5f49('0x1')],'allowNull':![]}};
\ No newline at end of file
index 8d23d86..129db8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1769=['ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','name','index','map','ServicenowAccount','rawAttributes','fieldName','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','Descriptions','ServicenowField','getFields','made_sla','hold_reason','subcategory','close_code','notify','incident_state','category','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','knowledge','calendar_stc','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','time_worked','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','delivery_task','work_start','business_stc','additional_assignee_list','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','problem_id','company','reassignment_count','assigned_to','comments','sla_due','approval','comments_and_work_notes','sys_mod_count','reopen_count','escalation','upon_approval','correlation_id','location','username','password','remoteUri','serverUrl','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','all','TCL:\x20_object','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','ServiceNow\x20error:\x20','test','statusCode','stack','send','Wrong\x20credentials','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','label','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse'];(function(_0x315d8c,_0x349cd4){var _0xd2f041=function(_0x3218ba){while(--_0x3218ba){_0x315d8c['push'](_0x315d8c['shift']());}};_0xd2f041(++_0x349cd4);}(_0x1769,0xaa));var _0x9176=function(_0x159c8c,_0x452c62){_0x159c8c=_0x159c8c-0x0;var _0x42b73e=_0x1769[_0x159c8c];return _0x42b73e;};'use strict';var emlformat=require(_0x9176('0x0'));var rimraf=require(_0x9176('0x1'));var zipdir=require(_0x9176('0x2'));var jsonpatch=require(_0x9176('0x3'));var rp=require(_0x9176('0x4'));var moment=require(_0x9176('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9176('0x6'));var util=require(_0x9176('0x7'));var path=require(_0x9176('0x8'));var sox=require(_0x9176('0x9'));var csv=require(_0x9176('0xa'));var ejs=require(_0x9176('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9176('0xc'));var squel=require('squel');var crypto=require(_0x9176('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9176('0xe'));var toCsv=require(_0x9176('0xa'));var querystring=require(_0x9176('0xf'));var Papa=require(_0x9176('0x10'));var Redis=require(_0x9176('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9176('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9176('0x13'))(_0x9176('0x14'));var utils=require(_0x9176('0x15'));var config=require(_0x9176('0x16'));var licenseUtil=require(_0x9176('0x17'));var db=require(_0x9176('0x18'))['db'];var integrations=require(_0x9176('0x19'));function respondWithStatusCode(_0x15c605,_0x340b33){_0x340b33=_0x340b33||0xcc;return function(_0x322788){if(_0x322788){return _0x15c605[_0x9176('0x1a')](_0x340b33);}return _0x15c605['status'](_0x340b33)['end']();};}function respondWithResult(_0x4c75ed,_0x1ebbdd){_0x1ebbdd=_0x1ebbdd||0xc8;return function(_0x1ab949){if(_0x1ab949){return _0x4c75ed[_0x9176('0x1b')](_0x1ebbdd)['json'](_0x1ab949);}};}function respondWithFilteredResult(_0x186ace,_0x239543){return function(_0x5ca9de){if(_0x5ca9de){var _0x14501e=typeof _0x239543[_0x9176('0x1c')]==='undefined'&&typeof _0x239543[_0x9176('0x1d')]==='undefined';var _0x227c56=_0x5ca9de['count'];var _0x29585b=_0x14501e?0x0:_0x239543[_0x9176('0x1c')];var _0x175be5=_0x14501e?_0x5ca9de['count']:_0x239543[_0x9176('0x1c')]+_0x239543[_0x9176('0x1d')];var _0x8c3393;if(_0x175be5>=_0x227c56){_0x175be5=_0x227c56;_0x8c3393=0xc8;}else{_0x8c3393=0xce;}_0x186ace['status'](_0x8c3393);return _0x186ace[_0x9176('0x1e')](_0x9176('0x1f'),_0x29585b+'-'+_0x175be5+'/'+_0x227c56)[_0x9176('0x20')](_0x5ca9de);}return null;};}function patchUpdates(_0x3dddbe){return function(_0xb42913){try{jsonpatch[_0x9176('0x21')](_0xb42913,_0x3dddbe,!![]);}catch(_0xe762f4){return BPromise[_0x9176('0x22')](_0xe762f4);}return _0xb42913[_0x9176('0x23')]();};}function saveUpdates(_0x3be7a6,_0x1c9c3a){return function(_0x5651c7){if(_0x5651c7){return _0x5651c7[_0x9176('0x24')](_0x3be7a6)[_0x9176('0x25')](function(_0x54f90b){return _0x54f90b;});}return null;};}function removeEntity(_0x5ee30c,_0x341cfb){return function(_0x1448df){if(_0x1448df){return _0x1448df[_0x9176('0x26')]()[_0x9176('0x25')](function(){_0x5ee30c['status'](0xcc)[_0x9176('0x27')]();});}};}function handleEntityNotFound(_0x5c4ebc,_0x2af995){return function(_0x457858){if(!_0x457858){_0x5c4ebc[_0x9176('0x1a')](0x194);}return _0x457858;};}function handleError(_0x3851c4,_0x274132){_0x274132=_0x274132||0x1f4;return function(_0x3eb2dc){logger[_0x9176('0x28')](_0x3eb2dc['stack']);if(_0x3eb2dc[_0x9176('0x29')]){delete _0x3eb2dc[_0x9176('0x29')];}_0x3851c4['status'](_0x274132)['send'](_0x3eb2dc);};}exports[_0x9176('0x2a')]=function(_0x3add0e,_0x2142b1){var _0x3d4860={},_0x285b73={},_0x246062={'count':0x0,'rows':[]};var _0x17d951=_[_0x9176('0x2b')](db[_0x9176('0x2c')][_0x9176('0x2d')],function(_0x33b864){return{'name':_0x33b864[_0x9176('0x2e')],'type':_0x33b864['type'][_0x9176('0x2f')]};});_0x285b73['model']=_[_0x9176('0x2b')](_0x17d951,_0x9176('0x29'));_0x285b73['query']=_[_0x9176('0x30')](_0x3add0e[_0x9176('0x31')]);_0x285b73[_0x9176('0x32')]=_[_0x9176('0x33')](_0x285b73['model'],_0x285b73[_0x9176('0x31')]);_0x3d4860[_0x9176('0x34')]=_[_0x9176('0x33')](_0x285b73[_0x9176('0x35')],qs[_0x9176('0x36')](_0x3add0e[_0x9176('0x31')][_0x9176('0x36')]));_0x3d4860['attributes']=_0x3d4860['attributes'][_0x9176('0x37')]?_0x3d4860[_0x9176('0x34')]:_0x285b73[_0x9176('0x35')];if(!_0x3add0e[_0x9176('0x31')][_0x9176('0x38')](_0x9176('0x39'))){_0x3d4860[_0x9176('0x1d')]=qs[_0x9176('0x1d')](_0x3add0e[_0x9176('0x31')][_0x9176('0x1d')]);_0x3d4860[_0x9176('0x1c')]=qs[_0x9176('0x1c')](_0x3add0e[_0x9176('0x31')][_0x9176('0x1c')]);}_0x3d4860[_0x9176('0x3a')]=qs[_0x9176('0x3b')](_0x3add0e[_0x9176('0x31')][_0x9176('0x3b')]);_0x3d4860[_0x9176('0x3c')]=qs[_0x9176('0x32')](_[_0x9176('0x3d')](_0x3add0e[_0x9176('0x31')],_0x285b73[_0x9176('0x32')]),_0x17d951);if(_0x3add0e[_0x9176('0x31')][_0x9176('0x3e')]){_0x3d4860[_0x9176('0x3c')]=_[_0x9176('0x3f')](_0x3d4860[_0x9176('0x3c')],{'$or':_['map'](_0x17d951,function(_0x2b5eb2){if(_0x2b5eb2[_0x9176('0x40')]!==_0x9176('0x41')){var _0x6f1c56={};_0x6f1c56[_0x2b5eb2[_0x9176('0x29')]]={'$like':'%'+_0x3add0e[_0x9176('0x31')][_0x9176('0x3e')]+'%'};return _0x6f1c56;}})});}_0x3d4860=_[_0x9176('0x3f')]({},_0x3d4860,_0x3add0e['options']);var _0x47ee53={'where':_0x3d4860[_0x9176('0x3c')]};return db['ServicenowAccount'][_0x9176('0x42')](_0x47ee53)[_0x9176('0x25')](function(_0x188189){_0x246062['count']=_0x188189;if(_0x3add0e[_0x9176('0x31')][_0x9176('0x43')]){_0x3d4860[_0x9176('0x44')]=[{'all':!![]}];}return db[_0x9176('0x2c')][_0x9176('0x45')](_0x3d4860);})[_0x9176('0x25')](function(_0x1ce327){_0x246062[_0x9176('0x46')]=_0x1ce327;return _0x246062;})[_0x9176('0x25')](respondWithFilteredResult(_0x2142b1,_0x3d4860))[_0x9176('0x47')](handleError(_0x2142b1,null));};exports[_0x9176('0x48')]=function(_0x12478f,_0xdacac4){var _0x643592={'raw':![],'where':{'id':_0x12478f[_0x9176('0x49')]['id']}},_0x55f5f5={};_0x55f5f5['model']=_[_0x9176('0x30')](db[_0x9176('0x2c')]['rawAttributes']);_0x55f5f5[_0x9176('0x31')]=_[_0x9176('0x30')](_0x12478f[_0x9176('0x31')]);_0x55f5f5[_0x9176('0x32')]=_[_0x9176('0x33')](_0x55f5f5[_0x9176('0x35')],_0x55f5f5[_0x9176('0x31')]);_0x643592[_0x9176('0x34')]=_[_0x9176('0x33')](_0x55f5f5[_0x9176('0x35')],qs[_0x9176('0x36')](_0x12478f[_0x9176('0x31')]['fields']));_0x643592[_0x9176('0x34')]=_0x643592[_0x9176('0x34')][_0x9176('0x37')]?_0x643592[_0x9176('0x34')]:_0x55f5f5[_0x9176('0x35')];if(_0x12478f[_0x9176('0x31')][_0x9176('0x43')]){_0x643592['include']=[{'all':!![]}];}_0x643592=_['merge']({},_0x643592,_0x12478f[_0x9176('0x4a')]);return db[_0x9176('0x2c')]['find'](_0x643592)[_0x9176('0x25')](handleEntityNotFound(_0xdacac4,null))[_0x9176('0x25')](respondWithResult(_0xdacac4,null))[_0x9176('0x47')](handleError(_0xdacac4,null));};exports[_0x9176('0x4b')]=function(_0x2ae1db,_0x26a828){return db['ServicenowAccount'][_0x9176('0x4b')](_0x2ae1db['body'],{})[_0x9176('0x25')](respondWithResult(_0x26a828,0xc9))[_0x9176('0x47')](handleError(_0x26a828,null));};exports[_0x9176('0x24')]=function(_0x5143a8,_0x513976){if(_0x5143a8[_0x9176('0x4c')]['id']){delete _0x5143a8[_0x9176('0x4c')]['id'];}return db['ServicenowAccount'][_0x9176('0x4d')]({'where':{'id':_0x5143a8['params']['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x513976,null))[_0x9176('0x25')](saveUpdates(_0x5143a8[_0x9176('0x4c')],null))['then'](respondWithResult(_0x513976,null))[_0x9176('0x47')](handleError(_0x513976,null));};exports['destroy']=function(_0x5d28a5,_0x330a7e){return db[_0x9176('0x2c')][_0x9176('0x4d')]({'where':{'id':_0x5d28a5[_0x9176('0x49')]['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x330a7e,null))[_0x9176('0x25')](removeEntity(_0x330a7e,null))[_0x9176('0x47')](handleError(_0x330a7e,null));};exports[_0x9176('0x4e')]=function(_0x5bfa43,_0x25c233,_0x42780a){var _0x5d9cda={};var _0x158f05={};var _0x530df5;var _0x5d74fd;return db['ServicenowAccount'][_0x9176('0x4f')]({'where':{'id':_0x5bfa43[_0x9176('0x49')]['id']}})['then'](handleEntityNotFound(_0x25c233,null))['then'](function(_0x268fef){if(_0x268fef){_0x530df5=_0x268fef;_0x158f05['model']=_[_0x9176('0x30')](db[_0x9176('0x50')][_0x9176('0x2d')]);_0x158f05['query']=_['keys'](_0x5bfa43['query']);_0x158f05[_0x9176('0x32')]=_[_0x9176('0x33')](_0x158f05[_0x9176('0x35')],_0x158f05[_0x9176('0x31')]);_0x5d9cda['attributes']=_[_0x9176('0x33')](_0x158f05[_0x9176('0x35')],qs[_0x9176('0x36')](_0x5bfa43[_0x9176('0x31')]['fields']));_0x5d9cda[_0x9176('0x34')]=_0x5d9cda[_0x9176('0x34')][_0x9176('0x37')]?_0x5d9cda[_0x9176('0x34')]:_0x158f05[_0x9176('0x35')];_0x5d9cda[_0x9176('0x3a')]=qs[_0x9176('0x3b')](_0x5bfa43[_0x9176('0x31')][_0x9176('0x3b')]);_0x5d9cda[_0x9176('0x3c')]=qs[_0x9176('0x32')](_[_0x9176('0x3d')](_0x5bfa43[_0x9176('0x31')],_0x158f05[_0x9176('0x32')]));if(_0x5bfa43[_0x9176('0x31')][_0x9176('0x3e')]){_0x5d9cda[_0x9176('0x3c')]=_['merge'](_0x5d9cda[_0x9176('0x3c')],{'$or':_[_0x9176('0x2b')](_0x5d9cda[_0x9176('0x34')],function(_0x520585){var _0x4e83b0={};_0x4e83b0[_0x520585]={'$like':'%'+_0x5bfa43[_0x9176('0x31')][_0x9176('0x3e')]+'%'};return _0x4e83b0;})});}_0x5d9cda=_[_0x9176('0x3f')]({},_0x5d9cda,_0x5bfa43[_0x9176('0x4a')]);return _0x530df5[_0x9176('0x4e')](_0x5d9cda);}})[_0x9176('0x25')](function(_0x12df0f){if(_0x12df0f){_0x5d74fd=_0x12df0f[_0x9176('0x37')];if(!_0x5bfa43[_0x9176('0x31')]['hasOwnProperty']('nolimit')){_0x5d9cda[_0x9176('0x1d')]=qs['limit'](_0x5bfa43[_0x9176('0x31')]['limit']);_0x5d9cda[_0x9176('0x1c')]=qs[_0x9176('0x1c')](_0x5bfa43[_0x9176('0x31')][_0x9176('0x1c')]);}return _0x530df5['getConfigurations'](_0x5d9cda);}})[_0x9176('0x25')](function(_0x47a34a){if(_0x47a34a){return _0x47a34a?{'count':_0x5d74fd,'rows':_0x47a34a}:null;}})['then'](respondWithResult(_0x25c233,null))[_0x9176('0x47')](handleError(_0x25c233,null));};exports[_0x9176('0x51')]=function(_0x53aa86,_0x5ecd89,_0xd4d2e4){if(_0x53aa86[_0x9176('0x4c')]['id']){delete _0x53aa86[_0x9176('0x4c')]['id'];}return db[_0x9176('0x2c')][_0x9176('0x4f')]({'where':{'id':_0x53aa86[_0x9176('0x49')]['id']}})[_0x9176('0x25')](handleEntityNotFound(_0x5ecd89,null))[_0x9176('0x25')](function(_0x3d9a24){if(_0x3d9a24){_0x53aa86['body'][_0x9176('0x52')]=_0x3d9a24['id'];_0x53aa86['body'][_0x9176('0x53')]=integrations['getSubjects'](_0x53aa86[_0x9176('0x4c')]['channel'],_0x53aa86[_0x9176('0x4c')][_0x9176('0x40')]);_0x53aa86[_0x9176('0x4c')][_0x9176('0x54')]=integrations['getDescriptions'](_0x53aa86[_0x9176('0x4c')]['channel'],_0x53aa86[_0x9176('0x4c')][_0x9176('0x40')]);return db['ServicenowConfiguration'][_0x9176('0x4b')](_0x53aa86[_0x9176('0x4c')],{'include':[{'model':db[_0x9176('0x55')],'as':_0x9176('0x53')},{'model':db[_0x9176('0x55')],'as':_0x9176('0x54')}]});}return null;})[_0x9176('0x25')](respondWithResult(_0x5ecd89,null))[_0x9176('0x47')](handleError(_0x5ecd89,null));};exports[_0x9176('0x56')]=function(_0x3895ac,_0x35a78d,_0x1aac44){var _0x416aa3=[_0x9176('0x57'),_0x9176('0x58'),'knowledge',_0x9176('0x59'),_0x9176('0x5a'),_0x9176('0x5b'),_0x9176('0x5c'),'severity',_0x9176('0x5d')];var _0x19ef79=['parent','made_sla',_0x9176('0x5e'),_0x9176('0x5f'),_0x9176('0x60'),_0x9176('0x61'),_0x9176('0x62'),_0x9176('0x58'),_0x9176('0x63'),_0x9176('0x64'),_0x9176('0x65'),_0x9176('0x66'),_0x9176('0x67'),_0x9176('0x68'),_0x9176('0x69'),'sys_domain',_0x9176('0x6a'),'sys_created_by',_0x9176('0x6b'),_0x9176('0x3a'),_0x9176('0x6c'),'closed_at',_0x9176('0x6d'),_0x9176('0x6e'),_0x9176('0x6f'),'active',_0x9176('0x70'),_0x9176('0x71'),_0x9176('0x72'),'sys_domain_path','rfc',_0x9176('0x73'),'expected_start',_0x9176('0x74'),_0x9176('0x75'),_0x9176('0x76'),_0x9176('0x77'),_0x9176('0x78'),_0x9176('0x79'),'caller_id',_0x9176('0x7a'),_0x9176('0x59'),_0x9176('0x7b'),_0x9176('0x7c'),_0x9176('0x5a'),'correlation_display',_0x9176('0x7d'),_0x9176('0x7e'),'assignment_group',_0x9176('0x7f'),_0x9176('0x80'),'description','calendar_duration',_0x9176('0x5b'),_0x9176('0x81'),_0x9176('0x82'),_0x9176('0x83'),_0x9176('0x84'),_0x9176('0x85'),_0x9176('0x86'),_0x9176('0x87'),'reopened_by',_0x9176('0x5c'),'urgency',_0x9176('0x88'),_0x9176('0x89'),_0x9176('0x8a'),'activity_due',_0x9176('0x8b'),'severity',_0x9176('0x8c'),_0x9176('0x8d'),_0x9176('0x8e'),_0x9176('0x8f'),'due_date',_0x9176('0x90'),_0x9176('0x91'),'sys_tags',_0x9176('0x92'),_0x9176('0x93'),_0x9176('0x94'),_0x9176('0x95'),_0x9176('0x5d')];var _0x288a82='';var _0x4737e1='';var _0x2c4a0a=[];var _0x1cb9f7='';var _0xddce10='';var _0x3b126f=[];var _0x48cdb4='';var _0x1b419a='';var _0x119cd3={};var _0x172ff7='';return db['ServicenowAccount'][_0x9176('0x4f')]({'where':{'id':_0x3895ac[_0x9176('0x49')]['id']},'attributes':['id',_0x9176('0x96'),_0x9176('0x97'),'email',_0x9176('0x98'),_0x9176('0x99')]})['then'](handleEntityNotFound(_0x35a78d,null))['then'](function(_0x2b989a){if(_0x2b989a){_0x172ff7=_0x2b989a[_0x9176('0x98')];var _0x2fc8f7=_0x172ff7['slice'](-0x1);if(_0x2fc8f7==='/'){_0x172ff7=_0x172ff7[_0x9176('0x9a')](0x0,_0x172ff7[_0x9176('0x9b')](_0x2fc8f7));}_0x1b419a=util[_0x9176('0x9c')]('%s/api/now/doc/table/schema/',_0x172ff7);_0x48cdb4=util[_0x9176('0x9c')](_0x9176('0x9d'),_0x172ff7);_0x119cd3={'user':_0x2b989a[_0x9176('0x96')],'pass':_0x2b989a['password']};var _0x2f1141={'method':_0x9176('0x9e'),'uri':_0x1b419a+_0x9176('0x9f'),'auth':_0x119cd3,'json':!![]};return rp(_0x2f1141);}})[_0x9176('0x25')](function(_0x475f13){if(_0x475f13[_0x9176('0xa0')][_0x9176('0x37')]>0x0){_0x288a82=_0x475f13[_0x9176('0xa0')];}console[_0x9176('0xa1')](_0x9176('0xa2'),_0x288a82);_0x3b126f=[];_0x4737e1=Object[_0x9176('0xa3')]([],_0x288a82);_[_0x9176('0xa4')](_0x4737e1,function(_0x3b2179){return!_0x416aa3['includes'](_0x3b2179[_0x9176('0x29')]);});_0x4737e1[_0x9176('0xa5')](function(_0x2fd5ab){var _0x2530f8=createFieldObject(_0x48cdb4,_0x119cd3,_0x2fd5ab[_0x9176('0xa6')],_0x2fd5ab['name'],_0x2fd5ab['label'],![]);_0x3b126f['push'](_0x2530f8);});return Promise[_0x9176('0xa7')](_0x3b126f);})[_0x9176('0x25')](function(_0x4923d7){_0x2c4a0a=_0x4923d7;_0x1cb9f7=Object[_0x9176('0xa3')]([],_0x288a82);console[_0x9176('0xa1')](_0x9176('0xa8'),_0x288a82);_[_0x9176('0xa4')](_0x1cb9f7,function(_0x2e8673){return _0x19ef79[_0x9176('0xa9')](_0x2e8673[_0x9176('0x29')]);});console[_0x9176('0xa1')](_0x9176('0xaa'),_0x1cb9f7);_0x3b126f=[];_0x1cb9f7[_0x9176('0xa5')](function(_0x24332e){var _0x36261e=createFieldObject(_0x48cdb4,_0x119cd3,_0x24332e['internalType'],_0x24332e[_0x9176('0x29')],_0x24332e['label'],!![]);_0x3b126f[_0x9176('0xab')](_0x36261e);});return Promise[_0x9176('0xa7')](_0x3b126f);})[_0x9176('0x25')](function(_0xee4dc6){_0xddce10=_0xee4dc6;var _0x500d8c=_0x2c4a0a[_0x9176('0xac')](_0xddce10);return{'count':_0x500d8c[_0x9176('0x37')],'rows':_0x500d8c};})[_0x9176('0x25')](respondWithResult(_0x35a78d,null))[_0x9176('0x47')](function(_0x3a3dcb){console['log'](_0x9176('0xad')+_0x3a3dcb);var _0x4ac312=_0x3895ac[_0x9176('0x31')][_0x9176('0xae')]?0x1f4:_0x3a3dcb[_0x9176('0xaf')]||0x1f4;logger['error'](_0x3a3dcb[_0x9176('0xb0')]);delete _0x3a3dcb['name'];if(_0x4ac312===0x191){_0x4ac312=0x190;}_0x35a78d[_0x9176('0x1b')](_0x4ac312)[_0x9176('0xb1')](_0x3895ac[_0x9176('0x31')][_0x9176('0xae')]?{'message':_0x9176('0xb2'),'statusCode':_0x3a3dcb['statusCode']}:_0x3a3dcb);});};function createFieldObject(_0x123bf6,_0x4a967f,_0x6a0403,_0x114a32,_0x29e08f,_0x239a49){return new Promise(function(_0x481864,_0x40fb10){var _0x8705a6={'id':_0x114a32,'name':_0x29e08f,'custom':_0x239a49};if(_0x6a0403==='boolean'){_0x8705a6[_0x9176('0x4a')]=[{'name':_0x9176('0xb3'),'value':_0x9176('0xb4')},{'name':_0x9176('0xb5'),'value':_0x9176('0xb6')}];_0x481864(_0x8705a6);}else{var _0x55ab51={'method':'GET','uri':_0x123bf6+_0x9176('0xb7')+_0x114a32,'auth':_0x4a967f,'json':!![]};return rp(_0x55ab51)[_0x9176('0x25')](function(_0x33f224){var _0x22a457=[];if(_0x33f224[_0x9176('0xa0')][_0x9176('0x37')]>0x0){_0x33f224[_0x9176('0xa0')][_0x9176('0xa5')](function(_0x9afec9){if(_0x9afec9[_0x9176('0xb8')]===_0x9176('0xb6')){var _0x52fb80={'name':_0x9afec9[_0x9176('0xb9')],'value':_0x9afec9[_0x9176('0xba')]};_0x22a457[_0x9176('0xab')](_0x52fb80);}});}_0x8705a6[_0x9176('0x4a')]=_0x22a457;if(_0x8705a6['options'][_0x9176('0x37')]>0x0){_0x481864(_0x8705a6);}else{if(_0x239a49==![]){_0x481864();}else{_0x481864(_0x8705a6);}}});}});}
\ No newline at end of file
+var _0xbf6b=['includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','update','then','destroy','error','stack','name','send','map','ServicenowAccount','rawAttributes','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','getConfigurations','findOne','ServicenowConfiguration','length','pick','channel','Descriptions','getDescriptions','Subjects','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','resolved_by','sys_updated_by','opened_by','sys_domain','state','closed_at','delivery_plan','impact','active','business_service','priority','sys_domain_path','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','calendar_duration','close_notes','closed_by','follow_up','parent_incident','reopened_by','urgency','problem_id','company','activity_due','assigned_to','sla_due','approval','comments_and_work_notes','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','location','category','username','password','email','remoteUri','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','forEach','internalType','label','all','TCL:\x20_object','remove'];(function(_0x2e6495,_0x23d053){var _0x3295d5=function(_0xb590be){while(--_0xb590be){_0x2e6495['push'](_0x2e6495['shift']());}};_0x3295d5(++_0x23d053);}(_0xbf6b,0x174));var _0xbbf6=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xbf6b[_0x4f9b18];return _0x29f20c;};'use strict';var emlformat=require(_0xbbf6('0x0'));var rimraf=require(_0xbbf6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbbf6('0x2'));var rp=require(_0xbbf6('0x3'));var moment=require(_0xbbf6('0x4'));var BPromise=require(_0xbbf6('0x5'));var Mustache=require(_0xbbf6('0x6'));var util=require(_0xbbf6('0x7'));var path=require('path');var sox=require(_0xbbf6('0x8'));var csv=require(_0xbbf6('0x9'));var ejs=require(_0xbbf6('0xa'));var fs=require('fs');var fs_extra=require(_0xbbf6('0xb'));var _=require('lodash');var squel=require(_0xbbf6('0xc'));var crypto=require(_0xbbf6('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbbf6('0xe'));var Papa=require(_0xbbf6('0xf'));var Redis=require('ioredis');var authService=require(_0xbbf6('0x10'));var qs=require(_0xbbf6('0x11'));var as=require(_0xbbf6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbbf6('0x13'))['db'];var integrations=require(_0xbbf6('0x14'));function respondWithStatusCode(_0x134097,_0x4d8dd0){_0x4d8dd0=_0x4d8dd0||0xcc;return function(_0x4ab99f){if(_0x4ab99f){return _0x134097[_0xbbf6('0x15')](_0x4d8dd0);}return _0x134097['status'](_0x4d8dd0)[_0xbbf6('0x16')]();};}function respondWithResult(_0xa88724,_0x58d67f){_0x58d67f=_0x58d67f||0xc8;return function(_0x2c74b2){if(_0x2c74b2){return _0xa88724['status'](_0x58d67f)[_0xbbf6('0x17')](_0x2c74b2);}};}function respondWithFilteredResult(_0x57f2a3,_0x3bbf74){return function(_0x4afdbf){if(_0x4afdbf){var _0x495977=typeof _0x3bbf74[_0xbbf6('0x18')]===_0xbbf6('0x19')&&typeof _0x3bbf74[_0xbbf6('0x1a')]===_0xbbf6('0x19');var _0x439c73=_0x4afdbf[_0xbbf6('0x1b')];var _0x2f3b99=_0x495977?0x0:_0x3bbf74[_0xbbf6('0x18')];var _0x1c08a2=_0x495977?_0x4afdbf[_0xbbf6('0x1b')]:_0x3bbf74[_0xbbf6('0x18')]+_0x3bbf74[_0xbbf6('0x1a')];var _0x29f587;if(_0x1c08a2>=_0x439c73){_0x1c08a2=_0x439c73;_0x29f587=0xc8;}else{_0x29f587=0xce;}_0x57f2a3[_0xbbf6('0x1c')](_0x29f587);return _0x57f2a3['set']('Content-Range',_0x2f3b99+'-'+_0x1c08a2+'/'+_0x439c73)[_0xbbf6('0x17')](_0x4afdbf);}return null;};}function patchUpdates(_0x5bed2d){return function(_0x5c9fba){try{jsonpatch[_0xbbf6('0x1d')](_0x5c9fba,_0x5bed2d,!![]);}catch(_0x3eef23){return BPromise[_0xbbf6('0x1e')](_0x3eef23);}return _0x5c9fba['save']();};}function saveUpdates(_0x198083,_0x2ea26c){return function(_0x4978e9){if(_0x4978e9){return _0x4978e9[_0xbbf6('0x1f')](_0x198083)[_0xbbf6('0x20')](function(_0x2d775c){return _0x2d775c;});}return null;};}function removeEntity(_0x2a2dbe,_0x51b2ee){return function(_0xdc8d95){if(_0xdc8d95){return _0xdc8d95[_0xbbf6('0x21')]()['then'](function(){_0x2a2dbe[_0xbbf6('0x1c')](0xcc)[_0xbbf6('0x16')]();});}};}function handleEntityNotFound(_0x49add9,_0x39bc70){return function(_0x2284a6){if(!_0x2284a6){_0x49add9[_0xbbf6('0x15')](0x194);}return _0x2284a6;};}function handleError(_0x1ac58d,_0x120a6a){_0x120a6a=_0x120a6a||0x1f4;return function(_0x4343d6){logger[_0xbbf6('0x22')](_0x4343d6[_0xbbf6('0x23')]);if(_0x4343d6[_0xbbf6('0x24')]){delete _0x4343d6[_0xbbf6('0x24')];}_0x1ac58d[_0xbbf6('0x1c')](_0x120a6a)[_0xbbf6('0x25')](_0x4343d6);};}exports['index']=function(_0xf5c1c2,_0x3ca876){var _0x5f407d={},_0x47041c={},_0x49cc02={'count':0x0,'rows':[]};var _0x496c6d=_[_0xbbf6('0x26')](db[_0xbbf6('0x27')][_0xbbf6('0x28')],function(_0x2f9dc8){return{'name':_0x2f9dc8['fieldName'],'type':_0x2f9dc8['type'][_0xbbf6('0x29')]};});_0x47041c[_0xbbf6('0x2a')]=_[_0xbbf6('0x26')](_0x496c6d,_0xbbf6('0x24'));_0x47041c['query']=_[_0xbbf6('0x2b')](_0xf5c1c2[_0xbbf6('0x2c')]);_0x47041c['filters']=_[_0xbbf6('0x2d')](_0x47041c[_0xbbf6('0x2a')],_0x47041c['query']);_0x5f407d[_0xbbf6('0x2e')]=_[_0xbbf6('0x2d')](_0x47041c[_0xbbf6('0x2a')],qs[_0xbbf6('0x2f')](_0xf5c1c2['query'][_0xbbf6('0x2f')]));_0x5f407d[_0xbbf6('0x2e')]=_0x5f407d['attributes']['length']?_0x5f407d[_0xbbf6('0x2e')]:_0x47041c['model'];if(!_0xf5c1c2[_0xbbf6('0x2c')][_0xbbf6('0x30')](_0xbbf6('0x31'))){_0x5f407d['limit']=qs[_0xbbf6('0x1a')](_0xf5c1c2['query'][_0xbbf6('0x1a')]);_0x5f407d[_0xbbf6('0x18')]=qs[_0xbbf6('0x18')](_0xf5c1c2[_0xbbf6('0x2c')]['offset']);}_0x5f407d[_0xbbf6('0x32')]=qs['sort'](_0xf5c1c2['query'][_0xbbf6('0x33')]);_0x5f407d['where']=qs[_0xbbf6('0x34')](_['pick'](_0xf5c1c2['query'],_0x47041c[_0xbbf6('0x34')]),_0x496c6d);if(_0xf5c1c2[_0xbbf6('0x2c')][_0xbbf6('0x35')]){_0x5f407d[_0xbbf6('0x36')]=_[_0xbbf6('0x37')](_0x5f407d['where'],{'$or':_[_0xbbf6('0x26')](_0x496c6d,function(_0x148650){if(_0x148650[_0xbbf6('0x38')]!==_0xbbf6('0x39')){var _0x8f24fd={};_0x8f24fd[_0x148650[_0xbbf6('0x24')]]={'$like':'%'+_0xf5c1c2[_0xbbf6('0x2c')][_0xbbf6('0x35')]+'%'};return _0x8f24fd;}})});}_0x5f407d=_[_0xbbf6('0x37')]({},_0x5f407d,_0xf5c1c2[_0xbbf6('0x3a')]);var _0xa2feb9={'where':_0x5f407d['where']};return db[_0xbbf6('0x27')][_0xbbf6('0x1b')](_0xa2feb9)['then'](function(_0x360897){_0x49cc02[_0xbbf6('0x1b')]=_0x360897;if(_0xf5c1c2[_0xbbf6('0x2c')][_0xbbf6('0x3b')]){_0x5f407d[_0xbbf6('0x3c')]=[{'all':!![]}];}return db[_0xbbf6('0x27')][_0xbbf6('0x3d')](_0x5f407d);})[_0xbbf6('0x20')](function(_0x57b868){_0x49cc02['rows']=_0x57b868;return _0x49cc02;})['then'](respondWithFilteredResult(_0x3ca876,_0x5f407d))[_0xbbf6('0x3e')](handleError(_0x3ca876,null));};exports[_0xbbf6('0x3f')]=function(_0x5a10bb,_0x5c0820){var _0x534174={'raw':![],'where':{'id':_0x5a10bb[_0xbbf6('0x40')]['id']}},_0x4de066={};_0x4de066['model']=_['keys'](db[_0xbbf6('0x27')][_0xbbf6('0x28')]);_0x4de066[_0xbbf6('0x2c')]=_[_0xbbf6('0x2b')](_0x5a10bb[_0xbbf6('0x2c')]);_0x4de066[_0xbbf6('0x34')]=_[_0xbbf6('0x2d')](_0x4de066[_0xbbf6('0x2a')],_0x4de066[_0xbbf6('0x2c')]);_0x534174[_0xbbf6('0x2e')]=_['intersection'](_0x4de066[_0xbbf6('0x2a')],qs[_0xbbf6('0x2f')](_0x5a10bb[_0xbbf6('0x2c')]['fields']));_0x534174[_0xbbf6('0x2e')]=_0x534174[_0xbbf6('0x2e')]['length']?_0x534174[_0xbbf6('0x2e')]:_0x4de066['model'];if(_0x5a10bb[_0xbbf6('0x2c')][_0xbbf6('0x3b')]){_0x534174[_0xbbf6('0x3c')]=[{'all':!![]}];}_0x534174=_[_0xbbf6('0x37')]({},_0x534174,_0x5a10bb['options']);return db[_0xbbf6('0x27')][_0xbbf6('0x41')](_0x534174)[_0xbbf6('0x20')](handleEntityNotFound(_0x5c0820,null))[_0xbbf6('0x20')](respondWithResult(_0x5c0820,null))[_0xbbf6('0x3e')](handleError(_0x5c0820,null));};exports['create']=function(_0x22d23b,_0x1e18fa){return db[_0xbbf6('0x27')][_0xbbf6('0x42')](_0x22d23b['body'],{})[_0xbbf6('0x20')](respondWithResult(_0x1e18fa,0xc9))[_0xbbf6('0x3e')](handleError(_0x1e18fa,null));};exports[_0xbbf6('0x1f')]=function(_0x13d196,_0x13f049){if(_0x13d196[_0xbbf6('0x43')]['id']){delete _0x13d196['body']['id'];}return db[_0xbbf6('0x27')][_0xbbf6('0x41')]({'where':{'id':_0x13d196[_0xbbf6('0x40')]['id']}})['then'](handleEntityNotFound(_0x13f049,null))[_0xbbf6('0x20')](saveUpdates(_0x13d196[_0xbbf6('0x43')],null))[_0xbbf6('0x20')](respondWithResult(_0x13f049,null))[_0xbbf6('0x3e')](handleError(_0x13f049,null));};exports[_0xbbf6('0x21')]=function(_0x41cf8c,_0x21bd9f){return db[_0xbbf6('0x27')][_0xbbf6('0x41')]({'where':{'id':_0x41cf8c['params']['id']}})[_0xbbf6('0x20')](handleEntityNotFound(_0x21bd9f,null))[_0xbbf6('0x20')](removeEntity(_0x21bd9f,null))[_0xbbf6('0x3e')](handleError(_0x21bd9f,null));};exports[_0xbbf6('0x44')]=function(_0x5ab3f4,_0x4c658b,_0x2c3971){var _0x40b1f3={};var _0x5ceea3={};var _0x547c08;var _0x194bf3;return db['ServicenowAccount'][_0xbbf6('0x45')]({'where':{'id':_0x5ab3f4[_0xbbf6('0x40')]['id']}})[_0xbbf6('0x20')](handleEntityNotFound(_0x4c658b,null))['then'](function(_0x4dbb87){if(_0x4dbb87){_0x547c08=_0x4dbb87;_0x5ceea3[_0xbbf6('0x2a')]=_['keys'](db[_0xbbf6('0x46')][_0xbbf6('0x28')]);_0x5ceea3['query']=_['keys'](_0x5ab3f4['query']);_0x5ceea3[_0xbbf6('0x34')]=_[_0xbbf6('0x2d')](_0x5ceea3[_0xbbf6('0x2a')],_0x5ceea3[_0xbbf6('0x2c')]);_0x40b1f3[_0xbbf6('0x2e')]=_[_0xbbf6('0x2d')](_0x5ceea3[_0xbbf6('0x2a')],qs[_0xbbf6('0x2f')](_0x5ab3f4[_0xbbf6('0x2c')][_0xbbf6('0x2f')]));_0x40b1f3[_0xbbf6('0x2e')]=_0x40b1f3['attributes'][_0xbbf6('0x47')]?_0x40b1f3[_0xbbf6('0x2e')]:_0x5ceea3['model'];_0x40b1f3[_0xbbf6('0x32')]=qs[_0xbbf6('0x33')](_0x5ab3f4[_0xbbf6('0x2c')][_0xbbf6('0x33')]);_0x40b1f3[_0xbbf6('0x36')]=qs[_0xbbf6('0x34')](_[_0xbbf6('0x48')](_0x5ab3f4[_0xbbf6('0x2c')],_0x5ceea3[_0xbbf6('0x34')]));if(_0x5ab3f4[_0xbbf6('0x2c')][_0xbbf6('0x35')]){_0x40b1f3[_0xbbf6('0x36')]=_[_0xbbf6('0x37')](_0x40b1f3['where'],{'$or':_[_0xbbf6('0x26')](_0x40b1f3[_0xbbf6('0x2e')],function(_0x2d40b3){var _0x22f2b0={};_0x22f2b0[_0x2d40b3]={'$like':'%'+_0x5ab3f4[_0xbbf6('0x2c')]['filter']+'%'};return _0x22f2b0;})});}_0x40b1f3=_[_0xbbf6('0x37')]({},_0x40b1f3,_0x5ab3f4[_0xbbf6('0x3a')]);return _0x547c08[_0xbbf6('0x44')](_0x40b1f3);}})[_0xbbf6('0x20')](function(_0x919aaa){if(_0x919aaa){_0x194bf3=_0x919aaa[_0xbbf6('0x47')];if(!_0x5ab3f4[_0xbbf6('0x2c')][_0xbbf6('0x30')]('nolimit')){_0x40b1f3[_0xbbf6('0x1a')]=qs['limit'](_0x5ab3f4[_0xbbf6('0x2c')]['limit']);_0x40b1f3[_0xbbf6('0x18')]=qs['offset'](_0x5ab3f4[_0xbbf6('0x2c')][_0xbbf6('0x18')]);}return _0x547c08[_0xbbf6('0x44')](_0x40b1f3);}})['then'](function(_0x46d2f0){if(_0x46d2f0){return _0x46d2f0?{'count':_0x194bf3,'rows':_0x46d2f0}:null;}})[_0xbbf6('0x20')](respondWithResult(_0x4c658b,null))[_0xbbf6('0x3e')](handleError(_0x4c658b,null));};exports['addConfiguration']=function(_0x3ef14e,_0x3f0614,_0x5e0054){if(_0x3ef14e[_0xbbf6('0x43')]['id']){delete _0x3ef14e[_0xbbf6('0x43')]['id'];}return db[_0xbbf6('0x27')][_0xbbf6('0x45')]({'where':{'id':_0x3ef14e[_0xbbf6('0x40')]['id']}})[_0xbbf6('0x20')](handleEntityNotFound(_0x3f0614,null))[_0xbbf6('0x20')](function(_0x194273){if(_0x194273){_0x3ef14e[_0xbbf6('0x43')]['AccountId']=_0x194273['id'];_0x3ef14e[_0xbbf6('0x43')]['Subjects']=integrations['getSubjects'](_0x3ef14e[_0xbbf6('0x43')][_0xbbf6('0x49')],_0x3ef14e['body'][_0xbbf6('0x38')]);_0x3ef14e['body'][_0xbbf6('0x4a')]=integrations[_0xbbf6('0x4b')](_0x3ef14e[_0xbbf6('0x43')]['channel'],_0x3ef14e[_0xbbf6('0x43')][_0xbbf6('0x38')]);return db['ServicenowConfiguration'][_0xbbf6('0x42')](_0x3ef14e[_0xbbf6('0x43')],{'include':[{'model':db['ServicenowField'],'as':_0xbbf6('0x4c')},{'model':db[_0xbbf6('0x4d')],'as':_0xbbf6('0x4a')}]});}return null;})[_0xbbf6('0x20')](respondWithResult(_0x3f0614,null))['catch'](handleError(_0x3f0614,null));};exports[_0xbbf6('0x4e')]=function(_0x1595f5,_0x496395,_0x4780bc){var _0xbf933e=[_0xbbf6('0x4f'),_0xbbf6('0x50'),_0xbbf6('0x51'),_0xbbf6('0x52'),_0xbbf6('0x53'),_0xbbf6('0x54'),_0xbbf6('0x55'),_0xbbf6('0x56'),'category'];var _0x32aa08=[_0xbbf6('0x57'),_0xbbf6('0x4f'),_0xbbf6('0x58'),_0xbbf6('0x59'),_0xbbf6('0x5a'),_0xbbf6('0x5b'),_0xbbf6('0x5c'),_0xbbf6('0x50'),'approval_history','number',_0xbbf6('0x5d'),_0xbbf6('0x5e'),_0xbbf6('0x5f'),'user_input','sys_created_on',_0xbbf6('0x60'),_0xbbf6('0x61'),'sys_created_by',_0xbbf6('0x51'),_0xbbf6('0x32'),'calendar_stc',_0xbbf6('0x62'),'cmdb_ci',_0xbbf6('0x63'),_0xbbf6('0x64'),_0xbbf6('0x65'),'work_notes_list',_0xbbf6('0x66'),_0xbbf6('0x67'),_0xbbf6('0x68'),'rfc','time_worked',_0xbbf6('0x69'),_0xbbf6('0x6a'),_0xbbf6('0x6b'),_0xbbf6('0x6c'),'work_end',_0xbbf6('0x6d'),_0xbbf6('0x6e'),_0xbbf6('0x6f'),_0xbbf6('0x70'),'subcategory',_0xbbf6('0x71'),_0xbbf6('0x72'),_0xbbf6('0x53'),_0xbbf6('0x73'),_0xbbf6('0x74'),'work_start',_0xbbf6('0x75'),_0xbbf6('0x76'),_0xbbf6('0x77'),'description',_0xbbf6('0x78'),_0xbbf6('0x54'),'sys_class_name',_0xbbf6('0x79'),_0xbbf6('0x7a'),_0xbbf6('0x7b'),_0xbbf6('0x7c'),'sys_id','contact_type',_0xbbf6('0x7d'),'incident_state',_0xbbf6('0x7e'),_0xbbf6('0x7f'),_0xbbf6('0x80'),'reassignment_count',_0xbbf6('0x81'),_0xbbf6('0x82'),'severity','comments',_0xbbf6('0x83'),_0xbbf6('0x84'),_0xbbf6('0x85'),'due_date',_0xbbf6('0x86'),'reopen_count',_0xbbf6('0x87'),_0xbbf6('0x88'),_0xbbf6('0x89'),_0xbbf6('0x8a'),_0xbbf6('0x8b'),_0xbbf6('0x8c')];var _0x4635f9='';var _0x5564f7='';var _0x3afac5=[];var _0x3a873f='';var _0x529bea='';var _0xa7776b=[];var _0x57d377='';var _0x7e5fbd='';var _0x229fd2={};var _0x5cbc56='';return db['ServicenowAccount'][_0xbbf6('0x45')]({'where':{'id':_0x1595f5[_0xbbf6('0x40')]['id']},'attributes':['id',_0xbbf6('0x8d'),_0xbbf6('0x8e'),_0xbbf6('0x8f'),_0xbbf6('0x90'),'serverUrl']})[_0xbbf6('0x20')](handleEntityNotFound(_0x496395,null))[_0xbbf6('0x20')](function(_0x531df2){if(_0x531df2){_0x5cbc56=_0x531df2[_0xbbf6('0x90')];var _0xdeba46=_0x5cbc56[_0xbbf6('0x91')](-0x1);if(_0xdeba46==='/'){_0x5cbc56=_0x5cbc56[_0xbbf6('0x92')](0x0,_0x5cbc56[_0xbbf6('0x93')](_0xdeba46));}_0x7e5fbd=util['format'](_0xbbf6('0x94'),_0x5cbc56);_0x57d377=util[_0xbbf6('0x95')]('%s/api/now/table/',_0x5cbc56);_0x229fd2={'user':_0x531df2['username'],'pass':_0x531df2['password']};var _0x5d8d87={'method':_0xbbf6('0x96'),'uri':_0x7e5fbd+_0xbbf6('0x97'),'auth':_0x229fd2,'json':!![]};return rp(_0x5d8d87);}})['then'](function(_0x16011b){if(_0x16011b['result'][_0xbbf6('0x47')]>0x0){_0x4635f9=_0x16011b[_0xbbf6('0x98')];}console[_0xbbf6('0x99')](_0xbbf6('0x9a'),_0x4635f9);_0xa7776b=[];_0x5564f7=Object[_0xbbf6('0x9b')]([],_0x4635f9);_['remove'](_0x5564f7,function(_0x539753){return!_0xbf933e['includes'](_0x539753[_0xbbf6('0x24')]);});_0x5564f7[_0xbbf6('0x9c')](function(_0xd8e14){var _0x1a80d6=createFieldObject(_0x57d377,_0x229fd2,_0xd8e14[_0xbbf6('0x9d')],_0xd8e14['name'],_0xd8e14[_0xbbf6('0x9e')],![]);_0xa7776b['push'](_0x1a80d6);});return Promise[_0xbbf6('0x9f')](_0xa7776b);})[_0xbbf6('0x20')](function(_0x534e9b){_0x3afac5=_0x534e9b;_0x3a873f=Object[_0xbbf6('0x9b')]([],_0x4635f9);console[_0xbbf6('0x99')](_0xbbf6('0xa0'),_0x4635f9);_[_0xbbf6('0xa1')](_0x3a873f,function(_0x4f4779){return _0x32aa08[_0xbbf6('0xa2')](_0x4f4779[_0xbbf6('0x24')]);});console['log'](_0xbbf6('0xa3'),_0x3a873f);_0xa7776b=[];_0x3a873f[_0xbbf6('0x9c')](function(_0x507b93){var _0x36d3e6=createFieldObject(_0x57d377,_0x229fd2,_0x507b93['internalType'],_0x507b93['name'],_0x507b93[_0xbbf6('0x9e')],!![]);_0xa7776b[_0xbbf6('0xa4')](_0x36d3e6);});return Promise['all'](_0xa7776b);})['then'](function(_0x215c25){_0x529bea=_0x215c25;var _0x365f1d=_0x3afac5[_0xbbf6('0xa5')](_0x529bea);return{'count':_0x365f1d['length'],'rows':_0x365f1d};})[_0xbbf6('0x20')](respondWithResult(_0x496395,null))[_0xbbf6('0x3e')](function(_0x3acd9d){console['log'](_0xbbf6('0xa6')+_0x3acd9d);var _0x2ddd7e=_0x1595f5['query'][_0xbbf6('0xa7')]?0x1f4:_0x3acd9d[_0xbbf6('0xa8')]||0x1f4;logger[_0xbbf6('0x22')](_0x3acd9d['stack']);delete _0x3acd9d[_0xbbf6('0x24')];if(_0x2ddd7e===0x191){_0x2ddd7e=0x190;}_0x496395[_0xbbf6('0x1c')](_0x2ddd7e)[_0xbbf6('0x25')](_0x1595f5['query'][_0xbbf6('0xa7')]?{'message':_0xbbf6('0xa9'),'statusCode':_0x3acd9d[_0xbbf6('0xa8')]}:_0x3acd9d);});};function createFieldObject(_0x44d133,_0x8cdb27,_0x3f4ccd,_0x52e953,_0x17350f,_0x599661){return new Promise(function(_0x16fa22,_0x395830){var _0x5751b9={'id':_0x52e953,'name':_0x17350f,'custom':_0x599661};if(_0x3f4ccd===_0xbbf6('0xaa')){_0x5751b9[_0xbbf6('0x3a')]=[{'name':_0xbbf6('0xab'),'value':_0xbbf6('0xac')},{'name':_0xbbf6('0xad'),'value':_0xbbf6('0xae')}];_0x16fa22(_0x5751b9);}else{var _0x36d4ab={'method':_0xbbf6('0x96'),'uri':_0x44d133+_0xbbf6('0xaf')+_0x52e953,'auth':_0x8cdb27,'json':!![]};return rp(_0x36d4ab)[_0xbbf6('0x20')](function(_0x1f8a43){var _0x34f67d=[];if(_0x1f8a43[_0xbbf6('0x98')]['length']>0x0){_0x1f8a43[_0xbbf6('0x98')][_0xbbf6('0x9c')](function(_0x309ccc){if(_0x309ccc[_0xbbf6('0xb0')]===_0xbbf6('0xae')){var _0x1c19f8={'name':_0x309ccc[_0xbbf6('0x9e')],'value':_0x309ccc[_0xbbf6('0xb1')]};_0x34f67d['push'](_0x1c19f8);}});}_0x5751b9['options']=_0x34f67d;if(_0x5751b9['options'][_0xbbf6('0x47')]>0x0){_0x16fa22(_0x5751b9);}else{if(_0x599661==![]){_0x16fa22();}else{_0x16fa22(_0x5751b9);}}});}});}
\ No newline at end of file
index 1827be6..05a66c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x525737,_0x46ecfe){var _0x52245a=function(_0x2e1d5d){while(--_0x2e1d5d){_0x525737['push'](_0x525737['shift']());}};_0x52245a(++_0x46ecfe);}(_0xba34,0x119));var _0x4ba3=function(_0x3963fe,_0xf662bf){_0x3963fe=_0x3963fe-0x0;var _0x2c6c2c=_0xba34[_0x3963fe];return _0x2c6c2c;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));var integrations=require(_0x4ba3('0x8'));module[_0x4ba3('0x9')]=function(_0xb88621,_0xe5f99a){return _0xb88621['define'](_0x4ba3('0xa'),attributes,{'tableName':_0x4ba3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d58=['request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','bluebird'];(function(_0x3ef2d5,_0x423d46){var _0x2fefb2=function(_0x54f82f){while(--_0x54f82f){_0x3ef2d5['push'](_0x3ef2d5['shift']());}};_0x2fefb2(++_0x423d46);}(_0x5d58,0x187));var _0x85d5=function(_0xd78e7c,_0x5b6239){_0xd78e7c=_0xd78e7c-0x0;var _0x2822d6=_0x5d58[_0xd78e7c];return _0x2822d6;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x85d5('0x0'));var rp=require(_0x85d5('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0x85d5('0x4'));module[_0x85d5('0x5')]=function(_0x578fad,_0x46e7b4){return _0x578fad['define'](_0x85d5('0x6'),attributes,{'tableName':_0x85d5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f90911..9ec0e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1978=['catch','GetServicenowAccount','ServicenowAccount','options','where','limit','include','model','attributes','map','find','raw','ShowServicenowAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x427e6d,_0x9e4f29){var _0x593bf4=function(_0x35a318){while(--_0x35a318){_0x427e6d['push'](_0x427e6d['shift']());}};_0x593bf4(++_0x9e4f29);}(_0x1978,0x1a5));var _0x8197=function(_0x1ce833,_0xbd6d2c){_0x1ce833=_0x1ce833-0x0;var _0x37165c=_0x1978[_0x1ce833];return _0x37165c;};'use strict';var _=require(_0x8197('0x0'));var util=require(_0x8197('0x1'));var moment=require(_0x8197('0x2'));var BPromise=require(_0x8197('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8197('0x4'));var db=require(_0x8197('0x5'))['db'];var utils=require(_0x8197('0x6'));var logger=require(_0x8197('0x7'))(_0x8197('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8197('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a805f,_0x5b0a12,_0x3195b1){return new BPromise(function(_0x253ef2,_0x3a8be4){return client[_0x8197('0xa')](_0x3a805f,_0x3195b1)[_0x8197('0xb')](function(_0xd210a4){logger[_0x8197('0xc')](_0x8197('0xd'),_0x5b0a12,'request\x20sent');logger[_0x8197('0xe')](_0x8197('0xf'),_0x5b0a12,'request\x20sent',JSON[_0x8197('0x10')](_0xd210a4));if(_0xd210a4[_0x8197('0x11')]){if(_0xd210a4[_0x8197('0x11')][_0x8197('0x12')]===0x1f4){logger[_0x8197('0x11')](_0x8197('0xd'),_0x5b0a12,_0xd210a4[_0x8197('0x11')][_0x8197('0x13')]);return _0x3a8be4(_0xd210a4['error'][_0x8197('0x13')]);}logger[_0x8197('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x5b0a12,_0xd210a4[_0x8197('0x11')][_0x8197('0x13')]);return _0x253ef2(_0xd210a4['error'][_0x8197('0x13')]);}else{logger[_0x8197('0xc')](_0x8197('0xd'),_0x5b0a12,'request\x20sent');_0x253ef2(_0xd210a4[_0x8197('0x14')][_0x8197('0x13')]);}})[_0x8197('0x15')](function(_0x11d005){logger[_0x8197('0x11')](_0x8197('0xd'),_0x5b0a12,_0x11d005);_0x3a8be4(_0x11d005);});});}exports[_0x8197('0x16')]=function(_0x2dcd17){var _0x37dbde=this;return new Promise(function(_0xddbe73,_0x331971){return db[_0x8197('0x17')]['findAll']({'raw':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17[_0x8197('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17['options'][_0x8197('0x19')]||null:null,'attributes':_0x2dcd17['options']?_0x2dcd17[_0x8197('0x18')]['attributes']||null:null,'limit':_0x2dcd17['options']?_0x2dcd17[_0x8197('0x18')][_0x8197('0x1a')]||null:null,'include':_0x2dcd17[_0x8197('0x18')]?_0x2dcd17[_0x8197('0x18')][_0x8197('0x1b')]?_['map'](_0x2dcd17[_0x8197('0x18')][_0x8197('0x1b')],function(_0x2cad59){return{'model':db[_0x2cad59[_0x8197('0x1c')]],'as':_0x2cad59['as'],'attributes':_0x2cad59[_0x8197('0x1d')],'include':_0x2cad59[_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x2cad59[_0x8197('0x1b')],function(_0xb06a6){return{'model':db[_0xb06a6['model']],'as':_0xb06a6['as'],'attributes':_0xb06a6[_0x8197('0x1d')],'include':_0xb06a6['include']?_[_0x8197('0x1e')](_0xb06a6[_0x8197('0x1b')],function(_0x5b25f7){return{'model':db[_0x5b25f7[_0x8197('0x1c')]],'as':_0x5b25f7['as'],'attributes':_0x5b25f7[_0x8197('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8197('0xb')](function(_0x356dac){logger[_0x8197('0xc')](_0x8197('0x16'),_0x2dcd17);logger[_0x8197('0xe')](_0x8197('0x16'),_0x2dcd17,JSON[_0x8197('0x10')](_0x356dac));_0xddbe73(_0x356dac);})['catch'](function(_0x45f2b0){logger[_0x8197('0x11')](_0x8197('0x16'),_0x45f2b0[_0x8197('0x13')],_0x2dcd17);_0x331971(_0x37dbde['error'](0x1f4,_0x45f2b0['message']));});});};exports['ShowServicenowAccount']=function(_0x3d5226){var _0x18cb6c=this;return new Promise(function(_0x760adb,_0x44b133){return db['ServicenowAccount'][_0x8197('0x1f')]({'raw':_0x3d5226[_0x8197('0x18')]?_0x3d5226['options'][_0x8197('0x20')]===undefined?!![]:![]:!![],'where':_0x3d5226['options']?_0x3d5226[_0x8197('0x18')][_0x8197('0x19')]||null:null,'attributes':_0x3d5226[_0x8197('0x18')]?_0x3d5226[_0x8197('0x18')][_0x8197('0x1d')]||null:null,'include':_0x3d5226['options']?_0x3d5226[_0x8197('0x18')][_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x3d5226['options'][_0x8197('0x1b')],function(_0x634610){return{'model':db[_0x634610['model']],'as':_0x634610['as'],'attributes':_0x634610[_0x8197('0x1d')],'include':_0x634610[_0x8197('0x1b')]?_['map'](_0x634610[_0x8197('0x1b')],function(_0x2e4fdc){return{'model':db[_0x2e4fdc[_0x8197('0x1c')]],'as':_0x2e4fdc['as'],'attributes':_0x2e4fdc[_0x8197('0x1d')],'include':_0x2e4fdc[_0x8197('0x1b')]?_[_0x8197('0x1e')](_0x2e4fdc[_0x8197('0x1b')],function(_0x197b7d){return{'model':db[_0x197b7d['model']],'as':_0x197b7d['as'],'attributes':_0x197b7d['attributes']};}):[]};}):[]};}):[]:[]})[_0x8197('0xb')](function(_0xe0d3e2){logger[_0x8197('0xc')](_0x8197('0x21'),_0x3d5226);logger[_0x8197('0xe')]('ShowServicenowAccount',_0x3d5226,JSON[_0x8197('0x10')](_0xe0d3e2));_0x760adb(_0xe0d3e2);})[_0x8197('0x15')](function(_0x59790a){logger[_0x8197('0x11')](_0x8197('0x21'),_0x59790a[_0x8197('0x13')],_0x3d5226);_0x44b133(_0x18cb6c[_0x8197('0x11')](0x1f4,_0x59790a['message']));});});};
\ No newline at end of file
+var _0xbeab=['randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','attributes','limit','include','model','map','debug','stringify','ShowServicenowAccount','find','raw','lodash','util','bluebird'];(function(_0x5d967b,_0x32b32b){var _0x319e03=function(_0x2d014e){while(--_0x2d014e){_0x5d967b['push'](_0x5d967b['shift']());}};_0x319e03(++_0x32b32b);}(_0xbeab,0x66));var _0xbbea=function(_0x13d027,_0x3f4ae3){_0x13d027=_0x13d027-0x0;var _0xc8e5b1=_0xbeab[_0x13d027];return _0xc8e5b1;};'use strict';var _=require(_0xbbea('0x0'));var util=require(_0xbbea('0x1'));var moment=require('moment');var BPromise=require(_0xbbea('0x2'));var rs=require(_0xbbea('0x3'));var fs=require('fs');var Redis=require(_0xbbea('0x4'));var db=require(_0xbbea('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbbea('0x6'))('rpc');var config=require(_0xbbea('0x7'));var jayson=require(_0xbbea('0x8'));var client=jayson[_0xbbea('0x9')][_0xbbea('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xab62e4,_0x113f79,_0x17f20b){return new BPromise(function(_0x2dffe1,_0x146ca0){return client[_0xbbea('0xb')](_0xab62e4,_0x17f20b)[_0xbbea('0xc')](function(_0x3d7f8d){logger[_0xbbea('0xd')](_0xbbea('0xe'),_0x113f79,_0xbbea('0xf'));logger['debug'](_0xbbea('0x10'),_0x113f79,'request\x20sent',JSON['stringify'](_0x3d7f8d));if(_0x3d7f8d[_0xbbea('0x11')]){if(_0x3d7f8d[_0xbbea('0x11')]['code']===0x1f4){logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x113f79,_0x3d7f8d[_0xbbea('0x11')]['message']);return _0x146ca0(_0x3d7f8d[_0xbbea('0x11')][_0xbbea('0x12')]);}logger[_0xbbea('0x11')](_0xbbea('0xe'),_0x113f79,_0x3d7f8d[_0xbbea('0x11')][_0xbbea('0x12')]);return _0x2dffe1(_0x3d7f8d[_0xbbea('0x11')][_0xbbea('0x12')]);}else{logger[_0xbbea('0xd')](_0xbbea('0xe'),_0x113f79,'request\x20sent');_0x2dffe1(_0x3d7f8d[_0xbbea('0x13')][_0xbbea('0x12')]);}})[_0xbbea('0x14')](function(_0x382b54){logger[_0xbbea('0x11')](_0xbbea('0xe'),_0x113f79,_0x382b54);_0x146ca0(_0x382b54);});});}exports[_0xbbea('0x15')]=function(_0x1b7fd0){var _0x1e8f2e=this;return new Promise(function(_0x30af54,_0x39b30d){return db[_0xbbea('0x16')][_0xbbea('0x17')]({'raw':_0x1b7fd0['options']?_0x1b7fd0[_0xbbea('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1b7fd0['options']?_0x1b7fd0[_0xbbea('0x18')]['where']||null:null,'attributes':_0x1b7fd0[_0xbbea('0x18')]?_0x1b7fd0[_0xbbea('0x18')][_0xbbea('0x19')]||null:null,'limit':_0x1b7fd0[_0xbbea('0x18')]?_0x1b7fd0['options'][_0xbbea('0x1a')]||null:null,'include':_0x1b7fd0[_0xbbea('0x18')]?_0x1b7fd0['options'][_0xbbea('0x1b')]?_['map'](_0x1b7fd0[_0xbbea('0x18')][_0xbbea('0x1b')],function(_0x3d9e15){return{'model':db[_0x3d9e15[_0xbbea('0x1c')]],'as':_0x3d9e15['as'],'attributes':_0x3d9e15[_0xbbea('0x19')],'include':_0x3d9e15['include']?_['map'](_0x3d9e15[_0xbbea('0x1b')],function(_0x4ddec4){return{'model':db[_0x4ddec4['model']],'as':_0x4ddec4['as'],'attributes':_0x4ddec4['attributes'],'include':_0x4ddec4[_0xbbea('0x1b')]?_[_0xbbea('0x1d')](_0x4ddec4[_0xbbea('0x1b')],function(_0x188678){return{'model':db[_0x188678[_0xbbea('0x1c')]],'as':_0x188678['as'],'attributes':_0x188678[_0xbbea('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbbea('0xc')](function(_0x2b025b){logger['info'](_0xbbea('0x15'),_0x1b7fd0);logger[_0xbbea('0x1e')](_0xbbea('0x15'),_0x1b7fd0,JSON[_0xbbea('0x1f')](_0x2b025b));_0x30af54(_0x2b025b);})[_0xbbea('0x14')](function(_0x570537){logger['error'](_0xbbea('0x15'),_0x570537['message'],_0x1b7fd0);_0x39b30d(_0x1e8f2e['error'](0x1f4,_0x570537['message']));});});};exports[_0xbbea('0x20')]=function(_0x73be6e){var _0x10c5fa=this;return new Promise(function(_0x3ed6a7,_0x1d2c36){return db[_0xbbea('0x16')][_0xbbea('0x21')]({'raw':_0x73be6e[_0xbbea('0x18')]?_0x73be6e[_0xbbea('0x18')][_0xbbea('0x22')]===undefined?!![]:![]:!![],'where':_0x73be6e[_0xbbea('0x18')]?_0x73be6e[_0xbbea('0x18')]['where']||null:null,'attributes':_0x73be6e[_0xbbea('0x18')]?_0x73be6e['options'][_0xbbea('0x19')]||null:null,'include':_0x73be6e[_0xbbea('0x18')]?_0x73be6e[_0xbbea('0x18')][_0xbbea('0x1b')]?_[_0xbbea('0x1d')](_0x73be6e[_0xbbea('0x18')][_0xbbea('0x1b')],function(_0x3743db){return{'model':db[_0x3743db[_0xbbea('0x1c')]],'as':_0x3743db['as'],'attributes':_0x3743db[_0xbbea('0x19')],'include':_0x3743db[_0xbbea('0x1b')]?_[_0xbbea('0x1d')](_0x3743db[_0xbbea('0x1b')],function(_0x4dee1c){return{'model':db[_0x4dee1c[_0xbbea('0x1c')]],'as':_0x4dee1c['as'],'attributes':_0x4dee1c[_0xbbea('0x19')],'include':_0x4dee1c[_0xbbea('0x1b')]?_[_0xbbea('0x1d')](_0x4dee1c[_0xbbea('0x1b')],function(_0x4aeb3a){return{'model':db[_0x4aeb3a['model']],'as':_0x4aeb3a['as'],'attributes':_0x4aeb3a[_0xbbea('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbbea('0xc')](function(_0x53884a){logger[_0xbbea('0xd')](_0xbbea('0x20'),_0x73be6e);logger[_0xbbea('0x1e')](_0xbbea('0x20'),_0x73be6e,JSON[_0xbbea('0x1f')](_0x53884a));_0x3ed6a7(_0x53884a);})[_0xbbea('0x14')](function(_0x13eb81){logger['error']('ShowServicenowAccount',_0x13eb81['message'],_0x73be6e);_0x1d2c36(_0x10c5fa['error'](0x1f4,_0x13eb81[_0xbbea('0x12')]));});});};
\ No newline at end of file
index ef35274..78fd271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553e=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','update'];(function(_0x38baac,_0x2772b3){var _0x47baf1=function(_0x5646a8){while(--_0x5646a8){_0x38baac['push'](_0x38baac['shift']());}};_0x47baf1(++_0x2772b3);}(_0x553e,0x1cf));var _0xe553=function(_0x75395,_0x1963d6){_0x75395=_0x75395-0x0;var _0x321fe1=_0x553e[_0x75395];return _0x321fe1;};'use strict';var multer=require(_0xe553('0x0'));var util=require(_0xe553('0x1'));var path=require('path');var timeout=require(_0xe553('0x2'));var express=require(_0xe553('0x3'));var router=express[_0xe553('0x4')]();var fs_extra=require(_0xe553('0x5'));var auth=require(_0xe553('0x6'));var interaction=require(_0xe553('0x7'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0xe553('0x8')](),controller[_0xe553('0x9')]);router[_0xe553('0xa')](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0xc')]);router[_0xe553('0xa')]('/:id/fields',auth[_0xe553('0x8')](),controller[_0xe553('0xd')]);router[_0xe553('0xa')](_0xe553('0xe'),auth[_0xe553('0x8')](),controller[_0xe553('0xf')]);router['get'](_0xe553('0x10'),auth[_0xe553('0x8')](),controller['getDescriptions']);router[_0xe553('0x11')]('/',auth['isAuthenticated'](),controller[_0xe553('0x12')]);router['put'](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0x13')]);router[_0xe553('0x14')](_0xe553('0xb'),auth[_0xe553('0x8')](),controller[_0xe553('0x15')]);module[_0xe553('0x16')]=router;
\ No newline at end of file
+var _0x1ad4=['show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','/:id'];(function(_0x46a563,_0x586712){var _0x10aa22=function(_0x199db8){while(--_0x199db8){_0x46a563['push'](_0x46a563['shift']());}};_0x10aa22(++_0x586712);}(_0x1ad4,0x1d4));var _0x41ad=function(_0x295314,_0x17b250){_0x295314=_0x295314-0x0;var _0x584b0c=_0x1ad4[_0x295314];return _0x584b0c;};'use strict';var multer=require('multer');var util=require(_0x41ad('0x0'));var path=require('path');var timeout=require(_0x41ad('0x1'));var express=require(_0x41ad('0x2'));var router=express[_0x41ad('0x3')]();var fs_extra=require(_0x41ad('0x4'));var auth=require(_0x41ad('0x5'));var interaction=require(_0x41ad('0x6'));var config=require(_0x41ad('0x7'));var controller=require(_0x41ad('0x8'));router[_0x41ad('0x9')]('/',auth[_0x41ad('0xa')](),controller['index']);router[_0x41ad('0x9')](_0x41ad('0xb'),auth[_0x41ad('0xa')](),controller[_0x41ad('0xc')]);router['get'](_0x41ad('0xd'),auth[_0x41ad('0xa')](),controller[_0x41ad('0xe')]);router[_0x41ad('0x9')](_0x41ad('0xf'),auth[_0x41ad('0xa')](),controller[_0x41ad('0x10')]);router[_0x41ad('0x9')]('/:id/descriptions',auth[_0x41ad('0xa')](),controller[_0x41ad('0x11')]);router[_0x41ad('0x12')]('/',auth[_0x41ad('0xa')](),controller[_0x41ad('0x13')]);router['put'](_0x41ad('0xb'),auth['isAuthenticated'](),controller[_0x41ad('0x14')]);router[_0x41ad('0x15')](_0x41ad('0xb'),auth[_0x41ad('0xa')](),controller[_0x41ad('0x16')]);module[_0x41ad('0x17')]=router;
\ No newline at end of file
index 86b4082..3dcc86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe70f=['sequelize','STRING'];(function(_0x23f2a6,_0x31ec81){var _0x1b548c=function(_0x5ef9b1){while(--_0x5ef9b1){_0x23f2a6['push'](_0x23f2a6['shift']());}};_0x1b548c(++_0x31ec81);}(_0xe70f,0x150));var _0xfe70=function(_0x42084f,_0x393b8c){_0x42084f=_0x42084f-0x0;var _0xb88237=_0xe70f[_0x42084f];return _0xb88237;};'use strict';var Sequelize=require(_0xfe70('0x0'));module['exports']={'name':{'type':Sequelize[_0xfe70('0x1')]},'description':{'type':Sequelize[_0xfe70('0x1')]}};
\ No newline at end of file
+var _0xbf7e=['sequelize','exports','STRING'];(function(_0x3bf6c1,_0x3fa1c4){var _0x298151=function(_0x5c7d63){while(--_0x5c7d63){_0x3bf6c1['push'](_0x3bf6c1['shift']());}};_0x298151(++_0x3fa1c4);}(_0xbf7e,0x87));var _0xebf7=function(_0x389bd4,_0x1231d2){_0x389bd4=_0x389bd4-0x0;var _0x1bb570=_0xbf7e[_0x389bd4];return _0x1bb570;};'use strict';var Sequelize=require(_0xebf7('0x0'));module[_0xebf7('0x1')]={'name':{'type':Sequelize[_0xebf7('0x2')]},'description':{'type':Sequelize[_0xebf7('0x2')]}};
\ No newline at end of file
index 13025f3..2fa15ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993e=['json','offset','undefined','count','limit','Content-Range','apply','reject','destroy','then','stack','name','send','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','findOne','ServicenowField','hasOwnProperty','nolimit','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x367ef9,_0x1ef0ee){var _0x35ca32=function(_0x369e2e){while(--_0x369e2e){_0x367ef9['push'](_0x367ef9['shift']());}};_0x35ca32(++_0x1ef0ee);}(_0x993e,0x123));var _0xe993=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x993e[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xe993('0x0'));var rimraf=require(_0xe993('0x1'));var zipdir=require(_0xe993('0x2'));var jsonpatch=require(_0xe993('0x3'));var rp=require(_0xe993('0x4'));var moment=require(_0xe993('0x5'));var BPromise=require(_0xe993('0x6'));var Mustache=require(_0xe993('0x7'));var util=require(_0xe993('0x8'));var path=require(_0xe993('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe993('0xa'));var fs=require('fs');var fs_extra=require(_0xe993('0xb'));var _=require(_0xe993('0xc'));var squel=require(_0xe993('0xd'));var crypto=require(_0xe993('0xe'));var jsforce=require(_0xe993('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe993('0x10'));var querystring=require(_0xe993('0x11'));var Papa=require(_0xe993('0x12'));var Redis=require(_0xe993('0x13'));var authService=require(_0xe993('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe993('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe993('0x16'))('api');var utils=require(_0xe993('0x17'));var config=require(_0xe993('0x18'));var licenseUtil=require(_0xe993('0x19'));var db=require(_0xe993('0x1a'))['db'];function respondWithStatusCode(_0x2e2bec,_0x2273a4){_0x2273a4=_0x2273a4||0xcc;return function(_0x944736){if(_0x944736){return _0x2e2bec[_0xe993('0x1b')](_0x2273a4);}return _0x2e2bec[_0xe993('0x1c')](_0x2273a4)['end']();};}function respondWithResult(_0x151a9e,_0xd341a4){_0xd341a4=_0xd341a4||0xc8;return function(_0x39df2a){if(_0x39df2a){return _0x151a9e['status'](_0xd341a4)[_0xe993('0x1d')](_0x39df2a);}};}function respondWithFilteredResult(_0xba0c7f,_0x4b3b03){return function(_0x91ae44){if(_0x91ae44){var _0x2b8d68=typeof _0x4b3b03[_0xe993('0x1e')]===_0xe993('0x1f')&&typeof _0x4b3b03['limit']===_0xe993('0x1f');var _0x437cea=_0x91ae44[_0xe993('0x20')];var _0x2cffc9=_0x2b8d68?0x0:_0x4b3b03[_0xe993('0x1e')];var _0x2fc49f=_0x2b8d68?_0x91ae44['count']:_0x4b3b03['offset']+_0x4b3b03[_0xe993('0x21')];var _0xe427a1;if(_0x2fc49f>=_0x437cea){_0x2fc49f=_0x437cea;_0xe427a1=0xc8;}else{_0xe427a1=0xce;}_0xba0c7f['status'](_0xe427a1);return _0xba0c7f['set'](_0xe993('0x22'),_0x2cffc9+'-'+_0x2fc49f+'/'+_0x437cea)['json'](_0x91ae44);}return null;};}function patchUpdates(_0x4c5d2b){return function(_0x68a60d){try{jsonpatch[_0xe993('0x23')](_0x68a60d,_0x4c5d2b,!![]);}catch(_0xdfb051){return BPromise[_0xe993('0x24')](_0xdfb051);}return _0x68a60d['save']();};}function saveUpdates(_0x3fdb13,_0x328579){return function(_0x44e26f){if(_0x44e26f){return _0x44e26f['update'](_0x3fdb13)['then'](function(_0x30f647){return _0x30f647;});}return null;};}function removeEntity(_0x17f0fe,_0x31bf34){return function(_0x57d79c){if(_0x57d79c){return _0x57d79c[_0xe993('0x25')]()[_0xe993('0x26')](function(){_0x17f0fe[_0xe993('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18546b,_0x40eb16){return function(_0x1a2c13){if(!_0x1a2c13){_0x18546b['sendStatus'](0x194);}return _0x1a2c13;};}function handleError(_0x2124b2,_0x3b1a37){_0x3b1a37=_0x3b1a37||0x1f4;return function(_0x57330f){logger['error'](_0x57330f[_0xe993('0x27')]);if(_0x57330f[_0xe993('0x28')]){delete _0x57330f[_0xe993('0x28')];}_0x2124b2[_0xe993('0x1c')](_0x3b1a37)[_0xe993('0x29')](_0x57330f);};}exports['index']=function(_0x30c342,_0x474c6c){var _0x598a8e={},_0x4987db={},_0x238c66={'count':0x0,'rows':[]};var _0x444de6=_[_0xe993('0x2a')](db[_0xe993('0x2b')][_0xe993('0x2c')],function(_0xe89465){return{'name':_0xe89465[_0xe993('0x2d')],'type':_0xe89465[_0xe993('0x2e')][_0xe993('0x2f')]};});_0x4987db[_0xe993('0x30')]=_['map'](_0x444de6,_0xe993('0x28'));_0x4987db[_0xe993('0x31')]=_[_0xe993('0x32')](_0x30c342[_0xe993('0x31')]);_0x4987db['filters']=_[_0xe993('0x33')](_0x4987db[_0xe993('0x30')],_0x4987db[_0xe993('0x31')]);_0x598a8e[_0xe993('0x34')]=_['intersection'](_0x4987db[_0xe993('0x30')],qs[_0xe993('0x35')](_0x30c342['query'][_0xe993('0x35')]));_0x598a8e[_0xe993('0x34')]=_0x598a8e['attributes'][_0xe993('0x36')]?_0x598a8e[_0xe993('0x34')]:_0x4987db[_0xe993('0x30')];if(!_0x30c342['query']['hasOwnProperty']('nolimit')){_0x598a8e['limit']=qs[_0xe993('0x21')](_0x30c342[_0xe993('0x31')][_0xe993('0x21')]);_0x598a8e[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0x30c342[_0xe993('0x31')][_0xe993('0x1e')]);}_0x598a8e[_0xe993('0x37')]=qs[_0xe993('0x38')](_0x30c342[_0xe993('0x31')][_0xe993('0x38')]);_0x598a8e[_0xe993('0x39')]=qs['filters'](_[_0xe993('0x3a')](_0x30c342[_0xe993('0x31')],_0x4987db[_0xe993('0x3b')]),_0x444de6);if(_0x30c342['query'][_0xe993('0x3c')]){_0x598a8e[_0xe993('0x39')]=_[_0xe993('0x3d')](_0x598a8e[_0xe993('0x39')],{'$or':_[_0xe993('0x2a')](_0x444de6,function(_0xc035f8){if(_0xc035f8[_0xe993('0x2e')]!==_0xe993('0x3e')){var _0x296386={};_0x296386[_0xc035f8[_0xe993('0x28')]]={'$like':'%'+_0x30c342['query']['filter']+'%'};return _0x296386;}})});}_0x598a8e=_['merge']({},_0x598a8e,_0x30c342[_0xe993('0x3f')]);var _0x4dc357={'where':_0x598a8e['where']};return db['ServicenowConfiguration']['count'](_0x4dc357)[_0xe993('0x26')](function(_0x25e633){_0x238c66[_0xe993('0x20')]=_0x25e633;if(_0x30c342['query'][_0xe993('0x40')]){_0x598a8e[_0xe993('0x41')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xe993('0x42')](_0x598a8e);})[_0xe993('0x26')](function(_0x2991a0){_0x238c66[_0xe993('0x43')]=_0x2991a0;return _0x238c66;})[_0xe993('0x26')](respondWithFilteredResult(_0x474c6c,_0x598a8e))[_0xe993('0x44')](handleError(_0x474c6c,null));};exports[_0xe993('0x45')]=function(_0x5c1c6e,_0x5984d2){var _0x44c773={'raw':![],'where':{'id':_0x5c1c6e[_0xe993('0x46')]['id']}},_0x5af746={};_0x5af746[_0xe993('0x30')]=_['keys'](db[_0xe993('0x2b')][_0xe993('0x2c')]);_0x5af746[_0xe993('0x31')]=_[_0xe993('0x32')](_0x5c1c6e['query']);_0x5af746[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x5af746[_0xe993('0x30')],_0x5af746['query']);_0x44c773[_0xe993('0x34')]=_[_0xe993('0x33')](_0x5af746[_0xe993('0x30')],qs[_0xe993('0x35')](_0x5c1c6e[_0xe993('0x31')][_0xe993('0x35')]));_0x44c773[_0xe993('0x34')]=_0x44c773[_0xe993('0x34')][_0xe993('0x36')]?_0x44c773[_0xe993('0x34')]:_0x5af746[_0xe993('0x30')];if(_0x5c1c6e[_0xe993('0x31')][_0xe993('0x40')]){_0x44c773[_0xe993('0x41')]=[{'all':!![]}];}_0x44c773=_[_0xe993('0x3d')]({},_0x44c773,_0x5c1c6e[_0xe993('0x3f')]);return db[_0xe993('0x2b')][_0xe993('0x47')](_0x44c773)[_0xe993('0x26')](handleEntityNotFound(_0x5984d2,null))[_0xe993('0x26')](respondWithResult(_0x5984d2,null))[_0xe993('0x44')](handleError(_0x5984d2,null));};exports['create']=function(_0x5209c3,_0x1bd4aa){return db[_0xe993('0x2b')]['create'](_0x5209c3['body'],{})['then'](respondWithResult(_0x1bd4aa,0xc9))[_0xe993('0x44')](handleError(_0x1bd4aa,null));};exports['update']=function(_0x4d537f,_0x48d5bc){if(_0x4d537f[_0xe993('0x48')]['id']){delete _0x4d537f[_0xe993('0x48')]['id'];}return db[_0xe993('0x2b')][_0xe993('0x47')]({'where':{'id':_0x4d537f['params']['id']}})['then'](handleEntityNotFound(_0x48d5bc,null))[_0xe993('0x26')](saveUpdates(_0x4d537f[_0xe993('0x48')],null))[_0xe993('0x26')](respondWithResult(_0x48d5bc,null))['catch'](handleError(_0x48d5bc,null));};exports[_0xe993('0x25')]=function(_0xa00522,_0x1decae){return db[_0xe993('0x2b')]['find']({'where':{'id':_0xa00522[_0xe993('0x46')]['id']}})['then'](handleEntityNotFound(_0x1decae,null))['then'](removeEntity(_0x1decae,null))[_0xe993('0x44')](handleError(_0x1decae,null));};exports['getFields']=function(_0x1df6b4,_0x432ebf,_0x4278ee){var _0x55b7bf={};var _0x59132f={};var _0xbe1b85;var _0x5c475b;return db[_0xe993('0x2b')][_0xe993('0x49')]({'where':{'id':_0x1df6b4[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x432ebf,null))['then'](function(_0x4cec99){if(_0x4cec99){_0xbe1b85=_0x4cec99;_0x59132f[_0xe993('0x30')]=_[_0xe993('0x32')](db[_0xe993('0x4a')][_0xe993('0x2c')]);_0x59132f[_0xe993('0x31')]=_[_0xe993('0x32')](_0x1df6b4['query']);_0x59132f[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x59132f[_0xe993('0x30')],_0x59132f[_0xe993('0x31')]);_0x55b7bf['attributes']=_['intersection'](_0x59132f[_0xe993('0x30')],qs[_0xe993('0x35')](_0x1df6b4['query']['fields']));_0x55b7bf[_0xe993('0x34')]=_0x55b7bf[_0xe993('0x34')]['length']?_0x55b7bf[_0xe993('0x34')]:_0x59132f['model'];_0x55b7bf[_0xe993('0x37')]=qs['sort'](_0x1df6b4[_0xe993('0x31')][_0xe993('0x38')]);_0x55b7bf[_0xe993('0x39')]=qs[_0xe993('0x3b')](_[_0xe993('0x3a')](_0x1df6b4[_0xe993('0x31')],_0x59132f[_0xe993('0x3b')]));if(_0x1df6b4[_0xe993('0x31')]['filter']){_0x55b7bf[_0xe993('0x39')]=_[_0xe993('0x3d')](_0x55b7bf[_0xe993('0x39')],{'$or':_[_0xe993('0x2a')](_0x55b7bf[_0xe993('0x34')],function(_0x224b6c){var _0x3cc3a8={};_0x3cc3a8[_0x224b6c]={'$like':'%'+_0x1df6b4[_0xe993('0x31')]['filter']+'%'};return _0x3cc3a8;})});}_0x55b7bf=_[_0xe993('0x3d')]({},_0x55b7bf,_0x1df6b4[_0xe993('0x3f')]);return _0xbe1b85['getFields'](_0x55b7bf);}})[_0xe993('0x26')](function(_0x1951de){if(_0x1951de){_0x5c475b=_0x1951de['length'];if(!_0x1df6b4['query'][_0xe993('0x4b')](_0xe993('0x4c'))){_0x55b7bf[_0xe993('0x21')]=qs[_0xe993('0x21')](_0x1df6b4[_0xe993('0x31')][_0xe993('0x21')]);_0x55b7bf[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0x1df6b4[_0xe993('0x31')][_0xe993('0x1e')]);}return _0xbe1b85[_0xe993('0x4d')](_0x55b7bf);}})[_0xe993('0x26')](function(_0x5d3db6){if(_0x5d3db6){return _0x5d3db6?{'count':_0x5c475b,'rows':_0x5d3db6}:null;}})[_0xe993('0x26')](respondWithResult(_0x432ebf,null))[_0xe993('0x44')](handleError(_0x432ebf,null));};exports[_0xe993('0x4e')]=function(_0x2ee5d1,_0x118162,_0x5352fc){var _0xdb9e76={};var _0x55fb1b={};var _0x4e2b79;var _0x3915f9;return db[_0xe993('0x2b')][_0xe993('0x49')]({'where':{'id':_0x2ee5d1[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x118162,null))[_0xe993('0x26')](function(_0x465393){if(_0x465393){_0x4e2b79=_0x465393;_0x55fb1b['model']=_[_0xe993('0x32')](db[_0xe993('0x4a')]['rawAttributes']);_0x55fb1b['query']=_[_0xe993('0x32')](_0x2ee5d1[_0xe993('0x31')]);_0x55fb1b[_0xe993('0x3b')]=_[_0xe993('0x33')](_0x55fb1b[_0xe993('0x30')],_0x55fb1b[_0xe993('0x31')]);_0xdb9e76[_0xe993('0x34')]=_[_0xe993('0x33')](_0x55fb1b[_0xe993('0x30')],qs[_0xe993('0x35')](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x35')]));_0xdb9e76['attributes']=_0xdb9e76[_0xe993('0x34')][_0xe993('0x36')]?_0xdb9e76[_0xe993('0x34')]:_0x55fb1b['model'];_0xdb9e76['order']=qs['sort'](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x38')]);_0xdb9e76['where']=qs[_0xe993('0x3b')](_['pick'](_0x2ee5d1[_0xe993('0x31')],_0x55fb1b[_0xe993('0x3b')]));if(_0x2ee5d1[_0xe993('0x31')][_0xe993('0x3c')]){_0xdb9e76[_0xe993('0x39')]=_[_0xe993('0x3d')](_0xdb9e76['where'],{'$or':_[_0xe993('0x2a')](_0xdb9e76[_0xe993('0x34')],function(_0x2765b5){var _0x21abc3={};_0x21abc3[_0x2765b5]={'$like':'%'+_0x2ee5d1['query'][_0xe993('0x3c')]+'%'};return _0x21abc3;})});}_0xdb9e76=_[_0xe993('0x3d')]({},_0xdb9e76,_0x2ee5d1[_0xe993('0x3f')]);return _0x4e2b79['getSubjects'](_0xdb9e76);}})[_0xe993('0x26')](function(_0x36feda){if(_0x36feda){_0x3915f9=_0x36feda[_0xe993('0x36')];if(!_0x2ee5d1[_0xe993('0x31')][_0xe993('0x4b')](_0xe993('0x4c'))){_0xdb9e76[_0xe993('0x21')]=qs['limit'](_0x2ee5d1['query']['limit']);_0xdb9e76[_0xe993('0x1e')]=qs['offset'](_0x2ee5d1[_0xe993('0x31')][_0xe993('0x1e')]);}return _0x4e2b79[_0xe993('0x4e')](_0xdb9e76);}})[_0xe993('0x26')](function(_0x54310f){if(_0x54310f){return _0x54310f?{'count':_0x3915f9,'rows':_0x54310f}:null;}})[_0xe993('0x26')](respondWithResult(_0x118162,null))['catch'](handleError(_0x118162,null));};exports[_0xe993('0x4f')]=function(_0xe6994a,_0x48d096,_0x1257b9){var _0x333140={};var _0x5d3a17={};var _0x7d4c84;var _0x244cb9;return db[_0xe993('0x2b')]['findOne']({'where':{'id':_0xe6994a[_0xe993('0x46')]['id']}})[_0xe993('0x26')](handleEntityNotFound(_0x48d096,null))[_0xe993('0x26')](function(_0x287f86){if(_0x287f86){_0x7d4c84=_0x287f86;_0x5d3a17[_0xe993('0x30')]=_[_0xe993('0x32')](db[_0xe993('0x4a')][_0xe993('0x2c')]);_0x5d3a17[_0xe993('0x31')]=_[_0xe993('0x32')](_0xe6994a[_0xe993('0x31')]);_0x5d3a17['filters']=_[_0xe993('0x33')](_0x5d3a17[_0xe993('0x30')],_0x5d3a17[_0xe993('0x31')]);_0x333140[_0xe993('0x34')]=_[_0xe993('0x33')](_0x5d3a17[_0xe993('0x30')],qs[_0xe993('0x35')](_0xe6994a['query'][_0xe993('0x35')]));_0x333140['attributes']=_0x333140['attributes'][_0xe993('0x36')]?_0x333140[_0xe993('0x34')]:_0x5d3a17[_0xe993('0x30')];_0x333140[_0xe993('0x37')]=qs[_0xe993('0x38')](_0xe6994a[_0xe993('0x31')][_0xe993('0x38')]);_0x333140['where']=qs[_0xe993('0x3b')](_[_0xe993('0x3a')](_0xe6994a[_0xe993('0x31')],_0x5d3a17['filters']));if(_0xe6994a[_0xe993('0x31')][_0xe993('0x3c')]){_0x333140[_0xe993('0x39')]=_['merge'](_0x333140[_0xe993('0x39')],{'$or':_['map'](_0x333140[_0xe993('0x34')],function(_0x1347ff){var _0x5e35f9={};_0x5e35f9[_0x1347ff]={'$like':'%'+_0xe6994a[_0xe993('0x31')][_0xe993('0x3c')]+'%'};return _0x5e35f9;})});}_0x333140=_['merge']({},_0x333140,_0xe6994a['options']);return _0x7d4c84[_0xe993('0x4f')](_0x333140);}})[_0xe993('0x26')](function(_0x416430){if(_0x416430){_0x244cb9=_0x416430[_0xe993('0x36')];if(!_0xe6994a['query'][_0xe993('0x4b')](_0xe993('0x4c'))){_0x333140[_0xe993('0x21')]=qs[_0xe993('0x21')](_0xe6994a[_0xe993('0x31')][_0xe993('0x21')]);_0x333140[_0xe993('0x1e')]=qs[_0xe993('0x1e')](_0xe6994a[_0xe993('0x31')][_0xe993('0x1e')]);}return _0x7d4c84[_0xe993('0x4f')](_0x333140);}})[_0xe993('0x26')](function(_0x24976a){if(_0x24976a){return _0x24976a?{'count':_0x244cb9,'rows':_0x24976a}:null;}})[_0xe993('0x26')](respondWithResult(_0x48d096,null))[_0xe993('0x44')](handleError(_0x48d096,null));};
\ No newline at end of file
+var _0xca19=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ServicenowConfiguration','includeAll','include','findAll','catch','show','params','find','create','body','update','getFields','getSubjects','findOne','getDescriptions','ServicenowField','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','destroy','then','error','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','attributes','intersection'];(function(_0x183374,_0x1851aa){var _0x2f19c5=function(_0x1734c6){while(--_0x1734c6){_0x183374['push'](_0x183374['shift']());}};_0x2f19c5(++_0x1851aa);}(_0xca19,0x6c));var _0x9ca1=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xca19[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require(_0x9ca1('0x0'));var rimraf=require(_0x9ca1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9ca1('0x2'));var rp=require(_0x9ca1('0x3'));var moment=require(_0x9ca1('0x4'));var BPromise=require(_0x9ca1('0x5'));var Mustache=require(_0x9ca1('0x6'));var util=require(_0x9ca1('0x7'));var path=require(_0x9ca1('0x8'));var sox=require(_0x9ca1('0x9'));var csv=require('to-csv');var ejs=require(_0x9ca1('0xa'));var fs=require('fs');var fs_extra=require(_0x9ca1('0xb'));var _=require('lodash');var squel=require(_0x9ca1('0xc'));var crypto=require(_0x9ca1('0xd'));var jsforce=require(_0x9ca1('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9ca1('0xf'));var querystring=require(_0x9ca1('0x10'));var Papa=require('papaparse');var Redis=require(_0x9ca1('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9ca1('0x12'));var as=require(_0x9ca1('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9ca1('0x14'))('api');var utils=require(_0x9ca1('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9ca1('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x32825a,_0x318338){_0x318338=_0x318338||0xcc;return function(_0xbddeb3){if(_0xbddeb3){return _0x32825a[_0x9ca1('0x17')](_0x318338);}return _0x32825a[_0x9ca1('0x18')](_0x318338)[_0x9ca1('0x19')]();};}function respondWithResult(_0x746589,_0x459cda){_0x459cda=_0x459cda||0xc8;return function(_0x4f1e72){if(_0x4f1e72){return _0x746589[_0x9ca1('0x18')](_0x459cda)['json'](_0x4f1e72);}};}function respondWithFilteredResult(_0x39b1e9,_0x1a7f99){return function(_0x219517){if(_0x219517){var _0x49add6=typeof _0x1a7f99[_0x9ca1('0x1a')]==='undefined'&&typeof _0x1a7f99[_0x9ca1('0x1b')]===_0x9ca1('0x1c');var _0x2f21e4=_0x219517[_0x9ca1('0x1d')];var _0x4db9bd=_0x49add6?0x0:_0x1a7f99[_0x9ca1('0x1a')];var _0x7b7282=_0x49add6?_0x219517[_0x9ca1('0x1d')]:_0x1a7f99[_0x9ca1('0x1a')]+_0x1a7f99[_0x9ca1('0x1b')];var _0x1e33aa;if(_0x7b7282>=_0x2f21e4){_0x7b7282=_0x2f21e4;_0x1e33aa=0xc8;}else{_0x1e33aa=0xce;}_0x39b1e9[_0x9ca1('0x18')](_0x1e33aa);return _0x39b1e9[_0x9ca1('0x1e')](_0x9ca1('0x1f'),_0x4db9bd+'-'+_0x7b7282+'/'+_0x2f21e4)[_0x9ca1('0x20')](_0x219517);}return null;};}function patchUpdates(_0x4bae74){return function(_0x34f01e){try{jsonpatch[_0x9ca1('0x21')](_0x34f01e,_0x4bae74,!![]);}catch(_0x1aee65){return BPromise[_0x9ca1('0x22')](_0x1aee65);}return _0x34f01e[_0x9ca1('0x23')]();};}function saveUpdates(_0x4f034d,_0x546318){return function(_0xa79fbf){if(_0xa79fbf){return _0xa79fbf['update'](_0x4f034d)['then'](function(_0x504448){return _0x504448;});}return null;};}function removeEntity(_0x3f0699,_0x51d749){return function(_0x2903df){if(_0x2903df){return _0x2903df[_0x9ca1('0x24')]()[_0x9ca1('0x25')](function(){_0x3f0699[_0x9ca1('0x18')](0xcc)[_0x9ca1('0x19')]();});}};}function handleEntityNotFound(_0x4a7c14,_0x53d931){return function(_0x244ea5){if(!_0x244ea5){_0x4a7c14['sendStatus'](0x194);}return _0x244ea5;};}function handleError(_0x3c6aab,_0x23ff01){_0x23ff01=_0x23ff01||0x1f4;return function(_0x3d875a){logger[_0x9ca1('0x26')](_0x3d875a['stack']);if(_0x3d875a[_0x9ca1('0x27')]){delete _0x3d875a[_0x9ca1('0x27')];}_0x3c6aab[_0x9ca1('0x18')](_0x23ff01)[_0x9ca1('0x28')](_0x3d875a);};}exports[_0x9ca1('0x29')]=function(_0x210966,_0x18ab52){var _0x4aecaa={},_0x408022={},_0x1284f1={'count':0x0,'rows':[]};var _0x57eea9=_[_0x9ca1('0x2a')](db['ServicenowConfiguration'][_0x9ca1('0x2b')],function(_0x4de58e){return{'name':_0x4de58e['fieldName'],'type':_0x4de58e[_0x9ca1('0x2c')][_0x9ca1('0x2d')]};});_0x408022[_0x9ca1('0x2e')]=_[_0x9ca1('0x2a')](_0x57eea9,'name');_0x408022['query']=_[_0x9ca1('0x2f')](_0x210966[_0x9ca1('0x30')]);_0x408022[_0x9ca1('0x31')]=_['intersection'](_0x408022[_0x9ca1('0x2e')],_0x408022['query']);_0x4aecaa[_0x9ca1('0x32')]=_[_0x9ca1('0x33')](_0x408022[_0x9ca1('0x2e')],qs[_0x9ca1('0x34')](_0x210966['query'][_0x9ca1('0x34')]));_0x4aecaa[_0x9ca1('0x32')]=_0x4aecaa['attributes'][_0x9ca1('0x35')]?_0x4aecaa[_0x9ca1('0x32')]:_0x408022[_0x9ca1('0x2e')];if(!_0x210966[_0x9ca1('0x30')][_0x9ca1('0x36')](_0x9ca1('0x37'))){_0x4aecaa['limit']=qs[_0x9ca1('0x1b')](_0x210966[_0x9ca1('0x30')][_0x9ca1('0x1b')]);_0x4aecaa['offset']=qs[_0x9ca1('0x1a')](_0x210966[_0x9ca1('0x30')]['offset']);}_0x4aecaa[_0x9ca1('0x38')]=qs['sort'](_0x210966[_0x9ca1('0x30')][_0x9ca1('0x39')]);_0x4aecaa[_0x9ca1('0x3a')]=qs[_0x9ca1('0x31')](_[_0x9ca1('0x3b')](_0x210966[_0x9ca1('0x30')],_0x408022[_0x9ca1('0x31')]),_0x57eea9);if(_0x210966[_0x9ca1('0x30')][_0x9ca1('0x3c')]){_0x4aecaa[_0x9ca1('0x3a')]=_[_0x9ca1('0x3d')](_0x4aecaa[_0x9ca1('0x3a')],{'$or':_[_0x9ca1('0x2a')](_0x57eea9,function(_0x5da423){if(_0x5da423[_0x9ca1('0x2c')]!==_0x9ca1('0x3e')){var _0x3cdeb7={};_0x3cdeb7[_0x5da423[_0x9ca1('0x27')]]={'$like':'%'+_0x210966['query'][_0x9ca1('0x3c')]+'%'};return _0x3cdeb7;}})});}_0x4aecaa=_[_0x9ca1('0x3d')]({},_0x4aecaa,_0x210966[_0x9ca1('0x3f')]);var _0x429189={'where':_0x4aecaa[_0x9ca1('0x3a')]};return db[_0x9ca1('0x40')][_0x9ca1('0x1d')](_0x429189)['then'](function(_0x1c7762){_0x1284f1['count']=_0x1c7762;if(_0x210966[_0x9ca1('0x30')][_0x9ca1('0x41')]){_0x4aecaa[_0x9ca1('0x42')]=[{'all':!![]}];}return db[_0x9ca1('0x40')][_0x9ca1('0x43')](_0x4aecaa);})[_0x9ca1('0x25')](function(_0x3f3758){_0x1284f1['rows']=_0x3f3758;return _0x1284f1;})[_0x9ca1('0x25')](respondWithFilteredResult(_0x18ab52,_0x4aecaa))[_0x9ca1('0x44')](handleError(_0x18ab52,null));};exports[_0x9ca1('0x45')]=function(_0x5ce8c2,_0x37f585){var _0x28552c={'raw':![],'where':{'id':_0x5ce8c2[_0x9ca1('0x46')]['id']}},_0x2e8b7a={};_0x2e8b7a['model']=_[_0x9ca1('0x2f')](db[_0x9ca1('0x40')][_0x9ca1('0x2b')]);_0x2e8b7a[_0x9ca1('0x30')]=_[_0x9ca1('0x2f')](_0x5ce8c2[_0x9ca1('0x30')]);_0x2e8b7a[_0x9ca1('0x31')]=_['intersection'](_0x2e8b7a['model'],_0x2e8b7a[_0x9ca1('0x30')]);_0x28552c['attributes']=_['intersection'](_0x2e8b7a[_0x9ca1('0x2e')],qs[_0x9ca1('0x34')](_0x5ce8c2['query'][_0x9ca1('0x34')]));_0x28552c['attributes']=_0x28552c['attributes'][_0x9ca1('0x35')]?_0x28552c[_0x9ca1('0x32')]:_0x2e8b7a[_0x9ca1('0x2e')];if(_0x5ce8c2[_0x9ca1('0x30')][_0x9ca1('0x41')]){_0x28552c[_0x9ca1('0x42')]=[{'all':!![]}];}_0x28552c=_[_0x9ca1('0x3d')]({},_0x28552c,_0x5ce8c2[_0x9ca1('0x3f')]);return db[_0x9ca1('0x40')][_0x9ca1('0x47')](_0x28552c)[_0x9ca1('0x25')](handleEntityNotFound(_0x37f585,null))[_0x9ca1('0x25')](respondWithResult(_0x37f585,null))[_0x9ca1('0x44')](handleError(_0x37f585,null));};exports[_0x9ca1('0x48')]=function(_0x373d04,_0x3dc90f){return db[_0x9ca1('0x40')][_0x9ca1('0x48')](_0x373d04[_0x9ca1('0x49')],{})[_0x9ca1('0x25')](respondWithResult(_0x3dc90f,0xc9))['catch'](handleError(_0x3dc90f,null));};exports[_0x9ca1('0x4a')]=function(_0xd43c81,_0x1f08f3){if(_0xd43c81[_0x9ca1('0x49')]['id']){delete _0xd43c81[_0x9ca1('0x49')]['id'];}return db[_0x9ca1('0x40')]['find']({'where':{'id':_0xd43c81['params']['id']}})['then'](handleEntityNotFound(_0x1f08f3,null))['then'](saveUpdates(_0xd43c81[_0x9ca1('0x49')],null))[_0x9ca1('0x25')](respondWithResult(_0x1f08f3,null))[_0x9ca1('0x44')](handleError(_0x1f08f3,null));};exports[_0x9ca1('0x24')]=function(_0x4111e6,_0x2b098a){return db[_0x9ca1('0x40')][_0x9ca1('0x47')]({'where':{'id':_0x4111e6[_0x9ca1('0x46')]['id']}})['then'](handleEntityNotFound(_0x2b098a,null))[_0x9ca1('0x25')](removeEntity(_0x2b098a,null))[_0x9ca1('0x44')](handleError(_0x2b098a,null));};exports[_0x9ca1('0x4b')]=function(_0x3b2fa5,_0x1f0ff2,_0x1d2540){var _0x11dc2f={};var _0x597df5={};var _0x550eb3;var _0x170be8;return db[_0x9ca1('0x40')]['findOne']({'where':{'id':_0x3b2fa5[_0x9ca1('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f0ff2,null))['then'](function(_0x394135){if(_0x394135){_0x550eb3=_0x394135;_0x597df5[_0x9ca1('0x2e')]=_[_0x9ca1('0x2f')](db['ServicenowField']['rawAttributes']);_0x597df5['query']=_['keys'](_0x3b2fa5['query']);_0x597df5['filters']=_[_0x9ca1('0x33')](_0x597df5[_0x9ca1('0x2e')],_0x597df5[_0x9ca1('0x30')]);_0x11dc2f['attributes']=_[_0x9ca1('0x33')](_0x597df5[_0x9ca1('0x2e')],qs[_0x9ca1('0x34')](_0x3b2fa5['query'][_0x9ca1('0x34')]));_0x11dc2f[_0x9ca1('0x32')]=_0x11dc2f[_0x9ca1('0x32')][_0x9ca1('0x35')]?_0x11dc2f[_0x9ca1('0x32')]:_0x597df5[_0x9ca1('0x2e')];_0x11dc2f[_0x9ca1('0x38')]=qs[_0x9ca1('0x39')](_0x3b2fa5[_0x9ca1('0x30')][_0x9ca1('0x39')]);_0x11dc2f[_0x9ca1('0x3a')]=qs[_0x9ca1('0x31')](_['pick'](_0x3b2fa5[_0x9ca1('0x30')],_0x597df5[_0x9ca1('0x31')]));if(_0x3b2fa5[_0x9ca1('0x30')]['filter']){_0x11dc2f[_0x9ca1('0x3a')]=_['merge'](_0x11dc2f[_0x9ca1('0x3a')],{'$or':_[_0x9ca1('0x2a')](_0x11dc2f['attributes'],function(_0x44d3de){var _0x45181a={};_0x45181a[_0x44d3de]={'$like':'%'+_0x3b2fa5[_0x9ca1('0x30')][_0x9ca1('0x3c')]+'%'};return _0x45181a;})});}_0x11dc2f=_[_0x9ca1('0x3d')]({},_0x11dc2f,_0x3b2fa5[_0x9ca1('0x3f')]);return _0x550eb3['getFields'](_0x11dc2f);}})['then'](function(_0x60fa66){if(_0x60fa66){_0x170be8=_0x60fa66[_0x9ca1('0x35')];if(!_0x3b2fa5[_0x9ca1('0x30')][_0x9ca1('0x36')]('nolimit')){_0x11dc2f[_0x9ca1('0x1b')]=qs[_0x9ca1('0x1b')](_0x3b2fa5[_0x9ca1('0x30')][_0x9ca1('0x1b')]);_0x11dc2f[_0x9ca1('0x1a')]=qs[_0x9ca1('0x1a')](_0x3b2fa5[_0x9ca1('0x30')][_0x9ca1('0x1a')]);}return _0x550eb3[_0x9ca1('0x4b')](_0x11dc2f);}})[_0x9ca1('0x25')](function(_0x10f016){if(_0x10f016){return _0x10f016?{'count':_0x170be8,'rows':_0x10f016}:null;}})['then'](respondWithResult(_0x1f0ff2,null))[_0x9ca1('0x44')](handleError(_0x1f0ff2,null));};exports[_0x9ca1('0x4c')]=function(_0x37bbd0,_0x405738,_0x5c524a){var _0x38cced={};var _0x8a8053={};var _0x5aa501;var _0x362789;return db[_0x9ca1('0x40')][_0x9ca1('0x4d')]({'where':{'id':_0x37bbd0[_0x9ca1('0x46')]['id']}})['then'](handleEntityNotFound(_0x405738,null))[_0x9ca1('0x25')](function(_0x5ca1dc){if(_0x5ca1dc){_0x5aa501=_0x5ca1dc;_0x8a8053[_0x9ca1('0x2e')]=_[_0x9ca1('0x2f')](db['ServicenowField'][_0x9ca1('0x2b')]);_0x8a8053[_0x9ca1('0x30')]=_[_0x9ca1('0x2f')](_0x37bbd0[_0x9ca1('0x30')]);_0x8a8053[_0x9ca1('0x31')]=_[_0x9ca1('0x33')](_0x8a8053[_0x9ca1('0x2e')],_0x8a8053[_0x9ca1('0x30')]);_0x38cced[_0x9ca1('0x32')]=_['intersection'](_0x8a8053[_0x9ca1('0x2e')],qs[_0x9ca1('0x34')](_0x37bbd0[_0x9ca1('0x30')]['fields']));_0x38cced[_0x9ca1('0x32')]=_0x38cced[_0x9ca1('0x32')][_0x9ca1('0x35')]?_0x38cced[_0x9ca1('0x32')]:_0x8a8053['model'];_0x38cced[_0x9ca1('0x38')]=qs['sort'](_0x37bbd0[_0x9ca1('0x30')][_0x9ca1('0x39')]);_0x38cced[_0x9ca1('0x3a')]=qs[_0x9ca1('0x31')](_[_0x9ca1('0x3b')](_0x37bbd0[_0x9ca1('0x30')],_0x8a8053[_0x9ca1('0x31')]));if(_0x37bbd0[_0x9ca1('0x30')]['filter']){_0x38cced[_0x9ca1('0x3a')]=_['merge'](_0x38cced['where'],{'$or':_[_0x9ca1('0x2a')](_0x38cced[_0x9ca1('0x32')],function(_0xa11ffa){var _0x5c5da4={};_0x5c5da4[_0xa11ffa]={'$like':'%'+_0x37bbd0[_0x9ca1('0x30')]['filter']+'%'};return _0x5c5da4;})});}_0x38cced=_[_0x9ca1('0x3d')]({},_0x38cced,_0x37bbd0['options']);return _0x5aa501[_0x9ca1('0x4c')](_0x38cced);}})[_0x9ca1('0x25')](function(_0x2eab05){if(_0x2eab05){_0x362789=_0x2eab05[_0x9ca1('0x35')];if(!_0x37bbd0['query']['hasOwnProperty'](_0x9ca1('0x37'))){_0x38cced[_0x9ca1('0x1b')]=qs[_0x9ca1('0x1b')](_0x37bbd0[_0x9ca1('0x30')]['limit']);_0x38cced[_0x9ca1('0x1a')]=qs[_0x9ca1('0x1a')](_0x37bbd0['query']['offset']);}return _0x5aa501[_0x9ca1('0x4c')](_0x38cced);}})['then'](function(_0x1d6e4d){if(_0x1d6e4d){return _0x1d6e4d?{'count':_0x362789,'rows':_0x1d6e4d}:null;}})['then'](respondWithResult(_0x405738,null))[_0x9ca1('0x44')](handleError(_0x405738,null));};exports[_0x9ca1('0x4e')]=function(_0x56e404,_0x4e5bec,_0x5a55f9){var _0x3bec57={};var _0x5e519e={};var _0x96dffc;var _0x4eb162;return db[_0x9ca1('0x40')][_0x9ca1('0x4d')]({'where':{'id':_0x56e404['params']['id']}})[_0x9ca1('0x25')](handleEntityNotFound(_0x4e5bec,null))[_0x9ca1('0x25')](function(_0x3f7854){if(_0x3f7854){_0x96dffc=_0x3f7854;_0x5e519e[_0x9ca1('0x2e')]=_[_0x9ca1('0x2f')](db[_0x9ca1('0x4f')]['rawAttributes']);_0x5e519e[_0x9ca1('0x30')]=_[_0x9ca1('0x2f')](_0x56e404[_0x9ca1('0x30')]);_0x5e519e[_0x9ca1('0x31')]=_[_0x9ca1('0x33')](_0x5e519e['model'],_0x5e519e['query']);_0x3bec57[_0x9ca1('0x32')]=_[_0x9ca1('0x33')](_0x5e519e[_0x9ca1('0x2e')],qs[_0x9ca1('0x34')](_0x56e404['query'][_0x9ca1('0x34')]));_0x3bec57['attributes']=_0x3bec57[_0x9ca1('0x32')][_0x9ca1('0x35')]?_0x3bec57[_0x9ca1('0x32')]:_0x5e519e[_0x9ca1('0x2e')];_0x3bec57[_0x9ca1('0x38')]=qs[_0x9ca1('0x39')](_0x56e404[_0x9ca1('0x30')][_0x9ca1('0x39')]);_0x3bec57['where']=qs[_0x9ca1('0x31')](_[_0x9ca1('0x3b')](_0x56e404[_0x9ca1('0x30')],_0x5e519e['filters']));if(_0x56e404[_0x9ca1('0x30')][_0x9ca1('0x3c')]){_0x3bec57[_0x9ca1('0x3a')]=_['merge'](_0x3bec57[_0x9ca1('0x3a')],{'$or':_[_0x9ca1('0x2a')](_0x3bec57[_0x9ca1('0x32')],function(_0x5b80c7){var _0x2e8d0a={};_0x2e8d0a[_0x5b80c7]={'$like':'%'+_0x56e404['query'][_0x9ca1('0x3c')]+'%'};return _0x2e8d0a;})});}_0x3bec57=_[_0x9ca1('0x3d')]({},_0x3bec57,_0x56e404[_0x9ca1('0x3f')]);return _0x96dffc[_0x9ca1('0x4e')](_0x3bec57);}})[_0x9ca1('0x25')](function(_0x33cd54){if(_0x33cd54){_0x4eb162=_0x33cd54[_0x9ca1('0x35')];if(!_0x56e404[_0x9ca1('0x30')][_0x9ca1('0x36')](_0x9ca1('0x37'))){_0x3bec57['limit']=qs['limit'](_0x56e404[_0x9ca1('0x30')][_0x9ca1('0x1b')]);_0x3bec57[_0x9ca1('0x1a')]=qs[_0x9ca1('0x1a')](_0x56e404[_0x9ca1('0x30')][_0x9ca1('0x1a')]);}return _0x96dffc['getDescriptions'](_0x3bec57);}})[_0x9ca1('0x25')](function(_0x34a845){if(_0x34a845){return _0x34a845?{'count':_0x4eb162,'rows':_0x34a845}:null;}})[_0x9ca1('0x25')](respondWithResult(_0x4e5bec,null))[_0x9ca1('0x44')](handleError(_0x4e5bec,null));};
\ No newline at end of file
index 50521e1..35477c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe34f=['request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','define','ServicenowConfiguration','int_servicenow_configurations','moment','bluebird'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe34f,0xbc));var _0xfe34=function(_0x4481cc,_0x21280d){_0x4481cc=_0x4481cc-0x0;var _0x687002=_0xe34f[_0x4481cc];return _0x687002;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfe34('0x0'));var BPromise=require(_0xfe34('0x1'));var rp=require(_0xfe34('0x2'));var fs=require('fs');var path=require(_0xfe34('0x3'));var rimraf=require(_0xfe34('0x4'));var config=require(_0xfe34('0x5'));var attributes=require(_0xfe34('0x6'));module['exports']=function(_0x1a3c2b,_0x24e8cb){return _0x1a3c2b[_0xfe34('0x7')](_0xfe34('0x8'),attributes,{'tableName':_0xfe34('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb01a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','lodash','util','../../config/logger'];(function(_0x35c71e,_0x51fd8d){var _0x53d1f5=function(_0x27232e){while(--_0x27232e){_0x35c71e['push'](_0x35c71e['shift']());}};_0x53d1f5(++_0x51fd8d);}(_0xb01a,0x1a1));var _0xab01=function(_0x3e8270,_0x293590){_0x3e8270=_0x3e8270-0x0;var _0x1ccde9=_0xb01a[_0x3e8270];return _0x1ccde9;};'use strict';var _=require(_0xab01('0x0'));var util=require(_0xab01('0x1'));var logger=require(_0xab01('0x2'))(_0xab01('0x3'));var moment=require(_0xab01('0x4'));var BPromise=require(_0xab01('0x5'));var rp=require(_0xab01('0x6'));var fs=require('fs');var path=require(_0xab01('0x7'));var rimraf=require(_0xab01('0x8'));var config=require(_0xab01('0x9'));var attributes=require(_0xab01('0xa'));module[_0xab01('0xb')]=function(_0x22db85,_0x5d8dd9){return _0x22db85[_0xab01('0xc')](_0xab01('0xd'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21a5543..cfa5931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20c3=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ServicenowConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x236433,_0x21c2bb){var _0xf16531=function(_0x186a23){while(--_0x186a23){_0x236433['push'](_0x236433['shift']());}};_0xf16531(++_0x21c2bb);}(_0x20c3,0x1b0));var _0x320c=function(_0x17144e,_0x54b854){_0x17144e=_0x17144e-0x0;var _0x393e3e=_0x20c3[_0x17144e];return _0x393e3e;};'use strict';var _=require(_0x320c('0x0'));var util=require(_0x320c('0x1'));var moment=require(_0x320c('0x2'));var BPromise=require(_0x320c('0x3'));var rs=require(_0x320c('0x4'));var fs=require('fs');var Redis=require(_0x320c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x320c('0x6'));var logger=require(_0x320c('0x7'))(_0x320c('0x8'));var config=require(_0x320c('0x9'));var jayson=require(_0x320c('0xa'));var client=jayson[_0x320c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1eaec9,_0x1861d7,_0x45ca55){return new BPromise(function(_0x3ae2e5,_0x1ea230){return client['request'](_0x1eaec9,_0x45ca55)[_0x320c('0xc')](function(_0x34e145){logger[_0x320c('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x1861d7,'request\x20sent');logger[_0x320c('0xe')](_0x320c('0xf'),_0x1861d7,_0x320c('0x10'),JSON[_0x320c('0x11')](_0x34e145));if(_0x34e145['error']){if(_0x34e145[_0x320c('0x12')][_0x320c('0x13')]===0x1f4){logger['error'](_0x320c('0x14'),_0x1861d7,_0x34e145[_0x320c('0x12')]['message']);return _0x1ea230(_0x34e145['error'][_0x320c('0x15')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x1861d7,_0x34e145['error']['message']);return _0x3ae2e5(_0x34e145[_0x320c('0x12')]['message']);}else{logger[_0x320c('0xd')](_0x320c('0x14'),_0x1861d7,_0x320c('0x10'));_0x3ae2e5(_0x34e145['result'][_0x320c('0x15')]);}})[_0x320c('0x16')](function(_0x5ef03b){logger['error'](_0x320c('0x14'),_0x1861d7,_0x5ef03b);_0x1ea230(_0x5ef03b);});});}
\ No newline at end of file
+var _0x2313=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils'];(function(_0x446e47,_0x118f20){var _0x79c319=function(_0x559673){while(--_0x559673){_0x446e47['push'](_0x446e47['shift']());}};_0x79c319(++_0x118f20);}(_0x2313,0x145));var _0x3231=function(_0x355595,_0x820d3f){_0x355595=_0x355595-0x0;var _0x2e02e2=_0x2313[_0x355595];return _0x2e02e2;};'use strict';var _=require(_0x3231('0x0'));var util=require(_0x3231('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3231('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3231('0x3'))['db'];var utils=require(_0x3231('0x4'));var logger=require(_0x3231('0x5'))(_0x3231('0x6'));var config=require(_0x3231('0x7'));var jayson=require(_0x3231('0x8'));var client=jayson[_0x3231('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21f97c,_0x2f319f,_0x41010a){return new BPromise(function(_0x1dda61,_0x111f54){return client[_0x3231('0xa')](_0x21f97c,_0x41010a)[_0x3231('0xb')](function(_0x4e0b2f){logger[_0x3231('0xc')](_0x3231('0xd'),_0x2f319f,_0x3231('0xe'));logger[_0x3231('0xf')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x2f319f,_0x3231('0xe'),JSON[_0x3231('0x10')](_0x4e0b2f));if(_0x4e0b2f[_0x3231('0x11')]){if(_0x4e0b2f[_0x3231('0x11')][_0x3231('0x12')]===0x1f4){logger[_0x3231('0x11')](_0x3231('0xd'),_0x2f319f,_0x4e0b2f[_0x3231('0x11')]['message']);return _0x111f54(_0x4e0b2f[_0x3231('0x11')][_0x3231('0x13')]);}logger[_0x3231('0x11')](_0x3231('0xd'),_0x2f319f,_0x4e0b2f[_0x3231('0x11')][_0x3231('0x13')]);return _0x1dda61(_0x4e0b2f[_0x3231('0x11')][_0x3231('0x13')]);}else{logger[_0x3231('0xc')](_0x3231('0xd'),_0x2f319f,_0x3231('0xe'));_0x1dda61(_0x4e0b2f[_0x3231('0x14')][_0x3231('0x13')]);}})[_0x3231('0x15')](function(_0x41bd10){logger[_0x3231('0x11')](_0x3231('0xd'),_0x2f319f,_0x41bd10);_0x111f54(_0x41bd10);});});}
\ No newline at end of file
index 6e42600..62dacdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4569=['express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','post','create','destroy','exports','path','connect-timeout'];(function(_0xb08ddf,_0x350e1b){var _0x24dc29=function(_0x334bed){while(--_0x334bed){_0xb08ddf['push'](_0xb08ddf['shift']());}};_0x24dc29(++_0x350e1b);}(_0x4569,0x15c));var _0x9456=function(_0x2ad165,_0x44efd6){_0x2ad165=_0x2ad165-0x0;var _0x3394c3=_0x4569[_0x2ad165];return _0x3394c3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9456('0x0'));var timeout=require(_0x9456('0x1'));var express=require(_0x9456('0x2'));var router=express[_0x9456('0x3')]();var fs_extra=require(_0x9456('0x4'));var auth=require(_0x9456('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intServicenowField.controller');router[_0x9456('0x6')]('/',auth[_0x9456('0x7')](),controller[_0x9456('0x8')]);router[_0x9456('0x6')](_0x9456('0x9'),auth[_0x9456('0x7')](),controller['show']);router[_0x9456('0xa')]('/',auth['isAuthenticated'](),controller[_0x9456('0xb')]);router['put']('/:id',auth[_0x9456('0x7')](),controller['update']);router['delete']('/:id',auth[_0x9456('0x7')](),controller[_0x9456('0xc')]);module[_0x9456('0xd')]=router;
\ No newline at end of file
+var _0x7e2e=['path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create','put','destroy','util'];(function(_0x263665,_0x5b6d83){var _0x271748=function(_0x1a409d){while(--_0x1a409d){_0x263665['push'](_0x263665['shift']());}};_0x271748(++_0x5b6d83);}(_0x7e2e,0xcf));var _0xe7e2=function(_0x3e8d45,_0x23a4ed){_0x3e8d45=_0x3e8d45-0x0;var _0x3ae7b9=_0x7e2e[_0x3e8d45];return _0x3ae7b9;};'use strict';var multer=require('multer');var util=require(_0xe7e2('0x0'));var path=require(_0xe7e2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xe7e2('0x2'));var auth=require(_0xe7e2('0x3'));var interaction=require(_0xe7e2('0x4'));var config=require(_0xe7e2('0x5'));var controller=require(_0xe7e2('0x6'));router[_0xe7e2('0x7')]('/',auth[_0xe7e2('0x8')](),controller[_0xe7e2('0x9')]);router[_0xe7e2('0x7')](_0xe7e2('0xa'),auth['isAuthenticated'](),controller[_0xe7e2('0xb')]);router[_0xe7e2('0xc')]('/',auth[_0xe7e2('0x8')](),controller[_0xe7e2('0xd')]);router[_0xe7e2('0xe')](_0xe7e2('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7e2('0xa'),auth[_0xe7e2('0x8')](),controller[_0xe7e2('0xf')]);module['exports']=router;
\ No newline at end of file
index c23042c..246c198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4448=['customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x5912ab,_0x128475){var _0x2c4c73=function(_0x24ef39){while(--_0x24ef39){_0x5912ab['push'](_0x5912ab['shift']());}};_0x2c4c73(++_0x128475);}(_0x4448,0x151));var _0x8444=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4448[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x8444('0x0'));module[_0x8444('0x1')]={'type':{'type':Sequelize[_0x8444('0x2')](_0x8444('0x3'),_0x8444('0x4'),_0x8444('0x5'),'keyValue',_0x8444('0x6')),'defaultValue':_0x8444('0x3')},'content':{'type':Sequelize[_0x8444('0x7')]},'key':{'type':Sequelize[_0x8444('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0x8444('0x4'),_0x8444('0x5'))},'keyContent':{'type':Sequelize[_0x8444('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8444('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfcf9=['keyValue','picklist','string','STRING','BOOLEAN','sequelize','ENUM','customVariable'];(function(_0x341247,_0x25aa2d){var _0x137a22=function(_0x2794b9){while(--_0x2794b9){_0x341247['push'](_0x341247['shift']());}};_0x137a22(++_0x25aa2d);}(_0xfcf9,0x19d));var _0x9fcf=function(_0x50429a,_0x2f39b7){_0x50429a=_0x50429a-0x0;var _0x45e74d=_0xfcf9[_0x50429a];return _0x45e74d;};'use strict';var Sequelize=require(_0x9fcf('0x0'));module['exports']={'type':{'type':Sequelize[_0x9fcf('0x1')]('string','variable',_0x9fcf('0x2'),_0x9fcf('0x3'),_0x9fcf('0x4')),'defaultValue':_0x9fcf('0x5')},'content':{'type':Sequelize[_0x9fcf('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x9fcf('0x1')](_0x9fcf('0x5'),'variable',_0x9fcf('0x2'))},'keyContent':{'type':Sequelize[_0x9fcf('0x6')]},'idField':{'type':Sequelize[_0x9fcf('0x6')]},'nameField':{'type':Sequelize[_0x9fcf('0x6')]},'customField':{'type':Sequelize[_0x9fcf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9fcf('0x6')]}};
\ No newline at end of file
index b7c7f45..acf0e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c3d=['find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','fs-extra','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','then','destroy','stack','name','send','index','map','ServicenowField','fieldName','query','keys','intersection','model','attributes','fields','nolimit','order','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0x125984,_0x3b536e){var _0x1ca1e1=function(_0x364228){while(--_0x364228){_0x125984['push'](_0x125984['shift']());}};_0x1ca1e1(++_0x3b536e);}(_0x6c3d,0x85));var _0xd6c3=function(_0x410b10,_0x490889){_0x410b10=_0x410b10-0x0;var _0x14ac37=_0x6c3d[_0x410b10];return _0x14ac37;};'use strict';var emlformat=require(_0xd6c3('0x0'));var rimraf=require(_0xd6c3('0x1'));var zipdir=require(_0xd6c3('0x2'));var jsonpatch=require(_0xd6c3('0x3'));var rp=require(_0xd6c3('0x4'));var moment=require(_0xd6c3('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd6c3('0x6'));var path=require(_0xd6c3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd6c3('0x8'));var _=require('lodash');var squel=require(_0xd6c3('0x9'));var crypto=require('crypto');var jsforce=require(_0xd6c3('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xd6c3('0xb'));var querystring=require(_0xd6c3('0xc'));var Papa=require('papaparse');var Redis=require(_0xd6c3('0xd'));var authService=require(_0xd6c3('0xe'));var qs=require(_0xd6c3('0xf'));var as=require(_0xd6c3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd6c3('0x11'));var utils=require('../../config/utils');var config=require(_0xd6c3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xd6c3('0x13'))['db'];function respondWithStatusCode(_0x3081a6,_0x2c4112){_0x2c4112=_0x2c4112||0xcc;return function(_0x350796){if(_0x350796){return _0x3081a6['sendStatus'](_0x2c4112);}return _0x3081a6[_0xd6c3('0x14')](_0x2c4112)[_0xd6c3('0x15')]();};}function respondWithResult(_0x5e6150,_0xd6fef2){_0xd6fef2=_0xd6fef2||0xc8;return function(_0xa7076b){if(_0xa7076b){return _0x5e6150['status'](_0xd6fef2)[_0xd6c3('0x16')](_0xa7076b);}};}function respondWithFilteredResult(_0x4ef57b,_0x1f2767){return function(_0x3b3f94){if(_0x3b3f94){var _0x44be30=typeof _0x1f2767[_0xd6c3('0x17')]==='undefined'&&typeof _0x1f2767[_0xd6c3('0x18')]===_0xd6c3('0x19');var _0x53f3e3=_0x3b3f94[_0xd6c3('0x1a')];var _0x21ea1e=_0x44be30?0x0:_0x1f2767[_0xd6c3('0x17')];var _0x52bf8d=_0x44be30?_0x3b3f94['count']:_0x1f2767[_0xd6c3('0x17')]+_0x1f2767[_0xd6c3('0x18')];var _0x6aec89;if(_0x52bf8d>=_0x53f3e3){_0x52bf8d=_0x53f3e3;_0x6aec89=0xc8;}else{_0x6aec89=0xce;}_0x4ef57b['status'](_0x6aec89);return _0x4ef57b['set'](_0xd6c3('0x1b'),_0x21ea1e+'-'+_0x52bf8d+'/'+_0x53f3e3)[_0xd6c3('0x16')](_0x3b3f94);}return null;};}function patchUpdates(_0x130d50){return function(_0x5b474a){try{jsonpatch['apply'](_0x5b474a,_0x130d50,!![]);}catch(_0x163e71){return BPromise[_0xd6c3('0x1c')](_0x163e71);}return _0x5b474a['save']();};}function saveUpdates(_0x4ad040,_0x47bddb){return function(_0x1a1dfe){if(_0x1a1dfe){return _0x1a1dfe[_0xd6c3('0x1d')](_0x4ad040)[_0xd6c3('0x1e')](function(_0x313564){return _0x313564;});}return null;};}function removeEntity(_0x4e1dc6,_0x4eb6e2){return function(_0x55f64d){if(_0x55f64d){return _0x55f64d[_0xd6c3('0x1f')]()[_0xd6c3('0x1e')](function(){_0x4e1dc6[_0xd6c3('0x14')](0xcc)[_0xd6c3('0x15')]();});}};}function handleEntityNotFound(_0x3606a1,_0x30ce12){return function(_0x13d639){if(!_0x13d639){_0x3606a1['sendStatus'](0x194);}return _0x13d639;};}function handleError(_0x1da4de,_0x16faaa){_0x16faaa=_0x16faaa||0x1f4;return function(_0x3901e7){logger['error'](_0x3901e7[_0xd6c3('0x20')]);if(_0x3901e7[_0xd6c3('0x21')]){delete _0x3901e7[_0xd6c3('0x21')];}_0x1da4de[_0xd6c3('0x14')](_0x16faaa)[_0xd6c3('0x22')](_0x3901e7);};}exports[_0xd6c3('0x23')]=function(_0x20b6ca,_0x47333c){var _0x37abf3={},_0x359945={},_0x199877={'count':0x0,'rows':[]};var _0x74080a=_[_0xd6c3('0x24')](db[_0xd6c3('0x25')]['rawAttributes'],function(_0x13cf95){return{'name':_0x13cf95[_0xd6c3('0x26')],'type':_0x13cf95['type']['key']};});_0x359945['model']=_['map'](_0x74080a,_0xd6c3('0x21'));_0x359945[_0xd6c3('0x27')]=_[_0xd6c3('0x28')](_0x20b6ca[_0xd6c3('0x27')]);_0x359945['filters']=_[_0xd6c3('0x29')](_0x359945[_0xd6c3('0x2a')],_0x359945[_0xd6c3('0x27')]);_0x37abf3[_0xd6c3('0x2b')]=_['intersection'](_0x359945[_0xd6c3('0x2a')],qs[_0xd6c3('0x2c')](_0x20b6ca[_0xd6c3('0x27')]['fields']));_0x37abf3[_0xd6c3('0x2b')]=_0x37abf3['attributes']['length']?_0x37abf3[_0xd6c3('0x2b')]:_0x359945[_0xd6c3('0x2a')];if(!_0x20b6ca[_0xd6c3('0x27')]['hasOwnProperty'](_0xd6c3('0x2d'))){_0x37abf3[_0xd6c3('0x18')]=qs[_0xd6c3('0x18')](_0x20b6ca['query']['limit']);_0x37abf3[_0xd6c3('0x17')]=qs[_0xd6c3('0x17')](_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x17')]);}_0x37abf3[_0xd6c3('0x2e')]=qs['sort'](_0x20b6ca[_0xd6c3('0x27')]['sort']);_0x37abf3[_0xd6c3('0x2f')]=qs[_0xd6c3('0x30')](_[_0xd6c3('0x31')](_0x20b6ca['query'],_0x359945['filters']),_0x74080a);if(_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x32')]){_0x37abf3[_0xd6c3('0x2f')]=_[_0xd6c3('0x33')](_0x37abf3[_0xd6c3('0x2f')],{'$or':_[_0xd6c3('0x24')](_0x74080a,function(_0x4552b2){if(_0x4552b2[_0xd6c3('0x34')]!==_0xd6c3('0x35')){var _0x6b76c9={};_0x6b76c9[_0x4552b2['name']]={'$like':'%'+_0x20b6ca['query'][_0xd6c3('0x32')]+'%'};return _0x6b76c9;}})});}_0x37abf3=_[_0xd6c3('0x33')]({},_0x37abf3,_0x20b6ca[_0xd6c3('0x36')]);var _0x401778={'where':_0x37abf3[_0xd6c3('0x2f')]};return db[_0xd6c3('0x25')][_0xd6c3('0x1a')](_0x401778)['then'](function(_0x364616){_0x199877[_0xd6c3('0x1a')]=_0x364616;if(_0x20b6ca[_0xd6c3('0x27')][_0xd6c3('0x37')]){_0x37abf3[_0xd6c3('0x38')]=[{'all':!![]}];}return db['ServicenowField'][_0xd6c3('0x39')](_0x37abf3);})[_0xd6c3('0x1e')](function(_0x5854b7){_0x199877[_0xd6c3('0x3a')]=_0x5854b7;return _0x199877;})['then'](respondWithFilteredResult(_0x47333c,_0x37abf3))[_0xd6c3('0x3b')](handleError(_0x47333c,null));};exports[_0xd6c3('0x3c')]=function(_0x595a7f,_0x55f8a2){var _0x5a70f2={'raw':!![],'where':{'id':_0x595a7f[_0xd6c3('0x3d')]['id']}},_0x25c5d0={};_0x25c5d0['model']=_[_0xd6c3('0x28')](db[_0xd6c3('0x25')]['rawAttributes']);_0x25c5d0[_0xd6c3('0x27')]=_[_0xd6c3('0x28')](_0x595a7f['query']);_0x25c5d0[_0xd6c3('0x30')]=_[_0xd6c3('0x29')](_0x25c5d0[_0xd6c3('0x2a')],_0x25c5d0[_0xd6c3('0x27')]);_0x5a70f2[_0xd6c3('0x2b')]=_[_0xd6c3('0x29')](_0x25c5d0[_0xd6c3('0x2a')],qs[_0xd6c3('0x2c')](_0x595a7f['query'][_0xd6c3('0x2c')]));_0x5a70f2[_0xd6c3('0x2b')]=_0x5a70f2['attributes']['length']?_0x5a70f2[_0xd6c3('0x2b')]:_0x25c5d0['model'];if(_0x595a7f['query']['includeAll']){_0x5a70f2[_0xd6c3('0x38')]=[{'all':!![]}];}_0x5a70f2=_[_0xd6c3('0x33')]({},_0x5a70f2,_0x595a7f[_0xd6c3('0x36')]);return db[_0xd6c3('0x25')][_0xd6c3('0x3e')](_0x5a70f2)[_0xd6c3('0x1e')](handleEntityNotFound(_0x55f8a2,null))[_0xd6c3('0x1e')](respondWithResult(_0x55f8a2,null))[_0xd6c3('0x3b')](handleError(_0x55f8a2,null));};exports[_0xd6c3('0x3f')]=function(_0x284037,_0xb3d109){return db[_0xd6c3('0x25')][_0xd6c3('0x3f')](_0x284037[_0xd6c3('0x40')],{})[_0xd6c3('0x1e')](respondWithResult(_0xb3d109,0xc9))[_0xd6c3('0x3b')](handleError(_0xb3d109,null));};exports[_0xd6c3('0x1d')]=function(_0x1bce43,_0x3765d2){if(_0x1bce43['body']['id']){delete _0x1bce43[_0xd6c3('0x40')]['id'];}return db[_0xd6c3('0x25')][_0xd6c3('0x3e')]({'where':{'id':_0x1bce43[_0xd6c3('0x3d')]['id']}})[_0xd6c3('0x1e')](handleEntityNotFound(_0x3765d2,null))[_0xd6c3('0x1e')](saveUpdates(_0x1bce43[_0xd6c3('0x40')],null))[_0xd6c3('0x1e')](respondWithResult(_0x3765d2,null))['catch'](handleError(_0x3765d2,null));};exports[_0xd6c3('0x1f')]=function(_0xd5744e,_0x59cd23){return db[_0xd6c3('0x25')][_0xd6c3('0x3e')]({'where':{'id':_0xd5744e[_0xd6c3('0x3d')]['id']}})[_0xd6c3('0x1e')](handleEntityNotFound(_0x59cd23,null))[_0xd6c3('0x1e')](removeEntity(_0x59cd23,null))[_0xd6c3('0x3b')](handleError(_0x59cd23,null));};
\ No newline at end of file
+var _0xca32=['destroy','error','index','map','ServicenowField','rawAttributes','fieldName','type','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','name','includeAll','include','findAll','catch','show','params','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','save','update','then'];(function(_0x47b525,_0x598e5b){var _0x30fa46=function(_0x7fa0e5){while(--_0x7fa0e5){_0x47b525['push'](_0x47b525['shift']());}};_0x30fa46(++_0x598e5b);}(_0xca32,0x1be));var _0x2ca3=function(_0x4cb3b7,_0x398dca){_0x4cb3b7=_0x4cb3b7-0x0;var _0x94fdce=_0xca32[_0x4cb3b7];return _0x94fdce;};'use strict';var emlformat=require(_0x2ca3('0x0'));var rimraf=require(_0x2ca3('0x1'));var zipdir=require(_0x2ca3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2ca3('0x3'));var moment=require(_0x2ca3('0x4'));var BPromise=require(_0x2ca3('0x5'));var Mustache=require(_0x2ca3('0x6'));var util=require(_0x2ca3('0x7'));var path=require('path');var sox=require(_0x2ca3('0x8'));var csv=require(_0x2ca3('0x9'));var ejs=require(_0x2ca3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2ca3('0xb'));var crypto=require(_0x2ca3('0xc'));var jsforce=require(_0x2ca3('0xd'));var deskjs=require(_0x2ca3('0xe'));var toCsv=require(_0x2ca3('0x9'));var querystring=require(_0x2ca3('0xf'));var Papa=require('papaparse');var Redis=require(_0x2ca3('0x10'));var authService=require(_0x2ca3('0x11'));var qs=require(_0x2ca3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2ca3('0x13'));var logger=require(_0x2ca3('0x14'))(_0x2ca3('0x15'));var utils=require(_0x2ca3('0x16'));var config=require(_0x2ca3('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b6101,_0x40a543){_0x40a543=_0x40a543||0xcc;return function(_0x40ce70){if(_0x40ce70){return _0x5b6101[_0x2ca3('0x18')](_0x40a543);}return _0x5b6101[_0x2ca3('0x19')](_0x40a543)[_0x2ca3('0x1a')]();};}function respondWithResult(_0x2c8567,_0x182a16){_0x182a16=_0x182a16||0xc8;return function(_0x4fe617){if(_0x4fe617){return _0x2c8567[_0x2ca3('0x19')](_0x182a16)['json'](_0x4fe617);}};}function respondWithFilteredResult(_0x27b3b7,_0x549924){return function(_0x4b8acb){if(_0x4b8acb){var _0x519120=typeof _0x549924[_0x2ca3('0x1b')]==='undefined'&&typeof _0x549924[_0x2ca3('0x1c')]===_0x2ca3('0x1d');var _0x25755a=_0x4b8acb[_0x2ca3('0x1e')];var _0x59b586=_0x519120?0x0:_0x549924[_0x2ca3('0x1b')];var _0x5d9cf2=_0x519120?_0x4b8acb[_0x2ca3('0x1e')]:_0x549924[_0x2ca3('0x1b')]+_0x549924[_0x2ca3('0x1c')];var _0x2a27bf;if(_0x5d9cf2>=_0x25755a){_0x5d9cf2=_0x25755a;_0x2a27bf=0xc8;}else{_0x2a27bf=0xce;}_0x27b3b7[_0x2ca3('0x19')](_0x2a27bf);return _0x27b3b7[_0x2ca3('0x1f')](_0x2ca3('0x20'),_0x59b586+'-'+_0x5d9cf2+'/'+_0x25755a)['json'](_0x4b8acb);}return null;};}function patchUpdates(_0xfac1d1){return function(_0x4af07d){try{jsonpatch[_0x2ca3('0x21')](_0x4af07d,_0xfac1d1,!![]);}catch(_0x1e5eb4){return BPromise['reject'](_0x1e5eb4);}return _0x4af07d[_0x2ca3('0x22')]();};}function saveUpdates(_0x422a8e,_0x352708){return function(_0x257d11){if(_0x257d11){return _0x257d11[_0x2ca3('0x23')](_0x422a8e)[_0x2ca3('0x24')](function(_0x1b922a){return _0x1b922a;});}return null;};}function removeEntity(_0x1a63e6,_0x474a9d){return function(_0x378701){if(_0x378701){return _0x378701[_0x2ca3('0x25')]()[_0x2ca3('0x24')](function(){_0x1a63e6['status'](0xcc)[_0x2ca3('0x1a')]();});}};}function handleEntityNotFound(_0x4074b8,_0x3871e7){return function(_0x25ea42){if(!_0x25ea42){_0x4074b8['sendStatus'](0x194);}return _0x25ea42;};}function handleError(_0x48ac92,_0x467d23){_0x467d23=_0x467d23||0x1f4;return function(_0x2d5f83){logger[_0x2ca3('0x26')](_0x2d5f83['stack']);if(_0x2d5f83['name']){delete _0x2d5f83['name'];}_0x48ac92['status'](_0x467d23)['send'](_0x2d5f83);};}exports[_0x2ca3('0x27')]=function(_0x2fad90,_0x2b2ee1){var _0x33a756={},_0x3e32da={},_0x18481d={'count':0x0,'rows':[]};var _0xb1c6c5=_[_0x2ca3('0x28')](db[_0x2ca3('0x29')][_0x2ca3('0x2a')],function(_0x43fc0a){return{'name':_0x43fc0a[_0x2ca3('0x2b')],'type':_0x43fc0a[_0x2ca3('0x2c')]['key']};});_0x3e32da['model']=_['map'](_0xb1c6c5,'name');_0x3e32da[_0x2ca3('0x2d')]=_[_0x2ca3('0x2e')](_0x2fad90['query']);_0x3e32da[_0x2ca3('0x2f')]=_[_0x2ca3('0x30')](_0x3e32da['model'],_0x3e32da['query']);_0x33a756[_0x2ca3('0x31')]=_['intersection'](_0x3e32da[_0x2ca3('0x32')],qs[_0x2ca3('0x33')](_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x33')]));_0x33a756[_0x2ca3('0x31')]=_0x33a756['attributes']['length']?_0x33a756[_0x2ca3('0x31')]:_0x3e32da[_0x2ca3('0x32')];if(!_0x2fad90['query'][_0x2ca3('0x34')]('nolimit')){_0x33a756[_0x2ca3('0x1c')]=qs[_0x2ca3('0x1c')](_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x1c')]);_0x33a756[_0x2ca3('0x1b')]=qs[_0x2ca3('0x1b')](_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x1b')]);}_0x33a756[_0x2ca3('0x35')]=qs['sort'](_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x36')]);_0x33a756[_0x2ca3('0x37')]=qs[_0x2ca3('0x2f')](_['pick'](_0x2fad90['query'],_0x3e32da[_0x2ca3('0x2f')]),_0xb1c6c5);if(_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x38')]){_0x33a756['where']=_[_0x2ca3('0x39')](_0x33a756[_0x2ca3('0x37')],{'$or':_[_0x2ca3('0x28')](_0xb1c6c5,function(_0x4d6cb8){if(_0x4d6cb8[_0x2ca3('0x2c')]!==_0x2ca3('0x3a')){var _0x487c64={};_0x487c64[_0x4d6cb8[_0x2ca3('0x3b')]]={'$like':'%'+_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x38')]+'%'};return _0x487c64;}})});}_0x33a756=_['merge']({},_0x33a756,_0x2fad90['options']);var _0x3c5390={'where':_0x33a756[_0x2ca3('0x37')]};return db[_0x2ca3('0x29')][_0x2ca3('0x1e')](_0x3c5390)[_0x2ca3('0x24')](function(_0xf0ec1d){_0x18481d[_0x2ca3('0x1e')]=_0xf0ec1d;if(_0x2fad90[_0x2ca3('0x2d')][_0x2ca3('0x3c')]){_0x33a756[_0x2ca3('0x3d')]=[{'all':!![]}];}return db[_0x2ca3('0x29')][_0x2ca3('0x3e')](_0x33a756);})[_0x2ca3('0x24')](function(_0xcb1538){_0x18481d['rows']=_0xcb1538;return _0x18481d;})[_0x2ca3('0x24')](respondWithFilteredResult(_0x2b2ee1,_0x33a756))[_0x2ca3('0x3f')](handleError(_0x2b2ee1,null));};exports[_0x2ca3('0x40')]=function(_0x519c81,_0x2c2e85){var _0x4182d6={'raw':!![],'where':{'id':_0x519c81[_0x2ca3('0x41')]['id']}},_0x28b195={};_0x28b195['model']=_[_0x2ca3('0x2e')](db[_0x2ca3('0x29')][_0x2ca3('0x2a')]);_0x28b195[_0x2ca3('0x2d')]=_[_0x2ca3('0x2e')](_0x519c81[_0x2ca3('0x2d')]);_0x28b195[_0x2ca3('0x2f')]=_[_0x2ca3('0x30')](_0x28b195[_0x2ca3('0x32')],_0x28b195[_0x2ca3('0x2d')]);_0x4182d6[_0x2ca3('0x31')]=_[_0x2ca3('0x30')](_0x28b195[_0x2ca3('0x32')],qs['fields'](_0x519c81[_0x2ca3('0x2d')][_0x2ca3('0x33')]));_0x4182d6[_0x2ca3('0x31')]=_0x4182d6[_0x2ca3('0x31')]['length']?_0x4182d6[_0x2ca3('0x31')]:_0x28b195[_0x2ca3('0x32')];if(_0x519c81['query'][_0x2ca3('0x3c')]){_0x4182d6[_0x2ca3('0x3d')]=[{'all':!![]}];}_0x4182d6=_['merge']({},_0x4182d6,_0x519c81['options']);return db[_0x2ca3('0x29')]['find'](_0x4182d6)[_0x2ca3('0x24')](handleEntityNotFound(_0x2c2e85,null))['then'](respondWithResult(_0x2c2e85,null))['catch'](handleError(_0x2c2e85,null));};exports[_0x2ca3('0x42')]=function(_0x2ca500,_0x389ceb){return db[_0x2ca3('0x29')][_0x2ca3('0x42')](_0x2ca500[_0x2ca3('0x43')],{})[_0x2ca3('0x24')](respondWithResult(_0x389ceb,0xc9))[_0x2ca3('0x3f')](handleError(_0x389ceb,null));};exports[_0x2ca3('0x23')]=function(_0x28f356,_0x1874c1){if(_0x28f356[_0x2ca3('0x43')]['id']){delete _0x28f356[_0x2ca3('0x43')]['id'];}return db[_0x2ca3('0x29')][_0x2ca3('0x44')]({'where':{'id':_0x28f356[_0x2ca3('0x41')]['id']}})[_0x2ca3('0x24')](handleEntityNotFound(_0x1874c1,null))[_0x2ca3('0x24')](saveUpdates(_0x28f356[_0x2ca3('0x43')],null))['then'](respondWithResult(_0x1874c1,null))['catch'](handleError(_0x1874c1,null));};exports['destroy']=function(_0x338d20,_0x1df989){return db[_0x2ca3('0x29')]['find']({'where':{'id':_0x338d20['params']['id']}})[_0x2ca3('0x24')](handleEntityNotFound(_0x1df989,null))[_0x2ca3('0x24')](removeEntity(_0x1df989,null))['catch'](handleError(_0x1df989,null));};
\ No newline at end of file
index 5dfaf6c..e2147b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd819=['../../config/environment','./intServicenowField.attributes','exports','int_servicenow_fields','servicenow_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x496ac7,_0x5bd8f5){var _0x13f8ea=function(_0x40dfd9){while(--_0x40dfd9){_0x496ac7['push'](_0x496ac7['shift']());}};_0x13f8ea(++_0x5bd8f5);}(_0xd819,0x131));var _0x9d81=function(_0x398437,_0x382e5f){_0x398437=_0x398437-0x0;var _0x539597=_0xd819[_0x398437];return _0x539597;};'use strict';var _=require(_0x9d81('0x0'));var util=require(_0x9d81('0x1'));var logger=require(_0x9d81('0x2'))('api');var moment=require(_0x9d81('0x3'));var BPromise=require(_0x9d81('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9d81('0x5'));var rimraf=require(_0x9d81('0x6'));var config=require(_0x9d81('0x7'));var attributes=require(_0x9d81('0x8'));module[_0x9d81('0x9')]=function(_0x3f0db0,_0x199563){return _0x3f0db0['define']('ServicenowField',attributes,{'tableName':_0x9d81('0xa'),'paranoid':![],'indexes':[{'name':_0x9d81('0xb'),'fields':[_0x9d81('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2702=['path','../../config/environment','ServicenowField','servicenow_unique_index','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x170ef1,_0x1e38e3){var _0x39c1fd=function(_0x312f74){while(--_0x312f74){_0x170ef1['push'](_0x170ef1['shift']());}};_0x39c1fd(++_0x1e38e3);}(_0x2702,0x155));var _0x2270=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x2702[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x2270('0x0'));var util=require(_0x2270('0x1'));var logger=require(_0x2270('0x2'))(_0x2270('0x3'));var moment=require(_0x2270('0x4'));var BPromise=require(_0x2270('0x5'));var rp=require(_0x2270('0x6'));var fs=require('fs');var path=require(_0x2270('0x7'));var rimraf=require('rimraf');var config=require(_0x2270('0x8'));var attributes=require('./intServicenowField.attributes');module['exports']=function(_0x30141a,_0x4ceef1){return _0x30141a['define'](_0x2270('0x9'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x2270('0xa'),'fields':['idField',_0x2270('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1103a38..82aa5e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x96ae1d,_0x17ca87){var _0x43622e=function(_0x2aa3d2){while(--_0x2aa3d2){_0x96ae1d['push'](_0x96ae1d['shift']());}};_0x43622e(++_0x17ca87);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0xcb91[_0x506d2f];return _0x101255;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3ea580,_0x20c05e){var _0x5493be=function(_0x96c8b8){while(--_0x96c8b8){_0x3ea580['push'](_0x3ea580['shift']());}};_0x5493be(++_0x20c05e);}(_0xe706,0xa3));var _0x6e70=function(_0x304e0e,_0x2654a3){_0x304e0e=_0x304e0e-0x0;var _0x4449c8=_0xe706[_0x304e0e];return _0x4449c8;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index 2a31bfe..f8c1fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3b0148,_0x5a28e8){var _0x59e6fd=function(_0x659240){while(--_0x659240){_0x3b0148['push'](_0x3b0148['shift']());}};_0x59e6fd(++_0x5a28e8);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4b66bf,_0x410671){var _0x41aaa9=function(_0xb6f503){while(--_0xb6f503){_0x4b66bf['push'](_0x4b66bf['shift']());}};_0x41aaa9(++_0x410671);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 2f4f1e4..5cdbd16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3edaed,_0x2a73b0){var _0x3526d7=function(_0x3453f4){while(--_0x3453f4){_0x3edaed['push'](_0x3edaed['shift']());}};_0x3526d7(++_0x2a73b0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x1fd6e9,_0x406394){var _0x46d408=function(_0x5a7bbb){while(--_0x5a7bbb){_0x1fd6e9['push'](_0x1fd6e9['shift']());}};_0x46d408(++_0x406394);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 29fc1f8..a7295d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f04=['ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','SugarcrmAccount','includeAll','include','findAll','rows','catch','params','rawAttributes','create','body','find','findOne','SugarcrmConfiguration','getConfigurations','AccountId','Subjects','Descriptions','getDescriptions','channel','SugarcrmField','created_by','date_start','duration_hours','duration_minutes','parent_id','parent_name','password','remoteUri','slice','substring','lastIndexOf','format','%s%s','/service/v4_1/rest.php','login','stringify','username','Invalid\x20Login','Password\x20Expired','POST','get_module_fields','JSON','Calls','includes','label','endsWith','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','statusCode','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox'];(function(_0x30293c,_0x519ca2){var _0x506ca0=function(_0x4b00a4){while(--_0x4b00a4){_0x30293c['push'](_0x30293c['shift']());}};_0x506ca0(++_0x519ca2);}(_0x6f04,0x154));var _0x46f0=function(_0x3164a2,_0x4e4ca4){_0x3164a2=_0x3164a2-0x0;var _0x2b5b86=_0x6f04[_0x3164a2];return _0x2b5b86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46f0('0x0'));var zipdir=require(_0x46f0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x46f0('0x2'));var moment=require(_0x46f0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x46f0('0x4'));var util=require(_0x46f0('0x5'));var path=require(_0x46f0('0x6'));var sox=require(_0x46f0('0x7'));var csv=require('to-csv');var ejs=require(_0x46f0('0x8'));var fs=require('fs');var fs_extra=require(_0x46f0('0x9'));var _=require(_0x46f0('0xa'));var squel=require(_0x46f0('0xb'));var crypto=require(_0x46f0('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x46f0('0xd'));var querystring=require(_0x46f0('0xe'));var Papa=require(_0x46f0('0xf'));var Redis=require(_0x46f0('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x46f0('0x11'));var as=require(_0x46f0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46f0('0x13'))('api');var utils=require(_0x46f0('0x14'));var config=require(_0x46f0('0x15'));var licenseUtil=require(_0x46f0('0x16'));var db=require(_0x46f0('0x17'))['db'];var integrations=require(_0x46f0('0x18'));function respondWithStatusCode(_0x2b0c54,_0x91ea6f){_0x91ea6f=_0x91ea6f||0xcc;return function(_0x4fd11f){if(_0x4fd11f){return _0x2b0c54[_0x46f0('0x19')](_0x91ea6f);}return _0x2b0c54[_0x46f0('0x1a')](_0x91ea6f)[_0x46f0('0x1b')]();};}function respondWithResult(_0x48f053,_0x10f577){_0x10f577=_0x10f577||0xc8;return function(_0x2cc78f){if(_0x2cc78f){return _0x48f053[_0x46f0('0x1a')](_0x10f577)[_0x46f0('0x1c')](_0x2cc78f);}};}function respondWithFilteredResult(_0x46218c,_0x22e576){return function(_0x2b8a67){if(_0x2b8a67){var _0x37cca8=typeof _0x22e576[_0x46f0('0x1d')]===_0x46f0('0x1e')&&typeof _0x22e576['limit']==='undefined';var _0xe1dba8=_0x2b8a67[_0x46f0('0x1f')];var _0x1d238d=_0x37cca8?0x0:_0x22e576['offset'];var _0x123b49=_0x37cca8?_0x2b8a67[_0x46f0('0x1f')]:_0x22e576[_0x46f0('0x1d')]+_0x22e576[_0x46f0('0x20')];var _0x13d2ca;if(_0x123b49>=_0xe1dba8){_0x123b49=_0xe1dba8;_0x13d2ca=0xc8;}else{_0x13d2ca=0xce;}_0x46218c[_0x46f0('0x1a')](_0x13d2ca);return _0x46218c[_0x46f0('0x21')](_0x46f0('0x22'),_0x1d238d+'-'+_0x123b49+'/'+_0xe1dba8)[_0x46f0('0x1c')](_0x2b8a67);}return null;};}function patchUpdates(_0x2e88c4){return function(_0x500492){try{jsonpatch[_0x46f0('0x23')](_0x500492,_0x2e88c4,!![]);}catch(_0xf74a4d){return BPromise['reject'](_0xf74a4d);}return _0x500492[_0x46f0('0x24')]();};}function saveUpdates(_0x36e4f7,_0xfba51f){return function(_0x480f63){if(_0x480f63){return _0x480f63[_0x46f0('0x25')](_0x36e4f7)[_0x46f0('0x26')](function(_0xebf3f9){return _0xebf3f9;});}return null;};}function removeEntity(_0x5edc3d,_0x5e54ce){return function(_0x4d8e0c){if(_0x4d8e0c){return _0x4d8e0c[_0x46f0('0x27')]()[_0x46f0('0x26')](function(){_0x5edc3d[_0x46f0('0x1a')](0xcc)[_0x46f0('0x1b')]();});}};}function handleEntityNotFound(_0xe65e2e,_0xe3a09c){return function(_0x13a7c7){if(!_0x13a7c7){_0xe65e2e[_0x46f0('0x19')](0x194);}return _0x13a7c7;};}function handleError(_0x1a11c0,_0x46e7f1){_0x46e7f1=_0x46e7f1||0x1f4;return function(_0x2247fb){logger[_0x46f0('0x28')](_0x2247fb[_0x46f0('0x29')]);if(_0x2247fb[_0x46f0('0x2a')]){delete _0x2247fb['name'];}_0x1a11c0[_0x46f0('0x1a')](_0x46e7f1)[_0x46f0('0x2b')](_0x2247fb);};}exports['index']=function(_0x29473b,_0x1fb88e){var _0x1d44d4={},_0x6532c0={},_0x142a34={'count':0x0,'rows':[]};var _0x2eb174=_['map'](db['SugarcrmAccount']['rawAttributes'],function(_0x55fb7e){return{'name':_0x55fb7e['fieldName'],'type':_0x55fb7e['type'][_0x46f0('0x2c')]};});_0x6532c0['model']=_[_0x46f0('0x2d')](_0x2eb174,_0x46f0('0x2a'));_0x6532c0[_0x46f0('0x2e')]=_[_0x46f0('0x2f')](_0x29473b['query']);_0x6532c0[_0x46f0('0x30')]=_[_0x46f0('0x31')](_0x6532c0[_0x46f0('0x32')],_0x6532c0[_0x46f0('0x2e')]);_0x1d44d4[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0x6532c0[_0x46f0('0x32')],qs[_0x46f0('0x34')](_0x29473b[_0x46f0('0x2e')][_0x46f0('0x34')]));_0x1d44d4['attributes']=_0x1d44d4[_0x46f0('0x33')][_0x46f0('0x35')]?_0x1d44d4[_0x46f0('0x33')]:_0x6532c0['model'];if(!_0x29473b['query'][_0x46f0('0x36')](_0x46f0('0x37'))){_0x1d44d4[_0x46f0('0x20')]=qs[_0x46f0('0x20')](_0x29473b['query'][_0x46f0('0x20')]);_0x1d44d4['offset']=qs[_0x46f0('0x1d')](_0x29473b[_0x46f0('0x2e')][_0x46f0('0x1d')]);}_0x1d44d4[_0x46f0('0x38')]=qs[_0x46f0('0x39')](_0x29473b['query'][_0x46f0('0x39')]);_0x1d44d4[_0x46f0('0x3a')]=qs['filters'](_[_0x46f0('0x3b')](_0x29473b['query'],_0x6532c0[_0x46f0('0x30')]),_0x2eb174);if(_0x29473b[_0x46f0('0x2e')]['filter']){_0x1d44d4[_0x46f0('0x3a')]=_[_0x46f0('0x3c')](_0x1d44d4[_0x46f0('0x3a')],{'$or':_[_0x46f0('0x2d')](_0x2eb174,function(_0x51d9f8){if(_0x51d9f8[_0x46f0('0x3d')]!==_0x46f0('0x3e')){var _0x564474={};_0x564474[_0x51d9f8[_0x46f0('0x2a')]]={'$like':'%'+_0x29473b[_0x46f0('0x2e')][_0x46f0('0x3f')]+'%'};return _0x564474;}})});}_0x1d44d4=_[_0x46f0('0x3c')]({},_0x1d44d4,_0x29473b[_0x46f0('0x40')]);var _0x347b55={'where':_0x1d44d4[_0x46f0('0x3a')]};return db[_0x46f0('0x41')][_0x46f0('0x1f')](_0x347b55)[_0x46f0('0x26')](function(_0x3b7b80){_0x142a34[_0x46f0('0x1f')]=_0x3b7b80;if(_0x29473b[_0x46f0('0x2e')][_0x46f0('0x42')]){_0x1d44d4[_0x46f0('0x43')]=[{'all':!![]}];}return db[_0x46f0('0x41')][_0x46f0('0x44')](_0x1d44d4);})[_0x46f0('0x26')](function(_0x4dc74c){_0x142a34[_0x46f0('0x45')]=_0x4dc74c;return _0x142a34;})[_0x46f0('0x26')](respondWithFilteredResult(_0x1fb88e,_0x1d44d4))[_0x46f0('0x46')](handleError(_0x1fb88e,null));};exports['show']=function(_0xccf429,_0x1894bc){var _0x2b6056={'raw':![],'where':{'id':_0xccf429[_0x46f0('0x47')]['id']}},_0x2eac11={};_0x2eac11[_0x46f0('0x32')]=_[_0x46f0('0x2f')](db['SugarcrmAccount'][_0x46f0('0x48')]);_0x2eac11[_0x46f0('0x2e')]=_['keys'](_0xccf429[_0x46f0('0x2e')]);_0x2eac11['filters']=_[_0x46f0('0x31')](_0x2eac11['model'],_0x2eac11[_0x46f0('0x2e')]);_0x2b6056[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0x2eac11[_0x46f0('0x32')],qs[_0x46f0('0x34')](_0xccf429[_0x46f0('0x2e')][_0x46f0('0x34')]));_0x2b6056[_0x46f0('0x33')]=_0x2b6056[_0x46f0('0x33')][_0x46f0('0x35')]?_0x2b6056[_0x46f0('0x33')]:_0x2eac11[_0x46f0('0x32')];if(_0xccf429[_0x46f0('0x2e')][_0x46f0('0x42')]){_0x2b6056[_0x46f0('0x43')]=[{'all':!![]}];}_0x2b6056=_['merge']({},_0x2b6056,_0xccf429[_0x46f0('0x40')]);return db[_0x46f0('0x41')]['find'](_0x2b6056)[_0x46f0('0x26')](handleEntityNotFound(_0x1894bc,null))[_0x46f0('0x26')](respondWithResult(_0x1894bc,null))['catch'](handleError(_0x1894bc,null));};exports[_0x46f0('0x49')]=function(_0x2d2619,_0x261d29){return db['SugarcrmAccount'][_0x46f0('0x49')](_0x2d2619[_0x46f0('0x4a')],{})[_0x46f0('0x26')](respondWithResult(_0x261d29,0xc9))[_0x46f0('0x46')](handleError(_0x261d29,null));};exports[_0x46f0('0x25')]=function(_0x43d590,_0x3582e1){if(_0x43d590['body']['id']){delete _0x43d590['body']['id'];}return db[_0x46f0('0x41')][_0x46f0('0x4b')]({'where':{'id':_0x43d590[_0x46f0('0x47')]['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x3582e1,null))[_0x46f0('0x26')](saveUpdates(_0x43d590['body'],null))[_0x46f0('0x26')](respondWithResult(_0x3582e1,null))[_0x46f0('0x46')](handleError(_0x3582e1,null));};exports[_0x46f0('0x27')]=function(_0x124b1a,_0x2e2b8d){return db[_0x46f0('0x41')][_0x46f0('0x4b')]({'where':{'id':_0x124b1a[_0x46f0('0x47')]['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x2e2b8d,null))[_0x46f0('0x26')](removeEntity(_0x2e2b8d,null))[_0x46f0('0x46')](handleError(_0x2e2b8d,null));};exports['getConfigurations']=function(_0x648d74,_0x40cf73,_0x2d2b98){var _0x3413af={};var _0xe97c46={};var _0x5a85e3;var _0x406d48;return db[_0x46f0('0x41')][_0x46f0('0x4c')]({'where':{'id':_0x648d74[_0x46f0('0x47')]['id']}})['then'](handleEntityNotFound(_0x40cf73,null))['then'](function(_0x53f362){if(_0x53f362){_0x5a85e3=_0x53f362;_0xe97c46['model']=_[_0x46f0('0x2f')](db[_0x46f0('0x4d')][_0x46f0('0x48')]);_0xe97c46['query']=_[_0x46f0('0x2f')](_0x648d74['query']);_0xe97c46[_0x46f0('0x30')]=_[_0x46f0('0x31')](_0xe97c46[_0x46f0('0x32')],_0xe97c46[_0x46f0('0x2e')]);_0x3413af[_0x46f0('0x33')]=_[_0x46f0('0x31')](_0xe97c46[_0x46f0('0x32')],qs['fields'](_0x648d74[_0x46f0('0x2e')]['fields']));_0x3413af[_0x46f0('0x33')]=_0x3413af[_0x46f0('0x33')][_0x46f0('0x35')]?_0x3413af[_0x46f0('0x33')]:_0xe97c46[_0x46f0('0x32')];_0x3413af[_0x46f0('0x38')]=qs[_0x46f0('0x39')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x39')]);_0x3413af['where']=qs['filters'](_[_0x46f0('0x3b')](_0x648d74[_0x46f0('0x2e')],_0xe97c46['filters']));if(_0x648d74['query'][_0x46f0('0x3f')]){_0x3413af[_0x46f0('0x3a')]=_[_0x46f0('0x3c')](_0x3413af[_0x46f0('0x3a')],{'$or':_[_0x46f0('0x2d')](_0x3413af[_0x46f0('0x33')],function(_0xef3a72){var _0x16bab3={};_0x16bab3[_0xef3a72]={'$like':'%'+_0x648d74[_0x46f0('0x2e')][_0x46f0('0x3f')]+'%'};return _0x16bab3;})});}_0x3413af=_[_0x46f0('0x3c')]({},_0x3413af,_0x648d74[_0x46f0('0x40')]);return _0x5a85e3[_0x46f0('0x4e')](_0x3413af);}})[_0x46f0('0x26')](function(_0x2583d9){if(_0x2583d9){_0x406d48=_0x2583d9[_0x46f0('0x35')];if(!_0x648d74['query'][_0x46f0('0x36')](_0x46f0('0x37'))){_0x3413af['limit']=qs[_0x46f0('0x20')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x20')]);_0x3413af[_0x46f0('0x1d')]=qs[_0x46f0('0x1d')](_0x648d74[_0x46f0('0x2e')][_0x46f0('0x1d')]);}return _0x5a85e3['getConfigurations'](_0x3413af);}})[_0x46f0('0x26')](function(_0x190234){if(_0x190234){return _0x190234?{'count':_0x406d48,'rows':_0x190234}:null;}})[_0x46f0('0x26')](respondWithResult(_0x40cf73,null))[_0x46f0('0x46')](handleError(_0x40cf73,null));};exports['addConfiguration']=function(_0x5ea814,_0x4b9d03,_0xf8bbaa){if(_0x5ea814[_0x46f0('0x4a')]['id']){delete _0x5ea814[_0x46f0('0x4a')]['id'];}return db[_0x46f0('0x41')][_0x46f0('0x4c')]({'where':{'id':_0x5ea814['params']['id']}})[_0x46f0('0x26')](handleEntityNotFound(_0x4b9d03,null))['then'](function(_0x320cfc){if(_0x320cfc){_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x4f')]=_0x320cfc['id'];_0x5ea814['body'][_0x46f0('0x50')]=integrations['getSubjects'](_0x5ea814[_0x46f0('0x4a')]['channel'],_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x3d')]);_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x51')]=integrations[_0x46f0('0x52')](_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x53')],_0x5ea814[_0x46f0('0x4a')][_0x46f0('0x3d')]);return db['SugarcrmConfiguration'][_0x46f0('0x49')](_0x5ea814['body'],{'include':[{'model':db['SugarcrmField'],'as':_0x46f0('0x50')},{'model':db[_0x46f0('0x54')],'as':_0x46f0('0x51')}]});}return null;})[_0x46f0('0x26')](respondWithResult(_0x4b9d03,null))[_0x46f0('0x46')](handleError(_0x4b9d03,null));};exports['getFields']=function(_0x5969fe,_0x1f7285,_0x52c8a0){var _0x30f5b4='';var _0x3dca62=['id','name','assigned_user_id',_0x46f0('0x55'),'description',_0x46f0('0x56'),_0x46f0('0x57'),_0x46f0('0x58'),_0x46f0('0x59'),'parent_type',_0x46f0('0x5a'),'direction'];return db['SugarcrmAccount'][_0x46f0('0x4c')]({'where':{'id':_0x5969fe[_0x46f0('0x47')]['id']},'attributes':['id','username',_0x46f0('0x5b'),_0x46f0('0x5c')]})[_0x46f0('0x26')](handleEntityNotFound(_0x1f7285,null))[_0x46f0('0x26')](function(_0x406c8a){if(_0x406c8a){_0x30f5b4=_0x406c8a[_0x46f0('0x5c')];var _0x6be65b=_0x30f5b4[_0x46f0('0x5d')](-0x1);if(_0x6be65b==='/'){_0x30f5b4=_0x30f5b4[_0x46f0('0x5e')](0x0,_0x30f5b4[_0x46f0('0x5f')](_0x6be65b));}return rp({'method':'POST','uri':util[_0x46f0('0x60')](_0x46f0('0x61'),_0x30f5b4,_0x46f0('0x62')),'json':!![],'form':{'method':_0x46f0('0x63'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x46f0('0x64')]({'user_auth':{'user_name':_0x406c8a[_0x46f0('0x65')],'password':_0x406c8a['password'],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x29832b){if(_0x29832b&&_0x29832b[_0x46f0('0x2a')]!==_0x46f0('0x66')&&_0x29832b[_0x46f0('0x2a')]!==_0x46f0('0x67')){return rp({'method':_0x46f0('0x68'),'uri':util[_0x46f0('0x60')]('%s%s',_0x30f5b4,_0x46f0('0x62')),'json':!![],'form':{'method':_0x46f0('0x69'),'input_type':'JSON','response_type':_0x46f0('0x6a'),'rest_data':JSON[_0x46f0('0x64')]({'session':_0x29832b['id'],'module_name':_0x46f0('0x6b')})}})[_0x46f0('0x26')](function(_0xfc9ed5){if(_0xfc9ed5){var _0x58158a=_['values'](_0xfc9ed5['module_fields']);_['remove'](_0x58158a,function(_0x5b7575){return _0x3dca62[_0x46f0('0x6c')](_0x5b7575['name']);});return{'count':_0x58158a[_0x46f0('0x35')],'rows':_[_0x46f0('0x2d')](_0x58158a,function(_0x2444a5){return{'id':_0x2444a5[_0x46f0('0x2a')],'name':_0x2444a5[_0x46f0('0x6d')],'custom':_[_0x46f0('0x6e')](_0x2444a5[_0x46f0('0x2a')],'_c')?!![]:![],'options':_0x2444a5['options']?_['map'](_['values'](_0x2444a5['options']),function(_0x37d89c){return{'name':_0x37d89c['value'],'value':_0x37d89c[_0x46f0('0x2a')]};}):[]};})};}})[_0x46f0('0x26')](respondWithResult(_0x1f7285,null))[_0x46f0('0x46')](function(_0x53ea84){var _0x8a5e9=_0x5969fe['query'][_0x46f0('0x6f')]?0x1f4:_0x53ea84['statusCode']||0x1f4;logger[_0x46f0('0x28')](_0x46f0('0x70'),_0x46f0('0x71'),_0x8a5e9,JSON[_0x46f0('0x64')](_0x53ea84));delete _0x53ea84['name'];if(_0x8a5e9===0x191){_0x8a5e9=0x190;}_0x1f7285[_0x46f0('0x1a')](_0x8a5e9)['send'](_0x5969fe['query']['test']?{'message':_0x46f0('0x72'),'statusCode':_0x53ea84[_0x46f0('0x73')]}:_0x53ea84);});}else{var _0x4275b2=0x1f4;_0x1f7285[_0x46f0('0x1a')](_0x4275b2)[_0x46f0('0x2b')]({'message':_0x46f0('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x491f=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','undefined','limit','count','offset','status','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','SugarcrmAccount','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','rawAttributes','find','catch','create','body','params','getConfigurations','findOne','SugarcrmConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','Subjects','getFields','assigned_user_id','created_by','duration_minutes','parent_id','parent_type','direction','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','format','values','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x5e8ee4,_0x3ed1a6){var _0x28285b=function(_0x2b3ba8){while(--_0x2b3ba8){_0x5e8ee4['push'](_0x5e8ee4['shift']());}};_0x28285b(++_0x3ed1a6);}(_0x491f,0x153));var _0xf491=function(_0x513bfc,_0x1f6e4a){_0x513bfc=_0x513bfc-0x0;var _0x50d776=_0x491f[_0x513bfc];return _0x50d776;};'use strict';var emlformat=require(_0xf491('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf491('0x1'));var jsonpatch=require(_0xf491('0x2'));var rp=require(_0xf491('0x3'));var moment=require(_0xf491('0x4'));var BPromise=require(_0xf491('0x5'));var Mustache=require('mustache');var util=require(_0xf491('0x6'));var path=require(_0xf491('0x7'));var sox=require(_0xf491('0x8'));var csv=require('to-csv');var ejs=require(_0xf491('0x9'));var fs=require('fs');var fs_extra=require(_0xf491('0xa'));var _=require(_0xf491('0xb'));var squel=require('squel');var crypto=require(_0xf491('0xc'));var jsforce=require(_0xf491('0xd'));var deskjs=require(_0xf491('0xe'));var toCsv=require(_0xf491('0xf'));var querystring=require(_0xf491('0x10'));var Papa=require(_0xf491('0x11'));var Redis=require(_0xf491('0x12'));var authService=require(_0xf491('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xf491('0x14'));var hardwareService=require(_0xf491('0x15'));var logger=require(_0xf491('0x16'))('api');var utils=require(_0xf491('0x17'));var config=require(_0xf491('0x18'));var licenseUtil=require(_0xf491('0x19'));var db=require(_0xf491('0x1a'))['db'];var integrations=require(_0xf491('0x1b'));function respondWithStatusCode(_0x239474,_0x1fa6b7){_0x1fa6b7=_0x1fa6b7||0xcc;return function(_0x193c5d){if(_0x193c5d){return _0x239474[_0xf491('0x1c')](_0x1fa6b7);}return _0x239474['status'](_0x1fa6b7)[_0xf491('0x1d')]();};}function respondWithResult(_0x576e0e,_0x4fa554){_0x4fa554=_0x4fa554||0xc8;return function(_0x38e277){if(_0x38e277){return _0x576e0e['status'](_0x4fa554)[_0xf491('0x1e')](_0x38e277);}};}function respondWithFilteredResult(_0x423065,_0x159ba7){return function(_0xf54d3a){if(_0xf54d3a){var _0x399f16=typeof _0x159ba7['offset']===_0xf491('0x1f')&&typeof _0x159ba7[_0xf491('0x20')]===_0xf491('0x1f');var _0x342d10=_0xf54d3a[_0xf491('0x21')];var _0xd0af04=_0x399f16?0x0:_0x159ba7[_0xf491('0x22')];var _0x417eda=_0x399f16?_0xf54d3a['count']:_0x159ba7[_0xf491('0x22')]+_0x159ba7[_0xf491('0x20')];var _0x46e5ab;if(_0x417eda>=_0x342d10){_0x417eda=_0x342d10;_0x46e5ab=0xc8;}else{_0x46e5ab=0xce;}_0x423065[_0xf491('0x23')](_0x46e5ab);return _0x423065['set'](_0xf491('0x24'),_0xd0af04+'-'+_0x417eda+'/'+_0x342d10)['json'](_0xf54d3a);}return null;};}function patchUpdates(_0xade314){return function(_0xeeb312){try{jsonpatch[_0xf491('0x25')](_0xeeb312,_0xade314,!![]);}catch(_0x2c7791){return BPromise[_0xf491('0x26')](_0x2c7791);}return _0xeeb312[_0xf491('0x27')]();};}function saveUpdates(_0x2d7d93,_0x437074){return function(_0x4dd869){if(_0x4dd869){return _0x4dd869['update'](_0x2d7d93)['then'](function(_0xae6eca){return _0xae6eca;});}return null;};}function removeEntity(_0x1d7c33,_0x439297){return function(_0x84963f){if(_0x84963f){return _0x84963f[_0xf491('0x28')]()[_0xf491('0x29')](function(){_0x1d7c33['status'](0xcc)[_0xf491('0x1d')]();});}};}function handleEntityNotFound(_0x56ea09,_0xaf68d9){return function(_0xa1a7d2){if(!_0xa1a7d2){_0x56ea09[_0xf491('0x1c')](0x194);}return _0xa1a7d2;};}function handleError(_0x15e166,_0x1b016c){_0x1b016c=_0x1b016c||0x1f4;return function(_0x15f3ff){logger[_0xf491('0x2a')](_0x15f3ff['stack']);if(_0x15f3ff[_0xf491('0x2b')]){delete _0x15f3ff[_0xf491('0x2b')];}_0x15e166['status'](_0x1b016c)[_0xf491('0x2c')](_0x15f3ff);};}exports[_0xf491('0x2d')]=function(_0x15149b,_0x53f7eb){var _0x26ea20={},_0x4fbd95={},_0x1d8777={'count':0x0,'rows':[]};var _0x11ba2f=_[_0xf491('0x2e')](db[_0xf491('0x2f')]['rawAttributes'],function(_0x5ed1a8){return{'name':_0x5ed1a8[_0xf491('0x30')],'type':_0x5ed1a8[_0xf491('0x31')][_0xf491('0x32')]};});_0x4fbd95['model']=_[_0xf491('0x2e')](_0x11ba2f,'name');_0x4fbd95[_0xf491('0x33')]=_[_0xf491('0x34')](_0x15149b['query']);_0x4fbd95[_0xf491('0x35')]=_[_0xf491('0x36')](_0x4fbd95[_0xf491('0x37')],_0x4fbd95[_0xf491('0x33')]);_0x26ea20['attributes']=_[_0xf491('0x36')](_0x4fbd95[_0xf491('0x37')],qs[_0xf491('0x38')](_0x15149b[_0xf491('0x33')][_0xf491('0x38')]));_0x26ea20['attributes']=_0x26ea20[_0xf491('0x39')][_0xf491('0x3a')]?_0x26ea20[_0xf491('0x39')]:_0x4fbd95[_0xf491('0x37')];if(!_0x15149b[_0xf491('0x33')]['hasOwnProperty'](_0xf491('0x3b'))){_0x26ea20[_0xf491('0x20')]=qs[_0xf491('0x20')](_0x15149b[_0xf491('0x33')][_0xf491('0x20')]);_0x26ea20['offset']=qs[_0xf491('0x22')](_0x15149b['query']['offset']);}_0x26ea20[_0xf491('0x3c')]=qs[_0xf491('0x3d')](_0x15149b[_0xf491('0x33')][_0xf491('0x3d')]);_0x26ea20[_0xf491('0x3e')]=qs[_0xf491('0x35')](_[_0xf491('0x3f')](_0x15149b[_0xf491('0x33')],_0x4fbd95[_0xf491('0x35')]),_0x11ba2f);if(_0x15149b[_0xf491('0x33')]['filter']){_0x26ea20[_0xf491('0x3e')]=_['merge'](_0x26ea20[_0xf491('0x3e')],{'$or':_[_0xf491('0x2e')](_0x11ba2f,function(_0x558105){if(_0x558105[_0xf491('0x31')]!=='VIRTUAL'){var _0x139138={};_0x139138[_0x558105[_0xf491('0x2b')]]={'$like':'%'+_0x15149b[_0xf491('0x33')][_0xf491('0x40')]+'%'};return _0x139138;}})});}_0x26ea20=_[_0xf491('0x41')]({},_0x26ea20,_0x15149b[_0xf491('0x42')]);var _0x2db427={'where':_0x26ea20[_0xf491('0x3e')]};return db[_0xf491('0x2f')]['count'](_0x2db427)[_0xf491('0x29')](function(_0x26c085){_0x1d8777[_0xf491('0x21')]=_0x26c085;if(_0x15149b[_0xf491('0x33')][_0xf491('0x43')]){_0x26ea20[_0xf491('0x44')]=[{'all':!![]}];}return db[_0xf491('0x2f')]['findAll'](_0x26ea20);})[_0xf491('0x29')](function(_0x50e834){_0x1d8777[_0xf491('0x45')]=_0x50e834;return _0x1d8777;})['then'](respondWithFilteredResult(_0x53f7eb,_0x26ea20))['catch'](handleError(_0x53f7eb,null));};exports[_0xf491('0x46')]=function(_0x29e71b,_0x202376){var _0x7db3f4={'raw':![],'where':{'id':_0x29e71b['params']['id']}},_0x3d651a={};_0x3d651a[_0xf491('0x37')]=_[_0xf491('0x34')](db[_0xf491('0x2f')][_0xf491('0x47')]);_0x3d651a['query']=_[_0xf491('0x34')](_0x29e71b[_0xf491('0x33')]);_0x3d651a['filters']=_[_0xf491('0x36')](_0x3d651a['model'],_0x3d651a[_0xf491('0x33')]);_0x7db3f4['attributes']=_[_0xf491('0x36')](_0x3d651a[_0xf491('0x37')],qs['fields'](_0x29e71b[_0xf491('0x33')][_0xf491('0x38')]));_0x7db3f4['attributes']=_0x7db3f4['attributes'][_0xf491('0x3a')]?_0x7db3f4[_0xf491('0x39')]:_0x3d651a[_0xf491('0x37')];if(_0x29e71b[_0xf491('0x33')][_0xf491('0x43')]){_0x7db3f4[_0xf491('0x44')]=[{'all':!![]}];}_0x7db3f4=_['merge']({},_0x7db3f4,_0x29e71b[_0xf491('0x42')]);return db[_0xf491('0x2f')][_0xf491('0x48')](_0x7db3f4)[_0xf491('0x29')](handleEntityNotFound(_0x202376,null))[_0xf491('0x29')](respondWithResult(_0x202376,null))[_0xf491('0x49')](handleError(_0x202376,null));};exports[_0xf491('0x4a')]=function(_0x4017af,_0x466004){return db[_0xf491('0x2f')][_0xf491('0x4a')](_0x4017af['body'],{})['then'](respondWithResult(_0x466004,0xc9))['catch'](handleError(_0x466004,null));};exports['update']=function(_0x5506aa,_0x4072f8){if(_0x5506aa[_0xf491('0x4b')]['id']){delete _0x5506aa[_0xf491('0x4b')]['id'];}return db[_0xf491('0x2f')][_0xf491('0x48')]({'where':{'id':_0x5506aa[_0xf491('0x4c')]['id']}})[_0xf491('0x29')](handleEntityNotFound(_0x4072f8,null))[_0xf491('0x29')](saveUpdates(_0x5506aa[_0xf491('0x4b')],null))[_0xf491('0x29')](respondWithResult(_0x4072f8,null))[_0xf491('0x49')](handleError(_0x4072f8,null));};exports[_0xf491('0x28')]=function(_0x599213,_0x518359){return db['SugarcrmAccount'][_0xf491('0x48')]({'where':{'id':_0x599213[_0xf491('0x4c')]['id']}})[_0xf491('0x29')](handleEntityNotFound(_0x518359,null))[_0xf491('0x29')](removeEntity(_0x518359,null))[_0xf491('0x49')](handleError(_0x518359,null));};exports[_0xf491('0x4d')]=function(_0x30d3a5,_0x5eaae3,_0x3f4e16){var _0x27ec92={};var _0x10fcdb={};var _0x4649c8;var _0x2ae37a;return db[_0xf491('0x2f')][_0xf491('0x4e')]({'where':{'id':_0x30d3a5[_0xf491('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5eaae3,null))['then'](function(_0x1f90bb){if(_0x1f90bb){_0x4649c8=_0x1f90bb;_0x10fcdb[_0xf491('0x37')]=_[_0xf491('0x34')](db[_0xf491('0x4f')][_0xf491('0x47')]);_0x10fcdb['query']=_[_0xf491('0x34')](_0x30d3a5[_0xf491('0x33')]);_0x10fcdb['filters']=_[_0xf491('0x36')](_0x10fcdb[_0xf491('0x37')],_0x10fcdb[_0xf491('0x33')]);_0x27ec92[_0xf491('0x39')]=_[_0xf491('0x36')](_0x10fcdb[_0xf491('0x37')],qs[_0xf491('0x38')](_0x30d3a5[_0xf491('0x33')]['fields']));_0x27ec92[_0xf491('0x39')]=_0x27ec92[_0xf491('0x39')][_0xf491('0x3a')]?_0x27ec92[_0xf491('0x39')]:_0x10fcdb[_0xf491('0x37')];_0x27ec92[_0xf491('0x3c')]=qs[_0xf491('0x3d')](_0x30d3a5[_0xf491('0x33')]['sort']);_0x27ec92[_0xf491('0x3e')]=qs[_0xf491('0x35')](_['pick'](_0x30d3a5[_0xf491('0x33')],_0x10fcdb[_0xf491('0x35')]));if(_0x30d3a5[_0xf491('0x33')][_0xf491('0x40')]){_0x27ec92[_0xf491('0x3e')]=_[_0xf491('0x41')](_0x27ec92[_0xf491('0x3e')],{'$or':_['map'](_0x27ec92[_0xf491('0x39')],function(_0x12b805){var _0x304582={};_0x304582[_0x12b805]={'$like':'%'+_0x30d3a5[_0xf491('0x33')]['filter']+'%'};return _0x304582;})});}_0x27ec92=_[_0xf491('0x41')]({},_0x27ec92,_0x30d3a5[_0xf491('0x42')]);return _0x4649c8['getConfigurations'](_0x27ec92);}})[_0xf491('0x29')](function(_0x5c3f1b){if(_0x5c3f1b){_0x2ae37a=_0x5c3f1b[_0xf491('0x3a')];if(!_0x30d3a5['query']['hasOwnProperty'](_0xf491('0x3b'))){_0x27ec92[_0xf491('0x20')]=qs[_0xf491('0x20')](_0x30d3a5[_0xf491('0x33')][_0xf491('0x20')]);_0x27ec92[_0xf491('0x22')]=qs['offset'](_0x30d3a5[_0xf491('0x33')][_0xf491('0x22')]);}return _0x4649c8[_0xf491('0x4d')](_0x27ec92);}})['then'](function(_0x3d6c8e){if(_0x3d6c8e){return _0x3d6c8e?{'count':_0x2ae37a,'rows':_0x3d6c8e}:null;}})['then'](respondWithResult(_0x5eaae3,null))[_0xf491('0x49')](handleError(_0x5eaae3,null));};exports['addConfiguration']=function(_0x7fb24f,_0xee66a4,_0x11cf4e){if(_0x7fb24f[_0xf491('0x4b')]['id']){delete _0x7fb24f[_0xf491('0x4b')]['id'];}return db[_0xf491('0x2f')][_0xf491('0x4e')]({'where':{'id':_0x7fb24f[_0xf491('0x4c')]['id']}})[_0xf491('0x29')](handleEntityNotFound(_0xee66a4,null))[_0xf491('0x29')](function(_0x59932f){if(_0x59932f){_0x7fb24f[_0xf491('0x4b')][_0xf491('0x50')]=_0x59932f['id'];_0x7fb24f[_0xf491('0x4b')]['Subjects']=integrations[_0xf491('0x51')](_0x7fb24f[_0xf491('0x4b')][_0xf491('0x52')],_0x7fb24f[_0xf491('0x4b')][_0xf491('0x31')]);_0x7fb24f['body'][_0xf491('0x53')]=integrations[_0xf491('0x54')](_0x7fb24f[_0xf491('0x4b')]['channel'],_0x7fb24f[_0xf491('0x4b')][_0xf491('0x31')]);return db[_0xf491('0x4f')]['create'](_0x7fb24f[_0xf491('0x4b')],{'include':[{'model':db[_0xf491('0x55')],'as':_0xf491('0x56')},{'model':db[_0xf491('0x55')],'as':_0xf491('0x53')}]});}return null;})['then'](respondWithResult(_0xee66a4,null))[_0xf491('0x49')](handleError(_0xee66a4,null));};exports[_0xf491('0x57')]=function(_0x3a09bd,_0x1d2113,_0x524990){var _0x198ac6='';var _0x521c4c=['id',_0xf491('0x2b'),_0xf491('0x58'),_0xf491('0x59'),'description','date_start','duration_hours',_0xf491('0x5a'),_0xf491('0x5b'),_0xf491('0x5c'),'parent_name',_0xf491('0x5d')];return db[_0xf491('0x2f')][_0xf491('0x4e')]({'where':{'id':_0x3a09bd[_0xf491('0x4c')]['id']},'attributes':['id',_0xf491('0x5e'),_0xf491('0x5f'),_0xf491('0x60')]})[_0xf491('0x29')](handleEntityNotFound(_0x1d2113,null))['then'](function(_0x34acbb){if(_0x34acbb){_0x198ac6=_0x34acbb[_0xf491('0x60')];var _0x21c543=_0x198ac6[_0xf491('0x61')](-0x1);if(_0x21c543==='/'){_0x198ac6=_0x198ac6[_0xf491('0x62')](0x0,_0x198ac6[_0xf491('0x63')](_0x21c543));}return rp({'method':_0xf491('0x64'),'uri':util['format'](_0xf491('0x65'),_0x198ac6,_0xf491('0x66')),'json':!![],'form':{'method':_0xf491('0x67'),'input_type':_0xf491('0x68'),'response_type':_0xf491('0x68'),'rest_data':JSON[_0xf491('0x69')]({'user_auth':{'user_name':_0x34acbb['username'],'password':_0x34acbb[_0xf491('0x5f')],'encryption':_0xf491('0x6a')},'application':_0xf491('0x6b')})}});}})[_0xf491('0x29')](function(_0x45b66c){if(_0x45b66c&&_0x45b66c[_0xf491('0x2b')]!==_0xf491('0x6c')&&_0x45b66c[_0xf491('0x2b')]!=='Password\x20Expired'){return rp({'method':_0xf491('0x64'),'uri':util[_0xf491('0x6d')](_0xf491('0x65'),_0x198ac6,_0xf491('0x66')),'json':!![],'form':{'method':'get_module_fields','input_type':_0xf491('0x68'),'response_type':_0xf491('0x68'),'rest_data':JSON['stringify']({'session':_0x45b66c['id'],'module_name':'Calls'})}})[_0xf491('0x29')](function(_0x35e019){if(_0x35e019){var _0x18d165=_[_0xf491('0x6e')](_0x35e019['module_fields']);_['remove'](_0x18d165,function(_0x497456){return _0x521c4c['includes'](_0x497456[_0xf491('0x2b')]);});return{'count':_0x18d165[_0xf491('0x3a')],'rows':_[_0xf491('0x2e')](_0x18d165,function(_0x3f0800){return{'id':_0x3f0800[_0xf491('0x2b')],'name':_0x3f0800[_0xf491('0x6f')],'custom':_[_0xf491('0x70')](_0x3f0800[_0xf491('0x2b')],'_c')?!![]:![],'options':_0x3f0800[_0xf491('0x42')]?_[_0xf491('0x2e')](_['values'](_0x3f0800['options']),function(_0x41c388){return{'name':_0x41c388[_0xf491('0x71')],'value':_0x41c388[_0xf491('0x2b')]};}):[]};})};}})[_0xf491('0x29')](respondWithResult(_0x1d2113,null))['catch'](function(_0x49dc85){var _0x4340c3=_0x3a09bd[_0xf491('0x33')][_0xf491('0x72')]?0x1f4:_0x49dc85[_0xf491('0x73')]||0x1f4;logger[_0xf491('0x2a')](_0xf491('0x74'),'getFields',_0x4340c3,JSON[_0xf491('0x69')](_0x49dc85));delete _0x49dc85[_0xf491('0x2b')];if(_0x4340c3===0x191){_0x4340c3=0x190;}_0x1d2113[_0xf491('0x23')](_0x4340c3)[_0xf491('0x2c')](_0x3a09bd['query']['test']?{'message':_0xf491('0x75'),'statusCode':_0x49dc85['statusCode']}:_0x49dc85);});}else{var _0x4bf155=0x1f4;_0x1d2113['status'](_0x4bf155)[_0xf491('0x2c')]({'message':_0xf491('0x75'),'statusCode':0x190});}});};
\ No newline at end of file
index 2d22b13..e51b3c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6bc=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts'];(function(_0x45ad09,_0x521ab1){var _0x2084fd=function(_0x6fd212){while(--_0x6fd212){_0x45ad09['push'](_0x45ad09['shift']());}};_0x2084fd(++_0x521ab1);}(_0xf6bc,0xfd));var _0xcf6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xcf6b('0x0'))('api');var moment=require(_0xcf6b('0x1'));var BPromise=require(_0xcf6b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf6b('0x3'));var rimraf=require(_0xcf6b('0x4'));var config=require(_0xcf6b('0x5'));var attributes=require(_0xcf6b('0x6'));var integrations=require(_0xcf6b('0x7'));module['exports']=function(_0x18b368,_0x56e48c){return _0x18b368[_0xcf6b('0x8')](_0xcf6b('0x9'),attributes,{'tableName':_0xcf6b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdec=['rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x15fb0b,_0x44b92d){var _0x423f50=function(_0x32b8c5){while(--_0x32b8c5){_0x15fb0b['push'](_0x15fb0b['shift']());}};_0x423f50(++_0x44b92d);}(_0xcdec,0x173));var _0xccde=function(_0x221f8d,_0x16634e){_0x221f8d=_0x221f8d-0x0;var _0x23e05e=_0xcdec[_0x221f8d];return _0x23e05e;};'use strict';var _=require(_0xccde('0x0'));var util=require(_0xccde('0x1'));var logger=require(_0xccde('0x2'))('api');var moment=require(_0xccde('0x3'));var BPromise=require('bluebird');var rp=require(_0xccde('0x4'));var fs=require('fs');var path=require(_0xccde('0x5'));var rimraf=require(_0xccde('0x6'));var config=require('../../config/environment');var attributes=require(_0xccde('0x7'));var integrations=require(_0xccde('0x8'));module[_0xccde('0x9')]=function(_0x36cd2c,_0xd5dd71){return _0x36cd2c[_0xccde('0xa')](_0xccde('0xb'),attributes,{'tableName':_0xccde('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da253ec..2a29f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d39=['rpc','../../config/environment','jayson/promise','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SugarcrmAccount','options','attributes','limit','include','map','model','GetSugarcrmAccount','ShowSugarcrmAccount','raw','moment','randomstring','ioredis','../../mysqldb'];(function(_0x458dac,_0x3f5a32){var _0x1c9824=function(_0x25e9e3){while(--_0x25e9e3){_0x458dac['push'](_0x458dac['shift']());}};_0x1c9824(++_0x3f5a32);}(_0x8d39,0xd5));var _0x98d3=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0x8d39[_0x30c649];return _0x3edfb9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x98d3('0x0'));var BPromise=require('bluebird');var rs=require(_0x98d3('0x1'));var fs=require('fs');var Redis=require(_0x98d3('0x2'));var db=require(_0x98d3('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x98d3('0x4'));var config=require(_0x98d3('0x5'));var jayson=require(_0x98d3('0x6'));var client=jayson['client'][_0x98d3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4613dc,_0x3d1a25,_0x5e6029){return new BPromise(function(_0x59f075,_0x28f74b){return client[_0x98d3('0x8')](_0x4613dc,_0x5e6029)[_0x98d3('0x9')](function(_0x4a8dba){logger[_0x98d3('0xa')](_0x98d3('0xb'),_0x3d1a25,_0x98d3('0xc'));logger[_0x98d3('0xd')](_0x98d3('0xe'),_0x3d1a25,_0x98d3('0xc'),JSON[_0x98d3('0xf')](_0x4a8dba));if(_0x4a8dba[_0x98d3('0x10')]){if(_0x4a8dba[_0x98d3('0x10')][_0x98d3('0x11')]===0x1f4){logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4a8dba['error']['message']);return _0x28f74b(_0x4a8dba['error'][_0x98d3('0x12')]);}logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4a8dba['error'][_0x98d3('0x12')]);return _0x59f075(_0x4a8dba[_0x98d3('0x10')][_0x98d3('0x12')]);}else{logger[_0x98d3('0xa')](_0x98d3('0xb'),_0x3d1a25,_0x98d3('0xc'));_0x59f075(_0x4a8dba[_0x98d3('0x13')][_0x98d3('0x12')]);}})[_0x98d3('0x14')](function(_0x4e9eb6){logger['error'](_0x98d3('0xb'),_0x3d1a25,_0x4e9eb6);_0x28f74b(_0x4e9eb6);});});}exports['GetSugarcrmAccount']=function(_0x1804e9){var _0x46e16b=this;return new Promise(function(_0x2a018a,_0x407521){return db[_0x98d3('0x15')]['findAll']({'raw':_0x1804e9['options']?_0x1804e9[_0x98d3('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options']['where']||null:null,'attributes':_0x1804e9[_0x98d3('0x16')]?_0x1804e9[_0x98d3('0x16')][_0x98d3('0x17')]||null:null,'limit':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options'][_0x98d3('0x18')]||null:null,'include':_0x1804e9[_0x98d3('0x16')]?_0x1804e9['options'][_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x1804e9[_0x98d3('0x16')][_0x98d3('0x19')],function(_0x40cfc6){return{'model':db[_0x40cfc6[_0x98d3('0x1b')]],'as':_0x40cfc6['as'],'attributes':_0x40cfc6[_0x98d3('0x17')],'include':_0x40cfc6['include']?_[_0x98d3('0x1a')](_0x40cfc6[_0x98d3('0x19')],function(_0xf959d3){return{'model':db[_0xf959d3['model']],'as':_0xf959d3['as'],'attributes':_0xf959d3[_0x98d3('0x17')],'include':_0xf959d3[_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0xf959d3['include'],function(_0xc76951){return{'model':db[_0xc76951[_0x98d3('0x1b')]],'as':_0xc76951['as'],'attributes':_0xc76951[_0x98d3('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x6e732a){logger[_0x98d3('0xa')](_0x98d3('0x1c'),_0x1804e9);logger[_0x98d3('0xd')](_0x98d3('0x1c'),_0x1804e9,JSON[_0x98d3('0xf')](_0x6e732a));_0x2a018a(_0x6e732a);})[_0x98d3('0x14')](function(_0x2aacfc){logger['error'](_0x98d3('0x1c'),_0x2aacfc[_0x98d3('0x12')],_0x1804e9);_0x407521(_0x46e16b[_0x98d3('0x10')](0x1f4,_0x2aacfc['message']));});});};exports[_0x98d3('0x1d')]=function(_0x542d2f){var _0x2c3fb4=this;return new Promise(function(_0x121f24,_0x369848){return db[_0x98d3('0x15')]['find']({'raw':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x1e')]===undefined?!![]:![]:!![],'where':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')]['where']||null:null,'attributes':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x17')]||null:null,'include':_0x542d2f[_0x98d3('0x16')]?_0x542d2f[_0x98d3('0x16')][_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x542d2f[_0x98d3('0x16')]['include'],function(_0x4b2e99){return{'model':db[_0x4b2e99[_0x98d3('0x1b')]],'as':_0x4b2e99['as'],'attributes':_0x4b2e99[_0x98d3('0x17')],'include':_0x4b2e99['include']?_[_0x98d3('0x1a')](_0x4b2e99['include'],function(_0x347770){return{'model':db[_0x347770[_0x98d3('0x1b')]],'as':_0x347770['as'],'attributes':_0x347770['attributes'],'include':_0x347770[_0x98d3('0x19')]?_[_0x98d3('0x1a')](_0x347770[_0x98d3('0x19')],function(_0xbbf5f3){return{'model':db[_0xbbf5f3[_0x98d3('0x1b')]],'as':_0xbbf5f3['as'],'attributes':_0xbbf5f3[_0x98d3('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c8263){logger[_0x98d3('0xa')](_0x98d3('0x1d'),_0x542d2f);logger[_0x98d3('0xd')](_0x98d3('0x1d'),_0x542d2f,JSON[_0x98d3('0xf')](_0x3c8263));_0x121f24(_0x3c8263);})[_0x98d3('0x14')](function(_0x5d168d){logger[_0x98d3('0x10')]('ShowSugarcrmAccount',_0x5d168d['message'],_0x542d2f);_0x369848(_0x2c3fb4[_0x98d3('0x10')](0x1f4,_0x5d168d['message']));});});};
\ No newline at end of file
+var _0x1de8=['model','stringify','ShowSugarcrmAccount','SugarcrmAccount','find','raw','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetSugarcrmAccount','findAll','options','where','attributes','limit','include','map'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1de8,0x78));var _0x81de=function(_0x3b76f7,_0x566c53){_0x3b76f7=_0x3b76f7-0x0;var _0x43984e=_0x1de8[_0x3b76f7];return _0x43984e;};'use strict';var _=require('lodash');var util=require(_0x81de('0x0'));var moment=require(_0x81de('0x1'));var BPromise=require(_0x81de('0x2'));var rs=require(_0x81de('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x81de('0x4'))['db'];var utils=require(_0x81de('0x5'));var logger=require(_0x81de('0x6'))(_0x81de('0x7'));var config=require(_0x81de('0x8'));var jayson=require(_0x81de('0x9'));var client=jayson[_0x81de('0xa')][_0x81de('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28f7d7,_0x25d3eb,_0x1f1d5c){return new BPromise(function(_0x136df9,_0x74b789){return client[_0x81de('0xc')](_0x28f7d7,_0x1f1d5c)[_0x81de('0xd')](function(_0x57f39d){logger[_0x81de('0xe')](_0x81de('0xf'),_0x25d3eb,_0x81de('0x10'));logger[_0x81de('0x11')](_0x81de('0x12'),_0x25d3eb,_0x81de('0x10'),JSON['stringify'](_0x57f39d));if(_0x57f39d['error']){if(_0x57f39d[_0x81de('0x13')][_0x81de('0x14')]===0x1f4){logger[_0x81de('0x13')](_0x81de('0xf'),_0x25d3eb,_0x57f39d[_0x81de('0x13')][_0x81de('0x15')]);return _0x74b789(_0x57f39d[_0x81de('0x13')][_0x81de('0x15')]);}logger[_0x81de('0x13')]('SugarcrmAccount,\x20%s,\x20%s',_0x25d3eb,_0x57f39d[_0x81de('0x13')]['message']);return _0x136df9(_0x57f39d[_0x81de('0x13')]['message']);}else{logger[_0x81de('0xe')](_0x81de('0xf'),_0x25d3eb,_0x81de('0x10'));_0x136df9(_0x57f39d[_0x81de('0x16')][_0x81de('0x15')]);}})[_0x81de('0x17')](function(_0x733a8b){logger[_0x81de('0x13')]('SugarcrmAccount,\x20%s,\x20%s',_0x25d3eb,_0x733a8b);_0x74b789(_0x733a8b);});});}exports[_0x81de('0x18')]=function(_0x1ed1d0){var _0x2e00b3=this;return new Promise(function(_0x40848f,_0x19e091){return db['SugarcrmAccount'][_0x81de('0x19')]({'raw':_0x1ed1d0['options']?_0x1ed1d0[_0x81de('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1ed1d0[_0x81de('0x1a')]?_0x1ed1d0[_0x81de('0x1a')][_0x81de('0x1b')]||null:null,'attributes':_0x1ed1d0['options']?_0x1ed1d0[_0x81de('0x1a')][_0x81de('0x1c')]||null:null,'limit':_0x1ed1d0[_0x81de('0x1a')]?_0x1ed1d0[_0x81de('0x1a')][_0x81de('0x1d')]||null:null,'include':_0x1ed1d0[_0x81de('0x1a')]?_0x1ed1d0[_0x81de('0x1a')][_0x81de('0x1e')]?_[_0x81de('0x1f')](_0x1ed1d0[_0x81de('0x1a')][_0x81de('0x1e')],function(_0x4c8cd0){return{'model':db[_0x4c8cd0[_0x81de('0x20')]],'as':_0x4c8cd0['as'],'attributes':_0x4c8cd0[_0x81de('0x1c')],'include':_0x4c8cd0[_0x81de('0x1e')]?_[_0x81de('0x1f')](_0x4c8cd0[_0x81de('0x1e')],function(_0x5cdd65){return{'model':db[_0x5cdd65[_0x81de('0x20')]],'as':_0x5cdd65['as'],'attributes':_0x5cdd65[_0x81de('0x1c')],'include':_0x5cdd65[_0x81de('0x1e')]?_[_0x81de('0x1f')](_0x5cdd65[_0x81de('0x1e')],function(_0x356741){return{'model':db[_0x356741['model']],'as':_0x356741['as'],'attributes':_0x356741[_0x81de('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x81de('0xd')](function(_0x218a08){logger[_0x81de('0xe')]('GetSugarcrmAccount',_0x1ed1d0);logger['debug'](_0x81de('0x18'),_0x1ed1d0,JSON[_0x81de('0x21')](_0x218a08));_0x40848f(_0x218a08);})['catch'](function(_0x3681cf){logger['error'](_0x81de('0x18'),_0x3681cf[_0x81de('0x15')],_0x1ed1d0);_0x19e091(_0x2e00b3['error'](0x1f4,_0x3681cf['message']));});});};exports[_0x81de('0x22')]=function(_0x2171c3){var _0x2af8db=this;return new Promise(function(_0x515c4b,_0x4ce381){return db[_0x81de('0x23')][_0x81de('0x24')]({'raw':_0x2171c3[_0x81de('0x1a')]?_0x2171c3[_0x81de('0x1a')][_0x81de('0x25')]===undefined?!![]:![]:!![],'where':_0x2171c3[_0x81de('0x1a')]?_0x2171c3[_0x81de('0x1a')]['where']||null:null,'attributes':_0x2171c3[_0x81de('0x1a')]?_0x2171c3['options'][_0x81de('0x1c')]||null:null,'include':_0x2171c3['options']?_0x2171c3['options']['include']?_['map'](_0x2171c3[_0x81de('0x1a')][_0x81de('0x1e')],function(_0xb6316d){return{'model':db[_0xb6316d[_0x81de('0x20')]],'as':_0xb6316d['as'],'attributes':_0xb6316d[_0x81de('0x1c')],'include':_0xb6316d[_0x81de('0x1e')]?_[_0x81de('0x1f')](_0xb6316d[_0x81de('0x1e')],function(_0x224bc8){return{'model':db[_0x224bc8[_0x81de('0x20')]],'as':_0x224bc8['as'],'attributes':_0x224bc8[_0x81de('0x1c')],'include':_0x224bc8[_0x81de('0x1e')]?_[_0x81de('0x1f')](_0x224bc8['include'],function(_0x3d802f){return{'model':db[_0x3d802f[_0x81de('0x20')]],'as':_0x3d802f['as'],'attributes':_0x3d802f[_0x81de('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x81de('0xd')](function(_0x137015){logger[_0x81de('0xe')]('ShowSugarcrmAccount',_0x2171c3);logger[_0x81de('0x11')](_0x81de('0x22'),_0x2171c3,JSON[_0x81de('0x21')](_0x137015));_0x515c4b(_0x137015);})[_0x81de('0x17')](function(_0x3aac8c){logger['error'](_0x81de('0x22'),_0x3aac8c[_0x81de('0x15')],_0x2171c3);_0x4ce381(_0x2af8db[_0x81de('0x13')](0x1f4,_0x3aac8c[_0x81de('0x15')]));});});};
\ No newline at end of file
index 185cfdd..01f7425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd5=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','destroy','exports','multer','util','path','express'];(function(_0x30dfa4,_0x1a6275){var _0x185b37=function(_0x1a8025){while(--_0x1a8025){_0x30dfa4['push'](_0x30dfa4['shift']());}};_0x185b37(++_0x1a6275);}(_0xecd5,0x15c));var _0x5ecd=function(_0x3b6149,_0x3fdcc2){_0x3b6149=_0x3b6149-0x0;var _0x4472d7=_0xecd5[_0x3b6149];return _0x4472d7;};'use strict';var multer=require(_0x5ecd('0x0'));var util=require(_0x5ecd('0x1'));var path=require(_0x5ecd('0x2'));var timeout=require('connect-timeout');var express=require(_0x5ecd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5ecd('0x4'));var interaction=require(_0x5ecd('0x5'));var config=require(_0x5ecd('0x6'));var controller=require(_0x5ecd('0x7'));router['get']('/',auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x9')]);router[_0x5ecd('0xa')](_0x5ecd('0xb'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0xc')]);router[_0x5ecd('0xa')](_0x5ecd('0xd'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0xe')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0x5ecd('0xf')]);router['get'](_0x5ecd('0x10'),auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x11')]);router['post']('/',auth[_0x5ecd('0x8')](),controller[_0x5ecd('0x12')]);router[_0x5ecd('0x13')](_0x5ecd('0xb'),auth[_0x5ecd('0x8')](),controller['update']);router['delete'](_0x5ecd('0xb'),auth['isAuthenticated'](),controller[_0x5ecd('0x14')]);module[_0x5ecd('0x15')]=router;
\ No newline at end of file
+var _0xf39b=['show','/:id/fields','getFields','getSubjects','getDescriptions','post','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index'];(function(_0x359256,_0x4bd282){var _0x48440e=function(_0x32d0b5){while(--_0x32d0b5){_0x359256['push'](_0x359256['shift']());}};_0x48440e(++_0x4bd282);}(_0xf39b,0x1c3));var _0xbf39=function(_0x53e6e7,_0x1c4c48){_0x53e6e7=_0x53e6e7-0x0;var _0x994dec=_0xf39b[_0x53e6e7];return _0x994dec;};'use strict';var multer=require(_0xbf39('0x0'));var util=require(_0xbf39('0x1'));var path=require(_0xbf39('0x2'));var timeout=require('connect-timeout');var express=require(_0xbf39('0x3'));var router=express[_0xbf39('0x4')]();var fs_extra=require(_0xbf39('0x5'));var auth=require(_0xbf39('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbf39('0x7'));router[_0xbf39('0x8')]('/',auth[_0xbf39('0x9')](),controller[_0xbf39('0xa')]);router[_0xbf39('0x8')]('/:id',auth[_0xbf39('0x9')](),controller[_0xbf39('0xb')]);router[_0xbf39('0x8')](_0xbf39('0xc'),auth[_0xbf39('0x9')](),controller[_0xbf39('0xd')]);router[_0xbf39('0x8')]('/:id/subjects',auth[_0xbf39('0x9')](),controller[_0xbf39('0xe')]);router['get']('/:id/descriptions',auth[_0xbf39('0x9')](),controller[_0xbf39('0xf')]);router[_0xbf39('0x10')]('/',auth[_0xbf39('0x9')](),controller[_0xbf39('0x11')]);router['put']('/:id',auth[_0xbf39('0x9')](),controller[_0xbf39('0x12')]);router[_0xbf39('0x13')]('/:id',auth[_0xbf39('0x9')](),controller[_0xbf39('0x14')]);module[_0xbf39('0x15')]=router;
\ No newline at end of file
index a7a98fc..7375138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe70=['STRING','sequelize'];(function(_0x1b4c78,_0x5c6762){var _0x199898=function(_0x397366){while(--_0x397366){_0x1b4c78['push'](_0x1b4c78['shift']());}};_0x199898(++_0x5c6762);}(_0xfe70,0x177));var _0x0fe7=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0xfe70[_0x5e4563];return _0x8d1bf5;};'use strict';var Sequelize=require(_0x0fe7('0x0'));module['exports']={'name':{'type':Sequelize[_0x0fe7('0x1')]},'description':{'type':Sequelize[_0x0fe7('0x1')]}};
\ No newline at end of file
+var _0xa80e=['STRING','sequelize','exports'];(function(_0xba6a02,_0x49b906){var _0x1afc66=function(_0x6ed88e){while(--_0x6ed88e){_0xba6a02['push'](_0xba6a02['shift']());}};_0x1afc66(++_0x49b906);}(_0xa80e,0x1d8));var _0xea80=function(_0x284c96,_0x3e1bec){_0x284c96=_0x284c96-0x0;var _0xbdbb1e=_0xa80e[_0x284c96];return _0xbdbb1e;};'use strict';var Sequelize=require(_0xea80('0x0'));module[_0xea80('0x1')]={'name':{'type':Sequelize[_0xea80('0x2')]},'description':{'type':Sequelize[_0xea80('0x2')]}};
\ No newline at end of file
index a2ab3c2..358c54b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8663=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','getFields','SugarcrmField','nolimit','findOne','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x3664b2,_0x521f37){var _0x35fcbb=function(_0x1d32d7){while(--_0x1d32d7){_0x3664b2['push'](_0x3664b2['shift']());}};_0x35fcbb(++_0x521f37);}(_0x8663,0x19a));var _0x3866=function(_0x468e0e,_0x153833){_0x468e0e=_0x468e0e-0x0;var _0x454c80=_0x8663[_0x468e0e];return _0x454c80;};'use strict';var emlformat=require(_0x3866('0x0'));var rimraf=require(_0x3866('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3866('0x2'));var rp=require(_0x3866('0x3'));var moment=require(_0x3866('0x4'));var BPromise=require(_0x3866('0x5'));var Mustache=require(_0x3866('0x6'));var util=require(_0x3866('0x7'));var path=require(_0x3866('0x8'));var sox=require(_0x3866('0x9'));var csv=require('to-csv');var ejs=require(_0x3866('0xa'));var fs=require('fs');var fs_extra=require(_0x3866('0xb'));var _=require(_0x3866('0xc'));var squel=require('squel');var crypto=require(_0x3866('0xd'));var jsforce=require(_0x3866('0xe'));var deskjs=require(_0x3866('0xf'));var toCsv=require(_0x3866('0x10'));var querystring=require(_0x3866('0x11'));var Papa=require(_0x3866('0x12'));var Redis=require(_0x3866('0x13'));var authService=require(_0x3866('0x14'));var qs=require(_0x3866('0x15'));var as=require(_0x3866('0x16'));var hardwareService=require(_0x3866('0x17'));var logger=require(_0x3866('0x18'))(_0x3866('0x19'));var utils=require('../../config/utils');var config=require(_0x3866('0x1a'));var licenseUtil=require(_0x3866('0x1b'));var db=require(_0x3866('0x1c'))['db'];function respondWithStatusCode(_0x398edc,_0x5de597){_0x5de597=_0x5de597||0xcc;return function(_0x218278){if(_0x218278){return _0x398edc[_0x3866('0x1d')](_0x5de597);}return _0x398edc[_0x3866('0x1e')](_0x5de597)[_0x3866('0x1f')]();};}function respondWithResult(_0x3c4f23,_0x1d1185){_0x1d1185=_0x1d1185||0xc8;return function(_0xd85e59){if(_0xd85e59){return _0x3c4f23['status'](_0x1d1185)['json'](_0xd85e59);}};}function respondWithFilteredResult(_0x11f0cf,_0x49d6b5){return function(_0x12bb7c){if(_0x12bb7c){var _0x2f911d=typeof _0x49d6b5['offset']===_0x3866('0x20')&&typeof _0x49d6b5[_0x3866('0x21')]===_0x3866('0x20');var _0xd49e91=_0x12bb7c[_0x3866('0x22')];var _0x4792c5=_0x2f911d?0x0:_0x49d6b5[_0x3866('0x23')];var _0x2e31e4=_0x2f911d?_0x12bb7c[_0x3866('0x22')]:_0x49d6b5[_0x3866('0x23')]+_0x49d6b5[_0x3866('0x21')];var _0x4fbdb4;if(_0x2e31e4>=_0xd49e91){_0x2e31e4=_0xd49e91;_0x4fbdb4=0xc8;}else{_0x4fbdb4=0xce;}_0x11f0cf[_0x3866('0x1e')](_0x4fbdb4);return _0x11f0cf[_0x3866('0x24')](_0x3866('0x25'),_0x4792c5+'-'+_0x2e31e4+'/'+_0xd49e91)['json'](_0x12bb7c);}return null;};}function patchUpdates(_0x50a78b){return function(_0x1a484b){try{jsonpatch[_0x3866('0x26')](_0x1a484b,_0x50a78b,!![]);}catch(_0x4a04e4){return BPromise[_0x3866('0x27')](_0x4a04e4);}return _0x1a484b['save']();};}function saveUpdates(_0x4b7a2b,_0xf6332c){return function(_0x1847dd){if(_0x1847dd){return _0x1847dd[_0x3866('0x28')](_0x4b7a2b)[_0x3866('0x29')](function(_0x2b9e64){return _0x2b9e64;});}return null;};}function removeEntity(_0x2dbaf6,_0x3533d6){return function(_0x2e167d){if(_0x2e167d){return _0x2e167d[_0x3866('0x2a')]()[_0x3866('0x29')](function(){_0x2dbaf6[_0x3866('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26e1e4,_0x46f570){return function(_0x6f6a5b){if(!_0x6f6a5b){_0x26e1e4[_0x3866('0x1d')](0x194);}return _0x6f6a5b;};}function handleError(_0x315e5a,_0x53a22e){_0x53a22e=_0x53a22e||0x1f4;return function(_0x892d90){logger[_0x3866('0x2b')](_0x892d90[_0x3866('0x2c')]);if(_0x892d90[_0x3866('0x2d')]){delete _0x892d90['name'];}_0x315e5a['status'](_0x53a22e)[_0x3866('0x2e')](_0x892d90);};}exports[_0x3866('0x2f')]=function(_0x43a7ad,_0x54fefa){var _0x1b205e={},_0x4ffb64={},_0x4f43b5={'count':0x0,'rows':[]};var _0x2af53f=_[_0x3866('0x30')](db[_0x3866('0x31')][_0x3866('0x32')],function(_0x486c99){return{'name':_0x486c99[_0x3866('0x33')],'type':_0x486c99[_0x3866('0x34')][_0x3866('0x35')]};});_0x4ffb64['model']=_[_0x3866('0x30')](_0x2af53f,_0x3866('0x2d'));_0x4ffb64[_0x3866('0x36')]=_['keys'](_0x43a7ad['query']);_0x4ffb64['filters']=_[_0x3866('0x37')](_0x4ffb64[_0x3866('0x38')],_0x4ffb64['query']);_0x1b205e[_0x3866('0x39')]=_[_0x3866('0x37')](_0x4ffb64[_0x3866('0x38')],qs[_0x3866('0x3a')](_0x43a7ad[_0x3866('0x36')][_0x3866('0x3a')]));_0x1b205e[_0x3866('0x39')]=_0x1b205e[_0x3866('0x39')][_0x3866('0x3b')]?_0x1b205e['attributes']:_0x4ffb64['model'];if(!_0x43a7ad['query'][_0x3866('0x3c')]('nolimit')){_0x1b205e['limit']=qs[_0x3866('0x21')](_0x43a7ad[_0x3866('0x36')][_0x3866('0x21')]);_0x1b205e[_0x3866('0x23')]=qs[_0x3866('0x23')](_0x43a7ad['query'][_0x3866('0x23')]);}_0x1b205e[_0x3866('0x3d')]=qs['sort'](_0x43a7ad[_0x3866('0x36')][_0x3866('0x3e')]);_0x1b205e[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x43a7ad[_0x3866('0x36')],_0x4ffb64['filters']),_0x2af53f);if(_0x43a7ad['query'][_0x3866('0x42')]){_0x1b205e[_0x3866('0x3f')]=_[_0x3866('0x43')](_0x1b205e[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x2af53f,function(_0x850a44){if(_0x850a44['type']!=='VIRTUAL'){var _0x1778e4={};_0x1778e4[_0x850a44[_0x3866('0x2d')]]={'$like':'%'+_0x43a7ad[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x1778e4;}})});}_0x1b205e=_['merge']({},_0x1b205e,_0x43a7ad[_0x3866('0x44')]);var _0xd8ef63={'where':_0x1b205e['where']};return db[_0x3866('0x31')][_0x3866('0x22')](_0xd8ef63)[_0x3866('0x29')](function(_0x4ceab4){_0x4f43b5[_0x3866('0x22')]=_0x4ceab4;if(_0x43a7ad[_0x3866('0x36')]['includeAll']){_0x1b205e[_0x3866('0x45')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x3866('0x46')](_0x1b205e);})[_0x3866('0x29')](function(_0x3cfeff){_0x4f43b5[_0x3866('0x47')]=_0x3cfeff;return _0x4f43b5;})[_0x3866('0x29')](respondWithFilteredResult(_0x54fefa,_0x1b205e))[_0x3866('0x48')](handleError(_0x54fefa,null));};exports[_0x3866('0x49')]=function(_0xaee528,_0x1cee25){var _0x850493={'raw':![],'where':{'id':_0xaee528[_0x3866('0x4a')]['id']}},_0x290523={};_0x290523[_0x3866('0x38')]=_['keys'](db[_0x3866('0x31')][_0x3866('0x32')]);_0x290523['query']=_[_0x3866('0x4b')](_0xaee528[_0x3866('0x36')]);_0x290523[_0x3866('0x40')]=_[_0x3866('0x37')](_0x290523[_0x3866('0x38')],_0x290523[_0x3866('0x36')]);_0x850493[_0x3866('0x39')]=_[_0x3866('0x37')](_0x290523[_0x3866('0x38')],qs[_0x3866('0x3a')](_0xaee528[_0x3866('0x36')][_0x3866('0x3a')]));_0x850493[_0x3866('0x39')]=_0x850493[_0x3866('0x39')][_0x3866('0x3b')]?_0x850493[_0x3866('0x39')]:_0x290523[_0x3866('0x38')];if(_0xaee528[_0x3866('0x36')][_0x3866('0x4c')]){_0x850493[_0x3866('0x45')]=[{'all':!![]}];}_0x850493=_[_0x3866('0x43')]({},_0x850493,_0xaee528[_0x3866('0x44')]);return db[_0x3866('0x31')][_0x3866('0x4d')](_0x850493)[_0x3866('0x29')](handleEntityNotFound(_0x1cee25,null))['then'](respondWithResult(_0x1cee25,null))[_0x3866('0x48')](handleError(_0x1cee25,null));};exports['create']=function(_0x4eb029,_0x32c9d3){return db[_0x3866('0x31')][_0x3866('0x4e')](_0x4eb029['body'],{})[_0x3866('0x29')](respondWithResult(_0x32c9d3,0xc9))['catch'](handleError(_0x32c9d3,null));};exports[_0x3866('0x28')]=function(_0x328d93,_0x5c312d){if(_0x328d93[_0x3866('0x4f')]['id']){delete _0x328d93['body']['id'];}return db[_0x3866('0x31')][_0x3866('0x4d')]({'where':{'id':_0x328d93[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x5c312d,null))['then'](saveUpdates(_0x328d93['body'],null))[_0x3866('0x29')](respondWithResult(_0x5c312d,null))[_0x3866('0x48')](handleError(_0x5c312d,null));};exports[_0x3866('0x2a')]=function(_0x468c12,_0x44af21){return db[_0x3866('0x31')][_0x3866('0x4d')]({'where':{'id':_0x468c12[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x44af21,null))[_0x3866('0x29')](removeEntity(_0x44af21,null))[_0x3866('0x48')](handleError(_0x44af21,null));};exports[_0x3866('0x50')]=function(_0x40a2c8,_0x1f0711,_0x38985b){var _0x1970ab={};var _0x1f5c6a={};var _0x41ad90;var _0x2fcd5f;return db[_0x3866('0x31')]['findOne']({'where':{'id':_0x40a2c8[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x1f0711,null))[_0x3866('0x29')](function(_0x21a60b){if(_0x21a60b){_0x41ad90=_0x21a60b;_0x1f5c6a[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')]['rawAttributes']);_0x1f5c6a['query']=_['keys'](_0x40a2c8[_0x3866('0x36')]);_0x1f5c6a[_0x3866('0x40')]=_['intersection'](_0x1f5c6a['model'],_0x1f5c6a[_0x3866('0x36')]);_0x1970ab['attributes']=_['intersection'](_0x1f5c6a[_0x3866('0x38')],qs[_0x3866('0x3a')](_0x40a2c8['query'][_0x3866('0x3a')]));_0x1970ab[_0x3866('0x39')]=_0x1970ab['attributes'][_0x3866('0x3b')]?_0x1970ab['attributes']:_0x1f5c6a[_0x3866('0x38')];_0x1970ab[_0x3866('0x3d')]=qs[_0x3866('0x3e')](_0x40a2c8[_0x3866('0x36')]['sort']);_0x1970ab[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x40a2c8[_0x3866('0x36')],_0x1f5c6a[_0x3866('0x40')]));if(_0x40a2c8['query']['filter']){_0x1970ab['where']=_['merge'](_0x1970ab[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x1970ab[_0x3866('0x39')],function(_0x52e5c9){var _0x14c731={};_0x14c731[_0x52e5c9]={'$like':'%'+_0x40a2c8[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x14c731;})});}_0x1970ab=_['merge']({},_0x1970ab,_0x40a2c8[_0x3866('0x44')]);return _0x41ad90[_0x3866('0x50')](_0x1970ab);}})[_0x3866('0x29')](function(_0xa58694){if(_0xa58694){_0x2fcd5f=_0xa58694[_0x3866('0x3b')];if(!_0x40a2c8[_0x3866('0x36')]['hasOwnProperty'](_0x3866('0x52'))){_0x1970ab[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x40a2c8[_0x3866('0x36')]['limit']);_0x1970ab[_0x3866('0x23')]=qs['offset'](_0x40a2c8[_0x3866('0x36')]['offset']);}return _0x41ad90[_0x3866('0x50')](_0x1970ab);}})[_0x3866('0x29')](function(_0x56946a){if(_0x56946a){return _0x56946a?{'count':_0x2fcd5f,'rows':_0x56946a}:null;}})[_0x3866('0x29')](respondWithResult(_0x1f0711,null))['catch'](handleError(_0x1f0711,null));};exports['getSubjects']=function(_0x32a97a,_0x5d4217,_0x18c61a){var _0x33d7fc={};var _0x13a1bd={};var _0x516bd1;var _0x166ad4;return db[_0x3866('0x31')][_0x3866('0x53')]({'where':{'id':_0x32a97a[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x5d4217,null))['then'](function(_0x23a6ea){if(_0x23a6ea){_0x516bd1=_0x23a6ea;_0x13a1bd[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')][_0x3866('0x32')]);_0x13a1bd[_0x3866('0x36')]=_[_0x3866('0x4b')](_0x32a97a[_0x3866('0x36')]);_0x13a1bd[_0x3866('0x40')]=_[_0x3866('0x37')](_0x13a1bd[_0x3866('0x38')],_0x13a1bd[_0x3866('0x36')]);_0x33d7fc[_0x3866('0x39')]=_[_0x3866('0x37')](_0x13a1bd[_0x3866('0x38')],qs['fields'](_0x32a97a[_0x3866('0x36')][_0x3866('0x3a')]));_0x33d7fc[_0x3866('0x39')]=_0x33d7fc['attributes'][_0x3866('0x3b')]?_0x33d7fc['attributes']:_0x13a1bd[_0x3866('0x38')];_0x33d7fc['order']=qs[_0x3866('0x3e')](_0x32a97a[_0x3866('0x36')]['sort']);_0x33d7fc[_0x3866('0x3f')]=qs['filters'](_[_0x3866('0x41')](_0x32a97a['query'],_0x13a1bd['filters']));if(_0x32a97a[_0x3866('0x36')]['filter']){_0x33d7fc[_0x3866('0x3f')]=_[_0x3866('0x43')](_0x33d7fc[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x33d7fc['attributes'],function(_0x775339){var _0x242bd3={};_0x242bd3[_0x775339]={'$like':'%'+_0x32a97a[_0x3866('0x36')][_0x3866('0x42')]+'%'};return _0x242bd3;})});}_0x33d7fc=_[_0x3866('0x43')]({},_0x33d7fc,_0x32a97a[_0x3866('0x44')]);return _0x516bd1[_0x3866('0x54')](_0x33d7fc);}})[_0x3866('0x29')](function(_0x3f5104){if(_0x3f5104){_0x166ad4=_0x3f5104[_0x3866('0x3b')];if(!_0x32a97a[_0x3866('0x36')][_0x3866('0x3c')]('nolimit')){_0x33d7fc[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x32a97a[_0x3866('0x36')]['limit']);_0x33d7fc[_0x3866('0x23')]=qs['offset'](_0x32a97a[_0x3866('0x36')]['offset']);}return _0x516bd1[_0x3866('0x54')](_0x33d7fc);}})[_0x3866('0x29')](function(_0x1fd2b2){if(_0x1fd2b2){return _0x1fd2b2?{'count':_0x166ad4,'rows':_0x1fd2b2}:null;}})[_0x3866('0x29')](respondWithResult(_0x5d4217,null))[_0x3866('0x48')](handleError(_0x5d4217,null));};exports['getDescriptions']=function(_0x2ca54d,_0x359e07,_0x2a0b0c){var _0x46b2f9={};var _0x13e519={};var _0x30a627;var _0x44c2c2;return db[_0x3866('0x31')][_0x3866('0x53')]({'where':{'id':_0x2ca54d[_0x3866('0x4a')]['id']}})[_0x3866('0x29')](handleEntityNotFound(_0x359e07,null))['then'](function(_0x2700ac){if(_0x2700ac){_0x30a627=_0x2700ac;_0x13e519[_0x3866('0x38')]=_[_0x3866('0x4b')](db[_0x3866('0x51')][_0x3866('0x32')]);_0x13e519[_0x3866('0x36')]=_[_0x3866('0x4b')](_0x2ca54d['query']);_0x13e519[_0x3866('0x40')]=_[_0x3866('0x37')](_0x13e519[_0x3866('0x38')],_0x13e519[_0x3866('0x36')]);_0x46b2f9[_0x3866('0x39')]=_[_0x3866('0x37')](_0x13e519['model'],qs['fields'](_0x2ca54d[_0x3866('0x36')][_0x3866('0x3a')]));_0x46b2f9['attributes']=_0x46b2f9['attributes'][_0x3866('0x3b')]?_0x46b2f9['attributes']:_0x13e519[_0x3866('0x38')];_0x46b2f9[_0x3866('0x3d')]=qs[_0x3866('0x3e')](_0x2ca54d[_0x3866('0x36')][_0x3866('0x3e')]);_0x46b2f9[_0x3866('0x3f')]=qs[_0x3866('0x40')](_[_0x3866('0x41')](_0x2ca54d[_0x3866('0x36')],_0x13e519[_0x3866('0x40')]));if(_0x2ca54d[_0x3866('0x36')]['filter']){_0x46b2f9['where']=_[_0x3866('0x43')](_0x46b2f9[_0x3866('0x3f')],{'$or':_[_0x3866('0x30')](_0x46b2f9[_0x3866('0x39')],function(_0x2785d1){var _0xb188cb={};_0xb188cb[_0x2785d1]={'$like':'%'+_0x2ca54d[_0x3866('0x36')]['filter']+'%'};return _0xb188cb;})});}_0x46b2f9=_[_0x3866('0x43')]({},_0x46b2f9,_0x2ca54d[_0x3866('0x44')]);return _0x30a627['getDescriptions'](_0x46b2f9);}})[_0x3866('0x29')](function(_0x31244b){if(_0x31244b){_0x44c2c2=_0x31244b[_0x3866('0x3b')];if(!_0x2ca54d[_0x3866('0x36')]['hasOwnProperty'](_0x3866('0x52'))){_0x46b2f9[_0x3866('0x21')]=qs[_0x3866('0x21')](_0x2ca54d['query'][_0x3866('0x21')]);_0x46b2f9[_0x3866('0x23')]=qs[_0x3866('0x23')](_0x2ca54d['query']['offset']);}return _0x30a627[_0x3866('0x55')](_0x46b2f9);}})[_0x3866('0x29')](function(_0x5cae2e){if(_0x5cae2e){return _0x5cae2e?{'count':_0x44c2c2,'rows':_0x5cae2e}:null;}})[_0x3866('0x29')](respondWithResult(_0x359e07,null))[_0x3866('0x48')](handleError(_0x359e07,null));};
\ No newline at end of file
+var _0x2f41=['catch','params','rawAttributes','length','find','create','body','getFields','findOne','SugarcrmField','order','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','SugarcrmConfiguration','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x16eb19,_0x58cea4){var _0x312a25=function(_0x343702){while(--_0x343702){_0x16eb19['push'](_0x16eb19['shift']());}};_0x312a25(++_0x58cea4);}(_0x2f41,0x1ee));var _0x12f4=function(_0x1f36bb,_0x8af718){_0x1f36bb=_0x1f36bb-0x0;var _0xaf97fa=_0x2f41[_0x1f36bb];return _0xaf97fa;};'use strict';var emlformat=require(_0x12f4('0x0'));var rimraf=require(_0x12f4('0x1'));var zipdir=require(_0x12f4('0x2'));var jsonpatch=require(_0x12f4('0x3'));var rp=require(_0x12f4('0x4'));var moment=require(_0x12f4('0x5'));var BPromise=require(_0x12f4('0x6'));var Mustache=require(_0x12f4('0x7'));var util=require(_0x12f4('0x8'));var path=require(_0x12f4('0x9'));var sox=require('sox');var csv=require(_0x12f4('0xa'));var ejs=require(_0x12f4('0xb'));var fs=require('fs');var fs_extra=require(_0x12f4('0xc'));var _=require(_0x12f4('0xd'));var squel=require(_0x12f4('0xe'));var crypto=require('crypto');var jsforce=require(_0x12f4('0xf'));var deskjs=require(_0x12f4('0x10'));var toCsv=require(_0x12f4('0xa'));var querystring=require(_0x12f4('0x11'));var Papa=require(_0x12f4('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x12f4('0x13'));var hardwareService=require(_0x12f4('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x12f4('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x12f4('0x16'));var db=require(_0x12f4('0x17'))['db'];function respondWithStatusCode(_0x4c5ad4,_0x1866cd){_0x1866cd=_0x1866cd||0xcc;return function(_0x324e94){if(_0x324e94){return _0x4c5ad4[_0x12f4('0x18')](_0x1866cd);}return _0x4c5ad4[_0x12f4('0x19')](_0x1866cd)[_0x12f4('0x1a')]();};}function respondWithResult(_0x2c5d5c,_0x51e247){_0x51e247=_0x51e247||0xc8;return function(_0x3f06b7){if(_0x3f06b7){return _0x2c5d5c[_0x12f4('0x19')](_0x51e247)[_0x12f4('0x1b')](_0x3f06b7);}};}function respondWithFilteredResult(_0x4b57bd,_0x28c733){return function(_0x417946){if(_0x417946){var _0x53cf4b=typeof _0x28c733[_0x12f4('0x1c')]==='undefined'&&typeof _0x28c733[_0x12f4('0x1d')]===_0x12f4('0x1e');var _0xb05f94=_0x417946[_0x12f4('0x1f')];var _0x1c677c=_0x53cf4b?0x0:_0x28c733[_0x12f4('0x1c')];var _0x13e8f2=_0x53cf4b?_0x417946[_0x12f4('0x1f')]:_0x28c733[_0x12f4('0x1c')]+_0x28c733[_0x12f4('0x1d')];var _0x46f65c;if(_0x13e8f2>=_0xb05f94){_0x13e8f2=_0xb05f94;_0x46f65c=0xc8;}else{_0x46f65c=0xce;}_0x4b57bd[_0x12f4('0x19')](_0x46f65c);return _0x4b57bd[_0x12f4('0x20')]('Content-Range',_0x1c677c+'-'+_0x13e8f2+'/'+_0xb05f94)['json'](_0x417946);}return null;};}function patchUpdates(_0x164417){return function(_0x1d1deb){try{jsonpatch[_0x12f4('0x21')](_0x1d1deb,_0x164417,!![]);}catch(_0x40fb32){return BPromise[_0x12f4('0x22')](_0x40fb32);}return _0x1d1deb[_0x12f4('0x23')]();};}function saveUpdates(_0x35e150,_0x262a6d){return function(_0x41936e){if(_0x41936e){return _0x41936e[_0x12f4('0x24')](_0x35e150)[_0x12f4('0x25')](function(_0x4a947e){return _0x4a947e;});}return null;};}function removeEntity(_0x45185a,_0x26a481){return function(_0x3c64a9){if(_0x3c64a9){return _0x3c64a9[_0x12f4('0x26')]()[_0x12f4('0x25')](function(){_0x45185a[_0x12f4('0x19')](0xcc)[_0x12f4('0x1a')]();});}};}function handleEntityNotFound(_0x27b716,_0x425865){return function(_0x70d5db){if(!_0x70d5db){_0x27b716[_0x12f4('0x18')](0x194);}return _0x70d5db;};}function handleError(_0x2944f0,_0x1eca4){_0x1eca4=_0x1eca4||0x1f4;return function(_0x248717){logger[_0x12f4('0x27')](_0x248717[_0x12f4('0x28')]);if(_0x248717[_0x12f4('0x29')]){delete _0x248717['name'];}_0x2944f0[_0x12f4('0x19')](_0x1eca4)['send'](_0x248717);};}exports[_0x12f4('0x2a')]=function(_0xbd8695,_0x20fcfb){var _0x2c0a35={},_0x580d7d={},_0x4d5a79={'count':0x0,'rows':[]};var _0x56d3e3=_[_0x12f4('0x2b')](db[_0x12f4('0x2c')]['rawAttributes'],function(_0x5035a1){return{'name':_0x5035a1[_0x12f4('0x2d')],'type':_0x5035a1[_0x12f4('0x2e')][_0x12f4('0x2f')]};});_0x580d7d[_0x12f4('0x30')]=_[_0x12f4('0x2b')](_0x56d3e3,_0x12f4('0x29'));_0x580d7d['query']=_[_0x12f4('0x31')](_0xbd8695[_0x12f4('0x32')]);_0x580d7d[_0x12f4('0x33')]=_[_0x12f4('0x34')](_0x580d7d[_0x12f4('0x30')],_0x580d7d[_0x12f4('0x32')]);_0x2c0a35[_0x12f4('0x35')]=_[_0x12f4('0x34')](_0x580d7d[_0x12f4('0x30')],qs['fields'](_0xbd8695[_0x12f4('0x32')][_0x12f4('0x36')]));_0x2c0a35[_0x12f4('0x35')]=_0x2c0a35['attributes']['length']?_0x2c0a35['attributes']:_0x580d7d[_0x12f4('0x30')];if(!_0xbd8695['query'][_0x12f4('0x37')]('nolimit')){_0x2c0a35[_0x12f4('0x1d')]=qs['limit'](_0xbd8695[_0x12f4('0x32')][_0x12f4('0x1d')]);_0x2c0a35[_0x12f4('0x1c')]=qs['offset'](_0xbd8695['query'][_0x12f4('0x1c')]);}_0x2c0a35['order']=qs[_0x12f4('0x38')](_0xbd8695['query'][_0x12f4('0x38')]);_0x2c0a35[_0x12f4('0x39')]=qs[_0x12f4('0x33')](_[_0x12f4('0x3a')](_0xbd8695[_0x12f4('0x32')],_0x580d7d[_0x12f4('0x33')]),_0x56d3e3);if(_0xbd8695['query'][_0x12f4('0x3b')]){_0x2c0a35[_0x12f4('0x39')]=_[_0x12f4('0x3c')](_0x2c0a35[_0x12f4('0x39')],{'$or':_[_0x12f4('0x2b')](_0x56d3e3,function(_0x1383ea){if(_0x1383ea[_0x12f4('0x2e')]!==_0x12f4('0x3d')){var _0x1d1bac={};_0x1d1bac[_0x1383ea['name']]={'$like':'%'+_0xbd8695[_0x12f4('0x32')][_0x12f4('0x3b')]+'%'};return _0x1d1bac;}})});}_0x2c0a35=_['merge']({},_0x2c0a35,_0xbd8695[_0x12f4('0x3e')]);var _0x5765e4={'where':_0x2c0a35['where']};return db[_0x12f4('0x2c')][_0x12f4('0x1f')](_0x5765e4)[_0x12f4('0x25')](function(_0x2bb584){_0x4d5a79['count']=_0x2bb584;if(_0xbd8695[_0x12f4('0x32')][_0x12f4('0x3f')]){_0x2c0a35[_0x12f4('0x40')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x12f4('0x41')](_0x2c0a35);})['then'](function(_0x41290e){_0x4d5a79['rows']=_0x41290e;return _0x4d5a79;})[_0x12f4('0x25')](respondWithFilteredResult(_0x20fcfb,_0x2c0a35))[_0x12f4('0x42')](handleError(_0x20fcfb,null));};exports['show']=function(_0x71564f,_0x59b544){var _0x138356={'raw':![],'where':{'id':_0x71564f[_0x12f4('0x43')]['id']}},_0x2d6af7={};_0x2d6af7[_0x12f4('0x30')]=_[_0x12f4('0x31')](db[_0x12f4('0x2c')][_0x12f4('0x44')]);_0x2d6af7[_0x12f4('0x32')]=_[_0x12f4('0x31')](_0x71564f[_0x12f4('0x32')]);_0x2d6af7['filters']=_[_0x12f4('0x34')](_0x2d6af7['model'],_0x2d6af7['query']);_0x138356[_0x12f4('0x35')]=_[_0x12f4('0x34')](_0x2d6af7[_0x12f4('0x30')],qs[_0x12f4('0x36')](_0x71564f['query'][_0x12f4('0x36')]));_0x138356[_0x12f4('0x35')]=_0x138356[_0x12f4('0x35')][_0x12f4('0x45')]?_0x138356[_0x12f4('0x35')]:_0x2d6af7[_0x12f4('0x30')];if(_0x71564f['query'][_0x12f4('0x3f')]){_0x138356['include']=[{'all':!![]}];}_0x138356=_[_0x12f4('0x3c')]({},_0x138356,_0x71564f[_0x12f4('0x3e')]);return db[_0x12f4('0x2c')][_0x12f4('0x46')](_0x138356)[_0x12f4('0x25')](handleEntityNotFound(_0x59b544,null))['then'](respondWithResult(_0x59b544,null))[_0x12f4('0x42')](handleError(_0x59b544,null));};exports[_0x12f4('0x47')]=function(_0x375a09,_0x3e2020){return db['SugarcrmConfiguration']['create'](_0x375a09[_0x12f4('0x48')],{})[_0x12f4('0x25')](respondWithResult(_0x3e2020,0xc9))[_0x12f4('0x42')](handleError(_0x3e2020,null));};exports['update']=function(_0x71b754,_0x43b84a){if(_0x71b754[_0x12f4('0x48')]['id']){delete _0x71b754['body']['id'];}return db[_0x12f4('0x2c')][_0x12f4('0x46')]({'where':{'id':_0x71b754[_0x12f4('0x43')]['id']}})[_0x12f4('0x25')](handleEntityNotFound(_0x43b84a,null))['then'](saveUpdates(_0x71b754[_0x12f4('0x48')],null))['then'](respondWithResult(_0x43b84a,null))[_0x12f4('0x42')](handleError(_0x43b84a,null));};exports[_0x12f4('0x26')]=function(_0xcaea7b,_0x45d4e6){return db[_0x12f4('0x2c')][_0x12f4('0x46')]({'where':{'id':_0xcaea7b[_0x12f4('0x43')]['id']}})[_0x12f4('0x25')](handleEntityNotFound(_0x45d4e6,null))['then'](removeEntity(_0x45d4e6,null))[_0x12f4('0x42')](handleError(_0x45d4e6,null));};exports[_0x12f4('0x49')]=function(_0x5d2d53,_0x5b648f,_0x594fa8){var _0x5cf2fe={};var _0x374b59={};var _0x4670c9;var _0x3c5c6b;return db['SugarcrmConfiguration'][_0x12f4('0x4a')]({'where':{'id':_0x5d2d53[_0x12f4('0x43')]['id']}})[_0x12f4('0x25')](handleEntityNotFound(_0x5b648f,null))['then'](function(_0x2c0323){if(_0x2c0323){_0x4670c9=_0x2c0323;_0x374b59['model']=_[_0x12f4('0x31')](db[_0x12f4('0x4b')][_0x12f4('0x44')]);_0x374b59['query']=_[_0x12f4('0x31')](_0x5d2d53['query']);_0x374b59[_0x12f4('0x33')]=_[_0x12f4('0x34')](_0x374b59[_0x12f4('0x30')],_0x374b59[_0x12f4('0x32')]);_0x5cf2fe[_0x12f4('0x35')]=_[_0x12f4('0x34')](_0x374b59['model'],qs[_0x12f4('0x36')](_0x5d2d53[_0x12f4('0x32')]['fields']));_0x5cf2fe[_0x12f4('0x35')]=_0x5cf2fe[_0x12f4('0x35')][_0x12f4('0x45')]?_0x5cf2fe[_0x12f4('0x35')]:_0x374b59[_0x12f4('0x30')];_0x5cf2fe[_0x12f4('0x4c')]=qs[_0x12f4('0x38')](_0x5d2d53['query']['sort']);_0x5cf2fe[_0x12f4('0x39')]=qs['filters'](_[_0x12f4('0x3a')](_0x5d2d53[_0x12f4('0x32')],_0x374b59[_0x12f4('0x33')]));if(_0x5d2d53[_0x12f4('0x32')][_0x12f4('0x3b')]){_0x5cf2fe[_0x12f4('0x39')]=_[_0x12f4('0x3c')](_0x5cf2fe['where'],{'$or':_['map'](_0x5cf2fe[_0x12f4('0x35')],function(_0xb5ffba){var _0x3af97a={};_0x3af97a[_0xb5ffba]={'$like':'%'+_0x5d2d53['query'][_0x12f4('0x3b')]+'%'};return _0x3af97a;})});}_0x5cf2fe=_[_0x12f4('0x3c')]({},_0x5cf2fe,_0x5d2d53[_0x12f4('0x3e')]);return _0x4670c9[_0x12f4('0x49')](_0x5cf2fe);}})['then'](function(_0x39468e){if(_0x39468e){_0x3c5c6b=_0x39468e[_0x12f4('0x45')];if(!_0x5d2d53[_0x12f4('0x32')][_0x12f4('0x37')](_0x12f4('0x4d'))){_0x5cf2fe['limit']=qs[_0x12f4('0x1d')](_0x5d2d53[_0x12f4('0x32')]['limit']);_0x5cf2fe[_0x12f4('0x1c')]=qs[_0x12f4('0x1c')](_0x5d2d53[_0x12f4('0x32')][_0x12f4('0x1c')]);}return _0x4670c9['getFields'](_0x5cf2fe);}})[_0x12f4('0x25')](function(_0x26b8cb){if(_0x26b8cb){return _0x26b8cb?{'count':_0x3c5c6b,'rows':_0x26b8cb}:null;}})['then'](respondWithResult(_0x5b648f,null))[_0x12f4('0x42')](handleError(_0x5b648f,null));};exports[_0x12f4('0x4e')]=function(_0x7d4124,_0x1f3f16,_0x59fc07){var _0x4ce372={};var _0x57d83d={};var _0x3f62fb;var _0x5bfc84;return db[_0x12f4('0x2c')][_0x12f4('0x4a')]({'where':{'id':_0x7d4124['params']['id']}})[_0x12f4('0x25')](handleEntityNotFound(_0x1f3f16,null))[_0x12f4('0x25')](function(_0x2f59dc){if(_0x2f59dc){_0x3f62fb=_0x2f59dc;_0x57d83d['model']=_[_0x12f4('0x31')](db[_0x12f4('0x4b')][_0x12f4('0x44')]);_0x57d83d[_0x12f4('0x32')]=_['keys'](_0x7d4124[_0x12f4('0x32')]);_0x57d83d[_0x12f4('0x33')]=_[_0x12f4('0x34')](_0x57d83d['model'],_0x57d83d[_0x12f4('0x32')]);_0x4ce372[_0x12f4('0x35')]=_[_0x12f4('0x34')](_0x57d83d['model'],qs[_0x12f4('0x36')](_0x7d4124[_0x12f4('0x32')][_0x12f4('0x36')]));_0x4ce372[_0x12f4('0x35')]=_0x4ce372[_0x12f4('0x35')][_0x12f4('0x45')]?_0x4ce372[_0x12f4('0x35')]:_0x57d83d[_0x12f4('0x30')];_0x4ce372[_0x12f4('0x4c')]=qs[_0x12f4('0x38')](_0x7d4124['query'][_0x12f4('0x38')]);_0x4ce372['where']=qs[_0x12f4('0x33')](_['pick'](_0x7d4124[_0x12f4('0x32')],_0x57d83d[_0x12f4('0x33')]));if(_0x7d4124['query']['filter']){_0x4ce372[_0x12f4('0x39')]=_[_0x12f4('0x3c')](_0x4ce372[_0x12f4('0x39')],{'$or':_[_0x12f4('0x2b')](_0x4ce372[_0x12f4('0x35')],function(_0x44d1e2){var _0x490642={};_0x490642[_0x44d1e2]={'$like':'%'+_0x7d4124[_0x12f4('0x32')]['filter']+'%'};return _0x490642;})});}_0x4ce372=_['merge']({},_0x4ce372,_0x7d4124[_0x12f4('0x3e')]);return _0x3f62fb[_0x12f4('0x4e')](_0x4ce372);}})[_0x12f4('0x25')](function(_0x1ca714){if(_0x1ca714){_0x5bfc84=_0x1ca714[_0x12f4('0x45')];if(!_0x7d4124[_0x12f4('0x32')]['hasOwnProperty']('nolimit')){_0x4ce372[_0x12f4('0x1d')]=qs['limit'](_0x7d4124['query'][_0x12f4('0x1d')]);_0x4ce372[_0x12f4('0x1c')]=qs[_0x12f4('0x1c')](_0x7d4124[_0x12f4('0x32')]['offset']);}return _0x3f62fb['getSubjects'](_0x4ce372);}})[_0x12f4('0x25')](function(_0x5bcee5){if(_0x5bcee5){return _0x5bcee5?{'count':_0x5bfc84,'rows':_0x5bcee5}:null;}})[_0x12f4('0x25')](respondWithResult(_0x1f3f16,null))[_0x12f4('0x42')](handleError(_0x1f3f16,null));};exports[_0x12f4('0x4f')]=function(_0x41c986,_0x23d5fd,_0x265c85){var _0x35b260={};var _0x1e3370={};var _0x2bab7d;var _0x23cabc;return db[_0x12f4('0x2c')][_0x12f4('0x4a')]({'where':{'id':_0x41c986[_0x12f4('0x43')]['id']}})[_0x12f4('0x25')](handleEntityNotFound(_0x23d5fd,null))[_0x12f4('0x25')](function(_0x980d43){if(_0x980d43){_0x2bab7d=_0x980d43;_0x1e3370['model']=_['keys'](db[_0x12f4('0x4b')][_0x12f4('0x44')]);_0x1e3370['query']=_['keys'](_0x41c986['query']);_0x1e3370['filters']=_[_0x12f4('0x34')](_0x1e3370[_0x12f4('0x30')],_0x1e3370[_0x12f4('0x32')]);_0x35b260['attributes']=_[_0x12f4('0x34')](_0x1e3370['model'],qs[_0x12f4('0x36')](_0x41c986[_0x12f4('0x32')][_0x12f4('0x36')]));_0x35b260[_0x12f4('0x35')]=_0x35b260[_0x12f4('0x35')][_0x12f4('0x45')]?_0x35b260[_0x12f4('0x35')]:_0x1e3370['model'];_0x35b260[_0x12f4('0x4c')]=qs[_0x12f4('0x38')](_0x41c986[_0x12f4('0x32')][_0x12f4('0x38')]);_0x35b260[_0x12f4('0x39')]=qs['filters'](_['pick'](_0x41c986[_0x12f4('0x32')],_0x1e3370[_0x12f4('0x33')]));if(_0x41c986[_0x12f4('0x32')]['filter']){_0x35b260[_0x12f4('0x39')]=_[_0x12f4('0x3c')](_0x35b260[_0x12f4('0x39')],{'$or':_['map'](_0x35b260['attributes'],function(_0x17aa07){var _0x84ca5c={};_0x84ca5c[_0x17aa07]={'$like':'%'+_0x41c986['query']['filter']+'%'};return _0x84ca5c;})});}_0x35b260=_[_0x12f4('0x3c')]({},_0x35b260,_0x41c986[_0x12f4('0x3e')]);return _0x2bab7d[_0x12f4('0x4f')](_0x35b260);}})['then'](function(_0x1d25f8){if(_0x1d25f8){_0x23cabc=_0x1d25f8[_0x12f4('0x45')];if(!_0x41c986[_0x12f4('0x32')][_0x12f4('0x37')](_0x12f4('0x4d'))){_0x35b260[_0x12f4('0x1d')]=qs[_0x12f4('0x1d')](_0x41c986[_0x12f4('0x32')][_0x12f4('0x1d')]);_0x35b260[_0x12f4('0x1c')]=qs[_0x12f4('0x1c')](_0x41c986[_0x12f4('0x32')]['offset']);}return _0x2bab7d[_0x12f4('0x4f')](_0x35b260);}})['then'](function(_0x26bd01){if(_0x26bd01){return _0x26bd01?{'count':_0x23cabc,'rows':_0x26bd01}:null;}})[_0x12f4('0x25')](respondWithResult(_0x23d5fd,null))[_0x12f4('0x42')](handleError(_0x23d5fd,null));};
\ No newline at end of file
index 67218f8..b6051d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93bf=['util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','lodash'];(function(_0x44440c,_0x24fae6){var _0x410a5d=function(_0x19cc18){while(--_0x19cc18){_0x44440c['push'](_0x44440c['shift']());}};_0x410a5d(++_0x24fae6);}(_0x93bf,0x121));var _0xf93b=function(_0x171143,_0x68a3fd){_0x171143=_0x171143-0x0;var _0x3b4dd6=_0x93bf[_0x171143];return _0x3b4dd6;};'use strict';var _=require(_0xf93b('0x0'));var util=require(_0xf93b('0x1'));var logger=require(_0xf93b('0x2'))(_0xf93b('0x3'));var moment=require(_0xf93b('0x4'));var BPromise=require(_0xf93b('0x5'));var rp=require(_0xf93b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf93b('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0xf93b('0x8')]=function(_0x50ec5a,_0x5aabc2){return _0x50ec5a[_0xf93b('0x9')]('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0aa=['bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','lodash','util','../../config/logger','api'];(function(_0x798ad6,_0x16433d){var _0x2d74a3=function(_0x21281c){while(--_0x21281c){_0x798ad6['push'](_0x798ad6['shift']());}};_0x2d74a3(++_0x16433d);}(_0xa0aa,0x1a9));var _0xaa0a=function(_0x30531a,_0x4cf5f5){_0x30531a=_0x30531a-0x0;var _0xccd022=_0xa0aa[_0x30531a];return _0xccd022;};'use strict';var _=require(_0xaa0a('0x0'));var util=require(_0xaa0a('0x1'));var logger=require(_0xaa0a('0x2'))(_0xaa0a('0x3'));var moment=require('moment');var BPromise=require(_0xaa0a('0x4'));var rp=require(_0xaa0a('0x5'));var fs=require('fs');var path=require(_0xaa0a('0x6'));var rimraf=require(_0xaa0a('0x7'));var config=require(_0xaa0a('0x8'));var attributes=require(_0xaa0a('0x9'));module[_0xaa0a('0xa')]=function(_0x15b56b,_0x1b763b){return _0x15b56b['define']('SugarcrmConfiguration',attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ecad612..c7b0318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db3=['../../config/environment','jayson/promise','client','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0x8db3,0x161));var _0x38db=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x8db3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x38db('0x0'));var moment=require('moment');var BPromise=require(_0x38db('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38db('0x2'));var db=require(_0x38db('0x3'))['db'];var utils=require(_0x38db('0x4'));var logger=require(_0x38db('0x5'))(_0x38db('0x6'));var config=require(_0x38db('0x7'));var jayson=require(_0x38db('0x8'));var client=jayson[_0x38db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21f7ad,_0xe14d94,_0x4077c5){return new BPromise(function(_0x4b3e86,_0x59a48c){return client[_0x38db('0xa')](_0x21f7ad,_0x4077c5)['then'](function(_0x18da2c){logger[_0x38db('0xb')](_0x38db('0xc'),_0xe14d94,_0x38db('0xd'));logger[_0x38db('0xe')](_0x38db('0xf'),_0xe14d94,_0x38db('0xd'),JSON[_0x38db('0x10')](_0x18da2c));if(_0x18da2c[_0x38db('0x11')]){if(_0x18da2c[_0x38db('0x11')]['code']===0x1f4){logger[_0x38db('0x11')](_0x38db('0xc'),_0xe14d94,_0x18da2c['error'][_0x38db('0x12')]);return _0x59a48c(_0x18da2c[_0x38db('0x11')]['message']);}logger[_0x38db('0x11')](_0x38db('0xc'),_0xe14d94,_0x18da2c[_0x38db('0x11')][_0x38db('0x12')]);return _0x4b3e86(_0x18da2c[_0x38db('0x11')][_0x38db('0x12')]);}else{logger[_0x38db('0xb')](_0x38db('0xc'),_0xe14d94,_0x38db('0xd'));_0x4b3e86(_0x18da2c['result'][_0x38db('0x12')]);}})[_0x38db('0x13')](function(_0x8dbf59){logger[_0x38db('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xe14d94,_0x8dbf59);_0x59a48c(_0x8dbf59);});});}
\ No newline at end of file
+var _0x192b=['jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','../../mysqldb','../../config/utils'];(function(_0x5b7c18,_0x40c2f6){var _0xc5d107=function(_0x25482f){while(--_0x25482f){_0x5b7c18['push'](_0x5b7c18['shift']());}};_0xc5d107(++_0x40c2f6);}(_0x192b,0x188));var _0xb192=function(_0x5a6a80,_0x466b3f){_0x5a6a80=_0x5a6a80-0x0;var _0xb468de=_0x192b[_0x5a6a80];return _0xb468de;};'use strict';var _=require(_0xb192('0x0'));var util=require(_0xb192('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb192('0x2'))['db'];var utils=require(_0xb192('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb192('0x4'));var client=jayson[_0xb192('0x5')][_0xb192('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3a0b1b,_0x48de37,_0x55cfd3){return new BPromise(function(_0x3a8414,_0x35708d){return client[_0xb192('0x7')](_0x3a0b1b,_0x55cfd3)[_0xb192('0x8')](function(_0x47977c){logger[_0xb192('0x9')](_0xb192('0xa'),_0x48de37,'request\x20sent');logger['debug'](_0xb192('0xb'),_0x48de37,'request\x20sent',JSON[_0xb192('0xc')](_0x47977c));if(_0x47977c[_0xb192('0xd')]){if(_0x47977c['error'][_0xb192('0xe')]===0x1f4){logger['error'](_0xb192('0xa'),_0x48de37,_0x47977c[_0xb192('0xd')][_0xb192('0xf')]);return _0x35708d(_0x47977c['error'][_0xb192('0xf')]);}logger[_0xb192('0xd')](_0xb192('0xa'),_0x48de37,_0x47977c[_0xb192('0xd')]['message']);return _0x3a8414(_0x47977c[_0xb192('0xd')][_0xb192('0xf')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x48de37,_0xb192('0x10'));_0x3a8414(_0x47977c['result'][_0xb192('0xf')]);}})[_0xb192('0x11')](function(_0x228fb5){logger[_0xb192('0xd')](_0xb192('0xa'),_0x48de37,_0x228fb5);_0x35708d(_0x228fb5);});});}
\ No newline at end of file
index 3f6da3e..9a7aa5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd271=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','create','put','update','exports','multer','util'];(function(_0x3e446e,_0x2ad15c){var _0x58615c=function(_0x572290){while(--_0x572290){_0x3e446e['push'](_0x3e446e['shift']());}};_0x58615c(++_0x2ad15c);}(_0xd271,0x1eb));var _0x1d27=function(_0x1a1375,_0x23710f){_0x1a1375=_0x1a1375-0x0;var _0x39bb26=_0xd271[_0x1a1375];return _0x39bb26;};'use strict';var multer=require(_0x1d27('0x0'));var util=require(_0x1d27('0x1'));var path=require('path');var timeout=require(_0x1d27('0x2'));var express=require(_0x1d27('0x3'));var router=express[_0x1d27('0x4')]();var fs_extra=require(_0x1d27('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1d27('0x6'));var config=require('../../config/environment');var controller=require(_0x1d27('0x7'));router[_0x1d27('0x8')]('/',auth[_0x1d27('0x9')](),controller[_0x1d27('0xa')]);router[_0x1d27('0x8')](_0x1d27('0xb'),auth['isAuthenticated'](),controller[_0x1d27('0xc')]);router['post']('/',auth[_0x1d27('0x9')](),controller[_0x1d27('0xd')]);router[_0x1d27('0xe')](_0x1d27('0xb'),auth[_0x1d27('0x9')](),controller[_0x1d27('0xf')]);router['delete'](_0x1d27('0xb'),auth[_0x1d27('0x9')](),controller['destroy']);module[_0x1d27('0x10')]=router;
\ No newline at end of file
+var _0x2860=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmField.controller','get','index','isAuthenticated','post','create','put','/:id'];(function(_0x5b65cb,_0x4e3963){var _0xdf3d59=function(_0x2c8f6f){while(--_0x2c8f6f){_0x5b65cb['push'](_0x5b65cb['shift']());}};_0xdf3d59(++_0x4e3963);}(_0x2860,0x11c));var _0x0286=function(_0x2a58f4,_0x13885b){_0x2a58f4=_0x2a58f4-0x0;var _0x58ef72=_0x2860[_0x2a58f4];return _0x58ef72;};'use strict';var multer=require(_0x0286('0x0'));var util=require(_0x0286('0x1'));var path=require(_0x0286('0x2'));var timeout=require(_0x0286('0x3'));var express=require(_0x0286('0x4'));var router=express['Router']();var fs_extra=require(_0x0286('0x5'));var auth=require(_0x0286('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0286('0x7'));var controller=require(_0x0286('0x8'));router[_0x0286('0x9')]('/',auth['isAuthenticated'](),controller[_0x0286('0xa')]);router[_0x0286('0x9')]('/:id',auth[_0x0286('0xb')](),controller['show']);router[_0x0286('0xc')]('/',auth[_0x0286('0xb')](),controller[_0x0286('0xd')]);router[_0x0286('0xe')](_0x0286('0xf'),auth[_0x0286('0xb')](),controller[_0x0286('0x10')]);router[_0x0286('0x11')](_0x0286('0xf'),auth['isAuthenticated'](),controller[_0x0286('0x12')]);module[_0x0286('0x13')]=router;
\ No newline at end of file
index bbed345..37768de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x953d=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING','customVariable'];(function(_0x385198,_0x57ada3){var _0x40cd6b=function(_0x6875b6){while(--_0x6875b6){_0x385198['push'](_0x385198['shift']());}};_0x40cd6b(++_0x57ada3);}(_0x953d,0xc7));var _0xd953=function(_0x3f48e0,_0x453a44){_0x3f48e0=_0x3f48e0-0x0;var _0x2333e1=_0x953d[_0x3f48e0];return _0x2333e1;};'use strict';var Sequelize=require(_0xd953('0x0'));module['exports']={'type':{'type':Sequelize[_0xd953('0x1')](_0xd953('0x2'),_0xd953('0x3'),'customVariable',_0xd953('0x4'),_0xd953('0x5')),'defaultValue':_0xd953('0x2')},'content':{'type':Sequelize[_0xd953('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xd953('0x1')](_0xd953('0x2'),_0xd953('0x3'),_0xd953('0x7'))},'keyContent':{'type':Sequelize[_0xd953('0x6')]},'idField':{'type':Sequelize[_0xd953('0x6')]},'nameField':{'type':Sequelize[_0xd953('0x6')]},'customField':{'type':Sequelize[_0xd953('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd953('0x6')]}};
\ No newline at end of file
+var _0xbc2b=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0xbc2b,0xc7));var _0xbbc2=function(_0x144c0f,_0x2ab647){_0x144c0f=_0x144c0f-0x0;var _0x55df4d=_0xbc2b[_0x144c0f];return _0x55df4d;};'use strict';var Sequelize=require(_0xbbc2('0x0'));module[_0xbbc2('0x1')]={'type':{'type':Sequelize[_0xbbc2('0x2')](_0xbbc2('0x3'),_0xbbc2('0x4'),_0xbbc2('0x5'),'keyValue',_0xbbc2('0x6')),'defaultValue':_0xbbc2('0x3')},'content':{'type':Sequelize[_0xbbc2('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xbbc2('0x2')](_0xbbc2('0x3'),_0xbbc2('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xbbc2('0x7')]},'idField':{'type':Sequelize[_0xbbc2('0x7')]},'nameField':{'type':Sequelize[_0xbbc2('0x7')]},'customField':{'type':Sequelize[_0xbbc2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbbc2('0x7')]}};
\ No newline at end of file
index 057e492..18c36b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd85=['end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','index','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','SugarcrmField','findAll','rows','keys','options','find','catch','create','params','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xbd85,0x78));var _0x5bd8=function(_0x4a4c78,_0x13d5b7){_0x4a4c78=_0x4a4c78-0x0;var _0xd58f32=_0xbd85[_0x4a4c78];return _0xd58f32;};'use strict';var emlformat=require(_0x5bd8('0x0'));var rimraf=require(_0x5bd8('0x1'));var zipdir=require(_0x5bd8('0x2'));var jsonpatch=require(_0x5bd8('0x3'));var rp=require(_0x5bd8('0x4'));var moment=require(_0x5bd8('0x5'));var BPromise=require(_0x5bd8('0x6'));var Mustache=require(_0x5bd8('0x7'));var util=require(_0x5bd8('0x8'));var path=require(_0x5bd8('0x9'));var sox=require(_0x5bd8('0xa'));var csv=require(_0x5bd8('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bd8('0xc'));var _=require('lodash');var squel=require(_0x5bd8('0xd'));var crypto=require(_0x5bd8('0xe'));var jsforce=require(_0x5bd8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5bd8('0xb'));var querystring=require(_0x5bd8('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bd8('0x11'));var authService=require(_0x5bd8('0x12'));var qs=require(_0x5bd8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5bd8('0x14'));var logger=require(_0x5bd8('0x15'))(_0x5bd8('0x16'));var utils=require('../../config/utils');var config=require(_0x5bd8('0x17'));var licenseUtil=require(_0x5bd8('0x18'));var db=require(_0x5bd8('0x19'))['db'];function respondWithStatusCode(_0x5141fd,_0x107529){_0x107529=_0x107529||0xcc;return function(_0x395588){if(_0x395588){return _0x5141fd[_0x5bd8('0x1a')](_0x107529);}return _0x5141fd[_0x5bd8('0x1b')](_0x107529)[_0x5bd8('0x1c')]();};}function respondWithResult(_0x130d76,_0x17fa87){_0x17fa87=_0x17fa87||0xc8;return function(_0x1431d4){if(_0x1431d4){return _0x130d76[_0x5bd8('0x1b')](_0x17fa87)['json'](_0x1431d4);}};}function respondWithFilteredResult(_0x4e418c,_0x551560){return function(_0x68051f){if(_0x68051f){var _0x25e5b0=typeof _0x551560[_0x5bd8('0x1d')]==='undefined'&&typeof _0x551560[_0x5bd8('0x1e')]===_0x5bd8('0x1f');var _0x34cbe5=_0x68051f[_0x5bd8('0x20')];var _0x2f353a=_0x25e5b0?0x0:_0x551560[_0x5bd8('0x1d')];var _0x2e8230=_0x25e5b0?_0x68051f['count']:_0x551560[_0x5bd8('0x1d')]+_0x551560[_0x5bd8('0x1e')];var _0x403f9c;if(_0x2e8230>=_0x34cbe5){_0x2e8230=_0x34cbe5;_0x403f9c=0xc8;}else{_0x403f9c=0xce;}_0x4e418c['status'](_0x403f9c);return _0x4e418c[_0x5bd8('0x21')](_0x5bd8('0x22'),_0x2f353a+'-'+_0x2e8230+'/'+_0x34cbe5)[_0x5bd8('0x23')](_0x68051f);}return null;};}function patchUpdates(_0x5a19b0){return function(_0x66aee1){try{jsonpatch[_0x5bd8('0x24')](_0x66aee1,_0x5a19b0,!![]);}catch(_0x552801){return BPromise[_0x5bd8('0x25')](_0x552801);}return _0x66aee1['save']();};}function saveUpdates(_0x1f7d3e,_0x7827e2){return function(_0x25b167){if(_0x25b167){return _0x25b167[_0x5bd8('0x26')](_0x1f7d3e)[_0x5bd8('0x27')](function(_0x3494a0){return _0x3494a0;});}return null;};}function removeEntity(_0x3a571b,_0x57976c){return function(_0x39aead){if(_0x39aead){return _0x39aead[_0x5bd8('0x28')]()[_0x5bd8('0x27')](function(){_0x3a571b['status'](0xcc)[_0x5bd8('0x1c')]();});}};}function handleEntityNotFound(_0x2e017a,_0x57c908){return function(_0x105e14){if(!_0x105e14){_0x2e017a[_0x5bd8('0x1a')](0x194);}return _0x105e14;};}function handleError(_0x437b0d,_0x5e51cf){_0x5e51cf=_0x5e51cf||0x1f4;return function(_0x1ee562){logger[_0x5bd8('0x29')](_0x1ee562['stack']);if(_0x1ee562[_0x5bd8('0x2a')]){delete _0x1ee562[_0x5bd8('0x2a')];}_0x437b0d[_0x5bd8('0x1b')](_0x5e51cf)['send'](_0x1ee562);};}exports[_0x5bd8('0x2b')]=function(_0x4dbcfb,_0x2b9dff){var _0x4acbc8={},_0x18f148={},_0x56fe98={'count':0x0,'rows':[]};var _0xf5015c=_['map'](db['SugarcrmField']['rawAttributes'],function(_0x1dc32d){return{'name':_0x1dc32d[_0x5bd8('0x2c')],'type':_0x1dc32d[_0x5bd8('0x2d')][_0x5bd8('0x2e')]};});_0x18f148[_0x5bd8('0x2f')]=_[_0x5bd8('0x30')](_0xf5015c,_0x5bd8('0x2a'));_0x18f148[_0x5bd8('0x31')]=_['keys'](_0x4dbcfb[_0x5bd8('0x31')]);_0x18f148[_0x5bd8('0x32')]=_[_0x5bd8('0x33')](_0x18f148[_0x5bd8('0x2f')],_0x18f148[_0x5bd8('0x31')]);_0x4acbc8['attributes']=_['intersection'](_0x18f148[_0x5bd8('0x2f')],qs[_0x5bd8('0x34')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x34')]));_0x4acbc8[_0x5bd8('0x35')]=_0x4acbc8['attributes'][_0x5bd8('0x36')]?_0x4acbc8[_0x5bd8('0x35')]:_0x18f148[_0x5bd8('0x2f')];if(!_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x37')]('nolimit')){_0x4acbc8[_0x5bd8('0x1e')]=qs['limit'](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x1e')]);_0x4acbc8[_0x5bd8('0x1d')]=qs[_0x5bd8('0x1d')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x1d')]);}_0x4acbc8['order']=qs[_0x5bd8('0x38')](_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x38')]);_0x4acbc8[_0x5bd8('0x39')]=qs['filters'](_[_0x5bd8('0x3a')](_0x4dbcfb[_0x5bd8('0x31')],_0x18f148[_0x5bd8('0x32')]),_0xf5015c);if(_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x3b')]){_0x4acbc8['where']=_['merge'](_0x4acbc8[_0x5bd8('0x39')],{'$or':_['map'](_0xf5015c,function(_0x414deb){if(_0x414deb[_0x5bd8('0x2d')]!==_0x5bd8('0x3c')){var _0x1d8339={};_0x1d8339[_0x414deb['name']]={'$like':'%'+_0x4dbcfb['query'][_0x5bd8('0x3b')]+'%'};return _0x1d8339;}})});}_0x4acbc8=_[_0x5bd8('0x3d')]({},_0x4acbc8,_0x4dbcfb['options']);var _0x373c18={'where':_0x4acbc8[_0x5bd8('0x39')]};return db['SugarcrmField']['count'](_0x373c18)['then'](function(_0x289648){_0x56fe98[_0x5bd8('0x20')]=_0x289648;if(_0x4dbcfb[_0x5bd8('0x31')][_0x5bd8('0x3e')]){_0x4acbc8[_0x5bd8('0x3f')]=[{'all':!![]}];}return db[_0x5bd8('0x40')][_0x5bd8('0x41')](_0x4acbc8);})[_0x5bd8('0x27')](function(_0x504fe9){_0x56fe98[_0x5bd8('0x42')]=_0x504fe9;return _0x56fe98;})[_0x5bd8('0x27')](respondWithFilteredResult(_0x2b9dff,_0x4acbc8))['catch'](handleError(_0x2b9dff,null));};exports['show']=function(_0x5a84fa,_0x55cd17){var _0x229936={'raw':!![],'where':{'id':_0x5a84fa['params']['id']}},_0x137ba6={};_0x137ba6[_0x5bd8('0x2f')]=_[_0x5bd8('0x43')](db[_0x5bd8('0x40')]['rawAttributes']);_0x137ba6[_0x5bd8('0x31')]=_[_0x5bd8('0x43')](_0x5a84fa[_0x5bd8('0x31')]);_0x137ba6[_0x5bd8('0x32')]=_[_0x5bd8('0x33')](_0x137ba6[_0x5bd8('0x2f')],_0x137ba6[_0x5bd8('0x31')]);_0x229936[_0x5bd8('0x35')]=_[_0x5bd8('0x33')](_0x137ba6[_0x5bd8('0x2f')],qs[_0x5bd8('0x34')](_0x5a84fa[_0x5bd8('0x31')][_0x5bd8('0x34')]));_0x229936[_0x5bd8('0x35')]=_0x229936[_0x5bd8('0x35')][_0x5bd8('0x36')]?_0x229936[_0x5bd8('0x35')]:_0x137ba6['model'];if(_0x5a84fa['query'][_0x5bd8('0x3e')]){_0x229936[_0x5bd8('0x3f')]=[{'all':!![]}];}_0x229936=_['merge']({},_0x229936,_0x5a84fa[_0x5bd8('0x44')]);return db[_0x5bd8('0x40')][_0x5bd8('0x45')](_0x229936)[_0x5bd8('0x27')](handleEntityNotFound(_0x55cd17,null))['then'](respondWithResult(_0x55cd17,null))[_0x5bd8('0x46')](handleError(_0x55cd17,null));};exports[_0x5bd8('0x47')]=function(_0x20151b,_0x27aeb4){return db[_0x5bd8('0x40')][_0x5bd8('0x47')](_0x20151b['body'],{})[_0x5bd8('0x27')](respondWithResult(_0x27aeb4,0xc9))[_0x5bd8('0x46')](handleError(_0x27aeb4,null));};exports[_0x5bd8('0x26')]=function(_0x1826eb,_0x3e6316){if(_0x1826eb['body']['id']){delete _0x1826eb['body']['id'];}return db[_0x5bd8('0x40')][_0x5bd8('0x45')]({'where':{'id':_0x1826eb[_0x5bd8('0x48')]['id']}})['then'](handleEntityNotFound(_0x3e6316,null))[_0x5bd8('0x27')](saveUpdates(_0x1826eb[_0x5bd8('0x49')],null))[_0x5bd8('0x27')](respondWithResult(_0x3e6316,null))[_0x5bd8('0x46')](handleError(_0x3e6316,null));};exports[_0x5bd8('0x28')]=function(_0x43b95e,_0x42c2af){return db[_0x5bd8('0x40')]['find']({'where':{'id':_0x43b95e[_0x5bd8('0x48')]['id']}})[_0x5bd8('0x27')](handleEntityNotFound(_0x42c2af,null))[_0x5bd8('0x27')](removeEntity(_0x42c2af,null))[_0x5bd8('0x46')](handleError(_0x42c2af,null));};
\ No newline at end of file
+var _0x3a59=['querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','limit','count','offset','set','Content-Range','save','update','destroy','then','error','name','send','index','map','SugarcrmField','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','catch','show','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce'];(function(_0x358553,_0x526a02){var _0x2e5f33=function(_0x4f6119){while(--_0x4f6119){_0x358553['push'](_0x358553['shift']());}};_0x2e5f33(++_0x526a02);}(_0x3a59,0x7a));var _0x93a5=function(_0x44afa4,_0x5be27b){_0x44afa4=_0x44afa4-0x0;var _0xcad289=_0x3a59[_0x44afa4];return _0xcad289;};'use strict';var emlformat=require(_0x93a5('0x0'));var rimraf=require(_0x93a5('0x1'));var zipdir=require(_0x93a5('0x2'));var jsonpatch=require(_0x93a5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x93a5('0x4'));var util=require(_0x93a5('0x5'));var path=require(_0x93a5('0x6'));var sox=require(_0x93a5('0x7'));var csv=require(_0x93a5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x93a5('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x93a5('0xa'));var jsforce=require(_0x93a5('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x93a5('0x8'));var querystring=require(_0x93a5('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x93a5('0xd'));var qs=require(_0x93a5('0xe'));var as=require(_0x93a5('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x93a5('0x10'))(_0x93a5('0x11'));var utils=require(_0x93a5('0x12'));var config=require(_0x93a5('0x13'));var licenseUtil=require(_0x93a5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48ed03,_0xe8080f){_0xe8080f=_0xe8080f||0xcc;return function(_0x141f7a){if(_0x141f7a){return _0x48ed03[_0x93a5('0x15')](_0xe8080f);}return _0x48ed03['status'](_0xe8080f)[_0x93a5('0x16')]();};}function respondWithResult(_0x263197,_0x32ff1b){_0x32ff1b=_0x32ff1b||0xc8;return function(_0x578fb5){if(_0x578fb5){return _0x263197[_0x93a5('0x17')](_0x32ff1b)[_0x93a5('0x18')](_0x578fb5);}};}function respondWithFilteredResult(_0x3981ea,_0x59504c){return function(_0x59a465){if(_0x59a465){var _0x42e3ab=typeof _0x59504c['offset']==='undefined'&&typeof _0x59504c[_0x93a5('0x19')]==='undefined';var _0x20687c=_0x59a465[_0x93a5('0x1a')];var _0x2b46a5=_0x42e3ab?0x0:_0x59504c[_0x93a5('0x1b')];var _0xf76541=_0x42e3ab?_0x59a465['count']:_0x59504c[_0x93a5('0x1b')]+_0x59504c['limit'];var _0x294128;if(_0xf76541>=_0x20687c){_0xf76541=_0x20687c;_0x294128=0xc8;}else{_0x294128=0xce;}_0x3981ea[_0x93a5('0x17')](_0x294128);return _0x3981ea[_0x93a5('0x1c')](_0x93a5('0x1d'),_0x2b46a5+'-'+_0xf76541+'/'+_0x20687c)[_0x93a5('0x18')](_0x59a465);}return null;};}function patchUpdates(_0xfc3f63){return function(_0xe748d5){try{jsonpatch['apply'](_0xe748d5,_0xfc3f63,!![]);}catch(_0x25e6a1){return BPromise['reject'](_0x25e6a1);}return _0xe748d5[_0x93a5('0x1e')]();};}function saveUpdates(_0x3471b3,_0x508a90){return function(_0x1880e3){if(_0x1880e3){return _0x1880e3[_0x93a5('0x1f')](_0x3471b3)['then'](function(_0x146230){return _0x146230;});}return null;};}function removeEntity(_0x50c250,_0x31d59e){return function(_0x4f7cc9){if(_0x4f7cc9){return _0x4f7cc9[_0x93a5('0x20')]()[_0x93a5('0x21')](function(){_0x50c250['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fce0c,_0x311ca1){return function(_0x33af36){if(!_0x33af36){_0x2fce0c[_0x93a5('0x15')](0x194);}return _0x33af36;};}function handleError(_0x1093c6,_0x16178d){_0x16178d=_0x16178d||0x1f4;return function(_0x396c91){logger[_0x93a5('0x22')](_0x396c91['stack']);if(_0x396c91[_0x93a5('0x23')]){delete _0x396c91['name'];}_0x1093c6[_0x93a5('0x17')](_0x16178d)[_0x93a5('0x24')](_0x396c91);};}exports[_0x93a5('0x25')]=function(_0x3334db,_0x2c213e){var _0x1809ea={},_0x2a936c={},_0x3d7978={'count':0x0,'rows':[]};var _0x428099=_[_0x93a5('0x26')](db[_0x93a5('0x27')][_0x93a5('0x28')],function(_0x17ea69){return{'name':_0x17ea69[_0x93a5('0x29')],'type':_0x17ea69[_0x93a5('0x2a')]['key']};});_0x2a936c[_0x93a5('0x2b')]=_[_0x93a5('0x26')](_0x428099,_0x93a5('0x23'));_0x2a936c[_0x93a5('0x2c')]=_[_0x93a5('0x2d')](_0x3334db[_0x93a5('0x2c')]);_0x2a936c[_0x93a5('0x2e')]=_['intersection'](_0x2a936c[_0x93a5('0x2b')],_0x2a936c['query']);_0x1809ea[_0x93a5('0x2f')]=_[_0x93a5('0x30')](_0x2a936c[_0x93a5('0x2b')],qs[_0x93a5('0x31')](_0x3334db[_0x93a5('0x2c')][_0x93a5('0x31')]));_0x1809ea['attributes']=_0x1809ea[_0x93a5('0x2f')]['length']?_0x1809ea[_0x93a5('0x2f')]:_0x2a936c['model'];if(!_0x3334db[_0x93a5('0x2c')][_0x93a5('0x32')]('nolimit')){_0x1809ea['limit']=qs[_0x93a5('0x19')](_0x3334db[_0x93a5('0x2c')][_0x93a5('0x19')]);_0x1809ea[_0x93a5('0x1b')]=qs['offset'](_0x3334db['query']['offset']);}_0x1809ea[_0x93a5('0x33')]=qs[_0x93a5('0x34')](_0x3334db['query'][_0x93a5('0x34')]);_0x1809ea[_0x93a5('0x35')]=qs[_0x93a5('0x2e')](_[_0x93a5('0x36')](_0x3334db[_0x93a5('0x2c')],_0x2a936c[_0x93a5('0x2e')]),_0x428099);if(_0x3334db[_0x93a5('0x2c')][_0x93a5('0x37')]){_0x1809ea['where']=_[_0x93a5('0x38')](_0x1809ea[_0x93a5('0x35')],{'$or':_[_0x93a5('0x26')](_0x428099,function(_0x2cd4c0){if(_0x2cd4c0[_0x93a5('0x2a')]!=='VIRTUAL'){var _0xc18a0f={};_0xc18a0f[_0x2cd4c0[_0x93a5('0x23')]]={'$like':'%'+_0x3334db[_0x93a5('0x2c')][_0x93a5('0x37')]+'%'};return _0xc18a0f;}})});}_0x1809ea=_[_0x93a5('0x38')]({},_0x1809ea,_0x3334db[_0x93a5('0x39')]);var _0x2a880c={'where':_0x1809ea[_0x93a5('0x35')]};return db[_0x93a5('0x27')][_0x93a5('0x1a')](_0x2a880c)['then'](function(_0x1b785a){_0x3d7978[_0x93a5('0x1a')]=_0x1b785a;if(_0x3334db[_0x93a5('0x2c')][_0x93a5('0x3a')]){_0x1809ea['include']=[{'all':!![]}];}return db[_0x93a5('0x27')]['findAll'](_0x1809ea);})['then'](function(_0x56375b){_0x3d7978[_0x93a5('0x3b')]=_0x56375b;return _0x3d7978;})[_0x93a5('0x21')](respondWithFilteredResult(_0x2c213e,_0x1809ea))[_0x93a5('0x3c')](handleError(_0x2c213e,null));};exports[_0x93a5('0x3d')]=function(_0x35d25c,_0x5c6155){var _0x308e72={'raw':!![],'where':{'id':_0x35d25c['params']['id']}},_0x9839f0={};_0x9839f0[_0x93a5('0x2b')]=_[_0x93a5('0x2d')](db[_0x93a5('0x27')]['rawAttributes']);_0x9839f0[_0x93a5('0x2c')]=_['keys'](_0x35d25c[_0x93a5('0x2c')]);_0x9839f0[_0x93a5('0x2e')]=_[_0x93a5('0x30')](_0x9839f0[_0x93a5('0x2b')],_0x9839f0[_0x93a5('0x2c')]);_0x308e72['attributes']=_[_0x93a5('0x30')](_0x9839f0[_0x93a5('0x2b')],qs[_0x93a5('0x31')](_0x35d25c[_0x93a5('0x2c')]['fields']));_0x308e72[_0x93a5('0x2f')]=_0x308e72['attributes'][_0x93a5('0x3e')]?_0x308e72['attributes']:_0x9839f0[_0x93a5('0x2b')];if(_0x35d25c[_0x93a5('0x2c')][_0x93a5('0x3a')]){_0x308e72['include']=[{'all':!![]}];}_0x308e72=_[_0x93a5('0x38')]({},_0x308e72,_0x35d25c[_0x93a5('0x39')]);return db[_0x93a5('0x27')][_0x93a5('0x3f')](_0x308e72)['then'](handleEntityNotFound(_0x5c6155,null))[_0x93a5('0x21')](respondWithResult(_0x5c6155,null))[_0x93a5('0x3c')](handleError(_0x5c6155,null));};exports[_0x93a5('0x40')]=function(_0x1884de,_0x26e549){return db[_0x93a5('0x27')][_0x93a5('0x40')](_0x1884de['body'],{})[_0x93a5('0x21')](respondWithResult(_0x26e549,0xc9))[_0x93a5('0x3c')](handleError(_0x26e549,null));};exports['update']=function(_0xfb7501,_0x8ccfed){if(_0xfb7501[_0x93a5('0x41')]['id']){delete _0xfb7501[_0x93a5('0x41')]['id'];}return db[_0x93a5('0x27')][_0x93a5('0x3f')]({'where':{'id':_0xfb7501['params']['id']}})[_0x93a5('0x21')](handleEntityNotFound(_0x8ccfed,null))['then'](saveUpdates(_0xfb7501[_0x93a5('0x41')],null))[_0x93a5('0x21')](respondWithResult(_0x8ccfed,null))['catch'](handleError(_0x8ccfed,null));};exports['destroy']=function(_0x1e053b,_0x18d1d0){return db[_0x93a5('0x27')][_0x93a5('0x3f')]({'where':{'id':_0x1e053b[_0x93a5('0x42')]['id']}})[_0x93a5('0x21')](handleEntityNotFound(_0x18d1d0,null))['then'](removeEntity(_0x18d1d0,null))['catch'](handleError(_0x18d1d0,null));};
\ No newline at end of file
index bdf33e1..51c6b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec3a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','lodash','util','../../config/logger','api'];(function(_0x4f4957,_0x2962d2){var _0x182229=function(_0x1d7fdc){while(--_0x1d7fdc){_0x4f4957['push'](_0x4f4957['shift']());}};_0x182229(++_0x2962d2);}(_0xec3a,0x12c));var _0xaec3=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xec3a[_0x2aecb2];return _0x3ebb80;};'use strict';var _=require(_0xaec3('0x0'));var util=require(_0xaec3('0x1'));var logger=require(_0xaec3('0x2'))(_0xaec3('0x3'));var moment=require(_0xaec3('0x4'));var BPromise=require(_0xaec3('0x5'));var rp=require(_0xaec3('0x6'));var fs=require('fs');var path=require(_0xaec3('0x7'));var rimraf=require(_0xaec3('0x8'));var config=require(_0xaec3('0x9'));var attributes=require(_0xaec3('0xa'));module[_0xaec3('0xb')]=function(_0x3c448f,_0xf144b0){return _0x3c448f['define'](_0xaec3('0xc'),attributes,{'tableName':_0xaec3('0xd'),'paranoid':![],'indexes':[{'name':_0xaec3('0xe'),'fields':[_0xaec3('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x29dd=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','idField','lodash'];(function(_0x1299e1,_0x29d4b2){var _0x13b866=function(_0xb81daf){while(--_0xb81daf){_0x1299e1['push'](_0x1299e1['shift']());}};_0x13b866(++_0x29d4b2);}(_0x29dd,0x176));var _0xd29d=function(_0x45862b,_0x4c280c){_0x45862b=_0x45862b-0x0;var _0xcc2e9d=_0x29dd[_0x45862b];return _0xcc2e9d;};'use strict';var _=require(_0xd29d('0x0'));var util=require(_0xd29d('0x1'));var logger=require(_0xd29d('0x2'))(_0xd29d('0x3'));var moment=require('moment');var BPromise=require(_0xd29d('0x4'));var rp=require(_0xd29d('0x5'));var fs=require('fs');var path=require(_0xd29d('0x6'));var rimraf=require(_0xd29d('0x7'));var config=require(_0xd29d('0x8'));var attributes=require(_0xd29d('0x9'));module[_0xd29d('0xa')]=function(_0x4d528b,_0xdffd0d){return _0x4d528b[_0xd29d('0xb')](_0xd29d('0xc'),attributes,{'tableName':_0xd29d('0xd'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xd29d('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2e86ec5..d7ce549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70aa=['lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x585133,_0x2412a1){var _0x18254a=function(_0x4c8aaf){while(--_0x4c8aaf){_0x585133['push'](_0x585133['shift']());}};_0x18254a(++_0x2412a1);}(_0x70aa,0xbd));var _0xa70a=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x70aa[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0xa70a('0x0'));var util=require(_0xa70a('0x1'));var moment=require('moment');var BPromise=require(_0xa70a('0x2'));var rs=require(_0xa70a('0x3'));var fs=require('fs');var Redis=require(_0xa70a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa70a('0x5'))(_0xa70a('0x6'));var config=require(_0xa70a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa70a('0x8')][_0xa70a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x151520,_0x5ad9be,_0x257089){return new BPromise(function(_0x256023,_0x3122d8){return client[_0xa70a('0xa')](_0x151520,_0x257089)[_0xa70a('0xb')](function(_0x4f8471){logger[_0xa70a('0xc')](_0xa70a('0xd'),_0x5ad9be,_0xa70a('0xe'));logger[_0xa70a('0xf')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x5ad9be,_0xa70a('0xe'),JSON[_0xa70a('0x10')](_0x4f8471));if(_0x4f8471[_0xa70a('0x11')]){if(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x12')]===0x1f4){logger['error'](_0xa70a('0xd'),_0x5ad9be,_0x4f8471[_0xa70a('0x11')]['message']);return _0x3122d8(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);}logger[_0xa70a('0x11')]('SugarcrmField,\x20%s,\x20%s',_0x5ad9be,_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);return _0x256023(_0x4f8471[_0xa70a('0x11')][_0xa70a('0x13')]);}else{logger[_0xa70a('0xc')]('SugarcrmField,\x20%s,\x20%s',_0x5ad9be,'request\x20sent');_0x256023(_0x4f8471['result'][_0xa70a('0x13')]);}})[_0xa70a('0x14')](function(_0x529af5){logger['error'](_0xa70a('0xd'),_0x5ad9be,_0x529af5);_0x3122d8(_0x529af5);});});}
\ No newline at end of file
+var _0x704d=['request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x2acf1d,_0x17bf40){var _0x1bf412=function(_0x2ebf39){while(--_0x2ebf39){_0x2acf1d['push'](_0x2acf1d['shift']());}};_0x1bf412(++_0x17bf40);}(_0x704d,0x159));var _0xd704=function(_0x5b7866,_0x55cbc7){_0x5b7866=_0x5b7866-0x0;var _0x265aca=_0x704d[_0x5b7866];return _0x265aca;};'use strict';var _=require(_0xd704('0x0'));var util=require(_0xd704('0x1'));var moment=require(_0xd704('0x2'));var BPromise=require(_0xd704('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd704('0x4'));var logger=require(_0xd704('0x5'))(_0xd704('0x6'));var config=require(_0xd704('0x7'));var jayson=require(_0xd704('0x8'));var client=jayson[_0xd704('0x9')][_0xd704('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1444ad,_0x58f7ff,_0x2553e3){return new BPromise(function(_0x22436d,_0x5e90ce){return client[_0xd704('0xb')](_0x1444ad,_0x2553e3)[_0xd704('0xc')](function(_0x4bd4b7){logger[_0xd704('0xd')](_0xd704('0xe'),_0x58f7ff,_0xd704('0xf'));logger[_0xd704('0x10')](_0xd704('0x11'),_0x58f7ff,'request\x20sent',JSON[_0xd704('0x12')](_0x4bd4b7));if(_0x4bd4b7[_0xd704('0x13')]){if(_0x4bd4b7['error'][_0xd704('0x14')]===0x1f4){logger[_0xd704('0x13')](_0xd704('0xe'),_0x58f7ff,_0x4bd4b7[_0xd704('0x13')][_0xd704('0x15')]);return _0x5e90ce(_0x4bd4b7['error'][_0xd704('0x15')]);}logger[_0xd704('0x13')](_0xd704('0xe'),_0x58f7ff,_0x4bd4b7['error']['message']);return _0x22436d(_0x4bd4b7[_0xd704('0x13')][_0xd704('0x15')]);}else{logger[_0xd704('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x58f7ff,_0xd704('0xf'));_0x22436d(_0x4bd4b7[_0xd704('0x16')][_0xd704('0x15')]);}})[_0xd704('0x17')](function(_0x764642){logger['error'](_0xd704('0xe'),_0x58f7ff,_0x764642);_0x5e90ce(_0x764642);});});}
\ No newline at end of file
index 3f14ec7..b27c353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed2=['fs-extra','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','destroy','multer','path','connect-timeout','Router'];(function(_0x1f6f84,_0x2bab55){var _0x177f40=function(_0x384ab4){while(--_0x384ab4){_0x1f6f84['push'](_0x1f6f84['shift']());}};_0x177f40(++_0x2bab55);}(_0x5ed2,0x114));var _0x25ed=function(_0x11a566,_0x4b82c5){_0x11a566=_0x11a566-0x0;var _0x2395ac=_0x5ed2[_0x11a566];return _0x2395ac;};'use strict';var multer=require(_0x25ed('0x0'));var util=require('util');var path=require(_0x25ed('0x1'));var timeout=require(_0x25ed('0x2'));var express=require('express');var router=express[_0x25ed('0x3')]();var fs_extra=require(_0x25ed('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25ed('0x5'));var config=require(_0x25ed('0x6'));var controller=require(_0x25ed('0x7'));router[_0x25ed('0x8')]('/',auth['isAuthenticated'](),controller[_0x25ed('0x9')]);router[_0x25ed('0x8')](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller['show']);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x25ed('0xc')]);router[_0x25ed('0x8')](_0x25ed('0xd'),auth[_0x25ed('0xb')](),controller['getFields']);router[_0x25ed('0xe')]('/',auth[_0x25ed('0xb')](),controller[_0x25ed('0xf')]);router['post']('/:id/configurations',auth[_0x25ed('0xb')](),controller[_0x25ed('0x10')]);router[_0x25ed('0x11')](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller[_0x25ed('0x12')]);router['delete'](_0x25ed('0xa'),auth[_0x25ed('0xb')](),controller[_0x25ed('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x91e6=['create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerAccount.controller','get','isAuthenticated','/:id','getConfigurations','/:id/fields','getFields','post'];(function(_0x5e5ae4,_0xb1052d){var _0x230242=function(_0x1ac4ae){while(--_0x1ac4ae){_0x5e5ae4['push'](_0x5e5ae4['shift']());}};_0x230242(++_0xb1052d);}(_0x91e6,0x123));var _0x691e=function(_0xabb4a6,_0x463c5b){_0xabb4a6=_0xabb4a6-0x0;var _0x18f63a=_0x91e6[_0xabb4a6];return _0x18f63a;};'use strict';var multer=require(_0x691e('0x0'));var util=require(_0x691e('0x1'));var path=require(_0x691e('0x2'));var timeout=require(_0x691e('0x3'));var express=require(_0x691e('0x4'));var router=express[_0x691e('0x5')]();var fs_extra=require(_0x691e('0x6'));var auth=require(_0x691e('0x7'));var interaction=require(_0x691e('0x8'));var config=require('../../config/environment');var controller=require(_0x691e('0x9'));router[_0x691e('0xa')]('/',auth[_0x691e('0xb')](),controller['index']);router[_0x691e('0xa')](_0x691e('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x691e('0xa')]('/:id/configurations',auth[_0x691e('0xb')](),controller[_0x691e('0xd')]);router[_0x691e('0xa')](_0x691e('0xe'),auth['isAuthenticated'](),controller[_0x691e('0xf')]);router[_0x691e('0x10')]('/',auth[_0x691e('0xb')](),controller[_0x691e('0x11')]);router[_0x691e('0x10')]('/:id/configurations',auth[_0x691e('0xb')](),controller['addConfiguration']);router[_0x691e('0x12')](_0x691e('0xc'),auth[_0x691e('0xb')](),controller['update']);router[_0x691e('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x691e('0x14')]);module[_0x691e('0x15')]=router;
\ No newline at end of file
index e54fbc8..73b44ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a79=['sequelize','exports','STRING','HelpDesk'];(function(_0x4e6842,_0x468c69){var _0x2015d0=function(_0x1c7a7c){while(--_0x1c7a7c){_0x4e6842['push'](_0x4e6842['shift']());}};_0x2015d0(++_0x468c69);}(_0x9a79,0xec));var _0x99a7=function(_0x3efe87,_0x35ad48){_0x3efe87=_0x3efe87-0x0;var _0x56a4cc=_0x9a79[_0x3efe87];return _0x56a4cc;};'use strict';var Sequelize=require(_0x99a7('0x0'));module[_0x99a7('0x1')]={'name':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x99a7('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![],'defaultValue':_0x99a7('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x99a7('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x3995=['STRING','HelpDesk','sequelize'];(function(_0x3b204d,_0x2868c6){var _0x31c4dd=function(_0x531033){while(--_0x531033){_0x3b204d['push'](_0x3b204d['shift']());}};_0x31c4dd(++_0x2868c6);}(_0x3995,0xb3));var _0x5399=function(_0x9048d9,_0x5163de){_0x9048d9=_0x9048d9-0x0;var _0x36adb9=_0x3995[_0x9048d9];return _0x36adb9;};'use strict';var Sequelize=require(_0x5399('0x0'));module['exports']={'name':{'type':Sequelize[_0x5399('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x5399('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x5399('0x1')],'allowNull':![],'defaultValue':_0x5399('0x2')},'remoteUri':{'type':Sequelize[_0x5399('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x5399('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x5399('0x1')],'allowNull':![]}};
\ No newline at end of file
index 3b641c0..1905854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf663=['query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','VtigerConfiguration','nolimit','getConfigurations','addConfiguration','findOne','AccountId','getSubjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','reference','owner','remove','includes','editable','false','label','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model'];(function(_0x5c3274,_0x3dcdaa){var _0x3befa4=function(_0x5af42b){while(--_0x5af42b){_0x5c3274['push'](_0x5c3274['shift']());}};_0x3befa4(++_0x3dcdaa);}(_0xf663,0x1b9));var _0x3f66=function(_0x115f14,_0x1242e8){_0x115f14=_0x115f14-0x0;var _0x1785ee=_0xf663[_0x115f14];return _0x1785ee;};'use strict';var emlformat=require(_0x3f66('0x0'));var rimraf=require(_0x3f66('0x1'));var zipdir=require(_0x3f66('0x2'));var jsonpatch=require(_0x3f66('0x3'));var rp=require(_0x3f66('0x4'));var moment=require('moment');var BPromise=require(_0x3f66('0x5'));var Mustache=require(_0x3f66('0x6'));var util=require('util');var path=require(_0x3f66('0x7'));var sox=require(_0x3f66('0x8'));var csv=require(_0x3f66('0x9'));var ejs=require(_0x3f66('0xa'));var fs=require('fs');var fs_extra=require(_0x3f66('0xb'));var _=require(_0x3f66('0xc'));var squel=require(_0x3f66('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3f66('0x9'));var querystring=require('querystring');var Papa=require(_0x3f66('0xe'));var Redis=require(_0x3f66('0xf'));var authService=require(_0x3f66('0x10'));var qs=require(_0x3f66('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f66('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3f66('0x13'));var licenseUtil=require(_0x3f66('0x14'));var db=require(_0x3f66('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3592a1,_0x38f733){_0x38f733=_0x38f733||0xcc;return function(_0x5271b0){if(_0x5271b0){return _0x3592a1[_0x3f66('0x16')](_0x38f733);}return _0x3592a1[_0x3f66('0x17')](_0x38f733)[_0x3f66('0x18')]();};}function respondWithResult(_0x31a7f4,_0x982a87){_0x982a87=_0x982a87||0xc8;return function(_0x2acb77){if(_0x2acb77){return _0x31a7f4[_0x3f66('0x17')](_0x982a87)[_0x3f66('0x19')](_0x2acb77);}};}function respondWithFilteredResult(_0x3fea7d,_0x229acc){return function(_0x3953c1){if(_0x3953c1){var _0xe82836=typeof _0x229acc[_0x3f66('0x1a')]===_0x3f66('0x1b')&&typeof _0x229acc[_0x3f66('0x1c')]==='undefined';var _0x37e513=_0x3953c1['count'];var _0xfee373=_0xe82836?0x0:_0x229acc[_0x3f66('0x1a')];var _0x2b4637=_0xe82836?_0x3953c1[_0x3f66('0x1d')]:_0x229acc[_0x3f66('0x1a')]+_0x229acc[_0x3f66('0x1c')];var _0xdbe05c;if(_0x2b4637>=_0x37e513){_0x2b4637=_0x37e513;_0xdbe05c=0xc8;}else{_0xdbe05c=0xce;}_0x3fea7d[_0x3f66('0x17')](_0xdbe05c);return _0x3fea7d['set'](_0x3f66('0x1e'),_0xfee373+'-'+_0x2b4637+'/'+_0x37e513)[_0x3f66('0x19')](_0x3953c1);}return null;};}function patchUpdates(_0x81e3d0){return function(_0x351cff){try{jsonpatch[_0x3f66('0x1f')](_0x351cff,_0x81e3d0,!![]);}catch(_0x1a6354){return BPromise[_0x3f66('0x20')](_0x1a6354);}return _0x351cff[_0x3f66('0x21')]();};}function saveUpdates(_0x24e919,_0x29f61e){return function(_0x516d6f){if(_0x516d6f){return _0x516d6f[_0x3f66('0x22')](_0x24e919)['then'](function(_0x3fbeb0){return _0x3fbeb0;});}return null;};}function removeEntity(_0x180a9d,_0x491008){return function(_0x5f6578){if(_0x5f6578){return _0x5f6578[_0x3f66('0x23')]()[_0x3f66('0x24')](function(){_0x180a9d[_0x3f66('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3212e2,_0x192b0b){return function(_0x7cda7b){if(!_0x7cda7b){_0x3212e2[_0x3f66('0x16')](0x194);}return _0x7cda7b;};}function handleError(_0x46f6bf,_0x576b2f){_0x576b2f=_0x576b2f||0x1f4;return function(_0x302fe8){logger['error'](_0x302fe8[_0x3f66('0x25')]);if(_0x302fe8[_0x3f66('0x26')]){delete _0x302fe8[_0x3f66('0x26')];}_0x46f6bf[_0x3f66('0x17')](_0x576b2f)['send'](_0x302fe8);};}exports[_0x3f66('0x27')]=function(_0x5f56b8,_0x24c125){var _0xb7c70={},_0xf2d7ed={},_0x410a35={'count':0x0,'rows':[]};var _0x3ddfea=_[_0x3f66('0x28')](db[_0x3f66('0x29')][_0x3f66('0x2a')],function(_0xd5e351){return{'name':_0xd5e351[_0x3f66('0x2b')],'type':_0xd5e351[_0x3f66('0x2c')][_0x3f66('0x2d')]};});_0xf2d7ed[_0x3f66('0x2e')]=_['map'](_0x3ddfea,_0x3f66('0x26'));_0xf2d7ed[_0x3f66('0x2f')]=_['keys'](_0x5f56b8[_0x3f66('0x2f')]);_0xf2d7ed[_0x3f66('0x30')]=_['intersection'](_0xf2d7ed['model'],_0xf2d7ed[_0x3f66('0x2f')]);_0xb7c70['attributes']=_[_0x3f66('0x31')](_0xf2d7ed['model'],qs[_0x3f66('0x32')](_0x5f56b8['query'][_0x3f66('0x32')]));_0xb7c70[_0x3f66('0x33')]=_0xb7c70[_0x3f66('0x33')][_0x3f66('0x34')]?_0xb7c70[_0x3f66('0x33')]:_0xf2d7ed[_0x3f66('0x2e')];if(!_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x35')]('nolimit')){_0xb7c70[_0x3f66('0x1c')]=qs['limit'](_0x5f56b8['query'][_0x3f66('0x1c')]);_0xb7c70['offset']=qs[_0x3f66('0x1a')](_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x1a')]);}_0xb7c70[_0x3f66('0x36')]=qs[_0x3f66('0x37')](_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x37')]);_0xb7c70[_0x3f66('0x38')]=qs[_0x3f66('0x30')](_[_0x3f66('0x39')](_0x5f56b8[_0x3f66('0x2f')],_0xf2d7ed[_0x3f66('0x30')]),_0x3ddfea);if(_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x3a')]){_0xb7c70[_0x3f66('0x38')]=_[_0x3f66('0x3b')](_0xb7c70[_0x3f66('0x38')],{'$or':_[_0x3f66('0x28')](_0x3ddfea,function(_0x541773){if(_0x541773['type']!==_0x3f66('0x3c')){var _0x4c0f2f={};_0x4c0f2f[_0x541773[_0x3f66('0x26')]]={'$like':'%'+_0x5f56b8[_0x3f66('0x2f')][_0x3f66('0x3a')]+'%'};return _0x4c0f2f;}})});}_0xb7c70=_[_0x3f66('0x3b')]({},_0xb7c70,_0x5f56b8[_0x3f66('0x3d')]);var _0x289ed4={'where':_0xb7c70[_0x3f66('0x38')]};return db[_0x3f66('0x29')]['count'](_0x289ed4)['then'](function(_0x5a889b){_0x410a35['count']=_0x5a889b;if(_0x5f56b8[_0x3f66('0x2f')]['includeAll']){_0xb7c70[_0x3f66('0x3e')]=[{'all':!![]}];}return db[_0x3f66('0x29')][_0x3f66('0x3f')](_0xb7c70);})['then'](function(_0x175bb4){_0x410a35[_0x3f66('0x40')]=_0x175bb4;return _0x410a35;})[_0x3f66('0x24')](respondWithFilteredResult(_0x24c125,_0xb7c70))[_0x3f66('0x41')](handleError(_0x24c125,null));};exports[_0x3f66('0x42')]=function(_0x3c6e1a,_0x1a0e0){var _0x4d5e87={'raw':![],'where':{'id':_0x3c6e1a[_0x3f66('0x43')]['id']}},_0x129d5b={};_0x129d5b[_0x3f66('0x2e')]=_[_0x3f66('0x44')](db[_0x3f66('0x29')][_0x3f66('0x2a')]);_0x129d5b[_0x3f66('0x2f')]=_['keys'](_0x3c6e1a[_0x3f66('0x2f')]);_0x129d5b[_0x3f66('0x30')]=_[_0x3f66('0x31')](_0x129d5b['model'],_0x129d5b[_0x3f66('0x2f')]);_0x4d5e87[_0x3f66('0x33')]=_[_0x3f66('0x31')](_0x129d5b[_0x3f66('0x2e')],qs[_0x3f66('0x32')](_0x3c6e1a[_0x3f66('0x2f')][_0x3f66('0x32')]));_0x4d5e87['attributes']=_0x4d5e87[_0x3f66('0x33')][_0x3f66('0x34')]?_0x4d5e87[_0x3f66('0x33')]:_0x129d5b['model'];if(_0x3c6e1a[_0x3f66('0x2f')][_0x3f66('0x45')]){_0x4d5e87[_0x3f66('0x3e')]=[{'all':!![]}];}_0x4d5e87=_[_0x3f66('0x3b')]({},_0x4d5e87,_0x3c6e1a[_0x3f66('0x3d')]);return db['VtigerAccount'][_0x3f66('0x46')](_0x4d5e87)[_0x3f66('0x24')](handleEntityNotFound(_0x1a0e0,null))[_0x3f66('0x24')](respondWithResult(_0x1a0e0,null))['catch'](handleError(_0x1a0e0,null));};exports[_0x3f66('0x47')]=function(_0x54ad29,_0x1d8862){return db[_0x3f66('0x29')][_0x3f66('0x47')](_0x54ad29[_0x3f66('0x48')],{})[_0x3f66('0x24')](respondWithResult(_0x1d8862,0xc9))[_0x3f66('0x41')](handleError(_0x1d8862,null));};exports[_0x3f66('0x22')]=function(_0x1707be,_0x28845e){if(_0x1707be[_0x3f66('0x48')]['id']){delete _0x1707be['body']['id'];}return db[_0x3f66('0x29')][_0x3f66('0x46')]({'where':{'id':_0x1707be[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x28845e,null))[_0x3f66('0x24')](saveUpdates(_0x1707be['body'],null))[_0x3f66('0x24')](respondWithResult(_0x28845e,null))[_0x3f66('0x41')](handleError(_0x28845e,null));};exports[_0x3f66('0x23')]=function(_0x4ec018,_0x533471){return db[_0x3f66('0x29')]['find']({'where':{'id':_0x4ec018[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x533471,null))['then'](removeEntity(_0x533471,null))[_0x3f66('0x41')](handleError(_0x533471,null));};exports['getConfigurations']=function(_0x2f74d1,_0x15c96a,_0x122006){var _0x28601d={};var _0x2c4b08={};var _0x5902b4;var _0x364234;return db[_0x3f66('0x29')]['findOne']({'where':{'id':_0x2f74d1[_0x3f66('0x43')]['id']}})[_0x3f66('0x24')](handleEntityNotFound(_0x15c96a,null))[_0x3f66('0x24')](function(_0x3fb78d){if(_0x3fb78d){_0x5902b4=_0x3fb78d;_0x2c4b08[_0x3f66('0x2e')]=_[_0x3f66('0x44')](db[_0x3f66('0x49')][_0x3f66('0x2a')]);_0x2c4b08[_0x3f66('0x2f')]=_[_0x3f66('0x44')](_0x2f74d1[_0x3f66('0x2f')]);_0x2c4b08['filters']=_['intersection'](_0x2c4b08[_0x3f66('0x2e')],_0x2c4b08[_0x3f66('0x2f')]);_0x28601d[_0x3f66('0x33')]=_['intersection'](_0x2c4b08[_0x3f66('0x2e')],qs[_0x3f66('0x32')](_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x32')]));_0x28601d[_0x3f66('0x33')]=_0x28601d['attributes'][_0x3f66('0x34')]?_0x28601d['attributes']:_0x2c4b08[_0x3f66('0x2e')];_0x28601d['order']=qs[_0x3f66('0x37')](_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x37')]);_0x28601d[_0x3f66('0x38')]=qs['filters'](_['pick'](_0x2f74d1[_0x3f66('0x2f')],_0x2c4b08[_0x3f66('0x30')]));if(_0x2f74d1['query'][_0x3f66('0x3a')]){_0x28601d['where']=_[_0x3f66('0x3b')](_0x28601d[_0x3f66('0x38')],{'$or':_[_0x3f66('0x28')](_0x28601d[_0x3f66('0x33')],function(_0x5ec5c5){var _0xe4752d={};_0xe4752d[_0x5ec5c5]={'$like':'%'+_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x3a')]+'%'};return _0xe4752d;})});}_0x28601d=_[_0x3f66('0x3b')]({},_0x28601d,_0x2f74d1['options']);return _0x5902b4['getConfigurations'](_0x28601d);}})['then'](function(_0x27515c){if(_0x27515c){_0x364234=_0x27515c[_0x3f66('0x34')];if(!_0x2f74d1[_0x3f66('0x2f')][_0x3f66('0x35')](_0x3f66('0x4a'))){_0x28601d[_0x3f66('0x1c')]=qs[_0x3f66('0x1c')](_0x2f74d1['query'][_0x3f66('0x1c')]);_0x28601d[_0x3f66('0x1a')]=qs['offset'](_0x2f74d1['query'][_0x3f66('0x1a')]);}return _0x5902b4[_0x3f66('0x4b')](_0x28601d);}})['then'](function(_0x2717ac){if(_0x2717ac){return _0x2717ac?{'count':_0x364234,'rows':_0x2717ac}:null;}})[_0x3f66('0x24')](respondWithResult(_0x15c96a,null))[_0x3f66('0x41')](handleError(_0x15c96a,null));};exports[_0x3f66('0x4c')]=function(_0x5ef96a,_0x2bec31,_0x28d6dd){if(_0x5ef96a[_0x3f66('0x48')]['id']){delete _0x5ef96a['body']['id'];}return db['VtigerAccount'][_0x3f66('0x4d')]({'where':{'id':_0x5ef96a['params']['id']}})['then'](handleEntityNotFound(_0x2bec31,null))[_0x3f66('0x24')](function(_0x202658){if(_0x202658){_0x5ef96a['body'][_0x3f66('0x4e')]=_0x202658['id'];_0x5ef96a[_0x3f66('0x48')]['Subjects']=integrations[_0x3f66('0x4f')](_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x50')],_0x5ef96a['body'][_0x3f66('0x2c')]);_0x5ef96a['body']['Descriptions']=integrations[_0x3f66('0x51')](_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x50')],_0x5ef96a[_0x3f66('0x48')][_0x3f66('0x2c')]);return db[_0x3f66('0x49')][_0x3f66('0x47')](_0x5ef96a[_0x3f66('0x48')],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x3f66('0x52')],'as':_0x3f66('0x53')}]});}return null;})[_0x3f66('0x24')](respondWithResult(_0x2bec31,null))['catch'](handleError(_0x2bec31,null));};var md5=require(_0x3f66('0x54'));exports[_0x3f66('0x55')]=function(_0x52a526,_0x3b13d0,_0x5aa273){var _0x4533e7=null;var _0x2b14a0=null;var _0x79a767=null;var _0x4b0340=null;var _0x323f4c='';return db[_0x3f66('0x29')][_0x3f66('0x4d')]({'where':{'id':_0x52a526[_0x3f66('0x43')]['id']},'attributes':['id',_0x3f66('0x26'),_0x3f66('0x56'),_0x3f66('0x57'),_0x3f66('0x58'),_0x3f66('0x59'),_0x3f66('0x5a'),_0x3f66('0x5b')]})[_0x3f66('0x24')](handleEntityNotFound(_0x3b13d0,null))[_0x3f66('0x24')](function(_0x4ef216){if(_0x4ef216){_0x4533e7=_0x4ef216['username'];_0x2b14a0=_0x4ef216['accessKey'];_0x79a767=_0x4ef216[_0x3f66('0x58')];_0x323f4c=_0x4ef216[_0x3f66('0x59')];var _0x525c29=_0x323f4c[_0x3f66('0x5c')](-0x1);if(_0x525c29==='/'){_0x323f4c=_0x323f4c['substring'](0x0,_0x323f4c[_0x3f66('0x5d')](_0x525c29));}_0x4b0340=util['format'](_0x3f66('0x5e'),_0x323f4c);var _0x4ce20e={'method':_0x3f66('0x5f'),'uri':_0x4b0340,'qs':{'operation':_0x3f66('0x60'),'username':_0x4ef216[_0x3f66('0x56')]},'json':!![]};return rp(_0x4ce20e);}})[_0x3f66('0x24')](function(_0x5b26ca){if(_0x5b26ca[_0x3f66('0x61')]){var _0x580f38={'method':_0x3f66('0x62'),'uri':_0x4b0340,'form':{'operation':_0x3f66('0x63'),'username':_0x4533e7,'accessKey':md5(_0x5b26ca[_0x3f66('0x64')][_0x3f66('0x65')]+_0x2b14a0)},'json':!![]};return rp(_0x580f38);}})[_0x3f66('0x24')](function(_0x22c72e){if(_0x22c72e['success']){var _0x4a4383={'method':_0x3f66('0x5f'),'uri':_0x4b0340,'qs':{'operation':_0x3f66('0x66'),'username':_0x4533e7,'sessionName':_0x22c72e[_0x3f66('0x64')][_0x3f66('0x67')],'elementType':_0x79a767},'json':!![]};return rp(_0x4a4383);}})[_0x3f66('0x24')](function(_0xe60f81){if(_0xe60f81[_0x3f66('0x61')]){var _0x471d13=[_0x3f66('0x68'),_0x3f66('0x69'),_0x3f66('0x6a')];_[_0x3f66('0x6b')](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x31f9a5){return _0x471d13[_0x3f66('0x6c')](_0x31f9a5[_0x3f66('0x2c')][_0x3f66('0x26')]);});_['remove'](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x383d17){return _0x383d17[_0x3f66('0x6d')]===_0x3f66('0x6e');});return{'count':_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')][_0x3f66('0x34')],'rows':_[_0x3f66('0x28')](_0xe60f81[_0x3f66('0x64')][_0x3f66('0x32')],function(_0x397bca){return{'id':_0x397bca['name'],'name':_0x397bca[_0x3f66('0x6f')],'custom':_['startsWith'](_0x397bca[_0x3f66('0x26')],_0x3f66('0x70'))?!![]:![],'options':_0x397bca['type'][_0x3f66('0x26')]===_0x3f66('0x71')&&_0x397bca[_0x3f66('0x2c')][_0x3f66('0x72')][_0x3f66('0x34')]>0x0?_[_0x3f66('0x28')](_0x397bca['type']['picklistValues'],function(_0x3a6615){return{'name':_0x3a6615['label'],'value':_0x3a6615[_0x3f66('0x73')]};}):[]};})};}})[_0x3f66('0x24')](respondWithResult(_0x3b13d0,null))[_0x3f66('0x41')](function(_0x2ee775){console[_0x3f66('0x74')](_0x3f66('0x75')+_0x2ee775);var _0x2a3bda=_0x52a526['query'][_0x3f66('0x76')]?0x1f4:_0x2ee775[_0x3f66('0x77')]||0x1f4;logger['error'](_0x3f66('0x78'),_0x3f66('0x55'),_0x2a3bda,JSON['stringify'](_0x2ee775));delete _0x2ee775[_0x3f66('0x26')];if(_0x2a3bda===0x191){_0x2a3bda=0x190;}_0x3b13d0[_0x3f66('0x17')](_0x2a3bda)[_0x3f66('0x79')](_0x52a526[_0x3f66('0x2f')][_0x3f66('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x2ee775[_0x3f66('0x77')]}:_0x2ee775);});};
\ No newline at end of file
+var _0x9529=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','name','index','map','rawAttributes','fieldName','type','key','model','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','VtigerAccount','includeAll','findAll','rows','catch','show','params','keys','length','include','create','body','find','getConfigurations','VtigerConfiguration','options','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','login','result','token','success','describe','sessionName','autogenerated','reference','remove','editable','false','label','startsWith','cf_','picklistValues','value','vTiger\x20error:\x20','statusCode','stringify','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x5154eb,_0x325e81){var _0xf187b=function(_0xcbd5e2){while(--_0xcbd5e2){_0x5154eb['push'](_0x5154eb['shift']());}};_0xf187b(++_0x325e81);}(_0x9529,0xe3));var _0x9952=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9529[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x9952('0x0'));var rimraf=require(_0x9952('0x1'));var zipdir=require(_0x9952('0x2'));var jsonpatch=require(_0x9952('0x3'));var rp=require(_0x9952('0x4'));var moment=require('moment');var BPromise=require(_0x9952('0x5'));var Mustache=require(_0x9952('0x6'));var util=require(_0x9952('0x7'));var path=require(_0x9952('0x8'));var sox=require(_0x9952('0x9'));var csv=require(_0x9952('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9952('0xb'));var squel=require(_0x9952('0xc'));var crypto=require(_0x9952('0xd'));var jsforce=require(_0x9952('0xe'));var deskjs=require(_0x9952('0xf'));var toCsv=require(_0x9952('0xa'));var querystring=require(_0x9952('0x10'));var Papa=require(_0x9952('0x11'));var Redis=require(_0x9952('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9952('0x13'));var as=require(_0x9952('0x14'));var hardwareService=require(_0x9952('0x15'));var logger=require(_0x9952('0x16'))(_0x9952('0x17'));var utils=require(_0x9952('0x18'));var config=require(_0x9952('0x19'));var licenseUtil=require(_0x9952('0x1a'));var db=require(_0x9952('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2847b8,_0x429d40){_0x429d40=_0x429d40||0xcc;return function(_0x1667f7){if(_0x1667f7){return _0x2847b8[_0x9952('0x1c')](_0x429d40);}return _0x2847b8[_0x9952('0x1d')](_0x429d40)['end']();};}function respondWithResult(_0x2ebfc,_0x51cf98){_0x51cf98=_0x51cf98||0xc8;return function(_0x3722cc){if(_0x3722cc){return _0x2ebfc['status'](_0x51cf98)[_0x9952('0x1e')](_0x3722cc);}};}function respondWithFilteredResult(_0x4d57e7,_0x1099d6){return function(_0x309759){if(_0x309759){var _0x2951e2=typeof _0x1099d6[_0x9952('0x1f')]===_0x9952('0x20')&&typeof _0x1099d6[_0x9952('0x21')]===_0x9952('0x20');var _0x24049b=_0x309759['count'];var _0x10a97c=_0x2951e2?0x0:_0x1099d6['offset'];var _0x9f12a4=_0x2951e2?_0x309759[_0x9952('0x22')]:_0x1099d6[_0x9952('0x1f')]+_0x1099d6[_0x9952('0x21')];var _0xa5a5ed;if(_0x9f12a4>=_0x24049b){_0x9f12a4=_0x24049b;_0xa5a5ed=0xc8;}else{_0xa5a5ed=0xce;}_0x4d57e7[_0x9952('0x1d')](_0xa5a5ed);return _0x4d57e7[_0x9952('0x23')](_0x9952('0x24'),_0x10a97c+'-'+_0x9f12a4+'/'+_0x24049b)[_0x9952('0x1e')](_0x309759);}return null;};}function patchUpdates(_0x5b641c){return function(_0x29ab93){try{jsonpatch['apply'](_0x29ab93,_0x5b641c,!![]);}catch(_0x506507){return BPromise[_0x9952('0x25')](_0x506507);}return _0x29ab93[_0x9952('0x26')]();};}function saveUpdates(_0x349556,_0x4d324a){return function(_0x5458c2){if(_0x5458c2){return _0x5458c2[_0x9952('0x27')](_0x349556)[_0x9952('0x28')](function(_0x46848e){return _0x46848e;});}return null;};}function removeEntity(_0x217910,_0x440c41){return function(_0x339ae5){if(_0x339ae5){return _0x339ae5['destroy']()[_0x9952('0x28')](function(){_0x217910[_0x9952('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bef0c,_0x258536){return function(_0x2de323){if(!_0x2de323){_0x3bef0c[_0x9952('0x1c')](0x194);}return _0x2de323;};}function handleError(_0x4beab7,_0x49779f){_0x49779f=_0x49779f||0x1f4;return function(_0x38077f){logger[_0x9952('0x29')](_0x38077f['stack']);if(_0x38077f[_0x9952('0x2a')]){delete _0x38077f[_0x9952('0x2a')];}_0x4beab7[_0x9952('0x1d')](_0x49779f)['send'](_0x38077f);};}exports[_0x9952('0x2b')]=function(_0x1c52be,_0x360b7a){var _0x5e6582={},_0x5e5cf4={},_0x20ef7d={'count':0x0,'rows':[]};var _0x37ac59=_[_0x9952('0x2c')](db['VtigerAccount'][_0x9952('0x2d')],function(_0x4c95b0){return{'name':_0x4c95b0[_0x9952('0x2e')],'type':_0x4c95b0[_0x9952('0x2f')][_0x9952('0x30')]};});_0x5e5cf4[_0x9952('0x31')]=_['map'](_0x37ac59,'name');_0x5e5cf4['query']=_['keys'](_0x1c52be['query']);_0x5e5cf4[_0x9952('0x32')]=_[_0x9952('0x33')](_0x5e5cf4['model'],_0x5e5cf4[_0x9952('0x34')]);_0x5e6582['attributes']=_[_0x9952('0x33')](_0x5e5cf4[_0x9952('0x31')],qs['fields'](_0x1c52be[_0x9952('0x34')][_0x9952('0x35')]));_0x5e6582['attributes']=_0x5e6582[_0x9952('0x36')]['length']?_0x5e6582['attributes']:_0x5e5cf4[_0x9952('0x31')];if(!_0x1c52be[_0x9952('0x34')][_0x9952('0x37')](_0x9952('0x38'))){_0x5e6582[_0x9952('0x21')]=qs['limit'](_0x1c52be['query']['limit']);_0x5e6582['offset']=qs[_0x9952('0x1f')](_0x1c52be[_0x9952('0x34')][_0x9952('0x1f')]);}_0x5e6582[_0x9952('0x39')]=qs[_0x9952('0x3a')](_0x1c52be[_0x9952('0x34')][_0x9952('0x3a')]);_0x5e6582[_0x9952('0x3b')]=qs[_0x9952('0x32')](_[_0x9952('0x3c')](_0x1c52be[_0x9952('0x34')],_0x5e5cf4[_0x9952('0x32')]),_0x37ac59);if(_0x1c52be['query'][_0x9952('0x3d')]){_0x5e6582[_0x9952('0x3b')]=_['merge'](_0x5e6582[_0x9952('0x3b')],{'$or':_[_0x9952('0x2c')](_0x37ac59,function(_0x38d82c){if(_0x38d82c[_0x9952('0x2f')]!==_0x9952('0x3e')){var _0x28c393={};_0x28c393[_0x38d82c[_0x9952('0x2a')]]={'$like':'%'+_0x1c52be['query']['filter']+'%'};return _0x28c393;}})});}_0x5e6582=_[_0x9952('0x3f')]({},_0x5e6582,_0x1c52be['options']);var _0x11b795={'where':_0x5e6582[_0x9952('0x3b')]};return db[_0x9952('0x40')][_0x9952('0x22')](_0x11b795)['then'](function(_0x21752f){_0x20ef7d[_0x9952('0x22')]=_0x21752f;if(_0x1c52be[_0x9952('0x34')][_0x9952('0x41')]){_0x5e6582['include']=[{'all':!![]}];}return db['VtigerAccount'][_0x9952('0x42')](_0x5e6582);})[_0x9952('0x28')](function(_0x1aa58a){_0x20ef7d[_0x9952('0x43')]=_0x1aa58a;return _0x20ef7d;})['then'](respondWithFilteredResult(_0x360b7a,_0x5e6582))[_0x9952('0x44')](handleError(_0x360b7a,null));};exports[_0x9952('0x45')]=function(_0x617b23,_0x35cfe6){var _0x23a791={'raw':![],'where':{'id':_0x617b23[_0x9952('0x46')]['id']}},_0x238669={};_0x238669[_0x9952('0x31')]=_[_0x9952('0x47')](db[_0x9952('0x40')][_0x9952('0x2d')]);_0x238669[_0x9952('0x34')]=_['keys'](_0x617b23[_0x9952('0x34')]);_0x238669[_0x9952('0x32')]=_[_0x9952('0x33')](_0x238669[_0x9952('0x31')],_0x238669['query']);_0x23a791[_0x9952('0x36')]=_['intersection'](_0x238669['model'],qs[_0x9952('0x35')](_0x617b23[_0x9952('0x34')][_0x9952('0x35')]));_0x23a791['attributes']=_0x23a791['attributes'][_0x9952('0x48')]?_0x23a791[_0x9952('0x36')]:_0x238669[_0x9952('0x31')];if(_0x617b23[_0x9952('0x34')][_0x9952('0x41')]){_0x23a791[_0x9952('0x49')]=[{'all':!![]}];}_0x23a791=_[_0x9952('0x3f')]({},_0x23a791,_0x617b23['options']);return db['VtigerAccount']['find'](_0x23a791)[_0x9952('0x28')](handleEntityNotFound(_0x35cfe6,null))[_0x9952('0x28')](respondWithResult(_0x35cfe6,null))['catch'](handleError(_0x35cfe6,null));};exports[_0x9952('0x4a')]=function(_0x2816c0,_0x4451e7){return db[_0x9952('0x40')][_0x9952('0x4a')](_0x2816c0[_0x9952('0x4b')],{})[_0x9952('0x28')](respondWithResult(_0x4451e7,0xc9))[_0x9952('0x44')](handleError(_0x4451e7,null));};exports['update']=function(_0x48d391,_0x5d86a8){if(_0x48d391[_0x9952('0x4b')]['id']){delete _0x48d391[_0x9952('0x4b')]['id'];}return db['VtigerAccount'][_0x9952('0x4c')]({'where':{'id':_0x48d391[_0x9952('0x46')]['id']}})[_0x9952('0x28')](handleEntityNotFound(_0x5d86a8,null))[_0x9952('0x28')](saveUpdates(_0x48d391[_0x9952('0x4b')],null))[_0x9952('0x28')](respondWithResult(_0x5d86a8,null))['catch'](handleError(_0x5d86a8,null));};exports['destroy']=function(_0x29653d,_0xc78d01){return db[_0x9952('0x40')][_0x9952('0x4c')]({'where':{'id':_0x29653d[_0x9952('0x46')]['id']}})[_0x9952('0x28')](handleEntityNotFound(_0xc78d01,null))['then'](removeEntity(_0xc78d01,null))['catch'](handleError(_0xc78d01,null));};exports[_0x9952('0x4d')]=function(_0x9a1eca,_0x1074c8,_0xb7fdf0){var _0x32fadd={};var _0x2de9f0={};var _0x64f8ed;var _0x5deb0a;return db[_0x9952('0x40')]['findOne']({'where':{'id':_0x9a1eca['params']['id']}})[_0x9952('0x28')](handleEntityNotFound(_0x1074c8,null))['then'](function(_0x184dee){if(_0x184dee){_0x64f8ed=_0x184dee;_0x2de9f0[_0x9952('0x31')]=_[_0x9952('0x47')](db[_0x9952('0x4e')]['rawAttributes']);_0x2de9f0['query']=_[_0x9952('0x47')](_0x9a1eca['query']);_0x2de9f0['filters']=_[_0x9952('0x33')](_0x2de9f0[_0x9952('0x31')],_0x2de9f0[_0x9952('0x34')]);_0x32fadd[_0x9952('0x36')]=_[_0x9952('0x33')](_0x2de9f0[_0x9952('0x31')],qs['fields'](_0x9a1eca[_0x9952('0x34')][_0x9952('0x35')]));_0x32fadd[_0x9952('0x36')]=_0x32fadd['attributes'][_0x9952('0x48')]?_0x32fadd['attributes']:_0x2de9f0[_0x9952('0x31')];_0x32fadd['order']=qs[_0x9952('0x3a')](_0x9a1eca[_0x9952('0x34')]['sort']);_0x32fadd[_0x9952('0x3b')]=qs[_0x9952('0x32')](_[_0x9952('0x3c')](_0x9a1eca[_0x9952('0x34')],_0x2de9f0[_0x9952('0x32')]));if(_0x9a1eca[_0x9952('0x34')][_0x9952('0x3d')]){_0x32fadd[_0x9952('0x3b')]=_[_0x9952('0x3f')](_0x32fadd[_0x9952('0x3b')],{'$or':_[_0x9952('0x2c')](_0x32fadd[_0x9952('0x36')],function(_0x6819e3){var _0x3a9a81={};_0x3a9a81[_0x6819e3]={'$like':'%'+_0x9a1eca['query'][_0x9952('0x3d')]+'%'};return _0x3a9a81;})});}_0x32fadd=_[_0x9952('0x3f')]({},_0x32fadd,_0x9a1eca[_0x9952('0x4f')]);return _0x64f8ed[_0x9952('0x4d')](_0x32fadd);}})['then'](function(_0x31fc31){if(_0x31fc31){_0x5deb0a=_0x31fc31['length'];if(!_0x9a1eca[_0x9952('0x34')][_0x9952('0x37')](_0x9952('0x38'))){_0x32fadd[_0x9952('0x21')]=qs[_0x9952('0x21')](_0x9a1eca['query']['limit']);_0x32fadd['offset']=qs[_0x9952('0x1f')](_0x9a1eca[_0x9952('0x34')]['offset']);}return _0x64f8ed['getConfigurations'](_0x32fadd);}})[_0x9952('0x28')](function(_0x29ae9a){if(_0x29ae9a){return _0x29ae9a?{'count':_0x5deb0a,'rows':_0x29ae9a}:null;}})[_0x9952('0x28')](respondWithResult(_0x1074c8,null))['catch'](handleError(_0x1074c8,null));};exports[_0x9952('0x50')]=function(_0x125b87,_0xc81c12,_0x47da46){if(_0x125b87[_0x9952('0x4b')]['id']){delete _0x125b87[_0x9952('0x4b')]['id'];}return db[_0x9952('0x40')][_0x9952('0x51')]({'where':{'id':_0x125b87[_0x9952('0x46')]['id']}})[_0x9952('0x28')](handleEntityNotFound(_0xc81c12,null))[_0x9952('0x28')](function(_0x9c091e){if(_0x9c091e){_0x125b87[_0x9952('0x4b')][_0x9952('0x52')]=_0x9c091e['id'];_0x125b87['body'][_0x9952('0x53')]=integrations[_0x9952('0x54')](_0x125b87[_0x9952('0x4b')][_0x9952('0x55')],_0x125b87[_0x9952('0x4b')][_0x9952('0x2f')]);_0x125b87['body'][_0x9952('0x56')]=integrations['getDescriptions'](_0x125b87[_0x9952('0x4b')][_0x9952('0x55')],_0x125b87[_0x9952('0x4b')][_0x9952('0x2f')]);return db[_0x9952('0x4e')]['create'](_0x125b87[_0x9952('0x4b')],{'include':[{'model':db[_0x9952('0x57')],'as':_0x9952('0x53')},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0x9952('0x28')](respondWithResult(_0xc81c12,null))[_0x9952('0x44')](handleError(_0xc81c12,null));};var md5=require(_0x9952('0x58'));exports[_0x9952('0x59')]=function(_0x5c1594,_0x14be46,_0x2ada54){var _0x3af01f=null;var _0x70d0c5=null;var _0x2054a7=null;var _0x38b9b4=null;var _0x2d5e90='';return db[_0x9952('0x40')][_0x9952('0x51')]({'where':{'id':_0x5c1594[_0x9952('0x46')]['id']},'attributes':['id',_0x9952('0x2a'),_0x9952('0x5a'),_0x9952('0x5b'),_0x9952('0x5c'),_0x9952('0x5d'),_0x9952('0x5e'),_0x9952('0x5f')]})[_0x9952('0x28')](handleEntityNotFound(_0x14be46,null))[_0x9952('0x28')](function(_0x1bbea4){if(_0x1bbea4){_0x3af01f=_0x1bbea4[_0x9952('0x5a')];_0x70d0c5=_0x1bbea4[_0x9952('0x5f')];_0x2054a7=_0x1bbea4[_0x9952('0x5c')];_0x2d5e90=_0x1bbea4['remoteUri'];var _0x12336a=_0x2d5e90[_0x9952('0x60')](-0x1);if(_0x12336a==='/'){_0x2d5e90=_0x2d5e90[_0x9952('0x61')](0x0,_0x2d5e90[_0x9952('0x62')](_0x12336a));}_0x38b9b4=util[_0x9952('0x63')](_0x9952('0x64'),_0x2d5e90);var _0xcaef56={'method':_0x9952('0x65'),'uri':_0x38b9b4,'qs':{'operation':'getchallenge','username':_0x1bbea4[_0x9952('0x5a')]},'json':!![]};return rp(_0xcaef56);}})['then'](function(_0x2fda80){if(_0x2fda80['success']){var _0x4b67a2={'method':'POST','uri':_0x38b9b4,'form':{'operation':_0x9952('0x66'),'username':_0x3af01f,'accessKey':md5(_0x2fda80[_0x9952('0x67')][_0x9952('0x68')]+_0x70d0c5)},'json':!![]};return rp(_0x4b67a2);}})['then'](function(_0x3c1d89){if(_0x3c1d89[_0x9952('0x69')]){var _0x36ee8c={'method':_0x9952('0x65'),'uri':_0x38b9b4,'qs':{'operation':_0x9952('0x6a'),'username':_0x3af01f,'sessionName':_0x3c1d89[_0x9952('0x67')][_0x9952('0x6b')],'elementType':_0x2054a7},'json':!![]};return rp(_0x36ee8c);}})[_0x9952('0x28')](function(_0x452cce){if(_0x452cce[_0x9952('0x69')]){var _0x1c6b72=[_0x9952('0x6c'),_0x9952('0x6d'),'owner'];_[_0x9952('0x6e')](_0x452cce[_0x9952('0x67')][_0x9952('0x35')],function(_0x11214a){return _0x1c6b72['includes'](_0x11214a[_0x9952('0x2f')]['name']);});_[_0x9952('0x6e')](_0x452cce[_0x9952('0x67')][_0x9952('0x35')],function(_0xd7c211){return _0xd7c211[_0x9952('0x6f')]===_0x9952('0x70');});return{'count':_0x452cce[_0x9952('0x67')][_0x9952('0x35')][_0x9952('0x48')],'rows':_[_0x9952('0x2c')](_0x452cce[_0x9952('0x67')][_0x9952('0x35')],function(_0x157545){return{'id':_0x157545[_0x9952('0x2a')],'name':_0x157545[_0x9952('0x71')],'custom':_[_0x9952('0x72')](_0x157545[_0x9952('0x2a')],_0x9952('0x73'))?!![]:![],'options':_0x157545['type']['name']==='picklist'&&_0x157545[_0x9952('0x2f')][_0x9952('0x74')][_0x9952('0x48')]>0x0?_[_0x9952('0x2c')](_0x157545['type'][_0x9952('0x74')],function(_0x52e2fb){return{'name':_0x52e2fb[_0x9952('0x71')],'value':_0x52e2fb[_0x9952('0x75')]};}):[]};})};}})[_0x9952('0x28')](respondWithResult(_0x14be46,null))['catch'](function(_0x1bcccf){console['log'](_0x9952('0x76')+_0x1bcccf);var _0x1ea5b5=_0x5c1594['query']['test']?0x1f4:_0x1bcccf[_0x9952('0x77')]||0x1f4;logger[_0x9952('0x29')]('getFields,\x20%s,\x20%s,\x20%s',_0x9952('0x59'),_0x1ea5b5,JSON[_0x9952('0x78')](_0x1bcccf));delete _0x1bcccf['name'];if(_0x1ea5b5===0x191){_0x1ea5b5=0x190;}_0x14be46[_0x9952('0x1d')](_0x1ea5b5)[_0x9952('0x79')](_0x5c1594[_0x9952('0x34')][_0x9952('0x7a')]?{'message':_0x9952('0x7b'),'statusCode':_0x1bcccf[_0x9952('0x77')]}:_0x1bcccf);});};
\ No newline at end of file
index ff7b455..f773d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595a=['moment','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api'];(function(_0x50a6ca,_0x24fbcb){var _0x1aee9b=function(_0x42cbb9){while(--_0x42cbb9){_0x50a6ca['push'](_0x50a6ca['shift']());}};_0x1aee9b(++_0x24fbcb);}(_0x595a,0x8c));var _0xa595=function(_0x55e659,_0x233aa4){_0x55e659=_0x55e659-0x0;var _0xca08c7=_0x595a[_0x55e659];return _0xca08c7;};'use strict';var _=require(_0xa595('0x0'));var util=require('util');var logger=require(_0xa595('0x1'))(_0xa595('0x2'));var moment=require(_0xa595('0x3'));var BPromise=require('bluebird');var rp=require(_0xa595('0x4'));var fs=require('fs');var path=require(_0xa595('0x5'));var rimraf=require('rimraf');var config=require(_0xa595('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0xa595('0x7'));module[_0xa595('0x8')]=function(_0x5ee89d,_0x4794bb){return _0x5ee89d['define'](_0xa595('0x9'),attributes,{'tableName':_0xa595('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fbd=['bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','int_vtiger_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x5bece9,_0x44a148){var _0x4896a0=function(_0x157523){while(--_0x157523){_0x5bece9['push'](_0x5bece9['shift']());}};_0x4896a0(++_0x44a148);}(_0x4fbd,0x121));var _0xd4fb=function(_0x5eb581,_0x4f9af4){_0x5eb581=_0x5eb581-0x0;var _0x4d8d5e=_0x4fbd[_0x5eb581];return _0x4d8d5e;};'use strict';var _=require(_0xd4fb('0x0'));var util=require(_0xd4fb('0x1'));var logger=require(_0xd4fb('0x2'))(_0xd4fb('0x3'));var moment=require(_0xd4fb('0x4'));var BPromise=require(_0xd4fb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd4fb('0x6'));var rimraf=require(_0xd4fb('0x7'));var config=require(_0xd4fb('0x8'));var attributes=require(_0xd4fb('0x9'));var integrations=require(_0xd4fb('0xa'));module[_0xd4fb('0xb')]=function(_0xcb3f83,_0xd7dccf){return _0xcb3f83[_0xd4fb('0xc')]('VtigerAccount',attributes,{'tableName':_0xd4fb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6eba6fa..7031b15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['find','attributes','ShowVtigerAccount','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVtigerAccount','VtigerAccount','options','raw','where','include','map','model','then'];(function(_0x4d9a93,_0x547671){var _0xe200a0=function(_0x1a9f61){while(--_0x1a9f61){_0x4d9a93['push'](_0x4d9a93['shift']());}};_0xe200a0(++_0x547671);}(_0xe511,0x16f));var _0x1e51=function(_0xb8f8ba,_0x56a48f){_0xb8f8ba=_0xb8f8ba-0x0;var _0x426419=_0xe511[_0xb8f8ba];return _0x426419;};'use strict';var _=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var moment=require('moment');var BPromise=require(_0x1e51('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e51('0x3'));var db=require(_0x1e51('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1e51('0x5'))(_0x1e51('0x6'));var config=require(_0x1e51('0x7'));var jayson=require(_0x1e51('0x8'));var client=jayson['client'][_0x1e51('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21ed6b,_0x5c4590,_0x4fa2ba){return new BPromise(function(_0x394ad8,_0x133021){return client['request'](_0x21ed6b,_0x4fa2ba)['then'](function(_0x658941){logger[_0x1e51('0xa')](_0x1e51('0xb'),_0x5c4590,_0x1e51('0xc'));logger[_0x1e51('0xd')](_0x1e51('0xe'),_0x5c4590,'request\x20sent',JSON[_0x1e51('0xf')](_0x658941));if(_0x658941[_0x1e51('0x10')]){if(_0x658941[_0x1e51('0x10')][_0x1e51('0x11')]===0x1f4){logger[_0x1e51('0x10')](_0x1e51('0xb'),_0x5c4590,_0x658941['error'][_0x1e51('0x12')]);return _0x133021(_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);}logger[_0x1e51('0x10')](_0x1e51('0xb'),_0x5c4590,_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);return _0x394ad8(_0x658941[_0x1e51('0x10')][_0x1e51('0x12')]);}else{logger[_0x1e51('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x5c4590,_0x1e51('0xc'));_0x394ad8(_0x658941[_0x1e51('0x13')][_0x1e51('0x12')]);}})['catch'](function(_0xa3b410){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x5c4590,_0xa3b410);_0x133021(_0xa3b410);});});}exports[_0x1e51('0x14')]=function(_0x27dcad){var _0x40ae4c=this;return new Promise(function(_0x4785a5,_0x4d1aae){return db[_0x1e51('0x15')]['findAll']({'raw':_0x27dcad[_0x1e51('0x16')]?_0x27dcad['options'][_0x1e51('0x17')]===undefined?!![]:![]:!![],'where':_0x27dcad[_0x1e51('0x16')]?_0x27dcad[_0x1e51('0x16')][_0x1e51('0x18')]||null:null,'attributes':_0x27dcad['options']?_0x27dcad['options']['attributes']||null:null,'limit':_0x27dcad['options']?_0x27dcad[_0x1e51('0x16')]['limit']||null:null,'include':_0x27dcad[_0x1e51('0x16')]?_0x27dcad[_0x1e51('0x16')][_0x1e51('0x19')]?_[_0x1e51('0x1a')](_0x27dcad[_0x1e51('0x16')][_0x1e51('0x19')],function(_0x270adf){return{'model':db[_0x270adf[_0x1e51('0x1b')]],'as':_0x270adf['as'],'attributes':_0x270adf['attributes'],'include':_0x270adf['include']?_[_0x1e51('0x1a')](_0x270adf[_0x1e51('0x19')],function(_0x2e42b1){return{'model':db[_0x2e42b1[_0x1e51('0x1b')]],'as':_0x2e42b1['as'],'attributes':_0x2e42b1['attributes'],'include':_0x2e42b1['include']?_['map'](_0x2e42b1[_0x1e51('0x19')],function(_0x2a1561){return{'model':db[_0x2a1561[_0x1e51('0x1b')]],'as':_0x2a1561['as'],'attributes':_0x2a1561['attributes']};}):[]};}):[]};}):[]:[]})[_0x1e51('0x1c')](function(_0x49c507){logger['info'](_0x1e51('0x14'),_0x27dcad);logger['debug'](_0x1e51('0x14'),_0x27dcad,JSON[_0x1e51('0xf')](_0x49c507));_0x4785a5(_0x49c507);})['catch'](function(_0x3e6ef2){logger[_0x1e51('0x10')](_0x1e51('0x14'),_0x3e6ef2[_0x1e51('0x12')],_0x27dcad);_0x4d1aae(_0x40ae4c['error'](0x1f4,_0x3e6ef2['message']));});});};exports['ShowVtigerAccount']=function(_0x20eb9b){var _0x288b50=this;return new Promise(function(_0x1ba84a,_0x36dabe){return db[_0x1e51('0x15')][_0x1e51('0x1d')]({'raw':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')][_0x1e51('0x17')]===undefined?!![]:![]:!![],'where':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')]['where']||null:null,'attributes':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')][_0x1e51('0x1e')]||null:null,'include':_0x20eb9b[_0x1e51('0x16')]?_0x20eb9b[_0x1e51('0x16')]['include']?_[_0x1e51('0x1a')](_0x20eb9b['options'][_0x1e51('0x19')],function(_0x3fb57e){return{'model':db[_0x3fb57e[_0x1e51('0x1b')]],'as':_0x3fb57e['as'],'attributes':_0x3fb57e['attributes'],'include':_0x3fb57e[_0x1e51('0x19')]?_['map'](_0x3fb57e[_0x1e51('0x19')],function(_0x4e0187){return{'model':db[_0x4e0187['model']],'as':_0x4e0187['as'],'attributes':_0x4e0187[_0x1e51('0x1e')],'include':_0x4e0187[_0x1e51('0x19')]?_[_0x1e51('0x1a')](_0x4e0187['include'],function(_0x42ac30){return{'model':db[_0x42ac30['model']],'as':_0x42ac30['as'],'attributes':_0x42ac30[_0x1e51('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1e51('0x1c')](function(_0x5760ba){logger[_0x1e51('0xa')](_0x1e51('0x1f'),_0x20eb9b);logger[_0x1e51('0xd')](_0x1e51('0x1f'),_0x20eb9b,JSON[_0x1e51('0xf')](_0x5760ba));_0x1ba84a(_0x5760ba);})[_0x1e51('0x20')](function(_0x5c57a6){logger['error'](_0x1e51('0x1f'),_0x5c57a6['message'],_0x20eb9b);_0x36dabe(_0x288b50[_0x1e51('0x10')](0x1f4,_0x5c57a6[_0x1e51('0x12')]));});});};
\ No newline at end of file
+var _0xb574=['where','attributes','include','map','model','ShowVtigerAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw'];(function(_0x3eee56,_0x176daf){var _0x506bcd=function(_0x3cfe8b){while(--_0x3cfe8b){_0x3eee56['push'](_0x3eee56['shift']());}};_0x506bcd(++_0x176daf);}(_0xb574,0x106));var _0x4b57=function(_0x305c8f,_0x370965){_0x305c8f=_0x305c8f-0x0;var _0x39d646=_0xb574[_0x305c8f];return _0x39d646;};'use strict';var _=require(_0x4b57('0x0'));var util=require(_0x4b57('0x1'));var moment=require('moment');var BPromise=require(_0x4b57('0x2'));var rs=require(_0x4b57('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b57('0x4'))['db'];var utils=require(_0x4b57('0x5'));var logger=require(_0x4b57('0x6'))(_0x4b57('0x7'));var config=require(_0x4b57('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4b57('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a4a0f,_0x585d86,_0x4b2d65){return new BPromise(function(_0x548ee8,_0x291e54){return client[_0x4b57('0xa')](_0x4a4a0f,_0x4b2d65)[_0x4b57('0xb')](function(_0x3b112d){logger[_0x4b57('0xc')](_0x4b57('0xd'),_0x585d86,_0x4b57('0xe'));logger[_0x4b57('0xf')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x585d86,_0x4b57('0xe'),JSON[_0x4b57('0x10')](_0x3b112d));if(_0x3b112d[_0x4b57('0x11')]){if(_0x3b112d['error']['code']===0x1f4){logger[_0x4b57('0x11')](_0x4b57('0xd'),_0x585d86,_0x3b112d[_0x4b57('0x11')][_0x4b57('0x12')]);return _0x291e54(_0x3b112d[_0x4b57('0x11')][_0x4b57('0x12')]);}logger[_0x4b57('0x11')](_0x4b57('0xd'),_0x585d86,_0x3b112d[_0x4b57('0x11')]['message']);return _0x548ee8(_0x3b112d['error'][_0x4b57('0x12')]);}else{logger[_0x4b57('0xc')](_0x4b57('0xd'),_0x585d86,'request\x20sent');_0x548ee8(_0x3b112d[_0x4b57('0x13')]['message']);}})[_0x4b57('0x14')](function(_0x42aff4){logger[_0x4b57('0x11')](_0x4b57('0xd'),_0x585d86,_0x42aff4);_0x291e54(_0x42aff4);});});}exports[_0x4b57('0x15')]=function(_0xfb71cc){var _0x4ede42=this;return new Promise(function(_0x1b35ff,_0x1a0b72){return db[_0x4b57('0x16')][_0x4b57('0x17')]({'raw':_0xfb71cc['options']?_0xfb71cc[_0x4b57('0x18')][_0x4b57('0x19')]===undefined?!![]:![]:!![],'where':_0xfb71cc[_0x4b57('0x18')]?_0xfb71cc[_0x4b57('0x18')][_0x4b57('0x1a')]||null:null,'attributes':_0xfb71cc[_0x4b57('0x18')]?_0xfb71cc['options'][_0x4b57('0x1b')]||null:null,'limit':_0xfb71cc[_0x4b57('0x18')]?_0xfb71cc[_0x4b57('0x18')]['limit']||null:null,'include':_0xfb71cc[_0x4b57('0x18')]?_0xfb71cc[_0x4b57('0x18')][_0x4b57('0x1c')]?_[_0x4b57('0x1d')](_0xfb71cc['options'][_0x4b57('0x1c')],function(_0x368c5f){return{'model':db[_0x368c5f['model']],'as':_0x368c5f['as'],'attributes':_0x368c5f[_0x4b57('0x1b')],'include':_0x368c5f[_0x4b57('0x1c')]?_[_0x4b57('0x1d')](_0x368c5f[_0x4b57('0x1c')],function(_0x540eff){return{'model':db[_0x540eff[_0x4b57('0x1e')]],'as':_0x540eff['as'],'attributes':_0x540eff['attributes'],'include':_0x540eff[_0x4b57('0x1c')]?_['map'](_0x540eff[_0x4b57('0x1c')],function(_0x2dc9d8){return{'model':db[_0x2dc9d8[_0x4b57('0x1e')]],'as':_0x2dc9d8['as'],'attributes':_0x2dc9d8[_0x4b57('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4b57('0xb')](function(_0x392e37){logger['info']('GetVtigerAccount',_0xfb71cc);logger[_0x4b57('0xf')]('GetVtigerAccount',_0xfb71cc,JSON[_0x4b57('0x10')](_0x392e37));_0x1b35ff(_0x392e37);})[_0x4b57('0x14')](function(_0x874cf7){logger[_0x4b57('0x11')](_0x4b57('0x15'),_0x874cf7[_0x4b57('0x12')],_0xfb71cc);_0x1a0b72(_0x4ede42['error'](0x1f4,_0x874cf7[_0x4b57('0x12')]));});});};exports[_0x4b57('0x1f')]=function(_0x68be27){var _0x3cd331=this;return new Promise(function(_0x4ccf89,_0xa91ba){return db[_0x4b57('0x16')]['find']({'raw':_0x68be27[_0x4b57('0x18')]?_0x68be27[_0x4b57('0x18')][_0x4b57('0x19')]===undefined?!![]:![]:!![],'where':_0x68be27[_0x4b57('0x18')]?_0x68be27['options']['where']||null:null,'attributes':_0x68be27['options']?_0x68be27[_0x4b57('0x18')][_0x4b57('0x1b')]||null:null,'include':_0x68be27[_0x4b57('0x18')]?_0x68be27[_0x4b57('0x18')][_0x4b57('0x1c')]?_['map'](_0x68be27[_0x4b57('0x18')][_0x4b57('0x1c')],function(_0x1fd3f7){return{'model':db[_0x1fd3f7['model']],'as':_0x1fd3f7['as'],'attributes':_0x1fd3f7[_0x4b57('0x1b')],'include':_0x1fd3f7[_0x4b57('0x1c')]?_[_0x4b57('0x1d')](_0x1fd3f7['include'],function(_0x28a0ee){return{'model':db[_0x28a0ee[_0x4b57('0x1e')]],'as':_0x28a0ee['as'],'attributes':_0x28a0ee['attributes'],'include':_0x28a0ee[_0x4b57('0x1c')]?_[_0x4b57('0x1d')](_0x28a0ee[_0x4b57('0x1c')],function(_0x91f32e){return{'model':db[_0x91f32e[_0x4b57('0x1e')]],'as':_0x91f32e['as'],'attributes':_0x91f32e[_0x4b57('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f9f76){logger[_0x4b57('0xc')](_0x4b57('0x1f'),_0x68be27);logger[_0x4b57('0xf')](_0x4b57('0x1f'),_0x68be27,JSON[_0x4b57('0x10')](_0x1f9f76));_0x4ccf89(_0x1f9f76);})[_0x4b57('0x14')](function(_0x4c5b82){logger['error'](_0x4b57('0x1f'),_0x4c5b82[_0x4b57('0x12')],_0x68be27);_0xa91ba(_0x3cd331[_0x4b57('0x11')](0x1f4,_0x4c5b82['message']));});});};
\ No newline at end of file
index e9cdb08..d41c99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902b=['index','get','/:id','isAuthenticated','show','/:id/fields','getSubjects','post','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../config/environment','./intVtigerConfiguration.controller'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x902b,0x15e));var _0xb902=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x902b[_0x5f3f88];return _0xd08119;};'use strict';var multer=require(_0xb902('0x0'));var util=require(_0xb902('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb902('0x2'));var router=express[_0xb902('0x3')]();var fs_extra=require(_0xb902('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb902('0x5'));var controller=require(_0xb902('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xb902('0x7')]);router[_0xb902('0x8')](_0xb902('0x9'),auth[_0xb902('0xa')](),controller[_0xb902('0xb')]);router[_0xb902('0x8')](_0xb902('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0xb902('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xb902('0xd')]);router[_0xb902('0x8')]('/:id/descriptions',auth[_0xb902('0xa')](),controller['getDescriptions']);router[_0xb902('0xe')]('/',auth['isAuthenticated'](),controller[_0xb902('0xf')]);router[_0xb902('0x10')]('/:id',auth[_0xb902('0xa')](),controller[_0xb902('0x11')]);router[_0xb902('0x12')](_0xb902('0x9'),auth['isAuthenticated'](),controller[_0xb902('0x13')]);module[_0xb902('0x14')]=router;
\ No newline at end of file
+var _0x05ea=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','exports','util','path','connect-timeout'];(function(_0x3d96b5,_0x4e0abf){var _0x3ddf23=function(_0x329e48){while(--_0x329e48){_0x3d96b5['push'](_0x3d96b5['shift']());}};_0x3ddf23(++_0x4e0abf);}(_0x05ea,0xd5));var _0xa05e=function(_0x1a8f86,_0x5ed9c4){_0x1a8f86=_0x1a8f86-0x0;var _0x20d876=_0x05ea[_0x1a8f86];return _0x20d876;};'use strict';var multer=require('multer');var util=require(_0xa05e('0x0'));var path=require(_0xa05e('0x1'));var timeout=require(_0xa05e('0x2'));var express=require(_0xa05e('0x3'));var router=express['Router']();var fs_extra=require(_0xa05e('0x4'));var auth=require(_0xa05e('0x5'));var interaction=require(_0xa05e('0x6'));var config=require(_0xa05e('0x7'));var controller=require(_0xa05e('0x8'));router[_0xa05e('0x9')]('/',auth[_0xa05e('0xa')](),controller[_0xa05e('0xb')]);router[_0xa05e('0x9')](_0xa05e('0xc'),auth[_0xa05e('0xa')](),controller[_0xa05e('0xd')]);router['get'](_0xa05e('0xe'),auth['isAuthenticated'](),controller[_0xa05e('0xf')]);router[_0xa05e('0x9')](_0xa05e('0x10'),auth[_0xa05e('0xa')](),controller['getSubjects']);router[_0xa05e('0x9')](_0xa05e('0x11'),auth['isAuthenticated'](),controller[_0xa05e('0x12')]);router[_0xa05e('0x13')]('/',auth['isAuthenticated'](),controller[_0xa05e('0x14')]);router[_0xa05e('0x15')](_0xa05e('0xc'),auth[_0xa05e('0xa')](),controller[_0xa05e('0x16')]);router['delete'](_0xa05e('0xc'),auth[_0xa05e('0xa')](),controller['destroy']);module[_0xa05e('0x17')]=router;
\ No newline at end of file
index b230c39..03af811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x201c=['sequelize','exports','STRING'];(function(_0x59ef16,_0x20c685){var _0x9c4dfb=function(_0x454ad5){while(--_0x454ad5){_0x59ef16['push'](_0x59ef16['shift']());}};_0x9c4dfb(++_0x20c685);}(_0x201c,0x66));var _0xc201=function(_0x52e3a8,_0xb55c5b){_0x52e3a8=_0x52e3a8-0x0;var _0x4964f0=_0x201c[_0x52e3a8];return _0x4964f0;};'use strict';var Sequelize=require(_0xc201('0x0'));module[_0xc201('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc201('0x2')]}};
\ No newline at end of file
+var _0xdfe4=['STRING','sequelize'];(function(_0x490978,_0x5b5bd5){var _0x1f9ba4=function(_0x542ec7){while(--_0x542ec7){_0x490978['push'](_0x490978['shift']());}};_0x1f9ba4(++_0x5b5bd5);}(_0xdfe4,0x177));var _0x4dfe=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xdfe4[_0x491a7f];return _0x3d8f44;};'use strict';var Sequelize=require(_0x4dfe('0x0'));module['exports']={'name':{'type':Sequelize[_0x4dfe('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index fffdab3..3e2ad09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0851=['status','undefined','count','offset','limit','json','reject','save','then','destroy','error','stack','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','params','keys','includeAll','find','catch','create','body','update','findOne','VtigerField','order','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x279142,_0x2fd2bf){var _0x5c416b=function(_0x34d4d1){while(--_0x34d4d1){_0x279142['push'](_0x279142['shift']());}};_0x5c416b(++_0x2fd2bf);}(_0x0851,0x8a));var _0x1085=function(_0x186872,_0x50a406){_0x186872=_0x186872-0x0;var _0x2f440d=_0x0851[_0x186872];return _0x2f440d;};'use strict';var emlformat=require(_0x1085('0x0'));var rimraf=require(_0x1085('0x1'));var zipdir=require(_0x1085('0x2'));var jsonpatch=require(_0x1085('0x3'));var rp=require('request-promise');var moment=require(_0x1085('0x4'));var BPromise=require(_0x1085('0x5'));var Mustache=require(_0x1085('0x6'));var util=require(_0x1085('0x7'));var path=require(_0x1085('0x8'));var sox=require(_0x1085('0x9'));var csv=require(_0x1085('0xa'));var ejs=require(_0x1085('0xb'));var fs=require('fs');var fs_extra=require(_0x1085('0xc'));var _=require(_0x1085('0xd'));var squel=require(_0x1085('0xe'));var crypto=require(_0x1085('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1085('0xa'));var querystring=require(_0x1085('0x10'));var Papa=require(_0x1085('0x11'));var Redis=require(_0x1085('0x12'));var authService=require(_0x1085('0x13'));var qs=require(_0x1085('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1085('0x15'));var logger=require(_0x1085('0x16'))(_0x1085('0x17'));var utils=require(_0x1085('0x18'));var config=require(_0x1085('0x19'));var licenseUtil=require(_0x1085('0x1a'));var db=require(_0x1085('0x1b'))['db'];function respondWithStatusCode(_0x4c7520,_0x3664c9){_0x3664c9=_0x3664c9||0xcc;return function(_0x95194a){if(_0x95194a){return _0x4c7520[_0x1085('0x1c')](_0x3664c9);}return _0x4c7520['status'](_0x3664c9)[_0x1085('0x1d')]();};}function respondWithResult(_0x59802d,_0x4754c9){_0x4754c9=_0x4754c9||0xc8;return function(_0x23dcd7){if(_0x23dcd7){return _0x59802d[_0x1085('0x1e')](_0x4754c9)['json'](_0x23dcd7);}};}function respondWithFilteredResult(_0x334c3a,_0x27b8d9){return function(_0x1332ad){if(_0x1332ad){var _0x41e4d7=typeof _0x27b8d9['offset']===_0x1085('0x1f')&&typeof _0x27b8d9['limit']===_0x1085('0x1f');var _0x5877e9=_0x1332ad[_0x1085('0x20')];var _0x37b760=_0x41e4d7?0x0:_0x27b8d9[_0x1085('0x21')];var _0x5e2270=_0x41e4d7?_0x1332ad[_0x1085('0x20')]:_0x27b8d9['offset']+_0x27b8d9[_0x1085('0x22')];var _0x5b715a;if(_0x5e2270>=_0x5877e9){_0x5e2270=_0x5877e9;_0x5b715a=0xc8;}else{_0x5b715a=0xce;}_0x334c3a['status'](_0x5b715a);return _0x334c3a['set']('Content-Range',_0x37b760+'-'+_0x5e2270+'/'+_0x5877e9)[_0x1085('0x23')](_0x1332ad);}return null;};}function patchUpdates(_0x5c89f2){return function(_0x5460cb){try{jsonpatch['apply'](_0x5460cb,_0x5c89f2,!![]);}catch(_0x17aed6){return BPromise[_0x1085('0x24')](_0x17aed6);}return _0x5460cb[_0x1085('0x25')]();};}function saveUpdates(_0x50d3d6,_0x146a78){return function(_0x3c77f2){if(_0x3c77f2){return _0x3c77f2['update'](_0x50d3d6)[_0x1085('0x26')](function(_0x55a0eb){return _0x55a0eb;});}return null;};}function removeEntity(_0x32efc1,_0x54f32c){return function(_0xafd7df){if(_0xafd7df){return _0xafd7df[_0x1085('0x27')]()[_0x1085('0x26')](function(){_0x32efc1['status'](0xcc)[_0x1085('0x1d')]();});}};}function handleEntityNotFound(_0x1698e2,_0x2712c9){return function(_0x552876){if(!_0x552876){_0x1698e2[_0x1085('0x1c')](0x194);}return _0x552876;};}function handleError(_0xbf3272,_0x3f788b){_0x3f788b=_0x3f788b||0x1f4;return function(_0x4b3ca1){logger[_0x1085('0x28')](_0x4b3ca1[_0x1085('0x29')]);if(_0x4b3ca1[_0x1085('0x2a')]){delete _0x4b3ca1[_0x1085('0x2a')];}_0xbf3272[_0x1085('0x1e')](_0x3f788b)[_0x1085('0x2b')](_0x4b3ca1);};}exports[_0x1085('0x2c')]=function(_0x2a90d1,_0x22f3d9){var _0x417cb6={},_0x1881d5={},_0x5c5ed1={'count':0x0,'rows':[]};var _0x24959b=_[_0x1085('0x2d')](db[_0x1085('0x2e')][_0x1085('0x2f')],function(_0x41da9b){return{'name':_0x41da9b[_0x1085('0x30')],'type':_0x41da9b[_0x1085('0x31')][_0x1085('0x32')]};});_0x1881d5[_0x1085('0x33')]=_[_0x1085('0x2d')](_0x24959b,_0x1085('0x2a'));_0x1881d5[_0x1085('0x34')]=_['keys'](_0x2a90d1[_0x1085('0x34')]);_0x1881d5[_0x1085('0x35')]=_['intersection'](_0x1881d5[_0x1085('0x33')],_0x1881d5[_0x1085('0x34')]);_0x417cb6[_0x1085('0x36')]=_[_0x1085('0x37')](_0x1881d5[_0x1085('0x33')],qs['fields'](_0x2a90d1[_0x1085('0x34')][_0x1085('0x38')]));_0x417cb6['attributes']=_0x417cb6[_0x1085('0x36')][_0x1085('0x39')]?_0x417cb6[_0x1085('0x36')]:_0x1881d5[_0x1085('0x33')];if(!_0x2a90d1['query'][_0x1085('0x3a')](_0x1085('0x3b'))){_0x417cb6[_0x1085('0x22')]=qs[_0x1085('0x22')](_0x2a90d1['query'][_0x1085('0x22')]);_0x417cb6[_0x1085('0x21')]=qs[_0x1085('0x21')](_0x2a90d1['query'][_0x1085('0x21')]);}_0x417cb6['order']=qs[_0x1085('0x3c')](_0x2a90d1['query'][_0x1085('0x3c')]);_0x417cb6[_0x1085('0x3d')]=qs['filters'](_[_0x1085('0x3e')](_0x2a90d1[_0x1085('0x34')],_0x1881d5['filters']),_0x24959b);if(_0x2a90d1[_0x1085('0x34')]['filter']){_0x417cb6['where']=_[_0x1085('0x3f')](_0x417cb6[_0x1085('0x3d')],{'$or':_['map'](_0x24959b,function(_0x2b34b9){if(_0x2b34b9[_0x1085('0x31')]!==_0x1085('0x40')){var _0x34b696={};_0x34b696[_0x2b34b9['name']]={'$like':'%'+_0x2a90d1[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x34b696;}})});}_0x417cb6=_[_0x1085('0x3f')]({},_0x417cb6,_0x2a90d1[_0x1085('0x42')]);var _0x3d11f4={'where':_0x417cb6['where']};return db[_0x1085('0x2e')]['count'](_0x3d11f4)['then'](function(_0x3b7482){_0x5c5ed1['count']=_0x3b7482;if(_0x2a90d1['query']['includeAll']){_0x417cb6[_0x1085('0x43')]=[{'all':!![]}];}return db[_0x1085('0x2e')][_0x1085('0x44')](_0x417cb6);})[_0x1085('0x26')](function(_0x3bda3b){_0x5c5ed1[_0x1085('0x45')]=_0x3bda3b;return _0x5c5ed1;})[_0x1085('0x26')](respondWithFilteredResult(_0x22f3d9,_0x417cb6))['catch'](handleError(_0x22f3d9,null));};exports['show']=function(_0x26fefd,_0x47a10c){var _0x4e8ccf={'raw':![],'where':{'id':_0x26fefd[_0x1085('0x46')]['id']}},_0x2fbad5={};_0x2fbad5[_0x1085('0x33')]=_[_0x1085('0x47')](db[_0x1085('0x2e')][_0x1085('0x2f')]);_0x2fbad5[_0x1085('0x34')]=_['keys'](_0x26fefd['query']);_0x2fbad5[_0x1085('0x35')]=_['intersection'](_0x2fbad5['model'],_0x2fbad5[_0x1085('0x34')]);_0x4e8ccf[_0x1085('0x36')]=_[_0x1085('0x37')](_0x2fbad5[_0x1085('0x33')],qs[_0x1085('0x38')](_0x26fefd[_0x1085('0x34')][_0x1085('0x38')]));_0x4e8ccf[_0x1085('0x36')]=_0x4e8ccf['attributes'][_0x1085('0x39')]?_0x4e8ccf['attributes']:_0x2fbad5[_0x1085('0x33')];if(_0x26fefd[_0x1085('0x34')][_0x1085('0x48')]){_0x4e8ccf[_0x1085('0x43')]=[{'all':!![]}];}_0x4e8ccf=_[_0x1085('0x3f')]({},_0x4e8ccf,_0x26fefd['options']);return db[_0x1085('0x2e')][_0x1085('0x49')](_0x4e8ccf)[_0x1085('0x26')](handleEntityNotFound(_0x47a10c,null))[_0x1085('0x26')](respondWithResult(_0x47a10c,null))[_0x1085('0x4a')](handleError(_0x47a10c,null));};exports['create']=function(_0x3b004d,_0x32c07d){return db[_0x1085('0x2e')][_0x1085('0x4b')](_0x3b004d[_0x1085('0x4c')],{})[_0x1085('0x26')](respondWithResult(_0x32c07d,0xc9))['catch'](handleError(_0x32c07d,null));};exports[_0x1085('0x4d')]=function(_0x43ccd2,_0x7338f9){if(_0x43ccd2[_0x1085('0x4c')]['id']){delete _0x43ccd2[_0x1085('0x4c')]['id'];}return db['VtigerConfiguration'][_0x1085('0x49')]({'where':{'id':_0x43ccd2[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x7338f9,null))[_0x1085('0x26')](saveUpdates(_0x43ccd2['body'],null))['then'](respondWithResult(_0x7338f9,null))[_0x1085('0x4a')](handleError(_0x7338f9,null));};exports['destroy']=function(_0x329804,_0x279d0b){return db[_0x1085('0x2e')][_0x1085('0x49')]({'where':{'id':_0x329804['params']['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x279d0b,null))[_0x1085('0x26')](removeEntity(_0x279d0b,null))[_0x1085('0x4a')](handleError(_0x279d0b,null));};exports['getFields']=function(_0x1c9d86,_0x1ccbb5,_0x2ed852){var _0x400c61={};var _0x18699d={};var _0x66afa1;var _0x46104b;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0x1c9d86[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x1ccbb5,null))[_0x1085('0x26')](function(_0x1a27ae){if(_0x1a27ae){_0x66afa1=_0x1a27ae;_0x18699d[_0x1085('0x33')]=_['keys'](db[_0x1085('0x4f')][_0x1085('0x2f')]);_0x18699d[_0x1085('0x34')]=_[_0x1085('0x47')](_0x1c9d86[_0x1085('0x34')]);_0x18699d['filters']=_[_0x1085('0x37')](_0x18699d[_0x1085('0x33')],_0x18699d[_0x1085('0x34')]);_0x400c61['attributes']=_[_0x1085('0x37')](_0x18699d['model'],qs[_0x1085('0x38')](_0x1c9d86[_0x1085('0x34')][_0x1085('0x38')]));_0x400c61[_0x1085('0x36')]=_0x400c61[_0x1085('0x36')]['length']?_0x400c61[_0x1085('0x36')]:_0x18699d[_0x1085('0x33')];_0x400c61[_0x1085('0x50')]=qs[_0x1085('0x3c')](_0x1c9d86['query']['sort']);_0x400c61[_0x1085('0x3d')]=qs[_0x1085('0x35')](_[_0x1085('0x3e')](_0x1c9d86[_0x1085('0x34')],_0x18699d[_0x1085('0x35')]));if(_0x1c9d86['query']['filter']){_0x400c61[_0x1085('0x3d')]=_['merge'](_0x400c61['where'],{'$or':_[_0x1085('0x2d')](_0x400c61[_0x1085('0x36')],function(_0x40c2e1){var _0x4fe02a={};_0x4fe02a[_0x40c2e1]={'$like':'%'+_0x1c9d86[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x4fe02a;})});}_0x400c61=_[_0x1085('0x3f')]({},_0x400c61,_0x1c9d86['options']);return _0x66afa1[_0x1085('0x51')](_0x400c61);}})[_0x1085('0x26')](function(_0x5809d4){if(_0x5809d4){_0x46104b=_0x5809d4['length'];if(!_0x1c9d86[_0x1085('0x34')][_0x1085('0x3a')](_0x1085('0x3b'))){_0x400c61[_0x1085('0x22')]=qs[_0x1085('0x22')](_0x1c9d86[_0x1085('0x34')][_0x1085('0x22')]);_0x400c61[_0x1085('0x21')]=qs[_0x1085('0x21')](_0x1c9d86['query'][_0x1085('0x21')]);}return _0x66afa1[_0x1085('0x51')](_0x400c61);}})[_0x1085('0x26')](function(_0x54a639){if(_0x54a639){return _0x54a639?{'count':_0x46104b,'rows':_0x54a639}:null;}})[_0x1085('0x26')](respondWithResult(_0x1ccbb5,null))[_0x1085('0x4a')](handleError(_0x1ccbb5,null));};exports[_0x1085('0x52')]=function(_0xaf3997,_0x3636d9,_0x4b1b96){var _0x5784df={};var _0x5d5579={};var _0x5c0e52;var _0x3d92ca;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0xaf3997[_0x1085('0x46')]['id']}})['then'](handleEntityNotFound(_0x3636d9,null))[_0x1085('0x26')](function(_0x476514){if(_0x476514){_0x5c0e52=_0x476514;_0x5d5579[_0x1085('0x33')]=_['keys'](db[_0x1085('0x4f')][_0x1085('0x2f')]);_0x5d5579['query']=_[_0x1085('0x47')](_0xaf3997[_0x1085('0x34')]);_0x5d5579[_0x1085('0x35')]=_[_0x1085('0x37')](_0x5d5579[_0x1085('0x33')],_0x5d5579[_0x1085('0x34')]);_0x5784df[_0x1085('0x36')]=_[_0x1085('0x37')](_0x5d5579[_0x1085('0x33')],qs[_0x1085('0x38')](_0xaf3997[_0x1085('0x34')][_0x1085('0x38')]));_0x5784df['attributes']=_0x5784df[_0x1085('0x36')]['length']?_0x5784df[_0x1085('0x36')]:_0x5d5579[_0x1085('0x33')];_0x5784df[_0x1085('0x50')]=qs['sort'](_0xaf3997['query'][_0x1085('0x3c')]);_0x5784df[_0x1085('0x3d')]=qs[_0x1085('0x35')](_['pick'](_0xaf3997[_0x1085('0x34')],_0x5d5579[_0x1085('0x35')]));if(_0xaf3997[_0x1085('0x34')][_0x1085('0x41')]){_0x5784df[_0x1085('0x3d')]=_['merge'](_0x5784df[_0x1085('0x3d')],{'$or':_[_0x1085('0x2d')](_0x5784df['attributes'],function(_0x41cbd7){var _0x48db7e={};_0x48db7e[_0x41cbd7]={'$like':'%'+_0xaf3997[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x48db7e;})});}_0x5784df=_[_0x1085('0x3f')]({},_0x5784df,_0xaf3997[_0x1085('0x42')]);return _0x5c0e52['getSubjects'](_0x5784df);}})[_0x1085('0x26')](function(_0x5f5883){if(_0x5f5883){_0x3d92ca=_0x5f5883['length'];if(!_0xaf3997[_0x1085('0x34')][_0x1085('0x3a')](_0x1085('0x3b'))){_0x5784df[_0x1085('0x22')]=qs['limit'](_0xaf3997[_0x1085('0x34')][_0x1085('0x22')]);_0x5784df[_0x1085('0x21')]=qs[_0x1085('0x21')](_0xaf3997[_0x1085('0x34')][_0x1085('0x21')]);}return _0x5c0e52[_0x1085('0x52')](_0x5784df);}})[_0x1085('0x26')](function(_0x588d30){if(_0x588d30){return _0x588d30?{'count':_0x3d92ca,'rows':_0x588d30}:null;}})['then'](respondWithResult(_0x3636d9,null))['catch'](handleError(_0x3636d9,null));};exports[_0x1085('0x53')]=function(_0x451f95,_0x2dfa44,_0x46b0f2){var _0x590adb={};var _0xc432cb={};var _0x2e52f9;var _0x3e5e8c;return db[_0x1085('0x2e')][_0x1085('0x4e')]({'where':{'id':_0x451f95[_0x1085('0x46')]['id']}})[_0x1085('0x26')](handleEntityNotFound(_0x2dfa44,null))[_0x1085('0x26')](function(_0xd4f978){if(_0xd4f978){_0x2e52f9=_0xd4f978;_0xc432cb[_0x1085('0x33')]=_[_0x1085('0x47')](db[_0x1085('0x4f')]['rawAttributes']);_0xc432cb[_0x1085('0x34')]=_[_0x1085('0x47')](_0x451f95[_0x1085('0x34')]);_0xc432cb['filters']=_[_0x1085('0x37')](_0xc432cb[_0x1085('0x33')],_0xc432cb['query']);_0x590adb[_0x1085('0x36')]=_['intersection'](_0xc432cb['model'],qs[_0x1085('0x38')](_0x451f95['query'][_0x1085('0x38')]));_0x590adb['attributes']=_0x590adb['attributes'][_0x1085('0x39')]?_0x590adb[_0x1085('0x36')]:_0xc432cb[_0x1085('0x33')];_0x590adb[_0x1085('0x50')]=qs[_0x1085('0x3c')](_0x451f95[_0x1085('0x34')]['sort']);_0x590adb['where']=qs[_0x1085('0x35')](_[_0x1085('0x3e')](_0x451f95[_0x1085('0x34')],_0xc432cb[_0x1085('0x35')]));if(_0x451f95[_0x1085('0x34')][_0x1085('0x41')]){_0x590adb[_0x1085('0x3d')]=_['merge'](_0x590adb['where'],{'$or':_[_0x1085('0x2d')](_0x590adb['attributes'],function(_0x360b58){var _0x4e1c77={};_0x4e1c77[_0x360b58]={'$like':'%'+_0x451f95[_0x1085('0x34')][_0x1085('0x41')]+'%'};return _0x4e1c77;})});}_0x590adb=_['merge']({},_0x590adb,_0x451f95[_0x1085('0x42')]);return _0x2e52f9[_0x1085('0x53')](_0x590adb);}})[_0x1085('0x26')](function(_0x472b56){if(_0x472b56){_0x3e5e8c=_0x472b56[_0x1085('0x39')];if(!_0x451f95[_0x1085('0x34')][_0x1085('0x3a')]('nolimit')){_0x590adb[_0x1085('0x22')]=qs['limit'](_0x451f95[_0x1085('0x34')][_0x1085('0x22')]);_0x590adb[_0x1085('0x21')]=qs['offset'](_0x451f95[_0x1085('0x34')][_0x1085('0x21')]);}return _0x2e52f9[_0x1085('0x53')](_0x590adb);}})[_0x1085('0x26')](function(_0x406099){if(_0x406099){return _0x406099?{'count':_0x3e5e8c,'rows':_0x406099}:null;}})[_0x1085('0x26')](respondWithResult(_0x2dfa44,null))[_0x1085('0x4a')](handleError(_0x2dfa44,null));};
\ No newline at end of file
+var _0x4309=['model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VtigerConfiguration','includeAll','rows','params','intersection','length','catch','create','body','find','findOne','VtigerField','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','rawAttributes','type','key'];(function(_0x2900bf,_0x396900){var _0x4ff896=function(_0x4366c7){while(--_0x4366c7){_0x2900bf['push'](_0x2900bf['shift']());}};_0x4ff896(++_0x396900);}(_0x4309,0x70));var _0x9430=function(_0x37125e,_0x5158b6){_0x37125e=_0x37125e-0x0;var _0x339020=_0x4309[_0x37125e];return _0x339020;};'use strict';var emlformat=require(_0x9430('0x0'));var rimraf=require(_0x9430('0x1'));var zipdir=require(_0x9430('0x2'));var jsonpatch=require(_0x9430('0x3'));var rp=require(_0x9430('0x4'));var moment=require(_0x9430('0x5'));var BPromise=require(_0x9430('0x6'));var Mustache=require('mustache');var util=require(_0x9430('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9430('0x8'));var fs=require('fs');var fs_extra=require(_0x9430('0x9'));var _=require(_0x9430('0xa'));var squel=require(_0x9430('0xb'));var crypto=require(_0x9430('0xc'));var jsforce=require(_0x9430('0xd'));var deskjs=require(_0x9430('0xe'));var toCsv=require(_0x9430('0xf'));var querystring=require(_0x9430('0x10'));var Papa=require(_0x9430('0x11'));var Redis=require(_0x9430('0x12'));var authService=require(_0x9430('0x13'));var qs=require(_0x9430('0x14'));var as=require(_0x9430('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9430('0x16'));var utils=require(_0x9430('0x17'));var config=require(_0x9430('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9430('0x19'))['db'];function respondWithStatusCode(_0x136a46,_0xc78a07){_0xc78a07=_0xc78a07||0xcc;return function(_0x26284d){if(_0x26284d){return _0x136a46['sendStatus'](_0xc78a07);}return _0x136a46[_0x9430('0x1a')](_0xc78a07)[_0x9430('0x1b')]();};}function respondWithResult(_0x468320,_0x584c18){_0x584c18=_0x584c18||0xc8;return function(_0x437e59){if(_0x437e59){return _0x468320[_0x9430('0x1a')](_0x584c18)[_0x9430('0x1c')](_0x437e59);}};}function respondWithFilteredResult(_0x501d0f,_0x39d8f1){return function(_0x5c6dea){if(_0x5c6dea){var _0xbea0cd=typeof _0x39d8f1['offset']===_0x9430('0x1d')&&typeof _0x39d8f1[_0x9430('0x1e')]===_0x9430('0x1d');var _0x12a72f=_0x5c6dea[_0x9430('0x1f')];var _0x511a09=_0xbea0cd?0x0:_0x39d8f1[_0x9430('0x20')];var _0x4f5f5b=_0xbea0cd?_0x5c6dea[_0x9430('0x1f')]:_0x39d8f1[_0x9430('0x20')]+_0x39d8f1[_0x9430('0x1e')];var _0x1bbb2b;if(_0x4f5f5b>=_0x12a72f){_0x4f5f5b=_0x12a72f;_0x1bbb2b=0xc8;}else{_0x1bbb2b=0xce;}_0x501d0f[_0x9430('0x1a')](_0x1bbb2b);return _0x501d0f[_0x9430('0x21')](_0x9430('0x22'),_0x511a09+'-'+_0x4f5f5b+'/'+_0x12a72f)[_0x9430('0x1c')](_0x5c6dea);}return null;};}function patchUpdates(_0x512fde){return function(_0x528768){try{jsonpatch[_0x9430('0x23')](_0x528768,_0x512fde,!![]);}catch(_0x15e78a){return BPromise[_0x9430('0x24')](_0x15e78a);}return _0x528768[_0x9430('0x25')]();};}function saveUpdates(_0x3bbc03,_0x3f3192){return function(_0x5b6cf1){if(_0x5b6cf1){return _0x5b6cf1[_0x9430('0x26')](_0x3bbc03)[_0x9430('0x27')](function(_0x5145f0){return _0x5145f0;});}return null;};}function removeEntity(_0x52f090,_0x37605e){return function(_0x19e72e){if(_0x19e72e){return _0x19e72e[_0x9430('0x28')]()[_0x9430('0x27')](function(){_0x52f090[_0x9430('0x1a')](0xcc)[_0x9430('0x1b')]();});}};}function handleEntityNotFound(_0x363dbd,_0x5b8302){return function(_0x4ff440){if(!_0x4ff440){_0x363dbd[_0x9430('0x29')](0x194);}return _0x4ff440;};}function handleError(_0x5d2377,_0x5e7385){_0x5e7385=_0x5e7385||0x1f4;return function(_0xd4aef4){logger[_0x9430('0x2a')](_0xd4aef4[_0x9430('0x2b')]);if(_0xd4aef4[_0x9430('0x2c')]){delete _0xd4aef4[_0x9430('0x2c')];}_0x5d2377[_0x9430('0x1a')](_0x5e7385)['send'](_0xd4aef4);};}exports[_0x9430('0x2d')]=function(_0x922847,_0x4effb2){var _0x5e08c5={},_0x3f9907={},_0x2514b1={'count':0x0,'rows':[]};var _0xfe3aa7=_[_0x9430('0x2e')](db['VtigerConfiguration'][_0x9430('0x2f')],function(_0x484825){return{'name':_0x484825['fieldName'],'type':_0x484825[_0x9430('0x30')][_0x9430('0x31')]};});_0x3f9907[_0x9430('0x32')]=_[_0x9430('0x2e')](_0xfe3aa7,_0x9430('0x2c'));_0x3f9907[_0x9430('0x33')]=_[_0x9430('0x34')](_0x922847[_0x9430('0x33')]);_0x3f9907[_0x9430('0x35')]=_['intersection'](_0x3f9907[_0x9430('0x32')],_0x3f9907[_0x9430('0x33')]);_0x5e08c5['attributes']=_['intersection'](_0x3f9907[_0x9430('0x32')],qs[_0x9430('0x36')](_0x922847[_0x9430('0x33')][_0x9430('0x36')]));_0x5e08c5[_0x9430('0x37')]=_0x5e08c5[_0x9430('0x37')]['length']?_0x5e08c5['attributes']:_0x3f9907[_0x9430('0x32')];if(!_0x922847[_0x9430('0x33')][_0x9430('0x38')](_0x9430('0x39'))){_0x5e08c5['limit']=qs['limit'](_0x922847['query']['limit']);_0x5e08c5[_0x9430('0x20')]=qs[_0x9430('0x20')](_0x922847[_0x9430('0x33')]['offset']);}_0x5e08c5[_0x9430('0x3a')]=qs[_0x9430('0x3b')](_0x922847['query'][_0x9430('0x3b')]);_0x5e08c5[_0x9430('0x3c')]=qs[_0x9430('0x35')](_[_0x9430('0x3d')](_0x922847['query'],_0x3f9907[_0x9430('0x35')]),_0xfe3aa7);if(_0x922847[_0x9430('0x33')][_0x9430('0x3e')]){_0x5e08c5[_0x9430('0x3c')]=_[_0x9430('0x3f')](_0x5e08c5[_0x9430('0x3c')],{'$or':_['map'](_0xfe3aa7,function(_0x44c9d6){if(_0x44c9d6[_0x9430('0x30')]!==_0x9430('0x40')){var _0x588911={};_0x588911[_0x44c9d6[_0x9430('0x2c')]]={'$like':'%'+_0x922847[_0x9430('0x33')][_0x9430('0x3e')]+'%'};return _0x588911;}})});}_0x5e08c5=_[_0x9430('0x3f')]({},_0x5e08c5,_0x922847[_0x9430('0x41')]);var _0x4d74db={'where':_0x5e08c5[_0x9430('0x3c')]};return db[_0x9430('0x42')][_0x9430('0x1f')](_0x4d74db)[_0x9430('0x27')](function(_0x179f31){_0x2514b1[_0x9430('0x1f')]=_0x179f31;if(_0x922847[_0x9430('0x33')][_0x9430('0x43')]){_0x5e08c5['include']=[{'all':!![]}];}return db['VtigerConfiguration']['findAll'](_0x5e08c5);})[_0x9430('0x27')](function(_0xab6770){_0x2514b1[_0x9430('0x44')]=_0xab6770;return _0x2514b1;})['then'](respondWithFilteredResult(_0x4effb2,_0x5e08c5))['catch'](handleError(_0x4effb2,null));};exports['show']=function(_0x2f02cc,_0x849c34){var _0x548713={'raw':![],'where':{'id':_0x2f02cc[_0x9430('0x45')]['id']}},_0x302b12={};_0x302b12[_0x9430('0x32')]=_[_0x9430('0x34')](db[_0x9430('0x42')][_0x9430('0x2f')]);_0x302b12['query']=_[_0x9430('0x34')](_0x2f02cc[_0x9430('0x33')]);_0x302b12[_0x9430('0x35')]=_[_0x9430('0x46')](_0x302b12[_0x9430('0x32')],_0x302b12[_0x9430('0x33')]);_0x548713[_0x9430('0x37')]=_[_0x9430('0x46')](_0x302b12[_0x9430('0x32')],qs['fields'](_0x2f02cc['query'][_0x9430('0x36')]));_0x548713[_0x9430('0x37')]=_0x548713[_0x9430('0x37')][_0x9430('0x47')]?_0x548713[_0x9430('0x37')]:_0x302b12[_0x9430('0x32')];if(_0x2f02cc[_0x9430('0x33')][_0x9430('0x43')]){_0x548713['include']=[{'all':!![]}];}_0x548713=_[_0x9430('0x3f')]({},_0x548713,_0x2f02cc[_0x9430('0x41')]);return db[_0x9430('0x42')]['find'](_0x548713)[_0x9430('0x27')](handleEntityNotFound(_0x849c34,null))['then'](respondWithResult(_0x849c34,null))[_0x9430('0x48')](handleError(_0x849c34,null));};exports[_0x9430('0x49')]=function(_0x27f1ea,_0x3e635c){return db['VtigerConfiguration'][_0x9430('0x49')](_0x27f1ea[_0x9430('0x4a')],{})[_0x9430('0x27')](respondWithResult(_0x3e635c,0xc9))[_0x9430('0x48')](handleError(_0x3e635c,null));};exports[_0x9430('0x26')]=function(_0x282e6f,_0x2f88d3){if(_0x282e6f['body']['id']){delete _0x282e6f[_0x9430('0x4a')]['id'];}return db[_0x9430('0x42')][_0x9430('0x4b')]({'where':{'id':_0x282e6f[_0x9430('0x45')]['id']}})[_0x9430('0x27')](handleEntityNotFound(_0x2f88d3,null))[_0x9430('0x27')](saveUpdates(_0x282e6f[_0x9430('0x4a')],null))[_0x9430('0x27')](respondWithResult(_0x2f88d3,null))[_0x9430('0x48')](handleError(_0x2f88d3,null));};exports['destroy']=function(_0x5ba0b3,_0x4fe1a4){return db[_0x9430('0x42')][_0x9430('0x4b')]({'where':{'id':_0x5ba0b3[_0x9430('0x45')]['id']}})[_0x9430('0x27')](handleEntityNotFound(_0x4fe1a4,null))[_0x9430('0x27')](removeEntity(_0x4fe1a4,null))[_0x9430('0x48')](handleError(_0x4fe1a4,null));};exports['getFields']=function(_0x263cff,_0x5d2e39,_0x156d11){var _0x56f923={};var _0x27e3d0={};var _0x3c9a02;var _0x2068cd;return db[_0x9430('0x42')][_0x9430('0x4c')]({'where':{'id':_0x263cff[_0x9430('0x45')]['id']}})['then'](handleEntityNotFound(_0x5d2e39,null))['then'](function(_0x54ad1d){if(_0x54ad1d){_0x3c9a02=_0x54ad1d;_0x27e3d0[_0x9430('0x32')]=_[_0x9430('0x34')](db[_0x9430('0x4d')][_0x9430('0x2f')]);_0x27e3d0[_0x9430('0x33')]=_[_0x9430('0x34')](_0x263cff['query']);_0x27e3d0['filters']=_[_0x9430('0x46')](_0x27e3d0[_0x9430('0x32')],_0x27e3d0['query']);_0x56f923['attributes']=_[_0x9430('0x46')](_0x27e3d0['model'],qs['fields'](_0x263cff['query']['fields']));_0x56f923[_0x9430('0x37')]=_0x56f923[_0x9430('0x37')][_0x9430('0x47')]?_0x56f923['attributes']:_0x27e3d0[_0x9430('0x32')];_0x56f923[_0x9430('0x3a')]=qs[_0x9430('0x3b')](_0x263cff['query'][_0x9430('0x3b')]);_0x56f923['where']=qs['filters'](_['pick'](_0x263cff[_0x9430('0x33')],_0x27e3d0[_0x9430('0x35')]));if(_0x263cff[_0x9430('0x33')][_0x9430('0x3e')]){_0x56f923[_0x9430('0x3c')]=_['merge'](_0x56f923[_0x9430('0x3c')],{'$or':_[_0x9430('0x2e')](_0x56f923[_0x9430('0x37')],function(_0x274f69){var _0x1e942d={};_0x1e942d[_0x274f69]={'$like':'%'+_0x263cff[_0x9430('0x33')][_0x9430('0x3e')]+'%'};return _0x1e942d;})});}_0x56f923=_[_0x9430('0x3f')]({},_0x56f923,_0x263cff[_0x9430('0x41')]);return _0x3c9a02[_0x9430('0x4e')](_0x56f923);}})[_0x9430('0x27')](function(_0x1e4bed){if(_0x1e4bed){_0x2068cd=_0x1e4bed[_0x9430('0x47')];if(!_0x263cff[_0x9430('0x33')]['hasOwnProperty'](_0x9430('0x39'))){_0x56f923[_0x9430('0x1e')]=qs[_0x9430('0x1e')](_0x263cff[_0x9430('0x33')]['limit']);_0x56f923[_0x9430('0x20')]=qs['offset'](_0x263cff[_0x9430('0x33')][_0x9430('0x20')]);}return _0x3c9a02[_0x9430('0x4e')](_0x56f923);}})['then'](function(_0x488aa0){if(_0x488aa0){return _0x488aa0?{'count':_0x2068cd,'rows':_0x488aa0}:null;}})[_0x9430('0x27')](respondWithResult(_0x5d2e39,null))[_0x9430('0x48')](handleError(_0x5d2e39,null));};exports[_0x9430('0x4f')]=function(_0x53052f,_0x3b9e62,_0x1326c7){var _0x3f61b8={};var _0x2b5ca9={};var _0x4d493d;var _0x36230b;return db[_0x9430('0x42')]['findOne']({'where':{'id':_0x53052f[_0x9430('0x45')]['id']}})[_0x9430('0x27')](handleEntityNotFound(_0x3b9e62,null))[_0x9430('0x27')](function(_0x2aa548){if(_0x2aa548){_0x4d493d=_0x2aa548;_0x2b5ca9[_0x9430('0x32')]=_[_0x9430('0x34')](db[_0x9430('0x4d')][_0x9430('0x2f')]);_0x2b5ca9[_0x9430('0x33')]=_[_0x9430('0x34')](_0x53052f[_0x9430('0x33')]);_0x2b5ca9['filters']=_[_0x9430('0x46')](_0x2b5ca9['model'],_0x2b5ca9[_0x9430('0x33')]);_0x3f61b8['attributes']=_[_0x9430('0x46')](_0x2b5ca9[_0x9430('0x32')],qs[_0x9430('0x36')](_0x53052f['query'][_0x9430('0x36')]));_0x3f61b8[_0x9430('0x37')]=_0x3f61b8[_0x9430('0x37')][_0x9430('0x47')]?_0x3f61b8[_0x9430('0x37')]:_0x2b5ca9[_0x9430('0x32')];_0x3f61b8[_0x9430('0x3a')]=qs[_0x9430('0x3b')](_0x53052f[_0x9430('0x33')][_0x9430('0x3b')]);_0x3f61b8['where']=qs[_0x9430('0x35')](_[_0x9430('0x3d')](_0x53052f[_0x9430('0x33')],_0x2b5ca9[_0x9430('0x35')]));if(_0x53052f[_0x9430('0x33')]['filter']){_0x3f61b8[_0x9430('0x3c')]=_[_0x9430('0x3f')](_0x3f61b8['where'],{'$or':_[_0x9430('0x2e')](_0x3f61b8[_0x9430('0x37')],function(_0x38787c){var _0x3ac6a7={};_0x3ac6a7[_0x38787c]={'$like':'%'+_0x53052f[_0x9430('0x33')]['filter']+'%'};return _0x3ac6a7;})});}_0x3f61b8=_[_0x9430('0x3f')]({},_0x3f61b8,_0x53052f[_0x9430('0x41')]);return _0x4d493d['getSubjects'](_0x3f61b8);}})[_0x9430('0x27')](function(_0xefc83c){if(_0xefc83c){_0x36230b=_0xefc83c['length'];if(!_0x53052f[_0x9430('0x33')][_0x9430('0x38')](_0x9430('0x39'))){_0x3f61b8['limit']=qs[_0x9430('0x1e')](_0x53052f[_0x9430('0x33')][_0x9430('0x1e')]);_0x3f61b8[_0x9430('0x20')]=qs['offset'](_0x53052f[_0x9430('0x33')][_0x9430('0x20')]);}return _0x4d493d[_0x9430('0x4f')](_0x3f61b8);}})[_0x9430('0x27')](function(_0x30dd21){if(_0x30dd21){return _0x30dd21?{'count':_0x36230b,'rows':_0x30dd21}:null;}})[_0x9430('0x27')](respondWithResult(_0x3b9e62,null))[_0x9430('0x48')](handleError(_0x3b9e62,null));};exports[_0x9430('0x50')]=function(_0x1e1ca6,_0x175863,_0x3ebc0){var _0x14480f={};var _0x32fe85={};var _0x17f233;var _0x15d317;return db['VtigerConfiguration'][_0x9430('0x4c')]({'where':{'id':_0x1e1ca6[_0x9430('0x45')]['id']}})[_0x9430('0x27')](handleEntityNotFound(_0x175863,null))['then'](function(_0x2d467e){if(_0x2d467e){_0x17f233=_0x2d467e;_0x32fe85['model']=_[_0x9430('0x34')](db[_0x9430('0x4d')][_0x9430('0x2f')]);_0x32fe85[_0x9430('0x33')]=_[_0x9430('0x34')](_0x1e1ca6[_0x9430('0x33')]);_0x32fe85['filters']=_[_0x9430('0x46')](_0x32fe85['model'],_0x32fe85[_0x9430('0x33')]);_0x14480f[_0x9430('0x37')]=_[_0x9430('0x46')](_0x32fe85[_0x9430('0x32')],qs['fields'](_0x1e1ca6['query']['fields']));_0x14480f[_0x9430('0x37')]=_0x14480f['attributes'][_0x9430('0x47')]?_0x14480f[_0x9430('0x37')]:_0x32fe85[_0x9430('0x32')];_0x14480f[_0x9430('0x3a')]=qs[_0x9430('0x3b')](_0x1e1ca6[_0x9430('0x33')][_0x9430('0x3b')]);_0x14480f[_0x9430('0x3c')]=qs[_0x9430('0x35')](_[_0x9430('0x3d')](_0x1e1ca6['query'],_0x32fe85['filters']));if(_0x1e1ca6[_0x9430('0x33')][_0x9430('0x3e')]){_0x14480f[_0x9430('0x3c')]=_[_0x9430('0x3f')](_0x14480f[_0x9430('0x3c')],{'$or':_[_0x9430('0x2e')](_0x14480f[_0x9430('0x37')],function(_0x2fef6e){var _0x298780={};_0x298780[_0x2fef6e]={'$like':'%'+_0x1e1ca6[_0x9430('0x33')][_0x9430('0x3e')]+'%'};return _0x298780;})});}_0x14480f=_[_0x9430('0x3f')]({},_0x14480f,_0x1e1ca6['options']);return _0x17f233[_0x9430('0x50')](_0x14480f);}})[_0x9430('0x27')](function(_0x222e07){if(_0x222e07){_0x15d317=_0x222e07[_0x9430('0x47')];if(!_0x1e1ca6[_0x9430('0x33')][_0x9430('0x38')](_0x9430('0x39'))){_0x14480f['limit']=qs[_0x9430('0x1e')](_0x1e1ca6[_0x9430('0x33')][_0x9430('0x1e')]);_0x14480f[_0x9430('0x20')]=qs[_0x9430('0x20')](_0x1e1ca6['query'][_0x9430('0x20')]);}return _0x17f233[_0x9430('0x50')](_0x14480f);}})[_0x9430('0x27')](function(_0x18f823){if(_0x18f823){return _0x18f823?{'count':_0x15d317,'rows':_0x18f823}:null;}})[_0x9430('0x27')](respondWithResult(_0x175863,null))[_0x9430('0x48')](handleError(_0x175863,null));};
\ No newline at end of file
index c95851a..bfaa251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a4c=['VtigerConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x8a4c,0x1d5));var _0xc8a4=function(_0x2d364e,_0x301c5e){_0x2d364e=_0x2d364e-0x0;var _0x1b9312=_0x8a4c[_0x2d364e];return _0x1b9312;};'use strict';var _=require(_0xc8a4('0x0'));var util=require(_0xc8a4('0x1'));var logger=require(_0xc8a4('0x2'))('api');var moment=require(_0xc8a4('0x3'));var BPromise=require(_0xc8a4('0x4'));var rp=require(_0xc8a4('0x5'));var fs=require('fs');var path=require(_0xc8a4('0x6'));var rimraf=require(_0xc8a4('0x7'));var config=require(_0xc8a4('0x8'));var attributes=require(_0xc8a4('0x9'));module[_0xc8a4('0xa')]=function(_0x571fe2,_0x3d3cd3){return _0x571fe2[_0xc8a4('0xb')](_0xc8a4('0xc'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf34d=['lodash','util','api','moment','bluebird','request-promise','rimraf','exports','define','VtigerConfiguration','int_vtiger_configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf34d,0x1b8));var _0xdf34=function(_0x5c7d06,_0x1c3a88){_0x5c7d06=_0x5c7d06-0x0;var _0x502b60=_0xf34d[_0x5c7d06];return _0x502b60;};'use strict';var _=require(_0xdf34('0x0'));var util=require(_0xdf34('0x1'));var logger=require('../../config/logger')(_0xdf34('0x2'));var moment=require(_0xdf34('0x3'));var BPromise=require(_0xdf34('0x4'));var rp=require(_0xdf34('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf34('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0xdf34('0x7')]=function(_0xf9da93,_0x20d95a){return _0xf9da93[_0xdf34('0x8')](_0xdf34('0x9'),attributes,{'tableName':_0xdf34('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86c8d6b..23ca6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec46=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0xec46,0x8e));var _0x6ec4=function(_0x1fa2b7,_0x1072a4){_0x1fa2b7=_0x1fa2b7-0x0;var _0x16fb89=_0xec46[_0x1fa2b7];return _0x16fb89;};'use strict';var _=require(_0x6ec4('0x0'));var util=require(_0x6ec4('0x1'));var moment=require('moment');var BPromise=require(_0x6ec4('0x2'));var rs=require(_0x6ec4('0x3'));var fs=require('fs');var Redis=require(_0x6ec4('0x4'));var db=require(_0x6ec4('0x5'))['db'];var utils=require(_0x6ec4('0x6'));var logger=require(_0x6ec4('0x7'))(_0x6ec4('0x8'));var config=require('../../config/environment');var jayson=require(_0x6ec4('0x9'));var client=jayson[_0x6ec4('0xa')][_0x6ec4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f3a5c,_0x218fdf,_0x3e0abf){return new BPromise(function(_0x5e0422,_0x40a83c){return client['request'](_0x4f3a5c,_0x3e0abf)[_0x6ec4('0xc')](function(_0x17a3a1){logger['info'](_0x6ec4('0xd'),_0x218fdf,'request\x20sent');logger[_0x6ec4('0xe')](_0x6ec4('0xf'),_0x218fdf,'request\x20sent',JSON[_0x6ec4('0x10')](_0x17a3a1));if(_0x17a3a1['error']){if(_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x12')]===0x1f4){logger[_0x6ec4('0x11')](_0x6ec4('0xd'),_0x218fdf,_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x13')]);return _0x40a83c(_0x17a3a1[_0x6ec4('0x11')]['message']);}logger[_0x6ec4('0x11')](_0x6ec4('0xd'),_0x218fdf,_0x17a3a1[_0x6ec4('0x11')][_0x6ec4('0x13')]);return _0x5e0422(_0x17a3a1['error'][_0x6ec4('0x13')]);}else{logger[_0x6ec4('0x14')](_0x6ec4('0xd'),_0x218fdf,_0x6ec4('0x15'));_0x5e0422(_0x17a3a1[_0x6ec4('0x16')][_0x6ec4('0x13')]);}})[_0x6ec4('0x17')](function(_0x4607e3){logger['error'](_0x6ec4('0xd'),_0x218fdf,_0x4607e3);_0x40a83c(_0x4607e3);});});}
\ No newline at end of file
+var _0x2c3e=['randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0x4e6b42,_0x26e379){var _0x4a7e3c=function(_0x3047f8){while(--_0x3047f8){_0x4e6b42['push'](_0x4e6b42['shift']());}};_0x4a7e3c(++_0x26e379);}(_0x2c3e,0x150));var _0xe2c3=function(_0x4851ff,_0x1c9a8d){_0x4851ff=_0x4851ff-0x0;var _0x26773b=_0x2c3e[_0x4851ff];return _0x26773b;};'use strict';var _=require(_0xe2c3('0x0'));var util=require(_0xe2c3('0x1'));var moment=require(_0xe2c3('0x2'));var BPromise=require(_0xe2c3('0x3'));var rs=require(_0xe2c3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe2c3('0x5'));var logger=require('../../config/logger')(_0xe2c3('0x6'));var config=require(_0xe2c3('0x7'));var jayson=require(_0xe2c3('0x8'));var client=jayson[_0xe2c3('0x9')][_0xe2c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283f11,_0x4b01d2,_0x3bb428){return new BPromise(function(_0x1c3a7b,_0x5f5249){return client[_0xe2c3('0xb')](_0x283f11,_0x3bb428)[_0xe2c3('0xc')](function(_0x46d317){logger['info'](_0xe2c3('0xd'),_0x4b01d2,_0xe2c3('0xe'));logger['debug'](_0xe2c3('0xf'),_0x4b01d2,'request\x20sent',JSON['stringify'](_0x46d317));if(_0x46d317[_0xe2c3('0x10')]){if(_0x46d317['error'][_0xe2c3('0x11')]===0x1f4){logger[_0xe2c3('0x10')](_0xe2c3('0xd'),_0x4b01d2,_0x46d317[_0xe2c3('0x10')][_0xe2c3('0x12')]);return _0x5f5249(_0x46d317[_0xe2c3('0x10')]['message']);}logger['error'](_0xe2c3('0xd'),_0x4b01d2,_0x46d317[_0xe2c3('0x10')]['message']);return _0x1c3a7b(_0x46d317[_0xe2c3('0x10')][_0xe2c3('0x12')]);}else{logger['info'](_0xe2c3('0xd'),_0x4b01d2,_0xe2c3('0xe'));_0x1c3a7b(_0x46d317['result'][_0xe2c3('0x12')]);}})[_0xe2c3('0x13')](function(_0x4ab18d){logger['error'](_0xe2c3('0xd'),_0x4b01d2,_0x4ab18d);_0x5f5249(_0x4ab18d);});});}
\ No newline at end of file
index 8fd6678..d2a6111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdcd=['./intVtigerField.controller','isAuthenticated','index','show','post','create','/:id','delete','destroy','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x11f249,_0x4ca4a8){var _0x5c3656=function(_0x27c9f8){while(--_0x27c9f8){_0x11f249['push'](_0x11f249['shift']());}};_0x5c3656(++_0x4ca4a8);}(_0xcdcd,0x189));var _0xdcdc=function(_0x38aa04,_0x2c8039){_0x38aa04=_0x38aa04-0x0;var _0x39bb22=_0xcdcd[_0x38aa04];return _0x39bb22;};'use strict';var multer=require('multer');var util=require(_0xdcdc('0x0'));var path=require('path');var timeout=require(_0xdcdc('0x1'));var express=require(_0xdcdc('0x2'));var router=express[_0xdcdc('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdcdc('0x4'));var interaction=require(_0xdcdc('0x5'));var config=require(_0xdcdc('0x6'));var controller=require(_0xdcdc('0x7'));router['get']('/',auth[_0xdcdc('0x8')](),controller[_0xdcdc('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdcdc('0xa')]);router[_0xdcdc('0xb')]('/',auth[_0xdcdc('0x8')](),controller[_0xdcdc('0xc')]);router['put'](_0xdcdc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xdcdc('0xe')](_0xdcdc('0xd'),auth['isAuthenticated'](),controller[_0xdcdc('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x6641=['create','put','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerField.controller','get','isAuthenticated','/:id','post'];(function(_0x13ac10,_0x46e79e){var _0x28eda2=function(_0x169ef0){while(--_0x169ef0){_0x13ac10['push'](_0x13ac10['shift']());}};_0x28eda2(++_0x46e79e);}(_0x6641,0xb4));var _0x1664=function(_0x2175b3,_0x4d7d8c){_0x2175b3=_0x2175b3-0x0;var _0x4cc295=_0x6641[_0x2175b3];return _0x4cc295;};'use strict';var multer=require(_0x1664('0x0'));var util=require(_0x1664('0x1'));var path=require('path');var timeout=require(_0x1664('0x2'));var express=require('express');var router=express[_0x1664('0x3')]();var fs_extra=require(_0x1664('0x4'));var auth=require(_0x1664('0x5'));var interaction=require(_0x1664('0x6'));var config=require('../../config/environment');var controller=require(_0x1664('0x7'));router[_0x1664('0x8')]('/',auth[_0x1664('0x9')](),controller['index']);router['get'](_0x1664('0xa'),auth[_0x1664('0x9')](),controller['show']);router[_0x1664('0xb')]('/',auth[_0x1664('0x9')](),controller[_0x1664('0xc')]);router[_0x1664('0xd')](_0x1664('0xa'),auth[_0x1664('0x9')](),controller['update']);router[_0x1664('0xe')](_0x1664('0xa'),auth[_0x1664('0x9')](),controller['destroy']);module[_0x1664('0xf')]=router;
\ No newline at end of file
index da61b8c..296bc6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544e=['string','variable','customVariable','keyValue','STRING','sequelize','exports','ENUM'];(function(_0x529c58,_0x5040d0){var _0x5ad8d8=function(_0x571785){while(--_0x571785){_0x529c58['push'](_0x529c58['shift']());}};_0x5ad8d8(++_0x5040d0);}(_0x544e,0xb5));var _0xe544=function(_0x254aea,_0x21fe07){_0x254aea=_0x254aea-0x0;var _0x36e4f3=_0x544e[_0x254aea];return _0x36e4f3;};'use strict';var Sequelize=require(_0xe544('0x0'));module[_0xe544('0x1')]={'type':{'type':Sequelize[_0xe544('0x2')](_0xe544('0x3'),_0xe544('0x4'),_0xe544('0x5'),_0xe544('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xe544('0x3'),_0xe544('0x4'),_0xe544('0x5'))},'keyContent':{'type':Sequelize[_0xe544('0x7')]},'idField':{'type':Sequelize[_0xe544('0x7')]},'nameField':{'type':Sequelize[_0xe544('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe544('0x7')]}};
\ No newline at end of file
+var _0x9c3a=['ENUM','BOOLEAN','sequelize','string','variable','customVariable','picklist','STRING'];(function(_0x575282,_0x314972){var _0x4f057f=function(_0x53889c){while(--_0x53889c){_0x575282['push'](_0x575282['shift']());}};_0x4f057f(++_0x314972);}(_0x9c3a,0x1b2));var _0xa9c3=function(_0x234348,_0x1945de){_0x234348=_0x234348-0x0;var _0x1ba10a=_0x9c3a[_0x234348];return _0x1ba10a;};'use strict';var Sequelize=require(_0xa9c3('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xa9c3('0x1'),_0xa9c3('0x2'),_0xa9c3('0x3'),'keyValue',_0xa9c3('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xa9c3('0x5')]},'key':{'type':Sequelize[_0xa9c3('0x5')]},'keyType':{'type':Sequelize[_0xa9c3('0x6')]('string',_0xa9c3('0x2'),_0xa9c3('0x3'))},'keyContent':{'type':Sequelize[_0xa9c3('0x5')]},'idField':{'type':Sequelize[_0xa9c3('0x5')]},'nameField':{'type':Sequelize[_0xa9c3('0x5')]},'customField':{'type':Sequelize[_0xa9c3('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 065625e..c3db39e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d8=['Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x27d8,0x111));var _0x827d=function(_0x3e478c,_0x152670){_0x3e478c=_0x3e478c-0x0;var _0x29ef89=_0x27d8[_0x3e478c];return _0x29ef89;};'use strict';var emlformat=require(_0x827d('0x0'));var rimraf=require(_0x827d('0x1'));var zipdir=require(_0x827d('0x2'));var jsonpatch=require(_0x827d('0x3'));var rp=require('request-promise');var moment=require(_0x827d('0x4'));var BPromise=require(_0x827d('0x5'));var Mustache=require('mustache');var util=require(_0x827d('0x6'));var path=require(_0x827d('0x7'));var sox=require('sox');var csv=require(_0x827d('0x8'));var ejs=require(_0x827d('0x9'));var fs=require('fs');var fs_extra=require(_0x827d('0xa'));var _=require('lodash');var squel=require(_0x827d('0xb'));var crypto=require(_0x827d('0xc'));var jsforce=require(_0x827d('0xd'));var deskjs=require(_0x827d('0xe'));var toCsv=require(_0x827d('0x8'));var querystring=require(_0x827d('0xf'));var Papa=require(_0x827d('0x10'));var Redis=require(_0x827d('0x11'));var authService=require(_0x827d('0x12'));var qs=require(_0x827d('0x13'));var as=require(_0x827d('0x14'));var hardwareService=require(_0x827d('0x15'));var logger=require('../../config/logger')(_0x827d('0x16'));var utils=require(_0x827d('0x17'));var config=require(_0x827d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x827d('0x19'))['db'];function respondWithStatusCode(_0x25490d,_0x39019f){_0x39019f=_0x39019f||0xcc;return function(_0x4d268a){if(_0x4d268a){return _0x25490d[_0x827d('0x1a')](_0x39019f);}return _0x25490d[_0x827d('0x1b')](_0x39019f)[_0x827d('0x1c')]();};}function respondWithResult(_0x40d7a1,_0x118609){_0x118609=_0x118609||0xc8;return function(_0x2064e9){if(_0x2064e9){return _0x40d7a1[_0x827d('0x1b')](_0x118609)[_0x827d('0x1d')](_0x2064e9);}};}function respondWithFilteredResult(_0x49f8cd,_0x11e98c){return function(_0x515378){if(_0x515378){var _0x47e0ad=typeof _0x11e98c[_0x827d('0x1e')]===_0x827d('0x1f')&&typeof _0x11e98c[_0x827d('0x20')]===_0x827d('0x1f');var _0x12473f=_0x515378[_0x827d('0x21')];var _0x5b7f8d=_0x47e0ad?0x0:_0x11e98c[_0x827d('0x1e')];var _0x5cf908=_0x47e0ad?_0x515378['count']:_0x11e98c[_0x827d('0x1e')]+_0x11e98c[_0x827d('0x20')];var _0x536a6a;if(_0x5cf908>=_0x12473f){_0x5cf908=_0x12473f;_0x536a6a=0xc8;}else{_0x536a6a=0xce;}_0x49f8cd[_0x827d('0x1b')](_0x536a6a);return _0x49f8cd[_0x827d('0x22')](_0x827d('0x23'),_0x5b7f8d+'-'+_0x5cf908+'/'+_0x12473f)['json'](_0x515378);}return null;};}function patchUpdates(_0x1662f6){return function(_0x45b3ba){try{jsonpatch['apply'](_0x45b3ba,_0x1662f6,!![]);}catch(_0x1270d1){return BPromise[_0x827d('0x24')](_0x1270d1);}return _0x45b3ba[_0x827d('0x25')]();};}function saveUpdates(_0x5457c8,_0x2ea432){return function(_0x34fffd){if(_0x34fffd){return _0x34fffd[_0x827d('0x26')](_0x5457c8)[_0x827d('0x27')](function(_0x322dbb){return _0x322dbb;});}return null;};}function removeEntity(_0x3031e9,_0x267d9d){return function(_0x569de9){if(_0x569de9){return _0x569de9[_0x827d('0x28')]()[_0x827d('0x27')](function(){_0x3031e9[_0x827d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c9e3c,_0x151a62){return function(_0x1c5977){if(!_0x1c5977){_0x5c9e3c['sendStatus'](0x194);}return _0x1c5977;};}function handleError(_0x412c8e,_0x10bd0a){_0x10bd0a=_0x10bd0a||0x1f4;return function(_0x23c839){logger[_0x827d('0x29')](_0x23c839[_0x827d('0x2a')]);if(_0x23c839[_0x827d('0x2b')]){delete _0x23c839[_0x827d('0x2b')];}_0x412c8e[_0x827d('0x1b')](_0x10bd0a)[_0x827d('0x2c')](_0x23c839);};}exports[_0x827d('0x2d')]=function(_0x3124d3,_0x3589b2){var _0x270f98={},_0x5ddc5f={},_0xc4b2f5={'count':0x0,'rows':[]};var _0x3313eb=_[_0x827d('0x2e')](db[_0x827d('0x2f')][_0x827d('0x30')],function(_0x383ae3){return{'name':_0x383ae3[_0x827d('0x31')],'type':_0x383ae3[_0x827d('0x32')][_0x827d('0x33')]};});_0x5ddc5f[_0x827d('0x34')]=_[_0x827d('0x2e')](_0x3313eb,_0x827d('0x2b'));_0x5ddc5f[_0x827d('0x35')]=_[_0x827d('0x36')](_0x3124d3['query']);_0x5ddc5f['filters']=_[_0x827d('0x37')](_0x5ddc5f['model'],_0x5ddc5f['query']);_0x270f98[_0x827d('0x38')]=_['intersection'](_0x5ddc5f[_0x827d('0x34')],qs[_0x827d('0x39')](_0x3124d3[_0x827d('0x35')][_0x827d('0x39')]));_0x270f98[_0x827d('0x38')]=_0x270f98['attributes'][_0x827d('0x3a')]?_0x270f98['attributes']:_0x5ddc5f[_0x827d('0x34')];if(!_0x3124d3[_0x827d('0x35')][_0x827d('0x3b')](_0x827d('0x3c'))){_0x270f98[_0x827d('0x20')]=qs['limit'](_0x3124d3[_0x827d('0x35')][_0x827d('0x20')]);_0x270f98['offset']=qs[_0x827d('0x1e')](_0x3124d3[_0x827d('0x35')][_0x827d('0x1e')]);}_0x270f98['order']=qs[_0x827d('0x3d')](_0x3124d3[_0x827d('0x35')][_0x827d('0x3d')]);_0x270f98[_0x827d('0x3e')]=qs['filters'](_['pick'](_0x3124d3['query'],_0x5ddc5f[_0x827d('0x3f')]),_0x3313eb);if(_0x3124d3[_0x827d('0x35')]['filter']){_0x270f98[_0x827d('0x3e')]=_[_0x827d('0x40')](_0x270f98['where'],{'$or':_[_0x827d('0x2e')](_0x3313eb,function(_0x5dbba1){if(_0x5dbba1[_0x827d('0x32')]!==_0x827d('0x41')){var _0x5c5d24={};_0x5c5d24[_0x5dbba1[_0x827d('0x2b')]]={'$like':'%'+_0x3124d3[_0x827d('0x35')]['filter']+'%'};return _0x5c5d24;}})});}_0x270f98=_[_0x827d('0x40')]({},_0x270f98,_0x3124d3[_0x827d('0x42')]);var _0x4e6a52={'where':_0x270f98[_0x827d('0x3e')]};return db[_0x827d('0x2f')][_0x827d('0x21')](_0x4e6a52)[_0x827d('0x27')](function(_0xcd80d0){_0xc4b2f5[_0x827d('0x21')]=_0xcd80d0;if(_0x3124d3[_0x827d('0x35')][_0x827d('0x43')]){_0x270f98[_0x827d('0x44')]=[{'all':!![]}];}return db[_0x827d('0x2f')][_0x827d('0x45')](_0x270f98);})['then'](function(_0x40ac1d){_0xc4b2f5[_0x827d('0x46')]=_0x40ac1d;return _0xc4b2f5;})[_0x827d('0x27')](respondWithFilteredResult(_0x3589b2,_0x270f98))[_0x827d('0x47')](handleError(_0x3589b2,null));};exports[_0x827d('0x48')]=function(_0x5229cb,_0x4bcde6){var _0x3723ad={'raw':!![],'where':{'id':_0x5229cb['params']['id']}},_0x3beda6={};_0x3beda6[_0x827d('0x34')]=_[_0x827d('0x36')](db['VtigerField'][_0x827d('0x30')]);_0x3beda6['query']=_[_0x827d('0x36')](_0x5229cb[_0x827d('0x35')]);_0x3beda6[_0x827d('0x3f')]=_[_0x827d('0x37')](_0x3beda6[_0x827d('0x34')],_0x3beda6[_0x827d('0x35')]);_0x3723ad['attributes']=_['intersection'](_0x3beda6[_0x827d('0x34')],qs['fields'](_0x5229cb['query'][_0x827d('0x39')]));_0x3723ad[_0x827d('0x38')]=_0x3723ad[_0x827d('0x38')][_0x827d('0x3a')]?_0x3723ad[_0x827d('0x38')]:_0x3beda6['model'];if(_0x5229cb['query']['includeAll']){_0x3723ad[_0x827d('0x44')]=[{'all':!![]}];}_0x3723ad=_['merge']({},_0x3723ad,_0x5229cb['options']);return db[_0x827d('0x2f')][_0x827d('0x49')](_0x3723ad)['then'](handleEntityNotFound(_0x4bcde6,null))[_0x827d('0x27')](respondWithResult(_0x4bcde6,null))['catch'](handleError(_0x4bcde6,null));};exports[_0x827d('0x4a')]=function(_0x28462d,_0x9bd0c2){return db['VtigerField'][_0x827d('0x4a')](_0x28462d['body'],{})[_0x827d('0x27')](respondWithResult(_0x9bd0c2,0xc9))[_0x827d('0x47')](handleError(_0x9bd0c2,null));};exports[_0x827d('0x26')]=function(_0x4e9907,_0x2ad18a){if(_0x4e9907['body']['id']){delete _0x4e9907[_0x827d('0x4b')]['id'];}return db[_0x827d('0x2f')]['find']({'where':{'id':_0x4e9907['params']['id']}})[_0x827d('0x27')](handleEntityNotFound(_0x2ad18a,null))[_0x827d('0x27')](saveUpdates(_0x4e9907[_0x827d('0x4b')],null))[_0x827d('0x27')](respondWithResult(_0x2ad18a,null))[_0x827d('0x47')](handleError(_0x2ad18a,null));};exports[_0x827d('0x28')]=function(_0x39aa7f,_0x5f1de0){return db[_0x827d('0x2f')][_0x827d('0x49')]({'where':{'id':_0x39aa7f[_0x827d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f1de0,null))[_0x827d('0x27')](removeEntity(_0x5f1de0,null))['catch'](handleError(_0x5f1de0,null));};
\ No newline at end of file
+var _0x313e=['key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','update','then','destroy','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type'];(function(_0xb3b095,_0x16fa62){var _0x3e592e=function(_0x396760){while(--_0x396760){_0xb3b095['push'](_0xb3b095['shift']());}};_0x3e592e(++_0x16fa62);}(_0x313e,0xf5));var _0xe313=function(_0x43d106,_0x96a475){_0x43d106=_0x43d106-0x0;var _0x2160bc=_0x313e[_0x43d106];return _0x2160bc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe313('0x0'));var zipdir=require(_0xe313('0x1'));var jsonpatch=require(_0xe313('0x2'));var rp=require(_0xe313('0x3'));var moment=require(_0xe313('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe313('0x5'));var util=require(_0xe313('0x6'));var path=require(_0xe313('0x7'));var sox=require(_0xe313('0x8'));var csv=require(_0xe313('0x9'));var ejs=require(_0xe313('0xa'));var fs=require('fs');var fs_extra=require(_0xe313('0xb'));var _=require('lodash');var squel=require(_0xe313('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe313('0xd'));var toCsv=require(_0xe313('0x9'));var querystring=require(_0xe313('0xe'));var Papa=require('papaparse');var Redis=require(_0xe313('0xf'));var authService=require(_0xe313('0x10'));var qs=require(_0xe313('0x11'));var as=require(_0xe313('0x12'));var hardwareService=require(_0xe313('0x13'));var logger=require('../../config/logger')(_0xe313('0x14'));var utils=require(_0xe313('0x15'));var config=require(_0xe313('0x16'));var licenseUtil=require(_0xe313('0x17'));var db=require(_0xe313('0x18'))['db'];function respondWithStatusCode(_0x3eb796,_0x297bab){_0x297bab=_0x297bab||0xcc;return function(_0x15ad08){if(_0x15ad08){return _0x3eb796[_0xe313('0x19')](_0x297bab);}return _0x3eb796[_0xe313('0x1a')](_0x297bab)[_0xe313('0x1b')]();};}function respondWithResult(_0x5f3d48,_0x5f068b){_0x5f068b=_0x5f068b||0xc8;return function(_0x370d7c){if(_0x370d7c){return _0x5f3d48[_0xe313('0x1a')](_0x5f068b)[_0xe313('0x1c')](_0x370d7c);}};}function respondWithFilteredResult(_0x4d672f,_0x291981){return function(_0x48199c){if(_0x48199c){var _0xf96ade=typeof _0x291981['offset']===_0xe313('0x1d')&&typeof _0x291981[_0xe313('0x1e')]===_0xe313('0x1d');var _0x1aa245=_0x48199c[_0xe313('0x1f')];var _0x1be699=_0xf96ade?0x0:_0x291981['offset'];var _0x168a75=_0xf96ade?_0x48199c[_0xe313('0x1f')]:_0x291981[_0xe313('0x20')]+_0x291981['limit'];var _0xa942f4;if(_0x168a75>=_0x1aa245){_0x168a75=_0x1aa245;_0xa942f4=0xc8;}else{_0xa942f4=0xce;}_0x4d672f[_0xe313('0x1a')](_0xa942f4);return _0x4d672f[_0xe313('0x21')]('Content-Range',_0x1be699+'-'+_0x168a75+'/'+_0x1aa245)[_0xe313('0x1c')](_0x48199c);}return null;};}function patchUpdates(_0x2b7643){return function(_0x22b188){try{jsonpatch['apply'](_0x22b188,_0x2b7643,!![]);}catch(_0x4135c4){return BPromise[_0xe313('0x22')](_0x4135c4);}return _0x22b188['save']();};}function saveUpdates(_0x148a93,_0x14b255){return function(_0x3e3cd6){if(_0x3e3cd6){return _0x3e3cd6[_0xe313('0x23')](_0x148a93)[_0xe313('0x24')](function(_0xb60dbc){return _0xb60dbc;});}return null;};}function removeEntity(_0x30e327,_0x3270ec){return function(_0xa00ed8){if(_0xa00ed8){return _0xa00ed8[_0xe313('0x25')]()['then'](function(){_0x30e327[_0xe313('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58771a,_0x3a47dd){return function(_0xf8f503){if(!_0xf8f503){_0x58771a[_0xe313('0x19')](0x194);}return _0xf8f503;};}function handleError(_0x3355eb,_0x5eb29d){_0x5eb29d=_0x5eb29d||0x1f4;return function(_0x138ab3){logger['error'](_0x138ab3[_0xe313('0x26')]);if(_0x138ab3[_0xe313('0x27')]){delete _0x138ab3[_0xe313('0x27')];}_0x3355eb['status'](_0x5eb29d)[_0xe313('0x28')](_0x138ab3);};}exports[_0xe313('0x29')]=function(_0x41248c,_0x2a4621){var _0x56bfab={},_0x37cd84={},_0x275cdd={'count':0x0,'rows':[]};var _0x2bb2ac=_[_0xe313('0x2a')](db[_0xe313('0x2b')][_0xe313('0x2c')],function(_0x2032cf){return{'name':_0x2032cf[_0xe313('0x2d')],'type':_0x2032cf[_0xe313('0x2e')][_0xe313('0x2f')]};});_0x37cd84['model']=_[_0xe313('0x2a')](_0x2bb2ac,_0xe313('0x27'));_0x37cd84[_0xe313('0x30')]=_[_0xe313('0x31')](_0x41248c[_0xe313('0x30')]);_0x37cd84[_0xe313('0x32')]=_['intersection'](_0x37cd84[_0xe313('0x33')],_0x37cd84['query']);_0x56bfab[_0xe313('0x34')]=_[_0xe313('0x35')](_0x37cd84['model'],qs[_0xe313('0x36')](_0x41248c[_0xe313('0x30')]['fields']));_0x56bfab[_0xe313('0x34')]=_0x56bfab[_0xe313('0x34')]['length']?_0x56bfab[_0xe313('0x34')]:_0x37cd84['model'];if(!_0x41248c['query'][_0xe313('0x37')](_0xe313('0x38'))){_0x56bfab[_0xe313('0x1e')]=qs[_0xe313('0x1e')](_0x41248c['query'][_0xe313('0x1e')]);_0x56bfab[_0xe313('0x20')]=qs['offset'](_0x41248c[_0xe313('0x30')][_0xe313('0x20')]);}_0x56bfab['order']=qs[_0xe313('0x39')](_0x41248c[_0xe313('0x30')][_0xe313('0x39')]);_0x56bfab['where']=qs[_0xe313('0x32')](_[_0xe313('0x3a')](_0x41248c[_0xe313('0x30')],_0x37cd84[_0xe313('0x32')]),_0x2bb2ac);if(_0x41248c[_0xe313('0x30')][_0xe313('0x3b')]){_0x56bfab[_0xe313('0x3c')]=_[_0xe313('0x3d')](_0x56bfab[_0xe313('0x3c')],{'$or':_[_0xe313('0x2a')](_0x2bb2ac,function(_0x564cb4){if(_0x564cb4[_0xe313('0x2e')]!==_0xe313('0x3e')){var _0x1eed79={};_0x1eed79[_0x564cb4['name']]={'$like':'%'+_0x41248c['query'][_0xe313('0x3b')]+'%'};return _0x1eed79;}})});}_0x56bfab=_[_0xe313('0x3d')]({},_0x56bfab,_0x41248c[_0xe313('0x3f')]);var _0x531994={'where':_0x56bfab['where']};return db[_0xe313('0x2b')][_0xe313('0x1f')](_0x531994)[_0xe313('0x24')](function(_0x3331cd){_0x275cdd[_0xe313('0x1f')]=_0x3331cd;if(_0x41248c['query'][_0xe313('0x40')]){_0x56bfab[_0xe313('0x41')]=[{'all':!![]}];}return db[_0xe313('0x2b')]['findAll'](_0x56bfab);})['then'](function(_0x188634){_0x275cdd[_0xe313('0x42')]=_0x188634;return _0x275cdd;})[_0xe313('0x24')](respondWithFilteredResult(_0x2a4621,_0x56bfab))[_0xe313('0x43')](handleError(_0x2a4621,null));};exports[_0xe313('0x44')]=function(_0x5be4a0,_0x52c2c6){var _0x16fed2={'raw':!![],'where':{'id':_0x5be4a0[_0xe313('0x45')]['id']}},_0x138dd2={};_0x138dd2[_0xe313('0x33')]=_['keys'](db[_0xe313('0x2b')][_0xe313('0x2c')]);_0x138dd2[_0xe313('0x30')]=_[_0xe313('0x31')](_0x5be4a0[_0xe313('0x30')]);_0x138dd2['filters']=_['intersection'](_0x138dd2[_0xe313('0x33')],_0x138dd2[_0xe313('0x30')]);_0x16fed2['attributes']=_[_0xe313('0x35')](_0x138dd2[_0xe313('0x33')],qs['fields'](_0x5be4a0[_0xe313('0x30')][_0xe313('0x36')]));_0x16fed2[_0xe313('0x34')]=_0x16fed2[_0xe313('0x34')]['length']?_0x16fed2['attributes']:_0x138dd2[_0xe313('0x33')];if(_0x5be4a0[_0xe313('0x30')][_0xe313('0x40')]){_0x16fed2[_0xe313('0x41')]=[{'all':!![]}];}_0x16fed2=_[_0xe313('0x3d')]({},_0x16fed2,_0x5be4a0['options']);return db['VtigerField'][_0xe313('0x46')](_0x16fed2)[_0xe313('0x24')](handleEntityNotFound(_0x52c2c6,null))[_0xe313('0x24')](respondWithResult(_0x52c2c6,null))[_0xe313('0x43')](handleError(_0x52c2c6,null));};exports[_0xe313('0x47')]=function(_0xbfa760,_0x2bdd54){return db[_0xe313('0x2b')][_0xe313('0x47')](_0xbfa760[_0xe313('0x48')],{})['then'](respondWithResult(_0x2bdd54,0xc9))[_0xe313('0x43')](handleError(_0x2bdd54,null));};exports[_0xe313('0x23')]=function(_0x3f67dd,_0x5056ce){if(_0x3f67dd[_0xe313('0x48')]['id']){delete _0x3f67dd['body']['id'];}return db[_0xe313('0x2b')][_0xe313('0x46')]({'where':{'id':_0x3f67dd['params']['id']}})[_0xe313('0x24')](handleEntityNotFound(_0x5056ce,null))[_0xe313('0x24')](saveUpdates(_0x3f67dd[_0xe313('0x48')],null))[_0xe313('0x24')](respondWithResult(_0x5056ce,null))[_0xe313('0x43')](handleError(_0x5056ce,null));};exports['destroy']=function(_0x2bb365,_0x3634ca){return db[_0xe313('0x2b')]['find']({'where':{'id':_0x2bb365[_0xe313('0x45')]['id']}})[_0xe313('0x24')](handleEntityNotFound(_0x3634ca,null))[_0xe313('0x24')](removeEntity(_0x3634ca,null))[_0xe313('0x43')](handleError(_0x3634ca,null));};
\ No newline at end of file
index affa118..a53fbd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa99a=['define','VtigerField','int_vtiger_fields','idField','FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes'];(function(_0x3f3bad,_0x193f06){var _0x4f0801=function(_0x5cfd32){while(--_0x5cfd32){_0x3f3bad['push'](_0x3f3bad['shift']());}};_0x4f0801(++_0x193f06);}(_0xa99a,0x11d));var _0xaa99=function(_0x291f0c,_0x526ee5){_0x291f0c=_0x291f0c-0x0;var _0x46eb84=_0xa99a[_0x291f0c];return _0x46eb84;};'use strict';var _=require(_0xaa99('0x0'));var util=require('util');var logger=require(_0xaa99('0x1'))(_0xaa99('0x2'));var moment=require(_0xaa99('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa99('0x4'));var fs=require('fs');var path=require(_0xaa99('0x5'));var rimraf=require(_0xaa99('0x6'));var config=require(_0xaa99('0x7'));var attributes=require(_0xaa99('0x8'));module['exports']=function(_0x172b47,_0x46a944){return _0x172b47[_0xaa99('0x9')](_0xaa99('0xa'),attributes,{'tableName':_0xaa99('0xb'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xaa99('0xc'),_0xaa99('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8333=['vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./intVtigerField.attributes','exports','define','int_vtiger_fields'];(function(_0x3f8353,_0x493caa){var _0x513881=function(_0x2dbd42){while(--_0x2dbd42){_0x3f8353['push'](_0x3f8353['shift']());}};_0x513881(++_0x493caa);}(_0x8333,0xa8));var _0x3833=function(_0x3fd2db,_0x2a6473){_0x3fd2db=_0x3fd2db-0x0;var _0x494b98=_0x8333[_0x3fd2db];return _0x494b98;};'use strict';var _=require(_0x3833('0x0'));var util=require(_0x3833('0x1'));var logger=require(_0x3833('0x2'))('api');var moment=require(_0x3833('0x3'));var BPromise=require(_0x3833('0x4'));var rp=require(_0x3833('0x5'));var fs=require('fs');var path=require(_0x3833('0x6'));var rimraf=require(_0x3833('0x7'));var config=require('../../config/environment');var attributes=require(_0x3833('0x8'));module[_0x3833('0x9')]=function(_0x4502be,_0x47d638){return _0x4502be[_0x3833('0xa')]('VtigerField',attributes,{'tableName':_0x3833('0xb'),'paranoid':![],'indexes':[{'name':_0x3833('0xc'),'fields':[_0x3833('0xd'),_0x3833('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fbf1a13..5ea4d99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ff=['client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x280cb3,_0x155729){var _0x297cea=function(_0x796676){while(--_0x796676){_0x280cb3['push'](_0x280cb3['shift']());}};_0x297cea(++_0x155729);}(_0x31ff,0xd3));var _0xf31f=function(_0x2fbc48,_0x14e997){_0x2fbc48=_0x2fbc48-0x0;var _0x1dd872=_0x31ff[_0x2fbc48];return _0x1dd872;};'use strict';var _=require(_0xf31f('0x0'));var util=require(_0xf31f('0x1'));var moment=require(_0xf31f('0x2'));var BPromise=require(_0xf31f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf31f('0x4'))['db'];var utils=require(_0xf31f('0x5'));var logger=require(_0xf31f('0x6'))('rpc');var config=require(_0xf31f('0x7'));var jayson=require(_0xf31f('0x8'));var client=jayson[_0xf31f('0x9')][_0xf31f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xca0680,_0x2f9393,_0x2b8cb7){return new BPromise(function(_0x93dd82,_0x2e6f90){return client[_0xf31f('0xb')](_0xca0680,_0x2b8cb7)[_0xf31f('0xc')](function(_0x2b3201){logger[_0xf31f('0xd')](_0xf31f('0xe'),_0x2f9393,_0xf31f('0xf'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x2f9393,_0xf31f('0xf'),JSON[_0xf31f('0x10')](_0x2b3201));if(_0x2b3201[_0xf31f('0x11')]){if(_0x2b3201[_0xf31f('0x11')][_0xf31f('0x12')]===0x1f4){logger[_0xf31f('0x11')]('VtigerField,\x20%s,\x20%s',_0x2f9393,_0x2b3201[_0xf31f('0x11')][_0xf31f('0x13')]);return _0x2e6f90(_0x2b3201[_0xf31f('0x11')]['message']);}logger[_0xf31f('0x11')](_0xf31f('0xe'),_0x2f9393,_0x2b3201['error']['message']);return _0x93dd82(_0x2b3201['error']['message']);}else{logger[_0xf31f('0xd')](_0xf31f('0xe'),_0x2f9393,'request\x20sent');_0x93dd82(_0x2b3201['result'][_0xf31f('0x13')]);}})['catch'](function(_0x1d75a9){logger['error'](_0xf31f('0xe'),_0x2f9393,_0x1d75a9);_0x2e6f90(_0x1d75a9);});});}
\ No newline at end of file
+var _0x3785=['rpc','jayson/promise','client','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x3785,0x1f1));var _0x5378=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x3785[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x5378('0x0'));var util=require('util');var moment=require(_0x5378('0x1'));var BPromise=require(_0x5378('0x2'));var rs=require(_0x5378('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5378('0x4'))['db'];var utils=require(_0x5378('0x5'));var logger=require(_0x5378('0x6'))(_0x5378('0x7'));var config=require('../../config/environment');var jayson=require(_0x5378('0x8'));var client=jayson[_0x5378('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3472e6,_0x4ec8d0,_0x51be6e){return new BPromise(function(_0x24664e,_0x156917){return client['request'](_0x3472e6,_0x51be6e)[_0x5378('0xa')](function(_0x294484){logger['info'](_0x5378('0xb'),_0x4ec8d0,_0x5378('0xc'));logger[_0x5378('0xd')](_0x5378('0xe'),_0x4ec8d0,'request\x20sent',JSON[_0x5378('0xf')](_0x294484));if(_0x294484[_0x5378('0x10')]){if(_0x294484[_0x5378('0x10')][_0x5378('0x11')]===0x1f4){logger['error'](_0x5378('0xb'),_0x4ec8d0,_0x294484['error']['message']);return _0x156917(_0x294484[_0x5378('0x10')][_0x5378('0x12')]);}logger['error'](_0x5378('0xb'),_0x4ec8d0,_0x294484['error'][_0x5378('0x12')]);return _0x24664e(_0x294484[_0x5378('0x10')][_0x5378('0x12')]);}else{logger[_0x5378('0x13')](_0x5378('0xb'),_0x4ec8d0,'request\x20sent');_0x24664e(_0x294484['result'][_0x5378('0x12')]);}})[_0x5378('0x14')](function(_0x3576a6){logger[_0x5378('0x10')](_0x5378('0xb'),_0x4ec8d0,_0x3576a6);_0x156917(_0x3576a6);});});}
\ No newline at end of file
index fdb138f..d9f7990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7286=['fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','index','show','isAuthenticated','getConfigurations','getFields','create','/:id/configurations','addConfiguration','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express'];(function(_0xf5e19b,_0x5a3305){var _0x17da4b=function(_0x353198){while(--_0x353198){_0xf5e19b['push'](_0xf5e19b['shift']());}};_0x17da4b(++_0x5a3305);}(_0x7286,0xca));var _0x6728=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x7286[_0x49b207];return _0x2dc8fa;};'use strict';var multer=require(_0x6728('0x0'));var util=require(_0x6728('0x1'));var path=require(_0x6728('0x2'));var timeout=require(_0x6728('0x3'));var express=require(_0x6728('0x4'));var router=express['Router']();var fs_extra=require(_0x6728('0x5'));var auth=require(_0x6728('0x6'));var interaction=require(_0x6728('0x7'));var config=require('../../config/environment');var controller=require(_0x6728('0x8'));router[_0x6728('0x9')]('/',auth['isAuthenticated'](),controller[_0x6728('0xa')]);router[_0x6728('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6728('0xb')]);router['get']('/:id/configurations',auth[_0x6728('0xc')](),controller[_0x6728('0xd')]);router[_0x6728('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x6728('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6728('0xf')]);router['post'](_0x6728('0x10'),auth[_0x6728('0xc')](),controller[_0x6728('0x11')]);router[_0x6728('0x12')](_0x6728('0x13'),auth['isAuthenticated'](),controller[_0x6728('0x14')]);router[_0x6728('0x15')](_0x6728('0x13'),auth[_0x6728('0xc')](),controller['destroy']);module[_0x6728('0x16')]=router;
\ No newline at end of file
+var _0x7aba=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','delete','/:id','destroy','multer','util','path','express'];(function(_0x4314de,_0x483aef){var _0x41a4ec=function(_0x2a8d98){while(--_0x2a8d98){_0x4314de['push'](_0x4314de['shift']());}};_0x41a4ec(++_0x483aef);}(_0x7aba,0x1e0));var _0xa7ab=function(_0x226d4c,_0x3e2a2b){_0x226d4c=_0x226d4c-0x0;var _0xc9984e=_0x7aba[_0x226d4c];return _0xc9984e;};'use strict';var multer=require(_0xa7ab('0x0'));var util=require(_0xa7ab('0x1'));var path=require(_0xa7ab('0x2'));var timeout=require('connect-timeout');var express=require(_0xa7ab('0x3'));var router=express[_0xa7ab('0x4')]();var fs_extra=require(_0xa7ab('0x5'));var auth=require(_0xa7ab('0x6'));var interaction=require(_0xa7ab('0x7'));var config=require('../../config/environment');var controller=require(_0xa7ab('0x8'));router[_0xa7ab('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa7ab('0x9')]('/:id',auth[_0xa7ab('0xa')](),controller[_0xa7ab('0xb')]);router[_0xa7ab('0x9')](_0xa7ab('0xc'),auth[_0xa7ab('0xa')](),controller[_0xa7ab('0xd')]);router['get'](_0xa7ab('0xe'),auth['isAuthenticated'](),controller[_0xa7ab('0xf')]);router[_0xa7ab('0x10')]('/',auth[_0xa7ab('0xa')](),controller[_0xa7ab('0x11')]);router[_0xa7ab('0x10')](_0xa7ab('0xc'),auth['isAuthenticated'](),controller[_0xa7ab('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa7ab('0x13')](_0xa7ab('0x14'),auth[_0xa7ab('0xa')](),controller[_0xa7ab('0x15')]);module['exports']=router;
\ No newline at end of file
index 1bfc617..964c722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1410=['password','token','integrationTab','newTab','sequelize','exports','STRING','username','remoteUri','ENUM'];(function(_0x2bc83a,_0xee75f1){var _0xb28a51=function(_0x5dc3ea){while(--_0x5dc3ea){_0x2bc83a['push'](_0x2bc83a['shift']());}};_0xb28a51(++_0xee75f1);}(_0x1410,0x130));var _0x0141=function(_0x2a3f94,_0x4667c3){_0x2a3f94=_0x2a3f94-0x0;var _0x1fbb3b=_0x1410[_0x2a3f94];return _0x1fbb3b;};'use strict';var Sequelize=require(_0x0141('0x0'));module[_0x0141('0x1')]={'name':{'type':Sequelize[_0x0141('0x2')]},'description':{'type':Sequelize[_0x0141('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x0141('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x0141('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x0141('0x4')},'authType':{'type':Sequelize[_0x0141('0x5')](_0x0141('0x6'),_0x0141('0x7')),'defaultValue':_0x0141('0x6')},'serverUrl':{'type':Sequelize[_0x0141('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0141('0x5')](_0x0141('0x8'),_0x0141('0x9')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xd8fb=['exports','STRING','ENUM','password','newTab','integrationTab','sequelize'];(function(_0x4b92b1,_0x51f3f0){var _0x4d54aa=function(_0xb22b4c){while(--_0xb22b4c){_0x4b92b1['push'](_0x4b92b1['shift']());}};_0x4d54aa(++_0x51f3f0);}(_0xd8fb,0x99));var _0xbd8f=function(_0xaa09f1,_0x1f2a0a){_0xaa09f1=_0xaa09f1-0x0;var _0x2a546a=_0xd8fb[_0xaa09f1];return _0x2a546a;};'use strict';var Sequelize=require(_0xbd8f('0x0'));module[_0xbd8f('0x1')]={'name':{'type':Sequelize[_0xbd8f('0x2')]},'description':{'type':Sequelize[_0xbd8f('0x2')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xbd8f('0x2')]},'remoteUri':{'type':Sequelize[_0xbd8f('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xbd8f('0x3')](_0xbd8f('0x4'),'token'),'defaultValue':_0xbd8f('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xbd8f('0x3')]('integrationTab',_0xbd8f('0x5')),'defaultValue':_0xbd8f('0x6')}};
\ No newline at end of file
index f639a49..14f5512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['position','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','catch','params','intersection','options','create','body','find','getConfigurations','findOne','ZendeskConfiguration','length','sort','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','format','%s/%s','Basic\x20%s','%s:%s','headers','%s/token:%s','toString','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0xea67f4,_0x334874){var _0x5812d8=function(_0x547312){while(--_0x547312){_0xea67f4['push'](_0xea67f4['shift']());}};_0x5812d8(++_0x334874);}(_0x2e54,0x1dd));var _0x42e5=function(_0x2b895c,_0x2b39b7){_0x2b895c=_0x2b895c-0x0;var _0x50f201=_0x2e54[_0x2b895c];return _0x50f201;};'use strict';var emlformat=require(_0x42e5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x42e5('0x1'));var rp=require(_0x42e5('0x2'));var moment=require(_0x42e5('0x3'));var BPromise=require(_0x42e5('0x4'));var Mustache=require(_0x42e5('0x5'));var util=require(_0x42e5('0x6'));var path=require(_0x42e5('0x7'));var sox=require('sox');var csv=require(_0x42e5('0x8'));var ejs=require(_0x42e5('0x9'));var fs=require('fs');var fs_extra=require(_0x42e5('0xa'));var _=require('lodash');var squel=require(_0x42e5('0xb'));var crypto=require('crypto');var jsforce=require(_0x42e5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x42e5('0x8'));var querystring=require(_0x42e5('0xd'));var Papa=require(_0x42e5('0xe'));var Redis=require(_0x42e5('0xf'));var authService=require(_0x42e5('0x10'));var qs=require(_0x42e5('0x11'));var as=require(_0x42e5('0x12'));var hardwareService=require(_0x42e5('0x13'));var logger=require(_0x42e5('0x14'))('api');var utils=require(_0x42e5('0x15'));var config=require(_0x42e5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x42e5('0x17'))['db'];var integrations=require(_0x42e5('0x18'));function respondWithStatusCode(_0x4530ba,_0x41598d){_0x41598d=_0x41598d||0xcc;return function(_0x144fb4){if(_0x144fb4){return _0x4530ba[_0x42e5('0x19')](_0x41598d);}return _0x4530ba[_0x42e5('0x1a')](_0x41598d)[_0x42e5('0x1b')]();};}function respondWithResult(_0x447648,_0x23957f){_0x23957f=_0x23957f||0xc8;return function(_0x51b2f4){if(_0x51b2f4){return _0x447648[_0x42e5('0x1a')](_0x23957f)[_0x42e5('0x1c')](_0x51b2f4);}};}function respondWithFilteredResult(_0x4034bd,_0x388300){return function(_0x2f4999){if(_0x2f4999){var _0x263a3d=typeof _0x388300[_0x42e5('0x1d')]===_0x42e5('0x1e')&&typeof _0x388300[_0x42e5('0x1f')]===_0x42e5('0x1e');var _0x22655f=_0x2f4999[_0x42e5('0x20')];var _0x11550e=_0x263a3d?0x0:_0x388300[_0x42e5('0x1d')];var _0x54fcfc=_0x263a3d?_0x2f4999[_0x42e5('0x20')]:_0x388300['offset']+_0x388300['limit'];var _0x14d16d;if(_0x54fcfc>=_0x22655f){_0x54fcfc=_0x22655f;_0x14d16d=0xc8;}else{_0x14d16d=0xce;}_0x4034bd[_0x42e5('0x1a')](_0x14d16d);return _0x4034bd['set'](_0x42e5('0x21'),_0x11550e+'-'+_0x54fcfc+'/'+_0x22655f)[_0x42e5('0x1c')](_0x2f4999);}return null;};}function patchUpdates(_0x1c2169){return function(_0x3fde76){try{jsonpatch[_0x42e5('0x22')](_0x3fde76,_0x1c2169,!![]);}catch(_0xa6825e){return BPromise[_0x42e5('0x23')](_0xa6825e);}return _0x3fde76['save']();};}function saveUpdates(_0x4da508,_0x283d44){return function(_0x52d319){if(_0x52d319){return _0x52d319[_0x42e5('0x24')](_0x4da508)[_0x42e5('0x25')](function(_0x37d10e){return _0x37d10e;});}return null;};}function removeEntity(_0x49490f,_0x32380f){return function(_0x5d6b24){if(_0x5d6b24){return _0x5d6b24[_0x42e5('0x26')]()[_0x42e5('0x25')](function(){_0x49490f[_0x42e5('0x1a')](0xcc)[_0x42e5('0x1b')]();});}};}function handleEntityNotFound(_0x4638bc,_0x4f52b2){return function(_0x4fb147){if(!_0x4fb147){_0x4638bc[_0x42e5('0x19')](0x194);}return _0x4fb147;};}function handleError(_0x534a26,_0x56f812){_0x56f812=_0x56f812||0x1f4;return function(_0x1b60be){logger['error'](_0x1b60be[_0x42e5('0x27')]);if(_0x1b60be[_0x42e5('0x28')]){delete _0x1b60be[_0x42e5('0x28')];}_0x534a26[_0x42e5('0x1a')](_0x56f812)[_0x42e5('0x29')](_0x1b60be);};}exports[_0x42e5('0x2a')]=function(_0x59a46b,_0x3e2ea5){var _0x201d9e={},_0x39f763={},_0x2c53d4={'count':0x0,'rows':[]};var _0x1d22ba=_[_0x42e5('0x2b')](db[_0x42e5('0x2c')][_0x42e5('0x2d')],function(_0x5a4930){return{'name':_0x5a4930[_0x42e5('0x2e')],'type':_0x5a4930[_0x42e5('0x2f')][_0x42e5('0x30')]};});_0x39f763[_0x42e5('0x31')]=_['map'](_0x1d22ba,_0x42e5('0x28'));_0x39f763[_0x42e5('0x32')]=_[_0x42e5('0x33')](_0x59a46b[_0x42e5('0x32')]);_0x39f763['filters']=_['intersection'](_0x39f763[_0x42e5('0x31')],_0x39f763['query']);_0x201d9e[_0x42e5('0x34')]=_['intersection'](_0x39f763[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x59a46b[_0x42e5('0x32')]['fields']));_0x201d9e[_0x42e5('0x34')]=_0x201d9e[_0x42e5('0x34')]['length']?_0x201d9e[_0x42e5('0x34')]:_0x39f763['model'];if(!_0x59a46b[_0x42e5('0x32')][_0x42e5('0x36')](_0x42e5('0x37'))){_0x201d9e[_0x42e5('0x1f')]=qs[_0x42e5('0x1f')](_0x59a46b[_0x42e5('0x32')][_0x42e5('0x1f')]);_0x201d9e['offset']=qs['offset'](_0x59a46b[_0x42e5('0x32')][_0x42e5('0x1d')]);}_0x201d9e[_0x42e5('0x38')]=qs['sort'](_0x59a46b['query']['sort']);_0x201d9e['where']=qs[_0x42e5('0x39')](_[_0x42e5('0x3a')](_0x59a46b[_0x42e5('0x32')],_0x39f763[_0x42e5('0x39')]),_0x1d22ba);if(_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3b')]){_0x201d9e[_0x42e5('0x3c')]=_[_0x42e5('0x3d')](_0x201d9e['where'],{'$or':_[_0x42e5('0x2b')](_0x1d22ba,function(_0x587832){if(_0x587832[_0x42e5('0x2f')]!==_0x42e5('0x3e')){var _0x340caf={};_0x340caf[_0x587832[_0x42e5('0x28')]]={'$like':'%'+_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3b')]+'%'};return _0x340caf;}})});}_0x201d9e=_[_0x42e5('0x3d')]({},_0x201d9e,_0x59a46b['options']);var _0x20f372={'where':_0x201d9e[_0x42e5('0x3c')]};return db['ZendeskAccount'][_0x42e5('0x20')](_0x20f372)['then'](function(_0x53b0bd){_0x2c53d4['count']=_0x53b0bd;if(_0x59a46b[_0x42e5('0x32')][_0x42e5('0x3f')]){_0x201d9e[_0x42e5('0x40')]=[{'all':!![]}];}return db[_0x42e5('0x2c')][_0x42e5('0x41')](_0x201d9e);})[_0x42e5('0x25')](function(_0x1fbde){_0x2c53d4['rows']=_0x1fbde;return _0x2c53d4;})[_0x42e5('0x25')](respondWithFilteredResult(_0x3e2ea5,_0x201d9e))[_0x42e5('0x42')](handleError(_0x3e2ea5,null));};exports['show']=function(_0x398b73,_0x1c697a){var _0x5db771={'raw':![],'where':{'id':_0x398b73[_0x42e5('0x43')]['id']}},_0x33054f={};_0x33054f[_0x42e5('0x31')]=_[_0x42e5('0x33')](db[_0x42e5('0x2c')]['rawAttributes']);_0x33054f[_0x42e5('0x32')]=_[_0x42e5('0x33')](_0x398b73[_0x42e5('0x32')]);_0x33054f[_0x42e5('0x39')]=_['intersection'](_0x33054f[_0x42e5('0x31')],_0x33054f[_0x42e5('0x32')]);_0x5db771[_0x42e5('0x34')]=_[_0x42e5('0x44')](_0x33054f[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x398b73[_0x42e5('0x32')][_0x42e5('0x35')]));_0x5db771['attributes']=_0x5db771[_0x42e5('0x34')]['length']?_0x5db771['attributes']:_0x33054f[_0x42e5('0x31')];if(_0x398b73[_0x42e5('0x32')][_0x42e5('0x3f')]){_0x5db771[_0x42e5('0x40')]=[{'all':!![]}];}_0x5db771=_[_0x42e5('0x3d')]({},_0x5db771,_0x398b73[_0x42e5('0x45')]);return db[_0x42e5('0x2c')]['find'](_0x5db771)[_0x42e5('0x25')](handleEntityNotFound(_0x1c697a,null))[_0x42e5('0x25')](respondWithResult(_0x1c697a,null))[_0x42e5('0x42')](handleError(_0x1c697a,null));};exports[_0x42e5('0x46')]=function(_0x1086b2,_0xc8de4d){return db[_0x42e5('0x2c')][_0x42e5('0x46')](_0x1086b2['body'],{})[_0x42e5('0x25')](respondWithResult(_0xc8de4d,0xc9))[_0x42e5('0x42')](handleError(_0xc8de4d,null));};exports[_0x42e5('0x24')]=function(_0x48757e,_0x2ab52a){if(_0x48757e[_0x42e5('0x47')]['id']){delete _0x48757e[_0x42e5('0x47')]['id'];}return db[_0x42e5('0x2c')][_0x42e5('0x48')]({'where':{'id':_0x48757e['params']['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x2ab52a,null))['then'](saveUpdates(_0x48757e[_0x42e5('0x47')],null))[_0x42e5('0x25')](respondWithResult(_0x2ab52a,null))[_0x42e5('0x42')](handleError(_0x2ab52a,null));};exports['destroy']=function(_0x50f59c,_0x4f0639){return db[_0x42e5('0x2c')][_0x42e5('0x48')]({'where':{'id':_0x50f59c[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x4f0639,null))['then'](removeEntity(_0x4f0639,null))[_0x42e5('0x42')](handleError(_0x4f0639,null));};exports[_0x42e5('0x49')]=function(_0x18cedc,_0x504110,_0x34e169){var _0x5070aa={};var _0x319088={};var _0x2583cd;var _0x53e29b;return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x18cedc[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x504110,null))[_0x42e5('0x25')](function(_0x3f043f){if(_0x3f043f){_0x2583cd=_0x3f043f;_0x319088[_0x42e5('0x31')]=_[_0x42e5('0x33')](db[_0x42e5('0x4b')][_0x42e5('0x2d')]);_0x319088['query']=_[_0x42e5('0x33')](_0x18cedc[_0x42e5('0x32')]);_0x319088[_0x42e5('0x39')]=_[_0x42e5('0x44')](_0x319088[_0x42e5('0x31')],_0x319088['query']);_0x5070aa[_0x42e5('0x34')]=_[_0x42e5('0x44')](_0x319088[_0x42e5('0x31')],qs[_0x42e5('0x35')](_0x18cedc['query']['fields']));_0x5070aa['attributes']=_0x5070aa[_0x42e5('0x34')][_0x42e5('0x4c')]?_0x5070aa['attributes']:_0x319088[_0x42e5('0x31')];_0x5070aa[_0x42e5('0x38')]=qs[_0x42e5('0x4d')](_0x18cedc[_0x42e5('0x32')][_0x42e5('0x4d')]);_0x5070aa[_0x42e5('0x3c')]=qs[_0x42e5('0x39')](_[_0x42e5('0x3a')](_0x18cedc[_0x42e5('0x32')],_0x319088['filters']));if(_0x18cedc[_0x42e5('0x32')]['filter']){_0x5070aa[_0x42e5('0x3c')]=_[_0x42e5('0x3d')](_0x5070aa[_0x42e5('0x3c')],{'$or':_[_0x42e5('0x2b')](_0x5070aa[_0x42e5('0x34')],function(_0x3b46d2){var _0x248cb8={};_0x248cb8[_0x3b46d2]={'$like':'%'+_0x18cedc[_0x42e5('0x32')][_0x42e5('0x3b')]+'%'};return _0x248cb8;})});}_0x5070aa=_[_0x42e5('0x3d')]({},_0x5070aa,_0x18cedc[_0x42e5('0x45')]);return _0x2583cd['getConfigurations'](_0x5070aa);}})[_0x42e5('0x25')](function(_0x4ff58c){if(_0x4ff58c){_0x53e29b=_0x4ff58c[_0x42e5('0x4c')];if(!_0x18cedc['query'][_0x42e5('0x36')](_0x42e5('0x37'))){_0x5070aa['limit']=qs[_0x42e5('0x1f')](_0x18cedc[_0x42e5('0x32')]['limit']);_0x5070aa[_0x42e5('0x1d')]=qs[_0x42e5('0x1d')](_0x18cedc['query'][_0x42e5('0x1d')]);}return _0x2583cd[_0x42e5('0x49')](_0x5070aa);}})[_0x42e5('0x25')](function(_0x57814b){if(_0x57814b){return _0x57814b?{'count':_0x53e29b,'rows':_0x57814b}:null;}})[_0x42e5('0x25')](respondWithResult(_0x504110,null))[_0x42e5('0x42')](handleError(_0x504110,null));};exports[_0x42e5('0x4e')]=function(_0x78394d,_0x57368e,_0x42db50){if(_0x78394d['body']['id']){delete _0x78394d[_0x42e5('0x47')]['id'];}return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x78394d[_0x42e5('0x43')]['id']}})[_0x42e5('0x25')](handleEntityNotFound(_0x57368e,null))[_0x42e5('0x25')](function(_0x15ff42){if(_0x15ff42){_0x78394d['body'][_0x42e5('0x4f')]=_0x15ff42['id'];_0x78394d[_0x42e5('0x47')][_0x42e5('0x50')]=integrations[_0x42e5('0x51')](_0x78394d[_0x42e5('0x47')][_0x42e5('0x52')],_0x78394d[_0x42e5('0x47')][_0x42e5('0x2f')]);_0x78394d[_0x42e5('0x47')]['Descriptions']=integrations[_0x42e5('0x53')](_0x78394d[_0x42e5('0x47')][_0x42e5('0x52')],_0x78394d[_0x42e5('0x47')]['type']);return db[_0x42e5('0x4b')][_0x42e5('0x46')](_0x78394d[_0x42e5('0x47')],{'include':[{'model':db[_0x42e5('0x54')],'as':'Subjects'},{'model':db['ZendeskField'],'as':'Descriptions'}]});}return null;})[_0x42e5('0x25')](respondWithResult(_0x57368e,null))[_0x42e5('0x42')](handleError(_0x57368e,null));};exports[_0x42e5('0x55')]=function(_0x2ce1d4,_0xb198d,_0x14d111){var _0x1cfe79='';return db[_0x42e5('0x2c')][_0x42e5('0x4a')]({'where':{'id':_0x2ce1d4['params']['id']},'attributes':['id',_0x42e5('0x56'),_0x42e5('0x57'),_0x42e5('0x58'),_0x42e5('0x59'),_0x42e5('0x5a')]})[_0x42e5('0x25')](handleEntityNotFound(_0xb198d,null))[_0x42e5('0x25')](function(_0x147613){if(_0x147613){_0x1cfe79=_0x147613['remoteUri'];var _0x548f8a=_0x1cfe79[_0x42e5('0x5b')](-0x1);if(_0x548f8a==='/'){_0x1cfe79=_0x1cfe79[_0x42e5('0x5c')](0x0,_0x1cfe79['lastIndexOf'](_0x548f8a));}var _0x4b9559={'method':'GET','uri':util[_0x42e5('0x5d')](_0x42e5('0x5e'),_0x1cfe79,'ticket_fields'),'json':!![]};switch(_0x147613[_0x42e5('0x59')]){case _0x42e5('0x57'):_0x4b9559['headers']={'Authorization':util[_0x42e5('0x5d')](_0x42e5('0x5f'),new Buffer(util['format'](_0x42e5('0x60'),_0x147613['username'],_0x147613['password']))['toString']('base64'))};break;case _0x42e5('0x58'):_0x4b9559[_0x42e5('0x61')]={'Authorization':util['format'](_0x42e5('0x5f'),new Buffer(util[_0x42e5('0x5d')](_0x42e5('0x62'),_0x147613[_0x42e5('0x56')],_0x147613[_0x42e5('0x58')]))[_0x42e5('0x63')]('base64'))};break;default:throw new db[(_0x42e5('0x64'))][(_0x42e5('0x65'))]('Unknown\x20authentication\x20type');}return rp(_0x4b9559);}})['then'](function(_0x2faf9b){if(_0x2faf9b){var _0xfa822e=[_0x42e5('0x66'),_0x42e5('0x67'),_0x42e5('0x68'),_0x42e5('0x69')];_[_0x42e5('0x6a')](_0x2faf9b['ticket_fields'],function(_0x5a1b63){return _0xfa822e['includes'](_0x5a1b63['type']);});return{'count':_0x2faf9b[_0x42e5('0x6b')][_0x42e5('0x4c')],'rows':_['map'](_0x2faf9b[_0x42e5('0x6b')],function(_0x5debb1){return{'id':_0x5debb1['id'],'name':_0x5debb1[_0x42e5('0x6c')]>0x7?_0x5debb1[_0x42e5('0x6d')]:_0x5debb1[_0x42e5('0x2f')],'custom':_0x5debb1[_0x42e5('0x6c')]>0x7?!![]:![],'options':_0x5debb1[_0x42e5('0x6e')]?_0x5debb1[_0x42e5('0x6e')]:_0x5debb1[_0x42e5('0x6f')]?_0x5debb1[_0x42e5('0x6f')]:[]};})};}})[_0x42e5('0x25')](respondWithResult(_0xb198d,null))[_0x42e5('0x42')](function(_0x1ee9b2){var _0x78573b=_0x2ce1d4[_0x42e5('0x32')][_0x42e5('0x70')]?0x1f4:_0x1ee9b2[_0x42e5('0x71')]||0x1f4;logger[_0x42e5('0x72')](_0x42e5('0x73'),_0x42e5('0x55'),_0x78573b,JSON['stringify'](_0x1ee9b2));delete _0x1ee9b2[_0x42e5('0x28')];if(_0x78573b===0x191){_0x78573b=0x190;}_0xb198d[_0x42e5('0x1a')](_0x78573b)[_0x42e5('0x29')](_0x2ce1d4[_0x42e5('0x32')][_0x42e5('0x70')]?{'message':_0x42e5('0x74'),'statusCode':_0x1ee9b2[_0x42e5('0x71')]}:_0x1ee9b2);});};
\ No newline at end of file
+var _0xe511=['getConfigurations','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','ZendeskConfiguration','create','getFields','username','password','authType','remoteUri','substring','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString','token','%s/token:%s','base64','ValidationError','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','system_field_options','custom_field_options','send','test','statusCode','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','update','then','stack','index','fieldName','type','key','model','map','name','query','keys','filters','attributes','intersection','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','ZendeskAccount','includeAll','include','findAll','catch','show','params','rawAttributes','fields','options','body','find','nolimit'];(function(_0x1b4dd7,_0x3c96d0){var _0x5d2f10=function(_0x25f328){while(--_0x25f328){_0x1b4dd7['push'](_0x1b4dd7['shift']());}};_0x5d2f10(++_0x3c96d0);}(_0xe511,0x16f));var _0x1e51=function(_0x3600e4,_0x215e86){_0x3600e4=_0x3600e4-0x0;var _0x494bfa=_0xe511[_0x3600e4];return _0x494bfa;};'use strict';var emlformat=require(_0x1e51('0x0'));var rimraf=require(_0x1e51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1e51('0x2'));var rp=require('request-promise');var moment=require(_0x1e51('0x3'));var BPromise=require(_0x1e51('0x4'));var Mustache=require('mustache');var util=require(_0x1e51('0x5'));var path=require(_0x1e51('0x6'));var sox=require(_0x1e51('0x7'));var csv=require(_0x1e51('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e51('0x9'));var _=require(_0x1e51('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e51('0xb'));var deskjs=require(_0x1e51('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1e51('0xd'));var Redis=require(_0x1e51('0xe'));var authService=require(_0x1e51('0xf'));var qs=require(_0x1e51('0x10'));var as=require(_0x1e51('0x11'));var hardwareService=require(_0x1e51('0x12'));var logger=require('../../config/logger')(_0x1e51('0x13'));var utils=require(_0x1e51('0x14'));var config=require(_0x1e51('0x15'));var licenseUtil=require(_0x1e51('0x16'));var db=require(_0x1e51('0x17'))['db'];var integrations=require(_0x1e51('0x18'));function respondWithStatusCode(_0x5544eb,_0x408a77){_0x408a77=_0x408a77||0xcc;return function(_0x102f01){if(_0x102f01){return _0x5544eb[_0x1e51('0x19')](_0x408a77);}return _0x5544eb[_0x1e51('0x1a')](_0x408a77)[_0x1e51('0x1b')]();};}function respondWithResult(_0x32945d,_0x441c70){_0x441c70=_0x441c70||0xc8;return function(_0x467e77){if(_0x467e77){return _0x32945d[_0x1e51('0x1a')](_0x441c70)[_0x1e51('0x1c')](_0x467e77);}};}function respondWithFilteredResult(_0x5a5c07,_0x3b01b7){return function(_0x24db4f){if(_0x24db4f){var _0x4526b4=typeof _0x3b01b7['offset']===_0x1e51('0x1d')&&typeof _0x3b01b7['limit']==='undefined';var _0x1f6f4e=_0x24db4f[_0x1e51('0x1e')];var _0x40ae4c=_0x4526b4?0x0:_0x3b01b7[_0x1e51('0x1f')];var _0x4d1aae=_0x4526b4?_0x24db4f[_0x1e51('0x1e')]:_0x3b01b7['offset']+_0x3b01b7[_0x1e51('0x20')];var _0x4a9272;if(_0x4d1aae>=_0x1f6f4e){_0x4d1aae=_0x1f6f4e;_0x4a9272=0xc8;}else{_0x4a9272=0xce;}_0x5a5c07[_0x1e51('0x1a')](_0x4a9272);return _0x5a5c07[_0x1e51('0x21')](_0x1e51('0x22'),_0x40ae4c+'-'+_0x4d1aae+'/'+_0x1f6f4e)[_0x1e51('0x1c')](_0x24db4f);}return null;};}function patchUpdates(_0x506f40){return function(_0x5223c3){try{jsonpatch['apply'](_0x5223c3,_0x506f40,!![]);}catch(_0x548c32){return BPromise[_0x1e51('0x23')](_0x548c32);}return _0x5223c3['save']();};}function saveUpdates(_0x3f7340,_0x28aacb){return function(_0x415154){if(_0x415154){return _0x415154[_0x1e51('0x24')](_0x3f7340)[_0x1e51('0x25')](function(_0xf9298){return _0xf9298;});}return null;};}function removeEntity(_0x270adf,_0x461d3d){return function(_0x4bcdd3){if(_0x4bcdd3){return _0x4bcdd3['destroy']()[_0x1e51('0x25')](function(){_0x270adf[_0x1e51('0x1a')](0xcc)[_0x1e51('0x1b')]();});}};}function handleEntityNotFound(_0x1386db,_0x505d79){return function(_0x54d031){if(!_0x54d031){_0x1386db['sendStatus'](0x194);}return _0x54d031;};}function handleError(_0x1eb83f,_0x2a1561){_0x2a1561=_0x2a1561||0x1f4;return function(_0x433c2d){logger['error'](_0x433c2d[_0x1e51('0x26')]);if(_0x433c2d['name']){delete _0x433c2d['name'];}_0x1eb83f[_0x1e51('0x1a')](_0x2a1561)['send'](_0x433c2d);};}exports[_0x1e51('0x27')]=function(_0x1eb79f,_0x56722f){var _0x3e6ef2={},_0x10ee23={},_0x71c7af={'count':0x0,'rows':[]};var _0x6862d1=_['map'](db['ZendeskAccount']['rawAttributes'],function(_0x20eb9b){return{'name':_0x20eb9b[_0x1e51('0x28')],'type':_0x20eb9b[_0x1e51('0x29')][_0x1e51('0x2a')]};});_0x10ee23[_0x1e51('0x2b')]=_[_0x1e51('0x2c')](_0x6862d1,_0x1e51('0x2d'));_0x10ee23[_0x1e51('0x2e')]=_[_0x1e51('0x2f')](_0x1eb79f[_0x1e51('0x2e')]);_0x10ee23[_0x1e51('0x30')]=_['intersection'](_0x10ee23[_0x1e51('0x2b')],_0x10ee23[_0x1e51('0x2e')]);_0x3e6ef2[_0x1e51('0x31')]=_[_0x1e51('0x32')](_0x10ee23[_0x1e51('0x2b')],qs['fields'](_0x1eb79f[_0x1e51('0x2e')]['fields']));_0x3e6ef2[_0x1e51('0x31')]=_0x3e6ef2[_0x1e51('0x31')][_0x1e51('0x33')]?_0x3e6ef2['attributes']:_0x10ee23[_0x1e51('0x2b')];if(!_0x1eb79f['query'][_0x1e51('0x34')]('nolimit')){_0x3e6ef2['limit']=qs[_0x1e51('0x20')](_0x1eb79f[_0x1e51('0x2e')][_0x1e51('0x20')]);_0x3e6ef2['offset']=qs[_0x1e51('0x1f')](_0x1eb79f['query'][_0x1e51('0x1f')]);}_0x3e6ef2[_0x1e51('0x35')]=qs['sort'](_0x1eb79f[_0x1e51('0x2e')][_0x1e51('0x36')]);_0x3e6ef2[_0x1e51('0x37')]=qs[_0x1e51('0x30')](_[_0x1e51('0x38')](_0x1eb79f[_0x1e51('0x2e')],_0x10ee23['filters']),_0x6862d1);if(_0x1eb79f['query'][_0x1e51('0x39')]){_0x3e6ef2['where']=_[_0x1e51('0x3a')](_0x3e6ef2[_0x1e51('0x37')],{'$or':_[_0x1e51('0x2c')](_0x6862d1,function(_0xcfa1d8){if(_0xcfa1d8[_0x1e51('0x29')]!==_0x1e51('0x3b')){var _0x845a62={};_0x845a62[_0xcfa1d8[_0x1e51('0x2d')]]={'$like':'%'+_0x1eb79f[_0x1e51('0x2e')][_0x1e51('0x39')]+'%'};return _0x845a62;}})});}_0x3e6ef2=_[_0x1e51('0x3a')]({},_0x3e6ef2,_0x1eb79f['options']);var _0x29a689={'where':_0x3e6ef2['where']};return db[_0x1e51('0x3c')][_0x1e51('0x1e')](_0x29a689)[_0x1e51('0x25')](function(_0x471386){_0x71c7af[_0x1e51('0x1e')]=_0x471386;if(_0x1eb79f[_0x1e51('0x2e')][_0x1e51('0x3d')]){_0x3e6ef2[_0x1e51('0x3e')]=[{'all':!![]}];}return db[_0x1e51('0x3c')][_0x1e51('0x3f')](_0x3e6ef2);})[_0x1e51('0x25')](function(_0x5b4b3f){_0x71c7af['rows']=_0x5b4b3f;return _0x71c7af;})[_0x1e51('0x25')](respondWithFilteredResult(_0x56722f,_0x3e6ef2))[_0x1e51('0x40')](handleError(_0x56722f,null));};exports[_0x1e51('0x41')]=function(_0x4650e4,_0x1ef3d3){var _0x1a9e0d={'raw':![],'where':{'id':_0x4650e4[_0x1e51('0x42')]['id']}},_0x25592c={};_0x25592c['model']=_[_0x1e51('0x2f')](db[_0x1e51('0x3c')][_0x1e51('0x43')]);_0x25592c[_0x1e51('0x2e')]=_[_0x1e51('0x2f')](_0x4650e4[_0x1e51('0x2e')]);_0x25592c[_0x1e51('0x30')]=_['intersection'](_0x25592c[_0x1e51('0x2b')],_0x25592c[_0x1e51('0x2e')]);_0x1a9e0d['attributes']=_[_0x1e51('0x32')](_0x25592c[_0x1e51('0x2b')],qs[_0x1e51('0x44')](_0x4650e4['query'][_0x1e51('0x44')]));_0x1a9e0d[_0x1e51('0x31')]=_0x1a9e0d[_0x1e51('0x31')][_0x1e51('0x33')]?_0x1a9e0d[_0x1e51('0x31')]:_0x25592c[_0x1e51('0x2b')];if(_0x4650e4[_0x1e51('0x2e')][_0x1e51('0x3d')]){_0x1a9e0d[_0x1e51('0x3e')]=[{'all':!![]}];}_0x1a9e0d=_['merge']({},_0x1a9e0d,_0x4650e4[_0x1e51('0x45')]);return db[_0x1e51('0x3c')]['find'](_0x1a9e0d)[_0x1e51('0x25')](handleEntityNotFound(_0x1ef3d3,null))[_0x1e51('0x25')](respondWithResult(_0x1ef3d3,null))[_0x1e51('0x40')](handleError(_0x1ef3d3,null));};exports['create']=function(_0x44468a,_0x4634de){return db[_0x1e51('0x3c')]['create'](_0x44468a[_0x1e51('0x46')],{})['then'](respondWithResult(_0x4634de,0xc9))['catch'](handleError(_0x4634de,null));};exports['update']=function(_0x169e6c,_0x2e79ca){if(_0x169e6c['body']['id']){delete _0x169e6c['body']['id'];}return db[_0x1e51('0x3c')][_0x1e51('0x47')]({'where':{'id':_0x169e6c[_0x1e51('0x42')]['id']}})[_0x1e51('0x25')](handleEntityNotFound(_0x2e79ca,null))[_0x1e51('0x25')](saveUpdates(_0x169e6c[_0x1e51('0x46')],null))['then'](respondWithResult(_0x2e79ca,null))[_0x1e51('0x40')](handleError(_0x2e79ca,null));};exports['destroy']=function(_0xf6bd35,_0x43589a){return db['ZendeskAccount']['find']({'where':{'id':_0xf6bd35['params']['id']}})[_0x1e51('0x25')](handleEntityNotFound(_0x43589a,null))[_0x1e51('0x25')](removeEntity(_0x43589a,null))[_0x1e51('0x40')](handleError(_0x43589a,null));};exports['getConfigurations']=function(_0x2fdee1,_0x1fe669,_0x4226da){var _0x2100d4={};var _0x1ccb55={};var _0x12584c;var _0x32fe1f;return db[_0x1e51('0x3c')]['findOne']({'where':{'id':_0x2fdee1[_0x1e51('0x42')]['id']}})[_0x1e51('0x25')](handleEntityNotFound(_0x1fe669,null))[_0x1e51('0x25')](function(_0x213edb){if(_0x213edb){_0x12584c=_0x213edb;_0x1ccb55[_0x1e51('0x2b')]=_[_0x1e51('0x2f')](db['ZendeskConfiguration'][_0x1e51('0x43')]);_0x1ccb55['query']=_['keys'](_0x2fdee1['query']);_0x1ccb55[_0x1e51('0x30')]=_[_0x1e51('0x32')](_0x1ccb55[_0x1e51('0x2b')],_0x1ccb55['query']);_0x2100d4[_0x1e51('0x31')]=_[_0x1e51('0x32')](_0x1ccb55[_0x1e51('0x2b')],qs['fields'](_0x2fdee1[_0x1e51('0x2e')][_0x1e51('0x44')]));_0x2100d4[_0x1e51('0x31')]=_0x2100d4['attributes'][_0x1e51('0x33')]?_0x2100d4[_0x1e51('0x31')]:_0x1ccb55[_0x1e51('0x2b')];_0x2100d4[_0x1e51('0x35')]=qs[_0x1e51('0x36')](_0x2fdee1[_0x1e51('0x2e')][_0x1e51('0x36')]);_0x2100d4[_0x1e51('0x37')]=qs['filters'](_[_0x1e51('0x38')](_0x2fdee1[_0x1e51('0x2e')],_0x1ccb55['filters']));if(_0x2fdee1['query']['filter']){_0x2100d4[_0x1e51('0x37')]=_[_0x1e51('0x3a')](_0x2100d4[_0x1e51('0x37')],{'$or':_[_0x1e51('0x2c')](_0x2100d4[_0x1e51('0x31')],function(_0x3c322c){var _0x45b649={};_0x45b649[_0x3c322c]={'$like':'%'+_0x2fdee1[_0x1e51('0x2e')][_0x1e51('0x39')]+'%'};return _0x45b649;})});}_0x2100d4=_['merge']({},_0x2100d4,_0x2fdee1['options']);return _0x12584c['getConfigurations'](_0x2100d4);}})[_0x1e51('0x25')](function(_0x4048a4){if(_0x4048a4){_0x32fe1f=_0x4048a4['length'];if(!_0x2fdee1['query'][_0x1e51('0x34')](_0x1e51('0x48'))){_0x2100d4['limit']=qs[_0x1e51('0x20')](_0x2fdee1[_0x1e51('0x2e')][_0x1e51('0x20')]);_0x2100d4[_0x1e51('0x1f')]=qs[_0x1e51('0x1f')](_0x2fdee1[_0x1e51('0x2e')][_0x1e51('0x1f')]);}return _0x12584c[_0x1e51('0x49')](_0x2100d4);}})[_0x1e51('0x25')](function(_0x32863f){if(_0x32863f){return _0x32863f?{'count':_0x32fe1f,'rows':_0x32863f}:null;}})['then'](respondWithResult(_0x1fe669,null))[_0x1e51('0x40')](handleError(_0x1fe669,null));};exports[_0x1e51('0x4a')]=function(_0x3657a2,_0x402bbd,_0xc720e2){if(_0x3657a2[_0x1e51('0x46')]['id']){delete _0x3657a2['body']['id'];}return db['ZendeskAccount'][_0x1e51('0x4b')]({'where':{'id':_0x3657a2[_0x1e51('0x42')]['id']}})[_0x1e51('0x25')](handleEntityNotFound(_0x402bbd,null))[_0x1e51('0x25')](function(_0x52a439){if(_0x52a439){_0x3657a2['body']['AccountId']=_0x52a439['id'];_0x3657a2[_0x1e51('0x46')][_0x1e51('0x4c')]=integrations[_0x1e51('0x4d')](_0x3657a2[_0x1e51('0x46')][_0x1e51('0x4e')],_0x3657a2['body'][_0x1e51('0x29')]);_0x3657a2[_0x1e51('0x46')][_0x1e51('0x4f')]=integrations['getDescriptions'](_0x3657a2[_0x1e51('0x46')][_0x1e51('0x4e')],_0x3657a2[_0x1e51('0x46')]['type']);return db[_0x1e51('0x50')][_0x1e51('0x51')](_0x3657a2['body'],{'include':[{'model':db['ZendeskField'],'as':_0x1e51('0x4c')},{'model':db['ZendeskField'],'as':_0x1e51('0x4f')}]});}return null;})['then'](respondWithResult(_0x402bbd,null))[_0x1e51('0x40')](handleError(_0x402bbd,null));};exports[_0x1e51('0x52')]=function(_0x35f12e,_0x457e4a,_0x5142ed){var _0x37f3e6='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x35f12e[_0x1e51('0x42')]['id']},'attributes':['id',_0x1e51('0x53'),_0x1e51('0x54'),'token',_0x1e51('0x55'),_0x1e51('0x56')]})[_0x1e51('0x25')](handleEntityNotFound(_0x457e4a,null))[_0x1e51('0x25')](function(_0x5b76ae){if(_0x5b76ae){_0x37f3e6=_0x5b76ae[_0x1e51('0x56')];var _0x5ef17b=_0x37f3e6['slice'](-0x1);if(_0x5ef17b==='/'){_0x37f3e6=_0x37f3e6[_0x1e51('0x57')](0x0,_0x37f3e6['lastIndexOf'](_0x5ef17b));}var _0x35ece9={'method':'GET','uri':util[_0x1e51('0x58')]('%s/%s',_0x37f3e6,_0x1e51('0x59')),'json':!![]};switch(_0x5b76ae[_0x1e51('0x55')]){case'password':_0x35ece9[_0x1e51('0x5a')]={'Authorization':util['format'](_0x1e51('0x5b'),new Buffer(util[_0x1e51('0x58')](_0x1e51('0x5c'),_0x5b76ae[_0x1e51('0x53')],_0x5b76ae[_0x1e51('0x54')]))[_0x1e51('0x5d')]('base64'))};break;case _0x1e51('0x5e'):_0x35ece9['headers']={'Authorization':util['format'](_0x1e51('0x5b'),new Buffer(util[_0x1e51('0x58')](_0x1e51('0x5f'),_0x5b76ae[_0x1e51('0x53')],_0x5b76ae[_0x1e51('0x5e')]))[_0x1e51('0x5d')](_0x1e51('0x60')))};break;default:throw new db['Sequelize'][(_0x1e51('0x61'))](_0x1e51('0x62'));}return rp(_0x35ece9);}})[_0x1e51('0x25')](function(_0x4c6920){if(_0x4c6920){var _0x4da887=[_0x1e51('0x63'),_0x1e51('0x64'),'group',_0x1e51('0x65')];_[_0x1e51('0x66')](_0x4c6920['ticket_fields'],function(_0x5eb939){return _0x4da887[_0x1e51('0x67')](_0x5eb939[_0x1e51('0x29')]);});return{'count':_0x4c6920[_0x1e51('0x59')][_0x1e51('0x33')],'rows':_[_0x1e51('0x2c')](_0x4c6920[_0x1e51('0x59')],function(_0x3718d9){return{'id':_0x3718d9['id'],'name':_0x3718d9['position']>0x7?_0x3718d9['title']:_0x3718d9[_0x1e51('0x29')],'custom':_0x3718d9[_0x1e51('0x68')]>0x7?!![]:![],'options':_0x3718d9['system_field_options']?_0x3718d9[_0x1e51('0x69')]:_0x3718d9[_0x1e51('0x6a')]?_0x3718d9['custom_field_options']:[]};})};}})[_0x1e51('0x25')](respondWithResult(_0x457e4a,null))['catch'](function(_0x34b98f){var _0x561812=_0x35f12e['query']['test']?0x1f4:_0x34b98f['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x1e51('0x52'),_0x561812,JSON['stringify'](_0x34b98f));delete _0x34b98f[_0x1e51('0x2d')];if(_0x561812===0x191){_0x561812=0x190;}_0x457e4a['status'](_0x561812)[_0x1e51('0x6b')](_0x35f12e[_0x1e51('0x2e')][_0x1e51('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x34b98f[_0x1e51('0x6d')]}:_0x34b98f);});};
\ No newline at end of file
index 88b676f..2bf9df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b5e=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util'];(function(_0x37a042,_0x2c307a){var _0x19a727=function(_0x34b0eb){while(--_0x34b0eb){_0x37a042['push'](_0x37a042['shift']());}};_0x19a727(++_0x2c307a);}(_0x2b5e,0x11b));var _0xe2b5=function(_0x36a5d0,_0x477b0f){_0x36a5d0=_0x36a5d0-0x0;var _0x2b0076=_0x2b5e[_0x36a5d0];return _0x2b0076;};'use strict';var _=require(_0xe2b5('0x0'));var util=require(_0xe2b5('0x1'));var logger=require(_0xe2b5('0x2'))(_0xe2b5('0x3'));var moment=require(_0xe2b5('0x4'));var BPromise=require(_0xe2b5('0x5'));var rp=require(_0xe2b5('0x6'));var fs=require('fs');var path=require(_0xe2b5('0x7'));var rimraf=require(_0xe2b5('0x8'));var config=require(_0xe2b5('0x9'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xe2b5('0xa'));module[_0xe2b5('0xb')]=function(_0x41a8b3,_0x2c963e){return _0x41a8b3[_0xe2b5('0xc')](_0xe2b5('0xd'),attributes,{'tableName':_0xe2b5('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b2a=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_zendesk_accounts'];(function(_0x2efd28,_0x2867c9){var _0x44f0b6=function(_0x397558){while(--_0x397558){_0x2efd28['push'](_0x2efd28['shift']());}};_0x44f0b6(++_0x2867c9);}(_0x1b2a,0x1ba));var _0xa1b2=function(_0x5a3b79,_0x1b199e){_0x5a3b79=_0x5a3b79-0x0;var _0x365206=_0x1b2a[_0x5a3b79];return _0x365206;};'use strict';var _=require(_0xa1b2('0x0'));var util=require(_0xa1b2('0x1'));var logger=require(_0xa1b2('0x2'))('api');var moment=require(_0xa1b2('0x3'));var BPromise=require(_0xa1b2('0x4'));var rp=require(_0xa1b2('0x5'));var fs=require('fs');var path=require(_0xa1b2('0x6'));var rimraf=require(_0xa1b2('0x7'));var config=require(_0xa1b2('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xa1b2('0x9'));module[_0xa1b2('0xa')]=function(_0x888a90,_0x249627){return _0x888a90[_0xa1b2('0xb')]('ZendeskAccount',attributes,{'tableName':_0xa1b2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc7cd4e..5d49683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090e=['ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','include','map','model','debug','ShowZendeskAccount','find','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x401d93,_0x12389f){var _0x9a5b47=function(_0x4984f3){while(--_0x4984f3){_0x401d93['push'](_0x401d93['shift']());}};_0x9a5b47(++_0x12389f);}(_0x090e,0x154));var _0xe090=function(_0x493c8c,_0x470567){_0x493c8c=_0x493c8c-0x0;var _0x17344b=_0x090e[_0x493c8c];return _0x17344b;};'use strict';var _=require(_0xe090('0x0'));var util=require('util');var moment=require(_0xe090('0x1'));var BPromise=require(_0xe090('0x2'));var rs=require(_0xe090('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe090('0x4'));var logger=require(_0xe090('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe090('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5885e9,_0x4d8a90,_0xfaf5ac){return new BPromise(function(_0x1612b1,_0x4b60de){return client[_0xe090('0x7')](_0x5885e9,_0xfaf5ac)[_0xe090('0x8')](function(_0xed97){logger[_0xe090('0x9')](_0xe090('0xa'),_0x4d8a90,_0xe090('0xb'));logger['debug'](_0xe090('0xc'),_0x4d8a90,_0xe090('0xb'),JSON[_0xe090('0xd')](_0xed97));if(_0xed97[_0xe090('0xe')]){if(_0xed97['error'][_0xe090('0xf')]===0x1f4){logger[_0xe090('0xe')](_0xe090('0xa'),_0x4d8a90,_0xed97[_0xe090('0xe')][_0xe090('0x10')]);return _0x4b60de(_0xed97[_0xe090('0xe')][_0xe090('0x10')]);}logger[_0xe090('0xe')]('ZendeskAccount,\x20%s,\x20%s',_0x4d8a90,_0xed97['error'][_0xe090('0x10')]);return _0x1612b1(_0xed97[_0xe090('0xe')][_0xe090('0x10')]);}else{logger[_0xe090('0x9')](_0xe090('0xa'),_0x4d8a90,_0xe090('0xb'));_0x1612b1(_0xed97[_0xe090('0x11')][_0xe090('0x10')]);}})[_0xe090('0x12')](function(_0x17dac6){logger[_0xe090('0xe')](_0xe090('0xa'),_0x4d8a90,_0x17dac6);_0x4b60de(_0x17dac6);});});}exports[_0xe090('0x13')]=function(_0x526f5c){var _0x5c5d9a=this;return new Promise(function(_0x24c361,_0x566a88){return db[_0xe090('0x14')][_0xe090('0x15')]({'raw':_0x526f5c[_0xe090('0x16')]?_0x526f5c['options'][_0xe090('0x17')]===undefined?!![]:![]:!![],'where':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x18')]||null:null,'attributes':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x19')]||null:null,'limit':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')]['limit']||null:null,'include':_0x526f5c[_0xe090('0x16')]?_0x526f5c[_0xe090('0x16')][_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x526f5c[_0xe090('0x16')]['include'],function(_0x46b3a7){return{'model':db[_0x46b3a7[_0xe090('0x1c')]],'as':_0x46b3a7['as'],'attributes':_0x46b3a7[_0xe090('0x19')],'include':_0x46b3a7[_0xe090('0x1a')]?_['map'](_0x46b3a7[_0xe090('0x1a')],function(_0x4a3806){return{'model':db[_0x4a3806[_0xe090('0x1c')]],'as':_0x4a3806['as'],'attributes':_0x4a3806[_0xe090('0x19')],'include':_0x4a3806[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x4a3806['include'],function(_0x1f1338){return{'model':db[_0x1f1338[_0xe090('0x1c')]],'as':_0x1f1338['as'],'attributes':_0x1f1338[_0xe090('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe090('0x8')](function(_0x4608b5){logger['info'](_0xe090('0x13'),_0x526f5c);logger[_0xe090('0x1d')]('GetZendeskAccount',_0x526f5c,JSON[_0xe090('0xd')](_0x4608b5));_0x24c361(_0x4608b5);})[_0xe090('0x12')](function(_0xf3afca){logger[_0xe090('0xe')](_0xe090('0x13'),_0xf3afca[_0xe090('0x10')],_0x526f5c);_0x566a88(_0x5c5d9a['error'](0x1f4,_0xf3afca[_0xe090('0x10')]));});});};exports[_0xe090('0x1e')]=function(_0x39d3dc){var _0x3b033a=this;return new Promise(function(_0x58ae75,_0x396258){return db[_0xe090('0x14')][_0xe090('0x1f')]({'raw':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x17')]===undefined?!![]:![]:!![],'where':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x18')]||null:null,'attributes':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc['options']['attributes']||null:null,'include':_0x39d3dc[_0xe090('0x16')]?_0x39d3dc[_0xe090('0x16')][_0xe090('0x1a')]?_['map'](_0x39d3dc['options'][_0xe090('0x1a')],function(_0x42c402){return{'model':db[_0x42c402[_0xe090('0x1c')]],'as':_0x42c402['as'],'attributes':_0x42c402[_0xe090('0x19')],'include':_0x42c402[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x42c402[_0xe090('0x1a')],function(_0x32e0d7){return{'model':db[_0x32e0d7[_0xe090('0x1c')]],'as':_0x32e0d7['as'],'attributes':_0x32e0d7[_0xe090('0x19')],'include':_0x32e0d7[_0xe090('0x1a')]?_[_0xe090('0x1b')](_0x32e0d7[_0xe090('0x1a')],function(_0xb1cfb0){return{'model':db[_0xb1cfb0[_0xe090('0x1c')]],'as':_0xb1cfb0['as'],'attributes':_0xb1cfb0[_0xe090('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe090('0x8')](function(_0x2b13f6){logger['info'](_0xe090('0x1e'),_0x39d3dc);logger[_0xe090('0x1d')]('ShowZendeskAccount',_0x39d3dc,JSON[_0xe090('0xd')](_0x2b13f6));_0x58ae75(_0x2b13f6);})[_0xe090('0x12')](function(_0x42092e){logger[_0xe090('0xe')](_0xe090('0x1e'),_0x42092e['message'],_0x39d3dc);_0x396258(_0x3b033a['error'](0x1f4,_0x42092e[_0xe090('0x10')]));});});};
\ No newline at end of file
+var _0x8015=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','info','request\x20sent','debug','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch','GetZendeskAccount','findAll','raw','options','where','attributes','limit','include','map','model','ShowZendeskAccount','ZendeskAccount','find','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x893ffa,_0x241105){var _0x3b4b07=function(_0x5d6376){while(--_0x5d6376){_0x893ffa['push'](_0x893ffa['shift']());}};_0x3b4b07(++_0x241105);}(_0x8015,0x1c9));var _0x5801=function(_0x27bfbf,_0x2d5516){_0x27bfbf=_0x27bfbf-0x0;var _0x141970=_0x8015[_0x27bfbf];return _0x141970;};'use strict';var _=require(_0x5801('0x0'));var util=require('util');var moment=require(_0x5801('0x1'));var BPromise=require(_0x5801('0x2'));var rs=require(_0x5801('0x3'));var fs=require('fs');var Redis=require(_0x5801('0x4'));var db=require(_0x5801('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5801('0x6'))('rpc');var config=require(_0x5801('0x7'));var jayson=require(_0x5801('0x8'));var client=jayson['client'][_0x5801('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x471f7a,_0x3fcdcf,_0x3a497d){return new BPromise(function(_0x586c7a,_0x52fb54){return client['request'](_0x471f7a,_0x3a497d)['then'](function(_0x6ffbf7){logger[_0x5801('0xa')]('ZendeskAccount,\x20%s,\x20%s',_0x3fcdcf,_0x5801('0xb'));logger[_0x5801('0xc')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x3fcdcf,_0x5801('0xb'),JSON[_0x5801('0xd')](_0x6ffbf7));if(_0x6ffbf7['error']){if(_0x6ffbf7[_0x5801('0xe')][_0x5801('0xf')]===0x1f4){logger[_0x5801('0xe')](_0x5801('0x10'),_0x3fcdcf,_0x6ffbf7[_0x5801('0xe')][_0x5801('0x11')]);return _0x52fb54(_0x6ffbf7[_0x5801('0xe')][_0x5801('0x11')]);}logger[_0x5801('0xe')](_0x5801('0x10'),_0x3fcdcf,_0x6ffbf7[_0x5801('0xe')][_0x5801('0x11')]);return _0x586c7a(_0x6ffbf7[_0x5801('0xe')][_0x5801('0x11')]);}else{logger['info'](_0x5801('0x10'),_0x3fcdcf,_0x5801('0xb'));_0x586c7a(_0x6ffbf7[_0x5801('0x12')][_0x5801('0x11')]);}})[_0x5801('0x13')](function(_0x648b59){logger[_0x5801('0xe')](_0x5801('0x10'),_0x3fcdcf,_0x648b59);_0x52fb54(_0x648b59);});});}exports[_0x5801('0x14')]=function(_0x204dc5){var _0x4249ef=this;return new Promise(function(_0x11febd,_0x21d7a9){return db['ZendeskAccount'][_0x5801('0x15')]({'raw':_0x204dc5['options']?_0x204dc5['options'][_0x5801('0x16')]===undefined?!![]:![]:!![],'where':_0x204dc5[_0x5801('0x17')]?_0x204dc5[_0x5801('0x17')][_0x5801('0x18')]||null:null,'attributes':_0x204dc5[_0x5801('0x17')]?_0x204dc5[_0x5801('0x17')][_0x5801('0x19')]||null:null,'limit':_0x204dc5[_0x5801('0x17')]?_0x204dc5[_0x5801('0x17')][_0x5801('0x1a')]||null:null,'include':_0x204dc5[_0x5801('0x17')]?_0x204dc5['options'][_0x5801('0x1b')]?_[_0x5801('0x1c')](_0x204dc5[_0x5801('0x17')]['include'],function(_0x596bdc){return{'model':db[_0x596bdc['model']],'as':_0x596bdc['as'],'attributes':_0x596bdc[_0x5801('0x19')],'include':_0x596bdc[_0x5801('0x1b')]?_[_0x5801('0x1c')](_0x596bdc[_0x5801('0x1b')],function(_0x2a58bd){return{'model':db[_0x2a58bd[_0x5801('0x1d')]],'as':_0x2a58bd['as'],'attributes':_0x2a58bd[_0x5801('0x19')],'include':_0x2a58bd['include']?_[_0x5801('0x1c')](_0x2a58bd[_0x5801('0x1b')],function(_0x190f54){return{'model':db[_0x190f54[_0x5801('0x1d')]],'as':_0x190f54['as'],'attributes':_0x190f54[_0x5801('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15abf0){logger[_0x5801('0xa')](_0x5801('0x14'),_0x204dc5);logger[_0x5801('0xc')](_0x5801('0x14'),_0x204dc5,JSON['stringify'](_0x15abf0));_0x11febd(_0x15abf0);})[_0x5801('0x13')](function(_0x1407ad){logger['error'](_0x5801('0x14'),_0x1407ad[_0x5801('0x11')],_0x204dc5);_0x21d7a9(_0x4249ef[_0x5801('0xe')](0x1f4,_0x1407ad[_0x5801('0x11')]));});});};exports[_0x5801('0x1e')]=function(_0xb33140){var _0x478514=this;return new Promise(function(_0x343a1f,_0x2a56f4){return db[_0x5801('0x1f')][_0x5801('0x20')]({'raw':_0xb33140[_0x5801('0x17')]?_0xb33140['options']['raw']===undefined?!![]:![]:!![],'where':_0xb33140[_0x5801('0x17')]?_0xb33140['options']['where']||null:null,'attributes':_0xb33140[_0x5801('0x17')]?_0xb33140[_0x5801('0x17')][_0x5801('0x19')]||null:null,'include':_0xb33140[_0x5801('0x17')]?_0xb33140[_0x5801('0x17')][_0x5801('0x1b')]?_[_0x5801('0x1c')](_0xb33140['options']['include'],function(_0x20bc4a){return{'model':db[_0x20bc4a[_0x5801('0x1d')]],'as':_0x20bc4a['as'],'attributes':_0x20bc4a[_0x5801('0x19')],'include':_0x20bc4a[_0x5801('0x1b')]?_[_0x5801('0x1c')](_0x20bc4a[_0x5801('0x1b')],function(_0x2af53e){return{'model':db[_0x2af53e[_0x5801('0x1d')]],'as':_0x2af53e['as'],'attributes':_0x2af53e[_0x5801('0x19')],'include':_0x2af53e[_0x5801('0x1b')]?_[_0x5801('0x1c')](_0x2af53e[_0x5801('0x1b')],function(_0x155fde){return{'model':db[_0x155fde[_0x5801('0x1d')]],'as':_0x155fde['as'],'attributes':_0x155fde[_0x5801('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1d2f9e){logger['info']('ShowZendeskAccount',_0xb33140);logger[_0x5801('0xc')]('ShowZendeskAccount',_0xb33140,JSON[_0x5801('0xd')](_0x1d2f9e));_0x343a1f(_0x1d2f9e);})['catch'](function(_0x598a17){logger[_0x5801('0xe')](_0x5801('0x1e'),_0x598a17[_0x5801('0x11')],_0xb33140);_0x2a56f4(_0x478514[_0x5801('0xe')](0x1f4,_0x598a17['message']));});});};
\ No newline at end of file
index 546114b..af4af61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getDescriptions','/:id/tags','getTags','create','post','setTags','put','/:id','update','delete','destroy','exports','multer'];(function(_0x374ccf,_0xa945c4){var _0x443cde=function(_0x27ff10){while(--_0x27ff10){_0x374ccf['push'](_0x374ccf['shift']());}};_0x443cde(++_0xa945c4);}(_0x4024,0x89));var _0x4402=function(_0x4a64c2,_0x109bf5){_0x4a64c2=_0x4a64c2-0x0;var _0x545135=_0x4024[_0x4a64c2];return _0x545135;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./intZendeskConfiguration.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0x4402('0x9')]('/:id/subjects',auth[_0x4402('0x7')](),controller['getSubjects']);router[_0x4402('0x9')]('/:id/descriptions',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['get'](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0xd')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xf')](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0x10')]);router[_0x4402('0x11')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x13')]);router[_0x4402('0x14')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x15')]);module[_0x4402('0x16')]=router;
\ No newline at end of file
+var _0xbaf0=['isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0xed0321,_0x5c487b){var _0x25b995=function(_0x18451d){while(--_0x18451d){_0xed0321['push'](_0xed0321['shift']());}};_0x25b995(++_0x5c487b);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0x9')]('/:id/fields',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0x9')](_0x0baf('0xe'),auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x9')](_0x0baf('0x10'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x11')]);router[_0x0baf('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0x14')]);router['post'](_0x0baf('0x15'),auth['isAuthenticated'](),controller[_0x0baf('0x16')]);router[_0x0baf('0x17')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x18')]);router[_0x0baf('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x0baf('0x1a')]);module[_0x0baf('0x1b')]=router;
\ No newline at end of file
index 9332a95..d7b04b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cc1=['exports','STRING','sequelize'];(function(_0xfdef07,_0x201e33){var _0x1704ec=function(_0x1b1b91){while(--_0x1b1b91){_0xfdef07['push'](_0xfdef07['shift']());}};_0x1704ec(++_0x201e33);}(_0x0cc1,0x1dc));var _0x10cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0cc1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x10cc('0x0'));module[_0x10cc('0x1')]={'name':{'type':Sequelize[_0x10cc('0x2')]},'description':{'type':Sequelize[_0x10cc('0x2')]}};
\ No newline at end of file
+var _0xacbe=['sequelize','exports','STRING'];(function(_0x4181e0,_0x4061aa){var _0x5e1d51=function(_0x54cbb2){while(--_0x54cbb2){_0x4181e0['push'](_0x4181e0['shift']());}};_0x5e1d51(++_0x4061aa);}(_0xacbe,0xba));var _0xeacb=function(_0x5e5f5d,_0xa2fbf2){_0x5e5f5d=_0x5e5f5d-0x0;var _0x510b43=_0xacbe[_0x5e5f5d];return _0x510b43;};'use strict';var Sequelize=require(_0xeacb('0x0'));module[_0xeacb('0x1')]={'name':{'type':Sequelize[_0xeacb('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 35369c3..d782d59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00dc=['count','offset','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','ZendeskConfiguration','rawAttributes','fieldName','type','model','map','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','params','find','create','body','update','getFields','hasOwnProperty','getSubjects','findOne','ZendeskField','getDescriptions','getTags','setTags','ids','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','json','undefined','limit'];(function(_0x199301,_0x447fbc){var _0x49f477=function(_0xfeaa2a){while(--_0xfeaa2a){_0x199301['push'](_0x199301['shift']());}};_0x49f477(++_0x447fbc);}(_0x00dc,0xdc));var _0xc00d=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x00dc[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc00d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc00d('0x1'));var rp=require('request-promise');var moment=require(_0xc00d('0x2'));var BPromise=require(_0xc00d('0x3'));var Mustache=require(_0xc00d('0x4'));var util=require(_0xc00d('0x5'));var path=require(_0xc00d('0x6'));var sox=require('sox');var csv=require(_0xc00d('0x7'));var ejs=require(_0xc00d('0x8'));var fs=require('fs');var fs_extra=require(_0xc00d('0x9'));var _=require('lodash');var squel=require(_0xc00d('0xa'));var crypto=require(_0xc00d('0xb'));var jsforce=require(_0xc00d('0xc'));var deskjs=require(_0xc00d('0xd'));var toCsv=require(_0xc00d('0x7'));var querystring=require(_0xc00d('0xe'));var Papa=require(_0xc00d('0xf'));var Redis=require(_0xc00d('0x10'));var authService=require(_0xc00d('0x11'));var qs=require(_0xc00d('0x12'));var as=require(_0xc00d('0x13'));var hardwareService=require(_0xc00d('0x14'));var logger=require(_0xc00d('0x15'))('api');var utils=require(_0xc00d('0x16'));var config=require(_0xc00d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42072e,_0x29352a){_0x29352a=_0x29352a||0xcc;return function(_0x4fcb7d){if(_0x4fcb7d){return _0x42072e[_0xc00d('0x18')](_0x29352a);}return _0x42072e[_0xc00d('0x19')](_0x29352a)['end']();};}function respondWithResult(_0x117c0d,_0xe2a1a9){_0xe2a1a9=_0xe2a1a9||0xc8;return function(_0x54a6e4){if(_0x54a6e4){return _0x117c0d[_0xc00d('0x19')](_0xe2a1a9)[_0xc00d('0x1a')](_0x54a6e4);}};}function respondWithFilteredResult(_0x2d6f9b,_0x4481d2){return function(_0x452129){if(_0x452129){var _0x4d1705=typeof _0x4481d2['offset']===_0xc00d('0x1b')&&typeof _0x4481d2[_0xc00d('0x1c')]===_0xc00d('0x1b');var _0x34c9fb=_0x452129[_0xc00d('0x1d')];var _0x2b2094=_0x4d1705?0x0:_0x4481d2[_0xc00d('0x1e')];var _0x43b0a3=_0x4d1705?_0x452129[_0xc00d('0x1d')]:_0x4481d2['offset']+_0x4481d2['limit'];var _0x252b3f;if(_0x43b0a3>=_0x34c9fb){_0x43b0a3=_0x34c9fb;_0x252b3f=0xc8;}else{_0x252b3f=0xce;}_0x2d6f9b['status'](_0x252b3f);return _0x2d6f9b[_0xc00d('0x1f')](_0xc00d('0x20'),_0x2b2094+'-'+_0x43b0a3+'/'+_0x34c9fb)[_0xc00d('0x1a')](_0x452129);}return null;};}function patchUpdates(_0x37c248){return function(_0x1f8358){try{jsonpatch[_0xc00d('0x21')](_0x1f8358,_0x37c248,!![]);}catch(_0x1ebe69){return BPromise[_0xc00d('0x22')](_0x1ebe69);}return _0x1f8358[_0xc00d('0x23')]();};}function saveUpdates(_0x48c3cc,_0x2a3b29){return function(_0x7f2b0a){if(_0x7f2b0a){return _0x7f2b0a['update'](_0x48c3cc)[_0xc00d('0x24')](function(_0x57a93b){return _0x57a93b;});}return null;};}function removeEntity(_0x248aa6,_0x3a4158){return function(_0x4b1090){if(_0x4b1090){return _0x4b1090[_0xc00d('0x25')]()[_0xc00d('0x24')](function(){_0x248aa6[_0xc00d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3720f3,_0x1753e8){return function(_0x17707b){if(!_0x17707b){_0x3720f3[_0xc00d('0x18')](0x194);}return _0x17707b;};}function handleError(_0x107b49,_0x44bb43){_0x44bb43=_0x44bb43||0x1f4;return function(_0x195194){logger[_0xc00d('0x26')](_0x195194[_0xc00d('0x27')]);if(_0x195194['name']){delete _0x195194[_0xc00d('0x28')];}_0x107b49[_0xc00d('0x19')](_0x44bb43)[_0xc00d('0x29')](_0x195194);};}exports[_0xc00d('0x2a')]=function(_0x59c477,_0x1049c8){var _0x486270={},_0x5e5f0d={},_0x46ad40={'count':0x0,'rows':[]};var _0x2f32da=_['map'](db[_0xc00d('0x2b')][_0xc00d('0x2c')],function(_0x967738){return{'name':_0x967738[_0xc00d('0x2d')],'type':_0x967738[_0xc00d('0x2e')]['key']};});_0x5e5f0d[_0xc00d('0x2f')]=_[_0xc00d('0x30')](_0x2f32da,_0xc00d('0x28'));_0x5e5f0d['query']=_[_0xc00d('0x31')](_0x59c477[_0xc00d('0x32')]);_0x5e5f0d['filters']=_[_0xc00d('0x33')](_0x5e5f0d['model'],_0x5e5f0d[_0xc00d('0x32')]);_0x486270[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x5e5f0d[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x59c477[_0xc00d('0x32')][_0xc00d('0x35')]));_0x486270[_0xc00d('0x34')]=_0x486270[_0xc00d('0x34')][_0xc00d('0x36')]?_0x486270[_0xc00d('0x34')]:_0x5e5f0d[_0xc00d('0x2f')];if(!_0x59c477[_0xc00d('0x32')]['hasOwnProperty'](_0xc00d('0x37'))){_0x486270[_0xc00d('0x1c')]=qs[_0xc00d('0x1c')](_0x59c477[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x486270[_0xc00d('0x1e')]=qs[_0xc00d('0x1e')](_0x59c477['query'][_0xc00d('0x1e')]);}_0x486270[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x59c477['query']['sort']);_0x486270[_0xc00d('0x3a')]=qs[_0xc00d('0x3b')](_[_0xc00d('0x3c')](_0x59c477['query'],_0x5e5f0d['filters']),_0x2f32da);if(_0x59c477[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x486270[_0xc00d('0x3a')]=_['merge'](_0x486270['where'],{'$or':_[_0xc00d('0x30')](_0x2f32da,function(_0x56352c){if(_0x56352c[_0xc00d('0x2e')]!==_0xc00d('0x3e')){var _0x3cf2af={};_0x3cf2af[_0x56352c[_0xc00d('0x28')]]={'$like':'%'+_0x59c477[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x3cf2af;}})});}_0x486270=_[_0xc00d('0x3f')]({},_0x486270,_0x59c477[_0xc00d('0x40')]);var _0x3dedc1={'where':_0x486270[_0xc00d('0x3a')]};return db[_0xc00d('0x2b')][_0xc00d('0x1d')](_0x3dedc1)[_0xc00d('0x24')](function(_0x262800){_0x46ad40['count']=_0x262800;if(_0x59c477[_0xc00d('0x32')][_0xc00d('0x41')]){_0x486270[_0xc00d('0x42')]=[{'all':!![]}];}return db[_0xc00d('0x2b')]['findAll'](_0x486270);})['then'](function(_0x2f9cdc){_0x46ad40[_0xc00d('0x43')]=_0x2f9cdc;return _0x46ad40;})[_0xc00d('0x24')](respondWithFilteredResult(_0x1049c8,_0x486270))[_0xc00d('0x44')](handleError(_0x1049c8,null));};exports['show']=function(_0x118186,_0x38b52d){var _0x2633b4={'raw':![],'where':{'id':_0x118186[_0xc00d('0x45')]['id']}},_0x514fb6={};_0x514fb6[_0xc00d('0x2f')]=_['keys'](db[_0xc00d('0x2b')][_0xc00d('0x2c')]);_0x514fb6[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x118186[_0xc00d('0x32')]);_0x514fb6[_0xc00d('0x3b')]=_['intersection'](_0x514fb6[_0xc00d('0x2f')],_0x514fb6['query']);_0x2633b4[_0xc00d('0x34')]=_['intersection'](_0x514fb6['model'],qs['fields'](_0x118186[_0xc00d('0x32')]['fields']));_0x2633b4[_0xc00d('0x34')]=_0x2633b4[_0xc00d('0x34')][_0xc00d('0x36')]?_0x2633b4['attributes']:_0x514fb6['model'];if(_0x118186['query'][_0xc00d('0x41')]){_0x2633b4[_0xc00d('0x42')]=[{'all':!![]}];}_0x2633b4=_['merge']({},_0x2633b4,_0x118186[_0xc00d('0x40')]);return db['ZendeskConfiguration'][_0xc00d('0x46')](_0x2633b4)['then'](handleEntityNotFound(_0x38b52d,null))[_0xc00d('0x24')](respondWithResult(_0x38b52d,null))[_0xc00d('0x44')](handleError(_0x38b52d,null));};exports['create']=function(_0x4fd327,_0xc2bebd){return db[_0xc00d('0x2b')][_0xc00d('0x47')](_0x4fd327[_0xc00d('0x48')],{})[_0xc00d('0x24')](respondWithResult(_0xc2bebd,0xc9))[_0xc00d('0x44')](handleError(_0xc2bebd,null));};exports[_0xc00d('0x49')]=function(_0x24fd59,_0x280f5a){if(_0x24fd59['body']['id']){delete _0x24fd59[_0xc00d('0x48')]['id'];}return db[_0xc00d('0x2b')][_0xc00d('0x46')]({'where':{'id':_0x24fd59['params']['id']}})['then'](handleEntityNotFound(_0x280f5a,null))[_0xc00d('0x24')](saveUpdates(_0x24fd59[_0xc00d('0x48')],null))[_0xc00d('0x24')](respondWithResult(_0x280f5a,null))[_0xc00d('0x44')](handleError(_0x280f5a,null));};exports['destroy']=function(_0x29bf1f,_0x2bdf6a){return db['ZendeskConfiguration'][_0xc00d('0x46')]({'where':{'id':_0x29bf1f[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x2bdf6a,null))[_0xc00d('0x24')](removeEntity(_0x2bdf6a,null))['catch'](handleError(_0x2bdf6a,null));};exports[_0xc00d('0x4a')]=function(_0x71427,_0x2ab708,_0x494e38){var _0x4203e1={};var _0xe87759={};var _0x6c34c0;var _0x2e5eba;return db[_0xc00d('0x2b')]['findOne']({'where':{'id':_0x71427[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x2ab708,null))[_0xc00d('0x24')](function(_0x501cae){if(_0x501cae){_0x6c34c0=_0x501cae;_0xe87759[_0xc00d('0x2f')]=_[_0xc00d('0x31')](db['ZendeskField'][_0xc00d('0x2c')]);_0xe87759[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x71427['query']);_0xe87759[_0xc00d('0x3b')]=_[_0xc00d('0x33')](_0xe87759['model'],_0xe87759[_0xc00d('0x32')]);_0x4203e1['attributes']=_['intersection'](_0xe87759[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x71427[_0xc00d('0x32')][_0xc00d('0x35')]));_0x4203e1[_0xc00d('0x34')]=_0x4203e1[_0xc00d('0x34')][_0xc00d('0x36')]?_0x4203e1[_0xc00d('0x34')]:_0xe87759['model'];_0x4203e1[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x71427[_0xc00d('0x32')][_0xc00d('0x39')]);_0x4203e1[_0xc00d('0x3a')]=qs['filters'](_['pick'](_0x71427['query'],_0xe87759[_0xc00d('0x3b')]));if(_0x71427[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x4203e1[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x4203e1[_0xc00d('0x3a')],{'$or':_['map'](_0x4203e1['attributes'],function(_0xe9b241){var _0x124cf7={};_0x124cf7[_0xe9b241]={'$like':'%'+_0x71427[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x124cf7;})});}_0x4203e1=_['merge']({},_0x4203e1,_0x71427[_0xc00d('0x40')]);return _0x6c34c0[_0xc00d('0x4a')](_0x4203e1);}})[_0xc00d('0x24')](function(_0xe4bd37){if(_0xe4bd37){_0x2e5eba=_0xe4bd37[_0xc00d('0x36')];if(!_0x71427[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x4203e1[_0xc00d('0x1c')]=qs['limit'](_0x71427[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x4203e1['offset']=qs[_0xc00d('0x1e')](_0x71427[_0xc00d('0x32')][_0xc00d('0x1e')]);}return _0x6c34c0[_0xc00d('0x4a')](_0x4203e1);}})['then'](function(_0x4f9867){if(_0x4f9867){return _0x4f9867?{'count':_0x2e5eba,'rows':_0x4f9867}:null;}})['then'](respondWithResult(_0x2ab708,null))[_0xc00d('0x44')](handleError(_0x2ab708,null));};exports[_0xc00d('0x4c')]=function(_0x415ea6,_0x41ab03,_0x4e5be8){var _0x115dd6={};var _0x5d88a2={};var _0x36529e;var _0x3cbecb;return db[_0xc00d('0x2b')][_0xc00d('0x4d')]({'where':{'id':_0x415ea6['params']['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x41ab03,null))['then'](function(_0x3eef2a){if(_0x3eef2a){_0x36529e=_0x3eef2a;_0x5d88a2['model']=_[_0xc00d('0x31')](db[_0xc00d('0x4e')][_0xc00d('0x2c')]);_0x5d88a2['query']=_[_0xc00d('0x31')](_0x415ea6[_0xc00d('0x32')]);_0x5d88a2['filters']=_[_0xc00d('0x33')](_0x5d88a2[_0xc00d('0x2f')],_0x5d88a2[_0xc00d('0x32')]);_0x115dd6[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x5d88a2[_0xc00d('0x2f')],qs['fields'](_0x415ea6[_0xc00d('0x32')]['fields']));_0x115dd6[_0xc00d('0x34')]=_0x115dd6['attributes']['length']?_0x115dd6[_0xc00d('0x34')]:_0x5d88a2[_0xc00d('0x2f')];_0x115dd6[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x415ea6['query'][_0xc00d('0x39')]);_0x115dd6[_0xc00d('0x3a')]=qs['filters'](_['pick'](_0x415ea6[_0xc00d('0x32')],_0x5d88a2[_0xc00d('0x3b')]));if(_0x415ea6[_0xc00d('0x32')]['filter']){_0x115dd6[_0xc00d('0x3a')]=_['merge'](_0x115dd6[_0xc00d('0x3a')],{'$or':_['map'](_0x115dd6['attributes'],function(_0xba9cdc){var _0x41ad29={};_0x41ad29[_0xba9cdc]={'$like':'%'+_0x415ea6[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x41ad29;})});}_0x115dd6=_[_0xc00d('0x3f')]({},_0x115dd6,_0x415ea6[_0xc00d('0x40')]);return _0x36529e[_0xc00d('0x4c')](_0x115dd6);}})[_0xc00d('0x24')](function(_0x53126d){if(_0x53126d){_0x3cbecb=_0x53126d[_0xc00d('0x36')];if(!_0x415ea6[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x115dd6['limit']=qs[_0xc00d('0x1c')](_0x415ea6['query'][_0xc00d('0x1c')]);_0x115dd6['offset']=qs['offset'](_0x415ea6['query'][_0xc00d('0x1e')]);}return _0x36529e['getSubjects'](_0x115dd6);}})['then'](function(_0x1cf829){if(_0x1cf829){return _0x1cf829?{'count':_0x3cbecb,'rows':_0x1cf829}:null;}})[_0xc00d('0x24')](respondWithResult(_0x41ab03,null))[_0xc00d('0x44')](handleError(_0x41ab03,null));};exports['getDescriptions']=function(_0x4f00e5,_0x4f0d24,_0x147622){var _0x64d123={};var _0x929d9c={};var _0x2eb130;var _0x2d4cea;return db['ZendeskConfiguration'][_0xc00d('0x4d')]({'where':{'id':_0x4f00e5[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x4f0d24,null))['then'](function(_0x264d6f){if(_0x264d6f){_0x2eb130=_0x264d6f;_0x929d9c[_0xc00d('0x2f')]=_[_0xc00d('0x31')](db[_0xc00d('0x4e')][_0xc00d('0x2c')]);_0x929d9c[_0xc00d('0x32')]=_['keys'](_0x4f00e5['query']);_0x929d9c[_0xc00d('0x3b')]=_[_0xc00d('0x33')](_0x929d9c[_0xc00d('0x2f')],_0x929d9c[_0xc00d('0x32')]);_0x64d123[_0xc00d('0x34')]=_[_0xc00d('0x33')](_0x929d9c['model'],qs[_0xc00d('0x35')](_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x35')]));_0x64d123[_0xc00d('0x34')]=_0x64d123[_0xc00d('0x34')]['length']?_0x64d123[_0xc00d('0x34')]:_0x929d9c[_0xc00d('0x2f')];_0x64d123['order']=qs[_0xc00d('0x39')](_0x4f00e5[_0xc00d('0x32')]['sort']);_0x64d123[_0xc00d('0x3a')]=qs['filters'](_[_0xc00d('0x3c')](_0x4f00e5[_0xc00d('0x32')],_0x929d9c[_0xc00d('0x3b')]));if(_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x3d')]){_0x64d123[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x64d123['where'],{'$or':_[_0xc00d('0x30')](_0x64d123['attributes'],function(_0x72760a){var _0x5a577f={};_0x5a577f[_0x72760a]={'$like':'%'+_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0x5a577f;})});}_0x64d123=_[_0xc00d('0x3f')]({},_0x64d123,_0x4f00e5['options']);return _0x2eb130[_0xc00d('0x4f')](_0x64d123);}})[_0xc00d('0x24')](function(_0x3252b3){if(_0x3252b3){_0x2d4cea=_0x3252b3[_0xc00d('0x36')];if(!_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x4b')](_0xc00d('0x37'))){_0x64d123[_0xc00d('0x1c')]=qs['limit'](_0x4f00e5[_0xc00d('0x32')][_0xc00d('0x1c')]);_0x64d123[_0xc00d('0x1e')]=qs[_0xc00d('0x1e')](_0x4f00e5[_0xc00d('0x32')]['offset']);}return _0x2eb130[_0xc00d('0x4f')](_0x64d123);}})[_0xc00d('0x24')](function(_0x122e77){if(_0x122e77){return _0x122e77?{'count':_0x2d4cea,'rows':_0x122e77}:null;}})[_0xc00d('0x24')](respondWithResult(_0x4f0d24,null))[_0xc00d('0x44')](handleError(_0x4f0d24,null));};exports['getTags']=function(_0x2cc3b2,_0x34e4a6,_0x1c0b26){var _0x1c6bdd={};var _0x50e6fd={};var _0x52d0d3;var _0x6405fb;return db[_0xc00d('0x2b')][_0xc00d('0x4d')]({'where':{'id':_0x2cc3b2[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x34e4a6,null))[_0xc00d('0x24')](function(_0x1830ad){if(_0x1830ad){_0x52d0d3=_0x1830ad;_0x50e6fd[_0xc00d('0x2f')]=_['keys'](db['Tag'][_0xc00d('0x2c')]);_0x50e6fd[_0xc00d('0x32')]=_[_0xc00d('0x31')](_0x2cc3b2[_0xc00d('0x32')]);_0x50e6fd['filters']=_[_0xc00d('0x33')](_0x50e6fd[_0xc00d('0x2f')],_0x50e6fd[_0xc00d('0x32')]);_0x1c6bdd['attributes']=_['intersection'](_0x50e6fd[_0xc00d('0x2f')],qs[_0xc00d('0x35')](_0x2cc3b2[_0xc00d('0x32')]['fields']));_0x1c6bdd[_0xc00d('0x34')]=_0x1c6bdd[_0xc00d('0x34')]['length']?_0x1c6bdd['attributes']:_0x50e6fd[_0xc00d('0x2f')];_0x1c6bdd[_0xc00d('0x38')]=qs[_0xc00d('0x39')](_0x2cc3b2[_0xc00d('0x32')]['sort']);_0x1c6bdd[_0xc00d('0x3a')]=qs[_0xc00d('0x3b')](_[_0xc00d('0x3c')](_0x2cc3b2['query'],_0x50e6fd[_0xc00d('0x3b')]));if(_0x2cc3b2['query'][_0xc00d('0x3d')]){_0x1c6bdd[_0xc00d('0x3a')]=_[_0xc00d('0x3f')](_0x1c6bdd[_0xc00d('0x3a')],{'$or':_['map'](_0x1c6bdd['attributes'],function(_0xca61e6){var _0xc5d3a9={};_0xc5d3a9[_0xca61e6]={'$like':'%'+_0x2cc3b2[_0xc00d('0x32')][_0xc00d('0x3d')]+'%'};return _0xc5d3a9;})});}_0x1c6bdd=_[_0xc00d('0x3f')]({},_0x1c6bdd,_0x2cc3b2[_0xc00d('0x40')]);return _0x52d0d3[_0xc00d('0x50')](_0x1c6bdd);}})[_0xc00d('0x24')](function(_0x3dfe13){if(_0x3dfe13){_0x6405fb=_0x3dfe13[_0xc00d('0x36')];if(!_0x2cc3b2[_0xc00d('0x32')]['hasOwnProperty'](_0xc00d('0x37'))){_0x1c6bdd['limit']=qs[_0xc00d('0x1c')](_0x2cc3b2['query'][_0xc00d('0x1c')]);_0x1c6bdd['offset']=qs[_0xc00d('0x1e')](_0x2cc3b2[_0xc00d('0x32')][_0xc00d('0x1e')]);}return _0x52d0d3[_0xc00d('0x50')](_0x1c6bdd);}})['then'](function(_0x53f0d5){if(_0x53f0d5){return _0x53f0d5?{'count':_0x6405fb,'rows':_0x53f0d5}:null;}})[_0xc00d('0x24')](respondWithResult(_0x34e4a6,null))[_0xc00d('0x44')](handleError(_0x34e4a6,null));};exports['setTags']=function(_0xf666fa,_0x49a816,_0x386be6){if(_0xf666fa[_0xc00d('0x48')]['id']){delete _0xf666fa['body']['id'];}return db['ZendeskConfiguration'][_0xc00d('0x4d')]({'where':{'id':_0xf666fa[_0xc00d('0x45')]['id']}})[_0xc00d('0x24')](handleEntityNotFound(_0x49a816,null))[_0xc00d('0x24')](function(_0xee59d0){if(_0xee59d0){return _0xee59d0[_0xc00d('0x51')](_0xf666fa[_0xc00d('0x48')][_0xc00d('0x52')]||[]);}return null;})[_0xc00d('0x24')](respondWithResult(_0x49a816,null))[_0xc00d('0x44')](handleError(_0x49a816,null));};
\ No newline at end of file
+var _0x9b17=['name','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','create','body','update','params','find','getFields','findOne','ZendeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','then','destroy'];(function(_0x249dde,_0x3dc853){var _0x2d24ab=function(_0x5429a4){while(--_0x5429a4){_0x249dde['push'](_0x249dde['shift']());}};_0x2d24ab(++_0x3dc853);}(_0x9b17,0x112));var _0x79b1=function(_0x50bbc3,_0x5e6775){_0x50bbc3=_0x50bbc3-0x0;var _0x40451e=_0x9b17[_0x50bbc3];return _0x40451e;};'use strict';var emlformat=require(_0x79b1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x79b1('0x1'));var jsonpatch=require(_0x79b1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x79b1('0x3'));var Mustache=require(_0x79b1('0x4'));var util=require(_0x79b1('0x5'));var path=require(_0x79b1('0x6'));var sox=require(_0x79b1('0x7'));var csv=require(_0x79b1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x79b1('0x9'));var _=require(_0x79b1('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x79b1('0xb'));var deskjs=require(_0x79b1('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x79b1('0xd'));var authService=require(_0x79b1('0xe'));var qs=require(_0x79b1('0xf'));var as=require(_0x79b1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x79b1('0x11'))(_0x79b1('0x12'));var utils=require(_0x79b1('0x13'));var config=require(_0x79b1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x79b1('0x15'))['db'];function respondWithStatusCode(_0x19affb,_0x298113){_0x298113=_0x298113||0xcc;return function(_0x3c59ca){if(_0x3c59ca){return _0x19affb[_0x79b1('0x16')](_0x298113);}return _0x19affb[_0x79b1('0x17')](_0x298113)[_0x79b1('0x18')]();};}function respondWithResult(_0x1f55dd,_0x42ce36){_0x42ce36=_0x42ce36||0xc8;return function(_0x5a891c){if(_0x5a891c){return _0x1f55dd[_0x79b1('0x17')](_0x42ce36)[_0x79b1('0x19')](_0x5a891c);}};}function respondWithFilteredResult(_0x1ff157,_0x56abf0){return function(_0x3c16e6){if(_0x3c16e6){var _0x41b757=typeof _0x56abf0[_0x79b1('0x1a')]===_0x79b1('0x1b')&&typeof _0x56abf0[_0x79b1('0x1c')]===_0x79b1('0x1b');var _0x578811=_0x3c16e6[_0x79b1('0x1d')];var _0x5f1ec1=_0x41b757?0x0:_0x56abf0[_0x79b1('0x1a')];var _0x5748e6=_0x41b757?_0x3c16e6[_0x79b1('0x1d')]:_0x56abf0[_0x79b1('0x1a')]+_0x56abf0['limit'];var _0x1ae48c;if(_0x5748e6>=_0x578811){_0x5748e6=_0x578811;_0x1ae48c=0xc8;}else{_0x1ae48c=0xce;}_0x1ff157[_0x79b1('0x17')](_0x1ae48c);return _0x1ff157['set'](_0x79b1('0x1e'),_0x5f1ec1+'-'+_0x5748e6+'/'+_0x578811)['json'](_0x3c16e6);}return null;};}function patchUpdates(_0x333b98){return function(_0x4a9383){try{jsonpatch['apply'](_0x4a9383,_0x333b98,!![]);}catch(_0x46adc0){return BPromise[_0x79b1('0x1f')](_0x46adc0);}return _0x4a9383['save']();};}function saveUpdates(_0x190617,_0x1a047c){return function(_0x76365d){if(_0x76365d){return _0x76365d['update'](_0x190617)[_0x79b1('0x20')](function(_0x4494e1){return _0x4494e1;});}return null;};}function removeEntity(_0x59f93b,_0x5a5a5){return function(_0x523584){if(_0x523584){return _0x523584[_0x79b1('0x21')]()[_0x79b1('0x20')](function(){_0x59f93b[_0x79b1('0x17')](0xcc)[_0x79b1('0x18')]();});}};}function handleEntityNotFound(_0x79a684,_0x74476a){return function(_0x477134){if(!_0x477134){_0x79a684[_0x79b1('0x16')](0x194);}return _0x477134;};}function handleError(_0x54ca9f,_0x43be79){_0x43be79=_0x43be79||0x1f4;return function(_0x566396){logger['error'](_0x566396['stack']);if(_0x566396[_0x79b1('0x22')]){delete _0x566396[_0x79b1('0x22')];}_0x54ca9f[_0x79b1('0x17')](_0x43be79)['send'](_0x566396);};}exports['index']=function(_0x39cf00,_0x45592b){var _0x1385ff={},_0x167915={},_0x38242e={'count':0x0,'rows':[]};var _0x5c4e63=_[_0x79b1('0x23')](db[_0x79b1('0x24')][_0x79b1('0x25')],function(_0x5c9497){return{'name':_0x5c9497[_0x79b1('0x26')],'type':_0x5c9497[_0x79b1('0x27')][_0x79b1('0x28')]};});_0x167915[_0x79b1('0x29')]=_[_0x79b1('0x23')](_0x5c4e63,'name');_0x167915[_0x79b1('0x2a')]=_[_0x79b1('0x2b')](_0x39cf00[_0x79b1('0x2a')]);_0x167915[_0x79b1('0x2c')]=_[_0x79b1('0x2d')](_0x167915[_0x79b1('0x29')],_0x167915[_0x79b1('0x2a')]);_0x1385ff[_0x79b1('0x2e')]=_['intersection'](_0x167915[_0x79b1('0x29')],qs[_0x79b1('0x2f')](_0x39cf00['query'][_0x79b1('0x2f')]));_0x1385ff[_0x79b1('0x2e')]=_0x1385ff[_0x79b1('0x2e')][_0x79b1('0x30')]?_0x1385ff[_0x79b1('0x2e')]:_0x167915['model'];if(!_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x31')](_0x79b1('0x32'))){_0x1385ff[_0x79b1('0x1c')]=qs[_0x79b1('0x1c')](_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x1c')]);_0x1385ff[_0x79b1('0x1a')]=qs[_0x79b1('0x1a')](_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x1a')]);}_0x1385ff[_0x79b1('0x33')]=qs['sort'](_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x34')]);_0x1385ff[_0x79b1('0x35')]=qs[_0x79b1('0x2c')](_[_0x79b1('0x36')](_0x39cf00[_0x79b1('0x2a')],_0x167915['filters']),_0x5c4e63);if(_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x37')]){_0x1385ff[_0x79b1('0x35')]=_[_0x79b1('0x38')](_0x1385ff[_0x79b1('0x35')],{'$or':_[_0x79b1('0x23')](_0x5c4e63,function(_0x277cd5){if(_0x277cd5[_0x79b1('0x27')]!==_0x79b1('0x39')){var _0xa5ca82={};_0xa5ca82[_0x277cd5[_0x79b1('0x22')]]={'$like':'%'+_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x37')]+'%'};return _0xa5ca82;}})});}_0x1385ff=_[_0x79b1('0x38')]({},_0x1385ff,_0x39cf00[_0x79b1('0x3a')]);var _0x7ff7ba={'where':_0x1385ff[_0x79b1('0x35')]};return db['ZendeskConfiguration'][_0x79b1('0x1d')](_0x7ff7ba)[_0x79b1('0x20')](function(_0x919c65){_0x38242e[_0x79b1('0x1d')]=_0x919c65;if(_0x39cf00[_0x79b1('0x2a')][_0x79b1('0x3b')]){_0x1385ff[_0x79b1('0x3c')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x79b1('0x3d')](_0x1385ff);})[_0x79b1('0x20')](function(_0x6e695f){_0x38242e['rows']=_0x6e695f;return _0x38242e;})[_0x79b1('0x20')](respondWithFilteredResult(_0x45592b,_0x1385ff))[_0x79b1('0x3e')](handleError(_0x45592b,null));};exports['show']=function(_0x3aa7d0,_0x5ebe50){var _0x56b88b={'raw':![],'where':{'id':_0x3aa7d0['params']['id']}},_0x562a64={};_0x562a64['model']=_[_0x79b1('0x2b')](db[_0x79b1('0x24')]['rawAttributes']);_0x562a64[_0x79b1('0x2a')]=_[_0x79b1('0x2b')](_0x3aa7d0[_0x79b1('0x2a')]);_0x562a64[_0x79b1('0x2c')]=_[_0x79b1('0x2d')](_0x562a64[_0x79b1('0x29')],_0x562a64[_0x79b1('0x2a')]);_0x56b88b[_0x79b1('0x2e')]=_[_0x79b1('0x2d')](_0x562a64[_0x79b1('0x29')],qs[_0x79b1('0x2f')](_0x3aa7d0[_0x79b1('0x2a')]['fields']));_0x56b88b[_0x79b1('0x2e')]=_0x56b88b['attributes'][_0x79b1('0x30')]?_0x56b88b[_0x79b1('0x2e')]:_0x562a64['model'];if(_0x3aa7d0['query']['includeAll']){_0x56b88b[_0x79b1('0x3c')]=[{'all':!![]}];}_0x56b88b=_[_0x79b1('0x38')]({},_0x56b88b,_0x3aa7d0[_0x79b1('0x3a')]);return db[_0x79b1('0x24')]['find'](_0x56b88b)[_0x79b1('0x20')](handleEntityNotFound(_0x5ebe50,null))[_0x79b1('0x20')](respondWithResult(_0x5ebe50,null))[_0x79b1('0x3e')](handleError(_0x5ebe50,null));};exports['create']=function(_0x3dba07,_0x114ac0){return db[_0x79b1('0x24')][_0x79b1('0x3f')](_0x3dba07[_0x79b1('0x40')],{})['then'](respondWithResult(_0x114ac0,0xc9))[_0x79b1('0x3e')](handleError(_0x114ac0,null));};exports[_0x79b1('0x41')]=function(_0x549ba0,_0x3f8b7d){if(_0x549ba0[_0x79b1('0x40')]['id']){delete _0x549ba0[_0x79b1('0x40')]['id'];}return db[_0x79b1('0x24')]['find']({'where':{'id':_0x549ba0[_0x79b1('0x42')]['id']}})['then'](handleEntityNotFound(_0x3f8b7d,null))[_0x79b1('0x20')](saveUpdates(_0x549ba0[_0x79b1('0x40')],null))[_0x79b1('0x20')](respondWithResult(_0x3f8b7d,null))[_0x79b1('0x3e')](handleError(_0x3f8b7d,null));};exports[_0x79b1('0x21')]=function(_0x2d4215,_0x14fb6a){return db[_0x79b1('0x24')][_0x79b1('0x43')]({'where':{'id':_0x2d4215[_0x79b1('0x42')]['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x14fb6a,null))['then'](removeEntity(_0x14fb6a,null))[_0x79b1('0x3e')](handleError(_0x14fb6a,null));};exports[_0x79b1('0x44')]=function(_0x2199ca,_0x59ab2d,_0xe3224){var _0x317805={};var _0x7c160d={};var _0xb86e79;var _0x3901b7;return db[_0x79b1('0x24')][_0x79b1('0x45')]({'where':{'id':_0x2199ca[_0x79b1('0x42')]['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x59ab2d,null))[_0x79b1('0x20')](function(_0x179938){if(_0x179938){_0xb86e79=_0x179938;_0x7c160d[_0x79b1('0x29')]=_[_0x79b1('0x2b')](db[_0x79b1('0x46')]['rawAttributes']);_0x7c160d['query']=_[_0x79b1('0x2b')](_0x2199ca['query']);_0x7c160d[_0x79b1('0x2c')]=_[_0x79b1('0x2d')](_0x7c160d['model'],_0x7c160d[_0x79b1('0x2a')]);_0x317805[_0x79b1('0x2e')]=_[_0x79b1('0x2d')](_0x7c160d[_0x79b1('0x29')],qs[_0x79b1('0x2f')](_0x2199ca['query'][_0x79b1('0x2f')]));_0x317805['attributes']=_0x317805[_0x79b1('0x2e')][_0x79b1('0x30')]?_0x317805[_0x79b1('0x2e')]:_0x7c160d[_0x79b1('0x29')];_0x317805['order']=qs[_0x79b1('0x34')](_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x34')]);_0x317805[_0x79b1('0x35')]=qs[_0x79b1('0x2c')](_[_0x79b1('0x36')](_0x2199ca['query'],_0x7c160d[_0x79b1('0x2c')]));if(_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x37')]){_0x317805['where']=_[_0x79b1('0x38')](_0x317805['where'],{'$or':_[_0x79b1('0x23')](_0x317805[_0x79b1('0x2e')],function(_0x1f4385){var _0x274fcb={};_0x274fcb[_0x1f4385]={'$like':'%'+_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x37')]+'%'};return _0x274fcb;})});}_0x317805=_[_0x79b1('0x38')]({},_0x317805,_0x2199ca[_0x79b1('0x3a')]);return _0xb86e79[_0x79b1('0x44')](_0x317805);}})['then'](function(_0x4a0c25){if(_0x4a0c25){_0x3901b7=_0x4a0c25[_0x79b1('0x30')];if(!_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x31')](_0x79b1('0x32'))){_0x317805[_0x79b1('0x1c')]=qs[_0x79b1('0x1c')](_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x1c')]);_0x317805['offset']=qs['offset'](_0x2199ca[_0x79b1('0x2a')][_0x79b1('0x1a')]);}return _0xb86e79[_0x79b1('0x44')](_0x317805);}})[_0x79b1('0x20')](function(_0x996f3e){if(_0x996f3e){return _0x996f3e?{'count':_0x3901b7,'rows':_0x996f3e}:null;}})[_0x79b1('0x20')](respondWithResult(_0x59ab2d,null))[_0x79b1('0x3e')](handleError(_0x59ab2d,null));};exports[_0x79b1('0x47')]=function(_0x359535,_0x4e9be7,_0x178b07){var _0x52cf92={};var _0xdbbc38={};var _0x573954;var _0x4c3b60;return db['ZendeskConfiguration'][_0x79b1('0x45')]({'where':{'id':_0x359535['params']['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x4e9be7,null))[_0x79b1('0x20')](function(_0x13e523){if(_0x13e523){_0x573954=_0x13e523;_0xdbbc38[_0x79b1('0x29')]=_[_0x79b1('0x2b')](db[_0x79b1('0x46')][_0x79b1('0x25')]);_0xdbbc38[_0x79b1('0x2a')]=_['keys'](_0x359535[_0x79b1('0x2a')]);_0xdbbc38[_0x79b1('0x2c')]=_[_0x79b1('0x2d')](_0xdbbc38[_0x79b1('0x29')],_0xdbbc38[_0x79b1('0x2a')]);_0x52cf92[_0x79b1('0x2e')]=_['intersection'](_0xdbbc38[_0x79b1('0x29')],qs[_0x79b1('0x2f')](_0x359535[_0x79b1('0x2a')][_0x79b1('0x2f')]));_0x52cf92['attributes']=_0x52cf92[_0x79b1('0x2e')][_0x79b1('0x30')]?_0x52cf92[_0x79b1('0x2e')]:_0xdbbc38[_0x79b1('0x29')];_0x52cf92['order']=qs[_0x79b1('0x34')](_0x359535[_0x79b1('0x2a')][_0x79b1('0x34')]);_0x52cf92[_0x79b1('0x35')]=qs[_0x79b1('0x2c')](_[_0x79b1('0x36')](_0x359535['query'],_0xdbbc38[_0x79b1('0x2c')]));if(_0x359535[_0x79b1('0x2a')]['filter']){_0x52cf92['where']=_['merge'](_0x52cf92['where'],{'$or':_[_0x79b1('0x23')](_0x52cf92[_0x79b1('0x2e')],function(_0x1dfc29){var _0x48bfda={};_0x48bfda[_0x1dfc29]={'$like':'%'+_0x359535[_0x79b1('0x2a')]['filter']+'%'};return _0x48bfda;})});}_0x52cf92=_['merge']({},_0x52cf92,_0x359535['options']);return _0x573954[_0x79b1('0x47')](_0x52cf92);}})[_0x79b1('0x20')](function(_0x175237){if(_0x175237){_0x4c3b60=_0x175237['length'];if(!_0x359535[_0x79b1('0x2a')][_0x79b1('0x31')](_0x79b1('0x32'))){_0x52cf92[_0x79b1('0x1c')]=qs[_0x79b1('0x1c')](_0x359535[_0x79b1('0x2a')][_0x79b1('0x1c')]);_0x52cf92[_0x79b1('0x1a')]=qs[_0x79b1('0x1a')](_0x359535[_0x79b1('0x2a')][_0x79b1('0x1a')]);}return _0x573954[_0x79b1('0x47')](_0x52cf92);}})['then'](function(_0x2c4b64){if(_0x2c4b64){return _0x2c4b64?{'count':_0x4c3b60,'rows':_0x2c4b64}:null;}})['then'](respondWithResult(_0x4e9be7,null))['catch'](handleError(_0x4e9be7,null));};exports[_0x79b1('0x48')]=function(_0x10d8e1,_0x2f8a74,_0x34b91e){var _0x6df65b={};var _0x5750c2={};var _0x1c3f31;var _0x32d039;return db[_0x79b1('0x24')][_0x79b1('0x45')]({'where':{'id':_0x10d8e1[_0x79b1('0x42')]['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x2f8a74,null))['then'](function(_0xa906f8){if(_0xa906f8){_0x1c3f31=_0xa906f8;_0x5750c2[_0x79b1('0x29')]=_[_0x79b1('0x2b')](db[_0x79b1('0x46')][_0x79b1('0x25')]);_0x5750c2[_0x79b1('0x2a')]=_[_0x79b1('0x2b')](_0x10d8e1[_0x79b1('0x2a')]);_0x5750c2[_0x79b1('0x2c')]=_[_0x79b1('0x2d')](_0x5750c2[_0x79b1('0x29')],_0x5750c2[_0x79b1('0x2a')]);_0x6df65b[_0x79b1('0x2e')]=_[_0x79b1('0x2d')](_0x5750c2['model'],qs[_0x79b1('0x2f')](_0x10d8e1[_0x79b1('0x2a')][_0x79b1('0x2f')]));_0x6df65b['attributes']=_0x6df65b[_0x79b1('0x2e')][_0x79b1('0x30')]?_0x6df65b['attributes']:_0x5750c2['model'];_0x6df65b['order']=qs[_0x79b1('0x34')](_0x10d8e1[_0x79b1('0x2a')][_0x79b1('0x34')]);_0x6df65b[_0x79b1('0x35')]=qs[_0x79b1('0x2c')](_[_0x79b1('0x36')](_0x10d8e1[_0x79b1('0x2a')],_0x5750c2[_0x79b1('0x2c')]));if(_0x10d8e1[_0x79b1('0x2a')]['filter']){_0x6df65b['where']=_[_0x79b1('0x38')](_0x6df65b[_0x79b1('0x35')],{'$or':_[_0x79b1('0x23')](_0x6df65b[_0x79b1('0x2e')],function(_0x2df524){var _0x20b81a={};_0x20b81a[_0x2df524]={'$like':'%'+_0x10d8e1[_0x79b1('0x2a')]['filter']+'%'};return _0x20b81a;})});}_0x6df65b=_['merge']({},_0x6df65b,_0x10d8e1[_0x79b1('0x3a')]);return _0x1c3f31['getDescriptions'](_0x6df65b);}})[_0x79b1('0x20')](function(_0xfb486a){if(_0xfb486a){_0x32d039=_0xfb486a['length'];if(!_0x10d8e1[_0x79b1('0x2a')][_0x79b1('0x31')](_0x79b1('0x32'))){_0x6df65b[_0x79b1('0x1c')]=qs['limit'](_0x10d8e1[_0x79b1('0x2a')]['limit']);_0x6df65b[_0x79b1('0x1a')]=qs[_0x79b1('0x1a')](_0x10d8e1[_0x79b1('0x2a')]['offset']);}return _0x1c3f31[_0x79b1('0x48')](_0x6df65b);}})[_0x79b1('0x20')](function(_0xa1923e){if(_0xa1923e){return _0xa1923e?{'count':_0x32d039,'rows':_0xa1923e}:null;}})[_0x79b1('0x20')](respondWithResult(_0x2f8a74,null))[_0x79b1('0x3e')](handleError(_0x2f8a74,null));};exports[_0x79b1('0x49')]=function(_0x4e48a0,_0x47acf8,_0x2b8095){var _0x1407d7={};var _0x249b2e={};var _0x3b3e54;var _0x54491d;return db['ZendeskConfiguration'][_0x79b1('0x45')]({'where':{'id':_0x4e48a0[_0x79b1('0x42')]['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x47acf8,null))[_0x79b1('0x20')](function(_0x1a970e){if(_0x1a970e){_0x3b3e54=_0x1a970e;_0x249b2e[_0x79b1('0x29')]=_[_0x79b1('0x2b')](db[_0x79b1('0x4a')][_0x79b1('0x25')]);_0x249b2e['query']=_[_0x79b1('0x2b')](_0x4e48a0[_0x79b1('0x2a')]);_0x249b2e['filters']=_[_0x79b1('0x2d')](_0x249b2e[_0x79b1('0x29')],_0x249b2e[_0x79b1('0x2a')]);_0x1407d7[_0x79b1('0x2e')]=_[_0x79b1('0x2d')](_0x249b2e[_0x79b1('0x29')],qs['fields'](_0x4e48a0['query'][_0x79b1('0x2f')]));_0x1407d7[_0x79b1('0x2e')]=_0x1407d7[_0x79b1('0x2e')][_0x79b1('0x30')]?_0x1407d7[_0x79b1('0x2e')]:_0x249b2e['model'];_0x1407d7[_0x79b1('0x33')]=qs[_0x79b1('0x34')](_0x4e48a0[_0x79b1('0x2a')]['sort']);_0x1407d7[_0x79b1('0x35')]=qs[_0x79b1('0x2c')](_[_0x79b1('0x36')](_0x4e48a0[_0x79b1('0x2a')],_0x249b2e[_0x79b1('0x2c')]));if(_0x4e48a0[_0x79b1('0x2a')][_0x79b1('0x37')]){_0x1407d7[_0x79b1('0x35')]=_[_0x79b1('0x38')](_0x1407d7['where'],{'$or':_[_0x79b1('0x23')](_0x1407d7[_0x79b1('0x2e')],function(_0x176b39){var _0x46882e={};_0x46882e[_0x176b39]={'$like':'%'+_0x4e48a0[_0x79b1('0x2a')][_0x79b1('0x37')]+'%'};return _0x46882e;})});}_0x1407d7=_[_0x79b1('0x38')]({},_0x1407d7,_0x4e48a0[_0x79b1('0x3a')]);return _0x3b3e54[_0x79b1('0x49')](_0x1407d7);}})[_0x79b1('0x20')](function(_0x26e088){if(_0x26e088){_0x54491d=_0x26e088['length'];if(!_0x4e48a0[_0x79b1('0x2a')][_0x79b1('0x31')]('nolimit')){_0x1407d7[_0x79b1('0x1c')]=qs[_0x79b1('0x1c')](_0x4e48a0[_0x79b1('0x2a')][_0x79b1('0x1c')]);_0x1407d7['offset']=qs[_0x79b1('0x1a')](_0x4e48a0['query']['offset']);}return _0x3b3e54['getTags'](_0x1407d7);}})[_0x79b1('0x20')](function(_0x1265b1){if(_0x1265b1){return _0x1265b1?{'count':_0x54491d,'rows':_0x1265b1}:null;}})['then'](respondWithResult(_0x47acf8,null))['catch'](handleError(_0x47acf8,null));};exports[_0x79b1('0x4b')]=function(_0x8eaf5e,_0x46c8f2,_0x3605a0){if(_0x8eaf5e[_0x79b1('0x40')]['id']){delete _0x8eaf5e['body']['id'];}return db[_0x79b1('0x24')][_0x79b1('0x45')]({'where':{'id':_0x8eaf5e['params']['id']}})[_0x79b1('0x20')](handleEntityNotFound(_0x46c8f2,null))['then'](function(_0x1421ff){if(_0x1421ff){return _0x1421ff[_0x79b1('0x4b')](_0x8eaf5e[_0x79b1('0x40')][_0x79b1('0x4c')]||[]);}return null;})[_0x79b1('0x20')](respondWithResult(_0x46c8f2,null))[_0x79b1('0x3e')](handleError(_0x46c8f2,null));};
\ No newline at end of file
index 281735d..3c3bdcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['int_zendesk_configurations','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','ZendeskConfiguration'];(function(_0x7d87a5,_0x365868){var _0x1fd89d=function(_0x5e0a36){while(--_0x5e0a36){_0x7d87a5['push'](_0x7d87a5['shift']());}};_0x1fd89d(++_0x365868);}(_0x5b12,0xa3));var _0x25b1=function(_0x470b4d,_0x5b797d){_0x470b4d=_0x470b4d-0x0;var _0xa6664e=_0x5b12[_0x470b4d];return _0xa6664e;};'use strict';var _=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var logger=require(_0x25b1('0x2'))('api');var moment=require(_0x25b1('0x3'));var BPromise=require('bluebird');var rp=require(_0x25b1('0x4'));var fs=require('fs');var path=require(_0x25b1('0x5'));var rimraf=require('rimraf');var config=require(_0x25b1('0x6'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x35d90b,_0x5523c9){return _0x35d90b['define'](_0x25b1('0x7'),attributes,{'tableName':_0x25b1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb3b=['moment','path','../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','api'];(function(_0x1e72fa,_0x30912d){var _0x361eba=function(_0x3d6c76){while(--_0x3d6c76){_0x1e72fa['push'](_0x1e72fa['shift']());}};_0x361eba(++_0x30912d);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x50b1c5,_0x1cf2a9){_0x50b1c5=_0x50b1c5-0x0;var _0x344f99=_0xeb3b[_0x50b1c5];return _0x344f99;};'use strict';var _=require(_0xbeb3('0x0'));var util=require(_0xbeb3('0x1'));var logger=require(_0xbeb3('0x2'))(_0xbeb3('0x3'));var moment=require(_0xbeb3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbeb3('0x5'));var rimraf=require('rimraf');var config=require(_0xbeb3('0x6'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xbeb3('0x7')]=function(_0x5ae6f9,_0x8d8cce){return _0x5ae6f9[_0xbeb3('0x8')](_0xbeb3('0x9'),attributes,{'tableName':_0xbeb3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67d3e7e..ee8875f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb491=['message','request\x20sent','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x1b71fb,_0x2a0ac9){var _0x5d417d=function(_0x2d4da6){while(--_0x2d4da6){_0x1b71fb['push'](_0x1b71fb['shift']());}};_0x5d417d(++_0x2a0ac9);}(_0xb491,0x147));var _0x1b49=function(_0x92713a,_0x68f8b0){_0x92713a=_0x92713a-0x0;var _0x1893e1=_0xb491[_0x92713a];return _0x1893e1;};'use strict';var _=require('lodash');var util=require(_0x1b49('0x0'));var moment=require(_0x1b49('0x1'));var BPromise=require(_0x1b49('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b49('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b49('0x4'));var logger=require(_0x1b49('0x5'))(_0x1b49('0x6'));var config=require('../../config/environment');var jayson=require(_0x1b49('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c71bd,_0x5469c2,_0x280a35){return new BPromise(function(_0x191745,_0x257f59){return client['request'](_0x3c71bd,_0x280a35)[_0x1b49('0x8')](function(_0x1e3f92){logger[_0x1b49('0x9')](_0x1b49('0xa'),_0x5469c2,'request\x20sent');logger[_0x1b49('0xb')](_0x1b49('0xc'),_0x5469c2,'request\x20sent',JSON['stringify'](_0x1e3f92));if(_0x1e3f92[_0x1b49('0xd')]){if(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xe')]===0x1f4){logger[_0x1b49('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x5469c2,_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);return _0x257f59(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);}logger[_0x1b49('0xd')](_0x1b49('0xa'),_0x5469c2,_0x1e3f92['error'][_0x1b49('0xf')]);return _0x191745(_0x1e3f92[_0x1b49('0xd')][_0x1b49('0xf')]);}else{logger[_0x1b49('0x9')](_0x1b49('0xa'),_0x5469c2,_0x1b49('0x10'));_0x191745(_0x1e3f92[_0x1b49('0x11')]['message']);}})['catch'](function(_0x41cb2a){logger['error'](_0x1b49('0xa'),_0x5469c2,_0x41cb2a);_0x257f59(_0x41cb2a);});});}
\ No newline at end of file
+var _0x6393=['rpc','../../config/environment','jayson/promise','client','info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3d4ddb,_0x1c9228){var _0x46ea55=function(_0x5aea0d){while(--_0x5aea0d){_0x3d4ddb['push'](_0x3d4ddb['shift']());}};_0x46ea55(++_0x1c9228);}(_0x6393,0x1da));var _0x3639=function(_0x3128b3,_0x4e8233){_0x3128b3=_0x3128b3-0x0;var _0x469a38=_0x6393[_0x3128b3];return _0x469a38;};'use strict';var _=require(_0x3639('0x0'));var util=require(_0x3639('0x1'));var moment=require(_0x3639('0x2'));var BPromise=require(_0x3639('0x3'));var rs=require(_0x3639('0x4'));var fs=require('fs');var Redis=require(_0x3639('0x5'));var db=require(_0x3639('0x6'))['db'];var utils=require(_0x3639('0x7'));var logger=require(_0x3639('0x8'))(_0x3639('0x9'));var config=require(_0x3639('0xa'));var jayson=require(_0x3639('0xb'));var client=jayson[_0x3639('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e016a,_0x1f5e3d,_0x467270){return new BPromise(function(_0x39beaf,_0x3bba92){return client['request'](_0x5e016a,_0x467270)['then'](function(_0x266a01){logger[_0x3639('0xd')](_0x3639('0xe'),_0x1f5e3d,'request\x20sent');logger[_0x3639('0xf')](_0x3639('0x10'),_0x1f5e3d,'request\x20sent',JSON[_0x3639('0x11')](_0x266a01));if(_0x266a01[_0x3639('0x12')]){if(_0x266a01['error'][_0x3639('0x13')]===0x1f4){logger[_0x3639('0x12')](_0x3639('0xe'),_0x1f5e3d,_0x266a01[_0x3639('0x12')][_0x3639('0x14')]);return _0x3bba92(_0x266a01[_0x3639('0x12')][_0x3639('0x14')]);}logger['error'](_0x3639('0xe'),_0x1f5e3d,_0x266a01[_0x3639('0x12')][_0x3639('0x14')]);return _0x39beaf(_0x266a01[_0x3639('0x12')][_0x3639('0x14')]);}else{logger[_0x3639('0xd')](_0x3639('0xe'),_0x1f5e3d,'request\x20sent');_0x39beaf(_0x266a01[_0x3639('0x15')][_0x3639('0x14')]);}})[_0x3639('0x16')](function(_0xc8eeb9){logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x1f5e3d,_0xc8eeb9);_0x3bba92(_0xc8eeb9);});});}
\ No newline at end of file
index b96ebf0..95ee1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d19=['isAuthenticated','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','post'];(function(_0x5c3bc2,_0x244b25){var _0x3e05a4=function(_0x32686e){while(--_0x32686e){_0x5c3bc2['push'](_0x5c3bc2['shift']());}};_0x3e05a4(++_0x244b25);}(_0x0d19,0x15c));var _0x90d1=function(_0x469852,_0x532e8c){_0x469852=_0x469852-0x0;var _0xa844b9=_0x0d19[_0x469852];return _0xa844b9;};'use strict';var multer=require(_0x90d1('0x0'));var util=require(_0x90d1('0x1'));var path=require('path');var timeout=require(_0x90d1('0x2'));var express=require(_0x90d1('0x3'));var router=express[_0x90d1('0x4')]();var fs_extra=require(_0x90d1('0x5'));var auth=require(_0x90d1('0x6'));var interaction=require(_0x90d1('0x7'));var config=require(_0x90d1('0x8'));var controller=require('./intZendeskField.controller');router[_0x90d1('0x9')]('/',auth['isAuthenticated'](),controller[_0x90d1('0xa')]);router[_0x90d1('0x9')](_0x90d1('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x90d1('0xc')]('/',auth[_0x90d1('0xd')](),controller['create']);router[_0x90d1('0xe')](_0x90d1('0xb'),auth[_0x90d1('0xd')](),controller[_0x90d1('0xf')]);router[_0x90d1('0x10')](_0x90d1('0xb'),auth[_0x90d1('0xd')](),controller[_0x90d1('0x11')]);module[_0x90d1('0x12')]=router;
\ No newline at end of file
+var _0x69da=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','/:id','isAuthenticated','show','create','put','update','delete','exports','multer','connect-timeout'];(function(_0x457d68,_0x4a15f6){var _0xd561ea=function(_0x3f641e){while(--_0x3f641e){_0x457d68['push'](_0x457d68['shift']());}};_0xd561ea(++_0x4a15f6);}(_0x69da,0xb9));var _0xa69d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x69da[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0xa69d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa69d('0x1'));var express=require(_0xa69d('0x2'));var router=express['Router']();var fs_extra=require(_0xa69d('0x3'));var auth=require(_0xa69d('0x4'));var interaction=require(_0xa69d('0x5'));var config=require(_0xa69d('0x6'));var controller=require(_0xa69d('0x7'));router[_0xa69d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa69d('0x8')](_0xa69d('0x9'),auth[_0xa69d('0xa')](),controller[_0xa69d('0xb')]);router['post']('/',auth[_0xa69d('0xa')](),controller[_0xa69d('0xc')]);router[_0xa69d('0xd')](_0xa69d('0x9'),auth['isAuthenticated'](),controller[_0xa69d('0xe')]);router[_0xa69d('0xf')](_0xa69d('0x9'),auth[_0xa69d('0xa')](),controller['destroy']);module[_0xa69d('0x10')]=router;
\ No newline at end of file
index f076fc9..f54ecb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x412a=['ENUM','string','variable','customVariable','STRING','BOOLEAN','exports'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x412a,0xa7));var _0xa412=function(_0xe17f2,_0xc98fb8){_0xe17f2=_0xe17f2-0x0;var _0x51cb24=_0x412a[_0xe17f2];return _0x51cb24;};'use strict';var Sequelize=require('sequelize');module[_0xa412('0x0')]={'type':{'type':Sequelize[_0xa412('0x1')](_0xa412('0x2'),_0xa412('0x3'),_0xa412('0x4'),'keyValue','picklist'),'defaultValue':_0xa412('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa412('0x5')]},'keyType':{'type':Sequelize[_0xa412('0x1')]('string',_0xa412('0x3'),_0xa412('0x4'))},'keyContent':{'type':Sequelize[_0xa412('0x5')]},'idField':{'type':Sequelize[_0xa412('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xa412('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa412('0x5')]}};
\ No newline at end of file
+var _0x5a12=['sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x36ad81,_0x295dd8){var _0x24ecfc=function(_0x1b5807){while(--_0x1b5807){_0x36ad81['push'](_0x36ad81['shift']());}};_0x24ecfc(++_0x295dd8);}(_0x5a12,0x1b0));var _0x25a1=function(_0x52e6b1,_0x411d59){_0x52e6b1=_0x52e6b1-0x0;var _0x5c3ffb=_0x5a12[_0x52e6b1];return _0x5c3ffb;};'use strict';var Sequelize=require(_0x25a1('0x0'));module['exports']={'type':{'type':Sequelize[_0x25a1('0x1')](_0x25a1('0x2'),_0x25a1('0x3'),_0x25a1('0x4'),_0x25a1('0x5'),_0x25a1('0x6')),'defaultValue':_0x25a1('0x2')},'content':{'type':Sequelize[_0x25a1('0x7')]},'key':{'type':Sequelize[_0x25a1('0x7')]},'keyType':{'type':Sequelize[_0x25a1('0x1')](_0x25a1('0x2'),_0x25a1('0x3'),_0x25a1('0x4'))},'keyContent':{'type':Sequelize[_0x25a1('0x7')]},'idField':{'type':Sequelize[_0x25a1('0x7')]},'nameField':{'type':Sequelize[_0x25a1('0x7')]},'customField':{'type':Sequelize[_0x25a1('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x25a1('0x7')]}};
\ No newline at end of file
index fe01540..1d4e1c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a6=['rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','ZendeskField','rawAttributes','fieldName','type','key','map','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','rows','show','params','keys','options','catch','create','body','find','eml-format'];(function(_0x582244,_0x33f08b){var _0x81f9e4=function(_0x1f63f8){while(--_0x1f63f8){_0x582244['push'](_0x582244['shift']());}};_0x81f9e4(++_0x33f08b);}(_0x03a6,0x1af));var _0x603a=function(_0x28e8ae,_0x2816ef){_0x28e8ae=_0x28e8ae-0x0;var _0x197456=_0x03a6[_0x28e8ae];return _0x197456;};'use strict';var emlformat=require(_0x603a('0x0'));var rimraf=require(_0x603a('0x1'));var zipdir=require(_0x603a('0x2'));var jsonpatch=require(_0x603a('0x3'));var rp=require(_0x603a('0x4'));var moment=require(_0x603a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x603a('0x6'));var util=require('util');var path=require(_0x603a('0x7'));var sox=require(_0x603a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x603a('0x9'));var _=require(_0x603a('0xa'));var squel=require(_0x603a('0xb'));var crypto=require(_0x603a('0xc'));var jsforce=require(_0x603a('0xd'));var deskjs=require(_0x603a('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x603a('0xf'));var Redis=require('ioredis');var authService=require(_0x603a('0x10'));var qs=require(_0x603a('0x11'));var as=require(_0x603a('0x12'));var hardwareService=require(_0x603a('0x13'));var logger=require(_0x603a('0x14'))('api');var utils=require(_0x603a('0x15'));var config=require(_0x603a('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d25d0,_0x2ceae3){_0x2ceae3=_0x2ceae3||0xcc;return function(_0x3ed776){if(_0x3ed776){return _0x3d25d0['sendStatus'](_0x2ceae3);}return _0x3d25d0[_0x603a('0x17')](_0x2ceae3)[_0x603a('0x18')]();};}function respondWithResult(_0x5790c9,_0x20de7d){_0x20de7d=_0x20de7d||0xc8;return function(_0xd11033){if(_0xd11033){return _0x5790c9['status'](_0x20de7d)[_0x603a('0x19')](_0xd11033);}};}function respondWithFilteredResult(_0x6514a3,_0x534999){return function(_0x1f7d20){if(_0x1f7d20){var _0x3f2f16=typeof _0x534999[_0x603a('0x1a')]===_0x603a('0x1b')&&typeof _0x534999[_0x603a('0x1c')]===_0x603a('0x1b');var _0x13e18e=_0x1f7d20[_0x603a('0x1d')];var _0x5e7460=_0x3f2f16?0x0:_0x534999[_0x603a('0x1a')];var _0x23f700=_0x3f2f16?_0x1f7d20[_0x603a('0x1d')]:_0x534999[_0x603a('0x1a')]+_0x534999[_0x603a('0x1c')];var _0x4ebe0b;if(_0x23f700>=_0x13e18e){_0x23f700=_0x13e18e;_0x4ebe0b=0xc8;}else{_0x4ebe0b=0xce;}_0x6514a3['status'](_0x4ebe0b);return _0x6514a3[_0x603a('0x1e')](_0x603a('0x1f'),_0x5e7460+'-'+_0x23f700+'/'+_0x13e18e)[_0x603a('0x19')](_0x1f7d20);}return null;};}function patchUpdates(_0xa8b049){return function(_0x26c036){try{jsonpatch['apply'](_0x26c036,_0xa8b049,!![]);}catch(_0x333e24){return BPromise['reject'](_0x333e24);}return _0x26c036[_0x603a('0x20')]();};}function saveUpdates(_0x2e7f47,_0x2e5f61){return function(_0x7fc3f){if(_0x7fc3f){return _0x7fc3f[_0x603a('0x21')](_0x2e7f47)[_0x603a('0x22')](function(_0x27c438){return _0x27c438;});}return null;};}function removeEntity(_0x27a009,_0xbfa436){return function(_0x3dc3dd){if(_0x3dc3dd){return _0x3dc3dd[_0x603a('0x23')]()['then'](function(){_0x27a009[_0x603a('0x17')](0xcc)[_0x603a('0x18')]();});}};}function handleEntityNotFound(_0x17fe1e,_0x367202){return function(_0x24a9af){if(!_0x24a9af){_0x17fe1e['sendStatus'](0x194);}return _0x24a9af;};}function handleError(_0x373dcc,_0x26af71){_0x26af71=_0x26af71||0x1f4;return function(_0x5e4e02){logger[_0x603a('0x24')](_0x5e4e02[_0x603a('0x25')]);if(_0x5e4e02[_0x603a('0x26')]){delete _0x5e4e02[_0x603a('0x26')];}_0x373dcc[_0x603a('0x17')](_0x26af71)[_0x603a('0x27')](_0x5e4e02);};}exports[_0x603a('0x28')]=function(_0x40df62,_0x18f18b){var _0x27e142={},_0x286616={},_0x376200={'count':0x0,'rows':[]};var _0x34c2ef=_['map'](db[_0x603a('0x29')][_0x603a('0x2a')],function(_0x326daf){return{'name':_0x326daf[_0x603a('0x2b')],'type':_0x326daf[_0x603a('0x2c')][_0x603a('0x2d')]};});_0x286616['model']=_[_0x603a('0x2e')](_0x34c2ef,_0x603a('0x26'));_0x286616[_0x603a('0x2f')]=_['keys'](_0x40df62[_0x603a('0x2f')]);_0x286616['filters']=_[_0x603a('0x30')](_0x286616[_0x603a('0x31')],_0x286616[_0x603a('0x2f')]);_0x27e142['attributes']=_[_0x603a('0x30')](_0x286616['model'],qs[_0x603a('0x32')](_0x40df62[_0x603a('0x2f')][_0x603a('0x32')]));_0x27e142[_0x603a('0x33')]=_0x27e142[_0x603a('0x33')]['length']?_0x27e142['attributes']:_0x286616['model'];if(!_0x40df62[_0x603a('0x2f')][_0x603a('0x34')](_0x603a('0x35'))){_0x27e142[_0x603a('0x1c')]=qs[_0x603a('0x1c')](_0x40df62[_0x603a('0x2f')][_0x603a('0x1c')]);_0x27e142[_0x603a('0x1a')]=qs[_0x603a('0x1a')](_0x40df62['query']['offset']);}_0x27e142[_0x603a('0x36')]=qs[_0x603a('0x37')](_0x40df62[_0x603a('0x2f')]['sort']);_0x27e142['where']=qs[_0x603a('0x38')](_[_0x603a('0x39')](_0x40df62[_0x603a('0x2f')],_0x286616['filters']),_0x34c2ef);if(_0x40df62['query'][_0x603a('0x3a')]){_0x27e142[_0x603a('0x3b')]=_[_0x603a('0x3c')](_0x27e142[_0x603a('0x3b')],{'$or':_[_0x603a('0x2e')](_0x34c2ef,function(_0x5227ec){if(_0x5227ec[_0x603a('0x2c')]!==_0x603a('0x3d')){var _0xdd5cd2={};_0xdd5cd2[_0x5227ec['name']]={'$like':'%'+_0x40df62['query']['filter']+'%'};return _0xdd5cd2;}})});}_0x27e142=_[_0x603a('0x3c')]({},_0x27e142,_0x40df62['options']);var _0x9dfcc7={'where':_0x27e142['where']};return db['ZendeskField'][_0x603a('0x1d')](_0x9dfcc7)['then'](function(_0x3bd55f){_0x376200[_0x603a('0x1d')]=_0x3bd55f;if(_0x40df62['query'][_0x603a('0x3e')]){_0x27e142['include']=[{'all':!![]}];}return db[_0x603a('0x29')]['findAll'](_0x27e142);})[_0x603a('0x22')](function(_0x3d8e72){_0x376200[_0x603a('0x3f')]=_0x3d8e72;return _0x376200;})[_0x603a('0x22')](respondWithFilteredResult(_0x18f18b,_0x27e142))['catch'](handleError(_0x18f18b,null));};exports[_0x603a('0x40')]=function(_0x41676d,_0x3cff73){var _0x1a6912={'raw':!![],'where':{'id':_0x41676d[_0x603a('0x41')]['id']}},_0x8fc5ca={};_0x8fc5ca[_0x603a('0x31')]=_[_0x603a('0x42')](db[_0x603a('0x29')][_0x603a('0x2a')]);_0x8fc5ca[_0x603a('0x2f')]=_[_0x603a('0x42')](_0x41676d['query']);_0x8fc5ca[_0x603a('0x38')]=_['intersection'](_0x8fc5ca['model'],_0x8fc5ca[_0x603a('0x2f')]);_0x1a6912[_0x603a('0x33')]=_[_0x603a('0x30')](_0x8fc5ca['model'],qs['fields'](_0x41676d[_0x603a('0x2f')][_0x603a('0x32')]));_0x1a6912['attributes']=_0x1a6912['attributes']['length']?_0x1a6912[_0x603a('0x33')]:_0x8fc5ca[_0x603a('0x31')];if(_0x41676d[_0x603a('0x2f')][_0x603a('0x3e')]){_0x1a6912['include']=[{'all':!![]}];}_0x1a6912=_[_0x603a('0x3c')]({},_0x1a6912,_0x41676d[_0x603a('0x43')]);return db[_0x603a('0x29')]['find'](_0x1a6912)[_0x603a('0x22')](handleEntityNotFound(_0x3cff73,null))[_0x603a('0x22')](respondWithResult(_0x3cff73,null))[_0x603a('0x44')](handleError(_0x3cff73,null));};exports[_0x603a('0x45')]=function(_0x1428de,_0x42b229){return db['ZendeskField'][_0x603a('0x45')](_0x1428de[_0x603a('0x46')],{})['then'](respondWithResult(_0x42b229,0xc9))[_0x603a('0x44')](handleError(_0x42b229,null));};exports[_0x603a('0x21')]=function(_0x2064a7,_0x50069a){if(_0x2064a7[_0x603a('0x46')]['id']){delete _0x2064a7['body']['id'];}return db[_0x603a('0x29')][_0x603a('0x47')]({'where':{'id':_0x2064a7[_0x603a('0x41')]['id']}})[_0x603a('0x22')](handleEntityNotFound(_0x50069a,null))[_0x603a('0x22')](saveUpdates(_0x2064a7[_0x603a('0x46')],null))[_0x603a('0x22')](respondWithResult(_0x50069a,null))[_0x603a('0x44')](handleError(_0x50069a,null));};exports[_0x603a('0x23')]=function(_0x3f528b,_0x1e4e5e){return db['ZendeskField'][_0x603a('0x47')]({'where':{'id':_0x3f528b[_0x603a('0x41')]['id']}})[_0x603a('0x22')](handleEntityNotFound(_0x1e4e5e,null))[_0x603a('0x22')](removeEntity(_0x1e4e5e,null))['catch'](handleError(_0x1e4e5e,null));};
\ No newline at end of file
+var _0x565c=['save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskField','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x1ebeed,_0x141a93){var _0x76a5d7=function(_0x5ed9e0){while(--_0x5ed9e0){_0x1ebeed['push'](_0x1ebeed['shift']());}};_0x76a5d7(++_0x141a93);}(_0x565c,0x73));var _0xc565=function(_0xab060d,_0x12737c){_0xab060d=_0xab060d-0x0;var _0x4c5230=_0x565c[_0xab060d];return _0x4c5230;};'use strict';var emlformat=require(_0xc565('0x0'));var rimraf=require(_0xc565('0x1'));var zipdir=require(_0xc565('0x2'));var jsonpatch=require(_0xc565('0x3'));var rp=require(_0xc565('0x4'));var moment=require(_0xc565('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc565('0x6'));var sox=require(_0xc565('0x7'));var csv=require(_0xc565('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc565('0x9'));var squel=require('squel');var crypto=require(_0xc565('0xa'));var jsforce=require(_0xc565('0xb'));var deskjs=require(_0xc565('0xc'));var toCsv=require(_0xc565('0x8'));var querystring=require(_0xc565('0xd'));var Papa=require(_0xc565('0xe'));var Redis=require('ioredis');var authService=require(_0xc565('0xf'));var qs=require(_0xc565('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc565('0x11'));var logger=require(_0xc565('0x12'))(_0xc565('0x13'));var utils=require(_0xc565('0x14'));var config=require(_0xc565('0x15'));var licenseUtil=require(_0xc565('0x16'));var db=require(_0xc565('0x17'))['db'];function respondWithStatusCode(_0x214f27,_0x3ca9a6){_0x3ca9a6=_0x3ca9a6||0xcc;return function(_0x54d900){if(_0x54d900){return _0x214f27['sendStatus'](_0x3ca9a6);}return _0x214f27['status'](_0x3ca9a6)['end']();};}function respondWithResult(_0x11853a,_0x26c026){_0x26c026=_0x26c026||0xc8;return function(_0x543d68){if(_0x543d68){return _0x11853a[_0xc565('0x18')](_0x26c026)[_0xc565('0x19')](_0x543d68);}};}function respondWithFilteredResult(_0x297d35,_0x200ebb){return function(_0x66c6cb){if(_0x66c6cb){var _0x11d3f1=typeof _0x200ebb[_0xc565('0x1a')]===_0xc565('0x1b')&&typeof _0x200ebb[_0xc565('0x1c')]===_0xc565('0x1b');var _0x1de92c=_0x66c6cb[_0xc565('0x1d')];var _0x16cabe=_0x11d3f1?0x0:_0x200ebb[_0xc565('0x1a')];var _0x275e7b=_0x11d3f1?_0x66c6cb['count']:_0x200ebb['offset']+_0x200ebb[_0xc565('0x1c')];var _0x3b88b4;if(_0x275e7b>=_0x1de92c){_0x275e7b=_0x1de92c;_0x3b88b4=0xc8;}else{_0x3b88b4=0xce;}_0x297d35[_0xc565('0x18')](_0x3b88b4);return _0x297d35[_0xc565('0x1e')]('Content-Range',_0x16cabe+'-'+_0x275e7b+'/'+_0x1de92c)[_0xc565('0x19')](_0x66c6cb);}return null;};}function patchUpdates(_0x166fa7){return function(_0x1ab8ec){try{jsonpatch[_0xc565('0x1f')](_0x1ab8ec,_0x166fa7,!![]);}catch(_0x4d6939){return BPromise[_0xc565('0x20')](_0x4d6939);}return _0x1ab8ec[_0xc565('0x21')]();};}function saveUpdates(_0x404b39,_0x43769e){return function(_0x36a386){if(_0x36a386){return _0x36a386[_0xc565('0x22')](_0x404b39)['then'](function(_0x4a2807){return _0x4a2807;});}return null;};}function removeEntity(_0xefedf6,_0x422a6c){return function(_0x2d91b0){if(_0x2d91b0){return _0x2d91b0[_0xc565('0x23')]()[_0xc565('0x24')](function(){_0xefedf6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d3961,_0x285b03){return function(_0x1081cb){if(!_0x1081cb){_0x2d3961['sendStatus'](0x194);}return _0x1081cb;};}function handleError(_0x1939d9,_0x26ac58){_0x26ac58=_0x26ac58||0x1f4;return function(_0x39c49d){logger[_0xc565('0x25')](_0x39c49d[_0xc565('0x26')]);if(_0x39c49d['name']){delete _0x39c49d[_0xc565('0x27')];}_0x1939d9[_0xc565('0x18')](_0x26ac58)[_0xc565('0x28')](_0x39c49d);};}exports['index']=function(_0x2149ee,_0x348746){var _0x3a19ef={},_0xd8ea12={},_0x33493a={'count':0x0,'rows':[]};var _0x397d4c=_[_0xc565('0x29')](db['ZendeskField'][_0xc565('0x2a')],function(_0x1fd840){return{'name':_0x1fd840[_0xc565('0x2b')],'type':_0x1fd840[_0xc565('0x2c')][_0xc565('0x2d')]};});_0xd8ea12[_0xc565('0x2e')]=_[_0xc565('0x29')](_0x397d4c,_0xc565('0x27'));_0xd8ea12['query']=_['keys'](_0x2149ee[_0xc565('0x2f')]);_0xd8ea12[_0xc565('0x30')]=_['intersection'](_0xd8ea12[_0xc565('0x2e')],_0xd8ea12[_0xc565('0x2f')]);_0x3a19ef[_0xc565('0x31')]=_[_0xc565('0x32')](_0xd8ea12[_0xc565('0x2e')],qs[_0xc565('0x33')](_0x2149ee[_0xc565('0x2f')]['fields']));_0x3a19ef[_0xc565('0x31')]=_0x3a19ef[_0xc565('0x31')][_0xc565('0x34')]?_0x3a19ef['attributes']:_0xd8ea12[_0xc565('0x2e')];if(!_0x2149ee['query'][_0xc565('0x35')]('nolimit')){_0x3a19ef[_0xc565('0x1c')]=qs[_0xc565('0x1c')](_0x2149ee[_0xc565('0x2f')][_0xc565('0x1c')]);_0x3a19ef[_0xc565('0x1a')]=qs[_0xc565('0x1a')](_0x2149ee[_0xc565('0x2f')][_0xc565('0x1a')]);}_0x3a19ef[_0xc565('0x36')]=qs['sort'](_0x2149ee[_0xc565('0x2f')][_0xc565('0x37')]);_0x3a19ef[_0xc565('0x38')]=qs[_0xc565('0x30')](_[_0xc565('0x39')](_0x2149ee[_0xc565('0x2f')],_0xd8ea12[_0xc565('0x30')]),_0x397d4c);if(_0x2149ee['query']['filter']){_0x3a19ef[_0xc565('0x38')]=_[_0xc565('0x3a')](_0x3a19ef[_0xc565('0x38')],{'$or':_[_0xc565('0x29')](_0x397d4c,function(_0x23c94e){if(_0x23c94e[_0xc565('0x2c')]!==_0xc565('0x3b')){var _0x4887e0={};_0x4887e0[_0x23c94e[_0xc565('0x27')]]={'$like':'%'+_0x2149ee['query'][_0xc565('0x3c')]+'%'};return _0x4887e0;}})});}_0x3a19ef=_[_0xc565('0x3a')]({},_0x3a19ef,_0x2149ee[_0xc565('0x3d')]);var _0x4d2199={'where':_0x3a19ef['where']};return db[_0xc565('0x3e')][_0xc565('0x1d')](_0x4d2199)[_0xc565('0x24')](function(_0x19d223){_0x33493a[_0xc565('0x1d')]=_0x19d223;if(_0x2149ee[_0xc565('0x2f')][_0xc565('0x3f')]){_0x3a19ef[_0xc565('0x40')]=[{'all':!![]}];}return db['ZendeskField'][_0xc565('0x41')](_0x3a19ef);})[_0xc565('0x24')](function(_0x3fd0ad){_0x33493a[_0xc565('0x42')]=_0x3fd0ad;return _0x33493a;})[_0xc565('0x24')](respondWithFilteredResult(_0x348746,_0x3a19ef))[_0xc565('0x43')](handleError(_0x348746,null));};exports[_0xc565('0x44')]=function(_0x5ed376,_0x37390a){var _0xcb3409={'raw':!![],'where':{'id':_0x5ed376['params']['id']}},_0x533793={};_0x533793[_0xc565('0x2e')]=_['keys'](db[_0xc565('0x3e')][_0xc565('0x2a')]);_0x533793[_0xc565('0x2f')]=_[_0xc565('0x45')](_0x5ed376[_0xc565('0x2f')]);_0x533793[_0xc565('0x30')]=_[_0xc565('0x32')](_0x533793['model'],_0x533793['query']);_0xcb3409[_0xc565('0x31')]=_[_0xc565('0x32')](_0x533793[_0xc565('0x2e')],qs[_0xc565('0x33')](_0x5ed376['query'][_0xc565('0x33')]));_0xcb3409[_0xc565('0x31')]=_0xcb3409[_0xc565('0x31')][_0xc565('0x34')]?_0xcb3409[_0xc565('0x31')]:_0x533793[_0xc565('0x2e')];if(_0x5ed376[_0xc565('0x2f')]['includeAll']){_0xcb3409[_0xc565('0x40')]=[{'all':!![]}];}_0xcb3409=_[_0xc565('0x3a')]({},_0xcb3409,_0x5ed376[_0xc565('0x3d')]);return db[_0xc565('0x3e')][_0xc565('0x46')](_0xcb3409)['then'](handleEntityNotFound(_0x37390a,null))['then'](respondWithResult(_0x37390a,null))[_0xc565('0x43')](handleError(_0x37390a,null));};exports[_0xc565('0x47')]=function(_0x525dde,_0x32bfd0){return db[_0xc565('0x3e')][_0xc565('0x47')](_0x525dde[_0xc565('0x48')],{})[_0xc565('0x24')](respondWithResult(_0x32bfd0,0xc9))['catch'](handleError(_0x32bfd0,null));};exports['update']=function(_0x42b435,_0x296816){if(_0x42b435['body']['id']){delete _0x42b435[_0xc565('0x48')]['id'];}return db[_0xc565('0x3e')][_0xc565('0x46')]({'where':{'id':_0x42b435[_0xc565('0x49')]['id']}})[_0xc565('0x24')](handleEntityNotFound(_0x296816,null))[_0xc565('0x24')](saveUpdates(_0x42b435[_0xc565('0x48')],null))[_0xc565('0x24')](respondWithResult(_0x296816,null))['catch'](handleError(_0x296816,null));};exports[_0xc565('0x23')]=function(_0x4f4f7d,_0x54c523){return db[_0xc565('0x3e')][_0xc565('0x46')]({'where':{'id':_0x4f4f7d[_0xc565('0x49')]['id']}})['then'](handleEntityNotFound(_0x54c523,null))[_0xc565('0x24')](removeEntity(_0x54c523,null))[_0xc565('0x43')](handleError(_0x54c523,null));};
\ No newline at end of file
index 6b74a50..40b6cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d7a=['path','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3e4670,_0x190161){var _0x4972b6=function(_0x373ce4){while(--_0x373ce4){_0x3e4670['push'](_0x3e4670['shift']());}};_0x4972b6(++_0x190161);}(_0x3d7a,0xd6));var _0xa3d7=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0x3d7a[_0x1c7137];return _0xeb4432;};'use strict';var _=require(_0xa3d7('0x0'));var util=require(_0xa3d7('0x1'));var logger=require(_0xa3d7('0x2'))(_0xa3d7('0x3'));var moment=require(_0xa3d7('0x4'));var BPromise=require(_0xa3d7('0x5'));var rp=require(_0xa3d7('0x6'));var fs=require('fs');var path=require(_0xa3d7('0x7'));var rimraf=require(_0xa3d7('0x8'));var config=require(_0xa3d7('0x9'));var attributes=require(_0xa3d7('0xa'));module[_0xa3d7('0xb')]=function(_0x2eb05f,_0x39ab2e){return _0x2eb05f['define'](_0xa3d7('0xc'),attributes,{'tableName':_0xa3d7('0xd'),'paranoid':![],'indexes':[{'name':_0xa3d7('0xe'),'fields':[_0xa3d7('0xf'),_0xa3d7('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8821=['../../config/environment','./intZendeskField.attributes','exports','define','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x36909d,_0x2795f1){var _0x1fd29d=function(_0x27d0fa){while(--_0x27d0fa){_0x36909d['push'](_0x36909d['shift']());}};_0x1fd29d(++_0x2795f1);}(_0x8821,0x134));var _0x1882=function(_0x32d414,_0x4d23da){_0x32d414=_0x32d414-0x0;var _0x4e0bca=_0x8821[_0x32d414];return _0x4e0bca;};'use strict';var _=require(_0x1882('0x0'));var util=require(_0x1882('0x1'));var logger=require('../../config/logger')(_0x1882('0x2'));var moment=require(_0x1882('0x3'));var BPromise=require(_0x1882('0x4'));var rp=require(_0x1882('0x5'));var fs=require('fs');var path=require(_0x1882('0x6'));var rimraf=require('rimraf');var config=require(_0x1882('0x7'));var attributes=require(_0x1882('0x8'));module[_0x1882('0x9')]=function(_0xe4b7da,_0x212b66){return _0xe4b7da[_0x1882('0xa')]('ZendeskField',attributes,{'tableName':_0x1882('0xb'),'paranoid':![],'indexes':[{'name':_0x1882('0xc'),'fields':[_0x1882('0xd'),_0x1882('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 159897d..cf080fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9233=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0x1ba14f,_0x370fc2){var _0x23ca83=function(_0x41ee8b){while(--_0x41ee8b){_0x1ba14f['push'](_0x1ba14f['shift']());}};_0x23ca83(++_0x370fc2);}(_0x9233,0x96));var _0x3923=function(_0x4dcf3a,_0xa0d121){_0x4dcf3a=_0x4dcf3a-0x0;var _0x31cc5f=_0x9233[_0x4dcf3a];return _0x31cc5f;};'use strict';var _=require(_0x3923('0x0'));var util=require(_0x3923('0x1'));var moment=require(_0x3923('0x2'));var BPromise=require(_0x3923('0x3'));var rs=require(_0x3923('0x4'));var fs=require('fs');var Redis=require(_0x3923('0x5'));var db=require(_0x3923('0x6'))['db'];var utils=require(_0x3923('0x7'));var logger=require(_0x3923('0x8'))('rpc');var config=require(_0x3923('0x9'));var jayson=require(_0x3923('0xa'));var client=jayson[_0x3923('0xb')][_0x3923('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55e23f,_0x50e165,_0x46eefc){return new BPromise(function(_0x297ab0,_0x35fddc){return client[_0x3923('0xd')](_0x55e23f,_0x46eefc)[_0x3923('0xe')](function(_0x5bf8aa){logger[_0x3923('0xf')](_0x3923('0x10'),_0x50e165,'request\x20sent');logger[_0x3923('0x11')](_0x3923('0x12'),_0x50e165,'request\x20sent',JSON[_0x3923('0x13')](_0x5bf8aa));if(_0x5bf8aa[_0x3923('0x14')]){if(_0x5bf8aa['error'][_0x3923('0x15')]===0x1f4){logger[_0x3923('0x14')](_0x3923('0x10'),_0x50e165,_0x5bf8aa[_0x3923('0x14')][_0x3923('0x16')]);return _0x35fddc(_0x5bf8aa[_0x3923('0x14')]['message']);}logger[_0x3923('0x14')]('ZendeskField,\x20%s,\x20%s',_0x50e165,_0x5bf8aa[_0x3923('0x14')]['message']);return _0x297ab0(_0x5bf8aa[_0x3923('0x14')][_0x3923('0x16')]);}else{logger[_0x3923('0xf')](_0x3923('0x10'),_0x50e165,_0x3923('0x17'));_0x297ab0(_0x5bf8aa[_0x3923('0x18')][_0x3923('0x16')]);}})['catch'](function(_0x1db49d){logger[_0x3923('0x14')](_0x3923('0x10'),_0x50e165,_0x1db49d);_0x35fddc(_0x1db49d);});});}
\ No newline at end of file
+var _0x3a95=['then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3a95,0x1ed));var _0x53a9=function(_0x23e996,_0x56bb82){_0x23e996=_0x23e996-0x0;var _0x512149=_0x3a95[_0x23e996];return _0x512149;};'use strict';var _=require(_0x53a9('0x0'));var util=require(_0x53a9('0x1'));var moment=require(_0x53a9('0x2'));var BPromise=require('bluebird');var rs=require(_0x53a9('0x3'));var fs=require('fs');var Redis=require(_0x53a9('0x4'));var db=require(_0x53a9('0x5'))['db'];var utils=require(_0x53a9('0x6'));var logger=require('../../config/logger')(_0x53a9('0x7'));var config=require(_0x53a9('0x8'));var jayson=require(_0x53a9('0x9'));var client=jayson[_0x53a9('0xa')][_0x53a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cbb56,_0x26f963,_0x3a77b4){return new BPromise(function(_0x55c4fc,_0x39e27b){return client[_0x53a9('0xc')](_0x1cbb56,_0x3a77b4)[_0x53a9('0xd')](function(_0x544531){logger[_0x53a9('0xe')](_0x53a9('0xf'),_0x26f963,_0x53a9('0x10'));logger['debug'](_0x53a9('0x11'),_0x26f963,_0x53a9('0x10'),JSON['stringify'](_0x544531));if(_0x544531[_0x53a9('0x12')]){if(_0x544531[_0x53a9('0x12')]['code']===0x1f4){logger[_0x53a9('0x12')](_0x53a9('0xf'),_0x26f963,_0x544531[_0x53a9('0x12')][_0x53a9('0x13')]);return _0x39e27b(_0x544531[_0x53a9('0x12')][_0x53a9('0x13')]);}logger['error']('ZendeskField,\x20%s,\x20%s',_0x26f963,_0x544531['error'][_0x53a9('0x13')]);return _0x55c4fc(_0x544531['error'][_0x53a9('0x13')]);}else{logger['info'](_0x53a9('0xf'),_0x26f963,_0x53a9('0x10'));_0x55c4fc(_0x544531[_0x53a9('0x14')][_0x53a9('0x13')]);}})[_0x53a9('0x15')](function(_0x32f73a){logger['error'](_0x53a9('0xf'),_0x26f963,_0x32f73a);_0x39e27b(_0x32f73a);});});}
\ No newline at end of file
index 10c8e66..7de5262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe76b=['/:id/configurations','getConfigurations','getFields','post','addConfiguration','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','/:id'];(function(_0x4aa564,_0x1bba00){var _0x19a7c7=function(_0x4d56fd){while(--_0x4d56fd){_0x4aa564['push'](_0x4aa564['shift']());}};_0x19a7c7(++_0x1bba00);}(_0xe76b,0x72));var _0xbe76=function(_0x1005d4,_0x5199ab){_0x1005d4=_0x1005d4-0x0;var _0x421977=_0xe76b[_0x1005d4];return _0x421977;};'use strict';var multer=require('multer');var util=require(_0xbe76('0x0'));var path=require(_0xbe76('0x1'));var timeout=require(_0xbe76('0x2'));var express=require(_0xbe76('0x3'));var router=express[_0xbe76('0x4')]();var fs_extra=require(_0xbe76('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbe76('0x6'));var config=require(_0xbe76('0x7'));var controller=require(_0xbe76('0x8'));router[_0xbe76('0x9')]('/',auth[_0xbe76('0xa')](),controller['index']);router['get'](_0xbe76('0xb'),auth[_0xbe76('0xa')](),controller['show']);router[_0xbe76('0x9')](_0xbe76('0xc'),auth[_0xbe76('0xa')](),controller[_0xbe76('0xd')]);router[_0xbe76('0x9')]('/:id/fields',auth[_0xbe76('0xa')](),controller[_0xbe76('0xe')]);router[_0xbe76('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbe76('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xbe76('0x10')]);router[_0xbe76('0x11')](_0xbe76('0xb'),auth[_0xbe76('0xa')](),controller[_0xbe76('0x12')]);router['delete']('/:id',auth[_0xbe76('0xa')](),controller[_0xbe76('0x13')]);module[_0xbe76('0x14')]=router;
\ No newline at end of file
+var _0x09cb=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','destroy','multer','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x09cb,0x13e));var _0xb09c=function(_0x2aaf2a,_0x3f3a54){_0x2aaf2a=_0x2aaf2a-0x0;var _0x56d9bf=_0x09cb[_0x2aaf2a];return _0x56d9bf;};'use strict';var multer=require(_0xb09c('0x0'));var util=require(_0xb09c('0x1'));var path=require('path');var timeout=require(_0xb09c('0x2'));var express=require(_0xb09c('0x3'));var router=express[_0xb09c('0x4')]();var fs_extra=require(_0xb09c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb09c('0x6'));var config=require('../../config/environment');var controller=require(_0xb09c('0x7'));router[_0xb09c('0x8')]('/',auth[_0xb09c('0x9')](),controller[_0xb09c('0xa')]);router[_0xb09c('0x8')](_0xb09c('0xb'),auth[_0xb09c('0x9')](),controller[_0xb09c('0xc')]);router[_0xb09c('0x8')](_0xb09c('0xd'),auth[_0xb09c('0x9')](),controller[_0xb09c('0xe')]);router[_0xb09c('0x8')](_0xb09c('0xf'),auth['isAuthenticated'](),controller[_0xb09c('0x10')]);router[_0xb09c('0x11')]('/',auth[_0xb09c('0x9')](),controller['create']);router['post'](_0xb09c('0xd'),auth[_0xb09c('0x9')](),controller['addConfiguration']);router[_0xb09c('0x12')](_0xb09c('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xb09c('0x9')](),controller[_0xb09c('0x13')]);module['exports']=router;
\ No newline at end of file
index fe28488..4730a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['STRING','sequelize','exports'];(function(_0x2679b0,_0x2a1a6f){var _0x192302=function(_0x258202){while(--_0x258202){_0x2679b0['push'](_0x2679b0['shift']());}};_0x192302(++_0x2a1a6f);}(_0x4ea3,0x70));var _0x34ea=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4ea3[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x34ea('0x0'));module[_0x34ea('0x1')]={'name':{'type':Sequelize[_0x34ea('0x2')]},'description':{'type':Sequelize[_0x34ea('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x34ea('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x34ea('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x34ea('0x2')]}};
\ No newline at end of file
+var _0xd0bb=['exports','STRING','sequelize'];(function(_0x239d94,_0x147c83){var _0xbd248c=function(_0x66c59){while(--_0x66c59){_0x239d94['push'](_0x239d94['shift']());}};_0xbd248c(++_0x147c83);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x2f3412,_0x2b8d24){_0x2f3412=_0x2f3412-0x0;var _0x4071d6=_0xd0bb[_0x2f3412];return _0x4071d6;};'use strict';var Sequelize=require(_0xbd0b('0x0'));module[_0xbd0b('0x1')]={'name':{'type':Sequelize[_0xbd0b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd0b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xbd0b('0x2')]},'clientSecret':{'type':Sequelize[_0xbd0b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xbd0b('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7b81117..451ad74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2e=['error','stack','send','map','ZohoAccount','key','name','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','includeAll','find','body','destroy','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoConfiguration','create','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','refreshToken','com','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','push','display_label','custom_field','picklist','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then'];(function(_0x33358a,_0x410ec6){var _0x4e9192=function(_0x10c78d){while(--_0x10c78d){_0x33358a['push'](_0x33358a['shift']());}};_0x4e9192(++_0x410ec6);}(_0xaa2e,0xdc));var _0xeaa2=function(_0xaae01a,_0x541a5a){_0xaae01a=_0xaae01a-0x0;var _0x3b6fee=_0xaa2e[_0xaae01a];return _0x3b6fee;};'use strict';var emlformat=require(_0xeaa2('0x0'));var rimraf=require(_0xeaa2('0x1'));var zipdir=require(_0xeaa2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xeaa2('0x3'));var Mustache=require(_0xeaa2('0x4'));var util=require(_0xeaa2('0x5'));var path=require(_0xeaa2('0x6'));var sox=require(_0xeaa2('0x7'));var csv=require(_0xeaa2('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xeaa2('0x9'));var jsforce=require(_0xeaa2('0xa'));var deskjs=require(_0xeaa2('0xb'));var toCsv=require('to-csv');var querystring=require(_0xeaa2('0xc'));var Papa=require(_0xeaa2('0xd'));var Redis=require(_0xeaa2('0xe'));var authService=require(_0xeaa2('0xf'));var qs=require(_0xeaa2('0x10'));var as=require(_0xeaa2('0x11'));var hardwareService=require(_0xeaa2('0x12'));var logger=require(_0xeaa2('0x13'))(_0xeaa2('0x14'));var utils=require(_0xeaa2('0x15'));var config=require(_0xeaa2('0x16'));var licenseUtil=require(_0xeaa2('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2ed08b,_0x5a8e2f){_0x5a8e2f=_0x5a8e2f||0xcc;return function(_0x1482a7){if(_0x1482a7){return _0x2ed08b[_0xeaa2('0x18')](_0x5a8e2f);}return _0x2ed08b[_0xeaa2('0x19')](_0x5a8e2f)[_0xeaa2('0x1a')]();};}function respondWithResult(_0x2f7308,_0x22505e){_0x22505e=_0x22505e||0xc8;return function(_0x10d456){if(_0x10d456){return _0x2f7308['status'](_0x22505e)[_0xeaa2('0x1b')](_0x10d456);}};}function respondWithFilteredResult(_0x472540,_0x7de39a){return function(_0x162101){if(_0x162101){var _0x497a73=typeof _0x7de39a[_0xeaa2('0x1c')]==='undefined'&&typeof _0x7de39a[_0xeaa2('0x1d')]===_0xeaa2('0x1e');var _0x441ddc=_0x162101[_0xeaa2('0x1f')];var _0x5c656a=_0x497a73?0x0:_0x7de39a['offset'];var _0x16da81=_0x497a73?_0x162101[_0xeaa2('0x1f')]:_0x7de39a[_0xeaa2('0x1c')]+_0x7de39a['limit'];var _0x4c08c3;if(_0x16da81>=_0x441ddc){_0x16da81=_0x441ddc;_0x4c08c3=0xc8;}else{_0x4c08c3=0xce;}_0x472540[_0xeaa2('0x19')](_0x4c08c3);return _0x472540[_0xeaa2('0x20')](_0xeaa2('0x21'),_0x5c656a+'-'+_0x16da81+'/'+_0x441ddc)['json'](_0x162101);}return null;};}function patchUpdates(_0x2abe53){return function(_0x4c8549){try{jsonpatch['apply'](_0x4c8549,_0x2abe53,!![]);}catch(_0x77e901){return BPromise[_0xeaa2('0x22')](_0x77e901);}return _0x4c8549[_0xeaa2('0x23')]();};}function saveUpdates(_0x4970e5,_0x4b8f06){return function(_0x26dc74){if(_0x26dc74){return _0x26dc74[_0xeaa2('0x24')](_0x4970e5)[_0xeaa2('0x25')](function(_0x605fdd){return _0x605fdd;});}return null;};}function removeEntity(_0x402d32,_0x190184){return function(_0x2df291){if(_0x2df291){return _0x2df291['destroy']()[_0xeaa2('0x25')](function(){_0x402d32['status'](0xcc)[_0xeaa2('0x1a')]();});}};}function handleEntityNotFound(_0xbdcd68,_0xdf9036){return function(_0x41e725){if(!_0x41e725){_0xbdcd68['sendStatus'](0x194);}return _0x41e725;};}function handleError(_0x1017fc,_0x56da34){_0x56da34=_0x56da34||0x1f4;return function(_0x16205c){logger[_0xeaa2('0x26')](_0x16205c[_0xeaa2('0x27')]);if(_0x16205c['name']){delete _0x16205c['name'];}_0x1017fc['status'](_0x56da34)[_0xeaa2('0x28')](_0x16205c);};}exports['index']=function(_0x27461f,_0x1a07d1){var _0x5cec7f={},_0x3e49f1={},_0x1450ae={'count':0x0,'rows':[]};var _0x2f5fb8=_[_0xeaa2('0x29')](db[_0xeaa2('0x2a')]['rawAttributes'],function(_0x37ae83){return{'name':_0x37ae83['fieldName'],'type':_0x37ae83['type'][_0xeaa2('0x2b')]};});_0x3e49f1['model']=_[_0xeaa2('0x29')](_0x2f5fb8,_0xeaa2('0x2c'));_0x3e49f1[_0xeaa2('0x2d')]=_[_0xeaa2('0x2e')](_0x27461f[_0xeaa2('0x2d')]);_0x3e49f1['filters']=_[_0xeaa2('0x2f')](_0x3e49f1[_0xeaa2('0x30')],_0x3e49f1[_0xeaa2('0x2d')]);_0x5cec7f[_0xeaa2('0x31')]=_['intersection'](_0x3e49f1[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x27461f[_0xeaa2('0x2d')]['fields']));_0x5cec7f[_0xeaa2('0x31')]=_0x5cec7f['attributes'][_0xeaa2('0x33')]?_0x5cec7f['attributes']:_0x3e49f1[_0xeaa2('0x30')];if(!_0x27461f[_0xeaa2('0x2d')][_0xeaa2('0x34')](_0xeaa2('0x35'))){_0x5cec7f[_0xeaa2('0x1d')]=qs[_0xeaa2('0x1d')](_0x27461f['query'][_0xeaa2('0x1d')]);_0x5cec7f[_0xeaa2('0x1c')]=qs[_0xeaa2('0x1c')](_0x27461f['query'][_0xeaa2('0x1c')]);}_0x5cec7f[_0xeaa2('0x36')]=qs['sort'](_0x27461f[_0xeaa2('0x2d')][_0xeaa2('0x37')]);_0x5cec7f[_0xeaa2('0x38')]=qs[_0xeaa2('0x39')](_[_0xeaa2('0x3a')](_0x27461f[_0xeaa2('0x2d')],_0x3e49f1[_0xeaa2('0x39')]),_0x2f5fb8);if(_0x27461f['query'][_0xeaa2('0x3b')]){_0x5cec7f['where']=_[_0xeaa2('0x3c')](_0x5cec7f[_0xeaa2('0x38')],{'$or':_[_0xeaa2('0x29')](_0x2f5fb8,function(_0x36fd6a){if(_0x36fd6a[_0xeaa2('0x3d')]!==_0xeaa2('0x3e')){var _0x5a7f3a={};_0x5a7f3a[_0x36fd6a['name']]={'$like':'%'+_0x27461f['query'][_0xeaa2('0x3b')]+'%'};return _0x5a7f3a;}})});}_0x5cec7f=_[_0xeaa2('0x3c')]({},_0x5cec7f,_0x27461f[_0xeaa2('0x3f')]);var _0x2b43cb={'where':_0x5cec7f[_0xeaa2('0x38')]};return db['ZohoAccount'][_0xeaa2('0x1f')](_0x2b43cb)['then'](function(_0x42e8ae){_0x1450ae[_0xeaa2('0x1f')]=_0x42e8ae;if(_0x27461f['query']['includeAll']){_0x5cec7f[_0xeaa2('0x40')]=[{'all':!![]}];}return db[_0xeaa2('0x2a')][_0xeaa2('0x41')](_0x5cec7f);})['then'](function(_0x4fbcd4){_0x1450ae['rows']=_0x4fbcd4;return _0x1450ae;})[_0xeaa2('0x25')](respondWithFilteredResult(_0x1a07d1,_0x5cec7f))[_0xeaa2('0x42')](handleError(_0x1a07d1,null));};exports[_0xeaa2('0x43')]=function(_0x697224,_0x390d4e){var _0x2d880d={'raw':![],'where':{'id':_0x697224[_0xeaa2('0x44')]['id']}},_0x576892={};_0x576892['model']=_[_0xeaa2('0x2e')](db[_0xeaa2('0x2a')][_0xeaa2('0x45')]);_0x576892[_0xeaa2('0x2d')]=_['keys'](_0x697224['query']);_0x576892[_0xeaa2('0x39')]=_[_0xeaa2('0x2f')](_0x576892[_0xeaa2('0x30')],_0x576892[_0xeaa2('0x2d')]);_0x2d880d[_0xeaa2('0x31')]=_[_0xeaa2('0x2f')](_0x576892[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x697224[_0xeaa2('0x2d')][_0xeaa2('0x32')]));_0x2d880d[_0xeaa2('0x31')]=_0x2d880d[_0xeaa2('0x31')][_0xeaa2('0x33')]?_0x2d880d[_0xeaa2('0x31')]:_0x576892['model'];if(_0x697224[_0xeaa2('0x2d')][_0xeaa2('0x46')]){_0x2d880d['include']=[{'all':!![]}];}_0x2d880d=_['merge']({},_0x2d880d,_0x697224[_0xeaa2('0x3f')]);return db['ZohoAccount'][_0xeaa2('0x47')](_0x2d880d)[_0xeaa2('0x25')](handleEntityNotFound(_0x390d4e,null))[_0xeaa2('0x25')](respondWithResult(_0x390d4e,null))[_0xeaa2('0x42')](handleError(_0x390d4e,null));};exports['create']=function(_0x5b56ff,_0x2b1950){return db[_0xeaa2('0x2a')]['create'](_0x5b56ff[_0xeaa2('0x48')],{})[_0xeaa2('0x25')](respondWithResult(_0x2b1950,0xc9))[_0xeaa2('0x42')](handleError(_0x2b1950,null));};exports[_0xeaa2('0x24')]=function(_0x407bce,_0x397840){if(_0x407bce[_0xeaa2('0x48')]['id']){delete _0x407bce['body']['id'];}return db[_0xeaa2('0x2a')]['find']({'where':{'id':_0x407bce[_0xeaa2('0x44')]['id']}})['then'](handleEntityNotFound(_0x397840,null))[_0xeaa2('0x25')](saveUpdates(_0x407bce[_0xeaa2('0x48')],null))['then'](respondWithResult(_0x397840,null))[_0xeaa2('0x42')](handleError(_0x397840,null));};exports[_0xeaa2('0x49')]=function(_0x1dab12,_0x2ec6a1){return db[_0xeaa2('0x2a')][_0xeaa2('0x47')]({'where':{'id':_0x1dab12[_0xeaa2('0x44')]['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x2ec6a1,null))['then'](removeEntity(_0x2ec6a1,null))['catch'](handleError(_0x2ec6a1,null));};exports[_0xeaa2('0x4a')]=function(_0x3ba072,_0x36638f,_0x62b75){var _0x5ea94a={};var _0x2f3fb8={};var _0x3d2a4c;var _0x5205ca;return db[_0xeaa2('0x2a')]['findOne']({'where':{'id':_0x3ba072['params']['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x36638f,null))[_0xeaa2('0x25')](function(_0x56f211){if(_0x56f211){_0x3d2a4c=_0x56f211;_0x2f3fb8['model']=_[_0xeaa2('0x2e')](db['ZohoConfiguration'][_0xeaa2('0x45')]);_0x2f3fb8['query']=_[_0xeaa2('0x2e')](_0x3ba072[_0xeaa2('0x2d')]);_0x2f3fb8[_0xeaa2('0x39')]=_['intersection'](_0x2f3fb8[_0xeaa2('0x30')],_0x2f3fb8['query']);_0x5ea94a[_0xeaa2('0x31')]=_[_0xeaa2('0x2f')](_0x2f3fb8[_0xeaa2('0x30')],qs[_0xeaa2('0x32')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x32')]));_0x5ea94a[_0xeaa2('0x31')]=_0x5ea94a[_0xeaa2('0x31')][_0xeaa2('0x33')]?_0x5ea94a['attributes']:_0x2f3fb8[_0xeaa2('0x30')];_0x5ea94a[_0xeaa2('0x36')]=qs[_0xeaa2('0x37')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x37')]);_0x5ea94a[_0xeaa2('0x38')]=qs[_0xeaa2('0x39')](_[_0xeaa2('0x3a')](_0x3ba072[_0xeaa2('0x2d')],_0x2f3fb8[_0xeaa2('0x39')]));if(_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x3b')]){_0x5ea94a[_0xeaa2('0x38')]=_[_0xeaa2('0x3c')](_0x5ea94a[_0xeaa2('0x38')],{'$or':_[_0xeaa2('0x29')](_0x5ea94a[_0xeaa2('0x31')],function(_0x2666a8){var _0x3938bd={};_0x3938bd[_0x2666a8]={'$like':'%'+_0x3ba072['query'][_0xeaa2('0x3b')]+'%'};return _0x3938bd;})});}_0x5ea94a=_[_0xeaa2('0x3c')]({},_0x5ea94a,_0x3ba072[_0xeaa2('0x3f')]);return _0x3d2a4c[_0xeaa2('0x4a')](_0x5ea94a);}})[_0xeaa2('0x25')](function(_0x20af9d){if(_0x20af9d){_0x5205ca=_0x20af9d[_0xeaa2('0x33')];if(!_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x34')](_0xeaa2('0x35'))){_0x5ea94a['limit']=qs['limit'](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x1d')]);_0x5ea94a[_0xeaa2('0x1c')]=qs[_0xeaa2('0x1c')](_0x3ba072[_0xeaa2('0x2d')][_0xeaa2('0x1c')]);}return _0x3d2a4c[_0xeaa2('0x4a')](_0x5ea94a);}})[_0xeaa2('0x25')](function(_0xb26784){if(_0xb26784){return _0xb26784?{'count':_0x5205ca,'rows':_0xb26784}:null;}})[_0xeaa2('0x25')](respondWithResult(_0x36638f,null))[_0xeaa2('0x42')](handleError(_0x36638f,null));};exports[_0xeaa2('0x4b')]=function(_0x1066ea,_0x21189d,_0x567531){if(_0x1066ea[_0xeaa2('0x48')]['id']){delete _0x1066ea[_0xeaa2('0x48')]['id'];}return db['ZohoAccount'][_0xeaa2('0x4c')]({'where':{'id':_0x1066ea[_0xeaa2('0x44')]['id']}})[_0xeaa2('0x25')](handleEntityNotFound(_0x21189d,null))[_0xeaa2('0x25')](function(_0x3c6cd7){if(_0x3c6cd7){_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x4d')]=_0x3c6cd7['id'];_0x1066ea['body'][_0xeaa2('0x4e')]=integrations[_0xeaa2('0x4f')](_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x50')],_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x3d')]);_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x51')]=integrations[_0xeaa2('0x52')](_0x1066ea[_0xeaa2('0x48')][_0xeaa2('0x50')],_0x1066ea['body'][_0xeaa2('0x3d')]);return db[_0xeaa2('0x53')][_0xeaa2('0x54')](_0x1066ea['body'],{'include':[{'model':db['ZohoField'],'as':_0xeaa2('0x4e')},{'model':db[_0xeaa2('0x55')],'as':_0xeaa2('0x51')}]});}return null;})[_0xeaa2('0x25')](respondWithResult(_0x21189d,null))[_0xeaa2('0x42')](handleError(_0x21189d,null));};function getAccessToken(_0x2b4730){return new Promise(function(_0x1570c8,_0x5717df){var _0x2bc746;switch(_0x2b4730[_0xeaa2('0x56')]){case'US':_0x2bc746=_0xeaa2('0x57');break;case'AU':_0x2bc746=_0xeaa2('0x58');break;case'EU':_0x2bc746=_0xeaa2('0x59');break;case'IN':_0x2bc746=_0xeaa2('0x5a');break;case'CN':_0x2bc746=_0xeaa2('0x5b');break;default:_0x2bc746=_0xeaa2('0x59');break;}var _0x57748f={'method':_0xeaa2('0x5c'),'uri':_0x2bc746+_0xeaa2('0x5d'),'qs':{'refresh_token':_0x2b4730['refreshToken'],'client_id':_0x2b4730[_0xeaa2('0x5e')],'client_secret':_0x2b4730[_0xeaa2('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x57748f)[_0xeaa2('0x25')](function(_0x275f47){if(_0x275f47['access_token']){_0x1570c8(_0x275f47['access_token']);}else{_0x5717df(_0xeaa2('0x60'));}})['catch'](function(_0x28376d){_0x5717df(_0x28376d);});});}exports[_0xeaa2('0x61')]=function(_0x59c0c4,_0x4fabf2,_0x190074){var _0x198fb5,_0xc4951e,_0x2fb538,_0x5bcd49,_0x3f7b6a;return db[_0xeaa2('0x2a')][_0xeaa2('0x4c')]({'where':{'id':_0x59c0c4['params']['id']},'attributes':['id',_0xeaa2('0x62'),_0xeaa2('0x56'),_0xeaa2('0x5e'),_0xeaa2('0x5f'),_0xeaa2('0x63'),_0xeaa2('0x64'),_0xeaa2('0x65')]})[_0xeaa2('0x25')](handleEntityNotFound(_0x4fabf2,null))[_0xeaa2('0x25')](function(_0x147343){_0x3f7b6a=_0x147343;_0x198fb5=_0x3f7b6a[_0xeaa2('0x62')];_0xc4951e=_0x198fb5==='zoho.eu'?'eu':_0xeaa2('0x66');_0x2fb538=_0x3f7b6a[_0xeaa2('0x63')];var _0x156d05=_0x2fb538['slice'](-0x1);if(_0x156d05==='/'||_0x156d05==='\x5c'||_0x156d05===':'){_0x2fb538=_0x2fb538['substring'](0x0,_0x2fb538['lastIndexOf'](_0x156d05));}if(!_0x3f7b6a[_0xeaa2('0x65')]){throw new Error(_0xeaa2('0x67'));}return getAccessToken(_0x3f7b6a);})[_0xeaa2('0x25')](function(_0x314e6e){if(_0x314e6e){return rp({'method':_0xeaa2('0x68'),'uri':util[_0xeaa2('0x69')](_0xeaa2('0x6a'),_0xc4951e),'qs':{'module':_0xeaa2('0x6b')},'headers':{'Authorization':_0xeaa2('0x6c')+_0x314e6e},'json':!![]});}})[_0xeaa2('0x25')](function(_0x56e8c5){if(_0x56e8c5){if(_0x56e8c5[_0xeaa2('0x6d')]&&_0x56e8c5['response'][_0xeaa2('0x26')]){throw new Error(_0x56e8c5[_0xeaa2('0x6d')][_0xeaa2('0x26')]['message']);}var _0xb6252b=[];var _0x13b040=[];var _0x13f6db=[_0xeaa2('0x6e'),_0xeaa2('0x6f'),'Description',_0xeaa2('0x70'),_0xeaa2('0x71'),_0xeaa2('0x72'),_0xeaa2('0x73'),_0xeaa2('0x74')];_0x13b040=_[_0xeaa2('0x75')](_0x56e8c5[_0xeaa2('0x32')],function(_0x54088e){return _0x13f6db[_0xeaa2('0x76')](_0x54088e[_0xeaa2('0x77')]);});for(var _0x55a42d=0x0;_0x55a42d<_0x13b040[_0xeaa2('0x33')];_0x55a42d++){if(_0x13b040[_0x55a42d]['system_mandatory']===![]){_0xb6252b[_0xeaa2('0x78')]({'id':_0x13b040[_0x55a42d]['id'],'name':_0x13b040[_0x55a42d][_0xeaa2('0x79')],'custom':_0x13b040[_0x55a42d][_0xeaa2('0x7a')],'options':_0x13b040[_0x55a42d]['data_type']===_0xeaa2('0x7b')&&_0x13b040[_0x55a42d]['pick_list_values'][_0xeaa2('0x33')]>-0x1?_[_0xeaa2('0x29')](_0x13b040[_0x55a42d]['pick_list_values'],function(_0x3d55f4){return{'name':_0x3d55f4,'value':_0x3d55f4};}):[]});}}return{'count':_0xb6252b['length'],'rows':_0xb6252b};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x4fabf2,null))[_0xeaa2('0x42')](function(_0x38e964){var _0x3bac43=_0x59c0c4[_0xeaa2('0x2d')][_0xeaa2('0x7c')]?0x1f4:_0x38e964[_0xeaa2('0x7d')]||0x1f4;logger[_0xeaa2('0x26')](_0xeaa2('0x7e'),'getFields',_0x3bac43,JSON[_0xeaa2('0x7f')](_0x38e964));delete _0x38e964[_0xeaa2('0x2c')];if(_0x3bac43===0x191){_0x3bac43=0x190;}_0x4fabf2['status'](_0x3bac43)['send'](_0x59c0c4[_0xeaa2('0x2d')][_0xeaa2('0x7c')]?{'message':_0xeaa2('0x80'),'statusCode':_0x38e964[_0xeaa2('0x7d')]}:_0x38e964);});};
\ No newline at end of file
+var _0xfe16=['options','includeAll','include','findAll','catch','show','params','keys','find','create','body','destroy','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','AccountId','getSubjects','channel','Descriptions','getDescriptions','type','Subjects','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','serverUrl','code','host','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','error','Owner','Subject','WhoId','Call_Result','Call_Type','api_name','display_label','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','limit','count','offset','set','reject','save','update','then','name','send','index','ZohoAccount','rawAttributes','fieldName','key','model','map','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge'];(function(_0x63b071,_0x577512){var _0x11c860=function(_0x200b85){while(--_0x200b85){_0x63b071['push'](_0x63b071['shift']());}};_0x11c860(++_0x577512);}(_0xfe16,0xbf));var _0x6fe1=function(_0x3ed1f0,_0x261a59){_0x3ed1f0=_0x3ed1f0-0x0;var _0x1ab7c8=_0xfe16[_0x3ed1f0];return _0x1ab7c8;};'use strict';var emlformat=require(_0x6fe1('0x0'));var rimraf=require(_0x6fe1('0x1'));var zipdir=require(_0x6fe1('0x2'));var jsonpatch=require(_0x6fe1('0x3'));var rp=require(_0x6fe1('0x4'));var moment=require(_0x6fe1('0x5'));var BPromise=require(_0x6fe1('0x6'));var Mustache=require(_0x6fe1('0x7'));var util=require('util');var path=require(_0x6fe1('0x8'));var sox=require(_0x6fe1('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6fe1('0xa'));var _=require('lodash');var squel=require(_0x6fe1('0xb'));var crypto=require(_0x6fe1('0xc'));var jsforce=require(_0x6fe1('0xd'));var deskjs=require(_0x6fe1('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6fe1('0xf'));var Redis=require('ioredis');var authService=require(_0x6fe1('0x10'));var qs=require(_0x6fe1('0x11'));var as=require(_0x6fe1('0x12'));var hardwareService=require(_0x6fe1('0x13'));var logger=require('../../config/logger')(_0x6fe1('0x14'));var utils=require(_0x6fe1('0x15'));var config=require(_0x6fe1('0x16'));var licenseUtil=require(_0x6fe1('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0x6fe1('0x18'));function respondWithStatusCode(_0x57440e,_0x2ef76a){_0x2ef76a=_0x2ef76a||0xcc;return function(_0x42023e){if(_0x42023e){return _0x57440e[_0x6fe1('0x19')](_0x2ef76a);}return _0x57440e[_0x6fe1('0x1a')](_0x2ef76a)[_0x6fe1('0x1b')]();};}function respondWithResult(_0x162d70,_0x5aef1b){_0x5aef1b=_0x5aef1b||0xc8;return function(_0x22623c){if(_0x22623c){return _0x162d70[_0x6fe1('0x1a')](_0x5aef1b)[_0x6fe1('0x1c')](_0x22623c);}};}function respondWithFilteredResult(_0x5580cf,_0x1053c6){return function(_0x47fee8){if(_0x47fee8){var _0x518120=typeof _0x1053c6['offset']==='undefined'&&typeof _0x1053c6[_0x6fe1('0x1d')]==='undefined';var _0x271143=_0x47fee8[_0x6fe1('0x1e')];var _0x549cbc=_0x518120?0x0:_0x1053c6[_0x6fe1('0x1f')];var _0xbf0f21=_0x518120?_0x47fee8[_0x6fe1('0x1e')]:_0x1053c6[_0x6fe1('0x1f')]+_0x1053c6[_0x6fe1('0x1d')];var _0x23802e;if(_0xbf0f21>=_0x271143){_0xbf0f21=_0x271143;_0x23802e=0xc8;}else{_0x23802e=0xce;}_0x5580cf[_0x6fe1('0x1a')](_0x23802e);return _0x5580cf[_0x6fe1('0x20')]('Content-Range',_0x549cbc+'-'+_0xbf0f21+'/'+_0x271143)['json'](_0x47fee8);}return null;};}function patchUpdates(_0x470ef2){return function(_0x525a47){try{jsonpatch['apply'](_0x525a47,_0x470ef2,!![]);}catch(_0x4e61f2){return BPromise[_0x6fe1('0x21')](_0x4e61f2);}return _0x525a47[_0x6fe1('0x22')]();};}function saveUpdates(_0x14edf4,_0x2260b8){return function(_0x37e1bc){if(_0x37e1bc){return _0x37e1bc[_0x6fe1('0x23')](_0x14edf4)[_0x6fe1('0x24')](function(_0x1706db){return _0x1706db;});}return null;};}function removeEntity(_0x3fd8b4,_0x4c9bd3){return function(_0x3e461e){if(_0x3e461e){return _0x3e461e['destroy']()[_0x6fe1('0x24')](function(){_0x3fd8b4[_0x6fe1('0x1a')](0xcc)[_0x6fe1('0x1b')]();});}};}function handleEntityNotFound(_0x2dc8df,_0xede396){return function(_0x39e331){if(!_0x39e331){_0x2dc8df[_0x6fe1('0x19')](0x194);}return _0x39e331;};}function handleError(_0x59a314,_0x1e6565){_0x1e6565=_0x1e6565||0x1f4;return function(_0xeeec08){logger['error'](_0xeeec08['stack']);if(_0xeeec08[_0x6fe1('0x25')]){delete _0xeeec08[_0x6fe1('0x25')];}_0x59a314[_0x6fe1('0x1a')](_0x1e6565)[_0x6fe1('0x26')](_0xeeec08);};}exports[_0x6fe1('0x27')]=function(_0x2abb5d,_0x4d7dcb){var _0x2cc862={},_0x169eaa={},_0x3dac76={'count':0x0,'rows':[]};var _0x2f015f=_['map'](db[_0x6fe1('0x28')][_0x6fe1('0x29')],function(_0x333d45){return{'name':_0x333d45[_0x6fe1('0x2a')],'type':_0x333d45['type'][_0x6fe1('0x2b')]};});_0x169eaa[_0x6fe1('0x2c')]=_[_0x6fe1('0x2d')](_0x2f015f,_0x6fe1('0x25'));_0x169eaa['query']=_['keys'](_0x2abb5d[_0x6fe1('0x2e')]);_0x169eaa[_0x6fe1('0x2f')]=_['intersection'](_0x169eaa[_0x6fe1('0x2c')],_0x169eaa[_0x6fe1('0x2e')]);_0x2cc862[_0x6fe1('0x30')]=_[_0x6fe1('0x31')](_0x169eaa[_0x6fe1('0x2c')],qs[_0x6fe1('0x32')](_0x2abb5d['query']['fields']));_0x2cc862[_0x6fe1('0x30')]=_0x2cc862['attributes'][_0x6fe1('0x33')]?_0x2cc862['attributes']:_0x169eaa['model'];if(!_0x2abb5d[_0x6fe1('0x2e')]['hasOwnProperty'](_0x6fe1('0x34'))){_0x2cc862[_0x6fe1('0x1d')]=qs['limit'](_0x2abb5d[_0x6fe1('0x2e')][_0x6fe1('0x1d')]);_0x2cc862['offset']=qs['offset'](_0x2abb5d['query']['offset']);}_0x2cc862[_0x6fe1('0x35')]=qs[_0x6fe1('0x36')](_0x2abb5d['query'][_0x6fe1('0x36')]);_0x2cc862[_0x6fe1('0x37')]=qs[_0x6fe1('0x2f')](_[_0x6fe1('0x38')](_0x2abb5d[_0x6fe1('0x2e')],_0x169eaa[_0x6fe1('0x2f')]),_0x2f015f);if(_0x2abb5d[_0x6fe1('0x2e')][_0x6fe1('0x39')]){_0x2cc862[_0x6fe1('0x37')]=_[_0x6fe1('0x3a')](_0x2cc862[_0x6fe1('0x37')],{'$or':_['map'](_0x2f015f,function(_0x100526){if(_0x100526['type']!=='VIRTUAL'){var _0x234c63={};_0x234c63[_0x100526[_0x6fe1('0x25')]]={'$like':'%'+_0x2abb5d[_0x6fe1('0x2e')]['filter']+'%'};return _0x234c63;}})});}_0x2cc862=_[_0x6fe1('0x3a')]({},_0x2cc862,_0x2abb5d[_0x6fe1('0x3b')]);var _0xdf4f8f={'where':_0x2cc862[_0x6fe1('0x37')]};return db[_0x6fe1('0x28')][_0x6fe1('0x1e')](_0xdf4f8f)[_0x6fe1('0x24')](function(_0x23d348){_0x3dac76[_0x6fe1('0x1e')]=_0x23d348;if(_0x2abb5d[_0x6fe1('0x2e')][_0x6fe1('0x3c')]){_0x2cc862[_0x6fe1('0x3d')]=[{'all':!![]}];}return db[_0x6fe1('0x28')][_0x6fe1('0x3e')](_0x2cc862);})[_0x6fe1('0x24')](function(_0x3fc739){_0x3dac76['rows']=_0x3fc739;return _0x3dac76;})[_0x6fe1('0x24')](respondWithFilteredResult(_0x4d7dcb,_0x2cc862))[_0x6fe1('0x3f')](handleError(_0x4d7dcb,null));};exports[_0x6fe1('0x40')]=function(_0x2d7f29,_0x2692b3){var _0x1011f7={'raw':![],'where':{'id':_0x2d7f29[_0x6fe1('0x41')]['id']}},_0x5ebde8={};_0x5ebde8[_0x6fe1('0x2c')]=_[_0x6fe1('0x42')](db[_0x6fe1('0x28')]['rawAttributes']);_0x5ebde8[_0x6fe1('0x2e')]=_[_0x6fe1('0x42')](_0x2d7f29[_0x6fe1('0x2e')]);_0x5ebde8[_0x6fe1('0x2f')]=_[_0x6fe1('0x31')](_0x5ebde8[_0x6fe1('0x2c')],_0x5ebde8[_0x6fe1('0x2e')]);_0x1011f7[_0x6fe1('0x30')]=_[_0x6fe1('0x31')](_0x5ebde8[_0x6fe1('0x2c')],qs[_0x6fe1('0x32')](_0x2d7f29[_0x6fe1('0x2e')][_0x6fe1('0x32')]));_0x1011f7['attributes']=_0x1011f7[_0x6fe1('0x30')][_0x6fe1('0x33')]?_0x1011f7[_0x6fe1('0x30')]:_0x5ebde8[_0x6fe1('0x2c')];if(_0x2d7f29['query']['includeAll']){_0x1011f7[_0x6fe1('0x3d')]=[{'all':!![]}];}_0x1011f7=_[_0x6fe1('0x3a')]({},_0x1011f7,_0x2d7f29['options']);return db[_0x6fe1('0x28')][_0x6fe1('0x43')](_0x1011f7)[_0x6fe1('0x24')](handleEntityNotFound(_0x2692b3,null))[_0x6fe1('0x24')](respondWithResult(_0x2692b3,null))[_0x6fe1('0x3f')](handleError(_0x2692b3,null));};exports[_0x6fe1('0x44')]=function(_0x3dd497,_0x45cd87){return db[_0x6fe1('0x28')][_0x6fe1('0x44')](_0x3dd497[_0x6fe1('0x45')],{})[_0x6fe1('0x24')](respondWithResult(_0x45cd87,0xc9))[_0x6fe1('0x3f')](handleError(_0x45cd87,null));};exports[_0x6fe1('0x23')]=function(_0x327202,_0x44d495){if(_0x327202[_0x6fe1('0x45')]['id']){delete _0x327202['body']['id'];}return db[_0x6fe1('0x28')][_0x6fe1('0x43')]({'where':{'id':_0x327202[_0x6fe1('0x41')]['id']}})['then'](handleEntityNotFound(_0x44d495,null))[_0x6fe1('0x24')](saveUpdates(_0x327202['body'],null))['then'](respondWithResult(_0x44d495,null))[_0x6fe1('0x3f')](handleError(_0x44d495,null));};exports[_0x6fe1('0x46')]=function(_0x1b48c6,_0x4aec00){return db[_0x6fe1('0x28')][_0x6fe1('0x43')]({'where':{'id':_0x1b48c6[_0x6fe1('0x41')]['id']}})['then'](handleEntityNotFound(_0x4aec00,null))['then'](removeEntity(_0x4aec00,null))['catch'](handleError(_0x4aec00,null));};exports[_0x6fe1('0x47')]=function(_0x396889,_0x240c68,_0x4adefa){var _0x3f3c36={};var _0x317ac8={};var _0x1d45a7;var _0x1349e0;return db['ZohoAccount'][_0x6fe1('0x48')]({'where':{'id':_0x396889[_0x6fe1('0x41')]['id']}})[_0x6fe1('0x24')](handleEntityNotFound(_0x240c68,null))[_0x6fe1('0x24')](function(_0x276869){if(_0x276869){_0x1d45a7=_0x276869;_0x317ac8[_0x6fe1('0x2c')]=_[_0x6fe1('0x42')](db[_0x6fe1('0x49')][_0x6fe1('0x29')]);_0x317ac8[_0x6fe1('0x2e')]=_[_0x6fe1('0x42')](_0x396889[_0x6fe1('0x2e')]);_0x317ac8['filters']=_['intersection'](_0x317ac8[_0x6fe1('0x2c')],_0x317ac8[_0x6fe1('0x2e')]);_0x3f3c36[_0x6fe1('0x30')]=_[_0x6fe1('0x31')](_0x317ac8['model'],qs[_0x6fe1('0x32')](_0x396889[_0x6fe1('0x2e')][_0x6fe1('0x32')]));_0x3f3c36[_0x6fe1('0x30')]=_0x3f3c36[_0x6fe1('0x30')][_0x6fe1('0x33')]?_0x3f3c36[_0x6fe1('0x30')]:_0x317ac8[_0x6fe1('0x2c')];_0x3f3c36[_0x6fe1('0x35')]=qs[_0x6fe1('0x36')](_0x396889[_0x6fe1('0x2e')][_0x6fe1('0x36')]);_0x3f3c36[_0x6fe1('0x37')]=qs[_0x6fe1('0x2f')](_[_0x6fe1('0x38')](_0x396889[_0x6fe1('0x2e')],_0x317ac8[_0x6fe1('0x2f')]));if(_0x396889['query'][_0x6fe1('0x39')]){_0x3f3c36[_0x6fe1('0x37')]=_[_0x6fe1('0x3a')](_0x3f3c36[_0x6fe1('0x37')],{'$or':_[_0x6fe1('0x2d')](_0x3f3c36[_0x6fe1('0x30')],function(_0x1b9e9a){var _0xc856a6={};_0xc856a6[_0x1b9e9a]={'$like':'%'+_0x396889[_0x6fe1('0x2e')][_0x6fe1('0x39')]+'%'};return _0xc856a6;})});}_0x3f3c36=_[_0x6fe1('0x3a')]({},_0x3f3c36,_0x396889[_0x6fe1('0x3b')]);return _0x1d45a7['getConfigurations'](_0x3f3c36);}})[_0x6fe1('0x24')](function(_0x4c11be){if(_0x4c11be){_0x1349e0=_0x4c11be['length'];if(!_0x396889['query'][_0x6fe1('0x4a')](_0x6fe1('0x34'))){_0x3f3c36[_0x6fe1('0x1d')]=qs[_0x6fe1('0x1d')](_0x396889[_0x6fe1('0x2e')][_0x6fe1('0x1d')]);_0x3f3c36[_0x6fe1('0x1f')]=qs[_0x6fe1('0x1f')](_0x396889[_0x6fe1('0x2e')][_0x6fe1('0x1f')]);}return _0x1d45a7['getConfigurations'](_0x3f3c36);}})['then'](function(_0x24db0d){if(_0x24db0d){return _0x24db0d?{'count':_0x1349e0,'rows':_0x24db0d}:null;}})[_0x6fe1('0x24')](respondWithResult(_0x240c68,null))[_0x6fe1('0x3f')](handleError(_0x240c68,null));};exports['addConfiguration']=function(_0x3dcda9,_0x41a0cb,_0x287070){if(_0x3dcda9[_0x6fe1('0x45')]['id']){delete _0x3dcda9['body']['id'];}return db[_0x6fe1('0x28')][_0x6fe1('0x48')]({'where':{'id':_0x3dcda9[_0x6fe1('0x41')]['id']}})[_0x6fe1('0x24')](handleEntityNotFound(_0x41a0cb,null))[_0x6fe1('0x24')](function(_0x1b7697){if(_0x1b7697){_0x3dcda9[_0x6fe1('0x45')][_0x6fe1('0x4b')]=_0x1b7697['id'];_0x3dcda9[_0x6fe1('0x45')]['Subjects']=integrations[_0x6fe1('0x4c')](_0x3dcda9[_0x6fe1('0x45')][_0x6fe1('0x4d')],_0x3dcda9[_0x6fe1('0x45')]['type']);_0x3dcda9['body'][_0x6fe1('0x4e')]=integrations[_0x6fe1('0x4f')](_0x3dcda9[_0x6fe1('0x45')][_0x6fe1('0x4d')],_0x3dcda9[_0x6fe1('0x45')][_0x6fe1('0x50')]);return db[_0x6fe1('0x49')]['create'](_0x3dcda9[_0x6fe1('0x45')],{'include':[{'model':db['ZohoField'],'as':_0x6fe1('0x51')},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x41a0cb,null))[_0x6fe1('0x3f')](handleError(_0x41a0cb,null));};function getAccessToken(_0xa7ec8){return new Promise(function(_0x341818,_0x9cadde){var _0x514e9c;switch(_0xa7ec8[_0x6fe1('0x52')]){case'US':_0x514e9c=_0x6fe1('0x53');break;case'AU':_0x514e9c=_0x6fe1('0x54');break;case'EU':_0x514e9c='https://accounts.zoho.eu';break;case'IN':_0x514e9c='https://accounts.zoho.in';break;case'CN':_0x514e9c='https://accounts.zoho.com.cn';break;default:_0x514e9c=_0x6fe1('0x55');break;}var _0x4f24f7={'method':'POST','uri':_0x514e9c+_0x6fe1('0x56'),'qs':{'refresh_token':_0xa7ec8[_0x6fe1('0x57')],'client_id':_0xa7ec8[_0x6fe1('0x58')],'client_secret':_0xa7ec8[_0x6fe1('0x59')],'grant_type':_0x6fe1('0x5a')},'json':!![]};return rp(_0x4f24f7)[_0x6fe1('0x24')](function(_0x53368b){if(_0x53368b[_0x6fe1('0x5b')]){_0x341818(_0x53368b['access_token']);}else{_0x9cadde(_0x6fe1('0x5c'));}})['catch'](function(_0x45c1b1){_0x9cadde(_0x45c1b1);});});}exports[_0x6fe1('0x5d')]=function(_0x467178,_0x3f99ba,_0x42c00f){var _0x12bf5e,_0x487d43,_0x490ed3,_0x3c0ecc,_0xbfdabe;return db[_0x6fe1('0x28')][_0x6fe1('0x48')]({'where':{'id':_0x467178[_0x6fe1('0x41')]['id']},'attributes':['id','host','zone',_0x6fe1('0x58'),'clientSecret',_0x6fe1('0x5e'),_0x6fe1('0x5f'),_0x6fe1('0x57')]})[_0x6fe1('0x24')](handleEntityNotFound(_0x3f99ba,null))[_0x6fe1('0x24')](function(_0x485a96){_0xbfdabe=_0x485a96;_0x12bf5e=_0xbfdabe[_0x6fe1('0x60')];_0x487d43=_0x12bf5e===_0x6fe1('0x61')?'eu':_0x6fe1('0x62');_0x490ed3=_0xbfdabe[_0x6fe1('0x5e')];var _0x1de14f=_0x490ed3[_0x6fe1('0x63')](-0x1);if(_0x1de14f==='/'||_0x1de14f==='\x5c'||_0x1de14f===':'){_0x490ed3=_0x490ed3[_0x6fe1('0x64')](0x0,_0x490ed3[_0x6fe1('0x65')](_0x1de14f));}if(!_0xbfdabe[_0x6fe1('0x57')]){throw new Error(_0x6fe1('0x66'));}return getAccessToken(_0xbfdabe);})['then'](function(_0x14c85d){if(_0x14c85d){return rp({'method':_0x6fe1('0x67'),'uri':util[_0x6fe1('0x68')](_0x6fe1('0x69'),_0x487d43),'qs':{'module':'Calls'},'headers':{'Authorization':_0x6fe1('0x6a')+_0x14c85d},'json':!![]});}})[_0x6fe1('0x24')](function(_0x5967fd){if(_0x5967fd){if(_0x5967fd[_0x6fe1('0x6b')]&&_0x5967fd[_0x6fe1('0x6b')][_0x6fe1('0x6c')]){throw new Error(_0x5967fd['response']['error']['message']);}var _0x52d934=[];var _0xb504cd=[];var _0x55e142=[_0x6fe1('0x6d'),_0x6fe1('0x6e'),'Description',_0x6fe1('0x6f'),'Call_Duration',_0x6fe1('0x70'),'Call_Start_Time',_0x6fe1('0x71')];_0xb504cd=_['remove'](_0x5967fd[_0x6fe1('0x32')],function(_0x13d86f){return _0x55e142['includes'](_0x13d86f[_0x6fe1('0x72')]);});for(var _0x3d4f0b=0x0;_0x3d4f0b<_0xb504cd['length'];_0x3d4f0b++){if(_0xb504cd[_0x3d4f0b]['system_mandatory']===![]){_0x52d934['push']({'id':_0xb504cd[_0x3d4f0b]['id'],'name':_0xb504cd[_0x3d4f0b][_0x6fe1('0x73')],'custom':_0xb504cd[_0x3d4f0b][_0x6fe1('0x74')],'options':_0xb504cd[_0x3d4f0b][_0x6fe1('0x75')]===_0x6fe1('0x76')&&_0xb504cd[_0x3d4f0b]['pick_list_values'][_0x6fe1('0x33')]>-0x1?_[_0x6fe1('0x2d')](_0xb504cd[_0x3d4f0b][_0x6fe1('0x77')],function(_0x2dd74d){return{'name':_0x2dd74d,'value':_0x2dd74d};}):[]});}}return{'count':_0x52d934[_0x6fe1('0x33')],'rows':_0x52d934};}else{return{'count':0x0,'rows':[]};}})[_0x6fe1('0x24')](respondWithResult(_0x3f99ba,null))['catch'](function(_0x3561cf){var _0x20dfb8=_0x467178['query'][_0x6fe1('0x78')]?0x1f4:_0x3561cf[_0x6fe1('0x79')]||0x1f4;logger[_0x6fe1('0x6c')](_0x6fe1('0x7a'),'getFields',_0x20dfb8,JSON[_0x6fe1('0x7b')](_0x3561cf));delete _0x3561cf[_0x6fe1('0x25')];if(_0x20dfb8===0x191){_0x20dfb8=0x190;}_0x3f99ba[_0x6fe1('0x1a')](_0x20dfb8)[_0x6fe1('0x26')](_0x467178[_0x6fe1('0x2e')]['test']?{'message':_0x6fe1('0x7c'),'statusCode':_0x3561cf[_0x6fe1('0x79')]}:_0x3561cf);});};
\ No newline at end of file
index fd9e00c..191caff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb137=['application/x-www-form-urlencoded','refresh_token','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','catch','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','host','lastIndexOf','https://accounts.zoho.com.cn','then','parse','lodash','api','request-promise','path','../../config/environment','./intZohoAccount.attributes','exports','define','changed','zone','serverUrl','clientId','clientSecret','code','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','authorization_code'];(function(_0x54eda9,_0x3f328b){var _0x506ccc=function(_0x2add35){while(--_0x2add35){_0x54eda9['push'](_0x54eda9['shift']());}};_0x506ccc(++_0x3f328b);}(_0xb137,0x1f0));var _0x7b13=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0xb137[_0x211632];return _0x5a1da1;};'use strict';var _=require(_0x7b13('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7b13('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7b13('0x2'));var fs=require('fs');var path=require(_0x7b13('0x3'));var rimraf=require('rimraf');var config=require(_0x7b13('0x4'));var attributes=require(_0x7b13('0x5'));var integrations=require('../../components/integrations/configuration');module[_0x7b13('0x6')]=function(_0x351cf2,_0x55265f){return _0x351cf2[_0x7b13('0x7')]('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x305f86,_0xfa5236,_0x54d959){if(_0x305f86[_0x7b13('0x8')](_0x7b13('0x9'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xa'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xb'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xc'))||_0x305f86[_0x7b13('0x8')](_0x7b13('0xd'))||_0x305f86['changed']('host')){var _0x464d44,_0x19ee65;_0x464d44=_0x305f86[_0x7b13('0xa')];var _0x4bf626=_0x464d44[_0x7b13('0xe')](-0x1);if(_0x4bf626==='/'||_0x4bf626==='\x5c'||_0x4bf626===':'){_0x464d44=_0x464d44[_0x7b13('0xf')](0x0,_0x464d44['lastIndexOf'](_0x4bf626));}switch(_0x305f86['zone']){case'US':_0x19ee65=_0x7b13('0x10');break;case'AU':_0x19ee65=_0x7b13('0x11');break;case'IN':_0x19ee65=_0x7b13('0x12');break;case'CN':_0x19ee65='https://accounts.zoho.com.cn';break;default:_0x19ee65=_0x7b13('0x13');break;}var _0x4e742d={'method':'POST','uri':_0x19ee65+_0x7b13('0x14'),'form':{'grant_type':_0x7b13('0x15'),'client_id':_0x305f86[_0x7b13('0xb')],'client_secret':_0x305f86[_0x7b13('0xc')],'redirect_uri':_0x305f86[_0x7b13('0xa')],'code':_0x305f86['code']},'headers':{'Content-Type':_0x7b13('0x16')}};return rp(_0x4e742d)['then'](function(_0x34dc47){var _0x41ae59=JSON['parse'](_0x34dc47);if(_0x41ae59[_0x7b13('0x17')]){_0x305f86['refreshToken']=_0x41ae59[_0x7b13('0x17')];logger[_0x7b13('0x18')](util[_0x7b13('0x19')](_0x7b13('0x1a'),_0x305f86[_0x7b13('0x1b')],_0x305f86['id']));}else{logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x305f86[_0x7b13('0x1b')],_0x305f86['id']),util['inspect'](_0x41ae59,{'showHidden':![],'depth':null}));}return _0x54d959(null,_0xfa5236);})[_0x7b13('0x1c')](function(_0x265d98){logger[_0x7b13('0x1d')](util['format'](_0x7b13('0x1e'),_0x305f86[_0x7b13('0x1b')],_0x305f86['id']),util[_0x7b13('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x54d959(_0x265d98);});}else{return _0x54d959(null,_0xfa5236);}},'beforeUpdate':function(_0x264db8,_0x433122,_0x32e8f2){if(_0x264db8[_0x7b13('0x8')](_0x7b13('0x9'))||_0x264db8[_0x7b13('0x8')]('serverUrl')||_0x264db8[_0x7b13('0x8')](_0x7b13('0xb'))||_0x264db8[_0x7b13('0x8')](_0x7b13('0xc'))||_0x264db8['changed'](_0x7b13('0xd'))||_0x264db8[_0x7b13('0x8')](_0x7b13('0x20'))){var _0x46fc2d,_0x5b144f;_0x46fc2d=_0x264db8[_0x7b13('0xa')];var _0x385470=_0x46fc2d[_0x7b13('0xe')](-0x1);if(_0x385470==='/'||_0x385470==='\x5c'||_0x385470===':'){_0x46fc2d=_0x46fc2d[_0x7b13('0xf')](0x0,_0x46fc2d[_0x7b13('0x21')](_0x385470));}switch(_0x264db8['zone']){case'US':_0x5b144f=_0x7b13('0x10');break;case'AU':_0x5b144f='https://accounts.zoho.com.au';break;case'IN':_0x5b144f=_0x7b13('0x12');break;case'CN':_0x5b144f=_0x7b13('0x22');break;default:_0x5b144f='https://accounts.zoho.eu';break;}var _0x47d89c={'method':'POST','uri':_0x5b144f+_0x7b13('0x14'),'form':{'grant_type':_0x7b13('0x15'),'client_id':_0x264db8[_0x7b13('0xb')],'client_secret':_0x264db8['clientSecret'],'redirect_uri':_0x264db8[_0x7b13('0xa')],'code':_0x264db8[_0x7b13('0xd')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x47d89c)[_0x7b13('0x23')](function(_0x469d13){var _0x585111=JSON[_0x7b13('0x24')](_0x469d13);if(_0x585111[_0x7b13('0x17')]){_0x264db8['refreshToken']=_0x585111[_0x7b13('0x17')];logger[_0x7b13('0x18')](util[_0x7b13('0x19')](_0x7b13('0x1a'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']));}else{logger['error'](util[_0x7b13('0x19')](_0x7b13('0x1e'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']),util['inspect'](_0x585111,{'showHidden':![],'depth':null}));}return _0x32e8f2(null,_0x433122);})[_0x7b13('0x1c')](function(_0x1de252){logger['error'](util[_0x7b13('0x19')](_0x7b13('0x1e'),_0x264db8[_0x7b13('0x1b')],_0x264db8['id']),util[_0x7b13('0x1f')](parsedResult,{'showHidden':![],'depth':null}));return _0x32e8f2(_0x1de252);});}else{return _0x32e8f2(null,_0x433122);}}}});};
\ No newline at end of file
+var _0x9bd7=['refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','host','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','then','parse','info','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','int_zoho_accounts','zone','changed','serverUrl','clientId','code','slice','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.cn','POST','authorization_code','clientSecret','application/x-www-form-urlencoded'];(function(_0x12187e,_0x3ac0b2){var _0x4e5cf9=function(_0x12438b){while(--_0x12438b){_0x12187e['push'](_0x12187e['shift']());}};_0x4e5cf9(++_0x3ac0b2);}(_0x9bd7,0x106));var _0x79bd=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9bd7[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x79bd('0x0'));var util=require(_0x79bd('0x1'));var logger=require(_0x79bd('0x2'))(_0x79bd('0x3'));var moment=require(_0x79bd('0x4'));var BPromise=require(_0x79bd('0x5'));var rp=require(_0x79bd('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x79bd('0x7'));var config=require(_0x79bd('0x8'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x79bd('0x9'));module[_0x79bd('0xa')]=function(_0x35aaed,_0x4d0110){return _0x35aaed['define']('ZohoAccount',attributes,{'tableName':_0x79bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1ff57b,_0x1f5c50,_0x327b6b){if(_0x1ff57b['changed'](_0x79bd('0xc'))||_0x1ff57b[_0x79bd('0xd')](_0x79bd('0xe'))||_0x1ff57b[_0x79bd('0xd')](_0x79bd('0xf'))||_0x1ff57b[_0x79bd('0xd')]('clientSecret')||_0x1ff57b[_0x79bd('0xd')](_0x79bd('0x10'))||_0x1ff57b['changed']('host')){var _0x51df55,_0x25ec18;_0x51df55=_0x1ff57b['serverUrl'];var _0x55b0e9=_0x51df55[_0x79bd('0x11')](-0x1);if(_0x55b0e9==='/'||_0x55b0e9==='\x5c'||_0x55b0e9===':'){_0x51df55=_0x51df55['substring'](0x0,_0x51df55[_0x79bd('0x12')](_0x55b0e9));}switch(_0x1ff57b[_0x79bd('0xc')]){case'US':_0x25ec18=_0x79bd('0x13');break;case'AU':_0x25ec18='https://accounts.zoho.com.au';break;case'IN':_0x25ec18='https://accounts.zoho.in';break;case'CN':_0x25ec18=_0x79bd('0x14');break;default:_0x25ec18='https://accounts.zoho.eu';break;}var _0x82fc4={'method':_0x79bd('0x15'),'uri':_0x25ec18+'/oauth/v2/token','form':{'grant_type':_0x79bd('0x16'),'client_id':_0x1ff57b[_0x79bd('0xf')],'client_secret':_0x1ff57b[_0x79bd('0x17')],'redirect_uri':_0x1ff57b[_0x79bd('0xe')],'code':_0x1ff57b[_0x79bd('0x10')]},'headers':{'Content-Type':_0x79bd('0x18')}};return rp(_0x82fc4)['then'](function(_0x3725f4){var _0x5cfaea=JSON['parse'](_0x3725f4);if(_0x5cfaea[_0x79bd('0x19')]){_0x1ff57b[_0x79bd('0x1a')]=_0x5cfaea[_0x79bd('0x19')];logger['info'](util[_0x79bd('0x1b')](_0x79bd('0x1c'),_0x1ff57b[_0x79bd('0x1d')],_0x1ff57b['id']));}else{logger[_0x79bd('0x1e')](util['format'](_0x79bd('0x1f'),_0x1ff57b[_0x79bd('0x1d')],_0x1ff57b['id']),util[_0x79bd('0x20')](_0x5cfaea,{'showHidden':![],'depth':null}));}return _0x327b6b(null,_0x1f5c50);})[_0x79bd('0x21')](function(_0x4dd8b1){logger[_0x79bd('0x1e')](util['format'](_0x79bd('0x1f'),_0x1ff57b[_0x79bd('0x1d')],_0x1ff57b['id']),util[_0x79bd('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x327b6b(_0x4dd8b1);});}else{return _0x327b6b(null,_0x1f5c50);}},'beforeUpdate':function(_0x48d0f4,_0x55b844,_0x489b68){if(_0x48d0f4[_0x79bd('0xd')]('zone')||_0x48d0f4[_0x79bd('0xd')](_0x79bd('0xe'))||_0x48d0f4[_0x79bd('0xd')]('clientId')||_0x48d0f4[_0x79bd('0xd')](_0x79bd('0x17'))||_0x48d0f4['changed'](_0x79bd('0x10'))||_0x48d0f4['changed'](_0x79bd('0x22'))){var _0x330ebe,_0x2d8113;_0x330ebe=_0x48d0f4[_0x79bd('0xe')];var _0x1dfd6e=_0x330ebe[_0x79bd('0x11')](-0x1);if(_0x1dfd6e==='/'||_0x1dfd6e==='\x5c'||_0x1dfd6e===':'){_0x330ebe=_0x330ebe['substring'](0x0,_0x330ebe['lastIndexOf'](_0x1dfd6e));}switch(_0x48d0f4[_0x79bd('0xc')]){case'US':_0x2d8113='https://accounts.zoho.com';break;case'AU':_0x2d8113='https://accounts.zoho.com.au';break;case'IN':_0x2d8113=_0x79bd('0x23');break;case'CN':_0x2d8113=_0x79bd('0x14');break;default:_0x2d8113=_0x79bd('0x24');break;}var _0x3836f7={'method':'POST','uri':_0x2d8113+_0x79bd('0x25'),'form':{'grant_type':_0x79bd('0x16'),'client_id':_0x48d0f4[_0x79bd('0xf')],'client_secret':_0x48d0f4[_0x79bd('0x17')],'redirect_uri':_0x48d0f4[_0x79bd('0xe')],'code':_0x48d0f4[_0x79bd('0x10')]},'headers':{'Content-Type':_0x79bd('0x18')}};return rp(_0x3836f7)[_0x79bd('0x26')](function(_0x48651e){var _0x41a08d=JSON[_0x79bd('0x27')](_0x48651e);if(_0x41a08d['refresh_token']){_0x48d0f4[_0x79bd('0x1a')]=_0x41a08d[_0x79bd('0x19')];logger[_0x79bd('0x28')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x48d0f4[_0x79bd('0x1d')],_0x48d0f4['id']));}else{logger['error'](util['format'](_0x79bd('0x1f'),_0x48d0f4[_0x79bd('0x1d')],_0x48d0f4['id']),util['inspect'](_0x41a08d,{'showHidden':![],'depth':null}));}return _0x489b68(null,_0x55b844);})['catch'](function(_0x3eeca2){logger[_0x79bd('0x1e')](util[_0x79bd('0x1b')](_0x79bd('0x1f'),_0x48d0f4[_0x79bd('0x1d')],_0x48d0f4['id']),util[_0x79bd('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x489b68(_0x3eeca2);});}else{return _0x489b68(null,_0x55b844);}}}});};
\ No newline at end of file
index 3b59373..bf4685f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcac2=['findAll','options','raw','where','attributes','limit','include','model','map','then','ShowZohoAccount','find','lodash','util','moment','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','info','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount'];(function(_0xf090bb,_0x4b4d9f){var _0x4a57f5=function(_0x24f2d3){while(--_0x24f2d3){_0xf090bb['push'](_0xf090bb['shift']());}};_0x4a57f5(++_0x4b4d9f);}(_0xcac2,0x1e8));var _0x2cac=function(_0x445010,_0x27317d){_0x445010=_0x445010-0x0;var _0x11fa38=_0xcac2[_0x445010];return _0x11fa38;};'use strict';var _=require(_0x2cac('0x0'));var util=require(_0x2cac('0x1'));var moment=require(_0x2cac('0x2'));var BPromise=require('bluebird');var rs=require(_0x2cac('0x3'));var fs=require('fs');var Redis=require(_0x2cac('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2cac('0x5'));var jayson=require(_0x2cac('0x6'));var client=jayson[_0x2cac('0x7')][_0x2cac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f996c,_0x703f11,_0x1920cf){return new BPromise(function(_0x56b4f9,_0x5df249){return client[_0x2cac('0x9')](_0x2f996c,_0x1920cf)['then'](function(_0x361260){logger[_0x2cac('0xa')]('ZohoAccount,\x20%s,\x20%s',_0x703f11,'request\x20sent');logger[_0x2cac('0xb')](_0x2cac('0xc'),_0x703f11,'request\x20sent',JSON[_0x2cac('0xd')](_0x361260));if(_0x361260['error']){if(_0x361260[_0x2cac('0xe')][_0x2cac('0xf')]===0x1f4){logger[_0x2cac('0xe')](_0x2cac('0x10'),_0x703f11,_0x361260[_0x2cac('0xe')]['message']);return _0x5df249(_0x361260[_0x2cac('0xe')][_0x2cac('0x11')]);}logger['error'](_0x2cac('0x10'),_0x703f11,_0x361260[_0x2cac('0xe')][_0x2cac('0x11')]);return _0x56b4f9(_0x361260['error'][_0x2cac('0x11')]);}else{logger[_0x2cac('0xa')](_0x2cac('0x10'),_0x703f11,'request\x20sent');_0x56b4f9(_0x361260[_0x2cac('0x12')][_0x2cac('0x11')]);}})[_0x2cac('0x13')](function(_0x4d4646){logger['error'](_0x2cac('0x10'),_0x703f11,_0x4d4646);_0x5df249(_0x4d4646);});});}exports[_0x2cac('0x14')]=function(_0x1dac01){var _0x10d454=this;return new Promise(function(_0x2109af,_0x5b6f17){return db[_0x2cac('0x15')][_0x2cac('0x16')]({'raw':_0x1dac01[_0x2cac('0x17')]?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x18')]===undefined?!![]:![]:!![],'where':_0x1dac01[_0x2cac('0x17')]?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x19')]||null:null,'attributes':_0x1dac01['options']?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x1a')]||null:null,'limit':_0x1dac01['options']?_0x1dac01['options'][_0x2cac('0x1b')]||null:null,'include':_0x1dac01['options']?_0x1dac01[_0x2cac('0x17')][_0x2cac('0x1c')]?_['map'](_0x1dac01[_0x2cac('0x17')]['include'],function(_0x43b372){return{'model':db[_0x43b372[_0x2cac('0x1d')]],'as':_0x43b372['as'],'attributes':_0x43b372[_0x2cac('0x1a')],'include':_0x43b372[_0x2cac('0x1c')]?_['map'](_0x43b372[_0x2cac('0x1c')],function(_0x1de22c){return{'model':db[_0x1de22c[_0x2cac('0x1d')]],'as':_0x1de22c['as'],'attributes':_0x1de22c[_0x2cac('0x1a')],'include':_0x1de22c[_0x2cac('0x1c')]?_[_0x2cac('0x1e')](_0x1de22c['include'],function(_0x2c1968){return{'model':db[_0x2c1968[_0x2cac('0x1d')]],'as':_0x2c1968['as'],'attributes':_0x2c1968['attributes']};}):[]};}):[]};}):[]:[]})[_0x2cac('0x1f')](function(_0x4b6ad1){logger[_0x2cac('0xa')](_0x2cac('0x14'),_0x1dac01);logger['debug']('GetZohoAccount',_0x1dac01,JSON[_0x2cac('0xd')](_0x4b6ad1));_0x2109af(_0x4b6ad1);})[_0x2cac('0x13')](function(_0x246cef){logger['error'](_0x2cac('0x14'),_0x246cef[_0x2cac('0x11')],_0x1dac01);_0x5b6f17(_0x10d454[_0x2cac('0xe')](0x1f4,_0x246cef['message']));});});};exports[_0x2cac('0x20')]=function(_0x1460da){var _0x3780c0=this;return new Promise(function(_0x2bed7d,_0x1b4844){return db[_0x2cac('0x15')][_0x2cac('0x21')]({'raw':_0x1460da['options']?_0x1460da[_0x2cac('0x17')][_0x2cac('0x18')]===undefined?!![]:![]:!![],'where':_0x1460da[_0x2cac('0x17')]?_0x1460da['options'][_0x2cac('0x19')]||null:null,'attributes':_0x1460da[_0x2cac('0x17')]?_0x1460da[_0x2cac('0x17')][_0x2cac('0x1a')]||null:null,'include':_0x1460da[_0x2cac('0x17')]?_0x1460da[_0x2cac('0x17')][_0x2cac('0x1c')]?_[_0x2cac('0x1e')](_0x1460da[_0x2cac('0x17')]['include'],function(_0x4ad3af){return{'model':db[_0x4ad3af['model']],'as':_0x4ad3af['as'],'attributes':_0x4ad3af[_0x2cac('0x1a')],'include':_0x4ad3af[_0x2cac('0x1c')]?_['map'](_0x4ad3af['include'],function(_0x47a5aa){return{'model':db[_0x47a5aa['model']],'as':_0x47a5aa['as'],'attributes':_0x47a5aa['attributes'],'include':_0x47a5aa[_0x2cac('0x1c')]?_['map'](_0x47a5aa[_0x2cac('0x1c')],function(_0x11c7a9){return{'model':db[_0x11c7a9[_0x2cac('0x1d')]],'as':_0x11c7a9['as'],'attributes':_0x11c7a9[_0x2cac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2cac('0x1f')](function(_0x314507){logger[_0x2cac('0xa')](_0x2cac('0x20'),_0x1460da);logger[_0x2cac('0xb')](_0x2cac('0x20'),_0x1460da,JSON['stringify'](_0x314507));_0x2bed7d(_0x314507);})[_0x2cac('0x13')](function(_0x27a48d){logger['error']('ShowZohoAccount',_0x27a48d[_0x2cac('0x11')],_0x1460da);_0x1b4844(_0x3780c0[_0x2cac('0xe')](0x1f4,_0x27a48d[_0x2cac('0x11')]));});});};
\ No newline at end of file
+var _0xd7d5=['limit','include','map','model','catch','ShowZohoAccount','find','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetZohoAccount','ZohoAccount','findAll','options','attributes'];(function(_0x2a7516,_0x3a5188){var _0xc13ffd=function(_0x3461c8){while(--_0x3461c8){_0x2a7516['push'](_0x2a7516['shift']());}};_0xc13ffd(++_0x3a5188);}(_0xd7d5,0x1ea));var _0x5d7d=function(_0x1651fd,_0xd95e06){_0x1651fd=_0x1651fd-0x0;var _0x576115=_0xd7d5[_0x1651fd];return _0x576115;};'use strict';var _=require(_0x5d7d('0x0'));var util=require(_0x5d7d('0x1'));var moment=require(_0x5d7d('0x2'));var BPromise=require(_0x5d7d('0x3'));var rs=require(_0x5d7d('0x4'));var fs=require('fs');var Redis=require(_0x5d7d('0x5'));var db=require(_0x5d7d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5d7d('0x7'))('rpc');var config=require(_0x5d7d('0x8'));var jayson=require(_0x5d7d('0x9'));var client=jayson[_0x5d7d('0xa')][_0x5d7d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d2611,_0x5eaf38,_0x1d443e){return new BPromise(function(_0x3aea7b,_0x3168f8){return client[_0x5d7d('0xc')](_0x2d2611,_0x1d443e)['then'](function(_0x414170){logger[_0x5d7d('0xd')](_0x5d7d('0xe'),_0x5eaf38,_0x5d7d('0xf'));logger[_0x5d7d('0x10')](_0x5d7d('0x11'),_0x5eaf38,_0x5d7d('0xf'),JSON[_0x5d7d('0x12')](_0x414170));if(_0x414170[_0x5d7d('0x13')]){if(_0x414170['error'][_0x5d7d('0x14')]===0x1f4){logger[_0x5d7d('0x13')](_0x5d7d('0xe'),_0x5eaf38,_0x414170['error'][_0x5d7d('0x15')]);return _0x3168f8(_0x414170['error']['message']);}logger['error'](_0x5d7d('0xe'),_0x5eaf38,_0x414170[_0x5d7d('0x13')]['message']);return _0x3aea7b(_0x414170['error'][_0x5d7d('0x15')]);}else{logger[_0x5d7d('0xd')](_0x5d7d('0xe'),_0x5eaf38,_0x5d7d('0xf'));_0x3aea7b(_0x414170[_0x5d7d('0x16')]['message']);}})['catch'](function(_0x4dc832){logger[_0x5d7d('0x13')](_0x5d7d('0xe'),_0x5eaf38,_0x4dc832);_0x3168f8(_0x4dc832);});});}exports[_0x5d7d('0x17')]=function(_0x144c1d){var _0x1aa4f5=this;return new Promise(function(_0x1a64e6,_0x7312b2){return db[_0x5d7d('0x18')][_0x5d7d('0x19')]({'raw':_0x144c1d[_0x5d7d('0x1a')]?_0x144c1d[_0x5d7d('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x144c1d[_0x5d7d('0x1a')]?_0x144c1d['options']['where']||null:null,'attributes':_0x144c1d[_0x5d7d('0x1a')]?_0x144c1d[_0x5d7d('0x1a')][_0x5d7d('0x1b')]||null:null,'limit':_0x144c1d[_0x5d7d('0x1a')]?_0x144c1d[_0x5d7d('0x1a')][_0x5d7d('0x1c')]||null:null,'include':_0x144c1d[_0x5d7d('0x1a')]?_0x144c1d[_0x5d7d('0x1a')][_0x5d7d('0x1d')]?_[_0x5d7d('0x1e')](_0x144c1d[_0x5d7d('0x1a')]['include'],function(_0xc03128){return{'model':db[_0xc03128[_0x5d7d('0x1f')]],'as':_0xc03128['as'],'attributes':_0xc03128[_0x5d7d('0x1b')],'include':_0xc03128[_0x5d7d('0x1d')]?_['map'](_0xc03128['include'],function(_0x14002a){return{'model':db[_0x14002a[_0x5d7d('0x1f')]],'as':_0x14002a['as'],'attributes':_0x14002a[_0x5d7d('0x1b')],'include':_0x14002a['include']?_[_0x5d7d('0x1e')](_0x14002a['include'],function(_0x2c2745){return{'model':db[_0x2c2745[_0x5d7d('0x1f')]],'as':_0x2c2745['as'],'attributes':_0x2c2745[_0x5d7d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x371a78){logger[_0x5d7d('0xd')](_0x5d7d('0x17'),_0x144c1d);logger['debug'](_0x5d7d('0x17'),_0x144c1d,JSON['stringify'](_0x371a78));_0x1a64e6(_0x371a78);})[_0x5d7d('0x20')](function(_0x18545f){logger[_0x5d7d('0x13')](_0x5d7d('0x17'),_0x18545f[_0x5d7d('0x15')],_0x144c1d);_0x7312b2(_0x1aa4f5['error'](0x1f4,_0x18545f[_0x5d7d('0x15')]));});});};exports[_0x5d7d('0x21')]=function(_0x1ff099){var _0x3e5c29=this;return new Promise(function(_0x4c588c,_0x683be2){return db[_0x5d7d('0x18')][_0x5d7d('0x22')]({'raw':_0x1ff099[_0x5d7d('0x1a')]?_0x1ff099['options'][_0x5d7d('0x23')]===undefined?!![]:![]:!![],'where':_0x1ff099[_0x5d7d('0x1a')]?_0x1ff099[_0x5d7d('0x1a')]['where']||null:null,'attributes':_0x1ff099['options']?_0x1ff099[_0x5d7d('0x1a')][_0x5d7d('0x1b')]||null:null,'include':_0x1ff099['options']?_0x1ff099[_0x5d7d('0x1a')][_0x5d7d('0x1d')]?_[_0x5d7d('0x1e')](_0x1ff099[_0x5d7d('0x1a')][_0x5d7d('0x1d')],function(_0x3bfc52){return{'model':db[_0x3bfc52[_0x5d7d('0x1f')]],'as':_0x3bfc52['as'],'attributes':_0x3bfc52[_0x5d7d('0x1b')],'include':_0x3bfc52[_0x5d7d('0x1d')]?_[_0x5d7d('0x1e')](_0x3bfc52[_0x5d7d('0x1d')],function(_0x10788d){return{'model':db[_0x10788d['model']],'as':_0x10788d['as'],'attributes':_0x10788d[_0x5d7d('0x1b')],'include':_0x10788d[_0x5d7d('0x1d')]?_[_0x5d7d('0x1e')](_0x10788d['include'],function(_0x37dae8){return{'model':db[_0x37dae8[_0x5d7d('0x1f')]],'as':_0x37dae8['as'],'attributes':_0x37dae8['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d7d('0x24')](function(_0x1e6f25){logger[_0x5d7d('0xd')]('ShowZohoAccount',_0x1ff099);logger['debug'](_0x5d7d('0x21'),_0x1ff099,JSON['stringify'](_0x1e6f25));_0x4c588c(_0x1e6f25);})['catch'](function(_0xcce177){logger[_0x5d7d('0x13')]('ShowZohoAccount',_0xcce177[_0x5d7d('0x15')],_0x1ff099);_0x683be2(_0x3e5c29['error'](0x1f4,_0xcce177[_0x5d7d('0x15')]));});});};
\ No newline at end of file
index 2c87d3b..6e1cf00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20fe=['index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x20fe,0x160));var _0xe20f=function(_0x52dfba,_0x30de83){_0x52dfba=_0x52dfba-0x0;var _0x1f16c1=_0x20fe[_0x52dfba];return _0x1f16c1;};'use strict';var multer=require('multer');var util=require(_0xe20f('0x0'));var path=require(_0xe20f('0x1'));var timeout=require(_0xe20f('0x2'));var express=require(_0xe20f('0x3'));var router=express[_0xe20f('0x4')]();var fs_extra=require(_0xe20f('0x5'));var auth=require(_0xe20f('0x6'));var interaction=require(_0xe20f('0x7'));var config=require(_0xe20f('0x8'));var controller=require(_0xe20f('0x9'));router[_0xe20f('0xa')]('/',auth[_0xe20f('0xb')](),controller[_0xe20f('0xc')]);router[_0xe20f('0xa')](_0xe20f('0xd'),auth['isAuthenticated'](),controller[_0xe20f('0xe')]);router[_0xe20f('0xa')](_0xe20f('0xf'),auth[_0xe20f('0xb')](),controller['getFields']);router['get'](_0xe20f('0x10'),auth[_0xe20f('0xb')](),controller[_0xe20f('0x11')]);router[_0xe20f('0xa')](_0xe20f('0x12'),auth['isAuthenticated'](),controller[_0xe20f('0x13')]);router[_0xe20f('0x14')]('/',auth[_0xe20f('0xb')](),controller[_0xe20f('0x15')]);router['put'](_0xe20f('0xd'),auth[_0xe20f('0xb')](),controller[_0xe20f('0x16')]);router[_0xe20f('0x17')](_0xe20f('0xd'),auth['isAuthenticated'](),controller[_0xe20f('0x18')]);module[_0xe20f('0x19')]=router;
\ No newline at end of file
+var _0x8376=['../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','isAuthenticated','get','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','post','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x7f287d,_0xe3b36e){var _0x21514f=function(_0x2e392e){while(--_0x2e392e){_0x7f287d['push'](_0x7f287d['shift']());}};_0x21514f(++_0xe3b36e);}(_0x8376,0xea));var _0x6837=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x8376[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x6837('0x0'));var util=require('util');var path=require(_0x6837('0x1'));var timeout=require(_0x6837('0x2'));var express=require(_0x6837('0x3'));var router=express[_0x6837('0x4')]();var fs_extra=require(_0x6837('0x5'));var auth=require(_0x6837('0x6'));var interaction=require(_0x6837('0x7'));var config=require('../../config/environment');var controller=require(_0x6837('0x8'));router['get']('/',auth[_0x6837('0x9')](),controller['index']);router[_0x6837('0xa')](_0x6837('0xb'),auth[_0x6837('0x9')](),controller['show']);router[_0x6837('0xa')](_0x6837('0xc'),auth['isAuthenticated'](),controller[_0x6837('0xd')]);router[_0x6837('0xa')](_0x6837('0xe'),auth[_0x6837('0x9')](),controller[_0x6837('0xf')]);router[_0x6837('0xa')]('/:id/descriptions',auth[_0x6837('0x9')](),controller['getDescriptions']);router[_0x6837('0x10')]('/',auth[_0x6837('0x9')](),controller['create']);router['put'](_0x6837('0xb'),auth[_0x6837('0x9')](),controller[_0x6837('0x11')]);router['delete']('/:id',auth[_0x6837('0x9')](),controller[_0x6837('0x12')]);module[_0x6837('0x13')]=router;
\ No newline at end of file
index f3c46a0..3b7ec4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6797=['nothing','sequelize','exports','STRING','ENUM','lead','contact'];(function(_0x5eba42,_0x5e100){var _0x17906c=function(_0x4bb312){while(--_0x4bb312){_0x5eba42['push'](_0x5eba42['shift']());}};_0x17906c(++_0x5e100);}(_0x6797,0x94));var _0x7679=function(_0x2e06e0,_0xc8d819){_0x2e06e0=_0x2e06e0-0x0;var _0x18bd5c=_0x6797[_0x2e06e0];return _0x18bd5c;};'use strict';var Sequelize=require(_0x7679('0x0'));module[_0x7679('0x1')]={'name':{'type':Sequelize[_0x7679('0x2')]},'moduleCreate':{'type':Sequelize[_0x7679('0x3')](_0x7679('0x4'),_0x7679('0x5'),_0x7679('0x6')),'defaultValue':_0x7679('0x4')},'moduleSearch':{'type':Sequelize[_0x7679('0x3')]('contact_lead',_0x7679('0x5'),_0x7679('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x7679('0x2')]}};
\ No newline at end of file
+var _0x2c48=['ENUM','contact','lead','contact_lead','sequelize','STRING'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x2c48,0x124));var _0x82c4=function(_0x737a1f,_0x235fef){_0x737a1f=_0x737a1f-0x0;var _0x16eba1=_0x2c48[_0x737a1f];return _0x16eba1;};'use strict';var Sequelize=require(_0x82c4('0x0'));module['exports']={'name':{'type':Sequelize[_0x82c4('0x1')]},'moduleCreate':{'type':Sequelize[_0x82c4('0x2')]('lead',_0x82c4('0x3'),'nothing'),'defaultValue':_0x82c4('0x4')},'moduleSearch':{'type':Sequelize[_0x82c4('0x2')](_0x82c4('0x5'),_0x82c4('0x3'),_0x82c4('0x4')),'defaultValue':'contact_lead'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 763ea19..dcdc51e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa70=['zip-dir','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','update','then','error','stack','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','name','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','fields','options','find','catch','create','body','destroy','getFields','findOne','getSubjects','ZohoField','order','getDescriptions','eml-format','rimraf'];(function(_0x553770,_0x57e1f4){var _0x131be5=function(_0x22ad5f){while(--_0x22ad5f){_0x553770['push'](_0x553770['shift']());}};_0x131be5(++_0x57e1f4);}(_0xaa70,0x146));var _0x0aa7=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xaa70[_0x5b78e8];return _0xf2c321;};'use strict';var emlformat=require(_0x0aa7('0x0'));var rimraf=require(_0x0aa7('0x1'));var zipdir=require(_0x0aa7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0aa7('0x3'));var moment=require('moment');var BPromise=require(_0x0aa7('0x4'));var Mustache=require(_0x0aa7('0x5'));var util=require('util');var path=require(_0x0aa7('0x6'));var sox=require(_0x0aa7('0x7'));var csv=require('to-csv');var ejs=require(_0x0aa7('0x8'));var fs=require('fs');var fs_extra=require(_0x0aa7('0x9'));var _=require(_0x0aa7('0xa'));var squel=require(_0x0aa7('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0aa7('0xc'));var querystring=require(_0x0aa7('0xd'));var Papa=require(_0x0aa7('0xe'));var Redis=require(_0x0aa7('0xf'));var authService=require(_0x0aa7('0x10'));var qs=require(_0x0aa7('0x11'));var as=require(_0x0aa7('0x12'));var hardwareService=require(_0x0aa7('0x13'));var logger=require(_0x0aa7('0x14'))(_0x0aa7('0x15'));var utils=require('../../config/utils');var config=require(_0x0aa7('0x16'));var licenseUtil=require(_0x0aa7('0x17'));var db=require(_0x0aa7('0x18'))['db'];function respondWithStatusCode(_0x2f748e,_0x292c53){_0x292c53=_0x292c53||0xcc;return function(_0x51b50e){if(_0x51b50e){return _0x2f748e[_0x0aa7('0x19')](_0x292c53);}return _0x2f748e[_0x0aa7('0x1a')](_0x292c53)[_0x0aa7('0x1b')]();};}function respondWithResult(_0x8ed278,_0x393e37){_0x393e37=_0x393e37||0xc8;return function(_0x694956){if(_0x694956){return _0x8ed278[_0x0aa7('0x1a')](_0x393e37)[_0x0aa7('0x1c')](_0x694956);}};}function respondWithFilteredResult(_0x41da40,_0x435e78){return function(_0x56f914){if(_0x56f914){var _0x431833=typeof _0x435e78['offset']===_0x0aa7('0x1d')&&typeof _0x435e78[_0x0aa7('0x1e')]===_0x0aa7('0x1d');var _0x47ae1b=_0x56f914['count'];var _0x2fdb97=_0x431833?0x0:_0x435e78[_0x0aa7('0x1f')];var _0x5845a5=_0x431833?_0x56f914[_0x0aa7('0x20')]:_0x435e78['offset']+_0x435e78[_0x0aa7('0x1e')];var _0xf746b2;if(_0x5845a5>=_0x47ae1b){_0x5845a5=_0x47ae1b;_0xf746b2=0xc8;}else{_0xf746b2=0xce;}_0x41da40[_0x0aa7('0x1a')](_0xf746b2);return _0x41da40[_0x0aa7('0x21')](_0x0aa7('0x22'),_0x2fdb97+'-'+_0x5845a5+'/'+_0x47ae1b)[_0x0aa7('0x1c')](_0x56f914);}return null;};}function patchUpdates(_0x3f0ae9){return function(_0x4d45e4){try{jsonpatch[_0x0aa7('0x23')](_0x4d45e4,_0x3f0ae9,!![]);}catch(_0x5baddf){return BPromise['reject'](_0x5baddf);}return _0x4d45e4['save']();};}function saveUpdates(_0xc76d6c,_0x56f95e){return function(_0x385a45){if(_0x385a45){return _0x385a45[_0x0aa7('0x24')](_0xc76d6c)[_0x0aa7('0x25')](function(_0x4e94f1){return _0x4e94f1;});}return null;};}function removeEntity(_0x27138e,_0x328c4f){return function(_0xdf5e49){if(_0xdf5e49){return _0xdf5e49['destroy']()[_0x0aa7('0x25')](function(){_0x27138e[_0x0aa7('0x1a')](0xcc)[_0x0aa7('0x1b')]();});}};}function handleEntityNotFound(_0x3576f1,_0x1f9835){return function(_0x68ab19){if(!_0x68ab19){_0x3576f1[_0x0aa7('0x19')](0x194);}return _0x68ab19;};}function handleError(_0x504227,_0x275f29){_0x275f29=_0x275f29||0x1f4;return function(_0x213ca6){logger[_0x0aa7('0x26')](_0x213ca6[_0x0aa7('0x27')]);if(_0x213ca6['name']){delete _0x213ca6['name'];}_0x504227[_0x0aa7('0x1a')](_0x275f29)[_0x0aa7('0x28')](_0x213ca6);};}exports[_0x0aa7('0x29')]=function(_0xed322a,_0x4d63f2){var _0x6899b={},_0x7ce039={},_0x5ccd79={'count':0x0,'rows':[]};var _0x4fc4c3=_[_0x0aa7('0x2a')](db[_0x0aa7('0x2b')][_0x0aa7('0x2c')],function(_0x31ec39){return{'name':_0x31ec39[_0x0aa7('0x2d')],'type':_0x31ec39[_0x0aa7('0x2e')]['key']};});_0x7ce039['model']=_[_0x0aa7('0x2a')](_0x4fc4c3,_0x0aa7('0x2f'));_0x7ce039[_0x0aa7('0x30')]=_['keys'](_0xed322a['query']);_0x7ce039[_0x0aa7('0x31')]=_[_0x0aa7('0x32')](_0x7ce039[_0x0aa7('0x33')],_0x7ce039[_0x0aa7('0x30')]);_0x6899b[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x7ce039['model'],qs['fields'](_0xed322a['query']['fields']));_0x6899b['attributes']=_0x6899b['attributes'][_0x0aa7('0x35')]?_0x6899b[_0x0aa7('0x34')]:_0x7ce039[_0x0aa7('0x33')];if(!_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x6899b[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0xed322a['query']['limit']);_0x6899b[_0x0aa7('0x1f')]=qs[_0x0aa7('0x1f')](_0xed322a['query'][_0x0aa7('0x1f')]);}_0x6899b['order']=qs['sort'](_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x6899b[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0xed322a[_0x0aa7('0x30')],_0x7ce039[_0x0aa7('0x31')]),_0x4fc4c3);if(_0xed322a[_0x0aa7('0x30')]['filter']){_0x6899b[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x6899b['where'],{'$or':_[_0x0aa7('0x2a')](_0x4fc4c3,function(_0x267b4f){if(_0x267b4f['type']!==_0x0aa7('0x3c')){var _0x4187a4={};_0x4187a4[_0x267b4f[_0x0aa7('0x2f')]]={'$like':'%'+_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x3d')]+'%'};return _0x4187a4;}})});}_0x6899b=_[_0x0aa7('0x3b')]({},_0x6899b,_0xed322a['options']);var _0x1f1de9={'where':_0x6899b[_0x0aa7('0x39')]};return db['ZohoConfiguration']['count'](_0x1f1de9)['then'](function(_0x304c9b){_0x5ccd79[_0x0aa7('0x20')]=_0x304c9b;if(_0xed322a[_0x0aa7('0x30')][_0x0aa7('0x3e')]){_0x6899b[_0x0aa7('0x3f')]=[{'all':!![]}];}return db[_0x0aa7('0x2b')][_0x0aa7('0x40')](_0x6899b);})[_0x0aa7('0x25')](function(_0x3eb7dd){_0x5ccd79[_0x0aa7('0x41')]=_0x3eb7dd;return _0x5ccd79;})[_0x0aa7('0x25')](respondWithFilteredResult(_0x4d63f2,_0x6899b))['catch'](handleError(_0x4d63f2,null));};exports[_0x0aa7('0x42')]=function(_0x292084,_0x10f7ff){var _0x454305={'raw':![],'where':{'id':_0x292084[_0x0aa7('0x43')]['id']}},_0x1edd3c={};_0x1edd3c[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db[_0x0aa7('0x2b')][_0x0aa7('0x2c')]);_0x1edd3c[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x292084[_0x0aa7('0x30')]);_0x1edd3c[_0x0aa7('0x31')]=_['intersection'](_0x1edd3c['model'],_0x1edd3c[_0x0aa7('0x30')]);_0x454305[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x1edd3c['model'],qs['fields'](_0x292084[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x454305[_0x0aa7('0x34')]=_0x454305[_0x0aa7('0x34')][_0x0aa7('0x35')]?_0x454305[_0x0aa7('0x34')]:_0x1edd3c[_0x0aa7('0x33')];if(_0x292084[_0x0aa7('0x30')][_0x0aa7('0x3e')]){_0x454305['include']=[{'all':!![]}];}_0x454305=_[_0x0aa7('0x3b')]({},_0x454305,_0x292084[_0x0aa7('0x46')]);return db['ZohoConfiguration'][_0x0aa7('0x47')](_0x454305)[_0x0aa7('0x25')](handleEntityNotFound(_0x10f7ff,null))[_0x0aa7('0x25')](respondWithResult(_0x10f7ff,null))[_0x0aa7('0x48')](handleError(_0x10f7ff,null));};exports[_0x0aa7('0x49')]=function(_0xf7af3a,_0x1f27e8){return db[_0x0aa7('0x2b')][_0x0aa7('0x49')](_0xf7af3a[_0x0aa7('0x4a')],{})[_0x0aa7('0x25')](respondWithResult(_0x1f27e8,0xc9))['catch'](handleError(_0x1f27e8,null));};exports['update']=function(_0x4a060e,_0xa02a90){if(_0x4a060e[_0x0aa7('0x4a')]['id']){delete _0x4a060e[_0x0aa7('0x4a')]['id'];}return db['ZohoConfiguration'][_0x0aa7('0x47')]({'where':{'id':_0x4a060e[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0xa02a90,null))[_0x0aa7('0x25')](saveUpdates(_0x4a060e['body'],null))[_0x0aa7('0x25')](respondWithResult(_0xa02a90,null))['catch'](handleError(_0xa02a90,null));};exports[_0x0aa7('0x4b')]=function(_0x4b8a65,_0x58957f){return db[_0x0aa7('0x2b')][_0x0aa7('0x47')]({'where':{'id':_0x4b8a65[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0x58957f,null))[_0x0aa7('0x25')](removeEntity(_0x58957f,null))[_0x0aa7('0x48')](handleError(_0x58957f,null));};exports[_0x0aa7('0x4c')]=function(_0x2850f1,_0x24efb5,_0x39acce){var _0x47a0ee={};var _0x339e59={};var _0x595906;var _0x1c7818;return db[_0x0aa7('0x2b')][_0x0aa7('0x4d')]({'where':{'id':_0x2850f1['params']['id']}})['then'](handleEntityNotFound(_0x24efb5,null))['then'](function(_0x30d461){if(_0x30d461){_0x595906=_0x30d461;_0x339e59[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db['ZohoField'][_0x0aa7('0x2c')]);_0x339e59[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x2850f1[_0x0aa7('0x30')]);_0x339e59['filters']=_[_0x0aa7('0x32')](_0x339e59[_0x0aa7('0x33')],_0x339e59[_0x0aa7('0x30')]);_0x47a0ee[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x339e59[_0x0aa7('0x33')],qs[_0x0aa7('0x45')](_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x47a0ee[_0x0aa7('0x34')]=_0x47a0ee[_0x0aa7('0x34')][_0x0aa7('0x35')]?_0x47a0ee['attributes']:_0x339e59[_0x0aa7('0x33')];_0x47a0ee['order']=qs[_0x0aa7('0x38')](_0x2850f1['query'][_0x0aa7('0x38')]);_0x47a0ee[_0x0aa7('0x39')]=qs['filters'](_['pick'](_0x2850f1[_0x0aa7('0x30')],_0x339e59[_0x0aa7('0x31')]));if(_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x3d')]){_0x47a0ee[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x47a0ee[_0x0aa7('0x39')],{'$or':_['map'](_0x47a0ee[_0x0aa7('0x34')],function(_0x364bde){var _0x8aa361={};_0x8aa361[_0x364bde]={'$like':'%'+_0x2850f1[_0x0aa7('0x30')]['filter']+'%'};return _0x8aa361;})});}_0x47a0ee=_['merge']({},_0x47a0ee,_0x2850f1[_0x0aa7('0x46')]);return _0x595906[_0x0aa7('0x4c')](_0x47a0ee);}})[_0x0aa7('0x25')](function(_0x1375db){if(_0x1375db){_0x1c7818=_0x1375db[_0x0aa7('0x35')];if(!_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x47a0ee[_0x0aa7('0x1e')]=qs['limit'](_0x2850f1[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x47a0ee[_0x0aa7('0x1f')]=qs[_0x0aa7('0x1f')](_0x2850f1['query'][_0x0aa7('0x1f')]);}return _0x595906[_0x0aa7('0x4c')](_0x47a0ee);}})[_0x0aa7('0x25')](function(_0xf0f2aa){if(_0xf0f2aa){return _0xf0f2aa?{'count':_0x1c7818,'rows':_0xf0f2aa}:null;}})[_0x0aa7('0x25')](respondWithResult(_0x24efb5,null))[_0x0aa7('0x48')](handleError(_0x24efb5,null));};exports[_0x0aa7('0x4e')]=function(_0x270c7b,_0x2d111e,_0x22bdee){var _0x221d78={};var _0x3a900e={};var _0x1841b0;var _0x53eb92;return db['ZohoConfiguration'][_0x0aa7('0x4d')]({'where':{'id':_0x270c7b[_0x0aa7('0x43')]['id']}})[_0x0aa7('0x25')](handleEntityNotFound(_0x2d111e,null))[_0x0aa7('0x25')](function(_0x1c5fc2){if(_0x1c5fc2){_0x1841b0=_0x1c5fc2;_0x3a900e[_0x0aa7('0x33')]=_['keys'](db[_0x0aa7('0x4f')][_0x0aa7('0x2c')]);_0x3a900e[_0x0aa7('0x30')]=_[_0x0aa7('0x44')](_0x270c7b[_0x0aa7('0x30')]);_0x3a900e[_0x0aa7('0x31')]=_[_0x0aa7('0x32')](_0x3a900e[_0x0aa7('0x33')],_0x3a900e[_0x0aa7('0x30')]);_0x221d78['attributes']=_[_0x0aa7('0x32')](_0x3a900e['model'],qs[_0x0aa7('0x45')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x221d78[_0x0aa7('0x34')]=_0x221d78['attributes']['length']?_0x221d78[_0x0aa7('0x34')]:_0x3a900e['model'];_0x221d78[_0x0aa7('0x50')]=qs[_0x0aa7('0x38')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x221d78[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0x270c7b[_0x0aa7('0x30')],_0x3a900e['filters']));if(_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x3d')]){_0x221d78[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x221d78[_0x0aa7('0x39')],{'$or':_[_0x0aa7('0x2a')](_0x221d78['attributes'],function(_0x1b08cc){var _0x148113={};_0x148113[_0x1b08cc]={'$like':'%'+_0x270c7b[_0x0aa7('0x30')]['filter']+'%'};return _0x148113;})});}_0x221d78=_[_0x0aa7('0x3b')]({},_0x221d78,_0x270c7b['options']);return _0x1841b0[_0x0aa7('0x4e')](_0x221d78);}})[_0x0aa7('0x25')](function(_0x4834dd){if(_0x4834dd){_0x53eb92=_0x4834dd[_0x0aa7('0x35')];if(!_0x270c7b[_0x0aa7('0x30')]['hasOwnProperty']('nolimit')){_0x221d78[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0x270c7b[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x221d78[_0x0aa7('0x1f')]=qs['offset'](_0x270c7b[_0x0aa7('0x30')]['offset']);}return _0x1841b0['getSubjects'](_0x221d78);}})[_0x0aa7('0x25')](function(_0x3e5a77){if(_0x3e5a77){return _0x3e5a77?{'count':_0x53eb92,'rows':_0x3e5a77}:null;}})['then'](respondWithResult(_0x2d111e,null))['catch'](handleError(_0x2d111e,null));};exports[_0x0aa7('0x51')]=function(_0x20ea4d,_0x150123,_0x2a2298){var _0x639e52={};var _0x3684f6={};var _0x20ce07;var _0x5aa568;return db[_0x0aa7('0x2b')]['findOne']({'where':{'id':_0x20ea4d[_0x0aa7('0x43')]['id']}})['then'](handleEntityNotFound(_0x150123,null))[_0x0aa7('0x25')](function(_0x10f9ab){if(_0x10f9ab){_0x20ce07=_0x10f9ab;_0x3684f6[_0x0aa7('0x33')]=_[_0x0aa7('0x44')](db[_0x0aa7('0x4f')][_0x0aa7('0x2c')]);_0x3684f6[_0x0aa7('0x30')]=_['keys'](_0x20ea4d[_0x0aa7('0x30')]);_0x3684f6[_0x0aa7('0x31')]=_['intersection'](_0x3684f6[_0x0aa7('0x33')],_0x3684f6[_0x0aa7('0x30')]);_0x639e52[_0x0aa7('0x34')]=_[_0x0aa7('0x32')](_0x3684f6[_0x0aa7('0x33')],qs[_0x0aa7('0x45')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x45')]));_0x639e52[_0x0aa7('0x34')]=_0x639e52[_0x0aa7('0x34')]['length']?_0x639e52[_0x0aa7('0x34')]:_0x3684f6['model'];_0x639e52['order']=qs[_0x0aa7('0x38')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x38')]);_0x639e52[_0x0aa7('0x39')]=qs[_0x0aa7('0x31')](_[_0x0aa7('0x3a')](_0x20ea4d['query'],_0x3684f6[_0x0aa7('0x31')]));if(_0x20ea4d[_0x0aa7('0x30')]['filter']){_0x639e52[_0x0aa7('0x39')]=_[_0x0aa7('0x3b')](_0x639e52[_0x0aa7('0x39')],{'$or':_[_0x0aa7('0x2a')](_0x639e52['attributes'],function(_0x5d4a91){var _0x384edf={};_0x384edf[_0x5d4a91]={'$like':'%'+_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x3d')]+'%'};return _0x384edf;})});}_0x639e52=_[_0x0aa7('0x3b')]({},_0x639e52,_0x20ea4d['options']);return _0x20ce07[_0x0aa7('0x51')](_0x639e52);}})[_0x0aa7('0x25')](function(_0x456c83){if(_0x456c83){_0x5aa568=_0x456c83[_0x0aa7('0x35')];if(!_0x20ea4d['query'][_0x0aa7('0x36')](_0x0aa7('0x37'))){_0x639e52[_0x0aa7('0x1e')]=qs[_0x0aa7('0x1e')](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x1e')]);_0x639e52['offset']=qs['offset'](_0x20ea4d[_0x0aa7('0x30')][_0x0aa7('0x1f')]);}return _0x20ce07[_0x0aa7('0x51')](_0x639e52);}})[_0x0aa7('0x25')](function(_0x2a4317){if(_0x2a4317){return _0x2a4317?{'count':_0x5aa568,'rows':_0x2a4317}:null;}})[_0x0aa7('0x25')](respondWithResult(_0x150123,null))[_0x0aa7('0x48')](handleError(_0x150123,null));};
\ No newline at end of file
+var _0xeb36=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','ZohoConfiguration','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','findOne','ZohoField','pick','filter','hasOwnProperty','getFields','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined'];(function(_0x4fb9ed,_0x187ea0){var _0x263645=function(_0x11c604){while(--_0x11c604){_0x4fb9ed['push'](_0x4fb9ed['shift']());}};_0x263645(++_0x187ea0);}(_0xeb36,0x138));var _0x6eb3=function(_0x5448ac,_0x157088){_0x5448ac=_0x5448ac-0x0;var _0x5464a3=_0xeb36[_0x5448ac];return _0x5464a3;};'use strict';var emlformat=require(_0x6eb3('0x0'));var rimraf=require(_0x6eb3('0x1'));var zipdir=require(_0x6eb3('0x2'));var jsonpatch=require(_0x6eb3('0x3'));var rp=require('request-promise');var moment=require(_0x6eb3('0x4'));var BPromise=require(_0x6eb3('0x5'));var Mustache=require(_0x6eb3('0x6'));var util=require('util');var path=require(_0x6eb3('0x7'));var sox=require('sox');var csv=require(_0x6eb3('0x8'));var ejs=require(_0x6eb3('0x9'));var fs=require('fs');var fs_extra=require(_0x6eb3('0xa'));var _=require(_0x6eb3('0xb'));var squel=require(_0x6eb3('0xc'));var crypto=require('crypto');var jsforce=require(_0x6eb3('0xd'));var deskjs=require(_0x6eb3('0xe'));var toCsv=require(_0x6eb3('0x8'));var querystring=require(_0x6eb3('0xf'));var Papa=require(_0x6eb3('0x10'));var Redis=require(_0x6eb3('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6eb3('0x12'));var hardwareService=require(_0x6eb3('0x13'));var logger=require(_0x6eb3('0x14'))(_0x6eb3('0x15'));var utils=require(_0x6eb3('0x16'));var config=require(_0x6eb3('0x17'));var licenseUtil=require(_0x6eb3('0x18'));var db=require(_0x6eb3('0x19'))['db'];function respondWithStatusCode(_0x176b45,_0x5dbe44){_0x5dbe44=_0x5dbe44||0xcc;return function(_0xe7defa){if(_0xe7defa){return _0x176b45[_0x6eb3('0x1a')](_0x5dbe44);}return _0x176b45['status'](_0x5dbe44)[_0x6eb3('0x1b')]();};}function respondWithResult(_0x4bf5f5,_0x188656){_0x188656=_0x188656||0xc8;return function(_0xd4d6c1){if(_0xd4d6c1){return _0x4bf5f5[_0x6eb3('0x1c')](_0x188656)[_0x6eb3('0x1d')](_0xd4d6c1);}};}function respondWithFilteredResult(_0x22882d,_0x4f0b93){return function(_0x4024c5){if(_0x4024c5){var _0x29115b=typeof _0x4f0b93[_0x6eb3('0x1e')]===_0x6eb3('0x1f')&&typeof _0x4f0b93[_0x6eb3('0x20')]===_0x6eb3('0x1f');var _0xbb2ebe=_0x4024c5['count'];var _0x2e75b0=_0x29115b?0x0:_0x4f0b93[_0x6eb3('0x1e')];var _0x21c866=_0x29115b?_0x4024c5[_0x6eb3('0x21')]:_0x4f0b93[_0x6eb3('0x1e')]+_0x4f0b93[_0x6eb3('0x20')];var _0x3f7694;if(_0x21c866>=_0xbb2ebe){_0x21c866=_0xbb2ebe;_0x3f7694=0xc8;}else{_0x3f7694=0xce;}_0x22882d['status'](_0x3f7694);return _0x22882d[_0x6eb3('0x22')](_0x6eb3('0x23'),_0x2e75b0+'-'+_0x21c866+'/'+_0xbb2ebe)['json'](_0x4024c5);}return null;};}function patchUpdates(_0x49eb75){return function(_0x195bf0){try{jsonpatch[_0x6eb3('0x24')](_0x195bf0,_0x49eb75,!![]);}catch(_0x2c7bd3){return BPromise[_0x6eb3('0x25')](_0x2c7bd3);}return _0x195bf0[_0x6eb3('0x26')]();};}function saveUpdates(_0xaad4a1,_0x55e230){return function(_0x41f125){if(_0x41f125){return _0x41f125[_0x6eb3('0x27')](_0xaad4a1)[_0x6eb3('0x28')](function(_0x4af6d2){return _0x4af6d2;});}return null;};}function removeEntity(_0x995482,_0x3486d6){return function(_0x12306c){if(_0x12306c){return _0x12306c[_0x6eb3('0x29')]()['then'](function(){_0x995482[_0x6eb3('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x231426,_0x4fe451){return function(_0x32dee8){if(!_0x32dee8){_0x231426['sendStatus'](0x194);}return _0x32dee8;};}function handleError(_0x1284ff,_0x1e3ada){_0x1e3ada=_0x1e3ada||0x1f4;return function(_0x36b315){logger[_0x6eb3('0x2a')](_0x36b315[_0x6eb3('0x2b')]);if(_0x36b315['name']){delete _0x36b315[_0x6eb3('0x2c')];}_0x1284ff['status'](_0x1e3ada)[_0x6eb3('0x2d')](_0x36b315);};}exports[_0x6eb3('0x2e')]=function(_0x252fc1,_0x1162f2){var _0x44d293={},_0x6554f9={},_0x2509fc={'count':0x0,'rows':[]};var _0x5ab770=_[_0x6eb3('0x2f')](db['ZohoConfiguration']['rawAttributes'],function(_0x45a3d6){return{'name':_0x45a3d6[_0x6eb3('0x30')],'type':_0x45a3d6[_0x6eb3('0x31')][_0x6eb3('0x32')]};});_0x6554f9[_0x6eb3('0x33')]=_[_0x6eb3('0x2f')](_0x5ab770,'name');_0x6554f9['query']=_[_0x6eb3('0x34')](_0x252fc1[_0x6eb3('0x35')]);_0x6554f9[_0x6eb3('0x36')]=_[_0x6eb3('0x37')](_0x6554f9[_0x6eb3('0x33')],_0x6554f9[_0x6eb3('0x35')]);_0x44d293[_0x6eb3('0x38')]=_[_0x6eb3('0x37')](_0x6554f9[_0x6eb3('0x33')],qs[_0x6eb3('0x39')](_0x252fc1['query'][_0x6eb3('0x39')]));_0x44d293[_0x6eb3('0x38')]=_0x44d293['attributes'][_0x6eb3('0x3a')]?_0x44d293[_0x6eb3('0x38')]:_0x6554f9['model'];if(!_0x252fc1['query']['hasOwnProperty'](_0x6eb3('0x3b'))){_0x44d293[_0x6eb3('0x20')]=qs['limit'](_0x252fc1['query'][_0x6eb3('0x20')]);_0x44d293[_0x6eb3('0x1e')]=qs[_0x6eb3('0x1e')](_0x252fc1[_0x6eb3('0x35')]['offset']);}_0x44d293[_0x6eb3('0x3c')]=qs[_0x6eb3('0x3d')](_0x252fc1[_0x6eb3('0x35')][_0x6eb3('0x3d')]);_0x44d293['where']=qs[_0x6eb3('0x36')](_['pick'](_0x252fc1[_0x6eb3('0x35')],_0x6554f9['filters']),_0x5ab770);if(_0x252fc1['query']['filter']){_0x44d293[_0x6eb3('0x3e')]=_[_0x6eb3('0x3f')](_0x44d293['where'],{'$or':_[_0x6eb3('0x2f')](_0x5ab770,function(_0x14537b){if(_0x14537b[_0x6eb3('0x31')]!==_0x6eb3('0x40')){var _0x41b228={};_0x41b228[_0x14537b['name']]={'$like':'%'+_0x252fc1[_0x6eb3('0x35')]['filter']+'%'};return _0x41b228;}})});}_0x44d293=_['merge']({},_0x44d293,_0x252fc1['options']);var _0x20da13={'where':_0x44d293[_0x6eb3('0x3e')]};return db[_0x6eb3('0x41')][_0x6eb3('0x21')](_0x20da13)[_0x6eb3('0x28')](function(_0x1f6c31){_0x2509fc[_0x6eb3('0x21')]=_0x1f6c31;if(_0x252fc1[_0x6eb3('0x35')][_0x6eb3('0x42')]){_0x44d293[_0x6eb3('0x43')]=[{'all':!![]}];}return db[_0x6eb3('0x41')][_0x6eb3('0x44')](_0x44d293);})[_0x6eb3('0x28')](function(_0x41848f){_0x2509fc[_0x6eb3('0x45')]=_0x41848f;return _0x2509fc;})[_0x6eb3('0x28')](respondWithFilteredResult(_0x1162f2,_0x44d293))[_0x6eb3('0x46')](handleError(_0x1162f2,null));};exports[_0x6eb3('0x47')]=function(_0xb99f5c,_0x6e6c87){var _0x593057={'raw':![],'where':{'id':_0xb99f5c[_0x6eb3('0x48')]['id']}},_0x19f0ed={};_0x19f0ed[_0x6eb3('0x33')]=_['keys'](db[_0x6eb3('0x41')][_0x6eb3('0x49')]);_0x19f0ed[_0x6eb3('0x35')]=_[_0x6eb3('0x34')](_0xb99f5c[_0x6eb3('0x35')]);_0x19f0ed[_0x6eb3('0x36')]=_[_0x6eb3('0x37')](_0x19f0ed[_0x6eb3('0x33')],_0x19f0ed['query']);_0x593057['attributes']=_['intersection'](_0x19f0ed['model'],qs['fields'](_0xb99f5c[_0x6eb3('0x35')][_0x6eb3('0x39')]));_0x593057[_0x6eb3('0x38')]=_0x593057[_0x6eb3('0x38')][_0x6eb3('0x3a')]?_0x593057[_0x6eb3('0x38')]:_0x19f0ed[_0x6eb3('0x33')];if(_0xb99f5c[_0x6eb3('0x35')][_0x6eb3('0x42')]){_0x593057['include']=[{'all':!![]}];}_0x593057=_['merge']({},_0x593057,_0xb99f5c[_0x6eb3('0x4a')]);return db[_0x6eb3('0x41')][_0x6eb3('0x4b')](_0x593057)[_0x6eb3('0x28')](handleEntityNotFound(_0x6e6c87,null))['then'](respondWithResult(_0x6e6c87,null))[_0x6eb3('0x46')](handleError(_0x6e6c87,null));};exports[_0x6eb3('0x4c')]=function(_0x447192,_0x4034fe){return db[_0x6eb3('0x41')][_0x6eb3('0x4c')](_0x447192['body'],{})[_0x6eb3('0x28')](respondWithResult(_0x4034fe,0xc9))['catch'](handleError(_0x4034fe,null));};exports[_0x6eb3('0x27')]=function(_0x21c8a5,_0x224a8f){if(_0x21c8a5[_0x6eb3('0x4d')]['id']){delete _0x21c8a5['body']['id'];}return db[_0x6eb3('0x41')][_0x6eb3('0x4b')]({'where':{'id':_0x21c8a5[_0x6eb3('0x48')]['id']}})['then'](handleEntityNotFound(_0x224a8f,null))[_0x6eb3('0x28')](saveUpdates(_0x21c8a5[_0x6eb3('0x4d')],null))[_0x6eb3('0x28')](respondWithResult(_0x224a8f,null))['catch'](handleError(_0x224a8f,null));};exports[_0x6eb3('0x29')]=function(_0x4a14be,_0x485e35){return db[_0x6eb3('0x41')][_0x6eb3('0x4b')]({'where':{'id':_0x4a14be[_0x6eb3('0x48')]['id']}})[_0x6eb3('0x28')](handleEntityNotFound(_0x485e35,null))[_0x6eb3('0x28')](removeEntity(_0x485e35,null))['catch'](handleError(_0x485e35,null));};exports['getFields']=function(_0x53ee04,_0xf885a8,_0x18dfb7){var _0xd16f08={};var _0x5c4285={};var _0xbe929d;var _0x49d549;return db['ZohoConfiguration'][_0x6eb3('0x4e')]({'where':{'id':_0x53ee04[_0x6eb3('0x48')]['id']}})['then'](handleEntityNotFound(_0xf885a8,null))[_0x6eb3('0x28')](function(_0x392828){if(_0x392828){_0xbe929d=_0x392828;_0x5c4285['model']=_[_0x6eb3('0x34')](db[_0x6eb3('0x4f')][_0x6eb3('0x49')]);_0x5c4285[_0x6eb3('0x35')]=_[_0x6eb3('0x34')](_0x53ee04[_0x6eb3('0x35')]);_0x5c4285[_0x6eb3('0x36')]=_[_0x6eb3('0x37')](_0x5c4285[_0x6eb3('0x33')],_0x5c4285[_0x6eb3('0x35')]);_0xd16f08[_0x6eb3('0x38')]=_[_0x6eb3('0x37')](_0x5c4285['model'],qs[_0x6eb3('0x39')](_0x53ee04[_0x6eb3('0x35')]['fields']));_0xd16f08[_0x6eb3('0x38')]=_0xd16f08['attributes']['length']?_0xd16f08[_0x6eb3('0x38')]:_0x5c4285[_0x6eb3('0x33')];_0xd16f08['order']=qs[_0x6eb3('0x3d')](_0x53ee04[_0x6eb3('0x35')][_0x6eb3('0x3d')]);_0xd16f08['where']=qs[_0x6eb3('0x36')](_[_0x6eb3('0x50')](_0x53ee04[_0x6eb3('0x35')],_0x5c4285[_0x6eb3('0x36')]));if(_0x53ee04['query'][_0x6eb3('0x51')]){_0xd16f08[_0x6eb3('0x3e')]=_[_0x6eb3('0x3f')](_0xd16f08[_0x6eb3('0x3e')],{'$or':_[_0x6eb3('0x2f')](_0xd16f08[_0x6eb3('0x38')],function(_0x316427){var _0x59ad1c={};_0x59ad1c[_0x316427]={'$like':'%'+_0x53ee04[_0x6eb3('0x35')][_0x6eb3('0x51')]+'%'};return _0x59ad1c;})});}_0xd16f08=_['merge']({},_0xd16f08,_0x53ee04['options']);return _0xbe929d['getFields'](_0xd16f08);}})[_0x6eb3('0x28')](function(_0x1a78c1){if(_0x1a78c1){_0x49d549=_0x1a78c1['length'];if(!_0x53ee04[_0x6eb3('0x35')][_0x6eb3('0x52')](_0x6eb3('0x3b'))){_0xd16f08[_0x6eb3('0x20')]=qs['limit'](_0x53ee04['query']['limit']);_0xd16f08['offset']=qs[_0x6eb3('0x1e')](_0x53ee04['query'][_0x6eb3('0x1e')]);}return _0xbe929d[_0x6eb3('0x53')](_0xd16f08);}})[_0x6eb3('0x28')](function(_0x1b3ce2){if(_0x1b3ce2){return _0x1b3ce2?{'count':_0x49d549,'rows':_0x1b3ce2}:null;}})[_0x6eb3('0x28')](respondWithResult(_0xf885a8,null))[_0x6eb3('0x46')](handleError(_0xf885a8,null));};exports[_0x6eb3('0x54')]=function(_0x4a56f6,_0x2105e0,_0x215d4a){var _0x3c5660={};var _0x27fe9d={};var _0x5a7b9d;var _0x4d51b6;return db['ZohoConfiguration'][_0x6eb3('0x4e')]({'where':{'id':_0x4a56f6[_0x6eb3('0x48')]['id']}})[_0x6eb3('0x28')](handleEntityNotFound(_0x2105e0,null))[_0x6eb3('0x28')](function(_0x281637){if(_0x281637){_0x5a7b9d=_0x281637;_0x27fe9d['model']=_[_0x6eb3('0x34')](db[_0x6eb3('0x4f')][_0x6eb3('0x49')]);_0x27fe9d['query']=_[_0x6eb3('0x34')](_0x4a56f6['query']);_0x27fe9d[_0x6eb3('0x36')]=_['intersection'](_0x27fe9d[_0x6eb3('0x33')],_0x27fe9d[_0x6eb3('0x35')]);_0x3c5660[_0x6eb3('0x38')]=_[_0x6eb3('0x37')](_0x27fe9d[_0x6eb3('0x33')],qs['fields'](_0x4a56f6[_0x6eb3('0x35')]['fields']));_0x3c5660[_0x6eb3('0x38')]=_0x3c5660[_0x6eb3('0x38')][_0x6eb3('0x3a')]?_0x3c5660[_0x6eb3('0x38')]:_0x27fe9d[_0x6eb3('0x33')];_0x3c5660[_0x6eb3('0x3c')]=qs['sort'](_0x4a56f6[_0x6eb3('0x35')][_0x6eb3('0x3d')]);_0x3c5660[_0x6eb3('0x3e')]=qs[_0x6eb3('0x36')](_[_0x6eb3('0x50')](_0x4a56f6[_0x6eb3('0x35')],_0x27fe9d[_0x6eb3('0x36')]));if(_0x4a56f6[_0x6eb3('0x35')][_0x6eb3('0x51')]){_0x3c5660[_0x6eb3('0x3e')]=_[_0x6eb3('0x3f')](_0x3c5660[_0x6eb3('0x3e')],{'$or':_['map'](_0x3c5660[_0x6eb3('0x38')],function(_0xa5b2d0){var _0x3680ce={};_0x3680ce[_0xa5b2d0]={'$like':'%'+_0x4a56f6[_0x6eb3('0x35')][_0x6eb3('0x51')]+'%'};return _0x3680ce;})});}_0x3c5660=_[_0x6eb3('0x3f')]({},_0x3c5660,_0x4a56f6['options']);return _0x5a7b9d[_0x6eb3('0x54')](_0x3c5660);}})[_0x6eb3('0x28')](function(_0x13c3f6){if(_0x13c3f6){_0x4d51b6=_0x13c3f6[_0x6eb3('0x3a')];if(!_0x4a56f6['query'][_0x6eb3('0x52')](_0x6eb3('0x3b'))){_0x3c5660[_0x6eb3('0x20')]=qs['limit'](_0x4a56f6[_0x6eb3('0x35')]['limit']);_0x3c5660['offset']=qs[_0x6eb3('0x1e')](_0x4a56f6['query'][_0x6eb3('0x1e')]);}return _0x5a7b9d[_0x6eb3('0x54')](_0x3c5660);}})[_0x6eb3('0x28')](function(_0x1d6815){if(_0x1d6815){return _0x1d6815?{'count':_0x4d51b6,'rows':_0x1d6815}:null;}})['then'](respondWithResult(_0x2105e0,null))[_0x6eb3('0x46')](handleError(_0x2105e0,null));};exports['getDescriptions']=function(_0xad932e,_0x206673,_0x33f9fb){var _0x200d9f={};var _0x3d97e4={};var _0x7e100e;var _0x2649f0;return db[_0x6eb3('0x41')]['findOne']({'where':{'id':_0xad932e['params']['id']}})['then'](handleEntityNotFound(_0x206673,null))[_0x6eb3('0x28')](function(_0x3ed57d){if(_0x3ed57d){_0x7e100e=_0x3ed57d;_0x3d97e4[_0x6eb3('0x33')]=_[_0x6eb3('0x34')](db[_0x6eb3('0x4f')][_0x6eb3('0x49')]);_0x3d97e4['query']=_['keys'](_0xad932e[_0x6eb3('0x35')]);_0x3d97e4['filters']=_[_0x6eb3('0x37')](_0x3d97e4['model'],_0x3d97e4[_0x6eb3('0x35')]);_0x200d9f[_0x6eb3('0x38')]=_[_0x6eb3('0x37')](_0x3d97e4[_0x6eb3('0x33')],qs[_0x6eb3('0x39')](_0xad932e[_0x6eb3('0x35')][_0x6eb3('0x39')]));_0x200d9f[_0x6eb3('0x38')]=_0x200d9f[_0x6eb3('0x38')][_0x6eb3('0x3a')]?_0x200d9f[_0x6eb3('0x38')]:_0x3d97e4[_0x6eb3('0x33')];_0x200d9f[_0x6eb3('0x3c')]=qs[_0x6eb3('0x3d')](_0xad932e['query'][_0x6eb3('0x3d')]);_0x200d9f['where']=qs[_0x6eb3('0x36')](_[_0x6eb3('0x50')](_0xad932e['query'],_0x3d97e4[_0x6eb3('0x36')]));if(_0xad932e[_0x6eb3('0x35')]['filter']){_0x200d9f['where']=_[_0x6eb3('0x3f')](_0x200d9f[_0x6eb3('0x3e')],{'$or':_['map'](_0x200d9f[_0x6eb3('0x38')],function(_0x35b392){var _0x1ad498={};_0x1ad498[_0x35b392]={'$like':'%'+_0xad932e[_0x6eb3('0x35')]['filter']+'%'};return _0x1ad498;})});}_0x200d9f=_[_0x6eb3('0x3f')]({},_0x200d9f,_0xad932e[_0x6eb3('0x4a')]);return _0x7e100e[_0x6eb3('0x55')](_0x200d9f);}})[_0x6eb3('0x28')](function(_0x511c21){if(_0x511c21){_0x2649f0=_0x511c21['length'];if(!_0xad932e['query'][_0x6eb3('0x52')](_0x6eb3('0x3b'))){_0x200d9f[_0x6eb3('0x20')]=qs[_0x6eb3('0x20')](_0xad932e['query']['limit']);_0x200d9f[_0x6eb3('0x1e')]=qs[_0x6eb3('0x1e')](_0xad932e[_0x6eb3('0x35')][_0x6eb3('0x1e')]);}return _0x7e100e[_0x6eb3('0x55')](_0x200d9f);}})[_0x6eb3('0x28')](function(_0x3d0375){if(_0x3d0375){return _0x3d0375?{'count':_0x2649f0,'rows':_0x3d0375}:null;}})['then'](respondWithResult(_0x206673,null))['catch'](handleError(_0x206673,null));};
\ No newline at end of file
index 9b357e5..2d30c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x318e=['./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x3a4c51,_0x1f8d2c){var _0x42c5af=function(_0x1d72eb){while(--_0x1d72eb){_0x3a4c51['push'](_0x3a4c51['shift']());}};_0x42c5af(++_0x1f8d2c);}(_0x318e,0x17f));var _0xe318=function(_0x15cfcf,_0x5e469c){_0x15cfcf=_0x15cfcf-0x0;var _0x1b10e9=_0x318e[_0x15cfcf];return _0x1b10e9;};'use strict';var _=require(_0xe318('0x0'));var util=require(_0xe318('0x1'));var logger=require(_0xe318('0x2'))(_0xe318('0x3'));var moment=require(_0xe318('0x4'));var BPromise=require(_0xe318('0x5'));var rp=require(_0xe318('0x6'));var fs=require('fs');var path=require(_0xe318('0x7'));var rimraf=require('rimraf');var config=require(_0xe318('0x8'));var attributes=require(_0xe318('0x9'));module[_0xe318('0xa')]=function(_0xde9245,_0x3c3e6d){return _0xde9245[_0xe318('0xb')](_0xe318('0xc'),attributes,{'tableName':_0xe318('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8042=['../../config/logger','moment','request-promise','rimraf','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash','util'];(function(_0x16878d,_0x100fc4){var _0x224ca3=function(_0x29912e){while(--_0x29912e){_0x16878d['push'](_0x16878d['shift']());}};_0x224ca3(++_0x100fc4);}(_0x8042,0x17a));var _0x2804=function(_0xbe31d1,_0x126345){_0xbe31d1=_0xbe31d1-0x0;var _0x7bd03=_0x8042[_0xbe31d1];return _0x7bd03;};'use strict';var _=require(_0x2804('0x0'));var util=require(_0x2804('0x1'));var logger=require(_0x2804('0x2'))('api');var moment=require(_0x2804('0x3'));var BPromise=require('bluebird');var rp=require(_0x2804('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2804('0x5'));var config=require('../../config/environment');var attributes=require(_0x2804('0x6'));module[_0x2804('0x7')]=function(_0x2ebdf6,_0x54a172){return _0x2ebdf6[_0x2804('0x8')](_0x2804('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b2f8ba..e273a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x986b=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis'];(function(_0x3a8b45,_0x52da26){var _0x37a80c=function(_0x31d9df){while(--_0x31d9df){_0x3a8b45['push'](_0x3a8b45['shift']());}};_0x37a80c(++_0x52da26);}(_0x986b,0x6a));var _0xb986=function(_0x57ffa3,_0x34c610){_0x57ffa3=_0x57ffa3-0x0;var _0x1cf45b=_0x986b[_0x57ffa3];return _0x1cf45b;};'use strict';var _=require('lodash');var util=require(_0xb986('0x0'));var moment=require(_0xb986('0x1'));var BPromise=require('bluebird');var rs=require(_0xb986('0x2'));var fs=require('fs');var Redis=require(_0xb986('0x3'));var db=require(_0xb986('0x4'))['db'];var utils=require(_0xb986('0x5'));var logger=require(_0xb986('0x6'))(_0xb986('0x7'));var config=require(_0xb986('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb986('0x9')][_0xb986('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x517925,_0x357f2e,_0x5ecb11){return new BPromise(function(_0x630496,_0x92688d){return client[_0xb986('0xb')](_0x517925,_0x5ecb11)['then'](function(_0x2b71ab){logger[_0xb986('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x357f2e,_0xb986('0xd'));logger['debug'](_0xb986('0xe'),_0x357f2e,_0xb986('0xd'),JSON[_0xb986('0xf')](_0x2b71ab));if(_0x2b71ab[_0xb986('0x10')]){if(_0x2b71ab['error'][_0xb986('0x11')]===0x1f4){logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x2b71ab['error'][_0xb986('0x13')]);return _0x92688d(_0x2b71ab[_0xb986('0x10')]['message']);}logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x2b71ab[_0xb986('0x10')][_0xb986('0x13')]);return _0x630496(_0x2b71ab[_0xb986('0x10')][_0xb986('0x13')]);}else{logger[_0xb986('0xc')](_0xb986('0x12'),_0x357f2e,_0xb986('0xd'));_0x630496(_0x2b71ab[_0xb986('0x14')][_0xb986('0x13')]);}})[_0xb986('0x15')](function(_0x26e6aa){logger[_0xb986('0x10')](_0xb986('0x12'),_0x357f2e,_0x26e6aa);_0x92688d(_0x26e6aa);});});}
\ No newline at end of file
+var _0x31a1=['../../config/utils','../../config/logger','rpc','jayson/promise','client','then','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x31a1,0x171));var _0x131a=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0x31a1[_0x1a9204];return _0x17ca68;};'use strict';var _=require('lodash');var util=require(_0x131a('0x0'));var moment=require(_0x131a('0x1'));var BPromise=require('bluebird');var rs=require(_0x131a('0x2'));var fs=require('fs');var Redis=require(_0x131a('0x3'));var db=require(_0x131a('0x4'))['db'];var utils=require(_0x131a('0x5'));var logger=require(_0x131a('0x6'))(_0x131a('0x7'));var config=require('../../config/environment');var jayson=require(_0x131a('0x8'));var client=jayson[_0x131a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51351a,_0x5dfaf8,_0x15fe90){return new BPromise(function(_0x410e79,_0x1a44f6){return client['request'](_0x51351a,_0x15fe90)[_0x131a('0xa')](function(_0x41ab9b){logger['info'](_0x131a('0xb'),_0x5dfaf8,_0x131a('0xc'));logger[_0x131a('0xd')](_0x131a('0xe'),_0x5dfaf8,_0x131a('0xc'),JSON[_0x131a('0xf')](_0x41ab9b));if(_0x41ab9b['error']){if(_0x41ab9b['error'][_0x131a('0x10')]===0x1f4){logger['error'](_0x131a('0xb'),_0x5dfaf8,_0x41ab9b[_0x131a('0x11')][_0x131a('0x12')]);return _0x1a44f6(_0x41ab9b[_0x131a('0x11')]['message']);}logger[_0x131a('0x11')](_0x131a('0xb'),_0x5dfaf8,_0x41ab9b['error'][_0x131a('0x12')]);return _0x410e79(_0x41ab9b[_0x131a('0x11')][_0x131a('0x12')]);}else{logger[_0x131a('0x13')](_0x131a('0xb'),_0x5dfaf8,_0x131a('0xc'));_0x410e79(_0x41ab9b[_0x131a('0x14')][_0x131a('0x12')]);}})[_0x131a('0x15')](function(_0x19a682){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x5dfaf8,_0x19a682);_0x1a44f6(_0x19a682);});});}
\ No newline at end of file
index 0a4d00e..54bf2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2acf=['get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller'];(function(_0x5459c1,_0x36f6f0){var _0x3f99b5=function(_0x512bea){while(--_0x512bea){_0x5459c1['push'](_0x5459c1['shift']());}};_0x3f99b5(++_0x36f6f0);}(_0x2acf,0x1d7));var _0xf2ac=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0x2acf[_0x47a12a];return _0x30cd40;};'use strict';var multer=require(_0xf2ac('0x0'));var util=require('util');var path=require(_0xf2ac('0x1'));var timeout=require(_0xf2ac('0x2'));var express=require(_0xf2ac('0x3'));var router=express[_0xf2ac('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf2ac('0x5'));var interaction=require(_0xf2ac('0x6'));var config=require(_0xf2ac('0x7'));var controller=require(_0xf2ac('0x8'));router[_0xf2ac('0x9')]('/',auth[_0xf2ac('0xa')](),controller['index']);router['get'](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0xc')]);router[_0xf2ac('0xd')]('/',auth[_0xf2ac('0xa')](),controller[_0xf2ac('0xe')]);router[_0xf2ac('0xf')](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0x10')]);router[_0xf2ac('0x11')](_0xf2ac('0xb'),auth[_0xf2ac('0xa')](),controller[_0xf2ac('0x12')]);module[_0xf2ac('0x13')]=router;
\ No newline at end of file
+var _0xe01a=['../../components/auth/service','../../config/environment','index','get','isAuthenticated','create','/:id','delete','destroy','exports','connect-timeout','express','Router','fs-extra'];(function(_0x25d6aa,_0x995014){var _0x58e134=function(_0x189a8e){while(--_0x189a8e){_0x25d6aa['push'](_0x25d6aa['shift']());}};_0x58e134(++_0x995014);}(_0xe01a,0x15a));var _0xae01=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe01a[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xae01('0x0'));var express=require(_0xae01('0x1'));var router=express[_0xae01('0x2')]();var fs_extra=require(_0xae01('0x3'));var auth=require(_0xae01('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xae01('0x5'));var controller=require('./intZohoField.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xae01('0x6')]);router[_0xae01('0x7')]('/:id',auth[_0xae01('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xae01('0x9')]);router['put'](_0xae01('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xae01('0xb')](_0xae01('0xa'),auth[_0xae01('0x8')](),controller[_0xae01('0xc')]);module[_0xae01('0xd')]=router;
\ No newline at end of file
index ce82254..912da7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06c1=['variable','customVariable','keyValue','STRING','sequelize','ENUM','string'];(function(_0x3e955e,_0x2c30f5){var _0x379dbc=function(_0x12db40){while(--_0x12db40){_0x3e955e['push'](_0x3e955e['shift']());}};_0x379dbc(++_0x2c30f5);}(_0x06c1,0x11c));var _0x106c=function(_0x207d2f,_0x44400f){_0x207d2f=_0x207d2f-0x0;var _0x3c3498=_0x06c1[_0x207d2f];return _0x3c3498;};'use strict';var Sequelize=require(_0x106c('0x0'));module['exports']={'type':{'type':Sequelize[_0x106c('0x1')](_0x106c('0x2'),_0x106c('0x3'),_0x106c('0x4'),_0x106c('0x5'),'picklist'),'defaultValue':_0x106c('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x106c('0x1')](_0x106c('0x2'),_0x106c('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x106c('0x6')]},'idField':{'type':Sequelize[_0x106c('0x6')]},'nameField':{'type':Sequelize[_0x106c('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x106c('0x6')]}};
\ No newline at end of file
+var _0x27e6=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x33523a,_0x5cda61){var _0x419722=function(_0x3828a2){while(--_0x3828a2){_0x33523a['push'](_0x33523a['shift']());}};_0x419722(++_0x5cda61);}(_0x27e6,0xd7));var _0x627e=function(_0x4a5c16,_0x2eb3c4){_0x4a5c16=_0x4a5c16-0x0;var _0x4c9004=_0x27e6[_0x4a5c16];return _0x4c9004;};'use strict';var Sequelize=require(_0x627e('0x0'));module['exports']={'type':{'type':Sequelize[_0x627e('0x1')](_0x627e('0x2'),_0x627e('0x3'),_0x627e('0x4'),_0x627e('0x5'),_0x627e('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x627e('0x7')]},'key':{'type':Sequelize[_0x627e('0x7')]},'keyType':{'type':Sequelize[_0x627e('0x1')](_0x627e('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x627e('0x7')]},'idField':{'type':Sequelize[_0x627e('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x627e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x627e('0x7')]}};
\ No newline at end of file
index f891d8f..bcafd6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4822=['pick','VIRTUAL','filter','merge','options','then','includeAll','include','findAll','rows','catch','show','params','filters','length','find','create','body','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','destroy','error','send','index','ZohoField','rawAttributes','fieldName','key','model','map','name','query','keys','intersection','attributes','fields','sort','where'];(function(_0x4e20b0,_0x2cb888){var _0x4cb218=function(_0x34191a){while(--_0x34191a){_0x4e20b0['push'](_0x4e20b0['shift']());}};_0x4cb218(++_0x2cb888);}(_0x4822,0x12e));var _0x2482=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x4822[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2482('0x0'));var jsonpatch=require(_0x2482('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2482('0x2'));var Mustache=require(_0x2482('0x3'));var util=require(_0x2482('0x4'));var path=require(_0x2482('0x5'));var sox=require('sox');var csv=require(_0x2482('0x6'));var ejs=require(_0x2482('0x7'));var fs=require('fs');var fs_extra=require(_0x2482('0x8'));var _=require(_0x2482('0x9'));var squel=require(_0x2482('0xa'));var crypto=require('crypto');var jsforce=require(_0x2482('0xb'));var deskjs=require(_0x2482('0xc'));var toCsv=require(_0x2482('0x6'));var querystring=require(_0x2482('0xd'));var Papa=require(_0x2482('0xe'));var Redis=require(_0x2482('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2482('0x10'));var as=require(_0x2482('0x11'));var hardwareService=require(_0x2482('0x12'));var logger=require(_0x2482('0x13'))(_0x2482('0x14'));var utils=require('../../config/utils');var config=require(_0x2482('0x15'));var licenseUtil=require(_0x2482('0x16'));var db=require(_0x2482('0x17'))['db'];function respondWithStatusCode(_0x34a0b3,_0x499358){_0x499358=_0x499358||0xcc;return function(_0x36e154){if(_0x36e154){return _0x34a0b3[_0x2482('0x18')](_0x499358);}return _0x34a0b3[_0x2482('0x19')](_0x499358)[_0x2482('0x1a')]();};}function respondWithResult(_0x1b45d2,_0x4b5ec0){_0x4b5ec0=_0x4b5ec0||0xc8;return function(_0xe2cb99){if(_0xe2cb99){return _0x1b45d2['status'](_0x4b5ec0)[_0x2482('0x1b')](_0xe2cb99);}};}function respondWithFilteredResult(_0x4395a0,_0x407c26){return function(_0x3b6a28){if(_0x3b6a28){var _0x17ae11=typeof _0x407c26[_0x2482('0x1c')]==='undefined'&&typeof _0x407c26[_0x2482('0x1d')]===_0x2482('0x1e');var _0x35ca1c=_0x3b6a28[_0x2482('0x1f')];var _0x2dad33=_0x17ae11?0x0:_0x407c26[_0x2482('0x1c')];var _0x2a6f42=_0x17ae11?_0x3b6a28[_0x2482('0x1f')]:_0x407c26[_0x2482('0x1c')]+_0x407c26[_0x2482('0x1d')];var _0x2ef7e3;if(_0x2a6f42>=_0x35ca1c){_0x2a6f42=_0x35ca1c;_0x2ef7e3=0xc8;}else{_0x2ef7e3=0xce;}_0x4395a0[_0x2482('0x19')](_0x2ef7e3);return _0x4395a0['set'](_0x2482('0x20'),_0x2dad33+'-'+_0x2a6f42+'/'+_0x35ca1c)[_0x2482('0x1b')](_0x3b6a28);}return null;};}function patchUpdates(_0x543271){return function(_0x2ba27e){try{jsonpatch[_0x2482('0x21')](_0x2ba27e,_0x543271,!![]);}catch(_0x124a6b){return BPromise[_0x2482('0x22')](_0x124a6b);}return _0x2ba27e['save']();};}function saveUpdates(_0x4aa9b0,_0x48a56d){return function(_0x590423){if(_0x590423){return _0x590423['update'](_0x4aa9b0)['then'](function(_0x28b142){return _0x28b142;});}return null;};}function removeEntity(_0xb4b2e7,_0x2ae5d1){return function(_0x21c70b){if(_0x21c70b){return _0x21c70b[_0x2482('0x23')]()['then'](function(){_0xb4b2e7[_0x2482('0x19')](0xcc)[_0x2482('0x1a')]();});}};}function handleEntityNotFound(_0x34915f,_0x3749aa){return function(_0x2d3522){if(!_0x2d3522){_0x34915f['sendStatus'](0x194);}return _0x2d3522;};}function handleError(_0x10f9ca,_0x11ef35){_0x11ef35=_0x11ef35||0x1f4;return function(_0xf7f857){logger[_0x2482('0x24')](_0xf7f857['stack']);if(_0xf7f857['name']){delete _0xf7f857['name'];}_0x10f9ca[_0x2482('0x19')](_0x11ef35)[_0x2482('0x25')](_0xf7f857);};}exports[_0x2482('0x26')]=function(_0x512a3c,_0x3c769c){var _0x45df8d={},_0x40fdbc={},_0x15a2e3={'count':0x0,'rows':[]};var _0x52bd6f=_['map'](db[_0x2482('0x27')][_0x2482('0x28')],function(_0x19ab1c){return{'name':_0x19ab1c[_0x2482('0x29')],'type':_0x19ab1c['type'][_0x2482('0x2a')]};});_0x40fdbc[_0x2482('0x2b')]=_[_0x2482('0x2c')](_0x52bd6f,_0x2482('0x2d'));_0x40fdbc[_0x2482('0x2e')]=_[_0x2482('0x2f')](_0x512a3c[_0x2482('0x2e')]);_0x40fdbc['filters']=_[_0x2482('0x30')](_0x40fdbc['model'],_0x40fdbc[_0x2482('0x2e')]);_0x45df8d[_0x2482('0x31')]=_[_0x2482('0x30')](_0x40fdbc['model'],qs[_0x2482('0x32')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x32')]));_0x45df8d[_0x2482('0x31')]=_0x45df8d[_0x2482('0x31')]['length']?_0x45df8d[_0x2482('0x31')]:_0x40fdbc['model'];if(!_0x512a3c[_0x2482('0x2e')]['hasOwnProperty']('nolimit')){_0x45df8d['limit']=qs[_0x2482('0x1d')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x1d')]);_0x45df8d[_0x2482('0x1c')]=qs[_0x2482('0x1c')](_0x512a3c[_0x2482('0x2e')][_0x2482('0x1c')]);}_0x45df8d['order']=qs[_0x2482('0x33')](_0x512a3c[_0x2482('0x2e')]['sort']);_0x45df8d[_0x2482('0x34')]=qs['filters'](_[_0x2482('0x35')](_0x512a3c[_0x2482('0x2e')],_0x40fdbc['filters']),_0x52bd6f);if(_0x512a3c[_0x2482('0x2e')]['filter']){_0x45df8d[_0x2482('0x34')]=_['merge'](_0x45df8d[_0x2482('0x34')],{'$or':_[_0x2482('0x2c')](_0x52bd6f,function(_0x3619fd){if(_0x3619fd['type']!==_0x2482('0x36')){var _0x3d9632={};_0x3d9632[_0x3619fd['name']]={'$like':'%'+_0x512a3c[_0x2482('0x2e')][_0x2482('0x37')]+'%'};return _0x3d9632;}})});}_0x45df8d=_[_0x2482('0x38')]({},_0x45df8d,_0x512a3c[_0x2482('0x39')]);var _0x3afafe={'where':_0x45df8d[_0x2482('0x34')]};return db['ZohoField'][_0x2482('0x1f')](_0x3afafe)[_0x2482('0x3a')](function(_0x32be33){_0x15a2e3[_0x2482('0x1f')]=_0x32be33;if(_0x512a3c[_0x2482('0x2e')][_0x2482('0x3b')]){_0x45df8d[_0x2482('0x3c')]=[{'all':!![]}];}return db[_0x2482('0x27')][_0x2482('0x3d')](_0x45df8d);})[_0x2482('0x3a')](function(_0x5e6cb4){_0x15a2e3[_0x2482('0x3e')]=_0x5e6cb4;return _0x15a2e3;})[_0x2482('0x3a')](respondWithFilteredResult(_0x3c769c,_0x45df8d))[_0x2482('0x3f')](handleError(_0x3c769c,null));};exports[_0x2482('0x40')]=function(_0x2d4297,_0x15317d){var _0x15a46c={'raw':!![],'where':{'id':_0x2d4297[_0x2482('0x41')]['id']}},_0x4f4086={};_0x4f4086[_0x2482('0x2b')]=_[_0x2482('0x2f')](db[_0x2482('0x27')]['rawAttributes']);_0x4f4086[_0x2482('0x2e')]=_['keys'](_0x2d4297[_0x2482('0x2e')]);_0x4f4086[_0x2482('0x42')]=_[_0x2482('0x30')](_0x4f4086['model'],_0x4f4086[_0x2482('0x2e')]);_0x15a46c[_0x2482('0x31')]=_['intersection'](_0x4f4086[_0x2482('0x2b')],qs[_0x2482('0x32')](_0x2d4297[_0x2482('0x2e')][_0x2482('0x32')]));_0x15a46c[_0x2482('0x31')]=_0x15a46c[_0x2482('0x31')][_0x2482('0x43')]?_0x15a46c[_0x2482('0x31')]:_0x4f4086[_0x2482('0x2b')];if(_0x2d4297[_0x2482('0x2e')][_0x2482('0x3b')]){_0x15a46c[_0x2482('0x3c')]=[{'all':!![]}];}_0x15a46c=_['merge']({},_0x15a46c,_0x2d4297[_0x2482('0x39')]);return db[_0x2482('0x27')][_0x2482('0x44')](_0x15a46c)[_0x2482('0x3a')](handleEntityNotFound(_0x15317d,null))[_0x2482('0x3a')](respondWithResult(_0x15317d,null))[_0x2482('0x3f')](handleError(_0x15317d,null));};exports[_0x2482('0x45')]=function(_0x3bbe51,_0x59b313){return db[_0x2482('0x27')][_0x2482('0x45')](_0x3bbe51[_0x2482('0x46')],{})['then'](respondWithResult(_0x59b313,0xc9))[_0x2482('0x3f')](handleError(_0x59b313,null));};exports['update']=function(_0x2bf308,_0x17d338){if(_0x2bf308[_0x2482('0x46')]['id']){delete _0x2bf308[_0x2482('0x46')]['id'];}return db[_0x2482('0x27')][_0x2482('0x44')]({'where':{'id':_0x2bf308[_0x2482('0x41')]['id']}})['then'](handleEntityNotFound(_0x17d338,null))[_0x2482('0x3a')](saveUpdates(_0x2bf308[_0x2482('0x46')],null))[_0x2482('0x3a')](respondWithResult(_0x17d338,null))[_0x2482('0x3f')](handleError(_0x17d338,null));};exports[_0x2482('0x23')]=function(_0x2506d3,_0x42fe1a){return db[_0x2482('0x27')][_0x2482('0x44')]({'where':{'id':_0x2506d3[_0x2482('0x41')]['id']}})[_0x2482('0x3a')](handleEntityNotFound(_0x42fe1a,null))[_0x2482('0x3a')](removeEntity(_0x42fe1a,null))[_0x2482('0x3f')](handleError(_0x42fe1a,null));};
\ No newline at end of file
+var _0x0380=['filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','sendStatus','error','name','send','index','ZohoField','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x310571,_0x4bb397){var _0xa0c756=function(_0x3f8b73){while(--_0x3f8b73){_0x310571['push'](_0x310571['shift']());}};_0xa0c756(++_0x4bb397);}(_0x0380,0xdf));var _0x0038=function(_0x418f8b,_0x3943b9){_0x418f8b=_0x418f8b-0x0;var _0x1228b4=_0x0380[_0x418f8b];return _0x1228b4;};'use strict';var emlformat=require(_0x0038('0x0'));var rimraf=require(_0x0038('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0038('0x2'));var rp=require(_0x0038('0x3'));var moment=require('moment');var BPromise=require(_0x0038('0x4'));var Mustache=require('mustache');var util=require(_0x0038('0x5'));var path=require(_0x0038('0x6'));var sox=require('sox');var csv=require(_0x0038('0x7'));var ejs=require(_0x0038('0x8'));var fs=require('fs');var fs_extra=require(_0x0038('0x9'));var _=require(_0x0038('0xa'));var squel=require(_0x0038('0xb'));var crypto=require(_0x0038('0xc'));var jsforce=require(_0x0038('0xd'));var deskjs=require(_0x0038('0xe'));var toCsv=require(_0x0038('0x7'));var querystring=require(_0x0038('0xf'));var Papa=require('papaparse');var Redis=require(_0x0038('0x10'));var authService=require(_0x0038('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0038('0x12'));var hardwareService=require(_0x0038('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x0038('0x14'));var config=require(_0x0038('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x0038('0x16'))['db'];function respondWithStatusCode(_0x107518,_0x5ba9af){_0x5ba9af=_0x5ba9af||0xcc;return function(_0x31dc6e){if(_0x31dc6e){return _0x107518['sendStatus'](_0x5ba9af);}return _0x107518[_0x0038('0x17')](_0x5ba9af)['end']();};}function respondWithResult(_0x16d1fd,_0x1012df){_0x1012df=_0x1012df||0xc8;return function(_0x221c8c){if(_0x221c8c){return _0x16d1fd[_0x0038('0x17')](_0x1012df)['json'](_0x221c8c);}};}function respondWithFilteredResult(_0xfeabd8,_0x20a8ec){return function(_0x47ac96){if(_0x47ac96){var _0x159b03=typeof _0x20a8ec[_0x0038('0x18')]===_0x0038('0x19')&&typeof _0x20a8ec[_0x0038('0x1a')]===_0x0038('0x19');var _0xfe012=_0x47ac96['count'];var _0x2a339a=_0x159b03?0x0:_0x20a8ec[_0x0038('0x18')];var _0xaa830b=_0x159b03?_0x47ac96[_0x0038('0x1b')]:_0x20a8ec['offset']+_0x20a8ec[_0x0038('0x1a')];var _0x1fcc30;if(_0xaa830b>=_0xfe012){_0xaa830b=_0xfe012;_0x1fcc30=0xc8;}else{_0x1fcc30=0xce;}_0xfeabd8[_0x0038('0x17')](_0x1fcc30);return _0xfeabd8[_0x0038('0x1c')](_0x0038('0x1d'),_0x2a339a+'-'+_0xaa830b+'/'+_0xfe012)[_0x0038('0x1e')](_0x47ac96);}return null;};}function patchUpdates(_0x544c88){return function(_0x46c1f1){try{jsonpatch[_0x0038('0x1f')](_0x46c1f1,_0x544c88,!![]);}catch(_0x12a753){return BPromise['reject'](_0x12a753);}return _0x46c1f1['save']();};}function saveUpdates(_0x2639cc,_0x398785){return function(_0x226395){if(_0x226395){return _0x226395[_0x0038('0x20')](_0x2639cc)[_0x0038('0x21')](function(_0x5b49bf){return _0x5b49bf;});}return null;};}function removeEntity(_0x232fc9,_0x16dcdd){return function(_0x33472f){if(_0x33472f){return _0x33472f[_0x0038('0x22')]()[_0x0038('0x21')](function(){_0x232fc9[_0x0038('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x465789,_0x1afdb4){return function(_0x2ecf78){if(!_0x2ecf78){_0x465789[_0x0038('0x23')](0x194);}return _0x2ecf78;};}function handleError(_0x1769bf,_0x110c12){_0x110c12=_0x110c12||0x1f4;return function(_0x23c255){logger[_0x0038('0x24')](_0x23c255['stack']);if(_0x23c255[_0x0038('0x25')]){delete _0x23c255[_0x0038('0x25')];}_0x1769bf['status'](_0x110c12)[_0x0038('0x26')](_0x23c255);};}exports[_0x0038('0x27')]=function(_0xcd109d,_0x40ddbd){var _0x1e54f6={},_0x1a1387={},_0x413bdb={'count':0x0,'rows':[]};var _0x567f29=_['map'](db[_0x0038('0x28')]['rawAttributes'],function(_0x568d49){return{'name':_0x568d49['fieldName'],'type':_0x568d49[_0x0038('0x29')][_0x0038('0x2a')]};});_0x1a1387[_0x0038('0x2b')]=_[_0x0038('0x2c')](_0x567f29,_0x0038('0x25'));_0x1a1387['query']=_[_0x0038('0x2d')](_0xcd109d[_0x0038('0x2e')]);_0x1a1387[_0x0038('0x2f')]=_[_0x0038('0x30')](_0x1a1387['model'],_0x1a1387[_0x0038('0x2e')]);_0x1e54f6[_0x0038('0x31')]=_[_0x0038('0x30')](_0x1a1387['model'],qs[_0x0038('0x32')](_0xcd109d[_0x0038('0x2e')]['fields']));_0x1e54f6[_0x0038('0x31')]=_0x1e54f6[_0x0038('0x31')][_0x0038('0x33')]?_0x1e54f6['attributes']:_0x1a1387['model'];if(!_0xcd109d[_0x0038('0x2e')][_0x0038('0x34')](_0x0038('0x35'))){_0x1e54f6[_0x0038('0x1a')]=qs[_0x0038('0x1a')](_0xcd109d[_0x0038('0x2e')][_0x0038('0x1a')]);_0x1e54f6[_0x0038('0x18')]=qs['offset'](_0xcd109d[_0x0038('0x2e')][_0x0038('0x18')]);}_0x1e54f6['order']=qs['sort'](_0xcd109d[_0x0038('0x2e')][_0x0038('0x36')]);_0x1e54f6[_0x0038('0x37')]=qs[_0x0038('0x2f')](_[_0x0038('0x38')](_0xcd109d[_0x0038('0x2e')],_0x1a1387[_0x0038('0x2f')]),_0x567f29);if(_0xcd109d[_0x0038('0x2e')][_0x0038('0x39')]){_0x1e54f6[_0x0038('0x37')]=_[_0x0038('0x3a')](_0x1e54f6[_0x0038('0x37')],{'$or':_[_0x0038('0x2c')](_0x567f29,function(_0x3c6876){if(_0x3c6876[_0x0038('0x29')]!==_0x0038('0x3b')){var _0x568634={};_0x568634[_0x3c6876[_0x0038('0x25')]]={'$like':'%'+_0xcd109d[_0x0038('0x2e')]['filter']+'%'};return _0x568634;}})});}_0x1e54f6=_['merge']({},_0x1e54f6,_0xcd109d[_0x0038('0x3c')]);var _0xffa9b3={'where':_0x1e54f6[_0x0038('0x37')]};return db['ZohoField']['count'](_0xffa9b3)[_0x0038('0x21')](function(_0x19caa8){_0x413bdb[_0x0038('0x1b')]=_0x19caa8;if(_0xcd109d['query'][_0x0038('0x3d')]){_0x1e54f6[_0x0038('0x3e')]=[{'all':!![]}];}return db[_0x0038('0x28')]['findAll'](_0x1e54f6);})[_0x0038('0x21')](function(_0x1ef8e2){_0x413bdb[_0x0038('0x3f')]=_0x1ef8e2;return _0x413bdb;})[_0x0038('0x21')](respondWithFilteredResult(_0x40ddbd,_0x1e54f6))[_0x0038('0x40')](handleError(_0x40ddbd,null));};exports['show']=function(_0x804f1d,_0x1e7e13){var _0x431af2={'raw':!![],'where':{'id':_0x804f1d[_0x0038('0x41')]['id']}},_0x178a47={};_0x178a47[_0x0038('0x2b')]=_['keys'](db['ZohoField'][_0x0038('0x42')]);_0x178a47[_0x0038('0x2e')]=_[_0x0038('0x2d')](_0x804f1d[_0x0038('0x2e')]);_0x178a47[_0x0038('0x2f')]=_[_0x0038('0x30')](_0x178a47[_0x0038('0x2b')],_0x178a47[_0x0038('0x2e')]);_0x431af2[_0x0038('0x31')]=_[_0x0038('0x30')](_0x178a47[_0x0038('0x2b')],qs[_0x0038('0x32')](_0x804f1d['query'][_0x0038('0x32')]));_0x431af2['attributes']=_0x431af2[_0x0038('0x31')]['length']?_0x431af2[_0x0038('0x31')]:_0x178a47[_0x0038('0x2b')];if(_0x804f1d['query'][_0x0038('0x3d')]){_0x431af2[_0x0038('0x3e')]=[{'all':!![]}];}_0x431af2=_[_0x0038('0x3a')]({},_0x431af2,_0x804f1d[_0x0038('0x3c')]);return db[_0x0038('0x28')][_0x0038('0x43')](_0x431af2)['then'](handleEntityNotFound(_0x1e7e13,null))[_0x0038('0x21')](respondWithResult(_0x1e7e13,null))[_0x0038('0x40')](handleError(_0x1e7e13,null));};exports['create']=function(_0x5b17eb,_0x2a848c){return db[_0x0038('0x28')][_0x0038('0x44')](_0x5b17eb['body'],{})[_0x0038('0x21')](respondWithResult(_0x2a848c,0xc9))['catch'](handleError(_0x2a848c,null));};exports[_0x0038('0x20')]=function(_0x107335,_0x2f6e83){if(_0x107335[_0x0038('0x45')]['id']){delete _0x107335['body']['id'];}return db[_0x0038('0x28')][_0x0038('0x43')]({'where':{'id':_0x107335[_0x0038('0x41')]['id']}})['then'](handleEntityNotFound(_0x2f6e83,null))[_0x0038('0x21')](saveUpdates(_0x107335[_0x0038('0x45')],null))[_0x0038('0x21')](respondWithResult(_0x2f6e83,null))[_0x0038('0x40')](handleError(_0x2f6e83,null));};exports[_0x0038('0x22')]=function(_0x397d06,_0x19390b){return db[_0x0038('0x28')][_0x0038('0x43')]({'where':{'id':_0x397d06['params']['id']}})[_0x0038('0x21')](handleEntityNotFound(_0x19390b,null))[_0x0038('0x21')](removeEntity(_0x19390b,null))[_0x0038('0x40')](handleError(_0x19390b,null));};
\ No newline at end of file
index a48da91..b843b9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82c4=['moment','bluebird','request-promise','rimraf','./intZohoField.attributes','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','../../config/logger','api'];(function(_0x475630,_0x383d22){var _0x5155be=function(_0x25471a){while(--_0x25471a){_0x475630['push'](_0x475630['shift']());}};_0x5155be(++_0x383d22);}(_0x82c4,0x1ca));var _0x482c=function(_0xccb95,_0x300783){_0xccb95=_0xccb95-0x0;var _0x382f46=_0x82c4[_0xccb95];return _0x382f46;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var logger=require(_0x482c('0x2'))(_0x482c('0x3'));var moment=require(_0x482c('0x4'));var BPromise=require(_0x482c('0x5'));var rp=require(_0x482c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x482c('0x7'));var config=require('../../config/environment');var attributes=require(_0x482c('0x8'));module['exports']=function(_0x477cf4,_0x5d7c76){return _0x477cf4[_0x482c('0x9')](_0x482c('0xa'),attributes,{'tableName':_0x482c('0xb'),'paranoid':![],'indexes':[{'name':_0x482c('0xc'),'fields':[_0x482c('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4bd3=['lodash','../../config/logger','api','path','rimraf','../../config/environment','exports','define','ZohoField','zoho_unique_index','idField','FieldId'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x4bd3,0x174));var _0x34bd=function(_0x3a5e9f,_0x33a0bd){_0x3a5e9f=_0x3a5e9f-0x0;var _0x420caa=_0x4bd3[_0x3a5e9f];return _0x420caa;};'use strict';var _=require(_0x34bd('0x0'));var util=require('util');var logger=require(_0x34bd('0x1'))(_0x34bd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x34bd('0x3'));var rimraf=require(_0x34bd('0x4'));var config=require(_0x34bd('0x5'));var attributes=require('./intZohoField.attributes');module[_0x34bd('0x6')]=function(_0x2a15a2,_0x5c2a7a){return _0x2a15a2[_0x34bd('0x7')](_0x34bd('0x8'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0x34bd('0x9'),'fields':[_0x34bd('0xa'),_0x34bd('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 042c21a..67a2a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6450=['moment','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util'];(function(_0x3f6903,_0x34370e){var _0x38e844=function(_0x2b157c){while(--_0x2b157c){_0x3f6903['push'](_0x3f6903['shift']());}};_0x38e844(++_0x34370e);}(_0x6450,0xa7));var _0x0645=function(_0x368398,_0x512162){_0x368398=_0x368398-0x0;var _0x46d852=_0x6450[_0x368398];return _0x46d852;};'use strict';var _=require('lodash');var util=require(_0x0645('0x0'));var moment=require(_0x0645('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0645('0x2'));var db=require(_0x0645('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0645('0x4'))(_0x0645('0x5'));var config=require('../../config/environment');var jayson=require(_0x0645('0x6'));var client=jayson[_0x0645('0x7')][_0x0645('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xa94c56,_0x231778,_0x5f51a5){return new BPromise(function(_0x52c714,_0x5b4db1){return client[_0x0645('0x9')](_0xa94c56,_0x5f51a5)[_0x0645('0xa')](function(_0x206314){logger[_0x0645('0xb')](_0x0645('0xc'),_0x231778,'request\x20sent');logger['debug'](_0x0645('0xd'),_0x231778,_0x0645('0xe'),JSON[_0x0645('0xf')](_0x206314));if(_0x206314[_0x0645('0x10')]){if(_0x206314[_0x0645('0x10')][_0x0645('0x11')]===0x1f4){logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x206314['error'][_0x0645('0x12')]);return _0x5b4db1(_0x206314['error'][_0x0645('0x12')]);}logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x206314[_0x0645('0x10')][_0x0645('0x12')]);return _0x52c714(_0x206314['error']['message']);}else{logger['info'](_0x0645('0xc'),_0x231778,_0x0645('0xe'));_0x52c714(_0x206314[_0x0645('0x13')][_0x0645('0x12')]);}})[_0x0645('0x14')](function(_0x5e59e6){logger[_0x0645('0x10')](_0x0645('0xc'),_0x231778,_0x5e59e6);_0x5b4db1(_0x5e59e6);});});}
\ No newline at end of file
+var _0x58a8=['code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xbf3791,_0x4d0723){var _0x488a42=function(_0x4c52c0){while(--_0x4c52c0){_0xbf3791['push'](_0xbf3791['shift']());}};_0x488a42(++_0x4d0723);}(_0x58a8,0xf3));var _0x858a=function(_0x271e56,_0xc0e226){_0x271e56=_0x271e56-0x0;var _0x2f35f5=_0x58a8[_0x271e56];return _0x2f35f5;};'use strict';var _=require('lodash');var util=require(_0x858a('0x0'));var moment=require(_0x858a('0x1'));var BPromise=require(_0x858a('0x2'));var rs=require(_0x858a('0x3'));var fs=require('fs');var Redis=require(_0x858a('0x4'));var db=require(_0x858a('0x5'))['db'];var utils=require(_0x858a('0x6'));var logger=require('../../config/logger')(_0x858a('0x7'));var config=require(_0x858a('0x8'));var jayson=require(_0x858a('0x9'));var client=jayson[_0x858a('0xa')][_0x858a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x558268,_0x6a758b,_0x6d0d05){return new BPromise(function(_0x37163b,_0x345195){return client[_0x858a('0xc')](_0x558268,_0x6d0d05)[_0x858a('0xd')](function(_0x3939f4){logger[_0x858a('0xe')](_0x858a('0xf'),_0x6a758b,_0x858a('0x10'));logger[_0x858a('0x11')](_0x858a('0x12'),_0x6a758b,_0x858a('0x10'),JSON[_0x858a('0x13')](_0x3939f4));if(_0x3939f4[_0x858a('0x14')]){if(_0x3939f4['error'][_0x858a('0x15')]===0x1f4){logger[_0x858a('0x14')](_0x858a('0xf'),_0x6a758b,_0x3939f4[_0x858a('0x14')][_0x858a('0x16')]);return _0x345195(_0x3939f4[_0x858a('0x14')][_0x858a('0x16')]);}logger[_0x858a('0x14')](_0x858a('0xf'),_0x6a758b,_0x3939f4[_0x858a('0x14')][_0x858a('0x16')]);return _0x37163b(_0x3939f4[_0x858a('0x14')][_0x858a('0x16')]);}else{logger[_0x858a('0xe')]('ZohoField,\x20%s,\x20%s',_0x6a758b,_0x858a('0x10'));_0x37163b(_0x3939f4['result'][_0x858a('0x16')]);}})[_0x858a('0x17')](function(_0x3d8e2a){logger[_0x858a('0x14')]('ZohoField,\x20%s,\x20%s',_0x6a758b,_0x3d8e2a);_0x345195(_0x3d8e2a);});});}
\ No newline at end of file
index f9b5b1d..b641aef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x40eca3,_0x5a0da4){var _0x38f50b=function(_0x2f3aa2){while(--_0x2f3aa2){_0x40eca3['push'](_0x40eca3['shift']());}};_0x38f50b(++_0x5a0da4);}(_0xe706,0xa3));var _0x6e70=function(_0x1f8999,_0x58ef02){_0x1f8999=_0x1f8999-0x0;var _0x4a4d99=_0xe706[_0x1f8999];return _0x4a4d99;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xa71a08,_0x1625e4){var _0x38d4f0=function(_0x2851db){while(--_0x2851db){_0xa71a08['push'](_0xa71a08['shift']());}};_0x38d4f0(++_0x1625e4);}(_0xe706,0xa3));var _0x6e70=function(_0x200ced,_0x503efa){_0x200ced=_0x200ced-0x0;var _0x28e175=_0xe706[_0x200ced];return _0x28e175;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index a1158e7..a74c174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf1=['unique_name_and_version','app.js','INTEGER','sequelize','exports','STRING'];(function(_0x4a7bb0,_0x51d5d){var _0xb0d399=function(_0x24d6e7){while(--_0x24d6e7){_0x4a7bb0['push'](_0x4a7bb0['shift']());}};_0xb0d399(++_0x51d5d);}(_0xfbf1,0x16b));var _0x1fbf=function(_0x5737e1,_0x579fae){_0x5737e1=_0x5737e1-0x0;var _0x232b48=_0xfbf1[_0x5737e1];return _0x232b48;};'use strict';var Sequelize=require(_0x1fbf('0x0'));module[_0x1fbf('0x1')]={'name':{'type':Sequelize[_0x1fbf('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x1fbf('0x2')],'allowNull':![],'unique':_0x1fbf('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x1fbf('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x1fbf('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x1fbf('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x1fbf('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x1fbf('0x2')],'unique':'state'},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x1fbf('0x2')]},'link':{'type':Sequelize[_0x1fbf('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xe2c8=['sequelize','STRING','app.js','INTEGER','BOOLEAN'];(function(_0xddaf6d,_0x5b16ed){var _0xa3e013=function(_0x17b13c){while(--_0x17b13c){_0xddaf6d['push'](_0xddaf6d['shift']());}};_0xa3e013(++_0x5b16ed);}(_0xe2c8,0x8c));var _0x8e2c=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xe2c8[_0x334841];return _0x5beb4b;};'use strict';var Sequelize=require(_0x8e2c('0x0'));module['exports']={'name':{'type':Sequelize[_0x8e2c('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x8e2c('0x1')],'defaultValue':_0x8e2c('0x2')},'filename':{'type':Sequelize[_0x8e2c('0x1')]},'path':{'type':Sequelize[_0x8e2c('0x1')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x8e2c('0x3')]},'active':{'type':Sequelize[_0x8e2c('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x8e2c('0x1')]},'logo':{'type':Sequelize[_0x8e2c('0x1')]},'state':{'type':Sequelize[_0x8e2c('0x1')],'unique':'state'},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x8e2c('0x1')]},'remoteUri':{'type':Sequelize[_0x8e2c('0x1')]},'link':{'type':Sequelize[_0x8e2c('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 269562d..a733f59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','then','rows','show','params','intersection','fields','options','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce'];(function(_0x193be1,_0x3e1726){var _0x4dda07=function(_0x5cda9c){while(--_0x5cda9c){_0x193be1['push'](_0x193be1['shift']());}};_0x4dda07(++_0x3e1726);}(_0x5fab,0x177));var _0xb5fa=function(_0x5bf152,_0x2884b3){_0x5bf152=_0x5bf152-0x0;var _0x5d1230=_0x5fab[_0x5bf152];return _0x5d1230;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];function respondWithStatusCode(_0x4d3576,_0x2ad830){_0x2ad830=_0x2ad830||0xcc;return function(_0x3dad4d){if(_0x3dad4d){return _0x4d3576['sendStatus'](_0x2ad830);}return _0x4d3576[_0xb5fa('0x1a')](_0x2ad830)['end']();};}function respondWithResult(_0x265992,_0x3fc372){_0x3fc372=_0x3fc372||0xc8;return function(_0x40c914){if(_0x40c914){return _0x265992[_0xb5fa('0x1a')](_0x3fc372)[_0xb5fa('0x1b')](_0x40c914);}};}function respondWithFilteredResult(_0x5371cf,_0x567f31){return function(_0x38e964){if(_0x38e964){var _0x587043=typeof _0x567f31[_0xb5fa('0x1c')]===_0xb5fa('0x1d')&&typeof _0x567f31['limit']==='undefined';var _0x451a55=_0x38e964[_0xb5fa('0x1e')];var _0x32e9e5=_0x587043?0x0:_0x567f31[_0xb5fa('0x1c')];var _0x324ba5=_0x587043?_0x38e964[_0xb5fa('0x1e')]:_0x567f31[_0xb5fa('0x1c')]+_0x567f31[_0xb5fa('0x1f')];var _0xc14dc4;if(_0x324ba5>=_0x451a55){_0x324ba5=_0x451a55;_0xc14dc4=0xc8;}else{_0xc14dc4=0xce;}_0x5371cf[_0xb5fa('0x1a')](_0xc14dc4);return _0x5371cf[_0xb5fa('0x20')](_0xb5fa('0x21'),_0x32e9e5+'-'+_0x324ba5+'/'+_0x451a55)['json'](_0x38e964);}return null;};}function patchUpdates(_0x432bfa){return function(_0x519e20){try{jsonpatch[_0xb5fa('0x22')](_0x519e20,_0x432bfa,!![]);}catch(_0x4a6c04){return BPromise[_0xb5fa('0x23')](_0x4a6c04);}return _0x519e20[_0xb5fa('0x24')]();};}function saveUpdates(_0x4e05c0,_0x40dfdf){return function(_0x3a2ab9){if(_0x3a2ab9){return _0x3a2ab9[_0xb5fa('0x25')](_0x4e05c0)['then'](function(_0x32a85c){return _0x32a85c;});}return null;};}function removeEntity(_0xec108f,_0x444237){return function(_0x542348){if(_0x542348){return _0x542348[_0xb5fa('0x26')]()['then'](function(){_0xec108f[_0xb5fa('0x1a')](0xcc)[_0xb5fa('0x27')]();});}};}function handleEntityNotFound(_0x11053a,_0x543edf){return function(_0x2dbd22){if(!_0x2dbd22){_0x11053a[_0xb5fa('0x28')](0x194);}return _0x2dbd22;};}function handleError(_0x6a455c,_0x20d649){_0x20d649=_0x20d649||0x1f4;return function(_0x568870){logger['error'](_0x568870['stack']);if(_0x568870['name']){delete _0x568870[_0xb5fa('0x29')];}_0x6a455c[_0xb5fa('0x1a')](_0x20d649)[_0xb5fa('0x2a')](_0x568870);};}exports[_0xb5fa('0x2b')]=function(_0x534884,_0x3506a4){var _0x358549={},_0x353314={},_0x409af9={'count':0x0,'rows':[]};var _0x2a5690=_[_0xb5fa('0x2c')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')],function(_0x1f4380){return{'name':_0x1f4380[_0xb5fa('0x2f')],'type':_0x1f4380[_0xb5fa('0x30')][_0xb5fa('0x31')]};});_0x353314[_0xb5fa('0x32')]=_[_0xb5fa('0x2c')](_0x2a5690,_0xb5fa('0x29'));_0x353314[_0xb5fa('0x33')]=_[_0xb5fa('0x34')](_0x534884[_0xb5fa('0x33')]);_0x353314[_0xb5fa('0x35')]=_['intersection'](_0x353314[_0xb5fa('0x32')],_0x353314['query']);_0x358549['attributes']=_['intersection'](_0x353314[_0xb5fa('0x32')],qs['fields'](_0x534884[_0xb5fa('0x33')]['fields']));_0x358549['attributes']=_0x358549[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x358549['attributes']:_0x353314['model'];if(!_0x534884[_0xb5fa('0x33')][_0xb5fa('0x38')](_0xb5fa('0x39'))){_0x358549['limit']=qs[_0xb5fa('0x1f')](_0x534884[_0xb5fa('0x33')]['limit']);_0x358549[_0xb5fa('0x1c')]=qs[_0xb5fa('0x1c')](_0x534884[_0xb5fa('0x33')]['offset']);}_0x358549[_0xb5fa('0x3a')]=qs[_0xb5fa('0x3b')](_0x534884[_0xb5fa('0x33')]['sort']);_0x358549[_0xb5fa('0x3c')]=qs[_0xb5fa('0x35')](_[_0xb5fa('0x3d')](_0x534884[_0xb5fa('0x33')],_0x353314['filters']),_0x2a5690);if(_0x534884['query']['filter']){_0x358549['where']=_['merge'](_0x358549['where'],{'$or':_[_0xb5fa('0x2c')](_0x2a5690,function(_0x4c0a4d){if(_0x4c0a4d[_0xb5fa('0x30')]!==_0xb5fa('0x3e')){var _0x36db1a={};_0x36db1a[_0x4c0a4d[_0xb5fa('0x29')]]={'$like':'%'+_0x534884[_0xb5fa('0x33')][_0xb5fa('0x3f')]+'%'};return _0x36db1a;}})});}_0x358549=_['merge']({},_0x358549,_0x534884['options']);var _0x4c4bf0={'where':_0x358549[_0xb5fa('0x3c')]};return db['Integration'][_0xb5fa('0x1e')](_0x4c4bf0)['then'](function(_0x58aa97){_0x409af9[_0xb5fa('0x1e')]=_0x58aa97;if(_0x534884[_0xb5fa('0x33')][_0xb5fa('0x40')]){_0x358549[_0xb5fa('0x41')]=[{'all':!![]}];}return db[_0xb5fa('0x2d')][_0xb5fa('0x42')](_0x358549);})[_0xb5fa('0x43')](function(_0x83df0b){_0x409af9[_0xb5fa('0x44')]=_0x83df0b;return _0x409af9;})[_0xb5fa('0x43')](respondWithFilteredResult(_0x3506a4,_0x358549))['catch'](handleError(_0x3506a4,null));};exports[_0xb5fa('0x45')]=function(_0x4bc9df,_0x233f90){var _0x39aac3={'raw':![],'where':{'id':_0x4bc9df[_0xb5fa('0x46')]['id']}},_0x2c7c5f={};_0x2c7c5f[_0xb5fa('0x32')]=_[_0xb5fa('0x34')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')]);_0x2c7c5f['query']=_[_0xb5fa('0x34')](_0x4bc9df[_0xb5fa('0x33')]);_0x2c7c5f['filters']=_[_0xb5fa('0x47')](_0x2c7c5f['model'],_0x2c7c5f[_0xb5fa('0x33')]);_0x39aac3[_0xb5fa('0x36')]=_['intersection'](_0x2c7c5f['model'],qs[_0xb5fa('0x48')](_0x4bc9df[_0xb5fa('0x33')][_0xb5fa('0x48')]));_0x39aac3[_0xb5fa('0x36')]=_0x39aac3[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x39aac3[_0xb5fa('0x36')]:_0x2c7c5f[_0xb5fa('0x32')];if(_0x4bc9df['query'][_0xb5fa('0x40')]){_0x39aac3[_0xb5fa('0x41')]=[{'all':!![]}];}_0x39aac3=_['merge']({},_0x39aac3,_0x4bc9df[_0xb5fa('0x49')]);return db[_0xb5fa('0x2d')][_0xb5fa('0x4a')](_0x39aac3)[_0xb5fa('0x43')](handleEntityNotFound(_0x233f90,null))[_0xb5fa('0x43')](respondWithResult(_0x233f90,null))[_0xb5fa('0x4b')](handleError(_0x233f90,null));};exports[_0xb5fa('0x4c')]=function(_0x33eb2c,_0x20f5f5){return db[_0xb5fa('0x2d')][_0xb5fa('0x4c')](_0x33eb2c[_0xb5fa('0x4d')],{})[_0xb5fa('0x43')](respondWithResult(_0x20f5f5,0xc9))[_0xb5fa('0x4b')](handleError(_0x20f5f5,null));};exports[_0xb5fa('0x25')]=function(_0x3a39f2,_0x52f5d8){if(_0x3a39f2['body']['id']){delete _0x3a39f2[_0xb5fa('0x4d')]['id'];}return db['Integration'][_0xb5fa('0x4a')]({'where':{'id':_0x3a39f2[_0xb5fa('0x46')]['id']}})['then'](handleEntityNotFound(_0x52f5d8,null))[_0xb5fa('0x43')](saveUpdates(_0x3a39f2[_0xb5fa('0x4d')],null))[_0xb5fa('0x43')](respondWithResult(_0x52f5d8,null))[_0xb5fa('0x4b')](handleError(_0x52f5d8,null));};exports[_0xb5fa('0x26')]=function(_0x3ffee0,_0x51d5f7){return db[_0xb5fa('0x2d')]['find']({'where':{'id':_0x3ffee0[_0xb5fa('0x46')]['id']}})[_0xb5fa('0x43')](handleEntityNotFound(_0x51d5f7,null))[_0xb5fa('0x43')](removeEntity(_0x51d5f7,null))['catch'](handleError(_0x51d5f7,null));};
\ No newline at end of file
+var _0x0295=['params','intersection','include','find','create','body','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','Integration','includeAll','rows','catch','show'];(function(_0x16bd44,_0x3c91ba){var _0x368a61=function(_0x1c68ab){while(--_0x1c68ab){_0x16bd44['push'](_0x16bd44['shift']());}};_0x368a61(++_0x3c91ba);}(_0x0295,0x1f0));var _0x5029=function(_0x57ede0,_0x2c5e8c){_0x57ede0=_0x57ede0-0x0;var _0x60056=_0x0295[_0x57ede0];return _0x60056;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}exports[_0x5029('0x25')]=function(_0x4a24b9,_0x32da06){var _0x251f99={},_0xe5313e={},_0x4b6f92={'count':0x0,'rows':[]};var _0x2cedf6=_[_0x5029('0x26')](db['Integration'][_0x5029('0x27')],function(_0x25032b){return{'name':_0x25032b[_0x5029('0x28')],'type':_0x25032b[_0x5029('0x29')][_0x5029('0x2a')]};});_0xe5313e[_0x5029('0x2b')]=_[_0x5029('0x26')](_0x2cedf6,_0x5029('0x23'));_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2d')](_0x4a24b9[_0x5029('0x2c')]);_0xe5313e[_0x5029('0x2e')]=_['intersection'](_0xe5313e[_0x5029('0x2b')],_0xe5313e['query']);_0x251f99[_0x5029('0x2f')]=_['intersection'](_0xe5313e['model'],qs[_0x5029('0x30')](_0x4a24b9[_0x5029('0x2c')][_0x5029('0x30')]));_0x251f99['attributes']=_0x251f99[_0x5029('0x2f')][_0x5029('0x31')]?_0x251f99[_0x5029('0x2f')]:_0xe5313e[_0x5029('0x2b')];if(!_0x4a24b9[_0x5029('0x2c')][_0x5029('0x32')](_0x5029('0x33'))){_0x251f99[_0x5029('0x1a')]=qs[_0x5029('0x1a')](_0x4a24b9['query'][_0x5029('0x1a')]);_0x251f99[_0x5029('0x18')]=qs[_0x5029('0x18')](_0x4a24b9[_0x5029('0x2c')]['offset']);}_0x251f99[_0x5029('0x34')]=qs[_0x5029('0x35')](_0x4a24b9[_0x5029('0x2c')]['sort']);_0x251f99['where']=qs[_0x5029('0x2e')](_[_0x5029('0x36')](_0x4a24b9['query'],_0xe5313e['filters']),_0x2cedf6);if(_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]){_0x251f99[_0x5029('0x38')]=_[_0x5029('0x39')](_0x251f99[_0x5029('0x38')],{'$or':_[_0x5029('0x26')](_0x2cedf6,function(_0x3cb84e){if(_0x3cb84e[_0x5029('0x29')]!==_0x5029('0x3a')){var _0x3effa4={};_0x3effa4[_0x3cb84e[_0x5029('0x23')]]={'$like':'%'+_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]+'%'};return _0x3effa4;}})});}_0x251f99=_[_0x5029('0x39')]({},_0x251f99,_0x4a24b9['options']);var _0x57c2b5={'where':_0x251f99[_0x5029('0x38')]};return db[_0x5029('0x3b')][_0x5029('0x1b')](_0x57c2b5)['then'](function(_0x32d8a3){_0x4b6f92[_0x5029('0x1b')]=_0x32d8a3;if(_0x4a24b9['query'][_0x5029('0x3c')]){_0x251f99['include']=[{'all':!![]}];}return db[_0x5029('0x3b')]['findAll'](_0x251f99);})[_0x5029('0x20')](function(_0x359838){_0x4b6f92[_0x5029('0x3d')]=_0x359838;return _0x4b6f92;})[_0x5029('0x20')](respondWithFilteredResult(_0x32da06,_0x251f99))[_0x5029('0x3e')](handleError(_0x32da06,null));};exports[_0x5029('0x3f')]=function(_0x4b2219,_0x1021ea){var _0x2ae047={'raw':![],'where':{'id':_0x4b2219[_0x5029('0x40')]['id']}},_0x5a3e4d={};_0x5a3e4d[_0x5029('0x2b')]=_[_0x5029('0x2d')](db[_0x5029('0x3b')][_0x5029('0x27')]);_0x5a3e4d[_0x5029('0x2c')]=_['keys'](_0x4b2219[_0x5029('0x2c')]);_0x5a3e4d[_0x5029('0x2e')]=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],_0x5a3e4d[_0x5029('0x2c')]);_0x2ae047['attributes']=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],qs[_0x5029('0x30')](_0x4b2219[_0x5029('0x2c')][_0x5029('0x30')]));_0x2ae047[_0x5029('0x2f')]=_0x2ae047[_0x5029('0x2f')][_0x5029('0x31')]?_0x2ae047[_0x5029('0x2f')]:_0x5a3e4d['model'];if(_0x4b2219[_0x5029('0x2c')][_0x5029('0x3c')]){_0x2ae047[_0x5029('0x42')]=[{'all':!![]}];}_0x2ae047=_[_0x5029('0x39')]({},_0x2ae047,_0x4b2219['options']);return db['Integration'][_0x5029('0x43')](_0x2ae047)[_0x5029('0x20')](handleEntityNotFound(_0x1021ea,null))[_0x5029('0x20')](respondWithResult(_0x1021ea,null))[_0x5029('0x3e')](handleError(_0x1021ea,null));};exports[_0x5029('0x44')]=function(_0x3dfc08,_0x2bb7fc){return db[_0x5029('0x3b')][_0x5029('0x44')](_0x3dfc08[_0x5029('0x45')],{})[_0x5029('0x20')](respondWithResult(_0x2bb7fc,0xc9))[_0x5029('0x3e')](handleError(_0x2bb7fc,null));};exports[_0x5029('0x1f')]=function(_0x18f1f5,_0x3168bd){if(_0x18f1f5[_0x5029('0x45')]['id']){delete _0x18f1f5[_0x5029('0x45')]['id'];}return db[_0x5029('0x3b')][_0x5029('0x43')]({'where':{'id':_0x18f1f5[_0x5029('0x40')]['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x3168bd,null))['then'](saveUpdates(_0x18f1f5[_0x5029('0x45')],null))['then'](respondWithResult(_0x3168bd,null))[_0x5029('0x3e')](handleError(_0x3168bd,null));};exports[_0x5029('0x21')]=function(_0x4d788a,_0x5343c6){return db[_0x5029('0x3b')]['find']({'where':{'id':_0x4d788a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x5343c6,null))[_0x5029('0x20')](removeEntity(_0x5343c6,null))[_0x5029('0x3e')](handleError(_0x5343c6,null));};
\ No newline at end of file
index 405ae84..1aabc69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ba=['exports','Integration','integrations','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes'];(function(_0xaae86e,_0x560082){var _0x4d2f39=function(_0x3fa430){while(--_0x3fa430){_0xaae86e['push'](_0xaae86e['shift']());}};_0x4d2f39(++_0x560082);}(_0xc7ba,0x6f));var _0xac7b=function(_0x165157,_0x743394){_0x165157=_0x165157-0x0;var _0x179831=_0xc7ba[_0x165157];return _0x179831;};'use strict';var _=require(_0xac7b('0x0'));var util=require(_0xac7b('0x1'));var logger=require(_0xac7b('0x2'))('api');var moment=require(_0xac7b('0x3'));var BPromise=require(_0xac7b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac7b('0x5'));var rimraf=require(_0xac7b('0x6'));var config=require(_0xac7b('0x7'));var attributes=require(_0xac7b('0x8'));module[_0xac7b('0x9')]=function(_0x1082ad,_0x4500a7){return _0x1082ad['define'](_0xac7b('0xa'),attributes,{'tableName':_0xac7b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa550=['request-promise','path','./integration.attributes','exports','Integration','integrations','util','../../config/logger','api','moment'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa550,0x74));var _0x0a55=function(_0x5d0746,_0x511b2d){_0x5d0746=_0x5d0746-0x0;var _0x19a392=_0xa550[_0x5d0746];return _0x19a392;};'use strict';var _=require('lodash');var util=require(_0x0a55('0x0'));var logger=require(_0x0a55('0x1'))(_0x0a55('0x2'));var moment=require(_0x0a55('0x3'));var BPromise=require('bluebird');var rp=require(_0x0a55('0x4'));var fs=require('fs');var path=require(_0x0a55('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0a55('0x6'));module[_0x0a55('0x7')]=function(_0x5dcfcb,_0x4b1aaf){return _0x5dcfcb['define'](_0x0a55('0x8'),attributes,{'tableName':_0x0a55('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a356a44..4ce0c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['http','request','then','info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1f22aa,_0x4dd128){var _0xbbf043=function(_0x563f82){while(--_0x563f82){_0x1f22aa['push'](_0x1f22aa['shift']());}};_0xbbf043(++_0x4dd128);}(_0xc6ac,0x15b));var _0xcc6a=function(_0xaeddb1,_0x406d9d){_0xaeddb1=_0xaeddb1-0x0;var _0x1d9c89=_0xc6ac[_0xaeddb1];return _0x1d9c89;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
+var _0x2542=['info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x1ed83d,_0x548b21){var _0xbf2d5c=function(_0x3fb0fc){while(--_0x3fb0fc){_0x1ed83d['push'](_0x1ed83d['shift']());}};_0xbf2d5c(++_0x548b21);}(_0x2542,0x169));var _0x2254=function(_0x141d28,_0x52a37c){_0x141d28=_0x141d28-0x0;var _0x2e63f8=_0x2542[_0x141d28];return _0x2e63f8;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}
\ No newline at end of file
index 0028bd8..11a07c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x51d4f3,_0x55a3a5){var _0x46d2b9=function(_0x4cf2dc){while(--_0x4cf2dc){_0x51d4f3['push'](_0x51d4f3['shift']());}};_0x46d2b9(++_0x55a3a5);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x443ccf,_0x254680){_0x443ccf=_0x443ccf-0x0;var _0x4b5847=_0xc6ac[_0x443ccf];return _0x4b5847;};'use strict';var multer=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var path=require(_0xcc6a('0x2'));var timeout=require(_0xcc6a('0x3'));var express=require(_0xcc6a('0x4'));var router=express[_0xcc6a('0x5')]();var fs_extra=require(_0xcc6a('0x6'));var auth=require(_0xcc6a('0x7'));var interaction=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var controller=require(_0xcc6a('0xa'));router[_0xcc6a('0xb')]('/',auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xd')]);router['get'](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xf')]);router['get'](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0x11')]);router[_0xcc6a('0x12')]('/',auth[_0xcc6a('0xc')](),controller['create']);router[_0xcc6a('0x13')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['update']);router[_0xcc6a('0x14')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x4137=['show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','/:id'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x4137,0xf8));var _0x7413=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4137[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/',auth['isAuthenticated'](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x14')]);router['delete'](_0x7413('0xf'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x15')]=router;
\ No newline at end of file
index ecf7444..00d63a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5a=['TEXT','ENUM','SENT','SENDING','FAILED','sequelize','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x7d5a,0x195));var _0xa7d5=function(_0x3f1e2e,_0x2421b5){_0x3f1e2e=_0x3f1e2e-0x0;var _0x8c4bff=_0x7d5a[_0x3f1e2e];return _0x8c4bff;};'use strict';var Sequelize=require(_0xa7d5('0x0'));module['exports']={'integration':{'type':Sequelize[_0xa7d5('0x1')]},'eventChannel':{'type':Sequelize[_0xa7d5('0x1')]},'exitStatus':{'type':Sequelize[_0xa7d5('0x1')]},'ticketId':{'type':Sequelize[_0xa7d5('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xa7d5('0x1')]},'calleridnum':{'type':Sequelize[_0xa7d5('0x1')]},'calleridname':{'type':Sequelize[_0xa7d5('0x1')]},'queue':{'type':Sequelize[_0xa7d5('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xa7d5('0x1')]},'agentcalledAt':{'type':Sequelize[_0xa7d5('0x2')]},'agentconnectAt':{'type':Sequelize[_0xa7d5('0x2')]},'holdtime':{'type':Sequelize[_0xa7d5('0x3')]},'agentcomplete':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xa7d5('0x2')]},'talktime':{'type':Sequelize[_0xa7d5('0x3')]},'agentacw':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xa7d5('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xa7d5('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xa7d5('0x2')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xa7d5('0x2')]},'lastevent':{'type':Sequelize[_0xa7d5('0x1')]},'channel':{'type':Sequelize[_0xa7d5('0x1')]},'channelstate':{'type':Sequelize[_0xa7d5('0x3')]},'channelstatedesc':{'type':Sequelize[_0xa7d5('0x1')]},'connectedlinenum':{'type':Sequelize[_0xa7d5('0x1')]},'connectedlinename':{'type':Sequelize[_0xa7d5('0x1')]},'language':{'type':Sequelize[_0xa7d5('0x1')]},'accountcode':{'type':Sequelize[_0xa7d5('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xa7d5('0x1')]},'priority':{'type':Sequelize[_0xa7d5('0x1')]},'destchannel':{'type':Sequelize[_0xa7d5('0x1')]},'destchannelstate':{'type':Sequelize[_0xa7d5('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xa7d5('0x1')]},'destcalleridnum':{'type':Sequelize[_0xa7d5('0x1')]},'destcalleridname':{'type':Sequelize[_0xa7d5('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xa7d5('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xa7d5('0x1')]},'destlanguage':{'type':Sequelize[_0xa7d5('0x1')]},'destaccountcode':{'type':Sequelize[_0xa7d5('0x1')]},'destcontext':{'type':Sequelize[_0xa7d5('0x1')]},'destexten':{'type':Sequelize[_0xa7d5('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xa7d5('0x1')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0xa7d5('0x1')]},'from':{'type':Sequelize[_0xa7d5('0x1')]},'to':{'type':Sequelize[_0xa7d5('0x1')]},'cc':{'type':Sequelize[_0xa7d5('0x1')]},'attachment':{'type':Sequelize[_0xa7d5('0x5')]},'html':{'type':Sequelize[_0xa7d5('0x5')]},'text':{'type':Sequelize[_0xa7d5('0x5')]},'status':{'type':Sequelize[_0xa7d5('0x6')](_0xa7d5('0x7'),_0xa7d5('0x8'),'RECEIVED',_0xa7d5('0x9'))},'url':{'type':Sequelize[_0xa7d5('0x1')]},'app':{'type':Sequelize[_0xa7d5('0x1')]},'appdata':{'type':Sequelize[_0xa7d5('0x1')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd522=['BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE'];(function(_0x3744fb,_0x348c19){var _0x38d3fa=function(_0x4b34c2){while(--_0x4b34c2){_0x3744fb['push'](_0x3744fb['shift']());}};_0x38d3fa(++_0x348c19);}(_0xd522,0x11b));var _0x2d52=function(_0x233894,_0x143dc9){_0x233894=_0x233894-0x0;var _0x10338b=_0xd522[_0x233894];return _0x10338b;};'use strict';var Sequelize=require(_0x2d52('0x0'));module[_0x2d52('0x1')]={'integration':{'type':Sequelize[_0x2d52('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x2d52('0x2')]},'ticketId':{'type':Sequelize[_0x2d52('0x2')]},'integrationId':{'type':Sequelize[_0x2d52('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x2d52('0x2')]},'calleridnum':{'type':Sequelize[_0x2d52('0x2')]},'calleridname':{'type':Sequelize[_0x2d52('0x2')]},'queue':{'type':Sequelize[_0x2d52('0x2')]},'interface':{'type':Sequelize[_0x2d52('0x2')]},'membername':{'type':Sequelize[_0x2d52('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2d52('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2d52('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x2d52('0x3')]},'agentacw':{'type':Sequelize[_0x2d52('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2d52('0x3')]},'reason':{'type':Sequelize[_0x2d52('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x2d52('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x2d52('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x2d52('0x2')]},'channelstate':{'type':Sequelize[_0x2d52('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x2d52('0x2')]},'connectedlinename':{'type':Sequelize[_0x2d52('0x2')]},'language':{'type':Sequelize[_0x2d52('0x2')]},'accountcode':{'type':Sequelize[_0x2d52('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x2d52('0x2')]},'priority':{'type':Sequelize[_0x2d52('0x2')]},'destchannel':{'type':Sequelize[_0x2d52('0x2')]},'destchannelstate':{'type':Sequelize[_0x2d52('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x2d52('0x2')]},'destcalleridname':{'type':Sequelize[_0x2d52('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x2d52('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x2d52('0x2')]},'destlanguage':{'type':Sequelize[_0x2d52('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x2d52('0x2')]},'destexten':{'type':Sequelize[_0x2d52('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x2d52('0x2')]},'messageId':{'type':Sequelize[_0x2d52('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x2d52('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x2d52('0x2')]},'attachment':{'type':Sequelize[_0x2d52('0x6')]},'html':{'type':Sequelize[_0x2d52('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x2d52('0x7')](_0x2d52('0x8'),_0x2d52('0x9'),_0x2d52('0xa'),_0x2d52('0xb'))},'url':{'type':Sequelize[_0x2d52('0x2')]},'app':{'type':Sequelize[_0x2d52('0x2')]},'appdata':{'type':Sequelize[_0x2d52('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 528ad48..fc3c346 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e40=['fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','name','index','map','IntegrationReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x33b7ce,_0x1346fb){var _0x37ec51=function(_0x4f7e4a){while(--_0x4f7e4a){_0x33b7ce['push'](_0x33b7ce['shift']());}};_0x37ec51(++_0x1346fb);}(_0x7e40,0x16b));var _0x07e4=function(_0x3376bd,_0x4fdb2a){_0x3376bd=_0x3376bd-0x0;var _0x587b0b=_0x7e40[_0x3376bd];return _0x587b0b;};'use strict';var emlformat=require(_0x07e4('0x0'));var rimraf=require(_0x07e4('0x1'));var zipdir=require(_0x07e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07e4('0x3'));var moment=require(_0x07e4('0x4'));var BPromise=require(_0x07e4('0x5'));var Mustache=require(_0x07e4('0x6'));var util=require(_0x07e4('0x7'));var path=require(_0x07e4('0x8'));var sox=require(_0x07e4('0x9'));var csv=require(_0x07e4('0xa'));var ejs=require(_0x07e4('0xb'));var fs=require('fs');var fs_extra=require(_0x07e4('0xc'));var _=require(_0x07e4('0xd'));var squel=require(_0x07e4('0xe'));var crypto=require(_0x07e4('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x07e4('0x10'));var Papa=require(_0x07e4('0x11'));var Redis=require(_0x07e4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x07e4('0x13'));var as=require(_0x07e4('0x14'));var hardwareService=require(_0x07e4('0x15'));var logger=require(_0x07e4('0x16'))(_0x07e4('0x17'));var utils=require(_0x07e4('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x07e4('0x19'));var db=require(_0x07e4('0x1a'))['db'];function respondWithStatusCode(_0x3abdc0,_0x38e4b8){_0x38e4b8=_0x38e4b8||0xcc;return function(_0x123a6f){if(_0x123a6f){return _0x3abdc0[_0x07e4('0x1b')](_0x38e4b8);}return _0x3abdc0[_0x07e4('0x1c')](_0x38e4b8)[_0x07e4('0x1d')]();};}function respondWithResult(_0x97edd,_0x230536){_0x230536=_0x230536||0xc8;return function(_0x49260a){if(_0x49260a){return _0x97edd[_0x07e4('0x1c')](_0x230536)[_0x07e4('0x1e')](_0x49260a);}};}function respondWithFilteredResult(_0x31c239,_0x1ace83){return function(_0x5a3a67){if(_0x5a3a67){var _0x3d6f00=typeof _0x1ace83[_0x07e4('0x1f')]===_0x07e4('0x20')&&typeof _0x1ace83[_0x07e4('0x21')]===_0x07e4('0x20');var _0x502161=_0x5a3a67['count'];var _0x3b6341=_0x3d6f00?0x0:_0x1ace83['offset'];var _0x27370f=_0x3d6f00?_0x5a3a67[_0x07e4('0x22')]:_0x1ace83[_0x07e4('0x1f')]+_0x1ace83[_0x07e4('0x21')];var _0x392d06;if(_0x27370f>=_0x502161){_0x27370f=_0x502161;_0x392d06=0xc8;}else{_0x392d06=0xce;}_0x31c239[_0x07e4('0x1c')](_0x392d06);return _0x31c239[_0x07e4('0x23')](_0x07e4('0x24'),_0x3b6341+'-'+_0x27370f+'/'+_0x502161)[_0x07e4('0x1e')](_0x5a3a67);}return null;};}function patchUpdates(_0x317c05){return function(_0x32a628){try{jsonpatch['apply'](_0x32a628,_0x317c05,!![]);}catch(_0x2249f3){return BPromise['reject'](_0x2249f3);}return _0x32a628[_0x07e4('0x25')]();};}function saveUpdates(_0x149d9c,_0x598021){return function(_0x50fa1c){if(_0x50fa1c){return _0x50fa1c[_0x07e4('0x26')](_0x149d9c)[_0x07e4('0x27')](function(_0x11f997){return _0x11f997;});}return null;};}function removeEntity(_0x5c5090,_0x13aea5){return function(_0x20fbf5){if(_0x20fbf5){return _0x20fbf5[_0x07e4('0x28')]()['then'](function(){_0x5c5090[_0x07e4('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d4962,_0x351295){return function(_0x340b8f){if(!_0x340b8f){_0x3d4962['sendStatus'](0x194);}return _0x340b8f;};}function handleError(_0x3c799b,_0x2b681d){_0x2b681d=_0x2b681d||0x1f4;return function(_0x10c857){logger['error'](_0x10c857[_0x07e4('0x29')]);if(_0x10c857[_0x07e4('0x2a')]){delete _0x10c857[_0x07e4('0x2a')];}_0x3c799b[_0x07e4('0x1c')](_0x2b681d)['send'](_0x10c857);};}exports[_0x07e4('0x2b')]=function(_0x20edbd,_0xb5fc0c){var _0x436906={},_0x1cbe41={},_0x44d717={'count':0x0,'rows':[]};var _0x3507d0=_[_0x07e4('0x2c')](db[_0x07e4('0x2d')][_0x07e4('0x2e')],function(_0xae7539){return{'name':_0xae7539['fieldName'],'type':_0xae7539[_0x07e4('0x2f')][_0x07e4('0x30')]};});_0x1cbe41[_0x07e4('0x31')]=_[_0x07e4('0x2c')](_0x3507d0,'name');_0x1cbe41[_0x07e4('0x32')]=_[_0x07e4('0x33')](_0x20edbd[_0x07e4('0x32')]);_0x1cbe41[_0x07e4('0x34')]=_[_0x07e4('0x35')](_0x1cbe41[_0x07e4('0x31')],_0x1cbe41[_0x07e4('0x32')]);_0x436906[_0x07e4('0x36')]=_[_0x07e4('0x35')](_0x1cbe41[_0x07e4('0x31')],qs[_0x07e4('0x37')](_0x20edbd['query'][_0x07e4('0x37')]));_0x436906[_0x07e4('0x36')]=_0x436906[_0x07e4('0x36')][_0x07e4('0x38')]?_0x436906['attributes']:_0x1cbe41[_0x07e4('0x31')];if(!_0x20edbd['query'][_0x07e4('0x39')](_0x07e4('0x3a'))){_0x436906[_0x07e4('0x21')]=qs['limit'](_0x20edbd[_0x07e4('0x32')][_0x07e4('0x21')]);_0x436906[_0x07e4('0x1f')]=qs[_0x07e4('0x1f')](_0x20edbd['query']['offset']);}_0x436906['order']=qs['sort'](_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3b')]);_0x436906[_0x07e4('0x3c')]=qs[_0x07e4('0x34')](_[_0x07e4('0x3d')](_0x20edbd[_0x07e4('0x32')],_0x1cbe41['filters']),_0x3507d0);if(_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3e')]){_0x436906[_0x07e4('0x3c')]=_[_0x07e4('0x3f')](_0x436906[_0x07e4('0x3c')],{'$or':_[_0x07e4('0x2c')](_0x3507d0,function(_0x4de6bc){if(_0x4de6bc['type']!==_0x07e4('0x40')){var _0x2833a6={};_0x2833a6[_0x4de6bc[_0x07e4('0x2a')]]={'$like':'%'+_0x20edbd[_0x07e4('0x32')][_0x07e4('0x3e')]+'%'};return _0x2833a6;}})});}_0x436906=_[_0x07e4('0x3f')]({},_0x436906,_0x20edbd[_0x07e4('0x41')]);var _0x4e5780={'where':_0x436906['where']};return db[_0x07e4('0x2d')][_0x07e4('0x22')](_0x4e5780)[_0x07e4('0x27')](function(_0x33d460){_0x44d717[_0x07e4('0x22')]=_0x33d460;if(_0x20edbd['query'][_0x07e4('0x42')]){_0x436906[_0x07e4('0x43')]=[{'all':!![]}];}return db['IntegrationReport'][_0x07e4('0x44')](_0x436906);})[_0x07e4('0x27')](function(_0x271d95){_0x44d717['rows']=_0x271d95;return _0x44d717;})[_0x07e4('0x27')](respondWithFilteredResult(_0xb5fc0c,_0x436906))['catch'](handleError(_0xb5fc0c,null));};exports[_0x07e4('0x45')]=function(_0x4f9881,_0x1f12d1){var _0x1ee5d7={'raw':![],'where':{'id':_0x4f9881[_0x07e4('0x46')]['id']}},_0x2bcd34={};_0x2bcd34[_0x07e4('0x31')]=_[_0x07e4('0x33')](db[_0x07e4('0x2d')][_0x07e4('0x2e')]);_0x2bcd34[_0x07e4('0x32')]=_[_0x07e4('0x33')](_0x4f9881[_0x07e4('0x32')]);_0x2bcd34[_0x07e4('0x34')]=_[_0x07e4('0x35')](_0x2bcd34['model'],_0x2bcd34[_0x07e4('0x32')]);_0x1ee5d7[_0x07e4('0x36')]=_[_0x07e4('0x35')](_0x2bcd34[_0x07e4('0x31')],qs[_0x07e4('0x37')](_0x4f9881[_0x07e4('0x32')][_0x07e4('0x37')]));_0x1ee5d7[_0x07e4('0x36')]=_0x1ee5d7[_0x07e4('0x36')][_0x07e4('0x38')]?_0x1ee5d7['attributes']:_0x2bcd34[_0x07e4('0x31')];if(_0x4f9881[_0x07e4('0x32')]['includeAll']){_0x1ee5d7['include']=[{'all':!![]}];}_0x1ee5d7=_[_0x07e4('0x3f')]({},_0x1ee5d7,_0x4f9881['options']);return db['IntegrationReport'][_0x07e4('0x47')](_0x1ee5d7)['then'](handleEntityNotFound(_0x1f12d1,null))[_0x07e4('0x27')](respondWithResult(_0x1f12d1,null))['catch'](handleError(_0x1f12d1,null));};exports[_0x07e4('0x48')]=function(_0x37e7c0,_0x47c67f){return db[_0x07e4('0x2d')][_0x07e4('0x48')](_0x37e7c0[_0x07e4('0x49')],{})['then'](respondWithResult(_0x47c67f,0xc9))[_0x07e4('0x4a')](handleError(_0x47c67f,null));};exports['update']=function(_0x2d7cb7,_0xb9b381){if(_0x2d7cb7[_0x07e4('0x49')]['id']){delete _0x2d7cb7[_0x07e4('0x49')]['id'];}return db[_0x07e4('0x2d')]['find']({'where':{'id':_0x2d7cb7[_0x07e4('0x46')]['id']}})[_0x07e4('0x27')](handleEntityNotFound(_0xb9b381,null))['then'](saveUpdates(_0x2d7cb7['body'],null))[_0x07e4('0x27')](respondWithResult(_0xb9b381,null))[_0x07e4('0x4a')](handleError(_0xb9b381,null));};exports[_0x07e4('0x28')]=function(_0x52a133,_0x54e442){return db[_0x07e4('0x2d')][_0x07e4('0x47')]({'where':{'id':_0x52a133[_0x07e4('0x46')]['id']}})[_0x07e4('0x27')](handleEntityNotFound(_0x54e442,null))[_0x07e4('0x27')](removeEntity(_0x54e442,null))['catch'](handleError(_0x54e442,null));};exports['describe']=function(_0x56ef35,_0x4bfa69){return db[_0x07e4('0x2d')]['describe']()[_0x07e4('0x27')](respondWithResult(_0x4bfa69,null))[_0x07e4('0x4a')](handleError(_0x4bfa69,null));};
\ No newline at end of file
+var _0x5f40=['merge','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','end','stack','name','send','index','map','IntegrationReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x5f40,0x1d5));var _0x05f4=function(_0x3a1534,_0x3a9e25){_0x3a1534=_0x3a1534-0x0;var _0x4217bd=_0x5f40[_0x3a1534];return _0x4217bd;};'use strict';var emlformat=require(_0x05f4('0x0'));var rimraf=require(_0x05f4('0x1'));var zipdir=require(_0x05f4('0x2'));var jsonpatch=require(_0x05f4('0x3'));var rp=require(_0x05f4('0x4'));var moment=require(_0x05f4('0x5'));var BPromise=require(_0x05f4('0x6'));var Mustache=require(_0x05f4('0x7'));var util=require('util');var path=require(_0x05f4('0x8'));var sox=require(_0x05f4('0x9'));var csv=require(_0x05f4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x05f4('0xb'));var _=require(_0x05f4('0xc'));var squel=require(_0x05f4('0xd'));var crypto=require(_0x05f4('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x05f4('0xf'));var toCsv=require(_0x05f4('0xa'));var querystring=require(_0x05f4('0x10'));var Papa=require(_0x05f4('0x11'));var Redis=require(_0x05f4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x05f4('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x05f4('0x14'))(_0x05f4('0x15'));var utils=require(_0x05f4('0x16'));var config=require(_0x05f4('0x17'));var licenseUtil=require(_0x05f4('0x18'));var db=require(_0x05f4('0x19'))['db'];function respondWithStatusCode(_0x3a8fe5,_0x31f7e2){_0x31f7e2=_0x31f7e2||0xcc;return function(_0x297695){if(_0x297695){return _0x3a8fe5[_0x05f4('0x1a')](_0x31f7e2);}return _0x3a8fe5[_0x05f4('0x1b')](_0x31f7e2)['end']();};}function respondWithResult(_0x33f1cc,_0x254e2e){_0x254e2e=_0x254e2e||0xc8;return function(_0x28ee31){if(_0x28ee31){return _0x33f1cc[_0x05f4('0x1b')](_0x254e2e)['json'](_0x28ee31);}};}function respondWithFilteredResult(_0x104553,_0x2aed41){return function(_0x449129){if(_0x449129){var _0x13d2f3=typeof _0x2aed41[_0x05f4('0x1c')]===_0x05f4('0x1d')&&typeof _0x2aed41[_0x05f4('0x1e')]===_0x05f4('0x1d');var _0x5b1f33=_0x449129[_0x05f4('0x1f')];var _0x312cab=_0x13d2f3?0x0:_0x2aed41[_0x05f4('0x1c')];var _0x2efb34=_0x13d2f3?_0x449129[_0x05f4('0x1f')]:_0x2aed41['offset']+_0x2aed41[_0x05f4('0x1e')];var _0x3b5f2f;if(_0x2efb34>=_0x5b1f33){_0x2efb34=_0x5b1f33;_0x3b5f2f=0xc8;}else{_0x3b5f2f=0xce;}_0x104553[_0x05f4('0x1b')](_0x3b5f2f);return _0x104553['set'](_0x05f4('0x20'),_0x312cab+'-'+_0x2efb34+'/'+_0x5b1f33)[_0x05f4('0x21')](_0x449129);}return null;};}function patchUpdates(_0x40ed95){return function(_0x552142){try{jsonpatch[_0x05f4('0x22')](_0x552142,_0x40ed95,!![]);}catch(_0xb09a9e){return BPromise[_0x05f4('0x23')](_0xb09a9e);}return _0x552142['save']();};}function saveUpdates(_0x3c1fb9,_0xb444ea){return function(_0x33835b){if(_0x33835b){return _0x33835b[_0x05f4('0x24')](_0x3c1fb9)[_0x05f4('0x25')](function(_0x1cd706){return _0x1cd706;});}return null;};}function removeEntity(_0x37e151,_0x1f59c1){return function(_0x5a1e12){if(_0x5a1e12){return _0x5a1e12['destroy']()[_0x05f4('0x25')](function(){_0x37e151[_0x05f4('0x1b')](0xcc)[_0x05f4('0x26')]();});}};}function handleEntityNotFound(_0x598690,_0x181199){return function(_0x580e62){if(!_0x580e62){_0x598690['sendStatus'](0x194);}return _0x580e62;};}function handleError(_0x202c17,_0x3db5ec){_0x3db5ec=_0x3db5ec||0x1f4;return function(_0x311d3f){logger['error'](_0x311d3f[_0x05f4('0x27')]);if(_0x311d3f[_0x05f4('0x28')]){delete _0x311d3f['name'];}_0x202c17[_0x05f4('0x1b')](_0x3db5ec)[_0x05f4('0x29')](_0x311d3f);};}exports[_0x05f4('0x2a')]=function(_0x5e55b6,_0x4e2e09){var _0x510205={},_0x48703b={},_0x273be2={'count':0x0,'rows':[]};var _0xdb7ed3=_[_0x05f4('0x2b')](db[_0x05f4('0x2c')]['rawAttributes'],function(_0x1c75b4){return{'name':_0x1c75b4[_0x05f4('0x2d')],'type':_0x1c75b4[_0x05f4('0x2e')][_0x05f4('0x2f')]};});_0x48703b[_0x05f4('0x30')]=_[_0x05f4('0x2b')](_0xdb7ed3,'name');_0x48703b[_0x05f4('0x31')]=_[_0x05f4('0x32')](_0x5e55b6[_0x05f4('0x31')]);_0x48703b['filters']=_[_0x05f4('0x33')](_0x48703b[_0x05f4('0x30')],_0x48703b[_0x05f4('0x31')]);_0x510205[_0x05f4('0x34')]=_[_0x05f4('0x33')](_0x48703b[_0x05f4('0x30')],qs['fields'](_0x5e55b6['query'][_0x05f4('0x35')]));_0x510205['attributes']=_0x510205[_0x05f4('0x34')][_0x05f4('0x36')]?_0x510205[_0x05f4('0x34')]:_0x48703b[_0x05f4('0x30')];if(!_0x5e55b6['query']['hasOwnProperty'](_0x05f4('0x37'))){_0x510205['limit']=qs[_0x05f4('0x1e')](_0x5e55b6[_0x05f4('0x31')]['limit']);_0x510205['offset']=qs[_0x05f4('0x1c')](_0x5e55b6['query'][_0x05f4('0x1c')]);}_0x510205[_0x05f4('0x38')]=qs[_0x05f4('0x39')](_0x5e55b6[_0x05f4('0x31')][_0x05f4('0x39')]);_0x510205[_0x05f4('0x3a')]=qs[_0x05f4('0x3b')](_[_0x05f4('0x3c')](_0x5e55b6['query'],_0x48703b[_0x05f4('0x3b')]),_0xdb7ed3);if(_0x5e55b6['query'][_0x05f4('0x3d')]){_0x510205[_0x05f4('0x3a')]=_['merge'](_0x510205[_0x05f4('0x3a')],{'$or':_[_0x05f4('0x2b')](_0xdb7ed3,function(_0x55f4d5){if(_0x55f4d5[_0x05f4('0x2e')]!==_0x05f4('0x3e')){var _0x35bc90={};_0x35bc90[_0x55f4d5['name']]={'$like':'%'+_0x5e55b6[_0x05f4('0x31')][_0x05f4('0x3d')]+'%'};return _0x35bc90;}})});}_0x510205=_[_0x05f4('0x3f')]({},_0x510205,_0x5e55b6['options']);var _0x38ce08={'where':_0x510205['where']};return db[_0x05f4('0x2c')][_0x05f4('0x1f')](_0x38ce08)[_0x05f4('0x25')](function(_0x111b2d){_0x273be2['count']=_0x111b2d;if(_0x5e55b6['query'][_0x05f4('0x40')]){_0x510205[_0x05f4('0x41')]=[{'all':!![]}];}return db[_0x05f4('0x2c')][_0x05f4('0x42')](_0x510205);})['then'](function(_0x117aac){_0x273be2['rows']=_0x117aac;return _0x273be2;})[_0x05f4('0x25')](respondWithFilteredResult(_0x4e2e09,_0x510205))[_0x05f4('0x43')](handleError(_0x4e2e09,null));};exports[_0x05f4('0x44')]=function(_0x3ed666,_0x30aae7){var _0x38a234={'raw':![],'where':{'id':_0x3ed666['params']['id']}},_0x59a8df={};_0x59a8df[_0x05f4('0x30')]=_['keys'](db['IntegrationReport'][_0x05f4('0x45')]);_0x59a8df[_0x05f4('0x31')]=_[_0x05f4('0x32')](_0x3ed666[_0x05f4('0x31')]);_0x59a8df[_0x05f4('0x3b')]=_[_0x05f4('0x33')](_0x59a8df[_0x05f4('0x30')],_0x59a8df[_0x05f4('0x31')]);_0x38a234[_0x05f4('0x34')]=_[_0x05f4('0x33')](_0x59a8df['model'],qs[_0x05f4('0x35')](_0x3ed666[_0x05f4('0x31')][_0x05f4('0x35')]));_0x38a234['attributes']=_0x38a234[_0x05f4('0x34')][_0x05f4('0x36')]?_0x38a234[_0x05f4('0x34')]:_0x59a8df[_0x05f4('0x30')];if(_0x3ed666['query'][_0x05f4('0x40')]){_0x38a234[_0x05f4('0x41')]=[{'all':!![]}];}_0x38a234=_['merge']({},_0x38a234,_0x3ed666['options']);return db[_0x05f4('0x2c')][_0x05f4('0x46')](_0x38a234)[_0x05f4('0x25')](handleEntityNotFound(_0x30aae7,null))['then'](respondWithResult(_0x30aae7,null))[_0x05f4('0x43')](handleError(_0x30aae7,null));};exports[_0x05f4('0x47')]=function(_0x1e5614,_0x50a2ea){return db[_0x05f4('0x2c')]['create'](_0x1e5614[_0x05f4('0x48')],{})[_0x05f4('0x25')](respondWithResult(_0x50a2ea,0xc9))[_0x05f4('0x43')](handleError(_0x50a2ea,null));};exports['update']=function(_0x2af402,_0x4a9532){if(_0x2af402[_0x05f4('0x48')]['id']){delete _0x2af402['body']['id'];}return db['IntegrationReport'][_0x05f4('0x46')]({'where':{'id':_0x2af402[_0x05f4('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a9532,null))[_0x05f4('0x25')](saveUpdates(_0x2af402[_0x05f4('0x48')],null))[_0x05f4('0x25')](respondWithResult(_0x4a9532,null))['catch'](handleError(_0x4a9532,null));};exports[_0x05f4('0x4a')]=function(_0x8e0014,_0x69cc46){return db[_0x05f4('0x2c')][_0x05f4('0x46')]({'where':{'id':_0x8e0014[_0x05f4('0x49')]['id']}})['then'](handleEntityNotFound(_0x69cc46,null))['then'](removeEntity(_0x69cc46,null))[_0x05f4('0x43')](handleError(_0x69cc46,null));};exports['describe']=function(_0xab4e4,_0x2167bb){return db[_0x05f4('0x2c')][_0x05f4('0x4b')]()[_0x05f4('0x25')](respondWithResult(_0x2167bb,null))['catch'](handleError(_0x2167bb,null));};
\ No newline at end of file
index 4f8add5..a1c3781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9958=['define','report_integration','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x9958,0x141));var _0x8995=function(_0x50fcf3,_0x2090b3){_0x50fcf3=_0x50fcf3-0x0;var _0x3a66f4=_0x9958[_0x50fcf3];return _0x3a66f4;};'use strict';var _=require('lodash');var util=require(_0x8995('0x0'));var logger=require(_0x8995('0x1'))(_0x8995('0x2'));var moment=require(_0x8995('0x3'));var BPromise=require('bluebird');var rp=require(_0x8995('0x4'));var fs=require('fs');var path=require(_0x8995('0x5'));var rimraf=require(_0x8995('0x6'));var config=require(_0x8995('0x7'));var attributes=require(_0x8995('0x8'));module['exports']=function(_0x3eca9a,_0x1e107f){return _0x3eca9a[_0x8995('0x9')]('IntegrationReport',attributes,{'tableName':_0x8995('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51f3=['./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3ca1f3,_0x3e3d5e){var _0x357da7=function(_0x1c2f5b){while(--_0x1c2f5b){_0x3ca1f3['push'](_0x3ca1f3['shift']());}};_0x357da7(++_0x3e3d5e);}(_0x51f3,0x19d));var _0x351f=function(_0x3b3235,_0x345e3c){_0x3b3235=_0x3b3235-0x0;var _0x15b7ad=_0x51f3[_0x3b3235];return _0x15b7ad;};'use strict';var _=require(_0x351f('0x0'));var util=require(_0x351f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x351f('0x2'));var BPromise=require('bluebird');var rp=require(_0x351f('0x3'));var fs=require('fs');var path=require(_0x351f('0x4'));var rimraf=require(_0x351f('0x5'));var config=require(_0x351f('0x6'));var attributes=require(_0x351f('0x7'));module[_0x351f('0x8')]=function(_0xb647e4,_0x297717){return _0xb647e4[_0x351f('0x9')](_0x351f('0xa'),attributes,{'tableName':_0x351f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e413fc..60793b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x2fd637,_0x2eb80d){var _0x383d2a=function(_0x12c05e){while(--_0x12c05e){_0x2fd637['push'](_0x2fd637['shift']());}};_0x383d2a(++_0x2eb80d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x145ff3,_0x2251d9){var _0x478ce0=function(_0x1a336a){while(--_0x1a336a){_0x145ff3['push'](_0x145ff3['shift']());}};_0x478ce0(++_0x2251d9);}(_0x57ca,0x108));var _0xa57c=function(_0x70084d,_0x1b7cac){_0x70084d=_0x70084d-0x0;var _0x50f523=_0x57ca[_0x70084d];return _0x50f523;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index 0de435c..8f414ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','/:id','getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','connect-timeout','express','Router'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x5fdc,0xcb));var _0xc5fd=function(_0x4646f1,_0x4cce1d){_0x4646f1=_0x4646f1-0x0;var _0x4126e6=_0x5fdc[_0x4646f1];return _0x4126e6;};'use strict';var multer=require(_0xc5fd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc5fd('0x1'));var express=require(_0xc5fd('0x2'));var router=express[_0xc5fd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc5fd('0x4'));var interaction=require(_0xc5fd('0x5'));var config=require(_0xc5fd('0x6'));var controller=require(_0xc5fd('0x7'));router[_0xc5fd('0x8')]('/',auth[_0xc5fd('0x9')](),controller[_0xc5fd('0xa')]);router[_0xc5fd('0x8')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller['show']);router[_0xc5fd('0x8')]('/:id/sub_intervals',auth[_0xc5fd('0x9')](),controller[_0xc5fd('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc5fd('0xd')]);router[_0xc5fd('0xe')]('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0xc5fd('0xf')]);router['post'](_0xc5fd('0x10'),auth['isAuthenticated'](),controller[_0xc5fd('0x11')]);router[_0xc5fd('0x12')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller[_0xc5fd('0x13')]);router[_0xc5fd('0x14')](_0xc5fd('0xb'),auth[_0xc5fd('0x9')](),controller[_0xc5fd('0x15')]);module[_0xc5fd('0x16')]=router;
\ No newline at end of file
+var _0x0fcd=['isAuthenticated','/:id/sub_intervals','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','get','index'];(function(_0x5216e0,_0x4f8cb9){var _0x5b3f40=function(_0x30c832){while(--_0x30c832){_0x5216e0['push'](_0x5216e0['shift']());}};_0x5b3f40(++_0x4f8cb9);}(_0x0fcd,0x129));var _0xd0fc=function(_0x17a9b7,_0x218162){_0x17a9b7=_0x17a9b7-0x0;var _0x4c9ea1=_0x0fcd[_0x17a9b7];return _0x4c9ea1;};'use strict';var multer=require('multer');var util=require(_0xd0fc('0x0'));var path=require(_0xd0fc('0x1'));var timeout=require(_0xd0fc('0x2'));var express=require(_0xd0fc('0x3'));var router=express[_0xd0fc('0x4')]();var fs_extra=require(_0xd0fc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd0fc('0x6'));var config=require(_0xd0fc('0x7'));var controller=require(_0xd0fc('0x8'));router[_0xd0fc('0x9')]('/',auth['isAuthenticated'](),controller[_0xd0fc('0xa')]);router['get']('/:id',auth[_0xd0fc('0xb')](),controller['show']);router[_0xd0fc('0x9')](_0xd0fc('0xc'),auth[_0xd0fc('0xb')](),controller['getIntervals']);router[_0xd0fc('0xd')]('/',auth[_0xd0fc('0xb')](),controller['create']);router['post'](_0xd0fc('0xc'),auth[_0xd0fc('0xb')](),controller[_0xd0fc('0xe')]);router['post'](_0xd0fc('0xf'),auth['isAuthenticated'](),controller[_0xd0fc('0x10')]);router[_0xd0fc('0x11')]('/:id',auth[_0xd0fc('0xb')](),controller[_0xd0fc('0x12')]);router[_0xd0fc('0x13')]('/:id',auth[_0xd0fc('0xb')](),controller[_0xd0fc('0x14')]);module[_0xd0fc('0x15')]=router;
\ No newline at end of file
index d45755a..636948f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba4=['exports','STRING','sequelize'];(function(_0x39475e,_0x391c79){var _0x56658f=function(_0x12b869){while(--_0x12b869){_0x39475e['push'](_0x39475e['shift']());}};_0x56658f(++_0x391c79);}(_0x2ba4,0x1c4));var _0x42ba=function(_0x49778f,_0x1f5b68){_0x49778f=_0x49778f-0x0;var _0x435b1a=_0x2ba4[_0x49778f];return _0x435b1a;};'use strict';var Sequelize=require(_0x42ba('0x0'));module[_0x42ba('0x1')]={'name':{'type':Sequelize[_0x42ba('0x2')]},'description':{'type':Sequelize[_0x42ba('0x2')]},'interval':{'type':Sequelize[_0x42ba('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xd565=['STRING','sequelize','exports'];(function(_0x2dcb3b,_0x2981bc){var _0x5c8015=function(_0xa8f3c8){while(--_0xa8f3c8){_0x2dcb3b['push'](_0x2dcb3b['shift']());}};_0x5c8015(++_0x2981bc);}(_0xd565,0xaf));var _0x5d56=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd565[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x5d56('0x0'));module[_0x5d56('0x1')]={'name':{'type':Sequelize[_0x5d56('0x2')]},'description':{'type':Sequelize[_0x5d56('0x2')]},'interval':{'type':Sequelize[_0x5d56('0x2')],'allowNull':!![]}};
\ No newline at end of file
index f5027cf..831f3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3777=['filter','merge','options','includeAll','include','findAll','catch','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Intervals','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','send','index','Interval','rawAttributes','fieldName','type','key','model','map','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x2c10fb,_0x380e1b){var _0x23e4c0=function(_0x4fdea5){while(--_0x4fdea5){_0x2c10fb['push'](_0x2c10fb['shift']());}};_0x23e4c0(++_0x380e1b);}(_0x3777,0x194));var _0x7377=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3777[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0x7377('0x0'));var rimraf=require(_0x7377('0x1'));var zipdir=require(_0x7377('0x2'));var jsonpatch=require(_0x7377('0x3'));var rp=require(_0x7377('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7377('0x5'));var path=require(_0x7377('0x6'));var sox=require(_0x7377('0x7'));var csv=require(_0x7377('0x8'));var ejs=require(_0x7377('0x9'));var fs=require('fs');var fs_extra=require(_0x7377('0xa'));var _=require(_0x7377('0xb'));var squel=require(_0x7377('0xc'));var crypto=require(_0x7377('0xd'));var jsforce=require(_0x7377('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7377('0x8'));var querystring=require(_0x7377('0xf'));var Papa=require(_0x7377('0x10'));var Redis=require(_0x7377('0x11'));var authService=require(_0x7377('0x12'));var qs=require(_0x7377('0x13'));var as=require(_0x7377('0x14'));var hardwareService=require(_0x7377('0x15'));var logger=require(_0x7377('0x16'))(_0x7377('0x17'));var utils=require(_0x7377('0x18'));var config=require(_0x7377('0x19'));var licenseUtil=require(_0x7377('0x1a'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x368983,_0x2f0dad){_0x2f0dad=_0x2f0dad||0xcc;return function(_0x427586){if(_0x427586){return _0x368983[_0x7377('0x1b')](_0x2f0dad);}return _0x368983[_0x7377('0x1c')](_0x2f0dad)[_0x7377('0x1d')]();};}function respondWithResult(_0x461646,_0x2eb108){_0x2eb108=_0x2eb108||0xc8;return function(_0x143634){if(_0x143634){return _0x461646[_0x7377('0x1c')](_0x2eb108)[_0x7377('0x1e')](_0x143634);}};}function respondWithFilteredResult(_0x342bfe,_0x5d3067){return function(_0x14e219){if(_0x14e219){var _0x16cc44=typeof _0x5d3067[_0x7377('0x1f')]===_0x7377('0x20')&&typeof _0x5d3067[_0x7377('0x21')]===_0x7377('0x20');var _0x3c6506=_0x14e219['count'];var _0x45dc79=_0x16cc44?0x0:_0x5d3067['offset'];var _0x4f987b=_0x16cc44?_0x14e219[_0x7377('0x22')]:_0x5d3067[_0x7377('0x1f')]+_0x5d3067[_0x7377('0x21')];var _0x3070b;if(_0x4f987b>=_0x3c6506){_0x4f987b=_0x3c6506;_0x3070b=0xc8;}else{_0x3070b=0xce;}_0x342bfe[_0x7377('0x1c')](_0x3070b);return _0x342bfe['set'](_0x7377('0x23'),_0x45dc79+'-'+_0x4f987b+'/'+_0x3c6506)[_0x7377('0x1e')](_0x14e219);}return null;};}function patchUpdates(_0x1d621d){return function(_0x52fccb){try{jsonpatch['apply'](_0x52fccb,_0x1d621d,!![]);}catch(_0x4a1249){return BPromise[_0x7377('0x24')](_0x4a1249);}return _0x52fccb[_0x7377('0x25')]();};}function saveUpdates(_0x4d187a,_0x4a2359){return function(_0x10b6d2){if(_0x10b6d2){return _0x10b6d2[_0x7377('0x26')](_0x4d187a)[_0x7377('0x27')](function(_0x21267a){return _0x21267a;});}return null;};}function removeEntity(_0xb76f43,_0x104214){return function(_0x3709d6){if(_0x3709d6){return _0x3709d6[_0x7377('0x28')]()[_0x7377('0x27')](function(){var _0x1f27c6=_0x3709d6[_0x7377('0x29')]({'plain':!![]});var _0x1d209d='Intervals';return db[_0x7377('0x2a')]['destroy']({'where':{'type':_0x1d209d,'resourceId':_0x1f27c6['id']}})[_0x7377('0x27')](function(){return _0x3709d6;});})[_0x7377('0x27')](function(){_0xb76f43[_0x7377('0x1c')](0xcc)[_0x7377('0x1d')]();});}};}function handleEntityNotFound(_0x8a9336,_0x263b4c){return function(_0xf3e703){if(!_0xf3e703){_0x8a9336[_0x7377('0x1b')](0x194);}return _0xf3e703;};}function handleError(_0x3c2e35,_0x514b21){_0x514b21=_0x514b21||0x1f4;return function(_0x57eb96){logger['error'](_0x57eb96['stack']);if(_0x57eb96['name']){delete _0x57eb96['name'];}_0x3c2e35['status'](_0x514b21)[_0x7377('0x2b')](_0x57eb96);};}exports[_0x7377('0x2c')]=function(_0x5a7763,_0xf8841d){var _0x440ee1={},_0x2a1303={},_0x51a6e8={'count':0x0,'rows':[]};var _0x5b1de8=_['map'](db[_0x7377('0x2d')][_0x7377('0x2e')],function(_0x55a5ce){return{'name':_0x55a5ce[_0x7377('0x2f')],'type':_0x55a5ce[_0x7377('0x30')][_0x7377('0x31')]};});_0x2a1303[_0x7377('0x32')]=_[_0x7377('0x33')](_0x5b1de8,_0x7377('0x34'));_0x2a1303[_0x7377('0x35')]=_[_0x7377('0x36')](_0x5a7763[_0x7377('0x35')]);_0x2a1303['filters']=_[_0x7377('0x37')](_0x2a1303['model'],_0x2a1303[_0x7377('0x35')]);_0x440ee1[_0x7377('0x38')]=_[_0x7377('0x37')](_0x2a1303[_0x7377('0x32')],qs[_0x7377('0x39')](_0x5a7763[_0x7377('0x35')][_0x7377('0x39')]));_0x440ee1[_0x7377('0x38')]=_0x440ee1[_0x7377('0x38')][_0x7377('0x3a')]?_0x440ee1[_0x7377('0x38')]:_0x2a1303[_0x7377('0x32')];if(!_0x5a7763['query'][_0x7377('0x3b')](_0x7377('0x3c'))){_0x440ee1['limit']=qs[_0x7377('0x21')](_0x5a7763['query'][_0x7377('0x21')]);_0x440ee1[_0x7377('0x1f')]=qs[_0x7377('0x1f')](_0x5a7763['query'][_0x7377('0x1f')]);}_0x440ee1[_0x7377('0x3d')]=qs['sort'](_0x5a7763[_0x7377('0x35')][_0x7377('0x3e')]);_0x440ee1[_0x7377('0x3f')]=qs[_0x7377('0x40')](_[_0x7377('0x41')](_0x5a7763[_0x7377('0x35')],_0x2a1303['filters']),_0x5b1de8);if(_0x5a7763[_0x7377('0x35')][_0x7377('0x42')]){_0x440ee1[_0x7377('0x3f')]=_[_0x7377('0x43')](_0x440ee1['where'],{'$or':_[_0x7377('0x33')](_0x5b1de8,function(_0x32e31e){if(_0x32e31e[_0x7377('0x30')]!=='VIRTUAL'){var _0xe00f6a={};_0xe00f6a[_0x32e31e[_0x7377('0x34')]]={'$like':'%'+_0x5a7763['query'][_0x7377('0x42')]+'%'};return _0xe00f6a;}})});}_0x440ee1=_['merge']({},_0x440ee1,_0x5a7763[_0x7377('0x44')]);var _0x354116={'where':_0x440ee1[_0x7377('0x3f')]};return db['Interval']['count'](_0x354116)[_0x7377('0x27')](function(_0x4373f4){_0x51a6e8[_0x7377('0x22')]=_0x4373f4;if(_0x5a7763[_0x7377('0x35')][_0x7377('0x45')]){_0x440ee1[_0x7377('0x46')]=[{'all':!![]}];}return db[_0x7377('0x2d')][_0x7377('0x47')](_0x440ee1);})[_0x7377('0x27')](function(_0x5d0fe8){_0x51a6e8['rows']=_0x5d0fe8;return _0x51a6e8;})[_0x7377('0x27')](respondWithFilteredResult(_0xf8841d,_0x440ee1))[_0x7377('0x48')](handleError(_0xf8841d,null));};exports[_0x7377('0x49')]=function(_0x3c5bef,_0xfea7e){var _0x385504={'raw':!![],'where':{'id':_0x3c5bef[_0x7377('0x4a')]['id']}},_0x37c6c0={};_0x37c6c0[_0x7377('0x32')]=_[_0x7377('0x36')](db[_0x7377('0x2d')]['rawAttributes']);_0x37c6c0[_0x7377('0x35')]=_[_0x7377('0x36')](_0x3c5bef[_0x7377('0x35')]);_0x37c6c0['filters']=_[_0x7377('0x37')](_0x37c6c0[_0x7377('0x32')],_0x37c6c0[_0x7377('0x35')]);_0x385504['attributes']=_['intersection'](_0x37c6c0[_0x7377('0x32')],qs[_0x7377('0x39')](_0x3c5bef['query'][_0x7377('0x39')]));_0x385504[_0x7377('0x38')]=_0x385504[_0x7377('0x38')][_0x7377('0x3a')]?_0x385504[_0x7377('0x38')]:_0x37c6c0[_0x7377('0x32')];if(_0x3c5bef[_0x7377('0x35')][_0x7377('0x45')]){_0x385504[_0x7377('0x46')]=[{'all':!![]}];}_0x385504=_['merge']({},_0x385504,_0x3c5bef[_0x7377('0x44')]);return db['Interval']['find'](_0x385504)[_0x7377('0x27')](handleEntityNotFound(_0xfea7e,null))[_0x7377('0x27')](respondWithResult(_0xfea7e,null))['catch'](handleError(_0xfea7e,null));};exports[_0x7377('0x4b')]=function(_0x1b7b71,_0x2c3d46){return db[_0x7377('0x2d')][_0x7377('0x4b')](_0x1b7b71[_0x7377('0x4c')],{})[_0x7377('0x27')](function(_0x2bece0){var _0x48a7d9=_0x1b7b71['user'][_0x7377('0x29')]({'plain':!![]});if(!_0x48a7d9)throw new Error(_0x7377('0x4d'));if(_0x48a7d9[_0x7377('0x4e')]===_0x7377('0x4f')){var _0x351928=_0x2bece0[_0x7377('0x29')]({'plain':!![]});var _0x2510a1=_0x7377('0x50');return db['UserProfileSection'][_0x7377('0x51')]({'where':{'name':_0x2510a1,'userProfileId':_0x48a7d9[_0x7377('0x52')]},'raw':!![]})[_0x7377('0x27')](function(_0x4e45a1){if(_0x4e45a1&&_0x4e45a1[_0x7377('0x53')]===0x0){return db[_0x7377('0x2a')][_0x7377('0x4b')]({'name':_0x351928[_0x7377('0x34')],'resourceId':_0x351928['id'],'type':_0x4e45a1[_0x7377('0x34')],'sectionId':_0x4e45a1['id']},{})[_0x7377('0x27')](function(){return _0x2bece0;});}else{return _0x2bece0;}})[_0x7377('0x48')](function(_0x2e158b){logger[_0x7377('0x54')](_0x7377('0x55'),_0x2e158b);throw _0x2e158b;});}return _0x2bece0;})[_0x7377('0x27')](respondWithResult(_0x2c3d46,0xc9))['catch'](handleError(_0x2c3d46,null));};exports['update']=function(_0x3fbf68,_0x26251c){if(_0x3fbf68[_0x7377('0x4c')]['id']){delete _0x3fbf68[_0x7377('0x4c')]['id'];}return db[_0x7377('0x2d')]['find']({'where':{'id':_0x3fbf68[_0x7377('0x4a')]['id']}})[_0x7377('0x27')](handleEntityNotFound(_0x26251c,null))['then'](saveUpdates(_0x3fbf68[_0x7377('0x4c')],null))[_0x7377('0x27')](respondWithResult(_0x26251c,null))[_0x7377('0x48')](handleError(_0x26251c,null));};exports['destroy']=function(_0x122d26,_0x19de15){return db[_0x7377('0x2d')][_0x7377('0x51')]({'where':{'id':_0x122d26[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x19de15,null))[_0x7377('0x27')](removeEntity(_0x19de15,null))[_0x7377('0x48')](handleError(_0x19de15,null));};exports[_0x7377('0x56')]=function(_0x50c2f6,_0x3bbbee,_0x3e7281){if(_0x50c2f6[_0x7377('0x4c')]['id']){delete _0x50c2f6['body']['id'];}return db[_0x7377('0x2d')][_0x7377('0x51')]({'where':{'id':_0x50c2f6[_0x7377('0x4a')]['id']}})[_0x7377('0x27')](handleEntityNotFound(_0x3bbbee,null))[_0x7377('0x27')](function(_0x175373){if(_0x175373){_0x50c2f6[_0x7377('0x4c')][_0x7377('0x57')]=_0x175373['id'];return db[_0x7377('0x2d')][_0x7377('0x4b')](_0x50c2f6[_0x7377('0x4c')]);}})[_0x7377('0x27')](respondWithResult(_0x3bbbee,null))['catch'](handleError(_0x3bbbee,null));};exports[_0x7377('0x58')]=function(_0x56b1fd,_0x51adf3,_0x43dd37){var _0x2fbe4a={};var _0x31beb5={};var _0x3689a4;var _0x26f117;return db['Interval'][_0x7377('0x59')]({'where':{'id':_0x56b1fd[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x51adf3,null))[_0x7377('0x27')](function(_0x52f2f6){if(_0x52f2f6){_0x3689a4=_0x52f2f6;_0x31beb5[_0x7377('0x32')]=_[_0x7377('0x36')](db[_0x7377('0x2d')][_0x7377('0x2e')]);_0x31beb5[_0x7377('0x35')]=_[_0x7377('0x36')](_0x56b1fd['query']);_0x31beb5['filters']=_[_0x7377('0x37')](_0x31beb5[_0x7377('0x32')],_0x31beb5[_0x7377('0x35')]);_0x2fbe4a['attributes']=_[_0x7377('0x37')](_0x31beb5[_0x7377('0x32')],qs['fields'](_0x56b1fd[_0x7377('0x35')][_0x7377('0x39')]));_0x2fbe4a[_0x7377('0x38')]=_0x2fbe4a[_0x7377('0x38')]['length']?_0x2fbe4a[_0x7377('0x38')]:_0x31beb5[_0x7377('0x32')];_0x2fbe4a[_0x7377('0x3d')]=qs[_0x7377('0x3e')](_0x56b1fd[_0x7377('0x35')][_0x7377('0x3e')]);_0x2fbe4a[_0x7377('0x3f')]=qs[_0x7377('0x40')](_[_0x7377('0x41')](_0x56b1fd[_0x7377('0x35')],_0x31beb5['filters']));if(_0x56b1fd[_0x7377('0x35')][_0x7377('0x42')]){_0x2fbe4a[_0x7377('0x3f')]=_[_0x7377('0x43')](_0x2fbe4a['where'],{'$or':_[_0x7377('0x33')](_0x2fbe4a['attributes'],function(_0x2dcf5b){var _0x172980={};_0x172980[_0x2dcf5b]={'$like':'%'+_0x56b1fd['query'][_0x7377('0x42')]+'%'};return _0x172980;})});}_0x2fbe4a=_['merge']({},_0x2fbe4a,_0x56b1fd[_0x7377('0x44')]);return _0x3689a4[_0x7377('0x58')](_0x2fbe4a);}})[_0x7377('0x27')](function(_0x358e19){if(_0x358e19){_0x26f117=_0x358e19[_0x7377('0x3a')];if(!_0x56b1fd['query']['hasOwnProperty'](_0x7377('0x3c'))){_0x2fbe4a[_0x7377('0x21')]=qs[_0x7377('0x21')](_0x56b1fd[_0x7377('0x35')]['limit']);_0x2fbe4a[_0x7377('0x1f')]=qs[_0x7377('0x1f')](_0x56b1fd[_0x7377('0x35')][_0x7377('0x1f')]);}return _0x3689a4['getIntervals'](_0x2fbe4a);}})[_0x7377('0x27')](function(_0x1a4882){if(_0x1a4882){return _0x1a4882?{'count':_0x26f117,'rows':_0x1a4882}:null;}})['then'](respondWithResult(_0x51adf3,null))[_0x7377('0x48')](handleError(_0x51adf3,null));};exports[_0x7377('0x5a')]=function(_0x5806d9,_0x512939,_0x2f9dc7){return db[_0x7377('0x2d')][_0x7377('0x59')]({'where':{'id':_0x5806d9[_0x7377('0x4a')]['id']}})['then'](handleEntityNotFound(_0x512939,null))[_0x7377('0x27')](function(_0x4b80ef){if(_0x4b80ef){return db[_0x7377('0x5b')][_0x7377('0x5c')](function(_0x449acd){return db[_0x7377('0x2d')][_0x7377('0x28')]({'where':{'IntervalId':_0x5806d9[_0x7377('0x4a')]['id']},'transaction':_0x449acd})[_0x7377('0x27')](function(_0x2306e5){var _0x1c3370=_['map'](_0x5806d9['body'],function(_0x180c24){delete _0x180c24['id'];_0x180c24['IntervalId']=_0x5806d9[_0x7377('0x4a')]['id'];return _0x180c24;});return db['Interval'][_0x7377('0x5d')](_0x1c3370,{'transaction':_0x449acd});});})[_0x7377('0x27')](function(){return db[_0x7377('0x2d')]['findAll']({'where':{'IntervalId':_0x5806d9[_0x7377('0x4a')]['id']}});});}})['then'](respondWithResult(_0x512939,null))[_0x7377('0x48')](handleError(_0x512939,null));};
\ No newline at end of file
+var _0xcbed=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Intervals','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','IntervalId','getIntervals','findOne','addIntervals','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','ejs','lodash','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','destroy','sendStatus','error','name','send','index','map','Interval','rawAttributes','key','model','query','keys','filters','attributes'];(function(_0x21000a,_0x24c041){var _0x55a2ea=function(_0x662d04){while(--_0x662d04){_0x21000a['push'](_0x21000a['shift']());}};_0x55a2ea(++_0x24c041);}(_0xcbed,0x1cf));var _0xdcbe=function(_0x3b4d66,_0x1d1223){_0x3b4d66=_0x3b4d66-0x0;var _0x135cd1=_0xcbed[_0x3b4d66];return _0x135cd1;};'use strict';var emlformat=require(_0xdcbe('0x0'));var rimraf=require(_0xdcbe('0x1'));var zipdir=require(_0xdcbe('0x2'));var jsonpatch=require(_0xdcbe('0x3'));var rp=require(_0xdcbe('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdcbe('0x5'));var util=require('util');var path=require('path');var sox=require(_0xdcbe('0x6'));var csv=require('to-csv');var ejs=require(_0xdcbe('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdcbe('0x8'));var squel=require(_0xdcbe('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdcbe('0xa'));var toCsv=require(_0xdcbe('0xb'));var querystring=require(_0xdcbe('0xc'));var Papa=require(_0xdcbe('0xd'));var Redis=require('ioredis');var authService=require(_0xdcbe('0xe'));var qs=require(_0xdcbe('0xf'));var as=require(_0xdcbe('0x10'));var hardwareService=require(_0xdcbe('0x11'));var logger=require('../../config/logger')(_0xdcbe('0x12'));var utils=require('../../config/utils');var config=require(_0xdcbe('0x13'));var licenseUtil=require(_0xdcbe('0x14'));var db=require(_0xdcbe('0x15'))['db'];var extensions=require(_0xdcbe('0x16'));function respondWithStatusCode(_0x8a35d6,_0x57934d){_0x57934d=_0x57934d||0xcc;return function(_0x191643){if(_0x191643){return _0x8a35d6['sendStatus'](_0x57934d);}return _0x8a35d6[_0xdcbe('0x17')](_0x57934d)[_0xdcbe('0x18')]();};}function respondWithResult(_0x47fc65,_0x3209a9){_0x3209a9=_0x3209a9||0xc8;return function(_0x1dbf75){if(_0x1dbf75){return _0x47fc65[_0xdcbe('0x17')](_0x3209a9)[_0xdcbe('0x19')](_0x1dbf75);}};}function respondWithFilteredResult(_0x363ba8,_0x463752){return function(_0x5c4d19){if(_0x5c4d19){var _0x230436=typeof _0x463752['offset']===_0xdcbe('0x1a')&&typeof _0x463752[_0xdcbe('0x1b')]===_0xdcbe('0x1a');var _0xd2e53b=_0x5c4d19[_0xdcbe('0x1c')];var _0x2291f7=_0x230436?0x0:_0x463752[_0xdcbe('0x1d')];var _0xbaf4c6=_0x230436?_0x5c4d19[_0xdcbe('0x1c')]:_0x463752[_0xdcbe('0x1d')]+_0x463752[_0xdcbe('0x1b')];var _0xa80a57;if(_0xbaf4c6>=_0xd2e53b){_0xbaf4c6=_0xd2e53b;_0xa80a57=0xc8;}else{_0xa80a57=0xce;}_0x363ba8[_0xdcbe('0x17')](_0xa80a57);return _0x363ba8[_0xdcbe('0x1e')](_0xdcbe('0x1f'),_0x2291f7+'-'+_0xbaf4c6+'/'+_0xd2e53b)[_0xdcbe('0x19')](_0x5c4d19);}return null;};}function patchUpdates(_0x2ce6d8){return function(_0x222dff){try{jsonpatch[_0xdcbe('0x20')](_0x222dff,_0x2ce6d8,!![]);}catch(_0x40cff4){return BPromise[_0xdcbe('0x21')](_0x40cff4);}return _0x222dff[_0xdcbe('0x22')]();};}function saveUpdates(_0x267b72,_0x5f1700){return function(_0x70bbd4){if(_0x70bbd4){return _0x70bbd4[_0xdcbe('0x23')](_0x267b72)[_0xdcbe('0x24')](function(_0x1b7abd){return _0x1b7abd;});}return null;};}function removeEntity(_0xa7502e,_0x332567){return function(_0x4b21ea){if(_0x4b21ea){return _0x4b21ea['destroy']()[_0xdcbe('0x24')](function(){var _0x40782d=_0x4b21ea[_0xdcbe('0x25')]({'plain':!![]});var _0x45a426='Intervals';return db['UserProfileResource'][_0xdcbe('0x26')]({'where':{'type':_0x45a426,'resourceId':_0x40782d['id']}})['then'](function(){return _0x4b21ea;});})['then'](function(){_0xa7502e[_0xdcbe('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x33f452,_0xf3aee6){return function(_0x591b6f){if(!_0x591b6f){_0x33f452[_0xdcbe('0x27')](0x194);}return _0x591b6f;};}function handleError(_0x3c2e15,_0x567e31){_0x567e31=_0x567e31||0x1f4;return function(_0x88ebdc){logger[_0xdcbe('0x28')](_0x88ebdc['stack']);if(_0x88ebdc[_0xdcbe('0x29')]){delete _0x88ebdc['name'];}_0x3c2e15[_0xdcbe('0x17')](_0x567e31)[_0xdcbe('0x2a')](_0x88ebdc);};}exports[_0xdcbe('0x2b')]=function(_0x31c2a0,_0x3e7d6e){var _0x3e4735={},_0x58de0f={},_0x58b294={'count':0x0,'rows':[]};var _0x5d2a37=_[_0xdcbe('0x2c')](db[_0xdcbe('0x2d')][_0xdcbe('0x2e')],function(_0x4525d1){return{'name':_0x4525d1['fieldName'],'type':_0x4525d1['type'][_0xdcbe('0x2f')]};});_0x58de0f[_0xdcbe('0x30')]=_['map'](_0x5d2a37,_0xdcbe('0x29'));_0x58de0f[_0xdcbe('0x31')]=_[_0xdcbe('0x32')](_0x31c2a0['query']);_0x58de0f[_0xdcbe('0x33')]=_['intersection'](_0x58de0f[_0xdcbe('0x30')],_0x58de0f[_0xdcbe('0x31')]);_0x3e4735[_0xdcbe('0x34')]=_[_0xdcbe('0x35')](_0x58de0f['model'],qs[_0xdcbe('0x36')](_0x31c2a0[_0xdcbe('0x31')][_0xdcbe('0x36')]));_0x3e4735[_0xdcbe('0x34')]=_0x3e4735[_0xdcbe('0x34')][_0xdcbe('0x37')]?_0x3e4735[_0xdcbe('0x34')]:_0x58de0f[_0xdcbe('0x30')];if(!_0x31c2a0[_0xdcbe('0x31')][_0xdcbe('0x38')](_0xdcbe('0x39'))){_0x3e4735[_0xdcbe('0x1b')]=qs[_0xdcbe('0x1b')](_0x31c2a0[_0xdcbe('0x31')]['limit']);_0x3e4735['offset']=qs[_0xdcbe('0x1d')](_0x31c2a0['query'][_0xdcbe('0x1d')]);}_0x3e4735[_0xdcbe('0x3a')]=qs[_0xdcbe('0x3b')](_0x31c2a0[_0xdcbe('0x31')]['sort']);_0x3e4735[_0xdcbe('0x3c')]=qs[_0xdcbe('0x33')](_[_0xdcbe('0x3d')](_0x31c2a0[_0xdcbe('0x31')],_0x58de0f[_0xdcbe('0x33')]),_0x5d2a37);if(_0x31c2a0['query'][_0xdcbe('0x3e')]){_0x3e4735[_0xdcbe('0x3c')]=_[_0xdcbe('0x3f')](_0x3e4735[_0xdcbe('0x3c')],{'$or':_[_0xdcbe('0x2c')](_0x5d2a37,function(_0x22ebd5){if(_0x22ebd5['type']!==_0xdcbe('0x40')){var _0xc0c2de={};_0xc0c2de[_0x22ebd5[_0xdcbe('0x29')]]={'$like':'%'+_0x31c2a0[_0xdcbe('0x31')][_0xdcbe('0x3e')]+'%'};return _0xc0c2de;}})});}_0x3e4735=_[_0xdcbe('0x3f')]({},_0x3e4735,_0x31c2a0[_0xdcbe('0x41')]);var _0x456e8c={'where':_0x3e4735[_0xdcbe('0x3c')]};return db[_0xdcbe('0x2d')]['count'](_0x456e8c)[_0xdcbe('0x24')](function(_0x2f0eb7){_0x58b294[_0xdcbe('0x1c')]=_0x2f0eb7;if(_0x31c2a0['query'][_0xdcbe('0x42')]){_0x3e4735[_0xdcbe('0x43')]=[{'all':!![]}];}return db[_0xdcbe('0x2d')][_0xdcbe('0x44')](_0x3e4735);})[_0xdcbe('0x24')](function(_0x353b69){_0x58b294['rows']=_0x353b69;return _0x58b294;})[_0xdcbe('0x24')](respondWithFilteredResult(_0x3e7d6e,_0x3e4735))[_0xdcbe('0x45')](handleError(_0x3e7d6e,null));};exports[_0xdcbe('0x46')]=function(_0x4b985b,_0x4dbb38){var _0x3ad315={'raw':!![],'where':{'id':_0x4b985b[_0xdcbe('0x47')]['id']}},_0x46e8aa={};_0x46e8aa['model']=_['keys'](db['Interval'][_0xdcbe('0x2e')]);_0x46e8aa[_0xdcbe('0x31')]=_['keys'](_0x4b985b['query']);_0x46e8aa['filters']=_['intersection'](_0x46e8aa[_0xdcbe('0x30')],_0x46e8aa[_0xdcbe('0x31')]);_0x3ad315['attributes']=_[_0xdcbe('0x35')](_0x46e8aa['model'],qs[_0xdcbe('0x36')](_0x4b985b['query'][_0xdcbe('0x36')]));_0x3ad315[_0xdcbe('0x34')]=_0x3ad315['attributes'][_0xdcbe('0x37')]?_0x3ad315[_0xdcbe('0x34')]:_0x46e8aa[_0xdcbe('0x30')];if(_0x4b985b['query'][_0xdcbe('0x42')]){_0x3ad315[_0xdcbe('0x43')]=[{'all':!![]}];}_0x3ad315=_[_0xdcbe('0x3f')]({},_0x3ad315,_0x4b985b[_0xdcbe('0x41')]);return db[_0xdcbe('0x2d')][_0xdcbe('0x48')](_0x3ad315)[_0xdcbe('0x24')](handleEntityNotFound(_0x4dbb38,null))[_0xdcbe('0x24')](respondWithResult(_0x4dbb38,null))[_0xdcbe('0x45')](handleError(_0x4dbb38,null));};exports[_0xdcbe('0x49')]=function(_0x5bcb73,_0x4bcd38){return db[_0xdcbe('0x2d')]['create'](_0x5bcb73[_0xdcbe('0x4a')],{})['then'](function(_0x455784){var _0x36abd4=_0x5bcb73['user'][_0xdcbe('0x25')]({'plain':!![]});if(!_0x36abd4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36abd4['role']===_0xdcbe('0x4b')){var _0x4fdd80=_0x455784[_0xdcbe('0x25')]({'plain':!![]});var _0x1d30d7=_0xdcbe('0x4c');return db[_0xdcbe('0x4d')]['find']({'where':{'name':_0x1d30d7,'userProfileId':_0x36abd4[_0xdcbe('0x4e')]},'raw':!![]})[_0xdcbe('0x24')](function(_0x716880){if(_0x716880&&_0x716880[_0xdcbe('0x4f')]===0x0){return db[_0xdcbe('0x50')][_0xdcbe('0x49')]({'name':_0x4fdd80[_0xdcbe('0x29')],'resourceId':_0x4fdd80['id'],'type':_0x716880['name'],'sectionId':_0x716880['id']},{})[_0xdcbe('0x24')](function(){return _0x455784;});}else{return _0x455784;}})[_0xdcbe('0x45')](function(_0x255db0){logger[_0xdcbe('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x255db0);throw _0x255db0;});}return _0x455784;})['then'](respondWithResult(_0x4bcd38,0xc9))[_0xdcbe('0x45')](handleError(_0x4bcd38,null));};exports['update']=function(_0x3b9e7e,_0x2f8a8e){if(_0x3b9e7e[_0xdcbe('0x4a')]['id']){delete _0x3b9e7e[_0xdcbe('0x4a')]['id'];}return db[_0xdcbe('0x2d')][_0xdcbe('0x48')]({'where':{'id':_0x3b9e7e['params']['id']}})[_0xdcbe('0x24')](handleEntityNotFound(_0x2f8a8e,null))['then'](saveUpdates(_0x3b9e7e[_0xdcbe('0x4a')],null))[_0xdcbe('0x24')](respondWithResult(_0x2f8a8e,null))['catch'](handleError(_0x2f8a8e,null));};exports[_0xdcbe('0x26')]=function(_0x5409e9,_0x5c32e5){return db[_0xdcbe('0x2d')][_0xdcbe('0x48')]({'where':{'id':_0x5409e9['params']['id']}})[_0xdcbe('0x24')](handleEntityNotFound(_0x5c32e5,null))[_0xdcbe('0x24')](removeEntity(_0x5c32e5,null))[_0xdcbe('0x45')](handleError(_0x5c32e5,null));};exports['addInterval']=function(_0x318399,_0x170cc4,_0x2d689c){if(_0x318399[_0xdcbe('0x4a')]['id']){delete _0x318399[_0xdcbe('0x4a')]['id'];}return db[_0xdcbe('0x2d')][_0xdcbe('0x48')]({'where':{'id':_0x318399[_0xdcbe('0x47')]['id']}})[_0xdcbe('0x24')](handleEntityNotFound(_0x170cc4,null))[_0xdcbe('0x24')](function(_0x3ee7cd){if(_0x3ee7cd){_0x318399[_0xdcbe('0x4a')][_0xdcbe('0x51')]=_0x3ee7cd['id'];return db['Interval'][_0xdcbe('0x49')](_0x318399[_0xdcbe('0x4a')]);}})[_0xdcbe('0x24')](respondWithResult(_0x170cc4,null))['catch'](handleError(_0x170cc4,null));};exports[_0xdcbe('0x52')]=function(_0x5aeed5,_0x48dbe4,_0xf07ae9){var _0x2ebf9f={};var _0x11efe5={};var _0x59f799;var _0x34bc7b;return db[_0xdcbe('0x2d')][_0xdcbe('0x53')]({'where':{'id':_0x5aeed5[_0xdcbe('0x47')]['id']}})[_0xdcbe('0x24')](handleEntityNotFound(_0x48dbe4,null))['then'](function(_0x3c77b5){if(_0x3c77b5){_0x59f799=_0x3c77b5;_0x11efe5[_0xdcbe('0x30')]=_[_0xdcbe('0x32')](db['Interval'][_0xdcbe('0x2e')]);_0x11efe5[_0xdcbe('0x31')]=_[_0xdcbe('0x32')](_0x5aeed5[_0xdcbe('0x31')]);_0x11efe5[_0xdcbe('0x33')]=_[_0xdcbe('0x35')](_0x11efe5[_0xdcbe('0x30')],_0x11efe5[_0xdcbe('0x31')]);_0x2ebf9f[_0xdcbe('0x34')]=_[_0xdcbe('0x35')](_0x11efe5[_0xdcbe('0x30')],qs['fields'](_0x5aeed5[_0xdcbe('0x31')]['fields']));_0x2ebf9f['attributes']=_0x2ebf9f[_0xdcbe('0x34')][_0xdcbe('0x37')]?_0x2ebf9f[_0xdcbe('0x34')]:_0x11efe5[_0xdcbe('0x30')];_0x2ebf9f['order']=qs[_0xdcbe('0x3b')](_0x5aeed5['query'][_0xdcbe('0x3b')]);_0x2ebf9f[_0xdcbe('0x3c')]=qs['filters'](_[_0xdcbe('0x3d')](_0x5aeed5[_0xdcbe('0x31')],_0x11efe5[_0xdcbe('0x33')]));if(_0x5aeed5[_0xdcbe('0x31')][_0xdcbe('0x3e')]){_0x2ebf9f[_0xdcbe('0x3c')]=_[_0xdcbe('0x3f')](_0x2ebf9f[_0xdcbe('0x3c')],{'$or':_[_0xdcbe('0x2c')](_0x2ebf9f[_0xdcbe('0x34')],function(_0x2ee3c7){var _0x47b546={};_0x47b546[_0x2ee3c7]={'$like':'%'+_0x5aeed5[_0xdcbe('0x31')][_0xdcbe('0x3e')]+'%'};return _0x47b546;})});}_0x2ebf9f=_['merge']({},_0x2ebf9f,_0x5aeed5[_0xdcbe('0x41')]);return _0x59f799[_0xdcbe('0x52')](_0x2ebf9f);}})[_0xdcbe('0x24')](function(_0x4ad275){if(_0x4ad275){_0x34bc7b=_0x4ad275[_0xdcbe('0x37')];if(!_0x5aeed5[_0xdcbe('0x31')][_0xdcbe('0x38')]('nolimit')){_0x2ebf9f[_0xdcbe('0x1b')]=qs[_0xdcbe('0x1b')](_0x5aeed5[_0xdcbe('0x31')][_0xdcbe('0x1b')]);_0x2ebf9f[_0xdcbe('0x1d')]=qs[_0xdcbe('0x1d')](_0x5aeed5[_0xdcbe('0x31')]['offset']);}return _0x59f799[_0xdcbe('0x52')](_0x2ebf9f);}})[_0xdcbe('0x24')](function(_0xa2b52d){if(_0xa2b52d){return _0xa2b52d?{'count':_0x34bc7b,'rows':_0xa2b52d}:null;}})['then'](respondWithResult(_0x48dbe4,null))[_0xdcbe('0x45')](handleError(_0x48dbe4,null));};exports[_0xdcbe('0x54')]=function(_0x4fd7b3,_0x2468ef,_0x138f2b){return db[_0xdcbe('0x2d')][_0xdcbe('0x53')]({'where':{'id':_0x4fd7b3[_0xdcbe('0x47')]['id']}})[_0xdcbe('0x24')](handleEntityNotFound(_0x2468ef,null))['then'](function(_0x5f07b6){if(_0x5f07b6){return db['sequelize']['transaction'](function(_0x542bbf){return db['Interval'][_0xdcbe('0x26')]({'where':{'IntervalId':_0x4fd7b3[_0xdcbe('0x47')]['id']},'transaction':_0x542bbf})[_0xdcbe('0x24')](function(_0x417a8f){var _0x119fb9=_[_0xdcbe('0x2c')](_0x4fd7b3[_0xdcbe('0x4a')],function(_0x566e6b){delete _0x566e6b['id'];_0x566e6b[_0xdcbe('0x51')]=_0x4fd7b3[_0xdcbe('0x47')]['id'];return _0x566e6b;});return db[_0xdcbe('0x2d')][_0xdcbe('0x55')](_0x119fb9,{'transaction':_0x542bbf});});})[_0xdcbe('0x24')](function(){return db[_0xdcbe('0x2d')]['findAll']({'where':{'IntervalId':_0x4fd7b3[_0xdcbe('0x47')]['id']}});});}})['then'](respondWithResult(_0x2468ef,null))['catch'](handleError(_0x2468ef,null));};
\ No newline at end of file
index dcb6d7d..f736f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d74=['define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../components/extensions/rewrite','exports'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3d74,0x149));var _0x43d7=function(_0x1e3c9e,_0x46b783){_0x1e3c9e=_0x1e3c9e-0x0;var _0x42728d=_0x3d74[_0x1e3c9e];return _0x42728d;};'use strict';var _=require(_0x43d7('0x0'));var util=require(_0x43d7('0x1'));var logger=require(_0x43d7('0x2'))(_0x43d7('0x3'));var moment=require(_0x43d7('0x4'));var BPromise=require('bluebird');var rp=require(_0x43d7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x43d7('0x6'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x43d7('0x7'));module[_0x43d7('0x8')]=function(_0x23204a,_0x2dd33c){return _0x23204a[_0x43d7('0x9')](_0x43d7('0xa'),attributes,{'tableName':_0x43d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x23e06a,_0x27a691){extensions[_0x43d7('0xc')](_0x23204a,_0x23e06a);},'afterBulkCreate':function(_0x5048ec,_0xcf3f4d,_0x11f557){_0x11f557();extensions[_0x43d7('0xc')](_0x23204a,_0x5048ec[0x0]);},'afterUpdate':function(_0x5dfbd1,_0x4288ec){extensions[_0x43d7('0xc')](_0x23204a,_0x5dfbd1);},'afterDestroy':function(_0x583310,_0x20e0eb){extensions[_0x43d7('0xc')](_0x23204a,_0x583310);}}});};
\ No newline at end of file
+var _0xbc3d=['lodash','moment','bluebird','path','rimraf','../../config/environment','./interval.attributes','exports','Interval','tools_intervals','rewrite'];(function(_0xcce6c4,_0xac4e76){var _0x5f63ce=function(_0x3a0166){while(--_0x3a0166){_0xcce6c4['push'](_0xcce6c4['shift']());}};_0x5f63ce(++_0xac4e76);}(_0xbc3d,0x1ad));var _0xdbc3=function(_0x7b484,_0x195ad4){_0x7b484=_0x7b484-0x0;var _0x2ae1cf=_0xbc3d[_0x7b484];return _0x2ae1cf;};'use strict';var _=require(_0xdbc3('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xdbc3('0x1'));var BPromise=require(_0xdbc3('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdbc3('0x3'));var rimraf=require(_0xdbc3('0x4'));var config=require(_0xdbc3('0x5'));var attributes=require(_0xdbc3('0x6'));var extensions=require('../../components/extensions/rewrite');module[_0xdbc3('0x7')]=function(_0x3d0cf1,_0xb667cd){return _0x3d0cf1['define'](_0xdbc3('0x8'),attributes,{'tableName':_0xdbc3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x319e02,_0xa2ad36){extensions[_0xdbc3('0xa')](_0x3d0cf1,_0x319e02);},'afterBulkCreate':function(_0x8eecd8,_0x1ea738,_0xea6b9){_0xea6b9();extensions[_0xdbc3('0xa')](_0x3d0cf1,_0x8eecd8[0x0]);},'afterUpdate':function(_0x38bf9d,_0x2a13f7){extensions[_0xdbc3('0xa')](_0x3d0cf1,_0x38bf9d);},'afterDestroy':function(_0x2230de,_0x4626a1){extensions[_0xdbc3('0xa')](_0x3d0cf1,_0x2230de);}}});};
\ No newline at end of file
index dc59794..f4d2872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0xdd2bfa,_0x5bd304){var _0x55397e=function(_0x196f7d){while(--_0x196f7d){_0xdd2bfa['push'](_0xdd2bfa['shift']());}};_0x55397e(++_0x5bd304);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x5ef905,_0x564b87){var _0x367808=function(_0x14f487){while(--_0x14f487){_0x5ef905['push'](_0x5ef905['shift']());}};_0x367808(++_0x564b87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 540c9d7..5a58beb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x352b43,_0x292d07){var _0x5c399d=function(_0x1b1ceb){while(--_0x1b1ceb){_0x352b43['push'](_0x352b43['shift']());}};_0x5c399d(++_0x292d07);}(_0x2ef3,0xba));var _0x32ef=function(_0x317d09,_0x25a476){_0x317d09=_0x317d09-0x0;var _0x511580=_0x2ef3[_0x317d09];return _0x511580;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
index 9d83655..f713b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0715=['request','setEncoding','utf8','data','end','statusCode','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','send','body','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','\x20from\x20','stringify','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','name','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','base64'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x0715,0xb4));var _0x5071=function(_0x125144,_0x42656a){_0x125144=_0x125144-0x0;var _0xe5cfcc=_0x0715[_0x125144];return _0xe5cfcc;};'use strict';var BPromise=require(_0x5071('0x0'));var https=require(_0x5071('0x1'));var logger=require(_0x5071('0x2'))(_0x5071('0x3'));var USERNAME=_0x5071('0x4');var PASSWORD=_0x5071('0x5');function openIssue(_0x3bb5e7,_0x1c5c2f){var _0x12083b={'fields':{'project':{'key':_0x3bb5e7[_0x5071('0x6')]||'MOTGUI'},'summary':(_0x3bb5e7['summary']||'Report')+_0x5071('0x7')+_0x3bb5e7['ip'],'description':_0x3bb5e7['description']||JSON[_0x5071('0x8')](_0x3bb5e7),'issuetype':{'name':_0x3bb5e7['issuetype']||_0x5071('0x9')}}};_0x12083b[_0x5071('0xa')][_0x5071('0xb')]=_0x3bb5e7[_0x5071('0xc')];_0x12083b[_0x5071('0xa')][_0x5071('0xd')]=_0x3bb5e7[_0x5071('0xe')];_0x12083b[_0x5071('0xa')][_0x5071('0xf')]=_0x3bb5e7['newToken'];_0x12083b[_0x5071('0xa')][_0x5071('0x10')]=_0x3bb5e7[_0x5071('0x11')];_0x12083b['fields'][_0x5071('0x12')]=_0x3bb5e7['reason'];_0x12083b['fields'][_0x5071('0x13')]=_0x3bb5e7['ip'];var _0x24e297={'host':_0x5071('0x14'),'port':0x1bb,'path':_0x5071('0x15'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x5071('0x16'),'Authorization':_0x5071('0x17')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x5071('0x18'))}};var _0x3fb468=JSON[_0x5071('0x8')](_0x12083b);var _0x8cc9de=https[_0x5071('0x19')](_0x24e297,function(_0x38b745){_0x38b745[_0x5071('0x1a')](_0x5071('0x1b'));var _0x53cae9='';_0x38b745['on'](_0x5071('0x1c'),function(_0x387e56){_0x53cae9+=_0x387e56;});_0x38b745['on'](_0x5071('0x1d'),function(){if(_0x1c5c2f){return _0x1c5c2f['status'](_0x38b745[_0x5071('0x1e')])['json'](JSON[_0x5071('0x1f')](_0x53cae9));}});});_0x8cc9de['on'](_0x5071('0x20'),function(_0x3f4025){if(_0x1c5c2f){return _0x1c5c2f[_0x5071('0x21')](0x1f4)['json']({'errors':[{'message':_0x5071('0x22'),'type':_0x5071('0x23')}]});}});_0x8cc9de[_0x5071('0x24')](_0x3fb468);_0x8cc9de[_0x5071('0x1d')]();}exports['openIssue']=openIssue;exports[_0x5071('0x25')]=function(_0x4c93cb,_0x24449f){_0x4c93cb[_0x5071('0x26')]['ip']=_0x4c93cb['headers']['x-forwarded-for']||_0x4c93cb['connection'][_0x5071('0x27')]||_0x4c93cb[_0x5071('0x28')][_0x5071('0x27')]||_0x4c93cb['connection'][_0x5071('0x28')][_0x5071('0x27')];return openIssue(_0x4c93cb['body'],_0x24449f);};
\ No newline at end of file
+var _0x034f=['https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','summary','Report','\x20from\x20','description','stringify','Bug','fields','customfield_11500','email','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','POST','application/json','toString','base64','request','setEncoding','utf8','data','statusCode','error','status','json','write','end','openIssue','headers','x-forwarded-for','connection','socket','remoteAddress','body','bluebird'];(function(_0x15bd17,_0x2741c6){var _0x40ae3d=function(_0x2d5167){while(--_0x2d5167){_0x15bd17['push'](_0x15bd17['shift']());}};_0x40ae3d(++_0x2741c6);}(_0x034f,0x1d8));var _0xf034=function(_0x5c4585,_0x3d0eab){_0x5c4585=_0x5c4585-0x0;var _0x21dede=_0x034f[_0x5c4585];return _0x21dede;};'use strict';var BPromise=require(_0xf034('0x0'));var https=require(_0xf034('0x1'));var logger=require(_0xf034('0x2'))(_0xf034('0x3'));var USERNAME=_0xf034('0x4');var PASSWORD=_0xf034('0x5');function openIssue(_0x158093,_0x4e4f8c){var _0x2a3e9b={'fields':{'project':{'key':_0x158093['key']||_0xf034('0x6')},'summary':(_0x158093[_0xf034('0x7')]||_0xf034('0x8'))+_0xf034('0x9')+_0x158093['ip'],'description':_0x158093[_0xf034('0xa')]||JSON[_0xf034('0xb')](_0x158093),'issuetype':{'name':_0x158093['issuetype']||_0xf034('0xc')}}};_0x2a3e9b[_0xf034('0xd')][_0xf034('0xe')]=_0x158093[_0xf034('0xf')];_0x2a3e9b[_0xf034('0xd')]['customfield_11501']=_0x158093['oldToken'];_0x2a3e9b[_0xf034('0xd')]['customfield_11502']=_0x158093['newToken'];_0x2a3e9b[_0xf034('0xd')][_0xf034('0x10')]=_0x158093[_0xf034('0x11')];_0x2a3e9b['fields'][_0xf034('0x12')]=_0x158093[_0xf034('0x13')];_0x2a3e9b[_0xf034('0xd')][_0xf034('0x14')]=_0x158093['ip'];var _0x6cbeba={'host':_0xf034('0x15'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xf034('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0xf034('0x17'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0xf034('0x18')](_0xf034('0x19'))}};var _0x1218b0=JSON[_0xf034('0xb')](_0x2a3e9b);var _0x523b0a=https[_0xf034('0x1a')](_0x6cbeba,function(_0xe6532f){_0xe6532f[_0xf034('0x1b')](_0xf034('0x1c'));var _0x555fc2='';_0xe6532f['on'](_0xf034('0x1d'),function(_0x1a1e4f){_0x555fc2+=_0x1a1e4f;});_0xe6532f['on']('end',function(){if(_0x4e4f8c){return _0x4e4f8c['status'](_0xe6532f[_0xf034('0x1e')])['json'](JSON['parse'](_0x555fc2));}});});_0x523b0a['on'](_0xf034('0x1f'),function(_0x3267f5){if(_0x4e4f8c){return _0x4e4f8c[_0xf034('0x20')](0x1f4)[_0xf034('0x21')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':'api.jira'}]});}});_0x523b0a[_0xf034('0x22')](_0x1218b0);_0x523b0a[_0xf034('0x23')]();}exports[_0xf034('0x24')]=openIssue;exports['send']=function(_0xde4ece,_0x506883){_0xde4ece['body']['ip']=_0xde4ece[_0xf034('0x25')][_0xf034('0x26')]||_0xde4ece[_0xf034('0x27')]['remoteAddress']||_0xde4ece[_0xf034('0x28')]['remoteAddress']||_0xde4ece[_0xf034('0x27')][_0xf034('0x28')][_0xf034('0x29')];return openIssue(_0xde4ece[_0xf034('0x2a')],_0x506883);};
\ No newline at end of file
index d21980f..e5dd5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x51838e,_0x3d3aeb){var _0x4e92b4=function(_0x3aab2b){while(--_0x3aab2b){_0x51838e['push'](_0x51838e['shift']());}};_0x4e92b4(++_0x3d3aeb);}(_0xa8a8,0xec));var _0x8a8a=function(_0x3ebea7,_0x2c920d){_0x3ebea7=_0x3ebea7-0x0;var _0x331c56=_0xa8a8[_0x3ebea7];return _0x331c56;};'use strict';var multer=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var path=require(_0x8a8a('0x2'));var timeout=require(_0x8a8a('0x3'));var express=require('express');var router=express[_0x8a8a('0x4')]();var fs_extra=require(_0x8a8a('0x5'));var auth=require(_0x8a8a('0x6'));var interaction=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var controller=require(_0x8a8a('0x9'));router[_0x8a8a('0xa')]('/',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xc')]);router[_0x8a8a('0xa')](_0x8a8a('0xd'),auth[_0x8a8a('0xb')](),controller[_0x8a8a('0xe')]);router[_0x8a8a('0xa')](_0x8a8a('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x8a8a('0x10')]('/',auth['isAuthenticated'](),controller[_0x8a8a('0x11')]);router[_0x8a8a('0x12')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x13')]);router[_0x8a8a('0x14')]('/:id',auth[_0x8a8a('0xb')](),controller[_0x8a8a('0x15')]);module[_0x8a8a('0x16')]=router;
\ No newline at end of file
+var _0xbec5=['describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated'];(function(_0x5e115c,_0x1963d6){var _0x17d0c1=function(_0x236272){while(--_0x236272){_0x5e115c['push'](_0x5e115c['shift']());}};_0x17d0c1(++_0x1963d6);}(_0xbec5,0xe5));var _0x5bec=function(_0x445c98,_0x132bf7){_0x445c98=_0x445c98-0x0;var _0x2fe913=_0xbec5[_0x445c98];return _0x2fe913;};'use strict';var multer=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var path=require('path');var timeout=require(_0x5bec('0x2'));var express=require(_0x5bec('0x3'));var router=express[_0x5bec('0x4')]();var fs_extra=require(_0x5bec('0x5'));var auth=require(_0x5bec('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bec('0x7'));var controller=require(_0x5bec('0x8'));router[_0x5bec('0x9')]('/',auth['isAuthenticated'](),controller[_0x5bec('0xa')]);router[_0x5bec('0x9')](_0x5bec('0xb'),auth[_0x5bec('0xc')](),controller[_0x5bec('0xd')]);router[_0x5bec('0x9')](_0x5bec('0xe'),auth[_0x5bec('0xc')](),controller['show']);router[_0x5bec('0xf')]('/',auth['isAuthenticated'](),controller[_0x5bec('0x10')]);router[_0x5bec('0x11')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x12')]);router[_0x5bec('0x13')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x14')]);module[_0x5bec('0x15')]=router;
\ No newline at end of file
index c615ff2..7e9155f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7a54,0x106));var _0x47a5=function(_0x1e80a3,_0xee2fc3){_0x1e80a3=_0x1e80a3-0x0;var _0x17965c=_0x7a54[_0x1e80a3];return _0x17965c;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x7a54,0x106));var _0x47a5=function(_0x2d1bdd,_0x39d9ea){_0x2d1bdd=_0x2d1bdd-0x0;var _0x288b6f=_0x7a54[_0x2d1bdd];return _0x288b6f;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index c0596e5..048360e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd7=['VIRTUAL','includeAll','rows','show','params','include','options','find','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','map','JscriptyAnswerReport','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x2c9626,_0x533f10){var _0xaaaf74=function(_0x1cf261){while(--_0x1cf261){_0x2c9626['push'](_0x2c9626['shift']());}};_0xaaaf74(++_0x533f10);}(_0x4fd7,0xe6));var _0x74fd=function(_0x157343,_0x1422d0){_0x157343=_0x157343-0x0;var _0x500ce5=_0x4fd7[_0x157343];return _0x500ce5;};'use strict';var emlformat=require(_0x74fd('0x0'));var rimraf=require(_0x74fd('0x1'));var zipdir=require(_0x74fd('0x2'));var jsonpatch=require(_0x74fd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x74fd('0x4'));var Mustache=require(_0x74fd('0x5'));var util=require('util');var path=require(_0x74fd('0x6'));var sox=require('sox');var csv=require(_0x74fd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x74fd('0x8'));var _=require(_0x74fd('0x9'));var squel=require('squel');var crypto=require(_0x74fd('0xa'));var jsforce=require(_0x74fd('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x74fd('0x7'));var querystring=require(_0x74fd('0xc'));var Papa=require(_0x74fd('0xd'));var Redis=require(_0x74fd('0xe'));var authService=require(_0x74fd('0xf'));var qs=require(_0x74fd('0x10'));var as=require(_0x74fd('0x11'));var hardwareService=require(_0x74fd('0x12'));var logger=require(_0x74fd('0x13'))(_0x74fd('0x14'));var utils=require(_0x74fd('0x15'));var config=require(_0x74fd('0x16'));var licenseUtil=require(_0x74fd('0x17'));var db=require(_0x74fd('0x18'))['db'];function respondWithStatusCode(_0x3fd552,_0x8fafcb){_0x8fafcb=_0x8fafcb||0xcc;return function(_0x4d250d){if(_0x4d250d){return _0x3fd552[_0x74fd('0x19')](_0x8fafcb);}return _0x3fd552[_0x74fd('0x1a')](_0x8fafcb)['end']();};}function respondWithResult(_0x47e63c,_0x3e1d11){_0x3e1d11=_0x3e1d11||0xc8;return function(_0x2a4d2e){if(_0x2a4d2e){return _0x47e63c[_0x74fd('0x1a')](_0x3e1d11)[_0x74fd('0x1b')](_0x2a4d2e);}};}function respondWithFilteredResult(_0x24639c,_0x29bbc2){return function(_0x22e64a){if(_0x22e64a){var _0x127353=typeof _0x29bbc2[_0x74fd('0x1c')]===_0x74fd('0x1d')&&typeof _0x29bbc2[_0x74fd('0x1e')]==='undefined';var _0x2975f3=_0x22e64a[_0x74fd('0x1f')];var _0x4cd126=_0x127353?0x0:_0x29bbc2[_0x74fd('0x1c')];var _0x3904e3=_0x127353?_0x22e64a[_0x74fd('0x1f')]:_0x29bbc2[_0x74fd('0x1c')]+_0x29bbc2[_0x74fd('0x1e')];var _0x299f76;if(_0x3904e3>=_0x2975f3){_0x3904e3=_0x2975f3;_0x299f76=0xc8;}else{_0x299f76=0xce;}_0x24639c[_0x74fd('0x1a')](_0x299f76);return _0x24639c[_0x74fd('0x20')](_0x74fd('0x21'),_0x4cd126+'-'+_0x3904e3+'/'+_0x2975f3)[_0x74fd('0x1b')](_0x22e64a);}return null;};}function patchUpdates(_0x5fe487){return function(_0xb23e0){try{jsonpatch[_0x74fd('0x22')](_0xb23e0,_0x5fe487,!![]);}catch(_0x35a735){return BPromise[_0x74fd('0x23')](_0x35a735);}return _0xb23e0[_0x74fd('0x24')]();};}function saveUpdates(_0x1973a1,_0x204f5f){return function(_0x54fb4d){if(_0x54fb4d){return _0x54fb4d[_0x74fd('0x25')](_0x1973a1)[_0x74fd('0x26')](function(_0xf2c6ce){return _0xf2c6ce;});}return null;};}function removeEntity(_0x42cae0,_0x371d9c){return function(_0x4aae69){if(_0x4aae69){return _0x4aae69[_0x74fd('0x27')]()[_0x74fd('0x26')](function(){_0x42cae0['status'](0xcc)[_0x74fd('0x28')]();});}};}function handleEntityNotFound(_0x49debf,_0x2bc644){return function(_0x23d0ce){if(!_0x23d0ce){_0x49debf[_0x74fd('0x19')](0x194);}return _0x23d0ce;};}function handleError(_0x33d3d9,_0x214102){_0x214102=_0x214102||0x1f4;return function(_0x272d16){logger['error'](_0x272d16[_0x74fd('0x29')]);if(_0x272d16[_0x74fd('0x2a')]){delete _0x272d16[_0x74fd('0x2a')];}_0x33d3d9[_0x74fd('0x1a')](_0x214102)['send'](_0x272d16);};}exports['index']=function(_0x2de0eb,_0x476382){var _0x51e574={},_0x22a98c={},_0x57f0e6={'count':0x0,'rows':[]};var _0x4c0609=_[_0x74fd('0x2b')](db[_0x74fd('0x2c')][_0x74fd('0x2d')],function(_0x239839){return{'name':_0x239839[_0x74fd('0x2e')],'type':_0x239839['type'][_0x74fd('0x2f')]};});_0x22a98c['model']=_['map'](_0x4c0609,_0x74fd('0x2a'));_0x22a98c[_0x74fd('0x30')]=_[_0x74fd('0x31')](_0x2de0eb[_0x74fd('0x30')]);_0x22a98c['filters']=_[_0x74fd('0x32')](_0x22a98c[_0x74fd('0x33')],_0x22a98c[_0x74fd('0x30')]);_0x51e574[_0x74fd('0x34')]=_[_0x74fd('0x32')](_0x22a98c[_0x74fd('0x33')],qs[_0x74fd('0x35')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x35')]));_0x51e574[_0x74fd('0x34')]=_0x51e574[_0x74fd('0x34')][_0x74fd('0x36')]?_0x51e574[_0x74fd('0x34')]:_0x22a98c[_0x74fd('0x33')];if(!_0x2de0eb[_0x74fd('0x30')]['hasOwnProperty'](_0x74fd('0x37'))){_0x51e574[_0x74fd('0x1e')]=qs[_0x74fd('0x1e')](_0x2de0eb['query'][_0x74fd('0x1e')]);_0x51e574[_0x74fd('0x1c')]=qs[_0x74fd('0x1c')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x1c')]);}_0x51e574['order']=qs[_0x74fd('0x38')](_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x38')]);_0x51e574[_0x74fd('0x39')]=qs[_0x74fd('0x3a')](_[_0x74fd('0x3b')](_0x2de0eb[_0x74fd('0x30')],_0x22a98c[_0x74fd('0x3a')]),_0x4c0609);if(_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3c')]){_0x51e574[_0x74fd('0x39')]=_[_0x74fd('0x3d')](_0x51e574['where'],{'$or':_[_0x74fd('0x2b')](_0x4c0609,function(_0x48b640){if(_0x48b640['type']!==_0x74fd('0x3e')){var _0x242c33={};_0x242c33[_0x48b640[_0x74fd('0x2a')]]={'$like':'%'+_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3c')]+'%'};return _0x242c33;}})});}_0x51e574=_[_0x74fd('0x3d')]({},_0x51e574,_0x2de0eb['options']);var _0xfa3e6a={'where':_0x51e574[_0x74fd('0x39')]};return db['JscriptyAnswerReport'][_0x74fd('0x1f')](_0xfa3e6a)[_0x74fd('0x26')](function(_0x5a0de1){_0x57f0e6[_0x74fd('0x1f')]=_0x5a0de1;if(_0x2de0eb[_0x74fd('0x30')][_0x74fd('0x3f')]){_0x51e574['include']=[{'all':!![]}];}return db[_0x74fd('0x2c')]['findAll'](_0x51e574);})[_0x74fd('0x26')](function(_0x143aa6){_0x57f0e6[_0x74fd('0x40')]=_0x143aa6;return _0x57f0e6;})[_0x74fd('0x26')](respondWithFilteredResult(_0x476382,_0x51e574))['catch'](handleError(_0x476382,null));};exports[_0x74fd('0x41')]=function(_0x5779e1,_0x47be20){var _0x59d957={'raw':!![],'where':{'id':_0x5779e1[_0x74fd('0x42')]['id']}},_0x4fccd0={};_0x4fccd0[_0x74fd('0x33')]=_[_0x74fd('0x31')](db[_0x74fd('0x2c')]['rawAttributes']);_0x4fccd0[_0x74fd('0x30')]=_['keys'](_0x5779e1[_0x74fd('0x30')]);_0x4fccd0['filters']=_[_0x74fd('0x32')](_0x4fccd0[_0x74fd('0x33')],_0x4fccd0[_0x74fd('0x30')]);_0x59d957[_0x74fd('0x34')]=_[_0x74fd('0x32')](_0x4fccd0[_0x74fd('0x33')],qs[_0x74fd('0x35')](_0x5779e1[_0x74fd('0x30')][_0x74fd('0x35')]));_0x59d957[_0x74fd('0x34')]=_0x59d957[_0x74fd('0x34')][_0x74fd('0x36')]?_0x59d957[_0x74fd('0x34')]:_0x4fccd0[_0x74fd('0x33')];if(_0x5779e1[_0x74fd('0x30')][_0x74fd('0x3f')]){_0x59d957[_0x74fd('0x43')]=[{'all':!![]}];}_0x59d957=_[_0x74fd('0x3d')]({},_0x59d957,_0x5779e1[_0x74fd('0x44')]);return db[_0x74fd('0x2c')][_0x74fd('0x45')](_0x59d957)[_0x74fd('0x26')](handleEntityNotFound(_0x47be20,null))['then'](respondWithResult(_0x47be20,null))['catch'](handleError(_0x47be20,null));};exports['create']=function(_0x14846b,_0x2dea8f){return db[_0x74fd('0x2c')]['create'](_0x14846b['body'],{})[_0x74fd('0x26')](respondWithResult(_0x2dea8f,0xc9))['catch'](handleError(_0x2dea8f,null));};exports[_0x74fd('0x25')]=function(_0x439978,_0x649148){if(_0x439978[_0x74fd('0x46')]['id']){delete _0x439978[_0x74fd('0x46')]['id'];}return db[_0x74fd('0x2c')][_0x74fd('0x45')]({'where':{'id':_0x439978[_0x74fd('0x42')]['id']}})['then'](handleEntityNotFound(_0x649148,null))['then'](saveUpdates(_0x439978[_0x74fd('0x46')],null))[_0x74fd('0x26')](respondWithResult(_0x649148,null))['catch'](handleError(_0x649148,null));};exports['destroy']=function(_0x227d99,_0x39909e){return db[_0x74fd('0x2c')]['find']({'where':{'id':_0x227d99[_0x74fd('0x42')]['id']}})[_0x74fd('0x26')](handleEntityNotFound(_0x39909e,null))['then'](removeEntity(_0x39909e,null))[_0x74fd('0x47')](handleError(_0x39909e,null));};exports[_0x74fd('0x48')]=function(_0x593c6f,_0x470309){return db['JscriptyAnswerReport'][_0x74fd('0x48')]()[_0x74fd('0x26')](respondWithResult(_0x470309,null))[_0x74fd('0x47')](handleError(_0x470309,null));};
\ No newline at end of file
+var _0x3f1c=['params','rawAttributes','includeAll','find','catch','create','body','describe','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','stack','name','send','index','map','JscriptyAnswerReport','fieldName','type','key','model','keys','intersection','attributes','fields','length','query','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include'];(function(_0x24d78a,_0x492b39){var _0x2628f7=function(_0x42e7be){while(--_0x42e7be){_0x24d78a['push'](_0x24d78a['shift']());}};_0x2628f7(++_0x492b39);}(_0x3f1c,0xd4));var _0xc3f1=function(_0x5c7b13,_0x11acd0){_0x5c7b13=_0x5c7b13-0x0;var _0x5164e5=_0x3f1c[_0x5c7b13];return _0x5164e5;};'use strict';var emlformat=require(_0xc3f1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc3f1('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc3f1('0x2'));var Mustache=require(_0xc3f1('0x3'));var util=require(_0xc3f1('0x4'));var path=require(_0xc3f1('0x5'));var sox=require(_0xc3f1('0x6'));var csv=require('to-csv');var ejs=require(_0xc3f1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc3f1('0x8'));var squel=require(_0xc3f1('0x9'));var crypto=require(_0xc3f1('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc3f1('0xb'));var querystring=require('querystring');var Papa=require(_0xc3f1('0xc'));var Redis=require(_0xc3f1('0xd'));var authService=require(_0xc3f1('0xe'));var qs=require(_0xc3f1('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3f1('0x10'));var logger=require('../../config/logger')(_0xc3f1('0x11'));var utils=require('../../config/utils');var config=require(_0xc3f1('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23bb14,_0x103df5){_0x103df5=_0x103df5||0xcc;return function(_0x25cb9e){if(_0x25cb9e){return _0x23bb14[_0xc3f1('0x13')](_0x103df5);}return _0x23bb14[_0xc3f1('0x14')](_0x103df5)[_0xc3f1('0x15')]();};}function respondWithResult(_0x5bbfb3,_0x5dbe5c){_0x5dbe5c=_0x5dbe5c||0xc8;return function(_0x1d9ea7){if(_0x1d9ea7){return _0x5bbfb3[_0xc3f1('0x14')](_0x5dbe5c)[_0xc3f1('0x16')](_0x1d9ea7);}};}function respondWithFilteredResult(_0x23eb8c,_0x4e8f05){return function(_0x4667af){if(_0x4667af){var _0xee643=typeof _0x4e8f05[_0xc3f1('0x17')]===_0xc3f1('0x18')&&typeof _0x4e8f05['limit']===_0xc3f1('0x18');var _0x59e1e3=_0x4667af[_0xc3f1('0x19')];var _0x420d75=_0xee643?0x0:_0x4e8f05[_0xc3f1('0x17')];var _0x3dc419=_0xee643?_0x4667af['count']:_0x4e8f05[_0xc3f1('0x17')]+_0x4e8f05[_0xc3f1('0x1a')];var _0x3f97b2;if(_0x3dc419>=_0x59e1e3){_0x3dc419=_0x59e1e3;_0x3f97b2=0xc8;}else{_0x3f97b2=0xce;}_0x23eb8c[_0xc3f1('0x14')](_0x3f97b2);return _0x23eb8c[_0xc3f1('0x1b')]('Content-Range',_0x420d75+'-'+_0x3dc419+'/'+_0x59e1e3)[_0xc3f1('0x16')](_0x4667af);}return null;};}function patchUpdates(_0x4f53c1){return function(_0x546627){try{jsonpatch[_0xc3f1('0x1c')](_0x546627,_0x4f53c1,!![]);}catch(_0x1d3ebb){return BPromise[_0xc3f1('0x1d')](_0x1d3ebb);}return _0x546627[_0xc3f1('0x1e')]();};}function saveUpdates(_0x53d054,_0x44d774){return function(_0x2df1a4){if(_0x2df1a4){return _0x2df1a4[_0xc3f1('0x1f')](_0x53d054)[_0xc3f1('0x20')](function(_0x151c8a){return _0x151c8a;});}return null;};}function removeEntity(_0x31a03c,_0x2f4d81){return function(_0x294f50){if(_0x294f50){return _0x294f50['destroy']()['then'](function(){_0x31a03c[_0xc3f1('0x14')](0xcc)[_0xc3f1('0x15')]();});}};}function handleEntityNotFound(_0x3b1eb9,_0x49d98d){return function(_0x5e1b6a){if(!_0x5e1b6a){_0x3b1eb9[_0xc3f1('0x13')](0x194);}return _0x5e1b6a;};}function handleError(_0x41b473,_0x1cf63f){_0x1cf63f=_0x1cf63f||0x1f4;return function(_0x4dd154){logger['error'](_0x4dd154[_0xc3f1('0x21')]);if(_0x4dd154[_0xc3f1('0x22')]){delete _0x4dd154['name'];}_0x41b473['status'](_0x1cf63f)[_0xc3f1('0x23')](_0x4dd154);};}exports[_0xc3f1('0x24')]=function(_0x5cb85d,_0x2d6cc4){var _0x22dac7={},_0x2f925e={},_0x3454a3={'count':0x0,'rows':[]};var _0x4103ef=_[_0xc3f1('0x25')](db[_0xc3f1('0x26')]['rawAttributes'],function(_0x22957c){return{'name':_0x22957c[_0xc3f1('0x27')],'type':_0x22957c[_0xc3f1('0x28')][_0xc3f1('0x29')]};});_0x2f925e[_0xc3f1('0x2a')]=_['map'](_0x4103ef,_0xc3f1('0x22'));_0x2f925e['query']=_[_0xc3f1('0x2b')](_0x5cb85d['query']);_0x2f925e['filters']=_[_0xc3f1('0x2c')](_0x2f925e[_0xc3f1('0x2a')],_0x2f925e['query']);_0x22dac7[_0xc3f1('0x2d')]=_[_0xc3f1('0x2c')](_0x2f925e['model'],qs[_0xc3f1('0x2e')](_0x5cb85d['query'][_0xc3f1('0x2e')]));_0x22dac7[_0xc3f1('0x2d')]=_0x22dac7[_0xc3f1('0x2d')][_0xc3f1('0x2f')]?_0x22dac7[_0xc3f1('0x2d')]:_0x2f925e['model'];if(!_0x5cb85d[_0xc3f1('0x30')][_0xc3f1('0x31')]('nolimit')){_0x22dac7[_0xc3f1('0x1a')]=qs[_0xc3f1('0x1a')](_0x5cb85d[_0xc3f1('0x30')]['limit']);_0x22dac7[_0xc3f1('0x17')]=qs[_0xc3f1('0x17')](_0x5cb85d['query'][_0xc3f1('0x17')]);}_0x22dac7[_0xc3f1('0x32')]=qs['sort'](_0x5cb85d[_0xc3f1('0x30')][_0xc3f1('0x33')]);_0x22dac7[_0xc3f1('0x34')]=qs[_0xc3f1('0x35')](_[_0xc3f1('0x36')](_0x5cb85d[_0xc3f1('0x30')],_0x2f925e[_0xc3f1('0x35')]),_0x4103ef);if(_0x5cb85d[_0xc3f1('0x30')][_0xc3f1('0x37')]){_0x22dac7[_0xc3f1('0x34')]=_[_0xc3f1('0x38')](_0x22dac7['where'],{'$or':_[_0xc3f1('0x25')](_0x4103ef,function(_0x5db660){if(_0x5db660['type']!==_0xc3f1('0x39')){var _0x4420ce={};_0x4420ce[_0x5db660[_0xc3f1('0x22')]]={'$like':'%'+_0x5cb85d['query'][_0xc3f1('0x37')]+'%'};return _0x4420ce;}})});}_0x22dac7=_[_0xc3f1('0x38')]({},_0x22dac7,_0x5cb85d[_0xc3f1('0x3a')]);var _0x29eefa={'where':_0x22dac7[_0xc3f1('0x34')]};return db[_0xc3f1('0x26')]['count'](_0x29eefa)[_0xc3f1('0x20')](function(_0x3afde8){_0x3454a3[_0xc3f1('0x19')]=_0x3afde8;if(_0x5cb85d['query']['includeAll']){_0x22dac7[_0xc3f1('0x3b')]=[{'all':!![]}];}return db[_0xc3f1('0x26')]['findAll'](_0x22dac7);})[_0xc3f1('0x20')](function(_0x30e012){_0x3454a3['rows']=_0x30e012;return _0x3454a3;})['then'](respondWithFilteredResult(_0x2d6cc4,_0x22dac7))['catch'](handleError(_0x2d6cc4,null));};exports['show']=function(_0x4a829c,_0x1904c0){var _0x1e8e55={'raw':!![],'where':{'id':_0x4a829c[_0xc3f1('0x3c')]['id']}},_0xfcf4a6={};_0xfcf4a6['model']=_['keys'](db[_0xc3f1('0x26')][_0xc3f1('0x3d')]);_0xfcf4a6[_0xc3f1('0x30')]=_[_0xc3f1('0x2b')](_0x4a829c[_0xc3f1('0x30')]);_0xfcf4a6[_0xc3f1('0x35')]=_[_0xc3f1('0x2c')](_0xfcf4a6[_0xc3f1('0x2a')],_0xfcf4a6[_0xc3f1('0x30')]);_0x1e8e55['attributes']=_[_0xc3f1('0x2c')](_0xfcf4a6[_0xc3f1('0x2a')],qs['fields'](_0x4a829c[_0xc3f1('0x30')][_0xc3f1('0x2e')]));_0x1e8e55[_0xc3f1('0x2d')]=_0x1e8e55[_0xc3f1('0x2d')]['length']?_0x1e8e55['attributes']:_0xfcf4a6['model'];if(_0x4a829c['query'][_0xc3f1('0x3e')]){_0x1e8e55[_0xc3f1('0x3b')]=[{'all':!![]}];}_0x1e8e55=_['merge']({},_0x1e8e55,_0x4a829c[_0xc3f1('0x3a')]);return db[_0xc3f1('0x26')][_0xc3f1('0x3f')](_0x1e8e55)[_0xc3f1('0x20')](handleEntityNotFound(_0x1904c0,null))[_0xc3f1('0x20')](respondWithResult(_0x1904c0,null))[_0xc3f1('0x40')](handleError(_0x1904c0,null));};exports[_0xc3f1('0x41')]=function(_0x581eca,_0x3fdb5c){return db[_0xc3f1('0x26')]['create'](_0x581eca[_0xc3f1('0x42')],{})[_0xc3f1('0x20')](respondWithResult(_0x3fdb5c,0xc9))[_0xc3f1('0x40')](handleError(_0x3fdb5c,null));};exports['update']=function(_0x1a7d8c,_0x2f370b){if(_0x1a7d8c['body']['id']){delete _0x1a7d8c[_0xc3f1('0x42')]['id'];}return db[_0xc3f1('0x26')][_0xc3f1('0x3f')]({'where':{'id':_0x1a7d8c[_0xc3f1('0x3c')]['id']}})[_0xc3f1('0x20')](handleEntityNotFound(_0x2f370b,null))[_0xc3f1('0x20')](saveUpdates(_0x1a7d8c[_0xc3f1('0x42')],null))[_0xc3f1('0x20')](respondWithResult(_0x2f370b,null))[_0xc3f1('0x40')](handleError(_0x2f370b,null));};exports['destroy']=function(_0x2966f2,_0x59245c){return db[_0xc3f1('0x26')][_0xc3f1('0x3f')]({'where':{'id':_0x2966f2[_0xc3f1('0x3c')]['id']}})[_0xc3f1('0x20')](handleEntityNotFound(_0x59245c,null))[_0xc3f1('0x20')](removeEntity(_0x59245c,null))[_0xc3f1('0x40')](handleError(_0x59245c,null));};exports[_0xc3f1('0x43')]=function(_0x58803a,_0x32aae1){return db[_0xc3f1('0x26')]['describe']()[_0xc3f1('0x20')](respondWithResult(_0x32aae1,null))[_0xc3f1('0x40')](handleError(_0x32aae1,null));};
\ No newline at end of file
index 0b3bc20..c82f897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c6e=['report_jscripty_answers','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport'];(function(_0x42a21b,_0x4ade52){var _0x1523a8=function(_0x244404){while(--_0x244404){_0x42a21b['push'](_0x42a21b['shift']());}};_0x1523a8(++_0x4ade52);}(_0x7c6e,0x121));var _0xe7c6=function(_0x4a6cac,_0x1b5a31){_0x4a6cac=_0x4a6cac-0x0;var _0x5cfabd=_0x7c6e[_0x4a6cac];return _0x5cfabd;};'use strict';var _=require('lodash');var util=require(_0xe7c6('0x0'));var logger=require(_0xe7c6('0x1'))(_0xe7c6('0x2'));var moment=require(_0xe7c6('0x3'));var BPromise=require(_0xe7c6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe7c6('0x5'));var config=require(_0xe7c6('0x6'));var attributes=require(_0xe7c6('0x7'));module[_0xe7c6('0x8')]=function(_0x3a39cb,_0x2ea48f){return _0x3a39cb[_0xe7c6('0x9')](_0xe7c6('0xa'),attributes,{'tableName':_0xe7c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa55=['../../config/environment','./jscriptyAnswerReport.attributes','exports','JscriptyAnswerReport','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x37cb56,_0x40a680){var _0xc0e4ff=function(_0x3079b7){while(--_0x3079b7){_0x37cb56['push'](_0x37cb56['shift']());}};_0xc0e4ff(++_0x40a680);}(_0xfa55,0xc4));var _0x5fa5=function(_0x5bbaf2,_0x170db0){_0x5bbaf2=_0x5bbaf2-0x0;var _0x1aa4ae=_0xfa55[_0x5bbaf2];return _0x1aa4ae;};'use strict';var _=require(_0x5fa5('0x0'));var util=require(_0x5fa5('0x1'));var logger=require(_0x5fa5('0x2'))(_0x5fa5('0x3'));var moment=require('moment');var BPromise=require(_0x5fa5('0x4'));var rp=require(_0x5fa5('0x5'));var fs=require('fs');var path=require(_0x5fa5('0x6'));var rimraf=require(_0x5fa5('0x7'));var config=require(_0x5fa5('0x8'));var attributes=require(_0x5fa5('0x9'));module[_0x5fa5('0xa')]=function(_0x5d0051,_0x3fac0d){return _0x5d0051['define'](_0x5fa5('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7e2cc52..829cca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe96b=['util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xe96b,0x150));var _0xbe96=function(_0x2a7f9f,_0x377719){_0x2a7f9f=_0x2a7f9f-0x0;var _0x2e4098=_0xe96b[_0x2a7f9f];return _0x2e4098;};'use strict';var _=require('lodash');var util=require(_0xbe96('0x0'));var moment=require('moment');var BPromise=require(_0xbe96('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe96('0x2'));var db=require(_0xbe96('0x3'))['db'];var utils=require(_0xbe96('0x4'));var logger=require(_0xbe96('0x5'))('rpc');var config=require(_0xbe96('0x6'));var jayson=require(_0xbe96('0x7'));var client=jayson['client'][_0xbe96('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4b791b,_0x51d3ff,_0x1af2b3){return new BPromise(function(_0x4de7c5,_0x2610b0){return client[_0xbe96('0x9')](_0x4b791b,_0x1af2b3)[_0xbe96('0xa')](function(_0x1ebe2a){logger['info'](_0xbe96('0xb'),_0x51d3ff,_0xbe96('0xc'));logger['debug'](_0xbe96('0xd'),_0x51d3ff,_0xbe96('0xc'),JSON[_0xbe96('0xe')](_0x1ebe2a));if(_0x1ebe2a['error']){if(_0x1ebe2a['error'][_0xbe96('0xf')]===0x1f4){logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);return _0x2610b0(_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);}logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x1ebe2a[_0xbe96('0x10')]['message']);return _0x4de7c5(_0x1ebe2a[_0xbe96('0x10')][_0xbe96('0x11')]);}else{logger[_0xbe96('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x51d3ff,_0xbe96('0xc'));_0x4de7c5(_0x1ebe2a[_0xbe96('0x13')][_0xbe96('0x11')]);}})[_0xbe96('0x14')](function(_0x227d28){logger[_0xbe96('0x10')](_0xbe96('0xb'),_0x51d3ff,_0x227d28);_0x2610b0(_0x227d28);});});}
\ No newline at end of file
+var _0x8a70=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','JscriptyAnswerReport,\x20%s,\x20%s','message','catch','lodash','moment'];(function(_0xfb6ae3,_0x2b2e4c){var _0xc2a421=function(_0x3300a0){while(--_0x3300a0){_0xfb6ae3['push'](_0xfb6ae3['shift']());}};_0xc2a421(++_0x2b2e4c);}(_0x8a70,0x152));var _0x08a7=function(_0x5b813f,_0xf640a1){_0x5b813f=_0x5b813f-0x0;var _0x5644ce=_0x8a70[_0x5b813f];return _0x5644ce;};'use strict';var _=require(_0x08a7('0x0'));var util=require('util');var moment=require(_0x08a7('0x1'));var BPromise=require(_0x08a7('0x2'));var rs=require(_0x08a7('0x3'));var fs=require('fs');var Redis=require(_0x08a7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x08a7('0x5'));var logger=require(_0x08a7('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x08a7('0x7'));var client=jayson[_0x08a7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e6ffd,_0x40a0e6,_0x5579d2){return new BPromise(function(_0x359b5b,_0x52038a){return client[_0x08a7('0x9')](_0x5e6ffd,_0x5579d2)[_0x08a7('0xa')](function(_0x567b18){logger[_0x08a7('0xb')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x40a0e6,_0x08a7('0xc'));logger[_0x08a7('0xd')](_0x08a7('0xe'),_0x40a0e6,_0x08a7('0xc'),JSON[_0x08a7('0xf')](_0x567b18));if(_0x567b18[_0x08a7('0x10')]){if(_0x567b18['error']['code']===0x1f4){logger['error'](_0x08a7('0x11'),_0x40a0e6,_0x567b18[_0x08a7('0x10')][_0x08a7('0x12')]);return _0x52038a(_0x567b18['error'][_0x08a7('0x12')]);}logger['error'](_0x08a7('0x11'),_0x40a0e6,_0x567b18['error'][_0x08a7('0x12')]);return _0x359b5b(_0x567b18['error']['message']);}else{logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x40a0e6,_0x08a7('0xc'));_0x359b5b(_0x567b18['result'][_0x08a7('0x12')]);}})[_0x08a7('0x13')](function(_0x124d51){logger[_0x08a7('0x10')](_0x08a7('0x11'),_0x40a0e6,_0x124d51);_0x52038a(_0x124d51);});});}
\ No newline at end of file
index 283b74e..0698e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fd6=['clone','update','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone'];(function(_0x46428c,_0x20ab75){var _0x16a677=function(_0x2b0817){while(--_0x2b0817){_0x46428c['push'](_0x46428c['shift']());}};_0x16a677(++_0x20ab75);}(_0x6fd6,0x161));var _0x66fd=function(_0x173a1c,_0x3e2bcb){_0x173a1c=_0x173a1c-0x0;var _0x52f4ad=_0x6fd6[_0x173a1c];return _0x52f4ad;};'use strict';var multer=require(_0x66fd('0x0'));var util=require(_0x66fd('0x1'));var path=require(_0x66fd('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x66fd('0x3')]();var fs_extra=require(_0x66fd('0x4'));var auth=require(_0x66fd('0x5'));var interaction=require(_0x66fd('0x6'));var config=require('../../config/environment');var controller=require(_0x66fd('0x7'));router[_0x66fd('0x8')]('/',auth[_0x66fd('0x9')](),controller[_0x66fd('0xa')]);router[_0x66fd('0x8')](_0x66fd('0xb'),auth['isAuthenticated'](),controller[_0x66fd('0xc')]);router[_0x66fd('0x8')](_0x66fd('0xd'),auth['isAuthenticated'](),controller[_0x66fd('0xe')]);router[_0x66fd('0x8')]('/:id/answers',auth[_0x66fd('0x9')](),controller[_0x66fd('0xf')]);router[_0x66fd('0x8')](_0x66fd('0x10'),auth[_0x66fd('0x9')](),timeout(_0x66fd('0x11')),controller[_0x66fd('0x12')]);router[_0x66fd('0x13')]('/',auth[_0x66fd('0x9')](),controller[_0x66fd('0x14')]);router[_0x66fd('0x13')](_0x66fd('0x15'),auth[_0x66fd('0x9')](),controller[_0x66fd('0x16')]);router['put'](_0x66fd('0xb'),auth[_0x66fd('0x9')](),controller[_0x66fd('0x17')]);router['delete'](_0x66fd('0xb'),auth[_0x66fd('0x9')](),controller['destroy']);module[_0x66fd('0x18')]=router;
\ No newline at end of file
+var _0x2269=['isAuthenticated','index','/:id','get','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','30s','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller'];(function(_0xb49297,_0x1b5ff7){var _0x531af3=function(_0x349d4b){while(--_0x349d4b){_0xb49297['push'](_0xb49297['shift']());}};_0x531af3(++_0x1b5ff7);}(_0x2269,0x83));var _0x9226=function(_0x23669c,_0x514d31){_0x23669c=_0x23669c-0x0;var _0x5d1546=_0x2269[_0x23669c];return _0x5d1546;};'use strict';var multer=require(_0x9226('0x0'));var util=require(_0x9226('0x1'));var path=require(_0x9226('0x2'));var timeout=require(_0x9226('0x3'));var express=require('express');var router=express[_0x9226('0x4')]();var fs_extra=require(_0x9226('0x5'));var auth=require(_0x9226('0x6'));var interaction=require(_0x9226('0x7'));var config=require('../../config/environment');var controller=require(_0x9226('0x8'));router['get']('/',auth[_0x9226('0x9')](),controller[_0x9226('0xa')]);router['get'](_0x9226('0xb'),auth[_0x9226('0x9')](),controller['show']);router[_0x9226('0xc')](_0x9226('0xd'),auth[_0x9226('0x9')](),controller[_0x9226('0xe')]);router[_0x9226('0xc')](_0x9226('0xf'),auth[_0x9226('0x9')](),controller[_0x9226('0x10')]);router[_0x9226('0xc')](_0x9226('0x11'),auth['isAuthenticated'](),timeout(_0x9226('0x12')),controller['getSummary']);router[_0x9226('0x13')]('/',auth[_0x9226('0x9')](),controller[_0x9226('0x14')]);router['post'](_0x9226('0x15'),auth['isAuthenticated'](),controller[_0x9226('0x16')]);router[_0x9226('0x17')](_0x9226('0xb'),auth[_0x9226('0x9')](),controller[_0x9226('0x18')]);router[_0x9226('0x19')](_0x9226('0xb'),auth['isAuthenticated'](),controller[_0x9226('0x1a')]);module[_0x9226('0x1b')]=router;
\ No newline at end of file
index 9b8aef1..0cb24a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x652f=['isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','STRING','name','TEXT','long'];(function(_0x3dfa2c,_0x39ee52){var _0x5f2eeb=function(_0x42ecb7){while(--_0x42ecb7){_0x3dfa2c['push'](_0x3dfa2c['shift']());}};_0x5f2eeb(++_0x39ee52);}(_0x652f,0x166));var _0xf652=function(_0x3b82b2,_0x59a129){_0x3b82b2=_0x3b82b2-0x0;var _0xabc545=_0x652f[_0x3b82b2];return _0xabc545;};'use strict';var Sequelize=require(_0xf652('0x0'));var _=require(_0xf652('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0xf652('0x2')],'unique':_0xf652('0x3')},'description':{'type':Sequelize[_0xf652('0x2')]},'formData':{'type':Sequelize[_0xf652('0x4')](_0xf652('0x5')),'set':function(_0x5e7ccc){if(_[_0xf652('0x6')](_0x5e7ccc)){this[_0xf652('0x7')](_0xf652('0x8'),JSON[_0xf652('0x9')](_0x5e7ccc));}else if(_['isString'](_0x5e7ccc)){this['setDataValue'](_0xf652('0x8'),_0x5e7ccc);}else{this['setDataValue'](_0xf652('0x8'),util['format'](_0xf652('0xa'),this[_0xf652('0xb')](_0xf652('0x3'))||'',this[_0xf652('0xb')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xf652('0xc')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xf652('0xc')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0cf4=['lodash','exports','TEXT','long','isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','name','getDataValue','BOOLEAN'];(function(_0xf8937a,_0x4b3009){var _0x12d8db=function(_0x3f763d){while(--_0x3f763d){_0xf8937a['push'](_0xf8937a['shift']());}};_0x12d8db(++_0x4b3009);}(_0x0cf4,0x144));var _0x40cf=function(_0x1741a1,_0x3ab2f5){_0x1741a1=_0x1741a1-0x0;var _0x20f178=_0x0cf4[_0x1741a1];return _0x20f178;};'use strict';var Sequelize=require('sequelize');var _=require(_0x40cf('0x0'));var util=require('util');module[_0x40cf('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x40cf('0x2')](_0x40cf('0x3')),'set':function(_0x4063f3){if(_[_0x40cf('0x4')](_0x4063f3)){this[_0x40cf('0x5')](_0x40cf('0x6'),JSON[_0x40cf('0x7')](_0x4063f3));}else if(_['isString'](_0x4063f3)){this[_0x40cf('0x5')](_0x40cf('0x6'),_0x4063f3);}else{this[_0x40cf('0x5')](_0x40cf('0x6'),util['format'](_0x40cf('0x8'),this['getDataValue'](_0x40cf('0x9'))||'',this[_0x40cf('0xa')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x40cf('0xb')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x40cf('0xb')],'defaultValue':![]}};
\ No newline at end of file
index 6343a25..94c443d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d90=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','params','createdAt','updatedAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','hasOwnProperty','nolimit','order','sort','rows','getAnswers','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','attachment;\x20filename=','setHeader','Content-type','download','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','offset','undefined','count','limit','status','set','json','reject','update','then','get','Projects','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','where','pick','filter','merge','VIRTUAL','options','JscriptyProject','includeAll','include','findAll','catch','show','find'];(function(_0x1b82d9,_0x4fb27d){var _0x194149=function(_0x1b5b8c){while(--_0x1b5b8c){_0x1b82d9['push'](_0x1b82d9['shift']());}};_0x194149(++_0x4fb27d);}(_0x0d90,0xa0));var _0x00d9=function(_0x2cfd02,_0x580a7a){_0x2cfd02=_0x2cfd02-0x0;var _0x3f085d=_0x0d90[_0x2cfd02];return _0x3f085d;};'use strict';var emlformat=require(_0x00d9('0x0'));var rimraf=require(_0x00d9('0x1'));var zipdir=require(_0x00d9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x00d9('0x3'));var moment=require(_0x00d9('0x4'));var BPromise=require(_0x00d9('0x5'));var Mustache=require('mustache');var util=require(_0x00d9('0x6'));var path=require(_0x00d9('0x7'));var sox=require(_0x00d9('0x8'));var csv=require(_0x00d9('0x9'));var ejs=require(_0x00d9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x00d9('0xb'));var squel=require(_0x00d9('0xc'));var crypto=require(_0x00d9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x00d9('0xe'));var toCsv=require(_0x00d9('0x9'));var querystring=require('querystring');var Papa=require(_0x00d9('0xf'));var Redis=require(_0x00d9('0x10'));var authService=require(_0x00d9('0x11'));var qs=require(_0x00d9('0x12'));var as=require(_0x00d9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x00d9('0x14'))(_0x00d9('0x15'));var utils=require(_0x00d9('0x16'));var config=require(_0x00d9('0x17'));var licenseUtil=require(_0x00d9('0x18'));var db=require(_0x00d9('0x19'))['db'];function respondWithStatusCode(_0x217b29,_0xca42d8){_0xca42d8=_0xca42d8||0xcc;return function(_0x498346){if(_0x498346){return _0x217b29['sendStatus'](_0xca42d8);}return _0x217b29['status'](_0xca42d8)[_0x00d9('0x1a')]();};}function respondWithResult(_0x3fab95,_0x49f0b0){_0x49f0b0=_0x49f0b0||0xc8;return function(_0x4b0719){if(_0x4b0719){return _0x3fab95['status'](_0x49f0b0)['json'](_0x4b0719);}};}function respondWithFilteredResult(_0x2bf2d8,_0x476d19){return function(_0xccb344){if(_0xccb344){var _0x15206b=typeof _0x476d19[_0x00d9('0x1b')]===_0x00d9('0x1c')&&typeof _0x476d19['limit']===_0x00d9('0x1c');var _0x3bd27d=_0xccb344[_0x00d9('0x1d')];var _0x3fe22e=_0x15206b?0x0:_0x476d19[_0x00d9('0x1b')];var _0x53ddec=_0x15206b?_0xccb344[_0x00d9('0x1d')]:_0x476d19[_0x00d9('0x1b')]+_0x476d19[_0x00d9('0x1e')];var _0x109088;if(_0x53ddec>=_0x3bd27d){_0x53ddec=_0x3bd27d;_0x109088=0xc8;}else{_0x109088=0xce;}_0x2bf2d8[_0x00d9('0x1f')](_0x109088);return _0x2bf2d8[_0x00d9('0x20')]('Content-Range',_0x3fe22e+'-'+_0x53ddec+'/'+_0x3bd27d)[_0x00d9('0x21')](_0xccb344);}return null;};}function patchUpdates(_0x3124e3){return function(_0x163e82){try{jsonpatch['apply'](_0x163e82,_0x3124e3,!![]);}catch(_0x250944){return BPromise[_0x00d9('0x22')](_0x250944);}return _0x163e82['save']();};}function saveUpdates(_0x269cc9,_0x425f97){return function(_0x45007a){if(_0x45007a){return _0x45007a[_0x00d9('0x23')](_0x269cc9)[_0x00d9('0x24')](function(_0x26ab9a){return _0x26ab9a;});}return null;};}function removeEntity(_0x5e7482,_0x571a21){return function(_0x35101a){if(_0x35101a){return _0x35101a['destroy']()[_0x00d9('0x24')](function(){var _0xf06159=_0x35101a[_0x00d9('0x25')]({'plain':!![]});var _0x3542c5=_0x00d9('0x26');return db[_0x00d9('0x27')][_0x00d9('0x28')]({'where':{'type':_0x3542c5,'resourceId':_0xf06159['id']}})[_0x00d9('0x24')](function(){return _0x35101a;});})[_0x00d9('0x24')](function(){_0x5e7482[_0x00d9('0x1f')](0xcc)[_0x00d9('0x1a')]();});}};}function handleEntityNotFound(_0x54f100,_0x1a3989){return function(_0x5c5938){if(!_0x5c5938){_0x54f100[_0x00d9('0x29')](0x194);}return _0x5c5938;};}function handleError(_0x198fb7,_0x134662){_0x134662=_0x134662||0x1f4;return function(_0x2ec808){logger[_0x00d9('0x2a')](_0x2ec808[_0x00d9('0x2b')]);if(_0x2ec808[_0x00d9('0x2c')]){delete _0x2ec808[_0x00d9('0x2c')];}_0x198fb7[_0x00d9('0x1f')](_0x134662)[_0x00d9('0x2d')](_0x2ec808);};}exports[_0x00d9('0x2e')]=function(_0x2bdb60,_0x38eb09){var _0x496c97={},_0x22d89a={},_0x412210={'count':0x0,'rows':[]};var _0x341da1=_[_0x00d9('0x2f')](db['JscriptyProject'][_0x00d9('0x30')],function(_0x2cad65){return{'name':_0x2cad65['fieldName'],'type':_0x2cad65[_0x00d9('0x31')][_0x00d9('0x32')]};});_0x22d89a[_0x00d9('0x33')]=_[_0x00d9('0x2f')](_0x341da1,_0x00d9('0x2c'));_0x22d89a[_0x00d9('0x34')]=_[_0x00d9('0x35')](_0x2bdb60['query']);_0x22d89a[_0x00d9('0x36')]=_[_0x00d9('0x37')](_0x22d89a[_0x00d9('0x33')],_0x22d89a[_0x00d9('0x34')]);_0x496c97[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x22d89a[_0x00d9('0x33')],qs['fields'](_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x39')]));_0x496c97[_0x00d9('0x38')]=_0x496c97[_0x00d9('0x38')][_0x00d9('0x3a')]?_0x496c97[_0x00d9('0x38')]:_0x22d89a[_0x00d9('0x33')];if(!_0x2bdb60[_0x00d9('0x34')]['hasOwnProperty']('nolimit')){_0x496c97[_0x00d9('0x1e')]=qs[_0x00d9('0x1e')](_0x2bdb60[_0x00d9('0x34')]['limit']);_0x496c97[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x1b')]);}_0x496c97['order']=qs['sort'](_0x2bdb60[_0x00d9('0x34')]['sort']);_0x496c97[_0x00d9('0x3b')]=qs['filters'](_[_0x00d9('0x3c')](_0x2bdb60[_0x00d9('0x34')],_0x22d89a[_0x00d9('0x36')]),_0x341da1);if(_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x3d')]){_0x496c97[_0x00d9('0x3b')]=_[_0x00d9('0x3e')](_0x496c97['where'],{'$or':_[_0x00d9('0x2f')](_0x341da1,function(_0x2029aa){if(_0x2029aa[_0x00d9('0x31')]!==_0x00d9('0x3f')){var _0x1b7c3a={};_0x1b7c3a[_0x2029aa[_0x00d9('0x2c')]]={'$like':'%'+_0x2bdb60[_0x00d9('0x34')]['filter']+'%'};return _0x1b7c3a;}})});}_0x496c97=_[_0x00d9('0x3e')]({},_0x496c97,_0x2bdb60[_0x00d9('0x40')]);var _0x402c42={'where':_0x496c97['where']};return db[_0x00d9('0x41')][_0x00d9('0x1d')](_0x402c42)[_0x00d9('0x24')](function(_0x41e786){_0x412210[_0x00d9('0x1d')]=_0x41e786;if(_0x2bdb60[_0x00d9('0x34')][_0x00d9('0x42')]){_0x496c97[_0x00d9('0x43')]=[{'all':!![]}];}return db['JscriptyProject'][_0x00d9('0x44')](_0x496c97);})[_0x00d9('0x24')](function(_0x40252d){_0x412210['rows']=_0x40252d;return _0x412210;})[_0x00d9('0x24')](respondWithFilteredResult(_0x38eb09,_0x496c97))[_0x00d9('0x45')](handleError(_0x38eb09,null));};exports[_0x00d9('0x46')]=function(_0x2f4eb3,_0x1682d9){var _0x4276b9={'raw':![],'where':{'id':_0x2f4eb3['params']['id']}},_0x2bf5a5={};_0x2bf5a5[_0x00d9('0x33')]=_['keys'](db[_0x00d9('0x41')]['rawAttributes']);_0x2bf5a5[_0x00d9('0x34')]=_[_0x00d9('0x35')](_0x2f4eb3[_0x00d9('0x34')]);_0x2bf5a5['filters']=_[_0x00d9('0x37')](_0x2bf5a5[_0x00d9('0x33')],_0x2bf5a5[_0x00d9('0x34')]);_0x4276b9[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x2bf5a5[_0x00d9('0x33')],qs['fields'](_0x2f4eb3['query']['fields']));_0x4276b9['attributes']=_0x4276b9['attributes'][_0x00d9('0x3a')]?_0x4276b9[_0x00d9('0x38')]:_0x2bf5a5[_0x00d9('0x33')];if(_0x2f4eb3[_0x00d9('0x34')][_0x00d9('0x42')]){_0x4276b9[_0x00d9('0x43')]=[{'all':!![]}];}_0x4276b9=_[_0x00d9('0x3e')]({},_0x4276b9,_0x2f4eb3[_0x00d9('0x40')]);return db['JscriptyProject'][_0x00d9('0x47')](_0x4276b9)['then'](handleEntityNotFound(_0x1682d9,null))[_0x00d9('0x24')](respondWithResult(_0x1682d9,null))['catch'](handleError(_0x1682d9,null));};exports[_0x00d9('0x48')]=function(_0x56c419,_0x21ad43){return db[_0x00d9('0x41')][_0x00d9('0x48')](_0x56c419[_0x00d9('0x49')],{})['then'](function(_0x4ece35){var _0x1c7f00=_0x56c419[_0x00d9('0x4a')][_0x00d9('0x25')]({'plain':!![]});if(!_0x1c7f00)throw new Error(_0x00d9('0x4b'));if(_0x1c7f00[_0x00d9('0x4c')]==='user'){var _0x59b6e3=_0x4ece35[_0x00d9('0x25')]({'plain':!![]});var _0x37fb98='Projects';return db['UserProfileSection'][_0x00d9('0x47')]({'where':{'name':_0x37fb98,'userProfileId':_0x1c7f00[_0x00d9('0x4d')]},'raw':!![]})[_0x00d9('0x24')](function(_0x5a367b){if(_0x5a367b&&_0x5a367b[_0x00d9('0x4e')]===0x0){return db[_0x00d9('0x27')][_0x00d9('0x48')]({'name':_0x59b6e3[_0x00d9('0x2c')],'resourceId':_0x59b6e3['id'],'type':_0x5a367b[_0x00d9('0x2c')],'sectionId':_0x5a367b['id']},{})['then'](function(){return _0x4ece35;});}else{return _0x4ece35;}})[_0x00d9('0x45')](function(_0x4dda73){logger[_0x00d9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4dda73);throw _0x4dda73;});}return _0x4ece35;})[_0x00d9('0x24')](respondWithResult(_0x21ad43,0xc9))[_0x00d9('0x45')](handleError(_0x21ad43,null));};exports['clone']=function(_0x69beda,_0x22898d){var _0x2fa4e8={'where':{'id':_0x69beda[_0x00d9('0x4f')]['id']}},_0x1091cc={};_0x1091cc['model']=_['keys'](db[_0x00d9('0x41')][_0x00d9('0x30')]);_0x2fa4e8[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x1091cc[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x69beda[_0x00d9('0x34')][_0x00d9('0x39')]));_0x2fa4e8['attributes']=_0x2fa4e8[_0x00d9('0x38')][_0x00d9('0x3a')]?_0x2fa4e8[_0x00d9('0x38')]:_0x1091cc['model'];if(_0x69beda['query'][_0x00d9('0x42')]){_0x2fa4e8[_0x00d9('0x43')]=[{'all':!![]}];}_0x2fa4e8=_[_0x00d9('0x3e')]({},_0x2fa4e8,_0x69beda['options']);return db['JscriptyProject']['find'](_0x2fa4e8)[_0x00d9('0x24')](handleEntityNotFound(_0x22898d,null))[_0x00d9('0x24')](function(_0x2de9a5){if(_0x2de9a5){var _0x34ee8b=_0x2de9a5[_0x00d9('0x25')]({'plain':!![]});_0x34ee8b=qs['omit'](_0x34ee8b,['id',_0x00d9('0x50'),_0x00d9('0x51')]);_0x69beda['body']=_['omit'](_0x69beda[_0x00d9('0x49')],['id',_0x00d9('0x50'),_0x00d9('0x51')]);return db['JscriptyProject'][_0x00d9('0x48')](_[_0x00d9('0x3e')](_0x34ee8b,_0x69beda['body']),{'include':_0x69beda[_0x00d9('0x34')][_0x00d9('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x2e5c91){var _0x2edb62=_0x69beda[_0x00d9('0x4a')][_0x00d9('0x25')]({'plain':!![]});if(!_0x2edb62)throw new Error(_0x00d9('0x4b'));if(_0x2edb62[_0x00d9('0x4c')]===_0x00d9('0x4a')){var _0x19a9ef=_0x2e5c91['get']({'plain':!![]});var _0x503f96=_0x00d9('0x26');return db['UserProfileSection'][_0x00d9('0x47')]({'where':{'name':_0x503f96,'userProfileId':_0x2edb62[_0x00d9('0x4d')]},'raw':!![]})[_0x00d9('0x24')](function(_0x406c49){if(_0x406c49&&_0x406c49[_0x00d9('0x4e')]===0x0){return db[_0x00d9('0x27')][_0x00d9('0x48')]({'name':_0x19a9ef['name'],'resourceId':_0x19a9ef['id'],'type':_0x406c49[_0x00d9('0x2c')],'sectionId':_0x406c49['id']},{})[_0x00d9('0x24')](function(){return _0x2e5c91;});}else{return _0x2e5c91;}})[_0x00d9('0x45')](function(_0x271d0b){logger[_0x00d9('0x2a')](_0x00d9('0x52'),_0x271d0b);throw _0x271d0b;});}return _0x2e5c91;});}})['then'](respondWithResult(_0x22898d,0xc9))['catch'](handleError(_0x22898d,null));};exports[_0x00d9('0x23')]=function(_0x17e874,_0x3884a4){if(_0x17e874[_0x00d9('0x49')]['id']){delete _0x17e874[_0x00d9('0x49')]['id'];}return db['JscriptyProject']['find']({'where':{'id':_0x17e874[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x3884a4,null))['then'](saveUpdates(_0x17e874['body'],null))['then'](respondWithResult(_0x3884a4,null))['catch'](handleError(_0x3884a4,null));};exports['destroy']=function(_0x31aa4c,_0x39dbe2){return db[_0x00d9('0x41')][_0x00d9('0x47')]({'where':{'id':_0x31aa4c[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x39dbe2,null))['then'](removeEntity(_0x39dbe2,null))[_0x00d9('0x45')](handleError(_0x39dbe2,null));};exports[_0x00d9('0x53')]=function(_0x28bd00,_0xe1bc88,_0x4e30c9){var _0x458231={'raw':!![],'where':{}};var _0x1d89bf={};var _0x32ba9d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x00d9('0x54')]({'where':{'id':_0x28bd00['params']['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0xe1bc88,null))['then'](function(_0x3f65cd){if(_0x3f65cd){_0x1d89bf['model']=_['keys'](db[_0x00d9('0x55')][_0x00d9('0x30')]);_0x1d89bf['query']=_['keys'](_0x28bd00[_0x00d9('0x34')]);_0x1d89bf[_0x00d9('0x36')]=_['intersection'](_0x1d89bf['model'],_0x1d89bf[_0x00d9('0x34')]);_0x458231[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x1d89bf[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x28bd00[_0x00d9('0x34')][_0x00d9('0x39')]));_0x458231[_0x00d9('0x38')]=_0x458231['attributes'][_0x00d9('0x3a')]?_0x458231['attributes']:_0x1d89bf['model'];if(!_0x28bd00[_0x00d9('0x34')][_0x00d9('0x56')](_0x00d9('0x57'))){_0x458231[_0x00d9('0x1e')]=qs['limit'](_0x28bd00['query'][_0x00d9('0x1e')]);_0x458231[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x28bd00[_0x00d9('0x34')][_0x00d9('0x1b')]);}_0x458231[_0x00d9('0x58')]=qs[_0x00d9('0x59')](_0x28bd00[_0x00d9('0x34')]['sort']);_0x458231[_0x00d9('0x3b')]=qs[_0x00d9('0x36')](_['pick'](_0x28bd00['query'],_0x1d89bf[_0x00d9('0x36')]));_0x458231[_0x00d9('0x3b')]['ProjectId']=_0x3f65cd['id'];if(_0x28bd00['query'][_0x00d9('0x3d')]){_0x458231['where']=_[_0x00d9('0x3e')](_0x458231['where'],{'$or':_[_0x00d9('0x2f')](_0x458231[_0x00d9('0x38')],function(_0x50d46e){var _0x22d0dc={};_0x22d0dc[_0x50d46e]={'$like':'%'+_0x28bd00['query']['filter']+'%'};return _0x22d0dc;})});}_0x458231=_['merge']({},_0x458231,_0x28bd00[_0x00d9('0x40')]);return db[_0x00d9('0x55')][_0x00d9('0x1d')]({'where':_0x458231[_0x00d9('0x3b')]})[_0x00d9('0x24')](function(_0x146f1d){_0x32ba9d[_0x00d9('0x1d')]=_0x146f1d;if(_0x28bd00[_0x00d9('0x34')][_0x00d9('0x42')]){_0x458231[_0x00d9('0x43')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x458231);})['then'](function(_0xf09637){_0x32ba9d[_0x00d9('0x5a')]=_0xf09637;return _0x32ba9d;});}})[_0x00d9('0x24')](respondWithFilteredResult(_0xe1bc88,_0x458231))[_0x00d9('0x45')](handleError(_0xe1bc88,null));};exports[_0x00d9('0x5b')]=function(_0x5a51d8,_0x555dec,_0x540d3d){var _0x47615b={'raw':!![],'where':{}};var _0x5887a6={};var _0x513641={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x00d9('0x54')]({'where':{'id':_0x5a51d8[_0x00d9('0x4f')]['id']}})[_0x00d9('0x24')](handleEntityNotFound(_0x555dec,null))[_0x00d9('0x24')](function(_0x1c214c){if(_0x1c214c){_0x5887a6[_0x00d9('0x33')]=_[_0x00d9('0x35')](db[_0x00d9('0x5c')][_0x00d9('0x30')]);_0x5887a6[_0x00d9('0x34')]=_['keys'](_0x5a51d8[_0x00d9('0x34')]);_0x5887a6['filters']=_[_0x00d9('0x37')](_0x5887a6['model'],_0x5887a6[_0x00d9('0x34')]);_0x47615b[_0x00d9('0x38')]=_[_0x00d9('0x37')](_0x5887a6[_0x00d9('0x33')],qs[_0x00d9('0x39')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x39')]));_0x47615b[_0x00d9('0x38')]=_0x47615b[_0x00d9('0x38')]['length']?_0x47615b['attributes']:_0x5887a6[_0x00d9('0x33')];if(!_0x5a51d8['query'][_0x00d9('0x56')]('nolimit')){_0x47615b[_0x00d9('0x1e')]=qs[_0x00d9('0x1e')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x1e')]);_0x47615b[_0x00d9('0x1b')]=qs[_0x00d9('0x1b')](_0x5a51d8[_0x00d9('0x34')]['offset']);}_0x47615b['order']=qs[_0x00d9('0x59')](_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x59')]);_0x47615b[_0x00d9('0x3b')]=qs[_0x00d9('0x36')](_[_0x00d9('0x3c')](_0x5a51d8[_0x00d9('0x34')],_0x5887a6[_0x00d9('0x36')]));_0x47615b[_0x00d9('0x3b')]['ProjectId']=_0x1c214c['id'];if(_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x3d')]){_0x47615b[_0x00d9('0x3b')]=_[_0x00d9('0x3e')](_0x47615b['where'],{'$or':_[_0x00d9('0x2f')](_0x47615b['attributes'],function(_0x4dca48){var _0x31c400={};_0x31c400[_0x4dca48]={'$like':'%'+_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x3d')]+'%'};return _0x31c400;})});}_0x47615b=_['merge']({},_0x47615b,_0x5a51d8[_0x00d9('0x40')]);return db[_0x00d9('0x5c')]['count']({'where':_0x47615b['where']})[_0x00d9('0x24')](function(_0x4db569){_0x513641[_0x00d9('0x1d')]=_0x4db569;if(_0x5a51d8[_0x00d9('0x34')][_0x00d9('0x42')]){_0x47615b['include']=[{'all':!![]}];}return db[_0x00d9('0x5c')][_0x00d9('0x44')](_0x47615b);})[_0x00d9('0x24')](function(_0x15a6d1){_0x513641[_0x00d9('0x5a')]=_0x15a6d1;return _0x513641;});}})[_0x00d9('0x24')](respondWithFilteredResult(_0x555dec,_0x47615b))[_0x00d9('0x45')](handleError(_0x555dec,null));};function char(_0x16e0f5){return _0x00d9('0x5d')===typeof _0x16e0f5?String[_0x00d9('0x5e')]['apply'](null,arguments):_0x16e0f5;}function needsEncapsulation(_0x28bf78){return!!_0x28bf78&&(_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0xd))>=0x0||_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0xa))>=0x0||_0x28bf78[_0x00d9('0x5f')]()[_0x00d9('0x60')](char(0x2c))>=0x0||_0x28bf78['toString']()[_0x00d9('0x60')](char(0x22))>=0x0);}function encapsulate(_0x2cedfc){var _0x55383c=char(0x22),_0x3aade5='\x5c'+char(0x22),_0x18950b=_0x2cedfc['toString']()[_0x00d9('0x61')](new RegExp(_0x55383c,'g'),_0x3aade5);return _0x55383c+_0x18950b+_0x55383c;}exports[_0x00d9('0x62')]=function(_0x45d7d6,_0x4454f7,_0x3f7d1e){var _0x22b602,_0x397f3b;var _0x27b83f={'where':{'ProjectId':_0x45d7d6[_0x00d9('0x4f')]['id']}};if(_0x45d7d6['query']['startTime']){_0x27b83f[_0x00d9('0x3b')][_0x00d9('0x63')]=JSON[_0x00d9('0x64')](_0x45d7d6[_0x00d9('0x34')][_0x00d9('0x65')]);}return db[_0x00d9('0x55')][_0x00d9('0x44')](_0x27b83f)['then'](handleEntityNotFound(_0x4454f7,null))[_0x00d9('0x24')](function(_0x26a49e){if(_0x26a49e){_0x22b602=_0x26a49e;return db[_0x00d9('0x66')][_0x00d9('0x44')]({'where':{'SessionId':{'$in':_[_0x00d9('0x2f')](_0x22b602,'id')},'ProjectId':_0x45d7d6[_0x00d9('0x4f')]['id']},'order':'-createdAt'});}})[_0x00d9('0x24')](handleEntityNotFound(_0x4454f7,null))[_0x00d9('0x24')](function(_0x3202c7){if(_0x3202c7){_0x397f3b=_0x3202c7;var _0x3421c4={};for(var _0x226113=0x0,_0xdf8bd9=_0x397f3b[_0x00d9('0x3a')];_0x226113<_0xdf8bd9;_0x226113++){if(!_0x3421c4['hasOwnProperty'](_0x397f3b[_0x226113][_0x00d9('0x67')])){_0x3421c4[_0x397f3b[_0x226113]['questionId']]=needsEncapsulation(_0x397f3b[_0x226113][_0x00d9('0x68')])?encapsulate(_0x397f3b[_0x226113]['question']):_0x397f3b[_0x226113]['question'];}}var _0x4368f9=[],_0x33bde3={};for(var _0x4200dd=0x0,_0x57edc0=_0x22b602[_0x00d9('0x3a')];_0x4200dd<_0x57edc0;_0x4200dd++){_0x33bde3={'ProjectId':_0x45d7d6['params']['id'],'SessionId':_0x22b602[_0x4200dd]['id'],'StartTime':moment(_0x22b602[_0x4200dd][_0x00d9('0x63')])[_0x00d9('0x69')](_0x00d9('0x6a'))};for(var _0x13df63=0x0,_0x1d545d=_0x397f3b[_0x00d9('0x3a')];_0x13df63<_0x1d545d;_0x13df63++){if(_0x397f3b[_0x13df63][_0x00d9('0x6b')]==_0x22b602[_0x4200dd]['id']&&_0x3421c4[_0x00d9('0x56')](_0x397f3b[_0x13df63][_0x00d9('0x67')])){_0x33bde3[_0x3421c4[_0x397f3b[_0x13df63][_0x00d9('0x67')]]]=_0x397f3b[_0x13df63][_0x00d9('0x6c')];}}for(var _0xa18c19 in _0x3421c4){if(!_0x33bde3[_0x00d9('0x56')](_0x3421c4[_0xa18c19])){_0x33bde3[_0x3421c4[_0xa18c19]]=null;}}_0x4368f9['push'](_0x33bde3);}return _0x4368f9;}})[_0x00d9('0x24')](function(_0x4c2461){if(!_[_0x00d9('0x6d')](_0x4c2461)){var _0xbf5647=toCsv(_0x4c2461);var _0x22cd4d=Date[_0x00d9('0x6e')]();fs['writeFileSync'](util[_0x00d9('0x69')](_0x00d9('0x6f'),_0x45d7d6[_0x00d9('0x4f')]['id'],_0x22cd4d),_0xbf5647);_0x4454f7['setHeader']('Content-disposition',_0x00d9('0x70')+util[_0x00d9('0x69')]('Jscripty_Project_%d_Summary_%s.csv',_0x45d7d6[_0x00d9('0x4f')]['id'],_0x22cd4d));_0x4454f7[_0x00d9('0x71')](_0x00d9('0x72'),'text/csv');return _0x4454f7[_0x00d9('0x73')](util[_0x00d9('0x69')](_0x00d9('0x6f'),_0x45d7d6['params']['id'],_0x22cd4d));}else{return _0x4454f7[_0x00d9('0x29')](0xcc);}})[_0x00d9('0x45')](handleError(_0x4454f7,null));};
\ No newline at end of file
+var _0x7366=['UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','UserProfileSection','getSessions','findOne','hasOwnProperty','sort','ProjectId','filter','findAll','number','fromCharCode','indexOf','toString','getSummary','startTime','starttime','JscriptySessionReport','-createdAt','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Projects','stack','name','index','map','JscriptyProject','rawAttributes','type','key','model','query','filters','intersection','attributes','length','nolimit','order','where','pick','merge','include','rows','catch','show','keys','fields','includeAll','options','find','create','body','role','user','autoAssociation'];(function(_0x1f16c3,_0x2cf9a2){var _0x24024f=function(_0xfa63fa){while(--_0xfa63fa){_0x1f16c3['push'](_0x1f16c3['shift']());}};_0x24024f(++_0x2cf9a2);}(_0x7366,0x9d));var _0x6736=function(_0x3b6acd,_0x40895c){_0x3b6acd=_0x3b6acd-0x0;var _0x394f74=_0x7366[_0x3b6acd];return _0x394f74;};'use strict';var emlformat=require(_0x6736('0x0'));var rimraf=require(_0x6736('0x1'));var zipdir=require(_0x6736('0x2'));var jsonpatch=require(_0x6736('0x3'));var rp=require(_0x6736('0x4'));var moment=require(_0x6736('0x5'));var BPromise=require(_0x6736('0x6'));var Mustache=require(_0x6736('0x7'));var util=require(_0x6736('0x8'));var path=require('path');var sox=require(_0x6736('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6736('0xa'));var _=require(_0x6736('0xb'));var squel=require(_0x6736('0xc'));var crypto=require('crypto');var jsforce=require(_0x6736('0xd'));var deskjs=require(_0x6736('0xe'));var toCsv=require(_0x6736('0xf'));var querystring=require('querystring');var Papa=require(_0x6736('0x10'));var Redis=require(_0x6736('0x11'));var authService=require(_0x6736('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6736('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6736('0x14'))(_0x6736('0x15'));var utils=require('../../config/utils');var config=require(_0x6736('0x16'));var licenseUtil=require(_0x6736('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x54a33b,_0x5327ae){_0x5327ae=_0x5327ae||0xcc;return function(_0x33fa75){if(_0x33fa75){return _0x54a33b[_0x6736('0x18')](_0x5327ae);}return _0x54a33b[_0x6736('0x19')](_0x5327ae)[_0x6736('0x1a')]();};}function respondWithResult(_0x419a6d,_0x200a47){_0x200a47=_0x200a47||0xc8;return function(_0x34457a){if(_0x34457a){return _0x419a6d[_0x6736('0x19')](_0x200a47)[_0x6736('0x1b')](_0x34457a);}};}function respondWithFilteredResult(_0x19a7ed,_0x1cc748){return function(_0x219522){if(_0x219522){var _0x189906=typeof _0x1cc748[_0x6736('0x1c')]===_0x6736('0x1d')&&typeof _0x1cc748[_0x6736('0x1e')]==='undefined';var _0x454771=_0x219522[_0x6736('0x1f')];var _0x22417f=_0x189906?0x0:_0x1cc748['offset'];var _0x450e26=_0x189906?_0x219522['count']:_0x1cc748[_0x6736('0x1c')]+_0x1cc748[_0x6736('0x1e')];var _0x821e27;if(_0x450e26>=_0x454771){_0x450e26=_0x454771;_0x821e27=0xc8;}else{_0x821e27=0xce;}_0x19a7ed[_0x6736('0x19')](_0x821e27);return _0x19a7ed[_0x6736('0x20')](_0x6736('0x21'),_0x22417f+'-'+_0x450e26+'/'+_0x454771)['json'](_0x219522);}return null;};}function patchUpdates(_0x59e2bb){return function(_0x445064){try{jsonpatch[_0x6736('0x22')](_0x445064,_0x59e2bb,!![]);}catch(_0x1454f3){return BPromise[_0x6736('0x23')](_0x1454f3);}return _0x445064[_0x6736('0x24')]();};}function saveUpdates(_0x36b84d,_0x3f59d5){return function(_0x4b2600){if(_0x4b2600){return _0x4b2600[_0x6736('0x25')](_0x36b84d)[_0x6736('0x26')](function(_0x256f03){return _0x256f03;});}return null;};}function removeEntity(_0x2cc815,_0x2e7692){return function(_0xf2957d){if(_0xf2957d){return _0xf2957d[_0x6736('0x27')]()['then'](function(){var _0x2b668c=_0xf2957d[_0x6736('0x28')]({'plain':!![]});var _0x3f3bef=_0x6736('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x3f3bef,'resourceId':_0x2b668c['id']}})[_0x6736('0x26')](function(){return _0xf2957d;});})[_0x6736('0x26')](function(){_0x2cc815[_0x6736('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e5948,_0xa94fb5){return function(_0x27c023){if(!_0x27c023){_0x4e5948[_0x6736('0x18')](0x194);}return _0x27c023;};}function handleError(_0x312b04,_0x4d9afa){_0x4d9afa=_0x4d9afa||0x1f4;return function(_0x4e3264){logger['error'](_0x4e3264[_0x6736('0x2a')]);if(_0x4e3264[_0x6736('0x2b')]){delete _0x4e3264[_0x6736('0x2b')];}_0x312b04[_0x6736('0x19')](_0x4d9afa)['send'](_0x4e3264);};}exports[_0x6736('0x2c')]=function(_0x2c4b68,_0x22952c){var _0x38c7ad={},_0x1bd818={},_0x32c394={'count':0x0,'rows':[]};var _0x3a698d=_[_0x6736('0x2d')](db[_0x6736('0x2e')][_0x6736('0x2f')],function(_0xbeae1c){return{'name':_0xbeae1c['fieldName'],'type':_0xbeae1c[_0x6736('0x30')][_0x6736('0x31')]};});_0x1bd818[_0x6736('0x32')]=_['map'](_0x3a698d,_0x6736('0x2b'));_0x1bd818[_0x6736('0x33')]=_['keys'](_0x2c4b68[_0x6736('0x33')]);_0x1bd818[_0x6736('0x34')]=_[_0x6736('0x35')](_0x1bd818[_0x6736('0x32')],_0x1bd818[_0x6736('0x33')]);_0x38c7ad[_0x6736('0x36')]=_[_0x6736('0x35')](_0x1bd818[_0x6736('0x32')],qs['fields'](_0x2c4b68[_0x6736('0x33')]['fields']));_0x38c7ad['attributes']=_0x38c7ad['attributes'][_0x6736('0x37')]?_0x38c7ad['attributes']:_0x1bd818[_0x6736('0x32')];if(!_0x2c4b68[_0x6736('0x33')]['hasOwnProperty'](_0x6736('0x38'))){_0x38c7ad[_0x6736('0x1e')]=qs[_0x6736('0x1e')](_0x2c4b68['query']['limit']);_0x38c7ad[_0x6736('0x1c')]=qs['offset'](_0x2c4b68[_0x6736('0x33')][_0x6736('0x1c')]);}_0x38c7ad[_0x6736('0x39')]=qs['sort'](_0x2c4b68[_0x6736('0x33')]['sort']);_0x38c7ad[_0x6736('0x3a')]=qs[_0x6736('0x34')](_[_0x6736('0x3b')](_0x2c4b68[_0x6736('0x33')],_0x1bd818[_0x6736('0x34')]),_0x3a698d);if(_0x2c4b68['query']['filter']){_0x38c7ad[_0x6736('0x3a')]=_['merge'](_0x38c7ad[_0x6736('0x3a')],{'$or':_[_0x6736('0x2d')](_0x3a698d,function(_0x3b1cd5){if(_0x3b1cd5[_0x6736('0x30')]!=='VIRTUAL'){var _0x3adee5={};_0x3adee5[_0x3b1cd5[_0x6736('0x2b')]]={'$like':'%'+_0x2c4b68[_0x6736('0x33')]['filter']+'%'};return _0x3adee5;}})});}_0x38c7ad=_[_0x6736('0x3c')]({},_0x38c7ad,_0x2c4b68['options']);var _0x4bcde3={'where':_0x38c7ad[_0x6736('0x3a')]};return db[_0x6736('0x2e')][_0x6736('0x1f')](_0x4bcde3)[_0x6736('0x26')](function(_0x5e167e){_0x32c394[_0x6736('0x1f')]=_0x5e167e;if(_0x2c4b68[_0x6736('0x33')]['includeAll']){_0x38c7ad[_0x6736('0x3d')]=[{'all':!![]}];}return db[_0x6736('0x2e')]['findAll'](_0x38c7ad);})['then'](function(_0x210fb6){_0x32c394[_0x6736('0x3e')]=_0x210fb6;return _0x32c394;})[_0x6736('0x26')](respondWithFilteredResult(_0x22952c,_0x38c7ad))[_0x6736('0x3f')](handleError(_0x22952c,null));};exports[_0x6736('0x40')]=function(_0x2e2884,_0x4e55dd){var _0x4244ef={'raw':![],'where':{'id':_0x2e2884['params']['id']}},_0x398984={};_0x398984[_0x6736('0x32')]=_[_0x6736('0x41')](db['JscriptyProject'][_0x6736('0x2f')]);_0x398984[_0x6736('0x33')]=_[_0x6736('0x41')](_0x2e2884[_0x6736('0x33')]);_0x398984['filters']=_[_0x6736('0x35')](_0x398984[_0x6736('0x32')],_0x398984[_0x6736('0x33')]);_0x4244ef[_0x6736('0x36')]=_[_0x6736('0x35')](_0x398984[_0x6736('0x32')],qs[_0x6736('0x42')](_0x2e2884[_0x6736('0x33')]['fields']));_0x4244ef[_0x6736('0x36')]=_0x4244ef['attributes'][_0x6736('0x37')]?_0x4244ef[_0x6736('0x36')]:_0x398984[_0x6736('0x32')];if(_0x2e2884[_0x6736('0x33')][_0x6736('0x43')]){_0x4244ef['include']=[{'all':!![]}];}_0x4244ef=_[_0x6736('0x3c')]({},_0x4244ef,_0x2e2884[_0x6736('0x44')]);return db[_0x6736('0x2e')][_0x6736('0x45')](_0x4244ef)['then'](handleEntityNotFound(_0x4e55dd,null))[_0x6736('0x26')](respondWithResult(_0x4e55dd,null))[_0x6736('0x3f')](handleError(_0x4e55dd,null));};exports[_0x6736('0x46')]=function(_0x35cb1f,_0x4810b7){return db[_0x6736('0x2e')][_0x6736('0x46')](_0x35cb1f[_0x6736('0x47')],{})[_0x6736('0x26')](function(_0x3c5e00){var _0x349490=_0x35cb1f['user'][_0x6736('0x28')]({'plain':!![]});if(!_0x349490)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x349490[_0x6736('0x48')]===_0x6736('0x49')){var _0x1cb7b4=_0x3c5e00[_0x6736('0x28')]({'plain':!![]});var _0x2d623d=_0x6736('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x2d623d,'userProfileId':_0x349490['userProfileId']},'raw':!![]})[_0x6736('0x26')](function(_0x1aa098){if(_0x1aa098&&_0x1aa098[_0x6736('0x4a')]===0x0){return db[_0x6736('0x4b')][_0x6736('0x46')]({'name':_0x1cb7b4['name'],'resourceId':_0x1cb7b4['id'],'type':_0x1aa098[_0x6736('0x2b')],'sectionId':_0x1aa098['id']},{})[_0x6736('0x26')](function(){return _0x3c5e00;});}else{return _0x3c5e00;}})[_0x6736('0x3f')](function(_0x40eea1){logger[_0x6736('0x4c')](_0x6736('0x4d'),_0x40eea1);throw _0x40eea1;});}return _0x3c5e00;})['then'](respondWithResult(_0x4810b7,0xc9))[_0x6736('0x3f')](handleError(_0x4810b7,null));};exports[_0x6736('0x4e')]=function(_0x3cdff3,_0x1204aa){var _0x3a072a={'where':{'id':_0x3cdff3[_0x6736('0x4f')]['id']}},_0x53f46d={};_0x53f46d[_0x6736('0x32')]=_['keys'](db[_0x6736('0x2e')][_0x6736('0x2f')]);_0x3a072a[_0x6736('0x36')]=_[_0x6736('0x35')](_0x53f46d[_0x6736('0x32')],qs[_0x6736('0x42')](_0x3cdff3[_0x6736('0x33')][_0x6736('0x42')]));_0x3a072a['attributes']=_0x3a072a['attributes'][_0x6736('0x37')]?_0x3a072a['attributes']:_0x53f46d[_0x6736('0x32')];if(_0x3cdff3['query'][_0x6736('0x43')]){_0x3a072a[_0x6736('0x3d')]=[{'all':!![]}];}_0x3a072a=_[_0x6736('0x3c')]({},_0x3a072a,_0x3cdff3[_0x6736('0x44')]);return db[_0x6736('0x2e')][_0x6736('0x45')](_0x3a072a)['then'](handleEntityNotFound(_0x1204aa,null))[_0x6736('0x26')](function(_0x5b643e){if(_0x5b643e){var _0x257fac=_0x5b643e[_0x6736('0x28')]({'plain':!![]});_0x257fac=qs[_0x6736('0x50')](_0x257fac,['id',_0x6736('0x51'),_0x6736('0x52')]);_0x3cdff3['body']=_['omit'](_0x3cdff3[_0x6736('0x47')],['id','createdAt',_0x6736('0x52')]);return db[_0x6736('0x2e')]['create'](_[_0x6736('0x3c')](_0x257fac,_0x3cdff3[_0x6736('0x47')]),{'include':_0x3cdff3['query'][_0x6736('0x43')]?[{'all':!![]}]:undefined})['then'](function(_0x1dd90a){var _0x1bf0ca=_0x3cdff3[_0x6736('0x49')][_0x6736('0x28')]({'plain':!![]});if(!_0x1bf0ca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1bf0ca[_0x6736('0x48')]===_0x6736('0x49')){var _0x33b647=_0x1dd90a['get']({'plain':!![]});var _0x310a72=_0x6736('0x29');return db[_0x6736('0x53')][_0x6736('0x45')]({'where':{'name':_0x310a72,'userProfileId':_0x1bf0ca['userProfileId']},'raw':!![]})['then'](function(_0x5998aa){if(_0x5998aa&&_0x5998aa[_0x6736('0x4a')]===0x0){return db[_0x6736('0x4b')][_0x6736('0x46')]({'name':_0x33b647[_0x6736('0x2b')],'resourceId':_0x33b647['id'],'type':_0x5998aa[_0x6736('0x2b')],'sectionId':_0x5998aa['id']},{})['then'](function(){return _0x1dd90a;});}else{return _0x1dd90a;}})[_0x6736('0x3f')](function(_0x467b20){logger[_0x6736('0x4c')](_0x6736('0x4d'),_0x467b20);throw _0x467b20;});}return _0x1dd90a;});}})[_0x6736('0x26')](respondWithResult(_0x1204aa,0xc9))[_0x6736('0x3f')](handleError(_0x1204aa,null));};exports['update']=function(_0x1b912d,_0x12a635){if(_0x1b912d[_0x6736('0x47')]['id']){delete _0x1b912d[_0x6736('0x47')]['id'];}return db[_0x6736('0x2e')][_0x6736('0x45')]({'where':{'id':_0x1b912d[_0x6736('0x4f')]['id']}})[_0x6736('0x26')](handleEntityNotFound(_0x12a635,null))[_0x6736('0x26')](saveUpdates(_0x1b912d[_0x6736('0x47')],null))['then'](respondWithResult(_0x12a635,null))[_0x6736('0x3f')](handleError(_0x12a635,null));};exports[_0x6736('0x27')]=function(_0x5004a0,_0xbcd9dd){return db[_0x6736('0x2e')]['find']({'where':{'id':_0x5004a0[_0x6736('0x4f')]['id']}})[_0x6736('0x26')](handleEntityNotFound(_0xbcd9dd,null))['then'](removeEntity(_0xbcd9dd,null))['catch'](handleError(_0xbcd9dd,null));};exports[_0x6736('0x54')]=function(_0x435dd0,_0x3e12f1,_0x11af3b){var _0x7d837e={'raw':!![],'where':{}};var _0x5fba27={};var _0x37f869={'count':0x0,'rows':[]};return db[_0x6736('0x2e')][_0x6736('0x55')]({'where':{'id':_0x435dd0[_0x6736('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3e12f1,null))['then'](function(_0x276863){if(_0x276863){_0x5fba27[_0x6736('0x32')]=_[_0x6736('0x41')](db['JscriptySessionReport'][_0x6736('0x2f')]);_0x5fba27[_0x6736('0x33')]=_[_0x6736('0x41')](_0x435dd0[_0x6736('0x33')]);_0x5fba27['filters']=_[_0x6736('0x35')](_0x5fba27[_0x6736('0x32')],_0x5fba27['query']);_0x7d837e[_0x6736('0x36')]=_['intersection'](_0x5fba27[_0x6736('0x32')],qs[_0x6736('0x42')](_0x435dd0[_0x6736('0x33')][_0x6736('0x42')]));_0x7d837e['attributes']=_0x7d837e[_0x6736('0x36')][_0x6736('0x37')]?_0x7d837e['attributes']:_0x5fba27[_0x6736('0x32')];if(!_0x435dd0[_0x6736('0x33')][_0x6736('0x56')](_0x6736('0x38'))){_0x7d837e['limit']=qs[_0x6736('0x1e')](_0x435dd0[_0x6736('0x33')][_0x6736('0x1e')]);_0x7d837e[_0x6736('0x1c')]=qs[_0x6736('0x1c')](_0x435dd0[_0x6736('0x33')]['offset']);}_0x7d837e[_0x6736('0x39')]=qs[_0x6736('0x57')](_0x435dd0[_0x6736('0x33')][_0x6736('0x57')]);_0x7d837e[_0x6736('0x3a')]=qs[_0x6736('0x34')](_['pick'](_0x435dd0['query'],_0x5fba27[_0x6736('0x34')]));_0x7d837e[_0x6736('0x3a')][_0x6736('0x58')]=_0x276863['id'];if(_0x435dd0[_0x6736('0x33')][_0x6736('0x59')]){_0x7d837e[_0x6736('0x3a')]=_[_0x6736('0x3c')](_0x7d837e[_0x6736('0x3a')],{'$or':_['map'](_0x7d837e[_0x6736('0x36')],function(_0x2646d3){var _0x492996={};_0x492996[_0x2646d3]={'$like':'%'+_0x435dd0[_0x6736('0x33')][_0x6736('0x59')]+'%'};return _0x492996;})});}_0x7d837e=_[_0x6736('0x3c')]({},_0x7d837e,_0x435dd0['options']);return db['JscriptySessionReport'][_0x6736('0x1f')]({'where':_0x7d837e[_0x6736('0x3a')]})['then'](function(_0x6cc4fd){_0x37f869['count']=_0x6cc4fd;if(_0x435dd0[_0x6736('0x33')][_0x6736('0x43')]){_0x7d837e['include']=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x7d837e);})[_0x6736('0x26')](function(_0x270a8e){_0x37f869[_0x6736('0x3e')]=_0x270a8e;return _0x37f869;});}})['then'](respondWithFilteredResult(_0x3e12f1,_0x7d837e))[_0x6736('0x3f')](handleError(_0x3e12f1,null));};exports['getAnswers']=function(_0x5a2293,_0x4fff52,_0x10ae75){var _0x5a1deb={'raw':!![],'where':{}};var _0x4fd26f={};var _0x47fd87={'count':0x0,'rows':[]};return db[_0x6736('0x2e')][_0x6736('0x55')]({'where':{'id':_0x5a2293['params']['id']}})[_0x6736('0x26')](handleEntityNotFound(_0x4fff52,null))[_0x6736('0x26')](function(_0x4b2c01){if(_0x4b2c01){_0x4fd26f['model']=_[_0x6736('0x41')](db['JscriptyAnswerReport'][_0x6736('0x2f')]);_0x4fd26f[_0x6736('0x33')]=_[_0x6736('0x41')](_0x5a2293[_0x6736('0x33')]);_0x4fd26f['filters']=_[_0x6736('0x35')](_0x4fd26f['model'],_0x4fd26f['query']);_0x5a1deb['attributes']=_['intersection'](_0x4fd26f[_0x6736('0x32')],qs[_0x6736('0x42')](_0x5a2293[_0x6736('0x33')]['fields']));_0x5a1deb['attributes']=_0x5a1deb[_0x6736('0x36')][_0x6736('0x37')]?_0x5a1deb['attributes']:_0x4fd26f[_0x6736('0x32')];if(!_0x5a2293[_0x6736('0x33')][_0x6736('0x56')]('nolimit')){_0x5a1deb[_0x6736('0x1e')]=qs['limit'](_0x5a2293['query'][_0x6736('0x1e')]);_0x5a1deb[_0x6736('0x1c')]=qs[_0x6736('0x1c')](_0x5a2293[_0x6736('0x33')][_0x6736('0x1c')]);}_0x5a1deb[_0x6736('0x39')]=qs[_0x6736('0x57')](_0x5a2293[_0x6736('0x33')][_0x6736('0x57')]);_0x5a1deb['where']=qs['filters'](_['pick'](_0x5a2293[_0x6736('0x33')],_0x4fd26f['filters']));_0x5a1deb[_0x6736('0x3a')][_0x6736('0x58')]=_0x4b2c01['id'];if(_0x5a2293[_0x6736('0x33')][_0x6736('0x59')]){_0x5a1deb['where']=_['merge'](_0x5a1deb[_0x6736('0x3a')],{'$or':_['map'](_0x5a1deb[_0x6736('0x36')],function(_0x59edea){var _0x20429c={};_0x20429c[_0x59edea]={'$like':'%'+_0x5a2293[_0x6736('0x33')][_0x6736('0x59')]+'%'};return _0x20429c;})});}_0x5a1deb=_[_0x6736('0x3c')]({},_0x5a1deb,_0x5a2293[_0x6736('0x44')]);return db['JscriptyAnswerReport']['count']({'where':_0x5a1deb['where']})['then'](function(_0x19c68a){_0x47fd87['count']=_0x19c68a;if(_0x5a2293[_0x6736('0x33')][_0x6736('0x43')]){_0x5a1deb[_0x6736('0x3d')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x6736('0x5a')](_0x5a1deb);})[_0x6736('0x26')](function(_0x2a4b19){_0x47fd87['rows']=_0x2a4b19;return _0x47fd87;});}})[_0x6736('0x26')](respondWithFilteredResult(_0x4fff52,_0x5a1deb))['catch'](handleError(_0x4fff52,null));};function char(_0x2fa90a){return _0x6736('0x5b')===typeof _0x2fa90a?String[_0x6736('0x5c')][_0x6736('0x22')](null,arguments):_0x2fa90a;}function needsEncapsulation(_0x12688f){return!!_0x12688f&&(_0x12688f['toString']()[_0x6736('0x5d')](char(0xd))>=0x0||_0x12688f[_0x6736('0x5e')]()[_0x6736('0x5d')](char(0xa))>=0x0||_0x12688f[_0x6736('0x5e')]()[_0x6736('0x5d')](char(0x2c))>=0x0||_0x12688f[_0x6736('0x5e')]()[_0x6736('0x5d')](char(0x22))>=0x0);}function encapsulate(_0x8c5b3b){var _0x388c26=char(0x22),_0x20622c='\x5c'+char(0x22),_0x391db5=_0x8c5b3b[_0x6736('0x5e')]()['replace'](new RegExp(_0x388c26,'g'),_0x20622c);return _0x388c26+_0x391db5+_0x388c26;}exports[_0x6736('0x5f')]=function(_0x3ffc7d,_0x2f8097,_0x1f7891){var _0x29c29e,_0x412ce6;var _0x33c7aa={'where':{'ProjectId':_0x3ffc7d[_0x6736('0x4f')]['id']}};if(_0x3ffc7d['query'][_0x6736('0x60')]){_0x33c7aa[_0x6736('0x3a')][_0x6736('0x61')]=JSON['parse'](_0x3ffc7d[_0x6736('0x33')][_0x6736('0x60')]);}return db[_0x6736('0x62')]['findAll'](_0x33c7aa)[_0x6736('0x26')](handleEntityNotFound(_0x2f8097,null))['then'](function(_0x45f290){if(_0x45f290){_0x29c29e=_0x45f290;return db['JscriptyQuestionReport'][_0x6736('0x5a')]({'where':{'SessionId':{'$in':_[_0x6736('0x2d')](_0x29c29e,'id')},'ProjectId':_0x3ffc7d[_0x6736('0x4f')]['id']},'order':_0x6736('0x63')});}})[_0x6736('0x26')](handleEntityNotFound(_0x2f8097,null))['then'](function(_0x47b303){if(_0x47b303){_0x412ce6=_0x47b303;var _0x1d23a9={};for(var _0x5105ae=0x0,_0x3ed18b=_0x412ce6[_0x6736('0x37')];_0x5105ae<_0x3ed18b;_0x5105ae++){if(!_0x1d23a9[_0x6736('0x56')](_0x412ce6[_0x5105ae]['questionId'])){_0x1d23a9[_0x412ce6[_0x5105ae]['questionId']]=needsEncapsulation(_0x412ce6[_0x5105ae][_0x6736('0x64')])?encapsulate(_0x412ce6[_0x5105ae][_0x6736('0x64')]):_0x412ce6[_0x5105ae][_0x6736('0x64')];}}var _0x13b9aa=[],_0x248149={};for(var _0x4a4dda=0x0,_0x5a25dc=_0x29c29e['length'];_0x4a4dda<_0x5a25dc;_0x4a4dda++){_0x248149={'ProjectId':_0x3ffc7d[_0x6736('0x4f')]['id'],'SessionId':_0x29c29e[_0x4a4dda]['id'],'StartTime':moment(_0x29c29e[_0x4a4dda][_0x6736('0x61')])[_0x6736('0x65')](_0x6736('0x66'))};for(var _0x36c67d=0x0,_0x166a60=_0x412ce6[_0x6736('0x37')];_0x36c67d<_0x166a60;_0x36c67d++){if(_0x412ce6[_0x36c67d][_0x6736('0x67')]==_0x29c29e[_0x4a4dda]['id']&&_0x1d23a9['hasOwnProperty'](_0x412ce6[_0x36c67d][_0x6736('0x68')])){_0x248149[_0x1d23a9[_0x412ce6[_0x36c67d][_0x6736('0x68')]]]=_0x412ce6[_0x36c67d][_0x6736('0x69')];}}for(var _0x329443 in _0x1d23a9){if(!_0x248149[_0x6736('0x56')](_0x1d23a9[_0x329443])){_0x248149[_0x1d23a9[_0x329443]]=null;}}_0x13b9aa['push'](_0x248149);}return _0x13b9aa;}})[_0x6736('0x26')](function(_0x1084fd){if(!_[_0x6736('0x6a')](_0x1084fd)){var _0x3ade9e=toCsv(_0x1084fd);var _0x49fe5f=Date[_0x6736('0x6b')]();fs[_0x6736('0x6c')](util['format'](_0x6736('0x6d'),_0x3ffc7d['params']['id'],_0x49fe5f),_0x3ade9e);_0x2f8097[_0x6736('0x6e')](_0x6736('0x6f'),'attachment;\x20filename='+util[_0x6736('0x65')](_0x6736('0x70'),_0x3ffc7d['params']['id'],_0x49fe5f));_0x2f8097[_0x6736('0x6e')](_0x6736('0x71'),_0x6736('0x72'));return _0x2f8097[_0x6736('0x73')](util['format'](_0x6736('0x6d'),_0x3ffc7d[_0x6736('0x4f')]['id'],_0x49fe5f));}else{return _0x2f8097[_0x6736('0x18')](0xcc);}})[_0x6736('0x3f')](handleError(_0x2f8097,null));};
\ No newline at end of file
index 9a9c5e5..65db250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c88=['./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x32084f,_0x28fc38){var _0x187302=function(_0x481c2b){while(--_0x481c2b){_0x32084f['push'](_0x32084f['shift']());}};_0x187302(++_0x28fc38);}(_0x1c88,0x1a9));var _0x81c8=function(_0x31db70,_0x62d245){_0x31db70=_0x31db70-0x0;var _0x5623a4=_0x1c88[_0x31db70];return _0x5623a4;};'use strict';var _=require(_0x81c8('0x0'));var util=require('util');var logger=require(_0x81c8('0x1'))(_0x81c8('0x2'));var moment=require(_0x81c8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x81c8('0x4'));var rimraf=require(_0x81c8('0x5'));var config=require(_0x81c8('0x6'));var attributes=require(_0x81c8('0x7'));module[_0x81c8('0x8')]=function(_0x3e5721,_0x3f4e27){return _0x3e5721[_0x81c8('0x9')](_0x81c8('0xa'),attributes,{'tableName':_0x81c8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1501=['bluebird','request-promise','path','rimraf','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects','util','../../config/logger','api'];(function(_0x580f33,_0x4d524d){var _0x4f9e76=function(_0x5222da){while(--_0x5222da){_0x580f33['push'](_0x580f33['shift']());}};_0x4f9e76(++_0x4d524d);}(_0x1501,0x126));var _0x1150=function(_0x35ce13,_0x12d22b){_0x35ce13=_0x35ce13-0x0;var _0x2addc6=_0x1501[_0x35ce13];return _0x2addc6;};'use strict';var _=require('lodash');var util=require(_0x1150('0x0'));var logger=require(_0x1150('0x1'))(_0x1150('0x2'));var moment=require('moment');var BPromise=require(_0x1150('0x3'));var rp=require(_0x1150('0x4'));var fs=require('fs');var path=require(_0x1150('0x5'));var rimraf=require(_0x1150('0x6'));var config=require('../../config/environment');var attributes=require(_0x1150('0x7'));module['exports']=function(_0x63c724,_0x316a7d){return _0x63c724[_0x1150('0x8')](_0x1150('0x9'),attributes,{'tableName':_0x1150('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e17aeff..74d2e6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','JscriptyProject,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x38d9cb,_0x30654d){_0x38d9cb=_0x38d9cb-0x0;var _0x15102a=_0xbdb7[_0x38d9cb];return _0x15102a;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
+var _0xac4a=['JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xac4a,0x13f));var _0xaac4=function(_0x2f6917,_0x11f4ed){_0x2f6917=_0x2f6917-0x0;var _0x438afe=_0xac4a[_0x2f6917];return _0x438afe;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 9ec1b15..75c7572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc443=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','post','create','/:id'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xc443,0xb4));var _0x3c44=function(_0x8e564d,_0x2c04c3){_0x8e564d=_0x8e564d-0x0;var _0x244ac0=_0xc443[_0x8e564d];return _0x244ac0;};'use strict';var multer=require(_0x3c44('0x0'));var util=require(_0x3c44('0x1'));var path=require(_0x3c44('0x2'));var timeout=require(_0x3c44('0x3'));var express=require(_0x3c44('0x4'));var router=express[_0x3c44('0x5')]();var fs_extra=require(_0x3c44('0x6'));var auth=require(_0x3c44('0x7'));var interaction=require(_0x3c44('0x8'));var config=require(_0x3c44('0x9'));var controller=require('./jscriptyQuestionReport.controller');router[_0x3c44('0xa')]('/',auth[_0x3c44('0xb')](),controller[_0x3c44('0xc')]);router[_0x3c44('0xa')]('/describe',auth[_0x3c44('0xb')](),controller[_0x3c44('0xd')]);router[_0x3c44('0xa')]('/:id',auth[_0x3c44('0xb')](),controller[_0x3c44('0xe')]);router[_0x3c44('0xf')]('/',auth['isAuthenticated'](),controller[_0x3c44('0x10')]);router['put'](_0x3c44('0x11'),auth['isAuthenticated'](),controller[_0x3c44('0x12')]);router[_0x3c44('0x13')]('/:id',auth[_0x3c44('0xb')](),controller[_0x3c44('0x14')]);module[_0x3c44('0x15')]=router;
\ No newline at end of file
+var _0xa99a=['/describe','describe','/:id','show','post','create','put','update','delete','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','isAuthenticated','get'];(function(_0x440f73,_0x35a6c2){var _0x2a299b=function(_0x220b3f){while(--_0x220b3f){_0x440f73['push'](_0x440f73['shift']());}};_0x2a299b(++_0x35a6c2);}(_0xa99a,0x1cb));var _0xaa99=function(_0x43c373,_0x487051){_0x43c373=_0x43c373-0x0;var _0x2949cc=_0xa99a[_0x43c373];return _0x2949cc;};'use strict';var multer=require('multer');var util=require(_0xaa99('0x0'));var path=require(_0xaa99('0x1'));var timeout=require(_0xaa99('0x2'));var express=require(_0xaa99('0x3'));var router=express[_0xaa99('0x4')]();var fs_extra=require(_0xaa99('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xaa99('0x6'));var config=require('../../config/environment');var controller=require('./jscriptyQuestionReport.controller');router['get']('/',auth[_0xaa99('0x7')](),controller['index']);router[_0xaa99('0x8')](_0xaa99('0x9'),auth['isAuthenticated'](),controller[_0xaa99('0xa')]);router[_0xaa99('0x8')](_0xaa99('0xb'),auth['isAuthenticated'](),controller[_0xaa99('0xc')]);router[_0xaa99('0xd')]('/',auth[_0xaa99('0x7')](),controller[_0xaa99('0xe')]);router[_0xaa99('0xf')](_0xaa99('0xb'),auth[_0xaa99('0x7')](),controller[_0xaa99('0x10')]);router[_0xaa99('0x11')](_0xaa99('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 94e2cc2..fbd6da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x7a54,0x106));var _0x47a5=function(_0x2baaf7,_0x4cdd0d){_0x2baaf7=_0x2baaf7-0x0;var _0x2a84fa=_0x7a54[_0x2baaf7];return _0x2a84fa;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x7a54,0x106));var _0x47a5=function(_0xdf520f,_0x145a59){_0xdf520f=_0xdf520f-0x0;var _0x467a47=_0x7a54[_0xdf520f];return _0x467a47;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index cc5537a..3fd52b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f9=['fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','rows','catch','show','params','length','includeAll','find','create','body','destroy','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','error','stack','name','send','index','map','JscriptyQuestionReport','rawAttributes'];(function(_0x38b48d,_0x240bd3){var _0x5a0e3f=function(_0x3ac6ec){while(--_0x3ac6ec){_0x38b48d['push'](_0x38b48d['shift']());}};_0x5a0e3f(++_0x240bd3);}(_0x04f9,0xb8));var _0x904f=function(_0x44ad60,_0x47907e){_0x44ad60=_0x44ad60-0x0;var _0x1d574c=_0x04f9[_0x44ad60];return _0x1d574c;};'use strict';var emlformat=require(_0x904f('0x0'));var rimraf=require(_0x904f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x904f('0x2'));var moment=require('moment');var BPromise=require(_0x904f('0x3'));var Mustache=require(_0x904f('0x4'));var util=require(_0x904f('0x5'));var path=require(_0x904f('0x6'));var sox=require(_0x904f('0x7'));var csv=require('to-csv');var ejs=require(_0x904f('0x8'));var fs=require('fs');var fs_extra=require(_0x904f('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x904f('0xa'));var deskjs=require(_0x904f('0xb'));var toCsv=require(_0x904f('0xc'));var querystring=require(_0x904f('0xd'));var Papa=require(_0x904f('0xe'));var Redis=require(_0x904f('0xf'));var authService=require(_0x904f('0x10'));var qs=require(_0x904f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x904f('0x12'));var logger=require(_0x904f('0x13'))(_0x904f('0x14'));var utils=require(_0x904f('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x904f('0x16'))['db'];function respondWithStatusCode(_0x50780a,_0x49e07e){_0x49e07e=_0x49e07e||0xcc;return function(_0x5b59ec){if(_0x5b59ec){return _0x50780a[_0x904f('0x17')](_0x49e07e);}return _0x50780a[_0x904f('0x18')](_0x49e07e)[_0x904f('0x19')]();};}function respondWithResult(_0x14c396,_0x3f1209){_0x3f1209=_0x3f1209||0xc8;return function(_0x19a9c5){if(_0x19a9c5){return _0x14c396[_0x904f('0x18')](_0x3f1209)[_0x904f('0x1a')](_0x19a9c5);}};}function respondWithFilteredResult(_0x39f56d,_0x472ccd){return function(_0x1e79e8){if(_0x1e79e8){var _0x10c311=typeof _0x472ccd[_0x904f('0x1b')]==='undefined'&&typeof _0x472ccd[_0x904f('0x1c')]===_0x904f('0x1d');var _0x42887d=_0x1e79e8[_0x904f('0x1e')];var _0xb74509=_0x10c311?0x0:_0x472ccd[_0x904f('0x1b')];var _0x5ee2df=_0x10c311?_0x1e79e8[_0x904f('0x1e')]:_0x472ccd['offset']+_0x472ccd[_0x904f('0x1c')];var _0x2a24c1;if(_0x5ee2df>=_0x42887d){_0x5ee2df=_0x42887d;_0x2a24c1=0xc8;}else{_0x2a24c1=0xce;}_0x39f56d[_0x904f('0x18')](_0x2a24c1);return _0x39f56d['set'](_0x904f('0x1f'),_0xb74509+'-'+_0x5ee2df+'/'+_0x42887d)[_0x904f('0x1a')](_0x1e79e8);}return null;};}function patchUpdates(_0x131322){return function(_0x45d438){try{jsonpatch['apply'](_0x45d438,_0x131322,!![]);}catch(_0x385ada){return BPromise[_0x904f('0x20')](_0x385ada);}return _0x45d438[_0x904f('0x21')]();};}function saveUpdates(_0x3f50e1,_0x4bd2ee){return function(_0x195d57){if(_0x195d57){return _0x195d57[_0x904f('0x22')](_0x3f50e1)[_0x904f('0x23')](function(_0x20d048){return _0x20d048;});}return null;};}function removeEntity(_0x4cda98,_0x1a818b){return function(_0x589e21){if(_0x589e21){return _0x589e21['destroy']()['then'](function(){_0x4cda98[_0x904f('0x18')](0xcc)[_0x904f('0x19')]();});}};}function handleEntityNotFound(_0x22290b,_0x4fd883){return function(_0x1fcd93){if(!_0x1fcd93){_0x22290b[_0x904f('0x17')](0x194);}return _0x1fcd93;};}function handleError(_0x24f036,_0x58d020){_0x58d020=_0x58d020||0x1f4;return function(_0x4d8ea5){logger[_0x904f('0x24')](_0x4d8ea5[_0x904f('0x25')]);if(_0x4d8ea5[_0x904f('0x26')]){delete _0x4d8ea5[_0x904f('0x26')];}_0x24f036['status'](_0x58d020)[_0x904f('0x27')](_0x4d8ea5);};}exports[_0x904f('0x28')]=function(_0x4af3c0,_0x2ae1c8){var _0x4db9fc={},_0x1f5d4e={},_0x4724f3={'count':0x0,'rows':[]};var _0x4ec6d5=_[_0x904f('0x29')](db[_0x904f('0x2a')][_0x904f('0x2b')],function(_0x1d89e9){return{'name':_0x1d89e9[_0x904f('0x2c')],'type':_0x1d89e9[_0x904f('0x2d')][_0x904f('0x2e')]};});_0x1f5d4e['model']=_[_0x904f('0x29')](_0x4ec6d5,_0x904f('0x26'));_0x1f5d4e[_0x904f('0x2f')]=_[_0x904f('0x30')](_0x4af3c0[_0x904f('0x2f')]);_0x1f5d4e[_0x904f('0x31')]=_['intersection'](_0x1f5d4e[_0x904f('0x32')],_0x1f5d4e[_0x904f('0x2f')]);_0x4db9fc[_0x904f('0x33')]=_[_0x904f('0x34')](_0x1f5d4e[_0x904f('0x32')],qs[_0x904f('0x35')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x35')]));_0x4db9fc[_0x904f('0x33')]=_0x4db9fc['attributes']['length']?_0x4db9fc[_0x904f('0x33')]:_0x1f5d4e[_0x904f('0x32')];if(!_0x4af3c0[_0x904f('0x2f')][_0x904f('0x36')](_0x904f('0x37'))){_0x4db9fc[_0x904f('0x1c')]=qs[_0x904f('0x1c')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x1c')]);_0x4db9fc[_0x904f('0x1b')]=qs[_0x904f('0x1b')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x1b')]);}_0x4db9fc[_0x904f('0x38')]=qs[_0x904f('0x39')](_0x4af3c0[_0x904f('0x2f')][_0x904f('0x39')]);_0x4db9fc['where']=qs[_0x904f('0x31')](_[_0x904f('0x3a')](_0x4af3c0['query'],_0x1f5d4e[_0x904f('0x31')]),_0x4ec6d5);if(_0x4af3c0[_0x904f('0x2f')][_0x904f('0x3b')]){_0x4db9fc[_0x904f('0x3c')]=_['merge'](_0x4db9fc[_0x904f('0x3c')],{'$or':_[_0x904f('0x29')](_0x4ec6d5,function(_0x38decc){if(_0x38decc[_0x904f('0x2d')]!==_0x904f('0x3d')){var _0x3fb474={};_0x3fb474[_0x38decc[_0x904f('0x26')]]={'$like':'%'+_0x4af3c0[_0x904f('0x2f')][_0x904f('0x3b')]+'%'};return _0x3fb474;}})});}_0x4db9fc=_[_0x904f('0x3e')]({},_0x4db9fc,_0x4af3c0[_0x904f('0x3f')]);var _0xd506e1={'where':_0x4db9fc['where']};return db[_0x904f('0x2a')][_0x904f('0x1e')](_0xd506e1)[_0x904f('0x23')](function(_0x1d3136){_0x4724f3[_0x904f('0x1e')]=_0x1d3136;if(_0x4af3c0['query']['includeAll']){_0x4db9fc[_0x904f('0x40')]=[{'all':!![]}];}return db[_0x904f('0x2a')]['findAll'](_0x4db9fc);})[_0x904f('0x23')](function(_0x5c664e){_0x4724f3[_0x904f('0x41')]=_0x5c664e;return _0x4724f3;})['then'](respondWithFilteredResult(_0x2ae1c8,_0x4db9fc))[_0x904f('0x42')](handleError(_0x2ae1c8,null));};exports[_0x904f('0x43')]=function(_0x163305,_0x10252e){var _0x3b0621={'raw':!![],'where':{'id':_0x163305[_0x904f('0x44')]['id']}},_0x487152={};_0x487152[_0x904f('0x32')]=_['keys'](db['JscriptyQuestionReport'][_0x904f('0x2b')]);_0x487152[_0x904f('0x2f')]=_[_0x904f('0x30')](_0x163305[_0x904f('0x2f')]);_0x487152[_0x904f('0x31')]=_[_0x904f('0x34')](_0x487152[_0x904f('0x32')],_0x487152[_0x904f('0x2f')]);_0x3b0621['attributes']=_[_0x904f('0x34')](_0x487152[_0x904f('0x32')],qs['fields'](_0x163305['query']['fields']));_0x3b0621[_0x904f('0x33')]=_0x3b0621[_0x904f('0x33')][_0x904f('0x45')]?_0x3b0621[_0x904f('0x33')]:_0x487152[_0x904f('0x32')];if(_0x163305['query'][_0x904f('0x46')]){_0x3b0621[_0x904f('0x40')]=[{'all':!![]}];}_0x3b0621=_[_0x904f('0x3e')]({},_0x3b0621,_0x163305[_0x904f('0x3f')]);return db[_0x904f('0x2a')][_0x904f('0x47')](_0x3b0621)['then'](handleEntityNotFound(_0x10252e,null))['then'](respondWithResult(_0x10252e,null))[_0x904f('0x42')](handleError(_0x10252e,null));};exports[_0x904f('0x48')]=function(_0x45b6be,_0x21eb31){return db['JscriptyQuestionReport']['create'](_0x45b6be[_0x904f('0x49')],{})[_0x904f('0x23')](respondWithResult(_0x21eb31,0xc9))[_0x904f('0x42')](handleError(_0x21eb31,null));};exports[_0x904f('0x22')]=function(_0x1b0b72,_0x5cf4f3){if(_0x1b0b72[_0x904f('0x49')]['id']){delete _0x1b0b72[_0x904f('0x49')]['id'];}return db[_0x904f('0x2a')][_0x904f('0x47')]({'where':{'id':_0x1b0b72['params']['id']}})['then'](handleEntityNotFound(_0x5cf4f3,null))[_0x904f('0x23')](saveUpdates(_0x1b0b72['body'],null))[_0x904f('0x23')](respondWithResult(_0x5cf4f3,null))[_0x904f('0x42')](handleError(_0x5cf4f3,null));};exports[_0x904f('0x4a')]=function(_0x5c5f0f,_0x180db6){return db[_0x904f('0x2a')][_0x904f('0x47')]({'where':{'id':_0x5c5f0f[_0x904f('0x44')]['id']}})[_0x904f('0x23')](handleEntityNotFound(_0x180db6,null))['then'](removeEntity(_0x180db6,null))['catch'](handleError(_0x180db6,null));};exports[_0x904f('0x4b')]=function(_0x257a4a,_0x284434){return db[_0x904f('0x2a')]['describe']()['then'](respondWithResult(_0x284434,null))[_0x904f('0x42')](handleError(_0x284434,null));};
\ No newline at end of file
+var _0x4f59=['to-csv','papaparse','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','length','create','body','find','params','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x4f59,0x7b));var _0x94f5=function(_0x53ddab,_0x4ada9d){_0x53ddab=_0x53ddab-0x0;var _0x5819ac=_0x4f59[_0x53ddab];return _0x5819ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x94f5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x94f5('0x1'));var rp=require(_0x94f5('0x2'));var moment=require(_0x94f5('0x3'));var BPromise=require(_0x94f5('0x4'));var Mustache=require(_0x94f5('0x5'));var util=require(_0x94f5('0x6'));var path=require(_0x94f5('0x7'));var sox=require(_0x94f5('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94f5('0x9'));var _=require(_0x94f5('0xa'));var squel=require('squel');var crypto=require(_0x94f5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x94f5('0xc'));var toCsv=require(_0x94f5('0xd'));var querystring=require('querystring');var Papa=require(_0x94f5('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x94f5('0xf'))(_0x94f5('0x10'));var utils=require(_0x94f5('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x94f5('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4de53d,_0x17b28f){_0x17b28f=_0x17b28f||0xcc;return function(_0x10ebd4){if(_0x10ebd4){return _0x4de53d[_0x94f5('0x13')](_0x17b28f);}return _0x4de53d[_0x94f5('0x14')](_0x17b28f)[_0x94f5('0x15')]();};}function respondWithResult(_0xa3e3b,_0x22a41a){_0x22a41a=_0x22a41a||0xc8;return function(_0x43ac03){if(_0x43ac03){return _0xa3e3b[_0x94f5('0x14')](_0x22a41a)[_0x94f5('0x16')](_0x43ac03);}};}function respondWithFilteredResult(_0x14ee30,_0x3ab274){return function(_0x229cba){if(_0x229cba){var _0x2cbae1=typeof _0x3ab274['offset']==='undefined'&&typeof _0x3ab274[_0x94f5('0x17')]===_0x94f5('0x18');var _0x3fb0ba=_0x229cba[_0x94f5('0x19')];var _0x2e60c8=_0x2cbae1?0x0:_0x3ab274['offset'];var _0xc3777c=_0x2cbae1?_0x229cba[_0x94f5('0x19')]:_0x3ab274[_0x94f5('0x1a')]+_0x3ab274['limit'];var _0xd0e311;if(_0xc3777c>=_0x3fb0ba){_0xc3777c=_0x3fb0ba;_0xd0e311=0xc8;}else{_0xd0e311=0xce;}_0x14ee30[_0x94f5('0x14')](_0xd0e311);return _0x14ee30['set'](_0x94f5('0x1b'),_0x2e60c8+'-'+_0xc3777c+'/'+_0x3fb0ba)[_0x94f5('0x16')](_0x229cba);}return null;};}function patchUpdates(_0x2fa3cc){return function(_0x2378ce){try{jsonpatch[_0x94f5('0x1c')](_0x2378ce,_0x2fa3cc,!![]);}catch(_0x4d14fa){return BPromise[_0x94f5('0x1d')](_0x4d14fa);}return _0x2378ce[_0x94f5('0x1e')]();};}function saveUpdates(_0x59218e,_0x464df3){return function(_0x2c2e5b){if(_0x2c2e5b){return _0x2c2e5b[_0x94f5('0x1f')](_0x59218e)[_0x94f5('0x20')](function(_0x54aa46){return _0x54aa46;});}return null;};}function removeEntity(_0x266cf9,_0x5b115a){return function(_0x6b0bed){if(_0x6b0bed){return _0x6b0bed[_0x94f5('0x21')]()['then'](function(){_0x266cf9[_0x94f5('0x14')](0xcc)[_0x94f5('0x15')]();});}};}function handleEntityNotFound(_0x20c05d,_0x1e9cf8){return function(_0x54847f){if(!_0x54847f){_0x20c05d[_0x94f5('0x13')](0x194);}return _0x54847f;};}function handleError(_0x308431,_0x2c172b){_0x2c172b=_0x2c172b||0x1f4;return function(_0x4d28d7){logger[_0x94f5('0x22')](_0x4d28d7['stack']);if(_0x4d28d7[_0x94f5('0x23')]){delete _0x4d28d7[_0x94f5('0x23')];}_0x308431[_0x94f5('0x14')](_0x2c172b)[_0x94f5('0x24')](_0x4d28d7);};}exports['index']=function(_0x48aa93,_0x3dcf6b){var _0x9f91e9={},_0xf6e75={},_0x4faaca={'count':0x0,'rows':[]};var _0xc84203=_[_0x94f5('0x25')](db[_0x94f5('0x26')][_0x94f5('0x27')],function(_0x3e348b){return{'name':_0x3e348b[_0x94f5('0x28')],'type':_0x3e348b[_0x94f5('0x29')][_0x94f5('0x2a')]};});_0xf6e75[_0x94f5('0x2b')]=_[_0x94f5('0x25')](_0xc84203,_0x94f5('0x23'));_0xf6e75['query']=_[_0x94f5('0x2c')](_0x48aa93[_0x94f5('0x2d')]);_0xf6e75[_0x94f5('0x2e')]=_['intersection'](_0xf6e75['model'],_0xf6e75[_0x94f5('0x2d')]);_0x9f91e9[_0x94f5('0x2f')]=_[_0x94f5('0x30')](_0xf6e75[_0x94f5('0x2b')],qs[_0x94f5('0x31')](_0x48aa93[_0x94f5('0x2d')]['fields']));_0x9f91e9[_0x94f5('0x2f')]=_0x9f91e9[_0x94f5('0x2f')]['length']?_0x9f91e9[_0x94f5('0x2f')]:_0xf6e75[_0x94f5('0x2b')];if(!_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x32')](_0x94f5('0x33'))){_0x9f91e9[_0x94f5('0x17')]=qs[_0x94f5('0x17')](_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x17')]);_0x9f91e9[_0x94f5('0x1a')]=qs[_0x94f5('0x1a')](_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x1a')]);}_0x9f91e9[_0x94f5('0x34')]=qs['sort'](_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x35')]);_0x9f91e9[_0x94f5('0x36')]=qs[_0x94f5('0x2e')](_['pick'](_0x48aa93['query'],_0xf6e75[_0x94f5('0x2e')]),_0xc84203);if(_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x37')]){_0x9f91e9[_0x94f5('0x36')]=_[_0x94f5('0x38')](_0x9f91e9[_0x94f5('0x36')],{'$or':_['map'](_0xc84203,function(_0x5418d9){if(_0x5418d9[_0x94f5('0x29')]!=='VIRTUAL'){var _0x327406={};_0x327406[_0x5418d9[_0x94f5('0x23')]]={'$like':'%'+_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x37')]+'%'};return _0x327406;}})});}_0x9f91e9=_[_0x94f5('0x38')]({},_0x9f91e9,_0x48aa93[_0x94f5('0x39')]);var _0x26493d={'where':_0x9f91e9[_0x94f5('0x36')]};return db['JscriptyQuestionReport'][_0x94f5('0x19')](_0x26493d)[_0x94f5('0x20')](function(_0x1a8c37){_0x4faaca[_0x94f5('0x19')]=_0x1a8c37;if(_0x48aa93[_0x94f5('0x2d')][_0x94f5('0x3a')]){_0x9f91e9[_0x94f5('0x3b')]=[{'all':!![]}];}return db[_0x94f5('0x26')][_0x94f5('0x3c')](_0x9f91e9);})[_0x94f5('0x20')](function(_0x211e52){_0x4faaca[_0x94f5('0x3d')]=_0x211e52;return _0x4faaca;})[_0x94f5('0x20')](respondWithFilteredResult(_0x3dcf6b,_0x9f91e9))[_0x94f5('0x3e')](handleError(_0x3dcf6b,null));};exports['show']=function(_0x52c571,_0x5d3f0d){var _0x482d68={'raw':!![],'where':{'id':_0x52c571['params']['id']}},_0x29b65b={};_0x29b65b['model']=_[_0x94f5('0x2c')](db[_0x94f5('0x26')][_0x94f5('0x27')]);_0x29b65b[_0x94f5('0x2d')]=_['keys'](_0x52c571[_0x94f5('0x2d')]);_0x29b65b[_0x94f5('0x2e')]=_[_0x94f5('0x30')](_0x29b65b[_0x94f5('0x2b')],_0x29b65b[_0x94f5('0x2d')]);_0x482d68[_0x94f5('0x2f')]=_[_0x94f5('0x30')](_0x29b65b[_0x94f5('0x2b')],qs[_0x94f5('0x31')](_0x52c571[_0x94f5('0x2d')][_0x94f5('0x31')]));_0x482d68[_0x94f5('0x2f')]=_0x482d68[_0x94f5('0x2f')][_0x94f5('0x3f')]?_0x482d68[_0x94f5('0x2f')]:_0x29b65b['model'];if(_0x52c571[_0x94f5('0x2d')][_0x94f5('0x3a')]){_0x482d68[_0x94f5('0x3b')]=[{'all':!![]}];}_0x482d68=_[_0x94f5('0x38')]({},_0x482d68,_0x52c571[_0x94f5('0x39')]);return db[_0x94f5('0x26')]['find'](_0x482d68)[_0x94f5('0x20')](handleEntityNotFound(_0x5d3f0d,null))['then'](respondWithResult(_0x5d3f0d,null))['catch'](handleError(_0x5d3f0d,null));};exports['create']=function(_0x40bc53,_0x463346){return db[_0x94f5('0x26')][_0x94f5('0x40')](_0x40bc53['body'],{})[_0x94f5('0x20')](respondWithResult(_0x463346,0xc9))['catch'](handleError(_0x463346,null));};exports[_0x94f5('0x1f')]=function(_0x1dd7c9,_0x5a0783){if(_0x1dd7c9[_0x94f5('0x41')]['id']){delete _0x1dd7c9[_0x94f5('0x41')]['id'];}return db[_0x94f5('0x26')][_0x94f5('0x42')]({'where':{'id':_0x1dd7c9['params']['id']}})[_0x94f5('0x20')](handleEntityNotFound(_0x5a0783,null))[_0x94f5('0x20')](saveUpdates(_0x1dd7c9[_0x94f5('0x41')],null))['then'](respondWithResult(_0x5a0783,null))['catch'](handleError(_0x5a0783,null));};exports['destroy']=function(_0xe16bb1,_0x507fe8){return db[_0x94f5('0x26')][_0x94f5('0x42')]({'where':{'id':_0xe16bb1[_0x94f5('0x43')]['id']}})[_0x94f5('0x20')](handleEntityNotFound(_0x507fe8,null))['then'](removeEntity(_0x507fe8,null))[_0x94f5('0x3e')](handleError(_0x507fe8,null));};exports['describe']=function(_0x8ee2c8,_0x574acb){return db[_0x94f5('0x26')]['describe']()[_0x94f5('0x20')](respondWithResult(_0x574acb,null))['catch'](handleError(_0x574acb,null));};
\ No newline at end of file
index c86751c..174f0f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae41=['JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api','moment','bluebird','request-promise','path','./jscriptyQuestionReport.attributes'];(function(_0x1d34e3,_0x4f5844){var _0x34266b=function(_0x343260){while(--_0x343260){_0x1d34e3['push'](_0x1d34e3['shift']());}};_0x34266b(++_0x4f5844);}(_0xae41,0x1cd));var _0x1ae4=function(_0x107eee,_0x1718f0){_0x107eee=_0x107eee-0x0;var _0x360bbb=_0xae41[_0x107eee];return _0x360bbb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1ae4('0x0'))(_0x1ae4('0x1'));var moment=require(_0x1ae4('0x2'));var BPromise=require(_0x1ae4('0x3'));var rp=require(_0x1ae4('0x4'));var fs=require('fs');var path=require(_0x1ae4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1ae4('0x6'));module['exports']=function(_0x425b86,_0x537a5b){return _0x425b86['define'](_0x1ae4('0x7'),attributes,{'tableName':_0x1ae4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x499e=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define'];(function(_0x239b31,_0x44a64d){var _0x41c8be=function(_0x27f031){while(--_0x27f031){_0x239b31['push'](_0x239b31['shift']());}};_0x41c8be(++_0x44a64d);}(_0x499e,0x1ec));var _0xe499=function(_0x1fc1c6,_0x2d660c){_0x1fc1c6=_0x1fc1c6-0x0;var _0x3428b9=_0x499e[_0x1fc1c6];return _0x3428b9;};'use strict';var _=require(_0xe499('0x0'));var util=require(_0xe499('0x1'));var logger=require(_0xe499('0x2'))(_0xe499('0x3'));var moment=require(_0xe499('0x4'));var BPromise=require(_0xe499('0x5'));var rp=require(_0xe499('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe499('0x7'));var config=require(_0xe499('0x8'));var attributes=require(_0xe499('0x9'));module[_0xe499('0xa')]=function(_0x4500f5,_0x118ae2){return _0x4500f5[_0xe499('0xb')](_0xe499('0xc'),attributes,{'tableName':_0xe499('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d27f76..e28f81c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dfd=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3dfd,0x136));var _0xd3df=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x3dfd[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xd3df('0x0'));var util=require(_0xd3df('0x1'));var moment=require(_0xd3df('0x2'));var BPromise=require(_0xd3df('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd3df('0x4'));var db=require(_0xd3df('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd3df('0x6'))(_0xd3df('0x7'));var config=require('../../config/environment');var jayson=require(_0xd3df('0x8'));var client=jayson[_0xd3df('0x9')][_0xd3df('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x342bc1,_0x413520,_0x5bb96f){return new BPromise(function(_0x191bf3,_0x4fd038){return client[_0xd3df('0xb')](_0x342bc1,_0x5bb96f)['then'](function(_0xf514ed){logger['info'](_0xd3df('0xc'),_0x413520,_0xd3df('0xd'));logger[_0xd3df('0xe')](_0xd3df('0xf'),_0x413520,_0xd3df('0xd'),JSON['stringify'](_0xf514ed));if(_0xf514ed['error']){if(_0xf514ed[_0xd3df('0x10')][_0xd3df('0x11')]===0x1f4){logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xf514ed[_0xd3df('0x10')][_0xd3df('0x12')]);return _0x4fd038(_0xf514ed['error']['message']);}logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xf514ed[_0xd3df('0x10')][_0xd3df('0x12')]);return _0x191bf3(_0xf514ed['error']['message']);}else{logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x413520,'request\x20sent');_0x191bf3(_0xf514ed[_0xd3df('0x13')][_0xd3df('0x12')]);}})[_0xd3df('0x14')](function(_0xea48e4){logger[_0xd3df('0x10')](_0xd3df('0xc'),_0x413520,_0xea48e4);_0x4fd038(_0xea48e4);});});}
\ No newline at end of file
+var _0x264c=['then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x264c,0x144));var _0xc264=function(_0x4bfade,_0xb26c0e){_0x4bfade=_0x4bfade-0x0;var _0x272465=_0x264c[_0x4bfade];return _0x272465;};'use strict';var _=require(_0xc264('0x0'));var util=require(_0xc264('0x1'));var moment=require(_0xc264('0x2'));var BPromise=require(_0xc264('0x3'));var rs=require(_0xc264('0x4'));var fs=require('fs');var Redis=require(_0xc264('0x5'));var db=require(_0xc264('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc264('0x7'));var config=require(_0xc264('0x8'));var jayson=require(_0xc264('0x9'));var client=jayson[_0xc264('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x390786,_0x15ad70,_0x518c79){return new BPromise(function(_0x56dd99,_0x3c79b0){return client[_0xc264('0xb')](_0x390786,_0x518c79)[_0xc264('0xc')](function(_0x15573e){logger[_0xc264('0xd')](_0xc264('0xe'),_0x15ad70,_0xc264('0xf'));logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x15ad70,_0xc264('0xf'),JSON[_0xc264('0x10')](_0x15573e));if(_0x15573e['error']){if(_0x15573e['error'][_0xc264('0x11')]===0x1f4){logger[_0xc264('0x12')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x15ad70,_0x15573e[_0xc264('0x12')][_0xc264('0x13')]);return _0x3c79b0(_0x15573e['error'][_0xc264('0x13')]);}logger[_0xc264('0x12')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x15ad70,_0x15573e[_0xc264('0x12')][_0xc264('0x13')]);return _0x56dd99(_0x15573e[_0xc264('0x12')][_0xc264('0x13')]);}else{logger[_0xc264('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x15ad70,_0xc264('0xf'));_0x56dd99(_0x15573e['result'][_0xc264('0x13')]);}})[_0xc264('0x14')](function(_0x230a71){logger[_0xc264('0x12')](_0xc264('0xe'),_0x15ad70,_0x230a71);_0x3c79b0(_0x230a71);});});}
\ No newline at end of file
index c170d0d..43aa634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','/describe','describe','get','show','post','create','put','/:id','update','destroy','exports','multer','path'];(function(_0x48f2b7,_0x40f214){var _0x54506f=function(_0x193c0a){while(--_0x193c0a){_0x48f2b7['push'](_0x48f2b7['shift']());}};_0x54506f(++_0x40f214);}(_0x7c7e,0xda));var _0xe7c7=function(_0x3b605f,_0x3c25c9){_0x3b605f=_0x3b605f-0x0;var _0x3446d7=_0x7c7e[_0x3b605f];return _0x3446d7;};'use strict';var multer=require(_0xe7c7('0x0'));var util=require('util');var path=require(_0xe7c7('0x1'));var timeout=require(_0xe7c7('0x2'));var express=require(_0xe7c7('0x3'));var router=express[_0xe7c7('0x4')]();var fs_extra=require(_0xe7c7('0x5'));var auth=require(_0xe7c7('0x6'));var interaction=require(_0xe7c7('0x7'));var config=require(_0xe7c7('0x8'));var controller=require(_0xe7c7('0x9'));router['get']('/',auth[_0xe7c7('0xa')](),controller['index']);router['get'](_0xe7c7('0xb'),auth['isAuthenticated'](),controller[_0xe7c7('0xc')]);router[_0xe7c7('0xd')]('/:id',auth[_0xe7c7('0xa')](),controller[_0xe7c7('0xe')]);router['get']('/:id/questions',auth[_0xe7c7('0xa')](),controller['getQuestions']);router[_0xe7c7('0xf')]('/',auth[_0xe7c7('0xa')](),controller[_0xe7c7('0x10')]);router[_0xe7c7('0x11')](_0xe7c7('0x12'),auth['isAuthenticated'](),controller[_0xe7c7('0x13')]);router['delete'](_0xe7c7('0x12'),auth['isAuthenticated'](),controller[_0xe7c7('0x14')]);module[_0xe7c7('0x15')]=router;
\ No newline at end of file
+var _0xbc64=['show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x1cf52f,_0xa6e236){var _0x269ab1=function(_0x1915bd){while(--_0x1915bd){_0x1cf52f['push'](_0x1cf52f['shift']());}};_0x269ab1(++_0xa6e236);}(_0xbc64,0x15a));var _0x4bc6=function(_0x6d91a,_0x3c06dc){_0x6d91a=_0x6d91a-0x0;var _0x405faf=_0xbc64[_0x6d91a];return _0x405faf;};'use strict';var multer=require(_0x4bc6('0x0'));var util=require(_0x4bc6('0x1'));var path=require(_0x4bc6('0x2'));var timeout=require(_0x4bc6('0x3'));var express=require('express');var router=express[_0x4bc6('0x4')]();var fs_extra=require(_0x4bc6('0x5'));var auth=require(_0x4bc6('0x6'));var interaction=require(_0x4bc6('0x7'));var config=require('../../config/environment');var controller=require(_0x4bc6('0x8'));router[_0x4bc6('0x9')]('/',auth[_0x4bc6('0xa')](),controller[_0x4bc6('0xb')]);router[_0x4bc6('0x9')](_0x4bc6('0xc'),auth[_0x4bc6('0xa')](),controller['describe']);router[_0x4bc6('0x9')](_0x4bc6('0xd'),auth['isAuthenticated'](),controller[_0x4bc6('0xe')]);router[_0x4bc6('0x9')](_0x4bc6('0xf'),auth[_0x4bc6('0xa')](),controller[_0x4bc6('0x10')]);router[_0x4bc6('0x11')]('/',auth[_0x4bc6('0xa')](),controller[_0x4bc6('0x12')]);router[_0x4bc6('0x13')](_0x4bc6('0xd'),auth[_0x4bc6('0xa')](),controller[_0x4bc6('0x14')]);router[_0x4bc6('0x15')](_0x4bc6('0xd'),auth[_0x4bc6('0xa')](),controller[_0x4bc6('0x16')]);module[_0x4bc6('0x17')]=router;
\ No newline at end of file
index 0f2c426..399a953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc67b=['starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','exports','DATE','setDataValue'];(function(_0x244862,_0x3da79e){var _0x2bce23=function(_0x235ae5){while(--_0x235ae5){_0x244862['push'](_0x244862['shift']());}};_0x2bce23(++_0x3da79e);}(_0xc67b,0x178));var _0xbc67=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xc67b[_0x13d07a];return _0x5ee0ee;};'use strict';var moment=require(_0xbc67('0x0'));var Sequelize=require('sequelize');module[_0xbc67('0x1')]={'starttime':{'type':Sequelize[_0xbc67('0x2')],'set':function(_0x2e3ba8){this[_0xbc67('0x3')](_0xbc67('0x4'),_0x2e3ba8);this[_0xbc67('0x3')](_0xbc67('0x5'),moment()[_0xbc67('0x6')](_0xbc67('0x7')));}},'endtime':{'type':Sequelize[_0xbc67('0x2')]},'membername':{'type':Sequelize[_0xbc67('0x8')]},'projectname':{'type':Sequelize[_0xbc67('0x8')]},'queue':{'type':Sequelize[_0xbc67('0x8')]},'uniqueid':{'type':Sequelize[_0xbc67('0x8')]},'calleridname':{'type':Sequelize[_0xbc67('0x8')]},'calleridnum':{'type':Sequelize[_0xbc67('0x8')]},'completed':{'type':Sequelize[_0xbc67('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9a37=['moment','sequelize','exports','DATE','setDataValue','starttime','format','YYYY-MM-DD\x20HH:mm:ss','STRING'];(function(_0x503fef,_0x2c2117){var _0x5dcf6f=function(_0x2db223){while(--_0x2db223){_0x503fef['push'](_0x503fef['shift']());}};_0x5dcf6f(++_0x2c2117);}(_0x9a37,0x7e));var _0x79a3=function(_0x5837a4,_0x15c0f7){_0x5837a4=_0x5837a4-0x0;var _0x1feb62=_0x9a37[_0x5837a4];return _0x1feb62;};'use strict';var moment=require(_0x79a3('0x0'));var Sequelize=require(_0x79a3('0x1'));module[_0x79a3('0x2')]={'starttime':{'type':Sequelize[_0x79a3('0x3')],'set':function(_0x4736e8){this[_0x79a3('0x4')](_0x79a3('0x5'),_0x4736e8);this[_0x79a3('0x4')]('endtime',moment()[_0x79a3('0x6')](_0x79a3('0x7')));}},'endtime':{'type':Sequelize[_0x79a3('0x3')]},'membername':{'type':Sequelize[_0x79a3('0x8')]},'projectname':{'type':Sequelize[_0x79a3('0x8')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x79a3('0x8')]},'calleridname':{'type':Sequelize[_0x79a3('0x8')]},'calleridnum':{'type':Sequelize[_0x79a3('0x8')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 7d3d8d8..904e8eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4942=['merge','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','describe','getQuestions','findOne','rawAttributes','hasOwnProperty','nolimit','SessionId','JscriptyQuestionReport','fast-json-patch','mustache','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','map','JscriptySessionReport','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter'];(function(_0x2b5bab,_0x2018e1){var _0x243b04=function(_0x3b880f){while(--_0x3b880f){_0x2b5bab['push'](_0x2b5bab['shift']());}};_0x243b04(++_0x2018e1);}(_0x4942,0xa6));var _0x2494=function(_0x2f03e4,_0x4d2c08){_0x2f03e4=_0x2f03e4-0x0;var _0x59472e=_0x4942[_0x2f03e4];return _0x59472e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2494('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2494('0x1'));var util=require(_0x2494('0x2'));var path=require(_0x2494('0x3'));var sox=require(_0x2494('0x4'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2494('0x5'));var _=require('lodash');var squel=require(_0x2494('0x6'));var crypto=require('crypto');var jsforce=require(_0x2494('0x7'));var deskjs=require(_0x2494('0x8'));var toCsv=require(_0x2494('0x9'));var querystring=require(_0x2494('0xa'));var Papa=require(_0x2494('0xb'));var Redis=require(_0x2494('0xc'));var authService=require(_0x2494('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2494('0xe'))(_0x2494('0xf'));var utils=require(_0x2494('0x10'));var config=require(_0x2494('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cb0a8,_0xd91b5c){_0xd91b5c=_0xd91b5c||0xcc;return function(_0x6e0bfa){if(_0x6e0bfa){return _0x4cb0a8['sendStatus'](_0xd91b5c);}return _0x4cb0a8[_0x2494('0x12')](_0xd91b5c)[_0x2494('0x13')]();};}function respondWithResult(_0x32d811,_0x53e5b8){_0x53e5b8=_0x53e5b8||0xc8;return function(_0x5f2bf2){if(_0x5f2bf2){return _0x32d811[_0x2494('0x12')](_0x53e5b8)[_0x2494('0x14')](_0x5f2bf2);}};}function respondWithFilteredResult(_0x3865c1,_0x6cdca3){return function(_0x157efd){if(_0x157efd){var _0x2616f5=typeof _0x6cdca3[_0x2494('0x15')]===_0x2494('0x16')&&typeof _0x6cdca3[_0x2494('0x17')]===_0x2494('0x16');var _0x13b65d=_0x157efd['count'];var _0x1670a0=_0x2616f5?0x0:_0x6cdca3[_0x2494('0x15')];var _0x33488b=_0x2616f5?_0x157efd[_0x2494('0x18')]:_0x6cdca3['offset']+_0x6cdca3[_0x2494('0x17')];var _0x242233;if(_0x33488b>=_0x13b65d){_0x33488b=_0x13b65d;_0x242233=0xc8;}else{_0x242233=0xce;}_0x3865c1[_0x2494('0x12')](_0x242233);return _0x3865c1[_0x2494('0x19')](_0x2494('0x1a'),_0x1670a0+'-'+_0x33488b+'/'+_0x13b65d)[_0x2494('0x14')](_0x157efd);}return null;};}function patchUpdates(_0x26e42c){return function(_0x2e5cdb){try{jsonpatch[_0x2494('0x1b')](_0x2e5cdb,_0x26e42c,!![]);}catch(_0x19f39b){return BPromise[_0x2494('0x1c')](_0x19f39b);}return _0x2e5cdb[_0x2494('0x1d')]();};}function saveUpdates(_0xfe7da3,_0x89e72c){return function(_0xb194c1){if(_0xb194c1){return _0xb194c1[_0x2494('0x1e')](_0xfe7da3)[_0x2494('0x1f')](function(_0x265caa){return _0x265caa;});}return null;};}function removeEntity(_0x4f5a4a,_0x19fcc2){return function(_0x18f438){if(_0x18f438){return _0x18f438[_0x2494('0x20')]()[_0x2494('0x1f')](function(){_0x4f5a4a[_0x2494('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x206154,_0xa626a3){return function(_0x30e4f2){if(!_0x30e4f2){_0x206154[_0x2494('0x21')](0x194);}return _0x30e4f2;};}function handleError(_0x577146,_0x45cfa5){_0x45cfa5=_0x45cfa5||0x1f4;return function(_0x1fd237){logger[_0x2494('0x22')](_0x1fd237[_0x2494('0x23')]);if(_0x1fd237[_0x2494('0x24')]){delete _0x1fd237[_0x2494('0x24')];}_0x577146['status'](_0x45cfa5)['send'](_0x1fd237);};}exports['index']=function(_0x814667,_0x243243){var _0x4e14ef={},_0x4f8c30={},_0x53f056={'count':0x0,'rows':[]};var _0x5ad199=_[_0x2494('0x25')](db[_0x2494('0x26')]['rawAttributes'],function(_0x3a8be9){return{'name':_0x3a8be9['fieldName'],'type':_0x3a8be9[_0x2494('0x27')][_0x2494('0x28')]};});_0x4f8c30[_0x2494('0x29')]=_[_0x2494('0x25')](_0x5ad199,'name');_0x4f8c30[_0x2494('0x2a')]=_['keys'](_0x814667[_0x2494('0x2a')]);_0x4f8c30[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x4f8c30[_0x2494('0x29')],_0x4f8c30[_0x2494('0x2a')]);_0x4e14ef[_0x2494('0x2d')]=_[_0x2494('0x2c')](_0x4f8c30[_0x2494('0x29')],qs['fields'](_0x814667[_0x2494('0x2a')][_0x2494('0x2e')]));_0x4e14ef[_0x2494('0x2d')]=_0x4e14ef[_0x2494('0x2d')][_0x2494('0x2f')]?_0x4e14ef[_0x2494('0x2d')]:_0x4f8c30[_0x2494('0x29')];if(!_0x814667['query']['hasOwnProperty']('nolimit')){_0x4e14ef[_0x2494('0x17')]=qs[_0x2494('0x17')](_0x814667[_0x2494('0x2a')]['limit']);_0x4e14ef[_0x2494('0x15')]=qs[_0x2494('0x15')](_0x814667[_0x2494('0x2a')][_0x2494('0x15')]);}_0x4e14ef[_0x2494('0x30')]=qs[_0x2494('0x31')](_0x814667[_0x2494('0x2a')][_0x2494('0x31')]);_0x4e14ef[_0x2494('0x32')]=qs['filters'](_[_0x2494('0x33')](_0x814667[_0x2494('0x2a')],_0x4f8c30['filters']),_0x5ad199);if(_0x814667[_0x2494('0x2a')][_0x2494('0x34')]){_0x4e14ef[_0x2494('0x32')]=_[_0x2494('0x35')](_0x4e14ef[_0x2494('0x32')],{'$or':_[_0x2494('0x25')](_0x5ad199,function(_0x3f85ed){if(_0x3f85ed['type']!=='VIRTUAL'){var _0x32d5cb={};_0x32d5cb[_0x3f85ed[_0x2494('0x24')]]={'$like':'%'+_0x814667[_0x2494('0x2a')][_0x2494('0x34')]+'%'};return _0x32d5cb;}})});}_0x4e14ef=_['merge']({},_0x4e14ef,_0x814667[_0x2494('0x36')]);var _0x22fde8={'where':_0x4e14ef[_0x2494('0x32')]};return db[_0x2494('0x26')][_0x2494('0x18')](_0x22fde8)[_0x2494('0x1f')](function(_0x14b5bd){_0x53f056[_0x2494('0x18')]=_0x14b5bd;if(_0x814667[_0x2494('0x2a')][_0x2494('0x37')]){_0x4e14ef[_0x2494('0x38')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x2494('0x39')](_0x4e14ef);})['then'](function(_0x3a3a03){_0x53f056[_0x2494('0x3a')]=_0x3a3a03;return _0x53f056;})[_0x2494('0x1f')](respondWithFilteredResult(_0x243243,_0x4e14ef))['catch'](handleError(_0x243243,null));};exports['show']=function(_0x3f165d,_0x31cb23){var _0xf3075={'raw':!![],'where':{'id':_0x3f165d[_0x2494('0x3b')]['id']}},_0x2622d6={};_0x2622d6['model']=_[_0x2494('0x3c')](db[_0x2494('0x26')]['rawAttributes']);_0x2622d6['query']=_[_0x2494('0x3c')](_0x3f165d[_0x2494('0x2a')]);_0x2622d6[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x2622d6[_0x2494('0x29')],_0x2622d6[_0x2494('0x2a')]);_0xf3075[_0x2494('0x2d')]=_[_0x2494('0x2c')](_0x2622d6[_0x2494('0x29')],qs[_0x2494('0x2e')](_0x3f165d[_0x2494('0x2a')]['fields']));_0xf3075[_0x2494('0x2d')]=_0xf3075['attributes'][_0x2494('0x2f')]?_0xf3075['attributes']:_0x2622d6[_0x2494('0x29')];if(_0x3f165d['query'][_0x2494('0x37')]){_0xf3075[_0x2494('0x38')]=[{'all':!![]}];}_0xf3075=_[_0x2494('0x35')]({},_0xf3075,_0x3f165d[_0x2494('0x36')]);return db[_0x2494('0x26')][_0x2494('0x3d')](_0xf3075)['then'](handleEntityNotFound(_0x31cb23,null))[_0x2494('0x1f')](respondWithResult(_0x31cb23,null))[_0x2494('0x3e')](handleError(_0x31cb23,null));};exports[_0x2494('0x3f')]=function(_0x5b7f02,_0x45e8aa){return db[_0x2494('0x26')]['create'](_0x5b7f02[_0x2494('0x40')],{})[_0x2494('0x1f')](respondWithResult(_0x45e8aa,0xc9))['catch'](handleError(_0x45e8aa,null));};exports[_0x2494('0x1e')]=function(_0x5d3521,_0x5e4af3){if(_0x5d3521[_0x2494('0x40')]['id']){delete _0x5d3521[_0x2494('0x40')]['id'];}return db[_0x2494('0x26')][_0x2494('0x3d')]({'where':{'id':_0x5d3521['params']['id']}})[_0x2494('0x1f')](handleEntityNotFound(_0x5e4af3,null))[_0x2494('0x1f')](saveUpdates(_0x5d3521[_0x2494('0x40')],null))['then'](respondWithResult(_0x5e4af3,null))[_0x2494('0x3e')](handleError(_0x5e4af3,null));};exports['destroy']=function(_0x138609,_0x3ca8eb){return db[_0x2494('0x26')]['find']({'where':{'id':_0x138609[_0x2494('0x3b')]['id']}})[_0x2494('0x1f')](handleEntityNotFound(_0x3ca8eb,null))[_0x2494('0x1f')](removeEntity(_0x3ca8eb,null))[_0x2494('0x3e')](handleError(_0x3ca8eb,null));};exports[_0x2494('0x41')]=function(_0x45de93,_0x473637){return db['JscriptySessionReport']['describe']()[_0x2494('0x1f')](respondWithResult(_0x473637,null))['catch'](handleError(_0x473637,null));};exports[_0x2494('0x42')]=function(_0x261a79,_0xfda1d8,_0xb6efc0){var _0x5a1a2f={'raw':!![],'where':{}};var _0x2501e7={};var _0x156ee6={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x2494('0x43')]({'where':{'id':_0x261a79['params']['id']}})['then'](handleEntityNotFound(_0xfda1d8,null))[_0x2494('0x1f')](function(_0x5a865d){if(_0x5a865d){_0x2501e7['model']=_['keys'](db['JscriptyQuestionReport'][_0x2494('0x44')]);_0x2501e7['query']=_['keys'](_0x261a79[_0x2494('0x2a')]);_0x2501e7[_0x2494('0x2b')]=_[_0x2494('0x2c')](_0x2501e7[_0x2494('0x29')],_0x2501e7['query']);_0x5a1a2f['attributes']=_[_0x2494('0x2c')](_0x2501e7[_0x2494('0x29')],qs[_0x2494('0x2e')](_0x261a79['query']['fields']));_0x5a1a2f[_0x2494('0x2d')]=_0x5a1a2f['attributes']['length']?_0x5a1a2f[_0x2494('0x2d')]:_0x2501e7[_0x2494('0x29')];if(!_0x261a79[_0x2494('0x2a')][_0x2494('0x45')](_0x2494('0x46'))){_0x5a1a2f[_0x2494('0x17')]=qs[_0x2494('0x17')](_0x261a79[_0x2494('0x2a')][_0x2494('0x17')]);_0x5a1a2f['offset']=qs[_0x2494('0x15')](_0x261a79['query']['offset']);}_0x5a1a2f[_0x2494('0x30')]=qs['sort'](_0x261a79['query'][_0x2494('0x31')]);_0x5a1a2f[_0x2494('0x32')]=qs[_0x2494('0x2b')](_[_0x2494('0x33')](_0x261a79[_0x2494('0x2a')],_0x2501e7[_0x2494('0x2b')]));_0x5a1a2f[_0x2494('0x32')][_0x2494('0x47')]=_0x5a865d['id'];if(_0x261a79[_0x2494('0x2a')][_0x2494('0x34')]){_0x5a1a2f['where']=_[_0x2494('0x35')](_0x5a1a2f[_0x2494('0x32')],{'$or':_['map'](_0x5a1a2f[_0x2494('0x2d')],function(_0x5c67c3){var _0x39b753={};_0x39b753[_0x5c67c3]={'$like':'%'+_0x261a79[_0x2494('0x2a')][_0x2494('0x34')]+'%'};return _0x39b753;})});}_0x5a1a2f=_[_0x2494('0x35')]({},_0x5a1a2f,_0x261a79[_0x2494('0x36')]);return db[_0x2494('0x48')][_0x2494('0x18')]({'where':_0x5a1a2f[_0x2494('0x32')]})[_0x2494('0x1f')](function(_0x206017){_0x156ee6[_0x2494('0x18')]=_0x206017;if(_0x261a79['query'][_0x2494('0x37')]){_0x5a1a2f[_0x2494('0x38')]=[{'all':!![]}];}return db[_0x2494('0x48')]['findAll'](_0x5a1a2f);})[_0x2494('0x1f')](function(_0x5901f6){_0x156ee6['rows']=_0x5901f6;return _0x156ee6;});}})[_0x2494('0x1f')](respondWithFilteredResult(_0xfda1d8,_0x5a1a2f))[_0x2494('0x3e')](handleError(_0xfda1d8,null));};
\ No newline at end of file
+var _0x751c=['util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','JscriptySessionReport','fieldName','key','model','query','keys','intersection','fields','attributes','nolimit','order','sort','where','filters','pick','filter','merge','type','options','count','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','describe','getQuestions','findOne','hasOwnProperty','SessionId','JscriptyQuestionReport','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x6ae66b,_0x3ba914){var _0x465cef=function(_0x547b10){while(--_0x547b10){_0x6ae66b['push'](_0x6ae66b['shift']());}};_0x465cef(++_0x3ba914);}(_0x751c,0x194));var _0xc751=function(_0x583976,_0x72ad6b){_0x583976=_0x583976-0x0;var _0x5d7e53=_0x751c[_0x583976];return _0x5d7e53;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc751('0x0'));var jsonpatch=require(_0xc751('0x1'));var rp=require(_0xc751('0x2'));var moment=require(_0xc751('0x3'));var BPromise=require(_0xc751('0x4'));var Mustache=require(_0xc751('0x5'));var util=require(_0xc751('0x6'));var path=require(_0xc751('0x7'));var sox=require('sox');var csv=require(_0xc751('0x8'));var ejs=require(_0xc751('0x9'));var fs=require('fs');var fs_extra=require(_0xc751('0xa'));var _=require('lodash');var squel=require(_0xc751('0xb'));var crypto=require(_0xc751('0xc'));var jsforce=require(_0xc751('0xd'));var deskjs=require(_0xc751('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc751('0xf'));var Papa=require(_0xc751('0x10'));var Redis=require(_0xc751('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc751('0x12'));var as=require(_0xc751('0x13'));var hardwareService=require(_0xc751('0x14'));var logger=require(_0xc751('0x15'))(_0xc751('0x16'));var utils=require(_0xc751('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xc751('0x18'));var db=require(_0xc751('0x19'))['db'];function respondWithStatusCode(_0x176d57,_0xd7c54){_0xd7c54=_0xd7c54||0xcc;return function(_0x468d45){if(_0x468d45){return _0x176d57[_0xc751('0x1a')](_0xd7c54);}return _0x176d57['status'](_0xd7c54)[_0xc751('0x1b')]();};}function respondWithResult(_0xaed9ae,_0x28fb76){_0x28fb76=_0x28fb76||0xc8;return function(_0x34b23e){if(_0x34b23e){return _0xaed9ae[_0xc751('0x1c')](_0x28fb76)['json'](_0x34b23e);}};}function respondWithFilteredResult(_0x2b6b1a,_0x28a5f4){return function(_0x455488){if(_0x455488){var _0x2a20a6=typeof _0x28a5f4[_0xc751('0x1d')]===_0xc751('0x1e')&&typeof _0x28a5f4[_0xc751('0x1f')]===_0xc751('0x1e');var _0x491c2d=_0x455488['count'];var _0xf1d5e8=_0x2a20a6?0x0:_0x28a5f4[_0xc751('0x1d')];var _0x4c8c79=_0x2a20a6?_0x455488['count']:_0x28a5f4[_0xc751('0x1d')]+_0x28a5f4[_0xc751('0x1f')];var _0x46a5aa;if(_0x4c8c79>=_0x491c2d){_0x4c8c79=_0x491c2d;_0x46a5aa=0xc8;}else{_0x46a5aa=0xce;}_0x2b6b1a['status'](_0x46a5aa);return _0x2b6b1a[_0xc751('0x20')](_0xc751('0x21'),_0xf1d5e8+'-'+_0x4c8c79+'/'+_0x491c2d)['json'](_0x455488);}return null;};}function patchUpdates(_0x4986fc){return function(_0x4f713d){try{jsonpatch[_0xc751('0x22')](_0x4f713d,_0x4986fc,!![]);}catch(_0x30ff65){return BPromise[_0xc751('0x23')](_0x30ff65);}return _0x4f713d['save']();};}function saveUpdates(_0x4a4fde,_0x292c09){return function(_0x2d7d49){if(_0x2d7d49){return _0x2d7d49[_0xc751('0x24')](_0x4a4fde)[_0xc751('0x25')](function(_0x10c27d){return _0x10c27d;});}return null;};}function removeEntity(_0x361bac,_0x55d170){return function(_0x3397a3){if(_0x3397a3){return _0x3397a3[_0xc751('0x26')]()[_0xc751('0x25')](function(){_0x361bac['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fa143,_0x366155){return function(_0x14adc9){if(!_0x14adc9){_0x4fa143['sendStatus'](0x194);}return _0x14adc9;};}function handleError(_0x22fe0b,_0x49c0f8){_0x49c0f8=_0x49c0f8||0x1f4;return function(_0x17ca51){logger[_0xc751('0x27')](_0x17ca51[_0xc751('0x28')]);if(_0x17ca51[_0xc751('0x29')]){delete _0x17ca51[_0xc751('0x29')];}_0x22fe0b[_0xc751('0x1c')](_0x49c0f8)[_0xc751('0x2a')](_0x17ca51);};}exports[_0xc751('0x2b')]=function(_0x3dd9da,_0x55a882){var _0x596bb3={},_0x3f0371={},_0x1f457b={'count':0x0,'rows':[]};var _0x5ab239=_[_0xc751('0x2c')](db[_0xc751('0x2d')]['rawAttributes'],function(_0x1ba647){return{'name':_0x1ba647[_0xc751('0x2e')],'type':_0x1ba647['type'][_0xc751('0x2f')]};});_0x3f0371[_0xc751('0x30')]=_[_0xc751('0x2c')](_0x5ab239,_0xc751('0x29'));_0x3f0371[_0xc751('0x31')]=_[_0xc751('0x32')](_0x3dd9da[_0xc751('0x31')]);_0x3f0371['filters']=_[_0xc751('0x33')](_0x3f0371['model'],_0x3f0371[_0xc751('0x31')]);_0x596bb3['attributes']=_[_0xc751('0x33')](_0x3f0371[_0xc751('0x30')],qs[_0xc751('0x34')](_0x3dd9da[_0xc751('0x31')]['fields']));_0x596bb3[_0xc751('0x35')]=_0x596bb3[_0xc751('0x35')]['length']?_0x596bb3['attributes']:_0x3f0371[_0xc751('0x30')];if(!_0x3dd9da[_0xc751('0x31')]['hasOwnProperty'](_0xc751('0x36'))){_0x596bb3[_0xc751('0x1f')]=qs[_0xc751('0x1f')](_0x3dd9da[_0xc751('0x31')][_0xc751('0x1f')]);_0x596bb3['offset']=qs[_0xc751('0x1d')](_0x3dd9da[_0xc751('0x31')][_0xc751('0x1d')]);}_0x596bb3[_0xc751('0x37')]=qs['sort'](_0x3dd9da[_0xc751('0x31')][_0xc751('0x38')]);_0x596bb3[_0xc751('0x39')]=qs[_0xc751('0x3a')](_[_0xc751('0x3b')](_0x3dd9da[_0xc751('0x31')],_0x3f0371[_0xc751('0x3a')]),_0x5ab239);if(_0x3dd9da[_0xc751('0x31')][_0xc751('0x3c')]){_0x596bb3['where']=_[_0xc751('0x3d')](_0x596bb3[_0xc751('0x39')],{'$or':_[_0xc751('0x2c')](_0x5ab239,function(_0x101f23){if(_0x101f23[_0xc751('0x3e')]!=='VIRTUAL'){var _0x1a5a31={};_0x1a5a31[_0x101f23[_0xc751('0x29')]]={'$like':'%'+_0x3dd9da[_0xc751('0x31')][_0xc751('0x3c')]+'%'};return _0x1a5a31;}})});}_0x596bb3=_[_0xc751('0x3d')]({},_0x596bb3,_0x3dd9da[_0xc751('0x3f')]);var _0x54532f={'where':_0x596bb3[_0xc751('0x39')]};return db['JscriptySessionReport'][_0xc751('0x40')](_0x54532f)['then'](function(_0x180ca3){_0x1f457b[_0xc751('0x40')]=_0x180ca3;if(_0x3dd9da[_0xc751('0x31')]['includeAll']){_0x596bb3[_0xc751('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xc751('0x42')](_0x596bb3);})[_0xc751('0x25')](function(_0x2b9574){_0x1f457b[_0xc751('0x43')]=_0x2b9574;return _0x1f457b;})[_0xc751('0x25')](respondWithFilteredResult(_0x55a882,_0x596bb3))[_0xc751('0x44')](handleError(_0x55a882,null));};exports[_0xc751('0x45')]=function(_0x4e0e9f,_0x6cb705){var _0x146351={'raw':!![],'where':{'id':_0x4e0e9f[_0xc751('0x46')]['id']}},_0x42f4b9={};_0x42f4b9[_0xc751('0x30')]=_[_0xc751('0x32')](db[_0xc751('0x2d')][_0xc751('0x47')]);_0x42f4b9[_0xc751('0x31')]=_['keys'](_0x4e0e9f[_0xc751('0x31')]);_0x42f4b9['filters']=_[_0xc751('0x33')](_0x42f4b9['model'],_0x42f4b9['query']);_0x146351[_0xc751('0x35')]=_[_0xc751('0x33')](_0x42f4b9[_0xc751('0x30')],qs[_0xc751('0x34')](_0x4e0e9f[_0xc751('0x31')][_0xc751('0x34')]));_0x146351[_0xc751('0x35')]=_0x146351[_0xc751('0x35')]['length']?_0x146351['attributes']:_0x42f4b9[_0xc751('0x30')];if(_0x4e0e9f[_0xc751('0x31')][_0xc751('0x48')]){_0x146351[_0xc751('0x41')]=[{'all':!![]}];}_0x146351=_['merge']({},_0x146351,_0x4e0e9f[_0xc751('0x3f')]);return db[_0xc751('0x2d')][_0xc751('0x49')](_0x146351)['then'](handleEntityNotFound(_0x6cb705,null))[_0xc751('0x25')](respondWithResult(_0x6cb705,null))['catch'](handleError(_0x6cb705,null));};exports['create']=function(_0x325afe,_0x209a47){return db[_0xc751('0x2d')][_0xc751('0x4a')](_0x325afe[_0xc751('0x4b')],{})['then'](respondWithResult(_0x209a47,0xc9))[_0xc751('0x44')](handleError(_0x209a47,null));};exports[_0xc751('0x24')]=function(_0x10bb41,_0x4f6711){if(_0x10bb41['body']['id']){delete _0x10bb41[_0xc751('0x4b')]['id'];}return db[_0xc751('0x2d')][_0xc751('0x49')]({'where':{'id':_0x10bb41['params']['id']}})['then'](handleEntityNotFound(_0x4f6711,null))['then'](saveUpdates(_0x10bb41[_0xc751('0x4b')],null))[_0xc751('0x25')](respondWithResult(_0x4f6711,null))[_0xc751('0x44')](handleError(_0x4f6711,null));};exports[_0xc751('0x26')]=function(_0x5ee893,_0xfc8529){return db[_0xc751('0x2d')]['find']({'where':{'id':_0x5ee893[_0xc751('0x46')]['id']}})[_0xc751('0x25')](handleEntityNotFound(_0xfc8529,null))[_0xc751('0x25')](removeEntity(_0xfc8529,null))[_0xc751('0x44')](handleError(_0xfc8529,null));};exports['describe']=function(_0x56796e,_0x70f47d){return db[_0xc751('0x2d')][_0xc751('0x4c')]()[_0xc751('0x25')](respondWithResult(_0x70f47d,null))[_0xc751('0x44')](handleError(_0x70f47d,null));};exports[_0xc751('0x4d')]=function(_0x35333b,_0x16922f,_0x2e63bb){var _0x314739={'raw':!![],'where':{}};var _0x418a47={};var _0x2ca46b={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xc751('0x4e')]({'where':{'id':_0x35333b['params']['id']}})[_0xc751('0x25')](handleEntityNotFound(_0x16922f,null))[_0xc751('0x25')](function(_0x425df5){if(_0x425df5){_0x418a47[_0xc751('0x30')]=_[_0xc751('0x32')](db['JscriptyQuestionReport'][_0xc751('0x47')]);_0x418a47[_0xc751('0x31')]=_[_0xc751('0x32')](_0x35333b[_0xc751('0x31')]);_0x418a47['filters']=_['intersection'](_0x418a47[_0xc751('0x30')],_0x418a47[_0xc751('0x31')]);_0x314739[_0xc751('0x35')]=_[_0xc751('0x33')](_0x418a47[_0xc751('0x30')],qs[_0xc751('0x34')](_0x35333b[_0xc751('0x31')][_0xc751('0x34')]));_0x314739[_0xc751('0x35')]=_0x314739[_0xc751('0x35')]['length']?_0x314739[_0xc751('0x35')]:_0x418a47[_0xc751('0x30')];if(!_0x35333b[_0xc751('0x31')][_0xc751('0x4f')]('nolimit')){_0x314739[_0xc751('0x1f')]=qs['limit'](_0x35333b['query'][_0xc751('0x1f')]);_0x314739[_0xc751('0x1d')]=qs['offset'](_0x35333b[_0xc751('0x31')][_0xc751('0x1d')]);}_0x314739[_0xc751('0x37')]=qs[_0xc751('0x38')](_0x35333b[_0xc751('0x31')][_0xc751('0x38')]);_0x314739[_0xc751('0x39')]=qs[_0xc751('0x3a')](_[_0xc751('0x3b')](_0x35333b[_0xc751('0x31')],_0x418a47['filters']));_0x314739['where'][_0xc751('0x50')]=_0x425df5['id'];if(_0x35333b[_0xc751('0x31')][_0xc751('0x3c')]){_0x314739[_0xc751('0x39')]=_['merge'](_0x314739[_0xc751('0x39')],{'$or':_[_0xc751('0x2c')](_0x314739[_0xc751('0x35')],function(_0x33aa67){var _0x5432b6={};_0x5432b6[_0x33aa67]={'$like':'%'+_0x35333b['query'][_0xc751('0x3c')]+'%'};return _0x5432b6;})});}_0x314739=_['merge']({},_0x314739,_0x35333b[_0xc751('0x3f')]);return db[_0xc751('0x51')]['count']({'where':_0x314739[_0xc751('0x39')]})[_0xc751('0x25')](function(_0x530c44){_0x2ca46b[_0xc751('0x40')]=_0x530c44;if(_0x35333b['query'][_0xc751('0x48')]){_0x314739[_0xc751('0x41')]=[{'all':!![]}];}return db[_0xc751('0x51')][_0xc751('0x42')](_0x314739);})[_0xc751('0x25')](function(_0x22b777){_0x2ca46b[_0xc751('0x43')]=_0x22b777;return _0x2ca46b;});}})['then'](respondWithFilteredResult(_0x16922f,_0x314739))[_0xc751('0x44')](handleError(_0x16922f,null));};
\ No newline at end of file
index 11c2314..4906bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['lodash','moment','bluebird','path','rimraf','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x2e561f,_0x1b1660){var _0x4160ea=function(_0x1fa2ca){while(--_0x1fa2ca){_0x2e561f['push'](_0x2e561f['shift']());}};_0x4160ea(++_0x1b1660);}(_0x2675,0x75));var _0x5267=function(_0x1d2252,_0x5b0ce0){_0x1d2252=_0x1d2252-0x0;var _0x3ac18b=_0x2675[_0x1d2252];return _0x3ac18b;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5267('0x1'));var BPromise=require(_0x5267('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5267('0x3'));var rimraf=require(_0x5267('0x4'));var config=require('../../config/environment');var attributes=require(_0x5267('0x5'));module[_0x5267('0x6')]=function(_0x4bd042,_0x10f92c){return _0x4bd042[_0x5267('0x7')](_0x5267('0x8'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0ae=['api','bluebird','path','rimraf','./jscriptySessionReport.attributes','define','JscriptySessionReport','report_jscripty_sessions','../../config/logger'];(function(_0x58e7f4,_0xc27fb5){var _0x397bd2=function(_0xf08460){while(--_0xf08460){_0x58e7f4['push'](_0x58e7f4['shift']());}};_0x397bd2(++_0xc27fb5);}(_0xe0ae,0xa1));var _0xee0a=function(_0x534c8f,_0x500079){_0x534c8f=_0x534c8f-0x0;var _0x5a57f5=_0xe0ae[_0x534c8f];return _0x5a57f5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xee0a('0x0'))(_0xee0a('0x1'));var moment=require('moment');var BPromise=require(_0xee0a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xee0a('0x3'));var rimraf=require(_0xee0a('0x4'));var config=require('../../config/environment');var attributes=require(_0xee0a('0x5'));module['exports']=function(_0x5bef07,_0x39a302){return _0x5bef07[_0xee0a('0x6')](_0xee0a('0x7'),attributes,{'tableName':_0xee0a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 502aea2..ed49c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x52fdf8,_0x21fdfa){var _0x3a3711=function(_0x4abc4d){while(--_0x4abc4d){_0x52fdf8['push'](_0x52fdf8['shift']());}};_0x3a3711(++_0x21fdfa);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x12320e,_0x45cdf5){_0x12320e=_0x12320e-0x0;var _0xf91c44=_0xc1c6[_0x12320e];return _0xf91c44;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
+var _0x687b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x687b,0x14a));var _0xb687=function(_0x5ea22f,_0x128142){_0x5ea22f=_0x5ea22f-0x0;var _0x4d878c=_0x687b[_0x5ea22f];return _0x4d878c;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var moment=require(_0xb687('0x2'));var BPromise=require(_0xb687('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb687('0x4'))['db'];var utils=require(_0xb687('0x5'));var logger=require(_0xb687('0x6'))(_0xb687('0x7'));var config=require(_0xb687('0x8'));var jayson=require(_0xb687('0x9'));var client=jayson[_0xb687('0xa')][_0xb687('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ffea,_0x27b750,_0x48942b){return new BPromise(function(_0x2aea59,_0xd40346){return client['request'](_0x47ffea,_0x48942b)[_0xb687('0xc')](function(_0x21e3ab){logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));logger[_0xb687('0x10')](_0xb687('0x11'),_0x27b750,_0xb687('0xf'),JSON[_0xb687('0x12')](_0x21e3ab));if(_0x21e3ab['error']){if(_0x21e3ab[_0xb687('0x13')][_0xb687('0x14')]===0x1f4){logger[_0xb687('0x13')](_0xb687('0xe'),_0x27b750,_0x21e3ab['error']['message']);return _0xd40346(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}logger['error'](_0xb687('0xe'),_0x27b750,_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);return _0x2aea59(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}else{logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));_0x2aea59(_0x21e3ab[_0xb687('0x16')][_0xb687('0x15')]);}})[_0xb687('0x17')](function(_0x19bb29){logger['error'](_0xb687('0xe'),_0x27b750,_0x19bb29);_0xd40346(_0x19bb29);});});}
\ No newline at end of file
index 0881b08..dd8d78e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bb7=['get','index','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller'];(function(_0x1c62b3,_0x13130c){var _0x43cce8=function(_0x11dbed){while(--_0x11dbed){_0x1c62b3['push'](_0x1c62b3['shift']());}};_0x43cce8(++_0x13130c);}(_0x5bb7,0x1ee));var _0x75bb=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x5bb7[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x75bb('0x0'));var util=require(_0x75bb('0x1'));var path=require(_0x75bb('0x2'));var timeout=require(_0x75bb('0x3'));var express=require(_0x75bb('0x4'));var router=express[_0x75bb('0x5')]();var fs_extra=require(_0x75bb('0x6'));var auth=require(_0x75bb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x75bb('0x8'));var controller=require(_0x75bb('0x9'));router[_0x75bb('0xa')]('/',controller[_0x75bb('0xb')]);router[_0x75bb('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);module[_0x75bb('0xd')]=router;
\ No newline at end of file
+var _0xc01b=['get','/:id','isAuthenticated','update','exports','multer','util','path','connect-timeout','Router','fs-extra','./license.controller'];(function(_0x25c988,_0xce8221){var _0x45fcc2=function(_0x47fba5){while(--_0x47fba5){_0x25c988['push'](_0x25c988['shift']());}};_0x45fcc2(++_0xce8221);}(_0xc01b,0x65));var _0xbc01=function(_0x31b574,_0x5dbdb1){_0x31b574=_0x31b574-0x0;var _0x1c3892=_0xc01b[_0x31b574];return _0x1c3892;};'use strict';var multer=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var path=require(_0xbc01('0x2'));var timeout=require(_0xbc01('0x3'));var express=require('express');var router=express[_0xbc01('0x4')]();var fs_extra=require(_0xbc01('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbc01('0x6'));router[_0xbc01('0x7')]('/',controller['index']);router['put'](_0xbc01('0x8'),auth[_0xbc01('0x9')](),controller[_0xbc01('0xa')]);module[_0xbc01('0xb')]=router;
\ No newline at end of file
index e8f6805..98ed41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2091=['STRING','INTEGER','exports','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2091,0x182));var _0x1209=function(_0x2f3d2e,_0x5650c8){_0x2f3d2e=_0x2f3d2e-0x0;var _0x5af34c=_0x2091[_0x2f3d2e];return _0x5af34c;};'use strict';var Sequelize=require('sequelize');module[_0x1209('0x0')]={'license':{'type':Sequelize[_0x1209('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x1209('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x1209('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe000=['exports','TEXT','STRING'];(function(_0x477575,_0x58027a){var _0x2b2cae=function(_0x56de82){while(--_0x56de82){_0x477575['push'](_0x477575['shift']());}};_0x2b2cae(++_0x58027a);}(_0xe000,0x8a));var _0x0e00=function(_0x9d4f49,_0x2fc8c7){_0x9d4f49=_0x9d4f49-0x0;var _0x27f246=_0xe000[_0x9d4f49];return _0x27f246;};'use strict';var Sequelize=require('sequelize');module[_0x0e00('0x0')]={'license':{'type':Sequelize[_0x0e00('0x1')]},'data1':{'type':Sequelize[_0x0e00('0x2')]},'data2':{'type':Sequelize[_0x0e00('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index be632d0..9dadafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['demo','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','../../config/license/util','model','keys','rawAttributes','query','filters','intersection','attributes','fields','merge','options','catch','body','License','find','checkLicense','key'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0295,0x1f0));var _0x5029=function(_0x16b667,_0xadec02){_0x16b667=_0x16b667-0x0;var _0x58620e=_0x0295[_0x16b667];return _0x58620e;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}var utilLicense=require(_0x5029('0x25'));exports['index']=function(_0x32da06,_0x251f99){var _0xe5313e={'raw':!![],'where':{'id':0x1}},_0x4b6f92={};_0x4b6f92[_0x5029('0x26')]=_[_0x5029('0x27')](db['License'][_0x5029('0x28')]);_0x4b6f92[_0x5029('0x29')]=_[_0x5029('0x27')](_0x32da06[_0x5029('0x29')]);_0x4b6f92[_0x5029('0x2a')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],_0x4b6f92[_0x5029('0x29')]);_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],qs[_0x5029('0x2d')](_0x32da06['query'][_0x5029('0x2d')]));_0xe5313e['attributes']=_0xe5313e[_0x5029('0x2c')]['length']?_0xe5313e['attributes']:_0x4b6f92[_0x5029('0x26')];_0xe5313e=_[_0x5029('0x2e')]({},_0xe5313e,_0x32da06[_0x5029('0x2f')]);return utilLicense['getLicense'](_0xe5313e)[_0x5029('0x20')](respondWithResult(_0x251f99,null))[_0x5029('0x30')](handleError(_0x251f99,null));};exports[_0x5029('0x1f')]=function(_0x29c59a,_0x1bb896){if(_0x29c59a[_0x5029('0x31')]['id']){delete _0x29c59a[_0x5029('0x31')]['id'];}return db[_0x5029('0x32')][_0x5029('0x33')]({'where':{'id':_0x29c59a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bb896,null))[_0x5029('0x20')](function(_0xc110e8){var _0x1b3817=_0xc110e8['get']({'plain':!![]});return utilLicense[_0x5029('0x34')](_0x1b3817,_0x29c59a[_0x5029('0x31')][_0x5029('0x35')]);})['then'](function(_0x4904cc){if(!_0x4904cc[_0x5029('0x36')]){return saveUpdates(_0x29c59a[_0x5029('0x31')],null);}return _0x4904cc;})['then'](respondWithResult(_0x1bb896,null))['catch'](handleError(_0x1bb896,null));};
\ No newline at end of file
+var _0x4975=['name','index','model','query','keys','intersection','fields','attributes','length','options','getLicense','catch','body','License','find','params','get','key','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','error','stack'];(function(_0x1a3052,_0x2411ce){var _0x19b0a5=function(_0x2c2f3d){while(--_0x2c2f3d){_0x1a3052['push'](_0x1a3052['shift']());}};_0x19b0a5(++_0x2411ce);}(_0x4975,0x86));var _0x5497=function(_0x5b2e64,_0x56fc6c){_0x5b2e64=_0x5b2e64-0x0;var _0x2affc6=_0x4975[_0x5b2e64];return _0x2affc6;};'use strict';var emlformat=require(_0x5497('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5497('0x1'));var jsonpatch=require(_0x5497('0x2'));var rp=require(_0x5497('0x3'));var moment=require(_0x5497('0x4'));var BPromise=require(_0x5497('0x5'));var Mustache=require(_0x5497('0x6'));var util=require(_0x5497('0x7'));var path=require(_0x5497('0x8'));var sox=require(_0x5497('0x9'));var csv=require(_0x5497('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5497('0xb'));var _=require('lodash');var squel=require(_0x5497('0xc'));var crypto=require(_0x5497('0xd'));var jsforce=require(_0x5497('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5497('0xa'));var querystring=require('querystring');var Papa=require(_0x5497('0xf'));var Redis=require(_0x5497('0x10'));var authService=require(_0x5497('0x11'));var qs=require(_0x5497('0x12'));var as=require(_0x5497('0x13'));var hardwareService=require(_0x5497('0x14'));var logger=require(_0x5497('0x15'))(_0x5497('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5497('0x17'))['db'];function respondWithStatusCode(_0x1b23df,_0x1bb794){_0x1bb794=_0x1bb794||0xcc;return function(_0x984990){if(_0x984990){return _0x1b23df[_0x5497('0x18')](_0x1bb794);}return _0x1b23df[_0x5497('0x19')](_0x1bb794)[_0x5497('0x1a')]();};}function respondWithResult(_0xaca97d,_0x363a5b){_0x363a5b=_0x363a5b||0xc8;return function(_0x1a4c74){if(_0x1a4c74){return _0xaca97d['status'](_0x363a5b)[_0x5497('0x1b')](_0x1a4c74);}};}function respondWithFilteredResult(_0x4fb8e9,_0x4237a9){return function(_0x2bfd8a){if(_0x2bfd8a){var _0x19e5f3=typeof _0x4237a9[_0x5497('0x1c')]===_0x5497('0x1d')&&typeof _0x4237a9[_0x5497('0x1e')]===_0x5497('0x1d');var _0x575f6b=_0x2bfd8a['count'];var _0x3f4d20=_0x19e5f3?0x0:_0x4237a9[_0x5497('0x1c')];var _0x3a47fd=_0x19e5f3?_0x2bfd8a['count']:_0x4237a9[_0x5497('0x1c')]+_0x4237a9[_0x5497('0x1e')];var _0x18e8a8;if(_0x3a47fd>=_0x575f6b){_0x3a47fd=_0x575f6b;_0x18e8a8=0xc8;}else{_0x18e8a8=0xce;}_0x4fb8e9[_0x5497('0x19')](_0x18e8a8);return _0x4fb8e9[_0x5497('0x1f')](_0x5497('0x20'),_0x3f4d20+'-'+_0x3a47fd+'/'+_0x575f6b)[_0x5497('0x1b')](_0x2bfd8a);}return null;};}function patchUpdates(_0x10226f){return function(_0x2e3960){try{jsonpatch[_0x5497('0x21')](_0x2e3960,_0x10226f,!![]);}catch(_0x186065){return BPromise['reject'](_0x186065);}return _0x2e3960[_0x5497('0x22')]();};}function saveUpdates(_0x4d1b27,_0x19200a){return function(_0xd0868d){if(_0xd0868d){return _0xd0868d[_0x5497('0x23')](_0x4d1b27)[_0x5497('0x24')](function(_0x35ecd9){return _0x35ecd9;});}return null;};}function removeEntity(_0x3b2fbc,_0x5018fa){return function(_0x54043a){if(_0x54043a){return _0x54043a[_0x5497('0x25')]()[_0x5497('0x24')](function(){_0x3b2fbc[_0x5497('0x19')](0xcc)[_0x5497('0x1a')]();});}};}function handleEntityNotFound(_0x5223b5,_0x13b7a4){return function(_0x57268c){if(!_0x57268c){_0x5223b5[_0x5497('0x18')](0x194);}return _0x57268c;};}function handleError(_0x16a2b4,_0x429d36){_0x429d36=_0x429d36||0x1f4;return function(_0x34a1a5){logger[_0x5497('0x26')](_0x34a1a5[_0x5497('0x27')]);if(_0x34a1a5['name']){delete _0x34a1a5[_0x5497('0x28')];}_0x16a2b4['status'](_0x429d36)['send'](_0x34a1a5);};}var utilLicense=require('../../config/license/util');exports[_0x5497('0x29')]=function(_0x48d146,_0x5e9356){var _0xc3465={'raw':!![],'where':{'id':0x1}},_0xb14593={};_0xb14593[_0x5497('0x2a')]=_['keys'](db['License']['rawAttributes']);_0xb14593[_0x5497('0x2b')]=_[_0x5497('0x2c')](_0x48d146[_0x5497('0x2b')]);_0xb14593['filters']=_['intersection'](_0xb14593['model'],_0xb14593[_0x5497('0x2b')]);_0xc3465['attributes']=_[_0x5497('0x2d')](_0xb14593[_0x5497('0x2a')],qs[_0x5497('0x2e')](_0x48d146['query'][_0x5497('0x2e')]));_0xc3465[_0x5497('0x2f')]=_0xc3465['attributes'][_0x5497('0x30')]?_0xc3465[_0x5497('0x2f')]:_0xb14593[_0x5497('0x2a')];_0xc3465=_['merge']({},_0xc3465,_0x48d146[_0x5497('0x31')]);return utilLicense[_0x5497('0x32')](_0xc3465)[_0x5497('0x24')](respondWithResult(_0x5e9356,null))[_0x5497('0x33')](handleError(_0x5e9356,null));};exports[_0x5497('0x23')]=function(_0x4a6459,_0x386845){if(_0x4a6459[_0x5497('0x34')]['id']){delete _0x4a6459['body']['id'];}return db[_0x5497('0x35')][_0x5497('0x36')]({'where':{'id':_0x4a6459[_0x5497('0x37')]['id']}})[_0x5497('0x24')](handleEntityNotFound(_0x386845,null))[_0x5497('0x24')](function(_0x37011c){var _0x580e86=_0x37011c[_0x5497('0x38')]({'plain':!![]});return utilLicense['checkLicense'](_0x580e86,_0x4a6459[_0x5497('0x34')][_0x5497('0x39')]);})[_0x5497('0x24')](function(_0x5ab18c){if(!_0x5ab18c['demo']){return saveUpdates(_0x4a6459[_0x5497('0x34')],null);}return _0x5ab18c;})[_0x5497('0x24')](respondWithResult(_0x386845,null))[_0x5497('0x33')](handleError(_0x386845,null));};
\ No newline at end of file
index c514507..36246d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d0=['license','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./license.attributes','exports','License'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb0d0,0x7a));var _0x0b0d=function(_0x4c28b1,_0x428f49){_0x4c28b1=_0x4c28b1-0x0;var _0x733e39=_0xb0d0[_0x4c28b1];return _0x733e39;};'use strict';var _=require(_0x0b0d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0b0d('0x1'));var moment=require(_0x0b0d('0x2'));var BPromise=require(_0x0b0d('0x3'));var rp=require(_0x0b0d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b0d('0x5'));var config=require(_0x0b0d('0x6'));var attributes=require(_0x0b0d('0x7'));module[_0x0b0d('0x8')]=function(_0x52e190,_0x53ab0a){return _0x52e190['define'](_0x0b0d('0x9'),attributes,{'tableName':_0x0b0d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb689=['license','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./license.attributes','exports'];(function(_0xcc639b,_0x2806fa){var _0x426ed8=function(_0x5cbc54){while(--_0x5cbc54){_0xcc639b['push'](_0xcc639b['shift']());}};_0x426ed8(++_0x2806fa);}(_0xb689,0x6f));var _0x9b68=function(_0x290820,_0xdaed11){_0x290820=_0x290820-0x0;var _0xf0a9be=_0xb689[_0x290820];return _0xf0a9be;};'use strict';var _=require(_0x9b68('0x0'));var util=require(_0x9b68('0x1'));var logger=require(_0x9b68('0x2'))(_0x9b68('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9b68('0x4'));var fs=require('fs');var path=require(_0x9b68('0x5'));var rimraf=require(_0x9b68('0x6'));var config=require(_0x9b68('0x7'));var attributes=require(_0x9b68('0x8'));module[_0x9b68('0x9')]=function(_0x340d70,_0x14ef9f){return _0x340d70['define']('License',attributes,{'tableName':_0x9b68('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7b4878c..ea858f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c94=['rpc','../../config/environment','client','http','request','then','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x46401e,_0x2a345b){var _0x447cba=function(_0x54ea97){while(--_0x54ea97){_0x46401e['push'](_0x46401e['shift']());}};_0x447cba(++_0x2a345b);}(_0x4c94,0x1c0));var _0x44c9=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x4c94[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x44c9('0x0'));var util=require(_0x44c9('0x1'));var moment=require(_0x44c9('0x2'));var BPromise=require(_0x44c9('0x3'));var rs=require(_0x44c9('0x4'));var fs=require('fs');var Redis=require(_0x44c9('0x5'));var db=require(_0x44c9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x44c9('0x7'))(_0x44c9('0x8'));var config=require(_0x44c9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x44c9('0xa')][_0x44c9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2820c8,_0x5899f1,_0x122cfc){return new BPromise(function(_0x36bc92,_0x293bb7){return client[_0x44c9('0xc')](_0x2820c8,_0x122cfc)[_0x44c9('0xd')](function(_0x1db228){logger['info'](_0x44c9('0xe'),_0x5899f1,_0x44c9('0xf'));logger[_0x44c9('0x10')](_0x44c9('0x11'),_0x5899f1,_0x44c9('0xf'),JSON[_0x44c9('0x12')](_0x1db228));if(_0x1db228['error']){if(_0x1db228['error']['code']===0x1f4){logger[_0x44c9('0x13')]('License,\x20%s,\x20%s',_0x5899f1,_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);return _0x293bb7(_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);}logger[_0x44c9('0x13')](_0x44c9('0xe'),_0x5899f1,_0x1db228[_0x44c9('0x13')][_0x44c9('0x14')]);return _0x36bc92(_0x1db228['error'][_0x44c9('0x14')]);}else{logger[_0x44c9('0x15')]('License,\x20%s,\x20%s',_0x5899f1,'request\x20sent');_0x36bc92(_0x1db228[_0x44c9('0x16')][_0x44c9('0x14')]);}})[_0x44c9('0x17')](function(_0x140113){logger[_0x44c9('0x13')](_0x44c9('0xe'),_0x5899f1,_0x140113);_0x293bb7(_0x140113);});});}
\ No newline at end of file
+var _0xfe79=['result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','License,\x20%s,\x20%s','message'];(function(_0x9fb081,_0x48f480){var _0x43f8b0=function(_0x418570){while(--_0x418570){_0x9fb081['push'](_0x9fb081['shift']());}};_0x43f8b0(++_0x48f480);}(_0xfe79,0x122));var _0x9fe7=function(_0x43444b,_0x8cf95b){_0x43444b=_0x43444b-0x0;var _0x392fe5=_0xfe79[_0x43444b];return _0x392fe5;};'use strict';var _=require(_0x9fe7('0x0'));var util=require(_0x9fe7('0x1'));var moment=require(_0x9fe7('0x2'));var BPromise=require('bluebird');var rs=require(_0x9fe7('0x3'));var fs=require('fs');var Redis=require(_0x9fe7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9fe7('0x5'));var logger=require(_0x9fe7('0x6'))(_0x9fe7('0x7'));var config=require(_0x9fe7('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9fe7('0x9')][_0x9fe7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b4e0a,_0x2e0c3c,_0x45d746){return new BPromise(function(_0x19e8f5,_0x110a89){return client[_0x9fe7('0xb')](_0x3b4e0a,_0x45d746)[_0x9fe7('0xc')](function(_0x4c3969){logger[_0x9fe7('0xd')]('License,\x20%s,\x20%s',_0x2e0c3c,_0x9fe7('0xe'));logger[_0x9fe7('0xf')](_0x9fe7('0x10'),_0x2e0c3c,_0x9fe7('0xe'),JSON[_0x9fe7('0x11')](_0x4c3969));if(_0x4c3969[_0x9fe7('0x12')]){if(_0x4c3969['error'][_0x9fe7('0x13')]===0x1f4){logger[_0x9fe7('0x12')](_0x9fe7('0x14'),_0x2e0c3c,_0x4c3969[_0x9fe7('0x12')][_0x9fe7('0x15')]);return _0x110a89(_0x4c3969['error'][_0x9fe7('0x15')]);}logger['error'](_0x9fe7('0x14'),_0x2e0c3c,_0x4c3969[_0x9fe7('0x12')]['message']);return _0x19e8f5(_0x4c3969['error'][_0x9fe7('0x15')]);}else{logger[_0x9fe7('0xd')](_0x9fe7('0x14'),_0x2e0c3c,_0x9fe7('0xe'));_0x19e8f5(_0x4c3969[_0x9fe7('0x16')][_0x9fe7('0x15')]);}})[_0x9fe7('0x17')](function(_0x2521b6){logger[_0x9fe7('0x12')]('License,\x20%s,\x20%s',_0x2e0c3c,_0x2521b6);_0x110a89(_0x2521b6);});});}
\ No newline at end of file
index 1078d99..c3adaae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223b=['/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','verifySmtp','getAgents','addDisposition','post','create','addSmtp','addInteraction','addApplications','/:id/users','addAgents','put','delete','removeDispositions','removeImap','removeSmtp','destroy','removeAgents','exports','multer','util','path','express','fs-extra','../../config/environment','./mailAccount.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x230ab8,_0x188390){var _0xb1ef96=function(_0x27cf3d){while(--_0x27cf3d){_0x230ab8['push'](_0x230ab8['shift']());}};_0xb1ef96(++_0x188390);}(_0x223b,0x1ab));var _0xb223=function(_0x50bff8,_0x2a417f){_0x50bff8=_0x50bff8-0x0;var _0x56626a=_0x223b[_0x50bff8];return _0x56626a;};'use strict';var multer=require(_0xb223('0x0'));var util=require(_0xb223('0x1'));var path=require(_0xb223('0x2'));var timeout=require('connect-timeout');var express=require(_0xb223('0x3'));var router=express['Router']();var fs_extra=require(_0xb223('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb223('0x5'));var controller=require(_0xb223('0x6'));router[_0xb223('0x7')]('/',auth[_0xb223('0x8')](),controller['index']);router[_0xb223('0x7')](_0xb223('0x9'),auth['isAuthenticated'](),controller[_0xb223('0xa')]);router[_0xb223('0x7')](_0xb223('0xb'),auth['isAuthenticated'](),controller[_0xb223('0xc')]);router[_0xb223('0x7')](_0xb223('0xd'),auth['isAuthenticated'](),controller[_0xb223('0xe')]);router[_0xb223('0x7')](_0xb223('0xf'),auth['isAuthenticated'](),controller['getAnswers']);router[_0xb223('0x7')](_0xb223('0x10'),auth[_0xb223('0x8')](),controller[_0xb223('0x11')]);router[_0xb223('0x7')](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x13')]);router['get'](_0xb223('0x14'),auth['isAuthenticated'](),controller[_0xb223('0x15')]);router[_0xb223('0x7')](_0xb223('0x16'),auth[_0xb223('0x8')](),controller[_0xb223('0x17')]);router[_0xb223('0x7')](_0xb223('0x18'),auth[_0xb223('0x8')](),controller[_0xb223('0x19')]);router[_0xb223('0x7')]('/:id/verify',auth[_0xb223('0x8')](),controller[_0xb223('0x1a')]);router[_0xb223('0x7')]('/:id/users',auth[_0xb223('0x8')](),controller[_0xb223('0x1b')]);router['post'](_0xb223('0xd'),auth[_0xb223('0x8')](),controller[_0xb223('0x1c')]);router[_0xb223('0x1d')]('/:id/canned_answers',auth[_0xb223('0x8')](),controller['addAnswer']);router[_0xb223('0x1d')]('/',auth[_0xb223('0x8')](),controller[_0xb223('0x1e')]);router[_0xb223('0x1d')]('/:id/in_servers',auth['isAuthenticated'](),controller['addImap']);router['post'](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x1f')]);router[_0xb223('0x1d')](_0xb223('0x14'),auth[_0xb223('0x8')](),controller[_0xb223('0x20')]);router[_0xb223('0x1d')]('/:id/applications',auth['isAuthenticated'](),controller[_0xb223('0x21')]);router[_0xb223('0x1d')]('/:id/send',auth[_0xb223('0x8')](),controller['send']);router[_0xb223('0x1d')](_0xb223('0x22'),auth[_0xb223('0x8')](),controller[_0xb223('0x23')]);router[_0xb223('0x24')]('/:id',auth[_0xb223('0x8')](),controller['update']);router[_0xb223('0x25')](_0xb223('0xd'),auth[_0xb223('0x8')](),controller[_0xb223('0x26')]);router[_0xb223('0x25')](_0xb223('0xf'),auth[_0xb223('0x8')](),controller['removeAnswers']);router['delete']('/:id/in_servers',auth['isAuthenticated'](),controller[_0xb223('0x27')]);router[_0xb223('0x25')](_0xb223('0x12'),auth[_0xb223('0x8')](),controller[_0xb223('0x28')]);router[_0xb223('0x25')](_0xb223('0xb'),auth[_0xb223('0x8')](),controller[_0xb223('0x29')]);router[_0xb223('0x25')](_0xb223('0x22'),auth[_0xb223('0x8')](),controller[_0xb223('0x2a')]);module[_0xb223('0x2b')]=router;
\ No newline at end of file
+var _0xa771=['post','addDisposition','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put','update','removeDispositions','delete','removeAnswers','removeImap','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents'];(function(_0x265c71,_0x279cba){var _0x4074b0=function(_0xb562a9){while(--_0xb562a9){_0x265c71['push'](_0x265c71['shift']());}};_0x4074b0(++_0x279cba);}(_0xa771,0x1e7));var _0x1a77=function(_0x321f56,_0x28880b){_0x321f56=_0x321f56-0x0;var _0x56f317=_0xa771[_0x321f56];return _0x56f317;};'use strict';var multer=require(_0x1a77('0x0'));var util=require(_0x1a77('0x1'));var path=require(_0x1a77('0x2'));var timeout=require(_0x1a77('0x3'));var express=require(_0x1a77('0x4'));var router=express['Router']();var fs_extra=require(_0x1a77('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1a77('0x6'));var config=require(_0x1a77('0x7'));var controller=require(_0x1a77('0x8'));router[_0x1a77('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1a77('0x9')](_0x1a77('0xa'),auth[_0x1a77('0xb')](),controller[_0x1a77('0xc')]);router[_0x1a77('0x9')](_0x1a77('0xd'),auth[_0x1a77('0xb')](),controller[_0x1a77('0xe')]);router[_0x1a77('0x9')](_0x1a77('0xf'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x10')]);router['get'](_0x1a77('0x11'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x12')]);router[_0x1a77('0x9')](_0x1a77('0x13'),auth['isAuthenticated'](),controller[_0x1a77('0x14')]);router[_0x1a77('0x9')](_0x1a77('0x15'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x16')]);router[_0x1a77('0x9')](_0x1a77('0x17'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x18')]);router[_0x1a77('0x9')](_0x1a77('0x19'),auth['isAuthenticated'](),controller[_0x1a77('0x1a')]);router[_0x1a77('0x9')](_0x1a77('0x1b'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x1c')]);router[_0x1a77('0x9')](_0x1a77('0x1d'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x1e')]);router[_0x1a77('0x9')](_0x1a77('0x1f'),auth['isAuthenticated'](),controller[_0x1a77('0x20')]);router[_0x1a77('0x21')](_0x1a77('0xf'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x22')]);router[_0x1a77('0x21')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x1a77('0x23')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1a77('0x24')]);router[_0x1a77('0x21')](_0x1a77('0x13'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x25')]);router[_0x1a77('0x21')](_0x1a77('0x15'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x26')]);router[_0x1a77('0x21')](_0x1a77('0x17'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x27')]);router[_0x1a77('0x21')](_0x1a77('0x19'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x28')]);router[_0x1a77('0x21')](_0x1a77('0x29'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x2a')]);router[_0x1a77('0x21')](_0x1a77('0x1f'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x2b')]);router[_0x1a77('0x2c')](_0x1a77('0xd'),auth[_0x1a77('0xb')](),controller[_0x1a77('0x2d')]);router['delete'](_0x1a77('0xf'),auth['isAuthenticated'](),controller[_0x1a77('0x2e')]);router[_0x1a77('0x2f')](_0x1a77('0x11'),auth['isAuthenticated'](),controller[_0x1a77('0x30')]);router[_0x1a77('0x2f')](_0x1a77('0x13'),auth['isAuthenticated'](),controller[_0x1a77('0x31')]);router[_0x1a77('0x2f')](_0x1a77('0x15'),auth[_0x1a77('0xb')](),controller['removeSmtp']);router[_0x1a77('0x2f')](_0x1a77('0xd'),auth['isAuthenticated'](),controller[_0x1a77('0x32')]);router[_0x1a77('0x2f')](_0x1a77('0x1f'),auth[_0x1a77('0xb')](),controller['removeAgents']);module[_0x1a77('0x33')]=router;
\ No newline at end of file
index 7fe3abb..5408589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','exports'];(function(_0x4c2dca,_0x389823){var _0x58230f=function(_0x37b74f){while(--_0x37b74f){_0x4c2dca['push'](_0x4c2dca['shift']());}};_0x58230f(++_0x389823);}(_0xedd9,0xfc));var _0x9edd=function(_0x46ddbf,_0x2efab7){_0x46ddbf=_0x46ddbf-0x0;var _0xdacb86=_0xedd9[_0x46ddbf];return _0xdacb86;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'description':{'type':Sequelize[_0x9edd('0x1')]},'name':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x9edd('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x9edd('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x9edd('0x1')],'allowNull':![],'defaultValue':_0x9edd('0x4')},'fontSize':{'type':Sequelize[_0x9edd('0x5')](0x2)[_0x9edd('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9edd('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9edd('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x9edd('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x9edd('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xbf9da6){if(!_0xbf9da6)this[_0x9edd('0x9')]('mandatoryDispositionPauseId',null);this[_0x9edd('0x9')](_0x9edd('0xa'),_0xbf9da6);}}};
\ No newline at end of file
+var _0xf53f=['BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING'];(function(_0x232d68,_0x35854e){var _0x3fe6e6=function(_0x481a2c){while(--_0x481a2c){_0x232d68['push'](_0x232d68['shift']());}};_0x3fe6e6(++_0x35854e);}(_0xf53f,0x8d));var _0xff53=function(_0x5d7633,_0x21dd46){_0x5d7633=_0x5d7633-0x0;var _0x3649b8=_0xf53f[_0x5d7633];return _0x3649b8;};'use strict';var Sequelize=require(_0xff53('0x0'));module[_0xff53('0x1')]={'description':{'type':Sequelize[_0xff53('0x2')]},'name':{'type':Sequelize[_0xff53('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0xff53('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xff53('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xff53('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0xff53('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xff53('0x4')]},'markAsUnread':{'type':Sequelize[_0xff53('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xff53('0x2')],'allowNull':![],'defaultValue':_0xff53('0x5')},'fontSize':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xff53('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0xff53('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xff53('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xff53('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xff53('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xff53('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xff53('0x7')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xff53('0x8'),'set':function(_0x14f3ac){if(!_0x14f3ac)this['setDataValue'](_0xff53('0x9'),null);this[_0xff53('0xa')](_0xff53('0xb'),_0x14f3ac);}}};
\ No newline at end of file
index ca4090a..b622d17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dc1=['desk.js','to-csv','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./mailAccount.socket','register','jayson/promise','request','then','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','save','destroy','get','MailAccounts','UserProfileResource','stack','name','index','MailServerIn','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','rows','Imap','keys','filters','include','find','update','body','describe','addDisposition','Disposition','create','getDispositions','params','findAll','removeDispositions','ids','addAnswer','MailAccountId','CannedAnswer','nolimit','removeAnswers','ListId','active','isNil','cservice','cauthentication','cuser','password','cpassword','authentication','host','port','service','user','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','getImap','findOne','addImap','removeImap','setImap','getSmtp','addSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','Owner','internal','Tags','color','tag','addApplications','sequelize','MailApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','getMessages','$gte','format','MailMessage','inlineCss','CmList','Contacts','updatedAt','DESC','from','%s\x20<%s>','email','attachments','join','root','server/files/attachments','secure','List\x20not\x20found','List','messageId','subject','attach','YYYY-MM-DD\x20HH:mm:ss','out','Interaction','Messages','verifySmtp','auth','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','crypto','jsforce'];(function(_0x5d44e9,_0x4bc46b){var _0x38d196=function(_0x33a769){while(--_0x33a769){_0x5d44e9['push'](_0x5d44e9['shift']());}};_0x38d196(++_0x4bc46b);}(_0x0dc1,0xb6));var _0x10dc=function(_0x56b0e0,_0x33d3a7){_0x56b0e0=_0x56b0e0-0x0;var _0x203de0=_0x0dc1[_0x56b0e0];return _0x203de0;};'use strict';var emlformat=require(_0x10dc('0x0'));var rimraf=require(_0x10dc('0x1'));var zipdir=require(_0x10dc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x10dc('0x3'));var BPromise=require(_0x10dc('0x4'));var Mustache=require(_0x10dc('0x5'));var util=require(_0x10dc('0x6'));var path=require(_0x10dc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x10dc('0x8'));var fs=require('fs');var fs_extra=require(_0x10dc('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x10dc('0xa'));var jsforce=require(_0x10dc('0xb'));var deskjs=require(_0x10dc('0xc'));var toCsv=require(_0x10dc('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var htmlToText=require(_0x10dc('0xe'));var juice=require(_0x10dc('0xf'));var Redis=require(_0x10dc('0x10'));var authService=require(_0x10dc('0x11'));var qs=require(_0x10dc('0x12'));var as=require(_0x10dc('0x13'));var hardwareService=require(_0x10dc('0x14'));var logger=require(_0x10dc('0x15'))(_0x10dc('0x16'));var utils=require(_0x10dc('0x17'));var config=require(_0x10dc('0x18'));var licenseUtil=require(_0x10dc('0x19'));var db=require(_0x10dc('0x1a'))['db'];config['redis']=_[_0x10dc('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x10dc('0x1c'))(new Redis(config[_0x10dc('0x1d')]));require(_0x10dc('0x1e'))[_0x10dc('0x1f')](socket);var jayson=require(_0x10dc('0x20'));var client=jayson['client']['http']({'port':0x232b});function respondWithRpcPromise(_0xf6be83,_0x1c46fb,_0x4d8af4,_0x465374){return new BPromise(function(_0x97659,_0xc435e9){var _0x19e892=_0x465374||client;return _0x19e892[_0x10dc('0x21')](_0xf6be83,_0x4d8af4)[_0x10dc('0x22')](function(_0x1cba20){logger['info']('MailAccount,\x20%s,\x20%s',_0x1c46fb,'request\x20sent');logger[_0x10dc('0x23')](_0x10dc('0x24'),_0x1c46fb,_0x10dc('0x25'),JSON[_0x10dc('0x26')](_0x1cba20));if(_0x1cba20[_0x10dc('0x27')]){if(_0x1cba20['error'][_0x10dc('0x28')]===0x1f4){logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x1cba20[_0x10dc('0x27')][_0x10dc('0x2a')]);return _0xc435e9(_0x1cba20['error'][_0x10dc('0x2a')]);}logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x1cba20['error'][_0x10dc('0x2a')]);return _0x97659(_0x1cba20[_0x10dc('0x27')][_0x10dc('0x2a')]);}else{logger[_0x10dc('0x2b')](_0x10dc('0x29'),_0x1c46fb,_0x10dc('0x25'));_0x97659(_0x1cba20[_0x10dc('0x2c')][_0x10dc('0x2a')]);}})[_0x10dc('0x2d')](function(_0x555c5d){logger[_0x10dc('0x27')](_0x10dc('0x29'),_0x1c46fb,_0x555c5d);_0xc435e9(_0x555c5d);});});}function respondWithStatusCode(_0x4ad87e,_0x1dd543){_0x1dd543=_0x1dd543||0xcc;return function(_0x580b9d){if(_0x580b9d){return _0x4ad87e[_0x10dc('0x2e')](_0x1dd543);}return _0x4ad87e[_0x10dc('0x2f')](_0x1dd543)[_0x10dc('0x30')]();};}function respondWithResult(_0x2dfa5b,_0x53d095){_0x53d095=_0x53d095||0xc8;return function(_0x3283fc){if(_0x3283fc){return _0x2dfa5b[_0x10dc('0x2f')](_0x53d095)[_0x10dc('0x31')](_0x3283fc);}};}function respondWithFilteredResult(_0xeaf1e3,_0x16741d){return function(_0x227dee){if(_0x227dee){var _0x446067=typeof _0x16741d[_0x10dc('0x32')]===_0x10dc('0x33')&&typeof _0x16741d['limit']===_0x10dc('0x33');var _0x497b42=_0x227dee['count'];var _0x169233=_0x446067?0x0:_0x16741d[_0x10dc('0x32')];var _0x1ef4e0=_0x446067?_0x227dee[_0x10dc('0x34')]:_0x16741d[_0x10dc('0x32')]+_0x16741d[_0x10dc('0x35')];var _0x5a96c4;if(_0x1ef4e0>=_0x497b42){_0x1ef4e0=_0x497b42;_0x5a96c4=0xc8;}else{_0x5a96c4=0xce;}_0xeaf1e3[_0x10dc('0x2f')](_0x5a96c4);return _0xeaf1e3[_0x10dc('0x36')]('Content-Range',_0x169233+'-'+_0x1ef4e0+'/'+_0x497b42)[_0x10dc('0x31')](_0x227dee);}return null;};}function patchUpdates(_0x351e2b){return function(_0x296e62){try{jsonpatch['apply'](_0x296e62,_0x351e2b,!![]);}catch(_0x160918){return BPromise['reject'](_0x160918);}return _0x296e62[_0x10dc('0x37')]();};}function saveUpdates(_0x57311e,_0x2375a8){return function(_0x279612){if(_0x279612){return _0x279612['update'](_0x57311e)['then'](function(_0x3280e3){return _0x3280e3;});}return null;};}function removeEntity(_0x3f4675,_0x1cfdeb){return function(_0x4f0437){if(_0x4f0437){return _0x4f0437[_0x10dc('0x38')]()[_0x10dc('0x22')](function(){var _0x57538a=_0x4f0437[_0x10dc('0x39')]({'plain':!![]});var _0x51c07b=_0x10dc('0x3a');return db[_0x10dc('0x3b')][_0x10dc('0x38')]({'where':{'type':_0x51c07b,'resourceId':_0x57538a['id']}})[_0x10dc('0x22')](function(){return _0x4f0437;});})[_0x10dc('0x22')](function(){_0x3f4675[_0x10dc('0x2f')](0xcc)[_0x10dc('0x30')]();});}};}function handleEntityNotFound(_0x336660,_0x2f7f0b){return function(_0x4ee840){if(!_0x4ee840){_0x336660['sendStatus'](0x194);}return _0x4ee840;};}function handleError(_0x17d44e,_0x1864da){_0x1864da=_0x1864da||0x1f4;return function(_0x1174c1){logger[_0x10dc('0x27')](_0x1174c1[_0x10dc('0x3c')]);if(_0x1174c1[_0x10dc('0x3d')]){delete _0x1174c1[_0x10dc('0x3d')];}_0x17d44e[_0x10dc('0x2f')](_0x1864da)['send'](_0x1174c1);};}exports[_0x10dc('0x3e')]=function(_0x361c85,_0x3f41b4){var _0x1469c3={'include':[{'model':db[_0x10dc('0x3f')],'as':'Imap'},{'model':db[_0x10dc('0x40')],'as':_0x10dc('0x41')},{'model':db[_0x10dc('0x42')],'as':_0x10dc('0x43')}]},_0x12b141={},_0x1a091b={'count':0x0,'rows':[]};var _0xd949f5=_[_0x10dc('0x44')](db[_0x10dc('0x45')][_0x10dc('0x46')],function(_0x701fc5){return{'name':_0x701fc5[_0x10dc('0x47')],'type':_0x701fc5[_0x10dc('0x48')][_0x10dc('0x49')]};});_0x12b141[_0x10dc('0x4a')]=_['map'](_0xd949f5,_0x10dc('0x3d'));_0x12b141[_0x10dc('0x4b')]=_['keys'](_0x361c85[_0x10dc('0x4b')]);_0x12b141['filters']=_[_0x10dc('0x4c')](_0x12b141[_0x10dc('0x4a')],_0x12b141[_0x10dc('0x4b')]);_0x1469c3[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x12b141[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x1469c3[_0x10dc('0x4d')]=_0x1469c3[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x1469c3[_0x10dc('0x4d')]:_0x12b141[_0x10dc('0x4a')];if(!_0x361c85['query'][_0x10dc('0x50')]('nolimit')){_0x1469c3['limit']=qs[_0x10dc('0x35')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x1469c3['offset']=qs['offset'](_0x361c85['query'][_0x10dc('0x32')]);}_0x1469c3[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x361c85[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x1469c3[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x361c85[_0x10dc('0x4b')],_0x12b141['filters']),_0xd949f5);if(_0x361c85[_0x10dc('0x4b')]['filter']){_0x1469c3[_0x10dc('0x53')]=_['merge'](_0x1469c3['where'],{'$or':_[_0x10dc('0x44')](_0xd949f5,function(_0x8c0d52){if(_0x8c0d52[_0x10dc('0x48')]!=='VIRTUAL'){var _0x5e8b42={};_0x5e8b42[_0x8c0d52[_0x10dc('0x3d')]]={'$like':'%'+_0x361c85['query'][_0x10dc('0x55')]+'%'};return _0x5e8b42;}})});}_0x1469c3=_[_0x10dc('0x56')]({},_0x1469c3,_0x361c85[_0x10dc('0x57')]);var _0x6ff692={'where':_0x1469c3['where']};return db[_0x10dc('0x45')][_0x10dc('0x34')](_0x6ff692)['then'](function(_0x3a81e7){_0x1a091b['count']=_0x3a81e7;if(_0x361c85[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x1469c3['include']=[{'all':!![]}];}return db[_0x10dc('0x45')]['findAll'](_0x1469c3);})[_0x10dc('0x22')](function(_0x5f2b06){_0x1a091b[_0x10dc('0x59')]=_0x5f2b06;return _0x1a091b;})[_0x10dc('0x22')](respondWithFilteredResult(_0x3f41b4,_0x1469c3))['catch'](handleError(_0x3f41b4,null));};exports['show']=function(_0x18afcd,_0x4029a1){var _0x325cb9={'raw':![],'where':{'id':_0x18afcd['params']['id']},'include':[{'model':db[_0x10dc('0x3f')],'as':_0x10dc('0x5a')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x114d34={};_0x114d34[_0x10dc('0x4a')]=_['keys'](db['MailAccount'][_0x10dc('0x46')]);_0x114d34[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x18afcd[_0x10dc('0x4b')]);_0x114d34[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x114d34[_0x10dc('0x4a')],_0x114d34[_0x10dc('0x4b')]);_0x325cb9['attributes']=_[_0x10dc('0x4c')](_0x114d34[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x18afcd[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x325cb9['attributes']=_0x325cb9[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x325cb9[_0x10dc('0x4d')]:_0x114d34[_0x10dc('0x4a')];if(_0x18afcd[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x325cb9[_0x10dc('0x5d')]=[{'all':!![]}];}_0x325cb9=_[_0x10dc('0x56')]({},_0x325cb9,_0x18afcd[_0x10dc('0x57')]);return db[_0x10dc('0x45')][_0x10dc('0x5e')](_0x325cb9)[_0x10dc('0x22')](handleEntityNotFound(_0x4029a1,null))[_0x10dc('0x22')](respondWithResult(_0x4029a1,null))['catch'](handleError(_0x4029a1,null));};exports[_0x10dc('0x5f')]=function(_0x4e842e,_0x5bab8a){if(_0x4e842e[_0x10dc('0x60')]['id']){delete _0x4e842e[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x4e842e['params']['id']},'include':[{'model':db[_0x10dc('0x3f')],'as':_0x10dc('0x5a')},{'model':db['MailServerOut'],'as':_0x10dc('0x41')},{'model':db[_0x10dc('0x42')],'as':'mandatoryDispositionPause'}]})[_0x10dc('0x22')](handleEntityNotFound(_0x5bab8a,null))[_0x10dc('0x22')](saveUpdates(_0x4e842e['body'],null))[_0x10dc('0x22')](function(_0x3ebee9){if(_0x3ebee9&&_0x4e842e[_0x10dc('0x60')]['Imap']){return db[_0x10dc('0x3f')][_0x10dc('0x5f')](_0x4e842e[_0x10dc('0x60')][_0x10dc('0x5a')],{'where':{'MailAccountId':_0x3ebee9['id']}})[_0x10dc('0x22')](function(){return _0x3ebee9;});}return _0x3ebee9;})[_0x10dc('0x22')](function(_0x5d0966){if(_0x5d0966&&_0x4e842e[_0x10dc('0x60')][_0x10dc('0x41')]){return db[_0x10dc('0x40')][_0x10dc('0x5f')](_0x4e842e[_0x10dc('0x60')][_0x10dc('0x41')],{'where':{'MailAccountId':_0x5d0966['id']}})[_0x10dc('0x22')](function(){return _0x5d0966;});}return _0x5d0966;})[_0x10dc('0x22')](respondWithResult(_0x5bab8a,null))[_0x10dc('0x2d')](handleError(_0x5bab8a,null));};exports[_0x10dc('0x61')]=function(_0x367b51,_0x2c6abd){return db['MailAccount'][_0x10dc('0x61')]()['then'](respondWithResult(_0x2c6abd,null))[_0x10dc('0x2d')](handleError(_0x2c6abd,null));};exports[_0x10dc('0x62')]=function(_0x315638,_0x1b203a,_0x42b1c2){if(_0x315638[_0x10dc('0x60')]['id']){delete _0x315638['body']['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x315638['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1b203a,null))[_0x10dc('0x22')](function(_0x3373e5){if(_0x3373e5){_0x315638['body']['MailAccountId']=_0x3373e5['id'];return db[_0x10dc('0x63')][_0x10dc('0x64')](_0x315638[_0x10dc('0x60')]);}})[_0x10dc('0x22')](respondWithResult(_0x1b203a,null))[_0x10dc('0x2d')](handleError(_0x1b203a,null));};exports[_0x10dc('0x65')]=function(_0x348c1d,_0x1bd88b,_0x5a047d){var _0x5019c9={'raw':![],'where':{}};var _0x211a5f={};var _0x3c6bf9={'count':0x0,'rows':[]};return db[_0x10dc('0x45')]['findOne']({'where':{'id':_0x348c1d[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1bd88b,null))[_0x10dc('0x22')](function(_0x5de4a4){if(_0x5de4a4){_0x211a5f['model']=_['keys'](db[_0x10dc('0x63')][_0x10dc('0x46')]);_0x211a5f['query']=_['keys'](_0x348c1d['query']);_0x211a5f[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x211a5f[_0x10dc('0x4a')],_0x211a5f[_0x10dc('0x4b')]);_0x5019c9[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x211a5f[_0x10dc('0x4a')],qs['fields'](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x5019c9[_0x10dc('0x4d')]=_0x5019c9[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x5019c9[_0x10dc('0x4d')]:_0x211a5f[_0x10dc('0x4a')];if(!_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x5019c9[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x5019c9['offset']=qs[_0x10dc('0x32')](_0x348c1d[_0x10dc('0x4b')]['offset']);}_0x5019c9['order']=qs[_0x10dc('0x52')](_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x5019c9['where']=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x348c1d['query'],_0x211a5f['filters']));_0x5019c9['where']['MailAccountId']=_0x5de4a4['id'];if(_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x5019c9[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x5019c9[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x5019c9['attributes'],function(_0x288dd4){var _0x129394={};_0x129394[_0x288dd4]={'$like':'%'+_0x348c1d[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x129394;})});}_0x5019c9=_[_0x10dc('0x56')]({},_0x5019c9,_0x348c1d[_0x10dc('0x57')]);return db['Disposition'][_0x10dc('0x34')]({'where':_0x5019c9[_0x10dc('0x53')]})['then'](function(_0x5c1fbc){_0x3c6bf9[_0x10dc('0x34')]=_0x5c1fbc;if(_0x348c1d[_0x10dc('0x4b')]['includeAll']){_0x5019c9['include']=[{'all':!![]}];}return db['Disposition'][_0x10dc('0x67')](_0x5019c9);})[_0x10dc('0x22')](function(_0x12420c){_0x3c6bf9[_0x10dc('0x59')]=_0x12420c;return _0x3c6bf9;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x1bd88b,_0x5019c9))['catch'](handleError(_0x1bd88b,null));};exports['removeDispositions']=function(_0x24d230,_0x3383f9,_0x428601){return db[_0x10dc('0x45')]['find']({'where':{'id':_0x24d230[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x3383f9,null))[_0x10dc('0x22')](function(_0x562e5c){if(_0x562e5c){return _0x562e5c[_0x10dc('0x68')](_0x24d230[_0x10dc('0x4b')][_0x10dc('0x69')]);}})[_0x10dc('0x22')](respondWithStatusCode(_0x3383f9,null))[_0x10dc('0x2d')](handleError(_0x3383f9,null));};exports[_0x10dc('0x6a')]=function(_0x2108b0,_0x1cd38f,_0x56dcd4){if(_0x2108b0[_0x10dc('0x60')]['id']){delete _0x2108b0[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x2108b0[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x1cd38f,null))[_0x10dc('0x22')](function(_0x42fad7){if(_0x42fad7){_0x2108b0['body'][_0x10dc('0x6b')]=_0x42fad7['id'];return db[_0x10dc('0x6c')][_0x10dc('0x64')](_0x2108b0['body']);}})[_0x10dc('0x22')](respondWithResult(_0x1cd38f,null))['catch'](handleError(_0x1cd38f,null));};exports['getAnswers']=function(_0x5801cd,_0x2d15bc,_0x69adab){var _0x59eeab={'raw':![],'where':{}};var _0x37215f={};var _0x238532={'count':0x0,'rows':[]};return db[_0x10dc('0x45')]['findOne']({'where':{'id':_0x5801cd['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x2d15bc,null))['then'](function(_0x197011){if(_0x197011){_0x37215f[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x6c')]['rawAttributes']);_0x37215f[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x5801cd[_0x10dc('0x4b')]);_0x37215f['filters']=_[_0x10dc('0x4c')](_0x37215f[_0x10dc('0x4a')],_0x37215f['query']);_0x59eeab[_0x10dc('0x4d')]=_['intersection'](_0x37215f[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x59eeab[_0x10dc('0x4d')]=_0x59eeab[_0x10dc('0x4d')]['length']?_0x59eeab['attributes']:_0x37215f['model'];if(!_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x50')](_0x10dc('0x6d'))){_0x59eeab[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x59eeab[_0x10dc('0x32')]=qs[_0x10dc('0x32')](_0x5801cd[_0x10dc('0x4b')]['offset']);}_0x59eeab[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x59eeab[_0x10dc('0x53')]=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x5801cd[_0x10dc('0x4b')],_0x37215f[_0x10dc('0x5c')]));_0x59eeab[_0x10dc('0x53')][_0x10dc('0x6b')]=_0x197011['id'];if(_0x5801cd['query']['filter']){_0x59eeab['where']=_[_0x10dc('0x56')](_0x59eeab['where'],{'$or':_[_0x10dc('0x44')](_0x59eeab[_0x10dc('0x4d')],function(_0x32ad37){var _0x286b2e={};_0x286b2e[_0x32ad37]={'$like':'%'+_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x286b2e;})});}_0x59eeab=_['merge']({},_0x59eeab,_0x5801cd[_0x10dc('0x57')]);return db[_0x10dc('0x6c')][_0x10dc('0x34')]({'where':_0x59eeab['where']})[_0x10dc('0x22')](function(_0x4cd60a){_0x238532['count']=_0x4cd60a;if(_0x5801cd[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x59eeab[_0x10dc('0x5d')]=[{'all':!![]}];}return db[_0x10dc('0x6c')]['findAll'](_0x59eeab);})[_0x10dc('0x22')](function(_0x48d4bb){_0x238532['rows']=_0x48d4bb;return _0x238532;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x2d15bc,_0x59eeab))[_0x10dc('0x2d')](handleError(_0x2d15bc,null));};exports[_0x10dc('0x6e')]=function(_0x37bfbf,_0x526be3,_0x1a04a4){return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x37bfbf[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x526be3,null))[_0x10dc('0x22')](function(_0x550f93){if(_0x550f93){return _0x550f93['removeAnswers'](_0x37bfbf[_0x10dc('0x4b')][_0x10dc('0x69')]);}})[_0x10dc('0x22')](respondWithStatusCode(_0x526be3,null))[_0x10dc('0x2d')](handleError(_0x526be3,null));};exports[_0x10dc('0x64')]=function(_0x4100be,_0xbdcd3f){var _0x3cf31a={'name':_0x4100be[_0x10dc('0x60')]['name'],'key':_0x4100be[_0x10dc('0x60')][_0x10dc('0x49')],'email':_0x4100be['body']['email'],'ListId':_0x4100be['body'][_0x10dc('0x6f')],'active':!_['isNil'](_0x4100be[_0x10dc('0x60')][_0x10dc('0x70')])?_0x4100be[_0x10dc('0x60')][_0x10dc('0x70')]:!![],'description':_0x4100be[_0x10dc('0x60')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0x10dc('0x71')](_0x4100be[_0x10dc('0x60')][_0x10dc('0x72')])){if(_0x4100be[_0x10dc('0x60')][_0x10dc('0x73')]){_0x3cf31a[_0x10dc('0x5a')]['user']=_0x3cf31a[_0x10dc('0x41')]['user']=_0x4100be[_0x10dc('0x60')][_0x10dc('0x74')];_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x75')]=_0x3cf31a[_0x10dc('0x41')]['pass']=_0x4100be['body'][_0x10dc('0x76')];}else{_0x3cf31a['Imap'][_0x10dc('0x77')]=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x77')]=![];}_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x78')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x5a')][_0x10dc('0x78')];_0x3cf31a[_0x10dc('0x5a')]['port']=_0x4100be[_0x10dc('0x60')]['Imap'][_0x10dc('0x79')];_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x78')]=_0x4100be['body'][_0x10dc('0x41')][_0x10dc('0x78')];_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x79')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x41')][_0x10dc('0x79')];}else{_0x3cf31a[_0x10dc('0x5a')]['service']=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x7a')]=_0x4100be['body']['cservice'];_0x3cf31a[_0x10dc('0x5a')]['user']=_0x3cf31a['Smtp'][_0x10dc('0x7b')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x74')];_0x3cf31a[_0x10dc('0x5a')][_0x10dc('0x75')]=_0x3cf31a[_0x10dc('0x41')][_0x10dc('0x7c')]=_0x4100be[_0x10dc('0x60')][_0x10dc('0x76')];}return db[_0x10dc('0x45')][_0x10dc('0x64')](_0x3cf31a,{'include':[{'model':db[_0x10dc('0x40')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0x10dc('0x5a')}]})['then'](function(_0xcc706e){var _0x1bb508=_0x4100be[_0x10dc('0x7b')][_0x10dc('0x39')]({'plain':!![]});if(!_0x1bb508)throw new Error(_0x10dc('0x7d'));if(_0x1bb508[_0x10dc('0x7e')]===_0x10dc('0x7b')){var _0x53a936=_0xcc706e[_0x10dc('0x39')]({'plain':!![]});return db['UserProfileSection'][_0x10dc('0x5e')]({'where':{'name':_0x10dc('0x3a'),'userProfileId':_0x1bb508['userProfileId']},'raw':!![]})[_0x10dc('0x22')](function(_0x4b3bc8){if(_0x4b3bc8&&_0x4b3bc8['autoAssociation']===0x0){return db[_0x10dc('0x3b')][_0x10dc('0x64')]({'name':_0x53a936['name'],'resourceId':_0x53a936['id'],'type':_0x4b3bc8['name'],'sectionId':_0x4b3bc8['id']},{})['then'](function(){return _0xcc706e;});}else{return _0xcc706e;}})[_0x10dc('0x2d')](function(_0x5ef1c3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5ef1c3);throw _0x5ef1c3;});}return _0xcc706e;})[_0x10dc('0x22')](respondWithResult(_0xbdcd3f,0xc9))[_0x10dc('0x2d')](handleError(_0xbdcd3f,null));};exports[_0x10dc('0x7f')]=function(_0x38fd8f,_0x7aea80,_0x2779d1){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x38fd8f[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x7aea80,null))['then'](function(_0x5c63bb){if(_0x5c63bb){return _0x5c63bb[_0x10dc('0x7f')]();}return null;})['then'](respondWithResult(_0x7aea80,null))[_0x10dc('0x2d')](handleError(_0x7aea80,null));};exports[_0x10dc('0x81')]=function(_0x1b1016,_0x10c575,_0x2cc989){if(_0x1b1016['body']['id']){delete _0x1b1016[_0x10dc('0x60')]['id'];}return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x1b1016[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x10c575,null))[_0x10dc('0x22')](function(_0x1e8119){if(_0x1e8119){_0x1b1016[_0x10dc('0x60')][_0x10dc('0x6b')]=_0x1e8119['id'];return db[_0x10dc('0x3f')][_0x10dc('0x64')](_0x1b1016[_0x10dc('0x60')]);}})['then'](respondWithResult(_0x10c575,null))[_0x10dc('0x2d')](handleError(_0x10c575,null));};exports[_0x10dc('0x82')]=function(_0x5b4747,_0x468994,_0x1217df){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x5b4747['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x468994,null))[_0x10dc('0x22')](function(_0x492858){if(_0x492858){return _0x492858[_0x10dc('0x83')](null);}return null;})[_0x10dc('0x22')](respondWithStatusCode(_0x468994,null))[_0x10dc('0x2d')](handleError(_0x468994,null));};exports[_0x10dc('0x84')]=function(_0x288aa1,_0x733c53,_0x4dbe40){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x288aa1['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x733c53,null))[_0x10dc('0x22')](function(_0xc7eba7){if(_0xc7eba7){return _0xc7eba7['getSmtp']();}return null;})[_0x10dc('0x22')](respondWithResult(_0x733c53,null))[_0x10dc('0x2d')](handleError(_0x733c53,null));};exports[_0x10dc('0x85')]=function(_0x380164,_0x281a85,_0x73745f){if(_0x380164[_0x10dc('0x60')]['id']){delete _0x380164['body']['id'];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x380164[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x281a85,null))['then'](function(_0x33423f){if(_0x33423f){_0x380164[_0x10dc('0x60')]['MailAccountId']=_0x33423f['id'];return db[_0x10dc('0x40')]['create'](_0x380164['body']);}})[_0x10dc('0x22')](respondWithResult(_0x281a85,null))[_0x10dc('0x2d')](handleError(_0x281a85,null));};exports['removeSmtp']=function(_0xb34d64,_0x3aa30f,_0xf2a0c3){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0xb34d64[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x3aa30f,null))['then'](function(_0x2cb3c2){if(_0x2cb3c2){return _0x2cb3c2['setSmtp'](null);}return null;})[_0x10dc('0x22')](respondWithStatusCode(_0x3aa30f,null))['catch'](handleError(_0x3aa30f,null));};exports[_0x10dc('0x86')]=function(_0x28f8d7,_0x12a5ac,_0x4ed4fc){return db[_0x10dc('0x87')][_0x10dc('0x5e')]({'where':{'id':_0x28f8d7['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x12a5ac,null))[_0x10dc('0x22')](function(_0x21fb05){if(_0x21fb05){return _0x21fb05[_0x10dc('0x86')](_0x28f8d7['body']['ids'],_[_0x10dc('0x88')](_0x28f8d7[_0x10dc('0x60')],[_0x10dc('0x69'),'id'])||{});}})['then'](respondWithResult(_0x12a5ac,null))[_0x10dc('0x2d')](handleError(_0x12a5ac,null));};exports[_0x10dc('0x89')]=function(_0x913237,_0x61dcc0,_0x200979){var _0x53213e={'raw':![],'where':{}};var _0x425378={};var _0x5381de={'count':0x0,'rows':[]};return db['MailAccount'][_0x10dc('0x80')]({'where':{'id':_0x913237[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x61dcc0,null))[_0x10dc('0x22')](function(_0x89fbb0){if(_0x89fbb0){_0x425378[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x87')][_0x10dc('0x46')]);_0x425378[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x913237['query']);_0x425378[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x425378[_0x10dc('0x4a')],_0x425378[_0x10dc('0x4b')]);_0x53213e[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x425378['model'],qs['fields'](_0x913237[_0x10dc('0x4b')]['fields']));_0x53213e[_0x10dc('0x4d')]=_0x53213e[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x53213e[_0x10dc('0x4d')]:_0x425378[_0x10dc('0x4a')];if(!_0x913237[_0x10dc('0x4b')]['hasOwnProperty']('nolimit')){_0x53213e[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x913237[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x53213e['offset']=qs['offset'](_0x913237[_0x10dc('0x4b')][_0x10dc('0x32')]);}_0x53213e[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x913237['query'][_0x10dc('0x52')]);_0x53213e['where']=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x913237[_0x10dc('0x4b')],_0x425378['filters']));_0x53213e[_0x10dc('0x53')]['MailAccountId']=_0x89fbb0['id'];if(_0x913237[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x53213e[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x53213e['where'],{'$or':_[_0x10dc('0x44')](_0x53213e['attributes'],function(_0x133ada){var _0x183272={};_0x183272[_0x133ada]={'$like':'%'+_0x913237[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x183272;})});}_0x53213e=_['merge']({},_0x53213e,_0x913237[_0x10dc('0x57')]);return db['MailInteraction'][_0x10dc('0x34')]({'where':_0x53213e[_0x10dc('0x53')]})[_0x10dc('0x22')](function(_0x57dba9){_0x5381de['count']=_0x57dba9;if(_0x913237[_0x10dc('0x4b')][_0x10dc('0x58')]){_0x53213e['include']=[{'model':db[_0x10dc('0x8a')],'as':_0x10dc('0x8b'),'required':![]},{'model':db['User'],'as':_0x10dc('0x8c'),'attributes':[_0x10dc('0x3d'),'fullname',_0x10dc('0x8d')],'required':![]},{'model':db['Tag'],'as':_0x10dc('0x8e'),'attributes':['id',_0x10dc('0x3d'),_0x10dc('0x8f')],'where':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]?{'id':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]}:undefined,'required':_0x913237[_0x10dc('0x4b')][_0x10dc('0x90')]?!![]:![]}];}return db[_0x10dc('0x87')][_0x10dc('0x67')](_0x53213e);})[_0x10dc('0x22')](function(_0x42d4ad){_0x5381de['rows']=_0x42d4ad;return _0x5381de;});}})['then'](respondWithFilteredResult(_0x61dcc0,_0x53213e))[_0x10dc('0x2d')](handleError(_0x61dcc0,null));};exports[_0x10dc('0x91')]=function addApplications(_0x16965e,_0x38aac7){var _0x456589=_0x16965e[_0x10dc('0x66')]['id'];var _0x554584=_0x16965e['body'];var _0x452a4d=0xc8;var _0x52f91a=null;return db[_0x10dc('0x92')]['transaction']({'isolationLevel':db[_0x10dc('0x92')]['Transaction']['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x4771e4){return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x456589},'transaction':_0x4771e4})['then'](function(_0x1a039c){if(_0x1a039c){return db[_0x10dc('0x93')][_0x10dc('0x38')]({'where':{'MailAccountId':_0x456589},'transaction':_0x4771e4})[_0x10dc('0x22')](function(){var _0x1477b1=_[_0x10dc('0x44')](_0x554584,function(_0x6795a3){_0x6795a3[_0x10dc('0x6b')]=_0x456589;return _0x6795a3;});return db[_0x10dc('0x93')][_0x10dc('0x94')](_0x1477b1,{'transaction':_0x4771e4});});}else{_0x452a4d=0x194;_0x52f91a=[];}});})[_0x10dc('0x22')](function(){if(_0x452a4d!==0x194){return db[_0x10dc('0x93')][_0x10dc('0x95')]({'where':{'MailAccountId':_0x456589},'order':_0x10dc('0x96')})[_0x10dc('0x22')](function(_0x30d9b9){_0x52f91a=_0x30d9b9;});}})[_0x10dc('0x2d')](function(_0x28e7bb){_0x452a4d=0x1f4;logger['error'](_0x28e7bb[_0x10dc('0x3c')]);if(_0x28e7bb[_0x10dc('0x3d')]){delete _0x28e7bb[_0x10dc('0x3d')];}_0x52f91a=_0x28e7bb;})[_0x10dc('0x97')](function(){if(_0x52f91a===null){_0x38aac7['sendStatus'](_0x452a4d);}else{if(_0x452a4d===0x1f4){_0x38aac7[_0x10dc('0x2f')](_0x452a4d)[_0x10dc('0x98')](_0x52f91a);}else{_0x38aac7[_0x10dc('0x2f')](_0x452a4d)[_0x10dc('0x31')](_0x52f91a);}}});};exports[_0x10dc('0x99')]=function(_0x3aad62,_0x58044,_0x28ad11){var _0x213f80={};var _0x5d1d6c={};var _0x6b34c5;var _0xc8bc1f;return db['MailAccount']['findOne']({'where':{'id':_0x3aad62[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x58044,null))[_0x10dc('0x22')](function(_0x170b38){if(_0x170b38){_0x6b34c5=_0x170b38;_0x5d1d6c[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db[_0x10dc('0x93')]['rawAttributes']);_0x5d1d6c[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x3aad62[_0x10dc('0x4b')]);_0x5d1d6c['filters']=_[_0x10dc('0x4c')](_0x5d1d6c[_0x10dc('0x4a')],_0x5d1d6c[_0x10dc('0x4b')]);_0x213f80[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x5d1d6c['model'],qs[_0x10dc('0x4e')](_0x3aad62[_0x10dc('0x4b')]['fields']));_0x213f80['attributes']=_0x213f80[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x213f80[_0x10dc('0x4d')]:_0x5d1d6c[_0x10dc('0x4a')];_0x213f80['order']=qs['sort'](_0x3aad62['query'][_0x10dc('0x52')]);_0x213f80[_0x10dc('0x53')]=qs[_0x10dc('0x5c')](_[_0x10dc('0x54')](_0x3aad62[_0x10dc('0x4b')],_0x5d1d6c['filters']));if(_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x213f80[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x213f80[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x213f80[_0x10dc('0x4d')],function(_0x1f2857){var _0x3abce2={};_0x3abce2[_0x1f2857]={'$like':'%'+_0x3aad62['query'][_0x10dc('0x55')]+'%'};return _0x3abce2;})});}_0x213f80=_[_0x10dc('0x56')]({},_0x213f80,_0x3aad62[_0x10dc('0x57')]);return _0x6b34c5[_0x10dc('0x99')](_0x213f80);}})['then'](function(_0x1a1a71){if(_0x1a1a71){_0xc8bc1f=_0x1a1a71[_0x10dc('0x4f')];if(!_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x50')](_0x10dc('0x6d'))){_0x213f80[_0x10dc('0x35')]=qs[_0x10dc('0x35')](_0x3aad62[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x213f80[_0x10dc('0x32')]=qs['offset'](_0x3aad62['query'][_0x10dc('0x32')]);}return _0x6b34c5[_0x10dc('0x99')](_0x213f80);}})[_0x10dc('0x22')](function(_0x1a017d){if(_0x1a017d){return _0x1a017d?{'count':_0xc8bc1f,'rows':_0x1a017d}:null;}})[_0x10dc('0x22')](respondWithResult(_0x58044,null))['catch'](handleError(_0x58044,null));};exports[_0x10dc('0x9a')]=function(_0x507f45,_0x47c205,_0x5a302e){var _0x497e7a={'raw':!![],'where':{}};var _0x4e69a3={};var _0x134115={'count':0x0,'rows':[]};return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x507f45[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x47c205,null))[_0x10dc('0x22')](function(_0x2f8d69){if(_0x2f8d69){_0x4e69a3[_0x10dc('0x4a')]=_[_0x10dc('0x5b')](db['MailMessage'][_0x10dc('0x46')]);_0x4e69a3['query']=_[_0x10dc('0x5b')](_0x507f45['query']);_0x4e69a3[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x4e69a3[_0x10dc('0x4a')],_0x4e69a3[_0x10dc('0x4b')]);_0x497e7a[_0x10dc('0x4d')]=_[_0x10dc('0x4c')](_0x4e69a3[_0x10dc('0x4a')],qs[_0x10dc('0x4e')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x497e7a[_0x10dc('0x4d')]=_0x497e7a[_0x10dc('0x4d')][_0x10dc('0x4f')]?_0x497e7a['attributes']:_0x4e69a3[_0x10dc('0x4a')];if(!_0x507f45[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x497e7a['limit']=qs[_0x10dc('0x35')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x35')]);_0x497e7a['offset']=qs['offset'](_0x507f45['query'][_0x10dc('0x32')]);}_0x497e7a['order']=qs[_0x10dc('0x52')](_0x507f45[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x497e7a[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x507f45[_0x10dc('0x4b')],_0x4e69a3[_0x10dc('0x5c')]));_0x497e7a[_0x10dc('0x53')]['MailAccountId']=_0x2f8d69['id'];if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x55')]){_0x497e7a['where']=_[_0x10dc('0x56')](_0x497e7a[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x497e7a[_0x10dc('0x4d')],function(_0x8fc8d1){var _0x55b4db={};_0x55b4db[_0x8fc8d1]={'$like':'%'+_0x507f45['query']['filter']+'%'};return _0x55b4db;})});}if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x9b')]){var _0x517542=_0x507f45['query'][_0x10dc('0x9b')]['split'](',');var _0x5423a5={};_0x5423a5[_0x517542[0x0]]={'$gte':moment(_0x517542[0x1])[_0x10dc('0x9c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x497e7a[_0x10dc('0x53')]=_[_0x10dc('0x56')](_0x497e7a[_0x10dc('0x53')],_0x5423a5);}_0x497e7a=_[_0x10dc('0x56')]({},_0x497e7a,_0x507f45[_0x10dc('0x57')]);return db[_0x10dc('0x9d')][_0x10dc('0x34')]({'where':_0x497e7a[_0x10dc('0x53')]})[_0x10dc('0x22')](function(_0x52a892){_0x134115[_0x10dc('0x34')]=_0x52a892;if(_0x507f45['query'][_0x10dc('0x58')]){_0x497e7a[_0x10dc('0x5d')]=[{'all':!![]}];}return db[_0x10dc('0x9d')][_0x10dc('0x67')](_0x497e7a);})['then'](function(_0x494578){if(_0x507f45[_0x10dc('0x4b')][_0x10dc('0x9e')]==='true'){for(var _0x4b4e1f=0x0;_0x4b4e1f<_0x494578[_0x10dc('0x4f')];_0x4b4e1f++){_0x494578[_0x4b4e1f][_0x10dc('0x60')]=juice(_0x494578[_0x4b4e1f]['body']);}}_0x134115[_0x10dc('0x59')]=_0x494578;return _0x134115;});}})[_0x10dc('0x22')](respondWithFilteredResult(_0x47c205,_0x497e7a))['catch'](handleError(_0x47c205,null));};exports['send']=function(_0x162ec8,_0x5db45c,_0x38c80c){var _0x48fed5,_0x535535={},_0x2fe29b;if(_0x162ec8[_0x10dc('0x60')]['to']){_0x2fe29b=_0x162ec8[_0x10dc('0x60')]['to']['split'](',')[0x0];}return db[_0x10dc('0x45')]['find']({'where':{'id':_0x162ec8[_0x10dc('0x66')]['id']},'include':[{'model':db[_0x10dc('0x9f')],'as':'List','include':[{'model':db[_0x10dc('0x8a')],'as':_0x10dc('0xa0'),'where':{'email':_0x2fe29b},'limit':0x1,'order':[[_0x10dc('0xa1'),_0x10dc('0xa2')]]}]},{'model':db[_0x10dc('0x40')],'as':'Smtp','raw':!![]}]})[_0x10dc('0x22')](handleEntityNotFound(_0x5db45c,null))[_0x10dc('0x22')](function(_0x3daecb){if(_0x3daecb){_0x48fed5=_0x3daecb;if(_0x3daecb[_0x10dc('0x41')]){if(_['isNil'](_0x162ec8[_0x10dc('0x60')]['from'])){_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa3')]=util[_0x10dc('0x9c')](_0x10dc('0xa4'),_0x3daecb[_0x10dc('0x3d')],_0x3daecb[_0x10dc('0xa5')]||_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7b')]);}if(_0x162ec8[_0x10dc('0x60')]['attachments']&&_0x162ec8['body'][_0x10dc('0xa6')][_0x10dc('0x4f')]){for(var _0x363365=0x0;_0x363365<_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x10dc('0x4f')];_0x363365+=0x1){_0x162ec8['body'][_0x10dc('0xa6')][_0x363365]={'filename':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x363365][_0x10dc('0x3d')],'path':path[_0x10dc('0xa7')](config[_0x10dc('0xa8')],_0x10dc('0xa9'),_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa6')][_0x363365]['basename'])};}}var _0x2e1680={'tls':{'rejectUnauthorized':![]}};if(_[_0x10dc('0x71')](_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7a')])){if(_0x3daecb[_0x10dc('0x41')][_0x10dc('0x77')]){_0x2e1680['auth']={'user':_0x3daecb['Smtp'][_0x10dc('0x7b')],'pass':_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7c')]};}_0x2e1680['host']=_0x3daecb['Smtp']['host'];_0x2e1680[_0x10dc('0x79')]=_0x3daecb['Smtp'][_0x10dc('0x79')];_0x2e1680['secure']=_0x3daecb[_0x10dc('0x41')][_0x10dc('0xaa')];}else{_0x2e1680[_0x10dc('0x7a')]=_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7a')];_0x2e1680['auth']={'user':_0x3daecb[_0x10dc('0x41')]['user'],'pass':_0x3daecb[_0x10dc('0x41')][_0x10dc('0x7c')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x2e1680,'message':_0x162ec8[_0x10dc('0x60')]});}else{throw new Error(_0x10dc('0xab'));}}})[_0x10dc('0x22')](function(_0x4ffe01){if(_0x4ffe01){_0x535535=_0x4ffe01;if(_0x48fed5[_0x10dc('0xac')]){if(_0x48fed5[_0x10dc('0xac')][_0x10dc('0xa0')]['length']){return _0x48fed5[_0x10dc('0xac')][_0x10dc('0xa0')][0x0];}else{return db[_0x10dc('0x8a')][_0x10dc('0x64')](_['defaults'](_0x162ec8['body'],{'firstName':_0x162ec8[_0x10dc('0x60')]['to'],'email':_0x162ec8[_0x10dc('0x60')]['to'],'phone':_0x162ec8[_0x10dc('0x60')]['to'],'ListId':_0x48fed5[_0x10dc('0x6f')]}));}}else{throw new Error(_0x10dc('0xab'));}}})[_0x10dc('0x22')](function(_0x4ac31e){if(_0x4ac31e){var _0x3f8534={'UserId':_0x162ec8[_0x10dc('0x7b')]['id'],'ContactId':_0x4ac31e['id'],'MailAccountId':_0x48fed5['id'],'inReplyTo':_0x535535[_0x10dc('0xad')],'to':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xa3')],'cc':_0x162ec8['body']['cc'],'subject':_0x162ec8[_0x10dc('0x60')][_0x10dc('0xae')],'attach':_0x162ec8['body'][_0x10dc('0xaf')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x10dc('0x9c')](_0x10dc('0xb0')),'lastMsgDirection':_0x10dc('0xb1'),'Messages':[_['merge'](_0x162ec8[_0x10dc('0x60')],{'messageId':_0x535535['messageId'],'sentAt':moment()[_0x10dc('0x9c')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x48fed5['id'],'UserId':_0x162ec8[_0x10dc('0x7b')]['id'],'ContactId':_0x4ac31e['id']})]};if(_0x162ec8[_0x10dc('0x60')][_0x10dc('0xb2')]){_0x3f8534=_['merge'](_0x3f8534,_0x162ec8['body'][_0x10dc('0xb2')]);}return db[_0x10dc('0x87')][_0x10dc('0x64')](_0x3f8534,{'include':[{'model':db[_0x10dc('0x9d')],'as':_0x10dc('0xb3')}]});}})['then'](respondWithResult(_0x5db45c,null))[_0x10dc('0x2d')](handleError(_0x5db45c,null));};exports[_0x10dc('0xb4')]=function(_0x4a0b06,_0x20a8f4,_0x377509){return db[_0x10dc('0x45')]['find']({'where':{'id':_0x4a0b06['params']['id']},'include':[{'model':db[_0x10dc('0x40')],'as':_0x10dc('0x41'),'raw':!![]}]})[_0x10dc('0x22')](handleEntityNotFound(_0x20a8f4,null))[_0x10dc('0x22')](function(_0x26a6f6){if(_0x26a6f6&&_0x26a6f6[_0x10dc('0x41')]){var _0x27a28a={'id':_0x26a6f6['id'],'tls':{'rejectUnauthorized':![]}};if(_0x26a6f6[_0x10dc('0x41')]['service']){_0x27a28a[_0x10dc('0x7a')]=_0x26a6f6['Smtp'][_0x10dc('0x7a')];}else{_0x27a28a[_0x10dc('0x78')]=_0x26a6f6['Smtp'][_0x10dc('0x78')];_0x27a28a[_0x10dc('0x79')]=_0x26a6f6['Smtp'][_0x10dc('0x79')];_0x27a28a[_0x10dc('0xaa')]=_0x26a6f6[_0x10dc('0x41')]['secure'];}if(_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x77')]){_0x27a28a[_0x10dc('0xb5')]={'user':_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x7b')],'pass':_0x26a6f6[_0x10dc('0x41')][_0x10dc('0x7c')]};}return respondWithRpcPromise(_0x10dc('0xb6'),_0x10dc('0xb4'),{'account':_0x27a28a});}})['then'](respondWithResult(_0x20a8f4,null))['catch'](handleError(_0x20a8f4,null));};exports[_0x10dc('0x38')]=function(_0x41c504,_0x44b65d){return db['MailAccount'][_0x10dc('0x5e')]({'where':{'id':_0x41c504[_0x10dc('0x66')]['id']}})['then'](handleEntityNotFound(_0x44b65d,null))['then'](function(_0x16e382){if(_0x16e382&&_0x16e382[_0x10dc('0x7a')]){throw new db[(_0x10dc('0xb7'))][(_0x10dc('0xb8'))](_0x10dc('0xb9'));}return _0x16e382;})[_0x10dc('0x22')](removeEntity(_0x44b65d,null))['catch'](handleError(_0x44b65d,null));};exports[_0x10dc('0xba')]=function(_0x1aa908,_0x244f0d,_0x28f739){return db['MailAccount'][_0x10dc('0x5e')]({'where':{'id':_0x1aa908[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x244f0d,null))[_0x10dc('0x22')](function(_0x19ea1f){if(_0x19ea1f){return _0x19ea1f['addAgents'](_0x1aa908[_0x10dc('0x60')]['ids'],_['omit'](_0x1aa908[_0x10dc('0x60')],[_0x10dc('0x69'),'id'])||{})[_0x10dc('0xbb')](function(_0x510936){for(var _0x1ce4bc=0x0;_0x1ce4bc<_0x1aa908[_0x10dc('0x60')]['ids']['length'];_0x1ce4bc+=0x1){socket[_0x10dc('0xbc')](_0x10dc('0xbd'),{'UserId':Number(_0x1aa908['body'][_0x10dc('0x69')][_0x1ce4bc]),'MailAccountId':Number(_0x1aa908[_0x10dc('0x66')]['id'])});}return _0x510936;});}})['then'](respondWithResult(_0x244f0d,null))['catch'](handleError(_0x244f0d,null));};exports[_0x10dc('0xbe')]=function(_0x3c1201,_0x135086,_0x51a9d4){return db[_0x10dc('0x45')][_0x10dc('0x5e')]({'where':{'id':_0x3c1201['params']['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x135086,null))[_0x10dc('0x22')](function(_0x303b68){if(_0x303b68){return _0x303b68[_0x10dc('0xbe')](_0x3c1201[_0x10dc('0x4b')][_0x10dc('0x69')])[_0x10dc('0x22')](function(){if(_[_0x10dc('0xbf')](_0x3c1201['query'][_0x10dc('0x69')])){for(var _0x2646dc=0x0;_0x2646dc<_0x3c1201[_0x10dc('0x4b')]['ids']['length'];_0x2646dc+=0x1){socket['emit'](_0x10dc('0xc0'),{'UserId':Number(_0x3c1201[_0x10dc('0x4b')][_0x10dc('0x69')][_0x2646dc]),'MailAccountId':Number(_0x3c1201[_0x10dc('0x66')]['id'])});}}else{socket['emit'](_0x10dc('0xc0'),{'UserId':Number(_0x3c1201[_0x10dc('0x4b')]['ids']),'MailAccountId':Number(_0x3c1201[_0x10dc('0x66')]['id'])});}});}})['then'](respondWithStatusCode(_0x135086,null))[_0x10dc('0x2d')](handleError(_0x135086,null));};exports[_0x10dc('0xc1')]=function(_0x1677e5,_0x482b13,_0x2d8039){var _0x3e21f8={};var _0x51f6e2={};var _0x564292;var _0x1b9aed;return db[_0x10dc('0x45')][_0x10dc('0x80')]({'where':{'id':_0x1677e5[_0x10dc('0x66')]['id']}})[_0x10dc('0x22')](handleEntityNotFound(_0x482b13,null))[_0x10dc('0x22')](function(_0x44ea87){if(_0x44ea87){_0x564292=_0x44ea87;_0x51f6e2[_0x10dc('0x4a')]=_['keys'](db['User'][_0x10dc('0x46')]);_0x51f6e2[_0x10dc('0x4b')]=_[_0x10dc('0x5b')](_0x1677e5[_0x10dc('0x4b')]);_0x51f6e2[_0x10dc('0x5c')]=_[_0x10dc('0x4c')](_0x51f6e2[_0x10dc('0x4a')],_0x51f6e2[_0x10dc('0x4b')]);_0x3e21f8[_0x10dc('0x4d')]=_['intersection'](_0x51f6e2['model'],qs['fields'](_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x4e')]));_0x3e21f8[_0x10dc('0x4d')]=_0x3e21f8['attributes'][_0x10dc('0x4f')]?_0x3e21f8[_0x10dc('0x4d')]:_0x51f6e2[_0x10dc('0x4a')];_0x3e21f8[_0x10dc('0x51')]=qs[_0x10dc('0x52')](_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x52')]);_0x3e21f8[_0x10dc('0x53')]=qs['filters'](_[_0x10dc('0x54')](_0x1677e5['query'],_0x51f6e2[_0x10dc('0x5c')]));if(_0x1677e5[_0x10dc('0x4b')]['filter']){_0x3e21f8['where']=_[_0x10dc('0x56')](_0x3e21f8[_0x10dc('0x53')],{'$or':_[_0x10dc('0x44')](_0x3e21f8['attributes'],function(_0x3e353e){var _0x5cdcd3={};_0x5cdcd3[_0x3e353e]={'$like':'%'+_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x55')]+'%'};return _0x5cdcd3;})});}_0x3e21f8=_['merge']({},_0x3e21f8,_0x1677e5[_0x10dc('0x57')]);return _0x564292['getAgents'](_0x3e21f8);}})[_0x10dc('0x22')](function(_0x3a8655){if(_0x3a8655){_0x1b9aed=_0x3a8655[_0x10dc('0x4f')];if(!_0x1677e5[_0x10dc('0x4b')][_0x10dc('0x50')]('nolimit')){_0x3e21f8['limit']=qs[_0x10dc('0x35')](_0x1677e5['query'][_0x10dc('0x35')]);_0x3e21f8[_0x10dc('0x32')]=qs[_0x10dc('0x32')](_0x1677e5['query'][_0x10dc('0x32')]);}return _0x564292['getAgents'](_0x3e21f8);}})['then'](function(_0x2bd1b6){if(_0x2bd1b6){return _0x2bd1b6?{'count':_0x1b9aed,'rows':_0x2bd1b6}:null;}})[_0x10dc('0x22')](respondWithResult(_0x482b13,null))['catch'](handleError(_0x482b13,null));};
\ No newline at end of file
+var _0x1ddc=['merge','includeAll','include','findAll','rows','params','Pause','options','find','update','body','describe','addDisposition','Disposition','create','findOne','nolimit','MailAccountId','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','email','ListId','isNil','active','cservice','user','cuser','password','pass','cpassword','authentication','host','port','service','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','removeImap','getSmtp','addSmtp','addInteraction','MailInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','destroy','bulkCreate','priority','finally','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','List','CmContact','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','root','server/files/attachments','basename','auth','secure','sendMail','List\x20not\x20found','messageId','subject','attach','out','Interaction','Messages','verifySmtp','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailAccount.socket','register','jayson/promise','client','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','MailAccounts','UserProfileResource','stack','name','send','MailServerIn','Imap','MailServerOut','Smtp','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL'];(function(_0x510e8e,_0x36a16f){var _0xe36567=function(_0x50c540){while(--_0x50c540){_0x510e8e['push'](_0x510e8e['shift']());}};_0xe36567(++_0x36a16f);}(_0x1ddc,0x6e));var _0xc1dd=function(_0x3a65e9,_0x5a37bc){_0x3a65e9=_0x3a65e9-0x0;var _0x2dd0d5=_0x1ddc[_0x3a65e9];return _0x2dd0d5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1dd('0x0'));var zipdir=require(_0xc1dd('0x1'));var jsonpatch=require(_0xc1dd('0x2'));var rp=require('request-promise');var moment=require(_0xc1dd('0x3'));var BPromise=require(_0xc1dd('0x4'));var Mustache=require('mustache');var util=require(_0xc1dd('0x5'));var path=require(_0xc1dd('0x6'));var sox=require('sox');var csv=require(_0xc1dd('0x7'));var ejs=require(_0xc1dd('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc1dd('0x9'));var squel=require(_0xc1dd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc1dd('0xb'));var toCsv=require(_0xc1dd('0x7'));var querystring=require(_0xc1dd('0xc'));var Papa=require(_0xc1dd('0xd'));var htmlToText=require('html-to-text');var juice=require(_0xc1dd('0xe'));var Redis=require(_0xc1dd('0xf'));var authService=require(_0xc1dd('0x10'));var qs=require(_0xc1dd('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc1dd('0x12'));var logger=require(_0xc1dd('0x13'))(_0xc1dd('0x14'));var utils=require(_0xc1dd('0x15'));var config=require(_0xc1dd('0x16'));var licenseUtil=require(_0xc1dd('0x17'));var db=require(_0xc1dd('0x18'))['db'];config[_0xc1dd('0x19')]=_[_0xc1dd('0x1a')](config[_0xc1dd('0x19')],{'host':_0xc1dd('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc1dd('0x19')]));require(_0xc1dd('0x1c'))[_0xc1dd('0x1d')](socket);var jayson=require(_0xc1dd('0x1e'));var client=jayson[_0xc1dd('0x1f')]['http']({'port':0x232b});function respondWithRpcPromise(_0xe5a17a,_0x76994c,_0x2d3489,_0x135be4){return new BPromise(function(_0x5815d3,_0x52ddbc){var _0x3e7e6f=_0x135be4||client;return _0x3e7e6f['request'](_0xe5a17a,_0x2d3489)[_0xc1dd('0x20')](function(_0x4c3114){logger[_0xc1dd('0x21')](_0xc1dd('0x22'),_0x76994c,_0xc1dd('0x23'));logger[_0xc1dd('0x24')](_0xc1dd('0x25'),_0x76994c,_0xc1dd('0x23'),JSON['stringify'](_0x4c3114));if(_0x4c3114[_0xc1dd('0x26')]){if(_0x4c3114[_0xc1dd('0x26')]['code']===0x1f4){logger[_0xc1dd('0x26')](_0xc1dd('0x22'),_0x76994c,_0x4c3114[_0xc1dd('0x26')][_0xc1dd('0x27')]);return _0x52ddbc(_0x4c3114[_0xc1dd('0x26')][_0xc1dd('0x27')]);}logger[_0xc1dd('0x26')](_0xc1dd('0x22'),_0x76994c,_0x4c3114['error'][_0xc1dd('0x27')]);return _0x5815d3(_0x4c3114[_0xc1dd('0x26')][_0xc1dd('0x27')]);}else{logger[_0xc1dd('0x21')]('MailAccount,\x20%s,\x20%s',_0x76994c,_0xc1dd('0x23'));_0x5815d3(_0x4c3114[_0xc1dd('0x28')][_0xc1dd('0x27')]);}})[_0xc1dd('0x29')](function(_0x16fb8b){logger[_0xc1dd('0x26')](_0xc1dd('0x22'),_0x76994c,_0x16fb8b);_0x52ddbc(_0x16fb8b);});});}function respondWithStatusCode(_0x41601c,_0x29dc08){_0x29dc08=_0x29dc08||0xcc;return function(_0x41d319){if(_0x41d319){return _0x41601c[_0xc1dd('0x2a')](_0x29dc08);}return _0x41601c[_0xc1dd('0x2b')](_0x29dc08)[_0xc1dd('0x2c')]();};}function respondWithResult(_0xc6607f,_0x5b8edc){_0x5b8edc=_0x5b8edc||0xc8;return function(_0x4a4f08){if(_0x4a4f08){return _0xc6607f[_0xc1dd('0x2b')](_0x5b8edc)[_0xc1dd('0x2d')](_0x4a4f08);}};}function respondWithFilteredResult(_0x25a651,_0x1e112){return function(_0x2b5dbe){if(_0x2b5dbe){var _0x39b8ac=typeof _0x1e112[_0xc1dd('0x2e')]==='undefined'&&typeof _0x1e112[_0xc1dd('0x2f')]===_0xc1dd('0x30');var _0x34abb7=_0x2b5dbe[_0xc1dd('0x31')];var _0x5ce3eb=_0x39b8ac?0x0:_0x1e112[_0xc1dd('0x2e')];var _0x2fe0ba=_0x39b8ac?_0x2b5dbe[_0xc1dd('0x31')]:_0x1e112['offset']+_0x1e112[_0xc1dd('0x2f')];var _0x4ac51e;if(_0x2fe0ba>=_0x34abb7){_0x2fe0ba=_0x34abb7;_0x4ac51e=0xc8;}else{_0x4ac51e=0xce;}_0x25a651[_0xc1dd('0x2b')](_0x4ac51e);return _0x25a651[_0xc1dd('0x32')](_0xc1dd('0x33'),_0x5ce3eb+'-'+_0x2fe0ba+'/'+_0x34abb7)['json'](_0x2b5dbe);}return null;};}function patchUpdates(_0x7541a2){return function(_0x3236ad){try{jsonpatch[_0xc1dd('0x34')](_0x3236ad,_0x7541a2,!![]);}catch(_0x42197c){return BPromise['reject'](_0x42197c);}return _0x3236ad[_0xc1dd('0x35')]();};}function saveUpdates(_0x229f43,_0x2e6c65){return function(_0x49d653){if(_0x49d653){return _0x49d653['update'](_0x229f43)[_0xc1dd('0x20')](function(_0x20c8f1){return _0x20c8f1;});}return null;};}function removeEntity(_0xd0eacc,_0x14588){return function(_0x171c73){if(_0x171c73){return _0x171c73['destroy']()[_0xc1dd('0x20')](function(){var _0xe09168=_0x171c73['get']({'plain':!![]});var _0x423c02=_0xc1dd('0x36');return db[_0xc1dd('0x37')]['destroy']({'where':{'type':_0x423c02,'resourceId':_0xe09168['id']}})[_0xc1dd('0x20')](function(){return _0x171c73;});})['then'](function(){_0xd0eacc[_0xc1dd('0x2b')](0xcc)[_0xc1dd('0x2c')]();});}};}function handleEntityNotFound(_0x55d274,_0x4207e7){return function(_0x24c157){if(!_0x24c157){_0x55d274[_0xc1dd('0x2a')](0x194);}return _0x24c157;};}function handleError(_0x299842,_0x17d950){_0x17d950=_0x17d950||0x1f4;return function(_0x21d6ed){logger[_0xc1dd('0x26')](_0x21d6ed[_0xc1dd('0x38')]);if(_0x21d6ed[_0xc1dd('0x39')]){delete _0x21d6ed[_0xc1dd('0x39')];}_0x299842[_0xc1dd('0x2b')](_0x17d950)[_0xc1dd('0x3a')](_0x21d6ed);};}exports['index']=function(_0x3f7a0f,_0x489d6b){var _0x108135={'include':[{'model':db[_0xc1dd('0x3b')],'as':_0xc1dd('0x3c')},{'model':db[_0xc1dd('0x3d')],'as':_0xc1dd('0x3e')},{'model':db['Pause'],'as':_0xc1dd('0x3f')}]},_0xd8c358={},_0x2d5a89={'count':0x0,'rows':[]};var _0x5b5d76=_[_0xc1dd('0x40')](db[_0xc1dd('0x41')][_0xc1dd('0x42')],function(_0x27bea1){return{'name':_0x27bea1[_0xc1dd('0x43')],'type':_0x27bea1[_0xc1dd('0x44')][_0xc1dd('0x45')]};});_0xd8c358['model']=_[_0xc1dd('0x40')](_0x5b5d76,_0xc1dd('0x39'));_0xd8c358[_0xc1dd('0x46')]=_[_0xc1dd('0x47')](_0x3f7a0f[_0xc1dd('0x46')]);_0xd8c358[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0xd8c358[_0xc1dd('0x4a')],_0xd8c358[_0xc1dd('0x46')]);_0x108135[_0xc1dd('0x4b')]=_[_0xc1dd('0x49')](_0xd8c358[_0xc1dd('0x4a')],qs[_0xc1dd('0x4c')](_0x3f7a0f['query'][_0xc1dd('0x4c')]));_0x108135[_0xc1dd('0x4b')]=_0x108135[_0xc1dd('0x4b')][_0xc1dd('0x4d')]?_0x108135[_0xc1dd('0x4b')]:_0xd8c358[_0xc1dd('0x4a')];if(!_0x3f7a0f[_0xc1dd('0x46')][_0xc1dd('0x4e')]('nolimit')){_0x108135['limit']=qs[_0xc1dd('0x2f')](_0x3f7a0f[_0xc1dd('0x46')][_0xc1dd('0x2f')]);_0x108135[_0xc1dd('0x2e')]=qs[_0xc1dd('0x2e')](_0x3f7a0f[_0xc1dd('0x46')]['offset']);}_0x108135[_0xc1dd('0x4f')]=qs[_0xc1dd('0x50')](_0x3f7a0f[_0xc1dd('0x46')][_0xc1dd('0x50')]);_0x108135[_0xc1dd('0x51')]=qs['filters'](_[_0xc1dd('0x52')](_0x3f7a0f[_0xc1dd('0x46')],_0xd8c358['filters']),_0x5b5d76);if(_0x3f7a0f[_0xc1dd('0x46')][_0xc1dd('0x53')]){_0x108135[_0xc1dd('0x51')]=_['merge'](_0x108135[_0xc1dd('0x51')],{'$or':_[_0xc1dd('0x40')](_0x5b5d76,function(_0x4df5dd){if(_0x4df5dd[_0xc1dd('0x44')]!==_0xc1dd('0x54')){var _0x4188ae={};_0x4188ae[_0x4df5dd[_0xc1dd('0x39')]]={'$like':'%'+_0x3f7a0f['query']['filter']+'%'};return _0x4188ae;}})});}_0x108135=_[_0xc1dd('0x55')]({},_0x108135,_0x3f7a0f['options']);var _0x58133c={'where':_0x108135['where']};return db[_0xc1dd('0x41')][_0xc1dd('0x31')](_0x58133c)[_0xc1dd('0x20')](function(_0x5c75d5){_0x2d5a89[_0xc1dd('0x31')]=_0x5c75d5;if(_0x3f7a0f[_0xc1dd('0x46')][_0xc1dd('0x56')]){_0x108135[_0xc1dd('0x57')]=[{'all':!![]}];}return db[_0xc1dd('0x41')][_0xc1dd('0x58')](_0x108135);})[_0xc1dd('0x20')](function(_0x19b077){_0x2d5a89[_0xc1dd('0x59')]=_0x19b077;return _0x2d5a89;})[_0xc1dd('0x20')](respondWithFilteredResult(_0x489d6b,_0x108135))[_0xc1dd('0x29')](handleError(_0x489d6b,null));};exports['show']=function(_0x29c05f,_0x36c426){var _0x5ab77a={'raw':![],'where':{'id':_0x29c05f[_0xc1dd('0x5a')]['id']},'include':[{'model':db[_0xc1dd('0x3b')],'as':'Imap'},{'model':db[_0xc1dd('0x3d')],'as':'Smtp'},{'model':db[_0xc1dd('0x5b')],'as':_0xc1dd('0x3f')}]},_0x42f9ca={};_0x42f9ca[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x41')]['rawAttributes']);_0x42f9ca['query']=_[_0xc1dd('0x47')](_0x29c05f[_0xc1dd('0x46')]);_0x42f9ca[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0x42f9ca[_0xc1dd('0x4a')],_0x42f9ca[_0xc1dd('0x46')]);_0x5ab77a[_0xc1dd('0x4b')]=_[_0xc1dd('0x49')](_0x42f9ca[_0xc1dd('0x4a')],qs[_0xc1dd('0x4c')](_0x29c05f[_0xc1dd('0x46')][_0xc1dd('0x4c')]));_0x5ab77a[_0xc1dd('0x4b')]=_0x5ab77a[_0xc1dd('0x4b')][_0xc1dd('0x4d')]?_0x5ab77a[_0xc1dd('0x4b')]:_0x42f9ca[_0xc1dd('0x4a')];if(_0x29c05f[_0xc1dd('0x46')][_0xc1dd('0x56')]){_0x5ab77a[_0xc1dd('0x57')]=[{'all':!![]}];}_0x5ab77a=_[_0xc1dd('0x55')]({},_0x5ab77a,_0x29c05f[_0xc1dd('0x5c')]);return db[_0xc1dd('0x41')][_0xc1dd('0x5d')](_0x5ab77a)['then'](handleEntityNotFound(_0x36c426,null))[_0xc1dd('0x20')](respondWithResult(_0x36c426,null))[_0xc1dd('0x29')](handleError(_0x36c426,null));};exports[_0xc1dd('0x5e')]=function(_0x3fb1ca,_0x24a033){if(_0x3fb1ca[_0xc1dd('0x5f')]['id']){delete _0x3fb1ca[_0xc1dd('0x5f')]['id'];}return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x3fb1ca[_0xc1dd('0x5a')]['id']},'include':[{'model':db[_0xc1dd('0x3b')],'as':_0xc1dd('0x3c')},{'model':db[_0xc1dd('0x3d')],'as':_0xc1dd('0x3e')},{'model':db[_0xc1dd('0x5b')],'as':_0xc1dd('0x3f')}]})[_0xc1dd('0x20')](handleEntityNotFound(_0x24a033,null))[_0xc1dd('0x20')](saveUpdates(_0x3fb1ca[_0xc1dd('0x5f')],null))[_0xc1dd('0x20')](function(_0x3dd1db){if(_0x3dd1db&&_0x3fb1ca[_0xc1dd('0x5f')][_0xc1dd('0x3c')]){return db[_0xc1dd('0x3b')][_0xc1dd('0x5e')](_0x3fb1ca['body'][_0xc1dd('0x3c')],{'where':{'MailAccountId':_0x3dd1db['id']}})[_0xc1dd('0x20')](function(){return _0x3dd1db;});}return _0x3dd1db;})[_0xc1dd('0x20')](function(_0x57891e){if(_0x57891e&&_0x3fb1ca[_0xc1dd('0x5f')][_0xc1dd('0x3e')]){return db[_0xc1dd('0x3d')]['update'](_0x3fb1ca[_0xc1dd('0x5f')][_0xc1dd('0x3e')],{'where':{'MailAccountId':_0x57891e['id']}})[_0xc1dd('0x20')](function(){return _0x57891e;});}return _0x57891e;})[_0xc1dd('0x20')](respondWithResult(_0x24a033,null))[_0xc1dd('0x29')](handleError(_0x24a033,null));};exports[_0xc1dd('0x60')]=function(_0x6b710a,_0x3c0910){return db[_0xc1dd('0x41')][_0xc1dd('0x60')]()['then'](respondWithResult(_0x3c0910,null))[_0xc1dd('0x29')](handleError(_0x3c0910,null));};exports[_0xc1dd('0x61')]=function(_0x41270a,_0x17f585,_0xb89f22){if(_0x41270a[_0xc1dd('0x5f')]['id']){delete _0x41270a[_0xc1dd('0x5f')]['id'];}return db['MailAccount'][_0xc1dd('0x5d')]({'where':{'id':_0x41270a[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x17f585,null))[_0xc1dd('0x20')](function(_0x29c09f){if(_0x29c09f){_0x41270a[_0xc1dd('0x5f')]['MailAccountId']=_0x29c09f['id'];return db[_0xc1dd('0x62')][_0xc1dd('0x63')](_0x41270a[_0xc1dd('0x5f')]);}})['then'](respondWithResult(_0x17f585,null))[_0xc1dd('0x29')](handleError(_0x17f585,null));};exports['getDispositions']=function(_0x50e8e3,_0x57f4eb,_0x386571){var _0x5b39c4={'raw':![],'where':{}};var _0x29e16a={};var _0x31f898={'count':0x0,'rows':[]};return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x50e8e3[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x57f4eb,null))[_0xc1dd('0x20')](function(_0x598cd6){if(_0x598cd6){_0x29e16a[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db['Disposition'][_0xc1dd('0x42')]);_0x29e16a[_0xc1dd('0x46')]=_[_0xc1dd('0x47')](_0x50e8e3['query']);_0x29e16a['filters']=_[_0xc1dd('0x49')](_0x29e16a['model'],_0x29e16a[_0xc1dd('0x46')]);_0x5b39c4[_0xc1dd('0x4b')]=_[_0xc1dd('0x49')](_0x29e16a['model'],qs[_0xc1dd('0x4c')](_0x50e8e3[_0xc1dd('0x46')][_0xc1dd('0x4c')]));_0x5b39c4[_0xc1dd('0x4b')]=_0x5b39c4['attributes']['length']?_0x5b39c4[_0xc1dd('0x4b')]:_0x29e16a[_0xc1dd('0x4a')];if(!_0x50e8e3['query'][_0xc1dd('0x4e')](_0xc1dd('0x65'))){_0x5b39c4[_0xc1dd('0x2f')]=qs[_0xc1dd('0x2f')](_0x50e8e3['query']['limit']);_0x5b39c4[_0xc1dd('0x2e')]=qs[_0xc1dd('0x2e')](_0x50e8e3[_0xc1dd('0x46')]['offset']);}_0x5b39c4[_0xc1dd('0x4f')]=qs['sort'](_0x50e8e3[_0xc1dd('0x46')][_0xc1dd('0x50')]);_0x5b39c4['where']=qs['filters'](_[_0xc1dd('0x52')](_0x50e8e3[_0xc1dd('0x46')],_0x29e16a[_0xc1dd('0x48')]));_0x5b39c4[_0xc1dd('0x51')][_0xc1dd('0x66')]=_0x598cd6['id'];if(_0x50e8e3[_0xc1dd('0x46')][_0xc1dd('0x53')]){_0x5b39c4['where']=_[_0xc1dd('0x55')](_0x5b39c4[_0xc1dd('0x51')],{'$or':_['map'](_0x5b39c4[_0xc1dd('0x4b')],function(_0x558bd9){var _0xcdaf03={};_0xcdaf03[_0x558bd9]={'$like':'%'+_0x50e8e3[_0xc1dd('0x46')][_0xc1dd('0x53')]+'%'};return _0xcdaf03;})});}_0x5b39c4=_['merge']({},_0x5b39c4,_0x50e8e3['options']);return db[_0xc1dd('0x62')][_0xc1dd('0x31')]({'where':_0x5b39c4[_0xc1dd('0x51')]})[_0xc1dd('0x20')](function(_0x218349){_0x31f898['count']=_0x218349;if(_0x50e8e3[_0xc1dd('0x46')][_0xc1dd('0x56')]){_0x5b39c4['include']=[{'all':!![]}];}return db[_0xc1dd('0x62')][_0xc1dd('0x58')](_0x5b39c4);})['then'](function(_0x524a07){_0x31f898[_0xc1dd('0x59')]=_0x524a07;return _0x31f898;});}})[_0xc1dd('0x20')](respondWithFilteredResult(_0x57f4eb,_0x5b39c4))[_0xc1dd('0x29')](handleError(_0x57f4eb,null));};exports[_0xc1dd('0x67')]=function(_0x104084,_0x5ae468,_0x6a0547){return db['MailAccount'][_0xc1dd('0x5d')]({'where':{'id':_0x104084[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x5ae468,null))['then'](function(_0x42830c){if(_0x42830c){return _0x42830c[_0xc1dd('0x67')](_0x104084[_0xc1dd('0x46')][_0xc1dd('0x68')]);}})['then'](respondWithStatusCode(_0x5ae468,null))[_0xc1dd('0x29')](handleError(_0x5ae468,null));};exports[_0xc1dd('0x69')]=function(_0x4dfdb8,_0x203600,_0x4daec4){if(_0x4dfdb8[_0xc1dd('0x5f')]['id']){delete _0x4dfdb8[_0xc1dd('0x5f')]['id'];}return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x4dfdb8[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x203600,null))[_0xc1dd('0x20')](function(_0x33d9c8){if(_0x33d9c8){_0x4dfdb8[_0xc1dd('0x5f')]['MailAccountId']=_0x33d9c8['id'];return db['CannedAnswer']['create'](_0x4dfdb8[_0xc1dd('0x5f')]);}})['then'](respondWithResult(_0x203600,null))[_0xc1dd('0x29')](handleError(_0x203600,null));};exports[_0xc1dd('0x6a')]=function(_0x3afafc,_0x263f54,_0x1c7b4c){var _0x3bc6c7={'raw':![],'where':{}};var _0x33296e={};var _0x576fe3={'count':0x0,'rows':[]};return db[_0xc1dd('0x41')]['findOne']({'where':{'id':_0x3afafc[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x263f54,null))[_0xc1dd('0x20')](function(_0x1a56d9){if(_0x1a56d9){_0x33296e[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x6b')]['rawAttributes']);_0x33296e[_0xc1dd('0x46')]=_[_0xc1dd('0x47')](_0x3afafc[_0xc1dd('0x46')]);_0x33296e[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0x33296e[_0xc1dd('0x4a')],_0x33296e[_0xc1dd('0x46')]);_0x3bc6c7[_0xc1dd('0x4b')]=_[_0xc1dd('0x49')](_0x33296e[_0xc1dd('0x4a')],qs[_0xc1dd('0x4c')](_0x3afafc[_0xc1dd('0x46')]['fields']));_0x3bc6c7[_0xc1dd('0x4b')]=_0x3bc6c7[_0xc1dd('0x4b')]['length']?_0x3bc6c7[_0xc1dd('0x4b')]:_0x33296e[_0xc1dd('0x4a')];if(!_0x3afafc[_0xc1dd('0x46')][_0xc1dd('0x4e')](_0xc1dd('0x65'))){_0x3bc6c7[_0xc1dd('0x2f')]=qs[_0xc1dd('0x2f')](_0x3afafc[_0xc1dd('0x46')]['limit']);_0x3bc6c7[_0xc1dd('0x2e')]=qs['offset'](_0x3afafc[_0xc1dd('0x46')]['offset']);}_0x3bc6c7[_0xc1dd('0x4f')]=qs['sort'](_0x3afafc[_0xc1dd('0x46')]['sort']);_0x3bc6c7[_0xc1dd('0x51')]=qs[_0xc1dd('0x48')](_[_0xc1dd('0x52')](_0x3afafc['query'],_0x33296e[_0xc1dd('0x48')]));_0x3bc6c7[_0xc1dd('0x51')][_0xc1dd('0x66')]=_0x1a56d9['id'];if(_0x3afafc[_0xc1dd('0x46')][_0xc1dd('0x53')]){_0x3bc6c7[_0xc1dd('0x51')]=_[_0xc1dd('0x55')](_0x3bc6c7['where'],{'$or':_['map'](_0x3bc6c7['attributes'],function(_0x385fd8){var _0x308857={};_0x308857[_0x385fd8]={'$like':'%'+_0x3afafc[_0xc1dd('0x46')][_0xc1dd('0x53')]+'%'};return _0x308857;})});}_0x3bc6c7=_[_0xc1dd('0x55')]({},_0x3bc6c7,_0x3afafc[_0xc1dd('0x5c')]);return db['CannedAnswer'][_0xc1dd('0x31')]({'where':_0x3bc6c7['where']})[_0xc1dd('0x20')](function(_0x5ae278){_0x576fe3[_0xc1dd('0x31')]=_0x5ae278;if(_0x3afafc[_0xc1dd('0x46')][_0xc1dd('0x56')]){_0x3bc6c7[_0xc1dd('0x57')]=[{'all':!![]}];}return db[_0xc1dd('0x6b')][_0xc1dd('0x58')](_0x3bc6c7);})['then'](function(_0x59db04){_0x576fe3[_0xc1dd('0x59')]=_0x59db04;return _0x576fe3;});}})[_0xc1dd('0x20')](respondWithFilteredResult(_0x263f54,_0x3bc6c7))[_0xc1dd('0x29')](handleError(_0x263f54,null));};exports[_0xc1dd('0x6c')]=function(_0x588b0f,_0x539e3b,_0x2b5ea4){return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x588b0f[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x539e3b,null))[_0xc1dd('0x20')](function(_0x227956){if(_0x227956){return _0x227956[_0xc1dd('0x6c')](_0x588b0f[_0xc1dd('0x46')][_0xc1dd('0x68')]);}})[_0xc1dd('0x20')](respondWithStatusCode(_0x539e3b,null))[_0xc1dd('0x29')](handleError(_0x539e3b,null));};exports[_0xc1dd('0x63')]=function(_0xa7291d,_0x58f1d2){var _0x52bb86={'name':_0xa7291d[_0xc1dd('0x5f')]['name'],'key':_0xa7291d[_0xc1dd('0x5f')]['key'],'email':_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x6d')],'ListId':_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x6e')],'active':!_[_0xc1dd('0x6f')](_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x70')])?_0xa7291d[_0xc1dd('0x5f')]['active']:!![],'description':_0xa7291d[_0xc1dd('0x5f')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0xc1dd('0x6f')](_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x71')])){if(_0xa7291d[_0xc1dd('0x5f')]['cauthentication']){_0x52bb86[_0xc1dd('0x3c')]['user']=_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x72')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x73')];_0x52bb86['Imap'][_0xc1dd('0x74')]=_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x75')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x76')];}else{_0x52bb86[_0xc1dd('0x3c')][_0xc1dd('0x77')]=_0x52bb86[_0xc1dd('0x3e')]['authentication']=![];}_0x52bb86['Imap'][_0xc1dd('0x78')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x3c')][_0xc1dd('0x78')];_0x52bb86['Imap']['port']=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x3c')][_0xc1dd('0x79')];_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x78')]=_0xa7291d[_0xc1dd('0x5f')]['Smtp']['host'];_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x79')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x3e')][_0xc1dd('0x79')];}else{_0x52bb86[_0xc1dd('0x3c')][_0xc1dd('0x7a')]=_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x7a')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x71')];_0x52bb86[_0xc1dd('0x3c')]['user']=_0x52bb86[_0xc1dd('0x3e')][_0xc1dd('0x72')]=_0xa7291d[_0xc1dd('0x5f')][_0xc1dd('0x73')];_0x52bb86['Imap']['password']=_0x52bb86[_0xc1dd('0x3e')]['pass']=_0xa7291d[_0xc1dd('0x5f')]['cpassword'];}return db['MailAccount'][_0xc1dd('0x63')](_0x52bb86,{'include':[{'model':db[_0xc1dd('0x3d')],'as':_0xc1dd('0x3e')},{'model':db['MailServerIn'],'as':_0xc1dd('0x3c')}]})[_0xc1dd('0x20')](function(_0x3c9065){var _0x130c1f=_0xa7291d[_0xc1dd('0x72')][_0xc1dd('0x7b')]({'plain':!![]});if(!_0x130c1f)throw new Error(_0xc1dd('0x7c'));if(_0x130c1f[_0xc1dd('0x7d')]===_0xc1dd('0x72')){var _0x223dc9=_0x3c9065[_0xc1dd('0x7b')]({'plain':!![]});return db[_0xc1dd('0x7e')]['find']({'where':{'name':_0xc1dd('0x36'),'userProfileId':_0x130c1f[_0xc1dd('0x7f')]},'raw':!![]})[_0xc1dd('0x20')](function(_0x572f85){if(_0x572f85&&_0x572f85[_0xc1dd('0x80')]===0x0){return db['UserProfileResource'][_0xc1dd('0x63')]({'name':_0x223dc9[_0xc1dd('0x39')],'resourceId':_0x223dc9['id'],'type':_0x572f85[_0xc1dd('0x39')],'sectionId':_0x572f85['id']},{})[_0xc1dd('0x20')](function(){return _0x3c9065;});}else{return _0x3c9065;}})[_0xc1dd('0x29')](function(_0x2291d4){logger[_0xc1dd('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2291d4);throw _0x2291d4;});}return _0x3c9065;})['then'](respondWithResult(_0x58f1d2,0xc9))[_0xc1dd('0x29')](handleError(_0x58f1d2,null));};exports['getImap']=function(_0x5051e2,_0x1007b5,_0x5189fa){return db['MailAccount']['findOne']({'where':{'id':_0x5051e2[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x1007b5,null))[_0xc1dd('0x20')](function(_0x1d719a){if(_0x1d719a){return _0x1d719a['getImap']();}return null;})[_0xc1dd('0x20')](respondWithResult(_0x1007b5,null))[_0xc1dd('0x29')](handleError(_0x1007b5,null));};exports['addImap']=function(_0xeb433a,_0xddeed,_0x1496ef){if(_0xeb433a[_0xc1dd('0x5f')]['id']){delete _0xeb433a['body']['id'];}return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0xeb433a[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0xddeed,null))[_0xc1dd('0x20')](function(_0x362b5e){if(_0x362b5e){_0xeb433a[_0xc1dd('0x5f')][_0xc1dd('0x66')]=_0x362b5e['id'];return db[_0xc1dd('0x3b')][_0xc1dd('0x63')](_0xeb433a[_0xc1dd('0x5f')]);}})['then'](respondWithResult(_0xddeed,null))[_0xc1dd('0x29')](handleError(_0xddeed,null));};exports[_0xc1dd('0x81')]=function(_0x5f54ba,_0x2e3e3e,_0x3d781e){return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x5f54ba[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x2e3e3e,null))[_0xc1dd('0x20')](function(_0x557006){if(_0x557006){return _0x557006['setImap'](null);}return null;})[_0xc1dd('0x20')](respondWithStatusCode(_0x2e3e3e,null))['catch'](handleError(_0x2e3e3e,null));};exports[_0xc1dd('0x82')]=function(_0x1016cf,_0x4bb6d6,_0x2cce8d){return db['MailAccount'][_0xc1dd('0x64')]({'where':{'id':_0x1016cf[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x4bb6d6,null))[_0xc1dd('0x20')](function(_0x96cfe3){if(_0x96cfe3){return _0x96cfe3['getSmtp']();}return null;})['then'](respondWithResult(_0x4bb6d6,null))[_0xc1dd('0x29')](handleError(_0x4bb6d6,null));};exports[_0xc1dd('0x83')]=function(_0x18cf95,_0x57bb6d,_0x44f131){if(_0x18cf95[_0xc1dd('0x5f')]['id']){delete _0x18cf95[_0xc1dd('0x5f')]['id'];}return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x18cf95[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x57bb6d,null))[_0xc1dd('0x20')](function(_0x47598a){if(_0x47598a){_0x18cf95['body'][_0xc1dd('0x66')]=_0x47598a['id'];return db[_0xc1dd('0x3d')]['create'](_0x18cf95[_0xc1dd('0x5f')]);}})[_0xc1dd('0x20')](respondWithResult(_0x57bb6d,null))[_0xc1dd('0x29')](handleError(_0x57bb6d,null));};exports['removeSmtp']=function(_0x13710e,_0x3556df,_0x3675e3){return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x13710e[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x3556df,null))[_0xc1dd('0x20')](function(_0x380885){if(_0x380885){return _0x380885['setSmtp'](null);}return null;})[_0xc1dd('0x20')](respondWithStatusCode(_0x3556df,null))['catch'](handleError(_0x3556df,null));};exports[_0xc1dd('0x84')]=function(_0x1cb15c,_0x2a0877,_0x2d3106){return db[_0xc1dd('0x85')][_0xc1dd('0x5d')]({'where':{'id':_0x1cb15c['params']['id']}})['then'](handleEntityNotFound(_0x2a0877,null))[_0xc1dd('0x20')](function(_0x17c764){if(_0x17c764){return _0x17c764[_0xc1dd('0x84')](_0x1cb15c['body'][_0xc1dd('0x68')],_[_0xc1dd('0x86')](_0x1cb15c[_0xc1dd('0x5f')],[_0xc1dd('0x68'),'id'])||{});}})[_0xc1dd('0x20')](respondWithResult(_0x2a0877,null))['catch'](handleError(_0x2a0877,null));};exports[_0xc1dd('0x87')]=function(_0x1682c2,_0x428671,_0x397978){var _0x4984ef={'raw':![],'where':{}};var _0x202ff8={};var _0x88d479={'count':0x0,'rows':[]};return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x1682c2[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x428671,null))[_0xc1dd('0x20')](function(_0x4f299c){if(_0x4f299c){_0x202ff8[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x85')][_0xc1dd('0x42')]);_0x202ff8[_0xc1dd('0x46')]=_['keys'](_0x1682c2[_0xc1dd('0x46')]);_0x202ff8[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0x202ff8[_0xc1dd('0x4a')],_0x202ff8[_0xc1dd('0x46')]);_0x4984ef['attributes']=_[_0xc1dd('0x49')](_0x202ff8['model'],qs[_0xc1dd('0x4c')](_0x1682c2[_0xc1dd('0x46')]['fields']));_0x4984ef[_0xc1dd('0x4b')]=_0x4984ef[_0xc1dd('0x4b')]['length']?_0x4984ef[_0xc1dd('0x4b')]:_0x202ff8[_0xc1dd('0x4a')];if(!_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x4e')](_0xc1dd('0x65'))){_0x4984ef['limit']=qs[_0xc1dd('0x2f')](_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x2f')]);_0x4984ef[_0xc1dd('0x2e')]=qs[_0xc1dd('0x2e')](_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x2e')]);}_0x4984ef[_0xc1dd('0x4f')]=qs[_0xc1dd('0x50')](_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x50')]);_0x4984ef[_0xc1dd('0x51')]=qs['filters'](_[_0xc1dd('0x52')](_0x1682c2['query'],_0x202ff8[_0xc1dd('0x48')]));_0x4984ef[_0xc1dd('0x51')][_0xc1dd('0x66')]=_0x4f299c['id'];if(_0x1682c2[_0xc1dd('0x46')]['filter']){_0x4984ef['where']=_['merge'](_0x4984ef[_0xc1dd('0x51')],{'$or':_['map'](_0x4984ef['attributes'],function(_0x5761e7){var _0x3e7fb3={};_0x3e7fb3[_0x5761e7]={'$like':'%'+_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x53')]+'%'};return _0x3e7fb3;})});}_0x4984ef=_[_0xc1dd('0x55')]({},_0x4984ef,_0x1682c2[_0xc1dd('0x5c')]);return db[_0xc1dd('0x85')][_0xc1dd('0x31')]({'where':_0x4984ef[_0xc1dd('0x51')]})[_0xc1dd('0x20')](function(_0x43136f){_0x88d479['count']=_0x43136f;if(_0x1682c2[_0xc1dd('0x46')]['includeAll']){_0x4984ef[_0xc1dd('0x57')]=[{'model':db['CmContact'],'as':_0xc1dd('0x88'),'required':![]},{'model':db[_0xc1dd('0x89')],'as':_0xc1dd('0x8a'),'attributes':[_0xc1dd('0x39'),_0xc1dd('0x8b'),_0xc1dd('0x8c')],'required':![]},{'model':db[_0xc1dd('0x8d')],'as':_0xc1dd('0x8e'),'attributes':['id',_0xc1dd('0x39'),_0xc1dd('0x8f')],'where':_0x1682c2['query'][_0xc1dd('0x90')]?{'id':_0x1682c2['query'][_0xc1dd('0x90')]}:undefined,'required':_0x1682c2[_0xc1dd('0x46')][_0xc1dd('0x90')]?!![]:![]}];}return db[_0xc1dd('0x85')][_0xc1dd('0x58')](_0x4984ef);})[_0xc1dd('0x20')](function(_0x207afa){_0x88d479['rows']=_0x207afa;return _0x88d479;});}})[_0xc1dd('0x20')](respondWithFilteredResult(_0x428671,_0x4984ef))[_0xc1dd('0x29')](handleError(_0x428671,null));};exports[_0xc1dd('0x91')]=function addApplications(_0x2b55c0,_0x5581d5){var _0xf64351=_0x2b55c0[_0xc1dd('0x5a')]['id'];var _0x3823ba=_0x2b55c0[_0xc1dd('0x5f')];var _0x1a46fb=0xc8;var _0x472776=null;return db[_0xc1dd('0x92')][_0xc1dd('0x93')]({'isolationLevel':db['sequelize'][_0xc1dd('0x94')][_0xc1dd('0x95')][_0xc1dd('0x96')]},function(_0x153ca9){return db['MailAccount'][_0xc1dd('0x64')]({'where':{'id':_0xf64351},'transaction':_0x153ca9})[_0xc1dd('0x20')](function(_0x3050eb){if(_0x3050eb){return db[_0xc1dd('0x97')][_0xc1dd('0x98')]({'where':{'MailAccountId':_0xf64351},'transaction':_0x153ca9})[_0xc1dd('0x20')](function(){var _0x124ce5=_[_0xc1dd('0x40')](_0x3823ba,function(_0x74703f){_0x74703f[_0xc1dd('0x66')]=_0xf64351;return _0x74703f;});return db['MailApplication'][_0xc1dd('0x99')](_0x124ce5,{'transaction':_0x153ca9});});}else{_0x1a46fb=0x194;_0x472776=[];}});})[_0xc1dd('0x20')](function(){if(_0x1a46fb!==0x194){return db[_0xc1dd('0x97')]['findAndCountAll']({'where':{'MailAccountId':_0xf64351},'order':_0xc1dd('0x9a')})[_0xc1dd('0x20')](function(_0x2424cb){_0x472776=_0x2424cb;});}})['catch'](function(_0x2205cc){_0x1a46fb=0x1f4;logger[_0xc1dd('0x26')](_0x2205cc['stack']);if(_0x2205cc[_0xc1dd('0x39')]){delete _0x2205cc[_0xc1dd('0x39')];}_0x472776=_0x2205cc;})[_0xc1dd('0x9b')](function(){if(_0x472776===null){_0x5581d5[_0xc1dd('0x2a')](_0x1a46fb);}else{if(_0x1a46fb===0x1f4){_0x5581d5[_0xc1dd('0x2b')](_0x1a46fb)[_0xc1dd('0x3a')](_0x472776);}else{_0x5581d5[_0xc1dd('0x2b')](_0x1a46fb)['json'](_0x472776);}}});};exports[_0xc1dd('0x9c')]=function(_0x30b037,_0x4aa8ee,_0x20e45c){var _0x1b43aa={};var _0x3f2dfd={};var _0xdcad2d;var _0x1b214b;return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x30b037[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x4aa8ee,null))[_0xc1dd('0x20')](function(_0x1b4d19){if(_0x1b4d19){_0xdcad2d=_0x1b4d19;_0x3f2dfd[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x97')]['rawAttributes']);_0x3f2dfd[_0xc1dd('0x46')]=_[_0xc1dd('0x47')](_0x30b037['query']);_0x3f2dfd[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0x3f2dfd[_0xc1dd('0x4a')],_0x3f2dfd['query']);_0x1b43aa['attributes']=_[_0xc1dd('0x49')](_0x3f2dfd['model'],qs[_0xc1dd('0x4c')](_0x30b037[_0xc1dd('0x46')][_0xc1dd('0x4c')]));_0x1b43aa[_0xc1dd('0x4b')]=_0x1b43aa[_0xc1dd('0x4b')]['length']?_0x1b43aa[_0xc1dd('0x4b')]:_0x3f2dfd[_0xc1dd('0x4a')];_0x1b43aa[_0xc1dd('0x4f')]=qs[_0xc1dd('0x50')](_0x30b037['query'][_0xc1dd('0x50')]);_0x1b43aa[_0xc1dd('0x51')]=qs[_0xc1dd('0x48')](_[_0xc1dd('0x52')](_0x30b037[_0xc1dd('0x46')],_0x3f2dfd[_0xc1dd('0x48')]));if(_0x30b037['query']['filter']){_0x1b43aa[_0xc1dd('0x51')]=_['merge'](_0x1b43aa[_0xc1dd('0x51')],{'$or':_[_0xc1dd('0x40')](_0x1b43aa[_0xc1dd('0x4b')],function(_0x2c576d){var _0x56aae6={};_0x56aae6[_0x2c576d]={'$like':'%'+_0x30b037['query'][_0xc1dd('0x53')]+'%'};return _0x56aae6;})});}_0x1b43aa=_[_0xc1dd('0x55')]({},_0x1b43aa,_0x30b037[_0xc1dd('0x5c')]);return _0xdcad2d[_0xc1dd('0x9c')](_0x1b43aa);}})[_0xc1dd('0x20')](function(_0xeb8745){if(_0xeb8745){_0x1b214b=_0xeb8745['length'];if(!_0x30b037['query'][_0xc1dd('0x4e')](_0xc1dd('0x65'))){_0x1b43aa[_0xc1dd('0x2f')]=qs[_0xc1dd('0x2f')](_0x30b037[_0xc1dd('0x46')][_0xc1dd('0x2f')]);_0x1b43aa[_0xc1dd('0x2e')]=qs[_0xc1dd('0x2e')](_0x30b037['query'][_0xc1dd('0x2e')]);}return _0xdcad2d[_0xc1dd('0x9c')](_0x1b43aa);}})[_0xc1dd('0x20')](function(_0x1c7231){if(_0x1c7231){return _0x1c7231?{'count':_0x1b214b,'rows':_0x1c7231}:null;}})[_0xc1dd('0x20')](respondWithResult(_0x4aa8ee,null))[_0xc1dd('0x29')](handleError(_0x4aa8ee,null));};exports[_0xc1dd('0x9d')]=function(_0x21f1b0,_0x560445,_0x59f5f2){var _0x2fa826={'raw':!![],'where':{}};var _0x2abddc={};var _0x3271c6={'count':0x0,'rows':[]};return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x21f1b0[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x560445,null))[_0xc1dd('0x20')](function(_0x2b0c5a){if(_0x2b0c5a){_0x2abddc[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x9e')]['rawAttributes']);_0x2abddc[_0xc1dd('0x46')]=_[_0xc1dd('0x47')](_0x21f1b0[_0xc1dd('0x46')]);_0x2abddc['filters']=_[_0xc1dd('0x49')](_0x2abddc[_0xc1dd('0x4a')],_0x2abddc['query']);_0x2fa826['attributes']=_['intersection'](_0x2abddc['model'],qs[_0xc1dd('0x4c')](_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x4c')]));_0x2fa826[_0xc1dd('0x4b')]=_0x2fa826[_0xc1dd('0x4b')]['length']?_0x2fa826[_0xc1dd('0x4b')]:_0x2abddc[_0xc1dd('0x4a')];if(!_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x4e')](_0xc1dd('0x65'))){_0x2fa826[_0xc1dd('0x2f')]=qs[_0xc1dd('0x2f')](_0x21f1b0['query']['limit']);_0x2fa826[_0xc1dd('0x2e')]=qs[_0xc1dd('0x2e')](_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x2e')]);}_0x2fa826[_0xc1dd('0x4f')]=qs[_0xc1dd('0x50')](_0x21f1b0['query'][_0xc1dd('0x50')]);_0x2fa826[_0xc1dd('0x51')]=qs['filters'](_[_0xc1dd('0x52')](_0x21f1b0['query'],_0x2abddc['filters']));_0x2fa826['where'][_0xc1dd('0x66')]=_0x2b0c5a['id'];if(_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x53')]){_0x2fa826[_0xc1dd('0x51')]=_[_0xc1dd('0x55')](_0x2fa826[_0xc1dd('0x51')],{'$or':_['map'](_0x2fa826[_0xc1dd('0x4b')],function(_0x290bf6){var _0x48353d={};_0x48353d[_0x290bf6]={'$like':'%'+_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x53')]+'%'};return _0x48353d;})});}if(_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x9f')]){var _0x11b4ea=_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x9f')][_0xc1dd('0xa0')](',');var _0x245388={};_0x245388[_0x11b4ea[0x0]]={'$gte':moment(_0x11b4ea[0x1])[_0xc1dd('0xa1')](_0xc1dd('0xa2'))};_0x2fa826[_0xc1dd('0x51')]=_[_0xc1dd('0x55')](_0x2fa826[_0xc1dd('0x51')],_0x245388);}_0x2fa826=_[_0xc1dd('0x55')]({},_0x2fa826,_0x21f1b0[_0xc1dd('0x5c')]);return db[_0xc1dd('0x9e')]['count']({'where':_0x2fa826['where']})['then'](function(_0x308547){_0x3271c6[_0xc1dd('0x31')]=_0x308547;if(_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0x56')]){_0x2fa826[_0xc1dd('0x57')]=[{'all':!![]}];}return db[_0xc1dd('0x9e')][_0xc1dd('0x58')](_0x2fa826);})[_0xc1dd('0x20')](function(_0x54d5d1){if(_0x21f1b0[_0xc1dd('0x46')][_0xc1dd('0xa3')]==='true'){for(var _0x17185f=0x0;_0x17185f<_0x54d5d1[_0xc1dd('0x4d')];_0x17185f++){_0x54d5d1[_0x17185f][_0xc1dd('0x5f')]=juice(_0x54d5d1[_0x17185f]['body']);}}_0x3271c6['rows']=_0x54d5d1;return _0x3271c6;});}})[_0xc1dd('0x20')](respondWithFilteredResult(_0x560445,_0x2fa826))['catch'](handleError(_0x560445,null));};exports['send']=function(_0x1529b5,_0x312807,_0x22191c){var _0x47c4b6,_0x1f1ed1={},_0x259ba4;if(_0x1529b5['body']['to']){_0x259ba4=_0x1529b5[_0xc1dd('0x5f')]['to'][_0xc1dd('0xa0')](',')[0x0];}return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x1529b5['params']['id']},'include':[{'model':db['CmList'],'as':_0xc1dd('0xa4'),'include':[{'model':db[_0xc1dd('0xa5')],'as':_0xc1dd('0xa6'),'where':{'email':_0x259ba4},'limit':0x1,'order':[[_0xc1dd('0xa7'),_0xc1dd('0xa8')]]}]},{'model':db[_0xc1dd('0x3d')],'as':_0xc1dd('0x3e'),'raw':!![]}]})[_0xc1dd('0x20')](handleEntityNotFound(_0x312807,null))['then'](function(_0x1b0ab1){if(_0x1b0ab1){_0x47c4b6=_0x1b0ab1;if(_0x1b0ab1[_0xc1dd('0x3e')]){if(_[_0xc1dd('0x6f')](_0x1529b5['body'][_0xc1dd('0xa9')])){_0x1529b5['body'][_0xc1dd('0xa9')]=util[_0xc1dd('0xa1')](_0xc1dd('0xaa'),_0x1b0ab1[_0xc1dd('0x39')],_0x1b0ab1['email']||_0x1b0ab1['Smtp'][_0xc1dd('0x72')]);}if(_0x1529b5[_0xc1dd('0x5f')]['attachments']&&_0x1529b5[_0xc1dd('0x5f')]['attachments'][_0xc1dd('0x4d')]){for(var _0x160923=0x0;_0x160923<_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xab')]['length'];_0x160923+=0x1){_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xab')][_0x160923]={'filename':_0x1529b5[_0xc1dd('0x5f')]['attachments'][_0x160923]['name'],'path':path['join'](config[_0xc1dd('0xac')],_0xc1dd('0xad'),_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xab')][_0x160923][_0xc1dd('0xae')])};}}var _0x3e4f36={'tls':{'rejectUnauthorized':![]}};if(_[_0xc1dd('0x6f')](_0x1b0ab1['Smtp'][_0xc1dd('0x7a')])){if(_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0x77')]){_0x3e4f36[_0xc1dd('0xaf')]={'user':_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0x72')],'pass':_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0x75')]};}_0x3e4f36['host']=_0x1b0ab1['Smtp'][_0xc1dd('0x78')];_0x3e4f36[_0xc1dd('0x79')]=_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0x79')];_0x3e4f36[_0xc1dd('0xb0')]=_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0xb0')];}else{_0x3e4f36[_0xc1dd('0x7a')]=_0x1b0ab1[_0xc1dd('0x3e')][_0xc1dd('0x7a')];_0x3e4f36[_0xc1dd('0xaf')]={'user':_0x1b0ab1['Smtp'][_0xc1dd('0x72')],'pass':_0x1b0ab1['Smtp'][_0xc1dd('0x75')]};}return respondWithRpcPromise('SendMail',_0xc1dd('0xb1'),{'account':_0x3e4f36,'message':_0x1529b5[_0xc1dd('0x5f')]});}else{throw new Error(_0xc1dd('0xb2'));}}})[_0xc1dd('0x20')](function(_0x36e8fa){if(_0x36e8fa){_0x1f1ed1=_0x36e8fa;if(_0x47c4b6['List']){if(_0x47c4b6[_0xc1dd('0xa4')][_0xc1dd('0xa6')][_0xc1dd('0x4d')]){return _0x47c4b6[_0xc1dd('0xa4')][_0xc1dd('0xa6')][0x0];}else{return db[_0xc1dd('0xa5')][_0xc1dd('0x63')](_[_0xc1dd('0x1a')](_0x1529b5[_0xc1dd('0x5f')],{'firstName':_0x1529b5[_0xc1dd('0x5f')]['to'],'email':_0x1529b5[_0xc1dd('0x5f')]['to'],'phone':_0x1529b5[_0xc1dd('0x5f')]['to'],'ListId':_0x47c4b6['ListId']}));}}else{throw new Error(_0xc1dd('0xb2'));}}})[_0xc1dd('0x20')](function(_0x2a3755){if(_0x2a3755){var _0x5ee6fd={'UserId':_0x1529b5[_0xc1dd('0x72')]['id'],'ContactId':_0x2a3755['id'],'MailAccountId':_0x47c4b6['id'],'inReplyTo':_0x1f1ed1[_0xc1dd('0xb3')],'to':_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xa9')],'cc':_0x1529b5['body']['cc'],'subject':_0x1529b5['body'][_0xc1dd('0xb4')],'attach':_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xb5')],'firstMsgDirection':_0xc1dd('0xb6'),'lastMsgAt':moment()[_0xc1dd('0xa1')](_0xc1dd('0xa2')),'lastMsgDirection':_0xc1dd('0xb6'),'Messages':[_[_0xc1dd('0x55')](_0x1529b5[_0xc1dd('0x5f')],{'messageId':_0x1f1ed1['messageId'],'sentAt':moment()['format'](_0xc1dd('0xa2')),'read':!![],'MailAccountId':_0x47c4b6['id'],'UserId':_0x1529b5[_0xc1dd('0x72')]['id'],'ContactId':_0x2a3755['id']})]};if(_0x1529b5['body'][_0xc1dd('0xb7')]){_0x5ee6fd=_['merge'](_0x5ee6fd,_0x1529b5[_0xc1dd('0x5f')][_0xc1dd('0xb7')]);}return db['MailInteraction'][_0xc1dd('0x63')](_0x5ee6fd,{'include':[{'model':db[_0xc1dd('0x9e')],'as':_0xc1dd('0xb8')}]});}})['then'](respondWithResult(_0x312807,null))[_0xc1dd('0x29')](handleError(_0x312807,null));};exports[_0xc1dd('0xb9')]=function(_0x41959e,_0x142e1f,_0x31d349){return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x41959e[_0xc1dd('0x5a')]['id']},'include':[{'model':db[_0xc1dd('0x3d')],'as':_0xc1dd('0x3e'),'raw':!![]}]})[_0xc1dd('0x20')](handleEntityNotFound(_0x142e1f,null))[_0xc1dd('0x20')](function(_0x14073a){if(_0x14073a&&_0x14073a[_0xc1dd('0x3e')]){var _0x23e009={'id':_0x14073a['id'],'tls':{'rejectUnauthorized':![]}};if(_0x14073a['Smtp']['service']){_0x23e009['service']=_0x14073a[_0xc1dd('0x3e')][_0xc1dd('0x7a')];}else{_0x23e009[_0xc1dd('0x78')]=_0x14073a['Smtp'][_0xc1dd('0x78')];_0x23e009[_0xc1dd('0x79')]=_0x14073a[_0xc1dd('0x3e')][_0xc1dd('0x79')];_0x23e009[_0xc1dd('0xb0')]=_0x14073a['Smtp'][_0xc1dd('0xb0')];}if(_0x14073a[_0xc1dd('0x3e')][_0xc1dd('0x77')]){_0x23e009[_0xc1dd('0xaf')]={'user':_0x14073a[_0xc1dd('0x3e')][_0xc1dd('0x72')],'pass':_0x14073a['Smtp'][_0xc1dd('0x75')]};}return respondWithRpcPromise('VerifySmtp',_0xc1dd('0xb9'),{'account':_0x23e009});}})[_0xc1dd('0x20')](respondWithResult(_0x142e1f,null))['catch'](handleError(_0x142e1f,null));};exports[_0xc1dd('0x98')]=function(_0x5dac12,_0x32152d){return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x5dac12['params']['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x32152d,null))[_0xc1dd('0x20')](function(_0x31018d){if(_0x31018d&&_0x31018d['service']){throw new db['Sequelize'][(_0xc1dd('0xba'))](_0xc1dd('0xbb'));}return _0x31018d;})[_0xc1dd('0x20')](removeEntity(_0x32152d,null))[_0xc1dd('0x29')](handleError(_0x32152d,null));};exports[_0xc1dd('0xbc')]=function(_0x38826b,_0x3b7387,_0x5ed7ff){return db[_0xc1dd('0x41')]['find']({'where':{'id':_0x38826b[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x3b7387,null))[_0xc1dd('0x20')](function(_0x1f79b3){if(_0x1f79b3){return _0x1f79b3[_0xc1dd('0xbc')](_0x38826b[_0xc1dd('0x5f')]['ids'],_['omit'](_0x38826b[_0xc1dd('0x5f')],[_0xc1dd('0x68'),'id'])||{})[_0xc1dd('0xbd')](function(_0x55b11e){for(var _0x5e242f=0x0;_0x5e242f<_0x38826b[_0xc1dd('0x5f')][_0xc1dd('0x68')][_0xc1dd('0x4d')];_0x5e242f+=0x1){socket[_0xc1dd('0xbe')](_0xc1dd('0xbf'),{'UserId':Number(_0x38826b['body'][_0xc1dd('0x68')][_0x5e242f]),'MailAccountId':Number(_0x38826b[_0xc1dd('0x5a')]['id'])});}return _0x55b11e;});}})[_0xc1dd('0x20')](respondWithResult(_0x3b7387,null))[_0xc1dd('0x29')](handleError(_0x3b7387,null));};exports[_0xc1dd('0xc0')]=function(_0x5eab48,_0x92f3b2,_0xd4d2a4){return db[_0xc1dd('0x41')][_0xc1dd('0x5d')]({'where':{'id':_0x5eab48[_0xc1dd('0x5a')]['id']}})[_0xc1dd('0x20')](handleEntityNotFound(_0x92f3b2,null))[_0xc1dd('0x20')](function(_0x1724c5){if(_0x1724c5){return _0x1724c5['removeAgents'](_0x5eab48['query'][_0xc1dd('0x68')])['then'](function(){if(_['isArray'](_0x5eab48[_0xc1dd('0x46')][_0xc1dd('0x68')])){for(var _0xd6a17e=0x0;_0xd6a17e<_0x5eab48[_0xc1dd('0x46')][_0xc1dd('0x68')][_0xc1dd('0x4d')];_0xd6a17e+=0x1){socket[_0xc1dd('0xbe')](_0xc1dd('0xc1'),{'UserId':Number(_0x5eab48[_0xc1dd('0x46')][_0xc1dd('0x68')][_0xd6a17e]),'MailAccountId':Number(_0x5eab48['params']['id'])});}}else{socket[_0xc1dd('0xbe')](_0xc1dd('0xc1'),{'UserId':Number(_0x5eab48[_0xc1dd('0x46')][_0xc1dd('0x68')]),'MailAccountId':Number(_0x5eab48[_0xc1dd('0x5a')]['id'])});}});}})[_0xc1dd('0x20')](respondWithStatusCode(_0x92f3b2,null))['catch'](handleError(_0x92f3b2,null));};exports[_0xc1dd('0xc2')]=function(_0x19a204,_0x49a712,_0x212cb0){var _0x139cb4={};var _0x4f6629={};var _0x2c4b7b;var _0x154af8;return db[_0xc1dd('0x41')][_0xc1dd('0x64')]({'where':{'id':_0x19a204[_0xc1dd('0x5a')]['id']}})['then'](handleEntityNotFound(_0x49a712,null))[_0xc1dd('0x20')](function(_0x5ba7f8){if(_0x5ba7f8){_0x2c4b7b=_0x5ba7f8;_0x4f6629[_0xc1dd('0x4a')]=_[_0xc1dd('0x47')](db[_0xc1dd('0x89')]['rawAttributes']);_0x4f6629['query']=_[_0xc1dd('0x47')](_0x19a204['query']);_0x4f6629[_0xc1dd('0x48')]=_[_0xc1dd('0x49')](_0x4f6629[_0xc1dd('0x4a')],_0x4f6629[_0xc1dd('0x46')]);_0x139cb4[_0xc1dd('0x4b')]=_[_0xc1dd('0x49')](_0x4f6629[_0xc1dd('0x4a')],qs[_0xc1dd('0x4c')](_0x19a204['query'][_0xc1dd('0x4c')]));_0x139cb4[_0xc1dd('0x4b')]=_0x139cb4[_0xc1dd('0x4b')][_0xc1dd('0x4d')]?_0x139cb4['attributes']:_0x4f6629[_0xc1dd('0x4a')];_0x139cb4[_0xc1dd('0x4f')]=qs[_0xc1dd('0x50')](_0x19a204['query'][_0xc1dd('0x50')]);_0x139cb4['where']=qs[_0xc1dd('0x48')](_[_0xc1dd('0x52')](_0x19a204[_0xc1dd('0x46')],_0x4f6629['filters']));if(_0x19a204[_0xc1dd('0x46')][_0xc1dd('0x53')]){_0x139cb4[_0xc1dd('0x51')]=_[_0xc1dd('0x55')](_0x139cb4['where'],{'$or':_[_0xc1dd('0x40')](_0x139cb4[_0xc1dd('0x4b')],function(_0x44ce83){var _0x541b3a={};_0x541b3a[_0x44ce83]={'$like':'%'+_0x19a204[_0xc1dd('0x46')][_0xc1dd('0x53')]+'%'};return _0x541b3a;})});}_0x139cb4=_['merge']({},_0x139cb4,_0x19a204[_0xc1dd('0x5c')]);return _0x2c4b7b[_0xc1dd('0xc2')](_0x139cb4);}})[_0xc1dd('0x20')](function(_0x1f52f1){if(_0x1f52f1){_0x154af8=_0x1f52f1['length'];if(!_0x19a204[_0xc1dd('0x46')]['hasOwnProperty']('nolimit')){_0x139cb4[_0xc1dd('0x2f')]=qs[_0xc1dd('0x2f')](_0x19a204['query'][_0xc1dd('0x2f')]);_0x139cb4['offset']=qs[_0xc1dd('0x2e')](_0x19a204[_0xc1dd('0x46')][_0xc1dd('0x2e')]);}return _0x2c4b7b[_0xc1dd('0xc2')](_0x139cb4);}})[_0xc1dd('0x20')](function(_0xda2d1e){if(_0xda2d1e){return _0xda2d1e?{'count':_0x154af8,'rows':_0xda2d1e}:null;}})[_0xc1dd('0x20')](respondWithResult(_0x49a712,null))['catch'](handleError(_0x49a712,null));};
\ No newline at end of file
index f9ad293..486d76d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x463e=['remove','hasOwnProperty','hook','exports','events','setMaxListeners','update'];(function(_0x4a4e06,_0x4687d1){var _0x1b7519=function(_0x4e2a1a){while(--_0x4e2a1a){_0x4a4e06['push'](_0x4a4e06['shift']());}};_0x1b7519(++_0x4687d1);}(_0x463e,0x13f));var _0xe463=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x463e[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require(_0xe463('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xe463('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe463('0x2'),'afterDestroy':_0xe463('0x3')};function emitEvent(_0x515de7){return function(_0xac7375,_0x2a01b6,_0x1e971b){MailAccountEvents['emit'](_0x515de7+':'+_0xac7375['id'],_0xac7375);MailAccountEvents['emit'](_0x515de7,_0xac7375);_0x1e971b(null);};}for(var e in events){if(events[_0xe463('0x4')](e)){var event=events[e];MailAccount[_0xe463('0x5')](e,emitEvent(event));}}module[_0xe463('0x6')]=MailAccountEvents;
\ No newline at end of file
+var _0x964b=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x3b3d12,_0xc22314){var _0x1f7084=function(_0x863fec){while(--_0x863fec){_0x3b3d12['push'](_0x3b3d12['shift']());}};_0x1f7084(++_0xc22314);}(_0x964b,0x112));var _0xb964=function(_0x1916bf,_0x5e4d1f){_0x1916bf=_0x1916bf-0x0;var _0x61f86d=_0x964b[_0x1916bf];return _0x61f86d;};'use strict';var EventEmitter=require(_0xb964('0x0'));var MailAccount=require(_0xb964('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xb964('0x2')](0x0);var events={'afterCreate':_0xb964('0x3'),'afterUpdate':_0xb964('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5c4f01){return function(_0x2c4686,_0x48b771,_0x4760b2){MailAccountEvents[_0xb964('0x5')](_0x5c4f01+':'+_0x2c4686['id'],_0x2c4686);MailAccountEvents[_0xb964('0x5')](_0x5c4f01,_0x2c4686);_0x4760b2(null);};}for(var e in events){if(events[_0xb964('0x6')](e)){var event=events[e];MailAccount[_0xb964('0x7')](e,emitEvent(event));}}module[_0xb964('0x8')]=MailAccountEvents;
\ No newline at end of file
index 727424d..286e609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1485=['moment','bluebird','request-promise','rimraf','define','MailAccount','mail_accounts','util','../../config/logger','api'];(function(_0x4fc4a2,_0x4e05f4){var _0x26d034=function(_0x293d0a){while(--_0x293d0a){_0x4fc4a2['push'](_0x4fc4a2['shift']());}};_0x26d034(++_0x4e05f4);}(_0x1485,0x10b));var _0x5148=function(_0x52522f,_0x15c862){_0x52522f=_0x52522f-0x0;var _0x14555c=_0x1485[_0x52522f];return _0x14555c;};'use strict';var _=require('lodash');var util=require(_0x5148('0x0'));var logger=require(_0x5148('0x1'))(_0x5148('0x2'));var moment=require(_0x5148('0x3'));var BPromise=require(_0x5148('0x4'));var rp=require(_0x5148('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5148('0x6'));var config=require('../../config/environment');var attributes=require('./mailAccount.attributes');module['exports']=function(_0x4a4cc8,_0x249db9){return _0x4a4cc8[_0x5148('0x7')](_0x5148('0x8'),attributes,{'tableName':_0x5148('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xccea=['exports','MailAccount','mail_accounts','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes'];(function(_0x1eaf2c,_0x1042d5){var _0x1ad87a=function(_0x5c541a){while(--_0x5c541a){_0x1eaf2c['push'](_0x1eaf2c['shift']());}};_0x1ad87a(++_0x1042d5);}(_0xccea,0x7b));var _0xacce=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0xccea[_0xc67528];return _0x38e26d;};'use strict';var _=require(_0xacce('0x0'));var util=require('util');var logger=require(_0xacce('0x1'))('api');var moment=require(_0xacce('0x2'));var BPromise=require(_0xacce('0x3'));var rp=require(_0xacce('0x4'));var fs=require('fs');var path=require(_0xacce('0x5'));var rimraf=require(_0xacce('0x6'));var config=require(_0xacce('0x7'));var attributes=require(_0xacce('0x8'));module[_0xacce('0x9')]=function(_0x2a3b90,_0x4531db){return _0x2a3b90['define'](_0xacce('0xa'),attributes,{'tableName':_0xacce('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 840badb..654bb53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c7f=['bcc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','UserId','User','name','unshift','agent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMailAccount','findAll','options','raw','where','limit','include','map','attributes','model','then','ShowMailAccount','MailAccount','find','body','keys','CmContact','rawAttributes','createdAt','updatedAt','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','account','CmList','List','DESC','MailServerOut','Smtp','get','Applications','applications','orderBy','asc','push','length','close','autoclose','*,*,*,*','Contacts','defaults','create','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','Contact\x20not\x20found','spread','update','attach','interaction','created','attachments'];(function(_0x1d4a8c,_0x939a0){var _0x552e4d=function(_0x243a8e){while(--_0x243a8e){_0x1d4a8c['push'](_0x1d4a8c['shift']());}};_0x552e4d(++_0x939a0);}(_0x5c7f,0xd5));var _0xf5c7=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x5c7f[_0x819464];return _0x49dcc0;};'use strict';var _=require(_0xf5c7('0x0'));var util=require('util');var moment=require(_0xf5c7('0x1'));var BPromise=require(_0xf5c7('0x2'));var rs=require(_0xf5c7('0x3'));var fs=require('fs');var Redis=require(_0xf5c7('0x4'));var db=require(_0xf5c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf5c7('0x6'))(_0xf5c7('0x7'));var config=require('../../config/environment');var jayson=require(_0xf5c7('0x8'));var client=jayson[_0xf5c7('0x9')][_0xf5c7('0xa')]({'port':0x232c});config[_0xf5c7('0xb')]=_['defaults'](config['redis'],{'host':_0xf5c7('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x427fdb,_0x31bf68,_0xd7abe2){return new BPromise(function(_0x2e7f15,_0x4cadf1){return client[_0xf5c7('0xd')](_0x427fdb,_0xd7abe2)['then'](function(_0x1ecfa2){logger[_0xf5c7('0xe')](_0xf5c7('0xf'),_0x31bf68,'request\x20sent');logger[_0xf5c7('0x10')](_0xf5c7('0x11'),_0x31bf68,_0xf5c7('0x12'),JSON[_0xf5c7('0x13')](_0x1ecfa2));if(_0x1ecfa2['error']){if(_0x1ecfa2[_0xf5c7('0x14')]['code']===0x1f4){logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x1ecfa2[_0xf5c7('0x14')][_0xf5c7('0x15')]);return _0x4cadf1(_0x1ecfa2[_0xf5c7('0x14')]['message']);}logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x1ecfa2['error'][_0xf5c7('0x15')]);return _0x2e7f15(_0x1ecfa2[_0xf5c7('0x14')][_0xf5c7('0x15')]);}else{logger[_0xf5c7('0xe')](_0xf5c7('0xf'),_0x31bf68,_0xf5c7('0x12'));_0x2e7f15(_0x1ecfa2[_0xf5c7('0x16')]['message']);}})[_0xf5c7('0x17')](function(_0x5a89d3){logger[_0xf5c7('0x14')](_0xf5c7('0xf'),_0x31bf68,_0x5a89d3);_0x4cadf1(_0x5a89d3);});});}exports[_0xf5c7('0x18')]=function(_0x2bde46){var _0xf67456=this;return new Promise(function(_0xe460a2,_0x12a19d){return db['MailAccount'][_0xf5c7('0x19')]({'raw':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46['options'][_0xf5c7('0x1c')]||null:null,'attributes':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46['options']['attributes']||null:null,'limit':_0x2bde46[_0xf5c7('0x1a')]?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1d')]||null:null,'include':_0x2bde46['options']?_0x2bde46[_0xf5c7('0x1a')][_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x2bde46['options'][_0xf5c7('0x1e')],function(_0x57ab22){return{'model':db[_0x57ab22['model']],'as':_0x57ab22['as'],'attributes':_0x57ab22[_0xf5c7('0x20')],'include':_0x57ab22['include']?_['map'](_0x57ab22[_0xf5c7('0x1e')],function(_0x4a9502){return{'model':db[_0x4a9502[_0xf5c7('0x21')]],'as':_0x4a9502['as'],'attributes':_0x4a9502['attributes'],'include':_0x4a9502['include']?_[_0xf5c7('0x1f')](_0x4a9502[_0xf5c7('0x1e')],function(_0xce058){return{'model':db[_0xce058[_0xf5c7('0x21')]],'as':_0xce058['as'],'attributes':_0xce058['attributes']};}):[]};}):[]};}):[]:[]})[_0xf5c7('0x22')](function(_0x3eafa2){logger[_0xf5c7('0xe')](_0xf5c7('0x18'),_0x2bde46);logger[_0xf5c7('0x10')](_0xf5c7('0x18'),_0x2bde46,JSON[_0xf5c7('0x13')](_0x3eafa2));_0xe460a2(_0x3eafa2);})[_0xf5c7('0x17')](function(_0x25ca6b){logger[_0xf5c7('0x14')](_0xf5c7('0x18'),_0x25ca6b[_0xf5c7('0x15')],_0x2bde46);_0x12a19d(_0xf67456['error'](0x1f4,_0x25ca6b[_0xf5c7('0x15')]));});});};exports[_0xf5c7('0x23')]=function(_0x5cf7b5){var _0x1f0673=this;return new Promise(function(_0x24597c,_0x4440cb){return db[_0xf5c7('0x24')][_0xf5c7('0x25')]({'raw':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5['options'][_0xf5c7('0x1b')]===undefined?!![]:![]:!![],'where':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1c')]||null:null,'attributes':_0x5cf7b5[_0xf5c7('0x1a')]?_0x5cf7b5[_0xf5c7('0x1a')]['attributes']||null:null,'include':_0x5cf7b5['options']?_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x5cf7b5[_0xf5c7('0x1a')][_0xf5c7('0x1e')],function(_0x3cd9fc){return{'model':db[_0x3cd9fc['model']],'as':_0x3cd9fc['as'],'attributes':_0x3cd9fc[_0xf5c7('0x20')],'include':_0x3cd9fc['include']?_[_0xf5c7('0x1f')](_0x3cd9fc[_0xf5c7('0x1e')],function(_0x1ad9ed){return{'model':db[_0x1ad9ed[_0xf5c7('0x21')]],'as':_0x1ad9ed['as'],'attributes':_0x1ad9ed[_0xf5c7('0x20')],'include':_0x1ad9ed[_0xf5c7('0x1e')]?_[_0xf5c7('0x1f')](_0x1ad9ed[_0xf5c7('0x1e')],function(_0x38b6b0){return{'model':db[_0x38b6b0[_0xf5c7('0x21')]],'as':_0x38b6b0['as'],'attributes':_0x38b6b0[_0xf5c7('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf5c7('0x22')](function(_0x4d15fc){logger[_0xf5c7('0xe')](_0xf5c7('0x23'),_0x5cf7b5);logger[_0xf5c7('0x10')]('ShowMailAccount',_0x5cf7b5,JSON[_0xf5c7('0x13')](_0x4d15fc));_0x24597c(_0x4d15fc);})[_0xf5c7('0x17')](function(_0x13a08a){logger[_0xf5c7('0x14')](_0xf5c7('0x23'),_0x13a08a[_0xf5c7('0x15')],_0x5cf7b5);_0x4440cb(_0x1f0673['error'](0x1f4,_0x13a08a[_0xf5c7('0x15')]));});});};exports['NotifyMailAccount']=function(_0x282044){var _0x151baa=this;return new Promise(function(_0x13d4b2,_0x115b28){var _0x2af328={'body':_0x282044[_0xf5c7('0x26')],'channel':'mail'};var _0x1a6549=_['difference'](_[_0xf5c7('0x27')](db[_0xf5c7('0x28')][_0xf5c7('0x29')]),[_0xf5c7('0x2a'),_0xf5c7('0x2b'),'CompanyId','ListId']);var _0x19b3dd=![];if(_0x282044['body']['id']){delete _0x282044[_0xf5c7('0x26')]['id'];}if(_[_0xf5c7('0x2c')](_0x282044[_0xf5c7('0x26')]['from'])){return _0x115b28(_0x151baa['error'](0x1f4,_0xf5c7('0x2d')));}if(_['isNil'](_0x282044[_0xf5c7('0x26')][_0xf5c7('0x26')])||_0x282044[_0xf5c7('0x26')]['body']===''){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x2e')));}if(_[_0xf5c7('0x2c')](_0x282044['body'][_0xf5c7('0x2f')])){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x30')+_0x1a6549));}if(!_['includes'](_0x1a6549,_0x282044['body'][_0xf5c7('0x2f')])){return _0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0xf5c7('0x31')+_0x1a6549));}var _0x36a9b2={};_0x36a9b2[_0x282044[_0xf5c7('0x26')]['mapKey']]=_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')];return db[_0xf5c7('0x24')][_0xf5c7('0x25')]({'where':{'id':_0x282044[_0xf5c7('0x33')]['id']},'include':[{'model':db[_0xf5c7('0x34')],'as':_0xf5c7('0x35'),'include':[{'model':db[_0xf5c7('0x28')],'as':'Contacts','where':_0x36a9b2,'limit':0x1,'order':[[_0xf5c7('0x2b'),_0xf5c7('0x36')]]}]},{'model':db['MailApplication'],'as':'Applications'},{'model':db[_0xf5c7('0x37')],'as':_0xf5c7('0x38')}]})[_0xf5c7('0x22')](function(_0x4ea1e5){if(_0x4ea1e5&&_0x4ea1e5['List']){var _0x49ed1f=_0x4ea1e5[_0xf5c7('0x39')]({'plain':!![]});_0x2af328[_0xf5c7('0x33')]=_['omit'](_0x49ed1f,['Applications',_0xf5c7('0x35')]);_0x2af328['applications']=_0x49ed1f[_0xf5c7('0x3a')];_0x2af328['list']=_0x49ed1f[_0xf5c7('0x35')];_0x2af328[_0xf5c7('0x3b')]=_[_0xf5c7('0x3c')](_0x2af328[_0xf5c7('0x3b')],['priority'],[_0xf5c7('0x3d')]);if(_0x2af328[_0xf5c7('0x33')]&&_0x2af328[_0xf5c7('0x33')]['autoclose']){_0x2af328['applications'][_0xf5c7('0x3e')]({'id':0x0,'priority':_0x2af328[_0xf5c7('0x3b')][_0xf5c7('0x3f')]+0x1,'app':_0xf5c7('0x40'),'appdata':_0xf5c7('0x41'),'interval':_0xf5c7('0x42')});}if(_0x2af328[_0xf5c7('0x33')][_0xf5c7('0x3a')]){delete _0x2af328[_0xf5c7('0x33')][_0xf5c7('0x3a')];}if(_0x2af328[_0xf5c7('0x33')]['List']){delete _0x2af328[_0xf5c7('0x33')][_0xf5c7('0x35')];}if(_0x49ed1f[_0xf5c7('0x35')][_0xf5c7('0x43')][_0xf5c7('0x3f')]){return _0x49ed1f[_0xf5c7('0x35')][_0xf5c7('0x43')][0x0];}var _0x12b727=_[_0xf5c7('0x44')](_0x282044[_0xf5c7('0x26')],{'firstName':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')],'ListId':_0x49ed1f['ListId']});_0x12b727[_0x282044[_0xf5c7('0x26')][_0xf5c7('0x2f')]]=_0x282044[_0xf5c7('0x26')][_0xf5c7('0x32')];return db[_0xf5c7('0x28')][_0xf5c7('0x45')](_0x12b727);}else{throw new Error(_0xf5c7('0x46'));}})['then'](function(_0x23d65b){_0x2af328[_0xf5c7('0x47')]=_0x23d65b;if(_0x23d65b){if(!_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')]){_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')]=rs[_0xf5c7('0x49')]()+'\x20'+_0x282044['body']['message'][_0xf5c7('0x32')];}var _0x204a54={'ContactId':_0x23d65b['id'],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id'],'inReplyTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'to':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x32')],'cc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['cc'],'subject':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x4a')],'attach':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['attach'],'lastMsgAt':moment()[_0xf5c7('0x4b')](_0xf5c7('0x4c')),'lastMsgDirection':'in'};return db[_0xf5c7('0x4d')][_0xf5c7('0x25')]({'where':{'closed':![],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id']},'include':[{'model':db[_0xf5c7('0x4e')],'as':_0xf5c7('0x4f'),'attributes':['messageId'],'where':{'messageId':_0x282044['body'][_0xf5c7('0x15')]['inReplyTo']}}]})[_0xf5c7('0x22')](function(_0x31c409){if(_0x31c409){return[_0x31c409,![]];}return db['MailInteraction'][_0xf5c7('0x45')](_0x204a54)[_0xf5c7('0x22')](function(_0x31dcd9){return[_0x31dcd9,!![]];});});}else{throw new Error(_0xf5c7('0x50'));}})[_0xf5c7('0x51')](function(_0x527fed,_0xd5d063){if(_0x527fed){_0x19b3dd=_0xd5d063;if(!_0xd5d063){return _0x527fed[_0xf5c7('0x52')]({'inReplyTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'to':_0x282044['body'][_0xf5c7('0x15')][_0xf5c7('0x32')],'cc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['cc'],'subject':_0x282044[_0xf5c7('0x26')]['message']['subject'],'attach':_0x527fed[_0xf5c7('0x53')]?_0x527fed[_0xf5c7('0x53')]:_0x282044['body'][_0xf5c7('0x15')][_0xf5c7('0x53')],'substatus':null,'substatusAt':moment()['format'](_0xf5c7('0x4c')),'lastMsgAt':moment()[_0xf5c7('0x4b')](_0xf5c7('0x4c')),'lastMsgDirection':'in'});}else{return _0x527fed;}}})[_0xf5c7('0x22')](function(_0x27bd2e){_0x2af328[_0xf5c7('0x54')]=_0x27bd2e[_0xf5c7('0x39')]({'plain':!![]});_0x2af328[_0xf5c7('0x54')][_0xf5c7('0x55')]=_0x19b3dd;return db[_0xf5c7('0x4e')][_0xf5c7('0x45')]({'body':_0x282044['body'][_0xf5c7('0x26')],'MailAccountId':_0x282044[_0xf5c7('0x33')]['id'],'MailInteractionId':_0x27bd2e['id'],'direction':'in','ContactId':_0x2af328[_0xf5c7('0x47')]['id'],'messageId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x48')],'from':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x32')],'to':_0x282044['body'][_0xf5c7('0x15')]['to'],'cc':_0x282044[_0xf5c7('0x26')]['message']['cc'],'subject':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x4a')],'attach':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['attach'],'Attachments':_0x282044[_0xf5c7('0x26')]['message'][_0xf5c7('0x56')],'originTo':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['originTo'],'originCc':_0x282044[_0xf5c7('0x26')]['message']['originCc'],'bcc':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x57')],'ChatWebsiteId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x58')]||null,'originChannel':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')][_0xf5c7('0x59')]||_0xf5c7('0x5a'),'ChatOfflineMessageId':_0x282044[_0xf5c7('0x26')][_0xf5c7('0x15')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0xf5c7('0x5b')],'as':_0xf5c7('0x5c')}]});})[_0xf5c7('0x22')](function(_0x3097d8){_0x2af328[_0xf5c7('0x15')]=_0x3097d8;if(_0x2af328[_0xf5c7('0x54')][_0xf5c7('0x5d')]){return db[_0xf5c7('0x5e')][_0xf5c7('0x25')]({'attributes':['id',_0xf5c7('0x5f')],'where':{'id':_0x2af328['interaction'][_0xf5c7('0x5d')]}})[_0xf5c7('0x22')](function(_0x2719ac){if(_0x2719ac){_0x2af328[_0xf5c7('0x3b')][_0xf5c7('0x60')]({'id':0x0,'priority':0x0,'app':_0xf5c7('0x61'),'appdata':_0x2719ac['name']+','+(_0x2af328['account']['waitForTheAssignedAgent']||0xa),'interval':_0xf5c7('0x42')});}return respondWithRpcPromise(_0xf5c7('0x62'),_0xf5c7('0x63'),_0x2af328);});}return respondWithRpcPromise(_0xf5c7('0x62'),_0xf5c7('0x63'),_0x2af328);})['then'](function(_0x3b5603){_0x13d4b2(_0x3b5603);})[_0xf5c7('0x17')](function(_0x404a7c){_0x115b28(_0x151baa[_0xf5c7('0x14')](0x1f4,_0x404a7c['message']));});});};
\ No newline at end of file
+var _0x6f37=['Contacts','DESC','MailApplication','MailServerOut','Smtp','get','Applications','applications','list','priority','account','autoclose','close','*,*,*,*','length','create','List\x20not\x20found','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','interaction','created','MailMessage','attachments','originCc','bcc','ChatWebsiteId','Attachment','Attachments','User','UserId','agent','name','Start','startRouting','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','defaults','socket.io-emitter','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','limit','map','include','model','attributes','ShowMailAccount','NotifyMailAccount','body','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','CmList','List'];(function(_0x5c41e3,_0x260c34){var _0x27383b=function(_0x21e8d5){while(--_0x21e8d5){_0x5c41e3['push'](_0x5c41e3['shift']());}};_0x27383b(++_0x260c34);}(_0x6f37,0x8f));var _0x76f3=function(_0x25a86b,_0x269489){_0x25a86b=_0x25a86b-0x0;var _0x584cac=_0x6f37[_0x25a86b];return _0x584cac;};'use strict';var _=require(_0x76f3('0x0'));var util=require(_0x76f3('0x1'));var moment=require(_0x76f3('0x2'));var BPromise=require(_0x76f3('0x3'));var rs=require(_0x76f3('0x4'));var fs=require('fs');var Redis=require(_0x76f3('0x5'));var db=require(_0x76f3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x76f3('0x7'))(_0x76f3('0x8'));var config=require(_0x76f3('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x76f3('0xa')]({'port':0x232c});config[_0x76f3('0xb')]=_[_0x76f3('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x76f3('0xd'))(new Redis(config[_0x76f3('0xb')]));require(_0x76f3('0xe'))[_0x76f3('0xf')](socket);function respondWithRpcPromise(_0x4cb4af,_0x21fd76,_0x45681f){return new BPromise(function(_0x292e06,_0x4b0c83){return client['request'](_0x4cb4af,_0x45681f)[_0x76f3('0x10')](function(_0x3de186){logger[_0x76f3('0x11')](_0x76f3('0x12'),_0x21fd76,_0x76f3('0x13'));logger[_0x76f3('0x14')](_0x76f3('0x15'),_0x21fd76,'request\x20sent',JSON[_0x76f3('0x16')](_0x3de186));if(_0x3de186[_0x76f3('0x17')]){if(_0x3de186[_0x76f3('0x17')]['code']===0x1f4){logger[_0x76f3('0x17')](_0x76f3('0x12'),_0x21fd76,_0x3de186[_0x76f3('0x17')][_0x76f3('0x18')]);return _0x4b0c83(_0x3de186['error'][_0x76f3('0x18')]);}logger[_0x76f3('0x17')](_0x76f3('0x12'),_0x21fd76,_0x3de186[_0x76f3('0x17')]['message']);return _0x292e06(_0x3de186[_0x76f3('0x17')][_0x76f3('0x18')]);}else{logger[_0x76f3('0x11')](_0x76f3('0x12'),_0x21fd76,'request\x20sent');_0x292e06(_0x3de186[_0x76f3('0x19')][_0x76f3('0x18')]);}})[_0x76f3('0x1a')](function(_0x286212){logger[_0x76f3('0x17')](_0x76f3('0x12'),_0x21fd76,_0x286212);_0x4b0c83(_0x286212);});});}exports[_0x76f3('0x1b')]=function(_0x3dbbe5){var _0x56cfd5=this;return new Promise(function(_0x3f65e8,_0xa11396){return db[_0x76f3('0x1c')][_0x76f3('0x1d')]({'raw':_0x3dbbe5[_0x76f3('0x1e')]?_0x3dbbe5[_0x76f3('0x1e')][_0x76f3('0x1f')]===undefined?!![]:![]:!![],'where':_0x3dbbe5[_0x76f3('0x1e')]?_0x3dbbe5[_0x76f3('0x1e')][_0x76f3('0x20')]||null:null,'attributes':_0x3dbbe5['options']?_0x3dbbe5[_0x76f3('0x1e')]['attributes']||null:null,'limit':_0x3dbbe5['options']?_0x3dbbe5[_0x76f3('0x1e')][_0x76f3('0x21')]||null:null,'include':_0x3dbbe5[_0x76f3('0x1e')]?_0x3dbbe5['options']['include']?_[_0x76f3('0x22')](_0x3dbbe5[_0x76f3('0x1e')][_0x76f3('0x23')],function(_0x55b45a){return{'model':db[_0x55b45a[_0x76f3('0x24')]],'as':_0x55b45a['as'],'attributes':_0x55b45a[_0x76f3('0x25')],'include':_0x55b45a[_0x76f3('0x23')]?_['map'](_0x55b45a[_0x76f3('0x23')],function(_0x2cbaf5){return{'model':db[_0x2cbaf5[_0x76f3('0x24')]],'as':_0x2cbaf5['as'],'attributes':_0x2cbaf5['attributes'],'include':_0x2cbaf5[_0x76f3('0x23')]?_[_0x76f3('0x22')](_0x2cbaf5[_0x76f3('0x23')],function(_0x26c60c){return{'model':db[_0x26c60c[_0x76f3('0x24')]],'as':_0x26c60c['as'],'attributes':_0x26c60c[_0x76f3('0x25')]};}):[]};}):[]};}):[]:[]})[_0x76f3('0x10')](function(_0x51b7a3){logger[_0x76f3('0x11')](_0x76f3('0x1b'),_0x3dbbe5);logger[_0x76f3('0x14')](_0x76f3('0x1b'),_0x3dbbe5,JSON[_0x76f3('0x16')](_0x51b7a3));_0x3f65e8(_0x51b7a3);})[_0x76f3('0x1a')](function(_0x14b885){logger[_0x76f3('0x17')](_0x76f3('0x1b'),_0x14b885[_0x76f3('0x18')],_0x3dbbe5);_0xa11396(_0x56cfd5['error'](0x1f4,_0x14b885[_0x76f3('0x18')]));});});};exports[_0x76f3('0x26')]=function(_0x12404b){var _0x2fddc1=this;return new Promise(function(_0x21485f,_0x228102){return db[_0x76f3('0x1c')]['find']({'raw':_0x12404b[_0x76f3('0x1e')]?_0x12404b['options'][_0x76f3('0x1f')]===undefined?!![]:![]:!![],'where':_0x12404b[_0x76f3('0x1e')]?_0x12404b[_0x76f3('0x1e')]['where']||null:null,'attributes':_0x12404b['options']?_0x12404b[_0x76f3('0x1e')]['attributes']||null:null,'include':_0x12404b[_0x76f3('0x1e')]?_0x12404b[_0x76f3('0x1e')][_0x76f3('0x23')]?_[_0x76f3('0x22')](_0x12404b[_0x76f3('0x1e')][_0x76f3('0x23')],function(_0x3aee9e){return{'model':db[_0x3aee9e[_0x76f3('0x24')]],'as':_0x3aee9e['as'],'attributes':_0x3aee9e[_0x76f3('0x25')],'include':_0x3aee9e[_0x76f3('0x23')]?_[_0x76f3('0x22')](_0x3aee9e[_0x76f3('0x23')],function(_0x34cadc){return{'model':db[_0x34cadc['model']],'as':_0x34cadc['as'],'attributes':_0x34cadc[_0x76f3('0x25')],'include':_0x34cadc['include']?_[_0x76f3('0x22')](_0x34cadc[_0x76f3('0x23')],function(_0x4c51db){return{'model':db[_0x4c51db[_0x76f3('0x24')]],'as':_0x4c51db['as'],'attributes':_0x4c51db['attributes']};}):[]};}):[]};}):[]:[]})[_0x76f3('0x10')](function(_0x33f4a3){logger[_0x76f3('0x11')](_0x76f3('0x26'),_0x12404b);logger[_0x76f3('0x14')]('ShowMailAccount',_0x12404b,JSON[_0x76f3('0x16')](_0x33f4a3));_0x21485f(_0x33f4a3);})['catch'](function(_0x247f80){logger['error'](_0x76f3('0x26'),_0x247f80['message'],_0x12404b);_0x228102(_0x2fddc1[_0x76f3('0x17')](0x1f4,_0x247f80[_0x76f3('0x18')]));});});};exports[_0x76f3('0x27')]=function(_0x735844){var _0x4abf58=this;return new Promise(function(_0x444a3c,_0x1aa177){var _0x38770c={'body':_0x735844[_0x76f3('0x28')],'channel':'mail'};var _0x28bdde=_[_0x76f3('0x29')](_['keys'](db[_0x76f3('0x2a')][_0x76f3('0x2b')]),[_0x76f3('0x2c'),_0x76f3('0x2d'),_0x76f3('0x2e'),_0x76f3('0x2f')]);var _0x25797b=![];if(_0x735844[_0x76f3('0x28')]['id']){delete _0x735844['body']['id'];}if(_[_0x76f3('0x30')](_0x735844[_0x76f3('0x28')][_0x76f3('0x31')])){return _0x1aa177(_0x4abf58[_0x76f3('0x17')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x76f3('0x30')](_0x735844[_0x76f3('0x28')][_0x76f3('0x28')])||_0x735844[_0x76f3('0x28')]['body']===''){return _0x1aa177(_0x4abf58[_0x76f3('0x17')](0x1f4,_0x76f3('0x32')));}if(_[_0x76f3('0x30')](_0x735844[_0x76f3('0x28')][_0x76f3('0x33')])){return _0x1aa177(_0x4abf58['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x28bdde));}if(!_[_0x76f3('0x34')](_0x28bdde,_0x735844['body'][_0x76f3('0x33')])){return _0x1aa177(_0x4abf58[_0x76f3('0x17')](0x1f4,_0x76f3('0x35')+_0x28bdde));}var _0x57975f={};_0x57975f[_0x735844['body']['mapKey']]=_0x735844[_0x76f3('0x28')][_0x76f3('0x31')];return db['MailAccount'][_0x76f3('0x36')]({'where':{'id':_0x735844['account']['id']},'include':[{'model':db[_0x76f3('0x37')],'as':_0x76f3('0x38'),'include':[{'model':db[_0x76f3('0x2a')],'as':_0x76f3('0x39'),'where':_0x57975f,'limit':0x1,'order':[['updatedAt',_0x76f3('0x3a')]]}]},{'model':db[_0x76f3('0x3b')],'as':'Applications'},{'model':db[_0x76f3('0x3c')],'as':_0x76f3('0x3d')}]})[_0x76f3('0x10')](function(_0x1aed66){if(_0x1aed66&&_0x1aed66[_0x76f3('0x38')]){var _0x38905f=_0x1aed66[_0x76f3('0x3e')]({'plain':!![]});_0x38770c['account']=_['omit'](_0x38905f,[_0x76f3('0x3f'),_0x76f3('0x38')]);_0x38770c[_0x76f3('0x40')]=_0x38905f[_0x76f3('0x3f')];_0x38770c[_0x76f3('0x41')]=_0x38905f[_0x76f3('0x38')];_0x38770c['applications']=_['orderBy'](_0x38770c[_0x76f3('0x40')],[_0x76f3('0x42')],['asc']);if(_0x38770c[_0x76f3('0x43')]&&_0x38770c[_0x76f3('0x43')][_0x76f3('0x44')]){_0x38770c[_0x76f3('0x40')]['push']({'id':0x0,'priority':_0x38770c[_0x76f3('0x40')]['length']+0x1,'app':_0x76f3('0x45'),'appdata':_0x76f3('0x44'),'interval':_0x76f3('0x46')});}if(_0x38770c[_0x76f3('0x43')]['Applications']){delete _0x38770c['account']['Applications'];}if(_0x38770c[_0x76f3('0x43')][_0x76f3('0x38')]){delete _0x38770c['account'][_0x76f3('0x38')];}if(_0x38905f['List']['Contacts'][_0x76f3('0x47')]){return _0x38905f[_0x76f3('0x38')][_0x76f3('0x39')][0x0];}var _0x14f915=_[_0x76f3('0xc')](_0x735844[_0x76f3('0x28')],{'firstName':_0x735844['body'][_0x76f3('0x31')],'ListId':_0x38905f[_0x76f3('0x2f')]});_0x14f915[_0x735844[_0x76f3('0x28')][_0x76f3('0x33')]]=_0x735844['body'][_0x76f3('0x31')];return db['CmContact'][_0x76f3('0x48')](_0x14f915);}else{throw new Error(_0x76f3('0x49'));}})[_0x76f3('0x10')](function(_0x3ed9fd){_0x38770c[_0x76f3('0x4a')]=_0x3ed9fd;if(_0x3ed9fd){if(!_0x735844[_0x76f3('0x28')][_0x76f3('0x18')]['messageId']){_0x735844['body']['message'][_0x76f3('0x4b')]=rs['generate']()+'\x20'+_0x735844[_0x76f3('0x28')][_0x76f3('0x18')]['from'];}var _0x1bf352={'ContactId':_0x3ed9fd['id'],'MailAccountId':_0x735844[_0x76f3('0x43')]['id'],'inReplyTo':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x4b')],'to':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x31')],'cc':_0x735844[_0x76f3('0x28')]['message']['cc'],'subject':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x4c')],'attach':_0x735844[_0x76f3('0x28')]['message'][_0x76f3('0x4d')],'lastMsgAt':moment()[_0x76f3('0x4e')](_0x76f3('0x4f')),'lastMsgDirection':'in'};return db[_0x76f3('0x50')]['find']({'where':{'closed':![],'MailAccountId':_0x735844[_0x76f3('0x43')]['id']},'include':[{'model':db['MailMessage'],'as':_0x76f3('0x51'),'attributes':[_0x76f3('0x4b')],'where':{'messageId':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x52')]}}]})[_0x76f3('0x10')](function(_0x3c5367){if(_0x3c5367){return[_0x3c5367,![]];}return db[_0x76f3('0x50')][_0x76f3('0x48')](_0x1bf352)[_0x76f3('0x10')](function(_0x3a3537){return[_0x3a3537,!![]];});});}else{throw new Error(_0x76f3('0x53'));}})[_0x76f3('0x54')](function(_0xa772cb,_0x280592){if(_0xa772cb){_0x25797b=_0x280592;if(!_0x280592){return _0xa772cb['update']({'inReplyTo':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')]['messageId'],'to':_0x735844[_0x76f3('0x28')]['message'][_0x76f3('0x31')],'cc':_0x735844['body'][_0x76f3('0x18')]['cc'],'subject':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x4c')],'attach':_0xa772cb[_0x76f3('0x4d')]?_0xa772cb[_0x76f3('0x4d')]:_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x4d')],'substatus':null,'substatusAt':moment()[_0x76f3('0x4e')](_0x76f3('0x4f')),'lastMsgAt':moment()[_0x76f3('0x4e')](_0x76f3('0x4f')),'lastMsgDirection':'in'});}else{return _0xa772cb;}}})[_0x76f3('0x10')](function(_0x17fb41){_0x38770c[_0x76f3('0x55')]=_0x17fb41[_0x76f3('0x3e')]({'plain':!![]});_0x38770c[_0x76f3('0x55')][_0x76f3('0x56')]=_0x25797b;return db[_0x76f3('0x57')][_0x76f3('0x48')]({'body':_0x735844['body'][_0x76f3('0x28')],'MailAccountId':_0x735844[_0x76f3('0x43')]['id'],'MailInteractionId':_0x17fb41['id'],'direction':'in','ContactId':_0x38770c['contact']['id'],'messageId':_0x735844['body']['message'][_0x76f3('0x4b')],'from':_0x735844['body'][_0x76f3('0x18')]['from'],'to':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')]['to'],'cc':_0x735844[_0x76f3('0x28')]['message']['cc'],'subject':_0x735844['body'][_0x76f3('0x18')][_0x76f3('0x4c')],'attach':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x4d')],'Attachments':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x58')],'originTo':_0x735844[_0x76f3('0x28')]['message']['originTo'],'originCc':_0x735844['body']['message'][_0x76f3('0x59')],'bcc':_0x735844[_0x76f3('0x28')][_0x76f3('0x18')][_0x76f3('0x5a')],'ChatWebsiteId':_0x735844[_0x76f3('0x28')]['message'][_0x76f3('0x5b')]||null,'originChannel':_0x735844['body'][_0x76f3('0x18')]['originChannel']||'Email','ChatOfflineMessageId':_0x735844[_0x76f3('0x28')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x76f3('0x5c')],'as':_0x76f3('0x5d')}]});})[_0x76f3('0x10')](function(_0xae6ff7){_0x38770c[_0x76f3('0x18')]=_0xae6ff7;if(_0x38770c[_0x76f3('0x55')]['UserId']){return db[_0x76f3('0x5e')][_0x76f3('0x36')]({'attributes':['id','name'],'where':{'id':_0x38770c[_0x76f3('0x55')][_0x76f3('0x5f')]}})[_0x76f3('0x10')](function(_0x4ff829){if(_0x4ff829){_0x38770c[_0x76f3('0x40')]['unshift']({'id':0x0,'priority':0x0,'app':_0x76f3('0x60'),'appdata':_0x4ff829[_0x76f3('0x61')]+','+(_0x38770c[_0x76f3('0x43')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x76f3('0x62'),_0x76f3('0x63'),_0x38770c);});}return respondWithRpcPromise(_0x76f3('0x62'),_0x76f3('0x63'),_0x38770c);})[_0x76f3('0x10')](function(_0x5b5bd2){_0x444a3c(_0x5b5bd2);})[_0x76f3('0x1a')](function(_0x52e22c){_0x1aa177(_0x4abf58['error'](0x1f4,_0x52e22c[_0x76f3('0x18')]));});});};
\ No newline at end of file
index 78b43f0..c8f8745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x756e=['mailAccount:','save','update','removeListener','register','length'];(function(_0x41d4d7,_0x295f96){var _0x41298f=function(_0x4e48ef){while(--_0x4e48ef){_0x41d4d7['push'](_0x41d4d7['shift']());}};_0x41298f(++_0x295f96);}(_0x756e,0x18d));var _0xe756=function(_0x126a76,_0x3111fb){_0x126a76=_0x126a76-0x0;var _0x2216d8=_0x756e[_0x126a76];return _0x2216d8;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xe756('0x0'),'remove',_0xe756('0x1')];function createListener(_0x44f21e,_0x14b229){return function(_0x259180){_0x14b229['emit'](_0x44f21e,_0x259180);};}function removeListener(_0xcecb10,_0x2b98fe){return function(){MailAccountEvents[_0xe756('0x2')](_0xcecb10,_0x2b98fe);};}exports[_0xe756('0x3')]=function(_0x21b39c){for(var _0xcf6f01=0x0,_0x2ee1e6=events[_0xe756('0x4')];_0xcf6f01<_0x2ee1e6;_0xcf6f01++){var _0x1f0738=events[_0xcf6f01];var _0x134ba7=createListener(_0xe756('0x5')+_0x1f0738,_0x21b39c);MailAccountEvents['on'](_0x1f0738,_0x134ba7);}};
\ No newline at end of file
+var _0x1669=['mailAccount:','./mailAccount.events','save','remove','emit','removeListener','register','length'];(function(_0x3f5f68,_0xa3bc8f){var _0x412342=function(_0x29c50d){while(--_0x29c50d){_0x3f5f68['push'](_0x3f5f68['shift']());}};_0x412342(++_0xa3bc8f);}(_0x1669,0x1e9));var _0x9166=function(_0xdfef81,_0x16799d){_0xdfef81=_0xdfef81-0x0;var _0xd4208=_0x1669[_0xdfef81];return _0xd4208;};'use strict';var MailAccountEvents=require(_0x9166('0x0'));var events=[_0x9166('0x1'),_0x9166('0x2'),'update'];function createListener(_0x54bd76,_0x405d8b){return function(_0x109eef){_0x405d8b[_0x9166('0x3')](_0x54bd76,_0x109eef);};}function removeListener(_0x3349fe,_0x3d3bd7){return function(){MailAccountEvents[_0x9166('0x4')](_0x3349fe,_0x3d3bd7);};}exports[_0x9166('0x5')]=function(_0x5af964){for(var _0x35db6c=0x0,_0x581a63=events[_0x9166('0x6')];_0x35db6c<_0x581a63;_0x35db6c++){var _0x401f17=events[_0x35db6c];var _0x478f6f=createListener(_0x9166('0x7')+_0x401f17,_0x5af964);MailAccountEvents['on'](_0x401f17,_0x478f6f);}};
\ No newline at end of file
index 26d5997..934271d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x543a=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','show','delete','/:id','destroy','multer'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0x543a,0xd1));var _0xa543=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x543a[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xa543('0x0'));var util=require(_0xa543('0x1'));var path=require(_0xa543('0x2'));var timeout=require(_0xa543('0x3'));var express=require('express');var router=express[_0xa543('0x4')]();var fs_extra=require(_0xa543('0x5'));var auth=require(_0xa543('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa543('0x7'));var controller=require(_0xa543('0x8'));router[_0xa543('0x9')]('/:id',auth[_0xa543('0xa')](),controller[_0xa543('0xb')]);router['put']('/:id',auth[_0xa543('0xa')](),controller['update']);router[_0xa543('0xc')](_0xa543('0xd'),auth['isAuthenticated'](),controller[_0xa543('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x4a51=['show','put','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','isAuthenticated'];(function(_0x53c41d,_0x5bda94){var _0x14d478=function(_0x390f30){while(--_0x390f30){_0x53c41d['push'](_0x53c41d['shift']());}};_0x14d478(++_0x5bda94);}(_0x4a51,0xaa));var _0x14a5=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x4a51[_0x45d55e];return _0x29812a;};'use strict';var multer=require(_0x14a5('0x0'));var util=require(_0x14a5('0x1'));var path=require(_0x14a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x14a5('0x3'));var router=express['Router']();var fs_extra=require(_0x14a5('0x4'));var auth=require(_0x14a5('0x5'));var interaction=require(_0x14a5('0x6'));var config=require(_0x14a5('0x7'));var controller=require('./mailApplication.controller');router['get'](_0x14a5('0x8'),auth[_0x14a5('0x9')](),controller[_0x14a5('0xa')]);router[_0x14a5('0xb')]('/:id',auth[_0x14a5('0x9')](),controller['update']);router['delete'](_0x14a5('0x8'),auth[_0x14a5('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 17a22a1..33cec76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77f0=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x21acea,_0x32d99e){var _0x480568=function(_0x2882bf){while(--_0x2882bf){_0x21acea['push'](_0x21acea['shift']());}};_0x480568(++_0x32d99e);}(_0x77f0,0xa7));var _0x077f=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x77f0[_0x1f9f37];return _0x21c080;};'use strict';var Sequelize=require(_0x077f('0x0'));module['exports']={'priority':{'type':Sequelize[_0x077f('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x077f('0x2')],'allowNull':![],'defaultValue':_0x077f('0x3')},'appdata':{'type':Sequelize[_0x077f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x077f('0x2')],'defaultValue':_0x077f('0x5')}};
\ No newline at end of file
+var _0xe781=['sequelize','exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xe781,0x1d5));var _0x1e78=function(_0x4e5b60,_0x58b613){_0x4e5b60=_0x4e5b60-0x0;var _0x3b53bf=_0xe781[_0x4e5b60];return _0x3b53bf;};'use strict';var Sequelize=require(_0x1e78('0x0'));module[_0x1e78('0x1')]={'priority':{'type':Sequelize[_0x1e78('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x1e78('0x3')],'allowNull':![],'defaultValue':_0x1e78('0x4')},'appdata':{'type':Sequelize[_0x1e78('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x1e78('0x3')],'defaultValue':_0x1e78('0x6')}};
\ No newline at end of file
index 7a9e267..af073fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['util','sox','ejs','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','apply','save','update','then','error','stack','name','send','show','model','keys','MailApplication','query','filters','attributes','intersection','length','includeAll','include','find','catch','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache'];(function(_0x558dad,_0x1a9b5a){var _0x1921ea=function(_0x2d44d6){while(--_0x2d44d6){_0x558dad['push'](_0x558dad['shift']());}};_0x1921ea(++_0x1a9b5a);}(_0x70e0,0x17b));var _0x070e=function(_0x26c13f,_0x1a9f5f){_0x26c13f=_0x26c13f-0x0;var _0x4174b1=_0x70e0[_0x26c13f];return _0x4174b1;};'use strict';var emlformat=require(_0x070e('0x0'));var rimraf=require(_0x070e('0x1'));var zipdir=require(_0x070e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x070e('0x3'));var BPromise=require(_0x070e('0x4'));var Mustache=require(_0x070e('0x5'));var util=require(_0x070e('0x6'));var path=require('path');var sox=require(_0x070e('0x7'));var csv=require('to-csv');var ejs=require(_0x070e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0xc'));var querystring=require(_0x070e('0xd'));var Papa=require(_0x070e('0xe'));var Redis=require(_0x070e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0x10'));var hardwareService=require(_0x070e('0x11'));var logger=require(_0x070e('0x12'))(_0x070e('0x13'));var utils=require(_0x070e('0x14'));var config=require(_0x070e('0x15'));var licenseUtil=require(_0x070e('0x16'));var db=require(_0x070e('0x17'))['db'];function respondWithStatusCode(_0x39d2b9,_0x5bf079){_0x5bf079=_0x5bf079||0xcc;return function(_0x2930b8){if(_0x2930b8){return _0x39d2b9['sendStatus'](_0x5bf079);}return _0x39d2b9['status'](_0x5bf079)[_0x070e('0x18')]();};}function respondWithResult(_0x56c7ba,_0x4a33d2){_0x4a33d2=_0x4a33d2||0xc8;return function(_0x5bae0f){if(_0x5bae0f){return _0x56c7ba[_0x070e('0x19')](_0x4a33d2)[_0x070e('0x1a')](_0x5bae0f);}};}function respondWithFilteredResult(_0x51d14d,_0x5d3a38){return function(_0x373d86){if(_0x373d86){var _0xeae1a5=typeof _0x5d3a38[_0x070e('0x1b')]===_0x070e('0x1c')&&typeof _0x5d3a38['limit']==='undefined';var _0x17e2e4=_0x373d86[_0x070e('0x1d')];var _0x38f6e6=_0xeae1a5?0x0:_0x5d3a38[_0x070e('0x1b')];var _0x364b3f=_0xeae1a5?_0x373d86['count']:_0x5d3a38[_0x070e('0x1b')]+_0x5d3a38[_0x070e('0x1e')];var _0x1ad3de;if(_0x364b3f>=_0x17e2e4){_0x364b3f=_0x17e2e4;_0x1ad3de=0xc8;}else{_0x1ad3de=0xce;}_0x51d14d[_0x070e('0x19')](_0x1ad3de);return _0x51d14d[_0x070e('0x1f')]('Content-Range',_0x38f6e6+'-'+_0x364b3f+'/'+_0x17e2e4)['json'](_0x373d86);}return null;};}function patchUpdates(_0x4e958f){return function(_0x9907cf){try{jsonpatch[_0x070e('0x20')](_0x9907cf,_0x4e958f,!![]);}catch(_0x20dc60){return BPromise['reject'](_0x20dc60);}return _0x9907cf[_0x070e('0x21')]();};}function saveUpdates(_0x5dc5d2,_0xf8dd5d){return function(_0x3f6985){if(_0x3f6985){return _0x3f6985[_0x070e('0x22')](_0x5dc5d2)[_0x070e('0x23')](function(_0x28a1c3){return _0x28a1c3;});}return null;};}function removeEntity(_0xa86797,_0xe405e){return function(_0x164cdf){if(_0x164cdf){return _0x164cdf['destroy']()[_0x070e('0x23')](function(){_0xa86797[_0x070e('0x19')](0xcc)[_0x070e('0x18')]();});}};}function handleEntityNotFound(_0x503f4d,_0xf17c56){return function(_0x5f3e9d){if(!_0x5f3e9d){_0x503f4d['sendStatus'](0x194);}return _0x5f3e9d;};}function handleError(_0x2ccbd7,_0x25f6e){_0x25f6e=_0x25f6e||0x1f4;return function(_0x41deb1){logger[_0x070e('0x24')](_0x41deb1[_0x070e('0x25')]);if(_0x41deb1['name']){delete _0x41deb1[_0x070e('0x26')];}_0x2ccbd7[_0x070e('0x19')](_0x25f6e)[_0x070e('0x27')](_0x41deb1);};}exports[_0x070e('0x28')]=function(_0x43dd96,_0x28d7f2){var _0x1a1892={'raw':!![],'where':{'id':_0x43dd96['params']['id']}},_0x26373b={};_0x26373b[_0x070e('0x29')]=_[_0x070e('0x2a')](db[_0x070e('0x2b')]['rawAttributes']);_0x26373b['query']=_[_0x070e('0x2a')](_0x43dd96[_0x070e('0x2c')]);_0x26373b[_0x070e('0x2d')]=_['intersection'](_0x26373b[_0x070e('0x29')],_0x26373b[_0x070e('0x2c')]);_0x1a1892[_0x070e('0x2e')]=_[_0x070e('0x2f')](_0x26373b['model'],qs['fields'](_0x43dd96['query']['fields']));_0x1a1892[_0x070e('0x2e')]=_0x1a1892['attributes'][_0x070e('0x30')]?_0x1a1892[_0x070e('0x2e')]:_0x26373b['model'];if(_0x43dd96['query'][_0x070e('0x31')]){_0x1a1892[_0x070e('0x32')]=[{'all':!![]}];}_0x1a1892=_['merge']({},_0x1a1892,_0x43dd96['options']);return db[_0x070e('0x2b')][_0x070e('0x33')](_0x1a1892)[_0x070e('0x23')](handleEntityNotFound(_0x28d7f2,null))[_0x070e('0x23')](respondWithResult(_0x28d7f2,null))[_0x070e('0x34')](handleError(_0x28d7f2,null));};exports['update']=function(_0x482cc2,_0x24d17d){if(_0x482cc2[_0x070e('0x35')]['id']){delete _0x482cc2[_0x070e('0x35')]['id'];}return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x482cc2['params']['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x24d17d,null))[_0x070e('0x23')](saveUpdates(_0x482cc2['body'],null))[_0x070e('0x23')](respondWithResult(_0x24d17d,null))[_0x070e('0x34')](handleError(_0x24d17d,null));};exports['destroy']=function(_0x4d4ee8,_0x5ddbe9){return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x4d4ee8[_0x070e('0x36')]['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x5ddbe9,null))[_0x070e('0x23')](removeEntity(_0x5ddbe9,null))['catch'](handleError(_0x5ddbe9,null));};
\ No newline at end of file
+var _0xcb91=['send','show','params','keys','rawAttributes','query','intersection','attributes','fields','length','model','includeAll','include','merge','options','MailApplication','find','catch','body','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name'];(function(_0x1fd421,_0x1e6c3a){var _0x205429=function(_0x57d9fb){while(--_0x57d9fb){_0x1fd421['push'](_0x1fd421['shift']());}};_0x205429(++_0x1e6c3a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x305486,_0x24acd4){_0x305486=_0x305486-0x0;var _0xa04940=_0xcb91[_0x305486];return _0xa04940;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1cb9('0x0'));var jsonpatch=require(_0x1cb9('0x1'));var rp=require(_0x1cb9('0x2'));var moment=require(_0x1cb9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1cb9('0x4'));var util=require(_0x1cb9('0x5'));var path=require('path');var sox=require(_0x1cb9('0x6'));var csv=require(_0x1cb9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1cb9('0x8'));var _=require(_0x1cb9('0x9'));var squel=require('squel');var crypto=require(_0x1cb9('0xa'));var jsforce=require(_0x1cb9('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x1cb9('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1cb9('0xc'));var authService=require(_0x1cb9('0xd'));var qs=require(_0x1cb9('0xe'));var as=require(_0x1cb9('0xf'));var hardwareService=require(_0x1cb9('0x10'));var logger=require('../../config/logger')(_0x1cb9('0x11'));var utils=require(_0x1cb9('0x12'));var config=require(_0x1cb9('0x13'));var licenseUtil=require(_0x1cb9('0x14'));var db=require(_0x1cb9('0x15'))['db'];function respondWithStatusCode(_0x5445e1,_0x5e3c19){_0x5e3c19=_0x5e3c19||0xcc;return function(_0x59dec3){if(_0x59dec3){return _0x5445e1[_0x1cb9('0x16')](_0x5e3c19);}return _0x5445e1[_0x1cb9('0x17')](_0x5e3c19)[_0x1cb9('0x18')]();};}function respondWithResult(_0x1c714f,_0x56884d){_0x56884d=_0x56884d||0xc8;return function(_0x397727){if(_0x397727){return _0x1c714f[_0x1cb9('0x17')](_0x56884d)[_0x1cb9('0x19')](_0x397727);}};}function respondWithFilteredResult(_0x8dfa55,_0x3e2d11){return function(_0x5806d8){if(_0x5806d8){var _0x5572cb=typeof _0x3e2d11[_0x1cb9('0x1a')]===_0x1cb9('0x1b')&&typeof _0x3e2d11[_0x1cb9('0x1c')]===_0x1cb9('0x1b');var _0x3e21e0=_0x5806d8[_0x1cb9('0x1d')];var _0x23d3a9=_0x5572cb?0x0:_0x3e2d11['offset'];var _0x479d43=_0x5572cb?_0x5806d8[_0x1cb9('0x1d')]:_0x3e2d11[_0x1cb9('0x1a')]+_0x3e2d11[_0x1cb9('0x1c')];var _0x31481a;if(_0x479d43>=_0x3e21e0){_0x479d43=_0x3e21e0;_0x31481a=0xc8;}else{_0x31481a=0xce;}_0x8dfa55[_0x1cb9('0x17')](_0x31481a);return _0x8dfa55[_0x1cb9('0x1e')](_0x1cb9('0x1f'),_0x23d3a9+'-'+_0x479d43+'/'+_0x3e21e0)['json'](_0x5806d8);}return null;};}function patchUpdates(_0x559bcc){return function(_0x1a5a72){try{jsonpatch['apply'](_0x1a5a72,_0x559bcc,!![]);}catch(_0x4750b1){return BPromise[_0x1cb9('0x20')](_0x4750b1);}return _0x1a5a72['save']();};}function saveUpdates(_0x599275,_0x2e3854){return function(_0x325637){if(_0x325637){return _0x325637[_0x1cb9('0x21')](_0x599275)[_0x1cb9('0x22')](function(_0x45b8d3){return _0x45b8d3;});}return null;};}function removeEntity(_0x27db16,_0x59ebea){return function(_0x55b232){if(_0x55b232){return _0x55b232[_0x1cb9('0x23')]()['then'](function(){_0x27db16[_0x1cb9('0x17')](0xcc)[_0x1cb9('0x18')]();});}};}function handleEntityNotFound(_0x69b4c8,_0x44d3c4){return function(_0x43a100){if(!_0x43a100){_0x69b4c8['sendStatus'](0x194);}return _0x43a100;};}function handleError(_0x195f16,_0x9df250){_0x9df250=_0x9df250||0x1f4;return function(_0x4c8d76){logger[_0x1cb9('0x24')](_0x4c8d76[_0x1cb9('0x25')]);if(_0x4c8d76[_0x1cb9('0x26')]){delete _0x4c8d76[_0x1cb9('0x26')];}_0x195f16[_0x1cb9('0x17')](_0x9df250)[_0x1cb9('0x27')](_0x4c8d76);};}exports[_0x1cb9('0x28')]=function(_0xb644b3,_0x41e5c2){var _0x9de64b={'raw':!![],'where':{'id':_0xb644b3[_0x1cb9('0x29')]['id']}},_0x48888d={};_0x48888d['model']=_[_0x1cb9('0x2a')](db['MailApplication'][_0x1cb9('0x2b')]);_0x48888d[_0x1cb9('0x2c')]=_[_0x1cb9('0x2a')](_0xb644b3[_0x1cb9('0x2c')]);_0x48888d['filters']=_[_0x1cb9('0x2d')](_0x48888d['model'],_0x48888d[_0x1cb9('0x2c')]);_0x9de64b[_0x1cb9('0x2e')]=_[_0x1cb9('0x2d')](_0x48888d['model'],qs[_0x1cb9('0x2f')](_0xb644b3['query'][_0x1cb9('0x2f')]));_0x9de64b['attributes']=_0x9de64b[_0x1cb9('0x2e')][_0x1cb9('0x30')]?_0x9de64b[_0x1cb9('0x2e')]:_0x48888d[_0x1cb9('0x31')];if(_0xb644b3['query'][_0x1cb9('0x32')]){_0x9de64b[_0x1cb9('0x33')]=[{'all':!![]}];}_0x9de64b=_[_0x1cb9('0x34')]({},_0x9de64b,_0xb644b3[_0x1cb9('0x35')]);return db[_0x1cb9('0x36')][_0x1cb9('0x37')](_0x9de64b)[_0x1cb9('0x22')](handleEntityNotFound(_0x41e5c2,null))[_0x1cb9('0x22')](respondWithResult(_0x41e5c2,null))[_0x1cb9('0x38')](handleError(_0x41e5c2,null));};exports[_0x1cb9('0x21')]=function(_0x294eec,_0x26b950){if(_0x294eec[_0x1cb9('0x39')]['id']){delete _0x294eec['body']['id'];}return db['MailApplication'][_0x1cb9('0x37')]({'where':{'id':_0x294eec[_0x1cb9('0x29')]['id']}})[_0x1cb9('0x22')](handleEntityNotFound(_0x26b950,null))[_0x1cb9('0x22')](saveUpdates(_0x294eec[_0x1cb9('0x39')],null))[_0x1cb9('0x22')](respondWithResult(_0x26b950,null))[_0x1cb9('0x38')](handleError(_0x26b950,null));};exports[_0x1cb9('0x23')]=function(_0x4d3e39,_0x2aa59b){return db[_0x1cb9('0x36')][_0x1cb9('0x37')]({'where':{'id':_0x4d3e39['params']['id']}})[_0x1cb9('0x22')](handleEntityNotFound(_0x2aa59b,null))['then'](removeEntity(_0x2aa59b,null))[_0x1cb9('0x38')](handleError(_0x2aa59b,null));};
\ No newline at end of file
index d6527c6..8175d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x442c=['MailApplication','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x442c,0x128));var _0xc442=function(_0x54d01a,_0x3d4487){_0x54d01a=_0x54d01a-0x0;var _0x1b6149=_0x442c[_0x54d01a];return _0x1b6149;};'use strict';var _=require(_0xc442('0x0'));var util=require(_0xc442('0x1'));var logger=require(_0xc442('0x2'))(_0xc442('0x3'));var moment=require(_0xc442('0x4'));var BPromise=require(_0xc442('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc442('0x6'));var rimraf=require(_0xc442('0x7'));var config=require(_0xc442('0x8'));var attributes=require(_0xc442('0x9'));module[_0xc442('0xa')]=function(_0x4fa0ee,_0x12cd13){return _0x4fa0ee[_0xc442('0xb')](_0xc442('0xc'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc442('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6de9=['../../config/environment','MailApplication','mail_applications','utf8mb4','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x436722,_0x575958){var _0x2c7f7f=function(_0x404409){while(--_0x404409){_0x436722['push'](_0x436722['shift']());}};_0x2c7f7f(++_0x575958);}(_0x6de9,0x90));var _0x96de=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6de9[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x96de('0x0'));var logger=require(_0x96de('0x1'))('api');var moment=require('moment');var BPromise=require(_0x96de('0x2'));var rp=require(_0x96de('0x3'));var fs=require('fs');var path=require(_0x96de('0x4'));var rimraf=require(_0x96de('0x5'));var config=require(_0x96de('0x6'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x4f97ff,_0x52c9cd){return _0x4f97ff['define'](_0x96de('0x7'),attributes,{'tableName':_0x96de('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x96de('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 7f74877..f770db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42d5=['update','body','raw','options','where','attributes','limit','UpdateMailApplication','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','MailApplication'];(function(_0x5c8215,_0x4af75b){var _0x57f150=function(_0x10c48b){while(--_0x10c48b){_0x5c8215['push'](_0x5c8215['shift']());}};_0x57f150(++_0x4af75b);}(_0x42d5,0xc9));var _0x542d=function(_0x339bd0,_0x318812){_0x339bd0=_0x339bd0-0x0;var _0x258898=_0x42d5[_0x339bd0];return _0x258898;};'use strict';var _=require(_0x542d('0x0'));var util=require(_0x542d('0x1'));var moment=require(_0x542d('0x2'));var BPromise=require(_0x542d('0x3'));var rs=require(_0x542d('0x4'));var fs=require('fs');var Redis=require(_0x542d('0x5'));var db=require(_0x542d('0x6'))['db'];var utils=require(_0x542d('0x7'));var logger=require(_0x542d('0x8'))(_0x542d('0x9'));var config=require(_0x542d('0xa'));var jayson=require(_0x542d('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x22d24f,_0x3b99af,_0x21ec94){return new BPromise(function(_0x49a8a4,_0x37bc55){return client['request'](_0x22d24f,_0x21ec94)[_0x542d('0xc')](function(_0x324067){logger['info'](_0x542d('0xd'),_0x3b99af,_0x542d('0xe'));logger[_0x542d('0xf')](_0x542d('0x10'),_0x3b99af,_0x542d('0xe'),JSON['stringify'](_0x324067));if(_0x324067['error']){if(_0x324067[_0x542d('0x11')][_0x542d('0x12')]===0x1f4){logger[_0x542d('0x11')]('MailApplication,\x20%s,\x20%s',_0x3b99af,_0x324067['error']['message']);return _0x37bc55(_0x324067[_0x542d('0x11')][_0x542d('0x13')]);}logger[_0x542d('0x11')](_0x542d('0xd'),_0x3b99af,_0x324067[_0x542d('0x11')][_0x542d('0x13')]);return _0x49a8a4(_0x324067[_0x542d('0x11')]['message']);}else{logger[_0x542d('0x14')](_0x542d('0xd'),_0x3b99af,'request\x20sent');_0x49a8a4(_0x324067['result']['message']);}})[_0x542d('0x15')](function(_0x47e0ca){logger[_0x542d('0x11')]('MailApplication,\x20%s,\x20%s',_0x3b99af,_0x47e0ca);_0x37bc55(_0x47e0ca);});});}exports['UpdateMailApplication']=function(_0x371a66){var _0x353cb6=this;return new Promise(function(_0x48b34f,_0x65796){return db[_0x542d('0x16')][_0x542d('0x17')](_0x371a66[_0x542d('0x18')],{'raw':_0x371a66['options']?_0x371a66['options'][_0x542d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x371a66[_0x542d('0x1a')]?_0x371a66[_0x542d('0x1a')][_0x542d('0x1b')]||null:null,'attributes':_0x371a66[_0x542d('0x1a')]?_0x371a66[_0x542d('0x1a')][_0x542d('0x1c')]||null:null,'limit':_0x371a66['options']?_0x371a66['options'][_0x542d('0x1d')]||null:null})['then'](function(_0xf212d){logger['info'](_0x542d('0x1e'),_0x371a66);logger[_0x542d('0xf')](_0x542d('0x1e'),_0x371a66,JSON[_0x542d('0x1f')](_0xf212d));_0x48b34f(_0xf212d);})[_0x542d('0x15')](function(_0x51080b){logger['error'](_0x542d('0x1e'),_0x51080b[_0x542d('0x13')],_0x371a66);_0x65796(_0x353cb6['error'](0x1f4,_0x51080b[_0x542d('0x13')]));});});};
\ No newline at end of file
+var _0xe66a=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','request\x20sent','debug','stringify','error','MailApplication,\x20%s,\x20%s','message','info','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes','limit','then','lodash','util','moment'];(function(_0x51d2ca,_0x300f76){var _0x2d3f4e=function(_0x169abb){while(--_0x169abb){_0x51d2ca['push'](_0x51d2ca['shift']());}};_0x2d3f4e(++_0x300f76);}(_0xe66a,0xcf));var _0xae66=function(_0x13283f,_0x154cf9){_0x13283f=_0x13283f-0x0;var _0x446615=_0xe66a[_0x13283f];return _0x446615;};'use strict';var _=require(_0xae66('0x0'));var util=require(_0xae66('0x1'));var moment=require(_0xae66('0x2'));var BPromise=require('bluebird');var rs=require(_0xae66('0x3'));var fs=require('fs');var Redis=require(_0xae66('0x4'));var db=require(_0xae66('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xae66('0x6'))(_0xae66('0x7'));var config=require('../../config/environment');var jayson=require(_0xae66('0x8'));var client=jayson[_0xae66('0x9')][_0xae66('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x45c95e,_0x44925c,_0x5028fb){return new BPromise(function(_0x1af58f,_0x54062a){return client[_0xae66('0xb')](_0x45c95e,_0x5028fb)['then'](function(_0x532bce){logger['info']('MailApplication,\x20%s,\x20%s',_0x44925c,_0xae66('0xc'));logger[_0xae66('0xd')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x44925c,_0xae66('0xc'),JSON[_0xae66('0xe')](_0x532bce));if(_0x532bce[_0xae66('0xf')]){if(_0x532bce['error']['code']===0x1f4){logger[_0xae66('0xf')](_0xae66('0x10'),_0x44925c,_0x532bce['error'][_0xae66('0x11')]);return _0x54062a(_0x532bce[_0xae66('0xf')][_0xae66('0x11')]);}logger[_0xae66('0xf')]('MailApplication,\x20%s,\x20%s',_0x44925c,_0x532bce[_0xae66('0xf')][_0xae66('0x11')]);return _0x1af58f(_0x532bce[_0xae66('0xf')]['message']);}else{logger[_0xae66('0x12')](_0xae66('0x10'),_0x44925c,_0xae66('0xc'));_0x1af58f(_0x532bce[_0xae66('0x13')][_0xae66('0x11')]);}})[_0xae66('0x14')](function(_0x1d4eed){logger[_0xae66('0xf')]('MailApplication,\x20%s,\x20%s',_0x44925c,_0x1d4eed);_0x54062a(_0x1d4eed);});});}exports[_0xae66('0x15')]=function(_0x2bba67){var _0x5232f9=this;return new Promise(function(_0x122859,_0x53f0e8){return db['MailApplication'][_0xae66('0x16')](_0x2bba67[_0xae66('0x17')],{'raw':_0x2bba67[_0xae66('0x18')]?_0x2bba67[_0xae66('0x18')][_0xae66('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bba67['options']?_0x2bba67[_0xae66('0x18')][_0xae66('0x1a')]||null:null,'attributes':_0x2bba67['options']?_0x2bba67['options'][_0xae66('0x1b')]||null:null,'limit':_0x2bba67[_0xae66('0x18')]?_0x2bba67[_0xae66('0x18')][_0xae66('0x1c')]||null:null})[_0xae66('0x1d')](function(_0x398f0a){logger['info'](_0xae66('0x15'),_0x2bba67);logger[_0xae66('0xd')](_0xae66('0x15'),_0x2bba67,JSON[_0xae66('0xe')](_0x398f0a));_0x122859(_0x398f0a);})[_0xae66('0x14')](function(_0x5e80aa){logger['error'](_0xae66('0x15'),_0x5e80aa[_0xae66('0x11')],_0x2bba67);_0x53f0e8(_0x5232f9[_0xae66('0xf')](0x1f4,_0x5e80aa['message']));});});};
\ No newline at end of file
index 95aa3ed..be19a3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x825a=['/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','Router','../../components/auth/service','./mailInteraction.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x1f32cb,_0x10774e){var _0xff2722=function(_0x370c71){while(--_0x370c71){_0x1f32cb['push'](_0x1f32cb['shift']());}};_0xff2722(++_0x10774e);}(_0x825a,0x6f));var _0xa825=function(_0x3de4f8,_0x336c7d){_0x3de4f8=_0x3de4f8-0x0;var _0x3d81fc=_0x825a[_0x3de4f8];return _0x3d81fc;};'use strict';var express=require(_0xa825('0x0'));var router=express[_0xa825('0x1')]();var auth=require(_0xa825('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0xa825('0x3'));router['get']('/',auth[_0xa825('0x4')](),controller[_0xa825('0x5')]);router[_0xa825('0x6')](_0xa825('0x7'),auth['isAuthenticated'](),controller[_0xa825('0x8')]);router['get'](_0xa825('0x9'),auth['isAuthenticated'](),controller[_0xa825('0xa')]);router['get'](_0xa825('0xb'),auth[_0xa825('0x4')](),controller[_0xa825('0xc')]);router[_0xa825('0x6')](_0xa825('0xd'),auth['isAuthenticated'](),controller[_0xa825('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa825('0xf')](_0xa825('0xb'),auth[_0xa825('0x4')](),controller[_0xa825('0x10')]);router[_0xa825('0xf')](_0xa825('0x11'),auth[_0xa825('0x4')](),interaction[_0xa825('0x12')](_0xa825('0x13'),_0xa825('0x14')),controller[_0xa825('0x15')]);router[_0xa825('0x16')](_0xa825('0x9'),auth[_0xa825('0x4')](),interaction['tracked']('mail',_0xa825('0x17')),controller[_0xa825('0x18')]);router[_0xa825('0x19')]('/:id',auth[_0xa825('0x4')](),interaction['tracked'](_0xa825('0x13'),_0xa825('0x1a')),controller[_0xa825('0x1b')]);router[_0xa825('0x19')]('/:id/tags',auth[_0xa825('0x4')](),controller[_0xa825('0x1c')]);module[_0xa825('0x1d')]=router;
\ No newline at end of file
+var _0x64f9=['mailinteraction:destroy','destroy','exports','express','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','getMessages','download','post','create','/:id/messages','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x64f9,0x85));var _0x964f=function(_0x219d87,_0x1cb6f7){_0x219d87=_0x219d87-0x0;var _0x22823d=_0x64f9[_0x219d87];return _0x22823d;};'use strict';var express=require(_0x964f('0x0'));var router=express['Router']();var auth=require(_0x964f('0x1'));var interaction=require(_0x964f('0x2'));var controller=require('./mailInteraction.controller');router['get']('/',auth[_0x964f('0x3')](),controller[_0x964f('0x4')]);router[_0x964f('0x5')]('/describe',auth[_0x964f('0x3')](),controller['describe']);router[_0x964f('0x5')](_0x964f('0x6'),auth[_0x964f('0x3')](),controller[_0x964f('0x7')]);router[_0x964f('0x5')]('/:id/messages',auth[_0x964f('0x3')](),controller[_0x964f('0x8')]);router['get']('/:id/download',auth[_0x964f('0x3')](),controller[_0x964f('0x9')]);router[_0x964f('0xa')]('/',auth[_0x964f('0x3')](),controller[_0x964f('0xb')]);router[_0x964f('0xa')](_0x964f('0xc'),auth[_0x964f('0x3')](),controller[_0x964f('0xd')]);router[_0x964f('0xa')](_0x964f('0xe'),auth['isAuthenticated'](),interaction[_0x964f('0xf')](_0x964f('0x10'),_0x964f('0x11')),controller[_0x964f('0x12')]);router[_0x964f('0x13')]('/:id',auth['isAuthenticated'](),interaction[_0x964f('0xf')]('mail',_0x964f('0x14')),controller[_0x964f('0x15')]);router[_0x964f('0x16')](_0x964f('0x6'),auth[_0x964f('0x3')](),interaction[_0x964f('0xf')](_0x964f('0x10'),_0x964f('0x17')),controller[_0x964f('0x18')]);router['delete'](_0x964f('0xe'),auth[_0x964f('0x3')](),controller['removeTags']);module[_0x964f('0x19')]=router;
\ No newline at end of file
index fe5dd47..6f3cc4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe889=['DATE','STRING','TEXT','out','sequelize','iconv','BOOLEAN'];(function(_0x10dc69,_0x23c4f9){var _0x5c7dc0=function(_0x1f9ead){while(--_0x1f9ead){_0x10dc69['push'](_0x10dc69['shift']());}};_0x5c7dc0(++_0x23c4f9);}(_0xe889,0xd6));var _0x9e88=function(_0xfcadfe,_0x4ccf1a){_0xfcadfe=_0xfcadfe-0x0;var _0x1e0c7a=_0xe889[_0xfcadfe];return _0x1e0c7a;};'use strict';var Sequelize=require(_0x9e88('0x0'));var iconv=require(_0x9e88('0x1'));module['exports']={'closed':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9e88('0x3')]},'disposition':{'type':Sequelize[_0x9e88('0x4')]},'secondDisposition':{'type':Sequelize[_0x9e88('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9e88('0x4')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x9e88('0x4')]},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x9e88('0x5')]()},'attach':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x9e88('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x9e88('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9e88('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9e88('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9e88('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9e88('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3b56=['BOOLEAN','DATE','STRING','TEXT','long','ENUM','out','sequelize','iconv'];(function(_0x27488f,_0x58085d){var _0x3a0d9d=function(_0x4e62a8){while(--_0x4e62a8){_0x27488f['push'](_0x27488f['shift']());}};_0x3a0d9d(++_0x58085d);}(_0x3b56,0x97));var _0x63b5=function(_0x46970a,_0x3fab5d){_0x46970a=_0x46970a-0x0;var _0x91fd7f=_0x3b56[_0x46970a];return _0x91fd7f;};'use strict';var Sequelize=require(_0x63b5('0x0'));var iconv=require(_0x63b5('0x1'));module['exports']={'closed':{'type':Sequelize[_0x63b5('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x63b5('0x3')]},'disposition':{'type':Sequelize[_0x63b5('0x4')]},'secondDisposition':{'type':Sequelize[_0x63b5('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x63b5('0x4')](0x1fe)},'to':{'type':Sequelize[_0x63b5('0x4')]},'cc':{'type':Sequelize[_0x63b5('0x5')](_0x63b5('0x6'))},'subject':{'type':Sequelize[_0x63b5('0x5')]()},'attach':{'type':Sequelize[_0x63b5('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x63b5('0x3')]},'substatus':{'type':Sequelize[_0x63b5('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x63b5('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x63b5('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x63b5('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x63b5('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x63b5('0x2')],'defaultValue':![]}};
\ No newline at end of file
index e68b799..baf72f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487b=['fullname','TagIds','Tags','forEach','push','MailMessage','findOne','out','plainBody','-id','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','tools_tags','u.id','from','user_has_mail_interactions','users','mail_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','some','compact','MailAccountId','i.MailAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','MailInteractionId','enableEmailPreview','rows','show','params','includeAll','include','options','create','body','describe','addMessage','ids','omit','getMessages','filters','YYYY-MM-DD\x20HH:mm:ss','true','addTags','spread','findAll','emit','removeTags','download','join','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Attachments','bcc','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','attachments','readFileSync','build','writeFileSync','format','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','path','lodash','squel','ioredis','../../components/parsers/qs','api','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','destroy','then','error','stack','name','send','map'];(function(_0x4dcf2c,_0x17f167){var _0x35c675=function(_0x24a093){while(--_0x24a093){_0x4dcf2c['push'](_0x4dcf2c['shift']());}};_0x35c675(++_0x17f167);}(_0x487b,0xc3));var _0xb487=function(_0x3dcc80,_0x1a20af){_0x3dcc80=_0x3dcc80-0x0;var _0x401c6f=_0x487b[_0x3dcc80];return _0x401c6f;};'use strict';var emlformat=require(_0xb487('0x0'));var rimraf=require(_0xb487('0x1'));var zipdir=require(_0xb487('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xb487('0x3'));var path=require(_0xb487('0x4'));var fs=require('fs');var _=require(_0xb487('0x5'));var squel=require(_0xb487('0x6'));var juice=require('juice');var Redis=require(_0xb487('0x7'));var qs=require(_0xb487('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xb487('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0xb487('0xa')]=_[_0xb487('0xb')](config['redis'],{'host':_0xb487('0xc'),'port':0x18eb});var socket=require(_0xb487('0xd'))(new Redis(config[_0xb487('0xa')]));require(_0xb487('0xe'))['register'](socket);function respondWithStatusCode(_0x41eee8,_0x4947fb){_0x4947fb=_0x4947fb||0xcc;return function(_0x25d0cc){if(_0x25d0cc){return _0x41eee8[_0xb487('0xf')](_0x4947fb);}return _0x41eee8[_0xb487('0x10')](_0x4947fb)[_0xb487('0x11')]();};}function respondWithResult(_0x40e49c,_0xe731f0){_0xe731f0=_0xe731f0||0xc8;return function(_0x57dd8e){if(_0x57dd8e){return _0x40e49c[_0xb487('0x10')](_0xe731f0)[_0xb487('0x12')](_0x57dd8e);}};}function respondWithFilteredResult(_0x10daf2,_0x44918f){return function(_0x4fb3b7){if(_0x4fb3b7){var _0x44f59c=typeof _0x44918f[_0xb487('0x13')]==='undefined'&&typeof _0x44918f[_0xb487('0x14')]===_0xb487('0x15');var _0x1c4f4a=_0x4fb3b7[_0xb487('0x16')];var _0x99c8c8=_0x44f59c?0x0:_0x44918f['offset'];var _0x26e598=_0x44f59c?_0x4fb3b7[_0xb487('0x16')]:_0x44918f[_0xb487('0x13')]+_0x44918f['limit'];var _0x20ac7f;if(_0x26e598>=_0x1c4f4a){_0x26e598=_0x1c4f4a;_0x20ac7f=0xc8;}else{_0x20ac7f=0xce;}_0x10daf2[_0xb487('0x10')](_0x20ac7f);return _0x10daf2[_0xb487('0x17')](_0xb487('0x18'),_0x99c8c8+'-'+_0x26e598+'/'+_0x1c4f4a)[_0xb487('0x12')](_0x4fb3b7);}return null;};}function saveUpdates(_0x2c2911){return function(_0x101420){if(_0x101420){return _0x101420[_0xb487('0x19')](_0x2c2911)['then'](function(_0x2f1bcb){return _0x2f1bcb;});}return null;};}function removeEntity(_0x2af03f){return function(_0x2c7387){if(_0x2c7387){return _0x2c7387[_0xb487('0x1a')]()[_0xb487('0x1b')](function(){_0x2af03f[_0xb487('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45a639){return function(_0x47604e){if(!_0x47604e){_0x45a639['sendStatus'](0x194);}return _0x47604e;};}function handleError(_0x3fed5a,_0x502759){_0x502759=_0x502759||0x1f4;return function(_0x5d049c){logger[_0xb487('0x1c')](_0x5d049c[_0xb487('0x1d')]);if(_0x5d049c[_0xb487('0x1e')]){delete _0x5d049c['name'];}_0x3fed5a['status'](_0x502759)[_0xb487('0x1f')](_0x5d049c);};}function getInteractionUsers(_0x1076a3,_0x4250bc){return new BPromise(function(_0x49d7b6,_0x4a4284){try{if(_0x4250bc[_0x1076a3['id']]){_0x1076a3['Users']=_[_0xb487('0x20')](_0x4250bc[_0x1076a3['id']],function(_0x1576de){return{'id':_0x1576de['id'],'fullname':_0x1576de[_0xb487('0x21')]};});}}catch(_0x1b46b5){_0x4a4284(_0x1b46b5);}_0x49d7b6(_0x1076a3);});}function getInteractionTags(_0x27d5be,_0x3db3c6){return new BPromise(function(_0x1b77bc,_0x1fffe0){try{if(_0x27d5be[_0xb487('0x22')]){_0x27d5be[_0xb487('0x23')]=[];_0x27d5be[_0xb487('0x22')]['split'](',')[_0xb487('0x24')](function(_0x453c95){_0x27d5be['Tags'][_0xb487('0x25')](_0x3db3c6[_0x453c95]);});}delete _0x27d5be[_0xb487('0x22')];}catch(_0x21110a){_0x1fffe0(_0x21110a);}_0x1b77bc(_0x27d5be);});}function getLastMessageText(_0x32a7b7){return new BPromise(function(_0x5b078e,_0x2e0987){return db[_0xb487('0x26')][_0xb487('0x27')]({'where':{'$and':[{'MailInteractionId':_0x32a7b7['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xb487('0x28')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xb487('0x29')],'order':_0xb487('0x2a'),'raw':!![]})[_0xb487('0x1b')](function(_0x20dc9d){if(_0x20dc9d&&_0x20dc9d['plainBody']){_0x32a7b7[_0xb487('0x2b')]=_[_0xb487('0x2c')](_0x20dc9d[_0xb487('0x29')]);}_0x5b078e(_0x32a7b7);})[_0xb487('0x2d')](function(_0x110b20){_0x2e0987(_0x110b20);});});}function updateMailInteraction(_0x2e9b07,_0x8c3cb5,_0x13e2a8,_0x208e13){return new BPromise(function(_0x2201b9,_0x4adfa2){return getInteractionUsers(_0x2e9b07,_0x13e2a8)[_0xb487('0x1b')](function(_0x4a5c00){return getInteractionTags(_0x4a5c00,_0x8c3cb5);})[_0xb487('0x1b')](function(_0xd6f178){if(_0x208e13){_0x2201b9(getLastMessageText(_0xd6f178));}else{_0x2201b9(_0xd6f178);}})['catch'](function(_0xa8ff84){_0x4adfa2(_0xa8ff84);});});}exports[_0xb487('0x2e')]=function(_0x1e5dc9,_0x1583c6){var _0x54a9ee={},_0x4dd3d4={},_0x19622a={'count':0x0,'rows':[]};var _0x2a9d81=_[_0xb487('0x20')](db[_0xb487('0x2f')][_0xb487('0x30')],function(_0xb63152){return{'name':_0xb63152[_0xb487('0x31')],'type':_0xb63152[_0xb487('0x32')][_0xb487('0x33')]};});_0x4dd3d4[_0xb487('0x34')]=_['map'](_0x2a9d81,_0xb487('0x1e'));_0x4dd3d4['query']=_[_0xb487('0x35')](_0x1e5dc9[_0xb487('0x36')]);_0x4dd3d4['filters']=_[_0xb487('0x37')](_0x4dd3d4[_0xb487('0x34')],_0x4dd3d4[_0xb487('0x36')]);_0x54a9ee[_0xb487('0x38')]=_[_0xb487('0x37')](_0x4dd3d4[_0xb487('0x34')],qs[_0xb487('0x39')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x39')]));_0x54a9ee[_0xb487('0x38')]=_0x54a9ee[_0xb487('0x38')][_0xb487('0x3a')]?_0x54a9ee[_0xb487('0x38')]:_0x4dd3d4[_0xb487('0x34')];if(!_0x1e5dc9[_0xb487('0x36')][_0xb487('0x3b')](_0xb487('0x3c'))){_0x54a9ee[_0xb487('0x14')]=qs[_0xb487('0x14')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x14')]);_0x54a9ee[_0xb487('0x13')]=qs[_0xb487('0x13')](_0x1e5dc9[_0xb487('0x36')][_0xb487('0x13')]);}_0x54a9ee[_0xb487('0x3d')]=qs[_0xb487('0x3e')](_0x1e5dc9[_0xb487('0x36')]['sort']);_0x54a9ee[_0xb487('0x3f')]=qs['filters'](_[_0xb487('0x40')](_0x1e5dc9[_0xb487('0x36')],_0x4dd3d4['filters']),_0x2a9d81);var _0x57912d=[];var _0x1d1d81=squel[_0xb487('0x41')]()[_0xb487('0x42')]('id')['field']('name')[_0xb487('0x42')](_0xb487('0x43'))['from'](_0xb487('0x44'));var _0x533d21=squel[_0xb487('0x41')]()[_0xb487('0x42')](_0xb487('0x45'))[_0xb487('0x42')]('u.fullname')['field']('ui.MailInteractionId')[_0xb487('0x46')](_0xb487('0x47'),'ui')['left_join'](_0xb487('0x48'),'u','u.id\x20=\x20ui.UserId');var _0x1a5fbd=squel[_0xb487('0x41')]()[_0xb487('0x46')](_0xb487('0x49'),'i')[_0xb487('0x4a')](_0xb487('0x4b'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xb487('0x4a')](_0xb487('0x48'),'o',_0xb487('0x4c'))['left_join'](_0xb487('0x4d'),'a',_0xb487('0x4e'))[_0xb487('0x4a')]('mail_messages','me','me.MailInteractionId\x20=\x20i.id')[_0xb487('0x4a')]('mail_interaction_has_tags','it',_0xb487('0x4f'))[_0xb487('0x4a')]('tools_tags','t',_0xb487('0x50'));var _0xa14a70=squel['expr']();var _0x3d2396=[];var _0x213c63=squel[_0xb487('0x51')]();var _0x228d1f;if(_0x1e5dc9[_0xb487('0x36')]['search']){_0x228d1f=as[_0xb487('0x52')](_0x1e5dc9[_0xb487('0x36')]['search']);var _0xc872e7=_0x228d1f[_0xb487('0x53')];for(var _0x146154=0x0;_0x146154<_0x228d1f[_0xb487('0x54')][_0xb487('0x3a')];_0x146154++){var _0x2eb201=_0x228d1f[_0xb487('0x54')][_0x146154];var _0x598eec='i';var _0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,[_0xb487('0x1e'),_0x2eb201[_0xb487('0x42')]]);if(!_0x5c4b49){switch(_0x2eb201[_0xb487('0x42')]){case _0xb487('0x56'):if(_0x2eb201[_0xb487('0x57')]==0x1){_0x1a5fbd[_0xb487('0x58')]('`'+_0x2eb201[_0xb487('0x42')]+_0xb487('0x59'));}else{_0x1a5fbd['having']('`'+_0x2eb201[_0xb487('0x42')]+_0xb487('0x5a'));}break;case'Contact':if(_0x2eb201[_0xb487('0x5b')]===_0xb487('0x5c')){if(_0x2eb201[_0xb487('0x57')][_0xb487('0x5d')]('\x20')[_0xb487('0x3a')]>0x1){_0xa14a70[_0xc872e7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x2eb201['value']),null);}else{var _0x583d2e='%'+_0x2eb201['value']+'%';_0xa14a70[_0xc872e7](_0xb487('0x5e'),_0x583d2e,_0x583d2e,_0x583d2e);}}else{_0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,[_0xb487('0x1e'),'ContactId']);_0x2eb201[_0xb487('0x42')]=_0xb487('0x5f');_0x4d234c=as[_0xb487('0x60')](_0x598eec,_0x5c4b49['type'],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c[_0xb487('0x57')][_0xb487('0x62')],_0x4d234c['value'][_0xb487('0x11')]);}break;case _0xb487('0x63'):var _0x56e57d=_0x2eb201[_0xb487('0x57')][_0xb487('0x5d')](',')[_0xb487('0x20')](function(_0x119320){return Number(_0x119320);});_0x56e57d['forEach'](function(_0xe677ac){_0x213c63['or'](_0xb487('0x64'),'%,'+_0xe677ac+',%');});_0x3d2396=_[_0xb487('0x65')](_0x3d2396,_0x56e57d);break;case _0xb487('0x66'):if(_0x2eb201['operator']===_0xb487('0x5c')){_0xa14a70[_0xc872e7](_0xb487('0x67'),'%'+_0x2eb201[_0xb487('0x57')]+'%',null);}else{_0x5c4b49=_[_0xb487('0x55')](_0x2a9d81,['name',_0xb487('0x68')]);_0x2eb201[_0xb487('0x42')]='UserId';_0x4d234c=as['buildExpression'](_0x598eec,_0x5c4b49[_0xb487('0x32')],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c['value'][_0xb487('0x62')],_0x4d234c[_0xb487('0x57')][_0xb487('0x11')]);}break;case'plainBody':_0x4d234c=as[_0xb487('0x60')]('me',null,_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c['text'],_0x4d234c['value'][_0xb487('0x62')],_0x4d234c['value']['end']);break;}}else{var _0x4d234c=as[_0xb487('0x60')](_0x598eec,_0x5c4b49[_0xb487('0x32')],_0x2eb201);_0xa14a70[_0xc872e7](_0x4d234c[_0xb487('0x61')],_0x4d234c[_0xb487('0x57')][_0xb487('0x62')],_0x4d234c['value'][_0xb487('0x11')]);}}}else{var _0x2ffb32=_(_0x1e5dc9['query'])[_0xb487('0x35')]()[_0xb487('0x20')](function(_0x5aaa6d){return _[_0xb487('0x69')](_0x2a9d81,[_0xb487('0x1e'),_0x5aaa6d])?_0x5aaa6d:undefined;})[_0xb487('0x6a')]()['value']();if(!_['isEmpty'](_0x2ffb32)){_0x2ffb32[_0xb487('0x24')](function(_0x219758){if(_0x219758===_0xb487('0x6b')){_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x6c'),[]['concat'](_0x1e5dc9[_0xb487('0x36')][_0x219758]));}else if(_0x219758===_0xb487('0x6d')){var _0x1450bf=JSON[_0xb487('0x6e')](_0x1e5dc9['query'][_0x219758])[_0xb487('0x6f')];var _0x5dc5ed=JSON[_0xb487('0x6e')](_0x1e5dc9['query'][_0x219758])[_0xb487('0x70')];_0x1a5fbd['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1450bf,_0x5dc5ed);}else{if(_0x1e5dc9[_0xb487('0x36')][_0x219758]===_0xb487('0x71')){_0x1a5fbd[_0xb487('0x3f')]('i.'+_0x219758+_0xb487('0x72'));}else{_0x1a5fbd[_0xb487('0x3f')]('i.'+_0x219758+_0xb487('0x73'),_0x1e5dc9['query'][_0x219758]);}}});}if(_0x1e5dc9['query'][_0xb487('0x74')]){if(_0x1e5dc9[_0xb487('0x36')]['read']==0x1){_0x1a5fbd[_0xb487('0x58')]('`unreadMessages`\x20=\x200');}else{_0x1a5fbd['having'](_0xb487('0x75'));}}if(_0x1e5dc9['query'][_0xb487('0x76')]){_0x3d2396=_['isArray'](_0x1e5dc9['query'][_0xb487('0x76')])?_0x1e5dc9['query']['tag']:new Array(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x76')]);_0x3d2396['forEach'](function(_0x5d4aea){_0x213c63['or'](_0xb487('0x64'),'%,'+_0x5d4aea+',%');});}if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x77')]){var _0x327846=_0x1e5dc9['query']['filter'][_0xb487('0x78')]('\x5c','\x5c\x5c')[_0xb487('0x78')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x327846)){_0xa14a70['or']('i.id\x20LIKE\x20?',_0x327846+'%');}else if(qs[_0xb487('0x79')](_0x327846)){_0xa14a70['or'](_0xb487('0x7a'),_0x327846+'%');}else{_0xa14a70['or'](_0xb487('0x7b'),qs[_0xb487('0x7c')](_0x327846))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb487('0x7c')](_0x327846));}}}_0x1a5fbd[_0xb487('0x3f')](_0xa14a70);_0x1a5fbd[_0xb487('0x7d')](_0xb487('0x7e'));var _0x1b01a1={'type':db[_0xb487('0x7f')][_0xb487('0x80')]['SELECT'],'raw':!![]};var _0x3204ba=_0x1a5fbd[_0xb487('0x81')]();_0x3204ba[_0xb487('0x42')](_0xb487('0x7e'));_0x3204ba[_0xb487('0x42')](_0xb487('0x82'),'unreadMessages');if(_0x54a9ee[_0xb487('0x3d')]){_0x54a9ee[_0xb487('0x3d')]['forEach'](function(_0x1b12e8){var _0x2bc304=_0x1b12e8[0x0]===_0xb487('0x83')?_0x1b12e8[0x0]:'i.'+_0x1b12e8[0x0];_0x1a5fbd[_0xb487('0x3d')](_0x2bc304,_0x1b12e8[0x1]===_0xb487('0x84')?![]:!![]);});}if(!_[_0xb487('0x85')](_0x3d2396)){_0x1a5fbd[_0xb487('0x58')](_0x213c63);_0x3204ba['where'](_0xb487('0x86'),_0x3d2396);}BPromise[_0xb487('0x87')]()['then'](function(){if(!_0x228d1f){if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x6b')])return;_0x3204ba[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NOT\x20NULL');_0x1a5fbd[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1e5dc9[_0xb487('0x88')]['role']!=='agent')return;return _0x1e5dc9[_0xb487('0x88')][_0xb487('0x89')]({'attributes':['id'],'raw':!![]})[_0xb487('0x1b')](function(_0x596875){if(_[_0xb487('0x85')](_0x596875)){_0x3204ba[_0xb487('0x3f')]('i.MailAccountId\x20IS\x20NULL');_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x8a'));}else{_0x3204ba['where'](_0xb487('0x6c'),_[_0xb487('0x20')](_0x596875,'id'));_0x1a5fbd[_0xb487('0x3f')](_0xb487('0x6c'),_[_0xb487('0x20')](_0x596875,'id'));}});})[_0xb487('0x1b')](function(){if(_0x1e5dc9[_0xb487('0x88')][_0xb487('0x8b')]===_0xb487('0x8c')&&!_0x228d1f&&!_0x1e5dc9[_0xb487('0x36')][_0xb487('0x6b')])return[];return db[_0xb487('0x8d')][_0xb487('0x36')](_0x3204ba[_0xb487('0x8e')](),_0x1b01a1);})['then'](function(_0x3f95c9){_0x19622a[_0xb487('0x16')]=_0x3f95c9[_0xb487('0x3a')];if(_0x19622a[_0xb487('0x16')]===0x0)return[];return db['sequelize'][_0xb487('0x36')](_0x1d1d81[_0xb487('0x8e')](),_0x1b01a1)['then'](function(_0x1432dc){_0x57912d=_[_0xb487('0x8f')](_0x1432dc,'id');_0x1b01a1=_[_0xb487('0x90')](_0x1b01a1,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1e5dc9[_0xb487('0x36')][_0xb487('0x39')]){_0x54a9ee[_0xb487('0x38')][_0xb487('0x24')](function(_0x30c566){_0x1a5fbd[_0xb487('0x42')]('i.'+_0x30c566);});}else{_0x1a5fbd['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xb487('0x56'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x91'),_0xb487('0x92'));_0x1a5fbd[_0xb487('0x42')]('a.mandatoryDisposition',_0xb487('0x93'));_0x1a5fbd[_0xb487('0x42')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x1a5fbd[_0xb487('0x42')]('i.id');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x94'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x95'));_0x1a5fbd['field'](_0xb487('0x96'));_0x1a5fbd[_0xb487('0x42')]('i.closedAt');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x97'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x98'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x99'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9a'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9b'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9c'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9d'));_0x1a5fbd['field'](_0xb487('0x9e'));_0x1a5fbd[_0xb487('0x42')]('i.to');_0x1a5fbd[_0xb487('0x42')](_0xb487('0x9f'));_0x1a5fbd['field'](_0xb487('0xa0'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa1'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa2'),_0xb487('0xa3'));_0x1a5fbd['field'](_0xb487('0xa4'),_0xb487('0xa5'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xa6'),_0xb487('0xa7'));_0x1a5fbd[_0xb487('0x42')]('c.phone',_0xb487('0xa8'));_0x1a5fbd['field'](_0xb487('0xa9'),_0xb487('0xaa'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xab'),_0xb487('0xac'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xad'),_0xb487('0xae'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xaf'),_0xb487('0xb0'));_0x1a5fbd[_0xb487('0x42')](_0xb487('0xb1'),_0xb487('0x22'));}if(_0x54a9ee['limit'])_0x1a5fbd[_0xb487('0x14')](_0x54a9ee['limit']);if(_0x54a9ee['offset'])_0x1a5fbd[_0xb487('0x13')](_0x54a9ee['offset']);return db[_0xb487('0x8d')][_0xb487('0x36')](_0x1a5fbd[_0xb487('0x8e')](),_0x1b01a1);})[_0xb487('0x1b')](function(_0x1d6bd5){if(_0x1d6bd5[_0xb487('0x3a')]>0x0)_0x533d21[_0xb487('0x3f')]('ui.MailInteractionId\x20IN\x20?',_[_0xb487('0x20')](_0x1d6bd5,'id'));return db['sequelize'][_0xb487('0x36')](_0x533d21[_0xb487('0x8e')](),_0x1b01a1)['then'](function(_0x570ea2){var _0xeede64=_[_0xb487('0xb2')](_0x570ea2,_0xb487('0xb3'));var _0x364fd9=[];return db['Setting'][_0xb487('0x27')]({'attributes':['enableEmailPreview'],'raw':!![]})['then'](function(_0x1a4c31){var _0x5036b0=_0x1a4c31[_0xb487('0xb4')];_0x1d6bd5['forEach'](function(_0x5dfdde){_0x364fd9[_0xb487('0x25')](updateMailInteraction(_0x5dfdde,_0x57912d,_0xeede64,_0x5036b0));});return BPromise['all'](_0x364fd9);});});});})[_0xb487('0x1b')](function(_0x678ec7){_0x19622a[_0xb487('0xb5')]=_0x678ec7;return _0x19622a;})['then'](respondWithFilteredResult(_0x1583c6,_0x54a9ee))[_0xb487('0x2d')](handleError(_0x1583c6,null));};exports[_0xb487('0xb6')]=function(_0x30902c,_0x1a571d){var _0x169280={'raw':![],'where':{'id':_0x30902c[_0xb487('0xb7')]['id']}},_0x12114f={};_0x12114f[_0xb487('0x34')]=_['keys'](db[_0xb487('0x2f')][_0xb487('0x30')]);_0x12114f[_0xb487('0x36')]=_[_0xb487('0x35')](_0x30902c['query']);_0x12114f['filters']=_[_0xb487('0x37')](_0x12114f[_0xb487('0x34')],_0x12114f['query']);_0x169280[_0xb487('0x38')]=_[_0xb487('0x37')](_0x12114f[_0xb487('0x34')],qs[_0xb487('0x39')](_0x30902c[_0xb487('0x36')]['fields']));_0x169280[_0xb487('0x38')]=_0x169280[_0xb487('0x38')][_0xb487('0x3a')]?_0x169280[_0xb487('0x38')]:_0x12114f['model'];if(_0x30902c[_0xb487('0x36')][_0xb487('0xb8')]){_0x169280[_0xb487('0xb9')]=[{'all':!![]}];}_0x169280=_[_0xb487('0x90')]({},_0x169280,_0x30902c[_0xb487('0xba')]);return db[_0xb487('0x2f')][_0xb487('0x55')](_0x169280)[_0xb487('0x1b')](handleEntityNotFound(_0x1a571d,null))[_0xb487('0x1b')](respondWithResult(_0x1a571d,null))['catch'](handleError(_0x1a571d,null));};exports[_0xb487('0xbb')]=function(_0x1d4d01,_0x26a6fe){return db[_0xb487('0x2f')][_0xb487('0xbb')](_0x1d4d01[_0xb487('0xbc')],{})[_0xb487('0x1b')](respondWithResult(_0x26a6fe,0xc9))[_0xb487('0x2d')](handleError(_0x26a6fe,null));};exports[_0xb487('0x19')]=function(_0x3eb280,_0xef42bd){if(_0x3eb280[_0xb487('0xbc')]['id']){delete _0x3eb280[_0xb487('0xbc')]['id'];}return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x3eb280[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0xef42bd,null))[_0xb487('0x1b')](saveUpdates(_0x3eb280[_0xb487('0xbc')],null))[_0xb487('0x1b')](respondWithResult(_0xef42bd,null))[_0xb487('0x2d')](handleError(_0xef42bd,null));};exports[_0xb487('0x1a')]=function(_0x1c4fe8,_0x22d993){return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x1c4fe8[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x22d993,null))[_0xb487('0x1b')](removeEntity(_0x22d993,null))[_0xb487('0x2d')](handleError(_0x22d993,null));};exports[_0xb487('0xbd')]=function(_0x594b60,_0x333b17){return db[_0xb487('0x2f')]['describe']()['then'](respondWithResult(_0x333b17,null))[_0xb487('0x2d')](handleError(_0x333b17,null));};exports[_0xb487('0xbe')]=function(_0xeda434,_0x4fd229){return db[_0xb487('0x26')]['find']({'where':{'id':_0xeda434[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x4fd229,null))['then'](function(_0x4c54a4){if(_0x4c54a4){return _0x4c54a4[_0xb487('0xbe')](_0xeda434['body'][_0xb487('0xbf')],_[_0xb487('0xc0')](_0xeda434[_0xb487('0xbc')],['ids','id'])||{});}})[_0xb487('0x1b')](respondWithResult(_0x4fd229,null))[_0xb487('0x2d')](handleError(_0x4fd229,null));};exports[_0xb487('0xc1')]=function(_0x296b2f,_0x4f2833){var _0x268e76={'raw':![],'where':{}};var _0x653a5d={};var _0x143918={'count':0x0,'rows':[]};return db['MailInteraction'][_0xb487('0x27')]({'where':{'id':_0x296b2f[_0xb487('0xb7')]['id']}})['then'](handleEntityNotFound(_0x4f2833,null))[_0xb487('0x1b')](function(_0x4da7bb){if(_0x4da7bb){_0x653a5d['model']=_['keys'](db['MailMessage']['rawAttributes']);_0x653a5d['query']=_['keys'](_0x296b2f['query']);_0x653a5d[_0xb487('0xc2')]=_[_0xb487('0x37')](_0x653a5d[_0xb487('0x34')],_0x653a5d['query']);_0x268e76[_0xb487('0x38')]=_[_0xb487('0x37')](_0x653a5d['model'],qs['fields'](_0x296b2f[_0xb487('0x36')][_0xb487('0x39')]));_0x268e76['attributes']=_0x268e76['attributes'][_0xb487('0x3a')]?_0x268e76[_0xb487('0x38')]:_0x653a5d[_0xb487('0x34')];if(!_0x296b2f[_0xb487('0x36')][_0xb487('0x3b')]('nolimit')){_0x268e76[_0xb487('0x14')]=qs[_0xb487('0x14')](_0x296b2f['query'][_0xb487('0x14')]);_0x268e76[_0xb487('0x13')]=qs['offset'](_0x296b2f['query'][_0xb487('0x13')]);}_0x268e76[_0xb487('0x3d')]=qs[_0xb487('0x3e')](_0x296b2f['query'][_0xb487('0x3e')]);_0x268e76[_0xb487('0x3f')]=qs[_0xb487('0xc2')](_['pick'](_0x296b2f[_0xb487('0x36')],_0x653a5d[_0xb487('0xc2')]));_0x268e76[_0xb487('0x3f')][_0xb487('0xb3')]=_0x4da7bb['id'];if(_0x296b2f[_0xb487('0x36')][_0xb487('0x77')]){_0x268e76[_0xb487('0x3f')]=_['merge'](_0x268e76[_0xb487('0x3f')],{'$or':_[_0xb487('0x20')](_0x268e76[_0xb487('0x38')],function(_0x965c49){var _0x3689ab={};_0x3689ab[_0x965c49]={'$like':'%'+_0x296b2f['query'][_0xb487('0x77')]+'%'};return _0x3689ab;})});}if(_0x296b2f['query']['$gte']){var _0x54478f=_0x296b2f[_0xb487('0x36')][_0xb487('0x6f')][_0xb487('0x5d')](',');var _0x4883ab={};_0x4883ab[_0x54478f[0x0]]={'$gte':moment(_0x54478f[0x1])['format'](_0xb487('0xc3'))};_0x268e76['where']=_[_0xb487('0x90')](_0x268e76[_0xb487('0x3f')],_0x4883ab);}_0x268e76=_['merge']({},_0x268e76,_0x296b2f[_0xb487('0xba')]);return db[_0xb487('0x26')]['count']({'where':_0x268e76[_0xb487('0x3f')]})[_0xb487('0x1b')](function(_0x261649){_0x143918['count']=_0x261649;if(_0x296b2f['query']['includeAll']){_0x268e76['include']=[{'all':!![]}];}return db[_0xb487('0x26')]['findAll'](_0x268e76);})[_0xb487('0x1b')](function(_0x4f59b9){if(_0x296b2f[_0xb487('0x36')]['inlineCss']===_0xb487('0xc4')){for(var _0xc2f23e=0x0;_0xc2f23e<_0x4f59b9[_0xb487('0x3a')];_0xc2f23e++){_0x4f59b9[_0xc2f23e][_0xb487('0xbc')]=juice(_0x4f59b9[_0xc2f23e][_0xb487('0xbc')]);}}_0x143918[_0xb487('0xb5')]=_0x4f59b9;return _0x143918;});}})[_0xb487('0x1b')](respondWithFilteredResult(_0x4f2833,_0x268e76))['catch'](handleError(_0x4f2833,null));};exports[_0xb487('0xc5')]=function(_0x39af78,_0x47f18a){return db['MailInteraction'][_0xb487('0x55')]({'where':{'id':_0x39af78[_0xb487('0xb7')]['id']}})[_0xb487('0x1b')](handleEntityNotFound(_0x47f18a,null))['then'](function(_0x211698){if(_0x211698){return _0x211698['setTags'](_0x39af78[_0xb487('0xbc')][_0xb487('0xbf')],_[_0xb487('0xc0')](_0x39af78['body'],['ids','id'])||{})[_0xb487('0xc6')](function(){return db[_0xb487('0x63')][_0xb487('0xc7')]({'attributes':['id','name',_0xb487('0x43')],'where':{'id':_0x39af78[_0xb487('0xbc')][_0xb487('0xbf')]}});})['then'](function(_0x157351){socket[_0xb487('0xc8')]('mailInteractionTags:save',{'id':Number(_0x39af78['params']['id']),'tags':_0x157351||[]});return{'id':Number(_0x39af78['params']['id']),'tags':_0x157351||[]};});}})[_0xb487('0x1b')](respondWithResult(_0x47f18a,null))[_0xb487('0x2d')](handleError(_0x47f18a,null));};exports['removeTags']=function(_0x1b4bc9,_0x56b216){return db[_0xb487('0x2f')][_0xb487('0x55')]({'where':{'id':_0x1b4bc9[_0xb487('0xb7')]['id']}})['then'](handleEntityNotFound(_0x56b216,null))[_0xb487('0x1b')](function(_0x686145){if(_0x686145){return _0x686145[_0xb487('0xc9')](_0x1b4bc9['query'][_0xb487('0xbf')]);}})[_0xb487('0x1b')](respondWithStatusCode(_0x56b216,null))['catch'](handleError(_0x56b216,null));};exports[_0xb487('0xca')]=function(_0x3410db,_0x167906){var _0x4ee7e6=moment()['unix']()[_0xb487('0x8e')]();var _0x2e18b0=path[_0xb487('0xcb')](config[_0xb487('0xcc')],_0xb487('0xcd'),_0xb487('0xce'),_0xb487('0xcf'));var _0x427de6=path[_0xb487('0xcb')](config['root'],_0xb487('0xcd'),'files','attachments');var _0x3c101a=path[_0xb487('0xcb')](_0x2e18b0,_0x4ee7e6);var _0x1f79c8=util['format'](_0xb487('0xd0'),_0x3410db['params']['id'],_0x4ee7e6);var _0xe8caca=path[_0xb487('0xcb')](_0x2e18b0,_0x1f79c8);var _0x49ee71=[];if(_0x3410db[_0xb487('0x36')]['attachments']){_0x49ee71[_0xb487('0x25')]({'model':db[_0xb487('0xd1')],'as':_0xb487('0xd2'),'raw':!![]});}var _0x41be14=[{'model':db[_0xb487('0x26')],'as':'Messages','attributes':['id','body',_0xb487('0x46'),'to','cc',_0xb487('0xd3'),_0xb487('0xd4'),_0xb487('0x6d')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x49ee71}];return db['MailInteraction'][_0xb487('0x55')]({'where':{'id':_0x3410db[_0xb487('0xb7')]['id']},'include':_0x41be14})['then'](handleEntityNotFound(_0x167906,null))[_0xb487('0x1b')](function(_0x226651){if(_0x226651&&_0x226651[_0xb487('0xd5')]){var _0x462777=_0x226651[_0xb487('0xd6')]({'plain':!![]});fs[_0xb487('0xd7')](_0x3c101a);return BPromise[_0xb487('0xd8')](_0x462777[_0xb487('0xd5')],function(_0x4c8098,_0x214c17){var _0x5d286b={'from':_0x4c8098[_0xb487('0x46')],'to':_0x4c8098['to'],'subject':_0x4c8098[_0xb487('0xd4')],'html':htmlEntities['decode'](_0x4c8098[_0xb487('0xbc')]),'headers':{'Date':moment(_0x4c8098[_0xb487('0x6d')])['format'](_0xb487('0xd9'))},'attachments':[]};if(_0x4c8098['cc']){_0x5d286b[_0xb487('0xda')]['Cc']=_0x4c8098['cc'];}if(_0x4c8098[_0xb487('0xd3')]){_0x5d286b[_0xb487('0xda')][_0xb487('0xdb')]=_0x4c8098['bcc'];}return new BPromise(function(_0x33ceda,_0x5c1147){if(_0x4c8098[_0xb487('0xd2')]){for(var _0x1d6465=0x0;_0x1d6465<_0x4c8098[_0xb487('0xd2')][_0xb487('0x3a')];_0x1d6465++){var _0x2bbb59=_0x4c8098[_0xb487('0xd2')][_0x1d6465];var _0x39774e=path[_0xb487('0xcb')](_0x427de6,_0x2bbb59[_0xb487('0xdc')]);if(fs['existsSync'](_0x39774e)){_0x5d286b[_0xb487('0xdd')][_0xb487('0x25')]({'name':_0x2bbb59[_0xb487('0x1e')],'contentType':_0x2bbb59[_0xb487('0x32')],'data':fs[_0xb487('0xde')](_0x39774e)});}}}emlformat[_0xb487('0xdf')](_0x5d286b,function(_0x3fc128,_0xf4d7d5){if(_0x3fc128)return _0x5c1147(_0x3fc128);fs[_0xb487('0xe0')](path['join'](_0x3c101a,util[_0xb487('0xe1')](_0xb487('0xe2'),_0x214c17)),_0xf4d7d5);return _0x33ceda(_0xf4d7d5);});});})[_0xb487('0x1b')](function(){return new BPromise(function(_0x2e16f0,_0x58bbfc){zipdir(_0x3c101a,{'saveTo':_0xe8caca},function(_0x252376,_0x531516){if(_0x252376)return _0x58bbfc(_0x252376);return _0x2e16f0(_0x531516);});})[_0xb487('0x1b')](function(){return new BPromise(function(_0x232506,_0x4d5235){rimraf(_0x3c101a,function(_0x5d3bea){if(_0x5d3bea)_0x4d5235(_0x5d3bea);return _0x232506();});});})[_0xb487('0x1b')](function(){return _0x167906['download'](_0xe8caca,_0x1f79c8,function(_0x32af15){if(!_0x32af15)fs[_0xb487('0xe3')](_0xe8caca);});});});}else{return _0x167906[_0xb487('0xf')](0xc8);}})[_0xb487('0x2d')](handleError(_0x167906,null));};
\ No newline at end of file
+var _0x0aed=['find','unreadMessages','value','having','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','MailInteraction','a.key','Account.key','a.mandatoryDisposition','i.createdAt','i.updatedAt','i.lastMsgDirection','i.disposition','i.secondDisposition','i.substatus','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','all','rows','catch','show','params','rawAttributes','includeAll','include','create','body','describe','addMessage','ids','omit','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','true','setTags','emit','mailInteractionTags:save','removeTags','unix','files','tmp','join','root','attachments','Attachment','Attachments','Messages','bcc','subject','createdAt','get','mkdirSync','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','build','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','register','end','status','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','MailMessage','out','plainBody','lastMsgText','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','field','color','select','u.id','u.fullname','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','a.id\x20=\x20i.MailAccountId','mail_messages','it.MailInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions'];(function(_0x584e4f,_0x267906){var _0x3a7661=function(_0x59d5f7){while(--_0x59d5f7){_0x584e4f['push'](_0x584e4f['shift']());}};_0x3a7661(++_0x267906);}(_0x0aed,0x8c));var _0xd0ae=function(_0x1e6b59,_0x5eca5d){_0x1e6b59=_0x1e6b59-0x0;var _0x40d7c5=_0x0aed[_0x1e6b59];return _0x40d7c5;};'use strict';var emlformat=require(_0xd0ae('0x0'));var rimraf=require(_0xd0ae('0x1'));var zipdir=require(_0xd0ae('0x2'));var moment=require(_0xd0ae('0x3'));var BPromise=require(_0xd0ae('0x4'));var util=require(_0xd0ae('0x5'));var path=require(_0xd0ae('0x6'));var fs=require('fs');var _=require('lodash');var squel=require(_0xd0ae('0x7'));var juice=require('juice');var Redis=require(_0xd0ae('0x8'));var qs=require(_0xd0ae('0x9'));var as=require(_0xd0ae('0xa'));var logger=require(_0xd0ae('0xb'))('api');var config=require('../../config/environment');var db=require(_0xd0ae('0xc'))['db'];var htmlEntities=require(_0xd0ae('0xd'));config[_0xd0ae('0xe')]=_[_0xd0ae('0xf')](config[_0xd0ae('0xe')],{'host':_0xd0ae('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd0ae('0xe')]));require(_0xd0ae('0x11'))[_0xd0ae('0x12')](socket);function respondWithStatusCode(_0x2b3cf0,_0x55fc25){_0x55fc25=_0x55fc25||0xcc;return function(_0x1a0468){if(_0x1a0468){return _0x2b3cf0['sendStatus'](_0x55fc25);}return _0x2b3cf0['status'](_0x55fc25)[_0xd0ae('0x13')]();};}function respondWithResult(_0x25e8f3,_0x212522){_0x212522=_0x212522||0xc8;return function(_0xcb3529){if(_0xcb3529){return _0x25e8f3[_0xd0ae('0x14')](_0x212522)[_0xd0ae('0x15')](_0xcb3529);}};}function respondWithFilteredResult(_0x10c5f2,_0x20ebed){return function(_0x2d7ae4){if(_0x2d7ae4){var _0x58cdff=typeof _0x20ebed['offset']===_0xd0ae('0x16')&&typeof _0x20ebed[_0xd0ae('0x17')]===_0xd0ae('0x16');var _0x500d7e=_0x2d7ae4[_0xd0ae('0x18')];var _0x59a442=_0x58cdff?0x0:_0x20ebed[_0xd0ae('0x19')];var _0x611b64=_0x58cdff?_0x2d7ae4[_0xd0ae('0x18')]:_0x20ebed[_0xd0ae('0x19')]+_0x20ebed[_0xd0ae('0x17')];var _0x571e07;if(_0x611b64>=_0x500d7e){_0x611b64=_0x500d7e;_0x571e07=0xc8;}else{_0x571e07=0xce;}_0x10c5f2[_0xd0ae('0x14')](_0x571e07);return _0x10c5f2[_0xd0ae('0x1a')](_0xd0ae('0x1b'),_0x59a442+'-'+_0x611b64+'/'+_0x500d7e)[_0xd0ae('0x15')](_0x2d7ae4);}return null;};}function saveUpdates(_0x437fdf){return function(_0x563569){if(_0x563569){return _0x563569[_0xd0ae('0x1c')](_0x437fdf)[_0xd0ae('0x1d')](function(_0x469d9f){return _0x469d9f;});}return null;};}function removeEntity(_0x907d9){return function(_0x1cf7cd){if(_0x1cf7cd){return _0x1cf7cd[_0xd0ae('0x1e')]()['then'](function(){_0x907d9['status'](0xcc)[_0xd0ae('0x13')]();});}};}function handleEntityNotFound(_0x301cce){return function(_0xd0bba8){if(!_0xd0bba8){_0x301cce[_0xd0ae('0x1f')](0x194);}return _0xd0bba8;};}function handleError(_0x1fdf93,_0x488c10){_0x488c10=_0x488c10||0x1f4;return function(_0x36529e){logger[_0xd0ae('0x20')](_0x36529e[_0xd0ae('0x21')]);if(_0x36529e[_0xd0ae('0x22')]){delete _0x36529e['name'];}_0x1fdf93[_0xd0ae('0x14')](_0x488c10)[_0xd0ae('0x23')](_0x36529e);};}function getInteractionUsers(_0xc27dd1,_0x3682c6){return new BPromise(function(_0x48ea10,_0x33cc68){try{if(_0x3682c6[_0xc27dd1['id']]){_0xc27dd1[_0xd0ae('0x24')]=_[_0xd0ae('0x25')](_0x3682c6[_0xc27dd1['id']],function(_0x44509d){return{'id':_0x44509d['id'],'fullname':_0x44509d[_0xd0ae('0x26')]};});}}catch(_0x1d346a){_0x33cc68(_0x1d346a);}_0x48ea10(_0xc27dd1);});}function getInteractionTags(_0x212fb0,_0xc0d1b6){return new BPromise(function(_0xcd7ca0,_0x4c5987){try{if(_0x212fb0[_0xd0ae('0x27')]){_0x212fb0[_0xd0ae('0x28')]=[];_0x212fb0['TagIds']['split'](',')[_0xd0ae('0x29')](function(_0x50dc65){_0x212fb0[_0xd0ae('0x28')][_0xd0ae('0x2a')](_0xc0d1b6[_0x50dc65]);});}delete _0x212fb0[_0xd0ae('0x27')];}catch(_0x41983e){_0x4c5987(_0x41983e);}_0xcd7ca0(_0x212fb0);});}function getLastMessageText(_0x245763){return new BPromise(function(_0x34ba45,_0x3dc137){return db[_0xd0ae('0x2b')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x245763['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xd0ae('0x2c')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xd0ae('0x2d')],'order':'-id','raw':!![]})[_0xd0ae('0x1d')](function(_0x50e2eb){if(_0x50e2eb&&_0x50e2eb['plainBody']){_0x245763[_0xd0ae('0x2e')]=_['trimStart'](_0x50e2eb['plainBody']);}_0x34ba45(_0x245763);})['catch'](function(_0x360ff6){_0x3dc137(_0x360ff6);});});}function updateMailInteraction(_0x9531dd,_0x574838,_0x48bed1,_0x178cc1){return new BPromise(function(_0x5c75e8,_0x34f1e4){return getInteractionUsers(_0x9531dd,_0x48bed1)[_0xd0ae('0x1d')](function(_0x305d7d){return getInteractionTags(_0x305d7d,_0x574838);})[_0xd0ae('0x1d')](function(_0x302ff5){if(_0x178cc1){_0x5c75e8(getLastMessageText(_0x302ff5));}else{_0x5c75e8(_0x302ff5);}})['catch'](function(_0x3007aa){_0x34f1e4(_0x3007aa);});});}exports['index']=function(_0x574ee0,_0x167d3e){var _0x3d2ee9={},_0x507ea3={},_0x3ebc87={'count':0x0,'rows':[]};var _0x5807e=_['map'](db['MailInteraction']['rawAttributes'],function(_0x2434a2){return{'name':_0x2434a2[_0xd0ae('0x2f')],'type':_0x2434a2['type'][_0xd0ae('0x30')]};});_0x507ea3['model']=_[_0xd0ae('0x25')](_0x5807e,_0xd0ae('0x22'));_0x507ea3[_0xd0ae('0x31')]=_[_0xd0ae('0x32')](_0x574ee0[_0xd0ae('0x31')]);_0x507ea3['filters']=_[_0xd0ae('0x33')](_0x507ea3[_0xd0ae('0x34')],_0x507ea3[_0xd0ae('0x31')]);_0x3d2ee9[_0xd0ae('0x35')]=_[_0xd0ae('0x33')](_0x507ea3['model'],qs['fields'](_0x574ee0['query'][_0xd0ae('0x36')]));_0x3d2ee9[_0xd0ae('0x35')]=_0x3d2ee9['attributes'][_0xd0ae('0x37')]?_0x3d2ee9[_0xd0ae('0x35')]:_0x507ea3['model'];if(!_0x574ee0['query'][_0xd0ae('0x38')](_0xd0ae('0x39'))){_0x3d2ee9[_0xd0ae('0x17')]=qs[_0xd0ae('0x17')](_0x574ee0['query'][_0xd0ae('0x17')]);_0x3d2ee9['offset']=qs[_0xd0ae('0x19')](_0x574ee0[_0xd0ae('0x31')]['offset']);}_0x3d2ee9[_0xd0ae('0x3a')]=qs['sort'](_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x3b')]);_0x3d2ee9[_0xd0ae('0x3c')]=qs['filters'](_[_0xd0ae('0x3d')](_0x574ee0[_0xd0ae('0x31')],_0x507ea3[_0xd0ae('0x3e')]),_0x5807e);var _0x59982c=[];var _0xae7022=squel['select']()[_0xd0ae('0x3f')]('id')['field'](_0xd0ae('0x22'))[_0xd0ae('0x3f')](_0xd0ae('0x40'))['from']('tools_tags');var _0x317d0b=squel[_0xd0ae('0x41')]()[_0xd0ae('0x3f')](_0xd0ae('0x42'))[_0xd0ae('0x3f')](_0xd0ae('0x43'))[_0xd0ae('0x3f')]('ui.MailInteractionId')[_0xd0ae('0x44')](_0xd0ae('0x45'),'ui')[_0xd0ae('0x46')](_0xd0ae('0x47'),'u',_0xd0ae('0x48'));var _0x45d91a=squel[_0xd0ae('0x41')]()['from'](_0xd0ae('0x49'),'i')[_0xd0ae('0x46')](_0xd0ae('0x4a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xd0ae('0x46')](_0xd0ae('0x47'),'o','o.id\x20=\x20i.UserId')[_0xd0ae('0x46')]('mail_accounts','a',_0xd0ae('0x4b'))[_0xd0ae('0x46')](_0xd0ae('0x4c'),'me','me.MailInteractionId\x20=\x20i.id')['left_join']('mail_interaction_has_tags','it',_0xd0ae('0x4d'))[_0xd0ae('0x46')](_0xd0ae('0x4e'),'t',_0xd0ae('0x4f'));var _0x3b8b94=squel[_0xd0ae('0x50')]();var _0x200669=[];var _0x450ec6=squel[_0xd0ae('0x50')]();var _0x3849d5;if(_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x51')]){_0x3849d5=as[_0xd0ae('0x52')](_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x51')]);var _0x1752fa=_0x3849d5[_0xd0ae('0x53')];for(var _0x8ea226=0x0;_0x8ea226<_0x3849d5[_0xd0ae('0x54')][_0xd0ae('0x37')];_0x8ea226++){var _0x442290=_0x3849d5[_0xd0ae('0x54')][_0x8ea226];var _0x3f5ff5='i';var _0x28984c=_[_0xd0ae('0x55')](_0x5807e,[_0xd0ae('0x22'),_0x442290[_0xd0ae('0x3f')]]);if(!_0x28984c){switch(_0x442290[_0xd0ae('0x3f')]){case _0xd0ae('0x56'):if(_0x442290[_0xd0ae('0x57')]==0x1){_0x45d91a['having']('`'+_0x442290[_0xd0ae('0x3f')]+'`\x20=\x200');}else{_0x45d91a[_0xd0ae('0x58')]('`'+_0x442290[_0xd0ae('0x3f')]+'`\x20>\x200');}break;case _0xd0ae('0x59'):if(_0x442290[_0xd0ae('0x5a')]===_0xd0ae('0x5b')){if(_0x442290[_0xd0ae('0x57')][_0xd0ae('0x5c')]('\x20')[_0xd0ae('0x37')]>0x1){_0x3b8b94[_0x1752fa](_0xd0ae('0x5d'),qs[_0xd0ae('0x5e')](_0x442290[_0xd0ae('0x57')]),null);}else{var _0x1c9a4b='%'+_0x442290[_0xd0ae('0x57')]+'%';_0x3b8b94[_0x1752fa](_0xd0ae('0x5f'),_0x1c9a4b,_0x1c9a4b,_0x1c9a4b);}}else{_0x28984c=_[_0xd0ae('0x55')](_0x5807e,['name',_0xd0ae('0x60')]);_0x442290[_0xd0ae('0x3f')]=_0xd0ae('0x60');_0x5a4e05=as[_0xd0ae('0x61')](_0x3f5ff5,_0x28984c['type'],_0x442290);_0x3b8b94[_0x1752fa](_0x5a4e05[_0xd0ae('0x62')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x63')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x13')]);}break;case _0xd0ae('0x64'):var _0x334b26=_0x442290['value']['split'](',')[_0xd0ae('0x25')](function(_0x1cc13c){return Number(_0x1cc13c);});_0x334b26['forEach'](function(_0x4a32d7){_0x450ec6['or'](_0xd0ae('0x65'),'%,'+_0x4a32d7+',%');});_0x200669=_['union'](_0x200669,_0x334b26);break;case _0xd0ae('0x66'):if(_0x442290[_0xd0ae('0x5a')]===_0xd0ae('0x5b')){_0x3b8b94[_0x1752fa](_0xd0ae('0x67'),'%'+_0x442290[_0xd0ae('0x57')]+'%',null);}else{_0x28984c=_[_0xd0ae('0x55')](_0x5807e,[_0xd0ae('0x22'),_0xd0ae('0x68')]);_0x442290[_0xd0ae('0x3f')]=_0xd0ae('0x68');_0x5a4e05=as[_0xd0ae('0x61')](_0x3f5ff5,_0x28984c[_0xd0ae('0x69')],_0x442290);_0x3b8b94[_0x1752fa](_0x5a4e05[_0xd0ae('0x62')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x63')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x13')]);}break;case _0xd0ae('0x2d'):_0x5a4e05=as[_0xd0ae('0x61')]('me',null,_0x442290);_0x3b8b94[_0x1752fa](_0x5a4e05[_0xd0ae('0x62')],_0x5a4e05[_0xd0ae('0x57')]['start'],_0x5a4e05[_0xd0ae('0x57')]['end']);break;}}else{var _0x5a4e05=as[_0xd0ae('0x61')](_0x3f5ff5,_0x28984c[_0xd0ae('0x69')],_0x442290);_0x3b8b94[_0x1752fa](_0x5a4e05[_0xd0ae('0x62')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x63')],_0x5a4e05[_0xd0ae('0x57')][_0xd0ae('0x13')]);}}}else{var _0x1ce197=_(_0x574ee0[_0xd0ae('0x31')])['keys']()[_0xd0ae('0x25')](function(_0x18b7b9){return _[_0xd0ae('0x6a')](_0x5807e,[_0xd0ae('0x22'),_0x18b7b9])?_0x18b7b9:undefined;})[_0xd0ae('0x6b')]()[_0xd0ae('0x57')]();if(!_[_0xd0ae('0x6c')](_0x1ce197)){_0x1ce197['forEach'](function(_0x5559e6){if(_0x5559e6==='MailAccountId'){_0x45d91a[_0xd0ae('0x3c')](_0xd0ae('0x6d'),[][_0xd0ae('0x6e')](_0x574ee0[_0xd0ae('0x31')][_0x5559e6]));}else if(_0x5559e6==='createdAt'){var _0x23213f=JSON['parse'](_0x574ee0[_0xd0ae('0x31')][_0x5559e6])[_0xd0ae('0x6f')];var _0x2165f4=JSON[_0xd0ae('0x70')](_0x574ee0['query'][_0x5559e6])[_0xd0ae('0x71')];_0x45d91a[_0xd0ae('0x3c')](_0xd0ae('0x72'),_0x23213f,_0x2165f4);}else{if(_0x574ee0['query'][_0x5559e6]===_0xd0ae('0x73')){_0x45d91a[_0xd0ae('0x3c')]('i.'+_0x5559e6+_0xd0ae('0x74'));}else{_0x45d91a[_0xd0ae('0x3c')]('i.'+_0x5559e6+_0xd0ae('0x75'),_0x574ee0[_0xd0ae('0x31')][_0x5559e6]);}}});}if(_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x76')]){if(_0x574ee0['query'][_0xd0ae('0x76')]==0x1){_0x45d91a[_0xd0ae('0x58')]('`unreadMessages`\x20=\x200');}else{_0x45d91a[_0xd0ae('0x58')](_0xd0ae('0x77'));}}if(_0x574ee0[_0xd0ae('0x31')]['tag']){_0x200669=_['isArray'](_0x574ee0['query'][_0xd0ae('0x78')])?_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x78')]:new Array(_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x78')]);_0x200669[_0xd0ae('0x29')](function(_0x178f43){_0x450ec6['or'](_0xd0ae('0x65'),'%,'+_0x178f43+',%');});}if(_0x574ee0[_0xd0ae('0x31')]['filter']){var _0x8b0da7=_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x79')][_0xd0ae('0x7a')]('\x5c','\x5c\x5c')[_0xd0ae('0x7a')](/'/g,'\x27\x27');if(qs[_0xd0ae('0x7b')](_0x8b0da7)){_0x3b8b94['or']('i.id\x20LIKE\x20?',_0x8b0da7+'%');}else if(qs[_0xd0ae('0x7c')](_0x8b0da7)){_0x3b8b94['or'](_0xd0ae('0x7d'),_0x8b0da7+'%');}else{_0x3b8b94['or'](_0xd0ae('0x7e'),qs[_0xd0ae('0x5e')](_0x8b0da7))['or'](_0xd0ae('0x7f'),qs[_0xd0ae('0x5e')](_0x8b0da7));}}}_0x45d91a[_0xd0ae('0x3c')](_0x3b8b94);_0x45d91a[_0xd0ae('0x80')](_0xd0ae('0x81'));var _0x559d56={'type':db[_0xd0ae('0x82')][_0xd0ae('0x83')][_0xd0ae('0x84')],'raw':!![]};var _0x3b258b=_0x45d91a[_0xd0ae('0x85')]();_0x3b258b[_0xd0ae('0x3f')]('i.id');_0x3b258b[_0xd0ae('0x3f')](_0xd0ae('0x86'),_0xd0ae('0x56'));if(_0x3d2ee9['order']){_0x3d2ee9[_0xd0ae('0x3a')]['forEach'](function(_0x2480c1){var _0x41e930=_0x2480c1[0x0]===_0xd0ae('0x87')?_0x2480c1[0x0]:'i.'+_0x2480c1[0x0];_0x45d91a['order'](_0x41e930,_0x2480c1[0x1]==='DESC'?![]:!![]);});}if(!_[_0xd0ae('0x6c')](_0x200669)){_0x45d91a['having'](_0x450ec6);_0x3b258b[_0xd0ae('0x3c')]('t.id\x20IN\x20?',_0x200669);}BPromise['resolve']()[_0xd0ae('0x1d')](function(){if(!_0x3849d5){if(_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x88')])return;_0x3b258b['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');_0x45d91a[_0xd0ae('0x3c')](_0xd0ae('0x89'));return;}if(_0x574ee0['user']['role']!=='agent')return;return _0x574ee0[_0xd0ae('0x8a')][_0xd0ae('0x8b')]({'attributes':['id'],'raw':!![]})[_0xd0ae('0x1d')](function(_0x59d648){if(_[_0xd0ae('0x6c')](_0x59d648)){_0x3b258b[_0xd0ae('0x3c')](_0xd0ae('0x8c'));_0x45d91a['where']('i.MailAccountId\x20IS\x20NULL');}else{_0x3b258b[_0xd0ae('0x3c')]('i.MailAccountId\x20IN\x20?',_[_0xd0ae('0x25')](_0x59d648,'id'));_0x45d91a[_0xd0ae('0x3c')]('i.MailAccountId\x20IN\x20?',_[_0xd0ae('0x25')](_0x59d648,'id'));}});})['then'](function(){if(_0x574ee0['user']['role']===_0xd0ae('0x8d')&&!_0x3849d5&&!_0x574ee0[_0xd0ae('0x31')]['MailAccountId'])return[];return db[_0xd0ae('0x8e')]['query'](_0x3b258b[_0xd0ae('0x8f')](),_0x559d56);})[_0xd0ae('0x1d')](function(_0x49a5c3){_0x3ebc87[_0xd0ae('0x18')]=_0x49a5c3[_0xd0ae('0x37')];if(_0x3ebc87[_0xd0ae('0x18')]===0x0)return[];return db[_0xd0ae('0x8e')][_0xd0ae('0x31')](_0xae7022[_0xd0ae('0x8f')](),_0x559d56)[_0xd0ae('0x1d')](function(_0x156936){_0x59982c=_[_0xd0ae('0x90')](_0x156936,'id');_0x559d56=_[_0xd0ae('0x91')](_0x559d56,{'model':db[_0xd0ae('0x92')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x574ee0[_0xd0ae('0x31')][_0xd0ae('0x36')]){_0x3d2ee9['attributes']['forEach'](function(_0x5646a4){_0x45d91a[_0xd0ae('0x3f')]('i.'+_0x5646a4);});}else{_0x45d91a[_0xd0ae('0x3f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd0ae('0x56'));_0x45d91a['field'](_0xd0ae('0x93'),_0xd0ae('0x94'));_0x45d91a['field'](_0xd0ae('0x95'),'Account.mandatoryDisposition');_0x45d91a[_0xd0ae('0x3f')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName');_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x81'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x96'));_0x45d91a['field'](_0xd0ae('0x97'));_0x45d91a[_0xd0ae('0x3f')]('i.closed');_0x45d91a[_0xd0ae('0x3f')]('i.closedAt');_0x45d91a[_0xd0ae('0x3f')]('i.attach');_0x45d91a[_0xd0ae('0x3f')]('i.lastMsgAt');_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x98'));_0x45d91a[_0xd0ae('0x3f')]('i.subject');_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x99'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x9a'));_0x45d91a['field']('i.thirdDisposition');_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x9b'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x9c'));_0x45d91a['field'](_0xd0ae('0x9d'));_0x45d91a[_0xd0ae('0x3f')]('i.MailAccountId');_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x9e'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0x9f'),_0xd0ae('0xa0'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0xa1'),_0xd0ae('0xa2'));_0x45d91a['field'](_0xd0ae('0xa3'),_0xd0ae('0xa4'));_0x45d91a[_0xd0ae('0x3f')]('c.phone','Contact.phone');_0x45d91a['field'](_0xd0ae('0xa5'),_0xd0ae('0xa6'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0xa7'),_0xd0ae('0xa8'));_0x45d91a['field'](_0xd0ae('0xa9'),_0xd0ae('0xaa'));_0x45d91a['field']('o.internal',_0xd0ae('0xab'));_0x45d91a[_0xd0ae('0x3f')](_0xd0ae('0xac'),'TagIds');}if(_0x3d2ee9[_0xd0ae('0x17')])_0x45d91a[_0xd0ae('0x17')](_0x3d2ee9[_0xd0ae('0x17')]);if(_0x3d2ee9[_0xd0ae('0x19')])_0x45d91a[_0xd0ae('0x19')](_0x3d2ee9[_0xd0ae('0x19')]);return db[_0xd0ae('0x8e')][_0xd0ae('0x31')](_0x45d91a[_0xd0ae('0x8f')](),_0x559d56);})[_0xd0ae('0x1d')](function(_0x2680d4){if(_0x2680d4['length']>0x0)_0x317d0b[_0xd0ae('0x3c')](_0xd0ae('0xad'),_[_0xd0ae('0x25')](_0x2680d4,'id'));return db[_0xd0ae('0x8e')][_0xd0ae('0x31')](_0x317d0b[_0xd0ae('0x8f')](),_0x559d56)['then'](function(_0x238c9a){var _0x380479=_[_0xd0ae('0xae')](_0x238c9a,_0xd0ae('0xaf'));var _0x3f6562=[];return db[_0xd0ae('0xb0')][_0xd0ae('0xb1')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xd0ae('0x1d')](function(_0x1831b0){var _0x47d63a=_0x1831b0['enableEmailPreview'];_0x2680d4['forEach'](function(_0x2d00fa){_0x3f6562[_0xd0ae('0x2a')](updateMailInteraction(_0x2d00fa,_0x59982c,_0x380479,_0x47d63a));});return BPromise[_0xd0ae('0xb2')](_0x3f6562);});});});})[_0xd0ae('0x1d')](function(_0x4c5242){_0x3ebc87[_0xd0ae('0xb3')]=_0x4c5242;return _0x3ebc87;})[_0xd0ae('0x1d')](respondWithFilteredResult(_0x167d3e,_0x3d2ee9))[_0xd0ae('0xb4')](handleError(_0x167d3e,null));};exports[_0xd0ae('0xb5')]=function(_0x217f24,_0xb9d733){var _0x522133={'raw':![],'where':{'id':_0x217f24[_0xd0ae('0xb6')]['id']}},_0x3b088b={};_0x3b088b[_0xd0ae('0x34')]=_['keys'](db[_0xd0ae('0x92')][_0xd0ae('0xb7')]);_0x3b088b['query']=_[_0xd0ae('0x32')](_0x217f24[_0xd0ae('0x31')]);_0x3b088b[_0xd0ae('0x3e')]=_[_0xd0ae('0x33')](_0x3b088b['model'],_0x3b088b[_0xd0ae('0x31')]);_0x522133['attributes']=_[_0xd0ae('0x33')](_0x3b088b[_0xd0ae('0x34')],qs[_0xd0ae('0x36')](_0x217f24[_0xd0ae('0x31')][_0xd0ae('0x36')]));_0x522133[_0xd0ae('0x35')]=_0x522133[_0xd0ae('0x35')]['length']?_0x522133[_0xd0ae('0x35')]:_0x3b088b[_0xd0ae('0x34')];if(_0x217f24[_0xd0ae('0x31')][_0xd0ae('0xb8')]){_0x522133[_0xd0ae('0xb9')]=[{'all':!![]}];}_0x522133=_[_0xd0ae('0x91')]({},_0x522133,_0x217f24['options']);return db[_0xd0ae('0x92')][_0xd0ae('0x55')](_0x522133)[_0xd0ae('0x1d')](handleEntityNotFound(_0xb9d733,null))[_0xd0ae('0x1d')](respondWithResult(_0xb9d733,null))[_0xd0ae('0xb4')](handleError(_0xb9d733,null));};exports[_0xd0ae('0xba')]=function(_0x552c47,_0x450f9e){return db['MailInteraction'][_0xd0ae('0xba')](_0x552c47[_0xd0ae('0xbb')],{})['then'](respondWithResult(_0x450f9e,0xc9))[_0xd0ae('0xb4')](handleError(_0x450f9e,null));};exports[_0xd0ae('0x1c')]=function(_0x3bac22,_0x4192bb){if(_0x3bac22[_0xd0ae('0xbb')]['id']){delete _0x3bac22[_0xd0ae('0xbb')]['id'];}return db[_0xd0ae('0x92')][_0xd0ae('0x55')]({'where':{'id':_0x3bac22[_0xd0ae('0xb6')]['id']}})[_0xd0ae('0x1d')](handleEntityNotFound(_0x4192bb,null))[_0xd0ae('0x1d')](saveUpdates(_0x3bac22[_0xd0ae('0xbb')],null))[_0xd0ae('0x1d')](respondWithResult(_0x4192bb,null))[_0xd0ae('0xb4')](handleError(_0x4192bb,null));};exports[_0xd0ae('0x1e')]=function(_0x561d04,_0x2e5a43){return db[_0xd0ae('0x92')]['find']({'where':{'id':_0x561d04[_0xd0ae('0xb6')]['id']}})['then'](handleEntityNotFound(_0x2e5a43,null))[_0xd0ae('0x1d')](removeEntity(_0x2e5a43,null))[_0xd0ae('0xb4')](handleError(_0x2e5a43,null));};exports[_0xd0ae('0xbc')]=function(_0x4b5322,_0x18696d){return db['MailInteraction'][_0xd0ae('0xbc')]()['then'](respondWithResult(_0x18696d,null))['catch'](handleError(_0x18696d,null));};exports[_0xd0ae('0xbd')]=function(_0x2ce99a,_0x18ffee){return db[_0xd0ae('0x2b')][_0xd0ae('0x55')]({'where':{'id':_0x2ce99a[_0xd0ae('0xb6')]['id']}})[_0xd0ae('0x1d')](handleEntityNotFound(_0x18ffee,null))[_0xd0ae('0x1d')](function(_0x30038e){if(_0x30038e){return _0x30038e[_0xd0ae('0xbd')](_0x2ce99a['body'][_0xd0ae('0xbe')],_[_0xd0ae('0xbf')](_0x2ce99a[_0xd0ae('0xbb')],[_0xd0ae('0xbe'),'id'])||{});}})['then'](respondWithResult(_0x18ffee,null))[_0xd0ae('0xb4')](handleError(_0x18ffee,null));};exports['getMessages']=function(_0x4e1a29,_0x59d628){var _0x5cf0de={'raw':![],'where':{}};var _0x1b45d9={};var _0x3b3ecf={'count':0x0,'rows':[]};return db[_0xd0ae('0x92')][_0xd0ae('0xb1')]({'where':{'id':_0x4e1a29['params']['id']}})[_0xd0ae('0x1d')](handleEntityNotFound(_0x59d628,null))['then'](function(_0x2d4e12){if(_0x2d4e12){_0x1b45d9[_0xd0ae('0x34')]=_[_0xd0ae('0x32')](db[_0xd0ae('0x2b')][_0xd0ae('0xb7')]);_0x1b45d9[_0xd0ae('0x31')]=_[_0xd0ae('0x32')](_0x4e1a29[_0xd0ae('0x31')]);_0x1b45d9[_0xd0ae('0x3e')]=_[_0xd0ae('0x33')](_0x1b45d9['model'],_0x1b45d9[_0xd0ae('0x31')]);_0x5cf0de[_0xd0ae('0x35')]=_[_0xd0ae('0x33')](_0x1b45d9[_0xd0ae('0x34')],qs['fields'](_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x36')]));_0x5cf0de[_0xd0ae('0x35')]=_0x5cf0de[_0xd0ae('0x35')][_0xd0ae('0x37')]?_0x5cf0de[_0xd0ae('0x35')]:_0x1b45d9['model'];if(!_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x38')](_0xd0ae('0x39'))){_0x5cf0de['limit']=qs['limit'](_0x4e1a29['query'][_0xd0ae('0x17')]);_0x5cf0de[_0xd0ae('0x19')]=qs[_0xd0ae('0x19')](_0x4e1a29['query'][_0xd0ae('0x19')]);}_0x5cf0de[_0xd0ae('0x3a')]=qs[_0xd0ae('0x3b')](_0x4e1a29['query'][_0xd0ae('0x3b')]);_0x5cf0de[_0xd0ae('0x3c')]=qs['filters'](_[_0xd0ae('0x3d')](_0x4e1a29[_0xd0ae('0x31')],_0x1b45d9['filters']));_0x5cf0de[_0xd0ae('0x3c')][_0xd0ae('0xaf')]=_0x2d4e12['id'];if(_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x79')]){_0x5cf0de[_0xd0ae('0x3c')]=_[_0xd0ae('0x91')](_0x5cf0de[_0xd0ae('0x3c')],{'$or':_['map'](_0x5cf0de['attributes'],function(_0x3d601c){var _0x5c87e8={};_0x5c87e8[_0x3d601c]={'$like':'%'+_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x79')]+'%'};return _0x5c87e8;})});}if(_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x6f')]){var _0x45d780=_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0x6f')][_0xd0ae('0x5c')](',');var _0x497a98={};_0x497a98[_0x45d780[0x0]]={'$gte':moment(_0x45d780[0x1])[_0xd0ae('0xc0')](_0xd0ae('0xc1'))};_0x5cf0de[_0xd0ae('0x3c')]=_[_0xd0ae('0x91')](_0x5cf0de[_0xd0ae('0x3c')],_0x497a98);}_0x5cf0de=_[_0xd0ae('0x91')]({},_0x5cf0de,_0x4e1a29[_0xd0ae('0xc2')]);return db['MailMessage'][_0xd0ae('0x18')]({'where':_0x5cf0de[_0xd0ae('0x3c')]})[_0xd0ae('0x1d')](function(_0x3e7952){_0x3b3ecf[_0xd0ae('0x18')]=_0x3e7952;if(_0x4e1a29[_0xd0ae('0x31')][_0xd0ae('0xb8')]){_0x5cf0de[_0xd0ae('0xb9')]=[{'all':!![]}];}return db[_0xd0ae('0x2b')][_0xd0ae('0xc3')](_0x5cf0de);})[_0xd0ae('0x1d')](function(_0x40b85b){if(_0x4e1a29[_0xd0ae('0x31')]['inlineCss']===_0xd0ae('0xc4')){for(var _0x568369=0x0;_0x568369<_0x40b85b['length'];_0x568369++){_0x40b85b[_0x568369]['body']=juice(_0x40b85b[_0x568369]['body']);}}_0x3b3ecf[_0xd0ae('0xb3')]=_0x40b85b;return _0x3b3ecf;});}})[_0xd0ae('0x1d')](respondWithFilteredResult(_0x59d628,_0x5cf0de))[_0xd0ae('0xb4')](handleError(_0x59d628,null));};exports['addTags']=function(_0x10a665,_0x39191d){return db[_0xd0ae('0x92')]['find']({'where':{'id':_0x10a665[_0xd0ae('0xb6')]['id']}})[_0xd0ae('0x1d')](handleEntityNotFound(_0x39191d,null))[_0xd0ae('0x1d')](function(_0x661a1a){if(_0x661a1a){return _0x661a1a[_0xd0ae('0xc5')](_0x10a665['body'][_0xd0ae('0xbe')],_[_0xd0ae('0xbf')](_0x10a665['body'],[_0xd0ae('0xbe'),'id'])||{})['spread'](function(){return db[_0xd0ae('0x64')][_0xd0ae('0xc3')]({'attributes':['id','name',_0xd0ae('0x40')],'where':{'id':_0x10a665[_0xd0ae('0xbb')][_0xd0ae('0xbe')]}});})[_0xd0ae('0x1d')](function(_0x278fa9){socket[_0xd0ae('0xc6')](_0xd0ae('0xc7'),{'id':Number(_0x10a665[_0xd0ae('0xb6')]['id']),'tags':_0x278fa9||[]});return{'id':Number(_0x10a665[_0xd0ae('0xb6')]['id']),'tags':_0x278fa9||[]};});}})['then'](respondWithResult(_0x39191d,null))['catch'](handleError(_0x39191d,null));};exports[_0xd0ae('0xc8')]=function(_0x4b619c,_0x519842){return db[_0xd0ae('0x92')]['find']({'where':{'id':_0x4b619c[_0xd0ae('0xb6')]['id']}})[_0xd0ae('0x1d')](handleEntityNotFound(_0x519842,null))[_0xd0ae('0x1d')](function(_0x350edf){if(_0x350edf){return _0x350edf['removeTags'](_0x4b619c['query'][_0xd0ae('0xbe')]);}})['then'](respondWithStatusCode(_0x519842,null))[_0xd0ae('0xb4')](handleError(_0x519842,null));};exports['download']=function(_0x49f458,_0x382f81){var _0x1d6a40=moment()[_0xd0ae('0xc9')]()['toString']();var _0x4de979=path['join'](config['root'],'server',_0xd0ae('0xca'),_0xd0ae('0xcb'));var _0x10adb4=path[_0xd0ae('0xcc')](config[_0xd0ae('0xcd')],'server','files',_0xd0ae('0xce'));var _0x44e551=path[_0xd0ae('0xcc')](_0x4de979,_0x1d6a40);var _0x332b2b=util[_0xd0ae('0xc0')]('transcript-%d-%s.zip',_0x49f458['params']['id'],_0x1d6a40);var _0x3ae4ba=path[_0xd0ae('0xcc')](_0x4de979,_0x332b2b);var _0x42c58a=[];if(_0x49f458[_0xd0ae('0x31')][_0xd0ae('0xce')]){_0x42c58a[_0xd0ae('0x2a')]({'model':db[_0xd0ae('0xcf')],'as':_0xd0ae('0xd0'),'raw':!![]});}var _0x5d18d2=[{'model':db[_0xd0ae('0x2b')],'as':_0xd0ae('0xd1'),'attributes':['id',_0xd0ae('0xbb'),'from','to','cc',_0xd0ae('0xd2'),_0xd0ae('0xd3'),_0xd0ae('0xd4')],'where':{'secret':![]},'order':qs[_0xd0ae('0x3b')]('id'),'include':_0x42c58a}];return db[_0xd0ae('0x92')][_0xd0ae('0x55')]({'where':{'id':_0x49f458[_0xd0ae('0xb6')]['id']},'include':_0x5d18d2})[_0xd0ae('0x1d')](handleEntityNotFound(_0x382f81,null))[_0xd0ae('0x1d')](function(_0x5de17c){if(_0x5de17c&&_0x5de17c[_0xd0ae('0xd1')]){var _0x116608=_0x5de17c[_0xd0ae('0xd5')]({'plain':!![]});fs[_0xd0ae('0xd6')](_0x44e551);return BPromise['each'](_0x116608[_0xd0ae('0xd1')],function(_0x38a053,_0x3241e0){var _0x55128e={'from':_0x38a053[_0xd0ae('0x44')],'to':_0x38a053['to'],'subject':_0x38a053[_0xd0ae('0xd3')],'html':htmlEntities[_0xd0ae('0xd7')](_0x38a053[_0xd0ae('0xbb')]),'headers':{'Date':moment(_0x38a053['createdAt'])[_0xd0ae('0xc0')](_0xd0ae('0xd8'))},'attachments':[]};if(_0x38a053['cc']){_0x55128e[_0xd0ae('0xd9')]['Cc']=_0x38a053['cc'];}if(_0x38a053[_0xd0ae('0xd2')]){_0x55128e[_0xd0ae('0xd9')][_0xd0ae('0xda')]=_0x38a053[_0xd0ae('0xd2')];}return new BPromise(function(_0x534263,_0x3e6aec){if(_0x38a053[_0xd0ae('0xd0')]){for(var _0x24c8ab=0x0;_0x24c8ab<_0x38a053[_0xd0ae('0xd0')][_0xd0ae('0x37')];_0x24c8ab++){var _0x415cd2=_0x38a053[_0xd0ae('0xd0')][_0x24c8ab];var _0x4f2ec6=path[_0xd0ae('0xcc')](_0x10adb4,_0x415cd2[_0xd0ae('0xdb')]);if(fs['existsSync'](_0x4f2ec6)){_0x55128e[_0xd0ae('0xce')][_0xd0ae('0x2a')]({'name':_0x415cd2[_0xd0ae('0x22')],'contentType':_0x415cd2[_0xd0ae('0x69')],'data':fs[_0xd0ae('0xdc')](_0x4f2ec6)});}}}emlformat[_0xd0ae('0xdd')](_0x55128e,function(_0x10cebc,_0x92b68a){if(_0x10cebc)return _0x3e6aec(_0x10cebc);fs['writeFileSync'](path[_0xd0ae('0xcc')](_0x44e551,util[_0xd0ae('0xc0')](_0xd0ae('0xde'),_0x3241e0)),_0x92b68a);return _0x534263(_0x92b68a);});});})[_0xd0ae('0x1d')](function(){return new BPromise(function(_0x4eefa3,_0x30b039){zipdir(_0x44e551,{'saveTo':_0x3ae4ba},function(_0x509d7a,_0x43c95f){if(_0x509d7a)return _0x30b039(_0x509d7a);return _0x4eefa3(_0x43c95f);});})[_0xd0ae('0x1d')](function(){return new BPromise(function(_0x2c76b5,_0x4f4659){rimraf(_0x44e551,function(_0x1b5dd9){if(_0x1b5dd9)_0x4f4659(_0x1b5dd9);return _0x2c76b5();});});})[_0xd0ae('0x1d')](function(){return _0x382f81[_0xd0ae('0xdf')](_0x3ae4ba,_0x332b2b,function(_0x4496a8){if(!_0x4496a8)fs[_0xd0ae('0xe0')](_0x3ae4ba);});});});}else{return _0x382f81['sendStatus'](0xc8);}})[_0xd0ae('0xb4')](handleError(_0x382f81,null));};
\ No newline at end of file
index 46b3ef8..b1cab91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50b6=['length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','MailMessage','save','update','getUsers','then','unreadMessages'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x50b6,0xaf));var _0x650b=function(_0x20f8af,_0x1e7547){_0x20f8af=_0x20f8af-0x0;var _0xbaff30=_0x50b6[_0x20f8af];return _0xbaff30;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0x650b('0x0'))['db'][_0x650b('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x650b('0x2'),'afterUpdate':_0x650b('0x3'),'afterDestroy':'remove'};function emitEvent(_0x15fbd4){return function(_0x28841d,_0xdb5f4c,_0x327f2f){_0x28841d[_0x650b('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x21d8bf){_0x28841d['setDataValue']('Users',_0x21d8bf['map'](function(_0x221691){return{'id':_0x221691['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x28841d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x650b('0x5')](function(_0x1a9e15){_0x28841d['setDataValue'](_0x650b('0x6'),_0x1a9e15[_0x650b('0x7')]);MailInteractionEvents[_0x650b('0x8')](_0x15fbd4+':'+_0x28841d['id'],_0x28841d);MailInteractionEvents[_0x650b('0x8')](_0x15fbd4,_0x28841d);_0x327f2f(null);})[_0x650b('0x9')](_0x327f2f(null));};}for(var e in events){if(events[_0x650b('0xa')](e)){var event=events[e];MailInteraction[_0x650b('0xb')](e,emitEvent(event));}}module[_0x650b('0xc')]=MailInteractionEvents;
\ No newline at end of file
+var _0x4002=['events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','catch','hasOwnProperty'];(function(_0xdd0313,_0x251c2b){var _0x2bd7e8=function(_0x340f1f){while(--_0x340f1f){_0xdd0313['push'](_0xdd0313['shift']());}};_0x2bd7e8(++_0x251c2b);}(_0x4002,0xaa));var _0x2400=function(_0x42f35c,_0x359af9){_0x42f35c=_0x42f35c-0x0;var _0x7e0d94=_0x4002[_0x42f35c];return _0x7e0d94;};'use strict';var EventEmitter=require(_0x2400('0x0'));var MailInteraction=require(_0x2400('0x1'))['db'][_0x2400('0x2')];var MailMessage=require('../../mysqldb')['db'][_0x2400('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x2400('0x4')](0x0);var events={'afterCreate':_0x2400('0x5'),'afterUpdate':_0x2400('0x6'),'afterDestroy':_0x2400('0x7')};function emitEvent(_0x8cb11c){return function(_0xf048d4,_0xedc9d3,_0x434584){_0xf048d4[_0x2400('0x8')]({'attributes':['id'],'raw':!![]})[_0x2400('0x9')](function(_0xab17e8){_0xf048d4['setDataValue'](_0x2400('0xa'),_0xab17e8[_0x2400('0xb')](function(_0x2b4eff){return{'id':_0x2b4eff['id']};}));return MailMessage[_0x2400('0xc')]({'where':{'MailInteractionId':_0xf048d4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2400('0x9')](function(_0x53281b){_0xf048d4[_0x2400('0xd')](_0x2400('0xe'),_0x53281b['length']);MailInteractionEvents['emit'](_0x8cb11c+':'+_0xf048d4['id'],_0xf048d4);MailInteractionEvents['emit'](_0x8cb11c,_0xf048d4);_0x434584(null);})[_0x2400('0xf')](_0x434584(null));};}for(var e in events){if(events[_0x2400('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 1745ed9..17bbcfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8e2=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x20f556,_0x198fb3){var _0x963317=function(_0x3d663c){while(--_0x3d663c){_0x20f556['push'](_0x20f556['shift']());}};_0x963317(++_0x198fb3);}(_0xa8e2,0x81));var _0x2a8e=function(_0x420f39,_0x67e5fd){_0x420f39=_0x420f39-0x0;var _0xa4296a=_0xa8e2[_0x420f39];return _0xa4296a;};'use strict';var _=require(_0x2a8e('0x0'));var util=require('util');var logger=require(_0x2a8e('0x1'))('api');var moment=require(_0x2a8e('0x2'));var BPromise=require(_0x2a8e('0x3'));var rp=require(_0x2a8e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2a8e('0x5'));var config=require(_0x2a8e('0x6'));var attributes=require('./mailInteraction.attributes');module[_0x2a8e('0x7')]=function(_0x52077a,_0x134435){return _0x52077a['define']('MailInteraction',attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0x2a8e('0x8'),'fields':[_0x2a8e('0x9'),'to'],'type':_0x2a8e('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x42c1cb,_0x5f3150,_0x10964c){if(_0x42c1cb[_0x2a8e('0xb')]){_0x42c1cb[_0x2a8e('0xc')]=moment()[_0x2a8e('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x42c1cb[_0x2a8e('0xe')]){_0x42c1cb[_0x2a8e('0xf')]=moment()[_0x2a8e('0xd')](_0x2a8e('0x10'));}_0x10964c(null,_0x5f3150);},'beforeUpdate':function(_0x1ab889,_0x37cba7,_0x5208e3){if(_0x1ab889[_0x2a8e('0x11')](_0x2a8e('0xb'))){_0x1ab889[_0x2a8e('0xc')]=_0x1ab889[_0x2a8e('0xb')]?moment()['format'](_0x2a8e('0x10')):null;}if(_0x1ab889[_0x2a8e('0x11')](_0x2a8e('0xe'))){_0x1ab889[_0x2a8e('0xf')]=moment()[_0x2a8e('0xd')](_0x2a8e('0x10'));_0x1ab889[_0x2a8e('0xb')]=null;_0x1ab889[_0x2a8e('0xc')]=null;}_0x5208e3(null,_0x1ab889);},'afterUpdate':function(_0x3382ee,_0x883697,_0xf1a8f0){var _0x301619=_0x52077a[_0x2a8e('0x12')];var _0x3aa722=_0x3382ee[_0x2a8e('0x13')]({'plain':!![]});if(_0x3aa722[_0x2a8e('0xe')]){return _0x301619[_0x2a8e('0x14')][_0x2a8e('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x3aa722['id']}})[_0x2a8e('0x16')](function(){_0xf1a8f0();})[_0x2a8e('0x17')](function(_0x2c940b){_0xf1a8f0(_0x2c940b);});}else{_0xf1a8f0();}}},'charset':_0x2a8e('0x18'),'collate':_0x2a8e('0x19')});};
\ No newline at end of file
+var _0xe839=['rimraf','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','substatusAt','models','get','MailMessage','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe839,0xa9));var _0x9e83=function(_0xbeb808,_0x881ddf){_0xbeb808=_0xbeb808-0x0;var _0x5d6909=_0xe839[_0xbeb808];return _0x5d6909;};'use strict';var _=require(_0x9e83('0x0'));var util=require(_0x9e83('0x1'));var logger=require(_0x9e83('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9e83('0x3'));var rp=require(_0x9e83('0x4'));var fs=require('fs');var path=require(_0x9e83('0x5'));var rimraf=require(_0x9e83('0x6'));var config=require(_0x9e83('0x7'));var attributes=require(_0x9e83('0x8'));module[_0x9e83('0x9')]=function(_0x52337f,_0x3b459c){return _0x52337f[_0x9e83('0xa')]('MailInteraction',attributes,{'tableName':_0x9e83('0xb'),'paranoid':![],'indexes':[{'name':_0x9e83('0xc'),'fields':[_0x9e83('0xd'),'to'],'type':_0x9e83('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x154ead,_0x2e0dbb,_0x291f32){if(_0x154ead[_0x9e83('0xf')]){_0x154ead['substatusAt']=moment()[_0x9e83('0x10')](_0x9e83('0x11'));}if(_0x154ead[_0x9e83('0x12')]){_0x154ead[_0x9e83('0x13')]=moment()[_0x9e83('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x291f32(null,_0x2e0dbb);},'beforeUpdate':function(_0x184274,_0x227526,_0x75642){if(_0x184274[_0x9e83('0x14')](_0x9e83('0xf'))){_0x184274[_0x9e83('0x15')]=_0x184274['substatus']?moment()['format'](_0x9e83('0x11')):null;}if(_0x184274[_0x9e83('0x14')](_0x9e83('0x12'))){_0x184274[_0x9e83('0x13')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x184274['substatus']=null;_0x184274[_0x9e83('0x15')]=null;}_0x75642(null,_0x184274);},'afterUpdate':function(_0x43f862,_0x57b292,_0x17eded){var _0xec678e=_0x52337f[_0x9e83('0x16')];var _0x189111=_0x43f862[_0x9e83('0x17')]({'plain':!![]});if(_0x189111[_0x9e83('0x12')]){return _0xec678e[_0x9e83('0x18')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x189111['id']}})['then'](function(){_0x17eded();})['catch'](function(_0x1596a5){_0x17eded(_0x1596a5);});}else{_0x17eded();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d46c9a5..896b0bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe581=['ids','omit','spread','AddTags','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','redis','defaults','socket.io-emitter','./mailInteraction.socket','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','limit','catch','AddTagsToMailInteraction','find','where','addTags'];(function(_0x2973b0,_0x2f1b53){var _0x1bc421=function(_0x3fcf51){while(--_0x3fcf51){_0x2973b0['push'](_0x2973b0['shift']());}};_0x1bc421(++_0x2f1b53);}(_0xe581,0x80));var _0x1e58=function(_0x51787e,_0x4176bf){_0x51787e=_0x51787e-0x0;var _0x2f19d0=_0xe581[_0x51787e];return _0x2f19d0;};'use strict';var _=require(_0x1e58('0x0'));var util=require(_0x1e58('0x1'));var moment=require('moment');var BPromise=require(_0x1e58('0x2'));var rs=require(_0x1e58('0x3'));var fs=require('fs');var Redis=require(_0x1e58('0x4'));var db=require(_0x1e58('0x5'))['db'];var utils=require(_0x1e58('0x6'));var logger=require(_0x1e58('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x1e58('0x8')]=_[_0x1e58('0x9')](config[_0x1e58('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x1e58('0xa'))(new Redis(config[_0x1e58('0x8')]));require(_0x1e58('0xb'))['register'](socket);function respondWithRpcPromise(_0x1e90e5,_0x26d943,_0x16fda3){return new BPromise(function(_0x3ac4a1,_0x5f1815){return client[_0x1e58('0xc')](_0x1e90e5,_0x16fda3)[_0x1e58('0xd')](function(_0x31a320){logger[_0x1e58('0xe')](_0x1e58('0xf'),_0x26d943,_0x1e58('0x10'));logger['debug'](_0x1e58('0x11'),_0x26d943,_0x1e58('0x10'),JSON[_0x1e58('0x12')](_0x31a320));if(_0x31a320[_0x1e58('0x13')]){if(_0x31a320[_0x1e58('0x13')][_0x1e58('0x14')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x26d943,_0x31a320['error'][_0x1e58('0x15')]);return _0x5f1815(_0x31a320[_0x1e58('0x13')]['message']);}logger['error'](_0x1e58('0xf'),_0x26d943,_0x31a320['error'][_0x1e58('0x15')]);return _0x3ac4a1(_0x31a320[_0x1e58('0x13')]['message']);}else{logger[_0x1e58('0xe')](_0x1e58('0xf'),_0x26d943,_0x1e58('0x10'));_0x3ac4a1(_0x31a320[_0x1e58('0x16')][_0x1e58('0x15')]);}})['catch'](function(_0x248f51){logger[_0x1e58('0x13')](_0x1e58('0xf'),_0x26d943,_0x248f51);_0x5f1815(_0x248f51);});});}exports[_0x1e58('0x17')]=function(_0x155479){var _0x1260e4=this;return new Promise(function(_0x4fb3dd,_0x22ca8c){return db[_0x1e58('0x18')][_0x1e58('0x19')](_0x155479[_0x1e58('0x1a')],{'raw':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')]['where']||null:null,'attributes':_0x155479[_0x1e58('0x1b')]?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1d')]||null:null,'limit':_0x155479['options']?_0x155479[_0x1e58('0x1b')][_0x1e58('0x1e')]||null:null})[_0x1e58('0xd')](function(_0x4912e2){logger[_0x1e58('0xe')](_0x1e58('0x17'),_0x155479);logger['debug']('UpdateMailInteraction',_0x155479,JSON[_0x1e58('0x12')](_0x4912e2));_0x4fb3dd(_0x4912e2);})[_0x1e58('0x1f')](function(_0x662abe){logger[_0x1e58('0x13')](_0x1e58('0x17'),_0x662abe[_0x1e58('0x15')],_0x155479);_0x22ca8c(_0x1260e4['error'](0x1f4,_0x662abe[_0x1e58('0x15')]));});});};exports[_0x1e58('0x20')]=function(_0x1594e4){return new Promise(function(_0x442a36,_0x4cb076){return db[_0x1e58('0x18')][_0x1e58('0x21')]({'where':_0x1594e4[_0x1e58('0x1b')]?_0x1594e4[_0x1e58('0x1b')][_0x1e58('0x22')]||null:null})[_0x1e58('0xd')](function(_0x585750){if(_0x585750){return _0x585750[_0x1e58('0x23')](_0x1594e4[_0x1e58('0x1a')][_0x1e58('0x24')],_[_0x1e58('0x25')](_0x1594e4[_0x1e58('0x1a')],[_0x1e58('0x24'),'id'])||{});}})[_0x1e58('0x26')](function(_0x53a6a1){logger[_0x1e58('0xe')](_0x1e58('0x27'),_0x1594e4);logger[_0x1e58('0x28')](_0x1e58('0x27'),_0x1594e4,JSON['stringify'](_0x53a6a1));_0x442a36(_0x53a6a1);})[_0x1e58('0x1f')](function(_0x407eb3){logger['error']('AddTags',_0x407eb3[_0x1e58('0x15')],_0x1594e4);_0x4cb076(_this['error'](0x1f4,_0x407eb3[_0x1e58('0x15')]));});});};
\ No newline at end of file
+var _0x2b0a=['MailInteraction','update','body','options','raw','where','attributes','limit','UpdateMailInteraction','AddTagsToMailInteraction','find','addTags','ids','spread','AddTags','lodash','util','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch'];(function(_0xea7a33,_0x628262){var _0x31a982=function(_0x433558){while(--_0x433558){_0xea7a33['push'](_0xea7a33['shift']());}};_0x31a982(++_0x628262);}(_0x2b0a,0x84));var _0xa2b0=function(_0x15d292,_0x24e92f){_0x15d292=_0x15d292-0x0;var _0xe0fdd9=_0x2b0a[_0x15d292];return _0xe0fdd9;};'use strict';var _=require(_0xa2b0('0x0'));var util=require(_0xa2b0('0x1'));var moment=require('moment');var BPromise=require(_0xa2b0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa2b0('0x3'))(_0xa2b0('0x4'));var config=require(_0xa2b0('0x5'));var jayson=require(_0xa2b0('0x6'));var client=jayson[_0xa2b0('0x7')][_0xa2b0('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0xa2b0('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2b0('0x9')]));require(_0xa2b0('0xa'))[_0xa2b0('0xb')](socket);function respondWithRpcPromise(_0x288acc,_0x1b3a5c,_0xc02bee){return new BPromise(function(_0x5c868d,_0x11b420){return client[_0xa2b0('0xc')](_0x288acc,_0xc02bee)[_0xa2b0('0xd')](function(_0x55e9d5){logger[_0xa2b0('0xe')](_0xa2b0('0xf'),_0x1b3a5c,'request\x20sent');logger[_0xa2b0('0x10')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x1b3a5c,_0xa2b0('0x11'),JSON[_0xa2b0('0x12')](_0x55e9d5));if(_0x55e9d5[_0xa2b0('0x13')]){if(_0x55e9d5[_0xa2b0('0x13')][_0xa2b0('0x14')]===0x1f4){logger[_0xa2b0('0x13')](_0xa2b0('0xf'),_0x1b3a5c,_0x55e9d5[_0xa2b0('0x13')][_0xa2b0('0x15')]);return _0x11b420(_0x55e9d5[_0xa2b0('0x13')][_0xa2b0('0x15')]);}logger[_0xa2b0('0x13')]('MailInteraction,\x20%s,\x20%s',_0x1b3a5c,_0x55e9d5['error']['message']);return _0x5c868d(_0x55e9d5[_0xa2b0('0x13')]['message']);}else{logger[_0xa2b0('0xe')]('MailInteraction,\x20%s,\x20%s',_0x1b3a5c,_0xa2b0('0x11'));_0x5c868d(_0x55e9d5[_0xa2b0('0x16')][_0xa2b0('0x15')]);}})[_0xa2b0('0x17')](function(_0x110317){logger[_0xa2b0('0x13')](_0xa2b0('0xf'),_0x1b3a5c,_0x110317);_0x11b420(_0x110317);});});}exports['UpdateMailInteraction']=function(_0xfdec29){var _0x480145=this;return new Promise(function(_0x2eb66b,_0x2c348f){return db[_0xa2b0('0x18')][_0xa2b0('0x19')](_0xfdec29[_0xa2b0('0x1a')],{'raw':_0xfdec29[_0xa2b0('0x1b')]?_0xfdec29['options'][_0xa2b0('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfdec29[_0xa2b0('0x1b')]?_0xfdec29[_0xa2b0('0x1b')][_0xa2b0('0x1d')]||null:null,'attributes':_0xfdec29[_0xa2b0('0x1b')]?_0xfdec29['options'][_0xa2b0('0x1e')]||null:null,'limit':_0xfdec29[_0xa2b0('0x1b')]?_0xfdec29[_0xa2b0('0x1b')][_0xa2b0('0x1f')]||null:null})[_0xa2b0('0xd')](function(_0x3904f7){logger[_0xa2b0('0xe')]('UpdateMailInteraction',_0xfdec29);logger['debug']('UpdateMailInteraction',_0xfdec29,JSON[_0xa2b0('0x12')](_0x3904f7));_0x2eb66b(_0x3904f7);})[_0xa2b0('0x17')](function(_0x546c82){logger[_0xa2b0('0x13')](_0xa2b0('0x20'),_0x546c82[_0xa2b0('0x15')],_0xfdec29);_0x2c348f(_0x480145[_0xa2b0('0x13')](0x1f4,_0x546c82['message']));});});};exports[_0xa2b0('0x21')]=function(_0x1179ab){return new Promise(function(_0xb84d3c,_0x3bb493){return db[_0xa2b0('0x18')][_0xa2b0('0x22')]({'where':_0x1179ab[_0xa2b0('0x1b')]?_0x1179ab[_0xa2b0('0x1b')]['where']||null:null})['then'](function(_0x446547){if(_0x446547){return _0x446547[_0xa2b0('0x23')](_0x1179ab['body'][_0xa2b0('0x24')],_['omit'](_0x1179ab[_0xa2b0('0x1a')],[_0xa2b0('0x24'),'id'])||{});}})[_0xa2b0('0x25')](function(_0x1e2134){logger[_0xa2b0('0xe')](_0xa2b0('0x26'),_0x1179ab);logger['debug'](_0xa2b0('0x26'),_0x1179ab,JSON[_0xa2b0('0x12')](_0x1e2134));_0xb84d3c(_0x1e2134);})[_0xa2b0('0x17')](function(_0x4ff24c){logger[_0xa2b0('0x13')](_0xa2b0('0x26'),_0x4ff24c[_0xa2b0('0x15')],_0x1179ab);_0x3bb493(_this[_0xa2b0('0x13')](0x1f4,_0x4ff24c[_0xa2b0('0x15')]));});});};
\ No newline at end of file
index 192c4ad..cc46822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76db=['emit','removeListener','register','length','mailInteraction:','./mailInteraction.events','save','remove','update'];(function(_0x51d7d6,_0x3aab41){var _0x1634f6=function(_0x4d4356){while(--_0x4d4356){_0x51d7d6['push'](_0x51d7d6['shift']());}};_0x1634f6(++_0x3aab41);}(_0x76db,0x16d));var _0xb76d=function(_0x3135c6,_0xcd49c8){_0x3135c6=_0x3135c6-0x0;var _0x46a85b=_0x76db[_0x3135c6];return _0x46a85b;};'use strict';var MailInteractionEvents=require(_0xb76d('0x0'));var events=[_0xb76d('0x1'),_0xb76d('0x2'),_0xb76d('0x3')];function createListener(_0x3352fe,_0x267fc0){return function(_0x40dbb0){_0x267fc0[_0xb76d('0x4')](_0x3352fe,_0x40dbb0);};}function removeListener(_0x50c5f0,_0xe437a2){return function(){MailInteractionEvents[_0xb76d('0x5')](_0x50c5f0,_0xe437a2);};}exports[_0xb76d('0x6')]=function(_0x4eee6f){for(var _0x349b64=0x0,_0x92e0b5=events[_0xb76d('0x7')];_0x349b64<_0x92e0b5;_0x349b64++){var _0x140400=events[_0x349b64];var _0x23a6af=createListener(_0xb76d('0x8')+_0x140400,_0x4eee6f);MailInteractionEvents['on'](_0x140400,_0x23a6af);}};
\ No newline at end of file
+var _0x9ee0=['update','emit','removeListener','register','length','./mailInteraction.events','remove'];(function(_0x2dfd0e,_0x13739e){var _0x343af6=function(_0x206e2f){while(--_0x206e2f){_0x2dfd0e['push'](_0x2dfd0e['shift']());}};_0x343af6(++_0x13739e);}(_0x9ee0,0x16a));var _0x09ee=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x9ee0[_0x2b5513];return _0x578fd2;};'use strict';var MailInteractionEvents=require(_0x09ee('0x0'));var events=['save',_0x09ee('0x1'),_0x09ee('0x2')];function createListener(_0x36847d,_0x1827f5){return function(_0x390254){_0x1827f5[_0x09ee('0x3')](_0x36847d,_0x390254);};}function removeListener(_0x58b7b2,_0x3fbe91){return function(){MailInteractionEvents[_0x09ee('0x4')](_0x58b7b2,_0x3fbe91);};}exports[_0x09ee('0x5')]=function(_0x57a518){for(var _0x5d534a=0x0,_0x4b10a8=events[_0x09ee('0x6')];_0x5d534a<_0x4b10a8;_0x5d534a++){var _0x10ff1e=events[_0x5d534a];var _0x3d5f04=createListener('mailInteraction:'+_0x10ff1e,_0x57a518);MailInteractionEvents['on'](_0x10ff1e,_0x3d5f04);}};
\ No newline at end of file
index 9c98a07..e3c23ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c4=['create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','util','express','Router','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','download','post','tracked','mail','mailmessage:create'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x39c4,0x174));var _0x439c=function(_0x4337fd,_0xbe4964){_0x4337fd=_0x4337fd-0x0;var _0x2d7247=_0x39c4[_0x4337fd];return _0x2d7247;};'use strict';var multer=require('multer');var util=require(_0x439c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x439c('0x1'));var router=express[_0x439c('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x439c('0x3'));var config=require(_0x439c('0x4'));var controller=require(_0x439c('0x5'));router[_0x439c('0x6')]('/',auth[_0x439c('0x7')](),controller[_0x439c('0x8')]);router[_0x439c('0x6')](_0x439c('0x9'),auth[_0x439c('0x7')](),controller[_0x439c('0xa')]);router[_0x439c('0x6')](_0x439c('0xb'),auth[_0x439c('0x7')](),controller[_0x439c('0xc')]);router[_0x439c('0x6')]('/:id/download',auth[_0x439c('0x7')](),controller[_0x439c('0xd')]);router[_0x439c('0xe')]('/',auth[_0x439c('0x7')](),interaction[_0x439c('0xf')](_0x439c('0x10'),_0x439c('0x11')),controller[_0x439c('0x12')]);router[_0x439c('0x13')](_0x439c('0xb'),auth[_0x439c('0x7')](),controller[_0x439c('0x14')]);router['put'](_0x439c('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0x439c('0x13')](_0x439c('0x16'),auth[_0x439c('0x7')](),controller[_0x439c('0x17')]);router[_0x439c('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x439c('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x6de9=['express','fs-extra','../../components/auth/service','../../config/environment','./mailMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/download','post','mail','mailmessage:create','put','accept','/:id/reject','reject','destroy','exports','multer','util','path','connect-timeout'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x6de9,0xe6));var _0x96de=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x6de9[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x96de('0x0'));var util=require(_0x96de('0x1'));var path=require(_0x96de('0x2'));var timeout=require(_0x96de('0x3'));var express=require(_0x96de('0x4'));var router=express['Router']();var fs_extra=require(_0x96de('0x5'));var auth=require(_0x96de('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x96de('0x7'));var controller=require(_0x96de('0x8'));router['get']('/',auth[_0x96de('0x9')](),controller[_0x96de('0xa')]);router[_0x96de('0xb')](_0x96de('0xc'),auth['isAuthenticated'](),controller[_0x96de('0xd')]);router[_0x96de('0xb')](_0x96de('0xe'),auth['isAuthenticated'](),controller[_0x96de('0xf')]);router[_0x96de('0xb')](_0x96de('0x10'),auth['isAuthenticated'](),controller['download']);router[_0x96de('0x11')]('/',auth[_0x96de('0x9')](),interaction['tracked'](_0x96de('0x12'),_0x96de('0x13')),controller['create']);router['put'](_0x96de('0xe'),auth[_0x96de('0x9')](),controller['update']);router[_0x96de('0x14')]('/:id/accept',auth['isAuthenticated'](),controller[_0x96de('0x15')]);router[_0x96de('0x14')](_0x96de('0x16'),auth[_0x96de('0x9')](),controller[_0x96de('0x17')]);router['delete'](_0x96de('0xe'),auth[_0x96de('0x9')](),controller[_0x96de('0x18')]);module[_0x96de('0x19')]=router;
\ No newline at end of file
index 774715c..95c0948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dd2=['BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','lodash','exports','TEXT','long'];(function(_0xc1589d,_0x4d7a38){var _0x23ad9a=function(_0x1e0992){while(--_0x1e0992){_0xc1589d['push'](_0xc1589d['shift']());}};_0x23ad9a(++_0x4d7a38);}(_0x5dd2,0x1b5));var _0x25dd=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x5dd2[_0x255d5b];return _0x3e141a;};'use strict';var Sequelize=require(_0x25dd('0x0'));var _=require(_0x25dd('0x1'));module[_0x25dd('0x2')]={'body':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x25dd('0x3')]('medium')},'read':{'type':Sequelize[_0x25dd('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x25dd('0x6')]('in',_0x25dd('0x7')),'defaultValue':_0x25dd('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x25dd('0x8')](0x1fe)},'from':{'type':Sequelize[_0x25dd('0x8')]},'to':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'cc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'bcc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'subject':{'type':Sequelize[_0x25dd('0x3')]},'sentAt':{'type':Sequelize[_0x25dd('0x9')]},'attach':{'type':Sequelize[_0x25dd('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x25dd('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize['TEXT']('long')},'originCc':{'type':Sequelize[_0x25dd('0x3')](_0x25dd('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0x25dd('0xb'),_0x25dd('0xc')),'defaultValue':_0x25dd('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x7ade=['STRING','DATE','ENUM','Email','sequelize','exports','TEXT','long','medium','BOOLEAN','out'];(function(_0x373a2d,_0x1e9047){var _0x3cf4c3=function(_0x16c1ec){while(--_0x16c1ec){_0x373a2d['push'](_0x373a2d['shift']());}};_0x3cf4c3(++_0x1e9047);}(_0x7ade,0x1e8));var _0xe7ad=function(_0x50539a,_0x1da1b8){_0x50539a=_0x50539a-0x0;var _0xfde35b=_0x7ade[_0x50539a];return _0xfde35b;};'use strict';var Sequelize=require(_0xe7ad('0x0'));var _=require('lodash');module[_0xe7ad('0x1')]={'body':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x4'))},'read':{'type':Sequelize[_0xe7ad('0x5')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xe7ad('0x6')),'defaultValue':_0xe7ad('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xe7ad('0x7')]},'to':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x3'))},'cc':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x3'))},'bcc':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x3'))},'subject':{'type':Sequelize[_0xe7ad('0x2')]},'sentAt':{'type':Sequelize[_0xe7ad('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xe7ad('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe7ad('0x8')]},'originTo':{'type':Sequelize[_0xe7ad('0x2')]('long')},'originCc':{'type':Sequelize[_0xe7ad('0x2')](_0xe7ad('0x3'))},'originChannel':{'type':Sequelize[_0xe7ad('0x9')](_0xe7ad('0xa'),'Chat'),'defaultValue':_0xe7ad('0xa'),'allowNull':![]}};
\ No newline at end of file
index acccc55..d0ae3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a1=['hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','body','find','describe','create','direction','out','secret','split','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','isNil','service','host','secure','authentication','user','pass','auth','attachments','join','root','server/files/attachments','basename','ListId','List\x20not\x20found','sendMail','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','fromString','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','motionChannel','reject','download','unix','toString','server','tmp','files','message-%s.eml','from','bcc','subject','createdAt','Attachments','decode','headers','existsSync','push','readFileSync','eml-format','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','client','http','request','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','code','MailMessage,\x20%s,\x20%s','error','message','info','result','catch','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','end','sendStatus','name','index','map','MailMessage','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x77a1,0x1b3));var _0x177a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x77a1[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0x177a('0x0'));var moment=require('moment');var BPromise=require(_0x177a('0x1'));var util=require(_0x177a('0x2'));var path=require(_0x177a('0x3'));var fs=require('fs');var _=require(_0x177a('0x4'));var Redis=require(_0x177a('0x5'));var htmlToText=require(_0x177a('0x6'));var qs=require(_0x177a('0x7'));var logger=require(_0x177a('0x8'))(_0x177a('0x9'));var interaction_log=require(_0x177a('0x8'))(_0x177a('0xa'));var config=require(_0x177a('0xb'));var db=require(_0x177a('0xc'))['db'];config['redis']=_[_0x177a('0xd')](config[_0x177a('0xe')],{'host':_0x177a('0xf'),'port':0x18eb});var socket=require(_0x177a('0x10'))(new Redis(config[_0x177a('0xe')]));var htmlEntities=require(_0x177a('0x11'));require(_0x177a('0x12'))[_0x177a('0x13')](socket);var jayson=require(_0x177a('0x14'));var client=jayson[_0x177a('0x15')]['http']({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson[_0x177a('0x15')][_0x177a('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x1b88bc,_0x298c20,_0x3acec6,_0x1c60f9){return new BPromise(function(_0x50e92a,_0x2d5dcf){var _0x527208=_0x1c60f9||client;return _0x527208[_0x177a('0x17')](_0x1b88bc,_0x3acec6)['then'](function(_0xd9cd83){logger['info']('MailMessage,\x20%s,\x20%s',_0x298c20,_0x177a('0x18'));logger[_0x177a('0x19')](_0x177a('0x1a'),_0x298c20,_0x177a('0x18'),JSON['stringify'](_0xd9cd83));if(_0xd9cd83['error']){if(_0xd9cd83['error'][_0x177a('0x1b')]===0x1f4){logger['error'](_0x177a('0x1c'),_0x298c20,_0xd9cd83[_0x177a('0x1d')][_0x177a('0x1e')]);return _0x2d5dcf(_0xd9cd83[_0x177a('0x1d')]['message']);}logger[_0x177a('0x1d')](_0x177a('0x1c'),_0x298c20,_0xd9cd83[_0x177a('0x1d')][_0x177a('0x1e')]);return _0x50e92a(_0xd9cd83[_0x177a('0x1d')]['message']);}else{logger[_0x177a('0x1f')](_0x177a('0x1c'),_0x298c20,_0x177a('0x18'));_0x50e92a(_0xd9cd83[_0x177a('0x20')][_0x177a('0x1e')]);}})[_0x177a('0x21')](function(_0x3063b2){logger[_0x177a('0x1d')](_0x177a('0x1c'),_0x298c20,_0x3063b2);_0x2d5dcf(_0x3063b2);});});}function respondWithResult(_0x50d3f1,_0x35b2dc){_0x35b2dc=_0x35b2dc||0xc8;return function(_0x4d3df6){if(_0x4d3df6){return _0x50d3f1[_0x177a('0x22')](_0x35b2dc)[_0x177a('0x23')](_0x4d3df6);}};}function respondWithFilteredResult(_0x517f1d,_0x3fe527){return function(_0x3a3af8){if(_0x3a3af8){var _0x2a60d1=typeof _0x3fe527[_0x177a('0x24')]===_0x177a('0x25')&&typeof _0x3fe527[_0x177a('0x26')]===_0x177a('0x25');var _0x29a50d=_0x3a3af8['count'];var _0xf63c51=_0x2a60d1?0x0:_0x3fe527[_0x177a('0x24')];var _0x506489=_0x2a60d1?_0x3a3af8[_0x177a('0x27')]:_0x3fe527[_0x177a('0x24')]+_0x3fe527['limit'];var _0x239aea;if(_0x506489>=_0x29a50d){_0x506489=_0x29a50d;_0x239aea=0xc8;}else{_0x239aea=0xce;}_0x517f1d[_0x177a('0x22')](_0x239aea);return _0x517f1d['set'](_0x177a('0x28'),_0xf63c51+'-'+_0x506489+'/'+_0x29a50d)[_0x177a('0x23')](_0x3a3af8);}return null;};}function saveUpdates(_0x35b5f0){return function(_0x2ad264){if(_0x2ad264){return _0x2ad264[_0x177a('0x29')](_0x35b5f0)[_0x177a('0x2a')](function(_0x2ab1aa){return _0x2ab1aa;});}return null;};}function removeEntity(_0x48db8c){return function(_0x510d76){if(_0x510d76){return _0x510d76[_0x177a('0x2b')]()[_0x177a('0x2a')](function(){_0x48db8c['status'](0xcc)[_0x177a('0x2c')]();});}};}function handleEntityNotFound(_0x333c1e){return function(_0x4f1517){if(!_0x4f1517){_0x333c1e[_0x177a('0x2d')](0x194);}return _0x4f1517;};}function handleError(_0x5963a2,_0x4f888a){_0x4f888a=_0x4f888a||0x1f4;return function(_0x454ccb){logger['error'](_0x454ccb['stack']);if(_0x454ccb[_0x177a('0x2e')]){delete _0x454ccb['name'];}_0x5963a2[_0x177a('0x22')](_0x4f888a)['send'](_0x454ccb);};}exports[_0x177a('0x2f')]=function(_0x1ddc43,_0x192fa7){var _0x205582={},_0x319125={},_0x40dec1={'count':0x0,'rows':[]};var _0x2ace2e=_[_0x177a('0x30')](db[_0x177a('0x31')][_0x177a('0x32')],function(_0x307cf6){return{'name':_0x307cf6['fieldName'],'type':_0x307cf6['type'][_0x177a('0x33')]};});_0x319125[_0x177a('0x34')]=_[_0x177a('0x30')](_0x2ace2e,'name');_0x319125[_0x177a('0x35')]=_[_0x177a('0x36')](_0x1ddc43[_0x177a('0x35')]);_0x319125[_0x177a('0x37')]=_['intersection'](_0x319125['model'],_0x319125[_0x177a('0x35')]);_0x205582[_0x177a('0x38')]=_[_0x177a('0x39')](_0x319125[_0x177a('0x34')],qs[_0x177a('0x3a')](_0x1ddc43['query'][_0x177a('0x3a')]));_0x205582[_0x177a('0x38')]=_0x205582[_0x177a('0x38')][_0x177a('0x3b')]?_0x205582['attributes']:_0x319125[_0x177a('0x34')];if(!_0x1ddc43['query'][_0x177a('0x3c')](_0x177a('0x3d'))){_0x205582[_0x177a('0x26')]=qs[_0x177a('0x26')](_0x1ddc43[_0x177a('0x35')][_0x177a('0x26')]);_0x205582['offset']=qs[_0x177a('0x24')](_0x1ddc43['query'][_0x177a('0x24')]);}_0x205582['order']=qs[_0x177a('0x3e')](_0x1ddc43[_0x177a('0x35')][_0x177a('0x3e')]);_0x205582[_0x177a('0x3f')]=qs[_0x177a('0x37')](_[_0x177a('0x40')](_0x1ddc43[_0x177a('0x35')],_0x319125[_0x177a('0x37')]),_0x2ace2e);if(_0x1ddc43['query'][_0x177a('0x41')]){_0x205582[_0x177a('0x3f')]=_[_0x177a('0x42')](_0x205582[_0x177a('0x3f')],{'$or':_[_0x177a('0x30')](_0x2ace2e,function(_0x13fee7){if(_0x13fee7[_0x177a('0x43')]!==_0x177a('0x44')){var _0x2c9471={};_0x2c9471[_0x13fee7[_0x177a('0x2e')]]={'$like':'%'+_0x1ddc43[_0x177a('0x35')][_0x177a('0x41')]+'%'};return _0x2c9471;}})});}_0x205582=_[_0x177a('0x42')]({},_0x205582,_0x1ddc43[_0x177a('0x45')]);var _0x2e766c={'where':_0x205582['where']};return db[_0x177a('0x31')]['count'](_0x2e766c)[_0x177a('0x2a')](function(_0x50bf94){_0x40dec1[_0x177a('0x27')]=_0x50bf94;if(_0x1ddc43[_0x177a('0x35')][_0x177a('0x46')]){_0x205582[_0x177a('0x47')]=[{'all':!![]}];}return db[_0x177a('0x31')][_0x177a('0x48')](_0x205582);})[_0x177a('0x2a')](function(_0x4d1f29){_0x40dec1[_0x177a('0x49')]=_0x4d1f29;return _0x40dec1;})[_0x177a('0x2a')](respondWithFilteredResult(_0x192fa7,_0x205582))[_0x177a('0x21')](handleError(_0x192fa7,null));};exports[_0x177a('0x4a')]=function(_0x1586c5,_0xd9dc34){var _0x2bb008={'raw':!![],'where':{'id':_0x1586c5[_0x177a('0x4b')]['id']}},_0x9cc33f={};_0x9cc33f[_0x177a('0x34')]=_['keys'](db[_0x177a('0x31')]['rawAttributes']);_0x9cc33f[_0x177a('0x35')]=_['keys'](_0x1586c5[_0x177a('0x35')]);_0x9cc33f[_0x177a('0x37')]=_[_0x177a('0x39')](_0x9cc33f[_0x177a('0x34')],_0x9cc33f[_0x177a('0x35')]);_0x2bb008['attributes']=_['intersection'](_0x9cc33f[_0x177a('0x34')],qs[_0x177a('0x3a')](_0x1586c5[_0x177a('0x35')][_0x177a('0x3a')]));_0x2bb008[_0x177a('0x38')]=_0x2bb008[_0x177a('0x38')][_0x177a('0x3b')]?_0x2bb008[_0x177a('0x38')]:_0x9cc33f[_0x177a('0x34')];if(_0x1586c5[_0x177a('0x35')][_0x177a('0x46')]){_0x2bb008['include']=[{'all':!![]}];}_0x2bb008=_['merge']({},_0x2bb008,_0x1586c5[_0x177a('0x45')]);return db[_0x177a('0x31')]['find'](_0x2bb008)[_0x177a('0x2a')](handleEntityNotFound(_0xd9dc34,null))[_0x177a('0x2a')](respondWithResult(_0xd9dc34,null))[_0x177a('0x21')](handleError(_0xd9dc34,null));};exports[_0x177a('0x29')]=function(_0x4e627e,_0x5395a1){if(_0x4e627e['body']['id']){delete _0x4e627e[_0x177a('0x4c')]['id'];}return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x4e627e['params']['id']}})[_0x177a('0x2a')](handleEntityNotFound(_0x5395a1,null))[_0x177a('0x2a')](saveUpdates(_0x4e627e[_0x177a('0x4c')],null))[_0x177a('0x2a')](respondWithResult(_0x5395a1,null))['catch'](handleError(_0x5395a1,null));};exports[_0x177a('0x2b')]=function(_0x4a9630,_0x353efd){return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x4a9630[_0x177a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x353efd,null))[_0x177a('0x2a')](removeEntity(_0x353efd,null))['catch'](handleError(_0x353efd,null));};exports[_0x177a('0x4e')]=function(_0x1e85cf,_0x558298){return db[_0x177a('0x31')][_0x177a('0x4e')]()[_0x177a('0x2a')](respondWithResult(_0x558298,null))[_0x177a('0x21')](handleError(_0x558298,null));};exports[_0x177a('0x4f')]=function(_0x218944,_0x175f5f){return db[_0x177a('0x31')]['create'](_0x218944['body'])['then'](function(_0x6d0da1){if(_0x6d0da1){if(_0x6d0da1[_0x177a('0x50')]===_0x177a('0x51')&&!_0x6d0da1[_0x177a('0x52')]){var _0x560152,_0x46ef3f,_0x3c806a;if(_0x218944[_0x177a('0x4c')]['to']){_0x46ef3f=_0x218944[_0x177a('0x4c')]['to'][_0x177a('0x53')](',')[0x0];}return db[_0x177a('0x54')]['findOne']({'where':{'id':_0x6d0da1[_0x177a('0x55')]},'include':[{'model':db[_0x177a('0x56')],'as':_0x177a('0x57'),'include':[{'model':db[_0x177a('0x58')],'as':_0x177a('0x59'),'where':{'email':_0x46ef3f},'limit':0x1,'order':[['updatedAt',_0x177a('0x5a')]]}]},{'model':db[_0x177a('0x5b')],'as':_0x177a('0x5c'),'raw':!![]}]})[_0x177a('0x2a')](function(_0x589df8){_0x560152=_0x589df8;if(_0x560152&&_0x560152[_0x177a('0x5c')]){var _0x33afbc={'tls':{'rejectUnauthorized':![]}};if(_[_0x177a('0x5d')](_0x560152[_0x177a('0x5c')][_0x177a('0x5e')])){_0x33afbc['host']=_0x560152[_0x177a('0x5c')][_0x177a('0x5f')];_0x33afbc['port']=_0x560152[_0x177a('0x5c')]['port'];_0x33afbc[_0x177a('0x60')]=_0x560152[_0x177a('0x5c')]['secure'];if(_0x560152[_0x177a('0x5c')][_0x177a('0x61')]){_0x33afbc['auth']={'user':_0x560152['Smtp'][_0x177a('0x62')],'pass':_0x560152['Smtp'][_0x177a('0x63')]};}}else{_0x33afbc[_0x177a('0x5e')]=_0x560152[_0x177a('0x5c')][_0x177a('0x5e')];_0x33afbc[_0x177a('0x64')]={'user':_0x560152[_0x177a('0x5c')][_0x177a('0x62')],'pass':_0x560152['Smtp'][_0x177a('0x63')]};_0x33afbc[_0x177a('0x60')]=_0x560152['Smtp']['secure'];}if(_0x218944[_0x177a('0x4c')][_0x177a('0x65')]&&_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x177a('0x3b')]){for(var _0x5ee4fc=0x0;_0x5ee4fc<_0x218944[_0x177a('0x4c')]['attachments'][_0x177a('0x3b')];_0x5ee4fc+=0x1){_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x5ee4fc]={'filename':_0x218944[_0x177a('0x4c')]['attachments'][_0x5ee4fc]['name'],'path':path[_0x177a('0x66')](config[_0x177a('0x67')],_0x177a('0x68'),_0x218944[_0x177a('0x4c')][_0x177a('0x65')][_0x5ee4fc][_0x177a('0x69')])};}}_0x3c806a={'account':_0x33afbc,'message':_0x218944[_0x177a('0x4c')]};return;}})[_0x177a('0x2a')](function(){if(_0x560152[_0x177a('0x57')]){if(_0x560152['List'][_0x177a('0x59')][_0x177a('0x3b')]){return _0x560152['List'][_0x177a('0x59')][0x0];}else{return db[_0x177a('0x58')][_0x177a('0x4f')](_[_0x177a('0xd')](_0x218944[_0x177a('0x4c')],{'firstName':_0x218944[_0x177a('0x4c')]['to'],'email':_0x218944[_0x177a('0x4c')]['to'],'phone':_0x218944[_0x177a('0x4c')]['to'],'ListId':_0x560152[_0x177a('0x6a')]}));}}else{throw new Error(_0x177a('0x6b'));}})[_0x177a('0x2a')](function(){if(_0x3c806a){return respondWithRpcPromise('SendMail',_0x177a('0x6c'),_0x3c806a,client9003)['then'](function(_0x4ee109){return _0x6d0da1[_0x177a('0x29')]({'read':!![],'messageId':_0x4ee109['messageId'],'sentAt':moment()[_0x177a('0x6d')](_0x177a('0x6e'))});})[_0x177a('0x21')](function(_0xb4e518){logger['error']('%s',JSON['stringify'](_0xb4e518));return _0x6d0da1;});}return _0x6d0da1;});}return _0x6d0da1;}})[_0x177a('0x2a')](respondWithResult(_0x175f5f,0xc9))[_0x177a('0x21')](handleError(_0x175f5f,null));};exports[_0x177a('0x6f')]=function(_0x2e8ccd,_0xa59270){var _0x186d40={'agent':{},'channel':_0x177a('0x70')};if(_0x2e8ccd[_0x177a('0x4c')]['id']){delete _0x2e8ccd['body']['id'];}_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x71')]=!![];_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x72')]=moment()['format'](_0x177a('0x6e'));_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x73')]=_0x2e8ccd[_0x177a('0x4c')]['UserId']||_0x2e8ccd[_0x177a('0x62')]['id'];_0x186d40[_0x177a('0x74')]['id']=_0x2e8ccd['body']['UserId'];return db[_0x177a('0x31')][_0x177a('0x4d')]({'where':{'id':_0x2e8ccd['params']['id'],'UserId':null}})[_0x177a('0x2a')](handleEntityNotFound(_0xa59270,null))[_0x177a('0x2a')](saveUpdates(_0x2e8ccd[_0x177a('0x4c')],null))[_0x177a('0x2a')](function(_0x450be7){if(_0x450be7){_0x186d40[_0x177a('0x1e')]=_0x450be7[_0x177a('0x75')]({'plain':!![]});return db[_0x177a('0x76')][_0x177a('0x4d')]({'where':{'id':_0x450be7[_0x177a('0x77')]}});}return null;})[_0x177a('0x2a')](handleEntityNotFound(_0xa59270,null))[_0x177a('0x2a')](function(_0x6fb022){if(_0x6fb022){return _0x6fb022[_0x177a('0x29')]({'UserId':_0x2e8ccd[_0x177a('0x4c')]['UserId'],'read1stAt':_[_0x177a('0x5d')](_0x6fb022[_0x177a('0x78')])?moment()['format'](_0x177a('0x6e')):undefined});}return null;})[_0x177a('0x2a')](function(_0x151636){if(_0x151636){_0x186d40[_0x177a('0x79')]=_0x151636[_0x177a('0x75')]({'plain':!![]});interaction_log[_0x177a('0x1f')](_0x177a('0x7a'),_0x2e8ccd[_0x177a('0x62')]['id'],_0x2e8ccd['user']['name'],_0x2e8ccd['user'][_0x177a('0x7b')],_0x186d40['interaction']['id'],_0x2e8ccd['body']?JSON[_0x177a('0x7c')](_0x2e8ccd[_0x177a('0x4c')]):_0x177a('0x7d'));return respondWithRpcPromise('AcceptMessage',_0x177a('0x7e'),_0x186d40);}return null;})[_0x177a('0x2a')](function(_0x3f2e7a){var _0x1c3f2c=_0x177a('0x7f')+_0x3f2e7a[_0x177a('0x1e')][_0x177a('0x80')];return db['sequelize'][_0x177a('0x35')](_0x1c3f2c,{'type':db[_0x177a('0x81')][_0x177a('0x82')][_0x177a('0x83')],'raw':!![]})[_0x177a('0x2a')](function(_0x4632c2){return _0x4632c2;});})[_0x177a('0x2a')](function(_0x24ffca){if(_0x24ffca){_0x186d40[_0x177a('0x1e')][_0x177a('0x84')]=_0x24ffca[0x0];if(!_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x73')])return;return db[_0x177a('0x85')]['find']({'where':{'id':_0x2e8ccd[_0x177a('0x4c')]['UserId'],'role':_0x177a('0x74')},'attributes':['id','name',_0x177a('0x86'),_0x177a('0x87'),_0x177a('0x88')],'raw':!![]});}return null;})[_0x177a('0x2a')](function(_0x12e0ae){if(!_0x12e0ae)return null;_0x186d40[_0x177a('0x1e')][_0x177a('0x74')]=_0x12e0ae;return _0x186d40;})[_0x177a('0x2a')](function(_0x380204){if(_0x380204){if(_0x2e8ccd[_0x177a('0x4c')][_0x177a('0x89')]){_0x186d40['message']['interface']=util[_0x177a('0x6d')](_0x177a('0x8a'),_0x2e8ccd[_0x177a('0x62')]['name']);_0x186d40[_0x177a('0x1e')]['channel']=_0x186d40[_0x177a('0x8b')];_0x186d40[_0x177a('0x1e')]['motionChannel']=_0x186d40['channel'];_0x186d40[_0x177a('0x1e')][_0x177a('0x8c')]='accept';_0x186d40[_0x177a('0x1e')][_0x177a('0x4c')]=htmlToText[_0x177a('0x8d')](_0x186d40['message'][_0x177a('0x4c')]);return respondWithRpcPromise(_0x177a('0x8e'),_0x177a('0x8e'),{'event':_0x177a('0x8f'),'message':_0x186d40[_0x177a('0x1e')]},client9002)[_0x177a('0x2a')](function(){return _0x186d40;});}return _0x186d40;}return null;})[_0x177a('0x2a')](respondWithResult(_0xa59270,null))[_0x177a('0x21')](handleError(_0xa59270,null));};exports['reject']=function(_0x1f68c5,_0x4cacd0){var _0x4d9869={'agent':{},'channel':_0x177a('0x70')};if(_0x1f68c5[_0x177a('0x4c')]['id']){delete _0x1f68c5[_0x177a('0x4c')]['id'];}_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')]=_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')]||_0x1f68c5[_0x177a('0x62')]['id'];_0x4d9869[_0x177a('0x74')]['id']=_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')];return db['MailMessage']['find']({'where':{'id':_0x1f68c5['params']['id'],'UserId':null}})[_0x177a('0x2a')](handleEntityNotFound(_0x4cacd0,null))[_0x177a('0x2a')](function(_0x396976){if(_0x396976){_0x4d9869[_0x177a('0x1e')]=_0x396976[_0x177a('0x75')]({'plain':!![]});return db[_0x177a('0x76')]['find']({'where':{'id':_0x396976[_0x177a('0x77')]}});}return null;})[_0x177a('0x2a')](handleEntityNotFound(_0x4cacd0,null))[_0x177a('0x2a')](function(_0x2fdf66){if(_0x2fdf66){_0x4d9869[_0x177a('0x79')]=_0x2fdf66[_0x177a('0x75')]({'plain':!![]});interaction_log['info'](_0x177a('0x90'),_0x1f68c5[_0x177a('0x62')]['id'],_0x1f68c5['user'][_0x177a('0x2e')],_0x1f68c5['user'][_0x177a('0x7b')],_0x4d9869[_0x177a('0x79')]['id'],_0x1f68c5['body']?JSON[_0x177a('0x7c')](_0x1f68c5[_0x177a('0x4c')]):_0x177a('0x7d'));return respondWithRpcPromise(_0x177a('0x91'),'rejectMessage',_0x4d9869);}return null;})['then'](function(_0x29a855){var _0xcb4ded=_0x177a('0x7f')+_0x29a855[_0x177a('0x1e')][_0x177a('0x80')];return db['sequelize'][_0x177a('0x35')](_0xcb4ded,{'type':db[_0x177a('0x81')][_0x177a('0x82')][_0x177a('0x83')],'raw':!![]})[_0x177a('0x2a')](function(_0x329f27){return _0x329f27;});})[_0x177a('0x2a')](function(_0x32b295){if(_0x32b295){_0x4d9869['message']['contact']=_0x32b295[0x0];if(!_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')])return;return db['User'][_0x177a('0x4d')]({'where':{'id':_0x1f68c5[_0x177a('0x4c')][_0x177a('0x73')],'role':_0x177a('0x74')},'attributes':['id',_0x177a('0x2e'),_0x177a('0x86'),_0x177a('0x87'),_0x177a('0x88')],'raw':!![]});}return null;})[_0x177a('0x2a')](function(_0x516812){if(!_0x516812)return null;_0x4d9869[_0x177a('0x1e')][_0x177a('0x74')]=_0x516812;return _0x4d9869;})['then'](function(_0x2f11f4){if(_0x2f11f4){_0x2f11f4[_0x177a('0x1e')]['interface']=util[_0x177a('0x6d')](_0x177a('0x8a'),_0x1f68c5[_0x177a('0x62')]['name']);_0x2f11f4[_0x177a('0x1e')][_0x177a('0x8b')]=_0x4d9869[_0x177a('0x8b')];_0x2f11f4['message'][_0x177a('0x92')]=_0x4d9869['channel'];_0x2f11f4[_0x177a('0x1e')][_0x177a('0x8c')]=_0x177a('0x93');_0x2f11f4['message'][_0x177a('0x4c')]=htmlToText[_0x177a('0x8d')](_0x4d9869[_0x177a('0x1e')][_0x177a('0x4c')]);respondWithRpcPromise('EventManager',_0x177a('0x8e'),{'event':'rejectmessage','message':_0x2f11f4[_0x177a('0x1e')]},client9002);return _0x4d9869;}return null;})[_0x177a('0x2a')](respondWithResult(_0x4cacd0,null))['catch'](handleError(_0x4cacd0,null));};exports[_0x177a('0x94')]=function(_0x3ed5e5,_0x4df205){var _0xe1e0c2=moment()[_0x177a('0x95')]()[_0x177a('0x96')]();var _0x427e6d=path['join'](config[_0x177a('0x67')],_0x177a('0x97'),'files',_0x177a('0x98'));var _0x2017b5=path[_0x177a('0x66')](config['root'],_0x177a('0x97'),_0x177a('0x99'),_0x177a('0x65'));var _0x455188=util[_0x177a('0x6d')](_0x177a('0x9a'),_0xe1e0c2);return db['MailMessage'][_0x177a('0x4d')]({'where':{'id':_0x3ed5e5[_0x177a('0x4b')]['id']},'attributes':['id',_0x177a('0x4c'),_0x177a('0x9b'),'to','cc',_0x177a('0x9c'),_0x177a('0x9d'),_0x177a('0x9e')],'include':_0x3ed5e5[_0x177a('0x35')][_0x177a('0x65')]?[{'model':db['Attachment'],'as':_0x177a('0x9f')}]:undefined})[_0x177a('0x2a')](handleEntityNotFound(_0x4df205,null))[_0x177a('0x2a')](function(_0x15cdd0){if(_0x15cdd0){var _0x379e1c=_0x15cdd0;var _0x107ecf={'from':_0x379e1c[_0x177a('0x9b')],'to':_0x379e1c['to'],'subject':_0x379e1c[_0x177a('0x9d')],'html':htmlEntities[_0x177a('0xa0')](_0x379e1c[_0x177a('0x4c')]),'headers':{'Date':moment(_0x379e1c[_0x177a('0x9e')])[_0x177a('0x6d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x15cdd0['cc']){_0x107ecf['headers']['Cc']=_0x15cdd0['cc'];}if(_0x15cdd0['bcc']){_0x107ecf[_0x177a('0xa1')]['Bcc']=_0x15cdd0[_0x177a('0x9c')];}return new BPromise(function(_0x571bac,_0x2a06d1){if(_0x15cdd0[_0x177a('0x9f')]){for(var _0x17d6c0=0x0;_0x17d6c0<_0x15cdd0[_0x177a('0x9f')][_0x177a('0x3b')];_0x17d6c0++){var _0x4d8925=_0x15cdd0[_0x177a('0x9f')][_0x17d6c0];var _0x1514ab=path[_0x177a('0x66')](_0x2017b5,_0x4d8925['basename']);if(fs[_0x177a('0xa2')](_0x1514ab)){_0x107ecf['attachments'][_0x177a('0xa3')]({'name':_0x4d8925['name'],'contentType':_0x4d8925[_0x177a('0x43')],'data':fs[_0x177a('0xa4')](_0x1514ab)});}}}emlformat['build'](_0x107ecf,function(_0x1adcd2,_0x54d59b){if(_0x1adcd2)return _0x2a06d1(_0x1adcd2);fs['writeFileSync'](path['join'](_0x427e6d,_0x455188),_0x54d59b);return _0x571bac(_0x54d59b);});});}})['then'](function(_0xc305d7){if(_0xc305d7){return _0x4df205['download'](path[_0x177a('0x66')](_0x427e6d,_0x455188),_0x455188,function(_0x4f32d4){if(!_0x4f32d4)fs['unlinkSync'](path[_0x177a('0x66')](_0x427e6d,_0x455188));});}})[_0x177a('0x21')](handleError(_0x4df205,null));};
\ No newline at end of file
+var _0x83ea=['fullname','internal','interface','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','interaction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','email','SIP/%s','download','unix','toString','server','files','message-%s.eml','from','createdAt','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','Attachments','basename','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','lodash','ioredis','html-to-text','api','../../config/logger','mail-interactions','../../mysqldb','redis','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','json','offset','undefined','count','limit','status','Content-Range','update','then','end','stack','name','index','MailMessage','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','find','body','params','destroy','describe','create','out','secret','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','auth','user','service','attachments','join','root','List\x20not\x20found','SendMail','sendMail','messageId','mail','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','MailInteraction','read1stAt','format','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User'];(function(_0x585d81,_0xf6d74f){var _0x1aca0d=function(_0x3782d3){while(--_0x3782d3){_0x585d81['push'](_0x585d81['shift']());}};_0x1aca0d(++_0xf6d74f);}(_0x83ea,0x166));var _0xa83e=function(_0x4bc027,_0x433587){_0x4bc027=_0x4bc027-0x0;var _0x227241=_0x83ea[_0x4bc027];return _0x227241;};'use strict';var emlformat=require(_0xa83e('0x0'));var moment=require(_0xa83e('0x1'));var BPromise=require(_0xa83e('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0xa83e('0x3'));var Redis=require(_0xa83e('0x4'));var htmlToText=require(_0xa83e('0x5'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xa83e('0x6'));var interaction_log=require(_0xa83e('0x7'))(_0xa83e('0x8'));var config=require('../../config/environment');var db=require(_0xa83e('0x9'))['db'];config[_0xa83e('0xa')]=_['defaults'](config[_0xa83e('0xa')],{'host':_0xa83e('0xb'),'port':0x18eb});var socket=require(_0xa83e('0xc'))(new Redis(config[_0xa83e('0xa')]));var htmlEntities=require('html-entities');require(_0xa83e('0xd'))[_0xa83e('0xe')](socket);var jayson=require(_0xa83e('0xf'));var client=jayson[_0xa83e('0x10')][_0xa83e('0x11')]({'port':0x232c});var client9003=jayson[_0xa83e('0x10')][_0xa83e('0x11')]({'port':0x232b});var client9002=jayson['client'][_0xa83e('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x32ff4f,_0x19b17d,_0x227647,_0x3640e1){return new BPromise(function(_0x40e539,_0x551d89){var _0x5dc304=_0x3640e1||client;return _0x5dc304[_0xa83e('0x12')](_0x32ff4f,_0x227647)['then'](function(_0x851b82){logger[_0xa83e('0x13')](_0xa83e('0x14'),_0x19b17d,_0xa83e('0x15'));logger[_0xa83e('0x16')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x19b17d,_0xa83e('0x15'),JSON[_0xa83e('0x17')](_0x851b82));if(_0x851b82['error']){if(_0x851b82[_0xa83e('0x18')][_0xa83e('0x19')]===0x1f4){logger[_0xa83e('0x18')](_0xa83e('0x14'),_0x19b17d,_0x851b82[_0xa83e('0x18')][_0xa83e('0x1a')]);return _0x551d89(_0x851b82[_0xa83e('0x18')][_0xa83e('0x1a')]);}logger['error'](_0xa83e('0x14'),_0x19b17d,_0x851b82[_0xa83e('0x18')][_0xa83e('0x1a')]);return _0x40e539(_0x851b82[_0xa83e('0x18')][_0xa83e('0x1a')]);}else{logger[_0xa83e('0x13')](_0xa83e('0x14'),_0x19b17d,_0xa83e('0x15'));_0x40e539(_0x851b82[_0xa83e('0x1b')][_0xa83e('0x1a')]);}})[_0xa83e('0x1c')](function(_0x58c095){logger['error'](_0xa83e('0x14'),_0x19b17d,_0x58c095);_0x551d89(_0x58c095);});});}function respondWithResult(_0x247c44,_0xb79a6b){_0xb79a6b=_0xb79a6b||0xc8;return function(_0x2320c0){if(_0x2320c0){return _0x247c44['status'](_0xb79a6b)[_0xa83e('0x1d')](_0x2320c0);}};}function respondWithFilteredResult(_0x3106f9,_0x412f6b){return function(_0xefa7b1){if(_0xefa7b1){var _0x2faa40=typeof _0x412f6b[_0xa83e('0x1e')]===_0xa83e('0x1f')&&typeof _0x412f6b['limit']===_0xa83e('0x1f');var _0xb44543=_0xefa7b1[_0xa83e('0x20')];var _0x5eaa15=_0x2faa40?0x0:_0x412f6b[_0xa83e('0x1e')];var _0x38e129=_0x2faa40?_0xefa7b1['count']:_0x412f6b[_0xa83e('0x1e')]+_0x412f6b[_0xa83e('0x21')];var _0x34838e;if(_0x38e129>=_0xb44543){_0x38e129=_0xb44543;_0x34838e=0xc8;}else{_0x34838e=0xce;}_0x3106f9[_0xa83e('0x22')](_0x34838e);return _0x3106f9['set'](_0xa83e('0x23'),_0x5eaa15+'-'+_0x38e129+'/'+_0xb44543)['json'](_0xefa7b1);}return null;};}function saveUpdates(_0x4ccdbc){return function(_0x2af7db){if(_0x2af7db){return _0x2af7db[_0xa83e('0x24')](_0x4ccdbc)[_0xa83e('0x25')](function(_0xe68316){return _0xe68316;});}return null;};}function removeEntity(_0x453aba){return function(_0xf286e5){if(_0xf286e5){return _0xf286e5['destroy']()[_0xa83e('0x25')](function(){_0x453aba[_0xa83e('0x22')](0xcc)[_0xa83e('0x26')]();});}};}function handleEntityNotFound(_0x21e176){return function(_0x4d55c8){if(!_0x4d55c8){_0x21e176['sendStatus'](0x194);}return _0x4d55c8;};}function handleError(_0xafc6c,_0x2e08ae){_0x2e08ae=_0x2e08ae||0x1f4;return function(_0x20b56b){logger[_0xa83e('0x18')](_0x20b56b[_0xa83e('0x27')]);if(_0x20b56b[_0xa83e('0x28')]){delete _0x20b56b[_0xa83e('0x28')];}_0xafc6c['status'](_0x2e08ae)['send'](_0x20b56b);};}exports[_0xa83e('0x29')]=function(_0x4aa069,_0x240837){var _0x3d6933={},_0x3981c4={},_0x3571bc={'count':0x0,'rows':[]};var _0x345909=_['map'](db[_0xa83e('0x2a')][_0xa83e('0x2b')],function(_0x50c17d){return{'name':_0x50c17d['fieldName'],'type':_0x50c17d[_0xa83e('0x2c')][_0xa83e('0x2d')]};});_0x3981c4[_0xa83e('0x2e')]=_[_0xa83e('0x2f')](_0x345909,_0xa83e('0x28'));_0x3981c4[_0xa83e('0x30')]=_[_0xa83e('0x31')](_0x4aa069['query']);_0x3981c4[_0xa83e('0x32')]=_[_0xa83e('0x33')](_0x3981c4[_0xa83e('0x2e')],_0x3981c4[_0xa83e('0x30')]);_0x3d6933['attributes']=_[_0xa83e('0x33')](_0x3981c4[_0xa83e('0x2e')],qs[_0xa83e('0x34')](_0x4aa069['query']['fields']));_0x3d6933[_0xa83e('0x35')]=_0x3d6933[_0xa83e('0x35')][_0xa83e('0x36')]?_0x3d6933[_0xa83e('0x35')]:_0x3981c4[_0xa83e('0x2e')];if(!_0x4aa069[_0xa83e('0x30')][_0xa83e('0x37')](_0xa83e('0x38'))){_0x3d6933[_0xa83e('0x21')]=qs[_0xa83e('0x21')](_0x4aa069['query'][_0xa83e('0x21')]);_0x3d6933['offset']=qs['offset'](_0x4aa069[_0xa83e('0x30')]['offset']);}_0x3d6933[_0xa83e('0x39')]=qs[_0xa83e('0x3a')](_0x4aa069['query'][_0xa83e('0x3a')]);_0x3d6933[_0xa83e('0x3b')]=qs[_0xa83e('0x32')](_[_0xa83e('0x3c')](_0x4aa069['query'],_0x3981c4[_0xa83e('0x32')]),_0x345909);if(_0x4aa069['query'][_0xa83e('0x3d')]){_0x3d6933[_0xa83e('0x3b')]=_[_0xa83e('0x3e')](_0x3d6933['where'],{'$or':_[_0xa83e('0x2f')](_0x345909,function(_0x2501e3){if(_0x2501e3[_0xa83e('0x2c')]!==_0xa83e('0x3f')){var _0x51097d={};_0x51097d[_0x2501e3[_0xa83e('0x28')]]={'$like':'%'+_0x4aa069['query'][_0xa83e('0x3d')]+'%'};return _0x51097d;}})});}_0x3d6933=_[_0xa83e('0x3e')]({},_0x3d6933,_0x4aa069[_0xa83e('0x40')]);var _0x979fca={'where':_0x3d6933['where']};return db[_0xa83e('0x2a')][_0xa83e('0x20')](_0x979fca)[_0xa83e('0x25')](function(_0x5455bf){_0x3571bc[_0xa83e('0x20')]=_0x5455bf;if(_0x4aa069[_0xa83e('0x30')][_0xa83e('0x41')]){_0x3d6933['include']=[{'all':!![]}];}return db[_0xa83e('0x2a')][_0xa83e('0x42')](_0x3d6933);})[_0xa83e('0x25')](function(_0x40b318){_0x3571bc[_0xa83e('0x43')]=_0x40b318;return _0x3571bc;})[_0xa83e('0x25')](respondWithFilteredResult(_0x240837,_0x3d6933))[_0xa83e('0x1c')](handleError(_0x240837,null));};exports[_0xa83e('0x44')]=function(_0x100347,_0x52cd37){var _0x1b6b31={'raw':!![],'where':{'id':_0x100347['params']['id']}},_0x5ebd63={};_0x5ebd63[_0xa83e('0x2e')]=_['keys'](db['MailMessage'][_0xa83e('0x2b')]);_0x5ebd63[_0xa83e('0x30')]=_[_0xa83e('0x31')](_0x100347[_0xa83e('0x30')]);_0x5ebd63[_0xa83e('0x32')]=_[_0xa83e('0x33')](_0x5ebd63['model'],_0x5ebd63[_0xa83e('0x30')]);_0x1b6b31[_0xa83e('0x35')]=_[_0xa83e('0x33')](_0x5ebd63[_0xa83e('0x2e')],qs[_0xa83e('0x34')](_0x100347[_0xa83e('0x30')][_0xa83e('0x34')]));_0x1b6b31[_0xa83e('0x35')]=_0x1b6b31[_0xa83e('0x35')][_0xa83e('0x36')]?_0x1b6b31[_0xa83e('0x35')]:_0x5ebd63[_0xa83e('0x2e')];if(_0x100347[_0xa83e('0x30')]['includeAll']){_0x1b6b31[_0xa83e('0x45')]=[{'all':!![]}];}_0x1b6b31=_['merge']({},_0x1b6b31,_0x100347[_0xa83e('0x40')]);return db[_0xa83e('0x2a')][_0xa83e('0x46')](_0x1b6b31)[_0xa83e('0x25')](handleEntityNotFound(_0x52cd37,null))[_0xa83e('0x25')](respondWithResult(_0x52cd37,null))['catch'](handleError(_0x52cd37,null));};exports[_0xa83e('0x24')]=function(_0x2bc5e8,_0xf357e6){if(_0x2bc5e8['body']['id']){delete _0x2bc5e8[_0xa83e('0x47')]['id'];}return db[_0xa83e('0x2a')][_0xa83e('0x46')]({'where':{'id':_0x2bc5e8[_0xa83e('0x48')]['id']}})[_0xa83e('0x25')](handleEntityNotFound(_0xf357e6,null))[_0xa83e('0x25')](saveUpdates(_0x2bc5e8[_0xa83e('0x47')],null))[_0xa83e('0x25')](respondWithResult(_0xf357e6,null))[_0xa83e('0x1c')](handleError(_0xf357e6,null));};exports[_0xa83e('0x49')]=function(_0x6c0b59,_0x2c2a4d){return db[_0xa83e('0x2a')]['find']({'where':{'id':_0x6c0b59['params']['id']}})['then'](handleEntityNotFound(_0x2c2a4d,null))['then'](removeEntity(_0x2c2a4d,null))[_0xa83e('0x1c')](handleError(_0x2c2a4d,null));};exports[_0xa83e('0x4a')]=function(_0x2b6f29,_0x430b60){return db['MailMessage'][_0xa83e('0x4a')]()[_0xa83e('0x25')](respondWithResult(_0x430b60,null))[_0xa83e('0x1c')](handleError(_0x430b60,null));};exports['create']=function(_0x3285df,_0x36acef){return db['MailMessage'][_0xa83e('0x4b')](_0x3285df[_0xa83e('0x47')])[_0xa83e('0x25')](function(_0x1674d4){if(_0x1674d4){if(_0x1674d4['direction']===_0xa83e('0x4c')&&!_0x1674d4[_0xa83e('0x4d')]){var _0x52612b,_0x154ccb,_0x1c8457;if(_0x3285df['body']['to']){_0x154ccb=_0x3285df[_0xa83e('0x47')]['to']['split'](',')[0x0];}return db[_0xa83e('0x4e')]['findOne']({'where':{'id':_0x1674d4[_0xa83e('0x4f')]},'include':[{'model':db[_0xa83e('0x50')],'as':_0xa83e('0x51'),'include':[{'model':db[_0xa83e('0x52')],'as':_0xa83e('0x53'),'where':{'email':_0x154ccb},'limit':0x1,'order':[[_0xa83e('0x54'),_0xa83e('0x55')]]}]},{'model':db[_0xa83e('0x56')],'as':_0xa83e('0x57'),'raw':!![]}]})[_0xa83e('0x25')](function(_0x215190){_0x52612b=_0x215190;if(_0x52612b&&_0x52612b[_0xa83e('0x57')]){var _0x4f5639={'tls':{'rejectUnauthorized':![]}};if(_[_0xa83e('0x58')](_0x52612b[_0xa83e('0x57')]['service'])){_0x4f5639[_0xa83e('0x59')]=_0x52612b[_0xa83e('0x57')][_0xa83e('0x59')];_0x4f5639['port']=_0x52612b['Smtp'][_0xa83e('0x5a')];_0x4f5639['secure']=_0x52612b[_0xa83e('0x57')]['secure'];if(_0x52612b['Smtp']['authentication']){_0x4f5639[_0xa83e('0x5b')]={'user':_0x52612b[_0xa83e('0x57')][_0xa83e('0x5c')],'pass':_0x52612b[_0xa83e('0x57')]['pass']};}}else{_0x4f5639[_0xa83e('0x5d')]=_0x52612b[_0xa83e('0x57')][_0xa83e('0x5d')];_0x4f5639['auth']={'user':_0x52612b['Smtp'][_0xa83e('0x5c')],'pass':_0x52612b[_0xa83e('0x57')]['pass']};_0x4f5639['secure']=_0x52612b[_0xa83e('0x57')]['secure'];}if(_0x3285df[_0xa83e('0x47')][_0xa83e('0x5e')]&&_0x3285df['body'][_0xa83e('0x5e')]['length']){for(var _0x1e4d51=0x0;_0x1e4d51<_0x3285df['body'][_0xa83e('0x5e')][_0xa83e('0x36')];_0x1e4d51+=0x1){_0x3285df[_0xa83e('0x47')][_0xa83e('0x5e')][_0x1e4d51]={'filename':_0x3285df[_0xa83e('0x47')][_0xa83e('0x5e')][_0x1e4d51]['name'],'path':path[_0xa83e('0x5f')](config[_0xa83e('0x60')],'server/files/attachments',_0x3285df[_0xa83e('0x47')][_0xa83e('0x5e')][_0x1e4d51]['basename'])};}}_0x1c8457={'account':_0x4f5639,'message':_0x3285df['body']};return;}})[_0xa83e('0x25')](function(){if(_0x52612b['List']){if(_0x52612b[_0xa83e('0x51')][_0xa83e('0x53')]['length']){return _0x52612b[_0xa83e('0x51')][_0xa83e('0x53')][0x0];}else{return db['CmContact'][_0xa83e('0x4b')](_['defaults'](_0x3285df['body'],{'firstName':_0x3285df['body']['to'],'email':_0x3285df[_0xa83e('0x47')]['to'],'phone':_0x3285df[_0xa83e('0x47')]['to'],'ListId':_0x52612b['ListId']}));}}else{throw new Error(_0xa83e('0x61'));}})['then'](function(){if(_0x1c8457){return respondWithRpcPromise(_0xa83e('0x62'),_0xa83e('0x63'),_0x1c8457,client9003)[_0xa83e('0x25')](function(_0x3067b3){return _0x1674d4[_0xa83e('0x24')]({'read':!![],'messageId':_0x3067b3[_0xa83e('0x64')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0xa83e('0x1c')](function(_0x21d429){logger[_0xa83e('0x18')]('%s',JSON['stringify'](_0x21d429));return _0x1674d4;});}return _0x1674d4;});}return _0x1674d4;}})[_0xa83e('0x25')](respondWithResult(_0x36acef,0xc9))[_0xa83e('0x1c')](handleError(_0x36acef,null));};exports['accept']=function(_0x415f92,_0x619bf8){var _0x5ee7d2={'agent':{},'channel':_0xa83e('0x65')};if(_0x415f92[_0xa83e('0x47')]['id']){delete _0x415f92[_0xa83e('0x47')]['id'];}_0x415f92['body'][_0xa83e('0x66')]=!![];_0x415f92[_0xa83e('0x47')][_0xa83e('0x67')]=moment()['format'](_0xa83e('0x68'));_0x415f92[_0xa83e('0x47')][_0xa83e('0x69')]=_0x415f92[_0xa83e('0x47')]['UserId']||_0x415f92['user']['id'];_0x5ee7d2[_0xa83e('0x6a')]['id']=_0x415f92[_0xa83e('0x47')]['UserId'];return db[_0xa83e('0x2a')]['find']({'where':{'id':_0x415f92[_0xa83e('0x48')]['id'],'UserId':null}})[_0xa83e('0x25')](handleEntityNotFound(_0x619bf8,null))[_0xa83e('0x25')](saveUpdates(_0x415f92[_0xa83e('0x47')],null))[_0xa83e('0x25')](function(_0x196718){if(_0x196718){_0x5ee7d2[_0xa83e('0x1a')]=_0x196718[_0xa83e('0x6b')]({'plain':!![]});return db[_0xa83e('0x6c')]['find']({'where':{'id':_0x196718['MailInteractionId']}});}return null;})[_0xa83e('0x25')](handleEntityNotFound(_0x619bf8,null))[_0xa83e('0x25')](function(_0x1cf9fd){if(_0x1cf9fd){return _0x1cf9fd[_0xa83e('0x24')]({'UserId':_0x415f92[_0xa83e('0x47')][_0xa83e('0x69')],'read1stAt':_['isNil'](_0x1cf9fd[_0xa83e('0x6d')])?moment()[_0xa83e('0x6e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xa83e('0x25')](function(_0x3a8a56){if(_0x3a8a56){_0x5ee7d2['interaction']=_0x3a8a56['get']({'plain':!![]});interaction_log[_0xa83e('0x13')](_0xa83e('0x6f'),_0x415f92[_0xa83e('0x5c')]['id'],_0x415f92[_0xa83e('0x5c')][_0xa83e('0x28')],_0x415f92[_0xa83e('0x5c')][_0xa83e('0x70')],_0x5ee7d2['interaction']['id'],_0x415f92['body']?JSON[_0xa83e('0x17')](_0x415f92[_0xa83e('0x47')]):_0xa83e('0x71'));return respondWithRpcPromise('AcceptMessage',_0xa83e('0x72'),_0x5ee7d2);}return null;})[_0xa83e('0x25')](function(_0x29db0f){var _0x19a22d=_0xa83e('0x73')+_0x29db0f[_0xa83e('0x1a')]['ContactId'];return db[_0xa83e('0x74')][_0xa83e('0x30')](_0x19a22d,{'type':db[_0xa83e('0x75')][_0xa83e('0x76')][_0xa83e('0x77')],'raw':!![]})[_0xa83e('0x25')](function(_0x30b4ca){return _0x30b4ca;});})[_0xa83e('0x25')](function(_0x3b11c8){if(_0x3b11c8){_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x78')]=_0x3b11c8[0x0];if(!_0x415f92['body'][_0xa83e('0x69')])return;return db[_0xa83e('0x79')][_0xa83e('0x46')]({'where':{'id':_0x415f92[_0xa83e('0x47')][_0xa83e('0x69')],'role':'agent'},'attributes':['id',_0xa83e('0x28'),_0xa83e('0x7a'),'email',_0xa83e('0x7b')],'raw':!![]});}return null;})[_0xa83e('0x25')](function(_0x1ae246){if(!_0x1ae246)return null;_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x6a')]=_0x1ae246;return _0x5ee7d2;})['then'](function(_0x2a9d10){if(_0x2a9d10){if(_0x415f92[_0xa83e('0x47')]['manual']){_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x7c')]=util[_0xa83e('0x6e')]('SIP/%s',_0x415f92[_0xa83e('0x5c')][_0xa83e('0x28')]);_0x5ee7d2[_0xa83e('0x1a')]['channel']=_0x5ee7d2[_0xa83e('0x7d')];_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x7e')]=_0x5ee7d2[_0xa83e('0x7d')];_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x7f')]='accept';_0x5ee7d2[_0xa83e('0x1a')][_0xa83e('0x47')]=htmlToText[_0xa83e('0x80')](_0x5ee7d2['message'][_0xa83e('0x47')]);return respondWithRpcPromise(_0xa83e('0x81'),_0xa83e('0x81'),{'event':_0xa83e('0x82'),'message':_0x5ee7d2[_0xa83e('0x1a')]},client9002)[_0xa83e('0x25')](function(){return _0x5ee7d2;});}return _0x5ee7d2;}return null;})['then'](respondWithResult(_0x619bf8,null))['catch'](handleError(_0x619bf8,null));};exports[_0xa83e('0x83')]=function(_0x3b2a84,_0x245020){var _0x26edc1={'agent':{},'channel':_0xa83e('0x65')};if(_0x3b2a84[_0xa83e('0x47')]['id']){delete _0x3b2a84[_0xa83e('0x47')]['id'];}_0x3b2a84[_0xa83e('0x47')][_0xa83e('0x69')]=_0x3b2a84[_0xa83e('0x47')]['UserId']||_0x3b2a84[_0xa83e('0x5c')]['id'];_0x26edc1[_0xa83e('0x6a')]['id']=_0x3b2a84['body'][_0xa83e('0x69')];return db[_0xa83e('0x2a')]['find']({'where':{'id':_0x3b2a84['params']['id'],'UserId':null}})[_0xa83e('0x25')](handleEntityNotFound(_0x245020,null))[_0xa83e('0x25')](function(_0x2d8c43){if(_0x2d8c43){_0x26edc1[_0xa83e('0x1a')]=_0x2d8c43[_0xa83e('0x6b')]({'plain':!![]});return db[_0xa83e('0x6c')][_0xa83e('0x46')]({'where':{'id':_0x2d8c43['MailInteractionId']}});}return null;})[_0xa83e('0x25')](handleEntityNotFound(_0x245020,null))['then'](function(_0x1170fb){if(_0x1170fb){_0x26edc1[_0xa83e('0x84')]=_0x1170fb[_0xa83e('0x6b')]({'plain':!![]});interaction_log[_0xa83e('0x13')](_0xa83e('0x85'),_0x3b2a84['user']['id'],_0x3b2a84['user'][_0xa83e('0x28')],_0x3b2a84[_0xa83e('0x5c')][_0xa83e('0x70')],_0x26edc1[_0xa83e('0x84')]['id'],_0x3b2a84['body']?JSON[_0xa83e('0x17')](_0x3b2a84[_0xa83e('0x47')]):_0xa83e('0x71'));return respondWithRpcPromise(_0xa83e('0x86'),_0xa83e('0x87'),_0x26edc1);}return null;})[_0xa83e('0x25')](function(_0x36379d){var _0x55c3a1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x36379d[_0xa83e('0x1a')][_0xa83e('0x88')];return db[_0xa83e('0x74')]['query'](_0x55c3a1,{'type':db['Sequelize'][_0xa83e('0x76')]['SELECT'],'raw':!![]})['then'](function(_0x252dce){return _0x252dce;});})[_0xa83e('0x25')](function(_0x5a301d){if(_0x5a301d){_0x26edc1[_0xa83e('0x1a')]['contact']=_0x5a301d[0x0];if(!_0x3b2a84[_0xa83e('0x47')]['UserId'])return;return db[_0xa83e('0x79')]['find']({'where':{'id':_0x3b2a84[_0xa83e('0x47')][_0xa83e('0x69')],'role':'agent'},'attributes':['id','name',_0xa83e('0x7a'),_0xa83e('0x89'),_0xa83e('0x7b')],'raw':!![]});}return null;})['then'](function(_0x5d4e4c){if(!_0x5d4e4c)return null;_0x26edc1['message'][_0xa83e('0x6a')]=_0x5d4e4c;return _0x26edc1;})[_0xa83e('0x25')](function(_0x142b71){if(_0x142b71){_0x142b71['message'][_0xa83e('0x7c')]=util[_0xa83e('0x6e')](_0xa83e('0x8a'),_0x3b2a84[_0xa83e('0x5c')][_0xa83e('0x28')]);_0x142b71[_0xa83e('0x1a')][_0xa83e('0x7d')]=_0x26edc1['channel'];_0x142b71[_0xa83e('0x1a')]['motionChannel']=_0x26edc1[_0xa83e('0x7d')];_0x142b71['message'][_0xa83e('0x7f')]=_0xa83e('0x83');_0x142b71[_0xa83e('0x1a')][_0xa83e('0x47')]=htmlToText[_0xa83e('0x80')](_0x26edc1['message'][_0xa83e('0x47')]);respondWithRpcPromise(_0xa83e('0x81'),_0xa83e('0x81'),{'event':'rejectmessage','message':_0x142b71['message']},client9002);return _0x26edc1;}return null;})['then'](respondWithResult(_0x245020,null))[_0xa83e('0x1c')](handleError(_0x245020,null));};exports[_0xa83e('0x8b')]=function(_0x528add,_0x1502f9){var _0xcc25ed=moment()[_0xa83e('0x8c')]()[_0xa83e('0x8d')]();var _0x1fe90a=path['join'](config['root'],_0xa83e('0x8e'),_0xa83e('0x8f'),'tmp');var _0x4b2f7e=path[_0xa83e('0x5f')](config['root'],'server',_0xa83e('0x8f'),_0xa83e('0x5e'));var _0x31e4fc=util['format'](_0xa83e('0x90'),_0xcc25ed);return db[_0xa83e('0x2a')][_0xa83e('0x46')]({'where':{'id':_0x528add[_0xa83e('0x48')]['id']},'attributes':['id',_0xa83e('0x47'),_0xa83e('0x91'),'to','cc','bcc','subject',_0xa83e('0x92')],'include':_0x528add[_0xa83e('0x30')][_0xa83e('0x5e')]?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0xa83e('0x25')](handleEntityNotFound(_0x1502f9,null))[_0xa83e('0x25')](function(_0x154729){if(_0x154729){var _0x5619e8=_0x154729;var _0x2b503d={'from':_0x5619e8['from'],'to':_0x5619e8['to'],'subject':_0x5619e8['subject'],'html':htmlEntities[_0xa83e('0x93')](_0x5619e8[_0xa83e('0x47')]),'headers':{'Date':moment(_0x5619e8['createdAt'])[_0xa83e('0x6e')](_0xa83e('0x94'))},'attachments':[]};if(_0x154729['cc']){_0x2b503d[_0xa83e('0x95')]['Cc']=_0x154729['cc'];}if(_0x154729[_0xa83e('0x96')]){_0x2b503d[_0xa83e('0x95')][_0xa83e('0x97')]=_0x154729[_0xa83e('0x96')];}return new BPromise(function(_0x260e9a,_0x304f43){if(_0x154729[_0xa83e('0x98')]){for(var _0x4e19d5=0x0;_0x4e19d5<_0x154729['Attachments'][_0xa83e('0x36')];_0x4e19d5++){var _0xe62ab0=_0x154729[_0xa83e('0x98')][_0x4e19d5];var _0x5e0091=path[_0xa83e('0x5f')](_0x4b2f7e,_0xe62ab0[_0xa83e('0x99')]);if(fs[_0xa83e('0x9a')](_0x5e0091)){_0x2b503d['attachments'][_0xa83e('0x9b')]({'name':_0xe62ab0[_0xa83e('0x28')],'contentType':_0xe62ab0['type'],'data':fs[_0xa83e('0x9c')](_0x5e0091)});}}}emlformat[_0xa83e('0x9d')](_0x2b503d,function(_0xb3c8a9,_0x5e5912){if(_0xb3c8a9)return _0x304f43(_0xb3c8a9);fs[_0xa83e('0x9e')](path[_0xa83e('0x5f')](_0x1fe90a,_0x31e4fc),_0x5e5912);return _0x260e9a(_0x5e5912);});});}})[_0xa83e('0x25')](function(_0x521df9){if(_0x521df9){return _0x1502f9[_0xa83e('0x8b')](path['join'](_0x1fe90a,_0x31e4fc),_0x31e4fc,function(_0x4a81a2){if(!_0x4a81a2)fs[_0xa83e('0x9f')](path[_0xa83e('0x5f')](_0x1fe90a,_0x31e4fc));});}})[_0xa83e('0x1c')](handleError(_0x1502f9,null));};
\ No newline at end of file
index 0d4efa4..7467221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6613=['exports','events','../../mysqldb','MailMessage','remove','emit','hasOwnProperty','hook'];(function(_0x4ff1fb,_0x4184d4){var _0x30e1fb=function(_0x2d6a70){while(--_0x2d6a70){_0x4ff1fb['push'](_0x4ff1fb['shift']());}};_0x30e1fb(++_0x4184d4);}(_0x6613,0xe9));var _0x3661=function(_0x5dcac3,_0x1def87){_0x5dcac3=_0x5dcac3-0x0;var _0x237b76=_0x6613[_0x5dcac3];return _0x237b76;};'use strict';var EventEmitter=require(_0x3661('0x0'));var MailMessage=require(_0x3661('0x1'))['db'][_0x3661('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3661('0x3')};function emitEvent(_0x22390f){return function(_0x20d1a7,_0xaaa0f2,_0x172938){MailMessageEvents[_0x3661('0x4')](_0x22390f+':'+_0x20d1a7['id'],_0x20d1a7);MailMessageEvents['emit'](_0x22390f,_0x20d1a7);_0x172938(null);};}for(var e in events){if(events[_0x3661('0x5')](e)){var event=events[e];MailMessage[_0x3661('0x6')](e,emitEvent(event));}}module[_0x3661('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0xc329=['MailMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5234d1,_0x49df0b){var _0x23022f=function(_0x346141){while(--_0x346141){_0x5234d1['push'](_0x5234d1['shift']());}};_0x23022f(++_0x49df0b);}(_0xc329,0xb9));var _0x9c32=function(_0x1546c2,_0x22e822){_0x1546c2=_0x1546c2-0x0;var _0x24583c=_0xc329[_0x1546c2];return _0x24583c;};'use strict';var EventEmitter=require(_0x9c32('0x0'));var MailMessage=require(_0x9c32('0x1'))['db'][_0x9c32('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x9c32('0x3')](0x0);var events={'afterCreate':_0x9c32('0x4'),'afterUpdate':_0x9c32('0x5'),'afterDestroy':_0x9c32('0x6')};function emitEvent(_0x3f9603){return function(_0x40dbea,_0x1708b3,_0x917de5){MailMessageEvents['emit'](_0x3f9603+':'+_0x40dbea['id'],_0x40dbea);MailMessageEvents[_0x9c32('0x7')](_0x3f9603,_0x40dbea);_0x917de5(null);};}for(var e in events){if(events[_0x9c32('0x8')](e)){var event=events[e];MailMessage[_0x9c32('0x9')](e,emitEvent(event));}}module[_0x9c32('0xa')]=MailMessageEvents;
\ No newline at end of file
index 2a1f6a7..3abcb61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b5=['lodash','util','api','moment','bluebird','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','MailMessage','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','secret','MailInteractionId','update','createdAt','catch','error','utf8mb4_unicode_ci'];(function(_0x26deb2,_0x49b936){var _0x2df537=function(_0x7bbe83){while(--_0x7bbe83){_0x26deb2['push'](_0x26deb2['shift']());}};_0x2df537(++_0x49b936);}(_0xf7b5,0xd9));var _0x5f7b=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0xf7b5[_0x67f95e];return _0x538f5a;};'use strict';var _=require(_0x5f7b('0x0'));var util=require(_0x5f7b('0x1'));var logger=require('../../config/logger')(_0x5f7b('0x2'));var moment=require(_0x5f7b('0x3'));var BPromise=require(_0x5f7b('0x4'));var rp=require('request-promise');var htmlToText=require(_0x5f7b('0x5'));var fs=require('fs');var path=require(_0x5f7b('0x6'));var rimraf=require(_0x5f7b('0x7'));var config=require(_0x5f7b('0x8'));var attributes=require(_0x5f7b('0x9'));module[_0x5f7b('0xa')]=function(_0x364302,_0x4cba7a){return _0x364302['define'](_0x5f7b('0xb'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x5f7b('0xc'),'fields':[_0x5f7b('0xc')]},{'name':_0x5f7b('0xd'),'fields':[_0x5f7b('0xe'),_0x5f7b('0xf')],'type':_0x5f7b('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5aa403,_0x4bd941,_0x3e6f30){if(_0x5aa403[_0x5f7b('0x11')]){_0x5aa403[_0x5f7b('0xe')]=htmlToText[_0x5f7b('0x12')](_0x5aa403[_0x5f7b('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3e6f30(null,_0x4bd941);},'afterCreate':function(_0x5c4f42,_0x22670c,_0x205e20){var _0xf776d5=_0x364302[_0x5f7b('0x13')];var _0x163ff8=_0x5c4f42[_0x5f7b('0x14')]({'plain':!![]});if(_0x163ff8[_0x5f7b('0x15')]['toLowerCase']()==='in'||_0x163ff8[_0x5f7b('0x15')][_0x5f7b('0x16')]()===_0x5f7b('0x17')&&!_0x163ff8[_0x5f7b('0x18')]&&!_['isNil'](_0x163ff8['UserId'])){_0xf776d5['MailInteraction']['findOne']({'where':{'id':_0x163ff8[_0x5f7b('0x19')]}})['then'](function(_0x1201f6){if(_0x1201f6){_0x1201f6[_0x5f7b('0x1a')]({'lastMsgAt':_0x163ff8[_0x5f7b('0x1b')],'lastMsgDirection':_0x163ff8[_0x5f7b('0x15')][_0x5f7b('0x16')]()});}})[_0x5f7b('0x1c')](function(_0x396e6f){console[_0x5f7b('0x1d')](_0x396e6f);});}_0x205e20();}},'charset':'utf8mb4','collate':_0x5f7b('0x1e')});};
\ No newline at end of file
+var _0x8dec=['direction','secret','isNil','MailInteraction','findOne','MailInteractionId','then','update','toLowerCase','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./mailMessage.attributes','exports','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','models'];(function(_0x30414a,_0x3c8ed5){var _0x77ca87=function(_0x2f53a7){while(--_0x2f53a7){_0x30414a['push'](_0x30414a['shift']());}};_0x77ca87(++_0x3c8ed5);}(_0x8dec,0x85));var _0xc8de=function(_0x3a7e42,_0x58e47d){_0x3a7e42=_0x3a7e42-0x0;var _0x7122b7=_0x8dec[_0x3a7e42];return _0x7122b7;};'use strict';var _=require(_0xc8de('0x0'));var util=require('util');var logger=require(_0xc8de('0x1'))('api');var moment=require(_0xc8de('0x2'));var BPromise=require('bluebird');var rp=require(_0xc8de('0x3'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0xc8de('0x4'));var rimraf=require(_0xc8de('0x5'));var config=require(_0xc8de('0x6'));var attributes=require(_0xc8de('0x7'));module[_0xc8de('0x8')]=function(_0x5f0d4d,_0xe6f8e9){return _0x5f0d4d['define']('MailMessage',attributes,{'tableName':_0xc8de('0x9'),'paranoid':![],'indexes':[{'name':_0xc8de('0xa'),'fields':[_0xc8de('0xa')]},{'name':_0xc8de('0xb'),'fields':[_0xc8de('0xc'),_0xc8de('0xd')],'type':_0xc8de('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x178779,_0x1e9035,_0x299849){if(_0x178779[_0xc8de('0xf')]){_0x178779[_0xc8de('0xc')]=htmlToText['fromString'](_0x178779[_0xc8de('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x299849(null,_0x1e9035);},'afterCreate':function(_0x3a407e,_0x56059f,_0x4febae){var _0x2488b7=_0x5f0d4d[_0xc8de('0x10')];var _0x57f964=_0x3a407e['get']({'plain':!![]});if(_0x57f964['direction']['toLowerCase']()==='in'||_0x57f964[_0xc8de('0x11')]['toLowerCase']()==='out'&&!_0x57f964[_0xc8de('0x12')]&&!_[_0xc8de('0x13')](_0x57f964['UserId'])){_0x2488b7[_0xc8de('0x14')][_0xc8de('0x15')]({'where':{'id':_0x57f964[_0xc8de('0x16')]}})[_0xc8de('0x17')](function(_0x362229){if(_0x362229){_0x362229[_0xc8de('0x18')]({'lastMsgAt':_0x57f964['createdAt'],'lastMsgDirection':_0x57f964[_0xc8de('0x11')][_0xc8de('0x19')]()});}})[_0xc8de('0x1a')](function(_0x500c64){console[_0xc8de('0x1b')](_0x500c64);});}_0x4febae();}},'charset':_0xc8de('0x1c'),'collate':_0xc8de('0x1d')});};
\ No newline at end of file
index 1c5f98c..2865ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['MailMessage,\x20%s,\x20%s','message','result','catch','CreateMailMessage','MailMessage','create','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./mailMessage.socket','register','then','info','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3b10e5,_0x3a4cd3){var _0x263c3f=function(_0x55a7a8){while(--_0x55a7a8){_0x3b10e5['push'](_0x3b10e5['shift']());}};_0x263c3f(++_0x3a4cd3);}(_0x9f0e,0x116));var _0xe9f0=function(_0xf5fe55,_0x1828d5){_0xf5fe55=_0xf5fe55-0x0;var _0x11dcc8=_0x9f0e[_0xf5fe55];return _0x11dcc8;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xe9f0('0xa')]=_[_0xe9f0('0xb')](config[_0xe9f0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9f0('0xc'))(new Redis(config[_0xe9f0('0xa')]));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);function respondWithRpcPromise(_0xa523c0,_0x240932,_0x807322){return new BPromise(function(_0x3724f4,_0x6acfb){return client['request'](_0xa523c0,_0x807322)[_0xe9f0('0xf')](function(_0x329ecd){logger[_0xe9f0('0x10')]('MailMessage,\x20%s,\x20%s',_0x240932,_0xe9f0('0x11'));logger['debug'](_0xe9f0('0x12'),_0x240932,_0xe9f0('0x11'),JSON[_0xe9f0('0x13')](_0x329ecd));if(_0x329ecd[_0xe9f0('0x14')]){if(_0x329ecd['error'][_0xe9f0('0x15')]===0x1f4){logger['error'](_0xe9f0('0x16'),_0x240932,_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);return _0x6acfb(_0x329ecd['error'][_0xe9f0('0x17')]);}logger[_0xe9f0('0x14')](_0xe9f0('0x16'),_0x240932,_0x329ecd['error'][_0xe9f0('0x17')]);return _0x3724f4(_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);}else{logger[_0xe9f0('0x10')](_0xe9f0('0x16'),_0x240932,_0xe9f0('0x11'));_0x3724f4(_0x329ecd[_0xe9f0('0x18')]['message']);}})[_0xe9f0('0x19')](function(_0x19e090){logger[_0xe9f0('0x14')]('MailMessage,\x20%s,\x20%s',_0x240932,_0x19e090);_0x6acfb(_0x19e090);});});}exports[_0xe9f0('0x1a')]=function(_0x30b8c7){var _0x1698cf=this;return new Promise(function(_0x43f399,_0x5ba788){return db[_0xe9f0('0x1b')][_0xe9f0('0x1c')](_0x30b8c7['body'],{'raw':_0x30b8c7['options']?_0x30b8c7['options'][_0xe9f0('0x1d')]===undefined?!![]:![]:!![]})[_0xe9f0('0xf')](function(_0x1211ae){logger[_0xe9f0('0x10')](_0xe9f0('0x1a'),_0x30b8c7);logger['debug'](_0xe9f0('0x1a'),_0x30b8c7,JSON[_0xe9f0('0x13')](_0x1211ae));_0x43f399(_0x1211ae);})[_0xe9f0('0x19')](function(_0x10801b){logger[_0xe9f0('0x14')](_0xe9f0('0x1a'),_0x10801b[_0xe9f0('0x17')],_0x30b8c7);_0x5ba788(_0x1698cf[_0xe9f0('0x14')](0x1f4,_0x10801b[_0xe9f0('0x17')]));});});};
\ No newline at end of file
+var _0x160f=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create','options','raw'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf160('0x0'));var util=require(_0xf160('0x1'));var moment=require(_0xf160('0x2'));var BPromise=require(_0xf160('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf160('0x4'));var db=require(_0xf160('0x5'))['db'];var utils=require(_0xf160('0x6'));var logger=require(_0xf160('0x7'))(_0xf160('0x8'));var config=require(_0xf160('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf160('0xa')][_0xf160('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf160('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf160('0xd'))[_0xf160('0xe')](socket);function respondWithRpcPromise(_0x393f70,_0x2736b8,_0x5e09c6){return new BPromise(function(_0x4a0639,_0xf8ec3d){return client[_0xf160('0xf')](_0x393f70,_0x5e09c6)[_0xf160('0x10')](function(_0x56072f){logger[_0xf160('0x11')](_0xf160('0x12'),_0x2736b8,_0xf160('0x13'));logger[_0xf160('0x14')](_0xf160('0x15'),_0x2736b8,'request\x20sent',JSON[_0xf160('0x16')](_0x56072f));if(_0x56072f['error']){if(_0x56072f[_0xf160('0x17')][_0xf160('0x18')]===0x1f4){logger[_0xf160('0x17')](_0xf160('0x12'),_0x2736b8,_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);return _0xf8ec3d(_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);}logger[_0xf160('0x17')]('MailMessage,\x20%s,\x20%s',_0x2736b8,_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);return _0x4a0639(_0x56072f[_0xf160('0x17')][_0xf160('0x19')]);}else{logger['info'](_0xf160('0x12'),_0x2736b8,'request\x20sent');_0x4a0639(_0x56072f[_0xf160('0x1a')][_0xf160('0x19')]);}})[_0xf160('0x1b')](function(_0x1e09f3){logger[_0xf160('0x17')](_0xf160('0x12'),_0x2736b8,_0x1e09f3);_0xf8ec3d(_0x1e09f3);});});}exports[_0xf160('0x1c')]=function(_0x2a8cb4){var _0x1fdb38=this;return new Promise(function(_0x4a58d9,_0x40ccf0){return db[_0xf160('0x1d')][_0xf160('0x1e')](_0x2a8cb4['body'],{'raw':_0x2a8cb4[_0xf160('0x1f')]?_0x2a8cb4[_0xf160('0x1f')][_0xf160('0x20')]===undefined?!![]:![]:!![]})[_0xf160('0x10')](function(_0x2e03c8){logger[_0xf160('0x11')](_0xf160('0x1c'),_0x2a8cb4);logger['debug'](_0xf160('0x1c'),_0x2a8cb4,JSON[_0xf160('0x16')](_0x2e03c8));_0x4a58d9(_0x2e03c8);})[_0xf160('0x1b')](function(_0x49bb5c){logger['error'](_0xf160('0x1c'),_0x49bb5c[_0xf160('0x19')],_0x2a8cb4);_0x40ccf0(_0x1fdb38['error'](0x1f4,_0x49bb5c['message']));});});};
\ No newline at end of file
index 0b8083b..e805653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb846=['remove','update','emit','length','./mailMessage.events','save'];(function(_0xa20971,_0x1bf32c){var _0x4f4271=function(_0x299c14){while(--_0x299c14){_0xa20971['push'](_0xa20971['shift']());}};_0x4f4271(++_0x1bf32c);}(_0xb846,0x15a));var _0x6b84=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xb846[_0xf50820];return _0x2a9b10;};'use strict';var MailMessageEvents=require(_0x6b84('0x0'));var events=[_0x6b84('0x1'),_0x6b84('0x2'),_0x6b84('0x3')];function createListener(_0x25bfda,_0x18f0f4){return function(_0x1d873f){_0x18f0f4[_0x6b84('0x4')](_0x25bfda,_0x1d873f);};}function removeListener(_0x272787,_0x1d8aeb){return function(){MailMessageEvents['removeListener'](_0x272787,_0x1d8aeb);};}exports['register']=function(_0x5f57b8){for(var _0x486bf9=0x0,_0x5b9149=events[_0x6b84('0x5')];_0x486bf9<_0x5b9149;_0x486bf9++){var _0x540d81=events[_0x486bf9];var _0xdfb541=createListener('mailMessage:'+_0x540d81,_0x5f57b8);MailMessageEvents['on'](_0x540d81,_0xdfb541);}};
\ No newline at end of file
+var _0x2bc9=['emit','register','mailMessage:','save','update'];(function(_0x1d7b23,_0x75416d){var _0x50fd26=function(_0x433395){while(--_0x433395){_0x1d7b23['push'](_0x1d7b23['shift']());}};_0x50fd26(++_0x75416d);}(_0x2bc9,0x1a7));var _0x92bc=function(_0x10fac0,_0x59160c){_0x10fac0=_0x10fac0-0x0;var _0x22bc13=_0x2bc9[_0x10fac0];return _0x22bc13;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x92bc('0x0'),'remove',_0x92bc('0x1')];function createListener(_0x531c50,_0xbffc2a){return function(_0x2483a7){_0xbffc2a[_0x92bc('0x2')](_0x531c50,_0x2483a7);};}function removeListener(_0x711d76,_0x3aec53){return function(){MailMessageEvents['removeListener'](_0x711d76,_0x3aec53);};}exports[_0x92bc('0x3')]=function(_0x1d1141){for(var _0x1ca014=0x0,_0x156bd4=events['length'];_0x1ca014<_0x156bd4;_0x1ca014++){var _0x32114e=events[_0x1ca014];var _0x3f938f=createListener(_0x92bc('0x4')+_0x32114e,_0x1d1141);MailMessageEvents['on'](_0x32114e,_0x3f938f);}};
\ No newline at end of file
index ab097cc..7e40e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe10c=['getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members'];(function(_0x5b1698,_0x4624a8){var _0x1b416e=function(_0xa8db71){while(--_0xa8db71){_0x5b1698['push'](_0x5b1698['shift']());}};_0x1b416e(++_0x4624a8);}(_0xe10c,0x176));var _0xce10=function(_0x460433,_0x43e59a){_0x460433=_0x460433-0x0;var _0x4dc4c2=_0xe10c[_0x460433];return _0x4dc4c2;};'use strict';var multer=require(_0xce10('0x0'));var util=require(_0xce10('0x1'));var path=require(_0xce10('0x2'));var timeout=require(_0xce10('0x3'));var express=require(_0xce10('0x4'));var router=express[_0xce10('0x5')]();var fs_extra=require(_0xce10('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xce10('0x7'));var controller=require(_0xce10('0x8'));router[_0xce10('0x9')]('/',auth[_0xce10('0xa')](),controller['index']);router['get'](_0xce10('0xb'),auth[_0xce10('0xa')](),controller[_0xce10('0xc')]);router[_0xce10('0x9')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller[_0xce10('0xe')]);router['get'](_0xce10('0xf'),auth['isAuthenticated'](),controller[_0xce10('0x10')]);router[_0xce10('0x9')](_0xce10('0x11'),auth[_0xce10('0xa')](),controller[_0xce10('0x12')]);router[_0xce10('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xce10('0x13')]);router[_0xce10('0x14')]('/',auth[_0xce10('0xa')](),controller[_0xce10('0x15')]);router[_0xce10('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xce10('0x16')]);router['post'](_0xce10('0x17'),auth['isAuthenticated'](),controller[_0xce10('0x18')]);router[_0xce10('0x19')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller[_0xce10('0x1a')]);router[_0xce10('0x1b')](_0xce10('0xd'),auth[_0xce10('0xa')](),controller['destroy']);router[_0xce10('0x1b')](_0xce10('0x11'),auth[_0xce10('0xa')](),controller[_0xce10('0x1c')]);router[_0xce10('0x1b')](_0xce10('0x17'),auth[_0xce10('0xa')](),controller[_0xce10('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x1d1a=['getTeams','/:id/users','getAgents','post','addAgents','put','update','delete','removeTeams','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x5476b3,_0x1d13bb){var _0xe72022=function(_0x2e61da){while(--_0x2e61da){_0x5476b3['push'](_0x5476b3['shift']());}};_0xe72022(++_0x1d13bb);}(_0x1d1a,0x176));var _0xa1d1=function(_0x262212,_0x2d2f2a){_0x262212=_0x262212-0x0;var _0x1e3c03=_0x1d1a[_0x262212];return _0x1e3c03;};'use strict';var multer=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var path=require(_0xa1d1('0x2'));var timeout=require(_0xa1d1('0x3'));var express=require(_0xa1d1('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa1d1('0x5'));var interaction=require(_0xa1d1('0x6'));var config=require(_0xa1d1('0x7'));var controller=require(_0xa1d1('0x8'));router[_0xa1d1('0x9')]('/',auth['isAuthenticated'](),controller[_0xa1d1('0xa')]);router[_0xa1d1('0x9')]('/describe',auth[_0xa1d1('0xb')](),controller[_0xa1d1('0xc')]);router[_0xa1d1('0x9')](_0xa1d1('0xd'),auth[_0xa1d1('0xb')](),controller[_0xa1d1('0xe')]);router['get'](_0xa1d1('0xf'),auth['isAuthenticated'](),controller[_0xa1d1('0x10')]);router['get'](_0xa1d1('0x11'),auth[_0xa1d1('0xb')](),controller[_0xa1d1('0x12')]);router[_0xa1d1('0x9')](_0xa1d1('0x13'),auth['isAuthenticated'](),controller[_0xa1d1('0x14')]);router[_0xa1d1('0x15')]('/',auth[_0xa1d1('0xb')](),controller['create']);router[_0xa1d1('0x15')](_0xa1d1('0x11'),auth['isAuthenticated'](),controller['addTeams']);router['post'](_0xa1d1('0x13'),auth[_0xa1d1('0xb')](),controller[_0xa1d1('0x16')]);router[_0xa1d1('0x17')](_0xa1d1('0xd'),auth['isAuthenticated'](),controller[_0xa1d1('0x18')]);router[_0xa1d1('0x19')](_0xa1d1('0xd'),auth[_0xa1d1('0xb')](),controller['destroy']);router[_0xa1d1('0x19')]('/:id/teams',auth[_0xa1d1('0xb')](),controller[_0xa1d1('0x1a')]);router[_0xa1d1('0x19')](_0xa1d1('0x13'),auth[_0xa1d1('0xb')](),controller['removeAgents']);module[_0xa1d1('0x1b')]=router;
\ No newline at end of file
index 5fc028f..2efbe81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869b=['ENUM','rrmemory','sequelize','exports','STRING','name'];(function(_0x51c592,_0x12485a){var _0x24848d=function(_0xb0c98){while(--_0xb0c98){_0x51c592['push'](_0x51c592['shift']());}};_0x24848d(++_0x12485a);}(_0x869b,0xb6));var _0xb869=function(_0x438dd2,_0x27cdb5){_0x438dd2=_0x438dd2-0x0;var _0x2812c1=_0x869b[_0x438dd2];return _0x2812c1;};'use strict';var Sequelize=require(_0xb869('0x0'));module[_0xb869('0x1')]={'name':{'type':Sequelize[_0xb869('0x2')],'unique':_0xb869('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb869('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb869('0x4')](_0xb869('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x4fcc=['beepall','roundrobin','sequelize','exports','name','ENUM','rrmemory'];(function(_0x409e31,_0x1d061e){var _0x4e5ea4=function(_0x233ecb){while(--_0x233ecb){_0x409e31['push'](_0x409e31['shift']());}};_0x4e5ea4(++_0x1d061e);}(_0x4fcc,0x152));var _0xc4fc=function(_0x1e88eb,_0x186ef3){_0x1e88eb=_0x1e88eb-0x0;var _0x5dafcb=_0x4fcc[_0x1e88eb];return _0x5dafcb;};'use strict';var Sequelize=require(_0xc4fc('0x0'));module[_0xc4fc('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc4fc('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc4fc('0x3')](_0xc4fc('0x4'),_0xc4fc('0x5'),_0xc4fc('0x6'))}};
\ No newline at end of file
index a23ad98..0411b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea3=['select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','json','undefined','offset','limit','status','set','Content-Range','reject','save','then','destroy','UserProfileResource','error','stack','index','map','MailQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','name','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','MailQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','getMembers','findOne','UserMailQueue','pick','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','count','%s/%s','SIP','addTeams','ids','Team','User','Agents','online','voicePause','flatMap','sequelize','transaction','each','forEach','emit','userMailQueue:save'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xbea3,0x137));var _0x3bea=function(_0x51369a,_0x2a69c1){_0x51369a=_0x51369a-0x0;var _0x283245=_0xbea3[_0x51369a];return _0x283245;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bea('0x0'));var zipdir=require(_0x3bea('0x1'));var jsonpatch=require(_0x3bea('0x2'));var rp=require(_0x3bea('0x3'));var moment=require(_0x3bea('0x4'));var BPromise=require(_0x3bea('0x5'));var Mustache=require(_0x3bea('0x6'));var util=require(_0x3bea('0x7'));var path=require(_0x3bea('0x8'));var sox=require(_0x3bea('0x9'));var csv=require('to-csv');var ejs=require(_0x3bea('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bea('0xb'));var squel=require(_0x3bea('0xc'));var crypto=require(_0x3bea('0xd'));var jsforce=require(_0x3bea('0xe'));var deskjs=require(_0x3bea('0xf'));var toCsv=require(_0x3bea('0x10'));var querystring=require(_0x3bea('0x11'));var Papa=require('papaparse');var Redis=require(_0x3bea('0x12'));var authService=require(_0x3bea('0x13'));var qs=require(_0x3bea('0x14'));var as=require(_0x3bea('0x15'));var hardwareService=require(_0x3bea('0x16'));var logger=require(_0x3bea('0x17'))(_0x3bea('0x18'));var utils=require(_0x3bea('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x3bea('0x1a'));var db=require(_0x3bea('0x1b'))['db'];config['redis']=_['defaults'](config[_0x3bea('0x1c')],{'host':_0x3bea('0x1d'),'port':0x18eb});var socket=require(_0x3bea('0x1e'))(new Redis(config[_0x3bea('0x1c')]));require(_0x3bea('0x1f'))[_0x3bea('0x20')](socket);function respondWithStatusCode(_0x4896c0,_0x26cebd){_0x26cebd=_0x26cebd||0xcc;return function(_0x487fe4){if(_0x487fe4){return _0x4896c0[_0x3bea('0x21')](_0x26cebd);}return _0x4896c0['status'](_0x26cebd)[_0x3bea('0x22')]();};}function respondWithResult(_0x5e72e2,_0x36a92b){_0x36a92b=_0x36a92b||0xc8;return function(_0x174012){if(_0x174012){return _0x5e72e2['status'](_0x36a92b)[_0x3bea('0x23')](_0x174012);}};}function respondWithFilteredResult(_0x37afff,_0x1d3bd3){return function(_0x5a3d84){if(_0x5a3d84){var _0x49a465=typeof _0x1d3bd3['offset']===_0x3bea('0x24')&&typeof _0x1d3bd3['limit']===_0x3bea('0x24');var _0x3e78b9=_0x5a3d84['count'];var _0x295d01=_0x49a465?0x0:_0x1d3bd3[_0x3bea('0x25')];var _0x41a71b=_0x49a465?_0x5a3d84['count']:_0x1d3bd3[_0x3bea('0x25')]+_0x1d3bd3[_0x3bea('0x26')];var _0x464bdb;if(_0x41a71b>=_0x3e78b9){_0x41a71b=_0x3e78b9;_0x464bdb=0xc8;}else{_0x464bdb=0xce;}_0x37afff[_0x3bea('0x27')](_0x464bdb);return _0x37afff[_0x3bea('0x28')](_0x3bea('0x29'),_0x295d01+'-'+_0x41a71b+'/'+_0x3e78b9)['json'](_0x5a3d84);}return null;};}function patchUpdates(_0x5c6e34){return function(_0x4ae0f5){try{jsonpatch['apply'](_0x4ae0f5,_0x5c6e34,!![]);}catch(_0xfcd882){return BPromise[_0x3bea('0x2a')](_0xfcd882);}return _0x4ae0f5[_0x3bea('0x2b')]();};}function saveUpdates(_0x1c9096,_0x1e8bbe){return function(_0xa8d9a6){if(_0xa8d9a6){return _0xa8d9a6['update'](_0x1c9096)[_0x3bea('0x2c')](function(_0x1fb741){return _0x1fb741;});}return null;};}function removeEntity(_0x125779,_0x5d176a){return function(_0x2d5cc7){if(_0x2d5cc7){return _0x2d5cc7[_0x3bea('0x2d')]()['then'](function(){var _0x861e0b=_0x2d5cc7['get']({'plain':!![]});var _0x48e0b5='MailQueues';return db[_0x3bea('0x2e')][_0x3bea('0x2d')]({'where':{'type':_0x48e0b5,'resourceId':_0x861e0b['id']}})['then'](function(){return _0x2d5cc7;});})[_0x3bea('0x2c')](function(){_0x125779['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x582eeb,_0x411ac8){return function(_0xe7cb30){if(!_0xe7cb30){_0x582eeb['sendStatus'](0x194);}return _0xe7cb30;};}function handleError(_0x37e2b4,_0x5b64c9){_0x5b64c9=_0x5b64c9||0x1f4;return function(_0x2faed2){logger[_0x3bea('0x2f')](_0x2faed2[_0x3bea('0x30')]);if(_0x2faed2['name']){delete _0x2faed2['name'];}_0x37e2b4[_0x3bea('0x27')](_0x5b64c9)['send'](_0x2faed2);};}exports[_0x3bea('0x31')]=function(_0x737868,_0x156328){var _0x9b4f6c={},_0x5dbbc2={},_0x58aa92={'count':0x0,'rows':[]};var _0x38724c=_[_0x3bea('0x32')](db[_0x3bea('0x33')][_0x3bea('0x34')],function(_0x1f5740){return{'name':_0x1f5740[_0x3bea('0x35')],'type':_0x1f5740[_0x3bea('0x36')]['key']};});_0x5dbbc2[_0x3bea('0x37')]=_[_0x3bea('0x32')](_0x38724c,'name');_0x5dbbc2[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x737868['query']);_0x5dbbc2['filters']=_[_0x3bea('0x3a')](_0x5dbbc2[_0x3bea('0x37')],_0x5dbbc2[_0x3bea('0x38')]);_0x9b4f6c[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x5dbbc2[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x737868[_0x3bea('0x38')]['fields']));_0x9b4f6c[_0x3bea('0x3b')]=_0x9b4f6c[_0x3bea('0x3b')][_0x3bea('0x3d')]?_0x9b4f6c[_0x3bea('0x3b')]:_0x5dbbc2['model'];if(!_0x737868[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x9b4f6c['limit']=qs['limit'](_0x737868[_0x3bea('0x38')]['limit']);_0x9b4f6c[_0x3bea('0x25')]=qs['offset'](_0x737868[_0x3bea('0x38')]['offset']);}_0x9b4f6c[_0x3bea('0x40')]=qs[_0x3bea('0x41')](_0x737868['query']['sort']);_0x9b4f6c['where']=qs[_0x3bea('0x42')](_['pick'](_0x737868[_0x3bea('0x38')],_0x5dbbc2['filters']),_0x38724c);if(_0x737868['query']['filter']){_0x9b4f6c[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x9b4f6c[_0x3bea('0x43')],{'$or':_[_0x3bea('0x32')](_0x38724c,function(_0x126db2){if(_0x126db2[_0x3bea('0x36')]!=='VIRTUAL'){var _0x29e8eb={};_0x29e8eb[_0x126db2[_0x3bea('0x45')]]={'$like':'%'+_0x737868[_0x3bea('0x38')][_0x3bea('0x46')]+'%'};return _0x29e8eb;}})});}_0x9b4f6c=_['merge']({},_0x9b4f6c,_0x737868['options']);var _0x2f8297={'where':_0x9b4f6c[_0x3bea('0x43')]};return db[_0x3bea('0x33')]['count'](_0x2f8297)[_0x3bea('0x2c')](function(_0xbcd84b){_0x58aa92['count']=_0xbcd84b;if(_0x737868[_0x3bea('0x38')][_0x3bea('0x47')]){_0x9b4f6c[_0x3bea('0x48')]=[{'all':!![]}];}return db[_0x3bea('0x33')][_0x3bea('0x49')](_0x9b4f6c);})[_0x3bea('0x2c')](function(_0x4c5780){_0x58aa92[_0x3bea('0x4a')]=_0x4c5780;return _0x58aa92;})['then'](respondWithFilteredResult(_0x156328,_0x9b4f6c))[_0x3bea('0x4b')](handleError(_0x156328,null));};exports[_0x3bea('0x4c')]=function(_0x2d1c0f,_0x37626c){var _0x433425={'raw':!![],'where':{'id':_0x2d1c0f['params']['id']}},_0x323571={};_0x323571[_0x3bea('0x37')]=_[_0x3bea('0x39')](db[_0x3bea('0x33')][_0x3bea('0x34')]);_0x323571['query']=_['keys'](_0x2d1c0f[_0x3bea('0x38')]);_0x323571[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x323571['model'],_0x323571[_0x3bea('0x38')]);_0x433425[_0x3bea('0x3b')]=_['intersection'](_0x323571[_0x3bea('0x37')],qs['fields'](_0x2d1c0f[_0x3bea('0x38')]['fields']));_0x433425['attributes']=_0x433425['attributes'][_0x3bea('0x3d')]?_0x433425['attributes']:_0x323571['model'];if(_0x2d1c0f['query']['includeAll']){_0x433425[_0x3bea('0x48')]=[{'all':!![]}];}_0x433425=_[_0x3bea('0x44')]({},_0x433425,_0x2d1c0f[_0x3bea('0x4d')]);return db[_0x3bea('0x33')][_0x3bea('0x4e')](_0x433425)[_0x3bea('0x2c')](handleEntityNotFound(_0x37626c,null))['then'](respondWithResult(_0x37626c,null))['catch'](handleError(_0x37626c,null));};exports[_0x3bea('0x4f')]=function(_0x1afe41,_0x538e12){return db[_0x3bea('0x33')][_0x3bea('0x4f')](_0x1afe41[_0x3bea('0x50')],{})['then'](function(_0x510f5d){var _0x1da334=_0x1afe41[_0x3bea('0x51')]['get']({'plain':!![]});if(!_0x1da334)throw new Error(_0x3bea('0x52'));if(_0x1da334['role']===_0x3bea('0x51')){var _0x3c399c=_0x510f5d[_0x3bea('0x53')]({'plain':!![]});var _0x3bfd70=_0x3bea('0x54');return db[_0x3bea('0x55')][_0x3bea('0x4e')]({'where':{'name':_0x3bfd70,'userProfileId':_0x1da334[_0x3bea('0x56')]},'raw':!![]})[_0x3bea('0x2c')](function(_0x1aa5c2){if(_0x1aa5c2&&_0x1aa5c2['autoAssociation']===0x0){return db[_0x3bea('0x2e')][_0x3bea('0x4f')]({'name':_0x3c399c[_0x3bea('0x45')],'resourceId':_0x3c399c['id'],'type':_0x1aa5c2[_0x3bea('0x45')],'sectionId':_0x1aa5c2['id']},{})[_0x3bea('0x2c')](function(){return _0x510f5d;});}else{return _0x510f5d;}})['catch'](function(_0x3e11ea){logger[_0x3bea('0x2f')](_0x3bea('0x57'),_0x3e11ea);throw _0x3e11ea;});}return _0x510f5d;})['then'](respondWithResult(_0x538e12,0xc9))[_0x3bea('0x4b')](handleError(_0x538e12,null));};exports[_0x3bea('0x58')]=function(_0x3dfc3c,_0x39de76){if(_0x3dfc3c['body']['id']){delete _0x3dfc3c['body']['id'];}return db['MailQueue'][_0x3bea('0x4e')]({'where':{'id':_0x3dfc3c[_0x3bea('0x59')]['id']}})['then'](handleEntityNotFound(_0x39de76,null))['then'](saveUpdates(_0x3dfc3c[_0x3bea('0x50')],null))[_0x3bea('0x2c')](respondWithResult(_0x39de76,null))['catch'](handleError(_0x39de76,null));};exports[_0x3bea('0x2d')]=function(_0x40051d,_0x5633e1){return db[_0x3bea('0x33')]['find']({'where':{'id':_0x40051d[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x5633e1,null))[_0x3bea('0x2c')](removeEntity(_0x5633e1,null))[_0x3bea('0x4b')](handleError(_0x5633e1,null));};exports[_0x3bea('0x5a')]=function(_0x1a1ac1,_0x84f0b2){return db[_0x3bea('0x33')][_0x3bea('0x5a')]()[_0x3bea('0x2c')](respondWithResult(_0x84f0b2,null))[_0x3bea('0x4b')](handleError(_0x84f0b2,null));};exports[_0x3bea('0x5b')]=function(_0x23fc01,_0x447d44,_0x15849a){var _0x23ceed={'raw':!![],'where':{}},_0x3c6c99={},_0x4c126a;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x23fc01['params']['id']}})['then'](handleEntityNotFound(_0x447d44,null))[_0x3bea('0x2c')](function(_0x39ee9c){if(_0x39ee9c){_0x4c126a=_0x39ee9c[_0x3bea('0x53')]({'plain':!![]});_0x3c6c99['model']=_[_0x3bea('0x39')](db[_0x3bea('0x5d')][_0x3bea('0x34')]);_0x3c6c99['query']=_['keys'](_0x23fc01['query']);_0x3c6c99[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x3c6c99[_0x3bea('0x37')],_0x3c6c99[_0x3bea('0x38')]);_0x23ceed['attributes']=_[_0x3bea('0x3a')](_0x3c6c99[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x23ceed['attributes']=_0x23ceed[_0x3bea('0x3b')][_0x3bea('0x3d')]?_0x23ceed[_0x3bea('0x3b')]:_0x3c6c99[_0x3bea('0x37')];if(!_0x23fc01[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x23ceed['limit']=qs['limit'](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x26')]);_0x23ceed[_0x3bea('0x25')]=qs[_0x3bea('0x25')](_0x23fc01['query'][_0x3bea('0x25')]);}_0x23ceed[_0x3bea('0x40')]=qs[_0x3bea('0x41')](_0x23fc01[_0x3bea('0x38')][_0x3bea('0x41')]);_0x23ceed[_0x3bea('0x43')]=qs[_0x3bea('0x42')](_[_0x3bea('0x5e')](_0x23fc01[_0x3bea('0x38')],_0x3c6c99[_0x3bea('0x42')]));_0x23ceed[_0x3bea('0x43')][_0x3bea('0x5f')]=_0x39ee9c['id'];if(_0x23fc01[_0x3bea('0x38')][_0x3bea('0x46')]){_0x23ceed[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x23ceed[_0x3bea('0x43')],{'$or':_[_0x3bea('0x32')](_0x23ceed[_0x3bea('0x3b')],function(_0x2ff7ca){var _0x5ea80e={};_0x5ea80e[_0x2ff7ca]={'$like':'%'+_0x23fc01['query'][_0x3bea('0x46')]+'%'};return _0x5ea80e;})});}_0x23ceed=_['merge']({},_0x23ceed,_0x23fc01['options']);return db['UserMailQueue'][_0x3bea('0x49')](_0x23ceed);}})[_0x3bea('0x2c')](function(_0x5d4d7d){if(_0x5d4d7d){return db['User'][_0x3bea('0x60')]({'where':{'id':_[_0x3bea('0x32')](_0x5d4d7d,_0x3bea('0x61')),'role':_0x3bea('0x62')},'attributes':['id',_0x3bea('0x45'),_0x3bea('0x63'),_0x3bea('0x64'),'createdAt']});}})[_0x3bea('0x2c')](function(_0x1969b2){if(_0x1969b2){return{'count':_0x1969b2[_0x3bea('0x65')],'rows':_[_0x3bea('0x32')](_0x1969b2[_0x3bea('0x4a')],function(_0x393b88){return{'membername':_0x393b88[_0x3bea('0x45')],'UserId':_0x393b88['id'],'queue_name':_0x4c126a[_0x3bea('0x45')],'MailQueueId':_0x4c126a['id'],'interface':util['format'](_0x3bea('0x66'),_0x3bea('0x67'),_0x393b88[_0x3bea('0x45')]),'penalty':0x0,'paused':_0x393b88[_0x3bea('0x63')],'createdAt':_0x393b88['createdAt'],'updatedAt':_0x393b88['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x447d44,_0x23ceed))[_0x3bea('0x4b')](handleError(_0x447d44,null));};exports['getTeams']=function(_0x28001c,_0x56d630,_0x5a3fc4){var _0x4451e4={};var _0x248384={};var _0x1584af;var _0x3f0ed3;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x28001c[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x56d630,null))[_0x3bea('0x2c')](function(_0x2a0f3b){if(_0x2a0f3b){_0x1584af=_0x2a0f3b;_0x248384[_0x3bea('0x37')]=_[_0x3bea('0x39')](db['Team'][_0x3bea('0x34')]);_0x248384[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x28001c[_0x3bea('0x38')]);_0x248384[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x248384['model'],_0x248384[_0x3bea('0x38')]);_0x4451e4[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x248384['model'],qs[_0x3bea('0x3c')](_0x28001c[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x4451e4[_0x3bea('0x3b')]=_0x4451e4[_0x3bea('0x3b')]['length']?_0x4451e4[_0x3bea('0x3b')]:_0x248384[_0x3bea('0x37')];_0x4451e4[_0x3bea('0x40')]=qs['sort'](_0x28001c[_0x3bea('0x38')][_0x3bea('0x41')]);_0x4451e4['where']=qs[_0x3bea('0x42')](_[_0x3bea('0x5e')](_0x28001c[_0x3bea('0x38')],_0x248384['filters']));if(_0x28001c[_0x3bea('0x38')][_0x3bea('0x46')]){_0x4451e4[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x4451e4['where'],{'$or':_[_0x3bea('0x32')](_0x4451e4['attributes'],function(_0x426d62){var _0x22ec12={};_0x22ec12[_0x426d62]={'$like':'%'+_0x28001c[_0x3bea('0x38')]['filter']+'%'};return _0x22ec12;})});}_0x4451e4=_[_0x3bea('0x44')]({},_0x4451e4,_0x28001c[_0x3bea('0x4d')]);return _0x1584af['getTeams'](_0x4451e4);}})[_0x3bea('0x2c')](function(_0x66efdf){if(_0x66efdf){_0x3f0ed3=_0x66efdf[_0x3bea('0x3d')];if(!_0x28001c[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x4451e4[_0x3bea('0x26')]=qs[_0x3bea('0x26')](_0x28001c[_0x3bea('0x38')]['limit']);_0x4451e4[_0x3bea('0x25')]=qs[_0x3bea('0x25')](_0x28001c['query'][_0x3bea('0x25')]);}return _0x1584af['getTeams'](_0x4451e4);}})[_0x3bea('0x2c')](function(_0x57095b){if(_0x57095b){return _0x57095b?{'count':_0x3f0ed3,'rows':_0x57095b}:null;}})[_0x3bea('0x2c')](respondWithResult(_0x56d630,null))[_0x3bea('0x4b')](handleError(_0x56d630,null));};exports[_0x3bea('0x68')]=function(_0xeae23,_0x1a5364,_0x40fc86){var _0x83a85=_0xeae23['body'][_0x3bea('0x69')];return db[_0x3bea('0x6a')]['findAll']({'where':{'id':_0x83a85},'attributes':['id'],'include':[{'model':db[_0x3bea('0x6b')],'as':_0x3bea('0x6c'),'attributes':['id',_0x3bea('0x45'),_0x3bea('0x6d'),_0x3bea('0x6e'),'interface'],'raw':!![]}]})[_0x3bea('0x2c')](function(_0x21853f){if(_0x21853f){var _0x336f7a=_[_0x3bea('0x6f')](_0x21853f,function(_0x1e6c61){var _0x5023ac=_0x1e6c61['get']({'plain':!![]});return _0x5023ac[_0x3bea('0x6c')];});return db[_0x3bea('0x33')][_0x3bea('0x4e')]({'where':{'id':_0xeae23[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](function(_0x3450ad){return db[_0x3bea('0x70')][_0x3bea('0x71')](function(_0x176070){return _0x3450ad[_0x3bea('0x68')](_0x83a85,{'transaction':_0x176070})[_0x3bea('0x2c')](function(){return BPromise[_0x3bea('0x72')](_0x336f7a,function(_0x1a4b0d){return db['UserMailQueue']['findOrCreate']({'where':{'UserId':_0x1a4b0d['id'],'MailQueueId':_0xeae23[_0x3bea('0x59')]['id']},'transaction':_0x176070});});})[_0x3bea('0x2c')](function(){_0x336f7a[_0x3bea('0x73')](function(_0x56f409){socket[_0x3bea('0x74')](_0x3bea('0x75'),{'UserId':_0x56f409['id'],'MailQueueId':_0x3450ad['id']});});});});});}})[_0x3bea('0x2c')](respondWithStatusCode(_0x1a5364,null))['catch'](handleError(_0x1a5364,null));};exports['removeTeams']=function(_0x44e3b6,_0x5a2efa,_0x8fe192){return db['Team'][_0x3bea('0x49')]({'where':{'id':_0x44e3b6['query'][_0x3bea('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3bea('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x3bea('0x2c')](handleEntityNotFound(_0x5a2efa,null))[_0x3bea('0x2c')](function(_0x31bdc8){var _0xe10cb6=_[_0x3bea('0x32')](_0x31bdc8,'id');var _0x2446d5=[];var _0x521395=[];var _0xdd2f25=squel[_0x3bea('0x76')]();_0xdd2f25[_0x3bea('0x77')](_0x3bea('0x78'))['from']('team_has_mail_queues','tq')[_0x3bea('0x79')](_0x3bea('0x7a'),'ut',_0x3bea('0x7b'))[_0x3bea('0x43')](_0x3bea('0x7c'),_0x44e3b6['params']['id']);for(var _0x4007c1=0x0;_0x4007c1<_0x31bdc8[_0x3bea('0x3d')];_0x4007c1+=0x1){let _0x17e294=_0x31bdc8[_0x4007c1];for(var _0x1f748e=0x0;_0x1f748e<_0x17e294[_0x3bea('0x6c')]['length'];_0x1f748e+=0x1){let _0x51ae92=_0x17e294[_0x3bea('0x6c')][_0x1f748e];var _0xd632ce=_0xdd2f25[_0x3bea('0x7d')]();_0xd632ce[_0x3bea('0x43')](_0x3bea('0x7e'),_0x51ae92['id']);_0x521395[_0x3bea('0x7f')](db['sequelize'][_0x3bea('0x38')](_0xd632ce['toString'](),{'type':db[_0x3bea('0x70')][_0x3bea('0x80')][_0x3bea('0x81')]})[_0x3bea('0x2c')](function(_0x2a8621){if(_0x2a8621[_0x3bea('0x3d')]===0x1){return _0x51ae92['id'];}else{var _0x1f5900=_[_0x3bea('0x82')](_[_0x3bea('0x32')](_0x2a8621,_0x3bea('0x83')),function(_0xf154e4){return _[_0x3bea('0x84')](_0xe10cb6,_0xf154e4);});if(_0x1f5900){return _0x51ae92['id'];}}}));}}return BPromise['all'](_0x521395)[_0x3bea('0x2c')](function(_0x54006b){_0x2446d5=_(_0x2446d5)[_0x3bea('0x85')](_0x54006b)['compact']()[_0x3bea('0x86')]();return db['MailQueue'][_0x3bea('0x4e')]({'where':{'id':_0x44e3b6[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](function(_0x1cc500){return db[_0x3bea('0x70')][_0x3bea('0x71')](function(_0x32abd6){return _0x1cc500['removeTeams'](_0x44e3b6[_0x3bea('0x38')][_0x3bea('0x69')],{'transaction':_0x32abd6})[_0x3bea('0x2c')](function(){if(!_[_0x3bea('0x87')](_0x2446d5)){return _0x1cc500[_0x3bea('0x88')](_0x2446d5,{'transaction':_0x32abd6});}})[_0x3bea('0x2c')](function(){_0x2446d5[_0x3bea('0x73')](function(_0x5e6e5f){socket[_0x3bea('0x74')](_0x3bea('0x89'),{'UserId':_0x5e6e5f,'MailQueueId':_0x1cc500['id']});});});});});});})['then'](respondWithStatusCode(_0x5a2efa,null))[_0x3bea('0x4b')](handleError(_0x5a2efa,null));};exports[_0x3bea('0x8a')]=function(_0x3fc980,_0x304292,_0xce7bac){return db[_0x3bea('0x33')]['find']({'where':{'id':_0x3fc980[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x304292,null))[_0x3bea('0x2c')](function(_0x3bd360){if(_0x3bd360){return _0x3bd360[_0x3bea('0x8a')](_0x3fc980[_0x3bea('0x50')][_0x3bea('0x69')],_[_0x3bea('0x8b')](_0x3fc980['body'],[_0x3bea('0x69'),'id'])||{})[_0x3bea('0x8c')](function(_0x57a881){for(var _0x43da20=0x0;_0x43da20<_0x3fc980[_0x3bea('0x50')][_0x3bea('0x69')][_0x3bea('0x3d')];_0x43da20+=0x1){socket[_0x3bea('0x74')](_0x3bea('0x75'),{'UserId':Number(_0x3fc980[_0x3bea('0x50')]['ids'][_0x43da20]),'MailQueueId':Number(_0x3fc980[_0x3bea('0x59')]['id'])});}return _0x57a881;});}})[_0x3bea('0x2c')](respondWithResult(_0x304292,null))[_0x3bea('0x4b')](handleError(_0x304292,null));};exports['removeAgents']=function(_0x3f8189,_0x52800b,_0x47c341){return db['MailQueue']['find']({'where':{'id':_0x3f8189[_0x3bea('0x59')]['id']}})[_0x3bea('0x2c')](handleEntityNotFound(_0x52800b,null))[_0x3bea('0x2c')](function(_0x4eaee2){if(_0x4eaee2){return _0x4eaee2[_0x3bea('0x88')](_0x3f8189['query'][_0x3bea('0x69')])[_0x3bea('0x2c')](function(){if(_[_0x3bea('0x8d')](_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')])){for(var _0x582bcb=0x0;_0x582bcb<_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')][_0x3bea('0x3d')];_0x582bcb+=0x1){socket[_0x3bea('0x74')](_0x3bea('0x89'),{'UserId':Number(_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')][_0x582bcb]),'MailQueueId':Number(_0x3f8189[_0x3bea('0x59')]['id'])});}}else{socket['emit'](_0x3bea('0x89'),{'UserId':Number(_0x3f8189[_0x3bea('0x38')][_0x3bea('0x69')]),'MailQueueId':Number(_0x3f8189['params']['id'])});}});}})['then'](respondWithStatusCode(_0x52800b,null))[_0x3bea('0x4b')](handleError(_0x52800b,null));};exports[_0x3bea('0x8e')]=function(_0x2cc380,_0x4c83e6,_0x3e06ce){var _0x2bdd99={};var _0x2afba0={};var _0x457bda;var _0x53e09f;return db[_0x3bea('0x33')][_0x3bea('0x5c')]({'where':{'id':_0x2cc380[_0x3bea('0x59')]['id']}})['then'](handleEntityNotFound(_0x4c83e6,null))[_0x3bea('0x2c')](function(_0x1c8e38){if(_0x1c8e38){_0x457bda=_0x1c8e38;_0x2afba0['model']=_[_0x3bea('0x39')](db[_0x3bea('0x6b')]['rawAttributes']);_0x2afba0[_0x3bea('0x38')]=_[_0x3bea('0x39')](_0x2cc380['query']);_0x2afba0[_0x3bea('0x42')]=_[_0x3bea('0x3a')](_0x2afba0[_0x3bea('0x37')],_0x2afba0[_0x3bea('0x38')]);_0x2bdd99[_0x3bea('0x3b')]=_[_0x3bea('0x3a')](_0x2afba0[_0x3bea('0x37')],qs[_0x3bea('0x3c')](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x3c')]));_0x2bdd99[_0x3bea('0x3b')]=_0x2bdd99[_0x3bea('0x3b')]['length']?_0x2bdd99['attributes']:_0x2afba0[_0x3bea('0x37')];_0x2bdd99['order']=qs[_0x3bea('0x41')](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x41')]);_0x2bdd99['where']=qs['filters'](_[_0x3bea('0x5e')](_0x2cc380[_0x3bea('0x38')],_0x2afba0['filters']));if(_0x2cc380[_0x3bea('0x38')]['filter']){_0x2bdd99[_0x3bea('0x43')]=_[_0x3bea('0x44')](_0x2bdd99[_0x3bea('0x43')],{'$or':_['map'](_0x2bdd99[_0x3bea('0x3b')],function(_0x11d2e0){var _0x20d0fe={};_0x20d0fe[_0x11d2e0]={'$like':'%'+_0x2cc380[_0x3bea('0x38')][_0x3bea('0x46')]+'%'};return _0x20d0fe;})});}_0x2bdd99=_['merge']({},_0x2bdd99,_0x2cc380[_0x3bea('0x4d')]);return _0x457bda[_0x3bea('0x8e')](_0x2bdd99);}})[_0x3bea('0x2c')](function(_0x16abab){if(_0x16abab){_0x53e09f=_0x16abab[_0x3bea('0x3d')];if(!_0x2cc380[_0x3bea('0x38')][_0x3bea('0x3e')](_0x3bea('0x3f'))){_0x2bdd99['limit']=qs['limit'](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x26')]);_0x2bdd99['offset']=qs['offset'](_0x2cc380[_0x3bea('0x38')][_0x3bea('0x25')]);}return _0x457bda[_0x3bea('0x8e')](_0x2bdd99);}})['then'](function(_0x70de59){if(_0x70de59){return _0x70de59?{'count':_0x53e09f,'rows':_0x70de59}:null;}})[_0x3bea('0x2c')](respondWithResult(_0x4c83e6,null))['catch'](handleError(_0x4c83e6,null));};
\ No newline at end of file
+var _0xea70=['save','update','destroy','then','MailQueues','UserProfileResource','error','stack','name','send','index','map','fieldName','type','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','MailQueue','includeAll','include','rows','catch','show','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserMailQueue','rawAttributes','MailQueueId','filter','findAll','User','UserId','agent','mailPause','updatedAt','%s/%s','SIP','getTeams','findOne','Team','hasOwnProperty','ids','Agents','online','voicePause','interface','transaction','each','forEach','userMailQueue:save','removeTeams','select','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','sequelize','removeAgents','emit','userMailQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xea70,0x175));var _0x0ea7=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xea70[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x0ea7('0x0'));var rimraf=require(_0x0ea7('0x1'));var zipdir=require(_0x0ea7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ea7('0x3'));var moment=require('moment');var BPromise=require(_0x0ea7('0x4'));var Mustache=require('mustache');var util=require(_0x0ea7('0x5'));var path=require(_0x0ea7('0x6'));var sox=require(_0x0ea7('0x7'));var csv=require(_0x0ea7('0x8'));var ejs=require(_0x0ea7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0ea7('0xa'));var squel=require(_0x0ea7('0xb'));var crypto=require('crypto');var jsforce=require(_0x0ea7('0xc'));var deskjs=require(_0x0ea7('0xd'));var toCsv=require('to-csv');var querystring=require(_0x0ea7('0xe'));var Papa=require(_0x0ea7('0xf'));var Redis=require(_0x0ea7('0x10'));var authService=require(_0x0ea7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0ea7('0x12'));var hardwareService=require(_0x0ea7('0x13'));var logger=require(_0x0ea7('0x14'))(_0x0ea7('0x15'));var utils=require(_0x0ea7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0ea7('0x17'));var db=require(_0x0ea7('0x18'))['db'];config[_0x0ea7('0x19')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0ea7('0x1a'))(new Redis(config[_0x0ea7('0x19')]));require(_0x0ea7('0x1b'))[_0x0ea7('0x1c')](socket);function respondWithStatusCode(_0x4e1cd9,_0x488067){_0x488067=_0x488067||0xcc;return function(_0x48044a){if(_0x48044a){return _0x4e1cd9[_0x0ea7('0x1d')](_0x488067);}return _0x4e1cd9[_0x0ea7('0x1e')](_0x488067)[_0x0ea7('0x1f')]();};}function respondWithResult(_0x548dad,_0x5da7aa){_0x5da7aa=_0x5da7aa||0xc8;return function(_0x23609c){if(_0x23609c){return _0x548dad[_0x0ea7('0x1e')](_0x5da7aa)[_0x0ea7('0x20')](_0x23609c);}};}function respondWithFilteredResult(_0x22fae2,_0x24b532){return function(_0x987032){if(_0x987032){var _0x1b1cb5=typeof _0x24b532['offset']==='undefined'&&typeof _0x24b532[_0x0ea7('0x21')]===_0x0ea7('0x22');var _0x4f526b=_0x987032[_0x0ea7('0x23')];var _0x185244=_0x1b1cb5?0x0:_0x24b532[_0x0ea7('0x24')];var _0x121dd7=_0x1b1cb5?_0x987032[_0x0ea7('0x23')]:_0x24b532[_0x0ea7('0x24')]+_0x24b532['limit'];var _0x1f3bce;if(_0x121dd7>=_0x4f526b){_0x121dd7=_0x4f526b;_0x1f3bce=0xc8;}else{_0x1f3bce=0xce;}_0x22fae2[_0x0ea7('0x1e')](_0x1f3bce);return _0x22fae2[_0x0ea7('0x25')](_0x0ea7('0x26'),_0x185244+'-'+_0x121dd7+'/'+_0x4f526b)[_0x0ea7('0x20')](_0x987032);}return null;};}function patchUpdates(_0x82bb8){return function(_0x2007cd){try{jsonpatch[_0x0ea7('0x27')](_0x2007cd,_0x82bb8,!![]);}catch(_0x47b53b){return BPromise[_0x0ea7('0x28')](_0x47b53b);}return _0x2007cd[_0x0ea7('0x29')]();};}function saveUpdates(_0x76d6a9,_0x503da9){return function(_0x357cbc){if(_0x357cbc){return _0x357cbc[_0x0ea7('0x2a')](_0x76d6a9)['then'](function(_0x3ba808){return _0x3ba808;});}return null;};}function removeEntity(_0x5870b2,_0x5adf93){return function(_0x5a6a6d){if(_0x5a6a6d){return _0x5a6a6d[_0x0ea7('0x2b')]()[_0x0ea7('0x2c')](function(){var _0x462715=_0x5a6a6d['get']({'plain':!![]});var _0x6d5ada=_0x0ea7('0x2d');return db[_0x0ea7('0x2e')][_0x0ea7('0x2b')]({'where':{'type':_0x6d5ada,'resourceId':_0x462715['id']}})[_0x0ea7('0x2c')](function(){return _0x5a6a6d;});})[_0x0ea7('0x2c')](function(){_0x5870b2[_0x0ea7('0x1e')](0xcc)[_0x0ea7('0x1f')]();});}};}function handleEntityNotFound(_0x4b6c47,_0x27e9fd){return function(_0x3d07c3){if(!_0x3d07c3){_0x4b6c47['sendStatus'](0x194);}return _0x3d07c3;};}function handleError(_0x2b5a2e,_0x20799a){_0x20799a=_0x20799a||0x1f4;return function(_0x2fa27f){logger[_0x0ea7('0x2f')](_0x2fa27f[_0x0ea7('0x30')]);if(_0x2fa27f['name']){delete _0x2fa27f[_0x0ea7('0x31')];}_0x2b5a2e[_0x0ea7('0x1e')](_0x20799a)[_0x0ea7('0x32')](_0x2fa27f);};}exports[_0x0ea7('0x33')]=function(_0x374618,_0x4679a3){var _0x59abab={},_0x55d4ad={},_0x1b87d7={'count':0x0,'rows':[]};var _0x407a15=_[_0x0ea7('0x34')](db['MailQueue']['rawAttributes'],function(_0x375c84){return{'name':_0x375c84[_0x0ea7('0x35')],'type':_0x375c84[_0x0ea7('0x36')]['key']};});_0x55d4ad['model']=_[_0x0ea7('0x34')](_0x407a15,_0x0ea7('0x31'));_0x55d4ad[_0x0ea7('0x37')]=_[_0x0ea7('0x38')](_0x374618['query']);_0x55d4ad[_0x0ea7('0x39')]=_[_0x0ea7('0x3a')](_0x55d4ad['model'],_0x55d4ad[_0x0ea7('0x37')]);_0x59abab[_0x0ea7('0x3b')]=_[_0x0ea7('0x3a')](_0x55d4ad[_0x0ea7('0x3c')],qs['fields'](_0x374618[_0x0ea7('0x37')][_0x0ea7('0x3d')]));_0x59abab['attributes']=_0x59abab[_0x0ea7('0x3b')][_0x0ea7('0x3e')]?_0x59abab[_0x0ea7('0x3b')]:_0x55d4ad[_0x0ea7('0x3c')];if(!_0x374618[_0x0ea7('0x37')]['hasOwnProperty'](_0x0ea7('0x3f'))){_0x59abab[_0x0ea7('0x21')]=qs[_0x0ea7('0x21')](_0x374618[_0x0ea7('0x37')]['limit']);_0x59abab['offset']=qs[_0x0ea7('0x24')](_0x374618[_0x0ea7('0x37')]['offset']);}_0x59abab[_0x0ea7('0x40')]=qs[_0x0ea7('0x41')](_0x374618[_0x0ea7('0x37')][_0x0ea7('0x41')]);_0x59abab[_0x0ea7('0x42')]=qs[_0x0ea7('0x39')](_[_0x0ea7('0x43')](_0x374618[_0x0ea7('0x37')],_0x55d4ad[_0x0ea7('0x39')]),_0x407a15);if(_0x374618[_0x0ea7('0x37')]['filter']){_0x59abab[_0x0ea7('0x42')]=_[_0x0ea7('0x44')](_0x59abab['where'],{'$or':_[_0x0ea7('0x34')](_0x407a15,function(_0x9b808b){if(_0x9b808b['type']!==_0x0ea7('0x45')){var _0x58f287={};_0x58f287[_0x9b808b[_0x0ea7('0x31')]]={'$like':'%'+_0x374618[_0x0ea7('0x37')]['filter']+'%'};return _0x58f287;}})});}_0x59abab=_['merge']({},_0x59abab,_0x374618[_0x0ea7('0x46')]);var _0x5cc85b={'where':_0x59abab[_0x0ea7('0x42')]};return db[_0x0ea7('0x47')][_0x0ea7('0x23')](_0x5cc85b)[_0x0ea7('0x2c')](function(_0x251f26){_0x1b87d7[_0x0ea7('0x23')]=_0x251f26;if(_0x374618[_0x0ea7('0x37')][_0x0ea7('0x48')]){_0x59abab[_0x0ea7('0x49')]=[{'all':!![]}];}return db[_0x0ea7('0x47')]['findAll'](_0x59abab);})[_0x0ea7('0x2c')](function(_0x19fe86){_0x1b87d7[_0x0ea7('0x4a')]=_0x19fe86;return _0x1b87d7;})[_0x0ea7('0x2c')](respondWithFilteredResult(_0x4679a3,_0x59abab))[_0x0ea7('0x4b')](handleError(_0x4679a3,null));};exports[_0x0ea7('0x4c')]=function(_0x44e939,_0x39de46){var _0x58a372={'raw':!![],'where':{'id':_0x44e939['params']['id']}},_0x389688={};_0x389688[_0x0ea7('0x3c')]=_[_0x0ea7('0x38')](db[_0x0ea7('0x47')]['rawAttributes']);_0x389688[_0x0ea7('0x37')]=_['keys'](_0x44e939[_0x0ea7('0x37')]);_0x389688['filters']=_[_0x0ea7('0x3a')](_0x389688[_0x0ea7('0x3c')],_0x389688['query']);_0x58a372[_0x0ea7('0x3b')]=_[_0x0ea7('0x3a')](_0x389688[_0x0ea7('0x3c')],qs['fields'](_0x44e939[_0x0ea7('0x37')][_0x0ea7('0x3d')]));_0x58a372[_0x0ea7('0x3b')]=_0x58a372[_0x0ea7('0x3b')][_0x0ea7('0x3e')]?_0x58a372[_0x0ea7('0x3b')]:_0x389688['model'];if(_0x44e939['query'][_0x0ea7('0x48')]){_0x58a372[_0x0ea7('0x49')]=[{'all':!![]}];}_0x58a372=_[_0x0ea7('0x44')]({},_0x58a372,_0x44e939[_0x0ea7('0x46')]);return db['MailQueue'][_0x0ea7('0x4d')](_0x58a372)[_0x0ea7('0x2c')](handleEntityNotFound(_0x39de46,null))[_0x0ea7('0x2c')](respondWithResult(_0x39de46,null))[_0x0ea7('0x4b')](handleError(_0x39de46,null));};exports[_0x0ea7('0x4e')]=function(_0x355202,_0xc62a25){return db[_0x0ea7('0x47')]['create'](_0x355202[_0x0ea7('0x4f')],{})[_0x0ea7('0x2c')](function(_0x819d67){var _0x77bff2=_0x355202[_0x0ea7('0x50')][_0x0ea7('0x51')]({'plain':!![]});if(!_0x77bff2)throw new Error(_0x0ea7('0x52'));if(_0x77bff2[_0x0ea7('0x53')]===_0x0ea7('0x50')){var _0x52f9a4=_0x819d67[_0x0ea7('0x51')]({'plain':!![]});var _0x5bd597=_0x0ea7('0x2d');return db[_0x0ea7('0x54')][_0x0ea7('0x4d')]({'where':{'name':_0x5bd597,'userProfileId':_0x77bff2[_0x0ea7('0x55')]},'raw':!![]})[_0x0ea7('0x2c')](function(_0x81ab20){if(_0x81ab20&&_0x81ab20['autoAssociation']===0x0){return db[_0x0ea7('0x2e')][_0x0ea7('0x4e')]({'name':_0x52f9a4[_0x0ea7('0x31')],'resourceId':_0x52f9a4['id'],'type':_0x81ab20[_0x0ea7('0x31')],'sectionId':_0x81ab20['id']},{})[_0x0ea7('0x2c')](function(){return _0x819d67;});}else{return _0x819d67;}})['catch'](function(_0x388702){logger['error'](_0x0ea7('0x56'),_0x388702);throw _0x388702;});}return _0x819d67;})[_0x0ea7('0x2c')](respondWithResult(_0xc62a25,0xc9))['catch'](handleError(_0xc62a25,null));};exports[_0x0ea7('0x2a')]=function(_0x1abb3e,_0x47c026){if(_0x1abb3e['body']['id']){delete _0x1abb3e[_0x0ea7('0x4f')]['id'];}return db[_0x0ea7('0x47')][_0x0ea7('0x4d')]({'where':{'id':_0x1abb3e[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x47c026,null))['then'](saveUpdates(_0x1abb3e[_0x0ea7('0x4f')],null))[_0x0ea7('0x2c')](respondWithResult(_0x47c026,null))[_0x0ea7('0x4b')](handleError(_0x47c026,null));};exports[_0x0ea7('0x2b')]=function(_0x15ace2,_0x4b8658){return db['MailQueue'][_0x0ea7('0x4d')]({'where':{'id':_0x15ace2[_0x0ea7('0x57')]['id']}})['then'](handleEntityNotFound(_0x4b8658,null))['then'](removeEntity(_0x4b8658,null))[_0x0ea7('0x4b')](handleError(_0x4b8658,null));};exports[_0x0ea7('0x58')]=function(_0x151fc1,_0x295132){return db['MailQueue'][_0x0ea7('0x58')]()[_0x0ea7('0x2c')](respondWithResult(_0x295132,null))[_0x0ea7('0x4b')](handleError(_0x295132,null));};exports[_0x0ea7('0x59')]=function(_0x534031,_0x47fc99,_0x50593e){var _0x4fad17={'raw':!![],'where':{}},_0x5958b5={},_0x4f0ff8;return db[_0x0ea7('0x47')]['findOne']({'where':{'id':_0x534031[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x47fc99,null))[_0x0ea7('0x2c')](function(_0x2fa1b0){if(_0x2fa1b0){_0x4f0ff8=_0x2fa1b0['get']({'plain':!![]});_0x5958b5[_0x0ea7('0x3c')]=_['keys'](db[_0x0ea7('0x5a')][_0x0ea7('0x5b')]);_0x5958b5[_0x0ea7('0x37')]=_['keys'](_0x534031[_0x0ea7('0x37')]);_0x5958b5['filters']=_[_0x0ea7('0x3a')](_0x5958b5[_0x0ea7('0x3c')],_0x5958b5[_0x0ea7('0x37')]);_0x4fad17['attributes']=_[_0x0ea7('0x3a')](_0x5958b5[_0x0ea7('0x3c')],qs['fields'](_0x534031[_0x0ea7('0x37')]['fields']));_0x4fad17[_0x0ea7('0x3b')]=_0x4fad17[_0x0ea7('0x3b')][_0x0ea7('0x3e')]?_0x4fad17['attributes']:_0x5958b5[_0x0ea7('0x3c')];if(!_0x534031[_0x0ea7('0x37')]['hasOwnProperty'](_0x0ea7('0x3f'))){_0x4fad17[_0x0ea7('0x21')]=qs[_0x0ea7('0x21')](_0x534031[_0x0ea7('0x37')][_0x0ea7('0x21')]);_0x4fad17[_0x0ea7('0x24')]=qs[_0x0ea7('0x24')](_0x534031[_0x0ea7('0x37')][_0x0ea7('0x24')]);}_0x4fad17[_0x0ea7('0x40')]=qs[_0x0ea7('0x41')](_0x534031[_0x0ea7('0x37')][_0x0ea7('0x41')]);_0x4fad17['where']=qs[_0x0ea7('0x39')](_[_0x0ea7('0x43')](_0x534031[_0x0ea7('0x37')],_0x5958b5['filters']));_0x4fad17['where'][_0x0ea7('0x5c')]=_0x2fa1b0['id'];if(_0x534031['query'][_0x0ea7('0x5d')]){_0x4fad17[_0x0ea7('0x42')]=_[_0x0ea7('0x44')](_0x4fad17[_0x0ea7('0x42')],{'$or':_[_0x0ea7('0x34')](_0x4fad17[_0x0ea7('0x3b')],function(_0x200c35){var _0xbdd9f0={};_0xbdd9f0[_0x200c35]={'$like':'%'+_0x534031[_0x0ea7('0x37')][_0x0ea7('0x5d')]+'%'};return _0xbdd9f0;})});}_0x4fad17=_['merge']({},_0x4fad17,_0x534031[_0x0ea7('0x46')]);return db[_0x0ea7('0x5a')][_0x0ea7('0x5e')](_0x4fad17);}})['then'](function(_0x2f5452){if(_0x2f5452){return db[_0x0ea7('0x5f')]['findAndCountAll']({'where':{'id':_['map'](_0x2f5452,_0x0ea7('0x60')),'role':_0x0ea7('0x61')},'attributes':['id',_0x0ea7('0x31'),_0x0ea7('0x62'),_0x0ea7('0x63'),'createdAt']});}})[_0x0ea7('0x2c')](function(_0x302f4c){if(_0x302f4c){return{'count':_0x302f4c['count'],'rows':_['map'](_0x302f4c[_0x0ea7('0x4a')],function(_0x159a34){return{'membername':_0x159a34[_0x0ea7('0x31')],'UserId':_0x159a34['id'],'queue_name':_0x4f0ff8['name'],'MailQueueId':_0x4f0ff8['id'],'interface':util['format'](_0x0ea7('0x64'),_0x0ea7('0x65'),_0x159a34[_0x0ea7('0x31')]),'penalty':0x0,'paused':_0x159a34['mailPause'],'createdAt':_0x159a34['createdAt'],'updatedAt':_0x159a34['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0ea7('0x2c')](respondWithFilteredResult(_0x47fc99,_0x4fad17))['catch'](handleError(_0x47fc99,null));};exports[_0x0ea7('0x66')]=function(_0x4d65d9,_0x2b18f0,_0x2d4e1e){var _0x1b46d5={};var _0x10a507={};var _0xb8da52;var _0x2d2289;return db['MailQueue'][_0x0ea7('0x67')]({'where':{'id':_0x4d65d9[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x2b18f0,null))['then'](function(_0x3432c9){if(_0x3432c9){_0xb8da52=_0x3432c9;_0x10a507[_0x0ea7('0x3c')]=_['keys'](db[_0x0ea7('0x68')][_0x0ea7('0x5b')]);_0x10a507[_0x0ea7('0x37')]=_[_0x0ea7('0x38')](_0x4d65d9[_0x0ea7('0x37')]);_0x10a507[_0x0ea7('0x39')]=_['intersection'](_0x10a507[_0x0ea7('0x3c')],_0x10a507[_0x0ea7('0x37')]);_0x1b46d5[_0x0ea7('0x3b')]=_[_0x0ea7('0x3a')](_0x10a507[_0x0ea7('0x3c')],qs[_0x0ea7('0x3d')](_0x4d65d9[_0x0ea7('0x37')][_0x0ea7('0x3d')]));_0x1b46d5[_0x0ea7('0x3b')]=_0x1b46d5['attributes'][_0x0ea7('0x3e')]?_0x1b46d5['attributes']:_0x10a507[_0x0ea7('0x3c')];_0x1b46d5[_0x0ea7('0x40')]=qs[_0x0ea7('0x41')](_0x4d65d9[_0x0ea7('0x37')][_0x0ea7('0x41')]);_0x1b46d5[_0x0ea7('0x42')]=qs[_0x0ea7('0x39')](_[_0x0ea7('0x43')](_0x4d65d9['query'],_0x10a507[_0x0ea7('0x39')]));if(_0x4d65d9[_0x0ea7('0x37')][_0x0ea7('0x5d')]){_0x1b46d5[_0x0ea7('0x42')]=_['merge'](_0x1b46d5[_0x0ea7('0x42')],{'$or':_[_0x0ea7('0x34')](_0x1b46d5[_0x0ea7('0x3b')],function(_0x1714c3){var _0x2a9d59={};_0x2a9d59[_0x1714c3]={'$like':'%'+_0x4d65d9[_0x0ea7('0x37')][_0x0ea7('0x5d')]+'%'};return _0x2a9d59;})});}_0x1b46d5=_[_0x0ea7('0x44')]({},_0x1b46d5,_0x4d65d9[_0x0ea7('0x46')]);return _0xb8da52[_0x0ea7('0x66')](_0x1b46d5);}})[_0x0ea7('0x2c')](function(_0x358d3f){if(_0x358d3f){_0x2d2289=_0x358d3f[_0x0ea7('0x3e')];if(!_0x4d65d9['query'][_0x0ea7('0x69')]('nolimit')){_0x1b46d5[_0x0ea7('0x21')]=qs[_0x0ea7('0x21')](_0x4d65d9['query']['limit']);_0x1b46d5['offset']=qs[_0x0ea7('0x24')](_0x4d65d9['query'][_0x0ea7('0x24')]);}return _0xb8da52[_0x0ea7('0x66')](_0x1b46d5);}})[_0x0ea7('0x2c')](function(_0x27cd29){if(_0x27cd29){return _0x27cd29?{'count':_0x2d2289,'rows':_0x27cd29}:null;}})[_0x0ea7('0x2c')](respondWithResult(_0x2b18f0,null))[_0x0ea7('0x4b')](handleError(_0x2b18f0,null));};exports['addTeams']=function(_0x2aba52,_0x4d8b3d,_0x15b87e){var _0x16e82c=_0x2aba52[_0x0ea7('0x4f')][_0x0ea7('0x6a')];return db[_0x0ea7('0x68')][_0x0ea7('0x5e')]({'where':{'id':_0x16e82c},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0ea7('0x6b'),'attributes':['id',_0x0ea7('0x31'),_0x0ea7('0x6c'),_0x0ea7('0x6d'),_0x0ea7('0x6e')],'raw':!![]}]})[_0x0ea7('0x2c')](function(_0x371d2c){if(_0x371d2c){var _0x5c9b1a=_['flatMap'](_0x371d2c,function(_0x5d3e08){var _0x17c355=_0x5d3e08[_0x0ea7('0x51')]({'plain':!![]});return _0x17c355[_0x0ea7('0x6b')];});return db[_0x0ea7('0x47')]['find']({'where':{'id':_0x2aba52[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](function(_0x13ad55){return db['sequelize'][_0x0ea7('0x6f')](function(_0x70e843){return _0x13ad55['addTeams'](_0x16e82c,{'transaction':_0x70e843})[_0x0ea7('0x2c')](function(){return BPromise[_0x0ea7('0x70')](_0x5c9b1a,function(_0x5728a6){return db[_0x0ea7('0x5a')]['findOrCreate']({'where':{'UserId':_0x5728a6['id'],'MailQueueId':_0x2aba52[_0x0ea7('0x57')]['id']},'transaction':_0x70e843});});})[_0x0ea7('0x2c')](function(){_0x5c9b1a[_0x0ea7('0x71')](function(_0x13e329){socket['emit'](_0x0ea7('0x72'),{'UserId':_0x13e329['id'],'MailQueueId':_0x13ad55['id']});});});});});}})[_0x0ea7('0x2c')](respondWithStatusCode(_0x4d8b3d,null))[_0x0ea7('0x4b')](handleError(_0x4d8b3d,null));};exports[_0x0ea7('0x73')]=function(_0x5865a6,_0x3739ad,_0x5e46dd){return db['Team'][_0x0ea7('0x5e')]({'where':{'id':_0x5865a6[_0x0ea7('0x37')][_0x0ea7('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0ea7('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x0ea7('0x2c')](handleEntityNotFound(_0x3739ad,null))[_0x0ea7('0x2c')](function(_0x3519ae){var _0x4e2cb=_[_0x0ea7('0x34')](_0x3519ae,'id');var _0x239cbf=[];var _0x44bd39=[];var _0x2f623a=squel[_0x0ea7('0x74')]();_0x2f623a['field']('tq.TeamId')['from'](_0x0ea7('0x75'),'tq')[_0x0ea7('0x76')](_0x0ea7('0x77'),'ut',_0x0ea7('0x78'))[_0x0ea7('0x42')]('MailQueueId\x20=\x20?',_0x5865a6[_0x0ea7('0x57')]['id']);for(var _0x208871=0x0;_0x208871<_0x3519ae[_0x0ea7('0x3e')];_0x208871+=0x1){let _0x2ec6f9=_0x3519ae[_0x208871];for(var _0x723418=0x0;_0x723418<_0x2ec6f9['Agents'][_0x0ea7('0x3e')];_0x723418+=0x1){let _0x3aa6db=_0x2ec6f9[_0x0ea7('0x6b')][_0x723418];var _0x3cc864=_0x2f623a['clone']();_0x3cc864[_0x0ea7('0x42')](_0x0ea7('0x79'),_0x3aa6db['id']);_0x44bd39['push'](db['sequelize'][_0x0ea7('0x37')](_0x3cc864['toString'](),{'type':db['sequelize'][_0x0ea7('0x7a')][_0x0ea7('0x7b')]})[_0x0ea7('0x2c')](function(_0x2e8ae4){if(_0x2e8ae4[_0x0ea7('0x3e')]===0x1){return _0x3aa6db['id'];}else{var _0x41106b=_[_0x0ea7('0x7c')](_[_0x0ea7('0x34')](_0x2e8ae4,_0x0ea7('0x7d')),function(_0x2fc7cd){return _[_0x0ea7('0x7e')](_0x4e2cb,_0x2fc7cd);});if(_0x41106b){return _0x3aa6db['id'];}}}));}}return BPromise[_0x0ea7('0x7f')](_0x44bd39)[_0x0ea7('0x2c')](function(_0x6a835b){_0x239cbf=_(_0x239cbf)['union'](_0x6a835b)[_0x0ea7('0x80')]()[_0x0ea7('0x81')]();return db[_0x0ea7('0x47')]['find']({'where':{'id':_0x5865a6['params']['id']}})[_0x0ea7('0x2c')](function(_0x404036){return db[_0x0ea7('0x82')][_0x0ea7('0x6f')](function(_0x1cb185){return _0x404036[_0x0ea7('0x73')](_0x5865a6[_0x0ea7('0x37')][_0x0ea7('0x6a')],{'transaction':_0x1cb185})[_0x0ea7('0x2c')](function(){if(!_['isEmpty'](_0x239cbf)){return _0x404036[_0x0ea7('0x83')](_0x239cbf,{'transaction':_0x1cb185});}})[_0x0ea7('0x2c')](function(){_0x239cbf[_0x0ea7('0x71')](function(_0x429f15){socket[_0x0ea7('0x84')](_0x0ea7('0x85'),{'UserId':_0x429f15,'MailQueueId':_0x404036['id']});});});});});});})[_0x0ea7('0x2c')](respondWithStatusCode(_0x3739ad,null))['catch'](handleError(_0x3739ad,null));};exports['addAgents']=function(_0x36ff4b,_0x41e2fb,_0x27dce6){return db['MailQueue'][_0x0ea7('0x4d')]({'where':{'id':_0x36ff4b[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x41e2fb,null))[_0x0ea7('0x2c')](function(_0xd20871){if(_0xd20871){return _0xd20871[_0x0ea7('0x86')](_0x36ff4b[_0x0ea7('0x4f')][_0x0ea7('0x6a')],_[_0x0ea7('0x87')](_0x36ff4b['body'],['ids','id'])||{})['spread'](function(_0x5534d4){for(var _0xb20375=0x0;_0xb20375<_0x36ff4b[_0x0ea7('0x4f')]['ids']['length'];_0xb20375+=0x1){socket[_0x0ea7('0x84')]('userMailQueue:save',{'UserId':Number(_0x36ff4b[_0x0ea7('0x4f')][_0x0ea7('0x6a')][_0xb20375]),'MailQueueId':Number(_0x36ff4b['params']['id'])});}return _0x5534d4;});}})[_0x0ea7('0x2c')](respondWithResult(_0x41e2fb,null))[_0x0ea7('0x4b')](handleError(_0x41e2fb,null));};exports[_0x0ea7('0x83')]=function(_0x14a253,_0x2eb9b1,_0x55a80c){return db['MailQueue'][_0x0ea7('0x4d')]({'where':{'id':_0x14a253[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x2eb9b1,null))[_0x0ea7('0x2c')](function(_0x450de4){if(_0x450de4){return _0x450de4[_0x0ea7('0x83')](_0x14a253[_0x0ea7('0x37')][_0x0ea7('0x6a')])[_0x0ea7('0x2c')](function(){if(_[_0x0ea7('0x88')](_0x14a253[_0x0ea7('0x37')][_0x0ea7('0x6a')])){for(var _0x167ca9=0x0;_0x167ca9<_0x14a253[_0x0ea7('0x37')][_0x0ea7('0x6a')][_0x0ea7('0x3e')];_0x167ca9+=0x1){socket[_0x0ea7('0x84')](_0x0ea7('0x85'),{'UserId':Number(_0x14a253[_0x0ea7('0x37')][_0x0ea7('0x6a')][_0x167ca9]),'MailQueueId':Number(_0x14a253['params']['id'])});}}else{socket[_0x0ea7('0x84')](_0x0ea7('0x85'),{'UserId':Number(_0x14a253[_0x0ea7('0x37')][_0x0ea7('0x6a')]),'MailQueueId':Number(_0x14a253[_0x0ea7('0x57')]['id'])});}});}})[_0x0ea7('0x2c')](respondWithStatusCode(_0x2eb9b1,null))[_0x0ea7('0x4b')](handleError(_0x2eb9b1,null));};exports['getAgents']=function(_0x510ca7,_0x56d78f,_0x42c4c0){var _0x298429={};var _0xacb4cb={};var _0x153903;var _0x2df9da;return db[_0x0ea7('0x47')][_0x0ea7('0x67')]({'where':{'id':_0x510ca7[_0x0ea7('0x57')]['id']}})[_0x0ea7('0x2c')](handleEntityNotFound(_0x56d78f,null))['then'](function(_0x1460a3){if(_0x1460a3){_0x153903=_0x1460a3;_0xacb4cb[_0x0ea7('0x3c')]=_[_0x0ea7('0x38')](db[_0x0ea7('0x5f')][_0x0ea7('0x5b')]);_0xacb4cb[_0x0ea7('0x37')]=_[_0x0ea7('0x38')](_0x510ca7[_0x0ea7('0x37')]);_0xacb4cb[_0x0ea7('0x39')]=_[_0x0ea7('0x3a')](_0xacb4cb['model'],_0xacb4cb[_0x0ea7('0x37')]);_0x298429[_0x0ea7('0x3b')]=_[_0x0ea7('0x3a')](_0xacb4cb[_0x0ea7('0x3c')],qs[_0x0ea7('0x3d')](_0x510ca7[_0x0ea7('0x37')]['fields']));_0x298429[_0x0ea7('0x3b')]=_0x298429['attributes'][_0x0ea7('0x3e')]?_0x298429[_0x0ea7('0x3b')]:_0xacb4cb[_0x0ea7('0x3c')];_0x298429[_0x0ea7('0x40')]=qs[_0x0ea7('0x41')](_0x510ca7[_0x0ea7('0x37')][_0x0ea7('0x41')]);_0x298429[_0x0ea7('0x42')]=qs[_0x0ea7('0x39')](_[_0x0ea7('0x43')](_0x510ca7['query'],_0xacb4cb[_0x0ea7('0x39')]));if(_0x510ca7[_0x0ea7('0x37')]['filter']){_0x298429[_0x0ea7('0x42')]=_[_0x0ea7('0x44')](_0x298429[_0x0ea7('0x42')],{'$or':_[_0x0ea7('0x34')](_0x298429['attributes'],function(_0xcc00a3){var _0x2b0ef0={};_0x2b0ef0[_0xcc00a3]={'$like':'%'+_0x510ca7[_0x0ea7('0x37')][_0x0ea7('0x5d')]+'%'};return _0x2b0ef0;})});}_0x298429=_[_0x0ea7('0x44')]({},_0x298429,_0x510ca7[_0x0ea7('0x46')]);return _0x153903['getAgents'](_0x298429);}})[_0x0ea7('0x2c')](function(_0x7c6aed){if(_0x7c6aed){_0x2df9da=_0x7c6aed[_0x0ea7('0x3e')];if(!_0x510ca7[_0x0ea7('0x37')][_0x0ea7('0x69')]('nolimit')){_0x298429[_0x0ea7('0x21')]=qs['limit'](_0x510ca7[_0x0ea7('0x37')][_0x0ea7('0x21')]);_0x298429['offset']=qs[_0x0ea7('0x24')](_0x510ca7[_0x0ea7('0x37')]['offset']);}return _0x153903[_0x0ea7('0x89')](_0x298429);}})['then'](function(_0x3df639){if(_0x3df639){return _0x3df639?{'count':_0x2df9da,'rows':_0x3df639}:null;}})[_0x0ea7('0x2c')](respondWithResult(_0x56d78f,null))['catch'](handleError(_0x56d78f,null));};
\ No newline at end of file
index a969ed2..fbb3372 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b29=['exports','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5bd35e,_0x436e1d){var _0x213520=function(_0x285710){while(--_0x285710){_0x5bd35e['push'](_0x5bd35e['shift']());}};_0x213520(++_0x436e1d);}(_0x5b29,0xfd));var _0x95b2=function(_0x46bd41,_0x322faa){_0x46bd41=_0x46bd41-0x0;var _0x3be010=_0x5b29[_0x46bd41];return _0x3be010;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x95b2('0x0'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x95b2('0x1')](0x0);var events={'afterCreate':_0x95b2('0x2'),'afterUpdate':_0x95b2('0x3'),'afterDestroy':_0x95b2('0x4')};function emitEvent(_0x136ae7){return function(_0x52f075,_0x25cb85,_0x25eb29){MailQueueEvents[_0x95b2('0x5')](_0x136ae7+':'+_0x52f075['id'],_0x52f075);MailQueueEvents[_0x95b2('0x5')](_0x136ae7,_0x52f075);_0x25eb29(null);};}for(var e in events){if(events[_0x95b2('0x6')](e)){var event=events[e];MailQueue[_0x95b2('0x7')](e,emitEvent(event));}}module[_0x95b2('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x98e5=['exports','events','../../mysqldb','save','update','remove','emit','hook'];(function(_0x3e8de2,_0x468431){var _0x56b736=function(_0x32da9b){while(--_0x32da9b){_0x3e8de2['push'](_0x3e8de2['shift']());}};_0x56b736(++_0x468431);}(_0x98e5,0x1c9));var _0x598e=function(_0x169456,_0xca160e){_0x169456=_0x169456-0x0;var _0x185139=_0x98e5[_0x169456];return _0x185139;};'use strict';var EventEmitter=require(_0x598e('0x0'));var MailQueue=require(_0x598e('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x598e('0x2'),'afterUpdate':_0x598e('0x3'),'afterDestroy':_0x598e('0x4')};function emitEvent(_0x39ec66){return function(_0x3d97cb,_0x4552b9,_0x4e7e0c){MailQueueEvents[_0x598e('0x5')](_0x39ec66+':'+_0x3d97cb['id'],_0x3d97cb);MailQueueEvents[_0x598e('0x5')](_0x39ec66,_0x3d97cb);_0x4e7e0c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x598e('0x6')](e,emitEvent(event));}}module[_0x598e('0x7')]=MailQueueEvents;
\ No newline at end of file
index 74b06ac..9f518a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7631=['exports','define','MailQueue','mail_queues','lodash','util','api','moment','bluebird','path','../../config/environment','./mailQueue.attributes'];(function(_0xee46b6,_0x291491){var _0x1d01d2=function(_0x3b5066){while(--_0x3b5066){_0xee46b6['push'](_0xee46b6['shift']());}};_0x1d01d2(++_0x291491);}(_0x7631,0xf4));var _0x1763=function(_0x26fea8,_0x325f6b){_0x26fea8=_0x26fea8-0x0;var _0x3e5e6d=_0x7631[_0x26fea8];return _0x3e5e6d;};'use strict';var _=require(_0x1763('0x0'));var util=require(_0x1763('0x1'));var logger=require('../../config/logger')(_0x1763('0x2'));var moment=require(_0x1763('0x3'));var BPromise=require(_0x1763('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1763('0x5'));var rimraf=require('rimraf');var config=require(_0x1763('0x6'));var attributes=require(_0x1763('0x7'));module[_0x1763('0x8')]=function(_0x2cc0ad,_0x36ebb4){return _0x2cc0ad[_0x1763('0x9')](_0x1763('0xa'),attributes,{'tableName':_0x1763('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa698=['../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3cc558,_0x24325a){var _0x360f86=function(_0x12bcb6){while(--_0x12bcb6){_0x3cc558['push'](_0x3cc558['shift']());}};_0x360f86(++_0x24325a);}(_0xa698,0x11e));var _0x8a69=function(_0x1eb97f,_0x4ed68e){_0x1eb97f=_0x1eb97f-0x0;var _0x17ac4a=_0xa698[_0x1eb97f];return _0x17ac4a;};'use strict';var _=require(_0x8a69('0x0'));var util=require(_0x8a69('0x1'));var logger=require('../../config/logger')(_0x8a69('0x2'));var moment=require(_0x8a69('0x3'));var BPromise=require(_0x8a69('0x4'));var rp=require(_0x8a69('0x5'));var fs=require('fs');var path=require(_0x8a69('0x6'));var rimraf=require(_0x8a69('0x7'));var config=require(_0x8a69('0x8'));var attributes=require(_0x8a69('0x9'));module[_0x8a69('0xa')]=function(_0x13ae55,_0x186e39){return _0x13ae55[_0x8a69('0xb')](_0x8a69('0xc'),attributes,{'tableName':_0x8a69('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec605a2..607698a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98f3=['moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','request','info','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','MailQueue,\x20%s,\x20%s','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','limit','include','map','model','ShowMailQueue','find','attributes','stringify','lodash'];(function(_0x138e8d,_0x53c4d9){var _0x462132=function(_0x9d41){while(--_0x9d41){_0x138e8d['push'](_0x138e8d['shift']());}};_0x462132(++_0x53c4d9);}(_0x98f3,0x1a1));var _0x398f=function(_0xeb94a4,_0x166c7b){_0xeb94a4=_0xeb94a4-0x0;var _0x5a9285=_0x98f3[_0xeb94a4];return _0x5a9285;};'use strict';var _=require(_0x398f('0x0'));var util=require('util');var moment=require(_0x398f('0x1'));var BPromise=require(_0x398f('0x2'));var rs=require(_0x398f('0x3'));var fs=require('fs');var Redis=require(_0x398f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x398f('0x5'));var logger=require('../../config/logger')(_0x398f('0x6'));var config=require(_0x398f('0x7'));var jayson=require(_0x398f('0x8'));var client=jayson[_0x398f('0x9')]['http']({'port':0x232a});config[_0x398f('0xa')]=_[_0x398f('0xb')](config[_0x398f('0xa')],{'host':_0x398f('0xc'),'port':0x18eb});var socket=require(_0x398f('0xd'))(new Redis(config[_0x398f('0xa')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x11c76b,_0x289aa3,_0x3f4687){return new BPromise(function(_0x427f55,_0x25d32a){return client[_0x398f('0xe')](_0x11c76b,_0x3f4687)['then'](function(_0x433cd1){logger[_0x398f('0xf')]('MailQueue,\x20%s,\x20%s',_0x289aa3,'request\x20sent');logger[_0x398f('0x10')](_0x398f('0x11'),_0x289aa3,_0x398f('0x12'),JSON['stringify'](_0x433cd1));if(_0x433cd1[_0x398f('0x13')]){if(_0x433cd1['error']['code']===0x1f4){logger['error'](_0x398f('0x14'),_0x289aa3,_0x433cd1['error'][_0x398f('0x15')]);return _0x25d32a(_0x433cd1[_0x398f('0x13')][_0x398f('0x15')]);}logger[_0x398f('0x13')](_0x398f('0x14'),_0x289aa3,_0x433cd1[_0x398f('0x13')][_0x398f('0x15')]);return _0x427f55(_0x433cd1['error'][_0x398f('0x15')]);}else{logger['info']('MailQueue,\x20%s,\x20%s',_0x289aa3,_0x398f('0x12'));_0x427f55(_0x433cd1[_0x398f('0x16')][_0x398f('0x15')]);}})[_0x398f('0x17')](function(_0x247d5f){logger[_0x398f('0x13')](_0x398f('0x14'),_0x289aa3,_0x247d5f);_0x25d32a(_0x247d5f);});});}exports[_0x398f('0x18')]=function(_0x4b09fa){var _0x19f607=this;return new Promise(function(_0x5bbcfa,_0x2a7ccd){return db[_0x398f('0x19')][_0x398f('0x1a')]({'raw':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1c')]===undefined?!![]:![]:!![],'where':_0x4b09fa['options']?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1d')]||null:null,'attributes':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa['options']['attributes']||null:null,'limit':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1e')]||null:null,'include':_0x4b09fa[_0x398f('0x1b')]?_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1f')]?_[_0x398f('0x20')](_0x4b09fa[_0x398f('0x1b')][_0x398f('0x1f')],function(_0x58ad98){return{'model':db[_0x58ad98['model']],'as':_0x58ad98['as'],'attributes':_0x58ad98['attributes'],'include':_0x58ad98[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x58ad98[_0x398f('0x1f')],function(_0x41ab3c){return{'model':db[_0x41ab3c['model']],'as':_0x41ab3c['as'],'attributes':_0x41ab3c['attributes'],'include':_0x41ab3c[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x41ab3c[_0x398f('0x1f')],function(_0x98bf4e){return{'model':db[_0x98bf4e[_0x398f('0x21')]],'as':_0x98bf4e['as'],'attributes':_0x98bf4e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1387f6){logger[_0x398f('0xf')]('GetMailQueue',_0x4b09fa);logger[_0x398f('0x10')]('GetMailQueue',_0x4b09fa,JSON['stringify'](_0x1387f6));_0x5bbcfa(_0x1387f6);})[_0x398f('0x17')](function(_0x2d2947){logger[_0x398f('0x13')](_0x398f('0x18'),_0x2d2947[_0x398f('0x15')],_0x4b09fa);_0x2a7ccd(_0x19f607['error'](0x1f4,_0x2d2947[_0x398f('0x15')]));});});};exports[_0x398f('0x22')]=function(_0x2a8e4b){var _0x47e913=this;return new Promise(function(_0x1d1397,_0x4e5601){return db[_0x398f('0x19')][_0x398f('0x23')]({'raw':_0x2a8e4b['options']?_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1c')]===undefined?!![]:![]:!![],'where':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1d')]||null:null,'attributes':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b['options'][_0x398f('0x24')]||null:null,'include':_0x2a8e4b[_0x398f('0x1b')]?_0x2a8e4b['options'][_0x398f('0x1f')]?_[_0x398f('0x20')](_0x2a8e4b[_0x398f('0x1b')][_0x398f('0x1f')],function(_0x2bf733){return{'model':db[_0x2bf733[_0x398f('0x21')]],'as':_0x2bf733['as'],'attributes':_0x2bf733[_0x398f('0x24')],'include':_0x2bf733[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x2bf733[_0x398f('0x1f')],function(_0x38e121){return{'model':db[_0x38e121[_0x398f('0x21')]],'as':_0x38e121['as'],'attributes':_0x38e121[_0x398f('0x24')],'include':_0x38e121[_0x398f('0x1f')]?_[_0x398f('0x20')](_0x38e121[_0x398f('0x1f')],function(_0x580442){return{'model':db[_0x580442['model']],'as':_0x580442['as'],'attributes':_0x580442[_0x398f('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1028e8){logger[_0x398f('0xf')](_0x398f('0x22'),_0x2a8e4b);logger['debug']('ShowMailQueue',_0x2a8e4b,JSON[_0x398f('0x25')](_0x1028e8));_0x1d1397(_0x1028e8);})[_0x398f('0x17')](function(_0x33a8b1){logger[_0x398f('0x13')](_0x398f('0x22'),_0x33a8b1[_0x398f('0x15')],_0x2a8e4b);_0x4e5601(_0x47e913[_0x398f('0x13')](0x1f4,_0x33a8b1[_0x398f('0x15')]));});});};
\ No newline at end of file
+var _0xc0b4=['request\x20sent','stringify','error','code','message','result','catch','MailQueue','findAll','options','where','limit','include','map','model','attributes','GetMailQueue','ShowMailQueue','find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','client','defaults','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xc0b4,0x12c));var _0x4c0b=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xc0b4[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x4c0b('0x0'));var util=require(_0x4c0b('0x1'));var moment=require(_0x4c0b('0x2'));var BPromise=require('bluebird');var rs=require(_0x4c0b('0x3'));var fs=require('fs');var Redis=require(_0x4c0b('0x4'));var db=require(_0x4c0b('0x5'))['db'];var utils=require(_0x4c0b('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4c0b('0x7')]['http']({'port':0x232a});config['redis']=_[_0x4c0b('0x8')](config[_0x4c0b('0x9')],{'host':_0x4c0b('0xa'),'port':0x18eb});var socket=require(_0x4c0b('0xb'))(new Redis(config[_0x4c0b('0x9')]));require(_0x4c0b('0xc'))[_0x4c0b('0xd')](socket);function respondWithRpcPromise(_0x1151d4,_0xc36fed,_0x29bf13){return new BPromise(function(_0x3a2e1d,_0x16e6a9){return client[_0x4c0b('0xe')](_0x1151d4,_0x29bf13)[_0x4c0b('0xf')](function(_0x52f43d){logger[_0x4c0b('0x10')](_0x4c0b('0x11'),_0xc36fed,'request\x20sent');logger[_0x4c0b('0x12')](_0x4c0b('0x13'),_0xc36fed,_0x4c0b('0x14'),JSON[_0x4c0b('0x15')](_0x52f43d));if(_0x52f43d[_0x4c0b('0x16')]){if(_0x52f43d['error'][_0x4c0b('0x17')]===0x1f4){logger[_0x4c0b('0x16')](_0x4c0b('0x11'),_0xc36fed,_0x52f43d[_0x4c0b('0x16')][_0x4c0b('0x18')]);return _0x16e6a9(_0x52f43d[_0x4c0b('0x16')][_0x4c0b('0x18')]);}logger['error'](_0x4c0b('0x11'),_0xc36fed,_0x52f43d['error']['message']);return _0x3a2e1d(_0x52f43d[_0x4c0b('0x16')][_0x4c0b('0x18')]);}else{logger['info'](_0x4c0b('0x11'),_0xc36fed,'request\x20sent');_0x3a2e1d(_0x52f43d[_0x4c0b('0x19')]['message']);}})[_0x4c0b('0x1a')](function(_0x29f712){logger[_0x4c0b('0x16')](_0x4c0b('0x11'),_0xc36fed,_0x29f712);_0x16e6a9(_0x29f712);});});}exports['GetMailQueue']=function(_0x3523c0){var _0x272dd5=this;return new Promise(function(_0x2fdd0d,_0x4a7035){return db[_0x4c0b('0x1b')][_0x4c0b('0x1c')]({'raw':_0x3523c0[_0x4c0b('0x1d')]?_0x3523c0[_0x4c0b('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x3523c0[_0x4c0b('0x1d')]?_0x3523c0[_0x4c0b('0x1d')][_0x4c0b('0x1e')]||null:null,'attributes':_0x3523c0[_0x4c0b('0x1d')]?_0x3523c0[_0x4c0b('0x1d')]['attributes']||null:null,'limit':_0x3523c0[_0x4c0b('0x1d')]?_0x3523c0['options'][_0x4c0b('0x1f')]||null:null,'include':_0x3523c0[_0x4c0b('0x1d')]?_0x3523c0[_0x4c0b('0x1d')][_0x4c0b('0x20')]?_[_0x4c0b('0x21')](_0x3523c0['options'][_0x4c0b('0x20')],function(_0x3a4b72){return{'model':db[_0x3a4b72[_0x4c0b('0x22')]],'as':_0x3a4b72['as'],'attributes':_0x3a4b72[_0x4c0b('0x23')],'include':_0x3a4b72[_0x4c0b('0x20')]?_[_0x4c0b('0x21')](_0x3a4b72[_0x4c0b('0x20')],function(_0xdfdfec){return{'model':db[_0xdfdfec['model']],'as':_0xdfdfec['as'],'attributes':_0xdfdfec['attributes'],'include':_0xdfdfec[_0x4c0b('0x20')]?_[_0x4c0b('0x21')](_0xdfdfec[_0x4c0b('0x20')],function(_0xbd77c3){return{'model':db[_0xbd77c3['model']],'as':_0xbd77c3['as'],'attributes':_0xbd77c3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a508f){logger[_0x4c0b('0x10')]('GetMailQueue',_0x3523c0);logger['debug'](_0x4c0b('0x24'),_0x3523c0,JSON[_0x4c0b('0x15')](_0x4a508f));_0x2fdd0d(_0x4a508f);})[_0x4c0b('0x1a')](function(_0x124f38){logger[_0x4c0b('0x16')](_0x4c0b('0x24'),_0x124f38[_0x4c0b('0x18')],_0x3523c0);_0x4a7035(_0x272dd5['error'](0x1f4,_0x124f38[_0x4c0b('0x18')]));});});};exports[_0x4c0b('0x25')]=function(_0x1a553e){var _0x169f6d=this;return new Promise(function(_0x46d9df,_0x2423be){return db['MailQueue'][_0x4c0b('0x26')]({'raw':_0x1a553e[_0x4c0b('0x1d')]?_0x1a553e[_0x4c0b('0x1d')][_0x4c0b('0x27')]===undefined?!![]:![]:!![],'where':_0x1a553e[_0x4c0b('0x1d')]?_0x1a553e[_0x4c0b('0x1d')][_0x4c0b('0x1e')]||null:null,'attributes':_0x1a553e[_0x4c0b('0x1d')]?_0x1a553e[_0x4c0b('0x1d')][_0x4c0b('0x23')]||null:null,'include':_0x1a553e[_0x4c0b('0x1d')]?_0x1a553e['options'][_0x4c0b('0x20')]?_['map'](_0x1a553e['options'][_0x4c0b('0x20')],function(_0x11b416){return{'model':db[_0x11b416[_0x4c0b('0x22')]],'as':_0x11b416['as'],'attributes':_0x11b416[_0x4c0b('0x23')],'include':_0x11b416['include']?_[_0x4c0b('0x21')](_0x11b416[_0x4c0b('0x20')],function(_0x33a4bc){return{'model':db[_0x33a4bc['model']],'as':_0x33a4bc['as'],'attributes':_0x33a4bc[_0x4c0b('0x23')],'include':_0x33a4bc[_0x4c0b('0x20')]?_[_0x4c0b('0x21')](_0x33a4bc['include'],function(_0x596d3d){return{'model':db[_0x596d3d[_0x4c0b('0x22')]],'as':_0x596d3d['as'],'attributes':_0x596d3d[_0x4c0b('0x23')]};}):[]};}):[]};}):[]:[]})[_0x4c0b('0xf')](function(_0x51dc8b){logger['info'](_0x4c0b('0x25'),_0x1a553e);logger[_0x4c0b('0x12')](_0x4c0b('0x25'),_0x1a553e,JSON[_0x4c0b('0x15')](_0x51dc8b));_0x46d9df(_0x51dc8b);})[_0x4c0b('0x1a')](function(_0x5c798b){logger[_0x4c0b('0x16')](_0x4c0b('0x25'),_0x5c798b[_0x4c0b('0x18')],_0x1a553e);_0x2423be(_0x169f6d[_0x4c0b('0x16')](0x1f4,_0x5c798b[_0x4c0b('0x18')]));});});};
\ No newline at end of file
index 8d726c3..80b6ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f4=['emit','removeListener','register','length','mailQueue:','./mailQueue.events','update'];(function(_0x1617e5,_0x459242){var _0x5cc645=function(_0x2dbc2f){while(--_0x2dbc2f){_0x1617e5['push'](_0x1617e5['shift']());}};_0x5cc645(++_0x459242);}(_0x44f4,0x140));var _0x444f=function(_0x246574,_0x569055){_0x246574=_0x246574-0x0;var _0x9ed48f=_0x44f4[_0x246574];return _0x9ed48f;};'use strict';var MailQueueEvents=require(_0x444f('0x0'));var events=['save','remove',_0x444f('0x1')];function createListener(_0x1deb48,_0x330ee2){return function(_0x56fae7){_0x330ee2[_0x444f('0x2')](_0x1deb48,_0x56fae7);};}function removeListener(_0x4dd98d,_0xdb1585){return function(){MailQueueEvents[_0x444f('0x3')](_0x4dd98d,_0xdb1585);};}exports[_0x444f('0x4')]=function(_0x46dac6){for(var _0x2588d9=0x0,_0x1bb0cf=events[_0x444f('0x5')];_0x2588d9<_0x1bb0cf;_0x2588d9++){var _0x5631f4=events[_0x2588d9];var _0x35d321=createListener(_0x444f('0x6')+_0x5631f4,_0x46dac6);MailQueueEvents['on'](_0x5631f4,_0x35d321);}};
\ No newline at end of file
+var _0x86f5=['register','mailQueue:','./mailQueue.events','remove','update','removeListener'];(function(_0x1daaa9,_0x220393){var _0x1dd221=function(_0x492c61){while(--_0x492c61){_0x1daaa9['push'](_0x1daaa9['shift']());}};_0x1dd221(++_0x220393);}(_0x86f5,0x74));var _0x586f=function(_0xdbe2de,_0x3bdc5a){_0xdbe2de=_0xdbe2de-0x0;var _0x2facd7=_0x86f5[_0xdbe2de];return _0x2facd7;};'use strict';var MailQueueEvents=require(_0x586f('0x0'));var events=['save',_0x586f('0x1'),_0x586f('0x2')];function createListener(_0x54068c,_0xef9d40){return function(_0x53a81d){_0xef9d40['emit'](_0x54068c,_0x53a81d);};}function removeListener(_0x1fe441,_0x2518c){return function(){MailQueueEvents[_0x586f('0x3')](_0x1fe441,_0x2518c);};}exports[_0x586f('0x4')]=function(_0x56ab12){for(var _0x57ea7f=0x0,_0x2a5ceb=events['length'];_0x57ea7f<_0x2a5ceb;_0x57ea7f++){var _0x286de0=events[_0x57ea7f];var _0x3dbb19=createListener(_0x586f('0x5')+_0x286de0,_0x56ab12);MailQueueEvents['on'](_0x286de0,_0x3dbb19);}};
\ No newline at end of file
index 18c0997..87874ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1137=['get','index','/describe','describe','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./mailQueueReport.controller'];(function(_0x37b2f5,_0x1608d1){var _0x9a466a=function(_0x5d204c){while(--_0x5d204c){_0x37b2f5['push'](_0x37b2f5['shift']());}};_0x9a466a(++_0x1608d1);}(_0x1137,0x142));var _0x7113=function(_0x4d05a0,_0x53aa7e){_0x4d05a0=_0x4d05a0-0x0;var _0x4c999c=_0x1137[_0x4d05a0];return _0x4c999c;};'use strict';var multer=require(_0x7113('0x0'));var util=require(_0x7113('0x1'));var path=require('path');var timeout=require(_0x7113('0x2'));var express=require(_0x7113('0x3'));var router=express[_0x7113('0x4')]();var fs_extra=require(_0x7113('0x5'));var auth=require(_0x7113('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7113('0x7'));router[_0x7113('0x8')]('/',auth['isAuthenticated'](),controller[_0x7113('0x9')]);router[_0x7113('0x8')](_0x7113('0xa'),auth['isAuthenticated'](),controller[_0x7113('0xb')]);router[_0x7113('0x8')]('/:id',auth[_0x7113('0xc')](),controller[_0x7113('0xd')]);router[_0x7113('0xe')]('/',auth[_0x7113('0xc')](),controller[_0x7113('0xf')]);router[_0x7113('0x10')](_0x7113('0x11'),auth['isAuthenticated'](),controller[_0x7113('0x12')]);router[_0x7113('0x13')](_0x7113('0x11'),auth[_0x7113('0xc')](),controller[_0x7113('0x14')]);module[_0x7113('0x15')]=router;
\ No newline at end of file
+var _0x4169=['index','/describe','describe','post','create','/:id','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated'];(function(_0x5e6e7d,_0x4cdc2d){var _0x343eec=function(_0x5373b0){while(--_0x5373b0){_0x5e6e7d['push'](_0x5e6e7d['shift']());}};_0x343eec(++_0x4cdc2d);}(_0x4169,0x11b));var _0x9416=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4169[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x9416('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9416('0x1'));var express=require(_0x9416('0x2'));var router=express[_0x9416('0x3')]();var fs_extra=require(_0x9416('0x4'));var auth=require(_0x9416('0x5'));var interaction=require(_0x9416('0x6'));var config=require(_0x9416('0x7'));var controller=require(_0x9416('0x8'));router[_0x9416('0x9')]('/',auth[_0x9416('0xa')](),controller[_0x9416('0xb')]);router[_0x9416('0x9')](_0x9416('0xc'),auth[_0x9416('0xa')](),controller[_0x9416('0xd')]);router[_0x9416('0x9')]('/:id',auth[_0x9416('0xa')](),controller['show']);router[_0x9416('0xe')]('/',auth[_0x9416('0xa')](),controller[_0x9416('0xf')]);router['put'](_0x9416('0x10'),auth[_0x9416('0xa')](),controller[_0x9416('0x11')]);router[_0x9416('0x12')](_0x9416('0x10'),auth[_0x9416('0xa')](),controller[_0x9416('0x13')]);module[_0x9416('0x14')]=router;
\ No newline at end of file
index 725a166..1b125f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bf1=['exports','STRING','DATE','moment'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0bf1,0xc7));var _0x10bf=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x0bf1[_0x3bf83f];return _0x22c4a9;};'use strict';var moment=require(_0x10bf('0x0'));var Sequelize=require('sequelize');module[_0x10bf('0x1')]={'uniqueid':{'type':Sequelize[_0x10bf('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x10bf('0x2')]},'joinAt':{'type':Sequelize[_0x10bf('0x3')]},'leaveAt':{'type':Sequelize[_0x10bf('0x3')]},'acceptAt':{'type':Sequelize[_0x10bf('0x3')]},'exitAt':{'type':Sequelize[_0x10bf('0x3')]},'reason':{'type':Sequelize[_0x10bf('0x2')]}};
\ No newline at end of file
+var _0x668d=['DATE','sequelize','exports','STRING'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x668d,0x1b9));var _0xd668=function(_0x51a4fb,_0x201f8a){_0x51a4fb=_0x51a4fb-0x0;var _0x2b3f33=_0x668d[_0x51a4fb];return _0x2b3f33;};'use strict';var moment=require('moment');var Sequelize=require(_0xd668('0x0'));module[_0xd668('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xd668('0x2')]},'joinAt':{'type':Sequelize[_0xd668('0x3')]},'leaveAt':{'type':Sequelize[_0xd668('0x3')]},'acceptAt':{'type':Sequelize[_0xd668('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xd668('0x2')]}};
\ No newline at end of file
index ac6e8e1..633c1ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['destroy','error','stack','name','send','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','MailQueueReport','rawAttributes','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','then'];(function(_0x485190,_0x8d9c32){var _0x5d382b=function(_0x25bb5d){while(--_0x25bb5d){_0x485190['push'](_0x485190['shift']());}};_0x5d382b(++_0x8d9c32);}(_0xeb3b,0x19e));var _0xbeb3=function(_0xfcdda0,_0x32479b){_0xfcdda0=_0xfcdda0-0x0;var _0x17ebe3=_0xeb3b[_0xfcdda0];return _0x17ebe3;};'use strict';var emlformat=require(_0xbeb3('0x0'));var rimraf=require(_0xbeb3('0x1'));var zipdir=require(_0xbeb3('0x2'));var jsonpatch=require(_0xbeb3('0x3'));var rp=require(_0xbeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbeb3('0x5'));var util=require('util');var path=require(_0xbeb3('0x6'));var sox=require('sox');var csv=require(_0xbeb3('0x7'));var ejs=require(_0xbeb3('0x8'));var fs=require('fs');var fs_extra=require(_0xbeb3('0x9'));var _=require(_0xbeb3('0xa'));var squel=require(_0xbeb3('0xb'));var crypto=require(_0xbeb3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbeb3('0xd'));var toCsv=require(_0xbeb3('0x7'));var querystring=require(_0xbeb3('0xe'));var Papa=require(_0xbeb3('0xf'));var Redis=require(_0xbeb3('0x10'));var authService=require(_0xbeb3('0x11'));var qs=require(_0xbeb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbeb3('0x13'));var logger=require(_0xbeb3('0x14'))('api');var utils=require(_0xbeb3('0x15'));var config=require(_0xbeb3('0x16'));var licenseUtil=require(_0xbeb3('0x17'));var db=require(_0xbeb3('0x18'))['db'];function respondWithStatusCode(_0x19868e,_0x313296){_0x313296=_0x313296||0xcc;return function(_0x5b9ace){if(_0x5b9ace){return _0x19868e['sendStatus'](_0x313296);}return _0x19868e[_0xbeb3('0x19')](_0x313296)[_0xbeb3('0x1a')]();};}function respondWithResult(_0x5f521b,_0x4dfb28){_0x4dfb28=_0x4dfb28||0xc8;return function(_0xed9879){if(_0xed9879){return _0x5f521b[_0xbeb3('0x19')](_0x4dfb28)[_0xbeb3('0x1b')](_0xed9879);}};}function respondWithFilteredResult(_0x43d58a,_0x26daf2){return function(_0x535836){if(_0x535836){var _0x1aeaee=typeof _0x26daf2['offset']===_0xbeb3('0x1c')&&typeof _0x26daf2['limit']==='undefined';var _0x4f8481=_0x535836[_0xbeb3('0x1d')];var _0x44a4bb=_0x1aeaee?0x0:_0x26daf2[_0xbeb3('0x1e')];var _0x10b15d=_0x1aeaee?_0x535836['count']:_0x26daf2[_0xbeb3('0x1e')]+_0x26daf2[_0xbeb3('0x1f')];var _0xe2cc47;if(_0x10b15d>=_0x4f8481){_0x10b15d=_0x4f8481;_0xe2cc47=0xc8;}else{_0xe2cc47=0xce;}_0x43d58a['status'](_0xe2cc47);return _0x43d58a['set'](_0xbeb3('0x20'),_0x44a4bb+'-'+_0x10b15d+'/'+_0x4f8481)['json'](_0x535836);}return null;};}function patchUpdates(_0x1d917b){return function(_0x50b005){try{jsonpatch['apply'](_0x50b005,_0x1d917b,!![]);}catch(_0xfa2736){return BPromise[_0xbeb3('0x21')](_0xfa2736);}return _0x50b005[_0xbeb3('0x22')]();};}function saveUpdates(_0x4bd89e,_0x301899){return function(_0x18ea0f){if(_0x18ea0f){return _0x18ea0f['update'](_0x4bd89e)[_0xbeb3('0x23')](function(_0x366bdb){return _0x366bdb;});}return null;};}function removeEntity(_0x55a59d,_0xfc384a){return function(_0x278fe4){if(_0x278fe4){return _0x278fe4[_0xbeb3('0x24')]()[_0xbeb3('0x23')](function(){_0x55a59d[_0xbeb3('0x19')](0xcc)[_0xbeb3('0x1a')]();});}};}function handleEntityNotFound(_0x84921a,_0x340581){return function(_0x46fe17){if(!_0x46fe17){_0x84921a['sendStatus'](0x194);}return _0x46fe17;};}function handleError(_0x4e695e,_0x1f36b9){_0x1f36b9=_0x1f36b9||0x1f4;return function(_0x520116){logger[_0xbeb3('0x25')](_0x520116[_0xbeb3('0x26')]);if(_0x520116[_0xbeb3('0x27')]){delete _0x520116[_0xbeb3('0x27')];}_0x4e695e['status'](_0x1f36b9)[_0xbeb3('0x28')](_0x520116);};}exports['index']=function(_0x26cd8f,_0xab301c){var _0x5bd93d={},_0x483198={},_0x9b8f13={'count':0x0,'rows':[]};var _0x585c6f=_['map'](db['MailQueueReport']['rawAttributes'],function(_0xf5dbaf){return{'name':_0xf5dbaf['fieldName'],'type':_0xf5dbaf[_0xbeb3('0x29')][_0xbeb3('0x2a')]};});_0x483198[_0xbeb3('0x2b')]=_[_0xbeb3('0x2c')](_0x585c6f,_0xbeb3('0x27'));_0x483198[_0xbeb3('0x2d')]=_[_0xbeb3('0x2e')](_0x26cd8f[_0xbeb3('0x2d')]);_0x483198[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x483198['model'],_0x483198[_0xbeb3('0x2d')]);_0x5bd93d[_0xbeb3('0x31')]=_['intersection'](_0x483198[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0x5bd93d['attributes']=_0x5bd93d[_0xbeb3('0x31')][_0xbeb3('0x33')]?_0x5bd93d[_0xbeb3('0x31')]:_0x483198[_0xbeb3('0x2b')];if(!_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x34')](_0xbeb3('0x35'))){_0x5bd93d[_0xbeb3('0x1f')]=qs[_0xbeb3('0x1f')](_0x26cd8f['query'][_0xbeb3('0x1f')]);_0x5bd93d['offset']=qs[_0xbeb3('0x1e')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x1e')]);}_0x5bd93d[_0xbeb3('0x36')]=qs[_0xbeb3('0x37')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x37')]);_0x5bd93d[_0xbeb3('0x38')]=qs['filters'](_[_0xbeb3('0x39')](_0x26cd8f['query'],_0x483198['filters']),_0x585c6f);if(_0x26cd8f['query'][_0xbeb3('0x3a')]){_0x5bd93d[_0xbeb3('0x38')]=_[_0xbeb3('0x3b')](_0x5bd93d[_0xbeb3('0x38')],{'$or':_[_0xbeb3('0x2c')](_0x585c6f,function(_0x40f166){if(_0x40f166['type']!==_0xbeb3('0x3c')){var _0x40de8d={};_0x40de8d[_0x40f166[_0xbeb3('0x27')]]={'$like':'%'+_0x26cd8f['query']['filter']+'%'};return _0x40de8d;}})});}_0x5bd93d=_['merge']({},_0x5bd93d,_0x26cd8f[_0xbeb3('0x3d')]);var _0x2a8860={'where':_0x5bd93d[_0xbeb3('0x38')]};return db['MailQueueReport'][_0xbeb3('0x1d')](_0x2a8860)['then'](function(_0x1b6700){_0x9b8f13[_0xbeb3('0x1d')]=_0x1b6700;if(_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x3e')]){_0x5bd93d['include']=[{'all':!![]}];}return db['MailQueueReport'][_0xbeb3('0x3f')](_0x5bd93d);})[_0xbeb3('0x23')](function(_0x3d4262){_0x9b8f13[_0xbeb3('0x40')]=_0x3d4262;return _0x9b8f13;})[_0xbeb3('0x23')](respondWithFilteredResult(_0xab301c,_0x5bd93d))[_0xbeb3('0x41')](handleError(_0xab301c,null));};exports[_0xbeb3('0x42')]=function(_0x4606a6,_0x5758c6){var _0xfcb57f={'raw':!![],'where':{'id':_0x4606a6[_0xbeb3('0x43')]['id']}},_0x39f2d2={};_0x39f2d2[_0xbeb3('0x2b')]=_[_0xbeb3('0x2e')](db[_0xbeb3('0x44')][_0xbeb3('0x45')]);_0x39f2d2['query']=_[_0xbeb3('0x2e')](_0x4606a6[_0xbeb3('0x2d')]);_0x39f2d2[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],_0x39f2d2[_0xbeb3('0x2d')]);_0xfcb57f[_0xbeb3('0x31')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x4606a6[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0xfcb57f[_0xbeb3('0x31')]=_0xfcb57f['attributes'][_0xbeb3('0x33')]?_0xfcb57f[_0xbeb3('0x31')]:_0x39f2d2[_0xbeb3('0x2b')];if(_0x4606a6['query']['includeAll']){_0xfcb57f[_0xbeb3('0x46')]=[{'all':!![]}];}_0xfcb57f=_[_0xbeb3('0x3b')]({},_0xfcb57f,_0x4606a6[_0xbeb3('0x3d')]);return db[_0xbeb3('0x44')]['find'](_0xfcb57f)[_0xbeb3('0x23')](handleEntityNotFound(_0x5758c6,null))['then'](respondWithResult(_0x5758c6,null))['catch'](handleError(_0x5758c6,null));};exports[_0xbeb3('0x47')]=function(_0x393e60,_0x1ff297){return db[_0xbeb3('0x44')]['create'](_0x393e60[_0xbeb3('0x48')],{})[_0xbeb3('0x23')](respondWithResult(_0x1ff297,0xc9))[_0xbeb3('0x41')](handleError(_0x1ff297,null));};exports['update']=function(_0x3f93ab,_0x58c49f){if(_0x3f93ab['body']['id']){delete _0x3f93ab[_0xbeb3('0x48')]['id'];}return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x3f93ab['params']['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x58c49f,null))[_0xbeb3('0x23')](saveUpdates(_0x3f93ab[_0xbeb3('0x48')],null))['then'](respondWithResult(_0x58c49f,null))[_0xbeb3('0x41')](handleError(_0x58c49f,null));};exports['destroy']=function(_0x39605b,_0x4d8e21){return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x39605b[_0xbeb3('0x43')]['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x4d8e21,null))[_0xbeb3('0x23')](removeEntity(_0x4d8e21,null))[_0xbeb3('0x41')](handleError(_0x4d8e21,null));};exports[_0xbeb3('0x4a')]=function(_0x168434,_0x49fded){return db[_0xbeb3('0x44')][_0xbeb3('0x4a')]()[_0xbeb3('0x23')](respondWithResult(_0x49fded,null))[_0xbeb3('0x41')](handleError(_0x49fded,null));};
\ No newline at end of file
+var _0xacf4=['findAll','rows','catch','show','params','intersection','length','includeAll','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','include'];(function(_0x4536a4,_0x55af7b){var _0x4fd1c1=function(_0x4c68cd){while(--_0x4c68cd){_0x4536a4['push'](_0x4536a4['shift']());}};_0x4fd1c1(++_0x55af7b);}(_0xacf4,0xe7));var _0x4acf=function(_0x4f0fa9,_0x2c5734){_0x4f0fa9=_0x4f0fa9-0x0;var _0x52ef8e=_0xacf4[_0x4f0fa9];return _0x52ef8e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4acf('0x0'));var jsonpatch=require(_0x4acf('0x1'));var rp=require(_0x4acf('0x2'));var moment=require(_0x4acf('0x3'));var BPromise=require(_0x4acf('0x4'));var Mustache=require(_0x4acf('0x5'));var util=require(_0x4acf('0x6'));var path=require('path');var sox=require(_0x4acf('0x7'));var csv=require(_0x4acf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4acf('0x9'));var _=require(_0x4acf('0xa'));var squel=require(_0x4acf('0xb'));var crypto=require(_0x4acf('0xc'));var jsforce=require(_0x4acf('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4acf('0xe'));var Papa=require('papaparse');var Redis=require(_0x4acf('0xf'));var authService=require(_0x4acf('0x10'));var qs=require(_0x4acf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4acf('0x12'));var logger=require(_0x4acf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x4acf('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1783d2,_0x979f49){_0x979f49=_0x979f49||0xcc;return function(_0x3734e1){if(_0x3734e1){return _0x1783d2[_0x4acf('0x15')](_0x979f49);}return _0x1783d2[_0x4acf('0x16')](_0x979f49)[_0x4acf('0x17')]();};}function respondWithResult(_0x7ab3ea,_0x15386a){_0x15386a=_0x15386a||0xc8;return function(_0x2025ca){if(_0x2025ca){return _0x7ab3ea[_0x4acf('0x16')](_0x15386a)[_0x4acf('0x18')](_0x2025ca);}};}function respondWithFilteredResult(_0x5f0260,_0x1b584a){return function(_0x57d8e0){if(_0x57d8e0){var _0x34cec1=typeof _0x1b584a[_0x4acf('0x19')]===_0x4acf('0x1a')&&typeof _0x1b584a['limit']==='undefined';var _0x13d10e=_0x57d8e0[_0x4acf('0x1b')];var _0x240c00=_0x34cec1?0x0:_0x1b584a['offset'];var _0x2a678b=_0x34cec1?_0x57d8e0[_0x4acf('0x1b')]:_0x1b584a[_0x4acf('0x19')]+_0x1b584a[_0x4acf('0x1c')];var _0x2f0cec;if(_0x2a678b>=_0x13d10e){_0x2a678b=_0x13d10e;_0x2f0cec=0xc8;}else{_0x2f0cec=0xce;}_0x5f0260[_0x4acf('0x16')](_0x2f0cec);return _0x5f0260[_0x4acf('0x1d')](_0x4acf('0x1e'),_0x240c00+'-'+_0x2a678b+'/'+_0x13d10e)[_0x4acf('0x18')](_0x57d8e0);}return null;};}function patchUpdates(_0x2feb89){return function(_0x1a3118){try{jsonpatch['apply'](_0x1a3118,_0x2feb89,!![]);}catch(_0x28d698){return BPromise[_0x4acf('0x1f')](_0x28d698);}return _0x1a3118['save']();};}function saveUpdates(_0x41e5d2,_0x17775f){return function(_0x569d9e){if(_0x569d9e){return _0x569d9e[_0x4acf('0x20')](_0x41e5d2)[_0x4acf('0x21')](function(_0x433b7a){return _0x433b7a;});}return null;};}function removeEntity(_0x454555,_0x53885f){return function(_0x1a2286){if(_0x1a2286){return _0x1a2286[_0x4acf('0x22')]()['then'](function(){_0x454555[_0x4acf('0x16')](0xcc)[_0x4acf('0x17')]();});}};}function handleEntityNotFound(_0x52a84a,_0x126522){return function(_0x7ebb){if(!_0x7ebb){_0x52a84a[_0x4acf('0x15')](0x194);}return _0x7ebb;};}function handleError(_0x16458f,_0x571a30){_0x571a30=_0x571a30||0x1f4;return function(_0x50236d){logger[_0x4acf('0x23')](_0x50236d[_0x4acf('0x24')]);if(_0x50236d[_0x4acf('0x25')]){delete _0x50236d[_0x4acf('0x25')];}_0x16458f[_0x4acf('0x16')](_0x571a30)[_0x4acf('0x26')](_0x50236d);};}exports[_0x4acf('0x27')]=function(_0x7a1e79,_0x382c41){var _0x2a3830={},_0x57989e={},_0x3521c2={'count':0x0,'rows':[]};var _0x3f5614=_[_0x4acf('0x28')](db[_0x4acf('0x29')][_0x4acf('0x2a')],function(_0x28570f){return{'name':_0x28570f[_0x4acf('0x2b')],'type':_0x28570f['type'][_0x4acf('0x2c')]};});_0x57989e[_0x4acf('0x2d')]=_[_0x4acf('0x28')](_0x3f5614,'name');_0x57989e[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0x7a1e79[_0x4acf('0x2e')]);_0x57989e[_0x4acf('0x30')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],_0x57989e[_0x4acf('0x2e')]);_0x2a3830[_0x4acf('0x31')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x32')]));_0x2a3830[_0x4acf('0x31')]=_0x2a3830[_0x4acf('0x31')]['length']?_0x2a3830[_0x4acf('0x31')]:_0x57989e[_0x4acf('0x2d')];if(!_0x7a1e79['query'][_0x4acf('0x33')]('nolimit')){_0x2a3830['limit']=qs['limit'](_0x7a1e79['query']['limit']);_0x2a3830['offset']=qs['offset'](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x19')]);}_0x2a3830['order']=qs[_0x4acf('0x34')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x34')]);_0x2a3830[_0x4acf('0x35')]=qs[_0x4acf('0x30')](_[_0x4acf('0x36')](_0x7a1e79[_0x4acf('0x2e')],_0x57989e[_0x4acf('0x30')]),_0x3f5614);if(_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x37')]){_0x2a3830['where']=_['merge'](_0x2a3830[_0x4acf('0x35')],{'$or':_[_0x4acf('0x28')](_0x3f5614,function(_0x4859b6){if(_0x4859b6[_0x4acf('0x38')]!==_0x4acf('0x39')){var _0x43a2ea={};_0x43a2ea[_0x4859b6[_0x4acf('0x25')]]={'$like':'%'+_0x7a1e79['query']['filter']+'%'};return _0x43a2ea;}})});}_0x2a3830=_[_0x4acf('0x3a')]({},_0x2a3830,_0x7a1e79[_0x4acf('0x3b')]);var _0x3d5529={'where':_0x2a3830[_0x4acf('0x35')]};return db['MailQueueReport'][_0x4acf('0x1b')](_0x3d5529)[_0x4acf('0x21')](function(_0x4e9370){_0x3521c2['count']=_0x4e9370;if(_0x7a1e79['query']['includeAll']){_0x2a3830[_0x4acf('0x3c')]=[{'all':!![]}];}return db[_0x4acf('0x29')][_0x4acf('0x3d')](_0x2a3830);})['then'](function(_0x1015e3){_0x3521c2[_0x4acf('0x3e')]=_0x1015e3;return _0x3521c2;})[_0x4acf('0x21')](respondWithFilteredResult(_0x382c41,_0x2a3830))[_0x4acf('0x3f')](handleError(_0x382c41,null));};exports[_0x4acf('0x40')]=function(_0xea75e4,_0x7cf2a){var _0x17d5e9={'raw':!![],'where':{'id':_0xea75e4[_0x4acf('0x41')]['id']}},_0x461547={};_0x461547[_0x4acf('0x2d')]=_['keys'](db[_0x4acf('0x29')][_0x4acf('0x2a')]);_0x461547[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0xea75e4[_0x4acf('0x2e')]);_0x461547['filters']=_['intersection'](_0x461547[_0x4acf('0x2d')],_0x461547[_0x4acf('0x2e')]);_0x17d5e9[_0x4acf('0x31')]=_[_0x4acf('0x42')](_0x461547[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0xea75e4['query'][_0x4acf('0x32')]));_0x17d5e9['attributes']=_0x17d5e9[_0x4acf('0x31')][_0x4acf('0x43')]?_0x17d5e9['attributes']:_0x461547['model'];if(_0xea75e4[_0x4acf('0x2e')][_0x4acf('0x44')]){_0x17d5e9[_0x4acf('0x3c')]=[{'all':!![]}];}_0x17d5e9=_[_0x4acf('0x3a')]({},_0x17d5e9,_0xea75e4['options']);return db[_0x4acf('0x29')][_0x4acf('0x45')](_0x17d5e9)[_0x4acf('0x21')](handleEntityNotFound(_0x7cf2a,null))[_0x4acf('0x21')](respondWithResult(_0x7cf2a,null))[_0x4acf('0x3f')](handleError(_0x7cf2a,null));};exports[_0x4acf('0x46')]=function(_0x1bd7d0,_0x2d946c){return db['MailQueueReport']['create'](_0x1bd7d0[_0x4acf('0x47')],{})[_0x4acf('0x21')](respondWithResult(_0x2d946c,0xc9))[_0x4acf('0x3f')](handleError(_0x2d946c,null));};exports[_0x4acf('0x20')]=function(_0x287406,_0x859247){if(_0x287406[_0x4acf('0x47')]['id']){delete _0x287406[_0x4acf('0x47')]['id'];}return db[_0x4acf('0x29')][_0x4acf('0x45')]({'where':{'id':_0x287406[_0x4acf('0x41')]['id']}})[_0x4acf('0x21')](handleEntityNotFound(_0x859247,null))['then'](saveUpdates(_0x287406[_0x4acf('0x47')],null))[_0x4acf('0x21')](respondWithResult(_0x859247,null))[_0x4acf('0x3f')](handleError(_0x859247,null));};exports[_0x4acf('0x22')]=function(_0x392dac,_0x3cf54a){return db[_0x4acf('0x29')][_0x4acf('0x45')]({'where':{'id':_0x392dac[_0x4acf('0x41')]['id']}})[_0x4acf('0x21')](handleEntityNotFound(_0x3cf54a,null))[_0x4acf('0x21')](removeEntity(_0x3cf54a,null))[_0x4acf('0x3f')](handleError(_0x3cf54a,null));};exports[_0x4acf('0x48')]=function(_0x2b62bc,_0x113425){return db[_0x4acf('0x29')]['describe']()[_0x4acf('0x21')](respondWithResult(_0x113425,null))[_0x4acf('0x3f')](handleError(_0x113425,null));};
\ No newline at end of file
index 193db77..72ba84f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e34=['../../config/environment','./mailQueueReport.attributes','exports','MailQueueReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x375922,_0x2b1237){var _0x24e8e0=function(_0x3affeb){while(--_0x3affeb){_0x375922['push'](_0x375922['shift']());}};_0x24e8e0(++_0x2b1237);}(_0x0e34,0x13d));var _0x40e3=function(_0x5d87c9,_0x283dad){_0x5d87c9=_0x5d87c9-0x0;var _0xa7ab62=_0x0e34[_0x5d87c9];return _0xa7ab62;};'use strict';var _=require(_0x40e3('0x0'));var util=require('util');var logger=require(_0x40e3('0x1'))(_0x40e3('0x2'));var moment=require(_0x40e3('0x3'));var BPromise=require(_0x40e3('0x4'));var rp=require(_0x40e3('0x5'));var fs=require('fs');var path=require(_0x40e3('0x6'));var rimraf=require('rimraf');var config=require(_0x40e3('0x7'));var attributes=require(_0x40e3('0x8'));module[_0x40e3('0x9')]=function(_0x3b6724,_0x422995){return _0x3b6724['define'](_0x40e3('0xa'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x40e3('0xb'),'fields':[_0x40e3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8db9=['request-promise','path','rimraf','../../config/environment','exports','define','MailQueueReport','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0xe0e1f7,_0x4560d3){var _0x3fd721=function(_0x22fb99){while(--_0x22fb99){_0xe0e1f7['push'](_0xe0e1f7['shift']());}};_0x3fd721(++_0x4560d3);}(_0x8db9,0x1c2));var _0x98db=function(_0x463fe1,_0xfdaf07){_0x463fe1=_0x463fe1-0x0;var _0x2656cb=_0x8db9[_0x463fe1];return _0x2656cb;};'use strict';var _=require(_0x98db('0x0'));var util=require(_0x98db('0x1'));var logger=require(_0x98db('0x2'))(_0x98db('0x3'));var moment=require(_0x98db('0x4'));var BPromise=require('bluebird');var rp=require(_0x98db('0x5'));var fs=require('fs');var path=require(_0x98db('0x6'));var rimraf=require(_0x98db('0x7'));var config=require(_0x98db('0x8'));var attributes=require('./mailQueueReport.attributes');module[_0x98db('0x9')]=function(_0x139c7e,_0x330791){return _0x139c7e[_0x98db('0xa')](_0x98db('0xb'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0x98db('0xc'),'fields':[_0x98db('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ee3fe0b..5cf7221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x4f00e9,_0x169f61){var _0x2a0cc0=function(_0x553cc8){while(--_0x553cc8){_0x4f00e9['push'](_0x4f00e9['shift']());}};_0x2a0cc0(++_0x169f61);}(_0x7a54,0x106));var _0x47a5=function(_0x2d40d9,_0x4eb51a){_0x2d40d9=_0x2d40d9-0x0;var _0x1b4cec=_0x7a54[_0x2d40d9];return _0x1b4cec;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x1db35b,_0x14aa90){var _0x464264=function(_0x46575a){while(--_0x46575a){_0x1db35b['push'](_0x1db35b['shift']());}};_0x464264(++_0x14aa90);}(_0x7a54,0x106));var _0x47a5=function(_0x157d18,_0x3236ef){_0x157d18=_0x157d18-0x0;var _0x33d1f0=_0x7a54[_0x157d18];return _0x33d1f0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 3bb92a2..6e3f533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x58bbeb,_0x19caf1){var _0x5d9f3e=function(_0x27e100){while(--_0x27e100){_0x58bbeb['push'](_0x58bbeb['shift']());}};_0x5d9f3e(++_0x19caf1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x31d630,_0x228e62){var _0x5f5662=function(_0x576648){while(--_0x576648){_0x31d630['push'](_0x31d630['shift']());}};_0x5f5662(++_0x228e62);}(_0xe706,0xa3));var _0x6e70=function(_0x4ab6a1,_0x4d64d5){_0x4ab6a1=_0x4ab6a1-0x0;var _0x2a24cc=_0xe706[_0x4ab6a1];return _0x2a24cc;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 3039c17..4b43167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['INBOX','STRING','BOOLEAN','INTEGER'];(function(_0x1cb73d,_0x3db9be){var _0x1e7bd8=function(_0x3ab56e){while(--_0x3ab56e){_0x1cb73d['push'](_0x1cb73d['shift']());}};_0x1e7bd8(++_0x3db9be);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1bf809,_0x536f55){_0x1bf809=_0x1bf809-0x0;var _0x1caa4e=_0xcb91[_0x1bf809];return _0x1caa4e;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x1cb9('0x0')]},'host':{'type':Sequelize[_0x1cb9('0x0')]},'authentication':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x1cb9('0x0')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1cb9('0x2')]},'tls':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x1cb9('0x3')},'connTimeout':{'type':Sequelize[_0x1cb9('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x1cb9('0x0')]}};
\ No newline at end of file
+var _0x5c00=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x16d0da,_0x1ff352){var _0x37c510=function(_0x20f016){while(--_0x20f016){_0x16d0da['push'](_0x16d0da['shift']());}};_0x37c510(++_0x1ff352);}(_0x5c00,0x17e));var _0x05c0=function(_0x31ced5,_0x5d5415){_0x31ced5=_0x31ced5-0x0;var _0x10d9e5=_0x5c00[_0x31ced5];return _0x10d9e5;};'use strict';var Sequelize=require(_0x05c0('0x0'));module[_0x05c0('0x1')]={'description':{'type':Sequelize[_0x05c0('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x05c0('0x2')]},'port':{'type':Sequelize[_0x05c0('0x4')]},'tls':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x05c0('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x05c0('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x05c0('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x05c0('0x2')]}};
\ No newline at end of file
index e4b75ab..84b36d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a23=['path','../../config/environment','exports','define','MailServerIn','mail_servers_in','lodash','util','moment','bluebird','request-promise'];(function(_0x2c94dc,_0x520b78){var _0x30b935=function(_0x502337){while(--_0x502337){_0x2c94dc['push'](_0x2c94dc['shift']());}};_0x30b935(++_0x520b78);}(_0x1a23,0x7f));var _0x31a2=function(_0x337ab2,_0x380494){_0x337ab2=_0x337ab2-0x0;var _0x4c4ea7=_0x1a23[_0x337ab2];return _0x4c4ea7;};'use strict';var _=require(_0x31a2('0x0'));var util=require(_0x31a2('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x31a2('0x2'));var BPromise=require(_0x31a2('0x3'));var rp=require(_0x31a2('0x4'));var fs=require('fs');var path=require(_0x31a2('0x5'));var rimraf=require('rimraf');var config=require(_0x31a2('0x6'));var attributes=require('./mailServerIn.attributes');module[_0x31a2('0x7')]=function(_0x51da82,_0x5589ae){return _0x51da82[_0x31a2('0x8')](_0x31a2('0x9'),attributes,{'tableName':_0x31a2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x48f6=['MailServerIn','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./mailServerIn.attributes','exports'];(function(_0x518f9c,_0x784aa4){var _0x540eb7=function(_0x369ef6){while(--_0x369ef6){_0x518f9c['push'](_0x518f9c['shift']());}};_0x540eb7(++_0x784aa4);}(_0x48f6,0x1c3));var _0x648f=function(_0x53d8ee,_0x226a96){_0x53d8ee=_0x53d8ee-0x0;var _0x2e2cad=_0x48f6[_0x53d8ee];return _0x2e2cad;};'use strict';var _=require(_0x648f('0x0'));var util=require(_0x648f('0x1'));var logger=require(_0x648f('0x2'))(_0x648f('0x3'));var moment=require('moment');var BPromise=require(_0x648f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x648f('0x5'));var config=require(_0x648f('0x6'));var attributes=require(_0x648f('0x7'));module[_0x648f('0x8')]=function(_0x3041c0,_0x27b902){return _0x3041c0['define'](_0x648f('0x9'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3216e4f..3f2fb05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d6b=['ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailServerIn','findAll','options','where','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring'];(function(_0x3cbb0e,_0x16130b){var _0x429c75=function(_0x4b415e){while(--_0x4b415e){_0x3cbb0e['push'](_0x3cbb0e['shift']());}};_0x429c75(++_0x16130b);}(_0x5d6b,0xc1));var _0xb5d6=function(_0x2eb88f,_0x37fe90){_0x2eb88f=_0x2eb88f-0x0;var _0x52e1ed=_0x5d6b[_0x2eb88f];return _0x52e1ed;};'use strict';var _=require(_0xb5d6('0x0'));var util=require(_0xb5d6('0x1'));var moment=require(_0xb5d6('0x2'));var BPromise=require(_0xb5d6('0x3'));var rs=require(_0xb5d6('0x4'));var fs=require('fs');var Redis=require(_0xb5d6('0x5'));var db=require(_0xb5d6('0x6'))['db'];var utils=require(_0xb5d6('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xb5d6('0x8'));var client=jayson[_0xb5d6('0x9')][_0xb5d6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21d135,_0x235828,_0x42ceb5){return new BPromise(function(_0x5307b3,_0x5e2dd3){return client[_0xb5d6('0xb')](_0x21d135,_0x42ceb5)[_0xb5d6('0xc')](function(_0x3e5910){logger[_0xb5d6('0xd')](_0xb5d6('0xe'),_0x235828,_0xb5d6('0xf'));logger[_0xb5d6('0x10')](_0xb5d6('0x11'),_0x235828,_0xb5d6('0xf'),JSON[_0xb5d6('0x12')](_0x3e5910));if(_0x3e5910['error']){if(_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x14')]===0x1f4){logger[_0xb5d6('0x13')](_0xb5d6('0xe'),_0x235828,_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);return _0x5e2dd3(_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);}logger[_0xb5d6('0x13')](_0xb5d6('0xe'),_0x235828,_0x3e5910[_0xb5d6('0x13')][_0xb5d6('0x15')]);return _0x5307b3(_0x3e5910['error'][_0xb5d6('0x15')]);}else{logger[_0xb5d6('0xd')](_0xb5d6('0xe'),_0x235828,_0xb5d6('0xf'));_0x5307b3(_0x3e5910[_0xb5d6('0x16')][_0xb5d6('0x15')]);}})[_0xb5d6('0x17')](function(_0x4b7b5d){logger['error'](_0xb5d6('0xe'),_0x235828,_0x4b7b5d);_0x5e2dd3(_0x4b7b5d);});});}exports[_0xb5d6('0x18')]=function(_0x269113){var _0x100ee0=this;return new Promise(function(_0x16ba96,_0x3b695b){return db['MailServerIn'][_0xb5d6('0x19')]({'raw':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x269113['options']?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1b')]||null:null,'attributes':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1c')]||null:null,'limit':_0x269113['options']?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1d')]||null:null,'include':_0x269113[_0xb5d6('0x1a')]?_0x269113[_0xb5d6('0x1a')][_0xb5d6('0x1e')]?_[_0xb5d6('0x1f')](_0x269113['options']['include'],function(_0x1a5701){return{'model':db[_0x1a5701[_0xb5d6('0x20')]],'as':_0x1a5701['as'],'attributes':_0x1a5701[_0xb5d6('0x1c')],'include':_0x1a5701[_0xb5d6('0x1e')]?_[_0xb5d6('0x1f')](_0x1a5701[_0xb5d6('0x1e')],function(_0x5ff09b){return{'model':db[_0x5ff09b[_0xb5d6('0x20')]],'as':_0x5ff09b['as'],'attributes':_0x5ff09b['attributes'],'include':_0x5ff09b['include']?_['map'](_0x5ff09b['include'],function(_0xa620f9){return{'model':db[_0xa620f9[_0xb5d6('0x20')]],'as':_0xa620f9['as'],'attributes':_0xa620f9[_0xb5d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb5d6('0xc')](function(_0x379132){logger[_0xb5d6('0xd')](_0xb5d6('0x18'),_0x269113);logger['debug'](_0xb5d6('0x18'),_0x269113,JSON[_0xb5d6('0x12')](_0x379132));_0x16ba96(_0x379132);})['catch'](function(_0x37b609){logger['error']('GetMailServerIn',_0x37b609['message'],_0x269113);_0x3b695b(_0x100ee0[_0xb5d6('0x13')](0x1f4,_0x37b609[_0xb5d6('0x15')]));});});};
\ No newline at end of file
+var _0xd85c=['model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetMailServerIn','MailServerIn','findAll','options','where','attributes','limit','include','map'];(function(_0x2512ce,_0x525ffe){var _0x4c5923=function(_0x32d5c1){while(--_0x32d5c1){_0x2512ce['push'](_0x2512ce['shift']());}};_0x4c5923(++_0x525ffe);}(_0xd85c,0xb5));var _0xcd85=function(_0x56170e,_0x4b970b){_0x56170e=_0x56170e-0x0;var _0x3ecd25=_0xd85c[_0x56170e];return _0x3ecd25;};'use strict';var _=require(_0xcd85('0x0'));var util=require(_0xcd85('0x1'));var moment=require(_0xcd85('0x2'));var BPromise=require(_0xcd85('0x3'));var rs=require(_0xcd85('0x4'));var fs=require('fs');var Redis=require(_0xcd85('0x5'));var db=require(_0xcd85('0x6'))['db'];var utils=require(_0xcd85('0x7'));var logger=require(_0xcd85('0x8'))(_0xcd85('0x9'));var config=require('../../config/environment');var jayson=require(_0xcd85('0xa'));var client=jayson[_0xcd85('0xb')][_0xcd85('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x246767,_0x2be0c7,_0x23bf8c){return new BPromise(function(_0x816fdd,_0x35eda1){return client[_0xcd85('0xd')](_0x246767,_0x23bf8c)[_0xcd85('0xe')](function(_0x35661f){logger['info'](_0xcd85('0xf'),_0x2be0c7,_0xcd85('0x10'));logger[_0xcd85('0x11')](_0xcd85('0x12'),_0x2be0c7,_0xcd85('0x10'),JSON[_0xcd85('0x13')](_0x35661f));if(_0x35661f[_0xcd85('0x14')]){if(_0x35661f[_0xcd85('0x14')][_0xcd85('0x15')]===0x1f4){logger[_0xcd85('0x14')]('MailServerIn,\x20%s,\x20%s',_0x2be0c7,_0x35661f['error']['message']);return _0x35eda1(_0x35661f[_0xcd85('0x14')][_0xcd85('0x16')]);}logger['error'](_0xcd85('0xf'),_0x2be0c7,_0x35661f[_0xcd85('0x14')][_0xcd85('0x16')]);return _0x816fdd(_0x35661f[_0xcd85('0x14')][_0xcd85('0x16')]);}else{logger[_0xcd85('0x17')](_0xcd85('0xf'),_0x2be0c7,'request\x20sent');_0x816fdd(_0x35661f[_0xcd85('0x18')]['message']);}})[_0xcd85('0x19')](function(_0x265dfb){logger[_0xcd85('0x14')](_0xcd85('0xf'),_0x2be0c7,_0x265dfb);_0x35eda1(_0x265dfb);});});}exports[_0xcd85('0x1a')]=function(_0x151c20){var _0x395da1=this;return new Promise(function(_0x4da867,_0x2d557d){return db[_0xcd85('0x1b')][_0xcd85('0x1c')]({'raw':_0x151c20[_0xcd85('0x1d')]?_0x151c20[_0xcd85('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x151c20['options']?_0x151c20[_0xcd85('0x1d')][_0xcd85('0x1e')]||null:null,'attributes':_0x151c20['options']?_0x151c20[_0xcd85('0x1d')][_0xcd85('0x1f')]||null:null,'limit':_0x151c20[_0xcd85('0x1d')]?_0x151c20[_0xcd85('0x1d')][_0xcd85('0x20')]||null:null,'include':_0x151c20[_0xcd85('0x1d')]?_0x151c20[_0xcd85('0x1d')][_0xcd85('0x21')]?_[_0xcd85('0x22')](_0x151c20['options'][_0xcd85('0x21')],function(_0x3e7a0c){return{'model':db[_0x3e7a0c[_0xcd85('0x23')]],'as':_0x3e7a0c['as'],'attributes':_0x3e7a0c[_0xcd85('0x1f')],'include':_0x3e7a0c[_0xcd85('0x21')]?_[_0xcd85('0x22')](_0x3e7a0c[_0xcd85('0x21')],function(_0x5544bf){return{'model':db[_0x5544bf[_0xcd85('0x23')]],'as':_0x5544bf['as'],'attributes':_0x5544bf[_0xcd85('0x1f')],'include':_0x5544bf['include']?_[_0xcd85('0x22')](_0x5544bf['include'],function(_0x593891){return{'model':db[_0x593891[_0xcd85('0x23')]],'as':_0x593891['as'],'attributes':_0x593891[_0xcd85('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c5ead){logger[_0xcd85('0x17')](_0xcd85('0x1a'),_0x151c20);logger[_0xcd85('0x11')]('GetMailServerIn',_0x151c20,JSON[_0xcd85('0x13')](_0x3c5ead));_0x4da867(_0x3c5ead);})[_0xcd85('0x19')](function(_0x5b92dd){logger[_0xcd85('0x14')](_0xcd85('0x1a'),_0x5b92dd[_0xcd85('0x16')],_0x151c20);_0x2d557d(_0x395da1[_0xcd85('0x14')](0x1f4,_0x5b92dd['message']));});});};
\ No newline at end of file
index c20a99f..a8d47f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x7a54,0x106));var _0x47a5=function(_0x4e37e2,_0xa465de){_0x4e37e2=_0x4e37e2-0x0;var _0x386104=_0x7a54[_0x4e37e2];return _0x386104;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 791facd..26b5ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ea=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x59ac78,_0x4da0a2){var _0x854012=function(_0x1f4235){while(--_0x1f4235){_0x59ac78['push'](_0x59ac78['shift']());}};_0x854012(++_0x4da0a2);}(_0x52ea,0x136));var _0xa52e=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0x52ea[_0x470f63];return _0x4f09e2;};'use strict';var Sequelize=require(_0xa52e('0x0'));module[_0xa52e('0x1')]={'description':{'type':Sequelize[_0xa52e('0x2')]},'host':{'type':Sequelize[_0xa52e('0x2')]},'user':{'type':Sequelize[_0xa52e('0x2')]},'pass':{'type':Sequelize[_0xa52e('0x2')]},'port':{'type':Sequelize[_0xa52e('0x3')]},'secure':{'type':Sequelize[_0xa52e('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xa52e('0x2')]},'authentication':{'type':Sequelize[_0xa52e('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9bfb=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0xb2d916,_0x5bd40f){var _0x388c59=function(_0x8d3e4a){while(--_0x8d3e4a){_0xb2d916['push'](_0xb2d916['shift']());}};_0x388c59(++_0x5bd40f);}(_0x9bfb,0x1c0));var _0xb9bf=function(_0x4f6ea8,_0x191395){_0x4f6ea8=_0x4f6ea8-0x0;var _0x39f538=_0x9bfb[_0x4f6ea8];return _0x39f538;};'use strict';var Sequelize=require(_0xb9bf('0x0'));module[_0xb9bf('0x1')]={'description':{'type':Sequelize[_0xb9bf('0x2')]},'host':{'type':Sequelize[_0xb9bf('0x2')]},'user':{'type':Sequelize[_0xb9bf('0x2')]},'pass':{'type':Sequelize[_0xb9bf('0x2')]},'port':{'type':Sequelize[_0xb9bf('0x3')]},'secure':{'type':Sequelize[_0xb9bf('0x4')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xb9bf('0x4')],'defaultValue':!![]}};
\ No newline at end of file
index 6218352..29b2152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0dc=['jsforce','desk.js','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','apply','update','then','destroy','stack','name','send','map','MailServerOut','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','keys','rawAttributes','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x596f6e,_0x3f8857){var _0x1e0803=function(_0x31f91f){while(--_0x31f91f){_0x596f6e['push'](_0x596f6e['shift']());}};_0x1e0803(++_0x3f8857);}(_0xf0dc,0x1da));var _0xcf0d=function(_0x352787,_0x37b149){_0x352787=_0x352787-0x0;var _0x255514=_0xf0dc[_0x352787];return _0x255514;};'use strict';var emlformat=require(_0xcf0d('0x0'));var rimraf=require(_0xcf0d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcf0d('0x2'));var rp=require(_0xcf0d('0x3'));var moment=require(_0xcf0d('0x4'));var BPromise=require(_0xcf0d('0x5'));var Mustache=require(_0xcf0d('0x6'));var util=require(_0xcf0d('0x7'));var path=require(_0xcf0d('0x8'));var sox=require(_0xcf0d('0x9'));var csv=require(_0xcf0d('0xa'));var ejs=require(_0xcf0d('0xb'));var fs=require('fs');var fs_extra=require(_0xcf0d('0xc'));var _=require(_0xcf0d('0xd'));var squel=require(_0xcf0d('0xe'));var crypto=require(_0xcf0d('0xf'));var jsforce=require(_0xcf0d('0x10'));var deskjs=require(_0xcf0d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcf0d('0x12'));var Redis=require(_0xcf0d('0x13'));var authService=require(_0xcf0d('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xcf0d('0x15'));var utils=require(_0xcf0d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcf0d('0x17'));var db=require(_0xcf0d('0x18'))['db'];function respondWithStatusCode(_0x4f2e59,_0x5d9878){_0x5d9878=_0x5d9878||0xcc;return function(_0x3a0791){if(_0x3a0791){return _0x4f2e59[_0xcf0d('0x19')](_0x5d9878);}return _0x4f2e59['status'](_0x5d9878)[_0xcf0d('0x1a')]();};}function respondWithResult(_0x52c054,_0x2710b6){_0x2710b6=_0x2710b6||0xc8;return function(_0x9e6be8){if(_0x9e6be8){return _0x52c054[_0xcf0d('0x1b')](_0x2710b6)[_0xcf0d('0x1c')](_0x9e6be8);}};}function respondWithFilteredResult(_0x3d711c,_0x50fd51){return function(_0x5ec7c0){if(_0x5ec7c0){var _0x4e928b=typeof _0x50fd51['offset']===_0xcf0d('0x1d')&&typeof _0x50fd51[_0xcf0d('0x1e')]===_0xcf0d('0x1d');var _0x2eada=_0x5ec7c0['count'];var _0xecd491=_0x4e928b?0x0:_0x50fd51[_0xcf0d('0x1f')];var _0x2f566e=_0x4e928b?_0x5ec7c0[_0xcf0d('0x20')]:_0x50fd51['offset']+_0x50fd51[_0xcf0d('0x1e')];var _0x409a92;if(_0x2f566e>=_0x2eada){_0x2f566e=_0x2eada;_0x409a92=0xc8;}else{_0x409a92=0xce;}_0x3d711c['status'](_0x409a92);return _0x3d711c[_0xcf0d('0x21')]('Content-Range',_0xecd491+'-'+_0x2f566e+'/'+_0x2eada)['json'](_0x5ec7c0);}return null;};}function patchUpdates(_0x3a3bf8){return function(_0x2844d5){try{jsonpatch[_0xcf0d('0x22')](_0x2844d5,_0x3a3bf8,!![]);}catch(_0x2361d9){return BPromise['reject'](_0x2361d9);}return _0x2844d5['save']();};}function saveUpdates(_0x453503,_0x32ade5){return function(_0xee58cd){if(_0xee58cd){return _0xee58cd[_0xcf0d('0x23')](_0x453503)[_0xcf0d('0x24')](function(_0xf2f8ee){return _0xf2f8ee;});}return null;};}function removeEntity(_0x253644,_0x4ff17b){return function(_0x4ec652){if(_0x4ec652){return _0x4ec652[_0xcf0d('0x25')]()['then'](function(){_0x253644[_0xcf0d('0x1b')](0xcc)[_0xcf0d('0x1a')]();});}};}function handleEntityNotFound(_0x31cc40,_0x3f6248){return function(_0x352733){if(!_0x352733){_0x31cc40[_0xcf0d('0x19')](0x194);}return _0x352733;};}function handleError(_0x31ae3a,_0x1576ad){_0x1576ad=_0x1576ad||0x1f4;return function(_0x4a6b5f){logger['error'](_0x4a6b5f[_0xcf0d('0x26')]);if(_0x4a6b5f['name']){delete _0x4a6b5f[_0xcf0d('0x27')];}_0x31ae3a['status'](_0x1576ad)[_0xcf0d('0x28')](_0x4a6b5f);};}exports['index']=function(_0x266005,_0x46fe99){var _0x57212b={},_0x54a0a1={},_0x415982={'count':0x0,'rows':[]};var _0x2034d1=_[_0xcf0d('0x29')](db[_0xcf0d('0x2a')]['rawAttributes'],function(_0x5e6080){return{'name':_0x5e6080[_0xcf0d('0x2b')],'type':_0x5e6080[_0xcf0d('0x2c')]['key']};});_0x54a0a1[_0xcf0d('0x2d')]=_[_0xcf0d('0x29')](_0x2034d1,_0xcf0d('0x27'));_0x54a0a1[_0xcf0d('0x2e')]=_['keys'](_0x266005[_0xcf0d('0x2e')]);_0x54a0a1[_0xcf0d('0x2f')]=_[_0xcf0d('0x30')](_0x54a0a1[_0xcf0d('0x2d')],_0x54a0a1[_0xcf0d('0x2e')]);_0x57212b[_0xcf0d('0x31')]=_[_0xcf0d('0x30')](_0x54a0a1['model'],qs[_0xcf0d('0x32')](_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x32')]));_0x57212b[_0xcf0d('0x31')]=_0x57212b[_0xcf0d('0x31')]['length']?_0x57212b[_0xcf0d('0x31')]:_0x54a0a1[_0xcf0d('0x2d')];if(!_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x33')](_0xcf0d('0x34'))){_0x57212b[_0xcf0d('0x1e')]=qs[_0xcf0d('0x1e')](_0x266005['query'][_0xcf0d('0x1e')]);_0x57212b[_0xcf0d('0x1f')]=qs[_0xcf0d('0x1f')](_0x266005[_0xcf0d('0x2e')]['offset']);}_0x57212b[_0xcf0d('0x35')]=qs[_0xcf0d('0x36')](_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x36')]);_0x57212b[_0xcf0d('0x37')]=qs[_0xcf0d('0x2f')](_[_0xcf0d('0x38')](_0x266005[_0xcf0d('0x2e')],_0x54a0a1[_0xcf0d('0x2f')]),_0x2034d1);if(_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x39')]){_0x57212b[_0xcf0d('0x37')]=_['merge'](_0x57212b['where'],{'$or':_['map'](_0x2034d1,function(_0x12244d){if(_0x12244d[_0xcf0d('0x2c')]!==_0xcf0d('0x3a')){var _0x40e5cc={};_0x40e5cc[_0x12244d[_0xcf0d('0x27')]]={'$like':'%'+_0x266005[_0xcf0d('0x2e')][_0xcf0d('0x39')]+'%'};return _0x40e5cc;}})});}_0x57212b=_[_0xcf0d('0x3b')]({},_0x57212b,_0x266005[_0xcf0d('0x3c')]);var _0x28a9f4={'where':_0x57212b[_0xcf0d('0x37')]};return db[_0xcf0d('0x2a')]['count'](_0x28a9f4)[_0xcf0d('0x24')](function(_0x16a53c){_0x415982['count']=_0x16a53c;if(_0x266005[_0xcf0d('0x2e')]['includeAll']){_0x57212b[_0xcf0d('0x3d')]=[{'all':!![]}];}return db[_0xcf0d('0x2a')]['findAll'](_0x57212b);})[_0xcf0d('0x24')](function(_0x3e3b3e){_0x415982[_0xcf0d('0x3e')]=_0x3e3b3e;return _0x415982;})[_0xcf0d('0x24')](respondWithFilteredResult(_0x46fe99,_0x57212b))[_0xcf0d('0x3f')](handleError(_0x46fe99,null));};exports['show']=function(_0x4c6487,_0x435f29){var _0x58566b={'raw':!![],'where':{'id':_0x4c6487['params']['id']}},_0x3e0cdf={};_0x3e0cdf[_0xcf0d('0x2d')]=_[_0xcf0d('0x40')](db[_0xcf0d('0x2a')][_0xcf0d('0x41')]);_0x3e0cdf[_0xcf0d('0x2e')]=_[_0xcf0d('0x40')](_0x4c6487[_0xcf0d('0x2e')]);_0x3e0cdf[_0xcf0d('0x2f')]=_['intersection'](_0x3e0cdf[_0xcf0d('0x2d')],_0x3e0cdf[_0xcf0d('0x2e')]);_0x58566b[_0xcf0d('0x31')]=_[_0xcf0d('0x30')](_0x3e0cdf['model'],qs[_0xcf0d('0x32')](_0x4c6487['query'][_0xcf0d('0x32')]));_0x58566b[_0xcf0d('0x31')]=_0x58566b[_0xcf0d('0x31')]['length']?_0x58566b['attributes']:_0x3e0cdf[_0xcf0d('0x2d')];if(_0x4c6487['query']['includeAll']){_0x58566b[_0xcf0d('0x3d')]=[{'all':!![]}];}_0x58566b=_[_0xcf0d('0x3b')]({},_0x58566b,_0x4c6487['options']);return db['MailServerOut'][_0xcf0d('0x42')](_0x58566b)[_0xcf0d('0x24')](handleEntityNotFound(_0x435f29,null))[_0xcf0d('0x24')](respondWithResult(_0x435f29,null))['catch'](handleError(_0x435f29,null));};exports[_0xcf0d('0x43')]=function(_0x28d5d5,_0x1f16cc){return db['MailServerOut'][_0xcf0d('0x43')](_0x28d5d5[_0xcf0d('0x44')],{})[_0xcf0d('0x24')](respondWithResult(_0x1f16cc,0xc9))[_0xcf0d('0x3f')](handleError(_0x1f16cc,null));};exports[_0xcf0d('0x23')]=function(_0x1bd44c,_0x2c5e8d){if(_0x1bd44c[_0xcf0d('0x44')]['id']){delete _0x1bd44c[_0xcf0d('0x44')]['id'];}return db[_0xcf0d('0x2a')][_0xcf0d('0x42')]({'where':{'id':_0x1bd44c[_0xcf0d('0x45')]['id']}})[_0xcf0d('0x24')](handleEntityNotFound(_0x2c5e8d,null))['then'](saveUpdates(_0x1bd44c[_0xcf0d('0x44')],null))[_0xcf0d('0x24')](respondWithResult(_0x2c5e8d,null))[_0xcf0d('0x3f')](handleError(_0x2c5e8d,null));};exports[_0xcf0d('0x25')]=function(_0x1aa49a,_0x2eb33a){return db[_0xcf0d('0x2a')][_0xcf0d('0x42')]({'where':{'id':_0x1aa49a[_0xcf0d('0x45')]['id']}})[_0xcf0d('0x24')](handleEntityNotFound(_0x2eb33a,null))['then'](removeEntity(_0x2eb33a,null))[_0xcf0d('0x3f')](handleError(_0x2eb33a,null));};
\ No newline at end of file
+var _0xec86=['length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','index','map','MailServerOut','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields'];(function(_0x2a006b,_0x454162){var _0x4e20c1=function(_0x189ab7){while(--_0x189ab7){_0x2a006b['push'](_0x2a006b['shift']());}};_0x4e20c1(++_0x454162);}(_0xec86,0xa6));var _0x6ec8=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xec86[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0x6ec8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ec8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6ec8('0x2'));var moment=require(_0x6ec8('0x3'));var BPromise=require(_0x6ec8('0x4'));var Mustache=require(_0x6ec8('0x5'));var util=require('util');var path=require('path');var sox=require(_0x6ec8('0x6'));var csv=require(_0x6ec8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ec8('0x8'));var _=require('lodash');var squel=require(_0x6ec8('0x9'));var crypto=require(_0x6ec8('0xa'));var jsforce=require(_0x6ec8('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x6ec8('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6ec8('0xc'));var qs=require(_0x6ec8('0xd'));var as=require(_0x6ec8('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ec8('0xf'))(_0x6ec8('0x10'));var utils=require(_0x6ec8('0x11'));var config=require(_0x6ec8('0x12'));var licenseUtil=require(_0x6ec8('0x13'));var db=require(_0x6ec8('0x14'))['db'];function respondWithStatusCode(_0x2a52e9,_0x22c785){_0x22c785=_0x22c785||0xcc;return function(_0x52bbaa){if(_0x52bbaa){return _0x2a52e9[_0x6ec8('0x15')](_0x22c785);}return _0x2a52e9[_0x6ec8('0x16')](_0x22c785)['end']();};}function respondWithResult(_0x4f6eeb,_0x148169){_0x148169=_0x148169||0xc8;return function(_0xecf988){if(_0xecf988){return _0x4f6eeb[_0x6ec8('0x16')](_0x148169)['json'](_0xecf988);}};}function respondWithFilteredResult(_0x82fbdd,_0x98d2c3){return function(_0x11dc4a){if(_0x11dc4a){var _0x4f2fea=typeof _0x98d2c3[_0x6ec8('0x17')]==='undefined'&&typeof _0x98d2c3['limit']===_0x6ec8('0x18');var _0x113fb8=_0x11dc4a[_0x6ec8('0x19')];var _0x1a7f5d=_0x4f2fea?0x0:_0x98d2c3[_0x6ec8('0x17')];var _0x227108=_0x4f2fea?_0x11dc4a[_0x6ec8('0x19')]:_0x98d2c3[_0x6ec8('0x17')]+_0x98d2c3[_0x6ec8('0x1a')];var _0x1582a2;if(_0x227108>=_0x113fb8){_0x227108=_0x113fb8;_0x1582a2=0xc8;}else{_0x1582a2=0xce;}_0x82fbdd['status'](_0x1582a2);return _0x82fbdd[_0x6ec8('0x1b')](_0x6ec8('0x1c'),_0x1a7f5d+'-'+_0x227108+'/'+_0x113fb8)['json'](_0x11dc4a);}return null;};}function patchUpdates(_0x344ef8){return function(_0x1bebb3){try{jsonpatch['apply'](_0x1bebb3,_0x344ef8,!![]);}catch(_0xad2bcb){return BPromise[_0x6ec8('0x1d')](_0xad2bcb);}return _0x1bebb3[_0x6ec8('0x1e')]();};}function saveUpdates(_0x426223,_0x3b816e){return function(_0x4ea9d5){if(_0x4ea9d5){return _0x4ea9d5[_0x6ec8('0x1f')](_0x426223)[_0x6ec8('0x20')](function(_0x43304a){return _0x43304a;});}return null;};}function removeEntity(_0x4a14b9,_0x1bbb66){return function(_0x49b601){if(_0x49b601){return _0x49b601[_0x6ec8('0x21')]()[_0x6ec8('0x20')](function(){_0x4a14b9['status'](0xcc)[_0x6ec8('0x22')]();});}};}function handleEntityNotFound(_0xc81dcf,_0x91be9d){return function(_0x59ded9){if(!_0x59ded9){_0xc81dcf[_0x6ec8('0x15')](0x194);}return _0x59ded9;};}function handleError(_0x58035e,_0x3e0c97){_0x3e0c97=_0x3e0c97||0x1f4;return function(_0x1304a6){logger[_0x6ec8('0x23')](_0x1304a6[_0x6ec8('0x24')]);if(_0x1304a6[_0x6ec8('0x25')]){delete _0x1304a6['name'];}_0x58035e[_0x6ec8('0x16')](_0x3e0c97)['send'](_0x1304a6);};}exports[_0x6ec8('0x26')]=function(_0x4010b1,_0x4712f9){var _0x43cb16={},_0x1d68dc={},_0x5a2796={'count':0x0,'rows':[]};var _0x26907a=_[_0x6ec8('0x27')](db[_0x6ec8('0x28')][_0x6ec8('0x29')],function(_0x191777){return{'name':_0x191777[_0x6ec8('0x2a')],'type':_0x191777['type'][_0x6ec8('0x2b')]};});_0x1d68dc[_0x6ec8('0x2c')]=_[_0x6ec8('0x27')](_0x26907a,_0x6ec8('0x25'));_0x1d68dc[_0x6ec8('0x2d')]=_['keys'](_0x4010b1[_0x6ec8('0x2d')]);_0x1d68dc[_0x6ec8('0x2e')]=_[_0x6ec8('0x2f')](_0x1d68dc[_0x6ec8('0x2c')],_0x1d68dc[_0x6ec8('0x2d')]);_0x43cb16[_0x6ec8('0x30')]=_['intersection'](_0x1d68dc['model'],qs[_0x6ec8('0x31')](_0x4010b1[_0x6ec8('0x2d')][_0x6ec8('0x31')]));_0x43cb16[_0x6ec8('0x30')]=_0x43cb16[_0x6ec8('0x30')][_0x6ec8('0x32')]?_0x43cb16['attributes']:_0x1d68dc[_0x6ec8('0x2c')];if(!_0x4010b1[_0x6ec8('0x2d')][_0x6ec8('0x33')](_0x6ec8('0x34'))){_0x43cb16[_0x6ec8('0x1a')]=qs[_0x6ec8('0x1a')](_0x4010b1[_0x6ec8('0x2d')]['limit']);_0x43cb16[_0x6ec8('0x17')]=qs[_0x6ec8('0x17')](_0x4010b1['query']['offset']);}_0x43cb16[_0x6ec8('0x35')]=qs['sort'](_0x4010b1[_0x6ec8('0x2d')][_0x6ec8('0x36')]);_0x43cb16[_0x6ec8('0x37')]=qs['filters'](_['pick'](_0x4010b1['query'],_0x1d68dc[_0x6ec8('0x2e')]),_0x26907a);if(_0x4010b1[_0x6ec8('0x2d')]['filter']){_0x43cb16[_0x6ec8('0x37')]=_[_0x6ec8('0x38')](_0x43cb16['where'],{'$or':_[_0x6ec8('0x27')](_0x26907a,function(_0x279b99){if(_0x279b99[_0x6ec8('0x39')]!==_0x6ec8('0x3a')){var _0x2ce6bd={};_0x2ce6bd[_0x279b99['name']]={'$like':'%'+_0x4010b1['query'][_0x6ec8('0x3b')]+'%'};return _0x2ce6bd;}})});}_0x43cb16=_['merge']({},_0x43cb16,_0x4010b1[_0x6ec8('0x3c')]);var _0x903bdf={'where':_0x43cb16[_0x6ec8('0x37')]};return db[_0x6ec8('0x28')][_0x6ec8('0x19')](_0x903bdf)[_0x6ec8('0x20')](function(_0x126840){_0x5a2796[_0x6ec8('0x19')]=_0x126840;if(_0x4010b1['query'][_0x6ec8('0x3d')]){_0x43cb16['include']=[{'all':!![]}];}return db[_0x6ec8('0x28')][_0x6ec8('0x3e')](_0x43cb16);})[_0x6ec8('0x20')](function(_0x94180b){_0x5a2796[_0x6ec8('0x3f')]=_0x94180b;return _0x5a2796;})[_0x6ec8('0x20')](respondWithFilteredResult(_0x4712f9,_0x43cb16))[_0x6ec8('0x40')](handleError(_0x4712f9,null));};exports[_0x6ec8('0x41')]=function(_0x2966eb,_0x131a91){var _0xc8ab75={'raw':!![],'where':{'id':_0x2966eb[_0x6ec8('0x42')]['id']}},_0x3430a6={};_0x3430a6[_0x6ec8('0x2c')]=_['keys'](db[_0x6ec8('0x28')][_0x6ec8('0x29')]);_0x3430a6['query']=_[_0x6ec8('0x43')](_0x2966eb[_0x6ec8('0x2d')]);_0x3430a6['filters']=_['intersection'](_0x3430a6[_0x6ec8('0x2c')],_0x3430a6[_0x6ec8('0x2d')]);_0xc8ab75[_0x6ec8('0x30')]=_['intersection'](_0x3430a6[_0x6ec8('0x2c')],qs[_0x6ec8('0x31')](_0x2966eb[_0x6ec8('0x2d')][_0x6ec8('0x31')]));_0xc8ab75['attributes']=_0xc8ab75[_0x6ec8('0x30')]['length']?_0xc8ab75[_0x6ec8('0x30')]:_0x3430a6[_0x6ec8('0x2c')];if(_0x2966eb[_0x6ec8('0x2d')][_0x6ec8('0x3d')]){_0xc8ab75[_0x6ec8('0x44')]=[{'all':!![]}];}_0xc8ab75=_['merge']({},_0xc8ab75,_0x2966eb[_0x6ec8('0x3c')]);return db['MailServerOut'][_0x6ec8('0x45')](_0xc8ab75)[_0x6ec8('0x20')](handleEntityNotFound(_0x131a91,null))[_0x6ec8('0x20')](respondWithResult(_0x131a91,null))['catch'](handleError(_0x131a91,null));};exports[_0x6ec8('0x46')]=function(_0x40e92e,_0x203fae){return db['MailServerOut'][_0x6ec8('0x46')](_0x40e92e[_0x6ec8('0x47')],{})[_0x6ec8('0x20')](respondWithResult(_0x203fae,0xc9))[_0x6ec8('0x40')](handleError(_0x203fae,null));};exports['update']=function(_0x5bd4e4,_0xb4bd83){if(_0x5bd4e4['body']['id']){delete _0x5bd4e4[_0x6ec8('0x47')]['id'];}return db[_0x6ec8('0x28')][_0x6ec8('0x45')]({'where':{'id':_0x5bd4e4[_0x6ec8('0x42')]['id']}})[_0x6ec8('0x20')](handleEntityNotFound(_0xb4bd83,null))[_0x6ec8('0x20')](saveUpdates(_0x5bd4e4[_0x6ec8('0x47')],null))['then'](respondWithResult(_0xb4bd83,null))[_0x6ec8('0x40')](handleError(_0xb4bd83,null));};exports[_0x6ec8('0x21')]=function(_0x54c87d,_0x196c90){return db[_0x6ec8('0x28')][_0x6ec8('0x45')]({'where':{'id':_0x54c87d[_0x6ec8('0x42')]['id']}})[_0x6ec8('0x20')](handleEntityNotFound(_0x196c90,null))[_0x6ec8('0x20')](removeEntity(_0x196c90,null))[_0x6ec8('0x40')](handleError(_0x196c90,null));};
\ No newline at end of file
index dfc0ab2..2740bcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f7=['exports','define','MailServerOut','mail_servers_out','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x1e74a8,_0x29527d){var _0x6fed93=function(_0x37756e){while(--_0x37756e){_0x1e74a8['push'](_0x1e74a8['shift']());}};_0x6fed93(++_0x29527d);}(_0x21f7,0x100));var _0x721f=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x21f7[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x721f('0x0'));var logger=require(_0x721f('0x1'))(_0x721f('0x2'));var moment=require(_0x721f('0x3'));var BPromise=require(_0x721f('0x4'));var rp=require(_0x721f('0x5'));var fs=require('fs');var path=require(_0x721f('0x6'));var rimraf=require(_0x721f('0x7'));var config=require(_0x721f('0x8'));var attributes=require(_0x721f('0x9'));module[_0x721f('0xa')]=function(_0x3d1f54,_0x4df8b2){return _0x3d1f54[_0x721f('0xb')](_0x721f('0xc'),attributes,{'tableName':_0x721f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1dfd=['util','../../config/logger','api','request-promise','path','./mailServerOut.attributes','exports','MailServerOut','mail_servers_out','lodash'];(function(_0x24ab84,_0x465ec4){var _0x33cff8=function(_0x11f07e){while(--_0x11f07e){_0x24ab84['push'](_0x24ab84['shift']());}};_0x33cff8(++_0x465ec4);}(_0x1dfd,0x1c1));var _0xd1df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1dfd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd1df('0x0'));var util=require(_0xd1df('0x1'));var logger=require(_0xd1df('0x2'))(_0xd1df('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd1df('0x4'));var fs=require('fs');var path=require(_0xd1df('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd1df('0x6'));module[_0xd1df('0x7')]=function(_0x349d00,_0x44b44e){return _0x349d00['define'](_0xd1df('0x8'),attributes,{'tableName':_0xd1df('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f20c64c..2635ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x2105d6,_0x1d3bba){var _0xbadf76=function(_0x539e78){while(--_0x539e78){_0x2105d6['push'](_0x2105d6['shift']());}};_0xbadf76(++_0x1d3bba);}(_0x5f66,0x1a0));var _0x65f6=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x5f66[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x1d5f4e,_0x133fdf){var _0x478a86=function(_0x4cd7eb){while(--_0x4cd7eb){_0x1d5f4e['push'](_0x1d5f4e['shift']());}};_0x478a86(++_0x133fdf);}(_0xdb28,0x106));var _0x8db2=function(_0x338f58,_0x1aa06c){_0x338f58=_0x338f58-0x0;var _0x17d8c0=_0xdb28[_0x338f58];return _0x17d8c0;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 41cf4cd..56d48f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2891=['create','put','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2891,0xc2));var _0x1289=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x2891[_0x43d11d];return _0x38cd08;};'use strict';var multer=require(_0x1289('0x0'));var util=require('util');var path=require(_0x1289('0x1'));var timeout=require('connect-timeout');var express=require(_0x1289('0x2'));var router=express[_0x1289('0x3')]();var fs_extra=require(_0x1289('0x4'));var auth=require(_0x1289('0x5'));var interaction=require(_0x1289('0x6'));var config=require(_0x1289('0x7'));var controller=require('./mailSubstatus.controller');router[_0x1289('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x1289('0x9'),auth[_0x1289('0xa')](),controller[_0x1289('0xb')]);router[_0x1289('0x8')](_0x1289('0xc'),auth[_0x1289('0xa')](),controller[_0x1289('0xd')]);router[_0x1289('0xe')]('/',auth[_0x1289('0xa')](),controller[_0x1289('0xf')]);router[_0x1289('0x10')](_0x1289('0xc'),auth['isAuthenticated'](),controller[_0x1289('0x11')]);router['delete'](_0x1289('0xc'),auth[_0x1289('0xa')](),controller['destroy']);module[_0x1289('0x12')]=router;
\ No newline at end of file
+var _0xf7ca=['fs-extra','../../components/auth/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','describe','/:id','post','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf7ca,0xc8));var _0xaf7c=function(_0x100345,_0x783f50){_0x100345=_0x100345-0x0;var _0x5dfb7b=_0xf7ca[_0x100345];return _0x5dfb7b;};'use strict';var multer=require(_0xaf7c('0x0'));var util=require('util');var path=require(_0xaf7c('0x1'));var timeout=require(_0xaf7c('0x2'));var express=require(_0xaf7c('0x3'));var router=express['Router']();var fs_extra=require(_0xaf7c('0x4'));var auth=require(_0xaf7c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaf7c('0x6'));var controller=require(_0xaf7c('0x7'));router[_0xaf7c('0x8')]('/',auth[_0xaf7c('0x9')](),controller[_0xaf7c('0xa')]);router[_0xaf7c('0x8')]('/describe',auth[_0xaf7c('0x9')](),controller[_0xaf7c('0xb')]);router[_0xaf7c('0x8')](_0xaf7c('0xc'),auth[_0xaf7c('0x9')](),controller['show']);router[_0xaf7c('0xd')]('/',auth[_0xaf7c('0x9')](),controller['create']);router['put']('/:id',auth[_0xaf7c('0x9')](),controller['update']);router[_0xaf7c('0xe')](_0xaf7c('0xc'),auth[_0xaf7c('0x9')](),controller[_0xaf7c('0xf')]);module[_0xaf7c('0x10')]=router;
\ No newline at end of file
index a3cbf63..329f515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['exports','name'];(function(_0x38eb02,_0x2b216d){var _0x5e504e=function(_0x47c361){while(--_0x47c361){_0x38eb02['push'](_0x38eb02['shift']());}};_0x5e504e(++_0x2b216d);}(_0x71ab,0x64));var _0xb71a=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x71ab[_0x2b4411];return _0x8e41ef;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xb71a('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1670=['name','sequelize','exports'];(function(_0x486f1d,_0x90c2b5){var _0x5a2c2d=function(_0x1a5f79){while(--_0x1a5f79){_0x486f1d['push'](_0x486f1d['shift']());}};_0x5a2c2d(++_0x90c2b5);}(_0x1670,0x9a));var _0x0167=function(_0x2f66fe,_0x46be8b){_0x2f66fe=_0x2f66fe-0x0;var _0x1a1d22=_0x1670[_0x2f66fe];return _0x1a1d22;};'use strict';var Sequelize=require(_0x0167('0x0'));module[_0x0167('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0167('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1a99ce5..1a63fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ee1=['send','index','map','MailSubstatus','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','findAll','params','rawAttributes','include','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name'];(function(_0x524b6e,_0x11baa8){var _0xee1476=function(_0x266210){while(--_0x266210){_0x524b6e['push'](_0x524b6e['shift']());}};_0xee1476(++_0x11baa8);}(_0x2ee1,0xb5));var _0x12ee=function(_0x528e8b,_0x4cb954){_0x528e8b=_0x528e8b-0x0;var _0x487ea5=_0x2ee1[_0x528e8b];return _0x487ea5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x12ee('0x0'));var zipdir=require(_0x12ee('0x1'));var jsonpatch=require(_0x12ee('0x2'));var rp=require('request-promise');var moment=require(_0x12ee('0x3'));var BPromise=require(_0x12ee('0x4'));var Mustache=require(_0x12ee('0x5'));var util=require('util');var path=require(_0x12ee('0x6'));var sox=require(_0x12ee('0x7'));var csv=require(_0x12ee('0x8'));var ejs=require(_0x12ee('0x9'));var fs=require('fs');var fs_extra=require(_0x12ee('0xa'));var _=require(_0x12ee('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x12ee('0xc'));var deskjs=require(_0x12ee('0xd'));var toCsv=require(_0x12ee('0x8'));var querystring=require(_0x12ee('0xe'));var Papa=require(_0x12ee('0xf'));var Redis=require(_0x12ee('0x10'));var authService=require(_0x12ee('0x11'));var qs=require(_0x12ee('0x12'));var as=require(_0x12ee('0x13'));var hardwareService=require(_0x12ee('0x14'));var logger=require(_0x12ee('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x12ee('0x16'));var db=require(_0x12ee('0x17'))['db'];function respondWithStatusCode(_0x2943bb,_0x5cfb5a){_0x5cfb5a=_0x5cfb5a||0xcc;return function(_0x41a3e9){if(_0x41a3e9){return _0x2943bb['sendStatus'](_0x5cfb5a);}return _0x2943bb[_0x12ee('0x18')](_0x5cfb5a)[_0x12ee('0x19')]();};}function respondWithResult(_0xde71b3,_0x9ee0f6){_0x9ee0f6=_0x9ee0f6||0xc8;return function(_0x5c50be){if(_0x5c50be){return _0xde71b3[_0x12ee('0x18')](_0x9ee0f6)['json'](_0x5c50be);}};}function respondWithFilteredResult(_0x37e480,_0x23c21d){return function(_0x483e8e){if(_0x483e8e){var _0x218d6a=typeof _0x23c21d[_0x12ee('0x1a')]===_0x12ee('0x1b')&&typeof _0x23c21d[_0x12ee('0x1c')]===_0x12ee('0x1b');var _0x4214ed=_0x483e8e[_0x12ee('0x1d')];var _0x451eb6=_0x218d6a?0x0:_0x23c21d[_0x12ee('0x1a')];var _0x1e14c2=_0x218d6a?_0x483e8e[_0x12ee('0x1d')]:_0x23c21d[_0x12ee('0x1a')]+_0x23c21d['limit'];var _0x442901;if(_0x1e14c2>=_0x4214ed){_0x1e14c2=_0x4214ed;_0x442901=0xc8;}else{_0x442901=0xce;}_0x37e480['status'](_0x442901);return _0x37e480[_0x12ee('0x1e')](_0x12ee('0x1f'),_0x451eb6+'-'+_0x1e14c2+'/'+_0x4214ed)['json'](_0x483e8e);}return null;};}function patchUpdates(_0x57e713){return function(_0x48e72d){try{jsonpatch[_0x12ee('0x20')](_0x48e72d,_0x57e713,!![]);}catch(_0x12656b){return BPromise[_0x12ee('0x21')](_0x12656b);}return _0x48e72d[_0x12ee('0x22')]();};}function saveUpdates(_0x6ad9b,_0x5c85fd){return function(_0x133318){if(_0x133318){return _0x133318[_0x12ee('0x23')](_0x6ad9b)[_0x12ee('0x24')](function(_0x55deac){return _0x55deac;});}return null;};}function removeEntity(_0xda0f5e,_0x51ac44){return function(_0xd03d09){if(_0xd03d09){return _0xd03d09[_0x12ee('0x25')]()[_0x12ee('0x24')](function(){_0xda0f5e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e1911,_0x1d7e3b){return function(_0x3b32ae){if(!_0x3b32ae){_0x5e1911[_0x12ee('0x26')](0x194);}return _0x3b32ae;};}function handleError(_0x5c8b02,_0x13c1a4){_0x13c1a4=_0x13c1a4||0x1f4;return function(_0x119b7f){logger['error'](_0x119b7f[_0x12ee('0x27')]);if(_0x119b7f['name']){delete _0x119b7f[_0x12ee('0x28')];}_0x5c8b02[_0x12ee('0x18')](_0x13c1a4)[_0x12ee('0x29')](_0x119b7f);};}exports[_0x12ee('0x2a')]=function(_0x209f1f,_0x4e4536){var _0x4f03c5={},_0x4610fb={},_0x2d1391={'count':0x0,'rows':[]};var _0x2a9c8d=_[_0x12ee('0x2b')](db[_0x12ee('0x2c')]['rawAttributes'],function(_0x2a2c02){return{'name':_0x2a2c02[_0x12ee('0x2d')],'type':_0x2a2c02[_0x12ee('0x2e')][_0x12ee('0x2f')]};});_0x4610fb[_0x12ee('0x30')]=_[_0x12ee('0x2b')](_0x2a9c8d,_0x12ee('0x28'));_0x4610fb[_0x12ee('0x31')]=_[_0x12ee('0x32')](_0x209f1f[_0x12ee('0x31')]);_0x4610fb[_0x12ee('0x33')]=_[_0x12ee('0x34')](_0x4610fb['model'],_0x4610fb['query']);_0x4f03c5[_0x12ee('0x35')]=_[_0x12ee('0x34')](_0x4610fb[_0x12ee('0x30')],qs[_0x12ee('0x36')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x36')]));_0x4f03c5[_0x12ee('0x35')]=_0x4f03c5[_0x12ee('0x35')][_0x12ee('0x37')]?_0x4f03c5[_0x12ee('0x35')]:_0x4610fb[_0x12ee('0x30')];if(!_0x209f1f[_0x12ee('0x31')][_0x12ee('0x38')](_0x12ee('0x39'))){_0x4f03c5['limit']=qs[_0x12ee('0x1c')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x1c')]);_0x4f03c5[_0x12ee('0x1a')]=qs[_0x12ee('0x1a')](_0x209f1f[_0x12ee('0x31')]['offset']);}_0x4f03c5[_0x12ee('0x3a')]=qs[_0x12ee('0x3b')](_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3b')]);_0x4f03c5[_0x12ee('0x3c')]=qs[_0x12ee('0x33')](_['pick'](_0x209f1f[_0x12ee('0x31')],_0x4610fb['filters']),_0x2a9c8d);if(_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3d')]){_0x4f03c5[_0x12ee('0x3c')]=_[_0x12ee('0x3e')](_0x4f03c5[_0x12ee('0x3c')],{'$or':_[_0x12ee('0x2b')](_0x2a9c8d,function(_0x5bb411){if(_0x5bb411['type']!==_0x12ee('0x3f')){var _0x2d9981={};_0x2d9981[_0x5bb411[_0x12ee('0x28')]]={'$like':'%'+_0x209f1f[_0x12ee('0x31')][_0x12ee('0x3d')]+'%'};return _0x2d9981;}})});}_0x4f03c5=_[_0x12ee('0x3e')]({},_0x4f03c5,_0x209f1f[_0x12ee('0x40')]);var _0x217d92={'where':_0x4f03c5['where']};return db[_0x12ee('0x2c')][_0x12ee('0x1d')](_0x217d92)[_0x12ee('0x24')](function(_0x4dec83){_0x2d1391[_0x12ee('0x1d')]=_0x4dec83;if(_0x209f1f[_0x12ee('0x31')]['includeAll']){_0x4f03c5['include']=[{'all':!![]}];}return db[_0x12ee('0x2c')][_0x12ee('0x41')](_0x4f03c5);})[_0x12ee('0x24')](function(_0x5097e8){_0x2d1391['rows']=_0x5097e8;return _0x2d1391;})[_0x12ee('0x24')](respondWithFilteredResult(_0x4e4536,_0x4f03c5))['catch'](handleError(_0x4e4536,null));};exports['show']=function(_0x22e0ef,_0x17fae3){var _0x3bcf46={'raw':!![],'where':{'id':_0x22e0ef[_0x12ee('0x42')]['id']}},_0x465a2e={};_0x465a2e[_0x12ee('0x30')]=_[_0x12ee('0x32')](db['MailSubstatus'][_0x12ee('0x43')]);_0x465a2e[_0x12ee('0x31')]=_['keys'](_0x22e0ef[_0x12ee('0x31')]);_0x465a2e[_0x12ee('0x33')]=_[_0x12ee('0x34')](_0x465a2e[_0x12ee('0x30')],_0x465a2e[_0x12ee('0x31')]);_0x3bcf46[_0x12ee('0x35')]=_[_0x12ee('0x34')](_0x465a2e[_0x12ee('0x30')],qs['fields'](_0x22e0ef[_0x12ee('0x31')][_0x12ee('0x36')]));_0x3bcf46[_0x12ee('0x35')]=_0x3bcf46[_0x12ee('0x35')][_0x12ee('0x37')]?_0x3bcf46[_0x12ee('0x35')]:_0x465a2e['model'];if(_0x22e0ef['query']['includeAll']){_0x3bcf46[_0x12ee('0x44')]=[{'all':!![]}];}_0x3bcf46=_[_0x12ee('0x3e')]({},_0x3bcf46,_0x22e0ef[_0x12ee('0x40')]);return db[_0x12ee('0x2c')][_0x12ee('0x45')](_0x3bcf46)['then'](handleEntityNotFound(_0x17fae3,null))[_0x12ee('0x24')](respondWithResult(_0x17fae3,null))[_0x12ee('0x46')](handleError(_0x17fae3,null));};exports['create']=function(_0x448473,_0x2a43b3){return db[_0x12ee('0x2c')][_0x12ee('0x47')](_0x448473[_0x12ee('0x48')],{})[_0x12ee('0x24')](respondWithResult(_0x2a43b3,0xc9))[_0x12ee('0x46')](handleError(_0x2a43b3,null));};exports[_0x12ee('0x23')]=function(_0x200277,_0x544573){if(_0x200277[_0x12ee('0x48')]['id']){delete _0x200277[_0x12ee('0x48')]['id'];}return db[_0x12ee('0x2c')][_0x12ee('0x45')]({'where':{'id':_0x200277[_0x12ee('0x42')]['id']}})[_0x12ee('0x24')](handleEntityNotFound(_0x544573,null))[_0x12ee('0x24')](saveUpdates(_0x200277[_0x12ee('0x48')],null))[_0x12ee('0x24')](respondWithResult(_0x544573,null))['catch'](handleError(_0x544573,null));};exports[_0x12ee('0x25')]=function(_0x2778c8,_0x34dd59){return db[_0x12ee('0x2c')][_0x12ee('0x45')]({'where':{'id':_0x2778c8[_0x12ee('0x42')]['id']}})[_0x12ee('0x24')](handleEntityNotFound(_0x34dd59,null))[_0x12ee('0x24')](removeEntity(_0x34dd59,null))[_0x12ee('0x46')](handleError(_0x34dd59,null));};exports[_0x12ee('0x49')]=function(_0x1d3cc1,_0x225233){return db[_0x12ee('0x2c')][_0x12ee('0x49')]()['then'](respondWithResult(_0x225233,null))['catch'](handleError(_0x225233,null));};
\ No newline at end of file
+var _0x7041=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','destroy','error','send','index','map','MailSubstatus','rawAttributes','fieldName','name','keys','filters','intersection','model','attributes','fields','length','query','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','then','catch','show','options','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util'];(function(_0x55fa03,_0xcb96c2){var _0x2cd7cd=function(_0x56611f){while(--_0x56611f){_0x55fa03['push'](_0x55fa03['shift']());}};_0x2cd7cd(++_0xcb96c2);}(_0x7041,0x166));var _0x1704=function(_0x275a21,_0x448f71){_0x275a21=_0x275a21-0x0;var _0x1766e1=_0x7041[_0x275a21];return _0x1766e1;};'use strict';var emlformat=require(_0x1704('0x0'));var rimraf=require(_0x1704('0x1'));var zipdir=require(_0x1704('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1704('0x3'));var moment=require(_0x1704('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1704('0x5'));var util=require(_0x1704('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x1704('0x7'));var ejs=require(_0x1704('0x8'));var fs=require('fs');var fs_extra=require(_0x1704('0x9'));var _=require(_0x1704('0xa'));var squel=require(_0x1704('0xb'));var crypto=require(_0x1704('0xc'));var jsforce=require(_0x1704('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1704('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1704('0xe'));var authService=require(_0x1704('0xf'));var qs=require(_0x1704('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1704('0x11'))(_0x1704('0x12'));var utils=require('../../config/utils');var config=require(_0x1704('0x13'));var licenseUtil=require(_0x1704('0x14'));var db=require(_0x1704('0x15'))['db'];function respondWithStatusCode(_0x8ffcc6,_0x449c50){_0x449c50=_0x449c50||0xcc;return function(_0x75fc02){if(_0x75fc02){return _0x8ffcc6[_0x1704('0x16')](_0x449c50);}return _0x8ffcc6[_0x1704('0x17')](_0x449c50)[_0x1704('0x18')]();};}function respondWithResult(_0x55b96a,_0x5741fa){_0x5741fa=_0x5741fa||0xc8;return function(_0x4bf487){if(_0x4bf487){return _0x55b96a[_0x1704('0x17')](_0x5741fa)[_0x1704('0x19')](_0x4bf487);}};}function respondWithFilteredResult(_0x16b3ed,_0x3b8289){return function(_0x133bc6){if(_0x133bc6){var _0x2e08fc=typeof _0x3b8289[_0x1704('0x1a')]===_0x1704('0x1b')&&typeof _0x3b8289['limit']==='undefined';var _0x3a054d=_0x133bc6['count'];var _0x5ef6ae=_0x2e08fc?0x0:_0x3b8289[_0x1704('0x1a')];var _0x2f5d9b=_0x2e08fc?_0x133bc6[_0x1704('0x1c')]:_0x3b8289[_0x1704('0x1a')]+_0x3b8289[_0x1704('0x1d')];var _0x64ac8b;if(_0x2f5d9b>=_0x3a054d){_0x2f5d9b=_0x3a054d;_0x64ac8b=0xc8;}else{_0x64ac8b=0xce;}_0x16b3ed[_0x1704('0x17')](_0x64ac8b);return _0x16b3ed[_0x1704('0x1e')](_0x1704('0x1f'),_0x5ef6ae+'-'+_0x2f5d9b+'/'+_0x3a054d)['json'](_0x133bc6);}return null;};}function patchUpdates(_0x42026c){return function(_0x712240){try{jsonpatch['apply'](_0x712240,_0x42026c,!![]);}catch(_0x7c0c3f){return BPromise[_0x1704('0x20')](_0x7c0c3f);}return _0x712240['save']();};}function saveUpdates(_0x3e0b5d,_0x3e9f5f){return function(_0x2d55ae){if(_0x2d55ae){return _0x2d55ae['update'](_0x3e0b5d)['then'](function(_0x3b056f){return _0x3b056f;});}return null;};}function removeEntity(_0x3b217d,_0xc28f86){return function(_0x5405b8){if(_0x5405b8){return _0x5405b8[_0x1704('0x21')]()['then'](function(){_0x3b217d[_0x1704('0x17')](0xcc)[_0x1704('0x18')]();});}};}function handleEntityNotFound(_0x1c9b40,_0x4c0c83){return function(_0x14c4ed){if(!_0x14c4ed){_0x1c9b40[_0x1704('0x16')](0x194);}return _0x14c4ed;};}function handleError(_0x3beb49,_0x4a12f2){_0x4a12f2=_0x4a12f2||0x1f4;return function(_0x216c4f){logger[_0x1704('0x22')](_0x216c4f['stack']);if(_0x216c4f['name']){delete _0x216c4f['name'];}_0x3beb49[_0x1704('0x17')](_0x4a12f2)[_0x1704('0x23')](_0x216c4f);};}exports[_0x1704('0x24')]=function(_0x359301,_0x466d45){var _0xc99f66={},_0x766bdc={},_0x5e241c={'count':0x0,'rows':[]};var _0x58d69a=_[_0x1704('0x25')](db[_0x1704('0x26')][_0x1704('0x27')],function(_0x81b733){return{'name':_0x81b733[_0x1704('0x28')],'type':_0x81b733['type']['key']};});_0x766bdc['model']=_[_0x1704('0x25')](_0x58d69a,_0x1704('0x29'));_0x766bdc['query']=_[_0x1704('0x2a')](_0x359301['query']);_0x766bdc[_0x1704('0x2b')]=_[_0x1704('0x2c')](_0x766bdc[_0x1704('0x2d')],_0x766bdc['query']);_0xc99f66[_0x1704('0x2e')]=_[_0x1704('0x2c')](_0x766bdc[_0x1704('0x2d')],qs[_0x1704('0x2f')](_0x359301['query'][_0x1704('0x2f')]));_0xc99f66[_0x1704('0x2e')]=_0xc99f66[_0x1704('0x2e')][_0x1704('0x30')]?_0xc99f66[_0x1704('0x2e')]:_0x766bdc[_0x1704('0x2d')];if(!_0x359301[_0x1704('0x31')][_0x1704('0x32')]('nolimit')){_0xc99f66[_0x1704('0x1d')]=qs[_0x1704('0x1d')](_0x359301['query'][_0x1704('0x1d')]);_0xc99f66[_0x1704('0x1a')]=qs[_0x1704('0x1a')](_0x359301['query'][_0x1704('0x1a')]);}_0xc99f66[_0x1704('0x33')]=qs[_0x1704('0x34')](_0x359301[_0x1704('0x31')][_0x1704('0x34')]);_0xc99f66['where']=qs[_0x1704('0x2b')](_[_0x1704('0x35')](_0x359301[_0x1704('0x31')],_0x766bdc[_0x1704('0x2b')]),_0x58d69a);if(_0x359301['query'][_0x1704('0x36')]){_0xc99f66[_0x1704('0x37')]=_['merge'](_0xc99f66[_0x1704('0x37')],{'$or':_[_0x1704('0x25')](_0x58d69a,function(_0xd01150){if(_0xd01150[_0x1704('0x38')]!==_0x1704('0x39')){var _0x32d81c={};_0x32d81c[_0xd01150[_0x1704('0x29')]]={'$like':'%'+_0x359301[_0x1704('0x31')][_0x1704('0x36')]+'%'};return _0x32d81c;}})});}_0xc99f66=_[_0x1704('0x3a')]({},_0xc99f66,_0x359301['options']);var _0x29473a={'where':_0xc99f66[_0x1704('0x37')]};return db[_0x1704('0x26')][_0x1704('0x1c')](_0x29473a)['then'](function(_0x42aeb1){_0x5e241c[_0x1704('0x1c')]=_0x42aeb1;if(_0x359301[_0x1704('0x31')][_0x1704('0x3b')]){_0xc99f66[_0x1704('0x3c')]=[{'all':!![]}];}return db[_0x1704('0x26')][_0x1704('0x3d')](_0xc99f66);})['then'](function(_0x2f5597){_0x5e241c[_0x1704('0x3e')]=_0x2f5597;return _0x5e241c;})[_0x1704('0x3f')](respondWithFilteredResult(_0x466d45,_0xc99f66))[_0x1704('0x40')](handleError(_0x466d45,null));};exports[_0x1704('0x41')]=function(_0x2a1936,_0x453924){var _0x3e8b85={'raw':!![],'where':{'id':_0x2a1936['params']['id']}},_0x1318f1={};_0x1318f1['model']=_[_0x1704('0x2a')](db[_0x1704('0x26')]['rawAttributes']);_0x1318f1[_0x1704('0x31')]=_[_0x1704('0x2a')](_0x2a1936[_0x1704('0x31')]);_0x1318f1[_0x1704('0x2b')]=_[_0x1704('0x2c')](_0x1318f1[_0x1704('0x2d')],_0x1318f1[_0x1704('0x31')]);_0x3e8b85[_0x1704('0x2e')]=_[_0x1704('0x2c')](_0x1318f1[_0x1704('0x2d')],qs[_0x1704('0x2f')](_0x2a1936['query'][_0x1704('0x2f')]));_0x3e8b85[_0x1704('0x2e')]=_0x3e8b85[_0x1704('0x2e')][_0x1704('0x30')]?_0x3e8b85['attributes']:_0x1318f1[_0x1704('0x2d')];if(_0x2a1936['query'][_0x1704('0x3b')]){_0x3e8b85[_0x1704('0x3c')]=[{'all':!![]}];}_0x3e8b85=_['merge']({},_0x3e8b85,_0x2a1936[_0x1704('0x42')]);return db[_0x1704('0x26')][_0x1704('0x43')](_0x3e8b85)[_0x1704('0x3f')](handleEntityNotFound(_0x453924,null))[_0x1704('0x3f')](respondWithResult(_0x453924,null))['catch'](handleError(_0x453924,null));};exports[_0x1704('0x44')]=function(_0x12a9e0,_0x34e98e){return db['MailSubstatus']['create'](_0x12a9e0[_0x1704('0x45')],{})[_0x1704('0x3f')](respondWithResult(_0x34e98e,0xc9))[_0x1704('0x40')](handleError(_0x34e98e,null));};exports[_0x1704('0x46')]=function(_0x156fb4,_0x40b902){if(_0x156fb4[_0x1704('0x45')]['id']){delete _0x156fb4[_0x1704('0x45')]['id'];}return db[_0x1704('0x26')][_0x1704('0x43')]({'where':{'id':_0x156fb4[_0x1704('0x47')]['id']}})[_0x1704('0x3f')](handleEntityNotFound(_0x40b902,null))[_0x1704('0x3f')](saveUpdates(_0x156fb4[_0x1704('0x45')],null))[_0x1704('0x3f')](respondWithResult(_0x40b902,null))[_0x1704('0x40')](handleError(_0x40b902,null));};exports[_0x1704('0x21')]=function(_0x1e8f35,_0x19e46d){return db['MailSubstatus'][_0x1704('0x43')]({'where':{'id':_0x1e8f35[_0x1704('0x47')]['id']}})['then'](handleEntityNotFound(_0x19e46d,null))[_0x1704('0x3f')](removeEntity(_0x19e46d,null))[_0x1704('0x40')](handleError(_0x19e46d,null));};exports['describe']=function(_0xfa6715,_0x5c0fd1){return db[_0x1704('0x26')][_0x1704('0x48')]()[_0x1704('0x3f')](respondWithResult(_0x5c0fd1,null))[_0x1704('0x40')](handleError(_0x5c0fd1,null));};
\ No newline at end of file
index a03a39d..13f0896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x599a=['exports','MailSubstatus','setMaxListeners','emit','hasOwnProperty','hook'];(function(_0x2d4c86,_0x4d5e70){var _0x280c5b=function(_0x257309){while(--_0x257309){_0x2d4c86['push'](_0x2d4c86['shift']());}};_0x280c5b(++_0x4d5e70);}(_0x599a,0x1c3));var _0xa599=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0x599a[_0x266618];return _0x54dbf5;};'use strict';var EventEmitter=require('events');var MailSubstatus=require('../../mysqldb')['db'][_0xa599('0x0')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xa599('0x1')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x351fbf){return function(_0x106ec7,_0x2b9e66,_0x3bf59f){MailSubstatusEvents[_0xa599('0x2')](_0x351fbf+':'+_0x106ec7['id'],_0x106ec7);MailSubstatusEvents[_0xa599('0x2')](_0x351fbf,_0x106ec7);_0x3bf59f(null);};}for(var e in events){if(events[_0xa599('0x3')](e)){var event=events[e];MailSubstatus[_0xa599('0x4')](e,emitEvent(event));}}module[_0xa599('0x5')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xde1d=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','MailSubstatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xde1d,0x1ce));var _0xdde1=function(_0x2d126e,_0x1e8257){_0x2d126e=_0x2d126e-0x0;var _0xcb04d3=_0xde1d[_0x2d126e];return _0xcb04d3;};'use strict';var EventEmitter=require(_0xdde1('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0xdde1('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xdde1('0x2')](0x0);var events={'afterUpdate':_0xdde1('0x3')};function emitEvent(_0x42c301){return function(_0x51b469,_0x30d867,_0x5f32e5){MailSubstatusEvents[_0xdde1('0x4')](_0x42c301+':'+_0x51b469['id'],_0x51b469);MailSubstatusEvents[_0xdde1('0x4')](_0x42c301,_0x51b469);_0x5f32e5(null);};}for(var e in events){if(events[_0xdde1('0x5')](e)){var event=events[e];MailSubstatus[_0xdde1('0x6')](e,emitEvent(event));}}module[_0xdde1('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 130e414..50e4c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa079=['define','MailSubstatus','mail_substatuses','Condition','name','mailSubstatus','_previousDataValues','then','exports','models'];(function(_0x56b5d1,_0x59be02){var _0x5bfe4a=function(_0x9ed053){while(--_0x9ed053){_0x56b5d1['push'](_0x56b5d1['shift']());}};_0x5bfe4a(++_0x59be02);}(_0xa079,0x10c));var _0x9a07=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa079[_0x3dd15e];return _0x231fd0;};'use strict';var attributes=require('./mailSubstatus.attributes');module[_0x9a07('0x0')]=function(_0x5612f0){var _0xfc98a6=_0x5612f0[_0x9a07('0x1')];return _0x5612f0[_0x9a07('0x2')](_0x9a07('0x3'),attributes,{'tableName':_0x9a07('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3a55fc,_0x217638,_0x1d774a){return _0xfc98a6[_0x9a07('0x5')]['update']({'value':_0x3a55fc[_0x9a07('0x6')]},{'where':{'field':_0x9a07('0x7'),'value':_0x3a55fc[_0x9a07('0x8')][_0x9a07('0x6')]}})[_0x9a07('0x9')](function(){_0x1d774a();})['catch'](function(_0x21f572){_0x1d774a(_0x21f572);});}}});};
\ No newline at end of file
+var _0xea9d=['name','mailSubstatus','_previousDataValues','then','./mailSubstatus.attributes','exports','models','define','MailSubstatus','Condition'];(function(_0x3086f5,_0x5498df){var _0x11ebb2=function(_0x2299ea){while(--_0x2299ea){_0x3086f5['push'](_0x3086f5['shift']());}};_0x11ebb2(++_0x5498df);}(_0xea9d,0x90));var _0xdea9=function(_0x233cd,_0x26e526){_0x233cd=_0x233cd-0x0;var _0x47a013=_0xea9d[_0x233cd];return _0x47a013;};'use strict';var attributes=require(_0xdea9('0x0'));module[_0xdea9('0x1')]=function(_0x45766c){var _0x3ba650=_0x45766c[_0xdea9('0x2')];return _0x45766c[_0xdea9('0x3')](_0xdea9('0x4'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3f4578,_0x189dad,_0x2fe684){return _0x3ba650[_0xdea9('0x5')]['update']({'value':_0x3f4578[_0xdea9('0x6')]},{'where':{'field':_0xdea9('0x7'),'value':_0x3f4578[_0xdea9('0x8')][_0xdea9('0x6')]}})[_0xdea9('0x9')](function(){_0x2fe684();})['catch'](function(_0x5d4c9a){_0x2fe684(_0x5d4c9a);});}}});};
\ No newline at end of file
index ee81cd9..f2700a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebf4=['MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3ec0dd,_0x3a5e67){var _0x2818c7=function(_0x1f8166){while(--_0x1f8166){_0x3ec0dd['push'](_0x3ec0dd['shift']());}};_0x2818c7(++_0x3a5e67);}(_0xebf4,0xe3));var _0x4ebf=function(_0x571353,_0x1d3d63){_0x571353=_0x571353-0x0;var _0x1638b6=_0xebf4[_0x571353];return _0x1638b6;};'use strict';var _=require(_0x4ebf('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4ebf('0x1'));var fs=require('fs');var Redis=require(_0x4ebf('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ebf('0x3'));var logger=require(_0x4ebf('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4ebf('0x5'));var client=jayson['client'][_0x4ebf('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4d2f74,_0x4ce322,_0x5b6a14){return new BPromise(function(_0x4ac8e2,_0x45c96f){return client[_0x4ebf('0x7')](_0x4d2f74,_0x5b6a14)['then'](function(_0x2eaacb){logger['info'](_0x4ebf('0x8'),_0x4ce322,_0x4ebf('0x9'));logger[_0x4ebf('0xa')](_0x4ebf('0xb'),_0x4ce322,_0x4ebf('0x9'),JSON[_0x4ebf('0xc')](_0x2eaacb));if(_0x2eaacb[_0x4ebf('0xd')]){if(_0x2eaacb['error']['code']===0x1f4){logger['error'](_0x4ebf('0x8'),_0x4ce322,_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);return _0x45c96f(_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);}logger[_0x4ebf('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x4ce322,_0x2eaacb[_0x4ebf('0xd')][_0x4ebf('0xe')]);return _0x4ac8e2(_0x2eaacb['error'][_0x4ebf('0xe')]);}else{logger[_0x4ebf('0xf')](_0x4ebf('0x8'),_0x4ce322,'request\x20sent');_0x4ac8e2(_0x2eaacb['result'][_0x4ebf('0xe')]);}})[_0x4ebf('0x10')](function(_0x23f660){logger['error'](_0x4ebf('0x8'),_0x4ce322,_0x23f660);_0x45c96f(_0x23f660);});});}
\ No newline at end of file
+var _0x84b4=['../../config/utils','../../config/logger','jayson/promise','client','http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x31512d,_0x1fb79a){var _0x588cf4=function(_0x49bd45){while(--_0x49bd45){_0x31512d['push'](_0x31512d['shift']());}};_0x588cf4(++_0x1fb79a);}(_0x84b4,0x1c8));var _0x484b=function(_0x2ea41,_0x4f807b){_0x2ea41=_0x2ea41-0x0;var _0x8ee23b=_0x84b4[_0x2ea41];return _0x8ee23b;};'use strict';var _=require(_0x484b('0x0'));var util=require(_0x484b('0x1'));var moment=require(_0x484b('0x2'));var BPromise=require(_0x484b('0x3'));var rs=require(_0x484b('0x4'));var fs=require('fs');var Redis=require(_0x484b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x484b('0x6'));var logger=require(_0x484b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x484b('0x8'));var client=jayson[_0x484b('0x9')][_0x484b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3e8e41,_0x39d4c7,_0x47dca5){return new BPromise(function(_0xf1ad8f,_0x3d3c9a){return client[_0x484b('0xb')](_0x3e8e41,_0x47dca5)['then'](function(_0x4e5ae6){logger[_0x484b('0xc')](_0x484b('0xd'),_0x39d4c7,_0x484b('0xe'));logger[_0x484b('0xf')](_0x484b('0x10'),_0x39d4c7,_0x484b('0xe'),JSON[_0x484b('0x11')](_0x4e5ae6));if(_0x4e5ae6['error']){if(_0x4e5ae6[_0x484b('0x12')]['code']===0x1f4){logger[_0x484b('0x12')](_0x484b('0xd'),_0x39d4c7,_0x4e5ae6[_0x484b('0x12')][_0x484b('0x13')]);return _0x3d3c9a(_0x4e5ae6[_0x484b('0x12')][_0x484b('0x13')]);}logger[_0x484b('0x12')](_0x484b('0xd'),_0x39d4c7,_0x4e5ae6[_0x484b('0x12')][_0x484b('0x13')]);return _0xf1ad8f(_0x4e5ae6[_0x484b('0x12')][_0x484b('0x13')]);}else{logger[_0x484b('0xc')]('MailSubstatus,\x20%s,\x20%s',_0x39d4c7,'request\x20sent');_0xf1ad8f(_0x4e5ae6[_0x484b('0x14')][_0x484b('0x13')]);}})[_0x484b('0x15')](function(_0x3214dd){logger[_0x484b('0x12')](_0x484b('0xd'),_0x39d4c7,_0x3214dd);_0x3d3c9a(_0x3214dd);});});}
\ No newline at end of file
index 807a8d3..1cf3747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5467=['post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x4d5e52,_0x341522){var _0xae3ddb=function(_0x111c7f){while(--_0x111c7f){_0x4d5e52['push'](_0x4d5e52['shift']());}};_0xae3ddb(++_0x341522);}(_0x5467,0x12c));var _0x7546=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x5467[_0x3e112d];return _0x531c31;};'use strict';var multer=require(_0x7546('0x0'));var util=require(_0x7546('0x1'));var path=require(_0x7546('0x2'));var timeout=require(_0x7546('0x3'));var express=require(_0x7546('0x4'));var router=express['Router']();var fs_extra=require(_0x7546('0x5'));var auth=require(_0x7546('0x6'));var interaction=require(_0x7546('0x7'));var config=require(_0x7546('0x8'));var controller=require(_0x7546('0x9'));router[_0x7546('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7546('0xa')](_0x7546('0xb'),auth[_0x7546('0xc')](),controller[_0x7546('0xd')]);router['get'](_0x7546('0xe'),auth[_0x7546('0xc')](),controller['show']);router[_0x7546('0xf')]('/',auth[_0x7546('0xc')](),controller[_0x7546('0x10')]);router[_0x7546('0x11')]('/:id',auth[_0x7546('0xc')](),controller[_0x7546('0x12')]);router['delete'](_0x7546('0xe'),auth[_0x7546('0xc')](),controller[_0x7546('0x13')]);module[_0x7546('0x14')]=router;
\ No newline at end of file
+var _0xddf1=['/:id','show','post','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/interaction/service','./mailTransferReport.controller','isAuthenticated','index','get','describe'];(function(_0x2002b3,_0x11e91c){var _0x2756f0=function(_0x4bf0b3){while(--_0x4bf0b3){_0x2002b3['push'](_0x2002b3['shift']());}};_0x2756f0(++_0x11e91c);}(_0xddf1,0x14a));var _0x1ddf=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0xddf1[_0x58e469];return _0x4c01c5;};'use strict';var multer=require('multer');var util=require(_0x1ddf('0x0'));var path=require('path');var timeout=require(_0x1ddf('0x1'));var express=require(_0x1ddf('0x2'));var router=express[_0x1ddf('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1ddf('0x4'));var config=require('../../config/environment');var controller=require(_0x1ddf('0x5'));router['get']('/',auth[_0x1ddf('0x6')](),controller[_0x1ddf('0x7')]);router[_0x1ddf('0x8')]('/describe',auth[_0x1ddf('0x6')](),controller[_0x1ddf('0x9')]);router['get'](_0x1ddf('0xa'),auth[_0x1ddf('0x6')](),controller[_0x1ddf('0xb')]);router[_0x1ddf('0xc')]('/',auth[_0x1ddf('0x6')](),controller['create']);router['put']('/:id',auth[_0x1ddf('0x6')](),controller[_0x1ddf('0xd')]);router[_0x1ddf('0xe')](_0x1ddf('0xa'),auth[_0x1ddf('0x6')](),controller[_0x1ddf('0xf')]);module[_0x1ddf('0x10')]=router;
\ No newline at end of file
index 6003c87..e69bf77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x230e39,_0x5341){var _0xa804e=function(_0xe14796){while(--_0xe14796){_0x230e39['push'](_0x230e39['shift']());}};_0xa804e(++_0x5341);}(_0xb43b,0x1b2));var _0xbb43=function(_0x247087,_0x313d5a){_0x247087=_0x247087-0x0;var _0x193dc7=_0xb43b[_0x247087];return _0x193dc7;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x2c63ac,_0x1df97a){var _0xdf3040=function(_0x4c8f63){while(--_0x4c8f63){_0x2c63ac['push'](_0x2c63ac['shift']());}};_0xdf3040(++_0x1df97a);}(_0x54ef,0x112));var _0xf54e=function(_0x5365f6,_0x45cc3e){_0x5365f6=_0x5365f6-0x0;var _0x42a8f0=_0x54ef[_0x5365f6];return _0x42a8f0;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index be9cce1..5be3c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x853e=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','fields','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','stack','name','index','MailTransferReport','fieldName','type','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit'];(function(_0x2c7dc6,_0x3c4ce0){var _0x10002b=function(_0x26f390){while(--_0x26f390){_0x2c7dc6['push'](_0x2c7dc6['shift']());}};_0x10002b(++_0x3c4ce0);}(_0x853e,0x18f));var _0xe853=function(_0x30d5af,_0x35e3cd){_0x30d5af=_0x30d5af-0x0;var _0xe3689d=_0x853e[_0x30d5af];return _0xe3689d;};'use strict';var emlformat=require(_0xe853('0x0'));var rimraf=require(_0xe853('0x1'));var zipdir=require(_0xe853('0x2'));var jsonpatch=require(_0xe853('0x3'));var rp=require(_0xe853('0x4'));var moment=require(_0xe853('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe853('0x6'));var util=require(_0xe853('0x7'));var path=require(_0xe853('0x8'));var sox=require(_0xe853('0x9'));var csv=require(_0xe853('0xa'));var ejs=require(_0xe853('0xb'));var fs=require('fs');var fs_extra=require(_0xe853('0xc'));var _=require(_0xe853('0xd'));var squel=require(_0xe853('0xe'));var crypto=require('crypto');var jsforce=require(_0xe853('0xf'));var deskjs=require(_0xe853('0x10'));var toCsv=require(_0xe853('0xa'));var querystring=require(_0xe853('0x11'));var Papa=require(_0xe853('0x12'));var Redis=require(_0xe853('0x13'));var authService=require(_0xe853('0x14'));var qs=require(_0xe853('0x15'));var as=require(_0xe853('0x16'));var hardwareService=require(_0xe853('0x17'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe853('0x18'));var db=require(_0xe853('0x19'))['db'];function respondWithStatusCode(_0x40ada4,_0x45d597){_0x45d597=_0x45d597||0xcc;return function(_0x280b30){if(_0x280b30){return _0x40ada4[_0xe853('0x1a')](_0x45d597);}return _0x40ada4[_0xe853('0x1b')](_0x45d597)[_0xe853('0x1c')]();};}function respondWithResult(_0x1e2766,_0x59f0c5){_0x59f0c5=_0x59f0c5||0xc8;return function(_0x2d849d){if(_0x2d849d){return _0x1e2766[_0xe853('0x1b')](_0x59f0c5)[_0xe853('0x1d')](_0x2d849d);}};}function respondWithFilteredResult(_0xdbd856,_0x1e55ca){return function(_0x476e47){if(_0x476e47){var _0x21d527=typeof _0x1e55ca[_0xe853('0x1e')]===_0xe853('0x1f')&&typeof _0x1e55ca['limit']==='undefined';var _0x3e1003=_0x476e47[_0xe853('0x20')];var _0x5f0392=_0x21d527?0x0:_0x1e55ca['offset'];var _0x40a9c0=_0x21d527?_0x476e47[_0xe853('0x20')]:_0x1e55ca[_0xe853('0x1e')]+_0x1e55ca[_0xe853('0x21')];var _0x1d65b8;if(_0x40a9c0>=_0x3e1003){_0x40a9c0=_0x3e1003;_0x1d65b8=0xc8;}else{_0x1d65b8=0xce;}_0xdbd856[_0xe853('0x1b')](_0x1d65b8);return _0xdbd856[_0xe853('0x22')](_0xe853('0x23'),_0x5f0392+'-'+_0x40a9c0+'/'+_0x3e1003)[_0xe853('0x1d')](_0x476e47);}return null;};}function patchUpdates(_0x485d85){return function(_0x538fbf){try{jsonpatch[_0xe853('0x24')](_0x538fbf,_0x485d85,!![]);}catch(_0x4699d1){return BPromise[_0xe853('0x25')](_0x4699d1);}return _0x538fbf[_0xe853('0x26')]();};}function saveUpdates(_0x22a69a,_0x3a13f9){return function(_0x25e6cb){if(_0x25e6cb){return _0x25e6cb['update'](_0x22a69a)[_0xe853('0x27')](function(_0x1337a8){return _0x1337a8;});}return null;};}function removeEntity(_0x308017,_0x2a2b45){return function(_0x1de3ee){if(_0x1de3ee){return _0x1de3ee[_0xe853('0x28')]()['then'](function(){_0x308017[_0xe853('0x1b')](0xcc)[_0xe853('0x1c')]();});}};}function handleEntityNotFound(_0x11a512,_0x2ea412){return function(_0x2d162b){if(!_0x2d162b){_0x11a512[_0xe853('0x1a')](0x194);}return _0x2d162b;};}function handleError(_0xd1ea3b,_0xc74ad7){_0xc74ad7=_0xc74ad7||0x1f4;return function(_0x32fb08){logger['error'](_0x32fb08[_0xe853('0x29')]);if(_0x32fb08[_0xe853('0x2a')]){delete _0x32fb08[_0xe853('0x2a')];}_0xd1ea3b[_0xe853('0x1b')](_0xc74ad7)['send'](_0x32fb08);};}exports[_0xe853('0x2b')]=function(_0x3826bf,_0x10e103){var _0x165969={},_0x17ef7b={},_0x445e67={'count':0x0,'rows':[]};var _0x2b6b8c=_['map'](db[_0xe853('0x2c')]['rawAttributes'],function(_0x47446e){return{'name':_0x47446e[_0xe853('0x2d')],'type':_0x47446e[_0xe853('0x2e')]['key']};});_0x17ef7b[_0xe853('0x2f')]=_[_0xe853('0x30')](_0x2b6b8c,_0xe853('0x2a'));_0x17ef7b[_0xe853('0x31')]=_[_0xe853('0x32')](_0x3826bf[_0xe853('0x31')]);_0x17ef7b[_0xe853('0x33')]=_[_0xe853('0x34')](_0x17ef7b[_0xe853('0x2f')],_0x17ef7b[_0xe853('0x31')]);_0x165969[_0xe853('0x35')]=_[_0xe853('0x34')](_0x17ef7b[_0xe853('0x2f')],qs['fields'](_0x3826bf[_0xe853('0x31')]['fields']));_0x165969[_0xe853('0x35')]=_0x165969[_0xe853('0x35')][_0xe853('0x36')]?_0x165969[_0xe853('0x35')]:_0x17ef7b[_0xe853('0x2f')];if(!_0x3826bf['query'][_0xe853('0x37')](_0xe853('0x38'))){_0x165969[_0xe853('0x21')]=qs[_0xe853('0x21')](_0x3826bf[_0xe853('0x31')][_0xe853('0x21')]);_0x165969['offset']=qs[_0xe853('0x1e')](_0x3826bf[_0xe853('0x31')][_0xe853('0x1e')]);}_0x165969[_0xe853('0x39')]=qs[_0xe853('0x3a')](_0x3826bf[_0xe853('0x31')]['sort']);_0x165969[_0xe853('0x3b')]=qs['filters'](_[_0xe853('0x3c')](_0x3826bf['query'],_0x17ef7b[_0xe853('0x33')]),_0x2b6b8c);if(_0x3826bf[_0xe853('0x31')][_0xe853('0x3d')]){_0x165969[_0xe853('0x3b')]=_[_0xe853('0x3e')](_0x165969[_0xe853('0x3b')],{'$or':_[_0xe853('0x30')](_0x2b6b8c,function(_0x20a0d6){if(_0x20a0d6[_0xe853('0x2e')]!==_0xe853('0x3f')){var _0x4e30d8={};_0x4e30d8[_0x20a0d6[_0xe853('0x2a')]]={'$like':'%'+_0x3826bf[_0xe853('0x31')][_0xe853('0x3d')]+'%'};return _0x4e30d8;}})});}_0x165969=_[_0xe853('0x3e')]({},_0x165969,_0x3826bf[_0xe853('0x40')]);var _0x4577f2={'where':_0x165969[_0xe853('0x3b')]};return db[_0xe853('0x2c')]['count'](_0x4577f2)[_0xe853('0x27')](function(_0xb6f99f){_0x445e67['count']=_0xb6f99f;if(_0x3826bf[_0xe853('0x31')][_0xe853('0x41')]){_0x165969['include']=[{'all':!![]}];}return db[_0xe853('0x2c')]['findAll'](_0x165969);})[_0xe853('0x27')](function(_0x52439a){_0x445e67[_0xe853('0x42')]=_0x52439a;return _0x445e67;})[_0xe853('0x27')](respondWithFilteredResult(_0x10e103,_0x165969))[_0xe853('0x43')](handleError(_0x10e103,null));};exports[_0xe853('0x44')]=function(_0x364b30,_0x32ccfc){var _0x4f4f37={'raw':!![],'where':{'id':_0x364b30[_0xe853('0x45')]['id']}},_0x5f2870={};_0x5f2870[_0xe853('0x2f')]=_[_0xe853('0x32')](db[_0xe853('0x2c')]['rawAttributes']);_0x5f2870[_0xe853('0x31')]=_[_0xe853('0x32')](_0x364b30[_0xe853('0x31')]);_0x5f2870['filters']=_[_0xe853('0x34')](_0x5f2870[_0xe853('0x2f')],_0x5f2870['query']);_0x4f4f37[_0xe853('0x35')]=_[_0xe853('0x34')](_0x5f2870[_0xe853('0x2f')],qs[_0xe853('0x46')](_0x364b30[_0xe853('0x31')][_0xe853('0x46')]));_0x4f4f37['attributes']=_0x4f4f37[_0xe853('0x35')][_0xe853('0x36')]?_0x4f4f37['attributes']:_0x5f2870['model'];if(_0x364b30[_0xe853('0x31')][_0xe853('0x41')]){_0x4f4f37[_0xe853('0x47')]=[{'all':!![]}];}_0x4f4f37=_[_0xe853('0x3e')]({},_0x4f4f37,_0x364b30[_0xe853('0x40')]);return db['MailTransferReport']['find'](_0x4f4f37)[_0xe853('0x27')](handleEntityNotFound(_0x32ccfc,null))['then'](respondWithResult(_0x32ccfc,null))[_0xe853('0x43')](handleError(_0x32ccfc,null));};exports[_0xe853('0x48')]=function(_0x11b02a,_0x5d689a){return db['MailTransferReport'][_0xe853('0x48')](_0x11b02a[_0xe853('0x49')],{})[_0xe853('0x27')](respondWithResult(_0x5d689a,0xc9))[_0xe853('0x43')](handleError(_0x5d689a,null));};exports['update']=function(_0x1e6408,_0x5afaff){if(_0x1e6408[_0xe853('0x49')]['id']){delete _0x1e6408[_0xe853('0x49')]['id'];}return db['MailTransferReport'][_0xe853('0x4a')]({'where':{'id':_0x1e6408[_0xe853('0x45')]['id']}})['then'](handleEntityNotFound(_0x5afaff,null))[_0xe853('0x27')](saveUpdates(_0x1e6408['body'],null))[_0xe853('0x27')](respondWithResult(_0x5afaff,null))[_0xe853('0x43')](handleError(_0x5afaff,null));};exports['destroy']=function(_0x44ad94,_0x119880){return db['MailTransferReport'][_0xe853('0x4a')]({'where':{'id':_0x44ad94[_0xe853('0x45')]['id']}})[_0xe853('0x27')](handleEntityNotFound(_0x119880,null))[_0xe853('0x27')](removeEntity(_0x119880,null))[_0xe853('0x43')](handleError(_0x119880,null));};exports[_0xe853('0x4b')]=function(_0xa1b381,_0x424a48){return db[_0xe853('0x2c')]['describe']()[_0xe853('0x27')](respondWithResult(_0x424a48,null))[_0xe853('0x43')](handleError(_0x424a48,null));};
\ No newline at end of file
+var _0x21b5=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','create','body','update','find','params','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','name','index','map','MailTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x328083,_0x24710f){var _0x7f2f95=function(_0x4dad36){while(--_0x4dad36){_0x328083['push'](_0x328083['shift']());}};_0x7f2f95(++_0x24710f);}(_0x21b5,0xf9));var _0x521b=function(_0x2616de,_0x56dab8){_0x2616de=_0x2616de-0x0;var _0x19f21a=_0x21b5[_0x2616de];return _0x19f21a;};'use strict';var emlformat=require(_0x521b('0x0'));var rimraf=require(_0x521b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x521b('0x2'));var rp=require(_0x521b('0x3'));var moment=require(_0x521b('0x4'));var BPromise=require(_0x521b('0x5'));var Mustache=require(_0x521b('0x6'));var util=require(_0x521b('0x7'));var path=require(_0x521b('0x8'));var sox=require(_0x521b('0x9'));var csv=require(_0x521b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x521b('0xb'));var _=require('lodash');var squel=require(_0x521b('0xc'));var crypto=require(_0x521b('0xd'));var jsforce=require(_0x521b('0xe'));var deskjs=require(_0x521b('0xf'));var toCsv=require(_0x521b('0xa'));var querystring=require('querystring');var Papa=require(_0x521b('0x10'));var Redis=require(_0x521b('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x521b('0x12'));var logger=require(_0x521b('0x13'))(_0x521b('0x14'));var utils=require(_0x521b('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x521b('0x16'));var db=require(_0x521b('0x17'))['db'];function respondWithStatusCode(_0x5a9f93,_0x5dc75d){_0x5dc75d=_0x5dc75d||0xcc;return function(_0x5ac235){if(_0x5ac235){return _0x5a9f93['sendStatus'](_0x5dc75d);}return _0x5a9f93[_0x521b('0x18')](_0x5dc75d)['end']();};}function respondWithResult(_0x2b01cc,_0x4be8d8){_0x4be8d8=_0x4be8d8||0xc8;return function(_0x4d3e6d){if(_0x4d3e6d){return _0x2b01cc['status'](_0x4be8d8)[_0x521b('0x19')](_0x4d3e6d);}};}function respondWithFilteredResult(_0x2ff32d,_0x43fe4c){return function(_0x5c0b81){if(_0x5c0b81){var _0x1f4425=typeof _0x43fe4c[_0x521b('0x1a')]===_0x521b('0x1b')&&typeof _0x43fe4c[_0x521b('0x1c')]===_0x521b('0x1b');var _0xa9782=_0x5c0b81['count'];var _0x4838f7=_0x1f4425?0x0:_0x43fe4c[_0x521b('0x1a')];var _0x1f021d=_0x1f4425?_0x5c0b81[_0x521b('0x1d')]:_0x43fe4c['offset']+_0x43fe4c[_0x521b('0x1c')];var _0x2a70a8;if(_0x1f021d>=_0xa9782){_0x1f021d=_0xa9782;_0x2a70a8=0xc8;}else{_0x2a70a8=0xce;}_0x2ff32d[_0x521b('0x18')](_0x2a70a8);return _0x2ff32d[_0x521b('0x1e')](_0x521b('0x1f'),_0x4838f7+'-'+_0x1f021d+'/'+_0xa9782)[_0x521b('0x19')](_0x5c0b81);}return null;};}function patchUpdates(_0x2b1604){return function(_0x35e684){try{jsonpatch[_0x521b('0x20')](_0x35e684,_0x2b1604,!![]);}catch(_0x3b2739){return BPromise[_0x521b('0x21')](_0x3b2739);}return _0x35e684[_0x521b('0x22')]();};}function saveUpdates(_0x158b3c,_0xb39f08){return function(_0x2846ee){if(_0x2846ee){return _0x2846ee['update'](_0x158b3c)[_0x521b('0x23')](function(_0x39a2e1){return _0x39a2e1;});}return null;};}function removeEntity(_0x25da59,_0xcbf76){return function(_0x507900){if(_0x507900){return _0x507900['destroy']()['then'](function(){_0x25da59[_0x521b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44a0ef,_0x5c77ca){return function(_0x177f4d){if(!_0x177f4d){_0x44a0ef[_0x521b('0x24')](0x194);}return _0x177f4d;};}function handleError(_0x4c3095,_0xfc6325){_0xfc6325=_0xfc6325||0x1f4;return function(_0x35c902){logger[_0x521b('0x25')](_0x35c902[_0x521b('0x26')]);if(_0x35c902[_0x521b('0x27')]){delete _0x35c902['name'];}_0x4c3095[_0x521b('0x18')](_0xfc6325)['send'](_0x35c902);};}exports[_0x521b('0x28')]=function(_0x1cc578,_0x1be611){var _0xa8ec39={},_0x21f375={},_0x5f1b8a={'count':0x0,'rows':[]};var _0x13738f=_[_0x521b('0x29')](db[_0x521b('0x2a')]['rawAttributes'],function(_0x40ca92){return{'name':_0x40ca92[_0x521b('0x2b')],'type':_0x40ca92[_0x521b('0x2c')][_0x521b('0x2d')]};});_0x21f375[_0x521b('0x2e')]=_[_0x521b('0x29')](_0x13738f,_0x521b('0x27'));_0x21f375[_0x521b('0x2f')]=_[_0x521b('0x30')](_0x1cc578[_0x521b('0x2f')]);_0x21f375[_0x521b('0x31')]=_[_0x521b('0x32')](_0x21f375[_0x521b('0x2e')],_0x21f375[_0x521b('0x2f')]);_0xa8ec39[_0x521b('0x33')]=_[_0x521b('0x32')](_0x21f375['model'],qs[_0x521b('0x34')](_0x1cc578[_0x521b('0x2f')]['fields']));_0xa8ec39[_0x521b('0x33')]=_0xa8ec39[_0x521b('0x33')][_0x521b('0x35')]?_0xa8ec39['attributes']:_0x21f375['model'];if(!_0x1cc578[_0x521b('0x2f')][_0x521b('0x36')]('nolimit')){_0xa8ec39[_0x521b('0x1c')]=qs['limit'](_0x1cc578[_0x521b('0x2f')][_0x521b('0x1c')]);_0xa8ec39[_0x521b('0x1a')]=qs[_0x521b('0x1a')](_0x1cc578[_0x521b('0x2f')]['offset']);}_0xa8ec39[_0x521b('0x37')]=qs[_0x521b('0x38')](_0x1cc578[_0x521b('0x2f')][_0x521b('0x38')]);_0xa8ec39[_0x521b('0x39')]=qs[_0x521b('0x31')](_[_0x521b('0x3a')](_0x1cc578[_0x521b('0x2f')],_0x21f375[_0x521b('0x31')]),_0x13738f);if(_0x1cc578['query'][_0x521b('0x3b')]){_0xa8ec39[_0x521b('0x39')]=_[_0x521b('0x3c')](_0xa8ec39[_0x521b('0x39')],{'$or':_[_0x521b('0x29')](_0x13738f,function(_0x266be6){if(_0x266be6[_0x521b('0x2c')]!==_0x521b('0x3d')){var _0x10d7ff={};_0x10d7ff[_0x266be6[_0x521b('0x27')]]={'$like':'%'+_0x1cc578[_0x521b('0x2f')][_0x521b('0x3b')]+'%'};return _0x10d7ff;}})});}_0xa8ec39=_[_0x521b('0x3c')]({},_0xa8ec39,_0x1cc578[_0x521b('0x3e')]);var _0x157dcc={'where':_0xa8ec39['where']};return db[_0x521b('0x2a')][_0x521b('0x1d')](_0x157dcc)['then'](function(_0x31e418){_0x5f1b8a['count']=_0x31e418;if(_0x1cc578[_0x521b('0x2f')][_0x521b('0x3f')]){_0xa8ec39[_0x521b('0x40')]=[{'all':!![]}];}return db['MailTransferReport'][_0x521b('0x41')](_0xa8ec39);})[_0x521b('0x23')](function(_0x3c529e){_0x5f1b8a[_0x521b('0x42')]=_0x3c529e;return _0x5f1b8a;})[_0x521b('0x23')](respondWithFilteredResult(_0x1be611,_0xa8ec39))[_0x521b('0x43')](handleError(_0x1be611,null));};exports['show']=function(_0x33b7b7,_0x4c7997){var _0x3e53a2={'raw':!![],'where':{'id':_0x33b7b7['params']['id']}},_0x45ea05={};_0x45ea05[_0x521b('0x2e')]=_[_0x521b('0x30')](db[_0x521b('0x2a')][_0x521b('0x44')]);_0x45ea05[_0x521b('0x2f')]=_[_0x521b('0x30')](_0x33b7b7[_0x521b('0x2f')]);_0x45ea05[_0x521b('0x31')]=_[_0x521b('0x32')](_0x45ea05[_0x521b('0x2e')],_0x45ea05[_0x521b('0x2f')]);_0x3e53a2['attributes']=_[_0x521b('0x32')](_0x45ea05[_0x521b('0x2e')],qs[_0x521b('0x34')](_0x33b7b7[_0x521b('0x2f')][_0x521b('0x34')]));_0x3e53a2[_0x521b('0x33')]=_0x3e53a2[_0x521b('0x33')][_0x521b('0x35')]?_0x3e53a2[_0x521b('0x33')]:_0x45ea05[_0x521b('0x2e')];if(_0x33b7b7['query'][_0x521b('0x3f')]){_0x3e53a2[_0x521b('0x40')]=[{'all':!![]}];}_0x3e53a2=_['merge']({},_0x3e53a2,_0x33b7b7[_0x521b('0x3e')]);return db[_0x521b('0x2a')]['find'](_0x3e53a2)[_0x521b('0x23')](handleEntityNotFound(_0x4c7997,null))[_0x521b('0x23')](respondWithResult(_0x4c7997,null))['catch'](handleError(_0x4c7997,null));};exports[_0x521b('0x45')]=function(_0x340bbe,_0xaa0334){return db[_0x521b('0x2a')]['create'](_0x340bbe[_0x521b('0x46')],{})[_0x521b('0x23')](respondWithResult(_0xaa0334,0xc9))[_0x521b('0x43')](handleError(_0xaa0334,null));};exports[_0x521b('0x47')]=function(_0x5ae846,_0x35f41b){if(_0x5ae846[_0x521b('0x46')]['id']){delete _0x5ae846[_0x521b('0x46')]['id'];}return db[_0x521b('0x2a')][_0x521b('0x48')]({'where':{'id':_0x5ae846[_0x521b('0x49')]['id']}})[_0x521b('0x23')](handleEntityNotFound(_0x35f41b,null))['then'](saveUpdates(_0x5ae846[_0x521b('0x46')],null))[_0x521b('0x23')](respondWithResult(_0x35f41b,null))['catch'](handleError(_0x35f41b,null));};exports[_0x521b('0x4a')]=function(_0x4a8882,_0x4afb9e){return db[_0x521b('0x2a')]['find']({'where':{'id':_0x4a8882[_0x521b('0x49')]['id']}})[_0x521b('0x23')](handleEntityNotFound(_0x4afb9e,null))[_0x521b('0x23')](removeEntity(_0x4afb9e,null))[_0x521b('0x43')](handleError(_0x4afb9e,null));};exports[_0x521b('0x4b')]=function(_0x19d2b5,_0x143886){return db[_0x521b('0x2a')][_0x521b('0x4b')]()[_0x521b('0x23')](respondWithResult(_0x143886,null))[_0x521b('0x43')](handleError(_0x143886,null));};
\ No newline at end of file
index 67b42d3..9533260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684d=['api','bluebird','path','rimraf','../../config/environment','exports','MailTransferReport','report_mail_transfer','uniqueid','util','../../config/logger'];(function(_0x45ce08,_0x59dcc7){var _0x23dff2=function(_0x1ad0e5){while(--_0x1ad0e5){_0x45ce08['push'](_0x45ce08['shift']());}};_0x23dff2(++_0x59dcc7);}(_0x684d,0x174));var _0xd684=function(_0x4a1e94,_0x21765e){_0x4a1e94=_0x4a1e94-0x0;var _0x3d67dc=_0x684d[_0x4a1e94];return _0x3d67dc;};'use strict';var _=require('lodash');var util=require(_0xd684('0x0'));var logger=require(_0xd684('0x1'))(_0xd684('0x2'));var moment=require('moment');var BPromise=require(_0xd684('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd684('0x4'));var rimraf=require(_0xd684('0x5'));var config=require(_0xd684('0x6'));var attributes=require('./mailTransferReport.attributes');module[_0xd684('0x7')]=function(_0x5f50ac,_0x3bf907){return _0x5f50ac['define'](_0xd684('0x8'),attributes,{'tableName':_0xd684('0x9'),'paranoid':![],'indexes':[{'name':_0xd684('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfc0=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash'];(function(_0x509ef5,_0x3e7db2){var _0x3bd8e1=function(_0xac31f8){while(--_0xac31f8){_0x509ef5['push'](_0x509ef5['shift']());}};_0x3bd8e1(++_0x3e7db2);}(_0xbfc0,0x125));var _0x0bfc=function(_0x518b8f,_0x476de4){_0x518b8f=_0x518b8f-0x0;var _0x51cece=_0xbfc0[_0x518b8f];return _0x51cece;};'use strict';var _=require(_0x0bfc('0x0'));var util=require(_0x0bfc('0x1'));var logger=require(_0x0bfc('0x2'))(_0x0bfc('0x3'));var moment=require(_0x0bfc('0x4'));var BPromise=require(_0x0bfc('0x5'));var rp=require(_0x0bfc('0x6'));var fs=require('fs');var path=require(_0x0bfc('0x7'));var rimraf=require('rimraf');var config=require(_0x0bfc('0x8'));var attributes=require('./mailTransferReport.attributes');module[_0x0bfc('0x9')]=function(_0x38afc3,_0x1e81dd){return _0x38afc3[_0x0bfc('0xa')](_0x0bfc('0xb'),attributes,{'tableName':_0x0bfc('0xc'),'paranoid':![],'indexes':[{'name':_0x0bfc('0xd'),'fields':[_0x0bfc('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 66f8c8d..f5fb88d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cc2=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xf55e73,_0x3fecc5){var _0x116b99=function(_0x314e0c){while(--_0x314e0c){_0xf55e73['push'](_0xf55e73['shift']());}};_0x116b99(++_0x3fecc5);}(_0x0cc2,0x140));var _0x20cc=function(_0x232e6b,_0xe3900c){_0x232e6b=_0x232e6b-0x0;var _0x566433=_0x0cc2[_0x232e6b];return _0x566433;};'use strict';var _=require(_0x20cc('0x0'));var util=require(_0x20cc('0x1'));var moment=require('moment');var BPromise=require(_0x20cc('0x2'));var rs=require(_0x20cc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x20cc('0x4'))['db'];var utils=require(_0x20cc('0x5'));var logger=require(_0x20cc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x20cc('0x7')][_0x20cc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a8629,_0x330f7b,_0x30a6c){return new BPromise(function(_0x4e7db0,_0x164df6){return client[_0x20cc('0x9')](_0x2a8629,_0x30a6c)[_0x20cc('0xa')](function(_0x1af606){logger[_0x20cc('0xb')](_0x20cc('0xc'),_0x330f7b,_0x20cc('0xd'));logger['debug'](_0x20cc('0xe'),_0x330f7b,_0x20cc('0xd'),JSON[_0x20cc('0xf')](_0x1af606));if(_0x1af606[_0x20cc('0x10')]){if(_0x1af606[_0x20cc('0x10')][_0x20cc('0x11')]===0x1f4){logger[_0x20cc('0x10')](_0x20cc('0xc'),_0x330f7b,_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);return _0x164df6(_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);}logger[_0x20cc('0x10')](_0x20cc('0xc'),_0x330f7b,_0x1af606[_0x20cc('0x10')][_0x20cc('0x12')]);return _0x4e7db0(_0x1af606['error'][_0x20cc('0x12')]);}else{logger[_0x20cc('0xb')](_0x20cc('0xc'),_0x330f7b,'request\x20sent');_0x4e7db0(_0x1af606[_0x20cc('0x13')][_0x20cc('0x12')]);}})['catch'](function(_0x5bc32b){logger[_0x20cc('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x330f7b,_0x5bc32b);_0x164df6(_0x5bc32b);});});}
\ No newline at end of file
+var _0xe4df=['MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x128c63,_0x2ad7de){var _0x2cd488=function(_0x4878c9){while(--_0x4878c9){_0x128c63['push'](_0x128c63['shift']());}};_0x2cd488(++_0x2ad7de);}(_0xe4df,0x1cd));var _0xfe4d=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xe4df[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xfe4d('0x0'));var util=require(_0xfe4d('0x1'));var moment=require(_0xfe4d('0x2'));var BPromise=require('bluebird');var rs=require(_0xfe4d('0x3'));var fs=require('fs');var Redis=require(_0xfe4d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfe4d('0x5'));var logger=require('../../config/logger')(_0xfe4d('0x6'));var config=require('../../config/environment');var jayson=require(_0xfe4d('0x7'));var client=jayson[_0xfe4d('0x8')][_0xfe4d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53e9bb,_0x2bef37,_0x5bd563){return new BPromise(function(_0x288296,_0x2c8647){return client['request'](_0x53e9bb,_0x5bd563)['then'](function(_0x199e04){logger[_0xfe4d('0xa')](_0xfe4d('0xb'),_0x2bef37,_0xfe4d('0xc'));logger[_0xfe4d('0xd')](_0xfe4d('0xe'),_0x2bef37,'request\x20sent',JSON[_0xfe4d('0xf')](_0x199e04));if(_0x199e04[_0xfe4d('0x10')]){if(_0x199e04[_0xfe4d('0x10')]['code']===0x1f4){logger[_0xfe4d('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x2bef37,_0x199e04[_0xfe4d('0x10')][_0xfe4d('0x11')]);return _0x2c8647(_0x199e04['error'][_0xfe4d('0x11')]);}logger['error'](_0xfe4d('0xb'),_0x2bef37,_0x199e04[_0xfe4d('0x10')][_0xfe4d('0x11')]);return _0x288296(_0x199e04[_0xfe4d('0x10')][_0xfe4d('0x11')]);}else{logger['info'](_0xfe4d('0xb'),_0x2bef37,_0xfe4d('0xc'));_0x288296(_0x199e04[_0xfe4d('0x12')][_0xfe4d('0x11')]);}})['catch'](function(_0x166957){logger[_0xfe4d('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x2bef37,_0x166957);_0x2c8647(_0x166957);});});}
\ No newline at end of file
index 6341d97..b56ef9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf00=['describe','/:id','show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe'];(function(_0x2586a9,_0x372110){var _0x4ad2d7=function(_0x4db970){while(--_0x4db970){_0x2586a9['push'](_0x2586a9['shift']());}};_0x4ad2d7(++_0x372110);}(_0xbf00,0x104));var _0x0bf0=function(_0x86c0d5,_0x39c768){_0x86c0d5=_0x86c0d5-0x0;var _0x2a7ed0=_0xbf00[_0x86c0d5];return _0x2a7ed0;};'use strict';var multer=require(_0x0bf0('0x0'));var util=require(_0x0bf0('0x1'));var path=require(_0x0bf0('0x2'));var timeout=require(_0x0bf0('0x3'));var express=require(_0x0bf0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0bf0('0x5'));var interaction=require(_0x0bf0('0x6'));var config=require(_0x0bf0('0x7'));var controller=require(_0x0bf0('0x8'));router[_0x0bf0('0x9')]('/',auth[_0x0bf0('0xa')](),controller[_0x0bf0('0xb')]);router[_0x0bf0('0x9')](_0x0bf0('0xc'),auth['isAuthenticated'](),controller[_0x0bf0('0xd')]);router['get'](_0x0bf0('0xe'),auth[_0x0bf0('0xa')](),controller[_0x0bf0('0xf')]);router[_0x0bf0('0x10')]('/',auth[_0x0bf0('0xa')](),controller['create']);router[_0x0bf0('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x0bf0('0x12')]);router['delete'](_0x0bf0('0xe'),auth['isAuthenticated'](),controller[_0x0bf0('0x13')]);module[_0x0bf0('0x14')]=router;
\ No newline at end of file
+var _0xe812=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x4edfa3,_0x57a4ce){var _0x42e1a2=function(_0x1c0158){while(--_0x1c0158){_0x4edfa3['push'](_0x4edfa3['shift']());}};_0x42e1a2(++_0x57a4ce);}(_0xe812,0xf7));var _0x2e81=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xe812[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0x2e81('0x0'));var util=require(_0x2e81('0x1'));var path=require(_0x2e81('0x2'));var timeout=require(_0x2e81('0x3'));var express=require(_0x2e81('0x4'));var router=express[_0x2e81('0x5')]();var fs_extra=require(_0x2e81('0x6'));var auth=require(_0x2e81('0x7'));var interaction=require(_0x2e81('0x8'));var config=require(_0x2e81('0x9'));var controller=require(_0x2e81('0xa'));router[_0x2e81('0xb')]('/',auth[_0x2e81('0xc')](),controller[_0x2e81('0xd')]);router[_0x2e81('0xb')](_0x2e81('0xe'),auth[_0x2e81('0xc')](),controller[_0x2e81('0xf')]);router[_0x2e81('0xb')](_0x2e81('0x10'),auth[_0x2e81('0xc')](),controller[_0x2e81('0x11')]);router[_0x2e81('0x12')]('/',auth[_0x2e81('0xc')](),controller['create']);router[_0x2e81('0x13')]('/:id',auth[_0x2e81('0xc')](),controller[_0x2e81('0x14')]);router['delete'](_0x2e81('0x10'),auth['isAuthenticated'](),controller[_0x2e81('0x15')]);module[_0x2e81('0x16')]=router;
\ No newline at end of file
index 4c2253b..ecb38fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31e=['talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]'];(function(_0xb5ab4b,_0x552ed3){var _0x5677e6=function(_0x41e214){while(--_0x41e214){_0xb5ab4b['push'](_0xb5ab4b['shift']());}};_0x5677e6(++_0x552ed3);}(_0xf31e,0x17a));var _0xef31=function(_0x5b60d8,_0x57b407){_0x5b60d8=_0x5b60d8-0x0;var _0x243439=_0xf31e[_0x5b60d8];return _0x243439;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xef31('0x0'));module[_0xef31('0x1')]={'channel':{'type':Sequelize[_0xef31('0x2')]},'membername':{'type':Sequelize[_0xef31('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xef31('0x2')],'defaultValue':_0xef31('0x3'),'comment':_0xef31('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xef31('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x4cf70b){var _0x17832c=moment(_0x4cf70b);var _0x10b640=moment(this['getDataValue'](_0xef31('0x6')));var _0x2294c3=_0x17832c[_0xef31('0x7')](_0x10b640,_0xef31('0x8'));this[_0xef31('0x9')](_0xef31('0xa'),_0x4cf70b);this[_0xef31('0x9')](_0xef31('0xb'),_0x2294c3>=0x0?_0x2294c3:null);}},'data1':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xc')},'data2':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xd')},'data3':{'type':Sequelize[_0xef31('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xe')},'data5':{'type':Sequelize[_0xef31('0x2')],'comment':_0xef31('0xf')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xef31('0x10')]},'uniqueid':{'type':Sequelize[_0xef31('0x2')]}};
\ No newline at end of file
+var _0x9b0f=['DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','talk:[destination]','talk:[dial\x20string]','sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER'];(function(_0x4ba020,_0x3b911a){var _0x336a0d=function(_0x3bb4ad){while(--_0x3bb4ad){_0x4ba020['push'](_0x4ba020['shift']());}};_0x336a0d(++_0x3b911a);}(_0x9b0f,0x180));var _0xf9b0=function(_0x1eb837,_0x24429f){_0x1eb837=_0x1eb837-0x0;var _0x4ed333=_0x9b0f[_0x1eb837];return _0x4ed333;};'use strict';var Sequelize=require(_0xf9b0('0x0'));var moment=require(_0xf9b0('0x1'));module['exports']={'channel':{'type':Sequelize[_0xf9b0('0x2')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xf9b0('0x2')]},'type':{'type':Sequelize[_0xf9b0('0x2')],'defaultValue':_0xf9b0('0x3'),'comment':_0xf9b0('0x4')},'duration':{'type':Sequelize[_0xf9b0('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xf9b0('0x6')],'set':function(_0x54ed01){var _0x450321=moment(_0x54ed01);var _0x360bff=moment(this[_0xf9b0('0x7')](_0xf9b0('0x8')));var _0x4b700c=_0x450321[_0xf9b0('0x9')](_0x360bff,_0xf9b0('0xa'));this[_0xf9b0('0xb')](_0xf9b0('0xc'),_0x54ed01);this[_0xf9b0('0xb')]('duration',_0x4b700c>=0x0?_0x4b700c:null);}},'data1':{'type':Sequelize[_0xf9b0('0x2')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xf9b0('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xf9b0('0x2')],'comment':_0xf9b0('0xd')},'data4':{'type':Sequelize['STRING'],'comment':_0xf9b0('0xe')},'data5':{'type':Sequelize[_0xf9b0('0x2')],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xf9b0('0x2')]},'internal':{'type':Sequelize[_0xf9b0('0x5')]},'uniqueid':{'type':Sequelize[_0xf9b0('0x2')]}};
\ No newline at end of file
index 0398000..e5e427d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xedd9,0xfc));var _0x9edd=function(_0xfa90d9,_0xbfc095){_0xfa90d9=_0xfa90d9-0x0;var _0x5cbcc9=_0xedd9[_0xfa90d9];return _0x5cbcc9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
+var _0x34e8=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','MemberReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x34e8,0x12c));var _0x834e=function(_0xa8b14f,_0x3c9f84){_0xa8b14f=_0xa8b14f-0x0;var _0x51b7bb=_0x34e8[_0xa8b14f];return _0x51b7bb;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x2c7a8d[_0x834e('0x39')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d[_0x834e('0x39')]=_0x2c7a8d[_0x834e('0x39')][_0x834e('0x3b')]?_0x2c7a8d[_0x834e('0x39')]:_0x567cea['model'];if(!_0x4dc64a[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x20')]);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d['order']=qs[_0x834e('0x3d')](_0x4dc64a['query'][_0x834e('0x3d')]);_0x2c7a8d[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a['query'][_0x834e('0x40')]){_0x2c7a8d[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x2c7a8d[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0x5dacc1,function(_0x4ca43c){if(_0x4ca43c[_0x834e('0x33')]!=='VIRTUAL'){var _0x50c243={};_0x50c243[_0x4ca43c[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a['query'][_0x834e('0x40')]+'%'};return _0x50c243;}})});}_0x2c7a8d=_[_0x834e('0x41')]({},_0x2c7a8d,_0x4dc64a[_0x834e('0x42')]);var _0x3c59af={'where':_0x2c7a8d[_0x834e('0x3e')]};return db['MemberReport'][_0x834e('0x21')](_0x3c59af)[_0x834e('0x2a')](function(_0x38f266){_0x106d6a['count']=_0x38f266;if(_0x4dc64a[_0x834e('0x36')][_0x834e('0x43')]){_0x2c7a8d['include']=[{'all':!![]}];}return db[_0x834e('0x30')]['findAll'](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x585335){_0x106d6a['rows']=_0x585335;return _0x106d6a;})['then'](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x44')](handleError(_0x58c1d7,null));};exports[_0x834e('0x45')]=function(_0x3bcbf4,_0xbc1571){var _0x8ad264={'raw':!![],'where':{'id':_0x3bcbf4[_0x834e('0x46')]['id']}},_0x23feea={};_0x23feea['model']=_[_0x834e('0x47')](db['MemberReport'][_0x834e('0x31')]);_0x23feea['query']=_[_0x834e('0x47')](_0x3bcbf4['query']);_0x23feea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x23feea['model'],_0x23feea[_0x834e('0x36')]);_0x8ad264[_0x834e('0x39')]=_[_0x834e('0x38')](_0x23feea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x3bcbf4[_0x834e('0x36')][_0x834e('0x3a')]));_0x8ad264[_0x834e('0x39')]=_0x8ad264[_0x834e('0x39')][_0x834e('0x3b')]?_0x8ad264['attributes']:_0x23feea[_0x834e('0x35')];if(_0x3bcbf4[_0x834e('0x36')]['includeAll']){_0x8ad264[_0x834e('0x48')]=[{'all':!![]}];}_0x8ad264=_[_0x834e('0x41')]({},_0x8ad264,_0x3bcbf4[_0x834e('0x42')]);return db[_0x834e('0x30')][_0x834e('0x49')](_0x8ad264)[_0x834e('0x2a')](handleEntityNotFound(_0xbc1571,null))['then'](respondWithResult(_0xbc1571,null))['catch'](handleError(_0xbc1571,null));};exports[_0x834e('0x4a')]=function(_0x1a5444,_0x30568e){return db[_0x834e('0x30')][_0x834e('0x4a')](_0x1a5444[_0x834e('0x4b')],{})[_0x834e('0x2a')](respondWithResult(_0x30568e,0xc9))[_0x834e('0x44')](handleError(_0x30568e,null));};exports[_0x834e('0x29')]=function(_0x390c45,_0xf02f0d){if(_0x390c45[_0x834e('0x4b')]['id']){delete _0x390c45[_0x834e('0x4b')]['id'];}return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x390c45[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xf02f0d,null))[_0x834e('0x2a')](saveUpdates(_0x390c45[_0x834e('0x4b')],null))[_0x834e('0x2a')](respondWithResult(_0xf02f0d,null))['catch'](handleError(_0xf02f0d,null));};exports[_0x834e('0x2b')]=function(_0x1f08b9,_0x4e73e0){return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x1f08b9['params']['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x4e73e0,null))[_0x834e('0x2a')](removeEntity(_0x4e73e0,null))[_0x834e('0x44')](handleError(_0x4e73e0,null));};exports[_0x834e('0x4c')]=function(_0x4288e4,_0xb77aab){return db[_0x834e('0x30')]['describe']()[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,null));};
\ No newline at end of file
index 09e296e..637f22c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced7=['bluebird','request-promise','path','rimraf','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment'];(function(_0x286bfb,_0x46ac3c){var _0x52b683=function(_0x3e7fb1){while(--_0x3e7fb1){_0x286bfb['push'](_0x286bfb['shift']());}};_0x52b683(++_0x46ac3c);}(_0xced7,0xc7));var _0x7ced=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xced7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7ced('0x0'));var util=require(_0x7ced('0x1'));var logger=require(_0x7ced('0x2'))(_0x7ced('0x3'));var moment=require(_0x7ced('0x4'));var BPromise=require(_0x7ced('0x5'));var rp=require(_0x7ced('0x6'));var fs=require('fs');var path=require(_0x7ced('0x7'));var rimraf=require(_0x7ced('0x8'));var config=require('../../config/environment');var attributes=require(_0x7ced('0x9'));module[_0x7ced('0xa')]=function(_0xc9acda,_0x835f4){return _0xc9acda[_0x7ced('0xb')](_0x7ced('0xc'),attributes,{'tableName':_0x7ced('0xd'),'paranoid':![],'indexes':[{'name':_0x7ced('0xe'),'fields':[_0x7ced('0xf'),_0x7ced('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8e0=['moment','bluebird','request-promise','rimraf','./memberReport.attributes','define','MemberReport','report_member','membername_interface','util'];(function(_0xe69bf1,_0x487cbc){var _0x1259d1=function(_0x5e610d){while(--_0x5e610d){_0xe69bf1['push'](_0xe69bf1['shift']());}};_0x1259d1(++_0x487cbc);}(_0xf8e0,0x103));var _0x0f8e=function(_0x2fa5ba,_0x4a70a1){_0x2fa5ba=_0x2fa5ba-0x0;var _0x38aa4b=_0xf8e0[_0x2fa5ba];return _0x38aa4b;};'use strict';var _=require('lodash');var util=require(_0x0f8e('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x0f8e('0x1'));var BPromise=require(_0x0f8e('0x2'));var rp=require(_0x0f8e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0f8e('0x4'));var config=require('../../config/environment');var attributes=require(_0x0f8e('0x5'));module['exports']=function(_0x30d830,_0x3268d4){return _0x30d830[_0x0f8e('0x6')](_0x0f8e('0x7'),attributes,{'tableName':_0x0f8e('0x8'),'paranoid':![],'indexes':[{'name':_0x0f8e('0x9'),'fields':['membername','interface']}],'timestamps':!![]});};
\ No newline at end of file
index 60a4194..a77b2a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['model','then','MemberReport','create','CreateMemberReport','catch','UpdateMemberReport','update','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','MemberReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','GetMemberReport','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xfcf0,0x138));var _0x0fcf=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0xfcf0[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var moment=require('moment');var BPromise=require(_0x0fcf('0x2'));var rs=require(_0x0fcf('0x3'));var fs=require('fs');var Redis=require(_0x0fcf('0x4'));var db=require(_0x0fcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fcf('0x6'))(_0x0fcf('0x7'));var config=require(_0x0fcf('0x8'));var jayson=require(_0x0fcf('0x9'));var client=jayson[_0x0fcf('0xa')][_0x0fcf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x61bbb9,_0x2dfdf8,_0x50c575){return new BPromise(function(_0x1388d1,_0x6ced94){return client[_0x0fcf('0xc')](_0x61bbb9,_0x50c575)['then'](function(_0x69a840){logger[_0x0fcf('0xd')](_0x0fcf('0xe'),_0x2dfdf8,'request\x20sent');logger[_0x0fcf('0xf')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x2dfdf8,_0x0fcf('0x10'),JSON[_0x0fcf('0x11')](_0x69a840));if(_0x69a840[_0x0fcf('0x12')]){if(_0x69a840['error']['code']===0x1f4){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x6ced94(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x1388d1(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}else{logger['info'](_0x0fcf('0xe'),_0x2dfdf8,_0x0fcf('0x10'));_0x1388d1(_0x69a840[_0x0fcf('0x14')][_0x0fcf('0x13')]);}})['catch'](function(_0x3e78d0){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x3e78d0);_0x6ced94(_0x3e78d0);});});}exports[_0x0fcf('0x15')]=function(_0x19cfbd){var _0x567320=this;return new Promise(function(_0x18ea32,_0x1a8f58){return db['MemberReport'][_0x0fcf('0x16')]({'raw':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'where':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x19')]||null:null,'attributes':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1a')]||null:null,'limit':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x1b')]||null:null,'include':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x19cfbd[_0x0fcf('0x17')]['include'],function(_0x2eef74){return{'model':db[_0x2eef74[_0x0fcf('0x1e')]],'as':_0x2eef74['as'],'attributes':_0x2eef74[_0x0fcf('0x1a')],'include':_0x2eef74[_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x2eef74[_0x0fcf('0x1c')],function(_0x2ce990){return{'model':db[_0x2ce990[_0x0fcf('0x1e')]],'as':_0x2ce990['as'],'attributes':_0x2ce990[_0x0fcf('0x1a')],'include':_0x2ce990['include']?_[_0x0fcf('0x1d')](_0x2ce990[_0x0fcf('0x1c')],function(_0x41b7a2){return{'model':db[_0x41b7a2[_0x0fcf('0x1e')]],'as':_0x41b7a2['as'],'attributes':_0x41b7a2[_0x0fcf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0fcf('0x1f')](function(_0x2730b0){logger['info'](_0x0fcf('0x15'),_0x19cfbd);logger[_0x0fcf('0xf')](_0x0fcf('0x15'),_0x19cfbd,JSON[_0x0fcf('0x11')](_0x2730b0));_0x18ea32(_0x2730b0);})['catch'](function(_0x5d9bcd){logger['error'](_0x0fcf('0x15'),_0x5d9bcd['message'],_0x19cfbd);_0x1a8f58(_0x567320[_0x0fcf('0x12')](0x1f4,_0x5d9bcd[_0x0fcf('0x13')]));});});};exports['CreateMemberReport']=function(_0xdfd3ec){var _0x117041=this;return new Promise(function(_0xa52f52,_0x161496){return db[_0x0fcf('0x20')][_0x0fcf('0x21')](_0xdfd3ec['body'],{'raw':_0xdfd3ec[_0x0fcf('0x17')]?_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x18')]===undefined?!![]:![]:!![]})[_0x0fcf('0x1f')](function(_0x19488a){logger[_0x0fcf('0xd')]('CreateMemberReport',_0xdfd3ec);logger[_0x0fcf('0xf')](_0x0fcf('0x22'),_0xdfd3ec,JSON[_0x0fcf('0x11')](_0x19488a));_0xa52f52(_0x19488a);})[_0x0fcf('0x23')](function(_0x1656c8){logger[_0x0fcf('0x12')](_0x0fcf('0x22'),_0x1656c8[_0x0fcf('0x13')],_0xdfd3ec);_0x161496(_0x117041[_0x0fcf('0x12')](0x1f4,_0x1656c8[_0x0fcf('0x13')]));});});};exports[_0x0fcf('0x24')]=function(_0x38826c){var _0x2aeef8=this;return new Promise(function(_0x17346e,_0x59a7aa){return db['MemberReport'][_0x0fcf('0x25')](_0x38826c['body'],{'raw':_0x38826c['options']?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38826c[_0x0fcf('0x17')]?_0x38826c['options']['where']||null:null,'attributes':_0x38826c[_0x0fcf('0x17')]?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x1a')]||null:null,'limit':_0x38826c['options']?_0x38826c[_0x0fcf('0x17')][_0x0fcf('0x1b')]||null:null})[_0x0fcf('0x1f')](function(_0x4e139d){logger['info']('UpdateMemberReport',_0x38826c);logger[_0x0fcf('0xf')](_0x0fcf('0x24'),_0x38826c,JSON[_0x0fcf('0x11')](_0x4e139d));_0x17346e(_0x4e139d);})[_0x0fcf('0x23')](function(_0x370699){logger['error'](_0x0fcf('0x24'),_0x370699[_0x0fcf('0x13')],_0x38826c);_0x59a7aa(_0x2aeef8[_0x0fcf('0x12')](0x1f4,_0x370699['message']));});});};
\ No newline at end of file
+var _0x3baf=['model','CreateMemberReport','MemberReport','create','body','limit','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','options','raw','where','attributes','include','map'];(function(_0x1d909a,_0x2aeb17){var _0x1879db=function(_0x260d0d){while(--_0x260d0d){_0x1d909a['push'](_0x1d909a['shift']());}};_0x1879db(++_0x2aeb17);}(_0x3baf,0xf7));var _0xf3ba=function(_0x35e7f5,_0x2c52b8){_0x35e7f5=_0x35e7f5-0x0;var _0x290a15=_0x3baf[_0x35e7f5];return _0x290a15;};'use strict';var _=require(_0xf3ba('0x0'));var util=require(_0xf3ba('0x1'));var moment=require(_0xf3ba('0x2'));var BPromise=require(_0xf3ba('0x3'));var rs=require(_0xf3ba('0x4'));var fs=require('fs');var Redis=require(_0xf3ba('0x5'));var db=require(_0xf3ba('0x6'))['db'];var utils=require(_0xf3ba('0x7'));var logger=require(_0xf3ba('0x8'))(_0xf3ba('0x9'));var config=require(_0xf3ba('0xa'));var jayson=require(_0xf3ba('0xb'));var client=jayson[_0xf3ba('0xc')][_0xf3ba('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1284b7,_0x4de144,_0x579135){return new BPromise(function(_0x5ab058,_0x32f810){return client['request'](_0x1284b7,_0x579135)[_0xf3ba('0xe')](function(_0x1a2166){logger[_0xf3ba('0xf')](_0xf3ba('0x10'),_0x4de144,_0xf3ba('0x11'));logger[_0xf3ba('0x12')](_0xf3ba('0x13'),_0x4de144,_0xf3ba('0x11'),JSON[_0xf3ba('0x14')](_0x1a2166));if(_0x1a2166[_0xf3ba('0x15')]){if(_0x1a2166[_0xf3ba('0x15')][_0xf3ba('0x16')]===0x1f4){logger[_0xf3ba('0x15')](_0xf3ba('0x10'),_0x4de144,_0x1a2166[_0xf3ba('0x15')][_0xf3ba('0x17')]);return _0x32f810(_0x1a2166[_0xf3ba('0x15')][_0xf3ba('0x17')]);}logger['error'](_0xf3ba('0x10'),_0x4de144,_0x1a2166['error'][_0xf3ba('0x17')]);return _0x5ab058(_0x1a2166[_0xf3ba('0x15')][_0xf3ba('0x17')]);}else{logger[_0xf3ba('0xf')](_0xf3ba('0x10'),_0x4de144,'request\x20sent');_0x5ab058(_0x1a2166[_0xf3ba('0x18')][_0xf3ba('0x17')]);}})[_0xf3ba('0x19')](function(_0x550dd3){logger[_0xf3ba('0x15')](_0xf3ba('0x10'),_0x4de144,_0x550dd3);_0x32f810(_0x550dd3);});});}exports[_0xf3ba('0x1a')]=function(_0x44de40){var _0x4d3c0a=this;return new Promise(function(_0x1e18ed,_0x3b0d9e){return db['MemberReport']['findAll']({'raw':_0x44de40[_0xf3ba('0x1b')]?_0x44de40[_0xf3ba('0x1b')][_0xf3ba('0x1c')]===undefined?!![]:![]:!![],'where':_0x44de40['options']?_0x44de40[_0xf3ba('0x1b')][_0xf3ba('0x1d')]||null:null,'attributes':_0x44de40[_0xf3ba('0x1b')]?_0x44de40[_0xf3ba('0x1b')][_0xf3ba('0x1e')]||null:null,'limit':_0x44de40[_0xf3ba('0x1b')]?_0x44de40[_0xf3ba('0x1b')]['limit']||null:null,'include':_0x44de40['options']?_0x44de40['options'][_0xf3ba('0x1f')]?_[_0xf3ba('0x20')](_0x44de40[_0xf3ba('0x1b')][_0xf3ba('0x1f')],function(_0x2cc01a){return{'model':db[_0x2cc01a['model']],'as':_0x2cc01a['as'],'attributes':_0x2cc01a['attributes'],'include':_0x2cc01a[_0xf3ba('0x1f')]?_[_0xf3ba('0x20')](_0x2cc01a['include'],function(_0x1c9d6a){return{'model':db[_0x1c9d6a[_0xf3ba('0x21')]],'as':_0x1c9d6a['as'],'attributes':_0x1c9d6a['attributes'],'include':_0x1c9d6a['include']?_[_0xf3ba('0x20')](_0x1c9d6a[_0xf3ba('0x1f')],function(_0x5f1709){return{'model':db[_0x5f1709[_0xf3ba('0x21')]],'as':_0x5f1709['as'],'attributes':_0x5f1709[_0xf3ba('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf3ba('0xe')](function(_0x5a880e){logger[_0xf3ba('0xf')]('GetMemberReport',_0x44de40);logger['debug'](_0xf3ba('0x1a'),_0x44de40,JSON[_0xf3ba('0x14')](_0x5a880e));_0x1e18ed(_0x5a880e);})['catch'](function(_0x41c4b1){logger[_0xf3ba('0x15')]('GetMemberReport',_0x41c4b1['message'],_0x44de40);_0x3b0d9e(_0x4d3c0a['error'](0x1f4,_0x41c4b1[_0xf3ba('0x17')]));});});};exports[_0xf3ba('0x22')]=function(_0x47c15f){var _0x16a106=this;return new Promise(function(_0x5b2f0d,_0x48d81c){return db[_0xf3ba('0x23')][_0xf3ba('0x24')](_0x47c15f[_0xf3ba('0x25')],{'raw':_0x47c15f[_0xf3ba('0x1b')]?_0x47c15f[_0xf3ba('0x1b')][_0xf3ba('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x21c300){logger['info'](_0xf3ba('0x22'),_0x47c15f);logger[_0xf3ba('0x12')]('CreateMemberReport',_0x47c15f,JSON[_0xf3ba('0x14')](_0x21c300));_0x5b2f0d(_0x21c300);})[_0xf3ba('0x19')](function(_0x23ccad){logger[_0xf3ba('0x15')]('CreateMemberReport',_0x23ccad[_0xf3ba('0x17')],_0x47c15f);_0x48d81c(_0x16a106['error'](0x1f4,_0x23ccad['message']));});});};exports['UpdateMemberReport']=function(_0x22fde8){var _0x17a2a3=this;return new Promise(function(_0xe4e56a,_0x38e691){return db[_0xf3ba('0x23')]['update'](_0x22fde8[_0xf3ba('0x25')],{'raw':_0x22fde8['options']?_0x22fde8[_0xf3ba('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22fde8[_0xf3ba('0x1b')]?_0x22fde8[_0xf3ba('0x1b')][_0xf3ba('0x1d')]||null:null,'attributes':_0x22fde8[_0xf3ba('0x1b')]?_0x22fde8['options'][_0xf3ba('0x1e')]||null:null,'limit':_0x22fde8[_0xf3ba('0x1b')]?_0x22fde8['options'][_0xf3ba('0x26')]||null:null})[_0xf3ba('0xe')](function(_0x3f60bf){logger[_0xf3ba('0xf')](_0xf3ba('0x27'),_0x22fde8);logger[_0xf3ba('0x12')](_0xf3ba('0x27'),_0x22fde8,JSON['stringify'](_0x3f60bf));_0xe4e56a(_0x3f60bf);})[_0xf3ba('0x19')](function(_0x527092){logger[_0xf3ba('0x15')]('UpdateMemberReport',_0x527092[_0xf3ba('0x17')],_0x22fde8);_0x38e691(_0x17a2a3[_0xf3ba('0x15')](0x1f4,_0x527092[_0xf3ba('0x17')]));});});};
\ No newline at end of file
index 67e4f7c..e270d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3be6=['get','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x3be6,0x6d));var _0x63be=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0x3be6[_0x4ed4d2];return _0x15ae2e;};'use strict';var multer=require(_0x63be('0x0'));var util=require(_0x63be('0x1'));var path=require(_0x63be('0x2'));var timeout=require(_0x63be('0x3'));var express=require(_0x63be('0x4'));var router=express[_0x63be('0x5')]();var fs_extra=require(_0x63be('0x6'));var auth=require(_0x63be('0x7'));var interaction=require(_0x63be('0x8'));var config=require(_0x63be('0x9'));var controller=require(_0x63be('0xa'));router[_0x63be('0xb')]('/',controller['index']);module['exports']=router;
\ No newline at end of file
+var _0xdb1b=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0xdb1b,0x139));var _0xbdb1=function(_0x15f21d,_0x33c142){_0x15f21d=_0x15f21d-0x0;var _0x2434c4=_0xdb1b[_0x15f21d];return _0x2434c4;};'use strict';var multer=require(_0xbdb1('0x0'));var util=require(_0xbdb1('0x1'));var path=require(_0xbdb1('0x2'));var timeout=require(_0xbdb1('0x3'));var express=require('express');var router=express[_0xbdb1('0x4')]();var fs_extra=require(_0xbdb1('0x5'));var auth=require(_0xbdb1('0x6'));var interaction=require(_0xbdb1('0x7'));var config=require(_0xbdb1('0x8'));var controller=require(_0xbdb1('0x9'));router[_0xbdb1('0xa')]('/',controller[_0xbdb1('0xb')]);module[_0xbdb1('0xc')]=router;
\ No newline at end of file
index d4c9f1c..38a4b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb7=['STRING','version','sequelize','exports'];(function(_0x16c2ae,_0x3fad3f){var _0x4d2208=function(_0x2237f7){while(--_0x2237f7){_0x16c2ae['push'](_0x16c2ae['shift']());}};_0x4d2208(++_0x3fad3f);}(_0x9bb7,0x1ae));var _0x79bb=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x9bb7[_0x376b45];return _0x2341b3;};'use strict';var Sequelize=require(_0x79bb('0x0'));module[_0x79bb('0x1')]={'version':{'type':Sequelize[_0x79bb('0x2')],'unique':_0x79bb('0x3')}};
\ No newline at end of file
+var _0x2ff3=['STRING','version','sequelize'];(function(_0x921644,_0x43fb4a){var _0x8c9e92=function(_0x288644){while(--_0x288644){_0x921644['push'](_0x921644['shift']());}};_0x8c9e92(++_0x43fb4a);}(_0x2ff3,0xbc));var _0x32ff=function(_0x22cbd9,_0x6a176c){_0x22cbd9=_0x22cbd9-0x0;var _0x179242=_0x2ff3[_0x22cbd9];return _0x179242;};'use strict';var Sequelize=require(_0x32ff('0x0'));module['exports']={'version':{'type':Sequelize[_0x32ff('0x1')],'unique':_0x32ff('0x2')}};
\ No newline at end of file
index 3e9bc9c..0997e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef0=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','map','query','filters','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x22365a,_0x5a09ec){var _0x315e8e=function(_0x122407){while(--_0x122407){_0x22365a['push'](_0x22365a['shift']());}};_0x315e8e(++_0x5a09ec);}(_0x3ef0,0x1da));var _0x03ef=function(_0x189765,_0x286e3b){_0x189765=_0x189765-0x0;var _0x4bb40f=_0x3ef0[_0x189765];return _0x4bb40f;};'use strict';var emlformat=require(_0x03ef('0x0'));var rimraf=require(_0x03ef('0x1'));var zipdir=require(_0x03ef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x03ef('0x3'));var moment=require(_0x03ef('0x4'));var BPromise=require(_0x03ef('0x5'));var Mustache=require(_0x03ef('0x6'));var util=require('util');var path=require(_0x03ef('0x7'));var sox=require(_0x03ef('0x8'));var csv=require(_0x03ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x03ef('0xa'));var _=require(_0x03ef('0xb'));var squel=require(_0x03ef('0xc'));var crypto=require(_0x03ef('0xd'));var jsforce=require(_0x03ef('0xe'));var deskjs=require(_0x03ef('0xf'));var toCsv=require('to-csv');var querystring=require(_0x03ef('0x10'));var Papa=require(_0x03ef('0x11'));var Redis=require('ioredis');var authService=require(_0x03ef('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x03ef('0x13'));var hardwareService=require(_0x03ef('0x14'));var logger=require(_0x03ef('0x15'))(_0x03ef('0x16'));var utils=require(_0x03ef('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x03ef('0x18'));var db=require(_0x03ef('0x19'))['db'];function respondWithStatusCode(_0x511659,_0xf8b1bf){_0xf8b1bf=_0xf8b1bf||0xcc;return function(_0x227976){if(_0x227976){return _0x511659[_0x03ef('0x1a')](_0xf8b1bf);}return _0x511659[_0x03ef('0x1b')](_0xf8b1bf)[_0x03ef('0x1c')]();};}function respondWithResult(_0x50b0d6,_0x49eb9b){_0x49eb9b=_0x49eb9b||0xc8;return function(_0x273b55){if(_0x273b55){return _0x50b0d6[_0x03ef('0x1b')](_0x49eb9b)[_0x03ef('0x1d')](_0x273b55);}};}function respondWithFilteredResult(_0x468fa5,_0x414bb1){return function(_0x5f1855){if(_0x5f1855){var _0x114f4b=typeof _0x414bb1[_0x03ef('0x1e')]===_0x03ef('0x1f')&&typeof _0x414bb1['limit']===_0x03ef('0x1f');var _0x540ce1=_0x5f1855[_0x03ef('0x20')];var _0x16f30c=_0x114f4b?0x0:_0x414bb1['offset'];var _0x45197a=_0x114f4b?_0x5f1855[_0x03ef('0x20')]:_0x414bb1['offset']+_0x414bb1[_0x03ef('0x21')];var _0x50ba57;if(_0x45197a>=_0x540ce1){_0x45197a=_0x540ce1;_0x50ba57=0xc8;}else{_0x50ba57=0xce;}_0x468fa5[_0x03ef('0x1b')](_0x50ba57);return _0x468fa5[_0x03ef('0x22')](_0x03ef('0x23'),_0x16f30c+'-'+_0x45197a+'/'+_0x540ce1)[_0x03ef('0x1d')](_0x5f1855);}return null;};}function patchUpdates(_0x9b6a16){return function(_0x1bcd92){try{jsonpatch[_0x03ef('0x24')](_0x1bcd92,_0x9b6a16,!![]);}catch(_0x13ed6a){return BPromise[_0x03ef('0x25')](_0x13ed6a);}return _0x1bcd92[_0x03ef('0x26')]();};}function saveUpdates(_0x3c8a9b,_0x544a26){return function(_0x3ff887){if(_0x3ff887){return _0x3ff887['update'](_0x3c8a9b)['then'](function(_0x244be8){return _0x244be8;});}return null;};}function removeEntity(_0x41269c,_0x3c3784){return function(_0x3ba3a7){if(_0x3ba3a7){return _0x3ba3a7[_0x03ef('0x27')]()[_0x03ef('0x28')](function(){_0x41269c[_0x03ef('0x1b')](0xcc)[_0x03ef('0x1c')]();});}};}function handleEntityNotFound(_0x450047,_0xf624cf){return function(_0x3115c7){if(!_0x3115c7){_0x450047[_0x03ef('0x1a')](0x194);}return _0x3115c7;};}function handleError(_0x436d69,_0x140c22){_0x140c22=_0x140c22||0x1f4;return function(_0xf84c3a){logger['error'](_0xf84c3a[_0x03ef('0x29')]);if(_0xf84c3a[_0x03ef('0x2a')]){delete _0xf84c3a[_0x03ef('0x2a')];}_0x436d69[_0x03ef('0x1b')](_0x140c22)[_0x03ef('0x2b')](_0xf84c3a);};}exports[_0x03ef('0x2c')]=function(_0x1c3c08,_0x106bd9){var _0x14fd0c={},_0x1df067={},_0x448ef8={'count':0x0,'rows':[]};var _0x4f12eb=_['map'](db[_0x03ef('0x2d')][_0x03ef('0x2e')],function(_0x44bd40){return{'name':_0x44bd40[_0x03ef('0x2f')],'type':_0x44bd40[_0x03ef('0x30')][_0x03ef('0x31')]};});_0x1df067['model']=_[_0x03ef('0x32')](_0x4f12eb,_0x03ef('0x2a'));_0x1df067[_0x03ef('0x33')]=_['keys'](_0x1c3c08[_0x03ef('0x33')]);_0x1df067[_0x03ef('0x34')]=_['intersection'](_0x1df067[_0x03ef('0x35')],_0x1df067[_0x03ef('0x33')]);_0x14fd0c['attributes']=_[_0x03ef('0x36')](_0x1df067[_0x03ef('0x35')],qs[_0x03ef('0x37')](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x37')]));_0x14fd0c['attributes']=_0x14fd0c[_0x03ef('0x38')]['length']?_0x14fd0c['attributes']:_0x1df067[_0x03ef('0x35')];if(!_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x39')](_0x03ef('0x3a'))){_0x14fd0c['limit']=qs['limit'](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x21')]);_0x14fd0c['offset']=qs[_0x03ef('0x1e')](_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x1e')]);}_0x14fd0c[_0x03ef('0x3b')]=qs['sort'](_0x1c3c08[_0x03ef('0x33')]['sort']);_0x14fd0c['where']=qs[_0x03ef('0x34')](_[_0x03ef('0x3c')](_0x1c3c08[_0x03ef('0x33')],_0x1df067['filters']),_0x4f12eb);if(_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x3d')]){_0x14fd0c[_0x03ef('0x3e')]=_['merge'](_0x14fd0c['where'],{'$or':_[_0x03ef('0x32')](_0x4f12eb,function(_0x3efb00){if(_0x3efb00['type']!==_0x03ef('0x3f')){var _0xd798a7={};_0xd798a7[_0x3efb00[_0x03ef('0x2a')]]={'$like':'%'+_0x1c3c08['query']['filter']+'%'};return _0xd798a7;}})});}_0x14fd0c=_[_0x03ef('0x40')]({},_0x14fd0c,_0x1c3c08['options']);var _0x37e027={'where':_0x14fd0c[_0x03ef('0x3e')]};return db[_0x03ef('0x2d')][_0x03ef('0x20')](_0x37e027)['then'](function(_0x47c977){_0x448ef8['count']=_0x47c977;if(_0x1c3c08[_0x03ef('0x33')][_0x03ef('0x41')]){_0x14fd0c[_0x03ef('0x42')]=[{'all':!![]}];}return db['Migration'][_0x03ef('0x43')](_0x14fd0c);})[_0x03ef('0x28')](function(_0x10f1f9){_0x448ef8['rows']=_0x10f1f9;return _0x448ef8;})[_0x03ef('0x28')](respondWithFilteredResult(_0x106bd9,_0x14fd0c))[_0x03ef('0x44')](handleError(_0x106bd9,null));};
\ No newline at end of file
+var _0x6c4c=['lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','update','then','name','send','index','Migration','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','options','includeAll','include','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x308ab4,_0x2f8e48){var _0x2399cc=function(_0x57a11b){while(--_0x57a11b){_0x308ab4['push'](_0x308ab4['shift']());}};_0x2399cc(++_0x2f8e48);}(_0x6c4c,0xb3));var _0xc6c4=function(_0x3cc798,_0x5828a0){_0x3cc798=_0x3cc798-0x0;var _0x25d6f3=_0x6c4c[_0x3cc798];return _0x25d6f3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc6c4('0x0'));var zipdir=require(_0xc6c4('0x1'));var jsonpatch=require(_0xc6c4('0x2'));var rp=require(_0xc6c4('0x3'));var moment=require(_0xc6c4('0x4'));var BPromise=require(_0xc6c4('0x5'));var Mustache=require(_0xc6c4('0x6'));var util=require(_0xc6c4('0x7'));var path=require(_0xc6c4('0x8'));var sox=require(_0xc6c4('0x9'));var csv=require(_0xc6c4('0xa'));var ejs=require(_0xc6c4('0xb'));var fs=require('fs');var fs_extra=require(_0xc6c4('0xc'));var _=require(_0xc6c4('0xd'));var squel=require(_0xc6c4('0xe'));var crypto=require('crypto');var jsforce=require(_0xc6c4('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc6c4('0xa'));var querystring=require('querystring');var Papa=require(_0xc6c4('0x10'));var Redis=require(_0xc6c4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc6c4('0x12'));var as=require(_0xc6c4('0x13'));var hardwareService=require(_0xc6c4('0x14'));var logger=require(_0xc6c4('0x15'))(_0xc6c4('0x16'));var utils=require(_0xc6c4('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc6c4('0x18'))['db'];function respondWithStatusCode(_0x1cc4b0,_0x472038){_0x472038=_0x472038||0xcc;return function(_0x2fc812){if(_0x2fc812){return _0x1cc4b0[_0xc6c4('0x19')](_0x472038);}return _0x1cc4b0[_0xc6c4('0x1a')](_0x472038)[_0xc6c4('0x1b')]();};}function respondWithResult(_0x201abf,_0x57d598){_0x57d598=_0x57d598||0xc8;return function(_0x117540){if(_0x117540){return _0x201abf['status'](_0x57d598)[_0xc6c4('0x1c')](_0x117540);}};}function respondWithFilteredResult(_0x5e75d1,_0x2df006){return function(_0xef290a){if(_0xef290a){var _0x486005=typeof _0x2df006[_0xc6c4('0x1d')]==='undefined'&&typeof _0x2df006[_0xc6c4('0x1e')]===_0xc6c4('0x1f');var _0x41e75e=_0xef290a[_0xc6c4('0x20')];var _0x770c8d=_0x486005?0x0:_0x2df006[_0xc6c4('0x1d')];var _0x14d69b=_0x486005?_0xef290a[_0xc6c4('0x20')]:_0x2df006['offset']+_0x2df006[_0xc6c4('0x1e')];var _0x3d7fa0;if(_0x14d69b>=_0x41e75e){_0x14d69b=_0x41e75e;_0x3d7fa0=0xc8;}else{_0x3d7fa0=0xce;}_0x5e75d1[_0xc6c4('0x1a')](_0x3d7fa0);return _0x5e75d1['set']('Content-Range',_0x770c8d+'-'+_0x14d69b+'/'+_0x41e75e)[_0xc6c4('0x1c')](_0xef290a);}return null;};}function patchUpdates(_0x2f67c2){return function(_0x4ebcac){try{jsonpatch[_0xc6c4('0x21')](_0x4ebcac,_0x2f67c2,!![]);}catch(_0x1630b1){return BPromise[_0xc6c4('0x22')](_0x1630b1);}return _0x4ebcac[_0xc6c4('0x23')]();};}function saveUpdates(_0x109b14,_0x36d1af){return function(_0x248b22){if(_0x248b22){return _0x248b22[_0xc6c4('0x24')](_0x109b14)[_0xc6c4('0x25')](function(_0xa699c9){return _0xa699c9;});}return null;};}function removeEntity(_0x30b3d9,_0x188615){return function(_0x24a387){if(_0x24a387){return _0x24a387['destroy']()[_0xc6c4('0x25')](function(){_0x30b3d9['status'](0xcc)[_0xc6c4('0x1b')]();});}};}function handleEntityNotFound(_0x578577,_0x42fcb1){return function(_0x1fd288){if(!_0x1fd288){_0x578577[_0xc6c4('0x19')](0x194);}return _0x1fd288;};}function handleError(_0x276f7c,_0x1657ed){_0x1657ed=_0x1657ed||0x1f4;return function(_0x3903a8){logger['error'](_0x3903a8['stack']);if(_0x3903a8[_0xc6c4('0x26')]){delete _0x3903a8[_0xc6c4('0x26')];}_0x276f7c[_0xc6c4('0x1a')](_0x1657ed)[_0xc6c4('0x27')](_0x3903a8);};}exports[_0xc6c4('0x28')]=function(_0x2dc449,_0x5563fa){var _0x1cd98b={},_0x1027e2={},_0x436505={'count':0x0,'rows':[]};var _0x4896fb=_['map'](db[_0xc6c4('0x29')][_0xc6c4('0x2a')],function(_0x2ad8dc){return{'name':_0x2ad8dc[_0xc6c4('0x2b')],'type':_0x2ad8dc[_0xc6c4('0x2c')]['key']};});_0x1027e2['model']=_['map'](_0x4896fb,_0xc6c4('0x26'));_0x1027e2[_0xc6c4('0x2d')]=_[_0xc6c4('0x2e')](_0x2dc449[_0xc6c4('0x2d')]);_0x1027e2['filters']=_[_0xc6c4('0x2f')](_0x1027e2[_0xc6c4('0x30')],_0x1027e2[_0xc6c4('0x2d')]);_0x1cd98b[_0xc6c4('0x31')]=_['intersection'](_0x1027e2[_0xc6c4('0x30')],qs[_0xc6c4('0x32')](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x32')]));_0x1cd98b[_0xc6c4('0x31')]=_0x1cd98b[_0xc6c4('0x31')][_0xc6c4('0x33')]?_0x1cd98b[_0xc6c4('0x31')]:_0x1027e2[_0xc6c4('0x30')];if(!_0x2dc449['query'][_0xc6c4('0x34')](_0xc6c4('0x35'))){_0x1cd98b[_0xc6c4('0x1e')]=qs['limit'](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x1e')]);_0x1cd98b[_0xc6c4('0x1d')]=qs[_0xc6c4('0x1d')](_0x2dc449['query']['offset']);}_0x1cd98b['order']=qs['sort'](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x36')]);_0x1cd98b[_0xc6c4('0x37')]=qs[_0xc6c4('0x38')](_[_0xc6c4('0x39')](_0x2dc449[_0xc6c4('0x2d')],_0x1027e2[_0xc6c4('0x38')]),_0x4896fb);if(_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3a')]){_0x1cd98b['where']=_['merge'](_0x1cd98b[_0xc6c4('0x37')],{'$or':_[_0xc6c4('0x3b')](_0x4896fb,function(_0x5ef092){if(_0x5ef092[_0xc6c4('0x2c')]!=='VIRTUAL'){var _0x493df6={};_0x493df6[_0x5ef092[_0xc6c4('0x26')]]={'$like':'%'+_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3a')]+'%'};return _0x493df6;}})});}_0x1cd98b=_[_0xc6c4('0x3c')]({},_0x1cd98b,_0x2dc449[_0xc6c4('0x3d')]);var _0x55eba3={'where':_0x1cd98b[_0xc6c4('0x37')]};return db[_0xc6c4('0x29')]['count'](_0x55eba3)[_0xc6c4('0x25')](function(_0x25d7ec){_0x436505[_0xc6c4('0x20')]=_0x25d7ec;if(_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3e')]){_0x1cd98b[_0xc6c4('0x3f')]=[{'all':!![]}];}return db[_0xc6c4('0x29')]['findAll'](_0x1cd98b);})['then'](function(_0xe3b34){_0x436505['rows']=_0xe3b34;return _0x436505;})['then'](respondWithFilteredResult(_0x5563fa,_0x1cd98b))['catch'](handleError(_0x5563fa,null));};
\ No newline at end of file
index 1d3d46f..4ba1e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218d=['lodash','util','moment','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','migrations'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0x218d,0x108));var _0xd218=function(_0x2a57b7,_0x3c0a55){_0x2a57b7=_0x2a57b7-0x0;var _0x259174=_0x218d[_0x2a57b7];return _0x259174;};'use strict';var _=require(_0xd218('0x0'));var util=require(_0xd218('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd218('0x2'));var BPromise=require('bluebird');var rp=require(_0xd218('0x3'));var fs=require('fs');var path=require(_0xd218('0x4'));var rimraf=require(_0xd218('0x5'));var config=require(_0xd218('0x6'));var attributes=require(_0xd218('0x7'));module[_0xd218('0x8')]=function(_0x7d4df8,_0x4fef7c){return _0x7d4df8[_0xd218('0x9')](_0xd218('0xa'),attributes,{'tableName':_0xd218('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7bd8=['exports','define','Migration','migrations','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./migration.attributes'];(function(_0x14fd2e,_0x4e2039){var _0x3b260a=function(_0x18eba7){while(--_0x18eba7){_0x14fd2e['push'](_0x14fd2e['shift']());}};_0x3b260a(++_0x4e2039);}(_0x7bd8,0x108));var _0x87bd=function(_0x4c834b,_0x1d2a71){_0x4c834b=_0x4c834b-0x0;var _0x2fb858=_0x7bd8[_0x4c834b];return _0x2fb858;};'use strict';var _=require(_0x87bd('0x0'));var util=require(_0x87bd('0x1'));var logger=require(_0x87bd('0x2'))(_0x87bd('0x3'));var moment=require(_0x87bd('0x4'));var BPromise=require('bluebird');var rp=require(_0x87bd('0x5'));var fs=require('fs');var path=require(_0x87bd('0x6'));var rimraf=require('rimraf');var config=require(_0x87bd('0x7'));var attributes=require(_0x87bd('0x8'));module[_0x87bd('0x9')]=function(_0x5af210,_0x1a2c81){return _0x5af210[_0x87bd('0xa')](_0x87bd('0xb'),attributes,{'tableName':_0x87bd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a705e0..8b91aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b29=['then','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request'];(function(_0x391696,_0x2ad389){var _0x192415=function(_0x4133a6){while(--_0x4133a6){_0x391696['push'](_0x391696['shift']());}};_0x192415(++_0x2ad389);}(_0x8b29,0xbe));var _0x98b2=function(_0x1a9755,_0x426160){_0x1a9755=_0x1a9755-0x0;var _0x1054fd=_0x8b29[_0x1a9755];return _0x1054fd;};'use strict';var _=require(_0x98b2('0x0'));var util=require('util');var moment=require(_0x98b2('0x1'));var BPromise=require(_0x98b2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98b2('0x3'))['db'];var utils=require(_0x98b2('0x4'));var logger=require('../../config/logger')(_0x98b2('0x5'));var config=require('../../config/environment');var jayson=require(_0x98b2('0x6'));var client=jayson[_0x98b2('0x7')][_0x98b2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e7ef5,_0x221cee,_0x2cd0cb){return new BPromise(function(_0x417ca6,_0x388827){return client[_0x98b2('0x9')](_0x3e7ef5,_0x2cd0cb)[_0x98b2('0xa')](function(_0x501b51){logger['info'](_0x98b2('0xb'),_0x221cee,_0x98b2('0xc'));logger[_0x98b2('0xd')](_0x98b2('0xe'),_0x221cee,_0x98b2('0xc'),JSON[_0x98b2('0xf')](_0x501b51));if(_0x501b51['error']){if(_0x501b51[_0x98b2('0x10')][_0x98b2('0x11')]===0x1f4){logger['error'](_0x98b2('0xb'),_0x221cee,_0x501b51[_0x98b2('0x10')][_0x98b2('0x12')]);return _0x388827(_0x501b51['error']['message']);}logger[_0x98b2('0x10')]('Migration,\x20%s,\x20%s',_0x221cee,_0x501b51[_0x98b2('0x10')]['message']);return _0x417ca6(_0x501b51['error']['message']);}else{logger[_0x98b2('0x13')](_0x98b2('0xb'),_0x221cee,_0x98b2('0xc'));_0x417ca6(_0x501b51['result']['message']);}})['catch'](function(_0x389d22){logger[_0x98b2('0x10')](_0x98b2('0xb'),_0x221cee,_0x389d22);_0x388827(_0x389d22);});});}
\ No newline at end of file
+var _0x3d15=['debug','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','Migration,\x20%s,\x20%s'];(function(_0x227eca,_0x121ee9){var _0x5deb37=function(_0x6fa32e){while(--_0x6fa32e){_0x227eca['push'](_0x227eca['shift']());}};_0x5deb37(++_0x121ee9);}(_0x3d15,0x127));var _0x53d1=function(_0x443fda,_0xb06d0a){_0x443fda=_0x443fda-0x0;var _0x58360d=_0x3d15[_0x443fda];return _0x58360d;};'use strict';var _=require('lodash');var util=require(_0x53d1('0x0'));var moment=require(_0x53d1('0x1'));var BPromise=require('bluebird');var rs=require(_0x53d1('0x2'));var fs=require('fs');var Redis=require(_0x53d1('0x3'));var db=require(_0x53d1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x53d1('0x5'))(_0x53d1('0x6'));var config=require(_0x53d1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x53d1('0x8')][_0x53d1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b4385,_0x8abe67,_0x32dfe1){return new BPromise(function(_0x1c4833,_0x49309e){return client[_0x53d1('0xa')](_0x4b4385,_0x32dfe1)[_0x53d1('0xb')](function(_0x59f965){logger['info'](_0x53d1('0xc'),_0x8abe67,'request\x20sent');logger[_0x53d1('0xd')](_0x53d1('0xe'),_0x8abe67,_0x53d1('0xf'),JSON[_0x53d1('0x10')](_0x59f965));if(_0x59f965[_0x53d1('0x11')]){if(_0x59f965[_0x53d1('0x11')][_0x53d1('0x12')]===0x1f4){logger[_0x53d1('0x11')]('Migration,\x20%s,\x20%s',_0x8abe67,_0x59f965[_0x53d1('0x11')][_0x53d1('0x13')]);return _0x49309e(_0x59f965[_0x53d1('0x11')][_0x53d1('0x13')]);}logger[_0x53d1('0x11')](_0x53d1('0xc'),_0x8abe67,_0x59f965[_0x53d1('0x11')][_0x53d1('0x13')]);return _0x1c4833(_0x59f965[_0x53d1('0x11')][_0x53d1('0x13')]);}else{logger[_0x53d1('0x14')](_0x53d1('0xc'),_0x8abe67,_0x53d1('0xf'));_0x1c4833(_0x59f965['result'][_0x53d1('0x13')]);}})[_0x53d1('0x15')](function(_0x4438ef){logger['error'](_0x53d1('0xc'),_0x8abe67,_0x4438ef);_0x49309e(_0x4438ef);});});}
\ No newline at end of file
index 2459c1c..fe69cfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c8=['update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','/:id','show','post','create'];(function(_0x2bd561,_0x3bfb98){var _0x21d67c=function(_0x1fff8a){while(--_0x1fff8a){_0x2bd561['push'](_0x2bd561['shift']());}};_0x21d67c(++_0x3bfb98);}(_0xa2c8,0x81));var _0x8a2c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2c8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x8a2c('0x0'));var util=require(_0x8a2c('0x1'));var path=require(_0x8a2c('0x2'));var timeout=require(_0x8a2c('0x3'));var express=require('express');var router=express[_0x8a2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8a2c('0x5'));var interaction=require(_0x8a2c('0x6'));var config=require(_0x8a2c('0x7'));var controller=require(_0x8a2c('0x8'));router[_0x8a2c('0x9')]('/',auth[_0x8a2c('0xa')](),controller['index']);router[_0x8a2c('0x9')](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xc')]);router[_0x8a2c('0xd')]('/',auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xe')]);router['put'](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0xf')]);router[_0x8a2c('0x10')](_0x8a2c('0xb'),auth[_0x8a2c('0xa')](),controller[_0x8a2c('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7eff=['put','destroy','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x4a3f60,_0xfd6ff7){var _0x175cb7=function(_0x34c9fc){while(--_0x34c9fc){_0x4a3f60['push'](_0x4a3f60['shift']());}};_0x175cb7(++_0xfd6ff7);}(_0x7eff,0x162));var _0xf7ef=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7eff[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0xf7ef('0x0'));var path=require(_0xf7ef('0x1'));var timeout=require(_0xf7ef('0x2'));var express=require('express');var router=express[_0xf7ef('0x3')]();var fs_extra=require(_0xf7ef('0x4'));var auth=require(_0xf7ef('0x5'));var interaction=require(_0xf7ef('0x6'));var config=require('../../config/environment');var controller=require('./network.controller');router[_0xf7ef('0x7')]('/',auth[_0xf7ef('0x8')](),controller[_0xf7ef('0x9')]);router[_0xf7ef('0x7')](_0xf7ef('0xa'),auth[_0xf7ef('0x8')](),controller[_0xf7ef('0xb')]);router[_0xf7ef('0xc')]('/',auth['isAuthenticated'](),controller[_0xf7ef('0xd')]);router[_0xf7ef('0xe')]('/:id',auth[_0xf7ef('0x8')](),controller['update']);router['delete'](_0xf7ef('0xa'),auth['isAuthenticated'](),controller[_0xf7ef('0xf')]);module['exports']=router;
\ No newline at end of file
index 01885fb..61c78c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56bb=['STRING','sequelize','exports','ENUM','localnet','externip','stun','turn'];(function(_0x167c17,_0x267da6){var _0x1f1ec3=function(_0x562b43){while(--_0x562b43){_0x167c17['push'](_0x167c17['shift']());}};_0x1f1ec3(++_0x267da6);}(_0x56bb,0x131));var _0xb56b=function(_0x515787,_0xc0ba8c){_0x515787=_0x515787-0x0;var _0x45768=_0x56bb[_0x515787];return _0x45768;};'use strict';var Sequelize=require(_0xb56b('0x0'));module[_0xb56b('0x1')]={'type':{'type':Sequelize[_0xb56b('0x2')](_0xb56b('0x3'),_0xb56b('0x4'),_0xb56b('0x5'),_0xb56b('0x6'))},'value':{'type':Sequelize[_0xb56b('0x7')]},'username':{'type':Sequelize[_0xb56b('0x7')]},'password':{'type':Sequelize[_0xb56b('0x7')]}};
\ No newline at end of file
+var _0xa861=['exports','externip','stun','STRING','sequelize'];(function(_0x9c86cd,_0x50c5fd){var _0x4d10ab=function(_0x1d5a9e){while(--_0x1d5a9e){_0x9c86cd['push'](_0x9c86cd['shift']());}};_0x4d10ab(++_0x50c5fd);}(_0xa861,0xd6));var _0x1a86=function(_0x2d89ce,_0x24d58d){_0x2d89ce=_0x2d89ce-0x0;var _0x3fad10=_0xa861[_0x2d89ce];return _0x3fad10;};'use strict';var Sequelize=require(_0x1a86('0x0'));module[_0x1a86('0x1')]={'type':{'type':Sequelize['ENUM']('localnet',_0x1a86('0x2'),_0x1a86('0x3'),'turn')},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1a86('0x4')]},'password':{'type':Sequelize[_0x1a86('0x4')]}};
\ No newline at end of file
index 654ecc0..907e2a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['nolimit','order','sort','pick','merge','where','VIRTUAL','options','includeAll','include','findAll','show','params','rawAttributes','find','create','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','root','/etc/asterisk/turn_xcally.conf','chan_sip.so','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','client','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','sendStatus','stack','name','map','Network','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x524a,0xf5));var _0xa524=function(_0x194ed2,_0x251290){_0x194ed2=_0x194ed2-0x0;var _0x44cb48=_0x524a[_0x194ed2];return _0x44cb48;};'use strict';var emlformat=require(_0xa524('0x0'));var rimraf=require(_0xa524('0x1'));var zipdir=require(_0xa524('0x2'));var jsonpatch=require(_0xa524('0x3'));var rp=require('request-promise');var moment=require(_0xa524('0x4'));var BPromise=require(_0xa524('0x5'));var Mustache=require(_0xa524('0x6'));var util=require('util');var path=require('path');var sox=require(_0xa524('0x7'));var csv=require(_0xa524('0x8'));var ejs=require(_0xa524('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa524('0xa'));var squel=require('squel');var crypto=require(_0xa524('0xb'));var jsforce=require(_0xa524('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa524('0x8'));var querystring=require(_0xa524('0xd'));var Papa=require(_0xa524('0xe'));var Redis=require(_0xa524('0xf'));var authService=require(_0xa524('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa524('0x11'));var hardwareService=require(_0xa524('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xa524('0x13'));var config=require(_0xa524('0x14'));var licenseUtil=require(_0xa524('0x15'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xa524('0x16')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f4ffc,_0x494cff,_0x2c0864,_0x5c7e6a){return new BPromise(function(_0x75bfe8,_0x281137){var _0x59620d=_0x5c7e6a||client;return _0x59620d[_0xa524('0x17')](_0x3f4ffc,_0x2c0864)[_0xa524('0x18')](function(_0xe85361){logger[_0xa524('0x19')](_0xa524('0x1a'),_0x494cff,_0xa524('0x1b'));logger[_0xa524('0x1c')]('Network,\x20%s,\x20%s,\x20%s',_0x494cff,_0xa524('0x1b'),JSON[_0xa524('0x1d')](_0xe85361));if(_0xe85361[_0xa524('0x1e')]){if(_0xe85361[_0xa524('0x1e')][_0xa524('0x1f')]===0x1f4){logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0xe85361[_0xa524('0x1e')]['message']);return _0x281137(_0xe85361[_0xa524('0x1e')][_0xa524('0x20')]);}logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0xe85361['error']['message']);return _0x75bfe8(_0xe85361[_0xa524('0x1e')][_0xa524('0x20')]);}else{logger[_0xa524('0x19')](_0xa524('0x1a'),_0x494cff,_0xa524('0x1b'));_0x75bfe8(_0xe85361[_0xa524('0x21')]['message']);}})[_0xa524('0x22')](function(_0x18c2bb){logger[_0xa524('0x1e')](_0xa524('0x1a'),_0x494cff,_0x18c2bb);_0x281137(_0x18c2bb);});});}function respondWithStatusCode(_0x226784,_0x45cdcc){_0x45cdcc=_0x45cdcc||0xcc;return function(_0x26e931){if(_0x26e931){return _0x226784['sendStatus'](_0x45cdcc);}return _0x226784[_0xa524('0x23')](_0x45cdcc)[_0xa524('0x24')]();};}function respondWithResult(_0x5de496,_0x47efb3){_0x47efb3=_0x47efb3||0xc8;return function(_0x24d1bc){if(_0x24d1bc){return _0x5de496[_0xa524('0x23')](_0x47efb3)[_0xa524('0x25')](_0x24d1bc);}};}function respondWithFilteredResult(_0x364b8c,_0x131356){return function(_0x546060){if(_0x546060){var _0x4f484a=typeof _0x131356[_0xa524('0x26')]===_0xa524('0x27')&&typeof _0x131356[_0xa524('0x28')]===_0xa524('0x27');var _0x505c42=_0x546060[_0xa524('0x29')];var _0x32ba03=_0x4f484a?0x0:_0x131356['offset'];var _0x27f53a=_0x4f484a?_0x546060[_0xa524('0x29')]:_0x131356['offset']+_0x131356[_0xa524('0x28')];var _0x5f03ad;if(_0x27f53a>=_0x505c42){_0x27f53a=_0x505c42;_0x5f03ad=0xc8;}else{_0x5f03ad=0xce;}_0x364b8c[_0xa524('0x23')](_0x5f03ad);return _0x364b8c[_0xa524('0x2a')](_0xa524('0x2b'),_0x32ba03+'-'+_0x27f53a+'/'+_0x505c42)[_0xa524('0x25')](_0x546060);}return null;};}function patchUpdates(_0x136e83){return function(_0x1c706b){try{jsonpatch[_0xa524('0x2c')](_0x1c706b,_0x136e83,!![]);}catch(_0x201545){return BPromise[_0xa524('0x2d')](_0x201545);}return _0x1c706b['save']();};}function saveUpdates(_0x535e41,_0x1b39f1){return function(_0x52dd9f){if(_0x52dd9f){return _0x52dd9f['update'](_0x535e41)[_0xa524('0x18')](function(_0x5ffa3e){return _0x5ffa3e;});}return null;};}function removeEntity(_0x35a9ae,_0xdf8a48){return function(_0x541ad2){if(_0x541ad2){return _0x541ad2['destroy']()[_0xa524('0x18')](function(){_0x35a9ae['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x268341,_0x318ea0){return function(_0x935497){if(!_0x935497){_0x268341[_0xa524('0x2e')](0x194);}return _0x935497;};}function handleError(_0x1bf6f6,_0x15f3dd){_0x15f3dd=_0x15f3dd||0x1f4;return function(_0x9bb038){logger[_0xa524('0x1e')](_0x9bb038[_0xa524('0x2f')]);if(_0x9bb038[_0xa524('0x30')]){delete _0x9bb038[_0xa524('0x30')];}_0x1bf6f6[_0xa524('0x23')](_0x15f3dd)['send'](_0x9bb038);};}exports['index']=function(_0x5f0c8b,_0x31473e){var _0x35bee1={},_0x4c5b8b={},_0x1286a8={'count':0x0,'rows':[]};var _0x51fd42=_[_0xa524('0x31')](db[_0xa524('0x32')]['rawAttributes'],function(_0x208822){return{'name':_0x208822[_0xa524('0x33')],'type':_0x208822[_0xa524('0x34')]['key']};});_0x4c5b8b[_0xa524('0x35')]=_[_0xa524('0x31')](_0x51fd42,'name');_0x4c5b8b[_0xa524('0x36')]=_[_0xa524('0x37')](_0x5f0c8b['query']);_0x4c5b8b[_0xa524('0x38')]=_[_0xa524('0x39')](_0x4c5b8b['model'],_0x4c5b8b[_0xa524('0x36')]);_0x35bee1[_0xa524('0x3a')]=_[_0xa524('0x39')](_0x4c5b8b[_0xa524('0x35')],qs[_0xa524('0x3b')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x3b')]));_0x35bee1[_0xa524('0x3a')]=_0x35bee1[_0xa524('0x3a')][_0xa524('0x3c')]?_0x35bee1[_0xa524('0x3a')]:_0x4c5b8b['model'];if(!_0x5f0c8b[_0xa524('0x36')]['hasOwnProperty'](_0xa524('0x3d'))){_0x35bee1[_0xa524('0x28')]=qs[_0xa524('0x28')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x28')]);_0x35bee1[_0xa524('0x26')]=qs[_0xa524('0x26')](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x26')]);}_0x35bee1[_0xa524('0x3e')]=qs['sort'](_0x5f0c8b[_0xa524('0x36')][_0xa524('0x3f')]);_0x35bee1['where']=qs[_0xa524('0x38')](_[_0xa524('0x40')](_0x5f0c8b['query'],_0x4c5b8b['filters']),_0x51fd42);if(_0x5f0c8b['query']['filter']){_0x35bee1['where']=_[_0xa524('0x41')](_0x35bee1[_0xa524('0x42')],{'$or':_[_0xa524('0x31')](_0x51fd42,function(_0x16c6db){if(_0x16c6db['type']!==_0xa524('0x43')){var _0x44b3e8={};_0x44b3e8[_0x16c6db[_0xa524('0x30')]]={'$like':'%'+_0x5f0c8b[_0xa524('0x36')]['filter']+'%'};return _0x44b3e8;}})});}_0x35bee1=_[_0xa524('0x41')]({},_0x35bee1,_0x5f0c8b[_0xa524('0x44')]);var _0x21dce0={'where':_0x35bee1[_0xa524('0x42')]};return db[_0xa524('0x32')]['count'](_0x21dce0)[_0xa524('0x18')](function(_0xc3b40b){_0x1286a8[_0xa524('0x29')]=_0xc3b40b;if(_0x5f0c8b[_0xa524('0x36')][_0xa524('0x45')]){_0x35bee1[_0xa524('0x46')]=[{'all':!![]}];}return db[_0xa524('0x32')][_0xa524('0x47')](_0x35bee1);})[_0xa524('0x18')](function(_0x4cee61){_0x1286a8['rows']=_0x4cee61;return _0x1286a8;})[_0xa524('0x18')](respondWithFilteredResult(_0x31473e,_0x35bee1))[_0xa524('0x22')](handleError(_0x31473e,null));};exports[_0xa524('0x48')]=function(_0x1d444e,_0x8d2011){var _0xddc80={'raw':!![],'where':{'id':_0x1d444e[_0xa524('0x49')]['id']}},_0x56e570={};_0x56e570[_0xa524('0x35')]=_[_0xa524('0x37')](db[_0xa524('0x32')][_0xa524('0x4a')]);_0x56e570[_0xa524('0x36')]=_['keys'](_0x1d444e[_0xa524('0x36')]);_0x56e570[_0xa524('0x38')]=_[_0xa524('0x39')](_0x56e570[_0xa524('0x35')],_0x56e570[_0xa524('0x36')]);_0xddc80[_0xa524('0x3a')]=_[_0xa524('0x39')](_0x56e570[_0xa524('0x35')],qs[_0xa524('0x3b')](_0x1d444e[_0xa524('0x36')][_0xa524('0x3b')]));_0xddc80[_0xa524('0x3a')]=_0xddc80[_0xa524('0x3a')][_0xa524('0x3c')]?_0xddc80[_0xa524('0x3a')]:_0x56e570['model'];if(_0x1d444e[_0xa524('0x36')][_0xa524('0x45')]){_0xddc80['include']=[{'all':!![]}];}_0xddc80=_['merge']({},_0xddc80,_0x1d444e[_0xa524('0x44')]);return db[_0xa524('0x32')][_0xa524('0x4b')](_0xddc80)[_0xa524('0x18')](handleEntityNotFound(_0x8d2011,null))[_0xa524('0x18')](respondWithResult(_0x8d2011,null))[_0xa524('0x22')](handleError(_0x8d2011,null));};exports[_0xa524('0x4c')]=function(_0x4e3709,_0x1d9552,_0x1a64f0){var _0x3eca53;return db[_0xa524('0x4d')][_0xa524('0x4e')](function(_0x481e0d){return db[_0xa524('0x32')]['create'](_0x4e3709[_0xa524('0x4f')],{'raw':!![]})[_0xa524('0x18')](function(_0x1441da){_0x3eca53=_0x1441da;return db[_0xa524('0x32')][_0xa524('0x47')]({'where':{'type':_0x4e3709[_0xa524('0x4f')][_0xa524('0x34')]},'raw':!![]});})['then'](function(_0x5ec750){if(_0x3eca53[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x4f354d=fs[_0xa524('0x52')](path[_0xa524('0x53')](config['root'],_0xa524('0x54')),_0xa524('0x55'));var _0x1563ef=ejs[_0xa524('0x56')](_0x4f354d,{'networks':_0x5ec750||[]});fs[_0xa524('0x57')](_0xa524('0x58'),_0x1563ef);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':_0xa524('0x5a')});}else if(_0x3eca53[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x5b')){var _0x5f2de3=fs[_0xa524('0x52')](path[_0xa524('0x53')](config['root'],_0xa524('0x5c')),_0xa524('0x55'));var _0x361a55=ejs[_0xa524('0x56')](_0x5f2de3,{'networks':_0x5ec750||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x361a55);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':'res_stun_monitor.so'});}else{var _0x593510=fs[_0xa524('0x52')](path['join'](config['root'],_0xa524('0x5d')),_0xa524('0x55'));var _0x1675de=ejs[_0xa524('0x56')](_0x593510,{'networks':_0x5ec750||[]});fs['writeFileSync'](util[_0xa524('0x5e')](_0xa524('0x5f'),_0x4e3709[_0xa524('0x4f')]['type'][_0xa524('0x60')]()),_0x1675de);return respondWithRpcPromise(_0xa524('0x59'),'create',{'module':'chan_sip.so'});}return null;})[_0xa524('0x18')](function(){return _0x3eca53;});})[_0xa524('0x18')](respondWithResult(_0x1d9552,0xc9))[_0xa524('0x22')](handleError(_0x1d9552,null));};exports[_0xa524('0x61')]=function(_0x573e49,_0x4d1f65,_0x300bb7){var _0x102629;return db[_0xa524('0x4d')]['transaction'](function(_0x5d6ff3){return db[_0xa524('0x32')]['find']({'where':{'id':_0x573e49['params']['id']}})['then'](handleEntityNotFound(_0x4d1f65,null))['then'](saveUpdates(_0x573e49[_0xa524('0x4f')],null))[_0xa524('0x18')](function(_0x5a5ce4){if(_0x5a5ce4){_0x102629=_0x5a5ce4;return db['Network'][_0xa524('0x47')]({'where':{'type':_0x102629[_0xa524('0x34')]},'raw':!![]});}return null;})['then'](function(_0x45c52e){if(_0x102629[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x36d2f8=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x54')),_0xa524('0x55'));var _0x57e7d8=ejs[_0xa524('0x56')](_0x36d2f8,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](_0xa524('0x58'),_0x57e7d8);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':_0xa524('0x5a')});}else if(_0x102629['type']['toUpperCase']()==_0xa524('0x5b')){var _0x57e088=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5c')),_0xa524('0x55'));var _0x3eb928=ejs[_0xa524('0x56')](_0x57e088,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](_0xa524('0x63'),_0x3eb928);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':'res_stun_monitor.so'});}else{var _0x319119=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5d')),_0xa524('0x55'));var _0x54d86b=ejs[_0xa524('0x56')](_0x319119,{'networks':_0x45c52e||[]});fs[_0xa524('0x57')](util[_0xa524('0x5e')]('/etc/asterisk/sip_xcally_%s.conf',_0x573e49['body'][_0xa524('0x34')][_0xa524('0x60')]()),_0x54d86b);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x61'),{'module':_0xa524('0x64')});}return null;})[_0xa524('0x18')](function(_0x780cf7){if(_0x780cf7){return _0x102629;}return null;});})[_0xa524('0x18')](respondWithResult(_0x4d1f65,null))[_0xa524('0x22')](handleError(_0x4d1f65,null));};exports['destroy']=function(_0x1b9563,_0x3d65a1,_0x5100f9){var _0x1b3ebe;return db[_0xa524('0x32')][_0xa524('0x4b')]({'where':{'id':_0x1b9563[_0xa524('0x49')]['id']}})[_0xa524('0x18')](function(_0x4529db){_0x1b3ebe=_0x4529db;return _0x4529db;})['then'](handleEntityNotFound(_0x3d65a1,null))['then'](removeEntity(_0x3d65a1,null))['then'](function(){if(_0x1b3ebe){return db[_0xa524('0x32')]['findAll']({'where':{'type':_0x1b3ebe['type']},'raw':!![]});}})[_0xa524('0x18')](function(_0x297723){if(_0x1b3ebe[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x51')){var _0x5598be=fs['readFileSync'](path[_0xa524('0x53')](config[_0xa524('0x62')],'server/files/templates/stun_multiple.ejs'),_0xa524('0x55'));var _0x5e8bc2=ejs[_0xa524('0x56')](_0x5598be,{'networks':_0x297723||[]});fs[_0xa524('0x57')]('/etc/asterisk/stun_xcally.conf',_0x5e8bc2);return respondWithRpcPromise(_0xa524('0x59'),'destroy',{'module':'res_stun_monitor.so'});}else if(_0x1b3ebe[_0xa524('0x34')][_0xa524('0x50')]()==_0xa524('0x5b')){var _0x38e170=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],_0xa524('0x5c')),_0xa524('0x55'));var _0x47220d=ejs['render'](_0x38e170,{'networks':_0x297723||[]});fs[_0xa524('0x57')](_0xa524('0x63'),_0x47220d);return respondWithRpcPromise(_0xa524('0x59'),_0xa524('0x65'),{'module':_0xa524('0x5a')});}else{var _0x3a3b99=fs[_0xa524('0x52')](path[_0xa524('0x53')](config[_0xa524('0x62')],'server/files/templates/network.ejs'),_0xa524('0x55'));var _0x4d284c=ejs[_0xa524('0x56')](_0x3a3b99,{'networks':_0x297723||[]});fs[_0xa524('0x57')](util[_0xa524('0x5e')](_0xa524('0x5f'),_0x1b9563[_0xa524('0x4f')]['type']['toLowerCase']()),_0x4d284c);return respondWithRpcPromise('Reload','destroy',{'module':_0xa524('0x64')});}return null;})[_0xa524('0x22')](handleError(_0x3d65a1,null));};
\ No newline at end of file
+var _0x4e41=['VIRTUAL','filter','options','include','rows','params','includeAll','find','create','sequelize','transaction','body','findAll','type','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','render','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','update','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','chan_sip.so','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','code','Network,\x20%s,\x20%s','message','catch','status','end','offset','count','limit','Content-Range','json','apply','save','destroy','then','sendStatus','stack','name','send','map','Network','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e41,0xf7));var _0x14e4=function(_0x554d75,_0x571688){_0x554d75=_0x554d75-0x0;var _0x2b6694=_0x4e41[_0x554d75];return _0x2b6694;};'use strict';var emlformat=require(_0x14e4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x14e4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x14e4('0x2'));var moment=require(_0x14e4('0x3'));var BPromise=require(_0x14e4('0x4'));var Mustache=require('mustache');var util=require(_0x14e4('0x5'));var path=require(_0x14e4('0x6'));var sox=require(_0x14e4('0x7'));var csv=require('to-csv');var ejs=require(_0x14e4('0x8'));var fs=require('fs');var fs_extra=require(_0x14e4('0x9'));var _=require(_0x14e4('0xa'));var squel=require(_0x14e4('0xb'));var crypto=require(_0x14e4('0xc'));var jsforce=require(_0x14e4('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x14e4('0xe'));var querystring=require(_0x14e4('0xf'));var Papa=require(_0x14e4('0x10'));var Redis=require(_0x14e4('0x11'));var authService=require(_0x14e4('0x12'));var qs=require(_0x14e4('0x13'));var as=require(_0x14e4('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x14e4('0x15'))('api');var utils=require(_0x14e4('0x16'));var config=require(_0x14e4('0x17'));var licenseUtil=require(_0x14e4('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0x14e4('0x19'));var client=jayson[_0x14e4('0x1a')][_0x14e4('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x8fa84a,_0x3b0364,_0x3b6f15,_0x17c4b1){return new BPromise(function(_0x120305,_0x1ef4f5){var _0x40b1c5=_0x17c4b1||client;return _0x40b1c5[_0x14e4('0x1c')](_0x8fa84a,_0x3b6f15)['then'](function(_0x52f005){logger[_0x14e4('0x1d')]('Network,\x20%s,\x20%s',_0x3b0364,_0x14e4('0x1e'));logger[_0x14e4('0x1f')]('Network,\x20%s,\x20%s,\x20%s',_0x3b0364,'request\x20sent',JSON[_0x14e4('0x20')](_0x52f005));if(_0x52f005[_0x14e4('0x21')]){if(_0x52f005[_0x14e4('0x21')][_0x14e4('0x22')]===0x1f4){logger[_0x14e4('0x21')](_0x14e4('0x23'),_0x3b0364,_0x52f005[_0x14e4('0x21')][_0x14e4('0x24')]);return _0x1ef4f5(_0x52f005[_0x14e4('0x21')][_0x14e4('0x24')]);}logger[_0x14e4('0x21')](_0x14e4('0x23'),_0x3b0364,_0x52f005['error']['message']);return _0x120305(_0x52f005['error'][_0x14e4('0x24')]);}else{logger[_0x14e4('0x1d')](_0x14e4('0x23'),_0x3b0364,'request\x20sent');_0x120305(_0x52f005['result'][_0x14e4('0x24')]);}})[_0x14e4('0x25')](function(_0x4af642){logger[_0x14e4('0x21')]('Network,\x20%s,\x20%s',_0x3b0364,_0x4af642);_0x1ef4f5(_0x4af642);});});}function respondWithStatusCode(_0xd88f53,_0x33b754){_0x33b754=_0x33b754||0xcc;return function(_0x4ec235){if(_0x4ec235){return _0xd88f53['sendStatus'](_0x33b754);}return _0xd88f53[_0x14e4('0x26')](_0x33b754)[_0x14e4('0x27')]();};}function respondWithResult(_0xfb3119,_0x56bc87){_0x56bc87=_0x56bc87||0xc8;return function(_0x57f81e){if(_0x57f81e){return _0xfb3119['status'](_0x56bc87)['json'](_0x57f81e);}};}function respondWithFilteredResult(_0x416354,_0x2e8c9e){return function(_0x36a601){if(_0x36a601){var _0x57e5b2=typeof _0x2e8c9e[_0x14e4('0x28')]==='undefined'&&typeof _0x2e8c9e['limit']==='undefined';var _0x35a2b4=_0x36a601['count'];var _0x3c887b=_0x57e5b2?0x0:_0x2e8c9e['offset'];var _0x3ec48d=_0x57e5b2?_0x36a601[_0x14e4('0x29')]:_0x2e8c9e[_0x14e4('0x28')]+_0x2e8c9e[_0x14e4('0x2a')];var _0x1b50e1;if(_0x3ec48d>=_0x35a2b4){_0x3ec48d=_0x35a2b4;_0x1b50e1=0xc8;}else{_0x1b50e1=0xce;}_0x416354[_0x14e4('0x26')](_0x1b50e1);return _0x416354['set'](_0x14e4('0x2b'),_0x3c887b+'-'+_0x3ec48d+'/'+_0x35a2b4)[_0x14e4('0x2c')](_0x36a601);}return null;};}function patchUpdates(_0xace4c7){return function(_0x134f54){try{jsonpatch[_0x14e4('0x2d')](_0x134f54,_0xace4c7,!![]);}catch(_0x32fb95){return BPromise['reject'](_0x32fb95);}return _0x134f54[_0x14e4('0x2e')]();};}function saveUpdates(_0x219fd1,_0x3beea0){return function(_0x53e7ca){if(_0x53e7ca){return _0x53e7ca['update'](_0x219fd1)['then'](function(_0x2351ff){return _0x2351ff;});}return null;};}function removeEntity(_0x1b41e2,_0xc79680){return function(_0x7348a8){if(_0x7348a8){return _0x7348a8[_0x14e4('0x2f')]()[_0x14e4('0x30')](function(){_0x1b41e2[_0x14e4('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fd7db,_0x4a1cd4){return function(_0x5d3cdb){if(!_0x5d3cdb){_0x2fd7db[_0x14e4('0x31')](0x194);}return _0x5d3cdb;};}function handleError(_0x4ded02,_0x37314e){_0x37314e=_0x37314e||0x1f4;return function(_0x3ce713){logger[_0x14e4('0x21')](_0x3ce713[_0x14e4('0x32')]);if(_0x3ce713['name']){delete _0x3ce713[_0x14e4('0x33')];}_0x4ded02[_0x14e4('0x26')](_0x37314e)[_0x14e4('0x34')](_0x3ce713);};}exports['index']=function(_0x52ed01,_0x2e3c3f){var _0x1205c2={},_0xf6b8e1={},_0xe09db4={'count':0x0,'rows':[]};var _0x33482a=_[_0x14e4('0x35')](db[_0x14e4('0x36')][_0x14e4('0x37')],function(_0x5014bc){return{'name':_0x5014bc['fieldName'],'type':_0x5014bc['type'][_0x14e4('0x38')]};});_0xf6b8e1['model']=_['map'](_0x33482a,_0x14e4('0x33'));_0xf6b8e1[_0x14e4('0x39')]=_[_0x14e4('0x3a')](_0x52ed01[_0x14e4('0x39')]);_0xf6b8e1[_0x14e4('0x3b')]=_[_0x14e4('0x3c')](_0xf6b8e1[_0x14e4('0x3d')],_0xf6b8e1['query']);_0x1205c2['attributes']=_[_0x14e4('0x3c')](_0xf6b8e1['model'],qs[_0x14e4('0x3e')](_0x52ed01[_0x14e4('0x39')][_0x14e4('0x3e')]));_0x1205c2[_0x14e4('0x3f')]=_0x1205c2[_0x14e4('0x3f')][_0x14e4('0x40')]?_0x1205c2[_0x14e4('0x3f')]:_0xf6b8e1[_0x14e4('0x3d')];if(!_0x52ed01['query'][_0x14e4('0x41')]('nolimit')){_0x1205c2[_0x14e4('0x2a')]=qs[_0x14e4('0x2a')](_0x52ed01[_0x14e4('0x39')][_0x14e4('0x2a')]);_0x1205c2[_0x14e4('0x28')]=qs[_0x14e4('0x28')](_0x52ed01['query']['offset']);}_0x1205c2[_0x14e4('0x42')]=qs['sort'](_0x52ed01['query'][_0x14e4('0x43')]);_0x1205c2[_0x14e4('0x44')]=qs[_0x14e4('0x3b')](_[_0x14e4('0x45')](_0x52ed01[_0x14e4('0x39')],_0xf6b8e1[_0x14e4('0x3b')]),_0x33482a);if(_0x52ed01[_0x14e4('0x39')]['filter']){_0x1205c2[_0x14e4('0x44')]=_[_0x14e4('0x46')](_0x1205c2[_0x14e4('0x44')],{'$or':_['map'](_0x33482a,function(_0x51fc18){if(_0x51fc18['type']!==_0x14e4('0x47')){var _0x369101={};_0x369101[_0x51fc18['name']]={'$like':'%'+_0x52ed01[_0x14e4('0x39')][_0x14e4('0x48')]+'%'};return _0x369101;}})});}_0x1205c2=_['merge']({},_0x1205c2,_0x52ed01[_0x14e4('0x49')]);var _0x4c8926={'where':_0x1205c2['where']};return db[_0x14e4('0x36')]['count'](_0x4c8926)['then'](function(_0x4256f5){_0xe09db4[_0x14e4('0x29')]=_0x4256f5;if(_0x52ed01[_0x14e4('0x39')]['includeAll']){_0x1205c2[_0x14e4('0x4a')]=[{'all':!![]}];}return db[_0x14e4('0x36')]['findAll'](_0x1205c2);})['then'](function(_0x4c187c){_0xe09db4[_0x14e4('0x4b')]=_0x4c187c;return _0xe09db4;})[_0x14e4('0x30')](respondWithFilteredResult(_0x2e3c3f,_0x1205c2))[_0x14e4('0x25')](handleError(_0x2e3c3f,null));};exports['show']=function(_0x4bc910,_0x5bd0f4){var _0x1fa902={'raw':!![],'where':{'id':_0x4bc910[_0x14e4('0x4c')]['id']}},_0x20830e={};_0x20830e[_0x14e4('0x3d')]=_['keys'](db[_0x14e4('0x36')][_0x14e4('0x37')]);_0x20830e[_0x14e4('0x39')]=_[_0x14e4('0x3a')](_0x4bc910['query']);_0x20830e['filters']=_[_0x14e4('0x3c')](_0x20830e['model'],_0x20830e['query']);_0x1fa902['attributes']=_[_0x14e4('0x3c')](_0x20830e['model'],qs[_0x14e4('0x3e')](_0x4bc910['query'][_0x14e4('0x3e')]));_0x1fa902['attributes']=_0x1fa902[_0x14e4('0x3f')][_0x14e4('0x40')]?_0x1fa902['attributes']:_0x20830e[_0x14e4('0x3d')];if(_0x4bc910[_0x14e4('0x39')][_0x14e4('0x4d')]){_0x1fa902[_0x14e4('0x4a')]=[{'all':!![]}];}_0x1fa902=_[_0x14e4('0x46')]({},_0x1fa902,_0x4bc910[_0x14e4('0x49')]);return db[_0x14e4('0x36')][_0x14e4('0x4e')](_0x1fa902)[_0x14e4('0x30')](handleEntityNotFound(_0x5bd0f4,null))[_0x14e4('0x30')](respondWithResult(_0x5bd0f4,null))[_0x14e4('0x25')](handleError(_0x5bd0f4,null));};exports[_0x14e4('0x4f')]=function(_0x264fce,_0x1a6e5d,_0x17e1cd){var _0x2f4c61;return db[_0x14e4('0x50')][_0x14e4('0x51')](function(_0x45e1fa){return db[_0x14e4('0x36')][_0x14e4('0x4f')](_0x264fce[_0x14e4('0x52')],{'raw':!![]})[_0x14e4('0x30')](function(_0x36c3fc){_0x2f4c61=_0x36c3fc;return db['Network'][_0x14e4('0x53')]({'where':{'type':_0x264fce['body'][_0x14e4('0x54')]},'raw':!![]});})[_0x14e4('0x30')](function(_0x3bda79){if(_0x2f4c61[_0x14e4('0x54')][_0x14e4('0x55')]()==_0x14e4('0x56')){var _0x1a11f1=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x5a')),_0x14e4('0x5b'));var _0x55fecf=ejs['render'](_0x1a11f1,{'networks':_0x3bda79||[]});fs['writeFileSync'](_0x14e4('0x5c'),_0x55fecf);return respondWithRpcPromise(_0x14e4('0x5d'),_0x14e4('0x4f'),{'module':_0x14e4('0x5e')});}else if(_0x2f4c61[_0x14e4('0x54')][_0x14e4('0x55')]()==_0x14e4('0x5f')){var _0x4006ca=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x60')),_0x14e4('0x5b'));var _0x12ceb9=ejs[_0x14e4('0x61')](_0x4006ca,{'networks':_0x3bda79||[]});fs[_0x14e4('0x62')]('/etc/asterisk/turn_xcally.conf',_0x12ceb9);return respondWithRpcPromise('Reload',_0x14e4('0x4f'),{'module':_0x14e4('0x5e')});}else{var _0x507c92=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],'server/files/templates/network.ejs'),_0x14e4('0x5b'));var _0x4b4cd8=ejs[_0x14e4('0x61')](_0x507c92,{'networks':_0x3bda79||[]});fs[_0x14e4('0x62')](util[_0x14e4('0x63')](_0x14e4('0x64'),_0x264fce[_0x14e4('0x52')][_0x14e4('0x54')][_0x14e4('0x65')]()),_0x4b4cd8);return respondWithRpcPromise(_0x14e4('0x5d'),_0x14e4('0x4f'),{'module':'chan_sip.so'});}return null;})['then'](function(){return _0x2f4c61;});})[_0x14e4('0x30')](respondWithResult(_0x1a6e5d,0xc9))['catch'](handleError(_0x1a6e5d,null));};exports[_0x14e4('0x66')]=function(_0x42f217,_0x1ff39f,_0x162f6e){var _0x2bac5c;return db[_0x14e4('0x50')][_0x14e4('0x51')](function(_0x1cc267){return db[_0x14e4('0x36')]['find']({'where':{'id':_0x42f217[_0x14e4('0x4c')]['id']}})[_0x14e4('0x30')](handleEntityNotFound(_0x1ff39f,null))[_0x14e4('0x30')](saveUpdates(_0x42f217[_0x14e4('0x52')],null))['then'](function(_0xd20a46){if(_0xd20a46){_0x2bac5c=_0xd20a46;return db['Network'][_0x14e4('0x53')]({'where':{'type':_0x2bac5c[_0x14e4('0x54')]},'raw':!![]});}return null;})['then'](function(_0x144ec7){if(_0x2bac5c[_0x14e4('0x54')]['toUpperCase']()==_0x14e4('0x56')){var _0x5a1ffe=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x5a')),_0x14e4('0x5b'));var _0x16d154=ejs[_0x14e4('0x61')](_0x5a1ffe,{'networks':_0x144ec7||[]});fs[_0x14e4('0x62')](_0x14e4('0x5c'),_0x16d154);return respondWithRpcPromise(_0x14e4('0x5d'),'update',{'module':_0x14e4('0x5e')});}else if(_0x2bac5c[_0x14e4('0x54')]['toUpperCase']()==_0x14e4('0x5f')){var _0x59e9d3=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x60')),_0x14e4('0x5b'));var _0xeeee57=ejs[_0x14e4('0x61')](_0x59e9d3,{'networks':_0x144ec7||[]});fs[_0x14e4('0x62')](_0x14e4('0x67'),_0xeeee57);return respondWithRpcPromise(_0x14e4('0x5d'),_0x14e4('0x66'),{'module':_0x14e4('0x5e')});}else{var _0x20baa4=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x68')),_0x14e4('0x5b'));var _0x34dad8=ejs[_0x14e4('0x61')](_0x20baa4,{'networks':_0x144ec7||[]});fs['writeFileSync'](util[_0x14e4('0x63')](_0x14e4('0x64'),_0x42f217[_0x14e4('0x52')][_0x14e4('0x54')][_0x14e4('0x65')]()),_0x34dad8);return respondWithRpcPromise('Reload',_0x14e4('0x66'),{'module':_0x14e4('0x69')});}return null;})[_0x14e4('0x30')](function(_0x2e5b5b){if(_0x2e5b5b){return _0x2bac5c;}return null;});})[_0x14e4('0x30')](respondWithResult(_0x1ff39f,null))[_0x14e4('0x25')](handleError(_0x1ff39f,null));};exports[_0x14e4('0x2f')]=function(_0x3bea91,_0x474118,_0x31ece4){var _0xe60e4d;return db[_0x14e4('0x36')][_0x14e4('0x4e')]({'where':{'id':_0x3bea91[_0x14e4('0x4c')]['id']}})[_0x14e4('0x30')](function(_0x2e3bb3){_0xe60e4d=_0x2e3bb3;return _0x2e3bb3;})[_0x14e4('0x30')](handleEntityNotFound(_0x474118,null))['then'](removeEntity(_0x474118,null))[_0x14e4('0x30')](function(){if(_0xe60e4d){return db['Network'][_0x14e4('0x53')]({'where':{'type':_0xe60e4d[_0x14e4('0x54')]},'raw':!![]});}})[_0x14e4('0x30')](function(_0xed75d6){if(_0xe60e4d['type'][_0x14e4('0x55')]()==_0x14e4('0x56')){var _0x259830=fs['readFileSync'](path['join'](config['root'],_0x14e4('0x5a')),_0x14e4('0x5b'));var _0xdc22a6=ejs[_0x14e4('0x61')](_0x259830,{'networks':_0xed75d6||[]});fs[_0x14e4('0x62')](_0x14e4('0x5c'),_0xdc22a6);return respondWithRpcPromise(_0x14e4('0x5d'),'destroy',{'module':_0x14e4('0x5e')});}else if(_0xe60e4d[_0x14e4('0x54')]['toUpperCase']()=='TURN'){var _0x4b6e74=fs[_0x14e4('0x57')](path['join'](config[_0x14e4('0x59')],_0x14e4('0x60')),'utf8');var _0x494596=ejs[_0x14e4('0x61')](_0x4b6e74,{'networks':_0xed75d6||[]});fs['writeFileSync'](_0x14e4('0x67'),_0x494596);return respondWithRpcPromise(_0x14e4('0x5d'),'destroy',{'module':'res_stun_monitor.so'});}else{var _0xb9ee1a=fs[_0x14e4('0x57')](path[_0x14e4('0x58')](config[_0x14e4('0x59')],_0x14e4('0x68')),_0x14e4('0x5b'));var _0x72eb4a=ejs[_0x14e4('0x61')](_0xb9ee1a,{'networks':_0xed75d6||[]});fs['writeFileSync'](util[_0x14e4('0x63')](_0x14e4('0x64'),_0x3bea91[_0x14e4('0x52')][_0x14e4('0x54')][_0x14e4('0x65')]()),_0x72eb4a);return respondWithRpcPromise(_0x14e4('0x5d'),'destroy',{'module':_0x14e4('0x69')});}return null;})[_0x14e4('0x25')](handleError(_0x474118,null));};
\ No newline at end of file
index 8d300e7..6f4bad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['define','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','exports'];(function(_0x58b170,_0x4f652c){var _0xbae755=function(_0x4aaaa7){while(--_0x4aaaa7){_0x58b170['push'](_0x58b170['shift']());}};_0xbae755(++_0x4f652c);}(_0x6c76,0x184));var _0x66c7=function(_0x184f59,_0x5815cc){_0x184f59=_0x184f59-0x0;var _0x2b01bc=_0x6c76[_0x184f59];return _0x2b01bc;};'use strict';var _=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var logger=require(_0x66c7('0x2'))('api');var moment=require(_0x66c7('0x3'));var BPromise=require(_0x66c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x66c7('0x5'));var config=require(_0x66c7('0x6'));var attributes=require('./network.attributes');module[_0x66c7('0x7')]=function(_0x45b0a5,_0x52f71b){return _0x45b0a5[_0x66c7('0x8')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x524a=['exports','define','network','lodash','util','../../config/logger','api','bluebird','request-promise','path','./network.attributes'];(function(_0x48a676,_0xb0c3b8){var _0x2b12e8=function(_0x4df49f){while(--_0x4df49f){_0x48a676['push'](_0x48a676['shift']());}};_0x2b12e8(++_0xb0c3b8);}(_0x524a,0xf5));var _0xa524=function(_0x1edab0,_0x160122){_0x1edab0=_0x1edab0-0x0;var _0x244056=_0x524a[_0x1edab0];return _0x244056;};'use strict';var _=require(_0xa524('0x0'));var util=require(_0xa524('0x1'));var logger=require(_0xa524('0x2'))(_0xa524('0x3'));var moment=require('moment');var BPromise=require(_0xa524('0x4'));var rp=require(_0xa524('0x5'));var fs=require('fs');var path=require(_0xa524('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa524('0x7'));module[_0xa524('0x8')]=function(_0x16227b,_0x5f472f){return _0x16227b[_0xa524('0x9')]('Network',attributes,{'tableName':_0xa524('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03d362c..fc6c027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x21d798,_0x419ef7){var _0x4ee4a2=function(_0x3eaafb){while(--_0x3eaafb){_0x21d798['push'](_0x21d798['shift']());}};_0x4ee4a2(++_0x419ef7);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x50fce6,_0x396da2){_0x50fce6=_0x50fce6-0x0;var _0x23c975=_0x7a54[_0x50fce6];return _0x23c975;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 7ede633..ab54f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d79=['/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','addAgents','/:id/send','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getDispositions','/:id/canned_answers'];(function(_0x1d70db,_0x142b63){var _0x3060c6=function(_0x347866){while(--_0x347866){_0x1d70db['push'](_0x1d70db['shift']());}};_0x3060c6(++_0x142b63);}(_0x8d79,0xf2));var _0x98d7=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8d79[_0x160c73];return _0xd9302;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x98d7('0x0'));var timeout=require(_0x98d7('0x1'));var express=require(_0x98d7('0x2'));var router=express[_0x98d7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x98d7('0x4'));var interaction=require(_0x98d7('0x5'));var config=require(_0x98d7('0x6'));var controller=require(_0x98d7('0x7'));router[_0x98d7('0x8')]('/',auth[_0x98d7('0x9')](),controller[_0x98d7('0xa')]);router[_0x98d7('0x8')](_0x98d7('0xb'),auth[_0x98d7('0x9')](),controller[_0x98d7('0xc')]);router[_0x98d7('0x8')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller[_0x98d7('0xe')]);router[_0x98d7('0x8')]('/:id/dispositions',auth[_0x98d7('0x9')](),controller[_0x98d7('0xf')]);router[_0x98d7('0x8')](_0x98d7('0x10'),auth[_0x98d7('0x9')](),controller['getAnswers']);router[_0x98d7('0x8')](_0x98d7('0x11'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x12')]);router[_0x98d7('0x8')](_0x98d7('0x13'),auth[_0x98d7('0x9')](),controller['getInteractions']);router[_0x98d7('0x8')](_0x98d7('0x14'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x15')]);router[_0x98d7('0x16')]('/',auth[_0x98d7('0x9')](),controller[_0x98d7('0x17')]);router[_0x98d7('0x16')](_0x98d7('0x18'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x19')]);router[_0x98d7('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x98d7('0x1a')]);router[_0x98d7('0x16')](_0x98d7('0x1b'),controller['notify']);router[_0x98d7('0x16')](_0x98d7('0x11'),auth[_0x98d7('0x9')](),controller['addApplications']);router['post'](_0x98d7('0x14'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x1c')]);router['post'](_0x98d7('0x1d'),auth['isAuthenticated'](),controller['send']);router[_0x98d7('0x1e')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x1f')]);router[_0x98d7('0x20')](_0x98d7('0xd'),auth[_0x98d7('0x9')](),controller['destroy']);router[_0x98d7('0x20')](_0x98d7('0x18'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x21')]);router[_0x98d7('0x20')](_0x98d7('0x10'),auth[_0x98d7('0x9')](),controller[_0x98d7('0x22')]);router[_0x98d7('0x20')](_0x98d7('0x14'),auth['isAuthenticated'](),controller[_0x98d7('0x23')]);module[_0x98d7('0x24')]=router;
\ No newline at end of file
+var _0x0995=['/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','put','update','delete','destroy','removeDispositions','removeAnswers','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated','index','get','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0995,0xfe));var _0x5099=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0995[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5099('0x0'));var util=require(_0x5099('0x1'));var path=require(_0x5099('0x2'));var timeout=require(_0x5099('0x3'));var express=require(_0x5099('0x4'));var router=express['Router']();var fs_extra=require(_0x5099('0x5'));var auth=require(_0x5099('0x6'));var interaction=require(_0x5099('0x7'));var config=require(_0x5099('0x8'));var controller=require(_0x5099('0x9'));router['get']('/',auth[_0x5099('0xa')](),controller[_0x5099('0xb')]);router[_0x5099('0xc')]('/describe',auth[_0x5099('0xa')](),controller[_0x5099('0xd')]);router[_0x5099('0xc')](_0x5099('0xe'),auth[_0x5099('0xa')](),controller[_0x5099('0xf')]);router[_0x5099('0xc')](_0x5099('0x10'),auth['isAuthenticated'](),controller[_0x5099('0x11')]);router[_0x5099('0xc')](_0x5099('0x12'),auth[_0x5099('0xa')](),controller['getAnswers']);router[_0x5099('0xc')](_0x5099('0x13'),auth[_0x5099('0xa')](),controller[_0x5099('0x14')]);router[_0x5099('0xc')](_0x5099('0x15'),auth[_0x5099('0xa')](),controller['getInteractions']);router[_0x5099('0xc')](_0x5099('0x16'),auth[_0x5099('0xa')](),controller[_0x5099('0x17')]);router[_0x5099('0x18')]('/',auth[_0x5099('0xa')](),controller[_0x5099('0x19')]);router[_0x5099('0x18')](_0x5099('0x10'),auth[_0x5099('0xa')](),controller['addDisposition']);router[_0x5099('0x18')](_0x5099('0x12'),auth[_0x5099('0xa')](),controller[_0x5099('0x1a')]);router[_0x5099('0x18')](_0x5099('0x1b'),controller[_0x5099('0x1c')]);router[_0x5099('0x18')]('/:id/applications',auth['isAuthenticated'](),controller[_0x5099('0x1d')]);router[_0x5099('0x18')](_0x5099('0x16'),auth['isAuthenticated'](),controller[_0x5099('0x1e')]);router[_0x5099('0x18')](_0x5099('0x1f'),auth['isAuthenticated'](),controller['send']);router[_0x5099('0x20')](_0x5099('0xe'),auth[_0x5099('0xa')](),controller[_0x5099('0x21')]);router[_0x5099('0x22')]('/:id',auth[_0x5099('0xa')](),controller[_0x5099('0x23')]);router[_0x5099('0x22')](_0x5099('0x10'),auth[_0x5099('0xa')](),controller[_0x5099('0x24')]);router[_0x5099('0x22')](_0x5099('0x12'),auth[_0x5099('0xa')](),controller[_0x5099('0x25')]);router[_0x5099('0x22')](_0x5099('0x16'),auth[_0x5099('0xa')](),controller['removeAgents']);module[_0x5099('0x26')]=router;
\ No newline at end of file
index 1f37014..70278fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86e=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x2e9782,_0xe29fa2){var _0x174ed2=function(_0x4a7610){while(--_0x4a7610){_0x2e9782['push'](_0x2e9782['shift']());}};_0x174ed2(++_0xe29fa2);}(_0xc86e,0x1da));var _0xec86=function(_0x125c7a,_0x5285b8){_0x125c7a=_0x125c7a-0x0;var _0x47f5d7=_0xc86e[_0x125c7a];return _0x47f5d7;};'use strict';var Sequelize=require(_0xec86('0x0'));var rs=require(_0xec86('0x1'));module['exports']={'name':{'type':Sequelize[_0xec86('0x2')],'unique':_0xec86('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xec86('0x2')],'defaultValue':function(){return rs[_0xec86('0x4')]();}},'replyUri':{'type':Sequelize[_0xec86('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xec86('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xec86('0x5')],'defaultValue':function(){return _0xec86('0x6');}},'notificationSound':{'type':Sequelize[_0xec86('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xec86('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xec86('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xec86('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xec86('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xec86('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4d6c5f){if(!_0x4d6c5f)this[_0xec86('0xa')](_0xec86('0xb'),null);this[_0xec86('0xa')](_0xec86('0xc'),_0x4d6c5f);}}};
\ No newline at end of file
+var _0x29b7=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','TEXT'];(function(_0x2924d3,_0x43216b){var _0x4be4e4=function(_0x57446b){while(--_0x57446b){_0x2924d3['push'](_0x2924d3['shift']());}};_0x4be4e4(++_0x43216b);}(_0x29b7,0xd6));var _0x729b=function(_0x48f198,_0x368686){_0x48f198=_0x48f198-0x0;var _0x57243f=_0x29b7[_0x48f198];return _0x57243f;};'use strict';var Sequelize=require(_0x729b('0x0'));var rs=require(_0x729b('0x1'));module[_0x729b('0x2')]={'name':{'type':Sequelize[_0x729b('0x3')],'unique':_0x729b('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x729b('0x3')]},'token':{'type':Sequelize[_0x729b('0x3')],'defaultValue':function(){return rs[_0x729b('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x729b('0x6')],'defaultValue':function(){return _0x729b('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x729b('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x729b('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x729b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x729b('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x729b('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x729b('0x9')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x729b('0xa'),'set':function(_0x4cf69d){if(!_0x4cf69d)this[_0x729b('0xb')]('mandatoryDispositionPauseId',null);this[_0x729b('0xb')](_0x729b('0xc'),_0x4cf69d);}}};
\ No newline at end of file
index 53fbaf1..c09fdeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f5=['unmanaged','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','*,*,*,*','forcedOwnership','startRouting','Start','EventManager','addApplications','sequelize','bulkCreate','getApplications','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','dataValues','Messages','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','http','client','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','end','json','offset','limit','count','set','apply','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','name','send','index','Pause','map','OpenchannelAccount','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','show','params','mandatoryDispositionPause','include','find','create','user','role','UserProfileSection','autoAssociation','body','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','addAnswer','CannedAnswer','ids','notify','openchannel','CmContact','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','isNil','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','DESC','OpenchannelApplication','Applications','list','applications','orderBy','priority','asc','account','Contacts','ListId','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','lastName','messageId','interaction','created','push'];(function(_0x16d727,_0x5c7f3d){var _0x5d5566=function(_0x1fcaa0){while(--_0x1fcaa0){_0x16d727['push'](_0x16d727['shift']());}};_0x5d5566(++_0x5c7f3d);}(_0xe8f5,0x18e));var _0x5e8f=function(_0x970a57,_0x469d3c){_0x970a57=_0x970a57-0x0;var _0x42be6a=_0xe8f5[_0x970a57];return _0x42be6a;};'use strict';var emlformat=require(_0x5e8f('0x0'));var rimraf=require(_0x5e8f('0x1'));var zipdir=require(_0x5e8f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e8f('0x3'));var moment=require('moment');var BPromise=require(_0x5e8f('0x4'));var Mustache=require(_0x5e8f('0x5'));var util=require(_0x5e8f('0x6'));var path=require(_0x5e8f('0x7'));var sox=require('sox');var csv=require(_0x5e8f('0x8'));var ejs=require(_0x5e8f('0x9'));var fs=require('fs');var fs_extra=require(_0x5e8f('0xa'));var _=require(_0x5e8f('0xb'));var squel=require(_0x5e8f('0xc'));var crypto=require(_0x5e8f('0xd'));var jsforce=require(_0x5e8f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5e8f('0xf'));var Papa=require(_0x5e8f('0x10'));var Redis=require(_0x5e8f('0x11'));var authService=require(_0x5e8f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e8f('0x13'));var hardwareService=require(_0x5e8f('0x14'));var logger=require(_0x5e8f('0x15'))(_0x5e8f('0x16'));var utils=require(_0x5e8f('0x17'));var config=require(_0x5e8f('0x18'));var licenseUtil=require(_0x5e8f('0x19'));var db=require('../../mysqldb')['db'];config[_0x5e8f('0x1a')]=_[_0x5e8f('0x1b')](config[_0x5e8f('0x1a')],{'host':_0x5e8f('0x1c'),'port':0x18eb});var socket=require(_0x5e8f('0x1d'))(new Redis(config[_0x5e8f('0x1a')]));require(_0x5e8f('0x1e'))[_0x5e8f('0x1f')](socket);var jayson=require(_0x5e8f('0x20'));var client=jayson['client'][_0x5e8f('0x21')]({'port':0x232c});var client9002=jayson[_0x5e8f('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0xa2a935,_0xd7af05,_0x1a25e8,_0x41b443){return new BPromise(function(_0x118475,_0x2410c4){var _0x135ce5=_0x41b443||client;return _0x135ce5[_0x5e8f('0x23')](_0xa2a935,_0x1a25e8)[_0x5e8f('0x24')](function(_0x456748){logger[_0x5e8f('0x25')](_0x5e8f('0x26'),_0xd7af05,_0x5e8f('0x27'));logger[_0x5e8f('0x28')](_0x5e8f('0x29'),_0xd7af05,_0x5e8f('0x27'),JSON['stringify'](_0x456748));if(_0x456748['error']){if(_0x456748[_0x5e8f('0x2a')]['code']===0x1f4){logger[_0x5e8f('0x2a')](_0x5e8f('0x26'),_0xd7af05,_0x456748['error'][_0x5e8f('0x2b')]);return _0x2410c4(_0x456748['error'][_0x5e8f('0x2b')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0xd7af05,_0x456748[_0x5e8f('0x2a')][_0x5e8f('0x2b')]);return _0x118475(_0x456748['error']['message']);}else{logger[_0x5e8f('0x25')](_0x5e8f('0x26'),_0xd7af05,_0x5e8f('0x27'));_0x118475(_0x456748['result'][_0x5e8f('0x2b')]);}})[_0x5e8f('0x2c')](function(_0x24db17){logger[_0x5e8f('0x2a')](_0x5e8f('0x26'),_0xd7af05,_0x24db17);_0x2410c4(_0x24db17);});});}function respondWithStatusCode(_0x157321,_0x47ee33){_0x47ee33=_0x47ee33||0xcc;return function(_0x191d3d){if(_0x191d3d){return _0x157321[_0x5e8f('0x2d')](_0x47ee33);}return _0x157321[_0x5e8f('0x2e')](_0x47ee33)[_0x5e8f('0x2f')]();};}function respondWithResult(_0x257487,_0xff4094){_0xff4094=_0xff4094||0xc8;return function(_0x545efc){if(_0x545efc){return _0x257487[_0x5e8f('0x2e')](_0xff4094)[_0x5e8f('0x30')](_0x545efc);}};}function respondWithFilteredResult(_0x5198ff,_0x53ddcd){return function(_0x596964){if(_0x596964){var _0x3c0c33=typeof _0x53ddcd[_0x5e8f('0x31')]==='undefined'&&typeof _0x53ddcd[_0x5e8f('0x32')]==='undefined';var _0x4b0a67=_0x596964[_0x5e8f('0x33')];var _0x3a01b4=_0x3c0c33?0x0:_0x53ddcd['offset'];var _0xf61bc6=_0x3c0c33?_0x596964[_0x5e8f('0x33')]:_0x53ddcd[_0x5e8f('0x31')]+_0x53ddcd[_0x5e8f('0x32')];var _0x306b24;if(_0xf61bc6>=_0x4b0a67){_0xf61bc6=_0x4b0a67;_0x306b24=0xc8;}else{_0x306b24=0xce;}_0x5198ff[_0x5e8f('0x2e')](_0x306b24);return _0x5198ff[_0x5e8f('0x34')]('Content-Range',_0x3a01b4+'-'+_0xf61bc6+'/'+_0x4b0a67)[_0x5e8f('0x30')](_0x596964);}return null;};}function patchUpdates(_0x42da58){return function(_0x38a70f){try{jsonpatch[_0x5e8f('0x35')](_0x38a70f,_0x42da58,!![]);}catch(_0x1c69b1){return BPromise['reject'](_0x1c69b1);}return _0x38a70f[_0x5e8f('0x36')]();};}function saveUpdates(_0x2d0368,_0x4faa47){return function(_0x1b1ed7){if(_0x1b1ed7){return _0x1b1ed7[_0x5e8f('0x37')](_0x2d0368)[_0x5e8f('0x24')](function(_0x21f288){return _0x21f288;});}return null;};}function removeEntity(_0x39c43a,_0x3e9bfd){return function(_0x3b3b81){if(_0x3b3b81){return _0x3b3b81['destroy']()[_0x5e8f('0x24')](function(){var _0x363583=_0x3b3b81[_0x5e8f('0x38')]({'plain':!![]});var _0x1d234a=_0x5e8f('0x39');return db[_0x5e8f('0x3a')][_0x5e8f('0x3b')]({'where':{'type':_0x1d234a,'resourceId':_0x363583['id']}})['then'](function(){return _0x3b3b81;});})[_0x5e8f('0x24')](function(){_0x39c43a[_0x5e8f('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ac8d0,_0x2d1fe9){return function(_0x10471a){if(!_0x10471a){_0x1ac8d0[_0x5e8f('0x2d')](0x194);}return _0x10471a;};}function handleError(_0x278932,_0x5c7856){_0x5c7856=_0x5c7856||0x1f4;return function(_0x4049be){logger['error'](_0x4049be['stack']);if(_0x4049be[_0x5e8f('0x3c')]){delete _0x4049be[_0x5e8f('0x3c')];}_0x278932[_0x5e8f('0x2e')](_0x5c7856)[_0x5e8f('0x3d')](_0x4049be);};}exports[_0x5e8f('0x3e')]=function(_0x4faa3d,_0xbbadb1){var _0x46dca8={'include':[{'model':db[_0x5e8f('0x3f')],'as':'mandatoryDispositionPause'}]},_0x262e0e={},_0x395d49={'count':0x0,'rows':[]};var _0x38ac0f=_[_0x5e8f('0x40')](db[_0x5e8f('0x41')][_0x5e8f('0x42')],function(_0x26b36d){return{'name':_0x26b36d[_0x5e8f('0x43')],'type':_0x26b36d[_0x5e8f('0x44')]['key']};});_0x262e0e['model']=_[_0x5e8f('0x40')](_0x38ac0f,_0x5e8f('0x3c'));_0x262e0e[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x4faa3d[_0x5e8f('0x45')]);_0x262e0e[_0x5e8f('0x47')]=_['intersection'](_0x262e0e[_0x5e8f('0x48')],_0x262e0e[_0x5e8f('0x45')]);_0x46dca8[_0x5e8f('0x49')]=_[_0x5e8f('0x4a')](_0x262e0e[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x46dca8[_0x5e8f('0x49')]=_0x46dca8[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x46dca8[_0x5e8f('0x49')]:_0x262e0e[_0x5e8f('0x48')];if(!_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x46dca8['limit']=qs[_0x5e8f('0x32')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x46dca8[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x31')]);}_0x46dca8[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x46dca8[_0x5e8f('0x51')]=qs['filters'](_[_0x5e8f('0x52')](_0x4faa3d[_0x5e8f('0x45')],_0x262e0e[_0x5e8f('0x47')]),_0x38ac0f);if(_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x46dca8[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x46dca8[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x38ac0f,function(_0x3103d7){if(_0x3103d7[_0x5e8f('0x44')]!=='VIRTUAL'){var _0x2bc29e={};_0x2bc29e[_0x3103d7['name']]={'$like':'%'+_0x4faa3d['query']['filter']+'%'};return _0x2bc29e;}})});}_0x46dca8=_[_0x5e8f('0x54')]({},_0x46dca8,_0x4faa3d[_0x5e8f('0x55')]);var _0x4575da={'where':_0x46dca8[_0x5e8f('0x51')]};return db[_0x5e8f('0x41')][_0x5e8f('0x33')](_0x4575da)[_0x5e8f('0x24')](function(_0xb38dcf){_0x395d49[_0x5e8f('0x33')]=_0xb38dcf;if(_0x4faa3d[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x46dca8['include']=[{'all':!![]}];}return db[_0x5e8f('0x41')][_0x5e8f('0x57')](_0x46dca8);})[_0x5e8f('0x24')](function(_0x494c4b){_0x395d49[_0x5e8f('0x58')]=_0x494c4b;return _0x395d49;})[_0x5e8f('0x24')](respondWithFilteredResult(_0xbbadb1,_0x46dca8))[_0x5e8f('0x2c')](handleError(_0xbbadb1,null));};exports[_0x5e8f('0x59')]=function(_0x2195f5,_0x4e6ef2){var _0x169559={'raw':![],'where':{'id':_0x2195f5[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x3f')],'as':_0x5e8f('0x5b')}]},_0x40af7a={};_0x40af7a['model']=_['keys'](db[_0x5e8f('0x41')][_0x5e8f('0x42')]);_0x40af7a[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x2195f5[_0x5e8f('0x45')]);_0x40af7a[_0x5e8f('0x47')]=_[_0x5e8f('0x4a')](_0x40af7a[_0x5e8f('0x48')],_0x40af7a['query']);_0x169559['attributes']=_['intersection'](_0x40af7a['model'],qs[_0x5e8f('0x4b')](_0x2195f5[_0x5e8f('0x45')]['fields']));_0x169559['attributes']=_0x169559[_0x5e8f('0x49')]['length']?_0x169559[_0x5e8f('0x49')]:_0x40af7a['model'];if(_0x2195f5['query']['includeAll']){_0x169559[_0x5e8f('0x5c')]=[{'all':!![]}];}_0x169559=_[_0x5e8f('0x54')]({},_0x169559,_0x2195f5[_0x5e8f('0x55')]);return db[_0x5e8f('0x41')][_0x5e8f('0x5d')](_0x169559)[_0x5e8f('0x24')](handleEntityNotFound(_0x4e6ef2,null))[_0x5e8f('0x24')](respondWithResult(_0x4e6ef2,null))[_0x5e8f('0x2c')](handleError(_0x4e6ef2,null));};exports['create']=function(_0x2de3d1,_0x414f3d){return db[_0x5e8f('0x41')][_0x5e8f('0x5e')](_0x2de3d1['body'],{})[_0x5e8f('0x24')](function(_0x509d6d){var _0x522295=_0x2de3d1[_0x5e8f('0x5f')][_0x5e8f('0x38')]({'plain':!![]});if(!_0x522295)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x522295[_0x5e8f('0x60')]===_0x5e8f('0x5f')){var _0x1a4359=_0x509d6d[_0x5e8f('0x38')]({'plain':!![]});var _0x4b88fb=_0x5e8f('0x39');return db[_0x5e8f('0x61')][_0x5e8f('0x5d')]({'where':{'name':_0x4b88fb,'userProfileId':_0x522295['userProfileId']},'raw':!![]})[_0x5e8f('0x24')](function(_0x460d2f){if(_0x460d2f&&_0x460d2f[_0x5e8f('0x62')]===0x0){return db[_0x5e8f('0x3a')][_0x5e8f('0x5e')]({'name':_0x1a4359[_0x5e8f('0x3c')],'resourceId':_0x1a4359['id'],'type':_0x460d2f['name'],'sectionId':_0x460d2f['id']},{})[_0x5e8f('0x24')](function(){return _0x509d6d;});}else{return _0x509d6d;}})[_0x5e8f('0x2c')](function(_0x2d0c92){logger[_0x5e8f('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d0c92);throw _0x2d0c92;});}return _0x509d6d;})['then'](respondWithResult(_0x414f3d,0xc9))[_0x5e8f('0x2c')](handleError(_0x414f3d,null));};exports[_0x5e8f('0x37')]=function(_0x3b6c73,_0x5b23ce){if(_0x3b6c73[_0x5e8f('0x63')]['id']){delete _0x3b6c73['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3b6c73[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x3f')],'as':_0x5e8f('0x5b')}]})['then'](handleEntityNotFound(_0x5b23ce,null))[_0x5e8f('0x24')](saveUpdates(_0x3b6c73[_0x5e8f('0x63')],null))[_0x5e8f('0x24')](respondWithResult(_0x5b23ce,null))[_0x5e8f('0x2c')](handleError(_0x5b23ce,null));};exports['destroy']=function(_0x3eb502,_0x4f7f8d){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x3eb502[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x4f7f8d,null))['then'](removeEntity(_0x4f7f8d,null))[_0x5e8f('0x2c')](handleError(_0x4f7f8d,null));};exports['describe']=function(_0x1b8f62,_0x30ebab){return db['OpenchannelAccount'][_0x5e8f('0x64')]()[_0x5e8f('0x24')](respondWithResult(_0x30ebab,null))[_0x5e8f('0x2c')](handleError(_0x30ebab,null));};exports[_0x5e8f('0x65')]=function(_0xd2cf83,_0x4e8d14,_0x3cc65e){if(_0xd2cf83[_0x5e8f('0x63')]['id']){delete _0xd2cf83['body']['id'];}return db[_0x5e8f('0x41')]['find']({'where':{'id':_0xd2cf83[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x4e8d14,null))[_0x5e8f('0x24')](function(_0x1db972){if(_0x1db972){_0xd2cf83['body'][_0x5e8f('0x66')]=_0x1db972['id'];return db[_0x5e8f('0x67')][_0x5e8f('0x5e')](_0xd2cf83['body']);}})[_0x5e8f('0x24')](respondWithResult(_0x4e8d14,null))[_0x5e8f('0x2c')](handleError(_0x4e8d14,null));};exports[_0x5e8f('0x68')]=function(_0x5908ad,_0xc6bb07,_0x138eae){var _0x19f02a={'raw':![],'where':{}};var _0x780cb={};var _0x351128={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x5908ad[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0xc6bb07,null))['then'](function(_0x573e3f){if(_0x573e3f){_0x780cb['model']=_['keys'](db[_0x5e8f('0x67')][_0x5e8f('0x42')]);_0x780cb[_0x5e8f('0x45')]=_['keys'](_0x5908ad[_0x5e8f('0x45')]);_0x780cb['filters']=_[_0x5e8f('0x4a')](_0x780cb['model'],_0x780cb[_0x5e8f('0x45')]);_0x19f02a['attributes']=_[_0x5e8f('0x4a')](_0x780cb[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x19f02a[_0x5e8f('0x49')]=_0x19f02a[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x19f02a[_0x5e8f('0x49')]:_0x780cb[_0x5e8f('0x48')];if(!_0x5908ad['query'][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x19f02a[_0x5e8f('0x32')]=qs['limit'](_0x5908ad[_0x5e8f('0x45')]['limit']);_0x19f02a[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x5908ad['query'][_0x5e8f('0x31')]);}_0x19f02a[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x5908ad[_0x5e8f('0x45')]['sort']);_0x19f02a[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x5908ad['query'],_0x780cb['filters']));_0x19f02a[_0x5e8f('0x51')]['OpenchannelAccountId']=_0x573e3f['id'];if(_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x19f02a['where']=_[_0x5e8f('0x54')](_0x19f02a[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x19f02a[_0x5e8f('0x49')],function(_0x1c9e94){var _0x2fe06a={};_0x2fe06a[_0x1c9e94]={'$like':'%'+_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0x2fe06a;})});}_0x19f02a=_[_0x5e8f('0x54')]({},_0x19f02a,_0x5908ad['options']);return db['Disposition']['count']({'where':_0x19f02a[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x3f7ac0){_0x351128['count']=_0x3f7ac0;if(_0x5908ad[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x19f02a[_0x5e8f('0x5c')]=[{'all':!![]}];}return db[_0x5e8f('0x67')][_0x5e8f('0x57')](_0x19f02a);})['then'](function(_0x21821c){_0x351128[_0x5e8f('0x58')]=_0x21821c;return _0x351128;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0xc6bb07,_0x19f02a))[_0x5e8f('0x2c')](handleError(_0xc6bb07,null));};exports['removeDispositions']=function(_0x25811c,_0x9c5f9a,_0xe81ce2){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x25811c[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x9c5f9a,null))['then'](function(_0x2c7820){if(_0x2c7820){return _0x2c7820['removeDispositions'](_0x25811c[_0x5e8f('0x45')]['ids']);}})[_0x5e8f('0x24')](respondWithStatusCode(_0x9c5f9a,null))['catch'](handleError(_0x9c5f9a,null));};exports[_0x5e8f('0x6a')]=function(_0x2ce00f,_0x2dc6f6,_0xd82ed4){if(_0x2ce00f[_0x5e8f('0x63')]['id']){delete _0x2ce00f[_0x5e8f('0x63')]['id'];}return db['OpenchannelAccount'][_0x5e8f('0x5d')]({'where':{'id':_0x2ce00f[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x2dc6f6,null))[_0x5e8f('0x24')](function(_0x3754bb){if(_0x3754bb){_0x2ce00f[_0x5e8f('0x63')][_0x5e8f('0x66')]=_0x3754bb['id'];return db[_0x5e8f('0x6b')][_0x5e8f('0x5e')](_0x2ce00f[_0x5e8f('0x63')]);}})[_0x5e8f('0x24')](respondWithResult(_0x2dc6f6,null))[_0x5e8f('0x2c')](handleError(_0x2dc6f6,null));};exports['getAnswers']=function(_0x979c96,_0x37c5b0,_0x41f820){var _0x285edb={'raw':![],'where':{}};var _0x2db204={};var _0x32b24a={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x979c96['params']['id']}})['then'](handleEntityNotFound(_0x37c5b0,null))['then'](function(_0x488a5a){if(_0x488a5a){_0x2db204[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x6b')]['rawAttributes']);_0x2db204[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x979c96['query']);_0x2db204['filters']=_[_0x5e8f('0x4a')](_0x2db204[_0x5e8f('0x48')],_0x2db204[_0x5e8f('0x45')]);_0x285edb[_0x5e8f('0x49')]=_['intersection'](_0x2db204[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x979c96['query']['fields']));_0x285edb[_0x5e8f('0x49')]=_0x285edb[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x285edb[_0x5e8f('0x49')]:_0x2db204[_0x5e8f('0x48')];if(!_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x285edb[_0x5e8f('0x32')]=qs[_0x5e8f('0x32')](_0x979c96['query'][_0x5e8f('0x32')]);_0x285edb[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x979c96['query']['offset']);}_0x285edb['order']=qs['sort'](_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x285edb[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x979c96[_0x5e8f('0x45')],_0x2db204[_0x5e8f('0x47')]));_0x285edb[_0x5e8f('0x51')][_0x5e8f('0x66')]=_0x488a5a['id'];if(_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x285edb[_0x5e8f('0x51')]=_['merge'](_0x285edb[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x285edb['attributes'],function(_0xa400a2){var _0x47a512={};_0x47a512[_0xa400a2]={'$like':'%'+_0x979c96['query']['filter']+'%'};return _0x47a512;})});}_0x285edb=_[_0x5e8f('0x54')]({},_0x285edb,_0x979c96[_0x5e8f('0x55')]);return db['CannedAnswer'][_0x5e8f('0x33')]({'where':_0x285edb[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x18174c){_0x32b24a[_0x5e8f('0x33')]=_0x18174c;if(_0x979c96[_0x5e8f('0x45')][_0x5e8f('0x56')]){_0x285edb[_0x5e8f('0x5c')]=[{'all':!![]}];}return db[_0x5e8f('0x6b')]['findAll'](_0x285edb);})[_0x5e8f('0x24')](function(_0x546628){_0x32b24a[_0x5e8f('0x58')]=_0x546628;return _0x32b24a;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0x37c5b0,_0x285edb))['catch'](handleError(_0x37c5b0,null));};exports['removeAnswers']=function(_0x5a2f92,_0x1d0c60,_0x53cd0e){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x5a2f92[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x1d0c60,null))[_0x5e8f('0x24')](function(_0x1dab69){if(_0x1dab69){return _0x1dab69['removeAnswers'](_0x5a2f92['query'][_0x5e8f('0x6c')]);}})[_0x5e8f('0x24')](respondWithStatusCode(_0x1d0c60,null))[_0x5e8f('0x2c')](handleError(_0x1d0c60,null));};exports[_0x5e8f('0x6d')]=function(_0x4c2a7a,_0x3e0540,_0x2a2e5b){var _0x323c7f={'body':_0x4c2a7a[_0x5e8f('0x63')],'channel':_0x5e8f('0x6e')};var _0x50cf89=[];var _0x2c7270=[];var _0x232466={};var _0x5503b6=![];return db[_0x5e8f('0x6f')][_0x5e8f('0x64')]()[_0x5e8f('0x24')](function(_0x295102){if(!_0x295102){throw new db['Sequelize']['ValidationError'](_0x5e8f('0x70'));}_0x50cf89=_['difference'](_[_0x5e8f('0x46')](_0x295102),[_0x5e8f('0x71'),_0x5e8f('0x72')]);_0x2c7270=_[_0x5e8f('0x73')](_['keys'](_0x295102),[_0x5e8f('0x71'),'updatedAt',_0x5e8f('0x74'),'ListId']);if(_0x4c2a7a[_0x5e8f('0x63')]['id']){delete _0x4c2a7a[_0x5e8f('0x63')]['id'];}if(_[_0x5e8f('0x75')](_0x4c2a7a[_0x5e8f('0x63')]['from'])){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x78'));}if(_[_0x5e8f('0x75')](_0x4c2a7a['body'][_0x5e8f('0x63')])||_0x4c2a7a['body'][_0x5e8f('0x63')]===''){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x79'));}if(_[_0x5e8f('0x75')](_0x4c2a7a['body']['mapKey'])){throw new db[(_0x5e8f('0x76'))][(_0x5e8f('0x77'))](_0x5e8f('0x7a')+_0x2c7270);}if(!_[_0x5e8f('0x7b')](_0x2c7270,_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7c')])){throw new db[(_0x5e8f('0x76'))]['ValidationError'](_0x5e8f('0x7d')+_0x2c7270);}_0x232466[_0x4c2a7a['body'][_0x5e8f('0x7c')]]=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7e')];})[_0x5e8f('0x24')](function(){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x4c2a7a[_0x5e8f('0x5a')]['id']},'include':[{'model':db[_0x5e8f('0x7f')],'as':_0x5e8f('0x80'),'include':[{'model':db[_0x5e8f('0x6f')],'as':'Contacts','where':_0x232466,'limit':0x1,'order':[[_0x5e8f('0x72'),_0x5e8f('0x81')]]}]},{'model':db[_0x5e8f('0x82')],'as':_0x5e8f('0x83')}]});})['then'](handleEntityNotFound(_0x3e0540,null))[_0x5e8f('0x24')](function(_0x28b02d){if(_0x28b02d&&_0x28b02d['List']){_0x323c7f['account']=_0x28b02d;_0x323c7f['applications']=_0x28b02d[_0x5e8f('0x83')];_0x323c7f[_0x5e8f('0x84')]=_0x28b02d[_0x5e8f('0x80')];_0x323c7f[_0x5e8f('0x85')]=_[_0x5e8f('0x86')](_0x323c7f[_0x5e8f('0x85')],[_0x5e8f('0x87')],[_0x5e8f('0x88')]);if(_0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x83')]){delete _0x323c7f['account']['Applications'];}if(_0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x80')]&&_0x323c7f['account'][_0x5e8f('0x80')][_0x5e8f('0x8a')][_0x5e8f('0x4c')]){return _0x323c7f[_0x5e8f('0x89')][_0x5e8f('0x80')][_0x5e8f('0x8a')][0x0];}var _0x30b0ea=_[_0x5e8f('0x1b')](_0x4c2a7a[_0x5e8f('0x63')],{'firstName':_0x4c2a7a['body']['from'],'ListId':_0x28b02d[_0x5e8f('0x8b')]});_0x30b0ea[_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7c')]]=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x7e')];return db[_0x5e8f('0x6f')][_0x5e8f('0x5e')](_0x30b0ea,{'fields':_0x50cf89,'raw':!![]});}})['then'](handleEntityNotFound(_0x3e0540,null))[_0x5e8f('0x24')](function(_0x3ef491){_0x323c7f[_0x5e8f('0x8c')]=_0x3ef491;if(_0x3ef491){var _0x382ec4={'ContactId':_0x3ef491['id'],'OpenchannelAccountId':_0x4c2a7a[_0x5e8f('0x5a')]['id'],'from':(_0x3ef491[_0x5e8f('0x8d')]||'')+'\x20'+(_0x3ef491['lastName']||'')};var _0x52e44b={'OpenchannelAccountId':_0x4c2a7a['params']['id'],'closed':![]};if(_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x8e')]){_0x52e44b['threadId']=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x8e')];return db[_0x5e8f('0x8f')][_0x5e8f('0x5d')]({'where':_0x52e44b})['then'](function(_0x32c68c){if(_0x32c68c){return[_0x32c68c,![]];}_0x382ec4['threadId']=_0x4c2a7a['body'][_0x5e8f('0x8e')];_0x382ec4[_0x5e8f('0x90')]=_0x4c2a7a['body'][_0x5e8f('0x90')];return db[_0x5e8f('0x8f')]['create'](_0x382ec4)[_0x5e8f('0x24')](function(_0x49edd7){return[_0x49edd7,!![]];});});}else{_0x52e44b[_0x5e8f('0x8e')]=null;}_0x52e44b['ContactId']=_0x3ef491['id'];return db[_0x5e8f('0x8f')][_0x5e8f('0x5d')]({'where':_0x52e44b})[_0x5e8f('0x24')](function(_0x11ab15){if(_0x11ab15){return[_0x11ab15,![]];}return db[_0x5e8f('0x8f')][_0x5e8f('0x5e')](_0x382ec4)[_0x5e8f('0x24')](function(_0x3a065b){return[_0x3a065b,!![]];});});}})[_0x5e8f('0x91')](function(_0x3d358d,_0x5c3d53){if(_0x3d358d){_0x5503b6=_0x5c3d53;if(!_0x5c3d53){var _0x414832={'from':(_0x323c7f['contact'][_0x5e8f('0x8d')]||'')+'\x20'+(_0x323c7f[_0x5e8f('0x8c')][_0x5e8f('0x92')]||'')};if(_0x4c2a7a[_0x5e8f('0x63')]['threadId']&&_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')]&&_0x4c2a7a[_0x5e8f('0x63')]['threadId']!=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')]){_0x414832['threadId']=_0x4c2a7a[_0x5e8f('0x63')][_0x5e8f('0x93')];}return _0x3d358d[_0x5e8f('0x37')](_0x414832);}else{return _0x3d358d;}}})[_0x5e8f('0x24')](function(_0x41520c){_0x323c7f['interaction']=_0x41520c[_0x5e8f('0x38')]({'plain':!![]});_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x95')]=_0x5503b6;if(_0x323c7f['interaction']['created']){if(_0x323c7f[_0x5e8f('0x89')]['autoclose']){_0x323c7f[_0x5e8f('0x85')][_0x5e8f('0x96')]({'id':0x0,'priority':_0x323c7f['applications'][_0x5e8f('0x4c')]+0x1,'app':'close','appdata':_0x5e8f('0x97'),'interval':'*,*,*,*'});}}return db[_0x5e8f('0x98')]['create']({'body':_0x4c2a7a[_0x5e8f('0x63')]['body'],'OpenchannelAccountId':_0x4c2a7a[_0x5e8f('0x5a')]['id'],'OpenchannelInteractionId':_0x41520c['id'],'direction':'in','ContactId':_0x323c7f[_0x5e8f('0x8c')]['id'],'AttachmentId':_0x4c2a7a['body'][_0x5e8f('0x99')]});})[_0x5e8f('0x24')](function(_0x26eaf5){_0x323c7f[_0x5e8f('0x2b')]=_0x26eaf5;if(_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x9a')]){return db[_0x5e8f('0x9b')][_0x5e8f('0x5d')]({'attributes':['id',_0x5e8f('0x3c')],'where':{'id':_0x323c7f[_0x5e8f('0x94')][_0x5e8f('0x9a')]}})[_0x5e8f('0x24')](function(_0x44a131){if(_0x44a131){_0x323c7f[_0x5e8f('0x85')][_0x5e8f('0x9c')]({'id':0x0,'priority':0x0,'app':_0x5e8f('0x9d'),'appdata':_0x44a131['name']+','+(_0x323c7f[_0x5e8f('0x89')]['waitForTheAssignedAgent']||0xa),'interval':_0x5e8f('0x9e')});_0x323c7f[_0x5e8f('0x9f')]=![];}return respondWithRpcPromise('Start',_0x5e8f('0xa0'),_0x323c7f);});}return respondWithRpcPromise(_0x5e8f('0xa1'),_0x5e8f('0xa0'),_0x323c7f);})[_0x5e8f('0x24')](function(_0x560f5b){respondWithRpcPromise(_0x5e8f('0xa2'),_0x5e8f('0xa2'),{'event':_0x5e8f('0x6d'),'message':_0x560f5b},client9002);return _0x560f5b;})['then'](respondWithResult(_0x3e0540,null))['catch'](handleError(_0x3e0540,null));};exports[_0x5e8f('0xa3')]=function(_0x125753,_0x2e042a,_0x46819a){return db[_0x5e8f('0x41')]['findOne']({'where':{'id':_0x125753[_0x5e8f('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e042a,null))[_0x5e8f('0x24')](function(_0x3cde88){if(_0x3cde88){return db[_0x5e8f('0xa4')]['transaction'](function(_0x26fdc0){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x125753['params']['id']},'transaction':_0x26fdc0})[_0x5e8f('0x24')](function(_0x51c4d2){var _0x36a6b2=_[_0x5e8f('0x40')](_0x125753[_0x5e8f('0x63')],function(_0xdc2f39){_0xdc2f39[_0x5e8f('0x66')]=_0x125753[_0x5e8f('0x5a')]['id'];return _0xdc2f39;});return db['OpenchannelApplication'][_0x5e8f('0xa5')](_0x36a6b2,{'transaction':_0x26fdc0});});})['then'](function(){return db[_0x5e8f('0x82')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x125753[_0x5e8f('0x5a')]['id']},'order':'priority'});});}})[_0x5e8f('0x24')](respondWithResult(_0x2e042a,null))[_0x5e8f('0x2c')](handleError(_0x2e042a,null));};exports['getApplications']=function(_0x2fc9f6,_0x275d39,_0xf126fe){var _0x5dc579={};var _0x53e6fd={};var _0x1fd2f2;var _0x54ee9e;return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x2fc9f6[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x275d39,null))[_0x5e8f('0x24')](function(_0x258610){if(_0x258610){_0x1fd2f2=_0x258610;_0x53e6fd[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x82')][_0x5e8f('0x42')]);_0x53e6fd[_0x5e8f('0x45')]=_[_0x5e8f('0x46')](_0x2fc9f6[_0x5e8f('0x45')]);_0x53e6fd['filters']=_[_0x5e8f('0x4a')](_0x53e6fd[_0x5e8f('0x48')],_0x53e6fd[_0x5e8f('0x45')]);_0x5dc579[_0x5e8f('0x49')]=_['intersection'](_0x53e6fd[_0x5e8f('0x48')],qs['fields'](_0x2fc9f6[_0x5e8f('0x45')]['fields']));_0x5dc579[_0x5e8f('0x49')]=_0x5dc579[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x5dc579['attributes']:_0x53e6fd[_0x5e8f('0x48')];_0x5dc579[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x5dc579[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_['pick'](_0x2fc9f6[_0x5e8f('0x45')],_0x53e6fd['filters']));if(_0x2fc9f6[_0x5e8f('0x45')]['filter']){_0x5dc579[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x5dc579[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x5dc579['attributes'],function(_0x58ce2c){var _0xb3627a={};_0xb3627a[_0x58ce2c]={'$like':'%'+_0x2fc9f6['query']['filter']+'%'};return _0xb3627a;})});}_0x5dc579=_['merge']({},_0x5dc579,_0x2fc9f6['options']);return _0x1fd2f2[_0x5e8f('0xa6')](_0x5dc579);}})[_0x5e8f('0x24')](function(_0x3a621c){if(_0x3a621c){_0x54ee9e=_0x3a621c[_0x5e8f('0x4c')];if(!_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x5dc579['limit']=qs[_0x5e8f('0x32')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x5dc579[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x2fc9f6[_0x5e8f('0x45')][_0x5e8f('0x31')]);}return _0x1fd2f2['getApplications'](_0x5dc579);}})[_0x5e8f('0x24')](function(_0x413bfa){if(_0x413bfa){return _0x413bfa?{'count':_0x54ee9e,'rows':_0x413bfa}:null;}})['then'](respondWithResult(_0x275d39,null))[_0x5e8f('0x2c')](handleError(_0x275d39,null));};exports['getInteractions']=function(_0x1315cd,_0x428322,_0x1963fe){var _0x13e07b={'raw':![],'where':{}};var _0x5cd851={};var _0x392eb7={'count':0x0,'rows':[]};return db[_0x5e8f('0x41')]['findOne']({'where':{'id':_0x1315cd[_0x5e8f('0x5a')]['id']}})['then'](handleEntityNotFound(_0x428322,null))[_0x5e8f('0x24')](function(_0x2a3337){if(_0x2a3337){_0x5cd851[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x8f')][_0x5e8f('0x42')]);_0x5cd851['query']=_[_0x5e8f('0x46')](_0x1315cd['query']);_0x5cd851['filters']=_[_0x5e8f('0x4a')](_0x5cd851[_0x5e8f('0x48')],_0x5cd851[_0x5e8f('0x45')]);_0x13e07b[_0x5e8f('0x49')]=_[_0x5e8f('0x4a')](_0x5cd851[_0x5e8f('0x48')],qs[_0x5e8f('0x4b')](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x4b')]));_0x13e07b['attributes']=_0x13e07b[_0x5e8f('0x49')][_0x5e8f('0x4c')]?_0x13e07b[_0x5e8f('0x49')]:_0x5cd851[_0x5e8f('0x48')];if(!_0x1315cd['query'][_0x5e8f('0x4d')](_0x5e8f('0x4e'))){_0x13e07b[_0x5e8f('0x32')]=qs[_0x5e8f('0x32')](_0x1315cd['query']['limit']);_0x13e07b[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x31')]);}_0x13e07b[_0x5e8f('0x4f')]=qs['sort'](_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x50')]);_0x13e07b[_0x5e8f('0x51')]=qs[_0x5e8f('0x47')](_[_0x5e8f('0x52')](_0x1315cd[_0x5e8f('0x45')],_0x5cd851[_0x5e8f('0x47')]));_0x13e07b['where'][_0x5e8f('0x66')]=_0x2a3337['id'];if(_0x1315cd['query'][_0x5e8f('0x53')]){_0x13e07b[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x13e07b[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x13e07b['attributes'],function(_0x111178){var _0xfc9eec={};_0xfc9eec[_0x111178]={'$like':'%'+_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0xfc9eec;})});}_0x13e07b=_[_0x5e8f('0x54')]({},_0x13e07b,_0x1315cd[_0x5e8f('0x55')]);return db[_0x5e8f('0x8f')][_0x5e8f('0x33')]({'where':_0x13e07b[_0x5e8f('0x51')]})[_0x5e8f('0x24')](function(_0x3dd728){_0x392eb7[_0x5e8f('0x33')]=_0x3dd728;if(_0x1315cd['query']['includeAll']){_0x13e07b['include']=[{'model':db[_0x5e8f('0x6f')],'as':'Contact','required':![]},{'model':db[_0x5e8f('0x9b')],'as':'Owner','attributes':[_0x5e8f('0x3c'),'fullname',_0x5e8f('0xa7')],'required':![]},{'model':db[_0x5e8f('0xa8')],'as':_0x5e8f('0xa9'),'attributes':['id',_0x5e8f('0x3c'),_0x5e8f('0xaa')],'where':_0x1315cd['query'][_0x5e8f('0xab')]?{'id':_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0xab')]}:undefined,'required':_0x1315cd[_0x5e8f('0x45')][_0x5e8f('0xab')]?!![]:![]}];}return db[_0x5e8f('0x8f')][_0x5e8f('0x57')](_0x13e07b);})[_0x5e8f('0x24')](function(_0x548bbe){_0x392eb7[_0x5e8f('0x58')]=_0x548bbe;return _0x392eb7;});}})[_0x5e8f('0x24')](respondWithFilteredResult(_0x428322,_0x13e07b))['catch'](handleError(_0x428322,null));};exports['addAgents']=function(_0x10f9f1,_0x41ead5,_0x3d567e){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x10f9f1[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x41ead5,null))[_0x5e8f('0x24')](function(_0x1851e1){if(_0x1851e1){return _0x1851e1[_0x5e8f('0xac')](_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')],_[_0x5e8f('0xad')](_0x10f9f1[_0x5e8f('0x63')],[_0x5e8f('0x6c'),'id'])||{})[_0x5e8f('0x91')](function(_0x23ff2b){for(var _0x3f750b=0x0;_0x3f750b<_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')][_0x5e8f('0x4c')];_0x3f750b+=0x1){socket[_0x5e8f('0xae')](_0x5e8f('0xaf'),{'UserId':Number(_0x10f9f1[_0x5e8f('0x63')][_0x5e8f('0x6c')][_0x3f750b]),'OpenchannelAccountId':Number(_0x10f9f1['params']['id'])});}return _0x23ff2b;});}})[_0x5e8f('0x24')](respondWithResult(_0x41ead5,null))['catch'](handleError(_0x41ead5,null));};exports[_0x5e8f('0xb0')]=function(_0x3ee764,_0x48ec00,_0xd32b92){return db[_0x5e8f('0x41')]['find']({'where':{'id':_0x3ee764[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x48ec00,null))[_0x5e8f('0x24')](function(_0x12af2c){if(_0x12af2c){return _0x12af2c['removeAgents'](_0x3ee764[_0x5e8f('0x45')]['ids'])['then'](function(){if(_[_0x5e8f('0xb1')](_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')])){for(var _0x527355=0x0;_0x527355<_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')][_0x5e8f('0x4c')];_0x527355+=0x1){socket[_0x5e8f('0xae')](_0x5e8f('0xb2'),{'UserId':Number(_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')][_0x527355]),'OpenchannelAccountId':Number(_0x3ee764['params']['id'])});}}else{socket[_0x5e8f('0xae')](_0x5e8f('0xb2'),{'UserId':Number(_0x3ee764[_0x5e8f('0x45')][_0x5e8f('0x6c')]),'OpenchannelAccountId':Number(_0x3ee764['params']['id'])});}});}})[_0x5e8f('0x24')](respondWithStatusCode(_0x48ec00,null))[_0x5e8f('0x2c')](handleError(_0x48ec00,null));};exports['getAgents']=function(_0x429bf5,_0x42e2bb,_0x59bf76){var _0x1bdbb5={};var _0x53f108={};var _0x5ebdca;var _0x538984;return db[_0x5e8f('0x41')][_0x5e8f('0x69')]({'where':{'id':_0x429bf5['params']['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0x42e2bb,null))[_0x5e8f('0x24')](function(_0x1e2da4){if(_0x1e2da4){_0x5ebdca=_0x1e2da4;_0x53f108[_0x5e8f('0x48')]=_[_0x5e8f('0x46')](db[_0x5e8f('0x9b')][_0x5e8f('0x42')]);_0x53f108[_0x5e8f('0x45')]=_['keys'](_0x429bf5[_0x5e8f('0x45')]);_0x53f108[_0x5e8f('0x47')]=_[_0x5e8f('0x4a')](_0x53f108[_0x5e8f('0x48')],_0x53f108[_0x5e8f('0x45')]);_0x1bdbb5[_0x5e8f('0x49')]=_['intersection'](_0x53f108['model'],qs[_0x5e8f('0x4b')](_0x429bf5[_0x5e8f('0x45')]['fields']));_0x1bdbb5['attributes']=_0x1bdbb5[_0x5e8f('0x49')]['length']?_0x1bdbb5['attributes']:_0x53f108[_0x5e8f('0x48')];_0x1bdbb5[_0x5e8f('0x4f')]=qs[_0x5e8f('0x50')](_0x429bf5['query'][_0x5e8f('0x50')]);_0x1bdbb5[_0x5e8f('0x51')]=qs['filters'](_[_0x5e8f('0x52')](_0x429bf5[_0x5e8f('0x45')],_0x53f108[_0x5e8f('0x47')]));if(_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x53')]){_0x1bdbb5[_0x5e8f('0x51')]=_[_0x5e8f('0x54')](_0x1bdbb5[_0x5e8f('0x51')],{'$or':_[_0x5e8f('0x40')](_0x1bdbb5['attributes'],function(_0x4dd0ec){var _0x23cc8b={};_0x23cc8b[_0x4dd0ec]={'$like':'%'+_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x53')]+'%'};return _0x23cc8b;})});}_0x1bdbb5=_[_0x5e8f('0x54')]({},_0x1bdbb5,_0x429bf5[_0x5e8f('0x55')]);return _0x5ebdca[_0x5e8f('0xb3')](_0x1bdbb5);}})['then'](function(_0x34c542){if(_0x34c542){_0x538984=_0x34c542['length'];if(!_0x429bf5[_0x5e8f('0x45')]['hasOwnProperty'](_0x5e8f('0x4e'))){_0x1bdbb5[_0x5e8f('0x32')]=qs['limit'](_0x429bf5[_0x5e8f('0x45')][_0x5e8f('0x32')]);_0x1bdbb5[_0x5e8f('0x31')]=qs[_0x5e8f('0x31')](_0x429bf5[_0x5e8f('0x45')]['offset']);}return _0x5ebdca[_0x5e8f('0xb3')](_0x1bdbb5);}})[_0x5e8f('0x24')](function(_0x5704ce){if(_0x5704ce){return _0x5704ce?{'count':_0x538984,'rows':_0x5704ce}:null;}})[_0x5e8f('0x24')](respondWithResult(_0x42e2bb,null))[_0x5e8f('0x2c')](handleError(_0x42e2bb,null));};exports[_0x5e8f('0x3d')]=function(_0x59129f,_0xe6159b,_0x564e6c){var _0xac40cf,_0x2822cf,_0x1ae6ab;if(_[_0x5e8f('0x75')](_0x59129f[_0x5e8f('0x63')][_0x5e8f('0x63')])||_0x59129f[_0x5e8f('0x63')]['body']===''){throw new db[(_0x5e8f('0x76'))]['ValidationError'](_0x5e8f('0x79'));}if(_[_0x5e8f('0x75')](_0x59129f[_0x5e8f('0x63')]['to'])){}_0xac40cf=_0x59129f['body']['to'];return db['OpenchannelAccount'][_0x5e8f('0x69')]({'where':{'id':_0x59129f[_0x5e8f('0x5a')]['id']}})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x5f04bf){if(_0x5f04bf){return db[_0x5e8f('0x41')][_0x5e8f('0x5d')]({'where':{'id':_0x5f04bf['id']},'include':[{'model':db[_0x5e8f('0x7f')],'as':_0x5e8f('0x80'),'include':[{'model':db[_0x5e8f('0x6f')],'as':_0x5e8f('0x8a'),'where':{[_0x5f04bf['mapKey']]:_0xac40cf},'limit':0x1,'order':[[_0x5e8f('0x72'),_0x5e8f('0x81')]]}]}]})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x51d052){if(_0x51d052&&_0x51d052[_0x5e8f('0x80')]){_0x2822cf=_0x51d052[_0x5e8f('0x38')]({'plain':!![]});if(_0x2822cf['List']&&_0x2822cf[_0x5e8f('0x80')][_0x5e8f('0x8a')][_0x5e8f('0x4c')]){return _0x2822cf[_0x5e8f('0x80')]['Contacts'][0x0];}return db['CmContact'][_0x5e8f('0x5e')](_[_0x5e8f('0x1b')](_0x59129f[_0x5e8f('0x63')],{'firstName':_0xac40cf,[_0x51d052[_0x5e8f('0x7c')]]:_0xac40cf,'phone':_0xac40cf,'ListId':_0x2822cf[_0x5e8f('0x8b')]}));}})[_0x5e8f('0x24')](handleEntityNotFound(_0xe6159b,null))[_0x5e8f('0x24')](function(_0x2d6c67){if(_0x2d6c67){_0x1ae6ab=_0x2d6c67;return db['OpenchannelInteraction']['find']({'where':{'ContactId':_0x1ae6ab['id'],'closed':![],'OpenchannelAccountId':_0x2822cf['id']}})[_0x5e8f('0x24')](function(_0x333d5e){if(_0x333d5e){return[_0x333d5e,![]];}return db['OpenchannelInteraction'][_0x5e8f('0x5e')]({'UserId':_0x59129f['user']['id'],'ContactId':_0x1ae6ab['id'],'OpenchannelAccountId':_0x2822cf['id'],'lastMsgDirection':_0x5e8f('0xb4'),'Messages':[_[_0x5e8f('0x54')](_0x59129f[_0x5e8f('0x63')],{'read':![],'body':_0x59129f[_0x5e8f('0x63')][_0x5e8f('0x63')],'OpenchannelAccountId':_0x2822cf['id'],'UserId':_0x59129f[_0x5e8f('0x5f')]['id'],'ContactId':_0x1ae6ab['id']})]},{'include':[{'model':db[_0x5e8f('0x98')],'as':'Messages'}]})['then'](function(_0x5677f4){return[_0x5677f4,!![]];});});}})['spread'](function(_0x31f5fa,_0xb362cf){if(_0xb362cf){return _0x31f5fa;}return db[_0x5e8f('0x98')][_0x5e8f('0x5e')](_[_0x5e8f('0x54')](_0x59129f[_0x5e8f('0x63')],{'read':![],'body':_0x59129f[_0x5e8f('0x63')]['body'],'OpenchannelAccountId':_0x2822cf['id'],'OpenchannelInteractionId':_0x31f5fa['id'],'UserId':_0x59129f[_0x5e8f('0x5f')]['id'],'ContactId':_0x1ae6ab['id']}))[_0x5e8f('0x24')](function(_0x219fc0){_0x31f5fa[_0x5e8f('0xb5')][_0x5e8f('0xb6')]=[];_0x31f5fa[_0x5e8f('0xb5')][_0x5e8f('0xb6')][_0x5e8f('0x96')](_0x219fc0[_0x5e8f('0xb5')]);return _0x31f5fa;});});}})['then'](respondWithResult(_0xe6159b,null))[_0x5e8f('0x2c')](handleError(_0xe6159b,null));};
\ No newline at end of file
+var _0xd20e=['emit','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','Messages','dataValues','eml-format','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','OpenchannelAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','OpenchannelApplication','Applications','account','list','orderBy','priority','asc','Contacts','contact','firstName','threadId','externalUrl','ContactId','OpenchannelInteraction','spread','messageId','interaction','created','autoclose','push','applications','close','unmanaged','*,*,*,*','OpenchannelMessage','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','removeAgents','isArray'];(function(_0x2d81fc,_0x2554ac){var _0x478d4d=function(_0x272b60){while(--_0x272b60){_0x2d81fc['push'](_0x2d81fc['shift']());}};_0x478d4d(++_0x2554ac);}(_0xd20e,0x198));var _0xed20=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xd20e[_0x50a0c2];return _0x5ebadd;};'use strict';var emlformat=require(_0xed20('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xed20('0x1'));var rp=require('request-promise');var moment=require(_0xed20('0x2'));var BPromise=require(_0xed20('0x3'));var Mustache=require('mustache');var util=require(_0xed20('0x4'));var path=require(_0xed20('0x5'));var sox=require(_0xed20('0x6'));var csv=require(_0xed20('0x7'));var ejs=require(_0xed20('0x8'));var fs=require('fs');var fs_extra=require(_0xed20('0x9'));var _=require(_0xed20('0xa'));var squel=require(_0xed20('0xb'));var crypto=require(_0xed20('0xc'));var jsforce=require(_0xed20('0xd'));var deskjs=require(_0xed20('0xe'));var toCsv=require(_0xed20('0x7'));var querystring=require(_0xed20('0xf'));var Papa=require(_0xed20('0x10'));var Redis=require(_0xed20('0x11'));var authService=require(_0xed20('0x12'));var qs=require(_0xed20('0x13'));var as=require(_0xed20('0x14'));var hardwareService=require(_0xed20('0x15'));var logger=require(_0xed20('0x16'))('api');var utils=require(_0xed20('0x17'));var config=require(_0xed20('0x18'));var licenseUtil=require(_0xed20('0x19'));var db=require(_0xed20('0x1a'))['db'];config[_0xed20('0x1b')]=_[_0xed20('0x1c')](config['redis'],{'host':_0xed20('0x1d'),'port':0x18eb});var socket=require(_0xed20('0x1e'))(new Redis(config[_0xed20('0x1b')]));require(_0xed20('0x1f'))[_0xed20('0x20')](socket);var jayson=require(_0xed20('0x21'));var client=jayson[_0xed20('0x22')][_0xed20('0x23')]({'port':0x232c});var client9002=jayson[_0xed20('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54b171,_0x4dd70e,_0x5f389b,_0x5ecb6a){return new BPromise(function(_0x137c5b,_0x2483b3){var _0x30ad8c=_0x5ecb6a||client;return _0x30ad8c[_0xed20('0x24')](_0x54b171,_0x5f389b)[_0xed20('0x25')](function(_0xc4b25){logger[_0xed20('0x26')](_0xed20('0x27'),_0x4dd70e,_0xed20('0x28'));logger[_0xed20('0x29')](_0xed20('0x2a'),_0x4dd70e,_0xed20('0x28'),JSON[_0xed20('0x2b')](_0xc4b25));if(_0xc4b25[_0xed20('0x2c')]){if(_0xc4b25['error'][_0xed20('0x2d')]===0x1f4){logger[_0xed20('0x2c')]('OpenchannelAccount,\x20%s,\x20%s',_0x4dd70e,_0xc4b25['error'][_0xed20('0x2e')]);return _0x2483b3(_0xc4b25[_0xed20('0x2c')][_0xed20('0x2e')]);}logger['error'](_0xed20('0x27'),_0x4dd70e,_0xc4b25['error']['message']);return _0x137c5b(_0xc4b25[_0xed20('0x2c')][_0xed20('0x2e')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x4dd70e,_0xed20('0x28'));_0x137c5b(_0xc4b25[_0xed20('0x2f')][_0xed20('0x2e')]);}})[_0xed20('0x30')](function(_0x53206b){logger[_0xed20('0x2c')]('OpenchannelAccount,\x20%s,\x20%s',_0x4dd70e,_0x53206b);_0x2483b3(_0x53206b);});});}function respondWithStatusCode(_0x272e58,_0x4944aa){_0x4944aa=_0x4944aa||0xcc;return function(_0x59955b){if(_0x59955b){return _0x272e58[_0xed20('0x31')](_0x4944aa);}return _0x272e58[_0xed20('0x32')](_0x4944aa)[_0xed20('0x33')]();};}function respondWithResult(_0x3e644c,_0x167572){_0x167572=_0x167572||0xc8;return function(_0x50ba74){if(_0x50ba74){return _0x3e644c['status'](_0x167572)['json'](_0x50ba74);}};}function respondWithFilteredResult(_0x150755,_0xf94cae){return function(_0x142b15){if(_0x142b15){var _0x40f48e=typeof _0xf94cae['offset']===_0xed20('0x34')&&typeof _0xf94cae[_0xed20('0x35')]==='undefined';var _0xcb1829=_0x142b15[_0xed20('0x36')];var _0x50dbdb=_0x40f48e?0x0:_0xf94cae['offset'];var _0x39dc07=_0x40f48e?_0x142b15[_0xed20('0x36')]:_0xf94cae[_0xed20('0x37')]+_0xf94cae[_0xed20('0x35')];var _0x3ebc5e;if(_0x39dc07>=_0xcb1829){_0x39dc07=_0xcb1829;_0x3ebc5e=0xc8;}else{_0x3ebc5e=0xce;}_0x150755[_0xed20('0x32')](_0x3ebc5e);return _0x150755[_0xed20('0x38')](_0xed20('0x39'),_0x50dbdb+'-'+_0x39dc07+'/'+_0xcb1829)[_0xed20('0x3a')](_0x142b15);}return null;};}function patchUpdates(_0x9f7db5){return function(_0x37d464){try{jsonpatch[_0xed20('0x3b')](_0x37d464,_0x9f7db5,!![]);}catch(_0x59a675){return BPromise[_0xed20('0x3c')](_0x59a675);}return _0x37d464[_0xed20('0x3d')]();};}function saveUpdates(_0x54e0e3,_0x48e5dc){return function(_0x5e3b92){if(_0x5e3b92){return _0x5e3b92[_0xed20('0x3e')](_0x54e0e3)['then'](function(_0x45f4e0){return _0x45f4e0;});}return null;};}function removeEntity(_0x18c986,_0x14c84f){return function(_0x3b3087){if(_0x3b3087){return _0x3b3087[_0xed20('0x3f')]()[_0xed20('0x25')](function(){var _0x314d00=_0x3b3087[_0xed20('0x40')]({'plain':!![]});var _0x529a51=_0xed20('0x41');return db[_0xed20('0x42')][_0xed20('0x3f')]({'where':{'type':_0x529a51,'resourceId':_0x314d00['id']}})['then'](function(){return _0x3b3087;});})['then'](function(){_0x18c986[_0xed20('0x32')](0xcc)[_0xed20('0x33')]();});}};}function handleEntityNotFound(_0x21eae3,_0x2153b5){return function(_0x41fa0a){if(!_0x41fa0a){_0x21eae3[_0xed20('0x31')](0x194);}return _0x41fa0a;};}function handleError(_0x3b451f,_0x2254b0){_0x2254b0=_0x2254b0||0x1f4;return function(_0xf2fc0d){logger[_0xed20('0x2c')](_0xf2fc0d[_0xed20('0x43')]);if(_0xf2fc0d[_0xed20('0x44')]){delete _0xf2fc0d[_0xed20('0x44')];}_0x3b451f['status'](_0x2254b0)[_0xed20('0x45')](_0xf2fc0d);};}exports[_0xed20('0x46')]=function(_0x562a24,_0x3bdf42){var _0x106a47={'include':[{'model':db[_0xed20('0x47')],'as':_0xed20('0x48')}]},_0x1b57d6={},_0x2599c7={'count':0x0,'rows':[]};var _0x32dfa8=_[_0xed20('0x49')](db[_0xed20('0x4a')][_0xed20('0x4b')],function(_0x249eec){return{'name':_0x249eec[_0xed20('0x4c')],'type':_0x249eec[_0xed20('0x4d')][_0xed20('0x4e')]};});_0x1b57d6['model']=_[_0xed20('0x49')](_0x32dfa8,'name');_0x1b57d6['query']=_[_0xed20('0x4f')](_0x562a24[_0xed20('0x50')]);_0x1b57d6[_0xed20('0x51')]=_[_0xed20('0x52')](_0x1b57d6[_0xed20('0x53')],_0x1b57d6[_0xed20('0x50')]);_0x106a47[_0xed20('0x54')]=_['intersection'](_0x1b57d6[_0xed20('0x53')],qs['fields'](_0x562a24['query'][_0xed20('0x55')]));_0x106a47[_0xed20('0x54')]=_0x106a47[_0xed20('0x54')][_0xed20('0x56')]?_0x106a47['attributes']:_0x1b57d6[_0xed20('0x53')];if(!_0x562a24[_0xed20('0x50')][_0xed20('0x57')](_0xed20('0x58'))){_0x106a47[_0xed20('0x35')]=qs[_0xed20('0x35')](_0x562a24[_0xed20('0x50')][_0xed20('0x35')]);_0x106a47[_0xed20('0x37')]=qs[_0xed20('0x37')](_0x562a24[_0xed20('0x50')]['offset']);}_0x106a47[_0xed20('0x59')]=qs['sort'](_0x562a24['query'][_0xed20('0x5a')]);_0x106a47[_0xed20('0x5b')]=qs[_0xed20('0x51')](_[_0xed20('0x5c')](_0x562a24[_0xed20('0x50')],_0x1b57d6[_0xed20('0x51')]),_0x32dfa8);if(_0x562a24[_0xed20('0x50')][_0xed20('0x5d')]){_0x106a47[_0xed20('0x5b')]=_[_0xed20('0x5e')](_0x106a47['where'],{'$or':_[_0xed20('0x49')](_0x32dfa8,function(_0x289573){if(_0x289573[_0xed20('0x4d')]!=='VIRTUAL'){var _0xa3aa4f={};_0xa3aa4f[_0x289573['name']]={'$like':'%'+_0x562a24[_0xed20('0x50')][_0xed20('0x5d')]+'%'};return _0xa3aa4f;}})});}_0x106a47=_['merge']({},_0x106a47,_0x562a24[_0xed20('0x5f')]);var _0x3bb4c8={'where':_0x106a47['where']};return db[_0xed20('0x4a')][_0xed20('0x36')](_0x3bb4c8)[_0xed20('0x25')](function(_0x32ecb4){_0x2599c7[_0xed20('0x36')]=_0x32ecb4;if(_0x562a24[_0xed20('0x50')][_0xed20('0x60')]){_0x106a47[_0xed20('0x61')]=[{'all':!![]}];}return db[_0xed20('0x4a')]['findAll'](_0x106a47);})['then'](function(_0x5e0750){_0x2599c7[_0xed20('0x62')]=_0x5e0750;return _0x2599c7;})[_0xed20('0x25')](respondWithFilteredResult(_0x3bdf42,_0x106a47))['catch'](handleError(_0x3bdf42,null));};exports[_0xed20('0x63')]=function(_0x8d416d,_0x51f8a9){var _0x3c3f47={'raw':![],'where':{'id':_0x8d416d[_0xed20('0x64')]['id']},'include':[{'model':db[_0xed20('0x47')],'as':_0xed20('0x48')}]},_0x146277={};_0x146277[_0xed20('0x53')]=_[_0xed20('0x4f')](db[_0xed20('0x4a')][_0xed20('0x4b')]);_0x146277[_0xed20('0x50')]=_[_0xed20('0x4f')](_0x8d416d[_0xed20('0x50')]);_0x146277[_0xed20('0x51')]=_[_0xed20('0x52')](_0x146277[_0xed20('0x53')],_0x146277[_0xed20('0x50')]);_0x3c3f47[_0xed20('0x54')]=_['intersection'](_0x146277[_0xed20('0x53')],qs['fields'](_0x8d416d['query'][_0xed20('0x55')]));_0x3c3f47[_0xed20('0x54')]=_0x3c3f47[_0xed20('0x54')]['length']?_0x3c3f47[_0xed20('0x54')]:_0x146277[_0xed20('0x53')];if(_0x8d416d[_0xed20('0x50')]['includeAll']){_0x3c3f47[_0xed20('0x61')]=[{'all':!![]}];}_0x3c3f47=_[_0xed20('0x5e')]({},_0x3c3f47,_0x8d416d[_0xed20('0x5f')]);return db[_0xed20('0x4a')]['find'](_0x3c3f47)[_0xed20('0x25')](handleEntityNotFound(_0x51f8a9,null))[_0xed20('0x25')](respondWithResult(_0x51f8a9,null))[_0xed20('0x30')](handleError(_0x51f8a9,null));};exports[_0xed20('0x65')]=function(_0x1db7b7,_0x25ca9b){return db[_0xed20('0x4a')][_0xed20('0x65')](_0x1db7b7[_0xed20('0x66')],{})[_0xed20('0x25')](function(_0x5e0892){var _0xb49e12=_0x1db7b7['user'][_0xed20('0x40')]({'plain':!![]});if(!_0xb49e12)throw new Error(_0xed20('0x67'));if(_0xb49e12[_0xed20('0x68')]==='user'){var _0x10124a=_0x5e0892[_0xed20('0x40')]({'plain':!![]});var _0x1c2c2d=_0xed20('0x41');return db['UserProfileSection'][_0xed20('0x69')]({'where':{'name':_0x1c2c2d,'userProfileId':_0xb49e12[_0xed20('0x6a')]},'raw':!![]})['then'](function(_0x313a5e){if(_0x313a5e&&_0x313a5e[_0xed20('0x6b')]===0x0){return db[_0xed20('0x42')][_0xed20('0x65')]({'name':_0x10124a[_0xed20('0x44')],'resourceId':_0x10124a['id'],'type':_0x313a5e[_0xed20('0x44')],'sectionId':_0x313a5e['id']},{})[_0xed20('0x25')](function(){return _0x5e0892;});}else{return _0x5e0892;}})[_0xed20('0x30')](function(_0x22b34e){logger['error'](_0xed20('0x6c'),_0x22b34e);throw _0x22b34e;});}return _0x5e0892;})['then'](respondWithResult(_0x25ca9b,0xc9))[_0xed20('0x30')](handleError(_0x25ca9b,null));};exports['update']=function(_0x446908,_0x7aa0aa){if(_0x446908[_0xed20('0x66')]['id']){delete _0x446908[_0xed20('0x66')]['id'];}return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x446908[_0xed20('0x64')]['id']},'include':[{'model':db['Pause'],'as':_0xed20('0x48')}]})[_0xed20('0x25')](handleEntityNotFound(_0x7aa0aa,null))[_0xed20('0x25')](saveUpdates(_0x446908['body'],null))[_0xed20('0x25')](respondWithResult(_0x7aa0aa,null))['catch'](handleError(_0x7aa0aa,null));};exports[_0xed20('0x3f')]=function(_0x27b26d,_0x3f0dc9){return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x27b26d[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x3f0dc9,null))[_0xed20('0x25')](removeEntity(_0x3f0dc9,null))[_0xed20('0x30')](handleError(_0x3f0dc9,null));};exports[_0xed20('0x6d')]=function(_0x3e44c4,_0x44c1de){return db['OpenchannelAccount'][_0xed20('0x6d')]()[_0xed20('0x25')](respondWithResult(_0x44c1de,null))['catch'](handleError(_0x44c1de,null));};exports['addDisposition']=function(_0x1d8bad,_0x440970,_0x94c080){if(_0x1d8bad[_0xed20('0x66')]['id']){delete _0x1d8bad[_0xed20('0x66')]['id'];}return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x1d8bad[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x440970,null))[_0xed20('0x25')](function(_0x33e5ef){if(_0x33e5ef){_0x1d8bad[_0xed20('0x66')][_0xed20('0x6e')]=_0x33e5ef['id'];return db[_0xed20('0x6f')][_0xed20('0x65')](_0x1d8bad[_0xed20('0x66')]);}})[_0xed20('0x25')](respondWithResult(_0x440970,null))[_0xed20('0x30')](handleError(_0x440970,null));};exports[_0xed20('0x70')]=function(_0x1512f3,_0x49fd83,_0x4cbd30){var _0x3e7ab4={'raw':![],'where':{}};var _0xa895f8={};var _0x35df30={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0xed20('0x71')]({'where':{'id':_0x1512f3[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x49fd83,null))[_0xed20('0x25')](function(_0x2f87eb){if(_0x2f87eb){_0xa895f8[_0xed20('0x53')]=_[_0xed20('0x4f')](db[_0xed20('0x6f')]['rawAttributes']);_0xa895f8[_0xed20('0x50')]=_[_0xed20('0x4f')](_0x1512f3[_0xed20('0x50')]);_0xa895f8[_0xed20('0x51')]=_[_0xed20('0x52')](_0xa895f8['model'],_0xa895f8[_0xed20('0x50')]);_0x3e7ab4[_0xed20('0x54')]=_['intersection'](_0xa895f8[_0xed20('0x53')],qs['fields'](_0x1512f3[_0xed20('0x50')][_0xed20('0x55')]));_0x3e7ab4[_0xed20('0x54')]=_0x3e7ab4[_0xed20('0x54')][_0xed20('0x56')]?_0x3e7ab4[_0xed20('0x54')]:_0xa895f8[_0xed20('0x53')];if(!_0x1512f3[_0xed20('0x50')][_0xed20('0x57')]('nolimit')){_0x3e7ab4[_0xed20('0x35')]=qs[_0xed20('0x35')](_0x1512f3[_0xed20('0x50')][_0xed20('0x35')]);_0x3e7ab4['offset']=qs[_0xed20('0x37')](_0x1512f3[_0xed20('0x50')][_0xed20('0x37')]);}_0x3e7ab4['order']=qs['sort'](_0x1512f3[_0xed20('0x50')][_0xed20('0x5a')]);_0x3e7ab4[_0xed20('0x5b')]=qs[_0xed20('0x51')](_['pick'](_0x1512f3['query'],_0xa895f8['filters']));_0x3e7ab4[_0xed20('0x5b')][_0xed20('0x6e')]=_0x2f87eb['id'];if(_0x1512f3[_0xed20('0x50')]['filter']){_0x3e7ab4[_0xed20('0x5b')]=_[_0xed20('0x5e')](_0x3e7ab4[_0xed20('0x5b')],{'$or':_[_0xed20('0x49')](_0x3e7ab4[_0xed20('0x54')],function(_0x505f49){var _0x3ca632={};_0x3ca632[_0x505f49]={'$like':'%'+_0x1512f3[_0xed20('0x50')][_0xed20('0x5d')]+'%'};return _0x3ca632;})});}_0x3e7ab4=_['merge']({},_0x3e7ab4,_0x1512f3[_0xed20('0x5f')]);return db['Disposition'][_0xed20('0x36')]({'where':_0x3e7ab4[_0xed20('0x5b')]})[_0xed20('0x25')](function(_0xea43ed){_0x35df30[_0xed20('0x36')]=_0xea43ed;if(_0x1512f3[_0xed20('0x50')][_0xed20('0x60')]){_0x3e7ab4['include']=[{'all':!![]}];}return db[_0xed20('0x6f')][_0xed20('0x72')](_0x3e7ab4);})['then'](function(_0xd6212f){_0x35df30[_0xed20('0x62')]=_0xd6212f;return _0x35df30;});}})[_0xed20('0x25')](respondWithFilteredResult(_0x49fd83,_0x3e7ab4))[_0xed20('0x30')](handleError(_0x49fd83,null));};exports[_0xed20('0x73')]=function(_0x18dbd4,_0x657979,_0x8680d2){return db['OpenchannelAccount'][_0xed20('0x69')]({'where':{'id':_0x18dbd4['params']['id']}})['then'](handleEntityNotFound(_0x657979,null))[_0xed20('0x25')](function(_0x4d529a){if(_0x4d529a){return _0x4d529a[_0xed20('0x73')](_0x18dbd4[_0xed20('0x50')][_0xed20('0x74')]);}})['then'](respondWithStatusCode(_0x657979,null))['catch'](handleError(_0x657979,null));};exports[_0xed20('0x75')]=function(_0x3211d9,_0x55d55f,_0x51ed61){if(_0x3211d9[_0xed20('0x66')]['id']){delete _0x3211d9['body']['id'];}return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x3211d9[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x55d55f,null))[_0xed20('0x25')](function(_0x448547){if(_0x448547){_0x3211d9[_0xed20('0x66')][_0xed20('0x6e')]=_0x448547['id'];return db[_0xed20('0x76')][_0xed20('0x65')](_0x3211d9[_0xed20('0x66')]);}})['then'](respondWithResult(_0x55d55f,null))[_0xed20('0x30')](handleError(_0x55d55f,null));};exports[_0xed20('0x77')]=function(_0x536c75,_0x51ecd8,_0x2266d6){var _0xc8a865={'raw':![],'where':{}};var _0x3d470e={};var _0x4c6742={'count':0x0,'rows':[]};return db[_0xed20('0x4a')][_0xed20('0x71')]({'where':{'id':_0x536c75[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x51ecd8,null))[_0xed20('0x25')](function(_0x5375e8){if(_0x5375e8){_0x3d470e[_0xed20('0x53')]=_[_0xed20('0x4f')](db[_0xed20('0x76')][_0xed20('0x4b')]);_0x3d470e[_0xed20('0x50')]=_['keys'](_0x536c75['query']);_0x3d470e[_0xed20('0x51')]=_[_0xed20('0x52')](_0x3d470e['model'],_0x3d470e[_0xed20('0x50')]);_0xc8a865[_0xed20('0x54')]=_[_0xed20('0x52')](_0x3d470e['model'],qs[_0xed20('0x55')](_0x536c75['query'][_0xed20('0x55')]));_0xc8a865[_0xed20('0x54')]=_0xc8a865[_0xed20('0x54')]['length']?_0xc8a865['attributes']:_0x3d470e[_0xed20('0x53')];if(!_0x536c75[_0xed20('0x50')][_0xed20('0x57')]('nolimit')){_0xc8a865[_0xed20('0x35')]=qs[_0xed20('0x35')](_0x536c75[_0xed20('0x50')][_0xed20('0x35')]);_0xc8a865['offset']=qs[_0xed20('0x37')](_0x536c75[_0xed20('0x50')][_0xed20('0x37')]);}_0xc8a865['order']=qs['sort'](_0x536c75[_0xed20('0x50')][_0xed20('0x5a')]);_0xc8a865[_0xed20('0x5b')]=qs[_0xed20('0x51')](_[_0xed20('0x5c')](_0x536c75[_0xed20('0x50')],_0x3d470e[_0xed20('0x51')]));_0xc8a865[_0xed20('0x5b')][_0xed20('0x6e')]=_0x5375e8['id'];if(_0x536c75[_0xed20('0x50')][_0xed20('0x5d')]){_0xc8a865[_0xed20('0x5b')]=_[_0xed20('0x5e')](_0xc8a865[_0xed20('0x5b')],{'$or':_[_0xed20('0x49')](_0xc8a865[_0xed20('0x54')],function(_0x330903){var _0x53513b={};_0x53513b[_0x330903]={'$like':'%'+_0x536c75[_0xed20('0x50')][_0xed20('0x5d')]+'%'};return _0x53513b;})});}_0xc8a865=_['merge']({},_0xc8a865,_0x536c75[_0xed20('0x5f')]);return db[_0xed20('0x76')][_0xed20('0x36')]({'where':_0xc8a865[_0xed20('0x5b')]})[_0xed20('0x25')](function(_0x467422){_0x4c6742[_0xed20('0x36')]=_0x467422;if(_0x536c75[_0xed20('0x50')][_0xed20('0x60')]){_0xc8a865[_0xed20('0x61')]=[{'all':!![]}];}return db[_0xed20('0x76')]['findAll'](_0xc8a865);})[_0xed20('0x25')](function(_0x365414){_0x4c6742[_0xed20('0x62')]=_0x365414;return _0x4c6742;});}})['then'](respondWithFilteredResult(_0x51ecd8,_0xc8a865))[_0xed20('0x30')](handleError(_0x51ecd8,null));};exports[_0xed20('0x78')]=function(_0x5d6042,_0x4ac95d,_0x4a9801){return db[_0xed20('0x4a')]['find']({'where':{'id':_0x5d6042[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x4ac95d,null))[_0xed20('0x25')](function(_0x45b5c8){if(_0x45b5c8){return _0x45b5c8[_0xed20('0x78')](_0x5d6042[_0xed20('0x50')][_0xed20('0x74')]);}})[_0xed20('0x25')](respondWithStatusCode(_0x4ac95d,null))[_0xed20('0x30')](handleError(_0x4ac95d,null));};exports[_0xed20('0x79')]=function(_0x228cb3,_0xdf80fc,_0x24d508){var _0x30d823={'body':_0x228cb3[_0xed20('0x66')],'channel':_0xed20('0x7a')};var _0x5873c0=[];var _0x6200f5=[];var _0x5d1634={};var _0x495fc8=![];return db[_0xed20('0x7b')]['describe']()[_0xed20('0x25')](function(_0x430849){if(!_0x430849){throw new db[(_0xed20('0x7c'))]['ValidationError']('no\x20available\x20attributes');}_0x5873c0=_[_0xed20('0x7d')](_[_0xed20('0x4f')](_0x430849),[_0xed20('0x7e'),_0xed20('0x7f')]);_0x6200f5=_[_0xed20('0x7d')](_[_0xed20('0x4f')](_0x430849),['createdAt',_0xed20('0x7f'),_0xed20('0x80'),_0xed20('0x81')]);if(_0x228cb3[_0xed20('0x66')]['id']){delete _0x228cb3['body']['id'];}if(_[_0xed20('0x82')](_0x228cb3['body'][_0xed20('0x83')])){throw new db[(_0xed20('0x7c'))][(_0xed20('0x84'))](_0xed20('0x85'));}if(_[_0xed20('0x82')](_0x228cb3['body'][_0xed20('0x66')])||_0x228cb3[_0xed20('0x66')][_0xed20('0x66')]===''){throw new db[(_0xed20('0x7c'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xed20('0x82')](_0x228cb3[_0xed20('0x66')][_0xed20('0x86')])){throw new db[(_0xed20('0x7c'))][(_0xed20('0x84'))](_0xed20('0x87')+_0x6200f5);}if(!_[_0xed20('0x88')](_0x6200f5,_0x228cb3['body'][_0xed20('0x86')])){throw new db['Sequelize'][(_0xed20('0x84'))](_0xed20('0x89')+_0x6200f5);}_0x5d1634[_0x228cb3[_0xed20('0x66')][_0xed20('0x86')]]=_0x228cb3[_0xed20('0x66')][_0xed20('0x83')];})[_0xed20('0x25')](function(){return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x228cb3['params']['id']},'include':[{'model':db[_0xed20('0x8a')],'as':_0xed20('0x8b'),'include':[{'model':db[_0xed20('0x7b')],'as':'Contacts','where':_0x5d1634,'limit':0x1,'order':[[_0xed20('0x7f'),'DESC']]}]},{'model':db[_0xed20('0x8c')],'as':_0xed20('0x8d')}]});})['then'](handleEntityNotFound(_0xdf80fc,null))['then'](function(_0x5524ab){if(_0x5524ab&&_0x5524ab[_0xed20('0x8b')]){_0x30d823[_0xed20('0x8e')]=_0x5524ab;_0x30d823['applications']=_0x5524ab[_0xed20('0x8d')];_0x30d823[_0xed20('0x8f')]=_0x5524ab[_0xed20('0x8b')];_0x30d823['applications']=_[_0xed20('0x90')](_0x30d823['applications'],[_0xed20('0x91')],[_0xed20('0x92')]);if(_0x30d823[_0xed20('0x8e')][_0xed20('0x8d')]){delete _0x30d823[_0xed20('0x8e')][_0xed20('0x8d')];}if(_0x30d823['account'][_0xed20('0x8b')]&&_0x30d823[_0xed20('0x8e')]['List'][_0xed20('0x93')][_0xed20('0x56')]){return _0x30d823[_0xed20('0x8e')]['List'][_0xed20('0x93')][0x0];}var _0x56dc19=_[_0xed20('0x1c')](_0x228cb3[_0xed20('0x66')],{'firstName':_0x228cb3[_0xed20('0x66')][_0xed20('0x83')],'ListId':_0x5524ab[_0xed20('0x81')]});_0x56dc19[_0x228cb3['body'][_0xed20('0x86')]]=_0x228cb3[_0xed20('0x66')][_0xed20('0x83')];return db[_0xed20('0x7b')][_0xed20('0x65')](_0x56dc19,{'fields':_0x5873c0,'raw':!![]});}})['then'](handleEntityNotFound(_0xdf80fc,null))[_0xed20('0x25')](function(_0x303b31){_0x30d823[_0xed20('0x94')]=_0x303b31;if(_0x303b31){var _0x3b925e={'ContactId':_0x303b31['id'],'OpenchannelAccountId':_0x228cb3[_0xed20('0x64')]['id'],'from':(_0x303b31[_0xed20('0x95')]||'')+'\x20'+(_0x303b31['lastName']||'')};var _0x2a2088={'OpenchannelAccountId':_0x228cb3[_0xed20('0x64')]['id'],'closed':![]};if(_0x228cb3[_0xed20('0x66')]['threadId']){_0x2a2088[_0xed20('0x96')]=_0x228cb3[_0xed20('0x66')][_0xed20('0x96')];return db['OpenchannelInteraction'][_0xed20('0x69')]({'where':_0x2a2088})[_0xed20('0x25')](function(_0x3d0030){if(_0x3d0030){return[_0x3d0030,![]];}_0x3b925e[_0xed20('0x96')]=_0x228cb3['body']['threadId'];_0x3b925e[_0xed20('0x97')]=_0x228cb3[_0xed20('0x66')][_0xed20('0x97')];return db['OpenchannelInteraction'][_0xed20('0x65')](_0x3b925e)['then'](function(_0x40d987){return[_0x40d987,!![]];});});}else{_0x2a2088[_0xed20('0x96')]=null;}_0x2a2088[_0xed20('0x98')]=_0x303b31['id'];return db[_0xed20('0x99')][_0xed20('0x69')]({'where':_0x2a2088})[_0xed20('0x25')](function(_0x2a3d7a){if(_0x2a3d7a){return[_0x2a3d7a,![]];}return db['OpenchannelInteraction']['create'](_0x3b925e)[_0xed20('0x25')](function(_0x33678d){return[_0x33678d,!![]];});});}})[_0xed20('0x9a')](function(_0x294c16,_0x16db60){if(_0x294c16){_0x495fc8=_0x16db60;if(!_0x16db60){var _0x275504={'from':(_0x30d823[_0xed20('0x94')][_0xed20('0x95')]||'')+'\x20'+(_0x30d823['contact']['lastName']||'')};if(_0x228cb3[_0xed20('0x66')]['threadId']&&_0x228cb3[_0xed20('0x66')]['messageId']&&_0x228cb3[_0xed20('0x66')]['threadId']!=_0x228cb3[_0xed20('0x66')][_0xed20('0x9b')]){_0x275504[_0xed20('0x96')]=_0x228cb3['body'][_0xed20('0x9b')];}return _0x294c16[_0xed20('0x3e')](_0x275504);}else{return _0x294c16;}}})[_0xed20('0x25')](function(_0x2244c4){_0x30d823[_0xed20('0x9c')]=_0x2244c4[_0xed20('0x40')]({'plain':!![]});_0x30d823[_0xed20('0x9c')][_0xed20('0x9d')]=_0x495fc8;if(_0x30d823['interaction'][_0xed20('0x9d')]){if(_0x30d823[_0xed20('0x8e')][_0xed20('0x9e')]){_0x30d823['applications'][_0xed20('0x9f')]({'id':0x0,'priority':_0x30d823[_0xed20('0xa0')][_0xed20('0x56')]+0x1,'app':_0xed20('0xa1'),'appdata':_0xed20('0xa2'),'interval':_0xed20('0xa3')});}}return db[_0xed20('0xa4')][_0xed20('0x65')]({'body':_0x228cb3[_0xed20('0x66')][_0xed20('0x66')],'OpenchannelAccountId':_0x228cb3[_0xed20('0x64')]['id'],'OpenchannelInteractionId':_0x2244c4['id'],'direction':'in','ContactId':_0x30d823['contact']['id'],'AttachmentId':_0x228cb3[_0xed20('0x66')]['AttachmentId']});})[_0xed20('0x25')](function(_0x2f0a19){_0x30d823['message']=_0x2f0a19;if(_0x30d823[_0xed20('0x9c')][_0xed20('0xa5')]){return db[_0xed20('0xa6')][_0xed20('0x69')]({'attributes':['id','name'],'where':{'id':_0x30d823[_0xed20('0x9c')][_0xed20('0xa5')]}})[_0xed20('0x25')](function(_0x5b995f){if(_0x5b995f){_0x30d823[_0xed20('0xa0')][_0xed20('0xa7')]({'id':0x0,'priority':0x0,'app':_0xed20('0xa8'),'appdata':_0x5b995f['name']+','+(_0x30d823[_0xed20('0x8e')]['waitForTheAssignedAgent']||0xa),'interval':_0xed20('0xa3')});_0x30d823[_0xed20('0xa9')]=![];}return respondWithRpcPromise(_0xed20('0xaa'),'startRouting',_0x30d823);});}return respondWithRpcPromise(_0xed20('0xaa'),_0xed20('0xab'),_0x30d823);})['then'](function(_0x4bb146){respondWithRpcPromise(_0xed20('0xac'),'EventManager',{'event':'notify','message':_0x4bb146},client9002);return _0x4bb146;})['then'](respondWithResult(_0xdf80fc,null))[_0xed20('0x30')](handleError(_0xdf80fc,null));};exports[_0xed20('0xad')]=function(_0x58ed0f,_0x17bc24){var _0x5eec37=_0x58ed0f[_0xed20('0x64')]['id'];var _0x221933=_0x58ed0f[_0xed20('0x66')];var _0x591e82=0xc8;var _0x47ee32=null;return db[_0xed20('0xae')][_0xed20('0xaf')]({'isolationLevel':db[_0xed20('0xae')][_0xed20('0xb0')][_0xed20('0xb1')][_0xed20('0xb2')]},function(_0x156621){return db[_0xed20('0x4a')][_0xed20('0x71')]({'where':{'id':_0x5eec37},'transaction':_0x156621})['then'](function(_0x2ff386){if(_0x2ff386){return db['OpenchannelApplication'][_0xed20('0x3f')]({'where':{'OpenchannelAccountId':_0x5eec37},'transaction':_0x156621})[_0xed20('0x25')](function(){var _0x15f37e=_[_0xed20('0x49')](_0x221933,function(_0x5979fc){_0x5979fc[_0xed20('0x6e')]=_0x5eec37;return _0x5979fc;});return db['OpenchannelApplication'][_0xed20('0xb3')](_0x15f37e,{'transaction':_0x156621});});}else{_0x591e82=0x194;_0x47ee32=[];}});})[_0xed20('0x25')](function(){if(_0x591e82!==0x194){return db['OpenchannelApplication'][_0xed20('0xb4')]({'where':{'OpenchannelAccountId':_0x5eec37},'order':_0xed20('0x91')})['then'](function(_0x3e63d2){_0x47ee32=_0x3e63d2;});}})['catch'](function(_0x10a3f2){_0x591e82=0x1f4;logger['error'](_0x10a3f2[_0xed20('0x43')]);if(_0x10a3f2['name']){delete _0x10a3f2[_0xed20('0x44')];}_0x47ee32=_0x10a3f2;})['finally'](function(){if(_0x47ee32===null){_0x17bc24['sendStatus'](_0x591e82);}else{if(_0x591e82===0x1f4){_0x17bc24[_0xed20('0x32')](_0x591e82)[_0xed20('0x45')](_0x47ee32);}else{_0x17bc24[_0xed20('0x32')](_0x591e82)[_0xed20('0x3a')](_0x47ee32);}}});};exports[_0xed20('0xb5')]=function(_0x32f72e,_0x52c672,_0x335c3d){var _0x47d1c4={};var _0x2efc8d={};var _0x2643e0;var _0x33901b;return db[_0xed20('0x4a')][_0xed20('0x71')]({'where':{'id':_0x32f72e[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x52c672,null))['then'](function(_0x3fc8cc){if(_0x3fc8cc){_0x2643e0=_0x3fc8cc;_0x2efc8d[_0xed20('0x53')]=_[_0xed20('0x4f')](db[_0xed20('0x8c')][_0xed20('0x4b')]);_0x2efc8d['query']=_[_0xed20('0x4f')](_0x32f72e['query']);_0x2efc8d[_0xed20('0x51')]=_[_0xed20('0x52')](_0x2efc8d[_0xed20('0x53')],_0x2efc8d[_0xed20('0x50')]);_0x47d1c4['attributes']=_['intersection'](_0x2efc8d[_0xed20('0x53')],qs[_0xed20('0x55')](_0x32f72e['query'][_0xed20('0x55')]));_0x47d1c4[_0xed20('0x54')]=_0x47d1c4[_0xed20('0x54')]['length']?_0x47d1c4[_0xed20('0x54')]:_0x2efc8d['model'];_0x47d1c4[_0xed20('0x59')]=qs['sort'](_0x32f72e[_0xed20('0x50')][_0xed20('0x5a')]);_0x47d1c4['where']=qs[_0xed20('0x51')](_[_0xed20('0x5c')](_0x32f72e[_0xed20('0x50')],_0x2efc8d[_0xed20('0x51')]));if(_0x32f72e[_0xed20('0x50')][_0xed20('0x5d')]){_0x47d1c4[_0xed20('0x5b')]=_['merge'](_0x47d1c4[_0xed20('0x5b')],{'$or':_[_0xed20('0x49')](_0x47d1c4[_0xed20('0x54')],function(_0x131011){var _0x104464={};_0x104464[_0x131011]={'$like':'%'+_0x32f72e['query'][_0xed20('0x5d')]+'%'};return _0x104464;})});}_0x47d1c4=_[_0xed20('0x5e')]({},_0x47d1c4,_0x32f72e[_0xed20('0x5f')]);return _0x2643e0[_0xed20('0xb5')](_0x47d1c4);}})['then'](function(_0x59bc95){if(_0x59bc95){_0x33901b=_0x59bc95['length'];if(!_0x32f72e[_0xed20('0x50')][_0xed20('0x57')](_0xed20('0x58'))){_0x47d1c4[_0xed20('0x35')]=qs[_0xed20('0x35')](_0x32f72e[_0xed20('0x50')][_0xed20('0x35')]);_0x47d1c4[_0xed20('0x37')]=qs['offset'](_0x32f72e[_0xed20('0x50')][_0xed20('0x37')]);}return _0x2643e0[_0xed20('0xb5')](_0x47d1c4);}})['then'](function(_0x315cfc){if(_0x315cfc){return _0x315cfc?{'count':_0x33901b,'rows':_0x315cfc}:null;}})[_0xed20('0x25')](respondWithResult(_0x52c672,null))[_0xed20('0x30')](handleError(_0x52c672,null));};exports[_0xed20('0xb6')]=function(_0x274423,_0x10f8d4,_0x1e901f){var _0x581e2b={'raw':![],'where':{}};var _0x31b374={};var _0x4c456a={'count':0x0,'rows':[]};return db[_0xed20('0x4a')][_0xed20('0x71')]({'where':{'id':_0x274423[_0xed20('0x64')]['id']}})['then'](handleEntityNotFound(_0x10f8d4,null))['then'](function(_0xdc9426){if(_0xdc9426){_0x31b374[_0xed20('0x53')]=_[_0xed20('0x4f')](db[_0xed20('0x99')][_0xed20('0x4b')]);_0x31b374[_0xed20('0x50')]=_[_0xed20('0x4f')](_0x274423['query']);_0x31b374[_0xed20('0x51')]=_[_0xed20('0x52')](_0x31b374[_0xed20('0x53')],_0x31b374['query']);_0x581e2b['attributes']=_[_0xed20('0x52')](_0x31b374['model'],qs[_0xed20('0x55')](_0x274423['query']['fields']));_0x581e2b[_0xed20('0x54')]=_0x581e2b[_0xed20('0x54')][_0xed20('0x56')]?_0x581e2b[_0xed20('0x54')]:_0x31b374[_0xed20('0x53')];if(!_0x274423[_0xed20('0x50')]['hasOwnProperty'](_0xed20('0x58'))){_0x581e2b[_0xed20('0x35')]=qs[_0xed20('0x35')](_0x274423['query'][_0xed20('0x35')]);_0x581e2b['offset']=qs[_0xed20('0x37')](_0x274423[_0xed20('0x50')]['offset']);}_0x581e2b['order']=qs['sort'](_0x274423['query'][_0xed20('0x5a')]);_0x581e2b['where']=qs['filters'](_['pick'](_0x274423['query'],_0x31b374['filters']));_0x581e2b[_0xed20('0x5b')][_0xed20('0x6e')]=_0xdc9426['id'];if(_0x274423[_0xed20('0x50')]['filter']){_0x581e2b['where']=_[_0xed20('0x5e')](_0x581e2b['where'],{'$or':_[_0xed20('0x49')](_0x581e2b[_0xed20('0x54')],function(_0x18f0bd){var _0x3feb75={};_0x3feb75[_0x18f0bd]={'$like':'%'+_0x274423[_0xed20('0x50')]['filter']+'%'};return _0x3feb75;})});}_0x581e2b=_[_0xed20('0x5e')]({},_0x581e2b,_0x274423[_0xed20('0x5f')]);return db[_0xed20('0x99')][_0xed20('0x36')]({'where':_0x581e2b[_0xed20('0x5b')]})[_0xed20('0x25')](function(_0x1574bc){_0x4c456a[_0xed20('0x36')]=_0x1574bc;if(_0x274423[_0xed20('0x50')][_0xed20('0x60')]){_0x581e2b[_0xed20('0x61')]=[{'model':db[_0xed20('0x7b')],'as':_0xed20('0xb7'),'required':![]},{'model':db[_0xed20('0xa6')],'as':_0xed20('0xb8'),'attributes':['name',_0xed20('0xb9'),_0xed20('0xba')],'required':![]},{'model':db[_0xed20('0xbb')],'as':_0xed20('0xbc'),'attributes':['id',_0xed20('0x44'),_0xed20('0xbd')],'where':_0x274423[_0xed20('0x50')][_0xed20('0xbe')]?{'id':_0x274423[_0xed20('0x50')][_0xed20('0xbe')]}:undefined,'required':_0x274423['query']['tag']?!![]:![]}];}return db[_0xed20('0x99')][_0xed20('0x72')](_0x581e2b);})[_0xed20('0x25')](function(_0x48a035){_0x4c456a[_0xed20('0x62')]=_0x48a035;return _0x4c456a;});}})[_0xed20('0x25')](respondWithFilteredResult(_0x10f8d4,_0x581e2b))[_0xed20('0x30')](handleError(_0x10f8d4,null));};exports[_0xed20('0xbf')]=function(_0x1a1f7b,_0x1bd5ff,_0x404e6a){return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x1a1f7b[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x1bd5ff,null))[_0xed20('0x25')](function(_0x41f995){if(_0x41f995){return _0x41f995[_0xed20('0xbf')](_0x1a1f7b['body']['ids'],_[_0xed20('0xc0')](_0x1a1f7b['body'],[_0xed20('0x74'),'id'])||{})[_0xed20('0x9a')](function(_0x95f7a1){for(var _0x251666=0x0;_0x251666<_0x1a1f7b['body'][_0xed20('0x74')][_0xed20('0x56')];_0x251666+=0x1){socket['emit']('userOpenchannelAccount:save',{'UserId':Number(_0x1a1f7b[_0xed20('0x66')][_0xed20('0x74')][_0x251666]),'OpenchannelAccountId':Number(_0x1a1f7b[_0xed20('0x64')]['id'])});}return _0x95f7a1;});}})[_0xed20('0x25')](respondWithResult(_0x1bd5ff,null))['catch'](handleError(_0x1bd5ff,null));};exports[_0xed20('0xc1')]=function(_0x30d9b7,_0x3e38ef,_0x474212){return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x30d9b7[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x3e38ef,null))[_0xed20('0x25')](function(_0x42168e){if(_0x42168e){return _0x42168e[_0xed20('0xc1')](_0x30d9b7['query'][_0xed20('0x74')])[_0xed20('0x25')](function(){if(_[_0xed20('0xc2')](_0x30d9b7[_0xed20('0x50')][_0xed20('0x74')])){for(var _0xf4d268=0x0;_0xf4d268<_0x30d9b7[_0xed20('0x50')]['ids'][_0xed20('0x56')];_0xf4d268+=0x1){socket[_0xed20('0xc3')](_0xed20('0xc4'),{'UserId':Number(_0x30d9b7['query'][_0xed20('0x74')][_0xf4d268]),'OpenchannelAccountId':Number(_0x30d9b7[_0xed20('0x64')]['id'])});}}else{socket[_0xed20('0xc3')](_0xed20('0xc4'),{'UserId':Number(_0x30d9b7[_0xed20('0x50')]['ids']),'OpenchannelAccountId':Number(_0x30d9b7[_0xed20('0x64')]['id'])});}});}})[_0xed20('0x25')](respondWithStatusCode(_0x3e38ef,null))['catch'](handleError(_0x3e38ef,null));};exports[_0xed20('0xc5')]=function(_0x5d153a,_0x3c6069,_0x42e68a){var _0x4cda53={};var _0x48e91b={};var _0x28c297;var _0x194499;return db['OpenchannelAccount'][_0xed20('0x71')]({'where':{'id':_0x5d153a[_0xed20('0x64')]['id']}})['then'](handleEntityNotFound(_0x3c6069,null))['then'](function(_0x373024){if(_0x373024){_0x28c297=_0x373024;_0x48e91b['model']=_[_0xed20('0x4f')](db[_0xed20('0xa6')][_0xed20('0x4b')]);_0x48e91b[_0xed20('0x50')]=_['keys'](_0x5d153a[_0xed20('0x50')]);_0x48e91b['filters']=_[_0xed20('0x52')](_0x48e91b[_0xed20('0x53')],_0x48e91b[_0xed20('0x50')]);_0x4cda53[_0xed20('0x54')]=_[_0xed20('0x52')](_0x48e91b[_0xed20('0x53')],qs[_0xed20('0x55')](_0x5d153a[_0xed20('0x50')][_0xed20('0x55')]));_0x4cda53[_0xed20('0x54')]=_0x4cda53[_0xed20('0x54')][_0xed20('0x56')]?_0x4cda53['attributes']:_0x48e91b[_0xed20('0x53')];_0x4cda53['order']=qs['sort'](_0x5d153a['query'][_0xed20('0x5a')]);_0x4cda53[_0xed20('0x5b')]=qs[_0xed20('0x51')](_[_0xed20('0x5c')](_0x5d153a['query'],_0x48e91b['filters']));if(_0x5d153a[_0xed20('0x50')][_0xed20('0x5d')]){_0x4cda53['where']=_[_0xed20('0x5e')](_0x4cda53[_0xed20('0x5b')],{'$or':_[_0xed20('0x49')](_0x4cda53[_0xed20('0x54')],function(_0x343143){var _0x53a2b5={};_0x53a2b5[_0x343143]={'$like':'%'+_0x5d153a['query'][_0xed20('0x5d')]+'%'};return _0x53a2b5;})});}_0x4cda53=_['merge']({},_0x4cda53,_0x5d153a[_0xed20('0x5f')]);return _0x28c297[_0xed20('0xc5')](_0x4cda53);}})[_0xed20('0x25')](function(_0x1d8fdf){if(_0x1d8fdf){_0x194499=_0x1d8fdf['length'];if(!_0x5d153a[_0xed20('0x50')][_0xed20('0x57')](_0xed20('0x58'))){_0x4cda53['limit']=qs[_0xed20('0x35')](_0x5d153a[_0xed20('0x50')][_0xed20('0x35')]);_0x4cda53[_0xed20('0x37')]=qs[_0xed20('0x37')](_0x5d153a[_0xed20('0x50')][_0xed20('0x37')]);}return _0x28c297[_0xed20('0xc5')](_0x4cda53);}})['then'](function(_0x7fcffe){if(_0x7fcffe){return _0x7fcffe?{'count':_0x194499,'rows':_0x7fcffe}:null;}})[_0xed20('0x25')](respondWithResult(_0x3c6069,null))[_0xed20('0x30')](handleError(_0x3c6069,null));};exports[_0xed20('0x45')]=function(_0x1e11dd,_0x6754d3,_0x5b205c){var _0x29f6d8,_0x236208,_0x251827;if(_[_0xed20('0x82')](_0x1e11dd[_0xed20('0x66')][_0xed20('0x66')])||_0x1e11dd[_0xed20('0x66')][_0xed20('0x66')]===''){throw new db[(_0xed20('0x7c'))][(_0xed20('0x84'))](_0xed20('0xc6'));}if(_[_0xed20('0x82')](_0x1e11dd['body']['to'])){}_0x29f6d8=_0x1e11dd[_0xed20('0x66')]['to'];return db['OpenchannelAccount'][_0xed20('0x71')]({'where':{'id':_0x1e11dd[_0xed20('0x64')]['id']}})[_0xed20('0x25')](handleEntityNotFound(_0x6754d3,null))[_0xed20('0x25')](function(_0x566d52){if(_0x566d52){return db[_0xed20('0x4a')][_0xed20('0x69')]({'where':{'id':_0x566d52['id']},'include':[{'model':db[_0xed20('0x8a')],'as':'List','include':[{'model':db['CmContact'],'as':_0xed20('0x93'),'where':{[_0x566d52[_0xed20('0x86')]]:_0x29f6d8},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xed20('0x25')](handleEntityNotFound(_0x6754d3,null))[_0xed20('0x25')](function(_0x492180){if(_0x492180&&_0x492180['List']){_0x236208=_0x492180[_0xed20('0x40')]({'plain':!![]});if(_0x236208[_0xed20('0x8b')]&&_0x236208[_0xed20('0x8b')]['Contacts'][_0xed20('0x56')]){return _0x236208['List'][_0xed20('0x93')][0x0];}return db[_0xed20('0x7b')][_0xed20('0x65')](_[_0xed20('0x1c')](_0x1e11dd[_0xed20('0x66')],{'firstName':_0x29f6d8,[_0x492180[_0xed20('0x86')]]:_0x29f6d8,'phone':_0x29f6d8,'ListId':_0x236208[_0xed20('0x81')]}));}})[_0xed20('0x25')](handleEntityNotFound(_0x6754d3,null))[_0xed20('0x25')](function(_0x2b3df5){if(_0x2b3df5){_0x251827=_0x2b3df5;return db['OpenchannelInteraction'][_0xed20('0x69')]({'where':{'ContactId':_0x251827['id'],'closed':![],'OpenchannelAccountId':_0x236208['id']}})['then'](function(_0x229eb7){if(_0x229eb7){return[_0x229eb7,![]];}return db[_0xed20('0x99')][_0xed20('0x65')]({'UserId':_0x1e11dd['user']['id'],'ContactId':_0x251827['id'],'OpenchannelAccountId':_0x236208['id'],'lastMsgDirection':'out','Messages':[_[_0xed20('0x5e')](_0x1e11dd[_0xed20('0x66')],{'read':![],'body':_0x1e11dd[_0xed20('0x66')][_0xed20('0x66')],'OpenchannelAccountId':_0x236208['id'],'UserId':_0x1e11dd['user']['id'],'ContactId':_0x251827['id']})]},{'include':[{'model':db[_0xed20('0xa4')],'as':_0xed20('0xc7')}]})['then'](function(_0x925e6){return[_0x925e6,!![]];});});}})[_0xed20('0x9a')](function(_0x136059,_0x593193){if(_0x593193){return _0x136059;}return db['OpenchannelMessage'][_0xed20('0x65')](_['merge'](_0x1e11dd[_0xed20('0x66')],{'read':![],'body':_0x1e11dd[_0xed20('0x66')][_0xed20('0x66')],'OpenchannelAccountId':_0x236208['id'],'OpenchannelInteractionId':_0x136059['id'],'UserId':_0x1e11dd['user']['id'],'ContactId':_0x251827['id']}))['then'](function(_0x5f4016){_0x136059[_0xed20('0xc8')][_0xed20('0xc7')]=[];_0x136059[_0xed20('0xc8')][_0xed20('0xc7')]['push'](_0x5f4016[_0xed20('0xc8')]);return _0x136059;});});}})[_0xed20('0x25')](respondWithResult(_0x6754d3,null))[_0xed20('0x30')](handleError(_0x6754d3,null));};
\ No newline at end of file
index e54b1aa..658d0f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['remove','emit','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0x5df35c,_0x2ab072){var _0x5233be=function(_0x52649a){while(--_0x52649a){_0x5df35c['push'](_0x5df35c['shift']());}};_0x5233be(++_0x2ab072);}(_0x55e0,0xdc));var _0x055e=function(_0x4fdb3d,_0x43d139){_0x4fdb3d=_0x4fdb3d-0x0;var _0x57f4a3=_0x55e0[_0x4fdb3d];return _0x57f4a3;};'use strict';var EventEmitter=require(_0x055e('0x0'));var OpenchannelAccount=require(_0x055e('0x1'))['db'][_0x055e('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x055e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x055e('0x4')};function emitEvent(_0x2d9bd5){return function(_0x33cd7b,_0x2773e4,_0x157473){OpenchannelAccountEvents[_0x055e('0x5')](_0x2d9bd5+':'+_0x33cd7b['id'],_0x33cd7b);OpenchannelAccountEvents['emit'](_0x2d9bd5,_0x33cd7b);_0x157473(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x055e('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x54ef=['remove','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelAccount','save','update'];(function(_0x16011d,_0x51aaa3){var _0x1f3832=function(_0x4893ec){while(--_0x4893ec){_0x16011d['push'](_0x16011d['shift']());}};_0x1f3832(++_0x51aaa3);}(_0x54ef,0x112));var _0xf54e=function(_0x200233,_0x46846e){_0x200233=_0x200233-0x0;var _0x1514a3=_0x54ef[_0x200233];return _0x1514a3;};'use strict';var EventEmitter=require(_0xf54e('0x0'));var OpenchannelAccount=require(_0xf54e('0x1'))['db'][_0xf54e('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf54e('0x3'),'afterUpdate':_0xf54e('0x4'),'afterDestroy':_0xf54e('0x5')};function emitEvent(_0x42b9b2){return function(_0x8b6bb6,_0x431e36,_0x12d43f){OpenchannelAccountEvents['emit'](_0x42b9b2+':'+_0x8b6bb6['id'],_0x8b6bb6);OpenchannelAccountEvents['emit'](_0x42b9b2,_0x8b6bb6);_0x12d43f(null);};}for(var e in events){if(events[_0xf54e('0x6')](e)){var event=events[e];OpenchannelAccount[_0xf54e('0x7')](e,emitEvent(event));}}module[_0xf54e('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index 26d3938..57be065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x7909a9,_0x52e14e){var _0x2b3e59=function(_0x1c0d0c){while(--_0x1c0d0c){_0x7909a9['push'](_0x7909a9['shift']());}};_0x2b3e59(++_0x52e14e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x4d09a5,_0x537d7b){var _0x3440b0=function(_0x2d2bd8){while(--_0x2d2bd8){_0x4d09a5['push'](_0x4d09a5['shift']());}};_0x3440b0(++_0x537d7b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b6d9fe8..42f9e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x263f=['../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x263f,0x182));var _0xf263=function(_0x24f8fb,_0xf33de2){_0x24f8fb=_0x24f8fb-0x0;var _0x40c7fe=_0x263f[_0x24f8fb];return _0x40c7fe;};'use strict';var _=require(_0xf263('0x0'));var util=require(_0xf263('0x1'));var moment=require(_0xf263('0x2'));var BPromise=require(_0xf263('0x3'));var rs=require(_0xf263('0x4'));var fs=require('fs');var Redis=require(_0xf263('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf263('0x6'));var logger=require(_0xf263('0x7'))(_0xf263('0x8'));var config=require('../../config/environment');var jayson=require(_0xf263('0x9'));var client=jayson[_0xf263('0xa')]['http']({'port':0x232a});config['redis']=_[_0xf263('0xb')](config[_0xf263('0xc')],{'host':_0xf263('0xd'),'port':0x18eb});var socket=require(_0xf263('0xe'))(new Redis(config['redis']));require(_0xf263('0xf'))[_0xf263('0x10')](socket);function respondWithRpcPromise(_0x3d8092,_0x34c634,_0xb9fb31){return new BPromise(function(_0x4fc090,_0x1e9057){return client['request'](_0x3d8092,_0xb9fb31)[_0xf263('0x11')](function(_0x48e586){logger[_0xf263('0x12')]('OpenchannelAccount,\x20%s,\x20%s',_0x34c634,'request\x20sent');logger[_0xf263('0x13')](_0xf263('0x14'),_0x34c634,_0xf263('0x15'),JSON[_0xf263('0x16')](_0x48e586));if(_0x48e586[_0xf263('0x17')]){if(_0x48e586[_0xf263('0x17')][_0xf263('0x18')]===0x1f4){logger['error'](_0xf263('0x19'),_0x34c634,_0x48e586['error'][_0xf263('0x1a')]);return _0x1e9057(_0x48e586[_0xf263('0x17')][_0xf263('0x1a')]);}logger[_0xf263('0x17')](_0xf263('0x19'),_0x34c634,_0x48e586[_0xf263('0x17')][_0xf263('0x1a')]);return _0x4fc090(_0x48e586['error']['message']);}else{logger[_0xf263('0x12')](_0xf263('0x19'),_0x34c634,_0xf263('0x15'));_0x4fc090(_0x48e586[_0xf263('0x1b')][_0xf263('0x1a')]);}})['catch'](function(_0x1adb66){logger['error'](_0xf263('0x19'),_0x34c634,_0x1adb66);_0x1e9057(_0x1adb66);});});}
\ No newline at end of file
+var _0x4024=['randomstring','../../mysqldb','../../config/logger','rpc','client','http','redis','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','bluebird'];(function(_0x308d4b,_0x388c21){var _0x1a6899=function(_0x34d08c){while(--_0x34d08c){_0x308d4b['push'](_0x308d4b['shift']());}};_0x1a6899(++_0x388c21);}(_0x4024,0x89));var _0x4402=function(_0x2dc7db,_0x49ec1d){_0x2dc7db=_0x2dc7db-0x0;var _0x387980=_0x4024[_0x2dc7db];return _0x387980;};'use strict';var _=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var moment=require('moment');var BPromise=require(_0x4402('0x2'));var rs=require(_0x4402('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4402('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4402('0x5'))(_0x4402('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4402('0x7')][_0x4402('0x8')]({'port':0x232a});config[_0x4402('0x9')]=_['defaults'](config[_0x4402('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4402('0x9')]));require('./openchannelAccount.socket')['register'](socket);function respondWithRpcPromise(_0x30fd34,_0x4f56aa,_0x1a4a47){return new BPromise(function(_0x4e1a7e,_0x34b4a6){return client['request'](_0x30fd34,_0x1a4a47)[_0x4402('0xa')](function(_0x251286){logger['info'](_0x4402('0xb'),_0x4f56aa,_0x4402('0xc'));logger[_0x4402('0xd')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x4f56aa,_0x4402('0xc'),JSON[_0x4402('0xe')](_0x251286));if(_0x251286[_0x4402('0xf')]){if(_0x251286[_0x4402('0xf')][_0x4402('0x10')]===0x1f4){logger[_0x4402('0xf')](_0x4402('0xb'),_0x4f56aa,_0x251286[_0x4402('0xf')][_0x4402('0x11')]);return _0x34b4a6(_0x251286[_0x4402('0xf')][_0x4402('0x11')]);}logger[_0x4402('0xf')](_0x4402('0xb'),_0x4f56aa,_0x251286[_0x4402('0xf')][_0x4402('0x11')]);return _0x4e1a7e(_0x251286[_0x4402('0xf')][_0x4402('0x11')]);}else{logger[_0x4402('0x12')](_0x4402('0xb'),_0x4f56aa,_0x4402('0xc'));_0x4e1a7e(_0x251286['result']['message']);}})[_0x4402('0x13')](function(_0x2a7afc){logger['error'](_0x4402('0xb'),_0x4f56aa,_0x2a7afc);_0x34b4a6(_0x2a7afc);});});}
\ No newline at end of file
index 5720cd6..d7ea9ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc577=['./openchannelAccount.events','update','emit','register','length'];(function(_0x3d77e1,_0x356dfc){var _0x5a20be=function(_0x43e8ca){while(--_0x43e8ca){_0x3d77e1['push'](_0x3d77e1['shift']());}};_0x5a20be(++_0x356dfc);}(_0xc577,0x172));var _0x7c57=function(_0x3e7bb8,_0x11f26c){_0x3e7bb8=_0x3e7bb8-0x0;var _0x160bf4=_0xc577[_0x3e7bb8];return _0x160bf4;};'use strict';var OpenchannelAccountEvents=require(_0x7c57('0x0'));var events=['save','remove',_0x7c57('0x1')];function createListener(_0x35af09,_0xe9a500){return function(_0x2a2415){_0xe9a500[_0x7c57('0x2')](_0x35af09,_0x2a2415);};}function removeListener(_0x304922,_0x2ea08b){return function(){OpenchannelAccountEvents['removeListener'](_0x304922,_0x2ea08b);};}exports[_0x7c57('0x3')]=function(_0x1339b3){for(var _0xf50a9f=0x0,_0x2bc454=events[_0x7c57('0x4')];_0xf50a9f<_0x2bc454;_0xf50a9f++){var _0x4bb81b=events[_0xf50a9f];var _0x4e5cb2=createListener('openchannelAccount:'+_0x4bb81b,_0x1339b3);OpenchannelAccountEvents['on'](_0x4bb81b,_0x4e5cb2);}};
\ No newline at end of file
+var _0xaf5a=['save','update','emit','removeListener','length','openchannelAccount:'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xaf5a,0x144));var _0xaaf5=function(_0x443e9e,_0x3c1baf){_0x443e9e=_0x443e9e-0x0;var _0x5db340=_0xaf5a[_0x443e9e];return _0x5db340;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0xaaf5('0x0'),'remove',_0xaaf5('0x1')];function createListener(_0x39130a,_0x2c0906){return function(_0x145946){_0x2c0906[_0xaaf5('0x2')](_0x39130a,_0x145946);};}function removeListener(_0x277e58,_0x2f9a11){return function(){OpenchannelAccountEvents[_0xaaf5('0x3')](_0x277e58,_0x2f9a11);};}exports['register']=function(_0x3b1281){for(var _0x5b9ec4=0x0,_0x39dfd9=events[_0xaaf5('0x4')];_0x5b9ec4<_0x39dfd9;_0x5b9ec4++){var _0x1160d2=events[_0x5b9ec4];var _0x2eee5e=createListener(_0xaaf5('0x5')+_0x1160d2,_0x3b1281);OpenchannelAccountEvents['on'](_0x1160d2,_0x2eee5e);}};
\ No newline at end of file
index b117167..03f8f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae8=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','show','post','create','/:id','update','exports'];(function(_0x1a014b,_0x48acae){var _0x462258=function(_0x1473be){while(--_0x1473be){_0x1a014b['push'](_0x1a014b['shift']());}};_0x462258(++_0x48acae);}(_0x8ae8,0x130));var _0x88ae=function(_0x2f4b73,_0x18c42b){_0x2f4b73=_0x2f4b73-0x0;var _0x5bb898=_0x8ae8[_0x2f4b73];return _0x5bb898;};'use strict';var multer=require(_0x88ae('0x0'));var util=require(_0x88ae('0x1'));var path=require(_0x88ae('0x2'));var timeout=require(_0x88ae('0x3'));var express=require(_0x88ae('0x4'));var router=express['Router']();var fs_extra=require(_0x88ae('0x5'));var auth=require(_0x88ae('0x6'));var interaction=require(_0x88ae('0x7'));var config=require(_0x88ae('0x8'));var controller=require(_0x88ae('0x9'));router[_0x88ae('0xa')]('/',auth[_0x88ae('0xb')](),controller[_0x88ae('0xc')]);router[_0x88ae('0xa')]('/:id',auth[_0x88ae('0xb')](),controller[_0x88ae('0xd')]);router[_0x88ae('0xe')]('/',auth['isAuthenticated'](),controller[_0x88ae('0xf')]);router['put'](_0x88ae('0x10'),auth['isAuthenticated'](),controller[_0x88ae('0x11')]);router['delete']('/:id',auth[_0x88ae('0xb')](),controller['destroy']);module[_0x88ae('0x12')]=router;
\ No newline at end of file
+var _0x2272=['update','delete','destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show','create','put'];(function(_0x51b828,_0x450bac){var _0x31338e=function(_0x14b039){while(--_0x14b039){_0x51b828['push'](_0x51b828['shift']());}};_0x31338e(++_0x450bac);}(_0x2272,0x16b));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x2227('0x0'));var path=require('path');var timeout=require(_0x2227('0x1'));var express=require(_0x2227('0x2'));var router=express[_0x2227('0x3')]();var fs_extra=require(_0x2227('0x4'));var auth=require(_0x2227('0x5'));var interaction=require(_0x2227('0x6'));var config=require(_0x2227('0x7'));var controller=require(_0x2227('0x8'));router[_0x2227('0x9')]('/',auth[_0x2227('0xa')](),controller['index']);router['get'](_0x2227('0xb'),auth['isAuthenticated'](),controller[_0x2227('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2227('0xd')]);router[_0x2227('0xe')](_0x2227('0xb'),auth[_0x2227('0xa')](),controller[_0x2227('0xf')]);router[_0x2227('0x10')](_0x2227('0xb'),auth[_0x2227('0xa')](),controller[_0x2227('0x11')]);module['exports']=router;
\ No newline at end of file
index 18bb772..a3153ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4573=['sequelize','STRING','noop','*,*,*,*'];(function(_0x2c87a8,_0x50af87){var _0x45b027=function(_0x43e2fe){while(--_0x43e2fe){_0x2c87a8['push'](_0x2c87a8['shift']());}};_0x45b027(++_0x50af87);}(_0x4573,0x19c));var _0x3457=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4573[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3457('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3457('0x1')],'allowNull':![],'defaultValue':_0x3457('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x3457('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x3457('0x3')}};
\ No newline at end of file
+var _0xd495=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xd495,0x9f));var _0x5d49=function(_0x212a37,_0xf35b2e){_0x212a37=_0x212a37-0x0;var _0x5d0bf9=_0xd495[_0x212a37];return _0x5d0bf9;};'use strict';var Sequelize=require(_0x5d49('0x0'));module[_0x5d49('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x5d49('0x2')],'allowNull':![],'defaultValue':_0x5d49('0x3')},'appdata':{'type':Sequelize[_0x5d49('0x4')]()},'description':{'type':Sequelize[_0x5d49('0x2')]},'interval':{'type':Sequelize[_0x5d49('0x2')],'defaultValue':_0x5d49('0x5')}};
\ No newline at end of file
index e0318f8..6f2ec06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdcf=['catch','find','create','body','params','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','error','stack','name','map','OpenchannelApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','includeAll','include','findAll','rows'];(function(_0x18a702,_0x26aebd){var _0xa901db=function(_0x1c14c5){while(--_0x1c14c5){_0x18a702['push'](_0x18a702['shift']());}};_0xa901db(++_0x26aebd);}(_0xbdcf,0x9a));var _0xfbdc=function(_0x120e98,_0x3d320e){_0x120e98=_0x120e98-0x0;var _0x3eaf7f=_0xbdcf[_0x120e98];return _0x3eaf7f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbdc('0x0'));var zipdir=require(_0xfbdc('0x1'));var jsonpatch=require(_0xfbdc('0x2'));var rp=require(_0xfbdc('0x3'));var moment=require(_0xfbdc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfbdc('0x5'));var util=require(_0xfbdc('0x6'));var path=require(_0xfbdc('0x7'));var sox=require('sox');var csv=require(_0xfbdc('0x8'));var ejs=require(_0xfbdc('0x9'));var fs=require('fs');var fs_extra=require(_0xfbdc('0xa'));var _=require(_0xfbdc('0xb'));var squel=require(_0xfbdc('0xc'));var crypto=require(_0xfbdc('0xd'));var jsforce=require(_0xfbdc('0xe'));var deskjs=require(_0xfbdc('0xf'));var toCsv=require('to-csv');var querystring=require(_0xfbdc('0x10'));var Papa=require('papaparse');var Redis=require(_0xfbdc('0x11'));var authService=require(_0xfbdc('0x12'));var qs=require(_0xfbdc('0x13'));var as=require(_0xfbdc('0x14'));var hardwareService=require(_0xfbdc('0x15'));var logger=require(_0xfbdc('0x16'))(_0xfbdc('0x17'));var utils=require(_0xfbdc('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfbdc('0x19'))['db'];function respondWithStatusCode(_0x3b7b36,_0x163e50){_0x163e50=_0x163e50||0xcc;return function(_0x4e57ad){if(_0x4e57ad){return _0x3b7b36[_0xfbdc('0x1a')](_0x163e50);}return _0x3b7b36[_0xfbdc('0x1b')](_0x163e50)[_0xfbdc('0x1c')]();};}function respondWithResult(_0x5b356d,_0x16f1c9){_0x16f1c9=_0x16f1c9||0xc8;return function(_0xabc0cb){if(_0xabc0cb){return _0x5b356d['status'](_0x16f1c9)[_0xfbdc('0x1d')](_0xabc0cb);}};}function respondWithFilteredResult(_0x1c73cb,_0x1942b4){return function(_0x1ee07a){if(_0x1ee07a){var _0x184249=typeof _0x1942b4[_0xfbdc('0x1e')]==='undefined'&&typeof _0x1942b4[_0xfbdc('0x1f')]===_0xfbdc('0x20');var _0x52ccc8=_0x1ee07a[_0xfbdc('0x21')];var _0x15a2c2=_0x184249?0x0:_0x1942b4['offset'];var _0x155029=_0x184249?_0x1ee07a[_0xfbdc('0x21')]:_0x1942b4['offset']+_0x1942b4[_0xfbdc('0x1f')];var _0x15ad0f;if(_0x155029>=_0x52ccc8){_0x155029=_0x52ccc8;_0x15ad0f=0xc8;}else{_0x15ad0f=0xce;}_0x1c73cb['status'](_0x15ad0f);return _0x1c73cb[_0xfbdc('0x22')]('Content-Range',_0x15a2c2+'-'+_0x155029+'/'+_0x52ccc8)[_0xfbdc('0x1d')](_0x1ee07a);}return null;};}function patchUpdates(_0x26db65){return function(_0x2bd441){try{jsonpatch[_0xfbdc('0x23')](_0x2bd441,_0x26db65,!![]);}catch(_0x5d7109){return BPromise[_0xfbdc('0x24')](_0x5d7109);}return _0x2bd441['save']();};}function saveUpdates(_0x2523ca,_0x45a160){return function(_0x33b7f8){if(_0x33b7f8){return _0x33b7f8[_0xfbdc('0x25')](_0x2523ca)[_0xfbdc('0x26')](function(_0x29a59e){return _0x29a59e;});}return null;};}function removeEntity(_0x311aab,_0x31671b){return function(_0x54b8f4){if(_0x54b8f4){return _0x54b8f4['destroy']()['then'](function(){_0x311aab['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b66e2,_0x91e9c5){return function(_0x2e8c6b){if(!_0x2e8c6b){_0x4b66e2[_0xfbdc('0x1a')](0x194);}return _0x2e8c6b;};}function handleError(_0x2db290,_0x2c6938){_0x2c6938=_0x2c6938||0x1f4;return function(_0x2d8c3d){logger[_0xfbdc('0x27')](_0x2d8c3d[_0xfbdc('0x28')]);if(_0x2d8c3d[_0xfbdc('0x29')]){delete _0x2d8c3d[_0xfbdc('0x29')];}_0x2db290['status'](_0x2c6938)['send'](_0x2d8c3d);};}exports['index']=function(_0x1856a5,_0x52a888){var _0x36e608={},_0x45b535={},_0x85595a={'count':0x0,'rows':[]};var _0x3ee355=_[_0xfbdc('0x2a')](db[_0xfbdc('0x2b')][_0xfbdc('0x2c')],function(_0x1cba4f){return{'name':_0x1cba4f[_0xfbdc('0x2d')],'type':_0x1cba4f['type'][_0xfbdc('0x2e')]};});_0x45b535[_0xfbdc('0x2f')]=_[_0xfbdc('0x2a')](_0x3ee355,_0xfbdc('0x29'));_0x45b535['query']=_[_0xfbdc('0x30')](_0x1856a5[_0xfbdc('0x31')]);_0x45b535[_0xfbdc('0x32')]=_[_0xfbdc('0x33')](_0x45b535[_0xfbdc('0x2f')],_0x45b535[_0xfbdc('0x31')]);_0x36e608[_0xfbdc('0x34')]=_[_0xfbdc('0x33')](_0x45b535[_0xfbdc('0x2f')],qs[_0xfbdc('0x35')](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x35')]));_0x36e608[_0xfbdc('0x34')]=_0x36e608[_0xfbdc('0x34')][_0xfbdc('0x36')]?_0x36e608[_0xfbdc('0x34')]:_0x45b535['model'];if(!_0x1856a5['query'][_0xfbdc('0x37')](_0xfbdc('0x38'))){_0x36e608['limit']=qs['limit'](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x1f')]);_0x36e608[_0xfbdc('0x1e')]=qs[_0xfbdc('0x1e')](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x1e')]);}_0x36e608[_0xfbdc('0x39')]=qs['sort'](_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3a')]);_0x36e608[_0xfbdc('0x3b')]=qs[_0xfbdc('0x32')](_['pick'](_0x1856a5[_0xfbdc('0x31')],_0x45b535['filters']),_0x3ee355);if(_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3c')]){_0x36e608['where']=_[_0xfbdc('0x3d')](_0x36e608[_0xfbdc('0x3b')],{'$or':_[_0xfbdc('0x2a')](_0x3ee355,function(_0x1654dd){if(_0x1654dd[_0xfbdc('0x3e')]!=='VIRTUAL'){var _0x588fd8={};_0x588fd8[_0x1654dd[_0xfbdc('0x29')]]={'$like':'%'+_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x3c')]+'%'};return _0x588fd8;}})});}_0x36e608=_[_0xfbdc('0x3d')]({},_0x36e608,_0x1856a5[_0xfbdc('0x3f')]);var _0x320105={'where':_0x36e608[_0xfbdc('0x3b')]};return db[_0xfbdc('0x2b')][_0xfbdc('0x21')](_0x320105)[_0xfbdc('0x26')](function(_0x14d7f7){_0x85595a[_0xfbdc('0x21')]=_0x14d7f7;if(_0x1856a5[_0xfbdc('0x31')][_0xfbdc('0x40')]){_0x36e608[_0xfbdc('0x41')]=[{'all':!![]}];}return db[_0xfbdc('0x2b')][_0xfbdc('0x42')](_0x36e608);})[_0xfbdc('0x26')](function(_0x47aa47){_0x85595a[_0xfbdc('0x43')]=_0x47aa47;return _0x85595a;})[_0xfbdc('0x26')](respondWithFilteredResult(_0x52a888,_0x36e608))[_0xfbdc('0x44')](handleError(_0x52a888,null));};exports['show']=function(_0xa3f488,_0x30d0a5){var _0x5cc8e7={'raw':!![],'where':{'id':_0xa3f488['params']['id']}},_0xa7746={};_0xa7746[_0xfbdc('0x2f')]=_[_0xfbdc('0x30')](db[_0xfbdc('0x2b')][_0xfbdc('0x2c')]);_0xa7746['query']=_[_0xfbdc('0x30')](_0xa3f488['query']);_0xa7746[_0xfbdc('0x32')]=_[_0xfbdc('0x33')](_0xa7746['model'],_0xa7746[_0xfbdc('0x31')]);_0x5cc8e7[_0xfbdc('0x34')]=_['intersection'](_0xa7746[_0xfbdc('0x2f')],qs['fields'](_0xa3f488[_0xfbdc('0x31')]['fields']));_0x5cc8e7[_0xfbdc('0x34')]=_0x5cc8e7[_0xfbdc('0x34')][_0xfbdc('0x36')]?_0x5cc8e7['attributes']:_0xa7746[_0xfbdc('0x2f')];if(_0xa3f488['query'][_0xfbdc('0x40')]){_0x5cc8e7[_0xfbdc('0x41')]=[{'all':!![]}];}_0x5cc8e7=_[_0xfbdc('0x3d')]({},_0x5cc8e7,_0xa3f488['options']);return db[_0xfbdc('0x2b')][_0xfbdc('0x45')](_0x5cc8e7)[_0xfbdc('0x26')](handleEntityNotFound(_0x30d0a5,null))[_0xfbdc('0x26')](respondWithResult(_0x30d0a5,null))[_0xfbdc('0x44')](handleError(_0x30d0a5,null));};exports[_0xfbdc('0x46')]=function(_0x5d156f,_0x31e14d){return db[_0xfbdc('0x2b')]['create'](_0x5d156f[_0xfbdc('0x47')],{})[_0xfbdc('0x26')](respondWithResult(_0x31e14d,0xc9))['catch'](handleError(_0x31e14d,null));};exports['update']=function(_0x8db46f,_0x50dce7){if(_0x8db46f['body']['id']){delete _0x8db46f[_0xfbdc('0x47')]['id'];}return db[_0xfbdc('0x2b')][_0xfbdc('0x45')]({'where':{'id':_0x8db46f[_0xfbdc('0x48')]['id']}})[_0xfbdc('0x26')](handleEntityNotFound(_0x50dce7,null))[_0xfbdc('0x26')](saveUpdates(_0x8db46f[_0xfbdc('0x47')],null))['then'](respondWithResult(_0x50dce7,null))['catch'](handleError(_0x50dce7,null));};exports[_0xfbdc('0x49')]=function(_0x578c76,_0xd058a4){return db[_0xfbdc('0x2b')]['find']({'where':{'id':_0x578c76['params']['id']}})[_0xfbdc('0x26')](handleEntityNotFound(_0xd058a4,null))[_0xfbdc('0x26')](removeEntity(_0xd058a4,null))['catch'](handleError(_0xd058a4,null));};
\ No newline at end of file
+var _0xeb4e=['key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','update','destroy','then','stack','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type'];(function(_0x500ace,_0x3e9986){var _0x3c31bc=function(_0x5cce7a){while(--_0x5cce7a){_0x500ace['push'](_0x500ace['shift']());}};_0x3c31bc(++_0x3e9986);}(_0xeb4e,0x107));var _0xeeb4=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xeb4e[_0x110c3d];return _0x226d67;};'use strict';var emlformat=require(_0xeeb4('0x0'));var rimraf=require(_0xeeb4('0x1'));var zipdir=require(_0xeeb4('0x2'));var jsonpatch=require(_0xeeb4('0x3'));var rp=require(_0xeeb4('0x4'));var moment=require('moment');var BPromise=require(_0xeeb4('0x5'));var Mustache=require(_0xeeb4('0x6'));var util=require(_0xeeb4('0x7'));var path=require(_0xeeb4('0x8'));var sox=require('sox');var csv=require(_0xeeb4('0x9'));var ejs=require(_0xeeb4('0xa'));var fs=require('fs');var fs_extra=require(_0xeeb4('0xb'));var _=require(_0xeeb4('0xc'));var squel=require(_0xeeb4('0xd'));var crypto=require(_0xeeb4('0xe'));var jsforce=require(_0xeeb4('0xf'));var deskjs=require(_0xeeb4('0x10'));var toCsv=require('to-csv');var querystring=require(_0xeeb4('0x11'));var Papa=require(_0xeeb4('0x12'));var Redis=require(_0xeeb4('0x13'));var authService=require(_0xeeb4('0x14'));var qs=require(_0xeeb4('0x15'));var as=require(_0xeeb4('0x16'));var hardwareService=require(_0xeeb4('0x17'));var logger=require(_0xeeb4('0x18'))(_0xeeb4('0x19'));var utils=require(_0xeeb4('0x1a'));var config=require(_0xeeb4('0x1b'));var licenseUtil=require(_0xeeb4('0x1c'));var db=require(_0xeeb4('0x1d'))['db'];function respondWithStatusCode(_0x3b8940,_0x5d8e38){_0x5d8e38=_0x5d8e38||0xcc;return function(_0x27c251){if(_0x27c251){return _0x3b8940[_0xeeb4('0x1e')](_0x5d8e38);}return _0x3b8940[_0xeeb4('0x1f')](_0x5d8e38)[_0xeeb4('0x20')]();};}function respondWithResult(_0x53fdc4,_0x127a65){_0x127a65=_0x127a65||0xc8;return function(_0xd28f57){if(_0xd28f57){return _0x53fdc4['status'](_0x127a65)[_0xeeb4('0x21')](_0xd28f57);}};}function respondWithFilteredResult(_0x54f462,_0x12c33a){return function(_0x388be0){if(_0x388be0){var _0x517b6b=typeof _0x12c33a[_0xeeb4('0x22')]===_0xeeb4('0x23')&&typeof _0x12c33a['limit']===_0xeeb4('0x23');var _0x347dd4=_0x388be0[_0xeeb4('0x24')];var _0x277f0d=_0x517b6b?0x0:_0x12c33a[_0xeeb4('0x22')];var _0xdfb545=_0x517b6b?_0x388be0[_0xeeb4('0x24')]:_0x12c33a[_0xeeb4('0x22')]+_0x12c33a['limit'];var _0x301193;if(_0xdfb545>=_0x347dd4){_0xdfb545=_0x347dd4;_0x301193=0xc8;}else{_0x301193=0xce;}_0x54f462[_0xeeb4('0x1f')](_0x301193);return _0x54f462[_0xeeb4('0x25')]('Content-Range',_0x277f0d+'-'+_0xdfb545+'/'+_0x347dd4)['json'](_0x388be0);}return null;};}function patchUpdates(_0x2d0623){return function(_0x3e7758){try{jsonpatch[_0xeeb4('0x26')](_0x3e7758,_0x2d0623,!![]);}catch(_0x1e6f27){return BPromise[_0xeeb4('0x27')](_0x1e6f27);}return _0x3e7758[_0xeeb4('0x28')]();};}function saveUpdates(_0x13ad5d,_0xd3fdf1){return function(_0x303058){if(_0x303058){return _0x303058[_0xeeb4('0x29')](_0x13ad5d)['then'](function(_0x395859){return _0x395859;});}return null;};}function removeEntity(_0x37e91e,_0x3992da){return function(_0x38e83c){if(_0x38e83c){return _0x38e83c[_0xeeb4('0x2a')]()[_0xeeb4('0x2b')](function(){_0x37e91e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x686043,_0x500ee0){return function(_0x57a25e){if(!_0x57a25e){_0x686043[_0xeeb4('0x1e')](0x194);}return _0x57a25e;};}function handleError(_0x1c8039,_0xd901ab){_0xd901ab=_0xd901ab||0x1f4;return function(_0x3bef76){logger['error'](_0x3bef76[_0xeeb4('0x2c')]);if(_0x3bef76[_0xeeb4('0x2d')]){delete _0x3bef76[_0xeeb4('0x2d')];}_0x1c8039['status'](_0xd901ab)[_0xeeb4('0x2e')](_0x3bef76);};}exports[_0xeeb4('0x2f')]=function(_0x18299b,_0x3ecf41){var _0x11c0e8={},_0x1e787c={},_0x1860bc={'count':0x0,'rows':[]};var _0x35a0d1=_[_0xeeb4('0x30')](db[_0xeeb4('0x31')][_0xeeb4('0x32')],function(_0x3151d4){return{'name':_0x3151d4[_0xeeb4('0x33')],'type':_0x3151d4[_0xeeb4('0x34')][_0xeeb4('0x35')]};});_0x1e787c[_0xeeb4('0x36')]=_[_0xeeb4('0x30')](_0x35a0d1,'name');_0x1e787c[_0xeeb4('0x37')]=_[_0xeeb4('0x38')](_0x18299b[_0xeeb4('0x37')]);_0x1e787c[_0xeeb4('0x39')]=_[_0xeeb4('0x3a')](_0x1e787c[_0xeeb4('0x36')],_0x1e787c['query']);_0x11c0e8[_0xeeb4('0x3b')]=_[_0xeeb4('0x3a')](_0x1e787c[_0xeeb4('0x36')],qs[_0xeeb4('0x3c')](_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x3c')]));_0x11c0e8[_0xeeb4('0x3b')]=_0x11c0e8['attributes'][_0xeeb4('0x3d')]?_0x11c0e8[_0xeeb4('0x3b')]:_0x1e787c[_0xeeb4('0x36')];if(!_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x3e')](_0xeeb4('0x3f'))){_0x11c0e8[_0xeeb4('0x40')]=qs['limit'](_0x18299b[_0xeeb4('0x37')]['limit']);_0x11c0e8[_0xeeb4('0x22')]=qs[_0xeeb4('0x22')](_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x22')]);}_0x11c0e8['order']=qs[_0xeeb4('0x41')](_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x41')]);_0x11c0e8['where']=qs[_0xeeb4('0x39')](_['pick'](_0x18299b[_0xeeb4('0x37')],_0x1e787c[_0xeeb4('0x39')]),_0x35a0d1);if(_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x42')]){_0x11c0e8['where']=_['merge'](_0x11c0e8[_0xeeb4('0x43')],{'$or':_['map'](_0x35a0d1,function(_0x4f9706){if(_0x4f9706[_0xeeb4('0x34')]!==_0xeeb4('0x44')){var _0x1c0184={};_0x1c0184[_0x4f9706['name']]={'$like':'%'+_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x42')]+'%'};return _0x1c0184;}})});}_0x11c0e8=_[_0xeeb4('0x45')]({},_0x11c0e8,_0x18299b[_0xeeb4('0x46')]);var _0x1d83a8={'where':_0x11c0e8[_0xeeb4('0x43')]};return db['OpenchannelApplication'][_0xeeb4('0x24')](_0x1d83a8)[_0xeeb4('0x2b')](function(_0x52fee1){_0x1860bc[_0xeeb4('0x24')]=_0x52fee1;if(_0x18299b[_0xeeb4('0x37')][_0xeeb4('0x47')]){_0x11c0e8[_0xeeb4('0x48')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0xeeb4('0x49')](_0x11c0e8);})[_0xeeb4('0x2b')](function(_0x153624){_0x1860bc['rows']=_0x153624;return _0x1860bc;})['then'](respondWithFilteredResult(_0x3ecf41,_0x11c0e8))[_0xeeb4('0x4a')](handleError(_0x3ecf41,null));};exports['show']=function(_0x81b0be,_0x4c09c6){var _0x19f64b={'raw':!![],'where':{'id':_0x81b0be[_0xeeb4('0x4b')]['id']}},_0x24f0c1={};_0x24f0c1['model']=_[_0xeeb4('0x38')](db['OpenchannelApplication'][_0xeeb4('0x32')]);_0x24f0c1[_0xeeb4('0x37')]=_[_0xeeb4('0x38')](_0x81b0be[_0xeeb4('0x37')]);_0x24f0c1['filters']=_[_0xeeb4('0x3a')](_0x24f0c1[_0xeeb4('0x36')],_0x24f0c1[_0xeeb4('0x37')]);_0x19f64b['attributes']=_[_0xeeb4('0x3a')](_0x24f0c1['model'],qs[_0xeeb4('0x3c')](_0x81b0be[_0xeeb4('0x37')][_0xeeb4('0x3c')]));_0x19f64b[_0xeeb4('0x3b')]=_0x19f64b[_0xeeb4('0x3b')]['length']?_0x19f64b[_0xeeb4('0x3b')]:_0x24f0c1[_0xeeb4('0x36')];if(_0x81b0be[_0xeeb4('0x37')][_0xeeb4('0x47')]){_0x19f64b[_0xeeb4('0x48')]=[{'all':!![]}];}_0x19f64b=_[_0xeeb4('0x45')]({},_0x19f64b,_0x81b0be[_0xeeb4('0x46')]);return db[_0xeeb4('0x31')][_0xeeb4('0x4c')](_0x19f64b)[_0xeeb4('0x2b')](handleEntityNotFound(_0x4c09c6,null))[_0xeeb4('0x2b')](respondWithResult(_0x4c09c6,null))[_0xeeb4('0x4a')](handleError(_0x4c09c6,null));};exports[_0xeeb4('0x4d')]=function(_0x45dd3d,_0x545d0b){return db[_0xeeb4('0x31')][_0xeeb4('0x4d')](_0x45dd3d[_0xeeb4('0x4e')],{})[_0xeeb4('0x2b')](respondWithResult(_0x545d0b,0xc9))[_0xeeb4('0x4a')](handleError(_0x545d0b,null));};exports['update']=function(_0x5bb5fa,_0x368850){if(_0x5bb5fa[_0xeeb4('0x4e')]['id']){delete _0x5bb5fa[_0xeeb4('0x4e')]['id'];}return db['OpenchannelApplication'][_0xeeb4('0x4c')]({'where':{'id':_0x5bb5fa[_0xeeb4('0x4b')]['id']}})[_0xeeb4('0x2b')](handleEntityNotFound(_0x368850,null))[_0xeeb4('0x2b')](saveUpdates(_0x5bb5fa[_0xeeb4('0x4e')],null))[_0xeeb4('0x2b')](respondWithResult(_0x368850,null))['catch'](handleError(_0x368850,null));};exports[_0xeeb4('0x2a')]=function(_0x3b98f3,_0x43bde3){return db[_0xeeb4('0x31')][_0xeeb4('0x4c')]({'where':{'id':_0x3b98f3[_0xeeb4('0x4b')]['id']}})[_0xeeb4('0x2b')](handleEntityNotFound(_0x43bde3,null))[_0xeeb4('0x2b')](removeEntity(_0x43bde3,null))['catch'](handleError(_0x43bde3,null));};
\ No newline at end of file
index 113a638..d45798f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3757=['exports','define','openchannel_applications','utf8mb4_unicode_ci','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes'];(function(_0x5e8c7c,_0x3429c6){var _0x48f7bd=function(_0x2b8a0f){while(--_0x2b8a0f){_0x5e8c7c['push'](_0x5e8c7c['shift']());}};_0x48f7bd(++_0x3429c6);}(_0x3757,0xeb));var _0x7375=function(_0x422f9d,_0x3d0b32){_0x422f9d=_0x422f9d-0x0;var _0x31d7b3=_0x3757[_0x422f9d];return _0x31d7b3;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7375('0x0'));var moment=require(_0x7375('0x1'));var BPromise=require(_0x7375('0x2'));var rp=require(_0x7375('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7375('0x4'));var config=require(_0x7375('0x5'));var attributes=require(_0x7375('0x6'));module[_0x7375('0x7')]=function(_0x1d0337,_0x263030){return _0x1d0337[_0x7375('0x8')]('OpenchannelApplication',attributes,{'tableName':_0x7375('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7375('0xa')});};
\ No newline at end of file
+var _0xccb4=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x5ad0d0,_0x3e145f){var _0x38fc1d=function(_0x8a60ee){while(--_0x8a60ee){_0x5ad0d0['push'](_0x5ad0d0['shift']());}};_0x38fc1d(++_0x3e145f);}(_0xccb4,0x14f));var _0x4ccb=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0xccb4[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0x4ccb('0x0'));var util=require(_0x4ccb('0x1'));var logger=require(_0x4ccb('0x2'))(_0x4ccb('0x3'));var moment=require('moment');var BPromise=require(_0x4ccb('0x4'));var rp=require(_0x4ccb('0x5'));var fs=require('fs');var path=require(_0x4ccb('0x6'));var rimraf=require(_0x4ccb('0x7'));var config=require(_0x4ccb('0x8'));var attributes=require(_0x4ccb('0x9'));module[_0x4ccb('0xa')]=function(_0x3b68fb,_0x36cede){return _0x3b68fb[_0x4ccb('0xb')](_0x4ccb('0xc'),attributes,{'tableName':_0x4ccb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4ccb('0xe'),'collate':_0x4ccb('0xf')});};
\ No newline at end of file
index 1320885..c476d7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd89d=['UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelApplication,\x20%s,\x20%s','catch'];(function(_0x175886,_0x48dfe5){var _0x48a7e2=function(_0x208e59){while(--_0x208e59){_0x175886['push'](_0x175886['shift']());}};_0x48a7e2(++_0x48dfe5);}(_0xd89d,0xc9));var _0xdd89=function(_0x116b36,_0x2343a6){_0x116b36=_0x116b36-0x0;var _0x4a07c9=_0xd89d[_0x116b36];return _0x4a07c9;};'use strict';var _=require(_0xdd89('0x0'));var util=require('util');var moment=require(_0xdd89('0x1'));var BPromise=require(_0xdd89('0x2'));var rs=require(_0xdd89('0x3'));var fs=require('fs');var Redis=require(_0xdd89('0x4'));var db=require(_0xdd89('0x5'))['db'];var utils=require(_0xdd89('0x6'));var logger=require(_0xdd89('0x7'))('rpc');var config=require(_0xdd89('0x8'));var jayson=require(_0xdd89('0x9'));var client=jayson[_0xdd89('0xa')][_0xdd89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53ca9b,_0x3cecfa,_0x4158c1){return new BPromise(function(_0x1dbd61,_0x2a8c0d){return client[_0xdd89('0xc')](_0x53ca9b,_0x4158c1)['then'](function(_0x3c3f96){logger[_0xdd89('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0xdd89('0xe'));logger[_0xdd89('0xf')](_0xdd89('0x10'),_0x3cecfa,_0xdd89('0xe'),JSON[_0xdd89('0x11')](_0x3c3f96));if(_0x3c3f96['error']){if(_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x13')]===0x1f4){logger[_0xdd89('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0x3c3f96[_0xdd89('0x12')]['message']);return _0x2a8c0d(_0x3c3f96['error'][_0xdd89('0x14')]);}logger[_0xdd89('0x12')](_0xdd89('0x15'),_0x3cecfa,_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x14')]);return _0x1dbd61(_0x3c3f96[_0xdd89('0x12')][_0xdd89('0x14')]);}else{logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x3cecfa,_0xdd89('0xe'));_0x1dbd61(_0x3c3f96['result'][_0xdd89('0x14')]);}})[_0xdd89('0x16')](function(_0x39f803){logger[_0xdd89('0x12')](_0xdd89('0x15'),_0x3cecfa,_0x39f803);_0x2a8c0d(_0x39f803);});});}exports[_0xdd89('0x17')]=function(_0x36b15f){var _0x568f94=this;return new Promise(function(_0x488c49,_0x11a80d){return db[_0xdd89('0x18')][_0xdd89('0x19')](_0x36b15f[_0xdd89('0x1a')],{'raw':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f[_0xdd89('0x1b')][_0xdd89('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f['options'][_0xdd89('0x1d')]||null:null,'attributes':_0x36b15f['options']?_0x36b15f[_0xdd89('0x1b')][_0xdd89('0x1e')]||null:null,'limit':_0x36b15f[_0xdd89('0x1b')]?_0x36b15f[_0xdd89('0x1b')]['limit']||null:null})[_0xdd89('0x1f')](function(_0x4311ed){logger[_0xdd89('0xd')](_0xdd89('0x17'),_0x36b15f);logger[_0xdd89('0xf')](_0xdd89('0x17'),_0x36b15f,JSON[_0xdd89('0x11')](_0x4311ed));_0x488c49(_0x4311ed);})[_0xdd89('0x16')](function(_0xdf38af){logger[_0xdd89('0x12')](_0xdd89('0x17'),_0xdf38af[_0xdd89('0x14')],_0x36b15f);_0x11a80d(_0x568f94['error'](0x1f4,_0xdf38af[_0xdd89('0x14')]));});});};
\ No newline at end of file
+var _0x8cbc=['http','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','update','body','options','raw','attributes','limit','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2299e8,_0x3e4063){var _0x433c0e=function(_0x43f27e){while(--_0x43f27e){_0x2299e8['push'](_0x2299e8['shift']());}};_0x433c0e(++_0x3e4063);}(_0x8cbc,0x1c6));var _0xc8cb=function(_0x2ef5e4,_0x3b9561){_0x2ef5e4=_0x2ef5e4-0x0;var _0x1e6df9=_0x8cbc[_0x2ef5e4];return _0x1e6df9;};'use strict';var _=require(_0xc8cb('0x0'));var util=require('util');var moment=require(_0xc8cb('0x1'));var BPromise=require(_0xc8cb('0x2'));var rs=require(_0xc8cb('0x3'));var fs=require('fs');var Redis=require(_0xc8cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc8cb('0x5'));var logger=require(_0xc8cb('0x6'))(_0xc8cb('0x7'));var config=require(_0xc8cb('0x8'));var jayson=require(_0xc8cb('0x9'));var client=jayson[_0xc8cb('0xa')][_0xc8cb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x190de3,_0x2c5bc4,_0x2d4aa0){return new BPromise(function(_0xd9bf13,_0x3fc815){return client['request'](_0x190de3,_0x2d4aa0)['then'](function(_0x5e1fb5){logger[_0xc8cb('0xc')](_0xc8cb('0xd'),_0x2c5bc4,_0xc8cb('0xe'));logger[_0xc8cb('0xf')](_0xc8cb('0x10'),_0x2c5bc4,'request\x20sent',JSON[_0xc8cb('0x11')](_0x5e1fb5));if(_0x5e1fb5[_0xc8cb('0x12')]){if(_0x5e1fb5[_0xc8cb('0x12')][_0xc8cb('0x13')]===0x1f4){logger[_0xc8cb('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x2c5bc4,_0x5e1fb5[_0xc8cb('0x12')][_0xc8cb('0x14')]);return _0x3fc815(_0x5e1fb5[_0xc8cb('0x12')][_0xc8cb('0x14')]);}logger[_0xc8cb('0x12')](_0xc8cb('0xd'),_0x2c5bc4,_0x5e1fb5['error'][_0xc8cb('0x14')]);return _0xd9bf13(_0x5e1fb5[_0xc8cb('0x12')][_0xc8cb('0x14')]);}else{logger['info'](_0xc8cb('0xd'),_0x2c5bc4,_0xc8cb('0xe'));_0xd9bf13(_0x5e1fb5[_0xc8cb('0x15')][_0xc8cb('0x14')]);}})[_0xc8cb('0x16')](function(_0x24cdea){logger[_0xc8cb('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x2c5bc4,_0x24cdea);_0x3fc815(_0x24cdea);});});}exports[_0xc8cb('0x17')]=function(_0x42e5de){var _0x5a5466=this;return new Promise(function(_0x255a60,_0x31633f){return db['OpenchannelApplication'][_0xc8cb('0x18')](_0x42e5de[_0xc8cb('0x19')],{'raw':_0x42e5de[_0xc8cb('0x1a')]?_0x42e5de[_0xc8cb('0x1a')][_0xc8cb('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42e5de['options']?_0x42e5de[_0xc8cb('0x1a')]['where']||null:null,'attributes':_0x42e5de[_0xc8cb('0x1a')]?_0x42e5de[_0xc8cb('0x1a')][_0xc8cb('0x1c')]||null:null,'limit':_0x42e5de[_0xc8cb('0x1a')]?_0x42e5de[_0xc8cb('0x1a')][_0xc8cb('0x1d')]||null:null})[_0xc8cb('0x1e')](function(_0x4ed021){logger[_0xc8cb('0xc')](_0xc8cb('0x17'),_0x42e5de);logger['debug'](_0xc8cb('0x17'),_0x42e5de,JSON['stringify'](_0x4ed021));_0x255a60(_0x4ed021);})[_0xc8cb('0x16')](function(_0x29ce65){logger[_0xc8cb('0x12')]('UpdateOpenchannelApplication',_0x29ce65[_0xc8cb('0x14')],_0x42e5de);_0x31633f(_0x5a5466['error'](0x1f4,_0x29ce65[_0xc8cb('0x14')]));});});};
\ No newline at end of file
index 921737b..84990da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba0=['addMessage','post','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','/:id','openchannelinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','show','getMessages','/:id/download','download','/:id/messages'];(function(_0xe887db,_0x5dec29){var _0x3f4889=function(_0x2a2929){while(--_0x2a2929){_0xe887db['push'](_0xe887db['shift']());}};_0x3f4889(++_0x5dec29);}(_0x0ba0,0x130));var _0x00ba=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0x0ba0[_0x556927];return _0x5f1235;};'use strict';var multer=require(_0x00ba('0x0'));var util=require(_0x00ba('0x1'));var path=require(_0x00ba('0x2'));var timeout=require(_0x00ba('0x3'));var express=require(_0x00ba('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x00ba('0x5'));var interaction=require(_0x00ba('0x6'));var config=require('../../config/environment');var controller=require('./openchannelInteraction.controller');router[_0x00ba('0x7')]('/',auth[_0x00ba('0x8')](),controller['index']);router[_0x00ba('0x7')](_0x00ba('0x9'),auth[_0x00ba('0x8')](),controller['describe']);router[_0x00ba('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x00ba('0xa')]);router[_0x00ba('0x7')]('/:id/messages',auth[_0x00ba('0x8')](),controller[_0x00ba('0xb')]);router['get'](_0x00ba('0xc'),auth['isAuthenticated'](),controller[_0x00ba('0xd')]);router['post']('/',auth[_0x00ba('0x8')](),controller['create']);router['post'](_0x00ba('0xe'),auth[_0x00ba('0x8')](),controller[_0x00ba('0xf')]);router[_0x00ba('0x10')](_0x00ba('0x11'),auth['isAuthenticated'](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),_0x00ba('0x14')),controller[_0x00ba('0x15')]);router[_0x00ba('0x16')]('/:id',auth[_0x00ba('0x8')](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),'openchannelinteraction:update'),controller[_0x00ba('0x17')]);router[_0x00ba('0x18')](_0x00ba('0x19'),auth['isAuthenticated'](),interaction[_0x00ba('0x12')](_0x00ba('0x13'),_0x00ba('0x1a')),controller[_0x00ba('0x1b')]);router['delete'](_0x00ba('0x11'),auth[_0x00ba('0x8')](),controller['removeTags']);module[_0x00ba('0x1c')]=router;
\ No newline at end of file
+var _0x7966=['create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','openchannelinteraction:destroy','destroy','removeTags','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/messages','/:id/download','post'];(function(_0x42d096,_0x5223f8){var _0x394854=function(_0x1e0a17){while(--_0x1e0a17){_0x42d096['push'](_0x42d096['shift']());}};_0x394854(++_0x5223f8);}(_0x7966,0xdf));var _0x6796=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7966[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x6796('0x0'));var util=require('util');var path=require(_0x6796('0x1'));var timeout=require('connect-timeout');var express=require(_0x6796('0x2'));var router=express[_0x6796('0x3')]();var fs_extra=require(_0x6796('0x4'));var auth=require(_0x6796('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6796('0x6'));var controller=require(_0x6796('0x7'));router['get']('/',auth[_0x6796('0x8')](),controller[_0x6796('0x9')]);router[_0x6796('0xa')](_0x6796('0xb'),auth['isAuthenticated'](),controller[_0x6796('0xc')]);router[_0x6796('0xa')](_0x6796('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x6796('0xa')](_0x6796('0xe'),auth['isAuthenticated'](),controller['getMessages']);router[_0x6796('0xa')](_0x6796('0xf'),auth[_0x6796('0x8')](),controller['download']);router[_0x6796('0x10')]('/',auth[_0x6796('0x8')](),controller[_0x6796('0x11')]);router[_0x6796('0x10')](_0x6796('0xe'),auth[_0x6796('0x8')](),controller[_0x6796('0x12')]);router[_0x6796('0x10')](_0x6796('0x13'),auth['isAuthenticated'](),interaction[_0x6796('0x14')](_0x6796('0x15'),_0x6796('0x16')),controller[_0x6796('0x17')]);router[_0x6796('0x18')]('/:id',auth[_0x6796('0x8')](),interaction['tracked'](_0x6796('0x15'),'openchannelinteraction:update'),controller[_0x6796('0x19')]);router[_0x6796('0x1a')]('/:id',auth[_0x6796('0x8')](),interaction[_0x6796('0x14')](_0x6796('0x15'),_0x6796('0x1b')),controller[_0x6796('0x1c')]);router['delete']('/:id/tags',auth['isAuthenticated'](),controller[_0x6796('0x1d')]);module['exports']=router;
\ No newline at end of file
index 77b5767..babfd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f47=['sequelize','exports','DATE','STRING','out','BOOLEAN'];(function(_0x5d2a40,_0x16450b){var _0x2c9ef2=function(_0x16006b){while(--_0x16006b){_0x5d2a40['push'](_0x5d2a40['shift']());}};_0x2c9ef2(++_0x16450b);}(_0x3f47,0x10e));var _0x73f4=function(_0x18deca,_0x194a99){_0x18deca=_0x18deca-0x0;var _0x2a5b26=_0x3f47[_0x18deca];return _0x2a5b26;};'use strict';var Sequelize=require(_0x73f4('0x0'));module[_0x73f4('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x73f4('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x73f4('0x3')]},'thirdDisposition':{'type':Sequelize[_0x73f4('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x73f4('0x2')]},'threadId':{'type':Sequelize[_0x73f4('0x3')]},'externalUrl':{'type':Sequelize[_0x73f4('0x3')]},'lastMsgAt':{'type':Sequelize[_0x73f4('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x73f4('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x73f4('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x73f4('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe5b3=['STRING','out','exports','BOOLEAN','DATE'];(function(_0x8560bc,_0x374298){var _0x182af6=function(_0x23314f){while(--_0x23314f){_0x8560bc['push'](_0x8560bc['shift']());}};_0x182af6(++_0x374298);}(_0xe5b3,0x133));var _0x3e5b=function(_0x236ed6,_0x562e24){_0x236ed6=_0x236ed6-0x0;var _0x2507e4=_0xe5b3[_0x236ed6];return _0x2507e4;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'closed':{'type':Sequelize[_0x3e5b('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3e5b('0x2')]},'disposition':{'type':Sequelize[_0x3e5b('0x3')]},'secondDisposition':{'type':Sequelize[_0x3e5b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x3e5b('0x3')]},'note':{'type':Sequelize[_0x3e5b('0x3')]},'read1stAt':{'type':Sequelize[_0x3e5b('0x2')]},'threadId':{'type':Sequelize[_0x3e5b('0x3')]},'externalUrl':{'type':Sequelize[_0x3e5b('0x3')]},'lastMsgAt':{'type':Sequelize[_0x3e5b('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3e5b('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x3e5b('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 203e862..4ff75ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb40b=['UserId','body','keys','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','a.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','OpenchannelInteractionId','all','rows','catch','params','includeAll','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','unix','root','server','files','tmp','attachments','join','transcript-%d-%s.zip','User','CmContact','firstName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','fullname','N.A.','closed','disposition','threadId','Public','existsSync','createReadStream','pipe','createWriteStream','basename','System','lastName','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','register','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','sendStatus','name','send','Users','Tags','TagIds','split','forEach','push','map','OpenchannelInteraction','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags','u.id','ui.OpenchannelInteractionId','from','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?'];(function(_0xcb28a4,_0x34fb88){var _0x55f5eb=function(_0x5d8769){while(--_0x5d8769){_0xcb28a4['push'](_0xcb28a4['shift']());}};_0x55f5eb(++_0x34fb88);}(_0xb40b,0x86));var _0xbb40=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xb40b[_0x2064e5];return _0x21a233;};'use strict';var emlformat=require(_0xbb40('0x0'));var rimraf=require(_0xbb40('0x1'));var zipdir=require(_0xbb40('0x2'));var jsonpatch=require(_0xbb40('0x3'));var rp=require(_0xbb40('0x4'));var moment=require(_0xbb40('0x5'));var BPromise=require(_0xbb40('0x6'));var Mustache=require(_0xbb40('0x7'));var util=require(_0xbb40('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbb40('0x9'));var fs=require('fs');var fs_extra=require(_0xbb40('0xa'));var _=require(_0xbb40('0xb'));var squel=require(_0xbb40('0xc'));var crypto=require(_0xbb40('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbb40('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbb40('0xf'));var Papa=require(_0xbb40('0x10'));var Redis=require(_0xbb40('0x11'));var authService=require(_0xbb40('0x12'));var qs=require(_0xbb40('0x13'));var as=require(_0xbb40('0x14'));var pdf=require(_0xbb40('0x15'));var hardwareService=require(_0xbb40('0x16'));var logger=require(_0xbb40('0x17'))(_0xbb40('0x18'));var utils=require(_0xbb40('0x19'));var config=require(_0xbb40('0x1a'));var licenseUtil=require(_0xbb40('0x1b'));var db=require(_0xbb40('0x1c'))['db'];config['redis']=_[_0xbb40('0x1d')](config['redis'],{'host':_0xbb40('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0xbb40('0x1f')](socket);function respondWithStatusCode(_0x193d75,_0x374abd){_0x374abd=_0x374abd||0xcc;return function(_0x97293d){if(_0x97293d){return _0x193d75['sendStatus'](_0x374abd);}return _0x193d75['status'](_0x374abd)[_0xbb40('0x20')]();};}function respondWithResult(_0x439845,_0x4a388e){_0x4a388e=_0x4a388e||0xc8;return function(_0x25abe8){if(_0x25abe8){return _0x439845[_0xbb40('0x21')](_0x4a388e)[_0xbb40('0x22')](_0x25abe8);}};}function respondWithFilteredResult(_0x4c7246,_0x4e2eaf){return function(_0x18b0be){if(_0x18b0be){var _0x476c8c=typeof _0x4e2eaf[_0xbb40('0x23')]===_0xbb40('0x24')&&typeof _0x4e2eaf[_0xbb40('0x25')]===_0xbb40('0x24');var _0xa8ef0d=_0x18b0be['count'];var _0x13f599=_0x476c8c?0x0:_0x4e2eaf[_0xbb40('0x23')];var _0x121d07=_0x476c8c?_0x18b0be[_0xbb40('0x26')]:_0x4e2eaf['offset']+_0x4e2eaf[_0xbb40('0x25')];var _0x38f539;if(_0x121d07>=_0xa8ef0d){_0x121d07=_0xa8ef0d;_0x38f539=0xc8;}else{_0x38f539=0xce;}_0x4c7246[_0xbb40('0x21')](_0x38f539);return _0x4c7246[_0xbb40('0x27')](_0xbb40('0x28'),_0x13f599+'-'+_0x121d07+'/'+_0xa8ef0d)[_0xbb40('0x22')](_0x18b0be);}return null;};}function patchUpdates(_0x5edff5){return function(_0x1793cb){try{jsonpatch[_0xbb40('0x29')](_0x1793cb,_0x5edff5,!![]);}catch(_0x96ddea){return BPromise['reject'](_0x96ddea);}return _0x1793cb['save']();};}function saveUpdates(_0x3a64b1,_0x525871){return function(_0xa04927){if(_0xa04927){return _0xa04927[_0xbb40('0x2a')](_0x3a64b1)[_0xbb40('0x2b')](function(_0x21bdcc){return _0x21bdcc;});}return null;};}function removeEntity(_0x19caf9,_0x5d412d){return function(_0x2d968e){if(_0x2d968e){return _0x2d968e['destroy']()[_0xbb40('0x2b')](function(){_0x19caf9[_0xbb40('0x21')](0xcc)[_0xbb40('0x20')]();});}};}function handleEntityNotFound(_0xaba426,_0x289ca4){return function(_0x5c5714){if(!_0x5c5714){_0xaba426[_0xbb40('0x2c')](0x194);}return _0x5c5714;};}function handleError(_0x8c07d7,_0x2c23ca){_0x2c23ca=_0x2c23ca||0x1f4;return function(_0x25f71f){logger['error'](_0x25f71f['stack']);if(_0x25f71f[_0xbb40('0x2d')]){delete _0x25f71f[_0xbb40('0x2d')];}_0x8c07d7[_0xbb40('0x21')](_0x2c23ca)[_0xbb40('0x2e')](_0x25f71f);};}function getInteractionUsers(_0x51173a,_0x2d627f){return new BPromise(function(_0x455bc5,_0x10d9a4){try{if(_0x2d627f[_0x51173a['id']]){_0x51173a[_0xbb40('0x2f')]=_['map'](_0x2d627f[_0x51173a['id']],function(_0x15c06f){return{'id':_0x15c06f['id'],'fullname':_0x15c06f['fullname']};});}}catch(_0x2ef391){_0x10d9a4(_0x2ef391);}_0x455bc5(_0x51173a);});}function getInteractionTags(_0x55f5c5,_0x30daeb){return new BPromise(function(_0x165818,_0xaf1217){try{if(_0x55f5c5['TagIds']){_0x55f5c5[_0xbb40('0x30')]=[];_0x55f5c5[_0xbb40('0x31')][_0xbb40('0x32')](',')[_0xbb40('0x33')](function(_0x14aa60){_0x55f5c5['Tags'][_0xbb40('0x34')](_0x30daeb[_0x14aa60]);});}delete _0x55f5c5['TagIds'];}catch(_0x249545){_0xaf1217(_0x249545);}_0x165818(_0x55f5c5);});}function updateOpenchannelInteraction(_0x553329,_0x484e60,_0x328c4f){return new BPromise(function(_0x2725ad,_0x4638dc){return getInteractionUsers(_0x553329,_0x328c4f)['then'](function(_0x36fa1f){return getInteractionTags(_0x36fa1f,_0x484e60);})[_0xbb40('0x2b')](function(_0x3e6a3e){_0x2725ad(_0x3e6a3e);})['catch'](function(_0x347d7b){_0x4638dc(_0x347d7b);});});}exports['index']=function(_0x151a51,_0x19d997){var _0x2e9446={},_0x3c426b={},_0x5d07c0={'count':0x0,'rows':[]};var _0xd9c42e=_[_0xbb40('0x35')](db[_0xbb40('0x36')][_0xbb40('0x37')],function(_0x11ad95){return{'name':_0x11ad95[_0xbb40('0x38')],'type':_0x11ad95[_0xbb40('0x39')]['key']};});_0x3c426b[_0xbb40('0x3a')]=_['map'](_0xd9c42e,_0xbb40('0x2d'));_0x3c426b[_0xbb40('0x3b')]=_['keys'](_0x151a51[_0xbb40('0x3b')]);_0x3c426b[_0xbb40('0x3c')]=_[_0xbb40('0x3d')](_0x3c426b[_0xbb40('0x3a')],_0x3c426b[_0xbb40('0x3b')]);_0x2e9446[_0xbb40('0x3e')]=_['intersection'](_0x3c426b[_0xbb40('0x3a')],qs[_0xbb40('0x3f')](_0x151a51[_0xbb40('0x3b')]['fields']));_0x2e9446[_0xbb40('0x3e')]=_0x2e9446[_0xbb40('0x3e')][_0xbb40('0x40')]?_0x2e9446[_0xbb40('0x3e')]:_0x3c426b[_0xbb40('0x3a')];if(!_0x151a51[_0xbb40('0x3b')][_0xbb40('0x41')]('nolimit')){_0x2e9446['limit']=qs[_0xbb40('0x25')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x25')]);_0x2e9446[_0xbb40('0x23')]=qs[_0xbb40('0x23')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x23')]);}_0x2e9446[_0xbb40('0x42')]=qs['sort'](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x43')]);_0x2e9446[_0xbb40('0x44')]=qs[_0xbb40('0x3c')](_[_0xbb40('0x45')](_0x151a51[_0xbb40('0x3b')],_0x3c426b[_0xbb40('0x3c')]),_0xd9c42e);var _0x4cfd94=[];var _0x171bf5=squel[_0xbb40('0x46')]()[_0xbb40('0x47')]('id')[_0xbb40('0x47')](_0xbb40('0x2d'))[_0xbb40('0x47')](_0xbb40('0x48'))['from'](_0xbb40('0x49'));var _0x55caaa=squel[_0xbb40('0x46')]()[_0xbb40('0x47')](_0xbb40('0x4a'))[_0xbb40('0x47')]('u.fullname')['field'](_0xbb40('0x4b'))[_0xbb40('0x4c')](_0xbb40('0x4d'),'ui')[_0xbb40('0x4e')](_0xbb40('0x4f'),'u',_0xbb40('0x50'));var _0x2f5911=squel[_0xbb40('0x46')]()[_0xbb40('0x4c')](_0xbb40('0x51'),'i')[_0xbb40('0x4e')]('cm_contacts','c',_0xbb40('0x52'))[_0xbb40('0x4e')](_0xbb40('0x4f'),'o',_0xbb40('0x53'))['left_join'](_0xbb40('0x54'),'a',_0xbb40('0x55'))['left_join'](_0xbb40('0x56'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0xbb40('0x4e')]('openchannel_interaction_has_tags','it',_0xbb40('0x57'))[_0xbb40('0x4e')](_0xbb40('0x49'),'t',_0xbb40('0x58'));var _0x476bc3=squel[_0xbb40('0x59')]();var _0x54e058=[];var _0x7f39c0=squel[_0xbb40('0x59')]();var _0x2e4bf6;if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x5a')]){_0x2e4bf6=as[_0xbb40('0x5b')](_0x151a51['query'][_0xbb40('0x5a')]);var _0x417b29=_0x2e4bf6[_0xbb40('0x5c')];for(var _0x39685b=0x0;_0x39685b<_0x2e4bf6[_0xbb40('0x5d')][_0xbb40('0x40')];_0x39685b++){var _0x12cd27=_0x2e4bf6[_0xbb40('0x5d')][_0x39685b];var _0x5890c1='i';var _0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,['name',_0x12cd27['field']]);if(!_0x4c4ed4){switch(_0x12cd27['field']){case'unreadMessages':if(_0x12cd27[_0xbb40('0x5f')]==0x1){_0x2f5911[_0xbb40('0x60')]('`'+_0x12cd27['field']+_0xbb40('0x61'));}else{_0x2f5911[_0xbb40('0x60')]('`'+_0x12cd27[_0xbb40('0x47')]+_0xbb40('0x62'));}break;case _0xbb40('0x63'):if(_0x12cd27['operator']==='$substring'){if(_0x12cd27[_0xbb40('0x5f')][_0xbb40('0x32')]('\x20')['length']>0x1){_0x476bc3[_0x417b29](_0xbb40('0x64'),qs[_0xbb40('0x65')](_0x12cd27[_0xbb40('0x5f')]),null);}else{var _0x504ef7='%'+_0x12cd27[_0xbb40('0x5f')]+'%';_0x476bc3[_0x417b29](_0xbb40('0x66'),_0x504ef7,_0x504ef7,_0x504ef7);}}else{_0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,['name',_0xbb40('0x67')]);_0x12cd27[_0xbb40('0x47')]=_0xbb40('0x67');_0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4['type'],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x20')]);}break;case'Tag':var _0x2a2975=_0x12cd27[_0xbb40('0x5f')][_0xbb40('0x32')](',')[_0xbb40('0x35')](function(_0x39dc86){return Number(_0x39dc86);});_0x2a2975[_0xbb40('0x33')](function(_0x157ff7){_0x7f39c0['or'](_0xbb40('0x6b'),'%,'+_0x157ff7+',%');});_0x54e058=_[_0xbb40('0x6c')](_0x54e058,_0x2a2975);break;case'User':if(_0x12cd27[_0xbb40('0x6d')]===_0xbb40('0x6e')){_0x476bc3[_0x417b29](_0xbb40('0x6f'),'%'+_0x12cd27[_0xbb40('0x5f')]+'%',null);}else{_0x4c4ed4=_[_0xbb40('0x5e')](_0xd9c42e,[_0xbb40('0x2d'),_0xbb40('0x70')]);_0x12cd27[_0xbb40('0x47')]='UserId';_0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4[_0xbb40('0x39')],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')]['end']);}break;case _0xbb40('0x71'):_0x2b2333=as[_0xbb40('0x68')]('me',null,_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x6a')],_0x2b2333[_0xbb40('0x5f')][_0xbb40('0x20')]);break;}}else{var _0x2b2333=as[_0xbb40('0x68')](_0x5890c1,_0x4c4ed4[_0xbb40('0x39')],_0x12cd27);_0x476bc3[_0x417b29](_0x2b2333[_0xbb40('0x69')],_0x2b2333[_0xbb40('0x5f')]['start'],_0x2b2333['value'][_0xbb40('0x20')]);}}}else{var _0x5ae3a6=_(_0x151a51[_0xbb40('0x3b')])[_0xbb40('0x72')]()[_0xbb40('0x35')](function(_0x1592ba){return _['some'](_0xd9c42e,[_0xbb40('0x2d'),_0x1592ba])?_0x1592ba:undefined;})['compact']()[_0xbb40('0x5f')]();if(!_[_0xbb40('0x73')](_0x5ae3a6)){_0x5ae3a6[_0xbb40('0x33')](function(_0x24213c){if(_0x24213c===_0xbb40('0x74')){_0x2f5911['where'](_0xbb40('0x75'),[]['concat'](_0x151a51[_0xbb40('0x3b')][_0x24213c]));}else if(_0x24213c===_0xbb40('0x76')){var _0x2a155e=JSON[_0xbb40('0x77')](_0x151a51[_0xbb40('0x3b')][_0x24213c])[_0xbb40('0x78')];var _0x5736c7=JSON[_0xbb40('0x77')](_0x151a51[_0xbb40('0x3b')][_0x24213c])['$lte'];_0x2f5911[_0xbb40('0x44')](_0xbb40('0x79'),_0x2a155e,_0x5736c7);}else{if(_0x151a51[_0xbb40('0x3b')][_0x24213c]===_0xbb40('0x7a')){_0x2f5911[_0xbb40('0x44')]('i.'+_0x24213c+'\x20IS\x20NULL');}else{_0x2f5911[_0xbb40('0x44')]('i.'+_0x24213c+_0xbb40('0x7b'),_0x151a51[_0xbb40('0x3b')][_0x24213c]);}}});}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7c')]){if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7c')]==0x1){_0x2f5911['having'](_0xbb40('0x7d'));}else{_0x2f5911['having'](_0xbb40('0x7e'));}}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')]){_0x54e058=_[_0xbb40('0x80')](_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')])?_0x151a51[_0xbb40('0x3b')][_0xbb40('0x7f')]:new Array(_0x151a51[_0xbb40('0x3b')]['tag']);_0x54e058[_0xbb40('0x33')](function(_0x23f9a8){_0x7f39c0['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x23f9a8+',%');});}if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x81')]){var _0x51fdab=_0x151a51[_0xbb40('0x3b')][_0xbb40('0x81')][_0xbb40('0x82')]('\x5c','\x5c\x5c')[_0xbb40('0x82')](/'/g,'\x27\x27');if(qs[_0xbb40('0x83')](_0x51fdab)){_0x476bc3['or'](_0xbb40('0x84'),_0x51fdab+'%');}else{_0x476bc3['or'](_0xbb40('0x85'),qs['getFullTextValue'](_0x51fdab))['or']('i.from\x20LIKE\x20?',_0x51fdab+'%')['or'](_0xbb40('0x86'),_0x51fdab+'%');}}}_0x2f5911[_0xbb40('0x44')](_0x476bc3);_0x2f5911[_0xbb40('0x87')](_0xbb40('0x88'));var _0x5a3a19={'type':db[_0xbb40('0x89')][_0xbb40('0x8a')]['SELECT'],'raw':!![]};var _0x2c3d6a=_0x2f5911[_0xbb40('0x8b')]();_0x2c3d6a[_0xbb40('0x47')](_0xbb40('0x88'));_0x2c3d6a['field'](_0xbb40('0x8c'),_0xbb40('0x8d'));if(_0x2e9446[_0xbb40('0x42')]){_0x2e9446[_0xbb40('0x42')][_0xbb40('0x33')](function(_0x5b6dcc){var _0x3883f5=_0x5b6dcc[0x0]===_0xbb40('0x8e')?_0x5b6dcc[0x0]:'i.'+_0x5b6dcc[0x0];_0x2f5911['order'](_0x3883f5,_0x5b6dcc[0x1]===_0xbb40('0x8f')?![]:!![]);});}if(!_[_0xbb40('0x73')](_0x54e058)){_0x2f5911[_0xbb40('0x60')](_0x7f39c0);_0x2c3d6a['where'](_0xbb40('0x90'),_0x54e058);}BPromise[_0xbb40('0x91')]()['then'](function(){if(!_0x2e4bf6){if(_0x151a51['query'][_0xbb40('0x74')])return;_0x2c3d6a[_0xbb40('0x44')](_0xbb40('0x92'));_0x2f5911['where'](_0xbb40('0x92'));return;}if(_0x151a51[_0xbb40('0x93')][_0xbb40('0x94')]!==_0xbb40('0x95'))return;return _0x151a51[_0xbb40('0x93')][_0xbb40('0x96')]({'attributes':['id'],'raw':!![]})[_0xbb40('0x2b')](function(_0x18fdb4){if(_[_0xbb40('0x73')](_0x18fdb4)){_0x2c3d6a[_0xbb40('0x44')](_0xbb40('0x97'));_0x2f5911[_0xbb40('0x44')](_0xbb40('0x97'));}else{_0x2c3d6a[_0xbb40('0x44')]('i.OpenchannelAccountId\x20IN\x20?',_[_0xbb40('0x35')](_0x18fdb4,'id'));_0x2f5911['where'](_0xbb40('0x75'),_[_0xbb40('0x35')](_0x18fdb4,'id'));}});})['then'](function(){if(_0x151a51['user']['role']===_0xbb40('0x95')&&!_0x2e4bf6&&!_0x151a51[_0xbb40('0x3b')][_0xbb40('0x74')])return[];return db['sequelize']['query'](_0x2c3d6a[_0xbb40('0x98')](),_0x5a3a19);})['then'](function(_0x4566c9){_0x5d07c0[_0xbb40('0x26')]=_0x4566c9[_0xbb40('0x40')];if(_0x5d07c0[_0xbb40('0x26')]===0x0)return[];return db[_0xbb40('0x99')][_0xbb40('0x3b')](_0x171bf5[_0xbb40('0x98')](),_0x5a3a19)[_0xbb40('0x2b')](function(_0x4dd78c){_0x4cfd94=_[_0xbb40('0x9a')](_0x4dd78c,'id');_0x5a3a19=_[_0xbb40('0x9b')](_0x5a3a19,{'model':db[_0xbb40('0x36')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x151a51[_0xbb40('0x3b')][_0xbb40('0x3f')]){_0x2e9446[_0xbb40('0x3e')]['forEach'](function(_0x4e381a){_0x2f5911[_0xbb40('0x47')]('i.'+_0x4e381a);});}else{_0x2f5911['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbb40('0x8d'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9c'),'Account.key');_0x2f5911['field']('a.mandatoryDisposition',_0xbb40('0x9d'));_0x2f5911[_0xbb40('0x47')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xbb40('0x8e'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9e'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0x9f'),_0xbb40('0xa0'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa1'),'Contact.lastName');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa2'),_0xbb40('0xa3'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa4'),'Contact.phone');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa5'),_0xbb40('0xa6'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa7'),_0xbb40('0xa8'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xa9'),_0xbb40('0xaa'));_0x2f5911[_0xbb40('0x47')](_0xbb40('0xab'),'Owner.internal');_0x2f5911[_0xbb40('0x47')](_0xbb40('0xac'),_0xbb40('0x31'));}if(_0x2e9446[_0xbb40('0x25')])_0x2f5911['limit'](_0x2e9446['limit']);if(_0x2e9446[_0xbb40('0x23')])_0x2f5911[_0xbb40('0x23')](_0x2e9446['offset']);return db['sequelize'][_0xbb40('0x3b')](_0x2f5911[_0xbb40('0x98')](),_0x5a3a19);})[_0xbb40('0x2b')](function(_0x11da29){if(_0x11da29[_0xbb40('0x40')]>0x0)_0x55caaa[_0xbb40('0x44')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0xbb40('0x35')](_0x11da29,'id'));return db[_0xbb40('0x99')]['query'](_0x55caaa[_0xbb40('0x98')](),_0x5a3a19)[_0xbb40('0x2b')](function(_0x13c192){var _0x36db57=_[_0xbb40('0xad')](_0x13c192,_0xbb40('0xae'));var _0x206001=[];_0x11da29['forEach'](function(_0x21b888){_0x206001[_0xbb40('0x34')](updateOpenchannelInteraction(_0x21b888,_0x4cfd94,_0x36db57));});return BPromise[_0xbb40('0xaf')](_0x206001);});});})['then'](function(_0x5436a5){_0x5d07c0[_0xbb40('0xb0')]=_0x5436a5;return _0x5d07c0;})[_0xbb40('0x2b')](respondWithFilteredResult(_0x19d997,_0x2e9446))[_0xbb40('0xb1')](handleError(_0x19d997,null));};exports['show']=function(_0x43e30e,_0x39b889){var _0x2da5d3={};if(_0x43e30e[_0xbb40('0x3b')][_0xbb40('0x39')]&&_0x43e30e[_0xbb40('0x3b')][_0xbb40('0x39')]===_0xbb40('0x4c')){_0x2da5d3[_0xbb40('0x4c')]=_0x43e30e[_0xbb40('0xb2')]['id'];}else{_0x2da5d3['id']=_0x43e30e[_0xbb40('0xb2')]['id'];}var _0x39a9b0={'raw':![],'where':_0x2da5d3},_0x3365f5={};_0x3365f5[_0xbb40('0x3a')]=_['keys'](db[_0xbb40('0x36')][_0xbb40('0x37')]);_0x3365f5['query']=_['keys'](_0x43e30e[_0xbb40('0x3b')]);_0x3365f5['filters']=_[_0xbb40('0x3d')](_0x3365f5[_0xbb40('0x3a')],_0x3365f5[_0xbb40('0x3b')]);_0x39a9b0[_0xbb40('0x3e')]=_[_0xbb40('0x3d')](_0x3365f5[_0xbb40('0x3a')],qs[_0xbb40('0x3f')](_0x43e30e['query'][_0xbb40('0x3f')]));_0x39a9b0[_0xbb40('0x3e')]=_0x39a9b0[_0xbb40('0x3e')]['length']?_0x39a9b0['attributes']:_0x3365f5['model'];if(_0x43e30e[_0xbb40('0x3b')][_0xbb40('0xb3')]){_0x39a9b0['include']=[{'all':!![]}];}_0x39a9b0=_[_0xbb40('0x9b')]({},_0x39a9b0,_0x43e30e[_0xbb40('0xb4')]);return db[_0xbb40('0x36')][_0xbb40('0x5e')](_0x39a9b0)[_0xbb40('0x2b')](handleEntityNotFound(_0x39b889,null))[_0xbb40('0x2b')](respondWithResult(_0x39b889,null))[_0xbb40('0xb1')](handleError(_0x39b889,null));};exports[_0xbb40('0xb5')]=function(_0x3962b2,_0x4d1e26){return db[_0xbb40('0x36')]['create'](_0x3962b2[_0xbb40('0x71')],{})['then'](respondWithResult(_0x4d1e26,0xc9))[_0xbb40('0xb1')](handleError(_0x4d1e26,null));};exports[_0xbb40('0x2a')]=function(_0x81fad,_0x59da8d){if(_0x81fad[_0xbb40('0x71')]['id']){delete _0x81fad['body']['id'];}return db[_0xbb40('0x36')][_0xbb40('0x5e')]({'where':{'id':_0x81fad[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x59da8d,null))[_0xbb40('0x2b')](saveUpdates(_0x81fad['body'],null))[_0xbb40('0x2b')](respondWithResult(_0x59da8d,null))[_0xbb40('0xb1')](handleError(_0x59da8d,null));};exports[_0xbb40('0xb6')]=function(_0xdcfdb3,_0x4b96ef){return db[_0xbb40('0x36')]['find']({'where':{'id':_0xdcfdb3[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x4b96ef,null))[_0xbb40('0x2b')](removeEntity(_0x4b96ef,null))[_0xbb40('0xb1')](handleError(_0x4b96ef,null));};exports[_0xbb40('0xb7')]=function(_0x2ab9ed,_0x19d3e2){return db['OpenchannelInteraction'][_0xbb40('0xb7')]()[_0xbb40('0x2b')](respondWithResult(_0x19d3e2,null))[_0xbb40('0xb1')](handleError(_0x19d3e2,null));};exports[_0xbb40('0xb8')]=function(_0x41c23d,_0x5d8b5d,_0x4788a6){return db[_0xbb40('0xb9')][_0xbb40('0x5e')]({'where':{'id':_0x41c23d[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x5d8b5d,null))[_0xbb40('0x2b')](function(_0x191a82){if(_0x191a82){return _0x191a82[_0xbb40('0xb8')](_0x41c23d[_0xbb40('0x71')][_0xbb40('0xba')],_[_0xbb40('0xbb')](_0x41c23d[_0xbb40('0x71')],[_0xbb40('0xba'),'id'])||{});}})[_0xbb40('0x2b')](respondWithResult(_0x5d8b5d,null))['catch'](handleError(_0x5d8b5d,null));};exports[_0xbb40('0xbc')]=function(_0x1a8b7,_0x4c3b82,_0x4b7633){var _0x312764={'raw':![],'where':{}};var _0x293b99={};var _0x544052={'count':0x0,'rows':[]};return db[_0xbb40('0x36')][_0xbb40('0xbd')]({'where':{'id':_0x1a8b7['params']['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x4c3b82,null))[_0xbb40('0x2b')](function(_0x5e3df5){if(_0x5e3df5){_0x293b99[_0xbb40('0x3a')]=_[_0xbb40('0x72')](db[_0xbb40('0xb9')][_0xbb40('0x37')]);_0x293b99[_0xbb40('0x3b')]=_[_0xbb40('0x72')](_0x1a8b7[_0xbb40('0x3b')]);_0x293b99[_0xbb40('0x3c')]=_['intersection'](_0x293b99[_0xbb40('0x3a')],_0x293b99[_0xbb40('0x3b')]);_0x312764[_0xbb40('0x3e')]=_[_0xbb40('0x3d')](_0x293b99[_0xbb40('0x3a')],qs['fields'](_0x1a8b7['query']['fields']));_0x312764[_0xbb40('0x3e')]=_0x312764[_0xbb40('0x3e')][_0xbb40('0x40')]?_0x312764[_0xbb40('0x3e')]:_0x293b99['model'];if(!_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x41')](_0xbb40('0xbe'))){_0x312764[_0xbb40('0x25')]=qs[_0xbb40('0x25')](_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x25')]);_0x312764[_0xbb40('0x23')]=qs['offset'](_0x1a8b7[_0xbb40('0x3b')]['offset']);}_0x312764['order']=qs['sort'](_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x43')]);_0x312764[_0xbb40('0x44')]=qs[_0xbb40('0x3c')](_[_0xbb40('0x45')](_0x1a8b7[_0xbb40('0x3b')],_0x293b99[_0xbb40('0x3c')]));_0x312764['where']['OpenchannelInteractionId']=_0x5e3df5['id'];if(_0x1a8b7[_0xbb40('0x3b')]['filter']){_0x312764[_0xbb40('0x44')]=_[_0xbb40('0x9b')](_0x312764[_0xbb40('0x44')],{'$or':_[_0xbb40('0x35')](_0x312764['attributes'],function(_0x2fcacc){var _0x112b31={};_0x112b31[_0x2fcacc]={'$like':'%'+_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x81')]+'%'};return _0x112b31;})});}if(_0x1a8b7[_0xbb40('0x3b')]['$gte']){var _0x359f85=_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0x78')][_0xbb40('0x32')](',');var _0x245f12={};_0x245f12[_0x359f85[0x0]]={'$gte':moment(_0x359f85[0x1])[_0xbb40('0xbf')](_0xbb40('0xc0'))};_0x312764[_0xbb40('0x44')]=_[_0xbb40('0x9b')](_0x312764[_0xbb40('0x44')],_0x245f12);}_0x312764=_[_0xbb40('0x9b')]({},_0x312764,_0x1a8b7[_0xbb40('0xb4')]);return db[_0xbb40('0xb9')]['count']({'where':_0x312764['where']})['then'](function(_0x381c31){_0x544052['count']=_0x381c31;if(_0x1a8b7[_0xbb40('0x3b')][_0xbb40('0xb3')]){_0x312764[_0xbb40('0xc1')]=[{'all':!![]}];}return db[_0xbb40('0xb9')][_0xbb40('0xc2')](_0x312764);})[_0xbb40('0x2b')](function(_0x13c510){_0x544052['rows']=_0x13c510;return _0x544052;});}})['then'](respondWithFilteredResult(_0x4c3b82,_0x312764))[_0xbb40('0xb1')](handleError(_0x4c3b82,null));};exports[_0xbb40('0xc3')]=function(_0xbd488,_0x373476,_0x5a38ac){return db[_0xbb40('0x36')][_0xbb40('0x5e')]({'where':{'id':_0xbd488[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x373476,null))['then'](function(_0x258871){if(_0x258871){return _0x258871[_0xbb40('0xc4')](_0xbd488[_0xbb40('0x71')][_0xbb40('0xba')],_[_0xbb40('0xbb')](_0xbd488[_0xbb40('0x71')],['ids','id'])||{})[_0xbb40('0xc5')](function(){return db[_0xbb40('0xc6')]['findAll']({'attributes':['id',_0xbb40('0x2d'),_0xbb40('0x48')],'where':{'id':_0xbd488[_0xbb40('0x71')]['ids']}});})[_0xbb40('0x2b')](function(_0x6b95bf){socket[_0xbb40('0xc7')](_0xbb40('0xc8'),{'id':Number(_0xbd488['params']['id']),'tags':_0x6b95bf||[]});return{'id':Number(_0xbd488[_0xbb40('0xb2')]['id']),'tags':_0x6b95bf||[]};});}})[_0xbb40('0x2b')](respondWithResult(_0x373476,null))['catch'](handleError(_0x373476,null));};exports['removeTags']=function(_0xb9fdf5,_0x2bede6,_0x5307be){return db['OpenchannelInteraction']['find']({'where':{'id':_0xb9fdf5[_0xbb40('0xb2')]['id']}})[_0xbb40('0x2b')](handleEntityNotFound(_0x2bede6,null))[_0xbb40('0x2b')](function(_0x4fae0d){if(_0x4fae0d){return _0x4fae0d[_0xbb40('0xc9')](_0xb9fdf5[_0xbb40('0x3b')][_0xbb40('0xba')]);}})[_0xbb40('0x2b')](respondWithStatusCode(_0x2bede6,null))['catch'](handleError(_0x2bede6,null));};exports[_0xbb40('0xca')]=function(_0x3176ac,_0x1168dd){var _0x2c065d=moment()[_0xbb40('0xcb')]()['toString']();var _0x37c81d=path['join'](config[_0xbb40('0xcc')],_0xbb40('0xcd'),_0xbb40('0xce'),_0xbb40('0xcf'));var _0xd64669=path['join'](config[_0xbb40('0xcc')],'server',_0xbb40('0xce'),_0xbb40('0xd0'));var _0x35be7f=path[_0xbb40('0xd1')](_0x37c81d,_0x2c065d);var _0x1d4172=util['format'](_0xbb40('0xd2'),_0x3176ac['params']['id'],_0x2c065d);var _0xedc742=path[_0xbb40('0xd1')](_0x37c81d,_0x1d4172);var _0x47ac89=[];_0x47ac89[_0xbb40('0x34')]({'model':db['User'],'as':_0xbb40('0xd3'),'attributes':['id','fullname'],'raw':!![]});_0x47ac89['push']({'model':db[_0xbb40('0xd4')],'as':_0xbb40('0x63'),'attributes':['id',_0xbb40('0xd5'),'lastName'],'raw':!![]});if(_0x3176ac[_0xbb40('0x3b')][_0xbb40('0xd0')]){_0x47ac89[_0xbb40('0x34')]({'model':db[_0xbb40('0xd6')],'as':_0xbb40('0xd6'),'raw':!![]});}var _0x10f8b8=[{'model':db[_0xbb40('0xb9')],'as':_0xbb40('0xd7'),'attributes':['id',_0xbb40('0x71'),_0xbb40('0x76'),_0xbb40('0xd8'),_0xbb40('0xd9'),'read'],'include':_0x47ac89}];_0x10f8b8[_0xbb40('0x34')]({'model':db['OpenchannelAccount'],'as':_0xbb40('0xda'),'attributes':['id','name']});_0x10f8b8[_0xbb40('0x34')]({'model':db['User'],'as':_0xbb40('0xdb'),'attributes':['id','fullname']});return db['OpenchannelInteraction'][_0xbb40('0x5e')]({'where':{'id':_0x3176ac[_0xbb40('0xb2')]['id']},'include':_0x10f8b8})['then'](handleEntityNotFound(_0x1168dd,null))[_0xbb40('0x2b')](function(_0x29e2d0){if(_0x29e2d0){var _0x429462=_0x29e2d0[_0xbb40('0xdc')]({'plain':!![]});fs[_0xbb40('0xdd')](_0x35be7f);var _0x57d8a7={'channel':'Openchannel','account':_0x429462[_0xbb40('0xda')][_0xbb40('0x2d')],'agent':_0x429462[_0xbb40('0xdb')]?_0x429462[_0xbb40('0xdb')][_0xbb40('0xde')]:_0xbb40('0xdf'),'createdAt':moment(_0x429462[_0xbb40('0x76')])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')](),'closedAt':_0x429462[_0xbb40('0xe0')]?moment(_0x429462['closedAt'])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')]():'','disposition':_0x429462[_0xbb40('0xe1')],'visibility':_0x429462[_0xbb40('0xe2')]?_0xbb40('0xe3'):'Private','messages':_(_0x429462[_0xbb40('0xd7')])[_0xbb40('0x81')]({'secret':![]})[_0xbb40('0x35')](function(_0x43c875){if(_0x43c875[_0xbb40('0xd6')]){var _0x2b6840=path[_0xbb40('0xd1')](_0xd64669,_0x43c875['Attachment']['basename']);if(fs[_0xbb40('0xe4')](_0x2b6840)){fs[_0xbb40('0xe5')](_0x2b6840)[_0xbb40('0xe6')](fs[_0xbb40('0xe7')](path[_0xbb40('0xd1')](_0x35be7f,_0x43c875[_0xbb40('0xd6')][_0xbb40('0xe8')])));}}return{'date':moment(_0x43c875['createdAt'])[_0xbb40('0xbf')](_0xbb40('0xc0'))[_0xbb40('0x98')](),'sender':_0x43c875[_0xbb40('0xd8')]==='out'?_0x43c875[_0xbb40('0xd3')]?_0x43c875[_0xbb40('0xd3')][_0xbb40('0xde')]:_0xbb40('0xe9'):_0x43c875[_0xbb40('0x63')][_0xbb40('0xd5')]+(_0x43c875[_0xbb40('0x63')][_0xbb40('0xea')]?'\x20'+_0x43c875[_0xbb40('0x63')]['lastName']:''),'body':_0x43c875[_0xbb40('0xd6')]?_0x43c875[_0xbb40('0xd6')][_0xbb40('0xe8')]:_0x43c875['body'],'direction':_0x43c875[_0xbb40('0xd8')]===_0xbb40('0xeb')?'A':'C','secret':_0x43c875[_0xbb40('0xd9')],'read':_0x43c875[_0xbb40('0x7c')],'attachment':_0x43c875['Attachment']};})[_0xbb40('0x5f')]()};return ejs[_0xbb40('0xec')](path[_0xbb40('0xd1')](config['root'],_0xbb40('0xcd'),_0xbb40('0xed'),_0xbb40('0xee')),{'interaction':_0x57d8a7})['then'](function(_0x54b644){var _0x45c828=path['join'](_0x35be7f,_0xbb40('0xef')+_0x429462['id']+'-'+_0x2c065d+_0xbb40('0xf0'));var _0x2038bf={'path':_0x45c828,'channel':_0xbb40('0xf1'),'interactionId':_0x429462['id']};return pdf[_0xbb40('0xf2')](_0x54b644,_0x2038bf);})[_0xbb40('0x2b')](function(){return new BPromise(function(_0x553582,_0x4717b5){zipdir(_0x35be7f,{'saveTo':_0xedc742},function(_0xddc657,_0x4a1475){if(_0xddc657)return _0x4717b5(_0xddc657);return _0x553582(_0x4a1475);});})['then'](function(){return new BPromise(function(_0x47e381,_0x325a30){rimraf(_0x35be7f,function(_0x27649a){if(_0x27649a)_0x325a30(_0x27649a);return _0x47e381();});});})[_0xbb40('0x2b')](function(){return _0x1168dd[_0xbb40('0xca')](_0xedc742,_0x1d4172,function(_0xd5d2c9){if(_0xd5d2c9){console[_0xbb40('0xf3')](_0xbb40('0xf4'),_0xd5d2c9);}else{fs[_0xbb40('0xf5')](_0xedc742);}});});});}else{return _0x1168dd['sendStatus'](0xc8);}})[_0xbb40('0xb1')](handleError(_0x1168dd,null));};
\ No newline at end of file
+var _0x6deb=['../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','end','status','offset','count','limit','set','Content-Range','json','apply','then','destroy','error','stack','name','send','map','fullname','TagIds','Tags','forEach','push','catch','index','OpenchannelInteraction','type','key','model','query','intersection','attributes','length','nolimit','order','sort','where','filters','pick','field','color','from','tools_tags','select','u.id','u.fullname','user_has_openchannel_interactions','users','u.id\x20=\x20ui.UserId','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','value','having','`\x20=\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','body','keys','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','group','Sequelize','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.OpenchannelAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','fields','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','rows','show','params','rawAttributes','includeAll','include','options','create','describe','addMessage','ids','getMessages','findOne','hasOwnProperty','$gte','YYYY-MM-DD\x20HH:mm:ss','OpenchannelMessage','findAll','addTags','setTags','omit','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','files','server','attachments','format','CmContact','firstName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','Openchannel','closedAt','disposition','threadId','Public','Private','basename','existsSync','pipe','createWriteStream','out','System','lastName','renderFile','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x4a7e98,_0x250137){var _0x27d10d=function(_0x378768){while(--_0x378768){_0x4a7e98['push'](_0x4a7e98['shift']());}};_0x27d10d(++_0x250137);}(_0x6deb,0xd5));var _0xb6de=function(_0x59cc92,_0x359289){_0x59cc92=_0x59cc92-0x0;var _0x248d41=_0x6deb[_0x59cc92];return _0x248d41;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb6de('0x0'));var zipdir=require(_0xb6de('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb6de('0x2'));var moment=require('moment');var BPromise=require(_0xb6de('0x3'));var Mustache=require(_0xb6de('0x4'));var util=require(_0xb6de('0x5'));var path=require(_0xb6de('0x6'));var sox=require(_0xb6de('0x7'));var csv=require(_0xb6de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb6de('0x9'));var squel=require(_0xb6de('0xa'));var crypto=require('crypto');var jsforce=require(_0xb6de('0xb'));var deskjs=require(_0xb6de('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb6de('0xd'));var Papa=require(_0xb6de('0xe'));var Redis=require(_0xb6de('0xf'));var authService=require(_0xb6de('0x10'));var qs=require(_0xb6de('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xb6de('0x12'));var hardwareService=require(_0xb6de('0x13'));var logger=require(_0xb6de('0x14'))(_0xb6de('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb6de('0x16'));var db=require(_0xb6de('0x17'))['db'];config[_0xb6de('0x18')]=_[_0xb6de('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb6de('0x1a'))(new Redis(config[_0xb6de('0x18')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithStatusCode(_0xb825ae,_0x19c574){_0x19c574=_0x19c574||0xcc;return function(_0x494a83){if(_0x494a83){return _0xb825ae[_0xb6de('0x1b')](_0x19c574);}return _0xb825ae['status'](_0x19c574)[_0xb6de('0x1c')]();};}function respondWithResult(_0x22c343,_0x292a9f){_0x292a9f=_0x292a9f||0xc8;return function(_0x3711af){if(_0x3711af){return _0x22c343[_0xb6de('0x1d')](_0x292a9f)['json'](_0x3711af);}};}function respondWithFilteredResult(_0x4dda74,_0x36cee9){return function(_0x14260e){if(_0x14260e){var _0x4bbf61=typeof _0x36cee9[_0xb6de('0x1e')]==='undefined'&&typeof _0x36cee9['limit']==='undefined';var _0x540703=_0x14260e[_0xb6de('0x1f')];var _0x46f453=_0x4bbf61?0x0:_0x36cee9[_0xb6de('0x1e')];var _0x2cc9d4=_0x4bbf61?_0x14260e[_0xb6de('0x1f')]:_0x36cee9[_0xb6de('0x1e')]+_0x36cee9[_0xb6de('0x20')];var _0xe72516;if(_0x2cc9d4>=_0x540703){_0x2cc9d4=_0x540703;_0xe72516=0xc8;}else{_0xe72516=0xce;}_0x4dda74['status'](_0xe72516);return _0x4dda74[_0xb6de('0x21')](_0xb6de('0x22'),_0x46f453+'-'+_0x2cc9d4+'/'+_0x540703)[_0xb6de('0x23')](_0x14260e);}return null;};}function patchUpdates(_0x1a7099){return function(_0x5f33d7){try{jsonpatch[_0xb6de('0x24')](_0x5f33d7,_0x1a7099,!![]);}catch(_0x1c4b8c){return BPromise['reject'](_0x1c4b8c);}return _0x5f33d7['save']();};}function saveUpdates(_0x479c5c,_0x493953){return function(_0x7b160c){if(_0x7b160c){return _0x7b160c['update'](_0x479c5c)[_0xb6de('0x25')](function(_0x1b70a9){return _0x1b70a9;});}return null;};}function removeEntity(_0x2bd7d8,_0x4df44b){return function(_0x48bcdd){if(_0x48bcdd){return _0x48bcdd[_0xb6de('0x26')]()['then'](function(){_0x2bd7d8[_0xb6de('0x1d')](0xcc)[_0xb6de('0x1c')]();});}};}function handleEntityNotFound(_0x3b2311,_0x2789e2){return function(_0x25d72f){if(!_0x25d72f){_0x3b2311[_0xb6de('0x1b')](0x194);}return _0x25d72f;};}function handleError(_0xb78ef6,_0x149259){_0x149259=_0x149259||0x1f4;return function(_0x3cf4c3){logger[_0xb6de('0x27')](_0x3cf4c3[_0xb6de('0x28')]);if(_0x3cf4c3[_0xb6de('0x29')]){delete _0x3cf4c3[_0xb6de('0x29')];}_0xb78ef6['status'](_0x149259)[_0xb6de('0x2a')](_0x3cf4c3);};}function getInteractionUsers(_0x5aa936,_0x4fca58){return new BPromise(function(_0x52fa23,_0x58f290){try{if(_0x4fca58[_0x5aa936['id']]){_0x5aa936['Users']=_[_0xb6de('0x2b')](_0x4fca58[_0x5aa936['id']],function(_0x672b41){return{'id':_0x672b41['id'],'fullname':_0x672b41[_0xb6de('0x2c')]};});}}catch(_0x5264d5){_0x58f290(_0x5264d5);}_0x52fa23(_0x5aa936);});}function getInteractionTags(_0x6f8517,_0x2dede4){return new BPromise(function(_0x4b6f0a,_0x36be93){try{if(_0x6f8517[_0xb6de('0x2d')]){_0x6f8517[_0xb6de('0x2e')]=[];_0x6f8517[_0xb6de('0x2d')]['split'](',')[_0xb6de('0x2f')](function(_0xf53061){_0x6f8517[_0xb6de('0x2e')][_0xb6de('0x30')](_0x2dede4[_0xf53061]);});}delete _0x6f8517[_0xb6de('0x2d')];}catch(_0x23d1bc){_0x36be93(_0x23d1bc);}_0x4b6f0a(_0x6f8517);});}function updateOpenchannelInteraction(_0x39677b,_0x310bc5,_0x548999){return new BPromise(function(_0x27d509,_0x1efaf5){return getInteractionUsers(_0x39677b,_0x548999)[_0xb6de('0x25')](function(_0x493c05){return getInteractionTags(_0x493c05,_0x310bc5);})[_0xb6de('0x25')](function(_0x4b1f69){_0x27d509(_0x4b1f69);})[_0xb6de('0x31')](function(_0x484377){_0x1efaf5(_0x484377);});});}exports[_0xb6de('0x32')]=function(_0x1c5ec5,_0x4df6b7){var _0x3ffcc7={},_0x1f440d={},_0x2e3538={'count':0x0,'rows':[]};var _0x5b46ca=_[_0xb6de('0x2b')](db[_0xb6de('0x33')]['rawAttributes'],function(_0x2ab0d5){return{'name':_0x2ab0d5['fieldName'],'type':_0x2ab0d5[_0xb6de('0x34')][_0xb6de('0x35')]};});_0x1f440d[_0xb6de('0x36')]=_['map'](_0x5b46ca,'name');_0x1f440d[_0xb6de('0x37')]=_['keys'](_0x1c5ec5[_0xb6de('0x37')]);_0x1f440d['filters']=_[_0xb6de('0x38')](_0x1f440d[_0xb6de('0x36')],_0x1f440d[_0xb6de('0x37')]);_0x3ffcc7[_0xb6de('0x39')]=_[_0xb6de('0x38')](_0x1f440d['model'],qs['fields'](_0x1c5ec5[_0xb6de('0x37')]['fields']));_0x3ffcc7[_0xb6de('0x39')]=_0x3ffcc7[_0xb6de('0x39')][_0xb6de('0x3a')]?_0x3ffcc7[_0xb6de('0x39')]:_0x1f440d['model'];if(!_0x1c5ec5[_0xb6de('0x37')]['hasOwnProperty'](_0xb6de('0x3b'))){_0x3ffcc7[_0xb6de('0x20')]=qs[_0xb6de('0x20')](_0x1c5ec5['query'][_0xb6de('0x20')]);_0x3ffcc7[_0xb6de('0x1e')]=qs[_0xb6de('0x1e')](_0x1c5ec5['query'][_0xb6de('0x1e')]);}_0x3ffcc7[_0xb6de('0x3c')]=qs[_0xb6de('0x3d')](_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x3d')]);_0x3ffcc7[_0xb6de('0x3e')]=qs[_0xb6de('0x3f')](_[_0xb6de('0x40')](_0x1c5ec5[_0xb6de('0x37')],_0x1f440d[_0xb6de('0x3f')]),_0x5b46ca);var _0x28dc77=[];var _0x4d1399=squel['select']()['field']('id')[_0xb6de('0x41')](_0xb6de('0x29'))[_0xb6de('0x41')](_0xb6de('0x42'))[_0xb6de('0x43')](_0xb6de('0x44'));var _0x52ef49=squel[_0xb6de('0x45')]()[_0xb6de('0x41')](_0xb6de('0x46'))['field'](_0xb6de('0x47'))['field']('ui.OpenchannelInteractionId')[_0xb6de('0x43')](_0xb6de('0x48'),'ui')['left_join'](_0xb6de('0x49'),'u',_0xb6de('0x4a'));var _0x384aec=squel[_0xb6de('0x45')]()[_0xb6de('0x43')]('openchannel_interactions','i')[_0xb6de('0x4b')](_0xb6de('0x4c'),'c',_0xb6de('0x4d'))[_0xb6de('0x4b')](_0xb6de('0x49'),'o','o.id\x20=\x20i.UserId')[_0xb6de('0x4b')]('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0xb6de('0x4b')](_0xb6de('0x4e'),'me',_0xb6de('0x4f'))['left_join'](_0xb6de('0x50'),'it',_0xb6de('0x51'))[_0xb6de('0x4b')](_0xb6de('0x44'),'t',_0xb6de('0x52'));var _0xe8006=squel[_0xb6de('0x53')]();var _0x303731=[];var _0x15dd9e=squel['expr']();var _0x205f7d;if(_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x54')]){_0x205f7d=as[_0xb6de('0x55')](_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x54')]);var _0x1bd4be=_0x205f7d[_0xb6de('0x56')];for(var _0x1b7b9c=0x0;_0x1b7b9c<_0x205f7d[_0xb6de('0x57')][_0xb6de('0x3a')];_0x1b7b9c++){var _0x2376ac=_0x205f7d[_0xb6de('0x57')][_0x1b7b9c];var _0x509eeb='i';var _0x56fad8=_['find'](_0x5b46ca,['name',_0x2376ac['field']]);if(!_0x56fad8){switch(_0x2376ac[_0xb6de('0x41')]){case'unreadMessages':if(_0x2376ac[_0xb6de('0x58')]==0x1){_0x384aec[_0xb6de('0x59')]('`'+_0x2376ac[_0xb6de('0x41')]+_0xb6de('0x5a'));}else{_0x384aec['having']('`'+_0x2376ac[_0xb6de('0x41')]+'`\x20>\x200');}break;case _0xb6de('0x5b'):if(_0x2376ac[_0xb6de('0x5c')]===_0xb6de('0x5d')){if(_0x2376ac['value'][_0xb6de('0x5e')]('\x20')[_0xb6de('0x3a')]>0x1){_0xe8006[_0x1bd4be](_0xb6de('0x5f'),qs[_0xb6de('0x60')](_0x2376ac[_0xb6de('0x58')]),null);}else{var _0xe9045f='%'+_0x2376ac[_0xb6de('0x58')]+'%';_0xe8006[_0x1bd4be]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xe9045f,_0xe9045f,_0xe9045f);}}else{_0x56fad8=_['find'](_0x5b46ca,[_0xb6de('0x29'),_0xb6de('0x61')]);_0x2376ac['field']=_0xb6de('0x61');_0xb7de88=as[_0xb6de('0x62')](_0x509eeb,_0x56fad8['type'],_0x2376ac);_0xe8006[_0x1bd4be](_0xb7de88[_0xb6de('0x63')],_0xb7de88[_0xb6de('0x58')][_0xb6de('0x64')],_0xb7de88[_0xb6de('0x58')][_0xb6de('0x1c')]);}break;case'Tag':var _0x2859ee=_0x2376ac[_0xb6de('0x58')][_0xb6de('0x5e')](',')[_0xb6de('0x2b')](function(_0x261271){return Number(_0x261271);});_0x2859ee['forEach'](function(_0x47a465){_0x15dd9e['or'](_0xb6de('0x65'),'%,'+_0x47a465+',%');});_0x303731=_[_0xb6de('0x66')](_0x303731,_0x2859ee);break;case _0xb6de('0x67'):if(_0x2376ac['operator']===_0xb6de('0x5d')){_0xe8006[_0x1bd4be](_0xb6de('0x68'),'%'+_0x2376ac['value']+'%',null);}else{_0x56fad8=_[_0xb6de('0x69')](_0x5b46ca,[_0xb6de('0x29'),_0xb6de('0x6a')]);_0x2376ac[_0xb6de('0x41')]=_0xb6de('0x6a');_0xb7de88=as['buildExpression'](_0x509eeb,_0x56fad8[_0xb6de('0x34')],_0x2376ac);_0xe8006[_0x1bd4be](_0xb7de88[_0xb6de('0x63')],_0xb7de88['value'][_0xb6de('0x64')],_0xb7de88[_0xb6de('0x58')][_0xb6de('0x1c')]);}break;case _0xb6de('0x6b'):_0xb7de88=as[_0xb6de('0x62')]('me',null,_0x2376ac);_0xe8006[_0x1bd4be](_0xb7de88[_0xb6de('0x63')],_0xb7de88[_0xb6de('0x58')][_0xb6de('0x64')],_0xb7de88[_0xb6de('0x58')][_0xb6de('0x1c')]);break;}}else{var _0xb7de88=as['buildExpression'](_0x509eeb,_0x56fad8['type'],_0x2376ac);_0xe8006[_0x1bd4be](_0xb7de88[_0xb6de('0x63')],_0xb7de88[_0xb6de('0x58')]['start'],_0xb7de88['value']['end']);}}}else{var _0x335bb3=_(_0x1c5ec5[_0xb6de('0x37')])[_0xb6de('0x6c')]()[_0xb6de('0x2b')](function(_0x2a1ff7){return _[_0xb6de('0x6d')](_0x5b46ca,[_0xb6de('0x29'),_0x2a1ff7])?_0x2a1ff7:undefined;})[_0xb6de('0x6e')]()[_0xb6de('0x58')]();if(!_[_0xb6de('0x6f')](_0x335bb3)){_0x335bb3[_0xb6de('0x2f')](function(_0x93da56){if(_0x93da56===_0xb6de('0x70')){_0x384aec[_0xb6de('0x3e')](_0xb6de('0x71'),[]['concat'](_0x1c5ec5[_0xb6de('0x37')][_0x93da56]));}else if(_0x93da56===_0xb6de('0x72')){var _0x4aa3f4=JSON[_0xb6de('0x73')](_0x1c5ec5[_0xb6de('0x37')][_0x93da56])['$gte'];var _0xf9307d=JSON[_0xb6de('0x73')](_0x1c5ec5['query'][_0x93da56])[_0xb6de('0x74')];_0x384aec[_0xb6de('0x3e')](_0xb6de('0x75'),_0x4aa3f4,_0xf9307d);}else{if(_0x1c5ec5[_0xb6de('0x37')][_0x93da56]===_0xb6de('0x76')){_0x384aec['where']('i.'+_0x93da56+_0xb6de('0x77'));}else{_0x384aec['where']('i.'+_0x93da56+_0xb6de('0x78'),_0x1c5ec5[_0xb6de('0x37')][_0x93da56]);}}});}if(_0x1c5ec5['query']['read']){if(_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x79')]==0x1){_0x384aec[_0xb6de('0x59')]('`unreadMessages`\x20=\x200');}else{_0x384aec[_0xb6de('0x59')]('`unreadMessages`\x20>\x200');}}if(_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x7a')]){_0x303731=_[_0xb6de('0x7b')](_0x1c5ec5['query'][_0xb6de('0x7a')])?_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x7a')]:new Array(_0x1c5ec5[_0xb6de('0x37')]['tag']);_0x303731['forEach'](function(_0x28d5b6){_0x15dd9e['or'](_0xb6de('0x65'),'%,'+_0x28d5b6+',%');});}if(_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x7c')]){var _0x40208e=_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x7c')][_0xb6de('0x7d')]('\x5c','\x5c\x5c')[_0xb6de('0x7d')](/'/g,'\x27\x27');if(qs[_0xb6de('0x7e')](_0x40208e)){_0xe8006['or'](_0xb6de('0x7f'),_0x40208e+'%');}else{_0xe8006['or'](_0xb6de('0x80'),qs['getFullTextValue'](_0x40208e))['or'](_0xb6de('0x81'),_0x40208e+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x40208e+'%');}}}_0x384aec[_0xb6de('0x3e')](_0xe8006);_0x384aec[_0xb6de('0x82')]('i.id');var _0x3af0ca={'type':db[_0xb6de('0x83')][_0xb6de('0x84')]['SELECT'],'raw':!![]};var _0x5c0d16=_0x384aec['clone']();_0x5c0d16[_0xb6de('0x41')]('i.id');_0x5c0d16['field'](_0xb6de('0x85'),_0xb6de('0x86'));if(_0x3ffcc7['order']){_0x3ffcc7[_0xb6de('0x3c')]['forEach'](function(_0x5375ec){var _0x4925fc=_0x5375ec[0x0]===_0xb6de('0x87')?_0x5375ec[0x0]:'i.'+_0x5375ec[0x0];_0x384aec[_0xb6de('0x3c')](_0x4925fc,_0x5375ec[0x1]===_0xb6de('0x88')?![]:!![]);});}if(!_[_0xb6de('0x6f')](_0x303731)){_0x384aec[_0xb6de('0x59')](_0x15dd9e);_0x5c0d16[_0xb6de('0x3e')](_0xb6de('0x89'),_0x303731);}BPromise['resolve']()['then'](function(){if(!_0x205f7d){if(_0x1c5ec5['query'][_0xb6de('0x70')])return;_0x5c0d16[_0xb6de('0x3e')](_0xb6de('0x8a'));_0x384aec[_0xb6de('0x3e')](_0xb6de('0x8a'));return;}if(_0x1c5ec5[_0xb6de('0x8b')][_0xb6de('0x8c')]!==_0xb6de('0x8d'))return;return _0x1c5ec5[_0xb6de('0x8b')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x15dbaf){if(_[_0xb6de('0x6f')](_0x15dbaf)){_0x5c0d16['where'](_0xb6de('0x8e'));_0x384aec[_0xb6de('0x3e')](_0xb6de('0x8e'));}else{_0x5c0d16['where'](_0xb6de('0x71'),_[_0xb6de('0x2b')](_0x15dbaf,'id'));_0x384aec['where']('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x15dbaf,'id'));}});})[_0xb6de('0x25')](function(){if(_0x1c5ec5[_0xb6de('0x8b')][_0xb6de('0x8c')]==='agent'&&!_0x205f7d&&!_0x1c5ec5['query'][_0xb6de('0x70')])return[];return db['sequelize'][_0xb6de('0x37')](_0x5c0d16[_0xb6de('0x8f')](),_0x3af0ca);})['then'](function(_0x160a34){_0x2e3538[_0xb6de('0x1f')]=_0x160a34['length'];if(_0x2e3538['count']===0x0)return[];return db[_0xb6de('0x90')][_0xb6de('0x37')](_0x4d1399['toString'](),_0x3af0ca)[_0xb6de('0x25')](function(_0x5bcff8){_0x28dc77=_[_0xb6de('0x91')](_0x5bcff8,'id');_0x3af0ca=_[_0xb6de('0x92')](_0x3af0ca,{'model':db[_0xb6de('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1c5ec5[_0xb6de('0x37')][_0xb6de('0x93')]){_0x3ffcc7[_0xb6de('0x39')][_0xb6de('0x2f')](function(_0x3f6a58){_0x384aec[_0xb6de('0x41')]('i.'+_0x3f6a58);});}else{_0x384aec[_0xb6de('0x41')](_0xb6de('0x85'),_0xb6de('0x86'));_0x384aec[_0xb6de('0x41')](_0xb6de('0x94'),_0xb6de('0x95'));_0x384aec['field'](_0xb6de('0x96'),_0xb6de('0x97'));_0x384aec[_0xb6de('0x41')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xb6de('0x87'));_0x384aec[_0xb6de('0x41')](_0xb6de('0x98'));_0x384aec[_0xb6de('0x41')](_0xb6de('0x99'),'Contact.firstName');_0x384aec[_0xb6de('0x41')](_0xb6de('0x9a'),'Contact.lastName');_0x384aec[_0xb6de('0x41')]('c.email','Contact.email');_0x384aec[_0xb6de('0x41')]('c.phone',_0xb6de('0x9b'));_0x384aec['field'](_0xb6de('0x9c'),_0xb6de('0x9d'));_0x384aec['field'](_0xb6de('0x9e'),'Contact.fax');_0x384aec[_0xb6de('0x41')](_0xb6de('0x9f'),_0xb6de('0xa0'));_0x384aec[_0xb6de('0x41')](_0xb6de('0xa1'),_0xb6de('0xa2'));_0x384aec[_0xb6de('0x41')](_0xb6de('0xa3'),_0xb6de('0x2d'));}if(_0x3ffcc7['limit'])_0x384aec[_0xb6de('0x20')](_0x3ffcc7[_0xb6de('0x20')]);if(_0x3ffcc7[_0xb6de('0x1e')])_0x384aec[_0xb6de('0x1e')](_0x3ffcc7[_0xb6de('0x1e')]);return db[_0xb6de('0x90')][_0xb6de('0x37')](_0x384aec[_0xb6de('0x8f')](),_0x3af0ca);})['then'](function(_0x5368b5){if(_0x5368b5['length']>0x0)_0x52ef49[_0xb6de('0x3e')](_0xb6de('0xa4'),_[_0xb6de('0x2b')](_0x5368b5,'id'));return db[_0xb6de('0x90')][_0xb6de('0x37')](_0x52ef49[_0xb6de('0x8f')](),_0x3af0ca)[_0xb6de('0x25')](function(_0x113f24){var _0x3e28de=_['groupBy'](_0x113f24,_0xb6de('0xa5'));var _0x38f8c5=[];_0x5368b5[_0xb6de('0x2f')](function(_0xb44db3){_0x38f8c5['push'](updateOpenchannelInteraction(_0xb44db3,_0x28dc77,_0x3e28de));});return BPromise['all'](_0x38f8c5);});});})['then'](function(_0x2cb558){_0x2e3538[_0xb6de('0xa6')]=_0x2cb558;return _0x2e3538;})[_0xb6de('0x25')](respondWithFilteredResult(_0x4df6b7,_0x3ffcc7))[_0xb6de('0x31')](handleError(_0x4df6b7,null));};exports[_0xb6de('0xa7')]=function(_0x219d21,_0x89f00f){var _0x4b276b={};if(_0x219d21[_0xb6de('0x37')][_0xb6de('0x34')]&&_0x219d21[_0xb6de('0x37')][_0xb6de('0x34')]===_0xb6de('0x43')){_0x4b276b[_0xb6de('0x43')]=_0x219d21[_0xb6de('0xa8')]['id'];}else{_0x4b276b['id']=_0x219d21[_0xb6de('0xa8')]['id'];}var _0x395bc9={'raw':![],'where':_0x4b276b},_0x4be435={};_0x4be435[_0xb6de('0x36')]=_['keys'](db[_0xb6de('0x33')][_0xb6de('0xa9')]);_0x4be435[_0xb6de('0x37')]=_[_0xb6de('0x6c')](_0x219d21[_0xb6de('0x37')]);_0x4be435[_0xb6de('0x3f')]=_[_0xb6de('0x38')](_0x4be435['model'],_0x4be435['query']);_0x395bc9['attributes']=_[_0xb6de('0x38')](_0x4be435['model'],qs['fields'](_0x219d21[_0xb6de('0x37')][_0xb6de('0x93')]));_0x395bc9[_0xb6de('0x39')]=_0x395bc9[_0xb6de('0x39')][_0xb6de('0x3a')]?_0x395bc9['attributes']:_0x4be435[_0xb6de('0x36')];if(_0x219d21[_0xb6de('0x37')][_0xb6de('0xaa')]){_0x395bc9[_0xb6de('0xab')]=[{'all':!![]}];}_0x395bc9=_[_0xb6de('0x92')]({},_0x395bc9,_0x219d21[_0xb6de('0xac')]);return db[_0xb6de('0x33')][_0xb6de('0x69')](_0x395bc9)[_0xb6de('0x25')](handleEntityNotFound(_0x89f00f,null))[_0xb6de('0x25')](respondWithResult(_0x89f00f,null))[_0xb6de('0x31')](handleError(_0x89f00f,null));};exports[_0xb6de('0xad')]=function(_0x52aa7b,_0x3d28b0){return db[_0xb6de('0x33')]['create'](_0x52aa7b[_0xb6de('0x6b')],{})[_0xb6de('0x25')](respondWithResult(_0x3d28b0,0xc9))[_0xb6de('0x31')](handleError(_0x3d28b0,null));};exports['update']=function(_0x2449f0,_0x5ef2c8){if(_0x2449f0[_0xb6de('0x6b')]['id']){delete _0x2449f0[_0xb6de('0x6b')]['id'];}return db[_0xb6de('0x33')][_0xb6de('0x69')]({'where':{'id':_0x2449f0[_0xb6de('0xa8')]['id']}})[_0xb6de('0x25')](handleEntityNotFound(_0x5ef2c8,null))[_0xb6de('0x25')](saveUpdates(_0x2449f0[_0xb6de('0x6b')],null))[_0xb6de('0x25')](respondWithResult(_0x5ef2c8,null))['catch'](handleError(_0x5ef2c8,null));};exports['destroy']=function(_0x559b81,_0xa4a352){return db['OpenchannelInteraction'][_0xb6de('0x69')]({'where':{'id':_0x559b81[_0xb6de('0xa8')]['id']}})['then'](handleEntityNotFound(_0xa4a352,null))[_0xb6de('0x25')](removeEntity(_0xa4a352,null))[_0xb6de('0x31')](handleError(_0xa4a352,null));};exports['describe']=function(_0x56b50b,_0x582276){return db[_0xb6de('0x33')][_0xb6de('0xae')]()[_0xb6de('0x25')](respondWithResult(_0x582276,null))[_0xb6de('0x31')](handleError(_0x582276,null));};exports['addMessage']=function(_0x448dd0,_0x508038,_0x13975e){return db['OpenchannelMessage'][_0xb6de('0x69')]({'where':{'id':_0x448dd0[_0xb6de('0xa8')]['id']}})['then'](handleEntityNotFound(_0x508038,null))[_0xb6de('0x25')](function(_0x56c7d){if(_0x56c7d){return _0x56c7d[_0xb6de('0xaf')](_0x448dd0[_0xb6de('0x6b')]['ids'],_['omit'](_0x448dd0[_0xb6de('0x6b')],[_0xb6de('0xb0'),'id'])||{});}})[_0xb6de('0x25')](respondWithResult(_0x508038,null))['catch'](handleError(_0x508038,null));};exports[_0xb6de('0xb1')]=function(_0xdc73fd,_0x22f61e,_0x3782a0){var _0x4047ab={'raw':![],'where':{}};var _0x29f163={};var _0x111b0f={'count':0x0,'rows':[]};return db[_0xb6de('0x33')][_0xb6de('0xb2')]({'where':{'id':_0xdc73fd[_0xb6de('0xa8')]['id']}})[_0xb6de('0x25')](handleEntityNotFound(_0x22f61e,null))[_0xb6de('0x25')](function(_0x22ff5b){if(_0x22ff5b){_0x29f163[_0xb6de('0x36')]=_['keys'](db['OpenchannelMessage'][_0xb6de('0xa9')]);_0x29f163['query']=_['keys'](_0xdc73fd['query']);_0x29f163[_0xb6de('0x3f')]=_[_0xb6de('0x38')](_0x29f163[_0xb6de('0x36')],_0x29f163[_0xb6de('0x37')]);_0x4047ab[_0xb6de('0x39')]=_['intersection'](_0x29f163[_0xb6de('0x36')],qs[_0xb6de('0x93')](_0xdc73fd[_0xb6de('0x37')][_0xb6de('0x93')]));_0x4047ab[_0xb6de('0x39')]=_0x4047ab['attributes'][_0xb6de('0x3a')]?_0x4047ab['attributes']:_0x29f163[_0xb6de('0x36')];if(!_0xdc73fd[_0xb6de('0x37')][_0xb6de('0xb3')]('nolimit')){_0x4047ab['limit']=qs['limit'](_0xdc73fd[_0xb6de('0x37')][_0xb6de('0x20')]);_0x4047ab[_0xb6de('0x1e')]=qs['offset'](_0xdc73fd[_0xb6de('0x37')]['offset']);}_0x4047ab[_0xb6de('0x3c')]=qs['sort'](_0xdc73fd['query'][_0xb6de('0x3d')]);_0x4047ab[_0xb6de('0x3e')]=qs[_0xb6de('0x3f')](_[_0xb6de('0x40')](_0xdc73fd[_0xb6de('0x37')],_0x29f163[_0xb6de('0x3f')]));_0x4047ab['where'][_0xb6de('0xa5')]=_0x22ff5b['id'];if(_0xdc73fd[_0xb6de('0x37')][_0xb6de('0x7c')]){_0x4047ab[_0xb6de('0x3e')]=_[_0xb6de('0x92')](_0x4047ab[_0xb6de('0x3e')],{'$or':_[_0xb6de('0x2b')](_0x4047ab[_0xb6de('0x39')],function(_0x1338c7){var _0x294d74={};_0x294d74[_0x1338c7]={'$like':'%'+_0xdc73fd[_0xb6de('0x37')][_0xb6de('0x7c')]+'%'};return _0x294d74;})});}if(_0xdc73fd['query'][_0xb6de('0xb4')]){var _0x28c37b=_0xdc73fd[_0xb6de('0x37')][_0xb6de('0xb4')][_0xb6de('0x5e')](',');var _0x5bea19={};_0x5bea19[_0x28c37b[0x0]]={'$gte':moment(_0x28c37b[0x1])['format'](_0xb6de('0xb5'))};_0x4047ab[_0xb6de('0x3e')]=_[_0xb6de('0x92')](_0x4047ab[_0xb6de('0x3e')],_0x5bea19);}_0x4047ab=_[_0xb6de('0x92')]({},_0x4047ab,_0xdc73fd[_0xb6de('0xac')]);return db['OpenchannelMessage']['count']({'where':_0x4047ab['where']})[_0xb6de('0x25')](function(_0x21c1b1){_0x111b0f[_0xb6de('0x1f')]=_0x21c1b1;if(_0xdc73fd['query'][_0xb6de('0xaa')]){_0x4047ab['include']=[{'all':!![]}];}return db[_0xb6de('0xb6')][_0xb6de('0xb7')](_0x4047ab);})['then'](function(_0x2f78a9){_0x111b0f['rows']=_0x2f78a9;return _0x111b0f;});}})[_0xb6de('0x25')](respondWithFilteredResult(_0x22f61e,_0x4047ab))[_0xb6de('0x31')](handleError(_0x22f61e,null));};exports[_0xb6de('0xb8')]=function(_0x3c1871,_0x1b46e5,_0x19a2cc){return db[_0xb6de('0x33')][_0xb6de('0x69')]({'where':{'id':_0x3c1871[_0xb6de('0xa8')]['id']}})[_0xb6de('0x25')](handleEntityNotFound(_0x1b46e5,null))['then'](function(_0x4b0266){if(_0x4b0266){return _0x4b0266[_0xb6de('0xb9')](_0x3c1871[_0xb6de('0x6b')][_0xb6de('0xb0')],_[_0xb6de('0xba')](_0x3c1871[_0xb6de('0x6b')],[_0xb6de('0xb0'),'id'])||{})[_0xb6de('0xbb')](function(){return db[_0xb6de('0xbc')][_0xb6de('0xb7')]({'attributes':['id',_0xb6de('0x29'),'color'],'where':{'id':_0x3c1871[_0xb6de('0x6b')][_0xb6de('0xb0')]}});})[_0xb6de('0x25')](function(_0x238e5c){socket[_0xb6de('0xbd')](_0xb6de('0xbe'),{'id':Number(_0x3c1871[_0xb6de('0xa8')]['id']),'tags':_0x238e5c||[]});return{'id':Number(_0x3c1871[_0xb6de('0xa8')]['id']),'tags':_0x238e5c||[]};});}})[_0xb6de('0x25')](respondWithResult(_0x1b46e5,null))[_0xb6de('0x31')](handleError(_0x1b46e5,null));};exports['removeTags']=function(_0x51bfd0,_0x16a48c,_0x478650){return db[_0xb6de('0x33')][_0xb6de('0x69')]({'where':{'id':_0x51bfd0[_0xb6de('0xa8')]['id']}})[_0xb6de('0x25')](handleEntityNotFound(_0x16a48c,null))[_0xb6de('0x25')](function(_0x2b0e8a){if(_0x2b0e8a){return _0x2b0e8a[_0xb6de('0xbf')](_0x51bfd0['query']['ids']);}})[_0xb6de('0x25')](respondWithStatusCode(_0x16a48c,null))['catch'](handleError(_0x16a48c,null));};exports[_0xb6de('0xc0')]=function(_0x558488,_0x13ce26){var _0x3205c3=moment()[_0xb6de('0xc1')]()[_0xb6de('0x8f')]();var _0x283aa6=path[_0xb6de('0xc2')](config[_0xb6de('0xc3')],'server',_0xb6de('0xc4'),'tmp');var _0x33a74a=path[_0xb6de('0xc2')](config[_0xb6de('0xc3')],_0xb6de('0xc5'),_0xb6de('0xc4'),_0xb6de('0xc6'));var _0x334322=path[_0xb6de('0xc2')](_0x283aa6,_0x3205c3);var _0xdddf1c=util[_0xb6de('0xc7')]('transcript-%d-%s.zip',_0x558488[_0xb6de('0xa8')]['id'],_0x3205c3);var _0x46c60c=path[_0xb6de('0xc2')](_0x283aa6,_0xdddf1c);var _0x1abd59=[];_0x1abd59[_0xb6de('0x30')]({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x1abd59[_0xb6de('0x30')]({'model':db[_0xb6de('0xc8')],'as':_0xb6de('0x5b'),'attributes':['id',_0xb6de('0xc9'),'lastName'],'raw':!![]});if(_0x558488['query'][_0xb6de('0xc6')]){_0x1abd59['push']({'model':db[_0xb6de('0xca')],'as':_0xb6de('0xca'),'raw':!![]});}var _0x2d7def=[{'model':db[_0xb6de('0xb6')],'as':_0xb6de('0xcb'),'attributes':['id','body',_0xb6de('0x72'),_0xb6de('0xcc'),_0xb6de('0xcd'),_0xb6de('0x79')],'include':_0x1abd59}];_0x2d7def[_0xb6de('0x30')]({'model':db[_0xb6de('0xce')],'as':_0xb6de('0xcf'),'attributes':['id',_0xb6de('0x29')]});_0x2d7def[_0xb6de('0x30')]({'model':db[_0xb6de('0x67')],'as':_0xb6de('0xd0'),'attributes':['id','fullname']});return db[_0xb6de('0x33')][_0xb6de('0x69')]({'where':{'id':_0x558488[_0xb6de('0xa8')]['id']},'include':_0x2d7def})[_0xb6de('0x25')](handleEntityNotFound(_0x13ce26,null))[_0xb6de('0x25')](function(_0x15cb4f){if(_0x15cb4f){var _0x24a98b=_0x15cb4f[_0xb6de('0xd1')]({'plain':!![]});fs['mkdirSync'](_0x334322);var _0x433d09={'channel':_0xb6de('0xd2'),'account':_0x24a98b[_0xb6de('0xcf')][_0xb6de('0x29')],'agent':_0x24a98b[_0xb6de('0xd0')]?_0x24a98b[_0xb6de('0xd0')]['fullname']:'N.A.','createdAt':moment(_0x24a98b[_0xb6de('0x72')])['format'](_0xb6de('0xb5'))[_0xb6de('0x8f')](),'closedAt':_0x24a98b['closed']?moment(_0x24a98b[_0xb6de('0xd3')])[_0xb6de('0xc7')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x24a98b[_0xb6de('0xd4')],'visibility':_0x24a98b[_0xb6de('0xd5')]?_0xb6de('0xd6'):_0xb6de('0xd7'),'messages':_(_0x24a98b[_0xb6de('0xcb')])[_0xb6de('0x7c')]({'secret':![]})[_0xb6de('0x2b')](function(_0xeb9ece){if(_0xeb9ece[_0xb6de('0xca')]){var _0x5aa823=path[_0xb6de('0xc2')](_0x33a74a,_0xeb9ece[_0xb6de('0xca')][_0xb6de('0xd8')]);if(fs[_0xb6de('0xd9')](_0x5aa823)){fs['createReadStream'](_0x5aa823)[_0xb6de('0xda')](fs[_0xb6de('0xdb')](path['join'](_0x334322,_0xeb9ece[_0xb6de('0xca')][_0xb6de('0xd8')])));}}return{'date':moment(_0xeb9ece['createdAt'])['format'](_0xb6de('0xb5'))[_0xb6de('0x8f')](),'sender':_0xeb9ece[_0xb6de('0xcc')]===_0xb6de('0xdc')?_0xeb9ece['User']?_0xeb9ece['User'][_0xb6de('0x2c')]:_0xb6de('0xdd'):_0xeb9ece[_0xb6de('0x5b')]['firstName']+(_0xeb9ece[_0xb6de('0x5b')][_0xb6de('0xde')]?'\x20'+_0xeb9ece[_0xb6de('0x5b')]['lastName']:''),'body':_0xeb9ece['Attachment']?_0xeb9ece[_0xb6de('0xca')]['basename']:_0xeb9ece[_0xb6de('0x6b')],'direction':_0xeb9ece[_0xb6de('0xcc')]==='out'?'A':'C','secret':_0xeb9ece['secret'],'read':_0xeb9ece[_0xb6de('0x79')],'attachment':_0xeb9ece['Attachment']};})[_0xb6de('0x58')]()};return ejs[_0xb6de('0xdf')](path['join'](config[_0xb6de('0xc3')],'server','views',_0xb6de('0xe0')),{'interaction':_0x433d09})[_0xb6de('0x25')](function(_0x5580b4){var _0x2fffaa=path[_0xb6de('0xc2')](_0x334322,'transcript-'+_0x24a98b['id']+'-'+_0x3205c3+_0xb6de('0xe1'));var _0x543719={'path':_0x2fffaa,'channel':_0xb6de('0xd2'),'interactionId':_0x24a98b['id']};return pdf[_0xb6de('0xe2')](_0x5580b4,_0x543719);})['then'](function(){return new BPromise(function(_0x243366,_0x171d8d){zipdir(_0x334322,{'saveTo':_0x46c60c},function(_0x309542,_0xe76dce){if(_0x309542)return _0x171d8d(_0x309542);return _0x243366(_0xe76dce);});})[_0xb6de('0x25')](function(){return new BPromise(function(_0x1d609f,_0x512bc6){rimraf(_0x334322,function(_0x52a47a){if(_0x52a47a)_0x512bc6(_0x52a47a);return _0x1d609f();});});})[_0xb6de('0x25')](function(){return _0x13ce26[_0xb6de('0xc0')](_0x46c60c,_0xdddf1c,function(_0x89ec95){if(_0x89ec95){console[_0xb6de('0xe3')](_0xb6de('0xe4'),_0x89ec95);}else{fs['unlinkSync'](_0x46c60c);}});});});}else{return _0x13ce26['sendStatus'](0xc8);}})[_0xb6de('0x31')](handleError(_0x13ce26,null));};
\ No newline at end of file
index e7c97fb..08d3f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45bd=['update','setDataValue','Users','map','then','unreadMessages','emit','hasOwnProperty','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners'];(function(_0x3830e6,_0x46c265){var _0x4ab09f=function(_0x16da51){while(--_0x16da51){_0x3830e6['push'](_0x3830e6['shift']());}};_0x4ab09f(++_0x46c265);}(_0x45bd,0x1b5));var _0xd45b=function(_0x17ffff,_0x2f39a3){_0x17ffff=_0x17ffff-0x0;var _0x242227=_0x45bd[_0x17ffff];return _0x242227;};'use strict';var EventEmitter=require(_0xd45b('0x0'));var OpenchannelInteraction=require(_0xd45b('0x1'))['db'][_0xd45b('0x2')];var OpenchannelMessage=require(_0xd45b('0x1'))['db'][_0xd45b('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xd45b('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd45b('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5c14a9){return function(_0x196dd5,_0x5c5bf5,_0x5f5905){_0x196dd5['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x87347b){_0x196dd5[_0xd45b('0x6')](_0xd45b('0x7'),_0x87347b[_0xd45b('0x8')](function(_0x47ac6c){return{'id':_0x47ac6c['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x196dd5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd45b('0x9')](function(_0x5c90bd){_0x196dd5[_0xd45b('0x6')](_0xd45b('0xa'),_0x5c90bd['length']);OpenchannelInteractionEvents[_0xd45b('0xb')](_0x5c14a9+':'+_0x196dd5['id'],_0x196dd5);OpenchannelInteractionEvents['emit'](_0x5c14a9,_0x196dd5);_0x5f5905(null);})['catch'](_0x5f5905(null));};}for(var e in events){if(events[_0xd45b('0xc')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x9423=['remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','OpenchannelInteraction','setMaxListeners','save'];(function(_0x257c94,_0x420774){var _0xba12d6=function(_0x4f3648){while(--_0x4f3648){_0x257c94['push'](_0x257c94['shift']());}};_0xba12d6(++_0x420774);}(_0x9423,0x174));var _0x3942=function(_0x572823,_0x279f72){_0x572823=_0x572823-0x0;var _0x4e45d7=_0x9423[_0x572823];return _0x4e45d7;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db'][_0x3942('0x0')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x3942('0x1')](0x0);var events={'afterCreate':_0x3942('0x2'),'afterUpdate':'update','afterDestroy':_0x3942('0x3')};function emitEvent(_0x370ecb){return function(_0x170521,_0xaf5000,_0x4cd62d){_0x170521[_0x3942('0x4')]({'attributes':['id'],'raw':!![]})[_0x3942('0x5')](function(_0x4d9ac6){_0x170521[_0x3942('0x6')](_0x3942('0x7'),_0x4d9ac6['map'](function(_0x1e9364){return{'id':_0x1e9364['id']};}));return OpenchannelMessage[_0x3942('0x8')]({'where':{'OpenchannelInteractionId':_0x170521['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3942('0x5')](function(_0x528fe0){_0x170521[_0x3942('0x6')](_0x3942('0x9'),_0x528fe0[_0x3942('0xa')]);OpenchannelInteractionEvents[_0x3942('0xb')](_0x370ecb+':'+_0x170521['id'],_0x170521);OpenchannelInteractionEvents[_0x3942('0xb')](_0x370ecb,_0x170521);_0x4cd62d(null);})[_0x3942('0xc')](_0x4cd62d(null));};}for(var e in events){if(events[_0x3942('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x3942('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
index df1305f..db6b568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d1e=['../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','changed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4c73ac,_0x46b73c){var _0x9839ee=function(_0x2076fb){while(--_0x2076fb){_0x4c73ac['push'](_0x4c73ac['shift']());}};_0x9839ee(++_0x46b73c);}(_0x8d1e,0x107));var _0xe8d1=function(_0x3340c8,_0x3d67d7){_0x3340c8=_0x3340c8-0x0;var _0x30ca8a=_0x8d1e[_0x3340c8];return _0x30ca8a;};'use strict';var _=require(_0xe8d1('0x0'));var util=require(_0xe8d1('0x1'));var logger=require(_0xe8d1('0x2'))(_0xe8d1('0x3'));var moment=require(_0xe8d1('0x4'));var BPromise=require(_0xe8d1('0x5'));var rp=require(_0xe8d1('0x6'));var fs=require('fs');var path=require(_0xe8d1('0x7'));var rimraf=require(_0xe8d1('0x8'));var config=require(_0xe8d1('0x9'));var attributes=require(_0xe8d1('0xa'));module[_0xe8d1('0xb')]=function(_0x2f75ec,_0x27e604){return _0x2f75ec[_0xe8d1('0xc')](_0xe8d1('0xd'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x20fd04,_0x3989e2,_0x5d4f30){if(_0x20fd04[_0xe8d1('0xe')]('closed')){_0x20fd04[_0xe8d1('0xf')]=moment()[_0xe8d1('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5d4f30(null,_0x20fd04);}}});};
\ No newline at end of file
+var _0x31c8=['exports','define','OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','changed','closed','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelInteraction.attributes'];(function(_0x1806a1,_0xe4441a){var _0x100691=function(_0x69a306){while(--_0x69a306){_0x1806a1['push'](_0x1806a1['shift']());}};_0x100691(++_0xe4441a);}(_0x31c8,0x187));var _0x831c=function(_0x2c47f6,_0x159d11){_0x2c47f6=_0x2c47f6-0x0;var _0x2252ba=_0x31c8[_0x2c47f6];return _0x2252ba;};'use strict';var _=require(_0x831c('0x0'));var util=require(_0x831c('0x1'));var logger=require(_0x831c('0x2'))(_0x831c('0x3'));var moment=require(_0x831c('0x4'));var BPromise=require(_0x831c('0x5'));var rp=require(_0x831c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x831c('0x7'));var attributes=require(_0x831c('0x8'));module[_0x831c('0x9')]=function(_0x48c06e,_0xe5a40){return _0x48c06e[_0x831c('0xa')](_0x831c('0xb'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x831c('0xc'),'collate':_0x831c('0xd'),'hooks':{'beforeUpdate':function(_0x26e8e0,_0x2e473d,_0x289bdb){if(_0x26e8e0[_0x831c('0xe')](_0x831c('0xf'))){_0x26e8e0['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x289bdb(null,_0x26e8e0);}}});};
\ No newline at end of file
index 8b8677d..bfb558c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcf4=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','attributes','limit','find','where','addTags','ids','omit','spread','AddTags','catch','lodash','util','moment','bluebird'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xdcf4,0x104));var _0x4dcf=function(_0x5221b7,_0x5d00ac){_0x5221b7=_0x5221b7-0x0;var _0x361221=_0xdcf4[_0x5221b7];return _0x361221;};'use strict';var _=require(_0x4dcf('0x0'));var util=require(_0x4dcf('0x1'));var moment=require(_0x4dcf('0x2'));var BPromise=require(_0x4dcf('0x3'));var rs=require(_0x4dcf('0x4'));var fs=require('fs');var Redis=require(_0x4dcf('0x5'));var db=require(_0x4dcf('0x6'))['db'];var utils=require(_0x4dcf('0x7'));var logger=require(_0x4dcf('0x8'))(_0x4dcf('0x9'));var config=require(_0x4dcf('0xa'));var jayson=require(_0x4dcf('0xb'));var client=jayson[_0x4dcf('0xc')][_0x4dcf('0xd')]({'port':0x232a});config[_0x4dcf('0xe')]=_[_0x4dcf('0xf')](config[_0x4dcf('0xe')],{'host':_0x4dcf('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4dcf('0xe')]));require(_0x4dcf('0x11'))[_0x4dcf('0x12')](socket);function respondWithRpcPromise(_0x4082dd,_0x1c8640,_0xe51a25){return new BPromise(function(_0x1c52a6,_0x5130c5){return client['request'](_0x4082dd,_0xe51a25)[_0x4dcf('0x13')](function(_0x327c27){logger[_0x4dcf('0x14')](_0x4dcf('0x15'),_0x1c8640,'request\x20sent');logger[_0x4dcf('0x16')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1c8640,_0x4dcf('0x17'),JSON[_0x4dcf('0x18')](_0x327c27));if(_0x327c27[_0x4dcf('0x19')]){if(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1a')]===0x1f4){logger[_0x4dcf('0x19')](_0x4dcf('0x15'),_0x1c8640,_0x327c27[_0x4dcf('0x19')]['message']);return _0x5130c5(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1b')]);}logger['error'](_0x4dcf('0x15'),_0x1c8640,_0x327c27['error'][_0x4dcf('0x1b')]);return _0x1c52a6(_0x327c27[_0x4dcf('0x19')][_0x4dcf('0x1b')]);}else{logger[_0x4dcf('0x14')](_0x4dcf('0x15'),_0x1c8640,_0x4dcf('0x17'));_0x1c52a6(_0x327c27[_0x4dcf('0x1c')][_0x4dcf('0x1b')]);}})['catch'](function(_0x4f0cb5){logger[_0x4dcf('0x19')](_0x4dcf('0x15'),_0x1c8640,_0x4f0cb5);_0x5130c5(_0x4f0cb5);});});}exports[_0x4dcf('0x1d')]=function(_0x4e379d){var _0x5a9cd7=this;return new Promise(function(_0x326dd3,_0x29fc1b){return db[_0x4dcf('0x1e')][_0x4dcf('0x1f')](_0x4e379d[_0x4dcf('0x20')],{'raw':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options']['where']||null:null,'attributes':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d['options'][_0x4dcf('0x22')]||null:null,'limit':_0x4e379d[_0x4dcf('0x21')]?_0x4e379d[_0x4dcf('0x21')][_0x4dcf('0x23')]||null:null})[_0x4dcf('0x13')](function(_0x19d494){logger['info']('UpdateOpenchannelInteraction',_0x4e379d);logger[_0x4dcf('0x16')](_0x4dcf('0x1d'),_0x4e379d,JSON[_0x4dcf('0x18')](_0x19d494));_0x326dd3(_0x19d494);})['catch'](function(_0x2f38fc){logger[_0x4dcf('0x19')](_0x4dcf('0x1d'),_0x2f38fc[_0x4dcf('0x1b')],_0x4e379d);_0x29fc1b(_0x5a9cd7[_0x4dcf('0x19')](0x1f4,_0x2f38fc[_0x4dcf('0x1b')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x67a659){return new Promise(function(_0x1aa81c,_0x359096){return db[_0x4dcf('0x1e')][_0x4dcf('0x24')]({'where':_0x67a659[_0x4dcf('0x21')]?_0x67a659['options'][_0x4dcf('0x25')]||null:null})[_0x4dcf('0x13')](function(_0x57e28e){if(_0x57e28e){return _0x57e28e[_0x4dcf('0x26')](_0x67a659[_0x4dcf('0x20')][_0x4dcf('0x27')],_[_0x4dcf('0x28')](_0x67a659[_0x4dcf('0x20')],[_0x4dcf('0x27'),'id'])||{});}})[_0x4dcf('0x29')](function(_0x63c908){logger[_0x4dcf('0x14')](_0x4dcf('0x2a'),_0x67a659);logger[_0x4dcf('0x16')](_0x4dcf('0x2a'),_0x67a659,JSON[_0x4dcf('0x18')](_0x63c908));_0x1aa81c(_0x63c908);})[_0x4dcf('0x2b')](function(_0x313ac6){logger[_0x4dcf('0x19')]('AddTags',_0x313ac6[_0x4dcf('0x1b')],_0x67a659);_0x359096(_this['error'](0x1f4,_0x313ac6[_0x4dcf('0x1b')]));});});};
\ No newline at end of file
+var _0x033e=['socket.io-emitter','register','then','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelInteraction','update','body','options','where','attributes','limit','UpdateOpenchannelInteraction','debug','AddTagsToOpenchannelInteraction','find','addTags','ids','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x033e,0x6a));var _0xe033=function(_0x21b6f0,_0x3c948){_0x21b6f0=_0x21b6f0-0x0;var _0x1ec11a=_0x033e[_0x21b6f0];return _0x1ec11a;};'use strict';var _=require(_0xe033('0x0'));var util=require(_0xe033('0x1'));var moment=require(_0xe033('0x2'));var BPromise=require(_0xe033('0x3'));var rs=require(_0xe033('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe033('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe033('0x6'))(_0xe033('0x7'));var config=require(_0xe033('0x8'));var jayson=require(_0xe033('0x9'));var client=jayson[_0xe033('0xa')]['http']({'port':0x232a});config[_0xe033('0xb')]=_[_0xe033('0xc')](config['redis'],{'host':_0xe033('0xd'),'port':0x18eb});var socket=require(_0xe033('0xe'))(new Redis(config[_0xe033('0xb')]));require('./openchannelInteraction.socket')[_0xe033('0xf')](socket);function respondWithRpcPromise(_0x199b33,_0x1c90dc,_0x4b906e){return new BPromise(function(_0x157fe1,_0x467ae0){return client['request'](_0x199b33,_0x4b906e)[_0xe033('0x10')](function(_0x12a0a3){logger['info'](_0xe033('0x11'),_0x1c90dc,_0xe033('0x12'));logger['debug'](_0xe033('0x13'),_0x1c90dc,_0xe033('0x12'),JSON[_0xe033('0x14')](_0x12a0a3));if(_0x12a0a3[_0xe033('0x15')]){if(_0x12a0a3[_0xe033('0x15')][_0xe033('0x16')]===0x1f4){logger[_0xe033('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1c90dc,_0x12a0a3['error'][_0xe033('0x17')]);return _0x467ae0(_0x12a0a3[_0xe033('0x15')][_0xe033('0x17')]);}logger[_0xe033('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1c90dc,_0x12a0a3[_0xe033('0x15')][_0xe033('0x17')]);return _0x157fe1(_0x12a0a3[_0xe033('0x15')]['message']);}else{logger[_0xe033('0x18')](_0xe033('0x11'),_0x1c90dc,_0xe033('0x12'));_0x157fe1(_0x12a0a3['result']['message']);}})[_0xe033('0x19')](function(_0x426d7a){logger[_0xe033('0x15')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1c90dc,_0x426d7a);_0x467ae0(_0x426d7a);});});}exports['UpdateOpenchannelInteraction']=function(_0x3acb50){var _0x5e9d54=this;return new Promise(function(_0x36f9d1,_0xd65213){return db[_0xe033('0x1a')][_0xe033('0x1b')](_0x3acb50[_0xe033('0x1c')],{'raw':_0x3acb50['options']?_0x3acb50[_0xe033('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3acb50[_0xe033('0x1d')]?_0x3acb50[_0xe033('0x1d')][_0xe033('0x1e')]||null:null,'attributes':_0x3acb50[_0xe033('0x1d')]?_0x3acb50['options'][_0xe033('0x1f')]||null:null,'limit':_0x3acb50[_0xe033('0x1d')]?_0x3acb50[_0xe033('0x1d')][_0xe033('0x20')]||null:null})[_0xe033('0x10')](function(_0xe5bb5e){logger['info'](_0xe033('0x21'),_0x3acb50);logger[_0xe033('0x22')]('UpdateOpenchannelInteraction',_0x3acb50,JSON['stringify'](_0xe5bb5e));_0x36f9d1(_0xe5bb5e);})['catch'](function(_0x530052){logger[_0xe033('0x15')]('UpdateOpenchannelInteraction',_0x530052[_0xe033('0x17')],_0x3acb50);_0xd65213(_0x5e9d54['error'](0x1f4,_0x530052['message']));});});};exports[_0xe033('0x23')]=function(_0x2a1a58){return new Promise(function(_0xe7a010,_0x1cd708){return db[_0xe033('0x1a')][_0xe033('0x24')]({'where':_0x2a1a58[_0xe033('0x1d')]?_0x2a1a58['options'][_0xe033('0x1e')]||null:null})[_0xe033('0x10')](function(_0x3d35e5){if(_0x3d35e5){return _0x3d35e5[_0xe033('0x25')](_0x2a1a58[_0xe033('0x1c')][_0xe033('0x26')],_['omit'](_0x2a1a58[_0xe033('0x1c')],[_0xe033('0x26'),'id'])||{});}})['spread'](function(_0x1ec982){logger[_0xe033('0x18')](_0xe033('0x27'),_0x2a1a58);logger[_0xe033('0x22')](_0xe033('0x27'),_0x2a1a58,JSON[_0xe033('0x14')](_0x1ec982));_0xe7a010(_0x1ec982);})[_0xe033('0x19')](function(_0x36beed){logger[_0xe033('0x15')](_0xe033('0x27'),_0x36beed[_0xe033('0x17')],_0x2a1a58);_0x1cd708(_this[_0xe033('0x15')](0x1f4,_0x36beed[_0xe033('0x17')]));});});};
\ No newline at end of file
index 16f3d9d..bf61be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b28=['save','update','removeListener','register','length','openchannelInteraction:'];(function(_0x2084c3,_0x405f8d){var _0x484ce1=function(_0x97a5f8){while(--_0x97a5f8){_0x2084c3['push'](_0x2084c3['shift']());}};_0x484ce1(++_0x405f8d);}(_0x8b28,0x1aa));var _0x88b2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8b28[_0x20a584];return _0x4b41a8;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x88b2('0x0'),'remove',_0x88b2('0x1')];function createListener(_0x29f5b8,_0x4e0579){return function(_0x54adec){_0x4e0579['emit'](_0x29f5b8,_0x54adec);};}function removeListener(_0x3de9d3,_0x4cdc58){return function(){OpenchannelInteractionEvents[_0x88b2('0x2')](_0x3de9d3,_0x4cdc58);};}exports[_0x88b2('0x3')]=function(_0xf4fc57){for(var _0x3ec8d8=0x0,_0x3ee18c=events[_0x88b2('0x4')];_0x3ec8d8<_0x3ee18c;_0x3ec8d8++){var _0x3f5cd1=events[_0x3ec8d8];var _0x5c72c5=createListener(_0x88b2('0x5')+_0x3f5cd1,_0xf4fc57);OpenchannelInteractionEvents['on'](_0x3f5cd1,_0x5c72c5);}};
\ No newline at end of file
+var _0x111f=['register','length','./openchannelInteraction.events','save','update','emit','removeListener'];(function(_0x416cbd,_0x44de7e){var _0x588510=function(_0x39cdcc){while(--_0x39cdcc){_0x416cbd['push'](_0x416cbd['shift']());}};_0x588510(++_0x44de7e);}(_0x111f,0xdb));var _0xf111=function(_0xa7c1d5,_0x5e4894){_0xa7c1d5=_0xa7c1d5-0x0;var _0x20f2e4=_0x111f[_0xa7c1d5];return _0x20f2e4;};'use strict';var OpenchannelInteractionEvents=require(_0xf111('0x0'));var events=[_0xf111('0x1'),'remove',_0xf111('0x2')];function createListener(_0x5bd88e,_0x32388e){return function(_0x4fb74a){_0x32388e[_0xf111('0x3')](_0x5bd88e,_0x4fb74a);};}function removeListener(_0x480b35,_0x304c1c){return function(){OpenchannelInteractionEvents[_0xf111('0x4')](_0x480b35,_0x304c1c);};}exports[_0xf111('0x5')]=function(_0x3c645e){for(var _0x213fc2=0x0,_0x5b62dc=events[_0xf111('0x6')];_0x213fc2<_0x5b62dc;_0x213fc2++){var _0x277198=events[_0x213fc2];var _0x3cd1d4=createListener('openchannelInteraction:'+_0x277198,_0x3c645e);OpenchannelInteractionEvents['on'](_0x277198,_0x3cd1d4);}};
\ No newline at end of file
index a7374af..c0801b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x4f602f,_0x43cacb){var _0x231c46=function(_0x4e0703){while(--_0x4e0703){_0x4f602f['push'](_0x4f602f['shift']());}};_0x231c46(++_0x43cacb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x4f3de2,_0x4cb574){var _0x481ef3=function(_0x21e248){while(--_0x21e248){_0x4f3de2['push'](_0x4f3de2['shift']());}};_0x481ef3(++_0x4cb574);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index cabac41..6206ebb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['medium','BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports'];(function(_0x10474e,_0x1314f){var _0x45302f=function(_0x3899ad){while(--_0x3899ad){_0x10474e['push'](_0x10474e['shift']());}};_0x45302f(++_0x1314f);}(_0xb574,0x106));var _0x4b57=function(_0x2993c8,_0x355ef6){_0x2993c8=_0x2993c8-0x0;var _0x5e547b=_0xb574[_0x2993c8];return _0x5e547b;};'use strict';var Sequelize=require(_0x4b57('0x0'));module[_0x4b57('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4b57('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4b57('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x4b57('0x4')]('in',_0x4b57('0x5')),'defaultValue':_0x4b57('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4b57('0x6')]},'providerName':{'type':Sequelize[_0x4b57('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xed3c=['TEXT','medium','BOOLEAN','ENUM','out','STRING','sequelize','exports'];(function(_0x174c1a,_0x23206a){var _0x2e2985=function(_0x11581f){while(--_0x11581f){_0x174c1a['push'](_0x174c1a['shift']());}};_0x2e2985(++_0x23206a);}(_0xed3c,0x1a6));var _0xced3=function(_0x318f46,_0x3ed5a9){_0x318f46=_0x318f46-0x0;var _0x125f88=_0xed3c[_0x318f46];return _0x125f88;};'use strict';var Sequelize=require(_0xced3('0x0'));module[_0xced3('0x1')]={'body':{'type':Sequelize[_0xced3('0x2')](_0xced3('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xced3('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xced3('0x5')]('in',_0xced3('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xced3('0x7')]},'providerResponse':{'type':Sequelize[_0xced3('0x2')]}};
\ No newline at end of file
index f6e12be..e4b686f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeba=['defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','includeAll','OpenchannelMessage','findAll','rows','show','params','length','options','find','body','update','describe','openchannel-interactions','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','UserId','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','channel','motionChannel','event','accept','EventManager','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','ContactId','contact','interface','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x19183b,_0x850ca3){var _0x875f79=function(_0x5c950d){while(--_0x5c950d){_0x19183b['push'](_0x19183b['shift']());}};_0x875f79(++_0x850ca3);}(_0xbeba,0x64));var _0xabeb=function(_0x4cc3d6,_0xb5d507){_0x4cc3d6=_0x4cc3d6-0x0;var _0x5f2612=_0xbeba[_0x4cc3d6];return _0x5f2612;};'use strict';var emlformat=require(_0xabeb('0x0'));var rimraf=require(_0xabeb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabeb('0x2'));var rp=require(_0xabeb('0x3'));var moment=require(_0xabeb('0x4'));var BPromise=require(_0xabeb('0x5'));var Mustache=require(_0xabeb('0x6'));var util=require('util');var path=require(_0xabeb('0x7'));var sox=require(_0xabeb('0x8'));var csv=require(_0xabeb('0x9'));var ejs=require(_0xabeb('0xa'));var fs=require('fs');var fs_extra=require(_0xabeb('0xb'));var _=require(_0xabeb('0xc'));var squel=require(_0xabeb('0xd'));var crypto=require(_0xabeb('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xabeb('0x9'));var querystring=require(_0xabeb('0xf'));var Papa=require('papaparse');var Redis=require(_0xabeb('0x10'));var authService=require(_0xabeb('0x11'));var qs=require(_0xabeb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xabeb('0x13'));var logger=require(_0xabeb('0x14'))('api');var utils=require(_0xabeb('0x15'));var config=require(_0xabeb('0x16'));var licenseUtil=require(_0xabeb('0x17'));var db=require(_0xabeb('0x18'))['db'];config[_0xabeb('0x19')]=_[_0xabeb('0x1a')](config[_0xabeb('0x19')],{'host':_0xabeb('0x1b'),'port':0x18eb});var socket=require(_0xabeb('0x1c'))(new Redis(config[_0xabeb('0x19')]));require(_0xabeb('0x1d'))[_0xabeb('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0xabeb('0x1f')][_0xabeb('0x20')]({'port':0x232c});var client9002=jayson[_0xabeb('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x88209b,_0x244d89,_0x187519,_0xfee67c){return new BPromise(function(_0x1e7724,_0x2384ba){var _0x1b79c7=_0xfee67c||client;return _0x1b79c7[_0xabeb('0x21')](_0x88209b,_0x187519)[_0xabeb('0x22')](function(_0x3984ff){logger[_0xabeb('0x23')](_0xabeb('0x24'),_0x244d89,'request\x20sent');logger['debug'](_0xabeb('0x25'),_0x244d89,_0xabeb('0x26'),JSON[_0xabeb('0x27')](_0x3984ff));if(_0x3984ff[_0xabeb('0x28')]){if(_0x3984ff['error']['code']===0x1f4){logger[_0xabeb('0x28')](_0xabeb('0x24'),_0x244d89,_0x3984ff['error'][_0xabeb('0x29')]);return _0x2384ba(_0x3984ff[_0xabeb('0x28')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x244d89,_0x3984ff[_0xabeb('0x28')][_0xabeb('0x29')]);return _0x1e7724(_0x3984ff[_0xabeb('0x28')][_0xabeb('0x29')]);}else{logger['info'](_0xabeb('0x24'),_0x244d89,_0xabeb('0x26'));_0x1e7724(_0x3984ff[_0xabeb('0x2a')]['message']);}})[_0xabeb('0x2b')](function(_0x4526a2){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x244d89,_0x4526a2);_0x2384ba(_0x4526a2);});});}function respondWithStatusCode(_0x4497d5,_0x291df9){_0x291df9=_0x291df9||0xcc;return function(_0x2384f6){if(_0x2384f6){return _0x4497d5[_0xabeb('0x2c')](_0x291df9);}return _0x4497d5[_0xabeb('0x2d')](_0x291df9)[_0xabeb('0x2e')]();};}function respondWithResult(_0x48530c,_0x280b72){_0x280b72=_0x280b72||0xc8;return function(_0x546ed2){if(_0x546ed2){return _0x48530c['status'](_0x280b72)[_0xabeb('0x2f')](_0x546ed2);}};}function respondWithFilteredResult(_0x54e8a2,_0x2e957b){return function(_0xd2ca4f){if(_0xd2ca4f){var _0x35b691=typeof _0x2e957b[_0xabeb('0x30')]===_0xabeb('0x31')&&typeof _0x2e957b[_0xabeb('0x32')]===_0xabeb('0x31');var _0x565576=_0xd2ca4f[_0xabeb('0x33')];var _0x58a82d=_0x35b691?0x0:_0x2e957b[_0xabeb('0x30')];var _0x38744d=_0x35b691?_0xd2ca4f[_0xabeb('0x33')]:_0x2e957b[_0xabeb('0x30')]+_0x2e957b[_0xabeb('0x32')];var _0x29095b;if(_0x38744d>=_0x565576){_0x38744d=_0x565576;_0x29095b=0xc8;}else{_0x29095b=0xce;}_0x54e8a2[_0xabeb('0x2d')](_0x29095b);return _0x54e8a2[_0xabeb('0x34')](_0xabeb('0x35'),_0x58a82d+'-'+_0x38744d+'/'+_0x565576)[_0xabeb('0x2f')](_0xd2ca4f);}return null;};}function patchUpdates(_0x4fa648){return function(_0x2521c5){try{jsonpatch[_0xabeb('0x36')](_0x2521c5,_0x4fa648,!![]);}catch(_0x1decf5){return BPromise[_0xabeb('0x37')](_0x1decf5);}return _0x2521c5[_0xabeb('0x38')]();};}function saveUpdates(_0x364f31,_0x18b6a8){return function(_0x2b7d11){if(_0x2b7d11){return _0x2b7d11['update'](_0x364f31)['then'](function(_0x14bf29){return _0x14bf29;});}return null;};}function removeEntity(_0x2a7601,_0x2dac1d){return function(_0x54129f){if(_0x54129f){return _0x54129f[_0xabeb('0x39')]()['then'](function(){_0x2a7601['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x426944,_0x33fab3){return function(_0x49a8ef){if(!_0x49a8ef){_0x426944[_0xabeb('0x2c')](0x194);}return _0x49a8ef;};}function handleError(_0x5814ae,_0x4a25eb){_0x4a25eb=_0x4a25eb||0x1f4;return function(_0x1638e3){logger[_0xabeb('0x28')](_0x1638e3[_0xabeb('0x3a')]);if(_0x1638e3[_0xabeb('0x3b')]){delete _0x1638e3[_0xabeb('0x3b')];}_0x5814ae[_0xabeb('0x2d')](_0x4a25eb)['send'](_0x1638e3);};}exports[_0xabeb('0x3c')]=function(_0x467595,_0x53b150){var _0x3e140c={},_0x485b82={},_0x107733={'count':0x0,'rows':[]};var _0x2730bc=_[_0xabeb('0x3d')](db['OpenchannelMessage'][_0xabeb('0x3e')],function(_0x3c133b){return{'name':_0x3c133b[_0xabeb('0x3f')],'type':_0x3c133b['type'][_0xabeb('0x40')]};});_0x485b82[_0xabeb('0x41')]=_[_0xabeb('0x3d')](_0x2730bc,_0xabeb('0x3b'));_0x485b82[_0xabeb('0x42')]=_[_0xabeb('0x43')](_0x467595['query']);_0x485b82['filters']=_[_0xabeb('0x44')](_0x485b82[_0xabeb('0x41')],_0x485b82[_0xabeb('0x42')]);_0x3e140c[_0xabeb('0x45')]=_[_0xabeb('0x44')](_0x485b82[_0xabeb('0x41')],qs['fields'](_0x467595[_0xabeb('0x42')][_0xabeb('0x46')]));_0x3e140c[_0xabeb('0x45')]=_0x3e140c[_0xabeb('0x45')]['length']?_0x3e140c['attributes']:_0x485b82[_0xabeb('0x41')];if(!_0x467595['query'][_0xabeb('0x47')]('nolimit')){_0x3e140c[_0xabeb('0x32')]=qs[_0xabeb('0x32')](_0x467595['query'][_0xabeb('0x32')]);_0x3e140c[_0xabeb('0x30')]=qs[_0xabeb('0x30')](_0x467595[_0xabeb('0x42')][_0xabeb('0x30')]);}_0x3e140c[_0xabeb('0x48')]=qs[_0xabeb('0x49')](_0x467595[_0xabeb('0x42')]['sort']);_0x3e140c['where']=qs[_0xabeb('0x4a')](_[_0xabeb('0x4b')](_0x467595[_0xabeb('0x42')],_0x485b82['filters']),_0x2730bc);if(_0x467595['query'][_0xabeb('0x4c')]){_0x3e140c[_0xabeb('0x4d')]=_[_0xabeb('0x4e')](_0x3e140c[_0xabeb('0x4d')],{'$or':_[_0xabeb('0x3d')](_0x2730bc,function(_0x3f2250){if(_0x3f2250[_0xabeb('0x4f')]!=='VIRTUAL'){var _0x488d15={};_0x488d15[_0x3f2250['name']]={'$like':'%'+_0x467595['query'][_0xabeb('0x4c')]+'%'};return _0x488d15;}})});}_0x3e140c=_[_0xabeb('0x4e')]({},_0x3e140c,_0x467595['options']);var _0xba8e0c={'where':_0x3e140c[_0xabeb('0x4d')]};return db['OpenchannelMessage'][_0xabeb('0x33')](_0xba8e0c)[_0xabeb('0x22')](function(_0x54164d){_0x107733[_0xabeb('0x33')]=_0x54164d;if(_0x467595['query'][_0xabeb('0x50')]){_0x3e140c['include']=[{'all':!![]}];}return db[_0xabeb('0x51')][_0xabeb('0x52')](_0x3e140c);})[_0xabeb('0x22')](function(_0x2437f8){_0x107733[_0xabeb('0x53')]=_0x2437f8;return _0x107733;})[_0xabeb('0x22')](respondWithFilteredResult(_0x53b150,_0x3e140c))[_0xabeb('0x2b')](handleError(_0x53b150,null));};exports[_0xabeb('0x54')]=function(_0x48eeb4,_0x45545b){var _0x153fd1={'raw':!![],'where':{'id':_0x48eeb4[_0xabeb('0x55')]['id']}},_0x4325d5={};_0x4325d5['model']=_[_0xabeb('0x43')](db[_0xabeb('0x51')][_0xabeb('0x3e')]);_0x4325d5[_0xabeb('0x42')]=_[_0xabeb('0x43')](_0x48eeb4['query']);_0x4325d5['filters']=_[_0xabeb('0x44')](_0x4325d5[_0xabeb('0x41')],_0x4325d5[_0xabeb('0x42')]);_0x153fd1[_0xabeb('0x45')]=_[_0xabeb('0x44')](_0x4325d5[_0xabeb('0x41')],qs[_0xabeb('0x46')](_0x48eeb4['query'][_0xabeb('0x46')]));_0x153fd1[_0xabeb('0x45')]=_0x153fd1[_0xabeb('0x45')][_0xabeb('0x56')]?_0x153fd1[_0xabeb('0x45')]:_0x4325d5[_0xabeb('0x41')];if(_0x48eeb4[_0xabeb('0x42')][_0xabeb('0x50')]){_0x153fd1['include']=[{'all':!![]}];}_0x153fd1=_[_0xabeb('0x4e')]({},_0x153fd1,_0x48eeb4[_0xabeb('0x57')]);return db[_0xabeb('0x51')][_0xabeb('0x58')](_0x153fd1)[_0xabeb('0x22')](handleEntityNotFound(_0x45545b,null))[_0xabeb('0x22')](respondWithResult(_0x45545b,null))[_0xabeb('0x2b')](handleError(_0x45545b,null));};exports['create']=function(_0x1aa37d,_0x31ed19){return db[_0xabeb('0x51')]['create'](_0x1aa37d[_0xabeb('0x59')],{})[_0xabeb('0x22')](respondWithResult(_0x31ed19,0xc9))[_0xabeb('0x2b')](handleError(_0x31ed19,null));};exports[_0xabeb('0x5a')]=function(_0x4f9df2,_0x2b8b25){if(_0x4f9df2['body']['id']){delete _0x4f9df2[_0xabeb('0x59')]['id'];}return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x4f9df2[_0xabeb('0x55')]['id']}})[_0xabeb('0x22')](handleEntityNotFound(_0x2b8b25,null))['then'](saveUpdates(_0x4f9df2[_0xabeb('0x59')],null))['then'](respondWithResult(_0x2b8b25,null))[_0xabeb('0x2b')](handleError(_0x2b8b25,null));};exports['destroy']=function(_0x10b267,_0x31dd06){return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x10b267['params']['id']}})[_0xabeb('0x22')](handleEntityNotFound(_0x31dd06,null))[_0xabeb('0x22')](removeEntity(_0x31dd06,null))['catch'](handleError(_0x31dd06,null));};exports[_0xabeb('0x5b')]=function(_0x34e619,_0x39b6a4){return db['OpenchannelMessage']['describe']()['then'](respondWithResult(_0x39b6a4,null))['catch'](handleError(_0x39b6a4,null));};var interaction_log=require(_0xabeb('0x14'))(_0xabeb('0x5c'));exports['accept']=function(_0x57c51a,_0x474b61,_0x15849c){var _0xbef503={'agent':{},'channel':_0xabeb('0x5d')};if(_0x57c51a[_0xabeb('0x59')]['id']){delete _0x57c51a[_0xabeb('0x59')]['id'];}_0x57c51a['body']['read']=!![];_0x57c51a[_0xabeb('0x59')][_0xabeb('0x5e')]=moment()[_0xabeb('0x5f')](_0xabeb('0x60'));_0x57c51a[_0xabeb('0x59')]['UserId']=_0x57c51a[_0xabeb('0x59')]['UserId']||_0x57c51a[_0xabeb('0x61')]['id'];_0xbef503['agent']['id']=_0x57c51a['body'][_0xabeb('0x62')];return db['OpenchannelMessage'][_0xabeb('0x58')]({'where':{'id':_0x57c51a[_0xabeb('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x474b61,null))[_0xabeb('0x22')](saveUpdates(_0x57c51a['body'],null))['then'](function(_0x109741){if(_0x109741){_0xbef503['message']=_0x109741[_0xabeb('0x63')]({'plain':!![]});return db[_0xabeb('0x64')]['find']({'where':{'id':_0x109741[_0xabeb('0x65')]}});}return null;})[_0xabeb('0x22')](handleEntityNotFound(_0x474b61,null))[_0xabeb('0x22')](function(_0x493106){if(_0x493106){return _0x493106['update']({'UserId':_0x57c51a[_0xabeb('0x59')][_0xabeb('0x62')],'read1stAt':_[_0xabeb('0x66')](_0x493106['read1stAt'])?moment()['format'](_0xabeb('0x60')):undefined});}return null;})[_0xabeb('0x22')](function(_0x2cecff){if(_0x2cecff){_0xbef503[_0xabeb('0x67')]=_0x2cecff['get']({'plain':!![]});interaction_log[_0xabeb('0x23')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x57c51a[_0xabeb('0x61')]['id'],_0x57c51a[_0xabeb('0x61')][_0xabeb('0x3b')],_0x57c51a[_0xabeb('0x61')][_0xabeb('0x68')],_0xbef503[_0xabeb('0x67')]['id'],_0x57c51a['body']?JSON[_0xabeb('0x27')](_0x57c51a[_0xabeb('0x59')]):_0xabeb('0x69'));return respondWithRpcPromise('AcceptMessage',_0xabeb('0x6a'),_0xbef503);}return null;})[_0xabeb('0x22')](function(_0x15dd4c){var _0x13ec8f=_0xabeb('0x6b')+_0x15dd4c['message']['ContactId'];return db[_0xabeb('0x6c')][_0xabeb('0x42')](_0x13ec8f,{'type':db[_0xabeb('0x6d')][_0xabeb('0x6e')][_0xabeb('0x6f')],'raw':!![]})[_0xabeb('0x22')](function(_0x2b9254){return _0x2b9254;});})[_0xabeb('0x22')](function(_0x47bb6a){if(_0x47bb6a){_0xbef503[_0xabeb('0x29')]['contact']=_0x47bb6a[0x0];if(!_0x57c51a[_0xabeb('0x59')][_0xabeb('0x62')])return;return db[_0xabeb('0x70')]['find']({'where':{'id':_0x57c51a[_0xabeb('0x59')]['UserId'],'role':_0xabeb('0x71')},'attributes':['id',_0xabeb('0x3b'),_0xabeb('0x72'),_0xabeb('0x73'),_0xabeb('0x74')],'raw':!![]});}return null;})[_0xabeb('0x22')](function(_0x68d8d0){if(!_0x68d8d0)return null;_0xbef503[_0xabeb('0x29')][_0xabeb('0x71')]=_0x68d8d0;return _0xbef503;})[_0xabeb('0x22')](function(_0x32451f){if(_0x32451f){if(_0x57c51a[_0xabeb('0x59')]['manual']){_0xbef503['message']['interface']=util[_0xabeb('0x5f')]('SIP/%s',_0x57c51a[_0xabeb('0x61')]['name']);_0xbef503['message'][_0xabeb('0x75')]=_0xbef503[_0xabeb('0x75')];_0xbef503[_0xabeb('0x29')][_0xabeb('0x76')]=_0xbef503[_0xabeb('0x75')];_0xbef503['message'][_0xabeb('0x77')]=_0xabeb('0x78');return respondWithRpcPromise(_0xabeb('0x79'),_0xabeb('0x79'),{'event':'acceptmessage','message':_0xbef503[_0xabeb('0x29')]},client9002)[_0xabeb('0x22')](function(){return _0xbef503;});}return _0xbef503;}return null;})[_0xabeb('0x22')](respondWithResult(_0x474b61,null))[_0xabeb('0x2b')](handleError(_0x474b61,null));};var interaction_log=require(_0xabeb('0x14'))(_0xabeb('0x5c'));exports['reject']=function(_0x3fddcc,_0x492295,_0x526b0a){var _0x3b403a={'agent':{},'channel':'openchannel'};if(_0x3fddcc[_0xabeb('0x59')]['id']){delete _0x3fddcc[_0xabeb('0x59')]['id'];}_0x3fddcc[_0xabeb('0x59')]['UserId']=_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')]||_0x3fddcc[_0xabeb('0x61')]['id'];_0x3b403a[_0xabeb('0x71')]['id']=_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')];return db[_0xabeb('0x51')][_0xabeb('0x58')]({'where':{'id':_0x3fddcc[_0xabeb('0x55')]['id'],'UserId':null}})[_0xabeb('0x22')](handleEntityNotFound(_0x492295,null))[_0xabeb('0x22')](function(_0x452dfd){if(_0x452dfd){_0x3b403a['message']=_0x452dfd[_0xabeb('0x63')]({'plain':!![]});return db[_0xabeb('0x64')][_0xabeb('0x58')]({'where':{'id':_0x452dfd[_0xabeb('0x65')]}});}return null;})[_0xabeb('0x22')](handleEntityNotFound(_0x492295,null))['then'](function(_0x2c5db3){if(_0x2c5db3){_0x3b403a[_0xabeb('0x67')]=_0x2c5db3['get']({'plain':!![]});interaction_log[_0xabeb('0x23')](_0xabeb('0x7a'),_0x3fddcc[_0xabeb('0x61')]['id'],_0x3fddcc[_0xabeb('0x61')][_0xabeb('0x3b')],_0x3fddcc[_0xabeb('0x61')]['role'],_0x3b403a[_0xabeb('0x67')]['id'],_0x3fddcc[_0xabeb('0x59')]?JSON[_0xabeb('0x27')](_0x3fddcc[_0xabeb('0x59')]):_0xabeb('0x69'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x3b403a);}return null;})[_0xabeb('0x22')](function(_0x5839a5){var _0x26d3ba=_0xabeb('0x6b')+_0x5839a5[_0xabeb('0x29')][_0xabeb('0x7b')];return db[_0xabeb('0x6c')][_0xabeb('0x42')](_0x26d3ba,{'type':db[_0xabeb('0x6d')]['QueryTypes'][_0xabeb('0x6f')],'raw':!![]})[_0xabeb('0x22')](function(_0x3bc629){return _0x3bc629;});})[_0xabeb('0x22')](function(_0x58e820){if(_0x58e820){_0x3b403a[_0xabeb('0x29')][_0xabeb('0x7c')]=_0x58e820[0x0];if(!_0x3fddcc[_0xabeb('0x59')][_0xabeb('0x62')])return;return db[_0xabeb('0x70')][_0xabeb('0x58')]({'where':{'id':_0x3fddcc['body'][_0xabeb('0x62')],'role':_0xabeb('0x71')},'attributes':['id','name','fullname',_0xabeb('0x73'),_0xabeb('0x74')],'raw':!![]});}return null;})[_0xabeb('0x22')](function(_0x838731){if(!_0x838731)return null;_0x3b403a[_0xabeb('0x29')][_0xabeb('0x71')]=_0x838731;return _0x3b403a;})[_0xabeb('0x22')](function(_0x3caf56){if(_0x3caf56){_0x3caf56[_0xabeb('0x29')][_0xabeb('0x7d')]=util[_0xabeb('0x5f')]('SIP/%s',_0x3fddcc[_0xabeb('0x61')][_0xabeb('0x3b')]);_0x3caf56[_0xabeb('0x29')][_0xabeb('0x75')]=_0x3b403a[_0xabeb('0x75')];_0x3caf56[_0xabeb('0x29')][_0xabeb('0x76')]=_0x3b403a[_0xabeb('0x75')];_0x3caf56[_0xabeb('0x29')][_0xabeb('0x77')]=_0xabeb('0x37');respondWithRpcPromise(_0xabeb('0x79'),'EventManager',{'event':'rejectmessage','message':_0x3caf56[_0xabeb('0x29')]},client9002);return _0x3b403a;}return null;})[_0xabeb('0x22')](respondWithResult(_0x492295,null))[_0xabeb('0x2b')](handleError(_0x492295,null));};
\ No newline at end of file
+var _0xe0bb=['request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','name','send','OpenchannelMessage','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','includeAll','include','params','options','find','create','body','describe','../../config/logger','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteractionId','isNil','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','SIP/%s','channel','event','EventManager','OpenchannelInteraction','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','internal','interface','motionChannel','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe0bb,0x15e));var _0xbe0b=function(_0x3f288d,_0x3c7a97){_0x3f288d=_0x3f288d-0x0;var _0x5e8468=_0xe0bb[_0x3f288d];return _0x5e8468;};'use strict';var emlformat=require(_0xbe0b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbe0b('0x1'));var jsonpatch=require(_0xbe0b('0x2'));var rp=require(_0xbe0b('0x3'));var moment=require(_0xbe0b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbe0b('0x5'));var util=require(_0xbe0b('0x6'));var path=require('path');var sox=require(_0xbe0b('0x7'));var csv=require(_0xbe0b('0x8'));var ejs=require(_0xbe0b('0x9'));var fs=require('fs');var fs_extra=require(_0xbe0b('0xa'));var _=require(_0xbe0b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbe0b('0xc'));var toCsv=require(_0xbe0b('0x8'));var querystring=require(_0xbe0b('0xd'));var Papa=require(_0xbe0b('0xe'));var Redis=require('ioredis');var authService=require(_0xbe0b('0xf'));var qs=require(_0xbe0b('0x10'));var as=require(_0xbe0b('0x11'));var hardwareService=require(_0xbe0b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xbe0b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xbe0b('0x14'));var db=require(_0xbe0b('0x15'))['db'];config[_0xbe0b('0x16')]=_['defaults'](config[_0xbe0b('0x16')],{'host':_0xbe0b('0x17'),'port':0x18eb});var socket=require(_0xbe0b('0x18'))(new Redis(config['redis']));require('./openchannelMessage.socket')[_0xbe0b('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0xbe0b('0x1a')][_0xbe0b('0x1b')]({'port':0x232c});var client9002=jayson['client'][_0xbe0b('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x59ef42,_0x2cc5ed,_0x2504a2,_0x50dcca){return new BPromise(function(_0x26f8e7,_0x356dbe){var _0x20854f=_0x50dcca||client;return _0x20854f['request'](_0x59ef42,_0x2504a2)[_0xbe0b('0x1c')](function(_0x4ab055){logger[_0xbe0b('0x1d')](_0xbe0b('0x1e'),_0x2cc5ed,_0xbe0b('0x1f'));logger['debug'](_0xbe0b('0x20'),_0x2cc5ed,'request\x20sent',JSON[_0xbe0b('0x21')](_0x4ab055));if(_0x4ab055['error']){if(_0x4ab055[_0xbe0b('0x22')]['code']===0x1f4){logger[_0xbe0b('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x2cc5ed,_0x4ab055[_0xbe0b('0x22')][_0xbe0b('0x23')]);return _0x356dbe(_0x4ab055[_0xbe0b('0x22')][_0xbe0b('0x23')]);}logger[_0xbe0b('0x22')](_0xbe0b('0x1e'),_0x2cc5ed,_0x4ab055[_0xbe0b('0x22')][_0xbe0b('0x23')]);return _0x26f8e7(_0x4ab055[_0xbe0b('0x22')][_0xbe0b('0x23')]);}else{logger[_0xbe0b('0x1d')](_0xbe0b('0x1e'),_0x2cc5ed,_0xbe0b('0x1f'));_0x26f8e7(_0x4ab055[_0xbe0b('0x24')][_0xbe0b('0x23')]);}})[_0xbe0b('0x25')](function(_0x1ac7b6){logger[_0xbe0b('0x22')](_0xbe0b('0x1e'),_0x2cc5ed,_0x1ac7b6);_0x356dbe(_0x1ac7b6);});});}function respondWithStatusCode(_0x403c3f,_0x19f390){_0x19f390=_0x19f390||0xcc;return function(_0x2689dd){if(_0x2689dd){return _0x403c3f[_0xbe0b('0x26')](_0x19f390);}return _0x403c3f['status'](_0x19f390)[_0xbe0b('0x27')]();};}function respondWithResult(_0x7cecce,_0x177983){_0x177983=_0x177983||0xc8;return function(_0x2f32f8){if(_0x2f32f8){return _0x7cecce[_0xbe0b('0x28')](_0x177983)['json'](_0x2f32f8);}};}function respondWithFilteredResult(_0x716d56,_0x2aceae){return function(_0x193e5e){if(_0x193e5e){var _0x4f4d2e=typeof _0x2aceae[_0xbe0b('0x29')]===_0xbe0b('0x2a')&&typeof _0x2aceae['limit']===_0xbe0b('0x2a');var _0x45fbe6=_0x193e5e['count'];var _0x21b89a=_0x4f4d2e?0x0:_0x2aceae[_0xbe0b('0x29')];var _0x7e9f08=_0x4f4d2e?_0x193e5e[_0xbe0b('0x2b')]:_0x2aceae[_0xbe0b('0x29')]+_0x2aceae[_0xbe0b('0x2c')];var _0x2a2e0e;if(_0x7e9f08>=_0x45fbe6){_0x7e9f08=_0x45fbe6;_0x2a2e0e=0xc8;}else{_0x2a2e0e=0xce;}_0x716d56['status'](_0x2a2e0e);return _0x716d56[_0xbe0b('0x2d')](_0xbe0b('0x2e'),_0x21b89a+'-'+_0x7e9f08+'/'+_0x45fbe6)[_0xbe0b('0x2f')](_0x193e5e);}return null;};}function patchUpdates(_0x2acceb){return function(_0x48267c){try{jsonpatch[_0xbe0b('0x30')](_0x48267c,_0x2acceb,!![]);}catch(_0x3f20a1){return BPromise[_0xbe0b('0x31')](_0x3f20a1);}return _0x48267c[_0xbe0b('0x32')]();};}function saveUpdates(_0x524530,_0x407986){return function(_0x469e0a){if(_0x469e0a){return _0x469e0a[_0xbe0b('0x33')](_0x524530)['then'](function(_0xfee773){return _0xfee773;});}return null;};}function removeEntity(_0x1761de,_0x11e4d3){return function(_0x361c77){if(_0x361c77){return _0x361c77[_0xbe0b('0x34')]()[_0xbe0b('0x1c')](function(){_0x1761de['status'](0xcc)[_0xbe0b('0x27')]();});}};}function handleEntityNotFound(_0x23056d,_0x736bb2){return function(_0x206211){if(!_0x206211){_0x23056d['sendStatus'](0x194);}return _0x206211;};}function handleError(_0x3d26ee,_0x15e8a7){_0x15e8a7=_0x15e8a7||0x1f4;return function(_0x5a0233){logger[_0xbe0b('0x22')](_0x5a0233['stack']);if(_0x5a0233['name']){delete _0x5a0233[_0xbe0b('0x35')];}_0x3d26ee[_0xbe0b('0x28')](_0x15e8a7)[_0xbe0b('0x36')](_0x5a0233);};}exports['index']=function(_0x5c68bc,_0x44a906){var _0x46bc77={},_0x342758={},_0x57fbf0={'count':0x0,'rows':[]};var _0x90a587=_['map'](db[_0xbe0b('0x37')][_0xbe0b('0x38')],function(_0x1c4600){return{'name':_0x1c4600[_0xbe0b('0x39')],'type':_0x1c4600[_0xbe0b('0x3a')][_0xbe0b('0x3b')]};});_0x342758[_0xbe0b('0x3c')]=_[_0xbe0b('0x3d')](_0x90a587,_0xbe0b('0x35'));_0x342758['query']=_[_0xbe0b('0x3e')](_0x5c68bc[_0xbe0b('0x3f')]);_0x342758[_0xbe0b('0x40')]=_['intersection'](_0x342758[_0xbe0b('0x3c')],_0x342758[_0xbe0b('0x3f')]);_0x46bc77[_0xbe0b('0x41')]=_[_0xbe0b('0x42')](_0x342758[_0xbe0b('0x3c')],qs[_0xbe0b('0x43')](_0x5c68bc['query']['fields']));_0x46bc77['attributes']=_0x46bc77['attributes'][_0xbe0b('0x44')]?_0x46bc77['attributes']:_0x342758['model'];if(!_0x5c68bc[_0xbe0b('0x3f')][_0xbe0b('0x45')](_0xbe0b('0x46'))){_0x46bc77['limit']=qs[_0xbe0b('0x2c')](_0x5c68bc[_0xbe0b('0x3f')]['limit']);_0x46bc77[_0xbe0b('0x29')]=qs[_0xbe0b('0x29')](_0x5c68bc[_0xbe0b('0x3f')]['offset']);}_0x46bc77[_0xbe0b('0x47')]=qs[_0xbe0b('0x48')](_0x5c68bc['query']['sort']);_0x46bc77['where']=qs['filters'](_[_0xbe0b('0x49')](_0x5c68bc[_0xbe0b('0x3f')],_0x342758[_0xbe0b('0x40')]),_0x90a587);if(_0x5c68bc[_0xbe0b('0x3f')]['filter']){_0x46bc77[_0xbe0b('0x4a')]=_['merge'](_0x46bc77[_0xbe0b('0x4a')],{'$or':_[_0xbe0b('0x3d')](_0x90a587,function(_0x25e820){if(_0x25e820[_0xbe0b('0x3a')]!==_0xbe0b('0x4b')){var _0x4dca58={};_0x4dca58[_0x25e820[_0xbe0b('0x35')]]={'$like':'%'+_0x5c68bc[_0xbe0b('0x3f')][_0xbe0b('0x4c')]+'%'};return _0x4dca58;}})});}_0x46bc77=_[_0xbe0b('0x4d')]({},_0x46bc77,_0x5c68bc['options']);var _0xeeb3cc={'where':_0x46bc77[_0xbe0b('0x4a')]};return db['OpenchannelMessage'][_0xbe0b('0x2b')](_0xeeb3cc)[_0xbe0b('0x1c')](function(_0x1d9deb){_0x57fbf0[_0xbe0b('0x2b')]=_0x1d9deb;if(_0x5c68bc[_0xbe0b('0x3f')][_0xbe0b('0x4e')]){_0x46bc77[_0xbe0b('0x4f')]=[{'all':!![]}];}return db[_0xbe0b('0x37')]['findAll'](_0x46bc77);})['then'](function(_0x542866){_0x57fbf0['rows']=_0x542866;return _0x57fbf0;})[_0xbe0b('0x1c')](respondWithFilteredResult(_0x44a906,_0x46bc77))['catch'](handleError(_0x44a906,null));};exports['show']=function(_0x1013c8,_0xcc9154){var _0x254a2b={'raw':!![],'where':{'id':_0x1013c8[_0xbe0b('0x50')]['id']}},_0x12f96c={};_0x12f96c[_0xbe0b('0x3c')]=_['keys'](db[_0xbe0b('0x37')]['rawAttributes']);_0x12f96c[_0xbe0b('0x3f')]=_[_0xbe0b('0x3e')](_0x1013c8[_0xbe0b('0x3f')]);_0x12f96c[_0xbe0b('0x40')]=_[_0xbe0b('0x42')](_0x12f96c[_0xbe0b('0x3c')],_0x12f96c[_0xbe0b('0x3f')]);_0x254a2b[_0xbe0b('0x41')]=_[_0xbe0b('0x42')](_0x12f96c['model'],qs['fields'](_0x1013c8[_0xbe0b('0x3f')][_0xbe0b('0x43')]));_0x254a2b[_0xbe0b('0x41')]=_0x254a2b[_0xbe0b('0x41')]['length']?_0x254a2b[_0xbe0b('0x41')]:_0x12f96c[_0xbe0b('0x3c')];if(_0x1013c8[_0xbe0b('0x3f')][_0xbe0b('0x4e')]){_0x254a2b[_0xbe0b('0x4f')]=[{'all':!![]}];}_0x254a2b=_['merge']({},_0x254a2b,_0x1013c8[_0xbe0b('0x51')]);return db[_0xbe0b('0x37')][_0xbe0b('0x52')](_0x254a2b)[_0xbe0b('0x1c')](handleEntityNotFound(_0xcc9154,null))[_0xbe0b('0x1c')](respondWithResult(_0xcc9154,null))[_0xbe0b('0x25')](handleError(_0xcc9154,null));};exports[_0xbe0b('0x53')]=function(_0x3e736b,_0x2ad505){return db[_0xbe0b('0x37')][_0xbe0b('0x53')](_0x3e736b[_0xbe0b('0x54')],{})[_0xbe0b('0x1c')](respondWithResult(_0x2ad505,0xc9))[_0xbe0b('0x25')](handleError(_0x2ad505,null));};exports[_0xbe0b('0x33')]=function(_0x346f16,_0x58c2fd){if(_0x346f16[_0xbe0b('0x54')]['id']){delete _0x346f16[_0xbe0b('0x54')]['id'];}return db[_0xbe0b('0x37')]['find']({'where':{'id':_0x346f16[_0xbe0b('0x50')]['id']}})[_0xbe0b('0x1c')](handleEntityNotFound(_0x58c2fd,null))[_0xbe0b('0x1c')](saveUpdates(_0x346f16[_0xbe0b('0x54')],null))['then'](respondWithResult(_0x58c2fd,null))[_0xbe0b('0x25')](handleError(_0x58c2fd,null));};exports[_0xbe0b('0x34')]=function(_0x2573aa,_0x2b4591){return db[_0xbe0b('0x37')]['find']({'where':{'id':_0x2573aa[_0xbe0b('0x50')]['id']}})[_0xbe0b('0x1c')](handleEntityNotFound(_0x2b4591,null))[_0xbe0b('0x1c')](removeEntity(_0x2b4591,null))['catch'](handleError(_0x2b4591,null));};exports[_0xbe0b('0x55')]=function(_0x45153f,_0x38034a){return db[_0xbe0b('0x37')]['describe']()['then'](respondWithResult(_0x38034a,null))[_0xbe0b('0x25')](handleError(_0x38034a,null));};var interaction_log=require(_0xbe0b('0x56'))('openchannel-interactions');exports[_0xbe0b('0x57')]=function(_0x1a809b,_0xce4ee8,_0x110ebe){var _0x42e6c3={'agent':{},'channel':'openchannel'};if(_0x1a809b[_0xbe0b('0x54')]['id']){delete _0x1a809b[_0xbe0b('0x54')]['id'];}_0x1a809b[_0xbe0b('0x54')][_0xbe0b('0x58')]=!![];_0x1a809b[_0xbe0b('0x54')]['readAt']=moment()[_0xbe0b('0x59')](_0xbe0b('0x5a'));_0x1a809b[_0xbe0b('0x54')][_0xbe0b('0x5b')]=_0x1a809b[_0xbe0b('0x54')][_0xbe0b('0x5b')]||_0x1a809b[_0xbe0b('0x5c')]['id'];_0x42e6c3[_0xbe0b('0x5d')]['id']=_0x1a809b[_0xbe0b('0x54')][_0xbe0b('0x5b')];return db['OpenchannelMessage'][_0xbe0b('0x52')]({'where':{'id':_0x1a809b['params']['id'],'UserId':null}})[_0xbe0b('0x1c')](handleEntityNotFound(_0xce4ee8,null))['then'](saveUpdates(_0x1a809b[_0xbe0b('0x54')],null))[_0xbe0b('0x1c')](function(_0x3b348b){if(_0x3b348b){_0x42e6c3['message']=_0x3b348b[_0xbe0b('0x5e')]({'plain':!![]});return db['OpenchannelInteraction'][_0xbe0b('0x52')]({'where':{'id':_0x3b348b[_0xbe0b('0x5f')]}});}return null;})[_0xbe0b('0x1c')](handleEntityNotFound(_0xce4ee8,null))[_0xbe0b('0x1c')](function(_0x3b9f17){if(_0x3b9f17){return _0x3b9f17[_0xbe0b('0x33')]({'UserId':_0x1a809b[_0xbe0b('0x54')]['UserId'],'read1stAt':_[_0xbe0b('0x60')](_0x3b9f17[_0xbe0b('0x61')])?moment()['format'](_0xbe0b('0x5a')):undefined});}return null;})[_0xbe0b('0x1c')](function(_0x59a881){if(_0x59a881){_0x42e6c3[_0xbe0b('0x62')]=_0x59a881[_0xbe0b('0x5e')]({'plain':!![]});interaction_log[_0xbe0b('0x1d')](_0xbe0b('0x63'),_0x1a809b['user']['id'],_0x1a809b['user'][_0xbe0b('0x35')],_0x1a809b[_0xbe0b('0x5c')][_0xbe0b('0x64')],_0x42e6c3['interaction']['id'],_0x1a809b['body']?JSON['stringify'](_0x1a809b[_0xbe0b('0x54')]):_0xbe0b('0x65'));return respondWithRpcPromise(_0xbe0b('0x66'),_0xbe0b('0x67'),_0x42e6c3);}return null;})[_0xbe0b('0x1c')](function(_0x4d18cb){var _0x20f1c1=_0xbe0b('0x68')+_0x4d18cb[_0xbe0b('0x23')][_0xbe0b('0x69')];return db['sequelize'][_0xbe0b('0x3f')](_0x20f1c1,{'type':db[_0xbe0b('0x6a')][_0xbe0b('0x6b')][_0xbe0b('0x6c')],'raw':!![]})[_0xbe0b('0x1c')](function(_0x43575e){return _0x43575e;});})[_0xbe0b('0x1c')](function(_0x52b4d1){if(_0x52b4d1){_0x42e6c3[_0xbe0b('0x23')][_0xbe0b('0x6d')]=_0x52b4d1[0x0];if(!_0x1a809b[_0xbe0b('0x54')]['UserId'])return;return db[_0xbe0b('0x6e')]['find']({'where':{'id':_0x1a809b[_0xbe0b('0x54')][_0xbe0b('0x5b')],'role':_0xbe0b('0x5d')},'attributes':['id',_0xbe0b('0x35'),_0xbe0b('0x6f'),_0xbe0b('0x70'),'internal'],'raw':!![]});}return null;})['then'](function(_0x42fb7f){if(!_0x42fb7f)return null;_0x42e6c3[_0xbe0b('0x23')][_0xbe0b('0x5d')]=_0x42fb7f;return _0x42e6c3;})[_0xbe0b('0x1c')](function(_0x550171){if(_0x550171){if(_0x1a809b['body'][_0xbe0b('0x71')]){_0x42e6c3['message']['interface']=util[_0xbe0b('0x59')](_0xbe0b('0x72'),_0x1a809b[_0xbe0b('0x5c')][_0xbe0b('0x35')]);_0x42e6c3[_0xbe0b('0x23')]['channel']=_0x42e6c3[_0xbe0b('0x73')];_0x42e6c3[_0xbe0b('0x23')]['motionChannel']=_0x42e6c3[_0xbe0b('0x73')];_0x42e6c3[_0xbe0b('0x23')][_0xbe0b('0x74')]=_0xbe0b('0x57');return respondWithRpcPromise(_0xbe0b('0x75'),_0xbe0b('0x75'),{'event':'acceptmessage','message':_0x42e6c3[_0xbe0b('0x23')]},client9002)['then'](function(){return _0x42e6c3;});}return _0x42e6c3;}return null;})[_0xbe0b('0x1c')](respondWithResult(_0xce4ee8,null))[_0xbe0b('0x25')](handleError(_0xce4ee8,null));};var interaction_log=require(_0xbe0b('0x56'))('openchannel-interactions');exports[_0xbe0b('0x31')]=function(_0x6e59f5,_0x2af8d1,_0x1692d0){var _0x153daf={'agent':{},'channel':'openchannel'};if(_0x6e59f5['body']['id']){delete _0x6e59f5[_0xbe0b('0x54')]['id'];}_0x6e59f5[_0xbe0b('0x54')][_0xbe0b('0x5b')]=_0x6e59f5[_0xbe0b('0x54')][_0xbe0b('0x5b')]||_0x6e59f5[_0xbe0b('0x5c')]['id'];_0x153daf['agent']['id']=_0x6e59f5['body'][_0xbe0b('0x5b')];return db[_0xbe0b('0x37')][_0xbe0b('0x52')]({'where':{'id':_0x6e59f5[_0xbe0b('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2af8d1,null))[_0xbe0b('0x1c')](function(_0x37b899){if(_0x37b899){_0x153daf[_0xbe0b('0x23')]=_0x37b899[_0xbe0b('0x5e')]({'plain':!![]});return db[_0xbe0b('0x76')][_0xbe0b('0x52')]({'where':{'id':_0x37b899[_0xbe0b('0x5f')]}});}return null;})[_0xbe0b('0x1c')](handleEntityNotFound(_0x2af8d1,null))['then'](function(_0x5b9d1a){if(_0x5b9d1a){_0x153daf[_0xbe0b('0x62')]=_0x5b9d1a[_0xbe0b('0x5e')]({'plain':!![]});interaction_log[_0xbe0b('0x1d')](_0xbe0b('0x77'),_0x6e59f5[_0xbe0b('0x5c')]['id'],_0x6e59f5['user'][_0xbe0b('0x35')],_0x6e59f5[_0xbe0b('0x5c')][_0xbe0b('0x64')],_0x153daf['interaction']['id'],_0x6e59f5[_0xbe0b('0x54')]?JSON[_0xbe0b('0x21')](_0x6e59f5['body']):_0xbe0b('0x65'));return respondWithRpcPromise(_0xbe0b('0x78'),_0xbe0b('0x79'),_0x153daf);}return null;})[_0xbe0b('0x1c')](function(_0x16d0a6){var _0x4a1b57=_0xbe0b('0x68')+_0x16d0a6[_0xbe0b('0x23')][_0xbe0b('0x69')];return db[_0xbe0b('0x7a')][_0xbe0b('0x3f')](_0x4a1b57,{'type':db[_0xbe0b('0x6a')][_0xbe0b('0x6b')][_0xbe0b('0x6c')],'raw':!![]})[_0xbe0b('0x1c')](function(_0x132231){return _0x132231;});})[_0xbe0b('0x1c')](function(_0x34874f){if(_0x34874f){_0x153daf['message']['contact']=_0x34874f[0x0];if(!_0x6e59f5['body'][_0xbe0b('0x5b')])return;return db[_0xbe0b('0x6e')][_0xbe0b('0x52')]({'where':{'id':_0x6e59f5[_0xbe0b('0x54')][_0xbe0b('0x5b')],'role':_0xbe0b('0x5d')},'attributes':['id',_0xbe0b('0x35'),_0xbe0b('0x6f'),_0xbe0b('0x70'),_0xbe0b('0x7b')],'raw':!![]});}return null;})[_0xbe0b('0x1c')](function(_0x2e7ba5){if(!_0x2e7ba5)return null;_0x153daf[_0xbe0b('0x23')][_0xbe0b('0x5d')]=_0x2e7ba5;return _0x153daf;})['then'](function(_0x4089a6){if(_0x4089a6){_0x4089a6[_0xbe0b('0x23')][_0xbe0b('0x7c')]=util[_0xbe0b('0x59')]('SIP/%s',_0x6e59f5[_0xbe0b('0x5c')][_0xbe0b('0x35')]);_0x4089a6[_0xbe0b('0x23')][_0xbe0b('0x73')]=_0x153daf['channel'];_0x4089a6['message'][_0xbe0b('0x7d')]=_0x153daf['channel'];_0x4089a6[_0xbe0b('0x23')][_0xbe0b('0x74')]='reject';respondWithRpcPromise('EventManager',_0xbe0b('0x75'),{'event':_0xbe0b('0x7e'),'message':_0x4089a6[_0xbe0b('0x23')]},client9002);return _0x153daf;}return null;})[_0xbe0b('0x1c')](respondWithResult(_0x2af8d1,null))['catch'](handleError(_0x2af8d1,null));};
\ No newline at end of file
index 0cdcd3d..a0b848f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60f6=['save','remove','emit','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x12e73e,_0xab1552){var _0x3d4182=function(_0x2320df){while(--_0x2320df){_0x12e73e['push'](_0x12e73e['shift']());}};_0x3d4182(++_0xab1552);}(_0x60f6,0x149));var _0x660f=function(_0xa7fe70,_0x29962f){_0xa7fe70=_0xa7fe70-0x0;var _0x2b03ac=_0x60f6[_0xa7fe70];return _0x2b03ac;};'use strict';var EventEmitter=require(_0x660f('0x0'));var OpenchannelMessage=require(_0x660f('0x1'))['db'][_0x660f('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x660f('0x3')](0x0);var events={'afterCreate':_0x660f('0x4'),'afterUpdate':'update','afterDestroy':_0x660f('0x5')};function emitEvent(_0x2ca0f7){return function(_0x430038,_0xc4ffc8,_0x23e585){OpenchannelMessageEvents[_0x660f('0x6')](_0x2ca0f7+':'+_0x430038['id'],_0x430038);OpenchannelMessageEvents[_0x660f('0x6')](_0x2ca0f7,_0x430038);_0x23e585(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x660f('0x7')](e,emitEvent(event));}}module[_0x660f('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xd4b2=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelMessage','save'];(function(_0x3ccfa9,_0x26d376){var _0x2a8920=function(_0x571df7){while(--_0x571df7){_0x3ccfa9['push'](_0x3ccfa9['shift']());}};_0x2a8920(++_0x26d376);}(_0xd4b2,0xcc));var _0x2d4b=function(_0x1a6970,_0xecaee2){_0x1a6970=_0x1a6970-0x0;var _0x21d9cd=_0xd4b2[_0x1a6970];return _0x21d9cd;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x2d4b('0x0'))['db'][_0x2d4b('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2d4b('0x2'),'afterUpdate':_0x2d4b('0x3'),'afterDestroy':_0x2d4b('0x4')};function emitEvent(_0x133dbf){return function(_0x383fc1,_0x1d66d3,_0x2ac9b1){OpenchannelMessageEvents['emit'](_0x133dbf+':'+_0x383fc1['id'],_0x383fc1);OpenchannelMessageEvents[_0x2d4b('0x5')](_0x133dbf,_0x383fc1);_0x2ac9b1(null);};}for(var e in events){if(events[_0x2d4b('0x6')](e)){var event=events[e];OpenchannelMessage[_0x2d4b('0x7')](e,emitEvent(event));}}module[_0x2d4b('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index b3ac61b..6905cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4213=['describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','GET','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','catch'];(function(_0x32e28d,_0x385a93){var _0x4459f1=function(_0x5603ea){while(--_0x5603ea){_0x32e28d['push'](_0x32e28d['shift']());}};_0x4459f1(++_0x385a93);}(_0x4213,0x77));var _0x3421=function(_0x4ecca7,_0xf6a49a){_0x4ecca7=_0x4ecca7-0x0;var _0x287f47=_0x4213[_0x4ecca7];return _0x287f47;};'use strict';var _=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var logger=require(_0x3421('0x2'))(_0x3421('0x3'));var moment=require(_0x3421('0x4'));var BPromise=require(_0x3421('0x5'));var rp=require(_0x3421('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3421('0x7'));var config=require('../../config/environment');var attributes=require(_0x3421('0x8'));module[_0x3421('0x9')]=function(_0x2155f8,_0x2a04e0){return _0x2155f8['define'](_0x3421('0xa'),attributes,{'tableName':_0x3421('0xb'),'paranoid':![],'indexes':[{'name':_0x3421('0xc'),'fields':[_0x3421('0xd')],'type':_0x3421('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4ddfce,_0x1f20cf,_0x58d511){var _0x4ff986=_0x2155f8[_0x3421('0xf')];var _0x4b9d24=_0x4ddfce[_0x3421('0x10')]({'plain':!![]});if(_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()==='in'||_0x4b9d24[_0x3421('0x11')][_0x3421('0x12')]()===_0x3421('0x13')&&!_0x4b9d24[_0x3421('0x14')]&&!_['isNil'](_0x4b9d24[_0x3421('0x15')])){_0x4ff986[_0x3421('0x16')][_0x3421('0x17')]({'where':{'id':_0x4b9d24[_0x3421('0x18')]}})[_0x3421('0x19')](function(_0x3f4672){if(_0x3f4672){_0x3f4672[_0x3421('0x1a')]({'lastMsgAt':_0x4b9d24['createdAt'],'lastMsgDirection':_0x4b9d24[_0x3421('0x11')]['toLowerCase']()});}})[_0x3421('0x1b')](function(_0x5257ad){console['error'](_0x5257ad);});}if(_0x4b9d24[_0x3421('0x11')]==='out'&&!_0x4b9d24[_0x3421('0x14')]){var _0x23694b;_0x4ff986['CmContact'][_0x3421('0x1c')]()[_0x3421('0x19')](function(_0x130d3c){return _0x4ff986[_0x3421('0x1d')][_0x3421('0x1e')]({'where':{'id':_0x4b9d24[_0x3421('0x1f')]},'include':[{'model':_0x4ff986[_0x3421('0x16')],'as':_0x3421('0x20'),'where':{'id':_0x4b9d24[_0x3421('0x18')]},'limit':0x1,'include':[{'model':_0x4ff986[_0x3421('0x21')],'as':_0x3421('0x22'),'attributes':_['keys'](_0x130d3c)}]}]});})[_0x3421('0x19')](function(_0x4b59a5){_0x23694b=_0x4b59a5['get']({'plain':!![]});if(_0x23694b&&_0x23694b['replyUri']){logger[_0x3421('0x23')](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x26')](_0x3421('0x27'),_0x4b9d24['id'],_0x23694b[_0x3421('0x28')]));if(_0x23694b[_0x3421('0x20')]&&_0x23694b[_0x3421('0x20')][_0x3421('0x29')]){_0x4b9d24[_0x3421('0x2a')]=_['omit'](_0x23694b['Interactions'][0x0],'Contact');_0x4b9d24[_0x3421('0x22')]=_0x23694b[_0x3421('0x20')][0x0][_0x3421('0x22')];}var _0x1f20cf={'method':'POST','uri':encodeURI(_0x23694b[_0x3421('0x28')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1f20cf['method']){case _0x3421('0x2b'):_0x1f20cf['qs']=_0x4b9d24;break;case'POST':_0x1f20cf[_0x3421('0xd')]=_0x4b9d24;break;}return rp(_0x1f20cf)[_0x3421('0x19')](function(_0x36d75f){logger[_0x3421('0x23')](_0x3421('0x24'),'afterCreate',util[_0x3421('0x26')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x4b9d24['id'],_0x23694b['replyUri']));if(_0x36d75f[_0x3421('0xd')]['threadId']&&_0x36d75f['body'][_0x3421('0x2c')]!=_0x4b9d24['Interaction'][_0x3421('0x2c')]){return _0x4ff986['OpenchannelInteraction'][_0x3421('0x1a')]({'threadId':_0x36d75f[_0x3421('0xd')]['threadId']},{'logging':!![],'where':{'id':_0x4b9d24[_0x3421('0x2a')]['id']}});}else{return;}})[_0x3421('0x19')](function(){return _0x4ddfce[_0x3421('0x1a')]({'read':!![]});})['catch'](function(_0x3a89b6){logger['error'](_0x3421('0x24'),_0x3421('0x25'),util[_0x3421('0x2d')](_0x3a89b6,{'showHidden':![],'depth':null}));_0x58d511();});}else{_0x58d511();}})[_0x3421('0x2e')](function(){_0x58d511();});}else{_0x58d511();}}},'charset':_0x3421('0x2f'),'collate':_0x3421('0x30')});};
\ No newline at end of file
+var _0x93e9=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','out','CmContact','OpenchannelAccount','find','OpenchannelAccountId','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','format','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','GET','info','afterCreate','threadId','finally','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x93e9,0xcc));var _0x993e=function(_0x23cf7b,_0x1261be){_0x23cf7b=_0x23cf7b-0x0;var _0x1d019b=_0x93e9[_0x23cf7b];return _0x1d019b;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var logger=require(_0x993e('0x2'))(_0x993e('0x3'));var moment=require(_0x993e('0x4'));var BPromise=require(_0x993e('0x5'));var rp=require(_0x993e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x993e('0x7'));var attributes=require(_0x993e('0x8'));module[_0x993e('0x9')]=function(_0x45f52e,_0x1da414){return _0x45f52e[_0x993e('0xa')](_0x993e('0xb'),attributes,{'tableName':_0x993e('0xc'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x993e('0xd')],'type':_0x993e('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15d774,_0x280291,_0x2cd389){var _0x27a28f=_0x45f52e[_0x993e('0xf')];var _0x48291a=_0x15d774[_0x993e('0x10')]({'plain':!![]});if(_0x48291a[_0x993e('0x11')]['toLowerCase']()==='in'||_0x48291a['direction'][_0x993e('0x12')]()==='out'&&!_0x48291a[_0x993e('0x13')]&&!_['isNil'](_0x48291a['UserId'])){_0x27a28f[_0x993e('0x14')][_0x993e('0x15')]({'where':{'id':_0x48291a[_0x993e('0x16')]}})[_0x993e('0x17')](function(_0x3e082b){if(_0x3e082b){_0x3e082b[_0x993e('0x18')]({'lastMsgAt':_0x48291a[_0x993e('0x19')],'lastMsgDirection':_0x48291a[_0x993e('0x11')][_0x993e('0x12')]()});}})[_0x993e('0x1a')](function(_0x1a7726){console[_0x993e('0x1b')](_0x1a7726);});}if(_0x48291a[_0x993e('0x11')]===_0x993e('0x1c')&&!_0x48291a[_0x993e('0x13')]){var _0x454475;_0x27a28f[_0x993e('0x1d')]['describe']()[_0x993e('0x17')](function(_0x1acd21){return _0x27a28f[_0x993e('0x1e')][_0x993e('0x1f')]({'where':{'id':_0x48291a[_0x993e('0x20')]},'include':[{'model':_0x27a28f[_0x993e('0x14')],'as':'Interactions','where':{'id':_0x48291a[_0x993e('0x16')]},'limit':0x1,'include':[{'model':_0x27a28f[_0x993e('0x1d')],'as':_0x993e('0x21'),'attributes':_[_0x993e('0x22')](_0x1acd21)}]}]});})[_0x993e('0x17')](function(_0x425ab4){_0x454475=_0x425ab4[_0x993e('0x10')]({'plain':!![]});if(_0x454475&&_0x454475[_0x993e('0x23')]){logger['info'](_0x993e('0x24'),'afterCreate',util[_0x993e('0x25')](_0x993e('0x26'),_0x48291a['id'],_0x454475[_0x993e('0x23')]));if(_0x454475['Interactions']&&_0x454475[_0x993e('0x27')][_0x993e('0x28')]){_0x48291a[_0x993e('0x29')]=_[_0x993e('0x2a')](_0x454475[_0x993e('0x27')][0x0],_0x993e('0x21'));_0x48291a[_0x993e('0x21')]=_0x454475[_0x993e('0x27')][0x0][_0x993e('0x21')];}var _0x280291={'method':_0x993e('0x2b'),'uri':encodeURI(_0x454475[_0x993e('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x280291['method']){case _0x993e('0x2c'):_0x280291['qs']=_0x48291a;break;case _0x993e('0x2b'):_0x280291['body']=_0x48291a;break;}return rp(_0x280291)[_0x993e('0x17')](function(_0x4f5cc1){logger[_0x993e('0x2d')](_0x993e('0x24'),_0x993e('0x2e'),util[_0x993e('0x25')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x48291a['id'],_0x454475['replyUri']));if(_0x4f5cc1[_0x993e('0xd')][_0x993e('0x2f')]&&_0x4f5cc1['body'][_0x993e('0x2f')]!=_0x48291a[_0x993e('0x29')][_0x993e('0x2f')]){return _0x27a28f['OpenchannelInteraction'][_0x993e('0x18')]({'threadId':_0x4f5cc1[_0x993e('0xd')][_0x993e('0x2f')]},{'logging':!![],'where':{'id':_0x48291a[_0x993e('0x29')]['id']}});}else{return;}})[_0x993e('0x17')](function(){return _0x15d774['update']({'read':!![]});})[_0x993e('0x1a')](function(_0x4d1379){logger[_0x993e('0x1b')]('OpenchannelMessage,\x20%s,\x20%s',_0x993e('0x2e'),util['inspect'](_0x4d1379,{'showHidden':![],'depth':null}));_0x2cd389();});}else{_0x2cd389();}})[_0x993e('0x30')](function(){_0x2cd389();});}else{_0x2cd389();}}},'charset':_0x993e('0x31'),'collate':_0x993e('0x32')});};
\ No newline at end of file
index 48c3ae4..677ab3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x40fc97,_0x4aab72){var _0x5dfab7=function(_0xccae00){while(--_0xccae00){_0x40fc97['push'](_0x40fc97['shift']());}};_0x5dfab7(++_0x4aab72);}(_0x1261,0x144));var _0x1126=function(_0x2ab76b,_0x176579){_0x2ab76b=_0x2ab76b-0x0;var _0x201126=_0x1261[_0x2ab76b];return _0x201126;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xc637c0,_0x37fe47){var _0x40ef06=function(_0x248494){while(--_0x248494){_0xc637c0['push'](_0xc637c0['shift']());}};_0x40ef06(++_0x37fe47);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5143a4,_0x3b7164){_0x5143a4=_0x5143a4-0x0;var _0x5d77f9=_0x5f2f[_0x5143a4];return _0x5d77f9;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 3b12a6a..28fe67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa992=['openchannelMessage:','./openchannelMessage.events','emit','register','length'];(function(_0x2ae482,_0x688dcc){var _0x16b0bf=function(_0x1cdf28){while(--_0x1cdf28){_0x2ae482['push'](_0x2ae482['shift']());}};_0x16b0bf(++_0x688dcc);}(_0xa992,0xc4));var _0x2a99=function(_0x21b89e,_0x35feba){_0x21b89e=_0x21b89e-0x0;var _0x50909e=_0xa992[_0x21b89e];return _0x50909e;};'use strict';var OpenchannelMessageEvents=require(_0x2a99('0x0'));var events=['save','remove','update'];function createListener(_0x2d6d8f,_0x12fb59){return function(_0x4e8b6e){_0x12fb59[_0x2a99('0x1')](_0x2d6d8f,_0x4e8b6e);};}function removeListener(_0x4cb7d7,_0x89f03d){return function(){OpenchannelMessageEvents['removeListener'](_0x4cb7d7,_0x89f03d);};}exports[_0x2a99('0x2')]=function(_0x47fb49){for(var _0x44f7a1=0x0,_0x123002=events[_0x2a99('0x3')];_0x44f7a1<_0x123002;_0x44f7a1++){var _0x217687=events[_0x44f7a1];var _0x32cac7=createListener(_0x2a99('0x4')+_0x217687,_0x47fb49);OpenchannelMessageEvents['on'](_0x217687,_0x32cac7);}};
\ No newline at end of file
+var _0x311d=['./openchannelMessage.events','save','remove','update','removeListener','register','length','openchannelMessage:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x311d,0x78));var _0xd311=function(_0xe7f7bb,_0x12d397){_0xe7f7bb=_0xe7f7bb-0x0;var _0x4e5d67=_0x311d[_0xe7f7bb];return _0x4e5d67;};'use strict';var OpenchannelMessageEvents=require(_0xd311('0x0'));var events=[_0xd311('0x1'),_0xd311('0x2'),_0xd311('0x3')];function createListener(_0xa3b001,_0x25a1cd){return function(_0x46f53a){_0x25a1cd['emit'](_0xa3b001,_0x46f53a);};}function removeListener(_0x447959,_0xefaea9){return function(){OpenchannelMessageEvents[_0xd311('0x4')](_0x447959,_0xefaea9);};}exports[_0xd311('0x5')]=function(_0x423de8){for(var _0x4bba52=0x0,_0x24ef7b=events[_0xd311('0x6')];_0x4bba52<_0x24ef7b;_0x4bba52++){var _0x44ffb7=events[_0x4bba52];var _0x171f53=createListener(_0xd311('0x7')+_0x44ffb7,_0x423de8);OpenchannelMessageEvents['on'](_0x44ffb7,_0x171f53);}};
\ No newline at end of file
index 610629a..c3c30ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef10=['post','/:id/users','addAgents','put','update','destroy','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','create'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xef10,0x10c));var _0x0ef1=function(_0x50e6db,_0x28f088){_0x50e6db=_0x50e6db-0x0;var _0x5d7938=_0xef10[_0x50e6db];return _0x5d7938;};'use strict';var multer=require(_0x0ef1('0x0'));var util=require(_0x0ef1('0x1'));var path=require('path');var timeout=require(_0x0ef1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0ef1('0x3'));var auth=require(_0x0ef1('0x4'));var interaction=require(_0x0ef1('0x5'));var config=require(_0x0ef1('0x6'));var controller=require('./openchannelQueue.controller');router[_0x0ef1('0x7')]('/',auth['isAuthenticated'](),controller[_0x0ef1('0x8')]);router[_0x0ef1('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x0ef1('0x7')](_0x0ef1('0x9'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xb')]);router['get'](_0x0ef1('0xc'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xd')]);router['get'](_0x0ef1('0xe'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0xf')]);router[_0x0ef1('0x7')]('/:id/users',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x10')]);router['post']('/',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x11')]);router[_0x0ef1('0x12')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x0ef1('0x12')](_0x0ef1('0x13'),auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x14')]);router[_0x0ef1('0x15')]('/:id',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x16')]);router['delete']('/:id',auth[_0x0ef1('0xa')](),controller[_0x0ef1('0x17')]);router[_0x0ef1('0x18')](_0x0ef1('0xe'),auth[_0x0ef1('0xa')](),controller['removeTeams']);router['delete'](_0x0ef1('0x13'),auth[_0x0ef1('0xa')](),controller['removeAgents']);module[_0x0ef1('0x19')]=router;
\ No newline at end of file
+var _0x63bf=['/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get'];(function(_0x10c282,_0x48db54){var _0x32b936=function(_0xf5487d){while(--_0xf5487d){_0x10c282['push'](_0x10c282['shift']());}};_0x32b936(++_0x48db54);}(_0x63bf,0x1f1));var _0xf63b=function(_0x2cbcc8,_0x17166b){_0x2cbcc8=_0x2cbcc8-0x0;var _0x1fc1b8=_0x63bf[_0x2cbcc8];return _0x1fc1b8;};'use strict';var multer=require(_0xf63b('0x0'));var util=require(_0xf63b('0x1'));var path=require(_0xf63b('0x2'));var timeout=require(_0xf63b('0x3'));var express=require(_0xf63b('0x4'));var router=express[_0xf63b('0x5')]();var fs_extra=require(_0xf63b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf63b('0x7'));var config=require(_0xf63b('0x8'));var controller=require(_0xf63b('0x9'));router['get']('/',auth[_0xf63b('0xa')](),controller[_0xf63b('0xb')]);router[_0xf63b('0xc')](_0xf63b('0xd'),auth[_0xf63b('0xa')](),controller[_0xf63b('0xe')]);router[_0xf63b('0xc')](_0xf63b('0xf'),auth[_0xf63b('0xa')](),controller[_0xf63b('0x10')]);router[_0xf63b('0xc')](_0xf63b('0x11'),auth['isAuthenticated'](),controller[_0xf63b('0x12')]);router['get'](_0xf63b('0x13'),auth['isAuthenticated'](),controller[_0xf63b('0x14')]);router[_0xf63b('0xc')](_0xf63b('0x15'),auth['isAuthenticated'](),controller[_0xf63b('0x16')]);router[_0xf63b('0x17')]('/',auth[_0xf63b('0xa')](),controller[_0xf63b('0x18')]);router[_0xf63b('0x17')](_0xf63b('0x13'),auth[_0xf63b('0xa')](),controller[_0xf63b('0x19')]);router['post'](_0xf63b('0x15'),auth[_0xf63b('0xa')](),controller['addAgents']);router[_0xf63b('0x1a')](_0xf63b('0xf'),auth[_0xf63b('0xa')](),controller[_0xf63b('0x1b')]);router[_0xf63b('0x1c')](_0xf63b('0xf'),auth[_0xf63b('0xa')](),controller['destroy']);router[_0xf63b('0x1c')](_0xf63b('0x13'),auth[_0xf63b('0xa')](),controller['removeTeams']);router['delete'](_0xf63b('0x15'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xf63b('0x1d')]=router;
\ No newline at end of file
index 9f95118..72b2be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d6=['rrmemory','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x5dbf63,_0x31b518){var _0x40122e=function(_0x2163ec){while(--_0x2163ec){_0x5dbf63['push'](_0x5dbf63['shift']());}};_0x40122e(++_0x31b518);}(_0xb5d6,0x1b5));var _0x6b5d=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xb5d6[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require('sequelize');module[_0x6b5d('0x0')]={'name':{'type':Sequelize[_0x6b5d('0x1')],'unique':_0x6b5d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6b5d('0x1')]},'timeout':{'type':Sequelize[_0x6b5d('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x6b5d('0x4'),_0x6b5d('0x5'),_0x6b5d('0x6'))}};
\ No newline at end of file
+var _0xdec3=['INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','STRING'];(function(_0x1930ee,_0x3660b5){var _0x320c74=function(_0x3f85a2){while(--_0x3f85a2){_0x1930ee['push'](_0x1930ee['shift']());}};_0x320c74(++_0x3660b5);}(_0xdec3,0x1ee));var _0x3dec=function(_0x391699,_0x34c62e){_0x391699=_0x391699-0x0;var _0x2cc4b7=_0xdec3[_0x391699];return _0x2cc4b7;};'use strict';var Sequelize=require(_0x3dec('0x0'));module[_0x3dec('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3dec('0x2')]},'timeout':{'type':Sequelize[_0x3dec('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x3dec('0x4')](_0x3dec('0x5'),'beepall',_0x3dec('0x6'))}};
\ No newline at end of file
index 91a02a9..402e717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0f1=['OpenchannelQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','compact','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','emit','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./openchannelQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','OpenchannelQueues','UserProfileResource','stack','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','length','OpenchannelQueueId','UserOpenchannelQueue','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','findOne','Team','getTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId'];(function(_0x1d2e8d,_0x37b997){var _0x468e8b=function(_0x4a0a30){while(--_0x4a0a30){_0x1d2e8d['push'](_0x1d2e8d['shift']());}};_0x468e8b(++_0x37b997);}(_0xb0f1,0x1be));var _0x1b0f=function(_0x51ac09,_0x383098){_0x51ac09=_0x51ac09-0x0;var _0x3f827d=_0xb0f1[_0x51ac09];return _0x3f827d;};'use strict';var emlformat=require(_0x1b0f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1b0f('0x1'));var jsonpatch=require(_0x1b0f('0x2'));var rp=require(_0x1b0f('0x3'));var moment=require(_0x1b0f('0x4'));var BPromise=require(_0x1b0f('0x5'));var Mustache=require(_0x1b0f('0x6'));var util=require(_0x1b0f('0x7'));var path=require(_0x1b0f('0x8'));var sox=require(_0x1b0f('0x9'));var csv=require(_0x1b0f('0xa'));var ejs=require(_0x1b0f('0xb'));var fs=require('fs');var fs_extra=require(_0x1b0f('0xc'));var _=require('lodash');var squel=require(_0x1b0f('0xd'));var crypto=require(_0x1b0f('0xe'));var jsforce=require(_0x1b0f('0xf'));var deskjs=require(_0x1b0f('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1b0f('0x11'));var Redis=require(_0x1b0f('0x12'));var authService=require(_0x1b0f('0x13'));var qs=require(_0x1b0f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b0f('0x15'))('api');var utils=require(_0x1b0f('0x16'));var config=require(_0x1b0f('0x17'));var licenseUtil=require(_0x1b0f('0x18'));var db=require(_0x1b0f('0x19'))['db'];config['redis']=_['defaults'](config[_0x1b0f('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b0f('0x1a')]));require(_0x1b0f('0x1b'))['register'](socket);function respondWithStatusCode(_0x5218af,_0x5afc88){_0x5afc88=_0x5afc88||0xcc;return function(_0x58fea7){if(_0x58fea7){return _0x5218af[_0x1b0f('0x1c')](_0x5afc88);}return _0x5218af[_0x1b0f('0x1d')](_0x5afc88)[_0x1b0f('0x1e')]();};}function respondWithResult(_0xdd697a,_0x24e2bf){_0x24e2bf=_0x24e2bf||0xc8;return function(_0x28c160){if(_0x28c160){return _0xdd697a[_0x1b0f('0x1d')](_0x24e2bf)[_0x1b0f('0x1f')](_0x28c160);}};}function respondWithFilteredResult(_0x385625,_0x54f674){return function(_0x4c1073){if(_0x4c1073){var _0x3177e6=typeof _0x54f674[_0x1b0f('0x20')]===_0x1b0f('0x21')&&typeof _0x54f674[_0x1b0f('0x22')]===_0x1b0f('0x21');var _0x5503b4=_0x4c1073[_0x1b0f('0x23')];var _0x2c273f=_0x3177e6?0x0:_0x54f674[_0x1b0f('0x20')];var _0x3d3310=_0x3177e6?_0x4c1073[_0x1b0f('0x23')]:_0x54f674[_0x1b0f('0x20')]+_0x54f674[_0x1b0f('0x22')];var _0x465e7d;if(_0x3d3310>=_0x5503b4){_0x3d3310=_0x5503b4;_0x465e7d=0xc8;}else{_0x465e7d=0xce;}_0x385625[_0x1b0f('0x1d')](_0x465e7d);return _0x385625[_0x1b0f('0x24')]('Content-Range',_0x2c273f+'-'+_0x3d3310+'/'+_0x5503b4)[_0x1b0f('0x1f')](_0x4c1073);}return null;};}function patchUpdates(_0x1a4fb8){return function(_0x40bd44){try{jsonpatch[_0x1b0f('0x25')](_0x40bd44,_0x1a4fb8,!![]);}catch(_0x20ccfd){return BPromise[_0x1b0f('0x26')](_0x20ccfd);}return _0x40bd44[_0x1b0f('0x27')]();};}function saveUpdates(_0x525eae,_0x3770b7){return function(_0x3d51dd){if(_0x3d51dd){return _0x3d51dd[_0x1b0f('0x28')](_0x525eae)[_0x1b0f('0x29')](function(_0x1b61ed){return _0x1b61ed;});}return null;};}function removeEntity(_0x2f7cea,_0x3d50eb){return function(_0x2aa0d3){if(_0x2aa0d3){return _0x2aa0d3['destroy']()[_0x1b0f('0x29')](function(){var _0x44e81f=_0x2aa0d3[_0x1b0f('0x2a')]({'plain':!![]});var _0x3be3a8=_0x1b0f('0x2b');return db[_0x1b0f('0x2c')]['destroy']({'where':{'type':_0x3be3a8,'resourceId':_0x44e81f['id']}})[_0x1b0f('0x29')](function(){return _0x2aa0d3;});})[_0x1b0f('0x29')](function(){_0x2f7cea[_0x1b0f('0x1d')](0xcc)[_0x1b0f('0x1e')]();});}};}function handleEntityNotFound(_0x24584b,_0x25da34){return function(_0x41ec84){if(!_0x41ec84){_0x24584b[_0x1b0f('0x1c')](0x194);}return _0x41ec84;};}function handleError(_0xdf1b4,_0xc05529){_0xc05529=_0xc05529||0x1f4;return function(_0x1062f4){logger['error'](_0x1062f4[_0x1b0f('0x2d')]);if(_0x1062f4['name']){delete _0x1062f4[_0x1b0f('0x2e')];}_0xdf1b4[_0x1b0f('0x1d')](_0xc05529)[_0x1b0f('0x2f')](_0x1062f4);};}exports['index']=function(_0x354428,_0x1868b8){var _0x1d04fc={},_0x2d229e={},_0x394ee8={'count':0x0,'rows':[]};var _0x48fece=_[_0x1b0f('0x30')](db['OpenchannelQueue'][_0x1b0f('0x31')],function(_0xd642cd){return{'name':_0xd642cd['fieldName'],'type':_0xd642cd[_0x1b0f('0x32')][_0x1b0f('0x33')]};});_0x2d229e[_0x1b0f('0x34')]=_[_0x1b0f('0x30')](_0x48fece,'name');_0x2d229e[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x354428[_0x1b0f('0x35')]);_0x2d229e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x2d229e[_0x1b0f('0x34')],_0x2d229e[_0x1b0f('0x35')]);_0x1d04fc[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x2d229e[_0x1b0f('0x34')],qs[_0x1b0f('0x3a')](_0x354428['query'][_0x1b0f('0x3a')]));_0x1d04fc['attributes']=_0x1d04fc[_0x1b0f('0x39')]['length']?_0x1d04fc['attributes']:_0x2d229e[_0x1b0f('0x34')];if(!_0x354428['query'][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x1d04fc[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x354428['query']['limit']);_0x1d04fc[_0x1b0f('0x20')]=qs[_0x1b0f('0x20')](_0x354428[_0x1b0f('0x35')][_0x1b0f('0x20')]);}_0x1d04fc[_0x1b0f('0x3d')]=qs['sort'](_0x354428[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x1d04fc[_0x1b0f('0x3f')]=qs[_0x1b0f('0x37')](_[_0x1b0f('0x40')](_0x354428[_0x1b0f('0x35')],_0x2d229e['filters']),_0x48fece);if(_0x354428[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x1d04fc[_0x1b0f('0x3f')]=_[_0x1b0f('0x42')](_0x1d04fc[_0x1b0f('0x3f')],{'$or':_[_0x1b0f('0x30')](_0x48fece,function(_0x14ff1a){if(_0x14ff1a['type']!==_0x1b0f('0x43')){var _0x1c8dde={};_0x1c8dde[_0x14ff1a[_0x1b0f('0x2e')]]={'$like':'%'+_0x354428[_0x1b0f('0x35')]['filter']+'%'};return _0x1c8dde;}})});}_0x1d04fc=_[_0x1b0f('0x42')]({},_0x1d04fc,_0x354428[_0x1b0f('0x44')]);var _0x28e3c4={'where':_0x1d04fc[_0x1b0f('0x3f')]};return db[_0x1b0f('0x45')][_0x1b0f('0x23')](_0x28e3c4)[_0x1b0f('0x29')](function(_0x1da925){_0x394ee8[_0x1b0f('0x23')]=_0x1da925;if(_0x354428[_0x1b0f('0x35')][_0x1b0f('0x46')]){_0x1d04fc[_0x1b0f('0x47')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x1b0f('0x48')](_0x1d04fc);})[_0x1b0f('0x29')](function(_0x573288){_0x394ee8[_0x1b0f('0x49')]=_0x573288;return _0x394ee8;})[_0x1b0f('0x29')](respondWithFilteredResult(_0x1868b8,_0x1d04fc))[_0x1b0f('0x4a')](handleError(_0x1868b8,null));};exports[_0x1b0f('0x4b')]=function(_0xd1fe49,_0x1d169c){var _0x5e2d3b={'raw':!![],'where':{'id':_0xd1fe49[_0x1b0f('0x4c')]['id']}},_0x4aeda={};_0x4aeda['model']=_[_0x1b0f('0x36')](db[_0x1b0f('0x45')][_0x1b0f('0x31')]);_0x4aeda[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0xd1fe49[_0x1b0f('0x35')]);_0x4aeda['filters']=_[_0x1b0f('0x38')](_0x4aeda[_0x1b0f('0x34')],_0x4aeda[_0x1b0f('0x35')]);_0x5e2d3b[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x4aeda['model'],qs['fields'](_0xd1fe49[_0x1b0f('0x35')]['fields']));_0x5e2d3b[_0x1b0f('0x39')]=_0x5e2d3b['attributes']['length']?_0x5e2d3b[_0x1b0f('0x39')]:_0x4aeda[_0x1b0f('0x34')];if(_0xd1fe49[_0x1b0f('0x35')][_0x1b0f('0x46')]){_0x5e2d3b[_0x1b0f('0x47')]=[{'all':!![]}];}_0x5e2d3b=_[_0x1b0f('0x42')]({},_0x5e2d3b,_0xd1fe49['options']);return db[_0x1b0f('0x45')][_0x1b0f('0x4d')](_0x5e2d3b)[_0x1b0f('0x29')](handleEntityNotFound(_0x1d169c,null))[_0x1b0f('0x29')](respondWithResult(_0x1d169c,null))['catch'](handleError(_0x1d169c,null));};exports[_0x1b0f('0x4e')]=function(_0x37ac40,_0x577030){return db[_0x1b0f('0x45')][_0x1b0f('0x4e')](_0x37ac40[_0x1b0f('0x4f')],{})[_0x1b0f('0x29')](function(_0x432492){var _0x49f6b9=_0x37ac40[_0x1b0f('0x50')]['get']({'plain':!![]});if(!_0x49f6b9)throw new Error(_0x1b0f('0x51'));if(_0x49f6b9[_0x1b0f('0x52')]===_0x1b0f('0x50')){var _0x88cc0c=_0x432492['get']({'plain':!![]});var _0x264d59='OpenchannelQueues';return db[_0x1b0f('0x53')][_0x1b0f('0x4d')]({'where':{'name':_0x264d59,'userProfileId':_0x49f6b9[_0x1b0f('0x54')]},'raw':!![]})[_0x1b0f('0x29')](function(_0x12da16){if(_0x12da16&&_0x12da16['autoAssociation']===0x0){return db[_0x1b0f('0x2c')][_0x1b0f('0x4e')]({'name':_0x88cc0c[_0x1b0f('0x2e')],'resourceId':_0x88cc0c['id'],'type':_0x12da16['name'],'sectionId':_0x12da16['id']},{})[_0x1b0f('0x29')](function(){return _0x432492;});}else{return _0x432492;}})[_0x1b0f('0x4a')](function(_0x4bc81a){logger[_0x1b0f('0x55')](_0x1b0f('0x56'),_0x4bc81a);throw _0x4bc81a;});}return _0x432492;})[_0x1b0f('0x29')](respondWithResult(_0x577030,0xc9))[_0x1b0f('0x4a')](handleError(_0x577030,null));};exports[_0x1b0f('0x28')]=function(_0x38df47,_0x3c3887){if(_0x38df47[_0x1b0f('0x4f')]['id']){delete _0x38df47[_0x1b0f('0x4f')]['id'];}return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0x38df47[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3c3887,null))[_0x1b0f('0x29')](saveUpdates(_0x38df47['body'],null))[_0x1b0f('0x29')](respondWithResult(_0x3c3887,null))[_0x1b0f('0x4a')](handleError(_0x3c3887,null));};exports[_0x1b0f('0x57')]=function(_0x1e9cb6,_0x248aa0){return db['OpenchannelQueue'][_0x1b0f('0x4d')]({'where':{'id':_0x1e9cb6['params']['id']}})['then'](handleEntityNotFound(_0x248aa0,null))[_0x1b0f('0x29')](removeEntity(_0x248aa0,null))[_0x1b0f('0x4a')](handleError(_0x248aa0,null));};exports[_0x1b0f('0x58')]=function(_0x3b577c,_0x437655){return db[_0x1b0f('0x45')][_0x1b0f('0x58')]()['then'](respondWithResult(_0x437655,null))[_0x1b0f('0x4a')](handleError(_0x437655,null));};exports['getMembers']=function(_0x4c6225,_0x122ac6,_0x331d6d){var _0x48e445={'raw':!![],'where':{}},_0x13453e={},_0x2d62df;return db[_0x1b0f('0x45')]['findOne']({'where':{'id':_0x4c6225[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x122ac6,null))[_0x1b0f('0x29')](function(_0x404f33){if(_0x404f33){_0x2d62df=_0x404f33['get']({'plain':!![]});_0x13453e['model']=_['keys'](db['UserOpenchannelQueue'][_0x1b0f('0x31')]);_0x13453e[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x4c6225[_0x1b0f('0x35')]);_0x13453e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x13453e['model'],_0x13453e[_0x1b0f('0x35')]);_0x48e445[_0x1b0f('0x39')]=_[_0x1b0f('0x38')](_0x13453e[_0x1b0f('0x34')],qs[_0x1b0f('0x3a')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x48e445[_0x1b0f('0x39')]=_0x48e445[_0x1b0f('0x39')][_0x1b0f('0x59')]?_0x48e445[_0x1b0f('0x39')]:_0x13453e[_0x1b0f('0x34')];if(!_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x48e445[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x4c6225[_0x1b0f('0x35')]['limit']);_0x48e445['offset']=qs[_0x1b0f('0x20')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x20')]);}_0x48e445['order']=qs[_0x1b0f('0x3e')](_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x48e445[_0x1b0f('0x3f')]=qs['filters'](_[_0x1b0f('0x40')](_0x4c6225[_0x1b0f('0x35')],_0x13453e['filters']));_0x48e445[_0x1b0f('0x3f')][_0x1b0f('0x5a')]=_0x404f33['id'];if(_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x48e445[_0x1b0f('0x3f')]=_['merge'](_0x48e445['where'],{'$or':_[_0x1b0f('0x30')](_0x48e445['attributes'],function(_0x3d004a){var _0x2c26b4={};_0x2c26b4[_0x3d004a]={'$like':'%'+_0x4c6225[_0x1b0f('0x35')][_0x1b0f('0x41')]+'%'};return _0x2c26b4;})});}_0x48e445=_[_0x1b0f('0x42')]({},_0x48e445,_0x4c6225['options']);return db[_0x1b0f('0x5b')][_0x1b0f('0x48')](_0x48e445);}})[_0x1b0f('0x29')](function(_0x108ae9){if(_0x108ae9){return db[_0x1b0f('0x5c')]['findAndCountAll']({'where':{'id':_[_0x1b0f('0x30')](_0x108ae9,_0x1b0f('0x5d')),'role':_0x1b0f('0x5e')},'attributes':['id',_0x1b0f('0x2e'),_0x1b0f('0x5f'),_0x1b0f('0x60'),_0x1b0f('0x61')]});}})[_0x1b0f('0x29')](function(_0x59db24){if(_0x59db24){return{'count':_0x59db24[_0x1b0f('0x23')],'rows':_[_0x1b0f('0x30')](_0x59db24[_0x1b0f('0x49')],function(_0x632682){return{'membername':_0x632682['name'],'UserId':_0x632682['id'],'queue_name':_0x2d62df[_0x1b0f('0x2e')],'OpenchannelQueueId':_0x2d62df['id'],'interface':util[_0x1b0f('0x62')]('%s/%s',_0x1b0f('0x63'),_0x632682['name']),'penalty':0x0,'paused':_0x632682[_0x1b0f('0x5f')],'createdAt':_0x632682[_0x1b0f('0x61')],'updatedAt':_0x632682[_0x1b0f('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1b0f('0x29')](respondWithFilteredResult(_0x122ac6,_0x48e445))[_0x1b0f('0x4a')](handleError(_0x122ac6,null));};exports['getTeams']=function(_0x105e60,_0x174039,_0xba7e59){var _0x392b53={};var _0x4c1fbc={};var _0x491c02;var _0x4b3f09;return db[_0x1b0f('0x45')][_0x1b0f('0x64')]({'where':{'id':_0x105e60[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x174039,null))[_0x1b0f('0x29')](function(_0x1584ee){if(_0x1584ee){_0x491c02=_0x1584ee;_0x4c1fbc['model']=_[_0x1b0f('0x36')](db[_0x1b0f('0x65')][_0x1b0f('0x31')]);_0x4c1fbc[_0x1b0f('0x35')]=_[_0x1b0f('0x36')](_0x105e60['query']);_0x4c1fbc['filters']=_[_0x1b0f('0x38')](_0x4c1fbc[_0x1b0f('0x34')],_0x4c1fbc[_0x1b0f('0x35')]);_0x392b53[_0x1b0f('0x39')]=_['intersection'](_0x4c1fbc[_0x1b0f('0x34')],qs['fields'](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x392b53[_0x1b0f('0x39')]=_0x392b53[_0x1b0f('0x39')][_0x1b0f('0x59')]?_0x392b53[_0x1b0f('0x39')]:_0x4c1fbc[_0x1b0f('0x34')];_0x392b53[_0x1b0f('0x3d')]=qs['sort'](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x392b53['where']=qs[_0x1b0f('0x37')](_['pick'](_0x105e60[_0x1b0f('0x35')],_0x4c1fbc[_0x1b0f('0x37')]));if(_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x41')]){_0x392b53[_0x1b0f('0x3f')]=_['merge'](_0x392b53[_0x1b0f('0x3f')],{'$or':_[_0x1b0f('0x30')](_0x392b53[_0x1b0f('0x39')],function(_0x517aef){var _0x4bb697={};_0x4bb697[_0x517aef]={'$like':'%'+_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x41')]+'%'};return _0x4bb697;})});}_0x392b53=_[_0x1b0f('0x42')]({},_0x392b53,_0x105e60['options']);return _0x491c02[_0x1b0f('0x66')](_0x392b53);}})[_0x1b0f('0x29')](function(_0x4ef9bb){if(_0x4ef9bb){_0x4b3f09=_0x4ef9bb[_0x1b0f('0x59')];if(!_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x392b53[_0x1b0f('0x22')]=qs[_0x1b0f('0x22')](_0x105e60[_0x1b0f('0x35')]['limit']);_0x392b53[_0x1b0f('0x20')]=qs[_0x1b0f('0x20')](_0x105e60[_0x1b0f('0x35')][_0x1b0f('0x20')]);}return _0x491c02[_0x1b0f('0x66')](_0x392b53);}})[_0x1b0f('0x29')](function(_0x52914b){if(_0x52914b){return _0x52914b?{'count':_0x4b3f09,'rows':_0x52914b}:null;}})[_0x1b0f('0x29')](respondWithResult(_0x174039,null))[_0x1b0f('0x4a')](handleError(_0x174039,null));};exports['addTeams']=function(_0x10fdee,_0xc6752d,_0x379a38){var _0xa2503b=_0x10fdee[_0x1b0f('0x4f')][_0x1b0f('0x67')];return db['Team'][_0x1b0f('0x48')]({'where':{'id':_0xa2503b},'attributes':['id'],'include':[{'model':db[_0x1b0f('0x5c')],'as':_0x1b0f('0x68'),'attributes':['id',_0x1b0f('0x2e'),'online',_0x1b0f('0x69'),_0x1b0f('0x6a')],'raw':!![]}]})[_0x1b0f('0x29')](function(_0xd72d54){if(_0xd72d54){var _0x1cb421=_[_0x1b0f('0x6b')](_0xd72d54,function(_0x349c19){var _0x8f549e=_0x349c19['get']({'plain':!![]});return _0x8f549e[_0x1b0f('0x68')];});return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0x10fdee[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](function(_0x4e60b8){return db[_0x1b0f('0x6c')][_0x1b0f('0x6d')](function(_0x447246){return _0x4e60b8[_0x1b0f('0x6e')](_0xa2503b,{'transaction':_0x447246})[_0x1b0f('0x29')](function(){return BPromise[_0x1b0f('0x6f')](_0x1cb421,function(_0x2e1c63){return db['UserOpenchannelQueue'][_0x1b0f('0x70')]({'where':{'UserId':_0x2e1c63['id'],'OpenchannelQueueId':_0x10fdee[_0x1b0f('0x4c')]['id']},'transaction':_0x447246});});})[_0x1b0f('0x29')](function(){_0x1cb421['forEach'](function(_0x1dc0be){socket['emit'](_0x1b0f('0x71'),{'UserId':_0x1dc0be['id'],'OpenchannelQueueId':_0x4e60b8['id']});});});});});}})[_0x1b0f('0x29')](respondWithStatusCode(_0xc6752d,null))[_0x1b0f('0x4a')](handleError(_0xc6752d,null));};exports[_0x1b0f('0x72')]=function(_0x3157bc,_0x35d1d8,_0x57bad2){return db['Team'][_0x1b0f('0x48')]({'where':{'id':_0x3157bc[_0x1b0f('0x35')][_0x1b0f('0x67')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x35d1d8,null))[_0x1b0f('0x29')](function(_0x402ae4){var _0x5434dc=_[_0x1b0f('0x30')](_0x402ae4,'id');var _0x1fa90d=[];var _0x3868dc=[];var _0xcb25a1=squel[_0x1b0f('0x73')]();_0xcb25a1[_0x1b0f('0x74')](_0x1b0f('0x75'))[_0x1b0f('0x76')](_0x1b0f('0x77'),'tq')['join'](_0x1b0f('0x78'),'ut',_0x1b0f('0x79'))[_0x1b0f('0x3f')](_0x1b0f('0x7a'),_0x3157bc[_0x1b0f('0x4c')]['id']);for(var _0x12600d=0x0;_0x12600d<_0x402ae4['length'];_0x12600d+=0x1){let _0x24d0e2=_0x402ae4[_0x12600d];for(var _0x4e8253=0x0;_0x4e8253<_0x24d0e2[_0x1b0f('0x68')][_0x1b0f('0x59')];_0x4e8253+=0x1){let _0x55b518=_0x24d0e2['Agents'][_0x4e8253];var _0x58f3e5=_0xcb25a1[_0x1b0f('0x7b')]();_0x58f3e5[_0x1b0f('0x3f')]('ut.UserId\x20=\x20?',_0x55b518['id']);_0x3868dc[_0x1b0f('0x7c')](db[_0x1b0f('0x6c')]['query'](_0x58f3e5[_0x1b0f('0x7d')](),{'type':db[_0x1b0f('0x6c')][_0x1b0f('0x7e')][_0x1b0f('0x7f')]})[_0x1b0f('0x29')](function(_0x47fd58){if(_0x47fd58[_0x1b0f('0x59')]===0x1){return _0x55b518['id'];}else{var _0x43a1cd=_[_0x1b0f('0x80')](_[_0x1b0f('0x30')](_0x47fd58,_0x1b0f('0x81')),function(_0x303821){return _['includes'](_0x5434dc,_0x303821);});if(_0x43a1cd){return _0x55b518['id'];}}}));}}return BPromise[_0x1b0f('0x82')](_0x3868dc)[_0x1b0f('0x29')](function(_0x5b949b){_0x1fa90d=_(_0x1fa90d)['union'](_0x5b949b)[_0x1b0f('0x83')]()[_0x1b0f('0x84')]();return db['OpenchannelQueue'][_0x1b0f('0x4d')]({'where':{'id':_0x3157bc[_0x1b0f('0x4c')]['id']}})[_0x1b0f('0x29')](function(_0x399a9f){return db[_0x1b0f('0x6c')][_0x1b0f('0x6d')](function(_0xb87d35){return _0x399a9f[_0x1b0f('0x72')](_0x3157bc[_0x1b0f('0x35')][_0x1b0f('0x67')],{'transaction':_0xb87d35})['then'](function(){if(!_[_0x1b0f('0x85')](_0x1fa90d)){return _0x399a9f[_0x1b0f('0x86')](_0x1fa90d,{'transaction':_0xb87d35});}})[_0x1b0f('0x29')](function(){_0x1fa90d['forEach'](function(_0x33c8ce){socket['emit'](_0x1b0f('0x87'),{'UserId':_0x33c8ce,'OpenchannelQueueId':_0x399a9f['id']});});});});});});})[_0x1b0f('0x29')](respondWithStatusCode(_0x35d1d8,null))[_0x1b0f('0x4a')](handleError(_0x35d1d8,null));};exports['addAgents']=function(_0xdeaddb,_0x4351d0,_0x384bd9){return db[_0x1b0f('0x45')][_0x1b0f('0x4d')]({'where':{'id':_0xdeaddb[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4351d0,null))[_0x1b0f('0x29')](function(_0x2edbe7){if(_0x2edbe7){return _0x2edbe7[_0x1b0f('0x88')](_0xdeaddb[_0x1b0f('0x4f')][_0x1b0f('0x67')],_[_0x1b0f('0x89')](_0xdeaddb[_0x1b0f('0x4f')],[_0x1b0f('0x67'),'id'])||{})[_0x1b0f('0x8a')](function(_0xff4152){for(var _0x3312ac=0x0;_0x3312ac<_0xdeaddb[_0x1b0f('0x4f')][_0x1b0f('0x67')][_0x1b0f('0x59')];_0x3312ac+=0x1){socket[_0x1b0f('0x8b')](_0x1b0f('0x71'),{'UserId':Number(_0xdeaddb[_0x1b0f('0x4f')]['ids'][_0x3312ac]),'OpenchannelQueueId':Number(_0xdeaddb[_0x1b0f('0x4c')]['id'])});}return _0xff4152;});}})[_0x1b0f('0x29')](respondWithResult(_0x4351d0,null))['catch'](handleError(_0x4351d0,null));};exports[_0x1b0f('0x86')]=function(_0x4f143b,_0xed3e73,_0x1e8cf7){return db[_0x1b0f('0x45')]['find']({'where':{'id':_0x4f143b[_0x1b0f('0x4c')]['id']}})['then'](handleEntityNotFound(_0xed3e73,null))[_0x1b0f('0x29')](function(_0x162cec){if(_0x162cec){return _0x162cec[_0x1b0f('0x86')](_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')])[_0x1b0f('0x29')](function(){if(_[_0x1b0f('0x8c')](_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')])){for(var _0x13f508=0x0;_0x13f508<_0x4f143b['query'][_0x1b0f('0x67')]['length'];_0x13f508+=0x1){socket['emit'](_0x1b0f('0x87'),{'UserId':Number(_0x4f143b[_0x1b0f('0x35')][_0x1b0f('0x67')][_0x13f508]),'OpenchannelQueueId':Number(_0x4f143b[_0x1b0f('0x4c')]['id'])});}}else{socket[_0x1b0f('0x8b')]('userOpenchannelQueue:remove',{'UserId':Number(_0x4f143b['query']['ids']),'OpenchannelQueueId':Number(_0x4f143b[_0x1b0f('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0xed3e73,null))['catch'](handleError(_0xed3e73,null));};exports['getAgents']=function(_0x4c42ba,_0x1d9873,_0x3b862c){var _0x113d5a={};var _0x5be28e={};var _0x32b597;var _0x528552;return db[_0x1b0f('0x45')][_0x1b0f('0x64')]({'where':{'id':_0x4c42ba['params']['id']}})[_0x1b0f('0x29')](handleEntityNotFound(_0x1d9873,null))[_0x1b0f('0x29')](function(_0x4a2d45){if(_0x4a2d45){_0x32b597=_0x4a2d45;_0x5be28e[_0x1b0f('0x34')]=_[_0x1b0f('0x36')](db[_0x1b0f('0x5c')][_0x1b0f('0x31')]);_0x5be28e['query']=_[_0x1b0f('0x36')](_0x4c42ba[_0x1b0f('0x35')]);_0x5be28e[_0x1b0f('0x37')]=_[_0x1b0f('0x38')](_0x5be28e[_0x1b0f('0x34')],_0x5be28e[_0x1b0f('0x35')]);_0x113d5a[_0x1b0f('0x39')]=_['intersection'](_0x5be28e[_0x1b0f('0x34')],qs['fields'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3a')]));_0x113d5a['attributes']=_0x113d5a['attributes'][_0x1b0f('0x59')]?_0x113d5a[_0x1b0f('0x39')]:_0x5be28e[_0x1b0f('0x34')];_0x113d5a[_0x1b0f('0x3d')]=qs[_0x1b0f('0x3e')](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3e')]);_0x113d5a['where']=qs[_0x1b0f('0x37')](_[_0x1b0f('0x40')](_0x4c42ba[_0x1b0f('0x35')],_0x5be28e[_0x1b0f('0x37')]));if(_0x4c42ba[_0x1b0f('0x35')]['filter']){_0x113d5a[_0x1b0f('0x3f')]=_[_0x1b0f('0x42')](_0x113d5a[_0x1b0f('0x3f')],{'$or':_['map'](_0x113d5a[_0x1b0f('0x39')],function(_0x59bbce){var _0x48997f={};_0x48997f[_0x59bbce]={'$like':'%'+_0x4c42ba[_0x1b0f('0x35')]['filter']+'%'};return _0x48997f;})});}_0x113d5a=_[_0x1b0f('0x42')]({},_0x113d5a,_0x4c42ba[_0x1b0f('0x44')]);return _0x32b597[_0x1b0f('0x8d')](_0x113d5a);}})[_0x1b0f('0x29')](function(_0x2b2bf0){if(_0x2b2bf0){_0x528552=_0x2b2bf0[_0x1b0f('0x59')];if(!_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x3b')](_0x1b0f('0x3c'))){_0x113d5a[_0x1b0f('0x22')]=qs['limit'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x22')]);_0x113d5a[_0x1b0f('0x20')]=qs['offset'](_0x4c42ba[_0x1b0f('0x35')][_0x1b0f('0x20')]);}return _0x32b597['getAgents'](_0x113d5a);}})[_0x1b0f('0x29')](function(_0x251f96){if(_0x251f96){return _0x251f96?{'count':_0x528552,'rows':_0x251f96}:null;}})[_0x1b0f('0x29')](respondWithResult(_0x1d9873,null))[_0x1b0f('0x4a')](handleError(_0x1d9873,null));};
\ No newline at end of file
+var _0x1eb3=['squel','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','localhost','socket.io-emitter','redis','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','OpenchannelQueues','error','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','OpenchannelQueue','rows','catch','show','params','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','each','emit','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','push','toString','SELECT','TeamId','includes','compact','transaction','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','spread','userOpenchannelQueue:save','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash'];(function(_0x491842,_0x4ca9af){var _0x54b04e=function(_0x1f62b8){while(--_0x1f62b8){_0x491842['push'](_0x491842['shift']());}};_0x54b04e(++_0x4ca9af);}(_0x1eb3,0x109));var _0x31eb=function(_0x1d1f62,_0x4b0a58){_0x1d1f62=_0x1d1f62-0x0;var _0x41e6d0=_0x1eb3[_0x1d1f62];return _0x41e6d0;};'use strict';var emlformat=require(_0x31eb('0x0'));var rimraf=require(_0x31eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x31eb('0x2'));var rp=require(_0x31eb('0x3'));var moment=require(_0x31eb('0x4'));var BPromise=require(_0x31eb('0x5'));var Mustache=require('mustache');var util=require(_0x31eb('0x6'));var path=require(_0x31eb('0x7'));var sox=require('sox');var csv=require(_0x31eb('0x8'));var ejs=require(_0x31eb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x31eb('0xa'));var squel=require(_0x31eb('0xb'));var crypto=require(_0x31eb('0xc'));var jsforce=require(_0x31eb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x31eb('0x8'));var querystring=require(_0x31eb('0xe'));var Papa=require('papaparse');var Redis=require(_0x31eb('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x31eb('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x31eb('0x11'))(_0x31eb('0x12'));var utils=require(_0x31eb('0x13'));var config=require(_0x31eb('0x14'));var licenseUtil=require(_0x31eb('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x31eb('0x16'),'port':0x18eb});var socket=require(_0x31eb('0x17'))(new Redis(config[_0x31eb('0x18')]));require('./openchannelQueue.socket')[_0x31eb('0x19')](socket);function respondWithStatusCode(_0x3a2a66,_0xef0f30){_0xef0f30=_0xef0f30||0xcc;return function(_0x49871b){if(_0x49871b){return _0x3a2a66[_0x31eb('0x1a')](_0xef0f30);}return _0x3a2a66['status'](_0xef0f30)[_0x31eb('0x1b')]();};}function respondWithResult(_0x5e5dc7,_0x22f0f4){_0x22f0f4=_0x22f0f4||0xc8;return function(_0xae176a){if(_0xae176a){return _0x5e5dc7[_0x31eb('0x1c')](_0x22f0f4)['json'](_0xae176a);}};}function respondWithFilteredResult(_0x1c9f54,_0x2148ca){return function(_0x2f30a3){if(_0x2f30a3){var _0x2dc92b=typeof _0x2148ca[_0x31eb('0x1d')]===_0x31eb('0x1e')&&typeof _0x2148ca[_0x31eb('0x1f')]===_0x31eb('0x1e');var _0x2b291f=_0x2f30a3[_0x31eb('0x20')];var _0x361992=_0x2dc92b?0x0:_0x2148ca['offset'];var _0x322508=_0x2dc92b?_0x2f30a3['count']:_0x2148ca['offset']+_0x2148ca[_0x31eb('0x1f')];var _0x27a4d4;if(_0x322508>=_0x2b291f){_0x322508=_0x2b291f;_0x27a4d4=0xc8;}else{_0x27a4d4=0xce;}_0x1c9f54[_0x31eb('0x1c')](_0x27a4d4);return _0x1c9f54[_0x31eb('0x21')](_0x31eb('0x22'),_0x361992+'-'+_0x322508+'/'+_0x2b291f)['json'](_0x2f30a3);}return null;};}function patchUpdates(_0xa66228){return function(_0x398e68){try{jsonpatch[_0x31eb('0x23')](_0x398e68,_0xa66228,!![]);}catch(_0x4543e2){return BPromise[_0x31eb('0x24')](_0x4543e2);}return _0x398e68[_0x31eb('0x25')]();};}function saveUpdates(_0x280b0d,_0x34c5e4){return function(_0x5379af){if(_0x5379af){return _0x5379af[_0x31eb('0x26')](_0x280b0d)[_0x31eb('0x27')](function(_0x267a39){return _0x267a39;});}return null;};}function removeEntity(_0x21aab7,_0x71da51){return function(_0x553566){if(_0x553566){return _0x553566[_0x31eb('0x28')]()[_0x31eb('0x27')](function(){var _0x540ade=_0x553566[_0x31eb('0x29')]({'plain':!![]});var _0xdc413b=_0x31eb('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0xdc413b,'resourceId':_0x540ade['id']}})['then'](function(){return _0x553566;});})[_0x31eb('0x27')](function(){_0x21aab7['status'](0xcc)[_0x31eb('0x1b')]();});}};}function handleEntityNotFound(_0x3c108e,_0xb98a1e){return function(_0x41e505){if(!_0x41e505){_0x3c108e['sendStatus'](0x194);}return _0x41e505;};}function handleError(_0x587349,_0x5b7182){_0x5b7182=_0x5b7182||0x1f4;return function(_0x59dfb1){logger[_0x31eb('0x2b')](_0x59dfb1['stack']);if(_0x59dfb1[_0x31eb('0x2c')]){delete _0x59dfb1[_0x31eb('0x2c')];}_0x587349['status'](_0x5b7182)[_0x31eb('0x2d')](_0x59dfb1);};}exports['index']=function(_0x237759,_0x3a44da){var _0x3d09ac={},_0x58c7f0={},_0xa6f11a={'count':0x0,'rows':[]};var _0x5aa45f=_[_0x31eb('0x2e')](db['OpenchannelQueue'][_0x31eb('0x2f')],function(_0x2f335e){return{'name':_0x2f335e[_0x31eb('0x30')],'type':_0x2f335e[_0x31eb('0x31')][_0x31eb('0x32')]};});_0x58c7f0[_0x31eb('0x33')]=_[_0x31eb('0x2e')](_0x5aa45f,_0x31eb('0x2c'));_0x58c7f0[_0x31eb('0x34')]=_[_0x31eb('0x35')](_0x237759[_0x31eb('0x34')]);_0x58c7f0[_0x31eb('0x36')]=_[_0x31eb('0x37')](_0x58c7f0['model'],_0x58c7f0['query']);_0x3d09ac[_0x31eb('0x38')]=_[_0x31eb('0x37')](_0x58c7f0[_0x31eb('0x33')],qs['fields'](_0x237759[_0x31eb('0x34')][_0x31eb('0x39')]));_0x3d09ac[_0x31eb('0x38')]=_0x3d09ac[_0x31eb('0x38')][_0x31eb('0x3a')]?_0x3d09ac[_0x31eb('0x38')]:_0x58c7f0[_0x31eb('0x33')];if(!_0x237759[_0x31eb('0x34')][_0x31eb('0x3b')](_0x31eb('0x3c'))){_0x3d09ac[_0x31eb('0x1f')]=qs[_0x31eb('0x1f')](_0x237759[_0x31eb('0x34')][_0x31eb('0x1f')]);_0x3d09ac[_0x31eb('0x1d')]=qs[_0x31eb('0x1d')](_0x237759[_0x31eb('0x34')][_0x31eb('0x1d')]);}_0x3d09ac[_0x31eb('0x3d')]=qs[_0x31eb('0x3e')](_0x237759['query'][_0x31eb('0x3e')]);_0x3d09ac[_0x31eb('0x3f')]=qs[_0x31eb('0x36')](_[_0x31eb('0x40')](_0x237759[_0x31eb('0x34')],_0x58c7f0[_0x31eb('0x36')]),_0x5aa45f);if(_0x237759[_0x31eb('0x34')][_0x31eb('0x41')]){_0x3d09ac[_0x31eb('0x3f')]=_[_0x31eb('0x42')](_0x3d09ac['where'],{'$or':_['map'](_0x5aa45f,function(_0x4a4764){if(_0x4a4764[_0x31eb('0x31')]!==_0x31eb('0x43')){var _0x257f8d={};_0x257f8d[_0x4a4764[_0x31eb('0x2c')]]={'$like':'%'+_0x237759[_0x31eb('0x34')]['filter']+'%'};return _0x257f8d;}})});}_0x3d09ac=_[_0x31eb('0x42')]({},_0x3d09ac,_0x237759[_0x31eb('0x44')]);var _0x4a7a3c={'where':_0x3d09ac[_0x31eb('0x3f')]};return db['OpenchannelQueue']['count'](_0x4a7a3c)['then'](function(_0x59145d){_0xa6f11a['count']=_0x59145d;if(_0x237759[_0x31eb('0x34')][_0x31eb('0x45')]){_0x3d09ac[_0x31eb('0x46')]=[{'all':!![]}];}return db[_0x31eb('0x47')]['findAll'](_0x3d09ac);})[_0x31eb('0x27')](function(_0xd9507e){_0xa6f11a[_0x31eb('0x48')]=_0xd9507e;return _0xa6f11a;})[_0x31eb('0x27')](respondWithFilteredResult(_0x3a44da,_0x3d09ac))[_0x31eb('0x49')](handleError(_0x3a44da,null));};exports[_0x31eb('0x4a')]=function(_0x263da0,_0x4f3f6d){var _0x29b3f7={'raw':!![],'where':{'id':_0x263da0[_0x31eb('0x4b')]['id']}},_0x1930c6={};_0x1930c6[_0x31eb('0x33')]=_[_0x31eb('0x35')](db[_0x31eb('0x47')][_0x31eb('0x2f')]);_0x1930c6[_0x31eb('0x34')]=_[_0x31eb('0x35')](_0x263da0[_0x31eb('0x34')]);_0x1930c6['filters']=_[_0x31eb('0x37')](_0x1930c6[_0x31eb('0x33')],_0x1930c6['query']);_0x29b3f7['attributes']=_[_0x31eb('0x37')](_0x1930c6[_0x31eb('0x33')],qs[_0x31eb('0x39')](_0x263da0[_0x31eb('0x34')][_0x31eb('0x39')]));_0x29b3f7[_0x31eb('0x38')]=_0x29b3f7[_0x31eb('0x38')][_0x31eb('0x3a')]?_0x29b3f7[_0x31eb('0x38')]:_0x1930c6['model'];if(_0x263da0[_0x31eb('0x34')][_0x31eb('0x45')]){_0x29b3f7[_0x31eb('0x46')]=[{'all':!![]}];}_0x29b3f7=_[_0x31eb('0x42')]({},_0x29b3f7,_0x263da0[_0x31eb('0x44')]);return db[_0x31eb('0x47')][_0x31eb('0x4c')](_0x29b3f7)[_0x31eb('0x27')](handleEntityNotFound(_0x4f3f6d,null))[_0x31eb('0x27')](respondWithResult(_0x4f3f6d,null))[_0x31eb('0x49')](handleError(_0x4f3f6d,null));};exports[_0x31eb('0x4d')]=function(_0x1329e9,_0x48d1ca){return db[_0x31eb('0x47')][_0x31eb('0x4d')](_0x1329e9[_0x31eb('0x4e')],{})[_0x31eb('0x27')](function(_0x4c3e52){var _0x380d72=_0x1329e9[_0x31eb('0x4f')][_0x31eb('0x29')]({'plain':!![]});if(!_0x380d72)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x380d72['role']==='user'){var _0x4e812e=_0x4c3e52[_0x31eb('0x29')]({'plain':!![]});var _0x11fc6d=_0x31eb('0x2a');return db[_0x31eb('0x50')][_0x31eb('0x4c')]({'where':{'name':_0x11fc6d,'userProfileId':_0x380d72[_0x31eb('0x51')]},'raw':!![]})[_0x31eb('0x27')](function(_0x61c9f){if(_0x61c9f&&_0x61c9f[_0x31eb('0x52')]===0x0){return db[_0x31eb('0x53')]['create']({'name':_0x4e812e[_0x31eb('0x2c')],'resourceId':_0x4e812e['id'],'type':_0x61c9f[_0x31eb('0x2c')],'sectionId':_0x61c9f['id']},{})[_0x31eb('0x27')](function(){return _0x4c3e52;});}else{return _0x4c3e52;}})[_0x31eb('0x49')](function(_0x558fd2){logger[_0x31eb('0x2b')](_0x31eb('0x54'),_0x558fd2);throw _0x558fd2;});}return _0x4c3e52;})[_0x31eb('0x27')](respondWithResult(_0x48d1ca,0xc9))[_0x31eb('0x49')](handleError(_0x48d1ca,null));};exports[_0x31eb('0x26')]=function(_0x23c74c,_0x5cdb16){if(_0x23c74c[_0x31eb('0x4e')]['id']){delete _0x23c74c[_0x31eb('0x4e')]['id'];}return db[_0x31eb('0x47')][_0x31eb('0x4c')]({'where':{'id':_0x23c74c[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](handleEntityNotFound(_0x5cdb16,null))['then'](saveUpdates(_0x23c74c[_0x31eb('0x4e')],null))[_0x31eb('0x27')](respondWithResult(_0x5cdb16,null))[_0x31eb('0x49')](handleError(_0x5cdb16,null));};exports[_0x31eb('0x28')]=function(_0x12b51c,_0x30619b){return db['OpenchannelQueue'][_0x31eb('0x4c')]({'where':{'id':_0x12b51c['params']['id']}})['then'](handleEntityNotFound(_0x30619b,null))['then'](removeEntity(_0x30619b,null))[_0x31eb('0x49')](handleError(_0x30619b,null));};exports[_0x31eb('0x55')]=function(_0x3d8b7f,_0x34ff3a){return db[_0x31eb('0x47')]['describe']()[_0x31eb('0x27')](respondWithResult(_0x34ff3a,null))[_0x31eb('0x49')](handleError(_0x34ff3a,null));};exports[_0x31eb('0x56')]=function(_0x1e033e,_0x4e67ac,_0x7f0872){var _0x3e97cd={'raw':!![],'where':{}},_0x2a58d5={},_0xd15a3b;return db[_0x31eb('0x47')][_0x31eb('0x57')]({'where':{'id':_0x1e033e[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](handleEntityNotFound(_0x4e67ac,null))['then'](function(_0x2357d2){if(_0x2357d2){_0xd15a3b=_0x2357d2['get']({'plain':!![]});_0x2a58d5[_0x31eb('0x33')]=_['keys'](db[_0x31eb('0x58')][_0x31eb('0x2f')]);_0x2a58d5[_0x31eb('0x34')]=_[_0x31eb('0x35')](_0x1e033e['query']);_0x2a58d5[_0x31eb('0x36')]=_[_0x31eb('0x37')](_0x2a58d5[_0x31eb('0x33')],_0x2a58d5[_0x31eb('0x34')]);_0x3e97cd[_0x31eb('0x38')]=_[_0x31eb('0x37')](_0x2a58d5[_0x31eb('0x33')],qs[_0x31eb('0x39')](_0x1e033e[_0x31eb('0x34')][_0x31eb('0x39')]));_0x3e97cd[_0x31eb('0x38')]=_0x3e97cd[_0x31eb('0x38')]['length']?_0x3e97cd[_0x31eb('0x38')]:_0x2a58d5[_0x31eb('0x33')];if(!_0x1e033e[_0x31eb('0x34')][_0x31eb('0x3b')](_0x31eb('0x3c'))){_0x3e97cd[_0x31eb('0x1f')]=qs[_0x31eb('0x1f')](_0x1e033e[_0x31eb('0x34')][_0x31eb('0x1f')]);_0x3e97cd['offset']=qs[_0x31eb('0x1d')](_0x1e033e[_0x31eb('0x34')][_0x31eb('0x1d')]);}_0x3e97cd['order']=qs[_0x31eb('0x3e')](_0x1e033e[_0x31eb('0x34')]['sort']);_0x3e97cd[_0x31eb('0x3f')]=qs[_0x31eb('0x36')](_[_0x31eb('0x40')](_0x1e033e[_0x31eb('0x34')],_0x2a58d5['filters']));_0x3e97cd['where'][_0x31eb('0x59')]=_0x2357d2['id'];if(_0x1e033e['query'][_0x31eb('0x41')]){_0x3e97cd[_0x31eb('0x3f')]=_[_0x31eb('0x42')](_0x3e97cd[_0x31eb('0x3f')],{'$or':_[_0x31eb('0x2e')](_0x3e97cd['attributes'],function(_0x2b4919){var _0x33868c={};_0x33868c[_0x2b4919]={'$like':'%'+_0x1e033e['query'][_0x31eb('0x41')]+'%'};return _0x33868c;})});}_0x3e97cd=_[_0x31eb('0x42')]({},_0x3e97cd,_0x1e033e['options']);return db[_0x31eb('0x58')][_0x31eb('0x5a')](_0x3e97cd);}})[_0x31eb('0x27')](function(_0x340958){if(_0x340958){return db[_0x31eb('0x5b')][_0x31eb('0x5c')]({'where':{'id':_[_0x31eb('0x2e')](_0x340958,_0x31eb('0x5d')),'role':_0x31eb('0x5e')},'attributes':['id',_0x31eb('0x2c'),_0x31eb('0x5f'),_0x31eb('0x60'),_0x31eb('0x61')]});}})['then'](function(_0x273fc9){if(_0x273fc9){return{'count':_0x273fc9[_0x31eb('0x20')],'rows':_[_0x31eb('0x2e')](_0x273fc9[_0x31eb('0x48')],function(_0x76ce67){return{'membername':_0x76ce67[_0x31eb('0x2c')],'UserId':_0x76ce67['id'],'queue_name':_0xd15a3b[_0x31eb('0x2c')],'OpenchannelQueueId':_0xd15a3b['id'],'interface':util[_0x31eb('0x62')]('%s/%s',_0x31eb('0x63'),_0x76ce67[_0x31eb('0x2c')]),'penalty':0x0,'paused':_0x76ce67[_0x31eb('0x5f')],'createdAt':_0x76ce67[_0x31eb('0x61')],'updatedAt':_0x76ce67[_0x31eb('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x31eb('0x27')](respondWithFilteredResult(_0x4e67ac,_0x3e97cd))['catch'](handleError(_0x4e67ac,null));};exports[_0x31eb('0x64')]=function(_0x814803,_0x15d943,_0x498f8a){var _0x149cec={};var _0x3f026d={};var _0x31f7ab;var _0x152f54;return db[_0x31eb('0x47')][_0x31eb('0x57')]({'where':{'id':_0x814803[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](handleEntityNotFound(_0x15d943,null))[_0x31eb('0x27')](function(_0x4e502f){if(_0x4e502f){_0x31f7ab=_0x4e502f;_0x3f026d[_0x31eb('0x33')]=_[_0x31eb('0x35')](db[_0x31eb('0x65')][_0x31eb('0x2f')]);_0x3f026d[_0x31eb('0x34')]=_[_0x31eb('0x35')](_0x814803[_0x31eb('0x34')]);_0x3f026d[_0x31eb('0x36')]=_[_0x31eb('0x37')](_0x3f026d[_0x31eb('0x33')],_0x3f026d['query']);_0x149cec[_0x31eb('0x38')]=_['intersection'](_0x3f026d['model'],qs[_0x31eb('0x39')](_0x814803[_0x31eb('0x34')]['fields']));_0x149cec[_0x31eb('0x38')]=_0x149cec['attributes']['length']?_0x149cec[_0x31eb('0x38')]:_0x3f026d[_0x31eb('0x33')];_0x149cec[_0x31eb('0x3d')]=qs[_0x31eb('0x3e')](_0x814803['query'][_0x31eb('0x3e')]);_0x149cec[_0x31eb('0x3f')]=qs[_0x31eb('0x36')](_['pick'](_0x814803['query'],_0x3f026d['filters']));if(_0x814803[_0x31eb('0x34')][_0x31eb('0x41')]){_0x149cec[_0x31eb('0x3f')]=_[_0x31eb('0x42')](_0x149cec[_0x31eb('0x3f')],{'$or':_['map'](_0x149cec['attributes'],function(_0x52aff4){var _0x8d6baa={};_0x8d6baa[_0x52aff4]={'$like':'%'+_0x814803['query'][_0x31eb('0x41')]+'%'};return _0x8d6baa;})});}_0x149cec=_['merge']({},_0x149cec,_0x814803[_0x31eb('0x44')]);return _0x31f7ab[_0x31eb('0x64')](_0x149cec);}})[_0x31eb('0x27')](function(_0x59e193){if(_0x59e193){_0x152f54=_0x59e193[_0x31eb('0x3a')];if(!_0x814803[_0x31eb('0x34')]['hasOwnProperty'](_0x31eb('0x3c'))){_0x149cec[_0x31eb('0x1f')]=qs[_0x31eb('0x1f')](_0x814803[_0x31eb('0x34')][_0x31eb('0x1f')]);_0x149cec[_0x31eb('0x1d')]=qs['offset'](_0x814803['query'][_0x31eb('0x1d')]);}return _0x31f7ab[_0x31eb('0x64')](_0x149cec);}})[_0x31eb('0x27')](function(_0x23eb2f){if(_0x23eb2f){return _0x23eb2f?{'count':_0x152f54,'rows':_0x23eb2f}:null;}})[_0x31eb('0x27')](respondWithResult(_0x15d943,null))['catch'](handleError(_0x15d943,null));};exports[_0x31eb('0x66')]=function(_0x42ad44,_0x227dab,_0x1d710e){var _0x4208e4=_0x42ad44[_0x31eb('0x4e')][_0x31eb('0x67')];return db[_0x31eb('0x65')][_0x31eb('0x5a')]({'where':{'id':_0x4208e4},'attributes':['id'],'include':[{'model':db[_0x31eb('0x5b')],'as':_0x31eb('0x68'),'attributes':['id',_0x31eb('0x2c'),_0x31eb('0x69'),_0x31eb('0x6a'),_0x31eb('0x6b')],'raw':!![]}]})[_0x31eb('0x27')](function(_0x3d878d){if(_0x3d878d){var _0x197aad=_[_0x31eb('0x6c')](_0x3d878d,function(_0x14e750){var _0x29e1c2=_0x14e750[_0x31eb('0x29')]({'plain':!![]});return _0x29e1c2['Agents'];});return db['OpenchannelQueue']['find']({'where':{'id':_0x42ad44[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](function(_0x395088){return db[_0x31eb('0x6d')]['transaction'](function(_0x177f1d){return _0x395088[_0x31eb('0x66')](_0x4208e4,{'transaction':_0x177f1d})['then'](function(){return BPromise[_0x31eb('0x6e')](_0x197aad,function(_0x363091){return db[_0x31eb('0x58')]['findOrCreate']({'where':{'UserId':_0x363091['id'],'OpenchannelQueueId':_0x42ad44[_0x31eb('0x4b')]['id']},'transaction':_0x177f1d});});})[_0x31eb('0x27')](function(){_0x197aad['forEach'](function(_0x34cffe){socket[_0x31eb('0x6f')]('userOpenchannelQueue:save',{'UserId':_0x34cffe['id'],'OpenchannelQueueId':_0x395088['id']});});});});});}})['then'](respondWithStatusCode(_0x227dab,null))[_0x31eb('0x49')](handleError(_0x227dab,null));};exports[_0x31eb('0x70')]=function(_0x5bb8cc,_0x329cf1,_0x107b5d){return db[_0x31eb('0x65')]['findAll']({'where':{'id':_0x5bb8cc[_0x31eb('0x34')]['ids']},'attributes':['id'],'include':[{'model':db[_0x31eb('0x5b')],'as':_0x31eb('0x68'),'attributes':['id'],'raw':!![]}]})[_0x31eb('0x27')](handleEntityNotFound(_0x329cf1,null))[_0x31eb('0x27')](function(_0x556b71){var _0x39ce15=_[_0x31eb('0x2e')](_0x556b71,'id');var _0x20c9a7=[];var _0x1269d3=[];var _0x256ed8=squel[_0x31eb('0x71')]();_0x256ed8[_0x31eb('0x72')](_0x31eb('0x73'))[_0x31eb('0x74')](_0x31eb('0x75'),'tq')[_0x31eb('0x76')](_0x31eb('0x77'),'ut',_0x31eb('0x78'))[_0x31eb('0x3f')](_0x31eb('0x79'),_0x5bb8cc['params']['id']);for(var _0x2ae62c=0x0;_0x2ae62c<_0x556b71[_0x31eb('0x3a')];_0x2ae62c+=0x1){let _0x3c8e28=_0x556b71[_0x2ae62c];for(var _0xdefd4a=0x0;_0xdefd4a<_0x3c8e28[_0x31eb('0x68')][_0x31eb('0x3a')];_0xdefd4a+=0x1){let _0x2d6ccc=_0x3c8e28[_0x31eb('0x68')][_0xdefd4a];var _0x2403f5=_0x256ed8[_0x31eb('0x7a')]();_0x2403f5[_0x31eb('0x3f')]('ut.UserId\x20=\x20?',_0x2d6ccc['id']);_0x1269d3[_0x31eb('0x7b')](db['sequelize'][_0x31eb('0x34')](_0x2403f5[_0x31eb('0x7c')](),{'type':db['sequelize']['QueryTypes'][_0x31eb('0x7d')]})[_0x31eb('0x27')](function(_0x11d7c7){if(_0x11d7c7[_0x31eb('0x3a')]===0x1){return _0x2d6ccc['id'];}else{var _0x5b1614=_['every'](_['map'](_0x11d7c7,_0x31eb('0x7e')),function(_0xf8b39a){return _[_0x31eb('0x7f')](_0x39ce15,_0xf8b39a);});if(_0x5b1614){return _0x2d6ccc['id'];}}}));}}return BPromise['all'](_0x1269d3)[_0x31eb('0x27')](function(_0xceaf0a){_0x20c9a7=_(_0x20c9a7)['union'](_0xceaf0a)[_0x31eb('0x80')]()['value']();return db[_0x31eb('0x47')][_0x31eb('0x4c')]({'where':{'id':_0x5bb8cc[_0x31eb('0x4b')]['id']}})['then'](function(_0x31c885){return db[_0x31eb('0x6d')][_0x31eb('0x81')](function(_0x41c181){return _0x31c885[_0x31eb('0x70')](_0x5bb8cc['query'][_0x31eb('0x67')],{'transaction':_0x41c181})[_0x31eb('0x27')](function(){if(!_['isEmpty'](_0x20c9a7)){return _0x31c885[_0x31eb('0x82')](_0x20c9a7,{'transaction':_0x41c181});}})['then'](function(){_0x20c9a7[_0x31eb('0x83')](function(_0x1602f3){socket[_0x31eb('0x6f')](_0x31eb('0x84'),{'UserId':_0x1602f3,'OpenchannelQueueId':_0x31c885['id']});});});});});});})['then'](respondWithStatusCode(_0x329cf1,null))[_0x31eb('0x49')](handleError(_0x329cf1,null));};exports[_0x31eb('0x85')]=function(_0x442b51,_0x535865,_0x233f29){return db[_0x31eb('0x47')][_0x31eb('0x4c')]({'where':{'id':_0x442b51['params']['id']}})['then'](handleEntityNotFound(_0x535865,null))[_0x31eb('0x27')](function(_0x21ab0a){if(_0x21ab0a){return _0x21ab0a[_0x31eb('0x85')](_0x442b51[_0x31eb('0x4e')][_0x31eb('0x67')],_['omit'](_0x442b51['body'],['ids','id'])||{})[_0x31eb('0x86')](function(_0x269e58){for(var _0x27f9c7=0x0;_0x27f9c7<_0x442b51['body']['ids'][_0x31eb('0x3a')];_0x27f9c7+=0x1){socket[_0x31eb('0x6f')](_0x31eb('0x87'),{'UserId':Number(_0x442b51[_0x31eb('0x4e')]['ids'][_0x27f9c7]),'OpenchannelQueueId':Number(_0x442b51[_0x31eb('0x4b')]['id'])});}return _0x269e58;});}})[_0x31eb('0x27')](respondWithResult(_0x535865,null))[_0x31eb('0x49')](handleError(_0x535865,null));};exports[_0x31eb('0x82')]=function(_0x6b1a4e,_0x2cb1e7,_0x41a2a1){return db[_0x31eb('0x47')][_0x31eb('0x4c')]({'where':{'id':_0x6b1a4e[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](handleEntityNotFound(_0x2cb1e7,null))[_0x31eb('0x27')](function(_0x20dd28){if(_0x20dd28){return _0x20dd28[_0x31eb('0x82')](_0x6b1a4e[_0x31eb('0x34')][_0x31eb('0x67')])[_0x31eb('0x27')](function(){if(_[_0x31eb('0x88')](_0x6b1a4e[_0x31eb('0x34')][_0x31eb('0x67')])){for(var _0x580151=0x0;_0x580151<_0x6b1a4e[_0x31eb('0x34')]['ids'][_0x31eb('0x3a')];_0x580151+=0x1){socket['emit'](_0x31eb('0x84'),{'UserId':Number(_0x6b1a4e[_0x31eb('0x34')][_0x31eb('0x67')][_0x580151]),'OpenchannelQueueId':Number(_0x6b1a4e[_0x31eb('0x4b')]['id'])});}}else{socket[_0x31eb('0x6f')](_0x31eb('0x84'),{'UserId':Number(_0x6b1a4e[_0x31eb('0x34')][_0x31eb('0x67')]),'OpenchannelQueueId':Number(_0x6b1a4e['params']['id'])});}});}})[_0x31eb('0x27')](respondWithStatusCode(_0x2cb1e7,null))['catch'](handleError(_0x2cb1e7,null));};exports[_0x31eb('0x89')]=function(_0x18858d,_0x5d27af,_0x4f96a6){var _0x3fdc1c={};var _0x22132c={};var _0x229274;var _0x1eb2d8;return db['OpenchannelQueue'][_0x31eb('0x57')]({'where':{'id':_0x18858d[_0x31eb('0x4b')]['id']}})[_0x31eb('0x27')](handleEntityNotFound(_0x5d27af,null))[_0x31eb('0x27')](function(_0xc8524a){if(_0xc8524a){_0x229274=_0xc8524a;_0x22132c[_0x31eb('0x33')]=_[_0x31eb('0x35')](db[_0x31eb('0x5b')][_0x31eb('0x2f')]);_0x22132c['query']=_['keys'](_0x18858d[_0x31eb('0x34')]);_0x22132c[_0x31eb('0x36')]=_[_0x31eb('0x37')](_0x22132c[_0x31eb('0x33')],_0x22132c[_0x31eb('0x34')]);_0x3fdc1c['attributes']=_[_0x31eb('0x37')](_0x22132c[_0x31eb('0x33')],qs[_0x31eb('0x39')](_0x18858d[_0x31eb('0x34')][_0x31eb('0x39')]));_0x3fdc1c[_0x31eb('0x38')]=_0x3fdc1c['attributes'][_0x31eb('0x3a')]?_0x3fdc1c[_0x31eb('0x38')]:_0x22132c[_0x31eb('0x33')];_0x3fdc1c[_0x31eb('0x3d')]=qs[_0x31eb('0x3e')](_0x18858d[_0x31eb('0x34')]['sort']);_0x3fdc1c['where']=qs[_0x31eb('0x36')](_['pick'](_0x18858d['query'],_0x22132c[_0x31eb('0x36')]));if(_0x18858d['query'][_0x31eb('0x41')]){_0x3fdc1c[_0x31eb('0x3f')]=_[_0x31eb('0x42')](_0x3fdc1c[_0x31eb('0x3f')],{'$or':_[_0x31eb('0x2e')](_0x3fdc1c['attributes'],function(_0xb69790){var _0x2bf388={};_0x2bf388[_0xb69790]={'$like':'%'+_0x18858d['query'][_0x31eb('0x41')]+'%'};return _0x2bf388;})});}_0x3fdc1c=_[_0x31eb('0x42')]({},_0x3fdc1c,_0x18858d[_0x31eb('0x44')]);return _0x229274[_0x31eb('0x89')](_0x3fdc1c);}})[_0x31eb('0x27')](function(_0x1b083b){if(_0x1b083b){_0x1eb2d8=_0x1b083b[_0x31eb('0x3a')];if(!_0x18858d[_0x31eb('0x34')][_0x31eb('0x3b')](_0x31eb('0x3c'))){_0x3fdc1c[_0x31eb('0x1f')]=qs[_0x31eb('0x1f')](_0x18858d['query'][_0x31eb('0x1f')]);_0x3fdc1c[_0x31eb('0x1d')]=qs[_0x31eb('0x1d')](_0x18858d['query'][_0x31eb('0x1d')]);}return _0x229274[_0x31eb('0x89')](_0x3fdc1c);}})['then'](function(_0x59b4c7){if(_0x59b4c7){return _0x59b4c7?{'count':_0x1eb2d8,'rows':_0x59b4c7}:null;}})['then'](respondWithResult(_0x5d27af,null))[_0x31eb('0x49')](handleError(_0x5d27af,null));};
\ No newline at end of file
index 5369c2e..e295c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf163=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xf163,0x1f1));var _0x3f16=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0xf163[_0x39fd11];return _0x302799;};'use strict';var EventEmitter=require(_0x3f16('0x0'));var OpenchannelQueue=require(_0x3f16('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x3f16('0x2')](0x0);var events={'afterCreate':_0x3f16('0x3'),'afterUpdate':'update','afterDestroy':_0x3f16('0x4')};function emitEvent(_0x2696dc){return function(_0x33a062,_0x225749,_0xd85dca){OpenchannelQueueEvents[_0x3f16('0x5')](_0x2696dc+':'+_0x33a062['id'],_0x33a062);OpenchannelQueueEvents[_0x3f16('0x5')](_0x2696dc,_0x33a062);_0xd85dca(null);};}for(var e in events){if(events[_0x3f16('0x6')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xdd6d=['remove','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save'];(function(_0xdeb673,_0x5a7e27){var _0x1af2be=function(_0x33f086){while(--_0x33f086){_0xdeb673['push'](_0xdeb673['shift']());}};_0x1af2be(++_0x5a7e27);}(_0xdd6d,0x199));var _0xddd6=function(_0x25c26f,_0x3557da){_0x25c26f=_0x25c26f-0x0;var _0x224008=_0xdd6d[_0x25c26f];return _0x224008;};'use strict';var EventEmitter=require(_0xddd6('0x0'));var OpenchannelQueue=require(_0xddd6('0x1'))['db'][_0xddd6('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xddd6('0x3')](0x0);var events={'afterCreate':_0xddd6('0x4'),'afterUpdate':'update','afterDestroy':_0xddd6('0x5')};function emitEvent(_0xcd22a3){return function(_0x2fbd8c,_0x1ea7d6,_0x2248e3){OpenchannelQueueEvents['emit'](_0xcd22a3+':'+_0x2fbd8c['id'],_0x2fbd8c);OpenchannelQueueEvents['emit'](_0xcd22a3,_0x2fbd8c);_0x2248e3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index eeefa3b..045783d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51fb=['path','exports','define','OpenchannelQueue','openchannel_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5f8f06,_0x3ea7f6){var _0x3a1074=function(_0x3883d9){while(--_0x3883d9){_0x5f8f06['push'](_0x5f8f06['shift']());}};_0x3a1074(++_0x3ea7f6);}(_0x51fb,0x123));var _0xb51f=function(_0x4d78b4,_0x57d6db){_0x4d78b4=_0x4d78b4-0x0;var _0x159126=_0x51fb[_0x4d78b4];return _0x159126;};'use strict';var _=require(_0xb51f('0x0'));var util=require('util');var logger=require(_0xb51f('0x1'))(_0xb51f('0x2'));var moment=require(_0xb51f('0x3'));var BPromise=require(_0xb51f('0x4'));var rp=require(_0xb51f('0x5'));var fs=require('fs');var path=require(_0xb51f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelQueue.attributes');module[_0xb51f('0x7')]=function(_0x580565,_0x24f04a){return _0x580565[_0xb51f('0x8')](_0xb51f('0x9'),attributes,{'tableName':_0xb51f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x940d=['../../config/logger','api','moment','request-promise','path','../../config/environment','./openchannelQueue.attributes','exports','OpenchannelQueue','lodash','util'];(function(_0x46cc29,_0x473f8e){var _0x5ea06f=function(_0x1051e7){while(--_0x1051e7){_0x46cc29['push'](_0x46cc29['shift']());}};_0x5ea06f(++_0x473f8e);}(_0x940d,0x17f));var _0xd940=function(_0x55d1cd,_0x4c7906){_0x55d1cd=_0x55d1cd-0x0;var _0x6b84ab=_0x940d[_0x55d1cd];return _0x6b84ab;};'use strict';var _=require(_0xd940('0x0'));var util=require(_0xd940('0x1'));var logger=require(_0xd940('0x2'))(_0xd940('0x3'));var moment=require(_0xd940('0x4'));var BPromise=require('bluebird');var rp=require(_0xd940('0x5'));var fs=require('fs');var path=require(_0xd940('0x6'));var rimraf=require('rimraf');var config=require(_0xd940('0x7'));var attributes=require(_0xd940('0x8'));module[_0xd940('0x9')]=function(_0x433c4b,_0x2faf6c){return _0x433c4b['define'](_0xd940('0xa'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 804f62a..92d3f73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd73=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','info','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','options','raw','where','include','map','model','attributes','debug','ShowOpenchannelQueue','then','lodash','util','bluebird','randomstring','ioredis'];(function(_0x11179b,_0x3fb372){var _0xfb8bfb=function(_0x4bb411){while(--_0x4bb411){_0x11179b['push'](_0x11179b['shift']());}};_0xfb8bfb(++_0x3fb372);}(_0xcd73,0x177));var _0x3cd7=function(_0x1b353f,_0x17d47c){_0x1b353f=_0x1b353f-0x0;var _0x415c39=_0xcd73[_0x1b353f];return _0x415c39;};'use strict';var _=require(_0x3cd7('0x0'));var util=require(_0x3cd7('0x1'));var moment=require('moment');var BPromise=require(_0x3cd7('0x2'));var rs=require(_0x3cd7('0x3'));var fs=require('fs');var Redis=require(_0x3cd7('0x4'));var db=require(_0x3cd7('0x5'))['db'];var utils=require(_0x3cd7('0x6'));var logger=require(_0x3cd7('0x7'))('rpc');var config=require(_0x3cd7('0x8'));var jayson=require(_0x3cd7('0x9'));var client=jayson[_0x3cd7('0xa')][_0x3cd7('0xb')]({'port':0x232a});config[_0x3cd7('0xc')]=_[_0x3cd7('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelQueue.socket')[_0x3cd7('0xe')](socket);function respondWithRpcPromise(_0x25f0ba,_0x5645c8,_0x4e5a15){return new BPromise(function(_0x51e8f7,_0x583e7c){return client[_0x3cd7('0xf')](_0x25f0ba,_0x4e5a15)['then'](function(_0x3124d8){logger[_0x3cd7('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x5645c8,_0x3cd7('0x11'));logger['debug'](_0x3cd7('0x12'),_0x5645c8,_0x3cd7('0x11'),JSON[_0x3cd7('0x13')](_0x3124d8));if(_0x3124d8[_0x3cd7('0x14')]){if(_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x15')]===0x1f4){logger[_0x3cd7('0x14')](_0x3cd7('0x16'),_0x5645c8,_0x3124d8[_0x3cd7('0x14')]['message']);return _0x583e7c(_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x17')]);}logger['error'](_0x3cd7('0x16'),_0x5645c8,_0x3124d8[_0x3cd7('0x14')][_0x3cd7('0x17')]);return _0x51e8f7(_0x3124d8['error'][_0x3cd7('0x17')]);}else{logger[_0x3cd7('0x10')](_0x3cd7('0x16'),_0x5645c8,_0x3cd7('0x11'));_0x51e8f7(_0x3124d8[_0x3cd7('0x18')][_0x3cd7('0x17')]);}})[_0x3cd7('0x19')](function(_0x46a52c){logger[_0x3cd7('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x5645c8,_0x46a52c);_0x583e7c(_0x46a52c);});});}exports[_0x3cd7('0x1a')]=function(_0x45e19a){var _0x22d06b=this;return new Promise(function(_0x1688d7,_0x3b9ba1){return db[_0x3cd7('0x1b')]['findAll']({'raw':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1d')]===undefined?!![]:![]:!![],'where':_0x45e19a['options']?_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1e')]||null:null,'attributes':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a[_0x3cd7('0x1c')]['attributes']||null:null,'limit':_0x45e19a['options']?_0x45e19a[_0x3cd7('0x1c')]['limit']||null:null,'include':_0x45e19a[_0x3cd7('0x1c')]?_0x45e19a['options'][_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x45e19a[_0x3cd7('0x1c')][_0x3cd7('0x1f')],function(_0x3ba7a7){return{'model':db[_0x3ba7a7[_0x3cd7('0x21')]],'as':_0x3ba7a7['as'],'attributes':_0x3ba7a7['attributes'],'include':_0x3ba7a7[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x3ba7a7['include'],function(_0x197a05){return{'model':db[_0x197a05[_0x3cd7('0x21')]],'as':_0x197a05['as'],'attributes':_0x197a05[_0x3cd7('0x22')],'include':_0x197a05[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x197a05[_0x3cd7('0x1f')],function(_0x4e97e7){return{'model':db[_0x4e97e7[_0x3cd7('0x21')]],'as':_0x4e97e7['as'],'attributes':_0x4e97e7[_0x3cd7('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xf27394){logger['info']('GetOpenchannelQueue',_0x45e19a);logger[_0x3cd7('0x23')](_0x3cd7('0x1a'),_0x45e19a,JSON[_0x3cd7('0x13')](_0xf27394));_0x1688d7(_0xf27394);})[_0x3cd7('0x19')](function(_0x38ab2c){logger[_0x3cd7('0x14')](_0x3cd7('0x1a'),_0x38ab2c[_0x3cd7('0x17')],_0x45e19a);_0x3b9ba1(_0x22d06b[_0x3cd7('0x14')](0x1f4,_0x38ab2c[_0x3cd7('0x17')]));});});};exports[_0x3cd7('0x24')]=function(_0x585f55){var _0x59ce39=this;return new Promise(function(_0x15f664,_0x26fa53){return db['OpenchannelQueue']['find']({'raw':_0x585f55['options']?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x1d')]===undefined?!![]:![]:!![],'where':_0x585f55[_0x3cd7('0x1c')]?_0x585f55['options'][_0x3cd7('0x1e')]||null:null,'attributes':_0x585f55[_0x3cd7('0x1c')]?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x22')]||null:null,'include':_0x585f55[_0x3cd7('0x1c')]?_0x585f55[_0x3cd7('0x1c')][_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x585f55[_0x3cd7('0x1c')]['include'],function(_0x133bf2){return{'model':db[_0x133bf2[_0x3cd7('0x21')]],'as':_0x133bf2['as'],'attributes':_0x133bf2[_0x3cd7('0x22')],'include':_0x133bf2['include']?_[_0x3cd7('0x20')](_0x133bf2[_0x3cd7('0x1f')],function(_0x46f85d){return{'model':db[_0x46f85d['model']],'as':_0x46f85d['as'],'attributes':_0x46f85d[_0x3cd7('0x22')],'include':_0x46f85d[_0x3cd7('0x1f')]?_[_0x3cd7('0x20')](_0x46f85d[_0x3cd7('0x1f')],function(_0x43718c){return{'model':db[_0x43718c['model']],'as':_0x43718c['as'],'attributes':_0x43718c['attributes']};}):[]};}):[]};}):[]:[]})[_0x3cd7('0x25')](function(_0x2d80bf){logger['info']('ShowOpenchannelQueue',_0x585f55);logger[_0x3cd7('0x23')](_0x3cd7('0x24'),_0x585f55,JSON[_0x3cd7('0x13')](_0x2d80bf));_0x15f664(_0x2d80bf);})[_0x3cd7('0x19')](function(_0x55fd40){logger[_0x3cd7('0x14')](_0x3cd7('0x24'),_0x55fd40[_0x3cd7('0x17')],_0x585f55);_0x26fa53(_0x59ce39['error'](0x1f4,_0x55fd40[_0x3cd7('0x17')]));});});};
\ No newline at end of file
+var _0xd680=['OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowOpenchannelQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','client','redis','defaults','localhost','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2be45b,_0x9ec80c){var _0x1d13f7=function(_0x5c3b3a){while(--_0x5c3b3a){_0x2be45b['push'](_0x2be45b['shift']());}};_0x1d13f7(++_0x9ec80c);}(_0xd680,0x172));var _0x0d68=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd680[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0d68('0x0'));var util=require(_0x0d68('0x1'));var moment=require(_0x0d68('0x2'));var BPromise=require(_0x0d68('0x3'));var rs=require(_0x0d68('0x4'));var fs=require('fs');var Redis=require(_0x0d68('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0d68('0x6'));var logger=require('../../config/logger')(_0x0d68('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d68('0x8')]['http']({'port':0x232a});config[_0x0d68('0x9')]=_[_0x0d68('0xa')](config[_0x0d68('0x9')],{'host':_0x0d68('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0d68('0x9')]));require(_0x0d68('0xc'))[_0x0d68('0xd')](socket);function respondWithRpcPromise(_0xa31eff,_0x4bcab6,_0x57e2b8){return new BPromise(function(_0x36f6e1,_0x22db69){return client[_0x0d68('0xe')](_0xa31eff,_0x57e2b8)[_0x0d68('0xf')](function(_0x341463){logger[_0x0d68('0x10')](_0x0d68('0x11'),_0x4bcab6,_0x0d68('0x12'));logger[_0x0d68('0x13')](_0x0d68('0x14'),_0x4bcab6,_0x0d68('0x12'),JSON['stringify'](_0x341463));if(_0x341463[_0x0d68('0x15')]){if(_0x341463[_0x0d68('0x15')][_0x0d68('0x16')]===0x1f4){logger[_0x0d68('0x15')](_0x0d68('0x11'),_0x4bcab6,_0x341463[_0x0d68('0x15')][_0x0d68('0x17')]);return _0x22db69(_0x341463['error']['message']);}logger[_0x0d68('0x15')](_0x0d68('0x11'),_0x4bcab6,_0x341463[_0x0d68('0x15')][_0x0d68('0x17')]);return _0x36f6e1(_0x341463['error'][_0x0d68('0x17')]);}else{logger[_0x0d68('0x10')](_0x0d68('0x11'),_0x4bcab6,_0x0d68('0x12'));_0x36f6e1(_0x341463[_0x0d68('0x18')][_0x0d68('0x17')]);}})[_0x0d68('0x19')](function(_0x290070){logger[_0x0d68('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x4bcab6,_0x290070);_0x22db69(_0x290070);});});}exports[_0x0d68('0x1a')]=function(_0x1fddb7){var _0x355d0d=this;return new Promise(function(_0x491401,_0x11204a){return db[_0x0d68('0x1b')][_0x0d68('0x1c')]({'raw':_0x1fddb7[_0x0d68('0x1d')]?_0x1fddb7[_0x0d68('0x1d')][_0x0d68('0x1e')]===undefined?!![]:![]:!![],'where':_0x1fddb7[_0x0d68('0x1d')]?_0x1fddb7[_0x0d68('0x1d')][_0x0d68('0x1f')]||null:null,'attributes':_0x1fddb7[_0x0d68('0x1d')]?_0x1fddb7[_0x0d68('0x1d')][_0x0d68('0x20')]||null:null,'limit':_0x1fddb7[_0x0d68('0x1d')]?_0x1fddb7[_0x0d68('0x1d')][_0x0d68('0x21')]||null:null,'include':_0x1fddb7[_0x0d68('0x1d')]?_0x1fddb7[_0x0d68('0x1d')][_0x0d68('0x22')]?_[_0x0d68('0x23')](_0x1fddb7[_0x0d68('0x1d')]['include'],function(_0x47d69b){return{'model':db[_0x47d69b[_0x0d68('0x24')]],'as':_0x47d69b['as'],'attributes':_0x47d69b[_0x0d68('0x20')],'include':_0x47d69b['include']?_[_0x0d68('0x23')](_0x47d69b[_0x0d68('0x22')],function(_0x5cbdf1){return{'model':db[_0x5cbdf1[_0x0d68('0x24')]],'as':_0x5cbdf1['as'],'attributes':_0x5cbdf1['attributes'],'include':_0x5cbdf1[_0x0d68('0x22')]?_['map'](_0x5cbdf1[_0x0d68('0x22')],function(_0x13daef){return{'model':db[_0x13daef['model']],'as':_0x13daef['as'],'attributes':_0x13daef[_0x0d68('0x20')]};}):[]};}):[]};}):[]:[]})[_0x0d68('0xf')](function(_0x361d5a){logger['info'](_0x0d68('0x1a'),_0x1fddb7);logger['debug']('GetOpenchannelQueue',_0x1fddb7,JSON[_0x0d68('0x25')](_0x361d5a));_0x491401(_0x361d5a);})['catch'](function(_0x1dfa13){logger[_0x0d68('0x15')](_0x0d68('0x1a'),_0x1dfa13[_0x0d68('0x17')],_0x1fddb7);_0x11204a(_0x355d0d[_0x0d68('0x15')](0x1f4,_0x1dfa13['message']));});});};exports['ShowOpenchannelQueue']=function(_0x2795ad){var _0x279d4d=this;return new Promise(function(_0x1ec02b,_0x21b9a2){return db['OpenchannelQueue']['find']({'raw':_0x2795ad[_0x0d68('0x1d')]?_0x2795ad['options'][_0x0d68('0x1e')]===undefined?!![]:![]:!![],'where':_0x2795ad[_0x0d68('0x1d')]?_0x2795ad[_0x0d68('0x1d')][_0x0d68('0x1f')]||null:null,'attributes':_0x2795ad[_0x0d68('0x1d')]?_0x2795ad[_0x0d68('0x1d')][_0x0d68('0x20')]||null:null,'include':_0x2795ad[_0x0d68('0x1d')]?_0x2795ad[_0x0d68('0x1d')][_0x0d68('0x22')]?_[_0x0d68('0x23')](_0x2795ad[_0x0d68('0x1d')][_0x0d68('0x22')],function(_0x10decb){return{'model':db[_0x10decb[_0x0d68('0x24')]],'as':_0x10decb['as'],'attributes':_0x10decb['attributes'],'include':_0x10decb[_0x0d68('0x22')]?_[_0x0d68('0x23')](_0x10decb[_0x0d68('0x22')],function(_0x4e0ba6){return{'model':db[_0x4e0ba6[_0x0d68('0x24')]],'as':_0x4e0ba6['as'],'attributes':_0x4e0ba6[_0x0d68('0x20')],'include':_0x4e0ba6['include']?_[_0x0d68('0x23')](_0x4e0ba6[_0x0d68('0x22')],function(_0x301521){return{'model':db[_0x301521[_0x0d68('0x24')]],'as':_0x301521['as'],'attributes':_0x301521[_0x0d68('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xfe352b){logger[_0x0d68('0x10')]('ShowOpenchannelQueue',_0x2795ad);logger[_0x0d68('0x13')](_0x0d68('0x26'),_0x2795ad,JSON[_0x0d68('0x25')](_0xfe352b));_0x1ec02b(_0xfe352b);})[_0x0d68('0x19')](function(_0x1b7800){logger[_0x0d68('0x15')](_0x0d68('0x26'),_0x1b7800[_0x0d68('0x17')],_0x2795ad);_0x21b9a2(_0x279d4d[_0x0d68('0x15')](0x1f4,_0x1b7800[_0x0d68('0x17')]));});});};
\ No newline at end of file
index 4d7dbcb..3f7dcdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1646=['./openchannelQueue.events','save','remove','removeListener','register','length','openchannelQueue:'];(function(_0xe896bf,_0x4f8e5e){var _0x4c7a8a=function(_0x410ff2){while(--_0x410ff2){_0xe896bf['push'](_0xe896bf['shift']());}};_0x4c7a8a(++_0x4f8e5e);}(_0x1646,0xd9));var _0x6164=function(_0x5a92ad,_0x2219a6){_0x5a92ad=_0x5a92ad-0x0;var _0x2466f8=_0x1646[_0x5a92ad];return _0x2466f8;};'use strict';var OpenchannelQueueEvents=require(_0x6164('0x0'));var events=[_0x6164('0x1'),_0x6164('0x2'),'update'];function createListener(_0x43724d,_0x3d0136){return function(_0x55f50e){_0x3d0136['emit'](_0x43724d,_0x55f50e);};}function removeListener(_0x17e055,_0xadee0f){return function(){OpenchannelQueueEvents[_0x6164('0x3')](_0x17e055,_0xadee0f);};}exports[_0x6164('0x4')]=function(_0x4346a8){for(var _0x46f958=0x0,_0x24507d=events[_0x6164('0x5')];_0x46f958<_0x24507d;_0x46f958++){var _0x4e8d90=events[_0x46f958];var _0x9922ab=createListener(_0x6164('0x6')+_0x4e8d90,_0x4346a8);OpenchannelQueueEvents['on'](_0x4e8d90,_0x9922ab);}};
\ No newline at end of file
+var _0x6b8b=['update','emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x6af383,_0x11a615){var _0x127b8e=function(_0x4dcfe5){while(--_0x4dcfe5){_0x6af383['push'](_0x6af383['shift']());}};_0x127b8e(++_0x11a615);}(_0x6b8b,0xd5));var _0xb6b8=function(_0xf6cd8c,_0x47e52b){_0xf6cd8c=_0xf6cd8c-0x0;var _0xc62df0=_0x6b8b[_0xf6cd8c];return _0xc62df0;};'use strict';var OpenchannelQueueEvents=require(_0xb6b8('0x0'));var events=[_0xb6b8('0x1'),_0xb6b8('0x2'),_0xb6b8('0x3')];function createListener(_0x41b205,_0x3cacdd){return function(_0x193b7d){_0x3cacdd[_0xb6b8('0x4')](_0x41b205,_0x193b7d);};}function removeListener(_0x2c61f3,_0x332e8c){return function(){OpenchannelQueueEvents[_0xb6b8('0x5')](_0x2c61f3,_0x332e8c);};}exports[_0xb6b8('0x6')]=function(_0x47afea){for(var _0x32ca9e=0x0,_0x5ad115=events[_0xb6b8('0x7')];_0x32ca9e<_0x5ad115;_0x32ca9e++){var _0x215e02=events[_0x32ca9e];var _0x17167e=createListener(_0xb6b8('0x8')+_0x215e02,_0x47afea);OpenchannelQueueEvents['on'](_0x215e02,_0x17167e);}};
\ No newline at end of file
index 8eeb9ab..c165dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43d6=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports','multer','util','path','express'];(function(_0x7be428,_0x59c7f3){var _0x323950=function(_0x37ca40){while(--_0x37ca40){_0x7be428['push'](_0x7be428['shift']());}};_0x323950(++_0x59c7f3);}(_0x43d6,0x1d8));var _0x643d=function(_0x2c354c,_0x21c9e0){_0x2c354c=_0x2c354c-0x0;var _0x691cad=_0x43d6[_0x2c354c];return _0x691cad;};'use strict';var multer=require(_0x643d('0x0'));var util=require(_0x643d('0x1'));var path=require(_0x643d('0x2'));var timeout=require('connect-timeout');var express=require(_0x643d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x643d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x643d('0x5'));var controller=require('./openchannelQueueReport.controller');router[_0x643d('0x6')]('/',auth[_0x643d('0x7')](),controller[_0x643d('0x8')]);router['get'](_0x643d('0x9'),auth[_0x643d('0x7')](),controller[_0x643d('0xa')]);router[_0x643d('0x6')](_0x643d('0xb'),auth[_0x643d('0x7')](),controller['show']);router[_0x643d('0xc')]('/',auth[_0x643d('0x7')](),controller[_0x643d('0xd')]);router['put'](_0x643d('0xb'),auth[_0x643d('0x7')](),controller[_0x643d('0xe')]);router[_0x643d('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x643d('0x10')]=router;
\ No newline at end of file
+var _0xd16b=['exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueueReport.controller','index','get','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy'];(function(_0x1161bb,_0x4d4852){var _0x5d3346=function(_0x4d8622){while(--_0x4d8622){_0x1161bb['push'](_0x1161bb['shift']());}};_0x5d3346(++_0x4d4852);}(_0xd16b,0xf8));var _0xbd16=function(_0x4428b3,_0xbfc9c0){_0x4428b3=_0x4428b3-0x0;var _0x3485eb=_0xd16b[_0x4428b3];return _0x3485eb;};'use strict';var multer=require(_0xbd16('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbd16('0x1')]();var fs_extra=require(_0xbd16('0x2'));var auth=require(_0xbd16('0x3'));var interaction=require(_0xbd16('0x4'));var config=require('../../config/environment');var controller=require(_0xbd16('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xbd16('0x6')]);router[_0xbd16('0x7')](_0xbd16('0x8'),auth[_0xbd16('0x9')](),controller['describe']);router[_0xbd16('0x7')](_0xbd16('0xa'),auth[_0xbd16('0x9')](),controller[_0xbd16('0xb')]);router[_0xbd16('0xc')]('/',auth[_0xbd16('0x9')](),controller[_0xbd16('0xd')]);router[_0xbd16('0xe')](_0xbd16('0xa'),auth[_0xbd16('0x9')](),controller[_0xbd16('0xf')]);router[_0xbd16('0x10')](_0xbd16('0xa'),auth[_0xbd16('0x9')](),controller[_0xbd16('0x11')]);module[_0xbd16('0x12')]=router;
\ No newline at end of file
index b51932b..4735a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c79=['moment','exports','STRING','DATE'];(function(_0x333fc8,_0x2b292c){var _0x432439=function(_0x5501b6){while(--_0x5501b6){_0x333fc8['push'](_0x333fc8['shift']());}};_0x432439(++_0x2b292c);}(_0x2c79,0x164));var _0x92c7=function(_0x4cfce7,_0x46da){_0x4cfce7=_0x4cfce7-0x0;var _0x53cdbd=_0x2c79[_0x4cfce7];return _0x53cdbd;};'use strict';var moment=require(_0x92c7('0x0'));var Sequelize=require('sequelize');module[_0x92c7('0x1')]={'uniqueid':{'type':Sequelize[_0x92c7('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x92c7('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x92c7('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x92c7('0x2')]}};
\ No newline at end of file
+var _0x5e0c=['exports','STRING','DATE','sequelize'];(function(_0x323419,_0xde889f){var _0xff8f74=function(_0x4f6b5a){while(--_0x4f6b5a){_0x323419['push'](_0x323419['shift']());}};_0xff8f74(++_0xde889f);}(_0x5e0c,0x19f));var _0xc5e0=function(_0x34b02a,_0xc897da){_0x34b02a=_0x34b02a-0x0;var _0x393178=_0x5e0c[_0x34b02a];return _0x393178;};'use strict';var moment=require('moment');var Sequelize=require(_0xc5e0('0x0'));module[_0xc5e0('0x1')]={'uniqueid':{'type':Sequelize[_0xc5e0('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xc5e0('0x2')]},'joinAt':{'type':Sequelize[_0xc5e0('0x3')]},'leaveAt':{'type':Sequelize[_0xc5e0('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xc5e0('0x3')]},'reason':{'type':Sequelize[_0xc5e0('0x2')]}};
\ No newline at end of file
index cfc0cd4..1b6ffca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc942=['include','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','order','sort','filter','where','VIRTUAL','merge','options','findAll','catch','show','params','keys','includeAll'];(function(_0x42c56b,_0x58ae76){var _0x13f59d=function(_0x247dfe){while(--_0x247dfe){_0x42c56b['push'](_0x42c56b['shift']());}};_0x13f59d(++_0x58ae76);}(_0xc942,0x168));var _0x2c94=function(_0x3814df,_0x591819){_0x3814df=_0x3814df-0x0;var _0x4e2c6c=_0xc942[_0x3814df];return _0x4e2c6c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c94('0x0'));var zipdir=require(_0x2c94('0x1'));var jsonpatch=require(_0x2c94('0x2'));var rp=require('request-promise');var moment=require(_0x2c94('0x3'));var BPromise=require(_0x2c94('0x4'));var Mustache=require(_0x2c94('0x5'));var util=require('util');var path=require(_0x2c94('0x6'));var sox=require(_0x2c94('0x7'));var csv=require(_0x2c94('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c94('0x9'));var _=require(_0x2c94('0xa'));var squel=require(_0x2c94('0xb'));var crypto=require('crypto');var jsforce=require(_0x2c94('0xc'));var deskjs=require(_0x2c94('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2c94('0xe'));var Papa=require('papaparse');var Redis=require(_0x2c94('0xf'));var authService=require(_0x2c94('0x10'));var qs=require(_0x2c94('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2c94('0x12'));var logger=require(_0x2c94('0x13'))(_0x2c94('0x14'));var utils=require(_0x2c94('0x15'));var config=require(_0x2c94('0x16'));var licenseUtil=require(_0x2c94('0x17'));var db=require(_0x2c94('0x18'))['db'];function respondWithStatusCode(_0x173da0,_0x2f5b06){_0x2f5b06=_0x2f5b06||0xcc;return function(_0x570335){if(_0x570335){return _0x173da0[_0x2c94('0x19')](_0x2f5b06);}return _0x173da0['status'](_0x2f5b06)[_0x2c94('0x1a')]();};}function respondWithResult(_0x110a38,_0x10e060){_0x10e060=_0x10e060||0xc8;return function(_0x1ef372){if(_0x1ef372){return _0x110a38[_0x2c94('0x1b')](_0x10e060)[_0x2c94('0x1c')](_0x1ef372);}};}function respondWithFilteredResult(_0x4ce1c8,_0x538126){return function(_0x5fd6c3){if(_0x5fd6c3){var _0xaab2a=typeof _0x538126[_0x2c94('0x1d')]==='undefined'&&typeof _0x538126[_0x2c94('0x1e')]==='undefined';var _0x42634f=_0x5fd6c3['count'];var _0x1be73b=_0xaab2a?0x0:_0x538126['offset'];var _0x32465b=_0xaab2a?_0x5fd6c3[_0x2c94('0x1f')]:_0x538126['offset']+_0x538126[_0x2c94('0x1e')];var _0xdb7d77;if(_0x32465b>=_0x42634f){_0x32465b=_0x42634f;_0xdb7d77=0xc8;}else{_0xdb7d77=0xce;}_0x4ce1c8[_0x2c94('0x1b')](_0xdb7d77);return _0x4ce1c8['set'](_0x2c94('0x20'),_0x1be73b+'-'+_0x32465b+'/'+_0x42634f)[_0x2c94('0x1c')](_0x5fd6c3);}return null;};}function patchUpdates(_0x6eee52){return function(_0x4a9765){try{jsonpatch['apply'](_0x4a9765,_0x6eee52,!![]);}catch(_0x39f2ad){return BPromise[_0x2c94('0x21')](_0x39f2ad);}return _0x4a9765[_0x2c94('0x22')]();};}function saveUpdates(_0x159470,_0x4bdc93){return function(_0x53050c){if(_0x53050c){return _0x53050c[_0x2c94('0x23')](_0x159470)[_0x2c94('0x24')](function(_0x128e33){return _0x128e33;});}return null;};}function removeEntity(_0x4d07ab,_0x2b3ca3){return function(_0x455db5){if(_0x455db5){return _0x455db5[_0x2c94('0x25')]()[_0x2c94('0x24')](function(){_0x4d07ab[_0x2c94('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x364f4e,_0xc3ca80){return function(_0xd88431){if(!_0xd88431){_0x364f4e[_0x2c94('0x19')](0x194);}return _0xd88431;};}function handleError(_0x17f6ce,_0x57ad41){_0x57ad41=_0x57ad41||0x1f4;return function(_0x2b7e41){logger['error'](_0x2b7e41[_0x2c94('0x26')]);if(_0x2b7e41[_0x2c94('0x27')]){delete _0x2b7e41['name'];}_0x17f6ce[_0x2c94('0x1b')](_0x57ad41)[_0x2c94('0x28')](_0x2b7e41);};}exports[_0x2c94('0x29')]=function(_0x3728eb,_0x1f9319){var _0x4e5a28={},_0x37587c={},_0x4e5179={'count':0x0,'rows':[]};var _0x21c1a6=_[_0x2c94('0x2a')](db[_0x2c94('0x2b')][_0x2c94('0x2c')],function(_0x1291ff){return{'name':_0x1291ff['fieldName'],'type':_0x1291ff[_0x2c94('0x2d')]['key']};});_0x37587c[_0x2c94('0x2e')]=_[_0x2c94('0x2a')](_0x21c1a6,_0x2c94('0x27'));_0x37587c[_0x2c94('0x2f')]=_['keys'](_0x3728eb[_0x2c94('0x2f')]);_0x37587c[_0x2c94('0x30')]=_['intersection'](_0x37587c['model'],_0x37587c[_0x2c94('0x2f')]);_0x4e5a28['attributes']=_[_0x2c94('0x31')](_0x37587c['model'],qs[_0x2c94('0x32')](_0x3728eb[_0x2c94('0x2f')]['fields']));_0x4e5a28[_0x2c94('0x33')]=_0x4e5a28[_0x2c94('0x33')][_0x2c94('0x34')]?_0x4e5a28['attributes']:_0x37587c[_0x2c94('0x2e')];if(!_0x3728eb[_0x2c94('0x2f')]['hasOwnProperty']('nolimit')){_0x4e5a28['limit']=qs[_0x2c94('0x1e')](_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x1e')]);_0x4e5a28[_0x2c94('0x1d')]=qs[_0x2c94('0x1d')](_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x1d')]);}_0x4e5a28[_0x2c94('0x35')]=qs[_0x2c94('0x36')](_0x3728eb[_0x2c94('0x2f')]['sort']);_0x4e5a28['where']=qs['filters'](_['pick'](_0x3728eb[_0x2c94('0x2f')],_0x37587c[_0x2c94('0x30')]),_0x21c1a6);if(_0x3728eb['query'][_0x2c94('0x37')]){_0x4e5a28[_0x2c94('0x38')]=_['merge'](_0x4e5a28[_0x2c94('0x38')],{'$or':_[_0x2c94('0x2a')](_0x21c1a6,function(_0xc00ad6){if(_0xc00ad6[_0x2c94('0x2d')]!==_0x2c94('0x39')){var _0x2b45cd={};_0x2b45cd[_0xc00ad6[_0x2c94('0x27')]]={'$like':'%'+_0x3728eb[_0x2c94('0x2f')][_0x2c94('0x37')]+'%'};return _0x2b45cd;}})});}_0x4e5a28=_[_0x2c94('0x3a')]({},_0x4e5a28,_0x3728eb[_0x2c94('0x3b')]);var _0x1ddeba={'where':_0x4e5a28[_0x2c94('0x38')]};return db[_0x2c94('0x2b')][_0x2c94('0x1f')](_0x1ddeba)[_0x2c94('0x24')](function(_0x885b79){_0x4e5179['count']=_0x885b79;if(_0x3728eb[_0x2c94('0x2f')]['includeAll']){_0x4e5a28['include']=[{'all':!![]}];}return db[_0x2c94('0x2b')][_0x2c94('0x3c')](_0x4e5a28);})[_0x2c94('0x24')](function(_0x43a798){_0x4e5179['rows']=_0x43a798;return _0x4e5179;})[_0x2c94('0x24')](respondWithFilteredResult(_0x1f9319,_0x4e5a28))[_0x2c94('0x3d')](handleError(_0x1f9319,null));};exports[_0x2c94('0x3e')]=function(_0x15fedb,_0x37f199){var _0x3a2455={'raw':!![],'where':{'id':_0x15fedb[_0x2c94('0x3f')]['id']}},_0x434b19={};_0x434b19[_0x2c94('0x2e')]=_[_0x2c94('0x40')](db['OpenchannelQueueReport']['rawAttributes']);_0x434b19['query']=_['keys'](_0x15fedb[_0x2c94('0x2f')]);_0x434b19[_0x2c94('0x30')]=_[_0x2c94('0x31')](_0x434b19[_0x2c94('0x2e')],_0x434b19['query']);_0x3a2455[_0x2c94('0x33')]=_[_0x2c94('0x31')](_0x434b19[_0x2c94('0x2e')],qs[_0x2c94('0x32')](_0x15fedb['query'][_0x2c94('0x32')]));_0x3a2455['attributes']=_0x3a2455[_0x2c94('0x33')][_0x2c94('0x34')]?_0x3a2455[_0x2c94('0x33')]:_0x434b19[_0x2c94('0x2e')];if(_0x15fedb[_0x2c94('0x2f')][_0x2c94('0x41')]){_0x3a2455[_0x2c94('0x42')]=[{'all':!![]}];}_0x3a2455=_[_0x2c94('0x3a')]({},_0x3a2455,_0x15fedb['options']);return db['OpenchannelQueueReport'][_0x2c94('0x43')](_0x3a2455)[_0x2c94('0x24')](handleEntityNotFound(_0x37f199,null))[_0x2c94('0x24')](respondWithResult(_0x37f199,null))[_0x2c94('0x3d')](handleError(_0x37f199,null));};exports[_0x2c94('0x44')]=function(_0x22a179,_0x263165){return db[_0x2c94('0x2b')][_0x2c94('0x44')](_0x22a179[_0x2c94('0x45')],{})[_0x2c94('0x24')](respondWithResult(_0x263165,0xc9))[_0x2c94('0x3d')](handleError(_0x263165,null));};exports['update']=function(_0x4c3f12,_0x58dd6e){if(_0x4c3f12[_0x2c94('0x45')]['id']){delete _0x4c3f12['body']['id'];}return db[_0x2c94('0x2b')][_0x2c94('0x43')]({'where':{'id':_0x4c3f12['params']['id']}})['then'](handleEntityNotFound(_0x58dd6e,null))['then'](saveUpdates(_0x4c3f12[_0x2c94('0x45')],null))[_0x2c94('0x24')](respondWithResult(_0x58dd6e,null))[_0x2c94('0x3d')](handleError(_0x58dd6e,null));};exports[_0x2c94('0x25')]=function(_0x48920e,_0x3834d8){return db[_0x2c94('0x2b')][_0x2c94('0x43')]({'where':{'id':_0x48920e[_0x2c94('0x3f')]['id']}})[_0x2c94('0x24')](handleEntityNotFound(_0x3834d8,null))['then'](removeEntity(_0x3834d8,null))[_0x2c94('0x3d')](handleError(_0x3834d8,null));};exports[_0x2c94('0x46')]=function(_0x2991d4,_0x2b35f4){return db[_0x2c94('0x2b')][_0x2c94('0x46')]()[_0x2c94('0x24')](respondWithResult(_0x2b35f4,null))[_0x2c94('0x3d')](handleError(_0x2b35f4,null));};
\ No newline at end of file
+var _0xaefa=['sort','where','pick','filter','merge','findAll','catch','params','keys','intersection','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','update','then','destroy','stack','name','index','OpenchannelQueueReport','rawAttributes','fieldName','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x45116f,_0xcb2b5){var _0xe8ac6c=function(_0x1df41a){while(--_0x1df41a){_0x45116f['push'](_0x45116f['shift']());}};_0xe8ac6c(++_0xcb2b5);}(_0xaefa,0x1a1));var _0xaaef=function(_0x26007f,_0x2db1c7){_0x26007f=_0x26007f-0x0;var _0x133aa5=_0xaefa[_0x26007f];return _0x133aa5;};'use strict';var emlformat=require(_0xaaef('0x0'));var rimraf=require(_0xaaef('0x1'));var zipdir=require(_0xaaef('0x2'));var jsonpatch=require(_0xaaef('0x3'));var rp=require(_0xaaef('0x4'));var moment=require(_0xaaef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xaaef('0x6'));var util=require('util');var path=require('path');var sox=require(_0xaaef('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaaef('0x8'));var _=require(_0xaaef('0x9'));var squel=require('squel');var crypto=require(_0xaaef('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xaaef('0xb'));var toCsv=require('to-csv');var querystring=require(_0xaaef('0xc'));var Papa=require(_0xaaef('0xd'));var Redis=require(_0xaaef('0xe'));var authService=require(_0xaaef('0xf'));var qs=require(_0xaaef('0x10'));var as=require(_0xaaef('0x11'));var hardwareService=require(_0xaaef('0x12'));var logger=require(_0xaaef('0x13'))('api');var utils=require(_0xaaef('0x14'));var config=require(_0xaaef('0x15'));var licenseUtil=require(_0xaaef('0x16'));var db=require(_0xaaef('0x17'))['db'];function respondWithStatusCode(_0x3fd48e,_0x23d209){_0x23d209=_0x23d209||0xcc;return function(_0x19d8c9){if(_0x19d8c9){return _0x3fd48e[_0xaaef('0x18')](_0x23d209);}return _0x3fd48e[_0xaaef('0x19')](_0x23d209)['end']();};}function respondWithResult(_0x1c20d9,_0x581d84){_0x581d84=_0x581d84||0xc8;return function(_0x2fe2d2){if(_0x2fe2d2){return _0x1c20d9['status'](_0x581d84)[_0xaaef('0x1a')](_0x2fe2d2);}};}function respondWithFilteredResult(_0x433373,_0x54c09b){return function(_0x48a215){if(_0x48a215){var _0x36e7e2=typeof _0x54c09b[_0xaaef('0x1b')]===_0xaaef('0x1c')&&typeof _0x54c09b['limit']===_0xaaef('0x1c');var _0x1e96a0=_0x48a215[_0xaaef('0x1d')];var _0x37aa4d=_0x36e7e2?0x0:_0x54c09b[_0xaaef('0x1b')];var _0x279092=_0x36e7e2?_0x48a215[_0xaaef('0x1d')]:_0x54c09b[_0xaaef('0x1b')]+_0x54c09b[_0xaaef('0x1e')];var _0x3f3ec1;if(_0x279092>=_0x1e96a0){_0x279092=_0x1e96a0;_0x3f3ec1=0xc8;}else{_0x3f3ec1=0xce;}_0x433373[_0xaaef('0x19')](_0x3f3ec1);return _0x433373[_0xaaef('0x1f')]('Content-Range',_0x37aa4d+'-'+_0x279092+'/'+_0x1e96a0)[_0xaaef('0x1a')](_0x48a215);}return null;};}function patchUpdates(_0x5561c5){return function(_0x9eb978){try{jsonpatch[_0xaaef('0x20')](_0x9eb978,_0x5561c5,!![]);}catch(_0x12e844){return BPromise[_0xaaef('0x21')](_0x12e844);}return _0x9eb978['save']();};}function saveUpdates(_0x598676,_0xc6b144){return function(_0xae43ca){if(_0xae43ca){return _0xae43ca[_0xaaef('0x22')](_0x598676)[_0xaaef('0x23')](function(_0x51103c){return _0x51103c;});}return null;};}function removeEntity(_0x316601,_0x24d570){return function(_0x5f566){if(_0x5f566){return _0x5f566[_0xaaef('0x24')]()['then'](function(){_0x316601[_0xaaef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x303f55,_0x15b12d){return function(_0x138dd3){if(!_0x138dd3){_0x303f55[_0xaaef('0x18')](0x194);}return _0x138dd3;};}function handleError(_0xf224bc,_0x2f165d){_0x2f165d=_0x2f165d||0x1f4;return function(_0x4ac093){logger['error'](_0x4ac093[_0xaaef('0x25')]);if(_0x4ac093['name']){delete _0x4ac093[_0xaaef('0x26')];}_0xf224bc[_0xaaef('0x19')](_0x2f165d)['send'](_0x4ac093);};}exports[_0xaaef('0x27')]=function(_0x1f0162,_0x200c6){var _0x4c8063={},_0xab6e00={},_0x2ecda6={'count':0x0,'rows':[]};var _0x30f794=_['map'](db[_0xaaef('0x28')][_0xaaef('0x29')],function(_0x6654c1){return{'name':_0x6654c1[_0xaaef('0x2a')],'type':_0x6654c1[_0xaaef('0x2b')]['key']};});_0xab6e00[_0xaaef('0x2c')]=_['map'](_0x30f794,_0xaaef('0x26'));_0xab6e00[_0xaaef('0x2d')]=_['keys'](_0x1f0162[_0xaaef('0x2d')]);_0xab6e00[_0xaaef('0x2e')]=_['intersection'](_0xab6e00[_0xaaef('0x2c')],_0xab6e00[_0xaaef('0x2d')]);_0x4c8063[_0xaaef('0x2f')]=_['intersection'](_0xab6e00['model'],qs[_0xaaef('0x30')](_0x1f0162[_0xaaef('0x2d')][_0xaaef('0x30')]));_0x4c8063[_0xaaef('0x2f')]=_0x4c8063[_0xaaef('0x2f')][_0xaaef('0x31')]?_0x4c8063['attributes']:_0xab6e00['model'];if(!_0x1f0162[_0xaaef('0x2d')][_0xaaef('0x32')](_0xaaef('0x33'))){_0x4c8063[_0xaaef('0x1e')]=qs[_0xaaef('0x1e')](_0x1f0162[_0xaaef('0x2d')]['limit']);_0x4c8063['offset']=qs['offset'](_0x1f0162['query'][_0xaaef('0x1b')]);}_0x4c8063['order']=qs[_0xaaef('0x34')](_0x1f0162[_0xaaef('0x2d')][_0xaaef('0x34')]);_0x4c8063[_0xaaef('0x35')]=qs[_0xaaef('0x2e')](_[_0xaaef('0x36')](_0x1f0162[_0xaaef('0x2d')],_0xab6e00[_0xaaef('0x2e')]),_0x30f794);if(_0x1f0162[_0xaaef('0x2d')]['filter']){_0x4c8063['where']=_['merge'](_0x4c8063[_0xaaef('0x35')],{'$or':_['map'](_0x30f794,function(_0x1141d4){if(_0x1141d4[_0xaaef('0x2b')]!=='VIRTUAL'){var _0x137a7a={};_0x137a7a[_0x1141d4[_0xaaef('0x26')]]={'$like':'%'+_0x1f0162[_0xaaef('0x2d')][_0xaaef('0x37')]+'%'};return _0x137a7a;}})});}_0x4c8063=_[_0xaaef('0x38')]({},_0x4c8063,_0x1f0162['options']);var _0x125bef={'where':_0x4c8063[_0xaaef('0x35')]};return db[_0xaaef('0x28')][_0xaaef('0x1d')](_0x125bef)[_0xaaef('0x23')](function(_0x4d2ef3){_0x2ecda6[_0xaaef('0x1d')]=_0x4d2ef3;if(_0x1f0162['query']['includeAll']){_0x4c8063['include']=[{'all':!![]}];}return db[_0xaaef('0x28')][_0xaaef('0x39')](_0x4c8063);})[_0xaaef('0x23')](function(_0xcf6e32){_0x2ecda6['rows']=_0xcf6e32;return _0x2ecda6;})[_0xaaef('0x23')](respondWithFilteredResult(_0x200c6,_0x4c8063))[_0xaaef('0x3a')](handleError(_0x200c6,null));};exports['show']=function(_0x2a4ae9,_0x124883){var _0x5afea4={'raw':!![],'where':{'id':_0x2a4ae9[_0xaaef('0x3b')]['id']}},_0x52e937={};_0x52e937[_0xaaef('0x2c')]=_[_0xaaef('0x3c')](db[_0xaaef('0x28')]['rawAttributes']);_0x52e937['query']=_[_0xaaef('0x3c')](_0x2a4ae9['query']);_0x52e937[_0xaaef('0x2e')]=_[_0xaaef('0x3d')](_0x52e937['model'],_0x52e937[_0xaaef('0x2d')]);_0x5afea4[_0xaaef('0x2f')]=_['intersection'](_0x52e937[_0xaaef('0x2c')],qs[_0xaaef('0x30')](_0x2a4ae9['query']['fields']));_0x5afea4['attributes']=_0x5afea4[_0xaaef('0x2f')][_0xaaef('0x31')]?_0x5afea4[_0xaaef('0x2f')]:_0x52e937[_0xaaef('0x2c')];if(_0x2a4ae9[_0xaaef('0x2d')]['includeAll']){_0x5afea4['include']=[{'all':!![]}];}_0x5afea4=_[_0xaaef('0x38')]({},_0x5afea4,_0x2a4ae9[_0xaaef('0x3e')]);return db['OpenchannelQueueReport']['find'](_0x5afea4)[_0xaaef('0x23')](handleEntityNotFound(_0x124883,null))[_0xaaef('0x23')](respondWithResult(_0x124883,null))[_0xaaef('0x3a')](handleError(_0x124883,null));};exports[_0xaaef('0x3f')]=function(_0x12c719,_0x4188bd){return db[_0xaaef('0x28')][_0xaaef('0x3f')](_0x12c719[_0xaaef('0x40')],{})['then'](respondWithResult(_0x4188bd,0xc9))[_0xaaef('0x3a')](handleError(_0x4188bd,null));};exports[_0xaaef('0x22')]=function(_0x54ebb4,_0x177f7c){if(_0x54ebb4['body']['id']){delete _0x54ebb4[_0xaaef('0x40')]['id'];}return db['OpenchannelQueueReport'][_0xaaef('0x41')]({'where':{'id':_0x54ebb4[_0xaaef('0x3b')]['id']}})[_0xaaef('0x23')](handleEntityNotFound(_0x177f7c,null))[_0xaaef('0x23')](saveUpdates(_0x54ebb4[_0xaaef('0x40')],null))[_0xaaef('0x23')](respondWithResult(_0x177f7c,null))[_0xaaef('0x3a')](handleError(_0x177f7c,null));};exports['destroy']=function(_0x27ffea,_0x56dde9){return db[_0xaaef('0x28')][_0xaaef('0x41')]({'where':{'id':_0x27ffea[_0xaaef('0x3b')]['id']}})[_0xaaef('0x23')](handleEntityNotFound(_0x56dde9,null))[_0xaaef('0x23')](removeEntity(_0x56dde9,null))[_0xaaef('0x3a')](handleError(_0x56dde9,null));};exports[_0xaaef('0x42')]=function(_0xa6cfac,_0x539ebc){return db[_0xaaef('0x28')]['describe']()['then'](respondWithResult(_0x539ebc,null))[_0xaaef('0x3a')](handleError(_0x539ebc,null));};
\ No newline at end of file
index 1bf3f4d..a8d8a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x2fdea5,_0x439310){var _0x431023=function(_0x53a145){while(--_0x53a145){_0x2fdea5['push'](_0x2fdea5['shift']());}};_0x431023(++_0x439310);}(_0x1261,0x144));var _0x1126=function(_0x1417c6,_0x194309){_0x1417c6=_0x1417c6-0x0;var _0x44db97=_0x1261[_0x1417c6];return _0x44db97;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x354e8a,_0x127c34){var _0x28c8ec=function(_0xe4310f){while(--_0xe4310f){_0x354e8a['push'](_0x354e8a['shift']());}};_0x28c8ec(++_0x127c34);}(_0x5fc3,0xa8));var _0x35fc=function(_0x334599,_0x4b1cfa){_0x334599=_0x334599-0x0;var _0x4cdff2=_0x5fc3[_0x334599];return _0x4cdff2;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d01cb24..861ca29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8caf=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','then','UpdateOpenchannelQueueReport','update','body','where','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3b9007,_0x482404){var _0xfe01e7=function(_0x199ebf){while(--_0x199ebf){_0x3b9007['push'](_0x3b9007['shift']());}};_0xfe01e7(++_0x482404);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x25ede0,_0x29dc39){_0x25ede0=_0x25ede0-0x0;var _0x16fc37=_0x8caf[_0x25ede0];return _0x16fc37;};'use strict';var _=require('lodash');var util=require(_0xf8ca('0x0'));var moment=require(_0xf8ca('0x1'));var BPromise=require(_0xf8ca('0x2'));var rs=require(_0xf8ca('0x3'));var fs=require('fs');var Redis=require(_0xf8ca('0x4'));var db=require(_0xf8ca('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf8ca('0x6'))(_0xf8ca('0x7'));var config=require(_0xf8ca('0x8'));var jayson=require(_0xf8ca('0x9'));var client=jayson[_0xf8ca('0xa')][_0xf8ca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x562eea,_0x773b9f,_0x3abd58){return new BPromise(function(_0x3a91d3,_0x31300c){return client['request'](_0x562eea,_0x3abd58)['then'](function(_0x3a9674){logger['info'](_0xf8ca('0xc'),_0x773b9f,_0xf8ca('0xd'));logger[_0xf8ca('0xe')](_0xf8ca('0xf'),_0x773b9f,'request\x20sent',JSON[_0xf8ca('0x10')](_0x3a9674));if(_0x3a9674[_0xf8ca('0x11')]){if(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x12')]===0x1f4){logger['error'](_0xf8ca('0xc'),_0x773b9f,_0x3a9674[_0xf8ca('0x11')]['message']);return _0x31300c(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);}logger[_0xf8ca('0x11')](_0xf8ca('0xc'),_0x773b9f,_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);return _0x3a91d3(_0x3a9674[_0xf8ca('0x11')][_0xf8ca('0x13')]);}else{logger[_0xf8ca('0x14')](_0xf8ca('0xc'),_0x773b9f,'request\x20sent');_0x3a91d3(_0x3a9674[_0xf8ca('0x15')][_0xf8ca('0x13')]);}})[_0xf8ca('0x16')](function(_0x12e8f0){logger[_0xf8ca('0x11')](_0xf8ca('0xc'),_0x773b9f,_0x12e8f0);_0x31300c(_0x12e8f0);});});}exports[_0xf8ca('0x17')]=function(_0x127119){var _0x50e805=this;return new Promise(function(_0x237f44,_0x3b5400){return db[_0xf8ca('0x18')][_0xf8ca('0x19')](_0x127119['body'],{'raw':_0x127119[_0xf8ca('0x1a')]?_0x127119[_0xf8ca('0x1a')][_0xf8ca('0x1b')]===undefined?!![]:![]:!![]})[_0xf8ca('0x1c')](function(_0x18e8da){logger[_0xf8ca('0x14')]('CreateOpenchannelQueueReport',_0x127119);logger[_0xf8ca('0xe')]('CreateOpenchannelQueueReport',_0x127119,JSON[_0xf8ca('0x10')](_0x18e8da));_0x237f44(_0x18e8da);})[_0xf8ca('0x16')](function(_0x179a48){logger[_0xf8ca('0x11')](_0xf8ca('0x17'),_0x179a48[_0xf8ca('0x13')],_0x127119);_0x3b5400(_0x50e805['error'](0x1f4,_0x179a48['message']));});});};exports[_0xf8ca('0x1d')]=function(_0x1d746a){var _0x4962a5=this;return new Promise(function(_0x55b944,_0x4357a2){return db[_0xf8ca('0x18')][_0xf8ca('0x1e')](_0x1d746a[_0xf8ca('0x1f')],{'raw':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')][_0xf8ca('0x20')]||null:null,'attributes':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a[_0xf8ca('0x1a')][_0xf8ca('0x21')]||null:null,'limit':_0x1d746a[_0xf8ca('0x1a')]?_0x1d746a['options']['limit']||null:null})[_0xf8ca('0x1c')](function(_0x873e43){logger[_0xf8ca('0x14')]('UpdateOpenchannelQueueReport',_0x1d746a);logger[_0xf8ca('0xe')]('UpdateOpenchannelQueueReport',_0x1d746a,JSON['stringify'](_0x873e43));_0x55b944(_0x873e43);})[_0xf8ca('0x16')](function(_0x22b4a9){logger[_0xf8ca('0x11')]('UpdateOpenchannelQueueReport',_0x22b4a9[_0xf8ca('0x13')],_0x1d746a);_0x4357a2(_0x4962a5[_0xf8ca('0x11')](0x1f4,_0x22b4a9['message']));});});};
\ No newline at end of file
+var _0x6582=['client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','OpenchannelQueueReport','create','options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x23dc45,_0x3da73f){var _0x496bdc=function(_0x543ced){while(--_0x543ced){_0x23dc45['push'](_0x23dc45['shift']());}};_0x496bdc(++_0x3da73f);}(_0x6582,0x108));var _0x2658=function(_0x58b14b,_0x5ab912){_0x58b14b=_0x58b14b-0x0;var _0x5aec73=_0x6582[_0x58b14b];return _0x5aec73;};'use strict';var _=require(_0x2658('0x0'));var util=require(_0x2658('0x1'));var moment=require(_0x2658('0x2'));var BPromise=require(_0x2658('0x3'));var rs=require(_0x2658('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2658('0x5'))['db'];var utils=require(_0x2658('0x6'));var logger=require(_0x2658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2658('0x8')][_0x2658('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cb94f,_0x3f53e7,_0x443df){return new BPromise(function(_0x412a9f,_0x52ef38){return client[_0x2658('0xa')](_0x2cb94f,_0x443df)[_0x2658('0xb')](function(_0x426744){logger[_0x2658('0xc')](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));logger[_0x2658('0xf')](_0x2658('0x10'),_0x3f53e7,_0x2658('0xe'),JSON['stringify'](_0x426744));if(_0x426744[_0x2658('0x11')]){if(_0x426744['error'][_0x2658('0x12')]===0x1f4){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x52ef38(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}logger['error'](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x412a9f(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}else{logger['info'](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));_0x412a9f(_0x426744[_0x2658('0x14')]['message']);}})[_0x2658('0x15')](function(_0x44c6d2){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x44c6d2);_0x52ef38(_0x44c6d2);});});}exports['CreateOpenchannelQueueReport']=function(_0x4eb90d){var _0x57337e=this;return new Promise(function(_0xf4193a,_0x260fc7){return db[_0x2658('0x16')][_0x2658('0x17')](_0x4eb90d['body'],{'raw':_0x4eb90d[_0x2658('0x18')]?_0x4eb90d[_0x2658('0x18')][_0x2658('0x19')]===undefined?!![]:![]:!![]})[_0x2658('0xb')](function(_0x23cf70){logger[_0x2658('0xc')]('CreateOpenchannelQueueReport',_0x4eb90d);logger[_0x2658('0xf')]('CreateOpenchannelQueueReport',_0x4eb90d,JSON['stringify'](_0x23cf70));_0xf4193a(_0x23cf70);})[_0x2658('0x15')](function(_0x132000){logger['error'](_0x2658('0x1a'),_0x132000['message'],_0x4eb90d);_0x260fc7(_0x57337e[_0x2658('0x11')](0x1f4,_0x132000[_0x2658('0x13')]));});});};exports[_0x2658('0x1b')]=function(_0x2e6d6a){var _0x31231c=this;return new Promise(function(_0x2e80fc,_0xe9f81){return db[_0x2658('0x16')][_0x2658('0x1c')](_0x2e6d6a[_0x2658('0x1d')],{'raw':_0x2e6d6a['options']?_0x2e6d6a[_0x2658('0x18')][_0x2658('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2e6d6a[_0x2658('0x18')]?_0x2e6d6a[_0x2658('0x18')][_0x2658('0x1e')]||null:null,'attributes':_0x2e6d6a[_0x2658('0x18')]?_0x2e6d6a['options'][_0x2658('0x1f')]||null:null,'limit':_0x2e6d6a[_0x2658('0x18')]?_0x2e6d6a[_0x2658('0x18')][_0x2658('0x20')]||null:null})[_0x2658('0xb')](function(_0x1492cb){logger[_0x2658('0xc')](_0x2658('0x1b'),_0x2e6d6a);logger[_0x2658('0xf')](_0x2658('0x1b'),_0x2e6d6a,JSON[_0x2658('0x21')](_0x1492cb));_0x2e80fc(_0x1492cb);})[_0x2658('0x15')](function(_0x291bb4){logger[_0x2658('0x11')](_0x2658('0x1b'),_0x291bb4[_0x2658('0x13')],_0x2e6d6a);_0xe9f81(_0x31231c[_0x2658('0x11')](0x1f4,_0x291bb4[_0x2658('0x13')]));});});};
\ No newline at end of file
index 6844d5f..74b268d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbadd=['put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x6e31dd,_0x3469ba){var _0x75a134=function(_0x4c1b2b){while(--_0x4c1b2b){_0x6e31dd['push'](_0x6e31dd['shift']());}};_0x75a134(++_0x3469ba);}(_0xbadd,0x124));var _0xdbad=function(_0x395bfe,_0x4db521){_0x395bfe=_0x395bfe-0x0;var _0x35c81c=_0xbadd[_0x395bfe];return _0x35c81c;};'use strict';var multer=require(_0xdbad('0x0'));var util=require(_0xdbad('0x1'));var path=require('path');var timeout=require(_0xdbad('0x2'));var express=require('express');var router=express[_0xdbad('0x3')]();var fs_extra=require(_0xdbad('0x4'));var auth=require(_0xdbad('0x5'));var interaction=require(_0xdbad('0x6'));var config=require(_0xdbad('0x7'));var controller=require(_0xdbad('0x8'));router[_0xdbad('0x9')]('/',auth[_0xdbad('0xa')](),controller[_0xdbad('0xb')]);router[_0xdbad('0x9')](_0xdbad('0xc'),auth[_0xdbad('0xa')](),controller[_0xdbad('0xd')]);router[_0xdbad('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdbad('0xe')]);router[_0xdbad('0xf')]('/',auth[_0xdbad('0xa')](),controller['create']);router[_0xdbad('0x10')](_0xdbad('0x11'),auth[_0xdbad('0xa')](),controller[_0xdbad('0x12')]);router[_0xdbad('0x13')](_0xdbad('0x11'),auth[_0xdbad('0xa')](),controller[_0xdbad('0x14')]);module[_0xdbad('0x15')]=router;
\ No newline at end of file
+var _0xf7d6=['describe','get','/:id','show','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','index','/describe','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf7d6,0x1e8));var _0x6f7d=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xf7d6[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x6f7d('0x0'));var util=require(_0x6f7d('0x1'));var path=require(_0x6f7d('0x2'));var timeout=require(_0x6f7d('0x3'));var express=require(_0x6f7d('0x4'));var router=express[_0x6f7d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6f7d('0x6'));var interaction=require(_0x6f7d('0x7'));var config=require('../../config/environment');var controller=require(_0x6f7d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x6f7d('0x9')]);router['get'](_0x6f7d('0xa'),auth[_0x6f7d('0xb')](),controller[_0x6f7d('0xc')]);router[_0x6f7d('0xd')](_0x6f7d('0xe'),auth[_0x6f7d('0xb')](),controller[_0x6f7d('0xf')]);router['post']('/',auth[_0x6f7d('0xb')](),controller['create']);router[_0x6f7d('0x10')](_0x6f7d('0xe'),auth[_0x6f7d('0xb')](),controller[_0x6f7d('0x11')]);router[_0x6f7d('0x12')](_0x6f7d('0xe'),auth['isAuthenticated'](),controller[_0x6f7d('0x13')]);module['exports']=router;
\ No newline at end of file
index aad3d13..fb33ca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x25f797,_0x449916){var _0x157fdd=function(_0x329fe1){while(--_0x329fe1){_0x25f797['push'](_0x25f797['shift']());}};_0x157fdd(++_0x449916);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x3eff97,_0x4fb1a5){var _0x18e274=function(_0x111756){while(--_0x111756){_0x3eff97['push'](_0x3eff97['shift']());}};_0x18e274(++_0x4fb1a5);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5c14f6,_0x2979d8){_0x5c14f6=_0x5c14f6-0x0;var _0x4949b3=_0xcb91[_0x5c14f6];return _0x4949b3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 7d2098c..742e3ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc99b=['error','stack','name','index','map','OpenchannelTransferReport','fieldName','model','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','show','params','intersection','options','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','end','sendStatus'];(function(_0xfeb767,_0x33ecb3){var _0x1ccd16=function(_0x52e57e){while(--_0x52e57e){_0xfeb767['push'](_0xfeb767['shift']());}};_0x1ccd16(++_0x33ecb3);}(_0xc99b,0x19b));var _0xbc99=function(_0x36e963,_0x61d1f9){_0x36e963=_0x36e963-0x0;var _0x5e4971=_0xc99b[_0x36e963];return _0x5e4971;};'use strict';var emlformat=require(_0xbc99('0x0'));var rimraf=require(_0xbc99('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc99('0x2'));var rp=require(_0xbc99('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbc99('0x4'));var path=require(_0xbc99('0x5'));var sox=require(_0xbc99('0x6'));var csv=require(_0xbc99('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc99('0x8'));var _=require(_0xbc99('0x9'));var squel=require(_0xbc99('0xa'));var crypto=require(_0xbc99('0xb'));var jsforce=require(_0xbc99('0xc'));var deskjs=require(_0xbc99('0xd'));var toCsv=require(_0xbc99('0x7'));var querystring=require(_0xbc99('0xe'));var Papa=require(_0xbc99('0xf'));var Redis=require(_0xbc99('0x10'));var authService=require(_0xbc99('0x11'));var qs=require(_0xbc99('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc99('0x13'));var logger=require(_0xbc99('0x14'))(_0xbc99('0x15'));var utils=require(_0xbc99('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbc99('0x17'));var db=require(_0xbc99('0x18'))['db'];function respondWithStatusCode(_0x2e2e1a,_0x2dfd1b){_0x2dfd1b=_0x2dfd1b||0xcc;return function(_0x12f083){if(_0x12f083){return _0x2e2e1a['sendStatus'](_0x2dfd1b);}return _0x2e2e1a[_0xbc99('0x19')](_0x2dfd1b)['end']();};}function respondWithResult(_0x57c152,_0x3e1589){_0x3e1589=_0x3e1589||0xc8;return function(_0x7f4b6d){if(_0x7f4b6d){return _0x57c152[_0xbc99('0x19')](_0x3e1589)[_0xbc99('0x1a')](_0x7f4b6d);}};}function respondWithFilteredResult(_0x5b1921,_0x1dc15a){return function(_0x3d1c19){if(_0x3d1c19){var _0x3c682b=typeof _0x1dc15a[_0xbc99('0x1b')]===_0xbc99('0x1c')&&typeof _0x1dc15a[_0xbc99('0x1d')]===_0xbc99('0x1c');var _0x527daa=_0x3d1c19[_0xbc99('0x1e')];var _0x244807=_0x3c682b?0x0:_0x1dc15a[_0xbc99('0x1b')];var _0x19fcf3=_0x3c682b?_0x3d1c19[_0xbc99('0x1e')]:_0x1dc15a['offset']+_0x1dc15a[_0xbc99('0x1d')];var _0x31e9e0;if(_0x19fcf3>=_0x527daa){_0x19fcf3=_0x527daa;_0x31e9e0=0xc8;}else{_0x31e9e0=0xce;}_0x5b1921[_0xbc99('0x19')](_0x31e9e0);return _0x5b1921['set']('Content-Range',_0x244807+'-'+_0x19fcf3+'/'+_0x527daa)[_0xbc99('0x1a')](_0x3d1c19);}return null;};}function patchUpdates(_0x3f2323){return function(_0x39c41f){try{jsonpatch[_0xbc99('0x1f')](_0x39c41f,_0x3f2323,!![]);}catch(_0x46a610){return BPromise[_0xbc99('0x20')](_0x46a610);}return _0x39c41f[_0xbc99('0x21')]();};}function saveUpdates(_0x4873b4,_0x217741){return function(_0x1c5213){if(_0x1c5213){return _0x1c5213[_0xbc99('0x22')](_0x4873b4)['then'](function(_0x3facfd){return _0x3facfd;});}return null;};}function removeEntity(_0x24e383,_0x299e09){return function(_0x8dca5c){if(_0x8dca5c){return _0x8dca5c[_0xbc99('0x23')]()[_0xbc99('0x24')](function(){_0x24e383[_0xbc99('0x19')](0xcc)[_0xbc99('0x25')]();});}};}function handleEntityNotFound(_0x1dfe37,_0x15e9c3){return function(_0x54d0d6){if(!_0x54d0d6){_0x1dfe37[_0xbc99('0x26')](0x194);}return _0x54d0d6;};}function handleError(_0x19c91b,_0x135ece){_0x135ece=_0x135ece||0x1f4;return function(_0x411a37){logger[_0xbc99('0x27')](_0x411a37[_0xbc99('0x28')]);if(_0x411a37[_0xbc99('0x29')]){delete _0x411a37[_0xbc99('0x29')];}_0x19c91b['status'](_0x135ece)['send'](_0x411a37);};}exports[_0xbc99('0x2a')]=function(_0x9c58d3,_0x148457){var _0x37dea3={},_0x503e04={},_0x24e125={'count':0x0,'rows':[]};var _0x5ef9d9=_[_0xbc99('0x2b')](db[_0xbc99('0x2c')]['rawAttributes'],function(_0x40376d){return{'name':_0x40376d[_0xbc99('0x2d')],'type':_0x40376d['type']['key']};});_0x503e04[_0xbc99('0x2e')]=_['map'](_0x5ef9d9,'name');_0x503e04[_0xbc99('0x2f')]=_[_0xbc99('0x30')](_0x9c58d3[_0xbc99('0x2f')]);_0x503e04[_0xbc99('0x31')]=_['intersection'](_0x503e04[_0xbc99('0x2e')],_0x503e04[_0xbc99('0x2f')]);_0x37dea3['attributes']=_['intersection'](_0x503e04[_0xbc99('0x2e')],qs[_0xbc99('0x32')](_0x9c58d3['query'][_0xbc99('0x32')]));_0x37dea3['attributes']=_0x37dea3[_0xbc99('0x33')][_0xbc99('0x34')]?_0x37dea3[_0xbc99('0x33')]:_0x503e04[_0xbc99('0x2e')];if(!_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x35')](_0xbc99('0x36'))){_0x37dea3[_0xbc99('0x1d')]=qs[_0xbc99('0x1d')](_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x1d')]);_0x37dea3['offset']=qs[_0xbc99('0x1b')](_0x9c58d3['query'][_0xbc99('0x1b')]);}_0x37dea3[_0xbc99('0x37')]=qs['sort'](_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x38')]);_0x37dea3[_0xbc99('0x39')]=qs['filters'](_[_0xbc99('0x3a')](_0x9c58d3[_0xbc99('0x2f')],_0x503e04['filters']),_0x5ef9d9);if(_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3b')]){_0x37dea3[_0xbc99('0x39')]=_['merge'](_0x37dea3[_0xbc99('0x39')],{'$or':_['map'](_0x5ef9d9,function(_0x41a430){if(_0x41a430[_0xbc99('0x3c')]!==_0xbc99('0x3d')){var _0x3fff19={};_0x3fff19[_0x41a430[_0xbc99('0x29')]]={'$like':'%'+_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3b')]+'%'};return _0x3fff19;}})});}_0x37dea3=_[_0xbc99('0x3e')]({},_0x37dea3,_0x9c58d3['options']);var _0x33a56b={'where':_0x37dea3[_0xbc99('0x39')]};return db[_0xbc99('0x2c')]['count'](_0x33a56b)[_0xbc99('0x24')](function(_0x4ccf44){_0x24e125[_0xbc99('0x1e')]=_0x4ccf44;if(_0x9c58d3[_0xbc99('0x2f')][_0xbc99('0x3f')]){_0x37dea3[_0xbc99('0x40')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xbc99('0x41')](_0x37dea3);})[_0xbc99('0x24')](function(_0x4f94f8){_0x24e125['rows']=_0x4f94f8;return _0x24e125;})['then'](respondWithFilteredResult(_0x148457,_0x37dea3))['catch'](handleError(_0x148457,null));};exports[_0xbc99('0x42')]=function(_0x2aaf20,_0x4b6579){var _0x1fe6bf={'raw':!![],'where':{'id':_0x2aaf20[_0xbc99('0x43')]['id']}},_0x412c96={};_0x412c96[_0xbc99('0x2e')]=_[_0xbc99('0x30')](db[_0xbc99('0x2c')]['rawAttributes']);_0x412c96[_0xbc99('0x2f')]=_[_0xbc99('0x30')](_0x2aaf20['query']);_0x412c96['filters']=_[_0xbc99('0x44')](_0x412c96[_0xbc99('0x2e')],_0x412c96['query']);_0x1fe6bf[_0xbc99('0x33')]=_[_0xbc99('0x44')](_0x412c96['model'],qs[_0xbc99('0x32')](_0x2aaf20[_0xbc99('0x2f')][_0xbc99('0x32')]));_0x1fe6bf[_0xbc99('0x33')]=_0x1fe6bf[_0xbc99('0x33')]['length']?_0x1fe6bf[_0xbc99('0x33')]:_0x412c96[_0xbc99('0x2e')];if(_0x2aaf20[_0xbc99('0x2f')]['includeAll']){_0x1fe6bf[_0xbc99('0x40')]=[{'all':!![]}];}_0x1fe6bf=_['merge']({},_0x1fe6bf,_0x2aaf20[_0xbc99('0x45')]);return db['OpenchannelTransferReport'][_0xbc99('0x46')](_0x1fe6bf)[_0xbc99('0x24')](handleEntityNotFound(_0x4b6579,null))[_0xbc99('0x24')](respondWithResult(_0x4b6579,null))[_0xbc99('0x47')](handleError(_0x4b6579,null));};exports['create']=function(_0x347dc0,_0x52c316){return db[_0xbc99('0x2c')][_0xbc99('0x48')](_0x347dc0[_0xbc99('0x49')],{})[_0xbc99('0x24')](respondWithResult(_0x52c316,0xc9))[_0xbc99('0x47')](handleError(_0x52c316,null));};exports[_0xbc99('0x22')]=function(_0x2de71d,_0x197fcc){if(_0x2de71d[_0xbc99('0x49')]['id']){delete _0x2de71d[_0xbc99('0x49')]['id'];}return db['OpenchannelTransferReport'][_0xbc99('0x46')]({'where':{'id':_0x2de71d['params']['id']}})[_0xbc99('0x24')](handleEntityNotFound(_0x197fcc,null))[_0xbc99('0x24')](saveUpdates(_0x2de71d['body'],null))[_0xbc99('0x24')](respondWithResult(_0x197fcc,null))['catch'](handleError(_0x197fcc,null));};exports[_0xbc99('0x23')]=function(_0x3d785a,_0x5a2d72){return db[_0xbc99('0x2c')][_0xbc99('0x46')]({'where':{'id':_0x3d785a[_0xbc99('0x43')]['id']}})[_0xbc99('0x24')](handleEntityNotFound(_0x5a2d72,null))[_0xbc99('0x24')](removeEntity(_0x5a2d72,null))[_0xbc99('0x47')](handleError(_0x5a2d72,null));};exports[_0xbc99('0x4a')]=function(_0x5a0416,_0x5d6458){return db[_0xbc99('0x2c')][_0xbc99('0x4a')]()[_0xbc99('0x24')](respondWithResult(_0x5d6458,null))[_0xbc99('0x47')](handleError(_0x5d6458,null));};
\ No newline at end of file
+var _0xea09=['api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','OpenchannelTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','zip-dir','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x9be28f,_0x231334){var _0xa9f52d=function(_0x239dad){while(--_0x239dad){_0x9be28f['push'](_0x9be28f['shift']());}};_0xa9f52d(++_0x231334);}(_0xea09,0xd0));var _0x9ea0=function(_0x388eec,_0x41bd00){_0x388eec=_0x388eec-0x0;var _0x375119=_0xea09[_0x388eec];return _0x375119;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9ea0('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9ea0('0x1'));var Mustache=require(_0x9ea0('0x2'));var util=require('util');var path=require('path');var sox=require(_0x9ea0('0x3'));var csv=require(_0x9ea0('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9ea0('0x5'));var _=require(_0x9ea0('0x6'));var squel=require(_0x9ea0('0x7'));var crypto=require(_0x9ea0('0x8'));var jsforce=require(_0x9ea0('0x9'));var deskjs=require(_0x9ea0('0xa'));var toCsv=require(_0x9ea0('0x4'));var querystring=require(_0x9ea0('0xb'));var Papa=require('papaparse');var Redis=require(_0x9ea0('0xc'));var authService=require(_0x9ea0('0xd'));var qs=require(_0x9ea0('0xe'));var as=require(_0x9ea0('0xf'));var hardwareService=require(_0x9ea0('0x10'));var logger=require('../../config/logger')(_0x9ea0('0x11'));var utils=require(_0x9ea0('0x12'));var config=require(_0x9ea0('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9ea0('0x14'))['db'];function respondWithStatusCode(_0x4b6218,_0x50a847){_0x50a847=_0x50a847||0xcc;return function(_0x3d93b2){if(_0x3d93b2){return _0x4b6218['sendStatus'](_0x50a847);}return _0x4b6218[_0x9ea0('0x15')](_0x50a847)[_0x9ea0('0x16')]();};}function respondWithResult(_0x2bfc34,_0x310b61){_0x310b61=_0x310b61||0xc8;return function(_0x435362){if(_0x435362){return _0x2bfc34[_0x9ea0('0x15')](_0x310b61)[_0x9ea0('0x17')](_0x435362);}};}function respondWithFilteredResult(_0x57181f,_0x423832){return function(_0x2c7177){if(_0x2c7177){var _0xf15b45=typeof _0x423832[_0x9ea0('0x18')]===_0x9ea0('0x19')&&typeof _0x423832[_0x9ea0('0x1a')]===_0x9ea0('0x19');var _0x5098ef=_0x2c7177[_0x9ea0('0x1b')];var _0x48f748=_0xf15b45?0x0:_0x423832['offset'];var _0x81da16=_0xf15b45?_0x2c7177[_0x9ea0('0x1b')]:_0x423832[_0x9ea0('0x18')]+_0x423832[_0x9ea0('0x1a')];var _0x207672;if(_0x81da16>=_0x5098ef){_0x81da16=_0x5098ef;_0x207672=0xc8;}else{_0x207672=0xce;}_0x57181f[_0x9ea0('0x15')](_0x207672);return _0x57181f[_0x9ea0('0x1c')](_0x9ea0('0x1d'),_0x48f748+'-'+_0x81da16+'/'+_0x5098ef)[_0x9ea0('0x17')](_0x2c7177);}return null;};}function patchUpdates(_0x544fd0){return function(_0x34211c){try{jsonpatch[_0x9ea0('0x1e')](_0x34211c,_0x544fd0,!![]);}catch(_0x147d4e){return BPromise[_0x9ea0('0x1f')](_0x147d4e);}return _0x34211c['save']();};}function saveUpdates(_0x5ee2d8,_0x4c91db){return function(_0x4c639b){if(_0x4c639b){return _0x4c639b[_0x9ea0('0x20')](_0x5ee2d8)[_0x9ea0('0x21')](function(_0x22c54c){return _0x22c54c;});}return null;};}function removeEntity(_0x4f72b3,_0x3f2a60){return function(_0x11b322){if(_0x11b322){return _0x11b322[_0x9ea0('0x22')]()['then'](function(){_0x4f72b3[_0x9ea0('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b05f1,_0x21b2ef){return function(_0x363293){if(!_0x363293){_0x2b05f1[_0x9ea0('0x23')](0x194);}return _0x363293;};}function handleError(_0x5090a1,_0x30a833){_0x30a833=_0x30a833||0x1f4;return function(_0x47e800){logger[_0x9ea0('0x24')](_0x47e800[_0x9ea0('0x25')]);if(_0x47e800['name']){delete _0x47e800[_0x9ea0('0x26')];}_0x5090a1['status'](_0x30a833)[_0x9ea0('0x27')](_0x47e800);};}exports[_0x9ea0('0x28')]=function(_0x53a88b,_0xe70355){var _0x353727={},_0x3b0aca={},_0x117dd9={'count':0x0,'rows':[]};var _0x21b08b=_[_0x9ea0('0x29')](db[_0x9ea0('0x2a')]['rawAttributes'],function(_0x134ce6){return{'name':_0x134ce6[_0x9ea0('0x2b')],'type':_0x134ce6[_0x9ea0('0x2c')][_0x9ea0('0x2d')]};});_0x3b0aca[_0x9ea0('0x2e')]=_[_0x9ea0('0x29')](_0x21b08b,'name');_0x3b0aca[_0x9ea0('0x2f')]=_[_0x9ea0('0x30')](_0x53a88b[_0x9ea0('0x2f')]);_0x3b0aca[_0x9ea0('0x31')]=_[_0x9ea0('0x32')](_0x3b0aca[_0x9ea0('0x2e')],_0x3b0aca[_0x9ea0('0x2f')]);_0x353727[_0x9ea0('0x33')]=_['intersection'](_0x3b0aca[_0x9ea0('0x2e')],qs[_0x9ea0('0x34')](_0x53a88b[_0x9ea0('0x2f')][_0x9ea0('0x34')]));_0x353727[_0x9ea0('0x33')]=_0x353727['attributes'][_0x9ea0('0x35')]?_0x353727[_0x9ea0('0x33')]:_0x3b0aca[_0x9ea0('0x2e')];if(!_0x53a88b['query'][_0x9ea0('0x36')](_0x9ea0('0x37'))){_0x353727['limit']=qs['limit'](_0x53a88b['query'][_0x9ea0('0x1a')]);_0x353727[_0x9ea0('0x18')]=qs['offset'](_0x53a88b[_0x9ea0('0x2f')][_0x9ea0('0x18')]);}_0x353727[_0x9ea0('0x38')]=qs[_0x9ea0('0x39')](_0x53a88b[_0x9ea0('0x2f')][_0x9ea0('0x39')]);_0x353727[_0x9ea0('0x3a')]=qs[_0x9ea0('0x31')](_[_0x9ea0('0x3b')](_0x53a88b[_0x9ea0('0x2f')],_0x3b0aca[_0x9ea0('0x31')]),_0x21b08b);if(_0x53a88b['query']['filter']){_0x353727['where']=_[_0x9ea0('0x3c')](_0x353727['where'],{'$or':_[_0x9ea0('0x29')](_0x21b08b,function(_0x16dc7e){if(_0x16dc7e['type']!==_0x9ea0('0x3d')){var _0x3844ba={};_0x3844ba[_0x16dc7e[_0x9ea0('0x26')]]={'$like':'%'+_0x53a88b[_0x9ea0('0x2f')][_0x9ea0('0x3e')]+'%'};return _0x3844ba;}})});}_0x353727=_[_0x9ea0('0x3c')]({},_0x353727,_0x53a88b['options']);var _0x4c92c0={'where':_0x353727[_0x9ea0('0x3a')]};return db[_0x9ea0('0x2a')]['count'](_0x4c92c0)[_0x9ea0('0x21')](function(_0x5ab612){_0x117dd9['count']=_0x5ab612;if(_0x53a88b[_0x9ea0('0x2f')][_0x9ea0('0x3f')]){_0x353727[_0x9ea0('0x40')]=[{'all':!![]}];}return db[_0x9ea0('0x2a')][_0x9ea0('0x41')](_0x353727);})['then'](function(_0x65536b){_0x117dd9[_0x9ea0('0x42')]=_0x65536b;return _0x117dd9;})[_0x9ea0('0x21')](respondWithFilteredResult(_0xe70355,_0x353727))[_0x9ea0('0x43')](handleError(_0xe70355,null));};exports[_0x9ea0('0x44')]=function(_0x344483,_0x2af0d8){var _0x39fec7={'raw':!![],'where':{'id':_0x344483[_0x9ea0('0x45')]['id']}},_0x3c9929={};_0x3c9929[_0x9ea0('0x2e')]=_[_0x9ea0('0x30')](db[_0x9ea0('0x2a')]['rawAttributes']);_0x3c9929[_0x9ea0('0x2f')]=_[_0x9ea0('0x30')](_0x344483['query']);_0x3c9929[_0x9ea0('0x31')]=_[_0x9ea0('0x32')](_0x3c9929[_0x9ea0('0x2e')],_0x3c9929[_0x9ea0('0x2f')]);_0x39fec7['attributes']=_[_0x9ea0('0x32')](_0x3c9929['model'],qs['fields'](_0x344483[_0x9ea0('0x2f')][_0x9ea0('0x34')]));_0x39fec7[_0x9ea0('0x33')]=_0x39fec7[_0x9ea0('0x33')][_0x9ea0('0x35')]?_0x39fec7['attributes']:_0x3c9929[_0x9ea0('0x2e')];if(_0x344483[_0x9ea0('0x2f')][_0x9ea0('0x3f')]){_0x39fec7[_0x9ea0('0x40')]=[{'all':!![]}];}_0x39fec7=_[_0x9ea0('0x3c')]({},_0x39fec7,_0x344483[_0x9ea0('0x46')]);return db[_0x9ea0('0x2a')][_0x9ea0('0x47')](_0x39fec7)[_0x9ea0('0x21')](handleEntityNotFound(_0x2af0d8,null))[_0x9ea0('0x21')](respondWithResult(_0x2af0d8,null))[_0x9ea0('0x43')](handleError(_0x2af0d8,null));};exports['create']=function(_0x1e52ec,_0x53adf7){return db[_0x9ea0('0x2a')][_0x9ea0('0x48')](_0x1e52ec[_0x9ea0('0x49')],{})[_0x9ea0('0x21')](respondWithResult(_0x53adf7,0xc9))['catch'](handleError(_0x53adf7,null));};exports[_0x9ea0('0x20')]=function(_0xae1354,_0x4f787c){if(_0xae1354[_0x9ea0('0x49')]['id']){delete _0xae1354[_0x9ea0('0x49')]['id'];}return db['OpenchannelTransferReport']['find']({'where':{'id':_0xae1354['params']['id']}})[_0x9ea0('0x21')](handleEntityNotFound(_0x4f787c,null))[_0x9ea0('0x21')](saveUpdates(_0xae1354[_0x9ea0('0x49')],null))[_0x9ea0('0x21')](respondWithResult(_0x4f787c,null))['catch'](handleError(_0x4f787c,null));};exports[_0x9ea0('0x22')]=function(_0x2e57db,_0x1ac727){return db['OpenchannelTransferReport'][_0x9ea0('0x47')]({'where':{'id':_0x2e57db[_0x9ea0('0x45')]['id']}})[_0x9ea0('0x21')](handleEntityNotFound(_0x1ac727,null))[_0x9ea0('0x21')](removeEntity(_0x1ac727,null))[_0x9ea0('0x43')](handleError(_0x1ac727,null));};exports[_0x9ea0('0x4a')]=function(_0x19187c,_0x13fc77){return db[_0x9ea0('0x2a')][_0x9ea0('0x4a')]()['then'](respondWithResult(_0x13fc77,null))[_0x9ea0('0x43')](handleError(_0x13fc77,null));};
\ No newline at end of file
index be9a04e..93af252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c6f=['./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','lodash','util','moment','request-promise','path'];(function(_0x2df7c7,_0x5ec3eb){var _0x42995b=function(_0x294b44){while(--_0x294b44){_0x2df7c7['push'](_0x2df7c7['shift']());}};_0x42995b(++_0x5ec3eb);}(_0x1c6f,0x145));var _0xf1c6=function(_0x3e2e66,_0x40cfd3){_0x3e2e66=_0x3e2e66-0x0;var _0x2c484f=_0x1c6f[_0x3e2e66];return _0x2c484f;};'use strict';var _=require(_0xf1c6('0x0'));var util=require(_0xf1c6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf1c6('0x2'));var BPromise=require('bluebird');var rp=require(_0xf1c6('0x3'));var fs=require('fs');var path=require(_0xf1c6('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf1c6('0x5'));module[_0xf1c6('0x6')]=function(_0x3ecb9d,_0x16cf37){return _0x3ecb9d[_0xf1c6('0x7')](_0xf1c6('0x8'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xf1c6('0x9'),'fields':[_0xf1c6('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6155=['path','rimraf','../../config/environment','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x466bce,_0x16f6ae){var _0x591708=function(_0xd2ec35){while(--_0xd2ec35){_0x466bce['push'](_0x466bce['shift']());}};_0x591708(++_0x16f6ae);}(_0x6155,0x94));var _0x5615=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x6155[_0xaa1b3e];return _0x454d7d;};'use strict';var _=require(_0x5615('0x0'));var util=require(_0x5615('0x1'));var logger=require(_0x5615('0x2'))(_0x5615('0x3'));var moment=require('moment');var BPromise=require(_0x5615('0x4'));var rp=require(_0x5615('0x5'));var fs=require('fs');var path=require(_0x5615('0x6'));var rimraf=require(_0x5615('0x7'));var config=require(_0x5615('0x8'));var attributes=require('./openchannelTransferReport.attributes');module[_0x5615('0x9')]=function(_0x569c91,_0x280e26){return _0x569c91[_0x5615('0xa')](_0x5615('0xb'),attributes,{'tableName':_0x5615('0xc'),'paranoid':![],'indexes':[{'name':_0x5615('0xd'),'fields':[_0x5615('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 72de2f5..1fc111f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19da=['error','message','info','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','code'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x19da,0x9f));var _0xa19d=function(_0x2e50a2,_0x27f31e){_0x2e50a2=_0x2e50a2-0x0;var _0x47e5de=_0x19da[_0x2e50a2];return _0x47e5de;};'use strict';var _=require('lodash');var util=require(_0xa19d('0x0'));var moment=require('moment');var BPromise=require(_0xa19d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa19d('0x2'));var db=require(_0xa19d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa19d('0x4'))(_0xa19d('0x5'));var config=require('../../config/environment');var jayson=require(_0xa19d('0x6'));var client=jayson[_0xa19d('0x7')][_0xa19d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x14dc68,_0x32da37,_0x4b4627){return new BPromise(function(_0x197c4e,_0x4e6638){return client[_0xa19d('0x9')](_0x14dc68,_0x4b4627)[_0xa19d('0xa')](function(_0x538dea){logger['info'](_0xa19d('0xb'),_0x32da37,_0xa19d('0xc'));logger[_0xa19d('0xd')](_0xa19d('0xe'),_0x32da37,_0xa19d('0xc'),JSON[_0xa19d('0xf')](_0x538dea));if(_0x538dea['error']){if(_0x538dea['error'][_0xa19d('0x10')]===0x1f4){logger[_0xa19d('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x32da37,_0x538dea['error'][_0xa19d('0x12')]);return _0x4e6638(_0x538dea[_0xa19d('0x11')]['message']);}logger[_0xa19d('0x11')](_0xa19d('0xb'),_0x32da37,_0x538dea[_0xa19d('0x11')]['message']);return _0x197c4e(_0x538dea[_0xa19d('0x11')]['message']);}else{logger[_0xa19d('0x13')](_0xa19d('0xb'),_0x32da37,_0xa19d('0xc'));_0x197c4e(_0x538dea[_0xa19d('0x14')][_0xa19d('0x12')]);}})[_0xa19d('0x15')](function(_0x2f2774){logger[_0xa19d('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x32da37,_0x2f2774);_0x4e6638(_0x2f2774);});});}
\ No newline at end of file
+var _0x05bc=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird'];(function(_0x495b35,_0x4512f3){var _0x35bbec=function(_0x14e398){while(--_0x14e398){_0x495b35['push'](_0x495b35['shift']());}};_0x35bbec(++_0x4512f3);}(_0x05bc,0xae));var _0xc05b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x05bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc05b('0x0'));var moment=require('moment');var BPromise=require(_0xc05b('0x1'));var rs=require(_0xc05b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc05b('0x3'))['db'];var utils=require(_0xc05b('0x4'));var logger=require(_0xc05b('0x5'))(_0xc05b('0x6'));var config=require(_0xc05b('0x7'));var jayson=require(_0xc05b('0x8'));var client=jayson[_0xc05b('0x9')][_0xc05b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9c6c57,_0x1b501a,_0x275f0f){return new BPromise(function(_0x143ba4,_0x45245b){return client[_0xc05b('0xb')](_0x9c6c57,_0x275f0f)['then'](function(_0x5d72b9){logger[_0xc05b('0xc')](_0xc05b('0xd'),_0x1b501a,_0xc05b('0xe'));logger[_0xc05b('0xf')](_0xc05b('0x10'),_0x1b501a,_0xc05b('0xe'),JSON[_0xc05b('0x11')](_0x5d72b9));if(_0x5d72b9[_0xc05b('0x12')]){if(_0x5d72b9[_0xc05b('0x12')]['code']===0x1f4){logger[_0xc05b('0x12')](_0xc05b('0xd'),_0x1b501a,_0x5d72b9[_0xc05b('0x12')][_0xc05b('0x13')]);return _0x45245b(_0x5d72b9[_0xc05b('0x12')][_0xc05b('0x13')]);}logger['error'](_0xc05b('0xd'),_0x1b501a,_0x5d72b9[_0xc05b('0x12')]['message']);return _0x143ba4(_0x5d72b9['error'][_0xc05b('0x13')]);}else{logger[_0xc05b('0xc')](_0xc05b('0xd'),_0x1b501a,_0xc05b('0xe'));_0x143ba4(_0x5d72b9[_0xc05b('0x14')][_0xc05b('0x13')]);}})[_0xc05b('0x15')](function(_0x5a33c1){logger[_0xc05b('0x12')](_0xc05b('0xd'),_0x1b501a,_0x5a33c1);_0x45245b(_0x5a33c1);});});}
\ No newline at end of file
index bc58637..23a0f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x755e=['delete','destroy','exports','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0xcc1317,_0x1cb075){var _0x37b34e=function(_0x2a4675){while(--_0x2a4675){_0xcc1317['push'](_0xcc1317['shift']());}};_0x37b34e(++_0x1cb075);}(_0x755e,0x1a1));var _0xe755=function(_0x53b3ee,_0x12feb7){_0x53b3ee=_0x53b3ee-0x0;var _0x50fae3=_0x755e[_0x53b3ee];return _0x50fae3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe755('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe755('0x1')]();var fs_extra=require(_0xe755('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xe755('0x3'));var config=require(_0xe755('0x4'));var controller=require(_0xe755('0x5'));router[_0xe755('0x6')]('/',auth[_0xe755('0x7')](),controller[_0xe755('0x8')]);router['get'](_0xe755('0x9'),auth[_0xe755('0x7')](),controller[_0xe755('0xa')]);router[_0xe755('0xb')]('/',auth[_0xe755('0x7')](),controller[_0xe755('0xc')]);router[_0xe755('0xd')]('/:id',auth[_0xe755('0x7')](),controller[_0xe755('0xe')]);router[_0xe755('0xf')](_0xe755('0x9'),auth[_0xe755('0x7')](),controller[_0xe755('0x10')]);module[_0xe755('0x11')]=router;
\ No newline at end of file
+var _0xa25b=['multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get','index','/:id','isAuthenticated','create','update','destroy','exports'];(function(_0xc5645,_0x23a5bd){var _0x3d6729=function(_0xbe7b6b){while(--_0xbe7b6b){_0xc5645['push'](_0xc5645['shift']());}};_0x3d6729(++_0x23a5bd);}(_0xa25b,0x170));var _0xba25=function(_0x323752,_0xa0e2f5){_0x323752=_0x323752-0x0;var _0x5e1ab8=_0xa25b[_0x323752];return _0x5e1ab8;};'use strict';var multer=require(_0xba25('0x0'));var util=require(_0xba25('0x1'));var path=require('path');var timeout=require(_0xba25('0x2'));var express=require('express');var router=express[_0xba25('0x3')]();var fs_extra=require(_0xba25('0x4'));var auth=require(_0xba25('0x5'));var interaction=require(_0xba25('0x6'));var config=require('../../config/environment');var controller=require(_0xba25('0x7'));router[_0xba25('0x8')]('/',auth['isAuthenticated'](),controller[_0xba25('0x9')]);router[_0xba25('0x8')](_0xba25('0xa'),auth[_0xba25('0xb')](),controller['show']);router['post']('/',auth[_0xba25('0xb')](),controller[_0xba25('0xc')]);router['put']('/:id',auth[_0xba25('0xb')](),controller[_0xba25('0xd')]);router['delete'](_0xba25('0xa'),auth[_0xba25('0xb')](),controller[_0xba25('0xe')]);module[_0xba25('0xf')]=router;
\ No newline at end of file
index c11caf8..fea1cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb8a=['STRING','sequelize'];(function(_0x26458f,_0x47ec3d){var _0x2023ee=function(_0x258324){while(--_0x258324){_0x26458f['push'](_0x26458f['shift']());}};_0x2023ee(++_0x47ec3d);}(_0xcb8a,0xdf));var _0xacb8=function(_0x3057d7,_0x2ed098){_0x3057d7=_0x3057d7-0x0;var _0x419ca7=_0xcb8a[_0x3057d7];return _0x419ca7;};'use strict';var Sequelize=require(_0xacb8('0x0'));module['exports']={'name':{'type':Sequelize[_0xacb8('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xacb8('0x1')]}};
\ No newline at end of file
+var _0x7de7=['name','STRING','exports'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0x7de7,0xce));var _0x77de=function(_0x595bd1,_0xb1e7a){_0x595bd1=_0x595bd1-0x0;var _0xd0344f=_0x7de7[_0x595bd1];return _0xd0344f;};'use strict';var Sequelize=require('sequelize');module[_0x77de('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x77de('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x77de('0x2')]}};
\ No newline at end of file
index 38f2176..7f0bcb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e38=['crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','send','map','Pause','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','params','keys','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Pauses','UserProfileSection','error','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3aba94,_0x50a3af){var _0x4fe677=function(_0x21701f){while(--_0x21701f){_0x3aba94['push'](_0x3aba94['shift']());}};_0x4fe677(++_0x50a3af);}(_0x2e38,0xee));var _0x82e3=function(_0x21a4ca,_0x3a2cc3){_0x21a4ca=_0x21a4ca-0x0;var _0x58f30c=_0x2e38[_0x21a4ca];return _0x58f30c;};'use strict';var emlformat=require(_0x82e3('0x0'));var rimraf=require(_0x82e3('0x1'));var zipdir=require(_0x82e3('0x2'));var jsonpatch=require(_0x82e3('0x3'));var rp=require(_0x82e3('0x4'));var moment=require(_0x82e3('0x5'));var BPromise=require(_0x82e3('0x6'));var Mustache=require(_0x82e3('0x7'));var util=require(_0x82e3('0x8'));var path=require('path');var sox=require(_0x82e3('0x9'));var csv=require(_0x82e3('0xa'));var ejs=require(_0x82e3('0xb'));var fs=require('fs');var fs_extra=require(_0x82e3('0xc'));var _=require(_0x82e3('0xd'));var squel=require('squel');var crypto=require(_0x82e3('0xe'));var jsforce=require(_0x82e3('0xf'));var deskjs=require(_0x82e3('0x10'));var toCsv=require(_0x82e3('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x82e3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x82e3('0x12'));var hardwareService=require(_0x82e3('0x13'));var logger=require(_0x82e3('0x14'))(_0x82e3('0x15'));var utils=require(_0x82e3('0x16'));var config=require(_0x82e3('0x17'));var licenseUtil=require(_0x82e3('0x18'));var db=require(_0x82e3('0x19'))['db'];function respondWithStatusCode(_0x1725c9,_0x539805){_0x539805=_0x539805||0xcc;return function(_0x282315){if(_0x282315){return _0x1725c9[_0x82e3('0x1a')](_0x539805);}return _0x1725c9['status'](_0x539805)[_0x82e3('0x1b')]();};}function respondWithResult(_0x226ef8,_0x27dbae){_0x27dbae=_0x27dbae||0xc8;return function(_0x4fa158){if(_0x4fa158){return _0x226ef8[_0x82e3('0x1c')](_0x27dbae)['json'](_0x4fa158);}};}function respondWithFilteredResult(_0x3f2c8d,_0x3cec4e){return function(_0x4f5e2d){if(_0x4f5e2d){var _0x3f82c1=typeof _0x3cec4e[_0x82e3('0x1d')]===_0x82e3('0x1e')&&typeof _0x3cec4e['limit']===_0x82e3('0x1e');var _0x2c05e6=_0x4f5e2d[_0x82e3('0x1f')];var _0x3b3c36=_0x3f82c1?0x0:_0x3cec4e[_0x82e3('0x1d')];var _0x3d1737=_0x3f82c1?_0x4f5e2d['count']:_0x3cec4e[_0x82e3('0x1d')]+_0x3cec4e[_0x82e3('0x20')];var _0x12eb80;if(_0x3d1737>=_0x2c05e6){_0x3d1737=_0x2c05e6;_0x12eb80=0xc8;}else{_0x12eb80=0xce;}_0x3f2c8d['status'](_0x12eb80);return _0x3f2c8d[_0x82e3('0x21')](_0x82e3('0x22'),_0x3b3c36+'-'+_0x3d1737+'/'+_0x2c05e6)[_0x82e3('0x23')](_0x4f5e2d);}return null;};}function patchUpdates(_0x2ecedf){return function(_0x5587b3){try{jsonpatch[_0x82e3('0x24')](_0x5587b3,_0x2ecedf,!![]);}catch(_0x9c642e){return BPromise[_0x82e3('0x25')](_0x9c642e);}return _0x5587b3[_0x82e3('0x26')]();};}function saveUpdates(_0x507b80,_0x15a1e3){return function(_0x563cca){if(_0x563cca){return _0x563cca[_0x82e3('0x27')](_0x507b80)[_0x82e3('0x28')](function(_0x563096){return _0x563096;});}return null;};}function removeEntity(_0x3f835f,_0x3cfeac){return function(_0x250b29){if(_0x250b29){return _0x250b29[_0x82e3('0x29')]()['then'](function(){var _0x2acbbb=_0x250b29[_0x82e3('0x2a')]({'plain':!![]});var _0x4c0f9b='Pauses';return db[_0x82e3('0x2b')][_0x82e3('0x29')]({'where':{'type':_0x4c0f9b,'resourceId':_0x2acbbb['id']}})[_0x82e3('0x28')](function(){return _0x250b29;});})[_0x82e3('0x28')](function(){_0x3f835f[_0x82e3('0x1c')](0xcc)[_0x82e3('0x1b')]();});}};}function handleEntityNotFound(_0xadf6f5,_0x9cd1cd){return function(_0x495693){if(!_0x495693){_0xadf6f5[_0x82e3('0x1a')](0x194);}return _0x495693;};}function handleError(_0x366b05,_0x3c04d3){_0x3c04d3=_0x3c04d3||0x1f4;return function(_0x3959d9){logger['error'](_0x3959d9[_0x82e3('0x2c')]);if(_0x3959d9[_0x82e3('0x2d')]){delete _0x3959d9[_0x82e3('0x2d')];}_0x366b05[_0x82e3('0x1c')](_0x3c04d3)[_0x82e3('0x2e')](_0x3959d9);};}exports['index']=function(_0x47df9a,_0x283124){var _0x3852fe={},_0x5ce42a={},_0x3351dc={'count':0x0,'rows':[]};var _0x3dc4f0=_[_0x82e3('0x2f')](db[_0x82e3('0x30')][_0x82e3('0x31')],function(_0x43e101){return{'name':_0x43e101[_0x82e3('0x32')],'type':_0x43e101[_0x82e3('0x33')][_0x82e3('0x34')]};});_0x5ce42a[_0x82e3('0x35')]=_['map'](_0x3dc4f0,'name');_0x5ce42a[_0x82e3('0x36')]=_['keys'](_0x47df9a[_0x82e3('0x36')]);_0x5ce42a[_0x82e3('0x37')]=_[_0x82e3('0x38')](_0x5ce42a['model'],_0x5ce42a[_0x82e3('0x36')]);_0x3852fe[_0x82e3('0x39')]=_[_0x82e3('0x38')](_0x5ce42a[_0x82e3('0x35')],qs[_0x82e3('0x3a')](_0x47df9a['query'][_0x82e3('0x3a')]));_0x3852fe[_0x82e3('0x39')]=_0x3852fe[_0x82e3('0x39')][_0x82e3('0x3b')]?_0x3852fe['attributes']:_0x5ce42a[_0x82e3('0x35')];if(!_0x47df9a[_0x82e3('0x36')][_0x82e3('0x3c')](_0x82e3('0x3d'))){_0x3852fe[_0x82e3('0x20')]=qs[_0x82e3('0x20')](_0x47df9a[_0x82e3('0x36')]['limit']);_0x3852fe[_0x82e3('0x1d')]=qs[_0x82e3('0x1d')](_0x47df9a[_0x82e3('0x36')][_0x82e3('0x1d')]);}_0x3852fe[_0x82e3('0x3e')]=qs[_0x82e3('0x3f')](_0x47df9a[_0x82e3('0x36')][_0x82e3('0x3f')]);_0x3852fe[_0x82e3('0x40')]=qs[_0x82e3('0x37')](_[_0x82e3('0x41')](_0x47df9a[_0x82e3('0x36')],_0x5ce42a[_0x82e3('0x37')]),_0x3dc4f0);if(_0x47df9a[_0x82e3('0x36')]['filter']){_0x3852fe['where']=_[_0x82e3('0x42')](_0x3852fe[_0x82e3('0x40')],{'$or':_[_0x82e3('0x2f')](_0x3dc4f0,function(_0x5dc84f){if(_0x5dc84f[_0x82e3('0x33')]!==_0x82e3('0x43')){var _0x5b4c85={};_0x5b4c85[_0x5dc84f[_0x82e3('0x2d')]]={'$like':'%'+_0x47df9a[_0x82e3('0x36')][_0x82e3('0x44')]+'%'};return _0x5b4c85;}})});}_0x3852fe=_[_0x82e3('0x42')]({},_0x3852fe,_0x47df9a['options']);var _0x19a4d3={'where':_0x3852fe[_0x82e3('0x40')]};return db['Pause'][_0x82e3('0x1f')](_0x19a4d3)['then'](function(_0x4b3d3b){_0x3351dc[_0x82e3('0x1f')]=_0x4b3d3b;if(_0x47df9a['query'][_0x82e3('0x45')]){_0x3852fe[_0x82e3('0x46')]=[{'all':!![]}];}return db[_0x82e3('0x30')][_0x82e3('0x47')](_0x3852fe);})[_0x82e3('0x28')](function(_0x5780ca){_0x3351dc['rows']=_0x5780ca;return _0x3351dc;})[_0x82e3('0x28')](respondWithFilteredResult(_0x283124,_0x3852fe))[_0x82e3('0x48')](handleError(_0x283124,null));};exports['show']=function(_0x670494,_0x153462){var _0x1a7118={'raw':!![],'where':{'id':_0x670494[_0x82e3('0x49')]['id']}},_0x15b2c3={};_0x15b2c3['model']=_[_0x82e3('0x4a')](db[_0x82e3('0x30')][_0x82e3('0x31')]);_0x15b2c3['query']=_['keys'](_0x670494[_0x82e3('0x36')]);_0x15b2c3[_0x82e3('0x37')]=_[_0x82e3('0x38')](_0x15b2c3[_0x82e3('0x35')],_0x15b2c3['query']);_0x1a7118[_0x82e3('0x39')]=_[_0x82e3('0x38')](_0x15b2c3[_0x82e3('0x35')],qs[_0x82e3('0x3a')](_0x670494['query'][_0x82e3('0x3a')]));_0x1a7118[_0x82e3('0x39')]=_0x1a7118[_0x82e3('0x39')]['length']?_0x1a7118[_0x82e3('0x39')]:_0x15b2c3[_0x82e3('0x35')];if(_0x670494[_0x82e3('0x36')][_0x82e3('0x45')]){_0x1a7118['include']=[{'all':!![]}];}_0x1a7118=_[_0x82e3('0x42')]({},_0x1a7118,_0x670494[_0x82e3('0x4b')]);return db['Pause'][_0x82e3('0x4c')](_0x1a7118)['then'](handleEntityNotFound(_0x153462,null))[_0x82e3('0x28')](respondWithResult(_0x153462,null))[_0x82e3('0x48')](handleError(_0x153462,null));};exports[_0x82e3('0x4d')]=function(_0x5a91ac,_0x44e1f2){return db[_0x82e3('0x30')][_0x82e3('0x4d')](_0x5a91ac['body'],{})[_0x82e3('0x28')](function(_0x93df8f){var _0x4bac35=_0x5a91ac[_0x82e3('0x4e')][_0x82e3('0x2a')]({'plain':!![]});if(!_0x4bac35)throw new Error(_0x82e3('0x4f'));if(_0x4bac35['role']===_0x82e3('0x4e')){var _0x4322a5=_0x93df8f[_0x82e3('0x2a')]({'plain':!![]});var _0x55716b=_0x82e3('0x50');return db[_0x82e3('0x51')][_0x82e3('0x4c')]({'where':{'name':_0x55716b,'userProfileId':_0x4bac35['userProfileId']},'raw':!![]})[_0x82e3('0x28')](function(_0x565880){if(_0x565880&&_0x565880['autoAssociation']===0x0){return db[_0x82e3('0x2b')]['create']({'name':_0x4322a5[_0x82e3('0x2d')],'resourceId':_0x4322a5['id'],'type':_0x565880[_0x82e3('0x2d')],'sectionId':_0x565880['id']},{})[_0x82e3('0x28')](function(){return _0x93df8f;});}else{return _0x93df8f;}})[_0x82e3('0x48')](function(_0x2c059c){logger[_0x82e3('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c059c);throw _0x2c059c;});}return _0x93df8f;})['then'](respondWithResult(_0x44e1f2,0xc9))[_0x82e3('0x48')](handleError(_0x44e1f2,null));};exports[_0x82e3('0x27')]=function(_0x3fa1cc,_0xbc5848){if(_0x3fa1cc[_0x82e3('0x53')]['id']){delete _0x3fa1cc[_0x82e3('0x53')]['id'];}return db[_0x82e3('0x30')]['find']({'where':{'id':_0x3fa1cc[_0x82e3('0x49')]['id']}})[_0x82e3('0x28')](handleEntityNotFound(_0xbc5848,null))[_0x82e3('0x28')](saveUpdates(_0x3fa1cc['body'],null))[_0x82e3('0x28')](respondWithResult(_0xbc5848,null))['catch'](handleError(_0xbc5848,null));};exports[_0x82e3('0x29')]=function(_0x2be31e,_0xcc6210){return db[_0x82e3('0x30')]['find']({'where':{'id':_0x2be31e[_0x82e3('0x49')]['id']}})[_0x82e3('0x28')](handleEntityNotFound(_0xcc6210,null))[_0x82e3('0x28')](removeEntity(_0xcc6210,null))['catch'](handleError(_0xcc6210,null));};
\ No newline at end of file
+var _0xa66c=['create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','map','Pause','fieldName','type','key','name','query','keys','filters','model','attributes','fields','length','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','params','rawAttributes','intersection','includeAll','find'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0xa66c,0xb0));var _0xca66=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa66c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xca66('0x0'));var rimraf=require(_0xca66('0x1'));var zipdir=require(_0xca66('0x2'));var jsonpatch=require(_0xca66('0x3'));var rp=require(_0xca66('0x4'));var moment=require(_0xca66('0x5'));var BPromise=require(_0xca66('0x6'));var Mustache=require(_0xca66('0x7'));var util=require(_0xca66('0x8'));var path=require(_0xca66('0x9'));var sox=require('sox');var csv=require(_0xca66('0xa'));var ejs=require(_0xca66('0xb'));var fs=require('fs');var fs_extra=require(_0xca66('0xc'));var _=require(_0xca66('0xd'));var squel=require(_0xca66('0xe'));var crypto=require(_0xca66('0xf'));var jsforce=require(_0xca66('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xca66('0xa'));var querystring=require('querystring');var Papa=require(_0xca66('0x11'));var Redis=require(_0xca66('0x12'));var authService=require(_0xca66('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xca66('0x14'));var hardwareService=require(_0xca66('0x15'));var logger=require(_0xca66('0x16'))(_0xca66('0x17'));var utils=require('../../config/utils');var config=require(_0xca66('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xca66('0x19'))['db'];function respondWithStatusCode(_0xe1af6e,_0x518126){_0x518126=_0x518126||0xcc;return function(_0x4499a6){if(_0x4499a6){return _0xe1af6e[_0xca66('0x1a')](_0x518126);}return _0xe1af6e[_0xca66('0x1b')](_0x518126)[_0xca66('0x1c')]();};}function respondWithResult(_0x17f46e,_0x596106){_0x596106=_0x596106||0xc8;return function(_0x26f18b){if(_0x26f18b){return _0x17f46e[_0xca66('0x1b')](_0x596106)[_0xca66('0x1d')](_0x26f18b);}};}function respondWithFilteredResult(_0x19eb94,_0x164f7c){return function(_0x27b6c6){if(_0x27b6c6){var _0x15bb3d=typeof _0x164f7c[_0xca66('0x1e')]===_0xca66('0x1f')&&typeof _0x164f7c[_0xca66('0x20')]===_0xca66('0x1f');var _0x247696=_0x27b6c6[_0xca66('0x21')];var _0x19e171=_0x15bb3d?0x0:_0x164f7c[_0xca66('0x1e')];var _0xa18349=_0x15bb3d?_0x27b6c6['count']:_0x164f7c[_0xca66('0x1e')]+_0x164f7c[_0xca66('0x20')];var _0x404270;if(_0xa18349>=_0x247696){_0xa18349=_0x247696;_0x404270=0xc8;}else{_0x404270=0xce;}_0x19eb94[_0xca66('0x1b')](_0x404270);return _0x19eb94['set'](_0xca66('0x22'),_0x19e171+'-'+_0xa18349+'/'+_0x247696)[_0xca66('0x1d')](_0x27b6c6);}return null;};}function patchUpdates(_0x169cbe){return function(_0x33179e){try{jsonpatch[_0xca66('0x23')](_0x33179e,_0x169cbe,!![]);}catch(_0x5d0a5c){return BPromise[_0xca66('0x24')](_0x5d0a5c);}return _0x33179e[_0xca66('0x25')]();};}function saveUpdates(_0x2fa893,_0x5d3bf8){return function(_0x1f0cea){if(_0x1f0cea){return _0x1f0cea[_0xca66('0x26')](_0x2fa893)[_0xca66('0x27')](function(_0x1275c4){return _0x1275c4;});}return null;};}function removeEntity(_0x2ed199,_0xcaad12){return function(_0x7ebda){if(_0x7ebda){return _0x7ebda[_0xca66('0x28')]()[_0xca66('0x27')](function(){var _0x32df15=_0x7ebda[_0xca66('0x29')]({'plain':!![]});var _0x475b1e='Pauses';return db[_0xca66('0x2a')][_0xca66('0x28')]({'where':{'type':_0x475b1e,'resourceId':_0x32df15['id']}})['then'](function(){return _0x7ebda;});})[_0xca66('0x27')](function(){_0x2ed199[_0xca66('0x1b')](0xcc)[_0xca66('0x1c')]();});}};}function handleEntityNotFound(_0x2b4d22,_0x5e5eb8){return function(_0x233756){if(!_0x233756){_0x2b4d22[_0xca66('0x1a')](0x194);}return _0x233756;};}function handleError(_0x5c4a43,_0x46e5b4){_0x46e5b4=_0x46e5b4||0x1f4;return function(_0x1a1462){logger[_0xca66('0x2b')](_0x1a1462[_0xca66('0x2c')]);if(_0x1a1462['name']){delete _0x1a1462['name'];}_0x5c4a43['status'](_0x46e5b4)[_0xca66('0x2d')](_0x1a1462);};}exports['index']=function(_0x5cbdca,_0x57bf0d){var _0x4bf105={},_0x5ed668={},_0x3acab6={'count':0x0,'rows':[]};var _0x37197c=_[_0xca66('0x2e')](db[_0xca66('0x2f')]['rawAttributes'],function(_0x61e215){return{'name':_0x61e215[_0xca66('0x30')],'type':_0x61e215[_0xca66('0x31')][_0xca66('0x32')]};});_0x5ed668['model']=_[_0xca66('0x2e')](_0x37197c,_0xca66('0x33'));_0x5ed668[_0xca66('0x34')]=_[_0xca66('0x35')](_0x5cbdca[_0xca66('0x34')]);_0x5ed668[_0xca66('0x36')]=_['intersection'](_0x5ed668[_0xca66('0x37')],_0x5ed668[_0xca66('0x34')]);_0x4bf105[_0xca66('0x38')]=_['intersection'](_0x5ed668['model'],qs[_0xca66('0x39')](_0x5cbdca[_0xca66('0x34')][_0xca66('0x39')]));_0x4bf105[_0xca66('0x38')]=_0x4bf105[_0xca66('0x38')][_0xca66('0x3a')]?_0x4bf105['attributes']:_0x5ed668['model'];if(!_0x5cbdca[_0xca66('0x34')]['hasOwnProperty']('nolimit')){_0x4bf105[_0xca66('0x20')]=qs[_0xca66('0x20')](_0x5cbdca[_0xca66('0x34')][_0xca66('0x20')]);_0x4bf105['offset']=qs['offset'](_0x5cbdca[_0xca66('0x34')][_0xca66('0x1e')]);}_0x4bf105[_0xca66('0x3b')]=qs[_0xca66('0x3c')](_0x5cbdca[_0xca66('0x34')]['sort']);_0x4bf105[_0xca66('0x3d')]=qs[_0xca66('0x36')](_['pick'](_0x5cbdca['query'],_0x5ed668[_0xca66('0x36')]),_0x37197c);if(_0x5cbdca[_0xca66('0x34')]['filter']){_0x4bf105['where']=_[_0xca66('0x3e')](_0x4bf105[_0xca66('0x3d')],{'$or':_[_0xca66('0x2e')](_0x37197c,function(_0x29daf0){if(_0x29daf0[_0xca66('0x31')]!==_0xca66('0x3f')){var _0x451c32={};_0x451c32[_0x29daf0[_0xca66('0x33')]]={'$like':'%'+_0x5cbdca[_0xca66('0x34')][_0xca66('0x40')]+'%'};return _0x451c32;}})});}_0x4bf105=_[_0xca66('0x3e')]({},_0x4bf105,_0x5cbdca[_0xca66('0x41')]);var _0x9cbe83={'where':_0x4bf105[_0xca66('0x3d')]};return db[_0xca66('0x2f')][_0xca66('0x21')](_0x9cbe83)[_0xca66('0x27')](function(_0x2fb014){_0x3acab6[_0xca66('0x21')]=_0x2fb014;if(_0x5cbdca[_0xca66('0x34')]['includeAll']){_0x4bf105[_0xca66('0x42')]=[{'all':!![]}];}return db[_0xca66('0x2f')][_0xca66('0x43')](_0x4bf105);})[_0xca66('0x27')](function(_0x292137){_0x3acab6['rows']=_0x292137;return _0x3acab6;})[_0xca66('0x27')](respondWithFilteredResult(_0x57bf0d,_0x4bf105))['catch'](handleError(_0x57bf0d,null));};exports['show']=function(_0x2a099e,_0x5bddb2){var _0x496305={'raw':!![],'where':{'id':_0x2a099e[_0xca66('0x44')]['id']}},_0xe1898={};_0xe1898[_0xca66('0x37')]=_[_0xca66('0x35')](db['Pause'][_0xca66('0x45')]);_0xe1898[_0xca66('0x34')]=_[_0xca66('0x35')](_0x2a099e[_0xca66('0x34')]);_0xe1898[_0xca66('0x36')]=_[_0xca66('0x46')](_0xe1898[_0xca66('0x37')],_0xe1898[_0xca66('0x34')]);_0x496305['attributes']=_[_0xca66('0x46')](_0xe1898[_0xca66('0x37')],qs[_0xca66('0x39')](_0x2a099e[_0xca66('0x34')][_0xca66('0x39')]));_0x496305[_0xca66('0x38')]=_0x496305[_0xca66('0x38')][_0xca66('0x3a')]?_0x496305[_0xca66('0x38')]:_0xe1898[_0xca66('0x37')];if(_0x2a099e[_0xca66('0x34')][_0xca66('0x47')]){_0x496305[_0xca66('0x42')]=[{'all':!![]}];}_0x496305=_[_0xca66('0x3e')]({},_0x496305,_0x2a099e[_0xca66('0x41')]);return db[_0xca66('0x2f')][_0xca66('0x48')](_0x496305)[_0xca66('0x27')](handleEntityNotFound(_0x5bddb2,null))[_0xca66('0x27')](respondWithResult(_0x5bddb2,null))['catch'](handleError(_0x5bddb2,null));};exports['create']=function(_0x51ac03,_0x149a3d){return db[_0xca66('0x2f')][_0xca66('0x49')](_0x51ac03[_0xca66('0x4a')],{})[_0xca66('0x27')](function(_0x2807d2){var _0x349dd3=_0x51ac03['user'][_0xca66('0x29')]({'plain':!![]});if(!_0x349dd3)throw new Error(_0xca66('0x4b'));if(_0x349dd3[_0xca66('0x4c')]===_0xca66('0x4d')){var _0x122365=_0x2807d2['get']({'plain':!![]});var _0x536e2e='Pauses';return db[_0xca66('0x4e')]['find']({'where':{'name':_0x536e2e,'userProfileId':_0x349dd3[_0xca66('0x4f')]},'raw':!![]})[_0xca66('0x27')](function(_0x216eda){if(_0x216eda&&_0x216eda[_0xca66('0x50')]===0x0){return db[_0xca66('0x2a')]['create']({'name':_0x122365[_0xca66('0x33')],'resourceId':_0x122365['id'],'type':_0x216eda[_0xca66('0x33')],'sectionId':_0x216eda['id']},{})['then'](function(){return _0x2807d2;});}else{return _0x2807d2;}})['catch'](function(_0x5ca9e3){logger[_0xca66('0x2b')](_0xca66('0x51'),_0x5ca9e3);throw _0x5ca9e3;});}return _0x2807d2;})[_0xca66('0x27')](respondWithResult(_0x149a3d,0xc9))[_0xca66('0x52')](handleError(_0x149a3d,null));};exports[_0xca66('0x26')]=function(_0x3bdf3a,_0x495fbd){if(_0x3bdf3a['body']['id']){delete _0x3bdf3a['body']['id'];}return db[_0xca66('0x2f')][_0xca66('0x48')]({'where':{'id':_0x3bdf3a[_0xca66('0x44')]['id']}})['then'](handleEntityNotFound(_0x495fbd,null))['then'](saveUpdates(_0x3bdf3a[_0xca66('0x4a')],null))[_0xca66('0x27')](respondWithResult(_0x495fbd,null))[_0xca66('0x52')](handleError(_0x495fbd,null));};exports[_0xca66('0x28')]=function(_0x2cb255,_0x37b911){return db[_0xca66('0x2f')]['find']({'where':{'id':_0x2cb255[_0xca66('0x44')]['id']}})[_0xca66('0x27')](handleEntityNotFound(_0x37b911,null))[_0xca66('0x27')](removeEntity(_0x37b911,null))[_0xca66('0x52')](handleError(_0x37b911,null));};
\ No newline at end of file
index 77e758f..b153b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','tools_pauses','lodash'];(function(_0x4405c2,_0x2624af){var _0x52709f=function(_0x190535){while(--_0x190535){_0x4405c2['push'](_0x4405c2['shift']());}};_0x52709f(++_0x2624af);}(_0xabce,0x103));var _0xeabc=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xabce[_0x4709c0];return _0x13348b;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var logger=require(_0xeabc('0x2'))(_0xeabc('0x3'));var moment=require(_0xeabc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeabc('0x5'));var rimraf=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('Pause',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x7217,0x19e));var _0x7721=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x7217[_0x3c4737];return _0x2bb926;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7618605..e017dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2fcc5f,_0x1e4124){var _0x566844=function(_0x1c53c1){while(--_0x1c53c1){_0x2fcc5f['push'](_0x2fcc5f['shift']());}};_0x566844(++_0x1e4124);}(_0x7a54,0x106));var _0x47a5=function(_0x5d30e9,_0x68034e){_0x5d30e9=_0x5d30e9-0x0;var _0xe8da44=_0x7a54[_0x5d30e9];return _0xe8da44;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x3baadc,_0x2466c1){var _0x2de16e=function(_0x4b5c60){while(--_0x4b5c60){_0x3baadc['push'](_0x3baadc['shift']());}};_0x2de16e(++_0x2466c1);}(_0x7a54,0x106));var _0x47a5=function(_0x2dab15,_0x37581f){_0x2dab15=_0x2dab15-0x0;var _0x35dfaa=_0x7a54[_0x2dab15];return _0x35dfaa;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index f714772..9ef1288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['put','update','delete','exports','multer','util','connect-timeout','express','../../components/interaction/service','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','show','/:id/download','download','diskStorage','join','originalname','replace','format','%s-%s%s','extname','post','single','file','upload'];(function(_0x258ea7,_0x28ccf6){var _0x38840a=function(_0x50f139){while(--_0x50f139){_0x258ea7['push'](_0x258ea7['shift']());}};_0x38840a(++_0x28ccf6);}(_0x0e85,0x7c));var _0x50e8=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x0e85[_0x36ed48];return _0x51c63a;};'use strict';var multer=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var path=require('path');var timeout=require(_0x50e8('0x2'));var express=require(_0x50e8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x50e8('0x4'));var config=require('../../config/environment');var controller=require(_0x50e8('0x5'));router[_0x50e8('0x6')]('/',auth[_0x50e8('0x7')](),controller[_0x50e8('0x8')]);router['get'](_0x50e8('0x9'),controller[_0x50e8('0xa')]);router[_0x50e8('0x6')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xc')]);router['get'](_0x50e8('0xd'),auth[_0x50e8('0x7')](),controller[_0x50e8('0xe')]);var upload=multer({'storage':multer[_0x50e8('0xf')]({'destination':function(_0x154b9e,_0x194a89,_0x45dc6f){_0x45dc6f(null,path[_0x50e8('0x10')](config['root'],'server/files/plugins'));},'filename':function(_0xfc6bb9,_0x24d381,_0x508377){_0x24d381['originalname']=_0x24d381[_0x50e8('0x11')][_0x50e8('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x508377(null,util[_0x50e8('0x13')](_0x50e8('0x14'),path['basename'](_0x24d381[_0x50e8('0x11')],path[_0x50e8('0x15')](_0x24d381[_0x50e8('0x11')])),Date['now'](),path['extname'](_0x24d381[_0x50e8('0x11')])));}})});router[_0x50e8('0x16')]('/',upload[_0x50e8('0x17')](_0x50e8('0x18')),controller[_0x50e8('0x19')]);router[_0x50e8('0x16')]('/webhook',controller['webhookPost']);router[_0x50e8('0x1a')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller[_0x50e8('0x1b')]);router[_0x50e8('0x1c')](_0x50e8('0xb'),auth[_0x50e8('0x7')](),controller['delete']);module[_0x50e8('0x1d')]=router;
\ No newline at end of file
+var _0x04de=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','/webhook','webhookGet','get','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','file','webhookPost'];(function(_0xac0de1,_0x12d3d9){var _0x1c1995=function(_0x3f96e8){while(--_0x3f96e8){_0xac0de1['push'](_0xac0de1['shift']());}};_0x1c1995(++_0x12d3d9);}(_0x04de,0x107));var _0xe04d=function(_0x48813b,_0x75aadd){_0x48813b=_0x48813b-0x0;var _0x22e94e=_0x04de[_0x48813b];return _0x22e94e;};'use strict';var multer=require(_0xe04d('0x0'));var util=require(_0xe04d('0x1'));var path=require(_0xe04d('0x2'));var timeout=require(_0xe04d('0x3'));var express=require(_0xe04d('0x4'));var router=express[_0xe04d('0x5')]();var fs_extra=require(_0xe04d('0x6'));var auth=require(_0xe04d('0x7'));var interaction=require(_0xe04d('0x8'));var config=require(_0xe04d('0x9'));var controller=require(_0xe04d('0xa'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe04d('0xb'),controller[_0xe04d('0xc')]);router[_0xe04d('0xd')](_0xe04d('0xe'),auth[_0xe04d('0xf')](),controller[_0xe04d('0x10')]);router[_0xe04d('0xd')](_0xe04d('0x11'),auth['isAuthenticated'](),controller[_0xe04d('0x12')]);var upload=multer({'storage':multer[_0xe04d('0x13')]({'destination':function(_0x2576b2,_0x30c46b,_0xad5c34){_0xad5c34(null,path[_0xe04d('0x14')](config[_0xe04d('0x15')],_0xe04d('0x16')));},'filename':function(_0x3ccdc8,_0x53f59a,_0x8bf2d2){_0x53f59a[_0xe04d('0x17')]=_0x53f59a[_0xe04d('0x17')][_0xe04d('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x8bf2d2(null,util[_0xe04d('0x19')](_0xe04d('0x1a'),path[_0xe04d('0x1b')](_0x53f59a[_0xe04d('0x17')],path[_0xe04d('0x1c')](_0x53f59a[_0xe04d('0x17')])),Date[_0xe04d('0x1d')](),path[_0xe04d('0x1c')](_0x53f59a['originalname'])));}})});router[_0xe04d('0x1e')]('/',upload['single'](_0xe04d('0x1f')),controller['upload']);router[_0xe04d('0x1e')](_0xe04d('0xb'),controller[_0xe04d('0x20')]);router[_0xe04d('0x21')](_0xe04d('0xe'),auth[_0xe04d('0xf')](),controller[_0xe04d('0x22')]);router[_0xe04d('0x23')](_0xe04d('0xe'),auth['isAuthenticated'](),controller[_0xe04d('0x23')]);module[_0xe04d('0x24')]=router;
\ No newline at end of file
index f146a93..02742e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87d5=['The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','STRING','ENUM','html','TEXT'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x87d5,0xd7));var _0x587d=function(_0x2e9707,_0x4600a6){_0x2e9707=_0x2e9707-0x0;var _0x276606=_0x87d5[_0x2e9707];return _0x276606;};'use strict';var Sequelize=require(_0x587d('0x0'));module['exports']={'name':{'type':Sequelize[_0x587d('0x1')]},'type':{'type':Sequelize[_0x587d('0x2')](_0x587d('0x3'),'script')},'description':{'type':Sequelize[_0x587d('0x4')]},'version':{'type':Sequelize[_0x587d('0x4')]},'path':{'type':Sequelize[_0x587d('0x1')],'comment':_0x587d('0x5')},'active':{'type':Sequelize[_0x587d('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM']('adminOnly','agentOnly',_0x587d('0x7'),_0x587d('0x8')),'defaultValue':_0x587d('0x7'),'comment':_0x587d('0x9')},'icon':{'type':Sequelize[_0x587d('0x1')]},'adminUrl':{'type':Sequelize[_0x587d('0x1')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x587d('0x1')]}};
\ No newline at end of file
+var _0x26bd=['html','script','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','STRING','ENUM'];(function(_0x24474c,_0x2c12a3){var _0x3ca102=function(_0x4fbf96){while(--_0x4fbf96){_0x24474c['push'](_0x24474c['shift']());}};_0x3ca102(++_0x2c12a3);}(_0x26bd,0xc3));var _0xd26b=function(_0x1bd0d5,_0xcecad9){_0x1bd0d5=_0x1bd0d5-0x0;var _0x6a1cc9=_0x26bd[_0x1bd0d5];return _0x6a1cc9;};'use strict';var Sequelize=require(_0xd26b('0x0'));module['exports']={'name':{'type':Sequelize[_0xd26b('0x1')]},'type':{'type':Sequelize[_0xd26b('0x2')](_0xd26b('0x3'),_0xd26b('0x4'))},'description':{'type':Sequelize[_0xd26b('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0xd26b('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xd26b('0x6')],'defaultValue':0x0,'comment':_0xd26b('0x7')},'sidebar':{'type':Sequelize[_0xd26b('0x2')]('adminOnly','agentOnly',_0xd26b('0x8'),_0xd26b('0x9')),'defaultValue':_0xd26b('0x8'),'comment':_0xd26b('0xa')},'icon':{'type':Sequelize[_0xd26b('0x1')]},'adminUrl':{'type':Sequelize[_0xd26b('0x1')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xd26b('0x1')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c4a8524..18b58a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2617=['dirname','attachments/**/*','close','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20destination:\x20%s','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20name\x20missing','type','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','parameters','admin','agent','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','plugins','test','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','method','eml-format','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','archiver','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','Plugins','sendStatus','error','stack','name','send','Plugin','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','catch','download','find','join','root','server/files/plugins','format','%s.zip','basename','zip','warning','code','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*'];(function(_0x5645ba,_0x5a49e1){var _0x1a2dab=function(_0xe391f7){while(--_0xe391f7){_0x5645ba['push'](_0x5645ba['shift']());}};_0x1a2dab(++_0x5a49e1);}(_0x2617,0xed));var _0x7261=function(_0x17763e,_0x1091fa){_0x17763e=_0x17763e-0x0;var _0x35c5d4=_0x2617[_0x17763e];return _0x35c5d4;};'use strict';var emlformat=require(_0x7261('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7261('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7261('0x2'));var moment=require(_0x7261('0x3'));var BPromise=require(_0x7261('0x4'));var Mustache=require('mustache');var util=require(_0x7261('0x5'));var path=require(_0x7261('0x6'));var sox=require('sox');var csv=require(_0x7261('0x7'));var ejs=require(_0x7261('0x8'));var fs=require('fs');var fs_extra=require(_0x7261('0x9'));var _=require(_0x7261('0xa'));var squel=require(_0x7261('0xb'));var crypto=require(_0x7261('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7261('0xd'));var Papa=require(_0x7261('0xe'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0x7261('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7261('0x10'));var as=require(_0x7261('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7261('0x12'))('api');var utils=require(_0x7261('0x13'));var config=require(_0x7261('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7261('0x15'))['db'];config[_0x7261('0x16')]=_[_0x7261('0x17')](config[_0x7261('0x16')],{'host':_0x7261('0x18'),'port':0x18eb});var socket=require(_0x7261('0x19'))(new Redis(config[_0x7261('0x16')]));require(_0x7261('0x1a'))[_0x7261('0x1b')](socket);function respondWithStatusCode(_0x5941e5,_0x5cf756){_0x5cf756=_0x5cf756||0xcc;return function(_0x2b525c){if(_0x2b525c){return _0x5941e5['sendStatus'](_0x5cf756);}return _0x5941e5[_0x7261('0x1c')](_0x5cf756)[_0x7261('0x1d')]();};}function respondWithResult(_0x179e64,_0xea069c){_0xea069c=_0xea069c||0xc8;return function(_0x2dcec1){if(_0x2dcec1){return _0x179e64[_0x7261('0x1c')](_0xea069c)[_0x7261('0x1e')](_0x2dcec1);}};}function respondWithFilteredResult(_0x3fa626,_0x57a471){return function(_0x25b67a){if(_0x25b67a){var _0x48f1cf=typeof _0x57a471[_0x7261('0x1f')]==='undefined'&&typeof _0x57a471[_0x7261('0x20')]===_0x7261('0x21');var _0x5e15ee=_0x25b67a[_0x7261('0x22')];var _0x534d29=_0x48f1cf?0x0:_0x57a471['offset'];var _0x1c5239=_0x48f1cf?_0x25b67a[_0x7261('0x22')]:_0x57a471[_0x7261('0x1f')]+_0x57a471[_0x7261('0x20')];var _0x56a793;if(_0x1c5239>=_0x5e15ee){_0x1c5239=_0x5e15ee;_0x56a793=0xc8;}else{_0x56a793=0xce;}_0x3fa626[_0x7261('0x1c')](_0x56a793);return _0x3fa626[_0x7261('0x23')](_0x7261('0x24'),_0x534d29+'-'+_0x1c5239+'/'+_0x5e15ee)[_0x7261('0x1e')](_0x25b67a);}return null;};}function patchUpdates(_0x1caf17){return function(_0x5af995){try{jsonpatch['apply'](_0x5af995,_0x1caf17,!![]);}catch(_0x2da391){return BPromise['reject'](_0x2da391);}return _0x5af995['save']();};}function saveUpdates(_0x2f492c,_0x2026c3){return function(_0x297bdd){if(_0x297bdd){return _0x297bdd[_0x7261('0x25')](_0x2f492c)[_0x7261('0x26')](function(_0x5e4f9f){return _0x5e4f9f;});}return null;};}function removeEntity(_0x39028d,_0x362fb3){return function(_0x42db99){if(_0x42db99){return _0x42db99[_0x7261('0x27')]()[_0x7261('0x26')](function(){var _0x21b0dd=_0x42db99[_0x7261('0x28')]({'plain':!![]});var _0x165321=_0x7261('0x29');return db['UserProfileResource'][_0x7261('0x27')]({'where':{'type':_0x165321,'resourceId':_0x21b0dd['id']}})[_0x7261('0x26')](function(){return _0x42db99;});})[_0x7261('0x26')](function(){_0x39028d[_0x7261('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x378a64,_0x165974){return function(_0x45e0f8){if(!_0x45e0f8){_0x378a64[_0x7261('0x2a')](0x194);}return _0x45e0f8;};}function handleError(_0x251d10,_0x2c8192){_0x2c8192=_0x2c8192||0x1f4;return function(_0x294697){logger[_0x7261('0x2b')](_0x294697[_0x7261('0x2c')]);if(_0x294697[_0x7261('0x2d')]){delete _0x294697[_0x7261('0x2d')];}_0x251d10[_0x7261('0x1c')](_0x2c8192)[_0x7261('0x2e')](_0x294697);};}exports['index']=function(_0x4da8c2,_0x18e89b){var _0x5bc81f={},_0x2bc080={},_0x506674={'count':0x0,'rows':[]};var _0x424f3e=_['map'](db[_0x7261('0x2f')][_0x7261('0x30')],function(_0x132736){return{'name':_0x132736[_0x7261('0x31')],'type':_0x132736['type']['key']};});_0x2bc080[_0x7261('0x32')]=_[_0x7261('0x33')](_0x424f3e,_0x7261('0x2d'));_0x2bc080[_0x7261('0x34')]=_[_0x7261('0x35')](_0x4da8c2[_0x7261('0x34')]);_0x2bc080[_0x7261('0x36')]=_[_0x7261('0x37')](_0x2bc080[_0x7261('0x32')],_0x2bc080['query']);_0x5bc81f[_0x7261('0x38')]=_[_0x7261('0x37')](_0x2bc080['model'],qs[_0x7261('0x39')](_0x4da8c2['query'][_0x7261('0x39')]));_0x5bc81f[_0x7261('0x38')]=_0x5bc81f[_0x7261('0x38')][_0x7261('0x3a')]?_0x5bc81f[_0x7261('0x38')]:_0x2bc080['model'];if(!_0x4da8c2['query'][_0x7261('0x3b')](_0x7261('0x3c'))){_0x5bc81f[_0x7261('0x20')]=qs['limit'](_0x4da8c2[_0x7261('0x34')][_0x7261('0x20')]);_0x5bc81f['offset']=qs[_0x7261('0x1f')](_0x4da8c2['query']['offset']);}_0x5bc81f['order']=qs['sort'](_0x4da8c2[_0x7261('0x34')][_0x7261('0x3d')]);_0x5bc81f[_0x7261('0x3e')]=qs[_0x7261('0x36')](_['pick'](_0x4da8c2['query'],_0x2bc080[_0x7261('0x36')]),_0x424f3e);if(_0x4da8c2[_0x7261('0x34')]['filter']){_0x5bc81f[_0x7261('0x3e')]=_['merge'](_0x5bc81f[_0x7261('0x3e')],{'$or':_[_0x7261('0x33')](_0x424f3e,function(_0x441f1c){if(_0x441f1c['type']!==_0x7261('0x3f')){var _0x26d3de={};_0x26d3de[_0x441f1c[_0x7261('0x2d')]]={'$like':'%'+_0x4da8c2['query'][_0x7261('0x40')]+'%'};return _0x26d3de;}})});}_0x5bc81f=_[_0x7261('0x41')]({},_0x5bc81f,_0x4da8c2[_0x7261('0x42')]);var _0x599441={'where':_0x5bc81f[_0x7261('0x3e')]};return db['Plugin'][_0x7261('0x22')](_0x599441)[_0x7261('0x26')](function(_0xb0bf41){_0x506674[_0x7261('0x22')]=_0xb0bf41;if(_0x4da8c2[_0x7261('0x34')][_0x7261('0x43')]){_0x5bc81f[_0x7261('0x44')]=[{'all':!![]}];}return db[_0x7261('0x2f')][_0x7261('0x45')](_0x5bc81f);})[_0x7261('0x26')](function(_0x42ff42){_0x506674[_0x7261('0x46')]=_0x42ff42;return _0x506674;})[_0x7261('0x26')](respondWithFilteredResult(_0x18e89b,_0x5bc81f))['catch'](handleError(_0x18e89b,null));};exports[_0x7261('0x47')]=function(_0x5c2fcd,_0x40e7c9){var _0x4f8c04={'raw':!![],'where':{'id':_0x5c2fcd[_0x7261('0x48')]['id']}},_0x15efab={};_0x15efab[_0x7261('0x32')]=_[_0x7261('0x35')](db[_0x7261('0x2f')][_0x7261('0x30')]);_0x15efab[_0x7261('0x34')]=_[_0x7261('0x35')](_0x5c2fcd[_0x7261('0x34')]);_0x15efab[_0x7261('0x36')]=_[_0x7261('0x37')](_0x15efab[_0x7261('0x32')],_0x15efab['query']);_0x4f8c04[_0x7261('0x38')]=_[_0x7261('0x37')](_0x15efab[_0x7261('0x32')],qs[_0x7261('0x39')](_0x5c2fcd['query'][_0x7261('0x39')]));_0x4f8c04[_0x7261('0x38')]=_0x4f8c04[_0x7261('0x38')][_0x7261('0x3a')]?_0x4f8c04['attributes']:_0x15efab[_0x7261('0x32')];if(_0x5c2fcd[_0x7261('0x34')][_0x7261('0x43')]){_0x4f8c04[_0x7261('0x44')]=[{'all':!![]}];}_0x4f8c04=_['merge']({},_0x4f8c04,_0x5c2fcd[_0x7261('0x42')]);return db['Plugin']['find'](_0x4f8c04)[_0x7261('0x26')](handleEntityNotFound(_0x40e7c9,null))['then'](respondWithResult(_0x40e7c9,null))[_0x7261('0x49')](handleError(_0x40e7c9,null));};exports[_0x7261('0x4a')]=function(_0x219b17,_0x165cf1,_0x1155af){return db['Plugin'][_0x7261('0x4b')]({'where':{'id':_0x219b17[_0x7261('0x48')]['id']},'attributes':[_0x7261('0x2d'),_0x7261('0x6')],'raw':!![]})[_0x7261('0x26')](handleEntityNotFound(_0x165cf1,null))[_0x7261('0x26')](function(_0x23e21e){if(_0x23e21e){var _0x52d1d9=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),util[_0x7261('0x4f')](_0x7261('0x50'),path[_0x7261('0x51')](_0x23e21e['path'])));var _0x18d6d5=fs['createWriteStream'](_0x52d1d9);var _0x42021a=archiver(_0x7261('0x52'),{'zlib':{'level':0x9}});_0x42021a['on'](_0x7261('0x53'),function(_0x28d684){if(_0x28d684[_0x7261('0x54')]==='ENOENT'){logger[_0x7261('0x2b')](_0x28d684);}else{throw new db['Sequelize'][(_0x7261('0x55'))](_0x7261('0x56'));}});_0x42021a['on'](_0x7261('0x2b'),function(_0x36d4a7){throw new db[(_0x7261('0x57'))][(_0x7261('0x55'))](_0x7261('0x56'));});_0x42021a[_0x7261('0x58')](_0x18d6d5);_0x42021a[_0x7261('0x59')](_0x7261('0x5a'),{'cwd':path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),path[_0x7261('0x5b')](_0x23e21e[_0x7261('0x6')])),'ignore':[path[_0x7261('0x4c')](path['basename'](_0x23e21e[_0x7261('0x6')]),'node_modules/**/*'),path['join'](path[_0x7261('0x51')](_0x23e21e[_0x7261('0x6')]),_0x7261('0x5c'))],'nodir':!![]})['finalize']();_0x18d6d5['on'](_0x7261('0x5d'),function(){if(!fs['existsSync'](_0x52d1d9)){throw new db[(_0x7261('0x57'))][(_0x7261('0x55'))]('Plugin\x20not\x20found');}return _0x165cf1[_0x7261('0x4a')](_0x52d1d9,util[_0x7261('0x4f')](_0x7261('0x50'),path[_0x7261('0x51')](_0x23e21e[_0x7261('0x6')])),function(_0x1a94cb){if(_0x1a94cb){throw new db[(_0x7261('0x57'))]['Error'](_0x7261('0x5e'));}fs[_0x7261('0x5f')](_0x52d1d9);logger[_0x7261('0x60')](_0x7261('0x61'));logger['info'](_0x7261('0x62'));});});}return null;})[_0x7261('0x49')](handleError(_0x165cf1,null));};exports[_0x7261('0x63')]=function(_0x3000a0,_0x854ecc,_0x4bccd6){var _0x1bcee5=path[_0x7261('0x51')](_0x3000a0[_0x7261('0x64')][_0x7261('0x65')],path[_0x7261('0x66')](_0x3000a0[_0x7261('0x64')]['filename']));var _0x2e179e=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),_0x3000a0[_0x7261('0x64')][_0x7261('0x65')]);var _0x368035=path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),_0x1bcee5);logger[_0x7261('0x60')]('Plugin\x20upload\x20filepath:\x20%s',_0x2e179e);logger['info'](_0x7261('0x67'),_0x368035);try{fs['chmodSync'](_0x2e179e,parseInt('0777',0x8));extract(_0x2e179e,{'dir':_0x368035},function(_0x1ff631){if(_0x1ff631){logger['error'](_0x1ff631);handleError(_0x1ff631,!![]);};var _0x19ef91=fs[_0x7261('0x68')](_0x368035);if(_0x19ef91[_0x7261('0x3a')]>0x1){removeReferences(_0x2e179e,_0x368035);logger['error'](_0x7261('0x69'));return _0x4bccd6(new Error('Invalid\x20plugin\x20structure'));}var _0x550261=fs[_0x7261('0x6a')](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0]));if(_0x550261[_0x7261('0x6b')]()){removeReferences(_0x2e179e,_0x368035);logger[_0x7261('0x2b')](_0x7261('0x69'));return _0x4bccd6(new Error('Invalid\x20plugin\x20structure'));}if(_0x550261[_0x7261('0x6c')]()){var _0xe4a7d4=fs['readdirSync'](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0]));if(_0xe4a7d4[_0x7261('0x3a')]===0x0){removeReferences(_0x2e179e,_0x368035);logger[_0x7261('0x2b')](_0x7261('0x69'));return _0x4bccd6(new Error(_0x7261('0x69')));}var _0x28c781=_0xe4a7d4[_0x7261('0x6d')](function(_0x279548){return _0x279548===_0x7261('0x6e');});if(!_0x28c781){return _0x4bccd6(new Error(_0x7261('0x6f')));}var _0x273f1e=fs[_0x7261('0x70')](path[_0x7261('0x4c')](_0x368035,_0x19ef91[0x0],_0x7261('0x6e')));var _0x307cdc=JSON['parse'](_0x273f1e);if('undefined'==typeof _0x307cdc[_0x7261('0x2d')]){return _0x4bccd6(new Error(_0x7261('0x71')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x72')]){return _0x4bccd6(new Error(_0x7261('0x73')));}if('undefined'==typeof _0x307cdc[_0x7261('0x74')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x7261('0x21')==typeof _0x307cdc['parameters']){return _0x4bccd6(new Error(_0x7261('0x75')));}if(_0x307cdc[_0x7261('0x72')]===_0x7261('0x76')){if('undefined'==typeof _0x307cdc['parameters'][_0x7261('0x77')]){return _0x4bccd6(new Error(_0x7261('0x78')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')]['views'][_0x7261('0x7a')]&&_0x7261('0x21')==typeof _0x307cdc['parameters']['views'][_0x7261('0x7b')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x307cdc[_0x7261('0x72')]===_0x7261('0x7c')){if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')]['scriptName']){return _0x4bccd6(new Error(_0x7261('0x7d')));}if(_0x7261('0x21')==typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x7e')]){return _0x4bccd6(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x4bccd6(new Error(_0x7261('0x7f')));}var _0x4ebc0b=_0x307cdc['name'];var _0x2ff662=_0x307cdc[_0x7261('0x80')];var _0x549b0e=_0x307cdc[_0x7261('0x72')];var _0x30b467=_0x307cdc[_0x7261('0x81')]?_0x307cdc[_0x7261('0x81')]:_0x7261('0x82');var _0x5c909c=_0x307cdc[_0x7261('0x83')]?_0x307cdc['icon']:_0x7261('0x84');var _0x22ffc4='';var _0x500bac='';var _0x356092='';var _0x3e2cea='';var _0x3902e0=_0x307cdc['version'];if(_0x549b0e==='html'){if('undefined'!=typeof _0x307cdc[_0x7261('0x79')]['views'][_0x7261('0x7a')]){var _0x587307=_0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7a')];if(!/^(f|ht)tps?:\/\//i['test'](_0x587307)){_0x22ffc4=path[_0x7261('0x4c')](_0x7261('0x85'),_0x1bcee5,_0x19ef91[0x0],_0x587307);}else{_0x22ffc4=_0x587307;}}else{logger[_0x7261('0x60')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')]){var _0x53b720=_0x307cdc['parameters'][_0x7261('0x77')][_0x7261('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x7261('0x86')](_0x53b720)){_0x500bac=path[_0x7261('0x4c')](_0x7261('0x85'),_0x1bcee5,_0x19ef91[0x0],_0x53b720);}else{_0x500bac=_0x53b720;}}else{logger[_0x7261('0x60')](_0x7261('0x87'));}}else if(_0x549b0e==='script'){_0x356092=_0x307cdc[_0x7261('0x79')][_0x7261('0x88')];_0x3e2cea=_0x307cdc[_0x7261('0x79')][_0x7261('0x7e')];if('undefined'!=typeof _0x307cdc[_0x7261('0x79')]['views']){if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7a')]){var _0x587307=_0x307cdc['parameters'][_0x7261('0x77')][_0x7261('0x7a')];if(!/^(f|ht)tps?:\/\//i[_0x7261('0x86')](_0x587307)){_0x22ffc4=path['join']('plugins',_0x1bcee5,_0x19ef91[0x0],_0x587307);}else{_0x22ffc4=_0x587307;}}if(_0x7261('0x21')!=typeof _0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')]){var _0x53b720=_0x307cdc[_0x7261('0x79')][_0x7261('0x77')][_0x7261('0x7b')];if(!/^(f|ht)tps?:\/\//i['test'](_0x53b720)){_0x500bac=path[_0x7261('0x4c')]('plugins',_0x1bcee5,_0x19ef91[0x0],_0x53b720);}else{_0x500bac=_0x53b720;}}}}var _0x4bfd20={'name':_0x4ebc0b,'description':_0x2ff662,'path':path[_0x7261('0x4c')](_0x1bcee5,_0x19ef91[0x0]),'type':_0x549b0e,'sidebar':_0x30b467,'icon':_0x5c909c,'adminUrl':_0x22ffc4,'agentUrl':_0x500bac,'scriptName':_0x356092,'scriptPath':_0x3e2cea,'version':_0x3902e0};removeReferences(_0x2e179e,null);return db[_0x7261('0x2f')][_0x7261('0x89')](_0x4bfd20)[_0x7261('0x26')](function(_0x33fb5a){var _0x476f5e={'role':_0x3000a0['body'][_0x7261('0x8a')],'userProfileId':_0x3000a0[_0x7261('0x8b')][_0x7261('0x8c')]};if(!_0x476f5e)throw new Error(_0x7261('0x8d'));if(_0x476f5e[_0x7261('0x8a')]==='user'){var _0x288519=_0x33fb5a[_0x7261('0x28')]({'plain':!![]});return db[_0x7261('0x8e')]['find']({'where':{'name':_0x7261('0x29'),'userProfileId':_0x476f5e[_0x7261('0x8c')]},'raw':!![]})[_0x7261('0x26')](function(_0x10eb41){if(_0x10eb41&&_0x10eb41[_0x7261('0x8f')]===0x0){return db['UserProfileResource'][_0x7261('0x89')]({'name':_0x288519[_0x7261('0x2d')],'resourceId':_0x288519['id'],'type':_0x10eb41[_0x7261('0x2d')],'sectionId':_0x10eb41['id']},{})[_0x7261('0x26')](function(){return _0x33fb5a;});}else{return _0x33fb5a;}})['catch'](function(_0x1b985a){logger[_0x7261('0x2b')](_0x7261('0x90'),_0x1b985a);throw _0x1b985a;});}return _0x33fb5a;})[_0x7261('0x26')](respondWithResult(_0x854ecc,null))[_0x7261('0x49')](handleError(_0x854ecc,null));}});}catch(_0xce442f){_0x854ecc[_0x7261('0x1c')](0x1f4)[_0x7261('0x2e')](_0xce442f);}};function removeReferences(_0x174ae4,_0x395b55){try{if(_0x174ae4){fs[_0x7261('0x5f')](_0x174ae4);logger[_0x7261('0x60')](_0x7261('0x91'));}if(_0x395b55){rimraf(_0x395b55,function(){});logger['info'](_0x7261('0x92'));}}catch(_0xa5df5){logger[_0x7261('0x2b')](_0xa5df5);}}exports[_0x7261('0x25')]=function(_0x3fe926,_0x407f35,_0x836357){return db[_0x7261('0x2f')][_0x7261('0x4b')]({'where':{'id':_0x3fe926[_0x7261('0x48')]['id']}})[_0x7261('0x26')](handleEntityNotFound(_0x407f35,null))['then'](saveUpdates(_0x3fe926['body'],null))[_0x7261('0x26')](respondWithResult(_0x407f35,null))[_0x7261('0x49')](handleError(_0x407f35,null));};exports[_0x7261('0x93')]=function(_0x44015a,_0x2ff1fe,_0x3ad992){return db[_0x7261('0x2f')][_0x7261('0x4b')]({'where':{'id':_0x44015a['params']['id']}})[_0x7261('0x26')](function(_0xcc153b){if(_0xcc153b){return _0xcc153b[_0x7261('0x27')]();}})[_0x7261('0x26')](function(_0x5ab166){rimraf(path[_0x7261('0x4c')](config[_0x7261('0x4d')],_0x7261('0x4e'),path[_0x7261('0x5b')](_0x5ab166['path'])),function(){});return _0x5ab166;})[_0x7261('0x26')](handleEntityNotFound(_0x2ff1fe,null))['then'](respondWithStatusCode(_0x2ff1fe,null))[_0x7261('0x49')](handleError(_0x2ff1fe,null));};exports[_0x7261('0x94')]=function(_0x375def,_0x304f56,_0x5702a4){return BPromise[_0x7261('0x95')]()['then'](function(){if(!_0x375def[_0x7261('0x34')][_0x7261('0x6')]){throw new Error(_0x7261('0x96'));}if(!_0x375def['query'][_0x7261('0x97')]){throw new Error(_0x7261('0x98'));}var _0x259069=_0x375def[_0x7261('0x34')][_0x7261('0x99')]?_0x375def[_0x7261('0x34')][_0x7261('0x99')]+':'+_0x375def['query'][_0x7261('0x97')]:_0x7261('0x9a')+_0x375def['query'][_0x7261('0x97')];var _0x3d73bc=_0x375def['query'][_0x7261('0x1e')]?_0x375def['query'][_0x7261('0x1e')]:!![];var _0x5a3d2e=_0x375def[_0x7261('0x34')]['encoding']?_0x375def['query'][_0x7261('0x9b')]:null;var _0x451b63={'method':_0x375def['method'],'uri':util['format'](_0x7261('0x9c'),_0x259069,_0x375def['query'][_0x7261('0x6')]),'json':_0x3d73bc,'resolveWithFullResponse':!![],'encoding':_0x5a3d2e,'qs':_0x375def[_0x7261('0x34')]};if(_0x375def[_0x7261('0x9d')]){_0x451b63[_0x7261('0x9d')]=_0x375def[_0x7261('0x9d')];if(_0x451b63[_0x7261('0x9d')][_0x7261('0x9e')]){delete _0x451b63['headers'][_0x7261('0x9e')];}}if(_0x451b63[_0x7261('0x9d')][_0x7261('0x9f')]){delete _0x451b63['headers'][_0x7261('0x9f')];}return rp(_0x451b63);})[_0x7261('0x26')](function(_0x186bee){if(_0x186bee){_0x304f56[_0x7261('0x23')](_0x186bee[_0x7261('0x9d')]);logger[_0x7261('0x60')](_0x186bee[_0x7261('0x8b')]);if(_[_0x7261('0xa0')](_0x375def[_0x7261('0x34')][_0x7261('0x6')],_0x7261('0x4a'))&&_0x186bee['statusCode']==0x1f4){return _0x304f56[_0x7261('0x2a')](_0x186bee[_0x7261('0xa1')]);}else{return _0x304f56['status'](_0x186bee[_0x7261('0xa1')])['send'](_0x186bee['body']);}}else{return _0x304f56['sendStatus'](0xc8);}})[_0x7261('0x49')](handleError(_0x304f56,null));};exports[_0x7261('0xa2')]=function(_0x474bab,_0x2101b8,_0xd1a41f){return BPromise[_0x7261('0x95')]()[_0x7261('0x26')](function(){if(!_0x474bab['query']['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x474bab[_0x7261('0x34')]['port']){throw new Error(_0x7261('0x98'));}var _0x4b0c6e=_0x474bab[_0x7261('0x34')][_0x7261('0x99')]?_0x474bab[_0x7261('0x34')][_0x7261('0x99')]+':'+_0x474bab['query'][_0x7261('0x97')]:_0x7261('0x9a')+_0x474bab[_0x7261('0x34')][_0x7261('0x97')];var _0x2455fd=_0x474bab['query'][_0x7261('0x1e')]?_0x474bab[_0x7261('0x34')][_0x7261('0x1e')]:!![];var _0x23c530=_0x474bab[_0x7261('0x34')]['encoding']?_0x474bab['query']['encoding']:null;var _0x8f1d1b={'method':_0x474bab[_0x7261('0xa3')],'uri':util[_0x7261('0x4f')]('%s%s',_0x4b0c6e,_0x474bab[_0x7261('0x34')][_0x7261('0x6')]),'json':_0x2455fd,'resolveWithFullResponse':!![],'encoding':_0x23c530,'body':_0x474bab[_0x7261('0x8b')]};if(_0x474bab[_0x7261('0x9d')]){_0x8f1d1b[_0x7261('0x9d')]=_0x474bab[_0x7261('0x9d')];if(_0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9e')]){delete _0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9e')];}}if(_0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9f')]){delete _0x8f1d1b[_0x7261('0x9d')][_0x7261('0x9f')];}return rp(_0x8f1d1b);})[_0x7261('0x26')](function(_0x14f6f2){if(_0x14f6f2){_0x2101b8[_0x7261('0x23')](_0x14f6f2[_0x7261('0x9d')]);logger[_0x7261('0x60')](_0x14f6f2['body']);return _0x2101b8[_0x7261('0x1c')](_0x14f6f2[_0x7261('0xa1')])[_0x7261('0x2e')](_0x14f6f2[_0x7261('0x8b')]);}else{return _0x2101b8[_0x7261('0x2a')](0xc8);}})[_0x7261('0x49')](handleError(_0x2101b8,null));};
\ No newline at end of file
+var _0x283d=['UserProfileResource','destroy','error','stack','name','index','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','length','sort','pick','filter','where','merge','options','Plugin','count','include','findAll','rows','catch','params','includeAll','find','download','path','root','server/files/plugins','format','basename','createWriteStream','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','finalize','close','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','join','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','some','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','scriptPath','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','headers','content-length','content-type','endsWith','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','extract-zip','archiver','ioredis','../../config/license/hardware','../../config/environment','../../config/license/util','redis','defaults','register','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','update','then','get','Plugins'];(function(_0x53b9c9,_0x44f7e6){var _0x459055=function(_0x4c4b6e){while(--_0x4c4b6e){_0x53b9c9['push'](_0x53b9c9['shift']());}};_0x459055(++_0x44f7e6);}(_0x283d,0x1be));var _0xd283=function(_0x4e1d35,_0x45157e){_0x4e1d35=_0x4e1d35-0x0;var _0x59aca6=_0x283d[_0x4e1d35];return _0x59aca6;};'use strict';var emlformat=require(_0xd283('0x0'));var rimraf=require(_0xd283('0x1'));var zipdir=require(_0xd283('0x2'));var jsonpatch=require(_0xd283('0x3'));var rp=require('request-promise');var moment=require(_0xd283('0x4'));var BPromise=require(_0xd283('0x5'));var Mustache=require(_0xd283('0x6'));var util=require(_0xd283('0x7'));var path=require('path');var sox=require(_0xd283('0x8'));var csv=require(_0xd283('0x9'));var ejs=require(_0xd283('0xa'));var fs=require('fs');var fs_extra=require(_0xd283('0xb'));var _=require('lodash');var squel=require(_0xd283('0xc'));var crypto=require(_0xd283('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd283('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd283('0xf'));var Papa=require(_0xd283('0x10'));var extract=require(_0xd283('0x11'));var rimraf=require('rimraf');var archiver=require(_0xd283('0x12'));var Redis=require(_0xd283('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd283('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xd283('0x15'));var licenseUtil=require(_0xd283('0x16'));var db=require('../../mysqldb')['db'];config[_0xd283('0x17')]=_[_0xd283('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd283('0x17')]));require('./plugin.socket')[_0xd283('0x19')](socket);function respondWithStatusCode(_0x17c0ee,_0x3b326b){_0x3b326b=_0x3b326b||0xcc;return function(_0x4857f4){if(_0x4857f4){return _0x17c0ee[_0xd283('0x1a')](_0x3b326b);}return _0x17c0ee[_0xd283('0x1b')](_0x3b326b)[_0xd283('0x1c')]();};}function respondWithResult(_0x1dbab3,_0x538638){_0x538638=_0x538638||0xc8;return function(_0x524fca){if(_0x524fca){return _0x1dbab3['status'](_0x538638)[_0xd283('0x1d')](_0x524fca);}};}function respondWithFilteredResult(_0x38b734,_0x5ded19){return function(_0x11be32){if(_0x11be32){var _0x43cda1=typeof _0x5ded19[_0xd283('0x1e')]==='undefined'&&typeof _0x5ded19[_0xd283('0x1f')]===_0xd283('0x20');var _0x188658=_0x11be32['count'];var _0x4d3af2=_0x43cda1?0x0:_0x5ded19[_0xd283('0x1e')];var _0x54c113=_0x43cda1?_0x11be32['count']:_0x5ded19[_0xd283('0x1e')]+_0x5ded19[_0xd283('0x1f')];var _0x45d9ba;if(_0x54c113>=_0x188658){_0x54c113=_0x188658;_0x45d9ba=0xc8;}else{_0x45d9ba=0xce;}_0x38b734[_0xd283('0x1b')](_0x45d9ba);return _0x38b734[_0xd283('0x21')]('Content-Range',_0x4d3af2+'-'+_0x54c113+'/'+_0x188658)[_0xd283('0x1d')](_0x11be32);}return null;};}function patchUpdates(_0x30a9ce){return function(_0x1e3d78){try{jsonpatch[_0xd283('0x22')](_0x1e3d78,_0x30a9ce,!![]);}catch(_0x9813e5){return BPromise[_0xd283('0x23')](_0x9813e5);}return _0x1e3d78['save']();};}function saveUpdates(_0x5dd191,_0x2753f2){return function(_0x3a952b){if(_0x3a952b){return _0x3a952b[_0xd283('0x24')](_0x5dd191)[_0xd283('0x25')](function(_0x44c878){return _0x44c878;});}return null;};}function removeEntity(_0x2f9d6b,_0x364e7e){return function(_0x2fb655){if(_0x2fb655){return _0x2fb655['destroy']()[_0xd283('0x25')](function(){var _0x67046=_0x2fb655[_0xd283('0x26')]({'plain':!![]});var _0x4751b9=_0xd283('0x27');return db[_0xd283('0x28')][_0xd283('0x29')]({'where':{'type':_0x4751b9,'resourceId':_0x67046['id']}})[_0xd283('0x25')](function(){return _0x2fb655;});})['then'](function(){_0x2f9d6b[_0xd283('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4aad25,_0x4500a8){return function(_0x15db66){if(!_0x15db66){_0x4aad25[_0xd283('0x1a')](0x194);}return _0x15db66;};}function handleError(_0x5e040e,_0x516757){_0x516757=_0x516757||0x1f4;return function(_0x598546){logger[_0xd283('0x2a')](_0x598546[_0xd283('0x2b')]);if(_0x598546[_0xd283('0x2c')]){delete _0x598546[_0xd283('0x2c')];}_0x5e040e[_0xd283('0x1b')](_0x516757)['send'](_0x598546);};}exports[_0xd283('0x2d')]=function(_0x2f66e5,_0x58ae51){var _0x57bcb3={},_0x2f9e9c={},_0x58758e={'count':0x0,'rows':[]};var _0x4eaaa4=_['map'](db['Plugin'][_0xd283('0x2e')],function(_0x3f9c24){return{'name':_0x3f9c24['fieldName'],'type':_0x3f9c24[_0xd283('0x2f')]['key']};});_0x2f9e9c[_0xd283('0x30')]=_[_0xd283('0x31')](_0x4eaaa4,'name');_0x2f9e9c[_0xd283('0x32')]=_[_0xd283('0x33')](_0x2f66e5['query']);_0x2f9e9c[_0xd283('0x34')]=_[_0xd283('0x35')](_0x2f9e9c['model'],_0x2f9e9c[_0xd283('0x32')]);_0x57bcb3[_0xd283('0x36')]=_[_0xd283('0x35')](_0x2f9e9c[_0xd283('0x30')],qs[_0xd283('0x37')](_0x2f66e5[_0xd283('0x32')][_0xd283('0x37')]));_0x57bcb3['attributes']=_0x57bcb3[_0xd283('0x36')][_0xd283('0x38')]?_0x57bcb3[_0xd283('0x36')]:_0x2f9e9c['model'];if(!_0x2f66e5[_0xd283('0x32')]['hasOwnProperty']('nolimit')){_0x57bcb3[_0xd283('0x1f')]=qs['limit'](_0x2f66e5[_0xd283('0x32')]['limit']);_0x57bcb3[_0xd283('0x1e')]=qs[_0xd283('0x1e')](_0x2f66e5[_0xd283('0x32')][_0xd283('0x1e')]);}_0x57bcb3['order']=qs[_0xd283('0x39')](_0x2f66e5[_0xd283('0x32')][_0xd283('0x39')]);_0x57bcb3['where']=qs[_0xd283('0x34')](_[_0xd283('0x3a')](_0x2f66e5['query'],_0x2f9e9c[_0xd283('0x34')]),_0x4eaaa4);if(_0x2f66e5[_0xd283('0x32')][_0xd283('0x3b')]){_0x57bcb3[_0xd283('0x3c')]=_['merge'](_0x57bcb3['where'],{'$or':_[_0xd283('0x31')](_0x4eaaa4,function(_0x4fc519){if(_0x4fc519['type']!=='VIRTUAL'){var _0x16e7fb={};_0x16e7fb[_0x4fc519[_0xd283('0x2c')]]={'$like':'%'+_0x2f66e5[_0xd283('0x32')][_0xd283('0x3b')]+'%'};return _0x16e7fb;}})});}_0x57bcb3=_[_0xd283('0x3d')]({},_0x57bcb3,_0x2f66e5[_0xd283('0x3e')]);var _0x3c1bdc={'where':_0x57bcb3[_0xd283('0x3c')]};return db[_0xd283('0x3f')]['count'](_0x3c1bdc)[_0xd283('0x25')](function(_0x14ef42){_0x58758e[_0xd283('0x40')]=_0x14ef42;if(_0x2f66e5[_0xd283('0x32')]['includeAll']){_0x57bcb3[_0xd283('0x41')]=[{'all':!![]}];}return db[_0xd283('0x3f')][_0xd283('0x42')](_0x57bcb3);})['then'](function(_0x565e21){_0x58758e[_0xd283('0x43')]=_0x565e21;return _0x58758e;})[_0xd283('0x25')](respondWithFilteredResult(_0x58ae51,_0x57bcb3))[_0xd283('0x44')](handleError(_0x58ae51,null));};exports['show']=function(_0x1a0707,_0x5c3816){var _0x5d3f71={'raw':!![],'where':{'id':_0x1a0707[_0xd283('0x45')]['id']}},_0xe8924a={};_0xe8924a['model']=_[_0xd283('0x33')](db['Plugin'][_0xd283('0x2e')]);_0xe8924a['query']=_[_0xd283('0x33')](_0x1a0707['query']);_0xe8924a[_0xd283('0x34')]=_['intersection'](_0xe8924a['model'],_0xe8924a[_0xd283('0x32')]);_0x5d3f71[_0xd283('0x36')]=_[_0xd283('0x35')](_0xe8924a[_0xd283('0x30')],qs[_0xd283('0x37')](_0x1a0707['query'][_0xd283('0x37')]));_0x5d3f71[_0xd283('0x36')]=_0x5d3f71[_0xd283('0x36')][_0xd283('0x38')]?_0x5d3f71[_0xd283('0x36')]:_0xe8924a[_0xd283('0x30')];if(_0x1a0707[_0xd283('0x32')][_0xd283('0x46')]){_0x5d3f71['include']=[{'all':!![]}];}_0x5d3f71=_[_0xd283('0x3d')]({},_0x5d3f71,_0x1a0707[_0xd283('0x3e')]);return db[_0xd283('0x3f')][_0xd283('0x47')](_0x5d3f71)['then'](handleEntityNotFound(_0x5c3816,null))[_0xd283('0x25')](respondWithResult(_0x5c3816,null))['catch'](handleError(_0x5c3816,null));};exports[_0xd283('0x48')]=function(_0x39a258,_0x146543,_0x24f6d0){return db['Plugin'][_0xd283('0x47')]({'where':{'id':_0x39a258[_0xd283('0x45')]['id']},'attributes':[_0xd283('0x2c'),_0xd283('0x49')],'raw':!![]})[_0xd283('0x25')](handleEntityNotFound(_0x146543,null))[_0xd283('0x25')](function(_0x54cf14){if(_0x54cf14){var _0xdee147=path['join'](config[_0xd283('0x4a')],_0xd283('0x4b'),util[_0xd283('0x4c')]('%s.zip',path[_0xd283('0x4d')](_0x54cf14[_0xd283('0x49')])));var _0x1bc3ca=fs[_0xd283('0x4e')](_0xdee147);var _0x3cdd9f=archiver('zip',{'zlib':{'level':0x9}});_0x3cdd9f['on'](_0xd283('0x4f'),function(_0xf925df){if(_0xf925df[_0xd283('0x50')]===_0xd283('0x51')){logger[_0xd283('0x2a')](_0xf925df);}else{throw new db[(_0xd283('0x52'))]['Error'](_0xd283('0x53'));}});_0x3cdd9f['on'](_0xd283('0x2a'),function(_0x723178){throw new db[(_0xd283('0x52'))][(_0xd283('0x54'))](_0xd283('0x53'));});_0x3cdd9f[_0xd283('0x55')](_0x1bc3ca);_0x3cdd9f[_0xd283('0x56')](_0xd283('0x57'),{'cwd':path['join'](config[_0xd283('0x4a')],_0xd283('0x4b'),path['dirname'](_0x54cf14[_0xd283('0x49')])),'ignore':[path['join'](path['basename'](_0x54cf14[_0xd283('0x49')]),'node_modules/**/*'),path['join'](path['basename'](_0x54cf14[_0xd283('0x49')]),'attachments/**/*')],'nodir':!![]})[_0xd283('0x58')]();_0x1bc3ca['on'](_0xd283('0x59'),function(){if(!fs['existsSync'](_0xdee147)){throw new db[(_0xd283('0x52'))]['Error']('Plugin\x20not\x20found');}return _0x146543[_0xd283('0x48')](_0xdee147,util['format'](_0xd283('0x5a'),path[_0xd283('0x4d')](_0x54cf14[_0xd283('0x49')])),function(_0x6c28a7){if(_0x6c28a7){throw new db['Sequelize'][(_0xd283('0x54'))](_0xd283('0x5b'));}fs[_0xd283('0x5c')](_0xdee147);logger[_0xd283('0x5d')](_0xd283('0x5e'));logger['info'](_0xd283('0x5f'));});});}return null;})[_0xd283('0x44')](handleError(_0x146543,null));};exports[_0xd283('0x60')]=function(_0x40efb1,_0x48d4ce,_0x4b61ee){var _0x12d963=path[_0xd283('0x4d')](_0x40efb1[_0xd283('0x61')]['filename'],path[_0xd283('0x62')](_0x40efb1[_0xd283('0x61')][_0xd283('0x63')]));var _0x5e6aff=path[_0xd283('0x64')](config[_0xd283('0x4a')],_0xd283('0x4b'),_0x40efb1['file']['filename']);var _0x2535dd=path[_0xd283('0x64')](config[_0xd283('0x4a')],_0xd283('0x4b'),_0x12d963);logger[_0xd283('0x5d')]('Plugin\x20upload\x20filepath:\x20%s',_0x5e6aff);logger[_0xd283('0x5d')](_0xd283('0x65'),_0x2535dd);try{fs[_0xd283('0x66')](_0x5e6aff,parseInt(_0xd283('0x67'),0x8));extract(_0x5e6aff,{'dir':_0x2535dd},function(_0x527caa){if(_0x527caa){logger[_0xd283('0x2a')](_0x527caa);handleError(_0x527caa,!![]);};var _0x24156a=fs[_0xd283('0x68')](_0x2535dd);if(_0x24156a[_0xd283('0x38')]>0x1){removeReferences(_0x5e6aff,_0x2535dd);logger[_0xd283('0x2a')](_0xd283('0x69'));return _0x4b61ee(new Error('Invalid\x20plugin\x20structure'));}var _0x500e80=fs[_0xd283('0x6a')](path[_0xd283('0x64')](_0x2535dd,_0x24156a[0x0]));if(_0x500e80[_0xd283('0x6b')]()){removeReferences(_0x5e6aff,_0x2535dd);logger[_0xd283('0x2a')](_0xd283('0x69'));return _0x4b61ee(new Error(_0xd283('0x69')));}if(_0x500e80['isDirectory']()){var _0x34c7c2=fs[_0xd283('0x68')](path[_0xd283('0x64')](_0x2535dd,_0x24156a[0x0]));if(_0x34c7c2['length']===0x0){removeReferences(_0x5e6aff,_0x2535dd);logger[_0xd283('0x2a')](_0xd283('0x69'));return _0x4b61ee(new Error('Invalid\x20plugin\x20structure'));}var _0xf0ce38=_0x34c7c2[_0xd283('0x6c')](function(_0x5edc19){return _0x5edc19==='manifest.json';});if(!_0xf0ce38){return _0x4b61ee(new Error('Plugin\x20manifest\x20missing'));}var _0x4b4151=fs[_0xd283('0x6d')](path[_0xd283('0x64')](_0x2535dd,_0x24156a[0x0],_0xd283('0x6e')));var _0x484203=JSON[_0xd283('0x6f')](_0x4b4151);if(_0xd283('0x20')==typeof _0x484203['name']){return _0x4b61ee(new Error(_0xd283('0x70')));}if(_0xd283('0x20')==typeof _0x484203['type']){return _0x4b61ee(new Error(_0xd283('0x71')));}if(_0xd283('0x20')==typeof _0x484203['version']){return _0x4b61ee(new Error(_0xd283('0x72')));}if(_0xd283('0x20')==typeof _0x484203[_0xd283('0x73')]){return _0x4b61ee(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x484203['type']===_0xd283('0x74')){if('undefined'==typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')]){return _0x4b61ee(new Error(_0xd283('0x76')));}if(_0xd283('0x20')==typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')][_0xd283('0x77')]&&_0xd283('0x20')==typeof _0x484203['parameters']['views'][_0xd283('0x78')]){return _0x4b61ee(new Error(_0xd283('0x79')));}}else if(_0x484203[_0xd283('0x2f')]==='script'){if(_0xd283('0x20')==typeof _0x484203[_0xd283('0x73')][_0xd283('0x7a')]){return _0x4b61ee(new Error(_0xd283('0x7b')));}if(_0xd283('0x20')==typeof _0x484203[_0xd283('0x73')]['scriptPath']){return _0x4b61ee(new Error(_0xd283('0x7c')));}}else{return _0x4b61ee(new Error(_0xd283('0x7d')));}var _0x452949=_0x484203[_0xd283('0x2c')];var _0x1636a6=_0x484203[_0xd283('0x7e')];var _0xcd8f4f=_0x484203[_0xd283('0x2f')];var _0x1dc3a7=_0x484203[_0xd283('0x7f')]?_0x484203[_0xd283('0x7f')]:_0xd283('0x80');var _0x29ccbd=_0x484203[_0xd283('0x81')]?_0x484203['icon']:_0xd283('0x82');var _0xd4d477='';var _0x2e040a='';var _0x375d47='';var _0x355521='';var _0x1be10d=_0x484203['version'];if(_0xcd8f4f==='html'){if(_0xd283('0x20')!=typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')][_0xd283('0x77')]){var _0x3c6ded=_0x484203['parameters'][_0xd283('0x75')][_0xd283('0x77')];if(!/^(f|ht)tps?:\/\//i[_0xd283('0x83')](_0x3c6ded)){_0xd4d477=path[_0xd283('0x64')](_0xd283('0x84'),_0x12d963,_0x24156a[0x0],_0x3c6ded);}else{_0xd4d477=_0x3c6ded;}}else{logger[_0xd283('0x5d')](_0xd283('0x85'));}if('undefined'!=typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')][_0xd283('0x78')]){var _0x21dd0a=_0x484203['parameters'][_0xd283('0x75')][_0xd283('0x78')];if(!/^(f|ht)tps?:\/\//i['test'](_0x21dd0a)){_0x2e040a=path[_0xd283('0x64')](_0xd283('0x84'),_0x12d963,_0x24156a[0x0],_0x21dd0a);}else{_0x2e040a=_0x21dd0a;}}else{logger[_0xd283('0x5d')](_0xd283('0x86'));}}else if(_0xcd8f4f===_0xd283('0x87')){_0x375d47=_0x484203[_0xd283('0x73')]['scriptName'];_0x355521=_0x484203[_0xd283('0x73')][_0xd283('0x88')];if(_0xd283('0x20')!=typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')]){if('undefined'!=typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')][_0xd283('0x77')]){var _0x3c6ded=_0x484203[_0xd283('0x73')]['views'][_0xd283('0x77')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3c6ded)){_0xd4d477=path[_0xd283('0x64')](_0xd283('0x84'),_0x12d963,_0x24156a[0x0],_0x3c6ded);}else{_0xd4d477=_0x3c6ded;}}if(_0xd283('0x20')!=typeof _0x484203[_0xd283('0x73')][_0xd283('0x75')]['agent']){var _0x21dd0a=_0x484203['parameters'][_0xd283('0x75')][_0xd283('0x78')];if(!/^(f|ht)tps?:\/\//i[_0xd283('0x83')](_0x21dd0a)){_0x2e040a=path[_0xd283('0x64')]('plugins',_0x12d963,_0x24156a[0x0],_0x21dd0a);}else{_0x2e040a=_0x21dd0a;}}}}var _0x4aeee6={'name':_0x452949,'description':_0x1636a6,'path':path[_0xd283('0x64')](_0x12d963,_0x24156a[0x0]),'type':_0xcd8f4f,'sidebar':_0x1dc3a7,'icon':_0x29ccbd,'adminUrl':_0xd4d477,'agentUrl':_0x2e040a,'scriptName':_0x375d47,'scriptPath':_0x355521,'version':_0x1be10d};removeReferences(_0x5e6aff,null);return db[_0xd283('0x3f')][_0xd283('0x89')](_0x4aeee6)[_0xd283('0x25')](function(_0xfef475){var _0x309865={'role':_0x40efb1[_0xd283('0x8a')][_0xd283('0x8b')],'userProfileId':_0x40efb1[_0xd283('0x8a')][_0xd283('0x8c')]};if(!_0x309865)throw new Error(_0xd283('0x8d'));if(_0x309865[_0xd283('0x8b')]==='user'){var _0x25626e=_0xfef475[_0xd283('0x26')]({'plain':!![]});return db[_0xd283('0x8e')]['find']({'where':{'name':'Plugins','userProfileId':_0x309865['userProfileId']},'raw':!![]})['then'](function(_0x204b6b){if(_0x204b6b&&_0x204b6b[_0xd283('0x8f')]===0x0){return db[_0xd283('0x28')][_0xd283('0x89')]({'name':_0x25626e[_0xd283('0x2c')],'resourceId':_0x25626e['id'],'type':_0x204b6b[_0xd283('0x2c')],'sectionId':_0x204b6b['id']},{})[_0xd283('0x25')](function(){return _0xfef475;});}else{return _0xfef475;}})[_0xd283('0x44')](function(_0x352c1b){logger[_0xd283('0x2a')](_0xd283('0x90'),_0x352c1b);throw _0x352c1b;});}return _0xfef475;})[_0xd283('0x25')](respondWithResult(_0x48d4ce,null))[_0xd283('0x44')](handleError(_0x48d4ce,null));}});}catch(_0x1ba4d9){_0x48d4ce[_0xd283('0x1b')](0x1f4)[_0xd283('0x91')](_0x1ba4d9);}};function removeReferences(_0x5deaea,_0x4ce26d){try{if(_0x5deaea){fs[_0xd283('0x5c')](_0x5deaea);logger[_0xd283('0x5d')](_0xd283('0x92'));}if(_0x4ce26d){rimraf(_0x4ce26d,function(){});logger['info'](_0xd283('0x93'));}}catch(_0x16be4d){logger[_0xd283('0x2a')](_0x16be4d);}}exports[_0xd283('0x24')]=function(_0x31abf5,_0x4c8037,_0x501226){return db['Plugin'][_0xd283('0x47')]({'where':{'id':_0x31abf5[_0xd283('0x45')]['id']}})['then'](handleEntityNotFound(_0x4c8037,null))['then'](saveUpdates(_0x31abf5[_0xd283('0x8a')],null))['then'](respondWithResult(_0x4c8037,null))['catch'](handleError(_0x4c8037,null));};exports['delete']=function(_0x567328,_0x4163b7,_0x38b35a){return db[_0xd283('0x3f')][_0xd283('0x47')]({'where':{'id':_0x567328[_0xd283('0x45')]['id']}})[_0xd283('0x25')](function(_0xb3d294){if(_0xb3d294){return _0xb3d294[_0xd283('0x29')]();}})[_0xd283('0x25')](function(_0x118e5c){rimraf(path[_0xd283('0x64')](config[_0xd283('0x4a')],_0xd283('0x4b'),path[_0xd283('0x94')](_0x118e5c[_0xd283('0x49')])),function(){});return _0x118e5c;})['then'](handleEntityNotFound(_0x4163b7,null))[_0xd283('0x25')](respondWithStatusCode(_0x4163b7,null))['catch'](handleError(_0x4163b7,null));};exports[_0xd283('0x95')]=function(_0x2c05b3,_0x5a5caf,_0x453fff){return BPromise[_0xd283('0x96')]()[_0xd283('0x25')](function(){if(!_0x2c05b3[_0xd283('0x32')][_0xd283('0x49')]){throw new Error(_0xd283('0x97'));}if(!_0x2c05b3[_0xd283('0x32')][_0xd283('0x98')]){throw new Error(_0xd283('0x99'));}var _0x13dedb=_0x2c05b3[_0xd283('0x32')][_0xd283('0x9a')]?_0x2c05b3[_0xd283('0x32')]['hostname']+':'+_0x2c05b3['query'][_0xd283('0x98')]:'http://localhost:'+_0x2c05b3[_0xd283('0x32')][_0xd283('0x98')];var _0x10801e=_0x2c05b3['query']['json']?_0x2c05b3['query'][_0xd283('0x1d')]:!![];var _0x322187=_0x2c05b3[_0xd283('0x32')][_0xd283('0x9b')]?_0x2c05b3['query']['encoding']:null;var _0x160d55={'method':_0x2c05b3[_0xd283('0x9c')],'uri':util[_0xd283('0x4c')]('%s%s',_0x13dedb,_0x2c05b3['query'][_0xd283('0x49')]),'json':_0x10801e,'resolveWithFullResponse':!![],'encoding':_0x322187,'qs':_0x2c05b3[_0xd283('0x32')]};if(_0x2c05b3['headers']){_0x160d55[_0xd283('0x9d')]=_0x2c05b3[_0xd283('0x9d')];if(_0x160d55[_0xd283('0x9d')][_0xd283('0x9e')]){delete _0x160d55[_0xd283('0x9d')][_0xd283('0x9e')];}}if(_0x160d55[_0xd283('0x9d')]['content-type']){delete _0x160d55[_0xd283('0x9d')][_0xd283('0x9f')];}return rp(_0x160d55);})[_0xd283('0x25')](function(_0x4d9c3a){if(_0x4d9c3a){_0x5a5caf[_0xd283('0x21')](_0x4d9c3a[_0xd283('0x9d')]);logger[_0xd283('0x5d')](_0x4d9c3a[_0xd283('0x8a')]);if(_[_0xd283('0xa0')](_0x2c05b3['query'][_0xd283('0x49')],_0xd283('0x48'))&&_0x4d9c3a[_0xd283('0xa1')]==0x1f4){return _0x5a5caf[_0xd283('0x1a')](_0x4d9c3a[_0xd283('0xa1')]);}else{return _0x5a5caf[_0xd283('0x1b')](_0x4d9c3a[_0xd283('0xa1')])['send'](_0x4d9c3a['body']);}}else{return _0x5a5caf[_0xd283('0x1a')](0xc8);}})['catch'](handleError(_0x5a5caf,null));};exports['webhookPost']=function(_0x5c01a5,_0x3273f6,_0x184801){return BPromise[_0xd283('0x96')]()[_0xd283('0x25')](function(){if(!_0x5c01a5[_0xd283('0x32')]['path']){throw new Error(_0xd283('0x97'));}if(!_0x5c01a5[_0xd283('0x32')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x4541df=_0x5c01a5[_0xd283('0x32')][_0xd283('0x9a')]?_0x5c01a5[_0xd283('0x32')][_0xd283('0x9a')]+':'+_0x5c01a5[_0xd283('0x32')][_0xd283('0x98')]:'http://localhost:'+_0x5c01a5[_0xd283('0x32')][_0xd283('0x98')];var _0x1d37d5=_0x5c01a5['query'][_0xd283('0x1d')]?_0x5c01a5[_0xd283('0x32')]['json']:!![];var _0x28d153=_0x5c01a5[_0xd283('0x32')][_0xd283('0x9b')]?_0x5c01a5['query'][_0xd283('0x9b')]:null;var _0x21f62e={'method':_0x5c01a5['method'],'uri':util['format']('%s%s',_0x4541df,_0x5c01a5['query']['path']),'json':_0x1d37d5,'resolveWithFullResponse':!![],'encoding':_0x28d153,'body':_0x5c01a5[_0xd283('0x8a')]};if(_0x5c01a5[_0xd283('0x9d')]){_0x21f62e[_0xd283('0x9d')]=_0x5c01a5[_0xd283('0x9d')];if(_0x21f62e[_0xd283('0x9d')][_0xd283('0x9e')]){delete _0x21f62e['headers'][_0xd283('0x9e')];}}if(_0x21f62e[_0xd283('0x9d')]['content-type']){delete _0x21f62e[_0xd283('0x9d')]['content-type'];}return rp(_0x21f62e);})['then'](function(_0x19b0f6){if(_0x19b0f6){_0x3273f6[_0xd283('0x21')](_0x19b0f6['headers']);logger[_0xd283('0x5d')](_0x19b0f6['body']);return _0x3273f6['status'](_0x19b0f6[_0xd283('0xa1')])['send'](_0x19b0f6[_0xd283('0x8a')]);}else{return _0x3273f6[_0xd283('0x1a')](0xc8);}})[_0xd283('0x44')](handleError(_0x3273f6,null));};
\ No newline at end of file
index 1ac9204..17d5d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f1=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x1f9e63,_0x4f3522){var _0x3c6d20=function(_0x6f2d39){while(--_0x6f2d39){_0x1f9e63['push'](_0x1f9e63['shift']());}};_0x3c6d20(++_0x4f3522);}(_0xb2f1,0xee));var _0x1b2f=function(_0x41ba7c,_0x21b2bb){_0x41ba7c=_0x41ba7c-0x0;var _0xb1bf6a=_0xb2f1[_0x41ba7c];return _0xb1bf6a;};'use strict';var EventEmitter=require(_0x1b2f('0x0'));var Plugin=require(_0x1b2f('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x1b2f('0x2')](0x0);var events={'afterCreate':_0x1b2f('0x3'),'afterUpdate':'update','afterDestroy':_0x1b2f('0x4')};function emitEvent(_0x35494f){return function(_0x501165,_0x47a72f,_0x11f7f2){PluginEvents[_0x1b2f('0x5')](_0x35494f+':'+_0x501165['id'],_0x501165);PluginEvents[_0x1b2f('0x5')](_0x35494f,_0x501165);_0x11f7f2(null);};}for(var e in events){if(events[_0x1b2f('0x6')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x2d78=['../../mysqldb','Plugin','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x39b612,_0x521c91){var _0x580b53=function(_0xc8d72b){while(--_0xc8d72b){_0x39b612['push'](_0x39b612['shift']());}};_0x580b53(++_0x521c91);}(_0x2d78,0x199));var _0x82d7=function(_0x550e29,_0x4047f){_0x550e29=_0x550e29-0x0;var _0x3515b6=_0x2d78[_0x550e29];return _0x3515b6;};'use strict';var EventEmitter=require(_0x82d7('0x0'));var Plugin=require(_0x82d7('0x1'))['db'][_0x82d7('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x82d7('0x3'),'afterUpdate':_0x82d7('0x4'),'afterDestroy':_0x82d7('0x5')};function emitEvent(_0x7f0495){return function(_0x3aed11,_0x23e4d0,_0x13fb9e){PluginEvents[_0x82d7('0x6')](_0x7f0495+':'+_0x3aed11['id'],_0x3aed11);PluginEvents[_0x82d7('0x6')](_0x7f0495,_0x3aed11);_0x13fb9e(null);};}for(var e in events){if(events[_0x82d7('0x7')](e)){var event=events[e];Plugin[_0x82d7('0x8')](e,emitEvent(event));}}module[_0x82d7('0x9')]=PluginEvents;
\ No newline at end of file
index 0308763..5c2abe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb05=['../../config/logger','moment','bluebird','request-promise','../../config/environment','./plugin.attributes','define','Plugin','plugins','lodash','util'];(function(_0x40662e,_0x27f841){var _0x1a0710=function(_0xef1fec){while(--_0xef1fec){_0x40662e['push'](_0x40662e['shift']());}};_0x1a0710(++_0x27f841);}(_0xbb05,0x1b6));var _0x5bb0=function(_0x1c4b00,_0x424123){_0x1c4b00=_0x1c4b00-0x0;var _0x5f0295=_0xbb05[_0x1c4b00];return _0x5f0295;};'use strict';var _=require(_0x5bb0('0x0'));var util=require(_0x5bb0('0x1'));var logger=require(_0x5bb0('0x2'))('api');var moment=require(_0x5bb0('0x3'));var BPromise=require(_0x5bb0('0x4'));var rp=require(_0x5bb0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5bb0('0x6'));var attributes=require(_0x5bb0('0x7'));module['exports']=function(_0x5854e0,_0x2f63f7){return _0x5854e0[_0x5bb0('0x8')](_0x5bb0('0x9'),attributes,{'tableName':_0x5bb0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02e2=['request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','lodash','bluebird'];(function(_0x549e3f,_0x2c5013){var _0x24de02=function(_0xefb487){while(--_0xefb487){_0x549e3f['push'](_0x549e3f['shift']());}};_0x24de02(++_0x2c5013);}(_0x02e2,0xa8));var _0x202e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x02e2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x202e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x202e('0x1'));var rp=require(_0x202e('0x2'));var fs=require('fs');var path=require(_0x202e('0x3'));var rimraf=require(_0x202e('0x4'));var config=require(_0x202e('0x5'));var attributes=require(_0x202e('0x6'));module[_0x202e('0x7')]=function(_0x12d35c,_0x483c40){return _0x12d35c[_0x202e('0x8')](_0x202e('0x9'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5553d29..07b0bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ff=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Plugin','create','body','options','raw','CreatePlugin','debug','lodash','util'];(function(_0xa4ed28,_0x31e209){var _0x3dd21c=function(_0x3d1456){while(--_0x3d1456){_0xa4ed28['push'](_0xa4ed28['shift']());}};_0x3dd21c(++_0x31e209);}(_0xc2ff,0x195));var _0xfc2f=function(_0x24e027,_0x1f16f2){_0x24e027=_0x24e027-0x0;var _0xf6ec3c=_0xc2ff[_0x24e027];return _0xf6ec3c;};'use strict';var _=require(_0xfc2f('0x0'));var util=require(_0xfc2f('0x1'));var moment=require(_0xfc2f('0x2'));var BPromise=require('bluebird');var rs=require(_0xfc2f('0x3'));var fs=require('fs');var Redis=require(_0xfc2f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfc2f('0x5'));var logger=require(_0xfc2f('0x6'))(_0xfc2f('0x7'));var config=require(_0xfc2f('0x8'));var jayson=require(_0xfc2f('0x9'));var client=jayson[_0xfc2f('0xa')][_0xfc2f('0xb')]({'port':0x232a});config[_0xfc2f('0xc')]=_[_0xfc2f('0xd')](config['redis'],{'host':_0xfc2f('0xe'),'port':0x18eb});var socket=require(_0xfc2f('0xf'))(new Redis(config[_0xfc2f('0xc')]));require(_0xfc2f('0x10'))[_0xfc2f('0x11')](socket);function respondWithRpcPromise(_0x320aa0,_0x2f917d,_0x193fd8){return new BPromise(function(_0x36ffcb,_0xaa32eb){return client[_0xfc2f('0x12')](_0x320aa0,_0x193fd8)[_0xfc2f('0x13')](function(_0x24e1d8){logger[_0xfc2f('0x14')](_0xfc2f('0x15'),_0x2f917d,_0xfc2f('0x16'));logger['debug'](_0xfc2f('0x17'),_0x2f917d,'request\x20sent',JSON[_0xfc2f('0x18')](_0x24e1d8));if(_0x24e1d8[_0xfc2f('0x19')]){if(_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1a')]===0x1f4){logger['error'](_0xfc2f('0x15'),_0x2f917d,_0x24e1d8['error'][_0xfc2f('0x1b')]);return _0xaa32eb(_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1b')]);}logger[_0xfc2f('0x19')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0x24e1d8[_0xfc2f('0x19')][_0xfc2f('0x1b')]);return _0x36ffcb(_0x24e1d8[_0xfc2f('0x19')]['message']);}else{logger[_0xfc2f('0x14')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0xfc2f('0x16'));_0x36ffcb(_0x24e1d8[_0xfc2f('0x1c')]['message']);}})[_0xfc2f('0x1d')](function(_0x6cc11e){logger[_0xfc2f('0x19')]('Plugin,\x20%s,\x20%s',_0x2f917d,_0x6cc11e);_0xaa32eb(_0x6cc11e);});});}exports['CreatePlugin']=function(_0xb9a450){var _0x36f483=this;return new Promise(function(_0x44b85f,_0x42dd09){return db[_0xfc2f('0x1e')][_0xfc2f('0x1f')](_0xb9a450[_0xfc2f('0x20')],{'raw':_0xb9a450[_0xfc2f('0x21')]?_0xb9a450[_0xfc2f('0x21')][_0xfc2f('0x22')]===undefined?!![]:![]:!![]})[_0xfc2f('0x13')](function(_0x3cb43f){logger[_0xfc2f('0x14')](_0xfc2f('0x23'),_0xb9a450);logger[_0xfc2f('0x24')]('CreatePlugin',_0xb9a450,JSON[_0xfc2f('0x18')](_0x3cb43f));_0x44b85f(_0x3cb43f);})['catch'](function(_0x55c375){logger[_0xfc2f('0x19')]('CreatePlugin',_0x55c375[_0xfc2f('0x1b')],_0xb9a450);_0x42dd09(_0x36f483['error'](0x1f4,_0x55c375[_0xfc2f('0x1b')]));});});};
\ No newline at end of file
+var _0xb3a3=['localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','create','options','raw','CreatePlugin','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','client','http','redis'];(function(_0x18c2c6,_0x572438){var _0x952506=function(_0x2ae9cd){while(--_0x2ae9cd){_0x18c2c6['push'](_0x18c2c6['shift']());}};_0x952506(++_0x572438);}(_0xb3a3,0x90));var _0x3b3a=function(_0x454c0f,_0x55d627){_0x454c0f=_0x454c0f-0x0;var _0x5a3680=_0xb3a3[_0x454c0f];return _0x5a3680;};'use strict';var _=require(_0x3b3a('0x0'));var util=require(_0x3b3a('0x1'));var moment=require(_0x3b3a('0x2'));var BPromise=require(_0x3b3a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b3a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3b3a('0x5'));var logger=require(_0x3b3a('0x6'))(_0x3b3a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3b3a('0x8')][_0x3b3a('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3b3a('0xa')],{'host':_0x3b3a('0xb'),'port':0x18eb});var socket=require(_0x3b3a('0xc'))(new Redis(config['redis']));require(_0x3b3a('0xd'))[_0x3b3a('0xe')](socket);function respondWithRpcPromise(_0x193382,_0x53e94c,_0x13b177){return new BPromise(function(_0x9c3666,_0x348386){return client[_0x3b3a('0xf')](_0x193382,_0x13b177)[_0x3b3a('0x10')](function(_0x214933){logger[_0x3b3a('0x11')](_0x3b3a('0x12'),_0x53e94c,_0x3b3a('0x13'));logger[_0x3b3a('0x14')](_0x3b3a('0x15'),_0x53e94c,_0x3b3a('0x13'),JSON[_0x3b3a('0x16')](_0x214933));if(_0x214933[_0x3b3a('0x17')]){if(_0x214933['error'][_0x3b3a('0x18')]===0x1f4){logger[_0x3b3a('0x17')](_0x3b3a('0x12'),_0x53e94c,_0x214933[_0x3b3a('0x17')][_0x3b3a('0x19')]);return _0x348386(_0x214933[_0x3b3a('0x17')][_0x3b3a('0x19')]);}logger[_0x3b3a('0x17')]('Plugin,\x20%s,\x20%s',_0x53e94c,_0x214933[_0x3b3a('0x17')][_0x3b3a('0x19')]);return _0x9c3666(_0x214933[_0x3b3a('0x17')][_0x3b3a('0x19')]);}else{logger[_0x3b3a('0x11')]('Plugin,\x20%s,\x20%s',_0x53e94c,_0x3b3a('0x13'));_0x9c3666(_0x214933['result'][_0x3b3a('0x19')]);}})[_0x3b3a('0x1a')](function(_0x33a4ff){logger['error'](_0x3b3a('0x12'),_0x53e94c,_0x33a4ff);_0x348386(_0x33a4ff);});});}exports['CreatePlugin']=function(_0x53b591){var _0x124d7b=this;return new Promise(function(_0x30bd6d,_0x3b6d37){return db['Plugin'][_0x3b3a('0x1b')](_0x53b591['body'],{'raw':_0x53b591[_0x3b3a('0x1c')]?_0x53b591['options'][_0x3b3a('0x1d')]===undefined?!![]:![]:!![]})[_0x3b3a('0x10')](function(_0x142bd5){logger['info'](_0x3b3a('0x1e'),_0x53b591);logger[_0x3b3a('0x14')](_0x3b3a('0x1e'),_0x53b591,JSON[_0x3b3a('0x16')](_0x142bd5));_0x30bd6d(_0x142bd5);})[_0x3b3a('0x1a')](function(_0x4d809e){logger['error']('CreatePlugin',_0x4d809e[_0x3b3a('0x19')],_0x53b591);_0x3b6d37(_0x124d7b[_0x3b3a('0x17')](0x1f4,_0x4d809e['message']));});});};
\ No newline at end of file
index ca3ec30..fe25b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9357=['remove','update','emit','removeListener','register','length','plugin:','./plugin.events','save'];(function(_0x420fa8,_0x4545cd){var _0x3e7246=function(_0x306304){while(--_0x306304){_0x420fa8['push'](_0x420fa8['shift']());}};_0x3e7246(++_0x4545cd);}(_0x9357,0x97));var _0x7935=function(_0x2ba6ce,_0x7120cb){_0x2ba6ce=_0x2ba6ce-0x0;var _0x226201=_0x9357[_0x2ba6ce];return _0x226201;};'use strict';var PluginEvents=require(_0x7935('0x0'));var events=[_0x7935('0x1'),_0x7935('0x2'),_0x7935('0x3')];function createListener(_0x8ffebf,_0x19d977){return function(_0x49beae){_0x19d977[_0x7935('0x4')](_0x8ffebf,_0x49beae);};}function removeListener(_0x5d0f92,_0x19cc82){return function(){PluginEvents[_0x7935('0x5')](_0x5d0f92,_0x19cc82);};}exports[_0x7935('0x6')]=function(_0x1cc9f6){for(var _0x114492=0x0,_0x6788fd=events[_0x7935('0x7')];_0x114492<_0x6788fd;_0x114492++){var _0x4d2892=events[_0x114492];var _0xd3a938=createListener(_0x7935('0x8')+_0x4d2892,_0x1cc9f6);PluginEvents['on'](_0x4d2892,_0xd3a938);}};
\ No newline at end of file
+var _0xbc06=['emit','register','length','plugin:','./plugin.events','remove'];(function(_0xda3ed4,_0x5798a3){var _0x3ba42e=function(_0x48e5d5){while(--_0x48e5d5){_0xda3ed4['push'](_0xda3ed4['shift']());}};_0x3ba42e(++_0x5798a3);}(_0xbc06,0x1c0));var _0x6bc0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xbc06[_0x321bb2];return _0x9c12ed;};'use strict';var PluginEvents=require(_0x6bc0('0x0'));var events=['save',_0x6bc0('0x1'),'update'];function createListener(_0x37e7ec,_0x1d8147){return function(_0x3dbc89){_0x1d8147[_0x6bc0('0x2')](_0x37e7ec,_0x3dbc89);};}function removeListener(_0x4c8401,_0x2c57d5){return function(){PluginEvents['removeListener'](_0x4c8401,_0x2c57d5);};}exports[_0x6bc0('0x3')]=function(_0x2dfaeb){for(var _0x201aa1=0x0,_0x548f47=events[_0x6bc0('0x4')];_0x201aa1<_0x548f47;_0x201aa1++){var _0x1a5f37=events[_0x201aa1];var _0x5a80aa=createListener(_0x6bc0('0x5')+_0x1a5f37,_0x2dfaeb);PluginEvents['on'](_0x1a5f37,_0x5a80aa);}};
\ No newline at end of file
index 53a3095..cb4f6f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x5edd83,_0x55b699){var _0x5d062f=function(_0x484fc5){while(--_0x484fc5){_0x5edd83['push'](_0x5edd83['shift']());}};_0x5d062f(++_0x55b699);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x5f5868,_0x45756d){var _0x1b579a=function(_0x4332cb){while(--_0x4332cb){_0x5f5868['push'](_0x5f5868['shift']());}};_0x1b579a(++_0x45756d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index a36742e..677f90d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['exec','bluebird','sendStatus','error','stack','name','send','npm\x20install','info','index','list','then','reject','motion2','length','catch','show','describe','params','create','body','script','join','cwd','chdir','dirname','start','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','lodash','../../config/logger','api','child_process'];(function(_0x4749bc,_0xd777b9){var _0x4b5918=function(_0x3f5cf4){while(--_0x3f5cf4){_0x4749bc['push'](_0x4749bc['shift']());}};_0x4b5918(++_0xd777b9);}(_0xee5b,0x1f4));var _0xbee5=function(_0x4d34a1,_0x49ca49){_0x4d34a1=_0x4d34a1-0x0;var _0x31419f=_0xee5b[_0x4d34a1];return _0x31419f;};'use strict';var _=require(_0xbee5('0x0'));var pm2=require('../../config/pm2');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var path=require('path');var exec=require(_0xbee5('0x3'))[_0xbee5('0x4')];var BPromise=require(_0xbee5('0x5'));function handleEntityNotFound(_0x210159,_0x4bd202){return function(_0x5200b1){if(!_0x5200b1){_0x210159[_0xbee5('0x6')](0x194);;}return _0x5200b1;};}function respondWithResult(_0x2c0bde,_0xab6e4d){_0xab6e4d=_0xab6e4d||0xc8;return function(_0x804ab8){if(_0x804ab8){return _0x2c0bde['status'](_0xab6e4d)['json'](_0x804ab8);}return null;};}function handleError(_0x53d5b9,_0x5baf5c){_0x5baf5c=_0x5baf5c||0x1f4;return function(_0x5536bd){logger[_0xbee5('0x7')](_0x5536bd[_0xbee5('0x8')]);if(_0x5536bd[_0xbee5('0x9')]){delete _0x5536bd[_0xbee5('0x9')];}_0x53d5b9['status'](_0x5baf5c)[_0xbee5('0xa')](_0x5536bd);};}function execChildProcess(){return new BPromise(function(_0x305921,_0x9b3d3b){exec(_0xbee5('0xb'),function(_0x16377d,_0x1509c7,_0x105e16){logger[_0xbee5('0xc')](_0x1509c7);logger[_0xbee5('0xc')](_0x105e16);if(_0x16377d){logger['error'](_0x16377d);return _0x9b3d3b(_0x16377d);}return _0x305921(_0x1509c7);});});}exports[_0xbee5('0xd')]=function(_0x532a78,_0x183877){return pm2[_0xbee5('0xe')]()[_0xbee5('0xf')](function(_0x593ecb){if(_0x593ecb){var _0x5092f2=_[_0xbee5('0x10')](_0x593ecb,function(_0x4cf5a8){return _0x4cf5a8[_0xbee5('0x9')]==='express'||_0x4cf5a8[_0xbee5('0x9')]===_0xbee5('0x11');});return{'rows':_0x5092f2,'count':_0x5092f2[_0xbee5('0x12')]};}return null;})['then'](respondWithResult(_0x183877,null))[_0xbee5('0x13')](handleError(_0x183877,null));};exports[_0xbee5('0x14')]=function(_0x5a0ae5,_0x254dd3){return pm2[_0xbee5('0x15')](_0x5a0ae5[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x254dd3,null))[_0xbee5('0xf')](handleEntityNotFound(_0x254dd3,null))[_0xbee5('0x13')](handleError(_0x254dd3,null));};exports[_0xbee5('0x17')]=function(_0xa50ec9,_0x20cf52){if(_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')]&&_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x19')]){var _0x40a06=path[_0xbee5('0x1a')](__dirname,'../../files/plugins',_0xa50ec9['body'][_0xbee5('0x19')]);var _0x48bfb5=process[_0xbee5('0x1b')]();process[_0xbee5('0x1c')](path[_0xbee5('0x1d')](_0x40a06));return execChildProcess()[_0xbee5('0xf')](function(_0x3f23c5){process[_0xbee5('0x1c')](_0x48bfb5);return pm2[_0xbee5('0x1e')]({'name':_0xa50ec9[_0xbee5('0x18')][_0xbee5('0x9')],'script':_0x40a06});})['then'](function(_0x5b43b3){pm2['dump']();return _0x5b43b3[0x0];})['then'](respondWithResult(_0x20cf52,0xc9))['catch'](handleError(_0x20cf52,null));}else{return _0x20cf52[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x20')});}};exports[_0xbee5('0x21')]=function(_0x169042,_0x20e7e8){if(_0x169042[_0xbee5('0x18')]['id']){delete _0x169042['body']['id'];}var _0x36b50f={'online':_0xbee5('0x22'),'stopped':_0xbee5('0x23')};if(_0x36b50f[_0xbee5('0x24')](_0x169042[_0xbee5('0x18')]['status'])){return pm2[_0x36b50f[_0x169042[_0xbee5('0x18')][_0xbee5('0x1f')]]](_0x169042[_0xbee5('0x16')]['id'])[_0xbee5('0xf')](respondWithResult(_0x20e7e8,0xc8))[_0xbee5('0x13')](handleError(_0x20e7e8,null));}else{return _0x20e7e8[_0xbee5('0x1f')](0x1f4)[_0xbee5('0xa')]({'message':_0xbee5('0x25')});}};exports[_0xbee5('0x26')]=function(_0x59c2e4,_0x22df5f){if(_0x59c2e4['body']['id']){delete _0x59c2e4[_0xbee5('0x18')]['id'];}if(_0x59c2e4['params']['id']){return pm2[_0xbee5('0x27')](_0x59c2e4['params']['id'])[_0xbee5('0xf')](function(_0x5c1109){pm2[_0xbee5('0x28')]();return _0x5c1109[0x0];})[_0xbee5('0xf')](respondWithResult(_0x22df5f,null))[_0xbee5('0x13')](handleError(_0x22df5f,null));}else{return _0x22df5f[_0xbee5('0x1f')](0x1f4)['send']({'message':_0xbee5('0x29')});}};
\ No newline at end of file
+var _0x3140=['send','npm\x20install','info','error','index','then','reject','express','length','catch','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','Unknown\x20status','destroy','lodash','../../config/pm2','../../config/logger','api','exec','bluebird','sendStatus','status','json','name'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x3140,0xaf));var _0x0314=function(_0x3ae1a9,_0x3f6243){_0x3ae1a9=_0x3ae1a9-0x0;var _0x36b7e4=_0x3140[_0x3ae1a9];return _0x36b7e4;};'use strict';var _=require(_0x0314('0x0'));var pm2=require(_0x0314('0x1'));var logger=require(_0x0314('0x2'))(_0x0314('0x3'));var path=require('path');var exec=require('child_process')[_0x0314('0x4')];var BPromise=require(_0x0314('0x5'));function handleEntityNotFound(_0x1c0f66,_0x3e4284){return function(_0x254566){if(!_0x254566){_0x1c0f66[_0x0314('0x6')](0x194);;}return _0x254566;};}function respondWithResult(_0x9e308d,_0xf87d26){_0xf87d26=_0xf87d26||0xc8;return function(_0x11ee94){if(_0x11ee94){return _0x9e308d[_0x0314('0x7')](_0xf87d26)[_0x0314('0x8')](_0x11ee94);}return null;};}function handleError(_0x495b27,_0x26031f){_0x26031f=_0x26031f||0x1f4;return function(_0x2d87d2){logger['error'](_0x2d87d2['stack']);if(_0x2d87d2[_0x0314('0x9')]){delete _0x2d87d2['name'];}_0x495b27[_0x0314('0x7')](_0x26031f)[_0x0314('0xa')](_0x2d87d2);};}function execChildProcess(){return new BPromise(function(_0x3a7713,_0x376da9){exec(_0x0314('0xb'),function(_0x3e9964,_0x516448,_0xe78fb9){logger[_0x0314('0xc')](_0x516448);logger[_0x0314('0xc')](_0xe78fb9);if(_0x3e9964){logger[_0x0314('0xd')](_0x3e9964);return _0x376da9(_0x3e9964);}return _0x3a7713(_0x516448);});});}exports[_0x0314('0xe')]=function(_0x4318d6,_0x149b67){return pm2['list']()[_0x0314('0xf')](function(_0xbe0b07){if(_0xbe0b07){var _0x1316a0=_[_0x0314('0x10')](_0xbe0b07,function(_0x40566e){return _0x40566e[_0x0314('0x9')]===_0x0314('0x11')||_0x40566e[_0x0314('0x9')]==='motion2';});return{'rows':_0x1316a0,'count':_0x1316a0[_0x0314('0x12')]};}return null;})[_0x0314('0xf')](respondWithResult(_0x149b67,null))[_0x0314('0x13')](handleError(_0x149b67,null));};exports['show']=function(_0x6c48cb,_0x5f2e82){return pm2['describe'](_0x6c48cb[_0x0314('0x14')]['id'])[_0x0314('0xf')](respondWithResult(_0x5f2e82,null))['then'](handleEntityNotFound(_0x5f2e82,null))[_0x0314('0x13')](handleError(_0x5f2e82,null));};exports[_0x0314('0x15')]=function(_0x583ffa,_0x1a25cf){if(_0x583ffa['body'][_0x0314('0x9')]&&_0x583ffa[_0x0314('0x16')][_0x0314('0x17')]){var _0x77ddfd=path[_0x0314('0x18')](__dirname,_0x0314('0x19'),_0x583ffa['body']['script']);var _0x20305b=process[_0x0314('0x1a')]();process[_0x0314('0x1b')](path[_0x0314('0x1c')](_0x77ddfd));return execChildProcess()[_0x0314('0xf')](function(_0xd7638b){process['chdir'](_0x20305b);return pm2[_0x0314('0x1d')]({'name':_0x583ffa[_0x0314('0x16')]['name'],'script':_0x77ddfd});})[_0x0314('0xf')](function(_0xfc4893){pm2[_0x0314('0x1e')]();return _0xfc4893[0x0];})[_0x0314('0xf')](respondWithResult(_0x1a25cf,0xc9))[_0x0314('0x13')](handleError(_0x1a25cf,null));}else{return _0x1a25cf[_0x0314('0x7')](0x1f4)['send']({'message':_0x0314('0x1f')});}};exports[_0x0314('0x20')]=function(_0x2d636b,_0x47c2d1){if(_0x2d636b[_0x0314('0x16')]['id']){delete _0x2d636b[_0x0314('0x16')]['id'];}var _0x47c102={'online':'restart','stopped':_0x0314('0x21')};if(_0x47c102[_0x0314('0x22')](_0x2d636b['body'][_0x0314('0x7')])){return pm2[_0x47c102[_0x2d636b[_0x0314('0x16')]['status']]](_0x2d636b['params']['id'])[_0x0314('0xf')](respondWithResult(_0x47c2d1,0xc8))[_0x0314('0x13')](handleError(_0x47c2d1,null));}else{return _0x47c2d1['status'](0x1f4)[_0x0314('0xa')]({'message':_0x0314('0x23')});}};exports[_0x0314('0x24')]=function(_0x4da71c,_0x5b82b2){if(_0x4da71c[_0x0314('0x16')]['id']){delete _0x4da71c[_0x0314('0x16')]['id'];}if(_0x4da71c[_0x0314('0x14')]['id']){return pm2['delete'](_0x4da71c[_0x0314('0x14')]['id'])['then'](function(_0x52700f){pm2[_0x0314('0x1e')]();return _0x52700f[0x0];})[_0x0314('0xf')](respondWithResult(_0x5b82b2,null))[_0x0314('0x13')](handleError(_0x5b82b2,null));}else{return _0x5b82b2['status'](0x1f4)[_0x0314('0xa')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index 0b93e22..6b0a932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ae=['getAgents','/queues','exports','express','Router','./realtime.controller','get','/agents','isAuthenticated'];(function(_0x5de532,_0x2941c4){var _0x4e9192=function(_0x548a81){while(--_0x548a81){_0x5de532['push'](_0x5de532['shift']());}};_0x4e9192(++_0x2941c4);}(_0x68ae,0x1bc));var _0xe68a=function(_0x52c4f2,_0x3dc765){_0x52c4f2=_0x52c4f2-0x0;var _0x2c0f0e=_0x68ae[_0x52c4f2];return _0x2c0f0e;};'use strict';var express=require(_0xe68a('0x0'));var router=express[_0xe68a('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xe68a('0x2'));router[_0xe68a('0x3')](_0xe68a('0x4'),auth[_0xe68a('0x5')](),controller[_0xe68a('0x6')]);router[_0xe68a('0x3')](_0xe68a('0x7'),auth['isAuthenticated'](),controller['getQueues']);module[_0xe68a('0x8')]=router;
\ No newline at end of file
+var _0xf6c1=['/agents','isAuthenticated','getAgents','/queues','getQueues','Router','../../components/auth/service','./realtime.controller','get'];(function(_0xccc739,_0x47c84a){var _0x1d8e3d=function(_0x3fe260){while(--_0x3fe260){_0xccc739['push'](_0xccc739['shift']());}};_0x1d8e3d(++_0x47c84a);}(_0xf6c1,0x11c));var _0x1f6c=function(_0xc85deb,_0x1b5f05){_0xc85deb=_0xc85deb-0x0;var _0x5e789a=_0xf6c1[_0xc85deb];return _0x5e789a;};'use strict';var express=require('express');var router=express[_0x1f6c('0x0')]();var auth=require(_0x1f6c('0x1'));var controller=require(_0x1f6c('0x2'));router[_0x1f6c('0x3')](_0x1f6c('0x4'),auth[_0x1f6c('0x5')](),controller[_0x1f6c('0x6')]);router[_0x1f6c('0x3')](_0x1f6c('0x7'),auth[_0x1f6c('0x5')](),controller[_0x1f6c('0x8')]);module['exports']=router;
\ No newline at end of file
index be2f2e2..0ebeb06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x527c=['filter','queue','length','some','internal','toString','busy','getMembers','UserId','online','voiceStatus','User','Queue','Pause','findAll','QueueId','unknown','ringing','isNil','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','idle','every','chatStatus','faxStatus','mailStatus','openchannelStatus','whatsappStatus','userpic','lastPauseAt','pauseType','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','smsStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','routealias','map','rawAttributes','fieldName','type','key','role','agent','query','user','userProfileId','nolimit','sort','UserProfile','getResources','rows','globalStatus','globalStatusFilter','pauseTypeFilter','getQueues','mail','sms','openchannel','fax','whatsapp','resolve','channel','includes','toLowerCase','Invalid\x20channel','getOptions','QueueCampaigns','Queues','findAndCountAll','all','util','jayson/promise','../../components/parsers/qs','../../config/logger','api','client','http','undefined','limit','count','offset','status','set','Content-Range','json','error','stack','name','send','request','Agents','then','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','voice','startCase','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','loggedIn','available','waiting','talking','paused','outbound','push','pTalking','message','dialActive','dialMethod','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','agents','loggedInDb','originated','find','pick'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x527c,0x194));var _0xc527=function(_0x127316,_0x2774a8){_0x127316=_0x127316-0x0;var _0x34d919=_0x527c[_0x127316];return _0x34d919;};'use strict';var util=require(_0xc527('0x0'));var _=require('lodash');var jayson=require(_0xc527('0x1'));var qs=require(_0xc527('0x2'));var logger=require(_0xc527('0x3'))(_0xc527('0x4'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xc527('0x5')][_0xc527('0x6')]({'port':0x232a});var routingClient=jayson[_0xc527('0x5')][_0xc527('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x36b226,_0x3becea){return function(_0xbae80){if(_0xbae80){var _0x335728=typeof _0x3becea['offset']===_0xc527('0x7')&&typeof _0x3becea[_0xc527('0x8')]===_0xc527('0x7');var _0x973562=_0xbae80[_0xc527('0x9')];var _0x5695d2=_0x335728?0x0:_0x3becea[_0xc527('0xa')];var _0x5cf073=_0x335728?_0xbae80[_0xc527('0x9')]:_0x3becea[_0xc527('0xa')]+_0x3becea[_0xc527('0x8')];var _0x3a2489;if(_0x5cf073>=_0x973562){_0x5cf073=_0x973562;_0x3a2489=0xc8;}else{_0x3a2489=0xce;}_0x36b226[_0xc527('0xb')](_0x3a2489);return _0x36b226[_0xc527('0xc')](_0xc527('0xd'),_0x5695d2+'-'+_0x5cf073+'/'+_0x973562)[_0xc527('0xe')](_0xbae80);}return null;};}function handleError(_0x5c5db6,_0x588f43){_0x588f43=_0x588f43||0x1f4;return function(_0x4631d8){logger[_0xc527('0xf')](_0x4631d8[_0xc527('0x10')]);if(_0x4631d8[_0xc527('0x11')]){delete _0x4631d8[_0xc527('0x11')];}_0x5c5db6['status'](_0x588f43)[_0xc527('0x12')](_0x4631d8);};}function getRealtimeAgents(){return new Promise(function(_0x179f58,_0xb3b143){return amiClient[_0xc527('0x13')](_0xc527('0x14'),{})[_0xc527('0x15')](function(_0x442601){if(_0x442601['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x58208c=_0x442601[_0xc527('0x16')];return routingClient[_0xc527('0x13')](_0xc527('0x14'),{})[_0xc527('0x15')](function(_0x5615fa){if(_0x5615fa[_0xc527('0xf')])throw new Error(_0xc527('0x17'));var _0x2591bf=_0x5615fa[_0xc527('0x16')];return _0x179f58(_[_0xc527('0x18')]({},_0x58208c,_0x2591bf));});})[_0xc527('0x19')](function(_0x5e834c){_0xb3b143(_0x5e834c);});});}function getRealtimeQueues(_0x21adaf,_0x32cc2b){return new Promise(function(_0x57bd2c,_0x1c6016){var _0x429583=_0x32cc2b===_0xc527('0x1a')?amiClient:routingClient;return _0x429583[_0xc527('0x13')](_[_0xc527('0x1b')](_0x32cc2b)+'Queues',_0x21adaf)[_0xc527('0x15')](function(_0xb29ffc){if(_0xb29ffc[_0xc527('0xf')])throw new Error(util[_0xc527('0x1c')](_0xc527('0x1d'),_0x32cc2b));return _0x57bd2c(_0xb29ffc[_0xc527('0x16')]);})[_0xc527('0x19')](function(_0x25f010){_0x1c6016(_0x25f010);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x7914cb,_0x435088){return amiClient['request'](_0xc527('0x1e'),{})[_0xc527('0x15')](function(_0x3745a9){if(_0x3745a9['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x7914cb(_0x3745a9['result']);})['catch'](function(_0x516f40){_0x435088(_0x516f40);});});}function initializeQueues(_0x424994,_0x11e7da,_0x4ea998,_0x333f84){var _0x4c5f4e=[_0xc527('0x1f'),_0xc527('0x20'),_0xc527('0x21'),_0xc527('0x22'),_0xc527('0x23')];if(_0x4ea998===_0xc527('0x1a')&&_0x333f84===_0xc527('0x24')){_0x4c5f4e[_0xc527('0x25')](_0xc527('0x26'),'originated',_0xc527('0x27'),_0xc527('0x28'),_0xc527('0x29'),'Trunk','startPredictive','startProgressive',_0xc527('0x2a'),'erlangCallToSecond',_0xc527('0x2b'),_0xc527('0x2c'),_0xc527('0x2d'),_0xc527('0x2e'),_0xc527('0x2f'),_0xc527('0x30'),_0xc527('0x31'),_0xc527('0x32'),_0xc527('0x33'),_0xc527('0x34'),_0xc527('0x35'),_0xc527('0x36'));}return _0x424994['map'](function(_0x22b4a8){var _0x2768ee=_0x22b4a8[_0xc527('0x37')]({'plain':!![]});_0x2768ee[_0xc527('0x38')]=[];_0x2768ee[_0xc527('0x23')]=0x0;_0x2768ee[_0xc527('0x39')]=0x0;_0x2768ee['loggedIn']=0x0;_0x2768ee[_0xc527('0x20')]=0x0;_0x2768ee['waiting']=0x0;if(_0x4ea998===_0xc527('0x1a')){_0x2768ee[_0xc527('0x22')]=0x0;_0x2768ee['busy']=0x0;if(_0x333f84===_0xc527('0x24')){_0x2768ee[_0xc527('0x26')]=0x0;_0x2768ee[_0xc527('0x3a')]=0x0;}}var _0x2a1cf4=_[_0xc527('0x3b')](_0x11e7da,['id',_0x2768ee['id']]);if(_0x2a1cf4)_[_0xc527('0x18')](_0x2768ee,_[_0xc527('0x3c')](_0x2a1cf4,_0x4c5f4e));return _0x2768ee;});}function updateAgentVoiceStatus(_0x22d4bb,_0x2eda8b,_0x5a18d9){var _0x2fc314=_[_0xc527('0x3d')](_0x5a18d9,[_0xc527('0x3e'),_0x2eda8b['name']]);if(_0x2fc314[_0xc527('0x3f')]===0x0)return _0x22d4bb['busy']=!![];if(_[_0xc527('0x40')](_0x2fc314,['connectedlinenum',_0x22d4bb[_0xc527('0x41')][_0xc527('0x42')]()]))return _0x22d4bb[_0xc527('0x22')]=!![];if(!_0x22d4bb[_0xc527('0x22')])return _0x22d4bb[_0xc527('0x43')]=!![];}function getVoiceQueueAgents(_0x289003,_0xd0013e,_0x275146,_0x4e9eee){var _0x5acc8=_[_0xc527('0x3b')](_0xd0013e,['id',_0x289003['id']]);if(!_0x5acc8)return _0x289003;return _0x5acc8[_0xc527('0x44')]({'raw':!![]})[_0xc527('0x15')](function(_0x67b419){for(var _0x1d153c=0x0;_0x1d153c<_0x67b419[_0xc527('0x3f')];_0x1d153c++){var _0x1524da=_[_0xc527('0x3b')](_0x275146,['id',_0x67b419[_0x1d153c][_0xc527('0x45')]]);if(!_0x1524da){_0x1524da={'id':_0x67b419[_0x1d153c][_0xc527('0x45')],'name':_0x67b419[_0x1d153c][_0xc527('0x45')],'accountcode':'','online':![]};}var _0x25ea26={'id':_0x1524da['id'],'name':_0x1524da[_0xc527('0x11')],'internal':_0x1524da['accountcode'],'online':Boolean(_0x1524da[_0xc527('0x46')]),'paused':Boolean(_0x67b419[_0x1d153c][_0xc527('0x23')])};if(_0x1524da[_0xc527('0x47')]===_0xc527('0x22'))updateAgentVoiceStatus(_0x25ea26,_0x289003,_0x4e9eee);if(_0x25ea26['online'])_0x289003[_0xc527('0x39')]++;if(_0x25ea26[_0xc527('0x43')])_0x289003[_0xc527('0x43')]++;if(_0x25ea26[_0xc527('0x23')]&&!_0x25ea26[_0xc527('0x43')]&&!_0x25ea26[_0xc527('0x22')])_0x289003[_0xc527('0x23')]++;_0x289003[_0xc527('0x38')][_0xc527('0x25')](_0x25ea26);}return _0x289003;});}function getQueueAgents(_0xe3b839,_0x4266c2,_0x2b709c){var _0x43db87=_0xc527('0x48')+_[_0xc527('0x1b')](_0x2b709c)+_0xc527('0x49');var _0x5a6779=_0x2b709c+_0xc527('0x4a');return db[_0x43db87][_0xc527('0x4b')]({'where':{[_[_0xc527('0x1b')](_0x2b709c)+_0xc527('0x4c')]:_0xe3b839['id']},'raw':!![]})[_0xc527('0x15')](function(_0x1f086e){for(var _0x3d4d18=0x0;_0x3d4d18<_0x1f086e['length'];_0x3d4d18++){var _0x34b725=_[_0xc527('0x3b')](_0x4266c2,['id',_0x1f086e[_0x3d4d18][_0xc527('0x45')]]);if(!_0x34b725){_0x34b725={'id':_0x1f086e[_0x3d4d18]['UserId'],'name':_0x1f086e[_0x3d4d18][_0xc527('0x45')],'online':![],['pauseField']:![]};}var _0x419d56={'id':_0x34b725['id'],'name':_0x34b725[_0xc527('0x11')],'online':Boolean(_0x34b725[_0xc527('0x46')]),'paused':Boolean(_0x34b725[_0x5a6779])};if(_0x419d56[_0xc527('0x46')])_0xe3b839[_0xc527('0x39')]++;_0xe3b839['agents'][_0xc527('0x25')](_0x419d56);}return _0xe3b839;});}function isIdle(_0x252eae){return _0x252eae==='idle'||_0x252eae===_0xc527('0x4d')||_0x252eae==='unavailable'||_0x252eae===_0xc527('0x4e')||_[_0xc527('0x4f')](_0x252eae);}function isAgentPaused(_0x14d53f,_0x244186){var _0x1e077f=[_0x14d53f[_0xc527('0x50')],_0x14d53f[_0xc527('0x51')],_0x14d53f[_0xc527('0x52')],_0x14d53f[_0xc527('0x53')],_0x14d53f[_0xc527('0x54')],_0x14d53f[_0xc527('0x55')],_0x14d53f[_0xc527('0x56')]];if(!_0x244186)return _['every'](_0x1e077f);var _0x2a6dc6=_[_0xc527('0x3d')](_0x1e077f);return _0x2a6dc6['length']>0x0&&_0x2a6dc6['length']<_0x1e077f['length']?!![]:![];}function isAgentIdle(_0x1e9721){if(_0x1e9721[_0xc527('0x47')]!==_0xc527('0x57')&&_0x1e9721[_0xc527('0x55')]){_0x1e9721[_0xc527('0x47')]='pause';return![];}return _[_0xc527('0x58')]([_0x1e9721[_0xc527('0x59')],_0x1e9721[_0xc527('0x5a')],_0x1e9721[_0xc527('0x5b')],_0x1e9721[_0xc527('0x5c')],_0x1e9721['smsStatus'],_0x1e9721[_0xc527('0x47')],_0x1e9721[_0xc527('0x5d')]],isIdle);}function getAgentStatus(_0x29cfdd){var _0x2fb917=_0xc527('0x4d');if(isAgentPaused(_0x29cfdd))_0x2fb917='pause';else if(isAgentPaused(_0x29cfdd,!![]))_0x2fb917='*pause';else if(isAgentIdle(_0x29cfdd))_0x2fb917=_0xc527('0x57');else _0x2fb917=_0xc527('0x43');return _0x2fb917;}exports['getAgents']=function(_0x4ca4d7,_0x2a8cc3){var _0x35d7a1={'count':0x0,'rows':[]},_0x16937b={},_0x12321d,_0x327411,_0x5e9d8f=[_0xc527('0x5e'),_0xc527('0x46'),'lastLoginAt',_0xc527('0x5f'),_0xc527('0x60'),_0xc527('0x5f'),'internal',_0xc527('0x61'),_0xc527('0x50'),_0xc527('0x53'),_0xc527('0x52'),_0xc527('0x54'),_0xc527('0x56'),_0xc527('0x51'),'voicePause',_0xc527('0x62'),_0xc527('0x63'),_0xc527('0x64'),_0xc527('0x65'),_0xc527('0x66'),_0xc527('0x67'),_0xc527('0x68'),_0xc527('0x69'),_0xc527('0x6a'),_0xc527('0x6b'),_0xc527('0x6c'),_0xc527('0x6d'),_0xc527('0x59'),'openchannelStatus','mailStatus',_0xc527('0x6e'),_0xc527('0x5d'),_0xc527('0x5a'),'voiceStatus',_0xc527('0x6f'),_0xc527('0x70'),_0xc527('0x71'),_0xc527('0x72'),_0xc527('0x73'),_0xc527('0x74'),_0xc527('0x75'),_0xc527('0x3e'),_0xc527('0x76'),_0xc527('0x77'),'phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording',_0xc527('0x78')],_0x1b5a69=[_0xc527('0x50'),_0xc527('0x53'),_0xc527('0x52'),_0xc527('0x54'),_0xc527('0x56'),_0xc527('0x51'),_0xc527('0x55'),_0xc527('0x46')];Promise['resolve']()[_0xc527('0x15')](function(){var _0x2bfeda=_[_0xc527('0x79')](db['User'][_0xc527('0x7a')],function(_0x3d216a){return{'name':_0x3d216a[_0xc527('0x7b')],'type':_0x3d216a[_0xc527('0x7c')][_0xc527('0x7d')]};});_0x4ca4d7['query'][_0xc527('0x7e')]=_0xc527('0x7f');_0x4ca4d7[_0xc527('0x80')][_0xc527('0x46')]=!![];_0x16937b=qs['getOptions'](_0x2bfeda,_0x4ca4d7);_0x16937b['raw']=!![];if(_0x4ca4d7[_0xc527('0x81')][_0xc527('0x7e')]===_0xc527('0x81')){var _0x31197e={'params':{'id':_0x4ca4d7['user'][_0xc527('0x82')]},'query':{'section':_0xc527('0x14'),'role':'agent','online':!![],'nolimit':_0x4ca4d7['query'][_0xc527('0x83')],'sort':_0x4ca4d7[_0xc527('0x80')][_0xc527('0x84')],'filter':_0x4ca4d7[_0xc527('0x80')][_0xc527('0x3d')]},'raw':!![]};return db[_0xc527('0x85')][_0xc527('0x86')](_0x31197e);}return db[_0xc527('0x48')]['findAndCountAll'](_0x16937b);})['then'](function(_0x46e336){_0x35d7a1[_0xc527('0x9')]=_0x46e336['count'];_0x12321d=_0x46e336[_0xc527('0x87')];return getRealtimeAgents();})['then'](function(_0x3c63de){_0x327411=_0x3c63de['rows'];return _0x12321d['map'](function(_0x32ddb8){var _0x246427=_['find'](_0x327411,['id',_0x32ddb8['id']]);if(_0x246427)_[_0xc527('0x18')](_0x32ddb8,_['pick'](_['omit'](_0x246427,_0x1b5a69),_0x5e9d8f));_0x32ddb8[_0xc527('0x88')]=getAgentStatus(_0x32ddb8);return _0x32ddb8;});})[_0xc527('0x15')](function(_0x153451){if(_0x4ca4d7[_0xc527('0x80')][_0xc527('0x89')]){var _0x588ea4=_[_0xc527('0x3d')](_0x153451,[_0xc527('0x88'),_0x4ca4d7['query'][_0xc527('0x89')]]);if(_0x4ca4d7[_0xc527('0x80')][_0xc527('0x8a')]){_0x588ea4=_[_0xc527('0x3d')](_0x588ea4,[_0xc527('0x60'),_0x4ca4d7[_0xc527('0x80')]['pauseTypeFilter']]);}}_0x35d7a1[_0xc527('0x87')]=_0x588ea4||_0x153451;return _0x35d7a1;})[_0xc527('0x15')](respondWithFilteredResult(_0x2a8cc3,_0x16937b))[_0xc527('0x19')](handleError(_0x2a8cc3,null));};exports[_0xc527('0x8b')]=function(_0x1cb6f3,_0x555c97){var _0x2b0a35=[_0xc527('0x8c'),'chat',_0xc527('0x8d'),_0xc527('0x8e'),_0xc527('0x8f'),_0xc527('0x90'),_0xc527('0x1a')];var _0x27f3fe={'count':0x0,'rows':[]},_0x130800={},_0xaa25ae,_0x7420cf,_0x246fbe,_0x129f2c,_0x4100d8;Promise[_0xc527('0x91')]()[_0xc527('0x15')](function(){if(_0x1cb6f3[_0xc527('0x80')][_0xc527('0x92')]){if(!_[_0xc527('0x93')](_0x2b0a35,_0x1cb6f3[_0xc527('0x80')][_0xc527('0x92')][_0xc527('0x94')]()))throw new Error(_0xc527('0x95'));_0xaa25ae=_0x1cb6f3[_0xc527('0x80')]['channel'][_0xc527('0x94')]();}var _0xce99d=_[_0xc527('0x1b')](_0xaa25ae)+'Queue';var _0x2d5ab7=_[_0xc527('0x79')](db[_0xce99d][_0xc527('0x7a')],function(_0x2c31c9){return{'name':_0x2c31c9['fieldName'],'type':_0x2c31c9[_0xc527('0x7c')][_0xc527('0x7d')]};});_0x130800=qs[_0xc527('0x96')](_0x2d5ab7,_0x1cb6f3);if(_0x1cb6f3[_0xc527('0x81')]['role']==='user'){var _0x57f9b0={'params':{'id':_0x1cb6f3[_0xc527('0x81')][_0xc527('0x82')]},'query':{'section':_0xaa25ae===_0xc527('0x1a')&&_0x1cb6f3[_0xc527('0x80')]['type']===_0xc527('0x24')?_0xc527('0x97'):_[_0xc527('0x1b')](_0xaa25ae)+_0xc527('0x98'),'type':_0x1cb6f3[_0xc527('0x80')][_0xc527('0x7c')],'nolimit':!![],'sort':'name','filter':_0x1cb6f3[_0xc527('0x80')][_0xc527('0x3d')]}};return db['UserProfile'][_0xc527('0x86')](_0x57f9b0);}return db[_0xce99d][_0xc527('0x99')](_0x130800);})[_0xc527('0x15')](function(_0x2d48aa){_0x27f3fe[_0xc527('0x9')]=_0x2d48aa[_0xc527('0x9')];_0x7420cf=_0x2d48aa[_0xc527('0x87')];return getRealtimeQueues(_0x1cb6f3,_0xaa25ae);})['then'](function(_0x5d5fae){_0x129f2c=_0x5d5fae[_0xc527('0x87')];return getRealtimeAgents();})['then'](function(_0x1cec35){_0x246fbe=_0x1cec35[_0xc527('0x87')];if(_0xaa25ae!=_0xc527('0x1a'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x2e2b04){_0x4100d8=_0x2e2b04?_0x2e2b04[_0xc527('0x87')]:[];return initializeQueues(_0x7420cf,_0x129f2c,_0xaa25ae,_0x1cb6f3[_0xc527('0x80')]['type']);})[_0xc527('0x15')](function(_0x13f689){var _0x20cc11=_0x13f689['map'](function(_0x5e44bf){if(_0xaa25ae===_0xc527('0x1a'))return getVoiceQueueAgents(_0x5e44bf,_0x7420cf,_0x246fbe,_0x4100d8);else return getQueueAgents(_0x5e44bf,_0x246fbe,_0xaa25ae);});return Promise[_0xc527('0x9a')](_0x20cc11);})[_0xc527('0x15')](function(_0x3f364c){_0x27f3fe[_0xc527('0x87')]=_0x3f364c;return _0x27f3fe;})[_0xc527('0x15')](respondWithFilteredResult(_0x555c97,_0x130800))[_0xc527('0x19')](handleError(_0x555c97,null));};
\ No newline at end of file
+var _0x9510=['phoneBarEnableScreenRecordingByAgent','smsPause','resolve','map','User','rawAttributes','fieldName','type','key','role','agent','query','getOptions','raw','user','nolimit','sort','getResources','rows','globalStatusFilter','globalStatus','pauseTypeFilter','pauseType','getQueues','mail','chat','openchannel','fax','whatsapp','channel','includes','toLowerCase','Invalid\x20channel','userProfileId','QueueCampaigns','UserProfile','findAndCountAll','util','jayson/promise','../../components/parsers/qs','api','../../mysqldb','http','client','undefined','limit','count','offset','status','set','json','error','stack','name','send','request','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Agents','merge','voice','startCase','Queues','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','catch','loggedIn','available','waiting','talking','outbound','push','pTalking','originated','message','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','agents','paused','loggedInDb','busy','find','pick','filter','queue','length','some','internal','toString','UserId','online','voiceStatus','Queue','Pause','findAll','QueueId','idle','unknown','ringing','isNil','chatPause','mailPause','voicePause','whatsappPause','pause','every','chatStatus','faxStatus','whatsappStatus','getAgents','userpic','lastPauseAt','address','openchannelPause','faxPause','chatCapacity','openchannelCapacity','mailCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','mailStatus','smsStatus','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','screenrecording'];(function(_0x3f2228,_0x3b27d5){var _0x285ae4=function(_0x5e1f23){while(--_0x5e1f23){_0x3f2228['push'](_0x3f2228['shift']());}};_0x285ae4(++_0x3b27d5);}(_0x9510,0xbf));var _0x0951=function(_0x5e23f5,_0x3838f4){_0x5e23f5=_0x5e23f5-0x0;var _0xd65bec=_0x9510[_0x5e23f5];return _0xd65bec;};'use strict';var util=require(_0x0951('0x0'));var _=require('lodash');var jayson=require(_0x0951('0x1'));var qs=require(_0x0951('0x2'));var logger=require('../../config/logger')(_0x0951('0x3'));var db=require(_0x0951('0x4'))['db'];var amiClient=jayson['client'][_0x0951('0x5')]({'port':0x232a});var routingClient=jayson[_0x0951('0x6')]['http']({'port':0x232c});function respondWithFilteredResult(_0x437748,_0x1f7805){return function(_0x262007){if(_0x262007){var _0x30420b=typeof _0x1f7805['offset']===_0x0951('0x7')&&typeof _0x1f7805[_0x0951('0x8')]===_0x0951('0x7');var _0x384cee=_0x262007[_0x0951('0x9')];var _0x277cd9=_0x30420b?0x0:_0x1f7805[_0x0951('0xa')];var _0x3d4ad5=_0x30420b?_0x262007[_0x0951('0x9')]:_0x1f7805[_0x0951('0xa')]+_0x1f7805[_0x0951('0x8')];var _0x1e5938;if(_0x3d4ad5>=_0x384cee){_0x3d4ad5=_0x384cee;_0x1e5938=0xc8;}else{_0x1e5938=0xce;}_0x437748[_0x0951('0xb')](_0x1e5938);return _0x437748[_0x0951('0xc')]('Content-Range',_0x277cd9+'-'+_0x3d4ad5+'/'+_0x384cee)[_0x0951('0xd')](_0x262007);}return null;};}function handleError(_0x5346d9,_0x30b25f){_0x30b25f=_0x30b25f||0x1f4;return function(_0x38ef40){logger[_0x0951('0xe')](_0x38ef40[_0x0951('0xf')]);if(_0x38ef40[_0x0951('0x10')]){delete _0x38ef40[_0x0951('0x10')];}_0x5346d9[_0x0951('0xb')](_0x30b25f)[_0x0951('0x11')](_0x38ef40);};}function getRealtimeAgents(){return new Promise(function(_0xc90439,_0x34e22e){return amiClient[_0x0951('0x12')]('Agents',{})[_0x0951('0x13')](function(_0x4cf769){if(_0x4cf769[_0x0951('0xe')])throw new Error(_0x0951('0x14'));var _0x46ead1=_0x4cf769[_0x0951('0x15')];return routingClient[_0x0951('0x12')](_0x0951('0x16'),{})[_0x0951('0x13')](function(_0x385c4f){if(_0x385c4f[_0x0951('0xe')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x5444ce=_0x385c4f[_0x0951('0x15')];return _0xc90439(_[_0x0951('0x17')]({},_0x46ead1,_0x5444ce));});})['catch'](function(_0x1a67d5){_0x34e22e(_0x1a67d5);});});}function getRealtimeQueues(_0x5135d8,_0x3c25b5){return new Promise(function(_0xc65ad,_0x41efbe){var _0x3df592=_0x3c25b5===_0x0951('0x18')?amiClient:routingClient;return _0x3df592[_0x0951('0x12')](_[_0x0951('0x19')](_0x3c25b5)+_0x0951('0x1a'),_0x5135d8)[_0x0951('0x13')](function(_0x919708){if(_0x919708['error'])throw new Error(util[_0x0951('0x1b')](_0x0951('0x1c'),_0x3c25b5));return _0xc65ad(_0x919708[_0x0951('0x15')]);})['catch'](function(_0xb345cb){_0x41efbe(_0xb345cb);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x6d1061,_0x18431f){return amiClient[_0x0951('0x12')](_0x0951('0x1d'),{})[_0x0951('0x13')](function(_0xf675d4){if(_0xf675d4[_0x0951('0xe')])throw new Error(_0x0951('0x1e'));return _0x6d1061(_0xf675d4['result']);})[_0x0951('0x1f')](function(_0x8f9013){_0x18431f(_0x8f9013);});});}function initializeQueues(_0x2c2e76,_0x5f59b8,_0x834d91,_0x158fc7){var _0x1e7db1=[_0x0951('0x20'),_0x0951('0x21'),_0x0951('0x22'),_0x0951('0x23'),'paused'];if(_0x834d91==='voice'&&_0x158fc7===_0x0951('0x24')){_0x1e7db1[_0x0951('0x25')](_0x0951('0x26'),_0x0951('0x27'),_0x0951('0x28'),'dialActive',_0x0951('0x29'),_0x0951('0x2a'),_0x0951('0x2b'),_0x0951('0x2c'),_0x0951('0x2d'),_0x0951('0x2e'),_0x0951('0x2f'),_0x0951('0x30'),_0x0951('0x31'),'dialPredictiveIntervalMaxThreshold',_0x0951('0x32'),_0x0951('0x33'),_0x0951('0x34'),_0x0951('0x35'),_0x0951('0x36'),_0x0951('0x37'),_0x0951('0x38'),_0x0951('0x39'));}return _0x2c2e76['map'](function(_0x4c48db){var _0x83074d=_0x4c48db[_0x0951('0x3a')]({'plain':!![]});_0x83074d[_0x0951('0x3b')]=[];_0x83074d[_0x0951('0x3c')]=0x0;_0x83074d[_0x0951('0x3d')]=0x0;_0x83074d[_0x0951('0x20')]=0x0;_0x83074d[_0x0951('0x21')]=0x0;_0x83074d[_0x0951('0x22')]=0x0;if(_0x834d91===_0x0951('0x18')){_0x83074d[_0x0951('0x23')]=0x0;_0x83074d[_0x0951('0x3e')]=0x0;if(_0x158fc7===_0x0951('0x24')){_0x83074d[_0x0951('0x26')]=0x0;_0x83074d[_0x0951('0x27')]=0x0;}}var _0x5c51e2=_[_0x0951('0x3f')](_0x5f59b8,['id',_0x83074d['id']]);if(_0x5c51e2)_[_0x0951('0x17')](_0x83074d,_[_0x0951('0x40')](_0x5c51e2,_0x1e7db1));return _0x83074d;});}function updateAgentVoiceStatus(_0x41d361,_0xe9f451,_0x1b759c){var _0x1b740f=_[_0x0951('0x41')](_0x1b759c,[_0x0951('0x42'),_0xe9f451[_0x0951('0x10')]]);if(_0x1b740f[_0x0951('0x43')]===0x0)return _0x41d361['busy']=!![];if(_[_0x0951('0x44')](_0x1b740f,['connectedlinenum',_0x41d361[_0x0951('0x45')][_0x0951('0x46')]()]))return _0x41d361[_0x0951('0x23')]=!![];if(!_0x41d361[_0x0951('0x23')])return _0x41d361['busy']=!![];}function getVoiceQueueAgents(_0x29ffc2,_0xdbf9fb,_0x15f891,_0x2ecb94){var _0x5cea20=_[_0x0951('0x3f')](_0xdbf9fb,['id',_0x29ffc2['id']]);if(!_0x5cea20)return _0x29ffc2;return _0x5cea20['getMembers']({'raw':!![]})[_0x0951('0x13')](function(_0x1f12bf){for(var _0x526cb7=0x0;_0x526cb7<_0x1f12bf['length'];_0x526cb7++){var _0x194fba=_[_0x0951('0x3f')](_0x15f891,['id',_0x1f12bf[_0x526cb7][_0x0951('0x47')]]);if(!_0x194fba){_0x194fba={'id':_0x1f12bf[_0x526cb7]['UserId'],'name':_0x1f12bf[_0x526cb7][_0x0951('0x47')],'accountcode':'','online':![]};}var _0x303932={'id':_0x194fba['id'],'name':_0x194fba['name'],'internal':_0x194fba['accountcode'],'online':Boolean(_0x194fba[_0x0951('0x48')]),'paused':Boolean(_0x1f12bf[_0x526cb7]['paused'])};if(_0x194fba[_0x0951('0x49')]===_0x0951('0x23'))updateAgentVoiceStatus(_0x303932,_0x29ffc2,_0x2ecb94);if(_0x303932['online'])_0x29ffc2['loggedInDb']++;if(_0x303932[_0x0951('0x3e')])_0x29ffc2[_0x0951('0x3e')]++;if(_0x303932[_0x0951('0x3c')]&&!_0x303932[_0x0951('0x3e')]&&!_0x303932[_0x0951('0x23')])_0x29ffc2[_0x0951('0x3c')]++;_0x29ffc2[_0x0951('0x3b')][_0x0951('0x25')](_0x303932);}return _0x29ffc2;});}function getQueueAgents(_0x1f88ca,_0x532666,_0x13e222){var _0x33f569='User'+_[_0x0951('0x19')](_0x13e222)+_0x0951('0x4a');var _0x12bb73=_0x13e222+_0x0951('0x4b');return db[_0x33f569][_0x0951('0x4c')]({'where':{[_['startCase'](_0x13e222)+_0x0951('0x4d')]:_0x1f88ca['id']},'raw':!![]})[_0x0951('0x13')](function(_0x4ac51e){for(var _0x3cc8ec=0x0;_0x3cc8ec<_0x4ac51e['length'];_0x3cc8ec++){var _0x49e76b=_[_0x0951('0x3f')](_0x532666,['id',_0x4ac51e[_0x3cc8ec][_0x0951('0x47')]]);if(!_0x49e76b){_0x49e76b={'id':_0x4ac51e[_0x3cc8ec][_0x0951('0x47')],'name':_0x4ac51e[_0x3cc8ec][_0x0951('0x47')],'online':![],['pauseField']:![]};}var _0x5a23b3={'id':_0x49e76b['id'],'name':_0x49e76b['name'],'online':Boolean(_0x49e76b['online']),'paused':Boolean(_0x49e76b[_0x12bb73])};if(_0x5a23b3[_0x0951('0x48')])_0x1f88ca[_0x0951('0x3d')]++;_0x1f88ca['agents'][_0x0951('0x25')](_0x5a23b3);}return _0x1f88ca;});}function isIdle(_0x279727){return _0x279727===_0x0951('0x4e')||_0x279727===_0x0951('0x4f')||_0x279727==='unavailable'||_0x279727===_0x0951('0x50')||_[_0x0951('0x51')](_0x279727);}function isAgentPaused(_0x21dc06,_0x3d07dc){var _0x5f59be=[_0x21dc06[_0x0951('0x52')],_0x21dc06['faxPause'],_0x21dc06[_0x0951('0x53')],_0x21dc06['openchannelPause'],_0x21dc06['smsPause'],_0x21dc06[_0x0951('0x54')],_0x21dc06[_0x0951('0x55')]];if(!_0x3d07dc)return _['every'](_0x5f59be);var _0x119c42=_['filter'](_0x5f59be);return _0x119c42[_0x0951('0x43')]>0x0&&_0x119c42['length']<_0x5f59be[_0x0951('0x43')]?!![]:![];}function isAgentIdle(_0x148a4c){if(_0x148a4c[_0x0951('0x49')]!==_0x0951('0x4e')&&_0x148a4c[_0x0951('0x54')]){_0x148a4c[_0x0951('0x49')]=_0x0951('0x56');return![];}return _[_0x0951('0x57')]([_0x148a4c[_0x0951('0x58')],_0x148a4c[_0x0951('0x59')],_0x148a4c['mailStatus'],_0x148a4c['openchannelStatus'],_0x148a4c['smsStatus'],_0x148a4c[_0x0951('0x49')],_0x148a4c[_0x0951('0x5a')]],isIdle);}function getAgentStatus(_0x157e04){var _0x21f718=_0x0951('0x4f');if(isAgentPaused(_0x157e04))_0x21f718=_0x0951('0x56');else if(isAgentPaused(_0x157e04,!![]))_0x21f718='*pause';else if(isAgentIdle(_0x157e04))_0x21f718=_0x0951('0x4e');else _0x21f718=_0x0951('0x3e');return _0x21f718;}exports[_0x0951('0x5b')]=function(_0x4797db,_0x5a6a9c){var _0x190df8={'count':0x0,'rows':[]},_0xf61f4b={},_0x39c1a5,_0x354266,_0x4e6b1a=[_0x0951('0x5c'),_0x0951('0x48'),'lastLoginAt',_0x0951('0x5d'),'pauseType',_0x0951('0x5d'),'internal',_0x0951('0x5e'),'chatPause',_0x0951('0x5f'),'mailPause','smsPause',_0x0951('0x55'),_0x0951('0x60'),_0x0951('0x54'),_0x0951('0x61'),_0x0951('0x62'),_0x0951('0x63'),'smsCapacity',_0x0951('0x64'),_0x0951('0x65'),_0x0951('0x66'),_0x0951('0x67'),_0x0951('0x68'),_0x0951('0x69'),_0x0951('0x6a'),_0x0951('0x6b'),_0x0951('0x58'),_0x0951('0x6c'),_0x0951('0x6d'),_0x0951('0x6e'),'whatsappStatus',_0x0951('0x59'),_0x0951('0x49'),_0x0951('0x6f'),'openchannelStatusTime',_0x0951('0x70'),_0x0951('0x71'),_0x0951('0x72'),'faxStatusTime',_0x0951('0x73'),_0x0951('0x42'),'destconnectedlinenum',_0x0951('0x74'),_0x0951('0x75'),'phoneBarEnableAutomaticScreenRecording','routealias'],_0x362ca4=[_0x0951('0x52'),_0x0951('0x5f'),_0x0951('0x53'),_0x0951('0x76'),_0x0951('0x55'),'faxPause',_0x0951('0x54'),_0x0951('0x48')];Promise[_0x0951('0x77')]()[_0x0951('0x13')](function(){var _0x55d063=_[_0x0951('0x78')](db[_0x0951('0x79')][_0x0951('0x7a')],function(_0x5ae744){return{'name':_0x5ae744[_0x0951('0x7b')],'type':_0x5ae744[_0x0951('0x7c')][_0x0951('0x7d')]};});_0x4797db['query'][_0x0951('0x7e')]=_0x0951('0x7f');_0x4797db[_0x0951('0x80')][_0x0951('0x48')]=!![];_0xf61f4b=qs[_0x0951('0x81')](_0x55d063,_0x4797db);_0xf61f4b[_0x0951('0x82')]=!![];if(_0x4797db[_0x0951('0x83')]['role']===_0x0951('0x83')){var _0x3d10cb={'params':{'id':_0x4797db[_0x0951('0x83')]['userProfileId']},'query':{'section':'Agents','role':_0x0951('0x7f'),'online':!![],'nolimit':_0x4797db[_0x0951('0x80')][_0x0951('0x84')],'sort':_0x4797db[_0x0951('0x80')][_0x0951('0x85')],'filter':_0x4797db[_0x0951('0x80')][_0x0951('0x41')]},'raw':!![]};return db['UserProfile'][_0x0951('0x86')](_0x3d10cb);}return db[_0x0951('0x79')]['findAndCountAll'](_0xf61f4b);})['then'](function(_0x2b88e3){_0x190df8[_0x0951('0x9')]=_0x2b88e3[_0x0951('0x9')];_0x39c1a5=_0x2b88e3[_0x0951('0x87')];return getRealtimeAgents();})['then'](function(_0x3d0cbc){_0x354266=_0x3d0cbc['rows'];return _0x39c1a5[_0x0951('0x78')](function(_0x30eb7f){var _0x523ce0=_[_0x0951('0x3f')](_0x354266,['id',_0x30eb7f['id']]);if(_0x523ce0)_[_0x0951('0x17')](_0x30eb7f,_[_0x0951('0x40')](_['omit'](_0x523ce0,_0x362ca4),_0x4e6b1a));_0x30eb7f['globalStatus']=getAgentStatus(_0x30eb7f);return _0x30eb7f;});})[_0x0951('0x13')](function(_0x4d6deb){if(_0x4797db[_0x0951('0x80')][_0x0951('0x88')]){var _0x2d2931=_[_0x0951('0x41')](_0x4d6deb,[_0x0951('0x89'),_0x4797db['query']['globalStatusFilter']]);if(_0x4797db['query'][_0x0951('0x8a')]){_0x2d2931=_[_0x0951('0x41')](_0x2d2931,[_0x0951('0x8b'),_0x4797db[_0x0951('0x80')][_0x0951('0x8a')]]);}}_0x190df8[_0x0951('0x87')]=_0x2d2931||_0x4d6deb;return _0x190df8;})['then'](respondWithFilteredResult(_0x5a6a9c,_0xf61f4b))['catch'](handleError(_0x5a6a9c,null));};exports[_0x0951('0x8c')]=function(_0x1e0127,_0x5cce45){var _0x4c53ad=[_0x0951('0x8d'),_0x0951('0x8e'),'sms',_0x0951('0x8f'),_0x0951('0x90'),_0x0951('0x91'),_0x0951('0x18')];var _0xe6855a={'count':0x0,'rows':[]},_0x45298a={},_0x1595a9,_0x5aeedc,_0x4e812f,_0x5dce49,_0x2927d6;Promise[_0x0951('0x77')]()[_0x0951('0x13')](function(){if(_0x1e0127[_0x0951('0x80')][_0x0951('0x92')]){if(!_[_0x0951('0x93')](_0x4c53ad,_0x1e0127[_0x0951('0x80')][_0x0951('0x92')][_0x0951('0x94')]()))throw new Error(_0x0951('0x95'));_0x1595a9=_0x1e0127[_0x0951('0x80')][_0x0951('0x92')][_0x0951('0x94')]();}var _0x59c6d6=_['startCase'](_0x1595a9)+_0x0951('0x4a');var _0x29a7ac=_[_0x0951('0x78')](db[_0x59c6d6]['rawAttributes'],function(_0x1bdd20){return{'name':_0x1bdd20[_0x0951('0x7b')],'type':_0x1bdd20[_0x0951('0x7c')][_0x0951('0x7d')]};});_0x45298a=qs[_0x0951('0x81')](_0x29a7ac,_0x1e0127);if(_0x1e0127[_0x0951('0x83')][_0x0951('0x7e')]==='user'){var _0x208715={'params':{'id':_0x1e0127['user'][_0x0951('0x96')]},'query':{'section':_0x1595a9===_0x0951('0x18')&&_0x1e0127[_0x0951('0x80')][_0x0951('0x7c')]==='outbound'?_0x0951('0x97'):_[_0x0951('0x19')](_0x1595a9)+_0x0951('0x1a'),'type':_0x1e0127[_0x0951('0x80')][_0x0951('0x7c')],'nolimit':!![],'sort':'name','filter':_0x1e0127['query'][_0x0951('0x41')]}};return db[_0x0951('0x98')][_0x0951('0x86')](_0x208715);}return db[_0x59c6d6][_0x0951('0x99')](_0x45298a);})[_0x0951('0x13')](function(_0x121519){_0xe6855a[_0x0951('0x9')]=_0x121519[_0x0951('0x9')];_0x5aeedc=_0x121519[_0x0951('0x87')];return getRealtimeQueues(_0x1e0127,_0x1595a9);})[_0x0951('0x13')](function(_0x10ce43){_0x5dce49=_0x10ce43['rows'];return getRealtimeAgents();})[_0x0951('0x13')](function(_0x4e1451){_0x4e812f=_0x4e1451[_0x0951('0x87')];if(_0x1595a9!=_0x0951('0x18'))return;return getRealtimeVoiceQueueChannels();})[_0x0951('0x13')](function(_0x19c624){_0x2927d6=_0x19c624?_0x19c624[_0x0951('0x87')]:[];return initializeQueues(_0x5aeedc,_0x5dce49,_0x1595a9,_0x1e0127[_0x0951('0x80')][_0x0951('0x7c')]);})[_0x0951('0x13')](function(_0x135b0b){var _0x2b432d=_0x135b0b[_0x0951('0x78')](function(_0x2fe0c1){if(_0x1595a9===_0x0951('0x18'))return getVoiceQueueAgents(_0x2fe0c1,_0x5aeedc,_0x4e812f,_0x2927d6);else return getQueueAgents(_0x2fe0c1,_0x4e812f,_0x1595a9);});return Promise['all'](_0x2b432d);})[_0x0951('0x13')](function(_0x54a98e){_0xe6855a['rows']=_0x54a98e;return _0xe6855a;})[_0x0951('0x13')](respondWithFilteredResult(_0x5cce45,_0x45298a))['catch'](handleError(_0x5cce45,null));};
\ No newline at end of file
index ab0a240..da812de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5c0966,_0xb6392b){var _0x1ff52b=function(_0x798f0a){while(--_0x798f0a){_0x5c0966['push'](_0x5c0966['shift']());}};_0x1ff52b(++_0xb6392b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x13c70c,_0x546b34){_0x13c70c=_0x13c70c-0x0;var _0x50f0f2=_0xcb91[_0x13c70c];return _0x50f0f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x505a7d,_0x25e11f){var _0x17d880=function(_0x213c2){while(--_0x213c2){_0x505a7d['push'](_0x505a7d['shift']());}};_0x17d880(++_0x25e11f);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index a58a6b9..922b782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a5a=['DATE','exports','INTEGER','STRING'];(function(_0x2bf7b7,_0x59c8e6){var _0x40c78d=function(_0x3ac631){while(--_0x3ac631){_0x2bf7b7['push'](_0x2bf7b7['shift']());}};_0x40c78d(++_0x59c8e6);}(_0x5a5a,0x1d1));var _0xa5a5=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5a5a[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require('sequelize');module[_0xa5a5('0x0')]={'state':{'type':Sequelize[_0xa5a5('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa5a5('0x2')]},'scheduledat':{'type':Sequelize[_0xa5a5('0x3')]},'uniqueid':{'type':Sequelize[_0xa5a5('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xa5a5('0x3')]},'ringtime':{'type':Sequelize[_0xa5a5('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xa5a5('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2bd8=['sequelize','INTEGER','STRING','DATE'];(function(_0x2a6f23,_0x4f82ab){var _0x1cfe17=function(_0x1112dc){while(--_0x1112dc){_0x2a6f23['push'](_0x2a6f23['shift']());}};_0x1cfe17(++_0x4f82ab);}(_0x2bd8,0x130));var _0x82bd=function(_0x5d1062,_0x37963a){_0x5d1062=_0x5d1062-0x0;var _0x124288=_0x2bd8[_0x5d1062];return _0x124288;};'use strict';var Sequelize=require(_0x82bd('0x0'));module['exports']={'state':{'type':Sequelize[_0x82bd('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x82bd('0x2')]},'scheduledat':{'type':Sequelize[_0x82bd('0x3')]},'uniqueid':{'type':Sequelize[_0x82bd('0x2')]},'starttime':{'type':Sequelize[_0x82bd('0x3')]},'responsetime':{'type':Sequelize[_0x82bd('0x3')]},'ringtime':{'type':Sequelize[_0x82bd('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x82bd('0x2')]},'membername':{'type':Sequelize[_0x82bd('0x2')]}};
\ No newline at end of file
index d7c2d5a..9ba649b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31cc=['util','../../config/logger','api','request-promise','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','lodash'];(function(_0x4693b8,_0xff4dcc){var _0x117328=function(_0x847a02){while(--_0x847a02){_0x4693b8['push'](_0x4693b8['shift']());}};_0x117328(++_0xff4dcc);}(_0x31cc,0x1c1));var _0xc31c=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x31cc[_0x3c2a69];return _0x596bc8;};'use strict';var _=require(_0xc31c('0x0'));var util=require(_0xc31c('0x1'));var logger=require(_0xc31c('0x2'))(_0xc31c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc31c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc31c('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xc31c('0x6')]=function(_0x2caf1c,_0x45d9d1){return _0x2caf1c[_0xc31c('0x7')](_0xc31c('0x8'),attributes,{'tableName':_0xc31c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b10=['path','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x35bad0,_0x21927d){var _0x4fe50f=function(_0x1873df){while(--_0x1873df){_0x35bad0['push'](_0x35bad0['shift']());}};_0x4fe50f(++_0x21927d);}(_0x5b10,0x13f));var _0x05b1=function(_0x3823ee,_0xf5b6b4){_0x3823ee=_0x3823ee-0x0;var _0x3e31cd=_0x5b10[_0x3823ee];return _0x3e31cd;};'use strict';var _=require(_0x05b1('0x0'));var util=require(_0x05b1('0x1'));var logger=require(_0x05b1('0x2'))(_0x05b1('0x3'));var moment=require(_0x05b1('0x4'));var BPromise=require(_0x05b1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x05b1('0x6'));var rimraf=require('rimraf');var config=require(_0x05b1('0x7'));var attributes=require(_0x05b1('0x8'));module[_0x05b1('0x9')]=function(_0x50522a,_0x1e4b60){return _0x50522a[_0x05b1('0xa')](_0x05b1('0xb'),attributes,{'tableName':_0x05b1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e51bc05..b4dab51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7506=['options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','body'];(function(_0x414ff1,_0xf0462b){var _0x29c53f=function(_0x1dab72){while(--_0x1dab72){_0x414ff1['push'](_0x414ff1['shift']());}};_0x29c53f(++_0xf0462b);}(_0x7506,0x1e8));var _0x6750=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x7506[_0x4b2436];return _0x4f5ab2;};'use strict';var _=require('lodash');var util=require(_0x6750('0x0'));var moment=require(_0x6750('0x1'));var BPromise=require(_0x6750('0x2'));var rs=require(_0x6750('0x3'));var fs=require('fs');var Redis=require(_0x6750('0x4'));var db=require(_0x6750('0x5'))['db'];var utils=require(_0x6750('0x6'));var logger=require(_0x6750('0x7'))(_0x6750('0x8'));var config=require(_0x6750('0x9'));var jayson=require(_0x6750('0xa'));var client=jayson[_0x6750('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a0451,_0x2bfbd0,_0x1b2ba6){return new BPromise(function(_0x1ac58f,_0x3e2424){return client['request'](_0x3a0451,_0x1b2ba6)['then'](function(_0x10352a){logger[_0x6750('0xc')](_0x6750('0xd'),_0x2bfbd0,_0x6750('0xe'));logger[_0x6750('0xf')](_0x6750('0x10'),_0x2bfbd0,_0x6750('0xe'),JSON[_0x6750('0x11')](_0x10352a));if(_0x10352a[_0x6750('0x12')]){if(_0x10352a['error']['code']===0x1f4){logger[_0x6750('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0x2bfbd0,_0x10352a[_0x6750('0x12')][_0x6750('0x13')]);return _0x3e2424(_0x10352a[_0x6750('0x12')]['message']);}logger[_0x6750('0x12')](_0x6750('0xd'),_0x2bfbd0,_0x10352a[_0x6750('0x12')][_0x6750('0x13')]);return _0x1ac58f(_0x10352a[_0x6750('0x12')]['message']);}else{logger['info'](_0x6750('0xd'),_0x2bfbd0,_0x6750('0xe'));_0x1ac58f(_0x10352a[_0x6750('0x14')][_0x6750('0x13')]);}})[_0x6750('0x15')](function(_0x57ff7b){logger[_0x6750('0x12')](_0x6750('0xd'),_0x2bfbd0,_0x57ff7b);_0x3e2424(_0x57ff7b);});});}exports[_0x6750('0x16')]=function(_0x517f0d){var _0x13430f=this;return new Promise(function(_0x5ed744,_0x2c1f50){return db[_0x6750('0x17')]['create'](_0x517f0d[_0x6750('0x18')],{'raw':_0x517f0d[_0x6750('0x19')]?_0x517f0d[_0x6750('0x19')][_0x6750('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x2aba76){logger['info'](_0x6750('0x16'),_0x517f0d);logger[_0x6750('0xf')](_0x6750('0x16'),_0x517f0d,JSON['stringify'](_0x2aba76));_0x5ed744(_0x2aba76);})[_0x6750('0x15')](function(_0x1dc23c){logger[_0x6750('0x12')](_0x6750('0x16'),_0x1dc23c[_0x6750('0x13')],_0x517f0d);_0x2c1f50(_0x13430f[_0x6750('0x12')](0x1f4,_0x1dc23c[_0x6750('0x13')]));});});};
\ No newline at end of file
+var _0xeafb=['jayson/promise','client','http','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateReportAgentPreview','create','body','options','raw','randomstring','ioredis','../../config/logger','rpc'];(function(_0x3b4dcc,_0x185cdb){var _0x3f480c=function(_0x256859){while(--_0x256859){_0x3b4dcc['push'](_0x3b4dcc['shift']());}};_0x3f480c(++_0x185cdb);}(_0xeafb,0x1c4));var _0xbeaf=function(_0x1b892b,_0x4efe48){_0x1b892b=_0x1b892b-0x0;var _0xa99e57=_0xeafb[_0x1b892b];return _0xa99e57;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbeaf('0x0'));var fs=require('fs');var Redis=require(_0xbeaf('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbeaf('0x2'))(_0xbeaf('0x3'));var config=require('../../config/environment');var jayson=require(_0xbeaf('0x4'));var client=jayson[_0xbeaf('0x5')][_0xbeaf('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x12495e,_0x554c97,_0x8b195d){return new BPromise(function(_0x1ea18a,_0x445ae8){return client['request'](_0x12495e,_0x8b195d)[_0xbeaf('0x7')](function(_0x2bb056){logger[_0xbeaf('0x8')](_0xbeaf('0x9'),_0x554c97,_0xbeaf('0xa'));logger[_0xbeaf('0xb')](_0xbeaf('0xc'),_0x554c97,'request\x20sent',JSON[_0xbeaf('0xd')](_0x2bb056));if(_0x2bb056['error']){if(_0x2bb056[_0xbeaf('0xe')][_0xbeaf('0xf')]===0x1f4){logger[_0xbeaf('0xe')]('ReportAgentPreview,\x20%s,\x20%s',_0x554c97,_0x2bb056[_0xbeaf('0xe')]['message']);return _0x445ae8(_0x2bb056[_0xbeaf('0xe')][_0xbeaf('0x10')]);}logger[_0xbeaf('0xe')](_0xbeaf('0x9'),_0x554c97,_0x2bb056[_0xbeaf('0xe')][_0xbeaf('0x10')]);return _0x1ea18a(_0x2bb056['error'][_0xbeaf('0x10')]);}else{logger[_0xbeaf('0x8')](_0xbeaf('0x9'),_0x554c97,'request\x20sent');_0x1ea18a(_0x2bb056[_0xbeaf('0x11')][_0xbeaf('0x10')]);}})[_0xbeaf('0x12')](function(_0x5725f4){logger[_0xbeaf('0xe')](_0xbeaf('0x9'),_0x554c97,_0x5725f4);_0x445ae8(_0x5725f4);});});}exports[_0xbeaf('0x13')]=function(_0x1761e3){var _0x4f7442=this;return new Promise(function(_0x1f3471,_0x8806d3){return db['ReportAgentPreview'][_0xbeaf('0x14')](_0x1761e3[_0xbeaf('0x15')],{'raw':_0x1761e3[_0xbeaf('0x16')]?_0x1761e3['options'][_0xbeaf('0x17')]===undefined?!![]:![]:!![]})[_0xbeaf('0x7')](function(_0x4d7344){logger[_0xbeaf('0x8')](_0xbeaf('0x13'),_0x1761e3);logger[_0xbeaf('0xb')](_0xbeaf('0x13'),_0x1761e3,JSON[_0xbeaf('0xd')](_0x4d7344));_0x1f3471(_0x4d7344);})[_0xbeaf('0x12')](function(_0x5b97ad){logger[_0xbeaf('0xe')](_0xbeaf('0x13'),_0x5b97ad[_0xbeaf('0x10')],_0x1761e3);_0x8806d3(_0x4f7442[_0xbeaf('0xe')](0x1f4,_0x5b97ad['message']));});});};
\ No newline at end of file
index 4ccd6f9..c369d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc09=['smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','/mail/queues/:id','showMailQueues','queueNotify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','exports','util','path','express','Router','get','/voice/channels','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','isAuthenticated','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions'];(function(_0x18cb0a,_0x172892){var _0x4c7286=function(_0xf07105){while(--_0xf07105){_0x18cb0a['push'](_0x18cb0a['shift']());}};_0x4c7286(++_0x172892);}(_0xdc09,0xc2));var _0x9dc0=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0xdc09[_0x50f392];return _0x5926f2;};'use strict';var multer=require('multer');var util=require(_0x9dc0('0x0'));var path=require(_0x9dc0('0x1'));var express=require(_0x9dc0('0x2'));var router=express[_0x9dc0('0x3')]();var auth=require('../../components/auth/service');var controller=require('./rpc.controller');router[_0x9dc0('0x4')](_0x9dc0('0x5'),auth['isAuthenticated'](),controller[_0x9dc0('0x6')]);router[_0x9dc0('0x4')]('/voice/channels/:uniqueid/mixmonitor',auth['isAuthenticated'](),controller[_0x9dc0('0x7')]);router[_0x9dc0('0x4')](_0x9dc0('0x8'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xa')]);router[_0x9dc0('0x4')](_0x9dc0('0xb'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xc')]);router[_0x9dc0('0x4')](_0x9dc0('0xd'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0xe')]);router['get'](_0x9dc0('0xf'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x10')]);router['get'](_0x9dc0('0x11'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x12')]);router[_0x9dc0('0x4')](_0x9dc0('0x13'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x14')]);router[_0x9dc0('0x4')](_0x9dc0('0x15'),auth['isAuthenticated'](),controller[_0x9dc0('0x16')]);router['get'](_0x9dc0('0x17'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x18')]);router[_0x9dc0('0x4')](_0x9dc0('0x19'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1a')]);router['get'](_0x9dc0('0x1b'),auth[_0x9dc0('0x9')](),controller['voiceQueuesPreview']);router[_0x9dc0('0x4')](_0x9dc0('0x1c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1d')]);router[_0x9dc0('0x4')]('/voice/queues/channels/:uniqueid',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x1e')]);router[_0x9dc0('0x4')](_0x9dc0('0x1f'),auth[_0x9dc0('0x9')](),controller['voiceQueuesChannelHangup']);router[_0x9dc0('0x4')](_0x9dc0('0x20'),auth['isAuthenticated'](),controller[_0x9dc0('0x21')]);router[_0x9dc0('0x4')]('/voice/queues/:id',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x22')]);router[_0x9dc0('0x23')](_0x9dc0('0x24'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x25')]);router['get'](_0x9dc0('0x26'),auth['isAuthenticated'](),controller['outbound']);router[_0x9dc0('0x4')](_0x9dc0('0x27'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x28')]);router['get']('/agents',auth[_0x9dc0('0x9')](),controller['agents']);router[_0x9dc0('0x23')]('/agents/:id/capacity',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x29')]);router[_0x9dc0('0x4')](_0x9dc0('0x2a'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x2b')]);router['get'](_0x9dc0('0x2c'),auth['isAuthenticated'](),controller[_0x9dc0('0x2d')]);router[_0x9dc0('0x4')](_0x9dc0('0x2e'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x2f')]);router[_0x9dc0('0x4')](_0x9dc0('0x30'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x31')]);router[_0x9dc0('0x4')](_0x9dc0('0x32'),auth['isAuthenticated'](),controller[_0x9dc0('0x33')]);router[_0x9dc0('0x4')](_0x9dc0('0x34'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x35')]);router[_0x9dc0('0x4')]('/openchannel/queues/waitinginteractions',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x36')]);router[_0x9dc0('0x4')](_0x9dc0('0x37'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x38')]);router[_0x9dc0('0x4')](_0x9dc0('0x39'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x3a')]);router[_0x9dc0('0x4')](_0x9dc0('0x3b'),auth[_0x9dc0('0x9')](),controller['whatsappQueuesWaitingInteractions']);router[_0x9dc0('0x4')](_0x9dc0('0x3c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x3d')]);router[_0x9dc0('0x3e')](_0x9dc0('0x3f'),auth[_0x9dc0('0x9')](),controller['queueNotify']('mail'));router[_0x9dc0('0x4')](_0x9dc0('0x40'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x41')]);router[_0x9dc0('0x3e')]('/chat/queues/:id/notify',auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x42')](_0x9dc0('0x43')));router['get'](_0x9dc0('0x44'),auth['isAuthenticated'](),controller[_0x9dc0('0x45')]);router[_0x9dc0('0x3e')]('/fax/queues/:id/notify',auth[_0x9dc0('0x9')](),controller['queueNotify']('fax'));router[_0x9dc0('0x4')](_0x9dc0('0x46'),auth['isAuthenticated'](),controller[_0x9dc0('0x47')]);router[_0x9dc0('0x3e')](_0x9dc0('0x48'),auth['isAuthenticated'](),controller['queueNotify'](_0x9dc0('0x49')));router[_0x9dc0('0x4')](_0x9dc0('0x4a'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x4b')]);router[_0x9dc0('0x3e')](_0x9dc0('0x4c'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x42')](_0x9dc0('0x4d')));router[_0x9dc0('0x3e')](_0x9dc0('0x4e'),auth[_0x9dc0('0x9')](),controller['queueNotify'](_0x9dc0('0x4f')));router['get'](_0x9dc0('0x50'),auth[_0x9dc0('0x9')](),controller[_0x9dc0('0x51')]);router[_0x9dc0('0x4')](_0x9dc0('0x52'),auth['isAuthenticated'](),controller['showWhatsappQueues']);router[_0x9dc0('0x3e')]('/agents/:id/notify',auth[_0x9dc0('0x9')](),controller['agentNotify']);module[_0x9dc0('0x53')]=router;
\ No newline at end of file
+var _0xdfba=['/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','showFaxQueues','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports','multer','express','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','/mail/accounts','mailAccounts','openchannelQueues','/sms/queues','smsQueues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','/voice/queues/:id','put','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/trunks','/campaigns','campaigns','/fax/accounts','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions'];(function(_0x518357,_0x4cee27){var _0x25c4ef=function(_0x5539d2){while(--_0x5539d2){_0x518357['push'](_0x518357['shift']());}};_0x25c4ef(++_0x4cee27);}(_0xdfba,0xf4));var _0xadfb=function(_0x46f098,_0x5f5063){_0x46f098=_0x46f098-0x0;var _0x1eef1d=_0xdfba[_0x46f098];return _0x1eef1d;};'use strict';var multer=require(_0xadfb('0x0'));var util=require('util');var path=require('path');var express=require(_0xadfb('0x1'));var router=express['Router']();var auth=require(_0xadfb('0x2'));var controller=require('./rpc.controller');router[_0xadfb('0x3')](_0xadfb('0x4'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x6')]);router['get'](_0xadfb('0x7'),auth['isAuthenticated'](),controller[_0xadfb('0x8')]);router[_0xadfb('0x3')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0xadfb('0x9')]);router[_0xadfb('0x3')](_0xadfb('0xa'),auth[_0xadfb('0x5')](),controller['voiceQueues']);router[_0xadfb('0x3')](_0xadfb('0xb'),auth[_0xadfb('0x5')](),controller['chatQueues']);router[_0xadfb('0x3')]('/mail/queues',auth['isAuthenticated'](),controller['mailQueues']);router['get'](_0xadfb('0xc'),auth[_0xadfb('0x5')](),controller[_0xadfb('0xd')]);router[_0xadfb('0x3')]('/openchannel/queues',auth['isAuthenticated'](),controller[_0xadfb('0xe')]);router['get'](_0xadfb('0xf'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x10')]);router[_0xadfb('0x3')]('/whatsapp/queues',auth[_0xadfb('0x5')](),controller[_0xadfb('0x11')]);router[_0xadfb('0x3')](_0xadfb('0x12'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x13')]);router['get'](_0xadfb('0x14'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x15')]);router[_0xadfb('0x3')](_0xadfb('0x16'),auth['isAuthenticated'](),controller[_0xadfb('0x17')]);router[_0xadfb('0x3')](_0xadfb('0x18'),auth[_0xadfb('0x5')](),controller['voiceQueuesChannel']);router[_0xadfb('0x3')]('/voice/queues/channels/:uniqueid/hangup',auth[_0xadfb('0x5')](),controller[_0xadfb('0x19')]);router[_0xadfb('0x3')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0xadfb('0x5')](),controller[_0xadfb('0x1a')]);router[_0xadfb('0x3')](_0xadfb('0x1b'),auth[_0xadfb('0x5')](),controller['showVoiceQueues']);router[_0xadfb('0x1c')](_0xadfb('0x1b'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x1d')]);router[_0xadfb('0x3')](_0xadfb('0x1e'),auth[_0xadfb('0x5')](),controller['outbound']);router['get'](_0xadfb('0x1f'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x20')]);router['get'](_0xadfb('0x21'),auth[_0xadfb('0x5')](),controller['agents']);router[_0xadfb('0x1c')](_0xadfb('0x22'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x23')]);router[_0xadfb('0x3')]('/telephones',auth['isAuthenticated'](),controller['telephones']);router[_0xadfb('0x3')](_0xadfb('0x24'),auth[_0xadfb('0x5')](),controller['trunks']);router[_0xadfb('0x3')](_0xadfb('0x25'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x26')]);router[_0xadfb('0x3')](_0xadfb('0x27'),auth[_0xadfb('0x5')](),controller['faxAccounts']);router[_0xadfb('0x3')]('/chat/queues/waitinginteractions',auth[_0xadfb('0x5')](),controller[_0xadfb('0x28')]);router[_0xadfb('0x3')](_0xadfb('0x29'),auth[_0xadfb('0x5')](),controller['mailQueuesWaitingInteractions']);router['get'](_0xadfb('0x2a'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x2b')]);router['get'](_0xadfb('0x2c'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x2d')]);router[_0xadfb('0x3')](_0xadfb('0x2e'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x2f')]);router[_0xadfb('0x3')](_0xadfb('0x30'),auth[_0xadfb('0x5')](),controller['whatsappQueuesWaitingInteractions']);router[_0xadfb('0x3')](_0xadfb('0x31'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x32')]);router[_0xadfb('0x33')](_0xadfb('0x34'),auth['isAuthenticated'](),controller[_0xadfb('0x35')]('mail'));router[_0xadfb('0x3')](_0xadfb('0x36'),auth['isAuthenticated'](),controller[_0xadfb('0x37')]);router[_0xadfb('0x33')]('/chat/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0xadfb('0x38')));router['get'](_0xadfb('0x39'),auth['isAuthenticated'](),controller[_0xadfb('0x3a')]);router[_0xadfb('0x33')](_0xadfb('0x3b'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x35')]('fax'));router['get']('/fax/queues/:id',auth[_0xadfb('0x5')](),controller[_0xadfb('0x3c')]);router['post']('/openchannel/queues/:id/notify',auth[_0xadfb('0x5')](),controller[_0xadfb('0x35')](_0xadfb('0x3d')));router[_0xadfb('0x3')](_0xadfb('0x3e'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x3f')]);router[_0xadfb('0x33')](_0xadfb('0x40'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x35')](_0xadfb('0x41')));router[_0xadfb('0x33')](_0xadfb('0x42'),auth[_0xadfb('0x5')](),controller[_0xadfb('0x35')]('whatsapp'));router[_0xadfb('0x3')](_0xadfb('0x43'),auth['isAuthenticated'](),controller['showSmsQueues']);router[_0xadfb('0x3')](_0xadfb('0x44'),auth[_0xadfb('0x5')](),controller['showWhatsappQueues']);router[_0xadfb('0x33')](_0xadfb('0x45'),auth['isAuthenticated'](),controller[_0xadfb('0x46')]);module[_0xadfb('0x47')]=router;
\ No newline at end of file
index 2e4e98c..19a4b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa630=['user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','agent','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','ChatQueues','MailQueues','showMailQueues','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','update','agentTransferTimeout','bluebird','moment','../../mysqldb','api','client','http','then','error','code','message','result','json','stack','name','status','isNil','rows','find','voiceChannels','VoiceChannels','catch','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','agentCapacity'];(function(_0x1de2bd,_0x953fb){var _0x595960=function(_0xea260b){while(--_0xea260b){_0x1de2bd['push'](_0x1de2bd['shift']());}};_0x595960(++_0x953fb);}(_0xa630,0xbe));var _0x0a63=function(_0x5991c7,_0x51e074){_0x5991c7=_0x5991c7-0x0;var _0x1cd4eb=_0xa630[_0x5991c7];return _0x1cd4eb;};'use strict';var BPromise=require(_0x0a63('0x0'));var moment=require(_0x0a63('0x1'));var _=require('lodash');var util=require('util');var db=require(_0x0a63('0x2'))['db'];var logger=require('../../config/logger')(_0x0a63('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x0a63('0x4')][_0x0a63('0x5')]({'port':0x232a});var mailClient=jayson[_0x0a63('0x4')][_0x0a63('0x5')]({'port':0x232b});var routingClient=jayson[_0x0a63('0x4')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2760b0,_0x3d5f0b,_0xc2dcd7){return new BPromise(function(_0x41d21d,_0x12a7df){var _0x2a1bd7=_0xc2dcd7?_0xc2dcd7:amiClient;return _0x2a1bd7['request'](_0x2760b0,_0x3d5f0b)[_0x0a63('0x6')](function(_0xb714c7){if(_0xb714c7[_0x0a63('0x7')]){if(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x8')]===0x1f4){return _0x12a7df(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x9')]);}return _0x41d21d(_0xb714c7[_0x0a63('0x7')][_0x0a63('0x9')]);}else{_0x41d21d(_0xb714c7[_0x0a63('0xa')]);}})['catch'](function(_0x345f56){_0x12a7df(_0x345f56);});});}function respondWithResult(_0x420043,_0x2fce86){_0x2fce86=_0x2fce86||0xc8;return function(_0x3d6323){if(_0x3d6323){return _0x420043['status'](_0x2fce86)[_0x0a63('0xb')](_0x3d6323);}return _0x420043['sendStatus'](0x194);};}function handleError(_0x331e99,_0x19e922){_0x19e922=_0x19e922||0x1f4;return function(_0x26b2bc){logger[_0x0a63('0x7')](_0x26b2bc[_0x0a63('0xc')]);if(_0x26b2bc[_0x0a63('0xd')]){delete _0x26b2bc[_0x0a63('0xd')];}_0x331e99[_0x0a63('0xe')](_0x19e922)['send'](_0x26b2bc);};}function findById(_0x47788e){return function(_0x56b314){if(!_[_0x0a63('0xf')](_0x47788e)&&!_[_0x0a63('0xf')](_0x56b314)&&!_[_0x0a63('0xf')](_0x56b314[_0x0a63('0x10')])){return _[_0x0a63('0x11')](_0x56b314[_0x0a63('0x10')],function(_0x30f292){return _0x30f292['id']==_0x47788e;});}return null;};}exports[_0x0a63('0x12')]=function(_0x2fd06c,_0x3cc74d){return respondWithRpcPromise(_0x0a63('0x13'),_0x2fd06c['query'])['then'](respondWithResult(_0x3cc74d,null))[_0x0a63('0x14')](handleError(_0x3cc74d,null));};exports['voiceChannelMixMonitor']=function(_0x2fc87c,_0x5937df){return respondWithRpcPromise(_0x0a63('0x15'),_[_0x0a63('0x16')](_0x2fc87c[_0x0a63('0x17')],_0x2fc87c[_0x0a63('0x18')]))['then'](respondWithResult(_0x5937df,null))[_0x0a63('0x14')](handleError(_0x5937df,null));};exports['voiceChannelStopMixMonitor']=function(_0x3a7f9d,_0x11fe64){return respondWithRpcPromise(_0x0a63('0x19'),_[_0x0a63('0x16')](_0x3a7f9d[_0x0a63('0x17')],_0x3a7f9d[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x11fe64,null))[_0x0a63('0x14')](handleError(_0x11fe64,null));};exports['voiceQueues']=function(_0x5e5987,_0x55fb70){return respondWithRpcPromise('VoiceQueues',_0x5e5987[_0x0a63('0x17')])['then'](respondWithResult(_0x55fb70,null))['catch'](handleError(_0x55fb70,null));};exports[_0x0a63('0x1a')]=function(_0x1d5448,_0x362d6a){return respondWithRpcPromise(_0x0a63('0x1b'),_0x1d5448['query'])[_0x0a63('0x6')](findById(_0x1d5448[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x362d6a,null))['catch'](handleError(_0x362d6a,null));};exports[_0x0a63('0x1c')]=function(_0xcf409,_0x1b7bdb){return respondWithRpcPromise(_0x0a63('0x1d'),_[_0x0a63('0x16')](_0xcf409[_0x0a63('0x1e')],_0xcf409[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x1b7bdb,null))['catch'](handleError(_0x1b7bdb,null));};exports[_0x0a63('0x1f')]=function(_0x574c06,_0x151cb6){return respondWithRpcPromise(_0x0a63('0x20'),_[_0x0a63('0x16')](_0x574c06[_0x0a63('0x17')],_0x574c06[_0x0a63('0x18')]))['then'](respondWithResult(_0x151cb6,null))[_0x0a63('0x14')](handleError(_0x151cb6,null));};exports[_0x0a63('0x21')]=function(_0x33a717,_0x46fb40){return respondWithRpcPromise('VoiceQueuesChannels',_0x33a717[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x46fb40,null))['catch'](handleError(_0x46fb40,null));};exports['voiceQueuesChannel']=function(_0x34a170,_0x51d959){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0a63('0x16')](_0x34a170[_0x0a63('0x17')],_0x34a170['params']))[_0x0a63('0x6')](respondWithResult(_0x51d959,null))[_0x0a63('0x14')](handleError(_0x51d959,null));};exports[_0x0a63('0x22')]=function(_0x333130,_0x395cce){return respondWithRpcPromise('VoiceQueuesChannelHangup',_['merge'](_0x333130[_0x0a63('0x17')],_0x333130[_0x0a63('0x18')]))[_0x0a63('0x6')](respondWithResult(_0x395cce,null))[_0x0a63('0x14')](handleError(_0x395cce,null));};exports[_0x0a63('0x23')]=function(_0x273bcf,_0x59912d){return respondWithRpcPromise(_0x0a63('0x24'),_[_0x0a63('0x16')](_0x273bcf['query'],_0x273bcf[_0x0a63('0x18')]))['then'](respondWithResult(_0x59912d,null))['catch'](handleError(_0x59912d,null));};exports[_0x0a63('0x25')]=function(_0x232388,_0xdc602c){return respondWithRpcPromise('Outbound',_0x232388[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0xdc602c,null))[_0x0a63('0x14')](handleError(_0xdc602c,null));};exports[_0x0a63('0x26')]=function(_0x3f88a1,_0x876bc6){return respondWithRpcPromise(_0x0a63('0x27'),_0x3f88a1['query'])[_0x0a63('0x6')](respondWithResult(_0x876bc6,null))[_0x0a63('0x14')](handleError(_0x876bc6,null));};exports[_0x0a63('0x28')]=function(_0x53d034,_0x5d9952){var _0x28f904;return respondWithRpcPromise('Agents',_0x53d034[_0x0a63('0x17')])[_0x0a63('0x6')](function(_0x128e9e){_0x28f904=_0x128e9e;return respondWithRpcPromise('Agents',_0x53d034[_0x0a63('0x17')],routingClient);})[_0x0a63('0x6')](function(_0x46b6ee){return _[_0x0a63('0x16')]({},_0x46b6ee,_0x28f904);})['then'](respondWithResult(_0x5d9952,null))[_0x0a63('0x14')](handleError(_0x5d9952,null));};exports[_0x0a63('0x29')]=function(_0x4234cd,_0x2ccd99){if(_0x4234cd[_0x0a63('0x1e')]&&_0x4234cd[_0x0a63('0x1e')]['interaction']&&_0x4234cd[_0x0a63('0x2a')]&&_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')]){for(var _0x793502 in _0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')]){if(_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x0a63('0x2c')](_0x793502)){db[_0x0a63('0x2d')][_0x0a63('0x2e')]({'where':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')],'type':_0x0a63('0x2f'),'exitAt':null,'uniqueid':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502]&&_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502]['length']?{'$notIn':_0x4234cd[_0x0a63('0x1e')]['interaction'][_0x793502]}:{'$ne':null}}})['then'](function(_0xd9eddc){var _0x223ecf=moment()[_0x0a63('0x30')](_0x0a63('0x31'));for(var _0xd9149d=0x0,_0x9c89ed=_0xd9eddc[_0x0a63('0x32')];_0xd9149d<_0x9c89ed;_0xd9149d+=0x1){_0xd9eddc[_0xd9149d][_0x0a63('0x33')]({'exitAt':_0x223ecf});}});for(var _0x3d0667=0x0;_0x3d0667<_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502][_0x0a63('0x32')];_0x3d0667+=0x1){db[_0x0a63('0x2d')][_0x0a63('0x34')]({'where':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')][_0x0a63('0xd')],'type':_0x0a63('0x2f'),'uniqueid':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x2b')][_0x793502][_0x3d0667],'exitAt':null},'defaults':{'channel':_0x793502,'membername':_0x4234cd[_0x0a63('0x2a')]['name'],'interface':_[_0x0a63('0xf')](_0x4234cd[_0x0a63('0x2a')]['interface'])?util['format']('SIP/%s',_0x4234cd['user'][_0x0a63('0xd')]):_0x4234cd[_0x0a63('0x2a')]['interface'],'type':_0x0a63('0x2f'),'enterAt':moment()['format'](_0x0a63('0x31')),'role':_0x0a63('0x35'),'internal':_0x4234cd['user']['internal'],'uniqueid':_0x4234cd['body'][_0x0a63('0x2b')][_0x793502][_0x3d0667]}});}}}}return respondWithRpcPromise(_0x0a63('0x36'),{'id':_0x4234cd[_0x0a63('0x18')]['id'],'capacity':_0x4234cd[_0x0a63('0x1e')][_0x0a63('0x37')]},routingClient)['then'](respondWithResult(_0x2ccd99,null))[_0x0a63('0x14')](handleError(_0x2ccd99,null));};exports[_0x0a63('0x38')]=function(_0x22b3ea,_0x10adf1){return respondWithRpcPromise(_0x0a63('0x39'),_0x22b3ea['query'])[_0x0a63('0x6')](respondWithResult(_0x10adf1,null))[_0x0a63('0x14')](handleError(_0x10adf1,null));};exports[_0x0a63('0x3a')]=function(_0x1fbd2b,_0x4f3414){return respondWithRpcPromise(_0x0a63('0x3b'),_0x1fbd2b[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x4f3414,null))[_0x0a63('0x14')](handleError(_0x4f3414,null));};exports[_0x0a63('0x3c')]=function(_0x258ed3,_0x4d4e20){return respondWithRpcPromise(_0x0a63('0x3d'),_0x258ed3[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x4d4e20,null))[_0x0a63('0x14')](handleError(_0x4d4e20,null));};exports['chatQueues']=function(_0x4c1e34,_0x2ac98b){return respondWithRpcPromise(_0x0a63('0x3e'),_0x4c1e34[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x2ac98b,null))[_0x0a63('0x14')](handleError(_0x2ac98b,null));};exports['showChatQueues']=function(_0x5e6aae,_0x58b3a8){return respondWithRpcPromise(_0x0a63('0x3e'),_0x5e6aae['query'],routingClient)[_0x0a63('0x6')](findById(_0x5e6aae[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x58b3a8,null))['catch'](handleError(_0x58b3a8,null));};exports['mailQueues']=function(_0x2d63c6,_0x226279){return respondWithRpcPromise(_0x0a63('0x3f'),_0x2d63c6[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x226279,null))[_0x0a63('0x14')](handleError(_0x226279,null));};exports[_0x0a63('0x40')]=function(_0xc3415c,_0xe454ef){return respondWithRpcPromise(_0x0a63('0x3f'),_0xc3415c[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0xc3415c[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0xe454ef,null))['catch'](handleError(_0xe454ef,null));};exports['mailAccounts']=function(_0x1adea6,_0x24c9e0){return respondWithRpcPromise('MailAccounts',_0x1adea6[_0x0a63('0x17')],mailClient)[_0x0a63('0x6')](respondWithResult(_0x24c9e0,null))['catch'](handleError(_0x24c9e0,null));};exports[_0x0a63('0x41')]=function(_0x3053e4,_0x5e5495){return respondWithRpcPromise('OpenchannelQueues',_0x3053e4[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x5e5495,null))[_0x0a63('0x14')](handleError(_0x5e5495,null));};exports['showOpenchannelQueues']=function(_0x116e05,_0x375acd){return respondWithRpcPromise(_0x0a63('0x42'),_0x116e05[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x116e05['params']['id']))[_0x0a63('0x6')](respondWithResult(_0x375acd,null))[_0x0a63('0x14')](handleError(_0x375acd,null));};exports[_0x0a63('0x43')]=function(_0x1fa9cd,_0x295c06){return respondWithRpcPromise(_0x0a63('0x44'),_0x1fa9cd[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x295c06,null))[_0x0a63('0x14')](handleError(_0x295c06,null));};exports[_0x0a63('0x45')]=function(_0x252f70,_0x1155f1){return respondWithRpcPromise(_0x0a63('0x44'),_0x252f70[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x252f70[_0x0a63('0x18')]['id']))['then'](respondWithResult(_0x1155f1,null))['catch'](handleError(_0x1155f1,null));};exports[_0x0a63('0x46')]=function(_0x30e5f0,_0x4137bc){return respondWithRpcPromise(_0x0a63('0x47'),_0x30e5f0[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x4137bc,null))[_0x0a63('0x14')](handleError(_0x4137bc,null));};exports[_0x0a63('0x48')]=function(_0x1aefc4,_0x2a2f1b){return respondWithRpcPromise(_0x0a63('0x47'),_0x1aefc4[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x1aefc4[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x2a2f1b,null))[_0x0a63('0x14')](handleError(_0x2a2f1b,null));};exports[_0x0a63('0x49')]=function(_0x485969,_0x25276f){return respondWithRpcPromise('FaxQueues',_0x485969[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x25276f,null))['catch'](handleError(_0x25276f,null));};exports['showFaxQueues']=function(_0x480acb,_0x31481f){return respondWithRpcPromise(_0x0a63('0x4a'),_0x480acb[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](findById(_0x480acb[_0x0a63('0x18')]['id']))[_0x0a63('0x6')](respondWithResult(_0x31481f,null))['catch'](handleError(_0x31481f,null));};exports['faxAccounts']=function(_0x5cb325,_0x1213a5){return respondWithRpcPromise(_0x0a63('0x4b'),_0x5cb325[_0x0a63('0x17')])[_0x0a63('0x6')](respondWithResult(_0x1213a5,null))['catch'](handleError(_0x1213a5,null));};exports[_0x0a63('0x4c')]=function(_0x5ed2db,_0x5de3de){return respondWithRpcPromise(_0x0a63('0x4d'),_0x5ed2db['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x5de3de,null))[_0x0a63('0x14')](handleError(_0x5de3de,null));};exports['mailQueuesWaitingInteractions']=function(_0x267583,_0x4d1e35){return respondWithRpcPromise(_0x0a63('0x4e'),_0x267583['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x4d1e35,null))[_0x0a63('0x14')](handleError(_0x4d1e35,null));};exports[_0x0a63('0x4f')]=function(_0x4fba49,_0x3b8442){return respondWithRpcPromise(_0x0a63('0x50'),_0x4fba49[_0x0a63('0x17')],routingClient)[_0x0a63('0x6')](respondWithResult(_0x3b8442,null))[_0x0a63('0x14')](handleError(_0x3b8442,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x55174c,_0x550dbb){return respondWithRpcPromise(_0x0a63('0x50'),_0x55174c['query'],routingClient)[_0x0a63('0x6')](function(_0xa27da4){if(_0x55174c[_0x0a63('0x17')][_0x0a63('0x51')]!==undefined){var _0x5540c6=_(_0xa27da4[_0x0a63('0x10')])[_0x0a63('0x52')]([_0x55174c['query'][_0x0a63('0x51')],_0x55174c[_0x0a63('0x18')]['id']])[_0x0a63('0x53')](_0x0a63('0x54'))[_0x0a63('0x55')]()['value']();return _0xa27da4[_0x0a63('0x10')][_0x0a63('0x52')](function(_0x3941f6){return _0x5540c6['indexOf'](_0x3941f6['queue_id'])>-0x1;});}else{return _0xa27da4['rows'][_0x0a63('0x52')](function(_0x3b94ae){return _0x3b94ae[_0x0a63('0x54')]===parseInt(_0x55174c[_0x0a63('0x18')]['id']);});}})[_0x0a63('0x6')](respondWithResult(_0x550dbb,null))[_0x0a63('0x14')](handleError(_0x550dbb,null));};exports[_0x0a63('0x56')]=function(_0x37255d,_0x1dc593){return respondWithRpcPromise(_0x0a63('0x57'),_0x37255d['query'],routingClient)[_0x0a63('0x6')](respondWithResult(_0x1dc593,null))[_0x0a63('0x14')](handleError(_0x1dc593,null));};exports[_0x0a63('0x58')]=function(_0x229954,_0x3d62ca){return respondWithRpcPromise(_0x0a63('0x59'),_0x229954['query'],routingClient)['then'](respondWithResult(_0x3d62ca,null))[_0x0a63('0x14')](handleError(_0x3d62ca,null));};exports[_0x0a63('0x5a')]=function(_0x425c8c,_0x3caea6){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x425c8c[_0x0a63('0x17')],routingClient)['then'](respondWithResult(_0x3caea6,null))[_0x0a63('0x14')](handleError(_0x3caea6,null));};exports[_0x0a63('0x5b')]=function(_0x1e256e){return function(_0xee586,_0x486ffc){var _0x3710fa,_0x2173ee;var _0x430065=_[_0x0a63('0x5c')](_0x1e256e);var _0x540953=_0x1e256e==='chat'?_0x0a63('0x5d'):'Account';return db[_0x430065+_0x0a63('0x5e')][_0x0a63('0x5f')]({'raw':!![],'where':{'id':_0xee586[_0x0a63('0x18')]['id']}})[_0x0a63('0x6')](function(_0x65a390){if(_['isNil'](_0x65a390)){throw new Error(_0x430065+_0x0a63('0x60'));}_0x3710fa=_0x65a390;return db[_0x430065+_0x0a63('0x61')][_0x0a63('0x5f')]({'where':{'id':_0xee586[_0x0a63('0x1e')][_0x0a63('0x62')]},'include':[{'model':db[_0x430065+_0x0a63('0x63')],'as':_0x0a63('0x63')},{'model':db[_0x430065+_0x540953],'as':'Account'}]});})[_0x0a63('0x6')](function(_0x1a329c){if(_[_0x0a63('0xf')](_0x1a329c)){throw new Error(_0x430065+_0x0a63('0x64'));}_0x2173ee=_0x1a329c;return _0x1a329c['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x0a63('0x6')](function(){var _0x148bbd={'uniqueid':_0x1e256e+'.'+_0x2173ee['id']+'.'+_0x2173ee[_0x0a63('0x63')]['id'],'FromUserId':_0xee586['user']['id'],'type':_0x0a63('0x65')};_0x148bbd[_0x430065+_0x0a63('0x66')]=_0x2173ee['id'];_0x148bbd[_0x430065+_0x0a63('0x67')]=_0x2173ee['Interaction']['id'];_0x148bbd[_0x0a63('0x68')+_0x430065+_0x540953+'Id']=_0x2173ee[_0x0a63('0x69')]['id'];_0x148bbd['To'+_0x430065+_0x0a63('0x6a')]=_0x3710fa['id'];return db[_0x430065+_0x0a63('0x6b')][_0x0a63('0x6c')](_0x148bbd);})[_0x0a63('0x6')](function(){return respondWithRpcPromise(_0x0a63('0x6d'),{'channel':_0x1e256e,'interaction':_0x2173ee[_0x0a63('0x63')],'message':_0x2173ee,'account':_0x2173ee[_0x0a63('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a63('0x65'),'appdata':_0x3710fa[_0x0a63('0xd')]+','+(_0x2173ee[_0x0a63('0x69')][_0x0a63('0x6e')]||0x12c),'interval':_0x0a63('0x6f')}]},routingClient);})[_0x0a63('0x6')](respondWithResult(_0x486ffc,null))[_0x0a63('0x14')](handleError(_0x486ffc,null));};};exports['agentNotify']=function(_0x3ddf5e,_0x5f0510){var _0x19a46f,_0x36fd48;if(_['isNil'](_0x3ddf5e[_0x0a63('0x1e')][_0x0a63('0x70')])){throw new Error(_0x0a63('0x71'));}var _0x2e1dc6=_0x3ddf5e[_0x0a63('0x1e')][_0x0a63('0x70')];var _0x1030f7=_[_0x0a63('0x5c')](_0x2e1dc6);var _0x393399=_0x2e1dc6==='chat'?_0x0a63('0x5d'):'Account';return db['User'][_0x0a63('0x5f')]({'raw':!![],'where':{'id':_0x3ddf5e[_0x0a63('0x18')]['id'],'role':_0x0a63('0x35')}})[_0x0a63('0x6')](function(_0x5e1f76){if(_[_0x0a63('0xf')](_0x5e1f76)){throw new Error('Agent\x20not\x20found');}_0x19a46f=_0x5e1f76;return db[_0x1030f7+'Message'][_0x0a63('0x5f')]({'where':{'id':_0x3ddf5e['body']['messageId']},'include':[{'model':db[_0x1030f7+_0x0a63('0x63')],'as':_0x0a63('0x63')},{'model':db[_0x1030f7+_0x393399],'as':_0x0a63('0x69')}]});})[_0x0a63('0x6')](function(_0x52488a){if(_[_0x0a63('0xf')](_0x52488a)){throw new Error(_0x1030f7+'\x20Message\x20not\x20found');}_0x36fd48=_0x52488a;return _0x52488a[_0x0a63('0x72')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x11dd21={'uniqueid':_0x2e1dc6+'.'+_0x36fd48['id']+'.'+_0x36fd48['Interaction']['id'],'FromUserId':_0x3ddf5e[_0x0a63('0x2a')]['id'],'type':_0x0a63('0x65'),'ToUserId':_0x19a46f['id']};_0x11dd21[_0x1030f7+_0x0a63('0x66')]=_0x36fd48['id'];_0x11dd21[_0x1030f7+_0x0a63('0x67')]=_0x36fd48[_0x0a63('0x63')]['id'];_0x11dd21[_0x0a63('0x68')+_0x1030f7+_0x393399+'Id']=_0x36fd48[_0x0a63('0x69')]['id'];return db[_0x1030f7+_0x0a63('0x6b')][_0x0a63('0x6c')](_0x11dd21);})['then'](function(){return respondWithRpcPromise(_0x0a63('0x6d'),{'channel':_0x2e1dc6,'interaction':_0x36fd48['Interaction'],'message':_0x36fd48,'account':_0x36fd48[_0x0a63('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a63('0x35'),'appdata':_0x19a46f[_0x0a63('0xd')]+','+(_0x36fd48[_0x0a63('0x69')][_0x0a63('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x0a63('0x6')](respondWithResult(_0x5f0510,null))[_0x0a63('0x14')](handleError(_0x5f0510,null));};
\ No newline at end of file
+var _0xb458=['InteractionId','TransferReport','agentTransferTimeout','bluebird','moment','lodash','../../config/logger','api','jayson/promise','client','http','request','then','error','code','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','VoiceChannelStopMixMonitor','params','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','MemberReport','interface','SIP/%s','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showFaxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','Message','Interaction','update','queue','MessageId','From','QueueId','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','findOne','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found'];(function(_0xc9b1b7,_0x3112d8){var _0x464659=function(_0x7534cf){while(--_0x7534cf){_0xc9b1b7['push'](_0xc9b1b7['shift']());}};_0x464659(++_0x3112d8);}(_0xb458,0x103));var _0x8b45=function(_0x5c02be,_0x1a222c){_0x5c02be=_0x5c02be-0x0;var _0x3f487f=_0xb458[_0x5c02be];return _0x3f487f;};'use strict';var BPromise=require(_0x8b45('0x0'));var moment=require(_0x8b45('0x1'));var _=require(_0x8b45('0x2'));var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x8b45('0x3'))(_0x8b45('0x4'));var jayson=require(_0x8b45('0x5'));var amiClient=jayson[_0x8b45('0x6')]['http']({'port':0x232a});var mailClient=jayson[_0x8b45('0x6')]['http']({'port':0x232b});var routingClient=jayson['client'][_0x8b45('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){var _0xa54725=_0x3a8ccb?_0x3a8ccb:amiClient;return _0xa54725[_0x8b45('0x8')](_0x12bd05,_0x2daa9a)[_0x8b45('0x9')](function(_0x2bc809){if(_0x2bc809[_0x8b45('0xa')]){if(_0x2bc809['error'][_0x8b45('0xb')]===0x1f4){return _0x4d1718(_0x2bc809[_0x8b45('0xa')]['message']);}return _0x32342f(_0x2bc809['error']['message']);}else{_0x32342f(_0x2bc809['result']);}})[_0x8b45('0xc')](function(_0x285728){_0x4d1718(_0x285728);});});}function respondWithResult(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xc8;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0xd')](_0x52c4db)[_0x8b45('0xe')](_0x30d38c);}return _0x37c220[_0x8b45('0xf')](0x194);};}function handleError(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0x1f4;return function(_0x5f0b20){logger['error'](_0x5f0b20[_0x8b45('0x10')]);if(_0x5f0b20[_0x8b45('0x11')]){delete _0x5f0b20[_0x8b45('0x11')];}_0x32babc[_0x8b45('0xd')](_0x2ad2ae)[_0x8b45('0x12')](_0x5f0b20);};}function findById(_0x27ebb3){return function(_0x902c50){if(!_[_0x8b45('0x13')](_0x27ebb3)&&!_[_0x8b45('0x13')](_0x902c50)&&!_[_0x8b45('0x13')](_0x902c50[_0x8b45('0x14')])){return _[_0x8b45('0x15')](_0x902c50[_0x8b45('0x14')],function(_0x43ffb7){return _0x43ffb7['id']==_0x27ebb3;});}return null;};}exports[_0x8b45('0x16')]=function(_0x31c6b4,_0x23c520){return respondWithRpcPromise(_0x8b45('0x17'),_0x31c6b4['query'])[_0x8b45('0x9')](respondWithResult(_0x23c520,null))[_0x8b45('0xc')](handleError(_0x23c520,null));};exports[_0x8b45('0x18')]=function(_0x46e21a,_0x3e1438){return respondWithRpcPromise(_0x8b45('0x19'),_[_0x8b45('0x1a')](_0x46e21a[_0x8b45('0x1b')],_0x46e21a['params']))['then'](respondWithResult(_0x3e1438,null))[_0x8b45('0xc')](handleError(_0x3e1438,null));};exports['voiceChannelStopMixMonitor']=function(_0x1952fc,_0x3ddb50){return respondWithRpcPromise(_0x8b45('0x1c'),_[_0x8b45('0x1a')](_0x1952fc[_0x8b45('0x1b')],_0x1952fc[_0x8b45('0x1d')]))[_0x8b45('0x9')](respondWithResult(_0x3ddb50,null))['catch'](handleError(_0x3ddb50,null));};exports['voiceQueues']=function(_0x11ffcc,_0x2c2c06){return respondWithRpcPromise('VoiceQueues',_0x11ffcc['query'])[_0x8b45('0x9')](respondWithResult(_0x2c2c06,null))[_0x8b45('0xc')](handleError(_0x2c2c06,null));};exports[_0x8b45('0x1e')]=function(_0x2f37bc,_0x4e84cc){return respondWithRpcPromise(_0x8b45('0x1f'),_0x2f37bc[_0x8b45('0x1b')])[_0x8b45('0x9')](findById(_0x2f37bc[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x4e84cc,null))[_0x8b45('0xc')](handleError(_0x4e84cc,null));};exports[_0x8b45('0x20')]=function(_0x234f62,_0x1733a7){return respondWithRpcPromise(_0x8b45('0x21'),_[_0x8b45('0x1a')](_0x234f62[_0x8b45('0x22')],_0x234f62[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1733a7,null))[_0x8b45('0xc')](handleError(_0x1733a7,null));};exports[_0x8b45('0x23')]=function(_0x34eb03,_0x15107a){return respondWithRpcPromise(_0x8b45('0x24'),_[_0x8b45('0x1a')](_0x34eb03[_0x8b45('0x1b')],_0x34eb03[_0x8b45('0x1d')]))['then'](respondWithResult(_0x15107a,null))[_0x8b45('0xc')](handleError(_0x15107a,null));};exports[_0x8b45('0x25')]=function(_0x50302,_0xc2ae94){return respondWithRpcPromise(_0x8b45('0x26'),_0x50302['query'])[_0x8b45('0x9')](respondWithResult(_0xc2ae94,null))['catch'](handleError(_0xc2ae94,null));};exports['voiceQueuesChannel']=function(_0x1f8a11,_0x94e3b6){return respondWithRpcPromise(_0x8b45('0x27'),_[_0x8b45('0x1a')](_0x1f8a11[_0x8b45('0x1b')],_0x1f8a11[_0x8b45('0x1d')]))['then'](respondWithResult(_0x94e3b6,null))[_0x8b45('0xc')](handleError(_0x94e3b6,null));};exports[_0x8b45('0x28')]=function(_0x264be7,_0x1f66a3){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x8b45('0x1a')](_0x264be7[_0x8b45('0x1b')],_0x264be7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1f66a3,null))[_0x8b45('0xc')](handleError(_0x1f66a3,null));};exports[_0x8b45('0x29')]=function(_0x1571b7,_0x58f32e){return respondWithRpcPromise(_0x8b45('0x2a'),_[_0x8b45('0x1a')](_0x1571b7[_0x8b45('0x1b')],_0x1571b7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x58f32e,null))[_0x8b45('0xc')](handleError(_0x58f32e,null));};exports[_0x8b45('0x2b')]=function(_0x2de02d,_0x15df7c){return respondWithRpcPromise(_0x8b45('0x2c'),_0x2de02d[_0x8b45('0x1b')])['then'](respondWithResult(_0x15df7c,null))['catch'](handleError(_0x15df7c,null));};exports[_0x8b45('0x2d')]=function(_0x179f3b,_0x41d6b5){return respondWithRpcPromise(_0x8b45('0x2e'),_0x179f3b[_0x8b45('0x1b')])['then'](respondWithResult(_0x41d6b5,null))[_0x8b45('0xc')](handleError(_0x41d6b5,null));};exports['agents']=function(_0x67c59a,_0x17e9a8){var _0x5fae26;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')])[_0x8b45('0x9')](function(_0x14d665){_0x5fae26=_0x14d665;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')],routingClient);})[_0x8b45('0x9')](function(_0x3a97d5){return _['merge']({},_0x3a97d5,_0x5fae26);})[_0x8b45('0x9')](respondWithResult(_0x17e9a8,null))['catch'](handleError(_0x17e9a8,null));};exports[_0x8b45('0x30')]=function(_0x4eda71,_0x412c53){if(_0x4eda71[_0x8b45('0x22')]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')]&&_0x4eda71[_0x8b45('0x32')]&&_0x4eda71[_0x8b45('0x32')]['name']){for(var _0x6fbca4 in _0x4eda71['body']['interaction']){if(_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x8b45('0x33')](_0x6fbca4)){db['MemberReport'][_0x8b45('0x34')]({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user'][_0x8b45('0x11')],'type':_0x8b45('0x35'),'exitAt':null,'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]['length']?{'$notIn':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]}:{'$ne':null}}})[_0x8b45('0x9')](function(_0xee45ac){var _0x1a13dd=moment()[_0x8b45('0x36')](_0x8b45('0x37'));for(var _0x3de3c2=0x0,_0x37b94a=_0xee45ac[_0x8b45('0x38')];_0x3de3c2<_0x37b94a;_0x3de3c2+=0x1){_0xee45ac[_0x3de3c2][_0x8b45('0x39')]({'exitAt':_0x1a13dd});}});for(var _0x3385db=0x0;_0x3385db<_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x8b45('0x38')];_0x3385db+=0x1){db[_0x8b45('0x3a')]['findOrCreate']({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user']['name'],'type':_0x8b45('0x35'),'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x3385db],'exitAt':null},'defaults':{'channel':_0x6fbca4,'membername':_0x4eda71[_0x8b45('0x32')][_0x8b45('0x11')],'interface':_[_0x8b45('0x13')](_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')])?util['format'](_0x8b45('0x3c'),_0x4eda71['user'][_0x8b45('0x11')]):_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')],'type':_0x8b45('0x35'),'enterAt':moment()['format'](_0x8b45('0x37')),'role':_0x8b45('0x3d'),'internal':_0x4eda71['user'][_0x8b45('0x3e')],'uniqueid':_0x4eda71[_0x8b45('0x22')]['interaction'][_0x6fbca4][_0x3385db]}});}}}}return respondWithRpcPromise(_0x8b45('0x3f'),{'id':_0x4eda71[_0x8b45('0x1d')]['id'],'capacity':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x40')]},routingClient)[_0x8b45('0x9')](respondWithResult(_0x412c53,null))[_0x8b45('0xc')](handleError(_0x412c53,null));};exports['telephones']=function(_0x4b8826,_0x3f7a16){return respondWithRpcPromise(_0x8b45('0x41'),_0x4b8826[_0x8b45('0x1b')])['then'](respondWithResult(_0x3f7a16,null))[_0x8b45('0xc')](handleError(_0x3f7a16,null));};exports[_0x8b45('0x42')]=function(_0x20a68b,_0x3e8a7d){return respondWithRpcPromise(_0x8b45('0x43'),_0x20a68b['query'])[_0x8b45('0x9')](respondWithResult(_0x3e8a7d,null))[_0x8b45('0xc')](handleError(_0x3e8a7d,null));};exports['campaigns']=function(_0x422da0,_0x4c3f38){return respondWithRpcPromise(_0x8b45('0x44'),_0x422da0[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x4c3f38,null))[_0x8b45('0xc')](handleError(_0x4c3f38,null));};exports['chatQueues']=function(_0xb9f390,_0x423231){return respondWithRpcPromise(_0x8b45('0x45'),_0xb9f390[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x423231,null))[_0x8b45('0xc')](handleError(_0x423231,null));};exports[_0x8b45('0x46')]=function(_0x2a35c1,_0x446fe5){return respondWithRpcPromise(_0x8b45('0x45'),_0x2a35c1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x2a35c1[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x446fe5,null))[_0x8b45('0xc')](handleError(_0x446fe5,null));};exports['mailQueues']=function(_0x1744f8,_0x1477bd){return respondWithRpcPromise(_0x8b45('0x47'),_0x1744f8['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1477bd,null))[_0x8b45('0xc')](handleError(_0x1477bd,null));};exports[_0x8b45('0x48')]=function(_0x9eacc1,_0x5795ca){return respondWithRpcPromise(_0x8b45('0x47'),_0x9eacc1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x9eacc1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x5795ca,null))[_0x8b45('0xc')](handleError(_0x5795ca,null));};exports[_0x8b45('0x49')]=function(_0x417778,_0x27503f){return respondWithRpcPromise(_0x8b45('0x4a'),_0x417778['query'],mailClient)[_0x8b45('0x9')](respondWithResult(_0x27503f,null))['catch'](handleError(_0x27503f,null));};exports[_0x8b45('0x4b')]=function(_0x2f7ab0,_0x19152b){return respondWithRpcPromise(_0x8b45('0x4c'),_0x2f7ab0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x19152b,null))['catch'](handleError(_0x19152b,null));};exports['showOpenchannelQueues']=function(_0x5ace1,_0x2224b7){return respondWithRpcPromise('OpenchannelQueues',_0x5ace1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x5ace1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x2224b7,null))['catch'](handleError(_0x2224b7,null));};exports[_0x8b45('0x4d')]=function(_0x8e5a41,_0x5abc79){return respondWithRpcPromise(_0x8b45('0x4e'),_0x8e5a41['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x5abc79,null))['catch'](handleError(_0x5abc79,null));};exports['showSmsQueues']=function(_0x28e57a,_0x7f5a4e){return respondWithRpcPromise('SmsQueues',_0x28e57a[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x28e57a[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x7f5a4e,null))[_0x8b45('0xc')](handleError(_0x7f5a4e,null));};exports['whatsappQueues']=function(_0x37f580,_0x3b3d21){return respondWithRpcPromise(_0x8b45('0x4f'),_0x37f580['query'],routingClient)['then'](respondWithResult(_0x3b3d21,null))[_0x8b45('0xc')](handleError(_0x3b3d21,null));};exports['showWhatsappQueues']=function(_0x43f031,_0x5a4834){return respondWithRpcPromise('WhatsappQueues',_0x43f031['query'],routingClient)[_0x8b45('0x9')](findById(_0x43f031['params']['id']))[_0x8b45('0x9')](respondWithResult(_0x5a4834,null))[_0x8b45('0xc')](handleError(_0x5a4834,null));};exports['faxQueues']=function(_0x3db84e,_0x1b3890){return respondWithRpcPromise('FaxQueues',_0x3db84e[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1b3890,null))[_0x8b45('0xc')](handleError(_0x1b3890,null));};exports[_0x8b45('0x50')]=function(_0x15cf9d,_0x877766){return respondWithRpcPromise(_0x8b45('0x51'),_0x15cf9d[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x15cf9d[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x877766,null))[_0x8b45('0xc')](handleError(_0x877766,null));};exports['faxAccounts']=function(_0x225180,_0x403ee2){return respondWithRpcPromise(_0x8b45('0x52'),_0x225180[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x403ee2,null))[_0x8b45('0xc')](handleError(_0x403ee2,null));};exports[_0x8b45('0x53')]=function(_0x3d3216,_0x243632){return respondWithRpcPromise(_0x8b45('0x54'),_0x3d3216[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x243632,null))[_0x8b45('0xc')](handleError(_0x243632,null));};exports[_0x8b45('0x55')]=function(_0x562c5f,_0x53143d){return respondWithRpcPromise(_0x8b45('0x56'),_0x562c5f[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x53143d,null))[_0x8b45('0xc')](handleError(_0x53143d,null));};exports[_0x8b45('0x57')]=function(_0xd88538,_0x1ebbca){return respondWithRpcPromise(_0x8b45('0x58'),_0xd88538['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1ebbca,null))[_0x8b45('0xc')](handleError(_0x1ebbca,null));};exports[_0x8b45('0x59')]=function(_0xa22bd0,_0xa44ba5){return respondWithRpcPromise(_0x8b45('0x58'),_0xa22bd0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](function(_0x2a6fee){if(_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')]!==undefined){var _0x5e54c6=_(_0x2a6fee['rows'])[_0x8b45('0x5b')]([_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')],_0xa22bd0[_0x8b45('0x1d')]['id']])[_0x8b45('0x5c')](_0x8b45('0x5d'))[_0x8b45('0x5e')]()[_0x8b45('0x5f')]();return _0x2a6fee[_0x8b45('0x14')]['filter'](function(_0x55acf0){return _0x5e54c6[_0x8b45('0x60')](_0x55acf0[_0x8b45('0x5d')])>-0x1;});}else{return _0x2a6fee[_0x8b45('0x14')][_0x8b45('0x5b')](function(_0x55bafb){return _0x55bafb[_0x8b45('0x5d')]===parseInt(_0xa22bd0[_0x8b45('0x1d')]['id']);});}})[_0x8b45('0x9')](respondWithResult(_0xa44ba5,null))[_0x8b45('0xc')](handleError(_0xa44ba5,null));};exports[_0x8b45('0x61')]=function(_0x17588b,_0x4ed113){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x17588b[_0x8b45('0x1b')],routingClient)['then'](respondWithResult(_0x4ed113,null))['catch'](handleError(_0x4ed113,null));};exports['whatsappQueuesWaitingInteractions']=function(_0xf602c7,_0x170b95){return respondWithRpcPromise(_0x8b45('0x62'),_0xf602c7[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x170b95,null))[_0x8b45('0xc')](handleError(_0x170b95,null));};exports[_0x8b45('0x63')]=function(_0xc9be77,_0xc89fc6){return respondWithRpcPromise(_0x8b45('0x64'),_0xc9be77[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0xc89fc6,null))[_0x8b45('0xc')](handleError(_0xc89fc6,null));};exports[_0x8b45('0x65')]=function(_0x42b192){return function(_0x4a42e1,_0x29bfcc){var _0x91270d,_0x217798;var _0x19a135=_[_0x8b45('0x66')](_0x42b192);var _0x1446b1=_0x42b192===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x19a135+_0x8b45('0x6a')]['findOne']({'raw':!![],'where':{'id':_0x4a42e1[_0x8b45('0x1d')]['id']}})[_0x8b45('0x9')](function(_0x408fff){if(_[_0x8b45('0x13')](_0x408fff)){throw new Error(_0x19a135+'\x20Queue\x20not\x20found');}_0x91270d=_0x408fff;return db[_0x19a135+_0x8b45('0x6b')]['findOne']({'where':{'id':_0x4a42e1[_0x8b45('0x22')]['messageId']},'include':[{'model':db[_0x19a135+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x19a135+_0x1446b1],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x16bb83){if(_[_0x8b45('0x13')](_0x16bb83)){throw new Error(_0x19a135+'\x20Message\x20not\x20found');}_0x217798=_0x16bb83;return _0x16bb83[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x17364d={'uniqueid':_0x42b192+'.'+_0x217798['id']+'.'+_0x217798[_0x8b45('0x6c')]['id'],'FromUserId':_0x4a42e1['user']['id'],'type':_0x8b45('0x6e')};_0x17364d[_0x19a135+_0x8b45('0x6f')]=_0x217798['id'];_0x17364d[_0x19a135+'InteractionId']=_0x217798['Interaction']['id'];_0x17364d[_0x8b45('0x70')+_0x19a135+_0x1446b1+'Id']=_0x217798[_0x8b45('0x69')]['id'];_0x17364d['To'+_0x19a135+_0x8b45('0x71')]=_0x91270d['id'];return db[_0x19a135+'TransferReport'][_0x8b45('0x72')](_0x17364d);})['then'](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x42b192,'interaction':_0x217798[_0x8b45('0x6c')],'message':_0x217798,'account':_0x217798['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x91270d[_0x8b45('0x11')]+','+(_0x217798[_0x8b45('0x69')][_0x8b45('0x74')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})['then'](respondWithResult(_0x29bfcc,null))[_0x8b45('0xc')](handleError(_0x29bfcc,null));};};exports[_0x8b45('0x76')]=function(_0x376416,_0x1d475c){var _0x2680d5,_0x1abe69;if(_['isNil'](_0x376416[_0x8b45('0x22')][_0x8b45('0x77')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x10a91a=_0x376416[_0x8b45('0x22')]['channel'];var _0x4837af=_['capitalize'](_0x10a91a);var _0x186aa2=_0x10a91a===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x8b45('0x78')][_0x8b45('0x79')]({'raw':!![],'where':{'id':_0x376416[_0x8b45('0x1d')]['id'],'role':'agent'}})[_0x8b45('0x9')](function(_0x3d321f){if(_[_0x8b45('0x13')](_0x3d321f)){throw new Error(_0x8b45('0x7a'));}_0x2680d5=_0x3d321f;return db[_0x4837af+_0x8b45('0x6b')][_0x8b45('0x79')]({'where':{'id':_0x376416['body'][_0x8b45('0x7b')]},'include':[{'model':db[_0x4837af+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x4837af+_0x186aa2],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x4c3bc9){if(_['isNil'](_0x4c3bc9)){throw new Error(_0x4837af+_0x8b45('0x7c'));}_0x1abe69=_0x4c3bc9;return _0x4c3bc9[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x9993ce={'uniqueid':_0x10a91a+'.'+_0x1abe69['id']+'.'+_0x1abe69[_0x8b45('0x6c')]['id'],'FromUserId':_0x376416['user']['id'],'type':_0x8b45('0x6e'),'ToUserId':_0x2680d5['id']};_0x9993ce[_0x4837af+'MessageId']=_0x1abe69['id'];_0x9993ce[_0x4837af+_0x8b45('0x7d')]=_0x1abe69['Interaction']['id'];_0x9993ce[_0x8b45('0x70')+_0x4837af+_0x186aa2+'Id']=_0x1abe69[_0x8b45('0x69')]['id'];return db[_0x4837af+_0x8b45('0x7e')][_0x8b45('0x72')](_0x9993ce);})[_0x8b45('0x9')](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x10a91a,'interaction':_0x1abe69[_0x8b45('0x6c')],'message':_0x1abe69,'account':_0x1abe69[_0x8b45('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x8b45('0x3d'),'appdata':_0x2680d5[_0x8b45('0x11')]+','+(_0x1abe69[_0x8b45('0x69')][_0x8b45('0x7f')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})[_0x8b45('0x9')](respondWithResult(_0x1d475c,null))['catch'](handleError(_0x1d475c,null));};
\ No newline at end of file
index b7f07fc..28d3e0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07dd=['../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','index','/:id','show','get','/:id/run','isAuthenticated','run','post','delete','multer','path','connect-timeout','express','fs-extra'];(function(_0x3b03ad,_0x3be75a){var _0x1f238a=function(_0xe0e612){while(--_0xe0e612){_0x3b03ad['push'](_0x3b03ad['shift']());}};_0x1f238a(++_0x3be75a);}(_0x07dd,0xc1));var _0xd07d=function(_0x3eb969,_0x11c187){_0x3eb969=_0x3eb969-0x0;var _0x5e62e0=_0x07dd[_0x3eb969];return _0x5e62e0;};'use strict';var multer=require(_0xd07d('0x0'));var util=require('util');var path=require(_0xd07d('0x1'));var timeout=require(_0xd07d('0x2'));var express=require(_0xd07d('0x3'));var router=express['Router']();var fs_extra=require(_0xd07d('0x4'));var auth=require(_0xd07d('0x5'));var interaction=require(_0xd07d('0x6'));var config=require(_0xd07d('0x7'));var controller=require(_0xd07d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd07d('0x9')]);router['get'](_0xd07d('0xa'),auth['isAuthenticated'](),controller[_0xd07d('0xb')]);router[_0xd07d('0xc')](_0xd07d('0xd'),auth[_0xd07d('0xe')](),controller[_0xd07d('0xf')]);router[_0xd07d('0x10')]('/',auth[_0xd07d('0xe')](),controller['create']);router['put'](_0xd07d('0xa'),auth[_0xd07d('0xe')](),controller['update']);router[_0xd07d('0x11')](_0xd07d('0xa'),auth[_0xd07d('0xe')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x631b=['show','/:id/run','run','create','put','delete','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','isAuthenticated','index','get','/:id'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0x631b,0xfe));var _0xb631=function(_0xeb80e,_0x337608){_0xeb80e=_0xeb80e-0x0;var _0x68e9d7=_0x631b[_0xeb80e];return _0x68e9d7;};'use strict';var multer=require(_0xb631('0x0'));var util=require(_0xb631('0x1'));var path=require(_0xb631('0x2'));var timeout=require('connect-timeout');var express=require(_0xb631('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb631('0x4'));var interaction=require(_0xb631('0x5'));var config=require(_0xb631('0x6'));var controller=require(_0xb631('0x7'));router['get']('/',auth[_0xb631('0x8')](),controller[_0xb631('0x9')]);router[_0xb631('0xa')](_0xb631('0xb'),auth['isAuthenticated'](),controller[_0xb631('0xc')]);router[_0xb631('0xa')](_0xb631('0xd'),auth[_0xb631('0x8')](),controller[_0xb631('0xe')]);router['post']('/',auth[_0xb631('0x8')](),controller[_0xb631('0xf')]);router[_0xb631('0x10')](_0xb631('0xb'),auth[_0xb631('0x8')](),controller['update']);router[_0xb631('0x11')](_0xb631('0xb'),auth[_0xb631('0x8')](),controller['destroy']);module[_0xb631('0x12')]=router;
\ No newline at end of file
index bcf9d64..60c508f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76e5=['quarters','months','weeks','days','hours','minutes','pdf','csv','ENUM','custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years'];(function(_0x2e3292,_0x42b13c){var _0x526777=function(_0x4ab43e){while(--_0x4ab43e){_0x2e3292['push'](_0x2e3292['shift']());}};_0x526777(++_0x42b13c);}(_0x76e5,0x161));var _0x576e=function(_0x30aaec,_0x30fb8b){_0x30aaec=_0x30aaec-0x0;var _0x3362cb=_0x76e5[_0x30aaec];return _0x3362cb;};'use strict';var Sequelize=require(_0x576e('0x0'));module[_0x576e('0x1')]={'name':{'type':Sequelize[_0x576e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x576e('0x2')]},'active':{'type':Sequelize[_0x576e('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x576e('0x2')],'allowNull':![],'defaultValue':_0x576e('0x4')},'startAt':{'type':Sequelize[_0x576e('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x576e('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x576e('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x576e('0x7'),_0x576e('0x8'),_0x576e('0x9'),_0x576e('0xa'),_0x576e('0xb'),_0x576e('0xc'),_0x576e('0xd')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM']('csv',_0x576e('0xe'),'xlsx'),'allowNull':![],'defaultValue':_0x576e('0xf')},'type':{'type':Sequelize[_0x576e('0x10')](_0x576e('0x11'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0x576e('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x576e('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x576e('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x576e('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9f66=['BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','minutes','csv','pdf','xlsx','custom','default','STRING','TEXT','exports'];(function(_0x1bc750,_0x23f442){var _0xcd51da=function(_0x323854){while(--_0x323854){_0x1bc750['push'](_0x1bc750['shift']());}};_0xcd51da(++_0x23f442);}(_0x9f66,0x1b4));var _0x69f6=function(_0x47a90a,_0x5c3276){_0x47a90a=_0x47a90a-0x0;var _0x1557b0=_0x9f66[_0x47a90a];return _0x1557b0;};'use strict';var Sequelize=require('sequelize');module[_0x69f6('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x69f6('0x1')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x69f6('0x2')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0x69f6('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x69f6('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x69f6('0x5')](_0x69f6('0x6'),_0x69f6('0x7'),_0x69f6('0x8'),_0x69f6('0x9'),_0x69f6('0xa'),'hours',_0x69f6('0xb')),'allowNull':![],'defaultValue':_0x69f6('0xa')},'output':{'type':Sequelize[_0x69f6('0x5')](_0x69f6('0xc'),_0x69f6('0xd'),_0x69f6('0xe')),'allowNull':![],'defaultValue':_0x69f6('0xc')},'type':{'type':Sequelize[_0x69f6('0x5')](_0x69f6('0xf'),_0x69f6('0x10')),'allowNull':![],'defaultValue':_0x69f6('0xf')},'sendMail':{'type':Sequelize[_0x69f6('0x1')],'defaultValue':![]},'email':{'type':Sequelize[_0x69f6('0x11')]},'cc':{'type':Sequelize[_0x69f6('0x12')]},'bcc':{'type':Sequelize[_0x69f6('0x12')]},'sendIfEmpty':{'type':Sequelize[_0x69f6('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 01e5f85..b7cd03e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb0=['intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','../../config/schedule','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Scheduler','end','sendStatus','stack','name','send','Schedule','rawAttributes','fieldName','type','key','map','query','keys','filters'];(function(_0x577077,_0x52f056){var _0x370769=function(_0x34d109){while(--_0x34d109){_0x577077['push'](_0x577077['shift']());}};_0x370769(++_0x52f056);}(_0xebb0,0x7f));var _0x0ebb=function(_0x5e9913,_0x4552cc){_0x5e9913=_0x5e9913-0x0;var _0x4ac3f2=_0xebb0[_0x5e9913];return _0x4ac3f2;};'use strict';var emlformat=require(_0x0ebb('0x0'));var rimraf=require(_0x0ebb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ebb('0x2'));var rp=require(_0x0ebb('0x3'));var moment=require(_0x0ebb('0x4'));var BPromise=require(_0x0ebb('0x5'));var Mustache=require(_0x0ebb('0x6'));var util=require(_0x0ebb('0x7'));var path=require(_0x0ebb('0x8'));var sox=require(_0x0ebb('0x9'));var csv=require(_0x0ebb('0xa'));var ejs=require(_0x0ebb('0xb'));var fs=require('fs');var fs_extra=require(_0x0ebb('0xc'));var _=require(_0x0ebb('0xd'));var squel=require(_0x0ebb('0xe'));var crypto=require(_0x0ebb('0xf'));var jsforce=require(_0x0ebb('0x10'));var deskjs=require(_0x0ebb('0x11'));var toCsv=require(_0x0ebb('0xa'));var querystring=require('querystring');var Papa=require(_0x0ebb('0x12'));var Redis=require(_0x0ebb('0x13'));var authService=require(_0x0ebb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x0ebb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0ebb('0x16'))(_0x0ebb('0x17'));var utils=require(_0x0ebb('0x18'));var config=require(_0x0ebb('0x19'));var licenseUtil=require(_0x0ebb('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29ac2a,_0x5c98c2){_0x5c98c2=_0x5c98c2||0xcc;return function(_0x539324){if(_0x539324){return _0x29ac2a['sendStatus'](_0x5c98c2);}return _0x29ac2a[_0x0ebb('0x1b')](_0x5c98c2)['end']();};}function respondWithResult(_0x599bf1,_0x13c487){_0x13c487=_0x13c487||0xc8;return function(_0x3b3b8d){if(_0x3b3b8d){return _0x599bf1['status'](_0x13c487)[_0x0ebb('0x1c')](_0x3b3b8d);}};}function respondWithFilteredResult(_0xc12e35,_0x10dc74){return function(_0x53d8ed){if(_0x53d8ed){var _0x4edda6=typeof _0x10dc74[_0x0ebb('0x1d')]===_0x0ebb('0x1e')&&typeof _0x10dc74[_0x0ebb('0x1f')]===_0x0ebb('0x1e');var _0x150655=_0x53d8ed[_0x0ebb('0x20')];var _0x464dad=_0x4edda6?0x0:_0x10dc74[_0x0ebb('0x1d')];var _0x1cd6fd=_0x4edda6?_0x53d8ed[_0x0ebb('0x20')]:_0x10dc74[_0x0ebb('0x1d')]+_0x10dc74[_0x0ebb('0x1f')];var _0x356dbf;if(_0x1cd6fd>=_0x150655){_0x1cd6fd=_0x150655;_0x356dbf=0xc8;}else{_0x356dbf=0xce;}_0xc12e35[_0x0ebb('0x1b')](_0x356dbf);return _0xc12e35[_0x0ebb('0x21')](_0x0ebb('0x22'),_0x464dad+'-'+_0x1cd6fd+'/'+_0x150655)[_0x0ebb('0x1c')](_0x53d8ed);}return null;};}function patchUpdates(_0x413b61){return function(_0x3ac36e){try{jsonpatch[_0x0ebb('0x23')](_0x3ac36e,_0x413b61,!![]);}catch(_0x2a5d51){return BPromise[_0x0ebb('0x24')](_0x2a5d51);}return _0x3ac36e[_0x0ebb('0x25')]();};}function saveUpdates(_0x4f2aee,_0x4cc5ba){return function(_0x5cfb3f){if(_0x5cfb3f){return _0x5cfb3f['update'](_0x4f2aee)[_0x0ebb('0x26')](function(_0x519412){return _0x519412;});}return null;};}function removeEntity(_0x5c026c,_0x48976){return function(_0x5d7bd0){if(_0x5d7bd0){return _0x5d7bd0[_0x0ebb('0x27')]()[_0x0ebb('0x26')](function(){var _0x23b184=_0x5d7bd0['get']({'plain':!![]});var _0x328ad7=_0x0ebb('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x328ad7,'resourceId':_0x23b184['id']}})[_0x0ebb('0x26')](function(){return _0x5d7bd0;});})['then'](function(){_0x5c026c['status'](0xcc)[_0x0ebb('0x29')]();});}};}function handleEntityNotFound(_0x2424b3,_0x32db4e){return function(_0x4c2d17){if(!_0x4c2d17){_0x2424b3[_0x0ebb('0x2a')](0x194);}return _0x4c2d17;};}function handleError(_0x800e2,_0xb1764a){_0xb1764a=_0xb1764a||0x1f4;return function(_0x1bd415){logger['error'](_0x1bd415[_0x0ebb('0x2b')]);if(_0x1bd415['name']){delete _0x1bd415[_0x0ebb('0x2c')];}_0x800e2[_0x0ebb('0x1b')](_0xb1764a)[_0x0ebb('0x2d')](_0x1bd415);};}exports['index']=function(_0x2f93c5,_0x3564f7){var _0xeafe48={},_0x5719c5={},_0x1aaa0f={'count':0x0,'rows':[]};var _0x4f3126=_['map'](db[_0x0ebb('0x2e')][_0x0ebb('0x2f')],function(_0x54adf9){return{'name':_0x54adf9[_0x0ebb('0x30')],'type':_0x54adf9[_0x0ebb('0x31')][_0x0ebb('0x32')]};});_0x5719c5['model']=_[_0x0ebb('0x33')](_0x4f3126,_0x0ebb('0x2c'));_0x5719c5[_0x0ebb('0x34')]=_[_0x0ebb('0x35')](_0x2f93c5[_0x0ebb('0x34')]);_0x5719c5[_0x0ebb('0x36')]=_[_0x0ebb('0x37')](_0x5719c5['model'],_0x5719c5[_0x0ebb('0x34')]);_0xeafe48[_0x0ebb('0x38')]=_[_0x0ebb('0x37')](_0x5719c5[_0x0ebb('0x39')],qs[_0x0ebb('0x3a')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3a')]));_0xeafe48[_0x0ebb('0x38')]=_0xeafe48['attributes'][_0x0ebb('0x3b')]?_0xeafe48[_0x0ebb('0x38')]:_0x5719c5['model'];if(!_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3c')](_0x0ebb('0x3d'))){_0xeafe48[_0x0ebb('0x1f')]=qs[_0x0ebb('0x1f')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x1f')]);_0xeafe48[_0x0ebb('0x1d')]=qs[_0x0ebb('0x1d')](_0x2f93c5['query'][_0x0ebb('0x1d')]);}_0xeafe48[_0x0ebb('0x3e')]=qs[_0x0ebb('0x3f')](_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x3f')]);_0xeafe48[_0x0ebb('0x40')]=qs[_0x0ebb('0x36')](_[_0x0ebb('0x41')](_0x2f93c5[_0x0ebb('0x34')],_0x5719c5['filters']),_0x4f3126);if(_0x2f93c5[_0x0ebb('0x34')][_0x0ebb('0x42')]){_0xeafe48[_0x0ebb('0x40')]=_[_0x0ebb('0x43')](_0xeafe48[_0x0ebb('0x40')],{'$or':_['map'](_0x4f3126,function(_0x375a10){if(_0x375a10[_0x0ebb('0x31')]!==_0x0ebb('0x44')){var _0x3457f6={};_0x3457f6[_0x375a10['name']]={'$like':'%'+_0x2f93c5[_0x0ebb('0x34')]['filter']+'%'};return _0x3457f6;}})});}_0xeafe48=_['merge']({},_0xeafe48,_0x2f93c5[_0x0ebb('0x45')]);var _0x57946c={'where':_0xeafe48[_0x0ebb('0x40')]};return db[_0x0ebb('0x2e')][_0x0ebb('0x20')](_0x57946c)[_0x0ebb('0x26')](function(_0x7d04a7){_0x1aaa0f[_0x0ebb('0x20')]=_0x7d04a7;if(_0x2f93c5['query'][_0x0ebb('0x46')]){_0xeafe48[_0x0ebb('0x47')]=[{'all':!![]}];}return db[_0x0ebb('0x2e')][_0x0ebb('0x48')](_0xeafe48);})[_0x0ebb('0x26')](function(_0x446c17){_0x1aaa0f[_0x0ebb('0x49')]=_0x446c17;return _0x1aaa0f;})['then'](respondWithFilteredResult(_0x3564f7,_0xeafe48))[_0x0ebb('0x4a')](handleError(_0x3564f7,null));};exports[_0x0ebb('0x4b')]=function(_0x1b0003,_0x5ea4cd){var _0x31b9b8={'raw':![],'where':{'id':_0x1b0003['params']['id']}},_0x3034ee={};_0x3034ee[_0x0ebb('0x39')]=_['keys'](db['Schedule'][_0x0ebb('0x2f')]);_0x3034ee[_0x0ebb('0x34')]=_[_0x0ebb('0x35')](_0x1b0003[_0x0ebb('0x34')]);_0x3034ee[_0x0ebb('0x36')]=_[_0x0ebb('0x37')](_0x3034ee[_0x0ebb('0x39')],_0x3034ee[_0x0ebb('0x34')]);_0x31b9b8['attributes']=_[_0x0ebb('0x37')](_0x3034ee[_0x0ebb('0x39')],qs[_0x0ebb('0x3a')](_0x1b0003['query'][_0x0ebb('0x3a')]));_0x31b9b8[_0x0ebb('0x38')]=_0x31b9b8['attributes']['length']?_0x31b9b8['attributes']:_0x3034ee['model'];if(_0x1b0003[_0x0ebb('0x34')][_0x0ebb('0x46')]){_0x31b9b8['include']=[{'all':!![]}];}_0x31b9b8=_[_0x0ebb('0x43')]({},_0x31b9b8,_0x1b0003['options']);return db['Schedule'][_0x0ebb('0x4c')](_0x31b9b8)[_0x0ebb('0x26')](handleEntityNotFound(_0x5ea4cd,null))['then'](respondWithResult(_0x5ea4cd,null))['catch'](handleError(_0x5ea4cd,null));};exports[_0x0ebb('0x4d')]=function(_0x2f85d1,_0x505ad3){return db[_0x0ebb('0x2e')]['create'](_0x2f85d1[_0x0ebb('0x4e')],{})[_0x0ebb('0x26')](function(_0xb374c6){var _0x385019=_0x2f85d1['user'][_0x0ebb('0x4f')]({'plain':!![]});if(!_0x385019)throw new Error(_0x0ebb('0x50'));if(_0x385019[_0x0ebb('0x51')]==='user'){var _0x1d1977=_0xb374c6[_0x0ebb('0x4f')]({'plain':!![]});var _0xc19ecb=_0x0ebb('0x28');return db[_0x0ebb('0x52')][_0x0ebb('0x4c')]({'where':{'name':_0xc19ecb,'userProfileId':_0x385019[_0x0ebb('0x53')]},'raw':!![]})[_0x0ebb('0x26')](function(_0x5965c4){if(_0x5965c4&&_0x5965c4[_0x0ebb('0x54')]===0x0){return db[_0x0ebb('0x55')][_0x0ebb('0x4d')]({'name':_0x1d1977[_0x0ebb('0x2c')],'resourceId':_0x1d1977['id'],'type':_0x5965c4[_0x0ebb('0x2c')],'sectionId':_0x5965c4['id']},{})['then'](function(){return _0xb374c6;});}else{return _0xb374c6;}})['catch'](function(_0x17dea8){logger[_0x0ebb('0x56')](_0x0ebb('0x57'),_0x17dea8);throw _0x17dea8;});}return _0xb374c6;})[_0x0ebb('0x26')](respondWithResult(_0x505ad3,0xc9))[_0x0ebb('0x4a')](handleError(_0x505ad3,null));};exports['update']=function(_0x2ad41b,_0x5acdba){if(_0x2ad41b[_0x0ebb('0x4e')]['id']){delete _0x2ad41b[_0x0ebb('0x4e')]['id'];}return db[_0x0ebb('0x2e')][_0x0ebb('0x4c')]({'where':{'id':_0x2ad41b[_0x0ebb('0x58')]['id']}})[_0x0ebb('0x26')](handleEntityNotFound(_0x5acdba,null))['then'](saveUpdates(_0x2ad41b[_0x0ebb('0x4e')],null))[_0x0ebb('0x26')](respondWithResult(_0x5acdba,null))[_0x0ebb('0x4a')](handleError(_0x5acdba,null));};exports['destroy']=function(_0x1b0064,_0x3af380){return db[_0x0ebb('0x2e')][_0x0ebb('0x4c')]({'where':{'id':_0x1b0064[_0x0ebb('0x58')]['id']}})[_0x0ebb('0x26')](handleEntityNotFound(_0x3af380,null))['then'](removeEntity(_0x3af380,null))[_0x0ebb('0x4a')](handleError(_0x3af380,null));};exports[_0x0ebb('0x59')]=function(_0x10793e,_0x5e1120,_0x4ee839){var _0x3e0d9c=require(_0x0ebb('0x5a'));return db[_0x0ebb('0x2e')]['find']({'where':{'id':_0x10793e['params']['id']},'raw':!![]})[_0x0ebb('0x26')](handleEntityNotFound(_0x5e1120,null))['then'](function(){_0x3e0d9c[_0x0ebb('0x59')](_0x10793e['params']['id']);})[_0x0ebb('0x26')](respondWithStatusCode(_0x5e1120,null))[_0x0ebb('0x4a')](handleError(_0x5e1120,null));};
\ No newline at end of file
+var _0xc82b=['sendStatus','stack','name','send','index','rawAttributes','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','type','options','Schedule','includeAll','include','findAll','rows','catch','show','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','../../config/schedule','run','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','get','Scheduler','UserProfileResource','destroy'];(function(_0x1d94e8,_0x5817cf){var _0x29cb3c=function(_0x1b09c){while(--_0x1b09c){_0x1d94e8['push'](_0x1d94e8['shift']());}};_0x29cb3c(++_0x5817cf);}(_0xc82b,0x11d));var _0xbc82=function(_0x3f6344,_0x191770){_0x3f6344=_0x3f6344-0x0;var _0x3c0e18=_0xc82b[_0x3f6344];return _0x3c0e18;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbc82('0x0'));var jsonpatch=require(_0xbc82('0x1'));var rp=require(_0xbc82('0x2'));var moment=require('moment');var BPromise=require(_0xbc82('0x3'));var Mustache=require(_0xbc82('0x4'));var util=require(_0xbc82('0x5'));var path=require('path');var sox=require(_0xbc82('0x6'));var csv=require('to-csv');var ejs=require(_0xbc82('0x7'));var fs=require('fs');var fs_extra=require(_0xbc82('0x8'));var _=require(_0xbc82('0x9'));var squel=require(_0xbc82('0xa'));var crypto=require(_0xbc82('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbc82('0xc'));var Papa=require('papaparse');var Redis=require(_0xbc82('0xd'));var authService=require(_0xbc82('0xe'));var qs=require(_0xbc82('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbc82('0x10'))(_0xbc82('0x11'));var utils=require(_0xbc82('0x12'));var config=require(_0xbc82('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xbc82('0x14'))['db'];function respondWithStatusCode(_0x4de404,_0x28d781){_0x28d781=_0x28d781||0xcc;return function(_0x473e98){if(_0x473e98){return _0x4de404['sendStatus'](_0x28d781);}return _0x4de404[_0xbc82('0x15')](_0x28d781)[_0xbc82('0x16')]();};}function respondWithResult(_0x30114e,_0x9e2e2a){_0x9e2e2a=_0x9e2e2a||0xc8;return function(_0x3894c6){if(_0x3894c6){return _0x30114e[_0xbc82('0x15')](_0x9e2e2a)[_0xbc82('0x17')](_0x3894c6);}};}function respondWithFilteredResult(_0x111eea,_0x52ef07){return function(_0x2aadde){if(_0x2aadde){var _0x135613=typeof _0x52ef07[_0xbc82('0x18')]==='undefined'&&typeof _0x52ef07['limit']===_0xbc82('0x19');var _0x5962ec=_0x2aadde[_0xbc82('0x1a')];var _0x38cb2f=_0x135613?0x0:_0x52ef07[_0xbc82('0x18')];var _0x5d5228=_0x135613?_0x2aadde[_0xbc82('0x1a')]:_0x52ef07[_0xbc82('0x18')]+_0x52ef07[_0xbc82('0x1b')];var _0x1a9006;if(_0x5d5228>=_0x5962ec){_0x5d5228=_0x5962ec;_0x1a9006=0xc8;}else{_0x1a9006=0xce;}_0x111eea[_0xbc82('0x15')](_0x1a9006);return _0x111eea[_0xbc82('0x1c')](_0xbc82('0x1d'),_0x38cb2f+'-'+_0x5d5228+'/'+_0x5962ec)[_0xbc82('0x17')](_0x2aadde);}return null;};}function patchUpdates(_0x2e71d7){return function(_0xe05ebb){try{jsonpatch[_0xbc82('0x1e')](_0xe05ebb,_0x2e71d7,!![]);}catch(_0xf406c4){return BPromise[_0xbc82('0x1f')](_0xf406c4);}return _0xe05ebb[_0xbc82('0x20')]();};}function saveUpdates(_0x59612d,_0x40dda6){return function(_0x54f6a8){if(_0x54f6a8){return _0x54f6a8[_0xbc82('0x21')](_0x59612d)[_0xbc82('0x22')](function(_0x2c5cef){return _0x2c5cef;});}return null;};}function removeEntity(_0x195606,_0x1480ad){return function(_0x2cf16e){if(_0x2cf16e){return _0x2cf16e['destroy']()[_0xbc82('0x22')](function(){var _0x252b64=_0x2cf16e[_0xbc82('0x23')]({'plain':!![]});var _0x45c39a=_0xbc82('0x24');return db[_0xbc82('0x25')][_0xbc82('0x26')]({'where':{'type':_0x45c39a,'resourceId':_0x252b64['id']}})[_0xbc82('0x22')](function(){return _0x2cf16e;});})[_0xbc82('0x22')](function(){_0x195606[_0xbc82('0x15')](0xcc)[_0xbc82('0x16')]();});}};}function handleEntityNotFound(_0x65f560,_0x3c55ec){return function(_0x398fd3){if(!_0x398fd3){_0x65f560[_0xbc82('0x27')](0x194);}return _0x398fd3;};}function handleError(_0x56ae79,_0x48cf11){_0x48cf11=_0x48cf11||0x1f4;return function(_0x58a834){logger['error'](_0x58a834[_0xbc82('0x28')]);if(_0x58a834[_0xbc82('0x29')]){delete _0x58a834[_0xbc82('0x29')];}_0x56ae79[_0xbc82('0x15')](_0x48cf11)[_0xbc82('0x2a')](_0x58a834);};}exports[_0xbc82('0x2b')]=function(_0x13c143,_0x5b2eed){var _0x36e8d7={},_0x4c1a93={},_0x3b84a0={'count':0x0,'rows':[]};var _0x359129=_['map'](db['Schedule'][_0xbc82('0x2c')],function(_0x481070){return{'name':_0x481070['fieldName'],'type':_0x481070['type'][_0xbc82('0x2d')]};});_0x4c1a93[_0xbc82('0x2e')]=_[_0xbc82('0x2f')](_0x359129,_0xbc82('0x29'));_0x4c1a93[_0xbc82('0x30')]=_['keys'](_0x13c143[_0xbc82('0x30')]);_0x4c1a93[_0xbc82('0x31')]=_[_0xbc82('0x32')](_0x4c1a93['model'],_0x4c1a93[_0xbc82('0x30')]);_0x36e8d7['attributes']=_['intersection'](_0x4c1a93[_0xbc82('0x2e')],qs[_0xbc82('0x33')](_0x13c143[_0xbc82('0x30')]['fields']));_0x36e8d7[_0xbc82('0x34')]=_0x36e8d7[_0xbc82('0x34')]['length']?_0x36e8d7[_0xbc82('0x34')]:_0x4c1a93[_0xbc82('0x2e')];if(!_0x13c143[_0xbc82('0x30')][_0xbc82('0x35')]('nolimit')){_0x36e8d7[_0xbc82('0x1b')]=qs[_0xbc82('0x1b')](_0x13c143[_0xbc82('0x30')][_0xbc82('0x1b')]);_0x36e8d7[_0xbc82('0x18')]=qs[_0xbc82('0x18')](_0x13c143[_0xbc82('0x30')][_0xbc82('0x18')]);}_0x36e8d7[_0xbc82('0x36')]=qs[_0xbc82('0x37')](_0x13c143[_0xbc82('0x30')][_0xbc82('0x37')]);_0x36e8d7['where']=qs[_0xbc82('0x31')](_[_0xbc82('0x38')](_0x13c143[_0xbc82('0x30')],_0x4c1a93[_0xbc82('0x31')]),_0x359129);if(_0x13c143[_0xbc82('0x30')][_0xbc82('0x39')]){_0x36e8d7[_0xbc82('0x3a')]=_[_0xbc82('0x3b')](_0x36e8d7[_0xbc82('0x3a')],{'$or':_[_0xbc82('0x2f')](_0x359129,function(_0x27d557){if(_0x27d557[_0xbc82('0x3c')]!=='VIRTUAL'){var _0x345e40={};_0x345e40[_0x27d557[_0xbc82('0x29')]]={'$like':'%'+_0x13c143[_0xbc82('0x30')]['filter']+'%'};return _0x345e40;}})});}_0x36e8d7=_['merge']({},_0x36e8d7,_0x13c143[_0xbc82('0x3d')]);var _0x494856={'where':_0x36e8d7['where']};return db[_0xbc82('0x3e')][_0xbc82('0x1a')](_0x494856)[_0xbc82('0x22')](function(_0x2cb586){_0x3b84a0[_0xbc82('0x1a')]=_0x2cb586;if(_0x13c143['query'][_0xbc82('0x3f')]){_0x36e8d7[_0xbc82('0x40')]=[{'all':!![]}];}return db[_0xbc82('0x3e')][_0xbc82('0x41')](_0x36e8d7);})['then'](function(_0x499e23){_0x3b84a0[_0xbc82('0x42')]=_0x499e23;return _0x3b84a0;})[_0xbc82('0x22')](respondWithFilteredResult(_0x5b2eed,_0x36e8d7))[_0xbc82('0x43')](handleError(_0x5b2eed,null));};exports[_0xbc82('0x44')]=function(_0x403414,_0x28ae76){var _0x5bb2da={'raw':![],'where':{'id':_0x403414['params']['id']}},_0x1b2331={};_0x1b2331[_0xbc82('0x2e')]=_[_0xbc82('0x45')](db['Schedule'][_0xbc82('0x2c')]);_0x1b2331['query']=_[_0xbc82('0x45')](_0x403414[_0xbc82('0x30')]);_0x1b2331[_0xbc82('0x31')]=_[_0xbc82('0x32')](_0x1b2331[_0xbc82('0x2e')],_0x1b2331[_0xbc82('0x30')]);_0x5bb2da['attributes']=_['intersection'](_0x1b2331[_0xbc82('0x2e')],qs['fields'](_0x403414['query'][_0xbc82('0x33')]));_0x5bb2da[_0xbc82('0x34')]=_0x5bb2da['attributes']['length']?_0x5bb2da[_0xbc82('0x34')]:_0x1b2331['model'];if(_0x403414[_0xbc82('0x30')][_0xbc82('0x3f')]){_0x5bb2da[_0xbc82('0x40')]=[{'all':!![]}];}_0x5bb2da=_[_0xbc82('0x3b')]({},_0x5bb2da,_0x403414[_0xbc82('0x3d')]);return db['Schedule']['find'](_0x5bb2da)['then'](handleEntityNotFound(_0x28ae76,null))[_0xbc82('0x22')](respondWithResult(_0x28ae76,null))['catch'](handleError(_0x28ae76,null));};exports['create']=function(_0xd8638e,_0x3053ea){return db[_0xbc82('0x3e')][_0xbc82('0x46')](_0xd8638e[_0xbc82('0x47')],{})['then'](function(_0x3cdfa0){var _0x2852ad=_0xd8638e[_0xbc82('0x48')][_0xbc82('0x23')]({'plain':!![]});if(!_0x2852ad)throw new Error(_0xbc82('0x49'));if(_0x2852ad['role']===_0xbc82('0x48')){var _0x1013a4=_0x3cdfa0['get']({'plain':!![]});var _0x383454=_0xbc82('0x24');return db['UserProfileSection'][_0xbc82('0x4a')]({'where':{'name':_0x383454,'userProfileId':_0x2852ad[_0xbc82('0x4b')]},'raw':!![]})['then'](function(_0x1dbcd3){if(_0x1dbcd3&&_0x1dbcd3[_0xbc82('0x4c')]===0x0){return db[_0xbc82('0x25')][_0xbc82('0x46')]({'name':_0x1013a4['name'],'resourceId':_0x1013a4['id'],'type':_0x1dbcd3[_0xbc82('0x29')],'sectionId':_0x1dbcd3['id']},{})[_0xbc82('0x22')](function(){return _0x3cdfa0;});}else{return _0x3cdfa0;}})['catch'](function(_0x2502c9){logger['error'](_0xbc82('0x4d'),_0x2502c9);throw _0x2502c9;});}return _0x3cdfa0;})[_0xbc82('0x22')](respondWithResult(_0x3053ea,0xc9))[_0xbc82('0x43')](handleError(_0x3053ea,null));};exports[_0xbc82('0x21')]=function(_0x596509,_0x2b3ffd){if(_0x596509[_0xbc82('0x47')]['id']){delete _0x596509[_0xbc82('0x47')]['id'];}return db[_0xbc82('0x3e')][_0xbc82('0x4a')]({'where':{'id':_0x596509['params']['id']}})[_0xbc82('0x22')](handleEntityNotFound(_0x2b3ffd,null))['then'](saveUpdates(_0x596509[_0xbc82('0x47')],null))[_0xbc82('0x22')](respondWithResult(_0x2b3ffd,null))['catch'](handleError(_0x2b3ffd,null));};exports[_0xbc82('0x26')]=function(_0x56294d,_0x179e97){return db[_0xbc82('0x3e')][_0xbc82('0x4a')]({'where':{'id':_0x56294d[_0xbc82('0x4e')]['id']}})[_0xbc82('0x22')](handleEntityNotFound(_0x179e97,null))[_0xbc82('0x22')](removeEntity(_0x179e97,null))[_0xbc82('0x43')](handleError(_0x179e97,null));};exports['run']=function(_0x22d35b,_0x4a3e32,_0x274364){var _0x44e63d=require(_0xbc82('0x4f'));return db['Schedule'][_0xbc82('0x4a')]({'where':{'id':_0x22d35b[_0xbc82('0x4e')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x4a3e32,null))[_0xbc82('0x22')](function(){_0x44e63d[_0xbc82('0x50')](_0x22d35b[_0xbc82('0x4e')]['id']);})[_0xbc82('0x22')](respondWithStatusCode(_0x4a3e32,null))[_0xbc82('0x43')](handleError(_0x4a3e32,null));};
\ No newline at end of file
index dc664ae..84476d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9c=['api','bluebird','request-promise','path','../../config/environment','exports','define','tools_schedules','lodash','util','../../config/logger'];(function(_0x379c82,_0x52a43e){var _0x155b34=function(_0x482f5){while(--_0x482f5){_0x379c82['push'](_0x379c82['shift']());}};_0x155b34(++_0x52a43e);}(_0x1f9c,0x17e));var _0xc1f9=function(_0x2fb852,_0x2b4873){_0x2fb852=_0x2fb852-0x0;var _0x5117d7=_0x1f9c[_0x2fb852];return _0x5117d7;};'use strict';var _=require(_0xc1f9('0x0'));var util=require(_0xc1f9('0x1'));var logger=require(_0xc1f9('0x2'))(_0xc1f9('0x3'));var moment=require('moment');var BPromise=require(_0xc1f9('0x4'));var rp=require(_0xc1f9('0x5'));var fs=require('fs');var path=require(_0xc1f9('0x6'));var rimraf=require('rimraf');var config=require(_0xc1f9('0x7'));var attributes=require('./schedule.attributes');module[_0xc1f9('0x8')]=function(_0x1d4b1b,_0x3fb91b){return _0x1d4b1b[_0xc1f9('0x9')]('Schedule',attributes,{'tableName':_0xc1f9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21ad=['util','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','lodash'];(function(_0x524943,_0x58d72e){var _0x1a3a16=function(_0x354263){while(--_0x354263){_0x524943['push'](_0x524943['shift']());}};_0x1a3a16(++_0x58d72e);}(_0x21ad,0x1e3));var _0xd21a=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x21ad[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xd21a('0x0'));var util=require(_0xd21a('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xd21a('0x2'));var rp=require(_0xd21a('0x3'));var fs=require('fs');var path=require(_0xd21a('0x4'));var rimraf=require(_0xd21a('0x5'));var config=require(_0xd21a('0x6'));var attributes=require(_0xd21a('0x7'));module[_0xd21a('0x8')]=function(_0x272ddd,_0x1a5329){return _0x272ddd[_0xd21a('0x9')](_0xd21a('0xa'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index abfdfec..8a8fb80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf83=['then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0xdf83,0xd2));var _0x3df8=function(_0xcd3d34,_0x5a5acc){_0xcd3d34=_0xcd3d34-0x0;var _0x490679=_0xdf83[_0xcd3d34];return _0x490679;};'use strict';var _=require('lodash');var util=require(_0x3df8('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3df8('0x1'));var fs=require('fs');var Redis=require(_0x3df8('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3df8('0x3'));var logger=require(_0x3df8('0x4'))(_0x3df8('0x5'));var config=require(_0x3df8('0x6'));var jayson=require(_0x3df8('0x7'));var client=jayson[_0x3df8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34b43c,_0x35b8d6,_0x2e9b74){return new BPromise(function(_0xea2f02,_0x252ae3){return client[_0x3df8('0x9')](_0x34b43c,_0x2e9b74)[_0x3df8('0xa')](function(_0x3c6751){logger[_0x3df8('0xb')](_0x3df8('0xc'),_0x35b8d6,_0x3df8('0xd'));logger[_0x3df8('0xe')](_0x3df8('0xf'),_0x35b8d6,_0x3df8('0xd'),JSON[_0x3df8('0x10')](_0x3c6751));if(_0x3c6751['error']){if(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x12')]===0x1f4){logger[_0x3df8('0x11')](_0x3df8('0xc'),_0x35b8d6,_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);return _0x252ae3(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);}logger[_0x3df8('0x11')](_0x3df8('0xc'),_0x35b8d6,_0x3c6751['error'][_0x3df8('0x13')]);return _0xea2f02(_0x3c6751[_0x3df8('0x11')][_0x3df8('0x13')]);}else{logger[_0x3df8('0xb')](_0x3df8('0xc'),_0x35b8d6,_0x3df8('0xd'));_0xea2f02(_0x3c6751[_0x3df8('0x14')][_0x3df8('0x13')]);}})[_0x3df8('0x15')](function(_0x532b9c){logger[_0x3df8('0x11')]('Schedule,\x20%s,\x20%s',_0x35b8d6,_0x532b9c);_0x252ae3(_0x532b9c);});});}
\ No newline at end of file
+var _0x5342=['code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x3ce953,_0x71cad2){var _0x1b8da1=function(_0x5167ac){while(--_0x5167ac){_0x3ce953['push'](_0x3ce953['shift']());}};_0x1b8da1(++_0x71cad2);}(_0x5342,0x122));var _0x2534=function(_0x1b4695,_0x3a90e3){_0x1b4695=_0x1b4695-0x0;var _0x376a90=_0x5342[_0x1b4695];return _0x376a90;};'use strict';var _=require('lodash');var util=require(_0x2534('0x0'));var moment=require(_0x2534('0x1'));var BPromise=require(_0x2534('0x2'));var rs=require(_0x2534('0x3'));var fs=require('fs');var Redis=require(_0x2534('0x4'));var db=require(_0x2534('0x5'))['db'];var utils=require(_0x2534('0x6'));var logger=require('../../config/logger')(_0x2534('0x7'));var config=require(_0x2534('0x8'));var jayson=require(_0x2534('0x9'));var client=jayson[_0x2534('0xa')][_0x2534('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fb4ce,_0x3c72f5,_0x13aa71){return new BPromise(function(_0x505139,_0xd0c648){return client['request'](_0x4fb4ce,_0x13aa71)['then'](function(_0x1f89d7){logger[_0x2534('0xc')](_0x2534('0xd'),_0x3c72f5,_0x2534('0xe'));logger[_0x2534('0xf')]('Schedule,\x20%s,\x20%s,\x20%s',_0x3c72f5,_0x2534('0xe'),JSON[_0x2534('0x10')](_0x1f89d7));if(_0x1f89d7[_0x2534('0x11')]){if(_0x1f89d7['error'][_0x2534('0x12')]===0x1f4){logger[_0x2534('0x11')](_0x2534('0xd'),_0x3c72f5,_0x1f89d7['error'][_0x2534('0x13')]);return _0xd0c648(_0x1f89d7[_0x2534('0x11')][_0x2534('0x13')]);}logger['error'](_0x2534('0xd'),_0x3c72f5,_0x1f89d7[_0x2534('0x11')][_0x2534('0x13')]);return _0x505139(_0x1f89d7[_0x2534('0x11')]['message']);}else{logger[_0x2534('0xc')](_0x2534('0xd'),_0x3c72f5,_0x2534('0xe'));_0x505139(_0x1f89d7[_0x2534('0x14')][_0x2534('0x13')]);}})[_0x2534('0x15')](function(_0x1fa2d4){logger[_0x2534('0x11')](_0x2534('0xd'),_0x3c72f5,_0x1fa2d4);_0xd0c648(_0x1fa2d4);});});}
\ No newline at end of file
index c0f7e14..22b8c4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180e=['isAuthenticated','get','/describe','describe','/:id','show','/:id/download','download','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller'];(function(_0x50f6ee,_0x153b5c){var _0x36fb6c=function(_0x5c89fb){while(--_0x5c89fb){_0x50f6ee['push'](_0x50f6ee['shift']());}};_0x36fb6c(++_0x153b5c);}(_0x180e,0x1be));var _0xe180=function(_0x239b31,_0x44a64d){_0x239b31=_0x239b31-0x0;var _0x41c8be=_0x180e[_0x239b31];return _0x41c8be;};'use strict';var multer=require(_0xe180('0x0'));var util=require(_0xe180('0x1'));var path=require(_0xe180('0x2'));var timeout=require('connect-timeout');var express=require(_0xe180('0x3'));var router=express[_0xe180('0x4')]();var fs_extra=require(_0xe180('0x5'));var auth=require(_0xe180('0x6'));var interaction=require(_0xe180('0x7'));var config=require(_0xe180('0x8'));var controller=require(_0xe180('0x9'));router['get']('/',auth[_0xe180('0xa')](),controller['index']);router[_0xe180('0xb')](_0xe180('0xc'),auth['isAuthenticated'](),controller[_0xe180('0xd')]);router[_0xe180('0xb')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller[_0xe180('0xf')]);router[_0xe180('0xb')](_0xe180('0x10'),auth[_0xe180('0xa')](),controller[_0xe180('0x11')]);router[_0xe180('0x12')]('/',auth[_0xe180('0xa')](),controller[_0xe180('0x13')]);router[_0xe180('0x14')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller[_0xe180('0x15')]);router[_0xe180('0x16')](_0xe180('0xe'),auth[_0xe180('0xa')](),controller['destroy']);module[_0xe180('0x17')]=router;
\ No newline at end of file
+var _0x5bdf=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','describe','/:id','show','download','post','create','put','delete','destroy','util','path','connect-timeout'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x5bdf,0x13d));var _0xf5bd=function(_0x3a557b,_0x4f8de3){_0x3a557b=_0x3a557b-0x0;var _0x53dd99=_0x5bdf[_0x3a557b];return _0x53dd99;};'use strict';var multer=require('multer');var util=require(_0xf5bd('0x0'));var path=require(_0xf5bd('0x1'));var timeout=require(_0xf5bd('0x2'));var express=require(_0xf5bd('0x3'));var router=express['Router']();var fs_extra=require(_0xf5bd('0x4'));var auth=require(_0xf5bd('0x5'));var interaction=require(_0xf5bd('0x6'));var config=require(_0xf5bd('0x7'));var controller=require(_0xf5bd('0x8'));router[_0xf5bd('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf5bd('0x9')]('/describe',auth[_0xf5bd('0xa')](),controller[_0xf5bd('0xb')]);router[_0xf5bd('0x9')](_0xf5bd('0xc'),auth[_0xf5bd('0xa')](),controller[_0xf5bd('0xd')]);router[_0xf5bd('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0xf5bd('0xe')]);router[_0xf5bd('0xf')]('/',auth['isAuthenticated'](),controller[_0xf5bd('0x10')]);router[_0xf5bd('0x11')](_0xf5bd('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xf5bd('0x12')](_0xf5bd('0xc'),auth[_0xf5bd('0xa')](),controller[_0xf5bd('0x13')]);module['exports']=router;
\ No newline at end of file
index 0fd331e..7b178ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77c=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','exports','VIRTUAL','getDataValue'];(function(_0x3d2f04,_0x2af699){var _0x453593=function(_0x2d7a9c){while(--_0x2d7a9c){_0x3d2f04['push'](_0x3d2f04['shift']());}};_0x453593(++_0x2af699);}(_0xe77c,0x176));var _0xce77=function(_0x4d5c14,_0x1d4351){_0x4d5c14=_0x4d5c14-0x0;var _0xb568f=_0xe77c[_0x4d5c14];return _0xb568f;};'use strict';var Sequelize=require(_0xce77('0x0'));var moment=require(_0xce77('0x1'));var path=require(_0xce77('0x2'));var config=require('../../config/environment');module[_0xce77('0x3')]={'format':{'type':Sequelize[_0xce77('0x4')],'get':function(){return this[_0xce77('0x5')](_0xce77('0x6'))?path[_0xce77('0x7')](this[_0xce77('0x5')](_0xce77('0x6'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0xce77('0x8')],'set':function(_0x51fe6b){var _0x3a9d5d=_0x51fe6b[_0xce77('0x9')](/\\/g,'/');this[_0xce77('0xa')]('value',_0x3a9d5d);}},'rating':{'type':Sequelize[_0xce77('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xce77('0xb')],'set':function(_0x82cc7e){this[_0xce77('0xa')](_0xce77('0xc'),moment()['subtract'](_0x82cc7e,'ms'));this[_0xce77('0xa')]('closedAt',moment());this[_0xce77('0xa')](_0xce77('0xd'),_0x82cc7e);}},'startedAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this['getDataValue'](_0xce77('0xc')))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xce77('0x5')]('closedAt'))[_0xce77('0xf')](_0xce77('0x10'))[_0xce77('0x11')]();}},'createdAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this[_0xce77('0x5')](_0xce77('0x12')))['format'](_0xce77('0x10'))['toString']();}},'updatedAt':{'type':Sequelize[_0xce77('0xe')],'get':function(){return moment(this[_0xce77('0x5')](_0xce77('0x13')))['format'](_0xce77('0x10'))[_0xce77('0x11')]();}}};
\ No newline at end of file
+var _0x9e6d=['DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','path','../../config/environment','exports','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration'];(function(_0x2a0afb,_0x221e51){var _0x537b6b=function(_0x8ba2d5){while(--_0x8ba2d5){_0x2a0afb['push'](_0x2a0afb['shift']());}};_0x537b6b(++_0x221e51);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x1efb76,_0x25fac9){_0x1efb76=_0x1efb76-0x0;var _0x3099e0=_0x9e6d[_0x1efb76];return _0x3099e0;};'use strict';var Sequelize=require(_0xd9e6('0x0'));var moment=require('moment');var path=require(_0xd9e6('0x1'));var config=require(_0xd9e6('0x2'));module[_0xd9e6('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xd9e6('0x4')](_0xd9e6('0x5'))?path[_0xd9e6('0x6')](this[_0xd9e6('0x4')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0xd9e6('0x7')]},'channel':{'type':Sequelize[_0xd9e6('0x7')]},'value':{'type':Sequelize['STRING'],'set':function(_0x57a688){var _0x1cb696=_0x57a688[_0xd9e6('0x8')](/\\/g,'/');this[_0xd9e6('0x9')]('value',_0x1cb696);}},'rating':{'type':Sequelize[_0xd9e6('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xd9e6('0xa')],'set':function(_0x596895){this[_0xd9e6('0x9')](_0xd9e6('0xb'),moment()['subtract'](_0x596895,'ms'));this['setDataValue'](_0xd9e6('0xc'),moment());this[_0xd9e6('0x9')](_0xd9e6('0xd'),_0x596895);}},'startedAt':{'type':Sequelize[_0xd9e6('0xe')],'get':function(){return moment(this[_0xd9e6('0x4')](_0xd9e6('0xb')))[_0xd9e6('0xf')](_0xd9e6('0x10'))[_0xd9e6('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xd9e6('0x4')](_0xd9e6('0xc')))['format']('MM-DD-YYYY\x20HH:mm')[_0xd9e6('0x11')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xd9e6('0x4')](_0xd9e6('0x12')))[_0xd9e6('0xf')](_0xd9e6('0x10'))[_0xd9e6('0x11')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0xd9e6('0x13')))['format'](_0xd9e6('0x10'))[_0xd9e6('0x11')]();}}};
\ No newline at end of file
index 16ea2a7..80a6b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['unlink','message','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','save','update','destroy','then','error','stack','name','index','map','rawAttributes','type','key','differenceBy','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','ScreenRecording','includeAll','findAll','rows','params','include','find','catch','create','body','createdAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','secrets','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname'];(function(_0x3bd5eb,_0x47e563){var _0x3efe38=function(_0x138b2e){while(--_0x138b2e){_0x3bd5eb['push'](_0x3bd5eb['shift']());}};_0x3efe38(++_0x47e563);}(_0xa41a,0x6b));var _0xaa41=function(_0x1ce126,_0x1f6258){_0x1ce126=_0x1ce126-0x0;var _0x5efec4=_0xa41a[_0x1ce126];return _0x5efec4;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xcc;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0x19')](_0x518b5b);}return _0x1d0a54[_0xaa41('0x1a')](_0x518b5b)[_0xaa41('0x1b')]();};}function respondWithResult(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0xc8;return function(_0x1e9d7f){if(_0x1e9d7f){return _0x6f9ade[_0xaa41('0x1a')](_0x4eaf81)[_0xaa41('0x1c')](_0x1e9d7f);}};}function respondWithFilteredResult(_0x1ef7d9,_0x2a6988){return function(_0x2005ae){if(_0x2005ae){var _0x1e1e02=typeof _0x2a6988['offset']===_0xaa41('0x1d')&&typeof _0x2a6988[_0xaa41('0x1e')]===_0xaa41('0x1d');var _0x391b01=_0x2005ae[_0xaa41('0x1f')];var _0xd20ddf=_0x1e1e02?0x0:_0x2a6988[_0xaa41('0x20')];var _0x46e6d3=_0x1e1e02?_0x2005ae[_0xaa41('0x1f')]:_0x2a6988['offset']+_0x2a6988['limit'];var _0x1f502a;if(_0x46e6d3>=_0x391b01){_0x46e6d3=_0x391b01;_0x1f502a=0xc8;}else{_0x1f502a=0xce;}_0x1ef7d9[_0xaa41('0x1a')](_0x1f502a);return _0x1ef7d9[_0xaa41('0x21')]('Content-Range',_0xd20ddf+'-'+_0x46e6d3+'/'+_0x391b01)[_0xaa41('0x1c')](_0x2005ae);}return null;};}function patchUpdates(_0x1f692b){return function(_0x4e768e){try{jsonpatch['apply'](_0x4e768e,_0x1f692b,!![]);}catch(_0x1b1910){return BPromise['reject'](_0x1b1910);}return _0x4e768e[_0xaa41('0x22')]();};}function saveUpdates(_0x209c83,_0x3e2175){return function(_0x1f27f3){if(_0x1f27f3){return _0x1f27f3[_0xaa41('0x23')](_0x209c83)['then'](function(_0x43c430){return _0x43c430;});}return null;};}function removeEntity(_0x43a85c,_0x448a21){return function(_0x21f596){if(_0x21f596){return _0x21f596[_0xaa41('0x24')]()[_0xaa41('0x25')](function(){_0x43a85c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16aec5,_0x527cac){return function(_0x493a10){if(!_0x493a10){_0x16aec5[_0xaa41('0x19')](0x194);}return _0x493a10;};}function handleError(_0x59707f,_0x536bed){_0x536bed=_0x536bed||0x1f4;return function(_0x2d0ac0){logger[_0xaa41('0x26')](_0x2d0ac0[_0xaa41('0x27')]);if(_0x2d0ac0[_0xaa41('0x28')]){delete _0x2d0ac0[_0xaa41('0x28')];}_0x59707f[_0xaa41('0x1a')](_0x536bed)['send'](_0x2d0ac0);};}exports[_0xaa41('0x29')]=function(_0x1f0275,_0x63c18c){var _0x9a16e3={},_0x1d8c2b={},_0x4466a3={'count':0x0,'rows':[]};var _0x30f88e=_[_0xaa41('0x2a')](db['ScreenRecording'][_0xaa41('0x2b')],function(_0x48b48b){return{'name':_0x48b48b['fieldName'],'type':_0x48b48b[_0xaa41('0x2c')][_0xaa41('0x2d')]};});_0x1d8c2b['model']=_[_0xaa41('0x2e')](_[_0xaa41('0x2a')](_0x30f88e,'name'),['format']);_0x1d8c2b['query']=_[_0xaa41('0x2f')](_0x1f0275[_0xaa41('0x30')]);_0x1d8c2b[_0xaa41('0x31')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],_0x1d8c2b[_0xaa41('0x30')]);_0x9a16e3[_0xaa41('0x33')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],qs[_0xaa41('0x34')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x34')]));_0x9a16e3['attributes']=_0x9a16e3[_0xaa41('0x33')][_0xaa41('0x35')]?_0x9a16e3['attributes']:_0x1d8c2b[_0xaa41('0x36')];if(!_0x1f0275[_0xaa41('0x30')][_0xaa41('0x37')]('nolimit')){_0x9a16e3[_0xaa41('0x1e')]=qs['limit'](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x1e')]);_0x9a16e3[_0xaa41('0x20')]=qs['offset'](_0x1f0275['query']['offset']);}_0x9a16e3[_0xaa41('0x38')]=qs[_0xaa41('0x39')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x39')]);_0x9a16e3['where']=qs['filters'](_[_0xaa41('0x3a')](_0x1f0275[_0xaa41('0x30')],_0x1d8c2b[_0xaa41('0x31')]),_0x30f88e);if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]){_0x9a16e3[_0xaa41('0x3c')]=_[_0xaa41('0x3d')](_0x9a16e3['where'],{'$or':_[_0xaa41('0x2a')](_0x30f88e,function(_0x5cf689){if(_0x5cf689[_0xaa41('0x2c')]!==_0xaa41('0x3e')){var _0x57f1bf={};_0x57f1bf[_0x5cf689['name']]={'$like':'%'+_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]+'%'};return _0x57f1bf;}})});}_0x9a16e3=_['merge']({},_0x9a16e3,_0x1f0275[_0xaa41('0x3f')]);var _0x563687={'where':_0x9a16e3[_0xaa41('0x3c')]};return db[_0xaa41('0x40')][_0xaa41('0x1f')](_0x563687)[_0xaa41('0x25')](function(_0x3e6cac){_0x4466a3[_0xaa41('0x1f')]=_0x3e6cac;if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x41')]){_0x9a16e3['include']=[{'all':!![]}];}return db[_0xaa41('0x40')][_0xaa41('0x42')](_0x9a16e3);})[_0xaa41('0x25')](function(_0x398c35){_0x4466a3[_0xaa41('0x43')]=_0x398c35;return _0x4466a3;})[_0xaa41('0x25')](respondWithFilteredResult(_0x63c18c,_0x9a16e3))['catch'](handleError(_0x63c18c,null));};exports['show']=function(_0x87e2f4,_0x4f9086){var _0x1ed366={'raw':![],'where':{'id':_0x87e2f4[_0xaa41('0x44')]['id']}},_0x215896={};_0x215896[_0xaa41('0x36')]=_[_0xaa41('0x2f')](db[_0xaa41('0x40')][_0xaa41('0x2b')]);_0x215896['query']=_[_0xaa41('0x2f')](_0x87e2f4['query']);_0x215896['filters']=_[_0xaa41('0x32')](_0x215896['model'],_0x215896['query']);_0x1ed366['attributes']=_[_0xaa41('0x32')](_0x215896['model'],qs[_0xaa41('0x34')](_0x87e2f4[_0xaa41('0x30')]['fields']));_0x1ed366['attributes']=_0x1ed366[_0xaa41('0x33')][_0xaa41('0x35')]?_0x1ed366[_0xaa41('0x33')]:_0x215896[_0xaa41('0x36')];if(_0x87e2f4[_0xaa41('0x30')][_0xaa41('0x41')]){_0x1ed366[_0xaa41('0x45')]=[{'all':!![]}];}_0x1ed366=_[_0xaa41('0x3d')]({},_0x1ed366,_0x87e2f4[_0xaa41('0x3f')]);return db['ScreenRecording'][_0xaa41('0x46')](_0x1ed366)[_0xaa41('0x25')](handleEntityNotFound(_0x4f9086,null))[_0xaa41('0x25')](respondWithResult(_0x4f9086,null))[_0xaa41('0x47')](handleError(_0x4f9086,null));};exports[_0xaa41('0x48')]=function(_0x1d6112,_0x538b12){return db[_0xaa41('0x40')][_0xaa41('0x48')](_0x1d6112[_0xaa41('0x49')],{})[_0xaa41('0x25')](respondWithResult(_0x538b12,0xc9))['catch'](handleError(_0x538b12,null));};exports[_0xaa41('0x23')]=function(_0x5787f3,_0x49fedd){if(_0x5787f3[_0xaa41('0x49')]['id']){delete _0x5787f3[_0xaa41('0x49')]['id'];}delete _0x5787f3[_0xaa41('0x49')]['duration'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4a')];delete _0x5787f3[_0xaa41('0x49')]['closedAt'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4b')];return db[_0xaa41('0x40')][_0xaa41('0x46')]({'where':{'id':_0x5787f3[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x49fedd,null))[_0xaa41('0x25')](saveUpdates(_0x5787f3[_0xaa41('0x49')],null))['then'](respondWithResult(_0x49fedd,null))[_0xaa41('0x47')](handleError(_0x49fedd,null));};exports['describe']=function(_0x5ae65e,_0x1bdcd6){return db[_0xaa41('0x40')][_0xaa41('0x4c')]()[_0xaa41('0x25')](respondWithResult(_0x1bdcd6,null))[_0xaa41('0x47')](handleError(_0x1bdcd6,null));};exports[_0xaa41('0x4d')]=function(_0x48c4c7,_0x3c5082,_0x519e39){var _0xecb54=require(_0xaa41('0x4e'));var _0x1d518f=![];var _0x4f9e92={};if(_0x48c4c7[_0xaa41('0x30')][_0xaa41('0x2c')]&&_0x48c4c7['query'][_0xaa41('0x2c')]===_0xaa41('0x4f')){_0x4f9e92[_0xaa41('0x4f')]=_0x48c4c7['params']['id'];}else{_0x4f9e92['id']=_0x48c4c7[_0xaa41('0x44')]['id'];}return db[_0xaa41('0x40')]['find']({'where':_0x4f9e92,'attributes':['id','value'],'raw':!![]})[_0xaa41('0x25')](handleEntityNotFound(_0x3c5082,null))[_0xaa41('0x25')](function(_0x3a29d2){if(_0x3a29d2){var _0x4d20c6=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x3a29d2[_0xaa41('0x4b')]);var _0x2abb78=util['format'](_0xaa41('0x53'),_0x4d20c6);if(fs['existsSync'](_0x2abb78)){_0x1d518f=!![];return _0xecb54['decryptFile'](_0x2abb78,_0x4d20c6,config[_0xaa41('0x54')]['recording'])[_0xaa41('0x25')](function(){return _0x3a29d2;});}return _0x3a29d2;}})[_0xaa41('0x25')](function(_0x169ddf){if(_0x169ddf){var _0x5e83e1=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x169ddf[_0xaa41('0x4b')]);if(!fs[_0xaa41('0x55')](_0x5e83e1)){throw new db[(_0xaa41('0x56'))][(_0xaa41('0x57'))](_0xaa41('0x58'));}if(_0x169ddf[_0xaa41('0x59')]){return _0x3c5082['download'](_0x5e83e1,_0x169ddf[_0xaa41('0x59')]+path[_0xaa41('0x5a')](_0x5e83e1),function(){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}else{return _0x3c5082['download'](_0x5e83e1,function(_0x3fe47a){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}}})[_0xaa41('0x47')](function(_0x134579){if(_0x134579[_0xaa41('0x5c')]===_0xaa41('0x58')){_0x3c5082[_0xaa41('0x1a')](0x194)['send']('Not\x20found');}else{return handleError(_0x3c5082,null);}});};exports['destroy']=function(_0x540325,_0x4ec357){return db['ScreenRecording'][_0xaa41('0x46')]({'where':{'id':_0x540325['params']['id']}})['then'](function(_0x24c6f3){if(_[_0xaa41('0x5d')](_0x24c6f3)){throw new ReferenceError(_0xaa41('0x5e'));}return _0x24c6f3;})[_0xaa41('0x25')](function(_0x5cabc4){var _0x244d41=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x5cabc4[_0xaa41('0x4b')]);logger[_0xaa41('0x5f')](_0xaa41('0x60'),_0x244d41);if(!_[_0xaa41('0x5d')](_0x5cabc4[_0xaa41('0x4b')])&&fs['existsSync'](_0x244d41)){logger[_0xaa41('0x5f')](_0xaa41('0x61')+_0x244d41+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x244d41);}_0x244d41=_0x244d41+'.cypher';if(!_[_0xaa41('0x5d')](_0x5cabc4['value'])&&fs[_0xaa41('0x55')](_0x244d41)){logger['info'](_0xaa41('0x61')+_0x244d41+_0xaa41('0x62'));fs['unlinkSync'](_0x244d41);}return _0x5cabc4;})[_0xaa41('0x25')](function(_0x33efc5){if(!_0x33efc5)throw new InternalError();return _0x33efc5[_0xaa41('0x24')]();})[_0xaa41('0x25')](function(){_0x4ec357['status'](0xcc)['end']();})[_0xaa41('0x47')](handleError(_0x4ec357,null));};
\ No newline at end of file
+var _0x46ed=['intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','findAll','rows','catch','show','keys','include','options','find','create','body','createdAt','closedAt','describe','download','../../components/encryptor','uniqueid','params','value','join','root','server/files/screen_recordings','%s.cypher','decryptFile','secrets','recording','existsSync','ScreenRecording\x20not\x20found','filename','unlink','message','Not\x20found','destroy','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','end','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','undefined','set','Content-Range','json','apply','reject','update','then','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','format','query','filters'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x46ed,0x168));var _0xd46e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x46ed[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require(_0xd46e('0x0'));var rimraf=require(_0xd46e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd46e('0x2'));var rp=require(_0xd46e('0x3'));var moment=require(_0xd46e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd46e('0x5'));var util=require(_0xd46e('0x6'));var path=require('path');var sox=require(_0xd46e('0x7'));var csv=require(_0xd46e('0x8'));var ejs=require(_0xd46e('0x9'));var fs=require('fs');var fs_extra=require(_0xd46e('0xa'));var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x8'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var authService=require(_0xd46e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd46e('0x13'));var hardwareService=require(_0xd46e('0x14'));var logger=require(_0xd46e('0x15'))(_0xd46e('0x16'));var utils=require(_0xd46e('0x17'));var config=require(_0xd46e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd46e('0x19'))['db'];function respondWithStatusCode(_0x5bc1da,_0x48550b){_0x48550b=_0x48550b||0xcc;return function(_0xf3048c){if(_0xf3048c){return _0x5bc1da[_0xd46e('0x1a')](_0x48550b);}return _0x5bc1da['status'](_0x48550b)['end']();};}function respondWithResult(_0xacd799,_0x4688ae){_0x4688ae=_0x4688ae||0xc8;return function(_0x1e9aae){if(_0x1e9aae){return _0xacd799[_0xd46e('0x1b')](_0x4688ae)['json'](_0x1e9aae);}};}function respondWithFilteredResult(_0x3b6d25,_0x44a620){return function(_0x417402){if(_0x417402){var _0x3d72ce=typeof _0x44a620[_0xd46e('0x1c')]==='undefined'&&typeof _0x44a620[_0xd46e('0x1d')]===_0xd46e('0x1e');var _0x3583a5=_0x417402['count'];var _0x5ddd04=_0x3d72ce?0x0:_0x44a620[_0xd46e('0x1c')];var _0x1bd574=_0x3d72ce?_0x417402['count']:_0x44a620['offset']+_0x44a620[_0xd46e('0x1d')];var _0x2f2571;if(_0x1bd574>=_0x3583a5){_0x1bd574=_0x3583a5;_0x2f2571=0xc8;}else{_0x2f2571=0xce;}_0x3b6d25[_0xd46e('0x1b')](_0x2f2571);return _0x3b6d25[_0xd46e('0x1f')](_0xd46e('0x20'),_0x5ddd04+'-'+_0x1bd574+'/'+_0x3583a5)[_0xd46e('0x21')](_0x417402);}return null;};}function patchUpdates(_0x3b5fa4){return function(_0x327b7e){try{jsonpatch[_0xd46e('0x22')](_0x327b7e,_0x3b5fa4,!![]);}catch(_0x3c7e91){return BPromise[_0xd46e('0x23')](_0x3c7e91);}return _0x327b7e['save']();};}function saveUpdates(_0x259072,_0x1c83fa){return function(_0x79aa51){if(_0x79aa51){return _0x79aa51[_0xd46e('0x24')](_0x259072)[_0xd46e('0x25')](function(_0xc1af7f){return _0xc1af7f;});}return null;};}function removeEntity(_0x33c2e0,_0x8a1be){return function(_0x62dea5){if(_0x62dea5){return _0x62dea5['destroy']()[_0xd46e('0x25')](function(){_0x33c2e0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x371054,_0x2a5271){return function(_0x21135f){if(!_0x21135f){_0x371054[_0xd46e('0x1a')](0x194);}return _0x21135f;};}function handleError(_0x247b9f,_0x180851){_0x180851=_0x180851||0x1f4;return function(_0x1740d1){logger['error'](_0x1740d1[_0xd46e('0x26')]);if(_0x1740d1[_0xd46e('0x27')]){delete _0x1740d1[_0xd46e('0x27')];}_0x247b9f[_0xd46e('0x1b')](_0x180851)[_0xd46e('0x28')](_0x1740d1);};}exports[_0xd46e('0x29')]=function(_0x58aeef,_0x465d54){var _0x3a1ced={},_0x2d1afe={},_0xa716ce={'count':0x0,'rows':[]};var _0x106edc=_[_0xd46e('0x2a')](db[_0xd46e('0x2b')][_0xd46e('0x2c')],function(_0x18f060){return{'name':_0x18f060[_0xd46e('0x2d')],'type':_0x18f060[_0xd46e('0x2e')][_0xd46e('0x2f')]};});_0x2d1afe[_0xd46e('0x30')]=_['differenceBy'](_[_0xd46e('0x2a')](_0x106edc,_0xd46e('0x27')),[_0xd46e('0x31')]);_0x2d1afe[_0xd46e('0x32')]=_['keys'](_0x58aeef[_0xd46e('0x32')]);_0x2d1afe[_0xd46e('0x33')]=_['intersection'](_0x2d1afe[_0xd46e('0x30')],_0x2d1afe[_0xd46e('0x32')]);_0x3a1ced['attributes']=_[_0xd46e('0x34')](_0x2d1afe[_0xd46e('0x30')],qs[_0xd46e('0x35')](_0x58aeef['query']['fields']));_0x3a1ced[_0xd46e('0x36')]=_0x3a1ced[_0xd46e('0x36')][_0xd46e('0x37')]?_0x3a1ced[_0xd46e('0x36')]:_0x2d1afe[_0xd46e('0x30')];if(!_0x58aeef[_0xd46e('0x32')][_0xd46e('0x38')](_0xd46e('0x39'))){_0x3a1ced['limit']=qs[_0xd46e('0x1d')](_0x58aeef[_0xd46e('0x32')][_0xd46e('0x1d')]);_0x3a1ced[_0xd46e('0x1c')]=qs[_0xd46e('0x1c')](_0x58aeef[_0xd46e('0x32')][_0xd46e('0x1c')]);}_0x3a1ced['order']=qs[_0xd46e('0x3a')](_0x58aeef[_0xd46e('0x32')]['sort']);_0x3a1ced[_0xd46e('0x3b')]=qs[_0xd46e('0x33')](_[_0xd46e('0x3c')](_0x58aeef[_0xd46e('0x32')],_0x2d1afe['filters']),_0x106edc);if(_0x58aeef[_0xd46e('0x32')][_0xd46e('0x3d')]){_0x3a1ced[_0xd46e('0x3b')]=_[_0xd46e('0x3e')](_0x3a1ced[_0xd46e('0x3b')],{'$or':_[_0xd46e('0x2a')](_0x106edc,function(_0x220c57){if(_0x220c57[_0xd46e('0x2e')]!=='VIRTUAL'){var _0x232e6f={};_0x232e6f[_0x220c57[_0xd46e('0x27')]]={'$like':'%'+_0x58aeef[_0xd46e('0x32')][_0xd46e('0x3d')]+'%'};return _0x232e6f;}})});}_0x3a1ced=_[_0xd46e('0x3e')]({},_0x3a1ced,_0x58aeef['options']);var _0x964c66={'where':_0x3a1ced['where']};return db['ScreenRecording']['count'](_0x964c66)['then'](function(_0x17c3d9){_0xa716ce['count']=_0x17c3d9;if(_0x58aeef[_0xd46e('0x32')][_0xd46e('0x3f')]){_0x3a1ced['include']=[{'all':!![]}];}return db[_0xd46e('0x2b')][_0xd46e('0x40')](_0x3a1ced);})[_0xd46e('0x25')](function(_0x31ba12){_0xa716ce[_0xd46e('0x41')]=_0x31ba12;return _0xa716ce;})[_0xd46e('0x25')](respondWithFilteredResult(_0x465d54,_0x3a1ced))[_0xd46e('0x42')](handleError(_0x465d54,null));};exports[_0xd46e('0x43')]=function(_0x3a98e4,_0xec367d){var _0x259e2={'raw':![],'where':{'id':_0x3a98e4['params']['id']}},_0x5ea048={};_0x5ea048['model']=_[_0xd46e('0x44')](db['ScreenRecording'][_0xd46e('0x2c')]);_0x5ea048[_0xd46e('0x32')]=_[_0xd46e('0x44')](_0x3a98e4[_0xd46e('0x32')]);_0x5ea048[_0xd46e('0x33')]=_[_0xd46e('0x34')](_0x5ea048[_0xd46e('0x30')],_0x5ea048[_0xd46e('0x32')]);_0x259e2['attributes']=_[_0xd46e('0x34')](_0x5ea048['model'],qs[_0xd46e('0x35')](_0x3a98e4[_0xd46e('0x32')][_0xd46e('0x35')]));_0x259e2[_0xd46e('0x36')]=_0x259e2[_0xd46e('0x36')]['length']?_0x259e2[_0xd46e('0x36')]:_0x5ea048[_0xd46e('0x30')];if(_0x3a98e4[_0xd46e('0x32')][_0xd46e('0x3f')]){_0x259e2[_0xd46e('0x45')]=[{'all':!![]}];}_0x259e2=_['merge']({},_0x259e2,_0x3a98e4[_0xd46e('0x46')]);return db[_0xd46e('0x2b')][_0xd46e('0x47')](_0x259e2)[_0xd46e('0x25')](handleEntityNotFound(_0xec367d,null))[_0xd46e('0x25')](respondWithResult(_0xec367d,null))['catch'](handleError(_0xec367d,null));};exports[_0xd46e('0x48')]=function(_0x3ea9e6,_0x45baf1){return db[_0xd46e('0x2b')][_0xd46e('0x48')](_0x3ea9e6[_0xd46e('0x49')],{})[_0xd46e('0x25')](respondWithResult(_0x45baf1,0xc9))[_0xd46e('0x42')](handleError(_0x45baf1,null));};exports['update']=function(_0xf9dab,_0x71a8dc){if(_0xf9dab[_0xd46e('0x49')]['id']){delete _0xf9dab[_0xd46e('0x49')]['id'];}delete _0xf9dab[_0xd46e('0x49')]['duration'];delete _0xf9dab['body'][_0xd46e('0x4a')];delete _0xf9dab[_0xd46e('0x49')][_0xd46e('0x4b')];delete _0xf9dab['body']['value'];return db[_0xd46e('0x2b')][_0xd46e('0x47')]({'where':{'id':_0xf9dab['params']['id']}})[_0xd46e('0x25')](handleEntityNotFound(_0x71a8dc,null))[_0xd46e('0x25')](saveUpdates(_0xf9dab[_0xd46e('0x49')],null))[_0xd46e('0x25')](respondWithResult(_0x71a8dc,null))[_0xd46e('0x42')](handleError(_0x71a8dc,null));};exports[_0xd46e('0x4c')]=function(_0x80ed51,_0x16ca0e){return db['ScreenRecording'][_0xd46e('0x4c')]()[_0xd46e('0x25')](respondWithResult(_0x16ca0e,null))[_0xd46e('0x42')](handleError(_0x16ca0e,null));};exports[_0xd46e('0x4d')]=function(_0x4ec295,_0x56dd9a,_0xced102){var _0x5a4a44=require(_0xd46e('0x4e'));var _0x2af20b=![];var _0x393cb9={};if(_0x4ec295[_0xd46e('0x32')][_0xd46e('0x2e')]&&_0x4ec295[_0xd46e('0x32')]['type']===_0xd46e('0x4f')){_0x393cb9[_0xd46e('0x4f')]=_0x4ec295[_0xd46e('0x50')]['id'];}else{_0x393cb9['id']=_0x4ec295['params']['id'];}return db[_0xd46e('0x2b')][_0xd46e('0x47')]({'where':_0x393cb9,'attributes':['id',_0xd46e('0x51')],'raw':!![]})[_0xd46e('0x25')](handleEntityNotFound(_0x56dd9a,null))[_0xd46e('0x25')](function(_0x2cc676){if(_0x2cc676){var _0x2760ef=path[_0xd46e('0x52')](config[_0xd46e('0x53')],_0xd46e('0x54'),_0x2cc676[_0xd46e('0x51')]);var _0x411b19=util[_0xd46e('0x31')](_0xd46e('0x55'),_0x2760ef);if(fs['existsSync'](_0x411b19)){_0x2af20b=!![];return _0x5a4a44[_0xd46e('0x56')](_0x411b19,_0x2760ef,config[_0xd46e('0x57')][_0xd46e('0x58')])[_0xd46e('0x25')](function(){return _0x2cc676;});}return _0x2cc676;}})['then'](function(_0x636f15){if(_0x636f15){var _0x36e18a=path[_0xd46e('0x52')](config[_0xd46e('0x53')],'server/files/screen_recordings',_0x636f15[_0xd46e('0x51')]);if(!fs[_0xd46e('0x59')](_0x36e18a)){throw new db['Sequelize']['ValidationError'](_0xd46e('0x5a'));}if(_0x636f15[_0xd46e('0x5b')]){return _0x56dd9a[_0xd46e('0x4d')](_0x36e18a,_0x636f15['filename']+path['extname'](_0x36e18a),function(){if(_0x2af20b){fs[_0xd46e('0x5c')](_0x36e18a);}});}else{return _0x56dd9a[_0xd46e('0x4d')](_0x36e18a,function(_0x1f310d){if(_0x2af20b){fs[_0xd46e('0x5c')](_0x36e18a);}});}}})[_0xd46e('0x42')](function(_0x2f9fcb){if(_0x2f9fcb[_0xd46e('0x5d')]===_0xd46e('0x5a')){_0x56dd9a[_0xd46e('0x1b')](0x194)[_0xd46e('0x28')](_0xd46e('0x5e'));}else{return handleError(_0x56dd9a,null);}});};exports[_0xd46e('0x5f')]=function(_0x272514,_0x329204){return db[_0xd46e('0x2b')][_0xd46e('0x47')]({'where':{'id':_0x272514['params']['id']}})[_0xd46e('0x25')](function(_0x1a3771){if(_[_0xd46e('0x60')](_0x1a3771)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1a3771;})[_0xd46e('0x25')](function(_0x313c7e){var _0x4dec29=path[_0xd46e('0x52')](config[_0xd46e('0x53')],_0xd46e('0x54'),_0x313c7e['value']);logger[_0xd46e('0x61')](_0xd46e('0x62'),_0x4dec29);if(!_[_0xd46e('0x60')](_0x313c7e['value'])&&fs[_0xd46e('0x59')](_0x4dec29)){logger['info'](_0xd46e('0x63')+_0x4dec29+_0xd46e('0x64'));fs[_0xd46e('0x65')](_0x4dec29);}_0x4dec29=_0x4dec29+'.cypher';if(!_[_0xd46e('0x60')](_0x313c7e[_0xd46e('0x51')])&&fs[_0xd46e('0x59')](_0x4dec29)){logger[_0xd46e('0x61')](_0xd46e('0x63')+_0x4dec29+_0xd46e('0x64'));fs[_0xd46e('0x65')](_0x4dec29);}return _0x313c7e;})[_0xd46e('0x25')](function(_0x300ee9){if(!_0x300ee9)throw new InternalError();return _0x300ee9[_0xd46e('0x5f')]();})[_0xd46e('0x25')](function(){_0x329204[_0xd46e('0x1b')](0xcc)[_0xd46e('0x66')]();})[_0xd46e('0x42')](handleError(_0x329204,null));};
\ No newline at end of file
index dd062e4..f25db94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d6=['define','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x26ed29,_0x2288f1){var _0x26182c=function(_0x23dc71){while(--_0x23dc71){_0x26ed29['push'](_0x26ed29['shift']());}};_0x26182c(++_0x2288f1);}(_0xb9d6,0x183));var _0x6b9d=function(_0xfbceb4,_0x392f3b){_0xfbceb4=_0xfbceb4-0x0;var _0x563dbe=_0xb9d6[_0xfbceb4];return _0x563dbe;};'use strict';var _=require(_0x6b9d('0x0'));var util=require('util');var logger=require(_0x6b9d('0x1'))(_0x6b9d('0x2'));var moment=require(_0x6b9d('0x3'));var BPromise=require(_0x6b9d('0x4'));var rp=require(_0x6b9d('0x5'));var fs=require('fs');var path=require(_0x6b9d('0x6'));var rimraf=require(_0x6b9d('0x7'));var config=require(_0x6b9d('0x8'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x2c488c,_0x4b2a0c){return _0x2c488c[_0x6b9d('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x6b9d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d16=['ScreenRecording','screen_recordings','interactionid','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0x1d16,0x1b0));var _0x61d1=function(_0x2803ab,_0x1c33f2){_0x2803ab=_0x2803ab-0x0;var _0x3d6e8e=_0x1d16[_0x2803ab];return _0x3d6e8e;};'use strict';var _=require(_0x61d1('0x0'));var util=require(_0x61d1('0x1'));var logger=require('../../config/logger')(_0x61d1('0x2'));var moment=require(_0x61d1('0x3'));var BPromise=require(_0x61d1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x61d1('0x5'));var rimraf=require(_0x61d1('0x6'));var config=require(_0x61d1('0x7'));var attributes=require('./screenRecording.attributes');module[_0x61d1('0x8')]=function(_0x5d3fef,_0x7fed69){return _0x5d3fef[_0x61d1('0x9')](_0x61d1('0xa'),attributes,{'tableName':_0x61d1('0xb'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x61d1('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ef5702..1120d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe625=['info','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe625,0x136));var _0x5e62=function(_0x44eb2f,_0x519693){_0x44eb2f=_0x44eb2f-0x0;var _0x44aaaa=_0xe625[_0x44eb2f];return _0x44aaaa;};'use strict';var _=require(_0x5e62('0x0'));var util=require(_0x5e62('0x1'));var moment=require('moment');var BPromise=require(_0x5e62('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5e62('0x3'));var db=require(_0x5e62('0x4'))['db'];var utils=require(_0x5e62('0x5'));var logger=require(_0x5e62('0x6'))(_0x5e62('0x7'));var config=require(_0x5e62('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5e62('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfc1462,_0x50b92f,_0x33f63c){return new BPromise(function(_0x5a64d2,_0x5f0c11){return client['request'](_0xfc1462,_0x33f63c)['then'](function(_0x27ba33){logger[_0x5e62('0xa')]('ScreenRecording,\x20%s,\x20%s',_0x50b92f,_0x5e62('0xb'));logger[_0x5e62('0xc')](_0x5e62('0xd'),_0x50b92f,_0x5e62('0xb'),JSON[_0x5e62('0xe')](_0x27ba33));if(_0x27ba33[_0x5e62('0xf')]){if(_0x27ba33[_0x5e62('0xf')][_0x5e62('0x10')]===0x1f4){logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x27ba33[_0x5e62('0xf')]['message']);return _0x5f0c11(_0x27ba33['error']['message']);}logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x27ba33[_0x5e62('0xf')][_0x5e62('0x12')]);return _0x5a64d2(_0x27ba33['error'][_0x5e62('0x12')]);}else{logger[_0x5e62('0xa')](_0x5e62('0x11'),_0x50b92f,_0x5e62('0xb'));_0x5a64d2(_0x27ba33['result']['message']);}})[_0x5e62('0x13')](function(_0x37cd96){logger[_0x5e62('0xf')](_0x5e62('0x11'),_0x50b92f,_0x37cd96);_0x5f0c11(_0x37cd96);});});}
\ No newline at end of file
+var _0xe733=['request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s'];(function(_0x459a0a,_0x25c46f){var _0x4ab46c=function(_0x451a6a){while(--_0x451a6a){_0x459a0a['push'](_0x459a0a['shift']());}};_0x4ab46c(++_0x25c46f);}(_0xe733,0xa8));var _0x3e73=function(_0x20ad72,_0x3660c0){_0x20ad72=_0x20ad72-0x0;var _0x19d764=_0xe733[_0x20ad72];return _0x19d764;};'use strict';var _=require(_0x3e73('0x0'));var util=require('util');var moment=require(_0x3e73('0x1'));var BPromise=require(_0x3e73('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e73('0x3'))['db'];var utils=require(_0x3e73('0x4'));var logger=require(_0x3e73('0x5'))(_0x3e73('0x6'));var config=require(_0x3e73('0x7'));var jayson=require(_0x3e73('0x8'));var client=jayson[_0x3e73('0x9')][_0x3e73('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44d48b,_0x3d46db,_0x7fa9f5){return new BPromise(function(_0x19dab9,_0x4d2880){return client['request'](_0x44d48b,_0x7fa9f5)[_0x3e73('0xb')](function(_0x5a1f93){logger[_0x3e73('0xc')](_0x3e73('0xd'),_0x3d46db,'request\x20sent');logger[_0x3e73('0xe')](_0x3e73('0xf'),_0x3d46db,_0x3e73('0x10'),JSON[_0x3e73('0x11')](_0x5a1f93));if(_0x5a1f93[_0x3e73('0x12')]){if(_0x5a1f93['error'][_0x3e73('0x13')]===0x1f4){logger[_0x3e73('0x12')](_0x3e73('0xd'),_0x3d46db,_0x5a1f93[_0x3e73('0x12')][_0x3e73('0x14')]);return _0x4d2880(_0x5a1f93[_0x3e73('0x12')][_0x3e73('0x14')]);}logger[_0x3e73('0x12')](_0x3e73('0xd'),_0x3d46db,_0x5a1f93[_0x3e73('0x12')][_0x3e73('0x14')]);return _0x19dab9(_0x5a1f93[_0x3e73('0x12')]['message']);}else{logger['info'](_0x3e73('0xd'),_0x3d46db,_0x3e73('0x10'));_0x19dab9(_0x5a1f93[_0x3e73('0x15')][_0x3e73('0x14')]);}})[_0x3e73('0x16')](function(_0x3a38e3){logger[_0x3e73('0x12')](_0x3e73('0xd'),_0x3d46db,_0x3a38e3);_0x4d2880(_0x3a38e3);});});}
\ No newline at end of file
index 626dbb8..2fcd20d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8b=['%s%s','logo','extname','originalname','post','single','addLogo','diskStorage','join','root','server/files/images/logos/','logologin','addLogoLogin','file','addPreferred','/:id','update','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/now','getDate','show','/:id/logo','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','format'];(function(_0x146c0d,_0x59e930){var _0x2dab12=function(_0x3539ab){while(--_0x3539ab){_0x146c0d['push'](_0x146c0d['shift']());}};_0x2dab12(++_0x59e930);}(_0xbb8b,0x101));var _0xbbb8=function(_0x52883c,_0x274494){_0x52883c=_0x52883c-0x0;var _0x1e6ab1=_0xbb8b[_0x52883c];return _0x1e6ab1;};'use strict';var multer=require(_0xbbb8('0x0'));var util=require(_0xbbb8('0x1'));var path=require(_0xbbb8('0x2'));var timeout=require(_0xbbb8('0x3'));var express=require('express');var router=express[_0xbbb8('0x4')]();var fs_extra=require(_0xbbb8('0x5'));var auth=require(_0xbbb8('0x6'));var interaction=require(_0xbbb8('0x7'));var config=require(_0xbbb8('0x8'));var controller=require('./setting.controller');router[_0xbbb8('0x9')]('/',auth[_0xbbb8('0xa')](),controller['index']);router[_0xbbb8('0x9')](_0xbbb8('0xb'),controller[_0xbbb8('0xc')]);router[_0xbbb8('0x9')]('/:id',controller[_0xbbb8('0xd')]);router['get'](_0xbbb8('0xe'),controller['getLogo']);router[_0xbbb8('0x9')](_0xbbb8('0xf'),controller['getLogoLogin']);router[_0xbbb8('0x9')](_0xbbb8('0x10'),controller[_0xbbb8('0x11')]);router[_0xbbb8('0x9')](_0xbbb8('0x12'),controller[_0xbbb8('0x13')]);router[_0xbbb8('0x9')](_0xbbb8('0x14'),controller[_0xbbb8('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2cf666,_0x576af2,_0x52a22e){_0x52a22e(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0x1d07e8,_0x3d3a43,_0x1103c6){_0x1103c6(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),_0xbbb8('0x18'),path[_0xbbb8('0x19')](_0x3d3a43[_0xbbb8('0x1a')])));}})});router[_0xbbb8('0x1b')]('/:id/logo',upload[_0xbbb8('0x1c')]('file'),controller[_0xbbb8('0x1d')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x2a5d1d,_0x18eabf,_0x1811e1){_0x1811e1(null,path[_0xbbb8('0x1f')](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x104965,_0x780214,_0xc76632){_0xc76632(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),_0xbbb8('0x22'),path['extname'](_0x780214[_0xbbb8('0x1a')])));}})});router['post'](_0xbbb8('0xf'),upload['single']('file'),controller[_0xbbb8('0x23')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x3ef008,_0x5d2015,_0x1abdde){_0x1abdde(null,path[_0xbbb8('0x1f')](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x11e277,_0x468157,_0x4801a5){_0x4801a5(null,util[_0xbbb8('0x16')]('%s%s','preferred',path[_0xbbb8('0x19')](_0x468157[_0xbbb8('0x1a')])));}})});router['post'](_0xbbb8('0x12'),upload[_0xbbb8('0x1c')](_0xbbb8('0x24')),controller[_0xbbb8('0x25')]);var upload=multer({'storage':multer[_0xbbb8('0x1e')]({'destination':function(_0x4b10e0,_0x4db7d3,_0xf13bc7){_0xf13bc7(null,path['join'](config[_0xbbb8('0x20')],_0xbbb8('0x21')));},'filename':function(_0x16ca21,_0x37a0ad,_0x49cb4a){_0x49cb4a(null,util[_0xbbb8('0x16')](_0xbbb8('0x17'),'favicon',path[_0xbbb8('0x19')](_0x37a0ad['originalname'])));}})});router['post'](_0xbbb8('0x14'),upload[_0xbbb8('0x1c')](_0xbbb8('0x24')),controller['addFavicon']);router['put'](_0xbbb8('0x26'),auth[_0xbbb8('0xa')](),controller[_0xbbb8('0x27')]);module['exports']=router;
\ No newline at end of file
+var _0x44ec=['format','%s%s','logo','originalname','post','single','logologin','extname','file','addLogoLogin','addPreferred','favicon','put','/:id','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/'];(function(_0xe61544,_0x30b2d2){var _0x58cc3e=function(_0x4fa6c7){while(--_0x4fa6c7){_0xe61544['push'](_0xe61544['shift']());}};_0x58cc3e(++_0x30b2d2);}(_0x44ec,0x1b3));var _0xc44e=function(_0xa9f50a,_0x1d3836){_0xa9f50a=_0xa9f50a-0x0;var _0x48d268=_0x44ec[_0xa9f50a];return _0x48d268;};'use strict';var multer=require(_0xc44e('0x0'));var util=require(_0xc44e('0x1'));var path=require('path');var timeout=require(_0xc44e('0x2'));var express=require('express');var router=express[_0xc44e('0x3')]();var fs_extra=require(_0xc44e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc44e('0x5'));var config=require(_0xc44e('0x6'));var controller=require(_0xc44e('0x7'));router[_0xc44e('0x8')]('/',auth[_0xc44e('0x9')](),controller[_0xc44e('0xa')]);router[_0xc44e('0x8')](_0xc44e('0xb'),controller[_0xc44e('0xc')]);router[_0xc44e('0x8')]('/:id',controller['show']);router[_0xc44e('0x8')](_0xc44e('0xd'),controller[_0xc44e('0xe')]);router['get'](_0xc44e('0xf'),controller[_0xc44e('0x10')]);router[_0xc44e('0x8')](_0xc44e('0x11'),controller[_0xc44e('0x12')]);router[_0xc44e('0x8')](_0xc44e('0x13'),controller[_0xc44e('0x14')]);router[_0xc44e('0x8')](_0xc44e('0x15'),controller[_0xc44e('0x16')]);var upload=multer({'storage':multer[_0xc44e('0x17')]({'destination':function(_0x11c76e,_0xb9ffa8,_0x9832ad){_0x9832ad(null,path[_0xc44e('0x18')](config[_0xc44e('0x19')],_0xc44e('0x1a')));},'filename':function(_0x538cce,_0x54e2d6,_0xcbd9c6){_0xcbd9c6(null,util[_0xc44e('0x1b')](_0xc44e('0x1c'),_0xc44e('0x1d'),path['extname'](_0x54e2d6[_0xc44e('0x1e')])));}})});router[_0xc44e('0x1f')]('/:id/logo',upload[_0xc44e('0x20')]('file'),controller['addLogo']);var upload=multer({'storage':multer[_0xc44e('0x17')]({'destination':function(_0x32cb9f,_0x55fbbc,_0x321d3d){_0x321d3d(null,path[_0xc44e('0x18')](config[_0xc44e('0x19')],_0xc44e('0x1a')));},'filename':function(_0x98393b,_0x4eb3bb,_0x4f6377){_0x4f6377(null,util[_0xc44e('0x1b')](_0xc44e('0x1c'),_0xc44e('0x21'),path[_0xc44e('0x22')](_0x4eb3bb[_0xc44e('0x1e')])));}})});router[_0xc44e('0x1f')](_0xc44e('0xf'),upload[_0xc44e('0x20')](_0xc44e('0x23')),controller[_0xc44e('0x24')]);var upload=multer({'storage':multer[_0xc44e('0x17')]({'destination':function(_0x2a8048,_0x1c4f92,_0x51dd87){_0x51dd87(null,path[_0xc44e('0x18')](config[_0xc44e('0x19')],_0xc44e('0x1a')));},'filename':function(_0x4e6e96,_0x128bfb,_0x253935){_0x253935(null,util[_0xc44e('0x1b')](_0xc44e('0x1c'),'preferred',path['extname'](_0x128bfb[_0xc44e('0x1e')])));}})});router[_0xc44e('0x1f')](_0xc44e('0x13'),upload[_0xc44e('0x20')](_0xc44e('0x23')),controller[_0xc44e('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x40df7a,_0x4ac1f9,_0x529193){_0x529193(null,path[_0xc44e('0x18')](config[_0xc44e('0x19')],_0xc44e('0x1a')));},'filename':function(_0x4ffd50,_0x113481,_0x357fc9){_0x357fc9(null,util['format'](_0xc44e('0x1c'),_0xc44e('0x26'),path[_0xc44e('0x22')](_0x113481['originalname'])));}})});router[_0xc44e('0x1f')](_0xc44e('0x15'),upload['single'](_0xc44e('0x23')),controller['addFavicon']);router[_0xc44e('0x27')](_0xc44e('0x28'),auth[_0xc44e('0x9')](),controller['update']);module[_0xc44e('0x29')]=router;
\ No newline at end of file
index 2002bc0..a7849a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa12=['STRING','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports','min_internal','INTEGER','min_mailbox','/var/opt/motion2/server/files/sounds/converted'];(function(_0x12590d,_0x34ebf4){var _0x391759=function(_0x3e41d9){while(--_0x3e41d9){_0x12590d['push'](_0x12590d['shift']());}};_0x391759(++_0x34ebf4);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x4c8a29,_0x3602a3){_0x4c8a29=_0x4c8a29-0x0;var _0x5c1cd8=_0xfa12[_0x4c8a29];return _0x5c1cd8;};'use strict';var Sequelize=require(_0x2fa1('0x0'));module[_0x2fa1('0x1')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x2fa1('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x2fa1('0x3')](0xb),'unique':_0x2fa1('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x2fa1('0x3')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize['STRING'],'defaultValue':_0x2fa1('0x5')},'logo':{'type':Sequelize[_0x2fa1('0x6')]},'defaultLogo':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x2fa1('0x6')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x2fa1('0x6')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x2fa1('0x6')]},'turnaddr':{'type':Sequelize[_0x2fa1('0x6')]},'turnusername':{'type':Sequelize[_0x2fa1('0x6')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x2fa1('0x6')]},'defaultPageTitle':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x2fa1('0x3')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x2fa1('0x6')],'defaultValue':_0x2fa1('0x8')},'enableEmailPreview':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x2fa1('0x6')],'defaultValue':_0x2fa1('0x9')},'chatTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x2fa1('0x6')]},'defaultPreferred':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x2fa1('0x6')]},'allowedLoginAttempts':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x2fa1('0x6')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x2fa1('0x3')]},'transcribeRegion':{'type':Sequelize[_0x2fa1('0x6')]},'sentiment':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x2fa1('0x3')]},'sentimentRegion':{'type':Sequelize[_0x2fa1('0x6')]},'language':{'type':Sequelize[_0x2fa1('0x6')]},'bucket':{'type':Sequelize[_0x2fa1('0x6')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x2fa1('0x3')](0x2)[_0x2fa1('0xa')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x2fa1('0x3')](0x2)[_0x2fa1('0xa')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x2fa1('0x3')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x2fa1('0x3')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x2fa1('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7b65=['/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports','INTEGER','min_internal','min_mailbox','STRING'];(function(_0x5095fc,_0x9dd915){var _0x1d2d92=function(_0x121b6a){while(--_0x121b6a){_0x5095fc['push'](_0x5095fc['shift']());}};_0x1d2d92(++_0x9dd915);}(_0x7b65,0x73));var _0x57b6=function(_0x457330,_0x32a5ae){_0x457330=_0x457330-0x0;var _0x5435a3=_0x7b65[_0x457330];return _0x5435a3;};'use strict';var Sequelize=require(_0x57b6('0x0'));module[_0x57b6('0x1')]={'min_internal':{'type':Sequelize[_0x57b6('0x2')](0xb),'unique':_0x57b6('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x57b6('0x2')](0xb),'unique':_0x57b6('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x57b6('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x57b6('0x5')],'defaultValue':_0x57b6('0x6')},'logo':{'type':Sequelize[_0x57b6('0x5')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x57b6('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x57b6('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize['STRING']},'turnusername':{'type':Sequelize[_0x57b6('0x5')]},'turnpassword':{'type':Sequelize[_0x57b6('0x5')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x57b6('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x57b6('0x5')],'defaultValue':_0x57b6('0x8')},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x57b6('0x5')],'defaultValue':_0x57b6('0x9')},'chatTimeout':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x57b6('0x5')]},'defaultPreferred':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x57b6('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize['STRING']},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x57b6('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x57b6('0x5')]},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x57b6('0xa')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)[_0x57b6('0xa')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x57b6('0xa')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x57b6('0x2')](0x2)[_0x57b6('0xa')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x57b6('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x57b6('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 9787134..c632c50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6c1=['logo','server/files/images/logos','getLicense','preferred','defaultLogo','defaultLoginLogo','defaultFavicon','join','root','toLower','default_logo.svg','upperFirst','custom','existsSync','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','loginLogo','favicon','default','default_loginLogo.svg','gdpr','getPreferred','defaultPreferred','default_preferred.png','getFavicon','default_favicon.ico','getDate','now','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','options','Setting','findAll','rows','catch','show','params','length','include','merge','body','find','addLogo','file','filename'];(function(_0x2ebd2d,_0x1d0ffe){var _0x51757e=function(_0x23d19e){while(--_0x23d19e){_0x2ebd2d['push'](_0x2ebd2d['shift']());}};_0x51757e(++_0x1d0ffe);}(_0xf6c1,0x99));var _0x1f6c=function(_0x1e053a,_0x308c65){_0x1e053a=_0x1e053a-0x0;var _0x1a79f3=_0xf6c1[_0x1e053a];return _0x1a79f3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1f6c('0x0'));var jsonpatch=require(_0x1f6c('0x1'));var rp=require(_0x1f6c('0x2'));var moment=require('moment');var BPromise=require(_0x1f6c('0x3'));var Mustache=require('mustache');var util=require(_0x1f6c('0x4'));var path=require(_0x1f6c('0x5'));var sox=require(_0x1f6c('0x6'));var csv=require(_0x1f6c('0x7'));var ejs=require(_0x1f6c('0x8'));var fs=require('fs');var fs_extra=require(_0x1f6c('0x9'));var _=require('lodash');var squel=require(_0x1f6c('0xa'));var crypto=require(_0x1f6c('0xb'));var jsforce=require(_0x1f6c('0xc'));var deskjs=require(_0x1f6c('0xd'));var toCsv=require(_0x1f6c('0x7'));var querystring=require(_0x1f6c('0xe'));var Papa=require(_0x1f6c('0xf'));var Redis=require(_0x1f6c('0x10'));var authService=require(_0x1f6c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1f6c('0x12'))(_0x1f6c('0x13'));var utils=require(_0x1f6c('0x14'));var config=require(_0x1f6c('0x15'));var licenseUtil=require(_0x1f6c('0x16'));var db=require(_0x1f6c('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x1f6c('0x18')][_0x1f6c('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xafed6f,_0x3e461f,_0x103f5d,_0x1315b7){return new BPromise(function(_0x31fc67,_0x147c01){var _0x4ac9f5=_0x1315b7||client;return _0x4ac9f5[_0x1f6c('0x1a')](_0xafed6f,_0x103f5d)[_0x1f6c('0x1b')](function(_0x26652b){logger[_0x1f6c('0x1c')](_0x1f6c('0x1d'),_0x3e461f,_0x1f6c('0x1e'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x3e461f,_0x1f6c('0x1e'),JSON[_0x1f6c('0x1f')](_0x26652b));if(_0x26652b['error']){if(_0x26652b[_0x1f6c('0x20')]['code']===0x1f4){logger[_0x1f6c('0x20')](_0x1f6c('0x1d'),_0x3e461f,_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);return _0x147c01(_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);}logger[_0x1f6c('0x20')](_0x1f6c('0x1d'),_0x3e461f,_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);return _0x31fc67(_0x26652b[_0x1f6c('0x20')][_0x1f6c('0x21')]);}else{logger[_0x1f6c('0x1c')](_0x1f6c('0x1d'),_0x3e461f,_0x1f6c('0x1e'));_0x31fc67(_0x26652b['result'][_0x1f6c('0x21')]);}})['catch'](function(_0xd066b){logger[_0x1f6c('0x20')]('Setting,\x20%s,\x20%s',_0x3e461f,_0xd066b);_0x147c01(_0xd066b);});});}function respondWithStatusCode(_0x1aa1f6,_0x4ef92a){_0x4ef92a=_0x4ef92a||0xcc;return function(_0x32a812){if(_0x32a812){return _0x1aa1f6[_0x1f6c('0x22')](_0x4ef92a);}return _0x1aa1f6[_0x1f6c('0x23')](_0x4ef92a)[_0x1f6c('0x24')]();};}function respondWithResult(_0xc6b047,_0x386016){_0x386016=_0x386016||0xc8;return function(_0x8b998c){if(_0x8b998c){return _0xc6b047[_0x1f6c('0x23')](_0x386016)[_0x1f6c('0x25')](_0x8b998c);}};}function respondWithFilteredResult(_0x147385,_0x4ffb66){return function(_0xa16408){if(_0xa16408){var _0x3acae0=typeof _0x4ffb66[_0x1f6c('0x26')]==='undefined'&&typeof _0x4ffb66[_0x1f6c('0x27')]===_0x1f6c('0x28');var _0x2ce9df=_0xa16408[_0x1f6c('0x29')];var _0xeaeccd=_0x3acae0?0x0:_0x4ffb66[_0x1f6c('0x26')];var _0x51a230=_0x3acae0?_0xa16408[_0x1f6c('0x29')]:_0x4ffb66['offset']+_0x4ffb66[_0x1f6c('0x27')];var _0xcac8c0;if(_0x51a230>=_0x2ce9df){_0x51a230=_0x2ce9df;_0xcac8c0=0xc8;}else{_0xcac8c0=0xce;}_0x147385[_0x1f6c('0x23')](_0xcac8c0);return _0x147385[_0x1f6c('0x2a')](_0x1f6c('0x2b'),_0xeaeccd+'-'+_0x51a230+'/'+_0x2ce9df)['json'](_0xa16408);}return null;};}function patchUpdates(_0x7a927a){return function(_0x47db8b){try{jsonpatch['apply'](_0x47db8b,_0x7a927a,!![]);}catch(_0x1636bb){return BPromise[_0x1f6c('0x2c')](_0x1636bb);}return _0x47db8b[_0x1f6c('0x2d')]();};}function saveUpdates(_0x29ad8d,_0x4b6fb4){return function(_0x1dfb8a){if(_0x1dfb8a){return _0x1dfb8a[_0x1f6c('0x2e')](_0x29ad8d)[_0x1f6c('0x1b')](function(_0x19ee99){return _0x19ee99;});}return null;};}function removeEntity(_0x4322a6,_0x4d42e8){return function(_0x4edaa2){if(_0x4edaa2){return _0x4edaa2[_0x1f6c('0x2f')]()[_0x1f6c('0x1b')](function(){_0x4322a6[_0x1f6c('0x23')](0xcc)[_0x1f6c('0x24')]();});}};}function handleEntityNotFound(_0x59a66f,_0x475894){return function(_0x481112){if(!_0x481112){_0x59a66f['sendStatus'](0x194);}return _0x481112;};}function handleError(_0x17c112,_0x7548ea){_0x7548ea=_0x7548ea||0x1f4;return function(_0x12784d){logger[_0x1f6c('0x20')](_0x12784d[_0x1f6c('0x30')]);if(_0x12784d[_0x1f6c('0x31')]){delete _0x12784d[_0x1f6c('0x31')];}_0x17c112[_0x1f6c('0x23')](_0x7548ea)[_0x1f6c('0x32')](_0x12784d);};}exports[_0x1f6c('0x33')]=function(_0x421869,_0x16a526){var _0x16e207={},_0x2fc1c6={},_0x30b8f9={'count':0x0,'rows':[]};var _0x345c48=_[_0x1f6c('0x34')](db['Setting'][_0x1f6c('0x35')],function(_0x4803f2){return{'name':_0x4803f2[_0x1f6c('0x36')],'type':_0x4803f2[_0x1f6c('0x37')][_0x1f6c('0x38')]};});_0x2fc1c6['model']=_['map'](_0x345c48,_0x1f6c('0x31'));_0x2fc1c6[_0x1f6c('0x39')]=_[_0x1f6c('0x3a')](_0x421869[_0x1f6c('0x39')]);_0x2fc1c6[_0x1f6c('0x3b')]=_[_0x1f6c('0x3c')](_0x2fc1c6['model'],_0x2fc1c6[_0x1f6c('0x39')]);_0x16e207[_0x1f6c('0x3d')]=_[_0x1f6c('0x3c')](_0x2fc1c6[_0x1f6c('0x3e')],qs[_0x1f6c('0x3f')](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x3f')]));_0x16e207[_0x1f6c('0x3d')]=_0x16e207['attributes']['length']?_0x16e207[_0x1f6c('0x3d')]:_0x2fc1c6['model'];if(!_0x421869['query'][_0x1f6c('0x40')](_0x1f6c('0x41'))){_0x16e207[_0x1f6c('0x27')]=qs[_0x1f6c('0x27')](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x27')]);_0x16e207[_0x1f6c('0x26')]=qs[_0x1f6c('0x26')](_0x421869['query'][_0x1f6c('0x26')]);}_0x16e207['order']=qs['sort'](_0x421869[_0x1f6c('0x39')][_0x1f6c('0x42')]);_0x16e207[_0x1f6c('0x43')]=qs['filters'](_[_0x1f6c('0x44')](_0x421869[_0x1f6c('0x39')],_0x2fc1c6[_0x1f6c('0x3b')]),_0x345c48);if(_0x421869[_0x1f6c('0x39')]['filter']){_0x16e207[_0x1f6c('0x43')]=_['merge'](_0x16e207[_0x1f6c('0x43')],{'$or':_[_0x1f6c('0x34')](_0x345c48,function(_0x494ab3){if(_0x494ab3[_0x1f6c('0x37')]!=='VIRTUAL'){var _0x533f21={};_0x533f21[_0x494ab3[_0x1f6c('0x31')]]={'$like':'%'+_0x421869['query'][_0x1f6c('0x45')]+'%'};return _0x533f21;}})});}_0x16e207=_['merge']({},_0x16e207,_0x421869[_0x1f6c('0x46')]);var _0x432876={'where':_0x16e207[_0x1f6c('0x43')]};return db['Setting'][_0x1f6c('0x29')](_0x432876)[_0x1f6c('0x1b')](function(_0x74b7a5){_0x30b8f9['count']=_0x74b7a5;if(_0x421869['query']['includeAll']){_0x16e207['include']=[{'all':!![]}];}return db[_0x1f6c('0x47')][_0x1f6c('0x48')](_0x16e207);})['then'](function(_0x4e0538){_0x30b8f9[_0x1f6c('0x49')]=_0x4e0538;return _0x30b8f9;})[_0x1f6c('0x1b')](respondWithFilteredResult(_0x16a526,_0x16e207))[_0x1f6c('0x4a')](handleError(_0x16a526,null));};exports[_0x1f6c('0x4b')]=function(_0x2a6f3,_0x4153c8){var _0x508fdb={'raw':![],'where':{'id':_0x2a6f3[_0x1f6c('0x4c')]['id']}},_0x303c50={};_0x303c50['model']=_[_0x1f6c('0x3a')](db[_0x1f6c('0x47')]['rawAttributes']);_0x303c50[_0x1f6c('0x39')]=_['keys'](_0x2a6f3[_0x1f6c('0x39')]);_0x303c50[_0x1f6c('0x3b')]=_[_0x1f6c('0x3c')](_0x303c50['model'],_0x303c50[_0x1f6c('0x39')]);_0x508fdb[_0x1f6c('0x3d')]=_['intersection'](_0x303c50[_0x1f6c('0x3e')],qs['fields'](_0x2a6f3[_0x1f6c('0x39')][_0x1f6c('0x3f')]));_0x508fdb[_0x1f6c('0x3d')]=_0x508fdb['attributes'][_0x1f6c('0x4d')]?_0x508fdb[_0x1f6c('0x3d')]:_0x303c50['model'];if(_0x2a6f3[_0x1f6c('0x39')]['includeAll']){_0x508fdb[_0x1f6c('0x4e')]=[{'all':!![]}];}_0x508fdb=_[_0x1f6c('0x4f')]({},_0x508fdb,_0x2a6f3[_0x1f6c('0x46')]);return db[_0x1f6c('0x47')]['find'](_0x508fdb)['then'](handleEntityNotFound(_0x4153c8,null))['then'](respondWithResult(_0x4153c8,null))[_0x1f6c('0x4a')](handleError(_0x4153c8,null));};exports[_0x1f6c('0x2e')]=function(_0x335974,_0x1c9f84){if(_0x335974[_0x1f6c('0x50')]['id']){delete _0x335974[_0x1f6c('0x50')]['id'];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x335974[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x1c9f84,null))[_0x1f6c('0x1b')](saveUpdates(_0x335974[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x1c9f84,null))[_0x1f6c('0x4a')](handleError(_0x1c9f84,null));};exports[_0x1f6c('0x52')]=function(_0x38a288,_0x26c7ed,_0xdc959a){if(_0x38a288[_0x1f6c('0x53')]&&_0x38a288['file'][_0x1f6c('0x54')]){_0x38a288['body'][_0x1f6c('0x55')]=_0x38a288[_0x1f6c('0x53')]['filename'];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x38a288[_0x1f6c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x26c7ed,null))[_0x1f6c('0x1b')](saveUpdates(_0x38a288[_0x1f6c('0x50')],null))['then'](respondWithResult(_0x26c7ed,null))['catch'](handleError(_0x26c7ed,null));};exports['addLogoLogin']=function(_0x9955de,_0x53a8b2,_0x3d980d){if(_0x9955de[_0x1f6c('0x53')]&&_0x9955de[_0x1f6c('0x53')][_0x1f6c('0x54')]){_0x9955de[_0x1f6c('0x50')]['loginLogo']=_0x9955de[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x9955de[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x53a8b2,null))[_0x1f6c('0x1b')](saveUpdates(_0x9955de[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x53a8b2,null))[_0x1f6c('0x4a')](handleError(_0x53a8b2,null));};var utilLicense=require(_0x1f6c('0x16'));exports['getLogo']=function(_0x1129bf,_0x5138cf,_0x249360){var _0x85a301=_0x1f6c('0x56');var _0x78ab61={'custom':![]};return utilLicense[_0x1f6c('0x57')]()['then'](function(_0x2e49d3){if(_0x2e49d3){_0x78ab61=_0x2e49d3;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x1129bf[_0x1f6c('0x4c')]['id']},'attributes':['logo','loginLogo',_0x1f6c('0x58'),'favicon',_0x1f6c('0x59'),_0x1f6c('0x5a'),'defaultPreferred',_0x1f6c('0x5b')],'raw':!![]});})['then'](handleEntityNotFound(_0x5138cf,null))['then'](function(_0x35df89){if(_0x35df89){var _0x416674=_0x35df89['logo']&&fs['existsSync'](path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x35df89['logo'])))?path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x35df89[_0x1f6c('0x55')])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')](_0x1f6c('0x5f')));var _0x115bee='default'+_[_0x1f6c('0x60')](_0x1f6c('0x55'));if(_0x35df89[_0x115bee]||!_0x78ab61[_0x1f6c('0x61')]){_0x416674=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x85a301,_[_0x1f6c('0x5e')]('default_logo.svg'));}if(!fs[_0x1f6c('0x62')](_0x416674)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x55'))+_0x1f6c('0x65'));}return _0x5138cf[_0x1f6c('0x66')](_0x416674);}})[_0x1f6c('0x4a')](handleError(_0x5138cf,null));};var utilLicense=require(_0x1f6c('0x16'));exports[_0x1f6c('0x67')]=function(_0x4247e9,_0x5a378b,_0x403014){var _0x3e2eb9='server/files/images/logos';var _0x4cc1f1={'custom':![]};return utilLicense[_0x1f6c('0x57')]()[_0x1f6c('0x1b')](function(_0x2f5556){if(_0x2f5556){_0x4cc1f1=_0x2f5556;}return db[_0x1f6c('0x47')]['find']({'where':{'id':_0x4247e9[_0x1f6c('0x4c')]['id']},'attributes':['logo',_0x1f6c('0x68'),_0x1f6c('0x58'),_0x1f6c('0x69'),_0x1f6c('0x59'),_0x1f6c('0x5a'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x1f6c('0x1b')](handleEntityNotFound(_0x5a378b,null))[_0x1f6c('0x1b')](function(_0x508e26){if(_0x508e26){var _0x3ba729=_0x508e26[_0x1f6c('0x68')]&&fs['existsSync'](path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x508e26[_0x1f6c('0x68')])))?path[_0x1f6c('0x5c')](config['root'],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x508e26[_0x1f6c('0x68')])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')]('default_loginLogo.svg'));var _0x45216a=_0x1f6c('0x6a')+_[_0x1f6c('0x60')]('loginLogo');if(_0x508e26[_0x45216a]||!_0x4cc1f1[_0x1f6c('0x61')]){_0x3ba729=path['join'](config[_0x1f6c('0x5d')],_0x3e2eb9,_[_0x1f6c('0x5e')](_0x1f6c('0x6b')));}if(!fs['existsSync'](_0x3ba729)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x68'))+_0x1f6c('0x65'));}return _0x5a378b[_0x1f6c('0x66')](_0x3ba729);}})[_0x1f6c('0x4a')](handleError(_0x5a378b,null));};exports[_0x1f6c('0x6c')]=function(_0x5beb7a,_0x326dc1){return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x5beb7a[_0x1f6c('0x4c')]['id']},'attributes':['securePassword']})['then'](respondWithResult(_0x326dc1,null))[_0x1f6c('0x4a')](handleError(_0x326dc1,null));};exports['addPreferred']=function(_0x43799e,_0x3baaa1,_0x205108){if(_0x43799e[_0x1f6c('0x53')]&&_0x43799e[_0x1f6c('0x53')][_0x1f6c('0x54')]){_0x43799e['body']['preferred']=_0x43799e[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x43799e['params']['id']}})['then'](handleEntityNotFound(_0x3baaa1,null))['then'](saveUpdates(_0x43799e[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x3baaa1,null))[_0x1f6c('0x4a')](handleError(_0x3baaa1,null));};var utilLicense=require('../../config/license/util');exports[_0x1f6c('0x6d')]=function(_0x504505,_0x16fccc,_0x12490f){var _0x5736fe=_0x1f6c('0x56');var _0x383857={'custom':![]};return utilLicense['getLicense']()[_0x1f6c('0x1b')](function(_0x758d74){if(_0x758d74){_0x383857=_0x758d74;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x504505[_0x1f6c('0x4c')]['id']},'attributes':[_0x1f6c('0x55'),'loginLogo',_0x1f6c('0x58'),_0x1f6c('0x69'),_0x1f6c('0x59'),'defaultLoginLogo',_0x1f6c('0x6e'),'defaultFavicon'],'raw':!![]});})[_0x1f6c('0x1b')](handleEntityNotFound(_0x16fccc,null))[_0x1f6c('0x1b')](function(_0x4b1ee2){if(_0x4b1ee2){var _0x30eb35=_0x4b1ee2[_0x1f6c('0x58')]&&fs[_0x1f6c('0x62')](path['join'](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x4b1ee2[_0x1f6c('0x58')])))?path[_0x1f6c('0x5c')](config['root'],_0x5736fe,_[_0x1f6c('0x5e')](_0x4b1ee2['preferred'])):path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x1f6c('0x6f')));var _0x5c0c40=_0x1f6c('0x6a')+_['upperFirst'](_0x1f6c('0x58'));if(_0x4b1ee2[_0x5c0c40]||!_0x383857['custom']||!_0x383857['preferred']){_0x30eb35=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x5736fe,_[_0x1f6c('0x5e')](_0x1f6c('0x6f')));}if(!fs[_0x1f6c('0x62')](_0x30eb35)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')](_0x1f6c('0x58'))+_0x1f6c('0x65'));}return _0x16fccc[_0x1f6c('0x66')](_0x30eb35);}})['catch'](handleError(_0x16fccc,null));};exports['addFavicon']=function(_0x354ed7,_0x85c8a7,_0x53283b){if(_0x354ed7[_0x1f6c('0x53')]&&_0x354ed7[_0x1f6c('0x53')]['filename']){_0x354ed7['body'][_0x1f6c('0x69')]=_0x354ed7[_0x1f6c('0x53')][_0x1f6c('0x54')];}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x354ed7[_0x1f6c('0x4c')]['id']}})[_0x1f6c('0x1b')](handleEntityNotFound(_0x85c8a7,null))[_0x1f6c('0x1b')](saveUpdates(_0x354ed7[_0x1f6c('0x50')],null))[_0x1f6c('0x1b')](respondWithResult(_0x85c8a7,null))['catch'](handleError(_0x85c8a7,null));};var utilLicense=require(_0x1f6c('0x16'));exports[_0x1f6c('0x70')]=function(_0x480305,_0xf8974a,_0x3148f5){var _0x152276=_0x1f6c('0x56');var _0x58396c={'custom':![]};return utilLicense[_0x1f6c('0x57')]()[_0x1f6c('0x1b')](function(_0x340dbe){if(_0x340dbe){_0x58396c=_0x340dbe;}return db[_0x1f6c('0x47')][_0x1f6c('0x51')]({'where':{'id':_0x480305[_0x1f6c('0x4c')]['id']},'attributes':['logo',_0x1f6c('0x68'),_0x1f6c('0x58'),'favicon',_0x1f6c('0x59'),'defaultLoginLogo','defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0xf8974a,null))[_0x1f6c('0x1b')](function(_0x328549){if(_0x328549){var _0x5096cd=_0x328549[_0x1f6c('0x69')]&&fs['existsSync'](path['join'](config['root'],_0x152276,_['toLower'](_0x328549[_0x1f6c('0x69')])))?path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x152276,_[_0x1f6c('0x5e')](_0x328549['favicon'])):path[_0x1f6c('0x5c')](config['root'],_0x152276,_[_0x1f6c('0x5e')](_0x1f6c('0x71')));var _0x542000=_0x1f6c('0x6a')+_[_0x1f6c('0x60')]('favicon');if(_0x328549[_0x542000]||!_0x58396c[_0x1f6c('0x61')]){_0x5096cd=path[_0x1f6c('0x5c')](config[_0x1f6c('0x5d')],_0x152276,_[_0x1f6c('0x5e')](_0x1f6c('0x71')));}if(!fs[_0x1f6c('0x62')](_0x5096cd)){throw new db[(_0x1f6c('0x63'))][(_0x1f6c('0x64'))](_[_0x1f6c('0x60')]('favicon')+_0x1f6c('0x65'));}return _0xf8974a[_0x1f6c('0x66')](_0x5096cd);}})[_0x1f6c('0x4a')](handleError(_0xf8974a,null));};exports[_0x1f6c('0x72')]=function(_0x1d551c,_0x5d77a8){var _0x494149={'offset':moment()['utcOffset']()};_0x494149[_0x1f6c('0x73')]=moment()[_0x1f6c('0x74')](_0x494149['offset'])[_0x1f6c('0x75')](_0x1f6c('0x76'));return _0x5d77a8[_0x1f6c('0x23')](0xc8)[_0x1f6c('0x32')](_0x494149);};
\ No newline at end of file
+var _0xf12f=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','update','body','file','filename','logo','addLogoLogin','getLogo','server/files/images/logos','getLicense','loginLogo','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','Sequelize','ValidationError','upperFirst','\x20not\x20found','download','getLogoLogin','preferred','default_loginLogo.svg','default','gdpr','securePassword','addPreferred','default_preferred.png','custom','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','stack','name','send','index','map','Setting','rawAttributes','fieldName','key','model'];(function(_0x4d32e9,_0x390d44){var _0x2d9ece=function(_0xabbd89){while(--_0xabbd89){_0x4d32e9['push'](_0x4d32e9['shift']());}};_0x2d9ece(++_0x390d44);}(_0xf12f,0x1bb));var _0xff12=function(_0x3dccf0,_0xf91485){_0x3dccf0=_0x3dccf0-0x0;var _0x4b22f6=_0xf12f[_0x3dccf0];return _0x4b22f6;};'use strict';var emlformat=require(_0xff12('0x0'));var rimraf=require(_0xff12('0x1'));var zipdir=require(_0xff12('0x2'));var jsonpatch=require(_0xff12('0x3'));var rp=require(_0xff12('0x4'));var moment=require(_0xff12('0x5'));var BPromise=require(_0xff12('0x6'));var Mustache=require(_0xff12('0x7'));var util=require(_0xff12('0x8'));var path=require('path');var sox=require(_0xff12('0x9'));var csv=require('to-csv');var ejs=require(_0xff12('0xa'));var fs=require('fs');var fs_extra=require(_0xff12('0xb'));var _=require(_0xff12('0xc'));var squel=require(_0xff12('0xd'));var crypto=require(_0xff12('0xe'));var jsforce=require(_0xff12('0xf'));var deskjs=require(_0xff12('0x10'));var toCsv=require('to-csv');var querystring=require(_0xff12('0x11'));var Papa=require(_0xff12('0x12'));var Redis=require(_0xff12('0x13'));var authService=require(_0xff12('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xff12('0x15'));var hardwareService=require(_0xff12('0x16'));var logger=require(_0xff12('0x17'))(_0xff12('0x18'));var utils=require(_0xff12('0x19'));var config=require(_0xff12('0x1a'));var licenseUtil=require(_0xff12('0x1b'));var db=require('../../mysqldb')['db'];var jayson=require(_0xff12('0x1c'));var client=jayson[_0xff12('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59906b,_0x55a387,_0x11735e,_0x15a265){return new BPromise(function(_0x3cd2e9,_0x41c94c){var _0x28f19a=_0x15a265||client;return _0x28f19a['request'](_0x59906b,_0x11735e)['then'](function(_0x12e003){logger['info'](_0xff12('0x1e'),_0x55a387,'request\x20sent');logger[_0xff12('0x1f')](_0xff12('0x20'),_0x55a387,'request\x20sent',JSON[_0xff12('0x21')](_0x12e003));if(_0x12e003['error']){if(_0x12e003[_0xff12('0x22')]['code']===0x1f4){logger[_0xff12('0x22')](_0xff12('0x1e'),_0x55a387,_0x12e003[_0xff12('0x22')][_0xff12('0x23')]);return _0x41c94c(_0x12e003['error'][_0xff12('0x23')]);}logger[_0xff12('0x22')](_0xff12('0x1e'),_0x55a387,_0x12e003[_0xff12('0x22')][_0xff12('0x23')]);return _0x3cd2e9(_0x12e003[_0xff12('0x22')][_0xff12('0x23')]);}else{logger[_0xff12('0x24')](_0xff12('0x1e'),_0x55a387,_0xff12('0x25'));_0x3cd2e9(_0x12e003['result']['message']);}})[_0xff12('0x26')](function(_0x53b744){logger['error'](_0xff12('0x1e'),_0x55a387,_0x53b744);_0x41c94c(_0x53b744);});});}function respondWithStatusCode(_0x2c6851,_0x17ed5a){_0x17ed5a=_0x17ed5a||0xcc;return function(_0x1ac558){if(_0x1ac558){return _0x2c6851[_0xff12('0x27')](_0x17ed5a);}return _0x2c6851[_0xff12('0x28')](_0x17ed5a)['end']();};}function respondWithResult(_0x42e9a8,_0x4b8ec8){_0x4b8ec8=_0x4b8ec8||0xc8;return function(_0x119475){if(_0x119475){return _0x42e9a8[_0xff12('0x28')](_0x4b8ec8)[_0xff12('0x29')](_0x119475);}};}function respondWithFilteredResult(_0x2cb008,_0x432b7e){return function(_0x3bfde5){if(_0x3bfde5){var _0x106f25=typeof _0x432b7e[_0xff12('0x2a')]===_0xff12('0x2b')&&typeof _0x432b7e[_0xff12('0x2c')]===_0xff12('0x2b');var _0x7ce727=_0x3bfde5['count'];var _0x39096a=_0x106f25?0x0:_0x432b7e[_0xff12('0x2a')];var _0x6b77db=_0x106f25?_0x3bfde5[_0xff12('0x2d')]:_0x432b7e['offset']+_0x432b7e[_0xff12('0x2c')];var _0x115131;if(_0x6b77db>=_0x7ce727){_0x6b77db=_0x7ce727;_0x115131=0xc8;}else{_0x115131=0xce;}_0x2cb008['status'](_0x115131);return _0x2cb008[_0xff12('0x2e')](_0xff12('0x2f'),_0x39096a+'-'+_0x6b77db+'/'+_0x7ce727)[_0xff12('0x29')](_0x3bfde5);}return null;};}function patchUpdates(_0x32ed86){return function(_0x557a96){try{jsonpatch[_0xff12('0x30')](_0x557a96,_0x32ed86,!![]);}catch(_0x75d65d){return BPromise['reject'](_0x75d65d);}return _0x557a96[_0xff12('0x31')]();};}function saveUpdates(_0x246ea4,_0x5e3319){return function(_0x39b127){if(_0x39b127){return _0x39b127['update'](_0x246ea4)[_0xff12('0x32')](function(_0xa16b85){return _0xa16b85;});}return null;};}function removeEntity(_0x400a08,_0x27afab){return function(_0x2094a6){if(_0x2094a6){return _0x2094a6['destroy']()['then'](function(){_0x400a08[_0xff12('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ed141,_0x3221c2){return function(_0x32243e){if(!_0x32243e){_0x2ed141[_0xff12('0x27')](0x194);}return _0x32243e;};}function handleError(_0x11bd41,_0x31aeb8){_0x31aeb8=_0x31aeb8||0x1f4;return function(_0x1ed86e){logger['error'](_0x1ed86e[_0xff12('0x33')]);if(_0x1ed86e[_0xff12('0x34')]){delete _0x1ed86e['name'];}_0x11bd41[_0xff12('0x28')](_0x31aeb8)[_0xff12('0x35')](_0x1ed86e);};}exports[_0xff12('0x36')]=function(_0x3a6c0e,_0x37f17b){var _0x1d70cf={},_0x34bc15={},_0x43e523={'count':0x0,'rows':[]};var _0x35590d=_[_0xff12('0x37')](db[_0xff12('0x38')][_0xff12('0x39')],function(_0x16f56f){return{'name':_0x16f56f[_0xff12('0x3a')],'type':_0x16f56f['type'][_0xff12('0x3b')]};});_0x34bc15[_0xff12('0x3c')]=_[_0xff12('0x37')](_0x35590d,'name');_0x34bc15[_0xff12('0x3d')]=_[_0xff12('0x3e')](_0x3a6c0e[_0xff12('0x3d')]);_0x34bc15[_0xff12('0x3f')]=_[_0xff12('0x40')](_0x34bc15[_0xff12('0x3c')],_0x34bc15[_0xff12('0x3d')]);_0x1d70cf[_0xff12('0x41')]=_[_0xff12('0x40')](_0x34bc15[_0xff12('0x3c')],qs[_0xff12('0x42')](_0x3a6c0e[_0xff12('0x3d')][_0xff12('0x42')]));_0x1d70cf['attributes']=_0x1d70cf[_0xff12('0x41')][_0xff12('0x43')]?_0x1d70cf[_0xff12('0x41')]:_0x34bc15[_0xff12('0x3c')];if(!_0x3a6c0e[_0xff12('0x3d')][_0xff12('0x44')](_0xff12('0x45'))){_0x1d70cf[_0xff12('0x2c')]=qs['limit'](_0x3a6c0e[_0xff12('0x3d')]['limit']);_0x1d70cf[_0xff12('0x2a')]=qs[_0xff12('0x2a')](_0x3a6c0e['query'][_0xff12('0x2a')]);}_0x1d70cf[_0xff12('0x46')]=qs['sort'](_0x3a6c0e[_0xff12('0x3d')]['sort']);_0x1d70cf[_0xff12('0x47')]=qs[_0xff12('0x3f')](_[_0xff12('0x48')](_0x3a6c0e[_0xff12('0x3d')],_0x34bc15[_0xff12('0x3f')]),_0x35590d);if(_0x3a6c0e['query']['filter']){_0x1d70cf[_0xff12('0x47')]=_[_0xff12('0x49')](_0x1d70cf[_0xff12('0x47')],{'$or':_['map'](_0x35590d,function(_0x90e203){if(_0x90e203['type']!==_0xff12('0x4a')){var _0x52ed41={};_0x52ed41[_0x90e203['name']]={'$like':'%'+_0x3a6c0e[_0xff12('0x3d')][_0xff12('0x4b')]+'%'};return _0x52ed41;}})});}_0x1d70cf=_[_0xff12('0x49')]({},_0x1d70cf,_0x3a6c0e[_0xff12('0x4c')]);var _0x41bf44={'where':_0x1d70cf[_0xff12('0x47')]};return db[_0xff12('0x38')][_0xff12('0x2d')](_0x41bf44)['then'](function(_0xaf4db5){_0x43e523[_0xff12('0x2d')]=_0xaf4db5;if(_0x3a6c0e[_0xff12('0x3d')][_0xff12('0x4d')]){_0x1d70cf[_0xff12('0x4e')]=[{'all':!![]}];}return db[_0xff12('0x38')][_0xff12('0x4f')](_0x1d70cf);})['then'](function(_0x33b608){_0x43e523[_0xff12('0x50')]=_0x33b608;return _0x43e523;})[_0xff12('0x32')](respondWithFilteredResult(_0x37f17b,_0x1d70cf))['catch'](handleError(_0x37f17b,null));};exports[_0xff12('0x51')]=function(_0x4a9929,_0x5ca94c){var _0x52d1bf={'raw':![],'where':{'id':_0x4a9929[_0xff12('0x52')]['id']}},_0x11ddc5={};_0x11ddc5[_0xff12('0x3c')]=_['keys'](db[_0xff12('0x38')][_0xff12('0x39')]);_0x11ddc5[_0xff12('0x3d')]=_[_0xff12('0x3e')](_0x4a9929[_0xff12('0x3d')]);_0x11ddc5[_0xff12('0x3f')]=_[_0xff12('0x40')](_0x11ddc5[_0xff12('0x3c')],_0x11ddc5[_0xff12('0x3d')]);_0x52d1bf['attributes']=_['intersection'](_0x11ddc5['model'],qs[_0xff12('0x42')](_0x4a9929[_0xff12('0x3d')]['fields']));_0x52d1bf[_0xff12('0x41')]=_0x52d1bf[_0xff12('0x41')][_0xff12('0x43')]?_0x52d1bf[_0xff12('0x41')]:_0x11ddc5[_0xff12('0x3c')];if(_0x4a9929[_0xff12('0x3d')][_0xff12('0x4d')]){_0x52d1bf['include']=[{'all':!![]}];}_0x52d1bf=_['merge']({},_0x52d1bf,_0x4a9929[_0xff12('0x4c')]);return db[_0xff12('0x38')][_0xff12('0x53')](_0x52d1bf)['then'](handleEntityNotFound(_0x5ca94c,null))[_0xff12('0x32')](respondWithResult(_0x5ca94c,null))['catch'](handleError(_0x5ca94c,null));};exports[_0xff12('0x54')]=function(_0x2e549c,_0x4c8312){if(_0x2e549c[_0xff12('0x55')]['id']){delete _0x2e549c[_0xff12('0x55')]['id'];}return db['Setting'][_0xff12('0x53')]({'where':{'id':_0x2e549c['params']['id']}})[_0xff12('0x32')](handleEntityNotFound(_0x4c8312,null))['then'](saveUpdates(_0x2e549c[_0xff12('0x55')],null))[_0xff12('0x32')](respondWithResult(_0x4c8312,null))['catch'](handleError(_0x4c8312,null));};exports['addLogo']=function(_0x4156bc,_0x5a265f,_0x1c5bb9){if(_0x4156bc[_0xff12('0x56')]&&_0x4156bc[_0xff12('0x56')][_0xff12('0x57')]){_0x4156bc[_0xff12('0x55')][_0xff12('0x58')]=_0x4156bc[_0xff12('0x56')][_0xff12('0x57')];}return db['Setting']['find']({'where':{'id':_0x4156bc[_0xff12('0x52')]['id']}})[_0xff12('0x32')](handleEntityNotFound(_0x5a265f,null))[_0xff12('0x32')](saveUpdates(_0x4156bc[_0xff12('0x55')],null))['then'](respondWithResult(_0x5a265f,null))['catch'](handleError(_0x5a265f,null));};exports[_0xff12('0x59')]=function(_0x5a7cef,_0x14a719,_0x30b1db){if(_0x5a7cef[_0xff12('0x56')]&&_0x5a7cef[_0xff12('0x56')][_0xff12('0x57')]){_0x5a7cef[_0xff12('0x55')]['loginLogo']=_0x5a7cef[_0xff12('0x56')]['filename'];}return db[_0xff12('0x38')][_0xff12('0x53')]({'where':{'id':_0x5a7cef[_0xff12('0x52')]['id']}})[_0xff12('0x32')](handleEntityNotFound(_0x14a719,null))[_0xff12('0x32')](saveUpdates(_0x5a7cef[_0xff12('0x55')],null))[_0xff12('0x32')](respondWithResult(_0x14a719,null))['catch'](handleError(_0x14a719,null));};var utilLicense=require(_0xff12('0x1b'));exports[_0xff12('0x5a')]=function(_0x38ed97,_0x31679f,_0x1b2966){var _0x4ffc6c=_0xff12('0x5b');var _0x1c70bd={'custom':![]};return utilLicense[_0xff12('0x5c')]()['then'](function(_0x113f13){if(_0x113f13){_0x1c70bd=_0x113f13;}return db[_0xff12('0x38')][_0xff12('0x53')]({'where':{'id':_0x38ed97['params']['id']},'attributes':[_0xff12('0x58'),_0xff12('0x5d'),'preferred',_0xff12('0x5e'),_0xff12('0x5f'),_0xff12('0x60'),_0xff12('0x61'),_0xff12('0x62')],'raw':!![]});})[_0xff12('0x32')](handleEntityNotFound(_0x31679f,null))[_0xff12('0x32')](function(_0x35f75b){if(_0x35f75b){var _0xe02cf9=_0x35f75b[_0xff12('0x58')]&&fs[_0xff12('0x63')](path['join'](config[_0xff12('0x64')],_0x4ffc6c,_[_0xff12('0x65')](_0x35f75b['logo'])))?path[_0xff12('0x66')](config[_0xff12('0x64')],_0x4ffc6c,_[_0xff12('0x65')](_0x35f75b[_0xff12('0x58')])):path[_0xff12('0x66')](config['root'],_0x4ffc6c,_[_0xff12('0x65')](_0xff12('0x67')));var _0x322c69='default'+_['upperFirst'](_0xff12('0x58'));if(_0x35f75b[_0x322c69]||!_0x1c70bd['custom']){_0xe02cf9=path[_0xff12('0x66')](config[_0xff12('0x64')],_0x4ffc6c,_['toLower'](_0xff12('0x67')));}if(!fs['existsSync'](_0xe02cf9)){throw new db[(_0xff12('0x68'))][(_0xff12('0x69'))](_[_0xff12('0x6a')](_0xff12('0x58'))+_0xff12('0x6b'));}return _0x31679f[_0xff12('0x6c')](_0xe02cf9);}})[_0xff12('0x26')](handleError(_0x31679f,null));};var utilLicense=require(_0xff12('0x1b'));exports[_0xff12('0x6d')]=function(_0x2abaef,_0x4dbdbe,_0x1e02ed){var _0xb1a5f4=_0xff12('0x5b');var _0x381a4a={'custom':![]};return utilLicense[_0xff12('0x5c')]()[_0xff12('0x32')](function(_0x646eec){if(_0x646eec){_0x381a4a=_0x646eec;}return db['Setting']['find']({'where':{'id':_0x2abaef[_0xff12('0x52')]['id']},'attributes':[_0xff12('0x58'),_0xff12('0x5d'),_0xff12('0x6e'),_0xff12('0x5e'),'defaultLogo',_0xff12('0x60'),_0xff12('0x61'),_0xff12('0x62')],'raw':!![]});})['then'](handleEntityNotFound(_0x4dbdbe,null))[_0xff12('0x32')](function(_0x4e390c){if(_0x4e390c){var _0x418ebe=_0x4e390c['loginLogo']&&fs[_0xff12('0x63')](path['join'](config[_0xff12('0x64')],_0xb1a5f4,_[_0xff12('0x65')](_0x4e390c[_0xff12('0x5d')])))?path['join'](config[_0xff12('0x64')],_0xb1a5f4,_[_0xff12('0x65')](_0x4e390c[_0xff12('0x5d')])):path[_0xff12('0x66')](config[_0xff12('0x64')],_0xb1a5f4,_['toLower'](_0xff12('0x6f')));var _0x4d03fc=_0xff12('0x70')+_[_0xff12('0x6a')](_0xff12('0x5d'));if(_0x4e390c[_0x4d03fc]||!_0x381a4a['custom']){_0x418ebe=path[_0xff12('0x66')](config[_0xff12('0x64')],_0xb1a5f4,_['toLower'](_0xff12('0x6f')));}if(!fs[_0xff12('0x63')](_0x418ebe)){throw new db[(_0xff12('0x68'))][(_0xff12('0x69'))](_['upperFirst'](_0xff12('0x5d'))+'\x20not\x20found');}return _0x4dbdbe[_0xff12('0x6c')](_0x418ebe);}})[_0xff12('0x26')](handleError(_0x4dbdbe,null));};exports[_0xff12('0x71')]=function(_0x54657f,_0x10a047){return db[_0xff12('0x38')][_0xff12('0x53')]({'where':{'id':_0x54657f['params']['id']},'attributes':[_0xff12('0x72')]})[_0xff12('0x32')](respondWithResult(_0x10a047,null))[_0xff12('0x26')](handleError(_0x10a047,null));};exports[_0xff12('0x73')]=function(_0x15276d,_0x4cf763,_0x5a202d){if(_0x15276d[_0xff12('0x56')]&&_0x15276d[_0xff12('0x56')][_0xff12('0x57')]){_0x15276d[_0xff12('0x55')][_0xff12('0x6e')]=_0x15276d[_0xff12('0x56')][_0xff12('0x57')];}return db[_0xff12('0x38')]['find']({'where':{'id':_0x15276d['params']['id']}})[_0xff12('0x32')](handleEntityNotFound(_0x4cf763,null))[_0xff12('0x32')](saveUpdates(_0x15276d[_0xff12('0x55')],null))[_0xff12('0x32')](respondWithResult(_0x4cf763,null))['catch'](handleError(_0x4cf763,null));};var utilLicense=require(_0xff12('0x1b'));exports['getPreferred']=function(_0x243683,_0x5c2a2b,_0x4c3679){var _0x295b0c=_0xff12('0x5b');var _0x5ed7cf={'custom':![]};return utilLicense[_0xff12('0x5c')]()[_0xff12('0x32')](function(_0x21dc7c){if(_0x21dc7c){_0x5ed7cf=_0x21dc7c;}return db[_0xff12('0x38')][_0xff12('0x53')]({'where':{'id':_0x243683['params']['id']},'attributes':[_0xff12('0x58'),'loginLogo','preferred',_0xff12('0x5e'),_0xff12('0x5f'),_0xff12('0x60'),_0xff12('0x61'),_0xff12('0x62')],'raw':!![]});})[_0xff12('0x32')](handleEntityNotFound(_0x5c2a2b,null))[_0xff12('0x32')](function(_0x5304c5){if(_0x5304c5){var _0x162fc6=_0x5304c5[_0xff12('0x6e')]&&fs[_0xff12('0x63')](path[_0xff12('0x66')](config[_0xff12('0x64')],_0x295b0c,_['toLower'](_0x5304c5[_0xff12('0x6e')])))?path[_0xff12('0x66')](config[_0xff12('0x64')],_0x295b0c,_['toLower'](_0x5304c5['preferred'])):path[_0xff12('0x66')](config[_0xff12('0x64')],_0x295b0c,_['toLower'](_0xff12('0x74')));var _0x473e26='default'+_['upperFirst']('preferred');if(_0x5304c5[_0x473e26]||!_0x5ed7cf[_0xff12('0x75')]||!_0x5ed7cf['preferred']){_0x162fc6=path[_0xff12('0x66')](config[_0xff12('0x64')],_0x295b0c,_[_0xff12('0x65')](_0xff12('0x74')));}if(!fs['existsSync'](_0x162fc6)){throw new db[(_0xff12('0x68'))][(_0xff12('0x69'))](_[_0xff12('0x6a')]('preferred')+_0xff12('0x6b'));}return _0x5c2a2b[_0xff12('0x6c')](_0x162fc6);}})[_0xff12('0x26')](handleError(_0x5c2a2b,null));};exports[_0xff12('0x76')]=function(_0x3e9e01,_0x54e56c,_0x3529c9){if(_0x3e9e01[_0xff12('0x56')]&&_0x3e9e01[_0xff12('0x56')][_0xff12('0x57')]){_0x3e9e01[_0xff12('0x55')][_0xff12('0x5e')]=_0x3e9e01[_0xff12('0x56')][_0xff12('0x57')];}return db[_0xff12('0x38')]['find']({'where':{'id':_0x3e9e01[_0xff12('0x52')]['id']}})[_0xff12('0x32')](handleEntityNotFound(_0x54e56c,null))[_0xff12('0x32')](saveUpdates(_0x3e9e01[_0xff12('0x55')],null))[_0xff12('0x32')](respondWithResult(_0x54e56c,null))[_0xff12('0x26')](handleError(_0x54e56c,null));};var utilLicense=require('../../config/license/util');exports[_0xff12('0x77')]=function(_0x134569,_0x115f39,_0x96687e){var _0x58c906=_0xff12('0x5b');var _0x30ea83={'custom':![]};return utilLicense[_0xff12('0x5c')]()['then'](function(_0x112e79){if(_0x112e79){_0x30ea83=_0x112e79;}return db['Setting']['find']({'where':{'id':_0x134569[_0xff12('0x52')]['id']},'attributes':['logo',_0xff12('0x5d'),_0xff12('0x6e'),_0xff12('0x5e'),_0xff12('0x5f'),'defaultLoginLogo',_0xff12('0x61'),_0xff12('0x62')],'raw':!![]});})[_0xff12('0x32')](handleEntityNotFound(_0x115f39,null))[_0xff12('0x32')](function(_0x25c761){if(_0x25c761){var _0x15e29f=_0x25c761[_0xff12('0x5e')]&&fs[_0xff12('0x63')](path[_0xff12('0x66')](config['root'],_0x58c906,_[_0xff12('0x65')](_0x25c761[_0xff12('0x5e')])))?path[_0xff12('0x66')](config[_0xff12('0x64')],_0x58c906,_[_0xff12('0x65')](_0x25c761[_0xff12('0x5e')])):path[_0xff12('0x66')](config[_0xff12('0x64')],_0x58c906,_[_0xff12('0x65')](_0xff12('0x78')));var _0x487cb3=_0xff12('0x70')+_[_0xff12('0x6a')](_0xff12('0x5e'));if(_0x25c761[_0x487cb3]||!_0x30ea83[_0xff12('0x75')]){_0x15e29f=path['join'](config[_0xff12('0x64')],_0x58c906,_[_0xff12('0x65')]('default_favicon.ico'));}if(!fs[_0xff12('0x63')](_0x15e29f)){throw new db['Sequelize'][(_0xff12('0x69'))](_[_0xff12('0x6a')](_0xff12('0x5e'))+_0xff12('0x6b'));}return _0x115f39[_0xff12('0x6c')](_0x15e29f);}})[_0xff12('0x26')](handleError(_0x115f39,null));};exports[_0xff12('0x79')]=function(_0x405175,_0x4f1195){var _0x35f85b={'offset':moment()[_0xff12('0x7a')]()};_0x35f85b[_0xff12('0x7b')]=moment()['utcOffset'](_0x35f85b[_0xff12('0x2a')])[_0xff12('0x7c')](_0xff12('0x7d'));return _0x4f1195[_0xff12('0x28')](0xc8)[_0xff12('0x35')](_0x35f85b);};
\ No newline at end of file
index 797529b..235e1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x4d9bb2,_0x3db50d){var _0x3179fe=function(_0x5272f3){while(--_0x5272f3){_0x4d9bb2['push'](_0x4d9bb2['shift']());}};_0x3179fe(++_0x3db50d);}(_0x3e74,0x175));var _0x43e7=function(_0x5d4c44,_0x25ea6b){_0x5d4c44=_0x5d4c44-0x0;var _0x2460e9=_0x3e74[_0x5d4c44];return _0x2460e9;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x26a1dc,_0x380fb3){var _0x529678=function(_0x2c8c14){while(--_0x2c8c14){_0x26a1dc['push'](_0x26a1dc['shift']());}};_0x529678(++_0x380fb3);}(_0x3e74,0x175));var _0x43e7=function(_0x5050db,_0x28ca19){_0x5050db=_0x5050db-0x0;var _0x2a4b1c=_0x3e74[_0x5050db];return _0x2a4b1c;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 38c88ab..a8ee14d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb532=['client','http','request','then','info','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','ShowSetting','Setting','find','options','attributes','include','map','model','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x2e671f,_0x2fd91e){var _0x16bfe8=function(_0x1e7a88){while(--_0x1e7a88){_0x2e671f['push'](_0x2e671f['shift']());}};_0x16bfe8(++_0x2fd91e);}(_0xb532,0xe9));var _0x2b53=function(_0x559a98,_0x28c39b){_0x559a98=_0x559a98-0x0;var _0x22810a=_0xb532[_0x559a98];return _0x22810a;};'use strict';var _=require(_0x2b53('0x0'));var util=require('util');var moment=require(_0x2b53('0x1'));var BPromise=require('bluebird');var rs=require(_0x2b53('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b53('0x3'))['db'];var utils=require(_0x2b53('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x2b53('0x5'));var jayson=require(_0x2b53('0x6'));var client=jayson[_0x2b53('0x7')][_0x2b53('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4ba412,_0x1b5006,_0x9ca228){return new BPromise(function(_0x206706,_0x31f33b){return client[_0x2b53('0x9')](_0x4ba412,_0x9ca228)[_0x2b53('0xa')](function(_0x119ae2){logger[_0x2b53('0xb')]('Setting,\x20%s,\x20%s',_0x1b5006,'request\x20sent');logger[_0x2b53('0xc')](_0x2b53('0xd'),_0x1b5006,_0x2b53('0xe'),JSON[_0x2b53('0xf')](_0x119ae2));if(_0x119ae2[_0x2b53('0x10')]){if(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x11')]===0x1f4){logger[_0x2b53('0x10')](_0x2b53('0x12'),_0x1b5006,_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);return _0x31f33b(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);}logger['error']('Setting,\x20%s,\x20%s',_0x1b5006,_0x119ae2[_0x2b53('0x10')]['message']);return _0x206706(_0x119ae2[_0x2b53('0x10')][_0x2b53('0x13')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x1b5006,_0x2b53('0xe'));_0x206706(_0x119ae2[_0x2b53('0x14')][_0x2b53('0x13')]);}})[_0x2b53('0x15')](function(_0x3efe00){logger['error'](_0x2b53('0x12'),_0x1b5006,_0x3efe00);_0x31f33b(_0x3efe00);});});}exports[_0x2b53('0x16')]=function(_0x2aff68){var _0x39be52=this;return new Promise(function(_0xb00bcc,_0x2c2906){return db[_0x2b53('0x17')][_0x2b53('0x18')]({'raw':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')]['where']||null:null,'attributes':_0x2aff68[_0x2b53('0x19')]?_0x2aff68[_0x2b53('0x19')][_0x2b53('0x1a')]||null:null,'include':_0x2aff68[_0x2b53('0x19')]?_0x2aff68['options'][_0x2b53('0x1b')]?_[_0x2b53('0x1c')](_0x2aff68[_0x2b53('0x19')][_0x2b53('0x1b')],function(_0x14340e){return{'model':db[_0x14340e[_0x2b53('0x1d')]],'as':_0x14340e['as'],'attributes':_0x14340e['attributes'],'include':_0x14340e[_0x2b53('0x1b')]?_[_0x2b53('0x1c')](_0x14340e[_0x2b53('0x1b')],function(_0x5eb68d){return{'model':db[_0x5eb68d[_0x2b53('0x1d')]],'as':_0x5eb68d['as'],'attributes':_0x5eb68d['attributes'],'include':_0x5eb68d['include']?_[_0x2b53('0x1c')](_0x5eb68d[_0x2b53('0x1b')],function(_0x14e201){return{'model':db[_0x14e201[_0x2b53('0x1d')]],'as':_0x14e201['as'],'attributes':_0x14e201[_0x2b53('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2b53('0xa')](function(_0xddd4c0){logger[_0x2b53('0xb')]('ShowSetting',_0x2aff68);logger['debug']('ShowSetting',_0x2aff68,JSON[_0x2b53('0xf')](_0xddd4c0));_0xb00bcc(_0xddd4c0);})[_0x2b53('0x15')](function(_0x213fb4){logger['error']('ShowSetting',_0x213fb4[_0x2b53('0x13')],_0x2aff68);_0x2c2906(_0x39be52[_0x2b53('0x10')](0x1f4,_0x213fb4[_0x2b53('0x13')]));});});};
\ No newline at end of file
+var _0x4075=['../../config/utils','../../config/environment','jayson/promise','http','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','message','Setting,\x20%s,\x20%s','info','Setting','find','options','where','map','include','model','attributes','ShowSetting','debug','stringify','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x2de699,_0x29ccd8){var _0x1754b7=function(_0x4f70ee){while(--_0x4f70ee){_0x2de699['push'](_0x2de699['shift']());}};_0x1754b7(++_0x29ccd8);}(_0x4075,0x14a));var _0x5407=function(_0x31172e,_0xa59e5){_0x31172e=_0x31172e-0x0;var _0x414ada=_0x4075[_0x31172e];return _0x414ada;};'use strict';var _=require(_0x5407('0x0'));var util=require(_0x5407('0x1'));var moment=require(_0x5407('0x2'));var BPromise=require(_0x5407('0x3'));var rs=require(_0x5407('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5407('0x5'))['db'];var utils=require(_0x5407('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5407('0x7'));var jayson=require(_0x5407('0x8'));var client=jayson['client'][_0x5407('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2dc3e3,_0x526e23,_0x36d450){return new BPromise(function(_0x4b2ebb,_0x2d1d20){return client['request'](_0x2dc3e3,_0x36d450)['then'](function(_0x25b73a){logger['info']('Setting,\x20%s,\x20%s',_0x526e23,_0x5407('0xa'));logger['debug'](_0x5407('0xb'),_0x526e23,_0x5407('0xa'),JSON['stringify'](_0x25b73a));if(_0x25b73a[_0x5407('0xc')]){if(_0x25b73a[_0x5407('0xc')]['code']===0x1f4){logger[_0x5407('0xc')]('Setting,\x20%s,\x20%s',_0x526e23,_0x25b73a[_0x5407('0xc')][_0x5407('0xd')]);return _0x2d1d20(_0x25b73a['error'][_0x5407('0xd')]);}logger[_0x5407('0xc')](_0x5407('0xe'),_0x526e23,_0x25b73a[_0x5407('0xc')][_0x5407('0xd')]);return _0x4b2ebb(_0x25b73a[_0x5407('0xc')][_0x5407('0xd')]);}else{logger[_0x5407('0xf')](_0x5407('0xe'),_0x526e23,_0x5407('0xa'));_0x4b2ebb(_0x25b73a['result']['message']);}})['catch'](function(_0x19b9b8){logger['error'](_0x5407('0xe'),_0x526e23,_0x19b9b8);_0x2d1d20(_0x19b9b8);});});}exports['ShowSetting']=function(_0x15207d){var _0x41cbeb=this;return new Promise(function(_0x3f8b74,_0x308eb0){return db[_0x5407('0x10')][_0x5407('0x11')]({'raw':_0x15207d[_0x5407('0x12')]?_0x15207d[_0x5407('0x12')]['raw']===undefined?!![]:![]:!![],'where':_0x15207d[_0x5407('0x12')]?_0x15207d[_0x5407('0x12')][_0x5407('0x13')]||null:null,'attributes':_0x15207d['options']?_0x15207d[_0x5407('0x12')]['attributes']||null:null,'include':_0x15207d[_0x5407('0x12')]?_0x15207d['options']['include']?_[_0x5407('0x14')](_0x15207d['options'][_0x5407('0x15')],function(_0x4f5a81){return{'model':db[_0x4f5a81[_0x5407('0x16')]],'as':_0x4f5a81['as'],'attributes':_0x4f5a81[_0x5407('0x17')],'include':_0x4f5a81[_0x5407('0x15')]?_['map'](_0x4f5a81['include'],function(_0x12401f){return{'model':db[_0x12401f[_0x5407('0x16')]],'as':_0x12401f['as'],'attributes':_0x12401f[_0x5407('0x17')],'include':_0x12401f[_0x5407('0x15')]?_[_0x5407('0x14')](_0x12401f[_0x5407('0x15')],function(_0x228fe4){return{'model':db[_0x228fe4[_0x5407('0x16')]],'as':_0x228fe4['as'],'attributes':_0x228fe4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x342d22){logger['info'](_0x5407('0x18'),_0x15207d);logger[_0x5407('0x19')](_0x5407('0x18'),_0x15207d,JSON[_0x5407('0x1a')](_0x342d22));_0x3f8b74(_0x342d22);})[_0x5407('0x1b')](function(_0x11b445){logger['error']('ShowSetting',_0x11b445[_0x5407('0xd')],_0x15207d);_0x308eb0(_0x41cbeb[_0x5407('0xc')](0x1f4,_0x11b445[_0x5407('0xd')]));});});};
\ No newline at end of file
index a7f88b1..b96a2b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x498875,_0x988c69){var _0x3afb36=function(_0x558777){while(--_0x558777){_0x498875['push'](_0x498875['shift']());}};_0x3afb36(++_0x988c69);}(_0x53ec,0x192));var _0xc53e=function(_0x427d3a,_0x23724c){_0x427d3a=_0x427d3a-0x0;var _0xe5c521=_0x53ec[_0x427d3a];return _0xe5c521;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
+var _0x8ef6=['addApplications','/:id/send','send','status','update','delete','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','/describe','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/status','statusGet','/:id/users','getAgents','create','post','addDisposition','addAnswer','notify'];(function(_0x441e54,_0x58b240){var _0xecb774=function(_0x64d628){while(--_0x64d628){_0x441e54['push'](_0x441e54['shift']());}};_0xecb774(++_0x58b240);}(_0x8ef6,0xf2));var _0x68ef=function(_0x2ac7d5,_0x384ff5){_0x2ac7d5=_0x2ac7d5-0x0;var _0x5db74a=_0x8ef6[_0x2ac7d5];return _0x5db74a;};'use strict';var multer=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var path=require(_0x68ef('0x2'));var timeout=require(_0x68ef('0x3'));var express=require(_0x68ef('0x4'));var router=express[_0x68ef('0x5')]();var fs_extra=require(_0x68ef('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var controller=require(_0x68ef('0x9'));router[_0x68ef('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x68ef('0xa')](_0x68ef('0xb'),auth[_0x68ef('0xc')](),controller['describe']);router[_0x68ef('0xa')](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0xe')]);router[_0x68ef('0xa')](_0x68ef('0xf'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x10')]);router[_0x68ef('0xa')](_0x68ef('0x11'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x12')]);router['get'](_0x68ef('0x13'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x14')]);router[_0x68ef('0xa')](_0x68ef('0x15'),auth[_0x68ef('0xc')](),controller['getInteractions']);router[_0x68ef('0xa')](_0x68ef('0x16'),controller[_0x68ef('0x17')]);router['get'](_0x68ef('0x18'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x19')]);router['post']('/',auth[_0x68ef('0xc')](),controller[_0x68ef('0x1a')]);router[_0x68ef('0x1b')](_0x68ef('0xf'),auth['isAuthenticated'](),controller[_0x68ef('0x1c')]);router['post']('/:id/canned_answers',auth[_0x68ef('0xc')](),controller[_0x68ef('0x1d')]);router['post']('/:id/notify',controller[_0x68ef('0x1e')]);router[_0x68ef('0x1b')](_0x68ef('0x13'),auth['isAuthenticated'](),controller[_0x68ef('0x1f')]);router[_0x68ef('0x1b')](_0x68ef('0x20'),auth['isAuthenticated'](),controller[_0x68ef('0x21')]);router[_0x68ef('0x1b')]('/:id/status',controller[_0x68ef('0x22')]);router[_0x68ef('0x1b')](_0x68ef('0x18'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x23')]);router[_0x68ef('0x24')](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x25')]);router[_0x68ef('0x24')](_0x68ef('0xf'),auth[_0x68ef('0xc')](),controller['removeDispositions']);router[_0x68ef('0x24')]('/:id/canned_answers',auth['isAuthenticated'](),controller['removeAnswers']);router[_0x68ef('0x24')](_0x68ef('0x18'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x26')]);module['exports']=router;
\ No newline at end of file
index b60e8ee..dc95362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bad=['intelepeer','ENUM','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','generate','twilio','skebby','connectel','clicksend','clickatell','bandwidth','csc'];(function(_0x24cc36,_0x385f02){var _0x49233a=function(_0x3fbc5a){while(--_0x3fbc5a){_0x24cc36['push'](_0x24cc36['shift']());}};_0x49233a(++_0x385f02);}(_0x7bad,0xe6));var _0xd7ba=function(_0xeefaee,_0x4c8038){_0xeefaee=_0xeefaee-0x0;var _0x225a0e=_0x7bad[_0xeefaee];return _0x225a0e;};'use strict';var Sequelize=require(_0xd7ba('0x0'));var rs=require(_0xd7ba('0x1'));module[_0xd7ba('0x2')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xd7ba('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xd7ba('0x3')],'defaultValue':function(){return rs[_0xd7ba('0x4')]();}},'phone':{'type':Sequelize[_0xd7ba('0x3')]},'type':{'type':Sequelize['ENUM'](_0xd7ba('0x5'),_0xd7ba('0x6'),_0xd7ba('0x7'),_0xd7ba('0x8'),'plivo',_0xd7ba('0x9'),_0xd7ba('0xa'),_0xd7ba('0xb'),'infobip',_0xd7ba('0xc'))},'accountSid':{'type':Sequelize[_0xd7ba('0x3')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xd7ba('0xd')]('SI','TI','GP')},'username':{'type':Sequelize[_0xd7ba('0x3')]},'password':{'type':Sequelize[_0xd7ba('0x3')]},'apiKey':{'type':Sequelize[_0xd7ba('0x3')]},'applicationId':{'type':Sequelize[_0xd7ba('0x3')]},'accountId':{'type':Sequelize[_0xd7ba('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xd7ba('0x3')]},'notificationTemplate':{'type':Sequelize[_0xd7ba('0xe')],'defaultValue':function(){return _0xd7ba('0xf');}},'notificationSound':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd7ba('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xd7ba('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd7ba('0x11')],'comment':_0xd7ba('0x12')},'mandatoryDisposition':{'type':Sequelize[_0xd7ba('0x10')],'defaultValue':![],'comment':_0xd7ba('0x13'),'set':function(_0x23b538){if(!_0x23b538)this[_0xd7ba('0x14')](_0xd7ba('0x15'),null);this[_0xd7ba('0x14')]('mandatoryDisposition',_0x23b538);}}};
\ No newline at end of file
+var _0x8c27=['STRING','generate','connectel','plivo','clickatell','csc','infobip','intelepeer','ENUM','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','name'];(function(_0x3305f7,_0x2d92a2){var _0x54ab8a=function(_0x1a792c){while(--_0x1a792c){_0x3305f7['push'](_0x3305f7['shift']());}};_0x54ab8a(++_0x2d92a2);}(_0x8c27,0x1b4));var _0x78c2=function(_0x4f27f8,_0x3ce31f){_0x4f27f8=_0x4f27f8-0x0;var _0x2d469b=_0x8c27[_0x4f27f8];return _0x2d469b;};'use strict';var Sequelize=require(_0x78c2('0x0'));var rs=require(_0x78c2('0x1'));module[_0x78c2('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x78c2('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x78c2('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x78c2('0x4')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x78c2('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('twilio','skebby',_0x78c2('0x6'),'clicksend',_0x78c2('0x7'),_0x78c2('0x8'),'bandwidth',_0x78c2('0x9'),_0x78c2('0xa'),_0x78c2('0xb'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x78c2('0x4')]},'smsMethod':{'type':Sequelize[_0x78c2('0xc')]('SI','TI','GP')},'username':{'type':Sequelize[_0x78c2('0x4')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x78c2('0x4')]},'applicationId':{'type':Sequelize[_0x78c2('0x4')]},'accountId':{'type':Sequelize[_0x78c2('0x4')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x78c2('0x4')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x78c2('0xd');}},'notificationSound':{'type':Sequelize[_0x78c2('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x78c2('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x78c2('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x78c2('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x78c2('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x78c2('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x78c2('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x78c2('0xf')],'comment':_0x78c2('0x10')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x78c2('0x11'),'set':function(_0x3a8d46){if(!_0x3a8d46)this[_0x78c2('0x12')]('mandatoryDispositionPauseId',null);this[_0x78c2('0x12')](_0x78c2('0x13'),_0x3a8d46);}}};
\ No newline at end of file
index 4af4059..9461a64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9da=['CannedAnswer','removeAnswers','ids','notify','sms','SmsApplication','Applications','account','applications','priority','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','From','MessageSid','skebby','connectel','clicksend','messageId','message_id','plivo','Text','MessageUUID','infobip','results','text','originatingAddress','segmentedMessage','clickatell','fromNumber','bandwidth','intelepeer','refid','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','DESC','list','omit','Contacts','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','Contact','User','Owner','internal','Tag','color','tag','to\x20is\x20mandatory','List','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','DELIVERED','groupName','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','statusGet','csc','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','redis','./smsAccount.socket','register','jayson/promise','client','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','set','apply','reject','destroy','get','SmsAccounts','UserProfileResource','end','name','send','index','mandatoryDispositionPause','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','SmsAccount','include','findAll','rows','show','params','Pause','includeAll','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','getDispositions','Disposition','hasOwnProperty','order','removeDispositions','getAnswers','findOne'];(function(_0x5ae352,_0x30208c){var _0x46fe24=function(_0xe8d4ce){while(--_0xe8d4ce){_0x5ae352['push'](_0x5ae352['shift']());}};_0x46fe24(++_0x30208c);}(_0xd9da,0x156));var _0xad9d=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xd9da[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0xad9d('0x0'));var rimraf=require(_0xad9d('0x1'));var zipdir=require(_0xad9d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xad9d('0x3'));var moment=require(_0xad9d('0x4'));var BPromise=require(_0xad9d('0x5'));var Mustache=require(_0xad9d('0x6'));var util=require(_0xad9d('0x7'));var path=require(_0xad9d('0x8'));var sox=require(_0xad9d('0x9'));var csv=require(_0xad9d('0xa'));var ejs=require(_0xad9d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xad9d('0xc'));var crypto=require(_0xad9d('0xd'));var jsforce=require(_0xad9d('0xe'));var deskjs=require(_0xad9d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xad9d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xad9d('0x11'));var as=require(_0xad9d('0x12'));var hardwareService=require(_0xad9d('0x13'));var logger=require(_0xad9d('0x14'))(_0xad9d('0x15'));var utils=require(_0xad9d('0x16'));var config=require(_0xad9d('0x17'));var licenseUtil=require(_0xad9d('0x18'));var db=require(_0xad9d('0x19'))['db'];config['redis']=_[_0xad9d('0x1a')](config['redis'],{'host':_0xad9d('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad9d('0x1c')]));require(_0xad9d('0x1d'))[_0xad9d('0x1e')](socket);var jayson=require(_0xad9d('0x1f'));var client=jayson[_0xad9d('0x20')][_0xad9d('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x46a7f1,_0x458a6e,_0x9eaab4,_0x4d14d6){return new BPromise(function(_0x518bc4,_0x960790){var _0x121eb8=_0x4d14d6||client;return _0x121eb8['request'](_0x46a7f1,_0x9eaab4)[_0xad9d('0x22')](function(_0x39d304){logger[_0xad9d('0x23')](_0xad9d('0x24'),_0x458a6e,_0xad9d('0x25'));logger[_0xad9d('0x26')](_0xad9d('0x27'),_0x458a6e,_0xad9d('0x25'),JSON[_0xad9d('0x28')](_0x39d304));if(_0x39d304[_0xad9d('0x29')]){if(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2a')]===0x1f4){logger[_0xad9d('0x29')](_0xad9d('0x24'),_0x458a6e,_0x39d304[_0xad9d('0x29')]['message']);return _0x960790(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2b')]);}logger[_0xad9d('0x29')](_0xad9d('0x24'),_0x458a6e,_0x39d304['error'][_0xad9d('0x2b')]);return _0x518bc4(_0x39d304[_0xad9d('0x29')][_0xad9d('0x2b')]);}else{logger['info'](_0xad9d('0x24'),_0x458a6e,'request\x20sent');_0x518bc4(_0x39d304[_0xad9d('0x2c')][_0xad9d('0x2b')]);}})[_0xad9d('0x2d')](function(_0x58bbe6){logger['error'](_0xad9d('0x24'),_0x458a6e,_0x58bbe6);_0x960790(_0x58bbe6);});});}function respondWithStatusCode(_0x166ec1,_0x54b5cc){_0x54b5cc=_0x54b5cc||0xcc;return function(_0x1f88f6){if(_0x1f88f6){return _0x166ec1[_0xad9d('0x2e')](_0x54b5cc);}return _0x166ec1[_0xad9d('0x2f')](_0x54b5cc)['end']();};}function respondWithResult(_0x47400c,_0x5533fe){_0x5533fe=_0x5533fe||0xc8;return function(_0x4997ec){if(_0x4997ec){return _0x47400c['status'](_0x5533fe)[_0xad9d('0x30')](_0x4997ec);}};}function respondWithFilteredResult(_0x16757f,_0x178c1b){return function(_0x2681c9){if(_0x2681c9){var _0x4502f0=typeof _0x178c1b[_0xad9d('0x31')]==='undefined'&&typeof _0x178c1b['limit']===_0xad9d('0x32');var _0x4a016a=_0x2681c9[_0xad9d('0x33')];var _0x13ac7c=_0x4502f0?0x0:_0x178c1b[_0xad9d('0x31')];var _0x56e3f5=_0x4502f0?_0x2681c9['count']:_0x178c1b[_0xad9d('0x31')]+_0x178c1b['limit'];var _0x2ec310;if(_0x56e3f5>=_0x4a016a){_0x56e3f5=_0x4a016a;_0x2ec310=0xc8;}else{_0x2ec310=0xce;}_0x16757f[_0xad9d('0x2f')](_0x2ec310);return _0x16757f[_0xad9d('0x34')]('Content-Range',_0x13ac7c+'-'+_0x56e3f5+'/'+_0x4a016a)[_0xad9d('0x30')](_0x2681c9);}return null;};}function patchUpdates(_0x428732){return function(_0x41f5f3){try{jsonpatch[_0xad9d('0x35')](_0x41f5f3,_0x428732,!![]);}catch(_0x525773){return BPromise[_0xad9d('0x36')](_0x525773);}return _0x41f5f3['save']();};}function saveUpdates(_0x35aa72,_0xe11e98){return function(_0x31adbe){if(_0x31adbe){return _0x31adbe['update'](_0x35aa72)[_0xad9d('0x22')](function(_0x3450b4){return _0x3450b4;});}return null;};}function removeEntity(_0x2b6712,_0x352198){return function(_0x414330){if(_0x414330){return _0x414330[_0xad9d('0x37')]()['then'](function(){var _0x10104e=_0x414330[_0xad9d('0x38')]({'plain':!![]});var _0x116e9f=_0xad9d('0x39');return db[_0xad9d('0x3a')][_0xad9d('0x37')]({'where':{'type':_0x116e9f,'resourceId':_0x10104e['id']}})['then'](function(){return _0x414330;});})[_0xad9d('0x22')](function(){_0x2b6712[_0xad9d('0x2f')](0xcc)[_0xad9d('0x3b')]();});}};}function handleEntityNotFound(_0x567d6e,_0x35586e){return function(_0x467f18){if(!_0x467f18){_0x567d6e[_0xad9d('0x2e')](0x194);}return _0x467f18;};}function handleError(_0x5a6f9f,_0x3eb721){_0x3eb721=_0x3eb721||0x1f4;return function(_0xdca4cc){logger[_0xad9d('0x29')](_0xdca4cc['stack']);if(_0xdca4cc[_0xad9d('0x3c')]){delete _0xdca4cc[_0xad9d('0x3c')];}_0x5a6f9f['status'](_0x3eb721)[_0xad9d('0x3d')](_0xdca4cc);};}exports[_0xad9d('0x3e')]=function(_0x6a9da4,_0x5931c0){var _0x2aa327={'include':[{'model':db['Pause'],'as':_0xad9d('0x3f')}]},_0x3748bc={},_0xd10674={'count':0x0,'rows':[]};var _0x41281c=_[_0xad9d('0x40')](db['SmsAccount'][_0xad9d('0x41')],function(_0x3245d6){return{'name':_0x3245d6['fieldName'],'type':_0x3245d6[_0xad9d('0x42')][_0xad9d('0x43')]};});_0x3748bc[_0xad9d('0x44')]=_[_0xad9d('0x40')](_0x41281c,_0xad9d('0x3c'));_0x3748bc[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x6a9da4['query']);_0x3748bc[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x3748bc[_0xad9d('0x44')],_0x3748bc[_0xad9d('0x45')]);_0x2aa327[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x3748bc['model'],qs[_0xad9d('0x4a')](_0x6a9da4[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x2aa327['attributes']=_0x2aa327[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x2aa327[_0xad9d('0x49')]:_0x3748bc['model'];if(!_0x6a9da4[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0x2aa327[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x6a9da4['query'][_0xad9d('0x4d')]);_0x2aa327['offset']=qs[_0xad9d('0x31')](_0x6a9da4['query'][_0xad9d('0x31')]);}_0x2aa327['order']=qs[_0xad9d('0x4e')](_0x6a9da4[_0xad9d('0x45')]['sort']);_0x2aa327[_0xad9d('0x4f')]=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x6a9da4['query'],_0x3748bc[_0xad9d('0x47')]),_0x41281c);if(_0x6a9da4[_0xad9d('0x45')][_0xad9d('0x51')]){_0x2aa327[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x2aa327['where'],{'$or':_['map'](_0x41281c,function(_0x4981a8){if(_0x4981a8[_0xad9d('0x42')]!==_0xad9d('0x53')){var _0x17acd9={};_0x17acd9[_0x4981a8['name']]={'$like':'%'+_0x6a9da4['query'][_0xad9d('0x51')]+'%'};return _0x17acd9;}})});}_0x2aa327=_['merge']({},_0x2aa327,_0x6a9da4[_0xad9d('0x54')]);var _0x504273={'where':_0x2aa327[_0xad9d('0x4f')]};return db[_0xad9d('0x55')]['count'](_0x504273)[_0xad9d('0x22')](function(_0x3eac34){_0xd10674[_0xad9d('0x33')]=_0x3eac34;if(_0x6a9da4[_0xad9d('0x45')]['includeAll']){_0x2aa327[_0xad9d('0x56')]=[{'all':!![]}];}return db[_0xad9d('0x55')][_0xad9d('0x57')](_0x2aa327);})[_0xad9d('0x22')](function(_0x1e1d8a){_0xd10674[_0xad9d('0x58')]=_0x1e1d8a;return _0xd10674;})[_0xad9d('0x22')](respondWithFilteredResult(_0x5931c0,_0x2aa327))['catch'](handleError(_0x5931c0,null));};exports[_0xad9d('0x59')]=function(_0x10a8f0,_0x3dbb12){var _0xbb8b3c={'raw':![],'where':{'id':_0x10a8f0[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0x5b')],'as':_0xad9d('0x3f')}]},_0x20699a={};_0x20699a[_0xad9d('0x44')]=_[_0xad9d('0x46')](db['SmsAccount']['rawAttributes']);_0x20699a[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x10a8f0['query']);_0x20699a[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x20699a[_0xad9d('0x44')],_0x20699a[_0xad9d('0x45')]);_0xbb8b3c['attributes']=_[_0xad9d('0x48')](_0x20699a['model'],qs['fields'](_0x10a8f0[_0xad9d('0x45')][_0xad9d('0x4a')]));_0xbb8b3c[_0xad9d('0x49')]=_0xbb8b3c[_0xad9d('0x49')]['length']?_0xbb8b3c[_0xad9d('0x49')]:_0x20699a[_0xad9d('0x44')];if(_0x10a8f0['query'][_0xad9d('0x5c')]){_0xbb8b3c['include']=[{'all':!![]}];}_0xbb8b3c=_[_0xad9d('0x52')]({},_0xbb8b3c,_0x10a8f0[_0xad9d('0x54')]);return db[_0xad9d('0x55')]['find'](_0xbb8b3c)[_0xad9d('0x22')](handleEntityNotFound(_0x3dbb12,null))['then'](respondWithResult(_0x3dbb12,null))['catch'](handleError(_0x3dbb12,null));};exports[_0xad9d('0x5d')]=function(_0x4af7ab,_0x9b361c){return db[_0xad9d('0x55')][_0xad9d('0x5d')](_0x4af7ab[_0xad9d('0x5e')],{})[_0xad9d('0x22')](function(_0x20bc13){var _0xe53469=_0x4af7ab['user'][_0xad9d('0x38')]({'plain':!![]});if(!_0xe53469)throw new Error(_0xad9d('0x5f'));if(_0xe53469[_0xad9d('0x60')]===_0xad9d('0x61')){var _0x18a1b1=_0x20bc13[_0xad9d('0x38')]({'plain':!![]});var _0x25b016='SmsAccounts';return db[_0xad9d('0x62')][_0xad9d('0x63')]({'where':{'name':_0x25b016,'userProfileId':_0xe53469[_0xad9d('0x64')]},'raw':!![]})[_0xad9d('0x22')](function(_0x399dcb){if(_0x399dcb&&_0x399dcb[_0xad9d('0x65')]===0x0){return db[_0xad9d('0x3a')][_0xad9d('0x5d')]({'name':_0x18a1b1['name'],'resourceId':_0x18a1b1['id'],'type':_0x399dcb['name'],'sectionId':_0x399dcb['id']},{})[_0xad9d('0x22')](function(){return _0x20bc13;});}else{return _0x20bc13;}})[_0xad9d('0x2d')](function(_0x42c5cb){logger[_0xad9d('0x29')](_0xad9d('0x66'),_0x42c5cb);throw _0x42c5cb;});}return _0x20bc13;})[_0xad9d('0x22')](respondWithResult(_0x9b361c,0xc9))[_0xad9d('0x2d')](handleError(_0x9b361c,null));};exports[_0xad9d('0x67')]=function(_0x3d8a5d,_0xdb687e){if(_0x3d8a5d[_0xad9d('0x5e')]['id']){delete _0x3d8a5d[_0xad9d('0x5e')]['id'];}return db[_0xad9d('0x55')]['find']({'where':{'id':_0x3d8a5d[_0xad9d('0x5a')]['id']},'include':[{'model':db['Pause'],'as':_0xad9d('0x3f')}]})['then'](handleEntityNotFound(_0xdb687e,null))[_0xad9d('0x22')](saveUpdates(_0x3d8a5d[_0xad9d('0x5e')],null))['then'](respondWithResult(_0xdb687e,null))[_0xad9d('0x2d')](handleError(_0xdb687e,null));};exports[_0xad9d('0x37')]=function(_0xdd57a7,_0x353425){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0xdd57a7[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x353425,null))['then'](removeEntity(_0x353425,null))['catch'](handleError(_0x353425,null));};exports[_0xad9d('0x68')]=function(_0xeb65b6,_0x1f1f99){return db[_0xad9d('0x55')][_0xad9d('0x68')]()['then'](respondWithResult(_0x1f1f99,null))[_0xad9d('0x2d')](handleError(_0x1f1f99,null));};exports[_0xad9d('0x69')]=function(_0x3a0c3b,_0x2066f8,_0x47eca0){if(_0x3a0c3b[_0xad9d('0x5e')]['id']){delete _0x3a0c3b[_0xad9d('0x5e')]['id'];}return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x3a0c3b[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2066f8,null))[_0xad9d('0x22')](function(_0x302a09){if(_0x302a09){_0x3a0c3b['body'][_0xad9d('0x6a')]=_0x302a09['id'];return db['Disposition'][_0xad9d('0x5d')](_0x3a0c3b[_0xad9d('0x5e')]);}})[_0xad9d('0x22')](respondWithResult(_0x2066f8,null))[_0xad9d('0x2d')](handleError(_0x2066f8,null));};exports[_0xad9d('0x6b')]=function(_0x5947b8,_0x4c2b7e,_0x56a31b){var _0x37d29d={'raw':![],'where':{}};var _0x3ae1b4={};var _0x114dfc={'count':0x0,'rows':[]};return db[_0xad9d('0x55')]['findOne']({'where':{'id':_0x5947b8[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4c2b7e,null))[_0xad9d('0x22')](function(_0x358f47){if(_0x358f47){_0x3ae1b4[_0xad9d('0x44')]=_[_0xad9d('0x46')](db[_0xad9d('0x6c')][_0xad9d('0x41')]);_0x3ae1b4[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x5947b8[_0xad9d('0x45')]);_0x3ae1b4['filters']=_[_0xad9d('0x48')](_0x3ae1b4[_0xad9d('0x44')],_0x3ae1b4[_0xad9d('0x45')]);_0x37d29d[_0xad9d('0x49')]=_['intersection'](_0x3ae1b4[_0xad9d('0x44')],qs['fields'](_0x5947b8[_0xad9d('0x45')]['fields']));_0x37d29d[_0xad9d('0x49')]=_0x37d29d[_0xad9d('0x49')]['length']?_0x37d29d[_0xad9d('0x49')]:_0x3ae1b4[_0xad9d('0x44')];if(!_0x5947b8[_0xad9d('0x45')][_0xad9d('0x6d')]('nolimit')){_0x37d29d[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x5947b8[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x37d29d['offset']=qs[_0xad9d('0x31')](_0x5947b8[_0xad9d('0x45')][_0xad9d('0x31')]);}_0x37d29d[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x5947b8['query'][_0xad9d('0x4e')]);_0x37d29d[_0xad9d('0x4f')]=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x5947b8['query'],_0x3ae1b4[_0xad9d('0x47')]));_0x37d29d[_0xad9d('0x4f')][_0xad9d('0x6a')]=_0x358f47['id'];if(_0x5947b8[_0xad9d('0x45')][_0xad9d('0x51')]){_0x37d29d[_0xad9d('0x4f')]=_['merge'](_0x37d29d[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x37d29d[_0xad9d('0x49')],function(_0x4e4cd5){var _0x53f899={};_0x53f899[_0x4e4cd5]={'$like':'%'+_0x5947b8[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x53f899;})});}_0x37d29d=_[_0xad9d('0x52')]({},_0x37d29d,_0x5947b8[_0xad9d('0x54')]);return db['Disposition'][_0xad9d('0x33')]({'where':_0x37d29d[_0xad9d('0x4f')]})['then'](function(_0x39dfbc){_0x114dfc['count']=_0x39dfbc;if(_0x5947b8['query'][_0xad9d('0x5c')]){_0x37d29d['include']=[{'all':!![]}];}return db[_0xad9d('0x6c')][_0xad9d('0x57')](_0x37d29d);})[_0xad9d('0x22')](function(_0x5a903b){_0x114dfc[_0xad9d('0x58')]=_0x5a903b;return _0x114dfc;});}})[_0xad9d('0x22')](respondWithFilteredResult(_0x4c2b7e,_0x37d29d))['catch'](handleError(_0x4c2b7e,null));};exports[_0xad9d('0x6f')]=function(_0x2ef5f3,_0x1628e7,_0x5bb419){return db[_0xad9d('0x55')]['find']({'where':{'id':_0x2ef5f3[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x1628e7,null))[_0xad9d('0x22')](function(_0x6671b9){if(_0x6671b9){return _0x6671b9[_0xad9d('0x6f')](_0x2ef5f3[_0xad9d('0x45')]['ids']);}})[_0xad9d('0x22')](respondWithStatusCode(_0x1628e7,null))['catch'](handleError(_0x1628e7,null));};exports['addAnswer']=function(_0x203513,_0x3d0901,_0x4b3bb3){if(_0x203513[_0xad9d('0x5e')]['id']){delete _0x203513[_0xad9d('0x5e')]['id'];}return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0x203513[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x3d0901,null))[_0xad9d('0x22')](function(_0x277ffd){if(_0x277ffd){_0x203513[_0xad9d('0x5e')][_0xad9d('0x6a')]=_0x277ffd['id'];return db['CannedAnswer'][_0xad9d('0x5d')](_0x203513[_0xad9d('0x5e')]);}})[_0xad9d('0x22')](respondWithResult(_0x3d0901,null))['catch'](handleError(_0x3d0901,null));};exports[_0xad9d('0x70')]=function(_0x1cb7f7,_0x5512b6,_0x5aa923){var _0xf0a819={'raw':![],'where':{}};var _0x215c78={};var _0x3d49f5={'count':0x0,'rows':[]};return db['SmsAccount'][_0xad9d('0x71')]({'where':{'id':_0x1cb7f7[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x5512b6,null))[_0xad9d('0x22')](function(_0x5ddc2c){if(_0x5ddc2c){_0x215c78['model']=_[_0xad9d('0x46')](db[_0xad9d('0x72')][_0xad9d('0x41')]);_0x215c78[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x1cb7f7[_0xad9d('0x45')]);_0x215c78[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x215c78['model'],_0x215c78[_0xad9d('0x45')]);_0xf0a819[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x215c78[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x1cb7f7[_0xad9d('0x45')]['fields']));_0xf0a819['attributes']=_0xf0a819[_0xad9d('0x49')][_0xad9d('0x4b')]?_0xf0a819[_0xad9d('0x49')]:_0x215c78[_0xad9d('0x44')];if(!_0x1cb7f7[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0xf0a819[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x1cb7f7['query'][_0xad9d('0x4d')]);_0xf0a819['offset']=qs[_0xad9d('0x31')](_0x1cb7f7[_0xad9d('0x45')][_0xad9d('0x31')]);}_0xf0a819[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x1cb7f7[_0xad9d('0x45')][_0xad9d('0x4e')]);_0xf0a819['where']=qs[_0xad9d('0x47')](_['pick'](_0x1cb7f7[_0xad9d('0x45')],_0x215c78[_0xad9d('0x47')]));_0xf0a819['where'][_0xad9d('0x6a')]=_0x5ddc2c['id'];if(_0x1cb7f7[_0xad9d('0x45')]['filter']){_0xf0a819['where']=_[_0xad9d('0x52')](_0xf0a819[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0xf0a819[_0xad9d('0x49')],function(_0x19e5ae){var _0x17af4d={};_0x17af4d[_0x19e5ae]={'$like':'%'+_0x1cb7f7['query'][_0xad9d('0x51')]+'%'};return _0x17af4d;})});}_0xf0a819=_[_0xad9d('0x52')]({},_0xf0a819,_0x1cb7f7[_0xad9d('0x54')]);return db['CannedAnswer'][_0xad9d('0x33')]({'where':_0xf0a819[_0xad9d('0x4f')]})[_0xad9d('0x22')](function(_0x2a3fb9){_0x3d49f5[_0xad9d('0x33')]=_0x2a3fb9;if(_0x1cb7f7[_0xad9d('0x45')]['includeAll']){_0xf0a819[_0xad9d('0x56')]=[{'all':!![]}];}return db['CannedAnswer'][_0xad9d('0x57')](_0xf0a819);})['then'](function(_0x4ae09f){_0x3d49f5['rows']=_0x4ae09f;return _0x3d49f5;});}})['then'](respondWithFilteredResult(_0x5512b6,_0xf0a819))[_0xad9d('0x2d')](handleError(_0x5512b6,null));};exports['removeAnswers']=function(_0x35dd4c,_0x2471d1,_0x3856c9){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x35dd4c[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2471d1,null))[_0xad9d('0x22')](function(_0x3b715a){if(_0x3b715a){return _0x3b715a[_0xad9d('0x73')](_0x35dd4c[_0xad9d('0x45')][_0xad9d('0x74')]);}})[_0xad9d('0x22')](respondWithStatusCode(_0x2471d1,null))[_0xad9d('0x2d')](handleError(_0x2471d1,null));};exports[_0xad9d('0x75')]=function(_0x4e3b56,_0x39c319,_0x5f44da){var _0x5dc600={'channel':_0xad9d('0x76')};var _0x1f7e68=[];var _0x438963=[];var _0x3e4321={};return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0x4e3b56[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0x77')],'as':_0xad9d('0x78')}]})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))['then'](function(_0x58dc2c){_0x5dc600[_0xad9d('0x79')]=_0x58dc2c;_0x5dc600[_0xad9d('0x7a')]=_['orderBy'](_0x58dc2c[_0xad9d('0x78')],[_0xad9d('0x7b')],[_0xad9d('0x7c')]);if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x78')]){delete _0x5dc600['account'][_0xad9d('0x78')];}return db['CmContact'][_0xad9d('0x68')]();})['then'](function(_0x18b346){if(!_0x18b346){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x7f'));}_0x1f7e68=_[_0xad9d('0x80')](_[_0xad9d('0x46')](_0x18b346),[_0xad9d('0x81'),'updatedAt']);_0x438963=_['difference'](_[_0xad9d('0x46')](_0x18b346),[_0xad9d('0x81'),_0xad9d('0x82'),_0xad9d('0x83'),_0xad9d('0x84')]);_0x5dc600[_0xad9d('0x5e')]={'mapKey':'mobile'};if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x42')]){switch(_0x5dc600['account'][_0xad9d('0x42')]){case'twilio':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56['body'][_0xad9d('0x86')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')]['Body'];_0x5dc600[_0xad9d('0x5e')]['messageId']=_0x4e3b56['body'][_0xad9d('0x87')];break;case _0xad9d('0x88'):_0x5dc600[_0xad9d('0x5e')]['from']='+'+_0x4e3b56[_0xad9d('0x5e')]['sender'];_0x5dc600[_0xad9d('0x5e')]['body']=_0x4e3b56['body']['text'];break;case _0xad9d('0x89'):_0x5dc600['body']['from']=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')]['body']=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x2b')];break;case _0xad9d('0x8a'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600['body'][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x5e')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x8c')];break;case _0xad9d('0x8d'):_0x5dc600['body'][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x86')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56['body'][_0xad9d('0x8e')];_0x5dc600['body'][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x8f')];break;case _0xad9d('0x90'):_0x5dc600[_0xad9d('0x5e')]['from']='+'+_0x4e3b56[_0xad9d('0x5e')]['results'][0x0][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56['body'][_0xad9d('0x91')][0x0][_0xad9d('0x92')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x91')][0x0][_0xad9d('0x8b')];break;case'csc':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56['body'][_0xad9d('0x93')];_0x5dc600['body'][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x94')][_0xad9d('0x2b')];break;case _0xad9d('0x95'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x96')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x92')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')]['replyMessageId'];break;case _0xad9d('0x97'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56['body'][0x0][_0xad9d('0x2b')]['id'];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')]['text'];break;case _0xad9d('0x98'):_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x85')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x2b')];_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')]=_0x4e3b56[_0xad9d('0x5e')][_0xad9d('0x99')];break;}}if(_0x5dc600['body']['id']){delete _0x5dc600[_0xad9d('0x5e')]['id'];}if(_[_0xad9d('0x9a')](_0x5dc600['body'][_0xad9d('0x85')])){throw new db[(_0xad9d('0x7d'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xad9d('0x9a')](_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')])||_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')]===''){throw new db[(_0xad9d('0x7d'))]['ValidationError'](_0xad9d('0x9b'));}if(_[_0xad9d('0x9a')](_0x5dc600['body'][_0xad9d('0x9c')])){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x9d')+_0x438963);}if(!_[_0xad9d('0x9e')](_0x438963,_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x9c')])){throw new db[(_0xad9d('0x7d'))][(_0xad9d('0x7e'))](_0xad9d('0x9f')+_0x438963);}_0x3e4321[_0x5dc600[_0xad9d('0x5e')]['mapKey']]=_0x5dc600[_0xad9d('0x5e')]['from'];return db[_0xad9d('0xa0')][_0xad9d('0x63')]({'where':{'id':_0x5dc600[_0xad9d('0x79')]['ListId']},'include':[{'model':db[_0xad9d('0xa1')],'as':'Contacts','where':_0x3e4321,'limit':0x1,'order':[[_0xad9d('0x82'),_0xad9d('0xa2')]]}]});})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))[_0xad9d('0x22')](function(_0x2815e7){if(_0x2815e7){_0x5dc600[_0xad9d('0xa3')]=_[_0xad9d('0xa4')](_0x2815e7,['Contacts']);if(_0x2815e7[_0xad9d('0xa5')][_0xad9d('0x4b')]){return _0x2815e7[_0xad9d('0xa5')][0x0];}var _0xb71303=_['defaults'](_0x5dc600[_0xad9d('0x5e')],{'firstName':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'ListId':_0x2815e7['id']});_0xb71303[_0x5dc600[_0xad9d('0x5e')]['mapKey']]=_0x5dc600['body']['from'];return db[_0xad9d('0xa1')]['create'](_0xb71303,{'fields':_0x1f7e68,'raw':!![]});}})[_0xad9d('0x22')](handleEntityNotFound(_0x39c319,null))[_0xad9d('0x22')](function(_0x4757c4){if(_0x4757c4){_0x5dc600['contact']=_0x4757c4;var _0x1ab138={'ContactId':_0x4757c4['id'],'phone':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id']};var _0x46ed2b={'ContactId':_0x4757c4['id'],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id'],'closed':![]};return db['SmsInteraction'][_0xad9d('0x63')]({'where':_0x46ed2b})[_0xad9d('0x22')](function(_0x30cea4){if(_0x30cea4){return[_0x30cea4,![]];}return db[_0xad9d('0xa6')]['create'](_0x1ab138)[_0xad9d('0x22')](function(_0x3150b2){return[_0x3150b2,!![]];});});}})[_0xad9d('0xa7')](function(_0x1f9383,_0x2173e9){_0x5dc600['interaction']=_0x1f9383['get']({'plain':!![]});_0x5dc600[_0xad9d('0xa8')]['created']=![];if(_0x2173e9){if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0xa9')]){_0x5dc600['applications'][_0xad9d('0xaa')]({'id':0x0,'priority':_0x5dc600['applications']['length']+0x1,'app':_0xad9d('0xab'),'appdata':_0xad9d('0xac'),'interval':_0xad9d('0xad')});}_0x5dc600['interaction']['created']=!![];}return db[_0xad9d('0xae')][_0xad9d('0x5d')]({'phone':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x85')],'messageId':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x8b')],'body':_0x5dc600[_0xad9d('0x5e')][_0xad9d('0x5e')],'SmsAccountId':_0x4e3b56[_0xad9d('0x5a')]['id'],'SmsInteractionId':_0x1f9383['id'],'direction':'in','ContactId':_0x1f9383[_0xad9d('0xaf')],'AttachmentId':_0x5dc600['body'][_0xad9d('0xb0')]});})[_0xad9d('0x22')](function(_0x175626){_0x5dc600[_0xad9d('0x2b')]=_0x175626;if(_0x5dc600[_0xad9d('0xa8')][_0xad9d('0xb1')]){return db['User'][_0xad9d('0x63')]({'attributes':['id',_0xad9d('0x3c')],'where':{'id':_0x5dc600[_0xad9d('0xa8')][_0xad9d('0xb1')]}})[_0xad9d('0x22')](function(_0x4f5cf2){if(_0x4f5cf2){_0x5dc600[_0xad9d('0x7a')][_0xad9d('0xb2')]({'id':0x0,'priority':0x0,'app':_0xad9d('0xb3'),'appdata':_0x4f5cf2[_0xad9d('0x3c')]+','+(_0x5dc600[_0xad9d('0x79')][_0xad9d('0xb4')]||0xa),'interval':_0xad9d('0xad')});}return respondWithRpcPromise(_0xad9d('0xb5'),_0xad9d('0xb6'),_0x5dc600);});}return respondWithRpcPromise(_0xad9d('0xb5'),_0xad9d('0xb6'),_0x5dc600);})[_0xad9d('0x22')](function(_0x501472){if(_0x501472){var _0x1590e9=0xc8;var _0x475b08=_0xad9d('0xb7');logger[_0xad9d('0x23')](_0xad9d('0x27'),_0x475b08,_0x1590e9,_0xad9d('0xb8'));logger['debug'](_0xad9d('0xb9'),_0x475b08,_0x1590e9,'entity\x20found',JSON[_0xad9d('0x28')](_0x501472));if(_0x5dc600[_0xad9d('0x79')][_0xad9d('0x42')]==='twilio'){return _0x39c319['status'](_0x1590e9)['set']('Content-Type','text/xml')[_0xad9d('0x3d')](_0xad9d('0xba'));}else{return _0x39c319[_0xad9d('0x2f')](_0x1590e9)['json'](_0x501472);}}})[_0xad9d('0x2d')](handleError(_0x39c319,null));};exports[_0xad9d('0xbb')]=function(_0x90ca2e,_0x5a52f7,_0x2e5f5f){return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x90ca2e[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x5a52f7,null))[_0xad9d('0x22')](function(_0x1126f4){if(_0x1126f4){return db[_0xad9d('0xbc')][_0xad9d('0xbd')](function(_0x147a3c){return db['SmsApplication'][_0xad9d('0x37')]({'where':{'SmsAccountId':_0x90ca2e[_0xad9d('0x5a')]['id']},'transaction':_0x147a3c})['then'](function(_0xeb6bd4){var _0x3d9af2=_[_0xad9d('0x40')](_0x90ca2e[_0xad9d('0x5e')],function(_0x48a066){_0x48a066['SmsAccountId']=_0x90ca2e[_0xad9d('0x5a')]['id'];return _0x48a066;});return db[_0xad9d('0x77')][_0xad9d('0xbe')](_0x3d9af2,{'transaction':_0x147a3c});});})[_0xad9d('0x22')](function(){return db[_0xad9d('0x77')][_0xad9d('0xbf')]({'where':{'SmsAccountId':_0x90ca2e[_0xad9d('0x5a')]['id']},'order':'priority'});});}})[_0xad9d('0x22')](respondWithResult(_0x5a52f7,null))[_0xad9d('0x2d')](handleError(_0x5a52f7,null));};exports[_0xad9d('0xc0')]=function(_0x48114b,_0x276720,_0x46220c){var _0x4b0698={};var _0x3ab167={};var _0xa3e439;var _0x279516;return db[_0xad9d('0x55')]['findOne']({'where':{'id':_0x48114b['params']['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x276720,null))[_0xad9d('0x22')](function(_0x14d7e3){if(_0x14d7e3){_0xa3e439=_0x14d7e3;_0x3ab167[_0xad9d('0x44')]=_[_0xad9d('0x46')](db[_0xad9d('0x77')][_0xad9d('0x41')]);_0x3ab167[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x48114b[_0xad9d('0x45')]);_0x3ab167[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x3ab167[_0xad9d('0x44')],_0x3ab167[_0xad9d('0x45')]);_0x4b0698[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x3ab167[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x48114b[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x4b0698['attributes']=_0x4b0698[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x4b0698[_0xad9d('0x49')]:_0x3ab167[_0xad9d('0x44')];_0x4b0698[_0xad9d('0x6e')]=qs['sort'](_0x48114b[_0xad9d('0x45')]['sort']);_0x4b0698['where']=qs[_0xad9d('0x47')](_['pick'](_0x48114b[_0xad9d('0x45')],_0x3ab167[_0xad9d('0x47')]));if(_0x48114b[_0xad9d('0x45')][_0xad9d('0x51')]){_0x4b0698[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x4b0698[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x4b0698[_0xad9d('0x49')],function(_0xe5f73){var _0x5c29ad={};_0x5c29ad[_0xe5f73]={'$like':'%'+_0x48114b[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x5c29ad;})});}_0x4b0698=_[_0xad9d('0x52')]({},_0x4b0698,_0x48114b[_0xad9d('0x54')]);return _0xa3e439['getApplications'](_0x4b0698);}})[_0xad9d('0x22')](function(_0x27c395){if(_0x27c395){_0x279516=_0x27c395[_0xad9d('0x4b')];if(!_0x48114b['query'][_0xad9d('0x6d')](_0xad9d('0x4c'))){_0x4b0698[_0xad9d('0x4d')]=qs['limit'](_0x48114b[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x4b0698[_0xad9d('0x31')]=qs[_0xad9d('0x31')](_0x48114b[_0xad9d('0x45')][_0xad9d('0x31')]);}return _0xa3e439[_0xad9d('0xc0')](_0x4b0698);}})[_0xad9d('0x22')](function(_0x5c89e0){if(_0x5c89e0){return _0x5c89e0?{'count':_0x279516,'rows':_0x5c89e0}:null;}})['then'](respondWithResult(_0x276720,null))[_0xad9d('0x2d')](handleError(_0x276720,null));};exports['getInteractions']=function(_0x1243d4,_0x1e177a,_0xa91d7f){var _0x104248={'raw':![],'where':{}};var _0x525b8a={};var _0xbfbcdd={'count':0x0,'rows':[]};return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x1243d4[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x1e177a,null))[_0xad9d('0x22')](function(_0x196084){if(_0x196084){_0x525b8a[_0xad9d('0x44')]=_['keys'](db[_0xad9d('0xa6')]['rawAttributes']);_0x525b8a[_0xad9d('0x45')]=_['keys'](_0x1243d4[_0xad9d('0x45')]);_0x525b8a['filters']=_[_0xad9d('0x48')](_0x525b8a['model'],_0x525b8a[_0xad9d('0x45')]);_0x104248[_0xad9d('0x49')]=_[_0xad9d('0x48')](_0x525b8a['model'],qs['fields'](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x104248[_0xad9d('0x49')]=_0x104248[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x104248[_0xad9d('0x49')]:_0x525b8a['model'];if(!_0x1243d4[_0xad9d('0x45')]['hasOwnProperty'](_0xad9d('0x4c'))){_0x104248[_0xad9d('0x4d')]=qs[_0xad9d('0x4d')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4d')]);_0x104248['offset']=qs[_0xad9d('0x31')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x31')]);}_0x104248[_0xad9d('0x6e')]=qs[_0xad9d('0x4e')](_0x1243d4[_0xad9d('0x45')][_0xad9d('0x4e')]);_0x104248['where']=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x1243d4[_0xad9d('0x45')],_0x525b8a[_0xad9d('0x47')]));_0x104248[_0xad9d('0x4f')][_0xad9d('0x6a')]=_0x196084['id'];if(_0x1243d4['query']['filter']){_0x104248[_0xad9d('0x4f')]=_[_0xad9d('0x52')](_0x104248[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x104248[_0xad9d('0x49')],function(_0x5cbf53){var _0x4aa61c={};_0x4aa61c[_0x5cbf53]={'$like':'%'+_0x1243d4[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x4aa61c;})});}_0x104248=_[_0xad9d('0x52')]({},_0x104248,_0x1243d4[_0xad9d('0x54')]);return db[_0xad9d('0xa6')]['count']({'where':_0x104248[_0xad9d('0x4f')]})[_0xad9d('0x22')](function(_0x33b7ab){_0xbfbcdd[_0xad9d('0x33')]=_0x33b7ab;if(_0x1243d4[_0xad9d('0x45')][_0xad9d('0x5c')]){_0x104248[_0xad9d('0x56')]=[{'model':db['CmContact'],'as':_0xad9d('0xc1'),'required':![]},{'model':db[_0xad9d('0xc2')],'as':_0xad9d('0xc3'),'attributes':[_0xad9d('0x3c'),'fullname',_0xad9d('0xc4')],'required':![]},{'model':db[_0xad9d('0xc5')],'as':'Tags','attributes':['id',_0xad9d('0x3c'),_0xad9d('0xc6')],'where':_0x1243d4[_0xad9d('0x45')]['tag']?{'id':_0x1243d4[_0xad9d('0x45')][_0xad9d('0xc7')]}:undefined,'required':_0x1243d4[_0xad9d('0x45')][_0xad9d('0xc7')]?!![]:![]}];}return db[_0xad9d('0xa6')]['findAll'](_0x104248);})[_0xad9d('0x22')](function(_0x57ba54){_0xbfbcdd[_0xad9d('0x58')]=_0x57ba54;return _0xbfbcdd;});}})[_0xad9d('0x22')](respondWithFilteredResult(_0x1e177a,_0x104248))[_0xad9d('0x2d')](handleError(_0x1e177a,null));};exports[_0xad9d('0x3d')]=function(_0x20eac0,_0x1c6cb0,_0x4228fd){var _0x2da21f,_0x5e6717,_0x5ac749;if(_[_0xad9d('0x9a')](_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')])||_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')]===''){throw new db['Sequelize'][(_0xad9d('0x7e'))](_0xad9d('0x9b'));}if(_[_0xad9d('0x9a')](_0x20eac0['body']['to'])){throw new db['Sequelize']['ValidationError'](_0xad9d('0xc8'));}_0x2da21f=_0x20eac0[_0xad9d('0x5e')]['to'];return db['SmsAccount']['find']({'where':{'id':_0x20eac0[_0xad9d('0x5a')]['id']},'include':[{'model':db[_0xad9d('0xa0')],'as':_0xad9d('0xc9'),'include':[{'model':db[_0xad9d('0xa1')],'as':'Contacts','where':{'mobile':_0x2da21f},'limit':0x1,'order':[[_0xad9d('0x82'),_0xad9d('0xa2')]]}]}]})[_0xad9d('0x22')](handleEntityNotFound(_0x1c6cb0,null))[_0xad9d('0x22')](function(_0x1797be){if(_0x1797be&&_0x1797be[_0xad9d('0xc9')]){_0x5e6717=_0x1797be[_0xad9d('0x38')]({'plain':!![]});if(_0x5e6717['List']&&_0x5e6717[_0xad9d('0xc9')]['Contacts'][_0xad9d('0x4b')]){return _0x5e6717[_0xad9d('0xc9')][_0xad9d('0xa5')][0x0];}return db['CmContact'][_0xad9d('0x5d')](_['defaults'](_0x20eac0['body'],{'firstName':_0x2da21f,'mobile':_0x2da21f,'phone':_0x2da21f,'ListId':_0x5e6717[_0xad9d('0x84')]}));}})[_0xad9d('0x22')](handleEntityNotFound(_0x1c6cb0,null))[_0xad9d('0x22')](function(_0x51e7d8){if(_0x51e7d8){_0x5ac749=_0x51e7d8;return db[_0xad9d('0xa6')][_0xad9d('0x63')]({'where':{'ContactId':_0x5ac749['id'],'closed':![],'SmsAccountId':_0x5e6717['id']}})[_0xad9d('0x22')](function(_0x7bcbeb){if(_0x7bcbeb){return[_0x7bcbeb,![]];}return db[_0xad9d('0xa6')]['create']({'UserId':_0x20eac0[_0xad9d('0x61')]['id'],'ContactId':_0x5ac749['id'],'SmsAccountId':_0x5e6717['id'],'phone':_0x2da21f,'firstMsgDirection':'out','Messages':[_[_0xad9d('0x52')](_0x20eac0['body'],{'read':![],'body':_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')],'phone':_0x2da21f,'SmsAccountId':_0x5e6717['id'],'UserId':_0x20eac0[_0xad9d('0x61')]['id'],'ContactId':_0x5ac749['id']})]},{'include':[{'model':db[_0xad9d('0xae')],'as':'Messages'}]})['then'](function(_0x2eb26c){return[_0x2eb26c,!![]];});});}})['spread'](function(_0x326285,_0x409c81){if(_0x409c81){return _0x326285;}return db[_0xad9d('0xae')][_0xad9d('0x5d')](_[_0xad9d('0x52')](_0x20eac0['body'],{'read':![],'body':_0x20eac0[_0xad9d('0x5e')][_0xad9d('0x5e')],'phone':_0x2da21f,'SmsAccountId':_0x5e6717['id'],'SmsInteractionId':_0x326285['id'],'UserId':_0x20eac0['user']['id'],'ContactId':_0x5ac749['id']}))[_0xad9d('0x22')](function(_0x5e282d){_0x326285[_0xad9d('0xca')][_0xad9d('0xcb')]=[];_0x326285['dataValues']['Messages'][_0xad9d('0xaa')](_0x5e282d[_0xad9d('0xca')]);return _0x326285;});})[_0xad9d('0x22')](respondWithResult(_0x1c6cb0,null))[_0xad9d('0x2d')](handleError(_0x1c6cb0,null));};exports[_0xad9d('0x2f')]=function(_0x36bada,_0x11a671,_0x2b0169){if(_0x36bada[_0xad9d('0x5e')]['id']){delete _0x36bada[_0xad9d('0x5e')]['id'];}var _0x4e660d,_0x2a8e14,_0x27d230;return db[_0xad9d('0x55')]['find']({'where':{'id':_0x36bada['params']['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x11a671,null))[_0xad9d('0x22')](function(_0x2e0a61){if(_0x2e0a61){_0x27d230=_0x2e0a61;logger[_0xad9d('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xad9d('0x2f'),_0xad9d('0xcc'),_0x2e0a61[_0xad9d('0x42')],util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));switch(_0x2e0a61['type']){case'skebby':if(_0x36bada[_0xad9d('0x5e')]['skebby_dispatch_id']&&_0x36bada[_0xad9d('0x5e')][_0xad9d('0x2f')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][_0xad9d('0x2f')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0xce')]}});}break;case _0xad9d('0x89'):if(_0x36bada['body']['requestid']&&_0x36bada['body'][_0xad9d('0xcf')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')]['statusInt'];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada['body'][_0xad9d('0xd0')]}});}break;case _0xad9d('0x8a'):if(_0x36bada['body'][_0xad9d('0x8c')]&&_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd1')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd1')];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0x8c')]}});}break;case _0xad9d('0x90'):var _0x1c6fa8=_0x36bada[_0xad9d('0x5e')]['results'][0x0];if(_0x1c6fa8[_0xad9d('0x8b')]&&_0x1c6fa8[_0xad9d('0x2f')]['groupName']===_0xad9d('0xd2')){_0x2a8e14=_0x1c6fa8['status'][_0xad9d('0xd3')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x1c6fa8[_0xad9d('0x8b')]}});}break;case _0xad9d('0x95'):if(_0x36bada[_0xad9d('0x5e')]['messageId']&&_0x36bada['body'][_0xad9d('0x2f')]){_0x2a8e14=_0x36bada[_0xad9d('0x5e')]['status'];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][_0xad9d('0x8b')]}});}break;case _0xad9d('0x97'):if(_0x36bada[_0xad9d('0x5e')][0x0][_0xad9d('0x2b')]['id']){_0x2a8e14=_0x36bada[_0xad9d('0x5e')][0x0][_0xad9d('0x42')];return db['SmsMessage'][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')][0x0]['message']['id']}});}break;case _0xad9d('0x98'):if(_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd4')]&&_0x36bada[_0xad9d('0x5e')]['status']){_0x2a8e14=_0x36bada['body'][_0xad9d('0x2f')];return db[_0xad9d('0xae')][_0xad9d('0x63')]({'where':{'messageId':_0x36bada[_0xad9d('0x5e')]['redif']}});}break;}}})[_0xad9d('0x22')](handleEntityNotFound(_0x11a671,null))['then'](function(_0x1e789a){if(_0x1e789a){_0x4e660d=_0x1e789a;switch(_0x27d230['type']){case _0xad9d('0x88'):if(_0x2a8e14===_0xad9d('0xd2')){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x88'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x89'):if(_0x2a8e14==='1'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x88'),util[_0xad9d('0xcd')](_0x36bada['body'],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x8a'):if(!_0x36bada[_0xad9d('0x5e')][_0xad9d('0xd5')]&&_0x2a8e14>=0xc8&&_0x2a8e14<=0xce){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x8a'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x90'):var _0x1d28b8=_0x36bada[_0xad9d('0x5e')][_0xad9d('0x91')][0x0];if(_0x1d28b8[_0xad9d('0x2f')][_0xad9d('0xd3')]==='DELIVERED'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),'status',_0xad9d('0x90'),util[_0xad9d('0xcd')](_0x36bada['body'],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x95'):if(_0x2a8e14==_0xad9d('0xd6')||_0x2a8e14==_0xad9d('0xd7')){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger[_0xad9d('0x29')](_0xad9d('0x27'),_0xad9d('0x2f'),'clickatell',util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case _0xad9d('0x97'):if(_0x2a8e14==_0xad9d('0xd8')){return _0x4e660d['update']({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0x97'),util[_0xad9d('0xcd')](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x2a8e14===_0xad9d('0xd9')||_0x2a8e14==='ACCEPTD'){return _0x4e660d[_0xad9d('0x67')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xad9d('0x2f'),_0xad9d('0x98'),util['inspect'](_0x36bada[_0xad9d('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x4e660d;}})[_0xad9d('0x22')](respondWithResult(_0x11a671,null))[_0xad9d('0x2d')](handleError(_0x11a671,null));};exports[_0xad9d('0xda')]=function(_0x52bed5,_0x2c28f7,_0x1900ae){var _0x39a704,_0x50aa22,_0x2f7feb;return db['SmsAccount']['find']({'where':{'id':_0x52bed5[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2c28f7,null))[_0xad9d('0x22')](function(_0x11a97c){if(_0x11a97c){_0x2f7feb=_0x11a97c;logger[_0xad9d('0x26')](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0xcc'),_0x11a97c[_0xad9d('0x42')],util[_0xad9d('0xcd')](_0x52bed5['query'],{'showHidden':![],'depth':null}));switch(_0x11a97c[_0xad9d('0x42')]){case _0xad9d('0xdb'):if(_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdc')]&&_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdd')]){_0x50aa22=_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdd')];return db[_0xad9d('0xae')]['find']({'where':{'messageId':_0x52bed5[_0xad9d('0x45')][_0xad9d('0xdc')]}});}break;}}})[_0xad9d('0x22')](handleEntityNotFound(_0x2c28f7,null))['then'](function(_0x262810){if(_0x262810){_0x39a704=_0x262810;switch(_0x2f7feb[_0xad9d('0x42')]){case _0xad9d('0xdb'):if(_0x50aa22==='2'||_0x50aa22==='6'){return _0x39a704[_0xad9d('0x67')]({'read':!![]});}else{logger['error'](_0xad9d('0x27'),_0xad9d('0x2f'),_0xad9d('0xdb'),util[_0xad9d('0xcd')](_0x52bed5[_0xad9d('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x39a704;}})[_0xad9d('0x22')](respondWithResult(_0x2c28f7,null))[_0xad9d('0x2d')](handleError(_0x2c28f7,null));};exports[_0xad9d('0xde')]=function(_0xea9a1f,_0x2e7b1a,_0x1e057c){return db['SmsAccount'][_0xad9d('0x63')]({'where':{'id':_0xea9a1f[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x2e7b1a,null))[_0xad9d('0x22')](function(_0x3704a7){if(_0x3704a7){return _0x3704a7[_0xad9d('0xde')](_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')],_[_0xad9d('0xa4')](_0xea9a1f[_0xad9d('0x5e')],[_0xad9d('0x74'),'id'])||{})[_0xad9d('0xa7')](function(_0x2a0620){for(var _0x8921ae=0x0;_0x8921ae<_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')][_0xad9d('0x4b')];_0x8921ae+=0x1){socket[_0xad9d('0xdf')](_0xad9d('0xe0'),{'UserId':Number(_0xea9a1f[_0xad9d('0x5e')][_0xad9d('0x74')][_0x8921ae]),'SmsAccountId':Number(_0xea9a1f[_0xad9d('0x5a')]['id'])});}return _0x2a0620;});}})['then'](respondWithResult(_0x2e7b1a,null))[_0xad9d('0x2d')](handleError(_0x2e7b1a,null));};exports['removeAgents']=function(_0x20f702,_0x3ef6b7,_0x5b3415){return db[_0xad9d('0x55')][_0xad9d('0x63')]({'where':{'id':_0x20f702[_0xad9d('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3ef6b7,null))[_0xad9d('0x22')](function(_0x4de444){if(_0x4de444){return _0x4de444[_0xad9d('0xe1')](_0x20f702[_0xad9d('0x45')]['ids'])[_0xad9d('0x22')](function(){if(_[_0xad9d('0xe2')](_0x20f702[_0xad9d('0x45')][_0xad9d('0x74')])){for(var _0x27baa7=0x0;_0x27baa7<_0x20f702[_0xad9d('0x45')]['ids'][_0xad9d('0x4b')];_0x27baa7+=0x1){socket[_0xad9d('0xdf')]('userSmsAccount:remove',{'UserId':Number(_0x20f702[_0xad9d('0x45')][_0xad9d('0x74')][_0x27baa7]),'SmsAccountId':Number(_0x20f702[_0xad9d('0x5a')]['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x20f702['query'][_0xad9d('0x74')]),'SmsAccountId':Number(_0x20f702[_0xad9d('0x5a')]['id'])});}});}})[_0xad9d('0x22')](respondWithStatusCode(_0x3ef6b7,null))[_0xad9d('0x2d')](handleError(_0x3ef6b7,null));};exports[_0xad9d('0xe3')]=function(_0x1f1bf6,_0x59d65c,_0x2bbf00){var _0x133cf5={};var _0x4aa39f={};var _0x217760;var _0x3b954f;return db[_0xad9d('0x55')][_0xad9d('0x71')]({'where':{'id':_0x1f1bf6[_0xad9d('0x5a')]['id']}})[_0xad9d('0x22')](handleEntityNotFound(_0x59d65c,null))[_0xad9d('0x22')](function(_0x1d7556){if(_0x1d7556){_0x217760=_0x1d7556;_0x4aa39f[_0xad9d('0x44')]=_[_0xad9d('0x46')](db['User'][_0xad9d('0x41')]);_0x4aa39f[_0xad9d('0x45')]=_[_0xad9d('0x46')](_0x1f1bf6['query']);_0x4aa39f[_0xad9d('0x47')]=_[_0xad9d('0x48')](_0x4aa39f[_0xad9d('0x44')],_0x4aa39f[_0xad9d('0x45')]);_0x133cf5['attributes']=_[_0xad9d('0x48')](_0x4aa39f[_0xad9d('0x44')],qs[_0xad9d('0x4a')](_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x4a')]));_0x133cf5[_0xad9d('0x49')]=_0x133cf5[_0xad9d('0x49')][_0xad9d('0x4b')]?_0x133cf5[_0xad9d('0x49')]:_0x4aa39f[_0xad9d('0x44')];_0x133cf5['order']=qs[_0xad9d('0x4e')](_0x1f1bf6['query']['sort']);_0x133cf5['where']=qs[_0xad9d('0x47')](_[_0xad9d('0x50')](_0x1f1bf6['query'],_0x4aa39f[_0xad9d('0x47')]));if(_0x1f1bf6['query'][_0xad9d('0x51')]){_0x133cf5[_0xad9d('0x4f')]=_['merge'](_0x133cf5[_0xad9d('0x4f')],{'$or':_[_0xad9d('0x40')](_0x133cf5['attributes'],function(_0x5a205d){var _0x4776ba={};_0x4776ba[_0x5a205d]={'$like':'%'+_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x51')]+'%'};return _0x4776ba;})});}_0x133cf5=_[_0xad9d('0x52')]({},_0x133cf5,_0x1f1bf6[_0xad9d('0x54')]);return _0x217760['getAgents'](_0x133cf5);}})[_0xad9d('0x22')](function(_0x5e2808){if(_0x5e2808){_0x3b954f=_0x5e2808['length'];if(!_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x6d')](_0xad9d('0x4c'))){_0x133cf5['limit']=qs[_0xad9d('0x4d')](_0x1f1bf6['query'][_0xad9d('0x4d')]);_0x133cf5[_0xad9d('0x31')]=qs['offset'](_0x1f1bf6[_0xad9d('0x45')][_0xad9d('0x31')]);}return _0x217760['getAgents'](_0x133cf5);}})[_0xad9d('0x22')](function(_0x1f9836){if(_0x1f9836){return _0x1f9836?{'count':_0x3b954f,'rows':_0x1f9836}:null;}})['then'](respondWithResult(_0x59d65c,null))[_0xad9d('0x2d')](handleError(_0x59d65c,null));};
\ No newline at end of file
+var _0x386f=['error','code','message','sendStatus','status','json','undefined','limit','count','offset','Content-Range','reject','update','destroy','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','create','user','get','role','SmsAccounts','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','SmsAccountId','Disposition','findOne','rows','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','notify','sms','SmsApplication','Applications','account','orderBy','priority','asc','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','mobile','From','Body','MessageSid','skebby','sender','text','from','messageId','message_id','plivo','Text','infobip','results','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','Contacts','contact','SmsInteraction','spread','interaction','autoclose','applications','push','close','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','set','Content-Type','text/xml','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','finally','order','getApplications','getInteractions','Contact','fullname','internal','color','tag','to\x20is\x20mandatory','List','DESC','dataValues','Messages','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','statusInt','requestid','status_code','groupName','DELIVERED','clicksend','error_code','DELIVERED_TO_GATEWAY','bandwidth','DELIVRD','state','message-id','csc','addAgents','emit','userSmsAccount:save','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x386f,0xb8));var _0xf386=function(_0x516b60,_0x32a762){_0x516b60=_0x516b60-0x0;var _0x51ee21=_0x386f[_0x516b60];return _0x51ee21;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf386('0x0'));var zipdir=require(_0xf386('0x1'));var jsonpatch=require(_0xf386('0x2'));var rp=require(_0xf386('0x3'));var moment=require(_0xf386('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf386('0x5'));var path=require(_0xf386('0x6'));var sox=require(_0xf386('0x7'));var csv=require('to-csv');var ejs=require(_0xf386('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf386('0x9'));var squel=require(_0xf386('0xa'));var crypto=require('crypto');var jsforce=require(_0xf386('0xb'));var deskjs=require(_0xf386('0xc'));var toCsv=require(_0xf386('0xd'));var querystring=require('querystring');var Papa=require(_0xf386('0xe'));var Redis=require(_0xf386('0xf'));var authService=require(_0xf386('0x10'));var qs=require(_0xf386('0x11'));var as=require(_0xf386('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf386('0x13'))(_0xf386('0x14'));var utils=require(_0xf386('0x15'));var config=require(_0xf386('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf386('0x17'))['db'];config[_0xf386('0x18')]=_[_0xf386('0x19')](config[_0xf386('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xf386('0x1a'))(new Redis(config[_0xf386('0x18')]));require('./smsAccount.socket')[_0xf386('0x1b')](socket);var jayson=require(_0xf386('0x1c'));var client=jayson[_0xf386('0x1d')][_0xf386('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x5e2c1d,_0x2e552a,_0xd11ffc,_0x589ce2){return new BPromise(function(_0x41a686,_0x17915e){var _0x311d47=_0x589ce2||client;return _0x311d47['request'](_0x5e2c1d,_0xd11ffc)[_0xf386('0x1f')](function(_0x563355){logger[_0xf386('0x20')](_0xf386('0x21'),_0x2e552a,_0xf386('0x22'));logger[_0xf386('0x23')](_0xf386('0x24'),_0x2e552a,_0xf386('0x22'),JSON['stringify'](_0x563355));if(_0x563355[_0xf386('0x25')]){if(_0x563355['error'][_0xf386('0x26')]===0x1f4){logger['error'](_0xf386('0x21'),_0x2e552a,_0x563355[_0xf386('0x25')][_0xf386('0x27')]);return _0x17915e(_0x563355[_0xf386('0x25')]['message']);}logger[_0xf386('0x25')](_0xf386('0x21'),_0x2e552a,_0x563355[_0xf386('0x25')]['message']);return _0x41a686(_0x563355[_0xf386('0x25')]['message']);}else{logger[_0xf386('0x20')](_0xf386('0x21'),_0x2e552a,'request\x20sent');_0x41a686(_0x563355['result'][_0xf386('0x27')]);}})['catch'](function(_0x4561a1){logger[_0xf386('0x25')]('SmsAccount,\x20%s,\x20%s',_0x2e552a,_0x4561a1);_0x17915e(_0x4561a1);});});}function respondWithStatusCode(_0x206770,_0x496b7b){_0x496b7b=_0x496b7b||0xcc;return function(_0x35eef5){if(_0x35eef5){return _0x206770[_0xf386('0x28')](_0x496b7b);}return _0x206770[_0xf386('0x29')](_0x496b7b)['end']();};}function respondWithResult(_0x2b529d,_0x5cb202){_0x5cb202=_0x5cb202||0xc8;return function(_0x5d4c81){if(_0x5d4c81){return _0x2b529d['status'](_0x5cb202)[_0xf386('0x2a')](_0x5d4c81);}};}function respondWithFilteredResult(_0x3816e4,_0x2c8912){return function(_0x2d6b35){if(_0x2d6b35){var _0x4b439f=typeof _0x2c8912['offset']===_0xf386('0x2b')&&typeof _0x2c8912[_0xf386('0x2c')]===_0xf386('0x2b');var _0x45779e=_0x2d6b35[_0xf386('0x2d')];var _0x2dada6=_0x4b439f?0x0:_0x2c8912[_0xf386('0x2e')];var _0x27a5d5=_0x4b439f?_0x2d6b35['count']:_0x2c8912[_0xf386('0x2e')]+_0x2c8912['limit'];var _0x3f27dd;if(_0x27a5d5>=_0x45779e){_0x27a5d5=_0x45779e;_0x3f27dd=0xc8;}else{_0x3f27dd=0xce;}_0x3816e4[_0xf386('0x29')](_0x3f27dd);return _0x3816e4['set'](_0xf386('0x2f'),_0x2dada6+'-'+_0x27a5d5+'/'+_0x45779e)['json'](_0x2d6b35);}return null;};}function patchUpdates(_0x3a57cc){return function(_0x184e4d){try{jsonpatch['apply'](_0x184e4d,_0x3a57cc,!![]);}catch(_0x4ac4a3){return BPromise[_0xf386('0x30')](_0x4ac4a3);}return _0x184e4d['save']();};}function saveUpdates(_0x6b1fee,_0x2ca470){return function(_0x3af406){if(_0x3af406){return _0x3af406[_0xf386('0x31')](_0x6b1fee)[_0xf386('0x1f')](function(_0x17e9ee){return _0x17e9ee;});}return null;};}function removeEntity(_0x2c6e6e,_0x1e0b00){return function(_0x4c02d7){if(_0x4c02d7){return _0x4c02d7[_0xf386('0x32')]()[_0xf386('0x1f')](function(){var _0x509b91=_0x4c02d7['get']({'plain':!![]});var _0x169a08='SmsAccounts';return db[_0xf386('0x33')]['destroy']({'where':{'type':_0x169a08,'resourceId':_0x509b91['id']}})[_0xf386('0x1f')](function(){return _0x4c02d7;});})['then'](function(){_0x2c6e6e[_0xf386('0x29')](0xcc)[_0xf386('0x34')]();});}};}function handleEntityNotFound(_0x2755ca,_0x2d8dc5){return function(_0x596cc1){if(!_0x596cc1){_0x2755ca[_0xf386('0x28')](0x194);}return _0x596cc1;};}function handleError(_0x174742,_0x3fe815){_0x3fe815=_0x3fe815||0x1f4;return function(_0x3340f1){logger[_0xf386('0x25')](_0x3340f1[_0xf386('0x35')]);if(_0x3340f1[_0xf386('0x36')]){delete _0x3340f1[_0xf386('0x36')];}_0x174742[_0xf386('0x29')](_0x3fe815)[_0xf386('0x37')](_0x3340f1);};}exports[_0xf386('0x38')]=function(_0x494a29,_0xe08167){var _0x4e2e77={'include':[{'model':db[_0xf386('0x39')],'as':_0xf386('0x3a')}]},_0x3662ed={},_0x52a273={'count':0x0,'rows':[]};var _0x2e37e2=_['map'](db[_0xf386('0x3b')]['rawAttributes'],function(_0x466510){return{'name':_0x466510[_0xf386('0x3c')],'type':_0x466510[_0xf386('0x3d')][_0xf386('0x3e')]};});_0x3662ed[_0xf386('0x3f')]=_[_0xf386('0x40')](_0x2e37e2,_0xf386('0x36'));_0x3662ed[_0xf386('0x41')]=_[_0xf386('0x42')](_0x494a29[_0xf386('0x41')]);_0x3662ed[_0xf386('0x43')]=_[_0xf386('0x44')](_0x3662ed[_0xf386('0x3f')],_0x3662ed['query']);_0x4e2e77['attributes']=_['intersection'](_0x3662ed['model'],qs['fields'](_0x494a29[_0xf386('0x41')][_0xf386('0x45')]));_0x4e2e77['attributes']=_0x4e2e77[_0xf386('0x46')][_0xf386('0x47')]?_0x4e2e77[_0xf386('0x46')]:_0x3662ed[_0xf386('0x3f')];if(!_0x494a29[_0xf386('0x41')][_0xf386('0x48')](_0xf386('0x49'))){_0x4e2e77['limit']=qs[_0xf386('0x2c')](_0x494a29['query']['limit']);_0x4e2e77['offset']=qs[_0xf386('0x2e')](_0x494a29[_0xf386('0x41')][_0xf386('0x2e')]);}_0x4e2e77['order']=qs['sort'](_0x494a29['query'][_0xf386('0x4a')]);_0x4e2e77[_0xf386('0x4b')]=qs['filters'](_[_0xf386('0x4c')](_0x494a29[_0xf386('0x41')],_0x3662ed[_0xf386('0x43')]),_0x2e37e2);if(_0x494a29[_0xf386('0x41')][_0xf386('0x4d')]){_0x4e2e77[_0xf386('0x4b')]=_[_0xf386('0x4e')](_0x4e2e77[_0xf386('0x4b')],{'$or':_[_0xf386('0x40')](_0x2e37e2,function(_0x166e32){if(_0x166e32['type']!==_0xf386('0x4f')){var _0x2e9ca4={};_0x2e9ca4[_0x166e32['name']]={'$like':'%'+_0x494a29['query'][_0xf386('0x4d')]+'%'};return _0x2e9ca4;}})});}_0x4e2e77=_[_0xf386('0x4e')]({},_0x4e2e77,_0x494a29['options']);var _0x4ee3fb={'where':_0x4e2e77[_0xf386('0x4b')]};return db[_0xf386('0x3b')]['count'](_0x4ee3fb)[_0xf386('0x1f')](function(_0x176c1e){_0x52a273[_0xf386('0x2d')]=_0x176c1e;if(_0x494a29[_0xf386('0x41')][_0xf386('0x50')]){_0x4e2e77[_0xf386('0x51')]=[{'all':!![]}];}return db['SmsAccount'][_0xf386('0x52')](_0x4e2e77);})[_0xf386('0x1f')](function(_0x146c39){_0x52a273['rows']=_0x146c39;return _0x52a273;})['then'](respondWithFilteredResult(_0xe08167,_0x4e2e77))[_0xf386('0x53')](handleError(_0xe08167,null));};exports[_0xf386('0x54')]=function(_0x52e5f4,_0x1006b9){var _0x2beae8={'raw':![],'where':{'id':_0x52e5f4[_0xf386('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0xf386('0x3a')}]},_0x57f9f5={};_0x57f9f5[_0xf386('0x3f')]=_['keys'](db[_0xf386('0x3b')][_0xf386('0x56')]);_0x57f9f5['query']=_[_0xf386('0x42')](_0x52e5f4[_0xf386('0x41')]);_0x57f9f5[_0xf386('0x43')]=_[_0xf386('0x44')](_0x57f9f5[_0xf386('0x3f')],_0x57f9f5[_0xf386('0x41')]);_0x2beae8[_0xf386('0x46')]=_[_0xf386('0x44')](_0x57f9f5[_0xf386('0x3f')],qs[_0xf386('0x45')](_0x52e5f4[_0xf386('0x41')][_0xf386('0x45')]));_0x2beae8['attributes']=_0x2beae8[_0xf386('0x46')]['length']?_0x2beae8['attributes']:_0x57f9f5[_0xf386('0x3f')];if(_0x52e5f4['query'][_0xf386('0x50')]){_0x2beae8[_0xf386('0x51')]=[{'all':!![]}];}_0x2beae8=_[_0xf386('0x4e')]({},_0x2beae8,_0x52e5f4[_0xf386('0x57')]);return db[_0xf386('0x3b')][_0xf386('0x58')](_0x2beae8)['then'](handleEntityNotFound(_0x1006b9,null))['then'](respondWithResult(_0x1006b9,null))[_0xf386('0x53')](handleError(_0x1006b9,null));};exports[_0xf386('0x59')]=function(_0x2f6b99,_0x3d3bf1){return db[_0xf386('0x3b')][_0xf386('0x59')](_0x2f6b99['body'],{})['then'](function(_0x118471){var _0x3020bb=_0x2f6b99[_0xf386('0x5a')][_0xf386('0x5b')]({'plain':!![]});if(!_0x3020bb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3020bb[_0xf386('0x5c')]===_0xf386('0x5a')){var _0x437545=_0x118471[_0xf386('0x5b')]({'plain':!![]});var _0x1d1555=_0xf386('0x5d');return db['UserProfileSection'][_0xf386('0x58')]({'where':{'name':_0x1d1555,'userProfileId':_0x3020bb[_0xf386('0x5e')]},'raw':!![]})['then'](function(_0x3d8f65){if(_0x3d8f65&&_0x3d8f65['autoAssociation']===0x0){return db['UserProfileResource'][_0xf386('0x59')]({'name':_0x437545[_0xf386('0x36')],'resourceId':_0x437545['id'],'type':_0x3d8f65['name'],'sectionId':_0x3d8f65['id']},{})[_0xf386('0x1f')](function(){return _0x118471;});}else{return _0x118471;}})[_0xf386('0x53')](function(_0x54e6a8){logger[_0xf386('0x25')](_0xf386('0x5f'),_0x54e6a8);throw _0x54e6a8;});}return _0x118471;})['then'](respondWithResult(_0x3d3bf1,0xc9))[_0xf386('0x53')](handleError(_0x3d3bf1,null));};exports[_0xf386('0x31')]=function(_0x139ffa,_0x15572f){if(_0x139ffa[_0xf386('0x60')]['id']){delete _0x139ffa[_0xf386('0x60')]['id'];}return db[_0xf386('0x3b')]['find']({'where':{'id':_0x139ffa['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xf386('0x1f')](handleEntityNotFound(_0x15572f,null))['then'](saveUpdates(_0x139ffa['body'],null))[_0xf386('0x1f')](respondWithResult(_0x15572f,null))[_0xf386('0x53')](handleError(_0x15572f,null));};exports[_0xf386('0x32')]=function(_0x49c1f3,_0x3ef635){return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x49c1f3[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x3ef635,null))['then'](removeEntity(_0x3ef635,null))[_0xf386('0x53')](handleError(_0x3ef635,null));};exports[_0xf386('0x61')]=function(_0x134266,_0x4ef9f8){return db[_0xf386('0x3b')][_0xf386('0x61')]()[_0xf386('0x1f')](respondWithResult(_0x4ef9f8,null))['catch'](handleError(_0x4ef9f8,null));};exports[_0xf386('0x62')]=function(_0x1fc311,_0x3b35ea,_0x256f70){if(_0x1fc311['body']['id']){delete _0x1fc311['body']['id'];}return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x1fc311[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x3b35ea,null))[_0xf386('0x1f')](function(_0x40d74d){if(_0x40d74d){_0x1fc311[_0xf386('0x60')][_0xf386('0x63')]=_0x40d74d['id'];return db[_0xf386('0x64')][_0xf386('0x59')](_0x1fc311[_0xf386('0x60')]);}})[_0xf386('0x1f')](respondWithResult(_0x3b35ea,null))[_0xf386('0x53')](handleError(_0x3b35ea,null));};exports['getDispositions']=function(_0x357903,_0x13670a,_0x39ef09){var _0x2d7b4b={'raw':![],'where':{}};var _0x43785b={};var _0xe39a7d={'count':0x0,'rows':[]};return db['SmsAccount'][_0xf386('0x65')]({'where':{'id':_0x357903[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x13670a,null))[_0xf386('0x1f')](function(_0x58f24d){if(_0x58f24d){_0x43785b[_0xf386('0x3f')]=_[_0xf386('0x42')](db[_0xf386('0x64')]['rawAttributes']);_0x43785b[_0xf386('0x41')]=_[_0xf386('0x42')](_0x357903[_0xf386('0x41')]);_0x43785b[_0xf386('0x43')]=_[_0xf386('0x44')](_0x43785b[_0xf386('0x3f')],_0x43785b['query']);_0x2d7b4b[_0xf386('0x46')]=_[_0xf386('0x44')](_0x43785b[_0xf386('0x3f')],qs[_0xf386('0x45')](_0x357903['query'][_0xf386('0x45')]));_0x2d7b4b[_0xf386('0x46')]=_0x2d7b4b[_0xf386('0x46')][_0xf386('0x47')]?_0x2d7b4b['attributes']:_0x43785b['model'];if(!_0x357903[_0xf386('0x41')]['hasOwnProperty'](_0xf386('0x49'))){_0x2d7b4b[_0xf386('0x2c')]=qs['limit'](_0x357903[_0xf386('0x41')][_0xf386('0x2c')]);_0x2d7b4b['offset']=qs[_0xf386('0x2e')](_0x357903['query'][_0xf386('0x2e')]);}_0x2d7b4b['order']=qs[_0xf386('0x4a')](_0x357903[_0xf386('0x41')][_0xf386('0x4a')]);_0x2d7b4b[_0xf386('0x4b')]=qs[_0xf386('0x43')](_[_0xf386('0x4c')](_0x357903[_0xf386('0x41')],_0x43785b[_0xf386('0x43')]));_0x2d7b4b[_0xf386('0x4b')][_0xf386('0x63')]=_0x58f24d['id'];if(_0x357903[_0xf386('0x41')]['filter']){_0x2d7b4b[_0xf386('0x4b')]=_[_0xf386('0x4e')](_0x2d7b4b['where'],{'$or':_[_0xf386('0x40')](_0x2d7b4b[_0xf386('0x46')],function(_0x13fe68){var _0x49d87d={};_0x49d87d[_0x13fe68]={'$like':'%'+_0x357903[_0xf386('0x41')][_0xf386('0x4d')]+'%'};return _0x49d87d;})});}_0x2d7b4b=_[_0xf386('0x4e')]({},_0x2d7b4b,_0x357903[_0xf386('0x57')]);return db[_0xf386('0x64')][_0xf386('0x2d')]({'where':_0x2d7b4b[_0xf386('0x4b')]})[_0xf386('0x1f')](function(_0x17e0f0){_0xe39a7d['count']=_0x17e0f0;if(_0x357903[_0xf386('0x41')]['includeAll']){_0x2d7b4b['include']=[{'all':!![]}];}return db[_0xf386('0x64')][_0xf386('0x52')](_0x2d7b4b);})[_0xf386('0x1f')](function(_0x49fd41){_0xe39a7d[_0xf386('0x66')]=_0x49fd41;return _0xe39a7d;});}})[_0xf386('0x1f')](respondWithFilteredResult(_0x13670a,_0x2d7b4b))['catch'](handleError(_0x13670a,null));};exports['removeDispositions']=function(_0x62b55a,_0x5f34a5,_0xb50712){return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x62b55a[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x5f34a5,null))[_0xf386('0x1f')](function(_0x1caf77){if(_0x1caf77){return _0x1caf77['removeDispositions'](_0x62b55a[_0xf386('0x41')]['ids']);}})[_0xf386('0x1f')](respondWithStatusCode(_0x5f34a5,null))[_0xf386('0x53')](handleError(_0x5f34a5,null));};exports[_0xf386('0x67')]=function(_0x26deb4,_0x180fc7,_0x5bf040){if(_0x26deb4['body']['id']){delete _0x26deb4[_0xf386('0x60')]['id'];}return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x26deb4[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x180fc7,null))['then'](function(_0x659f91){if(_0x659f91){_0x26deb4[_0xf386('0x60')][_0xf386('0x63')]=_0x659f91['id'];return db[_0xf386('0x68')][_0xf386('0x59')](_0x26deb4[_0xf386('0x60')]);}})[_0xf386('0x1f')](respondWithResult(_0x180fc7,null))[_0xf386('0x53')](handleError(_0x180fc7,null));};exports[_0xf386('0x69')]=function(_0xb8594d,_0x3d20f9,_0x1f4fd7){var _0x24dd3d={'raw':![],'where':{}};var _0x324c94={};var _0x5c8637={'count':0x0,'rows':[]};return db[_0xf386('0x3b')][_0xf386('0x65')]({'where':{'id':_0xb8594d[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x3d20f9,null))[_0xf386('0x1f')](function(_0x30557b){if(_0x30557b){_0x324c94[_0xf386('0x3f')]=_[_0xf386('0x42')](db[_0xf386('0x68')][_0xf386('0x56')]);_0x324c94['query']=_[_0xf386('0x42')](_0xb8594d['query']);_0x324c94[_0xf386('0x43')]=_[_0xf386('0x44')](_0x324c94['model'],_0x324c94[_0xf386('0x41')]);_0x24dd3d[_0xf386('0x46')]=_[_0xf386('0x44')](_0x324c94[_0xf386('0x3f')],qs[_0xf386('0x45')](_0xb8594d[_0xf386('0x41')][_0xf386('0x45')]));_0x24dd3d[_0xf386('0x46')]=_0x24dd3d[_0xf386('0x46')]['length']?_0x24dd3d['attributes']:_0x324c94[_0xf386('0x3f')];if(!_0xb8594d['query'][_0xf386('0x48')](_0xf386('0x49'))){_0x24dd3d[_0xf386('0x2c')]=qs[_0xf386('0x2c')](_0xb8594d[_0xf386('0x41')][_0xf386('0x2c')]);_0x24dd3d[_0xf386('0x2e')]=qs[_0xf386('0x2e')](_0xb8594d[_0xf386('0x41')][_0xf386('0x2e')]);}_0x24dd3d['order']=qs[_0xf386('0x4a')](_0xb8594d[_0xf386('0x41')]['sort']);_0x24dd3d[_0xf386('0x4b')]=qs[_0xf386('0x43')](_[_0xf386('0x4c')](_0xb8594d[_0xf386('0x41')],_0x324c94[_0xf386('0x43')]));_0x24dd3d[_0xf386('0x4b')][_0xf386('0x63')]=_0x30557b['id'];if(_0xb8594d[_0xf386('0x41')][_0xf386('0x4d')]){_0x24dd3d[_0xf386('0x4b')]=_[_0xf386('0x4e')](_0x24dd3d[_0xf386('0x4b')],{'$or':_[_0xf386('0x40')](_0x24dd3d[_0xf386('0x46')],function(_0x424ebc){var _0x529738={};_0x529738[_0x424ebc]={'$like':'%'+_0xb8594d[_0xf386('0x41')][_0xf386('0x4d')]+'%'};return _0x529738;})});}_0x24dd3d=_['merge']({},_0x24dd3d,_0xb8594d[_0xf386('0x57')]);return db[_0xf386('0x68')][_0xf386('0x2d')]({'where':_0x24dd3d['where']})[_0xf386('0x1f')](function(_0x5cfbde){_0x5c8637[_0xf386('0x2d')]=_0x5cfbde;if(_0xb8594d[_0xf386('0x41')][_0xf386('0x50')]){_0x24dd3d[_0xf386('0x51')]=[{'all':!![]}];}return db[_0xf386('0x68')][_0xf386('0x52')](_0x24dd3d);})[_0xf386('0x1f')](function(_0x51f208){_0x5c8637[_0xf386('0x66')]=_0x51f208;return _0x5c8637;});}})[_0xf386('0x1f')](respondWithFilteredResult(_0x3d20f9,_0x24dd3d))[_0xf386('0x53')](handleError(_0x3d20f9,null));};exports[_0xf386('0x6a')]=function(_0x286f30,_0xd7703f,_0x138831){return db[_0xf386('0x3b')]['find']({'where':{'id':_0x286f30[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0xd7703f,null))[_0xf386('0x1f')](function(_0x2ead71){if(_0x2ead71){return _0x2ead71[_0xf386('0x6a')](_0x286f30[_0xf386('0x41')][_0xf386('0x6b')]);}})[_0xf386('0x1f')](respondWithStatusCode(_0xd7703f,null))[_0xf386('0x53')](handleError(_0xd7703f,null));};exports[_0xf386('0x6c')]=function(_0x18f8ef,_0x2ed1fa,_0x5ba31e){var _0x2ef3b5={'channel':_0xf386('0x6d')};var _0x3053fd=[];var _0x55f8f6=[];var _0x1120a5={};return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x18f8ef['params']['id']},'include':[{'model':db[_0xf386('0x6e')],'as':_0xf386('0x6f')}]})['then'](handleEntityNotFound(_0x2ed1fa,null))['then'](function(_0x2c1516){_0x2ef3b5[_0xf386('0x70')]=_0x2c1516;_0x2ef3b5['applications']=_[_0xf386('0x71')](_0x2c1516['Applications'],[_0xf386('0x72')],[_0xf386('0x73')]);if(_0x2ef3b5[_0xf386('0x70')][_0xf386('0x6f')]){delete _0x2ef3b5['account'][_0xf386('0x6f')];}return db[_0xf386('0x74')]['describe']();})['then'](function(_0xbc12a7){if(!_0xbc12a7){throw new db[(_0xf386('0x75'))]['ValidationError']('no\x20available\x20attributes');}_0x3053fd=_[_0xf386('0x76')](_[_0xf386('0x42')](_0xbc12a7),[_0xf386('0x77'),_0xf386('0x78')]);_0x55f8f6=_[_0xf386('0x76')](_['keys'](_0xbc12a7),[_0xf386('0x77'),'updatedAt',_0xf386('0x79'),_0xf386('0x7a')]);_0x2ef3b5[_0xf386('0x60')]={'mapKey':_0xf386('0x7b')};if(_0x2ef3b5[_0xf386('0x70')][_0xf386('0x3d')]){switch(_0x2ef3b5[_0xf386('0x70')][_0xf386('0x3d')]){case'twilio':_0x2ef3b5[_0xf386('0x60')]['from']=_0x18f8ef[_0xf386('0x60')][_0xf386('0x7c')];_0x2ef3b5['body'][_0xf386('0x60')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x7d')];_0x2ef3b5[_0xf386('0x60')]['messageId']=_0x18f8ef[_0xf386('0x60')][_0xf386('0x7e')];break;case _0xf386('0x7f'):_0x2ef3b5[_0xf386('0x60')]['from']='+'+_0x18f8ef[_0xf386('0x60')][_0xf386('0x80')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]=_0x18f8ef['body'][_0xf386('0x81')];break;case'connectel':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x82')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x27')];break;case'clicksend':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]=_0x18f8ef['body']['from'];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]=_0x18f8ef['body'][_0xf386('0x60')];_0x2ef3b5['body'][_0xf386('0x83')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x84')];break;case _0xf386('0x85'):_0x2ef3b5['body']['from']=_0x18f8ef[_0xf386('0x60')]['From'];_0x2ef3b5['body'][_0xf386('0x60')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x86')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x83')]=_0x18f8ef[_0xf386('0x60')]['MessageUUID'];break;case _0xf386('0x87'):_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]='+'+_0x18f8ef[_0xf386('0x60')][_0xf386('0x88')][0x0]['from'];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x88')][0x0][_0xf386('0x81')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x83')]=_0x18f8ef['body'][_0xf386('0x88')][0x0][_0xf386('0x83')];break;case'csc':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]=_0x18f8ef['body']['originatingAddress'];_0x2ef3b5['body']['body']=_0x18f8ef[_0xf386('0x60')][_0xf386('0x89')][_0xf386('0x27')];break;case _0xf386('0x8a'):_0x2ef3b5['body'][_0xf386('0x82')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x8b')];_0x2ef3b5['body'][_0xf386('0x60')]=_0x18f8ef[_0xf386('0x60')]['text'];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x83')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x8c')];break;case'bandwidth':_0x2ef3b5['body'][_0xf386('0x83')]=_0x18f8ef[_0xf386('0x60')][0x0]['message']['id'];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]=_0x18f8ef[_0xf386('0x60')][0x0][_0xf386('0x27')][_0xf386('0x82')];_0x2ef3b5['body']['body']=_0x18f8ef[_0xf386('0x60')][0x0]['message']['text'];break;case _0xf386('0x8d'):_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')]=_0x18f8ef[_0xf386('0x60')][_0xf386('0x82')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]=_0x18f8ef['body'][_0xf386('0x27')];_0x2ef3b5[_0xf386('0x60')][_0xf386('0x83')]=_0x18f8ef['body'][_0xf386('0x8e')];break;}}if(_0x2ef3b5[_0xf386('0x60')]['id']){delete _0x2ef3b5[_0xf386('0x60')]['id'];}if(_[_0xf386('0x8f')](_0x2ef3b5['body']['from'])){throw new db[(_0xf386('0x75'))]['ValidationError'](_0xf386('0x90'));}if(_[_0xf386('0x8f')](_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')])||_0x2ef3b5[_0xf386('0x60')][_0xf386('0x60')]===''){throw new db['Sequelize'][(_0xf386('0x91'))](_0xf386('0x92'));}if(_['isNil'](_0x2ef3b5[_0xf386('0x60')][_0xf386('0x93')])){throw new db['Sequelize'][(_0xf386('0x91'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x55f8f6);}if(!_[_0xf386('0x94')](_0x55f8f6,_0x2ef3b5[_0xf386('0x60')][_0xf386('0x93')])){throw new db[(_0xf386('0x75'))][(_0xf386('0x91'))](_0xf386('0x95')+_0x55f8f6);}_0x1120a5[_0x2ef3b5['body'][_0xf386('0x93')]]=_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')];return db[_0xf386('0x96')][_0xf386('0x58')]({'where':{'id':_0x2ef3b5[_0xf386('0x70')][_0xf386('0x7a')]},'include':[{'model':db[_0xf386('0x74')],'as':'Contacts','where':_0x1120a5,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0xf386('0x1f')](handleEntityNotFound(_0x2ed1fa,null))[_0xf386('0x1f')](function(_0x3f0ccd){if(_0x3f0ccd){_0x2ef3b5[_0xf386('0x97')]=_['omit'](_0x3f0ccd,[_0xf386('0x98')]);if(_0x3f0ccd[_0xf386('0x98')]['length']){return _0x3f0ccd[_0xf386('0x98')][0x0];}var _0x4f834b=_[_0xf386('0x19')](_0x2ef3b5[_0xf386('0x60')],{'firstName':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')],'ListId':_0x3f0ccd['id']});_0x4f834b[_0x2ef3b5[_0xf386('0x60')]['mapKey']]=_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')];return db[_0xf386('0x74')][_0xf386('0x59')](_0x4f834b,{'fields':_0x3053fd,'raw':!![]});}})['then'](handleEntityNotFound(_0x2ed1fa,null))['then'](function(_0x261858){if(_0x261858){_0x2ef3b5[_0xf386('0x99')]=_0x261858;var _0x3933e9={'ContactId':_0x261858['id'],'phone':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')],'SmsAccountId':_0x18f8ef[_0xf386('0x55')]['id']};var _0x5efe66={'ContactId':_0x261858['id'],'SmsAccountId':_0x18f8ef[_0xf386('0x55')]['id'],'closed':![]};return db[_0xf386('0x9a')][_0xf386('0x58')]({'where':_0x5efe66})['then'](function(_0x27816f){if(_0x27816f){return[_0x27816f,![]];}return db[_0xf386('0x9a')][_0xf386('0x59')](_0x3933e9)['then'](function(_0x1e9c54){return[_0x1e9c54,!![]];});});}})[_0xf386('0x9b')](function(_0x34d8fa,_0x36672e){_0x2ef3b5[_0xf386('0x9c')]=_0x34d8fa[_0xf386('0x5b')]({'plain':!![]});_0x2ef3b5[_0xf386('0x9c')]['created']=![];if(_0x36672e){if(_0x2ef3b5[_0xf386('0x70')][_0xf386('0x9d')]){_0x2ef3b5[_0xf386('0x9e')][_0xf386('0x9f')]({'id':0x0,'priority':_0x2ef3b5[_0xf386('0x9e')][_0xf386('0x47')]+0x1,'app':_0xf386('0xa0'),'appdata':'unmanaged','interval':_0xf386('0xa1')});}_0x2ef3b5[_0xf386('0x9c')][_0xf386('0xa2')]=!![];}return db[_0xf386('0xa3')][_0xf386('0x59')]({'phone':_0x2ef3b5[_0xf386('0x60')][_0xf386('0x82')],'messageId':_0x2ef3b5['body']['messageId'],'body':_0x2ef3b5['body'][_0xf386('0x60')],'SmsAccountId':_0x18f8ef[_0xf386('0x55')]['id'],'SmsInteractionId':_0x34d8fa['id'],'direction':'in','ContactId':_0x34d8fa[_0xf386('0xa4')],'AttachmentId':_0x2ef3b5[_0xf386('0x60')][_0xf386('0xa5')]});})[_0xf386('0x1f')](function(_0x55a192){_0x2ef3b5[_0xf386('0x27')]=_0x55a192;if(_0x2ef3b5[_0xf386('0x9c')][_0xf386('0xa6')]){return db[_0xf386('0xa7')][_0xf386('0x58')]({'attributes':['id','name'],'where':{'id':_0x2ef3b5['interaction'][_0xf386('0xa6')]}})[_0xf386('0x1f')](function(_0x130fed){if(_0x130fed){_0x2ef3b5[_0xf386('0x9e')][_0xf386('0xa8')]({'id':0x0,'priority':0x0,'app':_0xf386('0xa9'),'appdata':_0x130fed[_0xf386('0x36')]+','+(_0x2ef3b5[_0xf386('0x70')]['waitForTheAssignedAgent']||0xa),'interval':_0xf386('0xa1')});}return respondWithRpcPromise('Start','startRouting',_0x2ef3b5);});}return respondWithRpcPromise(_0xf386('0xaa'),_0xf386('0xab'),_0x2ef3b5);})['then'](function(_0xe24f66){if(_0xe24f66){var _0x45ff7b=0xc8;var _0x273d3f=_0xf386('0xac');logger[_0xf386('0x20')](_0xf386('0x24'),_0x273d3f,_0x45ff7b,_0xf386('0xad'));logger[_0xf386('0x23')](_0xf386('0xae'),_0x273d3f,_0x45ff7b,_0xf386('0xad'),JSON['stringify'](_0xe24f66));if(_0x2ef3b5['account'][_0xf386('0x3d')]===_0xf386('0xaf')){return _0x2ed1fa['status'](_0x45ff7b)[_0xf386('0xb0')](_0xf386('0xb1'),_0xf386('0xb2'))[_0xf386('0x37')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x2ed1fa[_0xf386('0x29')](_0x45ff7b)[_0xf386('0x2a')](_0xe24f66);}}})['catch'](handleError(_0x2ed1fa,null));};exports[_0xf386('0xb3')]=function(_0x34d049,_0x1220dc){var _0x9d2781=_0x34d049[_0xf386('0x55')]['id'];var _0xcaf807=_0x34d049[_0xf386('0x60')];var _0x5ec7d6=0xc8;var _0x1bf7ea=null;return db[_0xf386('0xb4')][_0xf386('0xb5')]({'isolationLevel':db[_0xf386('0xb4')]['Transaction'][_0xf386('0xb6')][_0xf386('0xb7')]},function(_0x287258){return db[_0xf386('0x3b')]['findOne']({'where':{'id':_0x9d2781},'transaction':_0x287258})[_0xf386('0x1f')](function(_0x350255){if(_0x350255){return db[_0xf386('0x6e')][_0xf386('0x32')]({'where':{'SmsAccountId':_0x9d2781},'transaction':_0x287258})['then'](function(){var _0x23262e=_['map'](_0xcaf807,function(_0xc136a){_0xc136a['SmsAccountId']=_0x9d2781;return _0xc136a;});return db[_0xf386('0x6e')]['bulkCreate'](_0x23262e,{'transaction':_0x287258});});}else{_0x5ec7d6=0x194;_0x1bf7ea=[];}});})[_0xf386('0x1f')](function(){if(_0x5ec7d6!==0x194){return db[_0xf386('0x6e')]['findAndCountAll']({'where':{'SmsAccountId':_0x9d2781},'order':_0xf386('0x72')})[_0xf386('0x1f')](function(_0x271daa){_0x1bf7ea=_0x271daa;});}})[_0xf386('0x53')](function(_0x342a47){_0x5ec7d6=0x1f4;logger[_0xf386('0x25')](_0x342a47['stack']);if(_0x342a47[_0xf386('0x36')]){delete _0x342a47[_0xf386('0x36')];}_0x1bf7ea=_0x342a47;})[_0xf386('0xb8')](function(){if(_0x1bf7ea===null){_0x1220dc[_0xf386('0x28')](_0x5ec7d6);}else{if(_0x5ec7d6===0x1f4){_0x1220dc[_0xf386('0x29')](_0x5ec7d6)['send'](_0x1bf7ea);}else{_0x1220dc[_0xf386('0x29')](_0x5ec7d6)[_0xf386('0x2a')](_0x1bf7ea);}}});};exports['getApplications']=function(_0x35e4c9,_0x284bb9,_0x1cf762){var _0x354255={};var _0xd99ebe={};var _0x8e004f;var _0x220c76;return db['SmsAccount'][_0xf386('0x65')]({'where':{'id':_0x35e4c9[_0xf386('0x55')]['id']}})['then'](handleEntityNotFound(_0x284bb9,null))['then'](function(_0x2a7823){if(_0x2a7823){_0x8e004f=_0x2a7823;_0xd99ebe[_0xf386('0x3f')]=_[_0xf386('0x42')](db[_0xf386('0x6e')][_0xf386('0x56')]);_0xd99ebe[_0xf386('0x41')]=_[_0xf386('0x42')](_0x35e4c9[_0xf386('0x41')]);_0xd99ebe[_0xf386('0x43')]=_['intersection'](_0xd99ebe['model'],_0xd99ebe[_0xf386('0x41')]);_0x354255[_0xf386('0x46')]=_[_0xf386('0x44')](_0xd99ebe[_0xf386('0x3f')],qs[_0xf386('0x45')](_0x35e4c9[_0xf386('0x41')][_0xf386('0x45')]));_0x354255[_0xf386('0x46')]=_0x354255[_0xf386('0x46')]['length']?_0x354255['attributes']:_0xd99ebe[_0xf386('0x3f')];_0x354255[_0xf386('0xb9')]=qs[_0xf386('0x4a')](_0x35e4c9[_0xf386('0x41')][_0xf386('0x4a')]);_0x354255[_0xf386('0x4b')]=qs[_0xf386('0x43')](_[_0xf386('0x4c')](_0x35e4c9['query'],_0xd99ebe[_0xf386('0x43')]));if(_0x35e4c9[_0xf386('0x41')]['filter']){_0x354255[_0xf386('0x4b')]=_['merge'](_0x354255[_0xf386('0x4b')],{'$or':_[_0xf386('0x40')](_0x354255['attributes'],function(_0x1e8f04){var _0x1ad778={};_0x1ad778[_0x1e8f04]={'$like':'%'+_0x35e4c9[_0xf386('0x41')][_0xf386('0x4d')]+'%'};return _0x1ad778;})});}_0x354255=_[_0xf386('0x4e')]({},_0x354255,_0x35e4c9[_0xf386('0x57')]);return _0x8e004f['getApplications'](_0x354255);}})[_0xf386('0x1f')](function(_0x9c756b){if(_0x9c756b){_0x220c76=_0x9c756b[_0xf386('0x47')];if(!_0x35e4c9[_0xf386('0x41')][_0xf386('0x48')]('nolimit')){_0x354255[_0xf386('0x2c')]=qs['limit'](_0x35e4c9[_0xf386('0x41')]['limit']);_0x354255[_0xf386('0x2e')]=qs[_0xf386('0x2e')](_0x35e4c9[_0xf386('0x41')][_0xf386('0x2e')]);}return _0x8e004f[_0xf386('0xba')](_0x354255);}})[_0xf386('0x1f')](function(_0x28ac02){if(_0x28ac02){return _0x28ac02?{'count':_0x220c76,'rows':_0x28ac02}:null;}})[_0xf386('0x1f')](respondWithResult(_0x284bb9,null))[_0xf386('0x53')](handleError(_0x284bb9,null));};exports[_0xf386('0xbb')]=function(_0x4e416f,_0x45bda9,_0x13f769){var _0x5b9e4a={'raw':![],'where':{}};var _0x30f44a={};var _0x4690d2={'count':0x0,'rows':[]};return db[_0xf386('0x3b')][_0xf386('0x65')]({'where':{'id':_0x4e416f[_0xf386('0x55')]['id']}})['then'](handleEntityNotFound(_0x45bda9,null))['then'](function(_0x3c18d8){if(_0x3c18d8){_0x30f44a[_0xf386('0x3f')]=_[_0xf386('0x42')](db['SmsInteraction']['rawAttributes']);_0x30f44a[_0xf386('0x41')]=_[_0xf386('0x42')](_0x4e416f[_0xf386('0x41')]);_0x30f44a['filters']=_['intersection'](_0x30f44a[_0xf386('0x3f')],_0x30f44a[_0xf386('0x41')]);_0x5b9e4a[_0xf386('0x46')]=_['intersection'](_0x30f44a['model'],qs[_0xf386('0x45')](_0x4e416f['query'][_0xf386('0x45')]));_0x5b9e4a[_0xf386('0x46')]=_0x5b9e4a[_0xf386('0x46')][_0xf386('0x47')]?_0x5b9e4a[_0xf386('0x46')]:_0x30f44a['model'];if(!_0x4e416f['query']['hasOwnProperty'](_0xf386('0x49'))){_0x5b9e4a[_0xf386('0x2c')]=qs['limit'](_0x4e416f[_0xf386('0x41')][_0xf386('0x2c')]);_0x5b9e4a[_0xf386('0x2e')]=qs[_0xf386('0x2e')](_0x4e416f[_0xf386('0x41')][_0xf386('0x2e')]);}_0x5b9e4a[_0xf386('0xb9')]=qs[_0xf386('0x4a')](_0x4e416f['query'][_0xf386('0x4a')]);_0x5b9e4a[_0xf386('0x4b')]=qs[_0xf386('0x43')](_['pick'](_0x4e416f[_0xf386('0x41')],_0x30f44a[_0xf386('0x43')]));_0x5b9e4a[_0xf386('0x4b')][_0xf386('0x63')]=_0x3c18d8['id'];if(_0x4e416f['query'][_0xf386('0x4d')]){_0x5b9e4a['where']=_['merge'](_0x5b9e4a[_0xf386('0x4b')],{'$or':_[_0xf386('0x40')](_0x5b9e4a[_0xf386('0x46')],function(_0x18acda){var _0x468549={};_0x468549[_0x18acda]={'$like':'%'+_0x4e416f[_0xf386('0x41')][_0xf386('0x4d')]+'%'};return _0x468549;})});}_0x5b9e4a=_['merge']({},_0x5b9e4a,_0x4e416f[_0xf386('0x57')]);return db[_0xf386('0x9a')][_0xf386('0x2d')]({'where':_0x5b9e4a['where']})[_0xf386('0x1f')](function(_0x48ee8c){_0x4690d2['count']=_0x48ee8c;if(_0x4e416f[_0xf386('0x41')][_0xf386('0x50')]){_0x5b9e4a[_0xf386('0x51')]=[{'model':db['CmContact'],'as':_0xf386('0xbc'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xf386('0x36'),_0xf386('0xbd'),_0xf386('0xbe')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xf386('0x36'),_0xf386('0xbf')],'where':_0x4e416f[_0xf386('0x41')][_0xf386('0xc0')]?{'id':_0x4e416f[_0xf386('0x41')]['tag']}:undefined,'required':_0x4e416f[_0xf386('0x41')]['tag']?!![]:![]}];}return db[_0xf386('0x9a')][_0xf386('0x52')](_0x5b9e4a);})[_0xf386('0x1f')](function(_0x14f063){_0x4690d2['rows']=_0x14f063;return _0x4690d2;});}})[_0xf386('0x1f')](respondWithFilteredResult(_0x45bda9,_0x5b9e4a))[_0xf386('0x53')](handleError(_0x45bda9,null));};exports[_0xf386('0x37')]=function(_0x264a5d,_0x173a9d,_0x2c6cd1){var _0x59e048,_0x376e6c,_0x50e78e;if(_[_0xf386('0x8f')](_0x264a5d[_0xf386('0x60')][_0xf386('0x60')])||_0x264a5d[_0xf386('0x60')][_0xf386('0x60')]===''){throw new db['Sequelize'][(_0xf386('0x91'))](_0xf386('0x92'));}if(_[_0xf386('0x8f')](_0x264a5d[_0xf386('0x60')]['to'])){throw new db[(_0xf386('0x75'))][(_0xf386('0x91'))](_0xf386('0xc1'));}_0x59e048=_0x264a5d[_0xf386('0x60')]['to'];return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x264a5d[_0xf386('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0xf386('0xc2'),'include':[{'model':db[_0xf386('0x74')],'as':_0xf386('0x98'),'where':{'mobile':_0x59e048},'limit':0x1,'order':[[_0xf386('0x78'),_0xf386('0xc3')]]}]}]})[_0xf386('0x1f')](handleEntityNotFound(_0x173a9d,null))[_0xf386('0x1f')](function(_0x32d6a9){if(_0x32d6a9&&_0x32d6a9[_0xf386('0xc2')]){_0x376e6c=_0x32d6a9[_0xf386('0x5b')]({'plain':!![]});if(_0x376e6c['List']&&_0x376e6c['List'][_0xf386('0x98')][_0xf386('0x47')]){return _0x376e6c[_0xf386('0xc2')][_0xf386('0x98')][0x0];}return db['CmContact']['create'](_[_0xf386('0x19')](_0x264a5d[_0xf386('0x60')],{'firstName':_0x59e048,'mobile':_0x59e048,'phone':_0x59e048,'ListId':_0x376e6c[_0xf386('0x7a')]}));}})[_0xf386('0x1f')](handleEntityNotFound(_0x173a9d,null))[_0xf386('0x1f')](function(_0x2643ed){if(_0x2643ed){_0x50e78e=_0x2643ed;return db['SmsInteraction'][_0xf386('0x58')]({'where':{'ContactId':_0x50e78e['id'],'closed':![],'SmsAccountId':_0x376e6c['id']}})[_0xf386('0x1f')](function(_0x3a7b09){if(_0x3a7b09){return[_0x3a7b09,![]];}return db[_0xf386('0x9a')][_0xf386('0x59')]({'UserId':_0x264a5d[_0xf386('0x5a')]['id'],'ContactId':_0x50e78e['id'],'SmsAccountId':_0x376e6c['id'],'phone':_0x59e048,'firstMsgDirection':'out','Messages':[_[_0xf386('0x4e')](_0x264a5d['body'],{'read':![],'body':_0x264a5d[_0xf386('0x60')][_0xf386('0x60')],'phone':_0x59e048,'SmsAccountId':_0x376e6c['id'],'UserId':_0x264a5d[_0xf386('0x5a')]['id'],'ContactId':_0x50e78e['id']})]},{'include':[{'model':db['SmsMessage'],'as':'Messages'}]})['then'](function(_0x32fdc1){return[_0x32fdc1,!![]];});});}})['spread'](function(_0x19de03,_0x3d79b6){if(_0x3d79b6){return _0x19de03;}return db[_0xf386('0xa3')][_0xf386('0x59')](_[_0xf386('0x4e')](_0x264a5d[_0xf386('0x60')],{'read':![],'body':_0x264a5d['body']['body'],'phone':_0x59e048,'SmsAccountId':_0x376e6c['id'],'SmsInteractionId':_0x19de03['id'],'UserId':_0x264a5d[_0xf386('0x5a')]['id'],'ContactId':_0x50e78e['id']}))[_0xf386('0x1f')](function(_0x215629){_0x19de03[_0xf386('0xc4')][_0xf386('0xc5')]=[];_0x19de03[_0xf386('0xc4')]['Messages']['push'](_0x215629['dataValues']);return _0x19de03;});})['then'](respondWithResult(_0x173a9d,null))['catch'](handleError(_0x173a9d,null));};exports[_0xf386('0x29')]=function(_0x1fd7be,_0x178c6c,_0x31bcf0){if(_0x1fd7be['body']['id']){delete _0x1fd7be[_0xf386('0x60')]['id'];}var _0x2ac871,_0x67219e,_0x3f5dfa;return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x1fd7be[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x178c6c,null))[_0xf386('0x1f')](function(_0x20d52a){if(_0x20d52a){_0x3f5dfa=_0x20d52a;logger[_0xf386('0x23')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0xc6'),_0x20d52a[_0xf386('0x3d')],util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));switch(_0x20d52a['type']){case'skebby':if(_0x1fd7be[_0xf386('0x60')][_0xf386('0xc8')]&&_0x1fd7be[_0xf386('0x60')][_0xf386('0x29')]){_0x67219e=_0x1fd7be[_0xf386('0x60')][_0xf386('0x29')];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x1fd7be[_0xf386('0x60')][_0xf386('0xc8')]}});}break;case _0xf386('0xc9'):if(_0x1fd7be[_0xf386('0x60')]['requestid']&&_0x1fd7be[_0xf386('0x60')][_0xf386('0xca')]){_0x67219e=_0x1fd7be[_0xf386('0x60')][_0xf386('0xca')];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x1fd7be[_0xf386('0x60')][_0xf386('0xcb')]}});}break;case'clicksend':if(_0x1fd7be[_0xf386('0x60')][_0xf386('0x84')]&&_0x1fd7be[_0xf386('0x60')][_0xf386('0xcc')]){_0x67219e=_0x1fd7be[_0xf386('0x60')][_0xf386('0xcc')];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x1fd7be[_0xf386('0x60')][_0xf386('0x84')]}});}break;case _0xf386('0x87'):var _0x4613c1=_0x1fd7be[_0xf386('0x60')]['results'][0x0];if(_0x4613c1['messageId']&&_0x4613c1[_0xf386('0x29')][_0xf386('0xcd')]===_0xf386('0xce')){_0x67219e=_0x4613c1['status']['groupName'];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x4613c1[_0xf386('0x83')]}});}break;case'clickatell':if(_0x1fd7be['body'][_0xf386('0x83')]&&_0x1fd7be[_0xf386('0x60')][_0xf386('0x29')]){_0x67219e=_0x1fd7be[_0xf386('0x60')][_0xf386('0x29')];return db[_0xf386('0xa3')]['find']({'where':{'messageId':_0x1fd7be['body'][_0xf386('0x83')]}});}break;case'bandwidth':if(_0x1fd7be[_0xf386('0x60')][0x0]['message']['id']){_0x67219e=_0x1fd7be['body'][0x0]['type'];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x1fd7be[_0xf386('0x60')][0x0][_0xf386('0x27')]['id']}});}break;case _0xf386('0x8d'):if(_0x1fd7be[_0xf386('0x60')]['redif']&&_0x1fd7be[_0xf386('0x60')]['status']){_0x67219e=_0x1fd7be['body'][_0xf386('0x29')];return db[_0xf386('0xa3')]['find']({'where':{'messageId':_0x1fd7be[_0xf386('0x60')]['redif']}});}break;}}})['then'](handleEntityNotFound(_0x178c6c,null))[_0xf386('0x1f')](function(_0x556bf0){if(_0x556bf0){_0x2ac871=_0x556bf0;switch(_0x3f5dfa[_0xf386('0x3d')]){case'skebby':if(_0x67219e===_0xf386('0xce')){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0x7f'),util['inspect'](_0x1fd7be['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x67219e==='1'){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),'status',_0xf386('0x7f'),util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));}break;case _0xf386('0xcf'):if(!_0x1fd7be[_0xf386('0x60')][_0xf386('0xd0')]&&_0x67219e>=0xc8&&_0x67219e<=0xce){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0xcf'),util['inspect'](_0x1fd7be['body'],{'showHidden':![],'depth':null}));}break;case _0xf386('0x87'):var _0x20c328=_0x1fd7be[_0xf386('0x60')][_0xf386('0x88')][0x0];if(_0x20c328[_0xf386('0x29')][_0xf386('0xcd')]==='DELIVERED'){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf386('0x29'),_0xf386('0x87'),util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x67219e==_0xf386('0xd1')||_0x67219e=='RECEIVED_BY_RECIPIENT'){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),'status',_0xf386('0x8a'),util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));}break;case _0xf386('0xd2'):if(_0x67219e=='message-delivered'){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0xd2'),util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));}break;case _0xf386('0x8d'):if(_0x67219e===_0xf386('0xd3')||_0x67219e==='ACCEPTD'){return _0x2ac871[_0xf386('0x31')]({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0x8d'),util[_0xf386('0xc7')](_0x1fd7be[_0xf386('0x60')],{'showHidden':![],'depth':null}));}break;}return _0x2ac871;}})[_0xf386('0x1f')](respondWithResult(_0x178c6c,null))['catch'](handleError(_0x178c6c,null));};exports['statusGet']=function(_0x33e6ce,_0x2c735b,_0x3102c4){var _0x4d3a01,_0x3739bd,_0x57da96;return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x33e6ce[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x2c735b,null))['then'](function(_0xfe4558){if(_0xfe4558){_0x57da96=_0xfe4558;logger['debug'](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0xc6'),_0xfe4558[_0xf386('0x3d')],util['inspect'](_0x33e6ce[_0xf386('0x41')],{'showHidden':![],'depth':null}));switch(_0xfe4558[_0xf386('0x3d')]){case'csc':if(_0x33e6ce[_0xf386('0x41')]['message-id']&&_0x33e6ce['query']['state']){_0x3739bd=_0x33e6ce[_0xf386('0x41')][_0xf386('0xd4')];return db[_0xf386('0xa3')][_0xf386('0x58')]({'where':{'messageId':_0x33e6ce[_0xf386('0x41')][_0xf386('0xd5')]}});}break;}}})[_0xf386('0x1f')](handleEntityNotFound(_0x2c735b,null))[_0xf386('0x1f')](function(_0x68e345){if(_0x68e345){_0x4d3a01=_0x68e345;switch(_0x57da96[_0xf386('0x3d')]){case _0xf386('0xd6'):if(_0x3739bd==='2'||_0x3739bd==='6'){return _0x4d3a01['update']({'read':!![]});}else{logger[_0xf386('0x25')](_0xf386('0x24'),_0xf386('0x29'),_0xf386('0xd6'),util[_0xf386('0xc7')](_0x33e6ce[_0xf386('0x41')],{'showHidden':![],'depth':null}));};break;}return _0x4d3a01;}})[_0xf386('0x1f')](respondWithResult(_0x2c735b,null))[_0xf386('0x53')](handleError(_0x2c735b,null));};exports[_0xf386('0xd7')]=function(_0x17c8b4,_0x46381a,_0x27d820){return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x17c8b4[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x46381a,null))[_0xf386('0x1f')](function(_0x33b922){if(_0x33b922){return _0x33b922[_0xf386('0xd7')](_0x17c8b4[_0xf386('0x60')][_0xf386('0x6b')],_['omit'](_0x17c8b4['body'],['ids','id'])||{})[_0xf386('0x9b')](function(_0x2637c9){for(var _0x457d4a=0x0;_0x457d4a<_0x17c8b4['body'][_0xf386('0x6b')][_0xf386('0x47')];_0x457d4a+=0x1){socket[_0xf386('0xd8')](_0xf386('0xd9'),{'UserId':Number(_0x17c8b4[_0xf386('0x60')][_0xf386('0x6b')][_0x457d4a]),'SmsAccountId':Number(_0x17c8b4['params']['id'])});}return _0x2637c9;});}})[_0xf386('0x1f')](respondWithResult(_0x46381a,null))['catch'](handleError(_0x46381a,null));};exports[_0xf386('0xda')]=function(_0x2120c3,_0x215b2b,_0x1a749d){return db[_0xf386('0x3b')][_0xf386('0x58')]({'where':{'id':_0x2120c3['params']['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x215b2b,null))['then'](function(_0x388009){if(_0x388009){return _0x388009[_0xf386('0xda')](_0x2120c3[_0xf386('0x41')][_0xf386('0x6b')])[_0xf386('0x1f')](function(){if(_[_0xf386('0xdb')](_0x2120c3[_0xf386('0x41')][_0xf386('0x6b')])){for(var _0x2ea10c=0x0;_0x2ea10c<_0x2120c3['query'][_0xf386('0x6b')][_0xf386('0x47')];_0x2ea10c+=0x1){socket[_0xf386('0xd8')]('userSmsAccount:remove',{'UserId':Number(_0x2120c3[_0xf386('0x41')]['ids'][_0x2ea10c]),'SmsAccountId':Number(_0x2120c3[_0xf386('0x55')]['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x2120c3[_0xf386('0x41')][_0xf386('0x6b')]),'SmsAccountId':Number(_0x2120c3['params']['id'])});}});}})['then'](respondWithStatusCode(_0x215b2b,null))['catch'](handleError(_0x215b2b,null));};exports[_0xf386('0xdc')]=function(_0xd4b83b,_0x4fcb79,_0x1615e4){var _0x55189d={};var _0x4ff978={};var _0x9a009c;var _0x3e1bf1;return db[_0xf386('0x3b')][_0xf386('0x65')]({'where':{'id':_0xd4b83b[_0xf386('0x55')]['id']}})[_0xf386('0x1f')](handleEntityNotFound(_0x4fcb79,null))['then'](function(_0x51201b){if(_0x51201b){_0x9a009c=_0x51201b;_0x4ff978[_0xf386('0x3f')]=_[_0xf386('0x42')](db[_0xf386('0xa7')][_0xf386('0x56')]);_0x4ff978[_0xf386('0x41')]=_[_0xf386('0x42')](_0xd4b83b[_0xf386('0x41')]);_0x4ff978[_0xf386('0x43')]=_['intersection'](_0x4ff978['model'],_0x4ff978['query']);_0x55189d[_0xf386('0x46')]=_['intersection'](_0x4ff978[_0xf386('0x3f')],qs[_0xf386('0x45')](_0xd4b83b[_0xf386('0x41')][_0xf386('0x45')]));_0x55189d[_0xf386('0x46')]=_0x55189d[_0xf386('0x46')]['length']?_0x55189d[_0xf386('0x46')]:_0x4ff978[_0xf386('0x3f')];_0x55189d[_0xf386('0xb9')]=qs['sort'](_0xd4b83b[_0xf386('0x41')][_0xf386('0x4a')]);_0x55189d[_0xf386('0x4b')]=qs[_0xf386('0x43')](_[_0xf386('0x4c')](_0xd4b83b[_0xf386('0x41')],_0x4ff978[_0xf386('0x43')]));if(_0xd4b83b['query'][_0xf386('0x4d')]){_0x55189d[_0xf386('0x4b')]=_[_0xf386('0x4e')](_0x55189d[_0xf386('0x4b')],{'$or':_['map'](_0x55189d['attributes'],function(_0x83b774){var _0x3c9931={};_0x3c9931[_0x83b774]={'$like':'%'+_0xd4b83b['query']['filter']+'%'};return _0x3c9931;})});}_0x55189d=_[_0xf386('0x4e')]({},_0x55189d,_0xd4b83b[_0xf386('0x57')]);return _0x9a009c[_0xf386('0xdc')](_0x55189d);}})[_0xf386('0x1f')](function(_0x267477){if(_0x267477){_0x3e1bf1=_0x267477['length'];if(!_0xd4b83b[_0xf386('0x41')][_0xf386('0x48')](_0xf386('0x49'))){_0x55189d[_0xf386('0x2c')]=qs['limit'](_0xd4b83b['query'][_0xf386('0x2c')]);_0x55189d[_0xf386('0x2e')]=qs[_0xf386('0x2e')](_0xd4b83b['query'][_0xf386('0x2e')]);}return _0x9a009c[_0xf386('0xdc')](_0x55189d);}})['then'](function(_0x99cfd1){if(_0x99cfd1){return _0x99cfd1?{'count':_0x3e1bf1,'rows':_0x99cfd1}:null;}})[_0xf386('0x1f')](respondWithResult(_0x4fcb79,null))[_0xf386('0x53')](handleError(_0x4fcb79,null));};
\ No newline at end of file
index a9822f2..27f9924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111f=['../../mysqldb','SmsAccount','setMaxListeners','remove','hasOwnProperty','exports','events'];(function(_0xc1dfa3,_0x5efa32){var _0xff5c55=function(_0x1c45da){while(--_0x1c45da){_0xc1dfa3['push'](_0xc1dfa3['shift']());}};_0xff5c55(++_0x5efa32);}(_0x111f,0x1c6));var _0xf111=function(_0x3c395d,_0x510fe4){_0x3c395d=_0x3c395d-0x0;var _0x3cd0fb=_0x111f[_0x3c395d];return _0x3cd0fb;};'use strict';var EventEmitter=require(_0xf111('0x0'));var SmsAccount=require(_0xf111('0x1'))['db'][_0xf111('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xf111('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xf111('0x4')};function emitEvent(_0x2c9191){return function(_0x5776e5,_0x488c34,_0x68806e){SmsAccountEvents['emit'](_0x2c9191+':'+_0x5776e5['id'],_0x5776e5);SmsAccountEvents['emit'](_0x2c9191,_0x5776e5);_0x68806e(null);};}for(var e in events){if(events[_0xf111('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xf111('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0xe8fb=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','update'];(function(_0x6d0605,_0x4d6ffb){var _0x3ffa4a=function(_0x2d4e0c){while(--_0x2d4e0c){_0x6d0605['push'](_0x6d0605['shift']());}};_0x3ffa4a(++_0x4d6ffb);}(_0xe8fb,0x87));var _0xbe8f=function(_0xda51b9,_0x3bf137){_0xda51b9=_0xda51b9-0x0;var _0x1f9407=_0xe8fb[_0xda51b9];return _0x1f9407;};'use strict';var EventEmitter=require(_0xbe8f('0x0'));var SmsAccount=require(_0xbe8f('0x1'))['db'][_0xbe8f('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xbe8f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbe8f('0x4'),'afterDestroy':_0xbe8f('0x5')};function emitEvent(_0x3558a6){return function(_0x411038,_0x2e373c,_0x56d9e2){SmsAccountEvents[_0xbe8f('0x6')](_0x3558a6+':'+_0x411038['id'],_0x411038);SmsAccountEvents[_0xbe8f('0x6')](_0x3558a6,_0x411038);_0x56d9e2(null);};}for(var e in events){if(events[_0xbe8f('0x7')](e)){var event=events[e];SmsAccount[_0xbe8f('0x8')](e,emitEvent(event));}}module[_0xbe8f('0x9')]=SmsAccountEvents;
\ No newline at end of file
index 93901fe..442f5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1488=['bluebird','rimraf','../../config/environment','exports','define','sms_accounts','lodash','util','../../config/logger','moment'];(function(_0x461130,_0x1de0aa){var _0x2e225e=function(_0x170816){while(--_0x170816){_0x461130['push'](_0x461130['shift']());}};_0x2e225e(++_0x1de0aa);}(_0x1488,0x13c));var _0x8148=function(_0x481af3,_0x483fac){_0x481af3=_0x481af3-0x0;var _0x3354ea=_0x1488[_0x481af3];return _0x3354ea;};'use strict';var _=require(_0x8148('0x0'));var util=require(_0x8148('0x1'));var logger=require(_0x8148('0x2'))('api');var moment=require(_0x8148('0x3'));var BPromise=require(_0x8148('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8148('0x5'));var config=require(_0x8148('0x6'));var attributes=require('./smsAccount.attributes');module[_0x8148('0x7')]=function(_0x2dcdd1,_0xad9fb8){return _0x2dcdd1[_0x8148('0x8')]('SmsAccount',attributes,{'tableName':_0x8148('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd910=['sms_accounts','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x2966a3,_0xce332a){var _0x46818e=function(_0x535dbb){while(--_0x535dbb){_0x2966a3['push'](_0x2966a3['shift']());}};_0x46818e(++_0xce332a);}(_0xd910,0xb9));var _0x0d91=function(_0x437fa6,_0x39b486){_0x437fa6=_0x437fa6-0x0;var _0x4f5a98=_0xd910[_0x437fa6];return _0x4f5a98;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0d91('0x0'))('api');var moment=require(_0x0d91('0x1'));var BPromise=require(_0x0d91('0x2'));var rp=require(_0x0d91('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0d91('0x4'));var config=require('../../config/environment');var attributes=require('./smsAccount.attributes');module[_0x0d91('0x5')]=function(_0x218316,_0x362f34){return _0x218316[_0x0d91('0x6')]('SmsAccount',attributes,{'tableName':_0x0d91('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6ffdd7..27b5d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e4=['redis','localhost','socket.io-emitter','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSmsAccount','find','options','where','attributes','include','map','model','then','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults'];(function(_0x291c61,_0x27d265){var _0x35f9ad=function(_0xae30f8){while(--_0xae30f8){_0x291c61['push'](_0x291c61['shift']());}};_0x35f9ad(++_0x27d265);}(_0x36e4,0x15c));var _0x436e=function(_0x4fa5be,_0x2d5edf){_0x4fa5be=_0x4fa5be-0x0;var _0x109e5f=_0x36e4[_0x4fa5be];return _0x109e5f;};'use strict';var _=require('lodash');var util=require(_0x436e('0x0'));var moment=require(_0x436e('0x1'));var BPromise=require('bluebird');var rs=require(_0x436e('0x2'));var fs=require('fs');var Redis=require(_0x436e('0x3'));var db=require(_0x436e('0x4'))['db'];var utils=require(_0x436e('0x5'));var logger=require('../../config/logger')(_0x436e('0x6'));var config=require(_0x436e('0x7'));var jayson=require(_0x436e('0x8'));var client=jayson[_0x436e('0x9')][_0x436e('0xa')]({'port':0x232a});config['redis']=_[_0x436e('0xb')](config[_0x436e('0xc')],{'host':_0x436e('0xd'),'port':0x18eb});var socket=require(_0x436e('0xe'))(new Redis(config['redis']));require('./smsAccount.socket')['register'](socket);function respondWithRpcPromise(_0x494490,_0x56dec1,_0x44397d){return new BPromise(function(_0x4ac115,_0x5cc43d){return client[_0x436e('0xf')](_0x494490,_0x44397d)['then'](function(_0x29dbd5){logger[_0x436e('0x10')](_0x436e('0x11'),_0x56dec1,_0x436e('0x12'));logger[_0x436e('0x13')](_0x436e('0x14'),_0x56dec1,'request\x20sent',JSON[_0x436e('0x15')](_0x29dbd5));if(_0x29dbd5[_0x436e('0x16')]){if(_0x29dbd5[_0x436e('0x16')][_0x436e('0x17')]===0x1f4){logger['error'](_0x436e('0x11'),_0x56dec1,_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);return _0x5cc43d(_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);}logger[_0x436e('0x16')](_0x436e('0x11'),_0x56dec1,_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);return _0x4ac115(_0x29dbd5[_0x436e('0x16')][_0x436e('0x18')]);}else{logger[_0x436e('0x10')](_0x436e('0x11'),_0x56dec1,_0x436e('0x12'));_0x4ac115(_0x29dbd5[_0x436e('0x19')][_0x436e('0x18')]);}})[_0x436e('0x1a')](function(_0x594b60){logger[_0x436e('0x16')](_0x436e('0x11'),_0x56dec1,_0x594b60);_0x5cc43d(_0x594b60);});});}exports[_0x436e('0x1b')]=function(_0x40c3a7){var _0x53da36=this;return new Promise(function(_0x22b4b0,_0x4dfa5){return db['SmsAccount'][_0x436e('0x1c')]({'raw':_0x40c3a7['options']?_0x40c3a7[_0x436e('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x1e')]||null:null,'attributes':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x1f')]||null:null,'include':_0x40c3a7[_0x436e('0x1d')]?_0x40c3a7[_0x436e('0x1d')][_0x436e('0x20')]?_[_0x436e('0x21')](_0x40c3a7[_0x436e('0x1d')][_0x436e('0x20')],function(_0x7c8aee){return{'model':db[_0x7c8aee[_0x436e('0x22')]],'as':_0x7c8aee['as'],'attributes':_0x7c8aee[_0x436e('0x1f')],'include':_0x7c8aee['include']?_['map'](_0x7c8aee[_0x436e('0x20')],function(_0x540a0b){return{'model':db[_0x540a0b[_0x436e('0x22')]],'as':_0x540a0b['as'],'attributes':_0x540a0b[_0x436e('0x1f')],'include':_0x540a0b[_0x436e('0x20')]?_[_0x436e('0x21')](_0x540a0b[_0x436e('0x20')],function(_0x27365d){return{'model':db[_0x27365d[_0x436e('0x22')]],'as':_0x27365d['as'],'attributes':_0x27365d[_0x436e('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x436e('0x23')](function(_0x234375){logger['info'](_0x436e('0x1b'),_0x40c3a7);logger[_0x436e('0x13')](_0x436e('0x1b'),_0x40c3a7,JSON[_0x436e('0x15')](_0x234375));_0x22b4b0(_0x234375);})['catch'](function(_0x18aef7){logger[_0x436e('0x16')](_0x436e('0x1b'),_0x18aef7['message'],_0x40c3a7);_0x4dfa5(_0x53da36['error'](0x1f4,_0x18aef7['message']));});});};
\ No newline at end of file
+var _0xfd6e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','SmsAccount,\x20%s,\x20%s','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include','map','model','util','moment','randomstring','ioredis'];(function(_0x6d070a,_0x47e825){var _0x2c065d=function(_0xd0565c){while(--_0xd0565c){_0x6d070a['push'](_0x6d070a['shift']());}};_0x2c065d(++_0x47e825);}(_0xfd6e,0x1e6));var _0xefd6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfd6e[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require(_0xefd6('0x0'));var moment=require(_0xefd6('0x1'));var BPromise=require('bluebird');var rs=require(_0xefd6('0x2'));var fs=require('fs');var Redis=require(_0xefd6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xefd6('0x4'));var logger=require(_0xefd6('0x5'))(_0xefd6('0x6'));var config=require(_0xefd6('0x7'));var jayson=require(_0xefd6('0x8'));var client=jayson[_0xefd6('0x9')]['http']({'port':0x232a});config[_0xefd6('0xa')]=_['defaults'](config[_0xefd6('0xa')],{'host':_0xefd6('0xb'),'port':0x18eb});var socket=require(_0xefd6('0xc'))(new Redis(config[_0xefd6('0xa')]));require(_0xefd6('0xd'))[_0xefd6('0xe')](socket);function respondWithRpcPromise(_0x2539f2,_0x2a4429,_0x3b0489){return new BPromise(function(_0x423eeb,_0x20df57){return client[_0xefd6('0xf')](_0x2539f2,_0x3b0489)[_0xefd6('0x10')](function(_0x1dedad){logger[_0xefd6('0x11')]('SmsAccount,\x20%s,\x20%s',_0x2a4429,'request\x20sent');logger[_0xefd6('0x12')](_0xefd6('0x13'),_0x2a4429,_0xefd6('0x14'),JSON[_0xefd6('0x15')](_0x1dedad));if(_0x1dedad['error']){if(_0x1dedad[_0xefd6('0x16')]['code']===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2a4429,_0x1dedad[_0xefd6('0x16')][_0xefd6('0x17')]);return _0x20df57(_0x1dedad['error']['message']);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x2a4429,_0x1dedad['error']['message']);return _0x423eeb(_0x1dedad[_0xefd6('0x16')]['message']);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x2a4429,'request\x20sent');_0x423eeb(_0x1dedad['result'][_0xefd6('0x17')]);}})[_0xefd6('0x18')](function(_0x45e7fb){logger[_0xefd6('0x16')](_0xefd6('0x19'),_0x2a4429,_0x45e7fb);_0x20df57(_0x45e7fb);});});}exports[_0xefd6('0x1a')]=function(_0x5ac502){var _0x34a182=this;return new Promise(function(_0x254c34,_0x362c03){return db[_0xefd6('0x1b')][_0xefd6('0x1c')]({'raw':_0x5ac502[_0xefd6('0x1d')]?_0x5ac502[_0xefd6('0x1d')][_0xefd6('0x1e')]===undefined?!![]:![]:!![],'where':_0x5ac502['options']?_0x5ac502[_0xefd6('0x1d')]['where']||null:null,'attributes':_0x5ac502[_0xefd6('0x1d')]?_0x5ac502[_0xefd6('0x1d')][_0xefd6('0x1f')]||null:null,'include':_0x5ac502['options']?_0x5ac502['options'][_0xefd6('0x20')]?_[_0xefd6('0x21')](_0x5ac502[_0xefd6('0x1d')][_0xefd6('0x20')],function(_0xbc8b47){return{'model':db[_0xbc8b47[_0xefd6('0x22')]],'as':_0xbc8b47['as'],'attributes':_0xbc8b47['attributes'],'include':_0xbc8b47['include']?_[_0xefd6('0x21')](_0xbc8b47['include'],function(_0x3058c3){return{'model':db[_0x3058c3['model']],'as':_0x3058c3['as'],'attributes':_0x3058c3[_0xefd6('0x1f')],'include':_0x3058c3[_0xefd6('0x20')]?_['map'](_0x3058c3[_0xefd6('0x20')],function(_0x686e19){return{'model':db[_0x686e19[_0xefd6('0x22')]],'as':_0x686e19['as'],'attributes':_0x686e19[_0xefd6('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xefd6('0x10')](function(_0x2b9f18){logger[_0xefd6('0x11')](_0xefd6('0x1a'),_0x5ac502);logger['debug'](_0xefd6('0x1a'),_0x5ac502,JSON[_0xefd6('0x15')](_0x2b9f18));_0x254c34(_0x2b9f18);})[_0xefd6('0x18')](function(_0x4de514){logger['error'](_0xefd6('0x1a'),_0x4de514[_0xefd6('0x17')],_0x5ac502);_0x362c03(_0x34a182['error'](0x1f4,_0x4de514[_0xefd6('0x17')]));});});};
\ No newline at end of file
index 44a1668..1e5373c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 28f5347..5598f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x2ede20,_0x15ead9){var _0x1743a8=function(_0x134606){while(--_0x134606){_0x2ede20['push'](_0x2ede20['shift']());}};_0x1743a8(++_0x15ead9);}(_0x7217,0x19e));var _0x7721=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7217[_0x40ac5e];return _0x2839d6;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 5fe7c9f..b428808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d9f=['TEXT','*,*,*,*','INTEGER','STRING','noop'];(function(_0x15aa30,_0x3e3f7a){var _0x9d15ef=function(_0x2c3c9a){while(--_0x2c3c9a){_0x15aa30['push'](_0x15aa30['shift']());}};_0x9d15ef(++_0x3e3f7a);}(_0x6d9f,0x93));var _0xf6d9=function(_0x12d425,_0x4bc9c7){_0x12d425=_0x12d425-0x0;var _0x51a0c3=_0x6d9f[_0x12d425];return _0x51a0c3;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xf6d9('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xf6d9('0x1')],'allowNull':![],'defaultValue':_0xf6d9('0x2')},'appdata':{'type':Sequelize[_0xf6d9('0x3')]()},'description':{'type':Sequelize[_0xf6d9('0x1')]},'interval':{'type':Sequelize[_0xf6d9('0x1')],'defaultValue':_0xf6d9('0x4')}};
\ No newline at end of file
+var _0xf598=['STRING','*,*,*,*','sequelize','exports','noop'];(function(_0x39ef31,_0x60879b){var _0x4cb1b2=function(_0x264747){while(--_0x264747){_0x39ef31['push'](_0x39ef31['shift']());}};_0x4cb1b2(++_0x60879b);}(_0xf598,0xca));var _0x8f59=function(_0x8632ee,_0xc2c7e2){_0x8632ee=_0x8632ee-0x0;var _0xaa6bcd=_0xf598[_0x8632ee];return _0xaa6bcd;};'use strict';var Sequelize=require(_0x8f59('0x0'));module[_0x8f59('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8f59('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x8f59('0x3')],'defaultValue':_0x8f59('0x4')}};
\ No newline at end of file
index 4cc9b09..a6edad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ff=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','SmsApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x5129bd,_0x26e419){var _0x414769=function(_0x2c1fcc){while(--_0x2c1fcc){_0x5129bd['push'](_0x5129bd['shift']());}};_0x414769(++_0x26e419);}(_0x99ff,0x1b4));var _0xf99f=function(_0x30bd01,_0x557a2c){_0x30bd01=_0x30bd01-0x0;var _0x44cdc3=_0x99ff[_0x30bd01];return _0x44cdc3;};'use strict';var emlformat=require(_0xf99f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf99f('0x1'));var jsonpatch=require(_0xf99f('0x2'));var rp=require(_0xf99f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf99f('0x4'));var sox=require(_0xf99f('0x5'));var csv=require(_0xf99f('0x6'));var ejs=require(_0xf99f('0x7'));var fs=require('fs');var fs_extra=require(_0xf99f('0x8'));var _=require(_0xf99f('0x9'));var squel=require(_0xf99f('0xa'));var crypto=require(_0xf99f('0xb'));var jsforce=require(_0xf99f('0xc'));var deskjs=require(_0xf99f('0xd'));var toCsv=require(_0xf99f('0x6'));var querystring=require('querystring');var Papa=require(_0xf99f('0xe'));var Redis=require(_0xf99f('0xf'));var authService=require(_0xf99f('0x10'));var qs=require(_0xf99f('0x11'));var as=require(_0xf99f('0x12'));var hardwareService=require(_0xf99f('0x13'));var logger=require(_0xf99f('0x14'))(_0xf99f('0x15'));var utils=require(_0xf99f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf99f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa7711d,_0x25d74f){_0x25d74f=_0x25d74f||0xcc;return function(_0x342909){if(_0x342909){return _0xa7711d[_0xf99f('0x18')](_0x25d74f);}return _0xa7711d['status'](_0x25d74f)['end']();};}function respondWithResult(_0x147936,_0x351ec5){_0x351ec5=_0x351ec5||0xc8;return function(_0x297402){if(_0x297402){return _0x147936[_0xf99f('0x19')](_0x351ec5)[_0xf99f('0x1a')](_0x297402);}};}function respondWithFilteredResult(_0x494172,_0xdc8f20){return function(_0x97f54e){if(_0x97f54e){var _0x67edc2=typeof _0xdc8f20[_0xf99f('0x1b')]===_0xf99f('0x1c')&&typeof _0xdc8f20[_0xf99f('0x1d')]===_0xf99f('0x1c');var _0x398f80=_0x97f54e[_0xf99f('0x1e')];var _0xb3496c=_0x67edc2?0x0:_0xdc8f20['offset'];var _0x4ca26c=_0x67edc2?_0x97f54e[_0xf99f('0x1e')]:_0xdc8f20[_0xf99f('0x1b')]+_0xdc8f20['limit'];var _0x100669;if(_0x4ca26c>=_0x398f80){_0x4ca26c=_0x398f80;_0x100669=0xc8;}else{_0x100669=0xce;}_0x494172[_0xf99f('0x19')](_0x100669);return _0x494172['set'](_0xf99f('0x1f'),_0xb3496c+'-'+_0x4ca26c+'/'+_0x398f80)['json'](_0x97f54e);}return null;};}function patchUpdates(_0x232f56){return function(_0x1663ca){try{jsonpatch[_0xf99f('0x20')](_0x1663ca,_0x232f56,!![]);}catch(_0x2d38aa){return BPromise[_0xf99f('0x21')](_0x2d38aa);}return _0x1663ca[_0xf99f('0x22')]();};}function saveUpdates(_0x2fb823,_0x5176b4){return function(_0x4c0597){if(_0x4c0597){return _0x4c0597[_0xf99f('0x23')](_0x2fb823)[_0xf99f('0x24')](function(_0x36a9b0){return _0x36a9b0;});}return null;};}function removeEntity(_0x38a55e,_0x40b2e8){return function(_0x38894f){if(_0x38894f){return _0x38894f[_0xf99f('0x25')]()['then'](function(){_0x38a55e[_0xf99f('0x19')](0xcc)[_0xf99f('0x26')]();});}};}function handleEntityNotFound(_0x1fa763,_0x186540){return function(_0x32b05a){if(!_0x32b05a){_0x1fa763[_0xf99f('0x18')](0x194);}return _0x32b05a;};}function handleError(_0x2c38cb,_0xa5aad4){_0xa5aad4=_0xa5aad4||0x1f4;return function(_0x5be3ad){logger[_0xf99f('0x27')](_0x5be3ad['stack']);if(_0x5be3ad['name']){delete _0x5be3ad[_0xf99f('0x28')];}_0x2c38cb[_0xf99f('0x19')](_0xa5aad4)[_0xf99f('0x29')](_0x5be3ad);};}exports[_0xf99f('0x2a')]=function(_0x5b54c4,_0x214069){var _0x34cf75={},_0x21bb22={},_0x40a299={'count':0x0,'rows':[]};var _0x801a53=_['map'](db[_0xf99f('0x2b')][_0xf99f('0x2c')],function(_0x390388){return{'name':_0x390388[_0xf99f('0x2d')],'type':_0x390388[_0xf99f('0x2e')][_0xf99f('0x2f')]};});_0x21bb22[_0xf99f('0x30')]=_[_0xf99f('0x31')](_0x801a53,_0xf99f('0x28'));_0x21bb22[_0xf99f('0x32')]=_[_0xf99f('0x33')](_0x5b54c4[_0xf99f('0x32')]);_0x21bb22[_0xf99f('0x34')]=_[_0xf99f('0x35')](_0x21bb22[_0xf99f('0x30')],_0x21bb22[_0xf99f('0x32')]);_0x34cf75[_0xf99f('0x36')]=_[_0xf99f('0x35')](_0x21bb22[_0xf99f('0x30')],qs[_0xf99f('0x37')](_0x5b54c4['query'][_0xf99f('0x37')]));_0x34cf75['attributes']=_0x34cf75[_0xf99f('0x36')]['length']?_0x34cf75['attributes']:_0x21bb22['model'];if(!_0x5b54c4[_0xf99f('0x32')]['hasOwnProperty'](_0xf99f('0x38'))){_0x34cf75['limit']=qs[_0xf99f('0x1d')](_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x1d')]);_0x34cf75[_0xf99f('0x1b')]=qs[_0xf99f('0x1b')](_0x5b54c4['query'][_0xf99f('0x1b')]);}_0x34cf75[_0xf99f('0x39')]=qs[_0xf99f('0x3a')](_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3a')]);_0x34cf75[_0xf99f('0x3b')]=qs[_0xf99f('0x34')](_['pick'](_0x5b54c4[_0xf99f('0x32')],_0x21bb22[_0xf99f('0x34')]),_0x801a53);if(_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3c')]){_0x34cf75['where']=_[_0xf99f('0x3d')](_0x34cf75[_0xf99f('0x3b')],{'$or':_[_0xf99f('0x31')](_0x801a53,function(_0x297548){if(_0x297548[_0xf99f('0x2e')]!==_0xf99f('0x3e')){var _0x2a8dba={};_0x2a8dba[_0x297548[_0xf99f('0x28')]]={'$like':'%'+_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x3c')]+'%'};return _0x2a8dba;}})});}_0x34cf75=_[_0xf99f('0x3d')]({},_0x34cf75,_0x5b54c4[_0xf99f('0x3f')]);var _0x52e784={'where':_0x34cf75['where']};return db[_0xf99f('0x2b')]['count'](_0x52e784)['then'](function(_0x4fe2b4){_0x40a299[_0xf99f('0x1e')]=_0x4fe2b4;if(_0x5b54c4[_0xf99f('0x32')][_0xf99f('0x40')]){_0x34cf75[_0xf99f('0x41')]=[{'all':!![]}];}return db[_0xf99f('0x2b')][_0xf99f('0x42')](_0x34cf75);})['then'](function(_0x53d47f){_0x40a299[_0xf99f('0x43')]=_0x53d47f;return _0x40a299;})[_0xf99f('0x24')](respondWithFilteredResult(_0x214069,_0x34cf75))[_0xf99f('0x44')](handleError(_0x214069,null));};exports[_0xf99f('0x45')]=function(_0x2546ea,_0x19be19){var _0x1abdbd={'raw':!![],'where':{'id':_0x2546ea['params']['id']}},_0x42468f={};_0x42468f[_0xf99f('0x30')]=_[_0xf99f('0x33')](db['SmsApplication'][_0xf99f('0x2c')]);_0x42468f[_0xf99f('0x32')]=_[_0xf99f('0x33')](_0x2546ea[_0xf99f('0x32')]);_0x42468f['filters']=_['intersection'](_0x42468f['model'],_0x42468f['query']);_0x1abdbd['attributes']=_[_0xf99f('0x35')](_0x42468f['model'],qs[_0xf99f('0x37')](_0x2546ea[_0xf99f('0x32')]['fields']));_0x1abdbd[_0xf99f('0x36')]=_0x1abdbd[_0xf99f('0x36')][_0xf99f('0x46')]?_0x1abdbd[_0xf99f('0x36')]:_0x42468f[_0xf99f('0x30')];if(_0x2546ea['query'][_0xf99f('0x40')]){_0x1abdbd[_0xf99f('0x41')]=[{'all':!![]}];}_0x1abdbd=_[_0xf99f('0x3d')]({},_0x1abdbd,_0x2546ea[_0xf99f('0x3f')]);return db[_0xf99f('0x2b')][_0xf99f('0x47')](_0x1abdbd)[_0xf99f('0x24')](handleEntityNotFound(_0x19be19,null))[_0xf99f('0x24')](respondWithResult(_0x19be19,null))['catch'](handleError(_0x19be19,null));};exports[_0xf99f('0x48')]=function(_0x311e92,_0x2fedc6){return db[_0xf99f('0x2b')][_0xf99f('0x48')](_0x311e92[_0xf99f('0x49')],{})[_0xf99f('0x24')](respondWithResult(_0x2fedc6,0xc9))['catch'](handleError(_0x2fedc6,null));};exports[_0xf99f('0x23')]=function(_0x509ce8,_0x2c5cdc){if(_0x509ce8[_0xf99f('0x49')]['id']){delete _0x509ce8[_0xf99f('0x49')]['id'];}return db[_0xf99f('0x2b')][_0xf99f('0x47')]({'where':{'id':_0x509ce8[_0xf99f('0x4a')]['id']}})[_0xf99f('0x24')](handleEntityNotFound(_0x2c5cdc,null))[_0xf99f('0x24')](saveUpdates(_0x509ce8[_0xf99f('0x49')],null))[_0xf99f('0x24')](respondWithResult(_0x2c5cdc,null))[_0xf99f('0x44')](handleError(_0x2c5cdc,null));};exports[_0xf99f('0x25')]=function(_0x1c5d57,_0x4fe850){return db[_0xf99f('0x2b')][_0xf99f('0x47')]({'where':{'id':_0x1c5d57['params']['id']}})[_0xf99f('0x24')](handleEntityNotFound(_0x4fe850,null))['then'](removeEntity(_0x4fe850,null))[_0xf99f('0x44')](handleError(_0x4fe850,null));};
\ No newline at end of file
+var _0xa0aa=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','set','json','apply','reject','update','error','stack','name','send','index','SmsApplication','rawAttributes','fieldName','key','map','query','filters','intersection','model','attributes','fields','order','sort','pick','filter','where','merge','type','options','includeAll','include','findAll','then','catch','show','params','keys','length','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs'];(function(_0x369100,_0x3d5e77){var _0x289ef8=function(_0x24f0d1){while(--_0x24f0d1){_0x369100['push'](_0x369100['shift']());}};_0x289ef8(++_0x3d5e77);}(_0xa0aa,0x149));var _0xaa0a=function(_0xa26f24,_0x5210bf){_0xa26f24=_0xa26f24-0x0;var _0x76230b=_0xa0aa[_0xa26f24];return _0x76230b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xaa0a('0x0'));var jsonpatch=require(_0xaa0a('0x1'));var rp=require(_0xaa0a('0x2'));var moment=require(_0xaa0a('0x3'));var BPromise=require(_0xaa0a('0x4'));var Mustache=require(_0xaa0a('0x5'));var util=require('util');var path=require(_0xaa0a('0x6'));var sox=require('sox');var csv=require(_0xaa0a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa0a('0x8'));var _=require(_0xaa0a('0x9'));var squel=require(_0xaa0a('0xa'));var crypto=require(_0xaa0a('0xb'));var jsforce=require(_0xaa0a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xaa0a('0x7'));var querystring=require(_0xaa0a('0xd'));var Papa=require('papaparse');var Redis=require(_0xaa0a('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaa0a('0xf'));var as=require(_0xaa0a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa0a('0x11'))(_0xaa0a('0x12'));var utils=require(_0xaa0a('0x13'));var config=require(_0xaa0a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xaa0a('0x15'))['db'];function respondWithStatusCode(_0x1859b2,_0x2c628b){_0x2c628b=_0x2c628b||0xcc;return function(_0x17aac4){if(_0x17aac4){return _0x1859b2['sendStatus'](_0x2c628b);}return _0x1859b2[_0xaa0a('0x16')](_0x2c628b)[_0xaa0a('0x17')]();};}function respondWithResult(_0x464aef,_0x4ddc24){_0x4ddc24=_0x4ddc24||0xc8;return function(_0x87fd5c){if(_0x87fd5c){return _0x464aef['status'](_0x4ddc24)['json'](_0x87fd5c);}};}function respondWithFilteredResult(_0x1c121d,_0x192f63){return function(_0x10006e){if(_0x10006e){var _0x5ba7f0=typeof _0x192f63[_0xaa0a('0x18')]===_0xaa0a('0x19')&&typeof _0x192f63['limit']===_0xaa0a('0x19');var _0x385872=_0x10006e['count'];var _0x2e9772=_0x5ba7f0?0x0:_0x192f63[_0xaa0a('0x18')];var _0x315526=_0x5ba7f0?_0x10006e[_0xaa0a('0x1a')]:_0x192f63[_0xaa0a('0x18')]+_0x192f63['limit'];var _0x21ff2c;if(_0x315526>=_0x385872){_0x315526=_0x385872;_0x21ff2c=0xc8;}else{_0x21ff2c=0xce;}_0x1c121d[_0xaa0a('0x16')](_0x21ff2c);return _0x1c121d[_0xaa0a('0x1b')]('Content-Range',_0x2e9772+'-'+_0x315526+'/'+_0x385872)[_0xaa0a('0x1c')](_0x10006e);}return null;};}function patchUpdates(_0x44bace){return function(_0x14c1b2){try{jsonpatch[_0xaa0a('0x1d')](_0x14c1b2,_0x44bace,!![]);}catch(_0x237a13){return BPromise[_0xaa0a('0x1e')](_0x237a13);}return _0x14c1b2['save']();};}function saveUpdates(_0x505997,_0x4ed247){return function(_0x34c832){if(_0x34c832){return _0x34c832[_0xaa0a('0x1f')](_0x505997)['then'](function(_0x213715){return _0x213715;});}return null;};}function removeEntity(_0x168b8f,_0x9167a4){return function(_0xf205e5){if(_0xf205e5){return _0xf205e5['destroy']()['then'](function(){_0x168b8f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a9836,_0x159439){return function(_0x1bc4f0){if(!_0x1bc4f0){_0x3a9836['sendStatus'](0x194);}return _0x1bc4f0;};}function handleError(_0x40e523,_0x58cb6f){_0x58cb6f=_0x58cb6f||0x1f4;return function(_0xbc1aa3){logger[_0xaa0a('0x20')](_0xbc1aa3[_0xaa0a('0x21')]);if(_0xbc1aa3[_0xaa0a('0x22')]){delete _0xbc1aa3[_0xaa0a('0x22')];}_0x40e523[_0xaa0a('0x16')](_0x58cb6f)[_0xaa0a('0x23')](_0xbc1aa3);};}exports[_0xaa0a('0x24')]=function(_0x3f5bad,_0x294803){var _0x5418fe={},_0x1843d1={},_0x43a9d2={'count':0x0,'rows':[]};var _0xcee41d=_['map'](db[_0xaa0a('0x25')][_0xaa0a('0x26')],function(_0x56fb2a){return{'name':_0x56fb2a[_0xaa0a('0x27')],'type':_0x56fb2a['type'][_0xaa0a('0x28')]};});_0x1843d1['model']=_[_0xaa0a('0x29')](_0xcee41d,'name');_0x1843d1[_0xaa0a('0x2a')]=_['keys'](_0x3f5bad['query']);_0x1843d1[_0xaa0a('0x2b')]=_[_0xaa0a('0x2c')](_0x1843d1[_0xaa0a('0x2d')],_0x1843d1['query']);_0x5418fe[_0xaa0a('0x2e')]=_[_0xaa0a('0x2c')](_0x1843d1['model'],qs[_0xaa0a('0x2f')](_0x3f5bad['query'][_0xaa0a('0x2f')]));_0x5418fe[_0xaa0a('0x2e')]=_0x5418fe[_0xaa0a('0x2e')]['length']?_0x5418fe[_0xaa0a('0x2e')]:_0x1843d1['model'];if(!_0x3f5bad[_0xaa0a('0x2a')]['hasOwnProperty']('nolimit')){_0x5418fe['limit']=qs['limit'](_0x3f5bad[_0xaa0a('0x2a')]['limit']);_0x5418fe['offset']=qs[_0xaa0a('0x18')](_0x3f5bad['query'][_0xaa0a('0x18')]);}_0x5418fe[_0xaa0a('0x30')]=qs[_0xaa0a('0x31')](_0x3f5bad[_0xaa0a('0x2a')]['sort']);_0x5418fe['where']=qs[_0xaa0a('0x2b')](_[_0xaa0a('0x32')](_0x3f5bad[_0xaa0a('0x2a')],_0x1843d1['filters']),_0xcee41d);if(_0x3f5bad['query'][_0xaa0a('0x33')]){_0x5418fe[_0xaa0a('0x34')]=_[_0xaa0a('0x35')](_0x5418fe[_0xaa0a('0x34')],{'$or':_[_0xaa0a('0x29')](_0xcee41d,function(_0x3bb5ca){if(_0x3bb5ca[_0xaa0a('0x36')]!=='VIRTUAL'){var _0x3cdbdf={};_0x3cdbdf[_0x3bb5ca['name']]={'$like':'%'+_0x3f5bad[_0xaa0a('0x2a')][_0xaa0a('0x33')]+'%'};return _0x3cdbdf;}})});}_0x5418fe=_[_0xaa0a('0x35')]({},_0x5418fe,_0x3f5bad[_0xaa0a('0x37')]);var _0x40c0e3={'where':_0x5418fe[_0xaa0a('0x34')]};return db[_0xaa0a('0x25')][_0xaa0a('0x1a')](_0x40c0e3)['then'](function(_0x4d1ced){_0x43a9d2['count']=_0x4d1ced;if(_0x3f5bad[_0xaa0a('0x2a')][_0xaa0a('0x38')]){_0x5418fe[_0xaa0a('0x39')]=[{'all':!![]}];}return db[_0xaa0a('0x25')][_0xaa0a('0x3a')](_0x5418fe);})[_0xaa0a('0x3b')](function(_0x43e29d){_0x43a9d2['rows']=_0x43e29d;return _0x43a9d2;})[_0xaa0a('0x3b')](respondWithFilteredResult(_0x294803,_0x5418fe))[_0xaa0a('0x3c')](handleError(_0x294803,null));};exports[_0xaa0a('0x3d')]=function(_0xd33917,_0xd4f72d){var _0x566aab={'raw':!![],'where':{'id':_0xd33917[_0xaa0a('0x3e')]['id']}},_0x41485e={};_0x41485e[_0xaa0a('0x2d')]=_[_0xaa0a('0x3f')](db[_0xaa0a('0x25')][_0xaa0a('0x26')]);_0x41485e[_0xaa0a('0x2a')]=_['keys'](_0xd33917['query']);_0x41485e[_0xaa0a('0x2b')]=_[_0xaa0a('0x2c')](_0x41485e['model'],_0x41485e[_0xaa0a('0x2a')]);_0x566aab['attributes']=_[_0xaa0a('0x2c')](_0x41485e[_0xaa0a('0x2d')],qs[_0xaa0a('0x2f')](_0xd33917['query'][_0xaa0a('0x2f')]));_0x566aab[_0xaa0a('0x2e')]=_0x566aab['attributes'][_0xaa0a('0x40')]?_0x566aab[_0xaa0a('0x2e')]:_0x41485e[_0xaa0a('0x2d')];if(_0xd33917[_0xaa0a('0x2a')][_0xaa0a('0x38')]){_0x566aab[_0xaa0a('0x39')]=[{'all':!![]}];}_0x566aab=_[_0xaa0a('0x35')]({},_0x566aab,_0xd33917[_0xaa0a('0x37')]);return db[_0xaa0a('0x25')][_0xaa0a('0x41')](_0x566aab)[_0xaa0a('0x3b')](handleEntityNotFound(_0xd4f72d,null))[_0xaa0a('0x3b')](respondWithResult(_0xd4f72d,null))[_0xaa0a('0x3c')](handleError(_0xd4f72d,null));};exports[_0xaa0a('0x42')]=function(_0x1ad962,_0x3c9e5d){return db[_0xaa0a('0x25')][_0xaa0a('0x42')](_0x1ad962['body'],{})[_0xaa0a('0x3b')](respondWithResult(_0x3c9e5d,0xc9))[_0xaa0a('0x3c')](handleError(_0x3c9e5d,null));};exports[_0xaa0a('0x1f')]=function(_0x3a135d,_0x513b28){if(_0x3a135d['body']['id']){delete _0x3a135d[_0xaa0a('0x43')]['id'];}return db[_0xaa0a('0x25')][_0xaa0a('0x41')]({'where':{'id':_0x3a135d[_0xaa0a('0x3e')]['id']}})[_0xaa0a('0x3b')](handleEntityNotFound(_0x513b28,null))[_0xaa0a('0x3b')](saveUpdates(_0x3a135d[_0xaa0a('0x43')],null))[_0xaa0a('0x3b')](respondWithResult(_0x513b28,null))[_0xaa0a('0x3c')](handleError(_0x513b28,null));};exports[_0xaa0a('0x44')]=function(_0x480f51,_0xf6c4e0){return db['SmsApplication']['find']({'where':{'id':_0x480f51[_0xaa0a('0x3e')]['id']}})[_0xaa0a('0x3b')](handleEntityNotFound(_0xf6c4e0,null))[_0xaa0a('0x3b')](removeEntity(_0xf6c4e0,null))[_0xaa0a('0x3c')](handleError(_0xf6c4e0,null));};
\ No newline at end of file
index a482f3d..b13e72c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ca=['../../config/logger','moment','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x29e34e,_0x103882){var _0x1f6ed8=function(_0x14855d){while(--_0x14855d){_0x29e34e['push'](_0x29e34e['shift']());}};_0x1f6ed8(++_0x103882);}(_0xf6ca,0x15a));var _0xaf6c=function(_0x3bbf08,_0x484ae7){_0x3bbf08=_0x3bbf08-0x0;var _0x1f308d=_0xf6ca[_0x3bbf08];return _0x1f308d;};'use strict';var _=require(_0xaf6c('0x0'));var util=require(_0xaf6c('0x1'));var logger=require(_0xaf6c('0x2'))('api');var moment=require(_0xaf6c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaf6c('0x4'));var attributes=require(_0xaf6c('0x5'));module[_0xaf6c('0x6')]=function(_0x4014b1,_0x5cda4b){return _0x4014b1[_0xaf6c('0x7')](_0xaf6c('0x8'),attributes,{'tableName':_0xaf6c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaf6c('0xa'),'collate':_0xaf6c('0xb')});};
\ No newline at end of file
+var _0x8801=['request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird'];(function(_0x1b81b9,_0x1d314a){var _0x27a94d=function(_0x3f2916){while(--_0x3f2916){_0x1b81b9['push'](_0x1b81b9['shift']());}};_0x27a94d(++_0x1d314a);}(_0x8801,0xf7));var _0x1880=function(_0x2eea66,_0x33a214){_0x2eea66=_0x2eea66-0x0;var _0x589076=_0x8801[_0x2eea66];return _0x589076;};'use strict';var _=require(_0x1880('0x0'));var util=require(_0x1880('0x1'));var logger=require(_0x1880('0x2'))(_0x1880('0x3'));var moment=require('moment');var BPromise=require(_0x1880('0x4'));var rp=require(_0x1880('0x5'));var fs=require('fs');var path=require(_0x1880('0x6'));var rimraf=require(_0x1880('0x7'));var config=require(_0x1880('0x8'));var attributes=require(_0x1880('0x9'));module[_0x1880('0xa')]=function(_0x4df336,_0x54963e){return _0x4df336[_0x1880('0xb')]('SmsApplication',attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1880('0xc'),'collate':_0x1880('0xd')});};
\ No newline at end of file
index c9cf1d4..f888f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2519d7,_0x13c5ef){var _0x579eda=function(_0x14a8b2){while(--_0x14a8b2){_0x2519d7['push'](_0x2519d7['shift']());}};_0x579eda(++_0x13c5ef);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x5177('0x0'));var moment=require(_0x5177('0x1'));var BPromise=require(_0x5177('0x2'));var rs=require(_0x5177('0x3'));var fs=require('fs');var Redis=require(_0x5177('0x4'));var db=require(_0x5177('0x5'))['db'];var utils=require(_0x5177('0x6'));var logger=require(_0x5177('0x7'))(_0x5177('0x8'));var config=require(_0x5177('0x9'));var jayson=require(_0x5177('0xa'));var client=jayson[_0x5177('0xb')][_0x5177('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ac1c6,_0x300b43,_0x245c12){return new BPromise(function(_0x363611,_0x3ce288){return client[_0x5177('0xd')](_0x2ac1c6,_0x245c12)[_0x5177('0xe')](function(_0x2c23d8){logger[_0x5177('0xf')]('SmsApplication,\x20%s,\x20%s',_0x300b43,'request\x20sent');logger[_0x5177('0x10')](_0x5177('0x11'),_0x300b43,_0x5177('0x12'),JSON[_0x5177('0x13')](_0x2c23d8));if(_0x2c23d8[_0x5177('0x14')]){if(_0x2c23d8['error'][_0x5177('0x15')]===0x1f4){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x3ce288(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);return _0x363611(_0x2c23d8[_0x5177('0x14')][_0x5177('0x17')]);}else{logger[_0x5177('0xf')](_0x5177('0x16'),_0x300b43,_0x5177('0x12'));_0x363611(_0x2c23d8[_0x5177('0x18')][_0x5177('0x17')]);}})[_0x5177('0x19')](function(_0x50ce2c){logger[_0x5177('0x14')](_0x5177('0x16'),_0x300b43,_0x50ce2c);_0x3ce288(_0x50ce2c);});});}
\ No newline at end of file
+var _0xcf2f=['stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s'];(function(_0x17679e,_0xe41882){var _0xeaf03c=function(_0x46846a){while(--_0x46846a){_0x17679e['push'](_0x17679e['shift']());}};_0xeaf03c(++_0xe41882);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x3cb78b,_0x167cb1){_0x3cb78b=_0x3cb78b-0x0;var _0x1bf593=_0xcf2f[_0x3cb78b];return _0x1bf593;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}
\ No newline at end of file
index 3d34af8..42c6c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['/:id','/:id/messages','getMessages','/:id/download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','describe'];(function(_0x3debfe,_0x2d8837){var _0x128ebd=function(_0x2be5bf){while(--_0x2be5bf){_0x3debfe['push'](_0x3debfe['shift']());}};_0x128ebd(++_0x2d8837);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x1af8d3,_0x544d86){_0x1af8d3=_0x1af8d3-0x0;var _0x3a50c5=_0x4cf8[_0x1af8d3];return _0x3a50c5;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/describe',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['get'](_0x84cf('0xe'),auth[_0x84cf('0xc')](),controller['show']);router[_0x84cf('0xb')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router['get'](_0x84cf('0x11'),auth[_0x84cf('0xc')](),controller['download']);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);router[_0x84cf('0x13')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x14')]);router[_0x84cf('0x13')](_0x84cf('0x15'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x18')),controller[_0x84cf('0x19')]);router[_0x84cf('0x1a')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1b')),controller['update']);router[_0x84cf('0x1c')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1d')),controller[_0x84cf('0x1e')]);router['delete']('/:id/tags',auth[_0x84cf('0xc')](),controller[_0x84cf('0x1f')]);module[_0x84cf('0x20')]=router;
\ No newline at end of file
+var _0xea28=['put','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','/:id/tags','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','/:id/download','download','create','post','tracked','sms','smsinteraction:addtags','addTags'];(function(_0x340b6d,_0x34000b){var _0x1a999a=function(_0x325857){while(--_0x325857){_0x340b6d['push'](_0x340b6d['shift']());}};_0x1a999a(++_0x34000b);}(_0xea28,0x13a));var _0x8ea2=function(_0x1d80bb,_0x5d6066){_0x1d80bb=_0x1d80bb-0x0;var _0x3900c8=_0xea28[_0x1d80bb];return _0x3900c8;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xa')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0xa')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['getMessages']);router['get'](_0x8ea2('0x12'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);router['post']('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x14')]);router[_0x8ea2('0x15')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['addMessage']);router[_0x8ea2('0x15')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x18')),controller[_0x8ea2('0x19')]);router[_0x8ea2('0x1a')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x1b')),controller[_0x8ea2('0x1c')]);router[_0x8ea2('0x1d')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),interaction[_0x8ea2('0x16')](_0x8ea2('0x17'),_0x8ea2('0x1e')),controller[_0x8ea2('0x1f')]);router[_0x8ea2('0x1d')](_0x8ea2('0x20'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x21')]);module['exports']=router;
\ No newline at end of file
index c09fe3b..75f63aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b69=['DATE','out','BOOLEAN','sequelize','moment','exports','STRING','ENUM'];(function(_0x27bb9e,_0x18abd8){var _0x4c6663=function(_0x45ca15){while(--_0x45ca15){_0x27bb9e['push'](_0x27bb9e['shift']());}};_0x4c6663(++_0x18abd8);}(_0x9b69,0xa3));var _0x99b6=function(_0x2fcd34,_0x3d237a){_0x2fcd34=_0x2fcd34-0x0;var _0x4f51c8=_0x9b69[_0x2fcd34];return _0x4f51c8;};'use strict';var Sequelize=require(_0x99b6('0x0'));var moment=require(_0x99b6('0x1'));module[_0x99b6('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x99b6('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x99b6('0x3')]},'note':{'type':Sequelize[_0x99b6('0x3')]},'phone':{'type':Sequelize[_0x99b6('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x99b6('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x99b6('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x99b6('0x4')]('in',_0x99b6('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x99b6('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8098=['STRING','ENUM','exports','BOOLEAN','DATE'];(function(_0x8ba19a,_0x1d2b2b){var _0x2bd8b4=function(_0xee823f){while(--_0xee823f){_0x8ba19a['push'](_0x8ba19a['shift']());}};_0x2bd8b4(++_0x1d2b2b);}(_0x8098,0x1ba));var _0x8809=function(_0x303ef5,_0x10bd06){_0x303ef5=_0x303ef5-0x0;var _0x31d00b=_0x8098[_0x303ef5];return _0x31d00b;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x8809('0x0')]={'closed':{'type':Sequelize[_0x8809('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8809('0x2')]},'disposition':{'type':Sequelize[_0x8809('0x3')]},'secondDisposition':{'type':Sequelize[_0x8809('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8809('0x3')]},'phone':{'type':Sequelize[_0x8809('0x3')]},'read1stAt':{'type':Sequelize[_0x8809('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x8809('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8809('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x8809('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8809('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 84aefbc..abfe5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe672=['fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','push','index','SmsInteraction','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.SmsInteractionId','from','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','Tag','union','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','some','compact','isEmpty','forEach','SmsAccountId','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','catch','show','filters','includeAll','include','options','create','params','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','findAll','addTags','emit','smsInteractionTags:save','removeTags','download','join','root','server','files','tmp','attachments','format','User','CmContact','Contact','firstName','lastName','createdAt','secret','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Messages','direction','out','System','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','unlinkSync','eml-format','zip-dir'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xe672,0x1e4));var _0x2e67=function(_0x36cead,_0x26324c){_0x36cead=_0x36cead-0x0;var _0xa42c6=_0xe672[_0x36cead];return _0xa42c6;};'use strict';var emlformat=require(_0x2e67('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2e67('0x1'));var jsonpatch=require(_0x2e67('0x2'));var rp=require(_0x2e67('0x3'));var moment=require(_0x2e67('0x4'));var BPromise=require(_0x2e67('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2e67('0x6'));var sox=require(_0x2e67('0x7'));var csv=require(_0x2e67('0x8'));var ejs=require(_0x2e67('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2e67('0xa'));var crypto=require(_0x2e67('0xb'));var jsforce=require(_0x2e67('0xc'));var deskjs=require(_0x2e67('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2e67('0xe'));var Papa=require(_0x2e67('0xf'));var Redis=require(_0x2e67('0x10'));var authService=require(_0x2e67('0x11'));var qs=require(_0x2e67('0x12'));var as=require(_0x2e67('0x13'));var pdf=require(_0x2e67('0x14'));var hardwareService=require(_0x2e67('0x15'));var logger=require(_0x2e67('0x16'))(_0x2e67('0x17'));var utils=require(_0x2e67('0x18'));var config=require(_0x2e67('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x2e67('0x1a')]=_[_0x2e67('0x1b')](config[_0x2e67('0x1a')],{'host':_0x2e67('0x1c'),'port':0x18eb});var socket=require(_0x2e67('0x1d'))(new Redis(config[_0x2e67('0x1a')]));require(_0x2e67('0x1e'))[_0x2e67('0x1f')](socket);function respondWithStatusCode(_0x49bc52,_0x511b61){_0x511b61=_0x511b61||0xcc;return function(_0x31e75e){if(_0x31e75e){return _0x49bc52['sendStatus'](_0x511b61);}return _0x49bc52[_0x2e67('0x20')](_0x511b61)['end']();};}function respondWithResult(_0x56284d,_0x380851){_0x380851=_0x380851||0xc8;return function(_0x32c7fc){if(_0x32c7fc){return _0x56284d[_0x2e67('0x20')](_0x380851)[_0x2e67('0x21')](_0x32c7fc);}};}function respondWithFilteredResult(_0x56c1aa,_0x22f740){return function(_0x54c825){if(_0x54c825){var _0x575ecf=typeof _0x22f740[_0x2e67('0x22')]===_0x2e67('0x23')&&typeof _0x22f740[_0x2e67('0x24')]==='undefined';var _0x4a2235=_0x54c825['count'];var _0x142994=_0x575ecf?0x0:_0x22f740['offset'];var _0x2ddc50=_0x575ecf?_0x54c825[_0x2e67('0x25')]:_0x22f740[_0x2e67('0x22')]+_0x22f740[_0x2e67('0x24')];var _0x3c21a6;if(_0x2ddc50>=_0x4a2235){_0x2ddc50=_0x4a2235;_0x3c21a6=0xc8;}else{_0x3c21a6=0xce;}_0x56c1aa[_0x2e67('0x20')](_0x3c21a6);return _0x56c1aa[_0x2e67('0x26')](_0x2e67('0x27'),_0x142994+'-'+_0x2ddc50+'/'+_0x4a2235)[_0x2e67('0x21')](_0x54c825);}return null;};}function patchUpdates(_0x2475ad){return function(_0x152b8c){try{jsonpatch[_0x2e67('0x28')](_0x152b8c,_0x2475ad,!![]);}catch(_0x2d38da){return BPromise[_0x2e67('0x29')](_0x2d38da);}return _0x152b8c[_0x2e67('0x2a')]();};}function saveUpdates(_0x4a5702,_0x141b32){return function(_0x2aaff8){if(_0x2aaff8){return _0x2aaff8['update'](_0x4a5702)[_0x2e67('0x2b')](function(_0x280134){return _0x280134;});}return null;};}function removeEntity(_0x4df379,_0x3ab670){return function(_0x2e172e){if(_0x2e172e){return _0x2e172e[_0x2e67('0x2c')]()['then'](function(){_0x4df379[_0x2e67('0x20')](0xcc)[_0x2e67('0x2d')]();});}};}function handleEntityNotFound(_0x59db6c,_0x301d66){return function(_0x53c299){if(!_0x53c299){_0x59db6c[_0x2e67('0x2e')](0x194);}return _0x53c299;};}function handleError(_0x24ee63,_0x3c70ab){_0x3c70ab=_0x3c70ab||0x1f4;return function(_0x40a5d0){logger[_0x2e67('0x2f')](_0x40a5d0[_0x2e67('0x30')]);if(_0x40a5d0[_0x2e67('0x31')]){delete _0x40a5d0[_0x2e67('0x31')];}_0x24ee63[_0x2e67('0x20')](_0x3c70ab)[_0x2e67('0x32')](_0x40a5d0);};}function getInteractionUsers(_0x476779,_0x26cdd5){return new BPromise(function(_0x129d5a,_0x3ed52d){try{if(_0x26cdd5[_0x476779['id']]){_0x476779[_0x2e67('0x33')]=_[_0x2e67('0x34')](_0x26cdd5[_0x476779['id']],function(_0x1d6699){return{'id':_0x1d6699['id'],'fullname':_0x1d6699[_0x2e67('0x35')]};});}}catch(_0x4749cc){_0x3ed52d(_0x4749cc);}_0x129d5a(_0x476779);});}function getInteractionTags(_0x73aefe,_0x40cad6){return new BPromise(function(_0x24c4b9,_0x4435fb){try{if(_0x73aefe[_0x2e67('0x36')]){_0x73aefe[_0x2e67('0x37')]=[];_0x73aefe[_0x2e67('0x36')][_0x2e67('0x38')](',')['forEach'](function(_0x152ae7){_0x73aefe[_0x2e67('0x37')][_0x2e67('0x39')](_0x40cad6[_0x152ae7]);});}delete _0x73aefe[_0x2e67('0x36')];}catch(_0x147413){_0x4435fb(_0x147413);}_0x24c4b9(_0x73aefe);});}function updateSmsInteraction(_0x149d9f,_0x12b73b,_0x3dbf15){return new BPromise(function(_0x3c7a21,_0x16634e){return getInteractionUsers(_0x149d9f,_0x3dbf15)['then'](function(_0x33eddf){return getInteractionTags(_0x33eddf,_0x12b73b);})[_0x2e67('0x2b')](function(_0x1b1083){_0x3c7a21(_0x1b1083);})['catch'](function(_0x20093f){_0x16634e(_0x20093f);});});}exports[_0x2e67('0x3a')]=function(_0x5d109a,_0x1e873f){var _0x513991={},_0x5e177d={},_0x491958={'count':0x0,'rows':[]};var _0x2fa004=_[_0x2e67('0x34')](db[_0x2e67('0x3b')][_0x2e67('0x3c')],function(_0x305f4c){return{'name':_0x305f4c[_0x2e67('0x3d')],'type':_0x305f4c[_0x2e67('0x3e')][_0x2e67('0x3f')]};});_0x5e177d['model']=_[_0x2e67('0x34')](_0x2fa004,_0x2e67('0x31'));_0x5e177d[_0x2e67('0x40')]=_[_0x2e67('0x41')](_0x5d109a[_0x2e67('0x40')]);_0x5e177d['filters']=_[_0x2e67('0x42')](_0x5e177d['model'],_0x5e177d[_0x2e67('0x40')]);_0x513991[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x5e177d[_0x2e67('0x44')],qs[_0x2e67('0x45')](_0x5d109a[_0x2e67('0x40')]['fields']));_0x513991[_0x2e67('0x43')]=_0x513991['attributes'][_0x2e67('0x46')]?_0x513991['attributes']:_0x5e177d[_0x2e67('0x44')];if(!_0x5d109a['query'][_0x2e67('0x47')](_0x2e67('0x48'))){_0x513991[_0x2e67('0x24')]=qs[_0x2e67('0x24')](_0x5d109a['query'][_0x2e67('0x24')]);_0x513991[_0x2e67('0x22')]=qs[_0x2e67('0x22')](_0x5d109a[_0x2e67('0x40')]['offset']);}_0x513991['order']=qs[_0x2e67('0x49')](_0x5d109a[_0x2e67('0x40')]['sort']);_0x513991[_0x2e67('0x4a')]=qs['filters'](_[_0x2e67('0x4b')](_0x5d109a['query'],_0x5e177d['filters']),_0x2fa004);var _0x14604a=[];var _0x115216=squel[_0x2e67('0x4c')]()[_0x2e67('0x4d')]('id')['field']('name')[_0x2e67('0x4d')](_0x2e67('0x4e'))['from'](_0x2e67('0x4f'));var _0x2d2ad6=squel[_0x2e67('0x4c')]()[_0x2e67('0x4d')](_0x2e67('0x50'))[_0x2e67('0x4d')](_0x2e67('0x51'))[_0x2e67('0x4d')](_0x2e67('0x52'))[_0x2e67('0x53')](_0x2e67('0x54'),'ui')['left_join'](_0x2e67('0x55'),'u',_0x2e67('0x56'));var _0x6c08fe=squel['select']()[_0x2e67('0x53')](_0x2e67('0x57'),'i')[_0x2e67('0x58')]('cm_contacts','c',_0x2e67('0x59'))['left_join']('users','o','o.id\x20=\x20i.UserId')[_0x2e67('0x58')](_0x2e67('0x5a'),'a',_0x2e67('0x5b'))[_0x2e67('0x58')]('sms_messages','me',_0x2e67('0x5c'))[_0x2e67('0x58')](_0x2e67('0x5d'),'it',_0x2e67('0x5e'))['left_join'](_0x2e67('0x4f'),'t',_0x2e67('0x5f'));var _0x3fc199=squel[_0x2e67('0x60')]();var _0x34e3f0=[];var _0x154150=squel['expr']();var _0x3d50ed;if(_0x5d109a['query']['search']){_0x3d50ed=as[_0x2e67('0x61')](_0x5d109a[_0x2e67('0x40')][_0x2e67('0x62')]);var _0x50046a=_0x3d50ed[_0x2e67('0x63')];for(var _0x3d58c6=0x0;_0x3d58c6<_0x3d50ed[_0x2e67('0x64')][_0x2e67('0x46')];_0x3d58c6++){var _0x430555=_0x3d50ed[_0x2e67('0x64')][_0x3d58c6];var _0x5b95f6='i';var _0x504db4=_[_0x2e67('0x65')](_0x2fa004,['name',_0x430555[_0x2e67('0x4d')]]);if(!_0x504db4){switch(_0x430555[_0x2e67('0x4d')]){case _0x2e67('0x66'):if(_0x430555[_0x2e67('0x67')]==0x1){_0x6c08fe[_0x2e67('0x68')]('`'+_0x430555[_0x2e67('0x4d')]+'`\x20=\x200');}else{_0x6c08fe[_0x2e67('0x68')]('`'+_0x430555[_0x2e67('0x4d')]+_0x2e67('0x69'));}break;case'Contact':if(_0x430555['operator']==='$substring'){if(_0x430555[_0x2e67('0x67')][_0x2e67('0x38')]('\x20')[_0x2e67('0x46')]>0x1){_0x3fc199[_0x50046a](_0x2e67('0x6a'),qs[_0x2e67('0x6b')](_0x430555[_0x2e67('0x67')]),null);}else{var _0x125ffb='%'+_0x430555[_0x2e67('0x67')]+'%';_0x3fc199[_0x50046a](_0x2e67('0x6c'),_0x125ffb,_0x125ffb,_0x125ffb);}}else{_0x504db4=_[_0x2e67('0x65')](_0x2fa004,[_0x2e67('0x31'),'ContactId']);_0x430555[_0x2e67('0x4d')]=_0x2e67('0x6d');_0x5f1338=as[_0x2e67('0x6e')](_0x5b95f6,_0x504db4['type'],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338['value']['start'],_0x5f1338['value'][_0x2e67('0x2d')]);}break;case _0x2e67('0x70'):var _0x52a2ec=_0x430555['value']['split'](',')[_0x2e67('0x34')](function(_0x5c8494){return Number(_0x5c8494);});_0x52a2ec['forEach'](function(_0x8a3206){_0x154150['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x8a3206+',%');});_0x34e3f0=_[_0x2e67('0x71')](_0x34e3f0,_0x52a2ec);break;case'User':if(_0x430555['operator']===_0x2e67('0x72')){_0x3fc199[_0x50046a](_0x2e67('0x73'),'%'+_0x430555['value']+'%',null);}else{_0x504db4=_[_0x2e67('0x65')](_0x2fa004,[_0x2e67('0x31'),_0x2e67('0x74')]);_0x430555[_0x2e67('0x4d')]=_0x2e67('0x74');_0x5f1338=as['buildExpression'](_0x5b95f6,_0x504db4['type'],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338['value'][_0x2e67('0x2d')]);}break;case _0x2e67('0x76'):_0x5f1338=as['buildExpression']('me',null,_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338['value']['end']);break;}}else{var _0x5f1338=as[_0x2e67('0x6e')](_0x5b95f6,_0x504db4[_0x2e67('0x3e')],_0x430555);_0x3fc199[_0x50046a](_0x5f1338[_0x2e67('0x6f')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x75')],_0x5f1338[_0x2e67('0x67')][_0x2e67('0x2d')]);}}}else{var _0x4be654=_(_0x5d109a[_0x2e67('0x40')])[_0x2e67('0x41')]()[_0x2e67('0x34')](function(_0x58d8a4){return _[_0x2e67('0x77')](_0x2fa004,[_0x2e67('0x31'),_0x58d8a4])?_0x58d8a4:undefined;})[_0x2e67('0x78')]()[_0x2e67('0x67')]();if(!_[_0x2e67('0x79')](_0x4be654)){_0x4be654[_0x2e67('0x7a')](function(_0x456e65){if(_0x456e65===_0x2e67('0x7b')){_0x6c08fe['where']('i.SmsAccountId\x20IN\x20?',[][_0x2e67('0x7c')](_0x5d109a['query'][_0x456e65]));}else if(_0x456e65==='createdAt'){var _0x1ac909=JSON[_0x2e67('0x7d')](_0x5d109a[_0x2e67('0x40')][_0x456e65])[_0x2e67('0x7e')];var _0x2b785d=JSON['parse'](_0x5d109a[_0x2e67('0x40')][_0x456e65])[_0x2e67('0x7f')];_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x80'),_0x1ac909,_0x2b785d);}else{if(_0x5d109a[_0x2e67('0x40')][_0x456e65]===_0x2e67('0x81')){_0x6c08fe[_0x2e67('0x4a')]('i.'+_0x456e65+_0x2e67('0x82'));}else{_0x6c08fe['where']('i.'+_0x456e65+_0x2e67('0x83'),_0x5d109a[_0x2e67('0x40')][_0x456e65]);}}});}if(_0x5d109a['query']['read']){if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x84')]==0x1){_0x6c08fe['having'](_0x2e67('0x85'));}else{_0x6c08fe[_0x2e67('0x68')](_0x2e67('0x86'));}}if(_0x5d109a[_0x2e67('0x40')]['tag']){_0x34e3f0=_[_0x2e67('0x87')](_0x5d109a[_0x2e67('0x40')]['tag'])?_0x5d109a['query'][_0x2e67('0x88')]:new Array(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x88')]);_0x34e3f0[_0x2e67('0x7a')](function(_0x3c2206){_0x154150['or'](_0x2e67('0x89'),'%,'+_0x3c2206+',%');});}if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x8a')]){var _0x581259=_0x5d109a[_0x2e67('0x40')]['filter'][_0x2e67('0x8b')]('\x5c','\x5c\x5c')[_0x2e67('0x8b')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x581259)){_0x3fc199['or'](_0x2e67('0x8c'),_0x581259+'%')['or'](_0x2e67('0x8d'),_0x581259+'%');}else{_0x3fc199['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x2e67('0x6b')](_0x581259))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x581259+'%');}}}_0x6c08fe['where'](_0x3fc199);_0x6c08fe[_0x2e67('0x8e')](_0x2e67('0x8f'));var _0x5529e9={'type':db['Sequelize'][_0x2e67('0x90')][_0x2e67('0x91')],'raw':!![]};var _0x272cf1=_0x6c08fe[_0x2e67('0x92')]();_0x272cf1[_0x2e67('0x4d')](_0x2e67('0x8f'));_0x272cf1[_0x2e67('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2e67('0x66'));if(_0x513991[_0x2e67('0x93')]){_0x513991[_0x2e67('0x93')][_0x2e67('0x7a')](function(_0x4e8557){var _0x33111=_0x4e8557[0x0]===_0x2e67('0x94')?_0x4e8557[0x0]:'i.'+_0x4e8557[0x0];_0x6c08fe[_0x2e67('0x93')](_0x33111,_0x4e8557[0x1]===_0x2e67('0x95')?![]:!![]);});}if(!_[_0x2e67('0x79')](_0x34e3f0)){_0x6c08fe[_0x2e67('0x68')](_0x154150);_0x272cf1['where'](_0x2e67('0x96'),_0x34e3f0);}BPromise[_0x2e67('0x97')]()['then'](function(){if(!_0x3d50ed){if(_0x5d109a[_0x2e67('0x40')]['SmsAccountId'])return;_0x272cf1[_0x2e67('0x4a')](_0x2e67('0x98'));_0x6c08fe['where'](_0x2e67('0x98'));return;}if(_0x5d109a[_0x2e67('0x99')][_0x2e67('0x9a')]!=='agent')return;return _0x5d109a[_0x2e67('0x99')][_0x2e67('0x9b')]({'attributes':['id'],'raw':!![]})[_0x2e67('0x2b')](function(_0x611625){if(_[_0x2e67('0x79')](_0x611625)){_0x272cf1['where']('i.SmsAccountId\x20IS\x20NULL');_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x9c'));}else{_0x272cf1[_0x2e67('0x4a')](_0x2e67('0x9d'),_[_0x2e67('0x34')](_0x611625,'id'));_0x6c08fe[_0x2e67('0x4a')](_0x2e67('0x9d'),_['map'](_0x611625,'id'));}});})['then'](function(){if(_0x5d109a[_0x2e67('0x99')][_0x2e67('0x9a')]==='agent'&&!_0x3d50ed&&!_0x5d109a[_0x2e67('0x40')]['SmsAccountId'])return[];return db['sequelize']['query'](_0x272cf1[_0x2e67('0x9e')](),_0x5529e9);})[_0x2e67('0x2b')](function(_0x2e76ca){_0x491958[_0x2e67('0x25')]=_0x2e76ca[_0x2e67('0x46')];if(_0x491958[_0x2e67('0x25')]===0x0)return[];return db[_0x2e67('0x9f')][_0x2e67('0x40')](_0x115216['toString'](),_0x5529e9)[_0x2e67('0x2b')](function(_0x30b290){_0x14604a=_[_0x2e67('0xa0')](_0x30b290,'id');_0x5529e9=_[_0x2e67('0xa1')](_0x5529e9,{'model':db[_0x2e67('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5d109a[_0x2e67('0x40')][_0x2e67('0x45')]){_0x513991[_0x2e67('0x43')][_0x2e67('0x7a')](function(_0x461ea9){_0x6c08fe[_0x2e67('0x4d')]('i.'+_0x461ea9);});}else{_0x6c08fe[_0x2e67('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2e67('0x66'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa2'),_0x2e67('0xa3'));_0x6c08fe['field']('a.mandatoryDisposition',_0x2e67('0xa4'));_0x6c08fe['field'](_0x2e67('0xa5'),_0x2e67('0x94'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa6'));_0x6c08fe[_0x2e67('0x4d')]('c.firstName',_0x2e67('0xa7'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xa8'),_0x2e67('0xa9'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xaa'),_0x2e67('0xab'));_0x6c08fe['field'](_0x2e67('0xac'),_0x2e67('0xad'));_0x6c08fe[_0x2e67('0x4d')]('c.mobile',_0x2e67('0xae'));_0x6c08fe['field'](_0x2e67('0xaf'),_0x2e67('0xb0'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xb1'),'Owner.fullname');_0x6c08fe['field'](_0x2e67('0xb2'),_0x2e67('0xb3'));_0x6c08fe[_0x2e67('0x4d')](_0x2e67('0xb4'),_0x2e67('0x36'));}if(_0x513991['limit'])_0x6c08fe[_0x2e67('0x24')](_0x513991[_0x2e67('0x24')]);if(_0x513991[_0x2e67('0x22')])_0x6c08fe[_0x2e67('0x22')](_0x513991[_0x2e67('0x22')]);return db[_0x2e67('0x9f')][_0x2e67('0x40')](_0x6c08fe[_0x2e67('0x9e')](),_0x5529e9);})['then'](function(_0x58ac87){if(_0x58ac87[_0x2e67('0x46')]>0x0)_0x2d2ad6[_0x2e67('0x4a')](_0x2e67('0xb5'),_[_0x2e67('0x34')](_0x58ac87,'id'));return db[_0x2e67('0x9f')]['query'](_0x2d2ad6[_0x2e67('0x9e')](),_0x5529e9)['then'](function(_0x4863b8){var _0x3711b8=_[_0x2e67('0xb6')](_0x4863b8,_0x2e67('0xb7'));var _0x410fbf=[];_0x58ac87[_0x2e67('0x7a')](function(_0x2369d8){_0x410fbf['push'](updateSmsInteraction(_0x2369d8,_0x14604a,_0x3711b8));});return BPromise[_0x2e67('0xb8')](_0x410fbf);});});})[_0x2e67('0x2b')](function(_0x241214){_0x491958[_0x2e67('0xb9')]=_0x241214;return _0x491958;})[_0x2e67('0x2b')](respondWithFilteredResult(_0x1e873f,_0x513991))[_0x2e67('0xba')](handleError(_0x1e873f,null));};exports[_0x2e67('0xbb')]=function(_0x4b8abf,_0x53f503){var _0x3ca0ba={'raw':![],'where':{'id':_0x4b8abf['params']['id']}},_0x6ca66d={};_0x6ca66d[_0x2e67('0x44')]=_[_0x2e67('0x41')](db['SmsInteraction'][_0x2e67('0x3c')]);_0x6ca66d['query']=_['keys'](_0x4b8abf[_0x2e67('0x40')]);_0x6ca66d[_0x2e67('0xbc')]=_[_0x2e67('0x42')](_0x6ca66d[_0x2e67('0x44')],_0x6ca66d[_0x2e67('0x40')]);_0x3ca0ba[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x6ca66d[_0x2e67('0x44')],qs[_0x2e67('0x45')](_0x4b8abf[_0x2e67('0x40')][_0x2e67('0x45')]));_0x3ca0ba['attributes']=_0x3ca0ba['attributes'][_0x2e67('0x46')]?_0x3ca0ba[_0x2e67('0x43')]:_0x6ca66d[_0x2e67('0x44')];if(_0x4b8abf[_0x2e67('0x40')][_0x2e67('0xbd')]){_0x3ca0ba[_0x2e67('0xbe')]=[{'all':!![]}];}_0x3ca0ba=_[_0x2e67('0xa1')]({},_0x3ca0ba,_0x4b8abf[_0x2e67('0xbf')]);return db[_0x2e67('0x3b')][_0x2e67('0x65')](_0x3ca0ba)[_0x2e67('0x2b')](handleEntityNotFound(_0x53f503,null))['then'](respondWithResult(_0x53f503,null))[_0x2e67('0xba')](handleError(_0x53f503,null));};exports[_0x2e67('0xc0')]=function(_0x5e1676,_0x14376b){return db[_0x2e67('0x3b')][_0x2e67('0xc0')](_0x5e1676['body'],{})[_0x2e67('0x2b')](respondWithResult(_0x14376b,0xc9))[_0x2e67('0xba')](handleError(_0x14376b,null));};exports['update']=function(_0x5c8ff7,_0x4dda2a){if(_0x5c8ff7[_0x2e67('0x76')]['id']){delete _0x5c8ff7[_0x2e67('0x76')]['id'];}return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x5c8ff7['params']['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x4dda2a,null))[_0x2e67('0x2b')](saveUpdates(_0x5c8ff7[_0x2e67('0x76')],null))['then'](respondWithResult(_0x4dda2a,null))['catch'](handleError(_0x4dda2a,null));};exports[_0x2e67('0x2c')]=function(_0x1a54cd,_0x55ddf5){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x1a54cd[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x55ddf5,null))[_0x2e67('0x2b')](removeEntity(_0x55ddf5,null))['catch'](handleError(_0x55ddf5,null));};exports[_0x2e67('0xc2')]=function(_0x233aef,_0x2e13d9){return db[_0x2e67('0x3b')][_0x2e67('0xc2')]()[_0x2e67('0x2b')](respondWithResult(_0x2e13d9,null))[_0x2e67('0xba')](handleError(_0x2e13d9,null));};exports[_0x2e67('0xc3')]=function(_0x21b6a3,_0x430460,_0x29aa7f){return db[_0x2e67('0xc4')]['find']({'where':{'id':_0x21b6a3[_0x2e67('0xc1')]['id']}})['then'](handleEntityNotFound(_0x430460,null))['then'](function(_0x2d4517){if(_0x2d4517){return _0x2d4517[_0x2e67('0xc3')](_0x21b6a3[_0x2e67('0x76')][_0x2e67('0xc5')],_[_0x2e67('0xc6')](_0x21b6a3[_0x2e67('0x76')],['ids','id'])||{});}})[_0x2e67('0x2b')](respondWithResult(_0x430460,null))[_0x2e67('0xba')](handleError(_0x430460,null));};exports[_0x2e67('0xc7')]=function(_0x14938a,_0x1798ca,_0x4fd8a1){var _0x593986={'raw':![],'where':{}};var _0x1d30b7={};var _0x46d00b={'count':0x0,'rows':[]};return db[_0x2e67('0x3b')][_0x2e67('0xc8')]({'where':{'id':_0x14938a['params']['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x1798ca,null))[_0x2e67('0x2b')](function(_0x5c9dae){if(_0x5c9dae){_0x1d30b7[_0x2e67('0x44')]=_[_0x2e67('0x41')](db[_0x2e67('0xc4')][_0x2e67('0x3c')]);_0x1d30b7[_0x2e67('0x40')]=_['keys'](_0x14938a[_0x2e67('0x40')]);_0x1d30b7[_0x2e67('0xbc')]=_[_0x2e67('0x42')](_0x1d30b7[_0x2e67('0x44')],_0x1d30b7['query']);_0x593986[_0x2e67('0x43')]=_[_0x2e67('0x42')](_0x1d30b7[_0x2e67('0x44')],qs['fields'](_0x14938a[_0x2e67('0x40')]['fields']));_0x593986['attributes']=_0x593986['attributes'][_0x2e67('0x46')]?_0x593986[_0x2e67('0x43')]:_0x1d30b7[_0x2e67('0x44')];if(!_0x14938a['query'][_0x2e67('0x47')](_0x2e67('0x48'))){_0x593986[_0x2e67('0x24')]=qs[_0x2e67('0x24')](_0x14938a['query'][_0x2e67('0x24')]);_0x593986[_0x2e67('0x22')]=qs[_0x2e67('0x22')](_0x14938a[_0x2e67('0x40')][_0x2e67('0x22')]);}_0x593986[_0x2e67('0x93')]=qs[_0x2e67('0x49')](_0x14938a[_0x2e67('0x40')][_0x2e67('0x49')]);_0x593986[_0x2e67('0x4a')]=qs['filters'](_[_0x2e67('0x4b')](_0x14938a[_0x2e67('0x40')],_0x1d30b7['filters']));_0x593986['where'][_0x2e67('0xb7')]=_0x5c9dae['id'];if(_0x14938a[_0x2e67('0x40')][_0x2e67('0x8a')]){_0x593986[_0x2e67('0x4a')]=_[_0x2e67('0xa1')](_0x593986[_0x2e67('0x4a')],{'$or':_[_0x2e67('0x34')](_0x593986[_0x2e67('0x43')],function(_0x52629e){var _0x3a2b90={};_0x3a2b90[_0x52629e]={'$like':'%'+_0x14938a[_0x2e67('0x40')][_0x2e67('0x8a')]+'%'};return _0x3a2b90;})});}if(_0x14938a['query'][_0x2e67('0x7e')]){var _0x9caab3=_0x14938a['query'][_0x2e67('0x7e')][_0x2e67('0x38')](',');var _0x35660b={};_0x35660b[_0x9caab3[0x0]]={'$gte':moment(_0x9caab3[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x593986['where']=_[_0x2e67('0xa1')](_0x593986[_0x2e67('0x4a')],_0x35660b);}_0x593986=_[_0x2e67('0xa1')]({},_0x593986,_0x14938a[_0x2e67('0xbf')]);return db[_0x2e67('0xc4')][_0x2e67('0x25')]({'where':_0x593986['where']})[_0x2e67('0x2b')](function(_0x450906){_0x46d00b[_0x2e67('0x25')]=_0x450906;if(_0x14938a[_0x2e67('0x40')][_0x2e67('0xbd')]){_0x593986[_0x2e67('0xbe')]=[{'all':!![]}];}return db[_0x2e67('0xc4')][_0x2e67('0xc9')](_0x593986);})[_0x2e67('0x2b')](function(_0x27ae09){_0x46d00b[_0x2e67('0xb9')]=_0x27ae09;return _0x46d00b;});}})[_0x2e67('0x2b')](respondWithFilteredResult(_0x1798ca,_0x593986))['catch'](handleError(_0x1798ca,null));};exports[_0x2e67('0xca')]=function(_0x445535,_0x20277e,_0x16efed){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x445535[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x20277e,null))[_0x2e67('0x2b')](function(_0x34ebb1){if(_0x34ebb1){return _0x34ebb1['setTags'](_0x445535['body']['ids'],_[_0x2e67('0xc6')](_0x445535['body'],[_0x2e67('0xc5'),'id'])||{})['spread'](function(){return db[_0x2e67('0x70')]['findAll']({'attributes':['id','name',_0x2e67('0x4e')],'where':{'id':_0x445535[_0x2e67('0x76')]['ids']}});})[_0x2e67('0x2b')](function(_0x103ea0){socket[_0x2e67('0xcb')](_0x2e67('0xcc'),{'id':Number(_0x445535[_0x2e67('0xc1')]['id']),'tags':_0x103ea0||[]});return{'id':Number(_0x445535['params']['id']),'tags':_0x103ea0||[]};});}})[_0x2e67('0x2b')](respondWithResult(_0x20277e,null))['catch'](handleError(_0x20277e,null));};exports[_0x2e67('0xcd')]=function(_0x36acfe,_0x2177b7,_0xe02ba1){return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x36acfe[_0x2e67('0xc1')]['id']}})[_0x2e67('0x2b')](handleEntityNotFound(_0x2177b7,null))[_0x2e67('0x2b')](function(_0x25d371){if(_0x25d371){return _0x25d371['removeTags'](_0x36acfe[_0x2e67('0x40')][_0x2e67('0xc5')]);}})[_0x2e67('0x2b')](respondWithStatusCode(_0x2177b7,null))[_0x2e67('0xba')](handleError(_0x2177b7,null));};exports[_0x2e67('0xce')]=function(_0x183454,_0x3b149d){var _0x34b501=moment()['unix']()['toString']();var _0x4ce386=path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],_0x2e67('0xd1'),_0x2e67('0xd2'),_0x2e67('0xd3'));var _0xde9a70=path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],'server',_0x2e67('0xd2'),_0x2e67('0xd4'));var _0x29bea5=path[_0x2e67('0xcf')](_0x4ce386,_0x34b501);var _0xf01955=util[_0x2e67('0xd5')]('transcript-%d-%s.zip',_0x183454[_0x2e67('0xc1')]['id'],_0x34b501);var _0x1453b8=path[_0x2e67('0xcf')](_0x4ce386,_0xf01955);var _0x353c4f=[];_0x353c4f['push']({'model':db[_0x2e67('0xd6')],'as':_0x2e67('0xd6'),'attributes':['id','fullname'],'raw':!![]});_0x353c4f['push']({'model':db[_0x2e67('0xd7')],'as':_0x2e67('0xd8'),'attributes':['id',_0x2e67('0xd9'),_0x2e67('0xda')],'raw':!![]});var _0x44419a=[{'model':db['SmsMessage'],'as':'Messages','attributes':['id',_0x2e67('0x76'),_0x2e67('0xdb'),'direction',_0x2e67('0xdc'),_0x2e67('0x84')],'include':_0x353c4f}];_0x44419a[_0x2e67('0x39')]({'model':db[_0x2e67('0xdd')],'as':_0x2e67('0xde'),'attributes':['id',_0x2e67('0x31')]});_0x44419a[_0x2e67('0x39')]({'model':db[_0x2e67('0xd6')],'as':_0x2e67('0xdf'),'attributes':['id',_0x2e67('0x35')]});return db[_0x2e67('0x3b')][_0x2e67('0x65')]({'where':{'id':_0x183454[_0x2e67('0xc1')]['id']},'include':_0x44419a})[_0x2e67('0x2b')](handleEntityNotFound(_0x3b149d,null))[_0x2e67('0x2b')](function(_0x1d5c95){if(_0x1d5c95){var _0x1745b7=_0x1d5c95[_0x2e67('0xe0')]({'plain':!![]});fs[_0x2e67('0xe1')](_0x29bea5);var _0x5071a0={'channel':_0x2e67('0xe2'),'account':_0x1745b7['Account'][_0x2e67('0x31')],'agent':_0x1745b7['Owner']?_0x1745b7[_0x2e67('0xdf')][_0x2e67('0x35')]:_0x2e67('0xe3'),'createdAt':moment(_0x1745b7[_0x2e67('0xdb')])[_0x2e67('0xd5')](_0x2e67('0xe4'))[_0x2e67('0x9e')](),'closedAt':_0x1745b7[_0x2e67('0xe5')]?moment(_0x1745b7[_0x2e67('0xe6')])[_0x2e67('0xd5')](_0x2e67('0xe4'))['toString']():'','disposition':_0x1745b7[_0x2e67('0xe7')],'messages':_(_0x1745b7[_0x2e67('0xe8')])[_0x2e67('0x8a')]({'secret':![]})[_0x2e67('0x34')](function(_0x1ff4b6){return{'date':moment(_0x1ff4b6[_0x2e67('0xdb')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x2e67('0x9e')](),'sender':_0x1ff4b6[_0x2e67('0xe9')]===_0x2e67('0xea')?_0x1ff4b6[_0x2e67('0xd6')]?_0x1ff4b6[_0x2e67('0xd6')]['fullname']:_0x2e67('0xeb'):_0x1ff4b6[_0x2e67('0xd8')][_0x2e67('0xd9')]+(_0x1ff4b6['Contact'][_0x2e67('0xda')]?'\x20'+_0x1ff4b6[_0x2e67('0xd8')][_0x2e67('0xda')]:''),'body':_0x1ff4b6['body'],'direction':_0x1ff4b6[_0x2e67('0xe9')]===_0x2e67('0xea')?'A':'C','secret':_0x1ff4b6[_0x2e67('0xdc')],'read':_0x1ff4b6['read']};})[_0x2e67('0x67')]()};return ejs[_0x2e67('0xec')](path[_0x2e67('0xcf')](config[_0x2e67('0xd0')],_0x2e67('0xd1'),_0x2e67('0xed'),_0x2e67('0xee')),{'interaction':_0x5071a0})[_0x2e67('0x2b')](function(_0x25424d){var _0x1aa2b1=path[_0x2e67('0xcf')](_0x29bea5,_0x2e67('0xef')+_0x1745b7['id']+'-'+_0x34b501+'.pdf');var _0xab013e={'path':_0x1aa2b1,'channel':_0x2e67('0xe2'),'interactionId':_0x1745b7['id']};return pdf[_0x2e67('0xf0')](_0x25424d,_0xab013e);})[_0x2e67('0x2b')](function(){return new BPromise(function(_0x68bc25,_0xd810cb){zipdir(_0x29bea5,{'saveTo':_0x1453b8},function(_0x1227b9,_0x57adb4){if(_0x1227b9)return _0xd810cb(_0x1227b9);return _0x68bc25(_0x57adb4);});})[_0x2e67('0x2b')](function(){return new BPromise(function(_0x1f9067,_0x4e02b0){rimraf(_0x29bea5,function(_0x188e19){if(_0x188e19)_0x4e02b0(_0x188e19);return _0x1f9067();});});})[_0x2e67('0x2b')](function(){return _0x3b149d[_0x2e67('0xce')](_0x1453b8,_0xf01955,function(_0x511404){if(_0x511404){console[_0x2e67('0xf1')]('err',_0x511404);}else{fs[_0x2e67('0xf2')](_0x1453b8);}});});});}else{return _0x3b149d[_0x2e67('0x2e')](0xc8);}})[_0x2e67('0xba')](handleError(_0x3b149d,null));};
\ No newline at end of file
+var _0xd339=['query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','value','having','`\x20>\x200','Contact','operator','$substring','getFullTextValue','ContactId','buildExpression','type','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','start','body','text','some','compact','i.SmsAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','unreadMessages','DESC','isEmpty','resolve','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','user','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','push','rows','show','params','includeAll','include','merge','create','update','describe','addMessage','SmsMessage','ids','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','addTags','setTags','omit','smsInteractionTags:save','removeTags','download','join','root','server','files','attachments','transcript-%d-%s.zip','User','CmContact','firstName','lastName','direction','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closed','disposition','out','System','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsInteraction.socket','register','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','fullname','Tags','TagIds','split','forEach','catch','index','map','SmsInteraction','rawAttributes','fieldName','key'];(function(_0x4d9211,_0xeb47e3){var _0x58051b=function(_0x164a99){while(--_0x164a99){_0x4d9211['push'](_0x4d9211['shift']());}};_0x58051b(++_0xeb47e3);}(_0xd339,0xad));var _0x9d33=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xd339[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9d33('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9d33('0x1'));var moment=require(_0x9d33('0x2'));var BPromise=require(_0x9d33('0x3'));var Mustache=require('mustache');var util=require(_0x9d33('0x4'));var path=require('path');var sox=require(_0x9d33('0x5'));var csv=require(_0x9d33('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d33('0x7'));var squel=require(_0x9d33('0x8'));var crypto=require('crypto');var jsforce=require(_0x9d33('0x9'));var deskjs=require(_0x9d33('0xa'));var toCsv=require(_0x9d33('0x6'));var querystring=require(_0x9d33('0xb'));var Papa=require('papaparse');var Redis=require(_0x9d33('0xc'));var authService=require(_0x9d33('0xd'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x9d33('0xe'));var hardwareService=require(_0x9d33('0xf'));var logger=require(_0x9d33('0x10'))(_0x9d33('0x11'));var utils=require('../../config/utils');var config=require(_0x9d33('0x12'));var licenseUtil=require(_0x9d33('0x13'));var db=require(_0x9d33('0x14'))['db'];config[_0x9d33('0x15')]=_[_0x9d33('0x16')](config[_0x9d33('0x15')],{'host':_0x9d33('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9d33('0x15')]));require(_0x9d33('0x18'))[_0x9d33('0x19')](socket);function respondWithStatusCode(_0x227e22,_0x3ffa29){_0x3ffa29=_0x3ffa29||0xcc;return function(_0x401134){if(_0x401134){return _0x227e22[_0x9d33('0x1a')](_0x3ffa29);}return _0x227e22[_0x9d33('0x1b')](_0x3ffa29)['end']();};}function respondWithResult(_0x4d1f14,_0x533d85){_0x533d85=_0x533d85||0xc8;return function(_0x4423b9){if(_0x4423b9){return _0x4d1f14[_0x9d33('0x1b')](_0x533d85)['json'](_0x4423b9);}};}function respondWithFilteredResult(_0x453178,_0x7d5ec1){return function(_0x38724a){if(_0x38724a){var _0x29ee63=typeof _0x7d5ec1[_0x9d33('0x1c')]===_0x9d33('0x1d')&&typeof _0x7d5ec1['limit']==='undefined';var _0x28ad3e=_0x38724a[_0x9d33('0x1e')];var _0x1e8c47=_0x29ee63?0x0:_0x7d5ec1[_0x9d33('0x1c')];var _0x2618c2=_0x29ee63?_0x38724a[_0x9d33('0x1e')]:_0x7d5ec1[_0x9d33('0x1c')]+_0x7d5ec1[_0x9d33('0x1f')];var _0x440b25;if(_0x2618c2>=_0x28ad3e){_0x2618c2=_0x28ad3e;_0x440b25=0xc8;}else{_0x440b25=0xce;}_0x453178[_0x9d33('0x1b')](_0x440b25);return _0x453178[_0x9d33('0x20')](_0x9d33('0x21'),_0x1e8c47+'-'+_0x2618c2+'/'+_0x28ad3e)['json'](_0x38724a);}return null;};}function patchUpdates(_0x55c4b9){return function(_0x5ccf1d){try{jsonpatch[_0x9d33('0x22')](_0x5ccf1d,_0x55c4b9,!![]);}catch(_0x522347){return BPromise[_0x9d33('0x23')](_0x522347);}return _0x5ccf1d[_0x9d33('0x24')]();};}function saveUpdates(_0x232c1d,_0x3721bc){return function(_0x53230d){if(_0x53230d){return _0x53230d['update'](_0x232c1d)[_0x9d33('0x25')](function(_0x2bd711){return _0x2bd711;});}return null;};}function removeEntity(_0x5ad465,_0x204af5){return function(_0x3c7e2e){if(_0x3c7e2e){return _0x3c7e2e[_0x9d33('0x26')]()[_0x9d33('0x25')](function(){_0x5ad465[_0x9d33('0x1b')](0xcc)[_0x9d33('0x27')]();});}};}function handleEntityNotFound(_0x32f244,_0x4afd3f){return function(_0x48c5fb){if(!_0x48c5fb){_0x32f244['sendStatus'](0x194);}return _0x48c5fb;};}function handleError(_0x1b7e71,_0x5c09e6){_0x5c09e6=_0x5c09e6||0x1f4;return function(_0x316080){logger[_0x9d33('0x28')](_0x316080[_0x9d33('0x29')]);if(_0x316080[_0x9d33('0x2a')]){delete _0x316080[_0x9d33('0x2a')];}_0x1b7e71['status'](_0x5c09e6)['send'](_0x316080);};}function getInteractionUsers(_0x467043,_0x3e36bb){return new BPromise(function(_0x2d61c4,_0x511f81){try{if(_0x3e36bb[_0x467043['id']]){_0x467043['Users']=_['map'](_0x3e36bb[_0x467043['id']],function(_0x24b19d){return{'id':_0x24b19d['id'],'fullname':_0x24b19d[_0x9d33('0x2b')]};});}}catch(_0x396e0e){_0x511f81(_0x396e0e);}_0x2d61c4(_0x467043);});}function getInteractionTags(_0xbde47d,_0x587b10){return new BPromise(function(_0x1dfe4d,_0x5bd828){try{if(_0xbde47d['TagIds']){_0xbde47d[_0x9d33('0x2c')]=[];_0xbde47d[_0x9d33('0x2d')][_0x9d33('0x2e')](',')[_0x9d33('0x2f')](function(_0x6bf3e8){_0xbde47d[_0x9d33('0x2c')]['push'](_0x587b10[_0x6bf3e8]);});}delete _0xbde47d[_0x9d33('0x2d')];}catch(_0x50d0be){_0x5bd828(_0x50d0be);}_0x1dfe4d(_0xbde47d);});}function updateSmsInteraction(_0x135633,_0x5453fd,_0x52c13a){return new BPromise(function(_0x257a15,_0x52fc53){return getInteractionUsers(_0x135633,_0x52c13a)[_0x9d33('0x25')](function(_0x15e210){return getInteractionTags(_0x15e210,_0x5453fd);})[_0x9d33('0x25')](function(_0x49ecb5){_0x257a15(_0x49ecb5);})[_0x9d33('0x30')](function(_0x69895f){_0x52fc53(_0x69895f);});});}exports[_0x9d33('0x31')]=function(_0x284e09,_0x183c1b){var _0x5885b7={},_0x1673a2={},_0x2d9bc4={'count':0x0,'rows':[]};var _0x317f9a=_[_0x9d33('0x32')](db[_0x9d33('0x33')][_0x9d33('0x34')],function(_0x37d8b1){return{'name':_0x37d8b1[_0x9d33('0x35')],'type':_0x37d8b1['type'][_0x9d33('0x36')]};});_0x1673a2['model']=_[_0x9d33('0x32')](_0x317f9a,'name');_0x1673a2[_0x9d33('0x37')]=_[_0x9d33('0x38')](_0x284e09[_0x9d33('0x37')]);_0x1673a2['filters']=_[_0x9d33('0x39')](_0x1673a2[_0x9d33('0x3a')],_0x1673a2[_0x9d33('0x37')]);_0x5885b7[_0x9d33('0x3b')]=_['intersection'](_0x1673a2[_0x9d33('0x3a')],qs[_0x9d33('0x3c')](_0x284e09[_0x9d33('0x37')][_0x9d33('0x3c')]));_0x5885b7['attributes']=_0x5885b7['attributes'][_0x9d33('0x3d')]?_0x5885b7[_0x9d33('0x3b')]:_0x1673a2[_0x9d33('0x3a')];if(!_0x284e09[_0x9d33('0x37')]['hasOwnProperty'](_0x9d33('0x3e'))){_0x5885b7[_0x9d33('0x1f')]=qs[_0x9d33('0x1f')](_0x284e09[_0x9d33('0x37')][_0x9d33('0x1f')]);_0x5885b7[_0x9d33('0x1c')]=qs[_0x9d33('0x1c')](_0x284e09[_0x9d33('0x37')][_0x9d33('0x1c')]);}_0x5885b7[_0x9d33('0x3f')]=qs[_0x9d33('0x40')](_0x284e09[_0x9d33('0x37')][_0x9d33('0x40')]);_0x5885b7[_0x9d33('0x41')]=qs[_0x9d33('0x42')](_[_0x9d33('0x43')](_0x284e09[_0x9d33('0x37')],_0x1673a2[_0x9d33('0x42')]),_0x317f9a);var _0x2782be=[];var _0x5e04f1=squel[_0x9d33('0x44')]()[_0x9d33('0x45')]('id')[_0x9d33('0x45')](_0x9d33('0x2a'))[_0x9d33('0x45')](_0x9d33('0x46'))[_0x9d33('0x47')](_0x9d33('0x48'));var _0x5b7f53=squel[_0x9d33('0x44')]()[_0x9d33('0x45')](_0x9d33('0x49'))[_0x9d33('0x45')](_0x9d33('0x4a'))[_0x9d33('0x45')](_0x9d33('0x4b'))[_0x9d33('0x47')](_0x9d33('0x4c'),'ui')[_0x9d33('0x4d')](_0x9d33('0x4e'),'u',_0x9d33('0x4f'));var _0x94bbe2=squel['select']()[_0x9d33('0x47')]('sms_interactions','i')[_0x9d33('0x4d')](_0x9d33('0x50'),'c',_0x9d33('0x51'))[_0x9d33('0x4d')](_0x9d33('0x4e'),'o',_0x9d33('0x52'))[_0x9d33('0x4d')](_0x9d33('0x53'),'a',_0x9d33('0x54'))[_0x9d33('0x4d')]('sms_messages','me',_0x9d33('0x55'))[_0x9d33('0x4d')](_0x9d33('0x56'),'it','it.SmsInteractionId\x20=\x20i.id')[_0x9d33('0x4d')](_0x9d33('0x48'),'t',_0x9d33('0x57'));var _0x49b5d1=squel[_0x9d33('0x58')]();var _0x4f8614=[];var _0x583f8f=squel[_0x9d33('0x58')]();var _0x5a2872;if(_0x284e09[_0x9d33('0x37')][_0x9d33('0x59')]){_0x5a2872=as['parseSearch'](_0x284e09[_0x9d33('0x37')][_0x9d33('0x59')]);var _0x305791=_0x5a2872[_0x9d33('0x5a')];for(var _0x3a974c=0x0;_0x3a974c<_0x5a2872[_0x9d33('0x5b')][_0x9d33('0x3d')];_0x3a974c++){var _0x21e08e=_0x5a2872[_0x9d33('0x5b')][_0x3a974c];var _0x2ef725='i';var _0x45d0d9=_['find'](_0x317f9a,[_0x9d33('0x2a'),_0x21e08e[_0x9d33('0x45')]]);if(!_0x45d0d9){switch(_0x21e08e[_0x9d33('0x45')]){case'unreadMessages':if(_0x21e08e[_0x9d33('0x5c')]==0x1){_0x94bbe2[_0x9d33('0x5d')]('`'+_0x21e08e[_0x9d33('0x45')]+'`\x20=\x200');}else{_0x94bbe2[_0x9d33('0x5d')]('`'+_0x21e08e[_0x9d33('0x45')]+_0x9d33('0x5e'));}break;case _0x9d33('0x5f'):if(_0x21e08e[_0x9d33('0x60')]===_0x9d33('0x61')){if(_0x21e08e['value'][_0x9d33('0x2e')]('\x20')['length']>0x1){_0x49b5d1[_0x305791]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x9d33('0x62')](_0x21e08e[_0x9d33('0x5c')]),null);}else{var _0x205c7d='%'+_0x21e08e[_0x9d33('0x5c')]+'%';_0x49b5d1[_0x305791]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x205c7d,_0x205c7d,_0x205c7d);}}else{_0x45d0d9=_['find'](_0x317f9a,['name',_0x9d33('0x63')]);_0x21e08e[_0x9d33('0x45')]='ContactId';_0x36ee38=as[_0x9d33('0x64')](_0x2ef725,_0x45d0d9[_0x9d33('0x65')],_0x21e08e);_0x49b5d1[_0x305791](_0x36ee38['text'],_0x36ee38[_0x9d33('0x5c')]['start'],_0x36ee38[_0x9d33('0x5c')][_0x9d33('0x27')]);}break;case _0x9d33('0x66'):var _0x373c58=_0x21e08e[_0x9d33('0x5c')][_0x9d33('0x2e')](',')[_0x9d33('0x32')](function(_0x5485ba){return Number(_0x5485ba);});_0x373c58[_0x9d33('0x2f')](function(_0x4d6e64){_0x583f8f['or'](_0x9d33('0x67'),'%,'+_0x4d6e64+',%');});_0x4f8614=_['union'](_0x4f8614,_0x373c58);break;case'User':if(_0x21e08e[_0x9d33('0x60')]==='$substring'){_0x49b5d1[_0x305791](_0x9d33('0x68'),'%'+_0x21e08e[_0x9d33('0x5c')]+'%',null);}else{_0x45d0d9=_[_0x9d33('0x69')](_0x317f9a,[_0x9d33('0x2a'),_0x9d33('0x6a')]);_0x21e08e[_0x9d33('0x45')]=_0x9d33('0x6a');_0x36ee38=as[_0x9d33('0x64')](_0x2ef725,_0x45d0d9['type'],_0x21e08e);_0x49b5d1[_0x305791](_0x36ee38['text'],_0x36ee38[_0x9d33('0x5c')][_0x9d33('0x6b')],_0x36ee38['value'][_0x9d33('0x27')]);}break;case _0x9d33('0x6c'):_0x36ee38=as[_0x9d33('0x64')]('me',null,_0x21e08e);_0x49b5d1[_0x305791](_0x36ee38[_0x9d33('0x6d')],_0x36ee38[_0x9d33('0x5c')][_0x9d33('0x6b')],_0x36ee38[_0x9d33('0x5c')][_0x9d33('0x27')]);break;}}else{var _0x36ee38=as[_0x9d33('0x64')](_0x2ef725,_0x45d0d9[_0x9d33('0x65')],_0x21e08e);_0x49b5d1[_0x305791](_0x36ee38[_0x9d33('0x6d')],_0x36ee38[_0x9d33('0x5c')]['start'],_0x36ee38[_0x9d33('0x5c')]['end']);}}}else{var _0x454f71=_(_0x284e09[_0x9d33('0x37')])['keys']()[_0x9d33('0x32')](function(_0x4cebc5){return _[_0x9d33('0x6e')](_0x317f9a,[_0x9d33('0x2a'),_0x4cebc5])?_0x4cebc5:undefined;})[_0x9d33('0x6f')]()['value']();if(!_['isEmpty'](_0x454f71)){_0x454f71[_0x9d33('0x2f')](function(_0x307cbc){if(_0x307cbc==='SmsAccountId'){_0x94bbe2['where'](_0x9d33('0x70'),[]['concat'](_0x284e09[_0x9d33('0x37')][_0x307cbc]));}else if(_0x307cbc===_0x9d33('0x71')){var _0x37c2a9=JSON[_0x9d33('0x72')](_0x284e09[_0x9d33('0x37')][_0x307cbc])[_0x9d33('0x73')];var _0x3585c6=JSON[_0x9d33('0x72')](_0x284e09[_0x9d33('0x37')][_0x307cbc])[_0x9d33('0x74')];_0x94bbe2[_0x9d33('0x41')](_0x9d33('0x75'),_0x37c2a9,_0x3585c6);}else{if(_0x284e09[_0x9d33('0x37')][_0x307cbc]===_0x9d33('0x76')){_0x94bbe2[_0x9d33('0x41')]('i.'+_0x307cbc+_0x9d33('0x77'));}else{_0x94bbe2[_0x9d33('0x41')]('i.'+_0x307cbc+_0x9d33('0x78'),_0x284e09[_0x9d33('0x37')][_0x307cbc]);}}});}if(_0x284e09['query'][_0x9d33('0x79')]){if(_0x284e09[_0x9d33('0x37')]['read']==0x1){_0x94bbe2[_0x9d33('0x5d')](_0x9d33('0x7a'));}else{_0x94bbe2[_0x9d33('0x5d')](_0x9d33('0x7b'));}}if(_0x284e09[_0x9d33('0x37')][_0x9d33('0x7c')]){_0x4f8614=_[_0x9d33('0x7d')](_0x284e09[_0x9d33('0x37')]['tag'])?_0x284e09['query'][_0x9d33('0x7c')]:new Array(_0x284e09[_0x9d33('0x37')][_0x9d33('0x7c')]);_0x4f8614['forEach'](function(_0x41038e){_0x583f8f['or'](_0x9d33('0x67'),'%,'+_0x41038e+',%');});}if(_0x284e09[_0x9d33('0x37')][_0x9d33('0x7e')]){var _0x4d10fc=_0x284e09['query'][_0x9d33('0x7e')][_0x9d33('0x7f')]('\x5c','\x5c\x5c')[_0x9d33('0x7f')](/'/g,'\x27\x27');if(qs[_0x9d33('0x80')](_0x4d10fc)){_0x49b5d1['or'](_0x9d33('0x81'),_0x4d10fc+'%')['or'](_0x9d33('0x82'),_0x4d10fc+'%');}else{_0x49b5d1['or'](_0x9d33('0x83'),qs[_0x9d33('0x62')](_0x4d10fc))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x4d10fc+'%');}}}_0x94bbe2[_0x9d33('0x41')](_0x49b5d1);_0x94bbe2[_0x9d33('0x84')](_0x9d33('0x85'));var _0x44ec42={'type':db[_0x9d33('0x86')][_0x9d33('0x87')][_0x9d33('0x88')],'raw':!![]};var _0x25b948=_0x94bbe2[_0x9d33('0x89')]();_0x25b948['field'](_0x9d33('0x85'));_0x25b948[_0x9d33('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9d33('0x8a'));if(_0x5885b7[_0x9d33('0x3f')]){_0x5885b7[_0x9d33('0x3f')]['forEach'](function(_0x340256){var _0x25184e=_0x340256[0x0]==='contactName'?_0x340256[0x0]:'i.'+_0x340256[0x0];_0x94bbe2[_0x9d33('0x3f')](_0x25184e,_0x340256[0x1]===_0x9d33('0x8b')?![]:!![]);});}if(!_[_0x9d33('0x8c')](_0x4f8614)){_0x94bbe2[_0x9d33('0x5d')](_0x583f8f);_0x25b948['where']('t.id\x20IN\x20?',_0x4f8614);}BPromise[_0x9d33('0x8d')]()['then'](function(){if(!_0x5a2872){if(_0x284e09[_0x9d33('0x37')][_0x9d33('0x8e')])return;_0x25b948[_0x9d33('0x41')](_0x9d33('0x8f'));_0x94bbe2['where'](_0x9d33('0x8f'));return;}if(_0x284e09['user'][_0x9d33('0x90')]!=='agent')return;return _0x284e09['user'][_0x9d33('0x91')]({'attributes':['id'],'raw':!![]})['then'](function(_0x59cb79){if(_[_0x9d33('0x8c')](_0x59cb79)){_0x25b948['where'](_0x9d33('0x92'));_0x94bbe2[_0x9d33('0x41')](_0x9d33('0x92'));}else{_0x25b948['where']('i.SmsAccountId\x20IN\x20?',_[_0x9d33('0x32')](_0x59cb79,'id'));_0x94bbe2[_0x9d33('0x41')](_0x9d33('0x70'),_['map'](_0x59cb79,'id'));}});})['then'](function(){if(_0x284e09[_0x9d33('0x93')][_0x9d33('0x90')]==='agent'&&!_0x5a2872&&!_0x284e09[_0x9d33('0x37')][_0x9d33('0x8e')])return[];return db[_0x9d33('0x94')][_0x9d33('0x37')](_0x25b948[_0x9d33('0x95')](),_0x44ec42);})['then'](function(_0x406c53){_0x2d9bc4[_0x9d33('0x1e')]=_0x406c53[_0x9d33('0x3d')];if(_0x2d9bc4[_0x9d33('0x1e')]===0x0)return[];return db[_0x9d33('0x94')][_0x9d33('0x37')](_0x5e04f1[_0x9d33('0x95')](),_0x44ec42)[_0x9d33('0x25')](function(_0x18de2f){_0x2782be=_[_0x9d33('0x96')](_0x18de2f,'id');_0x44ec42=_['merge'](_0x44ec42,{'model':db[_0x9d33('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x284e09['query'][_0x9d33('0x3c')]){_0x5885b7[_0x9d33('0x3b')][_0x9d33('0x2f')](function(_0x21d31a){_0x94bbe2['field']('i.'+_0x21d31a);});}else{_0x94bbe2['field'](_0x9d33('0x97'),_0x9d33('0x8a'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0x98'),_0x9d33('0x99'));_0x94bbe2['field'](_0x9d33('0x9a'),_0x9d33('0x9b'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0x9c'),_0x9d33('0x9d'));_0x94bbe2['field'](_0x9d33('0x9e'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0x9f'),_0x9d33('0xa0'));_0x94bbe2['field'](_0x9d33('0xa1'),_0x9d33('0xa2'));_0x94bbe2['field'](_0x9d33('0xa3'),_0x9d33('0xa4'));_0x94bbe2[_0x9d33('0x45')]('c.phone','Contact.phone');_0x94bbe2[_0x9d33('0x45')](_0x9d33('0xa5'),_0x9d33('0xa6'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0xa7'),'Contact.fax');_0x94bbe2[_0x9d33('0x45')]('o.fullname',_0x9d33('0xa8'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0xa9'),_0x9d33('0xaa'));_0x94bbe2[_0x9d33('0x45')](_0x9d33('0xab'),_0x9d33('0x2d'));}if(_0x5885b7[_0x9d33('0x1f')])_0x94bbe2[_0x9d33('0x1f')](_0x5885b7[_0x9d33('0x1f')]);if(_0x5885b7[_0x9d33('0x1c')])_0x94bbe2['offset'](_0x5885b7[_0x9d33('0x1c')]);return db[_0x9d33('0x94')][_0x9d33('0x37')](_0x94bbe2[_0x9d33('0x95')](),_0x44ec42);})[_0x9d33('0x25')](function(_0x2e2af9){if(_0x2e2af9[_0x9d33('0x3d')]>0x0)_0x5b7f53['where'](_0x9d33('0xac'),_[_0x9d33('0x32')](_0x2e2af9,'id'));return db[_0x9d33('0x94')]['query'](_0x5b7f53[_0x9d33('0x95')](),_0x44ec42)['then'](function(_0x469575){var _0x4689a5=_[_0x9d33('0xad')](_0x469575,_0x9d33('0xae'));var _0x2b9705=[];_0x2e2af9[_0x9d33('0x2f')](function(_0x570278){_0x2b9705[_0x9d33('0xaf')](updateSmsInteraction(_0x570278,_0x2782be,_0x4689a5));});return BPromise['all'](_0x2b9705);});});})['then'](function(_0x3e4c5c){_0x2d9bc4[_0x9d33('0xb0')]=_0x3e4c5c;return _0x2d9bc4;})['then'](respondWithFilteredResult(_0x183c1b,_0x5885b7))[_0x9d33('0x30')](handleError(_0x183c1b,null));};exports[_0x9d33('0xb1')]=function(_0x346da3,_0x1592ac){var _0x35cb74={'raw':![],'where':{'id':_0x346da3[_0x9d33('0xb2')]['id']}},_0x1301b3={};_0x1301b3[_0x9d33('0x3a')]=_[_0x9d33('0x38')](db['SmsInteraction'][_0x9d33('0x34')]);_0x1301b3[_0x9d33('0x37')]=_[_0x9d33('0x38')](_0x346da3[_0x9d33('0x37')]);_0x1301b3[_0x9d33('0x42')]=_[_0x9d33('0x39')](_0x1301b3['model'],_0x1301b3[_0x9d33('0x37')]);_0x35cb74[_0x9d33('0x3b')]=_[_0x9d33('0x39')](_0x1301b3[_0x9d33('0x3a')],qs[_0x9d33('0x3c')](_0x346da3[_0x9d33('0x37')]['fields']));_0x35cb74[_0x9d33('0x3b')]=_0x35cb74[_0x9d33('0x3b')]['length']?_0x35cb74[_0x9d33('0x3b')]:_0x1301b3[_0x9d33('0x3a')];if(_0x346da3[_0x9d33('0x37')][_0x9d33('0xb3')]){_0x35cb74[_0x9d33('0xb4')]=[{'all':!![]}];}_0x35cb74=_[_0x9d33('0xb5')]({},_0x35cb74,_0x346da3['options']);return db['SmsInteraction'][_0x9d33('0x69')](_0x35cb74)[_0x9d33('0x25')](handleEntityNotFound(_0x1592ac,null))[_0x9d33('0x25')](respondWithResult(_0x1592ac,null))[_0x9d33('0x30')](handleError(_0x1592ac,null));};exports[_0x9d33('0xb6')]=function(_0x54253e,_0x51faa8){return db[_0x9d33('0x33')][_0x9d33('0xb6')](_0x54253e[_0x9d33('0x6c')],{})[_0x9d33('0x25')](respondWithResult(_0x51faa8,0xc9))[_0x9d33('0x30')](handleError(_0x51faa8,null));};exports[_0x9d33('0xb7')]=function(_0xb8ec33,_0xc185d1){if(_0xb8ec33[_0x9d33('0x6c')]['id']){delete _0xb8ec33[_0x9d33('0x6c')]['id'];}return db[_0x9d33('0x33')][_0x9d33('0x69')]({'where':{'id':_0xb8ec33[_0x9d33('0xb2')]['id']}})[_0x9d33('0x25')](handleEntityNotFound(_0xc185d1,null))[_0x9d33('0x25')](saveUpdates(_0xb8ec33['body'],null))['then'](respondWithResult(_0xc185d1,null))[_0x9d33('0x30')](handleError(_0xc185d1,null));};exports[_0x9d33('0x26')]=function(_0x427f57,_0x321c43){return db[_0x9d33('0x33')][_0x9d33('0x69')]({'where':{'id':_0x427f57[_0x9d33('0xb2')]['id']}})[_0x9d33('0x25')](handleEntityNotFound(_0x321c43,null))['then'](removeEntity(_0x321c43,null))[_0x9d33('0x30')](handleError(_0x321c43,null));};exports[_0x9d33('0xb8')]=function(_0x18aae7,_0x45f241){return db[_0x9d33('0x33')][_0x9d33('0xb8')]()['then'](respondWithResult(_0x45f241,null))[_0x9d33('0x30')](handleError(_0x45f241,null));};exports[_0x9d33('0xb9')]=function(_0x38028e,_0x14b852,_0x3a566c){return db[_0x9d33('0xba')][_0x9d33('0x69')]({'where':{'id':_0x38028e[_0x9d33('0xb2')]['id']}})[_0x9d33('0x25')](handleEntityNotFound(_0x14b852,null))['then'](function(_0x2ea2f4){if(_0x2ea2f4){return _0x2ea2f4['addMessage'](_0x38028e[_0x9d33('0x6c')]['ids'],_['omit'](_0x38028e[_0x9d33('0x6c')],[_0x9d33('0xbb'),'id'])||{});}})['then'](respondWithResult(_0x14b852,null))[_0x9d33('0x30')](handleError(_0x14b852,null));};exports[_0x9d33('0xbc')]=function(_0x2309f0,_0x4012e7,_0x19fc9c){var _0x4393f4={'raw':![],'where':{}};var _0xa75801={};var _0x2a83ab={'count':0x0,'rows':[]};return db[_0x9d33('0x33')][_0x9d33('0xbd')]({'where':{'id':_0x2309f0[_0x9d33('0xb2')]['id']}})[_0x9d33('0x25')](handleEntityNotFound(_0x4012e7,null))[_0x9d33('0x25')](function(_0x52ba31){if(_0x52ba31){_0xa75801[_0x9d33('0x3a')]=_[_0x9d33('0x38')](db[_0x9d33('0xba')][_0x9d33('0x34')]);_0xa75801[_0x9d33('0x37')]=_['keys'](_0x2309f0['query']);_0xa75801[_0x9d33('0x42')]=_[_0x9d33('0x39')](_0xa75801[_0x9d33('0x3a')],_0xa75801['query']);_0x4393f4[_0x9d33('0x3b')]=_['intersection'](_0xa75801['model'],qs[_0x9d33('0x3c')](_0x2309f0[_0x9d33('0x37')][_0x9d33('0x3c')]));_0x4393f4[_0x9d33('0x3b')]=_0x4393f4['attributes'][_0x9d33('0x3d')]?_0x4393f4[_0x9d33('0x3b')]:_0xa75801[_0x9d33('0x3a')];if(!_0x2309f0[_0x9d33('0x37')]['hasOwnProperty'](_0x9d33('0x3e'))){_0x4393f4['limit']=qs[_0x9d33('0x1f')](_0x2309f0['query']['limit']);_0x4393f4[_0x9d33('0x1c')]=qs[_0x9d33('0x1c')](_0x2309f0[_0x9d33('0x37')][_0x9d33('0x1c')]);}_0x4393f4[_0x9d33('0x3f')]=qs[_0x9d33('0x40')](_0x2309f0[_0x9d33('0x37')][_0x9d33('0x40')]);_0x4393f4[_0x9d33('0x41')]=qs['filters'](_[_0x9d33('0x43')](_0x2309f0['query'],_0xa75801['filters']));_0x4393f4[_0x9d33('0x41')]['SmsInteractionId']=_0x52ba31['id'];if(_0x2309f0['query'][_0x9d33('0x7e')]){_0x4393f4[_0x9d33('0x41')]=_[_0x9d33('0xb5')](_0x4393f4[_0x9d33('0x41')],{'$or':_[_0x9d33('0x32')](_0x4393f4['attributes'],function(_0xd87cc6){var _0x26c234={};_0x26c234[_0xd87cc6]={'$like':'%'+_0x2309f0['query'][_0x9d33('0x7e')]+'%'};return _0x26c234;})});}if(_0x2309f0['query'][_0x9d33('0x73')]){var _0x1f2377=_0x2309f0[_0x9d33('0x37')][_0x9d33('0x73')][_0x9d33('0x2e')](',');var _0x245516={};_0x245516[_0x1f2377[0x0]]={'$gte':moment(_0x1f2377[0x1])[_0x9d33('0xbe')](_0x9d33('0xbf'))};_0x4393f4[_0x9d33('0x41')]=_[_0x9d33('0xb5')](_0x4393f4[_0x9d33('0x41')],_0x245516);}_0x4393f4=_[_0x9d33('0xb5')]({},_0x4393f4,_0x2309f0[_0x9d33('0xc0')]);return db[_0x9d33('0xba')]['count']({'where':_0x4393f4[_0x9d33('0x41')]})[_0x9d33('0x25')](function(_0x33d334){_0x2a83ab[_0x9d33('0x1e')]=_0x33d334;if(_0x2309f0[_0x9d33('0x37')][_0x9d33('0xb3')]){_0x4393f4[_0x9d33('0xb4')]=[{'all':!![]}];}return db[_0x9d33('0xba')][_0x9d33('0xc1')](_0x4393f4);})[_0x9d33('0x25')](function(_0xc9c3fc){_0x2a83ab[_0x9d33('0xb0')]=_0xc9c3fc;return _0x2a83ab;});}})[_0x9d33('0x25')](respondWithFilteredResult(_0x4012e7,_0x4393f4))['catch'](handleError(_0x4012e7,null));};exports[_0x9d33('0xc2')]=function(_0xd08453,_0x1633a7,_0x2c6a8a){return db['SmsInteraction'][_0x9d33('0x69')]({'where':{'id':_0xd08453['params']['id']}})[_0x9d33('0x25')](handleEntityNotFound(_0x1633a7,null))['then'](function(_0xb2a991){if(_0xb2a991){return _0xb2a991[_0x9d33('0xc3')](_0xd08453[_0x9d33('0x6c')]['ids'],_[_0x9d33('0xc4')](_0xd08453['body'],['ids','id'])||{})['spread'](function(){return db['Tag']['findAll']({'attributes':['id',_0x9d33('0x2a'),_0x9d33('0x46')],'where':{'id':_0xd08453[_0x9d33('0x6c')][_0x9d33('0xbb')]}});})['then'](function(_0x33c32f){socket['emit'](_0x9d33('0xc5'),{'id':Number(_0xd08453[_0x9d33('0xb2')]['id']),'tags':_0x33c32f||[]});return{'id':Number(_0xd08453[_0x9d33('0xb2')]['id']),'tags':_0x33c32f||[]};});}})[_0x9d33('0x25')](respondWithResult(_0x1633a7,null))[_0x9d33('0x30')](handleError(_0x1633a7,null));};exports[_0x9d33('0xc6')]=function(_0x22ccc7,_0x110817,_0x1b2da3){return db[_0x9d33('0x33')]['find']({'where':{'id':_0x22ccc7[_0x9d33('0xb2')]['id']}})['then'](handleEntityNotFound(_0x110817,null))[_0x9d33('0x25')](function(_0x37cfd2){if(_0x37cfd2){return _0x37cfd2[_0x9d33('0xc6')](_0x22ccc7[_0x9d33('0x37')]['ids']);}})[_0x9d33('0x25')](respondWithStatusCode(_0x110817,null))['catch'](handleError(_0x110817,null));};exports[_0x9d33('0xc7')]=function(_0x16fc36,_0x261793){var _0x370374=moment()['unix']()['toString']();var _0x278da3=path[_0x9d33('0xc8')](config[_0x9d33('0xc9')],_0x9d33('0xca'),'files','tmp');var _0x194417=path['join'](config[_0x9d33('0xc9')],'server',_0x9d33('0xcb'),_0x9d33('0xcc'));var _0x1dde23=path[_0x9d33('0xc8')](_0x278da3,_0x370374);var _0x11ad13=util[_0x9d33('0xbe')](_0x9d33('0xcd'),_0x16fc36[_0x9d33('0xb2')]['id'],_0x370374);var _0x35d934=path[_0x9d33('0xc8')](_0x278da3,_0x11ad13);var _0x33261f=[];_0x33261f['push']({'model':db[_0x9d33('0xce')],'as':_0x9d33('0xce'),'attributes':['id','fullname'],'raw':!![]});_0x33261f[_0x9d33('0xaf')]({'model':db[_0x9d33('0xcf')],'as':_0x9d33('0x5f'),'attributes':['id',_0x9d33('0xd0'),_0x9d33('0xd1')],'raw':!![]});var _0x246fd8=[{'model':db[_0x9d33('0xba')],'as':'Messages','attributes':['id','body','createdAt',_0x9d33('0xd2'),'secret',_0x9d33('0x79')],'include':_0x33261f}];_0x246fd8['push']({'model':db[_0x9d33('0xd3')],'as':_0x9d33('0xd4'),'attributes':['id',_0x9d33('0x2a')]});_0x246fd8[_0x9d33('0xaf')]({'model':db['User'],'as':_0x9d33('0xd5'),'attributes':['id',_0x9d33('0x2b')]});return db[_0x9d33('0x33')][_0x9d33('0x69')]({'where':{'id':_0x16fc36[_0x9d33('0xb2')]['id']},'include':_0x246fd8})[_0x9d33('0x25')](handleEntityNotFound(_0x261793,null))[_0x9d33('0x25')](function(_0x59cb94){if(_0x59cb94){var _0x5bb20e=_0x59cb94[_0x9d33('0xd6')]({'plain':!![]});fs[_0x9d33('0xd7')](_0x1dde23);var _0x2b73e9={'channel':_0x9d33('0xd8'),'account':_0x5bb20e[_0x9d33('0xd4')][_0x9d33('0x2a')],'agent':_0x5bb20e['Owner']?_0x5bb20e[_0x9d33('0xd5')][_0x9d33('0x2b')]:_0x9d33('0xd9'),'createdAt':moment(_0x5bb20e[_0x9d33('0x71')])[_0x9d33('0xbe')](_0x9d33('0xbf'))['toString'](),'closedAt':_0x5bb20e[_0x9d33('0xda')]?moment(_0x5bb20e['closedAt'])['format'](_0x9d33('0xbf'))[_0x9d33('0x95')]():'','disposition':_0x5bb20e[_0x9d33('0xdb')],'messages':_(_0x5bb20e['Messages'])[_0x9d33('0x7e')]({'secret':![]})[_0x9d33('0x32')](function(_0xf7d7f3){return{'date':moment(_0xf7d7f3[_0x9d33('0x71')])[_0x9d33('0xbe')](_0x9d33('0xbf'))[_0x9d33('0x95')](),'sender':_0xf7d7f3[_0x9d33('0xd2')]===_0x9d33('0xdc')?_0xf7d7f3['User']?_0xf7d7f3['User']['fullname']:_0x9d33('0xdd'):_0xf7d7f3[_0x9d33('0x5f')][_0x9d33('0xd0')]+(_0xf7d7f3[_0x9d33('0x5f')][_0x9d33('0xd1')]?'\x20'+_0xf7d7f3[_0x9d33('0x5f')][_0x9d33('0xd1')]:''),'body':_0xf7d7f3[_0x9d33('0x6c')],'direction':_0xf7d7f3[_0x9d33('0xd2')]===_0x9d33('0xdc')?'A':'C','secret':_0xf7d7f3['secret'],'read':_0xf7d7f3[_0x9d33('0x79')]};})[_0x9d33('0x5c')]()};return ejs['renderFile'](path[_0x9d33('0xc8')](config[_0x9d33('0xc9')],_0x9d33('0xca'),_0x9d33('0xde'),_0x9d33('0xdf')),{'interaction':_0x2b73e9})[_0x9d33('0x25')](function(_0xefaebf){var _0x4f4ec2=path['join'](_0x1dde23,_0x9d33('0xe0')+_0x5bb20e['id']+'-'+_0x370374+'.pdf');var _0x5ed6fe={'path':_0x4f4ec2,'channel':'Sms','interactionId':_0x5bb20e['id']};return pdf[_0x9d33('0xe1')](_0xefaebf,_0x5ed6fe);})[_0x9d33('0x25')](function(){return new BPromise(function(_0x5226a8,_0x5b14e1){zipdir(_0x1dde23,{'saveTo':_0x35d934},function(_0x5b2769,_0x317fba){if(_0x5b2769)return _0x5b14e1(_0x5b2769);return _0x5226a8(_0x317fba);});})[_0x9d33('0x25')](function(){return new BPromise(function(_0x53b975,_0x4424a6){rimraf(_0x1dde23,function(_0x1e73f4){if(_0x1e73f4)_0x4424a6(_0x1e73f4);return _0x53b975();});});})[_0x9d33('0x25')](function(){return _0x261793[_0x9d33('0xc7')](_0x35d934,_0x11ad13,function(_0x45d46f){if(_0x45d46f){console[_0x9d33('0xe2')](_0x9d33('0xe3'),_0x45d46f);}else{fs['unlinkSync'](_0x35d934);}});});});}else{return _0x261793['sendStatus'](0xc8);}})[_0x9d33('0x30')](handleError(_0x261793,null));};
\ No newline at end of file
index e1aed30..d80a797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x5d2708,_0x19e363){var _0x28830a=function(_0x6d65e2){while(--_0x6d65e2){_0x5d2708['push'](_0x5d2708['shift']());}};_0x28830a(++_0x19e363);}(_0x958a,0x128));var _0xa958=function(_0x53c437,_0xe0ac16){_0x53c437=_0x53c437-0x0;var _0x18b7ab=_0x958a[_0x53c437];return _0x18b7ab;};'use strict';var EventEmitter=require(_0xa958('0x0'));var SmsInteraction=require(_0xa958('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0xa958('0x1'))['db'][_0xa958('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xa958('0x3')](0x0);var events={'afterCreate':_0xa958('0x4'),'afterUpdate':_0xa958('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3424b0){return function(_0x578481,_0x2024b8,_0x9b7d9e){_0x578481[_0xa958('0x6')]({'attributes':['id'],'raw':!![]})[_0xa958('0x7')](function(_0x3ca01f){_0x578481[_0xa958('0x8')](_0xa958('0x9'),_0x3ca01f['map'](function(_0x514b4f){return{'id':_0x514b4f['id']};}));return SmsMessage[_0xa958('0xa')]({'where':{'SmsInteractionId':_0x578481['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa958('0x7')](function(_0x11f090){_0x578481[_0xa958('0x8')](_0xa958('0xb'),_0x11f090[_0xa958('0xc')]);SmsInteractionEvents[_0xa958('0xd')](_0x3424b0+':'+_0x578481['id'],_0x578481);SmsInteractionEvents[_0xa958('0xd')](_0x3424b0,_0x578481);_0x9b7d9e(null);})[_0xa958('0xe')](_0x9b7d9e(null));};}for(var e in events){if(events[_0xa958('0xf')](e)){var event=events[e];SmsInteraction[_0xa958('0x10')](e,emitEvent(event));}}module[_0xa958('0x11')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xa456=['hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','then','setDataValue','Users','map','findAll','unreadMessages','length','emit'];(function(_0x42b08d,_0x5a6b5b){var _0x17f1c7=function(_0x16b73d){while(--_0x16b73d){_0x42b08d['push'](_0x42b08d['shift']());}};_0x17f1c7(++_0x5a6b5b);}(_0xa456,0x142));var _0x6a45=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xa456[_0x45d3f0];return _0x314b79;};'use strict';var EventEmitter=require(_0x6a45('0x0'));var SmsInteraction=require(_0x6a45('0x1'))['db'][_0x6a45('0x2')];var SmsMessage=require(_0x6a45('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x6a45('0x3')](0x0);var events={'afterCreate':_0x6a45('0x4'),'afterUpdate':_0x6a45('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1f0701){return function(_0x40acad,_0x1e5882,_0x14da6b){_0x40acad['getUsers']({'attributes':['id'],'raw':!![]})[_0x6a45('0x6')](function(_0x26bfc0){_0x40acad[_0x6a45('0x7')](_0x6a45('0x8'),_0x26bfc0[_0x6a45('0x9')](function(_0x4858df){return{'id':_0x4858df['id']};}));return SmsMessage[_0x6a45('0xa')]({'where':{'SmsInteractionId':_0x40acad['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x36378a){_0x40acad[_0x6a45('0x7')](_0x6a45('0xb'),_0x36378a[_0x6a45('0xc')]);SmsInteractionEvents[_0x6a45('0xd')](_0x1f0701+':'+_0x40acad['id'],_0x40acad);SmsInteractionEvents['emit'](_0x1f0701,_0x40acad);_0x14da6b(null);})['catch'](_0x14da6b(null));};}for(var e in events){if(events[_0x6a45('0xe')](e)){var event=events[e];SmsInteraction[_0x6a45('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index e7ce3c4..42a6647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd46e=['SmsInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','moment','bluebird','request-promise','rimraf','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x98b288,_0x1e9204){var _0x588bbb=function(_0x27b3ec){while(--_0x27b3ec){_0x98b288['push'](_0x98b288['shift']());}};_0x588bbb(++_0x1e9204);}(_0xd46e,0x19c));var _0xed46=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xd46e[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xed46('0x0'));var BPromise=require(_0xed46('0x1'));var rp=require(_0xed46('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed46('0x3'));var config=require(_0xed46('0x4'));var attributes=require(_0xed46('0x5'));module[_0xed46('0x6')]=function(_0x5e5a19,_0x337259){return _0x5e5a19[_0xed46('0x7')](_0xed46('0x8'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x46ff9a,_0x3bc972,_0x17e804){if(_0x46ff9a[_0xed46('0x9')](_0xed46('0xa'))){_0x46ff9a[_0xed46('0xb')]=moment()[_0xed46('0xc')](_0xed46('0xd'));}_0x17e804(null,_0x46ff9a);}}});};
\ No newline at end of file
+var _0xe5e4=['moment','bluebird','request-promise','./smsInteraction.attributes','exports','sms_interactions','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss','util','api'];(function(_0xbd7664,_0x5a48f1){var _0x2250f7=function(_0x1cae0a){while(--_0x1cae0a){_0xbd7664['push'](_0xbd7664['shift']());}};_0x2250f7(++_0x5a48f1);}(_0xe5e4,0x174));var _0x4e5e=function(_0x3488ac,_0x3462c2){_0x3488ac=_0x3488ac-0x0;var _0xfeac2b=_0xe5e4[_0x3488ac];return _0xfeac2b;};'use strict';var _=require('lodash');var util=require(_0x4e5e('0x0'));var logger=require('../../config/logger')(_0x4e5e('0x1'));var moment=require(_0x4e5e('0x2'));var BPromise=require(_0x4e5e('0x3'));var rp=require(_0x4e5e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4e5e('0x5'));module[_0x4e5e('0x6')]=function(_0x54eb98,_0x5bd1f1){return _0x54eb98['define']('SmsInteraction',attributes,{'tableName':_0x4e5e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x205ba5,_0x5454fd,_0xccbbd7){if(_0x205ba5[_0x4e5e('0x8')]('closed')){_0x205ba5[_0x4e5e('0x9')]=moment()['format'](_0x4e5e('0xa'));}_0xccbbd7(null,_0x205ba5);}}});};
\ No newline at end of file
index f592d0c..02c5f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['ioredis','../../mysqldb','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','debug','request\x20sent','error','SmsInteraction,\x20%s,\x20%s','message','result','UpdateSmsInteraction','SmsInteraction','body','raw','options','stringify','AddTagsToSmsInteraction','find','addTags','ids','omit','spread','AddTags','catch','lodash','bluebird','randomstring'];(function(_0x8f283a,_0x3ffd17){var _0x4e5505=function(_0x1b0b42){while(--_0x1b0b42){_0x8f283a['push'](_0x8f283a['shift']());}};_0x4e5505(++_0x3ffd17);}(_0x4745,0x179));var _0x5474=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x4745[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0x5474('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5474('0x1'));var rs=require(_0x5474('0x2'));var fs=require('fs');var Redis=require(_0x5474('0x3'));var db=require(_0x5474('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5474('0x5'));var config=require('../../config/environment');var jayson=require(_0x5474('0x6'));var client=jayson[_0x5474('0x7')][_0x5474('0x8')]({'port':0x232a});config[_0x5474('0x9')]=_[_0x5474('0xa')](config[_0x5474('0x9')],{'host':_0x5474('0xb'),'port':0x18eb});var socket=require(_0x5474('0xc'))(new Redis(config[_0x5474('0x9')]));require(_0x5474('0xd'))[_0x5474('0xe')](socket);function respondWithRpcPromise(_0x484fdd,_0x204c1d,_0x4054c1){return new BPromise(function(_0x97b9cc,_0x148bc0){return client[_0x5474('0xf')](_0x484fdd,_0x4054c1)[_0x5474('0x10')](function(_0x38f7d6){logger[_0x5474('0x11')]('SmsInteraction,\x20%s,\x20%s',_0x204c1d,'request\x20sent');logger[_0x5474('0x12')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x204c1d,_0x5474('0x13'),JSON['stringify'](_0x38f7d6));if(_0x38f7d6[_0x5474('0x14')]){if(_0x38f7d6[_0x5474('0x14')]['code']===0x1f4){logger[_0x5474('0x14')](_0x5474('0x15'),_0x204c1d,_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);return _0x148bc0(_0x38f7d6[_0x5474('0x14')]['message']);}logger[_0x5474('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x204c1d,_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);return _0x97b9cc(_0x38f7d6[_0x5474('0x14')][_0x5474('0x16')]);}else{logger['info'](_0x5474('0x15'),_0x204c1d,_0x5474('0x13'));_0x97b9cc(_0x38f7d6[_0x5474('0x17')][_0x5474('0x16')]);}})['catch'](function(_0x585efe){logger[_0x5474('0x14')](_0x5474('0x15'),_0x204c1d,_0x585efe);_0x148bc0(_0x585efe);});});}exports[_0x5474('0x18')]=function(_0x17eaa2){var _0x2192b8=this;return new Promise(function(_0x10ba58,_0x17b764){return db[_0x5474('0x19')]['update'](_0x17eaa2[_0x5474('0x1a')],{'raw':_0x17eaa2['options']?_0x17eaa2['options'][_0x5474('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17eaa2['options']?_0x17eaa2[_0x5474('0x1c')]['where']||null:null,'attributes':_0x17eaa2['options']?_0x17eaa2[_0x5474('0x1c')]['attributes']||null:null,'limit':_0x17eaa2[_0x5474('0x1c')]?_0x17eaa2['options']['limit']||null:null})[_0x5474('0x10')](function(_0x57d5a1){logger[_0x5474('0x11')](_0x5474('0x18'),_0x17eaa2);logger['debug'](_0x5474('0x18'),_0x17eaa2,JSON[_0x5474('0x1d')](_0x57d5a1));_0x10ba58(_0x57d5a1);})['catch'](function(_0x16c8ce){logger[_0x5474('0x14')](_0x5474('0x18'),_0x16c8ce[_0x5474('0x16')],_0x17eaa2);_0x17b764(_0x2192b8[_0x5474('0x14')](0x1f4,_0x16c8ce[_0x5474('0x16')]));});});};exports[_0x5474('0x1e')]=function(_0x36e3be){return new Promise(function(_0x17143d,_0x11f170){return db[_0x5474('0x19')][_0x5474('0x1f')]({'where':_0x36e3be[_0x5474('0x1c')]?_0x36e3be['options']['where']||null:null})[_0x5474('0x10')](function(_0xdd9945){if(_0xdd9945){return _0xdd9945[_0x5474('0x20')](_0x36e3be['body'][_0x5474('0x21')],_[_0x5474('0x22')](_0x36e3be[_0x5474('0x1a')],[_0x5474('0x21'),'id'])||{});}})[_0x5474('0x23')](function(_0x53e0b8){logger[_0x5474('0x11')]('AddTags',_0x36e3be);logger[_0x5474('0x12')](_0x5474('0x24'),_0x36e3be,JSON['stringify'](_0x53e0b8));_0x17143d(_0x53e0b8);})[_0x5474('0x25')](function(_0xc01e54){logger['error'](_0x5474('0x24'),_0xc01e54[_0x5474('0x16')],_0x36e3be);_0x11f170(_this[_0x5474('0x14')](0x1f4,_0xc01e54[_0x5474('0x16')]));});});};
\ No newline at end of file
+var _0x0c8b=['where','attributes','limit','UpdateSmsInteraction','AddTagsToSmsInteraction','find','addTags','ids','omit','spread','AddTags','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','SmsInteraction','update','body','options','raw'];(function(_0x1885ec,_0xf7ff59){var _0x1c75ea=function(_0x188310){while(--_0x188310){_0x1885ec['push'](_0x1885ec['shift']());}};_0x1c75ea(++_0xf7ff59);}(_0x0c8b,0x147));var _0xb0c8=function(_0x4ade33,_0x103537){_0x4ade33=_0x4ade33-0x0;var _0x162cc1=_0x0c8b[_0x4ade33];return _0x162cc1;};'use strict';var _=require(_0xb0c8('0x0'));var util=require(_0xb0c8('0x1'));var moment=require(_0xb0c8('0x2'));var BPromise=require(_0xb0c8('0x3'));var rs=require(_0xb0c8('0x4'));var fs=require('fs');var Redis=require(_0xb0c8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb0c8('0x6'));var logger=require(_0xb0c8('0x7'))('rpc');var config=require(_0xb0c8('0x8'));var jayson=require(_0xb0c8('0x9'));var client=jayson[_0xb0c8('0xa')]['http']({'port':0x232a});config[_0xb0c8('0xb')]=_[_0xb0c8('0xc')](config[_0xb0c8('0xb')],{'host':_0xb0c8('0xd'),'port':0x18eb});var socket=require(_0xb0c8('0xe'))(new Redis(config['redis']));require(_0xb0c8('0xf'))[_0xb0c8('0x10')](socket);function respondWithRpcPromise(_0x7ee550,_0x477985,_0x160509){return new BPromise(function(_0x2846d6,_0x10eb8a){return client[_0xb0c8('0x11')](_0x7ee550,_0x160509)[_0xb0c8('0x12')](function(_0x5b4d8d){logger[_0xb0c8('0x13')](_0xb0c8('0x14'),_0x477985,_0xb0c8('0x15'));logger[_0xb0c8('0x16')](_0xb0c8('0x17'),_0x477985,_0xb0c8('0x15'),JSON['stringify'](_0x5b4d8d));if(_0x5b4d8d[_0xb0c8('0x18')]){if(_0x5b4d8d['error'][_0xb0c8('0x19')]===0x1f4){logger[_0xb0c8('0x18')](_0xb0c8('0x14'),_0x477985,_0x5b4d8d[_0xb0c8('0x18')]['message']);return _0x10eb8a(_0x5b4d8d['error']['message']);}logger[_0xb0c8('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x477985,_0x5b4d8d[_0xb0c8('0x18')][_0xb0c8('0x1a')]);return _0x2846d6(_0x5b4d8d[_0xb0c8('0x18')][_0xb0c8('0x1a')]);}else{logger[_0xb0c8('0x13')](_0xb0c8('0x14'),_0x477985,_0xb0c8('0x15'));_0x2846d6(_0x5b4d8d['result'][_0xb0c8('0x1a')]);}})[_0xb0c8('0x1b')](function(_0x5bbf74){logger[_0xb0c8('0x18')](_0xb0c8('0x14'),_0x477985,_0x5bbf74);_0x10eb8a(_0x5bbf74);});});}exports['UpdateSmsInteraction']=function(_0x3af6f1){var _0x22e45d=this;return new Promise(function(_0x2a8966,_0x311fe7){return db[_0xb0c8('0x1c')][_0xb0c8('0x1d')](_0x3af6f1[_0xb0c8('0x1e')],{'raw':_0x3af6f1[_0xb0c8('0x1f')]?_0x3af6f1[_0xb0c8('0x1f')][_0xb0c8('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3af6f1[_0xb0c8('0x1f')]?_0x3af6f1[_0xb0c8('0x1f')][_0xb0c8('0x21')]||null:null,'attributes':_0x3af6f1[_0xb0c8('0x1f')]?_0x3af6f1[_0xb0c8('0x1f')][_0xb0c8('0x22')]||null:null,'limit':_0x3af6f1['options']?_0x3af6f1[_0xb0c8('0x1f')][_0xb0c8('0x23')]||null:null})['then'](function(_0xb70874){logger[_0xb0c8('0x13')](_0xb0c8('0x24'),_0x3af6f1);logger['debug'](_0xb0c8('0x24'),_0x3af6f1,JSON['stringify'](_0xb70874));_0x2a8966(_0xb70874);})['catch'](function(_0x46466c){logger[_0xb0c8('0x18')](_0xb0c8('0x24'),_0x46466c[_0xb0c8('0x1a')],_0x3af6f1);_0x311fe7(_0x22e45d[_0xb0c8('0x18')](0x1f4,_0x46466c[_0xb0c8('0x1a')]));});});};exports[_0xb0c8('0x25')]=function(_0x24d2e0){return new Promise(function(_0x4aa8ae,_0x1ee7f9){return db[_0xb0c8('0x1c')][_0xb0c8('0x26')]({'where':_0x24d2e0[_0xb0c8('0x1f')]?_0x24d2e0[_0xb0c8('0x1f')][_0xb0c8('0x21')]||null:null})[_0xb0c8('0x12')](function(_0x1e433a){if(_0x1e433a){return _0x1e433a[_0xb0c8('0x27')](_0x24d2e0['body'][_0xb0c8('0x28')],_[_0xb0c8('0x29')](_0x24d2e0[_0xb0c8('0x1e')],[_0xb0c8('0x28'),'id'])||{});}})[_0xb0c8('0x2a')](function(_0x20bbb7){logger[_0xb0c8('0x13')](_0xb0c8('0x2b'),_0x24d2e0);logger['debug'](_0xb0c8('0x2b'),_0x24d2e0,JSON[_0xb0c8('0x2c')](_0x20bbb7));_0x4aa8ae(_0x20bbb7);})[_0xb0c8('0x1b')](function(_0x36f2c5){logger[_0xb0c8('0x18')](_0xb0c8('0x2b'),_0x36f2c5['message'],_0x24d2e0);_0x1ee7f9(_this[_0xb0c8('0x18')](0x1f4,_0x36f2c5[_0xb0c8('0x1a')]));});});};
\ No newline at end of file
index a2f45f4..c50e4a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2b6=['smsInteraction:','./smsInteraction.events','save','remove','update','removeListener','register'];(function(_0x262c6d,_0x422ff9){var _0x4c5d85=function(_0x5de3ad){while(--_0x5de3ad){_0x262c6d['push'](_0x262c6d['shift']());}};_0x4c5d85(++_0x422ff9);}(_0xd2b6,0x190));var _0x6d2b=function(_0x2be260,_0x5e3fb6){_0x2be260=_0x2be260-0x0;var _0x42c437=_0xd2b6[_0x2be260];return _0x42c437;};'use strict';var SmsInteractionEvents=require(_0x6d2b('0x0'));var events=[_0x6d2b('0x1'),_0x6d2b('0x2'),_0x6d2b('0x3')];function createListener(_0x33799a,_0x3bddec){return function(_0x4b9178){_0x3bddec['emit'](_0x33799a,_0x4b9178);};}function removeListener(_0x440b40,_0x5ada86){return function(){SmsInteractionEvents[_0x6d2b('0x4')](_0x440b40,_0x5ada86);};}exports[_0x6d2b('0x5')]=function(_0x52646a){for(var _0x4673e1=0x0,_0x368ffd=events['length'];_0x4673e1<_0x368ffd;_0x4673e1++){var _0x4d9475=events[_0x4673e1];var _0x10a185=createListener(_0x6d2b('0x6')+_0x4d9475,_0x52646a);SmsInteractionEvents['on'](_0x4d9475,_0x10a185);}};
\ No newline at end of file
+var _0x4f11=['update','emit','removeListener','register','smsInteraction:','./smsInteraction.events','save'];(function(_0x18fbe7,_0x5220f2){var _0x389ea2=function(_0x163b73){while(--_0x163b73){_0x18fbe7['push'](_0x18fbe7['shift']());}};_0x389ea2(++_0x5220f2);}(_0x4f11,0x1d3));var _0x14f1=function(_0x24b31b,_0x2bdcae){_0x24b31b=_0x24b31b-0x0;var _0xbec6ec=_0x4f11[_0x24b31b];return _0xbec6ec;};'use strict';var SmsInteractionEvents=require(_0x14f1('0x0'));var events=[_0x14f1('0x1'),'remove',_0x14f1('0x2')];function createListener(_0x55d9fd,_0xdd7718){return function(_0x184b96){_0xdd7718[_0x14f1('0x3')](_0x55d9fd,_0x184b96);};}function removeListener(_0x397347,_0x5d4848){return function(){SmsInteractionEvents[_0x14f1('0x4')](_0x397347,_0x5d4848);};}exports[_0x14f1('0x5')]=function(_0x34ed8a){for(var _0x4aa8c3=0x0,_0x5875e=events['length'];_0x4aa8c3<_0x5875e;_0x4aa8c3++){var _0x245296=events[_0x4aa8c3];var _0x12df1b=createListener(_0x14f1('0x6')+_0x245296,_0x34ed8a);SmsInteractionEvents['on'](_0x245296,_0x12df1b);}};
\ No newline at end of file
index 48cb2db..014b952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb9=['isAuthenticated','index','/describe','describe','show','post','tracked','sms','smsmessage:create','create','/:id/status','status','/:id','update','put','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get'];(function(_0x325abd,_0x47d385){var _0x2c097a=function(_0x767bc8){while(--_0x767bc8){_0x325abd['push'](_0x325abd['shift']());}};_0x2c097a(++_0x47d385);}(_0xecb9,0x90));var _0x9ecb=function(_0x24f04d,_0x198dc7){_0x24f04d=_0x24f04d-0x0;var _0x2930f0=_0xecb9[_0x24f04d];return _0x2930f0;};'use strict';var multer=require(_0x9ecb('0x0'));var util=require(_0x9ecb('0x1'));var path=require(_0x9ecb('0x2'));var timeout=require(_0x9ecb('0x3'));var express=require(_0x9ecb('0x4'));var router=express[_0x9ecb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x9ecb('0x6'));var interaction=require(_0x9ecb('0x7'));var config=require(_0x9ecb('0x8'));var controller=require(_0x9ecb('0x9'));router[_0x9ecb('0xa')]('/',auth[_0x9ecb('0xb')](),controller[_0x9ecb('0xc')]);router[_0x9ecb('0xa')](_0x9ecb('0xd'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0xe')]);router[_0x9ecb('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9ecb('0xf')]);router[_0x9ecb('0x10')]('/',auth['isAuthenticated'](),interaction[_0x9ecb('0x11')](_0x9ecb('0x12'),_0x9ecb('0x13')),controller[_0x9ecb('0x14')]);router['post'](_0x9ecb('0x15'),controller[_0x9ecb('0x16')]);router['put'](_0x9ecb('0x17'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0x18')]);router[_0x9ecb('0x19')]('/:id/accept',auth[_0x9ecb('0xb')](),controller['accept']);router[_0x9ecb('0x19')](_0x9ecb('0x1a'),auth[_0x9ecb('0xb')](),controller[_0x9ecb('0x1b')]);router[_0x9ecb('0x1c')](_0x9ecb('0x17'),auth['isAuthenticated'](),controller[_0x9ecb('0x1d')]);module[_0x9ecb('0x1e')]=router;
\ No newline at end of file
+var _0x98e7=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','tracked','sms','smsmessage:create','create','status','put','/:id/accept','accept','/:id/reject','reject','delete','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x98e7,0x1c2));var _0x798e=function(_0x25606e,_0xe56303){_0x25606e=_0x25606e-0x0;var _0x4785e5=_0x98e7[_0x25606e];return _0x4785e5;};'use strict';var multer=require('multer');var util=require(_0x798e('0x0'));var path=require(_0x798e('0x1'));var timeout=require(_0x798e('0x2'));var express=require(_0x798e('0x3'));var router=express[_0x798e('0x4')]();var fs_extra=require(_0x798e('0x5'));var auth=require(_0x798e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x798e('0x7'));var controller=require('./smsMessage.controller');router[_0x798e('0x8')]('/',auth[_0x798e('0x9')](),controller[_0x798e('0xa')]);router[_0x798e('0x8')](_0x798e('0xb'),auth[_0x798e('0x9')](),controller['describe']);router[_0x798e('0x8')]('/:id',auth[_0x798e('0x9')](),controller[_0x798e('0xc')]);router[_0x798e('0xd')]('/',auth['isAuthenticated'](),interaction[_0x798e('0xe')](_0x798e('0xf'),_0x798e('0x10')),controller[_0x798e('0x11')]);router[_0x798e('0xd')]('/:id/status',controller[_0x798e('0x12')]);router[_0x798e('0x13')]('/:id',auth[_0x798e('0x9')](),controller['update']);router[_0x798e('0x13')](_0x798e('0x14'),auth['isAuthenticated'](),controller[_0x798e('0x15')]);router[_0x798e('0x13')](_0x798e('0x16'),auth[_0x798e('0x9')](),controller[_0x798e('0x17')]);router[_0x798e('0x18')](_0x798e('0x19'),auth[_0x798e('0x9')](),controller[_0x798e('0x1a')]);module[_0x798e('0x1b')]=router;
\ No newline at end of file
index e663714..dea6a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf958=['medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT'];(function(_0x8512af,_0x898ac9){var _0x1319bb=function(_0x4badb5){while(--_0x4badb5){_0x8512af['push'](_0x8512af['shift']());}};_0x1319bb(++_0x898ac9);}(_0xf958,0x1c0));var _0x8f95=function(_0x36b05f,_0x32fa34){_0x36b05f=_0x36b05f-0x0;var _0x18fefd=_0xf958[_0x36b05f];return _0x18fefd;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x8f95('0x0')),'allowNull':![]},'read':{'type':Sequelize[_0x8f95('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8f95('0x2')]('in',_0x8f95('0x3')),'defaultValue':_0x8f95('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8f95('0x4')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x8f95('0x5')]},'secret':{'type':Sequelize[_0x8f95('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x8f95('0x4')]},'providerResponse':{'type':Sequelize[_0x8f95('0x6')]}};
\ No newline at end of file
+var _0xd1b3=['TEXT','medium','BOOLEAN','STRING','DATE','sequelize','exports'];(function(_0x277290,_0x30c8bc){var _0x24cd58=function(_0x3b9708){while(--_0x3b9708){_0x277290['push'](_0x277290['shift']());}};_0x24cd58(++_0x30c8bc);}(_0xd1b3,0xec));var _0x3d1b=function(_0x52b0b4,_0x20b0b8){_0x52b0b4=_0x52b0b4-0x0;var _0x5bcf06=_0xd1b3[_0x52b0b4];return _0x5bcf06;};'use strict';var Sequelize=require(_0x3d1b('0x0'));module[_0x3d1b('0x1')]={'body':{'type':Sequelize[_0x3d1b('0x2')](_0x3d1b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x3d1b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x3d1b('0x5')](0xbe)},'phone':{'type':Sequelize[_0x3d1b('0x5')]},'readAt':{'type':Sequelize[_0x3d1b('0x6')]},'secret':{'type':Sequelize[_0x3d1b('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x3d1b('0x5')]},'providerResponse':{'type':Sequelize[_0x3d1b('0x2')]}};
\ No newline at end of file
index da18a3b..dca27d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d0=['../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','destroy','name','SmsMessage','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','body','update','describe','sms-interactions','accept','sms','read','readAt','UserId','user','get','SmsInteraction','isNil','format','YYYY-MM-DD\x20HH:mm:ss','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','agent','fullname','email','internal','manual','interface','channel','EventManager','acceptmessage','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','sequelize','SIP/%s','motionChannel','event','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','plivo','MessageUUID','indexOf','Status','results','groupName','SmsAccount,\x20%s,\x20%s,\x20%s','infobip','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs'];(function(_0x4d390c,_0x4e1226){var _0x3e6786=function(_0x5a8ab8){while(--_0x5a8ab8){_0x4d390c['push'](_0x4d390c['shift']());}};_0x3e6786(++_0x4e1226);}(_0x90d0,0x10f));var _0x090d=function(_0x3c7ae2,_0x5504e3){_0x3c7ae2=_0x3c7ae2-0x0;var _0x39f0d7=_0x90d0[_0x3c7ae2];return _0x39f0d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x090d('0x0'));var jsonpatch=require(_0x090d('0x1'));var rp=require('request-promise');var moment=require(_0x090d('0x2'));var BPromise=require(_0x090d('0x3'));var Mustache=require(_0x090d('0x4'));var util=require(_0x090d('0x5'));var path=require(_0x090d('0x6'));var sox=require(_0x090d('0x7'));var csv=require(_0x090d('0x8'));var ejs=require(_0x090d('0x9'));var fs=require('fs');var fs_extra=require(_0x090d('0xa'));var _=require(_0x090d('0xb'));var squel=require(_0x090d('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x090d('0xd'));var toCsv=require(_0x090d('0x8'));var querystring=require(_0x090d('0xe'));var Papa=require(_0x090d('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x090d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x090d('0x11'))(_0x090d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x090d('0x13'));var db=require(_0x090d('0x14'))['db'];config[_0x090d('0x15')]=_[_0x090d('0x16')](config[_0x090d('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x090d('0x15')]));require(_0x090d('0x17'))[_0x090d('0x18')](socket);var jayson=require(_0x090d('0x19'));var client=jayson[_0x090d('0x1a')][_0x090d('0x1b')]({'port':0x232c});var client9002=jayson[_0x090d('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x149a21,_0x375772,_0x48eb74,_0x2a6b07){return new BPromise(function(_0x3e75bf,_0x23ed2f){var _0x462e84=_0x2a6b07||client;return _0x462e84[_0x090d('0x1c')](_0x149a21,_0x48eb74)[_0x090d('0x1d')](function(_0x3e5f40){logger[_0x090d('0x1e')](_0x090d('0x1f'),_0x375772,_0x090d('0x20'));logger['debug'](_0x090d('0x21'),_0x375772,_0x090d('0x20'),JSON['stringify'](_0x3e5f40));if(_0x3e5f40[_0x090d('0x22')]){if(_0x3e5f40[_0x090d('0x22')][_0x090d('0x23')]===0x1f4){logger[_0x090d('0x22')]('SmsMessage,\x20%s,\x20%s',_0x375772,_0x3e5f40[_0x090d('0x22')][_0x090d('0x24')]);return _0x23ed2f(_0x3e5f40[_0x090d('0x22')][_0x090d('0x24')]);}logger[_0x090d('0x22')](_0x090d('0x1f'),_0x375772,_0x3e5f40['error']['message']);return _0x3e75bf(_0x3e5f40[_0x090d('0x22')]['message']);}else{logger['info'](_0x090d('0x1f'),_0x375772,_0x090d('0x20'));_0x3e75bf(_0x3e5f40[_0x090d('0x25')][_0x090d('0x24')]);}})[_0x090d('0x26')](function(_0x4f65c9){logger['error'](_0x090d('0x1f'),_0x375772,_0x4f65c9);_0x23ed2f(_0x4f65c9);});});}function respondWithStatusCode(_0x2ee5cb,_0x41adc6){_0x41adc6=_0x41adc6||0xcc;return function(_0x4fc4ea){if(_0x4fc4ea){return _0x2ee5cb[_0x090d('0x27')](_0x41adc6);}return _0x2ee5cb[_0x090d('0x28')](_0x41adc6)[_0x090d('0x29')]();};}function respondWithResult(_0x5c652f,_0x1f0a94){_0x1f0a94=_0x1f0a94||0xc8;return function(_0x1daf97){if(_0x1daf97){return _0x5c652f[_0x090d('0x28')](_0x1f0a94)['json'](_0x1daf97);}};}function respondWithFilteredResult(_0x3d0811,_0x48f858){return function(_0x476292){if(_0x476292){var _0x3b2527=typeof _0x48f858['offset']==='undefined'&&typeof _0x48f858['limit']===_0x090d('0x2a');var _0x4895fa=_0x476292[_0x090d('0x2b')];var _0x3c37e1=_0x3b2527?0x0:_0x48f858[_0x090d('0x2c')];var _0xd017c4=_0x3b2527?_0x476292[_0x090d('0x2b')]:_0x48f858['offset']+_0x48f858[_0x090d('0x2d')];var _0x38a8c6;if(_0xd017c4>=_0x4895fa){_0xd017c4=_0x4895fa;_0x38a8c6=0xc8;}else{_0x38a8c6=0xce;}_0x3d0811[_0x090d('0x28')](_0x38a8c6);return _0x3d0811[_0x090d('0x2e')](_0x090d('0x2f'),_0x3c37e1+'-'+_0xd017c4+'/'+_0x4895fa)[_0x090d('0x30')](_0x476292);}return null;};}function patchUpdates(_0x5645e1){return function(_0x2a2c23){try{jsonpatch['apply'](_0x2a2c23,_0x5645e1,!![]);}catch(_0xe42ef8){return BPromise[_0x090d('0x31')](_0xe42ef8);}return _0x2a2c23[_0x090d('0x32')]();};}function saveUpdates(_0x4df65a,_0x51b5e4){return function(_0x4406f7){if(_0x4406f7){return _0x4406f7['update'](_0x4df65a)['then'](function(_0x10cefe){return _0x10cefe;});}return null;};}function removeEntity(_0x205834,_0x3aac79){return function(_0x51ae72){if(_0x51ae72){return _0x51ae72[_0x090d('0x33')]()[_0x090d('0x1d')](function(){_0x205834[_0x090d('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55d18d,_0x4eee88){return function(_0x5094e8){if(!_0x5094e8){_0x55d18d[_0x090d('0x27')](0x194);}return _0x5094e8;};}function handleError(_0x24b7f6,_0x8cb62b){_0x8cb62b=_0x8cb62b||0x1f4;return function(_0x4c14b9){logger[_0x090d('0x22')](_0x4c14b9['stack']);if(_0x4c14b9[_0x090d('0x34')]){delete _0x4c14b9[_0x090d('0x34')];}_0x24b7f6['status'](_0x8cb62b)['send'](_0x4c14b9);};}exports['index']=function(_0x7d4175,_0x10e097){var _0x34034a={},_0x4daa37={},_0x57ad25={'count':0x0,'rows':[]};var _0x4bde5a=_['map'](db[_0x090d('0x35')][_0x090d('0x36')],function(_0x1df91f){return{'name':_0x1df91f[_0x090d('0x37')],'type':_0x1df91f['type']['key']};});_0x4daa37[_0x090d('0x38')]=_[_0x090d('0x39')](_0x4bde5a,_0x090d('0x34'));_0x4daa37[_0x090d('0x3a')]=_[_0x090d('0x3b')](_0x7d4175['query']);_0x4daa37[_0x090d('0x3c')]=_[_0x090d('0x3d')](_0x4daa37[_0x090d('0x38')],_0x4daa37[_0x090d('0x3a')]);_0x34034a[_0x090d('0x3e')]=_[_0x090d('0x3d')](_0x4daa37['model'],qs[_0x090d('0x3f')](_0x7d4175['query'][_0x090d('0x3f')]));_0x34034a[_0x090d('0x3e')]=_0x34034a[_0x090d('0x3e')][_0x090d('0x40')]?_0x34034a[_0x090d('0x3e')]:_0x4daa37[_0x090d('0x38')];if(!_0x7d4175['query'][_0x090d('0x41')](_0x090d('0x42'))){_0x34034a[_0x090d('0x2d')]=qs['limit'](_0x7d4175[_0x090d('0x3a')][_0x090d('0x2d')]);_0x34034a[_0x090d('0x2c')]=qs[_0x090d('0x2c')](_0x7d4175[_0x090d('0x3a')][_0x090d('0x2c')]);}_0x34034a[_0x090d('0x43')]=qs[_0x090d('0x44')](_0x7d4175[_0x090d('0x3a')]['sort']);_0x34034a[_0x090d('0x45')]=qs[_0x090d('0x3c')](_[_0x090d('0x46')](_0x7d4175[_0x090d('0x3a')],_0x4daa37['filters']),_0x4bde5a);if(_0x7d4175[_0x090d('0x3a')][_0x090d('0x47')]){_0x34034a[_0x090d('0x45')]=_[_0x090d('0x48')](_0x34034a[_0x090d('0x45')],{'$or':_[_0x090d('0x39')](_0x4bde5a,function(_0x594808){if(_0x594808[_0x090d('0x49')]!==_0x090d('0x4a')){var _0x306159={};_0x306159[_0x594808[_0x090d('0x34')]]={'$like':'%'+_0x7d4175[_0x090d('0x3a')][_0x090d('0x47')]+'%'};return _0x306159;}})});}_0x34034a=_[_0x090d('0x48')]({},_0x34034a,_0x7d4175[_0x090d('0x4b')]);var _0x476734={'where':_0x34034a[_0x090d('0x45')]};return db['SmsMessage'][_0x090d('0x2b')](_0x476734)[_0x090d('0x1d')](function(_0x53d44c){_0x57ad25[_0x090d('0x2b')]=_0x53d44c;if(_0x7d4175[_0x090d('0x3a')][_0x090d('0x4c')]){_0x34034a[_0x090d('0x4d')]=[{'all':!![]}];}return db[_0x090d('0x35')][_0x090d('0x4e')](_0x34034a);})[_0x090d('0x1d')](function(_0x591c8e){_0x57ad25['rows']=_0x591c8e;return _0x57ad25;})['then'](respondWithFilteredResult(_0x10e097,_0x34034a))[_0x090d('0x26')](handleError(_0x10e097,null));};exports[_0x090d('0x4f')]=function(_0x395127,_0x44be34){var _0x3b5c37={'raw':!![],'where':{'id':_0x395127[_0x090d('0x50')]['id']}},_0x13071c={};_0x13071c[_0x090d('0x38')]=_['keys'](db['SmsMessage'][_0x090d('0x36')]);_0x13071c[_0x090d('0x3a')]=_['keys'](_0x395127[_0x090d('0x3a')]);_0x13071c[_0x090d('0x3c')]=_[_0x090d('0x3d')](_0x13071c[_0x090d('0x38')],_0x13071c[_0x090d('0x3a')]);_0x3b5c37['attributes']=_[_0x090d('0x3d')](_0x13071c[_0x090d('0x38')],qs[_0x090d('0x3f')](_0x395127[_0x090d('0x3a')][_0x090d('0x3f')]));_0x3b5c37['attributes']=_0x3b5c37[_0x090d('0x3e')][_0x090d('0x40')]?_0x3b5c37['attributes']:_0x13071c[_0x090d('0x38')];if(_0x395127[_0x090d('0x3a')][_0x090d('0x4c')]){_0x3b5c37[_0x090d('0x4d')]=[{'all':!![]}];}_0x3b5c37=_[_0x090d('0x48')]({},_0x3b5c37,_0x395127[_0x090d('0x4b')]);return db[_0x090d('0x35')][_0x090d('0x51')](_0x3b5c37)['then'](handleEntityNotFound(_0x44be34,null))['then'](respondWithResult(_0x44be34,null))['catch'](handleError(_0x44be34,null));};exports[_0x090d('0x52')]=function(_0x36a6a7,_0x23b855){return db[_0x090d('0x35')][_0x090d('0x52')](_0x36a6a7[_0x090d('0x53')],{})['then'](respondWithResult(_0x23b855,0xc9))['catch'](handleError(_0x23b855,null));};exports[_0x090d('0x54')]=function(_0x10080f,_0x4e985f){if(_0x10080f[_0x090d('0x53')]['id']){delete _0x10080f[_0x090d('0x53')]['id'];}return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x10080f[_0x090d('0x50')]['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x4e985f,null))[_0x090d('0x1d')](saveUpdates(_0x10080f[_0x090d('0x53')],null))[_0x090d('0x1d')](respondWithResult(_0x4e985f,null))[_0x090d('0x26')](handleError(_0x4e985f,null));};exports['destroy']=function(_0x2e05cf,_0x242261){return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x2e05cf['params']['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x242261,null))[_0x090d('0x1d')](removeEntity(_0x242261,null))[_0x090d('0x26')](handleError(_0x242261,null));};exports[_0x090d('0x55')]=function(_0xf6bf50,_0x56131e){return db[_0x090d('0x35')]['describe']()['then'](respondWithResult(_0x56131e,null))[_0x090d('0x26')](handleError(_0x56131e,null));};var interaction_log=require(_0x090d('0x11'))(_0x090d('0x56'));exports[_0x090d('0x57')]=function(_0x3db9ff,_0x4e960a,_0x5bc860){var _0x29afcd={'agent':{},'channel':_0x090d('0x58')};if(_0x3db9ff[_0x090d('0x53')]['id']){delete _0x3db9ff[_0x090d('0x53')]['id'];}_0x3db9ff[_0x090d('0x53')][_0x090d('0x59')]=!![];_0x3db9ff[_0x090d('0x53')][_0x090d('0x5a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3db9ff[_0x090d('0x53')]['UserId']=_0x3db9ff[_0x090d('0x53')][_0x090d('0x5b')]||_0x3db9ff[_0x090d('0x5c')]['id'];_0x29afcd['agent']['id']=_0x3db9ff['body'][_0x090d('0x5b')];return db['SmsMessage'][_0x090d('0x51')]({'where':{'id':_0x3db9ff[_0x090d('0x50')]['id'],'UserId':null}})[_0x090d('0x1d')](handleEntityNotFound(_0x4e960a,null))[_0x090d('0x1d')](saveUpdates(_0x3db9ff['body'],null))['then'](function(_0x203b76){if(_0x203b76){_0x29afcd['message']=_0x203b76[_0x090d('0x5d')]({'plain':!![]});return db[_0x090d('0x5e')][_0x090d('0x51')]({'where':{'id':_0x203b76['SmsInteractionId']}});}return null;})[_0x090d('0x1d')](handleEntityNotFound(_0x4e960a,null))[_0x090d('0x1d')](function(_0x25d779){if(_0x25d779){return _0x25d779[_0x090d('0x54')]({'UserId':_0x3db9ff[_0x090d('0x53')][_0x090d('0x5b')],'read1stAt':_[_0x090d('0x5f')](_0x25d779['read1stAt'])?moment()[_0x090d('0x60')](_0x090d('0x61')):undefined});}return null;})['then'](function(_0x2f1d7a){if(_0x2f1d7a){_0x29afcd[_0x090d('0x62')]=_0x2f1d7a['get']({'plain':!![]});interaction_log[_0x090d('0x1e')](_0x090d('0x63'),_0x3db9ff[_0x090d('0x5c')]['id'],_0x3db9ff[_0x090d('0x5c')][_0x090d('0x34')],_0x3db9ff[_0x090d('0x5c')]['role'],_0x29afcd[_0x090d('0x62')]['id'],_0x3db9ff[_0x090d('0x53')]?JSON[_0x090d('0x64')](_0x3db9ff['body']):'null');return respondWithRpcPromise(_0x090d('0x65'),'acceptMessage',_0x29afcd);}return null;})[_0x090d('0x1d')](function(_0x254dc2){var _0x2ddffa=_0x090d('0x66')+_0x254dc2['message'][_0x090d('0x67')];return db['sequelize']['query'](_0x2ddffa,{'type':db[_0x090d('0x68')][_0x090d('0x69')][_0x090d('0x6a')],'raw':!![]})['then'](function(_0x42d965){return _0x42d965;});})[_0x090d('0x1d')](function(_0x1a03ea){if(_0x1a03ea){_0x29afcd[_0x090d('0x24')][_0x090d('0x6b')]=_0x1a03ea[0x0];if(!_0x3db9ff[_0x090d('0x53')]['UserId'])return;return db['User'][_0x090d('0x51')]({'where':{'id':_0x3db9ff['body'][_0x090d('0x5b')],'role':_0x090d('0x6c')},'attributes':['id',_0x090d('0x34'),_0x090d('0x6d'),_0x090d('0x6e'),_0x090d('0x6f')],'raw':!![]});}return null;})[_0x090d('0x1d')](function(_0x560432){if(!_0x560432)return null;_0x29afcd['message'][_0x090d('0x6c')]=_0x560432;return _0x29afcd;})[_0x090d('0x1d')](function(_0x2f15e8){if(_0x2f15e8){if(_0x3db9ff[_0x090d('0x53')][_0x090d('0x70')]){_0x29afcd['message'][_0x090d('0x71')]=util[_0x090d('0x60')]('SIP/%s',_0x3db9ff[_0x090d('0x5c')]['name']);_0x29afcd['message'][_0x090d('0x72')]=_0x29afcd[_0x090d('0x72')];_0x29afcd['message']['motionChannel']=_0x29afcd['channel'];_0x29afcd[_0x090d('0x24')]['event']='accept';return respondWithRpcPromise(_0x090d('0x73'),_0x090d('0x73'),{'event':_0x090d('0x74'),'message':_0x29afcd[_0x090d('0x24')]},client9002)[_0x090d('0x1d')](function(){return _0x29afcd;});}return _0x29afcd;}return null;})['then'](respondWithResult(_0x4e960a,null))[_0x090d('0x26')](handleError(_0x4e960a,null));};var interaction_log=require(_0x090d('0x11'))('sms-interactions');exports[_0x090d('0x31')]=function(_0x3f8b86,_0xb81878,_0x20cba0){var _0x316aa9={'agent':{},'channel':_0x090d('0x58')};if(_0x3f8b86[_0x090d('0x53')]['id']){delete _0x3f8b86[_0x090d('0x53')]['id'];}_0x3f8b86[_0x090d('0x53')]['UserId']=_0x3f8b86['body'][_0x090d('0x5b')]||_0x3f8b86[_0x090d('0x5c')]['id'];_0x316aa9[_0x090d('0x6c')]['id']=_0x3f8b86['body'][_0x090d('0x5b')];return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x3f8b86[_0x090d('0x50')]['id'],'UserId':null}})[_0x090d('0x1d')](handleEntityNotFound(_0xb81878,null))[_0x090d('0x1d')](function(_0x44e365){if(_0x44e365){_0x316aa9['message']=_0x44e365[_0x090d('0x5d')]({'plain':!![]});return db[_0x090d('0x5e')][_0x090d('0x51')]({'where':{'id':_0x44e365[_0x090d('0x75')]}});}return null;})['then'](handleEntityNotFound(_0xb81878,null))[_0x090d('0x1d')](function(_0x17038b){if(_0x17038b){_0x316aa9[_0x090d('0x62')]=_0x17038b[_0x090d('0x5d')]({'plain':!![]});interaction_log[_0x090d('0x1e')](_0x090d('0x76'),_0x3f8b86[_0x090d('0x5c')]['id'],_0x3f8b86['user'][_0x090d('0x34')],_0x3f8b86['user'][_0x090d('0x77')],_0x316aa9['interaction']['id'],_0x3f8b86[_0x090d('0x53')]?JSON[_0x090d('0x64')](_0x3f8b86['body']):_0x090d('0x78'));return respondWithRpcPromise(_0x090d('0x79'),_0x090d('0x7a'),_0x316aa9);}return null;})[_0x090d('0x1d')](function(_0x57e7b4){var _0x217af8=_0x090d('0x66')+_0x57e7b4[_0x090d('0x24')][_0x090d('0x67')];return db[_0x090d('0x7b')][_0x090d('0x3a')](_0x217af8,{'type':db[_0x090d('0x68')][_0x090d('0x69')][_0x090d('0x6a')],'raw':!![]})[_0x090d('0x1d')](function(_0x4631c8){return _0x4631c8;});})[_0x090d('0x1d')](function(_0x19cc0f){if(_0x19cc0f){_0x316aa9['message'][_0x090d('0x6b')]=_0x19cc0f[0x0];if(!_0x3f8b86[_0x090d('0x53')][_0x090d('0x5b')])return;return db['User'][_0x090d('0x51')]({'where':{'id':_0x3f8b86[_0x090d('0x53')][_0x090d('0x5b')],'role':_0x090d('0x6c')},'attributes':['id',_0x090d('0x34'),_0x090d('0x6d'),_0x090d('0x6e'),'internal'],'raw':!![]});}return null;})[_0x090d('0x1d')](function(_0x10fc56){if(!_0x10fc56)return null;_0x316aa9[_0x090d('0x24')][_0x090d('0x6c')]=_0x10fc56;return _0x316aa9;})['then'](function(_0x426438){if(_0x426438){_0x426438['message'][_0x090d('0x71')]=util[_0x090d('0x60')](_0x090d('0x7c'),_0x3f8b86['user']['name']);_0x426438[_0x090d('0x24')]['channel']=_0x316aa9['channel'];_0x426438[_0x090d('0x24')][_0x090d('0x7d')]=_0x316aa9[_0x090d('0x72')];_0x426438['message'][_0x090d('0x7e')]='reject';respondWithRpcPromise(_0x090d('0x73'),_0x090d('0x73'),{'event':_0x090d('0x7f'),'message':_0x426438['message']},client9002);return _0x316aa9;}return null;})['then'](respondWithResult(_0xb81878,null))[_0x090d('0x26')](handleError(_0xb81878,null));};exports[_0x090d('0x28')]=function(_0x1d6dcc,_0x3161eb,_0x126210){if(_0x1d6dcc[_0x090d('0x53')]['id']){delete _0x1d6dcc[_0x090d('0x53')]['id'];}var _0x33700b;return db[_0x090d('0x35')][_0x090d('0x51')]({'where':{'id':_0x1d6dcc[_0x090d('0x50')]['id']}})[_0x090d('0x1d')](handleEntityNotFound(_0x3161eb,null))[_0x090d('0x1d')](function(_0xaa4293){if(_0xaa4293){_0x33700b=_0xaa4293;return db[_0x090d('0x80')][_0x090d('0x51')]({'where':{'id':_0xaa4293[_0x090d('0x81')]}});}})[_0x090d('0x1d')](handleEntityNotFound(_0x3161eb,null))[_0x090d('0x1d')](function(_0x40d25a){if(_0x40d25a){logger[_0x090d('0x82')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),_0x090d('0x83'),_0x40d25a[_0x090d('0x49')],util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));switch(_0x40d25a[_0x090d('0x49')]){case _0x090d('0x85'):if(_0x1d6dcc[_0x090d('0x53')][_0x090d('0x86')]&&_0x1d6dcc[_0x090d('0x53')][_0x090d('0x86')]===_0x33700b[_0x090d('0x87')]){return _0x33700b[_0x090d('0x54')]({'read':!![]});}else{logger[_0x090d('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),_0x090d('0x85'),util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));}break;case _0x090d('0x88'):if(_0x1d6dcc[_0x090d('0x53')][_0x090d('0x89')]&&_0x1d6dcc[_0x090d('0x53')][_0x090d('0x89')]===_0x33700b[_0x090d('0x87')]&&_[_0x090d('0x8a')](['sent','delivered'],_0x1d6dcc[_0x090d('0x53')][_0x090d('0x8b')])>=0x0){return _0x33700b['update']({'read':!![]});}else{logger[_0x090d('0x22')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x090d('0x28'),'plivio',util[_0x090d('0x84')](_0x1d6dcc['body'],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4253cc=_0x1d6dcc[_0x090d('0x53')][_0x090d('0x8c')][0x0];if(_0x4253cc['status'][_0x090d('0x8d')]==='DELIVERED'){return _0x33700b[_0x090d('0x54')]({'read':!![]});}else{logger['error'](_0x090d('0x8e'),_0x090d('0x28'),_0x090d('0x8f'),util[_0x090d('0x84')](_0x1d6dcc[_0x090d('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x33700b;}})[_0x090d('0x1d')](respondWithResult(_0x3161eb,null))['catch'](handleError(_0x3161eb,null));};
\ No newline at end of file
+var _0xa107=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','register','client','request','then','debug','request\x20sent','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','SmsMessage','include','findAll','rows','show','params','length','find','create','body','describe','sms-interactions','accept','sms','read','format','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','motionChannel','SmsAccount','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','indexOf','sent','Status','infobip','groupName','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x8215aa,_0x2d6112){var _0x200aca=function(_0x42b09b){while(--_0x42b09b){_0x8215aa['push'](_0x8215aa['shift']());}};_0x200aca(++_0x2d6112);}(_0xa107,0x7d));var _0x7a10=function(_0x94d763,_0x33e9fb){_0x94d763=_0x94d763-0x0;var _0x13b298=_0xa107[_0x94d763];return _0x13b298;};'use strict';var emlformat=require(_0x7a10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a10('0x1'));var jsonpatch=require(_0x7a10('0x2'));var rp=require(_0x7a10('0x3'));var moment=require(_0x7a10('0x4'));var BPromise=require(_0x7a10('0x5'));var Mustache=require(_0x7a10('0x6'));var util=require(_0x7a10('0x7'));var path=require(_0x7a10('0x8'));var sox=require('sox');var csv=require(_0x7a10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a10('0xa'));var _=require(_0x7a10('0xb'));var squel=require(_0x7a10('0xc'));var crypto=require(_0x7a10('0xd'));var jsforce=require(_0x7a10('0xe'));var deskjs=require(_0x7a10('0xf'));var toCsv=require(_0x7a10('0x9'));var querystring=require(_0x7a10('0x10'));var Papa=require(_0x7a10('0x11'));var Redis=require(_0x7a10('0x12'));var authService=require(_0x7a10('0x13'));var qs=require(_0x7a10('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7a10('0x15'));var logger=require(_0x7a10('0x16'))(_0x7a10('0x17'));var utils=require(_0x7a10('0x18'));var config=require(_0x7a10('0x19'));var licenseUtil=require(_0x7a10('0x1a'));var db=require('../../mysqldb')['db'];config[_0x7a10('0x1b')]=_[_0x7a10('0x1c')](config[_0x7a10('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7a10('0x1b')]));require('./smsMessage.socket')[_0x7a10('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7a10('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x7a10('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfd7490,_0x57740d,_0x554798,_0x360f3e){return new BPromise(function(_0x3677f8,_0x1dad66){var _0x249f97=_0x360f3e||client;return _0x249f97[_0x7a10('0x1f')](_0xfd7490,_0x554798)[_0x7a10('0x20')](function(_0xef7b76){logger['info']('SmsMessage,\x20%s,\x20%s',_0x57740d,'request\x20sent');logger[_0x7a10('0x21')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x57740d,_0x7a10('0x22'),JSON[_0x7a10('0x23')](_0xef7b76));if(_0xef7b76['error']){if(_0xef7b76[_0x7a10('0x24')][_0x7a10('0x25')]===0x1f4){logger[_0x7a10('0x24')](_0x7a10('0x26'),_0x57740d,_0xef7b76[_0x7a10('0x24')][_0x7a10('0x27')]);return _0x1dad66(_0xef7b76[_0x7a10('0x24')][_0x7a10('0x27')]);}logger[_0x7a10('0x24')](_0x7a10('0x26'),_0x57740d,_0xef7b76[_0x7a10('0x24')]['message']);return _0x3677f8(_0xef7b76['error'][_0x7a10('0x27')]);}else{logger['info'](_0x7a10('0x26'),_0x57740d,_0x7a10('0x22'));_0x3677f8(_0xef7b76[_0x7a10('0x28')][_0x7a10('0x27')]);}})[_0x7a10('0x29')](function(_0x162935){logger[_0x7a10('0x24')](_0x7a10('0x26'),_0x57740d,_0x162935);_0x1dad66(_0x162935);});});}function respondWithStatusCode(_0x1a48bf,_0x2b4425){_0x2b4425=_0x2b4425||0xcc;return function(_0x4a5582){if(_0x4a5582){return _0x1a48bf[_0x7a10('0x2a')](_0x2b4425);}return _0x1a48bf[_0x7a10('0x2b')](_0x2b4425)[_0x7a10('0x2c')]();};}function respondWithResult(_0x5b673e,_0x25cf21){_0x25cf21=_0x25cf21||0xc8;return function(_0x190124){if(_0x190124){return _0x5b673e[_0x7a10('0x2b')](_0x25cf21)['json'](_0x190124);}};}function respondWithFilteredResult(_0x37bf04,_0x48c3e6){return function(_0x528a0b){if(_0x528a0b){var _0x3bbb79=typeof _0x48c3e6[_0x7a10('0x2d')]===_0x7a10('0x2e')&&typeof _0x48c3e6[_0x7a10('0x2f')]===_0x7a10('0x2e');var _0xe94b5f=_0x528a0b[_0x7a10('0x30')];var _0x5eeb51=_0x3bbb79?0x0:_0x48c3e6[_0x7a10('0x2d')];var _0x259cac=_0x3bbb79?_0x528a0b[_0x7a10('0x30')]:_0x48c3e6[_0x7a10('0x2d')]+_0x48c3e6[_0x7a10('0x2f')];var _0x13cdbf;if(_0x259cac>=_0xe94b5f){_0x259cac=_0xe94b5f;_0x13cdbf=0xc8;}else{_0x13cdbf=0xce;}_0x37bf04[_0x7a10('0x2b')](_0x13cdbf);return _0x37bf04[_0x7a10('0x31')](_0x7a10('0x32'),_0x5eeb51+'-'+_0x259cac+'/'+_0xe94b5f)['json'](_0x528a0b);}return null;};}function patchUpdates(_0x41f6d6){return function(_0x3e5203){try{jsonpatch[_0x7a10('0x33')](_0x3e5203,_0x41f6d6,!![]);}catch(_0x467be0){return BPromise[_0x7a10('0x34')](_0x467be0);}return _0x3e5203[_0x7a10('0x35')]();};}function saveUpdates(_0x4019c0,_0x43d2ef){return function(_0x19e73c){if(_0x19e73c){return _0x19e73c[_0x7a10('0x36')](_0x4019c0)[_0x7a10('0x20')](function(_0x30d4a4){return _0x30d4a4;});}return null;};}function removeEntity(_0x2d2281,_0x2c956f){return function(_0x1acbb7){if(_0x1acbb7){return _0x1acbb7[_0x7a10('0x37')]()[_0x7a10('0x20')](function(){_0x2d2281[_0x7a10('0x2b')](0xcc)[_0x7a10('0x2c')]();});}};}function handleEntityNotFound(_0x378e66,_0x3d4be7){return function(_0x44eb3f){if(!_0x44eb3f){_0x378e66[_0x7a10('0x2a')](0x194);}return _0x44eb3f;};}function handleError(_0x3a7fe0,_0x2d3137){_0x2d3137=_0x2d3137||0x1f4;return function(_0x86ab3a){logger[_0x7a10('0x24')](_0x86ab3a['stack']);if(_0x86ab3a[_0x7a10('0x38')]){delete _0x86ab3a[_0x7a10('0x38')];}_0x3a7fe0['status'](_0x2d3137)['send'](_0x86ab3a);};}exports[_0x7a10('0x39')]=function(_0x328de5,_0x3b9dd5){var _0x34e4f8={},_0xeb5962={},_0x12be87={'count':0x0,'rows':[]};var _0x338a0c=_[_0x7a10('0x3a')](db['SmsMessage'][_0x7a10('0x3b')],function(_0xf81a44){return{'name':_0xf81a44[_0x7a10('0x3c')],'type':_0xf81a44[_0x7a10('0x3d')][_0x7a10('0x3e')]};});_0xeb5962[_0x7a10('0x3f')]=_[_0x7a10('0x3a')](_0x338a0c,'name');_0xeb5962[_0x7a10('0x40')]=_[_0x7a10('0x41')](_0x328de5['query']);_0xeb5962[_0x7a10('0x42')]=_[_0x7a10('0x43')](_0xeb5962[_0x7a10('0x3f')],_0xeb5962[_0x7a10('0x40')]);_0x34e4f8[_0x7a10('0x44')]=_[_0x7a10('0x43')](_0xeb5962['model'],qs['fields'](_0x328de5['query'][_0x7a10('0x45')]));_0x34e4f8[_0x7a10('0x44')]=_0x34e4f8['attributes']['length']?_0x34e4f8[_0x7a10('0x44')]:_0xeb5962[_0x7a10('0x3f')];if(!_0x328de5[_0x7a10('0x40')][_0x7a10('0x46')](_0x7a10('0x47'))){_0x34e4f8['limit']=qs[_0x7a10('0x2f')](_0x328de5[_0x7a10('0x40')][_0x7a10('0x2f')]);_0x34e4f8[_0x7a10('0x2d')]=qs['offset'](_0x328de5[_0x7a10('0x40')][_0x7a10('0x2d')]);}_0x34e4f8['order']=qs[_0x7a10('0x48')](_0x328de5[_0x7a10('0x40')]['sort']);_0x34e4f8[_0x7a10('0x49')]=qs['filters'](_[_0x7a10('0x4a')](_0x328de5[_0x7a10('0x40')],_0xeb5962[_0x7a10('0x42')]),_0x338a0c);if(_0x328de5['query'][_0x7a10('0x4b')]){_0x34e4f8[_0x7a10('0x49')]=_[_0x7a10('0x4c')](_0x34e4f8['where'],{'$or':_[_0x7a10('0x3a')](_0x338a0c,function(_0x27e31d){if(_0x27e31d[_0x7a10('0x3d')]!==_0x7a10('0x4d')){var _0x49d10f={};_0x49d10f[_0x27e31d['name']]={'$like':'%'+_0x328de5[_0x7a10('0x40')][_0x7a10('0x4b')]+'%'};return _0x49d10f;}})});}_0x34e4f8=_[_0x7a10('0x4c')]({},_0x34e4f8,_0x328de5[_0x7a10('0x4e')]);var _0xfb32d3={'where':_0x34e4f8['where']};return db[_0x7a10('0x4f')]['count'](_0xfb32d3)[_0x7a10('0x20')](function(_0x380b27){_0x12be87[_0x7a10('0x30')]=_0x380b27;if(_0x328de5[_0x7a10('0x40')]['includeAll']){_0x34e4f8[_0x7a10('0x50')]=[{'all':!![]}];}return db[_0x7a10('0x4f')][_0x7a10('0x51')](_0x34e4f8);})['then'](function(_0x201358){_0x12be87[_0x7a10('0x52')]=_0x201358;return _0x12be87;})[_0x7a10('0x20')](respondWithFilteredResult(_0x3b9dd5,_0x34e4f8))[_0x7a10('0x29')](handleError(_0x3b9dd5,null));};exports[_0x7a10('0x53')]=function(_0x117d30,_0x4c2298){var _0x50ee5b={'raw':!![],'where':{'id':_0x117d30[_0x7a10('0x54')]['id']}},_0xd48460={};_0xd48460['model']=_[_0x7a10('0x41')](db[_0x7a10('0x4f')][_0x7a10('0x3b')]);_0xd48460[_0x7a10('0x40')]=_[_0x7a10('0x41')](_0x117d30[_0x7a10('0x40')]);_0xd48460[_0x7a10('0x42')]=_[_0x7a10('0x43')](_0xd48460[_0x7a10('0x3f')],_0xd48460['query']);_0x50ee5b[_0x7a10('0x44')]=_['intersection'](_0xd48460['model'],qs[_0x7a10('0x45')](_0x117d30[_0x7a10('0x40')][_0x7a10('0x45')]));_0x50ee5b[_0x7a10('0x44')]=_0x50ee5b[_0x7a10('0x44')][_0x7a10('0x55')]?_0x50ee5b[_0x7a10('0x44')]:_0xd48460[_0x7a10('0x3f')];if(_0x117d30[_0x7a10('0x40')]['includeAll']){_0x50ee5b[_0x7a10('0x50')]=[{'all':!![]}];}_0x50ee5b=_['merge']({},_0x50ee5b,_0x117d30[_0x7a10('0x4e')]);return db[_0x7a10('0x4f')][_0x7a10('0x56')](_0x50ee5b)['then'](handleEntityNotFound(_0x4c2298,null))['then'](respondWithResult(_0x4c2298,null))[_0x7a10('0x29')](handleError(_0x4c2298,null));};exports[_0x7a10('0x57')]=function(_0x1f41f4,_0x4014b5){return db[_0x7a10('0x4f')][_0x7a10('0x57')](_0x1f41f4[_0x7a10('0x58')],{})['then'](respondWithResult(_0x4014b5,0xc9))['catch'](handleError(_0x4014b5,null));};exports[_0x7a10('0x36')]=function(_0x33eade,_0x75e240){if(_0x33eade[_0x7a10('0x58')]['id']){delete _0x33eade[_0x7a10('0x58')]['id'];}return db[_0x7a10('0x4f')]['find']({'where':{'id':_0x33eade[_0x7a10('0x54')]['id']}})[_0x7a10('0x20')](handleEntityNotFound(_0x75e240,null))[_0x7a10('0x20')](saveUpdates(_0x33eade[_0x7a10('0x58')],null))['then'](respondWithResult(_0x75e240,null))[_0x7a10('0x29')](handleError(_0x75e240,null));};exports['destroy']=function(_0x126bf3,_0x1757cc){return db['SmsMessage'][_0x7a10('0x56')]({'where':{'id':_0x126bf3[_0x7a10('0x54')]['id']}})[_0x7a10('0x20')](handleEntityNotFound(_0x1757cc,null))[_0x7a10('0x20')](removeEntity(_0x1757cc,null))[_0x7a10('0x29')](handleError(_0x1757cc,null));};exports[_0x7a10('0x59')]=function(_0x2150b4,_0x41d3fd){return db[_0x7a10('0x4f')]['describe']()[_0x7a10('0x20')](respondWithResult(_0x41d3fd,null))[_0x7a10('0x29')](handleError(_0x41d3fd,null));};var interaction_log=require(_0x7a10('0x16'))(_0x7a10('0x5a'));exports[_0x7a10('0x5b')]=function(_0x4a1cfc,_0x3341f8,_0x3a99b4){var _0xeb6f33={'agent':{},'channel':_0x7a10('0x5c')};if(_0x4a1cfc[_0x7a10('0x58')]['id']){delete _0x4a1cfc[_0x7a10('0x58')]['id'];}_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x5d')]=!![];_0x4a1cfc['body']['readAt']=moment()[_0x7a10('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x5f')]=_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x5f')]||_0x4a1cfc[_0x7a10('0x60')]['id'];_0xeb6f33[_0x7a10('0x61')]['id']=_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x5f')];return db[_0x7a10('0x4f')]['find']({'where':{'id':_0x4a1cfc[_0x7a10('0x54')]['id'],'UserId':null}})[_0x7a10('0x20')](handleEntityNotFound(_0x3341f8,null))[_0x7a10('0x20')](saveUpdates(_0x4a1cfc[_0x7a10('0x58')],null))[_0x7a10('0x20')](function(_0x57f1a2){if(_0x57f1a2){_0xeb6f33[_0x7a10('0x27')]=_0x57f1a2[_0x7a10('0x62')]({'plain':!![]});return db[_0x7a10('0x63')]['find']({'where':{'id':_0x57f1a2[_0x7a10('0x64')]}});}return null;})[_0x7a10('0x20')](handleEntityNotFound(_0x3341f8,null))[_0x7a10('0x20')](function(_0x320a00){if(_0x320a00){return _0x320a00[_0x7a10('0x36')]({'UserId':_0x4a1cfc['body'][_0x7a10('0x5f')],'read1stAt':_[_0x7a10('0x65')](_0x320a00[_0x7a10('0x66')])?moment()[_0x7a10('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7a10('0x20')](function(_0x3d9cc5){if(_0x3d9cc5){_0xeb6f33[_0x7a10('0x67')]=_0x3d9cc5[_0x7a10('0x62')]({'plain':!![]});interaction_log['info'](_0x7a10('0x68'),_0x4a1cfc[_0x7a10('0x60')]['id'],_0x4a1cfc[_0x7a10('0x60')][_0x7a10('0x38')],_0x4a1cfc[_0x7a10('0x60')][_0x7a10('0x69')],_0xeb6f33[_0x7a10('0x67')]['id'],_0x4a1cfc[_0x7a10('0x58')]?JSON[_0x7a10('0x23')](_0x4a1cfc['body']):_0x7a10('0x6a'));return respondWithRpcPromise(_0x7a10('0x6b'),_0x7a10('0x6c'),_0xeb6f33);}return null;})[_0x7a10('0x20')](function(_0x3a6d88){var _0x240df4=_0x7a10('0x6d')+_0x3a6d88[_0x7a10('0x27')][_0x7a10('0x6e')];return db[_0x7a10('0x6f')][_0x7a10('0x40')](_0x240df4,{'type':db[_0x7a10('0x70')][_0x7a10('0x71')][_0x7a10('0x72')],'raw':!![]})[_0x7a10('0x20')](function(_0x2244ee){return _0x2244ee;});})[_0x7a10('0x20')](function(_0x95b274){if(_0x95b274){_0xeb6f33[_0x7a10('0x27')][_0x7a10('0x73')]=_0x95b274[0x0];if(!_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x5f')])return;return db[_0x7a10('0x74')][_0x7a10('0x56')]({'where':{'id':_0x4a1cfc['body'][_0x7a10('0x5f')],'role':_0x7a10('0x61')},'attributes':['id',_0x7a10('0x38'),_0x7a10('0x75'),_0x7a10('0x76'),_0x7a10('0x77')],'raw':!![]});}return null;})[_0x7a10('0x20')](function(_0x54f405){if(!_0x54f405)return null;_0xeb6f33[_0x7a10('0x27')][_0x7a10('0x61')]=_0x54f405;return _0xeb6f33;})[_0x7a10('0x20')](function(_0x597516){if(_0x597516){if(_0x4a1cfc[_0x7a10('0x58')][_0x7a10('0x78')]){_0xeb6f33[_0x7a10('0x27')][_0x7a10('0x79')]=util[_0x7a10('0x5e')](_0x7a10('0x7a'),_0x4a1cfc[_0x7a10('0x60')][_0x7a10('0x38')]);_0xeb6f33[_0x7a10('0x27')][_0x7a10('0x7b')]=_0xeb6f33[_0x7a10('0x7b')];_0xeb6f33[_0x7a10('0x27')]['motionChannel']=_0xeb6f33[_0x7a10('0x7b')];_0xeb6f33[_0x7a10('0x27')][_0x7a10('0x7c')]=_0x7a10('0x5b');return respondWithRpcPromise(_0x7a10('0x7d'),_0x7a10('0x7d'),{'event':_0x7a10('0x7e'),'message':_0xeb6f33[_0x7a10('0x27')]},client9002)['then'](function(){return _0xeb6f33;});}return _0xeb6f33;}return null;})[_0x7a10('0x20')](respondWithResult(_0x3341f8,null))[_0x7a10('0x29')](handleError(_0x3341f8,null));};var interaction_log=require(_0x7a10('0x16'))(_0x7a10('0x5a'));exports[_0x7a10('0x34')]=function(_0x547ed2,_0x1f0892,_0x347737){var _0x571d17={'agent':{},'channel':_0x7a10('0x5c')};if(_0x547ed2[_0x7a10('0x58')]['id']){delete _0x547ed2[_0x7a10('0x58')]['id'];}_0x547ed2['body'][_0x7a10('0x5f')]=_0x547ed2[_0x7a10('0x58')]['UserId']||_0x547ed2[_0x7a10('0x60')]['id'];_0x571d17[_0x7a10('0x61')]['id']=_0x547ed2[_0x7a10('0x58')][_0x7a10('0x5f')];return db[_0x7a10('0x4f')]['find']({'where':{'id':_0x547ed2['params']['id'],'UserId':null}})[_0x7a10('0x20')](handleEntityNotFound(_0x1f0892,null))['then'](function(_0x1d419f){if(_0x1d419f){_0x571d17[_0x7a10('0x27')]=_0x1d419f[_0x7a10('0x62')]({'plain':!![]});return db[_0x7a10('0x63')][_0x7a10('0x56')]({'where':{'id':_0x1d419f[_0x7a10('0x64')]}});}return null;})[_0x7a10('0x20')](handleEntityNotFound(_0x1f0892,null))['then'](function(_0x4d29a1){if(_0x4d29a1){_0x571d17[_0x7a10('0x67')]=_0x4d29a1[_0x7a10('0x62')]({'plain':!![]});interaction_log['info'](_0x7a10('0x7f'),_0x547ed2[_0x7a10('0x60')]['id'],_0x547ed2[_0x7a10('0x60')][_0x7a10('0x38')],_0x547ed2[_0x7a10('0x60')][_0x7a10('0x69')],_0x571d17['interaction']['id'],_0x547ed2[_0x7a10('0x58')]?JSON['stringify'](_0x547ed2[_0x7a10('0x58')]):'null');return respondWithRpcPromise(_0x7a10('0x80'),_0x7a10('0x81'),_0x571d17);}return null;})['then'](function(_0x3a1447){var _0x4552d7=_0x7a10('0x6d')+_0x3a1447['message']['ContactId'];return db[_0x7a10('0x6f')][_0x7a10('0x40')](_0x4552d7,{'type':db[_0x7a10('0x70')]['QueryTypes'][_0x7a10('0x72')],'raw':!![]})[_0x7a10('0x20')](function(_0x458d82){return _0x458d82;});})['then'](function(_0x399841){if(_0x399841){_0x571d17['message']['contact']=_0x399841[0x0];if(!_0x547ed2[_0x7a10('0x58')][_0x7a10('0x5f')])return;return db[_0x7a10('0x74')]['find']({'where':{'id':_0x547ed2[_0x7a10('0x58')][_0x7a10('0x5f')],'role':_0x7a10('0x61')},'attributes':['id',_0x7a10('0x38'),'fullname',_0x7a10('0x76'),'internal'],'raw':!![]});}return null;})[_0x7a10('0x20')](function(_0x5171bc){if(!_0x5171bc)return null;_0x571d17['message'][_0x7a10('0x61')]=_0x5171bc;return _0x571d17;})[_0x7a10('0x20')](function(_0x192097){if(_0x192097){_0x192097[_0x7a10('0x27')][_0x7a10('0x79')]=util[_0x7a10('0x5e')](_0x7a10('0x7a'),_0x547ed2[_0x7a10('0x60')][_0x7a10('0x38')]);_0x192097[_0x7a10('0x27')]['channel']=_0x571d17['channel'];_0x192097[_0x7a10('0x27')][_0x7a10('0x82')]=_0x571d17['channel'];_0x192097[_0x7a10('0x27')]['event']=_0x7a10('0x34');respondWithRpcPromise(_0x7a10('0x7d'),_0x7a10('0x7d'),{'event':'rejectmessage','message':_0x192097[_0x7a10('0x27')]},client9002);return _0x571d17;}return null;})[_0x7a10('0x20')](respondWithResult(_0x1f0892,null))[_0x7a10('0x29')](handleError(_0x1f0892,null));};exports[_0x7a10('0x2b')]=function(_0x3e405e,_0xebd933,_0x276aca){if(_0x3e405e['body']['id']){delete _0x3e405e[_0x7a10('0x58')]['id'];}var _0xf0a07c;return db[_0x7a10('0x4f')][_0x7a10('0x56')]({'where':{'id':_0x3e405e[_0x7a10('0x54')]['id']}})['then'](handleEntityNotFound(_0xebd933,null))['then'](function(_0x352dc1){if(_0x352dc1){_0xf0a07c=_0x352dc1;return db[_0x7a10('0x83')][_0x7a10('0x56')]({'where':{'id':_0x352dc1['SmsAccountId']}});}})['then'](handleEntityNotFound(_0xebd933,null))['then'](function(_0x1822c9){if(_0x1822c9){logger[_0x7a10('0x21')](_0x7a10('0x84'),_0x7a10('0x2b'),_0x7a10('0x85'),_0x1822c9[_0x7a10('0x3d')],util[_0x7a10('0x86')](_0x3e405e[_0x7a10('0x58')],{'showHidden':![],'depth':null}));switch(_0x1822c9['type']){case _0x7a10('0x87'):if(_0x3e405e[_0x7a10('0x58')][_0x7a10('0x88')]&&_0x3e405e[_0x7a10('0x58')][_0x7a10('0x88')]===_0xf0a07c[_0x7a10('0x89')]){return _0xf0a07c[_0x7a10('0x36')]({'read':!![]});}else{logger[_0x7a10('0x24')](_0x7a10('0x8a'),_0x7a10('0x2b'),_0x7a10('0x87'),util['inspect'](_0x3e405e[_0x7a10('0x58')],{'showHidden':![],'depth':null}));}break;case _0x7a10('0x8b'):if(_0x3e405e[_0x7a10('0x58')]['MessageUUID']&&_0x3e405e[_0x7a10('0x58')]['MessageUUID']===_0xf0a07c[_0x7a10('0x89')]&&_[_0x7a10('0x8c')]([_0x7a10('0x8d'),'delivered'],_0x3e405e[_0x7a10('0x58')][_0x7a10('0x8e')])>=0x0){return _0xf0a07c[_0x7a10('0x36')]({'read':!![]});}else{logger[_0x7a10('0x24')](_0x7a10('0x8a'),_0x7a10('0x2b'),'plivio',util[_0x7a10('0x86')](_0x3e405e[_0x7a10('0x58')],{'showHidden':![],'depth':null}));}break;case _0x7a10('0x8f'):var _0x10247a=_0x3e405e[_0x7a10('0x58')]['results'][0x0];if(_0x10247a[_0x7a10('0x2b')][_0x7a10('0x90')]==='DELIVERED'){return _0xf0a07c['update']({'read':!![]});}else{logger['error'](_0x7a10('0x8a'),_0x7a10('0x2b'),'infobip',util[_0x7a10('0x86')](_0x3e405e[_0x7a10('0x58')],{'showHidden':![],'depth':null}));}break;}return _0xf0a07c;}})[_0x7a10('0x20')](respondWithResult(_0xebd933,null))[_0x7a10('0x29')](handleError(_0xebd933,null));};
\ No newline at end of file
index d812f4a..04ac169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d4=['SmsMessage','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x2bdf00,_0x494ed2){var _0x39752e=function(_0x5404eb){while(--_0x5404eb){_0x2bdf00['push'](_0x2bdf00['shift']());}};_0x39752e(++_0x494ed2);}(_0x86d4,0x1c6));var _0x486d=function(_0x133b42,_0x730192){_0x133b42=_0x133b42-0x0;var _0xe67c95=_0x86d4[_0x133b42];return _0xe67c95;};'use strict';var EventEmitter=require(_0x486d('0x0'));var SmsMessage=require(_0x486d('0x1'))['db'][_0x486d('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x486d('0x3'),'afterDestroy':_0x486d('0x4')};function emitEvent(_0x5dc5eb){return function(_0x55f975,_0x2b54ba,_0x343c2){SmsMessageEvents['emit'](_0x5dc5eb+':'+_0x55f975['id'],_0x55f975);SmsMessageEvents[_0x486d('0x5')](_0x5dc5eb,_0x55f975);_0x343c2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x486d('0x6')](e,emitEvent(event));}}module[_0x486d('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0xc9d5=['hook','exports','SmsMessage','update','remove','emit'];(function(_0x2b1779,_0x218d94){var _0x41d273=function(_0x5bc848){while(--_0x5bc848){_0x2b1779['push'](_0x2b1779['shift']());}};_0x41d273(++_0x218d94);}(_0xc9d5,0xaa));var _0x5c9d=function(_0x37ad66,_0x317c65){_0x37ad66=_0x37ad66-0x0;var _0x207a1b=_0xc9d5[_0x37ad66];return _0x207a1b;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0x5c9d('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5c9d('0x1'),'afterDestroy':_0x5c9d('0x2')};function emitEvent(_0x78d596){return function(_0x97f874,_0xc42092,_0xe7dfe8){SmsMessageEvents['emit'](_0x78d596+':'+_0x97f874['id'],_0x97f874);SmsMessageEvents[_0x5c9d('0x3')](_0x78d596,_0x97f874);_0xe7dfe8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x5c9d('0x4')](e,emitEvent(event));}}module[_0x5c9d('0x5')]=SmsMessageEvents;
\ No newline at end of file
index 9d9cef7..c776c48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xece6=['accountSid','authToken','phone','messages','create','/status?token=','token','sid','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','username','&password=','GET','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','read','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','message_id','clickSend','authId','remote','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','Missing\x20parameters:\x20base_url','csc','crypto','login','sender','text','timestamp','sort','length','apiKey','createHash','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','direction','toLowerCase','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','update','catch','error','out','SmsAccount','SmsAccountId','then','type','twilio'];(function(_0x19c286,_0x1b81d5){var _0x469597=function(_0x3af140){while(--_0x3af140){_0x19c286['push'](_0x19c286['shift']());}};_0x469597(++_0x1b81d5);}(_0xece6,0xd4));var _0x6ece=function(_0x12e898,_0x1ef073){_0x12e898=_0x12e898-0x0;var _0x190631=_0xece6[_0x12e898];return _0x190631;};'use strict';var _=require('lodash');var util=require(_0x6ece('0x0'));var logger=require(_0x6ece('0x1'))(_0x6ece('0x2'));var moment=require('moment');var BPromise=require(_0x6ece('0x3'));var rp=require(_0x6ece('0x4'));var fs=require('fs');var path=require(_0x6ece('0x5'));var rimraf=require(_0x6ece('0x6'));var config=require(_0x6ece('0x7'));var attributes=require(_0x6ece('0x8'));module[_0x6ece('0x9')]=function(_0x3770e3,_0xb1f17d){return _0x3770e3['define'](_0x6ece('0xa'),attributes,{'tableName':_0x6ece('0xb'),'paranoid':![],'indexes':[{'name':_0x6ece('0xc'),'fields':[_0x6ece('0xc')]},{'name':_0x6ece('0xd'),'fields':[_0x6ece('0xe')],'type':_0x6ece('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x395a66,_0x39b04f,_0x489830){var _0x282bdb=_0x3770e3['models'];var _0x10330b=_0x395a66[_0x6ece('0x10')]({'plain':!![]});if(_0x10330b[_0x6ece('0x11')]['toLowerCase']()==='in'||_0x10330b[_0x6ece('0x11')][_0x6ece('0x12')]()==='out'&&!_0x10330b[_0x6ece('0x13')]&&!_[_0x6ece('0x14')](_0x10330b[_0x6ece('0x15')])&&!_[_0x6ece('0x14')](_0x10330b[_0x6ece('0x16')])){_0x282bdb[_0x6ece('0x17')][_0x6ece('0x18')]({'where':{'id':_0x10330b[_0x6ece('0x16')]}})['then'](function(_0x32a1aa){if(_0x32a1aa){_0x32a1aa[_0x6ece('0x19')]({'lastMsgAt':_0x10330b['createdAt'],'lastMsgDirection':_0x10330b['direction']['toLowerCase']()});}})[_0x6ece('0x1a')](function(_0x5f4ae7){console[_0x6ece('0x1b')](_0x5f4ae7);});}if(_0x10330b[_0x6ece('0x11')]===_0x6ece('0x1c')&&!_0x10330b['secret']){var _0x47f159;_0x282bdb[_0x6ece('0x1d')]['find']({'where':{'id':_0x10330b[_0x6ece('0x1e')]},'raw':!![]})[_0x6ece('0x1f')](function(_0xc3c160){_0x47f159=_0xc3c160;if(_0x47f159&&_0x47f159[_0x6ece('0x20')]){switch(_0x47f159['type']){case _0x6ece('0x21'):var _0x3f95f8=require(_0x6ece('0x21'));if(_0x47f159[_0x6ece('0x22')]&&_0x47f159[_0x6ece('0x23')]&&_0x47f159[_0x6ece('0x24')]){var _0x3ab725=new _0x3f95f8(_0x47f159[_0x6ece('0x22')],_0x47f159[_0x6ece('0x23')]);_0x3ab725[_0x6ece('0x25')][_0x6ece('0x26')]({'body':_0x10330b[_0x6ece('0xe')],'to':_0x10330b[_0x6ece('0x24')],'from':_0x47f159[_0x6ece('0x24')],'statusCallback':_0x47f159['remote']+'/api/sms/messages/'+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')]})[_0x6ece('0x1f')](function(_0x4ca61b){if(_0x4ca61b['sid']){return _0x395a66['update']({'messageId':_0x4ca61b[_0x6ece('0x29')]});}})[_0x6ece('0x1a')](function(_0x18d716){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'twilio',util[_0x6ece('0x2b')](_0x18d716,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x21'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x27fa08=_0x6ece('0x2d');if(_0x47f159['username']&&_0x47f159[_0x6ece('0x2e')]){var _0x45147e={'recipient':[_0x10330b[_0x6ece('0x24')]],'message':_0x10330b[_0x6ece('0xe')],'message_type':_0x47f159[_0x6ece('0x2f')]};if(_0x47f159[_0x6ece('0x2f')]&&_0x47f159['smsMethod']!=='SI'){_0x45147e['sender']=_0x47f159[_0x6ece('0x24')];}var _0x301b43={'url':_0x27fa08+_0x6ece('0x30')+_0x47f159[_0x6ece('0x31')]+_0x6ece('0x32')+_0x47f159[_0x6ece('0x2e')],'method':_0x6ece('0x33')};rp(_0x301b43)[_0x6ece('0x1f')](function(_0x1de89b){var _0x5758dd=_0x1de89b['split'](';');var _0x43d425={'user_key':_0x5758dd[0x0],'session_key':_0x5758dd[0x1]};_0x301b43={'url':_0x27fa08+'sms','method':_0x6ece('0x34'),'headers':{'user_key':_0x43d425[_0x6ece('0x35')],'Session_key':_0x43d425[_0x6ece('0x36')]},'json':!![],'body':_0x45147e};return rp(_0x301b43);})[_0x6ece('0x1f')](function(_0xfa9b7b){if(_0xfa9b7b[_0x6ece('0x37')]>=0x1){var _0x853ba9={'messageId':_0xfa9b7b[_0x6ece('0x38')]};if(_0x47f159['smsMethod']!=='GP'||!_0x47f159[_0x6ece('0x39')]){_0x853ba9['read']=!![];}return _0x395a66[_0x6ece('0x19')](_0x853ba9);}else{return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),util[_0x6ece('0x2b')](_0xfa9b7b,{'showHidden':![],'depth':null}));}})['catch'](function(_0x51968d){return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),util[_0x6ece('0x2b')](_0x51968d,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x3a'),_0x6ece('0x3b'));}break;case _0x6ece('0x3c'):if(_0x47f159['authToken']){var _0x14e430={'recipient':_0x10330b[_0x6ece('0x24')],'message':_0x10330b[_0x6ece('0xe')],'sender':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')],'authorization':_0x47f159['authToken']};var _0x39b04f={'method':_0x6ece('0x34'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x14e430,'json':!![]};rp(_0x39b04f)['then'](function(_0x169a95){var _0x2e2864={'messageId':_0x169a95[_0x6ece('0x3e')]};if(!_0x47f159[_0x6ece('0x39')]){_0x2e2864[_0x6ece('0x3f')]=!![];}return _0x395a66['update'](_0x2e2864);})[_0x6ece('0x1a')](function(_0x425757){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'connectel',util[_0x6ece('0x2b')](_0x425757,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'connectel',_0x6ece('0x40'));}break;case'clicksend':if(_0x47f159['username']&&_0x47f159[_0x6ece('0x2e')]){var _0x14e430={'messages':[{'source':_0x6ece('0x41'),'to':_0x10330b[_0x6ece('0x24')],'body':_0x10330b[_0x6ece('0xe')],'from':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')]}]};var _0x56f22c=util[_0x6ece('0x42')](_0x6ece('0x43'),_0x47f159[_0x6ece('0x31')],_0x47f159[_0x6ece('0x2e')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':_0x6ece('0x44'),'body':_0x14e430,'headers':{'Authorization':util[_0x6ece('0x42')](_0x6ece('0x45'),new Buffer(_0x56f22c)[_0x6ece('0x46')](_0x6ece('0x47')))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x131bde){if(_0x131bde[_0x6ece('0x48')]>=0xc8&&_0x131bde[_0x6ece('0x48')]<=0xce){if(_0x131bde[_0x6ece('0x49')]&&_0x131bde[_0x6ece('0x49')][_0x6ece('0x4a')]>0x0){var _0x22475f=_['head'](_0x131bde[_0x6ece('0x49')][_0x6ece('0x25')]);var _0x40062e={'messageId':_0x22475f[_0x6ece('0x4b')]};if(!_0x47f159['deliveryReport']){_0x40062e[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x40062e);}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6ece('0x4c'),util['inspect'](_0x131bde,{'showHidden':![],'depth':null}));}}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x4c'),util['inspect'](_0x131bde,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x2cf95a){logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate','clickSend',util[_0x6ece('0x2b')](_0x2cf95a,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x4c'),_0x6ece('0x3b'));}break;case'plivo':if(_0x47f159[_0x6ece('0x4d')]&&_0x47f159[_0x6ece('0x23')]){var _0x14e430={'dst':_0x10330b[_0x6ece('0x24')],'text':_0x10330b[_0x6ece('0xe')],'src':_0x47f159[_0x6ece('0x3d')]||_0x47f159[_0x6ece('0x24')],'url':_0x47f159[_0x6ece('0x4e')]+_0x6ece('0x4f')+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')]};var _0x56f22c=util[_0x6ece('0x42')]('%s:%s',_0x47f159[_0x6ece('0x4d')],_0x47f159[_0x6ece('0x23')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':util['format'](_0x6ece('0x50'),_0x47f159['authId']),'body':_0x14e430,'headers':{'Authorization':util[_0x6ece('0x42')]('Basic\x20%s',new Buffer(_0x56f22c)[_0x6ece('0x46')](_0x6ece('0x47')))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x415ba6){var _0x534cb7={'messageId':_0x415ba6[_0x6ece('0x51')][0x0]};return _0x395a66['update'](_0x534cb7);})[_0x6ece('0x1a')](function(_0x2d8875){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'plivo',util[_0x6ece('0x2b')](_0x2d8875,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x52'),_0x6ece('0x53'));}break;case _0x6ece('0x54'):if(_0x47f159[_0x6ece('0x31')]&&_0x47f159[_0x6ece('0x2e')]){if(_0x47f159[_0x6ece('0x55')]){var _0x460d91={'method':_0x6ece('0x34'),'uri':_0x47f159['baseUrl']+_0x6ece('0x56'),'body':{'username':_0x47f159[_0x6ece('0x31')],'password':_0x47f159[_0x6ece('0x2e')]},'json':!![]};return rp(_0x460d91)['then'](function(_0x524eae){var _0x506f7e={'method':_0x6ece('0x34'),'uri':_0x47f159[_0x6ece('0x55')]+_0x6ece('0x57'),'body':{'messages':[{'from':_0x47f159[_0x6ece('0x24')],'destinations':[{'to':_0x10330b['phone']}],'text':_0x10330b[_0x6ece('0xe')],'notifyUrl':_0x47f159[_0x6ece('0x4e')]+_0x6ece('0x4f')+_0x10330b['id']+_0x6ece('0x27')+_0x47f159[_0x6ece('0x28')],'notifyContentType':'application/json','callbackData':_0x47f159[_0x6ece('0x24')]+';'+_0x10330b['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x524eae[_0x6ece('0x28')]},'json':!![]};return rp(_0x506f7e)[_0x6ece('0x1f')](function(_0x5ad66a){if(_0x5ad66a[_0x6ece('0x25')]){var _0x46d5ac={'messageId':_0x5ad66a[_0x6ece('0x25')][0x0][_0x6ece('0xc')]};if(!_0x47f159[_0x6ece('0x39')]){_0x46d5ac['read']=!![];}return _0x395a66[_0x6ece('0x19')](_0x46d5ac);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x54'),util['inspect'](_0x5ad66a,{'showHidden':![],'depth':null}));}});})[_0x6ece('0x1a')](function(_0x4d5645){return logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'infobip',util['inspect'](_0x4d5645,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6ece('0x2c'),_0x6ece('0x2a'),'infobip',_0x6ece('0x58'));}}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x54'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x6ece('0x59'):var _0x33546b=require(_0x6ece('0x5a'));if(_0x47f159['apiKey']){var _0xf271f4={};_0xf271f4[_0x6ece('0x5b')]=_0x47f159[_0x6ece('0x31')];_0xf271f4[_0x6ece('0x24')]=_0x10330b[_0x6ece('0x24')];_0xf271f4[_0x6ece('0x5c')]=_0x47f159['phone'];_0xf271f4[_0x6ece('0x5d')]=_0x10330b[_0x6ece('0xe')];_0xf271f4[_0x6ece('0x5e')]=+new Date();var _0x3da0dc='';var _0x3d94b5='';var _0x5546b5=Object['keys'](_0xf271f4);_0x5546b5[_0x6ece('0x5f')]();for(var _0x2888a1=0x0;_0x2888a1<_0x5546b5[_0x6ece('0x60')];_0x2888a1++){if(_0x3da0dc!=''){_0x3da0dc+='&';}_0x3da0dc+=_0x5546b5[_0x2888a1]+'='+encodeURIComponent(_0xf271f4[_0x5546b5[_0x2888a1]]);_0x3d94b5+=_0xf271f4[_0x5546b5[_0x2888a1]];}_0x3d94b5+=_0x47f159[_0x6ece('0x61')];_0x3d94b5=_0x33546b[_0x6ece('0x62')]('md5')[_0x6ece('0x19')](_0x3d94b5)['digest']('hex');if(_0x3da0dc!==''){_0x3da0dc+='&';}_0x3da0dc+=_0x6ece('0x63')+_0x3d94b5;var _0x301b43={'method':_0x6ece('0x33'),'uri':_0x47f159[_0x6ece('0x55')]+_0x6ece('0x64')+_0x3da0dc,'json':!![]};return rp(_0x301b43)[_0x6ece('0x1f')](function(_0x33688c){var _0x331bca=Object['keys'](_0x33688c);if(_0x33688c[_0x331bca[0x0]][_0x6ece('0x1b')]&&parseInt(_0x33688c[_0x331bca[0x0]][_0x6ece('0x1b')])===0x0){var _0x509426={'messageId':_0x33688c[_0x331bca[0x0]][_0x6ece('0x65')]};if(!_0x47f159[_0x6ece('0x39')]){_0x509426[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x509426);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x6ece('0x59'),util['inspect'](_0x33688c['error'],{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x4051e4){return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x59'),util[_0x6ece('0x2b')](_0x4051e4,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x59'),_0x6ece('0x66'));}break;case _0x6ece('0x67'):if(_0x47f159[_0x6ece('0x61')]){var _0x592567={'method':_0x6ece('0x34'),'uri':_0x6ece('0x68'),'headers':{'Authorization':_0x47f159['apiKey']},'body':{'content':_0x10330b[_0x6ece('0xe')],'to':[_0x10330b['phone']],'from':_0x47f159[_0x6ece('0x24')],'binary':![],'clientMessageId':_0x6ece('0x69'),'charset':_0x6ece('0x6a')},'json':!![]};rp(_0x592567)[_0x6ece('0x1f')](function(_0x4a1b3d){if(!_0x4a1b3d[_0x6ece('0x1b')]){var _0x485a78={'messageId':_0x4a1b3d[_0x6ece('0x25')][0x0][_0x6ece('0x6b')]};if(!_0x47f159[_0x6ece('0x39')]){_0x485a78[_0x6ece('0x3f')]=!![];}return _0x395a66[_0x6ece('0x19')](_0x485a78);}else{return logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'clickatell',util[_0x6ece('0x2b')](_0x4a1b3d['error'],{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x1e4a04){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),'clickatell',util['inspect'](_0x1e4a04,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x67'),_0x6ece('0x66'));}break;case _0x6ece('0x6c'):if(_0x47f159[_0x6ece('0x31')]&&_0x47f159[_0x6ece('0x2e')]){var _0x56f22c=util[_0x6ece('0x42')](_0x6ece('0x43'),_0x47f159['username'],_0x47f159[_0x6ece('0x2e')]);var _0x39b04f={'method':_0x6ece('0x34'),'uri':_0x6ece('0x6d')+_0x47f159[_0x6ece('0x6e')]+_0x6ece('0x6f'),'body':{'to':[_0x10330b[_0x6ece('0x24')]],'text':_0x10330b['body'],'from':_0x47f159[_0x6ece('0x24')],'applicationId':_0x47f159[_0x6ece('0x70')]},'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x56f22c)[_0x6ece('0x46')]('base64'))},'json':!![]};rp(_0x39b04f)[_0x6ece('0x1f')](function(_0x1d488e){if(_0x1d488e['id']){var _0xde696={'messageId':_0x1d488e['id']};return _0x395a66['update'](_0xde696);}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x6c'),util[_0x6ece('0x2b')](_0x1d488e,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x2598dc){logger[_0x6ece('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6ece('0x2a'),_0x6ece('0x6c'),util[_0x6ece('0x2b')](_0x2598dc,{'showHidden':![],'depth':null}));});}else{logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x6c'),_0x6ece('0x3b'));}break;case _0x6ece('0x71'):if(_0x47f159[_0x6ece('0x61')]){var _0x487874={};var _0x301b43={'method':_0x6ece('0x34'),'uri':_0x6ece('0x72'),'headers':{'Authorization':_0x6ece('0x73')+_0x47f159[_0x6ece('0x61')],'Content-Type':_0x6ece('0x74')},'body':{'from':_0x47f159[_0x6ece('0x24')],'to':_0x10330b['phone'],'text':_0x10330b[_0x6ece('0xe')]},'json':!![]};return rp(_0x301b43)['then'](function(_0x221a49){if(_0x221a49['code']==0xca){_0x487874[_0x6ece('0x75')]=_0x221a49;var _0x41f336={'method':_0x6ece('0x34'),'uri':_0x6ece('0x76'),'headers':{'Authorization':_0x6ece('0x73')+_0x47f159[_0x6ece('0x61')],'Content-Type':_0x6ece('0x74')},'body':{'refid':_0x487874[_0x6ece('0x75')][_0x6ece('0x77')]},'json':!![]};return rp(_0x41f336)[_0x6ece('0x1f')](function(_0x2c3bf1){_0x487874['status']=_0x2c3bf1;var _0x3dbc19={'messageId':_0x487874[_0x6ece('0x75')][_0x6ece('0x77')],'read':!![]};return _0x395a66[_0x6ece('0x19')](_0x3dbc19);});}else{return logger[_0x6ece('0x1b')](_0x6ece('0x2c'),_0x6ece('0x2a'),_0x6ece('0x71'),util[_0x6ece('0x2b')](_0x221a49,{'showHidden':![],'depth':null}));}})[_0x6ece('0x1a')](function(_0x16447b){return logger['error'](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x71'),util[_0x6ece('0x2b')](_0x16447b,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x6ece('0x2c'),'afterCreate',_0x6ece('0x71'),_0x6ece('0x78'));}break;}}})[_0x6ece('0x79')](function(){_0x489830();});}else{_0x489830();}}},'charset':'utf8mb4','collate':_0x6ece('0x7a')});};
\ No newline at end of file
+var _0xd852=['models','get','toLowerCase','direction','out','secret','SmsInteractionId','then','update','createdAt','catch','error','SmsAccount','twilio','accountSid','authToken','create','phone','remote','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','username','password','smsMethod','sender','&password=','GET','split','sms','POST','user_key','internal_order_id','deliveryReport','read','skebby','connectel','senderString','requestid','Missing\x20parameters:\x20authToken','xCALLY\x20Motion','format','base64','http_code','data','head','messages','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','authId','%s:%s','Basic\x20%s','toString','message_uuid','plivo','infobip','baseUrl','/auth/1/session','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','apiKey','login','text','sort','length','createHash','digest','hex','signature=','/external/get/send.php?','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','Missing\x20parameters:\x20apiKey','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','intelepeer','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0xd852,0x64));var _0x2d85=function(_0x52d23d,_0x44c3dc){_0x52d23d=_0x52d23d-0x0;var _0x13fb03=_0xd852[_0x52d23d];return _0x13fb03;};'use strict';var _=require(_0x2d85('0x0'));var util=require(_0x2d85('0x1'));var logger=require('../../config/logger')(_0x2d85('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2d85('0x3'));var fs=require('fs');var path=require(_0x2d85('0x4'));var rimraf=require(_0x2d85('0x5'));var config=require(_0x2d85('0x6'));var attributes=require(_0x2d85('0x7'));module['exports']=function(_0xb9dd08,_0x51f640){return _0xb9dd08['define'](_0x2d85('0x8'),attributes,{'tableName':_0x2d85('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x2d85('0xa')]},{'name':_0x2d85('0xb'),'fields':[_0x2d85('0xc')],'type':_0x2d85('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x222d5c,_0x302065,_0xb4f879){var _0x15f7ca=_0xb9dd08[_0x2d85('0xe')];var _0x436be7=_0x222d5c[_0x2d85('0xf')]({'plain':!![]});if(_0x436be7['direction'][_0x2d85('0x10')]()==='in'||_0x436be7[_0x2d85('0x11')][_0x2d85('0x10')]()===_0x2d85('0x12')&&!_0x436be7[_0x2d85('0x13')]&&!_['isNil'](_0x436be7['UserId'])&&!_['isNil'](_0x436be7[_0x2d85('0x14')])){_0x15f7ca['SmsInteraction']['findOne']({'where':{'id':_0x436be7[_0x2d85('0x14')]}})[_0x2d85('0x15')](function(_0x11d6a3){if(_0x11d6a3){_0x11d6a3[_0x2d85('0x16')]({'lastMsgAt':_0x436be7[_0x2d85('0x17')],'lastMsgDirection':_0x436be7[_0x2d85('0x11')][_0x2d85('0x10')]()});}})[_0x2d85('0x18')](function(_0x1267bc){console[_0x2d85('0x19')](_0x1267bc);});}if(_0x436be7[_0x2d85('0x11')]===_0x2d85('0x12')&&!_0x436be7[_0x2d85('0x13')]){var _0x5eb5b3;_0x15f7ca[_0x2d85('0x1a')]['find']({'where':{'id':_0x436be7['SmsAccountId']},'raw':!![]})['then'](function(_0x11c38b){_0x5eb5b3=_0x11c38b;if(_0x5eb5b3&&_0x5eb5b3['type']){switch(_0x5eb5b3['type']){case _0x2d85('0x1b'):var _0x1c6ecf=require(_0x2d85('0x1b'));if(_0x5eb5b3[_0x2d85('0x1c')]&&_0x5eb5b3['authToken']&&_0x5eb5b3['phone']){var _0x49b334=new _0x1c6ecf(_0x5eb5b3['accountSid'],_0x5eb5b3[_0x2d85('0x1d')]);_0x49b334['messages'][_0x2d85('0x1e')]({'body':_0x436be7[_0x2d85('0xc')],'to':_0x436be7[_0x2d85('0x1f')],'from':_0x5eb5b3[_0x2d85('0x1f')],'statusCallback':_0x5eb5b3[_0x2d85('0x20')]+_0x2d85('0x21')+_0x436be7['id']+_0x2d85('0x22')+_0x5eb5b3[_0x2d85('0x23')]})[_0x2d85('0x15')](function(_0x2e1de0){if(_0x2e1de0['sid']){return _0x222d5c['update']({'messageId':_0x2e1de0[_0x2d85('0x24')]});}})[_0x2d85('0x18')](function(_0x2340ae){logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x1b'),util[_0x2d85('0x27')](_0x2340ae,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2d85('0x26'),_0x2d85('0x1b'),_0x2d85('0x28'));}break;case'skebby':var _0x4848ab='https://api.skebby.it/API/v1.0/REST/';if(_0x5eb5b3[_0x2d85('0x29')]&&_0x5eb5b3[_0x2d85('0x2a')]){var _0x2f98d8={'recipient':[_0x436be7[_0x2d85('0x1f')]],'message':_0x436be7[_0x2d85('0xc')],'message_type':_0x5eb5b3[_0x2d85('0x2b')]};if(_0x5eb5b3[_0x2d85('0x2b')]&&_0x5eb5b3[_0x2d85('0x2b')]!=='SI'){_0x2f98d8[_0x2d85('0x2c')]=_0x5eb5b3[_0x2d85('0x1f')];}var _0x52d439={'url':_0x4848ab+'login?username='+_0x5eb5b3['username']+_0x2d85('0x2d')+_0x5eb5b3[_0x2d85('0x2a')],'method':_0x2d85('0x2e')};rp(_0x52d439)['then'](function(_0x2dd633){var _0x4c88c3=_0x2dd633[_0x2d85('0x2f')](';');var _0x4f51d1={'user_key':_0x4c88c3[0x0],'session_key':_0x4c88c3[0x1]};_0x52d439={'url':_0x4848ab+_0x2d85('0x30'),'method':_0x2d85('0x31'),'headers':{'user_key':_0x4f51d1[_0x2d85('0x32')],'Session_key':_0x4f51d1['session_key']},'json':!![],'body':_0x2f98d8};return rp(_0x52d439);})['then'](function(_0x382956){if(_0x382956['total_sent']>=0x1){var _0x4fffd1={'messageId':_0x382956[_0x2d85('0x33')]};if(_0x5eb5b3[_0x2d85('0x2b')]!=='GP'||!_0x5eb5b3[_0x2d85('0x34')]){_0x4fffd1[_0x2d85('0x35')]=!![];}return _0x222d5c[_0x2d85('0x16')](_0x4fffd1);}else{return logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x36'),util[_0x2d85('0x27')](_0x382956,{'showHidden':![],'depth':null}));}})[_0x2d85('0x18')](function(_0x4dbc4a){return logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),'skebby',util[_0x2d85('0x27')](_0x4dbc4a,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x36'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x2d85('0x37'):if(_0x5eb5b3[_0x2d85('0x1d')]){var _0x4be3a8={'recipient':_0x436be7[_0x2d85('0x1f')],'message':_0x436be7[_0x2d85('0xc')],'sender':_0x5eb5b3[_0x2d85('0x38')]||_0x5eb5b3[_0x2d85('0x1f')],'authorization':_0x5eb5b3[_0x2d85('0x1d')]};var _0x302065={'method':_0x2d85('0x31'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x4be3a8,'json':!![]};rp(_0x302065)[_0x2d85('0x15')](function(_0x569b31){var _0x316822={'messageId':_0x569b31[_0x2d85('0x39')]};if(!_0x5eb5b3[_0x2d85('0x34')]){_0x316822['read']=!![];}return _0x222d5c['update'](_0x316822);})[_0x2d85('0x18')](function(_0x32d353){logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x37'),util[_0x2d85('0x27')](_0x32d353,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2d85('0x26'),_0x2d85('0x37'),_0x2d85('0x3a'));}break;case'clicksend':if(_0x5eb5b3[_0x2d85('0x29')]&&_0x5eb5b3[_0x2d85('0x2a')]){var _0x4be3a8={'messages':[{'source':_0x2d85('0x3b'),'to':_0x436be7[_0x2d85('0x1f')],'body':_0x436be7[_0x2d85('0xc')],'from':_0x5eb5b3[_0x2d85('0x38')]||_0x5eb5b3[_0x2d85('0x1f')]}]};var _0x4ad8a2=util[_0x2d85('0x3c')]('%s:%s',_0x5eb5b3[_0x2d85('0x29')],_0x5eb5b3['password']);var _0x302065={'method':'POST','uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4be3a8,'headers':{'Authorization':util[_0x2d85('0x3c')]('Basic\x20%s',new Buffer(_0x4ad8a2)['toString'](_0x2d85('0x3d')))},'json':!![]};rp(_0x302065)[_0x2d85('0x15')](function(_0x16f60){if(_0x16f60['http_code']>=0xc8&&_0x16f60[_0x2d85('0x3e')]<=0xce){if(_0x16f60[_0x2d85('0x3f')]&&_0x16f60[_0x2d85('0x3f')]['queued_count']>0x0){var _0x5bca93=_[_0x2d85('0x40')](_0x16f60[_0x2d85('0x3f')][_0x2d85('0x41')]);var _0x31ce25={'messageId':_0x5bca93[_0x2d85('0x42')]};if(!_0x5eb5b3[_0x2d85('0x34')]){_0x31ce25[_0x2d85('0x35')]=!![];}return _0x222d5c[_0x2d85('0x16')](_0x31ce25);}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x43'),util[_0x2d85('0x27')](_0x16f60,{'showHidden':![],'depth':null}));}}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x43'),util['inspect'](_0x16f60,{'showHidden':![],'depth':null}));}})[_0x2d85('0x18')](function(_0x1c4356){logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x43'),util[_0x2d85('0x27')](_0x1c4356,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),'afterCreate',_0x2d85('0x43'),_0x2d85('0x44'));}break;case'plivo':if(_0x5eb5b3[_0x2d85('0x45')]&&_0x5eb5b3[_0x2d85('0x1d')]){var _0x4be3a8={'dst':_0x436be7[_0x2d85('0x1f')],'text':_0x436be7['body'],'src':_0x5eb5b3['senderString']||_0x5eb5b3[_0x2d85('0x1f')],'url':_0x5eb5b3[_0x2d85('0x20')]+_0x2d85('0x21')+_0x436be7['id']+_0x2d85('0x22')+_0x5eb5b3['token']};var _0x4ad8a2=util[_0x2d85('0x3c')](_0x2d85('0x46'),_0x5eb5b3[_0x2d85('0x45')],_0x5eb5b3[_0x2d85('0x1d')]);var _0x302065={'method':_0x2d85('0x31'),'uri':util[_0x2d85('0x3c')]('https://api.plivo.com/v1/Account/%s/Message/',_0x5eb5b3['authId']),'body':_0x4be3a8,'headers':{'Authorization':util[_0x2d85('0x3c')](_0x2d85('0x47'),new Buffer(_0x4ad8a2)[_0x2d85('0x48')]('base64'))},'json':!![]};rp(_0x302065)['then'](function(_0x382ccd){var _0x3cae75={'messageId':_0x382ccd[_0x2d85('0x49')][0x0]};return _0x222d5c[_0x2d85('0x16')](_0x3cae75);})[_0x2d85('0x18')](function(_0x1b60f9){logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),'plivo',util['inspect'](_0x1b60f9,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x4a'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x2d85('0x4b'):if(_0x5eb5b3[_0x2d85('0x29')]&&_0x5eb5b3['password']){if(_0x5eb5b3[_0x2d85('0x4c')]){var _0x53032e={'method':_0x2d85('0x31'),'uri':_0x5eb5b3[_0x2d85('0x4c')]+_0x2d85('0x4d'),'body':{'username':_0x5eb5b3['username'],'password':_0x5eb5b3['password']},'json':!![]};return rp(_0x53032e)[_0x2d85('0x15')](function(_0x1e33ac){var _0x32a88e={'method':_0x2d85('0x31'),'uri':_0x5eb5b3[_0x2d85('0x4c')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x5eb5b3[_0x2d85('0x1f')],'destinations':[{'to':_0x436be7[_0x2d85('0x1f')]}],'text':_0x436be7[_0x2d85('0xc')],'notifyUrl':_0x5eb5b3[_0x2d85('0x20')]+_0x2d85('0x21')+_0x436be7['id']+_0x2d85('0x22')+_0x5eb5b3[_0x2d85('0x23')],'notifyContentType':'application/json','callbackData':_0x5eb5b3[_0x2d85('0x1f')]+';'+_0x436be7['body']}]},'headers':{'Authorization':_0x2d85('0x4e')+_0x1e33ac['token']},'json':!![]};return rp(_0x32a88e)[_0x2d85('0x15')](function(_0x1b4d20){if(_0x1b4d20['messages']){var _0x4d4401={'messageId':_0x1b4d20[_0x2d85('0x41')][0x0][_0x2d85('0xa')]};if(!_0x5eb5b3['deliveryReport']){_0x4d4401['read']=!![];}return _0x222d5c[_0x2d85('0x16')](_0x4d4401);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2d85('0x4b'),util[_0x2d85('0x27')](_0x1b4d20,{'showHidden':![],'depth':null}));}});})[_0x2d85('0x18')](function(_0x3475ac){return logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x4b'),util[_0x2d85('0x27')](_0x3475ac,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x4b'),_0x2d85('0x4f'));}}else{logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),'infobip','Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x37682f=require(_0x2d85('0x50'));if(_0x5eb5b3[_0x2d85('0x51')]){var _0x1d9f1f={};_0x1d9f1f[_0x2d85('0x52')]=_0x5eb5b3[_0x2d85('0x29')];_0x1d9f1f['phone']=_0x436be7[_0x2d85('0x1f')];_0x1d9f1f[_0x2d85('0x2c')]=_0x5eb5b3[_0x2d85('0x1f')];_0x1d9f1f[_0x2d85('0x53')]=_0x436be7[_0x2d85('0xc')];_0x1d9f1f['timestamp']=+new Date();var _0x253620='';var _0xd87aaf='';var _0x37a0bf=Object['keys'](_0x1d9f1f);_0x37a0bf[_0x2d85('0x54')]();for(var _0x1dfcdf=0x0;_0x1dfcdf<_0x37a0bf[_0x2d85('0x55')];_0x1dfcdf++){if(_0x253620!=''){_0x253620+='&';}_0x253620+=_0x37a0bf[_0x1dfcdf]+'='+encodeURIComponent(_0x1d9f1f[_0x37a0bf[_0x1dfcdf]]);_0xd87aaf+=_0x1d9f1f[_0x37a0bf[_0x1dfcdf]];}_0xd87aaf+=_0x5eb5b3['apiKey'];_0xd87aaf=_0x37682f[_0x2d85('0x56')]('md5')[_0x2d85('0x16')](_0xd87aaf)[_0x2d85('0x57')](_0x2d85('0x58'));if(_0x253620!==''){_0x253620+='&';}_0x253620+=_0x2d85('0x59')+_0xd87aaf;var _0x52d439={'method':_0x2d85('0x2e'),'uri':_0x5eb5b3[_0x2d85('0x4c')]+_0x2d85('0x5a')+_0x253620,'json':!![]};return rp(_0x52d439)[_0x2d85('0x15')](function(_0x4a6ade){var _0x1d220e=Object['keys'](_0x4a6ade);if(_0x4a6ade[_0x1d220e[0x0]]['error']&&parseInt(_0x4a6ade[_0x1d220e[0x0]][_0x2d85('0x19')])===0x0){var _0x527d85={'messageId':_0x4a6ade[_0x1d220e[0x0]][_0x2d85('0x5b')]};if(!_0x5eb5b3['deliveryReport']){_0x527d85[_0x2d85('0x35')]=!![];}return _0x222d5c[_0x2d85('0x16')](_0x527d85);}else{return logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x5c'),util[_0x2d85('0x27')](_0x4a6ade['error'],{'showHidden':![],'depth':null}));}})[_0x2d85('0x18')](function(_0x51be36){return logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x5c'),util[_0x2d85('0x27')](_0x51be36,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x5c'),'Missing\x20parameters:\x20apiKey');}break;case _0x2d85('0x5d'):if(_0x5eb5b3[_0x2d85('0x51')]){var _0x413756={'method':_0x2d85('0x31'),'uri':_0x2d85('0x5e'),'headers':{'Authorization':_0x5eb5b3[_0x2d85('0x51')]},'body':{'content':_0x436be7[_0x2d85('0xc')],'to':[_0x436be7['phone']],'from':_0x5eb5b3[_0x2d85('0x1f')],'binary':![],'clientMessageId':_0x2d85('0x5f'),'charset':_0x2d85('0x60')},'json':!![]};rp(_0x413756)['then'](function(_0x497776){if(!_0x497776['error']){var _0x1aea58={'messageId':_0x497776['messages'][0x0]['apiMessageId']};if(!_0x5eb5b3[_0x2d85('0x34')]){_0x1aea58[_0x2d85('0x35')]=!![];}return _0x222d5c[_0x2d85('0x16')](_0x1aea58);}else{return logger[_0x2d85('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2d85('0x26'),_0x2d85('0x5d'),util[_0x2d85('0x27')](_0x497776['error'],{'showHidden':![],'depth':null}));}})[_0x2d85('0x18')](function(_0x43f9f1){return logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x5d'),util[_0x2d85('0x27')](_0x43f9f1,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x5d'),_0x2d85('0x61'));}break;case _0x2d85('0x62'):if(_0x5eb5b3[_0x2d85('0x29')]&&_0x5eb5b3[_0x2d85('0x2a')]){var _0x4ad8a2=util[_0x2d85('0x3c')]('%s:%s',_0x5eb5b3['username'],_0x5eb5b3[_0x2d85('0x2a')]);var _0x302065={'method':'POST','uri':_0x2d85('0x63')+_0x5eb5b3[_0x2d85('0x64')]+_0x2d85('0x65'),'body':{'to':[_0x436be7['phone']],'text':_0x436be7[_0x2d85('0xc')],'from':_0x5eb5b3['phone'],'applicationId':_0x5eb5b3[_0x2d85('0x66')]},'headers':{'Authorization':util[_0x2d85('0x3c')]('Basic\x20%s',new Buffer(_0x4ad8a2)[_0x2d85('0x48')](_0x2d85('0x3d')))},'json':!![]};rp(_0x302065)[_0x2d85('0x15')](function(_0xfe1687){if(_0xfe1687['id']){var _0xcf7f7={'messageId':_0xfe1687['id']};return _0x222d5c['update'](_0xcf7f7);}else{logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x62'),util[_0x2d85('0x27')](_0xfe1687,{'showHidden':![],'depth':null}));}})[_0x2d85('0x18')](function(_0x4fa38e){logger['error'](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x62'),util[_0x2d85('0x27')](_0x4fa38e,{'showHidden':![],'depth':null}));});}else{logger[_0x2d85('0x19')](_0x2d85('0x25'),'afterCreate','bandwidth',_0x2d85('0x44'));}break;case'intelepeer':if(_0x5eb5b3[_0x2d85('0x51')]){var _0x639cf6={};var _0x52d439={'method':_0x2d85('0x31'),'uri':_0x2d85('0x67'),'headers':{'Authorization':_0x2d85('0x68')+_0x5eb5b3[_0x2d85('0x51')],'Content-Type':_0x2d85('0x69')},'body':{'from':_0x5eb5b3[_0x2d85('0x1f')],'to':_0x436be7[_0x2d85('0x1f')],'text':_0x436be7['body']},'json':!![]};return rp(_0x52d439)[_0x2d85('0x15')](function(_0x4ceec8){if(_0x4ceec8[_0x2d85('0x6a')]==0xca){_0x639cf6[_0x2d85('0x6b')]=_0x4ceec8;var _0xde9815={'method':_0x2d85('0x31'),'uri':_0x2d85('0x6c'),'headers':{'Authorization':_0x2d85('0x68')+_0x5eb5b3[_0x2d85('0x51')],'Content-Type':_0x2d85('0x69')},'body':{'refid':_0x639cf6[_0x2d85('0x6b')][_0x2d85('0x6d')]},'json':!![]};return rp(_0xde9815)[_0x2d85('0x15')](function(_0x546482){_0x639cf6['status']=_0x546482;var _0x5bbc3f={'messageId':_0x639cf6[_0x2d85('0x6b')][_0x2d85('0x6d')],'read':!![]};return _0x222d5c['update'](_0x5bbc3f);});}else{return logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),_0x2d85('0x6e'),util[_0x2d85('0x27')](_0x4ceec8,{'showHidden':![],'depth':null}));}})['catch'](function(_0x591058){return logger[_0x2d85('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2d85('0x26'),_0x2d85('0x6e'),util[_0x2d85('0x27')](_0x591058,{'showHidden':![],'depth':null}));});}else{return logger[_0x2d85('0x19')](_0x2d85('0x25'),_0x2d85('0x26'),'intelepeer',_0x2d85('0x6f'));}break;}}})['finally'](function(){_0xb4f879();});}else{_0xb4f879();}}},'charset':_0x2d85('0x70'),'collate':_0x2d85('0x71')});};
\ No newline at end of file
index bf39feb..7f3d177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc29=['http','redis','localhost','./smsMessage.socket','register','request','then','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsMessage,\x20%s,\x20%s','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x22571d,_0x1459a6){var _0x502d64=function(_0x272fb2){while(--_0x272fb2){_0x22571d['push'](_0x22571d['shift']());}};_0x502d64(++_0x1459a6);}(_0xbc29,0x196));var _0x9bc2=function(_0x48e136,_0x528678){_0x48e136=_0x48e136-0x0;var _0x2e944d=_0xbc29[_0x48e136];return _0x2e944d;};'use strict';var _=require(_0x9bc2('0x0'));var util=require(_0x9bc2('0x1'));var moment=require(_0x9bc2('0x2'));var BPromise=require(_0x9bc2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bc2('0x4'));var db=require(_0x9bc2('0x5'))['db'];var utils=require(_0x9bc2('0x6'));var logger=require('../../config/logger')(_0x9bc2('0x7'));var config=require('../../config/environment');var jayson=require(_0x9bc2('0x8'));var client=jayson[_0x9bc2('0x9')][_0x9bc2('0xa')]({'port':0x232a});config[_0x9bc2('0xb')]=_['defaults'](config['redis'],{'host':_0x9bc2('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9bc2('0xb')]));require(_0x9bc2('0xd'))[_0x9bc2('0xe')](socket);function respondWithRpcPromise(_0xad4853,_0x43dfd5,_0x56dede){return new BPromise(function(_0x2e379b,_0x34bed4){return client[_0x9bc2('0xf')](_0xad4853,_0x56dede)[_0x9bc2('0x10')](function(_0x85e262){logger[_0x9bc2('0x11')]('SmsMessage,\x20%s,\x20%s',_0x43dfd5,_0x9bc2('0x12'));logger['debug'](_0x9bc2('0x13'),_0x43dfd5,_0x9bc2('0x12'),JSON[_0x9bc2('0x14')](_0x85e262));if(_0x85e262[_0x9bc2('0x15')]){if(_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x16')]===0x1f4){logger[_0x9bc2('0x15')]('SmsMessage,\x20%s,\x20%s',_0x43dfd5,_0x85e262['error'][_0x9bc2('0x17')]);return _0x34bed4(_0x85e262['error'][_0x9bc2('0x17')]);}logger['error'](_0x9bc2('0x18'),_0x43dfd5,_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x17')]);return _0x2e379b(_0x85e262[_0x9bc2('0x15')][_0x9bc2('0x17')]);}else{logger[_0x9bc2('0x11')](_0x9bc2('0x18'),_0x43dfd5,_0x9bc2('0x12'));_0x2e379b(_0x85e262[_0x9bc2('0x19')][_0x9bc2('0x17')]);}})[_0x9bc2('0x1a')](function(_0x43ebd0){logger[_0x9bc2('0x15')](_0x9bc2('0x18'),_0x43dfd5,_0x43ebd0);_0x34bed4(_0x43ebd0);});});}exports[_0x9bc2('0x1b')]=function(_0x43a241){var _0x322f78=this;return new Promise(function(_0x1c3438,_0x2ce58c){return db[_0x9bc2('0x1c')][_0x9bc2('0x1d')](_0x43a241['body'],{'raw':_0x43a241[_0x9bc2('0x1e')]?_0x43a241[_0x9bc2('0x1e')][_0x9bc2('0x1f')]===undefined?!![]:![]:!![]})[_0x9bc2('0x10')](function(_0x4e7e6c){logger['info'](_0x9bc2('0x1b'),_0x43a241);logger['debug'](_0x9bc2('0x1b'),_0x43a241,JSON['stringify'](_0x4e7e6c));_0x1c3438(_0x4e7e6c);})[_0x9bc2('0x1a')](function(_0x617640){logger['error'](_0x9bc2('0x1b'),_0x617640[_0x9bc2('0x17')],_0x43a241);_0x2ce58c(_0x322f78[_0x9bc2('0x15')](0x1f4,_0x617640[_0x9bc2('0x17')]));});});};
\ No newline at end of file
+var _0x6d81=['create','options','stringify','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','defaults','redis','socket.io-emitter','./smsMessage.socket','register','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateSmsMessage'];(function(_0xf35bc1,_0x510803){var _0xa6b162=function(_0x1e5cc8){while(--_0x1e5cc8){_0xf35bc1['push'](_0xf35bc1['shift']());}};_0xa6b162(++_0x510803);}(_0x6d81,0xbd));var _0x16d8=function(_0x2c4c61,_0x370b0b){_0x2c4c61=_0x2c4c61-0x0;var _0x1fb248=_0x6d81[_0x2c4c61];return _0x1fb248;};'use strict';var _=require(_0x16d8('0x0'));var util=require(_0x16d8('0x1'));var moment=require(_0x16d8('0x2'));var BPromise=require(_0x16d8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x16d8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x16d8('0x5'));var logger=require(_0x16d8('0x6'))('rpc');var config=require(_0x16d8('0x7'));var jayson=require(_0x16d8('0x8'));var client=jayson[_0x16d8('0x9')]['http']({'port':0x232a});config['redis']=_[_0x16d8('0xa')](config[_0x16d8('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x16d8('0xc'))(new Redis(config[_0x16d8('0xb')]));require(_0x16d8('0xd'))[_0x16d8('0xe')](socket);function respondWithRpcPromise(_0x22c423,_0x273c20,_0x2a6f7f){return new BPromise(function(_0x3d1189,_0x26f6ae){return client[_0x16d8('0xf')](_0x22c423,_0x2a6f7f)[_0x16d8('0x10')](function(_0x3448fb){logger['info'](_0x16d8('0x11'),_0x273c20,_0x16d8('0x12'));logger[_0x16d8('0x13')](_0x16d8('0x14'),_0x273c20,_0x16d8('0x12'),JSON['stringify'](_0x3448fb));if(_0x3448fb['error']){if(_0x3448fb[_0x16d8('0x15')][_0x16d8('0x16')]===0x1f4){logger['error'](_0x16d8('0x11'),_0x273c20,_0x3448fb[_0x16d8('0x15')][_0x16d8('0x17')]);return _0x26f6ae(_0x3448fb[_0x16d8('0x15')][_0x16d8('0x17')]);}logger[_0x16d8('0x15')](_0x16d8('0x11'),_0x273c20,_0x3448fb[_0x16d8('0x15')][_0x16d8('0x17')]);return _0x3d1189(_0x3448fb[_0x16d8('0x15')][_0x16d8('0x17')]);}else{logger[_0x16d8('0x18')](_0x16d8('0x11'),_0x273c20,_0x16d8('0x12'));_0x3d1189(_0x3448fb[_0x16d8('0x19')][_0x16d8('0x17')]);}})[_0x16d8('0x1a')](function(_0x225117){logger[_0x16d8('0x15')](_0x16d8('0x11'),_0x273c20,_0x225117);_0x26f6ae(_0x225117);});});}exports[_0x16d8('0x1b')]=function(_0x5d8df5){var _0x2b5944=this;return new Promise(function(_0x541277,_0x1466d3){return db['SmsMessage'][_0x16d8('0x1c')](_0x5d8df5['body'],{'raw':_0x5d8df5[_0x16d8('0x1d')]?_0x5d8df5['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x22683d){logger[_0x16d8('0x18')](_0x16d8('0x1b'),_0x5d8df5);logger['debug'](_0x16d8('0x1b'),_0x5d8df5,JSON[_0x16d8('0x1e')](_0x22683d));_0x541277(_0x22683d);})[_0x16d8('0x1a')](function(_0x430753){logger[_0x16d8('0x15')]('CreateSmsMessage',_0x430753[_0x16d8('0x17')],_0x5d8df5);_0x1466d3(_0x2b5944[_0x16d8('0x15')](0x1f4,_0x430753[_0x16d8('0x17')]));});});};
\ No newline at end of file
index e140b14..e84af7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ce=['length','smsMessage:','save','update','emit','register'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0xa1ce,0xfe));var _0xea1c=function(_0x3b033c,_0x1a8656){_0x3b033c=_0x3b033c-0x0;var _0xa50790=_0xa1ce[_0x3b033c];return _0xa50790;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xea1c('0x0'),'remove',_0xea1c('0x1')];function createListener(_0x1234ca,_0x24ae30){return function(_0x4926a5){_0x24ae30[_0xea1c('0x2')](_0x1234ca,_0x4926a5);};}function removeListener(_0x330b5b,_0x28b749){return function(){SmsMessageEvents['removeListener'](_0x330b5b,_0x28b749);};}exports[_0xea1c('0x3')]=function(_0x3a695d){for(var _0x3c01d9=0x0,_0x49025c=events[_0xea1c('0x4')];_0x3c01d9<_0x49025c;_0x3c01d9++){var _0x3a8b20=events[_0x3c01d9];var _0x1c585d=createListener(_0xea1c('0x5')+_0x3a8b20,_0x3a695d);SmsMessageEvents['on'](_0x3a8b20,_0x1c585d);}};
\ No newline at end of file
+var _0x80e2=['register','length','smsMessage:','./smsMessage.events','save','remove','emit','removeListener'];(function(_0x1a57d1,_0x4281ff){var _0x394876=function(_0x268ec9){while(--_0x268ec9){_0x1a57d1['push'](_0x1a57d1['shift']());}};_0x394876(++_0x4281ff);}(_0x80e2,0x73));var _0x280e=function(_0x5311a1,_0x304912){_0x5311a1=_0x5311a1-0x0;var _0x2acb9f=_0x80e2[_0x5311a1];return _0x2acb9f;};'use strict';var SmsMessageEvents=require(_0x280e('0x0'));var events=[_0x280e('0x1'),_0x280e('0x2'),'update'];function createListener(_0x48032e,_0x2d892a){return function(_0x58250b){_0x2d892a[_0x280e('0x3')](_0x48032e,_0x58250b);};}function removeListener(_0x3fd2dd,_0x149be4){return function(){SmsMessageEvents[_0x280e('0x4')](_0x3fd2dd,_0x149be4);};}exports[_0x280e('0x5')]=function(_0x339098){for(var _0x3e7341=0x0,_0x2259b0=events[_0x280e('0x6')];_0x3e7341<_0x2259b0;_0x3e7341++){var _0x214149=events[_0x3e7341];var _0x584e74=createListener(_0x280e('0x7')+_0x214149,_0x339098);SmsMessageEvents['on'](_0x214149,_0x584e74);}};
\ No newline at end of file
index f2df5c7..32fd364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b6b=['../../components/interaction/service','../../config/environment','./smsQueue.controller','isAuthenticated','index','get','describe','/:id','show','/:id/members','/:id/teams','getAgents','post','addAgents','update','delete','removeTeams','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x3b6b,0xf4));var _0xb3b6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3b6b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xb3b6('0x0'));var util=require(_0xb3b6('0x1'));var path=require(_0xb3b6('0x2'));var timeout=require(_0xb3b6('0x3'));var express=require(_0xb3b6('0x4'));var router=express[_0xb3b6('0x5')]();var fs_extra=require(_0xb3b6('0x6'));var auth=require(_0xb3b6('0x7'));var interaction=require(_0xb3b6('0x8'));var config=require(_0xb3b6('0x9'));var controller=require(_0xb3b6('0xa'));router['get']('/',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0xc')]);router[_0xb3b6('0xd')]('/describe',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0xe')]);router[_0xb3b6('0xd')](_0xb3b6('0xf'),auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x10')]);router['get'](_0xb3b6('0x11'),auth['isAuthenticated'](),controller['getMembers']);router[_0xb3b6('0xd')](_0xb3b6('0x12'),auth['isAuthenticated'](),controller['getTeams']);router[_0xb3b6('0xd')]('/:id/users',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x13')]);router[_0xb3b6('0x14')]('/',auth[_0xb3b6('0xb')](),controller['create']);router['post'](_0xb3b6('0x12'),auth[_0xb3b6('0xb')](),controller['addTeams']);router[_0xb3b6('0x14')]('/:id/users',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x15')]);router['put']('/:id',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x16')]);router['delete'](_0xb3b6('0xf'),auth['isAuthenticated'](),controller['destroy']);router[_0xb3b6('0x17')]('/:id/teams',auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x18')]);router[_0xb3b6('0x17')](_0xb3b6('0x19'),auth[_0xb3b6('0xb')](),controller[_0xb3b6('0x1a')]);module[_0xb3b6('0x1b')]=router;
\ No newline at end of file
+var _0x7c48=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','describe','/:id','getMembers','getTeams','/:id/users','post','create','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','path','connect-timeout','express'];(function(_0x1a2a9c,_0x804553){var _0x2a1666=function(_0x183368){while(--_0x183368){_0x1a2a9c['push'](_0x1a2a9c['shift']());}};_0x2a1666(++_0x804553);}(_0x7c48,0xcd));var _0x87c4=function(_0x5f41ae,_0x44627c){_0x5f41ae=_0x5f41ae-0x0;var _0x1c1823=_0x7c48[_0x5f41ae];return _0x1c1823;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x87c4('0x0'));var timeout=require(_0x87c4('0x1'));var express=require(_0x87c4('0x2'));var router=express[_0x87c4('0x3')]();var fs_extra=require(_0x87c4('0x4'));var auth=require(_0x87c4('0x5'));var interaction=require(_0x87c4('0x6'));var config=require(_0x87c4('0x7'));var controller=require(_0x87c4('0x8'));router[_0x87c4('0x9')]('/',auth[_0x87c4('0xa')](),controller['index']);router[_0x87c4('0x9')]('/describe',auth[_0x87c4('0xa')](),controller[_0x87c4('0xb')]);router[_0x87c4('0x9')](_0x87c4('0xc'),auth[_0x87c4('0xa')](),controller['show']);router[_0x87c4('0x9')]('/:id/members',auth[_0x87c4('0xa')](),controller[_0x87c4('0xd')]);router[_0x87c4('0x9')]('/:id/teams',auth[_0x87c4('0xa')](),controller[_0x87c4('0xe')]);router[_0x87c4('0x9')](_0x87c4('0xf'),auth[_0x87c4('0xa')](),controller['getAgents']);router[_0x87c4('0x10')]('/',auth[_0x87c4('0xa')](),controller[_0x87c4('0x11')]);router[_0x87c4('0x10')](_0x87c4('0x12'),auth['isAuthenticated'](),controller[_0x87c4('0x13')]);router[_0x87c4('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0x87c4('0x14')]);router[_0x87c4('0x15')](_0x87c4('0xc'),auth[_0x87c4('0xa')](),controller[_0x87c4('0x16')]);router[_0x87c4('0x17')](_0x87c4('0xc'),auth[_0x87c4('0xa')](),controller[_0x87c4('0x18')]);router[_0x87c4('0x17')](_0x87c4('0x12'),auth[_0x87c4('0xa')](),controller[_0x87c4('0x19')]);router[_0x87c4('0x17')](_0x87c4('0xf'),auth[_0x87c4('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 14bb74f..8d34a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4843=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x211055,_0x336fe2){var _0x24b9c9=function(_0x2ea175){while(--_0x2ea175){_0x211055['push'](_0x211055['shift']());}};_0x24b9c9(++_0x336fe2);}(_0x4843,0x1e7));var _0x3484=function(_0x35e26c,_0x569962){_0x35e26c=_0x35e26c-0x0;var _0x4a6ebc=_0x4843[_0x35e26c];return _0x4a6ebc;};'use strict';var Sequelize=require(_0x3484('0x0'));module[_0x3484('0x1')]={'name':{'type':Sequelize[_0x3484('0x2')],'unique':_0x3484('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3484('0x2')]},'timeout':{'type':Sequelize[_0x3484('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x3484('0x5')](_0x3484('0x6'),_0x3484('0x7'),_0x3484('0x8'))}};
\ No newline at end of file
+var _0x5710=['name','STRING','INTEGER','ENUM','rrmemory','sequelize','exports'];(function(_0x3fa845,_0x4460a1){var _0xd72c41=function(_0x939948){while(--_0x939948){_0x3fa845['push'](_0x3fa845['shift']());}};_0xd72c41(++_0x4460a1);}(_0x5710,0x139));var _0x0571=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x5710[_0x1035c1];return _0x308d67;};'use strict';var Sequelize=require(_0x0571('0x0'));module[_0x0571('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x0571('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0571('0x3')]},'timeout':{'type':Sequelize[_0x0571('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0571('0x5')](_0x0571('0x6'),'beepall','roundrobin')}};
\ No newline at end of file
index d26d63b..3627022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd48=['fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','SmsQueueId','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','Team','addTeams','ids','voicePause','interface','flatMap','Agents','transaction','each','UserSmsQueue','forEach','emit','userSmsQueue:save','removeTeams','User','select','field','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','includes','all','union','compact','value','isEmpty','userSmsQueue:remove','addAgents','omit','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','SmsQueue','rawAttributes','fieldName','type','key','model','map','query','filters','intersection'];(function(_0x3c4f8d,_0x10e640){var _0x580018=function(_0x1bf85b){while(--_0x1bf85b){_0x3c4f8d['push'](_0x3c4f8d['shift']());}};_0x580018(++_0x10e640);}(_0xfd48,0xe7));var _0x8fd4=function(_0x3901e7,_0xd21064){_0x3901e7=_0x3901e7-0x0;var _0x2f71a0=_0xfd48[_0x3901e7];return _0x2f71a0;};'use strict';var emlformat=require(_0x8fd4('0x0'));var rimraf=require(_0x8fd4('0x1'));var zipdir=require(_0x8fd4('0x2'));var jsonpatch=require(_0x8fd4('0x3'));var rp=require(_0x8fd4('0x4'));var moment=require('moment');var BPromise=require(_0x8fd4('0x5'));var Mustache=require(_0x8fd4('0x6'));var util=require('util');var path=require(_0x8fd4('0x7'));var sox=require('sox');var csv=require(_0x8fd4('0x8'));var ejs=require(_0x8fd4('0x9'));var fs=require('fs');var fs_extra=require(_0x8fd4('0xa'));var _=require(_0x8fd4('0xb'));var squel=require(_0x8fd4('0xc'));var crypto=require(_0x8fd4('0xd'));var jsforce=require(_0x8fd4('0xe'));var deskjs=require(_0x8fd4('0xf'));var toCsv=require(_0x8fd4('0x8'));var querystring=require(_0x8fd4('0x10'));var Papa=require('papaparse');var Redis=require(_0x8fd4('0x11'));var authService=require(_0x8fd4('0x12'));var qs=require(_0x8fd4('0x13'));var as=require(_0x8fd4('0x14'));var hardwareService=require(_0x8fd4('0x15'));var logger=require(_0x8fd4('0x16'))('api');var utils=require(_0x8fd4('0x17'));var config=require(_0x8fd4('0x18'));var licenseUtil=require(_0x8fd4('0x19'));var db=require(_0x8fd4('0x1a'))['db'];config['redis']=_['defaults'](config[_0x8fd4('0x1b')],{'host':_0x8fd4('0x1c'),'port':0x18eb});var socket=require(_0x8fd4('0x1d'))(new Redis(config['redis']));require(_0x8fd4('0x1e'))[_0x8fd4('0x1f')](socket);function respondWithStatusCode(_0x5867d4,_0x303295){_0x303295=_0x303295||0xcc;return function(_0xf957be){if(_0xf957be){return _0x5867d4[_0x8fd4('0x20')](_0x303295);}return _0x5867d4['status'](_0x303295)[_0x8fd4('0x21')]();};}function respondWithResult(_0x4ea012,_0x30af05){_0x30af05=_0x30af05||0xc8;return function(_0x449430){if(_0x449430){return _0x4ea012[_0x8fd4('0x22')](_0x30af05)[_0x8fd4('0x23')](_0x449430);}};}function respondWithFilteredResult(_0x275a9f,_0x3a04d5){return function(_0x5dd897){if(_0x5dd897){var _0x2feded=typeof _0x3a04d5[_0x8fd4('0x24')]===_0x8fd4('0x25')&&typeof _0x3a04d5[_0x8fd4('0x26')]===_0x8fd4('0x25');var _0x55f13d=_0x5dd897[_0x8fd4('0x27')];var _0x2b0056=_0x2feded?0x0:_0x3a04d5['offset'];var _0x4728d5=_0x2feded?_0x5dd897['count']:_0x3a04d5[_0x8fd4('0x24')]+_0x3a04d5[_0x8fd4('0x26')];var _0x12bd62;if(_0x4728d5>=_0x55f13d){_0x4728d5=_0x55f13d;_0x12bd62=0xc8;}else{_0x12bd62=0xce;}_0x275a9f['status'](_0x12bd62);return _0x275a9f[_0x8fd4('0x28')](_0x8fd4('0x29'),_0x2b0056+'-'+_0x4728d5+'/'+_0x55f13d)[_0x8fd4('0x23')](_0x5dd897);}return null;};}function patchUpdates(_0xbe615e){return function(_0x22b885){try{jsonpatch[_0x8fd4('0x2a')](_0x22b885,_0xbe615e,!![]);}catch(_0x4e46f5){return BPromise[_0x8fd4('0x2b')](_0x4e46f5);}return _0x22b885[_0x8fd4('0x2c')]();};}function saveUpdates(_0xd6a0f3,_0x1c846f){return function(_0xa64fbd){if(_0xa64fbd){return _0xa64fbd[_0x8fd4('0x2d')](_0xd6a0f3)[_0x8fd4('0x2e')](function(_0x5b512d){return _0x5b512d;});}return null;};}function removeEntity(_0x3269a1,_0x4aa7d1){return function(_0x5dcd80){if(_0x5dcd80){return _0x5dcd80[_0x8fd4('0x2f')]()['then'](function(){var _0x44c923=_0x5dcd80[_0x8fd4('0x30')]({'plain':!![]});var _0x24a9be=_0x8fd4('0x31');return db[_0x8fd4('0x32')][_0x8fd4('0x2f')]({'where':{'type':_0x24a9be,'resourceId':_0x44c923['id']}})['then'](function(){return _0x5dcd80;});})[_0x8fd4('0x2e')](function(){_0x3269a1[_0x8fd4('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x193b34,_0x628458){return function(_0x475552){if(!_0x475552){_0x193b34[_0x8fd4('0x20')](0x194);}return _0x475552;};}function handleError(_0x35110b,_0x36ce82){_0x36ce82=_0x36ce82||0x1f4;return function(_0x5661a5){logger[_0x8fd4('0x33')](_0x5661a5[_0x8fd4('0x34')]);if(_0x5661a5[_0x8fd4('0x35')]){delete _0x5661a5[_0x8fd4('0x35')];}_0x35110b[_0x8fd4('0x22')](_0x36ce82)[_0x8fd4('0x36')](_0x5661a5);};}exports['index']=function(_0x17ae3c,_0x44d444){var _0x370455={},_0x14ca67={},_0x54c154={'count':0x0,'rows':[]};var _0x4511e8=_['map'](db[_0x8fd4('0x37')][_0x8fd4('0x38')],function(_0x3b5f8f){return{'name':_0x3b5f8f[_0x8fd4('0x39')],'type':_0x3b5f8f[_0x8fd4('0x3a')][_0x8fd4('0x3b')]};});_0x14ca67[_0x8fd4('0x3c')]=_[_0x8fd4('0x3d')](_0x4511e8,'name');_0x14ca67[_0x8fd4('0x3e')]=_['keys'](_0x17ae3c[_0x8fd4('0x3e')]);_0x14ca67[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0x14ca67[_0x8fd4('0x3c')],_0x14ca67[_0x8fd4('0x3e')]);_0x370455['attributes']=_[_0x8fd4('0x40')](_0x14ca67['model'],qs['fields'](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x370455['attributes']=_0x370455['attributes']['length']?_0x370455[_0x8fd4('0x42')]:_0x14ca67[_0x8fd4('0x3c')];if(!_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x370455[_0x8fd4('0x26')]=qs[_0x8fd4('0x26')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x370455[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}_0x370455[_0x8fd4('0x45')]=qs[_0x8fd4('0x46')](_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x46')]);_0x370455['where']=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x17ae3c['query'],_0x14ca67[_0x8fd4('0x3f')]),_0x4511e8);if(_0x17ae3c[_0x8fd4('0x3e')]['filter']){_0x370455[_0x8fd4('0x48')]=_['merge'](_0x370455[_0x8fd4('0x48')],{'$or':_['map'](_0x4511e8,function(_0x291de8){if(_0x291de8[_0x8fd4('0x3a')]!=='VIRTUAL'){var _0x33b53f={};_0x33b53f[_0x291de8['name']]={'$like':'%'+_0x17ae3c[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x33b53f;}})});}_0x370455=_[_0x8fd4('0x4a')]({},_0x370455,_0x17ae3c[_0x8fd4('0x4b')]);var _0x2af2bd={'where':_0x370455[_0x8fd4('0x48')]};return db[_0x8fd4('0x37')][_0x8fd4('0x27')](_0x2af2bd)['then'](function(_0x56f8f8){_0x54c154[_0x8fd4('0x27')]=_0x56f8f8;if(_0x17ae3c['query'][_0x8fd4('0x4c')]){_0x370455[_0x8fd4('0x4d')]=[{'all':!![]}];}return db[_0x8fd4('0x37')][_0x8fd4('0x4e')](_0x370455);})[_0x8fd4('0x2e')](function(_0x4ded1d){_0x54c154[_0x8fd4('0x4f')]=_0x4ded1d;return _0x54c154;})['then'](respondWithFilteredResult(_0x44d444,_0x370455))[_0x8fd4('0x50')](handleError(_0x44d444,null));};exports[_0x8fd4('0x51')]=function(_0x179d0f,_0x1c5f30){var _0x3eb83a={'raw':!![],'where':{'id':_0x179d0f['params']['id']}},_0xcc8230={};_0xcc8230['model']=_[_0x8fd4('0x52')](db[_0x8fd4('0x37')][_0x8fd4('0x38')]);_0xcc8230[_0x8fd4('0x3e')]=_[_0x8fd4('0x52')](_0x179d0f[_0x8fd4('0x3e')]);_0xcc8230[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0xcc8230[_0x8fd4('0x3c')],_0xcc8230[_0x8fd4('0x3e')]);_0x3eb83a[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0xcc8230[_0x8fd4('0x3c')],qs[_0x8fd4('0x41')](_0x179d0f['query'][_0x8fd4('0x41')]));_0x3eb83a[_0x8fd4('0x42')]=_0x3eb83a[_0x8fd4('0x42')][_0x8fd4('0x53')]?_0x3eb83a[_0x8fd4('0x42')]:_0xcc8230[_0x8fd4('0x3c')];if(_0x179d0f['query']['includeAll']){_0x3eb83a[_0x8fd4('0x4d')]=[{'all':!![]}];}_0x3eb83a=_[_0x8fd4('0x4a')]({},_0x3eb83a,_0x179d0f[_0x8fd4('0x4b')]);return db[_0x8fd4('0x37')][_0x8fd4('0x54')](_0x3eb83a)['then'](handleEntityNotFound(_0x1c5f30,null))[_0x8fd4('0x2e')](respondWithResult(_0x1c5f30,null))[_0x8fd4('0x50')](handleError(_0x1c5f30,null));};exports[_0x8fd4('0x55')]=function(_0x523525,_0x44a003){return db[_0x8fd4('0x37')][_0x8fd4('0x55')](_0x523525['body'],{})[_0x8fd4('0x2e')](function(_0x505250){var _0x5bb0be=_0x523525[_0x8fd4('0x56')][_0x8fd4('0x30')]({'plain':!![]});if(!_0x5bb0be)throw new Error(_0x8fd4('0x57'));if(_0x5bb0be[_0x8fd4('0x58')]==='user'){var _0x389c14=_0x505250[_0x8fd4('0x30')]({'plain':!![]});var _0x1d2ca2=_0x8fd4('0x31');return db[_0x8fd4('0x59')][_0x8fd4('0x54')]({'where':{'name':_0x1d2ca2,'userProfileId':_0x5bb0be['userProfileId']},'raw':!![]})['then'](function(_0x3cf6aa){if(_0x3cf6aa&&_0x3cf6aa[_0x8fd4('0x5a')]===0x0){return db[_0x8fd4('0x32')]['create']({'name':_0x389c14[_0x8fd4('0x35')],'resourceId':_0x389c14['id'],'type':_0x3cf6aa['name'],'sectionId':_0x3cf6aa['id']},{})[_0x8fd4('0x2e')](function(){return _0x505250;});}else{return _0x505250;}})['catch'](function(_0x2812d2){logger[_0x8fd4('0x33')](_0x8fd4('0x5b'),_0x2812d2);throw _0x2812d2;});}return _0x505250;})[_0x8fd4('0x2e')](respondWithResult(_0x44a003,0xc9))[_0x8fd4('0x50')](handleError(_0x44a003,null));};exports[_0x8fd4('0x2d')]=function(_0x49e867,_0x1b57a7){if(_0x49e867[_0x8fd4('0x5c')]['id']){delete _0x49e867[_0x8fd4('0x5c')]['id'];}return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x49e867[_0x8fd4('0x5d')]['id']}})['then'](handleEntityNotFound(_0x1b57a7,null))['then'](saveUpdates(_0x49e867['body'],null))[_0x8fd4('0x2e')](respondWithResult(_0x1b57a7,null))[_0x8fd4('0x50')](handleError(_0x1b57a7,null));};exports[_0x8fd4('0x2f')]=function(_0x59de80,_0x4f2f83){return db['SmsQueue'][_0x8fd4('0x54')]({'where':{'id':_0x59de80['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x4f2f83,null))[_0x8fd4('0x2e')](removeEntity(_0x4f2f83,null))[_0x8fd4('0x50')](handleError(_0x4f2f83,null));};exports[_0x8fd4('0x5e')]=function(_0x2ac49e,_0x12343b){return db[_0x8fd4('0x37')][_0x8fd4('0x5e')]()[_0x8fd4('0x2e')](respondWithResult(_0x12343b,null))[_0x8fd4('0x50')](handleError(_0x12343b,null));};exports[_0x8fd4('0x5f')]=function(_0x363128,_0x4e900b,_0x22c36c){var _0x509377={'raw':!![],'where':{}},_0x142e6a={},_0x381ec5;return db[_0x8fd4('0x37')][_0x8fd4('0x60')]({'where':{'id':_0x363128[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x4e900b,null))['then'](function(_0x2e7f26){if(_0x2e7f26){_0x381ec5=_0x2e7f26[_0x8fd4('0x30')]({'plain':!![]});_0x142e6a[_0x8fd4('0x3c')]=_['keys'](db['UserSmsQueue']['rawAttributes']);_0x142e6a['query']=_[_0x8fd4('0x52')](_0x363128['query']);_0x142e6a['filters']=_[_0x8fd4('0x40')](_0x142e6a[_0x8fd4('0x3c')],_0x142e6a[_0x8fd4('0x3e')]);_0x509377['attributes']=_['intersection'](_0x142e6a[_0x8fd4('0x3c')],qs[_0x8fd4('0x41')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x509377['attributes']=_0x509377[_0x8fd4('0x42')]['length']?_0x509377['attributes']:_0x142e6a[_0x8fd4('0x3c')];if(!_0x363128['query'][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x509377['limit']=qs[_0x8fd4('0x26')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x509377['offset']=qs[_0x8fd4('0x24')](_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}_0x509377['order']=qs[_0x8fd4('0x46')](_0x363128['query'][_0x8fd4('0x46')]);_0x509377[_0x8fd4('0x48')]=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x363128[_0x8fd4('0x3e')],_0x142e6a[_0x8fd4('0x3f')]));_0x509377[_0x8fd4('0x48')][_0x8fd4('0x61')]=_0x2e7f26['id'];if(_0x363128['query']['filter']){_0x509377[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x509377[_0x8fd4('0x48')],{'$or':_[_0x8fd4('0x3d')](_0x509377['attributes'],function(_0x154d43){var _0x59384f={};_0x59384f[_0x154d43]={'$like':'%'+_0x363128[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x59384f;})});}_0x509377=_[_0x8fd4('0x4a')]({},_0x509377,_0x363128['options']);return db['UserSmsQueue'][_0x8fd4('0x4e')](_0x509377);}})[_0x8fd4('0x2e')](function(_0x55d1e2){if(_0x55d1e2){return db['User']['findAndCountAll']({'where':{'id':_[_0x8fd4('0x3d')](_0x55d1e2,_0x8fd4('0x62')),'role':_0x8fd4('0x63')},'attributes':['id','name','smsPause',_0x8fd4('0x64'),_0x8fd4('0x65')]});}})[_0x8fd4('0x2e')](function(_0x55fd7b){if(_0x55fd7b){return{'count':_0x55fd7b['count'],'rows':_[_0x8fd4('0x3d')](_0x55fd7b['rows'],function(_0x463d94){return{'membername':_0x463d94[_0x8fd4('0x35')],'UserId':_0x463d94['id'],'queue_name':_0x381ec5[_0x8fd4('0x35')],'SmsQueueId':_0x381ec5['id'],'interface':util[_0x8fd4('0x66')](_0x8fd4('0x67'),_0x8fd4('0x68'),_0x463d94[_0x8fd4('0x35')]),'penalty':0x0,'paused':_0x463d94[_0x8fd4('0x69')],'createdAt':_0x463d94[_0x8fd4('0x65')],'updatedAt':_0x463d94['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4e900b,_0x509377))[_0x8fd4('0x50')](handleError(_0x4e900b,null));};exports[_0x8fd4('0x6a')]=function(_0x12e953,_0x3892aa,_0x526ff6){var _0x5cb3f8={};var _0x3f2e21={};var _0x102e3e;var _0x2190ff;return db[_0x8fd4('0x37')][_0x8fd4('0x60')]({'where':{'id':_0x12e953['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x3892aa,null))[_0x8fd4('0x2e')](function(_0x231f18){if(_0x231f18){_0x102e3e=_0x231f18;_0x3f2e21[_0x8fd4('0x3c')]=_['keys'](db[_0x8fd4('0x6b')][_0x8fd4('0x38')]);_0x3f2e21[_0x8fd4('0x3e')]=_['keys'](_0x12e953[_0x8fd4('0x3e')]);_0x3f2e21['filters']=_[_0x8fd4('0x40')](_0x3f2e21['model'],_0x3f2e21[_0x8fd4('0x3e')]);_0x5cb3f8[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0x3f2e21[_0x8fd4('0x3c')],qs['fields'](_0x12e953['query'][_0x8fd4('0x41')]));_0x5cb3f8[_0x8fd4('0x42')]=_0x5cb3f8[_0x8fd4('0x42')][_0x8fd4('0x53')]?_0x5cb3f8[_0x8fd4('0x42')]:_0x3f2e21[_0x8fd4('0x3c')];_0x5cb3f8[_0x8fd4('0x45')]=qs[_0x8fd4('0x46')](_0x12e953['query']['sort']);_0x5cb3f8[_0x8fd4('0x48')]=qs[_0x8fd4('0x3f')](_[_0x8fd4('0x47')](_0x12e953[_0x8fd4('0x3e')],_0x3f2e21[_0x8fd4('0x3f')]));if(_0x12e953[_0x8fd4('0x3e')][_0x8fd4('0x49')]){_0x5cb3f8[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x5cb3f8[_0x8fd4('0x48')],{'$or':_['map'](_0x5cb3f8['attributes'],function(_0x1a089e){var _0x17ca89={};_0x17ca89[_0x1a089e]={'$like':'%'+_0x12e953[_0x8fd4('0x3e')][_0x8fd4('0x49')]+'%'};return _0x17ca89;})});}_0x5cb3f8=_[_0x8fd4('0x4a')]({},_0x5cb3f8,_0x12e953['options']);return _0x102e3e[_0x8fd4('0x6a')](_0x5cb3f8);}})[_0x8fd4('0x2e')](function(_0x134b77){if(_0x134b77){_0x2190ff=_0x134b77['length'];if(!_0x12e953['query'][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x5cb3f8['limit']=qs[_0x8fd4('0x26')](_0x12e953[_0x8fd4('0x3e')]['limit']);_0x5cb3f8[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x12e953['query'][_0x8fd4('0x24')]);}return _0x102e3e[_0x8fd4('0x6a')](_0x5cb3f8);}})['then'](function(_0x382f75){if(_0x382f75){return _0x382f75?{'count':_0x2190ff,'rows':_0x382f75}:null;}})['then'](respondWithResult(_0x3892aa,null))[_0x8fd4('0x50')](handleError(_0x3892aa,null));};exports[_0x8fd4('0x6c')]=function(_0x4714d9,_0x999e09,_0x4b5ba6){var _0x37983a=_0x4714d9[_0x8fd4('0x5c')][_0x8fd4('0x6d')];return db['Team']['findAll']({'where':{'id':_0x37983a},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x8fd4('0x35'),'online',_0x8fd4('0x6e'),_0x8fd4('0x6f')],'raw':!![]}]})[_0x8fd4('0x2e')](function(_0x482cc5){if(_0x482cc5){var _0x240894=_[_0x8fd4('0x70')](_0x482cc5,function(_0x3953fd){var _0x31fb83=_0x3953fd[_0x8fd4('0x30')]({'plain':!![]});return _0x31fb83[_0x8fd4('0x71')];});return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x4714d9['params']['id']}})[_0x8fd4('0x2e')](function(_0x536d3d){return db['sequelize'][_0x8fd4('0x72')](function(_0x38e436){return _0x536d3d[_0x8fd4('0x6c')](_0x37983a,{'transaction':_0x38e436})[_0x8fd4('0x2e')](function(){return BPromise[_0x8fd4('0x73')](_0x240894,function(_0x354201){return db[_0x8fd4('0x74')]['findOrCreate']({'where':{'UserId':_0x354201['id'],'SmsQueueId':_0x4714d9[_0x8fd4('0x5d')]['id']},'transaction':_0x38e436});});})[_0x8fd4('0x2e')](function(){_0x240894[_0x8fd4('0x75')](function(_0x2ca3fe){socket[_0x8fd4('0x76')](_0x8fd4('0x77'),{'UserId':_0x2ca3fe['id'],'SmsQueueId':_0x536d3d['id']});});});});});}})['then'](respondWithStatusCode(_0x999e09,null))[_0x8fd4('0x50')](handleError(_0x999e09,null));};exports[_0x8fd4('0x78')]=function(_0x5b29fc,_0x477efa,_0x429999){return db['Team'][_0x8fd4('0x4e')]({'where':{'id':_0x5b29fc[_0x8fd4('0x3e')][_0x8fd4('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x8fd4('0x79')],'as':_0x8fd4('0x71'),'attributes':['id'],'raw':!![]}]})[_0x8fd4('0x2e')](handleEntityNotFound(_0x477efa,null))[_0x8fd4('0x2e')](function(_0x143630){var _0x4b7cfc=_[_0x8fd4('0x3d')](_0x143630,'id');var _0x5b0da3=[];var _0x31ae23=[];var _0x3275ea=squel[_0x8fd4('0x7a')]();_0x3275ea[_0x8fd4('0x7b')]('tq.TeamId')[_0x8fd4('0x7c')](_0x8fd4('0x7d'),'tq')[_0x8fd4('0x7e')](_0x8fd4('0x7f'),'ut',_0x8fd4('0x80'))[_0x8fd4('0x48')](_0x8fd4('0x81'),_0x5b29fc['params']['id']);for(var _0x1a59ca=0x0;_0x1a59ca<_0x143630[_0x8fd4('0x53')];_0x1a59ca+=0x1){let _0xddd442=_0x143630[_0x1a59ca];for(var _0x2e098b=0x0;_0x2e098b<_0xddd442[_0x8fd4('0x71')][_0x8fd4('0x53')];_0x2e098b+=0x1){let _0x23c074=_0xddd442['Agents'][_0x2e098b];var _0x12d307=_0x3275ea[_0x8fd4('0x82')]();_0x12d307[_0x8fd4('0x48')](_0x8fd4('0x83'),_0x23c074['id']);_0x31ae23[_0x8fd4('0x84')](db[_0x8fd4('0x85')]['query'](_0x12d307[_0x8fd4('0x86')](),{'type':db[_0x8fd4('0x85')]['QueryTypes'][_0x8fd4('0x87')]})['then'](function(_0xc4ef36){if(_0xc4ef36[_0x8fd4('0x53')]===0x1){return _0x23c074['id'];}else{var _0xc35134=_[_0x8fd4('0x88')](_[_0x8fd4('0x3d')](_0xc4ef36,'TeamId'),function(_0x2bcb4d){return _[_0x8fd4('0x89')](_0x4b7cfc,_0x2bcb4d);});if(_0xc35134){return _0x23c074['id'];}}}));}}return BPromise[_0x8fd4('0x8a')](_0x31ae23)['then'](function(_0xe2b5e0){_0x5b0da3=_(_0x5b0da3)[_0x8fd4('0x8b')](_0xe2b5e0)[_0x8fd4('0x8c')]()[_0x8fd4('0x8d')]();return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x5b29fc[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](function(_0x26c9d1){return db[_0x8fd4('0x85')]['transaction'](function(_0x1d2b10){return _0x26c9d1[_0x8fd4('0x78')](_0x5b29fc[_0x8fd4('0x3e')][_0x8fd4('0x6d')],{'transaction':_0x1d2b10})[_0x8fd4('0x2e')](function(){if(!_[_0x8fd4('0x8e')](_0x5b0da3)){return _0x26c9d1['removeAgents'](_0x5b0da3,{'transaction':_0x1d2b10});}})[_0x8fd4('0x2e')](function(){_0x5b0da3[_0x8fd4('0x75')](function(_0x9b7654){socket[_0x8fd4('0x76')](_0x8fd4('0x8f'),{'UserId':_0x9b7654,'SmsQueueId':_0x26c9d1['id']});});});});});});})['then'](respondWithStatusCode(_0x477efa,null))['catch'](handleError(_0x477efa,null));};exports[_0x8fd4('0x90')]=function(_0x5f501a,_0xa49eb5,_0x2e9d81){return db[_0x8fd4('0x37')][_0x8fd4('0x54')]({'where':{'id':_0x5f501a['params']['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0xa49eb5,null))['then'](function(_0x2f0cff){if(_0x2f0cff){return _0x2f0cff[_0x8fd4('0x90')](_0x5f501a['body'][_0x8fd4('0x6d')],_[_0x8fd4('0x91')](_0x5f501a[_0x8fd4('0x5c')],['ids','id'])||{})['spread'](function(_0x273ce0){for(var _0x2092c9=0x0;_0x2092c9<_0x5f501a[_0x8fd4('0x5c')][_0x8fd4('0x6d')][_0x8fd4('0x53')];_0x2092c9+=0x1){socket[_0x8fd4('0x76')](_0x8fd4('0x77'),{'UserId':Number(_0x5f501a[_0x8fd4('0x5c')][_0x8fd4('0x6d')][_0x2092c9]),'SmsQueueId':Number(_0x5f501a[_0x8fd4('0x5d')]['id'])});}return _0x273ce0;});}})['then'](respondWithResult(_0xa49eb5,null))['catch'](handleError(_0xa49eb5,null));};exports['removeAgents']=function(_0x22d3c3,_0x2cf682,_0x1d6ed7){return db[_0x8fd4('0x37')]['find']({'where':{'id':_0x22d3c3[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0x2cf682,null))[_0x8fd4('0x2e')](function(_0x5a9529){if(_0x5a9529){return _0x5a9529[_0x8fd4('0x92')](_0x22d3c3['query']['ids'])['then'](function(){if(_['isArray'](_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')])){for(var _0x497fed=0x0;_0x497fed<_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')][_0x8fd4('0x53')];_0x497fed+=0x1){socket['emit'](_0x8fd4('0x8f'),{'UserId':Number(_0x22d3c3[_0x8fd4('0x3e')][_0x8fd4('0x6d')][_0x497fed]),'SmsQueueId':Number(_0x22d3c3[_0x8fd4('0x5d')]['id'])});}}else{socket[_0x8fd4('0x76')]('userSmsQueue:remove',{'UserId':Number(_0x22d3c3['query'][_0x8fd4('0x6d')]),'SmsQueueId':Number(_0x22d3c3[_0x8fd4('0x5d')]['id'])});}});}})[_0x8fd4('0x2e')](respondWithStatusCode(_0x2cf682,null))[_0x8fd4('0x50')](handleError(_0x2cf682,null));};exports[_0x8fd4('0x93')]=function(_0x514ff5,_0xee39f0,_0x501656){var _0x2acc56={};var _0x388c7a={};var _0x42b61e;var _0x47dce5;return db['SmsQueue'][_0x8fd4('0x60')]({'where':{'id':_0x514ff5[_0x8fd4('0x5d')]['id']}})[_0x8fd4('0x2e')](handleEntityNotFound(_0xee39f0,null))['then'](function(_0x15a555){if(_0x15a555){_0x42b61e=_0x15a555;_0x388c7a[_0x8fd4('0x3c')]=_[_0x8fd4('0x52')](db[_0x8fd4('0x79')]['rawAttributes']);_0x388c7a[_0x8fd4('0x3e')]=_[_0x8fd4('0x52')](_0x514ff5[_0x8fd4('0x3e')]);_0x388c7a[_0x8fd4('0x3f')]=_[_0x8fd4('0x40')](_0x388c7a['model'],_0x388c7a[_0x8fd4('0x3e')]);_0x2acc56[_0x8fd4('0x42')]=_[_0x8fd4('0x40')](_0x388c7a['model'],qs['fields'](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x41')]));_0x2acc56['attributes']=_0x2acc56[_0x8fd4('0x42')]['length']?_0x2acc56['attributes']:_0x388c7a['model'];_0x2acc56['order']=qs[_0x8fd4('0x46')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x46')]);_0x2acc56[_0x8fd4('0x48')]=qs['filters'](_[_0x8fd4('0x47')](_0x514ff5[_0x8fd4('0x3e')],_0x388c7a['filters']));if(_0x514ff5[_0x8fd4('0x3e')]['filter']){_0x2acc56[_0x8fd4('0x48')]=_[_0x8fd4('0x4a')](_0x2acc56[_0x8fd4('0x48')],{'$or':_[_0x8fd4('0x3d')](_0x2acc56[_0x8fd4('0x42')],function(_0x30b507){var _0x52bc78={};_0x52bc78[_0x30b507]={'$like':'%'+_0x514ff5['query'][_0x8fd4('0x49')]+'%'};return _0x52bc78;})});}_0x2acc56=_['merge']({},_0x2acc56,_0x514ff5[_0x8fd4('0x4b')]);return _0x42b61e['getAgents'](_0x2acc56);}})[_0x8fd4('0x2e')](function(_0x4589b0){if(_0x4589b0){_0x47dce5=_0x4589b0[_0x8fd4('0x53')];if(!_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x43')](_0x8fd4('0x44'))){_0x2acc56[_0x8fd4('0x26')]=qs[_0x8fd4('0x26')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x26')]);_0x2acc56[_0x8fd4('0x24')]=qs[_0x8fd4('0x24')](_0x514ff5[_0x8fd4('0x3e')][_0x8fd4('0x24')]);}return _0x42b61e[_0x8fd4('0x93')](_0x2acc56);}})[_0x8fd4('0x2e')](function(_0x14da31){if(_0x14da31){return _0x14da31?{'count':_0x47dce5,'rows':_0x14da31}:null;}})['then'](respondWithResult(_0xee39f0,null))[_0x8fd4('0x50')](handleError(_0xee39f0,null));};
\ No newline at end of file
+var _0xdb9a=['rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','describe','getMembers','findOne','UserSmsQueue','User','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','select','field','from','user_has_teams','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','isArray','getAgents','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','end','status','json','undefined','limit','count','offset','set','apply','save','then','get','SmsQueues','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','SmsQueue','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys'];(function(_0x2169d2,_0x2f0c71){var _0x364e79=function(_0x16a32a){while(--_0x16a32a){_0x2169d2['push'](_0x2169d2['shift']());}};_0x364e79(++_0x2f0c71);}(_0xdb9a,0xce));var _0xadb9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdb9a[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xadb9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xadb9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xadb9('0x2'));var moment=require(_0xadb9('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xadb9('0x4'));var path=require(_0xadb9('0x5'));var sox=require(_0xadb9('0x6'));var csv=require(_0xadb9('0x7'));var ejs=require(_0xadb9('0x8'));var fs=require('fs');var fs_extra=require(_0xadb9('0x9'));var _=require(_0xadb9('0xa'));var squel=require(_0xadb9('0xb'));var crypto=require('crypto');var jsforce=require(_0xadb9('0xc'));var deskjs=require(_0xadb9('0xd'));var toCsv=require(_0xadb9('0x7'));var querystring=require(_0xadb9('0xe'));var Papa=require(_0xadb9('0xf'));var Redis=require('ioredis');var authService=require(_0xadb9('0x10'));var qs=require(_0xadb9('0x11'));var as=require(_0xadb9('0x12'));var hardwareService=require(_0xadb9('0x13'));var logger=require(_0xadb9('0x14'))(_0xadb9('0x15'));var utils=require(_0xadb9('0x16'));var config=require(_0xadb9('0x17'));var licenseUtil=require(_0xadb9('0x18'));var db=require(_0xadb9('0x19'))['db'];config['redis']=_[_0xadb9('0x1a')](config['redis'],{'host':_0xadb9('0x1b'),'port':0x18eb});var socket=require(_0xadb9('0x1c'))(new Redis(config['redis']));require(_0xadb9('0x1d'))[_0xadb9('0x1e')](socket);function respondWithStatusCode(_0x317e47,_0x4fdd03){_0x4fdd03=_0x4fdd03||0xcc;return function(_0x4252ee){if(_0x4252ee){return _0x317e47['sendStatus'](_0x4fdd03);}return _0x317e47['status'](_0x4fdd03)[_0xadb9('0x1f')]();};}function respondWithResult(_0xf9b577,_0x3a8237){_0x3a8237=_0x3a8237||0xc8;return function(_0x3ad6a1){if(_0x3ad6a1){return _0xf9b577[_0xadb9('0x20')](_0x3a8237)[_0xadb9('0x21')](_0x3ad6a1);}};}function respondWithFilteredResult(_0x580e52,_0xaccddd){return function(_0x247227){if(_0x247227){var _0x101f5b=typeof _0xaccddd['offset']===_0xadb9('0x22')&&typeof _0xaccddd[_0xadb9('0x23')]===_0xadb9('0x22');var _0x4330bb=_0x247227[_0xadb9('0x24')];var _0x26df30=_0x101f5b?0x0:_0xaccddd[_0xadb9('0x25')];var _0x17c6d3=_0x101f5b?_0x247227[_0xadb9('0x24')]:_0xaccddd[_0xadb9('0x25')]+_0xaccddd[_0xadb9('0x23')];var _0x3119ed;if(_0x17c6d3>=_0x4330bb){_0x17c6d3=_0x4330bb;_0x3119ed=0xc8;}else{_0x3119ed=0xce;}_0x580e52['status'](_0x3119ed);return _0x580e52[_0xadb9('0x26')]('Content-Range',_0x26df30+'-'+_0x17c6d3+'/'+_0x4330bb)[_0xadb9('0x21')](_0x247227);}return null;};}function patchUpdates(_0x5ec7cc){return function(_0x1496ba){try{jsonpatch[_0xadb9('0x27')](_0x1496ba,_0x5ec7cc,!![]);}catch(_0x566c8c){return BPromise['reject'](_0x566c8c);}return _0x1496ba[_0xadb9('0x28')]();};}function saveUpdates(_0x3b5d2c,_0x37c08e){return function(_0xed155){if(_0xed155){return _0xed155['update'](_0x3b5d2c)[_0xadb9('0x29')](function(_0x413756){return _0x413756;});}return null;};}function removeEntity(_0x1f61bb,_0x5ac6e3){return function(_0x139762){if(_0x139762){return _0x139762['destroy']()[_0xadb9('0x29')](function(){var _0xfbd858=_0x139762[_0xadb9('0x2a')]({'plain':!![]});var _0x569520=_0xadb9('0x2b');return db[_0xadb9('0x2c')][_0xadb9('0x2d')]({'where':{'type':_0x569520,'resourceId':_0xfbd858['id']}})[_0xadb9('0x29')](function(){return _0x139762;});})[_0xadb9('0x29')](function(){_0x1f61bb[_0xadb9('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a05ac,_0x483146){return function(_0x4c8def){if(!_0x4c8def){_0x1a05ac[_0xadb9('0x2e')](0x194);}return _0x4c8def;};}function handleError(_0x3f5ca3,_0x5783ce){_0x5783ce=_0x5783ce||0x1f4;return function(_0x51fe34){logger[_0xadb9('0x2f')](_0x51fe34[_0xadb9('0x30')]);if(_0x51fe34[_0xadb9('0x31')]){delete _0x51fe34[_0xadb9('0x31')];}_0x3f5ca3[_0xadb9('0x20')](_0x5783ce)[_0xadb9('0x32')](_0x51fe34);};}exports[_0xadb9('0x33')]=function(_0x5d5af4,_0x31e4ee){var _0x593dc3={},_0x235abb={},_0x10ada4={'count':0x0,'rows':[]};var _0x42ea9b=_[_0xadb9('0x34')](db[_0xadb9('0x35')]['rawAttributes'],function(_0x5777b5){return{'name':_0x5777b5[_0xadb9('0x36')],'type':_0x5777b5[_0xadb9('0x37')][_0xadb9('0x38')]};});_0x235abb[_0xadb9('0x39')]=_['map'](_0x42ea9b,_0xadb9('0x31'));_0x235abb[_0xadb9('0x3a')]=_['keys'](_0x5d5af4[_0xadb9('0x3a')]);_0x235abb['filters']=_[_0xadb9('0x3b')](_0x235abb[_0xadb9('0x39')],_0x235abb[_0xadb9('0x3a')]);_0x593dc3[_0xadb9('0x3c')]=_[_0xadb9('0x3b')](_0x235abb['model'],qs[_0xadb9('0x3d')](_0x5d5af4[_0xadb9('0x3a')]['fields']));_0x593dc3[_0xadb9('0x3c')]=_0x593dc3[_0xadb9('0x3c')][_0xadb9('0x3e')]?_0x593dc3[_0xadb9('0x3c')]:_0x235abb['model'];if(!_0x5d5af4['query'][_0xadb9('0x3f')](_0xadb9('0x40'))){_0x593dc3[_0xadb9('0x23')]=qs[_0xadb9('0x23')](_0x5d5af4[_0xadb9('0x3a')][_0xadb9('0x23')]);_0x593dc3[_0xadb9('0x25')]=qs[_0xadb9('0x25')](_0x5d5af4[_0xadb9('0x3a')]['offset']);}_0x593dc3[_0xadb9('0x41')]=qs[_0xadb9('0x42')](_0x5d5af4[_0xadb9('0x3a')]['sort']);_0x593dc3[_0xadb9('0x43')]=qs[_0xadb9('0x44')](_[_0xadb9('0x45')](_0x5d5af4['query'],_0x235abb[_0xadb9('0x44')]),_0x42ea9b);if(_0x5d5af4['query'][_0xadb9('0x46')]){_0x593dc3[_0xadb9('0x43')]=_['merge'](_0x593dc3[_0xadb9('0x43')],{'$or':_[_0xadb9('0x34')](_0x42ea9b,function(_0x4c39fe){if(_0x4c39fe[_0xadb9('0x37')]!==_0xadb9('0x47')){var _0x561587={};_0x561587[_0x4c39fe['name']]={'$like':'%'+_0x5d5af4[_0xadb9('0x3a')]['filter']+'%'};return _0x561587;}})});}_0x593dc3=_[_0xadb9('0x48')]({},_0x593dc3,_0x5d5af4[_0xadb9('0x49')]);var _0x5bfac2={'where':_0x593dc3[_0xadb9('0x43')]};return db[_0xadb9('0x35')][_0xadb9('0x24')](_0x5bfac2)[_0xadb9('0x29')](function(_0x113b47){_0x10ada4[_0xadb9('0x24')]=_0x113b47;if(_0x5d5af4['query'][_0xadb9('0x4a')]){_0x593dc3[_0xadb9('0x4b')]=[{'all':!![]}];}return db[_0xadb9('0x35')][_0xadb9('0x4c')](_0x593dc3);})[_0xadb9('0x29')](function(_0x356729){_0x10ada4[_0xadb9('0x4d')]=_0x356729;return _0x10ada4;})[_0xadb9('0x29')](respondWithFilteredResult(_0x31e4ee,_0x593dc3))[_0xadb9('0x4e')](handleError(_0x31e4ee,null));};exports[_0xadb9('0x4f')]=function(_0xd86f2d,_0x33d329){var _0xcc31c={'raw':!![],'where':{'id':_0xd86f2d[_0xadb9('0x50')]['id']}},_0x28f138={};_0x28f138[_0xadb9('0x39')]=_[_0xadb9('0x51')](db[_0xadb9('0x35')][_0xadb9('0x52')]);_0x28f138[_0xadb9('0x3a')]=_[_0xadb9('0x51')](_0xd86f2d['query']);_0x28f138[_0xadb9('0x44')]=_[_0xadb9('0x3b')](_0x28f138[_0xadb9('0x39')],_0x28f138[_0xadb9('0x3a')]);_0xcc31c[_0xadb9('0x3c')]=_[_0xadb9('0x3b')](_0x28f138[_0xadb9('0x39')],qs[_0xadb9('0x3d')](_0xd86f2d[_0xadb9('0x3a')][_0xadb9('0x3d')]));_0xcc31c[_0xadb9('0x3c')]=_0xcc31c[_0xadb9('0x3c')][_0xadb9('0x3e')]?_0xcc31c[_0xadb9('0x3c')]:_0x28f138[_0xadb9('0x39')];if(_0xd86f2d[_0xadb9('0x3a')][_0xadb9('0x4a')]){_0xcc31c[_0xadb9('0x4b')]=[{'all':!![]}];}_0xcc31c=_[_0xadb9('0x48')]({},_0xcc31c,_0xd86f2d[_0xadb9('0x49')]);return db['SmsQueue'][_0xadb9('0x53')](_0xcc31c)[_0xadb9('0x29')](handleEntityNotFound(_0x33d329,null))[_0xadb9('0x29')](respondWithResult(_0x33d329,null))[_0xadb9('0x4e')](handleError(_0x33d329,null));};exports[_0xadb9('0x54')]=function(_0x2810e8,_0x387c1e){return db[_0xadb9('0x35')][_0xadb9('0x54')](_0x2810e8[_0xadb9('0x55')],{})[_0xadb9('0x29')](function(_0x17b2e3){var _0x2f5a2d=_0x2810e8[_0xadb9('0x56')]['get']({'plain':!![]});if(!_0x2f5a2d)throw new Error(_0xadb9('0x57'));if(_0x2f5a2d[_0xadb9('0x58')]===_0xadb9('0x56')){var _0xcbb40f=_0x17b2e3[_0xadb9('0x2a')]({'plain':!![]});var _0x4c1c23='SmsQueues';return db[_0xadb9('0x59')][_0xadb9('0x53')]({'where':{'name':_0x4c1c23,'userProfileId':_0x2f5a2d[_0xadb9('0x5a')]},'raw':!![]})[_0xadb9('0x29')](function(_0x563813){if(_0x563813&&_0x563813[_0xadb9('0x5b')]===0x0){return db[_0xadb9('0x2c')]['create']({'name':_0xcbb40f[_0xadb9('0x31')],'resourceId':_0xcbb40f['id'],'type':_0x563813[_0xadb9('0x31')],'sectionId':_0x563813['id']},{})[_0xadb9('0x29')](function(){return _0x17b2e3;});}else{return _0x17b2e3;}})[_0xadb9('0x4e')](function(_0x2f9df8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f9df8);throw _0x2f9df8;});}return _0x17b2e3;})['then'](respondWithResult(_0x387c1e,0xc9))[_0xadb9('0x4e')](handleError(_0x387c1e,null));};exports[_0xadb9('0x5c')]=function(_0x2b8863,_0x208234){if(_0x2b8863['body']['id']){delete _0x2b8863[_0xadb9('0x55')]['id'];}return db[_0xadb9('0x35')]['find']({'where':{'id':_0x2b8863[_0xadb9('0x50')]['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x208234,null))['then'](saveUpdates(_0x2b8863['body'],null))[_0xadb9('0x29')](respondWithResult(_0x208234,null))[_0xadb9('0x4e')](handleError(_0x208234,null));};exports['destroy']=function(_0x1deca8,_0x5d60d1){return db[_0xadb9('0x35')][_0xadb9('0x53')]({'where':{'id':_0x1deca8['params']['id']}})['then'](handleEntityNotFound(_0x5d60d1,null))[_0xadb9('0x29')](removeEntity(_0x5d60d1,null))[_0xadb9('0x4e')](handleError(_0x5d60d1,null));};exports[_0xadb9('0x5d')]=function(_0x156762,_0x470fcd){return db['SmsQueue']['describe']()['then'](respondWithResult(_0x470fcd,null))[_0xadb9('0x4e')](handleError(_0x470fcd,null));};exports[_0xadb9('0x5e')]=function(_0x55a2ac,_0x482d94,_0x1e4490){var _0x6ac48a={'raw':!![],'where':{}},_0x534b26={},_0x5aa08d;return db[_0xadb9('0x35')][_0xadb9('0x5f')]({'where':{'id':_0x55a2ac['params']['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x482d94,null))[_0xadb9('0x29')](function(_0x3e5f00){if(_0x3e5f00){_0x5aa08d=_0x3e5f00[_0xadb9('0x2a')]({'plain':!![]});_0x534b26[_0xadb9('0x39')]=_[_0xadb9('0x51')](db[_0xadb9('0x60')][_0xadb9('0x52')]);_0x534b26[_0xadb9('0x3a')]=_[_0xadb9('0x51')](_0x55a2ac[_0xadb9('0x3a')]);_0x534b26[_0xadb9('0x44')]=_[_0xadb9('0x3b')](_0x534b26['model'],_0x534b26['query']);_0x6ac48a[_0xadb9('0x3c')]=_[_0xadb9('0x3b')](_0x534b26[_0xadb9('0x39')],qs[_0xadb9('0x3d')](_0x55a2ac[_0xadb9('0x3a')][_0xadb9('0x3d')]));_0x6ac48a[_0xadb9('0x3c')]=_0x6ac48a['attributes'][_0xadb9('0x3e')]?_0x6ac48a[_0xadb9('0x3c')]:_0x534b26['model'];if(!_0x55a2ac[_0xadb9('0x3a')][_0xadb9('0x3f')](_0xadb9('0x40'))){_0x6ac48a[_0xadb9('0x23')]=qs[_0xadb9('0x23')](_0x55a2ac['query'][_0xadb9('0x23')]);_0x6ac48a[_0xadb9('0x25')]=qs[_0xadb9('0x25')](_0x55a2ac['query']['offset']);}_0x6ac48a[_0xadb9('0x41')]=qs[_0xadb9('0x42')](_0x55a2ac[_0xadb9('0x3a')]['sort']);_0x6ac48a[_0xadb9('0x43')]=qs['filters'](_[_0xadb9('0x45')](_0x55a2ac[_0xadb9('0x3a')],_0x534b26[_0xadb9('0x44')]));_0x6ac48a[_0xadb9('0x43')]['SmsQueueId']=_0x3e5f00['id'];if(_0x55a2ac[_0xadb9('0x3a')][_0xadb9('0x46')]){_0x6ac48a[_0xadb9('0x43')]=_[_0xadb9('0x48')](_0x6ac48a['where'],{'$or':_['map'](_0x6ac48a[_0xadb9('0x3c')],function(_0x4ba177){var _0x3de403={};_0x3de403[_0x4ba177]={'$like':'%'+_0x55a2ac['query'][_0xadb9('0x46')]+'%'};return _0x3de403;})});}_0x6ac48a=_['merge']({},_0x6ac48a,_0x55a2ac[_0xadb9('0x49')]);return db[_0xadb9('0x60')]['findAll'](_0x6ac48a);}})[_0xadb9('0x29')](function(_0x4eec30){if(_0x4eec30){return db[_0xadb9('0x61')]['findAndCountAll']({'where':{'id':_[_0xadb9('0x34')](_0x4eec30,_0xadb9('0x62')),'role':_0xadb9('0x63')},'attributes':['id',_0xadb9('0x31'),'smsPause',_0xadb9('0x64'),_0xadb9('0x65')]});}})[_0xadb9('0x29')](function(_0x5b075d){if(_0x5b075d){return{'count':_0x5b075d[_0xadb9('0x24')],'rows':_[_0xadb9('0x34')](_0x5b075d[_0xadb9('0x4d')],function(_0x451fca){return{'membername':_0x451fca[_0xadb9('0x31')],'UserId':_0x451fca['id'],'queue_name':_0x5aa08d['name'],'SmsQueueId':_0x5aa08d['id'],'interface':util[_0xadb9('0x66')](_0xadb9('0x67'),_0xadb9('0x68'),_0x451fca['name']),'penalty':0x0,'paused':_0x451fca[_0xadb9('0x69')],'createdAt':_0x451fca[_0xadb9('0x65')],'updatedAt':_0x451fca[_0xadb9('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x482d94,_0x6ac48a))[_0xadb9('0x4e')](handleError(_0x482d94,null));};exports[_0xadb9('0x6a')]=function(_0x1dc3b6,_0x50ee6e,_0x398add){var _0x51789f={};var _0x37b4e1={};var _0x46ebb5;var _0x5aa493;return db[_0xadb9('0x35')]['findOne']({'where':{'id':_0x1dc3b6[_0xadb9('0x50')]['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x50ee6e,null))[_0xadb9('0x29')](function(_0x579c21){if(_0x579c21){_0x46ebb5=_0x579c21;_0x37b4e1[_0xadb9('0x39')]=_[_0xadb9('0x51')](db[_0xadb9('0x6b')][_0xadb9('0x52')]);_0x37b4e1['query']=_[_0xadb9('0x51')](_0x1dc3b6['query']);_0x37b4e1[_0xadb9('0x44')]=_['intersection'](_0x37b4e1[_0xadb9('0x39')],_0x37b4e1[_0xadb9('0x3a')]);_0x51789f[_0xadb9('0x3c')]=_[_0xadb9('0x3b')](_0x37b4e1[_0xadb9('0x39')],qs[_0xadb9('0x3d')](_0x1dc3b6[_0xadb9('0x3a')][_0xadb9('0x3d')]));_0x51789f[_0xadb9('0x3c')]=_0x51789f['attributes'][_0xadb9('0x3e')]?_0x51789f[_0xadb9('0x3c')]:_0x37b4e1[_0xadb9('0x39')];_0x51789f['order']=qs[_0xadb9('0x42')](_0x1dc3b6[_0xadb9('0x3a')]['sort']);_0x51789f['where']=qs['filters'](_[_0xadb9('0x45')](_0x1dc3b6['query'],_0x37b4e1[_0xadb9('0x44')]));if(_0x1dc3b6['query'][_0xadb9('0x46')]){_0x51789f[_0xadb9('0x43')]=_['merge'](_0x51789f['where'],{'$or':_[_0xadb9('0x34')](_0x51789f['attributes'],function(_0x4822e7){var _0x299157={};_0x299157[_0x4822e7]={'$like':'%'+_0x1dc3b6[_0xadb9('0x3a')]['filter']+'%'};return _0x299157;})});}_0x51789f=_['merge']({},_0x51789f,_0x1dc3b6[_0xadb9('0x49')]);return _0x46ebb5['getTeams'](_0x51789f);}})[_0xadb9('0x29')](function(_0xc884f9){if(_0xc884f9){_0x5aa493=_0xc884f9[_0xadb9('0x3e')];if(!_0x1dc3b6[_0xadb9('0x3a')][_0xadb9('0x3f')](_0xadb9('0x40'))){_0x51789f['limit']=qs[_0xadb9('0x23')](_0x1dc3b6['query']['limit']);_0x51789f[_0xadb9('0x25')]=qs[_0xadb9('0x25')](_0x1dc3b6[_0xadb9('0x3a')][_0xadb9('0x25')]);}return _0x46ebb5['getTeams'](_0x51789f);}})['then'](function(_0x22d45e){if(_0x22d45e){return _0x22d45e?{'count':_0x5aa493,'rows':_0x22d45e}:null;}})[_0xadb9('0x29')](respondWithResult(_0x50ee6e,null))[_0xadb9('0x4e')](handleError(_0x50ee6e,null));};exports[_0xadb9('0x6c')]=function(_0x1c0d86,_0x1e2c5c,_0x3c05f2){var _0x2b0b06=_0x1c0d86['body'][_0xadb9('0x6d')];return db[_0xadb9('0x6b')]['findAll']({'where':{'id':_0x2b0b06},'attributes':['id'],'include':[{'model':db[_0xadb9('0x61')],'as':_0xadb9('0x6e'),'attributes':['id',_0xadb9('0x31'),_0xadb9('0x6f'),_0xadb9('0x70'),_0xadb9('0x71')],'raw':!![]}]})[_0xadb9('0x29')](function(_0x19477c){if(_0x19477c){var _0x4ff224=_['flatMap'](_0x19477c,function(_0x39e073){var _0x3e0a1a=_0x39e073['get']({'plain':!![]});return _0x3e0a1a[_0xadb9('0x6e')];});return db[_0xadb9('0x35')][_0xadb9('0x53')]({'where':{'id':_0x1c0d86[_0xadb9('0x50')]['id']}})[_0xadb9('0x29')](function(_0x11faa4){return db[_0xadb9('0x72')][_0xadb9('0x73')](function(_0x3cb0c7){return _0x11faa4[_0xadb9('0x6c')](_0x2b0b06,{'transaction':_0x3cb0c7})['then'](function(){return BPromise[_0xadb9('0x74')](_0x4ff224,function(_0x193f40){return db[_0xadb9('0x60')][_0xadb9('0x75')]({'where':{'UserId':_0x193f40['id'],'SmsQueueId':_0x1c0d86[_0xadb9('0x50')]['id']},'transaction':_0x3cb0c7});});})[_0xadb9('0x29')](function(){_0x4ff224[_0xadb9('0x76')](function(_0x242dca){socket[_0xadb9('0x77')](_0xadb9('0x78'),{'UserId':_0x242dca['id'],'SmsQueueId':_0x11faa4['id']});});});});});}})[_0xadb9('0x29')](respondWithStatusCode(_0x1e2c5c,null))['catch'](handleError(_0x1e2c5c,null));};exports[_0xadb9('0x79')]=function(_0x4e0ae8,_0x366ae3,_0x3c25ca){return db[_0xadb9('0x6b')]['findAll']({'where':{'id':_0x4e0ae8[_0xadb9('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0xadb9('0x61')],'as':_0xadb9('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xadb9('0x29')](handleEntityNotFound(_0x366ae3,null))[_0xadb9('0x29')](function(_0x3ced03){var _0x435ddf=_['map'](_0x3ced03,'id');var _0x2286a8=[];var _0x192429=[];var _0xa133f9=squel[_0xadb9('0x7a')]();_0xa133f9[_0xadb9('0x7b')]('tq.TeamId')[_0xadb9('0x7c')]('team_has_sms_queues','tq')['join'](_0xadb9('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xadb9('0x43')](_0xadb9('0x7e'),_0x4e0ae8[_0xadb9('0x50')]['id']);for(var _0x21f2b4=0x0;_0x21f2b4<_0x3ced03[_0xadb9('0x3e')];_0x21f2b4+=0x1){let _0x1183ed=_0x3ced03[_0x21f2b4];for(var _0x3cd50b=0x0;_0x3cd50b<_0x1183ed['Agents'][_0xadb9('0x3e')];_0x3cd50b+=0x1){let _0x394704=_0x1183ed['Agents'][_0x3cd50b];var _0x5197e4=_0xa133f9['clone']();_0x5197e4[_0xadb9('0x43')](_0xadb9('0x7f'),_0x394704['id']);_0x192429['push'](db[_0xadb9('0x72')][_0xadb9('0x3a')](_0x5197e4[_0xadb9('0x80')](),{'type':db['sequelize'][_0xadb9('0x81')][_0xadb9('0x82')]})[_0xadb9('0x29')](function(_0x33e7f2){if(_0x33e7f2[_0xadb9('0x3e')]===0x1){return _0x394704['id'];}else{var _0x3aa8d6=_[_0xadb9('0x83')](_['map'](_0x33e7f2,_0xadb9('0x84')),function(_0x30f873){return _[_0xadb9('0x85')](_0x435ddf,_0x30f873);});if(_0x3aa8d6){return _0x394704['id'];}}}));}}return BPromise[_0xadb9('0x86')](_0x192429)[_0xadb9('0x29')](function(_0x26725f){_0x2286a8=_(_0x2286a8)['union'](_0x26725f)[_0xadb9('0x87')]()[_0xadb9('0x88')]();return db[_0xadb9('0x35')][_0xadb9('0x53')]({'where':{'id':_0x4e0ae8[_0xadb9('0x50')]['id']}})[_0xadb9('0x29')](function(_0xc48b05){return db['sequelize']['transaction'](function(_0x21db6f){return _0xc48b05['removeTeams'](_0x4e0ae8['query'][_0xadb9('0x6d')],{'transaction':_0x21db6f})[_0xadb9('0x29')](function(){if(!_[_0xadb9('0x89')](_0x2286a8)){return _0xc48b05[_0xadb9('0x8a')](_0x2286a8,{'transaction':_0x21db6f});}})[_0xadb9('0x29')](function(){_0x2286a8['forEach'](function(_0xc049e6){socket['emit'](_0xadb9('0x8b'),{'UserId':_0xc049e6,'SmsQueueId':_0xc48b05['id']});});});});});});})[_0xadb9('0x29')](respondWithStatusCode(_0x366ae3,null))[_0xadb9('0x4e')](handleError(_0x366ae3,null));};exports[_0xadb9('0x8c')]=function(_0x1a4bf3,_0x4a1b0d,_0x536e5e){return db['SmsQueue'][_0xadb9('0x53')]({'where':{'id':_0x1a4bf3['params']['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x4a1b0d,null))[_0xadb9('0x29')](function(_0x39caa5){if(_0x39caa5){return _0x39caa5[_0xadb9('0x8c')](_0x1a4bf3[_0xadb9('0x55')][_0xadb9('0x6d')],_[_0xadb9('0x8d')](_0x1a4bf3[_0xadb9('0x55')],[_0xadb9('0x6d'),'id'])||{})['spread'](function(_0xccd3a8){for(var _0x384b21=0x0;_0x384b21<_0x1a4bf3['body'][_0xadb9('0x6d')][_0xadb9('0x3e')];_0x384b21+=0x1){socket[_0xadb9('0x77')](_0xadb9('0x78'),{'UserId':Number(_0x1a4bf3[_0xadb9('0x55')][_0xadb9('0x6d')][_0x384b21]),'SmsQueueId':Number(_0x1a4bf3[_0xadb9('0x50')]['id'])});}return _0xccd3a8;});}})[_0xadb9('0x29')](respondWithResult(_0x4a1b0d,null))[_0xadb9('0x4e')](handleError(_0x4a1b0d,null));};exports[_0xadb9('0x8a')]=function(_0xbb06cd,_0x182f0e,_0x246c88){return db[_0xadb9('0x35')][_0xadb9('0x53')]({'where':{'id':_0xbb06cd['params']['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x182f0e,null))[_0xadb9('0x29')](function(_0x56fd51){if(_0x56fd51){return _0x56fd51['removeAgents'](_0xbb06cd['query'][_0xadb9('0x6d')])[_0xadb9('0x29')](function(){if(_[_0xadb9('0x8e')](_0xbb06cd['query'][_0xadb9('0x6d')])){for(var _0x539880=0x0;_0x539880<_0xbb06cd[_0xadb9('0x3a')]['ids'][_0xadb9('0x3e')];_0x539880+=0x1){socket[_0xadb9('0x77')](_0xadb9('0x8b'),{'UserId':Number(_0xbb06cd[_0xadb9('0x3a')][_0xadb9('0x6d')][_0x539880]),'SmsQueueId':Number(_0xbb06cd['params']['id'])});}}else{socket[_0xadb9('0x77')](_0xadb9('0x8b'),{'UserId':Number(_0xbb06cd[_0xadb9('0x3a')]['ids']),'SmsQueueId':Number(_0xbb06cd[_0xadb9('0x50')]['id'])});}});}})[_0xadb9('0x29')](respondWithStatusCode(_0x182f0e,null))[_0xadb9('0x4e')](handleError(_0x182f0e,null));};exports[_0xadb9('0x8f')]=function(_0x551980,_0x4fca2d,_0x31261b){var _0x1044f8={};var _0x37b09c={};var _0x127ee0;var _0x227cfc;return db['SmsQueue'][_0xadb9('0x5f')]({'where':{'id':_0x551980[_0xadb9('0x50')]['id']}})[_0xadb9('0x29')](handleEntityNotFound(_0x4fca2d,null))[_0xadb9('0x29')](function(_0x5eca03){if(_0x5eca03){_0x127ee0=_0x5eca03;_0x37b09c[_0xadb9('0x39')]=_[_0xadb9('0x51')](db[_0xadb9('0x61')][_0xadb9('0x52')]);_0x37b09c[_0xadb9('0x3a')]=_[_0xadb9('0x51')](_0x551980[_0xadb9('0x3a')]);_0x37b09c[_0xadb9('0x44')]=_[_0xadb9('0x3b')](_0x37b09c[_0xadb9('0x39')],_0x37b09c[_0xadb9('0x3a')]);_0x1044f8[_0xadb9('0x3c')]=_[_0xadb9('0x3b')](_0x37b09c[_0xadb9('0x39')],qs[_0xadb9('0x3d')](_0x551980[_0xadb9('0x3a')][_0xadb9('0x3d')]));_0x1044f8[_0xadb9('0x3c')]=_0x1044f8[_0xadb9('0x3c')][_0xadb9('0x3e')]?_0x1044f8[_0xadb9('0x3c')]:_0x37b09c[_0xadb9('0x39')];_0x1044f8[_0xadb9('0x41')]=qs[_0xadb9('0x42')](_0x551980['query'][_0xadb9('0x42')]);_0x1044f8[_0xadb9('0x43')]=qs[_0xadb9('0x44')](_[_0xadb9('0x45')](_0x551980['query'],_0x37b09c[_0xadb9('0x44')]));if(_0x551980[_0xadb9('0x3a')][_0xadb9('0x46')]){_0x1044f8[_0xadb9('0x43')]=_[_0xadb9('0x48')](_0x1044f8[_0xadb9('0x43')],{'$or':_['map'](_0x1044f8[_0xadb9('0x3c')],function(_0x333d40){var _0x3ecd69={};_0x3ecd69[_0x333d40]={'$like':'%'+_0x551980[_0xadb9('0x3a')][_0xadb9('0x46')]+'%'};return _0x3ecd69;})});}_0x1044f8=_['merge']({},_0x1044f8,_0x551980[_0xadb9('0x49')]);return _0x127ee0[_0xadb9('0x8f')](_0x1044f8);}})[_0xadb9('0x29')](function(_0x28afd0){if(_0x28afd0){_0x227cfc=_0x28afd0[_0xadb9('0x3e')];if(!_0x551980['query']['hasOwnProperty'](_0xadb9('0x40'))){_0x1044f8[_0xadb9('0x23')]=qs[_0xadb9('0x23')](_0x551980[_0xadb9('0x3a')]['limit']);_0x1044f8[_0xadb9('0x25')]=qs[_0xadb9('0x25')](_0x551980[_0xadb9('0x3a')][_0xadb9('0x25')]);}return _0x127ee0[_0xadb9('0x8f')](_0x1044f8);}})['then'](function(_0x1c7818){if(_0x1c7818){return _0x1c7818?{'count':_0x227cfc,'rows':_0x1c7818}:null;}})[_0xadb9('0x29')](respondWithResult(_0x4fca2d,null))['catch'](handleError(_0x4fca2d,null));};
\ No newline at end of file
index 169218e..4d58ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b30=['update','emit','../../mysqldb','SmsQueue','setMaxListeners'];(function(_0x443b1e,_0xf7ffe9){var _0x3beb6f=function(_0x1cd133){while(--_0x1cd133){_0x443b1e['push'](_0x443b1e['shift']());}};_0x3beb6f(++_0xf7ffe9);}(_0x2b30,0x10b));var _0x02b3=function(_0x23c949,_0x1c73b5){_0x23c949=_0x23c949-0x0;var _0x26562c=_0x2b30[_0x23c949];return _0x26562c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x02b3('0x0'))['db'][_0x02b3('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x02b3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x02b3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x311a69){return function(_0x384eff,_0x1f33e4,_0x58ff03){SmsQueueEvents[_0x02b3('0x4')](_0x311a69+':'+_0x384eff['id'],_0x384eff);SmsQueueEvents[_0x02b3('0x4')](_0x311a69,_0x384eff);_0x58ff03(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x1758=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','../../mysqldb','SmsQueue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1758,0x1c0));var _0x8175=function(_0x1f5fc2,_0x544ab5){_0x1f5fc2=_0x1f5fc2-0x0;var _0x3ec932=_0x1758[_0x1f5fc2];return _0x3ec932;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x8175('0x0'))['db'][_0x8175('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x8175('0x2')](0x0);var events={'afterCreate':_0x8175('0x3'),'afterUpdate':_0x8175('0x4'),'afterDestroy':_0x8175('0x5')};function emitEvent(_0x302360){return function(_0x392f7a,_0x3151e3,_0x3542f2){SmsQueueEvents[_0x8175('0x6')](_0x302360+':'+_0x392f7a['id'],_0x392f7a);SmsQueueEvents[_0x8175('0x6')](_0x302360,_0x392f7a);_0x3542f2(null);};}for(var e in events){if(events[_0x8175('0x7')](e)){var event=events[e];SmsQueue[_0x8175('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 5c041ac..d0a7394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e46=['sms_queues','lodash','util','../../config/logger','api','moment','bluebird','./smsQueue.attributes','define'];(function(_0x1c21cc,_0x322a71){var _0x7af1cb=function(_0x192183){while(--_0x192183){_0x1c21cc['push'](_0x1c21cc['shift']());}};_0x7af1cb(++_0x322a71);}(_0x6e46,0xbe));var _0x66e4=function(_0x196e2e,_0x522e03){_0x196e2e=_0x196e2e-0x0;var _0x59eee3=_0x6e46[_0x196e2e];return _0x59eee3;};'use strict';var _=require(_0x66e4('0x0'));var util=require(_0x66e4('0x1'));var logger=require(_0x66e4('0x2'))(_0x66e4('0x3'));var moment=require(_0x66e4('0x4'));var BPromise=require(_0x66e4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x66e4('0x6'));module['exports']=function(_0x43f4ce,_0x5f8906){return _0x43f4ce[_0x66e4('0x7')]('SmsQueue',attributes,{'tableName':_0x66e4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ccb=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','SmsQueue','sms_queues'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x5ccb,0x1a0));var _0xb5cc=function(_0x282ccc,_0x5d66a1){_0x282ccc=_0x282ccc-0x0;var _0x27c2dd=_0x5ccb[_0x282ccc];return _0x27c2dd;};'use strict';var _=require(_0xb5cc('0x0'));var util=require(_0xb5cc('0x1'));var logger=require(_0xb5cc('0x2'))(_0xb5cc('0x3'));var moment=require(_0xb5cc('0x4'));var BPromise=require(_0xb5cc('0x5'));var rp=require(_0xb5cc('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb5cc('0x7'));var config=require(_0xb5cc('0x8'));var attributes=require('./smsQueue.attributes');module[_0xb5cc('0x9')]=function(_0x3120f3,_0x4554bf){return _0x3120f3[_0xb5cc('0xa')](_0xb5cc('0xb'),attributes,{'tableName':_0xb5cc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d541aec..d9c7335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x544b=['SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','raw','where','attributes','limit','map','include','model','info','GetSmsQueue','ShowSmsQueue','SmsQueue','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then'];(function(_0x254f73,_0x532104){var _0x472f28=function(_0xb7065){while(--_0xb7065){_0x254f73['push'](_0x254f73['shift']());}};_0x472f28(++_0x532104);}(_0x544b,0x1c5));var _0xb544=function(_0x1150ae,_0x2c3f00){_0x1150ae=_0x1150ae-0x0;var _0x40af23=_0x544b[_0x1150ae];return _0x40af23;};'use strict';var _=require(_0xb544('0x0'));var util=require(_0xb544('0x1'));var moment=require(_0xb544('0x2'));var BPromise=require(_0xb544('0x3'));var rs=require(_0xb544('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb544('0x5'))['db'];var utils=require(_0xb544('0x6'));var logger=require(_0xb544('0x7'))(_0xb544('0x8'));var config=require(_0xb544('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb544('0xa')][_0xb544('0xb')]({'port':0x232a});config[_0xb544('0xc')]=_[_0xb544('0xd')](config[_0xb544('0xc')],{'host':_0xb544('0xe'),'port':0x18eb});var socket=require(_0xb544('0xf'))(new Redis(config[_0xb544('0xc')]));require(_0xb544('0x10'))[_0xb544('0x11')](socket);function respondWithRpcPromise(_0x2da605,_0x4c84ac,_0x16aa77){return new BPromise(function(_0x12f37d,_0x596cc7){return client[_0xb544('0x12')](_0x2da605,_0x16aa77)[_0xb544('0x13')](function(_0x4b174c){logger['info'](_0xb544('0x14'),_0x4c84ac,_0xb544('0x15'));logger[_0xb544('0x16')](_0xb544('0x17'),_0x4c84ac,_0xb544('0x15'),JSON[_0xb544('0x18')](_0x4b174c));if(_0x4b174c[_0xb544('0x19')]){if(_0x4b174c['error'][_0xb544('0x1a')]===0x1f4){logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4b174c[_0xb544('0x19')]['message']);return _0x596cc7(_0x4b174c[_0xb544('0x19')][_0xb544('0x1b')]);}logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4b174c[_0xb544('0x19')]['message']);return _0x12f37d(_0x4b174c['error'][_0xb544('0x1b')]);}else{logger['info'](_0xb544('0x14'),_0x4c84ac,'request\x20sent');_0x12f37d(_0x4b174c['result']['message']);}})[_0xb544('0x1c')](function(_0x4ba730){logger[_0xb544('0x19')](_0xb544('0x14'),_0x4c84ac,_0x4ba730);_0x596cc7(_0x4ba730);});});}exports['GetSmsQueue']=function(_0xc50bd){var _0x32bea5=this;return new Promise(function(_0x1ecc7d,_0x4b024e){return db['SmsQueue'][_0xb544('0x1d')]({'raw':_0xc50bd[_0xb544('0x1e')]?_0xc50bd['options'][_0xb544('0x1f')]===undefined?!![]:![]:!![],'where':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x20')]||null:null,'attributes':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x21')]||null:null,'limit':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')][_0xb544('0x22')]||null:null,'include':_0xc50bd[_0xb544('0x1e')]?_0xc50bd[_0xb544('0x1e')]['include']?_[_0xb544('0x23')](_0xc50bd[_0xb544('0x1e')][_0xb544('0x24')],function(_0x17afbb){return{'model':db[_0x17afbb['model']],'as':_0x17afbb['as'],'attributes':_0x17afbb[_0xb544('0x21')],'include':_0x17afbb[_0xb544('0x24')]?_[_0xb544('0x23')](_0x17afbb[_0xb544('0x24')],function(_0x469b54){return{'model':db[_0x469b54[_0xb544('0x25')]],'as':_0x469b54['as'],'attributes':_0x469b54['attributes'],'include':_0x469b54[_0xb544('0x24')]?_[_0xb544('0x23')](_0x469b54[_0xb544('0x24')],function(_0x1d8959){return{'model':db[_0x1d8959[_0xb544('0x25')]],'as':_0x1d8959['as'],'attributes':_0x1d8959[_0xb544('0x21')]};}):[]};}):[]};}):[]:[]})[_0xb544('0x13')](function(_0x4dc33e){logger[_0xb544('0x26')](_0xb544('0x27'),_0xc50bd);logger[_0xb544('0x16')](_0xb544('0x27'),_0xc50bd,JSON[_0xb544('0x18')](_0x4dc33e));_0x1ecc7d(_0x4dc33e);})[_0xb544('0x1c')](function(_0x4b9545){logger['error'](_0xb544('0x27'),_0x4b9545[_0xb544('0x1b')],_0xc50bd);_0x4b024e(_0x32bea5[_0xb544('0x19')](0x1f4,_0x4b9545[_0xb544('0x1b')]));});});};exports[_0xb544('0x28')]=function(_0x15c140){var _0x1c735a=this;return new Promise(function(_0x159017,_0x15664e){return db[_0xb544('0x29')][_0xb544('0x2a')]({'raw':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x1f')]===undefined?!![]:![]:!![],'where':_0x15c140[_0xb544('0x1e')]?_0x15c140['options'][_0xb544('0x20')]||null:null,'attributes':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x21')]||null:null,'include':_0x15c140[_0xb544('0x1e')]?_0x15c140[_0xb544('0x1e')][_0xb544('0x24')]?_[_0xb544('0x23')](_0x15c140[_0xb544('0x1e')][_0xb544('0x24')],function(_0x775ae7){return{'model':db[_0x775ae7['model']],'as':_0x775ae7['as'],'attributes':_0x775ae7[_0xb544('0x21')],'include':_0x775ae7['include']?_['map'](_0x775ae7[_0xb544('0x24')],function(_0x36388d){return{'model':db[_0x36388d[_0xb544('0x25')]],'as':_0x36388d['as'],'attributes':_0x36388d[_0xb544('0x21')],'include':_0x36388d['include']?_[_0xb544('0x23')](_0x36388d[_0xb544('0x24')],function(_0x3feb7d){return{'model':db[_0x3feb7d['model']],'as':_0x3feb7d['as'],'attributes':_0x3feb7d['attributes']};}):[]};}):[]};}):[]:[]})[_0xb544('0x13')](function(_0x311537){logger[_0xb544('0x26')](_0xb544('0x28'),_0x15c140);logger[_0xb544('0x16')]('ShowSmsQueue',_0x15c140,JSON[_0xb544('0x18')](_0x311537));_0x159017(_0x311537);})['catch'](function(_0x132d24){logger[_0xb544('0x19')](_0xb544('0x28'),_0x132d24[_0xb544('0x1b')],_0x15c140);_0x15664e(_0x1c735a[_0xb544('0x19')](0x1f4,_0x132d24[_0xb544('0x1b')]));});});};
\ No newline at end of file
+var _0x3711=['options','raw','attributes','limit','include','map','model','find','where','ShowSmsQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSmsQueue','SmsQueue','findAll'];(function(_0x35b195,_0x8893d5){var _0x2433bf=function(_0x22be07){while(--_0x22be07){_0x35b195['push'](_0x35b195['shift']());}};_0x2433bf(++_0x8893d5);}(_0x3711,0xfa));var _0x1371=function(_0x3b6184,_0x508c69){_0x3b6184=_0x3b6184-0x0;var _0x2d51fa=_0x3711[_0x3b6184];return _0x2d51fa;};'use strict';var _=require('lodash');var util=require(_0x1371('0x0'));var moment=require(_0x1371('0x1'));var BPromise=require(_0x1371('0x2'));var rs=require(_0x1371('0x3'));var fs=require('fs');var Redis=require(_0x1371('0x4'));var db=require(_0x1371('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1371('0x6'))(_0x1371('0x7'));var config=require(_0x1371('0x8'));var jayson=require(_0x1371('0x9'));var client=jayson[_0x1371('0xa')][_0x1371('0xb')]({'port':0x232a});config[_0x1371('0xc')]=_['defaults'](config[_0x1371('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x1371('0xd'))(new Redis(config[_0x1371('0xc')]));require('./smsQueue.socket')[_0x1371('0xe')](socket);function respondWithRpcPromise(_0x5bb64a,_0x43bf87,_0x457059){return new BPromise(function(_0x59e20a,_0x228bb3){return client[_0x1371('0xf')](_0x5bb64a,_0x457059)[_0x1371('0x10')](function(_0x25fad7){logger['info'](_0x1371('0x11'),_0x43bf87,_0x1371('0x12'));logger[_0x1371('0x13')](_0x1371('0x14'),_0x43bf87,_0x1371('0x12'),JSON[_0x1371('0x15')](_0x25fad7));if(_0x25fad7[_0x1371('0x16')]){if(_0x25fad7[_0x1371('0x16')][_0x1371('0x17')]===0x1f4){logger['error'](_0x1371('0x11'),_0x43bf87,_0x25fad7[_0x1371('0x16')][_0x1371('0x18')]);return _0x228bb3(_0x25fad7[_0x1371('0x16')][_0x1371('0x18')]);}logger[_0x1371('0x16')](_0x1371('0x11'),_0x43bf87,_0x25fad7['error'][_0x1371('0x18')]);return _0x59e20a(_0x25fad7[_0x1371('0x16')][_0x1371('0x18')]);}else{logger['info'](_0x1371('0x11'),_0x43bf87,_0x1371('0x12'));_0x59e20a(_0x25fad7[_0x1371('0x19')][_0x1371('0x18')]);}})[_0x1371('0x1a')](function(_0x38d6ff){logger[_0x1371('0x16')](_0x1371('0x11'),_0x43bf87,_0x38d6ff);_0x228bb3(_0x38d6ff);});});}exports[_0x1371('0x1b')]=function(_0x566f42){var _0x3ed810=this;return new Promise(function(_0x4717a5,_0x115131){return db[_0x1371('0x1c')][_0x1371('0x1d')]({'raw':_0x566f42[_0x1371('0x1e')]?_0x566f42[_0x1371('0x1e')][_0x1371('0x1f')]===undefined?!![]:![]:!![],'where':_0x566f42[_0x1371('0x1e')]?_0x566f42['options']['where']||null:null,'attributes':_0x566f42['options']?_0x566f42[_0x1371('0x1e')][_0x1371('0x20')]||null:null,'limit':_0x566f42[_0x1371('0x1e')]?_0x566f42['options'][_0x1371('0x21')]||null:null,'include':_0x566f42[_0x1371('0x1e')]?_0x566f42[_0x1371('0x1e')][_0x1371('0x22')]?_[_0x1371('0x23')](_0x566f42['options']['include'],function(_0x3c40c6){return{'model':db[_0x3c40c6[_0x1371('0x24')]],'as':_0x3c40c6['as'],'attributes':_0x3c40c6['attributes'],'include':_0x3c40c6[_0x1371('0x22')]?_[_0x1371('0x23')](_0x3c40c6[_0x1371('0x22')],function(_0x5a4dd9){return{'model':db[_0x5a4dd9[_0x1371('0x24')]],'as':_0x5a4dd9['as'],'attributes':_0x5a4dd9['attributes'],'include':_0x5a4dd9[_0x1371('0x22')]?_['map'](_0x5a4dd9[_0x1371('0x22')],function(_0x4ce24a){return{'model':db[_0x4ce24a['model']],'as':_0x4ce24a['as'],'attributes':_0x4ce24a[_0x1371('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1371('0x10')](function(_0x1b3320){logger['info'](_0x1371('0x1b'),_0x566f42);logger[_0x1371('0x13')]('GetSmsQueue',_0x566f42,JSON[_0x1371('0x15')](_0x1b3320));_0x4717a5(_0x1b3320);})[_0x1371('0x1a')](function(_0x55d71b){logger['error'](_0x1371('0x1b'),_0x55d71b[_0x1371('0x18')],_0x566f42);_0x115131(_0x3ed810[_0x1371('0x16')](0x1f4,_0x55d71b[_0x1371('0x18')]));});});};exports['ShowSmsQueue']=function(_0x261a9e){var _0x137009=this;return new Promise(function(_0x1da723,_0x21682b){return db['SmsQueue'][_0x1371('0x25')]({'raw':_0x261a9e['options']?_0x261a9e[_0x1371('0x1e')][_0x1371('0x1f')]===undefined?!![]:![]:!![],'where':_0x261a9e[_0x1371('0x1e')]?_0x261a9e['options'][_0x1371('0x26')]||null:null,'attributes':_0x261a9e[_0x1371('0x1e')]?_0x261a9e['options'][_0x1371('0x20')]||null:null,'include':_0x261a9e['options']?_0x261a9e[_0x1371('0x1e')][_0x1371('0x22')]?_[_0x1371('0x23')](_0x261a9e[_0x1371('0x1e')]['include'],function(_0x168e07){return{'model':db[_0x168e07['model']],'as':_0x168e07['as'],'attributes':_0x168e07[_0x1371('0x20')],'include':_0x168e07[_0x1371('0x22')]?_[_0x1371('0x23')](_0x168e07[_0x1371('0x22')],function(_0x12a885){return{'model':db[_0x12a885[_0x1371('0x24')]],'as':_0x12a885['as'],'attributes':_0x12a885['attributes'],'include':_0x12a885[_0x1371('0x22')]?_[_0x1371('0x23')](_0x12a885['include'],function(_0x188a50){return{'model':db[_0x188a50[_0x1371('0x24')]],'as':_0x188a50['as'],'attributes':_0x188a50[_0x1371('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1371('0x10')](function(_0x57c8ad){logger['info'](_0x1371('0x27'),_0x261a9e);logger['debug'](_0x1371('0x27'),_0x261a9e,JSON[_0x1371('0x15')](_0x57c8ad));_0x1da723(_0x57c8ad);})['catch'](function(_0x2313c2){logger[_0x1371('0x16')]('ShowSmsQueue',_0x2313c2['message'],_0x261a9e);_0x21682b(_0x137009[_0x1371('0x16')](0x1f4,_0x2313c2[_0x1371('0x18')]));});});};
\ No newline at end of file
index a4c976c..377b7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00cc=['smsQueue:','./smsQueue.events','save','remove','emit','removeListener','register'];(function(_0x482c98,_0x518037){var _0xd63bbc=function(_0x60489a){while(--_0x60489a){_0x482c98['push'](_0x482c98['shift']());}};_0xd63bbc(++_0x518037);}(_0x00cc,0x174));var _0xc00c=function(_0x4ae76f,_0x49e2b9){_0x4ae76f=_0x4ae76f-0x0;var _0x1ee6f1=_0x00cc[_0x4ae76f];return _0x1ee6f1;};'use strict';var SmsQueueEvents=require(_0xc00c('0x0'));var events=[_0xc00c('0x1'),_0xc00c('0x2'),'update'];function createListener(_0x40fc2c,_0x4bdb0e){return function(_0x40b6ec){_0x4bdb0e[_0xc00c('0x3')](_0x40fc2c,_0x40b6ec);};}function removeListener(_0x25a8ad,_0x4f4ff7){return function(){SmsQueueEvents[_0xc00c('0x4')](_0x25a8ad,_0x4f4ff7);};}exports[_0xc00c('0x5')]=function(_0x2d9803){for(var _0x473b6d=0x0,_0x5bca1b=events['length'];_0x473b6d<_0x5bca1b;_0x473b6d++){var _0x5b4dd3=events[_0x473b6d];var _0x26e8db=createListener(_0xc00c('0x6')+_0x5b4dd3,_0x2d9803);SmsQueueEvents['on'](_0x5b4dd3,_0x26e8db);}};
\ No newline at end of file
+var _0x20a1=['removeListener','length','smsQueue:','./smsQueue.events','remove','update','emit'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x20a1,0x81));var _0x120a=function(_0xd9a959,_0x3f141c){_0xd9a959=_0xd9a959-0x0;var _0x4fead8=_0x20a1[_0xd9a959];return _0x4fead8;};'use strict';var SmsQueueEvents=require(_0x120a('0x0'));var events=['save',_0x120a('0x1'),_0x120a('0x2')];function createListener(_0x2f74bd,_0x89b175){return function(_0x4b8da0){_0x89b175[_0x120a('0x3')](_0x2f74bd,_0x4b8da0);};}function removeListener(_0x432ca8,_0x53bf52){return function(){SmsQueueEvents[_0x120a('0x4')](_0x432ca8,_0x53bf52);};}exports['register']=function(_0x482e08){for(var _0x47b115=0x0,_0x293cb8=events[_0x120a('0x5')];_0x47b115<_0x293cb8;_0x47b115++){var _0x48518b=events[_0x47b115];var _0x294911=createListener(_0x120a('0x6')+_0x48518b,_0x482e08);SmsQueueEvents['on'](_0x48518b,_0x294911);}};
\ No newline at end of file
index 0afa581..65fba08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342d=['util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','isAuthenticated','describe','get','create','put','/:id','update','destroy','exports','multer'];(function(_0x219fa0,_0x18b239){var _0xc603fb=function(_0x3371ad){while(--_0x3371ad){_0x219fa0['push'](_0x219fa0['shift']());}};_0xc603fb(++_0x18b239);}(_0x342d,0x197));var _0xd342=function(_0x3f9bab,_0xd4c399){_0x3f9bab=_0x3f9bab-0x0;var _0x3eb492=_0x342d[_0x3f9bab];return _0x3eb492;};'use strict';var multer=require(_0xd342('0x0'));var util=require(_0xd342('0x1'));var path=require('path');var timeout=require(_0xd342('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd342('0x3'));var auth=require(_0xd342('0x4'));var interaction=require(_0xd342('0x5'));var config=require(_0xd342('0x6'));var controller=require(_0xd342('0x7'));router['get']('/',auth[_0xd342('0x8')](),controller['index']);router['get']('/describe',auth[_0xd342('0x8')](),controller[_0xd342('0x9')]);router[_0xd342('0xa')]('/:id',auth[_0xd342('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xd342('0xb')]);router[_0xd342('0xc')](_0xd342('0xd'),auth[_0xd342('0x8')](),controller[_0xd342('0xe')]);router['delete'](_0xd342('0xd'),auth['isAuthenticated'](),controller[_0xd342('0xf')]);module[_0xd342('0x10')]=router;
\ No newline at end of file
+var _0x536e=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x536e,0x155));var _0xe536=function(_0x58428c,_0x435751){_0x58428c=_0x58428c-0x0;var _0x4bebd4=_0x536e[_0x58428c];return _0x4bebd4;};'use strict';var multer=require(_0xe536('0x0'));var util=require(_0xe536('0x1'));var path=require(_0xe536('0x2'));var timeout=require(_0xe536('0x3'));var express=require(_0xe536('0x4'));var router=express[_0xe536('0x5')]();var fs_extra=require(_0xe536('0x6'));var auth=require(_0xe536('0x7'));var interaction=require(_0xe536('0x8'));var config=require(_0xe536('0x9'));var controller=require(_0xe536('0xa'));router[_0xe536('0xb')]('/',auth[_0xe536('0xc')](),controller[_0xe536('0xd')]);router['get']('/describe',auth[_0xe536('0xc')](),controller[_0xe536('0xe')]);router['get'](_0xe536('0xf'),auth[_0xe536('0xc')](),controller[_0xe536('0x10')]);router[_0xe536('0x11')]('/',auth[_0xe536('0xc')](),controller[_0xe536('0x12')]);router[_0xe536('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xe536('0x14')]);router[_0xe536('0x15')]('/:id',auth[_0xe536('0xc')](),controller[_0xe536('0x16')]);module[_0xe536('0x17')]=router;
\ No newline at end of file
index 8d8a3c6..52b5d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f9=['moment','STRING','DATE'];(function(_0x2fed42,_0x4ed0d3){var _0x107d53=function(_0x43fd40){while(--_0x43fd40){_0x2fed42['push'](_0x2fed42['shift']());}};_0x107d53(++_0x4ed0d3);}(_0x93f9,0x1b6));var _0x993f=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x93f9[_0x6131cd];return _0x47e916;};'use strict';var moment=require(_0x993f('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x993f('0x1')]},'joinAt':{'type':Sequelize[_0x993f('0x2')]},'leaveAt':{'type':Sequelize[_0x993f('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x993f('0x2')]},'reason':{'type':Sequelize[_0x993f('0x1')]}};
\ No newline at end of file
+var _0x0f44=['DATE','moment','sequelize','STRING'];(function(_0x28a219,_0xc82f58){var _0x90b681=function(_0x290aa4){while(--_0x290aa4){_0x28a219['push'](_0x28a219['shift']());}};_0x90b681(++_0xc82f58);}(_0x0f44,0x7d));var _0x40f4=function(_0x18a23d,_0x4ada09){_0x18a23d=_0x18a23d-0x0;var _0x122530=_0x0f44[_0x18a23d];return _0x122530;};'use strict';var moment=require(_0x40f4('0x0'));var Sequelize=require(_0x40f4('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x40f4('0x2')]},'joinAt':{'type':Sequelize[_0x40f4('0x3')]},'leaveAt':{'type':Sequelize[_0x40f4('0x3')]},'acceptAt':{'type':Sequelize[_0x40f4('0x3')]},'exitAt':{'type':Sequelize[_0x40f4('0x3')]},'reason':{'type':Sequelize[_0x40f4('0x2')]}};
\ No newline at end of file
index 94fa334..441ee5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe882=['order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x4490f4,_0x150e06){var _0x3e2a76=function(_0x19c0c5){while(--_0x19c0c5){_0x4490f4['push'](_0x4490f4['shift']());}};_0x3e2a76(++_0x150e06);}(_0xe882,0x19d));var _0x2e88=function(_0xa1daca,_0x380795){_0xa1daca=_0xa1daca-0x0;var _0x19ef33=_0xe882[_0xa1daca];return _0x19ef33;};'use strict';var emlformat=require(_0x2e88('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2e88('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2e88('0x2'));var moment=require(_0x2e88('0x3'));var BPromise=require(_0x2e88('0x4'));var Mustache=require(_0x2e88('0x5'));var util=require(_0x2e88('0x6'));var path=require(_0x2e88('0x7'));var sox=require(_0x2e88('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2e88('0x9'));var _=require(_0x2e88('0xa'));var squel=require(_0x2e88('0xb'));var crypto=require(_0x2e88('0xc'));var jsforce=require(_0x2e88('0xd'));var deskjs=require(_0x2e88('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2e88('0xf'));var Papa=require(_0x2e88('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2e88('0x11'));var as=require(_0x2e88('0x12'));var hardwareService=require(_0x2e88('0x13'));var logger=require(_0x2e88('0x14'))(_0x2e88('0x15'));var utils=require(_0x2e88('0x16'));var config=require(_0x2e88('0x17'));var licenseUtil=require(_0x2e88('0x18'));var db=require(_0x2e88('0x19'))['db'];function respondWithStatusCode(_0x162d87,_0x38da56){_0x38da56=_0x38da56||0xcc;return function(_0x22e13c){if(_0x22e13c){return _0x162d87['sendStatus'](_0x38da56);}return _0x162d87[_0x2e88('0x1a')](_0x38da56)[_0x2e88('0x1b')]();};}function respondWithResult(_0x22eca5,_0x344e04){_0x344e04=_0x344e04||0xc8;return function(_0x47440d){if(_0x47440d){return _0x22eca5[_0x2e88('0x1a')](_0x344e04)[_0x2e88('0x1c')](_0x47440d);}};}function respondWithFilteredResult(_0x1e9af3,_0xf6b9ee){return function(_0x58a848){if(_0x58a848){var _0x27ae31=typeof _0xf6b9ee[_0x2e88('0x1d')]===_0x2e88('0x1e')&&typeof _0xf6b9ee[_0x2e88('0x1f')]===_0x2e88('0x1e');var _0x502696=_0x58a848[_0x2e88('0x20')];var _0x381a8b=_0x27ae31?0x0:_0xf6b9ee['offset'];var _0x372cef=_0x27ae31?_0x58a848[_0x2e88('0x20')]:_0xf6b9ee[_0x2e88('0x1d')]+_0xf6b9ee['limit'];var _0x31771a;if(_0x372cef>=_0x502696){_0x372cef=_0x502696;_0x31771a=0xc8;}else{_0x31771a=0xce;}_0x1e9af3['status'](_0x31771a);return _0x1e9af3['set'](_0x2e88('0x21'),_0x381a8b+'-'+_0x372cef+'/'+_0x502696)[_0x2e88('0x1c')](_0x58a848);}return null;};}function patchUpdates(_0x496a83){return function(_0x4aed39){try{jsonpatch[_0x2e88('0x22')](_0x4aed39,_0x496a83,!![]);}catch(_0x1787c7){return BPromise[_0x2e88('0x23')](_0x1787c7);}return _0x4aed39[_0x2e88('0x24')]();};}function saveUpdates(_0x59a8f6,_0xb93485){return function(_0x588f8e){if(_0x588f8e){return _0x588f8e[_0x2e88('0x25')](_0x59a8f6)[_0x2e88('0x26')](function(_0x4c78bb){return _0x4c78bb;});}return null;};}function removeEntity(_0x1e503d,_0x5da2b9){return function(_0x2e35dc){if(_0x2e35dc){return _0x2e35dc[_0x2e88('0x27')]()['then'](function(){_0x1e503d[_0x2e88('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x462235,_0x59283e){return function(_0x297970){if(!_0x297970){_0x462235[_0x2e88('0x28')](0x194);}return _0x297970;};}function handleError(_0x4f0639,_0x4ada3c){_0x4ada3c=_0x4ada3c||0x1f4;return function(_0xd4adff){logger[_0x2e88('0x29')](_0xd4adff[_0x2e88('0x2a')]);if(_0xd4adff[_0x2e88('0x2b')]){delete _0xd4adff[_0x2e88('0x2b')];}_0x4f0639[_0x2e88('0x1a')](_0x4ada3c)[_0x2e88('0x2c')](_0xd4adff);};}exports[_0x2e88('0x2d')]=function(_0x27dd58,_0x3cbf4c){var _0xadc590={},_0x55d06d={},_0x29f63e={'count':0x0,'rows':[]};var _0x50d95d=_[_0x2e88('0x2e')](db[_0x2e88('0x2f')][_0x2e88('0x30')],function(_0x491963){return{'name':_0x491963[_0x2e88('0x31')],'type':_0x491963[_0x2e88('0x32')][_0x2e88('0x33')]};});_0x55d06d[_0x2e88('0x34')]=_[_0x2e88('0x2e')](_0x50d95d,_0x2e88('0x2b'));_0x55d06d[_0x2e88('0x35')]=_[_0x2e88('0x36')](_0x27dd58[_0x2e88('0x35')]);_0x55d06d[_0x2e88('0x37')]=_[_0x2e88('0x38')](_0x55d06d[_0x2e88('0x34')],_0x55d06d['query']);_0xadc590['attributes']=_[_0x2e88('0x38')](_0x55d06d[_0x2e88('0x34')],qs[_0x2e88('0x39')](_0x27dd58[_0x2e88('0x35')]['fields']));_0xadc590[_0x2e88('0x3a')]=_0xadc590['attributes'][_0x2e88('0x3b')]?_0xadc590[_0x2e88('0x3a')]:_0x55d06d[_0x2e88('0x34')];if(!_0x27dd58[_0x2e88('0x35')][_0x2e88('0x3c')]('nolimit')){_0xadc590[_0x2e88('0x1f')]=qs[_0x2e88('0x1f')](_0x27dd58[_0x2e88('0x35')][_0x2e88('0x1f')]);_0xadc590[_0x2e88('0x1d')]=qs['offset'](_0x27dd58[_0x2e88('0x35')][_0x2e88('0x1d')]);}_0xadc590[_0x2e88('0x3d')]=qs['sort'](_0x27dd58['query']['sort']);_0xadc590[_0x2e88('0x3e')]=qs[_0x2e88('0x37')](_[_0x2e88('0x3f')](_0x27dd58[_0x2e88('0x35')],_0x55d06d[_0x2e88('0x37')]),_0x50d95d);if(_0x27dd58['query'][_0x2e88('0x40')]){_0xadc590[_0x2e88('0x3e')]=_[_0x2e88('0x41')](_0xadc590['where'],{'$or':_[_0x2e88('0x2e')](_0x50d95d,function(_0x4ef341){if(_0x4ef341[_0x2e88('0x32')]!==_0x2e88('0x42')){var _0x49422a={};_0x49422a[_0x4ef341[_0x2e88('0x2b')]]={'$like':'%'+_0x27dd58['query'][_0x2e88('0x40')]+'%'};return _0x49422a;}})});}_0xadc590=_[_0x2e88('0x41')]({},_0xadc590,_0x27dd58[_0x2e88('0x43')]);var _0x5a22de={'where':_0xadc590[_0x2e88('0x3e')]};return db[_0x2e88('0x2f')][_0x2e88('0x20')](_0x5a22de)[_0x2e88('0x26')](function(_0x20c7ad){_0x29f63e[_0x2e88('0x20')]=_0x20c7ad;if(_0x27dd58['query'][_0x2e88('0x44')]){_0xadc590[_0x2e88('0x45')]=[{'all':!![]}];}return db[_0x2e88('0x2f')][_0x2e88('0x46')](_0xadc590);})['then'](function(_0x5ebb18){_0x29f63e[_0x2e88('0x47')]=_0x5ebb18;return _0x29f63e;})[_0x2e88('0x26')](respondWithFilteredResult(_0x3cbf4c,_0xadc590))[_0x2e88('0x48')](handleError(_0x3cbf4c,null));};exports[_0x2e88('0x49')]=function(_0x564f5f,_0x1e0b31){var _0x55059e={'raw':!![],'where':{'id':_0x564f5f[_0x2e88('0x4a')]['id']}},_0x4f272d={};_0x4f272d['model']=_[_0x2e88('0x36')](db[_0x2e88('0x2f')][_0x2e88('0x30')]);_0x4f272d['query']=_[_0x2e88('0x36')](_0x564f5f[_0x2e88('0x35')]);_0x4f272d[_0x2e88('0x37')]=_[_0x2e88('0x38')](_0x4f272d[_0x2e88('0x34')],_0x4f272d[_0x2e88('0x35')]);_0x55059e['attributes']=_[_0x2e88('0x38')](_0x4f272d['model'],qs[_0x2e88('0x39')](_0x564f5f[_0x2e88('0x35')][_0x2e88('0x39')]));_0x55059e[_0x2e88('0x3a')]=_0x55059e[_0x2e88('0x3a')][_0x2e88('0x3b')]?_0x55059e['attributes']:_0x4f272d[_0x2e88('0x34')];if(_0x564f5f[_0x2e88('0x35')]['includeAll']){_0x55059e[_0x2e88('0x45')]=[{'all':!![]}];}_0x55059e=_['merge']({},_0x55059e,_0x564f5f['options']);return db[_0x2e88('0x2f')][_0x2e88('0x4b')](_0x55059e)[_0x2e88('0x26')](handleEntityNotFound(_0x1e0b31,null))[_0x2e88('0x26')](respondWithResult(_0x1e0b31,null))['catch'](handleError(_0x1e0b31,null));};exports[_0x2e88('0x4c')]=function(_0x41395f,_0x47e473){return db['SmsQueueReport'][_0x2e88('0x4c')](_0x41395f['body'],{})[_0x2e88('0x26')](respondWithResult(_0x47e473,0xc9))['catch'](handleError(_0x47e473,null));};exports[_0x2e88('0x25')]=function(_0x500d55,_0x193c60){if(_0x500d55[_0x2e88('0x4d')]['id']){delete _0x500d55[_0x2e88('0x4d')]['id'];}return db[_0x2e88('0x2f')]['find']({'where':{'id':_0x500d55[_0x2e88('0x4a')]['id']}})['then'](handleEntityNotFound(_0x193c60,null))[_0x2e88('0x26')](saveUpdates(_0x500d55[_0x2e88('0x4d')],null))['then'](respondWithResult(_0x193c60,null))[_0x2e88('0x48')](handleError(_0x193c60,null));};exports['destroy']=function(_0x2a912e,_0x48c43d){return db[_0x2e88('0x2f')][_0x2e88('0x4b')]({'where':{'id':_0x2a912e['params']['id']}})[_0x2e88('0x26')](handleEntityNotFound(_0x48c43d,null))[_0x2e88('0x26')](removeEntity(_0x48c43d,null))['catch'](handleError(_0x48c43d,null));};exports[_0x2e88('0x4e')]=function(_0xbcd85,_0x21e2a9){return db[_0x2e88('0x2f')][_0x2e88('0x4e')]()[_0x2e88('0x26')](respondWithResult(_0x21e2a9,null))[_0x2e88('0x48')](handleError(_0x21e2a9,null));};
\ No newline at end of file
+var _0xc306=['create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','SmsQueueReport','includeAll','include','findAll','rows','catch','show','find'];(function(_0x218988,_0x478f6c){var _0x63d3dd=function(_0x5d7fc2){while(--_0x5d7fc2){_0x218988['push'](_0x218988['shift']());}};_0x63d3dd(++_0x478f6c);}(_0xc306,0xee));var _0x6c30=function(_0x42520d,_0x38546c){_0x42520d=_0x42520d-0x0;var _0x2b9115=_0xc306[_0x42520d];return _0x2b9115;};'use strict';var emlformat=require(_0x6c30('0x0'));var rimraf=require(_0x6c30('0x1'));var zipdir=require(_0x6c30('0x2'));var jsonpatch=require(_0x6c30('0x3'));var rp=require(_0x6c30('0x4'));var moment=require(_0x6c30('0x5'));var BPromise=require(_0x6c30('0x6'));var Mustache=require(_0x6c30('0x7'));var util=require(_0x6c30('0x8'));var path=require(_0x6c30('0x9'));var sox=require(_0x6c30('0xa'));var csv=require(_0x6c30('0xb'));var ejs=require(_0x6c30('0xc'));var fs=require('fs');var fs_extra=require(_0x6c30('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6c30('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6c30('0xb'));var querystring=require('querystring');var Papa=require(_0x6c30('0xf'));var Redis=require('ioredis');var authService=require(_0x6c30('0x10'));var qs=require(_0x6c30('0x11'));var as=require(_0x6c30('0x12'));var hardwareService=require(_0x6c30('0x13'));var logger=require(_0x6c30('0x14'))(_0x6c30('0x15'));var utils=require('../../config/utils');var config=require(_0x6c30('0x16'));var licenseUtil=require(_0x6c30('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48c23e,_0xb1e790){_0xb1e790=_0xb1e790||0xcc;return function(_0x1addcb){if(_0x1addcb){return _0x48c23e[_0x6c30('0x18')](_0xb1e790);}return _0x48c23e[_0x6c30('0x19')](_0xb1e790)[_0x6c30('0x1a')]();};}function respondWithResult(_0x41f77a,_0x1e078b){_0x1e078b=_0x1e078b||0xc8;return function(_0x5b8e72){if(_0x5b8e72){return _0x41f77a[_0x6c30('0x19')](_0x1e078b)[_0x6c30('0x1b')](_0x5b8e72);}};}function respondWithFilteredResult(_0x37c18f,_0x46ba3d){return function(_0x28bc3e){if(_0x28bc3e){var _0x43b758=typeof _0x46ba3d[_0x6c30('0x1c')]===_0x6c30('0x1d')&&typeof _0x46ba3d['limit']==='undefined';var _0x104a33=_0x28bc3e['count'];var _0x280150=_0x43b758?0x0:_0x46ba3d[_0x6c30('0x1c')];var _0x3b5d3e=_0x43b758?_0x28bc3e['count']:_0x46ba3d[_0x6c30('0x1c')]+_0x46ba3d[_0x6c30('0x1e')];var _0x77b51b;if(_0x3b5d3e>=_0x104a33){_0x3b5d3e=_0x104a33;_0x77b51b=0xc8;}else{_0x77b51b=0xce;}_0x37c18f['status'](_0x77b51b);return _0x37c18f[_0x6c30('0x1f')](_0x6c30('0x20'),_0x280150+'-'+_0x3b5d3e+'/'+_0x104a33)[_0x6c30('0x1b')](_0x28bc3e);}return null;};}function patchUpdates(_0x27a552){return function(_0x39e37a){try{jsonpatch[_0x6c30('0x21')](_0x39e37a,_0x27a552,!![]);}catch(_0xe9b395){return BPromise[_0x6c30('0x22')](_0xe9b395);}return _0x39e37a[_0x6c30('0x23')]();};}function saveUpdates(_0x26243f,_0x193975){return function(_0x2d28f9){if(_0x2d28f9){return _0x2d28f9[_0x6c30('0x24')](_0x26243f)[_0x6c30('0x25')](function(_0x592ade){return _0x592ade;});}return null;};}function removeEntity(_0x16de74,_0x373f46){return function(_0x388b0b){if(_0x388b0b){return _0x388b0b[_0x6c30('0x26')]()[_0x6c30('0x25')](function(){_0x16de74['status'](0xcc)[_0x6c30('0x1a')]();});}};}function handleEntityNotFound(_0x216d10,_0x2034b7){return function(_0x377f5c){if(!_0x377f5c){_0x216d10['sendStatus'](0x194);}return _0x377f5c;};}function handleError(_0x19fc05,_0x1eb465){_0x1eb465=_0x1eb465||0x1f4;return function(_0x37d189){logger['error'](_0x37d189[_0x6c30('0x27')]);if(_0x37d189['name']){delete _0x37d189[_0x6c30('0x28')];}_0x19fc05[_0x6c30('0x19')](_0x1eb465)[_0x6c30('0x29')](_0x37d189);};}exports[_0x6c30('0x2a')]=function(_0x45db22,_0x2f41a8){var _0x4012c2={},_0x1c2f5e={},_0x2c140f={'count':0x0,'rows':[]};var _0x428f65=_[_0x6c30('0x2b')](db['SmsQueueReport'][_0x6c30('0x2c')],function(_0xe75bd0){return{'name':_0xe75bd0[_0x6c30('0x2d')],'type':_0xe75bd0[_0x6c30('0x2e')][_0x6c30('0x2f')]};});_0x1c2f5e[_0x6c30('0x30')]=_[_0x6c30('0x2b')](_0x428f65,'name');_0x1c2f5e['query']=_[_0x6c30('0x31')](_0x45db22['query']);_0x1c2f5e[_0x6c30('0x32')]=_[_0x6c30('0x33')](_0x1c2f5e[_0x6c30('0x30')],_0x1c2f5e[_0x6c30('0x34')]);_0x4012c2['attributes']=_['intersection'](_0x1c2f5e[_0x6c30('0x30')],qs[_0x6c30('0x35')](_0x45db22[_0x6c30('0x34')][_0x6c30('0x35')]));_0x4012c2['attributes']=_0x4012c2[_0x6c30('0x36')][_0x6c30('0x37')]?_0x4012c2[_0x6c30('0x36')]:_0x1c2f5e[_0x6c30('0x30')];if(!_0x45db22['query'][_0x6c30('0x38')](_0x6c30('0x39'))){_0x4012c2[_0x6c30('0x1e')]=qs[_0x6c30('0x1e')](_0x45db22[_0x6c30('0x34')][_0x6c30('0x1e')]);_0x4012c2['offset']=qs[_0x6c30('0x1c')](_0x45db22[_0x6c30('0x34')][_0x6c30('0x1c')]);}_0x4012c2[_0x6c30('0x3a')]=qs['sort'](_0x45db22[_0x6c30('0x34')][_0x6c30('0x3b')]);_0x4012c2['where']=qs['filters'](_[_0x6c30('0x3c')](_0x45db22[_0x6c30('0x34')],_0x1c2f5e['filters']),_0x428f65);if(_0x45db22[_0x6c30('0x34')][_0x6c30('0x3d')]){_0x4012c2['where']=_['merge'](_0x4012c2[_0x6c30('0x3e')],{'$or':_[_0x6c30('0x2b')](_0x428f65,function(_0x1818d9){if(_0x1818d9['type']!==_0x6c30('0x3f')){var _0x59724c={};_0x59724c[_0x1818d9[_0x6c30('0x28')]]={'$like':'%'+_0x45db22[_0x6c30('0x34')][_0x6c30('0x3d')]+'%'};return _0x59724c;}})});}_0x4012c2=_[_0x6c30('0x40')]({},_0x4012c2,_0x45db22[_0x6c30('0x41')]);var _0x50eadf={'where':_0x4012c2[_0x6c30('0x3e')]};return db[_0x6c30('0x42')]['count'](_0x50eadf)[_0x6c30('0x25')](function(_0x1ed735){_0x2c140f['count']=_0x1ed735;if(_0x45db22[_0x6c30('0x34')][_0x6c30('0x43')]){_0x4012c2[_0x6c30('0x44')]=[{'all':!![]}];}return db[_0x6c30('0x42')][_0x6c30('0x45')](_0x4012c2);})[_0x6c30('0x25')](function(_0x3942b4){_0x2c140f[_0x6c30('0x46')]=_0x3942b4;return _0x2c140f;})[_0x6c30('0x25')](respondWithFilteredResult(_0x2f41a8,_0x4012c2))[_0x6c30('0x47')](handleError(_0x2f41a8,null));};exports[_0x6c30('0x48')]=function(_0x460ca4,_0x371441){var _0x2ea667={'raw':!![],'where':{'id':_0x460ca4['params']['id']}},_0xa96804={};_0xa96804['model']=_[_0x6c30('0x31')](db[_0x6c30('0x42')][_0x6c30('0x2c')]);_0xa96804[_0x6c30('0x34')]=_[_0x6c30('0x31')](_0x460ca4['query']);_0xa96804[_0x6c30('0x32')]=_[_0x6c30('0x33')](_0xa96804[_0x6c30('0x30')],_0xa96804[_0x6c30('0x34')]);_0x2ea667[_0x6c30('0x36')]=_[_0x6c30('0x33')](_0xa96804['model'],qs['fields'](_0x460ca4['query'][_0x6c30('0x35')]));_0x2ea667[_0x6c30('0x36')]=_0x2ea667[_0x6c30('0x36')][_0x6c30('0x37')]?_0x2ea667[_0x6c30('0x36')]:_0xa96804[_0x6c30('0x30')];if(_0x460ca4[_0x6c30('0x34')][_0x6c30('0x43')]){_0x2ea667[_0x6c30('0x44')]=[{'all':!![]}];}_0x2ea667=_[_0x6c30('0x40')]({},_0x2ea667,_0x460ca4[_0x6c30('0x41')]);return db['SmsQueueReport'][_0x6c30('0x49')](_0x2ea667)[_0x6c30('0x25')](handleEntityNotFound(_0x371441,null))[_0x6c30('0x25')](respondWithResult(_0x371441,null))[_0x6c30('0x47')](handleError(_0x371441,null));};exports[_0x6c30('0x4a')]=function(_0x49ba1f,_0x28ab04){return db['SmsQueueReport'][_0x6c30('0x4a')](_0x49ba1f[_0x6c30('0x4b')],{})['then'](respondWithResult(_0x28ab04,0xc9))['catch'](handleError(_0x28ab04,null));};exports[_0x6c30('0x24')]=function(_0x603593,_0x1a2ab9){if(_0x603593[_0x6c30('0x4b')]['id']){delete _0x603593[_0x6c30('0x4b')]['id'];}return db[_0x6c30('0x42')][_0x6c30('0x49')]({'where':{'id':_0x603593[_0x6c30('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1a2ab9,null))[_0x6c30('0x25')](saveUpdates(_0x603593['body'],null))['then'](respondWithResult(_0x1a2ab9,null))['catch'](handleError(_0x1a2ab9,null));};exports[_0x6c30('0x26')]=function(_0x5935a0,_0x36c822){return db[_0x6c30('0x42')]['find']({'where':{'id':_0x5935a0[_0x6c30('0x4c')]['id']}})[_0x6c30('0x25')](handleEntityNotFound(_0x36c822,null))[_0x6c30('0x25')](removeEntity(_0x36c822,null))[_0x6c30('0x47')](handleError(_0x36c822,null));};exports[_0x6c30('0x4d')]=function(_0xfe8268,_0x131306){return db[_0x6c30('0x42')]['describe']()[_0x6c30('0x25')](respondWithResult(_0x131306,null))[_0x6c30('0x47')](handleError(_0x131306,null));};
\ No newline at end of file
index d833631..78a7a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x41ae18,_0x570d43){var _0x51c805=function(_0x39e3ab){while(--_0x39e3ab){_0x41ae18['push'](_0x41ae18['shift']());}};_0x51c805(++_0x570d43);}(_0xb7e7,0x121));var _0x7b7e=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xb7e7[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index ef35d70..37d93de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31b=['create','options','raw','stringify','UpdateSmsQueueReport','update','where','attributes','limit','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xf31b,0x120));var _0xbf31=function(_0x555500,_0x5459a3){_0x555500=_0x555500-0x0;var _0x2b8df9=_0xf31b[_0x555500];return _0x2b8df9;};'use strict';var _=require(_0xbf31('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbf31('0x1'));var rs=require(_0xbf31('0x2'));var fs=require('fs');var Redis=require(_0xbf31('0x3'));var db=require(_0xbf31('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbf31('0x5'));var config=require('../../config/environment');var jayson=require(_0xbf31('0x6'));var client=jayson[_0xbf31('0x7')][_0xbf31('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x217c37,_0xddbee3,_0xcc7ab5){return new BPromise(function(_0x2e8b39,_0x486fd3){return client['request'](_0x217c37,_0xcc7ab5)[_0xbf31('0x9')](function(_0x5c7950){logger[_0xbf31('0xa')](_0xbf31('0xb'),_0xddbee3,'request\x20sent');logger[_0xbf31('0xc')](_0xbf31('0xd'),_0xddbee3,_0xbf31('0xe'),JSON['stringify'](_0x5c7950));if(_0x5c7950[_0xbf31('0xf')]){if(_0x5c7950['error'][_0xbf31('0x10')]===0x1f4){logger[_0xbf31('0xf')](_0xbf31('0xb'),_0xddbee3,_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);return _0x486fd3(_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);}logger[_0xbf31('0xf')](_0xbf31('0xb'),_0xddbee3,_0x5c7950[_0xbf31('0xf')]['message']);return _0x2e8b39(_0x5c7950[_0xbf31('0xf')][_0xbf31('0x11')]);}else{logger[_0xbf31('0xa')](_0xbf31('0xb'),_0xddbee3,_0xbf31('0xe'));_0x2e8b39(_0x5c7950[_0xbf31('0x12')][_0xbf31('0x11')]);}})[_0xbf31('0x13')](function(_0xcf305f){logger['error'](_0xbf31('0xb'),_0xddbee3,_0xcf305f);_0x486fd3(_0xcf305f);});});}exports[_0xbf31('0x14')]=function(_0x7799f1){var _0x2f5123=this;return new Promise(function(_0x3c552b,_0x12b858){return db[_0xbf31('0x15')][_0xbf31('0x16')](_0x7799f1['body'],{'raw':_0x7799f1[_0xbf31('0x17')]?_0x7799f1[_0xbf31('0x17')][_0xbf31('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x3dd15a){logger[_0xbf31('0xa')](_0xbf31('0x14'),_0x7799f1);logger[_0xbf31('0xc')]('CreateSmsQueueReport',_0x7799f1,JSON[_0xbf31('0x19')](_0x3dd15a));_0x3c552b(_0x3dd15a);})['catch'](function(_0x1f60dc){logger[_0xbf31('0xf')](_0xbf31('0x14'),_0x1f60dc[_0xbf31('0x11')],_0x7799f1);_0x12b858(_0x2f5123[_0xbf31('0xf')](0x1f4,_0x1f60dc[_0xbf31('0x11')]));});});};exports[_0xbf31('0x1a')]=function(_0xfa3f5f){var _0x15b5b0=this;return new Promise(function(_0x18b25a,_0x46cf89){return db[_0xbf31('0x15')][_0xbf31('0x1b')](_0xfa3f5f['body'],{'raw':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x1c')]||null:null,'attributes':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f['options'][_0xbf31('0x1d')]||null:null,'limit':_0xfa3f5f[_0xbf31('0x17')]?_0xfa3f5f[_0xbf31('0x17')][_0xbf31('0x1e')]||null:null})[_0xbf31('0x9')](function(_0x3edadb){logger[_0xbf31('0xa')]('UpdateSmsQueueReport',_0xfa3f5f);logger[_0xbf31('0xc')](_0xbf31('0x1a'),_0xfa3f5f,JSON['stringify'](_0x3edadb));_0x18b25a(_0x3edadb);})[_0xbf31('0x13')](function(_0x137261){logger[_0xbf31('0xf')](_0xbf31('0x1a'),_0x137261[_0xbf31('0x11')],_0xfa3f5f);_0x46cf89(_0x15b5b0[_0xbf31('0xf')](0x1f4,_0x137261[_0xbf31('0x11')]));});});};
\ No newline at end of file
+var _0x4bdf=['attributes','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','SmsQueueReport,\x20%s,\x20%s','message','info','result','body','options','raw','CreateSmsQueueReport','catch','UpdateSmsQueueReport','SmsQueueReport','update','where'];(function(_0xf1f2e0,_0x37c415){var _0x991373=function(_0x5baf7f){while(--_0x5baf7f){_0xf1f2e0['push'](_0xf1f2e0['shift']());}};_0x991373(++_0x37c415);}(_0x4bdf,0xfa));var _0xf4bd=function(_0x14ff15,_0x442edf){_0x14ff15=_0x14ff15-0x0;var _0x4191e7=_0x4bdf[_0x14ff15];return _0x4191e7;};'use strict';var _=require(_0xf4bd('0x0'));var util=require(_0xf4bd('0x1'));var moment=require(_0xf4bd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4bd('0x3'));var db=require(_0xf4bd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf4bd('0x5'))(_0xf4bd('0x6'));var config=require(_0xf4bd('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf4bd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x26b25f,_0x3f6c10,_0x30818c){return new BPromise(function(_0x17728d,_0x12b588){return client[_0xf4bd('0x9')](_0x26b25f,_0x30818c)[_0xf4bd('0xa')](function(_0x112742){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x3f6c10,_0xf4bd('0xb'));logger[_0xf4bd('0xc')](_0xf4bd('0xd'),_0x3f6c10,_0xf4bd('0xb'),JSON[_0xf4bd('0xe')](_0x112742));if(_0x112742['error']){if(_0x112742[_0xf4bd('0xf')]['code']===0x1f4){logger[_0xf4bd('0xf')](_0xf4bd('0x10'),_0x3f6c10,_0x112742[_0xf4bd('0xf')][_0xf4bd('0x11')]);return _0x12b588(_0x112742[_0xf4bd('0xf')]['message']);}logger[_0xf4bd('0xf')](_0xf4bd('0x10'),_0x3f6c10,_0x112742[_0xf4bd('0xf')][_0xf4bd('0x11')]);return _0x17728d(_0x112742[_0xf4bd('0xf')][_0xf4bd('0x11')]);}else{logger[_0xf4bd('0x12')](_0xf4bd('0x10'),_0x3f6c10,_0xf4bd('0xb'));_0x17728d(_0x112742[_0xf4bd('0x13')]['message']);}})['catch'](function(_0x41f98c){logger[_0xf4bd('0xf')](_0xf4bd('0x10'),_0x3f6c10,_0x41f98c);_0x12b588(_0x41f98c);});});}exports['CreateSmsQueueReport']=function(_0x49e121){var _0x5d3c68=this;return new Promise(function(_0x286478,_0x3cbbef){return db['SmsQueueReport']['create'](_0x49e121[_0xf4bd('0x14')],{'raw':_0x49e121['options']?_0x49e121[_0xf4bd('0x15')][_0xf4bd('0x16')]===undefined?!![]:![]:!![]})[_0xf4bd('0xa')](function(_0x5d1537){logger[_0xf4bd('0x12')](_0xf4bd('0x17'),_0x49e121);logger[_0xf4bd('0xc')](_0xf4bd('0x17'),_0x49e121,JSON[_0xf4bd('0xe')](_0x5d1537));_0x286478(_0x5d1537);})[_0xf4bd('0x18')](function(_0x457c68){logger['error'](_0xf4bd('0x17'),_0x457c68[_0xf4bd('0x11')],_0x49e121);_0x3cbbef(_0x5d3c68[_0xf4bd('0xf')](0x1f4,_0x457c68[_0xf4bd('0x11')]));});});};exports[_0xf4bd('0x19')]=function(_0x3f6481){var _0xa863d5=this;return new Promise(function(_0x3d934d,_0x47bcb2){return db[_0xf4bd('0x1a')][_0xf4bd('0x1b')](_0x3f6481[_0xf4bd('0x14')],{'raw':_0x3f6481[_0xf4bd('0x15')]?_0x3f6481['options'][_0xf4bd('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f6481[_0xf4bd('0x15')]?_0x3f6481['options'][_0xf4bd('0x1c')]||null:null,'attributes':_0x3f6481[_0xf4bd('0x15')]?_0x3f6481[_0xf4bd('0x15')][_0xf4bd('0x1d')]||null:null,'limit':_0x3f6481[_0xf4bd('0x15')]?_0x3f6481[_0xf4bd('0x15')][_0xf4bd('0x1e')]||null:null})['then'](function(_0x2bb99b){logger['info'](_0xf4bd('0x19'),_0x3f6481);logger['debug'](_0xf4bd('0x19'),_0x3f6481,JSON['stringify'](_0x2bb99b));_0x3d934d(_0x2bb99b);})[_0xf4bd('0x18')](function(_0xfe3f77){logger[_0xf4bd('0xf')](_0xf4bd('0x19'),_0xfe3f77[_0xf4bd('0x11')],_0x3f6481);_0x47bcb2(_0xa863d5[_0xf4bd('0xf')](0x1f4,_0xfe3f77[_0xf4bd('0x11')]));});});};
\ No newline at end of file
index ce8b76a..86f2177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['/:id','show','post','isAuthenticated','create','put','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/describe','describe'];(function(_0x4d2c26,_0x2701f9){var _0x5bf9b4=function(_0x52edc6){while(--_0x52edc6){_0x4d2c26['push'](_0x4d2c26['shift']());}};_0x5bf9b4(++_0x2701f9);}(_0x207c,0x1e8));var _0xc207=function(_0x19bf5f,_0x1ca6b9){_0x19bf5f=_0x19bf5f-0x0;var _0x237efa=_0x207c[_0x19bf5f];return _0x237efa;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),auth['isAuthenticated'](),controller[_0xc207('0xb')]);router[_0xc207('0x9')](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0xd')]);router[_0xc207('0xe')]('/',auth[_0xc207('0xf')](),controller[_0xc207('0x10')]);router[_0xc207('0x11')](_0xc207('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc207('0xc'),auth['isAuthenticated'](),controller[_0xc207('0x12')]);module[_0xc207('0x13')]=router;
\ No newline at end of file
+var _0x723e=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put'];(function(_0x179194,_0x8fca3){var _0x1b3ac7=function(_0x321450){while(--_0x321450){_0x179194['push'](_0x179194['shift']());}};_0x1b3ac7(++_0x8fca3);}(_0x723e,0x179));var _0xe723=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x723e[_0x22b68a];return _0x1ac67a;};'use strict';var multer=require('multer');var util=require(_0xe723('0x0'));var path=require(_0xe723('0x1'));var timeout=require(_0xe723('0x2'));var express=require(_0xe723('0x3'));var router=express[_0xe723('0x4')]();var fs_extra=require(_0xe723('0x5'));var auth=require(_0xe723('0x6'));var interaction=require(_0xe723('0x7'));var config=require(_0xe723('0x8'));var controller=require(_0xe723('0x9'));router['get']('/',auth[_0xe723('0xa')](),controller[_0xe723('0xb')]);router[_0xe723('0xc')](_0xe723('0xd'),auth[_0xe723('0xa')](),controller[_0xe723('0xe')]);router[_0xe723('0xc')](_0xe723('0xf'),auth['isAuthenticated'](),controller[_0xe723('0x10')]);router[_0xe723('0x11')]('/',auth[_0xe723('0xa')](),controller['create']);router[_0xe723('0x12')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller['update']);router[_0xe723('0x13')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller[_0xe723('0x14')]);module[_0xe723('0x15')]=router;
\ No newline at end of file
index 89956e4..3d21bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x4e124d,_0x376516){var _0x32bd92=function(_0x340b1d){while(--_0x340b1d){_0x4e124d['push'](_0x4e124d['shift']());}};_0x32bd92(++_0x376516);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2e6dee,_0x1a61b0){_0x2e6dee=_0x2e6dee-0x0;var _0x47706=_0xf3cd[_0x2e6dee];return _0x47706;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x239a4b,_0x90265a){var _0xd6307e=function(_0x1b946f){while(--_0x1b946f){_0x239a4b['push'](_0x239a4b['shift']());}};_0xd6307e(++_0x90265a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index cbbc81c..c5274da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc06d=['mustache','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','SmsTransferReport','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','include','show','params','rawAttributes','options','find','catch','create','body','describe','rimraf','fast-json-patch','moment','bluebird'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0xc06d,0xd1));var _0xdc06=function(_0x2e656c,_0xee66ce){_0x2e656c=_0x2e656c-0x0;var _0x139ec=_0xc06d[_0x2e656c];return _0x139ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc06('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdc06('0x1'));var rp=require('request-promise');var moment=require(_0xdc06('0x2'));var BPromise=require(_0xdc06('0x3'));var Mustache=require(_0xdc06('0x4'));var util=require('util');var path=require(_0xdc06('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdc06('0x6'));var fs=require('fs');var fs_extra=require(_0xdc06('0x7'));var _=require(_0xdc06('0x8'));var squel=require(_0xdc06('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdc06('0xa'));var toCsv=require(_0xdc06('0xb'));var querystring=require(_0xdc06('0xc'));var Papa=require(_0xdc06('0xd'));var Redis=require(_0xdc06('0xe'));var authService=require(_0xdc06('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdc06('0x10'));var hardwareService=require(_0xdc06('0x11'));var logger=require(_0xdc06('0x12'))('api');var utils=require(_0xdc06('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x364da6,_0x226934){_0x226934=_0x226934||0xcc;return function(_0x3d516b){if(_0x3d516b){return _0x364da6[_0xdc06('0x14')](_0x226934);}return _0x364da6[_0xdc06('0x15')](_0x226934)[_0xdc06('0x16')]();};}function respondWithResult(_0x2a5b02,_0x4b82b3){_0x4b82b3=_0x4b82b3||0xc8;return function(_0xd281c3){if(_0xd281c3){return _0x2a5b02[_0xdc06('0x15')](_0x4b82b3)[_0xdc06('0x17')](_0xd281c3);}};}function respondWithFilteredResult(_0xd55424,_0x283918){return function(_0x52807c){if(_0x52807c){var _0x999cb=typeof _0x283918['offset']===_0xdc06('0x18')&&typeof _0x283918[_0xdc06('0x19')]===_0xdc06('0x18');var _0x2c933c=_0x52807c['count'];var _0x5ad503=_0x999cb?0x0:_0x283918[_0xdc06('0x1a')];var _0x2c81c0=_0x999cb?_0x52807c[_0xdc06('0x1b')]:_0x283918[_0xdc06('0x1a')]+_0x283918[_0xdc06('0x19')];var _0xf67004;if(_0x2c81c0>=_0x2c933c){_0x2c81c0=_0x2c933c;_0xf67004=0xc8;}else{_0xf67004=0xce;}_0xd55424[_0xdc06('0x15')](_0xf67004);return _0xd55424[_0xdc06('0x1c')](_0xdc06('0x1d'),_0x5ad503+'-'+_0x2c81c0+'/'+_0x2c933c)[_0xdc06('0x17')](_0x52807c);}return null;};}function patchUpdates(_0x24299f){return function(_0x3e1c7a){try{jsonpatch['apply'](_0x3e1c7a,_0x24299f,!![]);}catch(_0x24154c){return BPromise[_0xdc06('0x1e')](_0x24154c);}return _0x3e1c7a[_0xdc06('0x1f')]();};}function saveUpdates(_0x14b29b,_0x4866a7){return function(_0x5c65f8){if(_0x5c65f8){return _0x5c65f8[_0xdc06('0x20')](_0x14b29b)[_0xdc06('0x21')](function(_0x4fa4a3){return _0x4fa4a3;});}return null;};}function removeEntity(_0xa7212c,_0x320cf8){return function(_0x1c4127){if(_0x1c4127){return _0x1c4127[_0xdc06('0x22')]()[_0xdc06('0x21')](function(){_0xa7212c[_0xdc06('0x15')](0xcc)[_0xdc06('0x16')]();});}};}function handleEntityNotFound(_0x81a9ac,_0x4c55dd){return function(_0x276328){if(!_0x276328){_0x81a9ac[_0xdc06('0x14')](0x194);}return _0x276328;};}function handleError(_0x3c75a7,_0x10d85f){_0x10d85f=_0x10d85f||0x1f4;return function(_0x4e943c){logger[_0xdc06('0x23')](_0x4e943c[_0xdc06('0x24')]);if(_0x4e943c[_0xdc06('0x25')]){delete _0x4e943c['name'];}_0x3c75a7[_0xdc06('0x15')](_0x10d85f)['send'](_0x4e943c);};}exports['index']=function(_0xb1f5ce,_0xeed22d){var _0x5dcaaf={},_0x1e9397={},_0x22b638={'count':0x0,'rows':[]};var _0x24f542=_[_0xdc06('0x26')](db[_0xdc06('0x27')]['rawAttributes'],function(_0x371568){return{'name':_0x371568[_0xdc06('0x28')],'type':_0x371568[_0xdc06('0x29')][_0xdc06('0x2a')]};});_0x1e9397['model']=_[_0xdc06('0x26')](_0x24f542,'name');_0x1e9397[_0xdc06('0x2b')]=_[_0xdc06('0x2c')](_0xb1f5ce[_0xdc06('0x2b')]);_0x1e9397['filters']=_[_0xdc06('0x2d')](_0x1e9397[_0xdc06('0x2e')],_0x1e9397['query']);_0x5dcaaf[_0xdc06('0x2f')]=_[_0xdc06('0x2d')](_0x1e9397[_0xdc06('0x2e')],qs['fields'](_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x30')]));_0x5dcaaf[_0xdc06('0x2f')]=_0x5dcaaf[_0xdc06('0x2f')][_0xdc06('0x31')]?_0x5dcaaf['attributes']:_0x1e9397[_0xdc06('0x2e')];if(!_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x32')](_0xdc06('0x33'))){_0x5dcaaf[_0xdc06('0x19')]=qs[_0xdc06('0x19')](_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x19')]);_0x5dcaaf['offset']=qs[_0xdc06('0x1a')](_0xb1f5ce[_0xdc06('0x2b')]['offset']);}_0x5dcaaf[_0xdc06('0x34')]=qs[_0xdc06('0x35')](_0xb1f5ce['query'][_0xdc06('0x35')]);_0x5dcaaf[_0xdc06('0x36')]=qs['filters'](_[_0xdc06('0x37')](_0xb1f5ce[_0xdc06('0x2b')],_0x1e9397[_0xdc06('0x38')]),_0x24f542);if(_0xb1f5ce['query'][_0xdc06('0x39')]){_0x5dcaaf[_0xdc06('0x36')]=_[_0xdc06('0x3a')](_0x5dcaaf[_0xdc06('0x36')],{'$or':_[_0xdc06('0x26')](_0x24f542,function(_0x2d9889){if(_0x2d9889['type']!==_0xdc06('0x3b')){var _0x523a2e={};_0x523a2e[_0x2d9889[_0xdc06('0x25')]]={'$like':'%'+_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x39')]+'%'};return _0x523a2e;}})});}_0x5dcaaf=_[_0xdc06('0x3a')]({},_0x5dcaaf,_0xb1f5ce['options']);var _0x5f5ad7={'where':_0x5dcaaf[_0xdc06('0x36')]};return db[_0xdc06('0x27')]['count'](_0x5f5ad7)[_0xdc06('0x21')](function(_0x5cd335){_0x22b638[_0xdc06('0x1b')]=_0x5cd335;if(_0xb1f5ce[_0xdc06('0x2b')][_0xdc06('0x3c')]){_0x5dcaaf[_0xdc06('0x3d')]=[{'all':!![]}];}return db[_0xdc06('0x27')]['findAll'](_0x5dcaaf);})['then'](function(_0x38aae4){_0x22b638['rows']=_0x38aae4;return _0x22b638;})[_0xdc06('0x21')](respondWithFilteredResult(_0xeed22d,_0x5dcaaf))['catch'](handleError(_0xeed22d,null));};exports[_0xdc06('0x3e')]=function(_0x2cdb6d,_0x3644e7){var _0x30e82e={'raw':!![],'where':{'id':_0x2cdb6d[_0xdc06('0x3f')]['id']}},_0x51a22d={};_0x51a22d['model']=_[_0xdc06('0x2c')](db[_0xdc06('0x27')][_0xdc06('0x40')]);_0x51a22d[_0xdc06('0x2b')]=_[_0xdc06('0x2c')](_0x2cdb6d['query']);_0x51a22d[_0xdc06('0x38')]=_[_0xdc06('0x2d')](_0x51a22d[_0xdc06('0x2e')],_0x51a22d[_0xdc06('0x2b')]);_0x30e82e[_0xdc06('0x2f')]=_[_0xdc06('0x2d')](_0x51a22d['model'],qs[_0xdc06('0x30')](_0x2cdb6d[_0xdc06('0x2b')]['fields']));_0x30e82e[_0xdc06('0x2f')]=_0x30e82e[_0xdc06('0x2f')][_0xdc06('0x31')]?_0x30e82e[_0xdc06('0x2f')]:_0x51a22d[_0xdc06('0x2e')];if(_0x2cdb6d[_0xdc06('0x2b')]['includeAll']){_0x30e82e[_0xdc06('0x3d')]=[{'all':!![]}];}_0x30e82e=_[_0xdc06('0x3a')]({},_0x30e82e,_0x2cdb6d[_0xdc06('0x41')]);return db[_0xdc06('0x27')][_0xdc06('0x42')](_0x30e82e)[_0xdc06('0x21')](handleEntityNotFound(_0x3644e7,null))[_0xdc06('0x21')](respondWithResult(_0x3644e7,null))[_0xdc06('0x43')](handleError(_0x3644e7,null));};exports['create']=function(_0xfddcc5,_0x56e63e){return db[_0xdc06('0x27')][_0xdc06('0x44')](_0xfddcc5[_0xdc06('0x45')],{})[_0xdc06('0x21')](respondWithResult(_0x56e63e,0xc9))[_0xdc06('0x43')](handleError(_0x56e63e,null));};exports[_0xdc06('0x20')]=function(_0x908c80,_0x51023b){if(_0x908c80[_0xdc06('0x45')]['id']){delete _0x908c80[_0xdc06('0x45')]['id'];}return db[_0xdc06('0x27')][_0xdc06('0x42')]({'where':{'id':_0x908c80[_0xdc06('0x3f')]['id']}})[_0xdc06('0x21')](handleEntityNotFound(_0x51023b,null))['then'](saveUpdates(_0x908c80['body'],null))[_0xdc06('0x21')](respondWithResult(_0x51023b,null))[_0xdc06('0x43')](handleError(_0x51023b,null));};exports[_0xdc06('0x22')]=function(_0x26489a,_0x4f34ef){return db['SmsTransferReport'][_0xdc06('0x42')]({'where':{'id':_0x26489a[_0xdc06('0x3f')]['id']}})[_0xdc06('0x21')](handleEntityNotFound(_0x4f34ef,null))[_0xdc06('0x21')](removeEntity(_0x4f34ef,null))[_0xdc06('0x43')](handleError(_0x4f34ef,null));};exports[_0xdc06('0x46')]=function(_0x464fce,_0xa6b9cd){return db[_0xdc06('0x27')][_0xdc06('0x46')]()[_0xdc06('0x21')](respondWithResult(_0xa6b9cd,null))[_0xdc06('0x43')](handleError(_0xa6b9cd,null));};
\ No newline at end of file
+var _0x18bc=['stack','name','send','index','map','SmsTransferReport','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','then'];(function(_0x4d569e,_0x1059ab){var _0x40f416=function(_0x4c5562){while(--_0x4c5562){_0x4d569e['push'](_0x4d569e['shift']());}};_0x40f416(++_0x1059ab);}(_0x18bc,0x73));var _0xc18b=function(_0x86d32e,_0x3a0bf1){_0x86d32e=_0x86d32e-0x0;var _0x50a35e=_0x18bc[_0x86d32e];return _0x50a35e;};'use strict';var emlformat=require(_0xc18b('0x0'));var rimraf=require(_0xc18b('0x1'));var zipdir=require(_0xc18b('0x2'));var jsonpatch=require(_0xc18b('0x3'));var rp=require('request-promise');var moment=require(_0xc18b('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc18b('0x5'));var path=require('path');var sox=require(_0xc18b('0x6'));var csv=require(_0xc18b('0x7'));var ejs=require(_0xc18b('0x8'));var fs=require('fs');var fs_extra=require(_0xc18b('0x9'));var _=require(_0xc18b('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc18b('0xb'));var deskjs=require(_0xc18b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc18b('0xd'));var Papa=require(_0xc18b('0xe'));var Redis=require(_0xc18b('0xf'));var authService=require(_0xc18b('0x10'));var qs=require(_0xc18b('0x11'));var as=require(_0xc18b('0x12'));var hardwareService=require(_0xc18b('0x13'));var logger=require(_0xc18b('0x14'))(_0xc18b('0x15'));var utils=require(_0xc18b('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc18b('0x17'));var db=require(_0xc18b('0x18'))['db'];function respondWithStatusCode(_0xd075fe,_0x4059f6){_0x4059f6=_0x4059f6||0xcc;return function(_0x41599e){if(_0x41599e){return _0xd075fe[_0xc18b('0x19')](_0x4059f6);}return _0xd075fe['status'](_0x4059f6)[_0xc18b('0x1a')]();};}function respondWithResult(_0x350a5d,_0x37d302){_0x37d302=_0x37d302||0xc8;return function(_0x1b622e){if(_0x1b622e){return _0x350a5d[_0xc18b('0x1b')](_0x37d302)[_0xc18b('0x1c')](_0x1b622e);}};}function respondWithFilteredResult(_0x125fd2,_0x3817c6){return function(_0x4de61f){if(_0x4de61f){var _0x39a506=typeof _0x3817c6['offset']===_0xc18b('0x1d')&&typeof _0x3817c6[_0xc18b('0x1e')]==='undefined';var _0xd3c391=_0x4de61f['count'];var _0x292042=_0x39a506?0x0:_0x3817c6[_0xc18b('0x1f')];var _0x3a6d30=_0x39a506?_0x4de61f[_0xc18b('0x20')]:_0x3817c6['offset']+_0x3817c6['limit'];var _0x19cfa9;if(_0x3a6d30>=_0xd3c391){_0x3a6d30=_0xd3c391;_0x19cfa9=0xc8;}else{_0x19cfa9=0xce;}_0x125fd2['status'](_0x19cfa9);return _0x125fd2[_0xc18b('0x21')](_0xc18b('0x22'),_0x292042+'-'+_0x3a6d30+'/'+_0xd3c391)[_0xc18b('0x1c')](_0x4de61f);}return null;};}function patchUpdates(_0x37fa57){return function(_0xd9dfe8){try{jsonpatch[_0xc18b('0x23')](_0xd9dfe8,_0x37fa57,!![]);}catch(_0x5e7066){return BPromise[_0xc18b('0x24')](_0x5e7066);}return _0xd9dfe8[_0xc18b('0x25')]();};}function saveUpdates(_0x28a94b,_0x4a2d1f){return function(_0x938fe7){if(_0x938fe7){return _0x938fe7[_0xc18b('0x26')](_0x28a94b)['then'](function(_0x26fa15){return _0x26fa15;});}return null;};}function removeEntity(_0x477424,_0x275a81){return function(_0x45a758){if(_0x45a758){return _0x45a758[_0xc18b('0x27')]()[_0xc18b('0x28')](function(){_0x477424[_0xc18b('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51c6c0,_0x393d69){return function(_0x32c361){if(!_0x32c361){_0x51c6c0[_0xc18b('0x19')](0x194);}return _0x32c361;};}function handleError(_0x575000,_0x3eb4f1){_0x3eb4f1=_0x3eb4f1||0x1f4;return function(_0x222384){logger['error'](_0x222384[_0xc18b('0x29')]);if(_0x222384[_0xc18b('0x2a')]){delete _0x222384[_0xc18b('0x2a')];}_0x575000[_0xc18b('0x1b')](_0x3eb4f1)[_0xc18b('0x2b')](_0x222384);};}exports[_0xc18b('0x2c')]=function(_0x445e62,_0x273a1d){var _0x247a86={},_0x266e8e={},_0x5ae667={'count':0x0,'rows':[]};var _0x2d035b=_[_0xc18b('0x2d')](db[_0xc18b('0x2e')]['rawAttributes'],function(_0x5f3772){return{'name':_0x5f3772[_0xc18b('0x2f')],'type':_0x5f3772['type'][_0xc18b('0x30')]};});_0x266e8e['model']=_[_0xc18b('0x2d')](_0x2d035b,_0xc18b('0x2a'));_0x266e8e[_0xc18b('0x31')]=_[_0xc18b('0x32')](_0x445e62['query']);_0x266e8e['filters']=_[_0xc18b('0x33')](_0x266e8e[_0xc18b('0x34')],_0x266e8e[_0xc18b('0x31')]);_0x247a86[_0xc18b('0x35')]=_[_0xc18b('0x33')](_0x266e8e[_0xc18b('0x34')],qs['fields'](_0x445e62['query'][_0xc18b('0x36')]));_0x247a86[_0xc18b('0x35')]=_0x247a86[_0xc18b('0x35')][_0xc18b('0x37')]?_0x247a86[_0xc18b('0x35')]:_0x266e8e[_0xc18b('0x34')];if(!_0x445e62[_0xc18b('0x31')][_0xc18b('0x38')](_0xc18b('0x39'))){_0x247a86[_0xc18b('0x1e')]=qs[_0xc18b('0x1e')](_0x445e62[_0xc18b('0x31')][_0xc18b('0x1e')]);_0x247a86[_0xc18b('0x1f')]=qs['offset'](_0x445e62[_0xc18b('0x31')][_0xc18b('0x1f')]);}_0x247a86[_0xc18b('0x3a')]=qs[_0xc18b('0x3b')](_0x445e62[_0xc18b('0x31')][_0xc18b('0x3b')]);_0x247a86[_0xc18b('0x3c')]=qs['filters'](_[_0xc18b('0x3d')](_0x445e62[_0xc18b('0x31')],_0x266e8e[_0xc18b('0x3e')]),_0x2d035b);if(_0x445e62[_0xc18b('0x31')][_0xc18b('0x3f')]){_0x247a86[_0xc18b('0x3c')]=_[_0xc18b('0x40')](_0x247a86[_0xc18b('0x3c')],{'$or':_[_0xc18b('0x2d')](_0x2d035b,function(_0x57f843){if(_0x57f843[_0xc18b('0x41')]!==_0xc18b('0x42')){var _0x1352b8={};_0x1352b8[_0x57f843[_0xc18b('0x2a')]]={'$like':'%'+_0x445e62['query'][_0xc18b('0x3f')]+'%'};return _0x1352b8;}})});}_0x247a86=_[_0xc18b('0x40')]({},_0x247a86,_0x445e62['options']);var _0x2483d9={'where':_0x247a86[_0xc18b('0x3c')]};return db[_0xc18b('0x2e')][_0xc18b('0x20')](_0x2483d9)[_0xc18b('0x28')](function(_0x58c05c){_0x5ae667[_0xc18b('0x20')]=_0x58c05c;if(_0x445e62[_0xc18b('0x31')][_0xc18b('0x43')]){_0x247a86[_0xc18b('0x44')]=[{'all':!![]}];}return db[_0xc18b('0x2e')][_0xc18b('0x45')](_0x247a86);})[_0xc18b('0x28')](function(_0x69ed95){_0x5ae667[_0xc18b('0x46')]=_0x69ed95;return _0x5ae667;})[_0xc18b('0x28')](respondWithFilteredResult(_0x273a1d,_0x247a86))[_0xc18b('0x47')](handleError(_0x273a1d,null));};exports['show']=function(_0x368b9f,_0x2eebe3){var _0x402bb5={'raw':!![],'where':{'id':_0x368b9f['params']['id']}},_0x60f63f={};_0x60f63f[_0xc18b('0x34')]=_[_0xc18b('0x32')](db[_0xc18b('0x2e')]['rawAttributes']);_0x60f63f[_0xc18b('0x31')]=_[_0xc18b('0x32')](_0x368b9f[_0xc18b('0x31')]);_0x60f63f[_0xc18b('0x3e')]=_[_0xc18b('0x33')](_0x60f63f[_0xc18b('0x34')],_0x60f63f['query']);_0x402bb5[_0xc18b('0x35')]=_[_0xc18b('0x33')](_0x60f63f[_0xc18b('0x34')],qs[_0xc18b('0x36')](_0x368b9f[_0xc18b('0x31')]['fields']));_0x402bb5['attributes']=_0x402bb5[_0xc18b('0x35')][_0xc18b('0x37')]?_0x402bb5['attributes']:_0x60f63f['model'];if(_0x368b9f['query'][_0xc18b('0x43')]){_0x402bb5[_0xc18b('0x44')]=[{'all':!![]}];}_0x402bb5=_['merge']({},_0x402bb5,_0x368b9f[_0xc18b('0x48')]);return db[_0xc18b('0x2e')][_0xc18b('0x49')](_0x402bb5)[_0xc18b('0x28')](handleEntityNotFound(_0x2eebe3,null))[_0xc18b('0x28')](respondWithResult(_0x2eebe3,null))[_0xc18b('0x47')](handleError(_0x2eebe3,null));};exports[_0xc18b('0x4a')]=function(_0x5eec7b,_0x5c5c5e){return db[_0xc18b('0x2e')][_0xc18b('0x4a')](_0x5eec7b[_0xc18b('0x4b')],{})[_0xc18b('0x28')](respondWithResult(_0x5c5c5e,0xc9))[_0xc18b('0x47')](handleError(_0x5c5c5e,null));};exports[_0xc18b('0x26')]=function(_0x1b2347,_0x2b68d2){if(_0x1b2347[_0xc18b('0x4b')]['id']){delete _0x1b2347['body']['id'];}return db['SmsTransferReport']['find']({'where':{'id':_0x1b2347[_0xc18b('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2b68d2,null))[_0xc18b('0x28')](saveUpdates(_0x1b2347[_0xc18b('0x4b')],null))['then'](respondWithResult(_0x2b68d2,null))['catch'](handleError(_0x2b68d2,null));};exports[_0xc18b('0x27')]=function(_0x4cdabe,_0x1ac0ae){return db[_0xc18b('0x2e')][_0xc18b('0x49')]({'where':{'id':_0x4cdabe[_0xc18b('0x4c')]['id']}})[_0xc18b('0x28')](handleEntityNotFound(_0x1ac0ae,null))['then'](removeEntity(_0x1ac0ae,null))[_0xc18b('0x47')](handleError(_0x1ac0ae,null));};exports[_0xc18b('0x4d')]=function(_0x4be76a,_0x461c7e){return db[_0xc18b('0x2e')]['describe']()['then'](respondWithResult(_0x461c7e,null))[_0xc18b('0x47')](handleError(_0x461c7e,null));};
\ No newline at end of file
index 6e87cbe..005966c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f7=['bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util'];(function(_0x547842,_0x1c61e8){var _0x540258=function(_0x5da6ae){while(--_0x5da6ae){_0x547842['push'](_0x547842['shift']());}};_0x540258(++_0x1c61e8);}(_0x97f7,0x10f));var _0x797f=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0x97f7[_0x342baa];return _0x1208f3;};'use strict';var _=require(_0x797f('0x0'));var util=require(_0x797f('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x797f('0x2'));var rp=require(_0x797f('0x3'));var fs=require('fs');var path=require(_0x797f('0x4'));var rimraf=require(_0x797f('0x5'));var config=require(_0x797f('0x6'));var attributes=require(_0x797f('0x7'));module[_0x797f('0x8')]=function(_0x1a7887,_0x32ab51){return _0x1a7887[_0x797f('0x9')](_0x797f('0xa'),attributes,{'tableName':_0x797f('0xb'),'paranoid':![],'indexes':[{'name':_0x797f('0xc'),'fields':[_0x797f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84ab=['exports','SmsTransferReport','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./smsTransferReport.attributes'];(function(_0x5e3454,_0x38c1a3){var _0x27f0bd=function(_0x97d97e){while(--_0x97d97e){_0x5e3454['push'](_0x5e3454['shift']());}};_0x27f0bd(++_0x38c1a3);}(_0x84ab,0x12f));var _0xb84a=function(_0x233cb1,_0x8ca9a2){_0x233cb1=_0x233cb1-0x0;var _0x29ee7e=_0x84ab[_0x233cb1];return _0x29ee7e;};'use strict';var _=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var logger=require(_0xb84a('0x2'))(_0xb84a('0x3'));var moment=require(_0xb84a('0x4'));var BPromise=require('bluebird');var rp=require(_0xb84a('0x5'));var fs=require('fs');var path=require(_0xb84a('0x6'));var rimraf=require('rimraf');var config=require(_0xb84a('0x7'));var attributes=require(_0xb84a('0x8'));module[_0xb84a('0x9')]=function(_0x5b9def,_0x521a64){return _0x5b9def['define'](_0xb84a('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xb84a('0xb'),'fields':[_0xb84a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 08802aa..b3a0f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c5=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x56103c,_0x1f7a8b){var _0x439fc2=function(_0x4f8cd2){while(--_0x4f8cd2){_0x56103c['push'](_0x56103c['shift']());}};_0x439fc2(++_0x1f7a8b);}(_0xe3c5,0x17d));var _0x5e3c=function(_0x55821d,_0x27a22e){_0x55821d=_0x55821d-0x0;var _0x58ea8a=_0xe3c5[_0x55821d];return _0x58ea8a;};'use strict';var _=require(_0x5e3c('0x0'));var util=require(_0x5e3c('0x1'));var moment=require(_0x5e3c('0x2'));var BPromise=require(_0x5e3c('0x3'));var rs=require(_0x5e3c('0x4'));var fs=require('fs');var Redis=require(_0x5e3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5e3c('0x6'));var logger=require(_0x5e3c('0x7'))(_0x5e3c('0x8'));var config=require(_0x5e3c('0x9'));var jayson=require(_0x5e3c('0xa'));var client=jayson[_0x5e3c('0xb')][_0x5e3c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d6b68,_0xc8c788,_0x17076a){return new BPromise(function(_0x3139da,_0x3068c6){return client['request'](_0x2d6b68,_0x17076a)['then'](function(_0x32942e){logger[_0x5e3c('0xd')](_0x5e3c('0xe'),_0xc8c788,_0x5e3c('0xf'));logger[_0x5e3c('0x10')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0xc8c788,_0x5e3c('0xf'),JSON[_0x5e3c('0x11')](_0x32942e));if(_0x32942e['error']){if(_0x32942e[_0x5e3c('0x12')]['code']===0x1f4){logger['error'](_0x5e3c('0xe'),_0xc8c788,_0x32942e[_0x5e3c('0x12')][_0x5e3c('0x13')]);return _0x3068c6(_0x32942e[_0x5e3c('0x12')][_0x5e3c('0x13')]);}logger[_0x5e3c('0x12')](_0x5e3c('0xe'),_0xc8c788,_0x32942e[_0x5e3c('0x12')]['message']);return _0x3139da(_0x32942e['error'][_0x5e3c('0x13')]);}else{logger[_0x5e3c('0xd')](_0x5e3c('0xe'),_0xc8c788,'request\x20sent');_0x3139da(_0x32942e['result'][_0x5e3c('0x13')]);}})[_0x5e3c('0x14')](function(_0x321487){logger[_0x5e3c('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0xc8c788,_0x321487);_0x3068c6(_0x321487);});});}
\ No newline at end of file
+var _0x6a88=['../../config/logger','jayson/promise','client','then','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x6a88,0xa9));var _0x86a8=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x6a88[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x86a8('0x0'));var util=require(_0x86a8('0x1'));var moment=require(_0x86a8('0x2'));var BPromise=require(_0x86a8('0x3'));var rs=require(_0x86a8('0x4'));var fs=require('fs');var Redis=require(_0x86a8('0x5'));var db=require(_0x86a8('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x86a8('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x86a8('0x8'));var client=jayson[_0x86a8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3726f0,_0x479d92,_0x47bc1e){return new BPromise(function(_0xc5e910,_0x11481e){return client['request'](_0x3726f0,_0x47bc1e)[_0x86a8('0xa')](function(_0xaf94b7){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x479d92,_0x86a8('0xb'));logger[_0x86a8('0xc')](_0x86a8('0xd'),_0x479d92,_0x86a8('0xb'),JSON[_0x86a8('0xe')](_0xaf94b7));if(_0xaf94b7[_0x86a8('0xf')]){if(_0xaf94b7[_0x86a8('0xf')][_0x86a8('0x10')]===0x1f4){logger[_0x86a8('0xf')](_0x86a8('0x11'),_0x479d92,_0xaf94b7['error'][_0x86a8('0x12')]);return _0x11481e(_0xaf94b7['error']['message']);}logger[_0x86a8('0xf')](_0x86a8('0x11'),_0x479d92,_0xaf94b7['error']['message']);return _0xc5e910(_0xaf94b7['error'][_0x86a8('0x12')]);}else{logger[_0x86a8('0x13')]('SmsTransferReport,\x20%s,\x20%s',_0x479d92,_0x86a8('0xb'));_0xc5e910(_0xaf94b7[_0x86a8('0x14')][_0x86a8('0x12')]);}})[_0x86a8('0x15')](function(_0x540be7){logger[_0x86a8('0xf')]('SmsTransferReport,\x20%s,\x20%s',_0x479d92,_0x540be7);_0x11481e(_0x540be7);});});}
\ No newline at end of file
index 04b53d2..7699af7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cd3=['root','originalname','replace','format','basename','extname','post','single','file','create','put','/:id','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id/download','diskStorage','join'];(function(_0x17e696,_0xad1c39){var _0x1a9e33=function(_0x28d22a){while(--_0x28d22a){_0x17e696['push'](_0x17e696['shift']());}};_0x1a9e33(++_0xad1c39);}(_0x9cd3,0xa0));var _0x39cd=function(_0x118afa,_0x4bf0c1){_0x118afa=_0x118afa-0x0;var _0x167d76=_0x9cd3[_0x118afa];return _0x167d76;};'use strict';var multer=require('multer');var util=require(_0x39cd('0x0'));var path=require(_0x39cd('0x1'));var timeout=require(_0x39cd('0x2'));var express=require('express');var router=express[_0x39cd('0x3')]();var fs_extra=require(_0x39cd('0x4'));var auth=require(_0x39cd('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x39cd('0x6'));var controller=require(_0x39cd('0x7'));router[_0x39cd('0x8')]('/',auth[_0x39cd('0x9')](),controller[_0x39cd('0xa')]);router[_0x39cd('0x8')]('/:id',auth[_0x39cd('0x9')](),controller['show']);router[_0x39cd('0x8')](_0x39cd('0xb'),auth[_0x39cd('0x9')](),controller['download']);var upload=multer({'storage':multer[_0x39cd('0xc')]({'destination':function(_0x48ed8b,_0x3bd8d1,_0xa4f48f){_0xa4f48f(null,path[_0x39cd('0xd')](config[_0x39cd('0xe')],'server/files/sounds/original/'));},'filename':function(_0x58f3b0,_0x48a928,_0xa5f77b){_0x48a928['originalname']=_0x48a928[_0x39cd('0xf')][_0x39cd('0x10')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xa5f77b(null,util[_0x39cd('0x11')]('%s-%s%s',path[_0x39cd('0x12')](_0x48a928[_0x39cd('0xf')],path[_0x39cd('0x13')](_0x48a928[_0x39cd('0xf')])),Date['now'](),path[_0x39cd('0x13')](_0x48a928['originalname'])));}})});router[_0x39cd('0x14')]('/',upload[_0x39cd('0x15')](_0x39cd('0x16')),controller[_0x39cd('0x17')]);router[_0x39cd('0x18')](_0x39cd('0x19'),auth[_0x39cd('0x9')](),controller[_0x39cd('0x1a')]);router[_0x39cd('0x1b')](_0x39cd('0x19'),auth[_0x39cd('0x9')](),controller[_0x39cd('0x1b')]);module[_0x39cd('0x1c')]=router;
\ No newline at end of file
+var _0x1afb=['diskStorage','join','server/files/sounds/original/','replace','format','basename','originalname','extname','now','post','single','file','update','delete','multer','util','path','connect-timeout','../../config/environment','./sound.controller','isAuthenticated','index','get','/:id','/:id/download','download'];(function(_0x234ce7,_0x3e909c){var _0x57c561=function(_0x8ac1bb){while(--_0x8ac1bb){_0x234ce7['push'](_0x234ce7['shift']());}};_0x57c561(++_0x3e909c);}(_0x1afb,0x194));var _0xb1af=function(_0x3533ef,_0x1a2de6){_0x3533ef=_0x3533ef-0x0;var _0x486887=_0x1afb[_0x3533ef];return _0x486887;};'use strict';var multer=require(_0xb1af('0x0'));var util=require(_0xb1af('0x1'));var path=require(_0xb1af('0x2'));var timeout=require(_0xb1af('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb1af('0x4'));var controller=require(_0xb1af('0x5'));router['get']('/',auth[_0xb1af('0x6')](),controller[_0xb1af('0x7')]);router[_0xb1af('0x8')](_0xb1af('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xb1af('0x8')](_0xb1af('0xa'),auth['isAuthenticated'](),controller[_0xb1af('0xb')]);var upload=multer({'storage':multer[_0xb1af('0xc')]({'destination':function(_0x20aa67,_0x10e829,_0xfd6928){_0xfd6928(null,path[_0xb1af('0xd')](config['root'],_0xb1af('0xe')));},'filename':function(_0x461260,_0x34cfff,_0x16da5a){_0x34cfff['originalname']=_0x34cfff['originalname'][_0xb1af('0xf')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x16da5a(null,util[_0xb1af('0x10')]('%s-%s%s',path[_0xb1af('0x11')](_0x34cfff[_0xb1af('0x12')],path[_0xb1af('0x13')](_0x34cfff[_0xb1af('0x12')])),Date[_0xb1af('0x14')](),path[_0xb1af('0x13')](_0x34cfff[_0xb1af('0x12')])));}})});router[_0xb1af('0x15')]('/',upload[_0xb1af('0x16')](_0xb1af('0x17')),controller['create']);router['put'](_0xb1af('0x9'),auth[_0xb1af('0x6')](),controller[_0xb1af('0x18')]);router['delete']('/:id',auth[_0xb1af('0x6')](),controller[_0xb1af('0x19')]);module['exports']=router;
\ No newline at end of file
index 70131b1..5ce9f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace5=['STRING','FLOAT','INTEGER','BIGINT','exports'];(function(_0x13342f,_0x3d6303){var _0x2fc1fc=function(_0x2d991f){while(--_0x2d991f){_0x13342f['push'](_0x13342f['shift']());}};_0x2fc1fc(++_0x3d6303);}(_0xace5,0x1df));var _0x5ace=function(_0x5ef990,_0x1c8b5d){_0x5ef990=_0x5ef990-0x0;var _0x1d67b3=_0xace5[_0x5ef990];return _0x1d67b3;};'use strict';var Sequelize=require('sequelize');module[_0x5ace('0x0')]={'name':{'type':Sequelize[_0x5ace('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0x5ace('0x1')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0x5ace('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x5ace('0x3')]},'original_bitRate':{'type':Sequelize[_0x5ace('0x4')]},'original_sampleRate':{'type':Sequelize[_0x5ace('0x3')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x5ace('0x2')]},'converted_sampleCount':{'type':Sequelize[_0x5ace('0x4')]},'converted_channelCount':{'type':Sequelize[_0x5ace('0x3')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x5ace('0x3')]}};
\ No newline at end of file
+var _0xe59f=['sequelize','exports','STRING','INTEGER','BIGINT'];(function(_0x271f15,_0x2659d6){var _0x21aba1=function(_0x523eb5){while(--_0x523eb5){_0x271f15['push'](_0x271f15['shift']());}};_0x21aba1(++_0x2659d6);}(_0xe59f,0x131));var _0xfe59=function(_0x430602,_0x494dca){_0x430602=_0x430602-0x0;var _0x48998c=_0xe59f[_0x430602];return _0x48998c;};'use strict';var Sequelize=require(_0xfe59('0x0'));module[_0xfe59('0x1')]={'name':{'type':Sequelize[_0xfe59('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xfe59('0x2')]},'display_name':{'type':Sequelize[_0xfe59('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xfe59('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xfe59('0x3')]},'original_bitRate':{'type':Sequelize[_0xfe59('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xfe59('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0xfe59('0x3')]},'converted_bitRate':{'type':Sequelize[_0xfe59('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 81fae2c..c6a6e79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc603=['reject','update','then','destroy','get','UserProfileResource','error','stack','name','index','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','findAll','show','includeAll','include','find','catch','download','params','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','format','file','originalname','extname','filename','substring','wav','%s.%s','basename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','src','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','create','body','role','userProfileId','user','UserProfileSection','Sounds','autoAssociation','start','send','description','delete','server/files/sounds/original','original_format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply'];(function(_0x23eb26,_0x474628){var _0x4969e2=function(_0x3095db){while(--_0x3095db){_0x23eb26['push'](_0x23eb26['shift']());}};_0x4969e2(++_0x474628);}(_0xc603,0x1d5));var _0x3c60=function(_0x19c121,_0x4a8a18){_0x19c121=_0x19c121-0x0;var _0x1ccb31=_0xc603[_0x19c121];return _0x1ccb31;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c60('0x0'));var zipdir=require(_0x3c60('0x1'));var jsonpatch=require(_0x3c60('0x2'));var rp=require(_0x3c60('0x3'));var moment=require(_0x3c60('0x4'));var BPromise=require(_0x3c60('0x5'));var Mustache=require(_0x3c60('0x6'));var util=require(_0x3c60('0x7'));var path=require('path');var sox=require(_0x3c60('0x8'));var csv=require(_0x3c60('0x9'));var ejs=require(_0x3c60('0xa'));var fs=require('fs');var fs_extra=require(_0x3c60('0xb'));var _=require(_0x3c60('0xc'));var squel=require(_0x3c60('0xd'));var crypto=require(_0x3c60('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3c60('0xf'));var toCsv=require(_0x3c60('0x9'));var querystring=require('querystring');var Papa=require(_0x3c60('0x10'));var Redis=require('ioredis');var authService=require(_0x3c60('0x11'));var qs=require(_0x3c60('0x12'));var as=require(_0x3c60('0x13'));var hardwareService=require(_0x3c60('0x14'));var logger=require(_0x3c60('0x15'))(_0x3c60('0x16'));var utils=require(_0x3c60('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3c60('0x18'))['db'];function respondWithStatusCode(_0x3a35ec,_0x12805d){_0x12805d=_0x12805d||0xcc;return function(_0x4befb7){if(_0x4befb7){return _0x3a35ec[_0x3c60('0x19')](_0x12805d);}return _0x3a35ec[_0x3c60('0x1a')](_0x12805d)[_0x3c60('0x1b')]();};}function respondWithResult(_0x550f2d,_0x5785ce){_0x5785ce=_0x5785ce||0xc8;return function(_0x2e330b){if(_0x2e330b){return _0x550f2d[_0x3c60('0x1a')](_0x5785ce)['json'](_0x2e330b);}};}function respondWithFilteredResult(_0x4f0925,_0x2c3511){return function(_0x38e740){if(_0x38e740){var _0xf451ac=typeof _0x2c3511[_0x3c60('0x1c')]==='undefined'&&typeof _0x2c3511['limit']===_0x3c60('0x1d');var _0x27fee3=_0x38e740[_0x3c60('0x1e')];var _0x494f5e=_0xf451ac?0x0:_0x2c3511['offset'];var _0x221557=_0xf451ac?_0x38e740[_0x3c60('0x1e')]:_0x2c3511['offset']+_0x2c3511['limit'];var _0x1f6a19;if(_0x221557>=_0x27fee3){_0x221557=_0x27fee3;_0x1f6a19=0xc8;}else{_0x1f6a19=0xce;}_0x4f0925[_0x3c60('0x1a')](_0x1f6a19);return _0x4f0925[_0x3c60('0x1f')](_0x3c60('0x20'),_0x494f5e+'-'+_0x221557+'/'+_0x27fee3)[_0x3c60('0x21')](_0x38e740);}return null;};}function patchUpdates(_0x2cfb73){return function(_0x3568fb){try{jsonpatch[_0x3c60('0x22')](_0x3568fb,_0x2cfb73,!![]);}catch(_0x4ae905){return BPromise[_0x3c60('0x23')](_0x4ae905);}return _0x3568fb['save']();};}function saveUpdates(_0x249d25,_0x4a6881){return function(_0x138fa9){if(_0x138fa9){return _0x138fa9[_0x3c60('0x24')](_0x249d25)[_0x3c60('0x25')](function(_0x304a5c){return _0x304a5c;});}return null;};}function removeEntity(_0x4d4ebc,_0x532851){return function(_0x96e7d0){if(_0x96e7d0){return _0x96e7d0[_0x3c60('0x26')]()[_0x3c60('0x25')](function(){var _0x14633a=_0x96e7d0[_0x3c60('0x27')]({'plain':!![]});var _0x46cedd='Sounds';return db[_0x3c60('0x28')][_0x3c60('0x26')]({'where':{'type':_0x46cedd,'resourceId':_0x14633a['id']}})[_0x3c60('0x25')](function(){return _0x96e7d0;});})[_0x3c60('0x25')](function(){_0x4d4ebc[_0x3c60('0x1a')](0xcc)[_0x3c60('0x1b')]();});}};}function handleEntityNotFound(_0x2e8921,_0x1a56ff){return function(_0x68cbd7){if(!_0x68cbd7){_0x2e8921[_0x3c60('0x19')](0x194);}return _0x68cbd7;};}function handleError(_0x5bb8dd,_0x222fcc){_0x222fcc=_0x222fcc||0x1f4;return function(_0x229691){logger[_0x3c60('0x29')](_0x229691[_0x3c60('0x2a')]);if(_0x229691[_0x3c60('0x2b')]){delete _0x229691[_0x3c60('0x2b')];}_0x5bb8dd['status'](_0x222fcc)['send'](_0x229691);};}exports[_0x3c60('0x2c')]=function(_0x136a3b,_0x3edb82){var _0x2e9bd6={},_0x39603b={},_0x27c6e8={'count':0x0,'rows':[]};var _0x6b622a=_[_0x3c60('0x2d')](db[_0x3c60('0x2e')][_0x3c60('0x2f')],function(_0x49e855){return{'name':_0x49e855[_0x3c60('0x30')],'type':_0x49e855[_0x3c60('0x31')][_0x3c60('0x32')]};});_0x39603b[_0x3c60('0x33')]=_[_0x3c60('0x2d')](_0x6b622a,_0x3c60('0x2b'));_0x39603b[_0x3c60('0x34')]=_[_0x3c60('0x35')](_0x136a3b[_0x3c60('0x34')]);_0x39603b[_0x3c60('0x36')]=_[_0x3c60('0x37')](_0x39603b['model'],_0x39603b[_0x3c60('0x34')]);_0x2e9bd6[_0x3c60('0x38')]=_[_0x3c60('0x37')](_0x39603b[_0x3c60('0x33')],qs[_0x3c60('0x39')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x39')]));_0x2e9bd6[_0x3c60('0x38')]=_0x2e9bd6['attributes'][_0x3c60('0x3a')]?_0x2e9bd6[_0x3c60('0x38')]:_0x39603b[_0x3c60('0x33')];if(!_0x136a3b[_0x3c60('0x34')]['hasOwnProperty'](_0x3c60('0x3b'))){_0x2e9bd6[_0x3c60('0x3c')]=qs[_0x3c60('0x3c')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x3c')]);_0x2e9bd6[_0x3c60('0x1c')]=qs[_0x3c60('0x1c')](_0x136a3b[_0x3c60('0x34')][_0x3c60('0x1c')]);}_0x2e9bd6[_0x3c60('0x3d')]=qs[_0x3c60('0x3e')](_0x136a3b[_0x3c60('0x34')]['sort']);_0x2e9bd6['where']=qs[_0x3c60('0x36')](_[_0x3c60('0x3f')](_0x136a3b[_0x3c60('0x34')],_0x39603b[_0x3c60('0x36')]),_0x6b622a);if(_0x136a3b['query'][_0x3c60('0x40')]){_0x2e9bd6[_0x3c60('0x41')]=_['merge'](_0x2e9bd6[_0x3c60('0x41')],{'$or':_[_0x3c60('0x2d')](_0x6b622a,function(_0x5589b0){if(_0x5589b0[_0x3c60('0x31')]!==_0x3c60('0x42')){var _0x5592b4={};_0x5592b4[_0x5589b0['name']]={'$like':'%'+_0x136a3b[_0x3c60('0x34')][_0x3c60('0x40')]+'%'};return _0x5592b4;}})});}_0x2e9bd6=_[_0x3c60('0x43')]({},_0x2e9bd6,_0x136a3b[_0x3c60('0x44')]);var _0x589c4d={'where':_0x2e9bd6[_0x3c60('0x41')]};return db[_0x3c60('0x2e')][_0x3c60('0x1e')](_0x589c4d)[_0x3c60('0x25')](function(_0x41f277){_0x27c6e8[_0x3c60('0x1e')]=_0x41f277;if(_0x136a3b[_0x3c60('0x34')]['includeAll']){_0x2e9bd6['include']=[{'all':!![]}];}return db[_0x3c60('0x2e')][_0x3c60('0x45')](_0x2e9bd6);})['then'](function(_0xe43412){_0x27c6e8['rows']=_0xe43412;return _0x27c6e8;})[_0x3c60('0x25')](respondWithFilteredResult(_0x3edb82,_0x2e9bd6))['catch'](handleError(_0x3edb82,null));};exports[_0x3c60('0x46')]=function(_0x14abee,_0x38f545){var _0x3e49a9={'raw':!![],'where':{'id':_0x14abee['params']['id']}},_0x5c07f4={};_0x5c07f4['model']=_[_0x3c60('0x35')](db[_0x3c60('0x2e')][_0x3c60('0x2f')]);_0x5c07f4[_0x3c60('0x34')]=_[_0x3c60('0x35')](_0x14abee[_0x3c60('0x34')]);_0x5c07f4['filters']=_['intersection'](_0x5c07f4['model'],_0x5c07f4['query']);_0x3e49a9[_0x3c60('0x38')]=_['intersection'](_0x5c07f4[_0x3c60('0x33')],qs[_0x3c60('0x39')](_0x14abee[_0x3c60('0x34')][_0x3c60('0x39')]));_0x3e49a9[_0x3c60('0x38')]=_0x3e49a9['attributes'][_0x3c60('0x3a')]?_0x3e49a9[_0x3c60('0x38')]:_0x5c07f4[_0x3c60('0x33')];if(_0x14abee[_0x3c60('0x34')][_0x3c60('0x47')]){_0x3e49a9[_0x3c60('0x48')]=[{'all':!![]}];}_0x3e49a9=_[_0x3c60('0x43')]({},_0x3e49a9,_0x14abee[_0x3c60('0x44')]);return db['Sound'][_0x3c60('0x49')](_0x3e49a9)[_0x3c60('0x25')](handleEntityNotFound(_0x38f545,null))[_0x3c60('0x25')](respondWithResult(_0x38f545,null))[_0x3c60('0x4a')](handleError(_0x38f545,null));};exports[_0x3c60('0x4b')]=function(_0x26c420,_0x4c66ef,_0x1676a7){return db[_0x3c60('0x2e')][_0x3c60('0x49')]({'where':{'id':_0x26c420[_0x3c60('0x4c')]['id']},'attributes':[_0x3c60('0x2b'),_0x3c60('0x4d'),_0x3c60('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x4c66ef,null))[_0x3c60('0x25')](function(_0x4bd89a){if(_0x4bd89a){if(!fs[_0x3c60('0x4f')](path[_0x3c60('0x50')](config[_0x3c60('0x51')],_0x3c60('0x52'),_0x4bd89a[_0x3c60('0x4d')]+'.'+_0x4bd89a[_0x3c60('0x4e')]))){throw new db['Sequelize']['ValidationError']('Sound\x20not\x20found');}return _0x4c66ef['download'](path[_0x3c60('0x50')](config[_0x3c60('0x51')],'server/files/sounds/converted',util[_0x3c60('0x53')]('%s.%s',_0x4bd89a[_0x3c60('0x4d')],_0x4bd89a[_0x3c60('0x4e')])),util['format']('%s.%s',_0x4bd89a['name'],_0x4bd89a['converted_format']));}return null;})[_0x3c60('0x4a')](handleError(_0x4c66ef,null));};exports['create']=function(_0x31010e,_0x398576,_0x27de9d){var _0x2346bd={'name':path['basename'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x55')],path[_0x3c60('0x56')](_0x31010e['file'][_0x3c60('0x55')])),'save_name':path['basename'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')],path['extname'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')])),'original_format':path['extname'](_0x31010e[_0x3c60('0x54')][_0x3c60('0x55')])[_0x3c60('0x58')](0x1),'converted_format':_0x3c60('0x59')};var _0x544efc=path[_0x3c60('0x50')](config[_0x3c60('0x51')],'server/files/sounds/original',_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')]);var _0x1bd875=path['join'](config[_0x3c60('0x51')],_0x3c60('0x52'),util[_0x3c60('0x53')](_0x3c60('0x5a'),path[_0x3c60('0x5b')](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')],path[_0x3c60('0x56')](_0x31010e[_0x3c60('0x54')][_0x3c60('0x57')])),_0x2346bd[_0x3c60('0x4e')]));logger[_0x3c60('0x5c')](_0x3c60('0x5d'),_0x544efc);logger[_0x3c60('0x5c')](_0x3c60('0x5e'),_0x1bd875);try{fs[_0x3c60('0x5f')](_0x544efc,parseInt(_0x3c60('0x60'),0x8));var _0x1c0999=sox[_0x3c60('0x61')](_0x544efc,_0x1bd875,{'sampleRate':0x1f40,'format':_0x3c60('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c0999['on'](_0x3c60('0x29'),function(_0x3ae44e){fs[_0x3c60('0x62')](_0x544efc);_0x398576[_0x3c60('0x1a')](0x1f4)['send'](_0x3ae44e);});_0x1c0999['on'](_0x3c60('0x63'),function(_0x493571){_0x2346bd['original_duration']=isNaN(_0x493571[_0x3c60('0x64')])?null:_0x493571[_0x3c60('0x64')]*0x3e8;_0x2346bd[_0x3c60('0x65')]=isNaN(_0x493571['sampleCount'])?null:_0x493571[_0x3c60('0x66')];_0x2346bd['original_channelCount']=isNaN(_0x493571[_0x3c60('0x67')])?null:_0x493571[_0x3c60('0x67')];_0x2346bd[_0x3c60('0x68')]=isNaN(_0x493571['bitRate'])?null:_0x493571[_0x3c60('0x69')];_0x2346bd[_0x3c60('0x6a')]=isNaN(_0x493571[_0x3c60('0x6b')])?null:_0x493571[_0x3c60('0x6b')];});_0x1c0999['on']('dest',function(_0x40b26b){_0x2346bd[_0x3c60('0x6c')]=isNaN(_0x40b26b[_0x3c60('0x64')])?null:_0x40b26b[_0x3c60('0x64')]*0x3e8;_0x2346bd[_0x3c60('0x6d')]=isNaN(_0x40b26b[_0x3c60('0x66')])?null:_0x40b26b[_0x3c60('0x66')];_0x2346bd['converted_channelCount']=isNaN(_0x40b26b['channelCount'])?null:_0x40b26b[_0x3c60('0x67')];_0x2346bd[_0x3c60('0x6e')]=isNaN(_0x40b26b[_0x3c60('0x69')])?null:_0x40b26b[_0x3c60('0x69')];_0x2346bd[_0x3c60('0x6f')]=isNaN(_0x40b26b['sampleRate'])?null:_0x40b26b[_0x3c60('0x6b')];});_0x1c0999['on'](_0x3c60('0x1b'),function(){fs['chmodSync'](_0x1bd875,parseInt(_0x3c60('0x60'),0x8));return db[_0x3c60('0x2e')][_0x3c60('0x70')](_0x2346bd)[_0x3c60('0x25')](function(_0x578faf){var _0x1c1513={'role':_0x31010e[_0x3c60('0x71')][_0x3c60('0x72')],'userProfileId':_0x31010e[_0x3c60('0x71')][_0x3c60('0x73')]};if(!_0x1c1513)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c1513['role']===_0x3c60('0x74')){var _0x31e988=_0x578faf[_0x3c60('0x27')]({'plain':!![]});return db[_0x3c60('0x75')][_0x3c60('0x49')]({'where':{'name':_0x3c60('0x76'),'userProfileId':_0x1c1513[_0x3c60('0x73')]},'raw':!![]})[_0x3c60('0x25')](function(_0x357325){if(_0x357325&&_0x357325[_0x3c60('0x77')]===0x0){return db[_0x3c60('0x28')][_0x3c60('0x70')]({'name':_0x31e988[_0x3c60('0x2b')],'resourceId':_0x31e988['id'],'type':_0x357325['name'],'sectionId':_0x357325['id']},{})['then'](function(){return _0x578faf;});}else{return _0x578faf;}})[_0x3c60('0x4a')](function(_0x4d06e1){logger[_0x3c60('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4d06e1);throw _0x4d06e1;});}return _0x578faf;})[_0x3c60('0x25')](respondWithResult(_0x398576,null))['catch'](handleError(_0x398576,null));});_0x1c0999[_0x3c60('0x78')]();}catch(_0x4a44a2){_0x398576['status'](0x1f4)[_0x3c60('0x79')](_0x4a44a2);}};exports[_0x3c60('0x24')]=function(_0x5b7ffa,_0x4d2194,_0x40ad90){return db['Sound'][_0x3c60('0x49')]({'where':{'id':_0x5b7ffa['params']['id']}})[_0x3c60('0x25')](handleEntityNotFound(_0x4d2194,null))[_0x3c60('0x25')](saveUpdates(_[_0x3c60('0x3f')](_0x5b7ffa[_0x3c60('0x71')],[_0x3c60('0x2b'),_0x3c60('0x7a')]),null))[_0x3c60('0x25')](respondWithResult(_0x4d2194,null))[_0x3c60('0x4a')](handleError(_0x4d2194,null));};exports[_0x3c60('0x7b')]=function(_0x1b5eed,_0x591183,_0x1ea196){return db[_0x3c60('0x2e')]['find']({'where':{'id':_0x1b5eed[_0x3c60('0x4c')]['id']}})[_0x3c60('0x25')](function(_0x3be78a){if(_0x3be78a){return _0x3be78a['destroy']();}})[_0x3c60('0x25')](function(_0xd91cc7){var _0x482b8a=path[_0x3c60('0x50')](config[_0x3c60('0x51')],_0x3c60('0x7c'),util[_0x3c60('0x53')](_0x3c60('0x5a'),_0xd91cc7[_0x3c60('0x4d')],_0xd91cc7[_0x3c60('0x7d')]));var _0x3039b4=path[_0x3c60('0x50')](config['root'],_0x3c60('0x52'),util[_0x3c60('0x53')](_0x3c60('0x5a'),_0xd91cc7[_0x3c60('0x4d')],_0xd91cc7[_0x3c60('0x4e')]));fs[_0x3c60('0x62')](_0x482b8a);fs[_0x3c60('0x62')](_0x3039b4);return _0xd91cc7;})[_0x3c60('0x25')](function(_0x439c91){if(_0x439c91){return _0x591183[_0x3c60('0x1a')](0xcc)[_0x3c60('0x1b')]();}})[_0x3c60('0x25')](handleEntityNotFound(_0x591183,null))[_0x3c60('0x4a')](handleError(_0x591183,null));};
\ No newline at end of file
+var _0x9dbd=['lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','undefined','limit','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Sounds','sendStatus','error','stack','name','index','map','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','options','Sound','count','includeAll','include','findAll','rows','catch','show','rawAttributes','find','download','params','save_name','converted_format','existsSync','root','Sequelize','ValidationError','Sound\x20not\x20found','join','server/files/sounds/converted','format','%s.%s','create','file','originalname','extname','basename','filename','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','send','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_sampleCount','converted_channelCount','body','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','start','description','delete','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra'];(function(_0x1a3984,_0x492a1d){var _0x386311=function(_0x124884){while(--_0x124884){_0x1a3984['push'](_0x1a3984['shift']());}};_0x386311(++_0x492a1d);}(_0x9dbd,0x174));var _0xd9db=function(_0x3c4399,_0x1f2480){_0x3c4399=_0x3c4399-0x0;var _0x592b12=_0x9dbd[_0x3c4399];return _0x592b12;};'use strict';var emlformat=require(_0xd9db('0x0'));var rimraf=require(_0xd9db('0x1'));var zipdir=require(_0xd9db('0x2'));var jsonpatch=require(_0xd9db('0x3'));var rp=require(_0xd9db('0x4'));var moment=require(_0xd9db('0x5'));var BPromise=require(_0xd9db('0x6'));var Mustache=require(_0xd9db('0x7'));var util=require('util');var path=require(_0xd9db('0x8'));var sox=require('sox');var csv=require(_0xd9db('0x9'));var ejs=require(_0xd9db('0xa'));var fs=require('fs');var fs_extra=require(_0xd9db('0xb'));var _=require(_0xd9db('0xc'));var squel=require(_0xd9db('0xd'));var crypto=require(_0xd9db('0xe'));var jsforce=require(_0xd9db('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xd9db('0x9'));var querystring=require('querystring');var Papa=require(_0xd9db('0x10'));var Redis=require(_0xd9db('0x11'));var authService=require(_0xd9db('0x12'));var qs=require(_0xd9db('0x13'));var as=require(_0xd9db('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd9db('0x15'))(_0xd9db('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd9db('0x17'));var db=require(_0xd9db('0x18'))['db'];function respondWithStatusCode(_0x22c276,_0x1648a5){_0x1648a5=_0x1648a5||0xcc;return function(_0x56bc7a){if(_0x56bc7a){return _0x22c276['sendStatus'](_0x1648a5);}return _0x22c276[_0xd9db('0x19')](_0x1648a5)[_0xd9db('0x1a')]();};}function respondWithResult(_0x30f1dd,_0x26d8ec){_0x26d8ec=_0x26d8ec||0xc8;return function(_0x4b3d9d){if(_0x4b3d9d){return _0x30f1dd[_0xd9db('0x19')](_0x26d8ec)['json'](_0x4b3d9d);}};}function respondWithFilteredResult(_0x39be82,_0x41c078){return function(_0x1a6f63){if(_0x1a6f63){var _0x1a633e=typeof _0x41c078['offset']===_0xd9db('0x1b')&&typeof _0x41c078[_0xd9db('0x1c')]===_0xd9db('0x1b');var _0x3219a3=_0x1a6f63['count'];var _0x445a86=_0x1a633e?0x0:_0x41c078[_0xd9db('0x1d')];var _0x3283b8=_0x1a633e?_0x1a6f63['count']:_0x41c078['offset']+_0x41c078['limit'];var _0x2c1d3e;if(_0x3283b8>=_0x3219a3){_0x3283b8=_0x3219a3;_0x2c1d3e=0xc8;}else{_0x2c1d3e=0xce;}_0x39be82[_0xd9db('0x19')](_0x2c1d3e);return _0x39be82[_0xd9db('0x1e')](_0xd9db('0x1f'),_0x445a86+'-'+_0x3283b8+'/'+_0x3219a3)[_0xd9db('0x20')](_0x1a6f63);}return null;};}function patchUpdates(_0x425fba){return function(_0x22fdb7){try{jsonpatch[_0xd9db('0x21')](_0x22fdb7,_0x425fba,!![]);}catch(_0x26b685){return BPromise[_0xd9db('0x22')](_0x26b685);}return _0x22fdb7[_0xd9db('0x23')]();};}function saveUpdates(_0x50f005,_0x11b13a){return function(_0x5c44f0){if(_0x5c44f0){return _0x5c44f0[_0xd9db('0x24')](_0x50f005)[_0xd9db('0x25')](function(_0x550b3b){return _0x550b3b;});}return null;};}function removeEntity(_0x38a685,_0x1dbda7){return function(_0x2428e1){if(_0x2428e1){return _0x2428e1[_0xd9db('0x26')]()[_0xd9db('0x25')](function(){var _0xcfbdba=_0x2428e1[_0xd9db('0x27')]({'plain':!![]});var _0x2a7a9d=_0xd9db('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x2a7a9d,'resourceId':_0xcfbdba['id']}})[_0xd9db('0x25')](function(){return _0x2428e1;});})[_0xd9db('0x25')](function(){_0x38a685[_0xd9db('0x19')](0xcc)[_0xd9db('0x1a')]();});}};}function handleEntityNotFound(_0x27afc1,_0x33e9bb){return function(_0x570b94){if(!_0x570b94){_0x27afc1[_0xd9db('0x29')](0x194);}return _0x570b94;};}function handleError(_0x1440b8,_0x4e2aef){_0x4e2aef=_0x4e2aef||0x1f4;return function(_0x540656){logger[_0xd9db('0x2a')](_0x540656[_0xd9db('0x2b')]);if(_0x540656[_0xd9db('0x2c')]){delete _0x540656[_0xd9db('0x2c')];}_0x1440b8[_0xd9db('0x19')](_0x4e2aef)['send'](_0x540656);};}exports[_0xd9db('0x2d')]=function(_0x5369f9,_0x5d07e0){var _0x3b0439={},_0x511389={},_0x31df32={'count':0x0,'rows':[]};var _0x6e952a=_[_0xd9db('0x2e')](db['Sound']['rawAttributes'],function(_0x4891ee){return{'name':_0x4891ee['fieldName'],'type':_0x4891ee[_0xd9db('0x2f')][_0xd9db('0x30')]};});_0x511389[_0xd9db('0x31')]=_[_0xd9db('0x2e')](_0x6e952a,'name');_0x511389[_0xd9db('0x32')]=_[_0xd9db('0x33')](_0x5369f9['query']);_0x511389[_0xd9db('0x34')]=_[_0xd9db('0x35')](_0x511389['model'],_0x511389['query']);_0x3b0439['attributes']=_['intersection'](_0x511389[_0xd9db('0x31')],qs[_0xd9db('0x36')](_0x5369f9['query'][_0xd9db('0x36')]));_0x3b0439[_0xd9db('0x37')]=_0x3b0439[_0xd9db('0x37')][_0xd9db('0x38')]?_0x3b0439[_0xd9db('0x37')]:_0x511389[_0xd9db('0x31')];if(!_0x5369f9[_0xd9db('0x32')][_0xd9db('0x39')]('nolimit')){_0x3b0439['limit']=qs[_0xd9db('0x1c')](_0x5369f9[_0xd9db('0x32')][_0xd9db('0x1c')]);_0x3b0439[_0xd9db('0x1d')]=qs['offset'](_0x5369f9[_0xd9db('0x32')][_0xd9db('0x1d')]);}_0x3b0439[_0xd9db('0x3a')]=qs[_0xd9db('0x3b')](_0x5369f9[_0xd9db('0x32')][_0xd9db('0x3b')]);_0x3b0439['where']=qs[_0xd9db('0x34')](_[_0xd9db('0x3c')](_0x5369f9[_0xd9db('0x32')],_0x511389[_0xd9db('0x34')]),_0x6e952a);if(_0x5369f9[_0xd9db('0x32')][_0xd9db('0x3d')]){_0x3b0439['where']=_[_0xd9db('0x3e')](_0x3b0439[_0xd9db('0x3f')],{'$or':_[_0xd9db('0x2e')](_0x6e952a,function(_0x4fa919){if(_0x4fa919['type']!==_0xd9db('0x40')){var _0x5111c4={};_0x5111c4[_0x4fa919[_0xd9db('0x2c')]]={'$like':'%'+_0x5369f9['query'][_0xd9db('0x3d')]+'%'};return _0x5111c4;}})});}_0x3b0439=_[_0xd9db('0x3e')]({},_0x3b0439,_0x5369f9[_0xd9db('0x41')]);var _0x30ef39={'where':_0x3b0439[_0xd9db('0x3f')]};return db[_0xd9db('0x42')][_0xd9db('0x43')](_0x30ef39)[_0xd9db('0x25')](function(_0x5b12d5){_0x31df32[_0xd9db('0x43')]=_0x5b12d5;if(_0x5369f9[_0xd9db('0x32')][_0xd9db('0x44')]){_0x3b0439[_0xd9db('0x45')]=[{'all':!![]}];}return db[_0xd9db('0x42')][_0xd9db('0x46')](_0x3b0439);})['then'](function(_0x109c93){_0x31df32[_0xd9db('0x47')]=_0x109c93;return _0x31df32;})[_0xd9db('0x25')](respondWithFilteredResult(_0x5d07e0,_0x3b0439))[_0xd9db('0x48')](handleError(_0x5d07e0,null));};exports[_0xd9db('0x49')]=function(_0x20ee93,_0x143d95){var _0x4cbcb7={'raw':!![],'where':{'id':_0x20ee93['params']['id']}},_0x12cce7={};_0x12cce7[_0xd9db('0x31')]=_[_0xd9db('0x33')](db['Sound'][_0xd9db('0x4a')]);_0x12cce7[_0xd9db('0x32')]=_[_0xd9db('0x33')](_0x20ee93[_0xd9db('0x32')]);_0x12cce7[_0xd9db('0x34')]=_['intersection'](_0x12cce7[_0xd9db('0x31')],_0x12cce7[_0xd9db('0x32')]);_0x4cbcb7['attributes']=_[_0xd9db('0x35')](_0x12cce7['model'],qs[_0xd9db('0x36')](_0x20ee93['query'][_0xd9db('0x36')]));_0x4cbcb7['attributes']=_0x4cbcb7[_0xd9db('0x37')][_0xd9db('0x38')]?_0x4cbcb7['attributes']:_0x12cce7[_0xd9db('0x31')];if(_0x20ee93[_0xd9db('0x32')][_0xd9db('0x44')]){_0x4cbcb7[_0xd9db('0x45')]=[{'all':!![]}];}_0x4cbcb7=_[_0xd9db('0x3e')]({},_0x4cbcb7,_0x20ee93['options']);return db['Sound'][_0xd9db('0x4b')](_0x4cbcb7)[_0xd9db('0x25')](handleEntityNotFound(_0x143d95,null))[_0xd9db('0x25')](respondWithResult(_0x143d95,null))[_0xd9db('0x48')](handleError(_0x143d95,null));};exports[_0xd9db('0x4c')]=function(_0x55c629,_0x5671c9,_0x4419f3){return db[_0xd9db('0x42')][_0xd9db('0x4b')]({'where':{'id':_0x55c629[_0xd9db('0x4d')]['id']},'attributes':[_0xd9db('0x2c'),_0xd9db('0x4e'),_0xd9db('0x4f')],'raw':!![]})[_0xd9db('0x25')](handleEntityNotFound(_0x5671c9,null))['then'](function(_0x23b0b6){if(_0x23b0b6){if(!fs[_0xd9db('0x50')](path['join'](config[_0xd9db('0x51')],'server/files/sounds/converted',_0x23b0b6[_0xd9db('0x4e')]+'.'+_0x23b0b6[_0xd9db('0x4f')]))){throw new db[(_0xd9db('0x52'))][(_0xd9db('0x53'))](_0xd9db('0x54'));}return _0x5671c9[_0xd9db('0x4c')](path[_0xd9db('0x55')](config[_0xd9db('0x51')],_0xd9db('0x56'),util[_0xd9db('0x57')]('%s.%s',_0x23b0b6[_0xd9db('0x4e')],_0x23b0b6[_0xd9db('0x4f')])),util[_0xd9db('0x57')](_0xd9db('0x58'),_0x23b0b6['name'],_0x23b0b6[_0xd9db('0x4f')]));}return null;})[_0xd9db('0x48')](handleError(_0x5671c9,null));};exports[_0xd9db('0x59')]=function(_0x27e85b,_0x107655,_0x5093c9){var _0x58136d={'name':path['basename'](_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5b')],path[_0xd9db('0x5c')](_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5b')])),'save_name':path[_0xd9db('0x5d')](_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5e')],path[_0xd9db('0x5c')](_0x27e85b['file'][_0xd9db('0x5e')])),'original_format':path[_0xd9db('0x5c')](_0x27e85b[_0xd9db('0x5a')]['originalname'])['substring'](0x1),'converted_format':_0xd9db('0x5f')};var _0x142cc5=path['join'](config[_0xd9db('0x51')],_0xd9db('0x60'),_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5e')]);var _0x2836d2=path['join'](config[_0xd9db('0x51')],_0xd9db('0x56'),util[_0xd9db('0x57')]('%s.%s',path[_0xd9db('0x5d')](_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5e')],path['extname'](_0x27e85b[_0xd9db('0x5a')][_0xd9db('0x5e')])),_0x58136d[_0xd9db('0x4f')]));logger[_0xd9db('0x61')](_0xd9db('0x62'),_0x142cc5);logger[_0xd9db('0x61')](_0xd9db('0x63'),_0x2836d2);try{fs[_0xd9db('0x64')](_0x142cc5,parseInt(_0xd9db('0x65'),0x8));var _0xedb671=sox[_0xd9db('0x66')](_0x142cc5,_0x2836d2,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xedb671['on']('error',function(_0x194950){fs[_0xd9db('0x67')](_0x142cc5);_0x107655['status'](0x1f4)[_0xd9db('0x68')](_0x194950);});_0xedb671['on']('src',function(_0x16c7ab){_0x58136d[_0xd9db('0x69')]=isNaN(_0x16c7ab[_0xd9db('0x6a')])?null:_0x16c7ab[_0xd9db('0x6a')]*0x3e8;_0x58136d[_0xd9db('0x6b')]=isNaN(_0x16c7ab[_0xd9db('0x6c')])?null:_0x16c7ab[_0xd9db('0x6c')];_0x58136d[_0xd9db('0x6d')]=isNaN(_0x16c7ab[_0xd9db('0x6e')])?null:_0x16c7ab['channelCount'];_0x58136d[_0xd9db('0x6f')]=isNaN(_0x16c7ab[_0xd9db('0x70')])?null:_0x16c7ab[_0xd9db('0x70')];_0x58136d[_0xd9db('0x71')]=isNaN(_0x16c7ab[_0xd9db('0x72')])?null:_0x16c7ab['sampleRate'];});_0xedb671['on']('dest',function(_0x2225dc){_0x58136d['converted_duration']=isNaN(_0x2225dc[_0xd9db('0x6a')])?null:_0x2225dc[_0xd9db('0x6a')]*0x3e8;_0x58136d[_0xd9db('0x73')]=isNaN(_0x2225dc[_0xd9db('0x6c')])?null:_0x2225dc[_0xd9db('0x6c')];_0x58136d[_0xd9db('0x74')]=isNaN(_0x2225dc[_0xd9db('0x6e')])?null:_0x2225dc[_0xd9db('0x6e')];_0x58136d['converted_bitRate']=isNaN(_0x2225dc[_0xd9db('0x70')])?null:_0x2225dc[_0xd9db('0x70')];_0x58136d['converted_sampleRate']=isNaN(_0x2225dc[_0xd9db('0x72')])?null:_0x2225dc['sampleRate'];});_0xedb671['on']('end',function(){fs[_0xd9db('0x64')](_0x2836d2,parseInt(_0xd9db('0x65'),0x8));return db[_0xd9db('0x42')][_0xd9db('0x59')](_0x58136d)[_0xd9db('0x25')](function(_0x4bfc20){var _0x29c28d={'role':_0x27e85b[_0xd9db('0x75')][_0xd9db('0x76')],'userProfileId':_0x27e85b[_0xd9db('0x75')]['userProfileId']};if(!_0x29c28d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x29c28d['role']===_0xd9db('0x77')){var _0x294ea9=_0x4bfc20['get']({'plain':!![]});return db[_0xd9db('0x78')][_0xd9db('0x4b')]({'where':{'name':_0xd9db('0x28'),'userProfileId':_0x29c28d[_0xd9db('0x79')]},'raw':!![]})[_0xd9db('0x25')](function(_0x39f26a){if(_0x39f26a&&_0x39f26a[_0xd9db('0x7a')]===0x0){return db[_0xd9db('0x7b')][_0xd9db('0x59')]({'name':_0x294ea9['name'],'resourceId':_0x294ea9['id'],'type':_0x39f26a['name'],'sectionId':_0x39f26a['id']},{})['then'](function(){return _0x4bfc20;});}else{return _0x4bfc20;}})['catch'](function(_0x4e5f0c){logger[_0xd9db('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e5f0c);throw _0x4e5f0c;});}return _0x4bfc20;})[_0xd9db('0x25')](respondWithResult(_0x107655,null))[_0xd9db('0x48')](handleError(_0x107655,null));});_0xedb671[_0xd9db('0x7c')]();}catch(_0x331402){_0x107655['status'](0x1f4)['send'](_0x331402);}};exports['update']=function(_0x133083,_0x93ab6d,_0x5266c2){return db[_0xd9db('0x42')][_0xd9db('0x4b')]({'where':{'id':_0x133083[_0xd9db('0x4d')]['id']}})[_0xd9db('0x25')](handleEntityNotFound(_0x93ab6d,null))[_0xd9db('0x25')](saveUpdates(_[_0xd9db('0x3c')](_0x133083['body'],[_0xd9db('0x2c'),_0xd9db('0x7d')]),null))['then'](respondWithResult(_0x93ab6d,null))[_0xd9db('0x48')](handleError(_0x93ab6d,null));};exports[_0xd9db('0x7e')]=function(_0x1b2643,_0x2419a2,_0x24aea5){return db['Sound']['find']({'where':{'id':_0x1b2643[_0xd9db('0x4d')]['id']}})[_0xd9db('0x25')](function(_0x432b95){if(_0x432b95){return _0x432b95[_0xd9db('0x26')]();}})[_0xd9db('0x25')](function(_0x48351f){var _0xbd3acd=path[_0xd9db('0x55')](config[_0xd9db('0x51')],_0xd9db('0x60'),util[_0xd9db('0x57')](_0xd9db('0x58'),_0x48351f['save_name'],_0x48351f[_0xd9db('0x7f')]));var _0x454178=path[_0xd9db('0x55')](config['root'],_0xd9db('0x56'),util[_0xd9db('0x57')](_0xd9db('0x58'),_0x48351f['save_name'],_0x48351f[_0xd9db('0x4f')]));fs[_0xd9db('0x67')](_0xbd3acd);fs[_0xd9db('0x67')](_0x454178);return _0x48351f;})[_0xd9db('0x25')](function(_0x1c7787){if(_0x1c7787){return _0x2419a2['status'](0xcc)['end']();}})[_0xd9db('0x25')](handleEntityNotFound(_0x2419a2,null))[_0xd9db('0x48')](handleError(_0x2419a2,null));};
\ No newline at end of file
index b3da6d9..f24d058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b6=['../../config/logger','bluebird','path','rimraf','./sound.attributes','exports','define','tools_sounds','lodash'];(function(_0x2ea823,_0x35dbe8){var _0x4aa3e7=function(_0x331a22){while(--_0x331a22){_0x2ea823['push'](_0x2ea823['shift']());}};_0x4aa3e7(++_0x35dbe8);}(_0x73b6,0x167));var _0x673b=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x73b6[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x673b('0x0'));var util=require('util');var logger=require(_0x673b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x673b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x673b('0x3'));var rimraf=require(_0x673b('0x4'));var config=require('../../config/environment');var attributes=require(_0x673b('0x5'));module[_0x673b('0x6')]=function(_0x140735,_0xcf95f5){return _0x140735[_0x673b('0x7')]('Sound',attributes,{'tableName':_0x673b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b0b=['../../config/environment','./sound.attributes','exports','Sound','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x402e79,_0x54c19a){var _0x62a5d8=function(_0x3037ea){while(--_0x3037ea){_0x402e79['push'](_0x402e79['shift']());}};_0x62a5d8(++_0x54c19a);}(_0x2b0b,0x149));var _0xb2b0=function(_0x4717c1,_0x5016d0){_0x4717c1=_0x4717c1-0x0;var _0x291add=_0x2b0b[_0x4717c1];return _0x291add;};'use strict';var _=require(_0xb2b0('0x0'));var util=require(_0xb2b0('0x1'));var logger=require(_0xb2b0('0x2'))(_0xb2b0('0x3'));var moment=require(_0xb2b0('0x4'));var BPromise=require(_0xb2b0('0x5'));var rp=require(_0xb2b0('0x6'));var fs=require('fs');var path=require(_0xb2b0('0x7'));var rimraf=require(_0xb2b0('0x8'));var config=require(_0xb2b0('0x9'));var attributes=require(_0xb2b0('0xa'));module[_0xb2b0('0xb')]=function(_0x44aa00,_0xfd2e98){return _0x44aa00['define'](_0xb2b0('0xc'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 94d5dcf..4d547fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeebb=['../../config/environment','jayson/promise','client','http','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','Sound','find','options','raw','where','attributes','include','map','model','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x560143,_0x3e53ce){var _0x46feea=function(_0x46e824){while(--_0x46e824){_0x560143['push'](_0x560143['shift']());}};_0x46feea(++_0x3e53ce);}(_0xeebb,0x1c7));var _0xbeeb=function(_0x52c63f,_0x566c73){_0x52c63f=_0x52c63f-0x0;var _0x1a8329=_0xeebb[_0x52c63f];return _0x1a8329;};'use strict';var _=require('lodash');var util=require(_0xbeeb('0x0'));var moment=require(_0xbeeb('0x1'));var BPromise=require('bluebird');var rs=require(_0xbeeb('0x2'));var fs=require('fs');var Redis=require(_0xbeeb('0x3'));var db=require(_0xbeeb('0x4'))['db'];var utils=require(_0xbeeb('0x5'));var logger=require(_0xbeeb('0x6'))('rpc');var config=require(_0xbeeb('0x7'));var jayson=require(_0xbeeb('0x8'));var client=jayson[_0xbeeb('0x9')][_0xbeeb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x31bd00,_0x34087f,_0x581293){return new BPromise(function(_0xf11bc9,_0x2a7f34){return client[_0xbeeb('0xb')](_0x31bd00,_0x581293)['then'](function(_0x35dfaa){logger[_0xbeeb('0xc')](_0xbeeb('0xd'),_0x34087f,_0xbeeb('0xe'));logger[_0xbeeb('0xf')](_0xbeeb('0x10'),_0x34087f,'request\x20sent',JSON[_0xbeeb('0x11')](_0x35dfaa));if(_0x35dfaa[_0xbeeb('0x12')]){if(_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x13')]===0x1f4){logger[_0xbeeb('0x12')](_0xbeeb('0xd'),_0x34087f,_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);return _0x2a7f34(_0x35dfaa[_0xbeeb('0x12')]['message']);}logger['error'](_0xbeeb('0xd'),_0x34087f,_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);return _0xf11bc9(_0x35dfaa[_0xbeeb('0x12')][_0xbeeb('0x14')]);}else{logger[_0xbeeb('0xc')](_0xbeeb('0xd'),_0x34087f,_0xbeeb('0xe'));_0xf11bc9(_0x35dfaa[_0xbeeb('0x15')][_0xbeeb('0x14')]);}})[_0xbeeb('0x16')](function(_0xbfa52f){logger[_0xbeeb('0x12')](_0xbeeb('0xd'),_0x34087f,_0xbfa52f);_0x2a7f34(_0xbfa52f);});});}exports[_0xbeeb('0x17')]=function(_0x5d8f75){var _0xfee954=this;return new Promise(function(_0xb86573,_0x374640){return db[_0xbeeb('0x18')][_0xbeeb('0x19')]({'raw':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1c')]||null:null,'attributes':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75['options'][_0xbeeb('0x1d')]||null:null,'include':_0x5d8f75[_0xbeeb('0x1a')]?_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1e')]?_[_0xbeeb('0x1f')](_0x5d8f75[_0xbeeb('0x1a')][_0xbeeb('0x1e')],function(_0x15b16c){return{'model':db[_0x15b16c['model']],'as':_0x15b16c['as'],'attributes':_0x15b16c['attributes'],'include':_0x15b16c[_0xbeeb('0x1e')]?_['map'](_0x15b16c[_0xbeeb('0x1e')],function(_0x447be8){return{'model':db[_0x447be8[_0xbeeb('0x20')]],'as':_0x447be8['as'],'attributes':_0x447be8[_0xbeeb('0x1d')],'include':_0x447be8[_0xbeeb('0x1e')]?_['map'](_0x447be8['include'],function(_0x5cc1e6){return{'model':db[_0x5cc1e6[_0xbeeb('0x20')]],'as':_0x5cc1e6['as'],'attributes':_0x5cc1e6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x29651e){logger[_0xbeeb('0xc')](_0xbeeb('0x17'),_0x5d8f75);logger[_0xbeeb('0xf')](_0xbeeb('0x17'),_0x5d8f75,JSON[_0xbeeb('0x11')](_0x29651e));_0xb86573(_0x29651e);})[_0xbeeb('0x16')](function(_0xc838d6){logger[_0xbeeb('0x12')]('ShowSound',_0xc838d6[_0xbeeb('0x14')],_0x5d8f75);_0x374640(_0xfee954[_0xbeeb('0x12')](0x1f4,_0xc838d6[_0xbeeb('0x14')]));});});};
\ No newline at end of file
+var _0x178c=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','ShowSound','Sound','find','options','raw','attributes','include','map'];(function(_0x58803b,_0x5d9ed5){var _0x5e1dc1=function(_0x1cf11d){while(--_0x1cf11d){_0x58803b['push'](_0x58803b['shift']());}};_0x5e1dc1(++_0x5d9ed5);}(_0x178c,0x18e));var _0xc178=function(_0x1b1aaf,_0x3275b7){_0x1b1aaf=_0x1b1aaf-0x0;var _0x1fe1ae=_0x178c[_0x1b1aaf];return _0x1fe1ae;};'use strict';var _=require(_0xc178('0x0'));var util=require(_0xc178('0x1'));var moment=require(_0xc178('0x2'));var BPromise=require(_0xc178('0x3'));var rs=require(_0xc178('0x4'));var fs=require('fs');var Redis=require(_0xc178('0x5'));var db=require(_0xc178('0x6'))['db'];var utils=require(_0xc178('0x7'));var logger=require(_0xc178('0x8'))(_0xc178('0x9'));var config=require(_0xc178('0xa'));var jayson=require(_0xc178('0xb'));var client=jayson['client'][_0xc178('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x50f328,_0xd65a1f,_0x35ff34){return new BPromise(function(_0x925996,_0x38abed){return client[_0xc178('0xd')](_0x50f328,_0x35ff34)[_0xc178('0xe')](function(_0x4e8ec1){logger[_0xc178('0xf')](_0xc178('0x10'),_0xd65a1f,_0xc178('0x11'));logger[_0xc178('0x12')]('Sound,\x20%s,\x20%s,\x20%s',_0xd65a1f,'request\x20sent',JSON['stringify'](_0x4e8ec1));if(_0x4e8ec1['error']){if(_0x4e8ec1[_0xc178('0x13')]['code']===0x1f4){logger[_0xc178('0x13')](_0xc178('0x10'),_0xd65a1f,_0x4e8ec1[_0xc178('0x13')]['message']);return _0x38abed(_0x4e8ec1[_0xc178('0x13')][_0xc178('0x14')]);}logger[_0xc178('0x13')](_0xc178('0x10'),_0xd65a1f,_0x4e8ec1[_0xc178('0x13')][_0xc178('0x14')]);return _0x925996(_0x4e8ec1['error'][_0xc178('0x14')]);}else{logger['info'](_0xc178('0x10'),_0xd65a1f,_0xc178('0x11'));_0x925996(_0x4e8ec1[_0xc178('0x15')][_0xc178('0x14')]);}})[_0xc178('0x16')](function(_0x1209d5){logger[_0xc178('0x13')](_0xc178('0x10'),_0xd65a1f,_0x1209d5);_0x38abed(_0x1209d5);});});}exports[_0xc178('0x17')]=function(_0x51bcb8){var _0x1f963e=this;return new Promise(function(_0x103a95,_0x263320){return db[_0xc178('0x18')][_0xc178('0x19')]({'raw':_0x51bcb8[_0xc178('0x1a')]?_0x51bcb8[_0xc178('0x1a')][_0xc178('0x1b')]===undefined?!![]:![]:!![],'where':_0x51bcb8[_0xc178('0x1a')]?_0x51bcb8[_0xc178('0x1a')]['where']||null:null,'attributes':_0x51bcb8[_0xc178('0x1a')]?_0x51bcb8[_0xc178('0x1a')][_0xc178('0x1c')]||null:null,'include':_0x51bcb8['options']?_0x51bcb8[_0xc178('0x1a')][_0xc178('0x1d')]?_[_0xc178('0x1e')](_0x51bcb8[_0xc178('0x1a')][_0xc178('0x1d')],function(_0x25b043){return{'model':db[_0x25b043[_0xc178('0x1f')]],'as':_0x25b043['as'],'attributes':_0x25b043[_0xc178('0x1c')],'include':_0x25b043[_0xc178('0x1d')]?_[_0xc178('0x1e')](_0x25b043[_0xc178('0x1d')],function(_0x125d96){return{'model':db[_0x125d96[_0xc178('0x1f')]],'as':_0x125d96['as'],'attributes':_0x125d96[_0xc178('0x1c')],'include':_0x125d96['include']?_[_0xc178('0x1e')](_0x125d96[_0xc178('0x1d')],function(_0x2821db){return{'model':db[_0x2821db[_0xc178('0x1f')]],'as':_0x2821db['as'],'attributes':_0x2821db['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c53f8){logger[_0xc178('0xf')]('ShowSound',_0x51bcb8);logger[_0xc178('0x12')](_0xc178('0x17'),_0x51bcb8,JSON[_0xc178('0x20')](_0x1c53f8));_0x103a95(_0x1c53f8);})['catch'](function(_0x341d49){logger[_0xc178('0x13')](_0xc178('0x17'),_0x341d49[_0xc178('0x14')],_0x51bcb8);_0x263320(_0x1f963e[_0xc178('0x13')](0x1f4,_0x341d49[_0xc178('0x14')]));});});};
\ No newline at end of file
index fa5393d..828a641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x24dfb7,_0x2bf1bf){var _0x525851=function(_0xa8a946){while(--_0xa8a946){_0x24dfb7['push'](_0x24dfb7['shift']());}};_0x525851(++_0x2bf1bf);}(_0x2032,0xd9));var _0x2203=function(_0x5a44fc,_0x3b2d92){_0x5a44fc=_0x5a44fc-0x0;var _0x2ec2ac=_0x2032[_0x5a44fc];return _0x2ec2ac;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
+var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x226df4,_0x1a2013){var _0x53f028=function(_0x4cc5e3){while(--_0x4cc5e3){_0x226df4['push'](_0x226df4['shift']());}};_0x53f028(++_0x1a2013);}(_0x14a0,0x8e));var _0x014a=function(_0x56cbe1,_0x403d05){_0x56cbe1=_0x56cbe1-0x0;var _0x5ed5f8=_0x14a0[_0x56cbe1];return _0x5ed5f8;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
index 154c7b5..1dec6b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8d6=['sequelize','STRING','TEXT','ENUM','out'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xf8d6,0x1d1));var _0x6f8d=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xf8d6[_0x5a3cf0];return _0x5a64ee;};'use strict';var Sequelize=require(_0x6f8d('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x6f8d('0x1')]},'body':{'type':Sequelize[_0x6f8d('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x6f8d('0x3')]('in',_0x6f8d('0x4')),'defaultValue':_0x6f8d('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x6f8d('0x1')]},'providerResponse':{'type':Sequelize[_0x6f8d('0x2')]}};
\ No newline at end of file
+var _0xfc31=['sequelize','exports','STRING','medium','out','TEXT'];(function(_0x4e664c,_0x47abb9){var _0x5f3913=function(_0x3a205f){while(--_0x3a205f){_0x4e664c['push'](_0x4e664c['shift']());}};_0x5f3913(++_0x47abb9);}(_0xfc31,0xd8));var _0x1fc3=function(_0x5af9cc,_0x34b3f2){_0x5af9cc=_0x5af9cc-0x0;var _0x105d04=_0xfc31[_0x5af9cc];return _0x105d04;};'use strict';var Sequelize=require(_0x1fc3('0x0'));module[_0x1fc3('0x1')]={'uniqueid':{'type':Sequelize[_0x1fc3('0x2')]},'body':{'type':Sequelize['TEXT'](_0x1fc3('0x3')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x1fc3('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x1fc3('0x2')]},'providerResponse':{'type':Sequelize[_0x1fc3('0x5')]}};
\ No newline at end of file
index 6af4289..3e15501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9fc=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','reject','save','then','error','stack','name','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','SquareMessage','rows','catch','show','params','includeAll','options','find','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9fc,0x19f));var _0xca9f=function(_0x16bb4b,_0x5fe431){_0x16bb4b=_0x16bb4b-0x0;var _0x8aeb84=_0xa9fc[_0x16bb4b];return _0x8aeb84;};'use strict';var emlformat=require(_0xca9f('0x0'));var rimraf=require(_0xca9f('0x1'));var zipdir=require(_0xca9f('0x2'));var jsonpatch=require(_0xca9f('0x3'));var rp=require(_0xca9f('0x4'));var moment=require('moment');var BPromise=require(_0xca9f('0x5'));var Mustache=require('mustache');var util=require(_0xca9f('0x6'));var path=require(_0xca9f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca9f('0x8'));var _=require('lodash');var squel=require(_0xca9f('0x9'));var crypto=require(_0xca9f('0xa'));var jsforce=require(_0xca9f('0xb'));var deskjs=require(_0xca9f('0xc'));var toCsv=require(_0xca9f('0xd'));var querystring=require(_0xca9f('0xe'));var Papa=require(_0xca9f('0xf'));var Redis=require(_0xca9f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xca9f('0x11'));var as=require(_0xca9f('0x12'));var hardwareService=require(_0xca9f('0x13'));var logger=require(_0xca9f('0x14'))('api');var utils=require(_0xca9f('0x15'));var config=require(_0xca9f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xca9f('0x17'))['db'];function respondWithStatusCode(_0x49d36a,_0x2017c6){_0x2017c6=_0x2017c6||0xcc;return function(_0x2aefea){if(_0x2aefea){return _0x49d36a[_0xca9f('0x18')](_0x2017c6);}return _0x49d36a[_0xca9f('0x19')](_0x2017c6)[_0xca9f('0x1a')]();};}function respondWithResult(_0x2cb6f4,_0x33f8c7){_0x33f8c7=_0x33f8c7||0xc8;return function(_0x864d21){if(_0x864d21){return _0x2cb6f4['status'](_0x33f8c7)['json'](_0x864d21);}};}function respondWithFilteredResult(_0x300c62,_0x5ec217){return function(_0x510022){if(_0x510022){var _0xda6255=typeof _0x5ec217[_0xca9f('0x1b')]==='undefined'&&typeof _0x5ec217[_0xca9f('0x1c')]==='undefined';var _0x22cdda=_0x510022['count'];var _0x22c161=_0xda6255?0x0:_0x5ec217[_0xca9f('0x1b')];var _0x1543aa=_0xda6255?_0x510022[_0xca9f('0x1d')]:_0x5ec217[_0xca9f('0x1b')]+_0x5ec217['limit'];var _0x982806;if(_0x1543aa>=_0x22cdda){_0x1543aa=_0x22cdda;_0x982806=0xc8;}else{_0x982806=0xce;}_0x300c62['status'](_0x982806);return _0x300c62[_0xca9f('0x1e')](_0xca9f('0x1f'),_0x22c161+'-'+_0x1543aa+'/'+_0x22cdda)[_0xca9f('0x20')](_0x510022);}return null;};}function patchUpdates(_0x2799e8){return function(_0x132663){try{jsonpatch['apply'](_0x132663,_0x2799e8,!![]);}catch(_0x7246c7){return BPromise[_0xca9f('0x21')](_0x7246c7);}return _0x132663[_0xca9f('0x22')]();};}function saveUpdates(_0x1927b7,_0x239b30){return function(_0x4f9e9c){if(_0x4f9e9c){return _0x4f9e9c['update'](_0x1927b7)[_0xca9f('0x23')](function(_0x96b3ec){return _0x96b3ec;});}return null;};}function removeEntity(_0x162328,_0x1066bc){return function(_0x319b3b){if(_0x319b3b){return _0x319b3b['destroy']()[_0xca9f('0x23')](function(){_0x162328[_0xca9f('0x19')](0xcc)[_0xca9f('0x1a')]();});}};}function handleEntityNotFound(_0x4d64eb,_0x390333){return function(_0x235044){if(!_0x235044){_0x4d64eb[_0xca9f('0x18')](0x194);}return _0x235044;};}function handleError(_0x133222,_0x88025b){_0x88025b=_0x88025b||0x1f4;return function(_0x4c4558){logger[_0xca9f('0x24')](_0x4c4558[_0xca9f('0x25')]);if(_0x4c4558[_0xca9f('0x26')]){delete _0x4c4558[_0xca9f('0x26')];}_0x133222[_0xca9f('0x19')](_0x88025b)['send'](_0x4c4558);};}exports['index']=function(_0x3bcbed,_0x5dfa6f){var _0x33edd5={},_0x16b189={},_0x17d202={'count':0x0,'rows':[]};var _0x1360d1=_['map'](db['SquareMessage'][_0xca9f('0x27')],function(_0x4d903c){return{'name':_0x4d903c[_0xca9f('0x28')],'type':_0x4d903c['type'][_0xca9f('0x29')]};});_0x16b189[_0xca9f('0x2a')]=_[_0xca9f('0x2b')](_0x1360d1,_0xca9f('0x26'));_0x16b189[_0xca9f('0x2c')]=_[_0xca9f('0x2d')](_0x3bcbed['query']);_0x16b189['filters']=_[_0xca9f('0x2e')](_0x16b189['model'],_0x16b189[_0xca9f('0x2c')]);_0x33edd5[_0xca9f('0x2f')]=_[_0xca9f('0x2e')](_0x16b189['model'],qs['fields'](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x30')]));_0x33edd5[_0xca9f('0x2f')]=_0x33edd5['attributes'][_0xca9f('0x31')]?_0x33edd5[_0xca9f('0x2f')]:_0x16b189['model'];if(!_0x3bcbed['query'][_0xca9f('0x32')](_0xca9f('0x33'))){_0x33edd5[_0xca9f('0x1c')]=qs[_0xca9f('0x1c')](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x1c')]);_0x33edd5[_0xca9f('0x1b')]=qs[_0xca9f('0x1b')](_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x1b')]);}_0x33edd5[_0xca9f('0x34')]=qs[_0xca9f('0x35')](_0x3bcbed[_0xca9f('0x2c')]['sort']);_0x33edd5[_0xca9f('0x36')]=qs['filters'](_[_0xca9f('0x37')](_0x3bcbed[_0xca9f('0x2c')],_0x16b189['filters']),_0x1360d1);if(_0x3bcbed[_0xca9f('0x2c')][_0xca9f('0x38')]){_0x33edd5[_0xca9f('0x36')]=_[_0xca9f('0x39')](_0x33edd5[_0xca9f('0x36')],{'$or':_['map'](_0x1360d1,function(_0x4e8fda){if(_0x4e8fda['type']!==_0xca9f('0x3a')){var _0x93662f={};_0x93662f[_0x4e8fda[_0xca9f('0x26')]]={'$like':'%'+_0x3bcbed['query'][_0xca9f('0x38')]+'%'};return _0x93662f;}})});}_0x33edd5=_[_0xca9f('0x39')]({},_0x33edd5,_0x3bcbed['options']);var _0x36be30={'where':_0x33edd5[_0xca9f('0x36')]};return db['SquareMessage'][_0xca9f('0x1d')](_0x36be30)[_0xca9f('0x23')](function(_0x397d4a){_0x17d202[_0xca9f('0x1d')]=_0x397d4a;if(_0x3bcbed[_0xca9f('0x2c')]['includeAll']){_0x33edd5[_0xca9f('0x3b')]=[{'all':!![]}];}return db[_0xca9f('0x3c')]['findAll'](_0x33edd5);})[_0xca9f('0x23')](function(_0x15d8be){_0x17d202[_0xca9f('0x3d')]=_0x15d8be;return _0x17d202;})[_0xca9f('0x23')](respondWithFilteredResult(_0x5dfa6f,_0x33edd5))[_0xca9f('0x3e')](handleError(_0x5dfa6f,null));};exports[_0xca9f('0x3f')]=function(_0x199bb9,_0x6284a1){var _0x432734={'raw':!![],'where':{'id':_0x199bb9[_0xca9f('0x40')]['id']}},_0x409fb0={};_0x409fb0[_0xca9f('0x2a')]=_['keys'](db[_0xca9f('0x3c')][_0xca9f('0x27')]);_0x409fb0[_0xca9f('0x2c')]=_[_0xca9f('0x2d')](_0x199bb9[_0xca9f('0x2c')]);_0x409fb0['filters']=_['intersection'](_0x409fb0[_0xca9f('0x2a')],_0x409fb0['query']);_0x432734[_0xca9f('0x2f')]=_[_0xca9f('0x2e')](_0x409fb0[_0xca9f('0x2a')],qs[_0xca9f('0x30')](_0x199bb9[_0xca9f('0x2c')][_0xca9f('0x30')]));_0x432734['attributes']=_0x432734[_0xca9f('0x2f')][_0xca9f('0x31')]?_0x432734['attributes']:_0x409fb0[_0xca9f('0x2a')];if(_0x199bb9[_0xca9f('0x2c')][_0xca9f('0x41')]){_0x432734[_0xca9f('0x3b')]=[{'all':!![]}];}_0x432734=_['merge']({},_0x432734,_0x199bb9[_0xca9f('0x42')]);return db['SquareMessage'][_0xca9f('0x43')](_0x432734)[_0xca9f('0x23')](handleEntityNotFound(_0x6284a1,null))[_0xca9f('0x23')](respondWithResult(_0x6284a1,null))[_0xca9f('0x3e')](handleError(_0x6284a1,null));};exports['create']=function(_0x4ca490,_0x5e1c8d){return db[_0xca9f('0x3c')][_0xca9f('0x44')](_0x4ca490[_0xca9f('0x45')],{})[_0xca9f('0x23')](respondWithResult(_0x5e1c8d,0xc9))[_0xca9f('0x3e')](handleError(_0x5e1c8d,null));};exports[_0xca9f('0x46')]=function(_0x656430,_0x26b9f4){if(_0x656430[_0xca9f('0x45')]['id']){delete _0x656430[_0xca9f('0x45')]['id'];}return db['SquareMessage'][_0xca9f('0x43')]({'where':{'id':_0x656430['params']['id']}})[_0xca9f('0x23')](handleEntityNotFound(_0x26b9f4,null))[_0xca9f('0x23')](saveUpdates(_0x656430['body'],null))[_0xca9f('0x23')](respondWithResult(_0x26b9f4,null))[_0xca9f('0x3e')](handleError(_0x26b9f4,null));};exports[_0xca9f('0x47')]=function(_0x43b1c3,_0x1152a7){return db[_0xca9f('0x3c')][_0xca9f('0x43')]({'where':{'id':_0x43b1c3[_0xca9f('0x40')]['id']}})['then'](handleEntityNotFound(_0x1152a7,null))['then'](removeEntity(_0x1152a7,null))[_0xca9f('0x3e')](handleError(_0x1152a7,null));};
\ No newline at end of file
+var _0x84ff=['params','keys','includeAll','include','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','SquareMessage','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','catch'];(function(_0x58a873,_0x2050a4){var _0x31a7ef=function(_0x1d9af9){while(--_0x1d9af9){_0x58a873['push'](_0x58a873['shift']());}};_0x31a7ef(++_0x2050a4);}(_0x84ff,0x1ac));var _0xf84f=function(_0x2b23b4,_0x4e9711){_0x2b23b4=_0x2b23b4-0x0;var _0x2b4543=_0x84ff[_0x2b23b4];return _0x2b4543;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf84f('0x0'));var zipdir=require(_0xf84f('0x1'));var jsonpatch=require(_0xf84f('0x2'));var rp=require(_0xf84f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf84f('0x4'));var util=require(_0xf84f('0x5'));var path=require(_0xf84f('0x6'));var sox=require(_0xf84f('0x7'));var csv=require(_0xf84f('0x8'));var ejs=require(_0xf84f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf84f('0xa'));var squel=require(_0xf84f('0xb'));var crypto=require(_0xf84f('0xc'));var jsforce=require(_0xf84f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf84f('0x8'));var querystring=require(_0xf84f('0xe'));var Papa=require(_0xf84f('0xf'));var Redis=require('ioredis');var authService=require(_0xf84f('0x10'));var qs=require(_0xf84f('0x11'));var as=require(_0xf84f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf84f('0x13'))(_0xf84f('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf84f('0x15'))['db'];function respondWithStatusCode(_0x503fde,_0xfb4ce0){_0xfb4ce0=_0xfb4ce0||0xcc;return function(_0x29561f){if(_0x29561f){return _0x503fde['sendStatus'](_0xfb4ce0);}return _0x503fde['status'](_0xfb4ce0)['end']();};}function respondWithResult(_0xcf1d79,_0x213852){_0x213852=_0x213852||0xc8;return function(_0x3cc8c7){if(_0x3cc8c7){return _0xcf1d79[_0xf84f('0x16')](_0x213852)[_0xf84f('0x17')](_0x3cc8c7);}};}function respondWithFilteredResult(_0x3f8880,_0x46a527){return function(_0x3cddcc){if(_0x3cddcc){var _0x1950b5=typeof _0x46a527[_0xf84f('0x18')]==='undefined'&&typeof _0x46a527[_0xf84f('0x19')]==='undefined';var _0x2d799a=_0x3cddcc[_0xf84f('0x1a')];var _0x5d9654=_0x1950b5?0x0:_0x46a527[_0xf84f('0x18')];var _0x2861b0=_0x1950b5?_0x3cddcc[_0xf84f('0x1a')]:_0x46a527['offset']+_0x46a527['limit'];var _0x2cafa3;if(_0x2861b0>=_0x2d799a){_0x2861b0=_0x2d799a;_0x2cafa3=0xc8;}else{_0x2cafa3=0xce;}_0x3f8880[_0xf84f('0x16')](_0x2cafa3);return _0x3f8880[_0xf84f('0x1b')](_0xf84f('0x1c'),_0x5d9654+'-'+_0x2861b0+'/'+_0x2d799a)[_0xf84f('0x17')](_0x3cddcc);}return null;};}function patchUpdates(_0x95788b){return function(_0xfb487f){try{jsonpatch['apply'](_0xfb487f,_0x95788b,!![]);}catch(_0x58795d){return BPromise[_0xf84f('0x1d')](_0x58795d);}return _0xfb487f[_0xf84f('0x1e')]();};}function saveUpdates(_0x443319,_0x431afe){return function(_0x33484c){if(_0x33484c){return _0x33484c[_0xf84f('0x1f')](_0x443319)[_0xf84f('0x20')](function(_0x13d0d5){return _0x13d0d5;});}return null;};}function removeEntity(_0x38c4ab,_0x4bb136){return function(_0x362b77){if(_0x362b77){return _0x362b77[_0xf84f('0x21')]()['then'](function(){_0x38c4ab[_0xf84f('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1eae7e,_0x77a5ab){return function(_0x155dc1){if(!_0x155dc1){_0x1eae7e[_0xf84f('0x22')](0x194);}return _0x155dc1;};}function handleError(_0x25bf36,_0x472bc3){_0x472bc3=_0x472bc3||0x1f4;return function(_0x5967b9){logger[_0xf84f('0x23')](_0x5967b9[_0xf84f('0x24')]);if(_0x5967b9[_0xf84f('0x25')]){delete _0x5967b9[_0xf84f('0x25')];}_0x25bf36['status'](_0x472bc3)[_0xf84f('0x26')](_0x5967b9);};}exports['index']=function(_0x7c0d7a,_0x26b870){var _0x1eaab0={},_0x301a67={},_0xfae33b={'count':0x0,'rows':[]};var _0x49887d=_[_0xf84f('0x27')](db[_0xf84f('0x28')][_0xf84f('0x29')],function(_0x3b0c4a){return{'name':_0x3b0c4a[_0xf84f('0x2a')],'type':_0x3b0c4a[_0xf84f('0x2b')][_0xf84f('0x2c')]};});_0x301a67[_0xf84f('0x2d')]=_[_0xf84f('0x27')](_0x49887d,_0xf84f('0x25'));_0x301a67['query']=_['keys'](_0x7c0d7a['query']);_0x301a67[_0xf84f('0x2e')]=_[_0xf84f('0x2f')](_0x301a67[_0xf84f('0x2d')],_0x301a67[_0xf84f('0x30')]);_0x1eaab0[_0xf84f('0x31')]=_[_0xf84f('0x2f')](_0x301a67[_0xf84f('0x2d')],qs['fields'](_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x32')]));_0x1eaab0['attributes']=_0x1eaab0[_0xf84f('0x31')]['length']?_0x1eaab0[_0xf84f('0x31')]:_0x301a67[_0xf84f('0x2d')];if(!_0x7c0d7a[_0xf84f('0x30')]['hasOwnProperty'](_0xf84f('0x33'))){_0x1eaab0[_0xf84f('0x19')]=qs[_0xf84f('0x19')](_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x19')]);_0x1eaab0['offset']=qs[_0xf84f('0x18')](_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x18')]);}_0x1eaab0[_0xf84f('0x34')]=qs[_0xf84f('0x35')](_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x35')]);_0x1eaab0[_0xf84f('0x36')]=qs[_0xf84f('0x2e')](_[_0xf84f('0x37')](_0x7c0d7a[_0xf84f('0x30')],_0x301a67[_0xf84f('0x2e')]),_0x49887d);if(_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x38')]){_0x1eaab0[_0xf84f('0x36')]=_[_0xf84f('0x39')](_0x1eaab0[_0xf84f('0x36')],{'$or':_[_0xf84f('0x27')](_0x49887d,function(_0x1df88f){if(_0x1df88f[_0xf84f('0x2b')]!==_0xf84f('0x3a')){var _0x55c5b5={};_0x55c5b5[_0x1df88f[_0xf84f('0x25')]]={'$like':'%'+_0x7c0d7a[_0xf84f('0x30')][_0xf84f('0x38')]+'%'};return _0x55c5b5;}})});}_0x1eaab0=_[_0xf84f('0x39')]({},_0x1eaab0,_0x7c0d7a['options']);var _0x3a79e7={'where':_0x1eaab0['where']};return db[_0xf84f('0x28')][_0xf84f('0x1a')](_0x3a79e7)['then'](function(_0x53ee1d){_0xfae33b['count']=_0x53ee1d;if(_0x7c0d7a[_0xf84f('0x30')]['includeAll']){_0x1eaab0['include']=[{'all':!![]}];}return db[_0xf84f('0x28')][_0xf84f('0x3b')](_0x1eaab0);})[_0xf84f('0x20')](function(_0x5b1961){_0xfae33b[_0xf84f('0x3c')]=_0x5b1961;return _0xfae33b;})[_0xf84f('0x20')](respondWithFilteredResult(_0x26b870,_0x1eaab0))[_0xf84f('0x3d')](handleError(_0x26b870,null));};exports['show']=function(_0x33d1af,_0x331650){var _0x4c2bd8={'raw':!![],'where':{'id':_0x33d1af[_0xf84f('0x3e')]['id']}},_0x162575={};_0x162575['model']=_[_0xf84f('0x3f')](db['SquareMessage']['rawAttributes']);_0x162575[_0xf84f('0x30')]=_[_0xf84f('0x3f')](_0x33d1af[_0xf84f('0x30')]);_0x162575[_0xf84f('0x2e')]=_[_0xf84f('0x2f')](_0x162575[_0xf84f('0x2d')],_0x162575[_0xf84f('0x30')]);_0x4c2bd8[_0xf84f('0x31')]=_[_0xf84f('0x2f')](_0x162575[_0xf84f('0x2d')],qs[_0xf84f('0x32')](_0x33d1af[_0xf84f('0x30')][_0xf84f('0x32')]));_0x4c2bd8[_0xf84f('0x31')]=_0x4c2bd8[_0xf84f('0x31')]['length']?_0x4c2bd8[_0xf84f('0x31')]:_0x162575['model'];if(_0x33d1af['query'][_0xf84f('0x40')]){_0x4c2bd8[_0xf84f('0x41')]=[{'all':!![]}];}_0x4c2bd8=_['merge']({},_0x4c2bd8,_0x33d1af[_0xf84f('0x42')]);return db['SquareMessage'][_0xf84f('0x43')](_0x4c2bd8)[_0xf84f('0x20')](handleEntityNotFound(_0x331650,null))[_0xf84f('0x20')](respondWithResult(_0x331650,null))[_0xf84f('0x3d')](handleError(_0x331650,null));};exports[_0xf84f('0x44')]=function(_0x28f8a6,_0x291627){return db['SquareMessage'][_0xf84f('0x44')](_0x28f8a6[_0xf84f('0x45')],{})['then'](respondWithResult(_0x291627,0xc9))['catch'](handleError(_0x291627,null));};exports[_0xf84f('0x1f')]=function(_0x1c825e,_0x53b680){if(_0x1c825e[_0xf84f('0x45')]['id']){delete _0x1c825e[_0xf84f('0x45')]['id'];}return db[_0xf84f('0x28')][_0xf84f('0x43')]({'where':{'id':_0x1c825e[_0xf84f('0x3e')]['id']}})[_0xf84f('0x20')](handleEntityNotFound(_0x53b680,null))[_0xf84f('0x20')](saveUpdates(_0x1c825e['body'],null))[_0xf84f('0x20')](respondWithResult(_0x53b680,null))['catch'](handleError(_0x53b680,null));};exports[_0xf84f('0x21')]=function(_0x4b45a3,_0x3350fd){return db['SquareMessage']['find']({'where':{'id':_0x4b45a3[_0xf84f('0x3e')]['id']}})[_0xf84f('0x20')](handleEntityNotFound(_0x3350fd,null))[_0xf84f('0x20')](removeEntity(_0x3350fd,null))[_0xf84f('0x3d')](handleError(_0x3350fd,null));};
\ No newline at end of file
index fc35b01..fd0c2c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37f0=['api','moment','bluebird','path','rimraf','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger'];(function(_0x1e4e45,_0x269ef9){var _0x577af1=function(_0x192467){while(--_0x192467){_0x1e4e45['push'](_0x1e4e45['shift']());}};_0x577af1(++_0x269ef9);}(_0x37f0,0xc0));var _0x037f=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x37f0[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x037f('0x0'));var util=require(_0x037f('0x1'));var logger=require(_0x037f('0x2'))(_0x037f('0x3'));var moment=require(_0x037f('0x4'));var BPromise=require(_0x037f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x037f('0x6'));var rimraf=require(_0x037f('0x7'));var config=require('../../config/environment');var attributes=require(_0x037f('0x8'));module[_0x037f('0x9')]=function(_0x107378,_0x3b35a1){return _0x107378[_0x037f('0xa')](_0x037f('0xb'),attributes,{'tableName':_0x037f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8448=['../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x35b19d,_0x585ab5){var _0x571f72=function(_0x16057d){while(--_0x16057d){_0x35b19d['push'](_0x35b19d['shift']());}};_0x571f72(++_0x585ab5);}(_0x8448,0x1c0));var _0x8844=function(_0x44c768,_0x552a5e){_0x44c768=_0x44c768-0x0;var _0x55daf5=_0x8448[_0x44c768];return _0x55daf5;};'use strict';var _=require(_0x8844('0x0'));var util=require('util');var logger=require(_0x8844('0x1'))(_0x8844('0x2'));var moment=require(_0x8844('0x3'));var BPromise=require(_0x8844('0x4'));var rp=require(_0x8844('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8844('0x6'));var config=require(_0x8844('0x7'));var attributes=require(_0x8844('0x8'));module[_0x8844('0x9')]=function(_0x46e3bb,_0x3b336a){return _0x46e3bb[_0x8844('0xa')](_0x8844('0xb'),attributes,{'tableName':_0x8844('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1f73103..f56eabd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c4=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','CreateSquareMessage','SquareMessage','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x178690,_0x3095f6){var _0x422fb8=function(_0x41de87){while(--_0x41de87){_0x178690['push'](_0x178690['shift']());}};_0x422fb8(++_0x3095f6);}(_0x91c4,0x108));var _0x491c=function(_0x382217,_0x17fc58){_0x382217=_0x382217-0x0;var _0x56e4a9=_0x91c4[_0x382217];return _0x56e4a9;};'use strict';var _=require('lodash');var util=require(_0x491c('0x0'));var moment=require(_0x491c('0x1'));var BPromise=require(_0x491c('0x2'));var rs=require(_0x491c('0x3'));var fs=require('fs');var Redis=require(_0x491c('0x4'));var db=require(_0x491c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x491c('0x6'))(_0x491c('0x7'));var config=require(_0x491c('0x8'));var jayson=require(_0x491c('0x9'));var client=jayson['client'][_0x491c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c2945,_0x3b8099,_0x349049){return new BPromise(function(_0x622c22,_0x304834){return client[_0x491c('0xb')](_0x2c2945,_0x349049)[_0x491c('0xc')](function(_0x3ea26){logger[_0x491c('0xd')](_0x491c('0xe'),_0x3b8099,'request\x20sent');logger[_0x491c('0xf')](_0x491c('0x10'),_0x3b8099,_0x491c('0x11'),JSON[_0x491c('0x12')](_0x3ea26));if(_0x3ea26[_0x491c('0x13')]){if(_0x3ea26['error']['code']===0x1f4){logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x3ea26[_0x491c('0x13')]['message']);return _0x304834(_0x3ea26[_0x491c('0x13')][_0x491c('0x14')]);}logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x3ea26[_0x491c('0x13')]['message']);return _0x622c22(_0x3ea26[_0x491c('0x13')][_0x491c('0x14')]);}else{logger[_0x491c('0xd')](_0x491c('0xe'),_0x3b8099,'request\x20sent');_0x622c22(_0x3ea26['result'][_0x491c('0x14')]);}})[_0x491c('0x15')](function(_0x437b87){logger[_0x491c('0x13')](_0x491c('0xe'),_0x3b8099,_0x437b87);_0x304834(_0x437b87);});});}exports[_0x491c('0x16')]=function(_0x4d35cd){var _0x9d310d=this;return new Promise(function(_0x4c54b6,_0x12a836){return db[_0x491c('0x17')]['create'](_0x4d35cd[_0x491c('0x18')],{'raw':_0x4d35cd[_0x491c('0x19')]?_0x4d35cd[_0x491c('0x19')][_0x491c('0x1a')]===undefined?!![]:![]:!![]})[_0x491c('0xc')](function(_0x549a46){logger[_0x491c('0xd')](_0x491c('0x16'),_0x4d35cd);logger[_0x491c('0xf')](_0x491c('0x16'),_0x4d35cd,JSON[_0x491c('0x12')](_0x549a46));_0x4c54b6(_0x549a46);})[_0x491c('0x15')](function(_0x29dd41){logger[_0x491c('0x13')]('CreateSquareMessage',_0x29dd41['message'],_0x4d35cd);_0x12a836(_0x9d310d[_0x491c('0x13')](0x1f4,_0x29dd41[_0x491c('0x14')]));});});};
\ No newline at end of file
+var _0xc1df=['options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SquareMessage,\x20%s,\x20%s','message','result','catch','CreateSquareMessage','SquareMessage'];(function(_0x25c1a7,_0xe91cdb){var _0x537c1c=function(_0x9db8ad){while(--_0x9db8ad){_0x25c1a7['push'](_0x25c1a7['shift']());}};_0x537c1c(++_0xe91cdb);}(_0xc1df,0x199));var _0xfc1d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xc1df[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xfc1d('0x0'));var util=require(_0xfc1d('0x1'));var moment=require(_0xfc1d('0x2'));var BPromise=require(_0xfc1d('0x3'));var rs=require(_0xfc1d('0x4'));var fs=require('fs');var Redis=require(_0xfc1d('0x5'));var db=require(_0xfc1d('0x6'))['db'];var utils=require(_0xfc1d('0x7'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xfc1d('0x8'));var client=jayson[_0xfc1d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ad06e,_0x47a23d,_0x529549){return new BPromise(function(_0x197510,_0x546c6e){return client[_0xfc1d('0xa')](_0x4ad06e,_0x529549)[_0xfc1d('0xb')](function(_0x3a8899){logger[_0xfc1d('0xc')]('SquareMessage,\x20%s,\x20%s',_0x47a23d,'request\x20sent');logger['debug'](_0xfc1d('0xd'),_0x47a23d,_0xfc1d('0xe'),JSON[_0xfc1d('0xf')](_0x3a8899));if(_0x3a8899['error']){if(_0x3a8899[_0xfc1d('0x10')]['code']===0x1f4){logger['error'](_0xfc1d('0x11'),_0x47a23d,_0x3a8899[_0xfc1d('0x10')][_0xfc1d('0x12')]);return _0x546c6e(_0x3a8899[_0xfc1d('0x10')]['message']);}logger[_0xfc1d('0x10')]('SquareMessage,\x20%s,\x20%s',_0x47a23d,_0x3a8899[_0xfc1d('0x10')][_0xfc1d('0x12')]);return _0x197510(_0x3a8899['error']['message']);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x47a23d,_0xfc1d('0xe'));_0x197510(_0x3a8899[_0xfc1d('0x13')][_0xfc1d('0x12')]);}})[_0xfc1d('0x14')](function(_0x5e7b7d){logger[_0xfc1d('0x10')]('SquareMessage,\x20%s,\x20%s',_0x47a23d,_0x5e7b7d);_0x546c6e(_0x5e7b7d);});});}exports[_0xfc1d('0x15')]=function(_0x4faa38){var _0x56181d=this;return new Promise(function(_0x44e479,_0x1b60cd){return db[_0xfc1d('0x16')]['create'](_0x4faa38['body'],{'raw':_0x4faa38[_0xfc1d('0x17')]?_0x4faa38[_0xfc1d('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x49bfdc){logger[_0xfc1d('0xc')](_0xfc1d('0x15'),_0x4faa38);logger['debug'](_0xfc1d('0x15'),_0x4faa38,JSON['stringify'](_0x49bfdc));_0x44e479(_0x49bfdc);})[_0xfc1d('0x14')](function(_0x5a15f3){logger[_0xfc1d('0x10')](_0xfc1d('0x15'),_0x5a15f3[_0xfc1d('0x12')],_0x4faa38);_0x1b60cd(_0x56181d['error'](0x1f4,_0x5a15f3['message']));});});};
\ No newline at end of file
index f9ca1b3..f0f736d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58d3=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/test','15s'];(function(_0x43df39,_0x16f037){var _0x3e673d=function(_0x2dbb5c){while(--_0x2dbb5c){_0x43df39['push'](_0x43df39['shift']());}};_0x3e673d(++_0x16f037);}(_0x58d3,0xa1));var _0x358d=function(_0x1cf3f0,_0x41dce5){_0x1cf3f0=_0x1cf3f0-0x0;var _0x571f60=_0x58d3[_0x1cf3f0];return _0x571f60;};'use strict';var multer=require(_0x358d('0x0'));var util=require(_0x358d('0x1'));var path=require(_0x358d('0x2'));var timeout=require(_0x358d('0x3'));var express=require(_0x358d('0x4'));var router=express[_0x358d('0x5')]();var fs_extra=require(_0x358d('0x6'));var auth=require(_0x358d('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x358d('0x8'));var controller=require('./squareOdbc.controller');router[_0x358d('0x9')]('/',auth[_0x358d('0xa')](),controller[_0x358d('0xb')]);router[_0x358d('0x9')](_0x358d('0xc'),auth[_0x358d('0xa')](),controller['show']);router[_0x358d('0x9')](_0x358d('0xd'),auth[_0x358d('0xa')](),timeout(_0x358d('0xe')),controller['test']);router[_0x358d('0xf')]('/',auth[_0x358d('0xa')](),controller[_0x358d('0x10')]);router[_0x358d('0x11')](_0x358d('0xc'),auth[_0x358d('0xa')](),controller[_0x358d('0x12')]);router[_0x358d('0x13')](_0x358d('0xc'),auth['isAuthenticated'](),controller[_0x358d('0x14')]);module[_0x358d('0x15')]=router;
\ No newline at end of file
+var _0x8a5c=['../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','/:id','show','isAuthenticated','15s','test','post','create','put','update','delete','destroy','exports','util','path','express','Router'];(function(_0x4482d8,_0x3a7d3b){var _0x1ce8e5=function(_0x51a40c){while(--_0x51a40c){_0x4482d8['push'](_0x4482d8['shift']());}};_0x1ce8e5(++_0x3a7d3b);}(_0x8a5c,0xb0));var _0xc8a5=function(_0x1a525e,_0x49cde5){_0x1a525e=_0x1a525e-0x0;var _0x271c58=_0x8a5c[_0x1a525e];return _0x271c58;};'use strict';var multer=require('multer');var util=require(_0xc8a5('0x0'));var path=require(_0xc8a5('0x1'));var timeout=require('connect-timeout');var express=require(_0xc8a5('0x2'));var router=express[_0xc8a5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc8a5('0x4'));var interaction=require(_0xc8a5('0x5'));var config=require('../../config/environment');var controller=require(_0xc8a5('0x6'));router[_0xc8a5('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc8a5('0x7')](_0xc8a5('0x8'),auth['isAuthenticated'](),controller[_0xc8a5('0x9')]);router[_0xc8a5('0x7')]('/:id/test',auth[_0xc8a5('0xa')](),timeout(_0xc8a5('0xb')),controller[_0xc8a5('0xc')]);router[_0xc8a5('0xd')]('/',auth[_0xc8a5('0xa')](),controller[_0xc8a5('0xe')]);router[_0xc8a5('0xf')](_0xc8a5('0x8'),auth[_0xc8a5('0xa')](),controller[_0xc8a5('0x10')]);router[_0xc8a5('0x11')](_0xc8a5('0x8'),auth[_0xc8a5('0xa')](),controller[_0xc8a5('0x12')]);module[_0xc8a5('0x13')]=router;
\ No newline at end of file
index f979ad5..5fbb70c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eab=['STRING','name','sequelize','exports'];(function(_0x401944,_0x42680c){var _0x21a306=function(_0x3c0b35){while(--_0x3c0b35){_0x401944['push'](_0x401944['shift']());}};_0x21a306(++_0x42680c);}(_0x0eab,0xde));var _0xb0ea=function(_0x282669,_0x4b2c00){_0x282669=_0x282669-0x0;var _0x37783c=_0x0eab[_0x282669];return _0x37783c;};'use strict';var Sequelize=require(_0xb0ea('0x0'));module[_0xb0ea('0x1')]={'name':{'type':Sequelize[_0xb0ea('0x2')],'unique':_0xb0ea('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xb0ea('0x2')]},'description':{'type':Sequelize[_0xb0ea('0x2')]}};
\ No newline at end of file
+var _0x309d=['name','sequelize','exports','STRING'];(function(_0x1c2950,_0x3f4d86){var _0x51cc78=function(_0x2c35be){while(--_0x2c35be){_0x1c2950['push'](_0x1c2950['shift']());}};_0x51cc78(++_0x3f4d86);}(_0x309d,0xb5));var _0xd309=function(_0x2d1ca8,_0x3ba455){_0x2d1ca8=_0x2d1ca8-0x0;var _0x2e6efc=_0x309d[_0x2d1ca8];return _0x2e6efc;};'use strict';var Sequelize=require(_0xd309('0x0'));module[_0xd309('0x1')]={'name':{'type':Sequelize[_0xd309('0x2')],'unique':_0xd309('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xd309('0x2')]},'description':{'type':Sequelize[_0xd309('0x2')]}};
\ No newline at end of file
index 34639a9..568faaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e6=['../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','update','destroy','get','ODBC','UserProfileResource','then','error','stack','name','send','index','map','SquareOdbc','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','rawAttributes','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','openSync','closeSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api'];(function(_0x4fe4d2,_0x7995c4){var _0x56541d=function(_0x3542f5){while(--_0x3542f5){_0x4fe4d2['push'](_0x4fe4d2['shift']());}};_0x56541d(++_0x7995c4);}(_0x30e6,0xef));var _0x630e=function(_0x1e5005,_0x574bfa){_0x1e5005=_0x1e5005-0x0;var _0x1ff246=_0x30e6[_0x1e5005];return _0x1ff246;};'use strict';var emlformat=require(_0x630e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x630e('0x1'));var jsonpatch=require(_0x630e('0x2'));var rp=require(_0x630e('0x3'));var moment=require(_0x630e('0x4'));var BPromise=require(_0x630e('0x5'));var Mustache=require(_0x630e('0x6'));var util=require(_0x630e('0x7'));var path=require('path');var sox=require(_0x630e('0x8'));var csv=require(_0x630e('0x9'));var ejs=require(_0x630e('0xa'));var fs=require('fs');var fs_extra=require(_0x630e('0xb'));var _=require(_0x630e('0xc'));var squel=require(_0x630e('0xd'));var crypto=require(_0x630e('0xe'));var jsforce=require(_0x630e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x630e('0x9'));var querystring=require(_0x630e('0x10'));var Papa=require(_0x630e('0x11'));var Redis=require('ioredis');var authService=require(_0x630e('0x12'));var qs=require(_0x630e('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x630e('0x14'));var logger=require('../../config/logger')(_0x630e('0x15'));var utils=require('../../config/utils');var config=require(_0x630e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x630e('0x17'))['db'];function respondWithStatusCode(_0x3739bc,_0x2b31bc){_0x2b31bc=_0x2b31bc||0xcc;return function(_0x25be6e){if(_0x25be6e){return _0x3739bc[_0x630e('0x18')](_0x2b31bc);}return _0x3739bc[_0x630e('0x19')](_0x2b31bc)[_0x630e('0x1a')]();};}function respondWithResult(_0x5e155d,_0x433e13){_0x433e13=_0x433e13||0xc8;return function(_0x3dada7){if(_0x3dada7){return _0x5e155d['status'](_0x433e13)[_0x630e('0x1b')](_0x3dada7);}};}function respondWithFilteredResult(_0x52531f,_0x1b7dfa){return function(_0x4d7d4b){if(_0x4d7d4b){var _0x55a759=typeof _0x1b7dfa['offset']===_0x630e('0x1c')&&typeof _0x1b7dfa[_0x630e('0x1d')]===_0x630e('0x1c');var _0x1de56c=_0x4d7d4b[_0x630e('0x1e')];var _0x4e712d=_0x55a759?0x0:_0x1b7dfa[_0x630e('0x1f')];var _0x54e322=_0x55a759?_0x4d7d4b[_0x630e('0x1e')]:_0x1b7dfa[_0x630e('0x1f')]+_0x1b7dfa[_0x630e('0x1d')];var _0x24f5e0;if(_0x54e322>=_0x1de56c){_0x54e322=_0x1de56c;_0x24f5e0=0xc8;}else{_0x24f5e0=0xce;}_0x52531f[_0x630e('0x19')](_0x24f5e0);return _0x52531f[_0x630e('0x20')]('Content-Range',_0x4e712d+'-'+_0x54e322+'/'+_0x1de56c)['json'](_0x4d7d4b);}return null;};}function patchUpdates(_0x1efaf3){return function(_0x4005b9){try{jsonpatch[_0x630e('0x21')](_0x4005b9,_0x1efaf3,!![]);}catch(_0x45f4b9){return BPromise['reject'](_0x45f4b9);}return _0x4005b9[_0x630e('0x22')]();};}function saveUpdates(_0x174936,_0x22c245){return function(_0x5e5df4){if(_0x5e5df4){return _0x5e5df4[_0x630e('0x23')](_0x174936)['then'](function(_0x2e753a){return _0x2e753a;});}return null;};}function removeEntity(_0x44389e,_0x1beae8){return function(_0x2f2170){if(_0x2f2170){return _0x2f2170[_0x630e('0x24')]()['then'](function(){var _0x41acb5=_0x2f2170[_0x630e('0x25')]({'plain':!![]});var _0x41a59a=_0x630e('0x26');return db[_0x630e('0x27')][_0x630e('0x24')]({'where':{'type':_0x41a59a,'resourceId':_0x41acb5['id']}})['then'](function(){return _0x2f2170;});})[_0x630e('0x28')](function(){_0x44389e['status'](0xcc)[_0x630e('0x1a')]();});}};}function handleEntityNotFound(_0xf5ebbf,_0x4081da){return function(_0x201628){if(!_0x201628){_0xf5ebbf[_0x630e('0x18')](0x194);}return _0x201628;};}function handleError(_0x53bc2d,_0xd07ad3){_0xd07ad3=_0xd07ad3||0x1f4;return function(_0xc135fd){logger[_0x630e('0x29')](_0xc135fd[_0x630e('0x2a')]);if(_0xc135fd['name']){delete _0xc135fd[_0x630e('0x2b')];}_0x53bc2d[_0x630e('0x19')](_0xd07ad3)[_0x630e('0x2c')](_0xc135fd);};}exports[_0x630e('0x2d')]=function(_0xe77b25,_0x2bbbc1){var _0x20a897={},_0x14a8aa={},_0x50c2c6={'count':0x0,'rows':[]};var _0x59295e=_[_0x630e('0x2e')](db[_0x630e('0x2f')]['rawAttributes'],function(_0x25c764){return{'name':_0x25c764['fieldName'],'type':_0x25c764[_0x630e('0x30')]['key']};});_0x14a8aa[_0x630e('0x31')]=_['map'](_0x59295e,'name');_0x14a8aa['query']=_[_0x630e('0x32')](_0xe77b25[_0x630e('0x33')]);_0x14a8aa[_0x630e('0x34')]=_[_0x630e('0x35')](_0x14a8aa[_0x630e('0x31')],_0x14a8aa[_0x630e('0x33')]);_0x20a897[_0x630e('0x36')]=_[_0x630e('0x35')](_0x14a8aa['model'],qs[_0x630e('0x37')](_0xe77b25[_0x630e('0x33')][_0x630e('0x37')]));_0x20a897[_0x630e('0x36')]=_0x20a897['attributes'][_0x630e('0x38')]?_0x20a897[_0x630e('0x36')]:_0x14a8aa[_0x630e('0x31')];if(!_0xe77b25[_0x630e('0x33')][_0x630e('0x39')]('nolimit')){_0x20a897[_0x630e('0x1d')]=qs[_0x630e('0x1d')](_0xe77b25[_0x630e('0x33')]['limit']);_0x20a897['offset']=qs[_0x630e('0x1f')](_0xe77b25['query'][_0x630e('0x1f')]);}_0x20a897[_0x630e('0x3a')]=qs[_0x630e('0x3b')](_0xe77b25[_0x630e('0x33')]['sort']);_0x20a897[_0x630e('0x3c')]=qs[_0x630e('0x34')](_[_0x630e('0x3d')](_0xe77b25[_0x630e('0x33')],_0x14a8aa['filters']),_0x59295e);if(_0xe77b25[_0x630e('0x33')]['filter']){_0x20a897[_0x630e('0x3c')]=_[_0x630e('0x3e')](_0x20a897['where'],{'$or':_['map'](_0x59295e,function(_0x2b8f37){if(_0x2b8f37['type']!==_0x630e('0x3f')){var _0x181502={};_0x181502[_0x2b8f37[_0x630e('0x2b')]]={'$like':'%'+_0xe77b25[_0x630e('0x33')][_0x630e('0x40')]+'%'};return _0x181502;}})});}_0x20a897=_[_0x630e('0x3e')]({},_0x20a897,_0xe77b25[_0x630e('0x41')]);var _0x1ca320={'where':_0x20a897[_0x630e('0x3c')]};return db[_0x630e('0x2f')][_0x630e('0x1e')](_0x1ca320)[_0x630e('0x28')](function(_0x13c6b1){_0x50c2c6[_0x630e('0x1e')]=_0x13c6b1;if(_0xe77b25[_0x630e('0x33')][_0x630e('0x42')]){_0x20a897['include']=[{'all':!![]}];}return db[_0x630e('0x2f')][_0x630e('0x43')](_0x20a897);})[_0x630e('0x28')](function(_0x15f033){_0x50c2c6[_0x630e('0x44')]=_0x15f033;return _0x50c2c6;})[_0x630e('0x28')](respondWithFilteredResult(_0x2bbbc1,_0x20a897))['catch'](handleError(_0x2bbbc1,null));};exports['show']=function(_0x7aa2f2,_0x14ffe8){var _0x4791df={'raw':!![],'where':{'id':_0x7aa2f2[_0x630e('0x45')]['id']}},_0x496997={};_0x496997['model']=_['keys'](db[_0x630e('0x2f')][_0x630e('0x46')]);_0x496997[_0x630e('0x33')]=_[_0x630e('0x32')](_0x7aa2f2[_0x630e('0x33')]);_0x496997[_0x630e('0x34')]=_['intersection'](_0x496997['model'],_0x496997[_0x630e('0x33')]);_0x4791df[_0x630e('0x36')]=_[_0x630e('0x35')](_0x496997['model'],qs[_0x630e('0x37')](_0x7aa2f2[_0x630e('0x33')]['fields']));_0x4791df[_0x630e('0x36')]=_0x4791df['attributes'][_0x630e('0x38')]?_0x4791df[_0x630e('0x36')]:_0x496997[_0x630e('0x31')];if(_0x7aa2f2[_0x630e('0x33')]['includeAll']){_0x4791df[_0x630e('0x47')]=[{'all':!![]}];}_0x4791df=_[_0x630e('0x3e')]({},_0x4791df,_0x7aa2f2[_0x630e('0x41')]);return db[_0x630e('0x2f')][_0x630e('0x48')](_0x4791df)[_0x630e('0x28')](handleEntityNotFound(_0x14ffe8,null))[_0x630e('0x28')](respondWithResult(_0x14ffe8,null))[_0x630e('0x49')](handleError(_0x14ffe8,null));};exports['create']=function(_0x16917f,_0x3c2dae){return db[_0x630e('0x2f')][_0x630e('0x4a')](_0x16917f[_0x630e('0x4b')],{})[_0x630e('0x28')](function(_0x28672c){var _0x22353b=_0x16917f[_0x630e('0x4c')]['get']({'plain':!![]});if(!_0x22353b)throw new Error(_0x630e('0x4d'));if(_0x22353b[_0x630e('0x4e')]===_0x630e('0x4c')){var _0x432aee=_0x28672c[_0x630e('0x25')]({'plain':!![]});var _0x27cedb='ODBC';return db[_0x630e('0x4f')][_0x630e('0x48')]({'where':{'name':_0x27cedb,'userProfileId':_0x22353b[_0x630e('0x50')]},'raw':!![]})[_0x630e('0x28')](function(_0x1af2db){if(_0x1af2db&&_0x1af2db[_0x630e('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x432aee[_0x630e('0x2b')],'resourceId':_0x432aee['id'],'type':_0x1af2db['name'],'sectionId':_0x1af2db['id']},{})[_0x630e('0x28')](function(){return _0x28672c;});}else{return _0x28672c;}})[_0x630e('0x49')](function(_0x3da614){logger[_0x630e('0x29')](_0x630e('0x52'),_0x3da614);throw _0x3da614;});}return _0x28672c;})[_0x630e('0x28')](respondWithResult(_0x3c2dae,0xc9))[_0x630e('0x49')](handleError(_0x3c2dae,null));};exports[_0x630e('0x23')]=function(_0x5b8e3a,_0x2fda8b){if(_0x5b8e3a[_0x630e('0x4b')]['id']){delete _0x5b8e3a[_0x630e('0x4b')]['id'];}return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x5b8e3a['params']['id']}})[_0x630e('0x28')](handleEntityNotFound(_0x2fda8b,null))['then'](saveUpdates(_0x5b8e3a[_0x630e('0x4b')],null))[_0x630e('0x28')](respondWithResult(_0x2fda8b,null))[_0x630e('0x49')](handleError(_0x2fda8b,null));};exports[_0x630e('0x24')]=function(_0x4fa8d1,_0x340ef1){return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x4fa8d1[_0x630e('0x45')]['id']}})['then'](handleEntityNotFound(_0x340ef1,null))[_0x630e('0x28')](removeEntity(_0x340ef1,null))[_0x630e('0x49')](handleError(_0x340ef1,null));};exports['test']=function(_0x15256e,_0x588cb0,_0x58cf44){var _0x76ca42;return db[_0x630e('0x2f')][_0x630e('0x48')]({'where':{'id':_0x15256e[_0x630e('0x45')]['id']},'attributes':['id',_0x630e('0x53')]})[_0x630e('0x28')](handleEntityNotFound(_0x588cb0,null))[_0x630e('0x28')](function(_0x5a4c95){if(_0x5a4c95){var _0x1fd281=require(_0x630e('0x54'))();_0x1fd281[_0x630e('0x55')](_0x5a4c95[_0x630e('0x53')]);_0x1fd281[_0x630e('0x56')]();return _0x5a4c95;}})[_0x630e('0x28')](respondWithResult(_0x588cb0,null))[_0x630e('0x49')](handleError(_0x588cb0,null));};
\ No newline at end of file
+var _0x462f=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','name','index','SquareOdbc','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','keys','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','closeSync','rimraf','zip-dir','request-promise','bluebird','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x5216e0,_0x4f8cb9){var _0x5b3f40=function(_0x30c832){while(--_0x30c832){_0x5216e0['push'](_0x5216e0['shift']());}};_0x5b3f40(++_0x4f8cb9);}(_0x462f,0x144));var _0xf462=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x462f[_0x20cb20];return _0x2fcf4b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf462('0x0'));var zipdir=require(_0xf462('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf462('0x2'));var moment=require('moment');var BPromise=require(_0xf462('0x3'));var Mustache=require('mustache');var util=require(_0xf462('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xf462('0x5'));var ejs=require(_0xf462('0x6'));var fs=require('fs');var fs_extra=require(_0xf462('0x7'));var _=require('lodash');var squel=require(_0xf462('0x8'));var crypto=require(_0xf462('0x9'));var jsforce=require(_0xf462('0xa'));var deskjs=require(_0xf462('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf462('0xc'));var Redis=require(_0xf462('0xd'));var authService=require(_0xf462('0xe'));var qs=require(_0xf462('0xf'));var as=require(_0xf462('0x10'));var hardwareService=require(_0xf462('0x11'));var logger=require(_0xf462('0x12'))(_0xf462('0x13'));var utils=require(_0xf462('0x14'));var config=require(_0xf462('0x15'));var licenseUtil=require(_0xf462('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x206391,_0x2c0f79){_0x2c0f79=_0x2c0f79||0xcc;return function(_0x5d9d50){if(_0x5d9d50){return _0x206391[_0xf462('0x17')](_0x2c0f79);}return _0x206391[_0xf462('0x18')](_0x2c0f79)[_0xf462('0x19')]();};}function respondWithResult(_0x1195ee,_0x5e38e3){_0x5e38e3=_0x5e38e3||0xc8;return function(_0x580071){if(_0x580071){return _0x1195ee[_0xf462('0x18')](_0x5e38e3)[_0xf462('0x1a')](_0x580071);}};}function respondWithFilteredResult(_0x22a940,_0x493aa5){return function(_0x3850cf){if(_0x3850cf){var _0x171c5f=typeof _0x493aa5[_0xf462('0x1b')]===_0xf462('0x1c')&&typeof _0x493aa5[_0xf462('0x1d')]===_0xf462('0x1c');var _0xa3c7fb=_0x3850cf['count'];var _0x4bd4c3=_0x171c5f?0x0:_0x493aa5['offset'];var _0x1c5b85=_0x171c5f?_0x3850cf[_0xf462('0x1e')]:_0x493aa5[_0xf462('0x1b')]+_0x493aa5[_0xf462('0x1d')];var _0x589f56;if(_0x1c5b85>=_0xa3c7fb){_0x1c5b85=_0xa3c7fb;_0x589f56=0xc8;}else{_0x589f56=0xce;}_0x22a940[_0xf462('0x18')](_0x589f56);return _0x22a940[_0xf462('0x1f')](_0xf462('0x20'),_0x4bd4c3+'-'+_0x1c5b85+'/'+_0xa3c7fb)[_0xf462('0x1a')](_0x3850cf);}return null;};}function patchUpdates(_0x4e0a64){return function(_0x2557bb){try{jsonpatch[_0xf462('0x21')](_0x2557bb,_0x4e0a64,!![]);}catch(_0x48191b){return BPromise[_0xf462('0x22')](_0x48191b);}return _0x2557bb[_0xf462('0x23')]();};}function saveUpdates(_0x2ca125,_0x47dacf){return function(_0x4121f0){if(_0x4121f0){return _0x4121f0[_0xf462('0x24')](_0x2ca125)[_0xf462('0x25')](function(_0x417a2b){return _0x417a2b;});}return null;};}function removeEntity(_0x458d53,_0x17c72b){return function(_0x1bd28c){if(_0x1bd28c){return _0x1bd28c[_0xf462('0x26')]()[_0xf462('0x25')](function(){var _0x5f830f=_0x1bd28c[_0xf462('0x27')]({'plain':!![]});var _0x5eea0e='ODBC';return db[_0xf462('0x28')]['destroy']({'where':{'type':_0x5eea0e,'resourceId':_0x5f830f['id']}})['then'](function(){return _0x1bd28c;});})[_0xf462('0x25')](function(){_0x458d53[_0xf462('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ec587,_0x49ef4e){return function(_0x3c26b8){if(!_0x3c26b8){_0x3ec587['sendStatus'](0x194);}return _0x3c26b8;};}function handleError(_0x34664d,_0x10b70c){_0x10b70c=_0x10b70c||0x1f4;return function(_0x3915f5){logger['error'](_0x3915f5['stack']);if(_0x3915f5[_0xf462('0x29')]){delete _0x3915f5[_0xf462('0x29')];}_0x34664d['status'](_0x10b70c)['send'](_0x3915f5);};}exports[_0xf462('0x2a')]=function(_0x574bc2,_0x2d90af){var _0x569fbb={},_0x2ce98a={},_0x2ce56c={'count':0x0,'rows':[]};var _0x1f8316=_['map'](db[_0xf462('0x2b')]['rawAttributes'],function(_0x182d60){return{'name':_0x182d60['fieldName'],'type':_0x182d60[_0xf462('0x2c')]['key']};});_0x2ce98a['model']=_[_0xf462('0x2d')](_0x1f8316,_0xf462('0x29'));_0x2ce98a[_0xf462('0x2e')]=_['keys'](_0x574bc2[_0xf462('0x2e')]);_0x2ce98a[_0xf462('0x2f')]=_[_0xf462('0x30')](_0x2ce98a[_0xf462('0x31')],_0x2ce98a[_0xf462('0x2e')]);_0x569fbb[_0xf462('0x32')]=_[_0xf462('0x30')](_0x2ce98a[_0xf462('0x31')],qs[_0xf462('0x33')](_0x574bc2[_0xf462('0x2e')][_0xf462('0x33')]));_0x569fbb[_0xf462('0x32')]=_0x569fbb[_0xf462('0x32')][_0xf462('0x34')]?_0x569fbb[_0xf462('0x32')]:_0x2ce98a[_0xf462('0x31')];if(!_0x574bc2[_0xf462('0x2e')][_0xf462('0x35')](_0xf462('0x36'))){_0x569fbb['limit']=qs[_0xf462('0x1d')](_0x574bc2[_0xf462('0x2e')]['limit']);_0x569fbb[_0xf462('0x1b')]=qs['offset'](_0x574bc2[_0xf462('0x2e')]['offset']);}_0x569fbb[_0xf462('0x37')]=qs['sort'](_0x574bc2[_0xf462('0x2e')][_0xf462('0x38')]);_0x569fbb[_0xf462('0x39')]=qs['filters'](_[_0xf462('0x3a')](_0x574bc2[_0xf462('0x2e')],_0x2ce98a[_0xf462('0x2f')]),_0x1f8316);if(_0x574bc2[_0xf462('0x2e')][_0xf462('0x3b')]){_0x569fbb[_0xf462('0x39')]=_[_0xf462('0x3c')](_0x569fbb[_0xf462('0x39')],{'$or':_[_0xf462('0x2d')](_0x1f8316,function(_0x10ce37){if(_0x10ce37[_0xf462('0x2c')]!==_0xf462('0x3d')){var _0x10cb26={};_0x10cb26[_0x10ce37[_0xf462('0x29')]]={'$like':'%'+_0x574bc2[_0xf462('0x2e')][_0xf462('0x3b')]+'%'};return _0x10cb26;}})});}_0x569fbb=_['merge']({},_0x569fbb,_0x574bc2[_0xf462('0x3e')]);var _0x4d89ee={'where':_0x569fbb[_0xf462('0x39')]};return db[_0xf462('0x2b')][_0xf462('0x1e')](_0x4d89ee)[_0xf462('0x25')](function(_0x1575ad){_0x2ce56c[_0xf462('0x1e')]=_0x1575ad;if(_0x574bc2[_0xf462('0x2e')][_0xf462('0x3f')]){_0x569fbb['include']=[{'all':!![]}];}return db[_0xf462('0x2b')][_0xf462('0x40')](_0x569fbb);})[_0xf462('0x25')](function(_0xa54b3){_0x2ce56c['rows']=_0xa54b3;return _0x2ce56c;})['then'](respondWithFilteredResult(_0x2d90af,_0x569fbb))[_0xf462('0x41')](handleError(_0x2d90af,null));};exports[_0xf462('0x42')]=function(_0x103d12,_0x3376e6){var _0x34ca4e={'raw':!![],'where':{'id':_0x103d12[_0xf462('0x43')]['id']}},_0x5c25bd={};_0x5c25bd[_0xf462('0x31')]=_[_0xf462('0x44')](db[_0xf462('0x2b')][_0xf462('0x45')]);_0x5c25bd[_0xf462('0x2e')]=_[_0xf462('0x44')](_0x103d12[_0xf462('0x2e')]);_0x5c25bd[_0xf462('0x2f')]=_[_0xf462('0x30')](_0x5c25bd[_0xf462('0x31')],_0x5c25bd[_0xf462('0x2e')]);_0x34ca4e[_0xf462('0x32')]=_[_0xf462('0x30')](_0x5c25bd[_0xf462('0x31')],qs[_0xf462('0x33')](_0x103d12[_0xf462('0x2e')]['fields']));_0x34ca4e['attributes']=_0x34ca4e['attributes']['length']?_0x34ca4e[_0xf462('0x32')]:_0x5c25bd['model'];if(_0x103d12[_0xf462('0x2e')]['includeAll']){_0x34ca4e[_0xf462('0x46')]=[{'all':!![]}];}_0x34ca4e=_[_0xf462('0x3c')]({},_0x34ca4e,_0x103d12['options']);return db['SquareOdbc'][_0xf462('0x47')](_0x34ca4e)[_0xf462('0x25')](handleEntityNotFound(_0x3376e6,null))[_0xf462('0x25')](respondWithResult(_0x3376e6,null))[_0xf462('0x41')](handleError(_0x3376e6,null));};exports[_0xf462('0x48')]=function(_0x46fe33,_0x1e5abc){return db[_0xf462('0x2b')]['create'](_0x46fe33[_0xf462('0x49')],{})[_0xf462('0x25')](function(_0x165880){var _0x45ebda=_0x46fe33[_0xf462('0x4a')][_0xf462('0x27')]({'plain':!![]});if(!_0x45ebda)throw new Error(_0xf462('0x4b'));if(_0x45ebda[_0xf462('0x4c')]===_0xf462('0x4a')){var _0x586535=_0x165880[_0xf462('0x27')]({'plain':!![]});var _0x3cc50a=_0xf462('0x4d');return db[_0xf462('0x4e')]['find']({'where':{'name':_0x3cc50a,'userProfileId':_0x45ebda[_0xf462('0x4f')]},'raw':!![]})['then'](function(_0x1b35ec){if(_0x1b35ec&&_0x1b35ec[_0xf462('0x50')]===0x0){return db[_0xf462('0x28')][_0xf462('0x48')]({'name':_0x586535['name'],'resourceId':_0x586535['id'],'type':_0x1b35ec['name'],'sectionId':_0x1b35ec['id']},{})['then'](function(){return _0x165880;});}else{return _0x165880;}})[_0xf462('0x41')](function(_0x292a78){logger['error'](_0xf462('0x51'),_0x292a78);throw _0x292a78;});}return _0x165880;})[_0xf462('0x25')](respondWithResult(_0x1e5abc,0xc9))[_0xf462('0x41')](handleError(_0x1e5abc,null));};exports[_0xf462('0x24')]=function(_0x38adda,_0x3ffee6){if(_0x38adda[_0xf462('0x49')]['id']){delete _0x38adda[_0xf462('0x49')]['id'];}return db['SquareOdbc']['find']({'where':{'id':_0x38adda[_0xf462('0x43')]['id']}})[_0xf462('0x25')](handleEntityNotFound(_0x3ffee6,null))[_0xf462('0x25')](saveUpdates(_0x38adda[_0xf462('0x49')],null))[_0xf462('0x25')](respondWithResult(_0x3ffee6,null))['catch'](handleError(_0x3ffee6,null));};exports['destroy']=function(_0xe77fba,_0x466cc4){return db[_0xf462('0x2b')][_0xf462('0x47')]({'where':{'id':_0xe77fba[_0xf462('0x43')]['id']}})[_0xf462('0x25')](handleEntityNotFound(_0x466cc4,null))[_0xf462('0x25')](removeEntity(_0x466cc4,null))[_0xf462('0x41')](handleError(_0x466cc4,null));};exports[_0xf462('0x52')]=function(_0x3c9a19,_0x1b52b5,_0x4ec290){var _0x578fa3;return db[_0xf462('0x2b')][_0xf462('0x47')]({'where':{'id':_0x3c9a19[_0xf462('0x43')]['id']},'attributes':['id',_0xf462('0x53')]})[_0xf462('0x25')](handleEntityNotFound(_0x1b52b5,null))['then'](function(_0x47cb1f){if(_0x47cb1f){var _0x2918a8=require(_0xf462('0x54'))();_0x2918a8['openSync'](_0x47cb1f[_0xf462('0x53')]);_0x2918a8[_0xf462('0x55')]();return _0x47cb1f;}})[_0xf462('0x25')](respondWithResult(_0x1b52b5,null))[_0xf462('0x41')](handleError(_0x1b52b5,null));};
\ No newline at end of file
index 09cddb8..329417b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75bb=['SquareOdbc','square_odbc','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define'];(function(_0x59d0cc,_0xa7c52b){var _0x2ae79f=function(_0x33042e){while(--_0x33042e){_0x59d0cc['push'](_0x59d0cc['shift']());}};_0x2ae79f(++_0xa7c52b);}(_0x75bb,0x106));var _0xb75b=function(_0x59956c,_0x4b5fbf){_0x59956c=_0x59956c-0x0;var _0x3b9ba8=_0x75bb[_0x59956c];return _0x3b9ba8;};'use strict';var _=require(_0xb75b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb75b('0x1'));var moment=require(_0xb75b('0x2'));var BPromise=require(_0xb75b('0x3'));var rp=require(_0xb75b('0x4'));var fs=require('fs');var path=require(_0xb75b('0x5'));var rimraf=require(_0xb75b('0x6'));var config=require(_0xb75b('0x7'));var attributes=require(_0xb75b('0x8'));module[_0xb75b('0x9')]=function(_0x4bca61,_0x477e5f){return _0x4bca61[_0xb75b('0xa')](_0xb75b('0xb'),attributes,{'tableName':_0xb75b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf7f9=['util','../../config/logger','moment','request-promise','path','./squareOdbc.attributes','exports','SquareOdbc','lodash'];(function(_0x311aad,_0x54d658){var _0x1779bd=function(_0x2520fb){while(--_0x2520fb){_0x311aad['push'](_0x311aad['shift']());}};_0x1779bd(++_0x54d658);}(_0xf7f9,0x128));var _0x9f7f=function(_0x4ce2f4,_0x5e3d4a){_0x4ce2f4=_0x4ce2f4-0x0;var _0x13145e=_0xf7f9[_0x4ce2f4];return _0x13145e;};'use strict';var _=require(_0x9f7f('0x0'));var util=require(_0x9f7f('0x1'));var logger=require(_0x9f7f('0x2'))('api');var moment=require(_0x9f7f('0x3'));var BPromise=require('bluebird');var rp=require(_0x9f7f('0x4'));var fs=require('fs');var path=require(_0x9f7f('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9f7f('0x6'));module[_0x9f7f('0x7')]=function(_0x3a9d37,_0x2afcbf){return _0x3a9d37['define'](_0x9f7f('0x8'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 510e042..f35a3b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf46d=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','include','map','model','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc'];(function(_0x484852,_0x5c931e){var _0x9d5fe4=function(_0x2c756f){while(--_0x2c756f){_0x484852['push'](_0x484852['shift']());}};_0x9d5fe4(++_0x5c931e);}(_0xf46d,0x191));var _0xdf46=function(_0x374ada,_0x27b3a5){_0x374ada=_0x374ada-0x0;var _0x449ed8=_0xf46d[_0x374ada];return _0x449ed8;};'use strict';var _=require(_0xdf46('0x0'));var util=require(_0xdf46('0x1'));var moment=require(_0xdf46('0x2'));var BPromise=require(_0xdf46('0x3'));var rs=require(_0xdf46('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf46('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdf46('0x6'));var config=require(_0xdf46('0x7'));var jayson=require(_0xdf46('0x8'));var client=jayson[_0xdf46('0x9')][_0xdf46('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x588bad,_0x6270b3,_0x234726){return new BPromise(function(_0x1f4c01,_0xea6332){return client[_0xdf46('0xb')](_0x588bad,_0x234726)[_0xdf46('0xc')](function(_0x44192b){logger[_0xdf46('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0xdf46('0xe'));logger[_0xdf46('0xf')](_0xdf46('0x10'),_0x6270b3,_0xdf46('0xe'),JSON[_0xdf46('0x11')](_0x44192b));if(_0x44192b['error']){if(_0x44192b[_0xdf46('0x12')][_0xdf46('0x13')]===0x1f4){logger[_0xdf46('0x12')](_0xdf46('0x14'),_0x6270b3,_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);return _0xea6332(_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);}logger['error']('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0x44192b[_0xdf46('0x12')]['message']);return _0x1f4c01(_0x44192b[_0xdf46('0x12')][_0xdf46('0x15')]);}else{logger['info']('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0xdf46('0xe'));_0x1f4c01(_0x44192b[_0xdf46('0x16')][_0xdf46('0x15')]);}})['catch'](function(_0x589ae5){logger[_0xdf46('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x6270b3,_0x589ae5);_0xea6332(_0x589ae5);});});}exports[_0xdf46('0x17')]=function(_0xf45fb6){var _0x108f31=this;return new Promise(function(_0x3c266b,_0x5ed7e0){return db[_0xdf46('0x18')][_0xdf46('0x19')]({'raw':_0xf45fb6['options']?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1b')]===undefined?!![]:![]:!![],'where':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6['options'][_0xdf46('0x1c')]||null:null,'attributes':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1d')]||null:null,'include':_0xf45fb6[_0xdf46('0x1a')]?_0xf45fb6[_0xdf46('0x1a')][_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0xf45fb6[_0xdf46('0x1a')]['include'],function(_0x2abb71){return{'model':db[_0x2abb71[_0xdf46('0x20')]],'as':_0x2abb71['as'],'attributes':_0x2abb71[_0xdf46('0x1d')],'include':_0x2abb71[_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0x2abb71[_0xdf46('0x1e')],function(_0x5d015a){return{'model':db[_0x5d015a['model']],'as':_0x5d015a['as'],'attributes':_0x5d015a[_0xdf46('0x1d')],'include':_0x5d015a[_0xdf46('0x1e')]?_[_0xdf46('0x1f')](_0x5d015a[_0xdf46('0x1e')],function(_0x2c9019){return{'model':db[_0x2c9019[_0xdf46('0x20')]],'as':_0x2c9019['as'],'attributes':_0x2c9019['attributes']};}):[]};}):[]};}):[]:[]})[_0xdf46('0xc')](function(_0x4125cc){logger[_0xdf46('0xd')](_0xdf46('0x17'),_0xf45fb6);logger[_0xdf46('0xf')]('ShowSquareOdbc',_0xf45fb6,JSON['stringify'](_0x4125cc));_0x3c266b(_0x4125cc);})[_0xdf46('0x21')](function(_0x3931df){logger[_0xdf46('0x12')]('ShowSquareOdbc',_0x3931df[_0xdf46('0x15')],_0xf45fb6);_0x5ed7e0(_0x108f31['error'](0x1f4,_0x3931df[_0xdf46('0x15')]));});});};
\ No newline at end of file
+var _0x9bac=['raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSquareOdbc','SquareOdbc','find','options'];(function(_0x25e78f,_0x1a678e){var _0x21d3ea=function(_0x16fc99){while(--_0x16fc99){_0x25e78f['push'](_0x25e78f['shift']());}};_0x21d3ea(++_0x1a678e);}(_0x9bac,0x150));var _0xc9ba=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9bac[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc9ba('0x0'));var util=require(_0xc9ba('0x1'));var moment=require(_0xc9ba('0x2'));var BPromise=require(_0xc9ba('0x3'));var rs=require(_0xc9ba('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc9ba('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc9ba('0x6'))(_0xc9ba('0x7'));var config=require(_0xc9ba('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc9ba('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20d40e,_0x46bffe,_0x361563){return new BPromise(function(_0x2562f4,_0x363ec1){return client[_0xc9ba('0xa')](_0x20d40e,_0x361563)[_0xc9ba('0xb')](function(_0x589019){logger['info'](_0xc9ba('0xc'),_0x46bffe,_0xc9ba('0xd'));logger[_0xc9ba('0xe')](_0xc9ba('0xf'),_0x46bffe,'request\x20sent',JSON[_0xc9ba('0x10')](_0x589019));if(_0x589019[_0xc9ba('0x11')]){if(_0x589019[_0xc9ba('0x11')][_0xc9ba('0x12')]===0x1f4){logger[_0xc9ba('0x11')](_0xc9ba('0xc'),_0x46bffe,_0x589019[_0xc9ba('0x11')][_0xc9ba('0x13')]);return _0x363ec1(_0x589019[_0xc9ba('0x11')]['message']);}logger[_0xc9ba('0x11')](_0xc9ba('0xc'),_0x46bffe,_0x589019[_0xc9ba('0x11')][_0xc9ba('0x13')]);return _0x2562f4(_0x589019[_0xc9ba('0x11')][_0xc9ba('0x13')]);}else{logger[_0xc9ba('0x14')](_0xc9ba('0xc'),_0x46bffe,_0xc9ba('0xd'));_0x2562f4(_0x589019[_0xc9ba('0x15')][_0xc9ba('0x13')]);}})[_0xc9ba('0x16')](function(_0x2c1ea9){logger['error'](_0xc9ba('0xc'),_0x46bffe,_0x2c1ea9);_0x363ec1(_0x2c1ea9);});});}exports[_0xc9ba('0x17')]=function(_0x23467a){var _0x31351d=this;return new Promise(function(_0x382392,_0x5a7406){return db[_0xc9ba('0x18')][_0xc9ba('0x19')]({'raw':_0x23467a[_0xc9ba('0x1a')]?_0x23467a[_0xc9ba('0x1a')][_0xc9ba('0x1b')]===undefined?!![]:![]:!![],'where':_0x23467a[_0xc9ba('0x1a')]?_0x23467a[_0xc9ba('0x1a')][_0xc9ba('0x1c')]||null:null,'attributes':_0x23467a[_0xc9ba('0x1a')]?_0x23467a[_0xc9ba('0x1a')][_0xc9ba('0x1d')]||null:null,'include':_0x23467a[_0xc9ba('0x1a')]?_0x23467a[_0xc9ba('0x1a')]['include']?_[_0xc9ba('0x1e')](_0x23467a[_0xc9ba('0x1a')][_0xc9ba('0x1f')],function(_0x5eecc2){return{'model':db[_0x5eecc2[_0xc9ba('0x20')]],'as':_0x5eecc2['as'],'attributes':_0x5eecc2[_0xc9ba('0x1d')],'include':_0x5eecc2['include']?_[_0xc9ba('0x1e')](_0x5eecc2['include'],function(_0xc72d7a){return{'model':db[_0xc72d7a['model']],'as':_0xc72d7a['as'],'attributes':_0xc72d7a['attributes'],'include':_0xc72d7a[_0xc9ba('0x1f')]?_[_0xc9ba('0x1e')](_0xc72d7a[_0xc9ba('0x1f')],function(_0x30ed88){return{'model':db[_0x30ed88[_0xc9ba('0x20')]],'as':_0x30ed88['as'],'attributes':_0x30ed88['attributes']};}):[]};}):[]};}):[]:[]})[_0xc9ba('0xb')](function(_0xb3c579){logger[_0xc9ba('0x14')](_0xc9ba('0x17'),_0x23467a);logger['debug'](_0xc9ba('0x17'),_0x23467a,JSON[_0xc9ba('0x10')](_0xb3c579));_0x382392(_0xb3c579);})[_0xc9ba('0x16')](function(_0x27f86b){logger[_0xc9ba('0x11')](_0xc9ba('0x17'),_0x27f86b[_0xc9ba('0x13')],_0x23467a);_0x5a7406(_0x31351d['error'](0x1f4,_0x27f86b[_0xc9ba('0x13')]));});});};
\ No newline at end of file
index bc87251..c0858f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fbb=['create','addUsers','put','/:id','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','show','/:id/users','isAuthenticated','getUsers','post'];(function(_0x5b0f24,_0x3439ff){var _0x315d8c=function(_0x1651d8){while(--_0x1651d8){_0x5b0f24['push'](_0x5b0f24['shift']());}};_0x315d8c(++_0x3439ff);}(_0x1fbb,0x99));var _0xb1fb=function(_0x401be5,_0x30ff0d){_0x401be5=_0x401be5-0x0;var _0x563361=_0x1fbb[_0x401be5];return _0x563361;};'use strict';var multer=require(_0xb1fb('0x0'));var util=require(_0xb1fb('0x1'));var path=require(_0xb1fb('0x2'));var timeout=require(_0xb1fb('0x3'));var express=require('express');var router=express[_0xb1fb('0x4')]();var fs_extra=require(_0xb1fb('0x5'));var auth=require(_0xb1fb('0x6'));var interaction=require(_0xb1fb('0x7'));var config=require(_0xb1fb('0x8'));var controller=require('./squareProject.controller');router[_0xb1fb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb1fb('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb1fb('0xa')]);router[_0xb1fb('0x9')](_0xb1fb('0xb'),auth[_0xb1fb('0xc')](),controller[_0xb1fb('0xd')]);router[_0xb1fb('0xe')]('/',auth[_0xb1fb('0xc')](),controller[_0xb1fb('0xf')]);router['post'](_0xb1fb('0xb'),auth['isAuthenticated'](),controller[_0xb1fb('0x10')]);router[_0xb1fb('0x11')](_0xb1fb('0x12'),auth['isAuthenticated'](),controller[_0xb1fb('0x13')]);router[_0xb1fb('0x14')](_0xb1fb('0x12'),auth[_0xb1fb('0xc')](),controller[_0xb1fb('0x15')]);router[_0xb1fb('0x14')](_0xb1fb('0xb'),auth['isAuthenticated'](),controller[_0xb1fb('0x16')]);module[_0xb1fb('0x17')]=router;
\ No newline at end of file
+var _0x20df=['/:id/users','addUsers','put','/:id','update','destroy','delete','removeUsers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','getUsers','post'];(function(_0x14f1d3,_0x31ab20){var _0x1a0116=function(_0x4aa522){while(--_0x4aa522){_0x14f1d3['push'](_0x14f1d3['shift']());}};_0x1a0116(++_0x31ab20);}(_0x20df,0x7c));var _0xf20d=function(_0xf35bc1,_0x510803){_0xf35bc1=_0xf35bc1-0x0;var _0xa6b162=_0x20df[_0xf35bc1];return _0xa6b162;};'use strict';var multer=require(_0xf20d('0x0'));var util=require(_0xf20d('0x1'));var path=require(_0xf20d('0x2'));var timeout=require(_0xf20d('0x3'));var express=require('express');var router=express[_0xf20d('0x4')]();var fs_extra=require(_0xf20d('0x5'));var auth=require(_0xf20d('0x6'));var interaction=require(_0xf20d('0x7'));var config=require(_0xf20d('0x8'));var controller=require('./squareProject.controller');router[_0xf20d('0x9')]('/',auth['isAuthenticated'](),controller[_0xf20d('0xa')]);router[_0xf20d('0x9')]('/:id',auth[_0xf20d('0xb')](),controller['show']);router[_0xf20d('0x9')]('/:id/users',auth[_0xf20d('0xb')](),controller[_0xf20d('0xc')]);router[_0xf20d('0xd')]('/',auth[_0xf20d('0xb')](),controller['create']);router[_0xf20d('0xd')](_0xf20d('0xe'),auth[_0xf20d('0xb')](),controller[_0xf20d('0xf')]);router[_0xf20d('0x10')](_0xf20d('0x11'),auth[_0xf20d('0xb')](),controller[_0xf20d('0x12')]);router['delete'](_0xf20d('0x11'),auth['isAuthenticated'](),controller[_0xf20d('0x13')]);router[_0xf20d('0x14')]('/:id/users',auth[_0xf20d('0xb')](),controller[_0xf20d('0x15')]);module[_0xf20d('0x16')]=router;
\ No newline at end of file
index 925d410..de04098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0760=['BLOB','long','getDataValue','preproduction','toString','utf8','DATE','sequelize','STRING'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0x0760,0xa9));var _0x0076=function(_0x2a7737,_0x5f289e){_0x2a7737=_0x2a7737-0x0;var _0x861978=_0x0760[_0x2a7737];return _0x861978;};'use strict';var Sequelize=require(_0x0076('0x0'));module['exports']={'name':{'type':Sequelize[_0x0076('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x0076('0x2')](_0x0076('0x3')),'get':function(){if(this[_0x0076('0x4')](_0x0076('0x5'))){return this[_0x0076('0x4')]('preproduction')[_0x0076('0x6')](_0x0076('0x7'));}}},'production':{'type':Sequelize[_0x0076('0x2')](_0x0076('0x3')),'get':function(){if(this[_0x0076('0x4')]('production')){return this[_0x0076('0x4')]('production')[_0x0076('0x6')](_0x0076('0x7'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x0076('0x8')]}};
\ No newline at end of file
+var _0x2c79=['getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','STRING','name','BLOB','long'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2c79,0x66));var _0x92c7=function(_0x218459,_0xf69077){_0x218459=_0x218459-0x0;var _0x31a917=_0x2c79[_0x218459];return _0x31a917;};'use strict';var Sequelize=require(_0x92c7('0x0'));module[_0x92c7('0x1')]={'name':{'type':Sequelize[_0x92c7('0x2')],'unique':_0x92c7('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x92c7('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x92c7('0x4')](_0x92c7('0x5')),'get':function(){if(this['getDataValue']('preproduction')){return this[_0x92c7('0x6')](_0x92c7('0x7'))[_0x92c7('0x8')](_0x92c7('0x9'));}}},'production':{'type':Sequelize[_0x92c7('0x4')]('long'),'get':function(){if(this['getDataValue'](_0x92c7('0xa'))){return this[_0x92c7('0x6')](_0x92c7('0xa'))['toString'](_0x92c7('0x9'));}}},'savedAt':{'type':Sequelize[_0x92c7('0xb')]},'publishedAt':{'type':Sequelize[_0x92c7('0xb')]}};
\ No newline at end of file
index 4c00aae..56d5d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf054=['omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','request-promise','moment','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','localhost','redis','./squareProject.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','SquareProjects','UserProfileResource','error','name','send','SquareProject','fieldName','type','key','model','map','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','where','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf054,0x1e8));var _0x4f05=function(_0x581375,_0x45687d){_0x581375=_0x581375-0x0;var _0x25355c=_0xf054[_0x581375];return _0x25355c;};'use strict';var emlformat=require(_0x4f05('0x0'));var rimraf=require(_0x4f05('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4f05('0x2'));var moment=require(_0x4f05('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4f05('0x4'));var path=require('path');var sox=require(_0x4f05('0x5'));var csv=require(_0x4f05('0x6'));var ejs=require(_0x4f05('0x7'));var fs=require('fs');var fs_extra=require(_0x4f05('0x8'));var _=require('lodash');var squel=require(_0x4f05('0x9'));var crypto=require(_0x4f05('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4f05('0xb'));var toCsv=require(_0x4f05('0x6'));var querystring=require(_0x4f05('0xc'));var Papa=require(_0x4f05('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4f05('0xe'));var as=require(_0x4f05('0xf'));var hardwareService=require(_0x4f05('0x10'));var logger=require(_0x4f05('0x11'))(_0x4f05('0x12'));var utils=require('../../config/utils');var config=require(_0x4f05('0x13'));var licenseUtil=require(_0x4f05('0x14'));var db=require(_0x4f05('0x15'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x4f05('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4f05('0x17')]));require(_0x4f05('0x18'))[_0x4f05('0x19')](socket);function respondWithStatusCode(_0x5c2930,_0x1a5117){_0x1a5117=_0x1a5117||0xcc;return function(_0x4a123b){if(_0x4a123b){return _0x5c2930[_0x4f05('0x1a')](_0x1a5117);}return _0x5c2930[_0x4f05('0x1b')](_0x1a5117)[_0x4f05('0x1c')]();};}function respondWithResult(_0x24bd19,_0x3522e5){_0x3522e5=_0x3522e5||0xc8;return function(_0x3c3d29){if(_0x3c3d29){return _0x24bd19['status'](_0x3522e5)['json'](_0x3c3d29);}};}function respondWithFilteredResult(_0x68c3b1,_0x4dd267){return function(_0x4d2ed7){if(_0x4d2ed7){var _0x479795=typeof _0x4dd267[_0x4f05('0x1d')]===_0x4f05('0x1e')&&typeof _0x4dd267[_0x4f05('0x1f')]===_0x4f05('0x1e');var _0x5f2639=_0x4d2ed7[_0x4f05('0x20')];var _0x19507c=_0x479795?0x0:_0x4dd267['offset'];var _0x1e6580=_0x479795?_0x4d2ed7[_0x4f05('0x20')]:_0x4dd267[_0x4f05('0x1d')]+_0x4dd267[_0x4f05('0x1f')];var _0xc9c16f;if(_0x1e6580>=_0x5f2639){_0x1e6580=_0x5f2639;_0xc9c16f=0xc8;}else{_0xc9c16f=0xce;}_0x68c3b1[_0x4f05('0x1b')](_0xc9c16f);return _0x68c3b1[_0x4f05('0x21')](_0x4f05('0x22'),_0x19507c+'-'+_0x1e6580+'/'+_0x5f2639)[_0x4f05('0x23')](_0x4d2ed7);}return null;};}function patchUpdates(_0x3b663a){return function(_0x1a42c8){try{jsonpatch[_0x4f05('0x24')](_0x1a42c8,_0x3b663a,!![]);}catch(_0x2673c8){return BPromise[_0x4f05('0x25')](_0x2673c8);}return _0x1a42c8[_0x4f05('0x26')]();};}function saveUpdates(_0xf236be,_0x4cc873){return function(_0x316e62){if(_0x316e62){return _0x316e62[_0x4f05('0x27')](_0xf236be)[_0x4f05('0x28')](function(_0x399ea2){return _0x399ea2;});}return null;};}function removeEntity(_0x4bdae1,_0x8ca5e8){return function(_0x1690c7){if(_0x1690c7){return _0x1690c7[_0x4f05('0x29')]()[_0x4f05('0x28')](function(){var _0x56daf0=_0x1690c7[_0x4f05('0x2a')]({'plain':!![]});var _0xc9ae36=_0x4f05('0x2b');return db[_0x4f05('0x2c')][_0x4f05('0x29')]({'where':{'type':_0xc9ae36,'resourceId':_0x56daf0['id']}})[_0x4f05('0x28')](function(){return _0x1690c7;});})[_0x4f05('0x28')](function(){_0x4bdae1[_0x4f05('0x1b')](0xcc)[_0x4f05('0x1c')]();});}};}function handleEntityNotFound(_0x5b187b,_0x340525){return function(_0xb92e2e){if(!_0xb92e2e){_0x5b187b[_0x4f05('0x1a')](0x194);}return _0xb92e2e;};}function handleError(_0x574f8a,_0x553a3b){_0x553a3b=_0x553a3b||0x1f4;return function(_0x28fed3){logger[_0x4f05('0x2d')](_0x28fed3['stack']);if(_0x28fed3['name']){delete _0x28fed3[_0x4f05('0x2e')];}_0x574f8a['status'](_0x553a3b)[_0x4f05('0x2f')](_0x28fed3);};}exports['index']=function(_0x28f2b9,_0x2297da){var _0xad0f51={},_0xab770a={},_0xfe5538={'count':0x0,'rows':[]};var _0x3a5c39=_['map'](db[_0x4f05('0x30')]['rawAttributes'],function(_0x5cc780){return{'name':_0x5cc780[_0x4f05('0x31')],'type':_0x5cc780[_0x4f05('0x32')][_0x4f05('0x33')]};});_0xab770a[_0x4f05('0x34')]=_[_0x4f05('0x35')](_0x3a5c39,_0x4f05('0x2e'));_0xab770a['query']=_[_0x4f05('0x36')](_0x28f2b9[_0x4f05('0x37')]);_0xab770a['filters']=_[_0x4f05('0x38')](_0xab770a[_0x4f05('0x34')],_0xab770a[_0x4f05('0x37')]);_0xad0f51['attributes']=_[_0x4f05('0x38')](_0xab770a[_0x4f05('0x34')],qs[_0x4f05('0x39')](_0x28f2b9['query'][_0x4f05('0x39')]));_0xad0f51[_0x4f05('0x3a')]=_0xad0f51[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0xad0f51[_0x4f05('0x3a')]:_0xab770a[_0x4f05('0x34')];if(!_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x3c')](_0x4f05('0x3d'))){_0xad0f51['limit']=qs['limit'](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x1f')]);_0xad0f51[_0x4f05('0x1d')]=qs[_0x4f05('0x1d')](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x1d')]);}_0xad0f51[_0x4f05('0x3e')]=qs[_0x4f05('0x3f')](_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x3f')]);_0xad0f51['where']=qs[_0x4f05('0x40')](_[_0x4f05('0x41')](_0x28f2b9[_0x4f05('0x37')],_0xab770a[_0x4f05('0x40')]),_0x3a5c39);if(_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x42')]){_0xad0f51['where']=_[_0x4f05('0x43')](_0xad0f51['where'],{'$or':_[_0x4f05('0x35')](_0x3a5c39,function(_0x1f2f93){if(_0x1f2f93['type']!==_0x4f05('0x44')){var _0x5340e1={};_0x5340e1[_0x1f2f93[_0x4f05('0x2e')]]={'$like':'%'+_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x42')]+'%'};return _0x5340e1;}})});}_0xad0f51=_['merge']({},_0xad0f51,_0x28f2b9['options']);var _0x341314={'where':_0xad0f51[_0x4f05('0x45')]};return db['SquareProject'][_0x4f05('0x20')](_0x341314)['then'](function(_0x42210c){_0xfe5538[_0x4f05('0x20')]=_0x42210c;if(_0x28f2b9[_0x4f05('0x37')][_0x4f05('0x46')]){_0xad0f51[_0x4f05('0x47')]=[{'all':!![]}];}return db['SquareProject'][_0x4f05('0x48')](_0xad0f51);})[_0x4f05('0x28')](function(_0x3a234e){_0xfe5538[_0x4f05('0x49')]=_0x3a234e;return _0xfe5538;})[_0x4f05('0x28')](respondWithFilteredResult(_0x2297da,_0xad0f51))[_0x4f05('0x4a')](handleError(_0x2297da,null));};exports['show']=function(_0x33e7a1,_0x34ea03){var _0x42724d={'raw':![],'where':{'id':_0x33e7a1['params']['id']}},_0xcc6276={};_0xcc6276['model']=_[_0x4f05('0x36')](db[_0x4f05('0x30')]['rawAttributes']);_0xcc6276[_0x4f05('0x37')]=_['keys'](_0x33e7a1[_0x4f05('0x37')]);_0xcc6276[_0x4f05('0x40')]=_[_0x4f05('0x38')](_0xcc6276[_0x4f05('0x34')],_0xcc6276['query']);_0x42724d[_0x4f05('0x3a')]=_[_0x4f05('0x38')](_0xcc6276['model'],qs[_0x4f05('0x39')](_0x33e7a1['query'][_0x4f05('0x39')]));_0x42724d[_0x4f05('0x3a')]=_0x42724d[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0x42724d[_0x4f05('0x3a')]:_0xcc6276[_0x4f05('0x34')];if(_0x33e7a1[_0x4f05('0x37')]['includeAll']){_0x42724d[_0x4f05('0x47')]=[{'all':!![]}];}_0x42724d=_[_0x4f05('0x43')]({},_0x42724d,_0x33e7a1[_0x4f05('0x4b')]);return db[_0x4f05('0x30')][_0x4f05('0x4c')](_0x42724d)[_0x4f05('0x28')](handleEntityNotFound(_0x34ea03,null))['then'](respondWithResult(_0x34ea03,null))['catch'](handleError(_0x34ea03,null));};exports['create']=function(_0x2ccc03,_0x3c2868){return db[_0x4f05('0x30')][_0x4f05('0x4d')](_0x2ccc03[_0x4f05('0x4e')],{})[_0x4f05('0x28')](function(_0x4edaba){var _0x455dcb=_0x2ccc03[_0x4f05('0x4f')][_0x4f05('0x2a')]({'plain':!![]});if(!_0x455dcb)throw new Error(_0x4f05('0x50'));if(_0x455dcb[_0x4f05('0x51')]===_0x4f05('0x4f')){var _0x45d59f=_0x4edaba[_0x4f05('0x2a')]({'plain':!![]});var _0x4812e9='SquareProjects';return db[_0x4f05('0x52')][_0x4f05('0x4c')]({'where':{'name':_0x4812e9,'userProfileId':_0x455dcb['userProfileId']},'raw':!![]})['then'](function(_0x455b9e){if(_0x455b9e&&_0x455b9e[_0x4f05('0x53')]===0x0){return db[_0x4f05('0x2c')][_0x4f05('0x4d')]({'name':_0x45d59f[_0x4f05('0x2e')],'resourceId':_0x45d59f['id'],'type':_0x455b9e['name'],'sectionId':_0x455b9e['id']},{})[_0x4f05('0x28')](function(){return _0x4edaba;});}else{return _0x4edaba;}})[_0x4f05('0x4a')](function(_0x23033f){logger['error'](_0x4f05('0x54'),_0x23033f);throw _0x23033f;});}return _0x4edaba;})['then'](respondWithResult(_0x3c2868,0xc9))[_0x4f05('0x4a')](handleError(_0x3c2868,null));};exports[_0x4f05('0x27')]=function(_0x26c966,_0x672734){if(_0x26c966[_0x4f05('0x4e')]['id']){delete _0x26c966[_0x4f05('0x4e')]['id'];}return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x26c966['params']['id']}})['then'](handleEntityNotFound(_0x672734,null))['then'](saveUpdates(_0x26c966[_0x4f05('0x4e')],null))[_0x4f05('0x28')](respondWithResult(_0x672734,null))[_0x4f05('0x4a')](handleError(_0x672734,null));};exports[_0x4f05('0x29')]=function(_0x553ace,_0x35299d){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x553ace[_0x4f05('0x55')]['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x35299d,null))[_0x4f05('0x28')](removeEntity(_0x35299d,null))[_0x4f05('0x4a')](handleError(_0x35299d,null));};exports[_0x4f05('0x56')]=function(_0x27ca30,_0x2b95b7,_0x5dec9f){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x27ca30['params']['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x2b95b7,null))[_0x4f05('0x28')](function(_0x2430ea){if(_0x2430ea){return _0x2430ea[_0x4f05('0x56')](_0x27ca30['body'][_0x4f05('0x57')],_[_0x4f05('0x58')](_0x27ca30[_0x4f05('0x4e')],[_0x4f05('0x57'),'id'])||{});}})[_0x4f05('0x28')](respondWithResult(_0x2b95b7,null))[_0x4f05('0x4a')](handleError(_0x2b95b7,null));};exports[_0x4f05('0x59')]=function(_0x5e6cb9,_0x2312b7,_0x7e31e5){return db[_0x4f05('0x30')][_0x4f05('0x4c')]({'where':{'id':_0x5e6cb9['params']['id']}})[_0x4f05('0x28')](handleEntityNotFound(_0x2312b7,null))['then'](function(_0x414fd7){if(_0x414fd7){return _0x414fd7[_0x4f05('0x59')](_0x5e6cb9['query'][_0x4f05('0x57')])['then'](function(){if(_[_0x4f05('0x5a')](_0x5e6cb9['query'][_0x4f05('0x57')])){for(var _0x5bb2d9=0x0;_0x5bb2d9<_0x5e6cb9[_0x4f05('0x37')][_0x4f05('0x57')][_0x4f05('0x3b')];_0x5bb2d9+=0x1){socket[_0x4f05('0x5b')](_0x4f05('0x5c'),{'UserId':Number(_0x5e6cb9['query'][_0x4f05('0x57')][_0x5bb2d9]),'SquareProjectId':Number(_0x5e6cb9[_0x4f05('0x55')]['id'])});}}else{socket[_0x4f05('0x5b')](_0x4f05('0x5c'),{'UserId':Number(_0x5e6cb9[_0x4f05('0x37')]['ids']),'SquareProjectId':Number(_0x5e6cb9['params']['id'])});}});}})[_0x4f05('0x28')](respondWithStatusCode(_0x2312b7,null))['catch'](handleError(_0x2312b7,null));};exports[_0x4f05('0x5d')]=function(_0x2f5f4d,_0x3d0b27,_0x43accb){var _0x52a59d={};var _0x19729c={};var _0x181182;var _0x1c3d8e;return db['SquareProject'][_0x4f05('0x5e')]({'where':{'id':_0x2f5f4d[_0x4f05('0x55')]['id']}})['then'](handleEntityNotFound(_0x3d0b27,null))[_0x4f05('0x28')](function(_0x2fd950){if(_0x2fd950){_0x181182=_0x2fd950;_0x19729c[_0x4f05('0x34')]=_[_0x4f05('0x36')](db[_0x4f05('0x5f')]['rawAttributes']);_0x19729c[_0x4f05('0x37')]=_[_0x4f05('0x36')](_0x2f5f4d['query']);_0x19729c['filters']=_['intersection'](_0x19729c[_0x4f05('0x34')],_0x19729c[_0x4f05('0x37')]);_0x52a59d['attributes']=_[_0x4f05('0x38')](_0x19729c[_0x4f05('0x34')],qs['fields'](_0x2f5f4d[_0x4f05('0x37')]['fields']));_0x52a59d['attributes']=_0x52a59d[_0x4f05('0x3a')][_0x4f05('0x3b')]?_0x52a59d[_0x4f05('0x3a')]:_0x19729c[_0x4f05('0x34')];_0x52a59d[_0x4f05('0x3e')]=qs[_0x4f05('0x3f')](_0x2f5f4d[_0x4f05('0x37')]['sort']);_0x52a59d[_0x4f05('0x45')]=qs[_0x4f05('0x40')](_[_0x4f05('0x41')](_0x2f5f4d[_0x4f05('0x37')],_0x19729c[_0x4f05('0x40')]));if(_0x2f5f4d[_0x4f05('0x37')]['filter']){_0x52a59d[_0x4f05('0x45')]=_['merge'](_0x52a59d[_0x4f05('0x45')],{'$or':_['map'](_0x52a59d[_0x4f05('0x3a')],function(_0x3c7855){var _0x3250c5={};_0x3250c5[_0x3c7855]={'$like':'%'+_0x2f5f4d['query'][_0x4f05('0x42')]+'%'};return _0x3250c5;})});}_0x52a59d=_[_0x4f05('0x43')]({},_0x52a59d,_0x2f5f4d[_0x4f05('0x4b')]);return _0x181182[_0x4f05('0x5d')](_0x52a59d);}})['then'](function(_0x3921d3){if(_0x3921d3){_0x1c3d8e=_0x3921d3[_0x4f05('0x3b')];if(!_0x2f5f4d['query'][_0x4f05('0x3c')](_0x4f05('0x3d'))){_0x52a59d[_0x4f05('0x1f')]=qs[_0x4f05('0x1f')](_0x2f5f4d[_0x4f05('0x37')][_0x4f05('0x1f')]);_0x52a59d[_0x4f05('0x1d')]=qs[_0x4f05('0x1d')](_0x2f5f4d[_0x4f05('0x37')][_0x4f05('0x1d')]);}return _0x181182['getUsers'](_0x52a59d);}})['then'](function(_0x50c5d1){if(_0x50c5d1){return _0x50c5d1?{'count':_0x1c3d8e,'rows':_0x50c5d1}:null;}})[_0x4f05('0x28')](respondWithResult(_0x3d0b27,null))[_0x4f05('0x4a')](handleError(_0x3d0b27,null));};
\ No newline at end of file
+var _0x01a9=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addUsers','ids','removeUsers','isArray','emit','userSquareProject:remove','findOne','User','getUsers','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','register','end','json','undefined','count','limit','status','set','Content-Range','apply','then','destroy','get','SquareProjects','UserProfileResource','sendStatus','error','stack','name','send','index','map','SquareProject','fieldName','type','model','query','filters','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','fields','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01a9,0x194));var _0x901a=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x01a9[_0x2dadb9];return _0x2f0097;};'use strict';var emlformat=require(_0x901a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x901a('0x1'));var jsonpatch=require(_0x901a('0x2'));var rp=require(_0x901a('0x3'));var moment=require(_0x901a('0x4'));var BPromise=require(_0x901a('0x5'));var Mustache=require(_0x901a('0x6'));var util=require(_0x901a('0x7'));var path=require(_0x901a('0x8'));var sox=require('sox');var csv=require(_0x901a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x901a('0xa'));var _=require('lodash');var squel=require(_0x901a('0xb'));var crypto=require(_0x901a('0xc'));var jsforce=require(_0x901a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x901a('0x9'));var querystring=require(_0x901a('0xe'));var Papa=require(_0x901a('0xf'));var Redis=require(_0x901a('0x10'));var authService=require(_0x901a('0x11'));var qs=require(_0x901a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x901a('0x13'));var logger=require('../../config/logger')(_0x901a('0x14'));var utils=require(_0x901a('0x15'));var config=require(_0x901a('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x901a('0x17')]=_['defaults'](config[_0x901a('0x17')],{'host':_0x901a('0x18'),'port':0x18eb});var socket=require(_0x901a('0x19'))(new Redis(config[_0x901a('0x17')]));require('./squareProject.socket')[_0x901a('0x1a')](socket);function respondWithStatusCode(_0x2a07f5,_0x26e09f){_0x26e09f=_0x26e09f||0xcc;return function(_0x285b01){if(_0x285b01){return _0x2a07f5['sendStatus'](_0x26e09f);}return _0x2a07f5['status'](_0x26e09f)[_0x901a('0x1b')]();};}function respondWithResult(_0x22d039,_0x2a081c){_0x2a081c=_0x2a081c||0xc8;return function(_0x14ab46){if(_0x14ab46){return _0x22d039['status'](_0x2a081c)[_0x901a('0x1c')](_0x14ab46);}};}function respondWithFilteredResult(_0x1c2ae1,_0x1d66de){return function(_0x83ff40){if(_0x83ff40){var _0x232b64=typeof _0x1d66de['offset']===_0x901a('0x1d')&&typeof _0x1d66de['limit']==='undefined';var _0xfe570=_0x83ff40[_0x901a('0x1e')];var _0x14f6d9=_0x232b64?0x0:_0x1d66de['offset'];var _0x575ab8=_0x232b64?_0x83ff40['count']:_0x1d66de['offset']+_0x1d66de[_0x901a('0x1f')];var _0xe8d6b2;if(_0x575ab8>=_0xfe570){_0x575ab8=_0xfe570;_0xe8d6b2=0xc8;}else{_0xe8d6b2=0xce;}_0x1c2ae1[_0x901a('0x20')](_0xe8d6b2);return _0x1c2ae1[_0x901a('0x21')](_0x901a('0x22'),_0x14f6d9+'-'+_0x575ab8+'/'+_0xfe570)[_0x901a('0x1c')](_0x83ff40);}return null;};}function patchUpdates(_0x338d70){return function(_0x32b118){try{jsonpatch[_0x901a('0x23')](_0x32b118,_0x338d70,!![]);}catch(_0x52ea1f){return BPromise['reject'](_0x52ea1f);}return _0x32b118['save']();};}function saveUpdates(_0x27d874,_0x4bf32e){return function(_0x5b118b){if(_0x5b118b){return _0x5b118b['update'](_0x27d874)[_0x901a('0x24')](function(_0x322507){return _0x322507;});}return null;};}function removeEntity(_0x3a0cf1,_0x1d271b){return function(_0x241b3d){if(_0x241b3d){return _0x241b3d[_0x901a('0x25')]()[_0x901a('0x24')](function(){var _0x66eef8=_0x241b3d[_0x901a('0x26')]({'plain':!![]});var _0x1d0db4=_0x901a('0x27');return db[_0x901a('0x28')][_0x901a('0x25')]({'where':{'type':_0x1d0db4,'resourceId':_0x66eef8['id']}})[_0x901a('0x24')](function(){return _0x241b3d;});})[_0x901a('0x24')](function(){_0x3a0cf1[_0x901a('0x20')](0xcc)[_0x901a('0x1b')]();});}};}function handleEntityNotFound(_0x2caf16,_0x36c7d7){return function(_0x4beca3){if(!_0x4beca3){_0x2caf16[_0x901a('0x29')](0x194);}return _0x4beca3;};}function handleError(_0x143f38,_0x5c809c){_0x5c809c=_0x5c809c||0x1f4;return function(_0x4703bf){logger[_0x901a('0x2a')](_0x4703bf[_0x901a('0x2b')]);if(_0x4703bf[_0x901a('0x2c')]){delete _0x4703bf[_0x901a('0x2c')];}_0x143f38['status'](_0x5c809c)[_0x901a('0x2d')](_0x4703bf);};}exports[_0x901a('0x2e')]=function(_0x518b36,_0x56cc7c){var _0x43e62f={},_0x2c31fb={},_0x1cdd3b={'count':0x0,'rows':[]};var _0x56a068=_[_0x901a('0x2f')](db[_0x901a('0x30')]['rawAttributes'],function(_0x3d2215){return{'name':_0x3d2215[_0x901a('0x31')],'type':_0x3d2215[_0x901a('0x32')]['key']};});_0x2c31fb[_0x901a('0x33')]=_[_0x901a('0x2f')](_0x56a068,_0x901a('0x2c'));_0x2c31fb[_0x901a('0x34')]=_['keys'](_0x518b36[_0x901a('0x34')]);_0x2c31fb[_0x901a('0x35')]=_['intersection'](_0x2c31fb[_0x901a('0x33')],_0x2c31fb['query']);_0x43e62f[_0x901a('0x36')]=_['intersection'](_0x2c31fb[_0x901a('0x33')],qs['fields'](_0x518b36[_0x901a('0x34')]['fields']));_0x43e62f['attributes']=_0x43e62f[_0x901a('0x36')][_0x901a('0x37')]?_0x43e62f[_0x901a('0x36')]:_0x2c31fb[_0x901a('0x33')];if(!_0x518b36['query'][_0x901a('0x38')](_0x901a('0x39'))){_0x43e62f[_0x901a('0x1f')]=qs['limit'](_0x518b36[_0x901a('0x34')]['limit']);_0x43e62f[_0x901a('0x3a')]=qs[_0x901a('0x3a')](_0x518b36[_0x901a('0x34')]['offset']);}_0x43e62f[_0x901a('0x3b')]=qs[_0x901a('0x3c')](_0x518b36[_0x901a('0x34')][_0x901a('0x3c')]);_0x43e62f[_0x901a('0x3d')]=qs[_0x901a('0x35')](_[_0x901a('0x3e')](_0x518b36['query'],_0x2c31fb[_0x901a('0x35')]),_0x56a068);if(_0x518b36['query'][_0x901a('0x3f')]){_0x43e62f[_0x901a('0x3d')]=_[_0x901a('0x40')](_0x43e62f[_0x901a('0x3d')],{'$or':_[_0x901a('0x2f')](_0x56a068,function(_0x130533){if(_0x130533[_0x901a('0x32')]!==_0x901a('0x41')){var _0x42870a={};_0x42870a[_0x130533[_0x901a('0x2c')]]={'$like':'%'+_0x518b36[_0x901a('0x34')][_0x901a('0x3f')]+'%'};return _0x42870a;}})});}_0x43e62f=_[_0x901a('0x40')]({},_0x43e62f,_0x518b36[_0x901a('0x42')]);var _0x5db5f7={'where':_0x43e62f[_0x901a('0x3d')]};return db[_0x901a('0x30')][_0x901a('0x1e')](_0x5db5f7)['then'](function(_0x13d4cb){_0x1cdd3b[_0x901a('0x1e')]=_0x13d4cb;if(_0x518b36[_0x901a('0x34')][_0x901a('0x43')]){_0x43e62f[_0x901a('0x44')]=[{'all':!![]}];}return db['SquareProject'][_0x901a('0x45')](_0x43e62f);})[_0x901a('0x24')](function(_0x185d44){_0x1cdd3b[_0x901a('0x46')]=_0x185d44;return _0x1cdd3b;})[_0x901a('0x24')](respondWithFilteredResult(_0x56cc7c,_0x43e62f))[_0x901a('0x47')](handleError(_0x56cc7c,null));};exports[_0x901a('0x48')]=function(_0x57d882,_0x11a984){var _0x111f97={'raw':![],'where':{'id':_0x57d882[_0x901a('0x49')]['id']}},_0x432822={};_0x432822[_0x901a('0x33')]=_[_0x901a('0x4a')](db['SquareProject'][_0x901a('0x4b')]);_0x432822['query']=_[_0x901a('0x4a')](_0x57d882['query']);_0x432822[_0x901a('0x35')]=_[_0x901a('0x4c')](_0x432822[_0x901a('0x33')],_0x432822['query']);_0x111f97['attributes']=_[_0x901a('0x4c')](_0x432822[_0x901a('0x33')],qs[_0x901a('0x4d')](_0x57d882[_0x901a('0x34')][_0x901a('0x4d')]));_0x111f97['attributes']=_0x111f97[_0x901a('0x36')][_0x901a('0x37')]?_0x111f97['attributes']:_0x432822[_0x901a('0x33')];if(_0x57d882[_0x901a('0x34')]['includeAll']){_0x111f97[_0x901a('0x44')]=[{'all':!![]}];}_0x111f97=_[_0x901a('0x40')]({},_0x111f97,_0x57d882[_0x901a('0x42')]);return db[_0x901a('0x30')]['find'](_0x111f97)[_0x901a('0x24')](handleEntityNotFound(_0x11a984,null))[_0x901a('0x24')](respondWithResult(_0x11a984,null))[_0x901a('0x47')](handleError(_0x11a984,null));};exports[_0x901a('0x4e')]=function(_0x3fe298,_0x343022){return db['SquareProject']['create'](_0x3fe298[_0x901a('0x4f')],{})['then'](function(_0x2a0ba8){var _0x50ccd5=_0x3fe298[_0x901a('0x50')]['get']({'plain':!![]});if(!_0x50ccd5)throw new Error(_0x901a('0x51'));if(_0x50ccd5[_0x901a('0x52')]===_0x901a('0x50')){var _0x390ec2=_0x2a0ba8[_0x901a('0x26')]({'plain':!![]});var _0x57bd7e=_0x901a('0x27');return db[_0x901a('0x53')][_0x901a('0x54')]({'where':{'name':_0x57bd7e,'userProfileId':_0x50ccd5[_0x901a('0x55')]},'raw':!![]})[_0x901a('0x24')](function(_0x435f04){if(_0x435f04&&_0x435f04[_0x901a('0x56')]===0x0){return db[_0x901a('0x28')][_0x901a('0x4e')]({'name':_0x390ec2[_0x901a('0x2c')],'resourceId':_0x390ec2['id'],'type':_0x435f04[_0x901a('0x2c')],'sectionId':_0x435f04['id']},{})[_0x901a('0x24')](function(){return _0x2a0ba8;});}else{return _0x2a0ba8;}})[_0x901a('0x47')](function(_0x3fa1ba){logger[_0x901a('0x2a')](_0x901a('0x57'),_0x3fa1ba);throw _0x3fa1ba;});}return _0x2a0ba8;})['then'](respondWithResult(_0x343022,0xc9))[_0x901a('0x47')](handleError(_0x343022,null));};exports[_0x901a('0x58')]=function(_0x5af1e8,_0x18e306){if(_0x5af1e8['body']['id']){delete _0x5af1e8[_0x901a('0x4f')]['id'];}return db[_0x901a('0x30')]['find']({'where':{'id':_0x5af1e8['params']['id']}})[_0x901a('0x24')](handleEntityNotFound(_0x18e306,null))[_0x901a('0x24')](saveUpdates(_0x5af1e8[_0x901a('0x4f')],null))[_0x901a('0x24')](respondWithResult(_0x18e306,null))[_0x901a('0x47')](handleError(_0x18e306,null));};exports[_0x901a('0x25')]=function(_0x3e366e,_0x3a651d){return db['SquareProject'][_0x901a('0x54')]({'where':{'id':_0x3e366e['params']['id']}})['then'](handleEntityNotFound(_0x3a651d,null))[_0x901a('0x24')](removeEntity(_0x3a651d,null))[_0x901a('0x47')](handleError(_0x3a651d,null));};exports['addUsers']=function(_0x53d067,_0x44e5d5,_0x1b0f17){return db[_0x901a('0x30')][_0x901a('0x54')]({'where':{'id':_0x53d067['params']['id']}})['then'](handleEntityNotFound(_0x44e5d5,null))[_0x901a('0x24')](function(_0x5db8c1){if(_0x5db8c1){return _0x5db8c1[_0x901a('0x59')](_0x53d067[_0x901a('0x4f')][_0x901a('0x5a')],_['omit'](_0x53d067[_0x901a('0x4f')],[_0x901a('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x44e5d5,null))[_0x901a('0x47')](handleError(_0x44e5d5,null));};exports[_0x901a('0x5b')]=function(_0x2e8777,_0x1cd5fa,_0x49b7a7){return db[_0x901a('0x30')][_0x901a('0x54')]({'where':{'id':_0x2e8777[_0x901a('0x49')]['id']}})[_0x901a('0x24')](handleEntityNotFound(_0x1cd5fa,null))[_0x901a('0x24')](function(_0x3d7740){if(_0x3d7740){return _0x3d7740[_0x901a('0x5b')](_0x2e8777['query'][_0x901a('0x5a')])[_0x901a('0x24')](function(){if(_[_0x901a('0x5c')](_0x2e8777[_0x901a('0x34')][_0x901a('0x5a')])){for(var _0x325f17=0x0;_0x325f17<_0x2e8777['query'][_0x901a('0x5a')][_0x901a('0x37')];_0x325f17+=0x1){socket[_0x901a('0x5d')](_0x901a('0x5e'),{'UserId':Number(_0x2e8777[_0x901a('0x34')][_0x901a('0x5a')][_0x325f17]),'SquareProjectId':Number(_0x2e8777[_0x901a('0x49')]['id'])});}}else{socket[_0x901a('0x5d')](_0x901a('0x5e'),{'UserId':Number(_0x2e8777['query'][_0x901a('0x5a')]),'SquareProjectId':Number(_0x2e8777['params']['id'])});}});}})[_0x901a('0x24')](respondWithStatusCode(_0x1cd5fa,null))[_0x901a('0x47')](handleError(_0x1cd5fa,null));};exports['getUsers']=function(_0x27fa77,_0x26c17e,_0x1cdaa4){var _0x5c26b3={};var _0x3a11f0={};var _0x2be932;var _0x40a8f8;return db[_0x901a('0x30')][_0x901a('0x5f')]({'where':{'id':_0x27fa77[_0x901a('0x49')]['id']}})[_0x901a('0x24')](handleEntityNotFound(_0x26c17e,null))[_0x901a('0x24')](function(_0x16a0b4){if(_0x16a0b4){_0x2be932=_0x16a0b4;_0x3a11f0[_0x901a('0x33')]=_['keys'](db[_0x901a('0x60')][_0x901a('0x4b')]);_0x3a11f0[_0x901a('0x34')]=_['keys'](_0x27fa77['query']);_0x3a11f0['filters']=_['intersection'](_0x3a11f0['model'],_0x3a11f0[_0x901a('0x34')]);_0x5c26b3['attributes']=_[_0x901a('0x4c')](_0x3a11f0['model'],qs['fields'](_0x27fa77['query'][_0x901a('0x4d')]));_0x5c26b3[_0x901a('0x36')]=_0x5c26b3['attributes'][_0x901a('0x37')]?_0x5c26b3[_0x901a('0x36')]:_0x3a11f0[_0x901a('0x33')];_0x5c26b3['order']=qs[_0x901a('0x3c')](_0x27fa77['query']['sort']);_0x5c26b3[_0x901a('0x3d')]=qs[_0x901a('0x35')](_[_0x901a('0x3e')](_0x27fa77[_0x901a('0x34')],_0x3a11f0[_0x901a('0x35')]));if(_0x27fa77[_0x901a('0x34')][_0x901a('0x3f')]){_0x5c26b3[_0x901a('0x3d')]=_[_0x901a('0x40')](_0x5c26b3[_0x901a('0x3d')],{'$or':_[_0x901a('0x2f')](_0x5c26b3[_0x901a('0x36')],function(_0x267519){var _0x973bd7={};_0x973bd7[_0x267519]={'$like':'%'+_0x27fa77[_0x901a('0x34')][_0x901a('0x3f')]+'%'};return _0x973bd7;})});}_0x5c26b3=_['merge']({},_0x5c26b3,_0x27fa77[_0x901a('0x42')]);return _0x2be932[_0x901a('0x61')](_0x5c26b3);}})[_0x901a('0x24')](function(_0x2a6b1b){if(_0x2a6b1b){_0x40a8f8=_0x2a6b1b[_0x901a('0x37')];if(!_0x27fa77[_0x901a('0x34')]['hasOwnProperty'](_0x901a('0x39'))){_0x5c26b3[_0x901a('0x1f')]=qs['limit'](_0x27fa77[_0x901a('0x34')][_0x901a('0x1f')]);_0x5c26b3['offset']=qs[_0x901a('0x3a')](_0x27fa77['query']['offset']);}return _0x2be932[_0x901a('0x61')](_0x5c26b3);}})['then'](function(_0x2782bf){if(_0x2782bf){return _0x2782bf?{'count':_0x40a8f8,'rows':_0x2782bf}:null;}})[_0x901a('0x24')](respondWithResult(_0x26c17e,null))['catch'](handleError(_0x26c17e,null));};
\ No newline at end of file
index f8217c8..9317986 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b4=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners','save'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x52b4,0xb0));var _0x452b=function(_0xe8e813,_0x3d3d1b){_0xe8e813=_0xe8e813-0x0;var _0x3ff87c=_0x52b4[_0xe8e813];return _0x3ff87c;};'use strict';var EventEmitter=require(_0x452b('0x0'));var SquareProject=require(_0x452b('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x452b('0x2')](0x0);var events={'afterCreate':_0x452b('0x3'),'afterUpdate':_0x452b('0x4'),'afterDestroy':_0x452b('0x5')};function emitEvent(_0x1f6e62){return function(_0x36b728,_0x406bc2,_0x417714){SquareProjectEvents[_0x452b('0x6')](_0x1f6e62+':'+_0x36b728['id'],_0x36b728);SquareProjectEvents[_0x452b('0x6')](_0x1f6e62,_0x36b728);_0x417714(null);};}for(var e in events){if(events[_0x452b('0x7')](e)){var event=events[e];SquareProject[_0x452b('0x8')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0xdd76=['hook','exports','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xdd76,0x160));var _0x6dd7=function(_0x2e9133,_0x3d5662){_0x2e9133=_0x2e9133-0x0;var _0x3c4975=_0xdd76[_0x2e9133];return _0x3c4975;};'use strict';var EventEmitter=require('events');var SquareProject=require('../../mysqldb')['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x6dd7('0x0')](0x0);var events={'afterCreate':_0x6dd7('0x1'),'afterUpdate':_0x6dd7('0x2'),'afterDestroy':'remove'};function emitEvent(_0x20360e){return function(_0x2f469f,_0x3d02db,_0x1dbab2){SquareProjectEvents['emit'](_0x20360e+':'+_0x2f469f['id'],_0x2f469f);SquareProjectEvents[_0x6dd7('0x3')](_0x20360e,_0x2f469f);_0x1dbab2(null);};}for(var e in events){if(events[_0x6dd7('0x4')](e)){var event=events[e];SquareProject[_0x6dd7('0x5')](e,emitEvent(event));}}module[_0x6dd7('0x6')]=SquareProjectEvents;
\ No newline at end of file
index ad009be..24b5a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0531=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','define','square_projects','changed','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format'];(function(_0x56092e,_0x164609){var _0x2618b1=function(_0x13e5c1){while(--_0x13e5c1){_0x56092e['push'](_0x56092e['shift']());}};_0x2618b1(++_0x164609);}(_0x0531,0xea));var _0x1053=function(_0x12b8ec,_0x1655be){_0x12b8ec=_0x12b8ec-0x0;var _0x21af77=_0x0531[_0x12b8ec];return _0x21af77;};'use strict';var _=require('lodash');var util=require(_0x1053('0x0'));var logger=require(_0x1053('0x1'))(_0x1053('0x2'));var moment=require(_0x1053('0x3'));var BPromise=require(_0x1053('0x4'));var rp=require(_0x1053('0x5'));var fs=require('fs');var path=require(_0x1053('0x6'));var rimraf=require(_0x1053('0x7'));var config=require(_0x1053('0x8'));var attributes=require(_0x1053('0x9'));module['exports']=function(_0xcb48ab,_0xd335cb){return _0xcb48ab[_0x1053('0xa')]('SquareProject',attributes,{'tableName':_0x1053('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x108d2e,_0x2ec94b,_0xc12d75){if(_0x108d2e[_0x1053('0xc')]('preproduction')){_0x108d2e[_0x1053('0xd')]=moment()['format'](_0x1053('0xe'));}if(_0x108d2e[_0x1053('0xc')](_0x1053('0xf'))){_0x108d2e[_0x1053('0x10')]=moment()[_0x1053('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0xc12d75(null,_0x108d2e);}}});};
\ No newline at end of file
+var _0xdf72=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SquareProject','square_projects','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','lodash','util','../../config/logger','api'];(function(_0x2d1cf4,_0x2ea9ee){var _0x554a7c=function(_0x55cc39){while(--_0x55cc39){_0x2d1cf4['push'](_0x2d1cf4['shift']());}};_0x554a7c(++_0x2ea9ee);}(_0xdf72,0x1be));var _0x2df7=function(_0x3ba924,_0x3b99f0){_0x3ba924=_0x3ba924-0x0;var _0x4cc1df=_0xdf72[_0x3ba924];return _0x4cc1df;};'use strict';var _=require(_0x2df7('0x0'));var util=require(_0x2df7('0x1'));var logger=require(_0x2df7('0x2'))(_0x2df7('0x3'));var moment=require(_0x2df7('0x4'));var BPromise=require(_0x2df7('0x5'));var rp=require(_0x2df7('0x6'));var fs=require('fs');var path=require(_0x2df7('0x7'));var rimraf=require(_0x2df7('0x8'));var config=require(_0x2df7('0x9'));var attributes=require('./squareProject.attributes');module['exports']=function(_0x4b6d6c,_0x4082be){return _0x4b6d6c[_0x2df7('0xa')](_0x2df7('0xb'),attributes,{'tableName':_0x2df7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4f8974,_0x2dc495,_0x553a58){if(_0x4f8974[_0x2df7('0xd')](_0x2df7('0xe'))){_0x4f8974[_0x2df7('0xf')]=moment()['format'](_0x2df7('0x10'));}if(_0x4f8974[_0x2df7('0xd')](_0x2df7('0x11'))){_0x4f8974['publishedAt']=moment()['format'](_0x2df7('0x10'));}_0x553a58(null,_0x4f8974);}}});};
\ No newline at end of file
index 7cc96d2..b895f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd692=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','localhost','./squareProject.socket','register','request','then','info','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','SquareProject','find','options','where','attributes','include','model','map','ShowSquareProject','debug'];(function(_0x26880f,_0x130975){var _0x8c72e6=function(_0x2cbb04){while(--_0x2cbb04){_0x26880f['push'](_0x26880f['shift']());}};_0x8c72e6(++_0x130975);}(_0xd692,0x1bc));var _0x2d69=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xd692[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x2d69('0x0'));var util=require(_0x2d69('0x1'));var moment=require(_0x2d69('0x2'));var BPromise=require(_0x2d69('0x3'));var rs=require(_0x2d69('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d69('0x5'))['db'];var utils=require(_0x2d69('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x2d69('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2d69('0x8')][_0x2d69('0x9')]({'port':0x232a});config[_0x2d69('0xa')]=_[_0x2d69('0xb')](config[_0x2d69('0xa')],{'host':_0x2d69('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2d69('0xa')]));require(_0x2d69('0xd'))[_0x2d69('0xe')](socket);function respondWithRpcPromise(_0x521249,_0x27ecda,_0x500309){return new BPromise(function(_0x1e4426,_0x2c09d4){return client[_0x2d69('0xf')](_0x521249,_0x500309)[_0x2d69('0x10')](function(_0x4a04fd){logger[_0x2d69('0x11')]('SquareProject,\x20%s,\x20%s',_0x27ecda,_0x2d69('0x12'));logger['debug'](_0x2d69('0x13'),_0x27ecda,_0x2d69('0x12'),JSON[_0x2d69('0x14')](_0x4a04fd));if(_0x4a04fd[_0x2d69('0x15')]){if(_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x16')]===0x1f4){logger['error'](_0x2d69('0x17'),_0x27ecda,_0x4a04fd['error'][_0x2d69('0x18')]);return _0x2c09d4(_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x18')]);}logger[_0x2d69('0x15')](_0x2d69('0x17'),_0x27ecda,_0x4a04fd[_0x2d69('0x15')][_0x2d69('0x18')]);return _0x1e4426(_0x4a04fd['error'][_0x2d69('0x18')]);}else{logger['info'](_0x2d69('0x17'),_0x27ecda,_0x2d69('0x12'));_0x1e4426(_0x4a04fd[_0x2d69('0x19')][_0x2d69('0x18')]);}})[_0x2d69('0x1a')](function(_0x4620f5){logger[_0x2d69('0x15')](_0x2d69('0x17'),_0x27ecda,_0x4620f5);_0x2c09d4(_0x4620f5);});});}exports['ShowSquareProject']=function(_0xcbbd95){var _0x24746c=this;return new Promise(function(_0x5276a9,_0x320936){return db[_0x2d69('0x1b')][_0x2d69('0x1c')]({'raw':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')][_0x2d69('0x1e')]||null:null,'attributes':_0xcbbd95['options']?_0xcbbd95[_0x2d69('0x1d')][_0x2d69('0x1f')]||null:null,'include':_0xcbbd95[_0x2d69('0x1d')]?_0xcbbd95[_0x2d69('0x1d')]['include']?_['map'](_0xcbbd95['options'][_0x2d69('0x20')],function(_0x41e884){return{'model':db[_0x41e884[_0x2d69('0x21')]],'as':_0x41e884['as'],'attributes':_0x41e884[_0x2d69('0x1f')],'include':_0x41e884['include']?_[_0x2d69('0x22')](_0x41e884['include'],function(_0x2a5a05){return{'model':db[_0x2a5a05[_0x2d69('0x21')]],'as':_0x2a5a05['as'],'attributes':_0x2a5a05['attributes'],'include':_0x2a5a05[_0x2d69('0x20')]?_[_0x2d69('0x22')](_0x2a5a05[_0x2d69('0x20')],function(_0x4fa121){return{'model':db[_0x4fa121[_0x2d69('0x21')]],'as':_0x4fa121['as'],'attributes':_0x4fa121['attributes']};}):[]};}):[]};}):[]:[]})[_0x2d69('0x10')](function(_0x3e3c82){logger[_0x2d69('0x11')](_0x2d69('0x23'),_0xcbbd95);logger[_0x2d69('0x24')](_0x2d69('0x23'),_0xcbbd95,JSON[_0x2d69('0x14')](_0x3e3c82));_0x5276a9(_0x3e3c82);})[_0x2d69('0x1a')](function(_0x3553c2){logger[_0x2d69('0x15')](_0x2d69('0x23'),_0x3553c2['message'],_0xcbbd95);_0x320936(_0x24746c[_0x2d69('0x15')](0x1f4,_0x3553c2[_0x2d69('0x18')]));});});};
\ No newline at end of file
+var _0x5f25=['then','ShowSquareProject','debug','lodash','util','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','SquareProject,\x20%s,\x20%s','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','SquareProject','find','options','where','include','map','model','attributes'];(function(_0x2e9547,_0x4731ff){var _0x5a32e4=function(_0x5712be){while(--_0x5712be){_0x2e9547['push'](_0x2e9547['shift']());}};_0x5a32e4(++_0x4731ff);}(_0x5f25,0x13e));var _0x55f2=function(_0x26df48,_0x22aa50){_0x26df48=_0x26df48-0x0;var _0x209047=_0x5f25[_0x26df48];return _0x209047;};'use strict';var _=require(_0x55f2('0x0'));var util=require(_0x55f2('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x55f2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x55f2('0x3'))['db'];var utils=require(_0x55f2('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x55f2('0x5'));var client=jayson[_0x55f2('0x6')][_0x55f2('0x7')]({'port':0x232a});config[_0x55f2('0x8')]=_[_0x55f2('0x9')](config[_0x55f2('0x8')],{'host':_0x55f2('0xa'),'port':0x18eb});var socket=require(_0x55f2('0xb'))(new Redis(config[_0x55f2('0x8')]));require('./squareProject.socket')[_0x55f2('0xc')](socket);function respondWithRpcPromise(_0x13a857,_0x1b91a0,_0x210715){return new BPromise(function(_0x548711,_0x5b8894){return client[_0x55f2('0xd')](_0x13a857,_0x210715)['then'](function(_0x1d6602){logger['info'](_0x55f2('0xe'),_0x1b91a0,_0x55f2('0xf'));logger['debug'](_0x55f2('0x10'),_0x1b91a0,_0x55f2('0xf'),JSON[_0x55f2('0x11')](_0x1d6602));if(_0x1d6602[_0x55f2('0x12')]){if(_0x1d6602[_0x55f2('0x12')][_0x55f2('0x13')]===0x1f4){logger[_0x55f2('0x12')](_0x55f2('0xe'),_0x1b91a0,_0x1d6602[_0x55f2('0x12')]['message']);return _0x5b8894(_0x1d6602['error'][_0x55f2('0x14')]);}logger[_0x55f2('0x12')](_0x55f2('0xe'),_0x1b91a0,_0x1d6602[_0x55f2('0x12')]['message']);return _0x548711(_0x1d6602['error'][_0x55f2('0x14')]);}else{logger[_0x55f2('0x15')]('SquareProject,\x20%s,\x20%s',_0x1b91a0,_0x55f2('0xf'));_0x548711(_0x1d6602[_0x55f2('0x16')][_0x55f2('0x14')]);}})[_0x55f2('0x17')](function(_0x5258e7){logger[_0x55f2('0x12')]('SquareProject,\x20%s,\x20%s',_0x1b91a0,_0x5258e7);_0x5b8894(_0x5258e7);});});}exports['ShowSquareProject']=function(_0x5ddd62){var _0x426543=this;return new Promise(function(_0x9a1fa8,_0x2d093f){return db[_0x55f2('0x18')][_0x55f2('0x19')]({'raw':_0x5ddd62[_0x55f2('0x1a')]?_0x5ddd62['options']['raw']===undefined?!![]:![]:!![],'where':_0x5ddd62[_0x55f2('0x1a')]?_0x5ddd62[_0x55f2('0x1a')][_0x55f2('0x1b')]||null:null,'attributes':_0x5ddd62[_0x55f2('0x1a')]?_0x5ddd62['options']['attributes']||null:null,'include':_0x5ddd62['options']?_0x5ddd62['options'][_0x55f2('0x1c')]?_[_0x55f2('0x1d')](_0x5ddd62[_0x55f2('0x1a')][_0x55f2('0x1c')],function(_0x5c8f62){return{'model':db[_0x5c8f62[_0x55f2('0x1e')]],'as':_0x5c8f62['as'],'attributes':_0x5c8f62[_0x55f2('0x1f')],'include':_0x5c8f62[_0x55f2('0x1c')]?_[_0x55f2('0x1d')](_0x5c8f62[_0x55f2('0x1c')],function(_0x3d3e4d){return{'model':db[_0x3d3e4d[_0x55f2('0x1e')]],'as':_0x3d3e4d['as'],'attributes':_0x3d3e4d[_0x55f2('0x1f')],'include':_0x3d3e4d[_0x55f2('0x1c')]?_[_0x55f2('0x1d')](_0x3d3e4d[_0x55f2('0x1c')],function(_0x4f15c4){return{'model':db[_0x4f15c4[_0x55f2('0x1e')]],'as':_0x4f15c4['as'],'attributes':_0x4f15c4[_0x55f2('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x55f2('0x20')](function(_0x1c0c19){logger[_0x55f2('0x15')](_0x55f2('0x21'),_0x5ddd62);logger[_0x55f2('0x22')](_0x55f2('0x21'),_0x5ddd62,JSON[_0x55f2('0x11')](_0x1c0c19));_0x9a1fa8(_0x1c0c19);})[_0x55f2('0x17')](function(_0x3c90b4){logger[_0x55f2('0x12')](_0x55f2('0x21'),_0x3c90b4['message'],_0x5ddd62);_0x2d093f(_0x426543[_0x55f2('0x12')](0x1f4,_0x3c90b4[_0x55f2('0x14')]));});});};
\ No newline at end of file
index ead664c..da67b17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a27=['squareProject:','save','remove','removeListener'];(function(_0x37b529,_0x6724e7){var _0x116152=function(_0x36d367){while(--_0x36d367){_0x37b529['push'](_0x37b529['shift']());}};_0x116152(++_0x6724e7);}(_0x5a27,0x1b5));var _0x75a2=function(_0x54893c,_0x2b058d){_0x54893c=_0x54893c-0x0;var _0x4bf98f=_0x5a27[_0x54893c];return _0x4bf98f;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x75a2('0x0'),_0x75a2('0x1'),'update'];function createListener(_0x475cfa,_0x15f1e4){return function(_0x11accd){_0x15f1e4['emit'](_0x475cfa,_0x11accd);};}function removeListener(_0x3e147f,_0x361ea9){return function(){SquareProjectEvents[_0x75a2('0x2')](_0x3e147f,_0x361ea9);};}exports['register']=function(_0x1a717b){for(var _0x533742=0x0,_0x4ffce3=events['length'];_0x533742<_0x4ffce3;_0x533742++){var _0x5ce0e6=events[_0x533742];var _0x53e3f1=createListener(_0x75a2('0x3')+_0x5ce0e6,_0x1a717b);SquareProjectEvents['on'](_0x5ce0e6,_0x53e3f1);}};
\ No newline at end of file
+var _0x76d7=['remove','emit','removeListener','register','length','./squareProject.events','save'];(function(_0x56adbb,_0x29d961){var _0x842bbd=function(_0x2a5059){while(--_0x2a5059){_0x56adbb['push'](_0x56adbb['shift']());}};_0x842bbd(++_0x29d961);}(_0x76d7,0xfa));var _0x776d=function(_0x1ae3d4,_0x406f93){_0x1ae3d4=_0x1ae3d4-0x0;var _0x3c47b8=_0x76d7[_0x1ae3d4];return _0x3c47b8;};'use strict';var SquareProjectEvents=require(_0x776d('0x0'));var events=[_0x776d('0x1'),_0x776d('0x2'),'update'];function createListener(_0x194f24,_0x20d162){return function(_0xf2f0af){_0x20d162[_0x776d('0x3')](_0x194f24,_0xf2f0af);};}function removeListener(_0x1971d7,_0x676cd7){return function(){SquareProjectEvents[_0x776d('0x4')](_0x1971d7,_0x676cd7);};}exports[_0x776d('0x5')]=function(_0x49d685){for(var _0x1c608f=0x0,_0x28a767=events[_0x776d('0x6')];_0x1c608f<_0x28a767;_0x1c608f++){var _0x340b3a=events[_0x1c608f];var _0x509a15=createListener('squareProject:'+_0x340b3a,_0x49d685);SquareProjectEvents['on'](_0x340b3a,_0x509a15);}};
\ No newline at end of file
index 2d3e611..688be5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['/:id','show','/:id/download','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','index'];(function(_0x3a507c,_0x13e8ee){var _0x1f34eb=function(_0x28645f){while(--_0x28645f){_0x3a507c['push'](_0x3a507c['shift']());}};_0x1f34eb(++_0x13e8ee);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x1c2e29,_0x3ad48a){_0x1c2e29=_0x1c2e29-0x0;var _0x39174d=_0x7fbe[_0x1c2e29];return _0x39174d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['download']);router['post']('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router[_0xe7fb('0x10')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x11')]);router[_0xe7fb('0x12')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x13')]);module[_0xe7fb('0x14')]=router;
\ No newline at end of file
+var _0x1261=['isAuthenticated','show','/:id/download','post','create','/:id','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','index','get'];(function(_0x5e97ed,_0x52640b){var _0x3edcc6=function(_0x2a31a4){while(--_0x2a31a4){_0x5e97ed['push'](_0x5e97ed['shift']());}};_0x3edcc6(++_0x52640b);}(_0x1261,0x144));var _0x1126=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x1261[_0x2555d0];return _0x3bb486;};'use strict';var multer=require('multer');var util=require(_0x1126('0x0'));var path=require(_0x1126('0x1'));var timeout=require(_0x1126('0x2'));var express=require(_0x1126('0x3'));var router=express[_0x1126('0x4')]();var fs_extra=require(_0x1126('0x5'));var auth=require(_0x1126('0x6'));var interaction=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var controller=require(_0x1126('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1126('0xa')]);router[_0x1126('0xb')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0xd')]);router[_0x1126('0xb')](_0x1126('0xe'),auth[_0x1126('0xc')](),controller['download']);router[_0x1126('0xf')]('/',auth[_0x1126('0xc')](),controller[_0x1126('0x10')]);router['put'](_0x1126('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x1126('0x12')]('/:id',auth[_0x1126('0xc')](),controller[_0x1126('0x13')]);module[_0x1126('0x14')]=router;
\ No newline at end of file
index 45c5a9b..257bfd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae24=['VIRTUAL','savePath','sequelize','STRING'];(function(_0x3c0450,_0x12c0d6){var _0x29ff01=function(_0xeba11e){while(--_0xeba11e){_0x3c0450['push'](_0x3c0450['shift']());}};_0x29ff01(++_0x12c0d6);}(_0xae24,0x182));var _0x4ae2=function(_0x313fa6,_0x31d3ad){_0x313fa6=_0x313fa6-0x0;var _0x4fee35=_0xae24[_0x313fa6];return _0x4fee35;};'use strict';var Sequelize=require(_0x4ae2('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x4ae2('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4ae2('0x1')]},'context':{'type':Sequelize[_0x4ae2('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x4ae2('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x4ae2('0x1')]},'saveName':{'type':Sequelize[_0x4ae2('0x1')]},'filename':{'type':Sequelize[_0x4ae2('0x1')]},'savePath':{'type':Sequelize[_0x4ae2('0x1')]},'format':{'type':Sequelize[_0x4ae2('0x2')],'get':function(){var _0x307247='';var _0x4f2e84=this['getDataValue'](_0x4ae2('0x3'));if(_0x4f2e84){_0x307247=_0x4f2e84['substring'](_0x4f2e84['lastIndexOf']('.'));}return _0x307247;}}};
\ No newline at end of file
+var _0x814b=['substring','lastIndexOf','sequelize','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0x538423,_0x61934b){var _0x26eca1=function(_0x29a283){while(--_0x29a283){_0x538423['push'](_0x538423['shift']());}};_0x26eca1(++_0x61934b);}(_0x814b,0x1a2));var _0xb814=function(_0x26e424,_0xfcf210){_0x26e424=_0x26e424-0x0;var _0x2c81d6=_0x814b[_0x26e424];return _0x2c81d6;};'use strict';var Sequelize=require(_0xb814('0x0'));module[_0xb814('0x1')]={'uniqueid':{'type':Sequelize[_0xb814('0x2')]},'callerid':{'type':Sequelize[_0xb814('0x2')]},'calleridname':{'type':Sequelize[_0xb814('0x2')]},'context':{'type':Sequelize[_0xb814('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb814('0x2')]},'accountcode':{'type':Sequelize[_0xb814('0x2')]},'dnid':{'type':Sequelize[_0xb814('0x2')]},'projectName':{'type':Sequelize[_0xb814('0x2')]},'saveName':{'type':Sequelize[_0xb814('0x2')]},'filename':{'type':Sequelize[_0xb814('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xb814('0x3')],'get':function(){var _0x2e6272='';var _0x5c8539=this[_0xb814('0x4')](_0xb814('0x5'));if(_0x5c8539){_0x2e6272=_0x5c8539[_0xb814('0x6')](_0x5c8539[_0xb814('0x7')]('.'));}return _0x2e6272;}}};
\ No newline at end of file
index b96df97..8b45831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','name','send','index','map','SquareRecording','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','download','../../components/encryptor','uniqueid','savePath','filename','format','decryptFile','secrets','recording','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x5d9ca5,_0x41a09b){var _0x4174f3=function(_0xbfa406){while(--_0xbfa406){_0x5d9ca5['push'](_0x5d9ca5['shift']());}};_0x4174f3(++_0x41a09b);}(_0xc1c6,0x118));var _0x6c1c=function(_0x24e9b0,_0x5b8107){_0x24e9b0=_0x24e9b0-0x0;var _0x378c3a=_0xc1c6[_0x24e9b0];return _0x378c3a;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require(_0x6c1c('0x3'));var rp=require(_0x6c1c('0x4'));var moment=require(_0x6c1c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6c1c('0x6'));var util=require(_0x6c1c('0x7'));var path=require(_0x6c1c('0x8'));var sox=require('sox');var csv=require(_0x6c1c('0x9'));var ejs=require(_0x6c1c('0xa'));var fs=require('fs');var fs_extra=require(_0x6c1c('0xb'));var _=require('lodash');var squel=require(_0x6c1c('0xc'));var crypto=require(_0x6c1c('0xd'));var jsforce=require(_0x6c1c('0xe'));var deskjs=require(_0x6c1c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0x10'));var Papa=require(_0x6c1c('0x11'));var Redis=require(_0x6c1c('0x12'));var authService=require(_0x6c1c('0x13'));var qs=require(_0x6c1c('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6c1c('0x15'));var logger=require(_0x6c1c('0x16'))(_0x6c1c('0x17'));var utils=require('../../config/utils');var config=require(_0x6c1c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x19'))['db'];function respondWithStatusCode(_0x2e7953,_0x24e2ae){_0x24e2ae=_0x24e2ae||0xcc;return function(_0x1820c4){if(_0x1820c4){return _0x2e7953['sendStatus'](_0x24e2ae);}return _0x2e7953['status'](_0x24e2ae)[_0x6c1c('0x1a')]();};}function respondWithResult(_0xc0406f,_0x406cb5){_0x406cb5=_0x406cb5||0xc8;return function(_0x4eb822){if(_0x4eb822){return _0xc0406f[_0x6c1c('0x1b')](_0x406cb5)[_0x6c1c('0x1c')](_0x4eb822);}};}function respondWithFilteredResult(_0x56d76d,_0x1685c7){return function(_0x4c7d60){if(_0x4c7d60){var _0x53d211=typeof _0x1685c7[_0x6c1c('0x1d')]===_0x6c1c('0x1e')&&typeof _0x1685c7[_0x6c1c('0x1f')]===_0x6c1c('0x1e');var _0x2b98cd=_0x4c7d60[_0x6c1c('0x20')];var _0x16228a=_0x53d211?0x0:_0x1685c7[_0x6c1c('0x1d')];var _0x51c238=_0x53d211?_0x4c7d60[_0x6c1c('0x20')]:_0x1685c7['offset']+_0x1685c7[_0x6c1c('0x1f')];var _0x4d71ef;if(_0x51c238>=_0x2b98cd){_0x51c238=_0x2b98cd;_0x4d71ef=0xc8;}else{_0x4d71ef=0xce;}_0x56d76d[_0x6c1c('0x1b')](_0x4d71ef);return _0x56d76d[_0x6c1c('0x21')](_0x6c1c('0x22'),_0x16228a+'-'+_0x51c238+'/'+_0x2b98cd)[_0x6c1c('0x1c')](_0x4c7d60);}return null;};}function patchUpdates(_0x14bad6){return function(_0x3403af){try{jsonpatch[_0x6c1c('0x23')](_0x3403af,_0x14bad6,!![]);}catch(_0x3b5c4b){return BPromise[_0x6c1c('0x24')](_0x3b5c4b);}return _0x3403af[_0x6c1c('0x25')]();};}function saveUpdates(_0x16f7bc,_0x4e9c44){return function(_0x31a5f2){if(_0x31a5f2){return _0x31a5f2[_0x6c1c('0x26')](_0x16f7bc)['then'](function(_0x4ef0b6){return _0x4ef0b6;});}return null;};}function removeEntity(_0x494e7c,_0x6453b2){return function(_0x2833c0){if(_0x2833c0){return _0x2833c0[_0x6c1c('0x27')]()[_0x6c1c('0x28')](function(){_0x494e7c[_0x6c1c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53bd63,_0x1dc4ff){return function(_0x5b2f9c){if(!_0x5b2f9c){_0x53bd63[_0x6c1c('0x29')](0x194);}return _0x5b2f9c;};}function handleError(_0x31e9b6,_0x2ccfbf){_0x2ccfbf=_0x2ccfbf||0x1f4;return function(_0x253836){logger[_0x6c1c('0x2a')](_0x253836['stack']);if(_0x253836[_0x6c1c('0x2b')]){delete _0x253836[_0x6c1c('0x2b')];}_0x31e9b6['status'](_0x2ccfbf)[_0x6c1c('0x2c')](_0x253836);};}exports[_0x6c1c('0x2d')]=function(_0x552611,_0x5bc62f){var _0x50976f={},_0x3a24cb={},_0x10970={'count':0x0,'rows':[]};var _0x1d41c5=_[_0x6c1c('0x2e')](db[_0x6c1c('0x2f')][_0x6c1c('0x30')],function(_0x57f7c2){return{'name':_0x57f7c2[_0x6c1c('0x31')],'type':_0x57f7c2[_0x6c1c('0x32')]['key']};});_0x3a24cb[_0x6c1c('0x33')]=_[_0x6c1c('0x2e')](_0x1d41c5,_0x6c1c('0x2b'));_0x3a24cb[_0x6c1c('0x34')]=_['keys'](_0x552611[_0x6c1c('0x34')]);_0x3a24cb[_0x6c1c('0x35')]=_[_0x6c1c('0x36')](_0x3a24cb[_0x6c1c('0x33')],_0x3a24cb[_0x6c1c('0x34')]);_0x50976f[_0x6c1c('0x37')]=_['intersection'](_0x3a24cb[_0x6c1c('0x33')],qs[_0x6c1c('0x38')](_0x552611[_0x6c1c('0x34')]['fields']));_0x50976f['attributes']=_0x50976f[_0x6c1c('0x37')][_0x6c1c('0x39')]?_0x50976f['attributes']:_0x3a24cb['model'];if(!_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3a')](_0x6c1c('0x3b'))){_0x50976f['limit']=qs[_0x6c1c('0x1f')](_0x552611[_0x6c1c('0x34')][_0x6c1c('0x1f')]);_0x50976f[_0x6c1c('0x1d')]=qs[_0x6c1c('0x1d')](_0x552611[_0x6c1c('0x34')]['offset']);}_0x50976f[_0x6c1c('0x3c')]=qs[_0x6c1c('0x3d')](_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3d')]);_0x50976f[_0x6c1c('0x3e')]=qs['filters'](_['pick'](_0x552611[_0x6c1c('0x34')],_0x3a24cb[_0x6c1c('0x35')]),_0x1d41c5);if(_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3f')]){_0x50976f[_0x6c1c('0x3e')]=_['merge'](_0x50976f[_0x6c1c('0x3e')],{'$or':_[_0x6c1c('0x2e')](_0x1d41c5,function(_0x55f837){if(_0x55f837[_0x6c1c('0x32')]!=='VIRTUAL'){var _0x3c0f2d={};_0x3c0f2d[_0x55f837['name']]={'$like':'%'+_0x552611[_0x6c1c('0x34')][_0x6c1c('0x3f')]+'%'};return _0x3c0f2d;}})});}_0x50976f=_[_0x6c1c('0x40')]({},_0x50976f,_0x552611['options']);var _0x3ac507={'where':_0x50976f['where']};return db['SquareRecording'][_0x6c1c('0x20')](_0x3ac507)['then'](function(_0x358187){_0x10970['count']=_0x358187;if(_0x552611[_0x6c1c('0x34')][_0x6c1c('0x41')]){_0x50976f[_0x6c1c('0x42')]=[{'all':!![]}];}return db[_0x6c1c('0x2f')][_0x6c1c('0x43')](_0x50976f);})['then'](function(_0x3abe2f){_0x10970[_0x6c1c('0x44')]=_0x3abe2f;return _0x10970;})['then'](respondWithFilteredResult(_0x5bc62f,_0x50976f))[_0x6c1c('0x45')](handleError(_0x5bc62f,null));};exports[_0x6c1c('0x46')]=function(_0x667f28,_0x5283d1){var _0x274321={'raw':!![],'where':{'id':_0x667f28[_0x6c1c('0x47')]['id']}},_0x13c9d2={};_0x13c9d2['model']=_[_0x6c1c('0x48')](db[_0x6c1c('0x2f')]['rawAttributes']);_0x13c9d2[_0x6c1c('0x34')]=_[_0x6c1c('0x48')](_0x667f28[_0x6c1c('0x34')]);_0x13c9d2[_0x6c1c('0x35')]=_[_0x6c1c('0x36')](_0x13c9d2[_0x6c1c('0x33')],_0x13c9d2[_0x6c1c('0x34')]);_0x274321[_0x6c1c('0x37')]=_[_0x6c1c('0x36')](_0x13c9d2[_0x6c1c('0x33')],qs['fields'](_0x667f28['query'][_0x6c1c('0x38')]));_0x274321[_0x6c1c('0x37')]=_0x274321[_0x6c1c('0x37')][_0x6c1c('0x39')]?_0x274321[_0x6c1c('0x37')]:_0x13c9d2[_0x6c1c('0x33')];if(_0x667f28[_0x6c1c('0x34')][_0x6c1c('0x41')]){_0x274321[_0x6c1c('0x42')]=[{'all':!![]}];}_0x274321=_[_0x6c1c('0x40')]({},_0x274321,_0x667f28[_0x6c1c('0x49')]);return db['SquareRecording']['find'](_0x274321)['then'](handleEntityNotFound(_0x5283d1,null))[_0x6c1c('0x28')](respondWithResult(_0x5283d1,null))['catch'](handleError(_0x5283d1,null));};exports[_0x6c1c('0x4a')]=function(_0x3913ae,_0x3284ce){return db[_0x6c1c('0x2f')][_0x6c1c('0x4a')](_0x3913ae[_0x6c1c('0x4b')],{})['then'](respondWithResult(_0x3284ce,0xc9))[_0x6c1c('0x45')](handleError(_0x3284ce,null));};exports[_0x6c1c('0x26')]=function(_0x5b041e,_0x315ae8){if(_0x5b041e[_0x6c1c('0x4b')]['id']){delete _0x5b041e[_0x6c1c('0x4b')]['id'];}return db['SquareRecording'][_0x6c1c('0x4c')]({'where':{'id':_0x5b041e[_0x6c1c('0x47')]['id']}})['then'](handleEntityNotFound(_0x315ae8,null))[_0x6c1c('0x28')](saveUpdates(_0x5b041e[_0x6c1c('0x4b')],null))[_0x6c1c('0x28')](respondWithResult(_0x315ae8,null))[_0x6c1c('0x45')](handleError(_0x315ae8,null));};exports[_0x6c1c('0x4d')]=function(_0x4045d6,_0x587701,_0x35a5e8){var _0x588219=require(_0x6c1c('0x4e'));var _0x53fcb2=![];var _0x1d6a28={};if(_0x4045d6[_0x6c1c('0x34')][_0x6c1c('0x32')]&&_0x4045d6[_0x6c1c('0x34')]['type']===_0x6c1c('0x4f')){_0x1d6a28[_0x6c1c('0x4f')]=_0x4045d6[_0x6c1c('0x47')]['id'];}else{_0x1d6a28['id']=_0x4045d6['params']['id'];}return db[_0x6c1c('0x2f')][_0x6c1c('0x4c')]({'where':_0x1d6a28,'attributes':['id',_0x6c1c('0x50'),_0x6c1c('0x51')],'raw':!![]})[_0x6c1c('0x28')](handleEntityNotFound(_0x587701,null))[_0x6c1c('0x28')](function(_0x1f248b){if(_0x1f248b){var _0x19db2b=_0x1f248b[_0x6c1c('0x50')];var _0xdfc6a=util[_0x6c1c('0x52')]('%s.cypher',_0x19db2b);if(fs['existsSync'](_0xdfc6a)){_0x53fcb2=!![];return _0x588219[_0x6c1c('0x53')](_0xdfc6a,_0x19db2b,config[_0x6c1c('0x54')][_0x6c1c('0x55')])[_0x6c1c('0x28')](function(){return _0x1f248b;});}return _0x1f248b;}})[_0x6c1c('0x28')](function(_0x48e558){if(_0x48e558){var _0x397a5a=_0x48e558['savePath'];if(!fs['existsSync'](_0x397a5a)){throw new db[(_0x6c1c('0x56'))]['ValidationError'](_0x6c1c('0x57'));}if(_0x48e558['filename']){return _0x587701[_0x6c1c('0x4d')](_0x397a5a,_0x48e558['filename']+path[_0x6c1c('0x58')](_0x397a5a),function(){if(_0x53fcb2){fs[_0x6c1c('0x59')](_0x397a5a);}});}else{return _0x587701[_0x6c1c('0x4d')](_0x397a5a,function(_0x5bd46d){if(_0x53fcb2){fs[_0x6c1c('0x59')](_0x397a5a);}});}}})[_0x6c1c('0x45')](function(_0x2b2e68){if(_0x2b2e68[_0x6c1c('0x5a')]==='SquareRecording\x20not\x20found'){_0x587701['status'](0x194)['send'](_0x6c1c('0x5b'));}else{return handleError(_0x587701,null);}});};exports['destroy']=function(_0x19d9a3,_0x26dbb2){return db[_0x6c1c('0x2f')][_0x6c1c('0x4c')]({'where':{'id':_0x19d9a3['params']['id']}})[_0x6c1c('0x28')](function(_0x5a7354){if(_[_0x6c1c('0x5c')](_0x5a7354)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5a7354;})[_0x6c1c('0x28')](function(_0x4efa24){var _0x52ce88=_0x4efa24[_0x6c1c('0x50')];logger[_0x6c1c('0x5d')](_0x6c1c('0x5e'),_0x52ce88);if(!_[_0x6c1c('0x5c')](_0x4efa24[_0x6c1c('0x50')])&&fs[_0x6c1c('0x5f')](_0x52ce88)){logger[_0x6c1c('0x5d')](_0x6c1c('0x60')+_0x52ce88+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x6c1c('0x61')](_0x52ce88);}_0x52ce88=_0x52ce88+_0x6c1c('0x62');if(!_['isNil'](_0x4efa24[_0x6c1c('0x50')])&&fs[_0x6c1c('0x5f')](_0x52ce88)){logger['info'](_0x6c1c('0x60')+_0x52ce88+_0x6c1c('0x63'));fs[_0x6c1c('0x61')](_0x52ce88);}return _0x4efa24;})['then'](function(_0x113bca){if(!_0x113bca)throw new InternalError();return _0x113bca['destroy']();})[_0x6c1c('0x28')](function(){_0x26dbb2['status'](0xcc)[_0x6c1c('0x1a')]();})[_0x6c1c('0x45')](handleError(_0x26dbb2,null));};
\ No newline at end of file
+var _0x8482=['isNil','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','SquareRecording','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','find','catch','create','body','params','../../components/encryptor','uniqueid','savePath','format','%s.cypher','existsSync','decryptFile','secrets','Sequelize','SquareRecording\x20not\x20found','filename','download','extname','unlink','Not\x20found','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s'];(function(_0x29722e,_0x5a7d59){var _0x541777=function(_0x38f18f){while(--_0x38f18f){_0x29722e['push'](_0x29722e['shift']());}};_0x541777(++_0x5a7d59);}(_0x8482,0x117));var _0x2848=function(_0x200b1d,_0x3739ca){_0x200b1d=_0x200b1d-0x0;var _0x22229f=_0x8482[_0x200b1d];return _0x22229f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2848('0x0'));var jsonpatch=require(_0x2848('0x1'));var rp=require(_0x2848('0x2'));var moment=require(_0x2848('0x3'));var BPromise=require(_0x2848('0x4'));var Mustache=require(_0x2848('0x5'));var util=require(_0x2848('0x6'));var path=require(_0x2848('0x7'));var sox=require(_0x2848('0x8'));var csv=require(_0x2848('0x9'));var ejs=require(_0x2848('0xa'));var fs=require('fs');var fs_extra=require(_0x2848('0xb'));var _=require(_0x2848('0xc'));var squel=require('squel');var crypto=require(_0x2848('0xd'));var jsforce=require(_0x2848('0xe'));var deskjs=require(_0x2848('0xf'));var toCsv=require(_0x2848('0x9'));var querystring=require(_0x2848('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2848('0x11'));var qs=require(_0x2848('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2848('0x13'));var logger=require('../../config/logger')(_0x2848('0x14'));var utils=require(_0x2848('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2848('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xab23cb,_0x20dce1){_0x20dce1=_0x20dce1||0xcc;return function(_0x7b2d96){if(_0x7b2d96){return _0xab23cb[_0x2848('0x17')](_0x20dce1);}return _0xab23cb['status'](_0x20dce1)[_0x2848('0x18')]();};}function respondWithResult(_0x1c65e5,_0x5a2c74){_0x5a2c74=_0x5a2c74||0xc8;return function(_0x2435c5){if(_0x2435c5){return _0x1c65e5[_0x2848('0x19')](_0x5a2c74)[_0x2848('0x1a')](_0x2435c5);}};}function respondWithFilteredResult(_0xcc3c4f,_0x5ccf37){return function(_0x3db708){if(_0x3db708){var _0x4327fb=typeof _0x5ccf37[_0x2848('0x1b')]==='undefined'&&typeof _0x5ccf37[_0x2848('0x1c')]===_0x2848('0x1d');var _0xa61cf8=_0x3db708[_0x2848('0x1e')];var _0x1d79a9=_0x4327fb?0x0:_0x5ccf37[_0x2848('0x1b')];var _0x2105ba=_0x4327fb?_0x3db708['count']:_0x5ccf37[_0x2848('0x1b')]+_0x5ccf37['limit'];var _0x1acea8;if(_0x2105ba>=_0xa61cf8){_0x2105ba=_0xa61cf8;_0x1acea8=0xc8;}else{_0x1acea8=0xce;}_0xcc3c4f[_0x2848('0x19')](_0x1acea8);return _0xcc3c4f['set'](_0x2848('0x1f'),_0x1d79a9+'-'+_0x2105ba+'/'+_0xa61cf8)[_0x2848('0x1a')](_0x3db708);}return null;};}function patchUpdates(_0x173caf){return function(_0x24109f){try{jsonpatch[_0x2848('0x20')](_0x24109f,_0x173caf,!![]);}catch(_0x5b3c0d){return BPromise[_0x2848('0x21')](_0x5b3c0d);}return _0x24109f[_0x2848('0x22')]();};}function saveUpdates(_0x935994,_0x2b594e){return function(_0x122222){if(_0x122222){return _0x122222['update'](_0x935994)[_0x2848('0x23')](function(_0x16b632){return _0x16b632;});}return null;};}function removeEntity(_0xb25748,_0x41c105){return function(_0x15c672){if(_0x15c672){return _0x15c672[_0x2848('0x24')]()['then'](function(){_0xb25748[_0x2848('0x19')](0xcc)[_0x2848('0x18')]();});}};}function handleEntityNotFound(_0x55d35e,_0x56e6f5){return function(_0x877c4b){if(!_0x877c4b){_0x55d35e['sendStatus'](0x194);}return _0x877c4b;};}function handleError(_0x23cd99,_0x21b510){_0x21b510=_0x21b510||0x1f4;return function(_0x4bdecb){logger[_0x2848('0x25')](_0x4bdecb[_0x2848('0x26')]);if(_0x4bdecb[_0x2848('0x27')]){delete _0x4bdecb[_0x2848('0x27')];}_0x23cd99[_0x2848('0x19')](_0x21b510)[_0x2848('0x28')](_0x4bdecb);};}exports['index']=function(_0x439edb,_0xd61aa7){var _0x1c61a4={},_0x24db13={},_0x2f28e3={'count':0x0,'rows':[]};var _0x443d05=_['map'](db[_0x2848('0x29')]['rawAttributes'],function(_0xac8645){return{'name':_0xac8645[_0x2848('0x2a')],'type':_0xac8645['type'][_0x2848('0x2b')]};});_0x24db13['model']=_['map'](_0x443d05,'name');_0x24db13[_0x2848('0x2c')]=_[_0x2848('0x2d')](_0x439edb[_0x2848('0x2c')]);_0x24db13[_0x2848('0x2e')]=_['intersection'](_0x24db13[_0x2848('0x2f')],_0x24db13['query']);_0x1c61a4[_0x2848('0x30')]=_[_0x2848('0x31')](_0x24db13[_0x2848('0x2f')],qs[_0x2848('0x32')](_0x439edb[_0x2848('0x2c')][_0x2848('0x32')]));_0x1c61a4[_0x2848('0x30')]=_0x1c61a4[_0x2848('0x30')][_0x2848('0x33')]?_0x1c61a4['attributes']:_0x24db13[_0x2848('0x2f')];if(!_0x439edb[_0x2848('0x2c')][_0x2848('0x34')]('nolimit')){_0x1c61a4[_0x2848('0x1c')]=qs[_0x2848('0x1c')](_0x439edb['query'][_0x2848('0x1c')]);_0x1c61a4[_0x2848('0x1b')]=qs[_0x2848('0x1b')](_0x439edb['query'][_0x2848('0x1b')]);}_0x1c61a4['order']=qs[_0x2848('0x35')](_0x439edb[_0x2848('0x2c')][_0x2848('0x35')]);_0x1c61a4[_0x2848('0x36')]=qs[_0x2848('0x2e')](_[_0x2848('0x37')](_0x439edb[_0x2848('0x2c')],_0x24db13[_0x2848('0x2e')]),_0x443d05);if(_0x439edb[_0x2848('0x2c')][_0x2848('0x38')]){_0x1c61a4[_0x2848('0x36')]=_['merge'](_0x1c61a4[_0x2848('0x36')],{'$or':_['map'](_0x443d05,function(_0x342ac8){if(_0x342ac8['type']!==_0x2848('0x39')){var _0x3a666c={};_0x3a666c[_0x342ac8[_0x2848('0x27')]]={'$like':'%'+_0x439edb[_0x2848('0x2c')][_0x2848('0x38')]+'%'};return _0x3a666c;}})});}_0x1c61a4=_[_0x2848('0x3a')]({},_0x1c61a4,_0x439edb[_0x2848('0x3b')]);var _0x1dfd48={'where':_0x1c61a4[_0x2848('0x36')]};return db['SquareRecording'][_0x2848('0x1e')](_0x1dfd48)['then'](function(_0x32c9c4){_0x2f28e3[_0x2848('0x1e')]=_0x32c9c4;if(_0x439edb[_0x2848('0x2c')][_0x2848('0x3c')]){_0x1c61a4[_0x2848('0x3d')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x1c61a4);})[_0x2848('0x23')](function(_0x2eb073){_0x2f28e3[_0x2848('0x3e')]=_0x2eb073;return _0x2f28e3;})[_0x2848('0x23')](respondWithFilteredResult(_0xd61aa7,_0x1c61a4))['catch'](handleError(_0xd61aa7,null));};exports['show']=function(_0x37e2dc,_0x46e5a7){var _0x12c5da={'raw':!![],'where':{'id':_0x37e2dc['params']['id']}},_0x29c078={};_0x29c078['model']=_[_0x2848('0x2d')](db[_0x2848('0x29')]['rawAttributes']);_0x29c078['query']=_[_0x2848('0x2d')](_0x37e2dc[_0x2848('0x2c')]);_0x29c078['filters']=_[_0x2848('0x31')](_0x29c078[_0x2848('0x2f')],_0x29c078[_0x2848('0x2c')]);_0x12c5da[_0x2848('0x30')]=_[_0x2848('0x31')](_0x29c078['model'],qs[_0x2848('0x32')](_0x37e2dc[_0x2848('0x2c')][_0x2848('0x32')]));_0x12c5da[_0x2848('0x30')]=_0x12c5da[_0x2848('0x30')][_0x2848('0x33')]?_0x12c5da['attributes']:_0x29c078[_0x2848('0x2f')];if(_0x37e2dc[_0x2848('0x2c')][_0x2848('0x3c')]){_0x12c5da[_0x2848('0x3d')]=[{'all':!![]}];}_0x12c5da=_[_0x2848('0x3a')]({},_0x12c5da,_0x37e2dc[_0x2848('0x3b')]);return db[_0x2848('0x29')][_0x2848('0x3f')](_0x12c5da)['then'](handleEntityNotFound(_0x46e5a7,null))[_0x2848('0x23')](respondWithResult(_0x46e5a7,null))[_0x2848('0x40')](handleError(_0x46e5a7,null));};exports[_0x2848('0x41')]=function(_0x18c3c0,_0x261611){return db[_0x2848('0x29')][_0x2848('0x41')](_0x18c3c0['body'],{})[_0x2848('0x23')](respondWithResult(_0x261611,0xc9))[_0x2848('0x40')](handleError(_0x261611,null));};exports['update']=function(_0x1976f1,_0x567d7b){if(_0x1976f1[_0x2848('0x42')]['id']){delete _0x1976f1[_0x2848('0x42')]['id'];}return db[_0x2848('0x29')][_0x2848('0x3f')]({'where':{'id':_0x1976f1[_0x2848('0x43')]['id']}})['then'](handleEntityNotFound(_0x567d7b,null))[_0x2848('0x23')](saveUpdates(_0x1976f1[_0x2848('0x42')],null))[_0x2848('0x23')](respondWithResult(_0x567d7b,null))[_0x2848('0x40')](handleError(_0x567d7b,null));};exports['download']=function(_0x2d4574,_0x146356,_0x32aae4){var _0x5a0d00=require(_0x2848('0x44'));var _0x5b42d9=![];var _0x688344={};if(_0x2d4574[_0x2848('0x2c')]['type']&&_0x2d4574['query']['type']===_0x2848('0x45')){_0x688344['uniqueid']=_0x2d4574[_0x2848('0x43')]['id'];}else{_0x688344['id']=_0x2d4574['params']['id'];}return db[_0x2848('0x29')]['find']({'where':_0x688344,'attributes':['id',_0x2848('0x46'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x146356,null))[_0x2848('0x23')](function(_0x4291a4){if(_0x4291a4){var _0x2827f1=_0x4291a4[_0x2848('0x46')];var _0x5d67db=util[_0x2848('0x47')](_0x2848('0x48'),_0x2827f1);if(fs[_0x2848('0x49')](_0x5d67db)){_0x5b42d9=!![];return _0x5a0d00[_0x2848('0x4a')](_0x5d67db,_0x2827f1,config[_0x2848('0x4b')]['recording'])['then'](function(){return _0x4291a4;});}return _0x4291a4;}})[_0x2848('0x23')](function(_0x20729d){if(_0x20729d){var _0x67e170=_0x20729d['savePath'];if(!fs['existsSync'](_0x67e170)){throw new db[(_0x2848('0x4c'))]['ValidationError'](_0x2848('0x4d'));}if(_0x20729d[_0x2848('0x4e')]){return _0x146356[_0x2848('0x4f')](_0x67e170,_0x20729d['filename']+path[_0x2848('0x50')](_0x67e170),function(){if(_0x5b42d9){fs[_0x2848('0x51')](_0x67e170);}});}else{return _0x146356[_0x2848('0x4f')](_0x67e170,function(_0x5992f3){if(_0x5b42d9){fs[_0x2848('0x51')](_0x67e170);}});}}})['catch'](function(_0x2170a3){if(_0x2170a3['message']===_0x2848('0x4d')){_0x146356['status'](0x194)[_0x2848('0x28')](_0x2848('0x52'));}else{return handleError(_0x146356,null);}});};exports[_0x2848('0x24')]=function(_0x46d3b4,_0x39c2d7){return db['SquareRecording']['find']({'where':{'id':_0x46d3b4['params']['id']}})[_0x2848('0x23')](function(_0xf9857d){if(_['isNil'](_0xf9857d)){throw new ReferenceError(_0x2848('0x53'));}return _0xf9857d;})['then'](function(_0x1c3d79){var _0x3fa1f5=_0x1c3d79[_0x2848('0x46')];logger['info'](_0x2848('0x54'),_0x3fa1f5);if(!_[_0x2848('0x55')](_0x1c3d79[_0x2848('0x46')])&&fs[_0x2848('0x49')](_0x3fa1f5)){logger[_0x2848('0x56')](_0x2848('0x57')+_0x3fa1f5+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x2848('0x58')](_0x3fa1f5);}_0x3fa1f5=_0x3fa1f5+_0x2848('0x59');if(!_[_0x2848('0x55')](_0x1c3d79[_0x2848('0x46')])&&fs[_0x2848('0x49')](_0x3fa1f5)){logger[_0x2848('0x56')]('File:\x20\x22'+_0x3fa1f5+_0x2848('0x5a'));fs['unlinkSync'](_0x3fa1f5);}return _0x1c3d79;})['then'](function(_0x4b34c6){if(!_0x4b34c6)throw new InternalError();return _0x4b34c6['destroy']();})[_0x2848('0x23')](function(){_0x39c2d7['status'](0xcc)[_0x2848('0x18')]();})[_0x2848('0x40')](handleError(_0x39c2d7,null));};
\ No newline at end of file
index 0557b07..468826b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda81=['request-promise','path','../../config/environment','./squareRecording.attributes','define','SquareRecording','square_recordings','lodash','util','../../config/logger','moment','bluebird'];(function(_0x1b734e,_0x456cd8){var _0x841eed=function(_0x15da60){while(--_0x15da60){_0x1b734e['push'](_0x1b734e['shift']());}};_0x841eed(++_0x456cd8);}(_0xda81,0x1c3));var _0x1da8=function(_0x3f69dd,_0x560dc0){_0x3f69dd=_0x3f69dd-0x0;var _0x4c657c=_0xda81[_0x3f69dd];return _0x4c657c;};'use strict';var _=require(_0x1da8('0x0'));var util=require(_0x1da8('0x1'));var logger=require(_0x1da8('0x2'))('api');var moment=require(_0x1da8('0x3'));var BPromise=require(_0x1da8('0x4'));var rp=require(_0x1da8('0x5'));var fs=require('fs');var path=require(_0x1da8('0x6'));var rimraf=require('rimraf');var config=require(_0x1da8('0x7'));var attributes=require(_0x1da8('0x8'));module['exports']=function(_0x1aef7a,_0x57e8f6){return _0x1aef7a[_0x1da8('0x9')](_0x1da8('0xa'),attributes,{'tableName':_0x1da8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0755=['rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xc4cc56,_0x8e32b1){var _0x2956ed=function(_0x1b9afd){while(--_0x1b9afd){_0xc4cc56['push'](_0xc4cc56['shift']());}};_0x2956ed(++_0x8e32b1);}(_0x0755,0x7c));var _0x5075=function(_0x4a8b8b,_0x5a8133){_0x4a8b8b=_0x4a8b8b-0x0;var _0x69134a=_0x0755[_0x4a8b8b];return _0x69134a;};'use strict';var _=require(_0x5075('0x0'));var util=require(_0x5075('0x1'));var logger=require(_0x5075('0x2'))(_0x5075('0x3'));var moment=require(_0x5075('0x4'));var BPromise=require(_0x5075('0x5'));var rp=require(_0x5075('0x6'));var fs=require('fs');var path=require(_0x5075('0x7'));var rimraf=require(_0x5075('0x8'));var config=require(_0x5075('0x9'));var attributes=require('./squareRecording.attributes');module[_0x5075('0xa')]=function(_0x2a7be,_0x3f4fea){return _0x2a7be[_0x5075('0xb')]('SquareRecording',attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 49d4a2b..fc19633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae76=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','result','catch','SquareRecording','create','body','options','raw','CreateSquareRecording','lodash','util'];(function(_0x516310,_0x346c3a){var _0x219e04=function(_0x596c53){while(--_0x596c53){_0x516310['push'](_0x516310['shift']());}};_0x219e04(++_0x346c3a);}(_0xae76,0x1be));var _0x6ae7=function(_0x18b978,_0x437fbd){_0x18b978=_0x18b978-0x0;var _0x30322c=_0xae76[_0x18b978];return _0x30322c;};'use strict';var _=require(_0x6ae7('0x0'));var util=require(_0x6ae7('0x1'));var moment=require(_0x6ae7('0x2'));var BPromise=require(_0x6ae7('0x3'));var rs=require(_0x6ae7('0x4'));var fs=require('fs');var Redis=require(_0x6ae7('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6ae7('0x6'));var logger=require(_0x6ae7('0x7'))(_0x6ae7('0x8'));var config=require('../../config/environment');var jayson=require(_0x6ae7('0x9'));var client=jayson['client'][_0x6ae7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fa684,_0xab5fb8,_0x569840){return new BPromise(function(_0x7cec8f,_0x3d54f0){return client[_0x6ae7('0xb')](_0x2fa684,_0x569840)[_0x6ae7('0xc')](function(_0x2ecdca){logger['info'](_0x6ae7('0xd'),_0xab5fb8,'request\x20sent');logger[_0x6ae7('0xe')](_0x6ae7('0xf'),_0xab5fb8,_0x6ae7('0x10'),JSON['stringify'](_0x2ecdca));if(_0x2ecdca[_0x6ae7('0x11')]){if(_0x2ecdca[_0x6ae7('0x11')]['code']===0x1f4){logger[_0x6ae7('0x11')]('SquareRecording,\x20%s,\x20%s',_0xab5fb8,_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);return _0x3d54f0(_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);}logger[_0x6ae7('0x11')](_0x6ae7('0xd'),_0xab5fb8,_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);return _0x7cec8f(_0x2ecdca[_0x6ae7('0x11')][_0x6ae7('0x12')]);}else{logger[_0x6ae7('0x13')](_0x6ae7('0xd'),_0xab5fb8,'request\x20sent');_0x7cec8f(_0x2ecdca[_0x6ae7('0x14')]['message']);}})[_0x6ae7('0x15')](function(_0x256b4c){logger[_0x6ae7('0x11')]('SquareRecording,\x20%s,\x20%s',_0xab5fb8,_0x256b4c);_0x3d54f0(_0x256b4c);});});}exports['CreateSquareRecording']=function(_0x21df76){var _0x58c071=this;return new Promise(function(_0x39c644,_0x4816ab){return db[_0x6ae7('0x16')][_0x6ae7('0x17')](_0x21df76[_0x6ae7('0x18')],{'raw':_0x21df76[_0x6ae7('0x19')]?_0x21df76[_0x6ae7('0x19')][_0x6ae7('0x1a')]===undefined?!![]:![]:!![]})[_0x6ae7('0xc')](function(_0x1ef8ef){logger['info'](_0x6ae7('0x1b'),_0x21df76);logger[_0x6ae7('0xe')](_0x6ae7('0x1b'),_0x21df76,JSON['stringify'](_0x1ef8ef));_0x39c644(_0x1ef8ef);})[_0x6ae7('0x15')](function(_0x24434f){logger['error'](_0x6ae7('0x1b'),_0x24434f[_0x6ae7('0x12')],_0x21df76);_0x4816ab(_0x58c071['error'](0x1f4,_0x24434f[_0x6ae7('0x12')]));});});};
\ No newline at end of file
+var _0xb138=['then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x2450bc,_0x5dbfaf){var _0xc9e64c=function(_0x256aad){while(--_0x256aad){_0x2450bc['push'](_0x2450bc['shift']());}};_0xc9e64c(++_0x5dbfaf);}(_0xb138,0x1da));var _0x8b13=function(_0x1e0d28,_0x2fd761){_0x1e0d28=_0x1e0d28-0x0;var _0x3defa3=_0xb138[_0x1e0d28];return _0x3defa3;};'use strict';var _=require(_0x8b13('0x0'));var util=require(_0x8b13('0x1'));var moment=require(_0x8b13('0x2'));var BPromise=require(_0x8b13('0x3'));var rs=require(_0x8b13('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b13('0x5'))['db'];var utils=require(_0x8b13('0x6'));var logger=require(_0x8b13('0x7'))(_0x8b13('0x8'));var config=require(_0x8b13('0x9'));var jayson=require(_0x8b13('0xa'));var client=jayson['client'][_0x8b13('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d6dcd,_0x3d3a7e,_0x485c92){return new BPromise(function(_0x55cf7d,_0x48e56b){return client['request'](_0x3d6dcd,_0x485c92)[_0x8b13('0xc')](function(_0x576353){logger[_0x8b13('0xd')](_0x8b13('0xe'),_0x3d3a7e,_0x8b13('0xf'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x3d3a7e,_0x8b13('0xf'),JSON['stringify'](_0x576353));if(_0x576353[_0x8b13('0x10')]){if(_0x576353[_0x8b13('0x10')][_0x8b13('0x11')]===0x1f4){logger[_0x8b13('0x10')](_0x8b13('0xe'),_0x3d3a7e,_0x576353[_0x8b13('0x10')][_0x8b13('0x12')]);return _0x48e56b(_0x576353[_0x8b13('0x10')][_0x8b13('0x12')]);}logger[_0x8b13('0x10')]('SquareRecording,\x20%s,\x20%s',_0x3d3a7e,_0x576353['error'][_0x8b13('0x12')]);return _0x55cf7d(_0x576353[_0x8b13('0x10')][_0x8b13('0x12')]);}else{logger[_0x8b13('0xd')](_0x8b13('0xe'),_0x3d3a7e,_0x8b13('0xf'));_0x55cf7d(_0x576353[_0x8b13('0x13')]['message']);}})[_0x8b13('0x14')](function(_0x7e80c2){logger[_0x8b13('0x10')](_0x8b13('0xe'),_0x3d3a7e,_0x7e80c2);_0x48e56b(_0x7e80c2);});});}exports[_0x8b13('0x15')]=function(_0xca6d65){var _0x21539b=this;return new Promise(function(_0x17757b,_0x5edea6){return db[_0x8b13('0x16')][_0x8b13('0x17')](_0xca6d65['body'],{'raw':_0xca6d65[_0x8b13('0x18')]?_0xca6d65['options'][_0x8b13('0x19')]===undefined?!![]:![]:!![]})[_0x8b13('0xc')](function(_0x2f0ca5){logger[_0x8b13('0xd')]('CreateSquareRecording',_0xca6d65);logger['debug'](_0x8b13('0x15'),_0xca6d65,JSON[_0x8b13('0x1a')](_0x2f0ca5));_0x17757b(_0x2f0ca5);})[_0x8b13('0x14')](function(_0x242e94){logger[_0x8b13('0x10')]('CreateSquareRecording',_0x242e94[_0x8b13('0x12')],_0xca6d65);_0x5edea6(_0x21539b['error'](0x1f4,_0x242e94[_0x8b13('0x12')]));});});};
\ No newline at end of file
index 4c214c9..dff6a1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x4fa4d1,_0x5b4c4e){var _0x6b8906=function(_0x411762){while(--_0x411762){_0x4fa4d1['push'](_0x4fa4d1['shift']());}};_0x6b8906(++_0x5b4c4e);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x47bd3e,_0x2a54d9){var _0x22b740=function(_0x2f7353){while(--_0x2f7353){_0x47bd3e['push'](_0x47bd3e['shift']());}};_0x22b740(++_0x2a54d9);}(_0xe706,0xa3));var _0x6e70=function(_0x1f1283,_0x1bea3b){_0x1f1283=_0x1f1283-0x0;var _0x205041=_0xe706[_0x1f1283];return _0x205041;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index 186fbd8..34d17d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e47=['sequelize','exports','STRING','DATE','BOOLEAN'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x3e47,0x1d6));var _0x73e4=function(_0x539ce2,_0x54efa0){_0x539ce2=_0x539ce2-0x0;var _0x1c85b0=_0x3e47[_0x539ce2];return _0x1c85b0;};'use strict';var Sequelize=require(_0x73e4('0x0'));module[_0x73e4('0x1')]={'network':{'type':Sequelize[_0x73e4('0x2')]},'network_script':{'type':Sequelize[_0x73e4('0x2')]},'request':{'type':Sequelize[_0x73e4('0x2')]},'channel':{'type':Sequelize[_0x73e4('0x2')]},'language':{'type':Sequelize[_0x73e4('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x73e4('0x2')]},'version':{'type':Sequelize[_0x73e4('0x2')]},'callerid':{'type':Sequelize[_0x73e4('0x2')]},'calleridname':{'type':Sequelize[_0x73e4('0x2')]},'callingpres':{'type':Sequelize[_0x73e4('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x73e4('0x2')]},'callingtns':{'type':Sequelize[_0x73e4('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x73e4('0x2')]},'priority':{'type':Sequelize[_0x73e4('0x2')]},'enhanced':{'type':Sequelize[_0x73e4('0x2')]},'accountcode':{'type':Sequelize[_0x73e4('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x73e4('0x2')]},'joinAt':{'type':Sequelize[_0x73e4('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x73e4('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x41e6=['DATE','BOOLEAN','exports','STRING'];(function(_0x215a58,_0x1d00cc){var _0x289bd5=function(_0x56094d){while(--_0x56094d){_0x215a58['push'](_0x215a58['shift']());}};_0x289bd5(++_0x1d00cc);}(_0x41e6,0x1da));var _0x641e=function(_0x101094,_0x5d3900){_0x101094=_0x101094-0x0;var _0x3d6d75=_0x41e6[_0x101094];return _0x3d6d75;};'use strict';var Sequelize=require('sequelize');module[_0x641e('0x0')]={'network':{'type':Sequelize[_0x641e('0x1')]},'network_script':{'type':Sequelize[_0x641e('0x1')]},'request':{'type':Sequelize[_0x641e('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x641e('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x641e('0x1')]},'version':{'type':Sequelize[_0x641e('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x641e('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x641e('0x1')]},'callingtns':{'type':Sequelize[_0x641e('0x1')]},'dnid':{'type':Sequelize[_0x641e('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x641e('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x641e('0x1')]},'threadid':{'type':Sequelize[_0x641e('0x1')]},'project_name':{'type':Sequelize[_0x641e('0x1')]},'joinAt':{'type':Sequelize[_0x641e('0x2')]},'leaveAt':{'type':Sequelize[_0x641e('0x2')]},'bot':{'type':Sequelize[_0x641e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index b3129ad..69077b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac72=['fast-json-patch','request-promise','moment','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','status','end','offset','limit','count','Content-Range','json','apply','update','then','destroy','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','include','find','create','body','catch','describe','eml-format','rimraf','zip-dir'];(function(_0x305c8f,_0xc5f7fb){var _0x5ddc30=function(_0x1aed6f){while(--_0x1aed6f){_0x305c8f['push'](_0x305c8f['shift']());}};_0x5ddc30(++_0xc5f7fb);}(_0xac72,0x19b));var _0x2ac7=function(_0x594de0,_0x48d80d){_0x594de0=_0x594de0-0x0;var _0x4816f9=_0xac72[_0x594de0];return _0x4816f9;};'use strict';var emlformat=require(_0x2ac7('0x0'));var rimraf=require(_0x2ac7('0x1'));var zipdir=require(_0x2ac7('0x2'));var jsonpatch=require(_0x2ac7('0x3'));var rp=require(_0x2ac7('0x4'));var moment=require(_0x2ac7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2ac7('0x6'));var path=require(_0x2ac7('0x7'));var sox=require('sox');var csv=require(_0x2ac7('0x8'));var ejs=require(_0x2ac7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2ac7('0xa'));var squel=require(_0x2ac7('0xb'));var crypto=require('crypto');var jsforce=require(_0x2ac7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2ac7('0x8'));var querystring=require(_0x2ac7('0xd'));var Papa=require(_0x2ac7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2ac7('0xf'));var as=require(_0x2ac7('0x10'));var hardwareService=require(_0x2ac7('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x2ac7('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x2ac7('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10d7e7,_0x40c4ef){_0x40c4ef=_0x40c4ef||0xcc;return function(_0x4c59d5){if(_0x4c59d5){return _0x10d7e7[_0x2ac7('0x14')](_0x40c4ef);}return _0x10d7e7[_0x2ac7('0x15')](_0x40c4ef)[_0x2ac7('0x16')]();};}function respondWithResult(_0x14d13b,_0x299bdb){_0x299bdb=_0x299bdb||0xc8;return function(_0x1e6672){if(_0x1e6672){return _0x14d13b['status'](_0x299bdb)['json'](_0x1e6672);}};}function respondWithFilteredResult(_0x33cfc0,_0x1b4c16){return function(_0x32b025){if(_0x32b025){var _0xba02d1=typeof _0x1b4c16[_0x2ac7('0x17')]==='undefined'&&typeof _0x1b4c16[_0x2ac7('0x18')]==='undefined';var _0x19eda0=_0x32b025['count'];var _0x52879a=_0xba02d1?0x0:_0x1b4c16[_0x2ac7('0x17')];var _0x404b67=_0xba02d1?_0x32b025[_0x2ac7('0x19')]:_0x1b4c16['offset']+_0x1b4c16[_0x2ac7('0x18')];var _0x1aa45f;if(_0x404b67>=_0x19eda0){_0x404b67=_0x19eda0;_0x1aa45f=0xc8;}else{_0x1aa45f=0xce;}_0x33cfc0[_0x2ac7('0x15')](_0x1aa45f);return _0x33cfc0['set'](_0x2ac7('0x1a'),_0x52879a+'-'+_0x404b67+'/'+_0x19eda0)[_0x2ac7('0x1b')](_0x32b025);}return null;};}function patchUpdates(_0x5dbb40){return function(_0x176efc){try{jsonpatch[_0x2ac7('0x1c')](_0x176efc,_0x5dbb40,!![]);}catch(_0x49ca5f){return BPromise['reject'](_0x49ca5f);}return _0x176efc['save']();};}function saveUpdates(_0x27f3dc,_0x51bb8d){return function(_0x1096a6){if(_0x1096a6){return _0x1096a6[_0x2ac7('0x1d')](_0x27f3dc)[_0x2ac7('0x1e')](function(_0x542f08){return _0x542f08;});}return null;};}function removeEntity(_0xbfa920,_0x4bbd2e){return function(_0x5ad307){if(_0x5ad307){return _0x5ad307[_0x2ac7('0x1f')]()[_0x2ac7('0x1e')](function(){_0xbfa920[_0x2ac7('0x15')](0xcc)[_0x2ac7('0x16')]();});}};}function handleEntityNotFound(_0x3e53c8,_0x4a4f8e){return function(_0x38cf05){if(!_0x38cf05){_0x3e53c8[_0x2ac7('0x14')](0x194);}return _0x38cf05;};}function handleError(_0x2c5033,_0x3caa4c){_0x3caa4c=_0x3caa4c||0x1f4;return function(_0x3ef75c){logger['error'](_0x3ef75c[_0x2ac7('0x20')]);if(_0x3ef75c[_0x2ac7('0x21')]){delete _0x3ef75c[_0x2ac7('0x21')];}_0x2c5033[_0x2ac7('0x15')](_0x3caa4c)[_0x2ac7('0x22')](_0x3ef75c);};}exports[_0x2ac7('0x23')]=function(_0x22bb96,_0x24f229){var _0x3d57c6={},_0x19dd58={},_0x43f36f={'count':0x0,'rows':[]};var _0x19ae98=_[_0x2ac7('0x24')](db[_0x2ac7('0x25')][_0x2ac7('0x26')],function(_0x3d853d){return{'name':_0x3d853d[_0x2ac7('0x27')],'type':_0x3d853d[_0x2ac7('0x28')][_0x2ac7('0x29')]};});_0x19dd58[_0x2ac7('0x2a')]=_[_0x2ac7('0x24')](_0x19ae98,'name');_0x19dd58['query']=_[_0x2ac7('0x2b')](_0x22bb96[_0x2ac7('0x2c')]);_0x19dd58['filters']=_['intersection'](_0x19dd58[_0x2ac7('0x2a')],_0x19dd58[_0x2ac7('0x2c')]);_0x3d57c6[_0x2ac7('0x2d')]=_[_0x2ac7('0x2e')](_0x19dd58[_0x2ac7('0x2a')],qs[_0x2ac7('0x2f')](_0x22bb96['query'][_0x2ac7('0x2f')]));_0x3d57c6[_0x2ac7('0x2d')]=_0x3d57c6[_0x2ac7('0x2d')][_0x2ac7('0x30')]?_0x3d57c6[_0x2ac7('0x2d')]:_0x19dd58['model'];if(!_0x22bb96[_0x2ac7('0x2c')]['hasOwnProperty'](_0x2ac7('0x31'))){_0x3d57c6['limit']=qs[_0x2ac7('0x18')](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x18')]);_0x3d57c6[_0x2ac7('0x17')]=qs['offset'](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x17')]);}_0x3d57c6['order']=qs['sort'](_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x32')]);_0x3d57c6['where']=qs[_0x2ac7('0x33')](_[_0x2ac7('0x34')](_0x22bb96[_0x2ac7('0x2c')],_0x19dd58['filters']),_0x19ae98);if(_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x35')]){_0x3d57c6[_0x2ac7('0x36')]=_['merge'](_0x3d57c6['where'],{'$or':_[_0x2ac7('0x24')](_0x19ae98,function(_0x6388ed){if(_0x6388ed['type']!==_0x2ac7('0x37')){var _0x3a262f={};_0x3a262f[_0x6388ed['name']]={'$like':'%'+_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x35')]+'%'};return _0x3a262f;}})});}_0x3d57c6=_[_0x2ac7('0x38')]({},_0x3d57c6,_0x22bb96[_0x2ac7('0x39')]);var _0xada1be={'where':_0x3d57c6[_0x2ac7('0x36')]};return db[_0x2ac7('0x25')][_0x2ac7('0x19')](_0xada1be)[_0x2ac7('0x1e')](function(_0x1d2d5b){_0x43f36f[_0x2ac7('0x19')]=_0x1d2d5b;if(_0x22bb96[_0x2ac7('0x2c')][_0x2ac7('0x3a')]){_0x3d57c6['include']=[{'all':!![]}];}return db['SquareReport'][_0x2ac7('0x3b')](_0x3d57c6);})['then'](function(_0x265488){_0x43f36f[_0x2ac7('0x3c')]=_0x265488;return _0x43f36f;})[_0x2ac7('0x1e')](respondWithFilteredResult(_0x24f229,_0x3d57c6))['catch'](handleError(_0x24f229,null));};exports[_0x2ac7('0x3d')]=function(_0x1d503d,_0x529e7b){var _0x45410d={'raw':!![],'where':{'id':_0x1d503d[_0x2ac7('0x3e')]['id']}},_0x2ccb98={};_0x2ccb98['model']=_['keys'](db[_0x2ac7('0x25')][_0x2ac7('0x26')]);_0x2ccb98[_0x2ac7('0x2c')]=_[_0x2ac7('0x2b')](_0x1d503d['query']);_0x2ccb98[_0x2ac7('0x33')]=_['intersection'](_0x2ccb98['model'],_0x2ccb98[_0x2ac7('0x2c')]);_0x45410d[_0x2ac7('0x2d')]=_[_0x2ac7('0x2e')](_0x2ccb98[_0x2ac7('0x2a')],qs[_0x2ac7('0x2f')](_0x1d503d[_0x2ac7('0x2c')]['fields']));_0x45410d[_0x2ac7('0x2d')]=_0x45410d['attributes'][_0x2ac7('0x30')]?_0x45410d[_0x2ac7('0x2d')]:_0x2ccb98[_0x2ac7('0x2a')];if(_0x1d503d[_0x2ac7('0x2c')][_0x2ac7('0x3a')]){_0x45410d[_0x2ac7('0x3f')]=[{'all':!![]}];}_0x45410d=_['merge']({},_0x45410d,_0x1d503d[_0x2ac7('0x39')]);return db['SquareReport'][_0x2ac7('0x40')](_0x45410d)[_0x2ac7('0x1e')](handleEntityNotFound(_0x529e7b,null))[_0x2ac7('0x1e')](respondWithResult(_0x529e7b,null))['catch'](handleError(_0x529e7b,null));};exports[_0x2ac7('0x41')]=function(_0x248d0b,_0x4603c8){return db[_0x2ac7('0x25')][_0x2ac7('0x41')](_0x248d0b[_0x2ac7('0x42')],{})[_0x2ac7('0x1e')](respondWithResult(_0x4603c8,0xc9))[_0x2ac7('0x43')](handleError(_0x4603c8,null));};exports[_0x2ac7('0x1d')]=function(_0x5493f0,_0x5bcb62){if(_0x5493f0[_0x2ac7('0x42')]['id']){delete _0x5493f0[_0x2ac7('0x42')]['id'];}return db[_0x2ac7('0x25')]['find']({'where':{'id':_0x5493f0[_0x2ac7('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5bcb62,null))['then'](saveUpdates(_0x5493f0[_0x2ac7('0x42')],null))['then'](respondWithResult(_0x5bcb62,null))[_0x2ac7('0x43')](handleError(_0x5bcb62,null));};exports[_0x2ac7('0x1f')]=function(_0x44753b,_0x2e3630){return db['SquareReport']['find']({'where':{'id':_0x44753b[_0x2ac7('0x3e')]['id']}})[_0x2ac7('0x1e')](handleEntityNotFound(_0x2e3630,null))[_0x2ac7('0x1e')](removeEntity(_0x2e3630,null))[_0x2ac7('0x43')](handleError(_0x2e3630,null));};exports[_0x2ac7('0x44')]=function(_0x3df1d9,_0x479aa9){return db[_0x2ac7('0x25')]['describe']()[_0x2ac7('0x1e')](respondWithResult(_0x479aa9,null))[_0x2ac7('0x43')](handleError(_0x479aa9,null));};
\ No newline at end of file
+var _0x22f0=['fields','length','nolimit','sort','pick','where','merge','VIRTUAL','includeAll','include','rows','catch','params','find','create','body','describe','eml-format','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x22f0,0x131));var _0x022f=function(_0x4ff00c,_0x7e938b){_0x4ff00c=_0x4ff00c-0x0;var _0x5dca5d=_0x22f0[_0x4ff00c];return _0x5dca5d;};'use strict';var emlformat=require(_0x022f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x022f('0x1'));var rp=require(_0x022f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x022f('0x3'));var path=require(_0x022f('0x4'));var sox=require(_0x022f('0x5'));var csv=require(_0x022f('0x6'));var ejs=require(_0x022f('0x7'));var fs=require('fs');var fs_extra=require(_0x022f('0x8'));var _=require(_0x022f('0x9'));var squel=require(_0x022f('0xa'));var crypto=require(_0x022f('0xb'));var jsforce=require(_0x022f('0xc'));var deskjs=require(_0x022f('0xd'));var toCsv=require(_0x022f('0x6'));var querystring=require('querystring');var Papa=require(_0x022f('0xe'));var Redis=require(_0x022f('0xf'));var authService=require(_0x022f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x022f('0x11'));var hardwareService=require(_0x022f('0x12'));var logger=require(_0x022f('0x13'))(_0x022f('0x14'));var utils=require(_0x022f('0x15'));var config=require(_0x022f('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b7496,_0xc6b65c){_0xc6b65c=_0xc6b65c||0xcc;return function(_0x42fc67){if(_0x42fc67){return _0x2b7496[_0x022f('0x17')](_0xc6b65c);}return _0x2b7496[_0x022f('0x18')](_0xc6b65c)[_0x022f('0x19')]();};}function respondWithResult(_0x2f9f2a,_0x1a0716){_0x1a0716=_0x1a0716||0xc8;return function(_0x288082){if(_0x288082){return _0x2f9f2a[_0x022f('0x18')](_0x1a0716)[_0x022f('0x1a')](_0x288082);}};}function respondWithFilteredResult(_0x57f3a9,_0xba3801){return function(_0x4cafaf){if(_0x4cafaf){var _0x2527fd=typeof _0xba3801[_0x022f('0x1b')]===_0x022f('0x1c')&&typeof _0xba3801[_0x022f('0x1d')]===_0x022f('0x1c');var _0x284b31=_0x4cafaf[_0x022f('0x1e')];var _0x4d065b=_0x2527fd?0x0:_0xba3801[_0x022f('0x1b')];var _0x2e4c06=_0x2527fd?_0x4cafaf[_0x022f('0x1e')]:_0xba3801[_0x022f('0x1b')]+_0xba3801['limit'];var _0x1722bc;if(_0x2e4c06>=_0x284b31){_0x2e4c06=_0x284b31;_0x1722bc=0xc8;}else{_0x1722bc=0xce;}_0x57f3a9[_0x022f('0x18')](_0x1722bc);return _0x57f3a9[_0x022f('0x1f')](_0x022f('0x20'),_0x4d065b+'-'+_0x2e4c06+'/'+_0x284b31)[_0x022f('0x1a')](_0x4cafaf);}return null;};}function patchUpdates(_0x5de2cf){return function(_0x378d9d){try{jsonpatch[_0x022f('0x21')](_0x378d9d,_0x5de2cf,!![]);}catch(_0x581b3b){return BPromise[_0x022f('0x22')](_0x581b3b);}return _0x378d9d['save']();};}function saveUpdates(_0x2c36ee,_0x4c8f08){return function(_0x19d7f3){if(_0x19d7f3){return _0x19d7f3[_0x022f('0x23')](_0x2c36ee)['then'](function(_0xe58e94){return _0xe58e94;});}return null;};}function removeEntity(_0x1b3dfa,_0x4c3ae9){return function(_0x52c8af){if(_0x52c8af){return _0x52c8af[_0x022f('0x24')]()[_0x022f('0x25')](function(){_0x1b3dfa['status'](0xcc)[_0x022f('0x19')]();});}};}function handleEntityNotFound(_0x535f93,_0x149b0a){return function(_0x120499){if(!_0x120499){_0x535f93['sendStatus'](0x194);}return _0x120499;};}function handleError(_0x24166d,_0x740a68){_0x740a68=_0x740a68||0x1f4;return function(_0x39cccd){logger[_0x022f('0x26')](_0x39cccd[_0x022f('0x27')]);if(_0x39cccd[_0x022f('0x28')]){delete _0x39cccd[_0x022f('0x28')];}_0x24166d[_0x022f('0x18')](_0x740a68)[_0x022f('0x29')](_0x39cccd);};}exports[_0x022f('0x2a')]=function(_0x4f024b,_0x42bdba){var _0x48c275={},_0x2c5eb7={},_0x19899a={'count':0x0,'rows':[]};var _0x4f6df3=_[_0x022f('0x2b')](db[_0x022f('0x2c')][_0x022f('0x2d')],function(_0x3abade){return{'name':_0x3abade[_0x022f('0x2e')],'type':_0x3abade[_0x022f('0x2f')][_0x022f('0x30')]};});_0x2c5eb7['model']=_[_0x022f('0x2b')](_0x4f6df3,_0x022f('0x28'));_0x2c5eb7[_0x022f('0x31')]=_[_0x022f('0x32')](_0x4f024b['query']);_0x2c5eb7[_0x022f('0x33')]=_[_0x022f('0x34')](_0x2c5eb7[_0x022f('0x35')],_0x2c5eb7[_0x022f('0x31')]);_0x48c275[_0x022f('0x36')]=_['intersection'](_0x2c5eb7[_0x022f('0x35')],qs['fields'](_0x4f024b[_0x022f('0x31')][_0x022f('0x37')]));_0x48c275[_0x022f('0x36')]=_0x48c275[_0x022f('0x36')][_0x022f('0x38')]?_0x48c275[_0x022f('0x36')]:_0x2c5eb7[_0x022f('0x35')];if(!_0x4f024b['query']['hasOwnProperty'](_0x022f('0x39'))){_0x48c275[_0x022f('0x1d')]=qs['limit'](_0x4f024b[_0x022f('0x31')][_0x022f('0x1d')]);_0x48c275[_0x022f('0x1b')]=qs[_0x022f('0x1b')](_0x4f024b[_0x022f('0x31')][_0x022f('0x1b')]);}_0x48c275['order']=qs[_0x022f('0x3a')](_0x4f024b[_0x022f('0x31')][_0x022f('0x3a')]);_0x48c275['where']=qs[_0x022f('0x33')](_[_0x022f('0x3b')](_0x4f024b[_0x022f('0x31')],_0x2c5eb7['filters']),_0x4f6df3);if(_0x4f024b[_0x022f('0x31')]['filter']){_0x48c275[_0x022f('0x3c')]=_[_0x022f('0x3d')](_0x48c275[_0x022f('0x3c')],{'$or':_[_0x022f('0x2b')](_0x4f6df3,function(_0x2e6c5c){if(_0x2e6c5c['type']!==_0x022f('0x3e')){var _0x211f58={};_0x211f58[_0x2e6c5c[_0x022f('0x28')]]={'$like':'%'+_0x4f024b['query']['filter']+'%'};return _0x211f58;}})});}_0x48c275=_[_0x022f('0x3d')]({},_0x48c275,_0x4f024b['options']);var _0x172201={'where':_0x48c275[_0x022f('0x3c')]};return db['SquareReport'][_0x022f('0x1e')](_0x172201)[_0x022f('0x25')](function(_0x2b6e34){_0x19899a['count']=_0x2b6e34;if(_0x4f024b[_0x022f('0x31')][_0x022f('0x3f')]){_0x48c275[_0x022f('0x40')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x48c275);})['then'](function(_0x3f88d9){_0x19899a[_0x022f('0x41')]=_0x3f88d9;return _0x19899a;})[_0x022f('0x25')](respondWithFilteredResult(_0x42bdba,_0x48c275))[_0x022f('0x42')](handleError(_0x42bdba,null));};exports['show']=function(_0x2f04e4,_0x5a583a){var _0x1cf4cc={'raw':!![],'where':{'id':_0x2f04e4[_0x022f('0x43')]['id']}},_0x38a021={};_0x38a021[_0x022f('0x35')]=_['keys'](db[_0x022f('0x2c')][_0x022f('0x2d')]);_0x38a021[_0x022f('0x31')]=_[_0x022f('0x32')](_0x2f04e4['query']);_0x38a021[_0x022f('0x33')]=_[_0x022f('0x34')](_0x38a021[_0x022f('0x35')],_0x38a021[_0x022f('0x31')]);_0x1cf4cc[_0x022f('0x36')]=_['intersection'](_0x38a021[_0x022f('0x35')],qs[_0x022f('0x37')](_0x2f04e4[_0x022f('0x31')][_0x022f('0x37')]));_0x1cf4cc[_0x022f('0x36')]=_0x1cf4cc[_0x022f('0x36')][_0x022f('0x38')]?_0x1cf4cc[_0x022f('0x36')]:_0x38a021[_0x022f('0x35')];if(_0x2f04e4[_0x022f('0x31')]['includeAll']){_0x1cf4cc['include']=[{'all':!![]}];}_0x1cf4cc=_[_0x022f('0x3d')]({},_0x1cf4cc,_0x2f04e4['options']);return db[_0x022f('0x2c')][_0x022f('0x44')](_0x1cf4cc)[_0x022f('0x25')](handleEntityNotFound(_0x5a583a,null))[_0x022f('0x25')](respondWithResult(_0x5a583a,null))[_0x022f('0x42')](handleError(_0x5a583a,null));};exports['create']=function(_0x2862c7,_0x46c077){return db['SquareReport'][_0x022f('0x45')](_0x2862c7[_0x022f('0x46')],{})[_0x022f('0x25')](respondWithResult(_0x46c077,0xc9))['catch'](handleError(_0x46c077,null));};exports[_0x022f('0x23')]=function(_0x5ba4e8,_0x275e1e){if(_0x5ba4e8['body']['id']){delete _0x5ba4e8[_0x022f('0x46')]['id'];}return db[_0x022f('0x2c')][_0x022f('0x44')]({'where':{'id':_0x5ba4e8[_0x022f('0x43')]['id']}})[_0x022f('0x25')](handleEntityNotFound(_0x275e1e,null))['then'](saveUpdates(_0x5ba4e8[_0x022f('0x46')],null))[_0x022f('0x25')](respondWithResult(_0x275e1e,null))[_0x022f('0x42')](handleError(_0x275e1e,null));};exports[_0x022f('0x24')]=function(_0x54290d,_0x1df274){return db[_0x022f('0x2c')][_0x022f('0x44')]({'where':{'id':_0x54290d[_0x022f('0x43')]['id']}})[_0x022f('0x25')](handleEntityNotFound(_0x1df274,null))['then'](removeEntity(_0x1df274,null))[_0x022f('0x42')](handleError(_0x1df274,null));};exports[_0x022f('0x47')]=function(_0x5b3590,_0x1fae71){return db[_0x022f('0x2c')][_0x022f('0x47')]()[_0x022f('0x25')](respondWithResult(_0x1fae71,null))[_0x022f('0x42')](handleError(_0x1fae71,null));};
\ No newline at end of file
index 501a70c..1c9dd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92f9=['uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square'];(function(_0x46199d,_0x217376){var _0x138dee=function(_0x4f98bf){while(--_0x4f98bf){_0x46199d['push'](_0x46199d['shift']());}};_0x138dee(++_0x217376);}(_0x92f9,0xa3));var _0x992f=function(_0x3848b8,_0x2bb0b9){_0x3848b8=_0x3848b8-0x0;var _0x43bc25=_0x92f9[_0x3848b8];return _0x43bc25;};'use strict';var _=require(_0x992f('0x0'));var util=require(_0x992f('0x1'));var logger=require(_0x992f('0x2'))(_0x992f('0x3'));var moment=require('moment');var BPromise=require(_0x992f('0x4'));var rp=require(_0x992f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x992f('0x6'));var config=require(_0x992f('0x7'));var attributes=require(_0x992f('0x8'));module[_0x992f('0x9')]=function(_0x561387,_0x3b0173){return _0x561387[_0x992f('0xa')](_0x992f('0xb'),attributes,{'tableName':_0x992f('0xc'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x992f('0xd'),_0x992f('0xe')]},{'name':_0x992f('0xf'),'fields':[_0x992f('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x762c=['path','../../config/environment','./squareReport.attributes','exports','define','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','api','moment','bluebird','request-promise'];(function(_0x557907,_0x32ed9c){var _0x4efbb7=function(_0x3afe22){while(--_0x3afe22){_0x557907['push'](_0x557907['shift']());}};_0x4efbb7(++_0x32ed9c);}(_0x762c,0x1ca));var _0xc762=function(_0x3d2d21,_0x137bcb){_0x3d2d21=_0x3d2d21-0x0;var _0x54718f=_0x762c[_0x3d2d21];return _0x54718f;};'use strict';var _=require(_0xc762('0x0'));var util=require(_0xc762('0x1'));var logger=require('../../config/logger')(_0xc762('0x2'));var moment=require(_0xc762('0x3'));var BPromise=require(_0xc762('0x4'));var rp=require(_0xc762('0x5'));var fs=require('fs');var path=require(_0xc762('0x6'));var rimraf=require('rimraf');var config=require(_0xc762('0x7'));var attributes=require(_0xc762('0x8'));module[_0xc762('0x9')]=function(_0x16334e,_0x15670c){return _0x16334e[_0xc762('0xa')]('SquareReport',attributes,{'tableName':_0xc762('0xb'),'paranoid':![],'indexes':[{'name':_0xc762('0xc'),'fields':[_0xc762('0xd'),_0xc762('0xe')]},{'name':_0xc762('0xf'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index c5223b0..5e7e064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e2=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','update','where','attributes','limit','UpdateSquareReport','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x314a91,_0x1108eb){var _0x55e382=function(_0x46ea6c){while(--_0x46ea6c){_0x314a91['push'](_0x314a91['shift']());}};_0x55e382(++_0x1108eb);}(_0x24e2,0x166));var _0x224e=function(_0x475955,_0x4cafa6){_0x475955=_0x475955-0x0;var _0x1aeb55=_0x24e2[_0x475955];return _0x1aeb55;};'use strict';var _=require('lodash');var util=require(_0x224e('0x0'));var moment=require('moment');var BPromise=require(_0x224e('0x1'));var rs=require(_0x224e('0x2'));var fs=require('fs');var Redis=require(_0x224e('0x3'));var db=require(_0x224e('0x4'))['db'];var utils=require(_0x224e('0x5'));var logger=require(_0x224e('0x6'))(_0x224e('0x7'));var config=require(_0x224e('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x224e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4371a6,_0x46b3d9,_0x28c5b9){return new BPromise(function(_0x46eaf8,_0x49b1eb){return client[_0x224e('0xa')](_0x4371a6,_0x28c5b9)[_0x224e('0xb')](function(_0x65b6a7){logger[_0x224e('0xc')](_0x224e('0xd'),_0x46b3d9,_0x224e('0xe'));logger[_0x224e('0xf')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x46b3d9,_0x224e('0xe'),JSON[_0x224e('0x10')](_0x65b6a7));if(_0x65b6a7[_0x224e('0x11')]){if(_0x65b6a7[_0x224e('0x11')][_0x224e('0x12')]===0x1f4){logger[_0x224e('0x11')](_0x224e('0xd'),_0x46b3d9,_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);return _0x49b1eb(_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);}logger['error'](_0x224e('0xd'),_0x46b3d9,_0x65b6a7['error'][_0x224e('0x13')]);return _0x46eaf8(_0x65b6a7[_0x224e('0x11')][_0x224e('0x13')]);}else{logger['info'](_0x224e('0xd'),_0x46b3d9,_0x224e('0xe'));_0x46eaf8(_0x65b6a7[_0x224e('0x14')][_0x224e('0x13')]);}})[_0x224e('0x15')](function(_0x39e121){logger[_0x224e('0x11')](_0x224e('0xd'),_0x46b3d9,_0x39e121);_0x49b1eb(_0x39e121);});});}exports[_0x224e('0x16')]=function(_0x2913c2){var _0x5c6662=this;return new Promise(function(_0x3f1a15,_0x129113){return db[_0x224e('0x17')][_0x224e('0x18')](_0x2913c2[_0x224e('0x19')],{'raw':_0x2913c2['options']?_0x2913c2[_0x224e('0x1a')][_0x224e('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x3de5d0){logger[_0x224e('0xc')](_0x224e('0x16'),_0x2913c2);logger['debug']('CreateSquareReport',_0x2913c2,JSON[_0x224e('0x10')](_0x3de5d0));_0x3f1a15(_0x3de5d0);})[_0x224e('0x15')](function(_0x3e8003){logger[_0x224e('0x11')](_0x224e('0x16'),_0x3e8003[_0x224e('0x13')],_0x2913c2);_0x129113(_0x5c6662[_0x224e('0x11')](0x1f4,_0x3e8003[_0x224e('0x13')]));});});};exports['UpdateSquareReport']=function(_0x567bf2){var _0x539707=this;return new Promise(function(_0x1fd601,_0xeef564){return db[_0x224e('0x17')][_0x224e('0x1c')](_0x567bf2['body'],{'raw':_0x567bf2['options']?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x567bf2[_0x224e('0x1a')]?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1d')]||null:null,'attributes':_0x567bf2[_0x224e('0x1a')]?_0x567bf2['options'][_0x224e('0x1e')]||null:null,'limit':_0x567bf2[_0x224e('0x1a')]?_0x567bf2[_0x224e('0x1a')][_0x224e('0x1f')]||null:null})['then'](function(_0x319a65){logger[_0x224e('0xc')](_0x224e('0x20'),_0x567bf2);logger['debug']('UpdateSquareReport',_0x567bf2,JSON[_0x224e('0x10')](_0x319a65));_0x1fd601(_0x319a65);})[_0x224e('0x15')](function(_0x5a2072){logger['error'](_0x224e('0x20'),_0x5a2072[_0x224e('0x13')],_0x567bf2);_0xeef564(_0x539707[_0x224e('0x11')](0x1f4,_0x5a2072['message']));});});};
\ No newline at end of file
+var _0x88d6=['stringify','error','code','message','catch','CreateSquareReport','SquareReport','body','options','raw','UpdateSquareReport','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s'];(function(_0x5090f7,_0x42fbed){var _0x557004=function(_0x56312a){while(--_0x56312a){_0x5090f7['push'](_0x5090f7['shift']());}};_0x557004(++_0x42fbed);}(_0x88d6,0xf6));var _0x688d=function(_0x99c6f2,_0x3dd4f7){_0x99c6f2=_0x99c6f2-0x0;var _0x49c03a=_0x88d6[_0x99c6f2];return _0x49c03a;};'use strict';var _=require(_0x688d('0x0'));var util=require(_0x688d('0x1'));var moment=require(_0x688d('0x2'));var BPromise=require(_0x688d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x688d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x688d('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x688d('0x6'));var jayson=require(_0x688d('0x7'));var client=jayson['client'][_0x688d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe09e12,_0x38eec6,_0x21d469){return new BPromise(function(_0x8ec059,_0x21182a){return client['request'](_0xe09e12,_0x21d469)[_0x688d('0x9')](function(_0x424d04){logger[_0x688d('0xa')](_0x688d('0xb'),_0x38eec6,_0x688d('0xc'));logger[_0x688d('0xd')](_0x688d('0xe'),_0x38eec6,_0x688d('0xc'),JSON[_0x688d('0xf')](_0x424d04));if(_0x424d04[_0x688d('0x10')]){if(_0x424d04[_0x688d('0x10')][_0x688d('0x11')]===0x1f4){logger[_0x688d('0x10')](_0x688d('0xb'),_0x38eec6,_0x424d04[_0x688d('0x10')][_0x688d('0x12')]);return _0x21182a(_0x424d04['error'][_0x688d('0x12')]);}logger['error']('SquareReport,\x20%s,\x20%s',_0x38eec6,_0x424d04[_0x688d('0x10')][_0x688d('0x12')]);return _0x8ec059(_0x424d04[_0x688d('0x10')]['message']);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x38eec6,_0x688d('0xc'));_0x8ec059(_0x424d04['result'][_0x688d('0x12')]);}})[_0x688d('0x13')](function(_0x16b5fa){logger[_0x688d('0x10')](_0x688d('0xb'),_0x38eec6,_0x16b5fa);_0x21182a(_0x16b5fa);});});}exports[_0x688d('0x14')]=function(_0x27db56){var _0x369a7c=this;return new Promise(function(_0x2c37a1,_0x4dd141){return db[_0x688d('0x15')]['create'](_0x27db56[_0x688d('0x16')],{'raw':_0x27db56[_0x688d('0x17')]?_0x27db56[_0x688d('0x17')][_0x688d('0x18')]===undefined?!![]:![]:!![]})[_0x688d('0x9')](function(_0x10016d){logger[_0x688d('0xa')]('CreateSquareReport',_0x27db56);logger[_0x688d('0xd')](_0x688d('0x14'),_0x27db56,JSON[_0x688d('0xf')](_0x10016d));_0x2c37a1(_0x10016d);})[_0x688d('0x13')](function(_0x43f24f){logger[_0x688d('0x10')]('CreateSquareReport',_0x43f24f[_0x688d('0x12')],_0x27db56);_0x4dd141(_0x369a7c['error'](0x1f4,_0x43f24f['message']));});});};exports[_0x688d('0x19')]=function(_0x2d89c2){var _0x4cb315=this;return new Promise(function(_0x1fff49,_0x50e1b3){return db[_0x688d('0x15')]['update'](_0x2d89c2['body'],{'raw':_0x2d89c2[_0x688d('0x17')]?_0x2d89c2[_0x688d('0x17')][_0x688d('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d89c2[_0x688d('0x17')]?_0x2d89c2[_0x688d('0x17')][_0x688d('0x1a')]||null:null,'attributes':_0x2d89c2['options']?_0x2d89c2[_0x688d('0x17')][_0x688d('0x1b')]||null:null,'limit':_0x2d89c2[_0x688d('0x17')]?_0x2d89c2[_0x688d('0x17')][_0x688d('0x1c')]||null:null})['then'](function(_0xe62f45){logger[_0x688d('0xa')]('UpdateSquareReport',_0x2d89c2);logger[_0x688d('0xd')]('UpdateSquareReport',_0x2d89c2,JSON['stringify'](_0xe62f45));_0x1fff49(_0xe62f45);})['catch'](function(_0x218143){logger[_0x688d('0x10')](_0x688d('0x19'),_0x218143[_0x688d('0x12')],_0x2d89c2);_0x50e1b3(_0x4cb315[_0x688d('0x10')](0x1f4,_0x218143['message']));});});};
\ No newline at end of file
index 6d0bc69..9201e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6972=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','delete','destroy','exports','path','connect-timeout','express'];(function(_0x52bdfe,_0x5282ec){var _0x5c6df7=function(_0x2355bb){while(--_0x2355bb){_0x52bdfe['push'](_0x52bdfe['shift']());}};_0x5c6df7(++_0x5282ec);}(_0x6972,0x75));var _0x2697=function(_0x47e0ab,_0x5a32c5){_0x47e0ab=_0x47e0ab-0x0;var _0x3c3e14=_0x6972[_0x47e0ab];return _0x3c3e14;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2697('0x0'));var timeout=require(_0x2697('0x1'));var express=require(_0x2697('0x2'));var router=express[_0x2697('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2697('0x4'));var interaction=require(_0x2697('0x5'));var config=require(_0x2697('0x6'));var controller=require(_0x2697('0x7'));router[_0x2697('0x8')]('/',auth[_0x2697('0x9')](),controller[_0x2697('0xa')]);router[_0x2697('0x8')](_0x2697('0xb'),auth[_0x2697('0x9')](),controller[_0x2697('0xc')]);router[_0x2697('0x8')]('/:id',auth[_0x2697('0x9')](),controller[_0x2697('0xd')]);router[_0x2697('0xe')]('/',auth[_0x2697('0x9')](),controller['create']);router[_0x2697('0xf')](_0x2697('0x10'),auth[_0x2697('0x9')](),controller['update']);router[_0x2697('0x11')](_0x2697('0x10'),auth[_0x2697('0x9')](),controller[_0x2697('0x12')]);module[_0x2697('0x13')]=router;
\ No newline at end of file
+var _0xfbab=['put','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post'];(function(_0x1ca695,_0xa03202){var _0x54c0c1=function(_0x43679c){while(--_0x43679c){_0x1ca695['push'](_0x1ca695['shift']());}};_0x54c0c1(++_0xa03202);}(_0xfbab,0x1a5));var _0xbfba=function(_0x1666ce,_0x33cdf4){_0x1666ce=_0x1666ce-0x0;var _0x32f4b4=_0xfbab[_0x1666ce];return _0x32f4b4;};'use strict';var multer=require(_0xbfba('0x0'));var util=require(_0xbfba('0x1'));var path=require(_0xbfba('0x2'));var timeout=require(_0xbfba('0x3'));var express=require('express');var router=express[_0xbfba('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbfba('0x5'));var interaction=require(_0xbfba('0x6'));var config=require(_0xbfba('0x7'));var controller=require(_0xbfba('0x8'));router[_0xbfba('0x9')]('/',auth[_0xbfba('0xa')](),controller['index']);router[_0xbfba('0x9')](_0xbfba('0xb'),auth[_0xbfba('0xa')](),controller[_0xbfba('0xc')]);router[_0xbfba('0x9')](_0xbfba('0xd'),auth[_0xbfba('0xa')](),controller[_0xbfba('0xe')]);router[_0xbfba('0xf')]('/',auth[_0xbfba('0xa')](),controller['create']);router[_0xbfba('0x10')](_0xbfba('0xd'),auth[_0xbfba('0xa')](),controller['update']);router['delete'](_0xbfba('0xd'),auth['isAuthenticated'](),controller[_0xbfba('0x11')]);module[_0xbfba('0x12')]=router;
\ No newline at end of file
index 0f097ec..8e2ecd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc368=['STRING','TEXT','exports'];(function(_0x10c67b,_0x4282cf){var _0x5385d9=function(_0x105a37){while(--_0x105a37){_0x10c67b['push'](_0x10c67b['shift']());}};_0x5385d9(++_0x4282cf);}(_0xc368,0x104));var _0x8c36=function(_0x2b375b,_0x140f07){_0x2b375b=_0x2b375b-0x0;var _0x54d9d2=_0xc368[_0x2b375b];return _0x54d9d2;};'use strict';var Sequelize=require('sequelize');module[_0x8c36('0x0')]={'uniqueid':{'type':Sequelize[_0x8c36('0x1')]},'node':{'type':Sequelize[_0x8c36('0x1')]},'application':{'type':Sequelize[_0x8c36('0x1')]},'data':{'type':Sequelize[_0x8c36('0x2')]},'project_name':{'type':Sequelize[_0x8c36('0x1')]},'callerid':{'type':Sequelize[_0x8c36('0x1')]}};
\ No newline at end of file
+var _0x0865=['STRING','TEXT','sequelize','exports'];(function(_0x277af0,_0x1f0361){var _0x43bd7c=function(_0x3ad480){while(--_0x3ad480){_0x277af0['push'](_0x277af0['shift']());}};_0x43bd7c(++_0x1f0361);}(_0x0865,0x152));var _0x5086=function(_0x1ed877,_0x5a0ba6){_0x1ed877=_0x1ed877-0x0;var _0xb3c005=_0x0865[_0x1ed877];return _0xb3c005;};'use strict';var Sequelize=require(_0x5086('0x0'));module[_0x5086('0x1')]={'uniqueid':{'type':Sequelize[_0x5086('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x5086('0x2')]},'data':{'type':Sequelize[_0x5086('0x3')]},'project_name':{'type':Sequelize[_0x5086('0x2')]},'callerid':{'type':Sequelize[_0x5086('0x2')]}};
\ No newline at end of file
index 7d85526..327d8fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1241=['merge','VIRTUAL','options','include','findAll','params','length','includeAll','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter'];(function(_0x38a93d,_0x221b04){var _0x3e1013=function(_0x588089){while(--_0x588089){_0x38a93d['push'](_0x38a93d['shift']());}};_0x3e1013(++_0x221b04);}(_0x1241,0x1db));var _0x1124=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1241[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1124('0x0'));var rimraf=require(_0x1124('0x1'));var zipdir=require(_0x1124('0x2'));var jsonpatch=require(_0x1124('0x3'));var rp=require(_0x1124('0x4'));var moment=require(_0x1124('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1124('0x6'));var util=require(_0x1124('0x7'));var path=require(_0x1124('0x8'));var sox=require('sox');var csv=require(_0x1124('0x9'));var ejs=require(_0x1124('0xa'));var fs=require('fs');var fs_extra=require(_0x1124('0xb'));var _=require(_0x1124('0xc'));var squel=require(_0x1124('0xd'));var crypto=require(_0x1124('0xe'));var jsforce=require(_0x1124('0xf'));var deskjs=require(_0x1124('0x10'));var toCsv=require(_0x1124('0x9'));var querystring=require(_0x1124('0x11'));var Papa=require('papaparse');var Redis=require(_0x1124('0x12'));var authService=require(_0x1124('0x13'));var qs=require(_0x1124('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1124('0x15'))(_0x1124('0x16'));var utils=require(_0x1124('0x17'));var config=require(_0x1124('0x18'));var licenseUtil=require(_0x1124('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39893c,_0x61d52f){_0x61d52f=_0x61d52f||0xcc;return function(_0x383c34){if(_0x383c34){return _0x39893c[_0x1124('0x1a')](_0x61d52f);}return _0x39893c[_0x1124('0x1b')](_0x61d52f)['end']();};}function respondWithResult(_0x147997,_0xbe5a69){_0xbe5a69=_0xbe5a69||0xc8;return function(_0x512dd1){if(_0x512dd1){return _0x147997['status'](_0xbe5a69)[_0x1124('0x1c')](_0x512dd1);}};}function respondWithFilteredResult(_0x3252a9,_0x220210){return function(_0x1eaf24){if(_0x1eaf24){var _0x1a46c7=typeof _0x220210[_0x1124('0x1d')]===_0x1124('0x1e')&&typeof _0x220210[_0x1124('0x1f')]==='undefined';var _0x54168f=_0x1eaf24['count'];var _0x4f7487=_0x1a46c7?0x0:_0x220210[_0x1124('0x1d')];var _0x5800b6=_0x1a46c7?_0x1eaf24[_0x1124('0x20')]:_0x220210[_0x1124('0x1d')]+_0x220210[_0x1124('0x1f')];var _0x43949d;if(_0x5800b6>=_0x54168f){_0x5800b6=_0x54168f;_0x43949d=0xc8;}else{_0x43949d=0xce;}_0x3252a9[_0x1124('0x1b')](_0x43949d);return _0x3252a9[_0x1124('0x21')]('Content-Range',_0x4f7487+'-'+_0x5800b6+'/'+_0x54168f)['json'](_0x1eaf24);}return null;};}function patchUpdates(_0x5aae3c){return function(_0x4d59d2){try{jsonpatch[_0x1124('0x22')](_0x4d59d2,_0x5aae3c,!![]);}catch(_0x5c54b2){return BPromise[_0x1124('0x23')](_0x5c54b2);}return _0x4d59d2[_0x1124('0x24')]();};}function saveUpdates(_0x3f5749,_0x23ccaa){return function(_0x2fd74e){if(_0x2fd74e){return _0x2fd74e[_0x1124('0x25')](_0x3f5749)[_0x1124('0x26')](function(_0x4841f2){return _0x4841f2;});}return null;};}function removeEntity(_0x15655c,_0x2df41c){return function(_0x8f2867){if(_0x8f2867){return _0x8f2867['destroy']()['then'](function(){_0x15655c[_0x1124('0x1b')](0xcc)[_0x1124('0x27')]();});}};}function handleEntityNotFound(_0x2a979a,_0xe7be58){return function(_0x131514){if(!_0x131514){_0x2a979a[_0x1124('0x1a')](0x194);}return _0x131514;};}function handleError(_0x38aecd,_0x3dfef5){_0x3dfef5=_0x3dfef5||0x1f4;return function(_0x508581){logger['error'](_0x508581[_0x1124('0x28')]);if(_0x508581[_0x1124('0x29')]){delete _0x508581[_0x1124('0x29')];}_0x38aecd[_0x1124('0x1b')](_0x3dfef5)[_0x1124('0x2a')](_0x508581);};}exports[_0x1124('0x2b')]=function(_0x321c12,_0xdcfdd){var _0x3472aa={},_0x3ff9f5={},_0x452b6d={'count':0x0,'rows':[]};var _0x708385=_[_0x1124('0x2c')](db[_0x1124('0x2d')][_0x1124('0x2e')],function(_0x4bd08b){return{'name':_0x4bd08b[_0x1124('0x2f')],'type':_0x4bd08b[_0x1124('0x30')][_0x1124('0x31')]};});_0x3ff9f5[_0x1124('0x32')]=_[_0x1124('0x2c')](_0x708385,'name');_0x3ff9f5['query']=_[_0x1124('0x33')](_0x321c12[_0x1124('0x34')]);_0x3ff9f5[_0x1124('0x35')]=_[_0x1124('0x36')](_0x3ff9f5[_0x1124('0x32')],_0x3ff9f5['query']);_0x3472aa['attributes']=_[_0x1124('0x36')](_0x3ff9f5['model'],qs[_0x1124('0x37')](_0x321c12[_0x1124('0x34')][_0x1124('0x37')]));_0x3472aa[_0x1124('0x38')]=_0x3472aa['attributes']['length']?_0x3472aa[_0x1124('0x38')]:_0x3ff9f5[_0x1124('0x32')];if(!_0x321c12[_0x1124('0x34')][_0x1124('0x39')](_0x1124('0x3a'))){_0x3472aa['limit']=qs[_0x1124('0x1f')](_0x321c12[_0x1124('0x34')][_0x1124('0x1f')]);_0x3472aa[_0x1124('0x1d')]=qs[_0x1124('0x1d')](_0x321c12[_0x1124('0x34')][_0x1124('0x1d')]);}_0x3472aa[_0x1124('0x3b')]=qs[_0x1124('0x3c')](_0x321c12[_0x1124('0x34')][_0x1124('0x3c')]);_0x3472aa[_0x1124('0x3d')]=qs[_0x1124('0x35')](_[_0x1124('0x3e')](_0x321c12[_0x1124('0x34')],_0x3ff9f5[_0x1124('0x35')]),_0x708385);if(_0x321c12['query'][_0x1124('0x3f')]){_0x3472aa[_0x1124('0x3d')]=_[_0x1124('0x40')](_0x3472aa[_0x1124('0x3d')],{'$or':_['map'](_0x708385,function(_0x4d5f38){if(_0x4d5f38['type']!==_0x1124('0x41')){var _0x411604={};_0x411604[_0x4d5f38[_0x1124('0x29')]]={'$like':'%'+_0x321c12['query']['filter']+'%'};return _0x411604;}})});}_0x3472aa=_['merge']({},_0x3472aa,_0x321c12[_0x1124('0x42')]);var _0x780ef1={'where':_0x3472aa[_0x1124('0x3d')]};return db[_0x1124('0x2d')][_0x1124('0x20')](_0x780ef1)[_0x1124('0x26')](function(_0x3418f1){_0x452b6d[_0x1124('0x20')]=_0x3418f1;if(_0x321c12['query']['includeAll']){_0x3472aa[_0x1124('0x43')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x1124('0x44')](_0x3472aa);})['then'](function(_0x59f523){_0x452b6d['rows']=_0x59f523;return _0x452b6d;})[_0x1124('0x26')](respondWithFilteredResult(_0xdcfdd,_0x3472aa))['catch'](handleError(_0xdcfdd,null));};exports['show']=function(_0x24f272,_0x1c9549){var _0x3a7332={'raw':!![],'where':{'id':_0x24f272[_0x1124('0x45')]['id']}},_0x54528d={};_0x54528d['model']=_['keys'](db[_0x1124('0x2d')]['rawAttributes']);_0x54528d['query']=_['keys'](_0x24f272['query']);_0x54528d[_0x1124('0x35')]=_['intersection'](_0x54528d['model'],_0x54528d[_0x1124('0x34')]);_0x3a7332[_0x1124('0x38')]=_[_0x1124('0x36')](_0x54528d[_0x1124('0x32')],qs[_0x1124('0x37')](_0x24f272['query'][_0x1124('0x37')]));_0x3a7332[_0x1124('0x38')]=_0x3a7332['attributes'][_0x1124('0x46')]?_0x3a7332[_0x1124('0x38')]:_0x54528d['model'];if(_0x24f272['query'][_0x1124('0x47')]){_0x3a7332[_0x1124('0x43')]=[{'all':!![]}];}_0x3a7332=_[_0x1124('0x40')]({},_0x3a7332,_0x24f272[_0x1124('0x42')]);return db[_0x1124('0x2d')][_0x1124('0x48')](_0x3a7332)[_0x1124('0x26')](handleEntityNotFound(_0x1c9549,null))['then'](respondWithResult(_0x1c9549,null))[_0x1124('0x49')](handleError(_0x1c9549,null));};exports['create']=function(_0xa7b913,_0x4f6c44){return db[_0x1124('0x2d')][_0x1124('0x4a')](_0xa7b913['body'],{})['then'](respondWithResult(_0x4f6c44,0xc9))[_0x1124('0x49')](handleError(_0x4f6c44,null));};exports[_0x1124('0x25')]=function(_0x49b667,_0x2e85c8){if(_0x49b667[_0x1124('0x4b')]['id']){delete _0x49b667[_0x1124('0x4b')]['id'];}return db['SquareDetailsReport'][_0x1124('0x48')]({'where':{'id':_0x49b667[_0x1124('0x45')]['id']}})[_0x1124('0x26')](handleEntityNotFound(_0x2e85c8,null))[_0x1124('0x26')](saveUpdates(_0x49b667[_0x1124('0x4b')],null))[_0x1124('0x26')](respondWithResult(_0x2e85c8,null))[_0x1124('0x49')](handleError(_0x2e85c8,null));};exports[_0x1124('0x4c')]=function(_0x88ec29,_0x490df9){return db[_0x1124('0x2d')][_0x1124('0x48')]({'where':{'id':_0x88ec29[_0x1124('0x45')]['id']}})[_0x1124('0x26')](handleEntityNotFound(_0x490df9,null))[_0x1124('0x26')](removeEntity(_0x490df9,null))[_0x1124('0x49')](handleError(_0x490df9,null));};exports['describe']=function(_0x1c60ec,_0x5a3ad6){return db['SquareDetailsReport']['describe']()['then'](respondWithResult(_0x5a3ad6,null))['catch'](handleError(_0x5a3ad6,null));};
\ No newline at end of file
+var _0x1882=['params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','stack','name','map','SquareDetailsReport','rawAttributes','type','model','query','keys','intersection','fields','attributes','nolimit','sort','where','filters','pick','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','length','merge','options','find','create','body'];(function(_0x55e951,_0x30f68b){var _0x265f38=function(_0x22e2bc){while(--_0x22e2bc){_0x55e951['push'](_0x55e951['shift']());}};_0x265f38(++_0x30f68b);}(_0x1882,0x126));var _0x2188=function(_0x2bc061,_0x20a594){_0x2bc061=_0x2bc061-0x0;var _0x3a1435=_0x1882[_0x2bc061];return _0x3a1435;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2188('0x0'));var zipdir=require(_0x2188('0x1'));var jsonpatch=require(_0x2188('0x2'));var rp=require(_0x2188('0x3'));var moment=require(_0x2188('0x4'));var BPromise=require(_0x2188('0x5'));var Mustache=require(_0x2188('0x6'));var util=require(_0x2188('0x7'));var path=require('path');var sox=require(_0x2188('0x8'));var csv=require(_0x2188('0x9'));var ejs=require(_0x2188('0xa'));var fs=require('fs');var fs_extra=require(_0x2188('0xb'));var _=require(_0x2188('0xc'));var squel=require(_0x2188('0xd'));var crypto=require(_0x2188('0xe'));var jsforce=require(_0x2188('0xf'));var deskjs=require(_0x2188('0x10'));var toCsv=require(_0x2188('0x9'));var querystring=require(_0x2188('0x11'));var Papa=require('papaparse');var Redis=require(_0x2188('0x12'));var authService=require(_0x2188('0x13'));var qs=require(_0x2188('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2188('0x15'));var utils=require(_0x2188('0x16'));var config=require(_0x2188('0x17'));var licenseUtil=require(_0x2188('0x18'));var db=require(_0x2188('0x19'))['db'];function respondWithStatusCode(_0xfbe397,_0x1df6a6){_0x1df6a6=_0x1df6a6||0xcc;return function(_0x102b06){if(_0x102b06){return _0xfbe397[_0x2188('0x1a')](_0x1df6a6);}return _0xfbe397[_0x2188('0x1b')](_0x1df6a6)[_0x2188('0x1c')]();};}function respondWithResult(_0x1bfb00,_0x1605b6){_0x1605b6=_0x1605b6||0xc8;return function(_0x4aa3de){if(_0x4aa3de){return _0x1bfb00['status'](_0x1605b6)[_0x2188('0x1d')](_0x4aa3de);}};}function respondWithFilteredResult(_0x36ebe6,_0x247a6f){return function(_0x19ae80){if(_0x19ae80){var _0x572684=typeof _0x247a6f[_0x2188('0x1e')]===_0x2188('0x1f')&&typeof _0x247a6f[_0x2188('0x20')]===_0x2188('0x1f');var _0x1ff911=_0x19ae80['count'];var _0x199aa6=_0x572684?0x0:_0x247a6f[_0x2188('0x1e')];var _0x156872=_0x572684?_0x19ae80[_0x2188('0x21')]:_0x247a6f['offset']+_0x247a6f[_0x2188('0x20')];var _0x594a43;if(_0x156872>=_0x1ff911){_0x156872=_0x1ff911;_0x594a43=0xc8;}else{_0x594a43=0xce;}_0x36ebe6['status'](_0x594a43);return _0x36ebe6[_0x2188('0x22')]('Content-Range',_0x199aa6+'-'+_0x156872+'/'+_0x1ff911)['json'](_0x19ae80);}return null;};}function patchUpdates(_0x424713){return function(_0x35b93e){try{jsonpatch[_0x2188('0x23')](_0x35b93e,_0x424713,!![]);}catch(_0x30eefa){return BPromise[_0x2188('0x24')](_0x30eefa);}return _0x35b93e['save']();};}function saveUpdates(_0x54b69c,_0xc28889){return function(_0x3ceaf2){if(_0x3ceaf2){return _0x3ceaf2[_0x2188('0x25')](_0x54b69c)[_0x2188('0x26')](function(_0x16b81e){return _0x16b81e;});}return null;};}function removeEntity(_0x524755,_0x4385d){return function(_0x32be49){if(_0x32be49){return _0x32be49[_0x2188('0x27')]()[_0x2188('0x26')](function(){_0x524755['status'](0xcc)[_0x2188('0x1c')]();});}};}function handleEntityNotFound(_0x4ce570,_0x38bbc1){return function(_0x3e3bdc){if(!_0x3e3bdc){_0x4ce570[_0x2188('0x1a')](0x194);}return _0x3e3bdc;};}function handleError(_0x411b0e,_0x1c8faf){_0x1c8faf=_0x1c8faf||0x1f4;return function(_0x4fca3f){logger['error'](_0x4fca3f[_0x2188('0x28')]);if(_0x4fca3f[_0x2188('0x29')]){delete _0x4fca3f[_0x2188('0x29')];}_0x411b0e[_0x2188('0x1b')](_0x1c8faf)['send'](_0x4fca3f);};}exports['index']=function(_0x1f4b87,_0x4da5c4){var _0x590ec0={},_0x57dc6c={},_0x45eb4c={'count':0x0,'rows':[]};var _0x4907de=_[_0x2188('0x2a')](db[_0x2188('0x2b')][_0x2188('0x2c')],function(_0x4cd5d1){return{'name':_0x4cd5d1['fieldName'],'type':_0x4cd5d1[_0x2188('0x2d')]['key']};});_0x57dc6c[_0x2188('0x2e')]=_[_0x2188('0x2a')](_0x4907de,_0x2188('0x29'));_0x57dc6c[_0x2188('0x2f')]=_[_0x2188('0x30')](_0x1f4b87['query']);_0x57dc6c['filters']=_['intersection'](_0x57dc6c[_0x2188('0x2e')],_0x57dc6c[_0x2188('0x2f')]);_0x590ec0['attributes']=_[_0x2188('0x31')](_0x57dc6c['model'],qs[_0x2188('0x32')](_0x1f4b87[_0x2188('0x2f')][_0x2188('0x32')]));_0x590ec0[_0x2188('0x33')]=_0x590ec0[_0x2188('0x33')]['length']?_0x590ec0[_0x2188('0x33')]:_0x57dc6c['model'];if(!_0x1f4b87[_0x2188('0x2f')]['hasOwnProperty'](_0x2188('0x34'))){_0x590ec0[_0x2188('0x20')]=qs[_0x2188('0x20')](_0x1f4b87[_0x2188('0x2f')][_0x2188('0x20')]);_0x590ec0[_0x2188('0x1e')]=qs[_0x2188('0x1e')](_0x1f4b87[_0x2188('0x2f')]['offset']);}_0x590ec0['order']=qs[_0x2188('0x35')](_0x1f4b87[_0x2188('0x2f')][_0x2188('0x35')]);_0x590ec0[_0x2188('0x36')]=qs[_0x2188('0x37')](_[_0x2188('0x38')](_0x1f4b87[_0x2188('0x2f')],_0x57dc6c['filters']),_0x4907de);if(_0x1f4b87['query']['filter']){_0x590ec0[_0x2188('0x36')]=_['merge'](_0x590ec0['where'],{'$or':_['map'](_0x4907de,function(_0x453594){if(_0x453594[_0x2188('0x2d')]!==_0x2188('0x39')){var _0x22839a={};_0x22839a[_0x453594[_0x2188('0x29')]]={'$like':'%'+_0x1f4b87['query'][_0x2188('0x3a')]+'%'};return _0x22839a;}})});}_0x590ec0=_['merge']({},_0x590ec0,_0x1f4b87['options']);var _0x24aaa9={'where':_0x590ec0['where']};return db[_0x2188('0x2b')][_0x2188('0x21')](_0x24aaa9)[_0x2188('0x26')](function(_0x570b3f){_0x45eb4c['count']=_0x570b3f;if(_0x1f4b87[_0x2188('0x2f')][_0x2188('0x3b')]){_0x590ec0[_0x2188('0x3c')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x2188('0x3d')](_0x590ec0);})[_0x2188('0x26')](function(_0x1cd920){_0x45eb4c[_0x2188('0x3e')]=_0x1cd920;return _0x45eb4c;})[_0x2188('0x26')](respondWithFilteredResult(_0x4da5c4,_0x590ec0))[_0x2188('0x3f')](handleError(_0x4da5c4,null));};exports[_0x2188('0x40')]=function(_0x1bebe3,_0x115786){var _0x518650={'raw':!![],'where':{'id':_0x1bebe3['params']['id']}},_0x15ab3e={};_0x15ab3e[_0x2188('0x2e')]=_['keys'](db[_0x2188('0x2b')]['rawAttributes']);_0x15ab3e[_0x2188('0x2f')]=_[_0x2188('0x30')](_0x1bebe3[_0x2188('0x2f')]);_0x15ab3e['filters']=_['intersection'](_0x15ab3e[_0x2188('0x2e')],_0x15ab3e['query']);_0x518650[_0x2188('0x33')]=_['intersection'](_0x15ab3e[_0x2188('0x2e')],qs[_0x2188('0x32')](_0x1bebe3['query']['fields']));_0x518650[_0x2188('0x33')]=_0x518650['attributes'][_0x2188('0x41')]?_0x518650[_0x2188('0x33')]:_0x15ab3e[_0x2188('0x2e')];if(_0x1bebe3[_0x2188('0x2f')]['includeAll']){_0x518650[_0x2188('0x3c')]=[{'all':!![]}];}_0x518650=_[_0x2188('0x42')]({},_0x518650,_0x1bebe3[_0x2188('0x43')]);return db[_0x2188('0x2b')][_0x2188('0x44')](_0x518650)[_0x2188('0x26')](handleEntityNotFound(_0x115786,null))[_0x2188('0x26')](respondWithResult(_0x115786,null))[_0x2188('0x3f')](handleError(_0x115786,null));};exports[_0x2188('0x45')]=function(_0x19af25,_0x6bfc1a){return db['SquareDetailsReport']['create'](_0x19af25[_0x2188('0x46')],{})['then'](respondWithResult(_0x6bfc1a,0xc9))[_0x2188('0x3f')](handleError(_0x6bfc1a,null));};exports[_0x2188('0x25')]=function(_0x198998,_0x313257){if(_0x198998['body']['id']){delete _0x198998[_0x2188('0x46')]['id'];}return db[_0x2188('0x2b')][_0x2188('0x44')]({'where':{'id':_0x198998[_0x2188('0x47')]['id']}})['then'](handleEntityNotFound(_0x313257,null))[_0x2188('0x26')](saveUpdates(_0x198998[_0x2188('0x46')],null))[_0x2188('0x26')](respondWithResult(_0x313257,null))[_0x2188('0x3f')](handleError(_0x313257,null));};exports[_0x2188('0x27')]=function(_0x51f469,_0x5b0b58){return db[_0x2188('0x2b')][_0x2188('0x44')]({'where':{'id':_0x51f469[_0x2188('0x47')]['id']}})[_0x2188('0x26')](handleEntityNotFound(_0x5b0b58,null))[_0x2188('0x26')](removeEntity(_0x5b0b58,null))['catch'](handleError(_0x5b0b58,null));};exports[_0x2188('0x48')]=function(_0x30ad37,_0xe95143){return db['SquareDetailsReport'][_0x2188('0x48')]()[_0x2188('0x26')](respondWithResult(_0xe95143,null))[_0x2188('0x3f')](handleError(_0xe95143,null));};
\ No newline at end of file
index a1f6437..30f08e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x672f=['report_square_details','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define'];(function(_0xdc187e,_0x59d441){var _0x5cd789=function(_0x3380a6){while(--_0x3380a6){_0xdc187e['push'](_0xdc187e['shift']());}};_0x5cd789(++_0x59d441);}(_0x672f,0x1e2));var _0xf672=function(_0x4a8b0b,_0x361344){_0x4a8b0b=_0x4a8b0b-0x0;var _0x5322e7=_0x672f[_0x4a8b0b];return _0x5322e7;};'use strict';var _=require(_0xf672('0x0'));var util=require(_0xf672('0x1'));var logger=require(_0xf672('0x2'))(_0xf672('0x3'));var moment=require(_0xf672('0x4'));var BPromise=require('bluebird');var rp=require(_0xf672('0x5'));var fs=require('fs');var path=require(_0xf672('0x6'));var rimraf=require(_0xf672('0x7'));var config=require(_0xf672('0x8'));var attributes=require(_0xf672('0x9'));module[_0xf672('0xa')]=function(_0x3b413b,_0x15a769){return _0x3b413b[_0xf672('0xb')]('SquareDetailsReport',attributes,{'tableName':_0xf672('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9ae=['SquareDetailsReport','report_square_details','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x18d81f,_0x265601){var _0x38485b=function(_0x42be3d){while(--_0x42be3d){_0x18d81f['push'](_0x18d81f['shift']());}};_0x38485b(++_0x265601);}(_0xe9ae,0x176));var _0xee9a=function(_0x4c48d3,_0x1e2aad){_0x4c48d3=_0x4c48d3-0x0;var _0x2724cf=_0xe9ae[_0x4c48d3];return _0x2724cf;};'use strict';var _=require(_0xee9a('0x0'));var util=require(_0xee9a('0x1'));var logger=require(_0xee9a('0x2'))('api');var moment=require(_0xee9a('0x3'));var BPromise=require('bluebird');var rp=require(_0xee9a('0x4'));var fs=require('fs');var path=require(_0xee9a('0x5'));var rimraf=require(_0xee9a('0x6'));var config=require(_0xee9a('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0xee9a('0x8')]=function(_0x24c59e,_0x4fc874){return _0x24c59e[_0xee9a('0x9')](_0xee9a('0xa'),attributes,{'tableName':_0xee9a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbf5335..7dd0aaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d4=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','message','SquareDetailsReport,\x20%s,\x20%s','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','then','stringify','lodash','util','bluebird'];(function(_0x282cd5,_0x527801){var _0x1abad4=function(_0x5e3770){while(--_0x5e3770){_0x282cd5['push'](_0x282cd5['shift']());}};_0x1abad4(++_0x527801);}(_0x94d4,0xa5));var _0x494d=function(_0x5ae811,_0x218e1f){_0x5ae811=_0x5ae811-0x0;var _0x41b4fb=_0x94d4[_0x5ae811];return _0x41b4fb;};'use strict';var _=require(_0x494d('0x0'));var util=require(_0x494d('0x1'));var moment=require('moment');var BPromise=require(_0x494d('0x2'));var rs=require(_0x494d('0x3'));var fs=require('fs');var Redis=require(_0x494d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x494d('0x5'));var logger=require(_0x494d('0x6'))(_0x494d('0x7'));var config=require(_0x494d('0x8'));var jayson=require(_0x494d('0x9'));var client=jayson[_0x494d('0xa')][_0x494d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c53d7,_0x4f4576,_0x5269db){return new BPromise(function(_0x396280,_0x3f6b68){return client['request'](_0x4c53d7,_0x5269db)['then'](function(_0x456fe8){logger[_0x494d('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));logger[_0x494d('0xe')](_0x494d('0xf'),_0x4f4576,_0x494d('0xd'),JSON['stringify'](_0x456fe8));if(_0x456fe8[_0x494d('0x10')]){if(_0x456fe8[_0x494d('0x10')]['code']===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x3f6b68(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x396280(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}else{logger[_0x494d('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));_0x396280(_0x456fe8[_0x494d('0x13')][_0x494d('0x11')]);}})[_0x494d('0x14')](function(_0x120488){logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x120488);_0x3f6b68(_0x120488);});});}exports[_0x494d('0x15')]=function(_0x4301fc){var _0x1552bb=this;return new Promise(function(_0x12a484,_0xd67ea4){return db[_0x494d('0x16')][_0x494d('0x17')](_0x4301fc[_0x494d('0x18')],{'raw':_0x4301fc[_0x494d('0x19')]?_0x4301fc[_0x494d('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x494d('0x1a')](function(_0x172763){logger[_0x494d('0xc')](_0x494d('0x15'),_0x4301fc);logger['debug']('CreateSquareDetailsReport',_0x4301fc,JSON[_0x494d('0x1b')](_0x172763));_0x12a484(_0x172763);})[_0x494d('0x14')](function(_0x56e992){logger['error'](_0x494d('0x15'),_0x56e992['message'],_0x4301fc);_0xd67ea4(_0x1552bb[_0x494d('0x10')](0x1f4,_0x56e992['message']));});});};
\ No newline at end of file
+var _0x5ed9=['stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','SquareDetailsReport,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x3c7ba3,_0x3294c5){var _0x55ab57=function(_0x5bf419){while(--_0x5bf419){_0x3c7ba3['push'](_0x3c7ba3['shift']());}};_0x55ab57(++_0x3294c5);}(_0x5ed9,0x1e9));var _0x95ed=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5ed9[_0x5f0089];return _0x193892;};'use strict';var _=require(_0x95ed('0x0'));var util=require(_0x95ed('0x1'));var moment=require('moment');var BPromise=require(_0x95ed('0x2'));var rs=require(_0x95ed('0x3'));var fs=require('fs');var Redis=require(_0x95ed('0x4'));var db=require(_0x95ed('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x95ed('0x6'))(_0x95ed('0x7'));var config=require(_0x95ed('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x95ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32bf25,_0xaa1eb1,_0x3753b5){return new BPromise(function(_0x1df51f,_0x46ed43){return client[_0x95ed('0xa')](_0x32bf25,_0x3753b5)['then'](function(_0x2b59f5){logger[_0x95ed('0xb')](_0x95ed('0xc'),_0xaa1eb1,'request\x20sent');logger[_0x95ed('0xd')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0xaa1eb1,_0x95ed('0xe'),JSON[_0x95ed('0xf')](_0x2b59f5));if(_0x2b59f5[_0x95ed('0x10')]){if(_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x11')]===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xaa1eb1,_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x12')]);return _0x46ed43(_0x2b59f5['error']['message']);}logger[_0x95ed('0x10')](_0x95ed('0xc'),_0xaa1eb1,_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x12')]);return _0x1df51f(_0x2b59f5['error'][_0x95ed('0x12')]);}else{logger[_0x95ed('0xb')](_0x95ed('0xc'),_0xaa1eb1,_0x95ed('0xe'));_0x1df51f(_0x2b59f5[_0x95ed('0x13')]['message']);}})[_0x95ed('0x14')](function(_0x54ad78){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0xaa1eb1,_0x54ad78);_0x46ed43(_0x54ad78);});});}exports[_0x95ed('0x15')]=function(_0x58fb9e){var _0x421ab9=this;return new Promise(function(_0x1bc47c,_0x4ad26d){return db[_0x95ed('0x16')][_0x95ed('0x17')](_0x58fb9e[_0x95ed('0x18')],{'raw':_0x58fb9e[_0x95ed('0x19')]?_0x58fb9e[_0x95ed('0x19')][_0x95ed('0x1a')]===undefined?!![]:![]:!![]})[_0x95ed('0x1b')](function(_0x3e05cf){logger[_0x95ed('0xb')](_0x95ed('0x15'),_0x58fb9e);logger['debug'](_0x95ed('0x15'),_0x58fb9e,JSON[_0x95ed('0xf')](_0x3e05cf));_0x1bc47c(_0x3e05cf);})['catch'](function(_0x5d5afe){logger['error'](_0x95ed('0x15'),_0x5d5afe[_0x95ed('0x12')],_0x58fb9e);_0x4ad26d(_0x421ab9[_0x95ed('0x10')](0x1f4,_0x5d5afe[_0x95ed('0x12')]));});});};
\ No newline at end of file
index da9d521..873d065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e21=['./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service'];(function(_0x5984dc,_0x455b4a){var _0x5d15e2=function(_0xa702f4){while(--_0xa702f4){_0x5984dc['push'](_0x5984dc['shift']());}};_0x5d15e2(++_0x455b4a);}(_0x8e21,0x6b));var _0x18e2=function(_0x460666,_0x24bfa0){_0x460666=_0x460666-0x0;var _0x555cbf=_0x8e21[_0x460666];return _0x555cbf;};'use strict';var express=require(_0x18e2('0x0'));var router=express[_0x18e2('0x1')]();var auth=require(_0x18e2('0x2'));var controller=require(_0x18e2('0x3'));router[_0x18e2('0x4')]('/',auth[_0x18e2('0x5')](),controller[_0x18e2('0x6')]);router[_0x18e2('0x4')](_0x18e2('0x7'),auth[_0x18e2('0x5')](),controller[_0x18e2('0x8')]);module[_0x18e2('0x9')]=router;
\ No newline at end of file
+var _0x30a1=['./system.controller','get','isAuthenticated','/process/:pid/kill','exports','express','../../components/auth/service'];(function(_0x11f226,_0x491e30){var _0x30be77=function(_0x2049bd){while(--_0x2049bd){_0x11f226['push'](_0x11f226['shift']());}};_0x30be77(++_0x491e30);}(_0x30a1,0xe5));var _0x130a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x30a1[_0x14add3];return _0x4a174f;};'use strict';var express=require(_0x130a('0x0'));var router=express['Router']();var auth=require(_0x130a('0x1'));var controller=require(_0x130a('0x2'));router[_0x130a('0x3')]('/',auth[_0x130a('0x4')](),controller['index']);router[_0x130a('0x3')](_0x130a('0x5'),auth['isAuthenticated'](),controller['killProcess']);module[_0x130a('0x6')]=router;
\ No newline at end of file
index b9b04f7..2ded754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8742=['length','kill','SIGINT','systeminformation','child_process','exec','api','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','index','getAllData','then','catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8742,0xe9));var _0x2874=function(_0x2c6147,_0x30daee){_0x2c6147=_0x2c6147-0x0;var _0x4bdee8=_0x8742[_0x2c6147];return _0x4bdee8;};'use strict';var info=require(_0x2874('0x0'));var exec=require(_0x2874('0x1'))[_0x2874('0x2')];var logger=require('../../config/logger')(_0x2874('0x3'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x2874('0x4'));function handleError(_0x1af021,_0x1812d6,_0x3aec7f){_0x1812d6=_0x1812d6||0x1f4;return function(_0x35b71b){logger[_0x2874('0x5')](_0x2874('0x6'),_0x3aec7f,_0x1812d6,util['inspect'](_0x35b71b,{'showHidden':![],'depth':null}));delete _0x35b71b[_0x2874('0x7')];_0x1af021[_0x2874('0x8')](_0x1812d6)['send'](_0x35b71b);};}exports[_0x2874('0x9')]=function(_0x23f55b,_0x1cbca2){return info[_0x2874('0xa')]()[_0x2874('0xb')](function(_0x173510){return _0x1cbca2[_0x2874('0x8')](0xc8)['json'](_0x173510);})[_0x2874('0xc')](function(_0x1a2bfd){return _0x1cbca2[_0x2874('0x8')](0x1f4)[_0x2874('0xd')](_0x1a2bfd);});};exports[_0x2874('0xe')]=function(_0x1ba3de,_0x322212){var _0x1042a8=[_0x2874('0xf')];return new BPromise(function(_0x1e5cd1,_0x15602a){return exec(util[_0x2874('0x10')](_0x2874('0x11'),_0x1ba3de[_0x2874('0x12')][_0x2874('0x13')]),function(_0x294249,_0x23ba93,_0x1304e9){if(_0x294249){return _0x15602a(_0x294249);}return _0x1e5cd1(_0x23ba93);});})[_0x2874('0xb')](function(_0x440d1c){var _0x59f353=![];var _0x3ae330=_0x440d1c['split'](/\n/);for(var _0x33cd69=0x0,_0x14f8dd=_0x1042a8[_0x2874('0x14')];_0x33cd69<_0x14f8dd,_0x59f353===![];_0x33cd69+=0x1){if(_0x440d1c['indexOf'](_0x1042a8[_0x33cd69])>=0x0){_0x59f353=!![];}}if(!_0x59f353){throw new Error(util[_0x2874('0x10')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x1ba3de[_0x2874('0x12')]['pid']));}process[_0x2874('0x15')](_0x1ba3de[_0x2874('0x12')]['pid'],_0x2874('0x16'));return _0x322212['status'](0xc8)[_0x2874('0xd')]({'message':util[_0x2874('0x10')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x1ba3de[_0x2874('0x12')][_0x2874('0x13')])});})['catch'](handleError(_0x322212,null,_0x2874('0xe')));};
\ No newline at end of file
+var _0x2aee=['Process\x20with\x20pid\x20%s\x20not\x20found!','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','systeminformation','child_process','../../config/logger','api','bluebird','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','index','getAllData','then','json','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','indexOf'];(function(_0x17c483,_0xc69535){var _0x112bdb=function(_0x19adb9){while(--_0x19adb9){_0x17c483['push'](_0x17c483['shift']());}};_0x112bdb(++_0xc69535);}(_0x2aee,0x8e));var _0xe2ae=function(_0x2dd976,_0x1b5dc4){_0x2dd976=_0x2dd976-0x0;var _0x2265fd=_0x2aee[_0x2dd976];return _0x2265fd;};'use strict';var info=require(_0xe2ae('0x0'));var exec=require(_0xe2ae('0x1'))['exec'];var logger=require(_0xe2ae('0x2'))(_0xe2ae('0x3'));var util=require('util');var BPromise=require(_0xe2ae('0x4'));var _=require('lodash');function handleError(_0x47fc37,_0x2c47a7,_0x3c906b){_0x2c47a7=_0x2c47a7||0x1f4;return function(_0x4e9f7a){logger['error'](_0xe2ae('0x5'),_0x3c906b,_0x2c47a7,util['inspect'](_0x4e9f7a,{'showHidden':![],'depth':null}));delete _0x4e9f7a[_0xe2ae('0x6')];_0x47fc37[_0xe2ae('0x7')](_0x2c47a7)[_0xe2ae('0x8')](_0x4e9f7a);};}exports[_0xe2ae('0x9')]=function(_0x9942a,_0x43a52d){return info[_0xe2ae('0xa')]()[_0xe2ae('0xb')](function(_0x3db659){return _0x43a52d[_0xe2ae('0x7')](0xc8)[_0xe2ae('0xc')](_0x3db659);})['catch'](function(_0x5c15a4){return _0x43a52d[_0xe2ae('0x7')](0x1f4)['json'](_0x5c15a4);});};exports['killProcess']=function(_0x2f347b,_0x6675c8){var _0x519ced=['components/import/cm'];return new BPromise(function(_0x5cba3e,_0x528e98){return exec(util[_0xe2ae('0xd')](_0xe2ae('0xe'),_0x2f347b[_0xe2ae('0xf')][_0xe2ae('0x10')]),function(_0x59f3d4,_0x5605d2,_0x3531c8){if(_0x59f3d4){return _0x528e98(_0x59f3d4);}return _0x5cba3e(_0x5605d2);});})[_0xe2ae('0xb')](function(_0x2e7587){var _0x3ca9d4=![];var _0x26957c=_0x2e7587[_0xe2ae('0x11')](/\n/);for(var _0x136f0a=0x0,_0x1d7026=_0x519ced['length'];_0x136f0a<_0x1d7026,_0x3ca9d4===![];_0x136f0a+=0x1){if(_0x2e7587[_0xe2ae('0x12')](_0x519ced[_0x136f0a])>=0x0){_0x3ca9d4=!![];}}if(!_0x3ca9d4){throw new Error(util[_0xe2ae('0xd')](_0xe2ae('0x13'),_0x2f347b[_0xe2ae('0xf')][_0xe2ae('0x10')]));}process['kill'](_0x2f347b[_0xe2ae('0xf')][_0xe2ae('0x10')],_0xe2ae('0x14'));return _0x6675c8['status'](0xc8)[_0xe2ae('0xc')]({'message':util[_0xe2ae('0xd')](_0xe2ae('0x15'),_0x2f347b[_0xe2ae('0xf')]['pid'])});})['catch'](handleError(_0x6675c8,null,_0xe2ae('0x16')));};
\ No newline at end of file
index 2d2727d..9db83a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed0b=['isAuthenticated','show','create','put','delete','exports','multer','path','connect-timeout','express','../../components/interaction/service','./tag.controller','index','get','/:id'];(function(_0x1b8e60,_0x21b885){var _0x363363=function(_0x5987c7){while(--_0x5987c7){_0x1b8e60['push'](_0x1b8e60['shift']());}};_0x363363(++_0x21b885);}(_0xed0b,0x15f));var _0xbed0=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0xed0b[_0xd578cb];return _0x775533;};'use strict';var multer=require(_0xbed0('0x0'));var util=require('util');var path=require(_0xbed0('0x1'));var timeout=require(_0xbed0('0x2'));var express=require(_0xbed0('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbed0('0x4'));var config=require('../../config/environment');var controller=require(_0xbed0('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xbed0('0x6')]);router[_0xbed0('0x7')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller[_0xbed0('0xa')]);router['post']('/',auth[_0xbed0('0x9')](),controller[_0xbed0('0xb')]);router[_0xbed0('0xc')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller['update']);router[_0xbed0('0xd')](_0xbed0('0x8'),auth[_0xbed0('0x9')](),controller['destroy']);module[_0xbed0('0xe')]=router;
\ No newline at end of file
+var _0xa2a1=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x4eb3ec,_0x51b871){var _0x1a3de8=function(_0x179f80){while(--_0x179f80){_0x4eb3ec['push'](_0x4eb3ec['shift']());}};_0x1a3de8(++_0x51b871);}(_0xa2a1,0xf6));var _0x1a2a=function(_0x185b8e,_0x23ee63){_0x185b8e=_0x185b8e-0x0;var _0x4e5ca6=_0xa2a1[_0x185b8e];return _0x4e5ca6;};'use strict';var multer=require(_0x1a2a('0x0'));var util=require('util');var path=require(_0x1a2a('0x1'));var timeout=require(_0x1a2a('0x2'));var express=require('express');var router=express[_0x1a2a('0x3')]();var fs_extra=require(_0x1a2a('0x4'));var auth=require(_0x1a2a('0x5'));var interaction=require(_0x1a2a('0x6'));var config=require(_0x1a2a('0x7'));var controller=require(_0x1a2a('0x8'));router[_0x1a2a('0x9')]('/',auth[_0x1a2a('0xa')](),controller[_0x1a2a('0xb')]);router[_0x1a2a('0x9')](_0x1a2a('0xc'),auth[_0x1a2a('0xa')](),controller[_0x1a2a('0xd')]);router[_0x1a2a('0xe')]('/',auth[_0x1a2a('0xa')](),controller['create']);router[_0x1a2a('0xf')](_0x1a2a('0xc'),auth['isAuthenticated'](),controller[_0x1a2a('0x10')]);router[_0x1a2a('0x11')](_0x1a2a('0xc'),auth[_0x1a2a('0xa')](),controller['destroy']);module[_0x1a2a('0x12')]=router;
\ No newline at end of file
index 9741e8a..3e6a3a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c9=['#0091EA','sequelize','exports','STRING','name'];(function(_0x593b6f,_0xecf558){var _0x16c8ae=function(_0x1c7e0d){while(--_0x1c7e0d){_0x593b6f['push'](_0x593b6f['shift']());}};_0x16c8ae(++_0xecf558);}(_0x18c9,0x13c));var _0x918c=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x18c9[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require(_0x918c('0x0'));module[_0x918c('0x1')]={'name':{'type':Sequelize[_0x918c('0x2')],'unique':_0x918c('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x918c('0x2')],'defaultValue':_0x918c('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x087b=['sequelize','exports','STRING'];(function(_0x5e6d0c,_0x9668fc){var _0x37e3a6=function(_0x290874){while(--_0x290874){_0x5e6d0c['push'](_0x5e6d0c['shift']());}};_0x37e3a6(++_0x9668fc);}(_0x087b,0x11a));var _0xb087=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x087b[_0x3fba9f];return _0x192cf1;};'use strict';var Sequelize=require(_0xb087('0x0'));module[_0xb087('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xb087('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xb087('0x2')]}};
\ No newline at end of file
index b1af5ad..cd6bc7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb07f=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Tags','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','include','Tag','findAll','rows','catch','show','params','keys','length','includeAll','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xb07f,0x109));var _0xfb07=function(_0x452d6a,_0x24c4b0){_0x452d6a=_0x452d6a-0x0;var _0x512067=_0xb07f[_0x452d6a];return _0x512067;};'use strict';var emlformat=require(_0xfb07('0x0'));var rimraf=require(_0xfb07('0x1'));var zipdir=require(_0xfb07('0x2'));var jsonpatch=require(_0xfb07('0x3'));var rp=require(_0xfb07('0x4'));var moment=require(_0xfb07('0x5'));var BPromise=require(_0xfb07('0x6'));var Mustache=require(_0xfb07('0x7'));var util=require(_0xfb07('0x8'));var path=require(_0xfb07('0x9'));var sox=require(_0xfb07('0xa'));var csv=require('to-csv');var ejs=require(_0xfb07('0xb'));var fs=require('fs');var fs_extra=require(_0xfb07('0xc'));var _=require(_0xfb07('0xd'));var squel=require(_0xfb07('0xe'));var crypto=require(_0xfb07('0xf'));var jsforce=require(_0xfb07('0x10'));var deskjs=require(_0xfb07('0x11'));var toCsv=require(_0xfb07('0x12'));var querystring=require(_0xfb07('0x13'));var Papa=require(_0xfb07('0x14'));var Redis=require(_0xfb07('0x15'));var authService=require(_0xfb07('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb07('0x17'))(_0xfb07('0x18'));var utils=require('../../config/utils');var config=require(_0xfb07('0x19'));var licenseUtil=require(_0xfb07('0x1a'));var db=require(_0xfb07('0x1b'))['db'];function respondWithStatusCode(_0x13275d,_0x2ad2cf){_0x2ad2cf=_0x2ad2cf||0xcc;return function(_0x35fd11){if(_0x35fd11){return _0x13275d[_0xfb07('0x1c')](_0x2ad2cf);}return _0x13275d['status'](_0x2ad2cf)[_0xfb07('0x1d')]();};}function respondWithResult(_0x40bf71,_0x3c69db){_0x3c69db=_0x3c69db||0xc8;return function(_0x2c35e4){if(_0x2c35e4){return _0x40bf71[_0xfb07('0x1e')](_0x3c69db)[_0xfb07('0x1f')](_0x2c35e4);}};}function respondWithFilteredResult(_0x29cbae,_0x228e2a){return function(_0x2363d6){if(_0x2363d6){var _0x6a14e0=typeof _0x228e2a[_0xfb07('0x20')]===_0xfb07('0x21')&&typeof _0x228e2a[_0xfb07('0x22')]===_0xfb07('0x21');var _0x4ebcc3=_0x2363d6['count'];var _0x3e747e=_0x6a14e0?0x0:_0x228e2a[_0xfb07('0x20')];var _0x197f12=_0x6a14e0?_0x2363d6['count']:_0x228e2a[_0xfb07('0x20')]+_0x228e2a[_0xfb07('0x22')];var _0x527c4e;if(_0x197f12>=_0x4ebcc3){_0x197f12=_0x4ebcc3;_0x527c4e=0xc8;}else{_0x527c4e=0xce;}_0x29cbae['status'](_0x527c4e);return _0x29cbae[_0xfb07('0x23')](_0xfb07('0x24'),_0x3e747e+'-'+_0x197f12+'/'+_0x4ebcc3)[_0xfb07('0x1f')](_0x2363d6);}return null;};}function patchUpdates(_0x2c6c44){return function(_0x388995){try{jsonpatch[_0xfb07('0x25')](_0x388995,_0x2c6c44,!![]);}catch(_0x15e153){return BPromise[_0xfb07('0x26')](_0x15e153);}return _0x388995[_0xfb07('0x27')]();};}function saveUpdates(_0x578bb2,_0x45806a){return function(_0x56d0c4){if(_0x56d0c4){return _0x56d0c4[_0xfb07('0x28')](_0x578bb2)[_0xfb07('0x29')](function(_0x428c85){return _0x428c85;});}return null;};}function removeEntity(_0x301c1a,_0xb2063a){return function(_0x508d3b){if(_0x508d3b){return _0x508d3b[_0xfb07('0x2a')]()[_0xfb07('0x29')](function(){var _0x10835a=_0x508d3b[_0xfb07('0x2b')]({'plain':!![]});var _0x3b14fa=_0xfb07('0x2c');return db['UserProfileResource'][_0xfb07('0x2a')]({'where':{'type':_0x3b14fa,'resourceId':_0x10835a['id']}})[_0xfb07('0x29')](function(){return _0x508d3b;});})['then'](function(){_0x301c1a[_0xfb07('0x1e')](0xcc)[_0xfb07('0x1d')]();});}};}function handleEntityNotFound(_0xe813a7,_0x149ac0){return function(_0x46927a){if(!_0x46927a){_0xe813a7[_0xfb07('0x1c')](0x194);}return _0x46927a;};}function handleError(_0x20f01a,_0x24ff99){_0x24ff99=_0x24ff99||0x1f4;return function(_0x95f1d){logger[_0xfb07('0x2d')](_0x95f1d[_0xfb07('0x2e')]);if(_0x95f1d['name']){delete _0x95f1d[_0xfb07('0x2f')];}_0x20f01a[_0xfb07('0x1e')](_0x24ff99)[_0xfb07('0x30')](_0x95f1d);};}exports[_0xfb07('0x31')]=function(_0x5dd4c9,_0x46d57e){var _0xd5290c={},_0x4ce9a4={},_0x36da2a={'count':0x0,'rows':[]};var _0x5dc353=_[_0xfb07('0x32')](db['Tag'][_0xfb07('0x33')],function(_0x4a8d4c){return{'name':_0x4a8d4c[_0xfb07('0x34')],'type':_0x4a8d4c[_0xfb07('0x35')][_0xfb07('0x36')]};});_0x4ce9a4[_0xfb07('0x37')]=_[_0xfb07('0x32')](_0x5dc353,_0xfb07('0x2f'));_0x4ce9a4['query']=_['keys'](_0x5dd4c9[_0xfb07('0x38')]);_0x4ce9a4[_0xfb07('0x39')]=_[_0xfb07('0x3a')](_0x4ce9a4[_0xfb07('0x37')],_0x4ce9a4['query']);_0xd5290c['attributes']=_[_0xfb07('0x3a')](_0x4ce9a4[_0xfb07('0x37')],qs[_0xfb07('0x3b')](_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x3b')]));_0xd5290c[_0xfb07('0x3c')]=_0xd5290c['attributes']['length']?_0xd5290c['attributes']:_0x4ce9a4[_0xfb07('0x37')];if(!_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x3d')](_0xfb07('0x3e'))){_0xd5290c['limit']=qs['limit'](_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x22')]);_0xd5290c['offset']=qs['offset'](_0x5dd4c9['query'][_0xfb07('0x20')]);}_0xd5290c[_0xfb07('0x3f')]=qs['sort'](_0x5dd4c9['query'][_0xfb07('0x40')]);_0xd5290c[_0xfb07('0x41')]=qs[_0xfb07('0x39')](_[_0xfb07('0x42')](_0x5dd4c9[_0xfb07('0x38')],_0x4ce9a4['filters']),_0x5dc353);if(_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x43')]){_0xd5290c[_0xfb07('0x41')]=_[_0xfb07('0x44')](_0xd5290c['where'],{'$or':_['map'](_0x5dc353,function(_0x2d40cb){if(_0x2d40cb[_0xfb07('0x35')]!==_0xfb07('0x45')){var _0xc5df59={};_0xc5df59[_0x2d40cb[_0xfb07('0x2f')]]={'$like':'%'+_0x5dd4c9[_0xfb07('0x38')][_0xfb07('0x43')]+'%'};return _0xc5df59;}})});}_0xd5290c=_['merge']({},_0xd5290c,_0x5dd4c9['options']);var _0x44dafb={'where':_0xd5290c[_0xfb07('0x41')]};return db['Tag']['count'](_0x44dafb)[_0xfb07('0x29')](function(_0x20d682){_0x36da2a[_0xfb07('0x46')]=_0x20d682;if(_0x5dd4c9['query']['includeAll']){_0xd5290c[_0xfb07('0x47')]=[{'all':!![]}];}return db[_0xfb07('0x48')][_0xfb07('0x49')](_0xd5290c);})[_0xfb07('0x29')](function(_0xb87b68){_0x36da2a[_0xfb07('0x4a')]=_0xb87b68;return _0x36da2a;})[_0xfb07('0x29')](respondWithFilteredResult(_0x46d57e,_0xd5290c))[_0xfb07('0x4b')](handleError(_0x46d57e,null));};exports[_0xfb07('0x4c')]=function(_0x492f1b,_0x41df3f){var _0x12c588={'raw':!![],'where':{'id':_0x492f1b[_0xfb07('0x4d')]['id']}},_0x3d6372={};_0x3d6372[_0xfb07('0x37')]=_[_0xfb07('0x4e')](db[_0xfb07('0x48')][_0xfb07('0x33')]);_0x3d6372[_0xfb07('0x38')]=_[_0xfb07('0x4e')](_0x492f1b['query']);_0x3d6372['filters']=_[_0xfb07('0x3a')](_0x3d6372[_0xfb07('0x37')],_0x3d6372['query']);_0x12c588[_0xfb07('0x3c')]=_[_0xfb07('0x3a')](_0x3d6372[_0xfb07('0x37')],qs[_0xfb07('0x3b')](_0x492f1b[_0xfb07('0x38')]['fields']));_0x12c588['attributes']=_0x12c588[_0xfb07('0x3c')][_0xfb07('0x4f')]?_0x12c588[_0xfb07('0x3c')]:_0x3d6372[_0xfb07('0x37')];if(_0x492f1b[_0xfb07('0x38')][_0xfb07('0x50')]){_0x12c588[_0xfb07('0x47')]=[{'all':!![]}];}_0x12c588=_[_0xfb07('0x44')]({},_0x12c588,_0x492f1b[_0xfb07('0x51')]);return db[_0xfb07('0x48')]['find'](_0x12c588)['then'](handleEntityNotFound(_0x41df3f,null))['then'](respondWithResult(_0x41df3f,null))[_0xfb07('0x4b')](handleError(_0x41df3f,null));};exports['create']=function(_0x2397f8,_0x31cca8){return db[_0xfb07('0x48')][_0xfb07('0x52')](_0x2397f8[_0xfb07('0x53')],{})[_0xfb07('0x29')](function(_0x4d464e){var _0x3b2cce=_0x2397f8[_0xfb07('0x54')][_0xfb07('0x2b')]({'plain':!![]});if(!_0x3b2cce)throw new Error(_0xfb07('0x55'));if(_0x3b2cce[_0xfb07('0x56')]==='user'){var _0x3cfb89=_0x4d464e[_0xfb07('0x2b')]({'plain':!![]});var _0x40fa4a=_0xfb07('0x2c');return db[_0xfb07('0x57')]['find']({'where':{'name':_0x40fa4a,'userProfileId':_0x3b2cce[_0xfb07('0x58')]},'raw':!![]})[_0xfb07('0x29')](function(_0x38b30e){if(_0x38b30e&&_0x38b30e[_0xfb07('0x59')]===0x0){return db[_0xfb07('0x5a')]['create']({'name':_0x3cfb89[_0xfb07('0x2f')],'resourceId':_0x3cfb89['id'],'type':_0x38b30e[_0xfb07('0x2f')],'sectionId':_0x38b30e['id']},{})[_0xfb07('0x29')](function(){return _0x4d464e;});}else{return _0x4d464e;}})[_0xfb07('0x4b')](function(_0x4e597d){logger[_0xfb07('0x2d')](_0xfb07('0x5b'),_0x4e597d);throw _0x4e597d;});}return _0x4d464e;})[_0xfb07('0x29')](respondWithResult(_0x31cca8,0xc9))[_0xfb07('0x4b')](handleError(_0x31cca8,null));};exports[_0xfb07('0x28')]=function(_0x165628,_0x353b33){if(_0x165628[_0xfb07('0x53')]['id']){delete _0x165628[_0xfb07('0x53')]['id'];}return db[_0xfb07('0x48')]['find']({'where':{'id':_0x165628[_0xfb07('0x4d')]['id']}})['then'](handleEntityNotFound(_0x353b33,null))[_0xfb07('0x29')](saveUpdates(_0x165628[_0xfb07('0x53')],null))[_0xfb07('0x29')](respondWithResult(_0x353b33,null))[_0xfb07('0x4b')](handleError(_0x353b33,null));};exports[_0xfb07('0x2a')]=function(_0x7746bb,_0x1c76af){return db['Tag']['find']({'where':{'id':_0x7746bb['params']['id']}})[_0xfb07('0x29')](handleEntityNotFound(_0x1c76af,null))[_0xfb07('0x29')](removeEntity(_0x1c76af,null))[_0xfb07('0x4b')](handleError(_0x1c76af,null));};
\ No newline at end of file
+var _0x9aea=['status','Content-Range','apply','reject','destroy','then','get','Tags','UserProfileResource','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','body','user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined'];(function(_0x4b8d5f,_0x4ab5c4){var _0x56e0be=function(_0x1c118e){while(--_0x1c118e){_0x4b8d5f['push'](_0x4b8d5f['shift']());}};_0x56e0be(++_0x4ab5c4);}(_0x9aea,0xdd));var _0xa9ae=function(_0x37540a,_0x4eb974){_0x37540a=_0x37540a-0x0;var _0x1c6386=_0x9aea[_0x37540a];return _0x1c6386;};'use strict';var emlformat=require(_0xa9ae('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa9ae('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa9ae('0x2'));var moment=require(_0xa9ae('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa9ae('0x4'));var util=require(_0xa9ae('0x5'));var path=require(_0xa9ae('0x6'));var sox=require(_0xa9ae('0x7'));var csv=require(_0xa9ae('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9ae('0x9'));var _=require(_0xa9ae('0xa'));var squel=require(_0xa9ae('0xb'));var crypto=require('crypto');var jsforce=require(_0xa9ae('0xc'));var deskjs=require(_0xa9ae('0xd'));var toCsv=require(_0xa9ae('0x8'));var querystring=require(_0xa9ae('0xe'));var Papa=require(_0xa9ae('0xf'));var Redis=require(_0xa9ae('0x10'));var authService=require(_0xa9ae('0x11'));var qs=require(_0xa9ae('0x12'));var as=require(_0xa9ae('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9ae('0x14'))('api');var utils=require(_0xa9ae('0x15'));var config=require(_0xa9ae('0x16'));var licenseUtil=require(_0xa9ae('0x17'));var db=require(_0xa9ae('0x18'))['db'];function respondWithStatusCode(_0x35f861,_0x33a72f){_0x33a72f=_0x33a72f||0xcc;return function(_0xa34271){if(_0xa34271){return _0x35f861[_0xa9ae('0x19')](_0x33a72f);}return _0x35f861['status'](_0x33a72f)[_0xa9ae('0x1a')]();};}function respondWithResult(_0x365e90,_0x10882e){_0x10882e=_0x10882e||0xc8;return function(_0x3f7f61){if(_0x3f7f61){return _0x365e90['status'](_0x10882e)[_0xa9ae('0x1b')](_0x3f7f61);}};}function respondWithFilteredResult(_0x1ec742,_0x31c03e){return function(_0x40b756){if(_0x40b756){var _0x77b0a4=typeof _0x31c03e[_0xa9ae('0x1c')]==='undefined'&&typeof _0x31c03e[_0xa9ae('0x1d')]===_0xa9ae('0x1e');var _0x3e31d9=_0x40b756['count'];var _0x4dbb30=_0x77b0a4?0x0:_0x31c03e[_0xa9ae('0x1c')];var _0x581345=_0x77b0a4?_0x40b756['count']:_0x31c03e[_0xa9ae('0x1c')]+_0x31c03e[_0xa9ae('0x1d')];var _0xbfd2ff;if(_0x581345>=_0x3e31d9){_0x581345=_0x3e31d9;_0xbfd2ff=0xc8;}else{_0xbfd2ff=0xce;}_0x1ec742[_0xa9ae('0x1f')](_0xbfd2ff);return _0x1ec742['set'](_0xa9ae('0x20'),_0x4dbb30+'-'+_0x581345+'/'+_0x3e31d9)[_0xa9ae('0x1b')](_0x40b756);}return null;};}function patchUpdates(_0x39f133){return function(_0x688153){try{jsonpatch[_0xa9ae('0x21')](_0x688153,_0x39f133,!![]);}catch(_0x2e204d){return BPromise[_0xa9ae('0x22')](_0x2e204d);}return _0x688153['save']();};}function saveUpdates(_0xc021cf,_0x4ca9a9){return function(_0x49dca9){if(_0x49dca9){return _0x49dca9['update'](_0xc021cf)['then'](function(_0x1afd07){return _0x1afd07;});}return null;};}function removeEntity(_0x4edd55,_0x13fb05){return function(_0x5093ad){if(_0x5093ad){return _0x5093ad[_0xa9ae('0x23')]()[_0xa9ae('0x24')](function(){var _0x93d637=_0x5093ad[_0xa9ae('0x25')]({'plain':!![]});var _0x12b061=_0xa9ae('0x26');return db[_0xa9ae('0x27')]['destroy']({'where':{'type':_0x12b061,'resourceId':_0x93d637['id']}})[_0xa9ae('0x24')](function(){return _0x5093ad;});})[_0xa9ae('0x24')](function(){_0x4edd55[_0xa9ae('0x1f')](0xcc)[_0xa9ae('0x1a')]();});}};}function handleEntityNotFound(_0x222db7,_0x428934){return function(_0xb12fa8){if(!_0xb12fa8){_0x222db7['sendStatus'](0x194);}return _0xb12fa8;};}function handleError(_0x489e88,_0x2f1a9f){_0x2f1a9f=_0x2f1a9f||0x1f4;return function(_0x3c324e){logger[_0xa9ae('0x28')](_0x3c324e[_0xa9ae('0x29')]);if(_0x3c324e[_0xa9ae('0x2a')]){delete _0x3c324e['name'];}_0x489e88['status'](_0x2f1a9f)[_0xa9ae('0x2b')](_0x3c324e);};}exports[_0xa9ae('0x2c')]=function(_0x372ec7,_0x3a48b7){var _0x314969={},_0x36bc28={},_0x5d0c84={'count':0x0,'rows':[]};var _0x5415f1=_[_0xa9ae('0x2d')](db[_0xa9ae('0x2e')][_0xa9ae('0x2f')],function(_0x3cd87a){return{'name':_0x3cd87a[_0xa9ae('0x30')],'type':_0x3cd87a[_0xa9ae('0x31')][_0xa9ae('0x32')]};});_0x36bc28[_0xa9ae('0x33')]=_['map'](_0x5415f1,_0xa9ae('0x2a'));_0x36bc28['query']=_[_0xa9ae('0x34')](_0x372ec7[_0xa9ae('0x35')]);_0x36bc28[_0xa9ae('0x36')]=_['intersection'](_0x36bc28[_0xa9ae('0x33')],_0x36bc28[_0xa9ae('0x35')]);_0x314969[_0xa9ae('0x37')]=_[_0xa9ae('0x38')](_0x36bc28[_0xa9ae('0x33')],qs['fields'](_0x372ec7[_0xa9ae('0x35')][_0xa9ae('0x39')]));_0x314969[_0xa9ae('0x37')]=_0x314969['attributes']['length']?_0x314969[_0xa9ae('0x37')]:_0x36bc28[_0xa9ae('0x33')];if(!_0x372ec7[_0xa9ae('0x35')][_0xa9ae('0x3a')]('nolimit')){_0x314969[_0xa9ae('0x1d')]=qs[_0xa9ae('0x1d')](_0x372ec7[_0xa9ae('0x35')][_0xa9ae('0x1d')]);_0x314969[_0xa9ae('0x1c')]=qs['offset'](_0x372ec7[_0xa9ae('0x35')]['offset']);}_0x314969[_0xa9ae('0x3b')]=qs[_0xa9ae('0x3c')](_0x372ec7[_0xa9ae('0x35')]['sort']);_0x314969[_0xa9ae('0x3d')]=qs[_0xa9ae('0x36')](_[_0xa9ae('0x3e')](_0x372ec7['query'],_0x36bc28[_0xa9ae('0x36')]),_0x5415f1);if(_0x372ec7[_0xa9ae('0x35')]['filter']){_0x314969[_0xa9ae('0x3d')]=_['merge'](_0x314969[_0xa9ae('0x3d')],{'$or':_[_0xa9ae('0x2d')](_0x5415f1,function(_0x4bbc74){if(_0x4bbc74[_0xa9ae('0x31')]!==_0xa9ae('0x3f')){var _0x234da5={};_0x234da5[_0x4bbc74[_0xa9ae('0x2a')]]={'$like':'%'+_0x372ec7[_0xa9ae('0x35')][_0xa9ae('0x40')]+'%'};return _0x234da5;}})});}_0x314969=_['merge']({},_0x314969,_0x372ec7[_0xa9ae('0x41')]);var _0xa12887={'where':_0x314969['where']};return db['Tag'][_0xa9ae('0x42')](_0xa12887)[_0xa9ae('0x24')](function(_0xc4f775){_0x5d0c84[_0xa9ae('0x42')]=_0xc4f775;if(_0x372ec7['query'][_0xa9ae('0x43')]){_0x314969[_0xa9ae('0x44')]=[{'all':!![]}];}return db[_0xa9ae('0x2e')][_0xa9ae('0x45')](_0x314969);})[_0xa9ae('0x24')](function(_0x2bef06){_0x5d0c84[_0xa9ae('0x46')]=_0x2bef06;return _0x5d0c84;})['then'](respondWithFilteredResult(_0x3a48b7,_0x314969))[_0xa9ae('0x47')](handleError(_0x3a48b7,null));};exports[_0xa9ae('0x48')]=function(_0x566cb0,_0x419ba7){var _0x542477={'raw':!![],'where':{'id':_0x566cb0[_0xa9ae('0x49')]['id']}},_0xb51a6c={};_0xb51a6c[_0xa9ae('0x33')]=_[_0xa9ae('0x34')](db[_0xa9ae('0x2e')][_0xa9ae('0x2f')]);_0xb51a6c[_0xa9ae('0x35')]=_['keys'](_0x566cb0[_0xa9ae('0x35')]);_0xb51a6c[_0xa9ae('0x36')]=_['intersection'](_0xb51a6c[_0xa9ae('0x33')],_0xb51a6c[_0xa9ae('0x35')]);_0x542477[_0xa9ae('0x37')]=_[_0xa9ae('0x38')](_0xb51a6c[_0xa9ae('0x33')],qs[_0xa9ae('0x39')](_0x566cb0['query'][_0xa9ae('0x39')]));_0x542477['attributes']=_0x542477[_0xa9ae('0x37')][_0xa9ae('0x4a')]?_0x542477['attributes']:_0xb51a6c['model'];if(_0x566cb0[_0xa9ae('0x35')][_0xa9ae('0x43')]){_0x542477[_0xa9ae('0x44')]=[{'all':!![]}];}_0x542477=_[_0xa9ae('0x4b')]({},_0x542477,_0x566cb0[_0xa9ae('0x41')]);return db[_0xa9ae('0x2e')][_0xa9ae('0x4c')](_0x542477)[_0xa9ae('0x24')](handleEntityNotFound(_0x419ba7,null))['then'](respondWithResult(_0x419ba7,null))['catch'](handleError(_0x419ba7,null));};exports[_0xa9ae('0x4d')]=function(_0x3cf89c,_0x4efe55){return db[_0xa9ae('0x2e')][_0xa9ae('0x4d')](_0x3cf89c[_0xa9ae('0x4e')],{})[_0xa9ae('0x24')](function(_0x36636f){var _0x104af2=_0x3cf89c[_0xa9ae('0x4f')][_0xa9ae('0x25')]({'plain':!![]});if(!_0x104af2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x104af2[_0xa9ae('0x50')]===_0xa9ae('0x4f')){var _0x5ea18d=_0x36636f[_0xa9ae('0x25')]({'plain':!![]});var _0x4abe30='Tags';return db['UserProfileSection'][_0xa9ae('0x4c')]({'where':{'name':_0x4abe30,'userProfileId':_0x104af2[_0xa9ae('0x51')]},'raw':!![]})['then'](function(_0x4840ea){if(_0x4840ea&&_0x4840ea['autoAssociation']===0x0){return db[_0xa9ae('0x27')]['create']({'name':_0x5ea18d[_0xa9ae('0x2a')],'resourceId':_0x5ea18d['id'],'type':_0x4840ea[_0xa9ae('0x2a')],'sectionId':_0x4840ea['id']},{})['then'](function(){return _0x36636f;});}else{return _0x36636f;}})[_0xa9ae('0x47')](function(_0x5cebe3){logger[_0xa9ae('0x28')](_0xa9ae('0x52'),_0x5cebe3);throw _0x5cebe3;});}return _0x36636f;})[_0xa9ae('0x24')](respondWithResult(_0x4efe55,0xc9))[_0xa9ae('0x47')](handleError(_0x4efe55,null));};exports[_0xa9ae('0x53')]=function(_0x233dd6,_0x1a04d4){if(_0x233dd6[_0xa9ae('0x4e')]['id']){delete _0x233dd6[_0xa9ae('0x4e')]['id'];}return db[_0xa9ae('0x2e')][_0xa9ae('0x4c')]({'where':{'id':_0x233dd6[_0xa9ae('0x49')]['id']}})['then'](handleEntityNotFound(_0x1a04d4,null))[_0xa9ae('0x24')](saveUpdates(_0x233dd6[_0xa9ae('0x4e')],null))[_0xa9ae('0x24')](respondWithResult(_0x1a04d4,null))[_0xa9ae('0x47')](handleError(_0x1a04d4,null));};exports[_0xa9ae('0x23')]=function(_0x59de12,_0x4fe9e7){return db[_0xa9ae('0x2e')][_0xa9ae('0x4c')]({'where':{'id':_0x59de12['params']['id']}})['then'](handleEntityNotFound(_0x4fe9e7,null))[_0xa9ae('0x24')](removeEntity(_0x4fe9e7,null))['catch'](handleError(_0x4fe9e7,null));};
\ No newline at end of file
index 7d36a56..3afa67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8982=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags','lodash'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x8982,0x178));var _0x2898=function(_0x33cf18,_0x2d7df3){_0x33cf18=_0x33cf18-0x0;var _0xe8afa2=_0x8982[_0x33cf18];return _0xe8afa2;};'use strict';var _=require(_0x2898('0x0'));var util=require('util');var logger=require(_0x2898('0x1'))(_0x2898('0x2'));var moment=require(_0x2898('0x3'));var BPromise=require(_0x2898('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2898('0x5'));var rimraf=require(_0x2898('0x6'));var config=require(_0x2898('0x7'));var attributes=require(_0x2898('0x8'));module[_0x2898('0x9')]=function(_0x40879b,_0x518942){return _0x40879b[_0x2898('0xa')](_0x2898('0xb'),attributes,{'tableName':_0x2898('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa11=['moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','tools_tags','lodash','util','../../config/logger','api'];(function(_0x1d0764,_0x2beb7c){var _0x423f49=function(_0x5334ee){while(--_0x5334ee){_0x1d0764['push'](_0x1d0764['shift']());}};_0x423f49(++_0x2beb7c);}(_0xaa11,0x15c));var _0x1aa1=function(_0x1a9eb8,_0x32c795){_0x1a9eb8=_0x1a9eb8-0x0;var _0xe8be84=_0xaa11[_0x1a9eb8];return _0xe8be84;};'use strict';var _=require(_0x1aa1('0x0'));var util=require(_0x1aa1('0x1'));var logger=require(_0x1aa1('0x2'))(_0x1aa1('0x3'));var moment=require(_0x1aa1('0x4'));var BPromise=require(_0x1aa1('0x5'));var rp=require(_0x1aa1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1aa1('0x7'));var config=require(_0x1aa1('0x8'));var attributes=require(_0x1aa1('0x9'));module['exports']=function(_0x1f9e3f,_0x20f805){return _0x1f9e3f['define']('Tag',attributes,{'tableName':_0x1aa1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92f6a1a..054124d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a5=['info','request\x20sent','debug','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x260f28,_0x5c1b56){var _0xfc8de6=function(_0x3636b3){while(--_0x3636b3){_0x260f28['push'](_0x260f28['shift']());}};_0xfc8de6(++_0x5c1b56);}(_0x61a5,0xf0));var _0x561a=function(_0x371d15,_0xd98587){_0x371d15=_0x371d15-0x0;var _0x32afdf=_0x61a5[_0x371d15];return _0x32afdf;};'use strict';var _=require(_0x561a('0x0'));var util=require('util');var moment=require(_0x561a('0x1'));var BPromise=require(_0x561a('0x2'));var rs=require(_0x561a('0x3'));var fs=require('fs');var Redis=require(_0x561a('0x4'));var db=require(_0x561a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x561a('0x6'))(_0x561a('0x7'));var config=require('../../config/environment');var jayson=require(_0x561a('0x8'));var client=jayson[_0x561a('0x9')][_0x561a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2646bd,_0x3d55f8,_0xfe091){return new BPromise(function(_0x1d5814,_0x4db87f){return client[_0x561a('0xb')](_0x2646bd,_0xfe091)['then'](function(_0x3534bb){logger[_0x561a('0xc')]('Tag,\x20%s,\x20%s',_0x3d55f8,_0x561a('0xd'));logger[_0x561a('0xe')]('Tag,\x20%s,\x20%s,\x20%s',_0x3d55f8,_0x561a('0xd'),JSON['stringify'](_0x3534bb));if(_0x3534bb[_0x561a('0xf')]){if(_0x3534bb[_0x561a('0xf')][_0x561a('0x10')]===0x1f4){logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);return _0x4db87f(_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);}logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x3534bb[_0x561a('0xf')]['message']);return _0x1d5814(_0x3534bb[_0x561a('0xf')][_0x561a('0x12')]);}else{logger[_0x561a('0xc')](_0x561a('0x11'),_0x3d55f8,_0x561a('0xd'));_0x1d5814(_0x3534bb[_0x561a('0x13')][_0x561a('0x12')]);}})[_0x561a('0x14')](function(_0x2690d9){logger[_0x561a('0xf')](_0x561a('0x11'),_0x3d55f8,_0x2690d9);_0x4db87f(_0x2690d9);});});}
\ No newline at end of file
+var _0xee24=['stringify','error','code','Tag,\x20%s,\x20%s','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s'];(function(_0x2503d3,_0x2bab02){var _0x14ae51=function(_0x3c9dca){while(--_0x3c9dca){_0x2503d3['push'](_0x2503d3['shift']());}};_0x14ae51(++_0x2bab02);}(_0xee24,0x1a6));var _0x4ee2=function(_0x5603bd,_0x4e146c){_0x5603bd=_0x5603bd-0x0;var _0x3e9d9f=_0xee24[_0x5603bd];return _0x3e9d9f;};'use strict';var _=require('lodash');var util=require(_0x4ee2('0x0'));var moment=require(_0x4ee2('0x1'));var BPromise=require('bluebird');var rs=require(_0x4ee2('0x2'));var fs=require('fs');var Redis=require(_0x4ee2('0x3'));var db=require(_0x4ee2('0x4'))['db'];var utils=require(_0x4ee2('0x5'));var logger=require('../../config/logger')(_0x4ee2('0x6'));var config=require(_0x4ee2('0x7'));var jayson=require(_0x4ee2('0x8'));var client=jayson[_0x4ee2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e6e11,_0x319d9d,_0xe966eb){return new BPromise(function(_0x9a963c,_0x8d7266){return client[_0x4ee2('0xa')](_0x2e6e11,_0xe966eb)[_0x4ee2('0xb')](function(_0x3b6028){logger['info']('Tag,\x20%s,\x20%s',_0x319d9d,_0x4ee2('0xc'));logger[_0x4ee2('0xd')](_0x4ee2('0xe'),_0x319d9d,_0x4ee2('0xc'),JSON[_0x4ee2('0xf')](_0x3b6028));if(_0x3b6028['error']){if(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x11')]===0x1f4){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x8d7266(_0x3b6028[_0x4ee2('0x10')][_0x4ee2('0x13')]);}logger[_0x4ee2('0x10')]('Tag,\x20%s,\x20%s',_0x319d9d,_0x3b6028['error'][_0x4ee2('0x13')]);return _0x9a963c(_0x3b6028[_0x4ee2('0x10')]['message']);}else{logger[_0x4ee2('0x14')](_0x4ee2('0x12'),_0x319d9d,_0x4ee2('0xc'));_0x9a963c(_0x3b6028[_0x4ee2('0x15')][_0x4ee2('0x13')]);}})[_0x4ee2('0x16')](function(_0x5e19f8){logger[_0x4ee2('0x10')](_0x4ee2('0x12'),_0x319d9d,_0x5e19f8);_0x8d7266(_0x5e19f8);});});}
\ No newline at end of file
index fda46ca..4a70b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index 95aebc5..2b0bf8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x281607,_0x52d31c){var _0x5c2974=function(_0x2c33f7){while(--_0x2c33f7){_0x281607['push'](_0x281607['shift']());}};_0x5c2974(++_0x52d31c);}(_0xb10b,0x12a));var _0xbb10=function(_0x56edce,_0x3718d7){_0x56edce=_0x56edce-0x0;var _0x3ea2fe=_0xb10b[_0x56edce];return _0x3ea2fe;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x1a09b9,_0x25d2f0){var _0x3baa17=function(_0x168e3d){while(--_0x168e3d){_0x1a09b9['push'](_0x1a09b9['shift']());}};_0x3baa17(++_0x25d2f0);}(_0x757a,0xde));var _0xa757=function(_0x414d7e,_0x36d978){_0x414d7e=_0x414d7e-0x0;var _0x56dae3=_0x757a[_0x414d7e];return _0x56dae3;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 94e17fe..579d892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc1=['all','spread','removeAgents','isArray','Fax','Queue:remove','TeamVoicePrefix','UserVoicePrefix','getAgents','order','pick','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./team.socket','register','status','offset','limit','undefined','count','set','json','save','update','then','sendStatus','stack','send','index','map','Team','rawAttributes','fieldName','type','key','name','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','filter','VIRTUAL','options','include','catch','show','params','length','includeAll','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','UserVoiceQueue','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','UserWhatsappQueue','VoicePrefixId','end','getQueues','isValidChannel','ValidationError','Unknown\x20channel','capitalize','channel','Queue','toLowerCase','Queues','addQueues','findOne','ids','removeQueues','remove','Voice','Chat','Mail','Sms','Openchannel','Whatsapp','transaction','through','QueueId','TeamVoiceQueue','penalty','findOrCreate','emit','Queue:save','User','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s'];(function(_0x4dae04,_0x23c8ea){var _0x2b82d2=function(_0xcf9d95){while(--_0xcf9d95){_0x4dae04['push'](_0x4dae04['shift']());}};_0x2b82d2(++_0x23c8ea);}(_0x2fc1,0x1d3));var _0x12fc=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x2fc1[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x12fc('0x0'));var rimraf=require(_0x12fc('0x1'));var zipdir=require(_0x12fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x12fc('0x3'));var moment=require(_0x12fc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x12fc('0x5'));var util=require(_0x12fc('0x6'));var path=require(_0x12fc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x12fc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x12fc('0x9'));var squel=require(_0x12fc('0xa'));var crypto=require(_0x12fc('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x12fc('0xc'));var querystring=require(_0x12fc('0xd'));var Papa=require(_0x12fc('0xe'));var Redis=require(_0x12fc('0xf'));var authService=require(_0x12fc('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x12fc('0x11'));var hardwareService=require(_0x12fc('0x12'));var logger=require(_0x12fc('0x13'))(_0x12fc('0x14'));var utils=require(_0x12fc('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x12fc('0x16'));var db=require('../../mysqldb')['db'];config[_0x12fc('0x17')]=_[_0x12fc('0x18')](config[_0x12fc('0x17')],{'host':_0x12fc('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x12fc('0x1a'))[_0x12fc('0x1b')](socket);function respondWithStatusCode(_0x471f2d,_0x5aa4b6){_0x5aa4b6=_0x5aa4b6||0xcc;return function(_0x447067){if(_0x447067){return _0x471f2d['sendStatus'](_0x5aa4b6);}return _0x471f2d[_0x12fc('0x1c')](_0x5aa4b6)['end']();};}function respondWithResult(_0x13c514,_0x208a1f){_0x208a1f=_0x208a1f||0xc8;return function(_0x3d88fc){if(_0x3d88fc){return _0x13c514[_0x12fc('0x1c')](_0x208a1f)['json'](_0x3d88fc);}};}function respondWithFilteredResult(_0xde2540,_0x33d990){return function(_0x4e9667){if(_0x4e9667){var _0x51af44=typeof _0x33d990[_0x12fc('0x1d')]==='undefined'&&typeof _0x33d990[_0x12fc('0x1e')]===_0x12fc('0x1f');var _0x320e40=_0x4e9667[_0x12fc('0x20')];var _0x1195f8=_0x51af44?0x0:_0x33d990['offset'];var _0x2a6f25=_0x51af44?_0x4e9667[_0x12fc('0x20')]:_0x33d990[_0x12fc('0x1d')]+_0x33d990[_0x12fc('0x1e')];var _0x50ecb8;if(_0x2a6f25>=_0x320e40){_0x2a6f25=_0x320e40;_0x50ecb8=0xc8;}else{_0x50ecb8=0xce;}_0xde2540['status'](_0x50ecb8);return _0xde2540[_0x12fc('0x21')]('Content-Range',_0x1195f8+'-'+_0x2a6f25+'/'+_0x320e40)[_0x12fc('0x22')](_0x4e9667);}return null;};}function patchUpdates(_0x1ba660){return function(_0xd46f14){try{jsonpatch['apply'](_0xd46f14,_0x1ba660,!![]);}catch(_0x404faa){return BPromise['reject'](_0x404faa);}return _0xd46f14[_0x12fc('0x23')]();};}function saveUpdates(_0x1c63d1,_0x2d75f0){return function(_0x1998da){if(_0x1998da){return _0x1998da[_0x12fc('0x24')](_0x1c63d1)[_0x12fc('0x25')](function(_0x4bbaa1){return _0x4bbaa1;});}return null;};}function handleEntityNotFound(_0x4ffe28,_0xca1476){return function(_0x414e07){if(!_0x414e07){_0x4ffe28[_0x12fc('0x26')](0x194);}return _0x414e07;};}function handleError(_0xc12bcb,_0x69bb79){_0x69bb79=_0x69bb79||0x1f4;return function(_0x41703c){logger['error'](_0x41703c[_0x12fc('0x27')]);if(_0x41703c['name']){delete _0x41703c['name'];}_0xc12bcb[_0x12fc('0x1c')](_0x69bb79)[_0x12fc('0x28')](_0x41703c);};}exports[_0x12fc('0x29')]=function(_0x1948ba,_0x46c3d6){var _0x284f94={},_0x307b05={},_0x39ed00={'count':0x0,'rows':[]};var _0x3ed184=_[_0x12fc('0x2a')](db[_0x12fc('0x2b')][_0x12fc('0x2c')],function(_0x3243ca){return{'name':_0x3243ca[_0x12fc('0x2d')],'type':_0x3243ca[_0x12fc('0x2e')][_0x12fc('0x2f')]};});_0x307b05['model']=_[_0x12fc('0x2a')](_0x3ed184,_0x12fc('0x30'));_0x307b05[_0x12fc('0x31')]=_[_0x12fc('0x32')](_0x1948ba[_0x12fc('0x31')]);_0x307b05['filters']=_[_0x12fc('0x33')](_0x307b05[_0x12fc('0x34')],_0x307b05['query']);_0x284f94[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x307b05[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0x1948ba[_0x12fc('0x31')][_0x12fc('0x36')]));_0x284f94[_0x12fc('0x35')]=_0x284f94[_0x12fc('0x35')]['length']?_0x284f94['attributes']:_0x307b05['model'];if(!_0x1948ba[_0x12fc('0x31')][_0x12fc('0x37')](_0x12fc('0x38'))){_0x284f94[_0x12fc('0x1e')]=qs[_0x12fc('0x1e')](_0x1948ba[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x284f94[_0x12fc('0x1d')]=qs[_0x12fc('0x1d')](_0x1948ba['query'][_0x12fc('0x1d')]);}_0x284f94['order']=qs[_0x12fc('0x39')](_0x1948ba[_0x12fc('0x31')]['sort']);_0x284f94[_0x12fc('0x3a')]=qs[_0x12fc('0x3b')](_['pick'](_0x1948ba['query'],_0x307b05['filters']),_0x3ed184);if(_0x1948ba['query'][_0x12fc('0x3c')]){_0x284f94[_0x12fc('0x3a')]=_['merge'](_0x284f94[_0x12fc('0x3a')],{'$or':_[_0x12fc('0x2a')](_0x3ed184,function(_0x4bbdfb){if(_0x4bbdfb[_0x12fc('0x2e')]!==_0x12fc('0x3d')){var _0x2286ad={};_0x2286ad[_0x4bbdfb[_0x12fc('0x30')]]={'$like':'%'+_0x1948ba[_0x12fc('0x31')][_0x12fc('0x3c')]+'%'};return _0x2286ad;}})});}_0x284f94=_['merge']({},_0x284f94,_0x1948ba[_0x12fc('0x3e')]);var _0x2ee459={'where':_0x284f94[_0x12fc('0x3a')]};return db[_0x12fc('0x2b')][_0x12fc('0x20')](_0x2ee459)['then'](function(_0x528cb9){_0x39ed00[_0x12fc('0x20')]=_0x528cb9;if(_0x1948ba[_0x12fc('0x31')]['includeAll']){_0x284f94[_0x12fc('0x3f')]=[{'all':!![]}];}return db[_0x12fc('0x2b')]['findAll'](_0x284f94);})[_0x12fc('0x25')](function(_0x44194c){_0x39ed00['rows']=_0x44194c;return _0x39ed00;})[_0x12fc('0x25')](respondWithFilteredResult(_0x46c3d6,_0x284f94))[_0x12fc('0x40')](handleError(_0x46c3d6,null));};exports[_0x12fc('0x41')]=function(_0x11d89f,_0x46ed2a){var _0xe8736d={'raw':![],'where':{'id':_0x11d89f[_0x12fc('0x42')]['id']}},_0x7cb27e={};_0x7cb27e[_0x12fc('0x34')]=_[_0x12fc('0x32')](db[_0x12fc('0x2b')][_0x12fc('0x2c')]);_0x7cb27e[_0x12fc('0x31')]=_['keys'](_0x11d89f[_0x12fc('0x31')]);_0x7cb27e['filters']=_[_0x12fc('0x33')](_0x7cb27e[_0x12fc('0x34')],_0x7cb27e[_0x12fc('0x31')]);_0xe8736d['attributes']=_['intersection'](_0x7cb27e['model'],qs['fields'](_0x11d89f[_0x12fc('0x31')][_0x12fc('0x36')]));_0xe8736d[_0x12fc('0x35')]=_0xe8736d['attributes'][_0x12fc('0x43')]?_0xe8736d[_0x12fc('0x35')]:_0x7cb27e['model'];if(_0x11d89f[_0x12fc('0x31')][_0x12fc('0x44')]){_0xe8736d[_0x12fc('0x3f')]=[{'all':!![]}];}_0xe8736d=_[_0x12fc('0x45')]({},_0xe8736d,_0x11d89f[_0x12fc('0x3e')]);return db[_0x12fc('0x2b')][_0x12fc('0x46')](_0xe8736d)[_0x12fc('0x25')](handleEntityNotFound(_0x46ed2a,null))[_0x12fc('0x25')](respondWithResult(_0x46ed2a,null))[_0x12fc('0x40')](handleError(_0x46ed2a,null));};exports['create']=function(_0x23d7a1,_0x3b029c){return db['Team'][_0x12fc('0x47')](_0x23d7a1[_0x12fc('0x48')],{})['then'](function(_0x603125){var _0x434e2c=_0x23d7a1[_0x12fc('0x49')][_0x12fc('0x4a')]({'plain':!![]});if(!_0x434e2c)throw new Error(_0x12fc('0x4b'));if(_0x434e2c[_0x12fc('0x4c')]===_0x12fc('0x49')){var _0x1efb22=_0x603125[_0x12fc('0x4a')]({'plain':!![]});var _0x4eb272=_0x12fc('0x4d');return db[_0x12fc('0x4e')][_0x12fc('0x46')]({'where':{'name':_0x4eb272,'userProfileId':_0x434e2c[_0x12fc('0x4f')]},'raw':!![]})[_0x12fc('0x25')](function(_0x1c048e){if(_0x1c048e&&_0x1c048e[_0x12fc('0x50')]===0x0){return db[_0x12fc('0x51')][_0x12fc('0x47')]({'name':_0x1efb22[_0x12fc('0x30')],'resourceId':_0x1efb22['id'],'type':_0x1c048e[_0x12fc('0x30')],'sectionId':_0x1c048e['id']},{})[_0x12fc('0x25')](function(){return _0x603125;});}else{return _0x603125;}})[_0x12fc('0x40')](function(_0x2bb9cf){logger[_0x12fc('0x52')](_0x12fc('0x53'),_0x2bb9cf);throw _0x2bb9cf;});}return _0x603125;})[_0x12fc('0x25')](respondWithResult(_0x3b029c,0xc9))[_0x12fc('0x40')](handleError(_0x3b029c,null));};exports[_0x12fc('0x24')]=function(_0x48df68,_0x140dfe){if(_0x48df68['body']['id']){delete _0x48df68[_0x12fc('0x48')]['id'];}return db[_0x12fc('0x2b')][_0x12fc('0x46')]({'where':{'id':_0x48df68['params']['id']}})[_0x12fc('0x25')](handleEntityNotFound(_0x140dfe,null))[_0x12fc('0x25')](saveUpdates(_0x48df68[_0x12fc('0x48')],null))[_0x12fc('0x25')](respondWithResult(_0x140dfe,null))[_0x12fc('0x40')](handleError(_0x140dfe,null));};exports[_0x12fc('0x54')]=function(_0xae59e1,_0x2435d4){var _0x29f0b0=_0xae59e1['params']['id'];var _0x3f6df1=[];return db[_0x12fc('0x55')]['transaction'](function(_0xdb4505){var _0x16eebc=_0x12fc('0x56')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x16eebc,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505})[_0x12fc('0x25')](function(_0x1faf80){_0x3f6df1=_[_0x12fc('0x2a')](_0x1faf80,function(_0x78e723){return Number(_0x78e723[_0x12fc('0x5a')]);});})[_0x12fc('0x25')](function(){var _0x8f6565=_0x12fc('0x5b')+_0x29f0b0;return db[_0x12fc('0x55')]['query'](_0x8f6565,{'type':db['Sequelize'][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x35a606){var _0x18aa18=_[_0x12fc('0x2a')](_0x35a606,function(_0x27a144){return Number(_0x27a144['VoiceQueueId']);});return db[_0x12fc('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'VoiceQueueId':{'$in':_0x18aa18}},'transaction':_0xdb4505});})['then'](function(){var _0x2d4275='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x2d4275,{'type':db[_0x12fc('0x57')]['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0xcbfe41){var _0x91436c=_[_0x12fc('0x2a')](_0xcbfe41,function(_0x187625){return Number(_0x187625['MailQueueId']);});return db['UserMailQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'MailQueueId':{'$in':_0x91436c}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x3c97b9='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x3c97b9,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x1ac259){var _0xd8fe8c=_[_0x12fc('0x2a')](_0x1ac259,function(_0x1bafff){return Number(_0x1bafff[_0x12fc('0x5d')]);});return db['UserSmsQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'SmsQueueId':{'$in':_0xd8fe8c}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x2153e3=_0x12fc('0x5e')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x2153e3,{'type':db[_0x12fc('0x57')]['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x596098){var _0x5cf2a0=_['map'](_0x596098,function(_0x10956d){return Number(_0x10956d[_0x12fc('0x5f')]);});return db['UserChatQueue'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'ChatQueueId':{'$in':_0x5cf2a0}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x111e65=_0x12fc('0x60')+_0x29f0b0;return db[_0x12fc('0x55')]['query'](_0x111e65,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x3b26e7){var _0x352d49=_['map'](_0x3b26e7,function(_0x571664){return Number(_0x571664[_0x12fc('0x61')]);});return db[_0x12fc('0x62')]['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'FaxQueueId':{'$in':_0x352d49}},'transaction':_0xdb4505});})['then'](function(){var _0x5edeb4=_0x12fc('0x63')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x5edeb4,{'type':db[_0x12fc('0x57')][_0x12fc('0x58')][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x289601){var _0x4274be=_[_0x12fc('0x2a')](_0x289601,function(_0x593c0e){return Number(_0x593c0e[_0x12fc('0x64')]);});return db['UserOpenchannelQueue']['destroy']({'where':{'UserId':{'$in':_0x3f6df1},'OpenchannelQueueId':{'$in':_0x4274be}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){var _0x28754b=_0x12fc('0x65')+_0x29f0b0;return db[_0x12fc('0x55')][_0x12fc('0x31')](_0x28754b,{'type':db['Sequelize']['QueryTypes'][_0x12fc('0x59')],'raw':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0xfeb3c8){var _0x46d66e=_[_0x12fc('0x2a')](_0xfeb3c8,function(_0x12d8f3){return Number(_0x12d8f3['WhatsappQueueId']);});return db[_0x12fc('0x66')][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'WhatsappQueueId':{'$in':_0x46d66e}},'transaction':_0xdb4505});})[_0x12fc('0x25')](function(){return db['TeamVoicePrefix'][_0x12fc('0x46')]({'where':{'TeamId':_0x29f0b0}});})[_0x12fc('0x25')](function(_0x206223){if(_0x206223===null){return;}return db['UserVoicePrefix'][_0x12fc('0x54')]({'where':{'UserId':{'$in':_0x3f6df1},'VoicePrefixId':_0x206223[_0x12fc('0x67')]},'transaction':_0xdb4505});})['then'](function(){return db[_0x12fc('0x2b')][_0x12fc('0x54')]({'where':{'id':_0x29f0b0},'cascade':!![],'transaction':_0xdb4505});})[_0x12fc('0x25')](function(_0x4c4351){if(_0x4c4351===0x0){_0x2435d4[_0x12fc('0x26')](0x194);}else{return db[_0x12fc('0x51')][_0x12fc('0x54')]({'where':{'type':_0x12fc('0x4d'),'resourceId':_0x29f0b0},'cascade':!![],'transaction':_0xdb4505})['then'](function(){_0x2435d4[_0x12fc('0x1c')](0xcc)[_0x12fc('0x68')]();});}})[_0x12fc('0x40')](function(_0x26a431){_0x2435d4[_0x12fc('0x1c')](0x1f4)[_0x12fc('0x28')](_0x26a431);});});};exports[_0x12fc('0x69')]=function(_0xdbe2a7,_0x42f5bd,_0x250e47){return db[_0x12fc('0x2b')]['findOne']({'where':{'id':_0xdbe2a7[_0x12fc('0x42')]['id']}})['then'](handleEntityNotFound(_0x42f5bd,null))[_0x12fc('0x25')](function(_0x4442d2){if(!_0xdbe2a7[_0x12fc('0x31')]['channel']||!utils[_0x12fc('0x6a')](_0xdbe2a7[_0x12fc('0x31')]['channel'])){throw new db[(_0x12fc('0x57'))][(_0x12fc('0x6b'))](_0x12fc('0x6c'));}var _0x46f44f={};var _0x2309de={};_0x2309de[_0x12fc('0x34')]=_[_0x12fc('0x32')](db[_[_0x12fc('0x6d')](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x6e')]['toLowerCase']())+_0x12fc('0x6f')][_0x12fc('0x2c')]);_0x2309de['query']=_['keys'](_0xdbe2a7[_0x12fc('0x31')]);_0x2309de[_0x12fc('0x3b')]=_[_0x12fc('0x33')](_0x2309de['model'],_0x2309de[_0x12fc('0x31')]);_0x46f44f[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x2309de[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x36')]));_0x46f44f['attributes']=_0x46f44f[_0x12fc('0x35')][_0x12fc('0x43')]?_0x46f44f[_0x12fc('0x35')]:_0x2309de['model'];_0x46f44f[_0x12fc('0x1e')]=qs['limit'](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x46f44f[_0x12fc('0x1d')]=qs['offset'](_0xdbe2a7[_0x12fc('0x31')][_0x12fc('0x1d')]);_0x46f44f['order']=qs[_0x12fc('0x39')](_0xdbe2a7[_0x12fc('0x31')]['sort']);_0x46f44f[_0x12fc('0x3a')]=qs[_0x12fc('0x3b')](_['pick'](_0xdbe2a7[_0x12fc('0x31')],_0x2309de[_0x12fc('0x3b')]));_0x46f44f=_['merge']({},_0x46f44f,_0xdbe2a7['options']);return _0x4442d2[_0x12fc('0x4a')+_[_0x12fc('0x6d')](_0xdbe2a7['query'][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x46f44f);})[_0x12fc('0x25')](respondWithResult(_0x42f5bd,null))[_0x12fc('0x40')](handleError(_0x42f5bd,null));};exports[_0x12fc('0x72')]=function(_0x275933,_0xfad8e3,_0x572333){return db['Team'][_0x12fc('0x73')]({'where':{'id':_0x275933[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](function(_0x22fa6e){if(_0x22fa6e){if(!_0x275933['body'][_0x12fc('0x6e')]||!utils[_0x12fc('0x6a')](_0x275933[_0x12fc('0x48')][_0x12fc('0x6e')])){throw new db[(_0x12fc('0x57'))][(_0x12fc('0x6b'))](_0x12fc('0x6c'));}return _0x22fa6e['add'+_['capitalize'](_0x275933['body'][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x275933['body'][_0x12fc('0x74')]);}return null;})[_0x12fc('0x25')](handleEntityNotFound(_0xfad8e3,null))['then'](respondWithStatusCode(_0xfad8e3,null))['catch'](handleError(_0xfad8e3,null));};exports[_0x12fc('0x75')]=function(_0x1c0a3c,_0x4aff16,_0x5bb3a4){return db[_0x12fc('0x2b')][_0x12fc('0x73')]({'where':{'id':_0x1c0a3c[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](function(_0x3faa13){if(_0x3faa13){if(!_0x1c0a3c[_0x12fc('0x31')][_0x12fc('0x6e')]||!utils[_0x12fc('0x6a')](_0x1c0a3c['query'][_0x12fc('0x6e')])){throw new db[(_0x12fc('0x57'))]['ValidationError']('Unknown\x20channel');}return _0x3faa13[_0x12fc('0x76')+_['capitalize'](_0x1c0a3c[_0x12fc('0x31')][_0x12fc('0x6e')][_0x12fc('0x70')]())+_0x12fc('0x71')](_0x1c0a3c['query'][_0x12fc('0x74')]);}return null;})['then'](handleEntityNotFound(_0x4aff16,null))[_0x12fc('0x25')](respondWithStatusCode(_0x4aff16,null))[_0x12fc('0x40')](handleError(_0x4aff16,null));};exports['addAgents']=function(_0x3178fb,_0x4383d9){var _0x262e55=_['isArray'](_0x3178fb[_0x12fc('0x48')][_0x12fc('0x74')])?_0x3178fb[_0x12fc('0x48')][_0x12fc('0x74')]:[_0x3178fb['body'][_0x12fc('0x74')]];var _0x35d902=_0x3178fb['params']['id'];return db[_0x12fc('0x2b')]['find']({'where':{'id':_0x35d902}})['then'](handleEntityNotFound(_0x4383d9,null))[_0x12fc('0x25')](function(_0x54647d){if(_0x54647d){var _0x333669=[_0x12fc('0x77'),_0x12fc('0x78'),_0x12fc('0x79'),_0x12fc('0x7a'),'Fax',_0x12fc('0x7b'),_0x12fc('0x7c')];return db['sequelize'][_0x12fc('0x7d')](function(_0x485b9f){var _0x4db7b5=_[_0x12fc('0x2a')](_0x333669,function(_0x5a52f8){var _0xead773={'attributes':['id','name']};if(_0x5a52f8===_0x12fc('0x77')){_0xead773[_0x12fc('0x7e')]={'attributes':['penalty']};}return _0x54647d[_0x12fc('0x4a')+_0x5a52f8+_0x12fc('0x71')](_0xead773)[_0x12fc('0x25')](function(_0x3e95d6){var _0x540604=_[_0x12fc('0x2a')](_0x3e95d6,function(_0x5e6e4c){var _0x3cb86c=_['map'](_0x262e55,function(_0x44ccd7){var _0x1a1825={'where':{'UserId':_0x44ccd7,[_0x5a52f8+_0x12fc('0x7f')]:_0x5e6e4c['id']},'transaction':_0x485b9f};if(_0x5a52f8===_0x12fc('0x77')){_0x1a1825[_0x12fc('0x18')]={'penalty':_0x5e6e4c[_0x12fc('0x80')][_0x12fc('0x81')]};}return db['User'+_0x5a52f8+_0x12fc('0x6f')][_0x12fc('0x82')](_0x1a1825)[_0x12fc('0x25')](function(){socket[_0x12fc('0x83')]('user'+_0x5a52f8+_0x12fc('0x84'),{'UserId':_0x44ccd7,[_0x5a52f8+_0x12fc('0x7f')]:_0x5e6e4c['id']});if(_0x5a52f8!==_0x12fc('0x77')){return;}return db[_0x12fc('0x85')]['findAll']({'where':{'id':_0x262e55,'online':0x1},'attributes':['id','name','online',_0x12fc('0x86'),_0x12fc('0x87')],'raw':!![]})[_0x12fc('0x25')](function(_0x56164e){var _0x17de60=_[_0x12fc('0x2a')](_0x56164e,function(_0x25789e){return db[_0x12fc('0x88')][_0x12fc('0x89')]({'membername':_0x25789e[_0x12fc('0x30')],'UserId':_0x25789e['id'],'queue_name':_0x5e6e4c[_0x12fc('0x30')],'VoiceQueueId':_0x5e6e4c['id'],'interface':_[_0x12fc('0x8a')](_0x25789e[_0x12fc('0x87')])?util[_0x12fc('0x8b')](_0x12fc('0x8c'),_0x25789e['name']):_0x25789e[_0x12fc('0x87')],'paused':_0x25789e['voicePause']||![],'penalty':_0x5e6e4c[_0x12fc('0x80')][_0x12fc('0x81')]},{'transaction':_0x485b9f});});return Promise[_0x12fc('0x8d')](_0x17de60);});});});return Promise[_0x12fc('0x8d')](_0x3cb86c);});return Promise['all'](_0x540604);})['then'](function(){return db['TeamVoicePrefix'][_0x12fc('0x73')]({'where':{'teamId':_0x35d902}})[_0x12fc('0x25')](function(_0x4f1d83){if(_0x4f1d83){var _0x2c3a21=_[_0x12fc('0x2a')](_0x262e55,function(_0x333499){db['UserVoicePrefix'][_0x12fc('0x89')]({'UserId':_0x333499,'VoicePrefixId':_0x4f1d83[_0x12fc('0x67')]});});return Promise[_0x12fc('0x8d')](_0x2c3a21);}});});});return Promise['all'](_0x4db7b5)[_0x12fc('0x25')](function(){return _0x54647d['addAgents'](_0x262e55,{'transaction':_0x485b9f})[_0x12fc('0x8e')](function(_0x33d9e0){return _0x33d9e0;});});});}})['then'](respondWithResult(_0x4383d9,null))['catch'](handleError(_0x4383d9,null));};exports[_0x12fc('0x8f')]=function(_0x196fae,_0x4989ff){var _0x48ec24=_[_0x12fc('0x90')](_0x196fae[_0x12fc('0x31')]['ids'])?_0x196fae[_0x12fc('0x31')]['ids']:[_0x196fae['query'][_0x12fc('0x74')]];var _0x205701=_0x196fae[_0x12fc('0x42')]['id'];return db['Team']['find']({'where':{'id':_0x205701}})[_0x12fc('0x25')](handleEntityNotFound(_0x4989ff,null))['then'](function(_0x160d7f){if(_0x160d7f){var _0x1d4c3c=[_0x12fc('0x77'),'Chat',_0x12fc('0x79'),_0x12fc('0x7a'),_0x12fc('0x91'),'Openchannel',_0x12fc('0x7c')];return db[_0x12fc('0x55')][_0x12fc('0x7d')](function(_0x585233){var _0x167559=_[_0x12fc('0x2a')](_0x1d4c3c,function(_0x27cce3){var _0x3ae54d={'attributes':['id','name']};return _0x160d7f[_0x12fc('0x4a')+_0x27cce3+_0x12fc('0x71')](_0x3ae54d)['then'](function(_0x8561e8){var _0x5e0c4c=_[_0x12fc('0x2a')](_0x8561e8,function(_0x5f38cc){return _0x5f38cc[_0x12fc('0x8f')](_0x48ec24,{'transaction':_0x585233})[_0x12fc('0x25')](function(){var _0x55e7f5=_['map'](_0x48ec24,function(_0x43f98e){socket['emit'](_0x12fc('0x49')+_0x27cce3+_0x12fc('0x92'),{'UserId':Number(_0x43f98e),[_0x27cce3+_0x12fc('0x7f')]:_0x5f38cc['id']});if(_0x27cce3!==_0x12fc('0x77')){return;}return db[_0x12fc('0x88')][_0x12fc('0x54')]({'where':{'VoiceQueueId':_0x5f38cc['id'],'UserId':_0x43f98e},'transaction':_0x585233});});return Promise['all'](_0x55e7f5);});});return Promise[_0x12fc('0x8d')](_0x5e0c4c);});});return Promise[_0x12fc('0x8d')](_0x167559)[_0x12fc('0x25')](function(){return _0x160d7f['removeAgents'](_0x48ec24,{'transaction':_0x585233});})[_0x12fc('0x25')](function(){return db[_0x12fc('0x93')][_0x12fc('0x73')]({'where':{'teamId':_0x205701}})[_0x12fc('0x25')](function(_0x58b620){if(_0x58b620){var _0x24e63c=_[_0x12fc('0x2a')](_0x48ec24,function(_0x27f08d){db[_0x12fc('0x94')][_0x12fc('0x54')]({'where':{'UserId':_0x27f08d,'VoicePrefixId':_0x58b620['VoicePrefixId']}});});return Promise[_0x12fc('0x8d')](_0x24e63c);}});});});}})[_0x12fc('0x25')](respondWithStatusCode(_0x4989ff,null))[_0x12fc('0x40')](handleError(_0x4989ff,null));};exports[_0x12fc('0x95')]=function(_0xefbc6,_0x1e1b86,_0x479128){var _0x36f62a={};var _0x568d10={};var _0xc8c09a;var _0x11e79c;return db[_0x12fc('0x2b')]['findOne']({'where':{'id':_0xefbc6[_0x12fc('0x42')]['id']}})[_0x12fc('0x25')](handleEntityNotFound(_0x1e1b86,null))[_0x12fc('0x25')](function(_0x35e5cc){if(_0x35e5cc){_0xc8c09a=_0x35e5cc;_0x568d10['model']=_[_0x12fc('0x32')](db[_0x12fc('0x85')][_0x12fc('0x2c')]);_0x568d10['query']=_[_0x12fc('0x32')](_0xefbc6['query']);_0x568d10['filters']=_[_0x12fc('0x33')](_0x568d10['model'],_0x568d10[_0x12fc('0x31')]);_0x36f62a[_0x12fc('0x35')]=_[_0x12fc('0x33')](_0x568d10[_0x12fc('0x34')],qs[_0x12fc('0x36')](_0xefbc6[_0x12fc('0x31')][_0x12fc('0x36')]));_0x36f62a[_0x12fc('0x35')]=_0x36f62a['attributes'][_0x12fc('0x43')]?_0x36f62a[_0x12fc('0x35')]:_0x568d10[_0x12fc('0x34')];_0x36f62a[_0x12fc('0x96')]=qs[_0x12fc('0x39')](_0xefbc6['query'][_0x12fc('0x39')]);_0x36f62a['where']=qs[_0x12fc('0x3b')](_[_0x12fc('0x97')](_0xefbc6[_0x12fc('0x31')],_0x568d10[_0x12fc('0x3b')]));if(_0xefbc6['query'][_0x12fc('0x3c')]){_0x36f62a['where']=_[_0x12fc('0x45')](_0x36f62a[_0x12fc('0x3a')],{'$or':_['map'](_0x36f62a[_0x12fc('0x35')],function(_0x296ea1){var _0x1553fa={};_0x1553fa[_0x296ea1]={'$like':'%'+_0xefbc6[_0x12fc('0x31')]['filter']+'%'};return _0x1553fa;})});}_0x36f62a=_[_0x12fc('0x45')]({},_0x36f62a,_0xefbc6[_0x12fc('0x3e')]);return _0xc8c09a[_0x12fc('0x95')](_0x36f62a);}})[_0x12fc('0x25')](function(_0xe63bc3){if(_0xe63bc3){_0x11e79c=_0xe63bc3[_0x12fc('0x43')];if(!_0xefbc6[_0x12fc('0x31')][_0x12fc('0x37')](_0x12fc('0x38'))){_0x36f62a[_0x12fc('0x1e')]=qs[_0x12fc('0x1e')](_0xefbc6[_0x12fc('0x31')][_0x12fc('0x1e')]);_0x36f62a[_0x12fc('0x1d')]=qs[_0x12fc('0x1d')](_0xefbc6[_0x12fc('0x31')]['offset']);}return _0xc8c09a['getAgents'](_0x36f62a);}})[_0x12fc('0x25')](function(_0x33cbae){if(_0x33cbae){return _0x33cbae?{'count':_0x11e79c,'rows':_0x33cbae}:null;}})['then'](respondWithResult(_0x1e1b86,null))[_0x12fc('0x40')](handleError(_0x1e1b86,null));};
\ No newline at end of file
+var _0x7ad2=['zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./team.socket','register','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','sendStatus','error','stack','name','send','map','Team','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','then','include','findAll','catch','show','length','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','destroy','sequelize','transaction','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','add','ids','removeQueues','remove','addAgents','isArray','Chat','Mail','Fax','Openchannel','Voice','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','voicePause','interface','UserVoiceQueueRt','upsert','format','SIP/%s','all','UserVoicePrefix','removeAgents','Whatsapp','getAgents','order'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x7ad2,0x134));var _0x27ad=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0x7ad2[_0x18a436];return _0x5c2cf8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x27ad('0x0'));var jsonpatch=require(_0x27ad('0x1'));var rp=require(_0x27ad('0x2'));var moment=require('moment');var BPromise=require(_0x27ad('0x3'));var Mustache=require('mustache');var util=require(_0x27ad('0x4'));var path=require(_0x27ad('0x5'));var sox=require(_0x27ad('0x6'));var csv=require(_0x27ad('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x27ad('0x8'));var _=require(_0x27ad('0x9'));var squel=require(_0x27ad('0xa'));var crypto=require(_0x27ad('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x27ad('0xc'));var toCsv=require('to-csv');var querystring=require(_0x27ad('0xd'));var Papa=require(_0x27ad('0xe'));var Redis=require(_0x27ad('0xf'));var authService=require(_0x27ad('0x10'));var qs=require(_0x27ad('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x27ad('0x12'));var logger=require(_0x27ad('0x13'))(_0x27ad('0x14'));var utils=require('../../config/utils');var config=require(_0x27ad('0x15'));var licenseUtil=require(_0x27ad('0x16'));var db=require(_0x27ad('0x17'))['db'];config['redis']=_[_0x27ad('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x27ad('0x19'))(new Redis(config['redis']));require(_0x27ad('0x1a'))[_0x27ad('0x1b')](socket);function respondWithStatusCode(_0x30a6b8,_0x18e1b2){_0x18e1b2=_0x18e1b2||0xcc;return function(_0x439609){if(_0x439609){return _0x30a6b8['sendStatus'](_0x18e1b2);}return _0x30a6b8[_0x27ad('0x1c')](_0x18e1b2)[_0x27ad('0x1d')]();};}function respondWithResult(_0x30ae0d,_0x522a39){_0x522a39=_0x522a39||0xc8;return function(_0x313608){if(_0x313608){return _0x30ae0d['status'](_0x522a39)[_0x27ad('0x1e')](_0x313608);}};}function respondWithFilteredResult(_0x4655ea,_0x1309c2){return function(_0x516c7e){if(_0x516c7e){var _0x487e97=typeof _0x1309c2['offset']===_0x27ad('0x1f')&&typeof _0x1309c2[_0x27ad('0x20')]===_0x27ad('0x1f');var _0x170f52=_0x516c7e[_0x27ad('0x21')];var _0x3beb54=_0x487e97?0x0:_0x1309c2[_0x27ad('0x22')];var _0x3ba54b=_0x487e97?_0x516c7e[_0x27ad('0x21')]:_0x1309c2[_0x27ad('0x22')]+_0x1309c2['limit'];var _0x1b81a9;if(_0x3ba54b>=_0x170f52){_0x3ba54b=_0x170f52;_0x1b81a9=0xc8;}else{_0x1b81a9=0xce;}_0x4655ea['status'](_0x1b81a9);return _0x4655ea['set'](_0x27ad('0x23'),_0x3beb54+'-'+_0x3ba54b+'/'+_0x170f52)['json'](_0x516c7e);}return null;};}function patchUpdates(_0x1a51ca){return function(_0x7ed21){try{jsonpatch[_0x27ad('0x24')](_0x7ed21,_0x1a51ca,!![]);}catch(_0x34cbce){return BPromise['reject'](_0x34cbce);}return _0x7ed21[_0x27ad('0x25')]();};}function saveUpdates(_0x5df19e,_0x43fee3){return function(_0x1803d6){if(_0x1803d6){return _0x1803d6[_0x27ad('0x26')](_0x5df19e)['then'](function(_0x353449){return _0x353449;});}return null;};}function handleEntityNotFound(_0x25b0b6,_0x1fde36){return function(_0x5770e2){if(!_0x5770e2){_0x25b0b6[_0x27ad('0x27')](0x194);}return _0x5770e2;};}function handleError(_0x1eb04d,_0x49057a){_0x49057a=_0x49057a||0x1f4;return function(_0x1c947e){logger[_0x27ad('0x28')](_0x1c947e[_0x27ad('0x29')]);if(_0x1c947e[_0x27ad('0x2a')]){delete _0x1c947e[_0x27ad('0x2a')];}_0x1eb04d[_0x27ad('0x1c')](_0x49057a)[_0x27ad('0x2b')](_0x1c947e);};}exports['index']=function(_0x493003,_0x1631a2){var _0x493312={},_0x450261={},_0x421687={'count':0x0,'rows':[]};var _0x568e46=_[_0x27ad('0x2c')](db[_0x27ad('0x2d')][_0x27ad('0x2e')],function(_0x2b3ed8){return{'name':_0x2b3ed8[_0x27ad('0x2f')],'type':_0x2b3ed8[_0x27ad('0x30')]['key']};});_0x450261[_0x27ad('0x31')]=_[_0x27ad('0x2c')](_0x568e46,'name');_0x450261[_0x27ad('0x32')]=_[_0x27ad('0x33')](_0x493003[_0x27ad('0x32')]);_0x450261[_0x27ad('0x34')]=_[_0x27ad('0x35')](_0x450261[_0x27ad('0x31')],_0x450261[_0x27ad('0x32')]);_0x493312['attributes']=_[_0x27ad('0x35')](_0x450261[_0x27ad('0x31')],qs['fields'](_0x493003['query'][_0x27ad('0x36')]));_0x493312['attributes']=_0x493312[_0x27ad('0x37')]['length']?_0x493312[_0x27ad('0x37')]:_0x450261[_0x27ad('0x31')];if(!_0x493003['query'][_0x27ad('0x38')](_0x27ad('0x39'))){_0x493312[_0x27ad('0x20')]=qs[_0x27ad('0x20')](_0x493003[_0x27ad('0x32')][_0x27ad('0x20')]);_0x493312[_0x27ad('0x22')]=qs[_0x27ad('0x22')](_0x493003['query']['offset']);}_0x493312['order']=qs[_0x27ad('0x3a')](_0x493003[_0x27ad('0x32')][_0x27ad('0x3a')]);_0x493312[_0x27ad('0x3b')]=qs['filters'](_[_0x27ad('0x3c')](_0x493003['query'],_0x450261[_0x27ad('0x34')]),_0x568e46);if(_0x493003[_0x27ad('0x32')][_0x27ad('0x3d')]){_0x493312['where']=_[_0x27ad('0x3e')](_0x493312[_0x27ad('0x3b')],{'$or':_[_0x27ad('0x2c')](_0x568e46,function(_0x4e5870){if(_0x4e5870[_0x27ad('0x30')]!=='VIRTUAL'){var _0x139ecb={};_0x139ecb[_0x4e5870[_0x27ad('0x2a')]]={'$like':'%'+_0x493003[_0x27ad('0x32')]['filter']+'%'};return _0x139ecb;}})});}_0x493312=_[_0x27ad('0x3e')]({},_0x493312,_0x493003[_0x27ad('0x3f')]);var _0x5e3eff={'where':_0x493312[_0x27ad('0x3b')]};return db[_0x27ad('0x2d')]['count'](_0x5e3eff)[_0x27ad('0x40')](function(_0x25d910){_0x421687[_0x27ad('0x21')]=_0x25d910;if(_0x493003[_0x27ad('0x32')]['includeAll']){_0x493312[_0x27ad('0x41')]=[{'all':!![]}];}return db[_0x27ad('0x2d')][_0x27ad('0x42')](_0x493312);})['then'](function(_0x11308e){_0x421687['rows']=_0x11308e;return _0x421687;})[_0x27ad('0x40')](respondWithFilteredResult(_0x1631a2,_0x493312))[_0x27ad('0x43')](handleError(_0x1631a2,null));};exports[_0x27ad('0x44')]=function(_0xc3a0a7,_0x1e3de0){var _0x4e5da1={'raw':![],'where':{'id':_0xc3a0a7['params']['id']}},_0x327b36={};_0x327b36[_0x27ad('0x31')]=_[_0x27ad('0x33')](db[_0x27ad('0x2d')][_0x27ad('0x2e')]);_0x327b36['query']=_[_0x27ad('0x33')](_0xc3a0a7[_0x27ad('0x32')]);_0x327b36[_0x27ad('0x34')]=_[_0x27ad('0x35')](_0x327b36['model'],_0x327b36['query']);_0x4e5da1[_0x27ad('0x37')]=_['intersection'](_0x327b36[_0x27ad('0x31')],qs[_0x27ad('0x36')](_0xc3a0a7[_0x27ad('0x32')][_0x27ad('0x36')]));_0x4e5da1[_0x27ad('0x37')]=_0x4e5da1[_0x27ad('0x37')][_0x27ad('0x45')]?_0x4e5da1[_0x27ad('0x37')]:_0x327b36[_0x27ad('0x31')];if(_0xc3a0a7[_0x27ad('0x32')][_0x27ad('0x46')]){_0x4e5da1[_0x27ad('0x41')]=[{'all':!![]}];}_0x4e5da1=_[_0x27ad('0x3e')]({},_0x4e5da1,_0xc3a0a7['options']);return db[_0x27ad('0x2d')]['find'](_0x4e5da1)[_0x27ad('0x40')](handleEntityNotFound(_0x1e3de0,null))[_0x27ad('0x40')](respondWithResult(_0x1e3de0,null))[_0x27ad('0x43')](handleError(_0x1e3de0,null));};exports[_0x27ad('0x47')]=function(_0x4c3d6c,_0x239cf1){return db[_0x27ad('0x2d')][_0x27ad('0x47')](_0x4c3d6c[_0x27ad('0x48')],{})[_0x27ad('0x40')](function(_0x566cc8){var _0x593c2c=_0x4c3d6c[_0x27ad('0x49')][_0x27ad('0x4a')]({'plain':!![]});if(!_0x593c2c)throw new Error(_0x27ad('0x4b'));if(_0x593c2c[_0x27ad('0x4c')]===_0x27ad('0x49')){var _0x4eef5c=_0x566cc8[_0x27ad('0x4a')]({'plain':!![]});var _0x4f6761='Teams';return db[_0x27ad('0x4d')]['find']({'where':{'name':_0x4f6761,'userProfileId':_0x593c2c[_0x27ad('0x4e')]},'raw':!![]})[_0x27ad('0x40')](function(_0x1ca792){if(_0x1ca792&&_0x1ca792[_0x27ad('0x4f')]===0x0){return db[_0x27ad('0x50')][_0x27ad('0x47')]({'name':_0x4eef5c[_0x27ad('0x2a')],'resourceId':_0x4eef5c['id'],'type':_0x1ca792[_0x27ad('0x2a')],'sectionId':_0x1ca792['id']},{})[_0x27ad('0x40')](function(){return _0x566cc8;});}else{return _0x566cc8;}})[_0x27ad('0x43')](function(_0x4724cc){logger[_0x27ad('0x28')](_0x27ad('0x51'),_0x4724cc);throw _0x4724cc;});}return _0x566cc8;})[_0x27ad('0x40')](respondWithResult(_0x239cf1,0xc9))[_0x27ad('0x43')](handleError(_0x239cf1,null));};exports[_0x27ad('0x26')]=function(_0x39473a,_0x5d7e60){if(_0x39473a['body']['id']){delete _0x39473a[_0x27ad('0x48')]['id'];}return db['Team'][_0x27ad('0x52')]({'where':{'id':_0x39473a[_0x27ad('0x53')]['id']}})[_0x27ad('0x40')](handleEntityNotFound(_0x5d7e60,null))[_0x27ad('0x40')](saveUpdates(_0x39473a['body'],null))['then'](respondWithResult(_0x5d7e60,null))[_0x27ad('0x43')](handleError(_0x5d7e60,null));};exports[_0x27ad('0x54')]=function(_0x4d9333,_0x42d90d){var _0x17a752=_0x4d9333['params']['id'];var _0x545210=[];return db[_0x27ad('0x55')][_0x27ad('0x56')](function(_0x5aa390){var _0x48e626='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x17a752;return db[_0x27ad('0x55')][_0x27ad('0x32')](_0x48e626,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390})[_0x27ad('0x40')](function(_0x51c97e){_0x545210=_[_0x27ad('0x2c')](_0x51c97e,function(_0x3f2326){return Number(_0x3f2326[_0x27ad('0x5a')]);});})['then'](function(){var _0x334f55=_0x27ad('0x5b')+_0x17a752;return db[_0x27ad('0x55')][_0x27ad('0x32')](_0x334f55,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})['then'](function(_0x5ceee8){var _0xd539cb=_[_0x27ad('0x2c')](_0x5ceee8,function(_0x39eecc){return Number(_0x39eecc['VoiceQueueId']);});return db[_0x27ad('0x5c')]['destroy']({'where':{'UserId':{'$in':_0x545210},'VoiceQueueId':{'$in':_0xd539cb}},'transaction':_0x5aa390});})[_0x27ad('0x40')](function(){var _0x2328d6=_0x27ad('0x5d')+_0x17a752;return db['sequelize'][_0x27ad('0x32')](_0x2328d6,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})['then'](function(_0x548010){var _0x5586d3=_[_0x27ad('0x2c')](_0x548010,function(_0xe3f1a){return Number(_0xe3f1a[_0x27ad('0x5e')]);});return db[_0x27ad('0x5f')][_0x27ad('0x54')]({'where':{'UserId':{'$in':_0x545210},'MailQueueId':{'$in':_0x5586d3}},'transaction':_0x5aa390});})['then'](function(){var _0x37aee4=_0x27ad('0x60')+_0x17a752;return db['sequelize'][_0x27ad('0x32')](_0x37aee4,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})['then'](function(_0x32d202){var _0x30bed7=_[_0x27ad('0x2c')](_0x32d202,function(_0x3845ec){return Number(_0x3845ec[_0x27ad('0x61')]);});return db[_0x27ad('0x62')][_0x27ad('0x54')]({'where':{'UserId':{'$in':_0x545210},'SmsQueueId':{'$in':_0x30bed7}},'transaction':_0x5aa390});})['then'](function(){var _0x1ab8d0=_0x27ad('0x63')+_0x17a752;return db['sequelize'][_0x27ad('0x32')](_0x1ab8d0,{'type':db['Sequelize'][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})[_0x27ad('0x40')](function(_0x872cb9){var _0xee53cc=_['map'](_0x872cb9,function(_0x9c42c6){return Number(_0x9c42c6[_0x27ad('0x64')]);});return db['UserChatQueue']['destroy']({'where':{'UserId':{'$in':_0x545210},'ChatQueueId':{'$in':_0xee53cc}},'transaction':_0x5aa390});})[_0x27ad('0x40')](function(){var _0xa85ae3=_0x27ad('0x65')+_0x17a752;return db['sequelize'][_0x27ad('0x32')](_0xa85ae3,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')]['SELECT'],'raw':!![],'transaction':_0x5aa390});})[_0x27ad('0x40')](function(_0x3d402d){var _0xed67ce=_[_0x27ad('0x2c')](_0x3d402d,function(_0x4f7c60){return Number(_0x4f7c60[_0x27ad('0x66')]);});return db[_0x27ad('0x67')][_0x27ad('0x54')]({'where':{'UserId':{'$in':_0x545210},'FaxQueueId':{'$in':_0xed67ce}},'transaction':_0x5aa390});})['then'](function(){var _0x21614f=_0x27ad('0x68')+_0x17a752;return db[_0x27ad('0x55')][_0x27ad('0x32')](_0x21614f,{'type':db[_0x27ad('0x57')][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})[_0x27ad('0x40')](function(_0x47cea5){var _0x400a58=_[_0x27ad('0x2c')](_0x47cea5,function(_0x840b99){return Number(_0x840b99[_0x27ad('0x69')]);});return db[_0x27ad('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x545210},'OpenchannelQueueId':{'$in':_0x400a58}},'transaction':_0x5aa390});})['then'](function(){var _0x2ae768=_0x27ad('0x6b')+_0x17a752;return db[_0x27ad('0x55')][_0x27ad('0x32')](_0x2ae768,{'type':db['Sequelize'][_0x27ad('0x58')][_0x27ad('0x59')],'raw':!![],'transaction':_0x5aa390});})[_0x27ad('0x40')](function(_0x10199d){var _0x26d618=_[_0x27ad('0x2c')](_0x10199d,function(_0x1de4f2){return Number(_0x1de4f2[_0x27ad('0x6c')]);});return db[_0x27ad('0x6d')][_0x27ad('0x54')]({'where':{'UserId':{'$in':_0x545210},'WhatsappQueueId':{'$in':_0x26d618}},'transaction':_0x5aa390});})[_0x27ad('0x40')](function(){return db[_0x27ad('0x6e')][_0x27ad('0x52')]({'where':{'TeamId':_0x17a752}});})[_0x27ad('0x40')](function(_0x5dd3fd){if(_0x5dd3fd===null){return;}return db['UserVoicePrefix'][_0x27ad('0x54')]({'where':{'UserId':{'$in':_0x545210},'VoicePrefixId':_0x5dd3fd[_0x27ad('0x6f')]},'transaction':_0x5aa390});})[_0x27ad('0x40')](function(){return db[_0x27ad('0x2d')][_0x27ad('0x54')]({'where':{'id':_0x17a752},'cascade':!![],'transaction':_0x5aa390});})[_0x27ad('0x40')](function(_0x5d1504){if(_0x5d1504===0x0){_0x42d90d[_0x27ad('0x27')](0x194);}else{return db[_0x27ad('0x50')][_0x27ad('0x54')]({'where':{'type':'Teams','resourceId':_0x17a752},'cascade':!![],'transaction':_0x5aa390})['then'](function(){_0x42d90d[_0x27ad('0x1c')](0xcc)[_0x27ad('0x1d')]();});}})[_0x27ad('0x43')](function(_0x18618f){_0x42d90d[_0x27ad('0x1c')](0x1f4)[_0x27ad('0x2b')](_0x18618f);});});};exports[_0x27ad('0x70')]=function(_0x549467,_0x36a225,_0x3024aa){return db[_0x27ad('0x2d')][_0x27ad('0x71')]({'where':{'id':_0x549467[_0x27ad('0x53')]['id']}})[_0x27ad('0x40')](handleEntityNotFound(_0x36a225,null))[_0x27ad('0x40')](function(_0x991dbe){if(!_0x549467['query'][_0x27ad('0x72')]||!utils[_0x27ad('0x73')](_0x549467[_0x27ad('0x32')]['channel'])){throw new db['Sequelize'][(_0x27ad('0x74'))](_0x27ad('0x75'));}var _0x2f688f={};var _0xcfff13={};_0xcfff13[_0x27ad('0x31')]=_[_0x27ad('0x33')](db[_[_0x27ad('0x76')](_0x549467[_0x27ad('0x32')][_0x27ad('0x72')][_0x27ad('0x77')]())+_0x27ad('0x78')][_0x27ad('0x2e')]);_0xcfff13[_0x27ad('0x32')]=_['keys'](_0x549467[_0x27ad('0x32')]);_0xcfff13['filters']=_[_0x27ad('0x35')](_0xcfff13['model'],_0xcfff13[_0x27ad('0x32')]);_0x2f688f[_0x27ad('0x37')]=_['intersection'](_0xcfff13[_0x27ad('0x31')],qs[_0x27ad('0x36')](_0x549467['query']['fields']));_0x2f688f[_0x27ad('0x37')]=_0x2f688f[_0x27ad('0x37')][_0x27ad('0x45')]?_0x2f688f[_0x27ad('0x37')]:_0xcfff13[_0x27ad('0x31')];_0x2f688f['limit']=qs[_0x27ad('0x20')](_0x549467[_0x27ad('0x32')][_0x27ad('0x20')]);_0x2f688f['offset']=qs[_0x27ad('0x22')](_0x549467[_0x27ad('0x32')][_0x27ad('0x22')]);_0x2f688f['order']=qs['sort'](_0x549467[_0x27ad('0x32')][_0x27ad('0x3a')]);_0x2f688f['where']=qs[_0x27ad('0x34')](_[_0x27ad('0x3c')](_0x549467[_0x27ad('0x32')],_0xcfff13[_0x27ad('0x34')]));_0x2f688f=_[_0x27ad('0x3e')]({},_0x2f688f,_0x549467[_0x27ad('0x3f')]);return _0x991dbe[_0x27ad('0x4a')+_[_0x27ad('0x76')](_0x549467[_0x27ad('0x32')]['channel'][_0x27ad('0x77')]())+_0x27ad('0x79')](_0x2f688f);})[_0x27ad('0x40')](respondWithResult(_0x36a225,null))['catch'](handleError(_0x36a225,null));};exports[_0x27ad('0x7a')]=function(_0x49349a,_0x2f2487,_0x1a23ff){return db['Team'][_0x27ad('0x71')]({'where':{'id':_0x49349a[_0x27ad('0x53')]['id']}})[_0x27ad('0x40')](function(_0x268643){if(_0x268643){if(!_0x49349a[_0x27ad('0x48')]['channel']||!utils['isValidChannel'](_0x49349a[_0x27ad('0x48')][_0x27ad('0x72')])){throw new db[(_0x27ad('0x57'))]['ValidationError'](_0x27ad('0x75'));}return _0x268643[_0x27ad('0x7b')+_[_0x27ad('0x76')](_0x49349a[_0x27ad('0x48')]['channel'][_0x27ad('0x77')]())+_0x27ad('0x79')](_0x49349a[_0x27ad('0x48')][_0x27ad('0x7c')]);}return null;})[_0x27ad('0x40')](handleEntityNotFound(_0x2f2487,null))[_0x27ad('0x40')](respondWithStatusCode(_0x2f2487,null))['catch'](handleError(_0x2f2487,null));};exports[_0x27ad('0x7d')]=function(_0x3e64f4,_0x501f9c,_0x57752c){return db[_0x27ad('0x2d')]['findOne']({'where':{'id':_0x3e64f4[_0x27ad('0x53')]['id']}})[_0x27ad('0x40')](function(_0x234db2){if(_0x234db2){if(!_0x3e64f4[_0x27ad('0x32')][_0x27ad('0x72')]||!utils['isValidChannel'](_0x3e64f4['query']['channel'])){throw new db[(_0x27ad('0x57'))][(_0x27ad('0x74'))](_0x27ad('0x75'));}return _0x234db2[_0x27ad('0x7e')+_[_0x27ad('0x76')](_0x3e64f4['query']['channel'][_0x27ad('0x77')]())+_0x27ad('0x79')](_0x3e64f4[_0x27ad('0x32')][_0x27ad('0x7c')]);}return null;})[_0x27ad('0x40')](handleEntityNotFound(_0x501f9c,null))['then'](respondWithStatusCode(_0x501f9c,null))['catch'](handleError(_0x501f9c,null));};exports[_0x27ad('0x7f')]=function(_0x1e0e98,_0x3e9182){var _0x32f4be=_[_0x27ad('0x80')](_0x1e0e98[_0x27ad('0x48')][_0x27ad('0x7c')])?_0x1e0e98[_0x27ad('0x48')]['ids']:[_0x1e0e98[_0x27ad('0x48')][_0x27ad('0x7c')]];var _0x30c52d=_0x1e0e98['params']['id'];return db[_0x27ad('0x2d')][_0x27ad('0x52')]({'where':{'id':_0x30c52d}})['then'](handleEntityNotFound(_0x3e9182,null))[_0x27ad('0x40')](function(_0x1bae84){if(_0x1bae84){var _0x38d139=['Voice',_0x27ad('0x81'),_0x27ad('0x82'),'Sms',_0x27ad('0x83'),_0x27ad('0x84'),'Whatsapp'];return db[_0x27ad('0x55')]['transaction'](function(_0x3c5ee7){var _0x3aa5ef=_[_0x27ad('0x2c')](_0x38d139,function(_0x1dd452){var _0x52a17c={'attributes':['id',_0x27ad('0x2a')]};if(_0x1dd452===_0x27ad('0x85')){_0x52a17c[_0x27ad('0x86')]={'attributes':[_0x27ad('0x87')]};}return _0x1bae84[_0x27ad('0x4a')+_0x1dd452+'Queues'](_0x52a17c)[_0x27ad('0x40')](function(_0x45a8f4){var _0x5252dc=_[_0x27ad('0x2c')](_0x45a8f4,function(_0x575bb9){var _0x258c57=_[_0x27ad('0x2c')](_0x32f4be,function(_0x256466){var _0x5d99ec={'where':{'UserId':_0x256466,[_0x1dd452+_0x27ad('0x88')]:_0x575bb9['id']},'transaction':_0x3c5ee7};if(_0x1dd452===_0x27ad('0x85')){_0x5d99ec[_0x27ad('0x18')]={'penalty':_0x575bb9[_0x27ad('0x89')][_0x27ad('0x87')]};}return db[_0x27ad('0x8a')+_0x1dd452+_0x27ad('0x78')][_0x27ad('0x8b')](_0x5d99ec)[_0x27ad('0x40')](function(){socket[_0x27ad('0x8c')](_0x27ad('0x49')+_0x1dd452+_0x27ad('0x8d'),{'UserId':_0x256466,[_0x1dd452+_0x27ad('0x88')]:_0x575bb9['id']});if(_0x1dd452!==_0x27ad('0x85')){return;}return db[_0x27ad('0x8a')][_0x27ad('0x42')]({'where':{'id':_0x32f4be,'online':0x1},'attributes':['id',_0x27ad('0x2a'),'online',_0x27ad('0x8e'),_0x27ad('0x8f')],'raw':!![]})[_0x27ad('0x40')](function(_0x5e358b){var _0x3eeec9=_[_0x27ad('0x2c')](_0x5e358b,function(_0x5b5628){return db[_0x27ad('0x90')][_0x27ad('0x91')]({'membername':_0x5b5628[_0x27ad('0x2a')],'UserId':_0x5b5628['id'],'queue_name':_0x575bb9[_0x27ad('0x2a')],'VoiceQueueId':_0x575bb9['id'],'interface':_['isNil'](_0x5b5628[_0x27ad('0x8f')])?util[_0x27ad('0x92')](_0x27ad('0x93'),_0x5b5628[_0x27ad('0x2a')]):_0x5b5628[_0x27ad('0x8f')],'paused':_0x5b5628[_0x27ad('0x8e')]||![],'penalty':_0x575bb9[_0x27ad('0x89')][_0x27ad('0x87')]},{'transaction':_0x3c5ee7});});return Promise[_0x27ad('0x94')](_0x3eeec9);});});});return Promise['all'](_0x258c57);});return Promise['all'](_0x5252dc);})['then'](function(){return db[_0x27ad('0x6e')]['findOne']({'where':{'teamId':_0x30c52d}})[_0x27ad('0x40')](function(_0x410421){if(_0x410421){var _0x295e9b=_[_0x27ad('0x2c')](_0x32f4be,function(_0x29d7c2){db[_0x27ad('0x95')]['upsert']({'UserId':_0x29d7c2,'VoicePrefixId':_0x410421[_0x27ad('0x6f')]});});return Promise[_0x27ad('0x94')](_0x295e9b);}});});});return Promise[_0x27ad('0x94')](_0x3aa5ef)[_0x27ad('0x40')](function(){return _0x1bae84[_0x27ad('0x7f')](_0x32f4be,{'transaction':_0x3c5ee7})['spread'](function(_0x310d87){return _0x310d87;});});});}})[_0x27ad('0x40')](respondWithResult(_0x3e9182,null))['catch'](handleError(_0x3e9182,null));};exports[_0x27ad('0x96')]=function(_0x5e668a,_0x3fc359){var _0x1bcd2a=_['isArray'](_0x5e668a[_0x27ad('0x32')][_0x27ad('0x7c')])?_0x5e668a[_0x27ad('0x32')][_0x27ad('0x7c')]:[_0x5e668a[_0x27ad('0x32')]['ids']];var _0x2913e5=_0x5e668a[_0x27ad('0x53')]['id'];return db['Team'][_0x27ad('0x52')]({'where':{'id':_0x2913e5}})[_0x27ad('0x40')](handleEntityNotFound(_0x3fc359,null))[_0x27ad('0x40')](function(_0x2bc784){if(_0x2bc784){var _0x5d1d9e=[_0x27ad('0x85'),'Chat',_0x27ad('0x82'),'Sms','Fax',_0x27ad('0x84'),_0x27ad('0x97')];return db[_0x27ad('0x55')][_0x27ad('0x56')](function(_0x5acf69){var _0xf25de=_[_0x27ad('0x2c')](_0x5d1d9e,function(_0x48c025){var _0x435f30={'attributes':['id','name']};return _0x2bc784[_0x27ad('0x4a')+_0x48c025+_0x27ad('0x79')](_0x435f30)['then'](function(_0x1e8463){var _0x384e5e=_['map'](_0x1e8463,function(_0x10c109){return _0x10c109[_0x27ad('0x96')](_0x1bcd2a,{'transaction':_0x5acf69})[_0x27ad('0x40')](function(){var _0x40c1f4=_[_0x27ad('0x2c')](_0x1bcd2a,function(_0x4e0cc8){socket['emit'](_0x27ad('0x49')+_0x48c025+'Queue:remove',{'UserId':Number(_0x4e0cc8),[_0x48c025+_0x27ad('0x88')]:_0x10c109['id']});if(_0x48c025!=='Voice'){return;}return db[_0x27ad('0x90')][_0x27ad('0x54')]({'where':{'VoiceQueueId':_0x10c109['id'],'UserId':_0x4e0cc8},'transaction':_0x5acf69});});return Promise[_0x27ad('0x94')](_0x40c1f4);});});return Promise['all'](_0x384e5e);});});return Promise[_0x27ad('0x94')](_0xf25de)['then'](function(){return _0x2bc784[_0x27ad('0x96')](_0x1bcd2a,{'transaction':_0x5acf69});})[_0x27ad('0x40')](function(){return db['TeamVoicePrefix'][_0x27ad('0x71')]({'where':{'teamId':_0x2913e5}})[_0x27ad('0x40')](function(_0x2ec7a8){if(_0x2ec7a8){var _0x523b08=_[_0x27ad('0x2c')](_0x1bcd2a,function(_0x52de91){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x52de91,'VoicePrefixId':_0x2ec7a8[_0x27ad('0x6f')]}});});return Promise[_0x27ad('0x94')](_0x523b08);}});});});}})[_0x27ad('0x40')](respondWithStatusCode(_0x3fc359,null))[_0x27ad('0x43')](handleError(_0x3fc359,null));};exports[_0x27ad('0x98')]=function(_0xda6bb5,_0x4380ce,_0x40f442){var _0x3ab525={};var _0x2646c3={};var _0x5480bb;var _0x241e24;return db[_0x27ad('0x2d')][_0x27ad('0x71')]({'where':{'id':_0xda6bb5[_0x27ad('0x53')]['id']}})['then'](handleEntityNotFound(_0x4380ce,null))[_0x27ad('0x40')](function(_0x4c6af1){if(_0x4c6af1){_0x5480bb=_0x4c6af1;_0x2646c3['model']=_['keys'](db['User'][_0x27ad('0x2e')]);_0x2646c3[_0x27ad('0x32')]=_[_0x27ad('0x33')](_0xda6bb5[_0x27ad('0x32')]);_0x2646c3[_0x27ad('0x34')]=_[_0x27ad('0x35')](_0x2646c3[_0x27ad('0x31')],_0x2646c3[_0x27ad('0x32')]);_0x3ab525[_0x27ad('0x37')]=_['intersection'](_0x2646c3[_0x27ad('0x31')],qs[_0x27ad('0x36')](_0xda6bb5[_0x27ad('0x32')][_0x27ad('0x36')]));_0x3ab525[_0x27ad('0x37')]=_0x3ab525['attributes'][_0x27ad('0x45')]?_0x3ab525[_0x27ad('0x37')]:_0x2646c3[_0x27ad('0x31')];_0x3ab525[_0x27ad('0x99')]=qs['sort'](_0xda6bb5[_0x27ad('0x32')][_0x27ad('0x3a')]);_0x3ab525[_0x27ad('0x3b')]=qs[_0x27ad('0x34')](_['pick'](_0xda6bb5[_0x27ad('0x32')],_0x2646c3[_0x27ad('0x34')]));if(_0xda6bb5[_0x27ad('0x32')][_0x27ad('0x3d')]){_0x3ab525['where']=_[_0x27ad('0x3e')](_0x3ab525[_0x27ad('0x3b')],{'$or':_[_0x27ad('0x2c')](_0x3ab525['attributes'],function(_0x154823){var _0x204447={};_0x204447[_0x154823]={'$like':'%'+_0xda6bb5[_0x27ad('0x32')]['filter']+'%'};return _0x204447;})});}_0x3ab525=_['merge']({},_0x3ab525,_0xda6bb5[_0x27ad('0x3f')]);return _0x5480bb['getAgents'](_0x3ab525);}})[_0x27ad('0x40')](function(_0x55fe98){if(_0x55fe98){_0x241e24=_0x55fe98['length'];if(!_0xda6bb5[_0x27ad('0x32')]['hasOwnProperty']('nolimit')){_0x3ab525['limit']=qs[_0x27ad('0x20')](_0xda6bb5[_0x27ad('0x32')]['limit']);_0x3ab525[_0x27ad('0x22')]=qs[_0x27ad('0x22')](_0xda6bb5[_0x27ad('0x32')][_0x27ad('0x22')]);}return _0x5480bb['getAgents'](_0x3ab525);}})[_0x27ad('0x40')](function(_0x35ec26){if(_0x35ec26){return _0x35ec26?{'count':_0x241e24,'rows':_0x35ec26}:null;}})[_0x27ad('0x40')](respondWithResult(_0x4380ce,null))[_0x27ad('0x43')](handleError(_0x4380ce,null));};
\ No newline at end of file
index 71f0409..80e109a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d8d=['emit','hasOwnProperty','exports','events','../../mysqldb','Team','setMaxListeners','save','update'];(function(_0x3a8c85,_0x4ce1bf){var _0x3c11bf=function(_0x558beb){while(--_0x558beb){_0x3a8c85['push'](_0x3a8c85['shift']());}};_0x3c11bf(++_0x4ce1bf);}(_0x0d8d,0x18f));var _0xd0d8=function(_0x15eeb3,_0xde4dcb){_0x15eeb3=_0x15eeb3-0x0;var _0x822e4b=_0x0d8d[_0x15eeb3];return _0x822e4b;};'use strict';var EventEmitter=require(_0xd0d8('0x0'));var Team=require(_0xd0d8('0x1'))['db'][_0xd0d8('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xd0d8('0x3')](0x0);var events={'afterCreate':_0xd0d8('0x4'),'afterUpdate':_0xd0d8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x15ba50){return function(_0x25a711,_0x3d8f16,_0x350c84){TeamEvents['emit'](_0x15ba50+':'+_0x25a711['id'],_0x25a711);TeamEvents[_0xd0d8('0x6')](_0x15ba50,_0x25a711);_0x350c84(null);};}for(var e in events){if(events[_0xd0d8('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xd0d8('0x8')]=TeamEvents;
\ No newline at end of file
+var _0xd3e1=['exports','events','../../mysqldb','Team','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x4ef185,_0x533cd3){var _0x3edd07=function(_0x49153d){while(--_0x49153d){_0x4ef185['push'](_0x4ef185['shift']());}};_0x3edd07(++_0x533cd3);}(_0xd3e1,0xb5));var _0x1d3e=function(_0x12dffa,_0x1b054c){_0x12dffa=_0x12dffa-0x0;var _0x493dd2=_0xd3e1[_0x12dffa];return _0x493dd2;};'use strict';var EventEmitter=require(_0x1d3e('0x0'));var Team=require(_0x1d3e('0x1'))['db'][_0x1d3e('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x1d3e('0x3')](0x0);var events={'afterCreate':_0x1d3e('0x4'),'afterUpdate':'update','afterDestroy':_0x1d3e('0x5')};function emitEvent(_0x10bea2){return function(_0x1d206a,_0xe5b8ce,_0x16cb8a){TeamEvents['emit'](_0x10bea2+':'+_0x1d206a['id'],_0x1d206a);TeamEvents[_0x1d3e('0x6')](_0x10bea2,_0x1d206a);_0x16cb8a(null);};}for(var e in events){if(events[_0x1d3e('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x1d3e('0x8')]=TeamEvents;
\ No newline at end of file
index ae6459c..9cc4489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x768d=['../../config/environment','exports','Team','teams','lodash','util','../../config/logger','api','moment','path','rimraf'];(function(_0x31f7da,_0x4c7653){var _0x545175=function(_0x7c4151){while(--_0x7c4151){_0x31f7da['push'](_0x31f7da['shift']());}};_0x545175(++_0x4c7653);}(_0x768d,0x10c));var _0xd768=function(_0x39edc6,_0x41c73a){_0x39edc6=_0x39edc6-0x0;var _0x43991e=_0x768d[_0x39edc6];return _0x43991e;};'use strict';var _=require(_0xd768('0x0'));var util=require(_0xd768('0x1'));var logger=require(_0xd768('0x2'))(_0xd768('0x3'));var moment=require(_0xd768('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd768('0x5'));var rimraf=require(_0xd768('0x6'));var config=require(_0xd768('0x7'));var attributes=require('./team.attributes');module[_0xd768('0x8')]=function(_0x5a2f85,_0x33f915){return _0x5a2f85['define'](_0xd768('0x9'),attributes,{'tableName':_0xd768('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e10=['./team.attributes','exports','define','Team','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x15b7a5,_0x2575e7){var _0x297d21=function(_0x3b5670){while(--_0x3b5670){_0x15b7a5['push'](_0x15b7a5['shift']());}};_0x297d21(++_0x2575e7);}(_0x1e10,0x18a));var _0x01e1=function(_0x113982,_0x597be2){_0x113982=_0x113982-0x0;var _0x13ff92=_0x1e10[_0x113982];return _0x13ff92;};'use strict';var _=require(_0x01e1('0x0'));var util=require('util');var logger=require(_0x01e1('0x1'))(_0x01e1('0x2'));var moment=require(_0x01e1('0x3'));var BPromise=require(_0x01e1('0x4'));var rp=require(_0x01e1('0x5'));var fs=require('fs');var path=require(_0x01e1('0x6'));var rimraf=require(_0x01e1('0x7'));var config=require(_0x01e1('0x8'));var attributes=require(_0x01e1('0x9'));module[_0x01e1('0xa')]=function(_0x5c82aa,_0x235a6f){return _0x5c82aa[_0x01e1('0xb')](_0x01e1('0xc'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 905c3e4..02990fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d8=['result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd6d8,0x1e8));var _0x8d6d=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0xd6d8[_0x12d6c2];return _0x1c9825;};'use strict';var _=require(_0x8d6d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8d6d('0x1'));var rs=require(_0x8d6d('0x2'));var fs=require('fs');var Redis=require(_0x8d6d('0x3'));var db=require(_0x8d6d('0x4'))['db'];var utils=require(_0x8d6d('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x8d6d('0x6'));var jayson=require(_0x8d6d('0x7'));var client=jayson[_0x8d6d('0x8')][_0x8d6d('0x9')]({'port':0x232a});config[_0x8d6d('0xa')]=_[_0x8d6d('0xb')](config[_0x8d6d('0xa')],{'host':_0x8d6d('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8d6d('0xa')]));require(_0x8d6d('0xd'))[_0x8d6d('0xe')](socket);function respondWithRpcPromise(_0x3af1d2,_0x35e075,_0x56302d){return new BPromise(function(_0x5cebf4,_0x4ca8c7){return client['request'](_0x3af1d2,_0x56302d)[_0x8d6d('0xf')](function(_0xfec649){logger[_0x8d6d('0x10')](_0x8d6d('0x11'),_0x35e075,_0x8d6d('0x12'));logger[_0x8d6d('0x13')](_0x8d6d('0x14'),_0x35e075,_0x8d6d('0x12'),JSON[_0x8d6d('0x15')](_0xfec649));if(_0xfec649[_0x8d6d('0x16')]){if(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x17')]===0x1f4){logger[_0x8d6d('0x16')](_0x8d6d('0x11'),_0x35e075,_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);return _0x4ca8c7(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);}logger[_0x8d6d('0x16')](_0x8d6d('0x11'),_0x35e075,_0xfec649[_0x8d6d('0x16')]['message']);return _0x5cebf4(_0xfec649[_0x8d6d('0x16')][_0x8d6d('0x18')]);}else{logger['info'](_0x8d6d('0x11'),_0x35e075,'request\x20sent');_0x5cebf4(_0xfec649[_0x8d6d('0x19')]['message']);}})[_0x8d6d('0x1a')](function(_0x4ab330){logger['error'](_0x8d6d('0x11'),_0x35e075,_0x4ab330);_0x4ca8c7(_0x4ab330);});});}
\ No newline at end of file
+var _0x7fab=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment'];(function(_0x1c470d,_0x81d66b){var _0x12141b=function(_0x45bfd3){while(--_0x45bfd3){_0x1c470d['push'](_0x1c470d['shift']());}};_0x12141b(++_0x81d66b);}(_0x7fab,0x169));var _0xb7fa=function(_0x1aefea,_0x39e5fa){_0x1aefea=_0x1aefea-0x0;var _0x33a7a1=_0x7fab[_0x1aefea];return _0x33a7a1;};'use strict';var _=require(_0xb7fa('0x0'));var util=require(_0xb7fa('0x1'));var moment=require(_0xb7fa('0x2'));var BPromise=require(_0xb7fa('0x3'));var rs=require(_0xb7fa('0x4'));var fs=require('fs');var Redis=require(_0xb7fa('0x5'));var db=require(_0xb7fa('0x6'))['db'];var utils=require(_0xb7fa('0x7'));var logger=require(_0xb7fa('0x8'))(_0xb7fa('0x9'));var config=require(_0xb7fa('0xa'));var jayson=require(_0xb7fa('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0xb7fa('0xc')]=_[_0xb7fa('0xd')](config[_0xb7fa('0xc')],{'host':_0xb7fa('0xe'),'port':0x18eb});var socket=require(_0xb7fa('0xf'))(new Redis(config[_0xb7fa('0xc')]));require(_0xb7fa('0x10'))[_0xb7fa('0x11')](socket);function respondWithRpcPromise(_0x294342,_0x2e6cba,_0xdae8c6){return new BPromise(function(_0x531cee,_0x419864){return client[_0xb7fa('0x12')](_0x294342,_0xdae8c6)[_0xb7fa('0x13')](function(_0x488093){logger['info'](_0xb7fa('0x14'),_0x2e6cba,_0xb7fa('0x15'));logger[_0xb7fa('0x16')](_0xb7fa('0x17'),_0x2e6cba,_0xb7fa('0x15'),JSON[_0xb7fa('0x18')](_0x488093));if(_0x488093['error']){if(_0x488093[_0xb7fa('0x19')][_0xb7fa('0x1a')]===0x1f4){logger['error'](_0xb7fa('0x14'),_0x2e6cba,_0x488093[_0xb7fa('0x19')][_0xb7fa('0x1b')]);return _0x419864(_0x488093[_0xb7fa('0x19')][_0xb7fa('0x1b')]);}logger[_0xb7fa('0x19')]('Team,\x20%s,\x20%s',_0x2e6cba,_0x488093['error']['message']);return _0x531cee(_0x488093['error'][_0xb7fa('0x1b')]);}else{logger['info'](_0xb7fa('0x14'),_0x2e6cba,_0xb7fa('0x15'));_0x531cee(_0x488093['result']['message']);}})['catch'](function(_0x2ffd8c){logger[_0xb7fa('0x19')]('Team,\x20%s,\x20%s',_0x2e6cba,_0x2ffd8c);_0x419864(_0x2ffd8c);});});}
\ No newline at end of file
index 21577a7..c967f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['removeListener','register','length','team:','remove','update'];(function(_0x504df1,_0x289598){var _0x1063b5=function(_0x627abd){while(--_0x627abd){_0x504df1['push'](_0x504df1['shift']());}};_0x1063b5(++_0x289598);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var TeamEvents=require('./team.events');var events=['save',_0x3071('0x0'),_0x3071('0x1')];function createListener(_0x27405a,_0x305d85){return function(_0x864539){_0x305d85['emit'](_0x27405a,_0x864539);};}function removeListener(_0x2c547f,_0x7b18a4){return function(){TeamEvents[_0x3071('0x2')](_0x2c547f,_0x7b18a4);};}exports[_0x3071('0x3')]=function(_0xabd7b6){for(var _0x41cf76=0x0,_0x1d3dd6=events[_0x3071('0x4')];_0x41cf76<_0x1d3dd6;_0x41cf76++){var _0xbd737f=events[_0x41cf76];var _0x22274c=createListener(_0x3071('0x5')+_0xbd737f,_0xabd7b6);TeamEvents['on'](_0xbd737f,_0x22274c);}};
\ No newline at end of file
+var _0x0797=['length','team:','./team.events','save','remove','update','emit','removeListener','register'];(function(_0x34b821,_0x504e55){var _0x5e00a0=function(_0x242892){while(--_0x242892){_0x34b821['push'](_0x34b821['shift']());}};_0x5e00a0(++_0x504e55);}(_0x0797,0x18e));var _0x7079=function(_0x12f2d0,_0x4c48fd){_0x12f2d0=_0x12f2d0-0x0;var _0x4d69c1=_0x0797[_0x12f2d0];return _0x4d69c1;};'use strict';var TeamEvents=require(_0x7079('0x0'));var events=[_0x7079('0x1'),_0x7079('0x2'),_0x7079('0x3')];function createListener(_0x8abfe6,_0x1ed158){return function(_0x51b794){_0x1ed158[_0x7079('0x4')](_0x8abfe6,_0x51b794);};}function removeListener(_0x1cca8d,_0xcb8a0c){return function(){TeamEvents[_0x7079('0x5')](_0x1cca8d,_0xcb8a0c);};}exports[_0x7079('0x6')]=function(_0x58ad7f){for(var _0x1609cb=0x0,_0x404b06=events[_0x7079('0x7')];_0x1609cb<_0x404b06;_0x1609cb++){var _0x345866=events[_0x1609cb];var _0xb144e3=createListener(_0x7079('0x8')+_0x345866,_0x58ad7f);TeamEvents['on'](_0x345866,_0xb144e3);}};
\ No newline at end of file
index ed0fea8..d4f3bd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c5=['sequelize','exports','INTEGER'];(function(_0x26d0e7,_0x196e0a){var _0x1bb6a8=function(_0x35b922){while(--_0x35b922){_0x26d0e7['push'](_0x26d0e7['shift']());}};_0x1bb6a8(++_0x196e0a);}(_0x95c5,0x153));var _0x595c=function(_0x24f326,_0x616a7){_0x24f326=_0x24f326-0x0;var _0x488e2d=_0x95c5[_0x24f326];return _0x488e2d;};'use strict';var Sequelize=require(_0x595c('0x0'));module[_0x595c('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x595c('0x2')]}};
\ No newline at end of file
+var _0xe9e2=['exports','INTEGER','sequelize'];(function(_0x23cc65,_0x577f17){var _0x277f5f=function(_0x5df966){while(--_0x5df966){_0x23cc65['push'](_0x23cc65['shift']());}};_0x277f5f(++_0x577f17);}(_0xe9e2,0x13a));var _0x2e9e=function(_0x2b67ab,_0x2d9aff){_0x2b67ab=_0x2b67ab-0x0;var _0x5e05cb=_0xe9e2[_0x2b67ab];return _0x5e05cb;};'use strict';var Sequelize=require(_0x2e9e('0x0'));module[_0x2e9e('0x1')]={'TeamId':{'type':Sequelize[_0x2e9e('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x2e9e('0x2')]}};
\ No newline at end of file
index d36ff5b..b94a771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7df3=['define','lodash','util','api','bluebird','path','../../config/environment','./teamVoicePrefix.attributes','exports'];(function(_0x21fde5,_0x450a80){var _0x36f209=function(_0x26f1bb){while(--_0x26f1bb){_0x21fde5['push'](_0x21fde5['shift']());}};_0x36f209(++_0x450a80);}(_0x7df3,0x1cc));var _0x37df=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x7df3[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x37df('0x0'));var util=require(_0x37df('0x1'));var logger=require('../../config/logger')(_0x37df('0x2'));var moment=require('moment');var BPromise=require(_0x37df('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x37df('0x4'));var rimraf=require('rimraf');var config=require(_0x37df('0x5'));var attributes=require(_0x37df('0x6'));module[_0x37df('0x7')]=function(_0x368888,_0x194c89){return _0x368888[_0x37df('0x8')]('TeamVoicePrefix',attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb688=['exports','TeamVoicePrefix','team_has_voice_prefixes','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./teamVoicePrefix.attributes'];(function(_0x76b02c,_0xf57688){var _0x56573f=function(_0x3ef32f){while(--_0x3ef32f){_0x76b02c['push'](_0x76b02c['shift']());}};_0x56573f(++_0xf57688);}(_0xb688,0xcf));var _0x8b68=function(_0x11e412,_0x514f62){_0x11e412=_0x11e412-0x0;var _0x19262c=_0xb688[_0x11e412];return _0x19262c;};'use strict';var _=require('lodash');var util=require(_0x8b68('0x0'));var logger=require(_0x8b68('0x1'))(_0x8b68('0x2'));var moment=require(_0x8b68('0x3'));var BPromise=require(_0x8b68('0x4'));var rp=require(_0x8b68('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var attributes=require(_0x8b68('0x8'));module[_0x8b68('0x9')]=function(_0x583d16,_0x34314e){return _0x583d16['define'](_0x8b68('0xa'),attributes,{'tableName':_0x8b68('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9140ae..5fafcfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x20ea89,_0x1bfce6){var _0x1f06a8=function(_0xc541ce){while(--_0xc541ce){_0x20ea89['push'](_0x20ea89['shift']());}};_0x1f06a8(++_0x1bfce6);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x16ba04,_0x422560){var _0x89beda=function(_0x1a1d21){while(--_0x1a1d21){_0x16ba04['push'](_0x16ba04['shift']());}};_0x89beda(++_0x422560);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index d88a16b..d0f924c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa22a=['sequelize','exports','INTEGER'];(function(_0x3bc2ff,_0x3c7624){var _0x4bbd30=function(_0x3a7fe4){while(--_0x3a7fe4){_0x3bc2ff['push'](_0x3bc2ff['shift']());}};_0x4bbd30(++_0x3c7624);}(_0xa22a,0x153));var _0xaa22=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa22a[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xaa22('0x0'));module[_0xaa22('0x1')]={'penalty':{'type':Sequelize[_0xaa22('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9042=['exports','sequelize'];(function(_0x2273bf,_0x5caea9){var _0x2cfaed=function(_0x4a609a){while(--_0x4a609a){_0x2273bf['push'](_0x2273bf['shift']());}};_0x2cfaed(++_0x5caea9);}(_0x9042,0xf5));var _0x2904=function(_0x810025,_0x34bb04){_0x810025=_0x810025-0x0;var _0x4dbc81=_0x9042[_0x810025];return _0x4dbc81;};'use strict';var Sequelize=require(_0x2904('0x0'));module[_0x2904('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 08f5d02..6336328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x212b=['api','moment','bluebird','path','rimraf','../../config/environment','exports','TeamVoiceQueue','team_has_voice_queues','lodash','../../config/logger'];(function(_0x5ee71e,_0x28e6bf){var _0x1675b1=function(_0x5f543c){while(--_0x5f543c){_0x5ee71e['push'](_0x5ee71e['shift']());}};_0x1675b1(++_0x28e6bf);}(_0x212b,0x148));var _0xb212=function(_0x1238e2,_0x51f482){_0x1238e2=_0x1238e2-0x0;var _0x31e927=_0x212b[_0x1238e2];return _0x31e927;};'use strict';var _=require(_0xb212('0x0'));var util=require('util');var logger=require(_0xb212('0x1'))(_0xb212('0x2'));var moment=require(_0xb212('0x3'));var BPromise=require(_0xb212('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb212('0x5'));var rimraf=require(_0xb212('0x6'));var config=require(_0xb212('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0xb212('0x8')]=function(_0x49a13c,_0x21825a){return _0x49a13c['define'](_0xb212('0x9'),attributes,{'tableName':_0xb212('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5900=['team_has_voice_queues','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','TeamVoiceQueue'];(function(_0x475719,_0x5c2408){var _0x40334c=function(_0x5c597f){while(--_0x5c597f){_0x475719['push'](_0x475719['shift']());}};_0x40334c(++_0x5c2408);}(_0x5900,0xd2));var _0x0590=function(_0x3b6eb9,_0x409248){_0x3b6eb9=_0x3b6eb9-0x0;var _0x2d48a4=_0x5900[_0x3b6eb9];return _0x2d48a4;};'use strict';var _=require('lodash');var util=require(_0x0590('0x0'));var logger=require(_0x0590('0x1'))('api');var moment=require(_0x0590('0x2'));var BPromise=require(_0x0590('0x3'));var rp=require(_0x0590('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0590('0x5'));var config=require(_0x0590('0x6'));var attributes=require('./teamVoiceQueue.attributes');module[_0x0590('0x7')]=function(_0x1d9927,_0x494b17){return _0x1d9927[_0x0590('0x8')](_0x0590('0x9'),attributes,{'tableName':_0x0590('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5e5a44..2c641bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb81=['lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0x199591,_0x572c92){var _0x427127=function(_0x51d164){while(--_0x51d164){_0x199591['push'](_0x199591['shift']());}};_0x427127(++_0x572c92);}(_0xcb81,0x154));var _0x1cb8=function(_0x4e5552,_0x19ec4e){_0x4e5552=_0x4e5552-0x0;var _0x60a338=_0xcb81[_0x4e5552];return _0x60a338;};'use strict';var _=require(_0x1cb8('0x0'));var util=require(_0x1cb8('0x1'));var moment=require('moment');var BPromise=require(_0x1cb8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1cb8('0x3'));var logger=require(_0x1cb8('0x4'))(_0x1cb8('0x5'));var config=require(_0x1cb8('0x6'));var jayson=require(_0x1cb8('0x7'));var client=jayson['client'][_0x1cb8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2ac2d6,_0x584b16,_0x2408c2){return new BPromise(function(_0x39b4ad,_0x282fd8){return client['request'](_0x2ac2d6,_0x2408c2)[_0x1cb8('0x9')](function(_0x51dc9e){logger['info'](_0x1cb8('0xa'),_0x584b16,_0x1cb8('0xb'));logger[_0x1cb8('0xc')](_0x1cb8('0xd'),_0x584b16,_0x1cb8('0xb'),JSON[_0x1cb8('0xe')](_0x51dc9e));if(_0x51dc9e[_0x1cb8('0xf')]){if(_0x51dc9e[_0x1cb8('0xf')]['code']===0x1f4){logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);return _0x282fd8(_0x51dc9e[_0x1cb8('0xf')]['message']);}logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);return _0x39b4ad(_0x51dc9e[_0x1cb8('0xf')][_0x1cb8('0x10')]);}else{logger[_0x1cb8('0x11')](_0x1cb8('0xa'),_0x584b16,'request\x20sent');_0x39b4ad(_0x51dc9e[_0x1cb8('0x12')]['message']);}})[_0x1cb8('0x13')](function(_0x28b8ff){logger[_0x1cb8('0xf')](_0x1cb8('0xa'),_0x584b16,_0x28b8ff);_0x282fd8(_0x28b8ff);});});}
\ No newline at end of file
+var _0x63eb=['client','http','request','then','info','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5b8b97,_0x6b4dfa){var _0x1fdf84=function(_0x2ced4c){while(--_0x2ced4c){_0x5b8b97['push'](_0x5b8b97['shift']());}};_0x1fdf84(++_0x6b4dfa);}(_0x63eb,0x90));var _0xb63e=function(_0x2560a3,_0x21ba7a){_0x2560a3=_0x2560a3-0x0;var _0x474841=_0x63eb[_0x2560a3];return _0x474841;};'use strict';var _=require(_0xb63e('0x0'));var util=require(_0xb63e('0x1'));var moment=require(_0xb63e('0x2'));var BPromise=require(_0xb63e('0x3'));var rs=require(_0xb63e('0x4'));var fs=require('fs');var Redis=require(_0xb63e('0x5'));var db=require(_0xb63e('0x6'))['db'];var utils=require(_0xb63e('0x7'));var logger=require(_0xb63e('0x8'))(_0xb63e('0x9'));var config=require(_0xb63e('0xa'));var jayson=require(_0xb63e('0xb'));var client=jayson[_0xb63e('0xc')][_0xb63e('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x456ca3,_0xeb9650,_0x2f1729){return new BPromise(function(_0xe4f423,_0x199b7b){return client[_0xb63e('0xe')](_0x456ca3,_0x2f1729)[_0xb63e('0xf')](function(_0x4c22a2){logger[_0xb63e('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0xeb9650,_0xb63e('0x11'));logger[_0xb63e('0x12')](_0xb63e('0x13'),_0xeb9650,'request\x20sent',JSON[_0xb63e('0x14')](_0x4c22a2));if(_0x4c22a2[_0xb63e('0x15')]){if(_0x4c22a2[_0xb63e('0x15')][_0xb63e('0x16')]===0x1f4){logger['error'](_0xb63e('0x17'),_0xeb9650,_0x4c22a2[_0xb63e('0x15')][_0xb63e('0x18')]);return _0x199b7b(_0x4c22a2['error'][_0xb63e('0x18')]);}logger[_0xb63e('0x15')](_0xb63e('0x17'),_0xeb9650,_0x4c22a2[_0xb63e('0x15')]['message']);return _0xe4f423(_0x4c22a2[_0xb63e('0x15')][_0xb63e('0x18')]);}else{logger[_0xb63e('0x10')](_0xb63e('0x17'),_0xeb9650,_0xb63e('0x11'));_0xe4f423(_0x4c22a2['result'][_0xb63e('0x18')]);}})[_0xb63e('0x19')](function(_0x2221d9){logger[_0xb63e('0x15')](_0xb63e('0x17'),_0xeb9650,_0x2221d9);_0x199b7b(_0x2221d9);});});}
\ No newline at end of file
index bf49bcc..3d622b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaef=['connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','put','update','delete','/:id','destroy','exports','util','path'];(function(_0x10df96,_0x1f62a1){var _0x238069=function(_0x35480d){while(--_0x35480d){_0x10df96['push'](_0x10df96['shift']());}};_0x238069(++_0x1f62a1);}(_0xcaef,0x1c9));var _0xfcae=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xcaef[_0x4b055c];return _0x4b62bb;};'use strict';var multer=require('multer');var util=require(_0xfcae('0x0'));var path=require(_0xfcae('0x1'));var timeout=require(_0xfcae('0x2'));var express=require(_0xfcae('0x3'));var router=express['Router']();var fs_extra=require(_0xfcae('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfcae('0x5'));var config=require(_0xfcae('0x6'));var controller=require('./template.controller');router[_0xfcae('0x7')]('/',auth[_0xfcae('0x8')](),controller['index']);router[_0xfcae('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xfcae('0x9')]);router[_0xfcae('0xa')]('/',auth[_0xfcae('0x8')](),controller['create']);router[_0xfcae('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xfcae('0xc')]);router[_0xfcae('0xd')](_0xfcae('0xe'),auth[_0xfcae('0x8')](),controller[_0xfcae('0xf')]);module[_0xfcae('0x10')]=router;
\ No newline at end of file
+var _0x1fa9=['put','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','/:id','post','create'];(function(_0x28776a,_0x5e900a){var _0x51e3a2=function(_0xa446d4){while(--_0xa446d4){_0x28776a['push'](_0x28776a['shift']());}};_0x51e3a2(++_0x5e900a);}(_0x1fa9,0x136));var _0x91fa=function(_0x3315a5,_0x2cbb80){_0x3315a5=_0x3315a5-0x0;var _0x17f42c=_0x1fa9[_0x3315a5];return _0x17f42c;};'use strict';var multer=require(_0x91fa('0x0'));var util=require('util');var path=require(_0x91fa('0x1'));var timeout=require('connect-timeout');var express=require(_0x91fa('0x2'));var router=express[_0x91fa('0x3')]();var fs_extra=require(_0x91fa('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x91fa('0x5'));var config=require(_0x91fa('0x6'));var controller=require(_0x91fa('0x7'));router[_0x91fa('0x8')]('/',auth[_0x91fa('0x9')](),controller['index']);router[_0x91fa('0x8')](_0x91fa('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x91fa('0xb')]('/',auth[_0x91fa('0x9')](),controller[_0x91fa('0xc')]);router[_0x91fa('0xd')](_0x91fa('0xa'),auth[_0x91fa('0x9')](),controller[_0x91fa('0xe')]);router['delete']('/:id',auth[_0x91fa('0x9')](),controller[_0x91fa('0xf')]);module[_0x91fa('0x10')]=router;
\ No newline at end of file
index 2735509..e1d74ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5036=['exports','STRING','TEXT','sequelize'];(function(_0x4c05da,_0x414720){var _0x1614db=function(_0xa19cf6){while(--_0xa19cf6){_0x4c05da['push'](_0x4c05da['shift']());}};_0x1614db(++_0x414720);}(_0x5036,0x193));var _0x6503=function(_0x3dc135,_0x546abc){_0x3dc135=_0x3dc135-0x0;var _0x517300=_0x5036[_0x3dc135];return _0x517300;};'use strict';var Sequelize=require(_0x6503('0x0'));module[_0x6503('0x1')]={'name':{'type':Sequelize[_0x6503('0x2')]},'description':{'type':Sequelize[_0x6503('0x2')]},'html':{'type':Sequelize[_0x6503('0x3')]}};
\ No newline at end of file
+var _0x4c86=['TEXT','sequelize','exports','STRING'];(function(_0x3b3420,_0x366a9e){var _0x703b72=function(_0x32f860){while(--_0x32f860){_0x3b3420['push'](_0x3b3420['shift']());}};_0x703b72(++_0x366a9e);}(_0x4c86,0x1d9));var _0x64c8=function(_0x5d888b,_0x50bd0f){_0x5d888b=_0x5d888b-0x0;var _0x9b103e=_0x4c86[_0x5d888b];return _0x9b103e;};'use strict';var Sequelize=require(_0x64c8('0x0'));module[_0x64c8('0x1')]={'name':{'type':Sequelize[_0x64c8('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x64c8('0x3')]}};
\ No newline at end of file
index 300c8bd..399d85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37ce=['limit','count','set','Content-Range','apply','save','update','destroy','get','Templates','UserProfileResource','then','error','name','send','index','Template','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0xca9e22,_0x257ca7){var _0x445bc2=function(_0x186525){while(--_0x186525){_0xca9e22['push'](_0xca9e22['shift']());}};_0x445bc2(++_0x257ca7);}(_0x37ce,0xd3));var _0xe37c=function(_0x13cd32,_0x48fc3c){_0x13cd32=_0x13cd32-0x0;var _0x28a2e4=_0x37ce[_0x13cd32];return _0x28a2e4;};'use strict';var emlformat=require(_0xe37c('0x0'));var rimraf=require(_0xe37c('0x1'));var zipdir=require(_0xe37c('0x2'));var jsonpatch=require(_0xe37c('0x3'));var rp=require(_0xe37c('0x4'));var moment=require(_0xe37c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe37c('0x6'));var util=require(_0xe37c('0x7'));var path=require(_0xe37c('0x8'));var sox=require('sox');var csv=require(_0xe37c('0x9'));var ejs=require(_0xe37c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe37c('0xb'));var crypto=require(_0xe37c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe37c('0xd'));var toCsv=require('to-csv');var querystring=require(_0xe37c('0xe'));var Papa=require(_0xe37c('0xf'));var Redis=require(_0xe37c('0x10'));var authService=require(_0xe37c('0x11'));var qs=require(_0xe37c('0x12'));var as=require(_0xe37c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe37c('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe37c('0x15'));var db=require(_0xe37c('0x16'))['db'];function respondWithStatusCode(_0x57a4a1,_0xaf6534){_0xaf6534=_0xaf6534||0xcc;return function(_0x1f5fb8){if(_0x1f5fb8){return _0x57a4a1[_0xe37c('0x17')](_0xaf6534);}return _0x57a4a1[_0xe37c('0x18')](_0xaf6534)[_0xe37c('0x19')]();};}function respondWithResult(_0x205d6f,_0x4b00c9){_0x4b00c9=_0x4b00c9||0xc8;return function(_0x1d57d7){if(_0x1d57d7){return _0x205d6f[_0xe37c('0x18')](_0x4b00c9)[_0xe37c('0x1a')](_0x1d57d7);}};}function respondWithFilteredResult(_0x10d0bb,_0x4776ff){return function(_0x2b3aec){if(_0x2b3aec){var _0x3c5734=typeof _0x4776ff[_0xe37c('0x1b')]===_0xe37c('0x1c')&&typeof _0x4776ff[_0xe37c('0x1d')]==='undefined';var _0x2af009=_0x2b3aec['count'];var _0x217d7f=_0x3c5734?0x0:_0x4776ff[_0xe37c('0x1b')];var _0x54dffd=_0x3c5734?_0x2b3aec[_0xe37c('0x1e')]:_0x4776ff[_0xe37c('0x1b')]+_0x4776ff[_0xe37c('0x1d')];var _0x3b7e8f;if(_0x54dffd>=_0x2af009){_0x54dffd=_0x2af009;_0x3b7e8f=0xc8;}else{_0x3b7e8f=0xce;}_0x10d0bb[_0xe37c('0x18')](_0x3b7e8f);return _0x10d0bb[_0xe37c('0x1f')](_0xe37c('0x20'),_0x217d7f+'-'+_0x54dffd+'/'+_0x2af009)[_0xe37c('0x1a')](_0x2b3aec);}return null;};}function patchUpdates(_0x4d2a29){return function(_0x357f20){try{jsonpatch[_0xe37c('0x21')](_0x357f20,_0x4d2a29,!![]);}catch(_0x3fe642){return BPromise['reject'](_0x3fe642);}return _0x357f20[_0xe37c('0x22')]();};}function saveUpdates(_0x1d6b8f,_0x152f22){return function(_0x456afa){if(_0x456afa){return _0x456afa[_0xe37c('0x23')](_0x1d6b8f)['then'](function(_0x1d9734){return _0x1d9734;});}return null;};}function removeEntity(_0x3b3923,_0x303198){return function(_0x131618){if(_0x131618){return _0x131618[_0xe37c('0x24')]()['then'](function(){var _0x10ccb1=_0x131618[_0xe37c('0x25')]({'plain':!![]});var _0x7b9e9f=_0xe37c('0x26');return db[_0xe37c('0x27')][_0xe37c('0x24')]({'where':{'type':_0x7b9e9f,'resourceId':_0x10ccb1['id']}})['then'](function(){return _0x131618;});})[_0xe37c('0x28')](function(){_0x3b3923[_0xe37c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51fb42,_0x5a0d62){return function(_0x38ca7b){if(!_0x38ca7b){_0x51fb42[_0xe37c('0x17')](0x194);}return _0x38ca7b;};}function handleError(_0x441a97,_0x2a6019){_0x2a6019=_0x2a6019||0x1f4;return function(_0x407a98){logger[_0xe37c('0x29')](_0x407a98['stack']);if(_0x407a98[_0xe37c('0x2a')]){delete _0x407a98['name'];}_0x441a97[_0xe37c('0x18')](_0x2a6019)[_0xe37c('0x2b')](_0x407a98);};}exports[_0xe37c('0x2c')]=function(_0x85ba8,_0x27fda9){var _0x2b2f22={},_0x5dbc1d={},_0x3c862d={'count':0x0,'rows':[]};var _0x1dc6f0=_['map'](db[_0xe37c('0x2d')][_0xe37c('0x2e')],function(_0x10148c){return{'name':_0x10148c[_0xe37c('0x2f')],'type':_0x10148c[_0xe37c('0x30')][_0xe37c('0x31')]};});_0x5dbc1d[_0xe37c('0x32')]=_[_0xe37c('0x33')](_0x1dc6f0,_0xe37c('0x2a'));_0x5dbc1d[_0xe37c('0x34')]=_['keys'](_0x85ba8[_0xe37c('0x34')]);_0x5dbc1d[_0xe37c('0x35')]=_[_0xe37c('0x36')](_0x5dbc1d[_0xe37c('0x32')],_0x5dbc1d[_0xe37c('0x34')]);_0x2b2f22['attributes']=_[_0xe37c('0x36')](_0x5dbc1d['model'],qs['fields'](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x37')]));_0x2b2f22[_0xe37c('0x38')]=_0x2b2f22[_0xe37c('0x38')]['length']?_0x2b2f22[_0xe37c('0x38')]:_0x5dbc1d[_0xe37c('0x32')];if(!_0x85ba8[_0xe37c('0x34')][_0xe37c('0x39')]('nolimit')){_0x2b2f22[_0xe37c('0x1d')]=qs['limit'](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x1d')]);_0x2b2f22[_0xe37c('0x1b')]=qs[_0xe37c('0x1b')](_0x85ba8[_0xe37c('0x34')][_0xe37c('0x1b')]);}_0x2b2f22['order']=qs[_0xe37c('0x3a')](_0x85ba8['query'][_0xe37c('0x3a')]);_0x2b2f22[_0xe37c('0x3b')]=qs['filters'](_[_0xe37c('0x3c')](_0x85ba8['query'],_0x5dbc1d[_0xe37c('0x35')]),_0x1dc6f0);if(_0x85ba8[_0xe37c('0x34')][_0xe37c('0x3d')]){_0x2b2f22[_0xe37c('0x3b')]=_['merge'](_0x2b2f22['where'],{'$or':_[_0xe37c('0x33')](_0x1dc6f0,function(_0x42129c){if(_0x42129c[_0xe37c('0x30')]!=='VIRTUAL'){var _0x36c680={};_0x36c680[_0x42129c['name']]={'$like':'%'+_0x85ba8['query']['filter']+'%'};return _0x36c680;}})});}_0x2b2f22=_[_0xe37c('0x3e')]({},_0x2b2f22,_0x85ba8[_0xe37c('0x3f')]);var _0x58163c={'where':_0x2b2f22[_0xe37c('0x3b')]};return db[_0xe37c('0x2d')][_0xe37c('0x1e')](_0x58163c)[_0xe37c('0x28')](function(_0x5146c5){_0x3c862d[_0xe37c('0x1e')]=_0x5146c5;if(_0x85ba8[_0xe37c('0x34')][_0xe37c('0x40')]){_0x2b2f22['include']=[{'all':!![]}];}return db[_0xe37c('0x2d')][_0xe37c('0x41')](_0x2b2f22);})[_0xe37c('0x28')](function(_0x3fb932){_0x3c862d[_0xe37c('0x42')]=_0x3fb932;return _0x3c862d;})[_0xe37c('0x28')](respondWithFilteredResult(_0x27fda9,_0x2b2f22))[_0xe37c('0x43')](handleError(_0x27fda9,null));};exports[_0xe37c('0x44')]=function(_0x272a97,_0x51a172){var _0x39f919={'raw':!![],'where':{'id':_0x272a97[_0xe37c('0x45')]['id']}},_0x16880c={};_0x16880c[_0xe37c('0x32')]=_[_0xe37c('0x46')](db[_0xe37c('0x2d')]['rawAttributes']);_0x16880c['query']=_[_0xe37c('0x46')](_0x272a97[_0xe37c('0x34')]);_0x16880c[_0xe37c('0x35')]=_[_0xe37c('0x36')](_0x16880c[_0xe37c('0x32')],_0x16880c[_0xe37c('0x34')]);_0x39f919[_0xe37c('0x38')]=_['intersection'](_0x16880c['model'],qs[_0xe37c('0x37')](_0x272a97[_0xe37c('0x34')][_0xe37c('0x37')]));_0x39f919[_0xe37c('0x38')]=_0x39f919[_0xe37c('0x38')][_0xe37c('0x47')]?_0x39f919['attributes']:_0x16880c['model'];if(_0x272a97[_0xe37c('0x34')][_0xe37c('0x40')]){_0x39f919['include']=[{'all':!![]}];}_0x39f919=_[_0xe37c('0x3e')]({},_0x39f919,_0x272a97['options']);return db['Template'][_0xe37c('0x48')](_0x39f919)[_0xe37c('0x28')](handleEntityNotFound(_0x51a172,null))['then'](respondWithResult(_0x51a172,null))[_0xe37c('0x43')](handleError(_0x51a172,null));};exports[_0xe37c('0x49')]=function(_0x2cd5af,_0x59c443){return db[_0xe37c('0x2d')][_0xe37c('0x49')](_0x2cd5af[_0xe37c('0x4a')],{})[_0xe37c('0x28')](function(_0x57b772){var _0x48d885=_0x2cd5af[_0xe37c('0x4b')][_0xe37c('0x25')]({'plain':!![]});if(!_0x48d885)throw new Error(_0xe37c('0x4c'));if(_0x48d885['role']==='user'){var _0x538dc8=_0x57b772[_0xe37c('0x25')]({'plain':!![]});var _0x1d449d=_0xe37c('0x26');return db[_0xe37c('0x4d')][_0xe37c('0x48')]({'where':{'name':_0x1d449d,'userProfileId':_0x48d885['userProfileId']},'raw':!![]})[_0xe37c('0x28')](function(_0x57aa0b){if(_0x57aa0b&&_0x57aa0b[_0xe37c('0x4e')]===0x0){return db['UserProfileResource'][_0xe37c('0x49')]({'name':_0x538dc8['name'],'resourceId':_0x538dc8['id'],'type':_0x57aa0b['name'],'sectionId':_0x57aa0b['id']},{})[_0xe37c('0x28')](function(){return _0x57b772;});}else{return _0x57b772;}})['catch'](function(_0xa71834){logger[_0xe37c('0x29')](_0xe37c('0x4f'),_0xa71834);throw _0xa71834;});}return _0x57b772;})['then'](respondWithResult(_0x59c443,0xc9))['catch'](handleError(_0x59c443,null));};exports[_0xe37c('0x23')]=function(_0x3ac75c,_0x166360){if(_0x3ac75c[_0xe37c('0x4a')]['id']){delete _0x3ac75c[_0xe37c('0x4a')]['id'];}return db['Template'][_0xe37c('0x48')]({'where':{'id':_0x3ac75c[_0xe37c('0x45')]['id']}})[_0xe37c('0x28')](handleEntityNotFound(_0x166360,null))['then'](saveUpdates(_0x3ac75c[_0xe37c('0x4a')],null))[_0xe37c('0x28')](respondWithResult(_0x166360,null))[_0xe37c('0x43')](handleError(_0x166360,null));};exports[_0xe37c('0x24')]=function(_0x49424b,_0x2fba39){return db['Template']['find']({'where':{'id':_0x49424b[_0xe37c('0x45')]['id']}})[_0xe37c('0x28')](handleEntityNotFound(_0x2fba39,null))[_0xe37c('0x28')](removeEntity(_0x2fba39,null))[_0xe37c('0x43')](handleError(_0x2fba39,null));};
\ No newline at end of file
+var _0x7238=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','offset','limit','set','Content-Range','apply','reject','update','then','destroy','UserProfileResource','error','stack','name','send','index','Template','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','findAll','catch','show','params','rawAttributes','filters','create','body','user','get'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0x7238,0xb3));var _0x8723=function(_0x4dd44c,_0x249887){_0x4dd44c=_0x4dd44c-0x0;var _0x229a94=_0x7238[_0x4dd44c];return _0x229a94;};'use strict';var emlformat=require(_0x8723('0x0'));var rimraf=require(_0x8723('0x1'));var zipdir=require(_0x8723('0x2'));var jsonpatch=require(_0x8723('0x3'));var rp=require(_0x8723('0x4'));var moment=require(_0x8723('0x5'));var BPromise=require(_0x8723('0x6'));var Mustache=require(_0x8723('0x7'));var util=require(_0x8723('0x8'));var path=require(_0x8723('0x9'));var sox=require(_0x8723('0xa'));var csv=require(_0x8723('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8723('0xc'));var _=require(_0x8723('0xd'));var squel=require(_0x8723('0xe'));var crypto=require(_0x8723('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x8723('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8723('0x11'));var Papa=require(_0x8723('0x12'));var Redis=require(_0x8723('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8723('0x14'));var as=require(_0x8723('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8723('0x16'))(_0x8723('0x17'));var utils=require('../../config/utils');var config=require(_0x8723('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8723('0x19'))['db'];function respondWithStatusCode(_0x19eb75,_0x4a346e){_0x4a346e=_0x4a346e||0xcc;return function(_0x46dd83){if(_0x46dd83){return _0x19eb75[_0x8723('0x1a')](_0x4a346e);}return _0x19eb75['status'](_0x4a346e)[_0x8723('0x1b')]();};}function respondWithResult(_0xc8bf00,_0x59a2be){_0x59a2be=_0x59a2be||0xc8;return function(_0x1308c5){if(_0x1308c5){return _0xc8bf00[_0x8723('0x1c')](_0x59a2be)[_0x8723('0x1d')](_0x1308c5);}};}function respondWithFilteredResult(_0x30aec7,_0x32c1b9){return function(_0x549d05){if(_0x549d05){var _0x51bef4=typeof _0x32c1b9['offset']===_0x8723('0x1e')&&typeof _0x32c1b9['limit']===_0x8723('0x1e');var _0x4e329c=_0x549d05['count'];var _0x2651c2=_0x51bef4?0x0:_0x32c1b9['offset'];var _0x2f78ff=_0x51bef4?_0x549d05['count']:_0x32c1b9[_0x8723('0x1f')]+_0x32c1b9[_0x8723('0x20')];var _0x236c8e;if(_0x2f78ff>=_0x4e329c){_0x2f78ff=_0x4e329c;_0x236c8e=0xc8;}else{_0x236c8e=0xce;}_0x30aec7['status'](_0x236c8e);return _0x30aec7[_0x8723('0x21')](_0x8723('0x22'),_0x2651c2+'-'+_0x2f78ff+'/'+_0x4e329c)['json'](_0x549d05);}return null;};}function patchUpdates(_0xdf1172){return function(_0x4b2b12){try{jsonpatch[_0x8723('0x23')](_0x4b2b12,_0xdf1172,!![]);}catch(_0x112b24){return BPromise[_0x8723('0x24')](_0x112b24);}return _0x4b2b12['save']();};}function saveUpdates(_0x28d0a8,_0x59dc0d){return function(_0x3067ff){if(_0x3067ff){return _0x3067ff[_0x8723('0x25')](_0x28d0a8)[_0x8723('0x26')](function(_0x1b5bc1){return _0x1b5bc1;});}return null;};}function removeEntity(_0x546ea0,_0x1aefff){return function(_0x3a2b9e){if(_0x3a2b9e){return _0x3a2b9e[_0x8723('0x27')]()[_0x8723('0x26')](function(){var _0x2f8dc0=_0x3a2b9e['get']({'plain':!![]});var _0x2d8030='Templates';return db[_0x8723('0x28')]['destroy']({'where':{'type':_0x2d8030,'resourceId':_0x2f8dc0['id']}})[_0x8723('0x26')](function(){return _0x3a2b9e;});})[_0x8723('0x26')](function(){_0x546ea0[_0x8723('0x1c')](0xcc)[_0x8723('0x1b')]();});}};}function handleEntityNotFound(_0x2741a4,_0x501f30){return function(_0x18307f){if(!_0x18307f){_0x2741a4[_0x8723('0x1a')](0x194);}return _0x18307f;};}function handleError(_0x27d607,_0x30fcd9){_0x30fcd9=_0x30fcd9||0x1f4;return function(_0xeb77a1){logger[_0x8723('0x29')](_0xeb77a1[_0x8723('0x2a')]);if(_0xeb77a1[_0x8723('0x2b')]){delete _0xeb77a1[_0x8723('0x2b')];}_0x27d607[_0x8723('0x1c')](_0x30fcd9)[_0x8723('0x2c')](_0xeb77a1);};}exports[_0x8723('0x2d')]=function(_0x3db9c3,_0x5cbba5){var _0x340bdc={},_0x1936d8={},_0x5ea4a9={'count':0x0,'rows':[]};var _0x38dace=_['map'](db[_0x8723('0x2e')]['rawAttributes'],function(_0x149a85){return{'name':_0x149a85['fieldName'],'type':_0x149a85[_0x8723('0x2f')][_0x8723('0x30')]};});_0x1936d8[_0x8723('0x31')]=_[_0x8723('0x32')](_0x38dace,_0x8723('0x2b'));_0x1936d8[_0x8723('0x33')]=_[_0x8723('0x34')](_0x3db9c3['query']);_0x1936d8['filters']=_[_0x8723('0x35')](_0x1936d8[_0x8723('0x31')],_0x1936d8[_0x8723('0x33')]);_0x340bdc[_0x8723('0x36')]=_[_0x8723('0x35')](_0x1936d8[_0x8723('0x31')],qs[_0x8723('0x37')](_0x3db9c3[_0x8723('0x33')][_0x8723('0x37')]));_0x340bdc[_0x8723('0x36')]=_0x340bdc[_0x8723('0x36')][_0x8723('0x38')]?_0x340bdc['attributes']:_0x1936d8['model'];if(!_0x3db9c3[_0x8723('0x33')][_0x8723('0x39')](_0x8723('0x3a'))){_0x340bdc[_0x8723('0x20')]=qs[_0x8723('0x20')](_0x3db9c3[_0x8723('0x33')]['limit']);_0x340bdc[_0x8723('0x1f')]=qs[_0x8723('0x1f')](_0x3db9c3[_0x8723('0x33')]['offset']);}_0x340bdc[_0x8723('0x3b')]=qs[_0x8723('0x3c')](_0x3db9c3[_0x8723('0x33')]['sort']);_0x340bdc[_0x8723('0x3d')]=qs['filters'](_[_0x8723('0x3e')](_0x3db9c3[_0x8723('0x33')],_0x1936d8['filters']),_0x38dace);if(_0x3db9c3[_0x8723('0x33')][_0x8723('0x3f')]){_0x340bdc[_0x8723('0x3d')]=_[_0x8723('0x40')](_0x340bdc['where'],{'$or':_[_0x8723('0x32')](_0x38dace,function(_0x153ed0){if(_0x153ed0[_0x8723('0x2f')]!==_0x8723('0x41')){var _0x196a9f={};_0x196a9f[_0x153ed0[_0x8723('0x2b')]]={'$like':'%'+_0x3db9c3[_0x8723('0x33')][_0x8723('0x3f')]+'%'};return _0x196a9f;}})});}_0x340bdc=_[_0x8723('0x40')]({},_0x340bdc,_0x3db9c3[_0x8723('0x42')]);var _0x34f74b={'where':_0x340bdc['where']};return db[_0x8723('0x2e')][_0x8723('0x43')](_0x34f74b)[_0x8723('0x26')](function(_0x41a161){_0x5ea4a9['count']=_0x41a161;if(_0x3db9c3[_0x8723('0x33')]['includeAll']){_0x340bdc[_0x8723('0x44')]=[{'all':!![]}];}return db[_0x8723('0x2e')][_0x8723('0x45')](_0x340bdc);})[_0x8723('0x26')](function(_0xc3a75a){_0x5ea4a9['rows']=_0xc3a75a;return _0x5ea4a9;})[_0x8723('0x26')](respondWithFilteredResult(_0x5cbba5,_0x340bdc))[_0x8723('0x46')](handleError(_0x5cbba5,null));};exports[_0x8723('0x47')]=function(_0x509acc,_0x4765c3){var _0x221494={'raw':!![],'where':{'id':_0x509acc[_0x8723('0x48')]['id']}},_0x1fe8d3={};_0x1fe8d3[_0x8723('0x31')]=_[_0x8723('0x34')](db['Template'][_0x8723('0x49')]);_0x1fe8d3[_0x8723('0x33')]=_[_0x8723('0x34')](_0x509acc['query']);_0x1fe8d3[_0x8723('0x4a')]=_[_0x8723('0x35')](_0x1fe8d3[_0x8723('0x31')],_0x1fe8d3['query']);_0x221494['attributes']=_[_0x8723('0x35')](_0x1fe8d3['model'],qs[_0x8723('0x37')](_0x509acc[_0x8723('0x33')][_0x8723('0x37')]));_0x221494['attributes']=_0x221494[_0x8723('0x36')][_0x8723('0x38')]?_0x221494[_0x8723('0x36')]:_0x1fe8d3[_0x8723('0x31')];if(_0x509acc['query']['includeAll']){_0x221494[_0x8723('0x44')]=[{'all':!![]}];}_0x221494=_[_0x8723('0x40')]({},_0x221494,_0x509acc[_0x8723('0x42')]);return db[_0x8723('0x2e')]['find'](_0x221494)[_0x8723('0x26')](handleEntityNotFound(_0x4765c3,null))[_0x8723('0x26')](respondWithResult(_0x4765c3,null))[_0x8723('0x46')](handleError(_0x4765c3,null));};exports[_0x8723('0x4b')]=function(_0x313741,_0x4b6360){return db[_0x8723('0x2e')][_0x8723('0x4b')](_0x313741[_0x8723('0x4c')],{})[_0x8723('0x26')](function(_0x538fd5){var _0x4bcabf=_0x313741[_0x8723('0x4d')][_0x8723('0x4e')]({'plain':!![]});if(!_0x4bcabf)throw new Error(_0x8723('0x4f'));if(_0x4bcabf[_0x8723('0x50')]===_0x8723('0x4d')){var _0x4168f7=_0x538fd5['get']({'plain':!![]});var _0x82c02b=_0x8723('0x51');return db[_0x8723('0x52')][_0x8723('0x53')]({'where':{'name':_0x82c02b,'userProfileId':_0x4bcabf[_0x8723('0x54')]},'raw':!![]})[_0x8723('0x26')](function(_0x25d218){if(_0x25d218&&_0x25d218['autoAssociation']===0x0){return db[_0x8723('0x28')][_0x8723('0x4b')]({'name':_0x4168f7[_0x8723('0x2b')],'resourceId':_0x4168f7['id'],'type':_0x25d218[_0x8723('0x2b')],'sectionId':_0x25d218['id']},{})['then'](function(){return _0x538fd5;});}else{return _0x538fd5;}})[_0x8723('0x46')](function(_0x637bb5){logger[_0x8723('0x29')](_0x8723('0x55'),_0x637bb5);throw _0x637bb5;});}return _0x538fd5;})['then'](respondWithResult(_0x4b6360,0xc9))[_0x8723('0x46')](handleError(_0x4b6360,null));};exports['update']=function(_0x2aab70,_0xfc8c56){if(_0x2aab70[_0x8723('0x4c')]['id']){delete _0x2aab70['body']['id'];}return db[_0x8723('0x2e')][_0x8723('0x53')]({'where':{'id':_0x2aab70[_0x8723('0x48')]['id']}})[_0x8723('0x26')](handleEntityNotFound(_0xfc8c56,null))['then'](saveUpdates(_0x2aab70['body'],null))[_0x8723('0x26')](respondWithResult(_0xfc8c56,null))[_0x8723('0x46')](handleError(_0xfc8c56,null));};exports['destroy']=function(_0x260305,_0x14da88){return db['Template']['find']({'where':{'id':_0x260305[_0x8723('0x48')]['id']}})[_0x8723('0x26')](handleEntityNotFound(_0x14da88,null))[_0x8723('0x26')](removeEntity(_0x14da88,null))[_0x8723('0x46')](handleError(_0x14da88,null));};
\ No newline at end of file
index 008cef5..d195863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ef=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./template.attributes','define','Template','tools_templates','lodash','util'];(function(_0xcb71e,_0x378c69){var _0x5c1cd9=function(_0x35f881){while(--_0x35f881){_0xcb71e['push'](_0xcb71e['shift']());}};_0x5c1cd9(++_0x378c69);}(_0x03ef,0x9a));var _0xf03e=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x03ef[_0x2fc012];return _0x2891f9;};'use strict';var _=require(_0xf03e('0x0'));var util=require(_0xf03e('0x1'));var logger=require(_0xf03e('0x2'))('api');var moment=require(_0xf03e('0x3'));var BPromise=require(_0xf03e('0x4'));var rp=require(_0xf03e('0x5'));var fs=require('fs');var path=require(_0xf03e('0x6'));var rimraf=require(_0xf03e('0x7'));var config=require('../../config/environment');var attributes=require(_0xf03e('0x8'));module['exports']=function(_0x3986f9,_0x28c43c){return _0x3986f9[_0xf03e('0x9')](_0xf03e('0xa'),attributes,{'tableName':_0xf03e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcb1=['util','../../config/logger','api','moment','request-promise','../../config/environment','./template.attributes','exports','define','Template','tools_templates'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xfcb1,0xd1));var _0x1fcb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfcb1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x1fcb('0x0'));var logger=require(_0x1fcb('0x1'))(_0x1fcb('0x2'));var moment=require(_0x1fcb('0x3'));var BPromise=require('bluebird');var rp=require(_0x1fcb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1fcb('0x5'));var attributes=require(_0x1fcb('0x6'));module[_0x1fcb('0x7')]=function(_0x34fdf9,_0x260424){return _0x34fdf9[_0x1fcb('0x8')](_0x1fcb('0x9'),attributes,{'tableName':_0x1fcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 955af05..580c065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd48=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error','code','Template,\x20%s,\x20%s','message','result','GetTemplate','Template','options','where','limit','map','include','model','attributes','catch','lodash','moment','bluebird','randomstring','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbd48,0xd4));var _0x8bd4=function(_0x56b1a1,_0x9bce5e){_0x56b1a1=_0x56b1a1-0x0;var _0x4dd1ff=_0xbd48[_0x56b1a1];return _0x4dd1ff;};'use strict';var _=require(_0x8bd4('0x0'));var util=require('util');var moment=require(_0x8bd4('0x1'));var BPromise=require(_0x8bd4('0x2'));var rs=require(_0x8bd4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8bd4('0x4'))['db'];var utils=require(_0x8bd4('0x5'));var logger=require(_0x8bd4('0x6'))(_0x8bd4('0x7'));var config=require(_0x8bd4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8bd4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a749,_0xcfc99c,_0x40fa01){return new BPromise(function(_0xd23b7e,_0x1bb290){return client[_0x8bd4('0xa')](_0x31a749,_0x40fa01)[_0x8bd4('0xb')](function(_0x1aa31f){logger[_0x8bd4('0xc')]('Template,\x20%s,\x20%s',_0xcfc99c,_0x8bd4('0xd'));logger[_0x8bd4('0xe')](_0x8bd4('0xf'),_0xcfc99c,_0x8bd4('0xd'),JSON['stringify'](_0x1aa31f));if(_0x1aa31f[_0x8bd4('0x10')]){if(_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x11')]===0x1f4){logger[_0x8bd4('0x10')](_0x8bd4('0x12'),_0xcfc99c,_0x1aa31f[_0x8bd4('0x10')]['message']);return _0x1bb290(_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x13')]);}logger[_0x8bd4('0x10')](_0x8bd4('0x12'),_0xcfc99c,_0x1aa31f[_0x8bd4('0x10')][_0x8bd4('0x13')]);return _0xd23b7e(_0x1aa31f[_0x8bd4('0x10')]['message']);}else{logger[_0x8bd4('0xc')](_0x8bd4('0x12'),_0xcfc99c,_0x8bd4('0xd'));_0xd23b7e(_0x1aa31f[_0x8bd4('0x14')][_0x8bd4('0x13')]);}})['catch'](function(_0x5e2b22){logger['error'](_0x8bd4('0x12'),_0xcfc99c,_0x5e2b22);_0x1bb290(_0x5e2b22);});});}exports[_0x8bd4('0x15')]=function(_0x59333d){var _0x4aa049=this;return new Promise(function(_0x2d8f95,_0x396c2f){return db[_0x8bd4('0x16')]['findAll']({'raw':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x59333d[_0x8bd4('0x17')]?_0x59333d['options'][_0x8bd4('0x18')]||null:null,'attributes':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')]['attributes']||null:null,'limit':_0x59333d[_0x8bd4('0x17')]?_0x59333d[_0x8bd4('0x17')][_0x8bd4('0x19')]||null:null,'include':_0x59333d[_0x8bd4('0x17')]?_0x59333d['options']['include']?_[_0x8bd4('0x1a')](_0x59333d[_0x8bd4('0x17')][_0x8bd4('0x1b')],function(_0x50ad50){return{'model':db[_0x50ad50[_0x8bd4('0x1c')]],'as':_0x50ad50['as'],'attributes':_0x50ad50['attributes'],'include':_0x50ad50['include']?_[_0x8bd4('0x1a')](_0x50ad50[_0x8bd4('0x1b')],function(_0x5fe897){return{'model':db[_0x5fe897[_0x8bd4('0x1c')]],'as':_0x5fe897['as'],'attributes':_0x5fe897['attributes'],'include':_0x5fe897['include']?_[_0x8bd4('0x1a')](_0x5fe897['include'],function(_0x3c62b3){return{'model':db[_0x3c62b3[_0x8bd4('0x1c')]],'as':_0x3c62b3['as'],'attributes':_0x3c62b3[_0x8bd4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8bd4('0xb')](function(_0x155932){logger['info'](_0x8bd4('0x15'),_0x59333d);logger['debug'](_0x8bd4('0x15'),_0x59333d,JSON['stringify'](_0x155932));_0x2d8f95(_0x155932);})[_0x8bd4('0x1e')](function(_0x3542ef){logger[_0x8bd4('0x10')](_0x8bd4('0x15'),_0x3542ef[_0x8bd4('0x13')],_0x59333d);_0x396c2f(_0x4aa049['error'](0x1f4,_0x3542ef[_0x8bd4('0x13')]));});});};
\ No newline at end of file
+var _0xd9bd=['model','map','then','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','GetTemplate','findAll','options','raw','where','attributes','limit','include'];(function(_0x2c04d9,_0x59ec65){var _0x5ad09a=function(_0x5e2ce3){while(--_0x5e2ce3){_0x2c04d9['push'](_0x2c04d9['shift']());}};_0x5ad09a(++_0x59ec65);}(_0xd9bd,0x189));var _0xdd9b=function(_0x3c13f0,_0x71a1d0){_0x3c13f0=_0x3c13f0-0x0;var _0x336364=_0xd9bd[_0x3c13f0];return _0x336364;};'use strict';var _=require(_0xdd9b('0x0'));var util=require('util');var moment=require(_0xdd9b('0x1'));var BPromise=require('bluebird');var rs=require(_0xdd9b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdd9b('0x3'))['db'];var utils=require(_0xdd9b('0x4'));var logger=require(_0xdd9b('0x5'))(_0xdd9b('0x6'));var config=require(_0xdd9b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdd9b('0x8')][_0xdd9b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x355b24,_0x531aa5,_0x5bc3c0){return new BPromise(function(_0x1a2ded,_0x7df6d){return client['request'](_0x355b24,_0x5bc3c0)['then'](function(_0x41648a){logger['info'](_0xdd9b('0xa'),_0x531aa5,'request\x20sent');logger[_0xdd9b('0xb')](_0xdd9b('0xc'),_0x531aa5,_0xdd9b('0xd'),JSON[_0xdd9b('0xe')](_0x41648a));if(_0x41648a[_0xdd9b('0xf')]){if(_0x41648a[_0xdd9b('0xf')][_0xdd9b('0x10')]===0x1f4){logger[_0xdd9b('0xf')](_0xdd9b('0xa'),_0x531aa5,_0x41648a[_0xdd9b('0xf')][_0xdd9b('0x11')]);return _0x7df6d(_0x41648a['error'][_0xdd9b('0x11')]);}logger[_0xdd9b('0xf')](_0xdd9b('0xa'),_0x531aa5,_0x41648a['error'][_0xdd9b('0x11')]);return _0x1a2ded(_0x41648a['error'][_0xdd9b('0x11')]);}else{logger[_0xdd9b('0x12')]('Template,\x20%s,\x20%s',_0x531aa5,_0xdd9b('0xd'));_0x1a2ded(_0x41648a['result'][_0xdd9b('0x11')]);}})['catch'](function(_0x104808){logger[_0xdd9b('0xf')](_0xdd9b('0xa'),_0x531aa5,_0x104808);_0x7df6d(_0x104808);});});}exports[_0xdd9b('0x13')]=function(_0x20d366){var _0x186e89=this;return new Promise(function(_0x331710,_0x2e5e1c){return db['Template'][_0xdd9b('0x14')]({'raw':_0x20d366[_0xdd9b('0x15')]?_0x20d366[_0xdd9b('0x15')][_0xdd9b('0x16')]===undefined?!![]:![]:!![],'where':_0x20d366[_0xdd9b('0x15')]?_0x20d366[_0xdd9b('0x15')][_0xdd9b('0x17')]||null:null,'attributes':_0x20d366[_0xdd9b('0x15')]?_0x20d366[_0xdd9b('0x15')][_0xdd9b('0x18')]||null:null,'limit':_0x20d366['options']?_0x20d366['options'][_0xdd9b('0x19')]||null:null,'include':_0x20d366['options']?_0x20d366[_0xdd9b('0x15')]['include']?_['map'](_0x20d366[_0xdd9b('0x15')][_0xdd9b('0x1a')],function(_0x477e28){return{'model':db[_0x477e28[_0xdd9b('0x1b')]],'as':_0x477e28['as'],'attributes':_0x477e28[_0xdd9b('0x18')],'include':_0x477e28[_0xdd9b('0x1a')]?_[_0xdd9b('0x1c')](_0x477e28['include'],function(_0x267521){return{'model':db[_0x267521[_0xdd9b('0x1b')]],'as':_0x267521['as'],'attributes':_0x267521['attributes'],'include':_0x267521[_0xdd9b('0x1a')]?_[_0xdd9b('0x1c')](_0x267521[_0xdd9b('0x1a')],function(_0x3ac91a){return{'model':db[_0x3ac91a['model']],'as':_0x3ac91a['as'],'attributes':_0x3ac91a['attributes']};}):[]};}):[]};}):[]:[]})[_0xdd9b('0x1d')](function(_0x14bd76){logger[_0xdd9b('0x12')]('GetTemplate',_0x20d366);logger['debug'](_0xdd9b('0x13'),_0x20d366,JSON[_0xdd9b('0xe')](_0x14bd76));_0x331710(_0x14bd76);})['catch'](function(_0x196451){logger[_0xdd9b('0xf')](_0xdd9b('0x13'),_0x196451['message'],_0x20d366);_0x2e5e1c(_0x186e89['error'](0x1f4,_0x196451[_0xdd9b('0x11')]));});});};
\ No newline at end of file
index 291c0fc..29a95e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x737c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','getAllConditions','/:id/any_conditions','isAuthenticated','getAnyConditions','/:id/actions','post','create','addAllCondition','addAnyCondition','put','update','exports','util','path','express'];(function(_0x9f9761,_0x5d60ce){var _0x594ef8=function(_0xa940d3){while(--_0xa940d3){_0x9f9761['push'](_0x9f9761['shift']());}};_0x594ef8(++_0x5d60ce);}(_0x737c,0x14d));var _0xc737=function(_0x20dda3,_0xfcb775){_0x20dda3=_0x20dda3-0x0;var _0x547b71=_0x737c[_0x20dda3];return _0x547b71;};'use strict';var multer=require('multer');var util=require(_0xc737('0x0'));var path=require(_0xc737('0x1'));var timeout=require('connect-timeout');var express=require(_0xc737('0x2'));var router=express[_0xc737('0x3')]();var fs_extra=require(_0xc737('0x4'));var auth=require(_0xc737('0x5'));var interaction=require(_0xc737('0x6'));var config=require(_0xc737('0x7'));var controller=require('./trigger.controller');router[_0xc737('0x8')]('/',auth['isAuthenticated'](),controller[_0xc737('0x9')]);router[_0xc737('0x8')](_0xc737('0xa'),auth['isAuthenticated'](),controller[_0xc737('0xb')]);router['get']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc737('0xc')]);router[_0xc737('0x8')](_0xc737('0xd'),auth[_0xc737('0xe')](),controller[_0xc737('0xf')]);router[_0xc737('0x8')](_0xc737('0x10'),auth[_0xc737('0xe')](),controller['getActions']);router[_0xc737('0x11')]('/',auth[_0xc737('0xe')](),controller[_0xc737('0x12')]);router[_0xc737('0x11')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc737('0x13')]);router[_0xc737('0x11')](_0xc737('0xd'),auth[_0xc737('0xe')](),controller[_0xc737('0x14')]);router[_0xc737('0x11')]('/:id/actions',auth[_0xc737('0xe')](),controller['addAction']);router[_0xc737('0x15')](_0xc737('0xa'),auth[_0xc737('0xe')](),controller[_0xc737('0x16')]);router['delete'](_0xc737('0xa'),auth[_0xc737('0xe')](),controller['destroy']);module[_0xc737('0x17')]=router;
\ No newline at end of file
+var _0xbd7b=['/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','post','create','addAllCondition','addAnyCondition','put','update','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x42462f,_0xbb3a9a){var _0x30aec5=function(_0x446f9e){while(--_0x446f9e){_0x42462f['push'](_0x42462f['shift']());}};_0x30aec5(++_0xbb3a9a);}(_0xbd7b,0x1ec));var _0xbbd7=function(_0x309583,_0x3a4bcb){_0x309583=_0x309583-0x0;var _0x50e8f4=_0xbd7b[_0x309583];return _0x50e8f4;};'use strict';var multer=require('multer');var util=require(_0xbbd7('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbbd7('0x1'));var router=express[_0xbbd7('0x2')]();var fs_extra=require(_0xbbd7('0x3'));var auth=require(_0xbbd7('0x4'));var interaction=require(_0xbbd7('0x5'));var config=require(_0xbbd7('0x6'));var controller=require('./trigger.controller');router[_0xbbd7('0x7')]('/',auth[_0xbbd7('0x8')](),controller[_0xbbd7('0x9')]);router[_0xbbd7('0x7')](_0xbbd7('0xa'),auth[_0xbbd7('0x8')](),controller[_0xbbd7('0xb')]);router[_0xbbd7('0x7')](_0xbbd7('0xc'),auth['isAuthenticated'](),controller[_0xbbd7('0xd')]);router[_0xbbd7('0x7')](_0xbbd7('0xe'),auth[_0xbbd7('0x8')](),controller[_0xbbd7('0xf')]);router[_0xbbd7('0x7')](_0xbbd7('0x10'),auth[_0xbbd7('0x8')](),controller['getActions']);router[_0xbbd7('0x11')]('/',auth[_0xbbd7('0x8')](),controller[_0xbbd7('0x12')]);router[_0xbbd7('0x11')](_0xbbd7('0xc'),auth[_0xbbd7('0x8')](),controller[_0xbbd7('0x13')]);router[_0xbbd7('0x11')](_0xbbd7('0xe'),auth['isAuthenticated'](),controller[_0xbbd7('0x14')]);router[_0xbbd7('0x11')](_0xbbd7('0x10'),auth['isAuthenticated'](),controller['addAction']);router[_0xbbd7('0x15')](_0xbbd7('0xa'),auth[_0xbbd7('0x8')](),controller[_0xbbd7('0x16')]);router['delete'](_0xbbd7('0xa'),auth['isAuthenticated'](),controller[_0xbbd7('0x17')]);module['exports']=router;
\ No newline at end of file
index afa8c69..6a01c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['STRING','BOOLEAN','sequelize','exports'];(function(_0x14723d,_0x4e09de){var _0x53227d=function(_0x28aea4){while(--_0x28aea4){_0x14723d['push'](_0x14723d['shift']());}};_0x53227d(++_0x4e09de);}(_0x93e9,0xda));var _0x993e=function(_0x338f03,_0x28941b){_0x338f03=_0x338f03-0x0;var _0x514d7e=_0x93e9[_0x338f03];return _0x514d7e;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x993e('0x2')]},'status':{'type':Sequelize[_0x993e('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8b9a=['sequelize','STRING','BOOLEAN'];(function(_0xc05d5c,_0x2ed9f8){var _0x32eb66=function(_0x326044){while(--_0x326044){_0xc05d5c['push'](_0xc05d5c['shift']());}};_0x32eb66(++_0x2ed9f8);}(_0x8b9a,0x1f2));var _0xa8b9=function(_0x524251,_0x64a098){_0x524251=_0x524251-0x0;var _0x3b1d4c=_0x8b9a[_0x524251];return _0x3b1d4c;};'use strict';var Sequelize=require(_0xa8b9('0x0'));module['exports']={'name':{'type':Sequelize[_0xa8b9('0x1')]},'channel':{'type':Sequelize[_0xa8b9('0x1')]},'description':{'type':Sequelize[_0xa8b9('0x1')]},'status':{'type':Sequelize[_0xa8b9('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 7c99161..6e15ff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x706c=['pick','addAction','TriggerId','Action','getActions','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','end','stack','name','send','index','map','Trigger','rawAttributes','fieldName','key','model','keys','query','attributes','fields','length','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','include','findAll','show','params','intersection','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','Triggers','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','hasOwnProperty','getAnyConditions'];(function(_0x3449e7,_0x79e3d){var _0x255590=function(_0x1da4bf){while(--_0x1da4bf){_0x3449e7['push'](_0x3449e7['shift']());}};_0x255590(++_0x79e3d);}(_0x706c,0x1ef));var _0xc706=function(_0x509c83,_0x511882){_0x509c83=_0x509c83-0x0;var _0x534626=_0x706c[_0x509c83];return _0x534626;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc706('0x0'));var zipdir=require(_0xc706('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc706('0x2'));var BPromise=require(_0xc706('0x3'));var Mustache=require(_0xc706('0x4'));var util=require(_0xc706('0x5'));var path=require(_0xc706('0x6'));var sox=require(_0xc706('0x7'));var csv=require(_0xc706('0x8'));var ejs=require(_0xc706('0x9'));var fs=require('fs');var fs_extra=require(_0xc706('0xa'));var _=require(_0xc706('0xb'));var squel=require(_0xc706('0xc'));var crypto=require(_0xc706('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc706('0xe'));var toCsv=require(_0xc706('0x8'));var querystring=require(_0xc706('0xf'));var Papa=require(_0xc706('0x10'));var Redis=require('ioredis');var authService=require(_0xc706('0x11'));var qs=require(_0xc706('0x12'));var as=require(_0xc706('0x13'));var hardwareService=require(_0xc706('0x14'));var logger=require('../../config/logger')(_0xc706('0x15'));var utils=require('../../config/utils');var config=require(_0xc706('0x16'));var licenseUtil=require(_0xc706('0x17'));var db=require(_0xc706('0x18'))['db'];function respondWithStatusCode(_0x38bff9,_0x47d767){_0x47d767=_0x47d767||0xcc;return function(_0x322caf){if(_0x322caf){return _0x38bff9[_0xc706('0x19')](_0x47d767);}return _0x38bff9[_0xc706('0x1a')](_0x47d767)['end']();};}function respondWithResult(_0x4847ed,_0x59b266){_0x59b266=_0x59b266||0xc8;return function(_0x18d4da){if(_0x18d4da){return _0x4847ed[_0xc706('0x1a')](_0x59b266)[_0xc706('0x1b')](_0x18d4da);}};}function respondWithFilteredResult(_0x5e76c5,_0x8fe38e){return function(_0x2ea99e){if(_0x2ea99e){var _0xc62510=typeof _0x8fe38e['offset']===_0xc706('0x1c')&&typeof _0x8fe38e['limit']===_0xc706('0x1c');var _0x3daa58=_0x2ea99e['count'];var _0x364a8b=_0xc62510?0x0:_0x8fe38e[_0xc706('0x1d')];var _0x325a8a=_0xc62510?_0x2ea99e[_0xc706('0x1e')]:_0x8fe38e[_0xc706('0x1d')]+_0x8fe38e[_0xc706('0x1f')];var _0x1a13d7;if(_0x325a8a>=_0x3daa58){_0x325a8a=_0x3daa58;_0x1a13d7=0xc8;}else{_0x1a13d7=0xce;}_0x5e76c5[_0xc706('0x1a')](_0x1a13d7);return _0x5e76c5[_0xc706('0x20')](_0xc706('0x21'),_0x364a8b+'-'+_0x325a8a+'/'+_0x3daa58)[_0xc706('0x1b')](_0x2ea99e);}return null;};}function patchUpdates(_0xb91516){return function(_0x25dad3){try{jsonpatch[_0xc706('0x22')](_0x25dad3,_0xb91516,!![]);}catch(_0x84ff9e){return BPromise[_0xc706('0x23')](_0x84ff9e);}return _0x25dad3[_0xc706('0x24')]();};}function saveUpdates(_0x48459f,_0x3fc453){return function(_0x21cf78){if(_0x21cf78){return _0x21cf78[_0xc706('0x25')](_0x48459f)[_0xc706('0x26')](function(_0x15bfe2){return _0x15bfe2;});}return null;};}function removeEntity(_0x17eb74,_0x2d7747){return function(_0x4e1d15){if(_0x4e1d15){return _0x4e1d15[_0xc706('0x27')]()[_0xc706('0x26')](function(){var _0x54c1bd=_0x4e1d15['get']({'plain':!![]});var _0x82ebca='Triggers';return db[_0xc706('0x28')][_0xc706('0x27')]({'where':{'type':_0x82ebca,'resourceId':_0x54c1bd['id']}})[_0xc706('0x26')](function(){return _0x4e1d15;});})[_0xc706('0x26')](function(){_0x17eb74['status'](0xcc)[_0xc706('0x29')]();});}};}function handleEntityNotFound(_0xf39c40,_0x61c701){return function(_0x1402eb){if(!_0x1402eb){_0xf39c40['sendStatus'](0x194);}return _0x1402eb;};}function handleError(_0x557b97,_0x41c23f){_0x41c23f=_0x41c23f||0x1f4;return function(_0x5c9cbc){logger['error'](_0x5c9cbc[_0xc706('0x2a')]);if(_0x5c9cbc[_0xc706('0x2b')]){delete _0x5c9cbc[_0xc706('0x2b')];}_0x557b97[_0xc706('0x1a')](_0x41c23f)[_0xc706('0x2c')](_0x5c9cbc);};}exports[_0xc706('0x2d')]=function(_0x432489,_0xa2d79c){var _0x4bf123={},_0x18c1ab={},_0x1dbe82={'count':0x0,'rows':[]};var _0x946155=_[_0xc706('0x2e')](db[_0xc706('0x2f')][_0xc706('0x30')],function(_0x181f4f){return{'name':_0x181f4f[_0xc706('0x31')],'type':_0x181f4f['type'][_0xc706('0x32')]};});_0x18c1ab[_0xc706('0x33')]=_['map'](_0x946155,_0xc706('0x2b'));_0x18c1ab['query']=_[_0xc706('0x34')](_0x432489[_0xc706('0x35')]);_0x18c1ab['filters']=_['intersection'](_0x18c1ab[_0xc706('0x33')],_0x18c1ab[_0xc706('0x35')]);_0x4bf123[_0xc706('0x36')]=_['intersection'](_0x18c1ab[_0xc706('0x33')],qs[_0xc706('0x37')](_0x432489[_0xc706('0x35')][_0xc706('0x37')]));_0x4bf123['attributes']=_0x4bf123[_0xc706('0x36')][_0xc706('0x38')]?_0x4bf123[_0xc706('0x36')]:_0x18c1ab[_0xc706('0x33')];if(!_0x432489[_0xc706('0x35')]['hasOwnProperty'](_0xc706('0x39'))){_0x4bf123[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x432489[_0xc706('0x35')][_0xc706('0x1f')]);_0x4bf123['offset']=qs['offset'](_0x432489[_0xc706('0x35')]['offset']);}_0x4bf123[_0xc706('0x3a')]=qs[_0xc706('0x3b')](_0x432489['query'][_0xc706('0x3b')]);_0x4bf123[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_['pick'](_0x432489['query'],_0x18c1ab[_0xc706('0x3d')]),_0x946155);if(_0x432489[_0xc706('0x35')]['filter']){_0x4bf123[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x4bf123['where'],{'$or':_['map'](_0x946155,function(_0x557f12){if(_0x557f12['type']!==_0xc706('0x3f')){var _0x43c57b={};_0x43c57b[_0x557f12[_0xc706('0x2b')]]={'$like':'%'+_0x432489[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x43c57b;}})});}_0x4bf123=_[_0xc706('0x3e')]({},_0x4bf123,_0x432489['options']);var _0x4d61a4={'where':_0x4bf123[_0xc706('0x3c')]};return db['Trigger'][_0xc706('0x1e')](_0x4d61a4)['then'](function(_0x1fa9e7){_0x1dbe82['count']=_0x1fa9e7;if(_0x432489[_0xc706('0x35')][_0xc706('0x41')]){_0x4bf123[_0xc706('0x42')]=[{'all':!![]}];}return db[_0xc706('0x2f')][_0xc706('0x43')](_0x4bf123);})[_0xc706('0x26')](function(_0x3062f0){_0x1dbe82['rows']=_0x3062f0;return _0x1dbe82;})[_0xc706('0x26')](respondWithFilteredResult(_0xa2d79c,_0x4bf123))['catch'](handleError(_0xa2d79c,null));};exports[_0xc706('0x44')]=function(_0x376631,_0x3308b0){var _0x39aba1={'raw':![],'where':{'id':_0x376631[_0xc706('0x45')]['id']}},_0x24e93d={};_0x24e93d[_0xc706('0x33')]=_[_0xc706('0x34')](db[_0xc706('0x2f')][_0xc706('0x30')]);_0x24e93d[_0xc706('0x35')]=_[_0xc706('0x34')](_0x376631[_0xc706('0x35')]);_0x24e93d['filters']=_[_0xc706('0x46')](_0x24e93d[_0xc706('0x33')],_0x24e93d[_0xc706('0x35')]);_0x39aba1['attributes']=_['intersection'](_0x24e93d['model'],qs[_0xc706('0x37')](_0x376631[_0xc706('0x35')][_0xc706('0x37')]));_0x39aba1[_0xc706('0x36')]=_0x39aba1[_0xc706('0x36')][_0xc706('0x38')]?_0x39aba1[_0xc706('0x36')]:_0x24e93d[_0xc706('0x33')];if(_0x376631[_0xc706('0x35')]['includeAll']){_0x39aba1[_0xc706('0x42')]=[{'all':!![]}];}_0x39aba1=_[_0xc706('0x3e')]({},_0x39aba1,_0x376631[_0xc706('0x47')]);return db[_0xc706('0x2f')][_0xc706('0x48')](_0x39aba1)['then'](handleEntityNotFound(_0x3308b0,null))[_0xc706('0x26')](respondWithResult(_0x3308b0,null))[_0xc706('0x49')](handleError(_0x3308b0,null));};exports[_0xc706('0x4a')]=function(_0x2eb750,_0x2bed77){return db[_0xc706('0x2f')][_0xc706('0x4a')](_0x2eb750[_0xc706('0x4b')],{})['then'](function(_0x2feb2d){var _0x5d0e0f=_0x2eb750[_0xc706('0x4c')]['get']({'plain':!![]});if(!_0x5d0e0f)throw new Error(_0xc706('0x4d'));if(_0x5d0e0f['role']==='user'){var _0x10cb8f=_0x2feb2d[_0xc706('0x4e')]({'plain':!![]});var _0x2e937a=_0xc706('0x4f');return db['UserProfileSection']['find']({'where':{'name':_0x2e937a,'userProfileId':_0x5d0e0f[_0xc706('0x50')]},'raw':!![]})['then'](function(_0x110c1f){if(_0x110c1f&&_0x110c1f[_0xc706('0x51')]===0x0){return db[_0xc706('0x28')][_0xc706('0x4a')]({'name':_0x10cb8f['name'],'resourceId':_0x10cb8f['id'],'type':_0x110c1f[_0xc706('0x2b')],'sectionId':_0x110c1f['id']},{})[_0xc706('0x26')](function(){return _0x2feb2d;});}else{return _0x2feb2d;}})[_0xc706('0x49')](function(_0x1c2f1c){logger[_0xc706('0x52')](_0xc706('0x53'),_0x1c2f1c);throw _0x1c2f1c;});}return _0x2feb2d;})[_0xc706('0x26')](respondWithResult(_0x2bed77,0xc9))[_0xc706('0x49')](handleError(_0x2bed77,null));};exports[_0xc706('0x25')]=function(_0x1f620a,_0x1c4297){if(_0x1f620a[_0xc706('0x4b')]['id']){delete _0x1f620a[_0xc706('0x4b')]['id'];}return db['Trigger'][_0xc706('0x48')]({'where':{'id':_0x1f620a[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x1c4297,null))[_0xc706('0x26')](saveUpdates(_0x1f620a[_0xc706('0x4b')],null))[_0xc706('0x26')](respondWithResult(_0x1c4297,null))[_0xc706('0x49')](handleError(_0x1c4297,null));};exports[_0xc706('0x27')]=function(_0x39e19c,_0x4a62b8){return db[_0xc706('0x2f')]['find']({'where':{'id':_0x39e19c[_0xc706('0x45')]['id']}})['then'](handleEntityNotFound(_0x4a62b8,null))[_0xc706('0x26')](removeEntity(_0x4a62b8,null))[_0xc706('0x49')](handleError(_0x4a62b8,null));};exports[_0xc706('0x54')]=function(_0x52bc8f,_0x3fb066,_0x944992){if(_0x52bc8f[_0xc706('0x4b')]['id']){delete _0x52bc8f[_0xc706('0x4b')]['id'];}return db[_0xc706('0x2f')]['find']({'where':{'id':_0x52bc8f[_0xc706('0x45')]['id']}})['then'](handleEntityNotFound(_0x3fb066,null))['then'](function(_0x1c0ac9){if(_0x1c0ac9){_0x52bc8f[_0xc706('0x4b')][_0xc706('0x55')]=_0x1c0ac9['id'];return db[_0xc706('0x56')]['create'](_0x52bc8f[_0xc706('0x4b')]);}})[_0xc706('0x26')](respondWithResult(_0x3fb066,null))[_0xc706('0x49')](handleError(_0x3fb066,null));};exports[_0xc706('0x57')]=function(_0x1f8875,_0x92f3c5,_0x1b134a){if(_0x1f8875['body']['id']){delete _0x1f8875['body']['id'];}return db[_0xc706('0x2f')][_0xc706('0x48')]({'where':{'id':_0x1f8875[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x92f3c5,null))[_0xc706('0x26')](function(_0xa7c4cc){if(_0xa7c4cc){_0x1f8875[_0xc706('0x4b')][_0xc706('0x58')]=_0xa7c4cc['id'];return db[_0xc706('0x56')][_0xc706('0x4a')](_0x1f8875['body']);}})[_0xc706('0x26')](respondWithResult(_0x92f3c5,null))[_0xc706('0x49')](handleError(_0x92f3c5,null));};exports[_0xc706('0x59')]=function(_0x3ec8ea,_0x4056ad,_0xe383f8){var _0x241e34={};var _0xef0bb4={};var _0xbf7171;var _0x1ba263;return db[_0xc706('0x2f')][_0xc706('0x5a')]({'where':{'id':_0x3ec8ea[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x4056ad,null))[_0xc706('0x26')](function(_0xb214e5){if(_0xb214e5){_0xbf7171=_0xb214e5;_0xef0bb4[_0xc706('0x33')]=_['keys'](db[_0xc706('0x56')][_0xc706('0x30')]);_0xef0bb4['query']=_[_0xc706('0x34')](_0x3ec8ea[_0xc706('0x35')]);_0xef0bb4[_0xc706('0x3d')]=_[_0xc706('0x46')](_0xef0bb4['model'],_0xef0bb4['query']);_0x241e34[_0xc706('0x36')]=_[_0xc706('0x46')](_0xef0bb4[_0xc706('0x33')],qs['fields'](_0x3ec8ea[_0xc706('0x35')]['fields']));_0x241e34[_0xc706('0x36')]=_0x241e34[_0xc706('0x36')][_0xc706('0x38')]?_0x241e34[_0xc706('0x36')]:_0xef0bb4[_0xc706('0x33')];_0x241e34[_0xc706('0x3a')]=qs['sort'](_0x3ec8ea[_0xc706('0x35')][_0xc706('0x3b')]);_0x241e34[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_['pick'](_0x3ec8ea['query'],_0xef0bb4[_0xc706('0x3d')]));if(_0x3ec8ea['query'][_0xc706('0x40')]){_0x241e34[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x241e34[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x241e34[_0xc706('0x36')],function(_0x375289){var _0x47b221={};_0x47b221[_0x375289]={'$like':'%'+_0x3ec8ea[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x47b221;})});}_0x241e34=_[_0xc706('0x3e')]({},_0x241e34,_0x3ec8ea['options']);return _0xbf7171[_0xc706('0x59')](_0x241e34);}})['then'](function(_0x317b0f){if(_0x317b0f){_0x1ba263=_0x317b0f[_0xc706('0x38')];if(!_0x3ec8ea[_0xc706('0x35')][_0xc706('0x5b')]('nolimit')){_0x241e34[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x3ec8ea[_0xc706('0x35')]['limit']);_0x241e34[_0xc706('0x1d')]=qs['offset'](_0x3ec8ea[_0xc706('0x35')]['offset']);}return _0xbf7171[_0xc706('0x59')](_0x241e34);}})[_0xc706('0x26')](function(_0x2193fd){if(_0x2193fd){return _0x2193fd?{'count':_0x1ba263,'rows':_0x2193fd}:null;}})['then'](respondWithResult(_0x4056ad,null))[_0xc706('0x49')](handleError(_0x4056ad,null));};exports[_0xc706('0x5c')]=function(_0x212c84,_0x25089e,_0x59232c){var _0x35d195={};var _0x5ae7b0={};var _0x43610d;var _0x1c4df2;return db[_0xc706('0x2f')]['findOne']({'where':{'id':_0x212c84['params']['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x25089e,null))['then'](function(_0x5dc5e3){if(_0x5dc5e3){_0x43610d=_0x5dc5e3;_0x5ae7b0[_0xc706('0x33')]=_[_0xc706('0x34')](db[_0xc706('0x56')]['rawAttributes']);_0x5ae7b0[_0xc706('0x35')]=_[_0xc706('0x34')](_0x212c84[_0xc706('0x35')]);_0x5ae7b0[_0xc706('0x3d')]=_[_0xc706('0x46')](_0x5ae7b0[_0xc706('0x33')],_0x5ae7b0[_0xc706('0x35')]);_0x35d195[_0xc706('0x36')]=_[_0xc706('0x46')](_0x5ae7b0[_0xc706('0x33')],qs['fields'](_0x212c84[_0xc706('0x35')][_0xc706('0x37')]));_0x35d195['attributes']=_0x35d195[_0xc706('0x36')][_0xc706('0x38')]?_0x35d195[_0xc706('0x36')]:_0x5ae7b0['model'];_0x35d195['order']=qs[_0xc706('0x3b')](_0x212c84[_0xc706('0x35')][_0xc706('0x3b')]);_0x35d195[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_[_0xc706('0x5d')](_0x212c84[_0xc706('0x35')],_0x5ae7b0[_0xc706('0x3d')]));if(_0x212c84['query']['filter']){_0x35d195[_0xc706('0x3c')]=_[_0xc706('0x3e')](_0x35d195[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x35d195['attributes'],function(_0x22777c){var _0x507f0d={};_0x507f0d[_0x22777c]={'$like':'%'+_0x212c84[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x507f0d;})});}_0x35d195=_[_0xc706('0x3e')]({},_0x35d195,_0x212c84[_0xc706('0x47')]);return _0x43610d[_0xc706('0x5c')](_0x35d195);}})['then'](function(_0x12ecb7){if(_0x12ecb7){_0x1c4df2=_0x12ecb7['length'];if(!_0x212c84[_0xc706('0x35')][_0xc706('0x5b')]('nolimit')){_0x35d195[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x212c84[_0xc706('0x35')][_0xc706('0x1f')]);_0x35d195[_0xc706('0x1d')]=qs[_0xc706('0x1d')](_0x212c84[_0xc706('0x35')][_0xc706('0x1d')]);}return _0x43610d[_0xc706('0x5c')](_0x35d195);}})[_0xc706('0x26')](function(_0x467c8d){if(_0x467c8d){return _0x467c8d?{'count':_0x1c4df2,'rows':_0x467c8d}:null;}})['then'](respondWithResult(_0x25089e,null))[_0xc706('0x49')](handleError(_0x25089e,null));};exports[_0xc706('0x5e')]=function(_0x1a98dd,_0x446495,_0x211a5b){if(_0x1a98dd[_0xc706('0x4b')]['id']){delete _0x1a98dd[_0xc706('0x4b')]['id'];}return db[_0xc706('0x2f')][_0xc706('0x48')]({'where':{'id':_0x1a98dd['params']['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x446495,null))[_0xc706('0x26')](function(_0x3e9932){if(_0x3e9932){_0x1a98dd[_0xc706('0x4b')][_0xc706('0x5f')]=_0x3e9932['id'];return db[_0xc706('0x60')][_0xc706('0x4a')](_0x1a98dd[_0xc706('0x4b')]);}})[_0xc706('0x26')](respondWithResult(_0x446495,null))[_0xc706('0x49')](handleError(_0x446495,null));};exports[_0xc706('0x61')]=function(_0x125604,_0x4d6c25,_0x761461){var _0x401422={};var _0x4cd910={};var _0x33d8d5;var _0x51a852;return db['Trigger'][_0xc706('0x5a')]({'where':{'id':_0x125604[_0xc706('0x45')]['id']}})[_0xc706('0x26')](handleEntityNotFound(_0x4d6c25,null))[_0xc706('0x26')](function(_0x531029){if(_0x531029){_0x33d8d5=_0x531029;_0x4cd910[_0xc706('0x33')]=_['keys'](db['Action']['rawAttributes']);_0x4cd910[_0xc706('0x35')]=_[_0xc706('0x34')](_0x125604[_0xc706('0x35')]);_0x4cd910[_0xc706('0x3d')]=_[_0xc706('0x46')](_0x4cd910[_0xc706('0x33')],_0x4cd910['query']);_0x401422[_0xc706('0x36')]=_[_0xc706('0x46')](_0x4cd910['model'],qs[_0xc706('0x37')](_0x125604[_0xc706('0x35')][_0xc706('0x37')]));_0x401422[_0xc706('0x36')]=_0x401422[_0xc706('0x36')][_0xc706('0x38')]?_0x401422['attributes']:_0x4cd910[_0xc706('0x33')];_0x401422['order']=qs['sort'](_0x125604['query'][_0xc706('0x3b')]);_0x401422[_0xc706('0x3c')]=qs[_0xc706('0x3d')](_[_0xc706('0x5d')](_0x125604['query'],_0x4cd910[_0xc706('0x3d')]));if(_0x125604[_0xc706('0x35')][_0xc706('0x40')]){_0x401422['where']=_[_0xc706('0x3e')](_0x401422[_0xc706('0x3c')],{'$or':_[_0xc706('0x2e')](_0x401422[_0xc706('0x36')],function(_0x1f6e48){var _0x3e71cd={};_0x3e71cd[_0x1f6e48]={'$like':'%'+_0x125604[_0xc706('0x35')][_0xc706('0x40')]+'%'};return _0x3e71cd;})});}_0x401422=_['merge']({},_0x401422,_0x125604[_0xc706('0x47')]);return _0x33d8d5['getActions'](_0x401422);}})['then'](function(_0x17dc24){if(_0x17dc24){_0x51a852=_0x17dc24[_0xc706('0x38')];if(!_0x125604[_0xc706('0x35')]['hasOwnProperty'](_0xc706('0x39'))){_0x401422[_0xc706('0x1f')]=qs[_0xc706('0x1f')](_0x125604[_0xc706('0x35')][_0xc706('0x1f')]);_0x401422[_0xc706('0x1d')]=qs[_0xc706('0x1d')](_0x125604[_0xc706('0x35')][_0xc706('0x1d')]);}return _0x33d8d5['getActions'](_0x401422);}})[_0xc706('0x26')](function(_0x5196c4){if(_0x5196c4){return _0x5196c4?{'count':_0x51a852,'rows':_0x5196c4}:null;}})[_0xc706('0x26')](respondWithResult(_0x4d6c25,null))['catch'](handleError(_0x4d6c25,null));};
\ No newline at end of file
+var _0x37f2=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','update','then','destroy','Triggers','UserProfileResource','error','stack','name','send','index','Trigger','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','options','findAll','rows','catch','params','keys','include','find','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','Condition','addAnyCondition','TriggerAnyId','order','pick','getAllConditions','findOne','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','squel','crypto'];(function(_0x2577a1,_0x49e5b6){var _0x3927a5=function(_0x518d93){while(--_0x518d93){_0x2577a1['push'](_0x2577a1['shift']());}};_0x3927a5(++_0x49e5b6);}(_0x37f2,0x1c1));var _0x237f=function(_0x5ff390,_0x38edcc){_0x5ff390=_0x5ff390-0x0;var _0x4c22f1=_0x37f2[_0x5ff390];return _0x4c22f1;};'use strict';var emlformat=require(_0x237f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x237f('0x1'));var jsonpatch=require(_0x237f('0x2'));var rp=require('request-promise');var moment=require(_0x237f('0x3'));var BPromise=require(_0x237f('0x4'));var Mustache=require('mustache');var util=require(_0x237f('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x237f('0x6'));var ejs=require(_0x237f('0x7'));var fs=require('fs');var fs_extra=require(_0x237f('0x8'));var _=require('lodash');var squel=require(_0x237f('0x9'));var crypto=require(_0x237f('0xa'));var jsforce=require(_0x237f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x237f('0x6'));var querystring=require(_0x237f('0xc'));var Papa=require(_0x237f('0xd'));var Redis=require('ioredis');var authService=require(_0x237f('0xe'));var qs=require(_0x237f('0xf'));var as=require(_0x237f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x237f('0x11'))(_0x237f('0x12'));var utils=require(_0x237f('0x13'));var config=require(_0x237f('0x14'));var licenseUtil=require(_0x237f('0x15'));var db=require(_0x237f('0x16'))['db'];function respondWithStatusCode(_0x3ea9ff,_0x5e7c79){_0x5e7c79=_0x5e7c79||0xcc;return function(_0x24d23e){if(_0x24d23e){return _0x3ea9ff[_0x237f('0x17')](_0x5e7c79);}return _0x3ea9ff[_0x237f('0x18')](_0x5e7c79)[_0x237f('0x19')]();};}function respondWithResult(_0x4a456f,_0x3b7cca){_0x3b7cca=_0x3b7cca||0xc8;return function(_0x3dc6ed){if(_0x3dc6ed){return _0x4a456f[_0x237f('0x18')](_0x3b7cca)[_0x237f('0x1a')](_0x3dc6ed);}};}function respondWithFilteredResult(_0x44772e,_0x1000b4){return function(_0xfa323c){if(_0xfa323c){var _0x3bb855=typeof _0x1000b4[_0x237f('0x1b')]==='undefined'&&typeof _0x1000b4['limit']===_0x237f('0x1c');var _0x43a7f5=_0xfa323c[_0x237f('0x1d')];var _0x48f2c5=_0x3bb855?0x0:_0x1000b4[_0x237f('0x1b')];var _0x1849e9=_0x3bb855?_0xfa323c['count']:_0x1000b4[_0x237f('0x1b')]+_0x1000b4['limit'];var _0x486f13;if(_0x1849e9>=_0x43a7f5){_0x1849e9=_0x43a7f5;_0x486f13=0xc8;}else{_0x486f13=0xce;}_0x44772e[_0x237f('0x18')](_0x486f13);return _0x44772e[_0x237f('0x1e')]('Content-Range',_0x48f2c5+'-'+_0x1849e9+'/'+_0x43a7f5)[_0x237f('0x1a')](_0xfa323c);}return null;};}function patchUpdates(_0x193418){return function(_0x34ba80){try{jsonpatch[_0x237f('0x1f')](_0x34ba80,_0x193418,!![]);}catch(_0x5c959f){return BPromise[_0x237f('0x20')](_0x5c959f);}return _0x34ba80['save']();};}function saveUpdates(_0x10f3d8,_0x36ce0b){return function(_0x42ce32){if(_0x42ce32){return _0x42ce32[_0x237f('0x21')](_0x10f3d8)[_0x237f('0x22')](function(_0x1f62f6){return _0x1f62f6;});}return null;};}function removeEntity(_0x37e162,_0x88d62d){return function(_0xee5456){if(_0xee5456){return _0xee5456[_0x237f('0x23')]()[_0x237f('0x22')](function(){var _0x242faf=_0xee5456['get']({'plain':!![]});var _0x52ad79=_0x237f('0x24');return db[_0x237f('0x25')]['destroy']({'where':{'type':_0x52ad79,'resourceId':_0x242faf['id']}})[_0x237f('0x22')](function(){return _0xee5456;});})[_0x237f('0x22')](function(){_0x37e162['status'](0xcc)[_0x237f('0x19')]();});}};}function handleEntityNotFound(_0x20ac1c,_0x3ce46b){return function(_0x23f78f){if(!_0x23f78f){_0x20ac1c[_0x237f('0x17')](0x194);}return _0x23f78f;};}function handleError(_0xe59fb,_0x2a667d){_0x2a667d=_0x2a667d||0x1f4;return function(_0xbc9b9d){logger[_0x237f('0x26')](_0xbc9b9d[_0x237f('0x27')]);if(_0xbc9b9d[_0x237f('0x28')]){delete _0xbc9b9d[_0x237f('0x28')];}_0xe59fb[_0x237f('0x18')](_0x2a667d)[_0x237f('0x29')](_0xbc9b9d);};}exports[_0x237f('0x2a')]=function(_0x2ad8db,_0x16c3e7){var _0x10f757={},_0x208a93={},_0x1ac324={'count':0x0,'rows':[]};var _0x102b74=_['map'](db[_0x237f('0x2b')][_0x237f('0x2c')],function(_0xeca110){return{'name':_0xeca110[_0x237f('0x2d')],'type':_0xeca110[_0x237f('0x2e')]['key']};});_0x208a93[_0x237f('0x2f')]=_[_0x237f('0x30')](_0x102b74,'name');_0x208a93[_0x237f('0x31')]=_['keys'](_0x2ad8db[_0x237f('0x31')]);_0x208a93[_0x237f('0x32')]=_[_0x237f('0x33')](_0x208a93[_0x237f('0x2f')],_0x208a93[_0x237f('0x31')]);_0x10f757[_0x237f('0x34')]=_[_0x237f('0x33')](_0x208a93[_0x237f('0x2f')],qs[_0x237f('0x35')](_0x2ad8db[_0x237f('0x31')][_0x237f('0x35')]));_0x10f757[_0x237f('0x34')]=_0x10f757['attributes'][_0x237f('0x36')]?_0x10f757[_0x237f('0x34')]:_0x208a93['model'];if(!_0x2ad8db[_0x237f('0x31')][_0x237f('0x37')](_0x237f('0x38'))){_0x10f757[_0x237f('0x39')]=qs[_0x237f('0x39')](_0x2ad8db[_0x237f('0x31')][_0x237f('0x39')]);_0x10f757[_0x237f('0x1b')]=qs[_0x237f('0x1b')](_0x2ad8db['query'][_0x237f('0x1b')]);}_0x10f757['order']=qs[_0x237f('0x3a')](_0x2ad8db[_0x237f('0x31')][_0x237f('0x3a')]);_0x10f757[_0x237f('0x3b')]=qs[_0x237f('0x32')](_['pick'](_0x2ad8db[_0x237f('0x31')],_0x208a93[_0x237f('0x32')]),_0x102b74);if(_0x2ad8db[_0x237f('0x31')][_0x237f('0x3c')]){_0x10f757['where']=_[_0x237f('0x3d')](_0x10f757[_0x237f('0x3b')],{'$or':_['map'](_0x102b74,function(_0x569c55){if(_0x569c55[_0x237f('0x2e')]!=='VIRTUAL'){var _0x58278e={};_0x58278e[_0x569c55[_0x237f('0x28')]]={'$like':'%'+_0x2ad8db['query'][_0x237f('0x3c')]+'%'};return _0x58278e;}})});}_0x10f757=_[_0x237f('0x3d')]({},_0x10f757,_0x2ad8db[_0x237f('0x3e')]);var _0x12e310={'where':_0x10f757[_0x237f('0x3b')]};return db[_0x237f('0x2b')]['count'](_0x12e310)[_0x237f('0x22')](function(_0x1d7c88){_0x1ac324[_0x237f('0x1d')]=_0x1d7c88;if(_0x2ad8db[_0x237f('0x31')]['includeAll']){_0x10f757['include']=[{'all':!![]}];}return db['Trigger'][_0x237f('0x3f')](_0x10f757);})[_0x237f('0x22')](function(_0x161b53){_0x1ac324[_0x237f('0x40')]=_0x161b53;return _0x1ac324;})[_0x237f('0x22')](respondWithFilteredResult(_0x16c3e7,_0x10f757))[_0x237f('0x41')](handleError(_0x16c3e7,null));};exports['show']=function(_0x25f9a1,_0x225c30){var _0x3be356={'raw':![],'where':{'id':_0x25f9a1[_0x237f('0x42')]['id']}},_0x7bf5ff={};_0x7bf5ff[_0x237f('0x2f')]=_[_0x237f('0x43')](db['Trigger'][_0x237f('0x2c')]);_0x7bf5ff['query']=_[_0x237f('0x43')](_0x25f9a1[_0x237f('0x31')]);_0x7bf5ff[_0x237f('0x32')]=_[_0x237f('0x33')](_0x7bf5ff[_0x237f('0x2f')],_0x7bf5ff[_0x237f('0x31')]);_0x3be356[_0x237f('0x34')]=_[_0x237f('0x33')](_0x7bf5ff['model'],qs[_0x237f('0x35')](_0x25f9a1['query'][_0x237f('0x35')]));_0x3be356[_0x237f('0x34')]=_0x3be356['attributes']['length']?_0x3be356[_0x237f('0x34')]:_0x7bf5ff['model'];if(_0x25f9a1[_0x237f('0x31')]['includeAll']){_0x3be356[_0x237f('0x44')]=[{'all':!![]}];}_0x3be356=_[_0x237f('0x3d')]({},_0x3be356,_0x25f9a1[_0x237f('0x3e')]);return db['Trigger'][_0x237f('0x45')](_0x3be356)['then'](handleEntityNotFound(_0x225c30,null))[_0x237f('0x22')](respondWithResult(_0x225c30,null))[_0x237f('0x41')](handleError(_0x225c30,null));};exports['create']=function(_0x4eb328,_0x41ccd4){return db['Trigger']['create'](_0x4eb328['body'],{})[_0x237f('0x22')](function(_0x5f018a){var _0x16a2be=_0x4eb328['user']['get']({'plain':!![]});if(!_0x16a2be)throw new Error(_0x237f('0x46'));if(_0x16a2be[_0x237f('0x47')]===_0x237f('0x48')){var _0x4717e5=_0x5f018a[_0x237f('0x49')]({'plain':!![]});var _0x379316=_0x237f('0x24');return db[_0x237f('0x4a')][_0x237f('0x45')]({'where':{'name':_0x379316,'userProfileId':_0x16a2be['userProfileId']},'raw':!![]})[_0x237f('0x22')](function(_0x2bcd75){if(_0x2bcd75&&_0x2bcd75[_0x237f('0x4b')]===0x0){return db[_0x237f('0x25')][_0x237f('0x4c')]({'name':_0x4717e5[_0x237f('0x28')],'resourceId':_0x4717e5['id'],'type':_0x2bcd75[_0x237f('0x28')],'sectionId':_0x2bcd75['id']},{})[_0x237f('0x22')](function(){return _0x5f018a;});}else{return _0x5f018a;}})[_0x237f('0x41')](function(_0x2d9937){logger[_0x237f('0x26')](_0x237f('0x4d'),_0x2d9937);throw _0x2d9937;});}return _0x5f018a;})[_0x237f('0x22')](respondWithResult(_0x41ccd4,0xc9))['catch'](handleError(_0x41ccd4,null));};exports['update']=function(_0x9a29c8,_0x1e3138){if(_0x9a29c8[_0x237f('0x4e')]['id']){delete _0x9a29c8['body']['id'];}return db[_0x237f('0x2b')]['find']({'where':{'id':_0x9a29c8['params']['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x1e3138,null))[_0x237f('0x22')](saveUpdates(_0x9a29c8[_0x237f('0x4e')],null))[_0x237f('0x22')](respondWithResult(_0x1e3138,null))[_0x237f('0x41')](handleError(_0x1e3138,null));};exports[_0x237f('0x23')]=function(_0x57db78,_0x403704){return db[_0x237f('0x2b')][_0x237f('0x45')]({'where':{'id':_0x57db78[_0x237f('0x42')]['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x403704,null))[_0x237f('0x22')](removeEntity(_0x403704,null))[_0x237f('0x41')](handleError(_0x403704,null));};exports[_0x237f('0x4f')]=function(_0x4ca03f,_0x2b6f0e,_0x123805){if(_0x4ca03f[_0x237f('0x4e')]['id']){delete _0x4ca03f[_0x237f('0x4e')]['id'];}return db[_0x237f('0x2b')][_0x237f('0x45')]({'where':{'id':_0x4ca03f['params']['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x2b6f0e,null))[_0x237f('0x22')](function(_0x431987){if(_0x431987){_0x4ca03f[_0x237f('0x4e')]['TriggerAllId']=_0x431987['id'];return db[_0x237f('0x50')][_0x237f('0x4c')](_0x4ca03f[_0x237f('0x4e')]);}})[_0x237f('0x22')](respondWithResult(_0x2b6f0e,null))[_0x237f('0x41')](handleError(_0x2b6f0e,null));};exports[_0x237f('0x51')]=function(_0xcf0703,_0x147a3a,_0x3d6d40){if(_0xcf0703['body']['id']){delete _0xcf0703[_0x237f('0x4e')]['id'];}return db[_0x237f('0x2b')][_0x237f('0x45')]({'where':{'id':_0xcf0703[_0x237f('0x42')]['id']}})['then'](handleEntityNotFound(_0x147a3a,null))[_0x237f('0x22')](function(_0x575807){if(_0x575807){_0xcf0703['body'][_0x237f('0x52')]=_0x575807['id'];return db[_0x237f('0x50')]['create'](_0xcf0703[_0x237f('0x4e')]);}})[_0x237f('0x22')](respondWithResult(_0x147a3a,null))[_0x237f('0x41')](handleError(_0x147a3a,null));};exports['getAllConditions']=function(_0x1ad31b,_0x57c3ac,_0x57d9a6){var _0x1e761f={};var _0x23016c={};var _0x483e2e;var _0x1ccbcc;return db[_0x237f('0x2b')]['findOne']({'where':{'id':_0x1ad31b['params']['id']}})['then'](handleEntityNotFound(_0x57c3ac,null))[_0x237f('0x22')](function(_0x35b484){if(_0x35b484){_0x483e2e=_0x35b484;_0x23016c[_0x237f('0x2f')]=_[_0x237f('0x43')](db[_0x237f('0x50')]['rawAttributes']);_0x23016c['query']=_[_0x237f('0x43')](_0x1ad31b[_0x237f('0x31')]);_0x23016c[_0x237f('0x32')]=_[_0x237f('0x33')](_0x23016c['model'],_0x23016c[_0x237f('0x31')]);_0x1e761f[_0x237f('0x34')]=_[_0x237f('0x33')](_0x23016c['model'],qs[_0x237f('0x35')](_0x1ad31b[_0x237f('0x31')]['fields']));_0x1e761f[_0x237f('0x34')]=_0x1e761f[_0x237f('0x34')][_0x237f('0x36')]?_0x1e761f[_0x237f('0x34')]:_0x23016c[_0x237f('0x2f')];_0x1e761f[_0x237f('0x53')]=qs['sort'](_0x1ad31b[_0x237f('0x31')][_0x237f('0x3a')]);_0x1e761f[_0x237f('0x3b')]=qs[_0x237f('0x32')](_[_0x237f('0x54')](_0x1ad31b['query'],_0x23016c['filters']));if(_0x1ad31b[_0x237f('0x31')][_0x237f('0x3c')]){_0x1e761f[_0x237f('0x3b')]=_[_0x237f('0x3d')](_0x1e761f[_0x237f('0x3b')],{'$or':_[_0x237f('0x30')](_0x1e761f[_0x237f('0x34')],function(_0x1b0f31){var _0x5a74c7={};_0x5a74c7[_0x1b0f31]={'$like':'%'+_0x1ad31b[_0x237f('0x31')]['filter']+'%'};return _0x5a74c7;})});}_0x1e761f=_[_0x237f('0x3d')]({},_0x1e761f,_0x1ad31b[_0x237f('0x3e')]);return _0x483e2e[_0x237f('0x55')](_0x1e761f);}})[_0x237f('0x22')](function(_0x170653){if(_0x170653){_0x1ccbcc=_0x170653[_0x237f('0x36')];if(!_0x1ad31b[_0x237f('0x31')][_0x237f('0x37')](_0x237f('0x38'))){_0x1e761f[_0x237f('0x39')]=qs[_0x237f('0x39')](_0x1ad31b[_0x237f('0x31')]['limit']);_0x1e761f[_0x237f('0x1b')]=qs[_0x237f('0x1b')](_0x1ad31b['query'][_0x237f('0x1b')]);}return _0x483e2e[_0x237f('0x55')](_0x1e761f);}})[_0x237f('0x22')](function(_0x589bea){if(_0x589bea){return _0x589bea?{'count':_0x1ccbcc,'rows':_0x589bea}:null;}})[_0x237f('0x22')](respondWithResult(_0x57c3ac,null))[_0x237f('0x41')](handleError(_0x57c3ac,null));};exports['getAnyConditions']=function(_0x1e9598,_0x30069a,_0xf0ca18){var _0x3c75c0={};var _0x58400b={};var _0x373e28;var _0x1b6e50;return db[_0x237f('0x2b')][_0x237f('0x56')]({'where':{'id':_0x1e9598[_0x237f('0x42')]['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x30069a,null))[_0x237f('0x22')](function(_0x5569d5){if(_0x5569d5){_0x373e28=_0x5569d5;_0x58400b[_0x237f('0x2f')]=_['keys'](db['Condition'][_0x237f('0x2c')]);_0x58400b[_0x237f('0x31')]=_[_0x237f('0x43')](_0x1e9598['query']);_0x58400b[_0x237f('0x32')]=_['intersection'](_0x58400b[_0x237f('0x2f')],_0x58400b[_0x237f('0x31')]);_0x3c75c0['attributes']=_[_0x237f('0x33')](_0x58400b[_0x237f('0x2f')],qs['fields'](_0x1e9598[_0x237f('0x31')][_0x237f('0x35')]));_0x3c75c0[_0x237f('0x34')]=_0x3c75c0['attributes']['length']?_0x3c75c0[_0x237f('0x34')]:_0x58400b[_0x237f('0x2f')];_0x3c75c0['order']=qs[_0x237f('0x3a')](_0x1e9598[_0x237f('0x31')][_0x237f('0x3a')]);_0x3c75c0[_0x237f('0x3b')]=qs[_0x237f('0x32')](_[_0x237f('0x54')](_0x1e9598[_0x237f('0x31')],_0x58400b[_0x237f('0x32')]));if(_0x1e9598['query'][_0x237f('0x3c')]){_0x3c75c0[_0x237f('0x3b')]=_['merge'](_0x3c75c0['where'],{'$or':_['map'](_0x3c75c0[_0x237f('0x34')],function(_0x2b538e){var _0x227c29={};_0x227c29[_0x2b538e]={'$like':'%'+_0x1e9598[_0x237f('0x31')][_0x237f('0x3c')]+'%'};return _0x227c29;})});}_0x3c75c0=_['merge']({},_0x3c75c0,_0x1e9598['options']);return _0x373e28[_0x237f('0x57')](_0x3c75c0);}})[_0x237f('0x22')](function(_0x1d8791){if(_0x1d8791){_0x1b6e50=_0x1d8791[_0x237f('0x36')];if(!_0x1e9598[_0x237f('0x31')][_0x237f('0x37')](_0x237f('0x38'))){_0x3c75c0[_0x237f('0x39')]=qs[_0x237f('0x39')](_0x1e9598['query'][_0x237f('0x39')]);_0x3c75c0['offset']=qs[_0x237f('0x1b')](_0x1e9598[_0x237f('0x31')]['offset']);}return _0x373e28[_0x237f('0x57')](_0x3c75c0);}})[_0x237f('0x22')](function(_0x18cc61){if(_0x18cc61){return _0x18cc61?{'count':_0x1b6e50,'rows':_0x18cc61}:null;}})[_0x237f('0x22')](respondWithResult(_0x30069a,null))['catch'](handleError(_0x30069a,null));};exports[_0x237f('0x58')]=function(_0x5bd54e,_0x4ed7fb,_0x2edc00){if(_0x5bd54e['body']['id']){delete _0x5bd54e[_0x237f('0x4e')]['id'];}return db[_0x237f('0x2b')][_0x237f('0x45')]({'where':{'id':_0x5bd54e[_0x237f('0x42')]['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x4ed7fb,null))['then'](function(_0x37d233){if(_0x37d233){_0x5bd54e[_0x237f('0x4e')][_0x237f('0x59')]=_0x37d233['id'];return db[_0x237f('0x5a')][_0x237f('0x4c')](_0x5bd54e[_0x237f('0x4e')]);}})['then'](respondWithResult(_0x4ed7fb,null))[_0x237f('0x41')](handleError(_0x4ed7fb,null));};exports[_0x237f('0x5b')]=function(_0xa35486,_0x4c108e,_0x594a69){var _0x4b9773={};var _0x471e09={};var _0x26d64c;var _0x1bf19d;return db[_0x237f('0x2b')][_0x237f('0x56')]({'where':{'id':_0xa35486[_0x237f('0x42')]['id']}})[_0x237f('0x22')](handleEntityNotFound(_0x4c108e,null))[_0x237f('0x22')](function(_0x564e07){if(_0x564e07){_0x26d64c=_0x564e07;_0x471e09[_0x237f('0x2f')]=_[_0x237f('0x43')](db[_0x237f('0x5a')][_0x237f('0x2c')]);_0x471e09[_0x237f('0x31')]=_['keys'](_0xa35486[_0x237f('0x31')]);_0x471e09[_0x237f('0x32')]=_[_0x237f('0x33')](_0x471e09[_0x237f('0x2f')],_0x471e09[_0x237f('0x31')]);_0x4b9773[_0x237f('0x34')]=_[_0x237f('0x33')](_0x471e09[_0x237f('0x2f')],qs[_0x237f('0x35')](_0xa35486[_0x237f('0x31')]['fields']));_0x4b9773['attributes']=_0x4b9773[_0x237f('0x34')][_0x237f('0x36')]?_0x4b9773[_0x237f('0x34')]:_0x471e09[_0x237f('0x2f')];_0x4b9773['order']=qs[_0x237f('0x3a')](_0xa35486[_0x237f('0x31')][_0x237f('0x3a')]);_0x4b9773[_0x237f('0x3b')]=qs[_0x237f('0x32')](_[_0x237f('0x54')](_0xa35486[_0x237f('0x31')],_0x471e09[_0x237f('0x32')]));if(_0xa35486[_0x237f('0x31')]['filter']){_0x4b9773[_0x237f('0x3b')]=_['merge'](_0x4b9773[_0x237f('0x3b')],{'$or':_['map'](_0x4b9773['attributes'],function(_0x5c1c6b){var _0x44ae2e={};_0x44ae2e[_0x5c1c6b]={'$like':'%'+_0xa35486[_0x237f('0x31')][_0x237f('0x3c')]+'%'};return _0x44ae2e;})});}_0x4b9773=_[_0x237f('0x3d')]({},_0x4b9773,_0xa35486[_0x237f('0x3e')]);return _0x26d64c[_0x237f('0x5b')](_0x4b9773);}})['then'](function(_0x18ecd4){if(_0x18ecd4){_0x1bf19d=_0x18ecd4[_0x237f('0x36')];if(!_0xa35486['query']['hasOwnProperty'](_0x237f('0x38'))){_0x4b9773['limit']=qs[_0x237f('0x39')](_0xa35486[_0x237f('0x31')][_0x237f('0x39')]);_0x4b9773['offset']=qs[_0x237f('0x1b')](_0xa35486[_0x237f('0x31')]['offset']);}return _0x26d64c[_0x237f('0x5b')](_0x4b9773);}})[_0x237f('0x22')](function(_0x4ddd66){if(_0x4ddd66){return _0x4ddd66?{'count':_0x1bf19d,'rows':_0x4ddd66}:null;}})[_0x237f('0x22')](respondWithResult(_0x4c108e,null))['catch'](handleError(_0x4c108e,null));};
\ No newline at end of file
index 42d7a29..6f930b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8de=['util','../../config/logger','moment','request-promise','path','rimraf','./trigger.attributes','exports','tools_triggers'];(function(_0x20b5b2,_0x207097){var _0x106c89=function(_0x38610e){while(--_0x38610e){_0x20b5b2['push'](_0x20b5b2['shift']());}};_0x106c89(++_0x207097);}(_0xf8de,0x1d4));var _0xef8d=function(_0x3c406e,_0x7f0304){_0x3c406e=_0x3c406e-0x0;var _0x1bed29=_0xf8de[_0x3c406e];return _0x1bed29;};'use strict';var _=require('lodash');var util=require(_0xef8d('0x0'));var logger=require(_0xef8d('0x1'))('api');var moment=require(_0xef8d('0x2'));var BPromise=require('bluebird');var rp=require(_0xef8d('0x3'));var fs=require('fs');var path=require(_0xef8d('0x4'));var rimraf=require(_0xef8d('0x5'));var config=require('../../config/environment');var attributes=require(_0xef8d('0x6'));module[_0xef8d('0x7')]=function(_0x586e39,_0x2ba6b9){return _0x586e39['define']('Trigger',attributes,{'tableName':_0xef8d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c4d=['api','bluebird','request-promise','path','rimraf','./trigger.attributes','define','Trigger','tools_triggers','util','../../config/logger'];(function(_0x5e3fd5,_0x50e0e2){var _0x15f35e=function(_0x15c758){while(--_0x15c758){_0x5e3fd5['push'](_0x5e3fd5['shift']());}};_0x15f35e(++_0x50e0e2);}(_0x1c4d,0x1d7));var _0xd1c4=function(_0x568d0c,_0x29328a){_0x568d0c=_0x568d0c-0x0;var _0x3f036f=_0x1c4d[_0x568d0c];return _0x3f036f;};'use strict';var _=require('lodash');var util=require(_0xd1c4('0x0'));var logger=require(_0xd1c4('0x1'))(_0xd1c4('0x2'));var moment=require('moment');var BPromise=require(_0xd1c4('0x3'));var rp=require(_0xd1c4('0x4'));var fs=require('fs');var path=require(_0xd1c4('0x5'));var rimraf=require(_0xd1c4('0x6'));var config=require('../../config/environment');var attributes=require(_0xd1c4('0x7'));module['exports']=function(_0x406eb6,_0x12e793){return _0x406eb6[_0xd1c4('0x8')](_0xd1c4('0x9'),attributes,{'tableName':_0xd1c4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d27232f..06a3fe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa83a=['jayson/promise','client','http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetTrigger','Trigger','options','raw','where','attributes','limit','include','map','model','info','ShowTrigger','stringify','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x12f570,_0x2bdad1){var _0x820efc=function(_0xb209d7){while(--_0xb209d7){_0x12f570['push'](_0x12f570['shift']());}};_0x820efc(++_0x2bdad1);}(_0xa83a,0x122));var _0xaa83=function(_0x29f38d,_0x489c1a){_0x29f38d=_0x29f38d-0x0;var _0x4a1b0a=_0xa83a[_0x29f38d];return _0x4a1b0a;};'use strict';var _=require('lodash');var util=require(_0xaa83('0x0'));var moment=require(_0xaa83('0x1'));var BPromise=require(_0xaa83('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa83('0x3'))['db'];var utils=require(_0xaa83('0x4'));var logger=require(_0xaa83('0x5'))('rpc');var config=require(_0xaa83('0x6'));var jayson=require(_0xaa83('0x7'));var client=jayson[_0xaa83('0x8')][_0xaa83('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x436b23,_0x4c7f5d,_0x539e2b){return new BPromise(function(_0x5d04b2,_0x107b88){return client[_0xaa83('0xa')](_0x436b23,_0x539e2b)[_0xaa83('0xb')](function(_0x5b9f63){logger['info'](_0xaa83('0xc'),_0x4c7f5d,_0xaa83('0xd'));logger[_0xaa83('0xe')](_0xaa83('0xf'),_0x4c7f5d,_0xaa83('0xd'),JSON['stringify'](_0x5b9f63));if(_0x5b9f63[_0xaa83('0x10')]){if(_0x5b9f63[_0xaa83('0x10')]['code']===0x1f4){logger[_0xaa83('0x10')](_0xaa83('0xc'),_0x4c7f5d,_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);return _0x107b88(_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);}logger['error'](_0xaa83('0xc'),_0x4c7f5d,_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);return _0x5d04b2(_0x5b9f63[_0xaa83('0x10')][_0xaa83('0x11')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x4c7f5d,_0xaa83('0xd'));_0x5d04b2(_0x5b9f63[_0xaa83('0x12')][_0xaa83('0x11')]);}})[_0xaa83('0x13')](function(_0x498e5c){logger['error'](_0xaa83('0xc'),_0x4c7f5d,_0x498e5c);_0x107b88(_0x498e5c);});});}exports[_0xaa83('0x14')]=function(_0x20e739){var _0x41dbda=this;return new Promise(function(_0xfe07d0,_0x5d3cca){return db[_0xaa83('0x15')]['findAll']({'raw':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x17')]===undefined?!![]:![]:!![],'where':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x18')]||null:null,'attributes':_0x20e739['options']?_0x20e739[_0xaa83('0x16')][_0xaa83('0x19')]||null:null,'limit':_0x20e739[_0xaa83('0x16')]?_0x20e739['options'][_0xaa83('0x1a')]||null:null,'include':_0x20e739[_0xaa83('0x16')]?_0x20e739[_0xaa83('0x16')][_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x20e739[_0xaa83('0x16')][_0xaa83('0x1b')],function(_0x219c9d){return{'model':db[_0x219c9d['model']],'as':_0x219c9d['as'],'attributes':_0x219c9d[_0xaa83('0x19')],'include':_0x219c9d[_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x219c9d['include'],function(_0x3b4365){return{'model':db[_0x3b4365[_0xaa83('0x1d')]],'as':_0x3b4365['as'],'attributes':_0x3b4365[_0xaa83('0x19')],'include':_0x3b4365[_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x3b4365[_0xaa83('0x1b')],function(_0x39c442){return{'model':db[_0x39c442['model']],'as':_0x39c442['as'],'attributes':_0x39c442[_0xaa83('0x19')]};}):[]};}):[]};}):[]:[]})[_0xaa83('0xb')](function(_0x442364){logger[_0xaa83('0x1e')](_0xaa83('0x14'),_0x20e739);logger[_0xaa83('0xe')](_0xaa83('0x14'),_0x20e739,JSON['stringify'](_0x442364));_0xfe07d0(_0x442364);})['catch'](function(_0x12a4d5){logger[_0xaa83('0x10')](_0xaa83('0x14'),_0x12a4d5['message'],_0x20e739);_0x5d3cca(_0x41dbda[_0xaa83('0x10')](0x1f4,_0x12a4d5[_0xaa83('0x11')]));});});};exports['ShowTrigger']=function(_0x2b4982){var _0x5905ca=this;return new Promise(function(_0x2627cc,_0x4c83b4){return db[_0xaa83('0x15')]['find']({'raw':_0x2b4982[_0xaa83('0x16')]?_0x2b4982[_0xaa83('0x16')][_0xaa83('0x17')]===undefined?!![]:![]:!![],'where':_0x2b4982[_0xaa83('0x16')]?_0x2b4982['options'][_0xaa83('0x18')]||null:null,'attributes':_0x2b4982['options']?_0x2b4982['options']['attributes']||null:null,'include':_0x2b4982[_0xaa83('0x16')]?_0x2b4982[_0xaa83('0x16')][_0xaa83('0x1b')]?_[_0xaa83('0x1c')](_0x2b4982[_0xaa83('0x16')][_0xaa83('0x1b')],function(_0x41444b){return{'model':db[_0x41444b[_0xaa83('0x1d')]],'as':_0x41444b['as'],'attributes':_0x41444b[_0xaa83('0x19')],'include':_0x41444b[_0xaa83('0x1b')]?_['map'](_0x41444b[_0xaa83('0x1b')],function(_0x7a5efa){return{'model':db[_0x7a5efa[_0xaa83('0x1d')]],'as':_0x7a5efa['as'],'attributes':_0x7a5efa['attributes'],'include':_0x7a5efa[_0xaa83('0x1b')]?_['map'](_0x7a5efa[_0xaa83('0x1b')],function(_0x5385eb){return{'model':db[_0x5385eb['model']],'as':_0x5385eb['as'],'attributes':_0x5385eb[_0xaa83('0x19')]};}):[]};}):[]};}):[]:[]})[_0xaa83('0xb')](function(_0x131c24){logger[_0xaa83('0x1e')](_0xaa83('0x1f'),_0x2b4982);logger[_0xaa83('0xe')]('ShowTrigger',_0x2b4982,JSON[_0xaa83('0x20')](_0x131c24));_0x2627cc(_0x131c24);})['catch'](function(_0x49ab5f){logger[_0xaa83('0x10')](_0xaa83('0x1f'),_0x49ab5f[_0xaa83('0x11')],_0x2b4982);_0x4c83b4(_0x5905ca[_0xaa83('0x10')](0x1f4,_0x49ab5f[_0xaa83('0x11')]));});});};
\ No newline at end of file
+var _0xc79e=['limit','include','map','model','find','ShowTrigger','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','GetTrigger','Trigger','findAll','options','raw','attributes'];(function(_0x45598f,_0x1649ec){var _0x517e2b=function(_0xd0990e){while(--_0xd0990e){_0x45598f['push'](_0x45598f['shift']());}};_0x517e2b(++_0x1649ec);}(_0xc79e,0xcc));var _0xec79=function(_0x56b5d1,_0x59be02){_0x56b5d1=_0x56b5d1-0x0;var _0x5bfe4a=_0xc79e[_0x56b5d1];return _0x5bfe4a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xec79('0x0'));var BPromise=require('bluebird');var rs=require(_0xec79('0x1'));var fs=require('fs');var Redis=require(_0xec79('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xec79('0x3'));var logger=require(_0xec79('0x4'))(_0xec79('0x5'));var config=require(_0xec79('0x6'));var jayson=require(_0xec79('0x7'));var client=jayson[_0xec79('0x8')][_0xec79('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x562236,_0x3c0d07,_0x1b81ba){return new BPromise(function(_0x16427e,_0x65e46a){return client[_0xec79('0xa')](_0x562236,_0x1b81ba)[_0xec79('0xb')](function(_0xcaa4f9){logger['info'](_0xec79('0xc'),_0x3c0d07,_0xec79('0xd'));logger[_0xec79('0xe')](_0xec79('0xf'),_0x3c0d07,_0xec79('0xd'),JSON[_0xec79('0x10')](_0xcaa4f9));if(_0xcaa4f9['error']){if(_0xcaa4f9['error']['code']===0x1f4){logger[_0xec79('0x11')](_0xec79('0xc'),_0x3c0d07,_0xcaa4f9[_0xec79('0x11')]['message']);return _0x65e46a(_0xcaa4f9[_0xec79('0x11')][_0xec79('0x12')]);}logger[_0xec79('0x11')]('Trigger,\x20%s,\x20%s',_0x3c0d07,_0xcaa4f9['error'][_0xec79('0x12')]);return _0x16427e(_0xcaa4f9[_0xec79('0x11')]['message']);}else{logger[_0xec79('0x13')](_0xec79('0xc'),_0x3c0d07,'request\x20sent');_0x16427e(_0xcaa4f9['result'][_0xec79('0x12')]);}})[_0xec79('0x14')](function(_0xd185e6){logger['error']('Trigger,\x20%s,\x20%s',_0x3c0d07,_0xd185e6);_0x65e46a(_0xd185e6);});});}exports[_0xec79('0x15')]=function(_0xce219f){var _0x55153e=this;return new Promise(function(_0x220e1c,_0x90032b){return db[_0xec79('0x16')][_0xec79('0x17')]({'raw':_0xce219f[_0xec79('0x18')]?_0xce219f[_0xec79('0x18')][_0xec79('0x19')]===undefined?!![]:![]:!![],'where':_0xce219f[_0xec79('0x18')]?_0xce219f['options']['where']||null:null,'attributes':_0xce219f['options']?_0xce219f[_0xec79('0x18')][_0xec79('0x1a')]||null:null,'limit':_0xce219f[_0xec79('0x18')]?_0xce219f['options'][_0xec79('0x1b')]||null:null,'include':_0xce219f[_0xec79('0x18')]?_0xce219f[_0xec79('0x18')][_0xec79('0x1c')]?_[_0xec79('0x1d')](_0xce219f['options'][_0xec79('0x1c')],function(_0x122331){return{'model':db[_0x122331['model']],'as':_0x122331['as'],'attributes':_0x122331[_0xec79('0x1a')],'include':_0x122331[_0xec79('0x1c')]?_[_0xec79('0x1d')](_0x122331[_0xec79('0x1c')],function(_0x1c0c27){return{'model':db[_0x1c0c27[_0xec79('0x1e')]],'as':_0x1c0c27['as'],'attributes':_0x1c0c27[_0xec79('0x1a')],'include':_0x1c0c27[_0xec79('0x1c')]?_[_0xec79('0x1d')](_0x1c0c27[_0xec79('0x1c')],function(_0x3474a7){return{'model':db[_0x3474a7[_0xec79('0x1e')]],'as':_0x3474a7['as'],'attributes':_0x3474a7['attributes']};}):[]};}):[]};}):[]:[]})[_0xec79('0xb')](function(_0x35b882){logger[_0xec79('0x13')](_0xec79('0x15'),_0xce219f);logger['debug'](_0xec79('0x15'),_0xce219f,JSON[_0xec79('0x10')](_0x35b882));_0x220e1c(_0x35b882);})[_0xec79('0x14')](function(_0x4859bd){logger[_0xec79('0x11')]('GetTrigger',_0x4859bd[_0xec79('0x12')],_0xce219f);_0x90032b(_0x55153e[_0xec79('0x11')](0x1f4,_0x4859bd['message']));});});};exports['ShowTrigger']=function(_0x11b414){var _0x28bc5c=this;return new Promise(function(_0x1c0425,_0x17255a){return db['Trigger'][_0xec79('0x1f')]({'raw':_0x11b414['options']?_0x11b414[_0xec79('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x11b414['options']?_0x11b414[_0xec79('0x18')]['where']||null:null,'attributes':_0x11b414[_0xec79('0x18')]?_0x11b414['options'][_0xec79('0x1a')]||null:null,'include':_0x11b414[_0xec79('0x18')]?_0x11b414[_0xec79('0x18')][_0xec79('0x1c')]?_[_0xec79('0x1d')](_0x11b414['options'][_0xec79('0x1c')],function(_0x3fd03e){return{'model':db[_0x3fd03e['model']],'as':_0x3fd03e['as'],'attributes':_0x3fd03e[_0xec79('0x1a')],'include':_0x3fd03e[_0xec79('0x1c')]?_[_0xec79('0x1d')](_0x3fd03e[_0xec79('0x1c')],function(_0x53c1f4){return{'model':db[_0x53c1f4['model']],'as':_0x53c1f4['as'],'attributes':_0x53c1f4['attributes'],'include':_0x53c1f4[_0xec79('0x1c')]?_[_0xec79('0x1d')](_0x53c1f4[_0xec79('0x1c')],function(_0x5f5d75){return{'model':db[_0x5f5d75[_0xec79('0x1e')]],'as':_0x5f5d75['as'],'attributes':_0x5f5d75['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3073ef){logger[_0xec79('0x13')](_0xec79('0x20'),_0x11b414);logger[_0xec79('0xe')]('ShowTrigger',_0x11b414,JSON['stringify'](_0x3073ef));_0x1c0425(_0x3073ef);})['catch'](function(_0x301aec){logger[_0xec79('0x11')](_0xec79('0x20'),_0x301aec['message'],_0x11b414);_0x17255a(_0x28bc5c[_0xec79('0x11')](0x1f4,_0x301aec['message']));});});};
\ No newline at end of file
index f227109..f589b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa32=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','/:id','post','/:id/clone','clone','create','put'];(function(_0x209bae,_0x5b49e7){var _0x295f2e=function(_0x512af3){while(--_0x512af3){_0x209bae['push'](_0x209bae['shift']());}};_0x295f2e(++_0x5b49e7);}(_0xfa32,0x72));var _0x2fa3=function(_0x457e82,_0x584a4a){_0x457e82=_0x457e82-0x0;var _0x287594=_0xfa32[_0x457e82];return _0x287594;};'use strict';var multer=require(_0x2fa3('0x0'));var util=require(_0x2fa3('0x1'));var path=require(_0x2fa3('0x2'));var timeout=require(_0x2fa3('0x3'));var express=require('express');var router=express[_0x2fa3('0x4')]();var fs_extra=require(_0x2fa3('0x5'));var auth=require(_0x2fa3('0x6'));var interaction=require(_0x2fa3('0x7'));var config=require(_0x2fa3('0x8'));var controller=require(_0x2fa3('0x9'));router[_0x2fa3('0xa')]('/',auth[_0x2fa3('0xb')](),controller['index']);router[_0x2fa3('0xa')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller['show']);router[_0x2fa3('0xd')](_0x2fa3('0xe'),auth['isAuthenticated'](),controller[_0x2fa3('0xf')]);router['post']('/',auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x10')]);router[_0x2fa3('0x11')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x12')]);router[_0x2fa3('0x13')](_0x2fa3('0xc'),auth[_0x2fa3('0xb')](),controller[_0x2fa3('0x14')]);module[_0x2fa3('0x15')]=router;
\ No newline at end of file
+var _0xa8c3=['fs-extra','../../components/interaction/service','./trunk.controller','get','/:id','isAuthenticated','post','/:id/clone','clone','create','put','update','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1f5a3c,_0x108a4a){var _0xb4158c=function(_0xb153fb){while(--_0xb153fb){_0x1f5a3c['push'](_0x1f5a3c['shift']());}};_0xb4158c(++_0x108a4a);}(_0xa8c3,0xde));var _0x3a8c=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0xa8c3[_0x6a0266];return _0x309e00;};'use strict';var multer=require(_0x3a8c('0x0'));var util=require(_0x3a8c('0x1'));var path=require(_0x3a8c('0x2'));var timeout=require(_0x3a8c('0x3'));var express=require(_0x3a8c('0x4'));var router=express[_0x3a8c('0x5')]();var fs_extra=require(_0x3a8c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3a8c('0x7'));var config=require('../../config/environment');var controller=require(_0x3a8c('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x3a8c('0x9')](_0x3a8c('0xa'),auth[_0x3a8c('0xb')](),controller['show']);router[_0x3a8c('0xc')](_0x3a8c('0xd'),auth[_0x3a8c('0xb')](),controller[_0x3a8c('0xe')]);router[_0x3a8c('0xc')]('/',auth[_0x3a8c('0xb')](),controller[_0x3a8c('0xf')]);router[_0x3a8c('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x3a8c('0x11')]);router['delete'](_0x3a8c('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x3a8c('0x12')]=router;
\ No newline at end of file
index ee00038..766b928 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0182=['INTEGER','accept','refuse','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update','BOOLEAN','sequelize','STRING','name','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','nonat','outgoing','yes','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>'];(function(_0x10a490,_0x31021c){var _0x4d5e27=function(_0xb56344){while(--_0xb56344){_0x10a490['push'](_0x10a490['shift']());}};_0x4d5e27(++_0x31021c);}(_0x0182,0x117));var _0x2018=function(_0x5225a0,_0x1d3783){_0x5225a0=_0x5225a0-0x0;var _0x1c6627=_0x0182[_0x5225a0];return _0x1c6627;};'use strict';var Sequelize=require(_0x2018('0x0'));module['exports']={'name':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'unique':_0x2018('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x4'),_0x2018('0x5'),'peer'),'allowNull':![],'defaultValue':_0x2018('0x4')},'context':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'defaultValue':_0x2018('0x6')},'callingpres':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x7'),_0x2018('0x8'),'ALLOWED_FAILED_SCREEN',_0x2018('0x9'),_0x2018('0xa'),_0x2018('0xb'),_0x2018('0xc'),_0x2018('0xd'))},'deny':{'type':Sequelize[_0x2018('0x1')]},'permit':{'type':Sequelize[_0x2018('0x1')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x2018('0x1')]},'transport':{'type':Sequelize['STRING'],'defaultValue':'udp','set':function(_0x32d7cf){this[_0x2018('0xe')](_0x2018('0xf'),_0x32d7cf?_0x32d7cf[_0x2018('0x10')](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0xf'))?this[_0x2018('0x11')](_0x2018('0xf'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x13')},'dtmfmode':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x14'),_0x2018('0x15'),'shortinfo',_0x2018('0x16'),_0x2018('0x17')),'defaultValue':_0x2018('0x14')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x2018('0x18'),'update',_0x2018('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x1b'),'set':function(_0x51f305){this['setDataValue'](_0x2018('0x1c'),_0x51f305?_0x51f305[_0x2018('0x10')](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0x1c'))?this[_0x2018('0x11')](_0x2018('0x1c'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x1d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x2018('0x1')]},'pickupgroup':{'type':Sequelize[_0x2018('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x2018('0x1')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x2018('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x1e')},'allow':{'type':Sequelize[_0x2018('0x1')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x5e1cb1){this['setDataValue'](_0x2018('0x1f'),_0x5e1cb1?_0x5e1cb1[_0x2018('0x10')](';'):_0x2018('0x20'));},'get':function(){return this[_0x2018('0x11')](_0x2018('0x1f'))?this[_0x2018('0x11')]('allow')['split'](';'):null;},'comment':_0x2018('0x21')},'autoframing':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x2018('0x22'),'set':function(_0x5b7351){this[_0x2018('0xe')]('insecure',_0x5b7351?_0x5b7351['join'](','):null);},'get':function(){return this[_0x2018('0x11')](_0x2018('0x23'))?this[_0x2018('0x11')](_0x2018('0x23'))[_0x2018('0x12')](','):null;},'comment':_0x2018('0x24')},'trustrpid':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no',_0x2018('0x25'))},'promiscredir':{'type':Sequelize[_0x2018('0x3')]('yes','no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x2018('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0x2018('0x26')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':_0x2018('0x1a')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'allowsubscribe':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0x2018('0x1')]},'template':{'type':Sequelize[_0x2018('0x1')]},'videosupport':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x2018('0x27')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'mailbox':{'type':Sequelize[_0x2018('0x1')]},'session_timers':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x28'),_0x2018('0x29'),'originate')},'session_expires':{'type':Sequelize[_0x2018('0x27')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x2a'),'uas'),'defaultValue':_0x2018('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x2018('0x1')]},'regexten':{'type':Sequelize[_0x2018('0x1')]},'fromdomain':{'type':Sequelize[_0x2018('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x2018('0x27')](0x5)},'qualify':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':_0x2018('0x1a')},'keepalive':{'type':Sequelize[_0x2018('0x27')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x2018('0x1')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x2018('0x27')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2018('0x27')](0xb)},'sendrpid':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no',_0x2018('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0x2018('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x2018('0x27')](0xb)},'qualifyfreq':{'type':Sequelize[_0x2018('0x27')](0xb)},'contactpermit':{'type':Sequelize[_0x2018('0x1')]},'contactdeny':{'type':Sequelize[_0x2018('0x1')]},'contactacl':{'type':Sequelize[_0x2018('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0x2018('0x1')]},'use_q850_reason':{'type':Sequelize[_0x2018('0x1')]},'maxforwards':{'type':Sequelize[_0x2018('0x27')](0xb)},'encryption':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'force_avp':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no')},'dtlsenable':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0x2018('0x3')]('yes','no',_0x2018('0x2d'),_0x2018('0x2e'))},'dtlsrekey':{'type':Sequelize[_0x2018('0x27')](0xb)},'dtlscertfile':{'type':Sequelize[_0x2018('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x2018('0x1')]},'dtlscipher':{'type':Sequelize[_0x2018('0x1')]},'dtlscafile':{'type':Sequelize[_0x2018('0x1')]},'dtlscapath':{'type':Sequelize[_0x2018('0x1')]},'dtlssetup':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x2f'),_0x2018('0x30'),_0x2018('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x2018('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0x2018('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x2018('0x1')]},'recordofffeature':{'type':Sequelize[_0x2018('0x1')]},'call_limit':{'type':Sequelize[_0x2018('0x27')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x2018('0x3')](_0x2018('0x1a'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0x2018('0x1')]},'mohinterpret':{'type':Sequelize[_0x2018('0x1')]},'mohsuggest':{'type':Sequelize[_0x2018('0x1')]},'parkinglot':{'type':Sequelize[_0x2018('0x1')]},'description':{'type':Sequelize[_0x2018('0x1')]},'host':{'type':Sequelize[_0x2018('0x1')],'defaultValue':_0x2018('0x32')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0x2018('0x18'),_0x2018('0x33'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0x2018('0x1')]},'otherFields':{'type':Sequelize[_0x2018('0x1')]},'active':{'type':Sequelize[_0x2018('0x34')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2018('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xa6ef=['yes','nonat','outgoing','nat','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','INTEGER','always','accept','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','update','update,nonat','STRING','name','ENUM','user','peer','friend','from-voip-provider','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833'];(function(_0x21ae0b,_0x3b3821){var _0x2b481c=function(_0x26a789){while(--_0x26a789){_0x21ae0b['push'](_0x21ae0b['shift']());}};_0x2b481c(++_0x3b3821);}(_0xa6ef,0x1ab));var _0xfa6e=function(_0x5633d5,_0x385baa){_0x5633d5=_0x5633d5-0x0;var _0x11287b=_0xa6ef[_0x5633d5];return _0x11287b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfa6e('0x0')],'allowNull':![],'unique':_0xfa6e('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xfa6e('0x2')]('friend',_0xfa6e('0x3'),_0xfa6e('0x4')),'allowNull':![],'defaultValue':_0xfa6e('0x5')},'context':{'type':Sequelize[_0xfa6e('0x0')],'allowNull':![],'defaultValue':_0xfa6e('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0xfa6e('0x7'),_0xfa6e('0x8'),'PROHIB_NOT_SCREENED',_0xfa6e('0x9'),_0xfa6e('0xa'),_0xfa6e('0xb'))},'deny':{'type':Sequelize[_0xfa6e('0x0')]},'permit':{'type':Sequelize[_0xfa6e('0x0')]},'secret':{'type':Sequelize[_0xfa6e('0x0')]},'md5secret':{'type':Sequelize[_0xfa6e('0x0')]},'remotesecret':{'type':Sequelize[_0xfa6e('0x0')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xfa6e('0xc'),'set':function(_0xa8f3e7){this[_0xfa6e('0xd')]('transport',_0xa8f3e7?_0xa8f3e7[_0xfa6e('0xe')](','):null);},'get':function(){return this['getDataValue']('transport')?this['getDataValue'](_0xfa6e('0xf'))[_0xfa6e('0x10')](','):null;},'comment':_0xfa6e('0x11')},'dtmfmode':{'type':Sequelize[_0xfa6e('0x2')]('rfc2833',_0xfa6e('0x12'),_0xfa6e('0x13'),_0xfa6e('0x14'),_0xfa6e('0x15')),'defaultValue':_0xfa6e('0x16')},'directmedia':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no',_0xfa6e('0x18'),'update',_0xfa6e('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xfa6e('0x0')]},'directmediadeny':{'type':Sequelize[_0xfa6e('0x0')]},'nat':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':'force_rport,comedia','set':function(_0x3aafda){this[_0xfa6e('0xd')](_0xfa6e('0x1a'),_0x3aafda?_0x3aafda['join'](','):null);},'get':function(){return this[_0xfa6e('0x1b')](_0xfa6e('0x1a'))?this[_0xfa6e('0x1b')](_0xfa6e('0x1a'))[_0xfa6e('0x10')](','):null;},'comment':_0xfa6e('0x1c')},'callgroup':{'type':Sequelize[_0xfa6e('0x0')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0xfa6e('0x0')]},'namedpickupgroup':{'type':Sequelize[_0xfa6e('0x0')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xfa6e('0x0')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfa6e('0x1d'),'set':function(_0x3d1e4d){this[_0xfa6e('0xd')]('allow',_0x3d1e4d?_0x3d1e4d[_0xfa6e('0xe')](';'):_0xfa6e('0x1d'));},'get':function(){return this['getDataValue'](_0xfa6e('0x1e'))?this[_0xfa6e('0x1b')](_0xfa6e('0x1e'))[_0xfa6e('0x10')](';'):null;},'comment':_0xfa6e('0x1f')},'autoframing':{'type':Sequelize[_0xfa6e('0x2')]('yes','no')},'insecure':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':_0xfa6e('0x20'),'set':function(_0xf1b5c2){this[_0xfa6e('0xd')](_0xfa6e('0x21'),_0xf1b5c2?_0xf1b5c2[_0xfa6e('0xe')](','):null);},'get':function(){return this[_0xfa6e('0x1b')](_0xfa6e('0x21'))?this[_0xfa6e('0x1b')](_0xfa6e('0x21'))[_0xfa6e('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xfa6e('0x2')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xfa6e('0x17'),'no',_0xfa6e('0x22'))},'promiscredir':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xfa6e('0x0')]},'callerid':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xfa6e('0x0')]},'callcounter':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'allowoverlap':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'allowsubscribe':{'type':Sequelize[_0xfa6e('0x2')]('yes','no')},'allowtransfer':{'type':Sequelize[_0xfa6e('0x2')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xfa6e('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0xfa6e('0x0')]},'template':{'type':Sequelize[_0xfa6e('0x0')]},'videosupport':{'type':Sequelize[_0xfa6e('0x2')]('yes','no',_0xfa6e('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x25'),_0xfa6e('0x26'),_0xfa6e('0x27'))},'session_expires':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'session_minse':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xfa6e('0x28'),_0xfa6e('0x29')),'defaultValue':_0xfa6e('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0xfa6e('0x0')]},'regexten':{'type':Sequelize[_0xfa6e('0x0')]},'fromdomain':{'type':Sequelize[_0xfa6e('0x0')]},'fromuser':{'type':Sequelize[_0xfa6e('0x0')]},'port':{'type':Sequelize[_0xfa6e('0x23')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xfa6e('0x17'),'no'),'defaultValue':_0xfa6e('0x17')},'keepalive':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0xfa6e('0x0')]},'rtptimeout':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no',_0xfa6e('0x2a')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xfa6e('0x0')]},'callbackextension':{'type':Sequelize[_0xfa6e('0x0')]},'timert1':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'timerb':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'contactpermit':{'type':Sequelize[_0xfa6e('0x0')]},'contactdeny':{'type':Sequelize[_0xfa6e('0x0')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xfa6e('0x0')]},'use_q850_reason':{'type':Sequelize[_0xfa6e('0x0')]},'maxforwards':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'encryption':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xfa6e('0x17'),'no')},'force_avp':{'type':Sequelize[_0xfa6e('0x2')]('yes','no')},'icesupport':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'dtlsenable':{'type':Sequelize[_0xfa6e('0x2')]('yes','no')},'dtlsverify':{'type':Sequelize['ENUM'](_0xfa6e('0x17'),'no',_0xfa6e('0x2b'),_0xfa6e('0x2c'))},'dtlsrekey':{'type':Sequelize[_0xfa6e('0x23')](0xb)},'dtlscertfile':{'type':Sequelize[_0xfa6e('0x0')]},'dtlsprivatekey':{'type':Sequelize[_0xfa6e('0x0')]},'dtlscipher':{'type':Sequelize[_0xfa6e('0x0')]},'dtlscafile':{'type':Sequelize[_0xfa6e('0x0')]},'dtlscapath':{'type':Sequelize[_0xfa6e('0x0')]},'dtlssetup':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x2d'),_0xfa6e('0x2e'),_0xfa6e('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xfa6e('0x0')]},'usereqphone':{'type':Sequelize[_0xfa6e('0x2')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xfa6e('0x0')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'subscribemwi':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no')},'vmexten':{'type':Sequelize[_0xfa6e('0x0')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0xfa6e('0x0')]},'parkinglot':{'type':Sequelize[_0xfa6e('0x0')]},'description':{'type':Sequelize[_0xfa6e('0x0')]},'host':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xfa6e('0x2')](_0xfa6e('0x17'),'no',_0xfa6e('0x18'),_0xfa6e('0x30'),_0xfa6e('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xfa6e('0x0')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xfa6e('0x0')],'defaultValue':'no'}};
\ No newline at end of file
index 3e8dd78..40bcaaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['body','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','create','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Trunk,\x20%s,\x20%s','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','get','Trunks','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','Trunk','findAll','rows','show','params','length','find','omit'];(function(_0x1244c7,_0x205b94){var _0x269689=function(_0x1307d6){while(--_0x1307d6){_0x1244c7['push'](_0x1244c7['shift']());}};_0x269689(++_0x205b94);}(_0xedd9,0xfc));var _0x9edd=function(_0x5d26b0,_0x3d9a16){_0x5d26b0=_0x5d26b0-0x0;var _0x12d2ca=_0xedd9[_0x5d26b0];return _0x12d2ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];var jayson=require(_0x9edd('0x18'));var client=jayson[_0x9edd('0x19')][_0x9edd('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xfca576,_0xef5498,_0x47eb64,_0x176bfa){return new BPromise(function(_0x44fc7c,_0x891832){var _0x4d9a7=_0x176bfa||client;return _0x4d9a7[_0x9edd('0x1b')](_0xfca576,_0x47eb64)[_0x9edd('0x1c')](function(_0x1042aa){logger[_0x9edd('0x1d')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x9edd('0x1e'));logger[_0x9edd('0x1f')](_0x9edd('0x20'),_0xef5498,'request\x20sent',JSON[_0x9edd('0x21')](_0x1042aa));if(_0x1042aa[_0x9edd('0x22')]){if(_0x1042aa[_0x9edd('0x22')]['code']===0x1f4){logger[_0x9edd('0x22')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x1042aa[_0x9edd('0x22')][_0x9edd('0x23')]);return _0x891832(_0x1042aa['error']['message']);}logger[_0x9edd('0x22')]('Trunk,\x20%s,\x20%s',_0xef5498,_0x1042aa[_0x9edd('0x22')]['message']);return _0x44fc7c(_0x1042aa['error'][_0x9edd('0x23')]);}else{logger[_0x9edd('0x1d')]('Trunk,\x20%s,\x20%s',_0xef5498,'request\x20sent');_0x44fc7c(_0x1042aa[_0x9edd('0x24')][_0x9edd('0x23')]);}})[_0x9edd('0x25')](function(_0x542172){logger[_0x9edd('0x22')](_0x9edd('0x26'),_0xef5498,_0x542172);_0x891832(_0x542172);});});}function respondWithStatusCode(_0x44a6c1,_0x2ca65f){_0x2ca65f=_0x2ca65f||0xcc;return function(_0x339a0d){if(_0x339a0d){return _0x44a6c1['sendStatus'](_0x2ca65f);}return _0x44a6c1[_0x9edd('0x27')](_0x2ca65f)[_0x9edd('0x28')]();};}function respondWithResult(_0x3a1ea5,_0x2f9f86){_0x2f9f86=_0x2f9f86||0xc8;return function(_0x310a4d){if(_0x310a4d){return _0x3a1ea5['status'](_0x2f9f86)['json'](_0x310a4d);}};}function respondWithFilteredResult(_0x3276ee,_0xfeca7b){return function(_0x8d67aa){if(_0x8d67aa){var _0x25e135=typeof _0xfeca7b[_0x9edd('0x29')]==='undefined'&&typeof _0xfeca7b['limit']===_0x9edd('0x2a');var _0x257a26=_0x8d67aa[_0x9edd('0x2b')];var _0x52746a=_0x25e135?0x0:_0xfeca7b[_0x9edd('0x29')];var _0x28cfae=_0x25e135?_0x8d67aa[_0x9edd('0x2b')]:_0xfeca7b[_0x9edd('0x29')]+_0xfeca7b['limit'];var _0x2155a1;if(_0x28cfae>=_0x257a26){_0x28cfae=_0x257a26;_0x2155a1=0xc8;}else{_0x2155a1=0xce;}_0x3276ee[_0x9edd('0x27')](_0x2155a1);return _0x3276ee[_0x9edd('0x2c')](_0x9edd('0x2d'),_0x52746a+'-'+_0x28cfae+'/'+_0x257a26)[_0x9edd('0x2e')](_0x8d67aa);}return null;};}function patchUpdates(_0x42e664){return function(_0x209aba){try{jsonpatch[_0x9edd('0x2f')](_0x209aba,_0x42e664,!![]);}catch(_0x19b6c1){return BPromise[_0x9edd('0x30')](_0x19b6c1);}return _0x209aba[_0x9edd('0x31')]();};}function saveUpdates(_0x138002,_0x6907a5){return function(_0xa55906){if(_0xa55906){return _0xa55906[_0x9edd('0x32')](_0x138002)['then'](function(_0x1453d2){return _0x1453d2;});}return null;};}function removeEntity(_0x259259,_0x267c74){return function(_0x5d1707){if(_0x5d1707){return _0x5d1707[_0x9edd('0x33')]()[_0x9edd('0x1c')](function(){var _0xde9b13=_0x5d1707[_0x9edd('0x34')]({'plain':!![]});var _0x21bc30=_0x9edd('0x35');return db[_0x9edd('0x36')][_0x9edd('0x33')]({'where':{'type':_0x21bc30,'resourceId':_0xde9b13['id']}})[_0x9edd('0x1c')](function(){return _0x5d1707;});})[_0x9edd('0x1c')](function(){_0x259259[_0x9edd('0x27')](0xcc)[_0x9edd('0x28')]();});}};}function handleEntityNotFound(_0x27eb7e,_0x14f780){return function(_0x5757fc){if(!_0x5757fc){_0x27eb7e[_0x9edd('0x37')](0x194);}return _0x5757fc;};}function handleError(_0x5ed62d,_0x968303){_0x968303=_0x968303||0x1f4;return function(_0x148630){logger[_0x9edd('0x22')](_0x148630[_0x9edd('0x38')]);if(_0x148630[_0x9edd('0x39')]){delete _0x148630['name'];}_0x5ed62d[_0x9edd('0x27')](_0x968303)[_0x9edd('0x3a')](_0x148630);};}exports[_0x9edd('0x3b')]=function(_0x38e9be,_0x1be77f){var _0x337e6c={},_0x5c0627={},_0x1cbbac={'count':0x0,'rows':[]};var _0x1ccee8=_[_0x9edd('0x3c')](db['Trunk'][_0x9edd('0x3d')],function(_0x56a228){return{'name':_0x56a228[_0x9edd('0x3e')],'type':_0x56a228['type'][_0x9edd('0x3f')]};});_0x5c0627[_0x9edd('0x40')]=_[_0x9edd('0x3c')](_0x1ccee8,'name');_0x5c0627[_0x9edd('0x41')]=_[_0x9edd('0x42')](_0x38e9be[_0x9edd('0x41')]);_0x5c0627['filters']=_[_0x9edd('0x43')](_0x5c0627['model'],_0x5c0627[_0x9edd('0x41')]);_0x337e6c[_0x9edd('0x44')]=_['intersection'](_0x5c0627[_0x9edd('0x40')],qs[_0x9edd('0x45')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x45')]));_0x337e6c['attributes']=_0x337e6c[_0x9edd('0x44')]['length']?_0x337e6c[_0x9edd('0x44')]:_0x5c0627[_0x9edd('0x40')];if(!_0x38e9be['query'][_0x9edd('0x46')]('nolimit')){_0x337e6c['limit']=qs[_0x9edd('0x47')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x47')]);_0x337e6c[_0x9edd('0x29')]=qs[_0x9edd('0x29')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x29')]);}_0x337e6c[_0x9edd('0x48')]=qs[_0x9edd('0x49')](_0x38e9be[_0x9edd('0x41')][_0x9edd('0x49')]);_0x337e6c[_0x9edd('0x4a')]=qs[_0x9edd('0x4b')](_[_0x9edd('0x4c')](_0x38e9be[_0x9edd('0x41')],_0x5c0627['filters']),_0x1ccee8);if(_0x38e9be[_0x9edd('0x41')][_0x9edd('0x4d')]){_0x337e6c[_0x9edd('0x4a')]=_[_0x9edd('0x4e')](_0x337e6c[_0x9edd('0x4a')],{'$or':_[_0x9edd('0x3c')](_0x1ccee8,function(_0x10d41e){if(_0x10d41e['type']!=='VIRTUAL'){var _0x4bc7a1={};_0x4bc7a1[_0x10d41e[_0x9edd('0x39')]]={'$like':'%'+_0x38e9be['query'][_0x9edd('0x4d')]+'%'};return _0x4bc7a1;}})});}_0x337e6c=_[_0x9edd('0x4e')]({},_0x337e6c,_0x38e9be[_0x9edd('0x4f')]);var _0x8db801={'where':_0x337e6c[_0x9edd('0x4a')]};return db['Trunk'][_0x9edd('0x2b')](_0x8db801)[_0x9edd('0x1c')](function(_0x40e33d){_0x1cbbac['count']=_0x40e33d;if(_0x38e9be[_0x9edd('0x41')][_0x9edd('0x50')]){_0x337e6c[_0x9edd('0x51')]=[{'all':!![]}];}return db[_0x9edd('0x52')][_0x9edd('0x53')](_0x337e6c);})[_0x9edd('0x1c')](function(_0x4d4f33){_0x1cbbac[_0x9edd('0x54')]=_0x4d4f33;return _0x1cbbac;})[_0x9edd('0x1c')](respondWithFilteredResult(_0x1be77f,_0x337e6c))['catch'](handleError(_0x1be77f,null));};exports[_0x9edd('0x55')]=function(_0x8d8701,_0x4bb324){var _0x2bd089={'raw':![],'where':{'id':_0x8d8701[_0x9edd('0x56')]['id']}},_0x8134cd={};_0x8134cd['model']=_[_0x9edd('0x42')](db[_0x9edd('0x52')][_0x9edd('0x3d')]);_0x8134cd[_0x9edd('0x41')]=_['keys'](_0x8d8701[_0x9edd('0x41')]);_0x8134cd[_0x9edd('0x4b')]=_[_0x9edd('0x43')](_0x8134cd['model'],_0x8134cd[_0x9edd('0x41')]);_0x2bd089[_0x9edd('0x44')]=_['intersection'](_0x8134cd[_0x9edd('0x40')],qs['fields'](_0x8d8701[_0x9edd('0x41')][_0x9edd('0x45')]));_0x2bd089[_0x9edd('0x44')]=_0x2bd089[_0x9edd('0x44')][_0x9edd('0x57')]?_0x2bd089[_0x9edd('0x44')]:_0x8134cd[_0x9edd('0x40')];if(_0x8d8701[_0x9edd('0x41')][_0x9edd('0x50')]){_0x2bd089[_0x9edd('0x51')]=[{'all':!![]}];}_0x2bd089=_[_0x9edd('0x4e')]({},_0x2bd089,_0x8d8701['options']);return db[_0x9edd('0x52')][_0x9edd('0x58')](_0x2bd089)[_0x9edd('0x1c')](handleEntityNotFound(_0x4bb324,null))['then'](respondWithResult(_0x4bb324,null))[_0x9edd('0x25')](handleError(_0x4bb324,null));};exports['clone']=function(_0x54d83d,_0x54ecfa){var _0x1348a7={'where':{'id':_0x54d83d[_0x9edd('0x56')]['id']}},_0x45f47c={};_0x45f47c[_0x9edd('0x40')]=_['keys'](db['Trunk']['rawAttributes']);_0x1348a7[_0x9edd('0x44')]=_[_0x9edd('0x43')](_0x45f47c[_0x9edd('0x40')],qs[_0x9edd('0x45')](_0x54d83d[_0x9edd('0x41')][_0x9edd('0x45')]));_0x1348a7[_0x9edd('0x44')]=_0x1348a7[_0x9edd('0x44')]['length']?_0x1348a7[_0x9edd('0x44')]:_0x45f47c['model'];if(_0x54d83d[_0x9edd('0x41')][_0x9edd('0x50')]){_0x1348a7['include']=[{'all':!![]}];}_0x1348a7=_[_0x9edd('0x4e')]({},_0x1348a7,_0x54d83d[_0x9edd('0x4f')]);return db[_0x9edd('0x52')]['find'](_0x1348a7)[_0x9edd('0x1c')](handleEntityNotFound(_0x54ecfa,null))[_0x9edd('0x1c')](function(_0x430eb4){if(_0x430eb4){var _0x15ebfa=_0x430eb4[_0x9edd('0x34')]({'plain':!![]});_0x15ebfa=qs[_0x9edd('0x59')](_0x15ebfa,['id','createdAt','updatedAt']);_0x54d83d[_0x9edd('0x5a')]=_['omit'](_0x54d83d[_0x9edd('0x5a')],['id',_0x9edd('0x5b'),_0x9edd('0x5c')]);return db[_0x9edd('0x52')]['create'](_[_0x9edd('0x4e')](_0x15ebfa,_0x54d83d['body']),{'include':_0x54d83d[_0x9edd('0x41')][_0x9edd('0x50')]?[{'all':!![]}]:undefined})[_0x9edd('0x1c')](function(_0x5ca123){var _0x2651a2=_0x54d83d['user'][_0x9edd('0x34')]({'plain':!![]});if(!_0x2651a2)throw new Error(_0x9edd('0x5d'));if(_0x2651a2['role']===_0x9edd('0x5e')){var _0x4a72d0=_0x5ca123[_0x9edd('0x34')]({'plain':!![]});var _0x134c9c=_0x9edd('0x35');return db['UserProfileSection'][_0x9edd('0x58')]({'where':{'name':_0x134c9c,'userProfileId':_0x2651a2[_0x9edd('0x5f')]},'raw':!![]})[_0x9edd('0x1c')](function(_0x2015fc){if(_0x2015fc&&_0x2015fc[_0x9edd('0x60')]===0x0){return db['UserProfileResource']['create']({'name':_0x4a72d0[_0x9edd('0x39')],'resourceId':_0x4a72d0['id'],'type':_0x2015fc[_0x9edd('0x39')],'sectionId':_0x2015fc['id']},{})['then'](function(){return _0x5ca123;});}else{return _0x5ca123;}})['catch'](function(_0x52afd7){logger[_0x9edd('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52afd7);throw _0x52afd7;});}return _0x5ca123;});}})['then'](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x25')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x61')]=function(_0x589348,_0xb9ebeb,_0x11e082){var _0x34dff5;return db['Trunk'][_0x9edd('0x61')](_0x589348['body'],{'raw':!![]})[_0x9edd('0x1c')](function(_0x18d1a0){_0x34dff5=_0x18d1a0;return db['Trunk'][_0x9edd('0x53')]({'raw':!![]});})[_0x9edd('0x1c')](function(_0x5c1746){var _0x2bd6d1=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],'server/files/templates/trunk.ejs'),_0x9edd('0x65'));var _0x58330c=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],'server/files/templates/registry.ejs'),_0x9edd('0x65'));var _0x286593=ejs[_0x9edd('0x66')](_0x2bd6d1,{'trunks':_0x5c1746||[]});fs[_0x9edd('0x67')](_0x9edd('0x68'),_0x286593);if(_0x34dff5[_0x9edd('0x69')]){var _0x3fa4a9=ejs['render'](_0x58330c,{'trunks':_0x5c1746||[]});fs['writeFileSync'](_0x9edd('0x6a'),_0x3fa4a9);}})[_0x9edd('0x1c')](function(){return respondWithRpcPromise(_0x9edd('0x6b'),_0x9edd('0x61'),{'module':_0x9edd('0x6c')});})['then'](function(){var _0x2e40c8=_0x589348[_0x9edd('0x5e')][_0x9edd('0x34')]({'plain':!![]});if(!_0x2e40c8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e40c8[_0x9edd('0x6d')]===_0x9edd('0x5e')){var _0x4b1c12=_0x34dff5[_0x9edd('0x34')]({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'name':_0x9edd('0x35'),'userProfileId':_0x2e40c8[_0x9edd('0x5f')]},'raw':!![]})['then'](function(_0x3f08ac){if(_0x3f08ac&&_0x3f08ac['autoAssociation']===0x0){return db['UserProfileResource'][_0x9edd('0x61')]({'name':_0x4b1c12[_0x9edd('0x39')],'resourceId':_0x4b1c12['id'],'type':_0x3f08ac[_0x9edd('0x39')],'sectionId':_0x3f08ac['id']},{})['then'](function(){return _0x34dff5;});}else{return _0x34dff5;}})[_0x9edd('0x25')](function(_0x286e47){logger['error'](_0x9edd('0x6f'),_0x286e47);throw _0x286e47;});}return _0x34dff5;})[_0x9edd('0x1c')](respondWithResult(_0xb9ebeb,0xc9))[_0x9edd('0x25')](handleError(_0xb9ebeb,null));};exports[_0x9edd('0x32')]=function(_0x54ac71,_0x5e68db,_0x1129b7){var _0x5bb28c;return db[_0x9edd('0x52')][_0x9edd('0x58')]({'where':{'id':_0x54ac71[_0x9edd('0x56')]['id']}})[_0x9edd('0x1c')](handleEntityNotFound(_0x5e68db,null))[_0x9edd('0x1c')](saveUpdates(_0x54ac71[_0x9edd('0x5a')],null))[_0x9edd('0x1c')](function(_0x5a4d4b){if(_0x5a4d4b){_0x5bb28c=_0x5a4d4b;return db[_0x9edd('0x52')]['findAll']({'raw':!![]});}})[_0x9edd('0x1c')](function(_0x3c4db7){if(_0x3c4db7){var _0x2c7562=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],_0x9edd('0x70')),'utf8');var _0x25e3e7=fs[_0x9edd('0x62')](path['join'](config[_0x9edd('0x64')],_0x9edd('0x71')),'utf8');var _0x304e56=ejs[_0x9edd('0x66')](_0x2c7562,{'trunks':_0x3c4db7||[]});fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_trunks.conf',_0x304e56);var _0x41cd76=ejs[_0x9edd('0x66')](_0x25e3e7,{'trunks':_0x3c4db7||[]});fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x41cd76);return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});}return null;})[_0x9edd('0x1c')](function(_0x1a6d3d){if(_0x1a6d3d){return _0x5bb28c;}})[_0x9edd('0x1c')](respondWithResult(_0x5e68db,null))['catch'](handleError(_0x5e68db,null));};exports['destroy']=function(_0x49dc1d,_0x56d794,_0x388252){var _0x20762d;return db[_0x9edd('0x52')][_0x9edd('0x58')]({'where':{'id':_0x49dc1d[_0x9edd('0x56')]['id']}})[_0x9edd('0x1c')](handleEntityNotFound(_0x56d794,null))[_0x9edd('0x1c')](removeEntity(_0x56d794,null))[_0x9edd('0x1c')](function(){return db[_0x9edd('0x52')][_0x9edd('0x53')]({'raw':!![]});})[_0x9edd('0x1c')](function(_0x4cfa99){var _0x367fc6=fs[_0x9edd('0x62')](path[_0x9edd('0x63')](config[_0x9edd('0x64')],_0x9edd('0x70')),_0x9edd('0x65'));var _0x3d4890=fs[_0x9edd('0x62')](path['join'](config['root'],_0x9edd('0x71')),'utf8');var _0x35950b=ejs['render'](_0x367fc6,{'trunks':_0x4cfa99});var _0x21c35f=ejs[_0x9edd('0x66')](_0x3d4890,{'trunks':_0x4cfa99});fs['writeFileSync'](_0x9edd('0x68'),_0x35950b);fs[_0x9edd('0x67')]('/etc/asterisk/sip_xcally_registers.conf',_0x21c35f);return respondWithRpcPromise(_0x9edd('0x6b'),_0x9edd('0x33'),{'module':_0x9edd('0x6c')});})[_0x9edd('0x25')](handleError(_0x56d794,null));};
\ No newline at end of file
+var _0xf3cd=['length','limit','sort','where','filter','merge','options','Trunk','includeAll','include','findAll','show','find','clone','createdAt','updatedAt','omit','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs','server/files/templates/registry.ejs','utf8','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','render','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','undefined','offset','count','json','reject','save','update','get','UserProfileResource','destroy','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields'];(function(_0x4bd18a,_0x9e9983){var _0x195019=function(_0x292c19){while(--_0x292c19){_0x4bd18a['push'](_0x4bd18a['shift']());}};_0x195019(++_0x9e9983);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x2fa1c6,_0x4a5b8d){_0x2fa1c6=_0x2fa1c6-0x0;var _0x5f3257=_0xf3cd[_0x2fa1c6];return _0x5f3257;};'use strict';var emlformat=require(_0xdf3c('0x0'));var rimraf=require(_0xdf3c('0x1'));var zipdir=require(_0xdf3c('0x2'));var jsonpatch=require(_0xdf3c('0x3'));var rp=require(_0xdf3c('0x4'));var moment=require(_0xdf3c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdf3c('0x6'));var util=require(_0xdf3c('0x7'));var path=require(_0xdf3c('0x8'));var sox=require('sox');var csv=require(_0xdf3c('0x9'));var ejs=require(_0xdf3c('0xa'));var fs=require('fs');var fs_extra=require(_0xdf3c('0xb'));var _=require(_0xdf3c('0xc'));var squel=require(_0xdf3c('0xd'));var crypto=require(_0xdf3c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xdf3c('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdf3c('0x10'));var Redis=require(_0xdf3c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdf3c('0x12'));var as=require(_0xdf3c('0x13'));var hardwareService=require(_0xdf3c('0x14'));var logger=require(_0xdf3c('0x15'))(_0xdf3c('0x16'));var utils=require(_0xdf3c('0x17'));var config=require(_0xdf3c('0x18'));var licenseUtil=require(_0xdf3c('0x19'));var db=require('../../mysqldb')['db'];var jayson=require(_0xdf3c('0x1a'));var client=jayson[_0xdf3c('0x1b')][_0xdf3c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x17319c,_0x59e431,_0x2ae4ad,_0x461079){return new BPromise(function(_0x13ea5f,_0x5e0047){var _0x18aafa=_0x461079||client;return _0x18aafa[_0xdf3c('0x1d')](_0x17319c,_0x2ae4ad)[_0xdf3c('0x1e')](function(_0x4274fd){logger[_0xdf3c('0x1f')](_0xdf3c('0x20'),_0x59e431,_0xdf3c('0x21'));logger[_0xdf3c('0x22')](_0xdf3c('0x23'),_0x59e431,_0xdf3c('0x21'),JSON['stringify'](_0x4274fd));if(_0x4274fd[_0xdf3c('0x24')]){if(_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x25')]===0x1f4){logger[_0xdf3c('0x24')](_0xdf3c('0x20'),_0x59e431,_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);return _0x5e0047(_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);}logger[_0xdf3c('0x24')](_0xdf3c('0x20'),_0x59e431,_0x4274fd[_0xdf3c('0x24')][_0xdf3c('0x26')]);return _0x13ea5f(_0x4274fd['error']['message']);}else{logger[_0xdf3c('0x1f')]('Trunk,\x20%s,\x20%s',_0x59e431,_0xdf3c('0x21'));_0x13ea5f(_0x4274fd[_0xdf3c('0x27')][_0xdf3c('0x26')]);}})[_0xdf3c('0x28')](function(_0x33652f){logger[_0xdf3c('0x24')]('Trunk,\x20%s,\x20%s',_0x59e431,_0x33652f);_0x5e0047(_0x33652f);});});}function respondWithStatusCode(_0x22a164,_0x213d75){_0x213d75=_0x213d75||0xcc;return function(_0x13e3ca){if(_0x13e3ca){return _0x22a164[_0xdf3c('0x29')](_0x213d75);}return _0x22a164[_0xdf3c('0x2a')](_0x213d75)[_0xdf3c('0x2b')]();};}function respondWithResult(_0xef54cb,_0x155f54){_0x155f54=_0x155f54||0xc8;return function(_0x18cb46){if(_0x18cb46){return _0xef54cb[_0xdf3c('0x2a')](_0x155f54)['json'](_0x18cb46);}};}function respondWithFilteredResult(_0xd284d7,_0x153daa){return function(_0x4b57a4){if(_0x4b57a4){var _0xdc8962=typeof _0x153daa['offset']==='undefined'&&typeof _0x153daa['limit']===_0xdf3c('0x2c');var _0x186bba=_0x4b57a4['count'];var _0x5c3b5a=_0xdc8962?0x0:_0x153daa[_0xdf3c('0x2d')];var _0x1f2ce4=_0xdc8962?_0x4b57a4[_0xdf3c('0x2e')]:_0x153daa[_0xdf3c('0x2d')]+_0x153daa['limit'];var _0x43ce06;if(_0x1f2ce4>=_0x186bba){_0x1f2ce4=_0x186bba;_0x43ce06=0xc8;}else{_0x43ce06=0xce;}_0xd284d7[_0xdf3c('0x2a')](_0x43ce06);return _0xd284d7['set']('Content-Range',_0x5c3b5a+'-'+_0x1f2ce4+'/'+_0x186bba)[_0xdf3c('0x2f')](_0x4b57a4);}return null;};}function patchUpdates(_0x46f0e3){return function(_0x36937e){try{jsonpatch['apply'](_0x36937e,_0x46f0e3,!![]);}catch(_0x2355f6){return BPromise[_0xdf3c('0x30')](_0x2355f6);}return _0x36937e[_0xdf3c('0x31')]();};}function saveUpdates(_0x10099e,_0x575ae1){return function(_0xda0de0){if(_0xda0de0){return _0xda0de0[_0xdf3c('0x32')](_0x10099e)['then'](function(_0x40ae3d){return _0x40ae3d;});}return null;};}function removeEntity(_0x3daeda,_0x217a65){return function(_0x2287f){if(_0x2287f){return _0x2287f['destroy']()[_0xdf3c('0x1e')](function(){var _0x360d5c=_0x2287f[_0xdf3c('0x33')]({'plain':!![]});var _0x3b9ce8='Trunks';return db[_0xdf3c('0x34')][_0xdf3c('0x35')]({'where':{'type':_0x3b9ce8,'resourceId':_0x360d5c['id']}})['then'](function(){return _0x2287f;});})['then'](function(){_0x3daeda[_0xdf3c('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x216115,_0x5e8130){return function(_0x57faba){if(!_0x57faba){_0x216115['sendStatus'](0x194);}return _0x57faba;};}function handleError(_0x44a478,_0x2ee9ad){_0x2ee9ad=_0x2ee9ad||0x1f4;return function(_0x1d0b8a){logger[_0xdf3c('0x24')](_0x1d0b8a['stack']);if(_0x1d0b8a['name']){delete _0x1d0b8a[_0xdf3c('0x36')];}_0x44a478['status'](_0x2ee9ad)[_0xdf3c('0x37')](_0x1d0b8a);};}exports[_0xdf3c('0x38')]=function(_0x3628ae,_0xcdd731){var _0x1004e9={},_0x1e0cf2={},_0x1c7335={'count':0x0,'rows':[]};var _0x809f3d=_[_0xdf3c('0x39')](db['Trunk'][_0xdf3c('0x3a')],function(_0x54e689){return{'name':_0x54e689['fieldName'],'type':_0x54e689[_0xdf3c('0x3b')]['key']};});_0x1e0cf2[_0xdf3c('0x3c')]=_['map'](_0x809f3d,_0xdf3c('0x36'));_0x1e0cf2[_0xdf3c('0x3d')]=_[_0xdf3c('0x3e')](_0x3628ae[_0xdf3c('0x3d')]);_0x1e0cf2[_0xdf3c('0x3f')]=_[_0xdf3c('0x40')](_0x1e0cf2[_0xdf3c('0x3c')],_0x1e0cf2[_0xdf3c('0x3d')]);_0x1004e9[_0xdf3c('0x41')]=_[_0xdf3c('0x40')](_0x1e0cf2[_0xdf3c('0x3c')],qs[_0xdf3c('0x42')](_0x3628ae['query']['fields']));_0x1004e9[_0xdf3c('0x41')]=_0x1004e9['attributes'][_0xdf3c('0x43')]?_0x1004e9[_0xdf3c('0x41')]:_0x1e0cf2[_0xdf3c('0x3c')];if(!_0x3628ae[_0xdf3c('0x3d')]['hasOwnProperty']('nolimit')){_0x1004e9[_0xdf3c('0x44')]=qs[_0xdf3c('0x44')](_0x3628ae[_0xdf3c('0x3d')]['limit']);_0x1004e9[_0xdf3c('0x2d')]=qs[_0xdf3c('0x2d')](_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x2d')]);}_0x1004e9['order']=qs[_0xdf3c('0x45')](_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x45')]);_0x1004e9[_0xdf3c('0x46')]=qs[_0xdf3c('0x3f')](_['pick'](_0x3628ae[_0xdf3c('0x3d')],_0x1e0cf2[_0xdf3c('0x3f')]),_0x809f3d);if(_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x47')]){_0x1004e9[_0xdf3c('0x46')]=_[_0xdf3c('0x48')](_0x1004e9['where'],{'$or':_['map'](_0x809f3d,function(_0x2c6c6d){if(_0x2c6c6d[_0xdf3c('0x3b')]!=='VIRTUAL'){var _0x5c9885={};_0x5c9885[_0x2c6c6d[_0xdf3c('0x36')]]={'$like':'%'+_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x47')]+'%'};return _0x5c9885;}})});}_0x1004e9=_[_0xdf3c('0x48')]({},_0x1004e9,_0x3628ae[_0xdf3c('0x49')]);var _0x2dbf54={'where':_0x1004e9[_0xdf3c('0x46')]};return db[_0xdf3c('0x4a')][_0xdf3c('0x2e')](_0x2dbf54)['then'](function(_0x129c2a){_0x1c7335[_0xdf3c('0x2e')]=_0x129c2a;if(_0x3628ae[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x1004e9[_0xdf3c('0x4c')]=[{'all':!![]}];}return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')](_0x1004e9);})['then'](function(_0x1751a8){_0x1c7335['rows']=_0x1751a8;return _0x1c7335;})[_0xdf3c('0x1e')](respondWithFilteredResult(_0xcdd731,_0x1004e9))['catch'](handleError(_0xcdd731,null));};exports[_0xdf3c('0x4e')]=function(_0x28144f,_0x2ec575){var _0x94c5b9={'raw':![],'where':{'id':_0x28144f['params']['id']}},_0x5eef94={};_0x5eef94['model']=_[_0xdf3c('0x3e')](db['Trunk'][_0xdf3c('0x3a')]);_0x5eef94[_0xdf3c('0x3d')]=_[_0xdf3c('0x3e')](_0x28144f[_0xdf3c('0x3d')]);_0x5eef94[_0xdf3c('0x3f')]=_['intersection'](_0x5eef94['model'],_0x5eef94[_0xdf3c('0x3d')]);_0x94c5b9[_0xdf3c('0x41')]=_['intersection'](_0x5eef94[_0xdf3c('0x3c')],qs[_0xdf3c('0x42')](_0x28144f[_0xdf3c('0x3d')][_0xdf3c('0x42')]));_0x94c5b9[_0xdf3c('0x41')]=_0x94c5b9[_0xdf3c('0x41')][_0xdf3c('0x43')]?_0x94c5b9['attributes']:_0x5eef94['model'];if(_0x28144f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x94c5b9[_0xdf3c('0x4c')]=[{'all':!![]}];}_0x94c5b9=_[_0xdf3c('0x48')]({},_0x94c5b9,_0x28144f[_0xdf3c('0x49')]);return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')](_0x94c5b9)[_0xdf3c('0x1e')](handleEntityNotFound(_0x2ec575,null))[_0xdf3c('0x1e')](respondWithResult(_0x2ec575,null))[_0xdf3c('0x28')](handleError(_0x2ec575,null));};exports[_0xdf3c('0x50')]=function(_0x4cb28f,_0x1eebcf){var _0x47cb74={'where':{'id':_0x4cb28f['params']['id']}},_0x5e7247={};_0x5e7247['model']=_['keys'](db[_0xdf3c('0x4a')][_0xdf3c('0x3a')]);_0x47cb74['attributes']=_[_0xdf3c('0x40')](_0x5e7247[_0xdf3c('0x3c')],qs['fields'](_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x42')]));_0x47cb74[_0xdf3c('0x41')]=_0x47cb74[_0xdf3c('0x41')][_0xdf3c('0x43')]?_0x47cb74[_0xdf3c('0x41')]:_0x5e7247[_0xdf3c('0x3c')];if(_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]){_0x47cb74[_0xdf3c('0x4c')]=[{'all':!![]}];}_0x47cb74=_[_0xdf3c('0x48')]({},_0x47cb74,_0x4cb28f['options']);return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')](_0x47cb74)[_0xdf3c('0x1e')](handleEntityNotFound(_0x1eebcf,null))['then'](function(_0x245c68){if(_0x245c68){var _0x3e327e=_0x245c68[_0xdf3c('0x33')]({'plain':!![]});_0x3e327e=qs['omit'](_0x3e327e,['id',_0xdf3c('0x51'),_0xdf3c('0x52')]);_0x4cb28f['body']=_[_0xdf3c('0x53')](_0x4cb28f['body'],['id',_0xdf3c('0x51'),_0xdf3c('0x52')]);return db[_0xdf3c('0x4a')][_0xdf3c('0x54')](_[_0xdf3c('0x48')](_0x3e327e,_0x4cb28f[_0xdf3c('0x55')]),{'include':_0x4cb28f[_0xdf3c('0x3d')][_0xdf3c('0x4b')]?[{'all':!![]}]:undefined})[_0xdf3c('0x1e')](function(_0x330730){var _0x283be2=_0x4cb28f[_0xdf3c('0x56')][_0xdf3c('0x33')]({'plain':!![]});if(!_0x283be2)throw new Error(_0xdf3c('0x57'));if(_0x283be2[_0xdf3c('0x58')]===_0xdf3c('0x56')){var _0xd7fb2d=_0x330730['get']({'plain':!![]});var _0x4dade5=_0xdf3c('0x59');return db[_0xdf3c('0x5a')][_0xdf3c('0x4f')]({'where':{'name':_0x4dade5,'userProfileId':_0x283be2['userProfileId']},'raw':!![]})[_0xdf3c('0x1e')](function(_0x5f2765){if(_0x5f2765&&_0x5f2765['autoAssociation']===0x0){return db[_0xdf3c('0x34')][_0xdf3c('0x54')]({'name':_0xd7fb2d[_0xdf3c('0x36')],'resourceId':_0xd7fb2d['id'],'type':_0x5f2765[_0xdf3c('0x36')],'sectionId':_0x5f2765['id']},{})[_0xdf3c('0x1e')](function(){return _0x330730;});}else{return _0x330730;}})[_0xdf3c('0x28')](function(_0x1a31d7){logger[_0xdf3c('0x24')](_0xdf3c('0x5b'),_0x1a31d7);throw _0x1a31d7;});}return _0x330730;});}})[_0xdf3c('0x1e')](respondWithResult(_0x1eebcf,0xc9))[_0xdf3c('0x28')](handleError(_0x1eebcf,null));};exports[_0xdf3c('0x54')]=function(_0x34000c,_0x4be79a,_0x3febac){var _0x2cb0f5;return db[_0xdf3c('0x4a')][_0xdf3c('0x54')](_0x34000c[_0xdf3c('0x55')],{'raw':!![]})['then'](function(_0x18bf4f){_0x2cb0f5=_0x18bf4f;return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});})[_0xdf3c('0x1e')](function(_0x1efa9c){var _0x50805c=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],_0xdf3c('0x5f')),'utf8');var _0xb867a1=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],_0xdf3c('0x60')),_0xdf3c('0x61'));var _0x19c851=ejs['render'](_0x50805c,{'trunks':_0x1efa9c||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x63'),_0x19c851);if(_0x2cb0f5['registry']){var _0x52a2e1=ejs[_0xdf3c('0x64')](_0xb867a1,{'trunks':_0x1efa9c||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x52a2e1);}})[_0xdf3c('0x1e')](function(){return respondWithRpcPromise(_0xdf3c('0x66'),_0xdf3c('0x54'),{'module':_0xdf3c('0x67')});})[_0xdf3c('0x1e')](function(){var _0x5e6606=_0x34000c[_0xdf3c('0x56')][_0xdf3c('0x33')]({'plain':!![]});if(!_0x5e6606)throw new Error(_0xdf3c('0x57'));if(_0x5e6606['role']===_0xdf3c('0x56')){var _0x354ff4=_0x2cb0f5[_0xdf3c('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xdf3c('0x4f')]({'where':{'name':_0xdf3c('0x59'),'userProfileId':_0x5e6606[_0xdf3c('0x68')]},'raw':!![]})[_0xdf3c('0x1e')](function(_0xe01538){if(_0xe01538&&_0xe01538[_0xdf3c('0x69')]===0x0){return db['UserProfileResource']['create']({'name':_0x354ff4['name'],'resourceId':_0x354ff4['id'],'type':_0xe01538['name'],'sectionId':_0xe01538['id']},{})['then'](function(){return _0x2cb0f5;});}else{return _0x2cb0f5;}})[_0xdf3c('0x28')](function(_0x3f43a0){logger[_0xdf3c('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f43a0);throw _0x3f43a0;});}return _0x2cb0f5;})[_0xdf3c('0x1e')](respondWithResult(_0x4be79a,0xc9))[_0xdf3c('0x28')](handleError(_0x4be79a,null));};exports[_0xdf3c('0x32')]=function(_0x51e8c6,_0x591936,_0x233718){var _0x4e3517;return db[_0xdf3c('0x4a')]['find']({'where':{'id':_0x51e8c6[_0xdf3c('0x6a')]['id']}})[_0xdf3c('0x1e')](handleEntityNotFound(_0x591936,null))[_0xdf3c('0x1e')](saveUpdates(_0x51e8c6[_0xdf3c('0x55')],null))['then'](function(_0x5148f6){if(_0x5148f6){_0x4e3517=_0x5148f6;return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});}})[_0xdf3c('0x1e')](function(_0x12a7b0){if(_0x12a7b0){var _0x39d9f0=fs[_0xdf3c('0x5c')](path['join'](config[_0xdf3c('0x5e')],'server/files/templates/trunk.ejs'),_0xdf3c('0x61'));var _0x9c761a=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],'server/files/templates/registry.ejs'),_0xdf3c('0x61'));var _0x5c27cc=ejs[_0xdf3c('0x64')](_0x39d9f0,{'trunks':_0x12a7b0||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x5c27cc);var _0x53b0c3=ejs['render'](_0x9c761a,{'trunks':_0x12a7b0||[]});fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x53b0c3);return respondWithRpcPromise(_0xdf3c('0x66'),_0xdf3c('0x32'),{'module':_0xdf3c('0x67')});}return null;})[_0xdf3c('0x1e')](function(_0x5c8e5e){if(_0x5c8e5e){return _0x4e3517;}})[_0xdf3c('0x1e')](respondWithResult(_0x591936,null))['catch'](handleError(_0x591936,null));};exports[_0xdf3c('0x35')]=function(_0x389708,_0x2e5f82,_0x15a057){var _0x320452;return db[_0xdf3c('0x4a')][_0xdf3c('0x4f')]({'where':{'id':_0x389708[_0xdf3c('0x6a')]['id']}})[_0xdf3c('0x1e')](handleEntityNotFound(_0x2e5f82,null))[_0xdf3c('0x1e')](removeEntity(_0x2e5f82,null))[_0xdf3c('0x1e')](function(){return db[_0xdf3c('0x4a')][_0xdf3c('0x4d')]({'raw':!![]});})[_0xdf3c('0x1e')](function(_0x55fd73){var _0x118ab5=fs[_0xdf3c('0x5c')](path[_0xdf3c('0x5d')](config[_0xdf3c('0x5e')],'server/files/templates/trunk.ejs'),_0xdf3c('0x61'));var _0x1c8fe4=fs['readFileSync'](path['join'](config[_0xdf3c('0x5e')],_0xdf3c('0x60')),_0xdf3c('0x61'));var _0x1aaf8b=ejs[_0xdf3c('0x64')](_0x118ab5,{'trunks':_0x55fd73});var _0x56fc77=ejs[_0xdf3c('0x64')](_0x1c8fe4,{'trunks':_0x55fd73});fs[_0xdf3c('0x62')](_0xdf3c('0x63'),_0x1aaf8b);fs[_0xdf3c('0x62')](_0xdf3c('0x65'),_0x56fc77);return respondWithRpcPromise(_0xdf3c('0x66'),'destroy',{'module':_0xdf3c('0x67')});})[_0xdf3c('0x28')](handleError(_0x2e5f82,null));};
\ No newline at end of file
index a407424..b5bf24b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x015c=['exports','tools_trunks','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./trunk.attributes'];(function(_0x54dd2a,_0x1ffe91){var _0x413531=function(_0x5e9765){while(--_0x5e9765){_0x54dd2a['push'](_0x54dd2a['shift']());}};_0x413531(++_0x1ffe91);}(_0x015c,0x9c));var _0xc015=function(_0x5dd0f7,_0x1f2b48){_0x5dd0f7=_0x5dd0f7-0x0;var _0x4844c7=_0x015c[_0x5dd0f7];return _0x4844c7;};'use strict';var _=require(_0xc015('0x0'));var util=require(_0xc015('0x1'));var logger=require(_0xc015('0x2'))('api');var moment=require(_0xc015('0x3'));var BPromise=require(_0xc015('0x4'));var rp=require(_0xc015('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc015('0x6'));var config=require(_0xc015('0x7'));var attributes=require(_0xc015('0x8'));module[_0xc015('0x9')]=function(_0xab12b8,_0x128188){return _0xab12b8['define']('Trunk',attributes,{'tableName':_0xc015('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x350d=['exports','Trunk','tools_trunks','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./trunk.attributes'];(function(_0x174efa,_0x128ea4){var _0x42b900=function(_0x51a662){while(--_0x51a662){_0x174efa['push'](_0x174efa['shift']());}};_0x42b900(++_0x128ea4);}(_0x350d,0x16b));var _0xd350=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x350d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd350('0x0'));var util=require(_0xd350('0x1'));var logger=require(_0xd350('0x2'))(_0xd350('0x3'));var moment=require(_0xd350('0x4'));var BPromise=require('bluebird');var rp=require(_0xd350('0x5'));var fs=require('fs');var path=require(_0xd350('0x6'));var rimraf=require('rimraf');var config=require(_0xd350('0x7'));var attributes=require(_0xd350('0x8'));module[_0xd350('0x9')]=function(_0x3a9a21,_0x1c6f3a){return _0x3a9a21['define'](_0xd350('0xa'),attributes,{'tableName':_0xd350('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 41c4ea9..caa7b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58ad=['code','message','catch','GetTrunk','Trunk','options','where','limit','include','map','model','attributes','debug','ShowTrunk','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x48807d,_0x12090a){var _0x25b121=function(_0x207527){while(--_0x207527){_0x48807d['push'](_0x48807d['shift']());}};_0x25b121(++_0x12090a);}(_0x58ad,0x78));var _0xd58a=function(_0x116f42,_0x52cc63){_0x116f42=_0x116f42-0x0;var _0x195375=_0x58ad[_0x116f42];return _0x195375;};'use strict';var _=require('lodash');var util=require(_0xd58a('0x0'));var moment=require(_0xd58a('0x1'));var BPromise=require(_0xd58a('0x2'));var rs=require(_0xd58a('0x3'));var fs=require('fs');var Redis=require(_0xd58a('0x4'));var db=require(_0xd58a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd58a('0x6'))(_0xd58a('0x7'));var config=require(_0xd58a('0x8'));var jayson=require(_0xd58a('0x9'));var client=jayson[_0xd58a('0xa')][_0xd58a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f7726,_0x2e5bad,_0x484be9){return new BPromise(function(_0x184b01,_0x76a336){return client[_0xd58a('0xc')](_0x2f7726,_0x484be9)[_0xd58a('0xd')](function(_0x11c188){logger[_0xd58a('0xe')](_0xd58a('0xf'),_0x2e5bad,'request\x20sent');logger['debug'](_0xd58a('0x10'),_0x2e5bad,_0xd58a('0x11'),JSON[_0xd58a('0x12')](_0x11c188));if(_0x11c188[_0xd58a('0x13')]){if(_0x11c188[_0xd58a('0x13')][_0xd58a('0x14')]===0x1f4){logger[_0xd58a('0x13')](_0xd58a('0xf'),_0x2e5bad,_0x11c188[_0xd58a('0x13')]['message']);return _0x76a336(_0x11c188[_0xd58a('0x13')]['message']);}logger[_0xd58a('0x13')](_0xd58a('0xf'),_0x2e5bad,_0x11c188['error'][_0xd58a('0x15')]);return _0x184b01(_0x11c188['error'][_0xd58a('0x15')]);}else{logger[_0xd58a('0xe')](_0xd58a('0xf'),_0x2e5bad,'request\x20sent');_0x184b01(_0x11c188['result'][_0xd58a('0x15')]);}})[_0xd58a('0x16')](function(_0xe5db6e){logger['error'](_0xd58a('0xf'),_0x2e5bad,_0xe5db6e);_0x76a336(_0xe5db6e);});});}exports[_0xd58a('0x17')]=function(_0x314614){var _0x11a958=this;return new Promise(function(_0x31260e,_0x112b1e){return db[_0xd58a('0x18')]['findAll']({'raw':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')][_0xd58a('0x1a')]||null:null,'attributes':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')]['attributes']||null:null,'limit':_0x314614['options']?_0x314614['options'][_0xd58a('0x1b')]||null:null,'include':_0x314614[_0xd58a('0x19')]?_0x314614[_0xd58a('0x19')][_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x314614['options']['include'],function(_0x795cf6){return{'model':db[_0x795cf6[_0xd58a('0x1e')]],'as':_0x795cf6['as'],'attributes':_0x795cf6[_0xd58a('0x1f')],'include':_0x795cf6[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x795cf6['include'],function(_0x59adfb){return{'model':db[_0x59adfb['model']],'as':_0x59adfb['as'],'attributes':_0x59adfb['attributes'],'include':_0x59adfb[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x59adfb[_0xd58a('0x1c')],function(_0x17ab21){return{'model':db[_0x17ab21[_0xd58a('0x1e')]],'as':_0x17ab21['as'],'attributes':_0x17ab21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xff133f){logger[_0xd58a('0xe')]('GetTrunk',_0x314614);logger[_0xd58a('0x20')]('GetTrunk',_0x314614,JSON['stringify'](_0xff133f));_0x31260e(_0xff133f);})[_0xd58a('0x16')](function(_0x41dbb2){logger[_0xd58a('0x13')](_0xd58a('0x17'),_0x41dbb2[_0xd58a('0x15')],_0x314614);_0x112b1e(_0x11a958[_0xd58a('0x13')](0x1f4,_0x41dbb2[_0xd58a('0x15')]));});});};exports[_0xd58a('0x21')]=function(_0x5bada6){var _0x1119fa=this;return new Promise(function(_0x3c88df,_0x37e129){return db[_0xd58a('0x18')]['find']({'raw':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x22')]===undefined?!![]:![]:!![],'where':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x1a')]||null:null,'attributes':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')]['attributes']||null:null,'include':_0x5bada6[_0xd58a('0x19')]?_0x5bada6[_0xd58a('0x19')][_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x5bada6['options'][_0xd58a('0x1c')],function(_0x4e87c6){return{'model':db[_0x4e87c6[_0xd58a('0x1e')]],'as':_0x4e87c6['as'],'attributes':_0x4e87c6['attributes'],'include':_0x4e87c6['include']?_['map'](_0x4e87c6['include'],function(_0x450b19){return{'model':db[_0x450b19[_0xd58a('0x1e')]],'as':_0x450b19['as'],'attributes':_0x450b19['attributes'],'include':_0x450b19[_0xd58a('0x1c')]?_[_0xd58a('0x1d')](_0x450b19[_0xd58a('0x1c')],function(_0x404802){return{'model':db[_0x404802[_0xd58a('0x1e')]],'as':_0x404802['as'],'attributes':_0x404802[_0xd58a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd58a('0xd')](function(_0x188573){logger['info']('ShowTrunk',_0x5bada6);logger[_0xd58a('0x20')]('ShowTrunk',_0x5bada6,JSON[_0xd58a('0x12')](_0x188573));_0x3c88df(_0x188573);})['catch'](function(_0xa260f1){logger[_0xd58a('0x13')](_0xd58a('0x21'),_0xa260f1[_0xd58a('0x15')],_0x5bada6);_0x37e129(_0x1119fa['error'](0x1f4,_0xa260f1[_0xd58a('0x15')]));});});};
\ No newline at end of file
+var _0x9924=['Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Trunk','options','raw','where','attributes','limit','include','map','model','GetTrunk','ShowTrunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x29acbe,_0x348674){var _0x127807=function(_0x5ed99c){while(--_0x5ed99c){_0x29acbe['push'](_0x29acbe['shift']());}};_0x127807(++_0x348674);}(_0x9924,0xcc));var _0x4992=function(_0x245572,_0x424655){_0x245572=_0x245572-0x0;var _0x3c5f14=_0x9924[_0x245572];return _0x3c5f14;};'use strict';var _=require(_0x4992('0x0'));var util=require(_0x4992('0x1'));var moment=require(_0x4992('0x2'));var BPromise=require(_0x4992('0x3'));var rs=require(_0x4992('0x4'));var fs=require('fs');var Redis=require(_0x4992('0x5'));var db=require(_0x4992('0x6'))['db'];var utils=require(_0x4992('0x7'));var logger=require(_0x4992('0x8'))('rpc');var config=require(_0x4992('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4992('0xa')][_0x4992('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a3cae,_0x163d85,_0x2b52a8){return new BPromise(function(_0x1c6e23,_0x20b1fa){return client[_0x4992('0xc')](_0x3a3cae,_0x2b52a8)[_0x4992('0xd')](function(_0x32391b){logger[_0x4992('0xe')](_0x4992('0xf'),_0x163d85,_0x4992('0x10'));logger[_0x4992('0x11')](_0x4992('0x12'),_0x163d85,'request\x20sent',JSON[_0x4992('0x13')](_0x32391b));if(_0x32391b[_0x4992('0x14')]){if(_0x32391b[_0x4992('0x14')][_0x4992('0x15')]===0x1f4){logger[_0x4992('0x14')](_0x4992('0xf'),_0x163d85,_0x32391b[_0x4992('0x14')][_0x4992('0x16')]);return _0x20b1fa(_0x32391b['error'][_0x4992('0x16')]);}logger[_0x4992('0x14')](_0x4992('0xf'),_0x163d85,_0x32391b['error'][_0x4992('0x16')]);return _0x1c6e23(_0x32391b[_0x4992('0x14')][_0x4992('0x16')]);}else{logger[_0x4992('0xe')](_0x4992('0xf'),_0x163d85,_0x4992('0x10'));_0x1c6e23(_0x32391b[_0x4992('0x17')][_0x4992('0x16')]);}})[_0x4992('0x18')](function(_0xd93c0f){logger[_0x4992('0x14')](_0x4992('0xf'),_0x163d85,_0xd93c0f);_0x20b1fa(_0xd93c0f);});});}exports['GetTrunk']=function(_0x3eef4b){var _0x7989ea=this;return new Promise(function(_0x5ee4bc,_0x28efb3){return db[_0x4992('0x19')]['findAll']({'raw':_0x3eef4b[_0x4992('0x1a')]?_0x3eef4b[_0x4992('0x1a')][_0x4992('0x1b')]===undefined?!![]:![]:!![],'where':_0x3eef4b[_0x4992('0x1a')]?_0x3eef4b[_0x4992('0x1a')][_0x4992('0x1c')]||null:null,'attributes':_0x3eef4b[_0x4992('0x1a')]?_0x3eef4b[_0x4992('0x1a')][_0x4992('0x1d')]||null:null,'limit':_0x3eef4b['options']?_0x3eef4b['options'][_0x4992('0x1e')]||null:null,'include':_0x3eef4b[_0x4992('0x1a')]?_0x3eef4b[_0x4992('0x1a')][_0x4992('0x1f')]?_[_0x4992('0x20')](_0x3eef4b[_0x4992('0x1a')]['include'],function(_0x47da53){return{'model':db[_0x47da53[_0x4992('0x21')]],'as':_0x47da53['as'],'attributes':_0x47da53[_0x4992('0x1d')],'include':_0x47da53['include']?_[_0x4992('0x20')](_0x47da53[_0x4992('0x1f')],function(_0x4aa77b){return{'model':db[_0x4aa77b['model']],'as':_0x4aa77b['as'],'attributes':_0x4aa77b['attributes'],'include':_0x4aa77b[_0x4992('0x1f')]?_[_0x4992('0x20')](_0x4aa77b[_0x4992('0x1f')],function(_0x41a85b){return{'model':db[_0x41a85b[_0x4992('0x21')]],'as':_0x41a85b['as'],'attributes':_0x41a85b[_0x4992('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1bc04c){logger[_0x4992('0xe')](_0x4992('0x22'),_0x3eef4b);logger[_0x4992('0x11')](_0x4992('0x22'),_0x3eef4b,JSON['stringify'](_0x1bc04c));_0x5ee4bc(_0x1bc04c);})[_0x4992('0x18')](function(_0x3cd11b){logger[_0x4992('0x14')](_0x4992('0x22'),_0x3cd11b[_0x4992('0x16')],_0x3eef4b);_0x28efb3(_0x7989ea['error'](0x1f4,_0x3cd11b['message']));});});};exports[_0x4992('0x23')]=function(_0x5d3d33){var _0x50d224=this;return new Promise(function(_0x4a2d33,_0xe9d0cb){return db['Trunk'][_0x4992('0x24')]({'raw':_0x5d3d33['options']?_0x5d3d33[_0x4992('0x1a')][_0x4992('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d3d33['options']?_0x5d3d33[_0x4992('0x1a')][_0x4992('0x1c')]||null:null,'attributes':_0x5d3d33[_0x4992('0x1a')]?_0x5d3d33[_0x4992('0x1a')][_0x4992('0x1d')]||null:null,'include':_0x5d3d33[_0x4992('0x1a')]?_0x5d3d33[_0x4992('0x1a')][_0x4992('0x1f')]?_[_0x4992('0x20')](_0x5d3d33['options'][_0x4992('0x1f')],function(_0xfa1435){return{'model':db[_0xfa1435[_0x4992('0x21')]],'as':_0xfa1435['as'],'attributes':_0xfa1435[_0x4992('0x1d')],'include':_0xfa1435[_0x4992('0x1f')]?_['map'](_0xfa1435[_0x4992('0x1f')],function(_0x476f31){return{'model':db[_0x476f31[_0x4992('0x21')]],'as':_0x476f31['as'],'attributes':_0x476f31[_0x4992('0x1d')],'include':_0x476f31['include']?_['map'](_0x476f31[_0x4992('0x1f')],function(_0x21fbdd){return{'model':db[_0x21fbdd[_0x4992('0x21')]],'as':_0x21fbdd['as'],'attributes':_0x21fbdd[_0x4992('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4992('0xd')](function(_0x1fb2d4){logger[_0x4992('0xe')]('ShowTrunk',_0x5d3d33);logger[_0x4992('0x11')](_0x4992('0x23'),_0x5d3d33,JSON['stringify'](_0x1fb2d4));_0x4a2d33(_0x1fb2d4);})[_0x4992('0x18')](function(_0x16250a){logger['error']('ShowTrunk',_0x16250a[_0x4992('0x16')],_0x5d3d33);_0xe9d0cb(_0x50d224[_0x4992('0x14')](0x1f4,_0x16250a['message']));});});};
\ No newline at end of file
index 6e7a621..fa75618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d05=['/presence','getPresence','/:id/avatar','getAvatar','/:id/open_tabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','post','addContacts','create','/create_many','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','single','addAvatar','/:id/login','/:id/logout','logout','/:id/unpause','unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addChatWebsites','/:id/square_projects','/:id/api_key','createApiKey','/:id','put','/:id/password','changePassword','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/whoami'];(function(_0x165cc3,_0x1b2d7d){var _0x2d5eea=function(_0x48bc18){while(--_0x48bc18){_0x165cc3['push'](_0x165cc3['shift']());}};_0x2d5eea(++_0x1b2d7d);}(_0x8d05,0x65));var _0x58d0=function(_0x196f89,_0xbec963){_0x196f89=_0x196f89-0x0;var _0x48cc99=_0x8d05[_0x196f89];return _0x48cc99;};'use strict';var multer=require('multer');var util=require(_0x58d0('0x0'));var path=require(_0x58d0('0x1'));var timeout=require(_0x58d0('0x2'));var express=require(_0x58d0('0x3'));var router=express['Router']();var fs_extra=require(_0x58d0('0x4'));var auth=require(_0x58d0('0x5'));var interaction=require(_0x58d0('0x6'));var config=require(_0x58d0('0x7'));var controller=require('./user.controller');router[_0x58d0('0x8')]('/',auth[_0x58d0('0x9')](),controller[_0x58d0('0xa')]);router[_0x58d0('0x8')](_0x58d0('0xb'),auth['isAuthenticated'](),controller[_0x58d0('0xc')]);router[_0x58d0('0x8')](_0x58d0('0xd'),auth[_0x58d0('0x9')](),controller['whoami']);router[_0x58d0('0x8')](_0x58d0('0xe'),auth[_0x58d0('0x9')](),controller[_0x58d0('0xf')]);router['get']('/:id',auth[_0x58d0('0x9')](),controller['show']);router['get'](_0x58d0('0x10'),controller[_0x58d0('0x11')]);router[_0x58d0('0x8')](_0x58d0('0x12'),auth[_0x58d0('0x9')](),controller['getOpenTabs']);router['get'](_0x58d0('0x13'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x14')]);router['get'](_0x58d0('0x15'),auth['isAuthenticated'](),controller['getQueues']);router[_0x58d0('0x8')](_0x58d0('0x16'),auth['isAuthenticated'](),controller[_0x58d0('0x17')]);router['get'](_0x58d0('0x18'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x19')]);router['get'](_0x58d0('0x1a'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x1b')]);router[_0x58d0('0x8')](_0x58d0('0x1c'),auth[_0x58d0('0x9')](),controller['getScreenRecordings']);router[_0x58d0('0x8')](_0x58d0('0x1d'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x1e')]);router[_0x58d0('0x8')](_0x58d0('0x1f'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x20')]);router['get']('/:id/mail/interactions',auth['isAuthenticated'](),controller[_0x58d0('0x21')]);router[_0x58d0('0x8')](_0x58d0('0x22'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x23')]);router[_0x58d0('0x8')](_0x58d0('0x24'),auth[_0x58d0('0x9')](),controller['getFaxInteractions']);router[_0x58d0('0x8')](_0x58d0('0x25'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x26')]);router[_0x58d0('0x8')](_0x58d0('0x27'),auth['isAuthenticated'](),controller['getTeams']);router[_0x58d0('0x8')](_0x58d0('0x28'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x29')]);router[_0x58d0('0x8')](_0x58d0('0x2a'),auth[_0x58d0('0x9')](),controller['getAgents']);router[_0x58d0('0x8')](_0x58d0('0x2b'),auth['isAuthenticated'](),controller[_0x58d0('0x2c')]);router[_0x58d0('0x8')](_0x58d0('0x2d'),auth['isAuthenticated'](),controller['getFaxAccounts']);router[_0x58d0('0x8')](_0x58d0('0x2e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x2f')]);router[_0x58d0('0x8')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x31')]);router[_0x58d0('0x8')](_0x58d0('0x32'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x33')]);router[_0x58d0('0x8')](_0x58d0('0x34'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x35')]);router['get'](_0x58d0('0x36'),auth['isAuthenticated'](),controller[_0x58d0('0x37')]);router[_0x58d0('0x8')]('/:id/square_projects',auth[_0x58d0('0x9')](),controller[_0x58d0('0x38')]);router[_0x58d0('0x8')](_0x58d0('0x39'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x3a')]);router[_0x58d0('0x8')]('/:id/api_key',auth[_0x58d0('0x9')](),controller['getApiKey']);router[_0x58d0('0x3b')](_0x58d0('0x13'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x3c')]);router[_0x58d0('0x3b')]('/',auth[_0x58d0('0x9')](),controller[_0x58d0('0x3d')]);router[_0x58d0('0x3b')](_0x58d0('0x3e'),auth[_0x58d0('0x9')](),controller['bulkCreate']);router[_0x58d0('0x3b')]('/:id/queues',auth[_0x58d0('0x9')](),controller[_0x58d0('0x3f')]);var upload=multer({'storage':multer[_0x58d0('0x40')]({'destination':function(_0x4205f9,_0x280720,_0xd091b){_0xd091b(null,path[_0x58d0('0x41')](config[_0x58d0('0x42')],_0x58d0('0x43')));},'filename':function(_0x2d284e,_0x2646a1,_0x4d95ac){_0x4d95ac(null,util['format'](_0x58d0('0x44'),Date[_0x58d0('0x45')](),_0x2646a1[_0x58d0('0x46')]));}})});router[_0x58d0('0x3b')](_0x58d0('0x10'),upload[_0x58d0('0x47')]('file'),controller[_0x58d0('0x48')]);router['post'](_0x58d0('0x49'),auth[_0x58d0('0x9')](),controller['login']);router[_0x58d0('0x3b')](_0x58d0('0x4a'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4b')]);router[_0x58d0('0x3b')]('/:id/pause',auth[_0x58d0('0x9')](),controller['pause']);router[_0x58d0('0x3b')](_0x58d0('0x4c'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4d')]);router[_0x58d0('0x3b')](_0x58d0('0x27'),auth[_0x58d0('0x9')](),controller['addTeams']);router[_0x58d0('0x3b')](_0x58d0('0x4e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x4f')]);router[_0x58d0('0x3b')](_0x58d0('0x50'),auth[_0x58d0('0x9')](),controller['addMailInteractions']);router[_0x58d0('0x3b')](_0x58d0('0x51'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x52')]);router['post'](_0x58d0('0x53'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x54')]);router[_0x58d0('0x3b')](_0x58d0('0x55'),auth[_0x58d0('0x9')](),controller['addOpenchannelInteractions']);router[_0x58d0('0x3b')](_0x58d0('0x56'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x57')]);router[_0x58d0('0x3b')](_0x58d0('0x2d'),auth['isAuthenticated'](),controller[_0x58d0('0x58')]);router[_0x58d0('0x3b')](_0x58d0('0x2e'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x59')]);router[_0x58d0('0x3b')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x5a')]);router[_0x58d0('0x3b')](_0x58d0('0x32'),auth[_0x58d0('0x9')](),controller['addSmsAccounts']);router[_0x58d0('0x3b')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x58d0('0x5b')]);router[_0x58d0('0x3b')](_0x58d0('0x36'),auth[_0x58d0('0x9')](),controller['addWhatsappAccounts']);router[_0x58d0('0x3b')](_0x58d0('0x5c'),auth[_0x58d0('0x9')](),controller['addSquareProjects']);router[_0x58d0('0x3b')](_0x58d0('0x5d'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x5e')]);router['put'](_0x58d0('0x5f'),auth['isAuthenticated'](),controller['update']);router[_0x58d0('0x60')](_0x58d0('0x61'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x62')]);router[_0x58d0('0x63')](_0x58d0('0x15'),auth[_0x58d0('0x9')](),controller['removeQueues']);router[_0x58d0('0x63')](_0x58d0('0x27'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x64')]);router['delete'](_0x58d0('0x5f'),auth['isAuthenticated'](),controller[_0x58d0('0x65')]);router[_0x58d0('0x63')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0x58d0('0x66')]);router['delete'](_0x58d0('0x50'),auth['isAuthenticated'](),controller[_0x58d0('0x67')]);router['delete'](_0x58d0('0x51'),auth[_0x58d0('0x9')](),controller['removeFaxInteractions']);router[_0x58d0('0x63')]('/:id/sms_interactions',auth[_0x58d0('0x9')](),controller[_0x58d0('0x68')]);router['delete'](_0x58d0('0x55'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x69')]);router[_0x58d0('0x63')](_0x58d0('0x56'),auth['isAuthenticated'](),controller[_0x58d0('0x6a')]);router['delete'](_0x58d0('0x2d'),auth[_0x58d0('0x9')](),controller['removeFaxAccounts']);router[_0x58d0('0x63')]('/:id/mail_accounts',auth[_0x58d0('0x9')](),controller[_0x58d0('0x6b')]);router[_0x58d0('0x63')](_0x58d0('0x30'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6c')]);router[_0x58d0('0x63')](_0x58d0('0x32'),auth['isAuthenticated'](),controller[_0x58d0('0x6d')]);router[_0x58d0('0x63')](_0x58d0('0x34'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6e')]);router['delete'](_0x58d0('0x36'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x6f')]);router[_0x58d0('0x63')](_0x58d0('0x5c'),auth[_0x58d0('0x9')](),controller[_0x58d0('0x70')]);router[_0x58d0('0x63')]('/:id/api_key',auth[_0x58d0('0x9')](),controller[_0x58d0('0x71')]);module[_0x58d0('0x72')]=router;
\ No newline at end of file
+var _0x33e8=['getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getApiKey','post','/:id/contacts','addContacts','create','/create_many','bulkCreate','addQueues','join','format','now','originalname','addAvatar','/:id/login','login','/:id/logout','logout','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','/:id/api_key','createApiKey','update','/:id/password','changePassword','delete','/:id/queues','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','index','/describe','isAuthenticated','describe','/whoami','/presence','get','/:id','show','/:id/avatar','getAvatar','getQueues','getGroups','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','/:id/agents','getVoicePrefixes','/:id/mail_accounts'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x33e8,0x121));var _0x833e=function(_0x4f438b,_0x41182e){_0x4f438b=_0x4f438b-0x0;var _0x2525ce=_0x33e8[_0x4f438b];return _0x2525ce;};'use strict';var multer=require(_0x833e('0x0'));var util=require('util');var path=require(_0x833e('0x1'));var timeout=require('connect-timeout');var express=require(_0x833e('0x2'));var router=express[_0x833e('0x3')]();var fs_extra=require(_0x833e('0x4'));var auth=require(_0x833e('0x5'));var interaction=require(_0x833e('0x6'));var config=require(_0x833e('0x7'));var controller=require(_0x833e('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x833e('0x9')]);router['get'](_0x833e('0xa'),auth[_0x833e('0xb')](),controller[_0x833e('0xc')]);router['get'](_0x833e('0xd'),auth[_0x833e('0xb')](),controller['whoami']);router['get'](_0x833e('0xe'),auth[_0x833e('0xb')](),controller['getPresence']);router[_0x833e('0xf')](_0x833e('0x10'),auth[_0x833e('0xb')](),controller[_0x833e('0x11')]);router[_0x833e('0xf')](_0x833e('0x12'),controller[_0x833e('0x13')]);router[_0x833e('0xf')]('/:id/open_tabs',auth[_0x833e('0xb')](),controller['getOpenTabs']);router['get']('/:id/contacts',auth[_0x833e('0xb')](),controller['getContacts']);router[_0x833e('0xf')]('/:id/queues',auth[_0x833e('0xb')](),controller[_0x833e('0x14')]);router[_0x833e('0xf')]('/:id/queues_rt',auth[_0x833e('0xb')](),controller['getVoiceQueuesRt']);router[_0x833e('0xf')]('/:id/groups',auth[_0x833e('0xb')](),controller[_0x833e('0x15')]);router[_0x833e('0xf')]('/:id/recordings',auth[_0x833e('0xb')](),controller[_0x833e('0x16')]);router[_0x833e('0xf')](_0x833e('0x17'),auth[_0x833e('0xb')](),controller['getScreenRecordings']);router['get'](_0x833e('0x18'),auth['isAuthenticated'](),controller[_0x833e('0x19')]);router[_0x833e('0xf')]('/:id/openchannel/interactions',auth['isAuthenticated'](),controller[_0x833e('0x1a')]);router['get'](_0x833e('0x1b'),auth[_0x833e('0xb')](),controller[_0x833e('0x1c')]);router['get'](_0x833e('0x1d'),auth['isAuthenticated'](),controller[_0x833e('0x1e')]);router[_0x833e('0xf')](_0x833e('0x1f'),auth[_0x833e('0xb')](),controller[_0x833e('0x20')]);router[_0x833e('0xf')](_0x833e('0x21'),auth['isAuthenticated'](),controller[_0x833e('0x22')]);router[_0x833e('0xf')](_0x833e('0x23'),auth['isAuthenticated'](),controller[_0x833e('0x24')]);router[_0x833e('0xf')](_0x833e('0x25'),auth[_0x833e('0xb')](),controller['getLists']);router[_0x833e('0xf')](_0x833e('0x26'),auth['isAuthenticated'](),controller['getAgents']);router[_0x833e('0xf')]('/:id/prefixes',auth[_0x833e('0xb')](),controller[_0x833e('0x27')]);router[_0x833e('0xf')]('/:id/fax_accounts',auth[_0x833e('0xb')](),controller['getFaxAccounts']);router[_0x833e('0xf')](_0x833e('0x28'),auth['isAuthenticated'](),controller[_0x833e('0x29')]);router[_0x833e('0xf')](_0x833e('0x2a'),auth[_0x833e('0xb')](),controller[_0x833e('0x2b')]);router[_0x833e('0xf')](_0x833e('0x2c'),auth[_0x833e('0xb')](),controller[_0x833e('0x2d')]);router[_0x833e('0xf')](_0x833e('0x2e'),auth[_0x833e('0xb')](),controller[_0x833e('0x2f')]);router[_0x833e('0xf')](_0x833e('0x30'),auth['isAuthenticated'](),controller[_0x833e('0x31')]);router['get'](_0x833e('0x32'),auth[_0x833e('0xb')](),controller[_0x833e('0x33')]);router[_0x833e('0xf')](_0x833e('0x34'),auth[_0x833e('0xb')](),controller['getScheduledCalls']);router['get']('/:id/api_key',auth[_0x833e('0xb')](),controller[_0x833e('0x35')]);router[_0x833e('0x36')](_0x833e('0x37'),auth[_0x833e('0xb')](),controller[_0x833e('0x38')]);router[_0x833e('0x36')]('/',auth[_0x833e('0xb')](),controller[_0x833e('0x39')]);router[_0x833e('0x36')](_0x833e('0x3a'),auth['isAuthenticated'](),controller[_0x833e('0x3b')]);router[_0x833e('0x36')]('/:id/queues',auth[_0x833e('0xb')](),controller[_0x833e('0x3c')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3c9eb0,_0x1eff58,_0x2727f2){_0x2727f2(null,path[_0x833e('0x3d')](config['root'],'server/files/images/'));},'filename':function(_0x5897b2,_0x499e24,_0x16aa2e){_0x16aa2e(null,util[_0x833e('0x3e')]('%s-%s',Date[_0x833e('0x3f')](),_0x499e24[_0x833e('0x40')]));}})});router[_0x833e('0x36')](_0x833e('0x12'),upload['single']('file'),controller[_0x833e('0x41')]);router['post'](_0x833e('0x42'),auth[_0x833e('0xb')](),controller[_0x833e('0x43')]);router[_0x833e('0x36')](_0x833e('0x44'),auth[_0x833e('0xb')](),controller[_0x833e('0x45')]);router['post']('/:id/pause',auth['isAuthenticated'](),controller[_0x833e('0x46')]);router['post'](_0x833e('0x47'),auth['isAuthenticated'](),controller[_0x833e('0x48')]);router['post']('/:id/teams',auth[_0x833e('0xb')](),controller[_0x833e('0x49')]);router['post'](_0x833e('0x4a'),auth[_0x833e('0xb')](),controller[_0x833e('0x4b')]);router['post'](_0x833e('0x4c'),auth[_0x833e('0xb')](),controller[_0x833e('0x4d')]);router['post']('/:id/fax_interactions',auth[_0x833e('0xb')](),controller[_0x833e('0x4e')]);router['post'](_0x833e('0x4f'),auth[_0x833e('0xb')](),controller[_0x833e('0x50')]);router[_0x833e('0x36')](_0x833e('0x51'),auth[_0x833e('0xb')](),controller[_0x833e('0x52')]);router[_0x833e('0x36')](_0x833e('0x53'),auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0x833e('0x36')](_0x833e('0x54'),auth[_0x833e('0xb')](),controller[_0x833e('0x55')]);router[_0x833e('0x36')](_0x833e('0x28'),auth['isAuthenticated'](),controller[_0x833e('0x56')]);router[_0x833e('0x36')](_0x833e('0x2a'),auth[_0x833e('0xb')](),controller['addOpenchannelAccounts']);router['post'](_0x833e('0x2c'),auth[_0x833e('0xb')](),controller['addSmsAccounts']);router[_0x833e('0x36')](_0x833e('0x2e'),auth[_0x833e('0xb')](),controller[_0x833e('0x57')]);router[_0x833e('0x36')](_0x833e('0x30'),auth[_0x833e('0xb')](),controller[_0x833e('0x58')]);router['post'](_0x833e('0x32'),auth[_0x833e('0xb')](),controller[_0x833e('0x59')]);router['post'](_0x833e('0x5a'),auth[_0x833e('0xb')](),controller[_0x833e('0x5b')]);router['put'](_0x833e('0x10'),auth[_0x833e('0xb')](),controller[_0x833e('0x5c')]);router['put'](_0x833e('0x5d'),auth[_0x833e('0xb')](),controller[_0x833e('0x5e')]);router[_0x833e('0x5f')](_0x833e('0x60'),auth[_0x833e('0xb')](),controller[_0x833e('0x61')]);router[_0x833e('0x5f')]('/:id/teams',auth[_0x833e('0xb')](),controller[_0x833e('0x62')]);router['delete']('/:id',auth[_0x833e('0xb')](),controller['destroy']);router[_0x833e('0x5f')](_0x833e('0x4a'),auth[_0x833e('0xb')](),controller[_0x833e('0x63')]);router[_0x833e('0x5f')]('/:id/mail_interactions',auth[_0x833e('0xb')](),controller[_0x833e('0x64')]);router['delete']('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0x833e('0x65')]);router[_0x833e('0x5f')](_0x833e('0x4f'),auth[_0x833e('0xb')](),controller[_0x833e('0x66')]);router['delete'](_0x833e('0x51'),auth[_0x833e('0xb')](),controller[_0x833e('0x67')]);router['delete']('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0x833e('0x68')]);router[_0x833e('0x5f')]('/:id/fax_accounts',auth[_0x833e('0xb')](),controller[_0x833e('0x69')]);router['delete']('/:id/mail_accounts',auth[_0x833e('0xb')](),controller['removeMailAccounts']);router[_0x833e('0x5f')](_0x833e('0x2a'),auth[_0x833e('0xb')](),controller[_0x833e('0x6a')]);router['delete'](_0x833e('0x2c'),auth[_0x833e('0xb')](),controller['removeSmsAccounts']);router['delete'](_0x833e('0x2e'),auth[_0x833e('0xb')](),controller[_0x833e('0x6b')]);router[_0x833e('0x5f')](_0x833e('0x30'),auth['isAuthenticated'](),controller[_0x833e('0x6c')]);router[_0x833e('0x5f')](_0x833e('0x32'),auth[_0x833e('0xb')](),controller[_0x833e('0x6d')]);router[_0x833e('0x5f')](_0x833e('0x5a'),auth[_0x833e('0xb')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
index 7d3a959..851e1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb81=['dynamic','friend','peer','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','nonat','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','TEXT','showWebBar','get','isArray','avpf','force_avp','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','icesupport','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','blocked','loginAttempts','blockedAt','sequelize','moment','lodash','setDataValue','name','defaultuser','STRING','fullname','callerid','\x22%s\x22\x20<%s>','email','toLowerCase','ENUM','user','agent','telephone','INTEGER','internal','accountcode','format','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE'];(function(_0x1cfb6e,_0x33de88){var _0x12d65c=function(_0x398e76){while(--_0x398e76){_0x1cfb6e['push'](_0x1cfb6e['shift']());}};_0x12d65c(++_0x33de88);}(_0xcb81,0x154));var _0x1cb8=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xcb81[_0x26b8b5];return _0x2150a9;};'use strict';var Sequelize=require(_0x1cb8('0x0'));var moment=require(_0x1cb8('0x1'));var util=require('util');var _=require(_0x1cb8('0x2'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x38c3ea){this[_0x1cb8('0x3')](_0x1cb8('0x4'),_0x38c3ea);this[_0x1cb8('0x3')](_0x1cb8('0x5'),_0x38c3ea);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'set':function(_0x2ac2d6){this['setDataValue'](_0x1cb8('0x7'),_0x2ac2d6);this[_0x1cb8('0x3')](_0x1cb8('0x8'),util['format'](_0x1cb8('0x9'),_0x2ac2d6,this['getDataValue']('internal')));}},'alias':{'type':Sequelize[_0x1cb8('0x6')]},'email':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'unique':_0x1cb8('0xa'),'validate':{'isEmail':!![]},'set':function(_0x1671be){if(_0x1671be){this[_0x1cb8('0x3')](_0x1cb8('0xa'),_0x1671be[_0x1cb8('0xb')]());}}},'role':{'type':Sequelize[_0x1cb8('0xc')]('admin',_0x1cb8('0xd'),_0x1cb8('0xe'),_0x1cb8('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':![],'unique':_0x1cb8('0x11'),'set':function(_0xcb6ad1){this[_0x1cb8('0x3')](_0x1cb8('0x11'),_0xcb6ad1);this[_0x1cb8('0x3')](_0x1cb8('0x12'),_0xcb6ad1);this[_0x1cb8('0x3')]('callerid',util[_0x1cb8('0x13')]('\x22%s\x22\x20<%s>',this[_0x1cb8('0x14')](_0x1cb8('0x7')),_0xcb6ad1));}},'salt':{'type':Sequelize[_0x1cb8('0x6')]},'phone':{'type':Sequelize[_0x1cb8('0x6')]},'mobile':{'type':Sequelize[_0x1cb8('0x6')]},'address':{'type':Sequelize[_0x1cb8('0x6')]},'zipcode':{'type':Sequelize[_0x1cb8('0x6')]},'userpic':{'type':Sequelize[_0x1cb8('0x6')]},'city':{'type':Sequelize[_0x1cb8('0x6')]},'country':{'type':Sequelize[_0x1cb8('0x6')]},'online':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb8('0x16')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x1cb8('0x17')},'lastPauseAt':{'type':Sequelize[_0x1cb8('0x16')]},'chatCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x1cb8('0x10')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb8('0x10')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'host':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x18')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x1cb8('0x10')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x19'),_0x1cb8('0xd'),_0x1cb8('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x1b')},'callingpres':{'type':Sequelize[_0x1cb8('0xc')]('ALLOWED_NOT_SCREENED',_0x1cb8('0x1c'),_0x1cb8('0x1d'),_0x1cb8('0x1e'),'PROHIB_NOT_SCREENED',_0x1cb8('0x1f'),_0x1cb8('0x20'),_0x1cb8('0x21')),'allowNull':!![]},'deny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x22'),'set':function(_0x18fe1b){this[_0x1cb8('0x3')](_0x1cb8('0x23'),_0x18fe1b?_0x18fe1b[_0x1cb8('0x24')](','):null);},'get':function(){return this[_0x1cb8('0x14')]('transport')?this['getDataValue'](_0x1cb8('0x23'))[_0x1cb8('0x25')](','):null;},'comment':_0x1cb8('0x26')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0x1cb8('0x27'),_0x1cb8('0x28'),_0x1cb8('0x29'),_0x1cb8('0x2a')),'allowNull':!![],'defaultValue':_0x1cb8('0x2b')},'directmedia':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no',_0x1cb8('0x2d'),'update',_0x1cb8('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'defaultValue':_0x1cb8('0x2f'),'set':function(_0x2ad7f6){this[_0x1cb8('0x3')]('nat',_0x2ad7f6?_0x2ad7f6[_0x1cb8('0x24')](','):null);},'get':function(){return this[_0x1cb8('0x14')]('nat')?this[_0x1cb8('0x14')](_0x1cb8('0x30'))[_0x1cb8('0x25')](','):null;},'comment':_0x1cb8('0x31')},'callgroup':{'type':Sequelize[_0x1cb8('0x6')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x1cb8('0x6')]},'namedpickupgroup':{'type':Sequelize[_0x1cb8('0x6')]},'language':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':![],'defaultValue':_0x1cb8('0x32'),'set':function(_0x328f7e){this[_0x1cb8('0x3')]('allow',_0x328f7e?_0x328f7e['join'](';'):_0x1cb8('0x32'));},'get':function(){return this[_0x1cb8('0x14')](_0x1cb8('0x33'))?this[_0x1cb8('0x14')](_0x1cb8('0x33'))[_0x1cb8('0x25')](';'):null;},'comment':_0x1cb8('0x34')},'autoframing':{'type':Sequelize[_0x1cb8('0xc')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![],'set':function(_0x101a35){this[_0x1cb8('0x3')](_0x1cb8('0x35'),_0x101a35?_0x101a35['join'](','):null);},'get':function(){return this[_0x1cb8('0x14')]('insecure')?this[_0x1cb8('0x14')](_0x1cb8('0x35'))['split'](','):null;},'comment':_0x1cb8('0x36')},'trustrpid':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1cb8('0xc')]('yes','no',_0x1cb8('0x37')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb8('0x38')},'amaflags':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no',_0x1cb8('0x39')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x3a'),_0x1cb8('0x3b'),_0x1cb8('0x3c')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x3d'),_0x1cb8('0x3e')),'allowNull':!![],'defaultValue':_0x1cb8('0x3e')},'t38pt_usertpsource':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':_0x1cb8('0x2c')},'keepalive':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no',_0x1cb8('0x3f'),_0x1cb8('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x41'),_0x1cb8('0x42'),_0x1cb8('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb8('0x10')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb8('0xc')]('yes','no',_0x1cb8('0x2d'),'update',_0x1cb8('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x1cb8('0x16')]},'passwordResetAt':{'type':Sequelize[_0x1cb8('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x1cb8('0x45')]},'showWebBar':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0,'set':function(_0x1396fc){this[_0x1cb8('0x3')](_0x1cb8('0x46'),_0x1396fc);var _0x13661e=this[_0x1cb8('0x47')]({'plain':!![]});switch(_0x1396fc){case 0x0:case 0x1:var _0x451984=_0x13661e[_0x1cb8('0x23')]?_[_0x1cb8('0x48')](_0x13661e[_0x1cb8('0x23')])?_0x13661e['transport'][_0x1cb8('0x24')]():_0x13661e[_0x1cb8('0x23')]:_0x1cb8('0x22');if(_0x451984==='wss'){_0x451984=_0x1cb8('0x22');}this[_0x1cb8('0x3')](_0x1cb8('0x23'),_0x451984);this[_0x1cb8('0x3')]('encryption','no');this[_0x1cb8('0x3')](_0x1cb8('0x49'),null);this['setDataValue'](_0x1cb8('0x4a'),null);this[_0x1cb8('0x3')]('icesupport',null);this[_0x1cb8('0x3')](_0x1cb8('0x4b'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4c'),null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x1cb8('0x4d'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4e'),null);this[_0x1cb8('0x3')](_0x1cb8('0x4f'),'no');break;case 0x2:this[_0x1cb8('0x3')](_0x1cb8('0x23'),'wss');this[_0x1cb8('0x3')](_0x1cb8('0x50'),_0x1cb8('0x2c'));this['setDataValue'](_0x1cb8('0x49'),_0x1cb8('0x2c'));this[_0x1cb8('0x3')](_0x1cb8('0x4a'),_0x1cb8('0x2c'));this['setDataValue'](_0x1cb8('0x51'),_0x1cb8('0x2c'));this[_0x1cb8('0x3')]('dtlsenable',_0x1cb8('0x2c'));this[_0x1cb8('0x3')]('dtlsverify','no');this[_0x1cb8('0x3')]('dtlssetup','actpass');this[_0x1cb8('0x3')](_0x1cb8('0x4d'),_0x13661e[_0x1cb8('0x4d')]||'/etc/pki/tls/certs/motion.crt');this['setDataValue']('dtlsprivatekey',_0x13661e[_0x1cb8('0x4e')]||_0x1cb8('0x52'));this[_0x1cb8('0x3')](_0x1cb8('0x4f'),_0x1cb8('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0x1cb8('0x45')],'set':function(_0x144e69){this['setDataValue']('permissions',_0x144e69?_0x144e69['join'](','):[]);},'get':function(){return this['getDataValue'](_0x1cb8('0x53'))?_['map'](this[_0x1cb8('0x14')]('permissions')['split'](','),function(_0x53fa60){return parseInt(_0x53fa60,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb8('0xc')](_0x1cb8('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x1cb8('0x6')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb8('0x54')],'get':function(){return this[_0x1cb8('0x14')](_0x1cb8('0x55'))?this[_0x1cb8('0x14')](_0x1cb8('0x55')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x1cb8('0x6')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb8('0x6')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![],'set':function(_0x34094c){if(typeof _0x34094c==='string'){var _0x2f2c87=_0x34094c==='1'?!![]:_0x34094c==='0'?![]:_0x34094c==='true'?!![]:_0x34094c===_0x1cb8('0x56')?![]:![];this[_0x1cb8('0x3')](_0x1cb8('0x57'),_0x2f2c87);}else{this['setDataValue'](_0x1cb8('0x57'),_0x34094c);}}},'blocked':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![],'set':function(_0x5d5c95){this['setDataValue'](_0x1cb8('0x58'),_0x5d5c95);if(_0x5d5c95===!![]){this[_0x1cb8('0x3')]('blockedAt',moment());this[_0x1cb8('0x3')](_0x1cb8('0x59'),0x0);}else{this[_0x1cb8('0x3')](_0x1cb8('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb8('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x1cb8('0x10')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb8('0x10')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb8('0x15')],'defaultValue':![]}};
\ No newline at end of file
+var _0x833b=['certificate','active','passive','actpass','update','update,nonat','TEXT','showWebBar','get','wss','encryption','force_avp','icesupport','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','avpf','dtlsenable','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','loginAttempts','blockedAt','moment','lodash','STRING','setDataValue','name','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','ENUM','peer','friend','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','nonat','outgoing','yes','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','refuse','originate','uas','fingerprint'];(function(_0x415470,_0x8c567){var _0x5618c8=function(_0x2831f8){while(--_0x2831f8){_0x415470['push'](_0x415470['shift']());}};_0x5618c8(++_0x8c567);}(_0x833b,0x131));var _0xb833=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x833b[_0x31a371];return _0x2a5bd6;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb833('0x0'));var util=require('util');var _=require(_0xb833('0x1'));module['exports']={'name':{'type':Sequelize[_0xb833('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x66e74c){this[_0xb833('0x3')](_0xb833('0x4'),_0x66e74c);this[_0xb833('0x3')](_0xb833('0x5'),_0x66e74c);},'comment':_0xb833('0x6')},'fullname':{'type':Sequelize[_0xb833('0x2')],'allowNull':![],'set':function(_0x4eaff4){this[_0xb833('0x3')](_0xb833('0x7'),_0x4eaff4);this[_0xb833('0x3')](_0xb833('0x8'),util[_0xb833('0x9')](_0xb833('0xa'),_0x4eaff4,this[_0xb833('0xb')]('internal')));}},'alias':{'type':Sequelize[_0xb833('0x2')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb833('0xc'),'validate':{'isEmail':!![]},'set':function(_0x2dc315){if(_0x2dc315){this[_0xb833('0x3')](_0xb833('0xc'),_0x2dc315['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0xb833('0xd'),_0xb833('0xe'),'agent',_0xb833('0xf')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xb833('0x2')],'defaultValue':_0xb833('0x10')},'internal':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':![],'unique':_0xb833('0x12'),'set':function(_0x2f08cb){this[_0xb833('0x3')](_0xb833('0x12'),_0x2f08cb);this[_0xb833('0x3')]('accountcode',_0x2f08cb);this[_0xb833('0x3')](_0xb833('0x8'),util['format']('\x22%s\x22\x20<%s>',this[_0xb833('0xb')]('fullname'),_0x2f08cb));}},'salt':{'type':Sequelize[_0xb833('0x2')]},'phone':{'type':Sequelize[_0xb833('0x2')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xb833('0x2')]},'zipcode':{'type':Sequelize[_0xb833('0x2')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xb833('0x2')]},'country':{'type':Sequelize[_0xb833('0x2')]},'online':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xb833('0x2')],'defaultValue':_0xb833('0x14')},'lastPauseAt':{'type':Sequelize[_0xb833('0x15')]},'chatCapacity':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xb833('0x13')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xb833('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xb833('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'description':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xb833('0x16')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0xb833('0x11')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xb833('0x17')]('friend',_0xb833('0xe'),_0xb833('0x18')),'allowNull':!![],'defaultValue':_0xb833('0x19')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0xb833('0x17')]('ALLOWED_NOT_SCREENED',_0xb833('0x1a'),_0xb833('0x1b'),_0xb833('0x1c'),_0xb833('0x1d'),_0xb833('0x1e'),_0xb833('0x1f'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'secret':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'transport':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![],'defaultValue':_0xb833('0x20'),'set':function(_0x593e63){this['setDataValue']('transport',_0x593e63?_0x593e63[_0xb833('0x21')](','):null);},'get':function(){return this[_0xb833('0xb')](_0xb833('0x22'))?this[_0xb833('0xb')](_0xb833('0x22'))[_0xb833('0x23')](','):null;},'comment':_0xb833('0x24')},'dtmfmode':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x25'),_0xb833('0x26'),_0xb833('0x27'),_0xb833('0x28'),_0xb833('0x29')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xb833('0x17')]('yes','no',_0xb833('0x2a'),'update',_0xb833('0x2b')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'nat':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x2d326b){this[_0xb833('0x3')](_0xb833('0x2d'),_0x2d326b?_0x2d326b['join'](','):null);},'get':function(){return this[_0xb833('0xb')](_0xb833('0x2d'))?this[_0xb833('0xb')](_0xb833('0x2d'))[_0xb833('0x23')](','):null;},'comment':_0xb833('0x2e')},'callgroup':{'type':Sequelize[_0xb833('0x2')]},'namedcallgroup':{'type':Sequelize[_0xb833('0x2')]},'pickupgroup':{'type':Sequelize[_0xb833('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xb833('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xb833('0x2')]},'disallow':{'type':Sequelize[_0xb833('0x2')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb833('0x2f'),'set':function(_0x4d2676){this[_0xb833('0x3')]('allow',_0x4d2676?_0x4d2676[_0xb833('0x21')](';'):_0xb833('0x2f'));},'get':function(){return this[_0xb833('0xb')](_0xb833('0x30'))?this[_0xb833('0xb')](_0xb833('0x30'))['split'](';'):null;},'comment':_0xb833('0x31')},'autoframing':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![],'set':function(_0x1a5b95){this['setDataValue'](_0xb833('0x32'),_0x1a5b95?_0x1a5b95[_0xb833('0x21')](','):null);},'get':function(){return this[_0xb833('0xb')](_0xb833('0x32'))?this['getDataValue']('insecure')[_0xb833('0x23')](','):null;},'comment':_0xb833('0x33')},'trustrpid':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xb833('0x17')]('yes','no',_0xb833('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![],'defaultValue':_0xb833('0x35')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':_0xb833('0x2c')},'busylevel':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'template':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0xb833('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xb833('0x17')]('accept',_0xb833('0x37'),_0xb833('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xb833('0x17')]('uac',_0xb833('0x39')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':_0xb833('0x2c')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xb833('0x17')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no',_0xb833('0x3a'),_0xb833('0x3b')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xb833('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0xb833('0x3c'),_0xb833('0x3d'),_0xb833('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0xb833('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no',_0xb833('0x2a'),_0xb833('0x3f'),_0xb833('0x40')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xb833('0x2')]},'resetPasswordExpires':{'type':Sequelize[_0xb833('0x15')]},'passwordResetAt':{'type':Sequelize[_0xb833('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xb833('0x41')]},'showWebBar':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x0,'set':function(_0x338ad7){this[_0xb833('0x3')](_0xb833('0x42'),_0x338ad7);var _0x12cb88=this[_0xb833('0x43')]({'plain':!![]});switch(_0x338ad7){case 0x0:case 0x1:var _0x29778a=_0x12cb88[_0xb833('0x22')]?_['isArray'](_0x12cb88[_0xb833('0x22')])?_0x12cb88[_0xb833('0x22')]['join']():_0x12cb88[_0xb833('0x22')]:_0xb833('0x20');if(_0x29778a===_0xb833('0x44')){_0x29778a='udp';}this['setDataValue']('transport',_0x29778a);this[_0xb833('0x3')](_0xb833('0x45'),'no');this[_0xb833('0x3')]('avpf',null);this['setDataValue'](_0xb833('0x46'),null);this[_0xb833('0x3')](_0xb833('0x47'),null);this[_0xb833('0x3')]('dtlsenable',null);this[_0xb833('0x3')](_0xb833('0x48'),null);this[_0xb833('0x3')](_0xb833('0x49'),null);this[_0xb833('0x3')](_0xb833('0x4a'),null);this[_0xb833('0x3')]('dtlsprivatekey',null);this[_0xb833('0x3')](_0xb833('0x4b'),'no');break;case 0x2:this[_0xb833('0x3')](_0xb833('0x22'),_0xb833('0x44'));this[_0xb833('0x3')](_0xb833('0x45'),_0xb833('0x2c'));this[_0xb833('0x3')](_0xb833('0x4c'),_0xb833('0x2c'));this['setDataValue'](_0xb833('0x46'),_0xb833('0x2c'));this[_0xb833('0x3')](_0xb833('0x47'),_0xb833('0x2c'));this['setDataValue'](_0xb833('0x4d'),_0xb833('0x2c'));this[_0xb833('0x3')](_0xb833('0x48'),'no');this[_0xb833('0x3')](_0xb833('0x49'),_0xb833('0x3e'));this[_0xb833('0x3')](_0xb833('0x4a'),_0x12cb88[_0xb833('0x4a')]||_0xb833('0x4e'));this[_0xb833('0x3')](_0xb833('0x4f'),_0x12cb88[_0xb833('0x4f')]||'/etc/pki/tls/private/motion.key');this[_0xb833('0x3')]('rtcp_mux',_0xb833('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0xb833('0x41')],'set':function(_0x4237ef){this[_0xb833('0x3')](_0xb833('0x50'),_0x4237ef?_0x4237ef[_0xb833('0x21')](','):[]);},'get':function(){return this[_0xb833('0xb')]('permissions')?_[_0xb833('0x51')](this[_0xb833('0xb')](_0xb833('0x50'))['split'](','),function(_0x3d1efa){return parseInt(_0x3d1efa,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xb833('0x2')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xb833('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xb833('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xb833('0x11')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xb833('0x17')](_0xb833('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xb833('0x2')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xb833('0x52')],'get':function(){return this[_0xb833('0xb')](_0xb833('0x53'))?this[_0xb833('0xb')](_0xb833('0x53')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xb833('0x2')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xb833('0x2')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![],'set':function(_0x55af31){if(typeof _0x55af31===_0xb833('0x54')){var _0x14e10c=_0x55af31==='1'?!![]:_0x55af31==='0'?![]:_0x55af31===_0xb833('0x55')?!![]:_0x55af31===_0xb833('0x56')?![]:![];this['setDataValue']('screenrecording',_0x14e10c);}else{this[_0xb833('0x3')](_0xb833('0x57'),_0x55af31);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x218a57){this[_0xb833('0x3')](_0xb833('0x58'),_0x218a57);if(_0x218a57===!![]){this[_0xb833('0x3')]('blockedAt',moment());this[_0xb833('0x3')](_0xb833('0x59'),0x0);}else{this['setDataValue'](_0xb833('0x5a'),null);}}},'blockedAt':{'type':Sequelize[_0xb833('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xb833('0x13')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xb833('0x11')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xb833('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0xb833('0x13')],'defaultValue':![]}};
\ No newline at end of file
index 30b3fbd..6d7f0a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['Sms','Openchannel','removeAgent','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','spread','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$or','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$like','$notLike','$iLike','$contained','$any','firstName','lastName','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','removeApiKey','apiKeyIat','whoami','resolve','teams','queues','inbound','lower','col','desc','asc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','ringing','voiceStatus','slice','ui.','ui.createdAt','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','bluebird','util','path','lodash','squel','jayson/promise','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','http','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','user','agent','Telephones','telephone','filter','ignore','map','value','includes','role','find','name','stack','index','User','rawAttributes','type','key','password','salt','getOptions','where','query','includeAll','attributes','openTabs','true','rows','length','push','chat','dataValues','sms','mail','openchannel','whatsapp','all','model','differenceBy','filters','intersection','fields','include','merge','body','params','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','102','103','113','110','104','107','108','109','100','115','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','create','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','checkUserLimits','each','isEmpty','compact','changePassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','emit','Queue:save','voice','VoiceQueue','findAll','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','QueueId','Queue:remove','addAvatar','userpic','filename','join','root','server/files/images/logos/default_profile.png','download','server/files/images/','getOpenTabs','fax','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','keys','order','sort','pick','options','hasOwnProperty','CmList','List','Tag','Tags','color','tag','nolimit','getQueues','Unknown\x20channel','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','FaxInteraction','getWhatsappInteractions','login','phone','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','getChannels','YYYY-MM-DD\x20HH:mm:ss','forEach','device','PAUSE','LOGININPAUSE','isMiddleware','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','%s%s','getTeams','Team','addTeams','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','getOpenchannelQueues','flatten','transaction','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams'];(function(_0xb900c7,_0x305326){var _0x3d40f3=function(_0xae883f){while(--_0xae883f){_0xb900c7['push'](_0xb900c7['shift']());}};_0x3d40f3(++_0x305326);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5077df,_0x22c829){_0x5077df=_0x5077df-0x0;var _0x10d6d9=_0x5f2f[_0x5077df];return _0x10d6d9;};'use strict';var moment=require(_0xf5f2('0x0'));var BPromise=require(_0xf5f2('0x1'));var util=require(_0xf5f2('0x2'));var path=require(_0xf5f2('0x3'));var fs=require('fs');var _=require(_0xf5f2('0x4'));var squel=require(_0xf5f2('0x5'));var jayson=require(_0xf5f2('0x6'));var Redis=require(_0xf5f2('0x7'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var logger=require(_0xf5f2('0x8'))(_0xf5f2('0x9'));var utils=require(_0xf5f2('0xa'));var config=require(_0xf5f2('0xb'));var licenseUtil=require(_0xf5f2('0xc'));var db=require(_0xf5f2('0xd'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xf5f2('0xe')]));require(_0xf5f2('0xf'))[_0xf5f2('0x10')](socket);config['redis']=_[_0xf5f2('0x11')](config[_0xf5f2('0xe')],{'host':_0xf5f2('0x12'),'port':0x18eb});var client=jayson['client'][_0xf5f2('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4ebbbe,_0x53fb33,_0xa7e1a6,_0x151aba){return new BPromise(function(_0x4b78cd,_0x336f6b){var _0x14b51f=_0x151aba||client;return _0x14b51f[_0xf5f2('0x14')](_0x4ebbbe,_0xa7e1a6)[_0xf5f2('0x15')](function(_0x59bb6c){logger[_0xf5f2('0x16')]('User,\x20%s,\x20%s',_0x53fb33,_0xf5f2('0x17'));logger[_0xf5f2('0x18')](_0xf5f2('0x19'),_0x53fb33,_0xf5f2('0x17'),JSON[_0xf5f2('0x1a')](_0x59bb6c));if(_0x59bb6c['error']){if(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===0x1f4){logger[_0xf5f2('0x1b')](_0xf5f2('0x1d'),_0x53fb33,_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);return _0x336f6b(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);}logger[_0xf5f2('0x1b')](_0xf5f2('0x1d'),_0x53fb33,_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);return _0x4b78cd(_0x59bb6c[_0xf5f2('0x1b')][_0xf5f2('0x1e')]);}else{logger[_0xf5f2('0x16')](_0xf5f2('0x1d'),_0x53fb33,_0xf5f2('0x17'));_0x4b78cd(_0x59bb6c['result'][_0xf5f2('0x1e')]);}})[_0xf5f2('0x1f')](function(_0x49dac2){logger['error'](_0xf5f2('0x1d'),_0x53fb33,_0x49dac2);_0x336f6b(_0x49dac2);});});}function respondWithStatusCode(_0x388e6c,_0x4ae323){_0x4ae323=_0x4ae323||0xcc;return function(_0x45b74f){if(_0x45b74f){return _0x388e6c[_0xf5f2('0x20')](_0x4ae323);}return _0x388e6c[_0xf5f2('0x21')](_0x4ae323)[_0xf5f2('0x22')]();};}function respondWithResult(_0x36f1cb,_0x4c691a){_0x4c691a=_0x4c691a||0xc8;return function(_0x21cd91){if(_0x21cd91){return _0x36f1cb[_0xf5f2('0x21')](_0x4c691a)[_0xf5f2('0x23')](_0x21cd91);}};}function respondWithFilteredResult(_0x2833fe,_0x287ad5){return function(_0x5bdf4a){if(_0x5bdf4a){var _0x529f07=typeof _0x287ad5[_0xf5f2('0x24')]===_0xf5f2('0x25')&&typeof _0x287ad5[_0xf5f2('0x26')]===_0xf5f2('0x25');var _0xf6c58d=_0x5bdf4a[_0xf5f2('0x27')];var _0x13a3be=_0x529f07?0x0:_0x287ad5[_0xf5f2('0x24')];var _0x294414=_0x529f07?_0x5bdf4a['count']:_0x287ad5[_0xf5f2('0x24')]+_0x287ad5[_0xf5f2('0x26')];var _0x375ca8;if(_0x294414>=_0xf6c58d){_0x294414=_0xf6c58d;_0x375ca8=0xc8;}else{_0x375ca8=0xce;}_0x2833fe[_0xf5f2('0x21')](_0x375ca8);return _0x2833fe[_0xf5f2('0x28')](_0xf5f2('0x29'),_0x13a3be+'-'+_0x294414+'/'+_0xf6c58d)['json'](_0x5bdf4a);}return null;};}function saveUpdates(_0x53cb96){return function(_0x22c826){if(_0x22c826){return _0x22c826[_0xf5f2('0x2a')](_0x53cb96)[_0xf5f2('0x15')](function(_0x5027ab){return _0x5027ab;});}return null;};}function removeEntity(_0x5a2c7e){return function(_0x29571b){if(_0x29571b){return _0x29571b[_0xf5f2('0x2b')]()[_0xf5f2('0x15')](function(){var _0x153924=_0x29571b[_0xf5f2('0x2c')]({'plain':!![]});if(_0x153924['role']==='admin')return;var _0x2f4778=[{'name':'Users','value':_0xf5f2('0x2d'),'ignore':!![]},{'name':'Agents','value':_0xf5f2('0x2e'),'ignore':![]},{'name':_0xf5f2('0x2f'),'value':_0xf5f2('0x30'),'ignore':![]}];var _0x428770=_(_0x2f4778)[_0xf5f2('0x31')](_0xf5f2('0x32'))[_0xf5f2('0x33')](_0xf5f2('0x34'))['value']();if(_[_0xf5f2('0x35')](_0x428770,_0x153924[_0xf5f2('0x36')])){return;}var _0x4590ec=_[_0xf5f2('0x37')](_0x2f4778,[_0xf5f2('0x34'),_0x153924[_0xf5f2('0x36')]])[_0xf5f2('0x38')];return db['UserProfileResource'][_0xf5f2('0x2b')]({'where':{'type':_0x4590ec,'resourceId':_0x153924['id']}})[_0xf5f2('0x15')](function(){return _0x29571b;});})['then'](function(){_0x5a2c7e[_0xf5f2('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18ae07){return function(_0x3930fb){if(!_0x3930fb){_0x18ae07[_0xf5f2('0x20')](0x194);}return _0x3930fb;};}function handleError(_0x2e3cca,_0x59a6dd){_0x59a6dd=_0x59a6dd||0x1f4;return function(_0x5a98d7){logger[_0xf5f2('0x1b')](_0x5a98d7[_0xf5f2('0x39')]);if(_0x5a98d7[_0xf5f2('0x38')]){delete _0x5a98d7['name'];}_0x2e3cca[_0xf5f2('0x21')](_0x59a6dd)['send'](_0x5a98d7);};}exports[_0xf5f2('0x3a')]=function(_0x566c47,_0x46f464){var _0x456764={},_0x5337a6={'count':0x0,'rows':[]};var _0x29694f=_(db[_0xf5f2('0x3b')][_0xf5f2('0x3c')])[_0xf5f2('0x33')](function(_0x542cd6){return{'name':_0x542cd6['fieldName'],'type':_0x542cd6[_0xf5f2('0x3d')][_0xf5f2('0x3e')]};})[_0xf5f2('0x31')](function(_0x2d4400){return!_[_0xf5f2('0x35')]([_0xf5f2('0x3f'),_0xf5f2('0x40')],_0x2d4400['name']);})[_0xf5f2('0x34')]();_0x456764=qs[_0xf5f2('0x41')](_0x29694f,_0x566c47);var _0x536501={'where':_0x456764[_0xf5f2('0x42')]};return db[_0xf5f2('0x3b')][_0xf5f2('0x27')](_0x536501)[_0xf5f2('0x15')](function(_0xd10701){_0x5337a6[_0xf5f2('0x27')]=_0xd10701;if(_0x566c47[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x456764['include']=[{'all':!![]}];}if(!_[_0xf5f2('0x35')](_0x456764[_0xf5f2('0x45')],'id')){_0x456764[_0xf5f2('0x45')]['push']('id');}return db['User']['findAll'](_0x456764);})[_0xf5f2('0x15')](function(_0x2ad13c){_0x5337a6['rows']=_0x2ad13c;if(_0x566c47[_0xf5f2('0x43')][_0xf5f2('0x46')]===_0xf5f2('0x47')){var _0x31f86c=[];for(var _0x354c34=0x0;_0x354c34<_0x5337a6[_0xf5f2('0x48')][_0xf5f2('0x49')];_0x354c34++){_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4b'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0x5337a6[_0xf5f2('0x48')][_0x354c34]['dataValues']));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs('fax',_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4e'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c['push'](get_open_tabs(_0xf5f2('0x4f'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));_0x31f86c[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0x5337a6[_0xf5f2('0x48')][_0x354c34][_0xf5f2('0x4c')]));}return BPromise[_0xf5f2('0x51')](_0x31f86c)['then'](function(_0x35dece){return _0x5337a6;});}else{return _0x5337a6;}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x46f464,_0x456764))[_0xf5f2('0x1f')](handleError(_0x46f464,null));};exports['show']=function(_0x1177ba,_0xc91b64){var _0x3179a9={'raw':![],'where':{'id':_0x1177ba['params']['id']}},_0x5e761c={};_0x5e761c[_0xf5f2('0x52')]=_[_0xf5f2('0x53')](_['keys'](db[_0xf5f2('0x3b')]['rawAttributes']),[_0xf5f2('0x3f'),'salt']);_0x5e761c[_0xf5f2('0x43')]=_['keys'](_0x1177ba[_0xf5f2('0x43')]);_0x5e761c[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x5e761c[_0xf5f2('0x52')],_0x5e761c['query']);_0x3179a9[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x5e761c['model'],qs['fields'](_0x1177ba[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3179a9['attributes']=_0x3179a9[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x3179a9[_0xf5f2('0x45')]:_0x5e761c[_0xf5f2('0x52')];if(_0x1177ba['query']['includeAll']){_0x3179a9[_0xf5f2('0x57')]=[{'all':!![]}];}_0x3179a9=_[_0xf5f2('0x58')]({},_0x3179a9,_0x1177ba['options']);if(!_[_0xf5f2('0x35')](_0x3179a9[_0xf5f2('0x45')],'id')){_0x3179a9[_0xf5f2('0x45')][_0xf5f2('0x4a')]('id');}return db[_0xf5f2('0x3b')][_0xf5f2('0x37')](_0x3179a9)[_0xf5f2('0x15')](handleEntityNotFound(_0xc91b64,null))['then'](function(_0x59e8ef){var _0x330730=[];values=_0x59e8ef;if(_0x1177ba[_0xf5f2('0x43')][_0xf5f2('0x46')]===_0xf5f2('0x47')){_0x330730[_0xf5f2('0x4a')](get_open_tabs('chat',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0x59e8ef['dataValues']));_0x330730[_0xf5f2('0x4a')](get_open_tabs('openchannel',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0x59e8ef[_0xf5f2('0x4c')]));_0x330730['push'](get_open_tabs('fax',_0x59e8ef[_0xf5f2('0x4c')]));_0x330730['push'](get_open_tabs(_0xf5f2('0x4e'),_0x59e8ef[_0xf5f2('0x4c')]));return BPromise['all'](_0x330730);}else{return values;}})[_0xf5f2('0x15')](function(_0xa4c0be){return values;})[_0xf5f2('0x15')](respondWithResult(_0xc91b64,null))['catch'](handleError(_0xc91b64,null));};exports[_0xf5f2('0x2a')]=function(_0xcf7a50,_0x42cc27){if(_0xcf7a50[_0xf5f2('0x59')]['id']){delete _0xcf7a50['body']['id'];}delete _0xcf7a50[_0xf5f2('0x59')]['role'];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0xcf7a50[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x42cc27,null))[_0xf5f2('0x15')](saveUpdates(_0xcf7a50['body'],null))[_0xf5f2('0x15')](respondWithResult(_0x42cc27,null))[_0xf5f2('0x1f')](handleError(_0x42cc27,null));};exports[_0xf5f2('0x5b')]=function(_0x212639,_0x2c5733){return db['User'][_0xf5f2('0x5b')]()['then'](respondWithResult(_0x2c5733,null))['catch'](handleError(_0x2c5733,null));};exports[_0xf5f2('0x5c')]=function(_0x4802c5,_0x10f2b8){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x4802c5[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x10f2b8,null))[_0xf5f2('0x15')](function(_0x3a53f2){if(_0x3a53f2){return _0x3a53f2[_0xf5f2('0x5c')](_0x4802c5[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x4802c5[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x10f2b8,null))[_0xf5f2('0x1f')](handleError(_0x10f2b8,null));};function validateUser(_0xb39a6e){return new BPromise(function(_0x45c7c1,_0x5a5b2b){if(_0xb39a6e[_0xf5f2('0x5f')])return _0x45c7c1(_0xb39a6e);return db['Setting'][_0xf5f2('0x60')](0x1)[_0xf5f2('0x15')](function(_0x5588cf){if(_0x5588cf[_0xf5f2('0x61')])authService[_0xf5f2('0x62')](_0xb39a6e[_0xf5f2('0x3f')]);db[_0xf5f2('0x3b')][_0xf5f2('0x63')]('internal')[_0xf5f2('0x15')](function(_0x21c107){if(_[_0xf5f2('0x64')](_0x21c107)){_0xb39a6e[_0xf5f2('0x5f')]=_0x5588cf[_0xf5f2('0x65')]||0x1;return;}if(_[_0xf5f2('0x64')](_0x5588cf['min_internal'])||_0x5588cf[_0xf5f2('0x65')]===_0x21c107){_0xb39a6e[_0xf5f2('0x5f')]=_0x21c107+0x1;return;}if(_0x5588cf['min_internal']>_0x21c107){_0xb39a6e[_0xf5f2('0x5f')]=_0x5588cf[_0xf5f2('0x65')];return;}return db[_0xf5f2('0x66')]['query']('select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)',{'type':db['sequelize'][_0xf5f2('0x67')][_0xf5f2('0x68')]})[_0xf5f2('0x15')](function(_0x450691){if(_0x450691&&_0x450691[_0xf5f2('0x49')]){for(var _0x4d878e=0x0,_0x278b76=_0x450691[_0xf5f2('0x49')];_0x4d878e<_0x278b76&&_[_0xf5f2('0x64')](_0xb39a6e[_0xf5f2('0x5f')]);_0x4d878e++){if(_0x5588cf[_0xf5f2('0x65')]<=_0x450691[_0x4d878e][_0xf5f2('0x69')]){_0xb39a6e[_0xf5f2('0x5f')]=_0x450691[_0x4d878e][_0xf5f2('0x69')];}else if(_0x5588cf[_0xf5f2('0x65')]>_0x450691[_0x4d878e][_0xf5f2('0x69')]&&_0x5588cf[_0xf5f2('0x65')]<=_0x450691[_0x4d878e]['to']){_0xb39a6e['internal']=_0x5588cf['min_internal'];}}}if(_['isNil'](_0xb39a6e[_0xf5f2('0x5f')])){_0xb39a6e[_0xf5f2('0x5f')]=_0x21c107+0x1;}return _0x45c7c1(_0xb39a6e);});});})[_0xf5f2('0x1f')](function(_0x878e8b){_0x5a5b2b(_0x878e8b);});});}function updateUser(_0x1bb752){return new BPromise(function(_0x5c6959,_0x9d943f){try{if(_0x1bb752[_0xf5f2('0x6a')]){_0x1bb752[_0xf5f2('0x6b')]=_0x1bb752[_0xf5f2('0x5f')];_0x1bb752[_0xf5f2('0x6c')]={'mailbox':_0x1bb752['internal'],'password':_0x1bb752[_0xf5f2('0x3f')],'fullname':_0x1bb752[_0xf5f2('0x6d')],'email':_0x1bb752['email']};}if(_0x1bb752[_0xf5f2('0x36')]===_0xf5f2('0x2e')){if(!_0x1bb752[_0xf5f2('0x6e')])_0x1bb752[_0xf5f2('0x6e')]=['101',_0xf5f2('0x6f'),_0xf5f2('0x70'),_0xf5f2('0x71'),_0xf5f2('0x72'),_0xf5f2('0x73'),'105','106',_0xf5f2('0x74'),_0xf5f2('0x75'),_0xf5f2('0x76'),_0xf5f2('0x77'),'111','114',_0xf5f2('0x78')];}_0x5c6959(_0x1bb752);}catch(_0x4f2fcc){_0x9d943f(_0x4f2fcc);}});}exports['create']=function(_0x4c899a,_0x57cb18){if(_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2e'))throw new Error(_0xf5f2('0x79'));if(_0x4c899a[_0xf5f2('0x59')][_0xf5f2('0x36')]===_0xf5f2('0x2d')&&_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]!==_0xf5f2('0x7a')){throw new Error(_0xf5f2('0x7b'));}if(_0x4c899a[_0xf5f2('0x59')][_0xf5f2('0x36')]===_0xf5f2('0x7a')&&_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x36')]!==_0xf5f2('0x7a')){throw new Error(_0xf5f2('0x7c'));}return licenseUtil['checkUserLimits']([_0x4c899a[_0xf5f2('0x59')]])[_0xf5f2('0x15')](function(){return validateUser(_0x4c899a[_0xf5f2('0x59')]);})[_0xf5f2('0x15')](function(_0x18c353){return updateUser(_0x18c353)[_0xf5f2('0x15')](function(_0x16491c){if(_0x16491c[_0xf5f2('0x36')]==='admin'){_0x16491c[_0xf5f2('0x7d')]=_0x4c899a['user']['settingsEnabled'];delete _0x16491c['userProfileId'];}return _0x16491c;});})['then'](function(_0x50befc){return db['User'][_0xf5f2('0x7e')](_0x50befc,{'include':[{'model':db[_0xf5f2('0x6c')],'as':_0xf5f2('0x6c')}]});})[_0xf5f2('0x15')](function(_0x145d4d){if(_0x4c899a[_0xf5f2('0x59')]['role']==='user')return _0x145d4d;if(_0x4c899a[_0xf5f2('0x2d')]['role']!==_0xf5f2('0x2d'))return _0x145d4d;return db[_0xf5f2('0x7f')]['find']({'where':{'name':_0x145d4d['role']===_0xf5f2('0x2e')?_0xf5f2('0x80'):'Telephones','userProfileId':_0x4c899a[_0xf5f2('0x2d')][_0xf5f2('0x81')]},'raw':!![]})['then'](function(_0x1774ab){if(!_0x1774ab||_0x1774ab[_0xf5f2('0x82')]!=0x0)return _0x145d4d;return db[_0xf5f2('0x83')]['create']({'name':_0x145d4d[_0xf5f2('0x38')],'resourceId':_0x145d4d['id'],'type':_0x1774ab[_0xf5f2('0x38')],'sectionId':_0x1774ab['id']},{})[_0xf5f2('0x15')](function(){return _0x145d4d;});})[_0xf5f2('0x1f')](function(_0x3e188e){logger[_0xf5f2('0x1b')](_0xf5f2('0x84'),_0x3e188e);throw _0x3e188e;});})[_0xf5f2('0x15')](respondWithResult(_0x57cb18,0xc9))[_0xf5f2('0x1f')](handleError(_0x57cb18,null));};exports[_0xf5f2('0x85')]=function(_0x191af3,_0x2601aa){var _0x6f9240=_0x191af3[_0xf5f2('0x59')];var _0xe900ea=[];if(_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2e'))throw new Error(_0xf5f2('0x79'));if(_[_0xf5f2('0x86')](_0x6f9240,[_0xf5f2('0x36'),'user'])&&_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]!=='admin'){throw new Error(_0xf5f2('0x7b'));}if(_[_0xf5f2('0x86')](_0x6f9240,['role',_0xf5f2('0x7a')])&&_0x191af3[_0xf5f2('0x2d')][_0xf5f2('0x36')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xf5f2('0x87')](_0x6f9240)[_0xf5f2('0x15')](function(){return validateUser(_0x6f9240[0x0]);})[_0xf5f2('0x15')](function(){for(var _0x5ba275=0x1;_0x5ba275<_0x6f9240['length'];_0x5ba275++){var _0x2572c0=_0x6f9240[_0x5ba275-0x1][_0xf5f2('0x5f')];if(!_0x6f9240[_0x5ba275][_0xf5f2('0x5f')])_0x6f9240[_0x5ba275]['internal']=_0x2572c0+0x1;_0xe900ea['push'](validateUser(_0x6f9240[_0x5ba275]));}return BPromise['all'](_0xe900ea);})['then'](function(){_0xe900ea=[];for(var _0x560b39=0x0;_0x560b39<_0x6f9240[_0xf5f2('0x49')];_0x560b39++){_0xe900ea['push'](updateUser(_0x6f9240[_0x560b39]));}return BPromise[_0xf5f2('0x51')](_0xe900ea);})[_0xf5f2('0x15')](function(){return BPromise[_0xf5f2('0x88')](_0x6f9240,function(_0x43a167){return db[_0xf5f2('0x3b')][_0xf5f2('0x7e')](_0x43a167,{'include':[{'model':db[_0xf5f2('0x6c')],'as':_0xf5f2('0x6c')}]})[_0xf5f2('0x15')](function(_0x27ca4a){_0x43a167['id']=_0x27ca4a['id'];return _0x43a167;});});})[_0xf5f2('0x15')](function(_0x36c3c8){if(_0x191af3[_0xf5f2('0x59')]['role']===_0xf5f2('0x2d'))return _0x36c3c8;if(_0x191af3[_0xf5f2('0x2d')]['role']!==_0xf5f2('0x2d'))return _0x36c3c8;var _0x3395d3=_['some'](_0x36c3c8,function(_0x433ba0){return _0x433ba0[_0xf5f2('0x36')]===_0xf5f2('0x2e')||_0x433ba0['role']===_0xf5f2('0x30');});if(!_0x3395d3)return _0x36c3c8;return db[_0xf5f2('0x7f')]['findAll']({'where':{'name':{'$or':[_0xf5f2('0x80'),_0xf5f2('0x2f')]},'userProfileId':_0x191af3[_0xf5f2('0x2d')]['userProfileId']},'raw':!![]})[_0xf5f2('0x15')](function(_0x5573c4){if(_[_0xf5f2('0x89')](_0x5573c4)||!_['some'](_0x5573c4,[_0xf5f2('0x82'),0x0]))return _0x36c3c8;_0xe900ea=[];var _0x3cbc58=_(_0x5573c4)[_0xf5f2('0x33')](function(_0x42c915){if(_0x42c915['autoAssociation']===0x1)return;return _0x42c915[_0xf5f2('0x38')]==='Agents'?'agent':'telephone';})[_0xf5f2('0x8a')]()[_0xf5f2('0x34')]();for(var _0x5ece9e=0x0;_0x5ece9e<_0x36c3c8[_0xf5f2('0x49')];_0x5ece9e++){if(!_[_0xf5f2('0x35')](_0x3cbc58,_0x36c3c8[_0x5ece9e][_0xf5f2('0x36')]))return;var _0x3962b2=_0x36c3c8[_0x5ece9e][_0xf5f2('0x36')]===_0xf5f2('0x2e')?'Agents':_0xf5f2('0x2f');_0xe900ea[_0xf5f2('0x4a')](db['UserProfileResource'][_0xf5f2('0x7e')]({'name':_0x36c3c8[_0x5ece9e][_0xf5f2('0x38')],'resourceId':_0x36c3c8[_0x5ece9e]['id'],'type':_0x3962b2,'sectionId':_['find'](_0x5573c4,[_0xf5f2('0x38'),_0x3962b2])['id']},{}));}return BPromise[_0xf5f2('0x51')](_0xe900ea);});})[_0xf5f2('0x15')](respondWithResult(_0x2601aa,0xc9))[_0xf5f2('0x1f')](handleError(_0x2601aa,null));};exports[_0xf5f2('0x8b')]=function(_0x28dd0c,_0x4df05c){if(_0x28dd0c[_0xf5f2('0x59')]['id']){delete _0x28dd0c[_0xf5f2('0x59')]['id'];}return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x28dd0c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(_0x162c13){if(!_0x162c13)return null;if(_0x162c13['id']===_0x28dd0c[_0xf5f2('0x2d')]['id']){if(!_0x28dd0c[_0xf5f2('0x59')]['oldPassword']||!_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x8f'));}if(!_0x162c13[_0xf5f2('0x90')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x91')])){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Wrong\x20credentials');}if(_0x28dd0c['body'][_0xf5f2('0x91')]===_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]){throw new db[(_0xf5f2('0x8d'))]['ValidationError'](_0xf5f2('0x92'));}}else if(_0x28dd0c[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x7a')){if(!_0x28dd0c[_0xf5f2('0x59')]['newPassword']){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x28dd0c[_0xf5f2('0x2d')][_0xf5f2('0x36')]===_0xf5f2('0x2d')){if(!_0x28dd0c[_0xf5f2('0x59')]['newPassword']){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x93'));}if(_0x162c13['role']!=='agent'){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x79'));}}else{throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0x79'));}return _0x162c13;})['then'](handleEntityNotFound(_0x4df05c,null))[_0xf5f2('0x15')](function(_0x51e84c){return db[_0xf5f2('0x94')][_0xf5f2('0x95')]({'attributes':['id',_0xf5f2('0x61'),_0xf5f2('0x96'),_0xf5f2('0x97')]})[_0xf5f2('0x15')](function(_0x4a586c){if(_0x4a586c[_0xf5f2('0x61')])authService[_0xf5f2('0x62')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')]);if(!_0x4a586c[_0xf5f2('0x96')]||!_0x51e84c[_0xf5f2('0x98')])return _0x51e84c;authService[_0xf5f2('0x99')](_0x28dd0c['body'][_0xf5f2('0x8c')],_0x51e84c['previousPasswords'],_0x4a586c['passwordHistoryLimit']);return _0x51e84c;})['then'](saveUpdates({'password':_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')],'passwordResetAt':_0x28dd0c['user']['id']==_0x28dd0c[_0xf5f2('0x5a')]['id']?moment():null,'previousPasswords':authService[_0xf5f2('0x9a')](_0x28dd0c[_0xf5f2('0x59')][_0xf5f2('0x8c')],_0x51e84c['previousPasswords'])},null));})[_0xf5f2('0x15')](respondWithResult(_0x4df05c,null))[_0xf5f2('0x1f')](handleError(_0x4df05c,null));};exports[_0xf5f2('0x9b')]=function(_0x5d3ca7,_0x29f7bd){var _0x1efd91=_0x5d3ca7['body'][_0xf5f2('0x9c')];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x5d3ca7[_0xf5f2('0x5a')]['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36'),_0xf5f2('0x9d'),_0xf5f2('0x9e'),_0xf5f2('0x9f'),_0xf5f2('0xa0')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x29f7bd,null))['then'](function(_0x299c53){if(_0x299c53){if(!utils[_0xf5f2('0xa1')](_0x1efd91)){throw new db['Sequelize'][(_0xf5f2('0x8e'))]('Unknown\x20channel');}return _0x299c53[_0xf5f2('0xa2')+_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+_0xf5f2('0xa5')](_0x5d3ca7['body'][_0xf5f2('0x5d')],{'penalty':_0x5d3ca7['body'][_0xf5f2('0xa6')]||0x0})['spread'](function(_0x3310cb){for(var _0xde71c=0x0;_0xde71c<_0x5d3ca7['body'][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0xde71c+=0x1){var _0x16619b={'UserId':Number(_0x5d3ca7[_0xf5f2('0x5a')]['id'])};_0x16619b[_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+'QueueId']=Number(_0x5d3ca7['body'][_0xf5f2('0x5d')][_0xde71c]);socket[_0xf5f2('0xa7')]('user'+_[_0xf5f2('0xa3')](_0x1efd91[_0xf5f2('0xa4')]())+_0xf5f2('0xa8'),_0x16619b);}return _0x3310cb;})[_0xf5f2('0x15')](function(){if(_0x1efd91===_0xf5f2('0xa9')){return db[_0xf5f2('0xaa')][_0xf5f2('0xab')]({'where':{'id':_0x5d3ca7['body'][_0xf5f2('0x5d')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xf5f2('0x15')](function(_0x5ec0f3){var _0x3ff273=_0x299c53['get']({'plain':!![]});var _0xc51962=[];if(_0x1efd91==='voice'&&_0x3ff273['role']===_0xf5f2('0x2e')&&_0x3ff273[_0xf5f2('0x9d')]){for(var _0x57708f=0x0;_0x57708f<_0x5ec0f3[_0xf5f2('0x49')];_0x57708f+=0x1){_0xc51962[_0xf5f2('0x4a')]({'membername':_0x3ff273[_0xf5f2('0x38')],'UserId':_0x3ff273['id'],'queue_name':_0x5ec0f3[_0x57708f][_0xf5f2('0x38')],'VoiceQueueId':_0x5ec0f3[_0x57708f]['id'],'interface':_[_0xf5f2('0x64')](_0x3ff273[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x3ff273['name']):_0x3ff273['interface'],'paused':_0x3ff273[_0xf5f2('0x9f')]||![],'penalty':_0x5d3ca7['body'][_0xf5f2('0xa6')]||0x0});}return BPromise[_0xf5f2('0x88')](_0xc51962,function(_0x3a0e5c){return db[_0xf5f2('0xae')][_0xf5f2('0xaf')](_0x3a0e5c);});}return _0x299c53;});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x29f7bd,null))[_0xf5f2('0x1f')](handleError(_0x29f7bd,null));};exports[_0xf5f2('0xb0')]=function(_0x28f65b,_0x16cbd3){var _0x275fb7;return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x28f65b[_0xf5f2('0x5a')]['id']},'attributes':['id','name',_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x16cbd3,null))[_0xf5f2('0x15')](function(_0x36afea){if(_0x36afea){_0x275fb7=_0x36afea;if(!_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')]||!utils[_0xf5f2('0xa1')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')])){throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))]('Unknown\x20channel');}return _0x36afea[_0xf5f2('0xb1')+_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xa5')](_0x28f65b[_0xf5f2('0x43')]['ids']);}})[_0xf5f2('0x15')](function(_0x37d8b5){if(_[_0xf5f2('0xb2')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x36ea7f=0x0;_0x36ea7f<_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x36ea7f+=0x1){var _0x529d6f={'UserId':Number(_0x28f65b[_0xf5f2('0x5a')]['id'])};_0x529d6f[_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb3')]=Number(_0x28f65b['query'][_0xf5f2('0x5d')][_0x36ea7f]);socket[_0xf5f2('0xa7')]('user'+_['capitalize'](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb4'),_0x529d6f);}}else{var _0x529d6f={'UserId':Number(_0x28f65b[_0xf5f2('0x5a')]['id'])};_0x529d6f[_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb3')]=Number(_0x28f65b['query'][_0xf5f2('0x5d')]);socket['emit']('user'+_[_0xf5f2('0xa3')](_0x28f65b[_0xf5f2('0x43')][_0xf5f2('0x9c')][_0xf5f2('0xa4')]())+_0xf5f2('0xb4'),_0x529d6f);}return _0x37d8b5;})[_0xf5f2('0x15')](function(){if(_0x28f65b[_0xf5f2('0x43')]['channel']===_0xf5f2('0xa9')){return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'UserId':_0x28f65b['params']['id'],'VoiceQueueId':_0x28f65b[_0xf5f2('0x43')]['ids']},'individualHooks':!![]})['then'](function(){return _0x275fb7;});}return _0x275fb7;})[_0xf5f2('0x15')](respondWithStatusCode(_0x16cbd3,null))['catch'](handleError(_0x16cbd3,null));};exports[_0xf5f2('0xb5')]=function(_0x10215d,_0x5c7afd){_0x10215d[_0xf5f2('0x59')][_0xf5f2('0xb6')]=_0x10215d['file'][_0xf5f2('0xb7')];return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x10215d[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5c7afd,null))['then'](saveUpdates(_0x10215d[_0xf5f2('0x59')],null))[_0xf5f2('0x15')](respondWithResult(_0x5c7afd,null))['catch'](handleError(_0x5c7afd,null));};exports['getAvatar']=function(_0x3dd6e8,_0x37f2f1){var _0x2d3ed2=path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xba'));return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3dd6e8['params']['id']},'attributes':['id','userpic'],'raw':!![]})[_0xf5f2('0x15')](handleEntityNotFound(_0x37f2f1,null))['then'](function(_0x34abb6){if(_0x34abb6){if(_[_0xf5f2('0x64')](_0x34abb6[_0xf5f2('0xb6')])){return _0x37f2f1[_0xf5f2('0xbb')](_0x2d3ed2);}else{if(!fs['existsSync'](path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xbc'),_0x34abb6[_0xf5f2('0xb6')]))){return _0x37f2f1[_0xf5f2('0xbb')](_0x2d3ed2);}return _0x37f2f1['download'](path[_0xf5f2('0xb8')](config[_0xf5f2('0xb9')],_0xf5f2('0xbc'),_0x34abb6[_0xf5f2('0xb6')]));}}})[_0xf5f2('0x1f')](handleError(_0x37f2f1,null));};exports[_0xf5f2('0xbd')]=function(_0x137bce,_0x3f7f3b){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x137bce[_0xf5f2('0x5a')]['id']},'attributes':['id']})[_0xf5f2('0x15')](handleEntityNotFound(_0x3f7f3b,null))['then'](function(_0xd05e21){var _0x492175=[];values=_0xd05e21[_0xf5f2('0x4c')];_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4b'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4d'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4f'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x50'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0xbe'),_0xd05e21[_0xf5f2('0x4c')]));_0x492175[_0xf5f2('0x4a')](get_open_tabs(_0xf5f2('0x4e'),_0xd05e21['dataValues']));return BPromise[_0xf5f2('0x51')](_0x492175);})['then'](function(_0x5b96ef){var _0x10dbac=[];if(_0x5b96ef){for(var _0x4fc28b=0x0;_0x4fc28b<values['ChatOpenTabs'][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xbf')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc0'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc2')]['length'];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc2')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':'FAX','id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc3')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values['OpenchannelOpenTabs'][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc4'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc5')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc5')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':_0xf5f2('0xc6'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a['createdAt']});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc7')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc7')][_0x4fc28b];_0x10dbac[_0xf5f2('0x4a')]({'channel':'SMS','id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}for(var _0x4fc28b=0x0;_0x4fc28b<values[_0xf5f2('0xc8')][_0xf5f2('0x49')];_0x4fc28b++){var _0x5e2a1a=values[_0xf5f2('0xc8')][_0x4fc28b];_0x10dbac['push']({'channel':_0xf5f2('0xc9'),'id':_0x5e2a1a['id'],'createdAt':_0x5e2a1a[_0xf5f2('0xc1')]});}var _0x50690a={'count':_0x10dbac[_0xf5f2('0x49')],'rows':_0x10dbac};return _0x50690a;}else return null;})[_0xf5f2('0x15')](respondWithResult(_0x3f7f3b,null))[_0xf5f2('0x1f')](handleError(_0x3f7f3b,null));};exports[_0xf5f2('0xca')]=function(_0x1e6801,_0x5970b3){var _0x3bcf9a={};var _0x391a39={};var _0x35284e;var _0x2ef267;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x1e6801[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5970b3,null))[_0xf5f2('0x15')](function(_0x4918d4){if(_0x4918d4){_0x35284e=_0x4918d4;_0x391a39[_0xf5f2('0x52')]=_['keys'](db['CmContact'][_0xf5f2('0x3c')]);_0x391a39[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x1e6801[_0xf5f2('0x43')]);_0x391a39[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x391a39[_0xf5f2('0x52')],_0x391a39[_0xf5f2('0x43')]);_0x3bcf9a[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x391a39['model'],qs['fields'](_0x1e6801['query'][_0xf5f2('0x56')]));_0x3bcf9a['attributes']=_0x3bcf9a[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x3bcf9a[_0xf5f2('0x45')]:_0x391a39['model'];_0x3bcf9a[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x1e6801['query']['sort']);_0x3bcf9a['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x1e6801[_0xf5f2('0x43')],_0x391a39['filters']));if(_0x1e6801[_0xf5f2('0x43')]['filter']){_0x3bcf9a[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3bcf9a[_0xf5f2('0x42')],{'$or':_['map'](_0x3bcf9a[_0xf5f2('0x45')],function(_0x55dbc2){var _0x1b88b5={};_0x1b88b5[_0x55dbc2]={'$like':'%'+_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x1b88b5;})});}_0x3bcf9a=_['merge']({},_0x3bcf9a,_0x1e6801[_0xf5f2('0xcf')]);return _0x35284e[_0xf5f2('0xca')](_0x3bcf9a);}})['then'](function(_0x182677){if(_0x182677){_0x2ef267=_0x182677[_0xf5f2('0x49')];if(_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0x44'))){_0x3bcf9a[_0xf5f2('0x57')]=[{'model':db[_0xf5f2('0xd1')],'as':_0xf5f2('0xd2'),'required':![]},{'model':db[_0xf5f2('0xd3')],'as':_0xf5f2('0xd4'),'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0xd5')],'where':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]?{'id':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]}:undefined,'required':_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd6')]?!![]:![]}];}if(!_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x3bcf9a[_0xf5f2('0x26')]=qs['limit'](_0x1e6801[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3bcf9a[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x1e6801['query'][_0xf5f2('0x24')]);}return _0x35284e['getContacts'](_0x3bcf9a);}})[_0xf5f2('0x15')](function(_0x212e98){if(_0x212e98){return _0x212e98?{'count':_0x2ef267,'rows':_0x212e98}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x5970b3,null))[_0xf5f2('0x1f')](handleError(_0x5970b3,null));};exports[_0xf5f2('0xd8')]=function(_0x9aff13,_0x184fe0){var _0x593218;var _0x504909;var _0x3b6902={};var _0x174afc;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x9aff13['params']['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x184fe0,null))[_0xf5f2('0x15')](function(_0x16b3db){if(!utils[_0xf5f2('0xa1')](_0x9aff13['query']['channel'])){throw new db['Sequelize'][(_0xf5f2('0x8e'))](_0xf5f2('0xd9'));}_0x593218=_0x16b3db;var _0x30a468={};_0x30a468['model']=_[_0xf5f2('0xcb')](db[_['capitalize'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xda')][_0xf5f2('0x3c')]);_0x30a468[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x9aff13[_0xf5f2('0x43')]);_0x30a468[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x30a468[_0xf5f2('0x52')],_0x30a468[_0xf5f2('0x43')]);_0x3b6902[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x30a468[_0xf5f2('0x52')],qs['fields'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3b6902[_0xf5f2('0x45')]=_0x3b6902[_0xf5f2('0x45')]['length']?_0x3b6902[_0xf5f2('0x45')]:_0x30a468[_0xf5f2('0x52')];_0x3b6902[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x9aff13['query'][_0xf5f2('0xcd')]);_0x3b6902['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x9aff13[_0xf5f2('0x43')],_0x30a468[_0xf5f2('0x54')]));if(_0x9aff13['query'][_0xf5f2('0x31')]){_0x3b6902[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3b6902[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3b6902[_0xf5f2('0x45')],function(_0x53c759){var _0x13ca0c={};_0x13ca0c[_0x53c759]={'$like':'%'+_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x13ca0c;})});}_0x3b6902=_[_0xf5f2('0x58')]({},_0x3b6902,_0x9aff13[_0xf5f2('0xcf')]);switch(_0x593218[_0xf5f2('0x36')]){case _0xf5f2('0x7a'):return db[_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')]['channel'])+_0xf5f2('0xda')][_0xf5f2('0xab')](_0x3b6902);case _0xf5f2('0x2d'):case _0xf5f2('0x2e'):return _0x593218['get'+_['capitalize'](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xa5')](_0x3b6902);default:throw new db['Sequelize']['ValidationError'](_0xf5f2('0xdb'));}})[_0xf5f2('0x15')](function(_0x575a29){_0x174afc=_0x575a29[_0xf5f2('0x49')];if(!_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x3b6902[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3b6902['offset']=qs['offset'](_0x9aff13[_0xf5f2('0x43')]['offset']);}switch(_0x593218[_0xf5f2('0x36')]){case _0xf5f2('0x7a'):return db[_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xda')][_0xf5f2('0xab')](_0x3b6902);case _0xf5f2('0x2d'):case _0xf5f2('0x2e'):return _0x593218[_0xf5f2('0x2c')+_[_0xf5f2('0xa3')](_0x9aff13[_0xf5f2('0x43')][_0xf5f2('0x9c')])+_0xf5f2('0xa5')](_0x3b6902);}})['then'](function(_0x19669b){return{'count':_0x174afc,'rows':_0x19669b};})[_0xf5f2('0x15')](respondWithResult(_0x184fe0,null))[_0xf5f2('0x1f')](handleError(_0x184fe0,null));};exports[_0xf5f2('0xdc')]=function(_0x148512,_0x592ee0){var _0x374b5e={};var _0x38a915={};var _0x516159;var _0x663aeb;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x148512['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x592ee0,null))[_0xf5f2('0x15')](function(_0x3e7f54){if(_0x3e7f54){_0x516159=_0x3e7f54;_0x38a915['model']=_['keys'](db[_0xf5f2('0xae')][_0xf5f2('0x3c')]);_0x38a915[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x148512[_0xf5f2('0x43')]);_0x38a915[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x38a915[_0xf5f2('0x52')],_0x38a915[_0xf5f2('0x43')]);_0x374b5e[_0xf5f2('0x45')]=_['intersection'](_0x38a915[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x148512['query'][_0xf5f2('0x56')]));_0x374b5e[_0xf5f2('0x45')]=_0x374b5e[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x374b5e[_0xf5f2('0x45')]:_0x38a915['model'];_0x374b5e['order']=qs[_0xf5f2('0xcd')](_0x148512[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x374b5e[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x148512[_0xf5f2('0x43')],_0x38a915[_0xf5f2('0x54')]));if(_0x148512[_0xf5f2('0x43')]['filter']){_0x374b5e['where']=_['merge'](_0x374b5e['where'],{'$or':_[_0xf5f2('0x33')](_0x374b5e['attributes'],function(_0x5be074){var _0x561666={};_0x561666[_0x5be074]={'$like':'%'+_0x148512['query'][_0xf5f2('0x31')]+'%'};return _0x561666;})});}_0x374b5e=_['merge']({},_0x374b5e,_0x148512['options']);return _0x516159[_0xf5f2('0xdc')](_0x374b5e);}})[_0xf5f2('0x15')](function(_0x90221){if(_0x90221){_0x663aeb=_0x90221[_0xf5f2('0x49')];if(!_0x148512['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x374b5e[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x148512[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x374b5e[_0xf5f2('0x24')]=qs['offset'](_0x148512[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x516159['getVoiceQueuesRt'](_0x374b5e);}})[_0xf5f2('0x15')](function(_0x1ae708){if(_0x1ae708){return _0x1ae708?{'count':_0x663aeb,'rows':_0x1ae708}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x592ee0,null))[_0xf5f2('0x1f')](handleError(_0x592ee0,null));};exports[_0xf5f2('0xdd')]=function(_0x493582,_0x75e4a3){var _0x5f470f={};var _0x1f0a64={};var _0x2bbc23;var _0x346126;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x493582['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x75e4a3,null))[_0xf5f2('0x15')](function(_0x46ae87){if(_0x46ae87){_0x2bbc23=_0x46ae87;_0x1f0a64[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0xde')][_0xf5f2('0x3c')]);_0x1f0a64[_0xf5f2('0x43')]=_['keys'](_0x493582['query']);_0x1f0a64[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x1f0a64['model'],_0x1f0a64[_0xf5f2('0x43')]);_0x5f470f[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x1f0a64[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5f470f[_0xf5f2('0x45')]=_0x5f470f[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5f470f[_0xf5f2('0x45')]:_0x1f0a64[_0xf5f2('0x52')];_0x5f470f[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5f470f[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x493582['query'],_0x1f0a64[_0xf5f2('0x54')]));if(_0x493582['query']['filter']){_0x5f470f[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5f470f[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5f470f['attributes'],function(_0x1d19bb){var _0x2ffe8d={};_0x2ffe8d[_0x1d19bb]={'$like':'%'+_0x493582['query']['filter']+'%'};return _0x2ffe8d;})});}_0x5f470f=_['merge']({},_0x5f470f,_0x493582[_0xf5f2('0xcf')]);return _0x2bbc23[_0xf5f2('0xdd')](_0x5f470f);}})['then'](function(_0x170566){if(_0x170566){_0x346126=_0x170566[_0xf5f2('0x49')];if(!_0x493582[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x5f470f[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x493582[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5f470f[_0xf5f2('0x24')]=qs['offset'](_0x493582['query'][_0xf5f2('0x24')]);}return _0x2bbc23[_0xf5f2('0xdd')](_0x5f470f);}})['then'](function(_0x5a7012){if(_0x5a7012){return _0x5a7012?{'count':_0x346126,'rows':_0x5a7012}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x75e4a3,null))['catch'](handleError(_0x75e4a3,null));};exports[_0xf5f2('0xdf')]=function(_0x3ff8d0,_0x2ee55f){var _0x43ca34={'raw':!![],'where':{}};var _0x432052={};var _0x30a99c={'count':0x0,'rows':[]};return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x3ff8d0[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2ee55f,null))['then'](function(_0x3b741a){if(_0x3b741a){_0x432052[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe0')]['rawAttributes']);_0x432052[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x3ff8d0['query']);_0x432052[_0xf5f2('0x54')]=_['intersection'](_0x432052[_0xf5f2('0x52')],_0x432052[_0xf5f2('0x43')]);_0x43ca34['attributes']=_[_0xf5f2('0x55')](_0x432052[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x3ff8d0[_0xf5f2('0x43')]['fields']));_0x43ca34[_0xf5f2('0x45')]=_0x43ca34[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x43ca34['attributes']:_0x432052[_0xf5f2('0x52')];if(!_0x3ff8d0[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x43ca34[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x43ca34[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x24')]);}_0x43ca34['order']=qs[_0xf5f2('0xcd')](_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x43ca34[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x3ff8d0[_0xf5f2('0x43')],_0x432052[_0xf5f2('0x54')]));_0x43ca34[_0xf5f2('0x42')][_0xf5f2('0xe1')]=_0x3b741a['id'];if(_0x3ff8d0[_0xf5f2('0x43')]['filter']){_0x43ca34['where']=_['merge'](_0x43ca34[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x43ca34[_0xf5f2('0x45')],function(_0x538c60){var _0x6c6e9b={};_0x6c6e9b[_0x538c60]={'$like':'%'+_0x3ff8d0[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x6c6e9b;})});}_0x43ca34=_['merge']({},_0x43ca34,_0x3ff8d0[_0xf5f2('0xcf')]);return db[_0xf5f2('0xe0')][_0xf5f2('0x27')]({'where':_0x43ca34[_0xf5f2('0x42')]})[_0xf5f2('0x15')](function(_0x34ab18){_0x30a99c[_0xf5f2('0x27')]=_0x34ab18;if(_0x3ff8d0[_0xf5f2('0x43')]['includeAll']){_0x43ca34[_0xf5f2('0x57')]=[{'all':!![]}];}return db[_0xf5f2('0xe0')][_0xf5f2('0xab')](_0x43ca34);})[_0xf5f2('0x15')](function(_0x510f56){_0x30a99c[_0xf5f2('0x48')]=_0x510f56;return _0x30a99c;});}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x2ee55f,_0x43ca34))[_0xf5f2('0x1f')](handleError(_0x2ee55f,null));};exports['getScreenRecordings']=function(_0x346a95,_0x369556){var _0xcd1fcf={'raw':!![],'where':{}};var _0x2a7b68={};var _0x249e9b={'count':0x0,'rows':[]};return db['User'][_0xf5f2('0x95')]({'where':{'id':_0x346a95[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x369556,null))['then'](function(_0x1ca92b){if(_0x1ca92b){_0x2a7b68['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe2')]['rawAttributes']);_0x2a7b68[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x346a95[_0xf5f2('0x43')]);_0x2a7b68['filters']=_[_0xf5f2('0x55')](_0x2a7b68[_0xf5f2('0x52')],_0x2a7b68[_0xf5f2('0x43')]);_0xcd1fcf[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x2a7b68[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0xcd1fcf[_0xf5f2('0x45')]=_0xcd1fcf[_0xf5f2('0x45')]['length']?_0xcd1fcf[_0xf5f2('0x45')]:_0x2a7b68[_0xf5f2('0x52')];if(!_0x346a95[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0xcd1fcf[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x346a95['query'][_0xf5f2('0x26')]);_0xcd1fcf[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0x24')]);}_0xcd1fcf[_0xf5f2('0xcc')]=qs['sort'](_0x346a95[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0xcd1fcf[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x346a95[_0xf5f2('0x43')],_0x2a7b68[_0xf5f2('0x54')]));_0xcd1fcf[_0xf5f2('0x42')][_0xf5f2('0xe1')]=_0x1ca92b['id'];if(_0x346a95['query'][_0xf5f2('0x31')]){_0xcd1fcf['where']=_[_0xf5f2('0x58')](_0xcd1fcf[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0xcd1fcf[_0xf5f2('0x45')],function(_0x13538b){var _0x3a3bcc={};_0x3a3bcc[_0x13538b]={'$like':'%'+_0x346a95[_0xf5f2('0x43')]['filter']+'%'};return _0x3a3bcc;})});}_0xcd1fcf=_[_0xf5f2('0x58')]({},_0xcd1fcf,_0x346a95[_0xf5f2('0xcf')]);return db[_0xf5f2('0xe2')]['count']({'where':_0xcd1fcf[_0xf5f2('0x42')]})[_0xf5f2('0x15')](function(_0x40c8ab){_0x249e9b[_0xf5f2('0x27')]=_0x40c8ab;if(_0x346a95['query'][_0xf5f2('0x44')]){_0xcd1fcf['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xf5f2('0xab')](_0xcd1fcf);})[_0xf5f2('0x15')](function(_0x4c8c06){_0x249e9b['rows']=_0x4c8c06;return _0x249e9b;});}})['then'](respondWithFilteredResult(_0x369556,_0xcd1fcf))[_0xf5f2('0x1f')](handleError(_0x369556,null));};exports['getChatInteractions']=function(_0x5869ef,_0x41fa14){var _0x11dbdb={};var _0x3b882d={};var _0x395ed3;var _0x1c83ef;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x5869ef[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x41fa14,null))[_0xf5f2('0x15')](function(_0xdd72ad){if(_0xdd72ad){_0x395ed3=_0xdd72ad;_0x3b882d[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['ChatInteraction'][_0xf5f2('0x3c')]);_0x3b882d[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x5869ef[_0xf5f2('0x43')]);_0x3b882d[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3b882d[_0xf5f2('0x52')],_0x3b882d[_0xf5f2('0x43')]);_0x11dbdb['attributes']=_[_0xf5f2('0x55')](_0x3b882d[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x5869ef['query'][_0xf5f2('0x56')]));_0x11dbdb[_0xf5f2('0x45')]=_0x11dbdb[_0xf5f2('0x45')]['length']?_0x11dbdb['attributes']:_0x3b882d[_0xf5f2('0x52')];_0x11dbdb[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x11dbdb[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x5869ef[_0xf5f2('0x43')],_0x3b882d[_0xf5f2('0x54')]));if(_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x11dbdb[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x11dbdb[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x11dbdb[_0xf5f2('0x45')],function(_0x390eb0){var _0x576932={};_0x576932[_0x390eb0]={'$like':'%'+_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x576932;})});}_0x11dbdb=_[_0xf5f2('0x58')]({},_0x11dbdb,_0x5869ef['options']);return _0x395ed3[_0xf5f2('0xe3')](_0x11dbdb);}})[_0xf5f2('0x15')](function(_0x596030){if(_0x596030){_0x1c83ef=_0x596030[_0xf5f2('0x49')];if(!_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x11dbdb[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x5869ef[_0xf5f2('0x43')]['limit']);_0x11dbdb[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x5869ef[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x395ed3[_0xf5f2('0xe3')](_0x11dbdb);}})[_0xf5f2('0x15')](function(_0x2e82da){if(_0x2e82da){return _0x2e82da?{'count':_0x1c83ef,'rows':_0x2e82da}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x41fa14,null))[_0xf5f2('0x1f')](handleError(_0x41fa14,null));};exports[_0xf5f2('0xe4')]=function(_0x148d6e,_0x5a336c){var _0x69e008={};var _0x2d1342={};var _0x1d37db;var _0x1b09e1;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x148d6e['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x5a336c,null))['then'](function(_0xce91e7){if(_0xce91e7){_0x1d37db=_0xce91e7;_0x2d1342['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe5')][_0xf5f2('0x3c')]);_0x2d1342[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x148d6e[_0xf5f2('0x43')]);_0x2d1342[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x2d1342['model'],_0x2d1342[_0xf5f2('0x43')]);_0x69e008['attributes']=_['intersection'](_0x2d1342[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x148d6e[_0xf5f2('0x43')]['fields']));_0x69e008[_0xf5f2('0x45')]=_0x69e008[_0xf5f2('0x45')]['length']?_0x69e008[_0xf5f2('0x45')]:_0x2d1342[_0xf5f2('0x52')];_0x69e008[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x69e008[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x148d6e[_0xf5f2('0x43')],_0x2d1342[_0xf5f2('0x54')]));if(_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x69e008[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x69e008[_0xf5f2('0x42')],{'$or':_['map'](_0x69e008[_0xf5f2('0x45')],function(_0xd02a3a){var _0x34cf82={};_0x34cf82[_0xd02a3a]={'$like':'%'+_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x34cf82;})});}_0x69e008=_[_0xf5f2('0x58')]({},_0x69e008,_0x148d6e[_0xf5f2('0xcf')]);return _0x1d37db['getOpenchannelInteractions'](_0x69e008);}})[_0xf5f2('0x15')](function(_0x421a52){if(_0x421a52){_0x1b09e1=_0x421a52['length'];if(!_0x148d6e['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x69e008[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x148d6e['query'][_0xf5f2('0x26')]);_0x69e008[_0xf5f2('0x24')]=qs['offset'](_0x148d6e[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x1d37db[_0xf5f2('0xe4')](_0x69e008);}})['then'](function(_0x215c78){if(_0x215c78){return _0x215c78?{'count':_0x1b09e1,'rows':_0x215c78}:null;}})['then'](respondWithResult(_0x5a336c,null))['catch'](handleError(_0x5a336c,null));};exports['getMailInteractions']=function(_0x53d46f,_0x4e8602){var _0x5b83fa={'raw':!![],'where':{}};var _0xa2ae8c={};var _0x2709cc={'count':0x0,'rows':[]};return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x53d46f[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4e8602,null))['then'](function(_0x556bcc){if(_0x556bcc){_0xa2ae8c['model']=_[_0xf5f2('0xcb')](db['MailInteraction'][_0xf5f2('0x3c')]);_0xa2ae8c[_0xf5f2('0x43')]=_['keys'](_0x53d46f['query']);_0xa2ae8c['filters']=_[_0xf5f2('0x55')](_0xa2ae8c[_0xf5f2('0x52')],_0xa2ae8c[_0xf5f2('0x43')]);_0x5b83fa[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0xa2ae8c['model'],qs[_0xf5f2('0x56')](_0x53d46f['query']['fields']));_0x5b83fa[_0xf5f2('0x45')]=_0x5b83fa['attributes'][_0xf5f2('0x49')]?_0x5b83fa[_0xf5f2('0x45')]:_0xa2ae8c[_0xf5f2('0x52')];if(!_0x53d46f[_0xf5f2('0x43')]['hasOwnProperty']('nolimit')){_0x5b83fa['limit']=qs['limit'](_0x53d46f['query'][_0xf5f2('0x26')]);_0x5b83fa[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x53d46f[_0xf5f2('0x43')]['offset']);}_0x5b83fa[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x53d46f[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5b83fa[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x53d46f[_0xf5f2('0x43')],_0xa2ae8c['filters']));_0x5b83fa[_0xf5f2('0x42')]['UserId']=_0x556bcc['id'];if(_0x53d46f[_0xf5f2('0x43')]['filter']){_0x5b83fa[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5b83fa[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5b83fa[_0xf5f2('0x45')],function(_0x309bf0){var _0x11c5dd={};_0x11c5dd[_0x309bf0]={'$like':'%'+_0x53d46f[_0xf5f2('0x43')]['filter']+'%'};return _0x11c5dd;})});}_0x5b83fa=_[_0xf5f2('0x58')]({},_0x5b83fa,_0x53d46f['options']);return db[_0xf5f2('0xe6')][_0xf5f2('0x27')]({'where':_0x5b83fa['where']})[_0xf5f2('0x15')](function(_0x37ea1d){_0x2709cc[_0xf5f2('0x27')]=_0x37ea1d;if(_0x53d46f[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x5b83fa['include']=[{'all':!![]}];}return db['MailInteraction'][_0xf5f2('0xab')](_0x5b83fa);})[_0xf5f2('0x15')](function(_0x57233c){_0x2709cc[_0xf5f2('0x48')]=_0x57233c;return _0x2709cc;});}})[_0xf5f2('0x15')](respondWithFilteredResult(_0x4e8602,_0x5b83fa))[_0xf5f2('0x1f')](handleError(_0x4e8602,null));};exports[_0xf5f2('0xe7')]=function(_0x3860bf,_0xf071f7){var _0x249376={};var _0x3c3d4b={};var _0x9fa01a;var _0x4f77b3;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x3860bf[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf071f7,null))['then'](function(_0x3f3c5e){if(_0x3f3c5e){_0x9fa01a=_0x3f3c5e;_0x3c3d4b[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['SmsInteraction'][_0xf5f2('0x3c')]);_0x3c3d4b[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x3860bf['query']);_0x3c3d4b[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3c3d4b['model'],_0x3c3d4b['query']);_0x249376[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x3c3d4b[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x3860bf['query'][_0xf5f2('0x56')]));_0x249376['attributes']=_0x249376[_0xf5f2('0x45')]['length']?_0x249376[_0xf5f2('0x45')]:_0x3c3d4b[_0xf5f2('0x52')];_0x249376[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x249376[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x3860bf['query'],_0x3c3d4b[_0xf5f2('0x54')]));if(_0x3860bf[_0xf5f2('0x43')]['filter']){_0x249376['where']=_['merge'](_0x249376[_0xf5f2('0x42')],{'$or':_['map'](_0x249376['attributes'],function(_0x37096d){var _0x5dda28={};_0x5dda28[_0x37096d]={'$like':'%'+_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x5dda28;})});}_0x249376=_['merge']({},_0x249376,_0x3860bf[_0xf5f2('0xcf')]);return _0x9fa01a[_0xf5f2('0xe7')](_0x249376);}})[_0xf5f2('0x15')](function(_0x48eae5){if(_0x48eae5){_0x4f77b3=_0x48eae5[_0xf5f2('0x49')];if(!_0x3860bf['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x249376['limit']=qs[_0xf5f2('0x26')](_0x3860bf[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x249376[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x3860bf['query'][_0xf5f2('0x24')]);}return _0x9fa01a[_0xf5f2('0xe7')](_0x249376);}})['then'](function(_0x45628d){if(_0x45628d){return _0x45628d?{'count':_0x4f77b3,'rows':_0x45628d}:null;}})['then'](respondWithResult(_0xf071f7,null))[_0xf5f2('0x1f')](handleError(_0xf071f7,null));};exports['getFaxInteractions']=function(_0x4b6c4a,_0x489559){var _0x24edbc={};var _0x5a31a1={};var _0x206109;var _0x4d8a1d;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x4b6c4a[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x489559,null))[_0xf5f2('0x15')](function(_0x2ee89b){if(_0x2ee89b){_0x206109=_0x2ee89b;_0x5a31a1['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0xe8')][_0xf5f2('0x3c')]);_0x5a31a1[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x4b6c4a[_0xf5f2('0x43')]);_0x5a31a1[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x5a31a1[_0xf5f2('0x52')],_0x5a31a1[_0xf5f2('0x43')]);_0x24edbc[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x5a31a1[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x4b6c4a['query'][_0xf5f2('0x56')]));_0x24edbc[_0xf5f2('0x45')]=_0x24edbc['attributes'][_0xf5f2('0x49')]?_0x24edbc[_0xf5f2('0x45')]:_0x5a31a1['model'];_0x24edbc[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x24edbc[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x4b6c4a['query'],_0x5a31a1[_0xf5f2('0x54')]));if(_0x4b6c4a['query'][_0xf5f2('0x31')]){_0x24edbc[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x24edbc[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x24edbc[_0xf5f2('0x45')],function(_0x4e1d46){var _0x4a836b={};_0x4a836b[_0x4e1d46]={'$like':'%'+_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x4a836b;})});}_0x24edbc=_[_0xf5f2('0x58')]({},_0x24edbc,_0x4b6c4a[_0xf5f2('0xcf')]);return _0x206109['getFaxInteractions'](_0x24edbc);}})['then'](function(_0x4e3fb6){if(_0x4e3fb6){_0x4d8a1d=_0x4e3fb6['length'];if(!_0x4b6c4a['query'][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x24edbc[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x4b6c4a[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x24edbc[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x4b6c4a['query'][_0xf5f2('0x24')]);}return _0x206109['getFaxInteractions'](_0x24edbc);}})[_0xf5f2('0x15')](function(_0x38e377){if(_0x38e377){return _0x38e377?{'count':_0x4d8a1d,'rows':_0x38e377}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x489559,null))['catch'](handleError(_0x489559,null));};exports[_0xf5f2('0xe9')]=function(_0x12fd5b,_0x4b80fb){var _0x4bf13c={};var _0x320140={};var _0x16da91;var _0x3d59ee;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x12fd5b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4b80fb,null))[_0xf5f2('0x15')](function(_0x98d73b){if(_0x98d73b){_0x16da91=_0x98d73b;_0x320140[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['WhatsappInteraction'][_0xf5f2('0x3c')]);_0x320140[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x12fd5b[_0xf5f2('0x43')]);_0x320140[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x320140[_0xf5f2('0x52')],_0x320140[_0xf5f2('0x43')]);_0x4bf13c[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x320140[_0xf5f2('0x52')],qs['fields'](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x4bf13c[_0xf5f2('0x45')]=_0x4bf13c[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x4bf13c[_0xf5f2('0x45')]:_0x320140[_0xf5f2('0x52')];_0x4bf13c[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x4bf13c['where']=qs[_0xf5f2('0x54')](_['pick'](_0x12fd5b['query'],_0x320140[_0xf5f2('0x54')]));if(_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x4bf13c[_0xf5f2('0x42')]=_['merge'](_0x4bf13c[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x4bf13c[_0xf5f2('0x45')],function(_0x57dd92){var _0x57c229={};_0x57c229[_0x57dd92]={'$like':'%'+_0x12fd5b['query'][_0xf5f2('0x31')]+'%'};return _0x57c229;})});}_0x4bf13c=_[_0xf5f2('0x58')]({},_0x4bf13c,_0x12fd5b['options']);return _0x16da91[_0xf5f2('0xe9')](_0x4bf13c);}})[_0xf5f2('0x15')](function(_0x34f5b8){if(_0x34f5b8){_0x3d59ee=_0x34f5b8[_0xf5f2('0x49')];if(!_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x4bf13c['limit']=qs[_0xf5f2('0x26')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x4bf13c['offset']=qs[_0xf5f2('0x24')](_0x12fd5b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x16da91[_0xf5f2('0xe9')](_0x4bf13c);}})[_0xf5f2('0x15')](function(_0x5caac0){if(_0x5caac0){return _0x5caac0?{'count':_0x3d59ee,'rows':_0x5caac0}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x4b80fb,null))['catch'](handleError(_0x4b80fb,null));};exports[_0xf5f2('0xea')]=function(_0xb4b9fb,_0x43d0f0,_0x3e99eb){var _0x1f01cf;var _0x22f07f;var _0x3e68d7;var _0x1a124b=!_['isNil'](_0xb4b9fb[_0xf5f2('0x5a')]['id'])?_0xb4b9fb[_0xf5f2('0x5a')]['id']:!_[_0xf5f2('0x64')](_0xb4b9fb['user']['id'])?_0xb4b9fb['user']['id']:null;return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1a124b,'role':{'$or':[_0xf5f2('0x7a'),_0xf5f2('0x2d'),_0xf5f2('0x2e')]}},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0xeb'),'mobile','role','internal',_0xf5f2('0x9e')]})['then'](function(_0x496ee5){if(_0x496ee5){if(_0x496ee5['role']===_0xf5f2('0x2e')){_0x1f01cf=_0x496ee5;if(_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xa0')]){_0x3e68d7=util['format'](_0xf5f2('0xec'),_0x1f01cf[_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xa0')]]);}else if(_0xb4b9fb['body'][_0xf5f2('0xed')]){_0x3e68d7=util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0xb4b9fb['body'][_0xf5f2('0xed')]);}else{_0x3e68d7=util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x1f01cf[_0xf5f2('0x38')]);}socket['to'](util[_0xf5f2('0xac')]('user:%s',_0x1f01cf['name']))[_0xf5f2('0xa7')](_0xf5f2('0xee'),{'user':{'id':_0x1f01cf['id'],'name':_0x1f01cf[_0xf5f2('0x38')]},'ip':_0xb4b9fb[_0xf5f2('0xef')][_0xf5f2('0xf0')]||_0xb4b9fb['connection'][_0xf5f2('0xf1')]||_0xb4b9fb['socket']['remoteAddress']||_0xb4b9fb['connection'][_0xf5f2('0xf2')][_0xf5f2('0xf1')]});return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'membername':_0x1f01cf[_0xf5f2('0x38')]},'individualHooks':!![]});}}else{throw new db[(_0xf5f2('0x8d'))][(_0xf5f2('0x8e'))](_0xf5f2('0xf3'));}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){return _0x1f01cf[_0xf5f2('0xf4')]({'raw':!![]});}})[_0xf5f2('0x15')](function(_0x4b0ddc){if(_0x1f01cf){var _0x341cdb=[];if(_0x4b0ddc){_0x22f07f=_0x4b0ddc;if(_0x22f07f[_0xf5f2('0x49')]){for(var _0x24ec35=0x0;_0x24ec35<_0x22f07f[_0xf5f2('0x49')];_0x24ec35++){_0x341cdb[_0xf5f2('0x4a')]({'membername':_0x1f01cf[_0xf5f2('0x38')],'UserId':_0x1f01cf['id'],'queue_name':_0x22f07f[_0x24ec35][_0xf5f2('0x38')],'VoiceQueueId':_0x22f07f[_0x24ec35]['id'],'interface':_0x3e68d7,'paused':_0x1f01cf[_0xf5f2('0x9e')]||![],'penalty':_0x22f07f[_0x24ec35][_0xf5f2('0xf5')]||0x0});}return BPromise[_0xf5f2('0x88')](_0x341cdb,function(_0x14811d){return db[_0xf5f2('0xae')]['upsert'](_0x14811d);});}}}})['then'](function(){if(_0x1f01cf){return db[_0xf5f2('0xf6')][_0xf5f2('0xab')]({'where':{'membername':_0x1f01cf[_0xf5f2('0x38')],'exitAt':null}});}})[_0xf5f2('0x15')](function(_0xe1aa7a){if(_0x1f01cf){var _0x189695=[];_0xe1aa7a['forEach'](function(_0x26ae52){_0x189695['push'](_0x26ae52[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x189695);}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){var _0x478809=[];var _0x3f80fa=[];var _0x34c94b=utils[_0xf5f2('0xf7')]();var _0x5f6315={'membername':_0x1f01cf[_0xf5f2('0x38')],'interface':_0x3e68d7,'enterAt':moment()['format'](_0xf5f2('0xf8')),'role':_0x1f01cf[_0xf5f2('0x36')],'internal':_0x1f01cf[_0xf5f2('0x5f')]};_0x34c94b[_0xf5f2('0xf9')](function(_0x45b33f){_0x478809['push'](_[_0xf5f2('0x58')]({'channel':_0x45b33f,'type':'LOGIN','data1':_0xb4b9fb[_0xf5f2('0x59')][_0xf5f2('0xfa')],'data2':_0x3e68d7},_0x5f6315));if(_0x1f01cf[_0xf5f2('0x9e')]){_0x3f80fa['push'](_['merge']({'channel':_0x45b33f,'type':_0xf5f2('0xfb'),'data1':_0xf5f2('0xfc')},_0x5f6315));}});return db[_0xf5f2('0xf6')][_0xf5f2('0x85')](_0x478809['concat'](_0x3f80fa),{'individualHooks':!![]});}})[_0xf5f2('0x15')](function(){if(_0x1f01cf){return _0x1f01cf[_0xf5f2('0x2a')]({'online':!![],'lastLoginAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8')),'voicePause':_0x1f01cf[_0xf5f2('0x9e')]||![],'mailPause':_0x1f01cf['loginInPause']||![],'chatPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'faxPause':_0x1f01cf['loginInPause']||![],'smsPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'openchannelPause':_0x1f01cf[_0xf5f2('0x9e')]||![],'whatsappPause':_0x1f01cf['loginInPause']||![],'pauseType':_0x1f01cf[_0xf5f2('0x9e')]?_0xf5f2('0xfc'):null,'interface':_0x3e68d7,'lastPauseAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'))});}})[_0xf5f2('0x15')](function(_0x2d798a){if(_0xb4b9fb[_0xf5f2('0xfd')]){return _0x3e99eb();}else{return BPromise['resolve'](_0x2d798a)[_0xf5f2('0x15')](respondWithResult(_0x43d0f0,null));}})[_0xf5f2('0x1f')](handleError(_0x43d0f0,null));};exports[_0xf5f2('0xfe')]=function(_0x16dee6,_0x3717d9){var _0x24fef8;return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x16dee6[_0xf5f2('0x5a')]['id'],'role':_0xf5f2('0x2e')},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x3717d9,null))['then'](function(_0x652b1e){if(_0x652b1e){_0x24fef8=_0x652b1e;return db[_0xf5f2('0xae')]['destroy']({'where':{'membername':_0x24fef8[_0xf5f2('0x38')]},'individualHooks':!![]});}})[_0xf5f2('0x15')](function(){return db['MemberReport'][_0xf5f2('0xab')]({'where':{'membername':_0x24fef8[_0xf5f2('0x38')],'exitAt':null}});})[_0xf5f2('0x15')](function(_0x58632c){var _0x316f7c=[];_0x58632c[_0xf5f2('0xf9')](function(_0x33592d){_0x316f7c[_0xf5f2('0x4a')](_0x33592d[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xf5f2('0x51')](_0x316f7c);})[_0xf5f2('0x15')](function(){return _0x24fef8[_0xf5f2('0x2a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x3717d9,null))[_0xf5f2('0x1f')](handleError(_0x3717d9,null));};exports[_0xf5f2('0xff')]=function(_0x4cee5c,_0x1d556c){var _0x4b1e13;return db[_0xf5f2('0xae')]['update']({'paused':0x1},{'where':{'UserId':_0x4cee5c[_0xf5f2('0x5a')]['id']},'individualHooks':!![]})[_0xf5f2('0x15')](function(){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x4cee5c['params']['id'],'role':_0xf5f2('0x2e')},'attributes':['id','name',_0xf5f2('0x36'),'internal',_0xf5f2('0xa0')]});})['then'](handleEntityNotFound(_0x1d556c,null))[_0xf5f2('0x15')](function(_0x5e948c){if(_0x5e948c){_0x4b1e13=_0x5e948c;return respondWithRpcPromise(_0xf5f2('0x100'),_0xf5f2('0xff'),{'id':_0x4b1e13['id'],'name':_0x4b1e13['name'],'pause':!![]});}})[_0xf5f2('0x15')](function(){if(_0x4b1e13){return db[_0xf5f2('0xf6')]['findAll']({'where':{'membername':_0x4b1e13[_0xf5f2('0x38')],'type':'PAUSE','exitAt':null}});}})[_0xf5f2('0x15')](function(_0x2c2be8){if(_0x2c2be8['length']){var _0x1e07b4=moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'));for(var _0x418944=0x0,_0x2712a1=_0x2c2be8['length'];_0x418944<_0x2712a1;_0x418944++){_0x2c2be8[_0x418944][_0xf5f2('0x101')]({'exitAt':_0x1e07b4});}}})[_0xf5f2('0x15')](function(){var _0x2008f4=[];var _0x38ba23=utils[_0xf5f2('0xf7')]();_0x38ba23['forEach'](function(_0x33f10a){_0x2008f4[_0xf5f2('0x4a')]({'channel':_0x33f10a,'membername':_0x4b1e13['name'],'interface':_[_0xf5f2('0x64')](_0x4b1e13[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')](_0xf5f2('0xad'),_0x4b1e13[_0xf5f2('0x38')]):_0x4b1e13['interface'],'type':_0xf5f2('0xfb'),'enterAt':moment()['format'](_0xf5f2('0xf8')),'data1':_0x4cee5c[_0xf5f2('0x59')]['type']||_0xf5f2('0x102'),'role':_0x4b1e13[_0xf5f2('0x36')],'internal':_0x4b1e13[_0xf5f2('0x5f')]});});return db['MemberReport']['bulkCreate'](_0x2008f4,{'individualHooks':!![]});})['then'](function(){return _0x4b1e13[_0xf5f2('0x2a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4cee5c[_0xf5f2('0x59')][_0xf5f2('0x3d')]||_0xf5f2('0x102'),'lastPauseAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8'))});})[_0xf5f2('0x15')](respondWithResult(_0x1d556c,null))[_0xf5f2('0x1f')](handleError(_0x1d556c,null));};exports[_0xf5f2('0x103')]=function(_0xee959d,_0x468446){var _0x1639c7;return db['User'][_0xf5f2('0x37')]({'where':{'id':_0xee959d[_0xf5f2('0x5a')]['id']},'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x36'),'voicePause',_0xf5f2('0x104'),_0xf5f2('0x105'),_0xf5f2('0x106'),_0xf5f2('0x107'),_0xf5f2('0x108'),_0xf5f2('0x109'),_0xf5f2('0x10a'),_0xf5f2('0x10b')]})[_0xf5f2('0x15')](handleEntityNotFound(_0x468446,null))[_0xf5f2('0x15')](function(_0x1cfb2f){if(_0x1cfb2f){_0x1639c7=_0x1cfb2f;if(_0xee959d['body']['channel']&&!utils['isValidChannel'](_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')])){throw new db['Sequelize'][(_0xf5f2('0x8e'))](_0xf5f2('0xd9'));}switch(_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')]){case _0xf5f2('0xa9'):return respondWithRpcPromise(_0xf5f2('0x100'),'unpause',{'id':_0x1639c7['id'],'name':_0x1639c7[_0xf5f2('0x38')],'pause':![]})['then'](function(){return db[_0xf5f2('0xae')]['update']({'paused':0x0},{'where':{'UserId':_0x1639c7['id']},'individualHooks':!![]});})['then'](function(){return db[_0xf5f2('0xf6')][_0xf5f2('0x37')]({'where':{'channel':_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'membername':_0x1639c7['name'],'type':_0xf5f2('0xfb'),'exitAt':null}});})['then'](function(_0x321c7d){if(_0x321c7d){return _0x321c7d[_0xf5f2('0x2a')]({'exitAt':moment()[_0xf5f2('0xac')](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x1639c7[_0xf5f2('0x2a')]({'voicePause':![]});});case'mail':case _0xf5f2('0x4b'):case _0xf5f2('0xbe'):case'sms':case _0xf5f2('0x50'):case _0xf5f2('0x4f'):return db[_0xf5f2('0xf6')][_0xf5f2('0x37')]({'where':{'channel':_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'membername':_0x1639c7['name'],'type':'PAUSE','exitAt':null}})[_0xf5f2('0x15')](function(_0x23c78c){if(_0x23c78c){return _0x23c78c[_0xf5f2('0x2a')]({'exitAt':moment()['format'](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')},{'individualHooks':!![]});}return null;})[_0xf5f2('0x15')](function(){var _0xb404e6={};_[_0xf5f2('0x28')](_0xb404e6,util[_0xf5f2('0xac')](_0xf5f2('0x10d'),_0xee959d[_0xf5f2('0x59')][_0xf5f2('0x9c')],'Pause'),![]);return _0x1639c7[_0xf5f2('0x2a')](_0xb404e6);});default:return respondWithRpcPromise(_0xf5f2('0x100'),_0xf5f2('0x103'),{'id':_0x1639c7['id'],'name':_0x1639c7[_0xf5f2('0x38')],'pause':![]})[_0xf5f2('0x15')](function(){return db[_0xf5f2('0xae')][_0xf5f2('0x2a')]({'paused':0x0},{'where':{'UserId':_0x1639c7['id']}});})[_0xf5f2('0x15')](function(){return db[_0xf5f2('0xf6')][_0xf5f2('0xab')]({'where':{'membername':_0x1639c7[_0xf5f2('0x38')],'type':_0xf5f2('0xfb'),'exitAt':null}});})['then'](function(_0x5ab27d){var _0xaab448=[];_0x5ab27d['forEach'](function(_0x4f82ed){_0xaab448[_0xf5f2('0x4a')](_0x4f82ed[_0xf5f2('0x2a')]({'exitAt':moment()['format'](_0xf5f2('0xf8')),'data2':_0xf5f2('0x10c')}));});return BPromise[_0xf5f2('0x51')](_0xaab448);})[_0xf5f2('0x15')](function(){return _0x1639c7['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xf5f2('0x15')](respondWithResult(_0x468446,null))[_0xf5f2('0x1f')](handleError(_0x468446,null));};exports[_0xf5f2('0x10e')]=function(_0x136ced,_0x221030){var _0x5d8087={};var _0xcb3f03={};var _0x149c2b;var _0x2c8b3e;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x136ced[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x221030,null))[_0xf5f2('0x15')](function(_0xf1a7f7){if(_0xf1a7f7){_0x149c2b=_0xf1a7f7;_0xcb3f03['model']=_[_0xf5f2('0xcb')](db[_0xf5f2('0x10f')][_0xf5f2('0x3c')]);_0xcb3f03[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x136ced[_0xf5f2('0x43')]);_0xcb3f03['filters']=_[_0xf5f2('0x55')](_0xcb3f03[_0xf5f2('0x52')],_0xcb3f03[_0xf5f2('0x43')]);_0x5d8087[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0xcb3f03[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5d8087[_0xf5f2('0x45')]=_0x5d8087[_0xf5f2('0x45')]['length']?_0x5d8087[_0xf5f2('0x45')]:_0xcb3f03[_0xf5f2('0x52')];_0x5d8087['order']=qs['sort'](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5d8087[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x136ced['query'],_0xcb3f03['filters']));if(_0x136ced['query'][_0xf5f2('0x31')]){_0x5d8087[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5d8087[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5d8087[_0xf5f2('0x45')],function(_0x4d3842){var _0x411505={};_0x411505[_0x4d3842]={'$like':'%'+_0x136ced[_0xf5f2('0x43')]['filter']+'%'};return _0x411505;})});}_0x5d8087=_['merge']({},_0x5d8087,_0x136ced[_0xf5f2('0xcf')]);return _0x149c2b[_0xf5f2('0x10e')](_0x5d8087);}})['then'](function(_0x47cb92){if(_0x47cb92){_0x2c8b3e=_0x47cb92[_0xf5f2('0x49')];if(!_0x136ced['query'][_0xf5f2('0xd0')]('nolimit')){_0x5d8087[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x136ced[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5d8087[_0xf5f2('0x24')]=qs['offset'](_0x136ced['query'][_0xf5f2('0x24')]);}return _0x149c2b[_0xf5f2('0x10e')](_0x5d8087);}})[_0xf5f2('0x15')](function(_0x3e300d){if(_0x3e300d){return _0x3e300d?{'count':_0x2c8b3e,'rows':_0x3e300d}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x221030,null))[_0xf5f2('0x1f')](handleError(_0x221030,null));};exports[_0xf5f2('0x110')]=function(_0x3dd1f6,_0x69fd0e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3dd1f6[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x69fd0e,null))[_0xf5f2('0x15')](function(_0x3e28ea){if(_0x3e28ea){var _0x2ec1e0=_0x3e28ea['get']({'plain':!![]});return _0x3e28ea[_0xf5f2('0x110')](_0x3dd1f6[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x3dd1f6[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['then'](function(){for(var _0x5ad6b7=0x0;_0x5ad6b7<_0x3dd1f6[_0xf5f2('0x59')]['ids']['length'];_0x5ad6b7++){var _0x5a4e56=[];var _0x41d2f0={};db[_0xf5f2('0x10f')]['findOne']({'where':{'id':_0x3dd1f6[_0xf5f2('0x59')]['ids'][_0x5ad6b7]}})[_0xf5f2('0x15')](function(_0x59c3bd){_0x41d2f0=_0x59c3bd[_0xf5f2('0x4c')];_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd['getVoiceQueues']()['then'](function(_0xc79def){for(var _0x2ba7c7=0x0;_0x2ba7c7<_0xc79def[_0xf5f2('0x49')];_0x2ba7c7++){_0xc79def[_0x2ba7c7][_0xf5f2('0x111')](_0xf5f2('0x9c'),'Voice');}return _0xc79def;}));_0x5a4e56['push'](_0x59c3bd[_0xf5f2('0x112')]()['then'](function(_0x1d6f03){for(var _0x58fead=0x0;_0x58fead<_0x1d6f03['length'];_0x58fead++){_0x1d6f03[_0x58fead][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x113'));}return _0x1d6f03;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x114')]()['then'](function(_0x2b5e7b){for(var _0x32c98d=0x0;_0x32c98d<_0x2b5e7b['length'];_0x32c98d++){_0x2b5e7b[_0x32c98d]['setDataValue']('channel',_0xf5f2('0x115'));}return _0x2b5e7b;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x116')]()[_0xf5f2('0x15')](function(_0x3e5e48){for(var _0x538a9e=0x0;_0x538a9e<_0x3e5e48[_0xf5f2('0x49')];_0x538a9e++){_0x3e5e48[_0x538a9e][_0xf5f2('0x111')](_0xf5f2('0x9c'),'Sms');}return _0x3e5e48;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x117')]()[_0xf5f2('0x15')](function(_0x206cf4){for(var _0x2ea5b8=0x0;_0x2ea5b8<_0x206cf4['length'];_0x2ea5b8++){_0x206cf4[_0x2ea5b8]['setDataValue'](_0xf5f2('0x9c'),_0xf5f2('0x118'));}return _0x206cf4;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x119')]()[_0xf5f2('0x15')](function(_0x1cee21){for(var _0x35648=0x0;_0x35648<_0x1cee21[_0xf5f2('0x49')];_0x35648++){_0x1cee21[_0x35648][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x11a'));}return _0x1cee21;}));_0x5a4e56[_0xf5f2('0x4a')](_0x59c3bd[_0xf5f2('0x11b')]()['then'](function(_0x5237c1){for(var _0x1b0ffb=0x0;_0x1b0ffb<_0x5237c1[_0xf5f2('0x49')];_0x1b0ffb++){_0x5237c1[_0x1b0ffb]['setDataValue']('channel','Openchannel');}return _0x5237c1;}));return BPromise[_0xf5f2('0x51')](_0x5a4e56);})[_0xf5f2('0x15')](function(_0x519ea5){var _0x2b0845=_[_0xf5f2('0x11c')](_0x519ea5);_0x5a4e56=[];return db['sequelize'][_0xf5f2('0x11d')](function(_0x1ca5a4){for(var _0x26b2d7=0x0;_0x26b2d7<_0x2b0845['length'];_0x26b2d7++){_0x5a4e56['push'](_0x2b0845[_0x26b2d7][_0xf5f2('0x11e')](_0x2ec1e0['id']),{'transaction':_0x1ca5a4});}return BPromise['all'](_0x5a4e56)[_0xf5f2('0x15')](function(){if(_0x2ec1e0[_0xf5f2('0x9d')]){return BPromise[_0xf5f2('0x88')](_[_0xf5f2('0x31')](_0x2b0845,function(_0x141623){return _0x141623[_0xf5f2('0x11f')](_0xf5f2('0x9c'))===_0xf5f2('0x120');}),function(_0x407f45){return db['UserVoiceQueueRt']['upsert']({'membername':_0x2ec1e0['name'],'UserId':_0x2ec1e0['id'],'queue_name':_0x407f45[_0xf5f2('0x38')],'VoiceQueueId':_0x407f45['id'],'interface':_['isNil'](_0x2ec1e0[_0xf5f2('0xa0')])?util[_0xf5f2('0xac')]('SIP/%s',_0x2ec1e0[_0xf5f2('0x38')]):_0x2ec1e0[_0xf5f2('0xa0')],'paused':_0x2ec1e0[_0xf5f2('0x9f')]||![],'penalty':_0x2ec1e0[_0xf5f2('0xa6')]},{'transaction':_0x1ca5a4});});}else{return;}})[_0xf5f2('0x15')](function(){for(var _0x5aa756=0x0;_0x5aa756<_0x2b0845[_0xf5f2('0x49')];_0x5aa756++){var _0x14e483=_0x2b0845[_0x5aa756][_0xf5f2('0x11f')](_0xf5f2('0x9c'));var _0x3ab4ff=_0x14e483+_0xf5f2('0xb3');socket[_0xf5f2('0xa7')]('user'+_0x14e483+_0xf5f2('0xa8'),{'UserId':_0x2ec1e0['id'],['queueField']:_0x2b0845[_0x5aa756]['id']});}});});})[_0xf5f2('0x15')](function(){db[_0xf5f2('0x121')][_0xf5f2('0x95')]({'where':{'teamId':_0x41d2f0['id']}})[_0xf5f2('0x15')](function(_0x34faf5){if(_0x34faf5){db[_0xf5f2('0x122')][_0xf5f2('0x7e')]({'UserId':_0x3dd1f6[_0xf5f2('0x5a')]['id'],'VoicePrefixId':_0x34faf5[_0xf5f2('0x123')]});}});});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x69fd0e,null))['catch'](handleError(_0x69fd0e,null));};exports[_0xf5f2('0x124')]=function(_0x5c1fcb,_0x18ec33){return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x5c1fcb[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x18ec33,null))[_0xf5f2('0x15')](function(_0xcbf7b5){if(_0xcbf7b5){var _0x58ed33=_0xcbf7b5[_0xf5f2('0x2c')]({'plain':!![]});var _0x197998=_0x5c1fcb[_0xf5f2('0x43')]['ids'];return _0xcbf7b5[_0xf5f2('0x124')](_0x197998)[_0xf5f2('0x15')](function(){for(var _0x4118ec=0x0;_0x4118ec<_0x197998['length'];_0x4118ec++){var _0x3b3dff=[];var _0xf05d40={};db['Team']['findOne']({'where':{'id':_0x197998[_0x4118ec]}})[_0xf5f2('0x15')](function(_0x22cb0b){_0xf05d40=_0x22cb0b[_0xf5f2('0x4c')];_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0xf4')]()[_0xf5f2('0x15')](function(_0x3a3673){for(var _0x3951ea=0x0;_0x3951ea<_0x3a3673[_0xf5f2('0x49')];_0x3951ea++){_0x3a3673[_0x3951ea][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x120'));}return _0x3a3673;}));_0x3b3dff['push'](_0x22cb0b[_0xf5f2('0x112')]()[_0xf5f2('0x15')](function(_0x13899b){for(var _0xb6bd54=0x0;_0xb6bd54<_0x13899b[_0xf5f2('0x49')];_0xb6bd54++){_0x13899b[_0xb6bd54]['setDataValue']('channel','Chat');}return _0x13899b;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x114')]()[_0xf5f2('0x15')](function(_0x5d9271){for(var _0x3d2665=0x0;_0x3d2665<_0x5d9271[_0xf5f2('0x49')];_0x3d2665++){_0x5d9271[_0x3d2665][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x115'));}return _0x5d9271;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x116')]()[_0xf5f2('0x15')](function(_0x551c62){for(var _0xe0c5a=0x0;_0xe0c5a<_0x551c62[_0xf5f2('0x49')];_0xe0c5a++){_0x551c62[_0xe0c5a][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x125'));}return _0x551c62;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x117')]()[_0xf5f2('0x15')](function(_0x1b9dbd){for(var _0x323ce3=0x0;_0x323ce3<_0x1b9dbd[_0xf5f2('0x49')];_0x323ce3++){_0x1b9dbd[_0x323ce3]['setDataValue']('channel','Whatsapp');}return _0x1b9dbd;}));_0x3b3dff[_0xf5f2('0x4a')](_0x22cb0b[_0xf5f2('0x119')]()[_0xf5f2('0x15')](function(_0x1af5aa){for(var _0x45ceb4=0x0;_0x45ceb4<_0x1af5aa[_0xf5f2('0x49')];_0x45ceb4++){_0x1af5aa[_0x45ceb4][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x11a'));}return _0x1af5aa;}));_0x3b3dff['push'](_0x22cb0b[_0xf5f2('0x11b')]()[_0xf5f2('0x15')](function(_0x1a294d){for(var _0x204950=0x0;_0x204950<_0x1a294d[_0xf5f2('0x49')];_0x204950++){_0x1a294d[_0x204950][_0xf5f2('0x111')](_0xf5f2('0x9c'),_0xf5f2('0x126'));}return _0x1a294d;}));return BPromise[_0xf5f2('0x51')](_0x3b3dff);})[_0xf5f2('0x15')](function(_0x326b90){var _0x25a243=_[_0xf5f2('0x11c')](_0x326b90);_0x3b3dff=[];return db[_0xf5f2('0x66')][_0xf5f2('0x11d')](function(_0x215139){for(var _0x192e2a=0x0;_0x192e2a<_0x25a243[_0xf5f2('0x49')];_0x192e2a++){_0x3b3dff[_0xf5f2('0x4a')](_0x25a243[_0x192e2a][_0xf5f2('0x127')](_0x58ed33['id']),{'transaction':_0x215139});}return BPromise[_0xf5f2('0x51')](_0x3b3dff)[_0xf5f2('0x15')](function(){if(_0x58ed33[_0xf5f2('0x9d')]){return BPromise[_0xf5f2('0x88')](_[_0xf5f2('0x31')](_0x25a243,function(_0x15ecf9){return _0x15ecf9[_0xf5f2('0x11f')](_0xf5f2('0x9c'))===_0xf5f2('0x120');}),function(_0x17eb56){return db[_0xf5f2('0xae')][_0xf5f2('0x2b')]({'where':{'VoiceQueueId':_0x17eb56['id'],'UserId':_0x58ed33['id']},'transaction':_0x215139});});}else{return;}})[_0xf5f2('0x15')](function(){db[_0xf5f2('0x121')]['findOne']({'where':{'teamId':_0xf05d40['id']}})[_0xf5f2('0x15')](function(_0x43bac2){if(_0x43bac2){return db[_0xf5f2('0x122')][_0xf5f2('0x2b')]({'where':{'UserId':_0x58ed33['id'],'VoicePrefixId':_0x43bac2[_0xf5f2('0x4c')][_0xf5f2('0x123')]}});}});})['then'](function(){for(var _0x500b74=0x0;_0x500b74<_0x25a243[_0xf5f2('0x49')];_0x500b74++){var _0x55bea5=_0x25a243[_0x500b74]['getDataValue'](_0xf5f2('0x9c'));var _0x2069d0=_0x55bea5+_0xf5f2('0xb3');socket[_0xf5f2('0xa7')]('user'+_0x55bea5+'Queue:remove',{'UserId':_0x58ed33['id'],['queueField']:_0x25a243[_0x500b74]['id']});}});});});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x18ec33,null))['catch'](handleError(_0x18ec33,null));};exports['getLists']=function(_0x11988f,_0x222589){var _0x3dee22={};var _0x38845f={};var _0x47187a;var _0x58ca66;return db['User']['findOne']({'where':{'id':_0x11988f[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x222589,null))[_0xf5f2('0x15')](function(_0xe0374e){if(_0xe0374e){_0x47187a=_0xe0374e;_0x38845f['model']=_[_0xf5f2('0xcb')](db['CmList'][_0xf5f2('0x3c')]);_0x38845f[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x11988f['query']);_0x38845f['filters']=_['intersection'](_0x38845f[_0xf5f2('0x52')],_0x38845f[_0xf5f2('0x43')]);_0x3dee22[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x38845f[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3dee22[_0xf5f2('0x45')]=_0x3dee22['attributes']['length']?_0x3dee22[_0xf5f2('0x45')]:_0x38845f[_0xf5f2('0x52')];_0x3dee22['order']=qs[_0xf5f2('0xcd')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x3dee22[_0xf5f2('0x42')]=qs['filters'](_[_0xf5f2('0xce')](_0x11988f[_0xf5f2('0x43')],_0x38845f[_0xf5f2('0x54')]));if(_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x3dee22[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x3dee22[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3dee22['attributes'],function(_0x51efd7){var _0x39e0d3={};_0x39e0d3[_0x51efd7]={'$like':'%'+_0x11988f['query'][_0xf5f2('0x31')]+'%'};return _0x39e0d3;})});}_0x3dee22=_[_0xf5f2('0x58')]({},_0x3dee22,_0x11988f[_0xf5f2('0xcf')]);return _0x47187a[_0xf5f2('0x128')](_0x3dee22);}})['then'](function(_0x3d2623){if(_0x3d2623){_0x58ca66=_0x3d2623['length'];if(!_0x11988f[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x3dee22[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3dee22[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x11988f[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x47187a[_0xf5f2('0x128')](_0x3dee22);}})['then'](function(_0x447e0e){if(_0x447e0e){return _0x447e0e?{'count':_0x58ca66,'rows':_0x447e0e}:null;}})['then'](respondWithResult(_0x222589,null))['catch'](handleError(_0x222589,null));};exports[_0xf5f2('0x129')]=function(_0x10c571,_0x511e9e){var _0x286040={};var _0x190499={};var _0x1ce73b;var _0x214f5d;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x10c571['params']['id']}})['then'](handleEntityNotFound(_0x511e9e,null))['then'](function(_0x3da502){if(_0x3da502){_0x1ce73b=_0x3da502;_0x190499[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x3b')][_0xf5f2('0x3c')]);_0x190499['query']=_[_0xf5f2('0xcb')](_0x10c571[_0xf5f2('0x43')]);_0x190499[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x190499[_0xf5f2('0x52')],_0x190499['query']);_0x286040[_0xf5f2('0x45')]=_['intersection'](_0x190499[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x286040['attributes']=_0x286040[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x286040['attributes']:_0x190499['model'];_0x286040['order']=qs[_0xf5f2('0xcd')](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x286040[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_['pick'](_0x10c571[_0xf5f2('0x43')],_0x190499['filters']));if(_0x10c571['query']['filter']){_0x286040[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x286040[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x286040[_0xf5f2('0x45')],function(_0x2349e3){var _0x4d1fff={};_0x4d1fff[_0x2349e3]={'$like':'%'+_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x4d1fff;})});}_0x286040['model']=db[_0xf5f2('0x3b')];_0x286040['as']=_0xf5f2('0x80');_0x286040=_[_0xf5f2('0x58')]({},_0x286040,_0x10c571[_0xf5f2('0xcf')]);return _0x1ce73b[_0xf5f2('0xf4')]({'include':[_0x286040]});}})[_0xf5f2('0x15')](function(_0x250aed){if(_0x250aed){var _0x23d4e9={},_0x43bfb3=[],_0x1897fb=0x0;for(var _0xd096c8=0x0;_0xd096c8<_0x250aed[_0xf5f2('0x49')];_0xd096c8+=0x1){for(var _0x3a2b9e=0x0,_0x50e6b1;_0x3a2b9e<_0x250aed[_0xd096c8][_0xf5f2('0x80')]['length'];_0x3a2b9e+=0x1){_0x50e6b1=_0x250aed[_0xd096c8][_0xf5f2('0x80')][_0x3a2b9e]['get']({'plain':!![]});_0x23d4e9[_0x50e6b1['id']]=_0x50e6b1;}}_0x23d4e9=_[_0xf5f2('0x12a')](_0x23d4e9);for(var _0x3eec45=qs[_0xf5f2('0x24')](_0x10c571[_0xf5f2('0x43')]['offset']);_0x3eec45<_0x23d4e9['length']&&_0x43bfb3[_0xf5f2('0x49')]<qs['limit'](_0x10c571[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3eec45+=0x1){if(_0x23d4e9[_0x3eec45]){_0x43bfb3['push'](_0x23d4e9[_0x3eec45]);}}return{'count':_0x23d4e9[_0xf5f2('0x49')],'rows':_0x43bfb3};}})[_0xf5f2('0x15')](respondWithResult(_0x511e9e,null))[_0xf5f2('0x1f')](handleError(_0x511e9e,null));};exports[_0xf5f2('0x2b')]=function(_0x226dc6,_0x32ca09){if(_0x226dc6[_0xf5f2('0x2d')]['id']==_0x226dc6['params']['id']){return _0x32ca09[_0xf5f2('0x21')](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x226dc6[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x32ca09,null))[_0xf5f2('0x15')](removeEntity(_0x32ca09,null))[_0xf5f2('0x1f')](handleError(_0x32ca09,null));};exports[_0xf5f2('0x12b')]=function(_0xd1166a,_0x2a0f21){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0xd1166a[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2a0f21,null))[_0xf5f2('0x15')](function(_0x393b0c){if(_0x393b0c){return _0x393b0c[_0xf5f2('0x12b')](_0xd1166a['body'][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0xd1166a['body'],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x567a5b=0x0;_0x567a5b<_0xd1166a['body'][_0xf5f2('0x5d')]['length'];_0x567a5b+=0x1){socket['emit'](_0xf5f2('0x12c'),{'ChatInteractionId':Number(_0xd1166a[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x567a5b]),'UserId':Number(_0xd1166a[_0xf5f2('0x5a')]['id'])});}return _0xd1166a['body'][_0xf5f2('0x5d')];});}})[_0xf5f2('0x15')](respondWithResult(_0x2a0f21,null))['catch'](handleError(_0x2a0f21,null));};exports[_0xf5f2('0x12d')]=function(_0x8efdbe,_0x542df3){return db['User']['find']({'where':{'id':_0x8efdbe[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x542df3,null))[_0xf5f2('0x15')](function(_0x2e272a){if(_0x2e272a){return _0x2e272a[_0xf5f2('0x12d')](_0x8efdbe['query'][_0xf5f2('0x5d')])['then'](function(){if(_[_0xf5f2('0xb2')](_0x8efdbe[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x544eff=0x0;_0x544eff<_0x8efdbe['query']['ids'][_0xf5f2('0x49')];_0x544eff+=0x1){socket[_0xf5f2('0xa7')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x8efdbe['query'][_0xf5f2('0x5d')][_0x544eff]),'UserId':Number(_0x8efdbe[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x12e'),{'ChatInteractionId':Number(_0x8efdbe[_0xf5f2('0x43')]['ids']),'UserId':Number(_0x8efdbe[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x542df3,null))[_0xf5f2('0x1f')](handleError(_0x542df3,null));};exports[_0xf5f2('0x12f')]=function(_0x535549,_0x1227e6){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x535549['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x1227e6,null))[_0xf5f2('0x15')](function(_0x1fe412){if(_0x1fe412){return _0x1fe412[_0xf5f2('0x12f')](_0x535549['body']['ids'],_[_0xf5f2('0x5e')](_0x535549[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x2f3a66=0x0;_0x2f3a66<_0x535549[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x2f3a66+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x535549[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x2f3a66]),'UserId':Number(_0x535549[_0xf5f2('0x5a')]['id'])});}return _0x535549[_0xf5f2('0x59')]['ids'];});}})[_0xf5f2('0x15')](respondWithResult(_0x1227e6,null))['catch'](handleError(_0x1227e6,null));};exports[_0xf5f2('0x130')]=function(_0x1fd9d4,_0x30f689){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x1fd9d4[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x30f689,null))[_0xf5f2('0x15')](function(_0x2da7e7){if(_0x2da7e7){return _0x2da7e7['removeMailInteractions'](_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')])[_0xf5f2('0x15')](function(){if(_[_0xf5f2('0xb2')](_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x154d7f=0x0;_0x154d7f<_0x1fd9d4[_0xf5f2('0x43')]['ids'][_0xf5f2('0x49')];_0x154d7f+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x131'),{'MailInteractionId':Number(_0x1fd9d4[_0xf5f2('0x43')]['ids'][_0x154d7f]),'UserId':Number(_0x1fd9d4[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x131'),{'MailInteractionId':Number(_0x1fd9d4[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x1fd9d4[_0xf5f2('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x30f689,null))['catch'](handleError(_0x30f689,null));};exports[_0xf5f2('0x132')]=function(_0x380e9a,_0x2d6951){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x380e9a[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2d6951,null))[_0xf5f2('0x15')](function(_0x2af22e){if(_0x2af22e){return _0x2af22e[_0xf5f2('0x132')](_0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x380e9a[_0xf5f2('0x59')],['ids','id'])||{})[_0xf5f2('0x133')](function(){for(var _0x4b99f8=0x0;_0x4b99f8<_0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')]['length'];_0x4b99f8+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x134'),{'FaxInteractionId':Number(_0x380e9a['body']['ids'][_0x4b99f8]),'UserId':Number(_0x380e9a[_0xf5f2('0x5a')]['id'])});}return _0x380e9a[_0xf5f2('0x59')][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x2d6951,null))[_0xf5f2('0x1f')](handleError(_0x2d6951,null));};exports[_0xf5f2('0x135')]=function(_0x5e1623,_0xaebfa8){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x5e1623[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xaebfa8,null))[_0xf5f2('0x15')](function(_0x48d544){if(_0x48d544){return _0x48d544[_0xf5f2('0x135')](_0x5e1623[_0xf5f2('0x43')]['ids'])['then'](function(){if(_[_0xf5f2('0xb2')](_0x5e1623['query'][_0xf5f2('0x5d')])){for(var _0x42d35b=0x0;_0x42d35b<_0x5e1623['query']['ids'][_0xf5f2('0x49')];_0x42d35b+=0x1){socket['emit'](_0xf5f2('0x136'),{'FaxInteractionId':Number(_0x5e1623['query'][_0xf5f2('0x5d')][_0x42d35b]),'UserId':Number(_0x5e1623[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x136'),{'FaxInteractionId':Number(_0x5e1623[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x5e1623['params']['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0xaebfa8,null))[_0xf5f2('0x1f')](handleError(_0xaebfa8,null));};exports[_0xf5f2('0x137')]=function(_0x364603,_0x22a98e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x364603['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x22a98e,null))['then'](function(_0x9f404b){if(_0x9f404b){return _0x9f404b[_0xf5f2('0x137')](_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x364603[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})[_0xf5f2('0x133')](function(){for(var _0x2379d7=0x0;_0x2379d7<_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x2379d7+=0x1){socket[_0xf5f2('0xa7')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x2379d7]),'UserId':Number(_0x364603[_0xf5f2('0x5a')]['id'])});}return _0x364603[_0xf5f2('0x59')][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x22a98e,null))['catch'](handleError(_0x22a98e,null));};exports[_0xf5f2('0x138')]=function(_0x4a7d7e,_0x14a4ba){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x4a7d7e['params']['id']}})['then'](handleEntityNotFound(_0x14a4ba,null))['then'](function(_0x3434b6){if(_0x3434b6){return _0x3434b6['removeSmsInteractions'](_0x4a7d7e[_0xf5f2('0x43')]['ids'])[_0xf5f2('0x15')](function(){if(_['isArray'](_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')])){for(var _0x56d2a6=0x0;_0x56d2a6<_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x56d2a6+=0x1){socket['emit'](_0xf5f2('0x139'),{'SmsInteractionId':Number(_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0x56d2a6]),'UserId':Number(_0x4a7d7e[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')](_0xf5f2('0x139'),{'SmsInteractionId':Number(_0x4a7d7e[_0xf5f2('0x43')][_0xf5f2('0x5d')]),'UserId':Number(_0x4a7d7e[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0x14a4ba,null))[_0xf5f2('0x1f')](handleError(_0x14a4ba,null));};exports[_0xf5f2('0x13a')]=function(_0x15a8d8,_0x34d01e){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x15a8d8['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x34d01e,null))[_0xf5f2('0x15')](function(_0x39fd4c){if(_0x39fd4c){return _0x39fd4c[_0xf5f2('0x13a')](_0x15a8d8[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x15a8d8[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})[_0xf5f2('0x133')](function(){for(var _0x16dbf0=0x0;_0x16dbf0<_0x15a8d8['body']['ids'][_0xf5f2('0x49')];_0x16dbf0+=0x1){socket['emit'](_0xf5f2('0x13b'),{'OpenchannelInteractionId':Number(_0x15a8d8[_0xf5f2('0x59')]['ids'][_0x16dbf0]),'UserId':Number(_0x15a8d8[_0xf5f2('0x5a')]['id'])});}return _0x15a8d8['body'][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x34d01e,null))[_0xf5f2('0x1f')](handleError(_0x34d01e,null));};exports[_0xf5f2('0x13c')]=function(_0x79bed6,_0xf8e2d7){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x79bed6[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf8e2d7,null))['then'](function(_0x4f256d){if(_0x4f256d){return _0x4f256d[_0xf5f2('0x13c')](_0x79bed6['query']['ids'])['then'](function(){if(_[_0xf5f2('0xb2')](_0x79bed6['query'][_0xf5f2('0x5d')])){for(var _0x1e7810=0x0;_0x1e7810<_0x79bed6[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x1e7810+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x13d'),{'OpenchannelInteractionId':Number(_0x79bed6[_0xf5f2('0x43')][_0xf5f2('0x5d')][_0x1e7810]),'UserId':Number(_0x79bed6[_0xf5f2('0x5a')]['id'])});}}else{socket[_0xf5f2('0xa7')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x79bed6[_0xf5f2('0x43')]['ids']),'UserId':Number(_0x79bed6[_0xf5f2('0x5a')]['id'])});}});}})[_0xf5f2('0x15')](respondWithStatusCode(_0xf8e2d7,null))[_0xf5f2('0x1f')](handleError(_0xf8e2d7,null));};exports[_0xf5f2('0x13e')]=function(_0x4c30a3,_0x46f277){return db['User']['find']({'where':{'id':_0x4c30a3[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x46f277,null))['then'](function(_0x2441d8){if(_0x2441d8){return _0x2441d8['addWhatsappInteractions'](_0x4c30a3[_0xf5f2('0x59')][_0xf5f2('0x5d')],_['omit'](_0x4c30a3[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{})['spread'](function(){for(var _0x27bc7a=0x0;_0x27bc7a<_0x4c30a3['body'][_0xf5f2('0x5d')][_0xf5f2('0x49')];_0x27bc7a+=0x1){socket[_0xf5f2('0xa7')](_0xf5f2('0x13f'),{'WhatsappInteractionId':Number(_0x4c30a3[_0xf5f2('0x59')][_0xf5f2('0x5d')][_0x27bc7a]),'UserId':Number(_0x4c30a3[_0xf5f2('0x5a')]['id'])});}return _0x4c30a3['body'][_0xf5f2('0x5d')];});}})['then'](respondWithResult(_0x46f277,null))[_0xf5f2('0x1f')](handleError(_0x46f277,null));};exports[_0xf5f2('0x140')]=function(_0x46d313,_0x9fd15c){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x46d313[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x9fd15c,null))[_0xf5f2('0x15')](function(_0x194fd0){if(_0x194fd0){return _0x194fd0[_0xf5f2('0x140')](_0x46d313[_0xf5f2('0x43')]['ids']);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x9fd15c,null))[_0xf5f2('0x1f')](handleError(_0x9fd15c,null));};exports['getVoicePrefixes']=function(_0x57c09f,_0x3ffc04){var _0x107578={};var _0x1e436b={};var _0x2bfac1;var _0x5c3919;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x57c09f['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x3ffc04,null))[_0xf5f2('0x15')](function(_0x24c740){if(_0x24c740){_0x2bfac1=_0x24c740;_0x1e436b[_0xf5f2('0x52')]=_['keys'](db['VoicePrefix'][_0xf5f2('0x3c')]);_0x1e436b['query']=_[_0xf5f2('0xcb')](_0x57c09f[_0xf5f2('0x43')]);_0x1e436b[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x1e436b[_0xf5f2('0x52')],_0x1e436b[_0xf5f2('0x43')]);_0x107578[_0xf5f2('0x45')]=_['intersection'](_0x1e436b[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x107578[_0xf5f2('0x45')]=_0x107578[_0xf5f2('0x45')]['length']?_0x107578['attributes']:_0x1e436b[_0xf5f2('0x52')];_0x107578[_0xf5f2('0xcc')]=qs['sort'](_0x57c09f['query'][_0xf5f2('0xcd')]);_0x107578[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x57c09f['query'],_0x1e436b[_0xf5f2('0x54')]));if(_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x107578[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x107578[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x107578[_0xf5f2('0x45')],function(_0x24a1f5){var _0x2da6f6={};_0x2da6f6[_0x24a1f5]={'$like':'%'+_0x57c09f[_0xf5f2('0x43')]['filter']+'%'};return _0x2da6f6;})});}_0x107578=_[_0xf5f2('0x58')]({},_0x107578,_0x57c09f[_0xf5f2('0xcf')]);return _0x2bfac1['getVoicePrefixes'](_0x107578);}})[_0xf5f2('0x15')](function(_0x10f388){if(_0x10f388){_0x5c3919=_0x10f388['length'];if(!_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x107578[_0xf5f2('0x26')]=qs['limit'](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x107578[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x57c09f[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x2bfac1[_0xf5f2('0x141')](_0x107578);}})[_0xf5f2('0x15')](function(_0x2d24ed){if(_0x2d24ed){return _0x2d24ed?{'count':_0x5c3919,'rows':_0x2d24ed}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x3ffc04,null))['catch'](handleError(_0x3ffc04,null));};exports[_0xf5f2('0x142')]=function(_0x53567b,_0x2023e4){var _0x5db4b7={};var _0x7cc403={};var _0x383563;var _0x40ab86;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x53567b[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2023e4,null))['then'](function(_0x42c685){if(_0x42c685){_0x383563=_0x42c685;_0x7cc403[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x143')]['rawAttributes']);_0x7cc403[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x53567b[_0xf5f2('0x43')]);_0x7cc403[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x7cc403[_0xf5f2('0x52')],_0x7cc403[_0xf5f2('0x43')]);_0x5db4b7[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x7cc403[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x53567b[_0xf5f2('0x43')]['fields']));_0x5db4b7[_0xf5f2('0x45')]=_0x5db4b7[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5db4b7[_0xf5f2('0x45')]:_0x7cc403[_0xf5f2('0x52')];_0x5db4b7['order']=qs[_0xf5f2('0xcd')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5db4b7['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x53567b[_0xf5f2('0x43')],_0x7cc403[_0xf5f2('0x54')]));if(_0x53567b['query'][_0xf5f2('0x31')]){_0x5db4b7[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x5db4b7[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x5db4b7[_0xf5f2('0x45')],function(_0x145d48){var _0x3e54a0={};_0x3e54a0[_0x145d48]={'$like':'%'+_0x53567b['query'][_0xf5f2('0x31')]+'%'};return _0x3e54a0;})});}_0x5db4b7=_['merge']({},_0x5db4b7,_0x53567b[_0xf5f2('0xcf')]);return _0x383563['getFaxAccounts'](_0x5db4b7);}})['then'](function(_0x193de7){if(_0x193de7){_0x40ab86=_0x193de7[_0xf5f2('0x49')];if(!_0x53567b[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x5db4b7[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5db4b7['offset']=qs[_0xf5f2('0x24')](_0x53567b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x383563[_0xf5f2('0x142')](_0x5db4b7);}})[_0xf5f2('0x15')](function(_0x5e1cb1){if(_0x5e1cb1){return _0x5e1cb1?{'count':_0x40ab86,'rows':_0x5e1cb1}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x2023e4,null))[_0xf5f2('0x1f')](handleError(_0x2023e4,null));};exports[_0xf5f2('0x144')]=function(_0x17b001,_0x5d414f){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x17b001['params']['id']}})['then'](handleEntityNotFound(_0x5d414f,null))[_0xf5f2('0x15')](function(_0x11165d){if(_0x11165d){return _0x11165d[_0xf5f2('0x144')](_0x17b001[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x17b001[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x5d414f,null))[_0xf5f2('0x1f')](handleError(_0x5d414f,null));};exports[_0xf5f2('0x145')]=function(_0x2abc6b,_0xb5b3b0){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2abc6b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xb5b3b0,null))[_0xf5f2('0x15')](function(_0x5da960){if(_0x5da960){return _0x5da960[_0xf5f2('0x145')](_0x2abc6b['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0xb5b3b0,null))['catch'](handleError(_0xb5b3b0,null));};exports[_0xf5f2('0x146')]=function(_0x5a55ba,_0xc8ad75){var _0x1491de={};var _0x3c55c3={};var _0x23e263;var _0x158c61;return db['User'][_0xf5f2('0x95')]({'where':{'id':_0x5a55ba['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xc8ad75,null))[_0xf5f2('0x15')](function(_0x2704d3){if(_0x2704d3){_0x23e263=_0x2704d3;_0x3c55c3[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x147')][_0xf5f2('0x3c')]);_0x3c55c3[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x5a55ba[_0xf5f2('0x43')]);_0x3c55c3[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3c55c3['model'],_0x3c55c3[_0xf5f2('0x43')]);_0x1491de['attributes']=_[_0xf5f2('0x55')](_0x3c55c3['model'],qs[_0xf5f2('0x56')](_0x5a55ba['query'][_0xf5f2('0x56')]));_0x1491de[_0xf5f2('0x45')]=_0x1491de[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x1491de[_0xf5f2('0x45')]:_0x3c55c3[_0xf5f2('0x52')];_0x1491de['order']=qs[_0xf5f2('0xcd')](_0x5a55ba['query'][_0xf5f2('0xcd')]);_0x1491de[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x5a55ba[_0xf5f2('0x43')],_0x3c55c3[_0xf5f2('0x54')]));if(_0x5a55ba[_0xf5f2('0x43')]['filter']){_0x1491de[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x1491de[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x1491de[_0xf5f2('0x45')],function(_0x557f82){var _0x1f6be5={};_0x1f6be5[_0x557f82]={'$like':'%'+_0x5a55ba[_0xf5f2('0x43')]['filter']+'%'};return _0x1f6be5;})});}_0x1491de=_[_0xf5f2('0x58')]({},_0x1491de,_0x5a55ba[_0xf5f2('0xcf')]);return _0x23e263[_0xf5f2('0x146')](_0x1491de);}})[_0xf5f2('0x15')](function(_0x455926){if(_0x455926){_0x158c61=_0x455926[_0xf5f2('0x49')];if(!_0x5a55ba[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x1491de[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x5a55ba[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x1491de[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x5a55ba[_0xf5f2('0x43')]['offset']);}return _0x23e263[_0xf5f2('0x146')](_0x1491de);}})['then'](function(_0x54c9ba){if(_0x54c9ba){return _0x54c9ba?{'count':_0x158c61,'rows':_0x54c9ba}:null;}})['then'](respondWithResult(_0xc8ad75,null))[_0xf5f2('0x1f')](handleError(_0xc8ad75,null));};exports[_0xf5f2('0x148')]=function(_0x1f507b,_0x4889bc){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x1f507b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x4889bc,null))[_0xf5f2('0x15')](function(_0x1ee1fe){if(_0x1ee1fe){return _0x1ee1fe[_0xf5f2('0x148')](_0x1f507b[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x1f507b[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x4889bc,null))[_0xf5f2('0x1f')](handleError(_0x4889bc,null));};exports[_0xf5f2('0x149')]=function(_0x1248bf,_0x432dc7){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1248bf[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x432dc7,null))['then'](function(_0x3585af){if(_0x3585af){return _0x3585af[_0xf5f2('0x149')](_0x1248bf[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x432dc7,null))[_0xf5f2('0x1f')](handleError(_0x432dc7,null));};exports[_0xf5f2('0x14a')]=function(_0x38e9a7,_0xf07f58){var _0x49e9d0={};var _0x40ab51={};var _0x30f5ff;var _0x3e96c7;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x38e9a7[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0xf07f58,null))[_0xf5f2('0x15')](function(_0x239478){if(_0x239478){_0x30f5ff=_0x239478;_0x40ab51[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x14b')]['rawAttributes']);_0x40ab51[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x38e9a7[_0xf5f2('0x43')]);_0x40ab51[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x40ab51[_0xf5f2('0x52')],_0x40ab51['query']);_0x49e9d0[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x40ab51[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x38e9a7[_0xf5f2('0x43')]['fields']));_0x49e9d0[_0xf5f2('0x45')]=_0x49e9d0[_0xf5f2('0x45')]['length']?_0x49e9d0['attributes']:_0x40ab51['model'];_0x49e9d0[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x38e9a7[_0xf5f2('0x43')]['sort']);_0x49e9d0[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x38e9a7['query'],_0x40ab51['filters']));if(_0x38e9a7['query'][_0xf5f2('0x31')]){_0x49e9d0[_0xf5f2('0x42')]=_['merge'](_0x49e9d0['where'],{'$or':_['map'](_0x49e9d0['attributes'],function(_0x575e40){var _0xc6b04={};_0xc6b04[_0x575e40]={'$like':'%'+_0x38e9a7[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0xc6b04;})});}_0x49e9d0=_[_0xf5f2('0x58')]({},_0x49e9d0,_0x38e9a7[_0xf5f2('0xcf')]);return _0x30f5ff[_0xf5f2('0x14a')](_0x49e9d0);}})[_0xf5f2('0x15')](function(_0x405ffa){if(_0x405ffa){_0x3e96c7=_0x405ffa[_0xf5f2('0x49')];if(!_0x38e9a7[_0xf5f2('0x43')]['hasOwnProperty']('nolimit')){_0x49e9d0[_0xf5f2('0x26')]=qs['limit'](_0x38e9a7[_0xf5f2('0x43')]['limit']);_0x49e9d0[_0xf5f2('0x24')]=qs['offset'](_0x38e9a7[_0xf5f2('0x43')]['offset']);}return _0x30f5ff[_0xf5f2('0x14a')](_0x49e9d0);}})[_0xf5f2('0x15')](function(_0x170afd){if(_0x170afd){return _0x170afd?{'count':_0x3e96c7,'rows':_0x170afd}:null;}})[_0xf5f2('0x15')](respondWithResult(_0xf07f58,null))[_0xf5f2('0x1f')](handleError(_0xf07f58,null));};exports[_0xf5f2('0x14c')]=function(_0x3b8647,_0x2d5781){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x3b8647['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2d5781,null))[_0xf5f2('0x15')](function(_0xbdf888){if(_0xbdf888){return _0xbdf888['addOpenchannelAccounts'](_0x3b8647[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x3b8647['body'],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x2d5781,null))[_0xf5f2('0x1f')](handleError(_0x2d5781,null));};exports[_0xf5f2('0x14d')]=function(_0x2bd192,_0x39d19b){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x2bd192[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x39d19b,null))[_0xf5f2('0x15')](function(_0x21139b){if(_0x21139b){return _0x21139b[_0xf5f2('0x14d')](_0x2bd192[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x39d19b,null))['catch'](handleError(_0x39d19b,null));};exports[_0xf5f2('0x14e')]=function(_0x59e77e,_0x26d438){var _0x5e5576={};var _0x4cb6fc={};var _0x5f3c16;var _0x2694f9;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x59e77e['params']['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x26d438,null))[_0xf5f2('0x15')](function(_0x16d024){if(_0x16d024){_0x5f3c16=_0x16d024;_0x4cb6fc[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x14f')][_0xf5f2('0x3c')]);_0x4cb6fc['query']=_[_0xf5f2('0xcb')](_0x59e77e[_0xf5f2('0x43')]);_0x4cb6fc[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x4cb6fc[_0xf5f2('0x52')],_0x4cb6fc[_0xf5f2('0x43')]);_0x5e5576[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x4cb6fc[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x5e5576[_0xf5f2('0x45')]=_0x5e5576[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x5e5576[_0xf5f2('0x45')]:_0x4cb6fc['model'];_0x5e5576['order']=qs['sort'](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x5e5576[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x59e77e[_0xf5f2('0x43')],_0x4cb6fc[_0xf5f2('0x54')]));if(_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x5e5576['where']=_[_0xf5f2('0x58')](_0x5e5576['where'],{'$or':_[_0xf5f2('0x33')](_0x5e5576[_0xf5f2('0x45')],function(_0x27da4c){var _0x465d96={};_0x465d96[_0x27da4c]={'$like':'%'+_0x59e77e[_0xf5f2('0x43')]['filter']+'%'};return _0x465d96;})});}_0x5e5576=_[_0xf5f2('0x58')]({},_0x5e5576,_0x59e77e[_0xf5f2('0xcf')]);return _0x5f3c16[_0xf5f2('0x14e')](_0x5e5576);}})[_0xf5f2('0x15')](function(_0x53a20f){if(_0x53a20f){_0x2694f9=_0x53a20f[_0xf5f2('0x49')];if(!_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x5e5576[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x5e5576['offset']=qs['offset'](_0x59e77e[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x5f3c16[_0xf5f2('0x14e')](_0x5e5576);}})[_0xf5f2('0x15')](function(_0x377588){if(_0x377588){return _0x377588?{'count':_0x2694f9,'rows':_0x377588}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x26d438,null))[_0xf5f2('0x1f')](handleError(_0x26d438,null));};exports[_0xf5f2('0x150')]=function(_0x2b33e2,_0x20d9f4){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x2b33e2[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x20d9f4,null))[_0xf5f2('0x15')](function(_0x370f45){if(_0x370f45){return _0x370f45[_0xf5f2('0x150')](_0x2b33e2[_0xf5f2('0x59')]['ids'],_['omit'](_0x2b33e2[_0xf5f2('0x59')],[_0xf5f2('0x5d'),'id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x20d9f4,null))['catch'](handleError(_0x20d9f4,null));};exports['removeSmsAccounts']=function(_0x30f10c,_0x1ce44a){return db['User']['find']({'where':{'id':_0x30f10c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x1ce44a,null))['then'](function(_0xc2413e){if(_0xc2413e){return _0xc2413e[_0xf5f2('0x151')](_0x30f10c['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x1ce44a,null))[_0xf5f2('0x1f')](handleError(_0x1ce44a,null));};exports[_0xf5f2('0x152')]=function(_0x15775b,_0x21b2ca){var _0x3197c2={};var _0x3eab38={};var _0x560c8a;var _0x4df92a;return db[_0xf5f2('0x3b')]['findOne']({'where':{'id':_0x15775b[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x21b2ca,null))[_0xf5f2('0x15')](function(_0x586842){if(_0x586842){_0x560c8a=_0x586842;_0x3eab38[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db['ChatWebsite'][_0xf5f2('0x3c')]);_0x3eab38['query']=_[_0xf5f2('0xcb')](_0x15775b[_0xf5f2('0x43')]);_0x3eab38[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x3eab38[_0xf5f2('0x52')],_0x3eab38[_0xf5f2('0x43')]);_0x3197c2[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x3eab38[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x3197c2[_0xf5f2('0x45')]=_0x3197c2['attributes'][_0xf5f2('0x49')]?_0x3197c2[_0xf5f2('0x45')]:_0x3eab38[_0xf5f2('0x52')];_0x3197c2[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x3197c2[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_['pick'](_0x15775b[_0xf5f2('0x43')],_0x3eab38[_0xf5f2('0x54')]));if(_0x15775b[_0xf5f2('0x43')]['filter']){_0x3197c2['where']=_[_0xf5f2('0x58')](_0x3197c2[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x3197c2[_0xf5f2('0x45')],function(_0x2bbe28){var _0xf37ba9={};_0xf37ba9[_0x2bbe28]={'$like':'%'+_0x15775b['query']['filter']+'%'};return _0xf37ba9;})});}_0x3197c2=_[_0xf5f2('0x58')]({},_0x3197c2,_0x15775b['options']);return _0x560c8a['getChatWebsites'](_0x3197c2);}})[_0xf5f2('0x15')](function(_0x185cfc){if(_0x185cfc){_0x4df92a=_0x185cfc[_0xf5f2('0x49')];if(!_0x15775b[_0xf5f2('0x43')]['hasOwnProperty'](_0xf5f2('0xd7'))){_0x3197c2[_0xf5f2('0x26')]=qs['limit'](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x3197c2['offset']=qs['offset'](_0x15775b[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x560c8a[_0xf5f2('0x152')](_0x3197c2);}})[_0xf5f2('0x15')](function(_0x13d4a8){if(_0x13d4a8){return _0x13d4a8?{'count':_0x4df92a,'rows':_0x13d4a8}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x21b2ca,null))[_0xf5f2('0x1f')](handleError(_0x21b2ca,null));};exports[_0xf5f2('0x153')]=function(_0x554870,_0x14e246){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x554870[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x14e246,null))[_0xf5f2('0x15')](function(_0x4d57ff){if(_0x4d57ff){return _0x4d57ff[_0xf5f2('0x153')](_0x554870[_0xf5f2('0x59')][_0xf5f2('0x5d')],_[_0xf5f2('0x5e')](_0x554870[_0xf5f2('0x59')],['ids','id'])||{});}})['then'](respondWithResult(_0x14e246,null))[_0xf5f2('0x1f')](handleError(_0x14e246,null));};exports[_0xf5f2('0x154')]=function(_0x35f0bd,_0x1404f0){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x35f0bd[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1404f0,null))[_0xf5f2('0x15')](function(_0x3fbcef){if(_0x3fbcef){return _0x3fbcef[_0xf5f2('0x154')](_0x35f0bd[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x1404f0,null))[_0xf5f2('0x1f')](handleError(_0x1404f0,null));};exports[_0xf5f2('0x155')]=function(_0x2227c0,_0x3b78df){var _0x50d5e3={};var _0x21e03a={};var _0x2b442d;var _0xea3b3a;return db['User']['findOne']({'where':{'id':_0x2227c0[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3b78df,null))[_0xf5f2('0x15')](function(_0x51ca8e){if(_0x51ca8e){_0x2b442d=_0x51ca8e;_0x21e03a[_0xf5f2('0x52')]=_[_0xf5f2('0xcb')](db[_0xf5f2('0x156')]['rawAttributes']);_0x21e03a[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x2227c0['query']);_0x21e03a[_0xf5f2('0x54')]=_[_0xf5f2('0x55')](_0x21e03a[_0xf5f2('0x52')],_0x21e03a[_0xf5f2('0x43')]);_0x50d5e3[_0xf5f2('0x45')]=_['intersection'](_0x21e03a['model'],qs[_0xf5f2('0x56')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0x50d5e3['attributes']=_0x50d5e3[_0xf5f2('0x45')][_0xf5f2('0x49')]?_0x50d5e3[_0xf5f2('0x45')]:_0x21e03a[_0xf5f2('0x52')];_0x50d5e3[_0xf5f2('0xcc')]=qs[_0xf5f2('0xcd')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0xcd')]);_0x50d5e3['where']=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x2227c0[_0xf5f2('0x43')],_0x21e03a[_0xf5f2('0x54')]));if(_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0x50d5e3[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x50d5e3[_0xf5f2('0x42')],{'$or':_[_0xf5f2('0x33')](_0x50d5e3[_0xf5f2('0x45')],function(_0x48658c){var _0x5ad4f4={};_0x5ad4f4[_0x48658c]={'$like':'%'+_0x2227c0['query']['filter']+'%'};return _0x5ad4f4;})});}_0x50d5e3=_[_0xf5f2('0x58')]({},_0x50d5e3,_0x2227c0['options']);return _0x2b442d[_0xf5f2('0x155')](_0x50d5e3);}})[_0xf5f2('0x15')](function(_0x5f3a7d){if(_0x5f3a7d){_0xea3b3a=_0x5f3a7d['length'];if(!_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0x50d5e3[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x50d5e3[_0xf5f2('0x24')]=qs['offset'](_0x2227c0[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x2b442d['getWhatsappAccounts'](_0x50d5e3);}})['then'](function(_0xad30df){if(_0xad30df){return _0xad30df?{'count':_0xea3b3a,'rows':_0xad30df}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x3b78df,null))[_0xf5f2('0x1f')](handleError(_0x3b78df,null));};exports[_0xf5f2('0x157')]=function(_0x2eec63,_0x37d2eb){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2eec63[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x37d2eb,null))['then'](function(_0x396b32){if(_0x396b32){return _0x396b32[_0xf5f2('0x157')](_0x2eec63['body']['ids'],_['omit'](_0x2eec63['body'],[_0xf5f2('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x37d2eb,null))[_0xf5f2('0x1f')](handleError(_0x37d2eb,null));};exports[_0xf5f2('0x158')]=function(_0x4ea2c7,_0x4e399c){return db[_0xf5f2('0x3b')]['find']({'where':{'id':_0x4ea2c7[_0xf5f2('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4e399c,null))[_0xf5f2('0x15')](function(_0xb5f1d0){if(_0xb5f1d0){return _0xb5f1d0[_0xf5f2('0x158')](_0x4ea2c7['query'][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x4e399c,null))[_0xf5f2('0x1f')](handleError(_0x4e399c,null));};exports[_0xf5f2('0x159')]=function(_0x12cc6c,_0x48302a){var _0xa0cd4e={};var _0x2b8e44={};var _0x14ff33;var _0x2f3923;return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0x12cc6c[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x48302a,null))[_0xf5f2('0x15')](function(_0x4a1534){if(_0x4a1534){_0x14ff33=_0x4a1534;_0x2b8e44[_0xf5f2('0x52')]=_['keys'](db[_0xf5f2('0x15a')]['rawAttributes']);_0x2b8e44[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x12cc6c[_0xf5f2('0x43')]);_0x2b8e44[_0xf5f2('0x54')]=_['intersection'](_0x2b8e44[_0xf5f2('0x52')],_0x2b8e44['query']);_0xa0cd4e[_0xf5f2('0x45')]=_[_0xf5f2('0x55')](_0x2b8e44[_0xf5f2('0x52')],qs['fields'](_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x56')]));_0xa0cd4e[_0xf5f2('0x45')]=_0xa0cd4e[_0xf5f2('0x45')]['length']?_0xa0cd4e[_0xf5f2('0x45')]:_0x2b8e44[_0xf5f2('0x52')];_0xa0cd4e[_0xf5f2('0xcc')]=qs['sort'](_0x12cc6c['query']['sort']);_0xa0cd4e[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x12cc6c['query'],_0x2b8e44[_0xf5f2('0x54')]));if(_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x31')]){_0xa0cd4e[_0xf5f2('0x42')]=_['merge'](_0xa0cd4e['where'],{'$or':_[_0xf5f2('0x33')](_0xa0cd4e[_0xf5f2('0x45')],function(_0x4b27f4){var _0x1ebabe={};_0x1ebabe[_0x4b27f4]={'$like':'%'+_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'};return _0x1ebabe;})});}_0xa0cd4e=_['merge']({},_0xa0cd4e,_0x12cc6c[_0xf5f2('0xcf')]);return _0x14ff33[_0xf5f2('0x159')](_0xa0cd4e);}})[_0xf5f2('0x15')](function(_0x576f10){if(_0x576f10){_0x2f3923=_0x576f10[_0xf5f2('0x49')];if(!_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0xd0')]('nolimit')){_0xa0cd4e[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x12cc6c['query'][_0xf5f2('0x26')]);_0xa0cd4e[_0xf5f2('0x24')]=qs[_0xf5f2('0x24')](_0x12cc6c[_0xf5f2('0x43')][_0xf5f2('0x24')]);}return _0x14ff33[_0xf5f2('0x159')](_0xa0cd4e);}})[_0xf5f2('0x15')](function(_0x3d09f1){if(_0x3d09f1){return _0x3d09f1?{'count':_0x2f3923,'rows':_0x3d09f1}:null;}})[_0xf5f2('0x15')](respondWithResult(_0x48302a,null))[_0xf5f2('0x1f')](handleError(_0x48302a,null));};exports[_0xf5f2('0x15b')]=function(_0x3986a3,_0x2dc897){return db['User'][_0xf5f2('0x37')]({'where':{'id':_0x3986a3[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2dc897,null))[_0xf5f2('0x15')](function(_0x47b682){if(_0x47b682){return _0x47b682[_0xf5f2('0x15b')](_0x3986a3[_0xf5f2('0x59')]['ids'],_[_0xf5f2('0x5e')](_0x3986a3[_0xf5f2('0x59')],['ids','id'])||{});}})[_0xf5f2('0x15')](respondWithResult(_0x2dc897,null))[_0xf5f2('0x1f')](handleError(_0x2dc897,null));};exports[_0xf5f2('0x15c')]=function(_0x2918b7,_0x15a02f){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x2918b7[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x15a02f,null))[_0xf5f2('0x15')](function(_0x4384a){if(_0x4384a){return _0x4384a['removeSquareProjects'](_0x2918b7[_0xf5f2('0x43')][_0xf5f2('0x5d')]);}})[_0xf5f2('0x15')](respondWithStatusCode(_0x15a02f,null))[_0xf5f2('0x1f')](handleError(_0x15a02f,null));};exports[_0xf5f2('0x15d')]=function(_0x37cd85,_0x15647e){var _0x2e8c1f={},_0x316f9d={},_0x220158={'count':0x0,'rows':[]};var _0xe2c7e8=db[_0xf5f2('0x15e')]['rawAttributes'];_0x316f9d[_0xf5f2('0x52')]=_['keys'](_0xe2c7e8);_0x316f9d[_0xf5f2('0x43')]=_[_0xf5f2('0xcb')](_0x37cd85[_0xf5f2('0x43')]);_0x316f9d[_0xf5f2('0x54')]=_['intersection'](_0x316f9d['model'],_0x316f9d[_0xf5f2('0x43')]);_0x316f9d[_0xf5f2('0x54')]=_[_0xf5f2('0x15f')](_0x316f9d['filters'],[_0xf5f2('0x160'),_0xf5f2('0x161'),'$gt',_0xf5f2('0x162'),_0xf5f2('0x163'),_0xf5f2('0x164'),_0xf5f2('0x165'),_0xf5f2('0x166'),_0xf5f2('0x167'),_0xf5f2('0x168'),_0xf5f2('0x169'),'$in','$notIn',_0xf5f2('0x16a'),_0xf5f2('0x16b'),_0xf5f2('0x16c'),'$notILike',_0xf5f2('0x16a'),'$overlap','$contains',_0xf5f2('0x16d'),_0xf5f2('0x16e')]);_0x2e8c1f['attributes']=_[_0xf5f2('0x55')](_0x316f9d[_0xf5f2('0x52')],qs[_0xf5f2('0x56')](_0x37cd85['query'][_0xf5f2('0x56')]));_0x2e8c1f[_0xf5f2('0x45')]=_0x2e8c1f['attributes']['length']?_0x2e8c1f[_0xf5f2('0x45')]:_0x316f9d[_0xf5f2('0x52')];if(!_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x2e8c1f[_0xf5f2('0x26')]=qs[_0xf5f2('0x26')](_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0x26')]);_0x2e8c1f[_0xf5f2('0x24')]=qs['offset'](_0x37cd85['query'][_0xf5f2('0x24')]);}_0x2e8c1f['order']=qs[_0xf5f2('0xcd')](_0x37cd85['query'][_0xf5f2('0xcd')]);_0x2e8c1f[_0xf5f2('0x42')]=qs[_0xf5f2('0x54')](_[_0xf5f2('0xce')](_0x37cd85['query'],_0x316f9d[_0xf5f2('0x54')]));if(_0x37cd85['query']['filter']){_0x2e8c1f[_0xf5f2('0x42')]=_[_0xf5f2('0x58')](_0x2e8c1f['where'],{'$or':_[_0xf5f2('0x33')](_0x2e8c1f[_0xf5f2('0x45')],function(_0x2dbc33){var _0x1e2ad5={};_0x1e2ad5[_0x2dbc33]={'$like':'%'+_0x37cd85['query']['filter']+'%'};return _0x1e2ad5;})});}_0x2e8c1f[_0xf5f2('0x42')]={'$and':[_0x2e8c1f[_0xf5f2('0x42')],{'$or':[{'UserId':_0x37cd85['params']['id']},{'OwnerId':_0x37cd85[_0xf5f2('0x5a')]['id']}]}]};_0x2e8c1f=_[_0xf5f2('0x58')]({},_0x2e8c1f,_0x37cd85['options']);var _0x1ebfb8={'where':_0x2e8c1f['where']};return db[_0xf5f2('0x15e')][_0xf5f2('0x27')](_0x1ebfb8)[_0xf5f2('0x15')](function(_0xd34e6e){_0x220158['count']=_0xd34e6e;if(_0x37cd85[_0xf5f2('0x43')][_0xf5f2('0x44')]){_0x2e8c1f[_0xf5f2('0x57')]=[{'attributes':['id',_0xf5f2('0x16f'),_0xf5f2('0x170'),_0xf5f2('0xeb')],'model':db[_0xf5f2('0x171')],'as':_0xf5f2('0x172')},{'attributes':['id','name','dialActive'],'model':db[_0xf5f2('0xaa')],'as':'Queue'}];}return db['CmHopper'][_0xf5f2('0xab')](_0x2e8c1f);})[_0xf5f2('0x15')](function(_0x46421b){_0x220158[_0xf5f2('0x48')]=_0x46421b;return _0x220158;})[_0xf5f2('0x15')](respondWithFilteredResult(_0x15647e,_0x2e8c1f))[_0xf5f2('0x1f')](handleError(_0x15647e,null));};exports[_0xf5f2('0x173')]=function(_0xfef9fc,_0x18065a){if(!_[_0xf5f2('0x64')](_0xfef9fc['user']['id'])&&(_0xfef9fc[_0xf5f2('0x2d')][_0xf5f2('0x36')]=='admin'||_0xfef9fc[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x2d'))){return db[_0xf5f2('0x3b')][_0xf5f2('0x95')]({'where':{'id':_0xfef9fc[_0xf5f2('0x5a')]['id']},'raw':!![]})[_0xf5f2('0x15')](function(_0x469410){return authService[_0xf5f2('0x174')](_0x469410);})['then'](function(_0x314b9d){if(_0x314b9d){return _0x18065a[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')]({'api_key':_0x314b9d[_0xf5f2('0x175')]});}else{return _0x18065a[_0xf5f2('0x21')](0xcc)[_0xf5f2('0x23')]({'message':_0xf5f2('0x176')});}})['catch'](handleError(_0x18065a,0x193));}else{return _0x18065a[_0xf5f2('0x21')](0x191)[_0xf5f2('0x23')]({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x178')]=function(_0x1c5c07,_0xece647){if(!_[_0xf5f2('0x64')](_0x1c5c07[_0xf5f2('0x2d')]['id'])&&(_0x1c5c07[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x7a')||_0x1c5c07[_0xf5f2('0x2d')][_0xf5f2('0x36')]==_0xf5f2('0x2d'))){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x1c5c07[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(_0x1437f2){return authService['generateApiKey'](_0x1437f2);})['then'](function(_0x13e48b){return db['User']['update']({'apiKeyIat':_0x13e48b[_0xf5f2('0x179')],'apiKeyNonce':_0x13e48b[_0xf5f2('0x17a')]},{'where':{'id':_0x1c5c07[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](function(){return _0xece647[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')]({'api_key':_0x13e48b[_0xf5f2('0x175')]});});})[_0xf5f2('0x1f')](handleError(_0xece647,0x193));}else{return _0xece647[_0xf5f2('0x21')](0x191)['json']({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x17b')]=function(_0x18c252,_0x2e399a){if(!_[_0xf5f2('0x64')](_0x18c252[_0xf5f2('0x2d')]['id'])&&(_0x18c252[_0xf5f2('0x2d')][_0xf5f2('0x36')]=='admin'||_0x18c252['user']['role']=='user')){return db[_0xf5f2('0x3b')][_0xf5f2('0x37')]({'where':{'id':_0x18c252[_0xf5f2('0x5a')]['id']}})[_0xf5f2('0x15')](handleEntityNotFound(_0x2e399a,null))['then'](function(_0x3c81ff){if(_0x3c81ff&&_0x3c81ff['apiKeyNonce']&&_0x3c81ff[_0xf5f2('0x17c')])return _0x3c81ff;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(_0x13e759){return db[_0xf5f2('0x3b')][_0xf5f2('0x2a')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x18c252[_0xf5f2('0x5a')]['id']}});})[_0xf5f2('0x15')](respondWithStatusCode(_0x2e399a,0xc8))[_0xf5f2('0x1f')](handleError(_0x2e399a,0x193));}else{return _0x2e399a[_0xf5f2('0x21')](0x191)['json']({'message':_0xf5f2('0x177')});}};exports[_0xf5f2('0x17d')]=function(_0x18b10e,_0x204e4c){var _0x17acef=_0x18b10e[_0xf5f2('0x2d')]['get']({'plain':!![]});if(!_0x17acef){return _0x204e4c['status'](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x204e4c[_0xf5f2('0x21')](0xc8)[_0xf5f2('0x23')](_0x17acef);}};exports['getPresence']=function(_0x32ec0e,_0x394792){var _0x241985={'offset':0x0},_0x247fa5={'count':0x0,'rows':[]};Promise[_0xf5f2('0x17e')]()[_0xf5f2('0x15')](function(){if(!_0x32ec0e['query'][_0xf5f2('0x31')]&&!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')]&&!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')])return[];return Promise[_0xf5f2('0x17e')]()[_0xf5f2('0x15')](function(){var _0x346efa=[];if(!_[_0xf5f2('0x89')](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')])){_0x346efa[_0xf5f2('0x4a')](db[_0xf5f2('0x10f')][_0xf5f2('0xab')]({'attributes':['id',_0xf5f2('0x38')],'where':{'id':_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x17f')]}}));}if(!_['isEmpty'](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')])){_0x346efa['push'](db[_0xf5f2('0xaa')][_0xf5f2('0xab')]({'attributes':['id',_0xf5f2('0x38')],'type':_0xf5f2('0x181'),'where':{'id':_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x180')]}}));}return Promise[_0xf5f2('0x51')](_0x346efa);})[_0xf5f2('0x15')](function(_0x2ea99b){var _0x596c9e=_[_0xf5f2('0x11c')](_0x2ea99b)['map'](function(_0x57d4f6){return _0x57d4f6[_0xf5f2('0x129')]({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x5f'),'online'],'raw':!![]});});return Promise[_0xf5f2('0x51')](_0x596c9e);})[_0xf5f2('0x15')](function(_0x6ed3c1){var _0x57e559=_[_0xf5f2('0x11c')](_0x6ed3c1);if(!_0x32ec0e['query'][_0xf5f2('0x31')])return _0x57e559;if(_[_0xf5f2('0x89')](_0x57e559)){return db[_0xf5f2('0x3b')]['findAll']({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x5f'),'online'],'where':{'role':_0xf5f2('0x2e'),'$or':[db[_0xf5f2('0x66')][_0xf5f2('0x42')](db[_0xf5f2('0x66')]['fn'](_0xf5f2('0x182'),db['sequelize'][_0xf5f2('0x183')](_0xf5f2('0x38'))),{'$like':'%'+_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')]+'%'}}]},'raw':!![]});}else{return _(_0x57e559)[_0xf5f2('0x11c')]()['filter'](function(_0x478220){return _0x478220[_0xf5f2('0x38')]['toLowerCase']()[_0xf5f2('0x35')](_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0x31')][_0xf5f2('0xa4')]())||_0x478220[_0xf5f2('0x5f')]['toString']()['includes'](_0x32ec0e['query'][_0xf5f2('0x31')]);})[_0xf5f2('0x34')]();}})[_0xf5f2('0x15')](function(_0x39a75c){var _0x3134cd=_0xf5f2('0x38');var _0x4db609='asc';if(_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]){var _0x4db609=_0x32ec0e[_0xf5f2('0x43')]['sort'][0x0]==='-'?_0xf5f2('0x184'):_0xf5f2('0x185');var _0x3134cd=_0x4db609===_0xf5f2('0x185')?_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]:_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xcd')]['substring'](0x1);}return _(_0x39a75c)[_0xf5f2('0x186')]('id')[_0xf5f2('0x187')]([function(_0x3b7161){return _0x3134cd==='name'?_0x3b7161[_0x3134cd][_0xf5f2('0xa4')]():_0x3b7161[_0x3134cd];}],[_0x4db609])[_0xf5f2('0x33')](function(_0x9a3bdd){return _['pick'](_0x9a3bdd,['id',_0xf5f2('0x38'),'internal',_0xf5f2('0x9d')]);})['value']();})[_0xf5f2('0x15')](function(_0x2669ae){return client['request'](_0xf5f2('0x80'),_0x32ec0e)[_0xf5f2('0x15')](function(_0x1a0595){if(_0x1a0595['error'])throw new Error(_0xf5f2('0x188'));var _0x20d102=_0x1a0595[_0xf5f2('0x189')];var _0x5b53a3=jayson[_0xf5f2('0x18a')][_0xf5f2('0x13')]({'port':0x232c});return _0x5b53a3[_0xf5f2('0x14')]('Agents',_0x32ec0e)[_0xf5f2('0x15')](function(_0x27b022){if(_0x27b022[_0xf5f2('0x1b')])throw new Error(_0xf5f2('0x18b'));var _0x3f290c=_0x27b022['result'];return _['merge']({},_0x3f290c,_0x20d102);});})[_0xf5f2('0x15')](function(_0x1f376c){return _[_0xf5f2('0x33')](_0x2669ae,function(_0x16e30c){var _0x471603=_[_0xf5f2('0x37')](_0x1f376c[_0xf5f2('0x48')],['id',_0x16e30c['id']]);if(!_0x471603||!_0x16e30c[_0xf5f2('0x9d')]){_0x16e30c[_0xf5f2('0x21')]=_0xf5f2('0x18c');}else if(_0x471603['voicePause']){_0x16e30c['status']=_0xf5f2('0xff');}else{_0x16e30c[_0xf5f2('0x21')]=_[_0xf5f2('0x35')]([_0xf5f2('0x18d'),_0xf5f2('0x18e'),'unavailable',_0xf5f2('0x18f'),null,undefined],_0x471603[_0xf5f2('0x190')])?_0xf5f2('0x9d'):'busy';}return _0x16e30c;});});});})[_0xf5f2('0x15')](function(_0x41dbf2){if(!_0x32ec0e[_0xf5f2('0x43')][_0xf5f2('0xd0')](_0xf5f2('0xd7'))){_0x241985['limit']=qs[_0xf5f2('0x26')](_0x32ec0e['query'][_0xf5f2('0x26')]||0xa);_0x241985[_0xf5f2('0x24')]=qs['offset'](_0x32ec0e['query'][_0xf5f2('0x24')]);}_0x247fa5[_0xf5f2('0x27')]=_0x41dbf2['length'];_0x247fa5['rows']=_0x241985[_0xf5f2('0x26')]?_0x41dbf2[_0xf5f2('0x191')](_0x241985[_0xf5f2('0x24')],_0x241985[_0xf5f2('0x24')]+_0x241985[_0xf5f2('0x26')]):_0x41dbf2;return _0x247fa5;})[_0xf5f2('0x15')](respondWithFilteredResult(_0x394792,_0x241985))[_0xf5f2('0x1f')](handleError(_0x394792,null));};function get_open_tabs(_0x15835c,_0x3663c5){var _0x5544e4=_0x15835c['charAt'](0x0)['toUpperCase']()+_0x15835c[_0xf5f2('0x191')](0x1);var _0x11a38c={'type':db['Sequelize']['QueryTypes'][_0xf5f2('0x68')],'raw':!![]};return new BPromise(function(_0xcef92b,_0x1755d6){var _0xf22856=squel['select']()['field'](_0xf5f2('0x192')+_0x5544e4+'InteractionId','id')['field'](_0xf5f2('0x193'))[_0xf5f2('0x69')]('user_has_'+_0x15835c+_0xf5f2('0x194'),'ui')['where'](_0xf5f2('0x195'),_0x3663c5['id']);return db[_0xf5f2('0x66')][_0xf5f2('0x43')](_0xf22856[_0xf5f2('0x196')](),_0x11a38c)['then'](function(_0x26aff4){_0x3663c5[_0x5544e4+_0xf5f2('0x197')]=_0x26aff4;_0xcef92b(_0x26aff4);})[_0xf5f2('0x1f')](function(_0x16a565){_0x1755d6(_0x16a565);});});};
\ No newline at end of file
+var _0x9f0e=['bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','all','each','create','isEmpty','autoAssociation','changePassword','oldPassword','newPassword','Sequelize','authenticate','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','loginInPause','voicePause','interface','capitalize','toLowerCase','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','online','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','isValidChannel','Unknown\x20channel','remove','Queues','isArray','Queue:remove','addAvatar','userpic','file','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','download','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','findOne','sort','pick','getContacts','hasOwnProperty','CmList','List','Tag','Tags','tag','getQueues','Queue','order','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','LOCAL/%s@from-sip/n','format','intrf','user:%s','user:forcelogout','headers','socket','remoteAddress','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','resolve','logout','pause','QueuePause','type','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','smsPause','whatsapppause','pauseType','unpause','manual','%s%s','Pause','Team','getTeams','addTeams','getVoiceQueues','setDataValue','Voice','getChatQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','Openchannel','flatten','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Chat','getMailQueues','Sms','getOpenchannelQueues','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$ne','$eq','$not','$between','$notBetween','$in','$like','$iLike','$notILike','$overlap','$any','firstName','CmContact','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','iat','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','queues','teams','inbound','getAgents','lower','col','toString','desc','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','busy','slice','toUpperCase','QueryTypes','field','ui.','InteractionId','user_has_','_interactions','OpenTabs','moment','bluebird','util','path','lodash','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','register','redis','defaults','localhost','client','http','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','find','value','name','sendStatus','stack','send','index','rawAttributes','fieldName','key','getOptions','where','User','query','includeAll','include','attributes','findAll','openTabs','true','length','push','chat','rows','dataValues','sms','fax','mail','openchannel','whatsapp','show','params','model','differenceBy','keys','password','filters','intersection','fields','merge','options','includes','body','describe','addContacts','ids','omit','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','105','107','108','109','100','111','114','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x4416c6,_0x22f43b){var _0x45a064=function(_0x4fa651){while(--_0x4fa651){_0x4416c6['push'](_0x4416c6['shift']());}};_0x45a064(++_0x22f43b);}(_0x9f0e,0x116));var _0xe9f0=function(_0x1550d3,_0xb7fa34){_0x1550d3=_0x1550d3-0x0;var _0x13b0e3=_0x9f0e[_0x1550d3];return _0x13b0e3;};'use strict';var moment=require(_0xe9f0('0x0'));var BPromise=require(_0xe9f0('0x1'));var util=require(_0xe9f0('0x2'));var path=require(_0xe9f0('0x3'));var fs=require('fs');var _=require(_0xe9f0('0x4'));var squel=require('squel');var jayson=require('jayson/promise');var Redis=require(_0xe9f0('0x5'));var authService=require(_0xe9f0('0x6'));var qs=require(_0xe9f0('0x7'));var logger=require(_0xe9f0('0x8'))(_0xe9f0('0x9'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe9f0('0xa'));var db=require(_0xe9f0('0xb'))['db'];var socket=require(_0xe9f0('0xc'))(new Redis(config['redis']));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);config[_0xe9f0('0xf')]=_[_0xe9f0('0x10')](config[_0xe9f0('0xf')],{'host':_0xe9f0('0x11'),'port':0x18eb});var client=jayson[_0xe9f0('0x12')][_0xe9f0('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x6acfb,_0x5352e0,_0x39b5b1,_0x329ecd){return new BPromise(function(_0x2d2863,_0x4a82aa){var _0x207fac=_0x329ecd||client;return _0x207fac['request'](_0x6acfb,_0x39b5b1)[_0xe9f0('0x14')](function(_0xd82420){logger[_0xe9f0('0x15')](_0xe9f0('0x16'),_0x5352e0,'request\x20sent');logger[_0xe9f0('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x5352e0,_0xe9f0('0x18'),JSON[_0xe9f0('0x19')](_0xd82420));if(_0xd82420[_0xe9f0('0x1a')]){if(_0xd82420['error'][_0xe9f0('0x1b')]===0x1f4){logger[_0xe9f0('0x1a')](_0xe9f0('0x16'),_0x5352e0,_0xd82420['error'][_0xe9f0('0x1c')]);return _0x4a82aa(_0xd82420[_0xe9f0('0x1a')][_0xe9f0('0x1c')]);}logger[_0xe9f0('0x1a')](_0xe9f0('0x16'),_0x5352e0,_0xd82420[_0xe9f0('0x1a')][_0xe9f0('0x1c')]);return _0x2d2863(_0xd82420['error'][_0xe9f0('0x1c')]);}else{logger[_0xe9f0('0x15')](_0xe9f0('0x16'),_0x5352e0,'request\x20sent');_0x2d2863(_0xd82420[_0xe9f0('0x1d')][_0xe9f0('0x1c')]);}})[_0xe9f0('0x1e')](function(_0x43f399){logger['error'](_0xe9f0('0x16'),_0x5352e0,_0x43f399);_0x4a82aa(_0x43f399);});});}function respondWithStatusCode(_0xfaa312,_0x583687){_0x583687=_0x583687||0xcc;return function(_0x51e03f){if(_0x51e03f){return _0xfaa312['sendStatus'](_0x583687);}return _0xfaa312[_0xe9f0('0x1f')](_0x583687)[_0xe9f0('0x20')]();};}function respondWithResult(_0x1211ae,_0x316cdf){_0x316cdf=_0x316cdf||0xc8;return function(_0x3ce106){if(_0x3ce106){return _0x1211ae['status'](_0x316cdf)[_0xe9f0('0x21')](_0x3ce106);}};}function respondWithFilteredResult(_0x38b7ee,_0x437d43){return function(_0x10801b){if(_0x10801b){var _0x3ca991=typeof _0x437d43[_0xe9f0('0x22')]===_0xe9f0('0x23')&&typeof _0x437d43[_0xe9f0('0x24')]===_0xe9f0('0x23');var _0x3fce54=_0x10801b['count'];var _0x371095=_0x3ca991?0x0:_0x437d43[_0xe9f0('0x22')];var _0x2ddfba=_0x3ca991?_0x10801b[_0xe9f0('0x25')]:_0x437d43['offset']+_0x437d43[_0xe9f0('0x24')];var _0x2613fd;if(_0x2ddfba>=_0x3fce54){_0x2ddfba=_0x3fce54;_0x2613fd=0xc8;}else{_0x2613fd=0xce;}_0x38b7ee[_0xe9f0('0x1f')](_0x2613fd);return _0x38b7ee[_0xe9f0('0x26')](_0xe9f0('0x27'),_0x371095+'-'+_0x2ddfba+'/'+_0x3fce54)['json'](_0x10801b);}return null;};}function saveUpdates(_0x130f96){return function(_0xdc16bc){if(_0xdc16bc){return _0xdc16bc[_0xe9f0('0x28')](_0x130f96)[_0xe9f0('0x14')](function(_0xa27c84){return _0xa27c84;});}return null;};}function removeEntity(_0xd19788){return function(_0x1d788a){if(_0x1d788a){return _0x1d788a[_0xe9f0('0x29')]()[_0xe9f0('0x14')](function(){var _0x3dbe49=_0x1d788a[_0xe9f0('0x2a')]({'plain':!![]});if(_0x3dbe49[_0xe9f0('0x2b')]===_0xe9f0('0x2c'))return;var _0x2ab77d=[{'name':_0xe9f0('0x2d'),'value':_0xe9f0('0x2e'),'ignore':!![]},{'name':_0xe9f0('0x2f'),'value':_0xe9f0('0x30'),'ignore':![]},{'name':_0xe9f0('0x31'),'value':_0xe9f0('0x32'),'ignore':![]}];var _0x4089cc=_(_0x2ab77d)[_0xe9f0('0x33')](_0xe9f0('0x34'))[_0xe9f0('0x35')]('value')['value']();if(_['includes'](_0x4089cc,_0x3dbe49[_0xe9f0('0x2b')])){return;}var _0x585742=_[_0xe9f0('0x36')](_0x2ab77d,[_0xe9f0('0x37'),_0x3dbe49['role']])[_0xe9f0('0x38')];return db['UserProfileResource']['destroy']({'where':{'type':_0x585742,'resourceId':_0x3dbe49['id']}})['then'](function(){return _0x1d788a;});})[_0xe9f0('0x14')](function(){_0xd19788[_0xe9f0('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3becb9){return function(_0xb0cfc){if(!_0xb0cfc){_0x3becb9[_0xe9f0('0x39')](0x194);}return _0xb0cfc;};}function handleError(_0x4d4186,_0x523fbc){_0x523fbc=_0x523fbc||0x1f4;return function(_0x3fb04e){logger[_0xe9f0('0x1a')](_0x3fb04e[_0xe9f0('0x3a')]);if(_0x3fb04e['name']){delete _0x3fb04e[_0xe9f0('0x38')];}_0x4d4186[_0xe9f0('0x1f')](_0x523fbc)[_0xe9f0('0x3b')](_0x3fb04e);};}exports[_0xe9f0('0x3c')]=function(_0x2b38de,_0x552ec2){var _0x2ab492={},_0x3a2b23={'count':0x0,'rows':[]};var _0x2ede2=_(db['User'][_0xe9f0('0x3d')])[_0xe9f0('0x35')](function(_0x4825f2){return{'name':_0x4825f2[_0xe9f0('0x3e')],'type':_0x4825f2['type'][_0xe9f0('0x3f')]};})['filter'](function(_0x5dcbeb){return!_['includes'](['password','salt'],_0x5dcbeb[_0xe9f0('0x38')]);})[_0xe9f0('0x37')]();_0x2ab492=qs[_0xe9f0('0x40')](_0x2ede2,_0x2b38de);var _0x40c2c6={'where':_0x2ab492[_0xe9f0('0x41')]};return db[_0xe9f0('0x42')][_0xe9f0('0x25')](_0x40c2c6)[_0xe9f0('0x14')](function(_0xb06e04){_0x3a2b23['count']=_0xb06e04;if(_0x2b38de[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x2ab492[_0xe9f0('0x45')]=[{'all':!![]}];}if(!_['includes'](_0x2ab492['attributes'],'id')){_0x2ab492[_0xe9f0('0x46')]['push']('id');}return db[_0xe9f0('0x42')][_0xe9f0('0x47')](_0x2ab492);})[_0xe9f0('0x14')](function(_0x42d9d2){_0x3a2b23['rows']=_0x42d9d2;if(_0x2b38de[_0xe9f0('0x43')][_0xe9f0('0x48')]===_0xe9f0('0x49')){var _0x18faaf=[];for(var _0x37a2ac=0x0;_0x37a2ac<_0x3a2b23['rows'][_0xe9f0('0x4a')];_0x37a2ac++){_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4c'),_0x3a2b23[_0xe9f0('0x4d')][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf['push'](get_open_tabs(_0xe9f0('0x4f'),_0x3a2b23['rows'][_0x37a2ac]['dataValues']));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x50'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x3a2b23[_0xe9f0('0x4d')][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x52'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));_0x18faaf['push'](get_open_tabs(_0xe9f0('0x53'),_0x3a2b23['rows'][_0x37a2ac][_0xe9f0('0x4e')]));}return BPromise['all'](_0x18faaf)[_0xe9f0('0x14')](function(_0x2023b4){return _0x3a2b23;});}else{return _0x3a2b23;}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x552ec2,_0x2ab492))['catch'](handleError(_0x552ec2,null));};exports[_0xe9f0('0x54')]=function(_0xcf426d,_0x3e351a){var _0x22fce6={'raw':![],'where':{'id':_0xcf426d[_0xe9f0('0x55')]['id']}},_0x9a25fb={};_0x9a25fb[_0xe9f0('0x56')]=_[_0xe9f0('0x57')](_[_0xe9f0('0x58')](db[_0xe9f0('0x42')][_0xe9f0('0x3d')]),[_0xe9f0('0x59'),'salt']);_0x9a25fb['query']=_[_0xe9f0('0x58')](_0xcf426d[_0xe9f0('0x43')]);_0x9a25fb[_0xe9f0('0x5a')]=_['intersection'](_0x9a25fb[_0xe9f0('0x56')],_0x9a25fb['query']);_0x22fce6[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x9a25fb[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0xcf426d['query'][_0xe9f0('0x5c')]));_0x22fce6[_0xe9f0('0x46')]=_0x22fce6['attributes'][_0xe9f0('0x4a')]?_0x22fce6[_0xe9f0('0x46')]:_0x9a25fb[_0xe9f0('0x56')];if(_0xcf426d[_0xe9f0('0x43')]['includeAll']){_0x22fce6[_0xe9f0('0x45')]=[{'all':!![]}];}_0x22fce6=_[_0xe9f0('0x5d')]({},_0x22fce6,_0xcf426d[_0xe9f0('0x5e')]);if(!_[_0xe9f0('0x5f')](_0x22fce6[_0xe9f0('0x46')],'id')){_0x22fce6[_0xe9f0('0x46')][_0xe9f0('0x4b')]('id');}return db[_0xe9f0('0x42')]['find'](_0x22fce6)[_0xe9f0('0x14')](handleEntityNotFound(_0x3e351a,null))[_0xe9f0('0x14')](function(_0x465380){var _0x4728e7=[];values=_0x465380;if(_0xcf426d[_0xe9f0('0x43')][_0xe9f0('0x48')]===_0xe9f0('0x49')){_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4c'),_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4f'),_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs('openchannel',_0x465380[_0xe9f0('0x4e')]));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x53'),_0x465380['dataValues']));_0x4728e7['push'](get_open_tabs(_0xe9f0('0x50'),_0x465380['dataValues']));_0x4728e7[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x465380[_0xe9f0('0x4e')]));return BPromise['all'](_0x4728e7);}else{return values;}})[_0xe9f0('0x14')](function(_0x454b8a){return values;})[_0xe9f0('0x14')](respondWithResult(_0x3e351a,null))[_0xe9f0('0x1e')](handleError(_0x3e351a,null));};exports['update']=function(_0x392eae,_0x3a05e7){if(_0x392eae[_0xe9f0('0x60')]['id']){delete _0x392eae[_0xe9f0('0x60')]['id'];}delete _0x392eae['body']['role'];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x392eae[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3a05e7,null))[_0xe9f0('0x14')](saveUpdates(_0x392eae['body'],null))[_0xe9f0('0x14')](respondWithResult(_0x3a05e7,null))['catch'](handleError(_0x3a05e7,null));};exports[_0xe9f0('0x61')]=function(_0x5858a9,_0x7c05aa){return db[_0xe9f0('0x42')][_0xe9f0('0x61')]()[_0xe9f0('0x14')](respondWithResult(_0x7c05aa,null))[_0xe9f0('0x1e')](handleError(_0x7c05aa,null));};exports['addContacts']=function(_0x4e972e,_0x4bfb6d){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4e972e['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4bfb6d,null))['then'](function(_0x4f6a5b){if(_0x4f6a5b){return _0x4f6a5b[_0xe9f0('0x62')](_0x4e972e[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x4e972e[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x4bfb6d,null))['catch'](handleError(_0x4bfb6d,null));};function validateUser(_0x1255e6){return new BPromise(function(_0x248f10,_0x12d40a){if(_0x1255e6[_0xe9f0('0x65')])return _0x248f10(_0x1255e6);return db['Setting'][_0xe9f0('0x66')](0x1)[_0xe9f0('0x14')](function(_0x22b44a){if(_0x22b44a[_0xe9f0('0x67')])authService[_0xe9f0('0x68')](_0x1255e6[_0xe9f0('0x59')]);db['User'][_0xe9f0('0x69')](_0xe9f0('0x65'))[_0xe9f0('0x14')](function(_0x16f19f){if(_[_0xe9f0('0x6a')](_0x16f19f)){_0x1255e6['internal']=_0x22b44a[_0xe9f0('0x6b')]||0x1;return;}if(_[_0xe9f0('0x6a')](_0x22b44a[_0xe9f0('0x6b')])||_0x22b44a[_0xe9f0('0x6b')]===_0x16f19f){_0x1255e6[_0xe9f0('0x65')]=_0x16f19f+0x1;return;}if(_0x22b44a[_0xe9f0('0x6b')]>_0x16f19f){_0x1255e6[_0xe9f0('0x65')]=_0x22b44a[_0xe9f0('0x6b')];return;}return db[_0xe9f0('0x6c')][_0xe9f0('0x43')](_0xe9f0('0x6d'),{'type':db[_0xe9f0('0x6c')]['QueryTypes'][_0xe9f0('0x6e')]})[_0xe9f0('0x14')](function(_0x78fcdb){if(_0x78fcdb&&_0x78fcdb[_0xe9f0('0x4a')]){for(var _0x3c700e=0x0,_0x2428aa=_0x78fcdb[_0xe9f0('0x4a')];_0x3c700e<_0x2428aa&&_['isNil'](_0x1255e6[_0xe9f0('0x65')]);_0x3c700e++){if(_0x22b44a[_0xe9f0('0x6b')]<=_0x78fcdb[_0x3c700e]['from']){_0x1255e6[_0xe9f0('0x65')]=_0x78fcdb[_0x3c700e][_0xe9f0('0x6f')];}else if(_0x22b44a[_0xe9f0('0x6b')]>_0x78fcdb[_0x3c700e]['from']&&_0x22b44a[_0xe9f0('0x6b')]<=_0x78fcdb[_0x3c700e]['to']){_0x1255e6[_0xe9f0('0x65')]=_0x22b44a['min_internal'];}}}if(_[_0xe9f0('0x6a')](_0x1255e6[_0xe9f0('0x65')])){_0x1255e6['internal']=_0x16f19f+0x1;}return _0x248f10(_0x1255e6);});});})['catch'](function(_0x45466b){_0x12d40a(_0x45466b);});});}function updateUser(_0x507e02){return new BPromise(function(_0x386d7b,_0x3afb6c){try{if(_0x507e02['voicemail']){_0x507e02[_0xe9f0('0x70')]=_0x507e02[_0xe9f0('0x65')];_0x507e02[_0xe9f0('0x71')]={'mailbox':_0x507e02[_0xe9f0('0x65')],'password':_0x507e02[_0xe9f0('0x59')],'fullname':_0x507e02[_0xe9f0('0x72')],'email':_0x507e02[_0xe9f0('0x73')]};}if(_0x507e02[_0xe9f0('0x2b')]===_0xe9f0('0x30')){if(!_0x507e02['permissions'])_0x507e02[_0xe9f0('0x74')]=[_0xe9f0('0x75'),_0xe9f0('0x76'),_0xe9f0('0x77'),_0xe9f0('0x78'),_0xe9f0('0x79'),_0xe9f0('0x7a'),_0xe9f0('0x7b'),'106',_0xe9f0('0x7c'),_0xe9f0('0x7d'),_0xe9f0('0x7e'),_0xe9f0('0x7f'),_0xe9f0('0x80'),_0xe9f0('0x81'),'115'];}_0x386d7b(_0x507e02);}catch(_0x12e663){_0x3afb6c(_0x12e663);}});}exports['create']=function(_0x5dda96,_0x5ca5e5){if(_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]===_0xe9f0('0x30'))throw new Error(_0xe9f0('0x82'));if(_0x5dda96[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2e')&&_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!=='admin'){throw new Error(_0xe9f0('0x83'));}if(_0x5dda96[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2c')&&_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x84'));}return licenseUtil[_0xe9f0('0x85')]([_0x5dda96[_0xe9f0('0x60')]])['then'](function(){return validateUser(_0x5dda96['body']);})[_0xe9f0('0x14')](function(_0x27ff72){return updateUser(_0x27ff72)[_0xe9f0('0x14')](function(_0x2b4a03){if(_0x2b4a03[_0xe9f0('0x2b')]===_0xe9f0('0x2c')){_0x2b4a03[_0xe9f0('0x86')]=_0x5dda96[_0xe9f0('0x2e')]['settingsEnabled'];delete _0x2b4a03['userProfileId'];}return _0x2b4a03;});})[_0xe9f0('0x14')](function(_0x449a6a){return db['User']['create'](_0x449a6a,{'include':[{'model':db[_0xe9f0('0x71')],'as':_0xe9f0('0x71')}]});})[_0xe9f0('0x14')](function(_0xab92b){if(_0x5dda96[_0xe9f0('0x60')]['role']===_0xe9f0('0x2e'))return _0xab92b;if(_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2e'))return _0xab92b;return db[_0xe9f0('0x87')][_0xe9f0('0x36')]({'where':{'name':_0xab92b[_0xe9f0('0x2b')]==='agent'?'Agents':'Telephones','userProfileId':_0x5dda96[_0xe9f0('0x2e')][_0xe9f0('0x88')]},'raw':!![]})[_0xe9f0('0x14')](function(_0x39affc){if(!_0x39affc||_0x39affc['autoAssociation']!=0x0)return _0xab92b;return db[_0xe9f0('0x89')]['create']({'name':_0xab92b[_0xe9f0('0x38')],'resourceId':_0xab92b['id'],'type':_0x39affc['name'],'sectionId':_0x39affc['id']},{})[_0xe9f0('0x14')](function(){return _0xab92b;});})[_0xe9f0('0x1e')](function(_0x83cb0b){logger[_0xe9f0('0x1a')](_0xe9f0('0x8a'),_0x83cb0b);throw _0x83cb0b;});})[_0xe9f0('0x14')](respondWithResult(_0x5ca5e5,0xc9))['catch'](handleError(_0x5ca5e5,null));};exports[_0xe9f0('0x8b')]=function(_0x1820f6,_0x7a0ccc){var _0x470c5a=_0x1820f6[_0xe9f0('0x60')];var _0x5da556=[];if(_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==='agent')throw new Error(_0xe9f0('0x82'));if(_['some'](_0x470c5a,[_0xe9f0('0x2b'),_0xe9f0('0x2e')])&&_0x1820f6[_0xe9f0('0x2e')]['role']!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x83'));}if(_[_0xe9f0('0x8c')](_0x470c5a,['role',_0xe9f0('0x2c')])&&_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!==_0xe9f0('0x2c')){throw new Error(_0xe9f0('0x8d'));}return licenseUtil[_0xe9f0('0x85')](_0x470c5a)[_0xe9f0('0x14')](function(){return validateUser(_0x470c5a[0x0]);})['then'](function(){for(var _0x4a416c=0x1;_0x4a416c<_0x470c5a[_0xe9f0('0x4a')];_0x4a416c++){var _0x37a475=_0x470c5a[_0x4a416c-0x1][_0xe9f0('0x65')];if(!_0x470c5a[_0x4a416c]['internal'])_0x470c5a[_0x4a416c][_0xe9f0('0x65')]=_0x37a475+0x1;_0x5da556[_0xe9f0('0x4b')](validateUser(_0x470c5a[_0x4a416c]));}return BPromise[_0xe9f0('0x8e')](_0x5da556);})[_0xe9f0('0x14')](function(){_0x5da556=[];for(var _0x592592=0x0;_0x592592<_0x470c5a['length'];_0x592592++){_0x5da556[_0xe9f0('0x4b')](updateUser(_0x470c5a[_0x592592]));}return BPromise[_0xe9f0('0x8e')](_0x5da556);})['then'](function(){return BPromise[_0xe9f0('0x8f')](_0x470c5a,function(_0x5b26b1){return db['User'][_0xe9f0('0x90')](_0x5b26b1,{'include':[{'model':db[_0xe9f0('0x71')],'as':_0xe9f0('0x71')}]})[_0xe9f0('0x14')](function(_0x10c4cf){_0x5b26b1['id']=_0x10c4cf['id'];return _0x5b26b1;});});})['then'](function(_0x5761d3){if(_0x1820f6[_0xe9f0('0x60')][_0xe9f0('0x2b')]===_0xe9f0('0x2e'))return _0x5761d3;if(_0x1820f6[_0xe9f0('0x2e')][_0xe9f0('0x2b')]!=='user')return _0x5761d3;var _0x57b0d0=_['some'](_0x5761d3,function(_0xb78361){return _0xb78361['role']===_0xe9f0('0x30')||_0xb78361[_0xe9f0('0x2b')]===_0xe9f0('0x32');});if(!_0x57b0d0)return _0x5761d3;return db[_0xe9f0('0x87')][_0xe9f0('0x47')]({'where':{'name':{'$or':[_0xe9f0('0x2f'),'Telephones']},'userProfileId':_0x1820f6['user'][_0xe9f0('0x88')]},'raw':!![]})[_0xe9f0('0x14')](function(_0x55bcc4){if(_[_0xe9f0('0x91')](_0x55bcc4)||!_[_0xe9f0('0x8c')](_0x55bcc4,[_0xe9f0('0x92'),0x0]))return _0x5761d3;_0x5da556=[];var _0x22d878=_(_0x55bcc4)[_0xe9f0('0x35')](function(_0x29764d){if(_0x29764d[_0xe9f0('0x92')]===0x1)return;return _0x29764d[_0xe9f0('0x38')]===_0xe9f0('0x2f')?_0xe9f0('0x30'):_0xe9f0('0x32');})['compact']()[_0xe9f0('0x37')]();for(var _0x169951=0x0;_0x169951<_0x5761d3[_0xe9f0('0x4a')];_0x169951++){if(!_[_0xe9f0('0x5f')](_0x22d878,_0x5761d3[_0x169951][_0xe9f0('0x2b')]))return;var _0x34203f=_0x5761d3[_0x169951][_0xe9f0('0x2b')]===_0xe9f0('0x30')?_0xe9f0('0x2f'):_0xe9f0('0x31');_0x5da556[_0xe9f0('0x4b')](db['UserProfileResource'][_0xe9f0('0x90')]({'name':_0x5761d3[_0x169951][_0xe9f0('0x38')],'resourceId':_0x5761d3[_0x169951]['id'],'type':_0x34203f,'sectionId':_[_0xe9f0('0x36')](_0x55bcc4,[_0xe9f0('0x38'),_0x34203f])['id']},{}));}return BPromise[_0xe9f0('0x8e')](_0x5da556);});})[_0xe9f0('0x14')](respondWithResult(_0x7a0ccc,0xc9))[_0xe9f0('0x1e')](handleError(_0x7a0ccc,null));};exports[_0xe9f0('0x93')]=function(_0x5b32f2,_0x5c5ac9){if(_0x5b32f2[_0xe9f0('0x60')]['id']){delete _0x5b32f2[_0xe9f0('0x60')]['id'];}return db['User']['find']({'where':{'id':_0x5b32f2[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(_0x37a080){if(!_0x37a080)return null;if(_0x37a080['id']===_0x5b32f2[_0xe9f0('0x2e')]['id']){if(!_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x94')]||!_0x5b32f2['body'][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x37a080[_0xe9f0('0x97')](_0x5b32f2[_0xe9f0('0x60')]['oldPassword'])){throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x99'));}if(_0x5b32f2['body'][_0xe9f0('0x94')]===_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0x9a'));}}else if(_0x5b32f2[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==='admin'){if(!_0x5b32f2['body']['newPassword']){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x5b32f2[_0xe9f0('0x2e')]['role']===_0xe9f0('0x2e')){if(!_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')]){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0x9b'));}if(_0x37a080[_0xe9f0('0x2b')]!==_0xe9f0('0x30')){throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x82'));}}else{throw new db[(_0xe9f0('0x96'))][(_0xe9f0('0x98'))](_0xe9f0('0x82'));}return _0x37a080;})[_0xe9f0('0x14')](handleEntityNotFound(_0x5c5ac9,null))[_0xe9f0('0x14')](function(_0x1ceb54){return db[_0xe9f0('0x9c')]['findOne']({'attributes':['id',_0xe9f0('0x67'),_0xe9f0('0x9d'),'passwordHistoryLimit']})['then'](function(_0xec006){if(_0xec006[_0xe9f0('0x67')])authService[_0xe9f0('0x68')](_0x5b32f2[_0xe9f0('0x60')]['newPassword']);if(!_0xec006[_0xe9f0('0x9d')]||!_0x1ceb54[_0xe9f0('0x9e')])return _0x1ceb54;authService[_0xe9f0('0x9f')](_0x5b32f2['body'][_0xe9f0('0x95')],_0x1ceb54[_0xe9f0('0x9e')],_0xec006[_0xe9f0('0xa0')]);return _0x1ceb54;})[_0xe9f0('0x14')](saveUpdates({'password':_0x5b32f2[_0xe9f0('0x60')]['newPassword'],'passwordResetAt':_0x5b32f2['user']['id']==_0x5b32f2[_0xe9f0('0x55')]['id']?moment():null,'previousPasswords':authService[_0xe9f0('0xa1')](_0x5b32f2[_0xe9f0('0x60')][_0xe9f0('0x95')],_0x1ceb54[_0xe9f0('0x9e')])},null));})[_0xe9f0('0x14')](respondWithResult(_0x5c5ac9,null))[_0xe9f0('0x1e')](handleError(_0x5c5ac9,null));};exports[_0xe9f0('0xa2')]=function(_0x5ae9f1,_0x1aacfa){var _0x4eea8f=_0x5ae9f1['body'][_0xe9f0('0xa3')];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5ae9f1['params']['id']},'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x2b'),'online',_0xe9f0('0xa4'),_0xe9f0('0xa5'),_0xe9f0('0xa6')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x1aacfa,null))['then'](function(_0x25750e){if(_0x25750e){if(!utils['isValidChannel'](_0x4eea8f)){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Unknown\x20channel');}return _0x25750e['add'+_[_0xe9f0('0xa7')](_0x4eea8f[_0xe9f0('0xa8')]())+'Queues'](_0x5ae9f1[_0xe9f0('0x60')][_0xe9f0('0x63')],{'penalty':_0x5ae9f1[_0xe9f0('0x60')][_0xe9f0('0xa9')]||0x0})[_0xe9f0('0xaa')](function(_0x40306a){for(var _0x1cfb29=0x0;_0x1cfb29<_0x5ae9f1['body'][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1cfb29+=0x1){var _0x32eb6c={'UserId':Number(_0x5ae9f1['params']['id'])};_0x32eb6c[_[_0xe9f0('0xa7')](_0x4eea8f[_0xe9f0('0xa8')]())+_0xe9f0('0xab')]=Number(_0x5ae9f1['body'][_0xe9f0('0x63')][_0x1cfb29]);socket[_0xe9f0('0xac')]('user'+_[_0xe9f0('0xa7')](_0x4eea8f['toLowerCase']())+_0xe9f0('0xad'),_0x32eb6c);}return _0x40306a;})[_0xe9f0('0x14')](function(){if(_0x4eea8f===_0xe9f0('0xae')){return db[_0xe9f0('0xaf')][_0xe9f0('0x47')]({'where':{'id':_0x5ae9f1[_0xe9f0('0x60')]['ids']||[]},'raw':!![],'attributes':['id',_0xe9f0('0x38')]});}})[_0xe9f0('0x14')](function(_0xfe329a){var _0x1684a7=_0x25750e[_0xe9f0('0x2a')]({'plain':!![]});var _0x45e390=[];if(_0x4eea8f===_0xe9f0('0xae')&&_0x1684a7['role']==='agent'&&_0x1684a7[_0xe9f0('0xb0')]){for(var _0x3e8745=0x0;_0x3e8745<_0xfe329a['length'];_0x3e8745+=0x1){_0x45e390[_0xe9f0('0x4b')]({'membername':_0x1684a7['name'],'UserId':_0x1684a7['id'],'queue_name':_0xfe329a[_0x3e8745][_0xe9f0('0x38')],'VoiceQueueId':_0xfe329a[_0x3e8745]['id'],'interface':_[_0xe9f0('0x6a')](_0x1684a7['interface'])?util['format'](_0xe9f0('0xb1'),_0x1684a7[_0xe9f0('0x38')]):_0x1684a7[_0xe9f0('0xa6')],'paused':_0x1684a7['voicePause']||![],'penalty':_0x5ae9f1['body'][_0xe9f0('0xa9')]||0x0});}return BPromise[_0xe9f0('0x8f')](_0x45e390,function(_0x249c41){return db[_0xe9f0('0xb2')][_0xe9f0('0xb3')](_0x249c41);});}return _0x25750e;});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x1aacfa,null))[_0xe9f0('0x1e')](handleError(_0x1aacfa,null));};exports[_0xe9f0('0xb4')]=function(_0x2f65a6,_0x45edd9){var _0x423364;return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x2f65a6[_0xe9f0('0x55')]['id']},'attributes':['id','name',_0xe9f0('0x2b')]})['then'](handleEntityNotFound(_0x45edd9,null))[_0xe9f0('0x14')](function(_0x229e28){if(_0x229e28){_0x423364=_0x229e28;if(!_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')]||!utils[_0xe9f0('0xb5')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xb6'));}return _0x229e28[_0xe9f0('0xb7')+_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xb8')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](function(_0x896068){if(_[_0xe9f0('0xb9')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x46705f=0x0;_0x46705f<_0x2f65a6[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x46705f+=0x1){var _0x4a98e8={'UserId':Number(_0x2f65a6['params']['id'])};_0x4a98e8[_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+'QueueId']=Number(_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x46705f]);socket[_0xe9f0('0xac')](_0xe9f0('0x2e')+_['capitalize'](_0x2f65a6[_0xe9f0('0x43')]['channel']['toLowerCase']())+_0xe9f0('0xba'),_0x4a98e8);}}else{var _0x4a98e8={'UserId':Number(_0x2f65a6['params']['id'])};_0x4a98e8[_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xab')]=Number(_0x2f65a6['query'][_0xe9f0('0x63')]);socket[_0xe9f0('0xac')]('user'+_[_0xe9f0('0xa7')](_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')][_0xe9f0('0xa8')]())+_0xe9f0('0xba'),_0x4a98e8);}return _0x896068;})[_0xe9f0('0x14')](function(){if(_0x2f65a6[_0xe9f0('0x43')][_0xe9f0('0xa3')]===_0xe9f0('0xae')){return db['UserVoiceQueueRt'][_0xe9f0('0x29')]({'where':{'UserId':_0x2f65a6[_0xe9f0('0x55')]['id'],'VoiceQueueId':_0x2f65a6['query'][_0xe9f0('0x63')]},'individualHooks':!![]})[_0xe9f0('0x14')](function(){return _0x423364;});}return _0x423364;})[_0xe9f0('0x14')](respondWithStatusCode(_0x45edd9,null))[_0xe9f0('0x1e')](handleError(_0x45edd9,null));};exports[_0xe9f0('0xbb')]=function(_0x4e7e1a,_0x54efec){_0x4e7e1a[_0xe9f0('0x60')][_0xe9f0('0xbc')]=_0x4e7e1a[_0xe9f0('0xbd')]['filename'];return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4e7e1a[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x54efec,null))[_0xe9f0('0x14')](saveUpdates(_0x4e7e1a[_0xe9f0('0x60')],null))[_0xe9f0('0x14')](respondWithResult(_0x54efec,null))[_0xe9f0('0x1e')](handleError(_0x54efec,null));};exports[_0xe9f0('0xbe')]=function(_0x1869c1,_0x162c2e){var _0xf63dd8=path[_0xe9f0('0xbf')](config[_0xe9f0('0xc0')],_0xe9f0('0xc1'));return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1869c1['params']['id']},'attributes':['id',_0xe9f0('0xbc')],'raw':!![]})[_0xe9f0('0x14')](handleEntityNotFound(_0x162c2e,null))[_0xe9f0('0x14')](function(_0x58fe38){if(_0x58fe38){if(_[_0xe9f0('0x6a')](_0x58fe38['userpic'])){return _0x162c2e['download'](_0xf63dd8);}else{if(!fs[_0xe9f0('0xc2')](path['join'](config[_0xe9f0('0xc0')],'server/files/images/',_0x58fe38['userpic']))){return _0x162c2e[_0xe9f0('0xc3')](_0xf63dd8);}return _0x162c2e[_0xe9f0('0xc3')](path[_0xe9f0('0xbf')](config['root'],_0xe9f0('0xc4'),_0x58fe38[_0xe9f0('0xbc')]));}}})[_0xe9f0('0x1e')](handleError(_0x162c2e,null));};exports[_0xe9f0('0xc5')]=function(_0x1646cb,_0x3957d7){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1646cb[_0xe9f0('0x55')]['id']},'attributes':['id']})[_0xe9f0('0x14')](handleEntityNotFound(_0x3957d7,null))[_0xe9f0('0x14')](function(_0x360e00){var _0x1c925b=[];values=_0x360e00[_0xe9f0('0x4e')];_0x1c925b['push'](get_open_tabs(_0xe9f0('0x4c'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x4f'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x52'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b['push'](get_open_tabs(_0xe9f0('0x53'),_0x360e00['dataValues']));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x50'),_0x360e00[_0xe9f0('0x4e')]));_0x1c925b[_0xe9f0('0x4b')](get_open_tabs(_0xe9f0('0x51'),_0x360e00[_0xe9f0('0x4e')]));return BPromise[_0xe9f0('0x8e')](_0x1c925b);})['then'](function(_0x17a367){var _0x5a6222=[];if(_0x17a367){for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xc6')]['length'];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xc6')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xc7'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xc9')][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xc9')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xca'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values['OpenchannelOpenTabs'][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values['OpenchannelOpenTabs'][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcb'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values['MailOpenTabs'][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xcc')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcd'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d['createdAt']});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xce')]['length'];_0x1de13b++){var _0x4b8d2d=values['SmsOpenTabs'][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xcf'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d[_0xe9f0('0xc8')]});}for(var _0x1de13b=0x0;_0x1de13b<values[_0xe9f0('0xd0')][_0xe9f0('0x4a')];_0x1de13b++){var _0x4b8d2d=values[_0xe9f0('0xd0')][_0x1de13b];_0x5a6222[_0xe9f0('0x4b')]({'channel':_0xe9f0('0xd1'),'id':_0x4b8d2d['id'],'createdAt':_0x4b8d2d['createdAt']});}var _0xa1d44b={'count':_0x5a6222['length'],'rows':_0x5a6222};return _0xa1d44b;}else return null;})[_0xe9f0('0x14')](respondWithResult(_0x3957d7,null))[_0xe9f0('0x1e')](handleError(_0x3957d7,null));};exports['getContacts']=function(_0x490d6e,_0x4ebfcc){var _0x2b3bde={};var _0x316e88={};var _0x325708;var _0x6e7cd9;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x490d6e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4ebfcc,null))[_0xe9f0('0x14')](function(_0x5a2191){if(_0x5a2191){_0x325708=_0x5a2191;_0x316e88['model']=_[_0xe9f0('0x58')](db['CmContact'][_0xe9f0('0x3d')]);_0x316e88[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x490d6e[_0xe9f0('0x43')]);_0x316e88[_0xe9f0('0x5a')]=_['intersection'](_0x316e88[_0xe9f0('0x56')],_0x316e88[_0xe9f0('0x43')]);_0x2b3bde[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x316e88[_0xe9f0('0x56')],qs['fields'](_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x2b3bde['attributes']=_0x2b3bde[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x2b3bde[_0xe9f0('0x46')]:_0x316e88['model'];_0x2b3bde['order']=qs[_0xe9f0('0xd3')](_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x2b3bde['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x490d6e[_0xe9f0('0x43')],_0x316e88[_0xe9f0('0x5a')]));if(_0x490d6e['query'][_0xe9f0('0x33')]){_0x2b3bde[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x2b3bde[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x2b3bde[_0xe9f0('0x46')],function(_0x4bc973){var _0x218ee5={};_0x218ee5[_0x4bc973]={'$like':'%'+_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x218ee5;})});}_0x2b3bde=_[_0xe9f0('0x5d')]({},_0x2b3bde,_0x490d6e[_0xe9f0('0x5e')]);return _0x325708[_0xe9f0('0xd5')](_0x2b3bde);}})[_0xe9f0('0x14')](function(_0xd2a575){if(_0xd2a575){_0x6e7cd9=_0xd2a575[_0xe9f0('0x4a')];if(_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0x44'))){_0x2b3bde[_0xe9f0('0x45')]=[{'model':db[_0xe9f0('0xd7')],'as':_0xe9f0('0xd8'),'required':![]},{'model':db[_0xe9f0('0xd9')],'as':_0xe9f0('0xda'),'attributes':['id','name','color'],'where':_0x490d6e['query'][_0xe9f0('0xdb')]?{'id':_0x490d6e[_0xe9f0('0x43')]['tag']}:undefined,'required':_0x490d6e[_0xe9f0('0x43')]['tag']?!![]:![]}];}if(!_0x490d6e[_0xe9f0('0x43')][_0xe9f0('0xd6')]('nolimit')){_0x2b3bde[_0xe9f0('0x24')]=qs['limit'](_0x490d6e[_0xe9f0('0x43')]['limit']);_0x2b3bde['offset']=qs[_0xe9f0('0x22')](_0x490d6e[_0xe9f0('0x43')]['offset']);}return _0x325708[_0xe9f0('0xd5')](_0x2b3bde);}})[_0xe9f0('0x14')](function(_0x12df00){if(_0x12df00){return _0x12df00?{'count':_0x6e7cd9,'rows':_0x12df00}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x4ebfcc,null))[_0xe9f0('0x1e')](handleError(_0x4ebfcc,null));};exports[_0xe9f0('0xdc')]=function(_0x4e13b6,_0x34edd6){var _0x77d071;var _0x1ed935;var _0xa22b5={};var _0x5ef897;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x4e13b6[_0xe9f0('0x55')]['id']},'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x2b')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x34edd6,null))[_0xe9f0('0x14')](function(_0xba5824){if(!utils[_0xe9f0('0xb5')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xb6'));}_0x77d071=_0xba5824;var _0x32fceb={};_0x32fceb[_0xe9f0('0x56')]=_['keys'](db[_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')]['channel'])+_0xe9f0('0xdd')][_0xe9f0('0x3d')]);_0x32fceb[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x4e13b6[_0xe9f0('0x43')]);_0x32fceb[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x32fceb['model'],_0x32fceb['query']);_0xa22b5[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x32fceb[_0xe9f0('0x56')],qs['fields'](_0x4e13b6[_0xe9f0('0x43')]['fields']));_0xa22b5['attributes']=_0xa22b5[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0xa22b5['attributes']:_0x32fceb[_0xe9f0('0x56')];_0xa22b5[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xa22b5[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x4e13b6[_0xe9f0('0x43')],_0x32fceb[_0xe9f0('0x5a')]));if(_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0xa22b5[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0xa22b5[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0xa22b5['attributes'],function(_0x59d73f){var _0x1e8c61={};_0x1e8c61[_0x59d73f]={'$like':'%'+_0x4e13b6[_0xe9f0('0x43')]['filter']+'%'};return _0x1e8c61;})});}_0xa22b5=_[_0xe9f0('0x5d')]({},_0xa22b5,_0x4e13b6['options']);switch(_0x77d071[_0xe9f0('0x2b')]){case _0xe9f0('0x2c'):return db[_[_0xe9f0('0xa7')](_0x4e13b6['query'][_0xe9f0('0xa3')])+'Queue'][_0xe9f0('0x47')](_0xa22b5);case _0xe9f0('0x2e'):case _0xe9f0('0x30'):return _0x77d071[_0xe9f0('0x2a')+_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xa3')])+'Queues'](_0xa22b5);default:throw new db['Sequelize'][(_0xe9f0('0x98'))](_0xe9f0('0xdf'));}})['then'](function(_0x40d436){_0x5ef897=_0x40d436['length'];if(!_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0xa22b5[_0xe9f0('0x24')]=qs['limit'](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xa22b5[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x4e13b6[_0xe9f0('0x43')][_0xe9f0('0x22')]);}switch(_0x77d071[_0xe9f0('0x2b')]){case _0xe9f0('0x2c'):return db[_['capitalize'](_0x4e13b6['query'][_0xe9f0('0xa3')])+_0xe9f0('0xdd')][_0xe9f0('0x47')](_0xa22b5);case _0xe9f0('0x2e'):case'agent':return _0x77d071[_0xe9f0('0x2a')+_[_0xe9f0('0xa7')](_0x4e13b6[_0xe9f0('0x43')]['channel'])+_0xe9f0('0xb8')](_0xa22b5);}})[_0xe9f0('0x14')](function(_0x4e674e){return{'count':_0x5ef897,'rows':_0x4e674e};})[_0xe9f0('0x14')](respondWithResult(_0x34edd6,null))[_0xe9f0('0x1e')](handleError(_0x34edd6,null));};exports[_0xe9f0('0xe1')]=function(_0x3e4912,_0x1ee162){var _0x344755={};var _0x591b59={};var _0x242895;var _0x7b4b1;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3e4912['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1ee162,null))['then'](function(_0x1ad83c){if(_0x1ad83c){_0x242895=_0x1ad83c;_0x591b59[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0xb2')][_0xe9f0('0x3d')]);_0x591b59[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x3e4912[_0xe9f0('0x43')]);_0x591b59['filters']=_[_0xe9f0('0x5b')](_0x591b59[_0xe9f0('0x56')],_0x591b59[_0xe9f0('0x43')]);_0x344755[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x591b59['model'],qs[_0xe9f0('0x5c')](_0x3e4912[_0xe9f0('0x43')]['fields']));_0x344755[_0xe9f0('0x46')]=_0x344755[_0xe9f0('0x46')]['length']?_0x344755[_0xe9f0('0x46')]:_0x591b59[_0xe9f0('0x56')];_0x344755['order']=qs[_0xe9f0('0xd3')](_0x3e4912[_0xe9f0('0x43')]['sort']);_0x344755['where']=qs['filters'](_['pick'](_0x3e4912['query'],_0x591b59[_0xe9f0('0x5a')]));if(_0x3e4912[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x344755['where']=_[_0xe9f0('0x5d')](_0x344755[_0xe9f0('0x41')],{'$or':_['map'](_0x344755[_0xe9f0('0x46')],function(_0x16b798){var _0x149cc2={};_0x149cc2[_0x16b798]={'$like':'%'+_0x3e4912[_0xe9f0('0x43')]['filter']+'%'};return _0x149cc2;})});}_0x344755=_['merge']({},_0x344755,_0x3e4912['options']);return _0x242895[_0xe9f0('0xe1')](_0x344755);}})['then'](function(_0x35a944){if(_0x35a944){_0x7b4b1=_0x35a944['length'];if(!_0x3e4912['query'][_0xe9f0('0xd6')]('nolimit')){_0x344755[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x3e4912[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x344755['offset']=qs[_0xe9f0('0x22')](_0x3e4912['query'][_0xe9f0('0x22')]);}return _0x242895[_0xe9f0('0xe1')](_0x344755);}})[_0xe9f0('0x14')](function(_0x591513){if(_0x591513){return _0x591513?{'count':_0x7b4b1,'rows':_0x591513}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x1ee162,null))[_0xe9f0('0x1e')](handleError(_0x1ee162,null));};exports[_0xe9f0('0xe2')]=function(_0x562b95,_0x53ad49){var _0x257fc2={};var _0x58c366={};var _0x306620;var _0x51614c;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x562b95[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x53ad49,null))[_0xe9f0('0x14')](function(_0x3db1f8){if(_0x3db1f8){_0x306620=_0x3db1f8;_0x58c366[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0xe3')]['rawAttributes']);_0x58c366[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x562b95[_0xe9f0('0x43')]);_0x58c366[_0xe9f0('0x5a')]=_['intersection'](_0x58c366[_0xe9f0('0x56')],_0x58c366[_0xe9f0('0x43')]);_0x257fc2[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x58c366[_0xe9f0('0x56')],qs['fields'](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x257fc2[_0xe9f0('0x46')]=_0x257fc2[_0xe9f0('0x46')]['length']?_0x257fc2[_0xe9f0('0x46')]:_0x58c366[_0xe9f0('0x56')];_0x257fc2[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x257fc2[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x562b95[_0xe9f0('0x43')],_0x58c366[_0xe9f0('0x5a')]));if(_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x257fc2[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x257fc2[_0xe9f0('0x41')],{'$or':_['map'](_0x257fc2[_0xe9f0('0x46')],function(_0x400ed1){var _0x576f20={};_0x576f20[_0x400ed1]={'$like':'%'+_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x576f20;})});}_0x257fc2=_[_0xe9f0('0x5d')]({},_0x257fc2,_0x562b95['options']);return _0x306620['getGroups'](_0x257fc2);}})[_0xe9f0('0x14')](function(_0x58acdd){if(_0x58acdd){_0x51614c=_0x58acdd[_0xe9f0('0x4a')];if(!_0x562b95[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x257fc2['limit']=qs[_0xe9f0('0x24')](_0x562b95['query']['limit']);_0x257fc2[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x562b95[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x306620[_0xe9f0('0xe2')](_0x257fc2);}})[_0xe9f0('0x14')](function(_0x4e3d20){if(_0x4e3d20){return _0x4e3d20?{'count':_0x51614c,'rows':_0x4e3d20}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x53ad49,null))['catch'](handleError(_0x53ad49,null));};exports[_0xe9f0('0xe4')]=function(_0x2ff309,_0x193cb2){var _0x3cb18a={'raw':!![],'where':{}};var _0x5afb5c={};var _0x3ab841={'count':0x0,'rows':[]};return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x2ff309[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x193cb2,null))[_0xe9f0('0x14')](function(_0x58a314){if(_0x58a314){_0x5afb5c['model']=_['keys'](db[_0xe9f0('0xe5')][_0xe9f0('0x3d')]);_0x5afb5c['query']=_[_0xe9f0('0x58')](_0x2ff309[_0xe9f0('0x43')]);_0x5afb5c[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x5afb5c[_0xe9f0('0x56')],_0x5afb5c[_0xe9f0('0x43')]);_0x3cb18a[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x5afb5c['model'],qs[_0xe9f0('0x5c')](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x3cb18a[_0xe9f0('0x46')]=_0x3cb18a[_0xe9f0('0x46')]['length']?_0x3cb18a[_0xe9f0('0x46')]:_0x5afb5c['model'];if(!_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x3cb18a[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x2ff309['query'][_0xe9f0('0x24')]);_0x3cb18a[_0xe9f0('0x22')]=qs['offset'](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x3cb18a['order']=qs[_0xe9f0('0xd3')](_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x3cb18a[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x2ff309[_0xe9f0('0x43')],_0x5afb5c[_0xe9f0('0x5a')]));_0x3cb18a[_0xe9f0('0x41')]['UserId']=_0x58a314['id'];if(_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x3cb18a[_0xe9f0('0x41')]=_['merge'](_0x3cb18a['where'],{'$or':_[_0xe9f0('0x35')](_0x3cb18a[_0xe9f0('0x46')],function(_0x5cab9d){var _0x3a6e4e={};_0x3a6e4e[_0x5cab9d]={'$like':'%'+_0x2ff309['query']['filter']+'%'};return _0x3a6e4e;})});}_0x3cb18a=_['merge']({},_0x3cb18a,_0x2ff309['options']);return db[_0xe9f0('0xe5')][_0xe9f0('0x25')]({'where':_0x3cb18a['where']})[_0xe9f0('0x14')](function(_0x3fe6ea){_0x3ab841['count']=_0x3fe6ea;if(_0x2ff309[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x3cb18a['include']=[{'all':!![]}];}return db['VoiceRecording'][_0xe9f0('0x47')](_0x3cb18a);})['then'](function(_0x27f0d9){_0x3ab841[_0xe9f0('0x4d')]=_0x27f0d9;return _0x3ab841;});}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x193cb2,_0x3cb18a))[_0xe9f0('0x1e')](handleError(_0x193cb2,null));};exports['getScreenRecordings']=function(_0x484e2d,_0xa27b3c){var _0x17ee38={'raw':!![],'where':{}};var _0x3233f5={};var _0x1cf653={'count':0x0,'rows':[]};return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x484e2d['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xa27b3c,null))[_0xe9f0('0x14')](function(_0x2e2fb9){if(_0x2e2fb9){_0x3233f5['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0xe6')]['rawAttributes']);_0x3233f5['query']=_[_0xe9f0('0x58')](_0x484e2d['query']);_0x3233f5['filters']=_[_0xe9f0('0x5b')](_0x3233f5['model'],_0x3233f5[_0xe9f0('0x43')]);_0x17ee38[_0xe9f0('0x46')]=_['intersection'](_0x3233f5[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x17ee38[_0xe9f0('0x46')]=_0x17ee38[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x17ee38[_0xe9f0('0x46')]:_0x3233f5[_0xe9f0('0x56')];if(!_0x484e2d['query']['hasOwnProperty']('nolimit')){_0x17ee38[_0xe9f0('0x24')]=qs['limit'](_0x484e2d['query']['limit']);_0x17ee38[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x17ee38[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x17ee38[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x484e2d['query'],_0x3233f5[_0xe9f0('0x5a')]));_0x17ee38[_0xe9f0('0x41')][_0xe9f0('0xe7')]=_0x2e2fb9['id'];if(_0x484e2d[_0xe9f0('0x43')]['filter']){_0x17ee38['where']=_[_0xe9f0('0x5d')](_0x17ee38['where'],{'$or':_['map'](_0x17ee38[_0xe9f0('0x46')],function(_0x32c83c){var _0x5d094c={};_0x5d094c[_0x32c83c]={'$like':'%'+_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x5d094c;})});}_0x17ee38=_['merge']({},_0x17ee38,_0x484e2d['options']);return db[_0xe9f0('0xe6')]['count']({'where':_0x17ee38[_0xe9f0('0x41')]})[_0xe9f0('0x14')](function(_0x56389c){_0x1cf653[_0xe9f0('0x25')]=_0x56389c;if(_0x484e2d[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x17ee38[_0xe9f0('0x45')]=[{'all':!![]}];}return db[_0xe9f0('0xe6')][_0xe9f0('0x47')](_0x17ee38);})[_0xe9f0('0x14')](function(_0x531e4f){_0x1cf653['rows']=_0x531e4f;return _0x1cf653;});}})['then'](respondWithFilteredResult(_0xa27b3c,_0x17ee38))[_0xe9f0('0x1e')](handleError(_0xa27b3c,null));};exports[_0xe9f0('0xe8')]=function(_0x5b50c5,_0x5f55f8){var _0xecf079={};var _0x11897a={};var _0x2c2e0c;var _0x506e4f;return db['User']['findOne']({'where':{'id':_0x5b50c5[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x5f55f8,null))[_0xe9f0('0x14')](function(_0x2ec29e){if(_0x2ec29e){_0x2c2e0c=_0x2ec29e;_0x11897a['model']=_[_0xe9f0('0x58')](db['ChatInteraction']['rawAttributes']);_0x11897a[_0xe9f0('0x43')]=_['keys'](_0x5b50c5['query']);_0x11897a[_0xe9f0('0x5a')]=_['intersection'](_0x11897a[_0xe9f0('0x56')],_0x11897a[_0xe9f0('0x43')]);_0xecf079[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x11897a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x5b50c5['query'][_0xe9f0('0x5c')]));_0xecf079[_0xe9f0('0x46')]=_0xecf079[_0xe9f0('0x46')]['length']?_0xecf079[_0xe9f0('0x46')]:_0x11897a['model'];_0xecf079['order']=qs[_0xe9f0('0xd3')](_0x5b50c5[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xecf079[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x5b50c5[_0xe9f0('0x43')],_0x11897a[_0xe9f0('0x5a')]));if(_0x5b50c5[_0xe9f0('0x43')]['filter']){_0xecf079['where']=_[_0xe9f0('0x5d')](_0xecf079[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0xecf079[_0xe9f0('0x46')],function(_0x330367){var _0x2000d0={};_0x2000d0[_0x330367]={'$like':'%'+_0x5b50c5['query'][_0xe9f0('0x33')]+'%'};return _0x2000d0;})});}_0xecf079=_['merge']({},_0xecf079,_0x5b50c5[_0xe9f0('0x5e')]);return _0x2c2e0c[_0xe9f0('0xe8')](_0xecf079);}})[_0xe9f0('0x14')](function(_0xb366e){if(_0xb366e){_0x506e4f=_0xb366e[_0xe9f0('0x4a')];if(!_0x5b50c5['query'][_0xe9f0('0xd6')]('nolimit')){_0xecf079['limit']=qs[_0xe9f0('0x24')](_0x5b50c5[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xecf079['offset']=qs[_0xe9f0('0x22')](_0x5b50c5['query'][_0xe9f0('0x22')]);}return _0x2c2e0c[_0xe9f0('0xe8')](_0xecf079);}})[_0xe9f0('0x14')](function(_0x15fd9c){if(_0x15fd9c){return _0x15fd9c?{'count':_0x506e4f,'rows':_0x15fd9c}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x5f55f8,null))[_0xe9f0('0x1e')](handleError(_0x5f55f8,null));};exports[_0xe9f0('0xe9')]=function(_0x28dd42,_0x17cee5){var _0x31c39f={};var _0x3a3949={};var _0x5e77f5;var _0x36b491;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x28dd42[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x17cee5,null))[_0xe9f0('0x14')](function(_0x2f036a){if(_0x2f036a){_0x5e77f5=_0x2f036a;_0x3a3949[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['OpenchannelInteraction']['rawAttributes']);_0x3a3949[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x28dd42[_0xe9f0('0x43')]);_0x3a3949[_0xe9f0('0x5a')]=_['intersection'](_0x3a3949[_0xe9f0('0x56')],_0x3a3949[_0xe9f0('0x43')]);_0x31c39f['attributes']=_[_0xe9f0('0x5b')](_0x3a3949[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x31c39f[_0xe9f0('0x46')]=_0x31c39f['attributes'][_0xe9f0('0x4a')]?_0x31c39f[_0xe9f0('0x46')]:_0x3a3949[_0xe9f0('0x56')];_0x31c39f[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x28dd42['query']['sort']);_0x31c39f[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x28dd42[_0xe9f0('0x43')],_0x3a3949[_0xe9f0('0x5a')]));if(_0x28dd42[_0xe9f0('0x43')]['filter']){_0x31c39f[_0xe9f0('0x41')]=_['merge'](_0x31c39f[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x31c39f[_0xe9f0('0x46')],function(_0x39e37e){var _0x3bad57={};_0x3bad57[_0x39e37e]={'$like':'%'+_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x3bad57;})});}_0x31c39f=_[_0xe9f0('0x5d')]({},_0x31c39f,_0x28dd42[_0xe9f0('0x5e')]);return _0x5e77f5[_0xe9f0('0xe9')](_0x31c39f);}})[_0xe9f0('0x14')](function(_0x10d035){if(_0x10d035){_0x36b491=_0x10d035[_0xe9f0('0x4a')];if(!_0x28dd42[_0xe9f0('0x43')]['hasOwnProperty'](_0xe9f0('0xe0'))){_0x31c39f[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x31c39f[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x28dd42[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x5e77f5[_0xe9f0('0xe9')](_0x31c39f);}})[_0xe9f0('0x14')](function(_0x4cfaa0){if(_0x4cfaa0){return _0x4cfaa0?{'count':_0x36b491,'rows':_0x4cfaa0}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x17cee5,null))[_0xe9f0('0x1e')](handleError(_0x17cee5,null));};exports[_0xe9f0('0xea')]=function(_0x47537d,_0x3b3117){var _0x5e2adc={'raw':!![],'where':{}};var _0x398c4a={};var _0x29982b={'count':0x0,'rows':[]};return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x47537d['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3b3117,null))[_0xe9f0('0x14')](function(_0x5b5004){if(_0x5b5004){_0x398c4a[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0xeb')]['rawAttributes']);_0x398c4a[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x47537d[_0xe9f0('0x43')]);_0x398c4a[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x398c4a[_0xe9f0('0x56')],_0x398c4a[_0xe9f0('0x43')]);_0x5e2adc[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x398c4a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x47537d['query']['fields']));_0x5e2adc[_0xe9f0('0x46')]=_0x5e2adc[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x5e2adc[_0xe9f0('0x46')]:_0x398c4a[_0xe9f0('0x56')];if(!_0x47537d[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x5e2adc[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x5e2adc[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x5e2adc[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x47537d['query'][_0xe9f0('0xd3')]);_0x5e2adc[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x47537d[_0xe9f0('0x43')],_0x398c4a[_0xe9f0('0x5a')]));_0x5e2adc[_0xe9f0('0x41')][_0xe9f0('0xe7')]=_0x5b5004['id'];if(_0x47537d[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x5e2adc[_0xe9f0('0x41')]=_['merge'](_0x5e2adc['where'],{'$or':_[_0xe9f0('0x35')](_0x5e2adc[_0xe9f0('0x46')],function(_0x49b411){var _0x444377={};_0x444377[_0x49b411]={'$like':'%'+_0x47537d['query']['filter']+'%'};return _0x444377;})});}_0x5e2adc=_[_0xe9f0('0x5d')]({},_0x5e2adc,_0x47537d[_0xe9f0('0x5e')]);return db[_0xe9f0('0xeb')][_0xe9f0('0x25')]({'where':_0x5e2adc[_0xe9f0('0x41')]})[_0xe9f0('0x14')](function(_0x413808){_0x29982b[_0xe9f0('0x25')]=_0x413808;if(_0x47537d['query'][_0xe9f0('0x44')]){_0x5e2adc[_0xe9f0('0x45')]=[{'all':!![]}];}return db[_0xe9f0('0xeb')][_0xe9f0('0x47')](_0x5e2adc);})[_0xe9f0('0x14')](function(_0x45e657){_0x29982b[_0xe9f0('0x4d')]=_0x45e657;return _0x29982b;});}})[_0xe9f0('0x14')](respondWithFilteredResult(_0x3b3117,_0x5e2adc))[_0xe9f0('0x1e')](handleError(_0x3b3117,null));};exports[_0xe9f0('0xec')]=function(_0x31a31e,_0xb4687b){var _0x1d3e63={};var _0xf0dfda={};var _0x145808;var _0x2e1ee5;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x31a31e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xb4687b,null))['then'](function(_0x2ec00f){if(_0x2ec00f){_0x145808=_0x2ec00f;_0xf0dfda['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0xed')][_0xe9f0('0x3d')]);_0xf0dfda['query']=_[_0xe9f0('0x58')](_0x31a31e[_0xe9f0('0x43')]);_0xf0dfda[_0xe9f0('0x5a')]=_['intersection'](_0xf0dfda[_0xe9f0('0x56')],_0xf0dfda[_0xe9f0('0x43')]);_0x1d3e63['attributes']=_['intersection'](_0xf0dfda['model'],qs[_0xe9f0('0x5c')](_0x31a31e[_0xe9f0('0x43')]['fields']));_0x1d3e63['attributes']=_0x1d3e63[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x1d3e63[_0xe9f0('0x46')]:_0xf0dfda[_0xe9f0('0x56')];_0x1d3e63[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x1d3e63[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x31a31e[_0xe9f0('0x43')],_0xf0dfda[_0xe9f0('0x5a')]));if(_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x1d3e63['where']=_['merge'](_0x1d3e63[_0xe9f0('0x41')],{'$or':_['map'](_0x1d3e63[_0xe9f0('0x46')],function(_0x3930ac){var _0x621209={};_0x621209[_0x3930ac]={'$like':'%'+_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x621209;})});}_0x1d3e63=_['merge']({},_0x1d3e63,_0x31a31e[_0xe9f0('0x5e')]);return _0x145808[_0xe9f0('0xec')](_0x1d3e63);}})['then'](function(_0x5029d0){if(_0x5029d0){_0x2e1ee5=_0x5029d0[_0xe9f0('0x4a')];if(!_0x31a31e['query']['hasOwnProperty'](_0xe9f0('0xe0'))){_0x1d3e63[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x31a31e[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x1d3e63[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x31a31e['query'][_0xe9f0('0x22')]);}return _0x145808[_0xe9f0('0xec')](_0x1d3e63);}})[_0xe9f0('0x14')](function(_0x22d847){if(_0x22d847){return _0x22d847?{'count':_0x2e1ee5,'rows':_0x22d847}:null;}})[_0xe9f0('0x14')](respondWithResult(_0xb4687b,null))['catch'](handleError(_0xb4687b,null));};exports[_0xe9f0('0xee')]=function(_0x447856,_0x1e5045){var _0x257745={};var _0x1f29bd={};var _0x30351c;var _0x2274f7;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x447856[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1e5045,null))[_0xe9f0('0x14')](function(_0x1ab82f){if(_0x1ab82f){_0x30351c=_0x1ab82f;_0x1f29bd[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['FaxInteraction'][_0xe9f0('0x3d')]);_0x1f29bd[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x447856['query']);_0x1f29bd[_0xe9f0('0x5a')]=_['intersection'](_0x1f29bd[_0xe9f0('0x56')],_0x1f29bd[_0xe9f0('0x43')]);_0x257745[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x1f29bd['model'],qs[_0xe9f0('0x5c')](_0x447856[_0xe9f0('0x43')]['fields']));_0x257745['attributes']=_0x257745[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x257745['attributes']:_0x1f29bd[_0xe9f0('0x56')];_0x257745['order']=qs[_0xe9f0('0xd3')](_0x447856[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x257745['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x447856[_0xe9f0('0x43')],_0x1f29bd[_0xe9f0('0x5a')]));if(_0x447856[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x257745[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x257745[_0xe9f0('0x41')],{'$or':_['map'](_0x257745[_0xe9f0('0x46')],function(_0x2c4d7f){var _0x5167d4={};_0x5167d4[_0x2c4d7f]={'$like':'%'+_0x447856[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x5167d4;})});}_0x257745=_[_0xe9f0('0x5d')]({},_0x257745,_0x447856[_0xe9f0('0x5e')]);return _0x30351c[_0xe9f0('0xee')](_0x257745);}})[_0xe9f0('0x14')](function(_0x6d9bd){if(_0x6d9bd){_0x2274f7=_0x6d9bd['length'];if(!_0x447856[_0xe9f0('0x43')]['hasOwnProperty']('nolimit')){_0x257745[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x447856[_0xe9f0('0x43')]['limit']);_0x257745[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x447856[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x30351c['getFaxInteractions'](_0x257745);}})[_0xe9f0('0x14')](function(_0x14139d){if(_0x14139d){return _0x14139d?{'count':_0x2274f7,'rows':_0x14139d}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x1e5045,null))[_0xe9f0('0x1e')](handleError(_0x1e5045,null));};exports[_0xe9f0('0xef')]=function(_0x15cca0,_0x52111c){var _0x12e508={};var _0x184c77={};var _0x4f4443;var _0x5c3817;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x15cca0['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x52111c,null))[_0xe9f0('0x14')](function(_0x47295d){if(_0x47295d){_0x4f4443=_0x47295d;_0x184c77['model']=_['keys'](db[_0xe9f0('0xf0')][_0xe9f0('0x3d')]);_0x184c77['query']=_[_0xe9f0('0x58')](_0x15cca0[_0xe9f0('0x43')]);_0x184c77[_0xe9f0('0x5a')]=_['intersection'](_0x184c77[_0xe9f0('0x56')],_0x184c77[_0xe9f0('0x43')]);_0x12e508['attributes']=_[_0xe9f0('0x5b')](_0x184c77[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x12e508['attributes']=_0x12e508[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x12e508[_0xe9f0('0x46')]:_0x184c77[_0xe9f0('0x56')];_0x12e508[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x15cca0[_0xe9f0('0x43')]['sort']);_0x12e508['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x15cca0['query'],_0x184c77[_0xe9f0('0x5a')]));if(_0x15cca0['query'][_0xe9f0('0x33')]){_0x12e508[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x12e508['where'],{'$or':_[_0xe9f0('0x35')](_0x12e508[_0xe9f0('0x46')],function(_0x2c8f67){var _0x27746c={};_0x27746c[_0x2c8f67]={'$like':'%'+_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x27746c;})});}_0x12e508=_[_0xe9f0('0x5d')]({},_0x12e508,_0x15cca0[_0xe9f0('0x5e')]);return _0x4f4443[_0xe9f0('0xef')](_0x12e508);}})[_0xe9f0('0x14')](function(_0x14d906){if(_0x14d906){_0x5c3817=_0x14d906[_0xe9f0('0x4a')];if(!_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x12e508[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x15cca0[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x12e508[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x15cca0['query']['offset']);}return _0x4f4443[_0xe9f0('0xef')](_0x12e508);}})[_0xe9f0('0x14')](function(_0x15fe35){if(_0x15fe35){return _0x15fe35?{'count':_0x5c3817,'rows':_0x15fe35}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x52111c,null))['catch'](handleError(_0x52111c,null));};exports[_0xe9f0('0xf1')]=function(_0x519179,_0x545b75,_0xab8d50){var _0x346b16;var _0xc0e487;var _0x268a6b;var _0x8bdc85=!_[_0xe9f0('0x6a')](_0x519179[_0xe9f0('0x55')]['id'])?_0x519179[_0xe9f0('0x55')]['id']:!_[_0xe9f0('0x6a')](_0x519179['user']['id'])?_0x519179[_0xe9f0('0x2e')]['id']:null;return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x8bdc85,'role':{'$or':[_0xe9f0('0x2c'),_0xe9f0('0x2e'),'agent']}},'attributes':['id','name',_0xe9f0('0xf2'),'mobile','role',_0xe9f0('0x65'),'loginInPause']})['then'](function(_0x15f8c1){if(_0x15f8c1){if(_0x15f8c1[_0xe9f0('0x2b')]===_0xe9f0('0x30')){_0x346b16=_0x15f8c1;if(_0x519179['body'][_0xe9f0('0xa6')]){_0x268a6b=util['format'](_0xe9f0('0xf3'),_0x346b16[_0x519179[_0xe9f0('0x60')]['interface']]);}else if(_0x519179[_0xe9f0('0x60')]['intrf']){_0x268a6b=util[_0xe9f0('0xf4')]('SIP/%s',_0x519179[_0xe9f0('0x60')][_0xe9f0('0xf5')]);}else{_0x268a6b=util[_0xe9f0('0xf4')]('SIP/%s',_0x346b16[_0xe9f0('0x38')]);}socket['to'](util['format'](_0xe9f0('0xf6'),_0x346b16[_0xe9f0('0x38')]))['emit'](_0xe9f0('0xf7'),{'user':{'id':_0x346b16['id'],'name':_0x346b16['name']},'ip':_0x519179[_0xe9f0('0xf8')]['x-forwarded-for']||_0x519179['connection']['remoteAddress']||_0x519179[_0xe9f0('0xf9')][_0xe9f0('0xfa')]||_0x519179[_0xe9f0('0xfb')][_0xe9f0('0xf9')]['remoteAddress']});return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'membername':_0x346b16['name']},'individualHooks':!![]});}}else{throw new db[(_0xe9f0('0x96'))]['ValidationError'](_0xe9f0('0xfc'));}})['then'](function(){if(_0x346b16){return _0x346b16['getVoiceQueues']({'raw':!![]});}})[_0xe9f0('0x14')](function(_0x518f57){if(_0x346b16){var _0x4e40e5=[];if(_0x518f57){_0xc0e487=_0x518f57;if(_0xc0e487['length']){for(var _0x51e1d4=0x0;_0x51e1d4<_0xc0e487[_0xe9f0('0x4a')];_0x51e1d4++){_0x4e40e5[_0xe9f0('0x4b')]({'membername':_0x346b16[_0xe9f0('0x38')],'UserId':_0x346b16['id'],'queue_name':_0xc0e487[_0x51e1d4][_0xe9f0('0x38')],'VoiceQueueId':_0xc0e487[_0x51e1d4]['id'],'interface':_0x268a6b,'paused':_0x346b16[_0xe9f0('0xa4')]||![],'penalty':_0xc0e487[_0x51e1d4][_0xe9f0('0xfd')]||0x0});}return BPromise['each'](_0x4e40e5,function(_0x3efa36){return db[_0xe9f0('0xb2')][_0xe9f0('0xb3')](_0x3efa36);});}}}})[_0xe9f0('0x14')](function(){if(_0x346b16){return db['MemberReport'][_0xe9f0('0x47')]({'where':{'membername':_0x346b16[_0xe9f0('0x38')],'exitAt':null}});}})['then'](function(_0x490bc4){if(_0x346b16){var _0x47c5e6=[];_0x490bc4['forEach'](function(_0x3fc6c7){_0x47c5e6[_0xe9f0('0x4b')](_0x3fc6c7[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))}));});return BPromise[_0xe9f0('0x8e')](_0x47c5e6);}})[_0xe9f0('0x14')](function(){if(_0x346b16){var _0x3c96f3=[];var _0x460943=[];var _0x4c5bde=utils[_0xe9f0('0xff')]();var _0x479ce3={'membername':_0x346b16[_0xe9f0('0x38')],'interface':_0x268a6b,'enterAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'role':_0x346b16[_0xe9f0('0x2b')],'internal':_0x346b16[_0xe9f0('0x65')]};_0x4c5bde[_0xe9f0('0x100')](function(_0x2437c3){_0x3c96f3['push'](_['merge']({'channel':_0x2437c3,'type':_0xe9f0('0x101'),'data1':_0x519179[_0xe9f0('0x60')][_0xe9f0('0x102')],'data2':_0x268a6b},_0x479ce3));if(_0x346b16[_0xe9f0('0xa4')]){_0x460943[_0xe9f0('0x4b')](_['merge']({'channel':_0x2437c3,'type':_0xe9f0('0x103'),'data1':_0xe9f0('0x104')},_0x479ce3));}});return db[_0xe9f0('0x105')][_0xe9f0('0x8b')](_0x3c96f3[_0xe9f0('0x106')](_0x460943),{'individualHooks':!![]});}})['then'](function(){if(_0x346b16){return _0x346b16[_0xe9f0('0x28')]({'online':!![],'lastLoginAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x346b16['loginInPause']||![],'mailPause':_0x346b16[_0xe9f0('0xa4')]||![],'chatPause':_0x346b16[_0xe9f0('0xa4')]||![],'faxPause':_0x346b16[_0xe9f0('0xa4')]||![],'smsPause':_0x346b16[_0xe9f0('0xa4')]||![],'openchannelPause':_0x346b16[_0xe9f0('0xa4')]||![],'whatsappPause':_0x346b16[_0xe9f0('0xa4')]||![],'pauseType':_0x346b16['loginInPause']?_0xe9f0('0x104'):null,'interface':_0x268a6b,'lastPauseAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))});}})[_0xe9f0('0x14')](function(_0x44b3fe){if(_0x519179[_0xe9f0('0x107')]){return _0xab8d50();}else{return BPromise[_0xe9f0('0x108')](_0x44b3fe)[_0xe9f0('0x14')](respondWithResult(_0x545b75,null));}})[_0xe9f0('0x1e')](handleError(_0x545b75,null));};exports[_0xe9f0('0x109')]=function(_0x288ed2,_0x1bc1db){var _0x57576c;return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x288ed2['params']['id'],'role':_0xe9f0('0x30')},'attributes':['id','name',_0xe9f0('0x2b')]})[_0xe9f0('0x14')](handleEntityNotFound(_0x1bc1db,null))[_0xe9f0('0x14')](function(_0xb01504){if(_0xb01504){_0x57576c=_0xb01504;return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'membername':_0x57576c[_0xe9f0('0x38')]},'individualHooks':!![]});}})['then'](function(){return db[_0xe9f0('0x105')][_0xe9f0('0x47')]({'where':{'membername':_0x57576c[_0xe9f0('0x38')],'exitAt':null}});})[_0xe9f0('0x14')](function(_0x26437c){var _0x498654=[];_0x26437c['forEach'](function(_0x3a1b0f){_0x498654[_0xe9f0('0x4b')](_0x3a1b0f[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe'))}));});return BPromise[_0xe9f0('0x8e')](_0x498654);})[_0xe9f0('0x14')](function(){return _0x57576c[_0xe9f0('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xe9f0('0x14')](respondWithResult(_0x1bc1db,null))[_0xe9f0('0x1e')](handleError(_0x1bc1db,null));};exports[_0xe9f0('0x10a')]=function(_0x5bb8ba,_0x348567){var _0x52f5ab;return db[_0xe9f0('0xb2')][_0xe9f0('0x28')]({'paused':0x1},{'where':{'UserId':_0x5bb8ba['params']['id']},'individualHooks':!![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5bb8ba['params']['id'],'role':_0xe9f0('0x30')},'attributes':['id','name','role',_0xe9f0('0x65'),'interface']});})['then'](handleEntityNotFound(_0x348567,null))['then'](function(_0x4d4c0d){if(_0x4d4c0d){_0x52f5ab=_0x4d4c0d;return respondWithRpcPromise(_0xe9f0('0x10b'),_0xe9f0('0x10a'),{'id':_0x52f5ab['id'],'name':_0x52f5ab[_0xe9f0('0x38')],'pause':!![]});}})[_0xe9f0('0x14')](function(){if(_0x52f5ab){return db['MemberReport'][_0xe9f0('0x47')]({'where':{'membername':_0x52f5ab[_0xe9f0('0x38')],'type':_0xe9f0('0x103'),'exitAt':null}});}})[_0xe9f0('0x14')](function(_0x27df5d){if(_0x27df5d['length']){var _0x4644c4=moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x1eaa38=0x0,_0x741522=_0x27df5d[_0xe9f0('0x4a')];_0x1eaa38<_0x741522;_0x1eaa38++){_0x27df5d[_0x1eaa38]['updateAttributes']({'exitAt':_0x4644c4});}}})[_0xe9f0('0x14')](function(){var _0x49e4b7=[];var _0x100878=utils['getChannels']();_0x100878['forEach'](function(_0x112de5){_0x49e4b7[_0xe9f0('0x4b')]({'channel':_0x112de5,'membername':_0x52f5ab[_0xe9f0('0x38')],'interface':_['isNil'](_0x52f5ab['interface'])?util[_0xe9f0('0xf4')](_0xe9f0('0xb1'),_0x52f5ab[_0xe9f0('0x38')]):_0x52f5ab[_0xe9f0('0xa6')],'type':_0xe9f0('0x103'),'enterAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x5bb8ba[_0xe9f0('0x60')][_0xe9f0('0x10c')]||_0xe9f0('0x10d'),'role':_0x52f5ab[_0xe9f0('0x2b')],'internal':_0x52f5ab[_0xe9f0('0x65')]});});return db[_0xe9f0('0x105')][_0xe9f0('0x8b')](_0x49e4b7,{'individualHooks':!![]});})['then'](function(){return _0x52f5ab['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x5bb8ba[_0xe9f0('0x60')][_0xe9f0('0x10c')]||_0xe9f0('0x10d'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x348567,null))[_0xe9f0('0x1e')](handleError(_0x348567,null));};exports['unpause']=function(_0xe4cee8,_0x324007){var _0x1996f4;return db['User'][_0xe9f0('0x36')]({'where':{'id':_0xe4cee8[_0xe9f0('0x55')]['id']},'attributes':['id',_0xe9f0('0x38'),'role',_0xe9f0('0xa5'),_0xe9f0('0x10e'),_0xe9f0('0x10f'),_0xe9f0('0x110'),'openchannelPause',_0xe9f0('0x111'),_0xe9f0('0x112'),_0xe9f0('0x113'),'lastPauseAt']})[_0xe9f0('0x14')](handleEntityNotFound(_0x324007,null))[_0xe9f0('0x14')](function(_0x1f106e){if(_0x1f106e){_0x1996f4=_0x1f106e;if(_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')]&&!utils['isValidChannel'](_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')])){throw new db[(_0xe9f0('0x96'))]['ValidationError']('Unknown\x20channel');}switch(_0xe4cee8[_0xe9f0('0x60')]['channel']){case _0xe9f0('0xae'):return respondWithRpcPromise(_0xe9f0('0x10b'),_0xe9f0('0x114'),{'id':_0x1996f4['id'],'name':_0x1996f4['name'],'pause':![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0xb2')]['update']({'paused':0x0},{'where':{'UserId':_0x1996f4['id']},'individualHooks':!![]});})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x105')]['find']({'where':{'channel':_0xe4cee8[_0xe9f0('0x60')]['channel'],'membername':_0x1996f4['name'],'type':'PAUSE','exitAt':null}});})[_0xe9f0('0x14')](function(_0x129429){if(_0x129429){return _0x129429[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'data2':_0xe9f0('0x115')},{'individualHooks':!![]});}return null;})[_0xe9f0('0x14')](function(){return _0x1996f4[_0xe9f0('0x28')]({'voicePause':![]});});case'mail':case _0xe9f0('0x4c'):case _0xe9f0('0x50'):case _0xe9f0('0x4f'):case _0xe9f0('0x53'):case _0xe9f0('0x52'):return db[_0xe9f0('0x105')][_0xe9f0('0x36')]({'where':{'channel':_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')],'membername':_0x1996f4['name'],'type':_0xe9f0('0x103'),'exitAt':null}})[_0xe9f0('0x14')](function(_0xb736a2){if(_0xb736a2){return _0xb736a2['update']({'exitAt':moment()[_0xe9f0('0xf4')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe9f0('0x115')},{'individualHooks':!![]});}return null;})[_0xe9f0('0x14')](function(){var _0xd01692={};_[_0xe9f0('0x26')](_0xd01692,util['format'](_0xe9f0('0x116'),_0xe4cee8[_0xe9f0('0x60')][_0xe9f0('0xa3')],_0xe9f0('0x117')),![]);return _0x1996f4[_0xe9f0('0x28')](_0xd01692);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x1996f4['id'],'name':_0x1996f4[_0xe9f0('0x38')],'pause':![]})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0xb2')][_0xe9f0('0x28')]({'paused':0x0},{'where':{'UserId':_0x1996f4['id']}});})[_0xe9f0('0x14')](function(){return db[_0xe9f0('0x105')][_0xe9f0('0x47')]({'where':{'membername':_0x1996f4[_0xe9f0('0x38')],'type':_0xe9f0('0x103'),'exitAt':null}});})[_0xe9f0('0x14')](function(_0x51787a){var _0x4f1ab7=[];_0x51787a[_0xe9f0('0x100')](function(_0x5614b4){_0x4f1ab7[_0xe9f0('0x4b')](_0x5614b4[_0xe9f0('0x28')]({'exitAt':moment()[_0xe9f0('0xf4')](_0xe9f0('0xfe')),'data2':_0xe9f0('0x115')}));});return BPromise[_0xe9f0('0x8e')](_0x4f1ab7);})[_0xe9f0('0x14')](function(){return _0x1996f4['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x324007,null))[_0xe9f0('0x1e')](handleError(_0x324007,null));};exports['getTeams']=function(_0x3cda98,_0x293381){var _0x4c604e={};var _0x20921a={};var _0x30c14b;var _0x1a2e02;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3cda98[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x293381,null))[_0xe9f0('0x14')](function(_0x58edfa){if(_0x58edfa){_0x30c14b=_0x58edfa;_0x20921a[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x118')][_0xe9f0('0x3d')]);_0x20921a[_0xe9f0('0x43')]=_['keys'](_0x3cda98[_0xe9f0('0x43')]);_0x20921a['filters']=_[_0xe9f0('0x5b')](_0x20921a[_0xe9f0('0x56')],_0x20921a['query']);_0x4c604e[_0xe9f0('0x46')]=_['intersection'](_0x20921a[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x4c604e[_0xe9f0('0x46')]=_0x4c604e['attributes'][_0xe9f0('0x4a')]?_0x4c604e[_0xe9f0('0x46')]:_0x20921a['model'];_0x4c604e[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x4c604e[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_['pick'](_0x3cda98['query'],_0x20921a['filters']));if(_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x4c604e[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x4c604e[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x4c604e[_0xe9f0('0x46')],function(_0x3f26b4){var _0x1e85d2={};_0x1e85d2[_0x3f26b4]={'$like':'%'+_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x1e85d2;})});}_0x4c604e=_['merge']({},_0x4c604e,_0x3cda98[_0xe9f0('0x5e')]);return _0x30c14b[_0xe9f0('0x119')](_0x4c604e);}})[_0xe9f0('0x14')](function(_0x3b0c6c){if(_0x3b0c6c){_0x1a2e02=_0x3b0c6c['length'];if(!_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x4c604e[_0xe9f0('0x24')]=qs['limit'](_0x3cda98['query']['limit']);_0x4c604e['offset']=qs[_0xe9f0('0x22')](_0x3cda98[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x30c14b[_0xe9f0('0x119')](_0x4c604e);}})[_0xe9f0('0x14')](function(_0x4e64aa){if(_0x4e64aa){return _0x4e64aa?{'count':_0x1a2e02,'rows':_0x4e64aa}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x293381,null))[_0xe9f0('0x1e')](handleError(_0x293381,null));};exports[_0xe9f0('0x11a')]=function(_0x1ff695,_0x379a21){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1ff695[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x379a21,null))[_0xe9f0('0x14')](function(_0x351b88){if(_0x351b88){var _0x44753d=_0x351b88['get']({'plain':!![]});return _0x351b88[_0xe9f0('0x11a')](_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1ff695[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0x14')](function(){for(var _0x86e0fd=0x0;_0x86e0fd<_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x86e0fd++){var _0x3a9668=[];var _0x2fd1e3={};db['Team'][_0xe9f0('0xd2')]({'where':{'id':_0x1ff695[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x86e0fd]}})[_0xe9f0('0x14')](function(_0x10da41){_0x2fd1e3=_0x10da41[_0xe9f0('0x4e')];_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x11b')]()['then'](function(_0xb8b06){for(var _0x9ba1b2=0x0;_0x9ba1b2<_0xb8b06[_0xe9f0('0x4a')];_0x9ba1b2++){_0xb8b06[_0x9ba1b2][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x11d'));}return _0xb8b06;}));_0x3a9668['push'](_0x10da41[_0xe9f0('0x11e')]()['then'](function(_0x2919ca){for(var _0x3536bd=0x0;_0x3536bd<_0x2919ca[_0xe9f0('0x4a')];_0x3536bd++){_0x2919ca[_0x3536bd]['setDataValue']('channel','Chat');}return _0x2919ca;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41['getMailQueues']()[_0xe9f0('0x14')](function(_0x93c590){for(var _0x6967f6=0x0;_0x6967f6<_0x93c590[_0xe9f0('0x4a')];_0x6967f6++){_0x93c590[_0x6967f6][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x11f'));}return _0x93c590;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x120')]()['then'](function(_0x10ec21){for(var _0x1ed933=0x0;_0x1ed933<_0x10ec21[_0xe9f0('0x4a')];_0x1ed933++){_0x10ec21[_0x1ed933][_0xe9f0('0x11c')](_0xe9f0('0xa3'),'Sms');}return _0x10ec21;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41[_0xe9f0('0x121')]()['then'](function(_0x22617d){for(var _0x233089=0x0;_0x233089<_0x22617d[_0xe9f0('0x4a')];_0x233089++){_0x22617d[_0x233089][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x122'));}return _0x22617d;}));_0x3a9668['push'](_0x10da41[_0xe9f0('0x123')]()[_0xe9f0('0x14')](function(_0x2aa100){for(var _0x5043bd=0x0;_0x5043bd<_0x2aa100['length'];_0x5043bd++){_0x2aa100[_0x5043bd][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x124'));}return _0x2aa100;}));_0x3a9668[_0xe9f0('0x4b')](_0x10da41['getOpenchannelQueues']()[_0xe9f0('0x14')](function(_0x3942f8){for(var _0x332cc0=0x0;_0x332cc0<_0x3942f8['length'];_0x332cc0++){_0x3942f8[_0x332cc0]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x125'));}return _0x3942f8;}));return BPromise['all'](_0x3a9668);})[_0xe9f0('0x14')](function(_0x273c04){var _0x109d4c=_[_0xe9f0('0x126')](_0x273c04);_0x3a9668=[];return db[_0xe9f0('0x6c')][_0xe9f0('0x127')](function(_0x209d0a){for(var _0x218e83=0x0;_0x218e83<_0x109d4c[_0xe9f0('0x4a')];_0x218e83++){_0x3a9668[_0xe9f0('0x4b')](_0x109d4c[_0x218e83][_0xe9f0('0x128')](_0x44753d['id']),{'transaction':_0x209d0a});}return BPromise[_0xe9f0('0x8e')](_0x3a9668)['then'](function(){if(_0x44753d[_0xe9f0('0xb0')]){return BPromise[_0xe9f0('0x8f')](_[_0xe9f0('0x33')](_0x109d4c,function(_0x3e2fcd){return _0x3e2fcd[_0xe9f0('0x129')](_0xe9f0('0xa3'))===_0xe9f0('0x11d');}),function(_0x589986){return db[_0xe9f0('0xb2')]['upsert']({'membername':_0x44753d['name'],'UserId':_0x44753d['id'],'queue_name':_0x589986[_0xe9f0('0x38')],'VoiceQueueId':_0x589986['id'],'interface':_['isNil'](_0x44753d[_0xe9f0('0xa6')])?util[_0xe9f0('0xf4')](_0xe9f0('0xb1'),_0x44753d['name']):_0x44753d[_0xe9f0('0xa6')],'paused':_0x44753d[_0xe9f0('0xa5')]||![],'penalty':_0x44753d[_0xe9f0('0xa9')]},{'transaction':_0x209d0a});});}else{return;}})[_0xe9f0('0x14')](function(){for(var _0x201d1e=0x0;_0x201d1e<_0x109d4c[_0xe9f0('0x4a')];_0x201d1e++){var _0x2d9456=_0x109d4c[_0x201d1e][_0xe9f0('0x129')](_0xe9f0('0xa3'));var _0x581db3=_0x2d9456+_0xe9f0('0xab');socket['emit'](_0xe9f0('0x2e')+_0x2d9456+_0xe9f0('0xad'),{'UserId':_0x44753d['id'],['queueField']:_0x109d4c[_0x201d1e]['id']});}});});})[_0xe9f0('0x14')](function(){db[_0xe9f0('0x12a')]['findOne']({'where':{'teamId':_0x2fd1e3['id']}})[_0xe9f0('0x14')](function(_0x26b7e9){if(_0x26b7e9){db[_0xe9f0('0x12b')][_0xe9f0('0x90')]({'UserId':_0x1ff695['params']['id'],'VoicePrefixId':_0x26b7e9[_0xe9f0('0x12c')]});}});});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x379a21,null))[_0xe9f0('0x1e')](handleError(_0x379a21,null));};exports[_0xe9f0('0x12d')]=function(_0x1484fc,_0x532b2e){return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x1484fc[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x532b2e,null))[_0xe9f0('0x14')](function(_0xf44411){if(_0xf44411){var _0x21d45b=_0xf44411[_0xe9f0('0x2a')]({'plain':!![]});var _0x4d1c58=_0x1484fc[_0xe9f0('0x43')][_0xe9f0('0x63')];return _0xf44411[_0xe9f0('0x12d')](_0x4d1c58)[_0xe9f0('0x14')](function(){for(var _0x1f1343=0x0;_0x1f1343<_0x4d1c58[_0xe9f0('0x4a')];_0x1f1343++){var _0x22d71b=[];var _0x26ddc4={};db[_0xe9f0('0x118')][_0xe9f0('0xd2')]({'where':{'id':_0x4d1c58[_0x1f1343]}})[_0xe9f0('0x14')](function(_0x293660){_0x26ddc4=_0x293660['dataValues'];_0x22d71b[_0xe9f0('0x4b')](_0x293660['getVoiceQueues']()[_0xe9f0('0x14')](function(_0x1cc518){for(var _0x5d6675=0x0;_0x5d6675<_0x1cc518[_0xe9f0('0x4a')];_0x5d6675++){_0x1cc518[_0x5d6675]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x11d'));}return _0x1cc518;}));_0x22d71b['push'](_0x293660[_0xe9f0('0x11e')]()[_0xe9f0('0x14')](function(_0x25a582){for(var _0x200b46=0x0;_0x200b46<_0x25a582[_0xe9f0('0x4a')];_0x200b46++){_0x25a582[_0x200b46][_0xe9f0('0x11c')]('channel',_0xe9f0('0x12e'));}return _0x25a582;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x12f')]()[_0xe9f0('0x14')](function(_0x2c97e2){for(var _0x20a7db=0x0;_0x20a7db<_0x2c97e2[_0xe9f0('0x4a')];_0x20a7db++){_0x2c97e2[_0x20a7db][_0xe9f0('0x11c')](_0xe9f0('0xa3'),'Mail');}return _0x2c97e2;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x120')]()['then'](function(_0x1588b8){for(var _0x22a998=0x0;_0x22a998<_0x1588b8['length'];_0x22a998++){_0x1588b8[_0x22a998]['setDataValue'](_0xe9f0('0xa3'),_0xe9f0('0x130'));}return _0x1588b8;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660['getWhatsappQueues']()[_0xe9f0('0x14')](function(_0x42c72e){for(var _0x1575c5=0x0;_0x1575c5<_0x42c72e[_0xe9f0('0x4a')];_0x1575c5++){_0x42c72e[_0x1575c5][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x122'));}return _0x42c72e;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660['getFaxQueues']()[_0xe9f0('0x14')](function(_0x1de62a){for(var _0x21b399=0x0;_0x21b399<_0x1de62a[_0xe9f0('0x4a')];_0x21b399++){_0x1de62a[_0x21b399]['setDataValue']('channel',_0xe9f0('0x124'));}return _0x1de62a;}));_0x22d71b[_0xe9f0('0x4b')](_0x293660[_0xe9f0('0x131')]()['then'](function(_0x18a0b4){for(var _0x4bdf68=0x0;_0x4bdf68<_0x18a0b4[_0xe9f0('0x4a')];_0x4bdf68++){_0x18a0b4[_0x4bdf68][_0xe9f0('0x11c')](_0xe9f0('0xa3'),_0xe9f0('0x125'));}return _0x18a0b4;}));return BPromise['all'](_0x22d71b);})[_0xe9f0('0x14')](function(_0x3c7cf8){var _0x4f5ebb=_[_0xe9f0('0x126')](_0x3c7cf8);_0x22d71b=[];return db[_0xe9f0('0x6c')][_0xe9f0('0x127')](function(_0x56e14e){for(var _0x55dfe5=0x0;_0x55dfe5<_0x4f5ebb['length'];_0x55dfe5++){_0x22d71b['push'](_0x4f5ebb[_0x55dfe5][_0xe9f0('0x132')](_0x21d45b['id']),{'transaction':_0x56e14e});}return BPromise[_0xe9f0('0x8e')](_0x22d71b)[_0xe9f0('0x14')](function(){if(_0x21d45b[_0xe9f0('0xb0')]){return BPromise[_0xe9f0('0x8f')](_[_0xe9f0('0x33')](_0x4f5ebb,function(_0x57460b){return _0x57460b[_0xe9f0('0x129')]('channel')==='Voice';}),function(_0x17b54f){return db[_0xe9f0('0xb2')][_0xe9f0('0x29')]({'where':{'VoiceQueueId':_0x17b54f['id'],'UserId':_0x21d45b['id']},'transaction':_0x56e14e});});}else{return;}})['then'](function(){db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x26ddc4['id']}})[_0xe9f0('0x14')](function(_0x4560e0){if(_0x4560e0){return db[_0xe9f0('0x12b')][_0xe9f0('0x29')]({'where':{'UserId':_0x21d45b['id'],'VoicePrefixId':_0x4560e0[_0xe9f0('0x4e')][_0xe9f0('0x12c')]}});}});})[_0xe9f0('0x14')](function(){for(var _0x1b593=0x0;_0x1b593<_0x4f5ebb['length'];_0x1b593++){var _0x1c6dbf=_0x4f5ebb[_0x1b593]['getDataValue'](_0xe9f0('0xa3'));var _0x183a72=_0x1c6dbf+_0xe9f0('0xab');socket['emit'](_0xe9f0('0x2e')+_0x1c6dbf+_0xe9f0('0xba'),{'UserId':_0x21d45b['id'],['queueField']:_0x4f5ebb[_0x1b593]['id']});}});});});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x532b2e,null))[_0xe9f0('0x1e')](handleError(_0x532b2e,null));};exports[_0xe9f0('0x133')]=function(_0x3cd6d9,_0x205886){var _0x1d6ef1={};var _0x180dcb={};var _0x3d728a;var _0x2462fe;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3cd6d9[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x205886,null))[_0xe9f0('0x14')](function(_0x5994ec){if(_0x5994ec){_0x3d728a=_0x5994ec;_0x180dcb[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['CmList'][_0xe9f0('0x3d')]);_0x180dcb[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x3cd6d9[_0xe9f0('0x43')]);_0x180dcb[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x180dcb[_0xe9f0('0x56')],_0x180dcb['query']);_0x1d6ef1[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x180dcb[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x3cd6d9[_0xe9f0('0x43')]['fields']));_0x1d6ef1['attributes']=_0x1d6ef1[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x1d6ef1[_0xe9f0('0x46')]:_0x180dcb['model'];_0x1d6ef1['order']=qs[_0xe9f0('0xd3')](_0x3cd6d9['query'][_0xe9f0('0xd3')]);_0x1d6ef1[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x3cd6d9[_0xe9f0('0x43')],_0x180dcb[_0xe9f0('0x5a')]));if(_0x3cd6d9[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x1d6ef1[_0xe9f0('0x41')]=_['merge'](_0x1d6ef1[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x1d6ef1[_0xe9f0('0x46')],function(_0x282f64){var _0x45bc0c={};_0x45bc0c[_0x282f64]={'$like':'%'+_0x3cd6d9[_0xe9f0('0x43')]['filter']+'%'};return _0x45bc0c;})});}_0x1d6ef1=_[_0xe9f0('0x5d')]({},_0x1d6ef1,_0x3cd6d9[_0xe9f0('0x5e')]);return _0x3d728a[_0xe9f0('0x133')](_0x1d6ef1);}})['then'](function(_0x3ca85d){if(_0x3ca85d){_0x2462fe=_0x3ca85d[_0xe9f0('0x4a')];if(!_0x3cd6d9['query']['hasOwnProperty'](_0xe9f0('0xe0'))){_0x1d6ef1[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x3cd6d9['query'][_0xe9f0('0x24')]);_0x1d6ef1[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x3cd6d9[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x3d728a[_0xe9f0('0x133')](_0x1d6ef1);}})[_0xe9f0('0x14')](function(_0x50e247){if(_0x50e247){return _0x50e247?{'count':_0x2462fe,'rows':_0x50e247}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x205886,null))[_0xe9f0('0x1e')](handleError(_0x205886,null));};exports['getAgents']=function(_0x937742,_0x5b9b88){var _0x129e43={};var _0x204658={};var _0xddb69d;var _0x42f153;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x937742[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5b9b88,null))[_0xe9f0('0x14')](function(_0x2f6121){if(_0x2f6121){_0xddb69d=_0x2f6121;_0x204658[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['User'][_0xe9f0('0x3d')]);_0x204658[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x937742[_0xe9f0('0x43')]);_0x204658[_0xe9f0('0x5a')]=_['intersection'](_0x204658[_0xe9f0('0x56')],_0x204658[_0xe9f0('0x43')]);_0x129e43['attributes']=_[_0xe9f0('0x5b')](_0x204658['model'],qs[_0xe9f0('0x5c')](_0x937742[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x129e43['attributes']=_0x129e43['attributes'][_0xe9f0('0x4a')]?_0x129e43['attributes']:_0x204658[_0xe9f0('0x56')];_0x129e43['order']=qs['sort'](_0x937742['query']['sort']);_0x129e43[_0xe9f0('0x41')]=qs['filters'](_[_0xe9f0('0xd4')](_0x937742[_0xe9f0('0x43')],_0x204658['filters']));if(_0x937742[_0xe9f0('0x43')]['filter']){_0x129e43[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x129e43[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x129e43[_0xe9f0('0x46')],function(_0x266fc3){var _0x59d971={};_0x59d971[_0x266fc3]={'$like':'%'+_0x937742[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x59d971;})});}_0x129e43['model']=db['User'];_0x129e43['as']=_0xe9f0('0x2f');_0x129e43=_['merge']({},_0x129e43,_0x937742[_0xe9f0('0x5e')]);return _0xddb69d[_0xe9f0('0x11b')]({'include':[_0x129e43]});}})['then'](function(_0x50dae0){if(_0x50dae0){var _0x31ff63={},_0x49de75=[],_0x3cb152=0x0;for(var _0x25c7e4=0x0;_0x25c7e4<_0x50dae0[_0xe9f0('0x4a')];_0x25c7e4+=0x1){for(var _0x4079af=0x0,_0x2e2c83;_0x4079af<_0x50dae0[_0x25c7e4][_0xe9f0('0x2f')]['length'];_0x4079af+=0x1){_0x2e2c83=_0x50dae0[_0x25c7e4]['Agents'][_0x4079af][_0xe9f0('0x2a')]({'plain':!![]});_0x31ff63[_0x2e2c83['id']]=_0x2e2c83;}}_0x31ff63=_[_0xe9f0('0x134')](_0x31ff63);for(var _0x22407b=qs[_0xe9f0('0x22')](_0x937742[_0xe9f0('0x43')]['offset']);_0x22407b<_0x31ff63[_0xe9f0('0x4a')]&&_0x49de75[_0xe9f0('0x4a')]<qs[_0xe9f0('0x24')](_0x937742[_0xe9f0('0x43')]['limit']);_0x22407b+=0x1){if(_0x31ff63[_0x22407b]){_0x49de75[_0xe9f0('0x4b')](_0x31ff63[_0x22407b]);}}return{'count':_0x31ff63[_0xe9f0('0x4a')],'rows':_0x49de75};}})[_0xe9f0('0x14')](respondWithResult(_0x5b9b88,null))[_0xe9f0('0x1e')](handleError(_0x5b9b88,null));};exports['destroy']=function(_0x35ce88,_0x4c77f0){if(_0x35ce88[_0xe9f0('0x2e')]['id']==_0x35ce88[_0xe9f0('0x55')]['id']){return _0x4c77f0[_0xe9f0('0x1f')](0x1f4)[_0xe9f0('0x3b')]({'message':_0xe9f0('0x135')});}return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x35ce88['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x4c77f0,null))[_0xe9f0('0x14')](removeEntity(_0x4c77f0,null))[_0xe9f0('0x1e')](handleError(_0x4c77f0,null));};exports[_0xe9f0('0x136')]=function(_0x475c47,_0x150fe5){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x475c47[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x150fe5,null))[_0xe9f0('0x14')](function(_0x18cc91){if(_0x18cc91){return _0x18cc91['addChatInteractions'](_0x475c47[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x475c47[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x3bce88=0x0;_0x3bce88<_0x475c47['body']['ids'][_0xe9f0('0x4a')];_0x3bce88+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x137'),{'ChatInteractionId':Number(_0x475c47[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x3bce88]),'UserId':Number(_0x475c47[_0xe9f0('0x55')]['id'])});}return _0x475c47[_0xe9f0('0x60')]['ids'];});}})[_0xe9f0('0x14')](respondWithResult(_0x150fe5,null))[_0xe9f0('0x1e')](handleError(_0x150fe5,null));};exports['removeChatInteractions']=function(_0x55a88d,_0x47c838){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x55a88d[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x47c838,null))[_0xe9f0('0x14')](function(_0x4b07d2){if(_0x4b07d2){return _0x4b07d2['removeChatInteractions'](_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x1a2d57=0x0;_0x1a2d57<_0x55a88d[_0xe9f0('0x43')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1a2d57+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x138'),{'ChatInteractionId':Number(_0x55a88d[_0xe9f0('0x43')]['ids'][_0x1a2d57]),'UserId':Number(_0x55a88d[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x138'),{'ChatInteractionId':Number(_0x55a88d['query'][_0xe9f0('0x63')]),'UserId':Number(_0x55a88d[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x47c838,null))[_0xe9f0('0x1e')](handleError(_0x47c838,null));};exports[_0xe9f0('0x139')]=function(_0x20e5f0,_0x3c3126){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x20e5f0[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3c3126,null))[_0xe9f0('0x14')](function(_0x2f4fa3){if(_0x2f4fa3){return _0x2f4fa3[_0xe9f0('0x139')](_0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x20e5f0[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x187660=0x0;_0x187660<_0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x187660+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x13a'),{'MailInteractionId':Number(_0x20e5f0['body'][_0xe9f0('0x63')][_0x187660]),'UserId':Number(_0x20e5f0['params']['id'])});}return _0x20e5f0[_0xe9f0('0x60')][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x3c3126,null))[_0xe9f0('0x1e')](handleError(_0x3c3126,null));};exports[_0xe9f0('0x13b')]=function(_0x24cadd,_0x2d7b0c){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x24cadd[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2d7b0c,null))[_0xe9f0('0x14')](function(_0x19f3d7){if(_0x19f3d7){return _0x19f3d7[_0xe9f0('0x13b')](_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_['isArray'](_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x43b441=0x0;_0x43b441<_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x43b441+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x13c'),{'MailInteractionId':Number(_0x24cadd[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x43b441]),'UserId':Number(_0x24cadd[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x13c'),{'MailInteractionId':Number(_0x24cadd[_0xe9f0('0x43')]['ids']),'UserId':Number(_0x24cadd[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x2d7b0c,null))[_0xe9f0('0x1e')](handleError(_0x2d7b0c,null));};exports['addFaxInteractions']=function(_0x48aab8,_0x44416a){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x48aab8['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x44416a,null))[_0xe9f0('0x14')](function(_0x257762){if(_0x257762){return _0x257762[_0xe9f0('0x13d')](_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x48aab8['body'],[_0xe9f0('0x63'),'id'])||{})['spread'](function(){for(var _0x5b06ce=0x0;_0x5b06ce<_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')]['length'];_0x5b06ce+=0x1){socket['emit'](_0xe9f0('0x13e'),{'FaxInteractionId':Number(_0x48aab8[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x5b06ce]),'UserId':Number(_0x48aab8[_0xe9f0('0x55')]['id'])});}return _0x48aab8[_0xe9f0('0x60')]['ids'];});}})[_0xe9f0('0x14')](respondWithResult(_0x44416a,null))[_0xe9f0('0x1e')](handleError(_0x44416a,null));};exports[_0xe9f0('0x13f')]=function(_0x4440c5,_0x29e885){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x4440c5['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x29e885,null))[_0xe9f0('0x14')](function(_0x5376ed){if(_0x5376ed){return _0x5376ed[_0xe9f0('0x13f')](_0x4440c5[_0xe9f0('0x43')]['ids'])['then'](function(){if(_[_0xe9f0('0xb9')](_0x4440c5[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x4dbf62=0x0;_0x4dbf62<_0x4440c5[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x4dbf62+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x140'),{'FaxInteractionId':Number(_0x4440c5[_0xe9f0('0x43')]['ids'][_0x4dbf62]),'UserId':Number(_0x4440c5[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x140'),{'FaxInteractionId':Number(_0x4440c5['query'][_0xe9f0('0x63')]),'UserId':Number(_0x4440c5['params']['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x29e885,null))[_0xe9f0('0x1e')](handleError(_0x29e885,null));};exports[_0xe9f0('0x141')]=function(_0xe1165e,_0x99e7cf){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xe1165e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x99e7cf,null))[_0xe9f0('0x14')](function(_0x49ad45){if(_0x49ad45){return _0x49ad45[_0xe9f0('0x141')](_0xe1165e[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0xe1165e['body'],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x53eaae=0x0;_0x53eaae<_0xe1165e['body'][_0xe9f0('0x63')]['length'];_0x53eaae+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x142'),{'SmsInteractionId':Number(_0xe1165e[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x53eaae]),'UserId':Number(_0xe1165e[_0xe9f0('0x55')]['id'])});}return _0xe1165e['body'][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x99e7cf,null))[_0xe9f0('0x1e')](handleError(_0x99e7cf,null));};exports[_0xe9f0('0x143')]=function(_0xb7f413,_0x1f5f9b){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xb7f413[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1f5f9b,null))[_0xe9f0('0x14')](function(_0x33423c){if(_0x33423c){return _0x33423c[_0xe9f0('0x143')](_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x3a662a=0x0;_0x3a662a<_0xb7f413[_0xe9f0('0x43')]['ids'][_0xe9f0('0x4a')];_0x3a662a+=0x1){socket[_0xe9f0('0xac')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xb7f413[_0xe9f0('0x43')][_0xe9f0('0x63')][_0x3a662a]),'UserId':Number(_0xb7f413[_0xe9f0('0x55')]['id'])});}}else{socket[_0xe9f0('0xac')](_0xe9f0('0x144'),{'SmsInteractionId':Number(_0xb7f413['query'][_0xe9f0('0x63')]),'UserId':Number(_0xb7f413[_0xe9f0('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x1f5f9b,null))[_0xe9f0('0x1e')](handleError(_0x1f5f9b,null));};exports[_0xe9f0('0x145')]=function(_0x22530a,_0x2e80a0){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x22530a[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2e80a0,null))[_0xe9f0('0x14')](function(_0x31f6a2){if(_0x31f6a2){return _0x31f6a2['addOpenchannelInteractions'](_0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x22530a[_0xe9f0('0x60')],['ids','id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x5f47de=0x0;_0x5f47de<_0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')]['length'];_0x5f47de+=0x1){socket[_0xe9f0('0xac')](_0xe9f0('0x146'),{'OpenchannelInteractionId':Number(_0x22530a['body'][_0xe9f0('0x63')][_0x5f47de]),'UserId':Number(_0x22530a[_0xe9f0('0x55')]['id'])});}return _0x22530a[_0xe9f0('0x60')][_0xe9f0('0x63')];});}})[_0xe9f0('0x14')](respondWithResult(_0x2e80a0,null))[_0xe9f0('0x1e')](handleError(_0x2e80a0,null));};exports[_0xe9f0('0x147')]=function(_0x3037e5,_0x33fce6){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x3037e5[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33fce6,null))[_0xe9f0('0x14')](function(_0x3ab3f9){if(_0x3ab3f9){return _0x3ab3f9[_0xe9f0('0x147')](_0x3037e5['query'][_0xe9f0('0x63')])['then'](function(){if(_[_0xe9f0('0xb9')](_0x3037e5[_0xe9f0('0x43')][_0xe9f0('0x63')])){for(var _0x1b5bee=0x0;_0x1b5bee<_0x3037e5['query'][_0xe9f0('0x63')][_0xe9f0('0x4a')];_0x1b5bee+=0x1){socket['emit'](_0xe9f0('0x148'),{'OpenchannelInteractionId':Number(_0x3037e5['query'][_0xe9f0('0x63')][_0x1b5bee]),'UserId':Number(_0x3037e5[_0xe9f0('0x55')]['id'])});}}else{socket['emit'](_0xe9f0('0x148'),{'OpenchannelInteractionId':Number(_0x3037e5['query'][_0xe9f0('0x63')]),'UserId':Number(_0x3037e5[_0xe9f0('0x55')]['id'])});}});}})[_0xe9f0('0x14')](respondWithStatusCode(_0x33fce6,null))[_0xe9f0('0x1e')](handleError(_0x33fce6,null));};exports[_0xe9f0('0x149')]=function(_0xd3452c,_0x5be398){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0xd3452c[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5be398,null))['then'](function(_0x246948){if(_0x246948){return _0x246948[_0xe9f0('0x149')](_0xd3452c[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0xd3452c[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{})[_0xe9f0('0xaa')](function(){for(var _0x5ed38a=0x0;_0x5ed38a<_0xd3452c[_0xe9f0('0x60')]['ids'][_0xe9f0('0x4a')];_0x5ed38a+=0x1){socket[_0xe9f0('0xac')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0xd3452c[_0xe9f0('0x60')][_0xe9f0('0x63')][_0x5ed38a]),'UserId':Number(_0xd3452c[_0xe9f0('0x55')]['id'])});}return _0xd3452c[_0xe9f0('0x60')]['ids'];});}})['then'](respondWithResult(_0x5be398,null))[_0xe9f0('0x1e')](handleError(_0x5be398,null));};exports[_0xe9f0('0x14a')]=function(_0x27c967,_0xab22d){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x27c967['params']['id']}})['then'](handleEntityNotFound(_0xab22d,null))[_0xe9f0('0x14')](function(_0xf5a7e7){if(_0xf5a7e7){return _0xf5a7e7[_0xe9f0('0x14a')](_0x27c967['query'][_0xe9f0('0x63')]);}})['then'](respondWithStatusCode(_0xab22d,null))[_0xe9f0('0x1e')](handleError(_0xab22d,null));};exports[_0xe9f0('0x14b')]=function(_0x279e4e,_0x60b12b){var _0x261084={};var _0xcda07c={};var _0x5e76d4;var _0x4c2de6;return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x279e4e[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x60b12b,null))[_0xe9f0('0x14')](function(_0xfa0176){if(_0xfa0176){_0x5e76d4=_0xfa0176;_0xcda07c['model']=_[_0xe9f0('0x58')](db[_0xe9f0('0x14c')][_0xe9f0('0x3d')]);_0xcda07c['query']=_[_0xe9f0('0x58')](_0x279e4e[_0xe9f0('0x43')]);_0xcda07c[_0xe9f0('0x5a')]=_['intersection'](_0xcda07c[_0xe9f0('0x56')],_0xcda07c[_0xe9f0('0x43')]);_0x261084['attributes']=_['intersection'](_0xcda07c[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x261084[_0xe9f0('0x46')]=_0x261084[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x261084['attributes']:_0xcda07c[_0xe9f0('0x56')];_0x261084[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x261084['where']=qs['filters'](_[_0xe9f0('0xd4')](_0x279e4e['query'],_0xcda07c[_0xe9f0('0x5a')]));if(_0x279e4e[_0xe9f0('0x43')]['filter']){_0x261084[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x261084[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x261084[_0xe9f0('0x46')],function(_0x3f50e3){var _0x193a7b={};_0x193a7b[_0x3f50e3]={'$like':'%'+_0x279e4e[_0xe9f0('0x43')]['filter']+'%'};return _0x193a7b;})});}_0x261084=_[_0xe9f0('0x5d')]({},_0x261084,_0x279e4e[_0xe9f0('0x5e')]);return _0x5e76d4[_0xe9f0('0x14b')](_0x261084);}})[_0xe9f0('0x14')](function(_0x322150){if(_0x322150){_0x4c2de6=_0x322150[_0xe9f0('0x4a')];if(!_0x279e4e['query'][_0xe9f0('0xd6')]('nolimit')){_0x261084['limit']=qs[_0xe9f0('0x24')](_0x279e4e[_0xe9f0('0x43')]['limit']);_0x261084[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x279e4e[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x5e76d4[_0xe9f0('0x14b')](_0x261084);}})[_0xe9f0('0x14')](function(_0xf95db2){if(_0xf95db2){return _0xf95db2?{'count':_0x4c2de6,'rows':_0xf95db2}:null;}})['then'](respondWithResult(_0x60b12b,null))[_0xe9f0('0x1e')](handleError(_0x60b12b,null));};exports['getFaxAccounts']=function(_0x47450d,_0x36246c){var _0x28d68a={};var _0x73f6b={};var _0xe381f8;var _0xbb8fb8;return db['User'][_0xe9f0('0xd2')]({'where':{'id':_0x47450d[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x36246c,null))[_0xe9f0('0x14')](function(_0x1f803a){if(_0x1f803a){_0xe381f8=_0x1f803a;_0x73f6b[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x14d')][_0xe9f0('0x3d')]);_0x73f6b[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x47450d['query']);_0x73f6b[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x73f6b[_0xe9f0('0x56')],_0x73f6b[_0xe9f0('0x43')]);_0x28d68a[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x73f6b[_0xe9f0('0x56')],qs['fields'](_0x47450d['query'][_0xe9f0('0x5c')]));_0x28d68a[_0xe9f0('0x46')]=_0x28d68a[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x28d68a[_0xe9f0('0x46')]:_0x73f6b[_0xe9f0('0x56')];_0x28d68a[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x28d68a[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x47450d[_0xe9f0('0x43')],_0x73f6b['filters']));if(_0x47450d['query']['filter']){_0x28d68a[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x28d68a['where'],{'$or':_[_0xe9f0('0x35')](_0x28d68a[_0xe9f0('0x46')],function(_0x2f330c){var _0x5a742b={};_0x5a742b[_0x2f330c]={'$like':'%'+_0x47450d[_0xe9f0('0x43')]['filter']+'%'};return _0x5a742b;})});}_0x28d68a=_[_0xe9f0('0x5d')]({},_0x28d68a,_0x47450d[_0xe9f0('0x5e')]);return _0xe381f8[_0xe9f0('0x14e')](_0x28d68a);}})[_0xe9f0('0x14')](function(_0x27849b){if(_0x27849b){_0xbb8fb8=_0x27849b[_0xe9f0('0x4a')];if(!_0x47450d[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x28d68a[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x28d68a[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x47450d[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0xe381f8[_0xe9f0('0x14e')](_0x28d68a);}})[_0xe9f0('0x14')](function(_0xa8e32b){if(_0xa8e32b){return _0xa8e32b?{'count':_0xbb8fb8,'rows':_0xa8e32b}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x36246c,null))[_0xe9f0('0x1e')](handleError(_0x36246c,null));};exports[_0xe9f0('0x14f')]=function(_0x4a963d,_0x2617a4){return db['User']['find']({'where':{'id':_0x4a963d[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x2617a4,null))[_0xe9f0('0x14')](function(_0x2207bb){if(_0x2207bb){return _0x2207bb[_0xe9f0('0x14f')](_0x4a963d[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x4a963d[_0xe9f0('0x60')],['ids','id'])||{});}})['then'](respondWithResult(_0x2617a4,null))['catch'](handleError(_0x2617a4,null));};exports[_0xe9f0('0x150')]=function(_0x3fdcd4,_0x14d111){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3fdcd4['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x14d111,null))[_0xe9f0('0x14')](function(_0x4a0914){if(_0x4a0914){return _0x4a0914['removeFaxAccounts'](_0x3fdcd4[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x14d111,null))['catch'](handleError(_0x14d111,null));};exports[_0xe9f0('0x151')]=function(_0x102508,_0x171313){var _0x4c8f97={};var _0x4d96aa={};var _0x4450af;var _0x394108;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x102508['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x171313,null))[_0xe9f0('0x14')](function(_0x541e67){if(_0x541e67){_0x4450af=_0x541e67;_0x4d96aa[_0xe9f0('0x56')]=_['keys'](db['MailAccount'][_0xe9f0('0x3d')]);_0x4d96aa[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x102508[_0xe9f0('0x43')]);_0x4d96aa[_0xe9f0('0x5a')]=_['intersection'](_0x4d96aa[_0xe9f0('0x56')],_0x4d96aa[_0xe9f0('0x43')]);_0x4c8f97['attributes']=_[_0xe9f0('0x5b')](_0x4d96aa[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x102508['query'][_0xe9f0('0x5c')]));_0x4c8f97[_0xe9f0('0x46')]=_0x4c8f97['attributes'][_0xe9f0('0x4a')]?_0x4c8f97[_0xe9f0('0x46')]:_0x4d96aa['model'];_0x4c8f97['order']=qs[_0xe9f0('0xd3')](_0x102508[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x4c8f97['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x102508[_0xe9f0('0x43')],_0x4d96aa[_0xe9f0('0x5a')]));if(_0x102508[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x4c8f97[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x4c8f97['where'],{'$or':_[_0xe9f0('0x35')](_0x4c8f97[_0xe9f0('0x46')],function(_0xab35a9){var _0x4a19f5={};_0x4a19f5[_0xab35a9]={'$like':'%'+_0x102508[_0xe9f0('0x43')]['filter']+'%'};return _0x4a19f5;})});}_0x4c8f97=_['merge']({},_0x4c8f97,_0x102508['options']);return _0x4450af[_0xe9f0('0x151')](_0x4c8f97);}})[_0xe9f0('0x14')](function(_0xbed28c){if(_0xbed28c){_0x394108=_0xbed28c[_0xe9f0('0x4a')];if(!_0x102508[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x4c8f97['limit']=qs['limit'](_0x102508[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x4c8f97['offset']=qs[_0xe9f0('0x22')](_0x102508['query'][_0xe9f0('0x22')]);}return _0x4450af[_0xe9f0('0x151')](_0x4c8f97);}})[_0xe9f0('0x14')](function(_0x50d6cf){if(_0x50d6cf){return _0x50d6cf?{'count':_0x394108,'rows':_0x50d6cf}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x171313,null))[_0xe9f0('0x1e')](handleError(_0x171313,null));};exports[_0xe9f0('0x152')]=function(_0x2412b4,_0x2d6d6f){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x2412b4['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2d6d6f,null))[_0xe9f0('0x14')](function(_0x2aef76){if(_0x2aef76){return _0x2aef76['addMailAccounts'](_0x2412b4['body'][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x2412b4['body'],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x2d6d6f,null))['catch'](handleError(_0x2d6d6f,null));};exports[_0xe9f0('0x153')]=function(_0x524e85,_0x300272){return db['User']['find']({'where':{'id':_0x524e85[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x300272,null))[_0xe9f0('0x14')](function(_0x23ee34){if(_0x23ee34){return _0x23ee34['removeMailAccounts'](_0x524e85[_0xe9f0('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x300272,null))['catch'](handleError(_0x300272,null));};exports['getOpenchannelAccounts']=function(_0x5b49a7,_0x1a39b6){var _0x11c25d={};var _0x2427ec={};var _0x3de52e;var _0x187c98;return db[_0xe9f0('0x42')]['findOne']({'where':{'id':_0x5b49a7[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x1a39b6,null))['then'](function(_0x4a55e1){if(_0x4a55e1){_0x3de52e=_0x4a55e1;_0x2427ec[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0x154')][_0xe9f0('0x3d')]);_0x2427ec['query']=_[_0xe9f0('0x58')](_0x5b49a7['query']);_0x2427ec[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x2427ec[_0xe9f0('0x56')],_0x2427ec[_0xe9f0('0x43')]);_0x11c25d[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x2427ec['model'],qs[_0xe9f0('0x5c')](_0x5b49a7['query'][_0xe9f0('0x5c')]));_0x11c25d[_0xe9f0('0x46')]=_0x11c25d[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x11c25d[_0xe9f0('0x46')]:_0x2427ec[_0xe9f0('0x56')];_0x11c25d[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x11c25d[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_['pick'](_0x5b49a7[_0xe9f0('0x43')],_0x2427ec[_0xe9f0('0x5a')]));if(_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x11c25d[_0xe9f0('0x41')]=_['merge'](_0x11c25d['where'],{'$or':_[_0xe9f0('0x35')](_0x11c25d[_0xe9f0('0x46')],function(_0x342616){var _0x51efd8={};_0x51efd8[_0x342616]={'$like':'%'+_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x51efd8;})});}_0x11c25d=_[_0xe9f0('0x5d')]({},_0x11c25d,_0x5b49a7[_0xe9f0('0x5e')]);return _0x3de52e['getOpenchannelAccounts'](_0x11c25d);}})[_0xe9f0('0x14')](function(_0x16cdd6){if(_0x16cdd6){_0x187c98=_0x16cdd6['length'];if(!_0x5b49a7[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x11c25d[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x5b49a7[_0xe9f0('0x43')]['limit']);_0x11c25d[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x5b49a7['query'][_0xe9f0('0x22')]);}return _0x3de52e[_0xe9f0('0x155')](_0x11c25d);}})[_0xe9f0('0x14')](function(_0x38418d){if(_0x38418d){return _0x38418d?{'count':_0x187c98,'rows':_0x38418d}:null;}})['then'](respondWithResult(_0x1a39b6,null))[_0xe9f0('0x1e')](handleError(_0x1a39b6,null));};exports[_0xe9f0('0x156')]=function(_0x151548,_0xe2d98e){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x151548[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0xe2d98e,null))[_0xe9f0('0x14')](function(_0x2d79e4){if(_0x2d79e4){return _0x2d79e4[_0xe9f0('0x156')](_0x151548['body']['ids'],_[_0xe9f0('0x64')](_0x151548['body'],['ids','id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0xe2d98e,null))[_0xe9f0('0x1e')](handleError(_0xe2d98e,null));};exports[_0xe9f0('0x157')]=function(_0x3e4728,_0x5ab145){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3e4728['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5ab145,null))['then'](function(_0x3f492c){if(_0x3f492c){return _0x3f492c[_0xe9f0('0x157')](_0x3e4728[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x5ab145,null))[_0xe9f0('0x1e')](handleError(_0x5ab145,null));};exports[_0xe9f0('0x158')]=function(_0x3688f5,_0x2a35df){var _0x49bde3={};var _0x9f5d95={};var _0x13d724;var _0x18d809;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x3688f5['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2a35df,null))[_0xe9f0('0x14')](function(_0x4a1d5c){if(_0x4a1d5c){_0x13d724=_0x4a1d5c;_0x9f5d95[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db['SmsAccount'][_0xe9f0('0x3d')]);_0x9f5d95['query']=_[_0xe9f0('0x58')](_0x3688f5['query']);_0x9f5d95['filters']=_[_0xe9f0('0x5b')](_0x9f5d95[_0xe9f0('0x56')],_0x9f5d95[_0xe9f0('0x43')]);_0x49bde3[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x9f5d95['model'],qs['fields'](_0x3688f5['query'][_0xe9f0('0x5c')]));_0x49bde3[_0xe9f0('0x46')]=_0x49bde3[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x49bde3['attributes']:_0x9f5d95['model'];_0x49bde3[_0xe9f0('0xde')]=qs['sort'](_0x3688f5[_0xe9f0('0x43')]['sort']);_0x49bde3[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x3688f5[_0xe9f0('0x43')],_0x9f5d95[_0xe9f0('0x5a')]));if(_0x3688f5['query']['filter']){_0x49bde3['where']=_['merge'](_0x49bde3['where'],{'$or':_[_0xe9f0('0x35')](_0x49bde3[_0xe9f0('0x46')],function(_0x29aa4f){var _0x39bb05={};_0x39bb05[_0x29aa4f]={'$like':'%'+_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x39bb05;})});}_0x49bde3=_[_0xe9f0('0x5d')]({},_0x49bde3,_0x3688f5[_0xe9f0('0x5e')]);return _0x13d724[_0xe9f0('0x158')](_0x49bde3);}})[_0xe9f0('0x14')](function(_0x4b0e67){if(_0x4b0e67){_0x18d809=_0x4b0e67['length'];if(!_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x49bde3[_0xe9f0('0x24')]=qs['limit'](_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x49bde3['offset']=qs[_0xe9f0('0x22')](_0x3688f5[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x13d724['getSmsAccounts'](_0x49bde3);}})[_0xe9f0('0x14')](function(_0x1b8163){if(_0x1b8163){return _0x1b8163?{'count':_0x18d809,'rows':_0x1b8163}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x2a35df,null))[_0xe9f0('0x1e')](handleError(_0x2a35df,null));};exports['addSmsAccounts']=function(_0x39a712,_0x33e588){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x39a712[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33e588,null))['then'](function(_0x175eda){if(_0x175eda){return _0x175eda['addSmsAccounts'](_0x39a712[_0xe9f0('0x60')][_0xe9f0('0x63')],_['omit'](_0x39a712[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x33e588,null))['catch'](handleError(_0x33e588,null));};exports[_0xe9f0('0x159')]=function(_0x3419da,_0x33ce41){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x3419da[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x33ce41,null))[_0xe9f0('0x14')](function(_0x259a8d){if(_0x259a8d){return _0x259a8d[_0xe9f0('0x159')](_0x3419da[_0xe9f0('0x43')]['ids']);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x33ce41,null))[_0xe9f0('0x1e')](handleError(_0x33ce41,null));};exports[_0xe9f0('0x15a')]=function(_0x4d6d89,_0x53a295){var _0xf36ac9={};var _0x27d0ae={};var _0x51db6c;var _0x3ba5d8;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x4d6d89[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x53a295,null))[_0xe9f0('0x14')](function(_0x27e779){if(_0x27e779){_0x51db6c=_0x27e779;_0x27d0ae[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x15b')][_0xe9f0('0x3d')]);_0x27d0ae[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x4d6d89['query']);_0x27d0ae[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x27d0ae[_0xe9f0('0x56')],_0x27d0ae[_0xe9f0('0x43')]);_0xf36ac9['attributes']=_[_0xe9f0('0x5b')](_0x27d0ae[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x4d6d89[_0xe9f0('0x43')]['fields']));_0xf36ac9[_0xe9f0('0x46')]=_0xf36ac9[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0xf36ac9[_0xe9f0('0x46')]:_0x27d0ae[_0xe9f0('0x56')];_0xf36ac9['order']=qs['sort'](_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0xf36ac9['where']=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x4d6d89[_0xe9f0('0x43')],_0x27d0ae['filters']));if(_0x4d6d89[_0xe9f0('0x43')]['filter']){_0xf36ac9[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0xf36ac9['where'],{'$or':_[_0xe9f0('0x35')](_0xf36ac9['attributes'],function(_0x57e2ac){var _0x41da05={};_0x41da05[_0x57e2ac]={'$like':'%'+_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x41da05;})});}_0xf36ac9=_[_0xe9f0('0x5d')]({},_0xf36ac9,_0x4d6d89[_0xe9f0('0x5e')]);return _0x51db6c[_0xe9f0('0x15a')](_0xf36ac9);}})[_0xe9f0('0x14')](function(_0x32c17a){if(_0x32c17a){_0x3ba5d8=_0x32c17a['length'];if(!_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0xd6')]('nolimit')){_0xf36ac9['limit']=qs['limit'](_0x4d6d89[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0xf36ac9['offset']=qs[_0xe9f0('0x22')](_0x4d6d89[_0xe9f0('0x43')]['offset']);}return _0x51db6c['getChatWebsites'](_0xf36ac9);}})[_0xe9f0('0x14')](function(_0x457ec9){if(_0x457ec9){return _0x457ec9?{'count':_0x3ba5d8,'rows':_0x457ec9}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x53a295,null))['catch'](handleError(_0x53a295,null));};exports[_0xe9f0('0x15c')]=function(_0x570444,_0x2c6152){return db[_0xe9f0('0x42')]['find']({'where':{'id':_0x570444[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x2c6152,null))[_0xe9f0('0x14')](function(_0x4e4a08){if(_0x4e4a08){return _0x4e4a08['addChatWebsites'](_0x570444['body']['ids'],_['omit'](_0x570444[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})['then'](respondWithResult(_0x2c6152,null))[_0xe9f0('0x1e')](handleError(_0x2c6152,null));};exports[_0xe9f0('0x15d')]=function(_0x25d301,_0x15d270){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x25d301[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x15d270,null))['then'](function(_0x271122){if(_0x271122){return _0x271122[_0xe9f0('0x15d')](_0x25d301[_0xe9f0('0x43')][_0xe9f0('0x63')]);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x15d270,null))['catch'](handleError(_0x15d270,null));};exports[_0xe9f0('0x15e')]=function(_0x178c32,_0x545a7f){var _0x22fad9={};var _0x49bfcf={};var _0x30dcb2;var _0x378f44;return db['User']['findOne']({'where':{'id':_0x178c32[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x545a7f,null))[_0xe9f0('0x14')](function(_0x23a2e4){if(_0x23a2e4){_0x30dcb2=_0x23a2e4;_0x49bfcf[_0xe9f0('0x56')]=_['keys'](db[_0xe9f0('0x15f')][_0xe9f0('0x3d')]);_0x49bfcf[_0xe9f0('0x43')]=_['keys'](_0x178c32[_0xe9f0('0x43')]);_0x49bfcf[_0xe9f0('0x5a')]=_['intersection'](_0x49bfcf['model'],_0x49bfcf['query']);_0x22fad9[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x49bfcf['model'],qs[_0xe9f0('0x5c')](_0x178c32['query'][_0xe9f0('0x5c')]));_0x22fad9['attributes']=_0x22fad9[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x22fad9['attributes']:_0x49bfcf[_0xe9f0('0x56')];_0x22fad9[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x178c32[_0xe9f0('0x43')]['sort']);_0x22fad9[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x178c32[_0xe9f0('0x43')],_0x49bfcf[_0xe9f0('0x5a')]));if(_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x22fad9['where']=_[_0xe9f0('0x5d')](_0x22fad9['where'],{'$or':_[_0xe9f0('0x35')](_0x22fad9[_0xe9f0('0x46')],function(_0x259cb8){var _0x330e56={};_0x330e56[_0x259cb8]={'$like':'%'+_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x330e56;})});}_0x22fad9=_[_0xe9f0('0x5d')]({},_0x22fad9,_0x178c32[_0xe9f0('0x5e')]);return _0x30dcb2[_0xe9f0('0x15e')](_0x22fad9);}})[_0xe9f0('0x14')](function(_0x9a619){if(_0x9a619){_0x378f44=_0x9a619[_0xe9f0('0x4a')];if(!_0x178c32[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x22fad9[_0xe9f0('0x24')]=qs['limit'](_0x178c32[_0xe9f0('0x43')][_0xe9f0('0x24')]);_0x22fad9[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x178c32['query'][_0xe9f0('0x22')]);}return _0x30dcb2[_0xe9f0('0x15e')](_0x22fad9);}})[_0xe9f0('0x14')](function(_0x5f3ab4){if(_0x5f3ab4){return _0x5f3ab4?{'count':_0x378f44,'rows':_0x5f3ab4}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x545a7f,null))[_0xe9f0('0x1e')](handleError(_0x545a7f,null));};exports[_0xe9f0('0x160')]=function(_0x1266fd,_0x511a4d){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x1266fd[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x511a4d,null))[_0xe9f0('0x14')](function(_0x1f63e1){if(_0x1f63e1){return _0x1f63e1[_0xe9f0('0x160')](_0x1266fd['body'][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1266fd[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0x511a4d,null))[_0xe9f0('0x1e')](handleError(_0x511a4d,null));};exports[_0xe9f0('0x161')]=function(_0x41ce56,_0x5b7f5a){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x41ce56['params']['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x5b7f5a,null))[_0xe9f0('0x14')](function(_0x1c6a56){if(_0x1c6a56){return _0x1c6a56[_0xe9f0('0x161')](_0x41ce56[_0xe9f0('0x43')]['ids']);}})[_0xe9f0('0x14')](respondWithStatusCode(_0x5b7f5a,null))['catch'](handleError(_0x5b7f5a,null));};exports['getSquareProjects']=function(_0x32b967,_0x44a816){var _0x58a2ef={};var _0x291be7={};var _0x50a397;var _0x26b3d8;return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x32b967[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x44a816,null))['then'](function(_0x36c3e6){if(_0x36c3e6){_0x50a397=_0x36c3e6;_0x291be7[_0xe9f0('0x56')]=_[_0xe9f0('0x58')](db[_0xe9f0('0x162')]['rawAttributes']);_0x291be7[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x32b967[_0xe9f0('0x43')]);_0x291be7[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x291be7[_0xe9f0('0x56')],_0x291be7[_0xe9f0('0x43')]);_0x58a2ef[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x291be7[_0xe9f0('0x56')],qs[_0xe9f0('0x5c')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x5c')]));_0x58a2ef[_0xe9f0('0x46')]=_0x58a2ef['attributes']['length']?_0x58a2ef[_0xe9f0('0x46')]:_0x291be7[_0xe9f0('0x56')];_0x58a2ef[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x58a2ef[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x32b967[_0xe9f0('0x43')],_0x291be7[_0xe9f0('0x5a')]));if(_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x58a2ef[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x58a2ef[_0xe9f0('0x41')],{'$or':_[_0xe9f0('0x35')](_0x58a2ef[_0xe9f0('0x46')],function(_0x2b6ce9){var _0x188a8d={};_0x188a8d[_0x2b6ce9]={'$like':'%'+_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x188a8d;})});}_0x58a2ef=_[_0xe9f0('0x5d')]({},_0x58a2ef,_0x32b967[_0xe9f0('0x5e')]);return _0x50a397[_0xe9f0('0x163')](_0x58a2ef);}})['then'](function(_0x4753b7){if(_0x4753b7){_0x26b3d8=_0x4753b7[_0xe9f0('0x4a')];if(!_0x32b967[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x58a2ef[_0xe9f0('0x24')]=qs['limit'](_0x32b967['query']['limit']);_0x58a2ef['offset']=qs[_0xe9f0('0x22')](_0x32b967[_0xe9f0('0x43')][_0xe9f0('0x22')]);}return _0x50a397[_0xe9f0('0x163')](_0x58a2ef);}})[_0xe9f0('0x14')](function(_0x6cc818){if(_0x6cc818){return _0x6cc818?{'count':_0x26b3d8,'rows':_0x6cc818}:null;}})[_0xe9f0('0x14')](respondWithResult(_0x44a816,null))[_0xe9f0('0x1e')](handleError(_0x44a816,null));};exports['addSquareProjects']=function(_0x1d2125,_0x2bdcd6){return db['User'][_0xe9f0('0x36')]({'where':{'id':_0x1d2125[_0xe9f0('0x55')]['id']}})['then'](handleEntityNotFound(_0x2bdcd6,null))[_0xe9f0('0x14')](function(_0x398ec6){if(_0x398ec6){return _0x398ec6['addSquareProjects'](_0x1d2125[_0xe9f0('0x60')][_0xe9f0('0x63')],_[_0xe9f0('0x64')](_0x1d2125[_0xe9f0('0x60')],[_0xe9f0('0x63'),'id'])||{});}})[_0xe9f0('0x14')](respondWithResult(_0x2bdcd6,null))[_0xe9f0('0x1e')](handleError(_0x2bdcd6,null));};exports['removeSquareProjects']=function(_0x24e7d4,_0x77d415){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x24e7d4[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x77d415,null))[_0xe9f0('0x14')](function(_0x47d343){if(_0x47d343){return _0x47d343['removeSquareProjects'](_0x24e7d4['query']['ids']);}})['then'](respondWithStatusCode(_0x77d415,null))[_0xe9f0('0x1e')](handleError(_0x77d415,null));};exports[_0xe9f0('0x164')]=function(_0x25a11f,_0x5471b6){var _0x2d7cae={},_0x400fd6={},_0x2870bd={'count':0x0,'rows':[]};var _0x49bda8=db[_0xe9f0('0x165')]['rawAttributes'];_0x400fd6[_0xe9f0('0x56')]=_['keys'](_0x49bda8);_0x400fd6[_0xe9f0('0x43')]=_[_0xe9f0('0x58')](_0x25a11f[_0xe9f0('0x43')]);_0x400fd6[_0xe9f0('0x5a')]=_[_0xe9f0('0x5b')](_0x400fd6[_0xe9f0('0x56')],_0x400fd6[_0xe9f0('0x43')]);_0x400fd6[_0xe9f0('0x5a')]=_[_0xe9f0('0x106')](_0x400fd6[_0xe9f0('0x5a')],[_0xe9f0('0x166'),_0xe9f0('0x167'),_0xe9f0('0x168'),_0xe9f0('0x169'),'$lt','$lte',_0xe9f0('0x16a'),_0xe9f0('0x16b'),_0xe9f0('0x16c'),_0xe9f0('0x16d'),_0xe9f0('0x16e'),_0xe9f0('0x16f'),'$notIn',_0xe9f0('0x170'),'$notLike',_0xe9f0('0x171'),_0xe9f0('0x172'),'$like',_0xe9f0('0x173'),'$contains','$contained',_0xe9f0('0x174')]);_0x2d7cae[_0xe9f0('0x46')]=_[_0xe9f0('0x5b')](_0x400fd6['model'],qs[_0xe9f0('0x5c')](_0x25a11f['query'][_0xe9f0('0x5c')]));_0x2d7cae[_0xe9f0('0x46')]=_0x2d7cae[_0xe9f0('0x46')][_0xe9f0('0x4a')]?_0x2d7cae[_0xe9f0('0x46')]:_0x400fd6[_0xe9f0('0x56')];if(!_0x25a11f[_0xe9f0('0x43')]['hasOwnProperty']('nolimit')){_0x2d7cae[_0xe9f0('0x24')]=qs[_0xe9f0('0x24')](_0x25a11f['query'][_0xe9f0('0x24')]);_0x2d7cae[_0xe9f0('0x22')]=qs[_0xe9f0('0x22')](_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x2d7cae[_0xe9f0('0xde')]=qs[_0xe9f0('0xd3')](_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0xd3')]);_0x2d7cae[_0xe9f0('0x41')]=qs[_0xe9f0('0x5a')](_[_0xe9f0('0xd4')](_0x25a11f[_0xe9f0('0x43')],_0x400fd6[_0xe9f0('0x5a')]));if(_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x33')]){_0x2d7cae[_0xe9f0('0x41')]=_[_0xe9f0('0x5d')](_0x2d7cae['where'],{'$or':_[_0xe9f0('0x35')](_0x2d7cae[_0xe9f0('0x46')],function(_0x5b100c){var _0x140701={};_0x140701[_0x5b100c]={'$like':'%'+_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x33')]+'%'};return _0x140701;})});}_0x2d7cae[_0xe9f0('0x41')]={'$and':[_0x2d7cae[_0xe9f0('0x41')],{'$or':[{'UserId':_0x25a11f[_0xe9f0('0x55')]['id']},{'OwnerId':_0x25a11f[_0xe9f0('0x55')]['id']}]}]};_0x2d7cae=_[_0xe9f0('0x5d')]({},_0x2d7cae,_0x25a11f['options']);var _0xb9fc05={'where':_0x2d7cae[_0xe9f0('0x41')]};return db[_0xe9f0('0x165')]['count'](_0xb9fc05)[_0xe9f0('0x14')](function(_0x1963f0){_0x2870bd[_0xe9f0('0x25')]=_0x1963f0;if(_0x25a11f[_0xe9f0('0x43')][_0xe9f0('0x44')]){_0x2d7cae[_0xe9f0('0x45')]=[{'attributes':['id',_0xe9f0('0x175'),'lastName',_0xe9f0('0xf2')],'model':db[_0xe9f0('0x176')],'as':_0xe9f0('0x177')},{'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x178')],'model':db['VoiceQueue'],'as':_0xe9f0('0xdd')}];}return db[_0xe9f0('0x165')][_0xe9f0('0x47')](_0x2d7cae);})[_0xe9f0('0x14')](function(_0x35bc72){_0x2870bd[_0xe9f0('0x4d')]=_0x35bc72;return _0x2870bd;})['then'](respondWithFilteredResult(_0x5471b6,_0x2d7cae))[_0xe9f0('0x1e')](handleError(_0x5471b6,null));};exports[_0xe9f0('0x179')]=function(_0x2baf0a,_0x475397){if(!_[_0xe9f0('0x6a')](_0x2baf0a[_0xe9f0('0x2e')]['id'])&&(_0x2baf0a['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2c')||_0x2baf0a['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0xd2')]({'where':{'id':_0x2baf0a[_0xe9f0('0x55')]['id']},'raw':!![]})[_0xe9f0('0x14')](function(_0x24b026){return authService[_0xe9f0('0x17a')](_0x24b026);})[_0xe9f0('0x14')](function(_0x824cb0){if(_0x824cb0){return _0x475397[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')]({'api_key':_0x824cb0[_0xe9f0('0x17b')]});}else{return _0x475397[_0xe9f0('0x1f')](0xcc)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17c')});}})[_0xe9f0('0x1e')](handleError(_0x475397,0x193));}else{return _0x475397[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xe9f0('0x17d')]=function(_0x3a4144,_0xbefd52){if(!_['isNil'](_0x3a4144['user']['id'])&&(_0x3a4144['user']['role']==_0xe9f0('0x2c')||_0x3a4144['user'][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x3a4144[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(_0x5bd4b7){return authService['generateApiKey'](_0x5bd4b7);})[_0xe9f0('0x14')](function(_0x349514){return db[_0xe9f0('0x42')][_0xe9f0('0x28')]({'apiKeyIat':_0x349514[_0xe9f0('0x17e')],'apiKeyNonce':_0x349514['nonce']},{'where':{'id':_0x3a4144[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](function(){return _0xbefd52[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')]({'api_key':_0x349514[_0xe9f0('0x17b')]});});})[_0xe9f0('0x1e')](handleError(_0xbefd52,0x193));}else{return _0xbefd52[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17f')});}};exports[_0xe9f0('0x180')]=function(_0x5e3a2c,_0x3d479a){if(!_[_0xe9f0('0x6a')](_0x5e3a2c[_0xe9f0('0x2e')]['id'])&&(_0x5e3a2c[_0xe9f0('0x2e')]['role']==_0xe9f0('0x2c')||_0x5e3a2c[_0xe9f0('0x2e')][_0xe9f0('0x2b')]==_0xe9f0('0x2e'))){return db[_0xe9f0('0x42')][_0xe9f0('0x36')]({'where':{'id':_0x5e3a2c[_0xe9f0('0x55')]['id']}})[_0xe9f0('0x14')](handleEntityNotFound(_0x3d479a,null))[_0xe9f0('0x14')](function(_0x386fbd){if(_0x386fbd&&_0x386fbd['apiKeyNonce']&&_0x386fbd[_0xe9f0('0x181')])return _0x386fbd;else throw{'message':_0xe9f0('0x182')};})[_0xe9f0('0x14')](function(_0x44aa63){return db[_0xe9f0('0x42')][_0xe9f0('0x28')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5e3a2c[_0xe9f0('0x55')]['id']}});})[_0xe9f0('0x14')](respondWithStatusCode(_0x3d479a,0xc8))['catch'](handleError(_0x3d479a,0x193));}else{return _0x3d479a[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x21')]({'message':_0xe9f0('0x17f')});}};exports[_0xe9f0('0x183')]=function(_0x11be0e,_0x303618){var _0x1b4a71=_0x11be0e['user'][_0xe9f0('0x2a')]({'plain':!![]});if(!_0x1b4a71){return _0x303618[_0xe9f0('0x1f')](0x191)[_0xe9f0('0x3b')](_0xe9f0('0x184'));}else{return _0x303618[_0xe9f0('0x1f')](0xc8)[_0xe9f0('0x21')](_0x1b4a71);}};exports['getPresence']=function(_0xf9964b,_0x2ec0f7){var _0x535888={'offset':0x0},_0x256c3b={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(!_0xf9964b['query']['filter']&&!_0xf9964b[_0xe9f0('0x43')]['teams']&&!_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x185')])return[];return Promise[_0xe9f0('0x108')]()[_0xe9f0('0x14')](function(){var _0x20f10a=[];if(!_['isEmpty'](_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x186')])){_0x20f10a[_0xe9f0('0x4b')](db[_0xe9f0('0x118')]['findAll']({'attributes':['id',_0xe9f0('0x38')],'where':{'id':_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x186')]}}));}if(!_[_0xe9f0('0x91')](_0xf9964b[_0xe9f0('0x43')]['queues'])){_0x20f10a[_0xe9f0('0x4b')](db[_0xe9f0('0xaf')]['findAll']({'attributes':['id',_0xe9f0('0x38')],'type':_0xe9f0('0x187'),'where':{'id':_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x185')]}}));}return Promise[_0xe9f0('0x8e')](_0x20f10a);})[_0xe9f0('0x14')](function(_0x362ea6){var _0x50a129=_[_0xe9f0('0x126')](_0x362ea6)[_0xe9f0('0x35')](function(_0x56dbcf){return _0x56dbcf[_0xe9f0('0x188')]({'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x65'),_0xe9f0('0xb0')],'raw':!![]});});return Promise[_0xe9f0('0x8e')](_0x50a129);})[_0xe9f0('0x14')](function(_0x34ad34){var _0x43754b=_[_0xe9f0('0x126')](_0x34ad34);if(!_0xf9964b[_0xe9f0('0x43')]['filter'])return _0x43754b;if(_['isEmpty'](_0x43754b)){return db[_0xe9f0('0x42')]['findAll']({'attributes':['id',_0xe9f0('0x38'),_0xe9f0('0x65'),'online'],'where':{'role':_0xe9f0('0x30'),'$or':[db['sequelize'][_0xe9f0('0x41')](db[_0xe9f0('0x6c')]['fn'](_0xe9f0('0x189'),db[_0xe9f0('0x6c')][_0xe9f0('0x18a')](_0xe9f0('0x38'))),{'$like':'%'+_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x33')][_0xe9f0('0xa8')]()+'%'}),{'internal':{'$like':'%'+_0xf9964b[_0xe9f0('0x43')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x43754b)[_0xe9f0('0x126')]()[_0xe9f0('0x33')](function(_0x2ff387){return _0x2ff387[_0xe9f0('0x38')][_0xe9f0('0xa8')]()['includes'](_0xf9964b['query'][_0xe9f0('0x33')][_0xe9f0('0xa8')]())||_0x2ff387[_0xe9f0('0x65')][_0xe9f0('0x18b')]()[_0xe9f0('0x5f')](_0xf9964b[_0xe9f0('0x43')]['filter']);})[_0xe9f0('0x37')]();}})[_0xe9f0('0x14')](function(_0x31af56){var _0x1c93a6=_0xe9f0('0x38');var _0x4f0e56='asc';if(_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0xd3')]){var _0x4f0e56=_0xf9964b['query']['sort'][0x0]==='-'?_0xe9f0('0x18c'):'asc';var _0x1c93a6=_0x4f0e56==='asc'?_0xf9964b[_0xe9f0('0x43')]['sort']:_0xf9964b['query'][_0xe9f0('0xd3')]['substring'](0x1);}return _(_0x31af56)[_0xe9f0('0x18d')]('id')[_0xe9f0('0x18e')]([function(_0x5d5c71){return _0x1c93a6==='name'?_0x5d5c71[_0x1c93a6][_0xe9f0('0xa8')]():_0x5d5c71[_0x1c93a6];}],[_0x4f0e56])['map'](function(_0x1d3e22){return _[_0xe9f0('0xd4')](_0x1d3e22,['id',_0xe9f0('0x38'),_0xe9f0('0x65'),_0xe9f0('0xb0')]);})[_0xe9f0('0x37')]();})[_0xe9f0('0x14')](function(_0x5ade7f){return client[_0xe9f0('0x18f')](_0xe9f0('0x2f'),_0xf9964b)[_0xe9f0('0x14')](function(_0x15b9ad){if(_0x15b9ad[_0xe9f0('0x1a')])throw new Error(_0xe9f0('0x190'));var _0x43c559=_0x15b9ad[_0xe9f0('0x1d')];var _0x422aea=jayson[_0xe9f0('0x12')][_0xe9f0('0x13')]({'port':0x232c});return _0x422aea[_0xe9f0('0x18f')](_0xe9f0('0x2f'),_0xf9964b)['then'](function(_0x296f0){if(_0x296f0[_0xe9f0('0x1a')])throw new Error(_0xe9f0('0x191'));var _0x158ccf=_0x296f0['result'];return _['merge']({},_0x158ccf,_0x43c559);});})['then'](function(_0x21a82a){return _[_0xe9f0('0x35')](_0x5ade7f,function(_0x324b0a){var _0x135b69=_[_0xe9f0('0x36')](_0x21a82a[_0xe9f0('0x4d')],['id',_0x324b0a['id']]);if(!_0x135b69||!_0x324b0a['online']){_0x324b0a['status']=_0xe9f0('0x192');}else if(_0x135b69['voicePause']){_0x324b0a[_0xe9f0('0x1f')]=_0xe9f0('0x10a');}else{_0x324b0a[_0xe9f0('0x1f')]=_[_0xe9f0('0x5f')]([_0xe9f0('0x193'),_0xe9f0('0x194'),_0xe9f0('0x195'),_0xe9f0('0x196'),null,undefined],_0x135b69['voiceStatus'])?_0xe9f0('0xb0'):_0xe9f0('0x197');}return _0x324b0a;});});});})[_0xe9f0('0x14')](function(_0x5117bb){if(!_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0xd6')](_0xe9f0('0xe0'))){_0x535888[_0xe9f0('0x24')]=qs['limit'](_0xf9964b[_0xe9f0('0x43')]['limit']||0xa);_0x535888['offset']=qs[_0xe9f0('0x22')](_0xf9964b[_0xe9f0('0x43')][_0xe9f0('0x22')]);}_0x256c3b[_0xe9f0('0x25')]=_0x5117bb[_0xe9f0('0x4a')];_0x256c3b[_0xe9f0('0x4d')]=_0x535888[_0xe9f0('0x24')]?_0x5117bb[_0xe9f0('0x198')](_0x535888[_0xe9f0('0x22')],_0x535888['offset']+_0x535888[_0xe9f0('0x24')]):_0x5117bb;return _0x256c3b;})[_0xe9f0('0x14')](respondWithFilteredResult(_0x2ec0f7,_0x535888))[_0xe9f0('0x1e')](handleError(_0x2ec0f7,null));};function get_open_tabs(_0x15a003,_0x1d877a){var _0x157a3a=_0x15a003['charAt'](0x0)[_0xe9f0('0x199')]()+_0x15a003[_0xe9f0('0x198')](0x1);var _0x274023={'type':db[_0xe9f0('0x96')][_0xe9f0('0x19a')][_0xe9f0('0x6e')],'raw':!![]};return new BPromise(function(_0x1ce031,_0x42f68e){var _0x4c262b=squel['select']()[_0xe9f0('0x19b')](_0xe9f0('0x19c')+_0x157a3a+_0xe9f0('0x19d'),'id')[_0xe9f0('0x19b')]('ui.createdAt')['from'](_0xe9f0('0x19e')+_0x15a003+_0xe9f0('0x19f'),'ui')[_0xe9f0('0x41')]('ui.UserId\x20=\x20?',_0x1d877a['id']);return db[_0xe9f0('0x6c')][_0xe9f0('0x43')](_0x4c262b[_0xe9f0('0x18b')](),_0x274023)[_0xe9f0('0x14')](function(_0x3ea2c7){_0x1d877a[_0x157a3a+_0xe9f0('0x1a0')]=_0x3ea2c7;_0x1ce031(_0x3ea2c7);})[_0xe9f0('0x1e')](function(_0x1e10ed){_0x42f68e(_0x1e10ed);});});};
\ No newline at end of file
index 80743a2..795928a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6700=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','User'];(function(_0x5ecc5d,_0x38d142){var _0x5b98a3=function(_0x469ad1){while(--_0x469ad1){_0x5ecc5d['push'](_0x5ecc5d['shift']());}};_0x5b98a3(++_0x38d142);}(_0x6700,0x1e8));var _0x0670=function(_0x1d194d,_0x3ee394){_0x1d194d=_0x1d194d-0x0;var _0x273d5b=_0x6700[_0x1d194d];return _0x273d5b;};'use strict';var EventEmitter=require(_0x0670('0x0'));var User=require('../../mysqldb')['db'][_0x0670('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x0670('0x2')](0x0);var events={'afterCreate':_0x0670('0x3'),'afterUpdate':_0x0670('0x4'),'afterDestroy':_0x0670('0x5')};function emitEvent(_0x42c972){return function(_0x590ce8,_0x3b6f0d,_0x340a3e){UserEvents[_0x0670('0x6')](_0x42c972+':'+_0x590ce8['id'],_0x590ce8);UserEvents[_0x0670('0x6')](_0x42c972,_0x590ce8);_0x340a3e(null);};}for(var e in events){if(events[_0x0670('0x7')](e)){var event=events[e];User[_0x0670('0x8')](e,emitEvent(event));}}module[_0x0670('0x9')]=UserEvents;
\ No newline at end of file
+var _0x8891=['save','emit','hasOwnProperty','exports','events','../../mysqldb','User','setMaxListeners'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8891,0x1a4));var _0x1889=function(_0x1df378,_0x2c4af3){_0x1df378=_0x1df378-0x0;var _0x2cb9fe=_0x8891[_0x1df378];return _0x2cb9fe;};'use strict';var EventEmitter=require(_0x1889('0x0'));var User=require(_0x1889('0x1'))['db'][_0x1889('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x1889('0x3')](0x0);var events={'afterCreate':_0x1889('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2fef4e){return function(_0x3f1bcd,_0x24941f,_0x10dd0f){UserEvents['emit'](_0x2fef4e+':'+_0x3f1bcd['id'],_0x3f1bcd);UserEvents[_0x1889('0x5')](_0x2fef4e,_0x3f1bcd);_0x10dd0f(null);};}for(var e in events){if(events[_0x1889('0x6')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x1889('0x7')]=UserEvents;
\ No newline at end of file
index f179279..5cc0767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2df=['options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Hangup','defaults','findAll','then','internal','concat','exports','models','define','User','users','utf8_bin','userProfileId','resolve','UserProfile','find','updatePassword','catch','privacyEnabled','changed','updateMd5Password','VoiceExtension','bulkCreate','destroy','encryptPassword','Missing\x20Callback','toString','salt','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','makeSalt',':asterisk:','md5secret','bluebird','crypto','lodash','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xd2df,0x159));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xfd2d('0x0'));var crypto=require(_0xfd2d('0x1'));var util=require('util');var md5=require('md5');var _=require(_0xfd2d('0x2'));var attributes=require('./user.attributes');var authTypes=[_0xfd2d('0x3')];var validatePresenceOf=function(_0x378488){return _0x378488&&_0x378488[_0xfd2d('0x4')];};var getChanSpyApplications=function(_0xe05cb7,_0x44f958,_0x36a8b9){var _0x3fa52d={'context':_0xe05cb7[_0xfd2d('0x5')]||_0xfd2d('0x6'),'type':_0xfd2d('0x7'),'isApp':![],'UserId':_0xe05cb7['id']};var _0x3fb29a=[];for(var _0x57647f=0x0,_0x42c1b6=0x1;_0x57647f<_0x36a8b9['length'];_0x57647f++,_0x42c1b6=0x1){var _0x303735={'exten':util['format'](_0xfd2d('0x8'),_0x36a8b9[_0x57647f][_0xfd2d('0x9')],_0x44f958),'ChanSpyId':_0x36a8b9[_0x57647f]['id']};_0x3fb29a[_0xfd2d('0xa')](_[_0xfd2d('0xb')]({'app':_0xfd2d('0xc'),'appdata':util[_0xfd2d('0xd')](_0xfd2d('0xe'),_0xfd2d('0xf')),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));if(_0x36a8b9[_0x57647f][_0xfd2d('0x10')]){_0x3fb29a['push'](_[_0xfd2d('0xb')]({'app':_0xfd2d('0x11'),'appdata':util['format'](_0xfd2d('0x12'),_0x36a8b9[_0x57647f][_0xfd2d('0x13')]),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}if(_0x36a8b9[_0x57647f][_0xfd2d('0x14')]){_0x3fb29a['push'](_['merge']({'app':_0xfd2d('0x15'),'appdata':_0x36a8b9[_0x57647f][_0xfd2d('0x16')],'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}_0x3fb29a[_0xfd2d('0xa')](_['merge']({'app':_0xfd2d('0x17'),'appdata':util[_0xfd2d('0xd')]('SIP/%s,%s',_0xe05cb7[_0xfd2d('0x18')],_0x36a8b9[_0x57647f][_0xfd2d('0x19')]?_0x36a8b9[_0x57647f]['options'][_0xfd2d('0x1a')](''):''),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));if(_0x36a8b9[_0x57647f][_0xfd2d('0x10')]){_0x3fb29a[_0xfd2d('0xa')](_['merge']({'app':_0xfd2d('0x1b'),'priority':_0x42c1b6++},_0x3fa52d,_0x303735));}}return _0x3fb29a;};var getUserApplications=function(_0x3f766a,_0x20cf6b){var _0x28331b=[_0xfd2d('0x1c'),_0xfd2d('0x1d'),_0xfd2d('0x1e')];var _0xcb9e3f={'context':_0x3f766a[_0xfd2d('0x5')]||_0xfd2d('0x6'),'exten':_0x20cf6b,'type':_0xfd2d('0x7'),'isApp':![],'UserId':_0x3f766a['id']};var _0x3c6fe7=[{'app':'Set','appdata':_0xfd2d('0x1f')}];if(_0x3f766a[_0xfd2d('0x20')]&&_[_0xfd2d('0x21')](_0x28331b,_0x3f766a['extensionMonitor'])){_0x3c6fe7['push']({'app':_0xfd2d('0xc'),'appdata':_0xfd2d('0x22')});_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0xc'),'appdata':util[_0xfd2d('0xd')](_0xfd2d('0x23'),_0x3f766a[_0xfd2d('0x20')])});_0x3c6fe7['push']({'app':_0xfd2d('0x24'),'appdata':util['format'](_0xfd2d('0x25'),_0x3f766a[_0xfd2d('0x18')])});}else{_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0x24'),'appdata':util[_0xfd2d('0xd')]('SIP/%s,,tTxX',_0x3f766a['name'])});}_0x3c6fe7[_0xfd2d('0xa')]({'app':_0xfd2d('0x26')});for(var _0x1e4c2f=0x0;_0x1e4c2f<_0x3c6fe7[_0xfd2d('0x4')];_0x1e4c2f++){_0x3c6fe7[_0x1e4c2f]['priority']=_0x1e4c2f+0x1;_0x3c6fe7[_0x1e4c2f]=_[_0xfd2d('0x27')](_0x3c6fe7[_0x1e4c2f],_0xcb9e3f);}return _0x3c6fe7;};var getChanSpyPromise=function(_0x2902eb,_0x127392){return new BPromise(function(_0x4375ab,_0x7a0662){return _0x2902eb['VoiceChanSpy'][_0xfd2d('0x28')]()[_0xfd2d('0x29')](function(_0x5586a6){if(_0x5586a6){var _0x23cf61=getChanSpyApplications(_0x127392,_0x127392['internal'],_0x5586a6);if(_0x127392[_0xfd2d('0x2a')]!=_0x127392[_0xfd2d('0x18')]){_0x23cf61=_0x23cf61[_0xfd2d('0x2b')](getChanSpyApplications(_0x127392,_0x127392[_0xfd2d('0x18')],_0x5586a6));}return _0x4375ab(_0x23cf61);}return _0x4375ab([]);})['catch'](function(_0x139d0e){_0x7a0662(_0x139d0e);});});};module[_0xfd2d('0x2c')]=function(_0x258da8,_0x235114){var _0xd67088=_0x258da8[_0xfd2d('0x2d')];return _0x258da8[_0xfd2d('0x2e')](_0xfd2d('0x2f'),attributes,{'tableName':_0xfd2d('0x30'),'charset':'utf8','collate':_0xfd2d('0x31'),'hooks':{'beforeCreate':function(_0x396be5,_0x776e98,_0x3a60ae){var _0x568877=typeof _0x396be5[_0xfd2d('0x32')]==='undefined'?BPromise[_0xfd2d('0x33')](null):_0xd67088[_0xfd2d('0x34')][_0xfd2d('0x35')]({'where':{'id':_0x396be5[_0xfd2d('0x32')]}});_0x568877[_0xfd2d('0x29')](function(_0x98679d){if(_0x98679d){_0x396be5['privacyEnabled']=_0x98679d['privacyEnabled'];}})['then'](function(){_0x396be5['updateMd5Password']();_0x396be5[_0xfd2d('0x36')](_0x3a60ae);})[_0xfd2d('0x37')](function(_0x5aa9d8){_0x3a60ae(_0x5aa9d8);});},'beforeUpdate':function(_0x1cb6f1,_0x49cd8d,_0xa557cb){Promise[_0xfd2d('0x33')]()[_0xfd2d('0x29')](function(){if(_0x1cb6f1['changed'](_0xfd2d('0x32'))===![])return;return _0xd67088['UserProfile'][_0xfd2d('0x35')]({'where':{'id':_0x1cb6f1['userProfileId']}})[_0xfd2d('0x29')](function(_0x5707c2){if(_0x5707c2)_0x1cb6f1[_0xfd2d('0x38')]=_0x5707c2[_0xfd2d('0x38')];return;});})[_0xfd2d('0x29')](function(){if(_0x1cb6f1[_0xfd2d('0x39')](_0xfd2d('0x16'))){_0x1cb6f1[_0xfd2d('0x3a')]();return _0x1cb6f1[_0xfd2d('0x36')](_0xa557cb);}_0xa557cb();})[_0xfd2d('0x37')](function(_0xeec55c){_0xa557cb(_0xeec55c);});},'afterCreate':function(_0x361136,_0x15292e,_0x1c9fad){var _0x27b744=getUserApplications(_0x361136,_0x361136[_0xfd2d('0x2a')]);if(_0x361136[_0xfd2d('0x2a')]!=_0x361136[_0xfd2d('0x18')]){_0x27b744=_0x27b744[_0xfd2d('0x2b')](getUserApplications(_0x361136,_0x361136[_0xfd2d('0x18')]));}return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3c')](_0x27b744)[_0xfd2d('0x29')](function(){if(_0x361136[_0xfd2d('0xf')]){return getChanSpyPromise(_0xd67088,_0x361136);}})[_0xfd2d('0x29')](function(_0x51bbc3){if(_0x51bbc3&&_0x51bbc3[_0xfd2d('0x4')]){return _0xd67088[_0xfd2d('0x3b')]['bulkCreate'](_0x51bbc3);}})[_0xfd2d('0x29')](function(){_0x1c9fad();})[_0xfd2d('0x37')](function(_0x1546ac){_0x1c9fad(_0x1546ac);});},'afterUpdate':function(_0x3c0728,_0x170b26,_0x5c0ddc){return BPromise['resolve']()[_0xfd2d('0x29')](function(){if(_0x3c0728['changed'](_0xfd2d('0xf'))||_0x3c0728['changed'](_0xfd2d('0x5'))){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3d')]({'where':{'UserId':_0x3c0728['id'],'type':_0xfd2d('0x7'),'ChanSpyId':{'$ne':null}}})[_0xfd2d('0x29')](function(){if(_0x3c0728[_0xfd2d('0xf')]){return getChanSpyPromise(_0xd67088,_0x3c0728)[_0xfd2d('0x29')](function(_0x5709ba){if(_0x5709ba&&_0x5709ba[_0xfd2d('0x4')]){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3c')](_0x5709ba);}});}});}})[_0xfd2d('0x29')](function(){if(_0x3c0728[_0xfd2d('0x39')]('extensionMonitor')||_0x3c0728[_0xfd2d('0x39')](_0xfd2d('0x5'))){return _0xd67088[_0xfd2d('0x3b')]['destroy']({'where':{'UserId':_0x3c0728['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x194f48=getUserApplications(_0x3c0728,_0x3c0728[_0xfd2d('0x2a')]);if(_0x3c0728[_0xfd2d('0x2a')]!=_0x3c0728[_0xfd2d('0x18')]){_0x194f48=_0x194f48[_0xfd2d('0x2b')](getUserApplications(_0x3c0728,_0x3c0728[_0xfd2d('0x18')]));}return _0xd67088[_0xfd2d('0x3b')]['bulkCreate'](_0x194f48);});}})[_0xfd2d('0x29')](function(){_0x5c0ddc();})[_0xfd2d('0x37')](function(_0x44570b){_0x5c0ddc(_0x44570b);});},'afterDestroy':function(_0x241182,_0x19cf2b){return _0xd67088[_0xfd2d('0x3b')][_0xfd2d('0x3d')]({'where':{'UserId':_0x241182['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x11d087,_0x40055b){if(!_0x40055b){return this[_0xfd2d('0x16')]===this['encryptPassword'](_0x11d087);}var _0x408190=this;this[_0xfd2d('0x3e')](_0x11d087,function(_0x1b51d5,_0x3d2dda){if(_0x1b51d5){_0x40055b(_0x1b51d5);}if(_0x408190[_0xfd2d('0x16')]===_0x3d2dda){_0x40055b(null,!![]);}else{_0x40055b(null,![]);}});},'makeSalt':function(_0xbe2600,_0x27b378){var _0x2c6916=0x10;if(typeof arguments[0x0]==='function'){_0x27b378=arguments[0x0];_0xbe2600=_0x2c6916;}else if(typeof arguments[0x1]==='function'){_0x27b378=arguments[0x1];}else{throw new Error(_0xfd2d('0x3f'));}if(!_0xbe2600){_0xbe2600=_0x2c6916;}return crypto['randomBytes'](_0xbe2600,function(_0x48fdf9,_0x6b0b5){if(_0x48fdf9){_0x27b378(_0x48fdf9);}return _0x27b378(null,_0x6b0b5[_0xfd2d('0x40')]('base64'));});},'encryptPassword':function(_0x2d39ea,_0x5e3443){if(!_0x2d39ea||!this[_0xfd2d('0x41')]){return _0x5e3443?_0x5e3443(null):null;}var _0x8af370=0x2710;var _0x5e9fd2=0x40;var _0x328d4c=new Buffer(this[_0xfd2d('0x41')],_0xfd2d('0x42'));if(!_0x5e3443){return crypto[_0xfd2d('0x43')](_0x2d39ea,_0x328d4c,_0x8af370,_0x5e9fd2,_0xfd2d('0x44'))[_0xfd2d('0x40')](_0xfd2d('0x42'));}return crypto[_0xfd2d('0x45')](_0x2d39ea,_0x328d4c,_0x8af370,_0x5e9fd2,'sha1',function(_0x129c14,_0x2a5a1b){if(_0x129c14){_0x5e3443(_0x129c14);}return _0x5e3443(null,_0x2a5a1b[_0xfd2d('0x40')](_0xfd2d('0x42')));});},'updatePassword':function(_0x4e5414){if(!this[_0xfd2d('0x16')]){return _0x4e5414(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xfd2d('0x46')](this['provider'])===-0x1){_0x4e5414(new Error('Invalid\x20password'));}var _0x1c0e44=this;this[_0xfd2d('0x47')](function(_0x7ffa44,_0x3b6d30){if(_0x7ffa44){return _0x4e5414(_0x7ffa44);}_0x1c0e44['salt']=_0x3b6d30;_0x1c0e44[_0xfd2d('0x3e')](_0x1c0e44[_0xfd2d('0x16')],function(_0x1bfd49,_0x5cd41a){if(_0x1bfd49){_0x4e5414(_0x1bfd49);}_0x1c0e44['password']=_0x5cd41a;_0x4e5414(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this['name']+_0xfd2d('0x48')+this[_0xfd2d('0x16')]);return this[_0xfd2d('0x49')];}}});};
\ No newline at end of file
+var _0x9122=['StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Dial','SIP/%s,,tTxX','Hangup','VoiceChanSpy','findAll','then','internal','concat','catch','define','utf8_bin','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','indexOf','provider','md5secret',':asterisk:','bluebird','crypto','md5','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','options','join'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9122,0xfe));var _0x2912=function(_0x5410b8,_0x5b734b){_0x5410b8=_0x5410b8-0x0;var _0x4702ae=_0x9122[_0x5410b8];return _0x4702ae;};'use strict';var BPromise=require(_0x2912('0x0'));var crypto=require(_0x2912('0x1'));var util=require('util');var md5=require(_0x2912('0x2'));var _=require('lodash');var attributes=require('./user.attributes');var authTypes=[_0x2912('0x3')];var validatePresenceOf=function(_0x13a67d){return _0x13a67d&&_0x13a67d[_0x2912('0x4')];};var getChanSpyApplications=function(_0x36982b,_0x3893d1,_0x4aa2dd){var _0x162bc2={'context':_0x36982b[_0x2912('0x5')]||_0x2912('0x6'),'type':_0x2912('0x7'),'isApp':![],'UserId':_0x36982b['id']};var _0x3bd245=[];for(var _0x55b3dc=0x0,_0x3a0c82=0x1;_0x55b3dc<_0x4aa2dd[_0x2912('0x4')];_0x55b3dc++,_0x3a0c82=0x1){var _0x701aac={'exten':util['format'](_0x2912('0x8'),_0x4aa2dd[_0x55b3dc][_0x2912('0x9')],_0x3893d1),'ChanSpyId':_0x4aa2dd[_0x55b3dc]['id']};_0x3bd245[_0x2912('0xa')](_[_0x2912('0xb')]({'app':_0x2912('0xc'),'appdata':util[_0x2912('0xd')](_0x2912('0xe'),_0x2912('0xf')),'priority':_0x3a0c82++},_0x162bc2,_0x701aac));if(_0x4aa2dd[_0x55b3dc][_0x2912('0x10')]){_0x3bd245[_0x2912('0xa')](_[_0x2912('0xb')]({'app':_0x2912('0x11'),'appdata':util['format'](_0x2912('0x12'),_0x4aa2dd[_0x55b3dc][_0x2912('0x13')]),'priority':_0x3a0c82++},_0x162bc2,_0x701aac));}if(_0x4aa2dd[_0x55b3dc][_0x2912('0x14')]){_0x3bd245[_0x2912('0xa')](_[_0x2912('0xb')]({'app':_0x2912('0x15'),'appdata':_0x4aa2dd[_0x55b3dc][_0x2912('0x16')],'priority':_0x3a0c82++},_0x162bc2,_0x701aac));}_0x3bd245[_0x2912('0xa')](_[_0x2912('0xb')]({'app':'ChanSpy','appdata':util[_0x2912('0xd')](_0x2912('0x17'),_0x36982b['name'],_0x4aa2dd[_0x55b3dc][_0x2912('0x18')]?_0x4aa2dd[_0x55b3dc][_0x2912('0x18')][_0x2912('0x19')](''):''),'priority':_0x3a0c82++},_0x162bc2,_0x701aac));if(_0x4aa2dd[_0x55b3dc][_0x2912('0x10')]){_0x3bd245['push'](_[_0x2912('0xb')]({'app':_0x2912('0x1a'),'priority':_0x3a0c82++},_0x162bc2,_0x701aac));}}return _0x3bd245;};var getUserApplications=function(_0x2f0e65,_0x5e8561){var _0x10c731=[_0x2912('0x1b'),_0x2912('0x1c'),_0x2912('0x1d')];var _0x2bf024={'context':_0x2f0e65[_0x2912('0x5')]||_0x2912('0x6'),'exten':_0x5e8561,'type':_0x2912('0x7'),'isApp':![],'UserId':_0x2f0e65['id']};var _0xad5e97=[{'app':_0x2912('0xc'),'appdata':_0x2912('0x1e')}];if(_0x2f0e65[_0x2912('0x1f')]&&_[_0x2912('0x20')](_0x10c731,_0x2f0e65[_0x2912('0x1f')])){_0xad5e97[_0x2912('0xa')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0xad5e97['push']({'app':_0x2912('0xc'),'appdata':util[_0x2912('0xd')](_0x2912('0x21'),_0x2f0e65[_0x2912('0x1f')])});_0xad5e97['push']({'app':'Dial','appdata':util[_0x2912('0xd')](_0x2912('0x22'),_0x2f0e65[_0x2912('0x23')])});}else{_0xad5e97['push']({'app':_0x2912('0x24'),'appdata':util[_0x2912('0xd')](_0x2912('0x25'),_0x2f0e65['name'])});}_0xad5e97[_0x2912('0xa')]({'app':_0x2912('0x26')});for(var _0x6ce6be=0x0;_0x6ce6be<_0xad5e97[_0x2912('0x4')];_0x6ce6be++){_0xad5e97[_0x6ce6be]['priority']=_0x6ce6be+0x1;_0xad5e97[_0x6ce6be]=_['defaults'](_0xad5e97[_0x6ce6be],_0x2bf024);}return _0xad5e97;};var getChanSpyPromise=function(_0x2e8322,_0x10d899){return new BPromise(function(_0x899d1a,_0x5107a1){return _0x2e8322[_0x2912('0x27')][_0x2912('0x28')]()[_0x2912('0x29')](function(_0x144b16){if(_0x144b16){var _0x35bd88=getChanSpyApplications(_0x10d899,_0x10d899['internal'],_0x144b16);if(_0x10d899[_0x2912('0x2a')]!=_0x10d899[_0x2912('0x23')]){_0x35bd88=_0x35bd88[_0x2912('0x2b')](getChanSpyApplications(_0x10d899,_0x10d899[_0x2912('0x23')],_0x144b16));}return _0x899d1a(_0x35bd88);}return _0x899d1a([]);})[_0x2912('0x2c')](function(_0x4daa6f){_0x5107a1(_0x4daa6f);});});};module['exports']=function(_0x1ad62e,_0xc70942){var _0x21690f=_0x1ad62e['models'];return _0x1ad62e[_0x2912('0x2d')]('User',attributes,{'tableName':'users','charset':'utf8','collate':_0x2912('0x2e'),'hooks':{'beforeCreate':function(_0x133227,_0x399346,_0x53b195){var _0x2bb057=typeof _0x133227[_0x2912('0x2f')]===_0x2912('0x30')?BPromise['resolve'](null):_0x21690f[_0x2912('0x31')][_0x2912('0x32')]({'where':{'id':_0x133227[_0x2912('0x2f')]}});_0x2bb057[_0x2912('0x29')](function(_0x1ad5fe){if(_0x1ad5fe){_0x133227['privacyEnabled']=_0x1ad5fe[_0x2912('0x33')];}})[_0x2912('0x29')](function(){_0x133227[_0x2912('0x34')]();_0x133227[_0x2912('0x35')](_0x53b195);})[_0x2912('0x2c')](function(_0x35ba7a){_0x53b195(_0x35ba7a);});},'beforeUpdate':function(_0x1f5fdf,_0x27250d,_0x3ff1b4){Promise[_0x2912('0x36')]()['then'](function(){if(_0x1f5fdf[_0x2912('0x37')](_0x2912('0x2f'))===![])return;return _0x21690f[_0x2912('0x31')]['find']({'where':{'id':_0x1f5fdf['userProfileId']}})[_0x2912('0x29')](function(_0x1dfdc6){if(_0x1dfdc6)_0x1f5fdf[_0x2912('0x33')]=_0x1dfdc6[_0x2912('0x33')];return;});})['then'](function(){if(_0x1f5fdf[_0x2912('0x37')](_0x2912('0x16'))){_0x1f5fdf[_0x2912('0x34')]();return _0x1f5fdf[_0x2912('0x35')](_0x3ff1b4);}_0x3ff1b4();})['catch'](function(_0x454b40){_0x3ff1b4(_0x454b40);});},'afterCreate':function(_0x5c843b,_0x2f101d,_0x3e668c){var _0x24c0e6=getUserApplications(_0x5c843b,_0x5c843b[_0x2912('0x2a')]);if(_0x5c843b[_0x2912('0x2a')]!=_0x5c843b[_0x2912('0x23')]){_0x24c0e6=_0x24c0e6[_0x2912('0x2b')](getUserApplications(_0x5c843b,_0x5c843b[_0x2912('0x23')]));}return _0x21690f[_0x2912('0x38')][_0x2912('0x39')](_0x24c0e6)[_0x2912('0x29')](function(){if(_0x5c843b[_0x2912('0xf')]){return getChanSpyPromise(_0x21690f,_0x5c843b);}})[_0x2912('0x29')](function(_0x5e5efc){if(_0x5e5efc&&_0x5e5efc['length']){return _0x21690f[_0x2912('0x38')]['bulkCreate'](_0x5e5efc);}})[_0x2912('0x29')](function(){_0x3e668c();})[_0x2912('0x2c')](function(_0x5d7a05){_0x3e668c(_0x5d7a05);});},'afterUpdate':function(_0x5b94ef,_0x6edb6a,_0x39c5aa){return BPromise[_0x2912('0x36')]()[_0x2912('0x29')](function(){if(_0x5b94ef['changed'](_0x2912('0xf'))||_0x5b94ef['changed'](_0x2912('0x5'))){return _0x21690f['VoiceExtension'][_0x2912('0x3a')]({'where':{'UserId':_0x5b94ef['id'],'type':_0x2912('0x7'),'ChanSpyId':{'$ne':null}}})[_0x2912('0x29')](function(){if(_0x5b94ef[_0x2912('0xf')]){return getChanSpyPromise(_0x21690f,_0x5b94ef)['then'](function(_0x1959d5){if(_0x1959d5&&_0x1959d5[_0x2912('0x4')]){return _0x21690f['VoiceExtension'][_0x2912('0x39')](_0x1959d5);}});}});}})[_0x2912('0x29')](function(){if(_0x5b94ef[_0x2912('0x37')]('extensionMonitor')||_0x5b94ef[_0x2912('0x37')](_0x2912('0x5'))){return _0x21690f[_0x2912('0x38')][_0x2912('0x3a')]({'where':{'UserId':_0x5b94ef['id'],'type':_0x2912('0x7'),'ChanSpyId':null}})[_0x2912('0x29')](function(){var _0x178dd5=getUserApplications(_0x5b94ef,_0x5b94ef[_0x2912('0x2a')]);if(_0x5b94ef['internal']!=_0x5b94ef[_0x2912('0x23')]){_0x178dd5=_0x178dd5[_0x2912('0x2b')](getUserApplications(_0x5b94ef,_0x5b94ef[_0x2912('0x23')]));}return _0x21690f[_0x2912('0x38')][_0x2912('0x39')](_0x178dd5);});}})['then'](function(){_0x39c5aa();})[_0x2912('0x2c')](function(_0x22f23c){_0x39c5aa(_0x22f23c);});},'afterDestroy':function(_0x1fde35,_0x56b5f5){return _0x21690f[_0x2912('0x38')][_0x2912('0x3a')]({'where':{'UserId':_0x1fde35['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x27c321,_0x290860){if(!_0x290860){return this[_0x2912('0x16')]===this[_0x2912('0x3b')](_0x27c321);}var _0x24d989=this;this[_0x2912('0x3b')](_0x27c321,function(_0x280194,_0x80ceaf){if(_0x280194){_0x290860(_0x280194);}if(_0x24d989['password']===_0x80ceaf){_0x290860(null,!![]);}else{_0x290860(null,![]);}});},'makeSalt':function(_0x100c84,_0x311f84){var _0x452411=0x10;if(typeof arguments[0x0]===_0x2912('0x3c')){_0x311f84=arguments[0x0];_0x100c84=_0x452411;}else if(typeof arguments[0x1]===_0x2912('0x3c')){_0x311f84=arguments[0x1];}else{throw new Error(_0x2912('0x3d'));}if(!_0x100c84){_0x100c84=_0x452411;}return crypto['randomBytes'](_0x100c84,function(_0xdfba44,_0x5d0f6e){if(_0xdfba44){_0x311f84(_0xdfba44);}return _0x311f84(null,_0x5d0f6e[_0x2912('0x3e')](_0x2912('0x3f')));});},'encryptPassword':function(_0x73690e,_0x46d725){if(!_0x73690e||!this[_0x2912('0x40')]){return _0x46d725?_0x46d725(null):null;}var _0x3d5677=0x2710;var _0x2e08ee=0x40;var _0x5804f5=new Buffer(this['salt'],'base64');if(!_0x46d725){return crypto['pbkdf2Sync'](_0x73690e,_0x5804f5,_0x3d5677,_0x2e08ee,_0x2912('0x41'))[_0x2912('0x3e')]('base64');}return crypto['pbkdf2'](_0x73690e,_0x5804f5,_0x3d5677,_0x2e08ee,_0x2912('0x41'),function(_0xb59e20,_0x48a101){if(_0xb59e20){_0x46d725(_0xb59e20);}return _0x46d725(null,_0x48a101[_0x2912('0x3e')]('base64'));});},'updatePassword':function(_0x1dad1d){if(!this[_0x2912('0x16')]){return _0x1dad1d(null);}if(!validatePresenceOf(this[_0x2912('0x16')])&&authTypes[_0x2912('0x42')](this[_0x2912('0x43')])===-0x1){_0x1dad1d(new Error('Invalid\x20password'));}var _0x35f4b8=this;this['makeSalt'](function(_0x1aa10b,_0xac2c82){if(_0x1aa10b){return _0x1dad1d(_0x1aa10b);}_0x35f4b8[_0x2912('0x40')]=_0xac2c82;_0x35f4b8[_0x2912('0x3b')](_0x35f4b8[_0x2912('0x16')],function(_0x5a1c91,_0x56474d){if(_0x5a1c91){_0x1dad1d(_0x5a1c91);}_0x35f4b8[_0x2912('0x16')]=_0x56474d;_0x1dad1d(null);});});},'updateMd5Password':function(){this[_0x2912('0x44')]=md5(this[_0x2912('0x23')]+_0x2912('0x45')+this[_0x2912('0x16')]);return this[_0x2912('0x44')];}}});};
\ No newline at end of file
index 1d0d1d4..9cb7801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd133=['body','uniqueid','type','DEFAULT\x20PAUSE','UnpauseUser','channel','isValidChannel','Unknown\x20channel','fax','openchannel','whatsapp','system','set','Pause','LogoutUser','findOne','destroy','all','LoginUser','phone','loginInPause','count','agent','../../config/license/util','agents','getVoiceQueues','upsert','merge','callysquare','LOGININPAUSE','concat','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','info','User,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','User','findAll','options','where','attributes','limit','include','map','model','then','GetUser','ShowUser','find','raw','name','role','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','internal'];(function(_0x1cad0a,_0x341fa7){var _0x1cb50f=function(_0x321e68){while(--_0x321e68){_0x1cad0a['push'](_0x1cad0a['shift']());}};_0x1cb50f(++_0x341fa7);}(_0xd133,0x1d2));var _0x3d13=function(_0x3cd975,_0x23f21f){_0x3cd975=_0x3cd975-0x0;var _0x579111=_0xd133[_0x3cd975];return _0x579111;};'use strict';var _=require(_0x3d13('0x0'));var util=require('util');var moment=require(_0x3d13('0x1'));var BPromise=require(_0x3d13('0x2'));var rs=require(_0x3d13('0x3'));var fs=require('fs');var Redis=require(_0x3d13('0x4'));var db=require(_0x3d13('0x5'))['db'];var utils=require(_0x3d13('0x6'));var logger=require(_0x3d13('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3d13('0x8'));var client=jayson[_0x3d13('0x9')][_0x3d13('0xa')]({'port':0x232a});config[_0x3d13('0xb')]=_[_0x3d13('0xc')](config[_0x3d13('0xb')],{'host':_0x3d13('0xd'),'port':0x18eb});var socket=require(_0x3d13('0xe'))(new Redis(config['redis']));require(_0x3d13('0xf'))['register'](socket);function respondWithRpcPromise(_0x548fd1,_0x246c3c,_0x1e3c0d){return new BPromise(function(_0xeb048,_0x4783f3){return client['request'](_0x548fd1,_0x1e3c0d)['then'](function(_0x1607d1){logger[_0x3d13('0x10')](_0x3d13('0x11'),_0x246c3c,_0x3d13('0x12'));logger[_0x3d13('0x13')]('User,\x20%s,\x20%s,\x20%s',_0x246c3c,_0x3d13('0x12'),JSON[_0x3d13('0x14')](_0x1607d1));if(_0x1607d1[_0x3d13('0x15')]){if(_0x1607d1[_0x3d13('0x15')][_0x3d13('0x16')]===0x1f4){logger['error'](_0x3d13('0x11'),_0x246c3c,_0x1607d1['error']['message']);return _0x4783f3(_0x1607d1['error']['message']);}logger['error'](_0x3d13('0x11'),_0x246c3c,_0x1607d1[_0x3d13('0x15')][_0x3d13('0x17')]);return _0xeb048(_0x1607d1[_0x3d13('0x15')][_0x3d13('0x17')]);}else{logger[_0x3d13('0x10')]('User,\x20%s,\x20%s',_0x246c3c,_0x3d13('0x12'));_0xeb048(_0x1607d1['result'][_0x3d13('0x17')]);}})[_0x3d13('0x18')](function(_0x4f8f34){logger[_0x3d13('0x15')](_0x3d13('0x11'),_0x246c3c,_0x4f8f34);_0x4783f3(_0x4f8f34);});});}exports['GetUser']=function(_0x2ec725){var _0x3c9778=this;return new Promise(function(_0x529a55,_0x2dcd3e){return db[_0x3d13('0x19')][_0x3d13('0x1a')]({'raw':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1c')]||null:null,'attributes':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1d')]||null:null,'limit':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725[_0x3d13('0x1b')][_0x3d13('0x1e')]||null:null,'include':_0x2ec725[_0x3d13('0x1b')]?_0x2ec725['options'][_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x2ec725['options'][_0x3d13('0x1f')],function(_0x30cb42){return{'model':db[_0x30cb42[_0x3d13('0x21')]],'as':_0x30cb42['as'],'attributes':_0x30cb42[_0x3d13('0x1d')],'include':_0x30cb42[_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x30cb42['include'],function(_0x4f5561){return{'model':db[_0x4f5561['model']],'as':_0x4f5561['as'],'attributes':_0x4f5561[_0x3d13('0x1d')],'include':_0x4f5561['include']?_[_0x3d13('0x20')](_0x4f5561[_0x3d13('0x1f')],function(_0x3a78be){return{'model':db[_0x3a78be[_0x3d13('0x21')]],'as':_0x3a78be['as'],'attributes':_0x3a78be['attributes']};}):[]};}):[]};}):[]:[]})[_0x3d13('0x22')](function(_0x21eceb){logger[_0x3d13('0x10')](_0x3d13('0x23'),_0x2ec725);logger[_0x3d13('0x13')]('GetUser',_0x2ec725,JSON['stringify'](_0x21eceb));_0x529a55(_0x21eceb);})['catch'](function(_0x3cf9e2){logger[_0x3d13('0x15')](_0x3d13('0x23'),_0x3cf9e2[_0x3d13('0x17')],_0x2ec725);_0x2dcd3e(_0x3c9778['error'](0x1f4,_0x3cf9e2['message']));});});};exports[_0x3d13('0x24')]=function(_0x12d7e9){var _0x2104eb=this;return new Promise(function(_0x39a5f4,_0x3a5bce){return db[_0x3d13('0x19')][_0x3d13('0x25')]({'raw':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x26')]===undefined?!![]:![]:!![],'where':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')]['where']||null:null,'attributes':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1d')]||null:null,'include':_0x12d7e9[_0x3d13('0x1b')]?_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x12d7e9[_0x3d13('0x1b')][_0x3d13('0x1f')],function(_0x2efd1b){return{'model':db[_0x2efd1b[_0x3d13('0x21')]],'as':_0x2efd1b['as'],'attributes':_0x2efd1b['attributes'],'include':_0x2efd1b[_0x3d13('0x1f')]?_[_0x3d13('0x20')](_0x2efd1b['include'],function(_0x43865a){return{'model':db[_0x43865a[_0x3d13('0x21')]],'as':_0x43865a['as'],'attributes':_0x43865a[_0x3d13('0x1d')],'include':_0x43865a['include']?_[_0x3d13('0x20')](_0x43865a[_0x3d13('0x1f')],function(_0x434de7){return{'model':db[_0x434de7[_0x3d13('0x21')]],'as':_0x434de7['as'],'attributes':_0x434de7[_0x3d13('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3d13('0x22')](function(_0x2fe4c7){logger[_0x3d13('0x10')](_0x3d13('0x24'),_0x12d7e9);logger['debug'](_0x3d13('0x24'),_0x12d7e9,JSON[_0x3d13('0x14')](_0x2fe4c7));_0x39a5f4(_0x2fe4c7);})['catch'](function(_0x42b7a3){logger['error'](_0x3d13('0x24'),_0x42b7a3[_0x3d13('0x17')],_0x12d7e9);_0x3a5bce(_0x2104eb[_0x3d13('0x15')](0x1f4,_0x42b7a3[_0x3d13('0x17')]));});});};exports['PauseUser']=function(_0x36ca0c){var _0x22dfae=this;return new Promise(function(_0x35a57b,_0x40bba9){var _0x1834b4;return db[_0x3d13('0x19')][_0x3d13('0x25')]({'where':_0x36ca0c[_0x3d13('0x1b')][_0x3d13('0x1c')]||{},'attributes':['id',_0x3d13('0x27'),_0x3d13('0x28'),'internal',_0x3d13('0x29')]})[_0x3d13('0x22')](function(_0x4b2585){if(_0x4b2585){_0x1834b4=_0x4b2585;return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x1},{'where':{'UserId':_0x1834b4['id']},'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x1834b4){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x1834b4[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}});}})[_0x3d13('0x22')](function(_0x3f9867){if(_0x1834b4){if(_0x3f9867&&_0x3f9867[_0x3d13('0x2e')]){var _0x355982=moment()[_0x3d13('0x2f')](_0x3d13('0x30'));for(var _0x364eb7=0x0,_0x21a04c=_0x3f9867[_0x3d13('0x2e')];_0x364eb7<_0x21a04c;_0x364eb7++){_0x3f9867[_0x364eb7][_0x3d13('0x31')]({'exitAt':_0x355982});}}}})['then'](function(){if(_0x1834b4){var _0x1d42d8=[];var _0x51b4db=utils[_0x3d13('0x32')]();_0x51b4db[_0x3d13('0x33')](function(_0x5e0135){_0x1d42d8[_0x3d13('0x34')]({'channel':_0x5e0135,'membername':_0x1834b4['name'],'interface':_[_0x3d13('0x35')](_0x1834b4[_0x3d13('0x29')])?util[_0x3d13('0x2f')](_0x3d13('0x36'),_0x1834b4[_0x3d13('0x27')]):_0x1834b4[_0x3d13('0x29')],'type':_0x3d13('0x2d'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x36ca0c['body']['type']||'DEFAULT\x20PAUSE','role':_0x1834b4[_0x3d13('0x28')],'internal':_0x1834b4[_0x3d13('0x37')],'uniqueid':_0x36ca0c[_0x3d13('0x38')][_0x3d13('0x39')]||null});});return db[_0x3d13('0x2c')]['bulkCreate'](_0x1d42d8,{'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x1834b4){return _0x1834b4[_0x3d13('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x36ca0c[_0x3d13('0x38')][_0x3d13('0x3a')]||_0x3d13('0x3b'),'lastPauseAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))});}})[_0x3d13('0x22')](function(_0x58977a){_0x35a57b(_0x58977a);})[_0x3d13('0x18')](function(_0x487ccd){_0x40bba9(_0x22dfae[_0x3d13('0x15')](0x1f4,_0x487ccd['message']));});});};exports[_0x3d13('0x3c')]=function(_0x125c7f){var _0x386187=this;return new Promise(function(_0x4317df,_0x125a9e){var _0x4da815;return db[_0x3d13('0x19')]['findOne']({'where':_0x125c7f['options'][_0x3d13('0x1c')]||{},'attributes':['id',_0x3d13('0x27')]})[_0x3d13('0x22')](function(_0x293afc){if(_0x293afc){_0x4da815=_0x293afc;if(_0x125c7f['body'][_0x3d13('0x3d')]&&!utils[_0x3d13('0x3e')](_0x125c7f[_0x3d13('0x38')][_0x3d13('0x3d')])){throw new Error(_0x3d13('0x3f'));}switch(_0x125c7f['body']['channel']){case'voice':return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x0},{'where':{'UserId':_0x4da815['id']}})[_0x3d13('0x22')](function(){return db['MemberReport'][_0x3d13('0x25')]({'where':{'channel':_0x125c7f['body'][_0x3d13('0x3d')],'membername':_0x4da815[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}});})['then'](function(_0x17e05c){if(_0x17e05c){return _0x17e05c['update']({'exitAt':moment()['format'](_0x3d13('0x30')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x3d13('0x22')](function(){return _0x4da815[_0x3d13('0x2b')]({'voicePause':![]});});case'mail':case'chat':case _0x3d13('0x40'):case'sms':case _0x3d13('0x41'):case _0x3d13('0x42'):return db[_0x3d13('0x2c')][_0x3d13('0x25')]({'where':{'channel':_0x125c7f[_0x3d13('0x38')][_0x3d13('0x3d')],'membername':_0x4da815[_0x3d13('0x27')],'type':_0x3d13('0x2d'),'exitAt':null}})[_0x3d13('0x22')](function(_0x5f0531){return _0x5f0531[_0x3d13('0x2b')]({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'data2':_0x3d13('0x43')},{'individualHooks':!![]});})[_0x3d13('0x22')](function(){var _0x4960fe={};_[_0x3d13('0x44')](_0x4960fe,util[_0x3d13('0x2f')]('%s%s',_0x125c7f['body'][_0x3d13('0x3d')],_0x3d13('0x45')),![]);return _0x4da815[_0x3d13('0x2b')](_0x4960fe);});default:return db[_0x3d13('0x2a')][_0x3d13('0x2b')]({'paused':0x0},{'where':{'UserId':_0x4da815['id']}})[_0x3d13('0x22')](function(){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x4da815['name'],'type':_0x3d13('0x2d'),'exitAt':null}});})[_0x3d13('0x22')](function(_0x380743){var _0x553a18=[];_0x380743[_0x3d13('0x33')](function(_0x5d9056){_0x553a18[_0x3d13('0x34')](_0x5d9056['update']({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'data2':_0x3d13('0x43')}));});return BPromise['all'](_0x553a18);})[_0x3d13('0x22')](function(){return _0x4da815[_0x3d13('0x2b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0xf963fb){_0x4317df(_0xf963fb);})[_0x3d13('0x18')](function(_0x58663e){_0x125a9e(_0x386187[_0x3d13('0x15')](0x1f4,_0x58663e['message']));});});};exports[_0x3d13('0x46')]=function(_0x3c2bae){var _0x59876e=this;return new Promise(function(_0x27e908,_0x1cc40e){var _0x14db8c;return db[_0x3d13('0x19')][_0x3d13('0x47')]({'where':_0x3c2bae[_0x3d13('0x1b')]['where']||{},'attributes':['id',_0x3d13('0x27')]})[_0x3d13('0x22')](function(_0x1d8485){if(_0x1d8485){_0x14db8c=_0x1d8485;return db['UserVoiceQueueRt'][_0x3d13('0x48')]({'where':{'membername':_0x14db8c[_0x3d13('0x27')]},'individualHooks':!![]});}})[_0x3d13('0x22')](function(){if(_0x14db8c){return db['MemberReport']['findAll']({'where':{'membername':_0x14db8c['name'],'exitAt':null}});}})[_0x3d13('0x22')](function(_0x2ca8d1){if(_0x14db8c){if(_0x2ca8d1&&_0x2ca8d1['length']){var _0x1908f8=[];_0x2ca8d1[_0x3d13('0x33')](function(_0x4cb5bd){_0x1908f8[_0x3d13('0x34')](_0x4cb5bd[_0x3d13('0x2b')]({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))}));});return BPromise[_0x3d13('0x49')](_0x1908f8);}}})[_0x3d13('0x22')](function(){if(_0x14db8c){return _0x14db8c['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3d13('0x22')](function(_0x25127b){_0x27e908(_0x25127b);})[_0x3d13('0x18')](function(_0x537f6e){_0x1cc40e(_0x59876e[_0x3d13('0x15')](0x1f4,_0x537f6e['message']));});});};exports[_0x3d13('0x4a')]=function(_0x1fd011){var _0x508d2b=this;return new Promise(function(_0x1597fc,_0x27a48d){var _0x227a8c;var _0x33f978;var _0x3d6d57;var _0x20af59;return db[_0x3d13('0x19')]['findOne']({'where':_0x1fd011[_0x3d13('0x1b')]['where']||{},'attributes':['id','name',_0x3d13('0x28'),'mobile',_0x3d13('0x4b'),_0x3d13('0x37'),_0x3d13('0x4c'),_0x3d13('0x29')]})['then'](function(_0x5843a8){if(_0x5843a8){_0x227a8c=_0x5843a8;_0x20af59=_0x1fd011[_0x3d13('0x38')][_0x3d13('0x29')]?_0x1fd011[_0x3d13('0x38')]['interface']:util[_0x3d13('0x2f')](_0x3d13('0x36'),_0x227a8c['name']);return db[_0x3d13('0x19')][_0x3d13('0x4d')]({'where':{'role':_0x3d13('0x4e'),'online':!![],'id':{'$ne':_0x227a8c['id']}}});}})['then'](function(_0x1e2e50){if(_0x1e2e50){_0x3d6d57=_0x1e2e50;return require(_0x3d13('0x4f'))['getLicense']();}})['then'](function(_0x552274){if(_0x552274&&_0x552274[_0x3d13('0x50')]&&_0x3d6d57>=_0x552274[_0x3d13('0x50')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x227a8c){return db['UserVoiceQueueRt'][_0x3d13('0x48')]({'where':{'membername':_0x227a8c[_0x3d13('0x27')]},'individualHooks':!![]});}})['then'](function(){if(_0x227a8c){return _0x227a8c[_0x3d13('0x51')]({'raw':!![]});}})[_0x3d13('0x22')](function(_0xf837b5){if(_0x227a8c){if(_0xf837b5){var _0x2a4d27=[];_0x33f978=_0xf837b5;if(_0x33f978[_0x3d13('0x2e')]){for(var _0x53b522=0x0;_0x53b522<_0x33f978[_0x3d13('0x2e')];_0x53b522++){_0x2a4d27['push'](db[_0x3d13('0x2a')][_0x3d13('0x52')]({'membername':_0x227a8c[_0x3d13('0x27')],'UserId':_0x227a8c['id'],'queue_name':_0x33f978[_0x53b522][_0x3d13('0x27')],'VoiceQueueId':_0x33f978[_0x53b522]['id'],'interface':_0x20af59,'paused':_0x227a8c[_0x3d13('0x4c')]||![],'penalty':_0x33f978[_0x53b522]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x3d13('0x49')](_0x2a4d27);}}}})[_0x3d13('0x22')](function(){if(_0x227a8c){return db[_0x3d13('0x2c')][_0x3d13('0x1a')]({'where':{'membername':_0x227a8c['name'],'exitAt':null}});}})[_0x3d13('0x22')](function(_0x136ad1){if(_0x227a8c){if(_0x136ad1&&_0x136ad1['length']){var _0x9b350=[];_0x136ad1[_0x3d13('0x33')](function(_0x539dae){_0x9b350[_0x3d13('0x34')](_0x539dae['update']({'exitAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30'))}));});return BPromise[_0x3d13('0x49')](_0x9b350);}}})['then'](function(_0x82b978){if(_0x227a8c){var _0x1eab66=[];var _0x54d0ab=[];var _0x5964e0=utils[_0x3d13('0x32')]();var _0x468d21={'membername':_0x227a8c[_0x3d13('0x27')],'interface':_0x20af59,'enterAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'role':_0x227a8c[_0x3d13('0x28')],'internal':_0x227a8c[_0x3d13('0x37')]};_0x5964e0[_0x3d13('0x33')](function(_0x173d15){_0x1eab66[_0x3d13('0x34')](_[_0x3d13('0x53')]({'channel':_0x173d15,'type':'LOGIN','data1':_0x3d13('0x54'),'data2':_0x20af59},_0x468d21));if(_0x227a8c[_0x3d13('0x4c')]){_0x54d0ab[_0x3d13('0x34')](_[_0x3d13('0x53')]({'channel':_0x173d15,'type':_0x3d13('0x2d'),'data1':_0x3d13('0x55')},_0x468d21));}});return db['MemberReport']['bulkCreate'](_0x1eab66[_0x3d13('0x56')](_0x54d0ab),{'individualHooks':!![]});}})['then'](function(){if(_0x227a8c){return _0x227a8c[_0x3d13('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'voicePause':_0x227a8c['loginInPause']||![],'mailPause':_0x227a8c[_0x3d13('0x4c')]||![],'chatPause':_0x227a8c[_0x3d13('0x4c')]||![],'faxPause':_0x227a8c['loginInPause']||![],'smsPause':_0x227a8c['loginInPause']||![],'openchannelPause':_0x227a8c[_0x3d13('0x4c')]||![],'pauseType':_0x227a8c[_0x3d13('0x4c')]?_0x3d13('0x55'):null,'lastPauseAt':moment()[_0x3d13('0x2f')](_0x3d13('0x30')),'interface':_0x20af59});}})[_0x3d13('0x22')](function(_0x268a93){_0x1597fc(_0x268a93);})[_0x3d13('0x18')](function(_0x11f7f6){_0x27a48d(_0x508d2b[_0x3d13('0x15')](0x1f4,_0x11f7f6[_0x3d13('0x17')]));});});};
\ No newline at end of file
+var _0x96bf=['Unknown\x20channel','voice','system','fax','sms','openchannel','whatsapp','set','Pause','all','LogoutUser','LoginUser','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','upsert','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','bulkCreate','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./user.socket','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','catch','ShowUser','find','role','internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','type','DEFAULT\x20PAUSE','body','uniqueid','findOne','channel','isValidChannel'];(function(_0x2c67a0,_0x3e3405){var _0x1460f9=function(_0x5e8d08){while(--_0x5e8d08){_0x2c67a0['push'](_0x2c67a0['shift']());}};_0x1460f9(++_0x3e3405);}(_0x96bf,0xd5));var _0xf96b=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x96bf[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0xf96b('0x0'));var util=require('util');var moment=require(_0xf96b('0x1'));var BPromise=require(_0xf96b('0x2'));var rs=require(_0xf96b('0x3'));var fs=require('fs');var Redis=require(_0xf96b('0x4'));var db=require(_0xf96b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf96b('0x6'))(_0xf96b('0x7'));var config=require('../../config/environment');var jayson=require(_0xf96b('0x8'));var client=jayson[_0xf96b('0x9')][_0xf96b('0xa')]({'port':0x232a});config['redis']=_[_0xf96b('0xb')](config['redis'],{'host':_0xf96b('0xc'),'port':0x18eb});var socket=require(_0xf96b('0xd'))(new Redis(config[_0xf96b('0xe')]));require(_0xf96b('0xf'))['register'](socket);function respondWithRpcPromise(_0x1ff367,_0x3a6595,_0x5967f5){return new BPromise(function(_0x4f66fb,_0x4fb256){return client[_0xf96b('0x10')](_0x1ff367,_0x5967f5)[_0xf96b('0x11')](function(_0x1ed5b5){logger[_0xf96b('0x12')](_0xf96b('0x13'),_0x3a6595,_0xf96b('0x14'));logger[_0xf96b('0x15')](_0xf96b('0x16'),_0x3a6595,_0xf96b('0x14'),JSON[_0xf96b('0x17')](_0x1ed5b5));if(_0x1ed5b5[_0xf96b('0x18')]){if(_0x1ed5b5[_0xf96b('0x18')][_0xf96b('0x19')]===0x1f4){logger[_0xf96b('0x18')](_0xf96b('0x13'),_0x3a6595,_0x1ed5b5[_0xf96b('0x18')][_0xf96b('0x1a')]);return _0x4fb256(_0x1ed5b5['error'][_0xf96b('0x1a')]);}logger['error']('User,\x20%s,\x20%s',_0x3a6595,_0x1ed5b5[_0xf96b('0x18')]['message']);return _0x4f66fb(_0x1ed5b5['error']['message']);}else{logger[_0xf96b('0x12')](_0xf96b('0x13'),_0x3a6595,_0xf96b('0x14'));_0x4f66fb(_0x1ed5b5[_0xf96b('0x1b')][_0xf96b('0x1a')]);}})['catch'](function(_0xa87d8a){logger[_0xf96b('0x18')](_0xf96b('0x13'),_0x3a6595,_0xa87d8a);_0x4fb256(_0xa87d8a);});});}exports[_0xf96b('0x1c')]=function(_0x557636){var _0x1397b3=this;return new Promise(function(_0x5d9dbe,_0x133789){return db[_0xf96b('0x1d')][_0xf96b('0x1e')]({'raw':_0x557636['options']?_0x557636[_0xf96b('0x1f')][_0xf96b('0x20')]===undefined?!![]:![]:!![],'where':_0x557636[_0xf96b('0x1f')]?_0x557636['options'][_0xf96b('0x21')]||null:null,'attributes':_0x557636[_0xf96b('0x1f')]?_0x557636['options'][_0xf96b('0x22')]||null:null,'limit':_0x557636['options']?_0x557636[_0xf96b('0x1f')][_0xf96b('0x23')]||null:null,'include':_0x557636[_0xf96b('0x1f')]?_0x557636[_0xf96b('0x1f')][_0xf96b('0x24')]?_[_0xf96b('0x25')](_0x557636[_0xf96b('0x1f')][_0xf96b('0x24')],function(_0x316614){return{'model':db[_0x316614[_0xf96b('0x26')]],'as':_0x316614['as'],'attributes':_0x316614[_0xf96b('0x22')],'include':_0x316614[_0xf96b('0x24')]?_[_0xf96b('0x25')](_0x316614['include'],function(_0x45515d){return{'model':db[_0x45515d['model']],'as':_0x45515d['as'],'attributes':_0x45515d[_0xf96b('0x22')],'include':_0x45515d[_0xf96b('0x24')]?_[_0xf96b('0x25')](_0x45515d[_0xf96b('0x24')],function(_0x36eb0d){return{'model':db[_0x36eb0d['model']],'as':_0x36eb0d['as'],'attributes':_0x36eb0d[_0xf96b('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf96b('0x11')](function(_0x1d9a18){logger[_0xf96b('0x12')](_0xf96b('0x1c'),_0x557636);logger[_0xf96b('0x15')](_0xf96b('0x1c'),_0x557636,JSON[_0xf96b('0x17')](_0x1d9a18));_0x5d9dbe(_0x1d9a18);})[_0xf96b('0x27')](function(_0x589613){logger['error'](_0xf96b('0x1c'),_0x589613[_0xf96b('0x1a')],_0x557636);_0x133789(_0x1397b3['error'](0x1f4,_0x589613[_0xf96b('0x1a')]));});});};exports[_0xf96b('0x28')]=function(_0x2fb789){var _0x5e97f2=this;return new Promise(function(_0x21c4af,_0x59a1cc){return db['User'][_0xf96b('0x29')]({'raw':_0x2fb789[_0xf96b('0x1f')]?_0x2fb789[_0xf96b('0x1f')][_0xf96b('0x20')]===undefined?!![]:![]:!![],'where':_0x2fb789[_0xf96b('0x1f')]?_0x2fb789['options']['where']||null:null,'attributes':_0x2fb789['options']?_0x2fb789['options'][_0xf96b('0x22')]||null:null,'include':_0x2fb789[_0xf96b('0x1f')]?_0x2fb789[_0xf96b('0x1f')][_0xf96b('0x24')]?_[_0xf96b('0x25')](_0x2fb789[_0xf96b('0x1f')][_0xf96b('0x24')],function(_0x3ff9a2){return{'model':db[_0x3ff9a2['model']],'as':_0x3ff9a2['as'],'attributes':_0x3ff9a2[_0xf96b('0x22')],'include':_0x3ff9a2['include']?_[_0xf96b('0x25')](_0x3ff9a2[_0xf96b('0x24')],function(_0x12255d){return{'model':db[_0x12255d[_0xf96b('0x26')]],'as':_0x12255d['as'],'attributes':_0x12255d['attributes'],'include':_0x12255d[_0xf96b('0x24')]?_[_0xf96b('0x25')](_0x12255d[_0xf96b('0x24')],function(_0x44807f){return{'model':db[_0x44807f[_0xf96b('0x26')]],'as':_0x44807f['as'],'attributes':_0x44807f[_0xf96b('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf96b('0x11')](function(_0x3dd17e){logger[_0xf96b('0x12')](_0xf96b('0x28'),_0x2fb789);logger[_0xf96b('0x15')](_0xf96b('0x28'),_0x2fb789,JSON[_0xf96b('0x17')](_0x3dd17e));_0x21c4af(_0x3dd17e);})[_0xf96b('0x27')](function(_0x5e2a02){logger[_0xf96b('0x18')](_0xf96b('0x28'),_0x5e2a02[_0xf96b('0x1a')],_0x2fb789);_0x59a1cc(_0x5e97f2[_0xf96b('0x18')](0x1f4,_0x5e2a02[_0xf96b('0x1a')]));});});};exports['PauseUser']=function(_0x1318e1){var _0x2c12e6=this;return new Promise(function(_0x12c627,_0x48531c){var _0x1b10b8;return db[_0xf96b('0x1d')][_0xf96b('0x29')]({'where':_0x1318e1[_0xf96b('0x1f')]['where']||{},'attributes':['id','name',_0xf96b('0x2a'),_0xf96b('0x2b'),_0xf96b('0x2c')]})[_0xf96b('0x11')](function(_0x4c839b){if(_0x4c839b){_0x1b10b8=_0x4c839b;return db[_0xf96b('0x2d')][_0xf96b('0x2e')]({'paused':0x1},{'where':{'UserId':_0x1b10b8['id']},'individualHooks':!![]});}})[_0xf96b('0x11')](function(){if(_0x1b10b8){return db[_0xf96b('0x2f')][_0xf96b('0x1e')]({'where':{'membername':_0x1b10b8[_0xf96b('0x30')],'type':_0xf96b('0x31'),'exitAt':null}});}})[_0xf96b('0x11')](function(_0x11b348){if(_0x1b10b8){if(_0x11b348&&_0x11b348['length']){var _0x1544a9=moment()[_0xf96b('0x32')](_0xf96b('0x33'));for(var _0x3ce000=0x0,_0x28b39a=_0x11b348[_0xf96b('0x34')];_0x3ce000<_0x28b39a;_0x3ce000++){_0x11b348[_0x3ce000][_0xf96b('0x35')]({'exitAt':_0x1544a9});}}}})[_0xf96b('0x11')](function(){if(_0x1b10b8){var _0x210ccc=[];var _0x31d197=utils[_0xf96b('0x36')]();_0x31d197[_0xf96b('0x37')](function(_0x16f2b4){_0x210ccc[_0xf96b('0x38')]({'channel':_0x16f2b4,'membername':_0x1b10b8[_0xf96b('0x30')],'interface':_[_0xf96b('0x39')](_0x1b10b8[_0xf96b('0x2c')])?util['format'](_0xf96b('0x3a'),_0x1b10b8['name']):_0x1b10b8['interface'],'type':_0xf96b('0x31'),'enterAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'data1':_0x1318e1['body'][_0xf96b('0x3b')]||_0xf96b('0x3c'),'role':_0x1b10b8['role'],'internal':_0x1b10b8[_0xf96b('0x2b')],'uniqueid':_0x1318e1[_0xf96b('0x3d')][_0xf96b('0x3e')]||null});});return db[_0xf96b('0x2f')]['bulkCreate'](_0x210ccc,{'individualHooks':!![]});}})['then'](function(){if(_0x1b10b8){return _0x1b10b8['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1318e1[_0xf96b('0x3d')][_0xf96b('0x3b')]||_0xf96b('0x3c'),'lastPauseAt':moment()['format'](_0xf96b('0x33'))});}})['then'](function(_0x25f7e1){_0x12c627(_0x25f7e1);})[_0xf96b('0x27')](function(_0x1973b2){_0x48531c(_0x2c12e6['error'](0x1f4,_0x1973b2[_0xf96b('0x1a')]));});});};exports['UnpauseUser']=function(_0x244801){var _0x2fe1f5=this;return new Promise(function(_0x17ba6d,_0x46ee0f){var _0x362016;return db[_0xf96b('0x1d')][_0xf96b('0x3f')]({'where':_0x244801[_0xf96b('0x1f')][_0xf96b('0x21')]||{},'attributes':['id',_0xf96b('0x30')]})[_0xf96b('0x11')](function(_0x5a4e89){if(_0x5a4e89){_0x362016=_0x5a4e89;if(_0x244801[_0xf96b('0x3d')][_0xf96b('0x40')]&&!utils[_0xf96b('0x41')](_0x244801[_0xf96b('0x3d')][_0xf96b('0x40')])){throw new Error(_0xf96b('0x42'));}switch(_0x244801[_0xf96b('0x3d')]['channel']){case _0xf96b('0x43'):return db[_0xf96b('0x2d')][_0xf96b('0x2e')]({'paused':0x0},{'where':{'UserId':_0x362016['id']}})[_0xf96b('0x11')](function(){return db[_0xf96b('0x2f')][_0xf96b('0x29')]({'where':{'channel':_0x244801[_0xf96b('0x3d')][_0xf96b('0x40')],'membername':_0x362016[_0xf96b('0x30')],'type':_0xf96b('0x31'),'exitAt':null}});})['then'](function(_0x2d4480){if(_0x2d4480){return _0x2d4480[_0xf96b('0x2e')]({'exitAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'data2':_0xf96b('0x44')},{'individualHooks':!![]});}return null;})[_0xf96b('0x11')](function(){return _0x362016['update']({'voicePause':![]});});case'mail':case'chat':case _0xf96b('0x45'):case _0xf96b('0x46'):case _0xf96b('0x47'):case _0xf96b('0x48'):return db['MemberReport'][_0xf96b('0x29')]({'where':{'channel':_0x244801[_0xf96b('0x3d')]['channel'],'membername':_0x362016[_0xf96b('0x30')],'type':_0xf96b('0x31'),'exitAt':null}})[_0xf96b('0x11')](function(_0x2a8f32){return _0x2a8f32[_0xf96b('0x2e')]({'exitAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'data2':_0xf96b('0x44')},{'individualHooks':!![]});})[_0xf96b('0x11')](function(){var _0x256c92={};_[_0xf96b('0x49')](_0x256c92,util[_0xf96b('0x32')]('%s%s',_0x244801[_0xf96b('0x3d')]['channel'],_0xf96b('0x4a')),![]);return _0x362016['update'](_0x256c92);});default:return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x362016['id']}})[_0xf96b('0x11')](function(){return db[_0xf96b('0x2f')][_0xf96b('0x1e')]({'where':{'membername':_0x362016[_0xf96b('0x30')],'type':_0xf96b('0x31'),'exitAt':null}});})[_0xf96b('0x11')](function(_0x59daef){var _0x5a1daa=[];_0x59daef['forEach'](function(_0x1b600f){_0x5a1daa['push'](_0x1b600f[_0xf96b('0x2e')]({'exitAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'data2':_0xf96b('0x44')}));});return BPromise[_0xf96b('0x4b')](_0x5a1daa);})[_0xf96b('0x11')](function(){return _0x362016['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xf96b('0x11')](function(_0x1e0951){_0x17ba6d(_0x1e0951);})[_0xf96b('0x27')](function(_0x2e6815){_0x46ee0f(_0x2fe1f5['error'](0x1f4,_0x2e6815['message']));});});};exports[_0xf96b('0x4c')]=function(_0x13abf2){var _0x34db65=this;return new Promise(function(_0x112da4,_0x4e5d4d){var _0x45c7b8;return db[_0xf96b('0x1d')]['findOne']({'where':_0x13abf2[_0xf96b('0x1f')][_0xf96b('0x21')]||{},'attributes':['id','name']})[_0xf96b('0x11')](function(_0x13fa9d){if(_0x13fa9d){_0x45c7b8=_0x13fa9d;return db[_0xf96b('0x2d')]['destroy']({'where':{'membername':_0x45c7b8[_0xf96b('0x30')]},'individualHooks':!![]});}})['then'](function(){if(_0x45c7b8){return db[_0xf96b('0x2f')][_0xf96b('0x1e')]({'where':{'membername':_0x45c7b8[_0xf96b('0x30')],'exitAt':null}});}})[_0xf96b('0x11')](function(_0x69714b){if(_0x45c7b8){if(_0x69714b&&_0x69714b[_0xf96b('0x34')]){var _0x424cf0=[];_0x69714b[_0xf96b('0x37')](function(_0x479765){_0x424cf0[_0xf96b('0x38')](_0x479765['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xf96b('0x4b')](_0x424cf0);}}})['then'](function(){if(_0x45c7b8){return _0x45c7b8[_0xf96b('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf96b('0x11')](function(_0xad4de4){_0x112da4(_0xad4de4);})['catch'](function(_0x4e3b14){_0x4e5d4d(_0x34db65[_0xf96b('0x18')](0x1f4,_0x4e3b14[_0xf96b('0x1a')]));});});};exports[_0xf96b('0x4d')]=function(_0xac315d){var _0x48cae8=this;return new Promise(function(_0x210fde,_0x4fdad3){var _0x2511ba;var _0xdf6027;var _0x3a3b53;var _0x52ab9f;return db[_0xf96b('0x1d')][_0xf96b('0x3f')]({'where':_0xac315d['options']['where']||{},'attributes':['id',_0xf96b('0x30'),_0xf96b('0x2a'),'mobile',_0xf96b('0x4e'),_0xf96b('0x2b'),_0xf96b('0x4f'),_0xf96b('0x2c')]})[_0xf96b('0x11')](function(_0x115000){if(_0x115000){_0x2511ba=_0x115000;_0x52ab9f=_0xac315d['body']['interface']?_0xac315d[_0xf96b('0x3d')][_0xf96b('0x2c')]:util[_0xf96b('0x32')]('SIP/%s',_0x2511ba['name']);return db[_0xf96b('0x1d')][_0xf96b('0x50')]({'where':{'role':_0xf96b('0x51'),'online':!![],'id':{'$ne':_0x2511ba['id']}}});}})[_0xf96b('0x11')](function(_0x2cb78b){if(_0x2cb78b){_0x3a3b53=_0x2cb78b;return require(_0xf96b('0x52'))[_0xf96b('0x53')]();}})[_0xf96b('0x11')](function(_0x1abd24){if(_0x1abd24&&_0x1abd24[_0xf96b('0x54')]&&_0x3a3b53>=_0x1abd24['agents']){throw new Error(_0xf96b('0x55'));}})['then'](function(){if(_0x2511ba){return db[_0xf96b('0x2d')][_0xf96b('0x56')]({'where':{'membername':_0x2511ba[_0xf96b('0x30')]},'individualHooks':!![]});}})[_0xf96b('0x11')](function(){if(_0x2511ba){return _0x2511ba['getVoiceQueues']({'raw':!![]});}})[_0xf96b('0x11')](function(_0x18e999){if(_0x2511ba){if(_0x18e999){var _0x5c15cc=[];_0xdf6027=_0x18e999;if(_0xdf6027[_0xf96b('0x34')]){for(var _0x2ac9c3=0x0;_0x2ac9c3<_0xdf6027[_0xf96b('0x34')];_0x2ac9c3++){_0x5c15cc[_0xf96b('0x38')](db[_0xf96b('0x2d')][_0xf96b('0x57')]({'membername':_0x2511ba[_0xf96b('0x30')],'UserId':_0x2511ba['id'],'queue_name':_0xdf6027[_0x2ac9c3][_0xf96b('0x30')],'VoiceQueueId':_0xdf6027[_0x2ac9c3]['id'],'interface':_0x52ab9f,'paused':_0x2511ba[_0xf96b('0x4f')]||![],'penalty':_0xdf6027[_0x2ac9c3][_0xf96b('0x58')]||0x0}));}return BPromise[_0xf96b('0x4b')](_0x5c15cc);}}}})[_0xf96b('0x11')](function(){if(_0x2511ba){return db[_0xf96b('0x2f')]['findAll']({'where':{'membername':_0x2511ba['name'],'exitAt':null}});}})['then'](function(_0x6b5247){if(_0x2511ba){if(_0x6b5247&&_0x6b5247['length']){var _0x501a3a=[];_0x6b5247['forEach'](function(_0x28f5bc){_0x501a3a[_0xf96b('0x38')](_0x28f5bc[_0xf96b('0x2e')]({'exitAt':moment()['format'](_0xf96b('0x33'))}));});return BPromise['all'](_0x501a3a);}}})['then'](function(_0x3cc30b){if(_0x2511ba){var _0x418ffb=[];var _0x311f45=[];var _0x558868=utils[_0xf96b('0x36')]();var _0x32cc6f={'membername':_0x2511ba[_0xf96b('0x30')],'interface':_0x52ab9f,'enterAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'role':_0x2511ba[_0xf96b('0x2a')],'internal':_0x2511ba[_0xf96b('0x2b')]};_0x558868[_0xf96b('0x37')](function(_0x385656){_0x418ffb['push'](_[_0xf96b('0x59')]({'channel':_0x385656,'type':'LOGIN','data1':_0xf96b('0x5a'),'data2':_0x52ab9f},_0x32cc6f));if(_0x2511ba[_0xf96b('0x4f')]){_0x311f45['push'](_['merge']({'channel':_0x385656,'type':_0xf96b('0x31'),'data1':_0xf96b('0x5b')},_0x32cc6f));}});return db['MemberReport'][_0xf96b('0x5c')](_0x418ffb['concat'](_0x311f45),{'individualHooks':!![]});}})['then'](function(){if(_0x2511ba){return _0x2511ba[_0xf96b('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'voicePause':_0x2511ba['loginInPause']||![],'mailPause':_0x2511ba[_0xf96b('0x4f')]||![],'chatPause':_0x2511ba[_0xf96b('0x4f')]||![],'faxPause':_0x2511ba['loginInPause']||![],'smsPause':_0x2511ba['loginInPause']||![],'openchannelPause':_0x2511ba['loginInPause']||![],'pauseType':_0x2511ba[_0xf96b('0x4f')]?_0xf96b('0x5b'):null,'lastPauseAt':moment()[_0xf96b('0x32')](_0xf96b('0x33')),'interface':_0x52ab9f});}})[_0xf96b('0x11')](function(_0x18732f){_0x210fde(_0x18732f);})['catch'](function(_0x5f0985){_0x4fdad3(_0x48cae8[_0xf96b('0x18')](0x1f4,_0x5f0985[_0xf96b('0x1a')]));});});};
\ No newline at end of file
index 80eb485..276dcd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5e=['register','user:','./user.events','save','emit'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4e5e,0x1ba));var _0xe4e5=function(_0x255766,_0xf8e7a0){_0x255766=_0x255766-0x0;var _0x42597c=_0x4e5e[_0x255766];return _0x42597c;};'use strict';var UserEvents=require(_0xe4e5('0x0'));var events=[_0xe4e5('0x1'),'remove','update'];function createListener(_0x2d1d26,_0xf1bcc8){return function(_0xe83824){_0xf1bcc8[_0xe4e5('0x2')](_0x2d1d26,_0xe83824);};}function removeListener(_0x5b6764,_0xedfc11){return function(){UserEvents['removeListener'](_0x5b6764,_0xedfc11);};}exports[_0xe4e5('0x3')]=function(_0x205eea){for(var _0x4a3f7a=0x0,_0x4fc227=events['length'];_0x4a3f7a<_0x4fc227;_0x4a3f7a++){var _0xebb5d9=events[_0x4a3f7a];var _0x5ddb55=createListener(_0xe4e5('0x4')+_0xebb5d9,_0x205eea);UserEvents['on'](_0xebb5d9,_0x5ddb55);}};
\ No newline at end of file
+var _0x6506=['length','user:','./user.events','update','emit','register'];(function(_0x5c2c72,_0x22cf09){var _0x11c44c=function(_0x37bcca){while(--_0x37bcca){_0x5c2c72['push'](_0x5c2c72['shift']());}};_0x11c44c(++_0x22cf09);}(_0x6506,0x14c));var _0x6650=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x6506[_0x20ef64];return _0x3707d8;};'use strict';var UserEvents=require(_0x6650('0x0'));var events=['save','remove',_0x6650('0x1')];function createListener(_0xa92781,_0x5161e8){return function(_0x591d2f){_0x5161e8[_0x6650('0x2')](_0xa92781,_0x591d2f);};}function removeListener(_0x5368ee,_0xf3f5df){return function(){UserEvents['removeListener'](_0x5368ee,_0xf3f5df);};}exports[_0x6650('0x3')]=function(_0x5768b5){for(var _0x2ea9ad=0x0,_0x2b2488=events[_0x6650('0x4')];_0x2ea9ad<_0x2b2488;_0x2ea9ad++){var _0x1ab23e=events[_0x2ea9ad];var _0x996e4d=createListener(_0x6650('0x5')+_0x1ab23e,_0x5768b5);UserEvents['on'](_0x1ab23e,_0x996e4d);}};
\ No newline at end of file
index 97c80f3..62eba0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x20d54d,_0x1adc8e){var _0x516e8b=function(_0x2754e1){while(--_0x2754e1){_0x20d54d['push'](_0x20d54d['shift']());}};_0x516e8b(++_0x1adc8e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4b41c1,_0x167db3){var _0x1f6ab1=function(_0x3280d1){while(--_0x3280d1){_0x4b41c1['push'](_0x4b41c1['shift']());}};_0x1f6ab1(++_0x167db3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 10d5cbd..181d9bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2f5=['exports','INTEGER','sequelize'];(function(_0x23c73d,_0x357b21){var _0x36ba47=function(_0x317b8e){while(--_0x317b8e){_0x23c73d['push'](_0x23c73d['shift']());}};_0x36ba47(++_0x357b21);}(_0xa2f5,0xf2));var _0x5a2f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa2f5[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x5a2f('0x0'));module[_0x5a2f('0x1')]={'penalty':{'type':Sequelize[_0x5a2f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd618=['exports','sequelize'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0xd618,0x9b));var _0x8d61=function(_0x3de7e5,_0x52212e){_0x3de7e5=_0x3de7e5-0x0;var _0x1d3683=_0xd618[_0x3de7e5];return _0x1d3683;};'use strict';var Sequelize=require(_0x8d61('0x0'));module[_0x8d61('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b251d89..17882d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3db=['../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','api','moment','request-promise','path'];(function(_0x28063c,_0x4c56d4){var _0x384443=function(_0x5d88aa){while(--_0x5d88aa){_0x28063c['push'](_0x28063c['shift']());}};_0x384443(++_0x4c56d4);}(_0xa3db,0x66));var _0xba3d=function(_0x4038fb,_0x5d4a66){_0x4038fb=_0x4038fb-0x0;var _0x206adb=_0xa3db[_0x4038fb];return _0x206adb;};'use strict';var _=require(_0xba3d('0x0'));var util=require(_0xba3d('0x1'));var logger=require('../../config/logger')(_0xba3d('0x2'));var moment=require(_0xba3d('0x3'));var BPromise=require('bluebird');var rp=require(_0xba3d('0x4'));var fs=require('fs');var path=require(_0xba3d('0x5'));var rimraf=require('rimraf');var config=require(_0xba3d('0x6'));var attributes=require(_0xba3d('0x7'));module[_0xba3d('0x8')]=function(_0xf7d5d,_0xe1aed5){return _0xf7d5d[_0xba3d('0x9')](_0xba3d('0xa'),attributes,{'tableName':_0xba3d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x866d=['../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2b2b33,_0x56606f){var _0x229157=function(_0x52b63e){while(--_0x52b63e){_0x2b2b33['push'](_0x2b2b33['shift']());}};_0x229157(++_0x56606f);}(_0x866d,0xd5));var _0xd866=function(_0xab2a11,_0x1b34fb){_0xab2a11=_0xab2a11-0x0;var _0x5421cc=_0x866d[_0xab2a11];return _0x5421cc;};'use strict';var _=require(_0xd866('0x0'));var util=require(_0xd866('0x1'));var logger=require(_0xd866('0x2'))(_0xd866('0x3'));var moment=require(_0xd866('0x4'));var BPromise=require('bluebird');var rp=require(_0xd866('0x5'));var fs=require('fs');var path=require(_0xd866('0x6'));var rimraf=require(_0xd866('0x7'));var config=require(_0xd866('0x8'));var attributes=require(_0xd866('0x9'));module[_0xd866('0xa')]=function(_0x5a8a33,_0x492e07){return _0x5a8a33[_0xd866('0xb')](_0xd866('0xc'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f41ae60..743ae8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa809=['UserChatQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x51e79c,_0x51485e){var _0x2467be=function(_0xbf70f0){while(--_0xbf70f0){_0x51e79c['push'](_0x51e79c['shift']());}};_0x2467be(++_0x51485e);}(_0xa809,0x16e));var _0x9a80=function(_0x1dddf6,_0x304467){_0x1dddf6=_0x1dddf6-0x0;var _0x335447=_0xa809[_0x1dddf6];return _0x335447;};'use strict';var _=require(_0x9a80('0x0'));var util=require('util');var moment=require(_0x9a80('0x1'));var BPromise=require(_0x9a80('0x2'));var rs=require(_0x9a80('0x3'));var fs=require('fs');var Redis=require(_0x9a80('0x4'));var db=require(_0x9a80('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9a80('0x6'));var config=require(_0x9a80('0x7'));var jayson=require(_0x9a80('0x8'));var client=jayson[_0x9a80('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a3b87,_0x3d767f,_0x3aae4e){return new BPromise(function(_0x59e262,_0x72110a){return client[_0x9a80('0xa')](_0x2a3b87,_0x3aae4e)[_0x9a80('0xb')](function(_0x290769){logger['info'](_0x9a80('0xc'),_0x3d767f,'request\x20sent');logger[_0x9a80('0xd')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x3d767f,_0x9a80('0xe'),JSON[_0x9a80('0xf')](_0x290769));if(_0x290769['error']){if(_0x290769[_0x9a80('0x10')][_0x9a80('0x11')]===0x1f4){logger[_0x9a80('0x10')](_0x9a80('0xc'),_0x3d767f,_0x290769[_0x9a80('0x10')]['message']);return _0x72110a(_0x290769[_0x9a80('0x10')][_0x9a80('0x12')]);}logger['error'](_0x9a80('0xc'),_0x3d767f,_0x290769['error'][_0x9a80('0x12')]);return _0x59e262(_0x290769[_0x9a80('0x10')][_0x9a80('0x12')]);}else{logger[_0x9a80('0x13')](_0x9a80('0xc'),_0x3d767f,_0x9a80('0xe'));_0x59e262(_0x290769[_0x9a80('0x14')][_0x9a80('0x12')]);}})['catch'](function(_0x57d6c5){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x3d767f,_0x57d6c5);_0x72110a(_0x57d6c5);});});}
\ No newline at end of file
+var _0x0c4c=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x448a56,_0x4ef88d){var _0xfbd676=function(_0x5db912){while(--_0x5db912){_0x448a56['push'](_0x448a56['shift']());}};_0xfbd676(++_0x4ef88d);}(_0x0c4c,0x180));var _0xc0c4=function(_0x753fb6,_0x4da0b7){_0x753fb6=_0x753fb6-0x0;var _0x18e0b2=_0x0c4c[_0x753fb6];return _0x18e0b2;};'use strict';var _=require(_0xc0c4('0x0'));var util=require(_0xc0c4('0x1'));var moment=require(_0xc0c4('0x2'));var BPromise=require(_0xc0c4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc0c4('0x4'));var db=require(_0xc0c4('0x5'))['db'];var utils=require(_0xc0c4('0x6'));var logger=require('../../config/logger')(_0xc0c4('0x7'));var config=require(_0xc0c4('0x8'));var jayson=require(_0xc0c4('0x9'));var client=jayson[_0xc0c4('0xa')][_0xc0c4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5412ee,_0xe6f96c,_0x2c2eeb){return new BPromise(function(_0x2bb89a,_0x578142){return client[_0xc0c4('0xc')](_0x5412ee,_0x2c2eeb)[_0xc0c4('0xd')](function(_0xabe592){logger[_0xc0c4('0xe')]('UserChatQueue,\x20%s,\x20%s',_0xe6f96c,'request\x20sent');logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0xe6f96c,_0xc0c4('0xf'),JSON[_0xc0c4('0x10')](_0xabe592));if(_0xabe592[_0xc0c4('0x11')]){if(_0xabe592[_0xc0c4('0x11')][_0xc0c4('0x12')]===0x1f4){logger['error'](_0xc0c4('0x13'),_0xe6f96c,_0xabe592[_0xc0c4('0x11')][_0xc0c4('0x14')]);return _0x578142(_0xabe592[_0xc0c4('0x11')]['message']);}logger[_0xc0c4('0x11')](_0xc0c4('0x13'),_0xe6f96c,_0xabe592[_0xc0c4('0x11')][_0xc0c4('0x14')]);return _0x2bb89a(_0xabe592['error']['message']);}else{logger[_0xc0c4('0xe')](_0xc0c4('0x13'),_0xe6f96c,_0xc0c4('0xf'));_0x2bb89a(_0xabe592[_0xc0c4('0x15')][_0xc0c4('0x14')]);}})[_0xc0c4('0x16')](function(_0x4bb102){logger[_0xc0c4('0x11')]('UserChatQueue,\x20%s,\x20%s',_0xe6f96c,_0x4bb102);_0x578142(_0x4bb102);});});}
\ No newline at end of file
index a2840c8..9a335ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x32a327,_0x170c62){var _0xba1acd=function(_0x2e3ebe){while(--_0x2e3ebe){_0x32a327['push'](_0x32a327['shift']());}};_0xba1acd(++_0x170c62);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5d8cb7,_0x2851f7){var _0xece05d=function(_0x33f59e){while(--_0x33f59e){_0x5d8cb7['push'](_0x5d8cb7['shift']());}};_0xece05d(++_0x2851f7);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 64592ff..3ae0f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e9=['STRING','exports','INTEGER'];(function(_0x5161b5,_0x4fa60f){var _0x7b35a8=function(_0x473f9c){while(--_0x473f9c){_0x5161b5['push'](_0x5161b5['shift']());}};_0x7b35a8(++_0x4fa60f);}(_0x80e9,0x139));var _0x980e=function(_0xf66378,_0x1b5bdf){_0xf66378=_0xf66378-0x0;var _0x27f3dc=_0x80e9[_0xf66378];return _0x27f3dc;};'use strict';var Sequelize=require('sequelize');module[_0x980e('0x0')]={'penalty':{'type':Sequelize[_0x980e('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x980e('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x980e('0x2')]}};
\ No newline at end of file
+var _0x5994=['sequelize','INTEGER','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5994,0xf3));var _0x4599=function(_0x58cfa6,_0x442a59){_0x58cfa6=_0x58cfa6-0x0;var _0x437da9=_0x5994[_0x58cfa6];return _0x437da9;};'use strict';var Sequelize=require(_0x4599('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x4599('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4599('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x4599('0x2')]}};
\ No newline at end of file
index ecf3494..bc0231c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aae=['UserFaxQueue','user_has_fax_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define'];(function(_0x5f1013,_0x4f03d4){var _0x20a5bc=function(_0x5e6066){while(--_0x5e6066){_0x5f1013['push'](_0x5f1013['shift']());}};_0x20a5bc(++_0x4f03d4);}(_0x9aae,0x1c9));var _0xe9aa=function(_0xca2ba8,_0x43888f){_0xca2ba8=_0xca2ba8-0x0;var _0x345418=_0x9aae[_0xca2ba8];return _0x345418;};'use strict';var _=require(_0xe9aa('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe9aa('0x1'));var moment=require(_0xe9aa('0x2'));var BPromise=require(_0xe9aa('0x3'));var rp=require(_0xe9aa('0x4'));var fs=require('fs');var path=require(_0xe9aa('0x5'));var rimraf=require(_0xe9aa('0x6'));var config=require(_0xe9aa('0x7'));var attributes=require(_0xe9aa('0x8'));module[_0xe9aa('0x9')]=function(_0x4eea8b,_0x1c3af1){return _0x4eea8b[_0xe9aa('0xa')](_0xe9aa('0xb'),attributes,{'tableName':_0xe9aa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87ba=['../../config/environment','./userFaxQueue.attributes','exports','UserFaxQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x87ba,0x154));var _0xa87b=function(_0x186861,_0x2311c7){_0x186861=_0x186861-0x0;var _0x5be31f=_0x87ba[_0x186861];return _0x5be31f;};'use strict';var _=require(_0xa87b('0x0'));var util=require('util');var logger=require(_0xa87b('0x1'))(_0xa87b('0x2'));var moment=require(_0xa87b('0x3'));var BPromise=require(_0xa87b('0x4'));var rp=require(_0xa87b('0x5'));var fs=require('fs');var path=require(_0xa87b('0x6'));var rimraf=require(_0xa87b('0x7'));var config=require(_0xa87b('0x8'));var attributes=require(_0xa87b('0x9'));module[_0xa87b('0xa')]=function(_0x5d7bd7,_0x1c1116){return _0x5d7bd7['define'](_0xa87b('0xb'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d950d98..cd1ec91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea59=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xea59,0x98));var _0x9ea5=function(_0xb06221,_0x3b47da){_0xb06221=_0xb06221-0x0;var _0x542c06=_0xea59[_0xb06221];return _0x542c06;};'use strict';var _=require(_0x9ea5('0x0'));var util=require(_0x9ea5('0x1'));var moment=require(_0x9ea5('0x2'));var BPromise=require(_0x9ea5('0x3'));var rs=require(_0x9ea5('0x4'));var fs=require('fs');var Redis=require(_0x9ea5('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9ea5('0x6'))(_0x9ea5('0x7'));var config=require(_0x9ea5('0x8'));var jayson=require(_0x9ea5('0x9'));var client=jayson[_0x9ea5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50e0bf,_0x5a3017,_0x540581){return new BPromise(function(_0x47f1b4,_0x160d6e){return client[_0x9ea5('0xb')](_0x50e0bf,_0x540581)['then'](function(_0x7e0b1){logger[_0x9ea5('0xc')](_0x9ea5('0xd'),_0x5a3017,_0x9ea5('0xe'));logger[_0x9ea5('0xf')](_0x9ea5('0x10'),_0x5a3017,'request\x20sent',JSON[_0x9ea5('0x11')](_0x7e0b1));if(_0x7e0b1[_0x9ea5('0x12')]){if(_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x13')]===0x1f4){logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x14')]);return _0x160d6e(_0x7e0b1['error'][_0x9ea5('0x14')]);}logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x7e0b1[_0x9ea5('0x12')][_0x9ea5('0x14')]);return _0x47f1b4(_0x7e0b1[_0x9ea5('0x12')]['message']);}else{logger[_0x9ea5('0xc')](_0x9ea5('0xd'),_0x5a3017,'request\x20sent');_0x47f1b4(_0x7e0b1[_0x9ea5('0x15')][_0x9ea5('0x14')]);}})['catch'](function(_0x42d182){logger[_0x9ea5('0x12')](_0x9ea5('0xd'),_0x5a3017,_0x42d182);_0x160d6e(_0x42d182);});});}
\ No newline at end of file
+var _0x365e=['info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request'];(function(_0x4150af,_0xa13cec){var _0xd7a852=function(_0x2122cd){while(--_0x2122cd){_0x4150af['push'](_0x4150af['shift']());}};_0xd7a852(++_0xa13cec);}(_0x365e,0x183));var _0xe365=function(_0x495504,_0x930cb7){_0x495504=_0x495504-0x0;var _0x118db1=_0x365e[_0x495504];return _0x118db1;};'use strict';var _=require(_0xe365('0x0'));var util=require(_0xe365('0x1'));var moment=require(_0xe365('0x2'));var BPromise=require(_0xe365('0x3'));var rs=require(_0xe365('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe365('0x5'))['db'];var utils=require(_0xe365('0x6'));var logger=require(_0xe365('0x7'))(_0xe365('0x8'));var config=require(_0xe365('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe365('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x245756,_0x5d272f,_0x413e13){return new BPromise(function(_0x3b0fcb,_0x318ab7){return client[_0xe365('0xb')](_0x245756,_0x413e13)['then'](function(_0x101ffb){logger[_0xe365('0xc')](_0xe365('0xd'),_0x5d272f,'request\x20sent');logger[_0xe365('0xe')](_0xe365('0xf'),_0x5d272f,_0xe365('0x10'),JSON['stringify'](_0x101ffb));if(_0x101ffb[_0xe365('0x11')]){if(_0x101ffb['error']['code']===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x5d272f,_0x101ffb[_0xe365('0x11')]['message']);return _0x318ab7(_0x101ffb['error']['message']);}logger[_0xe365('0x11')](_0xe365('0xd'),_0x5d272f,_0x101ffb['error'][_0xe365('0x12')]);return _0x3b0fcb(_0x101ffb[_0xe365('0x11')][_0xe365('0x12')]);}else{logger['info'](_0xe365('0xd'),_0x5d272f,_0xe365('0x10'));_0x3b0fcb(_0x101ffb[_0xe365('0x13')][_0xe365('0x12')]);}})[_0xe365('0x14')](function(_0x3112f4){logger['error'](_0xe365('0xd'),_0x5d272f,_0x3112f4);_0x318ab7(_0x3112f4);});});}
\ No newline at end of file
index 210c1af..49429a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5b2a7c,_0xa75601){var _0x4d7661=function(_0x10be25){while(--_0x10be25){_0x5b2a7c['push'](_0x5b2a7c['shift']());}};_0x4d7661(++_0xa75601);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x534156,_0x39cfdb){var _0x54e159=function(_0x34fda2){while(--_0x34fda2){_0x534156['push'](_0x534156['shift']());}};_0x54e159(++_0x39cfdb);}(_0xedd9,0xfc));var _0x9edd=function(_0x4bb26d,_0x1085b0){_0x4bb26d=_0x4bb26d-0x0;var _0x42b6d0=_0xedd9[_0x4bb26d];return _0x42b6d0;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index a8641eb..886acf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa12e=['INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa12e,0x1bc));var _0xea12=function(_0x2c492c,_0x50e279){_0x2c492c=_0x2c492c-0x0;var _0x51c7f6=_0xa12e[_0x2c492c];return _0x51c7f6;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xea12('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x428b=['INTEGER','exports'];(function(_0x465ab9,_0x761c6d){var _0x5591b4=function(_0x200d92){while(--_0x200d92){_0x465ab9['push'](_0x465ab9['shift']());}};_0x5591b4(++_0x761c6d);}(_0x428b,0xc5));var _0xb428=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x428b[_0x255d5b];return _0x3e141a;};'use strict';var Sequelize=require('sequelize');module[_0xb428('0x0')]={'penalty':{'type':Sequelize[_0xb428('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 915a327..ab02aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab9=['request-promise','rimraf','./userMailQueue.attributes','exports','define','UserMailQueue','lodash','util','../../config/logger','bluebird'];(function(_0x2a04df,_0x48f2de){var _0x1369a2=function(_0x11724e){while(--_0x11724e){_0x2a04df['push'](_0x2a04df['shift']());}};_0x1369a2(++_0x48f2de);}(_0xbab9,0x9c));var _0x9bab=function(_0x1e47ba,_0x2761be){_0x1e47ba=_0x1e47ba-0x0;var _0x2e0154=_0xbab9[_0x1e47ba];return _0x2e0154;};'use strict';var _=require(_0x9bab('0x0'));var util=require(_0x9bab('0x1'));var logger=require(_0x9bab('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9bab('0x3'));var rp=require(_0x9bab('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9bab('0x5'));var config=require('../../config/environment');var attributes=require(_0x9bab('0x6'));module[_0x9bab('0x7')]=function(_0x5839e7,_0x14667d){return _0x5839e7[_0x9bab('0x8')](_0x9bab('0x9'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1989=['user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0x1989,0xc4));var _0x9198=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1989[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9198('0x0'));var util=require(_0x9198('0x1'));var logger=require(_0x9198('0x2'))(_0x9198('0x3'));var moment=require(_0x9198('0x4'));var BPromise=require(_0x9198('0x5'));var rp=require(_0x9198('0x6'));var fs=require('fs');var path=require(_0x9198('0x7'));var rimraf=require(_0x9198('0x8'));var config=require(_0x9198('0x9'));var attributes=require(_0x9198('0xa'));module[_0x9198('0xb')]=function(_0x409e9e,_0x558fe5){return _0x409e9e[_0x9198('0xc')](_0x9198('0xd'),attributes,{'tableName':_0x9198('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index faeae85..affd996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','UserMailQueue,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x2fed11,_0x1a6793){var _0x19ff1e=function(_0x38b5de){while(--_0x38b5de){_0x2fed11['push'](_0x2fed11['shift']());}};_0x19ff1e(++_0x1a6793);}(_0x3e74,0x175));var _0x43e7=function(_0x2f3c23,_0x1bc8e0){_0x2f3c23=_0x2f3c23-0x0;var _0x4bb9ae=_0x3e74[_0x2f3c23];return _0x4bb9ae;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
+var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x008c,0x188));var _0xc008=function(_0x57da06,_0x4c9d35){_0x57da06=_0x57da06-0x0;var _0x118c39=_0x008c[_0x57da06];return _0x118c39;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
index b74441d..6f52609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb107=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','exports','multer','util'];(function(_0x25560b,_0x5a52a5){var _0x1aeab9=function(_0x5410c8){while(--_0x5410c8){_0x25560b['push'](_0x25560b['shift']());}};_0x1aeab9(++_0x5a52a5);}(_0xb107,0x1df));var _0x7b10=function(_0x3dddc6,_0x30f432){_0x3dddc6=_0x3dddc6-0x0;var _0x4a0213=_0xb107[_0x3dddc6];return _0x4a0213;};'use strict';var multer=require(_0x7b10('0x0'));var util=require(_0x7b10('0x1'));var path=require(_0x7b10('0x2'));var timeout=require(_0x7b10('0x3'));var express=require('express');var router=express[_0x7b10('0x4')]();var fs_extra=require(_0x7b10('0x5'));var auth=require(_0x7b10('0x6'));var interaction=require(_0x7b10('0x7'));var config=require(_0x7b10('0x8'));var controller=require(_0x7b10('0x9'));router[_0x7b10('0xa')]('/',auth[_0x7b10('0xb')](),controller['sendUserNotification']);module[_0x7b10('0xc')]=router;
\ No newline at end of file
+var _0x6bdb=['multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','sendUserNotification'];(function(_0x140390,_0x3dbf6b){var _0x231cd2=function(_0x5a7571){while(--_0x5a7571){_0x140390['push'](_0x140390['shift']());}};_0x231cd2(++_0x3dbf6b);}(_0x6bdb,0xdc));var _0xb6bd=function(_0x2e250b,_0x2dcded){_0x2e250b=_0x2e250b-0x0;var _0x4d11c6=_0x6bdb[_0x2e250b];return _0x4d11c6;};'use strict';var multer=require(_0xb6bd('0x0'));var util=require(_0xb6bd('0x1'));var path=require(_0xb6bd('0x2'));var timeout=require('connect-timeout');var express=require(_0xb6bd('0x3'));var router=express['Router']();var fs_extra=require(_0xb6bd('0x4'));var auth=require(_0xb6bd('0x5'));var interaction=require(_0xb6bd('0x6'));var config=require(_0xb6bd('0x7'));var controller=require(_0xb6bd('0x8'));router[_0xb6bd('0x9')]('/',auth['isAuthenticated'](),controller[_0xb6bd('0xa')]);module['exports']=router;
\ No newline at end of file
index 31fe907..f8f5af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb6=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x3fb6,0x7c));var _0x63fb=function(_0x4d880c,_0x344714){_0x4d880c=_0x4d880c-0x0;var _0x40c121=_0x3fb6[_0x4d880c];return _0x40c121;};'use strict';var Sequelize=require(_0x63fb('0x0'));module[_0x63fb('0x1')]={'body':{'type':Sequelize[_0x63fb('0x2')]},'senderName':{'type':Sequelize[_0x63fb('0x3')]},'recipientsId':{'type':Sequelize[_0x63fb('0x2')]},'recipientsDescription':{'type':Sequelize[_0x63fb('0x3')]},'beep':{'type':Sequelize[_0x63fb('0x4')]}};
\ No newline at end of file
+var _0x31a3=['BOOLEAN','sequelize','TEXT','STRING'];(function(_0xb8dae0,_0x317df1){var _0x3aba88=function(_0x1e6f9a){while(--_0x1e6f9a){_0xb8dae0['push'](_0xb8dae0['shift']());}};_0x3aba88(++_0x317df1);}(_0x31a3,0x151));var _0x331a=function(_0x4cae38,_0x1f7372){_0x4cae38=_0x4cae38-0x0;var _0x4fc0d6=_0x31a3[_0x4cae38];return _0x4fc0d6;};'use strict';var Sequelize=require(_0x331a('0x0'));module['exports']={'body':{'type':Sequelize[_0x331a('0x1')]},'senderName':{'type':Sequelize[_0x331a('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x331a('0x2')]},'beep':{'type':Sequelize[_0x331a('0x3')]}};
\ No newline at end of file
index 93fa8ff..7337905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40c0=['ids','queue','replace','Queue','all','flatten','map','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./userNotification.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','TemplateId','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','Invalid\x20\x27recipients\x27\x20object','faxqueue','openchannelqueue','whatsappqueue','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase'];(function(_0xfd0d40,_0x61e03e){var _0x5ce011=function(_0x12d68e){while(--_0x12d68e){_0xfd0d40['push'](_0xfd0d40['shift']());}};_0x5ce011(++_0x61e03e);}(_0x40c0,0x130));var _0x040c=function(_0x15020e,_0x4ef0f9){_0x15020e=_0x15020e-0x0;var _0x4bd575=_0x40c0[_0x15020e];return _0x4bd575;};'use strict';var emlformat=require(_0x040c('0x0'));var rimraf=require(_0x040c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x040c('0x2'));var rp=require('request-promise');var moment=require(_0x040c('0x3'));var BPromise=require(_0x040c('0x4'));var Mustache=require(_0x040c('0x5'));var util=require(_0x040c('0x6'));var path=require(_0x040c('0x7'));var sox=require('sox');var csv=require(_0x040c('0x8'));var ejs=require(_0x040c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x040c('0xa'));var squel=require(_0x040c('0xb'));var crypto=require(_0x040c('0xc'));var jsforce=require(_0x040c('0xd'));var deskjs=require(_0x040c('0xe'));var toCsv=require(_0x040c('0x8'));var querystring=require(_0x040c('0xf'));var Papa=require(_0x040c('0x10'));var Redis=require(_0x040c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x040c('0x12'));var as=require(_0x040c('0x13'));var hardwareService=require(_0x040c('0x14'));var logger=require(_0x040c('0x15'))(_0x040c('0x16'));var utils=require(_0x040c('0x17'));var config=require(_0x040c('0x18'));var licenseUtil=require(_0x040c('0x19'));var db=require('../../mysqldb')['db'];config[_0x040c('0x1a')]=_[_0x040c('0x1b')](config[_0x040c('0x1a')],{'host':_0x040c('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x040c('0x1a')]));require(_0x040c('0x1d'))[_0x040c('0x1e')](socket);function respondWithStatusCode(_0x1c1d29,_0x4491b4){_0x4491b4=_0x4491b4||0xcc;return function(_0x5f05ea){if(_0x5f05ea){return _0x1c1d29[_0x040c('0x1f')](_0x4491b4);}return _0x1c1d29[_0x040c('0x20')](_0x4491b4)[_0x040c('0x21')]();};}function respondWithResult(_0x2f0afb,_0x43910a){_0x43910a=_0x43910a||0xc8;return function(_0x110865){if(_0x110865){return _0x2f0afb[_0x040c('0x20')](_0x43910a)['json'](_0x110865);}};}function respondWithFilteredResult(_0x2e066f,_0x77a9a3){return function(_0x2d8a49){if(_0x2d8a49){var _0xeced93=typeof _0x77a9a3[_0x040c('0x22')]===_0x040c('0x23')&&typeof _0x77a9a3[_0x040c('0x24')]===_0x040c('0x23');var _0x5c6284=_0x2d8a49[_0x040c('0x25')];var _0x5d8455=_0xeced93?0x0:_0x77a9a3[_0x040c('0x22')];var _0x19cbf6=_0xeced93?_0x2d8a49[_0x040c('0x25')]:_0x77a9a3['offset']+_0x77a9a3[_0x040c('0x24')];var _0x55e1d0;if(_0x19cbf6>=_0x5c6284){_0x19cbf6=_0x5c6284;_0x55e1d0=0xc8;}else{_0x55e1d0=0xce;}_0x2e066f[_0x040c('0x20')](_0x55e1d0);return _0x2e066f[_0x040c('0x26')](_0x040c('0x27'),_0x5d8455+'-'+_0x19cbf6+'/'+_0x5c6284)['json'](_0x2d8a49);}return null;};}function patchUpdates(_0x26db0b){return function(_0x1dd80a){try{jsonpatch[_0x040c('0x28')](_0x1dd80a,_0x26db0b,!![]);}catch(_0x50ca2f){return BPromise['reject'](_0x50ca2f);}return _0x1dd80a[_0x040c('0x29')]();};}function saveUpdates(_0x3acb98,_0x21ef6d){return function(_0x48a6bb){if(_0x48a6bb){return _0x48a6bb[_0x040c('0x2a')](_0x3acb98)[_0x040c('0x2b')](function(_0x58a24e){return _0x58a24e;});}return null;};}function removeEntity(_0x3c89c1,_0x4800ad){return function(_0x11478b){if(_0x11478b){return _0x11478b[_0x040c('0x2c')]()[_0x040c('0x2b')](function(){_0x3c89c1[_0x040c('0x20')](0xcc)[_0x040c('0x21')]();});}};}function handleEntityNotFound(_0x57ae95,_0x507da8){return function(_0x4a2770){if(!_0x4a2770){_0x57ae95[_0x040c('0x1f')](0x194);}return _0x4a2770;};}function handleError(_0x1016d8,_0x124396){_0x124396=_0x124396||0x1f4;return function(_0x154ed3){logger[_0x040c('0x2d')](_0x154ed3[_0x040c('0x2e')]);if(_0x154ed3[_0x040c('0x2f')]){delete _0x154ed3[_0x040c('0x2f')];}_0x1016d8[_0x040c('0x20')](_0x124396)[_0x040c('0x30')](_0x154ed3);};}exports[_0x040c('0x31')]=function(_0x524dde,_0x363280,_0x29b3d8){if(!_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x34'))&&!_0x524dde[_0x040c('0x32')][_0x040c('0x33')]('TemplateId')){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x37'))&&!_0x524dde[_0x040c('0x32')]['hasOwnProperty'](_0x040c('0x38'))){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x39'));}if(!_0x524dde[_0x040c('0x32')][_0x040c('0x33')](_0x040c('0x3a'))){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x3b'));}else{try{var _0x357fff=JSON['parse'](_0x524dde[_0x040c('0x32')][_0x040c('0x3a')]);}catch(_0xb61465){logger[_0x040c('0x2d')](_0xb61465);throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x3c'));}var _0x2e8674=['chatqueue',_0x040c('0x3d'),'mailqueue',_0x040c('0x3e'),'smsqueue','voicequeue',_0x040c('0x3f'),'team',_0x040c('0x40')];if(_['some'](_0x357fff,function(_0x185759){return!_[_0x040c('0x41')](_0x2e8674,_0x185759[_0x040c('0x42')]['toLowerCase']());})){throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x43'));}}}var _0x58a27b={};_0x58a27b[_0x040c('0x44')]=_0x524dde[_0x040c('0x32')]['hasOwnProperty'](_0x040c('0x44'))?_0x524dde['body'][_0x040c('0x44')]:_0x524dde[_0x040c('0x40')]['fullname'];_0x58a27b['recipientsDescription']=_[_0x040c('0x45')](_0x524dde['body']['recipientsDescription'])?null:_0x524dde[_0x040c('0x32')][_0x040c('0x46')];_0x58a27b[_0x040c('0x47')]=_0x524dde[_0x040c('0x32')][_0x040c('0x47')]||![];_0x58a27b[_0x040c('0x48')]=_0x524dde[_0x040c('0x40')]['id'];return getContent(_0x524dde['body'])[_0x040c('0x2b')](function(_0x287260){_0x58a27b[_0x040c('0x32')]=_0x287260;return getRecipients(_0x357fff);})['then'](function(_0x24f475){_0x58a27b[_0x040c('0x49')]=_[_0x040c('0x4a')](_0x24f475)[_0x040c('0x4b')](',');return db[_0x040c('0x4c')][_0x040c('0x4d')](function(_0x350df6){return db[_0x040c('0x4e')][_0x040c('0x4f')](_0x58a27b,{'raw':!![],'transaction':_0x350df6})[_0x040c('0x2b')](function(_0x584694){var _0x2dd314={'sender':_0x58a27b[_0x040c('0x44')],'description':_0x58a27b[_0x040c('0x46')],'content':_0x58a27b['body'],'beep':_0x58a27b[_0x040c('0x47')]};_0x24f475[_0x040c('0x50')](function(_0x14d1dd){_0x2dd314[_0x040c('0x51')]=_0x14d1dd;socket[_0x040c('0x52')](_0x040c('0x53'),_0x2dd314);});return _0x584694;});});})['then'](respondWithResult(_0x363280,0xc9))[_0x040c('0x54')](handleError(_0x363280,null));};function getContent(_0x1331ce){return new BPromise(function(_0x37ccf2,_0xfe6fc3){if(_0x1331ce[_0x040c('0x34')]){_0x37ccf2(_0x1331ce[_0x040c('0x34')]);return;}return db[_0x040c('0x55')][_0x040c('0x56')]({'attributes':[_0x040c('0x57')],'where':{'id':_0x1331ce['TemplateId']},'raw':!![]})['then'](function(_0x27e37c){if(!_0x27e37c)throw new db[(_0x040c('0x35'))][(_0x040c('0x36'))](_0x040c('0x58'));var _0x38bd5d=Mustache[_0x040c('0x59')](_0x27e37c['html'],_0x1331ce['view']);_0x37ccf2(_0x38bd5d);})[_0x040c('0x54')](function(_0x25265d){_0xfe6fc3(_0x25265d);});});}function getRecipients(_0x108fa3){return new BPromise(function(_0xd3929,_0x20cb88){var _0xeaf46b=[];var _0x42f9c7=[];_0x108fa3[_0x040c('0x50')](function(_0x38aeba){var _0x47c71e=_[_0x040c('0x5a')](_0x38aeba[_0x040c('0x42')][_0x040c('0x5b')]());if(_0x47c71e==='User'){_0xeaf46b=_['union'](_0xeaf46b,_0x38aeba[_0x040c('0x5c')]);}else{if(_[_0x040c('0x41')](_0x47c71e,_0x040c('0x5d')))_0x47c71e=_0x47c71e[_0x040c('0x5e')]('queue',_0x040c('0x5f'));_0x38aeba[_0x040c('0x5c')][_0x040c('0x50')](function(_0x56d220){_0x42f9c7['push'](getAgents(_0x47c71e,_0x56d220));});}});return BPromise[_0x040c('0x60')](_0x42f9c7)[_0x040c('0x2b')](function(_0x5cc7b1){_0xeaf46b=_['union'](_0xeaf46b,_[_0x040c('0x61')](_0x5cc7b1));_0xd3929(_0xeaf46b);})[_0x040c('0x54')](function(_0x2af133){_0x20cb88(_0x2af133);});});}function getAgents(_0x1448d5,_0x2aa9f8){return new BPromise(function(_0x3dae,_0x52783a){return db[_0x1448d5][_0x040c('0x56')]({'where':{'id':_0x2aa9f8}})[_0x040c('0x2b')](function(_0x42b4fc){return _0x42b4fc['getAgents']({'attributes':['id'],'raw':!![]})[_0x040c('0x2b')](function(_0x263f48){var _0x503fcc=_[_0x040c('0x62')](_0x263f48,'id');_0x3dae(_0x503fcc);});})['catch'](function(_0x2fe896){_0x52783a(_0x2fe896);});});}
\ No newline at end of file
+var _0xe8d7=['to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','destroy','error','stack','name','send','sendUserNotification','hasOwnProperty','body','TemplateId','ValidationError','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','then','recipientsId','sortBy','join','sequelize','UserNotification','forEach','recipient','userNotification:send','text','Template','findOne','html','render','catch','startCase','User','union','ids','replace','queue','Queue','all','flatten','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe8d7,0xc2));var _0x7e8d=function(_0xd4ffa9,_0x219194){_0xd4ffa9=_0xd4ffa9-0x0;var _0x195582=_0xe8d7[_0xd4ffa9];return _0x195582;};'use strict';var emlformat=require(_0x7e8d('0x0'));var rimraf=require(_0x7e8d('0x1'));var zipdir=require(_0x7e8d('0x2'));var jsonpatch=require(_0x7e8d('0x3'));var rp=require('request-promise');var moment=require(_0x7e8d('0x4'));var BPromise=require(_0x7e8d('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7e8d('0x6'));var sox=require(_0x7e8d('0x7'));var csv=require(_0x7e8d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7e8d('0x9'));var _=require(_0x7e8d('0xa'));var squel=require(_0x7e8d('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7e8d('0xc'));var toCsv=require(_0x7e8d('0x8'));var querystring=require(_0x7e8d('0xd'));var Papa=require(_0x7e8d('0xe'));var Redis=require(_0x7e8d('0xf'));var authService=require(_0x7e8d('0x10'));var qs=require(_0x7e8d('0x11'));var as=require(_0x7e8d('0x12'));var hardwareService=require(_0x7e8d('0x13'));var logger=require(_0x7e8d('0x14'))(_0x7e8d('0x15'));var utils=require('../../config/utils');var config=require(_0x7e8d('0x16'));var licenseUtil=require(_0x7e8d('0x17'));var db=require(_0x7e8d('0x18'))['db'];config[_0x7e8d('0x19')]=_['defaults'](config[_0x7e8d('0x19')],{'host':_0x7e8d('0x1a'),'port':0x18eb});var socket=require(_0x7e8d('0x1b'))(new Redis(config[_0x7e8d('0x19')]));require(_0x7e8d('0x1c'))[_0x7e8d('0x1d')](socket);function respondWithStatusCode(_0x1b53c4,_0x20af97){_0x20af97=_0x20af97||0xcc;return function(_0x504c3a){if(_0x504c3a){return _0x1b53c4[_0x7e8d('0x1e')](_0x20af97);}return _0x1b53c4[_0x7e8d('0x1f')](_0x20af97)[_0x7e8d('0x20')]();};}function respondWithResult(_0x3e5fd9,_0x341462){_0x341462=_0x341462||0xc8;return function(_0x5102a2){if(_0x5102a2){return _0x3e5fd9[_0x7e8d('0x1f')](_0x341462)[_0x7e8d('0x21')](_0x5102a2);}};}function respondWithFilteredResult(_0x448bfa,_0x44295d){return function(_0x21130f){if(_0x21130f){var _0x2b252f=typeof _0x44295d[_0x7e8d('0x22')]===_0x7e8d('0x23')&&typeof _0x44295d[_0x7e8d('0x24')]==='undefined';var _0x4dece4=_0x21130f[_0x7e8d('0x25')];var _0x15f0cd=_0x2b252f?0x0:_0x44295d[_0x7e8d('0x22')];var _0x272117=_0x2b252f?_0x21130f[_0x7e8d('0x25')]:_0x44295d[_0x7e8d('0x22')]+_0x44295d[_0x7e8d('0x24')];var _0x45bc06;if(_0x272117>=_0x4dece4){_0x272117=_0x4dece4;_0x45bc06=0xc8;}else{_0x45bc06=0xce;}_0x448bfa['status'](_0x45bc06);return _0x448bfa[_0x7e8d('0x26')]('Content-Range',_0x15f0cd+'-'+_0x272117+'/'+_0x4dece4)['json'](_0x21130f);}return null;};}function patchUpdates(_0x3cc565){return function(_0x1c6091){try{jsonpatch[_0x7e8d('0x27')](_0x1c6091,_0x3cc565,!![]);}catch(_0x38ae12){return BPromise['reject'](_0x38ae12);}return _0x1c6091['save']();};}function saveUpdates(_0x3d1f18,_0x9a20d3){return function(_0x5d380c){if(_0x5d380c){return _0x5d380c['update'](_0x3d1f18)['then'](function(_0x5b44ac){return _0x5b44ac;});}return null;};}function removeEntity(_0x1a7ca4,_0x22dac1){return function(_0xa2c197){if(_0xa2c197){return _0xa2c197[_0x7e8d('0x28')]()['then'](function(){_0x1a7ca4[_0x7e8d('0x1f')](0xcc)[_0x7e8d('0x20')]();});}};}function handleEntityNotFound(_0x6c7c44,_0x25c683){return function(_0xd911af){if(!_0xd911af){_0x6c7c44[_0x7e8d('0x1e')](0x194);}return _0xd911af;};}function handleError(_0x440cbf,_0x525d2b){_0x525d2b=_0x525d2b||0x1f4;return function(_0x2b6933){logger[_0x7e8d('0x29')](_0x2b6933[_0x7e8d('0x2a')]);if(_0x2b6933[_0x7e8d('0x2b')]){delete _0x2b6933[_0x7e8d('0x2b')];}_0x440cbf[_0x7e8d('0x1f')](_0x525d2b)[_0x7e8d('0x2c')](_0x2b6933);};}exports[_0x7e8d('0x2d')]=function(_0x35ce4c,_0x23c740,_0x26e6b2){if(!_0x35ce4c['body'][_0x7e8d('0x2e')]('text')&&!_0x35ce4c[_0x7e8d('0x2f')][_0x7e8d('0x2e')](_0x7e8d('0x30'))){throw new db['Sequelize'][(_0x7e8d('0x31'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x35ce4c[_0x7e8d('0x2f')]['hasOwnProperty'](_0x7e8d('0x30'))&&!_0x35ce4c['body']['hasOwnProperty'](_0x7e8d('0x32'))){throw new db['Sequelize'][(_0x7e8d('0x31'))](_0x7e8d('0x33'));}if(!_0x35ce4c['body'][_0x7e8d('0x2e')](_0x7e8d('0x34'))){throw new db[(_0x7e8d('0x35'))][(_0x7e8d('0x31'))](_0x7e8d('0x36'));}else{try{var _0x2c7ea4=JSON[_0x7e8d('0x37')](_0x35ce4c[_0x7e8d('0x2f')]['recipients']);}catch(_0x270c52){logger[_0x7e8d('0x29')](_0x270c52);throw new db[(_0x7e8d('0x35'))][(_0x7e8d('0x31'))](_0x7e8d('0x38'));}var _0x4ca730=[_0x7e8d('0x39'),_0x7e8d('0x3a'),_0x7e8d('0x3b'),_0x7e8d('0x3c'),_0x7e8d('0x3d'),'voicequeue',_0x7e8d('0x3e'),'team',_0x7e8d('0x3f')];if(_[_0x7e8d('0x40')](_0x2c7ea4,function(_0x5dc349){return!_[_0x7e8d('0x41')](_0x4ca730,_0x5dc349[_0x7e8d('0x42')][_0x7e8d('0x43')]());})){throw new db[(_0x7e8d('0x35'))]['ValidationError'](_0x7e8d('0x44'));}}}var _0x1a233a={};_0x1a233a[_0x7e8d('0x45')]=_0x35ce4c['body'][_0x7e8d('0x2e')](_0x7e8d('0x45'))?_0x35ce4c['body']['senderName']:_0x35ce4c[_0x7e8d('0x3f')][_0x7e8d('0x46')];_0x1a233a[_0x7e8d('0x47')]=_[_0x7e8d('0x48')](_0x35ce4c[_0x7e8d('0x2f')][_0x7e8d('0x47')])?null:_0x35ce4c[_0x7e8d('0x2f')][_0x7e8d('0x47')];_0x1a233a['beep']=_0x35ce4c[_0x7e8d('0x2f')][_0x7e8d('0x49')]||![];_0x1a233a[_0x7e8d('0x4a')]=_0x35ce4c[_0x7e8d('0x3f')]['id'];return getContent(_0x35ce4c[_0x7e8d('0x2f')])[_0x7e8d('0x4b')](function(_0x2ef1c4){_0x1a233a[_0x7e8d('0x2f')]=_0x2ef1c4;return getRecipients(_0x2c7ea4);})[_0x7e8d('0x4b')](function(_0x206f8){_0x1a233a[_0x7e8d('0x4c')]=_[_0x7e8d('0x4d')](_0x206f8)[_0x7e8d('0x4e')](',');return db[_0x7e8d('0x4f')]['transaction'](function(_0x57b08c){return db[_0x7e8d('0x50')]['create'](_0x1a233a,{'raw':!![],'transaction':_0x57b08c})['then'](function(_0x225115){var _0xa2c649={'sender':_0x1a233a[_0x7e8d('0x45')],'description':_0x1a233a[_0x7e8d('0x47')],'content':_0x1a233a[_0x7e8d('0x2f')],'beep':_0x1a233a['beep']};_0x206f8[_0x7e8d('0x51')](function(_0x48cb81){_0xa2c649[_0x7e8d('0x52')]=_0x48cb81;socket['emit'](_0x7e8d('0x53'),_0xa2c649);});return _0x225115;});});})[_0x7e8d('0x4b')](respondWithResult(_0x23c740,0xc9))['catch'](handleError(_0x23c740,null));};function getContent(_0x2d9308){return new BPromise(function(_0x45dcd7,_0x18c0cf){if(_0x2d9308[_0x7e8d('0x54')]){_0x45dcd7(_0x2d9308[_0x7e8d('0x54')]);return;}return db[_0x7e8d('0x55')][_0x7e8d('0x56')]({'attributes':[_0x7e8d('0x57')],'where':{'id':_0x2d9308[_0x7e8d('0x30')]},'raw':!![]})[_0x7e8d('0x4b')](function(_0x27ddbe){if(!_0x27ddbe)throw new db[(_0x7e8d('0x35'))][(_0x7e8d('0x31'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x43fc80=Mustache[_0x7e8d('0x58')](_0x27ddbe['html'],_0x2d9308[_0x7e8d('0x32')]);_0x45dcd7(_0x43fc80);})[_0x7e8d('0x59')](function(_0x360168){_0x18c0cf(_0x360168);});});}function getRecipients(_0x511808){return new BPromise(function(_0x379e55,_0x118162){var _0x2aa326=[];var _0x39e514=[];_0x511808[_0x7e8d('0x51')](function(_0x4f6bc4){var _0x3f21de=_[_0x7e8d('0x5a')](_0x4f6bc4[_0x7e8d('0x42')][_0x7e8d('0x43')]());if(_0x3f21de===_0x7e8d('0x5b')){_0x2aa326=_[_0x7e8d('0x5c')](_0x2aa326,_0x4f6bc4[_0x7e8d('0x5d')]);}else{if(_[_0x7e8d('0x41')](_0x3f21de,'queue'))_0x3f21de=_0x3f21de[_0x7e8d('0x5e')](_0x7e8d('0x5f'),_0x7e8d('0x60'));_0x4f6bc4[_0x7e8d('0x5d')][_0x7e8d('0x51')](function(_0x78c104){_0x39e514['push'](getAgents(_0x3f21de,_0x78c104));});}});return BPromise[_0x7e8d('0x61')](_0x39e514)[_0x7e8d('0x4b')](function(_0x1c3777){_0x2aa326=_[_0x7e8d('0x5c')](_0x2aa326,_[_0x7e8d('0x62')](_0x1c3777));_0x379e55(_0x2aa326);})[_0x7e8d('0x59')](function(_0x330bd4){_0x118162(_0x330bd4);});});}function getAgents(_0xd7828e,_0x66b6ff){return new BPromise(function(_0x38b22f,_0x5c2a19){return db[_0xd7828e]['findOne']({'where':{'id':_0x66b6ff}})['then'](function(_0x3a939a){return _0x3a939a[_0x7e8d('0x63')]({'attributes':['id'],'raw':!![]})['then'](function(_0x35c36e){var _0xaf4a18=_[_0x7e8d('0x64')](_0x35c36e,'id');_0x38b22f(_0xaf4a18);});})[_0x7e8d('0x59')](function(_0x581723){_0x5c2a19(_0x581723);});});}
\ No newline at end of file
index d27c90c..59354da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a3b=['../../mysqldb','UserNotification','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0xb8b672,_0x1182f5){var _0x128807=function(_0x31ec15){while(--_0x31ec15){_0xb8b672['push'](_0xb8b672['shift']());}};_0x128807(++_0x1182f5);}(_0x0a3b,0x17b));var _0xb0a3=function(_0x254abd,_0x1ab7f0){_0x254abd=_0x254abd-0x0;var _0x31bf1b=_0x0a3b[_0x254abd];return _0x31bf1b;};'use strict';var EventEmitter=require(_0xb0a3('0x0'));var UserNotification=require(_0xb0a3('0x1'))['db'][_0xb0a3('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xb0a3('0x3')](0x0);var events={'afterCreate':_0xb0a3('0x4'),'afterUpdate':_0xb0a3('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5637cd){return function(_0x1af162,_0x1fa18d,_0x58060a){UserNotificationEvents['emit'](_0x5637cd+':'+_0x1af162['id'],_0x1af162);UserNotificationEvents[_0xb0a3('0x6')](_0x5637cd,_0x1af162);_0x58060a(null);};}for(var e in events){if(events[_0xb0a3('0x7')](e)){var event=events[e];UserNotification[_0xb0a3('0x8')](e,emitEvent(event));}}module[_0xb0a3('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x6c69=['emit','hasOwnProperty','hook','exports','../../mysqldb','save','update'];(function(_0x476aa9,_0x398c8a){var _0x4d3858=function(_0x4b01aa){while(--_0x4b01aa){_0x476aa9['push'](_0x476aa9['shift']());}};_0x4d3858(++_0x398c8a);}(_0x6c69,0x9e));var _0x96c6=function(_0x50a3e4,_0x43d30b){_0x50a3e4=_0x50a3e4-0x0;var _0x4f99bf=_0x6c69[_0x50a3e4];return _0x4f99bf;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x96c6('0x0'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x96c6('0x1'),'afterUpdate':_0x96c6('0x2'),'afterDestroy':'remove'};function emitEvent(_0x2b3d6f){return function(_0x121c53,_0x99d6c0,_0x5b062f){UserNotificationEvents[_0x96c6('0x3')](_0x2b3d6f+':'+_0x121c53['id'],_0x121c53);UserNotificationEvents['emit'](_0x2b3d6f,_0x121c53);_0x5b062f(null);};}for(var e in events){if(events[_0x96c6('0x4')](e)){var event=events[e];UserNotification[_0x96c6('0x5')](e,emitEvent(event));}}module[_0x96c6('0x6')]=UserNotificationEvents;
\ No newline at end of file
index d0d7d25..92b3ed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6596=['userNotifications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userNotification.attributes','exports'];(function(_0x3c4324,_0x409416){var _0x4750f0=function(_0x10e18a){while(--_0x10e18a){_0x3c4324['push'](_0x3c4324['shift']());}};_0x4750f0(++_0x409416);}(_0x6596,0x15e));var _0x6659=function(_0x6fcc6e,_0x5d1c4e){_0x6fcc6e=_0x6fcc6e-0x0;var _0x234cee=_0x6596[_0x6fcc6e];return _0x234cee;};'use strict';var _=require(_0x6659('0x0'));var util=require('util');var logger=require(_0x6659('0x1'))(_0x6659('0x2'));var moment=require(_0x6659('0x3'));var BPromise=require(_0x6659('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6659('0x5'));var rimraf=require(_0x6659('0x6'));var config=require(_0x6659('0x7'));var attributes=require(_0x6659('0x8'));module[_0x6659('0x9')]=function(_0xc9defa,_0x5f08ba){return _0xc9defa['define']('UserNotification',attributes,{'tableName':_0x6659('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6659('0xb')});};
\ No newline at end of file
+var _0x634f=['utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define','UserNotification','userNotifications'];(function(_0x149ed4,_0x3cc43c){var _0x13695e=function(_0xc5718e){while(--_0xc5718e){_0x149ed4['push'](_0x149ed4['shift']());}};_0x13695e(++_0x3cc43c);}(_0x634f,0xab));var _0xf634=function(_0x277c96,_0x11f27f){_0x277c96=_0x277c96-0x0;var _0x1315cc=_0x634f[_0x277c96];return _0x1315cc;};'use strict';var _=require('lodash');var util=require(_0xf634('0x0'));var logger=require(_0xf634('0x1'))('api');var moment=require(_0xf634('0x2'));var BPromise=require('bluebird');var rp=require(_0xf634('0x3'));var fs=require('fs');var path=require(_0xf634('0x4'));var rimraf=require(_0xf634('0x5'));var config=require(_0xf634('0x6'));var attributes=require('./userNotification.attributes');module[_0xf634('0x7')]=function(_0x42ee3d,_0x1cdf51){return _0x42ee3d[_0xf634('0x8')](_0xf634('0x9'),attributes,{'tableName':_0xf634('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf634('0xb'),'collate':_0xf634('0xc')});};
\ No newline at end of file
index b62efe7..4133f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x569d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring'];(function(_0x40a980,_0xabcc3c){var _0x163f7f=function(_0x23f7e9){while(--_0x23f7e9){_0x40a980['push'](_0x40a980['shift']());}};_0x163f7f(++_0xabcc3c);}(_0x569d,0x183));var _0xd569=function(_0x2490ad,_0x33836e){_0x2490ad=_0x2490ad-0x0;var _0x38262d=_0x569d[_0x2490ad];return _0x38262d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd569('0x0'));var BPromise=require(_0xd569('0x1'));var rs=require(_0xd569('0x2'));var fs=require('fs');var Redis=require(_0xd569('0x3'));var db=require(_0xd569('0x4'))['db'];var utils=require(_0xd569('0x5'));var logger=require(_0xd569('0x6'))(_0xd569('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd569('0x8')][_0xd569('0x9')]({'port':0x232a});config[_0xd569('0xa')]=_[_0xd569('0xb')](config[_0xd569('0xa')],{'host':_0xd569('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd569('0xa')]));require(_0xd569('0xd'))[_0xd569('0xe')](socket);function respondWithRpcPromise(_0x3b90ec,_0x1fb4a9,_0x41da70){return new BPromise(function(_0x500e6d,_0x5a2f8f){return client[_0xd569('0xf')](_0x3b90ec,_0x41da70)['then'](function(_0x49c102){logger[_0xd569('0x10')](_0xd569('0x11'),_0x1fb4a9,_0xd569('0x12'));logger[_0xd569('0x13')](_0xd569('0x14'),_0x1fb4a9,'request\x20sent',JSON[_0xd569('0x15')](_0x49c102));if(_0x49c102[_0xd569('0x16')]){if(_0x49c102[_0xd569('0x16')][_0xd569('0x17')]===0x1f4){logger[_0xd569('0x16')]('UserNotification,\x20%s,\x20%s',_0x1fb4a9,_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);return _0x5a2f8f(_0x49c102['error'][_0xd569('0x18')]);}logger[_0xd569('0x16')](_0xd569('0x11'),_0x1fb4a9,_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);return _0x500e6d(_0x49c102[_0xd569('0x16')][_0xd569('0x18')]);}else{logger[_0xd569('0x10')](_0xd569('0x11'),_0x1fb4a9,_0xd569('0x12'));_0x500e6d(_0x49c102['result']['message']);}})[_0xd569('0x19')](function(_0x21865f){logger[_0xd569('0x16')](_0xd569('0x11'),_0x1fb4a9,_0x21865f);_0x5a2f8f(_0x21865f);});});}
\ No newline at end of file
+var _0x8603=['localhost','socket.io-emitter','./userNotification.socket','register','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x5a53f8,_0x4cef4b){var _0x39b806=function(_0x350c92){while(--_0x350c92){_0x5a53f8['push'](_0x5a53f8['shift']());}};_0x39b806(++_0x4cef4b);}(_0x8603,0x1e7));var _0x3860=function(_0x394904,_0x53bbf0){_0x394904=_0x394904-0x0;var _0x3593b8=_0x8603[_0x394904];return _0x3593b8;};'use strict';var _=require(_0x3860('0x0'));var util=require(_0x3860('0x1'));var moment=require('moment');var BPromise=require(_0x3860('0x2'));var rs=require(_0x3860('0x3'));var fs=require('fs');var Redis=require(_0x3860('0x4'));var db=require(_0x3860('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3860('0x6'))(_0x3860('0x7'));var config=require(_0x3860('0x8'));var jayson=require(_0x3860('0x9'));var client=jayson[_0x3860('0xa')][_0x3860('0xb')]({'port':0x232a});config[_0x3860('0xc')]=_['defaults'](config[_0x3860('0xc')],{'host':_0x3860('0xd'),'port':0x18eb});var socket=require(_0x3860('0xe'))(new Redis(config['redis']));require(_0x3860('0xf'))[_0x3860('0x10')](socket);function respondWithRpcPromise(_0x7d6d9b,_0x32cc98,_0x5c9f30){return new BPromise(function(_0x4ed9a0,_0x3a1625){return client['request'](_0x7d6d9b,_0x5c9f30)[_0x3860('0x11')](function(_0x1ca180){logger[_0x3860('0x12')](_0x3860('0x13'),_0x32cc98,_0x3860('0x14'));logger[_0x3860('0x15')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x32cc98,_0x3860('0x14'),JSON['stringify'](_0x1ca180));if(_0x1ca180[_0x3860('0x16')]){if(_0x1ca180[_0x3860('0x16')][_0x3860('0x17')]===0x1f4){logger[_0x3860('0x16')](_0x3860('0x13'),_0x32cc98,_0x1ca180['error']['message']);return _0x3a1625(_0x1ca180[_0x3860('0x16')][_0x3860('0x18')]);}logger[_0x3860('0x16')](_0x3860('0x13'),_0x32cc98,_0x1ca180[_0x3860('0x16')][_0x3860('0x18')]);return _0x4ed9a0(_0x1ca180[_0x3860('0x16')][_0x3860('0x18')]);}else{logger['info']('UserNotification,\x20%s,\x20%s',_0x32cc98,_0x3860('0x14'));_0x4ed9a0(_0x1ca180['result'][_0x3860('0x18')]);}})['catch'](function(_0x58408c){logger['error'](_0x3860('0x13'),_0x32cc98,_0x58408c);_0x3a1625(_0x58408c);});});}
\ No newline at end of file
index 13fe97f..74f137d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd702=['save','remove','update','emit','register','userNotification:','./userNotification.events'];(function(_0x325ef4,_0x17d45b){var _0x154d55=function(_0x6c90ab){while(--_0x6c90ab){_0x325ef4['push'](_0x325ef4['shift']());}};_0x154d55(++_0x17d45b);}(_0xd702,0x117));var _0x2d70=function(_0x5b3578,_0x221eb5){_0x5b3578=_0x5b3578-0x0;var _0x5dfc75=_0xd702[_0x5b3578];return _0x5dfc75;};'use strict';var UserNotificationEvents=require(_0x2d70('0x0'));var events=[_0x2d70('0x1'),_0x2d70('0x2'),_0x2d70('0x3')];function createListener(_0x21387a,_0x249578){return function(_0x49b62b){_0x249578[_0x2d70('0x4')](_0x21387a,_0x49b62b);};}function removeListener(_0x41c93d,_0x2477a0){return function(){UserNotificationEvents['removeListener'](_0x41c93d,_0x2477a0);};}exports[_0x2d70('0x5')]=function(_0x4d65ea){for(var _0x34a6bb=0x0,_0xd71d99=events['length'];_0x34a6bb<_0xd71d99;_0x34a6bb++){var _0x28c54c=events[_0x34a6bb];var _0x2d7455=createListener(_0x2d70('0x6')+_0x28c54c,_0x4d65ea);UserNotificationEvents['on'](_0x28c54c,_0x2d7455);}};
\ No newline at end of file
+var _0x62fd=['userNotification:','./userNotification.events','remove','emit','register','length'];(function(_0x1f29fb,_0x5ccfd4){var _0x3d47aa=function(_0x3af184){while(--_0x3af184){_0x1f29fb['push'](_0x1f29fb['shift']());}};_0x3d47aa(++_0x5ccfd4);}(_0x62fd,0x14b));var _0xd62f=function(_0x593204,_0x35b919){_0x593204=_0x593204-0x0;var _0xe60348=_0x62fd[_0x593204];return _0xe60348;};'use strict';var UserNotificationEvents=require(_0xd62f('0x0'));var events=['save',_0xd62f('0x1'),'update'];function createListener(_0x6278a5,_0x4988f9){return function(_0x26b931){_0x4988f9[_0xd62f('0x2')](_0x6278a5,_0x26b931);};}function removeListener(_0x1dd074,_0x32eae7){return function(){UserNotificationEvents['removeListener'](_0x1dd074,_0x32eae7);};}exports[_0xd62f('0x3')]=function(_0x39570e){for(var _0x28e85c=0x0,_0x34fa02=events[_0xd62f('0x4')];_0x28e85c<_0x34fa02;_0x28e85c++){var _0x3f396e=events[_0x28e85c];var _0x29f44f=createListener(_0xd62f('0x5')+_0x3f396e,_0x39570e);UserNotificationEvents['on'](_0x3f396e,_0x29f44f);}};
\ No newline at end of file
index a7cff24..bd4408d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x77cb04,_0x126c41){var _0x3638c6=function(_0x528ffa){while(--_0x528ffa){_0x77cb04['push'](_0x77cb04['shift']());}};_0x3638c6(++_0x126c41);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5e1b6f,_0x31fb40){var _0x5006f5=function(_0x47632a){while(--_0x47632a){_0x5e1b6f['push'](_0x5e1b6f['shift']());}};_0x5006f5(++_0x31fb40);}(_0x70e0,0x17b));var _0x070e=function(_0x29c166,_0x38d2da){_0x29c166=_0x29c166-0x0;var _0x5583d9=_0x70e0[_0x29c166];return _0x5583d9;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index bd9e538..54a1621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeccc=['exports','sequelize'];(function(_0x32ce8e,_0xe1b31f){var _0x2af5ad=function(_0xfd60ea){while(--_0xfd60ea){_0x32ce8e['push'](_0x32ce8e['shift']());}};_0x2af5ad(++_0xe1b31f);}(_0xeccc,0x1a1));var _0xcecc=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0xeccc[_0x39e84d];return _0x1991bc;};'use strict';var Sequelize=require(_0xcecc('0x0'));module[_0xcecc('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb80c=['sequelize','exports','INTEGER'];(function(_0x507008,_0x2d4583){var _0x2a4305=function(_0x48bcf5){while(--_0x48bcf5){_0x507008['push'](_0x507008['shift']());}};_0x2a4305(++_0x2d4583);}(_0xb80c,0x147));var _0xcb80=function(_0x2513fd,_0x21811f){_0x2513fd=_0x2513fd-0x0;var _0x4dfbee=_0xb80c[_0x2513fd];return _0x4dfbee;};'use strict';var Sequelize=require(_0xcb80('0x0'));module[_0xcb80('0x1')]={'penalty':{'type':Sequelize[_0xcb80('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 7d678d5..b18530d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec12=['define','UserOpenchannelQueue','lodash','util','api','bluebird','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0xea3421,_0x1aa2d7){var _0x2768e0=function(_0x581efe){while(--_0x581efe){_0xea3421['push'](_0xea3421['shift']());}};_0x2768e0(++_0x1aa2d7);}(_0xec12,0x1f1));var _0x2ec1=function(_0x306726,_0x32f5c5){_0x306726=_0x306726-0x0;var _0x105e1c=_0xec12[_0x306726];return _0x105e1c;};'use strict';var _=require(_0x2ec1('0x0'));var util=require(_0x2ec1('0x1'));var logger=require('../../config/logger')(_0x2ec1('0x2'));var moment=require('moment');var BPromise=require(_0x2ec1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ec1('0x4'));var rimraf=require(_0x2ec1('0x5'));var config=require(_0x2ec1('0x6'));var attributes=require(_0x2ec1('0x7'));module[_0x2ec1('0x8')]=function(_0xd2c56f,_0x1788b7){return _0xd2c56f[_0x2ec1('0x9')](_0x2ec1('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc76=['UserOpenchannelQueue','user_has_openchannel_queues','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xdc76,0x1be));var _0x6dc7=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdc76[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0x6dc7('0x0'));var logger=require(_0x6dc7('0x1'))(_0x6dc7('0x2'));var moment=require('moment');var BPromise=require(_0x6dc7('0x3'));var rp=require(_0x6dc7('0x4'));var fs=require('fs');var path=require(_0x6dc7('0x5'));var rimraf=require(_0x6dc7('0x6'));var config=require(_0x6dc7('0x7'));var attributes=require(_0x6dc7('0x8'));module[_0x6dc7('0x9')]=function(_0x16de08,_0x29a4bd){return _0x16de08['define'](_0x6dc7('0xa'),attributes,{'tableName':_0x6dc7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c3a6b7e..cfffedd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75dc=['UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x4f776e,_0x6b5b8f){var _0x4ba9dc=function(_0x57b88e){while(--_0x57b88e){_0x4f776e['push'](_0x4f776e['shift']());}};_0x4ba9dc(++_0x6b5b8f);}(_0x75dc,0x149));var _0xc75d=function(_0x8b9e62,_0x173b44){_0x8b9e62=_0x8b9e62-0x0;var _0x31a9a0=_0x75dc[_0x8b9e62];return _0x31a9a0;};'use strict';var _=require(_0xc75d('0x0'));var util=require(_0xc75d('0x1'));var moment=require(_0xc75d('0x2'));var BPromise=require('bluebird');var rs=require(_0xc75d('0x3'));var fs=require('fs');var Redis=require(_0xc75d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc75d('0x5'));var logger=require(_0xc75d('0x6'))(_0xc75d('0x7'));var config=require(_0xc75d('0x8'));var jayson=require(_0xc75d('0x9'));var client=jayson[_0xc75d('0xa')][_0xc75d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1442f8,_0x2274eb,_0x5dc6ba){return new BPromise(function(_0x55a44b,_0xcb4db7){return client[_0xc75d('0xc')](_0x1442f8,_0x5dc6ba)[_0xc75d('0xd')](function(_0x35d1df){logger['info'](_0xc75d('0xe'),_0x2274eb,_0xc75d('0xf'));logger['debug'](_0xc75d('0x10'),_0x2274eb,_0xc75d('0xf'),JSON[_0xc75d('0x11')](_0x35d1df));if(_0x35d1df[_0xc75d('0x12')]){if(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x13')]===0x1f4){logger['error'](_0xc75d('0xe'),_0x2274eb,_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);return _0xcb4db7(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);}logger['error'](_0xc75d('0xe'),_0x2274eb,_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);return _0x55a44b(_0x35d1df[_0xc75d('0x12')][_0xc75d('0x14')]);}else{logger['info'](_0xc75d('0xe'),_0x2274eb,_0xc75d('0xf'));_0x55a44b(_0x35d1df[_0xc75d('0x15')]['message']);}})[_0xc75d('0x16')](function(_0x488210){logger['error'](_0xc75d('0xe'),_0x2274eb,_0x488210);_0xcb4db7(_0x488210);});});}
\ No newline at end of file
+var _0x036b=['UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0xf104db,_0x3bb494){var _0xab56c5=function(_0x53083c){while(--_0x53083c){_0xf104db['push'](_0xf104db['shift']());}};_0xab56c5(++_0x3bb494);}(_0x036b,0x129));var _0xb036=function(_0x4ea1f2,_0x2ac883){_0x4ea1f2=_0x4ea1f2-0x0;var _0x4d8688=_0x036b[_0x4ea1f2];return _0x4d8688;};'use strict';var _=require(_0xb036('0x0'));var util=require(_0xb036('0x1'));var moment=require(_0xb036('0x2'));var BPromise=require(_0xb036('0x3'));var rs=require(_0xb036('0x4'));var fs=require('fs');var Redis=require(_0xb036('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb036('0x6'));var logger=require(_0xb036('0x7'))(_0xb036('0x8'));var config=require(_0xb036('0x9'));var jayson=require(_0xb036('0xa'));var client=jayson[_0xb036('0xb')][_0xb036('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x326b87,_0x52516e,_0x311741){return new BPromise(function(_0x414191,_0x34e0da){return client[_0xb036('0xd')](_0x326b87,_0x311741)['then'](function(_0x5ccab8){logger[_0xb036('0xe')](_0xb036('0xf'),_0x52516e,_0xb036('0x10'));logger[_0xb036('0x11')](_0xb036('0x12'),_0x52516e,_0xb036('0x10'),JSON[_0xb036('0x13')](_0x5ccab8));if(_0x5ccab8[_0xb036('0x14')]){if(_0x5ccab8[_0xb036('0x14')][_0xb036('0x15')]===0x1f4){logger[_0xb036('0x14')](_0xb036('0xf'),_0x52516e,_0x5ccab8[_0xb036('0x14')][_0xb036('0x16')]);return _0x34e0da(_0x5ccab8[_0xb036('0x14')][_0xb036('0x16')]);}logger[_0xb036('0x14')](_0xb036('0xf'),_0x52516e,_0x5ccab8[_0xb036('0x14')][_0xb036('0x16')]);return _0x414191(_0x5ccab8[_0xb036('0x14')][_0xb036('0x16')]);}else{logger[_0xb036('0xe')](_0xb036('0xf'),_0x52516e,_0xb036('0x10'));_0x414191(_0x5ccab8[_0xb036('0x17')]['message']);}})['catch'](function(_0x7ce364){logger[_0xb036('0x14')](_0xb036('0xf'),_0x52516e,_0x7ce364);_0x34e0da(_0x7ce364);});});}
\ No newline at end of file
index 4ae4539..4ec704a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a12=['clone','/:id/sections','/:id/resources','put','update','destroy','removeResources','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/:id','show','getSections','getResources','post','create','/:id/clone'];(function(_0x47049a,_0x1fee6b){var _0x2ce01d=function(_0x581818){while(--_0x581818){_0x47049a['push'](_0x47049a['shift']());}};_0x2ce01d(++_0x1fee6b);}(_0x4a12,0xa4));var _0x24a1=function(_0x59887e,_0x31d750){_0x59887e=_0x59887e-0x0;var _0x1d3936=_0x4a12[_0x59887e];return _0x1d3936;};'use strict';var multer=require(_0x24a1('0x0'));var util=require(_0x24a1('0x1'));var path=require('path');var timeout=require(_0x24a1('0x2'));var express=require(_0x24a1('0x3'));var router=express[_0x24a1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x24a1('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x24a1('0x6'));var controller=require(_0x24a1('0x7'));router[_0x24a1('0x8')]('/',auth[_0x24a1('0x9')](),controller[_0x24a1('0xa')]);router[_0x24a1('0x8')]('/describe',auth[_0x24a1('0x9')](),controller['describe']);router[_0x24a1('0x8')](_0x24a1('0xb'),auth['isAuthenticated'](),controller[_0x24a1('0xc')]);router[_0x24a1('0x8')]('/:id/sections',auth[_0x24a1('0x9')](),controller[_0x24a1('0xd')]);router[_0x24a1('0x8')]('/:id/resources',auth[_0x24a1('0x9')](),controller[_0x24a1('0xe')]);router[_0x24a1('0xf')]('/',auth['isAuthenticated'](),controller[_0x24a1('0x10')]);router[_0x24a1('0xf')](_0x24a1('0x11'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x12')]);router[_0x24a1('0xf')](_0x24a1('0x13'),auth['isAuthenticated'](),controller['addSections']);router[_0x24a1('0xf')](_0x24a1('0x14'),auth['isAuthenticated'](),controller['addResources']);router[_0x24a1('0x15')](_0x24a1('0xb'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x16')]);router['delete'](_0x24a1('0xb'),auth[_0x24a1('0x9')](),controller[_0x24a1('0x17')]);router['delete'](_0x24a1('0x13'),auth[_0x24a1('0x9')](),controller['removeSections']);router['delete']('/:id/resources',auth['isAuthenticated'](),controller[_0x24a1('0x18')]);module[_0x24a1('0x19')]=router;
\ No newline at end of file
+var _0xc1b3=['index','describe','/:id','show','/:id/sections','getSections','post','clone','addSections','/:id/resources','put','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated'];(function(_0x5156fb,_0x19adc2){var _0x447a72=function(_0xf2dbc8){while(--_0xf2dbc8){_0x5156fb['push'](_0x5156fb['shift']());}};_0x447a72(++_0x19adc2);}(_0xc1b3,0x1d5));var _0x3c1b=function(_0x3b8deb,_0x4a6781){_0x3b8deb=_0x3b8deb-0x0;var _0x508702=_0xc1b3[_0x3b8deb];return _0x508702;};'use strict';var multer=require('multer');var util=require(_0x3c1b('0x0'));var path=require(_0x3c1b('0x1'));var timeout=require(_0x3c1b('0x2'));var express=require(_0x3c1b('0x3'));var router=express[_0x3c1b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3c1b('0x5'));var interaction=require(_0x3c1b('0x6'));var config=require(_0x3c1b('0x7'));var controller=require(_0x3c1b('0x8'));router[_0x3c1b('0x9')]('/',auth[_0x3c1b('0xa')](),controller[_0x3c1b('0xb')]);router[_0x3c1b('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x3c1b('0xc')]);router[_0x3c1b('0x9')](_0x3c1b('0xd'),auth[_0x3c1b('0xa')](),controller[_0x3c1b('0xe')]);router[_0x3c1b('0x9')](_0x3c1b('0xf'),auth[_0x3c1b('0xa')](),controller[_0x3c1b('0x10')]);router[_0x3c1b('0x9')]('/:id/resources',auth[_0x3c1b('0xa')](),controller['getResources']);router[_0x3c1b('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/clone',auth[_0x3c1b('0xa')](),controller[_0x3c1b('0x12')]);router['post'](_0x3c1b('0xf'),auth['isAuthenticated'](),controller[_0x3c1b('0x13')]);router[_0x3c1b('0x11')](_0x3c1b('0x14'),auth[_0x3c1b('0xa')](),controller['addResources']);router[_0x3c1b('0x15')]('/:id',auth[_0x3c1b('0xa')](),controller['update']);router['delete'](_0x3c1b('0xd'),auth[_0x3c1b('0xa')](),controller['destroy']);router[_0x3c1b('0x16')](_0x3c1b('0xf'),auth[_0x3c1b('0xa')](),controller['removeSections']);router['delete'](_0x3c1b('0x14'),auth['isAuthenticated'](),controller['removeResources']);module[_0x3c1b('0x17')]=router;
\ No newline at end of file
index e27254c..50afe30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b0e=['split','BOOLEAN','sequelize','exports','STRING','name','crudPermissions','join','getDataValue'];(function(_0x4de816,_0x523df4){var _0x4bae3b=function(_0x3e7d74){while(--_0x3e7d74){_0x4de816['push'](_0x4de816['shift']());}};_0x4bae3b(++_0x523df4);}(_0x3b0e,0xec));var _0xe3b0=function(_0xb12e19,_0xd0bcc1){_0xb12e19=_0xb12e19-0x0;var _0xd166ef=_0x3b0e[_0xb12e19];return _0xd166ef;};'use strict';var Sequelize=require(_0xe3b0('0x0'));module[_0xe3b0('0x1')]={'name':{'type':Sequelize[_0xe3b0('0x2')],'allowNull':![],'unique':_0xe3b0('0x3')},'crudPermissions':{'type':Sequelize[_0xe3b0('0x2')],'set':function(_0x55968d){this['setDataValue'](_0xe3b0('0x4'),_0x55968d?_0x55968d[_0xe3b0('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xe3b0('0x4'))?this[_0xe3b0('0x6')](_0xe3b0('0x4'))[_0xe3b0('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xe3b0('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe3b0('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xd1bd=['split','BOOLEAN','sequelize','exports','STRING','setDataValue','crudPermissions','getDataValue'];(function(_0x48215e,_0x482a27){var _0x2467ea=function(_0x49c2c5){while(--_0x49c2c5){_0x48215e['push'](_0x48215e['shift']());}};_0x2467ea(++_0x482a27);}(_0xd1bd,0x16a));var _0xdd1b=function(_0x34e716,_0x480ae1){_0x34e716=_0x34e716-0x0;var _0x303854=_0xd1bd[_0x34e716];return _0x303854;};'use strict';var Sequelize=require(_0xdd1b('0x0'));module[_0xdd1b('0x1')]={'name':{'type':Sequelize[_0xdd1b('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xdd1b('0x2')],'set':function(_0x4efa30){this[_0xdd1b('0x3')](_0xdd1b('0x4'),_0x4efa30?_0x4efa30['join'](''):[]);},'get':function(){return this['getDataValue'](_0xdd1b('0x4'))?this[_0xdd1b('0x5')](_0xdd1b('0x4'))[_0xdd1b('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xdd1b('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xdd1b('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xdd1b('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xdd1b('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xdd1b('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 4e1b9f7..c63323b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa35e=['clone','get','omit','createdAt','crudPermissions','updatedAt','sequelize','transaction','UserProfileSection','findAll','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','destroy','describe','each','push','removeSections','ids','getSections','includes','isEmpty','subsections','enabled','findOne','Dashboard','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','filter','where','type','VIRTUAL','options','includeAll','rows','catch','show','params','fields','include','merge','find','create','body'];(function(_0x536117,_0x17c694){var _0x487cf4=function(_0x4e3771){while(--_0x4e3771){_0x536117['push'](_0x536117['shift']());}};_0x487cf4(++_0x17c694);}(_0xa35e,0x111));var _0xea35=function(_0x44d419,_0x5ea38c){_0x44d419=_0x44d419-0x0;var _0x16133c=_0xa35e[_0x44d419];return _0x16133c;};'use strict';var emlformat=require(_0xea35('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xea35('0x1'));var jsonpatch=require(_0xea35('0x2'));var rp=require(_0xea35('0x3'));var moment=require(_0xea35('0x4'));var BPromise=require(_0xea35('0x5'));var Mustache=require(_0xea35('0x6'));var util=require(_0xea35('0x7'));var path=require(_0xea35('0x8'));var sox=require(_0xea35('0x9'));var csv=require(_0xea35('0xa'));var ejs=require(_0xea35('0xb'));var fs=require('fs');var fs_extra=require(_0xea35('0xc'));var _=require(_0xea35('0xd'));var squel=require(_0xea35('0xe'));var crypto=require('crypto');var jsforce=require(_0xea35('0xf'));var deskjs=require(_0xea35('0x10'));var toCsv=require(_0xea35('0xa'));var querystring=require('querystring');var Papa=require(_0xea35('0x11'));var Redis=require(_0xea35('0x12'));var authService=require(_0xea35('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xea35('0x14'));var hardwareService=require(_0xea35('0x15'));var logger=require(_0xea35('0x16'))(_0xea35('0x17'));var utils=require(_0xea35('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xea35('0x19'));var db=require(_0xea35('0x1a'))['db'];config[_0xea35('0x1b')]=_['defaults'](config['redis'],{'host':_0xea35('0x1c'),'port':0x18eb});var socket=require(_0xea35('0x1d'))(new Redis(config[_0xea35('0x1b')]));require(_0xea35('0x1e'))['register'](socket);function respondWithStatusCode(_0x2c400a,_0x5d27f4){_0x5d27f4=_0x5d27f4||0xcc;return function(_0x11f9ba){if(_0x11f9ba){return _0x2c400a[_0xea35('0x1f')](_0x5d27f4);}return _0x2c400a['status'](_0x5d27f4)[_0xea35('0x20')]();};}function respondWithResult(_0x1a99af,_0x269508){_0x269508=_0x269508||0xc8;return function(_0x3ab8d4){if(_0x3ab8d4){return _0x1a99af[_0xea35('0x21')](_0x269508)[_0xea35('0x22')](_0x3ab8d4);}};}function respondWithFilteredResult(_0x2b4322,_0x3c6a8c){return function(_0x3b7336){if(_0x3b7336){var _0x2fd286=typeof _0x3c6a8c['offset']===_0xea35('0x23')&&typeof _0x3c6a8c[_0xea35('0x24')]===_0xea35('0x23');var _0x2d32e2=_0x3b7336[_0xea35('0x25')];var _0x5a5531=_0x2fd286?0x0:_0x3c6a8c[_0xea35('0x26')];var _0x5b5628=_0x2fd286?_0x3b7336[_0xea35('0x25')]:_0x3c6a8c[_0xea35('0x26')]+_0x3c6a8c['limit'];var _0x123166;if(_0x5b5628>=_0x2d32e2){_0x5b5628=_0x2d32e2;_0x123166=0xc8;}else{_0x123166=0xce;}_0x2b4322[_0xea35('0x21')](_0x123166);return _0x2b4322['set'](_0xea35('0x27'),_0x5a5531+'-'+_0x5b5628+'/'+_0x2d32e2)[_0xea35('0x22')](_0x3b7336);}return null;};}function patchUpdates(_0x3fa0c5){return function(_0xab84c){try{jsonpatch[_0xea35('0x28')](_0xab84c,_0x3fa0c5,!![]);}catch(_0x50cf87){return BPromise[_0xea35('0x29')](_0x50cf87);}return _0xab84c[_0xea35('0x2a')]();};}function saveUpdates(_0x342749,_0x416d86){return function(_0x202be9){if(_0x202be9){return _0x202be9[_0xea35('0x2b')](_0x342749)[_0xea35('0x2c')](function(_0x49edd3){return _0x49edd3;});}return null;};}function removeEntity(_0x5e6443,_0x53510d){return function(_0x1915cf){if(_0x1915cf){return _0x1915cf['destroy']()['then'](function(){_0x5e6443[_0xea35('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x454034,_0x24b56c){return function(_0x119da7){if(!_0x119da7){_0x454034[_0xea35('0x1f')](0x194);}return _0x119da7;};}function handleError(_0x5a54de,_0x21406c){_0x21406c=_0x21406c||0x1f4;return function(_0x261a88){logger[_0xea35('0x2d')](_0x261a88[_0xea35('0x2e')]);if(_0x261a88['name']){delete _0x261a88[_0xea35('0x2f')];}_0x5a54de['status'](_0x21406c)[_0xea35('0x30')](_0x261a88);};}exports[_0xea35('0x31')]=function(_0x40baa2,_0x2ff076){var _0x7c1a19={},_0x357eb8={},_0x32fe5f={'count':0x0,'rows':[]};var _0x2e7b4d=_['map'](db[_0xea35('0x32')][_0xea35('0x33')],function(_0x4d1947){return{'name':_0x4d1947[_0xea35('0x34')],'type':_0x4d1947['type'][_0xea35('0x35')]};});_0x357eb8[_0xea35('0x36')]=_[_0xea35('0x37')](_0x2e7b4d,_0xea35('0x2f'));_0x357eb8[_0xea35('0x38')]=_[_0xea35('0x39')](_0x40baa2[_0xea35('0x38')]);_0x357eb8['filters']=_['intersection'](_0x357eb8[_0xea35('0x36')],_0x357eb8[_0xea35('0x38')]);_0x7c1a19['attributes']=_[_0xea35('0x3a')](_0x357eb8[_0xea35('0x36')],qs['fields'](_0x40baa2[_0xea35('0x38')]['fields']));_0x7c1a19[_0xea35('0x3b')]=_0x7c1a19[_0xea35('0x3b')][_0xea35('0x3c')]?_0x7c1a19[_0xea35('0x3b')]:_0x357eb8[_0xea35('0x36')];if(!_0x40baa2[_0xea35('0x38')][_0xea35('0x3d')](_0xea35('0x3e'))){_0x7c1a19[_0xea35('0x24')]=qs[_0xea35('0x24')](_0x40baa2[_0xea35('0x38')]['limit']);_0x7c1a19['offset']=qs[_0xea35('0x26')](_0x40baa2[_0xea35('0x38')]['offset']);}_0x7c1a19['order']=qs[_0xea35('0x3f')](_0x40baa2[_0xea35('0x38')][_0xea35('0x3f')]);_0x7c1a19['where']=qs[_0xea35('0x40')](_['pick'](_0x40baa2['query'],_0x357eb8[_0xea35('0x40')]),_0x2e7b4d);if(_0x40baa2[_0xea35('0x38')][_0xea35('0x41')]){_0x7c1a19['where']=_['merge'](_0x7c1a19[_0xea35('0x42')],{'$or':_[_0xea35('0x37')](_0x2e7b4d,function(_0x5bf0c9){if(_0x5bf0c9[_0xea35('0x43')]!==_0xea35('0x44')){var _0x23d95a={};_0x23d95a[_0x5bf0c9[_0xea35('0x2f')]]={'$like':'%'+_0x40baa2[_0xea35('0x38')][_0xea35('0x41')]+'%'};return _0x23d95a;}})});}_0x7c1a19=_['merge']({},_0x7c1a19,_0x40baa2[_0xea35('0x45')]);var _0x444f47={'where':_0x7c1a19['where']};return db[_0xea35('0x32')][_0xea35('0x25')](_0x444f47)[_0xea35('0x2c')](function(_0x73f98e){_0x32fe5f[_0xea35('0x25')]=_0x73f98e;if(_0x40baa2[_0xea35('0x38')][_0xea35('0x46')]){_0x7c1a19['include']=[{'all':!![]}];}return db[_0xea35('0x32')]['findAll'](_0x7c1a19);})['then'](function(_0x5d6cf7){_0x32fe5f[_0xea35('0x47')]=_0x5d6cf7;return _0x32fe5f;})[_0xea35('0x2c')](respondWithFilteredResult(_0x2ff076,_0x7c1a19))[_0xea35('0x48')](handleError(_0x2ff076,null));};exports[_0xea35('0x49')]=function(_0x3583e5,_0x4933bc){var _0x38179d={'raw':![],'where':{'id':_0x3583e5[_0xea35('0x4a')]['id']}},_0x2f3159={};_0x2f3159[_0xea35('0x36')]=_['keys'](db[_0xea35('0x32')][_0xea35('0x33')]);_0x2f3159[_0xea35('0x38')]=_['keys'](_0x3583e5[_0xea35('0x38')]);_0x2f3159[_0xea35('0x40')]=_[_0xea35('0x3a')](_0x2f3159[_0xea35('0x36')],_0x2f3159['query']);_0x38179d['attributes']=_[_0xea35('0x3a')](_0x2f3159['model'],qs['fields'](_0x3583e5[_0xea35('0x38')][_0xea35('0x4b')]));_0x38179d[_0xea35('0x3b')]=_0x38179d[_0xea35('0x3b')][_0xea35('0x3c')]?_0x38179d['attributes']:_0x2f3159[_0xea35('0x36')];if(_0x3583e5[_0xea35('0x38')][_0xea35('0x46')]){_0x38179d[_0xea35('0x4c')]=[{'all':!![]}];}_0x38179d=_[_0xea35('0x4d')]({},_0x38179d,_0x3583e5['options']);return db[_0xea35('0x32')][_0xea35('0x4e')](_0x38179d)['then'](handleEntityNotFound(_0x4933bc,null))[_0xea35('0x2c')](respondWithResult(_0x4933bc,null))[_0xea35('0x48')](handleError(_0x4933bc,null));};exports[_0xea35('0x4f')]=function(_0x46172e,_0x53e744){return db[_0xea35('0x32')]['create'](_0x46172e[_0xea35('0x50')],{})['then'](respondWithResult(_0x53e744,0xc9))[_0xea35('0x48')](handleError(_0x53e744,null));};exports[_0xea35('0x51')]=function(_0xdb049b,_0x430899){var _0x116f53={'where':{'id':_0xdb049b['params']['id']}},_0x2eb350={};_0x2eb350[_0xea35('0x36')]=_['keys'](db['UserProfile'][_0xea35('0x33')]);_0x116f53[_0xea35('0x3b')]=_[_0xea35('0x3a')](_0x2eb350[_0xea35('0x36')],qs[_0xea35('0x4b')](_0xdb049b[_0xea35('0x38')][_0xea35('0x4b')]));_0x116f53['attributes']=_0x116f53[_0xea35('0x3b')][_0xea35('0x3c')]?_0x116f53[_0xea35('0x3b')]:_0x2eb350['model'];if(_0xdb049b['query']['includeAll']){_0x116f53[_0xea35('0x4c')]=[{'all':!![]}];}_0x116f53=_[_0xea35('0x4d')]({},_0x116f53,_0xdb049b[_0xea35('0x45')]);return db[_0xea35('0x32')][_0xea35('0x4e')](_0x116f53)[_0xea35('0x2c')](handleEntityNotFound(_0x430899,null))['then'](function(_0x440304){if(_0x440304){var _0xf5a298=_0x440304[_0xea35('0x52')]({'plain':!![]});_0xf5a298=qs[_0xea35('0x53')](_0xf5a298,['id',_0xea35('0x54'),'updatedAt',_0xea35('0x55')]);_0xdb049b[_0xea35('0x50')]=_[_0xea35('0x53')](_0xdb049b[_0xea35('0x50')],['id','createdAt',_0xea35('0x56')]);return db[_0xea35('0x57')][_0xea35('0x58')](function(_0x559ee2){return db[_0xea35('0x32')]['create'](_[_0xea35('0x4d')](_0xf5a298,_0xdb049b[_0xea35('0x50')]),{'include':_0xdb049b[_0xea35('0x38')][_0xea35('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x559ee2})[_0xea35('0x2c')](function(_0x3ae0f6){var _0x3789e2=_0x3ae0f6[_0xea35('0x52')]({'plain':!![]});return db[_0xea35('0x59')][_0xea35('0x5a')]({'where':{'userProfileId':_0xdb049b[_0xea35('0x4a')]['id']},'raw':!![]})['then'](function(_0x44f676){if(_0x44f676){return BPromise['each'](_0x44f676,function(_0xad5ca8){return new BPromise(function(_0x25248f,_0x3f7eb7){if(_0xad5ca8[_0xea35('0x5b')]===null||_0xad5ca8[_0xea35('0x5b')]===0x1)_0x25248f(null);return db[_0xea35('0x5c')][_0xea35('0x5a')]({'where':{'sectionId':_0xad5ca8['id']},'raw':!![]})[_0xea35('0x2c')](function(_0x50b131){var _0x1b3a2a=_[_0xea35('0x37')](_0x50b131,function(_0x2306d4){return qs['omit'](_0x2306d4,['id','createdAt',_0xea35('0x56'),_0xea35('0x5d')]);});_0x25248f(_0x1b3a2a);})[_0xea35('0x48')](function(_0xba9db9){_0x3f7eb7(_0xba9db9);});})['then'](function(_0x17c456){var _0x1efeb8=qs[_0xea35('0x53')](_0xad5ca8,['id','createdAt',_0xea35('0x56')]);_0x1efeb8[_0xea35('0x5e')]=_0x3789e2['id'];if(_0x17c456)_0x1efeb8[_0xea35('0x5f')]=_0x17c456;return _0x1efeb8;})[_0xea35('0x2c')](function(_0x3eacd6){return db['UserProfileSection'][_0xea35('0x4f')](_0x3eacd6,{'include':[{'model':db[_0xea35('0x5c')],'as':_0xea35('0x5f')}],'raw':!![],'transaction':_0x559ee2});});})['then'](function(){return _0x3789e2;});}});});});}})[_0xea35('0x2c')](respondWithResult(_0x430899,0xc9))[_0xea35('0x48')](handleError(_0x430899,null));};exports[_0xea35('0x2b')]=function(_0x3aa7f6,_0x4b3745){if(_0x3aa7f6['body']['id']){delete _0x3aa7f6[_0xea35('0x50')]['id'];}return db[_0xea35('0x32')]['find']({'where':{'id':_0x3aa7f6[_0xea35('0x4a')]['id']}})[_0xea35('0x2c')](handleEntityNotFound(_0x4b3745,null))[_0xea35('0x2c')](saveUpdates(_0x3aa7f6[_0xea35('0x50')],null))[_0xea35('0x2c')](respondWithResult(_0x4b3745,null))['catch'](handleError(_0x4b3745,null));};exports[_0xea35('0x60')]=function(_0x5b1eb5,_0x26e974){return db['UserProfile']['find']({'where':{'id':_0x5b1eb5['params']['id']}})['then'](handleEntityNotFound(_0x26e974,null))[_0xea35('0x2c')](removeEntity(_0x26e974,null))[_0xea35('0x48')](handleError(_0x26e974,null));};exports[_0xea35('0x61')]=function(_0xfbe58b,_0x926941){return db[_0xea35('0x32')][_0xea35('0x61')]()[_0xea35('0x2c')](respondWithResult(_0x926941,null))[_0xea35('0x48')](handleError(_0x926941,null));};exports['addSections']=function(_0x17bae7,_0x12acff){var _0x2ca133=_0x17bae7[_0xea35('0x50')];return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x17bae7[_0xea35('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12acff,null))[_0xea35('0x2c')](function(_0xe60ae7){if(_0xe60ae7){return db[_0xea35('0x57')]['transaction'](function(_0x96b954){return db[_0xea35('0x59')]['destroy']({'where':{'userProfileId':_0x17bae7[_0xea35('0x4a')]['id'],'sectionId':_['map'](_0x2ca133,function(_0x3f217d){return _0x3f217d[_0xea35('0x5d')];})},'transaction':_0x96b954})[_0xea35('0x2c')](function(){var _0x47b208=_['map'](_0x2ca133,function(_0x47b16c){_0x47b16c['userProfileId']=_0x17bae7['params']['id'];return _0x47b16c;});var _0x265159=[];return BPromise[_0xea35('0x62')](_0x47b208,function(_0x1223a2){return db[_0xea35('0x59')]['create'](_0x1223a2,{'include':[{'model':db[_0xea35('0x5c')],'as':_0xea35('0x5f')}],'raw':!![],'transaction':_0x96b954})['then'](function(_0x5a031f){_0x265159[_0xea35('0x63')](_0x5a031f[_0xea35('0x52')]({'plain':!![]}));});})[_0xea35('0x2c')](function(){return _0x265159;});});});}})['then'](function(_0x4e2251){return _0x4e2251;})['then'](respondWithResult(_0x12acff,null))['catch'](handleError(_0x12acff,null));};exports[_0xea35('0x64')]=function(_0x53d536,_0x1c012a){var _0x2108f1;return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x53d536[_0xea35('0x4a')]['id']},'attributes':['id',_0xea35('0x2f')]})['then'](handleEntityNotFound(_0x1c012a,null))[_0xea35('0x2c')](function(_0x125a06){if(_0x125a06){_0x2108f1=_0x125a06;return db['UserProfileSection'][_0xea35('0x60')]({'where':{'userProfileId':_0x53d536[_0xea35('0x4a')]['id'],'sectionId':_0x53d536[_0xea35('0x38')][_0xea35('0x65')]}});}})[_0xea35('0x2c')](function(){return _0x2108f1;})[_0xea35('0x2c')](respondWithStatusCode(_0x1c012a,null))[_0xea35('0x48')](handleError(_0x1c012a,null));};exports[_0xea35('0x66')]=function(_0x11c546,_0x44aa59){var _0x317d40=[];var _0x336587=[];return db[_0xea35('0x59')][_0xea35('0x5a')]({'where':{'userProfileId':_0x11c546['params']['id']},'raw':!![]})[_0xea35('0x2c')](function(_0xd1f8eb){_0x317d40=_['filter'](_0xd1f8eb,function(_0x464340){return _0x464340['enabled']===0x1||_[_0xea35('0x67')]([0x3eb,0x709],_0x464340[_0xea35('0x5d')]);});if(!_[_0xea35('0x68')](_0x317d40)){return _[_0xea35('0x37')](_0x317d40,function(_0x11dad6){return _0x11dad6[_0xea35('0x5d')];});}else{return;}})[_0xea35('0x2c')](function(_0xb386aa){if(_0xb386aa)_0x336587=_0xb386aa;if(_[_0xea35('0x67')](_0x336587,0x64)){var _0xa0df3f=_[_0xea35('0x4e')](_0x317d40,{'sectionId':0x64});return hasDefaultDashboard(_0xa0df3f)['then'](function(_0x2f4cb8){return _[_0xea35('0x37')](_0x317d40,function(_0x29a250){if(_0x29a250[_0xea35('0x5d')]===0x64){_0x29a250[_0xea35('0x69')]=_0x2f4cb8;}return _0x29a250;});});}else{return;}})[_0xea35('0x2c')](function(_0x4132bc){if(_0x4132bc)_0x317d40=_0x4132bc;if(_[_0xea35('0x67')](_0x336587,0x3eb)){var _0x129438=_[_0xea35('0x4e')](_0x317d40,{'sectionId':0x3eb});return getCustomDashboards(_0x129438)[_0xea35('0x2c')](function(_0x1f9352){return _[_0xea35('0x37')](_0x317d40,function(_0x7c07b){if(_0x129438[_0xea35('0x6a')]){if(_0x7c07b[_0xea35('0x5d')]===0x3eb){_0x7c07b[_0xea35('0x69')]=_0x1f9352;}}else{if(_0x7c07b[_0xea35('0x5d')]===0x64){_0x7c07b[_0xea35('0x69')]=_0x1f9352;}}return _0x7c07b;});});}else{return;}})[_0xea35('0x2c')](function(_0x2ee2bc){if(_0x2ee2bc)_0x317d40=_0x2ee2bc;if(_[_0xea35('0x67')](_0x336587,0x709)){var _0x460078=_['find'](_0x317d40,{'sectionId':0x709});return getPlugins(_0x460078)[_0xea35('0x2c')](function(_0x4ed92f){if(_0x460078['enabled']){return _[_0xea35('0x37')](_0x317d40,function(_0xb73a29){if(_0xb73a29['sectionId']===0x709){_0xb73a29[_0xea35('0x69')]=_0x4ed92f;}return _0xb73a29;});}else{var _0x3dd02d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4ed92f};var _0x32c1bd=_[_0xea35('0x37')](_0x317d40);_0x32c1bd['push'](_0x3dd02d);return _0x32c1bd;}});}else{return;}})[_0xea35('0x2c')](function(_0x58953e){if(_0x58953e)_0x317d40=_0x58953e;return _['filter'](_0x317d40,[_0xea35('0x6a'),0x1]);})[_0xea35('0x2c')](respondWithResult(_0x44aa59,null))['catch'](handleError(_0x44aa59,null));};function hasDefaultDashboard(_0x502ced){var _0x796bef=[0x65];return new BPromise(function(_0x16839d,_0x4a1dea){try{if(_0x502ced[_0xea35('0x5b')]){_0x16839d(_0x796bef);}else{return db[_0xea35('0x5c')][_0xea35('0x6b')]({'where':{'sectionId':_0x502ced['id']},'raw':!![]})[_0xea35('0x2c')](function(_0x1378ca){_0x1378ca?_0x16839d(_0x796bef):_0x16839d();});}}catch(_0x2c59e6){_0x4a1dea(_0x2c59e6);}});}function getCustomDashboards(_0x2e3017){var _0x388f96=[];return new BPromise(function(_0x572113,_0xdb9df7){try{if(_0x2e3017[_0xea35('0x5b')]){return db[_0xea35('0x6c')][_0xea35('0x5a')]({'raw':!![]})[_0xea35('0x2c')](function(_0x5154b4){_0x5154b4[_0xea35('0x6d')](function(_0x14e0f9){_0x388f96[_0xea35('0x63')](_0x14e0f9['id']+0x1869f);});_0x572113(_0x388f96);});}else{return db[_0xea35('0x5c')][_0xea35('0x5a')]({'where':{'sectionId':_0x2e3017['id']},'raw':!![]})['then'](function(_0x1c87e6){_0x1c87e6['forEach'](function(_0x14970a){_0x388f96[_0xea35('0x63')](_0x14970a[_0xea35('0x6e')]+0x1869f);});_0x572113(_0x388f96);});}}catch(_0x53609f){_0xdb9df7(_0x53609f);}});}function getPlugins(_0x50e0df){var _0x10b125=[];return new BPromise(function(_0x3a84a9,_0x518543){try{if(_0x50e0df[_0xea35('0x5b')]){return db[_0xea35('0x6f')]['findAll']({'raw':!![]})[_0xea35('0x2c')](function(_0x2d7c71){_0x2d7c71[_0xea35('0x6d')](function(_0x198c98){_0x10b125[_0xea35('0x63')](_0x198c98['id']+0x15b38);});_0x3a84a9(_0x10b125);});}else{return db[_0xea35('0x5c')]['findAll']({'where':{'sectionId':_0x50e0df['id']},'raw':!![]})['then'](function(_0x89b6c4){_0x89b6c4[_0xea35('0x6d')](function(_0xd345c3){_0x10b125[_0xea35('0x63')](_0xd345c3[_0xea35('0x6e')]+0x15b38);});_0x3a84a9(_0x10b125);});}}catch(_0x1661a2){_0x518543(_0x1661a2);}});}exports[_0xea35('0x70')]=function(_0xb06720,_0x2131c6){return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0xb06720['params']['id']}})[_0xea35('0x2c')](handleEntityNotFound(_0x2131c6,null))[_0xea35('0x2c')](function(_0x4a341b){if(_0x4a341b){return db['sequelize'][_0xea35('0x58')](function(_0x141436){return db['UserProfileSection'][_0xea35('0x5a')]({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id']},'attributes':['id'],'raw':!![]})[_0xea35('0x2c')](function(_0xf0dc5){if(_0xf0dc5){return db[_0xea35('0x59')][_0xea35('0x60')]({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id'],'id':_[_0xea35('0x37')](_0xf0dc5,function(_0x5e3d52){return _0x5e3d52['id'];})},'transaction':_0x141436});}})[_0xea35('0x2c')](function(_0x5dbd87){var _0x1b9f8a=_[_0xea35('0x37')](_0xb06720[_0xea35('0x50')],function(_0x17e114){_0x17e114['userProfileId']=_0xb06720[_0xea35('0x4a')]['id'];return _0x17e114;});return db[_0xea35('0x59')][_0xea35('0x71')](_0x1b9f8a,{'raw':!![],'transaction':_0x141436});})[_0xea35('0x2c')](function(_0x3c2e95){var _0x3b2871=_[_0xea35('0x41')](_[_0xea35('0x37')](_0x3c2e95,function(_0xb64843){return _0xb64843[_0xea35('0x52')]({'plain':!![]});}),{'includeAll':![]});if(_0x3b2871){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0xb06720[_0xea35('0x4a')]['id'],'sectionId':_[_0xea35('0x37')](_0x3b2871,function(_0x4fac0e){return _0x4fac0e[_0xea35('0x5d')];})},'attributes':['id',_0xea35('0x5d')],'raw':!![]})['then'](function(_0xcd528a){var _0xc2408a=_[_0xea35('0x37')](_0xb06720[_0xea35('0x50')],function(_0x498bbe){_0x498bbe[_0xea35('0x5e')]=_0xb06720['params']['id'];return _0x498bbe;});return db[_0xea35('0x5c')][_0xea35('0x71')](_0xc2408a,{'raw':!![],'transaction':_0x141436});});}})[_0xea35('0x48')](handleError(_0x2131c6,null));});}})[_0xea35('0x2c')](function(_0x171337){var _0x58187a=_[_0xea35('0x37')](_0x171337,function(_0x5f2710){return _0x5f2710['get']({'plain':!![]});});})[_0xea35('0x2c')](respondWithResult(_0x2131c6,null))[_0xea35('0x48')](handleError(_0x2131c6,null));};exports[_0xea35('0x72')]=function(_0x3724b8,_0x2c7b0e,_0x2c74c9){return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x3724b8[_0xea35('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c7b0e,null))['then'](function(_0x20e56a){if(_0x20e56a){return _0x20e56a['removeResources'](_0x3724b8[_0xea35('0x38')][_0xea35('0x65')]);}})[_0xea35('0x2c')](respondWithStatusCode(_0x2c7b0e,null))[_0xea35('0x48')](handleError(_0x2c7b0e,null));};exports[_0xea35('0x73')]=function(_0x43f3c8,_0x40eaac){var _0x351c74={};if(!_0x43f3c8[_0xea35('0x38')][_0xea35('0x74')])throw new Error('Missing\x20section\x20parameter');if(!_0x43f3c8[_0xea35('0x38')][_0xea35('0x3d')](_0xea35('0x3e'))){_0x351c74[_0xea35('0x24')]=qs['limit'](_0x43f3c8['query'][_0xea35('0x24')]);_0x351c74[_0xea35('0x26')]=qs['offset'](_0x43f3c8[_0xea35('0x38')][_0xea35('0x26')]);}return db[_0xea35('0x32')][_0xea35('0x4e')]({'where':{'id':_0x43f3c8['params']['id']}})[_0xea35('0x2c')](function(_0x11086e){if(!_0x11086e)throw new Error(_0xea35('0x75')+_0x43f3c8['params']['id']);return db[_0xea35('0x32')][_0xea35('0x73')](_0x43f3c8);})[_0xea35('0x2c')](respondWithFilteredResult(_0x40eaac,_0x351c74))[_0xea35('0x48')](handleError(_0x40eaac,null));};
\ No newline at end of file
+var _0x6f3e=['sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','clone','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','get','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','ids','enabled','includes','subsections','push','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','UserProfile','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order'];(function(_0x24edfc,_0xc0d024){var _0x42f13f=function(_0x25dfc4){while(--_0x25dfc4){_0x24edfc['push'](_0x24edfc['shift']());}};_0x42f13f(++_0xc0d024);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f3e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xe6f3('0x0'));var rimraf=require(_0xe6f3('0x1'));var zipdir=require(_0xe6f3('0x2'));var jsonpatch=require(_0xe6f3('0x3'));var rp=require(_0xe6f3('0x4'));var moment=require(_0xe6f3('0x5'));var BPromise=require(_0xe6f3('0x6'));var Mustache=require('mustache');var util=require(_0xe6f3('0x7'));var path=require(_0xe6f3('0x8'));var sox=require('sox');var csv=require(_0xe6f3('0x9'));var ejs=require(_0xe6f3('0xa'));var fs=require('fs');var fs_extra=require(_0xe6f3('0xb'));var _=require('lodash');var squel=require(_0xe6f3('0xc'));var crypto=require(_0xe6f3('0xd'));var jsforce=require(_0xe6f3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe6f3('0x9'));var querystring=require('querystring');var Papa=require(_0xe6f3('0xf'));var Redis=require(_0xe6f3('0x10'));var authService=require(_0xe6f3('0x11'));var qs=require(_0xe6f3('0x12'));var as=require(_0xe6f3('0x13'));var hardwareService=require(_0xe6f3('0x14'));var logger=require('../../config/logger')(_0xe6f3('0x15'));var utils=require('../../config/utils');var config=require(_0xe6f3('0x16'));var licenseUtil=require(_0xe6f3('0x17'));var db=require(_0xe6f3('0x18'))['db'];config[_0xe6f3('0x19')]=_['defaults'](config[_0xe6f3('0x19')],{'host':_0xe6f3('0x1a'),'port':0x18eb});var socket=require(_0xe6f3('0x1b'))(new Redis(config[_0xe6f3('0x19')]));require(_0xe6f3('0x1c'))[_0xe6f3('0x1d')](socket);function respondWithStatusCode(_0x26f4a7,_0x4ab9db){_0x4ab9db=_0x4ab9db||0xcc;return function(_0x44fd99){if(_0x44fd99){return _0x26f4a7[_0xe6f3('0x1e')](_0x4ab9db);}return _0x26f4a7[_0xe6f3('0x1f')](_0x4ab9db)[_0xe6f3('0x20')]();};}function respondWithResult(_0x1706a9,_0x54c573){_0x54c573=_0x54c573||0xc8;return function(_0x547df9){if(_0x547df9){return _0x1706a9[_0xe6f3('0x1f')](_0x54c573)[_0xe6f3('0x21')](_0x547df9);}};}function respondWithFilteredResult(_0x22dcf7,_0x48eb12){return function(_0x39d6be){if(_0x39d6be){var _0x31902a=typeof _0x48eb12[_0xe6f3('0x22')]===_0xe6f3('0x23')&&typeof _0x48eb12[_0xe6f3('0x24')]==='undefined';var _0x537568=_0x39d6be['count'];var _0x42c414=_0x31902a?0x0:_0x48eb12[_0xe6f3('0x22')];var _0xdb1a1f=_0x31902a?_0x39d6be[_0xe6f3('0x25')]:_0x48eb12[_0xe6f3('0x22')]+_0x48eb12[_0xe6f3('0x24')];var _0x47f69b;if(_0xdb1a1f>=_0x537568){_0xdb1a1f=_0x537568;_0x47f69b=0xc8;}else{_0x47f69b=0xce;}_0x22dcf7[_0xe6f3('0x1f')](_0x47f69b);return _0x22dcf7[_0xe6f3('0x26')](_0xe6f3('0x27'),_0x42c414+'-'+_0xdb1a1f+'/'+_0x537568)[_0xe6f3('0x21')](_0x39d6be);}return null;};}function patchUpdates(_0x43c0d5){return function(_0x245d3e){try{jsonpatch[_0xe6f3('0x28')](_0x245d3e,_0x43c0d5,!![]);}catch(_0x4d75d3){return BPromise['reject'](_0x4d75d3);}return _0x245d3e[_0xe6f3('0x29')]();};}function saveUpdates(_0x3989c5,_0x2685e9){return function(_0x2d7d6b){if(_0x2d7d6b){return _0x2d7d6b[_0xe6f3('0x2a')](_0x3989c5)[_0xe6f3('0x2b')](function(_0x5b1a12){return _0x5b1a12;});}return null;};}function removeEntity(_0x4646fa,_0x18dde2){return function(_0x426266){if(_0x426266){return _0x426266[_0xe6f3('0x2c')]()['then'](function(){_0x4646fa['status'](0xcc)[_0xe6f3('0x20')]();});}};}function handleEntityNotFound(_0x3eef65,_0x482cef){return function(_0x5e5f44){if(!_0x5e5f44){_0x3eef65[_0xe6f3('0x1e')](0x194);}return _0x5e5f44;};}function handleError(_0x19691c,_0x37a5a5){_0x37a5a5=_0x37a5a5||0x1f4;return function(_0x4627de){logger[_0xe6f3('0x2d')](_0x4627de[_0xe6f3('0x2e')]);if(_0x4627de[_0xe6f3('0x2f')]){delete _0x4627de['name'];}_0x19691c[_0xe6f3('0x1f')](_0x37a5a5)['send'](_0x4627de);};}exports[_0xe6f3('0x30')]=function(_0x104677,_0x473064){var _0x5c8494={},_0x34ad3c={},_0x5163e0={'count':0x0,'rows':[]};var _0x359c2d=_[_0xe6f3('0x31')](db[_0xe6f3('0x32')][_0xe6f3('0x33')],function(_0x498a16){return{'name':_0x498a16[_0xe6f3('0x34')],'type':_0x498a16[_0xe6f3('0x35')]['key']};});_0x34ad3c[_0xe6f3('0x36')]=_[_0xe6f3('0x31')](_0x359c2d,_0xe6f3('0x2f'));_0x34ad3c[_0xe6f3('0x37')]=_[_0xe6f3('0x38')](_0x104677[_0xe6f3('0x37')]);_0x34ad3c[_0xe6f3('0x39')]=_['intersection'](_0x34ad3c[_0xe6f3('0x36')],_0x34ad3c[_0xe6f3('0x37')]);_0x5c8494[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x34ad3c['model'],qs[_0xe6f3('0x3c')](_0x104677[_0xe6f3('0x37')]['fields']));_0x5c8494['attributes']=_0x5c8494[_0xe6f3('0x3a')][_0xe6f3('0x3d')]?_0x5c8494[_0xe6f3('0x3a')]:_0x34ad3c[_0xe6f3('0x36')];if(!_0x104677['query'][_0xe6f3('0x3e')](_0xe6f3('0x3f'))){_0x5c8494['limit']=qs['limit'](_0x104677[_0xe6f3('0x37')][_0xe6f3('0x24')]);_0x5c8494[_0xe6f3('0x22')]=qs[_0xe6f3('0x22')](_0x104677[_0xe6f3('0x37')]['offset']);}_0x5c8494[_0xe6f3('0x40')]=qs[_0xe6f3('0x41')](_0x104677[_0xe6f3('0x37')][_0xe6f3('0x41')]);_0x5c8494['where']=qs[_0xe6f3('0x39')](_['pick'](_0x104677[_0xe6f3('0x37')],_0x34ad3c[_0xe6f3('0x39')]),_0x359c2d);if(_0x104677[_0xe6f3('0x37')][_0xe6f3('0x42')]){_0x5c8494['where']=_['merge'](_0x5c8494[_0xe6f3('0x43')],{'$or':_[_0xe6f3('0x31')](_0x359c2d,function(_0x30a160){if(_0x30a160[_0xe6f3('0x35')]!==_0xe6f3('0x44')){var _0x51bd3f={};_0x51bd3f[_0x30a160[_0xe6f3('0x2f')]]={'$like':'%'+_0x104677[_0xe6f3('0x37')][_0xe6f3('0x42')]+'%'};return _0x51bd3f;}})});}_0x5c8494=_[_0xe6f3('0x45')]({},_0x5c8494,_0x104677[_0xe6f3('0x46')]);var _0x1badac={'where':_0x5c8494['where']};return db[_0xe6f3('0x32')][_0xe6f3('0x25')](_0x1badac)['then'](function(_0x2e5108){_0x5163e0[_0xe6f3('0x25')]=_0x2e5108;if(_0x104677[_0xe6f3('0x37')][_0xe6f3('0x47')]){_0x5c8494[_0xe6f3('0x48')]=[{'all':!![]}];}return db[_0xe6f3('0x32')][_0xe6f3('0x49')](_0x5c8494);})[_0xe6f3('0x2b')](function(_0x25f946){_0x5163e0[_0xe6f3('0x4a')]=_0x25f946;return _0x5163e0;})[_0xe6f3('0x2b')](respondWithFilteredResult(_0x473064,_0x5c8494))[_0xe6f3('0x4b')](handleError(_0x473064,null));};exports[_0xe6f3('0x4c')]=function(_0x21f142,_0x24ce66){var _0x127583={'raw':![],'where':{'id':_0x21f142[_0xe6f3('0x4d')]['id']}},_0x2fde49={};_0x2fde49[_0xe6f3('0x36')]=_[_0xe6f3('0x38')](db[_0xe6f3('0x32')][_0xe6f3('0x33')]);_0x2fde49['query']=_[_0xe6f3('0x38')](_0x21f142[_0xe6f3('0x37')]);_0x2fde49[_0xe6f3('0x39')]=_['intersection'](_0x2fde49[_0xe6f3('0x36')],_0x2fde49[_0xe6f3('0x37')]);_0x127583[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x2fde49[_0xe6f3('0x36')],qs[_0xe6f3('0x3c')](_0x21f142['query'][_0xe6f3('0x3c')]));_0x127583[_0xe6f3('0x3a')]=_0x127583[_0xe6f3('0x3a')][_0xe6f3('0x3d')]?_0x127583[_0xe6f3('0x3a')]:_0x2fde49['model'];if(_0x21f142['query']['includeAll']){_0x127583['include']=[{'all':!![]}];}_0x127583=_[_0xe6f3('0x45')]({},_0x127583,_0x21f142[_0xe6f3('0x46')]);return db[_0xe6f3('0x32')][_0xe6f3('0x4e')](_0x127583)[_0xe6f3('0x2b')](handleEntityNotFound(_0x24ce66,null))['then'](respondWithResult(_0x24ce66,null))[_0xe6f3('0x4b')](handleError(_0x24ce66,null));};exports[_0xe6f3('0x4f')]=function(_0x33e3a9,_0x19e0c7){return db['UserProfile'][_0xe6f3('0x4f')](_0x33e3a9[_0xe6f3('0x50')],{})[_0xe6f3('0x2b')](respondWithResult(_0x19e0c7,0xc9))[_0xe6f3('0x4b')](handleError(_0x19e0c7,null));};exports[_0xe6f3('0x51')]=function(_0x548e77,_0x508008){var _0x5338a7={'where':{'id':_0x548e77['params']['id']}},_0x6089fd={};_0x6089fd[_0xe6f3('0x36')]=_[_0xe6f3('0x38')](db[_0xe6f3('0x32')][_0xe6f3('0x33')]);_0x5338a7[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x6089fd[_0xe6f3('0x36')],qs[_0xe6f3('0x3c')](_0x548e77[_0xe6f3('0x37')][_0xe6f3('0x3c')]));_0x5338a7['attributes']=_0x5338a7['attributes'][_0xe6f3('0x3d')]?_0x5338a7[_0xe6f3('0x3a')]:_0x6089fd[_0xe6f3('0x36')];if(_0x548e77[_0xe6f3('0x37')]['includeAll']){_0x5338a7[_0xe6f3('0x48')]=[{'all':!![]}];}_0x5338a7=_[_0xe6f3('0x45')]({},_0x5338a7,_0x548e77['options']);return db[_0xe6f3('0x32')][_0xe6f3('0x4e')](_0x5338a7)[_0xe6f3('0x2b')](handleEntityNotFound(_0x508008,null))[_0xe6f3('0x2b')](function(_0x47fe00){if(_0x47fe00){var _0xe23956=_0x47fe00['get']({'plain':!![]});_0xe23956=qs[_0xe6f3('0x52')](_0xe23956,['id','createdAt',_0xe6f3('0x53'),_0xe6f3('0x54')]);_0x548e77[_0xe6f3('0x50')]=_[_0xe6f3('0x52')](_0x548e77[_0xe6f3('0x50')],['id',_0xe6f3('0x55'),_0xe6f3('0x53')]);return db[_0xe6f3('0x56')][_0xe6f3('0x57')](function(_0x2d31fb){return db[_0xe6f3('0x32')][_0xe6f3('0x4f')](_[_0xe6f3('0x45')](_0xe23956,_0x548e77[_0xe6f3('0x50')]),{'include':_0x548e77['query']['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x2d31fb})[_0xe6f3('0x2b')](function(_0x29161e){var _0x4a7a98=_0x29161e[_0xe6f3('0x58')]({'plain':!![]});return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x548e77['params']['id']},'raw':!![]})['then'](function(_0x45310b){if(_0x45310b){return BPromise[_0xe6f3('0x5a')](_0x45310b,function(_0x34a94b){return new BPromise(function(_0x2d2a44,_0xb2044d){if(_0x34a94b['autoAssociation']===null||_0x34a94b[_0xe6f3('0x5b')]===0x1)_0x2d2a44(null);return db[_0xe6f3('0x5c')][_0xe6f3('0x49')]({'where':{'sectionId':_0x34a94b['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x3471dd){var _0x283417=_[_0xe6f3('0x31')](_0x3471dd,function(_0x358672){return qs[_0xe6f3('0x52')](_0x358672,['id',_0xe6f3('0x55'),_0xe6f3('0x53'),_0xe6f3('0x5d')]);});_0x2d2a44(_0x283417);})[_0xe6f3('0x4b')](function(_0x32105e){_0xb2044d(_0x32105e);});})['then'](function(_0xdf5f9d){var _0x1b3d62=qs[_0xe6f3('0x52')](_0x34a94b,['id',_0xe6f3('0x55'),_0xe6f3('0x53')]);_0x1b3d62[_0xe6f3('0x5e')]=_0x4a7a98['id'];if(_0xdf5f9d)_0x1b3d62[_0xe6f3('0x5f')]=_0xdf5f9d;return _0x1b3d62;})['then'](function(_0x3e91c2){return db[_0xe6f3('0x59')][_0xe6f3('0x4f')](_0x3e91c2,{'include':[{'model':db[_0xe6f3('0x5c')],'as':_0xe6f3('0x5f')}],'raw':!![],'transaction':_0x2d31fb});});})[_0xe6f3('0x2b')](function(){return _0x4a7a98;});}});});});}})['then'](respondWithResult(_0x508008,0xc9))[_0xe6f3('0x4b')](handleError(_0x508008,null));};exports[_0xe6f3('0x2a')]=function(_0x455113,_0x1cf8ae){if(_0x455113[_0xe6f3('0x50')]['id']){delete _0x455113[_0xe6f3('0x50')]['id'];}return db['UserProfile'][_0xe6f3('0x4e')]({'where':{'id':_0x455113[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x1cf8ae,null))[_0xe6f3('0x2b')](saveUpdates(_0x455113[_0xe6f3('0x50')],null))['then'](respondWithResult(_0x1cf8ae,null))['catch'](handleError(_0x1cf8ae,null));};exports['destroy']=function(_0x68bccc,_0x5291cb){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x68bccc[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x5291cb,null))[_0xe6f3('0x2b')](removeEntity(_0x5291cb,null))[_0xe6f3('0x4b')](handleError(_0x5291cb,null));};exports['describe']=function(_0x2ab40c,_0x55315d){return db['UserProfile'][_0xe6f3('0x60')]()[_0xe6f3('0x2b')](respondWithResult(_0x55315d,null))[_0xe6f3('0x4b')](handleError(_0x55315d,null));};exports[_0xe6f3('0x61')]=function(_0x24bd75,_0x2807bf){var _0x24dbd2=_0x24bd75[_0xe6f3('0x50')];return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x24bd75[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x2807bf,null))[_0xe6f3('0x2b')](function(_0x59e1ea){if(_0x59e1ea){return db[_0xe6f3('0x56')]['transaction'](function(_0x26b982){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x24bd75[_0xe6f3('0x4d')]['id'],'sectionId':_[_0xe6f3('0x31')](_0x24dbd2,function(_0x5ef819){return _0x5ef819['sectionId'];})},'transaction':_0x26b982})[_0xe6f3('0x2b')](function(){var _0x30711c=_[_0xe6f3('0x31')](_0x24dbd2,function(_0x572cff){_0x572cff[_0xe6f3('0x5e')]=_0x24bd75[_0xe6f3('0x4d')]['id'];return _0x572cff;});var _0x5ae774=[];return BPromise['each'](_0x30711c,function(_0x24ed74){return db[_0xe6f3('0x59')][_0xe6f3('0x4f')](_0x24ed74,{'include':[{'model':db[_0xe6f3('0x5c')],'as':_0xe6f3('0x5f')}],'raw':!![],'transaction':_0x26b982})['then'](function(_0x41ef0a){_0x5ae774['push'](_0x41ef0a[_0xe6f3('0x58')]({'plain':!![]}));});})[_0xe6f3('0x2b')](function(){return _0x5ae774;});});});}})[_0xe6f3('0x2b')](function(_0x3f4102){return _0x3f4102;})[_0xe6f3('0x2b')](respondWithResult(_0x2807bf,null))[_0xe6f3('0x4b')](handleError(_0x2807bf,null));};exports['removeSections']=function(_0x2acb9f,_0x290eee){var _0x568f86;return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x2acb9f[_0xe6f3('0x4d')]['id']},'attributes':['id',_0xe6f3('0x2f')]})[_0xe6f3('0x2b')](handleEntityNotFound(_0x290eee,null))[_0xe6f3('0x2b')](function(_0x452bb9){if(_0x452bb9){_0x568f86=_0x452bb9;return db[_0xe6f3('0x59')][_0xe6f3('0x2c')]({'where':{'userProfileId':_0x2acb9f[_0xe6f3('0x4d')]['id'],'sectionId':_0x2acb9f[_0xe6f3('0x37')][_0xe6f3('0x62')]}});}})['then'](function(){return _0x568f86;})[_0xe6f3('0x2b')](respondWithStatusCode(_0x290eee,null))[_0xe6f3('0x4b')](handleError(_0x290eee,null));};exports['getSections']=function(_0x5226bb,_0x30a629){var _0x30d5f7=[];var _0x799399=[];return db[_0xe6f3('0x59')][_0xe6f3('0x49')]({'where':{'userProfileId':_0x5226bb[_0xe6f3('0x4d')]['id']},'raw':!![]})['then'](function(_0x28976d){_0x30d5f7=_[_0xe6f3('0x42')](_0x28976d,function(_0xa55b9e){return _0xa55b9e[_0xe6f3('0x63')]===0x1||_[_0xe6f3('0x64')]([0x3eb,0x709],_0xa55b9e[_0xe6f3('0x5d')]);});if(!_['isEmpty'](_0x30d5f7)){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x3fd8d9){return _0x3fd8d9['sectionId'];});}else{return;}})[_0xe6f3('0x2b')](function(_0x51c503){if(_0x51c503)_0x799399=_0x51c503;if(_[_0xe6f3('0x64')](_0x799399,0x64)){var _0x540a8e=_[_0xe6f3('0x4e')](_0x30d5f7,{'sectionId':0x64});return hasDefaultDashboard(_0x540a8e)[_0xe6f3('0x2b')](function(_0x2eb267){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x11d640){if(_0x11d640[_0xe6f3('0x5d')]===0x64){_0x11d640['subsections']=_0x2eb267;}return _0x11d640;});});}else{return;}})[_0xe6f3('0x2b')](function(_0x4e533a){if(_0x4e533a)_0x30d5f7=_0x4e533a;if(_[_0xe6f3('0x64')](_0x799399,0x3eb)){var _0x3af37c=_[_0xe6f3('0x4e')](_0x30d5f7,{'sectionId':0x3eb});return getCustomDashboards(_0x3af37c)[_0xe6f3('0x2b')](function(_0x49b5ec){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x216d39){if(_0x3af37c['enabled']){if(_0x216d39[_0xe6f3('0x5d')]===0x3eb){_0x216d39[_0xe6f3('0x65')]=_0x49b5ec;}}else{if(_0x216d39[_0xe6f3('0x5d')]===0x64){_0x216d39['subsections']=_0x49b5ec;}}return _0x216d39;});});}else{return;}})['then'](function(_0x16cac9){if(_0x16cac9)_0x30d5f7=_0x16cac9;if(_[_0xe6f3('0x64')](_0x799399,0x709)){var _0x1c73ed=_['find'](_0x30d5f7,{'sectionId':0x709});return getPlugins(_0x1c73ed)[_0xe6f3('0x2b')](function(_0xbafd24){if(_0x1c73ed[_0xe6f3('0x63')]){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x11e9e3){if(_0x11e9e3['sectionId']===0x709){_0x11e9e3[_0xe6f3('0x65')]=_0xbafd24;}return _0x11e9e3;});}else{var _0x2d99a5={'sectionId':0x76c,'enabled':0x1,'subsections':_0xbafd24};var _0x13de73=_['map'](_0x30d5f7);_0x13de73[_0xe6f3('0x66')](_0x2d99a5);return _0x13de73;}});}else{return;}})[_0xe6f3('0x2b')](function(_0x5ede20){if(_0x5ede20)_0x30d5f7=_0x5ede20;return _['filter'](_0x30d5f7,[_0xe6f3('0x63'),0x1]);})['then'](respondWithResult(_0x30a629,null))[_0xe6f3('0x4b')](handleError(_0x30a629,null));};function hasDefaultDashboard(_0x5105ee){var _0x54d51d=[0x65];return new BPromise(function(_0x502316,_0x542642){try{if(_0x5105ee[_0xe6f3('0x5b')]){_0x502316(_0x54d51d);}else{return db[_0xe6f3('0x5c')]['findOne']({'where':{'sectionId':_0x5105ee['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x592414){_0x592414?_0x502316(_0x54d51d):_0x502316();});}}catch(_0x32f97c){_0x542642(_0x32f97c);}});}function getCustomDashboards(_0x3471dc){var _0x12b63e=[];return new BPromise(function(_0xcbfd89,_0x2107dd){try{if(_0x3471dc[_0xe6f3('0x5b')]){return db['Dashboard'][_0xe6f3('0x49')]({'raw':!![]})[_0xe6f3('0x2b')](function(_0x299339){_0x299339[_0xe6f3('0x67')](function(_0x61b5cf){_0x12b63e[_0xe6f3('0x66')](_0x61b5cf['id']+0x1869f);});_0xcbfd89(_0x12b63e);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x3471dc['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x38e66a){_0x38e66a[_0xe6f3('0x67')](function(_0x5377ed){_0x12b63e['push'](_0x5377ed['resourceId']+0x1869f);});_0xcbfd89(_0x12b63e);});}}catch(_0x27ebcd){_0x2107dd(_0x27ebcd);}});}function getPlugins(_0x2aa868){var _0x2faf81=[];return new BPromise(function(_0x845b5c,_0x1178d4){try{if(_0x2aa868[_0xe6f3('0x5b')]){return db[_0xe6f3('0x68')]['findAll']({'raw':!![]})[_0xe6f3('0x2b')](function(_0x256a83){_0x256a83['forEach'](function(_0x5ab162){_0x2faf81[_0xe6f3('0x66')](_0x5ab162['id']+0x15b38);});_0x845b5c(_0x2faf81);});}else{return db[_0xe6f3('0x5c')][_0xe6f3('0x49')]({'where':{'sectionId':_0x2aa868['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x103b1e){_0x103b1e['forEach'](function(_0x34bdad){_0x2faf81[_0xe6f3('0x66')](_0x34bdad[_0xe6f3('0x69')]+0x15b38);});_0x845b5c(_0x2faf81);});}}catch(_0x58202c){_0x1178d4(_0x58202c);}});}exports[_0xe6f3('0x6a')]=function(_0x3f9827,_0x314109){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x3f9827['params']['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x314109,null))[_0xe6f3('0x2b')](function(_0x35bc23){if(_0x35bc23){return db[_0xe6f3('0x56')]['transaction'](function(_0xfa9d9b){return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id']},'attributes':['id'],'raw':!![]})[_0xe6f3('0x2b')](function(_0x38adc3){if(_0x38adc3){return db[_0xe6f3('0x59')][_0xe6f3('0x2c')]({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id'],'id':_[_0xe6f3('0x31')](_0x38adc3,function(_0x3b0138){return _0x3b0138['id'];})},'transaction':_0xfa9d9b});}})[_0xe6f3('0x2b')](function(_0x553d51){var _0x2add58=_[_0xe6f3('0x31')](_0x3f9827[_0xe6f3('0x50')],function(_0x4bc17d){_0x4bc17d[_0xe6f3('0x5e')]=_0x3f9827[_0xe6f3('0x4d')]['id'];return _0x4bc17d;});return db[_0xe6f3('0x59')]['bulkCreate'](_0x2add58,{'raw':!![],'transaction':_0xfa9d9b});})['then'](function(_0xb1ec68){var _0x17697a=_[_0xe6f3('0x42')](_[_0xe6f3('0x31')](_0xb1ec68,function(_0x49716a){return _0x49716a[_0xe6f3('0x58')]({'plain':!![]});}),{'includeAll':![]});if(_0x17697a){return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id'],'sectionId':_[_0xe6f3('0x31')](_0x17697a,function(_0x115b49){return _0x115b49[_0xe6f3('0x5d')];})},'attributes':['id',_0xe6f3('0x5d')],'raw':!![]})[_0xe6f3('0x2b')](function(_0x3dc56c){var _0x52b623=_[_0xe6f3('0x31')](_0x3f9827[_0xe6f3('0x50')],function(_0x2237c5){_0x2237c5[_0xe6f3('0x5e')]=_0x3f9827[_0xe6f3('0x4d')]['id'];return _0x2237c5;});return db['UserProfileResource'][_0xe6f3('0x6b')](_0x52b623,{'raw':!![],'transaction':_0xfa9d9b});});}})['catch'](handleError(_0x314109,null));});}})[_0xe6f3('0x2b')](function(_0x36be9d){var _0x227bb0=_[_0xe6f3('0x31')](_0x36be9d,function(_0x2d7335){return _0x2d7335[_0xe6f3('0x58')]({'plain':!![]});});})[_0xe6f3('0x2b')](respondWithResult(_0x314109,null))['catch'](handleError(_0x314109,null));};exports['removeResources']=function(_0x36c794,_0x3264af,_0x3dc192){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x36c794['params']['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x3264af,null))[_0xe6f3('0x2b')](function(_0xceee00){if(_0xceee00){return _0xceee00[_0xe6f3('0x6c')](_0x36c794['query']['ids']);}})['then'](respondWithStatusCode(_0x3264af,null))['catch'](handleError(_0x3264af,null));};exports['getResources']=function(_0x423088,_0x46ae4a){var _0xf8052c={};if(!_0x423088['query'][_0xe6f3('0x6d')])throw new Error('Missing\x20section\x20parameter');if(!_0x423088[_0xe6f3('0x37')]['hasOwnProperty'](_0xe6f3('0x3f'))){_0xf8052c[_0xe6f3('0x24')]=qs[_0xe6f3('0x24')](_0x423088[_0xe6f3('0x37')]['limit']);_0xf8052c[_0xe6f3('0x22')]=qs[_0xe6f3('0x22')](_0x423088[_0xe6f3('0x37')][_0xe6f3('0x22')]);}return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x423088[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](function(_0x3d8e57){if(!_0x3d8e57)throw new Error(_0xe6f3('0x6e')+_0x423088[_0xe6f3('0x4d')]['id']);return db[_0xe6f3('0x32')][_0xe6f3('0x6f')](_0x423088);})[_0xe6f3('0x2b')](respondWithFilteredResult(_0x46ae4a,_0xf8052c))['catch'](handleError(_0x46ae4a,null));};
\ No newline at end of file
index f5977e1..a49bcba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b3=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','UserProfile','setMaxListeners','save'];(function(_0xe09f15,_0x1a71f9){var _0x38ad6b=function(_0x326aef){while(--_0x326aef){_0xe09f15['push'](_0xe09f15['shift']());}};_0x38ad6b(++_0x1a71f9);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x5146d9,_0x5b2a81){_0x5146d9=_0x5146d9-0x0;var _0x5b4d9e=_0xe3b3[_0x5146d9];return _0x5b4d9e;};'use strict';var EventEmitter=require(_0x3e3b('0x0'));var UserProfile=require(_0x3e3b('0x1'))['db'][_0x3e3b('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3e3b('0x3')](0x0);var events={'afterCreate':_0x3e3b('0x4'),'afterUpdate':_0x3e3b('0x5'),'afterDestroy':_0x3e3b('0x6')};function emitEvent(_0x4d1684){return function(_0xcfab31,_0x2011b1,_0x5e3212){UserProfileEvents[_0x3e3b('0x7')](_0x4d1684+':'+_0xcfab31['id'],_0xcfab31);UserProfileEvents[_0x3e3b('0x7')](_0x4d1684,_0xcfab31);_0x5e3212(null);};}for(var e in events){if(events[_0x3e3b('0x8')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x3e3b('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0x1a38=['events','../../mysqldb','UserProfile','remove','emit','hasOwnProperty','hook','exports'];(function(_0x211ee1,_0x2eb0a3){var _0x3d1c69=function(_0x41af11){while(--_0x41af11){_0x211ee1['push'](_0x211ee1['shift']());}};_0x3d1c69(++_0x2eb0a3);}(_0x1a38,0xb0));var _0x81a3=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0x1a38[_0x2afbb0];return _0x411ff2;};'use strict';var EventEmitter=require(_0x81a3('0x0'));var UserProfile=require(_0x81a3('0x1'))['db'][_0x81a3('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x81a3('0x3')};function emitEvent(_0x2402ba){return function(_0x2faf46,_0x28fd86,_0x33a486){UserProfileEvents[_0x81a3('0x4')](_0x2402ba+':'+_0x2faf46['id'],_0x2faf46);UserProfileEvents[_0x81a3('0x4')](_0x2402ba,_0x2faf46);_0x33a486(null);};}for(var e in events){if(events[_0x81a3('0x5')](e)){var event=events[e];UserProfile[_0x81a3('0x6')](e,emitEvent(event));}}module[_0x81a3('0x7')]=UserProfileEvents;
\ No newline at end of file
index 65b4e44..cd53d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','length','push','UserProfileSection','find','all','isEmpty','union','ignore','autoAssociation','keys','filters','intersection','attributes','fields','nolimit','limit','offset','order','sort','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','rows','count','Tags','color','tag','ThroughTags','Agents','openTabs','chat','dataValues','fax','mail','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','value','findAll','then','map','catch','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','SquareProject','odbc','childModel','SquareOdbc','squarerecordings','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','FaxQueue','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','inbound','QueueCampaigns','VoiceQueue','type','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','smsaccounts','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','users','agents','telephones','Users','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','scheduler','sounds','Sound','Tag','templates','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','Reports','reportId','AnalyticMetric','charAt','toUpperCase'];(function(_0x2a1a31,_0x1b8b1a){var _0xe175e8=function(_0xa6f2c2){while(--_0xa6f2c2){_0x2a1a31['push'](_0x2a1a31['shift']());}};_0xe175e8(++_0x1b8b1a);}(_0xdb28,0x106));var _0x8db2=function(_0x147130,_0x2c6156){_0x147130=_0x147130-0x0;var _0x1fe9f0=_0xdb28[_0x147130];return _0x1fe9f0;};'use strict';var _=require(_0x8db2('0x0'));var attributes=require(_0x8db2('0x1'));var qs=require(_0x8db2('0x2'));var squel=require(_0x8db2('0x3'));module['exports']=function(_0x1f4c45){var _0x11c26d=_0x1f4c45[_0x8db2('0x4')];function _0x4426fe(_0x11109e,_0x52bf99){return new Promise(function(_0x21a03e,_0x1d2dd3){if(!_0x52bf99)return _0x21a03e(null);var _0x5f42ee=_0x52bf99['filter']?{[_0x52bf99[_0x8db2('0x5')][_0x8db2('0x6')]]:_0x52bf99[_0x8db2('0x5')][_0x8db2('0x7')]}:undefined;return _0x11c26d[_0x11109e][_0x8db2('0x8')]({'where':_0x5f42ee,'raw':!![]})[_0x8db2('0x9')](function(_0x126c78){_0x52bf99['associatedResources']=_[_0x8db2('0xa')](_0x126c78,'id');_0x21a03e(_0x52bf99);})[_0x8db2('0xb')](function(_0x1f62af){_0x1d2dd3(_0x1f62af);});});}function _0x57015f(_0x1d9371,_0x150942){return new Promise(function(_0x576475,_0x41beda){var _0x3b2faa=_0x1d9371[_0x8db2('0x5')]?{[_0x1d9371[_0x8db2('0x5')][_0x8db2('0x6')]]:_0x1d9371['filter']['value']}:undefined;return _0x11c26d[_0x1d9371[_0x8db2('0xc')]][_0x8db2('0x8')]({'where':_0x3b2faa,'raw':!![]})[_0x8db2('0x9')](function(_0x1d6a15){_0x150942[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x1d6a15,function(_0x2f177a){return _0x2f177a[_0x8db2('0xe')];});_0x576475(_0x150942);})[_0x8db2('0xb')](function(_0x16c8c2){_0x41beda(_0x16c8c2);});});}function _0x5489a9(_0x13b0f5,_0x24da1b,_0x48101e){if(!_0x24da1b)return Promise[_0x8db2('0xf')](null);return new Promise(function(_0x44957d,_0x21db8c){return _0x11c26d[_0x8db2('0x10')][_0x8db2('0x8')]({'where':{'sectionId':_0x24da1b['id']},'raw':!![]})[_0x8db2('0x9')](function(_0x51d60d){if(_0x13b0f5['field']&&_0x13b0f5[_0x8db2('0x6')]!=='id'){_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x1b64e4){return _0x1b64e4[_0x13b0f5['field']];});}else{if(_0x48101e===_0x8db2('0x11')){_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x297ba3){return{'id':_0x297ba3[_0x8db2('0x12')],'type':_0x297ba3['type']};});}else{_0x24da1b[_0x8db2('0xd')]=_[_0x8db2('0xa')](_0x51d60d,function(_0x18f69c){return _0x18f69c[_0x8db2('0x12')];});}}_0x44957d(_0x24da1b);})[_0x8db2('0xb')](function(_0x21704c){_0x21db8c(_0x21704c);});});}function _0x796ec1(_0x5c6614,_0x256202){var _0x4f6516={'parentSections':[]};switch(_0x5c6614['toLowerCase']()){case'squareprojects':_0x4f6516['childModel']=_0x8db2('0x13');break;case _0x8db2('0x14'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x16');break;case _0x8db2('0x17'):_0x4f6516[_0x8db2('0x15')]='SquareRecording';_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x19'),'field':_0x8db2('0xe'),'foreignKey':_0x8db2('0x1a')}];break;case'projects':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x1b');break;case _0x8db2('0x1c'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x1d');_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x1e'),'field':'id','foreignKey':_0x8db2('0x1f')}];break;case _0x8db2('0x20'):_0x4f6516['childModel']=_0x8db2('0x21');break;case'companies':_0x4f6516['childModel']=_0x8db2('0x22');break;case _0x8db2('0x23'):_0x4f6516[_0x8db2('0x15')]='CmCustomField';break;case _0x8db2('0x24'):_0x4f6516['childModel']=_0x8db2('0x25');break;case _0x8db2('0x26'):_0x4f6516[_0x8db2('0x15')]='ChatWebsite';break;case'faxqueues':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x27');break;case'faxaccounts':_0x4f6516['childModel']=_0x8db2('0x28');break;case _0x8db2('0x29'):case _0x8db2('0x2a'):case _0x8db2('0x2b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x2c');break;case _0x8db2('0x2d'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x2e');break;case _0x8db2('0x2f'):_0x4f6516['childModel']=_0x8db2('0x30');break;case _0x8db2('0x31'):_0x4f6516['childModel']=_0x8db2('0x32');_0x4f6516[_0x8db2('0x18')]=[{'name':'Agents','field':'name','foreignKey':_0x8db2('0x33'),'model':'User','filter':{'field':_0x8db2('0x34'),'value':[_0x8db2('0x35')]}},{'name':_0x8db2('0x36'),'field':_0x8db2('0xe'),'foreignKey':'membername','model':_0x8db2('0x37'),'filter':{'field':'role','value':[_0x8db2('0x38')]}},{'name':_0x8db2('0x39'),'field':_0x8db2('0xe'),'foreignKey':_0x8db2('0x3a'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x8db2('0x3b')]}},{'name':_0x8db2('0x3c'),'field':'name','foreignKey':_0x8db2('0x3a'),'model':_0x8db2('0x3d'),'filter':{'field':_0x8db2('0x3e'),'value':['outbound']}}];break;case _0x8db2('0x3f'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x40');break;case _0x8db2('0x41'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x42');break;case _0x8db2('0x43'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x44');break;case _0x8db2('0x45'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x46');break;case _0x8db2('0x47'):_0x4f6516['childModel']=_0x8db2('0x48');break;case _0x8db2('0x49'):_0x4f6516['childModel']='MailAccount';break;case _0x8db2('0x4a'):_0x4f6516['childModel']=_0x8db2('0x4b');break;case _0x8db2('0x4c'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x4d');break;case _0x8db2('0x4e'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x4f');break;case'smsqueues':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x50');break;case _0x8db2('0x51'):_0x4f6516[_0x8db2('0x15')]='SmsAccount';break;case _0x8db2('0x52'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x53');break;case _0x8db2('0x54'):_0x4f6516['childModel']=_0x8db2('0x55');break;case'teams':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x56');break;case _0x8db2('0x57'):case'queuecampaigns':_0x4f6516['childModel']=_0x8db2('0x3d');if(_0x256202){_0x4f6516['parentSections']=[{'name':_0x8db2('0x39')},{'name':_0x8db2('0x3c')}];}break;case _0x8db2('0x58'):case _0x8db2('0x59'):case _0x8db2('0x5a'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x37');if(_0x256202){_0x4f6516[_0x8db2('0x18')]=[{'name':_0x8db2('0x5b'),'filter':{'field':_0x8db2('0x34'),'value':[_0x8db2('0x5c'),_0x8db2('0x5d')]},'ignore':!![]},{'name':'Agents'},{'name':_0x8db2('0x36')}];}break;case _0x8db2('0x5e'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x5f');break;case'salesforceaccounts':_0x4f6516['childModel']=_0x8db2('0x60');break;case _0x8db2('0x61'):_0x4f6516[_0x8db2('0x15')]='FreshdeskAccount';break;case'sugarcrmaccounts':_0x4f6516['childModel']=_0x8db2('0x62');break;case _0x8db2('0x63'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x64');break;case _0x8db2('0x65'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x66');break;case'vtigeraccounts':_0x4f6516['childModel']=_0x8db2('0x37');break;case _0x8db2('0x67'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x68');break;case _0x8db2('0x69'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6a');break;case _0x8db2('0x6b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6c');break;case _0x8db2('0x6d'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x6e');break;case _0x8db2('0x6f'):_0x4f6516[_0x8db2('0x15')]='Pause';break;case _0x8db2('0x70'):_0x4f6516[_0x8db2('0x15')]='Schedule';break;case _0x8db2('0x71'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x72');break;case'tags':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x73');break;case _0x8db2('0x74'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x75');break;case'triggers':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x76');break;case _0x8db2('0x77'):_0x4f6516['childModel']=_0x8db2('0x78');break;case _0x8db2('0x79'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7a');break;case _0x8db2('0x7b'):_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7c');break;case'extractedreports':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x11');_0x4f6516['parentSections']=[{'name':_0x8db2('0x7d'),'field':'id','foreignKey':_0x8db2('0x7e')}];break;case'metrics':_0x4f6516[_0x8db2('0x15')]=_0x8db2('0x7f');break;}return _0x4f6516;}function _0x63e8f7(_0x30f4f3,_0x42b941){var _0x3c7d8c=_0x30f4f3[_0x8db2('0x80')](0x0)[_0x8db2('0x81')]()+_0x30f4f3[_0x8db2('0x82')](0x1);var _0x173a5e={'type':_0x11c26d[_0x8db2('0x83')][_0x8db2('0x84')][_0x8db2('0x85')],'raw':!![]};return new Promise(function(_0x1ce89f,_0x64ec90){var _0x105a53=squel['select']()[_0x8db2('0x6')](_0x8db2('0x86')+_0x3c7d8c+_0x8db2('0x87'),'id')[_0x8db2('0x6')](_0x8db2('0x88'))['from'](_0x8db2('0x89')+_0x30f4f3+_0x8db2('0x8a'),'ui')[_0x8db2('0x8b')](_0x8db2('0x8c'),_0x42b941['id']);return _0x11c26d[_0x8db2('0x8d')][_0x8db2('0x8e')](_0x105a53[_0x8db2('0x8f')](),_0x173a5e)[_0x8db2('0x9')](function(_0x24cfe9){_0x42b941[_0x3c7d8c+_0x8db2('0x90')]=_0x24cfe9;_0x1ce89f(_0x24cfe9);})[_0x8db2('0xb')](function(_0xfe6bac){_0x64ec90(_0xfe6bac);});});}return _0x1f4c45[_0x8db2('0x91')](_0x8db2('0x92'),attributes,{'tableName':_0x8db2('0x93'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x270fc0){var _0x1d7862={'raw':![],'where':{}};var _0xefb12={};var _0x5a719f={'count':0x0,'rows':[]};var _0x3273dd=_0x270fc0['query'][_0x8db2('0x94')];var _0x570c53=_0x270fc0[_0x8db2('0x8e')][_0x8db2('0x95')]||![];var _0xe4fd6a=_0x796ec1(_0x3273dd,_0x570c53);if(!_0xe4fd6a[_0x8db2('0x15')])throw new Error(_0x8db2('0x96')+_0x3273dd+'\x27');var _0x59a32e=[{'name':_0x3273dd}];if(!_['isEmpty'](_0xe4fd6a[_0x8db2('0x18')]))_0x59a32e=_0xe4fd6a[_0x8db2('0x18')];var _0x21ec87=[];for(var _0x3ba1d2=0x0;_0x3ba1d2<_0x59a32e[_0x8db2('0x97')];_0x3ba1d2++){_0x21ec87[_0x8db2('0x98')](_0x11c26d[_0x8db2('0x99')][_0x8db2('0x9a')]({'where':{'userProfileId':_0x270fc0['params']['id'],'name':_0x59a32e[_0x3ba1d2][_0x8db2('0xe')]},'raw':!![]}));}return Promise[_0x8db2('0x9b')](_0x21ec87)[_0x8db2('0x9')](function(_0x21521c){var _0x250150=_[_0x8db2('0x5')](_0x21521c,function(_0x451746){return _0x451746?_0x451746:undefined;});var _0x20caf0=_['filter'](_0x59a32e,['ignore',!![]]);var _0x358009=_[_0x8db2('0x9c')](_0x250150)&&_[_0x8db2('0x9c')](_0x20caf0)?null:_[_0x8db2('0x9d')](_0x20caf0,_0x250150);if(!_0x358009)return null;var _0x412801=[];for(var _0x5a074e=0x0;_0x5a074e<_0x358009['length'];_0x5a074e++){var _0x3611da=_[_0x8db2('0x9a')](_0x59a32e,function(_0x54f0d4){return _0x358009[_0x5a074e]?_0x54f0d4[_0x8db2('0xe')]===_0x358009[_0x5a074e][_0x8db2('0xe')]:null;});if(_0x3611da){if(_0x358009[_0x5a074e][_0x8db2('0x9e')]){_0x412801['push'](_0x4426fe(_0xe4fd6a[_0x8db2('0x15')],_0x358009[_0x5a074e]));}else{if(!_0x358009[_0x5a074e][_0x8db2('0x9f')]){_0x412801[_0x8db2('0x98')](_0x5489a9(_0x3611da,_0x358009[_0x5a074e],_0xe4fd6a['childModel']));}else{if(_0x3611da[_0x8db2('0xc')]){_0x412801[_0x8db2('0x98')](_0x57015f(_0x3611da,_0x358009[_0x5a074e]));}}}}}return Promise[_0x8db2('0x9b')](_0x412801);})[_0x8db2('0x9')](function(_0x3a0946){var _0x5923b3=_0x3a0946;var _0x3c9af4=null;if(_0x5923b3){_0x3c9af4=_0x5923b3[_0x8db2('0x97')]===0x1?_0x5923b3[0x0]:null;}if(!_0x3c9af4&&!_0x5923b3)return _0x5a719f;var _0x150439=_0x11c26d[_0xe4fd6a['childModel']]['rawAttributes'];_0xefb12[_0x8db2('0xc')]=_[_0x8db2('0xa0')](_0x150439);_0xefb12['query']=_[_0x8db2('0xa0')](_0x270fc0[_0x8db2('0x8e')]);_0xefb12[_0x8db2('0xa1')]=_[_0x8db2('0xa2')](_0xefb12[_0x8db2('0xc')],_0xefb12[_0x8db2('0x8e')]);_0x1d7862[_0x8db2('0xa3')]=_[_0x8db2('0xa2')](_0xefb12[_0x8db2('0xc')],qs[_0x8db2('0xa4')](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa4')]));_0x1d7862[_0x8db2('0xa3')]=_0x1d7862['attributes'][_0x8db2('0x97')]?_0x1d7862['attributes']:_0xefb12[_0x8db2('0xc')];if(!_0x270fc0[_0x8db2('0x8e')]['hasOwnProperty'](_0x8db2('0xa5'))){_0x1d7862[_0x8db2('0xa6')]=qs['limit'](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa6')]);_0x1d7862[_0x8db2('0xa7')]=qs[_0x8db2('0xa7')](_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xa7')]);}_0x1d7862[_0x8db2('0xa8')]=qs[_0x8db2('0xa9')](_0x270fc0[_0x8db2('0x8e')]['sort']);_0x1d7862['where']=qs[_0x8db2('0xa1')](_['pick'](_0x270fc0[_0x8db2('0x8e')],_0xefb12[_0x8db2('0xa1')]));if(_0x270fc0[_0x8db2('0x8e')]['filter']){_0x1d7862[_0x8db2('0x8b')]=_[_0x8db2('0xaa')](_0x1d7862[_0x8db2('0x8b')],{'$or':_['map'](_0x150439,function(_0x3ae18c){if(_0x3ae18c[_0x8db2('0x3e')][_0x8db2('0xab')]!==_0x8db2('0xac')){var _0x48a618={};_0x48a618[_0x3ae18c[_0x8db2('0x6')]]={'$like':'%'+_0x270fc0[_0x8db2('0x8e')][_0x8db2('0x5')]+'%'};return _0x48a618;}})});}var _0x1edb1a=[];var _0xcf1c42=null;var _0x15fd4={};if(_0x3c9af4){_0xcf1c42=_[_0x8db2('0x9a')](_0x59a32e,[_0x8db2('0xe'),_0x3c9af4[_0x8db2('0xe')]]);if(_0xcf1c42[_0x8db2('0x6')]){_0x15fd4={};if(_0xe4fd6a[_0x8db2('0x15')]==='AnalyticExtractedReport'){_0x15fd4[_0xcf1c42[_0x8db2('0xad')]]=_[_0x8db2('0xa')](_0x3c9af4[_0x8db2('0xd')],'id');}else{_0x15fd4[_0xcf1c42['foreignKey']]=_0x3c9af4['associatedResources'];}_0x1edb1a['push'](_0x15fd4);}else{_0x1d7862[_0x8db2('0x8b')]['id']=_0x3c9af4[_0x8db2('0xd')];}}else{for(var _0x3191c8=0x0;_0x3191c8<_0x5923b3[_0x8db2('0x97')];_0x3191c8++){_0xcf1c42=_[_0x8db2('0x9a')](_0x59a32e,[_0x8db2('0xe'),_0x5923b3[_0x3191c8][_0x8db2('0xe')]]);if(_0xcf1c42[_0x8db2('0x6')]){_0x15fd4={};_0x15fd4[_0xcf1c42[_0x8db2('0xad')]]=_0x5923b3[_0x3191c8][_0x8db2('0xd')];_0x1edb1a[_0x8db2('0x98')](_0x15fd4);}else{if(!_0x1d7862['where']['id'])_0x1d7862[_0x8db2('0x8b')]['id']=[];_0x5923b3[_0x3191c8][_0x8db2('0xd')][_0x8db2('0xae')](function(_0x2fb169){_0x1d7862['where']['id']['push'](_0x2fb169);});}}}if(!_[_0x8db2('0x9c')](_0x1edb1a)){_0x1d7862[_0x8db2('0x8b')]=_['merge'](_0x1d7862[_0x8db2('0x8b')],{'$and':{'$or':_0x1edb1a}});}_0x1d7862=_[_0x8db2('0xaa')]({},_0x1d7862,_0x270fc0[_0x8db2('0xaf')]);if(_0x3c9af4&&!_0x3c9af4['autoAssociation']&&_0xe4fd6a['childModel']==='AnalyticExtractedReport'){if(_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xb0')]){_0x1d7862[_0x8db2('0xb1')]=[{'all':!![]}];}return _0x11c26d[_0xe4fd6a[_0x8db2('0x15')]][_0x8db2('0x8')](_0x1d7862)['then'](function(_0x30930a){var _0x5e349c=[];_0x30930a[_0x8db2('0xae')](function(_0x353101){var _0xa083b1;switch(_0x353101[_0x8db2('0xb2')]){case _0x8db2('0xb3'):_0xa083b1=_['find'](_0x3c9af4['associatedResources'],function(_0x45cce8){return _0x45cce8['id']===_0x353101['reportId']&&_0x45cce8[_0x8db2('0x3e')]===_0x8db2('0xb4');});break;case _0x8db2('0xb5'):_0xa083b1=_[_0x8db2('0x9a')](_0x3c9af4[_0x8db2('0xd')],function(_0x456d5e){return _0x456d5e['id']===_0x353101['reportId']&&_0x456d5e[_0x8db2('0x3e')]===_0x8db2('0xb6');});break;}if(_0xa083b1)_0x5e349c[_0x8db2('0x98')](_0x353101);});_0x5a719f['count']=_0x5e349c[_0x8db2('0x97')];_0x5a719f[_0x8db2('0xb7')]=_0x5e349c;return _0x5a719f;});}else{return _0x11c26d[_0xe4fd6a['childModel']][_0x8db2('0xb8')]({'where':_0x1d7862[_0x8db2('0x8b')]})[_0x8db2('0x9')](function(_0x15307d){_0x5a719f[_0x8db2('0xb8')]=_0x15307d;if(_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xb0')]){if(_0xe4fd6a[_0x8db2('0x15')]===_0x8db2('0x1d')){_0x1d7862['include']=[{'model':_0x11c26d[_0x8db2('0x73')],'as':_0x8db2('0xb9'),'attributes':['id',_0x8db2('0xe'),_0x8db2('0xba')],'required':_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbb')]?!![]:![]},{'model':_0x11c26d[_0x8db2('0x73')],'as':_0x8db2('0xbc'),'attributes':['id',_0x8db2('0xe'),_0x8db2('0xba')],'through':_0x270fc0['query'][_0x8db2('0xbb')]?{'attributes':[],'where':{'TagId':_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbb')]||undefined}}:{},'required':_0x270fc0[_0x8db2('0x8e')]['tag']?!![]:![]}];}else{_0x1d7862[_0x8db2('0xb1')]=[{'all':!![]}];}}return _0x11c26d[_0xe4fd6a[_0x8db2('0x15')]][_0x8db2('0x8')](_0x1d7862);})['then'](function(_0x59fbe1){_0x5a719f[_0x8db2('0xb7')]=_0x59fbe1;if(_0x3273dd===_0x8db2('0xbd')&&_0x270fc0[_0x8db2('0x8e')][_0x8db2('0xbe')]==='true'){var _0xaa2661=[];for(var _0x3a0e7e=0x0;_0x3a0e7e<_0x5a719f[_0x8db2('0xb7')][_0x8db2('0x97')];_0x3a0e7e++){_0xaa2661['push'](_0x63e8f7(_0x8db2('0xbf'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661['push'](_0x63e8f7('sms',_0x5a719f['rows'][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661[_0x8db2('0x98')](_0x63e8f7(_0x8db2('0xc1'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e]['dataValues']));_0xaa2661['push'](_0x63e8f7(_0x8db2('0xc2'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));_0xaa2661[_0x8db2('0x98')](_0x63e8f7(_0x8db2('0xc3'),_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e]['dataValues']));_0xaa2661[_0x8db2('0x98')](_0x63e8f7('whatsapp',_0x5a719f[_0x8db2('0xb7')][_0x3a0e7e][_0x8db2('0xc0')]));}return Promise[_0x8db2('0x9b')](_0xaa2661)[_0x8db2('0x9')](function(){return _0x5a719f;});}return _0x5a719f;});}});}}});};
\ No newline at end of file
+var _0x430c=['ignore','union','autoAssociation','keys','filters','intersection','attributes','fields','limit','offset','order','sort','pick','where','merge','key','foreignKey','forEach','include','reportType','default','DefaultReports','custom','count','rows','Tag','Tags','color','tag','ThroughTags','openTabs','chat','sms','dataValues','fax','mail','openchannel','lodash','squel','exports','filter','field','value','findAll','then','associatedResources','map','model','name','catch','resolve','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','SquareProject','childModel','squarerecordings','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','lists','CmList','companies','CmCompany','CmCustomField','chatqueues','chatwebsites','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','type','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','queuecampaigns','users','telephones','admin','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','templates','Template','triggers','Trigger','trunks','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','SELECT','select','ui.','InteractionId','ui.createdAt','user_has_','_interactions','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','push','find','params','all'];(function(_0x37e3a0,_0x21f1d9){var _0x19d85a=function(_0x321e40){while(--_0x321e40){_0x37e3a0['push'](_0x37e3a0['shift']());}};_0x19d85a(++_0x21f1d9);}(_0x430c,0x1a1));var _0xc430=function(_0x2272b5,_0x362458){_0x2272b5=_0x2272b5-0x0;var _0x110156=_0x430c[_0x2272b5];return _0x110156;};'use strict';var _=require(_0xc430('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require(_0xc430('0x1'));module[_0xc430('0x2')]=function(_0x1d5b5e){var _0x503988=_0x1d5b5e['models'];function _0x5ccda6(_0x47d8b9,_0x338a82){return new Promise(function(_0x2408f5,_0x50b256){if(!_0x338a82)return _0x2408f5(null);var _0x42aa9c=_0x338a82['filter']?{[_0x338a82[_0xc430('0x3')][_0xc430('0x4')]]:_0x338a82[_0xc430('0x3')][_0xc430('0x5')]}:undefined;return _0x503988[_0x47d8b9][_0xc430('0x6')]({'where':_0x42aa9c,'raw':!![]})[_0xc430('0x7')](function(_0x861581){_0x338a82[_0xc430('0x8')]=_[_0xc430('0x9')](_0x861581,'id');_0x2408f5(_0x338a82);})['catch'](function(_0x97fa5b){_0x50b256(_0x97fa5b);});});}function _0x2b47d6(_0x56c090,_0x39e624){return new Promise(function(_0x5aeed9,_0x3b84bc){var _0x47e664=_0x56c090[_0xc430('0x3')]?{[_0x56c090[_0xc430('0x3')][_0xc430('0x4')]]:_0x56c090[_0xc430('0x3')][_0xc430('0x5')]}:undefined;return _0x503988[_0x56c090[_0xc430('0xa')]][_0xc430('0x6')]({'where':_0x47e664,'raw':!![]})['then'](function(_0x4e9134){_0x39e624[_0xc430('0x8')]=_[_0xc430('0x9')](_0x4e9134,function(_0x17d5c8){return _0x17d5c8[_0xc430('0xb')];});_0x5aeed9(_0x39e624);})[_0xc430('0xc')](function(_0x55cc6c){_0x3b84bc(_0x55cc6c);});});}function _0x111598(_0x4aeb72,_0x4bf91f,_0x2e7987){if(!_0x4bf91f)return Promise[_0xc430('0xd')](null);return new Promise(function(_0x2327c5,_0x5830b0){return _0x503988['UserProfileResource'][_0xc430('0x6')]({'where':{'sectionId':_0x4bf91f['id']},'raw':!![]})['then'](function(_0x2bcb21){if(_0x4aeb72['field']&&_0x4aeb72['field']!=='id'){_0x4bf91f[_0xc430('0x8')]=_['map'](_0x2bcb21,function(_0x302926){return _0x302926[_0x4aeb72[_0xc430('0x4')]];});}else{if(_0x2e7987===_0xc430('0xe')){_0x4bf91f[_0xc430('0x8')]=_[_0xc430('0x9')](_0x2bcb21,function(_0x5af282){return{'id':_0x5af282[_0xc430('0xf')],'type':_0x5af282['type']};});}else{_0x4bf91f['associatedResources']=_[_0xc430('0x9')](_0x2bcb21,function(_0x2ea352){return _0x2ea352[_0xc430('0xf')];});}}_0x2327c5(_0x4bf91f);})['catch'](function(_0x3fd56b){_0x5830b0(_0x3fd56b);});});}function _0x57d26e(_0x23425d,_0x22ebfb){var _0x4efecd={'parentSections':[]};switch(_0x23425d[_0xc430('0x10')]()){case _0xc430('0x11'):_0x4efecd['childModel']=_0xc430('0x12');break;case'odbc':_0x4efecd[_0xc430('0x13')]='SquareOdbc';break;case _0xc430('0x14'):_0x4efecd[_0xc430('0x13')]='SquareRecording';_0x4efecd[_0xc430('0x15')]=[{'name':_0xc430('0x16'),'field':_0xc430('0xb'),'foreignKey':_0xc430('0x17')}];break;case _0xc430('0x18'):_0x4efecd['childModel']=_0xc430('0x19');break;case _0xc430('0x1a'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x1b');_0x4efecd['parentSections']=[{'name':_0xc430('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0xc430('0x1d'):_0x4efecd['childModel']=_0xc430('0x1e');break;case _0xc430('0x1f'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x20');break;case'globalcustomfields':_0x4efecd[_0xc430('0x13')]=_0xc430('0x21');break;case _0xc430('0x22'):_0x4efecd[_0xc430('0x13')]='ChatQueue';break;case _0xc430('0x23'):_0x4efecd[_0xc430('0x13')]='ChatWebsite';break;case _0xc430('0x24'):_0x4efecd['childModel']='FaxQueue';break;case _0xc430('0x25'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x26');break;case _0xc430('0x27'):case _0xc430('0x28'):case _0xc430('0x29'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x2a');break;case'contexts':_0x4efecd[_0xc430('0x13')]='VoiceContext';break;case _0xc430('0x2b'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x2c');break;case _0xc430('0x2d'):_0x4efecd['childModel']=_0xc430('0x2e');_0x4efecd['parentSections']=[{'name':'Agents','field':_0xc430('0xb'),'foreignKey':_0xc430('0x2f'),'model':'User','filter':{'field':_0xc430('0x30'),'value':[_0xc430('0x31')]}},{'name':_0xc430('0x32'),'field':_0xc430('0xb'),'foreignKey':_0xc430('0x2f'),'model':_0xc430('0x33'),'filter':{'field':_0xc430('0x30'),'value':[_0xc430('0x34')]}},{'name':_0xc430('0x35'),'field':_0xc430('0xb'),'foreignKey':_0xc430('0x36'),'model':_0xc430('0x37'),'filter':{'field':_0xc430('0x38'),'value':[_0xc430('0x39')]}},{'name':_0xc430('0x3a'),'field':'name','foreignKey':_0xc430('0x36'),'model':_0xc430('0x37'),'filter':{'field':_0xc430('0x38'),'value':[_0xc430('0x3b')]}}];break;case'musiconholds':_0x4efecd[_0xc430('0x13')]=_0xc430('0x3c');break;case _0xc430('0x3d'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x3e');break;case _0xc430('0x3f'):_0x4efecd['childModel']=_0xc430('0x40');break;case _0xc430('0x41'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x42');break;case _0xc430('0x43'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x44');break;case _0xc430('0x45'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x46');break;case _0xc430('0x47'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x48');break;case _0xc430('0x49'):_0x4efecd['childModel']='OpenchannelQueue';break;case'openchannelaccounts':_0x4efecd[_0xc430('0x13')]=_0xc430('0x4a');break;case _0xc430('0x4b'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x4c');break;case _0xc430('0x4d'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x4e');break;case _0xc430('0x4f'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x50');break;case _0xc430('0x51'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x52');break;case _0xc430('0x53'):_0x4efecd[_0xc430('0x13')]='Team';break;case _0xc430('0x54'):case _0xc430('0x55'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x37');if(_0x22ebfb){_0x4efecd[_0xc430('0x15')]=[{'name':_0xc430('0x35')},{'name':_0xc430('0x3a')}];}break;case _0xc430('0x56'):case'agents':case _0xc430('0x57'):_0x4efecd['childModel']=_0xc430('0x33');if(_0x22ebfb){_0x4efecd[_0xc430('0x15')]=[{'name':'Users','filter':{'field':'role','value':[_0xc430('0x58'),'user']},'ignore':!![]},{'name':'Agents'},{'name':_0xc430('0x32')}];}break;case'zendeskaccounts':_0x4efecd[_0xc430('0x13')]=_0xc430('0x59');break;case _0xc430('0x5a'):_0x4efecd['childModel']=_0xc430('0x5b');break;case _0xc430('0x5c'):_0x4efecd[_0xc430('0x13')]='FreshdeskAccount';break;case _0xc430('0x5d'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x5e');break;case _0xc430('0x5f'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x60');break;case _0xc430('0x61'):_0x4efecd['childModel']=_0xc430('0x62');break;case _0xc430('0x63'):_0x4efecd[_0xc430('0x13')]='User';break;case _0xc430('0x64'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x65');break;case _0xc430('0x66'):_0x4efecd['childModel']=_0xc430('0x67');break;case'customdashboards':_0x4efecd[_0xc430('0x13')]=_0xc430('0x68');break;case _0xc430('0x69'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x6a');break;case _0xc430('0x6b'):_0x4efecd['childModel']=_0xc430('0x6c');break;case _0xc430('0x6d'):_0x4efecd['childModel']=_0xc430('0x6e');break;case _0xc430('0x6f'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x70');break;case'tags':_0x4efecd[_0xc430('0x13')]='Tag';break;case _0xc430('0x71'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x72');break;case _0xc430('0x73'):_0x4efecd['childModel']=_0xc430('0x74');break;case _0xc430('0x75'):_0x4efecd['childModel']='Trunk';break;case _0xc430('0x76'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x77');break;case _0xc430('0x78'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x79');break;case _0xc430('0x7a'):_0x4efecd['childModel']=_0xc430('0xe');_0x4efecd['parentSections']=[{'name':_0xc430('0x7b'),'field':'id','foreignKey':_0xc430('0x7c')}];break;case _0xc430('0x7d'):_0x4efecd[_0xc430('0x13')]=_0xc430('0x7e');break;}return _0x4efecd;}function _0x12b6f2(_0x540653,_0x1b2214){var _0x325387=_0x540653[_0xc430('0x7f')](0x0)[_0xc430('0x80')]()+_0x540653[_0xc430('0x81')](0x1);var _0xb4d28f={'type':_0x503988[_0xc430('0x82')]['QueryTypes'][_0xc430('0x83')],'raw':!![]};return new Promise(function(_0x52b5b4,_0x2a4ad3){var _0x4cc37b=squel[_0xc430('0x84')]()[_0xc430('0x4')](_0xc430('0x85')+_0x325387+_0xc430('0x86'),'id')[_0xc430('0x4')](_0xc430('0x87'))['from'](_0xc430('0x88')+_0x540653+_0xc430('0x89'),'ui')['where']('ui.UserId\x20=\x20?',_0x1b2214['id']);return _0x503988[_0xc430('0x8a')][_0xc430('0x8b')](_0x4cc37b[_0xc430('0x8c')](),_0xb4d28f)[_0xc430('0x7')](function(_0x3ca9ac){_0x1b2214[_0x325387+_0xc430('0x8d')]=_0x3ca9ac;_0x52b5b4(_0x3ca9ac);})[_0xc430('0xc')](function(_0x28fa9f){_0x2a4ad3(_0x28fa9f);});});}return _0x1d5b5e[_0xc430('0x8e')](_0xc430('0x8f'),attributes,{'tableName':_0xc430('0x90'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x28199b){var _0x56cc9c={'raw':![],'where':{}};var _0x52e622={};var _0x4547e7={'count':0x0,'rows':[]};var _0x56c6a8=_0x28199b[_0xc430('0x8b')][_0xc430('0x91')];var _0x541286=_0x28199b[_0xc430('0x8b')]['mergeResources']||![];var _0x4f4c0b=_0x57d26e(_0x56c6a8,_0x541286);if(!_0x4f4c0b[_0xc430('0x13')])throw new Error(_0xc430('0x92')+_0x56c6a8+'\x27');var _0x52f398=[{'name':_0x56c6a8}];if(!_[_0xc430('0x93')](_0x4f4c0b['parentSections']))_0x52f398=_0x4f4c0b['parentSections'];var _0x173792=[];for(var _0x3ab0ac=0x0;_0x3ab0ac<_0x52f398[_0xc430('0x94')];_0x3ab0ac++){_0x173792[_0xc430('0x95')](_0x503988['UserProfileSection'][_0xc430('0x96')]({'where':{'userProfileId':_0x28199b[_0xc430('0x97')]['id'],'name':_0x52f398[_0x3ab0ac][_0xc430('0xb')]},'raw':!![]}));}return Promise[_0xc430('0x98')](_0x173792)['then'](function(_0x31f2e8){var _0x170e3c=_[_0xc430('0x3')](_0x31f2e8,function(_0x304d1a){return _0x304d1a?_0x304d1a:undefined;});var _0x242160=_[_0xc430('0x3')](_0x52f398,[_0xc430('0x99'),!![]]);var _0x186925=_[_0xc430('0x93')](_0x170e3c)&&_[_0xc430('0x93')](_0x242160)?null:_[_0xc430('0x9a')](_0x242160,_0x170e3c);if(!_0x186925)return null;var _0x572a95=[];for(var _0x4f390c=0x0;_0x4f390c<_0x186925['length'];_0x4f390c++){var _0x4000c0=_[_0xc430('0x96')](_0x52f398,function(_0xdde142){return _0x186925[_0x4f390c]?_0xdde142['name']===_0x186925[_0x4f390c]['name']:null;});if(_0x4000c0){if(_0x186925[_0x4f390c][_0xc430('0x99')]){_0x572a95[_0xc430('0x95')](_0x5ccda6(_0x4f4c0b[_0xc430('0x13')],_0x186925[_0x4f390c]));}else{if(!_0x186925[_0x4f390c][_0xc430('0x9b')]){_0x572a95[_0xc430('0x95')](_0x111598(_0x4000c0,_0x186925[_0x4f390c],_0x4f4c0b[_0xc430('0x13')]));}else{if(_0x4000c0[_0xc430('0xa')]){_0x572a95[_0xc430('0x95')](_0x2b47d6(_0x4000c0,_0x186925[_0x4f390c]));}}}}}return Promise[_0xc430('0x98')](_0x572a95);})[_0xc430('0x7')](function(_0x5ca0f2){var _0x6debfb=_0x5ca0f2;var _0x43ad3d=null;if(_0x6debfb){_0x43ad3d=_0x6debfb[_0xc430('0x94')]===0x1?_0x6debfb[0x0]:null;}if(!_0x43ad3d&&!_0x6debfb)return _0x4547e7;var _0x4e21bc=_0x503988[_0x4f4c0b['childModel']]['rawAttributes'];_0x52e622[_0xc430('0xa')]=_[_0xc430('0x9c')](_0x4e21bc);_0x52e622[_0xc430('0x8b')]=_[_0xc430('0x9c')](_0x28199b['query']);_0x52e622[_0xc430('0x9d')]=_[_0xc430('0x9e')](_0x52e622[_0xc430('0xa')],_0x52e622['query']);_0x56cc9c[_0xc430('0x9f')]=_['intersection'](_0x52e622[_0xc430('0xa')],qs[_0xc430('0xa0')](_0x28199b[_0xc430('0x8b')][_0xc430('0xa0')]));_0x56cc9c[_0xc430('0x9f')]=_0x56cc9c['attributes'][_0xc430('0x94')]?_0x56cc9c[_0xc430('0x9f')]:_0x52e622[_0xc430('0xa')];if(!_0x28199b[_0xc430('0x8b')]['hasOwnProperty']('nolimit')){_0x56cc9c[_0xc430('0xa1')]=qs['limit'](_0x28199b['query'][_0xc430('0xa1')]);_0x56cc9c[_0xc430('0xa2')]=qs['offset'](_0x28199b[_0xc430('0x8b')][_0xc430('0xa2')]);}_0x56cc9c[_0xc430('0xa3')]=qs[_0xc430('0xa4')](_0x28199b[_0xc430('0x8b')][_0xc430('0xa4')]);_0x56cc9c['where']=qs[_0xc430('0x9d')](_[_0xc430('0xa5')](_0x28199b[_0xc430('0x8b')],_0x52e622[_0xc430('0x9d')]));if(_0x28199b['query'][_0xc430('0x3')]){_0x56cc9c[_0xc430('0xa6')]=_[_0xc430('0xa7')](_0x56cc9c['where'],{'$or':_[_0xc430('0x9')](_0x4e21bc,function(_0x5c31f1){if(_0x5c31f1['type'][_0xc430('0xa8')]!=='VIRTUAL'){var _0x2f2032={};_0x2f2032[_0x5c31f1['field']]={'$like':'%'+_0x28199b[_0xc430('0x8b')][_0xc430('0x3')]+'%'};return _0x2f2032;}})});}var _0x4feb16=[];var _0x3433ca=null;var _0x12a26b={};if(_0x43ad3d){_0x3433ca=_['find'](_0x52f398,[_0xc430('0xb'),_0x43ad3d[_0xc430('0xb')]]);if(_0x3433ca['field']){_0x12a26b={};if(_0x4f4c0b[_0xc430('0x13')]===_0xc430('0xe')){_0x12a26b[_0x3433ca['foreignKey']]=_[_0xc430('0x9')](_0x43ad3d[_0xc430('0x8')],'id');}else{_0x12a26b[_0x3433ca[_0xc430('0xa9')]]=_0x43ad3d[_0xc430('0x8')];}_0x4feb16[_0xc430('0x95')](_0x12a26b);}else{_0x56cc9c[_0xc430('0xa6')]['id']=_0x43ad3d[_0xc430('0x8')];}}else{for(var _0x1aa5f7=0x0;_0x1aa5f7<_0x6debfb[_0xc430('0x94')];_0x1aa5f7++){_0x3433ca=_[_0xc430('0x96')](_0x52f398,[_0xc430('0xb'),_0x6debfb[_0x1aa5f7]['name']]);if(_0x3433ca[_0xc430('0x4')]){_0x12a26b={};_0x12a26b[_0x3433ca[_0xc430('0xa9')]]=_0x6debfb[_0x1aa5f7][_0xc430('0x8')];_0x4feb16['push'](_0x12a26b);}else{if(!_0x56cc9c['where']['id'])_0x56cc9c[_0xc430('0xa6')]['id']=[];_0x6debfb[_0x1aa5f7]['associatedResources'][_0xc430('0xaa')](function(_0x2801c6){_0x56cc9c['where']['id']['push'](_0x2801c6);});}}}if(!_[_0xc430('0x93')](_0x4feb16)){_0x56cc9c[_0xc430('0xa6')]=_[_0xc430('0xa7')](_0x56cc9c['where'],{'$and':{'$or':_0x4feb16}});}_0x56cc9c=_[_0xc430('0xa7')]({},_0x56cc9c,_0x28199b['options']);if(_0x43ad3d&&!_0x43ad3d['autoAssociation']&&_0x4f4c0b[_0xc430('0x13')]===_0xc430('0xe')){if(_0x28199b[_0xc430('0x8b')]['includeAll']){_0x56cc9c[_0xc430('0xab')]=[{'all':!![]}];}return _0x503988[_0x4f4c0b[_0xc430('0x13')]][_0xc430('0x6')](_0x56cc9c)[_0xc430('0x7')](function(_0x4054b8){var _0x4d9ba8=[];_0x4054b8['forEach'](function(_0x1d0236){var _0x251b15;switch(_0x1d0236[_0xc430('0xac')]){case _0xc430('0xad'):_0x251b15=_[_0xc430('0x96')](_0x43ad3d[_0xc430('0x8')],function(_0x3b2804){return _0x3b2804['id']===_0x1d0236[_0xc430('0x7c')]&&_0x3b2804[_0xc430('0x38')]===_0xc430('0xae');});break;case _0xc430('0xaf'):_0x251b15=_['find'](_0x43ad3d[_0xc430('0x8')],function(_0x96deb0){return _0x96deb0['id']===_0x1d0236[_0xc430('0x7c')]&&_0x96deb0[_0xc430('0x38')]==='CustomReports';});break;}if(_0x251b15)_0x4d9ba8['push'](_0x1d0236);});_0x4547e7[_0xc430('0xb0')]=_0x4d9ba8['length'];_0x4547e7[_0xc430('0xb1')]=_0x4d9ba8;return _0x4547e7;});}else{return _0x503988[_0x4f4c0b[_0xc430('0x13')]][_0xc430('0xb0')]({'where':_0x56cc9c[_0xc430('0xa6')]})[_0xc430('0x7')](function(_0x59c102){_0x4547e7['count']=_0x59c102;if(_0x28199b['query']['includeAll']){if(_0x4f4c0b[_0xc430('0x13')]==='CmContact'){_0x56cc9c['include']=[{'model':_0x503988[_0xc430('0xb2')],'as':_0xc430('0xb3'),'attributes':['id',_0xc430('0xb'),_0xc430('0xb4')],'required':_0x28199b[_0xc430('0x8b')][_0xc430('0xb5')]?!![]:![]},{'model':_0x503988[_0xc430('0xb2')],'as':_0xc430('0xb6'),'attributes':['id',_0xc430('0xb'),_0xc430('0xb4')],'through':_0x28199b[_0xc430('0x8b')][_0xc430('0xb5')]?{'attributes':[],'where':{'TagId':_0x28199b[_0xc430('0x8b')]['tag']||undefined}}:{},'required':_0x28199b[_0xc430('0x8b')][_0xc430('0xb5')]?!![]:![]}];}else{_0x56cc9c[_0xc430('0xab')]=[{'all':!![]}];}}return _0x503988[_0x4f4c0b[_0xc430('0x13')]][_0xc430('0x6')](_0x56cc9c);})[_0xc430('0x7')](function(_0x369446){_0x4547e7[_0xc430('0xb1')]=_0x369446;if(_0x56c6a8==='Agents'&&_0x28199b[_0xc430('0x8b')][_0xc430('0xb7')]==='true'){var _0x3bd6e1=[];for(var _0x1a17ae=0x0;_0x1a17ae<_0x4547e7[_0xc430('0xb1')][_0xc430('0x94')];_0x1a17ae++){_0x3bd6e1['push'](_0x12b6f2(_0xc430('0xb8'),_0x4547e7['rows'][_0x1a17ae]['dataValues']));_0x3bd6e1[_0xc430('0x95')](_0x12b6f2(_0xc430('0xb9'),_0x4547e7[_0xc430('0xb1')][_0x1a17ae][_0xc430('0xba')]));_0x3bd6e1[_0xc430('0x95')](_0x12b6f2(_0xc430('0xbb'),_0x4547e7['rows'][_0x1a17ae][_0xc430('0xba')]));_0x3bd6e1[_0xc430('0x95')](_0x12b6f2(_0xc430('0xbc'),_0x4547e7[_0xc430('0xb1')][_0x1a17ae][_0xc430('0xba')]));_0x3bd6e1[_0xc430('0x95')](_0x12b6f2(_0xc430('0xbd'),_0x4547e7[_0xc430('0xb1')][_0x1a17ae][_0xc430('0xba')]));_0x3bd6e1[_0xc430('0x95')](_0x12b6f2('whatsapp',_0x4547e7[_0xc430('0xb1')][_0x1a17ae][_0xc430('0xba')]));}return Promise['all'](_0x3bd6e1)['then'](function(){return _0x4547e7;});}return _0x4547e7;});}});}}});};
\ No newline at end of file
index 030a6f1..a4ad231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9505=['request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','info','UserProfile,\x20%s,\x20%s'];(function(_0x1833ee,_0x1a246d){var _0x2b2812=function(_0x140041){while(--_0x140041){_0x1833ee['push'](_0x1833ee['shift']());}};_0x2b2812(++_0x1a246d);}(_0x9505,0x1e5));var _0x5950=function(_0x442650,_0x26c15f){_0x442650=_0x442650-0x0;var _0xc262fe=_0x9505[_0x442650];return _0xc262fe;};'use strict';var _=require(_0x5950('0x0'));var util=require(_0x5950('0x1'));var moment=require('moment');var BPromise=require(_0x5950('0x2'));var rs=require(_0x5950('0x3'));var fs=require('fs');var Redis=require(_0x5950('0x4'));var db=require(_0x5950('0x5'))['db'];var utils=require(_0x5950('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5950('0x7'));var jayson=require(_0x5950('0x8'));var client=jayson[_0x5950('0x9')][_0x5950('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5950('0xb')],{'host':_0x5950('0xc'),'port':0x18eb});var socket=require(_0x5950('0xd'))(new Redis(config[_0x5950('0xb')]));require(_0x5950('0xe'))[_0x5950('0xf')](socket);function respondWithRpcPromise(_0x1148ef,_0x213e3b,_0x1c8f39){return new BPromise(function(_0x5ef4ab,_0x32f2e0){return client[_0x5950('0x10')](_0x1148ef,_0x1c8f39)['then'](function(_0x5a6098){logger[_0x5950('0x11')](_0x5950('0x12'),_0x213e3b,_0x5950('0x13'));logger[_0x5950('0x14')](_0x5950('0x15'),_0x213e3b,_0x5950('0x13'),JSON[_0x5950('0x16')](_0x5a6098));if(_0x5a6098[_0x5950('0x17')]){if(_0x5a6098[_0x5950('0x17')][_0x5950('0x18')]===0x1f4){logger[_0x5950('0x17')](_0x5950('0x12'),_0x213e3b,_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);return _0x32f2e0(_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);}logger[_0x5950('0x17')](_0x5950('0x12'),_0x213e3b,_0x5a6098[_0x5950('0x17')][_0x5950('0x19')]);return _0x5ef4ab(_0x5a6098[_0x5950('0x17')]['message']);}else{logger['info'](_0x5950('0x12'),_0x213e3b,_0x5950('0x13'));_0x5ef4ab(_0x5a6098[_0x5950('0x1a')][_0x5950('0x19')]);}})[_0x5950('0x1b')](function(_0x483aaf){logger['error'](_0x5950('0x12'),_0x213e3b,_0x483aaf);_0x32f2e0(_0x483aaf);});});}
\ No newline at end of file
+var _0xa6b0=['socket.io-emitter','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x1a5faf,_0x3b6d0a){var _0x2911fd=function(_0x457629){while(--_0x457629){_0x1a5faf['push'](_0x1a5faf['shift']());}};_0x2911fd(++_0x3b6d0a);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x2245eb,_0x3d6660){_0x2245eb=_0x2245eb-0x0;var _0x55117c=_0xa6b0[_0x2245eb];return _0x55117c;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a6b('0x2'));var fs=require('fs');var Redis=require(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a6b('0x5'))(_0x0a6b('0x6'));var config=require(_0x0a6b('0x7'));var jayson=require(_0x0a6b('0x8'));var client=jayson[_0x0a6b('0x9')][_0x0a6b('0xa')]({'port':0x232a});config[_0x0a6b('0xb')]=_[_0x0a6b('0xc')](config[_0x0a6b('0xb')],{'host':_0x0a6b('0xd'),'port':0x18eb});var socket=require(_0x0a6b('0xe'))(new Redis(config[_0x0a6b('0xb')]));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x25b93d,_0x100da8,_0xbdb0d0){return new BPromise(function(_0x25ad47,_0x81a412){return client[_0x0a6b('0xf')](_0x25b93d,_0xbdb0d0)[_0x0a6b('0x10')](function(_0x405046){logger[_0x0a6b('0x11')](_0x0a6b('0x12'),_0x100da8,_0x0a6b('0x13'));logger[_0x0a6b('0x14')](_0x0a6b('0x15'),_0x100da8,_0x0a6b('0x13'),JSON['stringify'](_0x405046));if(_0x405046['error']){if(_0x405046[_0x0a6b('0x16')][_0x0a6b('0x17')]===0x1f4){logger[_0x0a6b('0x16')](_0x0a6b('0x12'),_0x100da8,_0x405046[_0x0a6b('0x16')][_0x0a6b('0x18')]);return _0x81a412(_0x405046[_0x0a6b('0x16')][_0x0a6b('0x18')]);}logger[_0x0a6b('0x16')](_0x0a6b('0x12'),_0x100da8,_0x405046['error'][_0x0a6b('0x18')]);return _0x25ad47(_0x405046[_0x0a6b('0x16')]['message']);}else{logger[_0x0a6b('0x11')]('UserProfile,\x20%s,\x20%s',_0x100da8,_0x0a6b('0x13'));_0x25ad47(_0x405046[_0x0a6b('0x19')][_0x0a6b('0x18')]);}})[_0x0a6b('0x1a')](function(_0x5c512a){logger[_0x0a6b('0x16')](_0x0a6b('0x12'),_0x100da8,_0x5c512a);_0x81a412(_0x5c512a);});});}
\ No newline at end of file
index 9689b2e..6f28dee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4909=['remove','removeListener','register','userProfile:','./userProfile.events','save'];(function(_0x4b4f32,_0x2b7521){var _0x394e1f=function(_0x385737){while(--_0x385737){_0x4b4f32['push'](_0x4b4f32['shift']());}};_0x394e1f(++_0x2b7521);}(_0x4909,0x112));var _0x9490=function(_0xf273f9,_0x486198){_0xf273f9=_0xf273f9-0x0;var _0xb4abcc=_0x4909[_0xf273f9];return _0xb4abcc;};'use strict';var UserProfileEvents=require(_0x9490('0x0'));var events=[_0x9490('0x1'),_0x9490('0x2'),'update'];function createListener(_0x4b2c8a,_0x3bff7c){return function(_0x5efcae){_0x3bff7c['emit'](_0x4b2c8a,_0x5efcae);};}function removeListener(_0x5bcdc5,_0x147b9e){return function(){UserProfileEvents[_0x9490('0x3')](_0x5bcdc5,_0x147b9e);};}exports[_0x9490('0x4')]=function(_0x4f1df6){for(var _0x64c0b8=0x0,_0x1f2894=events['length'];_0x64c0b8<_0x1f2894;_0x64c0b8++){var _0x5c4934=events[_0x64c0b8];var _0x3cb61a=createListener(_0x9490('0x5')+_0x5c4934,_0x4f1df6);UserProfileEvents['on'](_0x5c4934,_0x3cb61a);}};
\ No newline at end of file
+var _0x6d0e=['removeListener','register','length','userProfile:','remove'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x6d0e,0x13a));var _0xe6d0=function(_0x5135ee,_0x4809fb){_0x5135ee=_0x5135ee-0x0;var _0x45dcf8=_0x6d0e[_0x5135ee];return _0x45dcf8;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save',_0xe6d0('0x0'),'update'];function createListener(_0x56924f,_0xa18702){return function(_0x174bd7){_0xa18702['emit'](_0x56924f,_0x174bd7);};}function removeListener(_0x433673,_0x15e4a3){return function(){UserProfileEvents[_0xe6d0('0x1')](_0x433673,_0x15e4a3);};}exports[_0xe6d0('0x2')]=function(_0x43a63e){for(var _0x1d4493=0x0,_0x4bb6fb=events[_0xe6d0('0x3')];_0x1d4493<_0x4bb6fb;_0x1d4493++){var _0x3c17b3=events[_0x1d4493];var _0x41c18b=createListener(_0xe6d0('0x4')+_0x3c17b3,_0x43a63e);UserProfileEvents['on'](_0x3c17b3,_0x41c18b);}};
\ No newline at end of file
index a4b184e..d5222a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb76=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./userProfileResource.controller','isAuthenticated','get','/describe','/:id','post','delete','destroy','exports','multer'];(function(_0xd6142f,_0x210886){var _0xa0a4c4=function(_0x2b4167){while(--_0x2b4167){_0xd6142f['push'](_0xd6142f['shift']());}};_0xa0a4c4(++_0x210886);}(_0xeb76,0xff));var _0x6eb7=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xeb76[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x6eb7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6eb7('0x1'));var express=require(_0x6eb7('0x2'));var router=express[_0x6eb7('0x3')]();var fs_extra=require(_0x6eb7('0x4'));var auth=require(_0x6eb7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6eb7('0x6'));var controller=require(_0x6eb7('0x7'));router['get']('/',auth[_0x6eb7('0x8')](),controller['index']);router[_0x6eb7('0x9')](_0x6eb7('0xa'),auth[_0x6eb7('0x8')](),controller['describe']);router[_0x6eb7('0x9')](_0x6eb7('0xb'),auth[_0x6eb7('0x8')](),controller['show']);router[_0x6eb7('0xc')]('/',auth[_0x6eb7('0x8')](),controller['create']);router['put'](_0x6eb7('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6eb7('0xd')](_0x6eb7('0xb'),auth[_0x6eb7('0x8')](),controller[_0x6eb7('0xe')]);module[_0x6eb7('0xf')]=router;
\ No newline at end of file
+var _0xfeea=['get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfeea,0xe8));var _0xafee=function(_0x4e7abc,_0x2aeca1){_0x4e7abc=_0x4e7abc-0x0;var _0x428796=_0xfeea[_0x4e7abc];return _0x428796;};'use strict';var multer=require(_0xafee('0x0'));var util=require(_0xafee('0x1'));var path=require(_0xafee('0x2'));var timeout=require(_0xafee('0x3'));var express=require(_0xafee('0x4'));var router=express[_0xafee('0x5')]();var fs_extra=require(_0xafee('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xafee('0x7'));var config=require(_0xafee('0x8'));var controller=require(_0xafee('0x9'));router[_0xafee('0xa')]('/',auth[_0xafee('0xb')](),controller[_0xafee('0xc')]);router[_0xafee('0xa')](_0xafee('0xd'),auth['isAuthenticated'](),controller[_0xafee('0xe')]);router[_0xafee('0xa')](_0xafee('0xf'),auth[_0xafee('0xb')](),controller[_0xafee('0x10')]);router[_0xafee('0x11')]('/',auth['isAuthenticated'](),controller[_0xafee('0x12')]);router['put'](_0xafee('0xf'),auth['isAuthenticated'](),controller['update']);router[_0xafee('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xafee('0x14')]);module[_0xafee('0x15')]=router;
\ No newline at end of file
index ae4aa78..517a93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a87=['STRING','exports','INTEGER'];(function(_0x5289fd,_0x55e4d3){var _0x9f3642=function(_0x103400){while(--_0x103400){_0x5289fd['push'](_0x5289fd['shift']());}};_0x9f3642(++_0x55e4d3);}(_0x1a87,0x199));var _0x71a8=function(_0x12ffe6,_0x550262){_0x12ffe6=_0x12ffe6-0x0;var _0x59fbc9=_0x1a87[_0x12ffe6];return _0x59fbc9;};'use strict';var Sequelize=require('sequelize');module[_0x71a8('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x71a8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x71a8('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x284c=['exports','STRING','INTEGER'];(function(_0x533464,_0x3cb68e){var _0x107266=function(_0x59da0f){while(--_0x59da0f){_0x533464['push'](_0x533464['shift']());}};_0x107266(++_0x3cb68e);}(_0x284c,0x66));var _0xc284=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x284c[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require('sequelize');module[_0xc284('0x0')]={'name':{'type':Sequelize[_0xc284('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xc284('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xc284('0x1')],'allowNull':![]}};
\ No newline at end of file
index f86496b..2ca7918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','describe','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus'];(function(_0x5e8fc,_0x1ccc06){var _0x41c58c=function(_0x495f2c){while(--_0x495f2c){_0x5e8fc['push'](_0x5e8fc['shift']());}};_0x41c58c(++_0x1ccc06);}(_0x430c,0x1a1));var _0xc430=function(_0x10dfdf,_0x36b623){_0x10dfdf=_0x10dfdf-0x0;var _0x4d857d=_0x430c[_0x10dfdf];return _0x4d857d;};'use strict';var emlformat=require(_0xc430('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc430('0x1'));var rp=require(_0xc430('0x2'));var moment=require(_0xc430('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc430('0x4'));var csv=require(_0xc430('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc430('0x6'));var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0x5'));var querystring=require(_0xc430('0xb'));var Papa=require(_0xc430('0xc'));var Redis=require(_0xc430('0xd'));var authService=require(_0xc430('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc430('0xf'));var hardwareService=require(_0xc430('0x10'));var logger=require('../../config/logger')(_0xc430('0x11'));var utils=require('../../config/utils');var config=require(_0xc430('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc430('0x13'))['db'];function respondWithStatusCode(_0x8aa2e6,_0xc5f92){_0xc5f92=_0xc5f92||0xcc;return function(_0x1fb8ce){if(_0x1fb8ce){return _0x8aa2e6[_0xc430('0x14')](_0xc5f92);}return _0x8aa2e6[_0xc430('0x15')](_0xc5f92)[_0xc430('0x16')]();};}function respondWithResult(_0x54d851,_0x4e9134){_0x4e9134=_0x4e9134||0xc8;return function(_0x3f359c){if(_0x3f359c){return _0x54d851[_0xc430('0x15')](_0x4e9134)[_0xc430('0x17')](_0x3f359c);}};}function respondWithFilteredResult(_0x2ef538,_0x31d3b7){return function(_0x55cc6c){if(_0x55cc6c){var _0x111598=typeof _0x31d3b7['offset']==='undefined'&&typeof _0x31d3b7[_0xc430('0x18')]===_0xc430('0x19');var _0x2327c5=_0x55cc6c['count'];var _0x5d3acc=_0x111598?0x0:_0x31d3b7[_0xc430('0x1a')];var _0x4c1937=_0x111598?_0x55cc6c[_0xc430('0x1b')]:_0x31d3b7['offset']+_0x31d3b7['limit'];var _0x2f3203;if(_0x4c1937>=_0x2327c5){_0x4c1937=_0x2327c5;_0x2f3203=0xc8;}else{_0x2f3203=0xce;}_0x2ef538['status'](_0x2f3203);return _0x2ef538[_0xc430('0x1c')](_0xc430('0x1d'),_0x5d3acc+'-'+_0x4c1937+'/'+_0x2327c5)[_0xc430('0x17')](_0x55cc6c);}return null;};}function patchUpdates(_0x1f90bb){return function(_0x2a1ea1){try{jsonpatch['apply'](_0x2a1ea1,_0x1f90bb,!![]);}catch(_0x388a2f){return BPromise['reject'](_0x388a2f);}return _0x2a1ea1['save']();};}function saveUpdates(_0x3b7c3d,_0x2ea352){return function(_0x3c7afa){if(_0x3c7afa){return _0x3c7afa['update'](_0x3b7c3d)[_0xc430('0x1e')](function(_0x57d26e){return _0x57d26e;});}return null;};}function removeEntity(_0x23425d,_0x22ebfb){return function(_0x4efecd){if(_0x4efecd){return _0x4efecd[_0xc430('0x1f')]()[_0xc430('0x1e')](function(){_0x23425d['status'](0xcc)[_0xc430('0x16')]();});}};}function handleEntityNotFound(_0x59c498,_0x3aa85e){return function(_0x4b5280){if(!_0x4b5280){_0x59c498[_0xc430('0x14')](0x194);}return _0x4b5280;};}function handleError(_0x21e28a,_0x50110b){_0x50110b=_0x50110b||0x1f4;return function(_0x33433f){logger[_0xc430('0x20')](_0x33433f[_0xc430('0x21')]);if(_0x33433f[_0xc430('0x22')]){delete _0x33433f[_0xc430('0x22')];}_0x21e28a['status'](_0x50110b)[_0xc430('0x23')](_0x33433f);};}exports[_0xc430('0x24')]=function(_0x1c1da9,_0x1591e3){var _0x542cba={},_0x1f8086={},_0x4cf56c={'count':0x0,'rows':[]};var _0x1d65ee=_['map'](db[_0xc430('0x25')][_0xc430('0x26')],function(_0xfc8767){return{'name':_0xfc8767[_0xc430('0x27')],'type':_0xfc8767['type'][_0xc430('0x28')]};});_0x1f8086[_0xc430('0x29')]=_[_0xc430('0x2a')](_0x1d65ee,_0xc430('0x22'));_0x1f8086['query']=_[_0xc430('0x2b')](_0x1c1da9[_0xc430('0x2c')]);_0x1f8086['filters']=_[_0xc430('0x2d')](_0x1f8086['model'],_0x1f8086['query']);_0x542cba[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x1f8086[_0xc430('0x29')],qs[_0xc430('0x2f')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x2f')]));_0x542cba[_0xc430('0x2e')]=_0x542cba[_0xc430('0x2e')]['length']?_0x542cba[_0xc430('0x2e')]:_0x1f8086['model'];if(!_0x1c1da9[_0xc430('0x2c')][_0xc430('0x30')](_0xc430('0x31'))){_0x542cba[_0xc430('0x18')]=qs['limit'](_0x1c1da9[_0xc430('0x2c')]['limit']);_0x542cba['offset']=qs[_0xc430('0x1a')](_0x1c1da9[_0xc430('0x2c')]['offset']);}_0x542cba[_0xc430('0x32')]=qs[_0xc430('0x33')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x33')]);_0x542cba[_0xc430('0x34')]=qs[_0xc430('0x35')](_[_0xc430('0x36')](_0x1c1da9[_0xc430('0x2c')],_0x1f8086[_0xc430('0x35')]),_0x1d65ee);if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x37')]){_0x542cba[_0xc430('0x34')]=_[_0xc430('0x38')](_0x542cba[_0xc430('0x34')],{'$or':_[_0xc430('0x2a')](_0x1d65ee,function(_0x537e4c){if(_0x537e4c[_0xc430('0x39')]!==_0xc430('0x3a')){var _0x24363b={};_0x24363b[_0x537e4c[_0xc430('0x22')]]={'$like':'%'+_0x1c1da9['query'][_0xc430('0x37')]+'%'};return _0x24363b;}})});}_0x542cba=_[_0xc430('0x38')]({},_0x542cba,_0x1c1da9[_0xc430('0x3b')]);var _0x45b3dc={'where':_0x542cba[_0xc430('0x34')]};return db[_0xc430('0x25')]['count'](_0x45b3dc)[_0xc430('0x1e')](function(_0x348f2f){_0x4cf56c[_0xc430('0x1b')]=_0x348f2f;if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x3c')]){_0x542cba[_0xc430('0x3d')]=[{'all':!![]}];}return db[_0xc430('0x25')][_0xc430('0x3e')](_0x542cba);})[_0xc430('0x1e')](function(_0x4174d2){_0x4cf56c[_0xc430('0x3f')]=_0x4174d2;return _0x4cf56c;})[_0xc430('0x1e')](respondWithFilteredResult(_0x1591e3,_0x542cba))[_0xc430('0x40')](handleError(_0x1591e3,null));};exports[_0xc430('0x41')]=function(_0x5a9c4b,_0x47edb0){var _0x4983e0={'raw':![],'where':{'id':_0x5a9c4b[_0xc430('0x42')]['id']}},_0x262063={};_0x262063[_0xc430('0x29')]=_[_0xc430('0x2b')](db[_0xc430('0x25')][_0xc430('0x26')]);_0x262063[_0xc430('0x2c')]=_[_0xc430('0x2b')](_0x5a9c4b[_0xc430('0x2c')]);_0x262063[_0xc430('0x35')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],_0x262063[_0xc430('0x2c')]);_0x4983e0[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],qs['fields'](_0x5a9c4b[_0xc430('0x2c')][_0xc430('0x2f')]));_0x4983e0[_0xc430('0x2e')]=_0x4983e0[_0xc430('0x2e')][_0xc430('0x43')]?_0x4983e0[_0xc430('0x2e')]:_0x262063[_0xc430('0x29')];if(_0x5a9c4b[_0xc430('0x2c')]['includeAll']){_0x4983e0[_0xc430('0x3d')]=[{'all':!![]}];}_0x4983e0=_['merge']({},_0x4983e0,_0x5a9c4b[_0xc430('0x3b')]);return db[_0xc430('0x25')]['find'](_0x4983e0)['then'](handleEntityNotFound(_0x47edb0,null))[_0xc430('0x1e')](respondWithResult(_0x47edb0,null))['catch'](handleError(_0x47edb0,null));};exports['create']=function(_0x10db27,_0x4eafae){return db[_0xc430('0x25')][_0xc430('0x44')](_0x10db27[_0xc430('0x45')],{})['then'](respondWithResult(_0x4eafae,0xc9))[_0xc430('0x40')](handleError(_0x4eafae,null));};exports[_0xc430('0x46')]=function(_0x19e563,_0x549400){if(_0x19e563[_0xc430('0x45')]['id']){delete _0x19e563[_0xc430('0x45')]['id'];}return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x19e563[_0xc430('0x42')]['id']}})[_0xc430('0x1e')](handleEntityNotFound(_0x549400,null))[_0xc430('0x1e')](saveUpdates(_0x19e563['body'],null))[_0xc430('0x1e')](respondWithResult(_0x549400,null))[_0xc430('0x40')](handleError(_0x549400,null));};exports[_0xc430('0x1f')]=function(_0x4e9aff,_0x23cb41){return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x4e9aff[_0xc430('0x42')]['id']}})['then'](handleEntityNotFound(_0x23cb41,null))[_0xc430('0x1e')](removeEntity(_0x23cb41,null))['catch'](handleError(_0x23cb41,null));};exports[_0xc430('0x48')]=function(_0x214954,_0x2a5143){return db[_0xc430('0x25')][_0xc430('0x48')]()[_0xc430('0x1e')](respondWithResult(_0x2a5143,null))['catch'](handleError(_0x2a5143,null));};
\ No newline at end of file
+var _0x9536=['rawAttributes','intersection','length','options','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','error','stack','name','index','map','UserProfileResource','fieldName','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then','includeAll','include','findAll','rows','catch','params'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x9536,0x179));var _0x6953=function(_0x58999b,_0xea4695){_0x58999b=_0x58999b-0x0;var _0x5efc3a=_0x9536[_0x58999b];return _0x5efc3a;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x358388,_0x513dd0){_0x513dd0=_0x513dd0||0xcc;return function(_0x8de91e){if(_0x8de91e){return _0x358388[_0x6953('0x1a')](_0x513dd0);}return _0x358388[_0x6953('0x1b')](_0x513dd0)[_0x6953('0x1c')]();};}function respondWithResult(_0x1b5221,_0x244713){_0x244713=_0x244713||0xc8;return function(_0x175fa9){if(_0x175fa9){return _0x1b5221[_0x6953('0x1b')](_0x244713)[_0x6953('0x1d')](_0x175fa9);}};}function respondWithFilteredResult(_0x31d182,_0xae5515){return function(_0x548473){if(_0x548473){var _0x5f49db=typeof _0xae5515[_0x6953('0x1e')]===_0x6953('0x1f')&&typeof _0xae5515[_0x6953('0x20')]===_0x6953('0x1f');var _0x510d46=_0x548473[_0x6953('0x21')];var _0x2da771=_0x5f49db?0x0:_0xae5515['offset'];var _0x10858a=_0x5f49db?_0x548473[_0x6953('0x21')]:_0xae5515[_0x6953('0x1e')]+_0xae5515[_0x6953('0x20')];var _0xc714d3;if(_0x10858a>=_0x510d46){_0x10858a=_0x510d46;_0xc714d3=0xc8;}else{_0xc714d3=0xce;}_0x31d182['status'](_0xc714d3);return _0x31d182[_0x6953('0x22')](_0x6953('0x23'),_0x2da771+'-'+_0x10858a+'/'+_0x510d46)[_0x6953('0x1d')](_0x548473);}return null;};}function patchUpdates(_0x2ba433){return function(_0x41f021){try{jsonpatch['apply'](_0x41f021,_0x2ba433,!![]);}catch(_0xf96d07){return BPromise[_0x6953('0x24')](_0xf96d07);}return _0x41f021['save']();};}function saveUpdates(_0x317979,_0x40c9d1){return function(_0xb92529){if(_0xb92529){return _0xb92529[_0x6953('0x25')](_0x317979)['then'](function(_0x37f339){return _0x37f339;});}return null;};}function removeEntity(_0x231cb2,_0x2a7f6a){return function(_0x508ea7){if(_0x508ea7){return _0x508ea7['destroy']()['then'](function(){_0x231cb2[_0x6953('0x1b')](0xcc)[_0x6953('0x1c')]();});}};}function handleEntityNotFound(_0x550be4,_0x1a32f4){return function(_0x587df0){if(!_0x587df0){_0x550be4[_0x6953('0x1a')](0x194);}return _0x587df0;};}function handleError(_0x2bf39b,_0xcdbce8){_0xcdbce8=_0xcdbce8||0x1f4;return function(_0x2cc01e){logger[_0x6953('0x26')](_0x2cc01e[_0x6953('0x27')]);if(_0x2cc01e['name']){delete _0x2cc01e[_0x6953('0x28')];}_0x2bf39b[_0x6953('0x1b')](_0xcdbce8)['send'](_0x2cc01e);};}exports[_0x6953('0x29')]=function(_0x4af39d,_0x173b3c){var _0x3b1175={},_0x426c7c={},_0x4b0325={'count':0x0,'rows':[]};var _0x131992=_[_0x6953('0x2a')](db[_0x6953('0x2b')]['rawAttributes'],function(_0x4c49fc){return{'name':_0x4c49fc[_0x6953('0x2c')],'type':_0x4c49fc['type']['key']};});_0x426c7c[_0x6953('0x2d')]=_[_0x6953('0x2a')](_0x131992,_0x6953('0x28'));_0x426c7c[_0x6953('0x2e')]=_[_0x6953('0x2f')](_0x4af39d['query']);_0x426c7c[_0x6953('0x30')]=_['intersection'](_0x426c7c[_0x6953('0x2d')],_0x426c7c[_0x6953('0x2e')]);_0x3b1175['attributes']=_['intersection'](_0x426c7c[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x4af39d[_0x6953('0x2e')]['fields']));_0x3b1175[_0x6953('0x32')]=_0x3b1175['attributes']['length']?_0x3b1175['attributes']:_0x426c7c['model'];if(!_0x4af39d[_0x6953('0x2e')][_0x6953('0x33')](_0x6953('0x34'))){_0x3b1175[_0x6953('0x20')]=qs[_0x6953('0x20')](_0x4af39d[_0x6953('0x2e')]['limit']);_0x3b1175[_0x6953('0x1e')]=qs['offset'](_0x4af39d[_0x6953('0x2e')]['offset']);}_0x3b1175[_0x6953('0x35')]=qs[_0x6953('0x36')](_0x4af39d[_0x6953('0x2e')][_0x6953('0x36')]);_0x3b1175['where']=qs[_0x6953('0x30')](_[_0x6953('0x37')](_0x4af39d[_0x6953('0x2e')],_0x426c7c[_0x6953('0x30')]),_0x131992);if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x38')]){_0x3b1175[_0x6953('0x39')]=_[_0x6953('0x3a')](_0x3b1175[_0x6953('0x39')],{'$or':_[_0x6953('0x2a')](_0x131992,function(_0x2d9d81){if(_0x2d9d81['type']!==_0x6953('0x3b')){var _0x3c03ab={};_0x3c03ab[_0x2d9d81[_0x6953('0x28')]]={'$like':'%'+_0x4af39d['query']['filter']+'%'};return _0x3c03ab;}})});}_0x3b1175=_[_0x6953('0x3a')]({},_0x3b1175,_0x4af39d['options']);var _0x5abaf2={'where':_0x3b1175[_0x6953('0x39')]};return db[_0x6953('0x2b')]['count'](_0x5abaf2)[_0x6953('0x3c')](function(_0x263728){_0x4b0325[_0x6953('0x21')]=_0x263728;if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x3d')]){_0x3b1175[_0x6953('0x3e')]=[{'all':!![]}];}return db['UserProfileResource'][_0x6953('0x3f')](_0x3b1175);})[_0x6953('0x3c')](function(_0x30a27a){_0x4b0325[_0x6953('0x40')]=_0x30a27a;return _0x4b0325;})[_0x6953('0x3c')](respondWithFilteredResult(_0x173b3c,_0x3b1175))[_0x6953('0x41')](handleError(_0x173b3c,null));};exports['show']=function(_0x5a40de,_0xeef91a){var _0x54d7c2={'raw':![],'where':{'id':_0x5a40de[_0x6953('0x42')]['id']}},_0x588ff8={};_0x588ff8[_0x6953('0x2d')]=_[_0x6953('0x2f')](db[_0x6953('0x2b')][_0x6953('0x43')]);_0x588ff8['query']=_['keys'](_0x5a40de[_0x6953('0x2e')]);_0x588ff8[_0x6953('0x30')]=_['intersection'](_0x588ff8[_0x6953('0x2d')],_0x588ff8['query']);_0x54d7c2[_0x6953('0x32')]=_[_0x6953('0x44')](_0x588ff8[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x5a40de['query'][_0x6953('0x31')]));_0x54d7c2[_0x6953('0x32')]=_0x54d7c2['attributes'][_0x6953('0x45')]?_0x54d7c2[_0x6953('0x32')]:_0x588ff8[_0x6953('0x2d')];if(_0x5a40de[_0x6953('0x2e')][_0x6953('0x3d')]){_0x54d7c2[_0x6953('0x3e')]=[{'all':!![]}];}_0x54d7c2=_[_0x6953('0x3a')]({},_0x54d7c2,_0x5a40de[_0x6953('0x46')]);return db[_0x6953('0x2b')][_0x6953('0x47')](_0x54d7c2)[_0x6953('0x3c')](handleEntityNotFound(_0xeef91a,null))['then'](respondWithResult(_0xeef91a,null))[_0x6953('0x41')](handleError(_0xeef91a,null));};exports['create']=function(_0x15c142,_0x1d5979){return db[_0x6953('0x2b')]['create'](_0x15c142[_0x6953('0x48')],{})[_0x6953('0x3c')](respondWithResult(_0x1d5979,0xc9))['catch'](handleError(_0x1d5979,null));};exports['update']=function(_0xbf5b61,_0x265b44){if(_0xbf5b61[_0x6953('0x48')]['id']){delete _0xbf5b61[_0x6953('0x48')]['id'];}return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0xbf5b61[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x265b44,null))[_0x6953('0x3c')](saveUpdates(_0xbf5b61[_0x6953('0x48')],null))[_0x6953('0x3c')](respondWithResult(_0x265b44,null))['catch'](handleError(_0x265b44,null));};exports['destroy']=function(_0x14a7bf,_0x38e3e8){return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0x14a7bf[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x38e3e8,null))[_0x6953('0x3c')](removeEntity(_0x38e3e8,null))[_0x6953('0x41')](handleError(_0x38e3e8,null));};exports[_0x6953('0x49')]=function(_0x50b962,_0x5f15b0){return db['UserProfileResource']['describe']()[_0x6953('0x3c')](respondWithResult(_0x5f15b0,null))[_0x6953('0x41')](handleError(_0x5f15b0,null));};
\ No newline at end of file
index aa1b43f..dbffae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc70c=['api','moment','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger'];(function(_0x89425b,_0x40c512){var _0x383994=function(_0x214a0f){while(--_0x214a0f){_0x89425b['push'](_0x89425b['shift']());}};_0x383994(++_0x40c512);}(_0xc70c,0xeb));var _0xcc70=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc70c[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xcc70('0x0'));var util=require(_0xcc70('0x1'));var logger=require(_0xcc70('0x2'))(_0xcc70('0x3'));var moment=require(_0xcc70('0x4'));var BPromise=require(_0xcc70('0x5'));var rp=require(_0xcc70('0x6'));var fs=require('fs');var path=require(_0xcc70('0x7'));var rimraf=require('rimraf');var config=require(_0xcc70('0x8'));var attributes=require(_0xcc70('0x9'));module['exports']=function(_0x178406,_0x48a2be){return _0x178406['define'](_0xcc70('0xa'),attributes,{'tableName':_0xcc70('0xb'),'paranoid':![],'indexes':[{'name':_0xcc70('0xc'),'fields':['resourceId',_0xcc70('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xed3e=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','user_profile_has_resources','compositeIndex','sectionId','lodash'];(function(_0xabdbf,_0x5dc93a){var _0x4d3243=function(_0x255567){while(--_0x255567){_0xabdbf['push'](_0xabdbf['shift']());}};_0x4d3243(++_0x5dc93a);}(_0xed3e,0x13a));var _0xeed3=function(_0x399b7d,_0x18fcfd){_0x399b7d=_0x399b7d-0x0;var _0x2132c5=_0xed3e[_0x399b7d];return _0x2132c5;};'use strict';var _=require(_0xeed3('0x0'));var util=require(_0xeed3('0x1'));var logger=require(_0xeed3('0x2'))(_0xeed3('0x3'));var moment=require(_0xeed3('0x4'));var BPromise=require(_0xeed3('0x5'));var rp=require(_0xeed3('0x6'));var fs=require('fs');var path=require(_0xeed3('0x7'));var rimraf=require(_0xeed3('0x8'));var config=require(_0xeed3('0x9'));var attributes=require('./userProfileResource.attributes');module[_0xeed3('0xa')]=function(_0x36f396,_0x5591fa){return _0x36f396[_0xeed3('0xb')]('UserProfileResource',attributes,{'tableName':_0xeed3('0xc'),'paranoid':![],'indexes':[{'name':_0xeed3('0xd'),'fields':['resourceId',_0xeed3('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 148e6fc..6b2fb4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca6e=['UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x34193b,_0x3a0231){var _0x40192d=function(_0x56f1e1){while(--_0x56f1e1){_0x34193b['push'](_0x34193b['shift']());}};_0x40192d(++_0x3a0231);}(_0xca6e,0x9c));var _0xeca6=function(_0x315c04,_0x3bd612){_0x315c04=_0x315c04-0x0;var _0x46e297=_0xca6e[_0x315c04];return _0x46e297;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xeca6('0x0'));var BPromise=require(_0xeca6('0x1'));var rs=require(_0xeca6('0x2'));var fs=require('fs');var Redis=require(_0xeca6('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xeca6('0x4'));var logger=require('../../config/logger')(_0xeca6('0x5'));var config=require(_0xeca6('0x6'));var jayson=require(_0xeca6('0x7'));var client=jayson[_0xeca6('0x8')][_0xeca6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2186d3,_0x5df5f6,_0x1be054){return new BPromise(function(_0x29ef67,_0x579b06){return client[_0xeca6('0xa')](_0x2186d3,_0x1be054)['then'](function(_0x590a1e){logger[_0xeca6('0xb')](_0xeca6('0xc'),_0x5df5f6,_0xeca6('0xd'));logger[_0xeca6('0xe')](_0xeca6('0xf'),_0x5df5f6,_0xeca6('0xd'),JSON[_0xeca6('0x10')](_0x590a1e));if(_0x590a1e[_0xeca6('0x11')]){if(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x12')]===0x1f4){logger[_0xeca6('0x11')](_0xeca6('0xc'),_0x5df5f6,_0x590a1e[_0xeca6('0x11')]['message']);return _0x579b06(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x5df5f6,_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);return _0x29ef67(_0x590a1e[_0xeca6('0x11')][_0xeca6('0x13')]);}else{logger[_0xeca6('0xb')](_0xeca6('0xc'),_0x5df5f6,_0xeca6('0xd'));_0x29ef67(_0x590a1e['result'][_0xeca6('0x13')]);}})[_0xeca6('0x14')](function(_0x4311cd){logger[_0xeca6('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x5df5f6,_0x4311cd);_0x579b06(_0x4311cd);});});}
\ No newline at end of file
+var _0xda20=['client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x55bb9d,_0x5a159d){var _0x1769c4=function(_0x120b5c){while(--_0x120b5c){_0x55bb9d['push'](_0x55bb9d['shift']());}};_0x1769c4(++_0x5a159d);}(_0xda20,0x19a));var _0x0da2=function(_0x7ee418,_0x76f0ea){_0x7ee418=_0x7ee418-0x0;var _0xe75d77=_0xda20[_0x7ee418];return _0xe75d77;};'use strict';var _=require(_0x0da2('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0da2('0x1'));var db=require(_0x0da2('0x2'))['db'];var utils=require(_0x0da2('0x3'));var logger=require(_0x0da2('0x4'))(_0x0da2('0x5'));var config=require(_0x0da2('0x6'));var jayson=require(_0x0da2('0x7'));var client=jayson[_0x0da2('0x8')][_0x0da2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36950a,_0x446585,_0x4db0c3){return new BPromise(function(_0x4bbcc0,_0x5eb35){return client[_0x0da2('0xa')](_0x36950a,_0x4db0c3)[_0x0da2('0xb')](function(_0x491875){logger[_0x0da2('0xc')](_0x0da2('0xd'),_0x446585,_0x0da2('0xe'));logger[_0x0da2('0xf')](_0x0da2('0x10'),_0x446585,_0x0da2('0xe'),JSON[_0x0da2('0x11')](_0x491875));if(_0x491875[_0x0da2('0x12')]){if(_0x491875[_0x0da2('0x12')]['code']===0x1f4){logger['error'](_0x0da2('0xd'),_0x446585,_0x491875['error'][_0x0da2('0x13')]);return _0x5eb35(_0x491875[_0x0da2('0x12')][_0x0da2('0x13')]);}logger['error'](_0x0da2('0xd'),_0x446585,_0x491875['error'][_0x0da2('0x13')]);return _0x4bbcc0(_0x491875[_0x0da2('0x12')][_0x0da2('0x13')]);}else{logger[_0x0da2('0xc')](_0x0da2('0xd'),_0x446585,_0x0da2('0xe'));_0x4bbcc0(_0x491875[_0x0da2('0x14')][_0x0da2('0x13')]);}})[_0x0da2('0x15')](function(_0x270544){logger[_0x0da2('0x12')](_0x0da2('0xd'),_0x446585,_0x270544);_0x5eb35(_0x270544);});});}
\ No newline at end of file
index d9a8f4f..b38669f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0280=['/describe','isAuthenticated','describe','/:id','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','get','index'];(function(_0x58f145,_0x43687f){var _0xc64488=function(_0x59fbac){while(--_0x59fbac){_0x58f145['push'](_0x58f145['shift']());}};_0xc64488(++_0x43687f);}(_0x0280,0x96));var _0x0028=function(_0x5589a0,_0x5c022f){_0x5589a0=_0x5589a0-0x0;var _0x172e8a=_0x0280[_0x5589a0];return _0x172e8a;};'use strict';var multer=require(_0x0028('0x0'));var util=require(_0x0028('0x1'));var path=require(_0x0028('0x2'));var timeout=require(_0x0028('0x3'));var express=require(_0x0028('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0028('0x5'));var interaction=require(_0x0028('0x6'));var config=require('../../config/environment');var controller=require(_0x0028('0x7'));router[_0x0028('0x8')]('/',auth['isAuthenticated'](),controller[_0x0028('0x9')]);router[_0x0028('0x8')](_0x0028('0xa'),auth[_0x0028('0xb')](),controller[_0x0028('0xc')]);router[_0x0028('0x8')](_0x0028('0xd'),auth[_0x0028('0xb')](),controller['show']);router[_0x0028('0xe')]('/',auth[_0x0028('0xb')](),controller[_0x0028('0xf')]);router[_0x0028('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0028('0x11')](_0x0028('0xd'),auth[_0x0028('0xb')](),controller[_0x0028('0x12')]);module[_0x0028('0x13')]=router;
\ No newline at end of file
+var _0x4ae7=['post','create','put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x4ae7,0x1bf));var _0x74ae=function(_0x3af8f8,_0x3fd695){_0x3af8f8=_0x3af8f8-0x0;var _0x501914=_0x4ae7[_0x3af8f8];return _0x501914;};'use strict';var multer=require(_0x74ae('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x74ae('0x1'));var router=express[_0x74ae('0x2')]();var fs_extra=require(_0x74ae('0x3'));var auth=require(_0x74ae('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x74ae('0x5'));router[_0x74ae('0x6')]('/',auth[_0x74ae('0x7')](),controller[_0x74ae('0x8')]);router[_0x74ae('0x6')](_0x74ae('0x9'),auth[_0x74ae('0x7')](),controller[_0x74ae('0xa')]);router[_0x74ae('0x6')](_0x74ae('0xb'),auth[_0x74ae('0x7')](),controller[_0x74ae('0xc')]);router[_0x74ae('0xd')]('/',auth[_0x74ae('0x7')](),controller[_0x74ae('0xe')]);router[_0x74ae('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x74ae('0x10')]);router[_0x74ae('0x11')](_0x74ae('0xb'),auth[_0x74ae('0x7')](),controller[_0x74ae('0x12')]);module[_0x74ae('0x13')]=router;
\ No newline at end of file
index 1865a74..586c0f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['join','getDataValue','split','sequelize','STRING','BOOLEAN','setDataValue','crudPermissions'];(function(_0x312290,_0x51485e){var _0x145fd8=function(_0x251403){while(--_0x251403){_0x312290['push'](_0x312290['shift']());}};_0x145fd8(++_0x51485e);}(_0xd4a2,0x173));var _0x2d4a=function(_0x65a45a,_0x9c8bad){_0x65a45a=_0x65a45a-0x0;var _0x3a8a04=_0xd4a2[_0x65a45a];return _0x3a8a04;};'use strict';var Sequelize=require(_0x2d4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x2d4a('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x2d4a('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x2d4a('0x1')],'set':function(_0x5d435a){this[_0x2d4a('0x3')](_0x2d4a('0x4'),_0x5d435a?_0x5d435a[_0x2d4a('0x5')](''):[]);},'get':function(){return this[_0x2d4a('0x6')](_0x2d4a('0x4'))?this['getDataValue'](_0x2d4a('0x4'))[_0x2d4a('0x7')](''):[];}}};
\ No newline at end of file
+var _0xe2cf=['crudPermissions','join','getDataValue','exports','STRING','BOOLEAN'];(function(_0x4bc22d,_0x40afce){var _0x202989=function(_0xc6b0a6){while(--_0xc6b0a6){_0x4bc22d['push'](_0x4bc22d['shift']());}};_0x202989(++_0x40afce);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x133f36,_0x5047f5){_0x133f36=_0x133f36-0x0;var _0x1120b1=_0xe2cf[_0x133f36];return _0x1120b1;};'use strict';var Sequelize=require('sequelize');module[_0xfe2c('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0xfe2c('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0xfe2c('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xfe2c('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xfe2c('0x1')],'set':function(_0x11b6b8){this['setDataValue'](_0xfe2c('0x3'),_0x11b6b8?_0x11b6b8[_0xfe2c('0x4')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0xfe2c('0x5')](_0xfe2c('0x3'))['split'](''):[];}}};
\ No newline at end of file
index 31e84a3..e802656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b4=['end','json','undefined','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','UserProfileSection','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x18f0f4,_0x1b0887){var _0x55c666=function(_0x22f2a7){while(--_0x22f2a7){_0x18f0f4['push'](_0x18f0f4['shift']());}};_0x55c666(++_0x1b0887);}(_0x20b4,0x81));var _0x420b=function(_0x5743e3,_0x4a2aab){_0x5743e3=_0x5743e3-0x0;var _0x24d100=_0x20b4[_0x5743e3];return _0x24d100;};'use strict';var emlformat=require(_0x420b('0x0'));var rimraf=require(_0x420b('0x1'));var zipdir=require(_0x420b('0x2'));var jsonpatch=require(_0x420b('0x3'));var rp=require(_0x420b('0x4'));var moment=require(_0x420b('0x5'));var BPromise=require(_0x420b('0x6'));var Mustache=require(_0x420b('0x7'));var util=require(_0x420b('0x8'));var path=require(_0x420b('0x9'));var sox=require(_0x420b('0xa'));var csv=require('to-csv');var ejs=require(_0x420b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x420b('0xc'));var squel=require(_0x420b('0xd'));var crypto=require(_0x420b('0xe'));var jsforce=require(_0x420b('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x420b('0x10'));var Papa=require(_0x420b('0x11'));var Redis=require(_0x420b('0x12'));var authService=require(_0x420b('0x13'));var qs=require(_0x420b('0x14'));var as=require(_0x420b('0x15'));var hardwareService=require(_0x420b('0x16'));var logger=require(_0x420b('0x17'))(_0x420b('0x18'));var utils=require(_0x420b('0x19'));var config=require(_0x420b('0x1a'));var licenseUtil=require(_0x420b('0x1b'));var db=require(_0x420b('0x1c'))['db'];function respondWithStatusCode(_0x29f527,_0x135670){_0x135670=_0x135670||0xcc;return function(_0x38a957){if(_0x38a957){return _0x29f527[_0x420b('0x1d')](_0x135670);}return _0x29f527[_0x420b('0x1e')](_0x135670)[_0x420b('0x1f')]();};}function respondWithResult(_0x46b589,_0x2773bd){_0x2773bd=_0x2773bd||0xc8;return function(_0x5c5f2b){if(_0x5c5f2b){return _0x46b589[_0x420b('0x1e')](_0x2773bd)[_0x420b('0x20')](_0x5c5f2b);}};}function respondWithFilteredResult(_0x1ac717,_0x5bb401){return function(_0x40d8b8){if(_0x40d8b8){var _0x5c4274=typeof _0x5bb401['offset']===_0x420b('0x21')&&typeof _0x5bb401['limit']===_0x420b('0x21');var _0x3a2afb=_0x40d8b8[_0x420b('0x22')];var _0x3dcac6=_0x5c4274?0x0:_0x5bb401[_0x420b('0x23')];var _0x2d1822=_0x5c4274?_0x40d8b8[_0x420b('0x22')]:_0x5bb401['offset']+_0x5bb401['limit'];var _0x596f32;if(_0x2d1822>=_0x3a2afb){_0x2d1822=_0x3a2afb;_0x596f32=0xc8;}else{_0x596f32=0xce;}_0x1ac717[_0x420b('0x1e')](_0x596f32);return _0x1ac717[_0x420b('0x24')](_0x420b('0x25'),_0x3dcac6+'-'+_0x2d1822+'/'+_0x3a2afb)[_0x420b('0x20')](_0x40d8b8);}return null;};}function patchUpdates(_0x3dfe31){return function(_0x418b22){try{jsonpatch[_0x420b('0x26')](_0x418b22,_0x3dfe31,!![]);}catch(_0x2bb150){return BPromise['reject'](_0x2bb150);}return _0x418b22[_0x420b('0x27')]();};}function saveUpdates(_0x5df203,_0x50ef09){return function(_0x1a1871){if(_0x1a1871){return _0x1a1871['update'](_0x5df203)[_0x420b('0x28')](function(_0x2c760f){return _0x2c760f;});}return null;};}function removeEntity(_0x10ab69,_0x3a8c00){return function(_0x11ffb5){if(_0x11ffb5){return _0x11ffb5[_0x420b('0x29')]()[_0x420b('0x28')](function(){_0x10ab69['status'](0xcc)[_0x420b('0x1f')]();});}};}function handleEntityNotFound(_0x463aaa,_0x2bf0b8){return function(_0x343095){if(!_0x343095){_0x463aaa[_0x420b('0x1d')](0x194);}return _0x343095;};}function handleError(_0x265e26,_0x3cee9c){_0x3cee9c=_0x3cee9c||0x1f4;return function(_0x40a151){logger[_0x420b('0x2a')](_0x40a151[_0x420b('0x2b')]);if(_0x40a151['name']){delete _0x40a151[_0x420b('0x2c')];}_0x265e26['status'](_0x3cee9c)[_0x420b('0x2d')](_0x40a151);};}exports[_0x420b('0x2e')]=function(_0x33a08b,_0x24b32e){var _0x410814={},_0x1249bc={},_0xbc3684={'count':0x0,'rows':[]};var _0x5a7914=_['map'](db[_0x420b('0x2f')][_0x420b('0x30')],function(_0x194a26){return{'name':_0x194a26[_0x420b('0x31')],'type':_0x194a26[_0x420b('0x32')][_0x420b('0x33')]};});_0x1249bc[_0x420b('0x34')]=_[_0x420b('0x35')](_0x5a7914,_0x420b('0x2c'));_0x1249bc[_0x420b('0x36')]=_['keys'](_0x33a08b[_0x420b('0x36')]);_0x1249bc[_0x420b('0x37')]=_[_0x420b('0x38')](_0x1249bc[_0x420b('0x34')],_0x1249bc[_0x420b('0x36')]);_0x410814[_0x420b('0x39')]=_['intersection'](_0x1249bc[_0x420b('0x34')],qs['fields'](_0x33a08b[_0x420b('0x36')][_0x420b('0x3a')]));_0x410814[_0x420b('0x39')]=_0x410814[_0x420b('0x39')][_0x420b('0x3b')]?_0x410814[_0x420b('0x39')]:_0x1249bc[_0x420b('0x34')];if(!_0x33a08b[_0x420b('0x36')][_0x420b('0x3c')](_0x420b('0x3d'))){_0x410814['limit']=qs['limit'](_0x33a08b[_0x420b('0x36')][_0x420b('0x3e')]);_0x410814[_0x420b('0x23')]=qs[_0x420b('0x23')](_0x33a08b['query']['offset']);}_0x410814['order']=qs['sort'](_0x33a08b[_0x420b('0x36')]['sort']);_0x410814[_0x420b('0x3f')]=qs[_0x420b('0x37')](_[_0x420b('0x40')](_0x33a08b[_0x420b('0x36')],_0x1249bc[_0x420b('0x37')]),_0x5a7914);if(_0x33a08b[_0x420b('0x36')][_0x420b('0x41')]){_0x410814[_0x420b('0x3f')]=_[_0x420b('0x42')](_0x410814[_0x420b('0x3f')],{'$or':_['map'](_0x5a7914,function(_0x28526a){if(_0x28526a[_0x420b('0x32')]!==_0x420b('0x43')){var _0x3ac501={};_0x3ac501[_0x28526a[_0x420b('0x2c')]]={'$like':'%'+_0x33a08b[_0x420b('0x36')][_0x420b('0x41')]+'%'};return _0x3ac501;}})});}_0x410814=_[_0x420b('0x42')]({},_0x410814,_0x33a08b[_0x420b('0x44')]);var _0x10476e={'where':_0x410814[_0x420b('0x3f')]};return db[_0x420b('0x2f')][_0x420b('0x22')](_0x10476e)[_0x420b('0x28')](function(_0x1372d1){_0xbc3684['count']=_0x1372d1;if(_0x33a08b[_0x420b('0x36')][_0x420b('0x45')]){_0x410814['include']=[{'all':!![]}];}return db[_0x420b('0x2f')]['findAll'](_0x410814);})[_0x420b('0x28')](function(_0x21fee3){_0xbc3684[_0x420b('0x46')]=_0x21fee3;return _0xbc3684;})[_0x420b('0x28')](respondWithFilteredResult(_0x24b32e,_0x410814))[_0x420b('0x47')](handleError(_0x24b32e,null));};exports[_0x420b('0x48')]=function(_0x15b36a,_0x4f2574){var _0x1415b2={'raw':![],'where':{'id':_0x15b36a[_0x420b('0x49')]['id']}},_0x14f07c={};_0x14f07c[_0x420b('0x34')]=_[_0x420b('0x4a')](db[_0x420b('0x2f')][_0x420b('0x30')]);_0x14f07c[_0x420b('0x36')]=_['keys'](_0x15b36a['query']);_0x14f07c['filters']=_[_0x420b('0x38')](_0x14f07c[_0x420b('0x34')],_0x14f07c[_0x420b('0x36')]);_0x1415b2[_0x420b('0x39')]=_[_0x420b('0x38')](_0x14f07c['model'],qs[_0x420b('0x3a')](_0x15b36a[_0x420b('0x36')][_0x420b('0x3a')]));_0x1415b2['attributes']=_0x1415b2[_0x420b('0x39')][_0x420b('0x3b')]?_0x1415b2[_0x420b('0x39')]:_0x14f07c[_0x420b('0x34')];if(_0x15b36a[_0x420b('0x36')][_0x420b('0x45')]){_0x1415b2[_0x420b('0x4b')]=[{'all':!![]}];}_0x1415b2=_[_0x420b('0x42')]({},_0x1415b2,_0x15b36a[_0x420b('0x44')]);return db['UserProfileSection'][_0x420b('0x4c')](_0x1415b2)[_0x420b('0x28')](handleEntityNotFound(_0x4f2574,null))['then'](respondWithResult(_0x4f2574,null))[_0x420b('0x47')](handleError(_0x4f2574,null));};exports['create']=function(_0x1cdc35,_0x35f3dc){return db[_0x420b('0x2f')][_0x420b('0x4d')](_0x1cdc35[_0x420b('0x4e')],{})['then'](respondWithResult(_0x35f3dc,0xc9))[_0x420b('0x47')](handleError(_0x35f3dc,null));};exports['update']=function(_0x55e7bc,_0x8e19e7){if(_0x55e7bc[_0x420b('0x4e')]['id']){delete _0x55e7bc['body']['id'];}return db['UserProfileSection'][_0x420b('0x4c')]({'where':{'id':_0x55e7bc['params']['id']}})[_0x420b('0x28')](handleEntityNotFound(_0x8e19e7,null))[_0x420b('0x28')](saveUpdates(_0x55e7bc[_0x420b('0x4e')],null))[_0x420b('0x28')](respondWithResult(_0x8e19e7,null))[_0x420b('0x47')](handleError(_0x8e19e7,null));};exports[_0x420b('0x29')]=function(_0x2d492c,_0x340456){return db[_0x420b('0x2f')][_0x420b('0x4c')]({'where':{'id':_0x2d492c[_0x420b('0x49')]['id']}})['then'](handleEntityNotFound(_0x340456,null))[_0x420b('0x28')](removeEntity(_0x340456,null))[_0x420b('0x47')](handleError(_0x340456,null));};exports['describe']=function(_0x2ad04b,_0x55fa6a){return db['UserProfileSection'][_0x420b('0x4f')]()['then'](respondWithResult(_0x55fa6a,null))[_0x420b('0x47')](handleError(_0x55fa6a,null));};
\ No newline at end of file
+var _0x5c50=['eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','filter','where','merge','VIRTUAL','UserProfileSection','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','describe'];(function(_0x34cf73,_0x40f6b5){var _0x3a0e58=function(_0x4d4c51){while(--_0x4d4c51){_0x34cf73['push'](_0x34cf73['shift']());}};_0x3a0e58(++_0x40f6b5);}(_0x5c50,0x8e));var _0x05c5=function(_0x3de0d9,_0x2ccb8f){_0x3de0d9=_0x3de0d9-0x0;var _0x161cd9=_0x5c50[_0x3de0d9];return _0x161cd9;};'use strict';var emlformat=require(_0x05c5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x05c5('0x1'));var jsonpatch=require(_0x05c5('0x2'));var rp=require('request-promise');var moment=require(_0x05c5('0x3'));var BPromise=require(_0x05c5('0x4'));var Mustache=require(_0x05c5('0x5'));var util=require('util');var path=require('path');var sox=require(_0x05c5('0x6'));var csv=require('to-csv');var ejs=require(_0x05c5('0x7'));var fs=require('fs');var fs_extra=require(_0x05c5('0x8'));var _=require(_0x05c5('0x9'));var squel=require(_0x05c5('0xa'));var crypto=require(_0x05c5('0xb'));var jsforce=require(_0x05c5('0xc'));var deskjs=require(_0x05c5('0xd'));var toCsv=require(_0x05c5('0xe'));var querystring=require(_0x05c5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x05c5('0x10'));var hardwareService=require(_0x05c5('0x11'));var logger=require(_0x05c5('0x12'))(_0x05c5('0x13'));var utils=require(_0x05c5('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x05c5('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2857fe,_0xbc4b6f){_0xbc4b6f=_0xbc4b6f||0xcc;return function(_0x2ad7e5){if(_0x2ad7e5){return _0x2857fe[_0x05c5('0x16')](_0xbc4b6f);}return _0x2857fe[_0x05c5('0x17')](_0xbc4b6f)[_0x05c5('0x18')]();};}function respondWithResult(_0x32e696,_0x45edf6){_0x45edf6=_0x45edf6||0xc8;return function(_0x5f8f04){if(_0x5f8f04){return _0x32e696['status'](_0x45edf6)['json'](_0x5f8f04);}};}function respondWithFilteredResult(_0x386130,_0x4fec76){return function(_0xf51473){if(_0xf51473){var _0x51ce4d=typeof _0x4fec76['offset']===_0x05c5('0x19')&&typeof _0x4fec76[_0x05c5('0x1a')]===_0x05c5('0x19');var _0x47498a=_0xf51473[_0x05c5('0x1b')];var _0x50d3cc=_0x51ce4d?0x0:_0x4fec76[_0x05c5('0x1c')];var _0x27565d=_0x51ce4d?_0xf51473[_0x05c5('0x1b')]:_0x4fec76[_0x05c5('0x1c')]+_0x4fec76[_0x05c5('0x1a')];var _0x56f810;if(_0x27565d>=_0x47498a){_0x27565d=_0x47498a;_0x56f810=0xc8;}else{_0x56f810=0xce;}_0x386130[_0x05c5('0x17')](_0x56f810);return _0x386130[_0x05c5('0x1d')](_0x05c5('0x1e'),_0x50d3cc+'-'+_0x27565d+'/'+_0x47498a)['json'](_0xf51473);}return null;};}function patchUpdates(_0x1ca398){return function(_0x187c08){try{jsonpatch['apply'](_0x187c08,_0x1ca398,!![]);}catch(_0x2e9f1d){return BPromise[_0x05c5('0x1f')](_0x2e9f1d);}return _0x187c08[_0x05c5('0x20')]();};}function saveUpdates(_0x102b20,_0xb48327){return function(_0x16df44){if(_0x16df44){return _0x16df44[_0x05c5('0x21')](_0x102b20)[_0x05c5('0x22')](function(_0x26833a){return _0x26833a;});}return null;};}function removeEntity(_0x20e5d3,_0x47c0c7){return function(_0x6b38dc){if(_0x6b38dc){return _0x6b38dc[_0x05c5('0x23')]()[_0x05c5('0x22')](function(){_0x20e5d3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c2bf9,_0x34463e){return function(_0x40d7d6){if(!_0x40d7d6){_0x5c2bf9[_0x05c5('0x16')](0x194);}return _0x40d7d6;};}function handleError(_0x3a601e,_0x2e692e){_0x2e692e=_0x2e692e||0x1f4;return function(_0x1e5df1){logger['error'](_0x1e5df1[_0x05c5('0x24')]);if(_0x1e5df1['name']){delete _0x1e5df1[_0x05c5('0x25')];}_0x3a601e[_0x05c5('0x17')](_0x2e692e)['send'](_0x1e5df1);};}exports[_0x05c5('0x26')]=function(_0x12c916,_0x114754){var _0x1680ec={},_0x1c7502={},_0x5c2c4b={'count':0x0,'rows':[]};var _0x32adad=_[_0x05c5('0x27')](db['UserProfileSection'][_0x05c5('0x28')],function(_0x3ac410){return{'name':_0x3ac410[_0x05c5('0x29')],'type':_0x3ac410[_0x05c5('0x2a')][_0x05c5('0x2b')]};});_0x1c7502['model']=_[_0x05c5('0x27')](_0x32adad,_0x05c5('0x25'));_0x1c7502[_0x05c5('0x2c')]=_[_0x05c5('0x2d')](_0x12c916['query']);_0x1c7502[_0x05c5('0x2e')]=_[_0x05c5('0x2f')](_0x1c7502[_0x05c5('0x30')],_0x1c7502[_0x05c5('0x2c')]);_0x1680ec[_0x05c5('0x31')]=_['intersection'](_0x1c7502['model'],qs[_0x05c5('0x32')](_0x12c916[_0x05c5('0x2c')][_0x05c5('0x32')]));_0x1680ec[_0x05c5('0x31')]=_0x1680ec[_0x05c5('0x31')][_0x05c5('0x33')]?_0x1680ec[_0x05c5('0x31')]:_0x1c7502[_0x05c5('0x30')];if(!_0x12c916[_0x05c5('0x2c')][_0x05c5('0x34')]('nolimit')){_0x1680ec[_0x05c5('0x1a')]=qs[_0x05c5('0x1a')](_0x12c916[_0x05c5('0x2c')][_0x05c5('0x1a')]);_0x1680ec[_0x05c5('0x1c')]=qs['offset'](_0x12c916[_0x05c5('0x2c')]['offset']);}_0x1680ec['order']=qs['sort'](_0x12c916[_0x05c5('0x2c')][_0x05c5('0x35')]);_0x1680ec['where']=qs[_0x05c5('0x2e')](_['pick'](_0x12c916[_0x05c5('0x2c')],_0x1c7502['filters']),_0x32adad);if(_0x12c916[_0x05c5('0x2c')][_0x05c5('0x36')]){_0x1680ec[_0x05c5('0x37')]=_[_0x05c5('0x38')](_0x1680ec[_0x05c5('0x37')],{'$or':_['map'](_0x32adad,function(_0x3f8623){if(_0x3f8623[_0x05c5('0x2a')]!==_0x05c5('0x39')){var _0x354839={};_0x354839[_0x3f8623[_0x05c5('0x25')]]={'$like':'%'+_0x12c916[_0x05c5('0x2c')][_0x05c5('0x36')]+'%'};return _0x354839;}})});}_0x1680ec=_[_0x05c5('0x38')]({},_0x1680ec,_0x12c916['options']);var _0x2226a4={'where':_0x1680ec[_0x05c5('0x37')]};return db[_0x05c5('0x3a')][_0x05c5('0x1b')](_0x2226a4)['then'](function(_0x43899c){_0x5c2c4b[_0x05c5('0x1b')]=_0x43899c;if(_0x12c916[_0x05c5('0x2c')][_0x05c5('0x3b')]){_0x1680ec[_0x05c5('0x3c')]=[{'all':!![]}];}return db[_0x05c5('0x3a')][_0x05c5('0x3d')](_0x1680ec);})[_0x05c5('0x22')](function(_0x53e540){_0x5c2c4b[_0x05c5('0x3e')]=_0x53e540;return _0x5c2c4b;})['then'](respondWithFilteredResult(_0x114754,_0x1680ec))[_0x05c5('0x3f')](handleError(_0x114754,null));};exports[_0x05c5('0x40')]=function(_0x3d844a,_0x21984e){var _0x4c3f9e={'raw':![],'where':{'id':_0x3d844a['params']['id']}},_0x53b7ba={};_0x53b7ba[_0x05c5('0x30')]=_[_0x05c5('0x2d')](db[_0x05c5('0x3a')][_0x05c5('0x28')]);_0x53b7ba[_0x05c5('0x2c')]=_[_0x05c5('0x2d')](_0x3d844a[_0x05c5('0x2c')]);_0x53b7ba[_0x05c5('0x2e')]=_[_0x05c5('0x2f')](_0x53b7ba['model'],_0x53b7ba[_0x05c5('0x2c')]);_0x4c3f9e[_0x05c5('0x31')]=_['intersection'](_0x53b7ba[_0x05c5('0x30')],qs[_0x05c5('0x32')](_0x3d844a['query']['fields']));_0x4c3f9e[_0x05c5('0x31')]=_0x4c3f9e[_0x05c5('0x31')][_0x05c5('0x33')]?_0x4c3f9e[_0x05c5('0x31')]:_0x53b7ba[_0x05c5('0x30')];if(_0x3d844a[_0x05c5('0x2c')][_0x05c5('0x3b')]){_0x4c3f9e['include']=[{'all':!![]}];}_0x4c3f9e=_['merge']({},_0x4c3f9e,_0x3d844a[_0x05c5('0x41')]);return db[_0x05c5('0x3a')][_0x05c5('0x42')](_0x4c3f9e)[_0x05c5('0x22')](handleEntityNotFound(_0x21984e,null))[_0x05c5('0x22')](respondWithResult(_0x21984e,null))[_0x05c5('0x3f')](handleError(_0x21984e,null));};exports[_0x05c5('0x43')]=function(_0x38f51b,_0x5c0f66){return db['UserProfileSection']['create'](_0x38f51b[_0x05c5('0x44')],{})[_0x05c5('0x22')](respondWithResult(_0x5c0f66,0xc9))[_0x05c5('0x3f')](handleError(_0x5c0f66,null));};exports[_0x05c5('0x21')]=function(_0x2089f0,_0x415c74){if(_0x2089f0[_0x05c5('0x44')]['id']){delete _0x2089f0['body']['id'];}return db[_0x05c5('0x3a')][_0x05c5('0x42')]({'where':{'id':_0x2089f0['params']['id']}})[_0x05c5('0x22')](handleEntityNotFound(_0x415c74,null))[_0x05c5('0x22')](saveUpdates(_0x2089f0[_0x05c5('0x44')],null))[_0x05c5('0x22')](respondWithResult(_0x415c74,null))['catch'](handleError(_0x415c74,null));};exports[_0x05c5('0x23')]=function(_0x3f1bbe,_0x5e28c0){return db[_0x05c5('0x3a')][_0x05c5('0x42')]({'where':{'id':_0x3f1bbe[_0x05c5('0x45')]['id']}})[_0x05c5('0x22')](handleEntityNotFound(_0x5e28c0,null))[_0x05c5('0x22')](removeEntity(_0x5e28c0,null))['catch'](handleError(_0x5e28c0,null));};exports['describe']=function(_0x38495c,_0x4e660e){return db[_0x05c5('0x3a')][_0x05c5('0x46')]()[_0x05c5('0x22')](respondWithResult(_0x4e660e,null))[_0x05c5('0x3f')](handleError(_0x4e660e,null));};
\ No newline at end of file
index 46b0722..2c32fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7142=['rimraf','../../config/environment','./userProfileSection.attributes','exports','define','user_profile_has_sections','compositeIndex','lodash','api','moment','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7142,0x1eb));var _0x2714=function(_0x45ed3b,_0x11d356){_0x45ed3b=_0x45ed3b-0x0;var _0x128be5=_0x7142[_0x45ed3b];return _0x128be5;};'use strict';var _=require(_0x2714('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2714('0x1'));var moment=require(_0x2714('0x2'));var BPromise=require('bluebird');var rp=require(_0x2714('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2714('0x4'));var config=require(_0x2714('0x5'));var attributes=require(_0x2714('0x6'));module[_0x2714('0x7')]=function(_0xf14dc9,_0x3d8c98){return _0xf14dc9[_0x2714('0x8')]('UserProfileSection',attributes,{'tableName':_0x2714('0x9'),'paranoid':![],'indexes':[{'name':_0x2714('0xa'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7849=['./userProfileSection.attributes','exports','user_profile_has_sections','userProfileId','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x703cd3,_0x1fa2c9){var _0x2ad09f=function(_0x9b6ac0){while(--_0x9b6ac0){_0x703cd3['push'](_0x703cd3['shift']());}};_0x2ad09f(++_0x1fa2c9);}(_0x7849,0x1f3));var _0x9784=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7849[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x9784('0x0'));var logger=require(_0x9784('0x1'))(_0x9784('0x2'));var moment=require('moment');var BPromise=require(_0x9784('0x3'));var rp=require(_0x9784('0x4'));var fs=require('fs');var path=require(_0x9784('0x5'));var rimraf=require(_0x9784('0x6'));var config=require('../../config/environment');var attributes=require(_0x9784('0x7'));module[_0x9784('0x8')]=function(_0x59f8ed,_0x48691c){return _0x59f8ed['define']('UserProfileSection',attributes,{'tableName':_0x9784('0x9'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId',_0x9784('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 8349946..72ee70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e3=['error','code','message','result','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5c80b7,_0x5c6250){var _0x4a20a7=function(_0x22dd64){while(--_0x22dd64){_0x5c80b7['push'](_0x5c80b7['shift']());}};_0x4a20a7(++_0x5c6250);}(_0x27e3,0x15d));var _0x327e=function(_0x4b8b3c,_0x54f4f8){_0x4b8b3c=_0x4b8b3c-0x0;var _0x1334c2=_0x27e3[_0x4b8b3c];return _0x1334c2;};'use strict';var _=require('lodash');var util=require(_0x327e('0x0'));var moment=require(_0x327e('0x1'));var BPromise=require(_0x327e('0x2'));var rs=require(_0x327e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x327e('0x4'))['db'];var utils=require(_0x327e('0x5'));var logger=require(_0x327e('0x6'))(_0x327e('0x7'));var config=require(_0x327e('0x8'));var jayson=require(_0x327e('0x9'));var client=jayson[_0x327e('0xa')][_0x327e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d72d2,_0x3b56e9,_0x47b4a4){return new BPromise(function(_0x561ba9,_0x5e8aa3){return client[_0x327e('0xc')](_0x2d72d2,_0x47b4a4)[_0x327e('0xd')](function(_0x4cfd1d){logger[_0x327e('0xe')](_0x327e('0xf'),_0x3b56e9,_0x327e('0x10'));logger[_0x327e('0x11')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x3b56e9,_0x327e('0x10'),JSON[_0x327e('0x12')](_0x4cfd1d));if(_0x4cfd1d[_0x327e('0x13')]){if(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x14')]===0x1f4){logger[_0x327e('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x3b56e9,_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);return _0x5e8aa3(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);}logger[_0x327e('0x13')]('UserProfileSection,\x20%s,\x20%s',_0x3b56e9,_0x4cfd1d[_0x327e('0x13')]['message']);return _0x561ba9(_0x4cfd1d[_0x327e('0x13')][_0x327e('0x15')]);}else{logger[_0x327e('0xe')](_0x327e('0xf'),_0x3b56e9,_0x327e('0x10'));_0x561ba9(_0x4cfd1d[_0x327e('0x16')][_0x327e('0x15')]);}})['catch'](function(_0x567423){logger['error'](_0x327e('0xf'),_0x3b56e9,_0x567423);_0x5e8aa3(_0x567423);});});}
\ No newline at end of file
+var _0x71ba=['UserProfileSection,\x20%s,\x20%s','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then'];(function(_0x5af812,_0x43d252){var _0x1489f2=function(_0x1c7fa9){while(--_0x1c7fa9){_0x5af812['push'](_0x5af812['shift']());}};_0x1489f2(++_0x43d252);}(_0x71ba,0x1c2));var _0xa71b=function(_0x2a371a,_0x2f5ad0){_0x2a371a=_0x2a371a-0x0;var _0x40ef68=_0x71ba[_0x2a371a];return _0x40ef68;};'use strict';var _=require(_0xa71b('0x0'));var util=require(_0xa71b('0x1'));var moment=require(_0xa71b('0x2'));var BPromise=require(_0xa71b('0x3'));var rs=require(_0xa71b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa71b('0x5'))['db'];var utils=require(_0xa71b('0x6'));var logger=require(_0xa71b('0x7'))(_0xa71b('0x8'));var config=require(_0xa71b('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa71b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5a3c99,_0x49a2f0,_0x24b6e1){return new BPromise(function(_0xbdbbc1,_0x3244f9){return client['request'](_0x5a3c99,_0x24b6e1)[_0xa71b('0xb')](function(_0x163f4a){logger['info'](_0xa71b('0xc'),_0x49a2f0,'request\x20sent');logger[_0xa71b('0xd')](_0xa71b('0xe'),_0x49a2f0,'request\x20sent',JSON['stringify'](_0x163f4a));if(_0x163f4a[_0xa71b('0xf')]){if(_0x163f4a[_0xa71b('0xf')][_0xa71b('0x10')]===0x1f4){logger[_0xa71b('0xf')](_0xa71b('0xc'),_0x49a2f0,_0x163f4a[_0xa71b('0xf')][_0xa71b('0x11')]);return _0x3244f9(_0x163f4a['error'][_0xa71b('0x11')]);}logger['error'](_0xa71b('0xc'),_0x49a2f0,_0x163f4a[_0xa71b('0xf')][_0xa71b('0x11')]);return _0xbdbbc1(_0x163f4a['error'][_0xa71b('0x11')]);}else{logger[_0xa71b('0x12')](_0xa71b('0xc'),_0x49a2f0,_0xa71b('0x13'));_0xbdbbc1(_0x163f4a[_0xa71b('0x14')][_0xa71b('0x11')]);}})['catch'](function(_0x437530){logger[_0xa71b('0xf')](_0xa71b('0xc'),_0x49a2f0,_0x437530);_0x3244f9(_0x437530);});});}
\ No newline at end of file
index b6479db..1ae934e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x95e7a2,_0x104957){var _0x5b387c=function(_0x225274){while(--_0x225274){_0x95e7a2['push'](_0x95e7a2['shift']());}};_0x5b387c(++_0x104957);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2c43f8,_0x261d10){var _0x3c0c0f=function(_0x15f093){while(--_0x15f093){_0x2c43f8['push'](_0x2c43f8['shift']());}};_0x3c0c0f(++_0x261d10);}(_0x9c44,0x178));var _0x49c4=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x9c44[_0x4fde08];return _0x12e725;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 4bdf62e..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbd=['INTEGER'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3cbd,0x184));var _0xd3cb=function(_0x706091,_0x5e07d9){_0x706091=_0x706091-0x0;var _0x4aee6f=_0x3cbd[_0x706091];return _0x4aee6f;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xd3cb('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 34352ab..a6ab72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7046=['path','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x29a32e,_0x1b96eb){var _0x215237=function(_0x2dcf12){while(--_0x2dcf12){_0x29a32e['push'](_0x29a32e['shift']());}};_0x215237(++_0x1b96eb);}(_0x7046,0x144));var _0x6704=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x7046[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var logger=require(_0x6704('0x2'))(_0x6704('0x3'));var moment=require('moment');var BPromise=require(_0x6704('0x4'));var rp=require(_0x6704('0x5'));var fs=require('fs');var path=require(_0x6704('0x6'));var rimraf=require('rimraf');var config=require(_0x6704('0x7'));var attributes=require(_0x6704('0x8'));module[_0x6704('0x9')]=function(_0x626a14,_0x2917be){return _0x626a14['define'](_0x6704('0xa'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x06ae=['path','rimraf','../../config/environment','define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xa90718,_0x2fd952){var _0x56ed79=function(_0x41cff1){while(--_0x41cff1){_0xa90718['push'](_0xa90718['shift']());}};_0x56ed79(++_0x2fd952);}(_0x06ae,0x16e));var _0xe06a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x06ae[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xe06a('0x0'));var logger=require(_0xe06a('0x1'))(_0xe06a('0x2'));var moment=require(_0xe06a('0x3'));var BPromise=require(_0xe06a('0x4'));var rp=require(_0xe06a('0x5'));var fs=require('fs');var path=require(_0xe06a('0x6'));var rimraf=require(_0xe06a('0x7'));var config=require(_0xe06a('0x8'));var attributes=require('./userSmsQueue.attributes');module['exports']=function(_0x50e6cf,_0x1df79f){return _0x50e6cf[_0xe06a('0x9')](_0xe06a('0xa'),attributes,{'tableName':_0xe06a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d214a2d..81035e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df2=['util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','message','info','catch','lodash'];(function(_0x9db13b,_0x12a363){var _0x3f15df=function(_0x3c5c4d){while(--_0x3c5c4d){_0x9db13b['push'](_0x9db13b['shift']());}};_0x3f15df(++_0x12a363);}(_0x2df2,0x84));var _0x22df=function(_0x11fe68,_0x2b6c4e){_0x11fe68=_0x11fe68-0x0;var _0x2a1548=_0x2df2[_0x11fe68];return _0x2a1548;};'use strict';var _=require(_0x22df('0x0'));var util=require(_0x22df('0x1'));var moment=require('moment');var BPromise=require(_0x22df('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x22df('0x3'));var db=require(_0x22df('0x4'))['db'];var utils=require(_0x22df('0x5'));var logger=require('../../config/logger')(_0x22df('0x6'));var config=require('../../config/environment');var jayson=require(_0x22df('0x7'));var client=jayson['client'][_0x22df('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3afa5f,_0x482712,_0x3d92aa){return new BPromise(function(_0x253135,_0x2bd2d0){return client[_0x22df('0x9')](_0x3afa5f,_0x3d92aa)[_0x22df('0xa')](function(_0x53b46f){logger['info'](_0x22df('0xb'),_0x482712,_0x22df('0xc'));logger[_0x22df('0xd')](_0x22df('0xe'),_0x482712,_0x22df('0xc'),JSON['stringify'](_0x53b46f));if(_0x53b46f['error']){if(_0x53b46f[_0x22df('0xf')]['code']===0x1f4){logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x53b46f[_0x22df('0xf')][_0x22df('0x10')]);return _0x2bd2d0(_0x53b46f[_0x22df('0xf')][_0x22df('0x10')]);}logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x53b46f['error'][_0x22df('0x10')]);return _0x253135(_0x53b46f[_0x22df('0xf')]['message']);}else{logger[_0x22df('0x11')](_0x22df('0xb'),_0x482712,_0x22df('0xc'));_0x253135(_0x53b46f['result'][_0x22df('0x10')]);}})[_0x22df('0x12')](function(_0x296fdd){logger[_0x22df('0xf')](_0x22df('0xb'),_0x482712,_0x296fdd);_0x2bd2d0(_0x296fdd);});});}
\ No newline at end of file
+var _0x1702=['stringify','error','code','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s'];(function(_0x47187a,_0x29039c){var _0x264f91=function(_0xc59a00){while(--_0xc59a00){_0x47187a['push'](_0x47187a['shift']());}};_0x264f91(++_0x29039c);}(_0x1702,0x12b));var _0x2170=function(_0x8f1bbe,_0x3f504b){_0x8f1bbe=_0x8f1bbe-0x0;var _0x75d76b=_0x1702[_0x8f1bbe];return _0x75d76b;};'use strict';var _=require('lodash');var util=require(_0x2170('0x0'));var moment=require(_0x2170('0x1'));var BPromise=require(_0x2170('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2170('0x3'));var db=require(_0x2170('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2170('0x5'))(_0x2170('0x6'));var config=require(_0x2170('0x7'));var jayson=require(_0x2170('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x41a1c1,_0xe492e5,_0x3f76ca){return new BPromise(function(_0x1ee3c2,_0x51f542){return client[_0x2170('0x9')](_0x41a1c1,_0x3f76ca)[_0x2170('0xa')](function(_0x5635b7){logger[_0x2170('0xb')](_0x2170('0xc'),_0xe492e5,_0x2170('0xd'));logger[_0x2170('0xe')](_0x2170('0xf'),_0xe492e5,_0x2170('0xd'),JSON[_0x2170('0x10')](_0x5635b7));if(_0x5635b7[_0x2170('0x11')]){if(_0x5635b7['error'][_0x2170('0x12')]===0x1f4){logger[_0x2170('0x11')](_0x2170('0xc'),_0xe492e5,_0x5635b7['error'][_0x2170('0x13')]);return _0x51f542(_0x5635b7[_0x2170('0x11')]['message']);}logger[_0x2170('0x11')](_0x2170('0xc'),_0xe492e5,_0x5635b7[_0x2170('0x11')][_0x2170('0x13')]);return _0x1ee3c2(_0x5635b7['error'][_0x2170('0x13')]);}else{logger['info'](_0x2170('0xc'),_0xe492e5,'request\x20sent');_0x1ee3c2(_0x5635b7['result'][_0x2170('0x13')]);}})[_0x2170('0x14')](function(_0x30234a){logger[_0x2170('0x11')]('UserSmsQueue,\x20%s,\x20%s',_0xe492e5,_0x30234a);_0x51f542(_0x30234a);});});}
\ No newline at end of file
index 2dd7857..81f253d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b76=['INTEGER','sequelize'];(function(_0x11bd79,_0x58ab02){var _0x57834c=function(_0x44febc){while(--_0x44febc){_0x11bd79['push'](_0x11bd79['shift']());}};_0x57834c(++_0x58ab02);}(_0x3b76,0x1e1));var _0x63b7=function(_0x2a828f,_0x689474){_0x2a828f=_0x2a828f-0x0;var _0x4873a3=_0x3b76[_0x2a828f];return _0x4873a3;};'use strict';var Sequelize=require(_0x63b7('0x0'));module['exports']={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x63b7('0x1')]}};
\ No newline at end of file
+var _0x1b09=['INTEGER','exports'];(function(_0x59e722,_0x32473c){var _0x5294db=function(_0x33a8ab){while(--_0x33a8ab){_0x59e722['push'](_0x59e722['shift']());}};_0x5294db(++_0x32473c);}(_0x1b09,0xa7));var _0x91b0=function(_0x1fd441,_0x2629bf){_0x1fd441=_0x1fd441-0x0;var _0x411a91=_0x1b09[_0x1fd441];return _0x411a91;};'use strict';var Sequelize=require('sequelize');module[_0x91b0('0x0')]={'UserId':{'type':Sequelize[_0x91b0('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index a0c1a7a..a06175c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x292eb9,_0x501c0e){var _0x1ec641=function(_0x42191c){while(--_0x42191c){_0x292eb9['push'](_0x292eb9['shift']());}};_0x1ec641(++_0x501c0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x401a71,_0x55f3b3){var _0x1ba6a9=function(_0x11ce18){while(--_0x11ce18){_0x401a71['push'](_0x401a71['shift']());}};_0x1ba6a9(++_0x55f3b3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fc9936f..d88025f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x52ed18,_0x722adb){var _0x5d0a9e=function(_0x464a){while(--_0x464a){_0x52ed18['push'](_0x52ed18['shift']());}};_0x5d0a9e(++_0x722adb);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x54d41e,_0x3216f4){var _0x1a2222=function(_0x47efd6){while(--_0x47efd6){_0x54d41e['push'](_0x54d41e['shift']());}};_0x1a2222(++_0x3216f4);}(_0xe706,0xa3));var _0x6e70=function(_0x57cf8e,_0x3a7f60){_0x57cf8e=_0x57cf8e-0x0;var _0x4bbf1e=_0xe706[_0x57cf8e];return _0x4bbf1e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 5c21fe1..34384d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca9d=['sequelize','exports','INTEGER'];(function(_0x827600,_0x27ef3){var _0x8f4350=function(_0x4992d8){while(--_0x4992d8){_0x827600['push'](_0x827600['shift']());}};_0x8f4350(++_0x27ef3);}(_0xca9d,0x15c));var _0xdca9=function(_0x3c8f6d,_0xfc8857){_0x3c8f6d=_0x3c8f6d-0x0;var _0x2d0f22=_0xca9d[_0x3c8f6d];return _0x2d0f22;};'use strict';var Sequelize=require(_0xdca9('0x0'));module[_0xdca9('0x1')]={'penalty':{'type':Sequelize[_0xdca9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x74e1=['INTEGER','sequelize','exports'];(function(_0x56a282,_0x5b448a){var _0x4fc2cb=function(_0x441464){while(--_0x441464){_0x56a282['push'](_0x56a282['shift']());}};_0x4fc2cb(++_0x5b448a);}(_0x74e1,0x1c9));var _0x174e=function(_0xc6e304,_0x40e86b){_0xc6e304=_0xc6e304-0x0;var _0x4088f1=_0x74e1[_0xc6e304];return _0x4088f1;};'use strict';var Sequelize=require(_0x174e('0x0'));module[_0x174e('0x1')]={'penalty':{'type':Sequelize[_0x174e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 594fba2..f17fe35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37ad=['exports','UserVoiceQueue','lodash','api','moment','request-promise','path','rimraf','./userVoiceQueue.attributes'];(function(_0x1dba95,_0x54e1ae){var _0x28396b=function(_0x104610){while(--_0x104610){_0x1dba95['push'](_0x1dba95['shift']());}};_0x28396b(++_0x54e1ae);}(_0x37ad,0x1a9));var _0xd37a=function(_0x5a4674,_0x51eeaa){_0x5a4674=_0x5a4674-0x0;var _0x180912=_0x37ad[_0x5a4674];return _0x180912;};'use strict';var _=require(_0xd37a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd37a('0x1'));var moment=require(_0xd37a('0x2'));var BPromise=require('bluebird');var rp=require(_0xd37a('0x3'));var fs=require('fs');var path=require(_0xd37a('0x4'));var rimraf=require(_0xd37a('0x5'));var config=require('../../config/environment');var attributes=require(_0xd37a('0x6'));module[_0xd37a('0x7')]=function(_0x4c237e,_0x59342b){return _0x4c237e['define'](_0xd37a('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2141=['../../config/environment','exports','define','UserVoiceQueue','lodash','util','../../config/logger','path','rimraf'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2141,0x17e));var _0x1214=function(_0x4806ac,_0x181406){_0x4806ac=_0x4806ac-0x0;var _0x349c36=_0x2141[_0x4806ac];return _0x349c36;};'use strict';var _=require(_0x1214('0x0'));var util=require(_0x1214('0x1'));var logger=require(_0x1214('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1214('0x3'));var rimraf=require(_0x1214('0x4'));var config=require(_0x1214('0x5'));var attributes=require('./userVoiceQueue.attributes');module[_0x1214('0x6')]=function(_0x5ab491,_0x569c30){return _0x5ab491[_0x1214('0x7')](_0x1214('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7515406..9d45f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','info','UserVoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment'];(function(_0x40e5d9,_0x36f0ce){var _0x4c395d=function(_0x113725){while(--_0x113725){_0x40e5d9['push'](_0x40e5d9['shift']());}};_0x4c395d(++_0x36f0ce);}(_0xa1f3,0x12d));var _0x3a1f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xa1f3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x3a1f('0x0'));var util=require(_0x3a1f('0x1'));var moment=require(_0x3a1f('0x2'));var BPromise=require(_0x3a1f('0x3'));var rs=require(_0x3a1f('0x4'));var fs=require('fs');var Redis=require(_0x3a1f('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3a1f('0x6'));var logger=require(_0x3a1f('0x7'))(_0x3a1f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3a1f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14c613,_0x4033bc,_0xc0aa9c){return new BPromise(function(_0x55d383,_0x437662){return client['request'](_0x14c613,_0xc0aa9c)['then'](function(_0x4fe888){logger[_0x3a1f('0xa')](_0x3a1f('0xb'),_0x4033bc,'request\x20sent');logger[_0x3a1f('0xc')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4033bc,_0x3a1f('0xd'),JSON[_0x3a1f('0xe')](_0x4fe888));if(_0x4fe888[_0x3a1f('0xf')]){if(_0x4fe888['error'][_0x3a1f('0x10')]===0x1f4){logger['error'](_0x3a1f('0xb'),_0x4033bc,_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);return _0x437662(_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);}logger[_0x3a1f('0xf')](_0x3a1f('0xb'),_0x4033bc,_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);return _0x55d383(_0x4fe888[_0x3a1f('0xf')][_0x3a1f('0x11')]);}else{logger[_0x3a1f('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x4033bc,_0x3a1f('0xd'));_0x55d383(_0x4fe888[_0x3a1f('0x12')][_0x3a1f('0x11')]);}})['catch'](function(_0x45607a){logger[_0x3a1f('0xf')](_0x3a1f('0xb'),_0x4033bc,_0x45607a);_0x437662(_0x45607a);});});}
\ No newline at end of file
+var _0xef8d=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0xef8d,0x15b));var _0xdef8=function(_0x4fd82a,_0x29d9d5){_0x4fd82a=_0x4fd82a-0x0;var _0x21d2a8=_0xef8d[_0x4fd82a];return _0x21d2a8;};'use strict';var _=require(_0xdef8('0x0'));var util=require(_0xdef8('0x1'));var moment=require(_0xdef8('0x2'));var BPromise=require(_0xdef8('0x3'));var rs=require(_0xdef8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdef8('0x5'))(_0xdef8('0x6'));var config=require(_0xdef8('0x7'));var jayson=require(_0xdef8('0x8'));var client=jayson[_0xdef8('0x9')][_0xdef8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25febc,_0x282886,_0x3ee8a5){return new BPromise(function(_0x4a86d2,_0xe90563){return client[_0xdef8('0xb')](_0x25febc,_0x3ee8a5)[_0xdef8('0xc')](function(_0x368c2c){logger[_0xdef8('0xd')](_0xdef8('0xe'),_0x282886,_0xdef8('0xf'));logger[_0xdef8('0x10')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x282886,_0xdef8('0xf'),JSON[_0xdef8('0x11')](_0x368c2c));if(_0x368c2c[_0xdef8('0x12')]){if(_0x368c2c['error']['code']===0x1f4){logger[_0xdef8('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0x282886,_0x368c2c['error'][_0xdef8('0x13')]);return _0xe90563(_0x368c2c[_0xdef8('0x12')]['message']);}logger[_0xdef8('0x12')](_0xdef8('0xe'),_0x282886,_0x368c2c[_0xdef8('0x12')][_0xdef8('0x13')]);return _0x4a86d2(_0x368c2c['error'][_0xdef8('0x13')]);}else{logger[_0xdef8('0xd')](_0xdef8('0xe'),_0x282886,_0xdef8('0xf'));_0x4a86d2(_0x368c2c[_0xdef8('0x14')][_0xdef8('0x13')]);}})[_0xdef8('0x15')](function(_0x472f71){logger[_0xdef8('0x12')](_0xdef8('0xe'),_0x282886,_0x472f71);_0xe90563(_0x472f71);});});}
\ No newline at end of file
index 4e008c2..0fb7db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x11dde4,_0x1d4852){var _0x6eea94=function(_0x182859){while(--_0x182859){_0x11dde4['push'](_0x11dde4['shift']());}};_0x6eea94(++_0x1d4852);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x15e690,_0x11b635){var _0x332fbb=function(_0x23d986){while(--_0x23d986){_0x15e690['push'](_0x15e690['shift']());}};_0x332fbb(++_0x11b635);}(_0xedd9,0xfc));var _0x9edd=function(_0x237f8b,_0xc5eddb){_0x237f8b=_0x237f8b-0x0;var _0x423f94=_0xedd9[_0x237f8b];return _0x423f94;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index e43a7d0..f3cf958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe816=['sequelize','exports','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface'];(function(_0x3cfbed,_0x1e6dcb){var _0x515d02=function(_0x53c2fb){while(--_0x53c2fb){_0x3cfbed['push'](_0x3cfbed['shift']());}};_0x515d02(++_0x1e6dcb);}(_0xe816,0x126));var _0x6e81=function(_0x13a3ca,_0x2f745a){_0x13a3ca=_0x13a3ca-0x0;var _0x13d278=_0xe816[_0x13a3ca];return _0x13d278;};'use strict';var Sequelize=require(_0x6e81('0x0'));module[_0x6e81('0x1')]={'uniqueid':{'type':Sequelize[_0x6e81('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'comment':_0x6e81('0x4')},'UserId':{'type':Sequelize[_0x6e81('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'unique':_0x6e81('0x5'),'comment':_0x6e81('0x4')},'VoiceQueueId':{'type':Sequelize[_0x6e81('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x6e81('0x3')],'allowNull':![],'unique':_0x6e81('0x5'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x6e81('0x2')](0xb),'defaultValue':0x0,'comment':_0x6e81('0x4')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x687b=['sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x4c2255,_0x1d88d9){var _0x209488=function(_0x14b5a7){while(--_0x14b5a7){_0x4c2255['push'](_0x4c2255['shift']());}};_0x209488(++_0x1d88d9);}(_0x687b,0x14a));var _0xb687=function(_0xd13171,_0xc54453){_0xd13171=_0xd13171-0x0;var _0x452bd0=_0x687b[_0xd13171];return _0x452bd0;};'use strict';var Sequelize=require(_0xb687('0x0'));module[_0xb687('0x1')]={'uniqueid':{'type':Sequelize[_0xb687('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xb687('0x3')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xb687('0x4')],'allowNull':![],'unique':_0xb687('0x5'),'comment':_0xb687('0x3')},'VoiceQueueId':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xb687('0x4')],'allowNull':![],'unique':_0xb687('0x5'),'comment':_0xb687('0x3')},'penalty':{'type':Sequelize[_0xb687('0x2')](0xb),'defaultValue':0x0,'comment':_0xb687('0x3')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xb687('0x3')}};
\ No newline at end of file
index 894a4cf..4d3f087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30b2=['emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x5a249e,_0x46af13){var _0x59401d=function(_0x58af52){while(--_0x58af52){_0x5a249e['push'](_0x5a249e['shift']());}};_0x59401d(++_0x46af13);}(_0x30b2,0x133));var _0x230b=function(_0x4ebdbf,_0x2dcf6e){_0x4ebdbf=_0x4ebdbf-0x0;var _0x566e59=_0x30b2[_0x4ebdbf];return _0x566e59;};'use strict';var EventEmitter=require(_0x230b('0x0'));var UserVoiceQueueRt=require(_0x230b('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x230b('0x2')](0x0);var events={'afterCreate':_0x230b('0x3'),'afterUpdate':_0x230b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x55dfc8){return function(_0x19cbb4,_0x4d00b8,_0x10bbd1){UserVoiceQueueRtEvents[_0x230b('0x5')](_0x55dfc8+':'+_0x19cbb4['id'],_0x19cbb4);UserVoiceQueueRtEvents['emit'](_0x55dfc8,_0x19cbb4);_0x10bbd1(null);};}for(var e in events){if(events[_0x230b('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x230b('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x27bb=['emit','hasOwnProperty','hook','exports','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove'];(function(_0x29df96,_0x43dba8){var _0x46f36e=function(_0x26220f){while(--_0x26220f){_0x29df96['push'](_0x29df96['shift']());}};_0x46f36e(++_0x43dba8);}(_0x27bb,0xfe));var _0xb27b=function(_0x36d2e1,_0x312a59){_0x36d2e1=_0x36d2e1-0x0;var _0x120a3e=_0x27bb[_0x36d2e1];return _0x120a3e;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xb27b('0x0'))['db'][_0xb27b('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xb27b('0x2')](0x0);var events={'afterCreate':_0xb27b('0x3'),'afterUpdate':_0xb27b('0x4'),'afterDestroy':_0xb27b('0x5')};function emitEvent(_0x3aa4bb){return function(_0x4f4fc1,_0x2e8d0f,_0xb85aeb){UserVoiceQueueRtEvents[_0xb27b('0x6')](_0x3aa4bb+':'+_0x4f4fc1['id'],_0x4f4fc1);UserVoiceQueueRtEvents[_0xb27b('0x6')](_0x3aa4bb,_0x4f4fc1);_0xb85aeb(null);};}for(var e in events){if(events[_0xb27b('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0xb27b('0x8')](e,emitEvent(event));}}module[_0xb27b('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index b46f5bb..f77cfd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c05=['user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt'];(function(_0x1faaa1,_0x1568dd){var _0x994ec=function(_0x298ef4){while(--_0x298ef4){_0x1faaa1['push'](_0x1faaa1['shift']());}};_0x994ec(++_0x1568dd);}(_0x1c05,0x1dd));var _0x51c0=function(_0x1304ac,_0x5ef200){_0x1304ac=_0x1304ac-0x0;var _0x585107=_0x1c05[_0x1304ac];return _0x585107;};'use strict';var _=require(_0x51c0('0x0'));var util=require(_0x51c0('0x1'));var logger=require(_0x51c0('0x2'))(_0x51c0('0x3'));var moment=require(_0x51c0('0x4'));var BPromise=require(_0x51c0('0x5'));var rp=require(_0x51c0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x51c0('0x7'));var config=require(_0x51c0('0x8'));var attributes=require(_0x51c0('0x9'));module[_0x51c0('0xa')]=function(_0x52072e,_0x2a33da){return _0x52072e[_0x51c0('0xb')](_0x51c0('0xc'),attributes,{'tableName':_0x51c0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x295d=['define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x32f6b6,_0x3a2238){var _0x5c2229=function(_0x592546){while(--_0x592546){_0x32f6b6['push'](_0x32f6b6['shift']());}};_0x5c2229(++_0x3a2238);}(_0x295d,0x107));var _0xd295=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x295d[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0xd295('0x0'));var util=require(_0xd295('0x1'));var logger=require(_0xd295('0x2'))(_0xd295('0x3'));var moment=require(_0xd295('0x4'));var BPromise=require(_0xd295('0x5'));var rp=require(_0xd295('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd295('0x7'));var config=require(_0xd295('0x8'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xd295('0x9')]=function(_0x44a3b5,_0x55ddfd){return _0x44a3b5[_0xd295('0xa')](_0xd295('0xb'),attributes,{'tableName':_0xd295('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index deb8018..2537217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec1d=['literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userVoiceQueueRt.socket','register','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','sequelize','COUNT'];(function(_0xf9bd0a,_0xb866a4){var _0x31146c=function(_0x109d1e){while(--_0x109d1e){_0xf9bd0a['push'](_0xf9bd0a['shift']());}};_0x31146c(++_0xb866a4);}(_0xec1d,0x176));var _0xdec1=function(_0x5a9b61,_0x48d272){_0x5a9b61=_0x5a9b61-0x0;var _0x705175=_0xec1d[_0x5a9b61];return _0x705175;};'use strict';var _=require('lodash');var util=require(_0xdec1('0x0'));var moment=require(_0xdec1('0x1'));var BPromise=require(_0xdec1('0x2'));var rs=require(_0xdec1('0x3'));var fs=require('fs');var Redis=require(_0xdec1('0x4'));var db=require(_0xdec1('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdec1('0x6'));var config=require(_0xdec1('0x7'));var jayson=require(_0xdec1('0x8'));var client=jayson[_0xdec1('0x9')]['http']({'port':0x232a});config[_0xdec1('0xa')]=_[_0xdec1('0xb')](config[_0xdec1('0xa')],{'host':_0xdec1('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdec1('0xa')]));require(_0xdec1('0xd'))[_0xdec1('0xe')](socket);function respondWithRpcPromise(_0x40cc7b,_0x28e9f0,_0xbc8fdc){return new BPromise(function(_0x190047,_0x43ace9){return client['request'](_0x40cc7b,_0xbc8fdc)['then'](function(_0x39b7d6){logger[_0xdec1('0xf')](_0xdec1('0x10'),_0x28e9f0,'request\x20sent');logger[_0xdec1('0x11')](_0xdec1('0x12'),_0x28e9f0,_0xdec1('0x13'),JSON[_0xdec1('0x14')](_0x39b7d6));if(_0x39b7d6[_0xdec1('0x15')]){if(_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x16')]===0x1f4){logger[_0xdec1('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x28e9f0,_0x39b7d6['error'][_0xdec1('0x17')]);return _0x43ace9(_0x39b7d6['error'][_0xdec1('0x17')]);}logger[_0xdec1('0x15')](_0xdec1('0x10'),_0x28e9f0,_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x17')]);return _0x190047(_0x39b7d6[_0xdec1('0x15')][_0xdec1('0x17')]);}else{logger['info'](_0xdec1('0x10'),_0x28e9f0,_0xdec1('0x13'));_0x190047(_0x39b7d6[_0xdec1('0x18')][_0xdec1('0x17')]);}})[_0xdec1('0x19')](function(_0x57318a){logger[_0xdec1('0x15')](_0xdec1('0x10'),_0x28e9f0,_0x57318a);_0x43ace9(_0x57318a);});});}exports[_0xdec1('0x1a')]=function(_0x4ba17d){var _0x19e7f7=this;return new Promise(function(_0xa6608d,_0x184c8b){return db[_0xdec1('0x1b')][_0xdec1('0x1c')]({'raw':_0x4ba17d[_0xdec1('0x1d')]?_0x4ba17d[_0xdec1('0x1d')][_0xdec1('0x1e')]===undefined?!![]:![]:!![],'where':_0x4ba17d[_0xdec1('0x1d')]?_0x4ba17d[_0xdec1('0x1d')]['where']||null:null,'attributes':[[db[_0xdec1('0x1f')]['fn'](_0xdec1('0x20'),db[_0xdec1('0x1f')]['fn']('IF',db[_0xdec1('0x1f')][_0xdec1('0x21')](_0xdec1('0x22')))),_0xdec1('0x23')]]})[_0xdec1('0x24')](function(_0x3df89c){logger[_0xdec1('0xf')]('GetVoiceQueueRtPauses',_0x4ba17d);logger[_0xdec1('0x11')]('GetVoiceQueueRtPauses',_0x4ba17d,JSON[_0xdec1('0x14')](_0x3df89c));_0xa6608d(_0x3df89c);})[_0xdec1('0x19')](function(_0x34c975){logger[_0xdec1('0x15')](_0xdec1('0x1a'),_0x34c975[_0xdec1('0x17')],_0x4ba17d);_0x184c8b(_0x19e7f7['error'](0x1f4,_0x34c975[_0xdec1('0x17')]));});});};
\ No newline at end of file
+var _0x158d=['http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x158d,0x1b7));var _0xd158=function(_0x10f6e8,_0x351db6){_0x10f6e8=_0x10f6e8-0x0;var _0x35bb3c=_0x158d[_0x10f6e8];return _0x35bb3c;};'use strict';var _=require(_0xd158('0x0'));var util=require('util');var moment=require(_0xd158('0x1'));var BPromise=require(_0xd158('0x2'));var rs=require(_0xd158('0x3'));var fs=require('fs');var Redis=require(_0xd158('0x4'));var db=require(_0xd158('0x5'))['db'];var utils=require(_0xd158('0x6'));var logger=require(_0xd158('0x7'))(_0xd158('0x8'));var config=require(_0xd158('0x9'));var jayson=require(_0xd158('0xa'));var client=jayson[_0xd158('0xb')][_0xd158('0xc')]({'port':0x232a});config[_0xd158('0xd')]=_[_0xd158('0xe')](config[_0xd158('0xd')],{'host':_0xd158('0xf'),'port':0x18eb});var socket=require(_0xd158('0x10'))(new Redis(config[_0xd158('0xd')]));require(_0xd158('0x11'))[_0xd158('0x12')](socket);function respondWithRpcPromise(_0x4d2024,_0x4f70a2,_0x5f0480){return new BPromise(function(_0x2111c1,_0x346d6a){return client[_0xd158('0x13')](_0x4d2024,_0x5f0480)[_0xd158('0x14')](function(_0x532674){logger['info'](_0xd158('0x15'),_0x4f70a2,_0xd158('0x16'));logger['debug'](_0xd158('0x17'),_0x4f70a2,_0xd158('0x16'),JSON[_0xd158('0x18')](_0x532674));if(_0x532674[_0xd158('0x19')]){if(_0x532674[_0xd158('0x19')]['code']===0x1f4){logger['error'](_0xd158('0x15'),_0x4f70a2,_0x532674[_0xd158('0x19')]['message']);return _0x346d6a(_0x532674[_0xd158('0x19')][_0xd158('0x1a')]);}logger[_0xd158('0x19')](_0xd158('0x15'),_0x4f70a2,_0x532674[_0xd158('0x19')]['message']);return _0x2111c1(_0x532674['error'][_0xd158('0x1a')]);}else{logger[_0xd158('0x1b')](_0xd158('0x15'),_0x4f70a2,_0xd158('0x16'));_0x2111c1(_0x532674[_0xd158('0x1c')][_0xd158('0x1a')]);}})[_0xd158('0x1d')](function(_0x52fb8c){logger[_0xd158('0x19')](_0xd158('0x15'),_0x4f70a2,_0x52fb8c);_0x346d6a(_0x52fb8c);});});}exports[_0xd158('0x1e')]=function(_0x41c3ec){var _0x30faa5=this;return new Promise(function(_0x189fb0,_0xdfcfa5){return db[_0xd158('0x1f')][_0xd158('0x20')]({'raw':_0x41c3ec[_0xd158('0x21')]?_0x41c3ec[_0xd158('0x21')][_0xd158('0x22')]===undefined?!![]:![]:!![],'where':_0x41c3ec[_0xd158('0x21')]?_0x41c3ec[_0xd158('0x21')][_0xd158('0x23')]||null:null,'attributes':[[db[_0xd158('0x24')]['fn']('COUNT',db[_0xd158('0x24')]['fn']('IF',db[_0xd158('0x24')][_0xd158('0x25')](_0xd158('0x26')))),_0xd158('0x27')]]})[_0xd158('0x14')](function(_0x3a987d){logger[_0xd158('0x1b')]('GetVoiceQueueRtPauses',_0x41c3ec);logger[_0xd158('0x28')](_0xd158('0x1e'),_0x41c3ec,JSON[_0xd158('0x18')](_0x3a987d));_0x189fb0(_0x3a987d);})[_0xd158('0x1d')](function(_0x233a11){logger[_0xd158('0x19')]('GetVoiceQueueRtPauses',_0x233a11['message'],_0x41c3ec);_0xdfcfa5(_0x30faa5['error'](0x1f4,_0x233a11['message']));});});};
\ No newline at end of file
index d2ff5d8..43ab9ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['removeListener','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x73b80e,_0x4daa4a){var _0x4c31cd=function(_0x3663a0){while(--_0x3663a0){_0x73b80e['push'](_0x73b80e['shift']());}};_0x4c31cd(++_0x4daa4a);}(_0xef17,0x136));var _0x7ef1=function(_0x58b079,_0x2c3159){_0x58b079=_0x58b079-0x0;var _0xd28cfc=_0xef17[_0x58b079];return _0xd28cfc;};'use strict';var UserVoiceQueueRtEvents=require(_0x7ef1('0x0'));var events=[_0x7ef1('0x1'),_0x7ef1('0x2'),_0x7ef1('0x3')];function createListener(_0x601558,_0x2c0aac){return function(_0x280431){_0x2c0aac[_0x7ef1('0x4')](_0x601558,_0x280431);};}function removeListener(_0x2daaa6,_0x538a0a){return function(){UserVoiceQueueRtEvents[_0x7ef1('0x5')](_0x2daaa6,_0x538a0a);};}exports['register']=function(_0x138ed1){for(var _0x498596=0x0,_0x34a040=events['length'];_0x498596<_0x34a040;_0x498596++){var _0x5aec63=events[_0x498596];var _0x10c896=createListener(_0x7ef1('0x6')+_0x5aec63,_0x138ed1);UserVoiceQueueRtEvents['on'](_0x5aec63,_0x10c896);}};
\ No newline at end of file
+var _0xe015=['emit','removeListener','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove'];(function(_0x455622,_0x206c3e){var _0x6fa1bb=function(_0x42a53a){while(--_0x42a53a){_0x455622['push'](_0x455622['shift']());}};_0x6fa1bb(++_0x206c3e);}(_0xe015,0x13b));var _0x5e01=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe015[_0x13d07a];return _0x5ee0ee;};'use strict';var UserVoiceQueueRtEvents=require(_0x5e01('0x0'));var events=[_0x5e01('0x1'),_0x5e01('0x2'),'update'];function createListener(_0x51f689,_0x46ed0d){return function(_0x4e3569){_0x46ed0d[_0x5e01('0x3')](_0x51f689,_0x4e3569);};}function removeListener(_0x420f00,_0x7ce4b9){return function(){UserVoiceQueueRtEvents[_0x5e01('0x4')](_0x420f00,_0x7ce4b9);};}exports['register']=function(_0x1814cb){for(var _0x3d2da2=0x0,_0x4de678=events['length'];_0x3d2da2<_0x4de678;_0x3d2da2++){var _0x414f73=events[_0x3d2da2];var _0x3aeaef=createListener(_0x5e01('0x5')+_0x414f73,_0x1814cb);UserVoiceQueueRtEvents['on'](_0x414f73,_0x3aeaef);}};
\ No newline at end of file
index 5592914..26d3921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x16167b,_0x2e64c4){var _0x357fab=function(_0xbab2ff){while(--_0xbab2ff){_0x16167b['push'](_0x16167b['shift']());}};_0x357fab(++_0x2e64c4);}(_0x9c44,0x178));var _0x49c4=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x9c44[_0x2b7764];return _0x848dcb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0xa9296a,_0x290dbd){var _0x41cdeb=function(_0x242f26){while(--_0x242f26){_0xa9296a['push'](_0xa9296a['shift']());}};_0x41cdeb(++_0x290dbd);}(_0xedd9,0xfc));var _0x9edd=function(_0x40f6d5,_0x4b4f3b){_0x40f6d5=_0x40f6d5-0x0;var _0xee5274=_0xedd9[_0x40f6d5];return _0xee5274;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 213dad0..08f1295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['INTEGER','sequelize','exports'];(function(_0x16ae26,_0x2eab6e){var _0x33b09d=function(_0x2a762e){while(--_0x2a762e){_0x16ae26['push'](_0x16ae26['shift']());}};_0x33b09d(++_0x2eab6e);}(_0x8ce1,0xc1));var _0x18ce=function(_0x414ed7,_0x5ed52a){_0x414ed7=_0x414ed7-0x0;var _0x4abf2e=_0x8ce1[_0x414ed7];return _0x4abf2e;};'use strict';var Sequelize=require(_0x18ce('0x0'));module[_0x18ce('0x1')]={'penalty':{'type':Sequelize[_0x18ce('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb244=['exports','INTEGER'];(function(_0x2a8907,_0x5df696){var _0x435f90=function(_0xe2c907){while(--_0xe2c907){_0x2a8907['push'](_0x2a8907['shift']());}};_0x435f90(++_0x5df696);}(_0xb244,0x9a));var _0x4b24=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xb244[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require('sequelize');module[_0x4b24('0x0')]={'penalty':{'type':Sequelize[_0x4b24('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 99f376a..250f673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1678=['request-promise','path','./userWhatsappQueue.attributes','define','user_has_whatsapp_queues','util','../../config/logger','api','bluebird'];(function(_0x33d87a,_0x135918){var _0x251bd7=function(_0x2ac408){while(--_0x2ac408){_0x33d87a['push'](_0x33d87a['shift']());}};_0x251bd7(++_0x135918);}(_0x1678,0x68));var _0x8167=function(_0x4639e8,_0x3390c4){_0x4639e8=_0x4639e8-0x0;var _0x41d24b=_0x1678[_0x4639e8];return _0x41d24b;};'use strict';var _=require('lodash');var util=require(_0x8167('0x0'));var logger=require(_0x8167('0x1'))(_0x8167('0x2'));var moment=require('moment');var BPromise=require(_0x8167('0x3'));var rp=require(_0x8167('0x4'));var fs=require('fs');var path=require(_0x8167('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8167('0x6'));module['exports']=function(_0x125763,_0x56f5d4){return _0x125763[_0x8167('0x7')]('UserWhatsappQueue',attributes,{'tableName':_0x8167('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21b9=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./userWhatsappQueue.attributes','exports','define','user_has_whatsapp_queues'];(function(_0x5c2935,_0x57a86e){var _0x29fd1d=function(_0x16998f){while(--_0x16998f){_0x5c2935['push'](_0x5c2935['shift']());}};_0x29fd1d(++_0x57a86e);}(_0x21b9,0xcc));var _0x921b=function(_0x24d36a,_0x3f4f9d){_0x24d36a=_0x24d36a-0x0;var _0x31bc0f=_0x21b9[_0x24d36a];return _0x31bc0f;};'use strict';var _=require(_0x921b('0x0'));var util=require(_0x921b('0x1'));var logger=require(_0x921b('0x2'))(_0x921b('0x3'));var moment=require('moment');var BPromise=require(_0x921b('0x4'));var rp=require(_0x921b('0x5'));var fs=require('fs');var path=require(_0x921b('0x6'));var rimraf=require('rimraf');var config=require(_0x921b('0x7'));var attributes=require(_0x921b('0x8'));module[_0x921b('0x9')]=function(_0x51a2e3,_0x29b6f9){return _0x51a2e3[_0x921b('0xa')]('UserWhatsappQueue',attributes,{'tableName':_0x921b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86ecbdc..fe20755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0a1=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','result'];(function(_0x5258ef,_0x21e171){var _0x2c7a4a=function(_0x1674d5){while(--_0x1674d5){_0x5258ef['push'](_0x5258ef['shift']());}};_0x2c7a4a(++_0x21e171);}(_0xe0a1,0x145));var _0x1e0a=function(_0x10a08d,_0x1bab5d){_0x10a08d=_0x10a08d-0x0;var _0x27abcc=_0xe0a1[_0x10a08d];return _0x27abcc;};'use strict';var _=require(_0x1e0a('0x0'));var util=require(_0x1e0a('0x1'));var moment=require(_0x1e0a('0x2'));var BPromise=require(_0x1e0a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1e0a('0x4'));var db=require(_0x1e0a('0x5'))['db'];var utils=require(_0x1e0a('0x6'));var logger=require(_0x1e0a('0x7'))(_0x1e0a('0x8'));var config=require(_0x1e0a('0x9'));var jayson=require(_0x1e0a('0xa'));var client=jayson[_0x1e0a('0xb')][_0x1e0a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x27bf6c,_0x1e23ce,_0x54b958){return new BPromise(function(_0x5e6760,_0x2d21f3){return client[_0x1e0a('0xd')](_0x27bf6c,_0x54b958)[_0x1e0a('0xe')](function(_0x310bb0){logger[_0x1e0a('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1e23ce,_0x1e0a('0x10'));logger[_0x1e0a('0x11')](_0x1e0a('0x12'),_0x1e23ce,_0x1e0a('0x10'),JSON[_0x1e0a('0x13')](_0x310bb0));if(_0x310bb0['error']){if(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x15')]===0x1f4){logger[_0x1e0a('0x14')](_0x1e0a('0x16'),_0x1e23ce,_0x310bb0[_0x1e0a('0x14')]['message']);return _0x2d21f3(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x17')]);}logger[_0x1e0a('0x14')](_0x1e0a('0x16'),_0x1e23ce,_0x310bb0[_0x1e0a('0x14')]['message']);return _0x5e6760(_0x310bb0[_0x1e0a('0x14')][_0x1e0a('0x17')]);}else{logger['info'](_0x1e0a('0x16'),_0x1e23ce,'request\x20sent');_0x5e6760(_0x310bb0[_0x1e0a('0x18')][_0x1e0a('0x17')]);}})['catch'](function(_0xd4aaad){logger[_0x1e0a('0x14')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1e23ce,_0xd4aaad);_0x2d21f3(_0xd4aaad);});});}
\ No newline at end of file
+var _0x45f9=['rpc','../../config/environment','http','request','then','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x140240,_0x2e653f){var _0x33dbc4=function(_0x2e153c){while(--_0x2e153c){_0x140240['push'](_0x140240['shift']());}};_0x33dbc4(++_0x2e653f);}(_0x45f9,0x15f));var _0x945f=function(_0x3993ef,_0x47eda6){_0x3993ef=_0x3993ef-0x0;var _0xc1b8cc=_0x45f9[_0x3993ef];return _0xc1b8cc;};'use strict';var _=require(_0x945f('0x0'));var util=require(_0x945f('0x1'));var moment=require(_0x945f('0x2'));var BPromise=require(_0x945f('0x3'));var rs=require(_0x945f('0x4'));var fs=require('fs');var Redis=require(_0x945f('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x945f('0x6'));var config=require(_0x945f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x945f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d6be2,_0x1acbb5,_0x11a0e4){return new BPromise(function(_0x20ea87,_0x2f1b4e){return client[_0x945f('0x9')](_0x3d6be2,_0x11a0e4)[_0x945f('0xa')](function(_0x5ce028){logger[_0x945f('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1acbb5,_0x945f('0xc'));logger[_0x945f('0xd')](_0x945f('0xe'),_0x1acbb5,_0x945f('0xc'),JSON[_0x945f('0xf')](_0x5ce028));if(_0x5ce028[_0x945f('0x10')]){if(_0x5ce028[_0x945f('0x10')][_0x945f('0x11')]===0x1f4){logger[_0x945f('0x10')](_0x945f('0x12'),_0x1acbb5,_0x5ce028[_0x945f('0x10')]['message']);return _0x2f1b4e(_0x5ce028[_0x945f('0x10')][_0x945f('0x13')]);}logger['error'](_0x945f('0x12'),_0x1acbb5,_0x5ce028[_0x945f('0x10')][_0x945f('0x13')]);return _0x20ea87(_0x5ce028[_0x945f('0x10')][_0x945f('0x13')]);}else{logger['info'](_0x945f('0x12'),_0x1acbb5,_0x945f('0xc'));_0x20ea87(_0x5ce028['result']['message']);}})[_0x945f('0x14')](function(_0x1bfa88){logger[_0x945f('0x10')](_0x945f('0x12'),_0x1acbb5,_0x1bfa88);_0x2f1b4e(_0x1bfa88);});});}
\ No newline at end of file
index e8810ea..43dab67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','index','get','/:id','show','isAuthenticated','create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x14605c,_0x23f773){var _0x4afb60=function(_0x2280c0){while(--_0x2280c0){_0x14605c['push'](_0x14605c['shift']());}};_0x4afb60(++_0x23f773);}(_0x54ef,0x112));var _0xf54e=function(_0x848d1e,_0x420311){_0x848d1e=_0x848d1e-0x0;var _0x23b729=_0x54ef[_0x848d1e];return _0x23b729;};'use strict';var multer=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var path=require(_0xf54e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf54e('0x3'));var router=express[_0xf54e('0x4')]();var fs_extra=require(_0xf54e('0x5'));var auth=require(_0xf54e('0x6'));var interaction=require(_0xf54e('0x7'));var config=require(_0xf54e('0x8'));var controller=require(_0xf54e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf54e('0xa')]);router[_0xf54e('0xb')](_0xf54e('0xc'),auth['isAuthenticated'](),controller[_0xf54e('0xd')]);router['post']('/',auth[_0xf54e('0xe')](),controller[_0xf54e('0xf')]);router['put'](_0xf54e('0xc'),auth[_0xf54e('0xe')](),controller[_0xf54e('0x10')]);router[_0xf54e('0x11')]('/:id',auth[_0xf54e('0xe')](),controller[_0xf54e('0x12')]);module[_0xf54e('0x13')]=router;
\ No newline at end of file
+var _0x177a=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports'];(function(_0x31c63f,_0x7ed10e){var _0x22e97b=function(_0x54ce70){while(--_0x54ce70){_0x31c63f['push'](_0x31c63f['shift']());}};_0x22e97b(++_0x7ed10e);}(_0x177a,0xdd));var _0xa177=function(_0x5adb9a,_0x1704c8){_0x5adb9a=_0x5adb9a-0x0;var _0x511092=_0x177a[_0x5adb9a];return _0x511092;};'use strict';var multer=require(_0xa177('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa177('0x1'));var express=require(_0xa177('0x2'));var router=express[_0xa177('0x3')]();var fs_extra=require(_0xa177('0x4'));var auth=require(_0xa177('0x5'));var interaction=require(_0xa177('0x6'));var config=require('../../config/environment');var controller=require(_0xa177('0x7'));router[_0xa177('0x8')]('/',auth[_0xa177('0x9')](),controller[_0xa177('0xa')]);router[_0xa177('0x8')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller[_0xa177('0xc')]);router['post']('/',auth[_0xa177('0x9')](),controller['create']);router[_0xa177('0xd')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller[_0xa177('0xe')]);router[_0xa177('0xf')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller['destroy']);module[_0xa177('0x10')]=router;
\ No newline at end of file
index bdc9841..e67566f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd04=['exports','STRING','name'];(function(_0x560166,_0x509bcd){var _0x3fad6d=function(_0x2c6343){while(--_0x2c6343){_0x560166['push'](_0x560166['shift']());}};_0x3fad6d(++_0x509bcd);}(_0xfd04,0xe1));var _0x4fd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd04[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x4fd0('0x0')]={'name':{'type':Sequelize[_0x4fd0('0x1')],'unique':_0x4fd0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4fd0('0x1')]}};
\ No newline at end of file
+var _0x6bdc=['STRING','name','sequelize','exports'];(function(_0x431d05,_0x1453d1){var _0x9ec3b1=function(_0x33cdfc){while(--_0x33cdfc){_0x431d05['push'](_0x431d05['shift']());}};_0x9ec3b1(++_0x1453d1);}(_0x6bdc,0x14e));var _0xc6bd=function(_0x3138c9,_0x136825){_0x3138c9=_0x3138c9-0x0;var _0x479297=_0x6bdc[_0x3138c9];return _0x479297;};'use strict';var Sequelize=require(_0xc6bd('0x0'));module[_0xc6bd('0x1')]={'name':{'type':Sequelize[_0xc6bd('0x2')],'unique':_0xc6bd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xc6bd('0x2')]}};
\ No newline at end of file
index fe2bee6..55e7ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ee=['../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','json','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','Variables','UserProfileResource','destroy','end','error','name','index','rawAttributes','fieldName','type','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','filter','options','includeAll','include','Variable','findAll','catch','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x7e56e3,_0x430d3a){var _0x42a91d=function(_0x109ac3){while(--_0x109ac3){_0x7e56e3['push'](_0x7e56e3['shift']());}};_0x42a91d(++_0x430d3a);}(_0x10ee,0x1d8));var _0xe10e=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x10ee[_0x36ed48];return _0x51c63a;};'use strict';var emlformat=require(_0xe10e('0x0'));var rimraf=require(_0xe10e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe10e('0x2'));var rp=require(_0xe10e('0x3'));var moment=require(_0xe10e('0x4'));var BPromise=require(_0xe10e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe10e('0x6'));var sox=require(_0xe10e('0x7'));var csv=require(_0xe10e('0x8'));var ejs=require(_0xe10e('0x9'));var fs=require('fs');var fs_extra=require(_0xe10e('0xa'));var _=require(_0xe10e('0xb'));var squel=require('squel');var crypto=require(_0xe10e('0xc'));var jsforce=require(_0xe10e('0xd'));var deskjs=require(_0xe10e('0xe'));var toCsv=require(_0xe10e('0x8'));var querystring=require('querystring');var Papa=require(_0xe10e('0xf'));var Redis=require(_0xe10e('0x10'));var authService=require(_0xe10e('0x11'));var qs=require(_0xe10e('0x12'));var as=require(_0xe10e('0x13'));var hardwareService=require(_0xe10e('0x14'));var logger=require(_0xe10e('0x15'))('api');var utils=require(_0xe10e('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe10e('0x17'))['db'];function respondWithStatusCode(_0x5dfb33,_0x97abed){_0x97abed=_0x97abed||0xcc;return function(_0x4595fa){if(_0x4595fa){return _0x5dfb33[_0xe10e('0x18')](_0x97abed);}return _0x5dfb33['status'](_0x97abed)['end']();};}function respondWithResult(_0x1f6704,_0x1b99ad){_0x1b99ad=_0x1b99ad||0xc8;return function(_0x3ec943){if(_0x3ec943){return _0x1f6704['status'](_0x1b99ad)[_0xe10e('0x19')](_0x3ec943);}};}function respondWithFilteredResult(_0x148c5e,_0x4768ae){return function(_0x15a893){if(_0x15a893){var _0x77f58d=typeof _0x4768ae['offset']===_0xe10e('0x1a')&&typeof _0x4768ae['limit']==='undefined';var _0x7de0a0=_0x15a893[_0xe10e('0x1b')];var _0x467eff=_0x77f58d?0x0:_0x4768ae[_0xe10e('0x1c')];var _0x2c2060=_0x77f58d?_0x15a893[_0xe10e('0x1b')]:_0x4768ae[_0xe10e('0x1c')]+_0x4768ae['limit'];var _0x334136;if(_0x2c2060>=_0x7de0a0){_0x2c2060=_0x7de0a0;_0x334136=0xc8;}else{_0x334136=0xce;}_0x148c5e[_0xe10e('0x1d')](_0x334136);return _0x148c5e[_0xe10e('0x1e')](_0xe10e('0x1f'),_0x467eff+'-'+_0x2c2060+'/'+_0x7de0a0)['json'](_0x15a893);}return null;};}function patchUpdates(_0x46fa2c){return function(_0x21c06e){try{jsonpatch[_0xe10e('0x20')](_0x21c06e,_0x46fa2c,!![]);}catch(_0x1fcdc5){return BPromise[_0xe10e('0x21')](_0x1fcdc5);}return _0x21c06e[_0xe10e('0x22')]();};}function saveUpdates(_0x10bbf2,_0x59c353){return function(_0x5f0d3c){if(_0x5f0d3c){return _0x5f0d3c[_0xe10e('0x23')](_0x10bbf2)[_0xe10e('0x24')](function(_0x421ee7){return _0x421ee7;});}return null;};}function removeEntity(_0x5aba5b,_0x76779c){return function(_0x32159e){if(_0x32159e){return _0x32159e['destroy']()[_0xe10e('0x24')](function(){var _0x29a3ae=_0x32159e['get']({'plain':!![]});var _0x1e3d1f=_0xe10e('0x25');return db[_0xe10e('0x26')][_0xe10e('0x27')]({'where':{'type':_0x1e3d1f,'resourceId':_0x29a3ae['id']}})['then'](function(){return _0x32159e;});})[_0xe10e('0x24')](function(){_0x5aba5b[_0xe10e('0x1d')](0xcc)[_0xe10e('0x28')]();});}};}function handleEntityNotFound(_0x796695,_0x497d2f){return function(_0x129b7f){if(!_0x129b7f){_0x796695[_0xe10e('0x18')](0x194);}return _0x129b7f;};}function handleError(_0x3ddfcb,_0x33cfe9){_0x33cfe9=_0x33cfe9||0x1f4;return function(_0x114bb4){logger[_0xe10e('0x29')](_0x114bb4['stack']);if(_0x114bb4[_0xe10e('0x2a')]){delete _0x114bb4[_0xe10e('0x2a')];}_0x3ddfcb['status'](_0x33cfe9)['send'](_0x114bb4);};}exports[_0xe10e('0x2b')]=function(_0x3f8b45,_0x49e4c6){var _0x3825c6={},_0x487ebe={},_0x163037={'count':0x0,'rows':[]};var _0x486ce0=_['map'](db['Variable'][_0xe10e('0x2c')],function(_0x21df45){return{'name':_0x21df45[_0xe10e('0x2d')],'type':_0x21df45[_0xe10e('0x2e')][_0xe10e('0x2f')]};});_0x487ebe[_0xe10e('0x30')]=_[_0xe10e('0x31')](_0x486ce0,_0xe10e('0x2a'));_0x487ebe['query']=_[_0xe10e('0x32')](_0x3f8b45['query']);_0x487ebe['filters']=_['intersection'](_0x487ebe[_0xe10e('0x30')],_0x487ebe[_0xe10e('0x33')]);_0x3825c6[_0xe10e('0x34')]=_[_0xe10e('0x35')](_0x487ebe[_0xe10e('0x30')],qs['fields'](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x36')]));_0x3825c6['attributes']=_0x3825c6[_0xe10e('0x34')][_0xe10e('0x37')]?_0x3825c6[_0xe10e('0x34')]:_0x487ebe[_0xe10e('0x30')];if(!_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x38')](_0xe10e('0x39'))){_0x3825c6[_0xe10e('0x3a')]=qs[_0xe10e('0x3a')](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x3a')]);_0x3825c6[_0xe10e('0x1c')]=qs[_0xe10e('0x1c')](_0x3f8b45[_0xe10e('0x33')]['offset']);}_0x3825c6[_0xe10e('0x3b')]=qs[_0xe10e('0x3c')](_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x3c')]);_0x3825c6[_0xe10e('0x3d')]=qs[_0xe10e('0x3e')](_['pick'](_0x3f8b45[_0xe10e('0x33')],_0x487ebe[_0xe10e('0x3e')]),_0x486ce0);if(_0x3f8b45[_0xe10e('0x33')]['filter']){_0x3825c6[_0xe10e('0x3d')]=_[_0xe10e('0x3f')](_0x3825c6[_0xe10e('0x3d')],{'$or':_[_0xe10e('0x31')](_0x486ce0,function(_0x17d74e){if(_0x17d74e['type']!=='VIRTUAL'){var _0x2ad6d4={};_0x2ad6d4[_0x17d74e[_0xe10e('0x2a')]]={'$like':'%'+_0x3f8b45['query'][_0xe10e('0x40')]+'%'};return _0x2ad6d4;}})});}_0x3825c6=_['merge']({},_0x3825c6,_0x3f8b45[_0xe10e('0x41')]);var _0x209291={'where':_0x3825c6[_0xe10e('0x3d')]};return db['Variable'][_0xe10e('0x1b')](_0x209291)['then'](function(_0x2a97e6){_0x163037['count']=_0x2a97e6;if(_0x3f8b45[_0xe10e('0x33')][_0xe10e('0x42')]){_0x3825c6[_0xe10e('0x43')]=[{'all':!![]}];}return db[_0xe10e('0x44')][_0xe10e('0x45')](_0x3825c6);})['then'](function(_0x170c40){_0x163037['rows']=_0x170c40;return _0x163037;})['then'](respondWithFilteredResult(_0x49e4c6,_0x3825c6))[_0xe10e('0x46')](handleError(_0x49e4c6,null));};exports['show']=function(_0x45b25e,_0x4bd0b4){var _0x527d12={'raw':!![],'where':{'id':_0x45b25e[_0xe10e('0x47')]['id']}},_0x3e23fe={};_0x3e23fe[_0xe10e('0x30')]=_[_0xe10e('0x32')](db[_0xe10e('0x44')]['rawAttributes']);_0x3e23fe[_0xe10e('0x33')]=_[_0xe10e('0x32')](_0x45b25e['query']);_0x3e23fe[_0xe10e('0x3e')]=_['intersection'](_0x3e23fe[_0xe10e('0x30')],_0x3e23fe[_0xe10e('0x33')]);_0x527d12['attributes']=_[_0xe10e('0x35')](_0x3e23fe[_0xe10e('0x30')],qs[_0xe10e('0x36')](_0x45b25e['query']['fields']));_0x527d12[_0xe10e('0x34')]=_0x527d12[_0xe10e('0x34')]['length']?_0x527d12[_0xe10e('0x34')]:_0x3e23fe[_0xe10e('0x30')];if(_0x45b25e[_0xe10e('0x33')][_0xe10e('0x42')]){_0x527d12['include']=[{'all':!![]}];}_0x527d12=_['merge']({},_0x527d12,_0x45b25e[_0xe10e('0x41')]);return db[_0xe10e('0x44')]['find'](_0x527d12)[_0xe10e('0x24')](handleEntityNotFound(_0x4bd0b4,null))[_0xe10e('0x24')](respondWithResult(_0x4bd0b4,null))['catch'](handleError(_0x4bd0b4,null));};exports[_0xe10e('0x48')]=function(_0x328909,_0x2f9d1e){return db[_0xe10e('0x44')]['create'](_0x328909[_0xe10e('0x49')],{})['then'](function(_0x5b356b){var _0x11d281=_0x328909[_0xe10e('0x4a')][_0xe10e('0x4b')]({'plain':!![]});if(!_0x11d281)throw new Error(_0xe10e('0x4c'));if(_0x11d281[_0xe10e('0x4d')]===_0xe10e('0x4a')){var _0x4fd73f=_0x5b356b[_0xe10e('0x4b')]({'plain':!![]});var _0x4bb256=_0xe10e('0x25');return db[_0xe10e('0x4e')][_0xe10e('0x4f')]({'where':{'name':_0x4bb256,'userProfileId':_0x11d281[_0xe10e('0x50')]},'raw':!![]})[_0xe10e('0x24')](function(_0x53ed6d){if(_0x53ed6d&&_0x53ed6d[_0xe10e('0x51')]===0x0){return db[_0xe10e('0x26')][_0xe10e('0x48')]({'name':_0x4fd73f[_0xe10e('0x2a')],'resourceId':_0x4fd73f['id'],'type':_0x53ed6d['name'],'sectionId':_0x53ed6d['id']},{})['then'](function(){return _0x5b356b;});}else{return _0x5b356b;}})[_0xe10e('0x46')](function(_0x3d5633){logger[_0xe10e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d5633);throw _0x3d5633;});}return _0x5b356b;})[_0xe10e('0x24')](respondWithResult(_0x2f9d1e,0xc9))[_0xe10e('0x46')](handleError(_0x2f9d1e,null));};exports[_0xe10e('0x23')]=function(_0x2d4230,_0x287439){if(_0x2d4230[_0xe10e('0x49')]['id']){delete _0x2d4230['body']['id'];}return db['Variable'][_0xe10e('0x4f')]({'where':{'id':_0x2d4230['params']['id']}})[_0xe10e('0x24')](handleEntityNotFound(_0x287439,null))['then'](saveUpdates(_0x2d4230[_0xe10e('0x49')],null))['then'](respondWithResult(_0x287439,null))['catch'](handleError(_0x287439,null));};exports[_0xe10e('0x27')]=function(_0x2b2fc6,_0x29b458){return db[_0xe10e('0x44')][_0xe10e('0x4f')]({'where':{'id':_0x2b2fc6[_0xe10e('0x47')]['id']}})[_0xe10e('0x24')](handleEntityNotFound(_0x29b458,null))['then'](removeEntity(_0x29b458,null))[_0xe10e('0x46')](handleError(_0x29b458,null));};
\ No newline at end of file
+var _0x7add=['squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Variable','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x19e612,_0x42734b){var _0x2ebc8f=function(_0x4a1997){while(--_0x4a1997){_0x19e612['push'](_0x19e612['shift']());}};_0x2ebc8f(++_0x42734b);}(_0x7add,0xe7));var _0xd7ad=function(_0x1a9efc,_0x47b73c){_0x1a9efc=_0x1a9efc-0x0;var _0xac709f=_0x7add[_0x1a9efc];return _0xac709f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd7ad('0x0'));var jsonpatch=require(_0xd7ad('0x1'));var rp=require(_0xd7ad('0x2'));var moment=require(_0xd7ad('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd7ad('0x4'));var util=require(_0xd7ad('0x5'));var path=require(_0xd7ad('0x6'));var sox=require(_0xd7ad('0x7'));var csv=require(_0xd7ad('0x8'));var ejs=require(_0xd7ad('0x9'));var fs=require('fs');var fs_extra=require(_0xd7ad('0xa'));var _=require(_0xd7ad('0xb'));var squel=require(_0xd7ad('0xc'));var crypto=require('crypto');var jsforce=require(_0xd7ad('0xd'));var deskjs=require(_0xd7ad('0xe'));var toCsv=require('to-csv');var querystring=require(_0xd7ad('0xf'));var Papa=require(_0xd7ad('0x10'));var Redis=require(_0xd7ad('0x11'));var authService=require(_0xd7ad('0x12'));var qs=require(_0xd7ad('0x13'));var as=require(_0xd7ad('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd7ad('0x15'));var utils=require(_0xd7ad('0x16'));var config=require(_0xd7ad('0x17'));var licenseUtil=require(_0xd7ad('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30593a,_0x49cf12){_0x49cf12=_0x49cf12||0xcc;return function(_0x13c7a7){if(_0x13c7a7){return _0x30593a[_0xd7ad('0x19')](_0x49cf12);}return _0x30593a[_0xd7ad('0x1a')](_0x49cf12)[_0xd7ad('0x1b')]();};}function respondWithResult(_0x3ca610,_0x2dcb06){_0x2dcb06=_0x2dcb06||0xc8;return function(_0x42a445){if(_0x42a445){return _0x3ca610[_0xd7ad('0x1a')](_0x2dcb06)[_0xd7ad('0x1c')](_0x42a445);}};}function respondWithFilteredResult(_0x4a1c6d,_0x100338){return function(_0x26cbaf){if(_0x26cbaf){var _0x51ca70=typeof _0x100338[_0xd7ad('0x1d')]===_0xd7ad('0x1e')&&typeof _0x100338[_0xd7ad('0x1f')]==='undefined';var _0x129f4d=_0x26cbaf[_0xd7ad('0x20')];var _0x48a8ce=_0x51ca70?0x0:_0x100338[_0xd7ad('0x1d')];var _0x2a15eb=_0x51ca70?_0x26cbaf['count']:_0x100338[_0xd7ad('0x1d')]+_0x100338[_0xd7ad('0x1f')];var _0x13f524;if(_0x2a15eb>=_0x129f4d){_0x2a15eb=_0x129f4d;_0x13f524=0xc8;}else{_0x13f524=0xce;}_0x4a1c6d[_0xd7ad('0x1a')](_0x13f524);return _0x4a1c6d[_0xd7ad('0x21')]('Content-Range',_0x48a8ce+'-'+_0x2a15eb+'/'+_0x129f4d)[_0xd7ad('0x1c')](_0x26cbaf);}return null;};}function patchUpdates(_0x2a1668){return function(_0x52aa4f){try{jsonpatch['apply'](_0x52aa4f,_0x2a1668,!![]);}catch(_0x536fa1){return BPromise[_0xd7ad('0x22')](_0x536fa1);}return _0x52aa4f['save']();};}function saveUpdates(_0x2e98a3,_0x4f504f){return function(_0x3e24be){if(_0x3e24be){return _0x3e24be[_0xd7ad('0x23')](_0x2e98a3)[_0xd7ad('0x24')](function(_0x65770e){return _0x65770e;});}return null;};}function removeEntity(_0x56285f,_0x9f7f2){return function(_0x19ce26){if(_0x19ce26){return _0x19ce26[_0xd7ad('0x25')]()['then'](function(){var _0x6e35f7=_0x19ce26[_0xd7ad('0x26')]({'plain':!![]});var _0x15a953='Variables';return db[_0xd7ad('0x27')][_0xd7ad('0x25')]({'where':{'type':_0x15a953,'resourceId':_0x6e35f7['id']}})['then'](function(){return _0x19ce26;});})[_0xd7ad('0x24')](function(){_0x56285f[_0xd7ad('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2eafb9,_0xe8b019){return function(_0xf0a21d){if(!_0xf0a21d){_0x2eafb9['sendStatus'](0x194);}return _0xf0a21d;};}function handleError(_0x20974a,_0x33d12f){_0x33d12f=_0x33d12f||0x1f4;return function(_0x4b6004){logger[_0xd7ad('0x28')](_0x4b6004[_0xd7ad('0x29')]);if(_0x4b6004[_0xd7ad('0x2a')]){delete _0x4b6004[_0xd7ad('0x2a')];}_0x20974a['status'](_0x33d12f)[_0xd7ad('0x2b')](_0x4b6004);};}exports[_0xd7ad('0x2c')]=function(_0x2c8271,_0x53eefc){var _0x3ee2fe={},_0xdfe397={},_0x5d2270={'count':0x0,'rows':[]};var _0x2502dd=_[_0xd7ad('0x2d')](db[_0xd7ad('0x2e')][_0xd7ad('0x2f')],function(_0x52317b){return{'name':_0x52317b[_0xd7ad('0x30')],'type':_0x52317b['type'][_0xd7ad('0x31')]};});_0xdfe397[_0xd7ad('0x32')]=_[_0xd7ad('0x2d')](_0x2502dd,'name');_0xdfe397[_0xd7ad('0x33')]=_[_0xd7ad('0x34')](_0x2c8271[_0xd7ad('0x33')]);_0xdfe397[_0xd7ad('0x35')]=_[_0xd7ad('0x36')](_0xdfe397[_0xd7ad('0x32')],_0xdfe397[_0xd7ad('0x33')]);_0x3ee2fe['attributes']=_['intersection'](_0xdfe397[_0xd7ad('0x32')],qs[_0xd7ad('0x37')](_0x2c8271['query']['fields']));_0x3ee2fe[_0xd7ad('0x38')]=_0x3ee2fe[_0xd7ad('0x38')][_0xd7ad('0x39')]?_0x3ee2fe[_0xd7ad('0x38')]:_0xdfe397[_0xd7ad('0x32')];if(!_0x2c8271[_0xd7ad('0x33')]['hasOwnProperty'](_0xd7ad('0x3a'))){_0x3ee2fe[_0xd7ad('0x1f')]=qs[_0xd7ad('0x1f')](_0x2c8271[_0xd7ad('0x33')]['limit']);_0x3ee2fe['offset']=qs[_0xd7ad('0x1d')](_0x2c8271[_0xd7ad('0x33')][_0xd7ad('0x1d')]);}_0x3ee2fe[_0xd7ad('0x3b')]=qs[_0xd7ad('0x3c')](_0x2c8271[_0xd7ad('0x33')][_0xd7ad('0x3c')]);_0x3ee2fe[_0xd7ad('0x3d')]=qs[_0xd7ad('0x35')](_['pick'](_0x2c8271[_0xd7ad('0x33')],_0xdfe397[_0xd7ad('0x35')]),_0x2502dd);if(_0x2c8271[_0xd7ad('0x33')][_0xd7ad('0x3e')]){_0x3ee2fe[_0xd7ad('0x3d')]=_['merge'](_0x3ee2fe[_0xd7ad('0x3d')],{'$or':_[_0xd7ad('0x2d')](_0x2502dd,function(_0x526672){if(_0x526672[_0xd7ad('0x3f')]!==_0xd7ad('0x40')){var _0x56d2e0={};_0x56d2e0[_0x526672[_0xd7ad('0x2a')]]={'$like':'%'+_0x2c8271[_0xd7ad('0x33')][_0xd7ad('0x3e')]+'%'};return _0x56d2e0;}})});}_0x3ee2fe=_[_0xd7ad('0x41')]({},_0x3ee2fe,_0x2c8271[_0xd7ad('0x42')]);var _0x55fab5={'where':_0x3ee2fe[_0xd7ad('0x3d')]};return db[_0xd7ad('0x2e')][_0xd7ad('0x20')](_0x55fab5)[_0xd7ad('0x24')](function(_0x429278){_0x5d2270[_0xd7ad('0x20')]=_0x429278;if(_0x2c8271[_0xd7ad('0x33')]['includeAll']){_0x3ee2fe[_0xd7ad('0x43')]=[{'all':!![]}];}return db[_0xd7ad('0x2e')][_0xd7ad('0x44')](_0x3ee2fe);})[_0xd7ad('0x24')](function(_0x59e290){_0x5d2270['rows']=_0x59e290;return _0x5d2270;})[_0xd7ad('0x24')](respondWithFilteredResult(_0x53eefc,_0x3ee2fe))[_0xd7ad('0x45')](handleError(_0x53eefc,null));};exports[_0xd7ad('0x46')]=function(_0x2afbb2,_0x4140e3){var _0x2017b6={'raw':!![],'where':{'id':_0x2afbb2[_0xd7ad('0x47')]['id']}},_0x296e42={};_0x296e42[_0xd7ad('0x32')]=_[_0xd7ad('0x34')](db[_0xd7ad('0x2e')][_0xd7ad('0x2f')]);_0x296e42[_0xd7ad('0x33')]=_['keys'](_0x2afbb2[_0xd7ad('0x33')]);_0x296e42[_0xd7ad('0x35')]=_['intersection'](_0x296e42[_0xd7ad('0x32')],_0x296e42[_0xd7ad('0x33')]);_0x2017b6[_0xd7ad('0x38')]=_[_0xd7ad('0x36')](_0x296e42[_0xd7ad('0x32')],qs['fields'](_0x2afbb2[_0xd7ad('0x33')][_0xd7ad('0x37')]));_0x2017b6[_0xd7ad('0x38')]=_0x2017b6[_0xd7ad('0x38')]['length']?_0x2017b6[_0xd7ad('0x38')]:_0x296e42['model'];if(_0x2afbb2[_0xd7ad('0x33')][_0xd7ad('0x48')]){_0x2017b6[_0xd7ad('0x43')]=[{'all':!![]}];}_0x2017b6=_[_0xd7ad('0x41')]({},_0x2017b6,_0x2afbb2[_0xd7ad('0x42')]);return db['Variable'][_0xd7ad('0x49')](_0x2017b6)['then'](handleEntityNotFound(_0x4140e3,null))[_0xd7ad('0x24')](respondWithResult(_0x4140e3,null))[_0xd7ad('0x45')](handleError(_0x4140e3,null));};exports['create']=function(_0x19f11c,_0x1cf215){return db['Variable'][_0xd7ad('0x4a')](_0x19f11c[_0xd7ad('0x4b')],{})[_0xd7ad('0x24')](function(_0x2a4644){var _0x627298=_0x19f11c['user'][_0xd7ad('0x26')]({'plain':!![]});if(!_0x627298)throw new Error(_0xd7ad('0x4c'));if(_0x627298[_0xd7ad('0x4d')]==='user'){var _0x40ac52=_0x2a4644[_0xd7ad('0x26')]({'plain':!![]});var _0x44fdbd='Variables';return db[_0xd7ad('0x4e')][_0xd7ad('0x49')]({'where':{'name':_0x44fdbd,'userProfileId':_0x627298[_0xd7ad('0x4f')]},'raw':!![]})[_0xd7ad('0x24')](function(_0x86e97b){if(_0x86e97b&&_0x86e97b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x40ac52[_0xd7ad('0x2a')],'resourceId':_0x40ac52['id'],'type':_0x86e97b['name'],'sectionId':_0x86e97b['id']},{})[_0xd7ad('0x24')](function(){return _0x2a4644;});}else{return _0x2a4644;}})[_0xd7ad('0x45')](function(_0x642160){logger[_0xd7ad('0x28')](_0xd7ad('0x50'),_0x642160);throw _0x642160;});}return _0x2a4644;})['then'](respondWithResult(_0x1cf215,0xc9))[_0xd7ad('0x45')](handleError(_0x1cf215,null));};exports[_0xd7ad('0x23')]=function(_0xfcf006,_0x4c50c7){if(_0xfcf006[_0xd7ad('0x4b')]['id']){delete _0xfcf006['body']['id'];}return db[_0xd7ad('0x2e')][_0xd7ad('0x49')]({'where':{'id':_0xfcf006[_0xd7ad('0x47')]['id']}})['then'](handleEntityNotFound(_0x4c50c7,null))[_0xd7ad('0x24')](saveUpdates(_0xfcf006[_0xd7ad('0x4b')],null))[_0xd7ad('0x24')](respondWithResult(_0x4c50c7,null))[_0xd7ad('0x45')](handleError(_0x4c50c7,null));};exports['destroy']=function(_0x4fcaf4,_0x43e9e3){return db[_0xd7ad('0x2e')][_0xd7ad('0x49')]({'where':{'id':_0x4fcaf4[_0xd7ad('0x47')]['id']}})['then'](handleEntityNotFound(_0x43e9e3,null))[_0xd7ad('0x24')](removeEntity(_0x43e9e3,null))[_0xd7ad('0x45')](handleError(_0x43e9e3,null));};
\ No newline at end of file
index fc8941e..7a74c59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdacc=['path','rimraf','../../config/environment','./variable.attributes','lodash','util','../../config/logger','moment','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdacc,0x190));var _0xcdac=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xdacc[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xcdac('0x0'));var util=require(_0xcdac('0x1'));var logger=require(_0xcdac('0x2'))('api');var moment=require(_0xcdac('0x3'));var BPromise=require('bluebird');var rp=require(_0xcdac('0x4'));var fs=require('fs');var path=require(_0xcdac('0x5'));var rimraf=require(_0xcdac('0x6'));var config=require(_0xcdac('0x7'));var attributes=require(_0xcdac('0x8'));module['exports']=function(_0x3f8c2d,_0x436667){return _0x3f8c2d['define']('Variable',attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61f6=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./variable.attributes','define','Variable','tools_variables','lodash'];(function(_0x44039a,_0x2ac8a8){var _0x525de5=function(_0x1dc635){while(--_0x1dc635){_0x44039a['push'](_0x44039a['shift']());}};_0x525de5(++_0x2ac8a8);}(_0x61f6,0x173));var _0x661f=function(_0x3a04ab,_0x31b9fd){_0x3a04ab=_0x3a04ab-0x0;var _0x4bff6d=_0x61f6[_0x3a04ab];return _0x4bff6d;};'use strict';var _=require(_0x661f('0x0'));var util=require(_0x661f('0x1'));var logger=require(_0x661f('0x2'))(_0x661f('0x3'));var moment=require('moment');var BPromise=require(_0x661f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x661f('0x5'));var rimraf=require(_0x661f('0x6'));var config=require(_0x661f('0x7'));var attributes=require(_0x661f('0x8'));module['exports']=function(_0x3975d0,_0x4a7c5e){return _0x3975d0[_0x661f('0x9')](_0x661f('0xa'),attributes,{'tableName':_0x661f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76bf431..865d8f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','Variable','find','options','raw','include','model','attributes','map','ShowVariable','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5b8f6d,_0x15ecd0){var _0x729fba=function(_0xfeecfc){while(--_0xfeecfc){_0x5b8f6d['push'](_0x5b8f6d['shift']());}};_0x729fba(++_0x15ecd0);}(_0x8ef6,0xf2));var _0x68ef=function(_0x128c47,_0x1bd31a){_0x128c47=_0x128c47-0x0;var _0x529364=_0x8ef6[_0x128c47];return _0x529364;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}exports['ShowVariable']=function(_0x2633c1){var _0x404870=this;return new Promise(function(_0x4ade0d,_0x527870){return db[_0x68ef('0x18')][_0x68ef('0x19')]({'raw':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1['options'][_0x68ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['where']||null:null,'attributes':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['attributes']||null:null,'include':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')][_0x68ef('0x1c')]?_['map'](_0x2633c1['options']['include'],function(_0x26018d){return{'model':db[_0x26018d[_0x68ef('0x1d')]],'as':_0x26018d['as'],'attributes':_0x26018d[_0x68ef('0x1e')],'include':_0x26018d[_0x68ef('0x1c')]?_[_0x68ef('0x1f')](_0x26018d[_0x68ef('0x1c')],function(_0x258cd5){return{'model':db[_0x258cd5[_0x68ef('0x1d')]],'as':_0x258cd5['as'],'attributes':_0x258cd5[_0x68ef('0x1e')],'include':_0x258cd5[_0x68ef('0x1c')]?_['map'](_0x258cd5[_0x68ef('0x1c')],function(_0x57f9ee){return{'model':db[_0x57f9ee['model']],'as':_0x57f9ee['as'],'attributes':_0x57f9ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x68ef('0xc')](function(_0x268f32){logger[_0x68ef('0xd')](_0x68ef('0x20'),_0x2633c1);logger['debug']('ShowVariable',_0x2633c1,JSON[_0x68ef('0x12')](_0x268f32));_0x4ade0d(_0x268f32);})[_0x68ef('0x17')](function(_0x7bf96){logger[_0x68ef('0x13')](_0x68ef('0x20'),_0x7bf96[_0x68ef('0x15')],_0x2633c1);_0x527870(_0x404870[_0x68ef('0x13')](0x1f4,_0x7bf96[_0x68ef('0x15')]));});});};
\ No newline at end of file
+var _0x9957=['stringify','error','code','message','result','catch','ShowVariable','find','raw','options','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x14977c,_0x12414f){var _0x47162b=function(_0x128773){while(--_0x128773){_0x14977c['push'](_0x14977c['shift']());}};_0x47162b(++_0x12414f);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Variable,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}exports[_0x7995('0x18')]=function(_0x291317){var _0x1e1415=this;return new Promise(function(_0x37a7d4,_0x4faa60){return db['Variable'][_0x7995('0x19')]({'raw':_0x291317['options']?_0x291317['options'][_0x7995('0x1a')]===undefined?!![]:![]:!![],'where':_0x291317[_0x7995('0x1b')]?_0x291317['options'][_0x7995('0x1c')]||null:null,'attributes':_0x291317['options']?_0x291317['options'][_0x7995('0x1d')]||null:null,'include':_0x291317[_0x7995('0x1b')]?_0x291317[_0x7995('0x1b')][_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x291317[_0x7995('0x1b')]['include'],function(_0x32a09a){return{'model':db[_0x32a09a[_0x7995('0x20')]],'as':_0x32a09a['as'],'attributes':_0x32a09a[_0x7995('0x1d')],'include':_0x32a09a[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x32a09a[_0x7995('0x1e')],function(_0x475351){return{'model':db[_0x475351[_0x7995('0x20')]],'as':_0x475351['as'],'attributes':_0x475351['attributes'],'include':_0x475351[_0x7995('0x1e')]?_[_0x7995('0x1f')](_0x475351[_0x7995('0x1e')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x20')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47625f){logger['info'](_0x7995('0x18'),_0x291317);logger[_0x7995('0x10')](_0x7995('0x18'),_0x291317,JSON[_0x7995('0x12')](_0x47625f));_0x37a7d4(_0x47625f);})[_0x7995('0x17')](function(_0x4b6f99){logger[_0x7995('0x13')]('ShowVariable',_0x4b6f99[_0x7995('0x15')],_0x291317);_0x4faa60(_0x1e1415[_0x7995('0x13')](0x1f4,_0x4b6f99[_0x7995('0x15')]));});});};
\ No newline at end of file
index 25ce8ef..1424874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd974=['/fetch','canUpdate','/reset','isAuthenticated','reset','pull','/restart','restart','/migrations','exports','express','../../components/auth/service','./version.controller','get'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xd974,0x106));var _0x4d97=function(_0x47ddf1,_0x1cdb51){_0x47ddf1=_0x47ddf1-0x0;var _0x4b25b1=_0xd974[_0x47ddf1];return _0x4b25b1;};'use strict';var express=require(_0x4d97('0x0'));var router=express['Router']();var auth=require(_0x4d97('0x1'));var controller=require(_0x4d97('0x2'));router['get']('/',controller['index']);router[_0x4d97('0x3')](_0x4d97('0x4'),auth['isAuthenticated'](),auth[_0x4d97('0x5')](),controller['fetch']);router[_0x4d97('0x3')](_0x4d97('0x6'),auth[_0x4d97('0x7')](),auth['canUpdate'](),controller[_0x4d97('0x8')]);router[_0x4d97('0x3')]('/pull',auth[_0x4d97('0x7')](),auth[_0x4d97('0x5')](),controller[_0x4d97('0x9')]);router[_0x4d97('0x3')](_0x4d97('0xa'),auth[_0x4d97('0x7')](),controller[_0x4d97('0xb')]);router[_0x4d97('0x3')](_0x4d97('0xc'),controller['migrations']);module[_0x4d97('0xd')]=router;
\ No newline at end of file
+var _0x67fb=['/migrations','migrations','exports','Router','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset','reset','pull','/restart','restart'];(function(_0x1c7137,_0x4c7c26){var _0xeb4432=function(_0x26d850){while(--_0x26d850){_0x1c7137['push'](_0x1c7137['shift']());}};_0xeb4432(++_0x4c7c26);}(_0x67fb,0x113));var _0xb67f=function(_0x5ea6fd,_0x1e9b14){_0x5ea6fd=_0x5ea6fd-0x0;var _0x2c979f=_0x67fb[_0x5ea6fd];return _0x2c979f;};'use strict';var express=require('express');var router=express[_0xb67f('0x0')]();var auth=require(_0xb67f('0x1'));var controller=require(_0xb67f('0x2'));router[_0xb67f('0x3')]('/',controller[_0xb67f('0x4')]);router[_0xb67f('0x3')](_0xb67f('0x5'),auth[_0xb67f('0x6')](),auth[_0xb67f('0x7')](),controller[_0xb67f('0x8')]);router['get'](_0xb67f('0x9'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xb67f('0xa')]);router[_0xb67f('0x3')]('/pull',auth['isAuthenticated'](),auth[_0xb67f('0x7')](),controller[_0xb67f('0xb')]);router[_0xb67f('0x3')](_0xb67f('0xc'),auth[_0xb67f('0x6')](),controller[_0xb67f('0xd')]);router[_0xb67f('0x3')](_0xb67f('0xe'),controller[_0xb67f('0xf')]);module[_0xb67f('0x10')]=router;
\ No newline at end of file
index c4bbe57..74c5e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x778c=['../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','FETCH_HEAD','git\x20reset\x20--hard','restart','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','map','then','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','version','compare-versions','child_process','../../config/environment'];(function(_0x4cffcc,_0x52e0d5){var _0x376ee1=function(_0x2c451){while(--_0x2c451){_0x4cffcc['push'](_0x4cffcc['shift']());}};_0x376ee1(++_0x52e0d5);}(_0x778c,0xc1));var _0xc778=function(_0x4bbaba,_0x15097c){_0x4bbaba=_0x4bbaba-0x0;var _0x34ff2b=_0x778c[_0x4bbaba];return _0x34ff2b;};'use strict';var Umzug=require(_0xc778('0x0'));var path=require(_0xc778('0x1'));var fs=require('fs');var _=require(_0xc778('0x2'));var pkginfo=require('pkginfo')(module,_0xc778('0x3'));var compareVersions=require(_0xc778('0x4'));var exec=require(_0xc778('0x5'))['exec'];var db=require('../../mysqldb')['db'];var config=require(_0xc778('0x6'));var pm2=require(_0xc778('0x7'));var logger=require(_0xc778('0x8'))(_0xc778('0x9'));var git=require(_0xc778('0xa'))(config[_0xc778('0xb')]);exports[_0xc778('0xc')]=function(_0x2b1488,_0x42caba){var _0x33bcd={'current':module[_0xc778('0xd')][_0xc778('0x3')],'phonebar':0x2};if(_0x2b1488['query']&&_0x2b1488[_0xc778('0xe')][_0xc778('0xf')]){return git[_0xc778('0x10')]()[_0xc778('0x11')](function(_0x134b3a,_0x4a54e5){_0x33bcd[_0xc778('0xf')]=(_0x134b3a?module[_0xc778('0xd')][_0xc778('0x3')]:_0x4a54e5[_0xc778('0xf')])||_0xc778('0x12');return _0x42caba[_0xc778('0x13')](0xc8)[_0xc778('0x14')](_0x33bcd);});}else{return _0x42caba[_0xc778('0x13')](0xc8)[_0xc778('0x14')](_0x33bcd);}};exports[_0xc778('0x10')]=function(_0x37868c,_0x3f0700){return git['fetch'](['origin','master'],function(_0x974c62){if(_0x974c62){logger[_0xc778('0x15')](_0x974c62);return _0x3f0700['status'](0x1f4)[_0xc778('0x14')](_0x974c62);}logger[_0xc778('0x16')](_0xc778('0x17'));return _0x3f0700['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x18')});});};exports['reset']=function(_0x13dea8,_0x2bc4cd){return git['reset'](['--hard',_0xc778('0x19')],function(_0x269967){if(_0x269967){logger[_0xc778('0x15')](_0x269967);return _0x2bc4cd[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x269967);}logger[_0xc778('0x16')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x2bc4cd['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x1a')});});};exports['pull']=function(_0x2fd6e6,_0x16ba40){exec('npm\x20install\x20--production',function(_0x5309be,_0x4edf28,_0x200d02){logger[_0xc778('0x16')](_0x4edf28);logger[_0xc778('0x16')](_0x200d02);if(_0x5309be){logger[_0xc778('0x15')](_0x5309be);return _0x16ba40[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x5309be);}return _0x16ba40['status'](0xc8)[_0xc778('0x14')]({'output':_0x4edf28});});};exports[_0xc778('0x1b')]=function(_0x22fa8b,_0x19adb7){return pm2['restart']('motion2')['then'](function(_0x2ffcca){logger['info'](_0xc778('0x1c'),_0x2ffcca);return _0x19adb7[_0xc778('0x13')](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x1d')});})[_0xc778('0x1e')](function(_0x2fb52a){logger['error'](_0x2fb52a);return _0x19adb7[_0xc778('0x13')](0x1f4)[_0xc778('0x14')](_0x2fb52a);});};exports[_0xc778('0x1f')]=function(_0x192233,_0x5dae20){var _0x3556b1=fs[_0xc778('0x20')](path[_0xc778('0x21')](config[_0xc778('0xb')],_0xc778('0x22'),_0xc778('0x1f')));var _0x46e429=[];for(var _0x56dcc2=0x0;_0x56dcc2<_0x3556b1[_0xc778('0x23')];_0x56dcc2++){var _0xf0240c=_0x3556b1[_0x56dcc2][_0xc778('0x24')](_0xc778('0x25'),'');if(compareVersions(module['exports'][_0xc778('0x3')],_0xf0240c)===-0x1){_0x46e429[_0xc778('0x26')](_0xf0240c);}}if(_0x46e429[_0xc778('0x23')]){var _0x433a77=_0x46e429[_0xc778('0x27')](compareVersions);var _0x5e0cf8=new Umzug({'storage':_0xc778('0x28'),'storageOptions':{'model':db[_0xc778('0x29')],'modelName':_0xc778('0x29'),'columnName':_0xc778('0x3')},'migrations':{'params':[db[_0xc778('0x28')][_0xc778('0x2a')](),db[_0xc778('0x28')][_0xc778('0x2b')],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path['join'](config[_0xc778('0xb')],_0xc778('0x22'),'migrations'),'pattern':/\.js$/}});_0x5e0cf8['up']({'migrations':_[_0xc778('0x2c')](_0x433a77,function(_0x2c16f3){return _0x2c16f3+'.js';})})[_0xc778('0x2d')](function(){return _0x5dae20[_0xc778('0x13')](0xc8)[_0xc778('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0xc778('0x3')]+_0xc778('0x2e')+_[_0xc778('0x2f')](_0x433a77),'migrations':_[_0xc778('0x21')](_0x433a77)});})[_0xc778('0x1e')](function(_0x280c30){if(_0x280c30 instanceof db[_0xc778('0x28')][_0xc778('0x30')]){return _0x5dae20['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x31')});}else{return _0x5dae20[_0xc778('0x13')](0x1f4)['json'](_0x280c30);}});}else{return _0x5dae20['status'](0xc8)[_0xc778('0x14')]({'output':_0xc778('0x31')});}};
\ No newline at end of file
+var _0x0b6a=['root','index','exports','query','latest','fetch','tags','json','status','origin','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','info','git\x20reset\x20--hard\x20FETCH_HEAD','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','server','length','replace','version','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','migrations','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','lodash','pkginfo','compare-versions','child_process','exec','../../mysqldb','../../config/environment','update','simple-git'];(function(_0x29c261,_0x3af39a){var _0x1a9335=function(_0x40d1e8){while(--_0x40d1e8){_0x29c261['push'](_0x29c261['shift']());}};_0x1a9335(++_0x3af39a);}(_0x0b6a,0x1e5));var _0xa0b6=function(_0x188eb1,_0x2f2da4){_0x188eb1=_0x188eb1-0x0;var _0x9ac1c3=_0x0b6a[_0x188eb1];return _0x9ac1c3;};'use strict';var Umzug=require(_0xa0b6('0x0'));var path=require('path');var fs=require('fs');var _=require(_0xa0b6('0x1'));var pkginfo=require(_0xa0b6('0x2'))(module,'version');var compareVersions=require(_0xa0b6('0x3'));var exec=require(_0xa0b6('0x4'))[_0xa0b6('0x5')];var db=require(_0xa0b6('0x6'))['db'];var config=require(_0xa0b6('0x7'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0xa0b6('0x8'));var git=require(_0xa0b6('0x9'))(config[_0xa0b6('0xa')]);exports[_0xa0b6('0xb')]=function(_0xe48588,_0x25f742){var _0x1229cd={'current':module[_0xa0b6('0xc')]['version'],'phonebar':0x2};if(_0xe48588[_0xa0b6('0xd')]&&_0xe48588[_0xa0b6('0xd')][_0xa0b6('0xe')]){return git[_0xa0b6('0xf')]()[_0xa0b6('0x10')](function(_0x35b3db,_0x134a65){_0x1229cd[_0xa0b6('0xe')]=(_0x35b3db?module[_0xa0b6('0xc')]['version']:_0x134a65['latest'])||'2.0.0';return _0x25f742['status'](0xc8)[_0xa0b6('0x11')](_0x1229cd);});}else{return _0x25f742[_0xa0b6('0x12')](0xc8)['json'](_0x1229cd);}};exports[_0xa0b6('0xf')]=function(_0x3d58c5,_0x11fd8b){return git[_0xa0b6('0xf')]([_0xa0b6('0x13'),_0xa0b6('0x14')],function(_0x3ad477){if(_0x3ad477){logger[_0xa0b6('0x15')](_0x3ad477);return _0x11fd8b[_0xa0b6('0x12')](0x1f4)[_0xa0b6('0x11')](_0x3ad477);}logger['info'](_0xa0b6('0x16'));return _0x11fd8b['status'](0xc8)[_0xa0b6('0x11')]({'output':_0xa0b6('0x17')});});};exports[_0xa0b6('0x18')]=function(_0x172c73,_0x30db83){return git[_0xa0b6('0x18')]([_0xa0b6('0x19'),_0xa0b6('0x1a')],function(_0x321090){if(_0x321090){logger[_0xa0b6('0x15')](_0x321090);return _0x30db83[_0xa0b6('0x12')](0x1f4)['json'](_0x321090);}logger[_0xa0b6('0x1b')](_0xa0b6('0x1c'));return _0x30db83['status'](0xc8)[_0xa0b6('0x11')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0xc70c79,_0x5d0131){exec(_0xa0b6('0x1d'),function(_0xc136f1,_0x54cbb7,_0xc10d7b){logger[_0xa0b6('0x1b')](_0x54cbb7);logger[_0xa0b6('0x1b')](_0xc10d7b);if(_0xc136f1){logger[_0xa0b6('0x15')](_0xc136f1);return _0x5d0131[_0xa0b6('0x12')](0x1f4)[_0xa0b6('0x11')](_0xc136f1);}return _0x5d0131[_0xa0b6('0x12')](0xc8)['json']({'output':_0x54cbb7});});};exports[_0xa0b6('0x1e')]=function(_0x5928bb,_0x2d72f7){return pm2[_0xa0b6('0x1e')](_0xa0b6('0x1f'))[_0xa0b6('0x20')](function(_0xce43cf){logger[_0xa0b6('0x1b')](_0xa0b6('0x21'),_0xce43cf);return _0x2d72f7[_0xa0b6('0x12')](0xc8)[_0xa0b6('0x11')]({'output':_0xa0b6('0x22')});})[_0xa0b6('0x23')](function(_0x4c1ea6){logger['error'](_0x4c1ea6);return _0x2d72f7[_0xa0b6('0x12')](0x1f4)[_0xa0b6('0x11')](_0x4c1ea6);});};exports['migrations']=function(_0x25cb6b,_0x394dd1){var _0x158f77=fs[_0xa0b6('0x24')](path['join'](config['root'],_0xa0b6('0x25'),'migrations'));var _0x595a31=[];for(var _0x3d0dbb=0x0;_0x3d0dbb<_0x158f77[_0xa0b6('0x26')];_0x3d0dbb++){var _0x562c4a=_0x158f77[_0x3d0dbb][_0xa0b6('0x27')]('.js','');if(compareVersions(module[_0xa0b6('0xc')][_0xa0b6('0x28')],_0x562c4a)===-0x1){_0x595a31['push'](_0x562c4a);}}if(_0x595a31[_0xa0b6('0x26')]){var _0x5a085b=_0x595a31[_0xa0b6('0x29')](compareVersions);var _0x5e1d5b=new Umzug({'storage':_0xa0b6('0x2a'),'storageOptions':{'model':db[_0xa0b6('0x2b')],'modelName':_0xa0b6('0x2b'),'columnName':_0xa0b6('0x28')},'migrations':{'params':[db[_0xa0b6('0x2a')][_0xa0b6('0x2c')](),db['sequelize'][_0xa0b6('0x2d')],function(){throw new Error(_0xa0b6('0x2e'));}],'path':path[_0xa0b6('0x2f')](config['root'],_0xa0b6('0x25'),_0xa0b6('0x30')),'pattern':/\.js$/}});_0x5e1d5b['up']({'migrations':_['map'](_0x5a085b,function(_0x4b1e1f){return _0x4b1e1f+_0xa0b6('0x31');})})['then'](function(){return _0x394dd1[_0xa0b6('0x12')](0xc8)[_0xa0b6('0x11')]({'output':_0xa0b6('0x32')+module[_0xa0b6('0xc')][_0xa0b6('0x28')]+_0xa0b6('0x33')+_[_0xa0b6('0x34')](_0x5a085b),'migrations':_[_0xa0b6('0x2f')](_0x5a085b)});})['catch'](function(_0x57571a){if(_0x57571a instanceof db['sequelize'][_0xa0b6('0x35')]){return _0x394dd1[_0xa0b6('0x12')](0xc8)[_0xa0b6('0x11')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x394dd1[_0xa0b6('0x12')](0x1f4)['json'](_0x57571a);}});}else{return _0x394dd1[_0xa0b6('0x12')](0xc8)[_0xa0b6('0x11')]({'output':_0xa0b6('0x36')});}};
\ No newline at end of file
index a7a0d67..47638a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e6=['show','create','put','/:id','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe'];(function(_0x54db3c,_0x57a938){var _0x89abe3=function(_0x167ef0){while(--_0x167ef0){_0x54db3c['push'](_0x54db3c['shift']());}};_0x89abe3(++_0x57a938);}(_0xa9e6,0x14a));var _0x6a9e=function(_0x1f840c,_0x323b72){_0x1f840c=_0x1f840c-0x0;var _0x4277ae=_0xa9e6[_0x1f840c];return _0x4277ae;};'use strict';var multer=require(_0x6a9e('0x0'));var util=require(_0x6a9e('0x1'));var path=require(_0x6a9e('0x2'));var timeout=require('connect-timeout');var express=require(_0x6a9e('0x3'));var router=express[_0x6a9e('0x4')]();var fs_extra=require(_0x6a9e('0x5'));var auth=require(_0x6a9e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a9e('0x7'));var controller=require('./voiceAgentReport.controller');router[_0x6a9e('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6a9e('0x8')](_0x6a9e('0x9'),auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xb')]);router[_0x6a9e('0x8')]('/:id',auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xc')]);router['post']('/',auth[_0x6a9e('0xa')](),controller[_0x6a9e('0xd')]);router[_0x6a9e('0xe')](_0x6a9e('0xf'),auth['isAuthenticated'](),controller[_0x6a9e('0x10')]);router['delete']('/:id',auth[_0x6a9e('0xa')](),controller['destroy']);module[_0x6a9e('0x11')]=router;
\ No newline at end of file
+var _0x8b3f=['../../components/auth/service','./voiceAgentReport.controller','isAuthenticated','index','get','/describe','/:id','show','put','update','delete','destroy','exports','multer','connect-timeout','Router','fs-extra'];(function(_0x28f732,_0x11e2bf){var _0x4112a9=function(_0x406142){while(--_0x406142){_0x28f732['push'](_0x28f732['shift']());}};_0x4112a9(++_0x11e2bf);}(_0x8b3f,0xa6));var _0xf8b3=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8b3f[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0xf8b3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf8b3('0x1'));var express=require('express');var router=express[_0xf8b3('0x2')]();var fs_extra=require(_0xf8b3('0x3'));var auth=require(_0xf8b3('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf8b3('0x5'));router['get']('/',auth[_0xf8b3('0x6')](),controller[_0xf8b3('0x7')]);router[_0xf8b3('0x8')](_0xf8b3('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0xf8b3('0x8')](_0xf8b3('0xa'),auth[_0xf8b3('0x6')](),controller[_0xf8b3('0xb')]);router['post']('/',auth[_0xf8b3('0x6')](),controller['create']);router[_0xf8b3('0xc')](_0xf8b3('0xa'),auth['isAuthenticated'](),controller[_0xf8b3('0xd')]);router[_0xf8b3('0xe')]('/:id',auth[_0xf8b3('0x6')](),controller[_0xf8b3('0xf')]);module[_0xf8b3('0x10')]=router;
\ No newline at end of file
index e0138ea..c1e499e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaef=['FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x280bef,_0x5e1bd3){var _0x56dc85=function(_0x533dfe){while(--_0x533dfe){_0x280bef['push'](_0x280bef['shift']());}};_0x56dc85(++_0x5e1bd3);}(_0xcaef,0x1c9));var _0xfcae=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xcaef[_0x5f09c5];return _0x426ad9;};'use strict';var Sequelize=require('sequelize');module[_0xfcae('0x0')]={'type':{'type':Sequelize[_0xfcae('0x1')]},'uniqueid':{'type':Sequelize[_0xfcae('0x1')]},'calleridnum':{'type':Sequelize[_0xfcae('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfcae('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xfcae('0x1')]},'agentcalledAt':{'type':Sequelize[_0xfcae('0x2')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xfcae('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xfcae('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xfcae('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xfcae('0x3')]},'agentacw':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xfcae('0x1')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xfcae('0x3')]},'channelstatedesc':{'type':Sequelize[_0xfcae('0x1')]},'connectedlinenum':{'type':Sequelize[_0xfcae('0x1')]},'connectedlinename':{'type':Sequelize[_0xfcae('0x1')]},'language':{'type':Sequelize[_0xfcae('0x1')]},'accountcode':{'type':Sequelize[_0xfcae('0x1')]},'context':{'type':Sequelize[_0xfcae('0x1')]},'exten':{'type':Sequelize[_0xfcae('0x1')]},'priority':{'type':Sequelize[_0xfcae('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xfcae('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xfcae('0x1')]},'destcalleridnum':{'type':Sequelize[_0xfcae('0x1')]},'destcalleridname':{'type':Sequelize[_0xfcae('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xfcae('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xfcae('0x1')]},'destlanguage':{'type':Sequelize[_0xfcae('0x1')]},'destaccountcode':{'type':Sequelize[_0xfcae('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xfcae('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xfcae('0x1')]},'transfer':{'type':Sequelize[_0xfcae('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfcae('0x1')],'comment':_0xfcae('0x5')},'transferexten':{'type':Sequelize[_0xfcae('0x1')]},'transferuniqueid':{'type':Sequelize[_0xfcae('0x1')]},'agententerreason':{'type':Sequelize[_0xfcae('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x349e=['sequelize','exports','STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x51ba06,_0x4ed036){var _0x32a797=function(_0x110c95){while(--_0x110c95){_0x51ba06['push'](_0x51ba06['shift']());}};_0x32a797(++_0x4ed036);}(_0x349e,0xcb));var _0xe349=function(_0x34079b,_0x1e7354){_0x34079b=_0x34079b-0x0;var _0x4fb92c=_0x349e[_0x34079b];return _0x4fb92c;};'use strict';var Sequelize=require(_0xe349('0x0'));module[_0xe349('0x1')]={'type':{'type':Sequelize[_0xe349('0x2')]},'uniqueid':{'type':Sequelize[_0xe349('0x2')]},'calleridnum':{'type':Sequelize[_0xe349('0x2')]},'calleridname':{'type':Sequelize[_0xe349('0x2')]},'queue':{'type':Sequelize[_0xe349('0x2')]},'interface':{'type':Sequelize[_0xe349('0x2')]},'membername':{'type':Sequelize[_0xe349('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xe349('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0xe349('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xe349('0x5')]},'agentacw':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xe349('0x5')]},'reason':{'type':Sequelize[_0xe349('0x2')]},'lastevent':{'type':Sequelize[_0xe349('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xe349('0x5')]},'channelstatedesc':{'type':Sequelize[_0xe349('0x2')]},'connectedlinenum':{'type':Sequelize[_0xe349('0x2')]},'connectedlinename':{'type':Sequelize[_0xe349('0x2')]},'language':{'type':Sequelize[_0xe349('0x2')]},'accountcode':{'type':Sequelize[_0xe349('0x2')]},'context':{'type':Sequelize[_0xe349('0x2')]},'exten':{'type':Sequelize[_0xe349('0x2')]},'priority':{'type':Sequelize[_0xe349('0x2')]},'destchannel':{'type':Sequelize[_0xe349('0x2')]},'destchannelstate':{'type':Sequelize[_0xe349('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0xe349('0x2')]},'destcalleridnum':{'type':Sequelize[_0xe349('0x2')]},'destcalleridname':{'type':Sequelize[_0xe349('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xe349('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xe349('0x2')]},'destlanguage':{'type':Sequelize[_0xe349('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xe349('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xe349('0x2')]},'destuniqueid':{'type':Sequelize[_0xe349('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xe349('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xe349('0x2')],'comment':_0xe349('0x6')},'transferexten':{'type':Sequelize[_0xe349('0x2')]},'transferuniqueid':{'type':Sequelize[_0xe349('0x2')]},'agententerreason':{'type':Sequelize[_0xe349('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 915d9ac..6b68f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 699ee0f..30966d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','define','report_agent','destuniqueid','lodash','../../config/logger','moment'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x0309,0x165));var _0x9030=function(_0x41cc8f,_0xc41a5b){_0x41cc8f=_0x41cc8f-0x0;var _0x19a671=_0x0309[_0x41cc8f];return _0x19a671;};'use strict';var _=require(_0x9030('0x0'));var util=require('util');var logger=require(_0x9030('0x1'))('api');var moment=require(_0x9030('0x2'));var BPromise=require(_0x9030('0x3'));var rp=require(_0x9030('0x4'));var fs=require('fs');var path=require(_0x9030('0x5'));var rimraf=require(_0x9030('0x6'));var config=require(_0x9030('0x7'));var attributes=require(_0x9030('0x8'));module['exports']=function(_0x5a3334,_0x1c9c7b){return _0x5a3334[_0x9030('0x9')]('VoiceAgentReport',attributes,{'tableName':_0x9030('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x9030('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x448b=['rimraf','../../config/environment','./voiceAgentReport.attributes','exports','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0xb8c748,_0x331c28){var _0x273320=function(_0x2830ee){while(--_0x2830ee){_0xb8c748['push'](_0xb8c748['shift']());}};_0x273320(++_0x331c28);}(_0x448b,0x125));var _0xb448=function(_0x4febe7,_0x1c3a78){_0x4febe7=_0x4febe7-0x0;var _0x42714c=_0x448b[_0x4febe7];return _0x42714c;};'use strict';var _=require(_0xb448('0x0'));var util=require(_0xb448('0x1'));var logger=require(_0xb448('0x2'))(_0xb448('0x3'));var moment=require(_0xb448('0x4'));var BPromise=require(_0xb448('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb448('0x6'));var rimraf=require(_0xb448('0x7'));var config=require(_0xb448('0x8'));var attributes=require(_0xb448('0x9'));module[_0xb448('0xa')]=function(_0x276466,_0x3670cb){return _0x276466['define'](_0xb448('0xb'),attributes,{'tableName':_0xb448('0xc'),'paranoid':![],'indexes':[{'fields':[_0xb448('0xd'),_0xb448('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index f46e0e8..6eedf61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe31a=['VoiceAgentReport,\x20%s,\x20%s','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','debug','UpdateVoiceAgentReport','update','body','raw','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x38ad23,_0x57cf5f){var _0x25dc80=function(_0x17ccd1){while(--_0x17ccd1){_0x38ad23['push'](_0x38ad23['shift']());}};_0x25dc80(++_0x57cf5f);}(_0xe31a,0x17e));var _0xae31=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe31a[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xae31('0x0'));var util=require('util');var moment=require(_0xae31('0x1'));var BPromise=require(_0xae31('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae31('0x3'));var db=require(_0xae31('0x4'))['db'];var utils=require(_0xae31('0x5'));var logger=require(_0xae31('0x6'))('rpc');var config=require(_0xae31('0x7'));var jayson=require(_0xae31('0x8'));var client=jayson[_0xae31('0x9')][_0xae31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x403370,_0x45cd47,_0x2c2957){return new BPromise(function(_0x32d89c,_0x42a7c8){return client[_0xae31('0xb')](_0x403370,_0x2c2957)[_0xae31('0xc')](function(_0x5a8dac){logger[_0xae31('0xd')](_0xae31('0xe'),_0x45cd47,'request\x20sent');logger['debug'](_0xae31('0xf'),_0x45cd47,_0xae31('0x10'),JSON[_0xae31('0x11')](_0x5a8dac));if(_0x5a8dac[_0xae31('0x12')]){if(_0x5a8dac[_0xae31('0x12')][_0xae31('0x13')]===0x1f4){logger[_0xae31('0x12')](_0xae31('0xe'),_0x45cd47,_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);return _0x42a7c8(_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);}logger[_0xae31('0x12')](_0xae31('0xe'),_0x45cd47,_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);return _0x32d89c(_0x5a8dac[_0xae31('0x12')][_0xae31('0x14')]);}else{logger[_0xae31('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x45cd47,_0xae31('0x10'));_0x32d89c(_0x5a8dac[_0xae31('0x15')][_0xae31('0x14')]);}})[_0xae31('0x16')](function(_0x323be3){logger[_0xae31('0x12')]('VoiceAgentReport,\x20%s,\x20%s',_0x45cd47,_0x323be3);_0x42a7c8(_0x323be3);});});}exports[_0xae31('0x17')]=function(_0x476f14){var _0x40de60=this;return new Promise(function(_0x28a3b0,_0x19a185){return db[_0xae31('0x18')][_0xae31('0x19')](_0x476f14['body'],{'raw':_0x476f14[_0xae31('0x1a')]?_0x476f14['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3e2d2d){logger['info'](_0xae31('0x17'),_0x476f14);logger[_0xae31('0x1b')]('CreateVoiceAgentReport',_0x476f14,JSON[_0xae31('0x11')](_0x3e2d2d));_0x28a3b0(_0x3e2d2d);})[_0xae31('0x16')](function(_0x569db0){logger['error']('CreateVoiceAgentReport',_0x569db0[_0xae31('0x14')],_0x476f14);_0x19a185(_0x40de60['error'](0x1f4,_0x569db0[_0xae31('0x14')]));});});};exports[_0xae31('0x1c')]=function(_0x18c716){var _0x1b0cfe=this;return new Promise(function(_0x2e0a4e,_0x797b8d){return db[_0xae31('0x18')][_0xae31('0x1d')](_0x18c716[_0xae31('0x1e')],{'raw':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')][_0xae31('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')]['where']||null:null,'attributes':_0x18c716[_0xae31('0x1a')]?_0x18c716[_0xae31('0x1a')]['attributes']||null:null,'limit':_0x18c716[_0xae31('0x1a')]?_0x18c716['options'][_0xae31('0x20')]||null:null})[_0xae31('0xc')](function(_0x24bc0c){logger[_0xae31('0xd')](_0xae31('0x1c'),_0x18c716);logger[_0xae31('0x1b')]('UpdateVoiceAgentReport',_0x18c716,JSON[_0xae31('0x11')](_0x24bc0c));_0x2e0a4e(_0x24bc0c);})[_0xae31('0x16')](function(_0x4dc760){logger[_0xae31('0x12')](_0xae31('0x1c'),_0x4dc760[_0xae31('0x14')],_0x18c716);_0x797b8d(_0x1b0cfe[_0xae31('0x12')](0x1f4,_0x4dc760[_0xae31('0x14')]));});});};
\ No newline at end of file
+var _0x5394=['error','code','message','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','result','catch','CreateVoiceAgentReport','VoiceAgentReport','options','debug','update','body','raw','where','UpdateVoiceAgentReport','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x5394,0xd0));var _0x4539=function(_0x340907,_0x4a9781){_0x340907=_0x340907-0x0;var _0x1cd555=_0x5394[_0x340907];return _0x1cd555;};'use strict';var _=require('lodash');var util=require(_0x4539('0x0'));var moment=require(_0x4539('0x1'));var BPromise=require(_0x4539('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4539('0x3'));var db=require(_0x4539('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4539('0x5'))(_0x4539('0x6'));var config=require(_0x4539('0x7'));var jayson=require(_0x4539('0x8'));var client=jayson[_0x4539('0x9')][_0x4539('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x16d733,_0x14c57f,_0x19a3b7){return new BPromise(function(_0x5357b1,_0x16df7a){return client[_0x4539('0xb')](_0x16d733,_0x19a3b7)[_0x4539('0xc')](function(_0x144d45){logger[_0x4539('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x14c57f,'request\x20sent');logger['debug'](_0x4539('0xe'),_0x14c57f,'request\x20sent',JSON[_0x4539('0xf')](_0x144d45));if(_0x144d45[_0x4539('0x10')]){if(_0x144d45[_0x4539('0x10')][_0x4539('0x11')]===0x1f4){logger[_0x4539('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x14c57f,_0x144d45[_0x4539('0x10')][_0x4539('0x12')]);return _0x16df7a(_0x144d45[_0x4539('0x10')][_0x4539('0x12')]);}logger[_0x4539('0x10')](_0x4539('0x13'),_0x14c57f,_0x144d45[_0x4539('0x10')]['message']);return _0x5357b1(_0x144d45[_0x4539('0x10')]['message']);}else{logger[_0x4539('0xd')](_0x4539('0x13'),_0x14c57f,_0x4539('0x14'));_0x5357b1(_0x144d45[_0x4539('0x15')][_0x4539('0x12')]);}})[_0x4539('0x16')](function(_0x424c76){logger[_0x4539('0x10')](_0x4539('0x13'),_0x14c57f,_0x424c76);_0x16df7a(_0x424c76);});});}exports[_0x4539('0x17')]=function(_0x1a3907){var _0x57d592=this;return new Promise(function(_0x3d03c8,_0x4eb7cc){return db[_0x4539('0x18')]['create'](_0x1a3907['body'],{'raw':_0x1a3907['options']?_0x1a3907[_0x4539('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x4539('0xc')](function(_0x347993){logger[_0x4539('0xd')](_0x4539('0x17'),_0x1a3907);logger[_0x4539('0x1a')](_0x4539('0x17'),_0x1a3907,JSON[_0x4539('0xf')](_0x347993));_0x3d03c8(_0x347993);})['catch'](function(_0x5b51d5){logger[_0x4539('0x10')](_0x4539('0x17'),_0x5b51d5[_0x4539('0x12')],_0x1a3907);_0x4eb7cc(_0x57d592[_0x4539('0x10')](0x1f4,_0x5b51d5['message']));});});};exports['UpdateVoiceAgentReport']=function(_0x48f07c){var _0x57a5b4=this;return new Promise(function(_0x3140b4,_0x6a90df){return db[_0x4539('0x18')][_0x4539('0x1b')](_0x48f07c[_0x4539('0x1c')],{'raw':_0x48f07c[_0x4539('0x19')]?_0x48f07c['options'][_0x4539('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48f07c[_0x4539('0x19')]?_0x48f07c['options'][_0x4539('0x1e')]||null:null,'attributes':_0x48f07c[_0x4539('0x19')]?_0x48f07c[_0x4539('0x19')]['attributes']||null:null,'limit':_0x48f07c['options']?_0x48f07c[_0x4539('0x19')]['limit']||null:null})[_0x4539('0xc')](function(_0x217741){logger[_0x4539('0xd')](_0x4539('0x1f'),_0x48f07c);logger[_0x4539('0x1a')](_0x4539('0x1f'),_0x48f07c,JSON['stringify'](_0x217741));_0x3140b4(_0x217741);})['catch'](function(_0x3171ca){logger[_0x4539('0x10')]('UpdateVoiceAgentReport',_0x3171ca[_0x4539('0x12')],_0x48f07c);_0x6a90df(_0x57a5b4[_0x4539('0x10')](0x1f4,_0x3171ca[_0x4539('0x12')]));});});};
\ No newline at end of file
index 99bed3d..6dc084d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67b=['exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','delete','destroy'];(function(_0x389b73,_0x598fa0){var _0x2ab1a2=function(_0x27322b){while(--_0x27322b){_0x389b73['push'](_0x389b73['shift']());}};_0x2ab1a2(++_0x598fa0);}(_0xd67b,0x133));var _0xbd67=function(_0x44adcc,_0x53bfa6){_0x44adcc=_0x44adcc-0x0;var _0x409409=_0xd67b[_0x44adcc];return _0x409409;};'use strict';var multer=require('multer');var util=require(_0xbd67('0x0'));var path=require('path');var timeout=require(_0xbd67('0x1'));var express=require(_0xbd67('0x2'));var router=express[_0xbd67('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbd67('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xbd67('0x5'));var controller=require('./voiceCallReport.controller');router[_0xbd67('0x6')]('/',auth[_0xbd67('0x7')](),controller[_0xbd67('0x8')]);router[_0xbd67('0x6')](_0xbd67('0x9'),auth[_0xbd67('0x7')](),controller[_0xbd67('0xa')]);router[_0xbd67('0x6')](_0xbd67('0xb'),auth[_0xbd67('0x7')](),controller[_0xbd67('0xc')]);router[_0xbd67('0xd')]('/',auth[_0xbd67('0x7')](),controller['create']);router['put'](_0xbd67('0xb'),auth['isAuthenticated'](),controller[_0xbd67('0xe')]);router[_0xbd67('0xf')](_0xbd67('0xb'),auth[_0xbd67('0x7')](),controller[_0xbd67('0x10')]);module[_0xbd67('0x11')]=router;
\ No newline at end of file
+var _0x6737=['isAuthenticated','index','get','show','create','put','update','/:id','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller'];(function(_0x66c249,_0x3e4bf9){var _0x529bca=function(_0x419cac){while(--_0x419cac){_0x66c249['push'](_0x66c249['shift']());}};_0x529bca(++_0x3e4bf9);}(_0x6737,0xe2));var _0x7673=function(_0x4fa4f5,_0x14f55c){_0x4fa4f5=_0x4fa4f5-0x0;var _0x1ce097=_0x6737[_0x4fa4f5];return _0x1ce097;};'use strict';var multer=require('multer');var util=require(_0x7673('0x0'));var path=require(_0x7673('0x1'));var timeout=require('connect-timeout');var express=require(_0x7673('0x2'));var router=express[_0x7673('0x3')]();var fs_extra=require(_0x7673('0x4'));var auth=require(_0x7673('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7673('0x6'));var controller=require(_0x7673('0x7'));router['get']('/',auth[_0x7673('0x8')](),controller[_0x7673('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x7673('0xa')]('/:id',auth[_0x7673('0x8')](),controller[_0x7673('0xb')]);router['post']('/',auth[_0x7673('0x8')](),controller[_0x7673('0xc')]);router[_0x7673('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x7673('0xe')]);router['delete'](_0x7673('0xf'),auth[_0x7673('0x8')](),controller[_0x7673('0x10')]);module[_0x7673('0x11')]=router;
\ No newline at end of file
index 7a4afc6..7dedb8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d77=['outbound-fax','dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','internal','inbound-fax'];(function(_0x1f36bb,_0x8af718){var _0xaf97fa=function(_0xeca489){while(--_0xeca489){_0x1f36bb['push'](_0x1f36bb['shift']());}};_0xaf97fa(++_0x8af718);}(_0x6d77,0x13a));var _0x76d7=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x6d77[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x76d7('0x0'));module[_0x76d7('0x1')]={'uniqueid':{'type':Sequelize[_0x76d7('0x2')]},'type':{'type':Sequelize[_0x76d7('0x3')]('inbound',_0x76d7('0x4'),'outbound',_0x76d7('0x5'),_0x76d7('0x6'),_0x76d7('0x7'))},'tag':{'type':Sequelize[_0x76d7('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x76d7('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x76d7('0x2')]},'lastapplication':{'type':Sequelize[_0x76d7('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x76d7('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x76d7('0x8')]},'duration':{'type':Sequelize[_0x76d7('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x76d7('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x76d7('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x76d7('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x76d7('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x76d7('0x2')]},'note':{'type':Sequelize[_0x76d7('0x2')]},'prefix':{'type':Sequelize[_0x76d7('0x2')]},'routeid':{'type':Sequelize[_0x76d7('0x9')]},'sipcallid':{'type':Sequelize[_0x76d7('0x2')]}};
\ No newline at end of file
+var _0xaf3f=['STRING','ENUM','inbound','internal','outbound','inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','exports'];(function(_0x5a1a06,_0x1b3158){var _0x2b8a2e=function(_0xe81489){while(--_0xe81489){_0x5a1a06['push'](_0x5a1a06['shift']());}};_0x2b8a2e(++_0x1b3158);}(_0xaf3f,0x11e));var _0xfaf3=function(_0xa28472,_0x25d9c4){_0xa28472=_0xa28472-0x0;var _0x3462f8=_0xaf3f[_0xa28472];return _0x3462f8;};'use strict';var Sequelize=require(_0xfaf3('0x0'));module[_0xfaf3('0x1')]={'uniqueid':{'type':Sequelize[_0xfaf3('0x2')]},'type':{'type':Sequelize[_0xfaf3('0x3')](_0xfaf3('0x4'),_0xfaf3('0x5'),_0xfaf3('0x6'),_0xfaf3('0x7'),_0xfaf3('0x8'),_0xfaf3('0x9'))},'tag':{'type':Sequelize[_0xfaf3('0x2')]},'accountcode':{'type':Sequelize[_0xfaf3('0x2')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xfaf3('0x2')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xfaf3('0x2')]},'destinationchannel':{'type':Sequelize[_0xfaf3('0x2')]},'lastapplication':{'type':Sequelize[_0xfaf3('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0xfaf3('0xa')]},'answertime':{'type':Sequelize[_0xfaf3('0xa')]},'endtime':{'type':Sequelize[_0xfaf3('0xa')]},'duration':{'type':Sequelize[_0xfaf3('0xb')]},'billableseconds':{'type':Sequelize[_0xfaf3('0xb')]},'mohtime':{'type':Sequelize[_0xfaf3('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfaf3('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xfaf3('0x2')]},'userDisposition':{'type':Sequelize[_0xfaf3('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xfaf3('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xfaf3('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xfaf3('0x2')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0xfaf3('0x2')]}};
\ No newline at end of file
index aeff532..a7035c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x5f66[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
+var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x3a7edb,_0x17914c){var _0x16a489=function(_0x580768){while(--_0x580768){_0x3a7edb['push'](_0x3a7edb['shift']());}};_0x16a489(++_0x17914c);}(_0xb10b,0x12a));var _0xbb10=function(_0x16066e,_0x31e151){_0x16066e=_0x16066e-0x0;var _0x52a12e=_0xb10b[_0x16066e];return _0x52a12e;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,null));};
\ No newline at end of file
index d1413eb..0883395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6412=['path','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x46cf9f,_0x21619a){var _0x2a980f=function(_0x5cedbe){while(--_0x5cedbe){_0x46cf9f['push'](_0x46cf9f['shift']());}};_0x2a980f(++_0x21619a);}(_0x6412,0xad));var _0x2641=function(_0x1c8fb1,_0xb39e81){_0x1c8fb1=_0x1c8fb1-0x0;var _0x57f8e8=_0x6412[_0x1c8fb1];return _0x57f8e8;};'use strict';var _=require(_0x2641('0x0'));var util=require(_0x2641('0x1'));var logger=require(_0x2641('0x2'))(_0x2641('0x3'));var moment=require(_0x2641('0x4'));var BPromise=require(_0x2641('0x5'));var rp=require(_0x2641('0x6'));var fs=require('fs');var path=require(_0x2641('0x7'));var rimraf=require('rimraf');var config=require(_0x2641('0x8'));var attributes=require(_0x2641('0x9'));module[_0x2641('0xa')]=function(_0x2cdab6,_0x4421a1){return _0x2cdab6[_0x2641('0xb')](_0x2641('0xc'),attributes,{'tableName':_0x2641('0xd'),'paranoid':![],'indexes':[{'fields':[_0x2641('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x17de=['define','VoiceCallReport','report_call','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x3c4f1f,_0x20d3ec){var _0x19cb69=function(_0x2e04bc){while(--_0x2e04bc){_0x3c4f1f['push'](_0x3c4f1f['shift']());}};_0x19cb69(++_0x20d3ec);}(_0x17de,0x88));var _0xe17d=function(_0x50b65a,_0x1d594c){_0x50b65a=_0x50b65a-0x0;var _0x41e568=_0x17de[_0x50b65a];return _0x41e568;};'use strict';var _=require(_0xe17d('0x0'));var util=require('util');var logger=require(_0xe17d('0x1'))(_0xe17d('0x2'));var moment=require(_0xe17d('0x3'));var BPromise=require(_0xe17d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe17d('0x5'));var rimraf=require(_0xe17d('0x6'));var config=require(_0xe17d('0x7'));var attributes=require('./voiceCallReport.attributes');module['exports']=function(_0x320ce6,_0x393b55){return _0x320ce6[_0xe17d('0x8')](_0xe17d('0x9'),attributes,{'tableName':_0xe17d('0xa'),'paranoid':![],'indexes':[{'fields':[_0xe17d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5ad2f1f..695d80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861c=['message','result','catch','GetVoiceCallReport','findAll','options','raw','attributes','limit','include','map','model','then','CreateVoiceCallReport','VoiceCallReport','create','UpdateVoiceCallReport','update','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x1f351b,_0x26a803){var _0x48677f=function(_0x3b003d){while(--_0x3b003d){_0x1f351b['push'](_0x1f351b['shift']());}};_0x48677f(++_0x26a803);}(_0x861c,0x1c0));var _0xc861=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x861c[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0xc861('0x0'));var moment=require(_0xc861('0x1'));var BPromise=require(_0xc861('0x2'));var rs=require(_0xc861('0x3'));var fs=require('fs');var Redis=require(_0xc861('0x4'));var db=require(_0xc861('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc861('0x6'))(_0xc861('0x7'));var config=require(_0xc861('0x8'));var jayson=require(_0xc861('0x9'));var client=jayson[_0xc861('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x564a3b,_0x128e10,_0x13a540){return new BPromise(function(_0x3f1837,_0x235566){return client[_0xc861('0xb')](_0x564a3b,_0x13a540)['then'](function(_0x4137f1){logger[_0xc861('0xc')](_0xc861('0xd'),_0x128e10,'request\x20sent');logger[_0xc861('0xe')](_0xc861('0xf'),_0x128e10,_0xc861('0x10'),JSON[_0xc861('0x11')](_0x4137f1));if(_0x4137f1[_0xc861('0x12')]){if(_0x4137f1[_0xc861('0x12')][_0xc861('0x13')]===0x1f4){logger[_0xc861('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x128e10,_0x4137f1[_0xc861('0x12')]['message']);return _0x235566(_0x4137f1['error'][_0xc861('0x14')]);}logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x128e10,_0x4137f1[_0xc861('0x12')][_0xc861('0x14')]);return _0x3f1837(_0x4137f1[_0xc861('0x12')][_0xc861('0x14')]);}else{logger[_0xc861('0xc')](_0xc861('0xd'),_0x128e10,_0xc861('0x10'));_0x3f1837(_0x4137f1[_0xc861('0x15')][_0xc861('0x14')]);}})[_0xc861('0x16')](function(_0x427587){logger[_0xc861('0x12')](_0xc861('0xd'),_0x128e10,_0x427587);_0x235566(_0x427587);});});}exports[_0xc861('0x17')]=function(_0x1440f3){var _0x2772ef=this;return new Promise(function(_0x215a56,_0x5824a2){return db['VoiceCallReport'][_0xc861('0x18')]({'raw':_0x1440f3[_0xc861('0x19')]?_0x1440f3['options'][_0xc861('0x1a')]===undefined?!![]:![]:!![],'where':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')]['where']||null:null,'attributes':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1b')]||null:null,'limit':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1c')]||null:null,'include':_0x1440f3[_0xc861('0x19')]?_0x1440f3[_0xc861('0x19')][_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x1440f3[_0xc861('0x19')][_0xc861('0x1d')],function(_0x1a9d5e){return{'model':db[_0x1a9d5e[_0xc861('0x1f')]],'as':_0x1a9d5e['as'],'attributes':_0x1a9d5e[_0xc861('0x1b')],'include':_0x1a9d5e[_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x1a9d5e[_0xc861('0x1d')],function(_0x541507){return{'model':db[_0x541507[_0xc861('0x1f')]],'as':_0x541507['as'],'attributes':_0x541507[_0xc861('0x1b')],'include':_0x541507[_0xc861('0x1d')]?_[_0xc861('0x1e')](_0x541507['include'],function(_0x1213ff){return{'model':db[_0x1213ff[_0xc861('0x1f')]],'as':_0x1213ff['as'],'attributes':_0x1213ff[_0xc861('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc861('0x20')](function(_0x1d9fa9){logger['info'](_0xc861('0x17'),_0x1440f3);logger[_0xc861('0xe')]('GetVoiceCallReport',_0x1440f3,JSON[_0xc861('0x11')](_0x1d9fa9));_0x215a56(_0x1d9fa9);})['catch'](function(_0x37cf4b){logger[_0xc861('0x12')](_0xc861('0x17'),_0x37cf4b[_0xc861('0x14')],_0x1440f3);_0x5824a2(_0x2772ef[_0xc861('0x12')](0x1f4,_0x37cf4b[_0xc861('0x14')]));});});};exports[_0xc861('0x21')]=function(_0xd704b1){var _0x21cb09=this;return new Promise(function(_0x5732d0,_0x55d791){return db[_0xc861('0x22')][_0xc861('0x23')](_0xd704b1['body'],{'raw':_0xd704b1[_0xc861('0x19')]?_0xd704b1[_0xc861('0x19')][_0xc861('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5012a8){logger[_0xc861('0xc')]('CreateVoiceCallReport',_0xd704b1);logger[_0xc861('0xe')](_0xc861('0x21'),_0xd704b1,JSON['stringify'](_0x5012a8));_0x5732d0(_0x5012a8);})['catch'](function(_0x10df19){logger[_0xc861('0x12')](_0xc861('0x21'),_0x10df19[_0xc861('0x14')],_0xd704b1);_0x55d791(_0x21cb09[_0xc861('0x12')](0x1f4,_0x10df19['message']));});});};exports[_0xc861('0x24')]=function(_0x5866c8){var _0x3042f0=this;return new Promise(function(_0x1576ca,_0x116d98){return db['VoiceCallReport'][_0xc861('0x25')](_0x5866c8['body'],{'raw':_0x5866c8[_0xc861('0x19')]?_0x5866c8[_0xc861('0x19')][_0xc861('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5866c8[_0xc861('0x19')]?_0x5866c8[_0xc861('0x19')][_0xc861('0x26')]||null:null,'attributes':_0x5866c8['options']?_0x5866c8[_0xc861('0x19')][_0xc861('0x1b')]||null:null,'limit':_0x5866c8[_0xc861('0x19')]?_0x5866c8['options'][_0xc861('0x1c')]||null:null})[_0xc861('0x20')](function(_0x1007b3){logger['info'](_0xc861('0x24'),_0x5866c8);logger['debug']('UpdateVoiceCallReport',_0x5866c8,JSON[_0xc861('0x11')](_0x1007b3));_0x1576ca(_0x1007b3);})[_0xc861('0x16')](function(_0x35bdab){logger[_0xc861('0x12')](_0xc861('0x24'),_0x35bdab[_0xc861('0x14')],_0x5866c8);_0x116d98(_0x3042f0[_0xc861('0x12')](0x1f4,_0x35bdab[_0xc861('0x14')]));});});};
\ No newline at end of file
+var _0x5f73=['where','UpdateVoiceCallReport','lodash','util','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','limit','map','include','model','CreateVoiceCallReport','create','body'];(function(_0x33d3d3,_0x9c476a){var _0x194fd5=function(_0x57ba62){while(--_0x57ba62){_0x33d3d3['push'](_0x33d3d3['shift']());}};_0x194fd5(++_0x9c476a);}(_0x5f73,0x18e));var _0x35f7=function(_0x15ef85,_0x2ba36d){_0x15ef85=_0x15ef85-0x0;var _0x706f77=_0x5f73[_0x15ef85];return _0x706f77;};'use strict';var _=require(_0x35f7('0x0'));var util=require(_0x35f7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35f7('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x35f7('0x3'));var logger=require(_0x35f7('0x4'))(_0x35f7('0x5'));var config=require(_0x35f7('0x6'));var jayson=require(_0x35f7('0x7'));var client=jayson['client'][_0x35f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32f54f,_0x1a993e,_0x6e5a19){return new BPromise(function(_0x3c2db4,_0x120e34){return client['request'](_0x32f54f,_0x6e5a19)[_0x35f7('0x9')](function(_0x19d148){logger[_0x35f7('0xa')](_0x35f7('0xb'),_0x1a993e,_0x35f7('0xc'));logger[_0x35f7('0xd')](_0x35f7('0xe'),_0x1a993e,'request\x20sent',JSON[_0x35f7('0xf')](_0x19d148));if(_0x19d148[_0x35f7('0x10')]){if(_0x19d148[_0x35f7('0x10')][_0x35f7('0x11')]===0x1f4){logger[_0x35f7('0x10')](_0x35f7('0xb'),_0x1a993e,_0x19d148[_0x35f7('0x10')][_0x35f7('0x12')]);return _0x120e34(_0x19d148['error'][_0x35f7('0x12')]);}logger[_0x35f7('0x10')](_0x35f7('0xb'),_0x1a993e,_0x19d148[_0x35f7('0x10')]['message']);return _0x3c2db4(_0x19d148[_0x35f7('0x10')][_0x35f7('0x12')]);}else{logger[_0x35f7('0xa')](_0x35f7('0xb'),_0x1a993e,_0x35f7('0xc'));_0x3c2db4(_0x19d148[_0x35f7('0x13')][_0x35f7('0x12')]);}})[_0x35f7('0x14')](function(_0x167614){logger['error'](_0x35f7('0xb'),_0x1a993e,_0x167614);_0x120e34(_0x167614);});});}exports[_0x35f7('0x15')]=function(_0x3cdc6c){var _0xd8dc63=this;return new Promise(function(_0x3c2529,_0x59cf3e){return db[_0x35f7('0x16')][_0x35f7('0x17')]({'raw':_0x3cdc6c[_0x35f7('0x18')]?_0x3cdc6c[_0x35f7('0x18')][_0x35f7('0x19')]===undefined?!![]:![]:!![],'where':_0x3cdc6c['options']?_0x3cdc6c['options']['where']||null:null,'attributes':_0x3cdc6c[_0x35f7('0x18')]?_0x3cdc6c[_0x35f7('0x18')][_0x35f7('0x1a')]||null:null,'limit':_0x3cdc6c[_0x35f7('0x18')]?_0x3cdc6c[_0x35f7('0x18')][_0x35f7('0x1b')]||null:null,'include':_0x3cdc6c[_0x35f7('0x18')]?_0x3cdc6c['options']['include']?_[_0x35f7('0x1c')](_0x3cdc6c['options'][_0x35f7('0x1d')],function(_0x5e3cbf){return{'model':db[_0x5e3cbf[_0x35f7('0x1e')]],'as':_0x5e3cbf['as'],'attributes':_0x5e3cbf[_0x35f7('0x1a')],'include':_0x5e3cbf[_0x35f7('0x1d')]?_[_0x35f7('0x1c')](_0x5e3cbf[_0x35f7('0x1d')],function(_0x53e48b){return{'model':db[_0x53e48b[_0x35f7('0x1e')]],'as':_0x53e48b['as'],'attributes':_0x53e48b[_0x35f7('0x1a')],'include':_0x53e48b['include']?_[_0x35f7('0x1c')](_0x53e48b['include'],function(_0x3e18e4){return{'model':db[_0x3e18e4[_0x35f7('0x1e')]],'as':_0x3e18e4['as'],'attributes':_0x3e18e4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5de851){logger['info']('GetVoiceCallReport',_0x3cdc6c);logger[_0x35f7('0xd')](_0x35f7('0x15'),_0x3cdc6c,JSON[_0x35f7('0xf')](_0x5de851));_0x3c2529(_0x5de851);})['catch'](function(_0x5ca06e){logger[_0x35f7('0x10')](_0x35f7('0x15'),_0x5ca06e['message'],_0x3cdc6c);_0x59cf3e(_0xd8dc63['error'](0x1f4,_0x5ca06e[_0x35f7('0x12')]));});});};exports[_0x35f7('0x1f')]=function(_0xe238e4){var _0x9b136e=this;return new Promise(function(_0x225bd4,_0x25f469){return db[_0x35f7('0x16')][_0x35f7('0x20')](_0xe238e4[_0x35f7('0x21')],{'raw':_0xe238e4[_0x35f7('0x18')]?_0xe238e4['options']['raw']===undefined?!![]:![]:!![]})[_0x35f7('0x9')](function(_0x3c77e2){logger[_0x35f7('0xa')](_0x35f7('0x1f'),_0xe238e4);logger[_0x35f7('0xd')](_0x35f7('0x1f'),_0xe238e4,JSON[_0x35f7('0xf')](_0x3c77e2));_0x225bd4(_0x3c77e2);})[_0x35f7('0x14')](function(_0x57d26f){logger[_0x35f7('0x10')]('CreateVoiceCallReport',_0x57d26f[_0x35f7('0x12')],_0xe238e4);_0x25f469(_0x9b136e['error'](0x1f4,_0x57d26f[_0x35f7('0x12')]));});});};exports['UpdateVoiceCallReport']=function(_0x64ce5f){var _0x45e744=this;return new Promise(function(_0x2b024a,_0x2c14dd){return db['VoiceCallReport']['update'](_0x64ce5f[_0x35f7('0x21')],{'raw':_0x64ce5f[_0x35f7('0x18')]?_0x64ce5f[_0x35f7('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x64ce5f[_0x35f7('0x18')]?_0x64ce5f[_0x35f7('0x18')][_0x35f7('0x22')]||null:null,'attributes':_0x64ce5f[_0x35f7('0x18')]?_0x64ce5f[_0x35f7('0x18')][_0x35f7('0x1a')]||null:null,'limit':_0x64ce5f[_0x35f7('0x18')]?_0x64ce5f['options']['limit']||null:null})['then'](function(_0x283901){logger[_0x35f7('0xa')](_0x35f7('0x23'),_0x64ce5f);logger[_0x35f7('0xd')](_0x35f7('0x23'),_0x64ce5f,JSON[_0x35f7('0xf')](_0x283901));_0x2b024a(_0x283901);})[_0x35f7('0x14')](function(_0x50ed37){logger[_0x35f7('0x10')](_0x35f7('0x23'),_0x50ed37['message'],_0x64ce5f);_0x2c14dd(_0x45e744['error'](0x1f4,_0x50ed37[_0x35f7('0x12')]));});});};
\ No newline at end of file
index b83de42..8147508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b0c=['show','post','create','put','update','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','get','isAuthenticated','/:id'];(function(_0xe2da26,_0x1242f0){var _0x15eef5=function(_0x272794){while(--_0x272794){_0xe2da26['push'](_0xe2da26['shift']());}};_0x15eef5(++_0x1242f0);}(_0x6b0c,0x106));var _0xc6b0=function(_0x2cd976,_0x302575){_0x2cd976=_0x2cd976-0x0;var _0x1f37cb=_0x6b0c[_0x2cd976];return _0x1f37cb;};'use strict';var multer=require(_0xc6b0('0x0'));var util=require(_0xc6b0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc6b0('0x2'));var router=express['Router']();var fs_extra=require(_0xc6b0('0x3'));var auth=require(_0xc6b0('0x4'));var interaction=require(_0xc6b0('0x5'));var config=require('../../config/environment');var controller=require(_0xc6b0('0x6'));router[_0xc6b0('0x7')]('/',auth[_0xc6b0('0x8')](),controller['index']);router[_0xc6b0('0x7')](_0xc6b0('0x9'),auth['isAuthenticated'](),controller[_0xc6b0('0xa')]);router[_0xc6b0('0xb')]('/',auth[_0xc6b0('0x8')](),controller[_0xc6b0('0xc')]);router[_0xc6b0('0xd')]('/:id',auth[_0xc6b0('0x8')](),controller[_0xc6b0('0xe')]);router[_0xc6b0('0xf')](_0xc6b0('0x9'),auth['isAuthenticated'](),controller[_0xc6b0('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9ee0=['connect-timeout','fs-extra','../../config/environment','./voiceChanSpy.controller','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer'];(function(_0x51038f,_0x67063e){var _0x583bbf=function(_0x354915){while(--_0x354915){_0x51038f['push'](_0x51038f['shift']());}};_0x583bbf(++_0x67063e);}(_0x9ee0,0xb3));var _0x09ee=function(_0x205e5a,_0x5c19fb){_0x205e5a=_0x205e5a-0x0;var _0x10da58=_0x9ee0[_0x205e5a];return _0x10da58;};'use strict';var multer=require(_0x09ee('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x09ee('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x09ee('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x09ee('0x3'));var controller=require(_0x09ee('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0x09ee('0x5')]);router['get'](_0x09ee('0x6'),auth[_0x09ee('0x7')](),controller['show']);router[_0x09ee('0x8')]('/',auth[_0x09ee('0x7')](),controller[_0x09ee('0x9')]);router[_0x09ee('0xa')](_0x09ee('0x6'),auth['isAuthenticated'](),controller[_0x09ee('0xb')]);router[_0x09ee('0xc')](_0x09ee('0x6'),auth[_0x09ee('0x7')](),controller[_0x09ee('0xd')]);module[_0x09ee('0xe')]=router;
\ No newline at end of file
index 0c48045..bc44783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fbd=['join','options','getDataValue','split','BOOLEAN','exports','STRING','setDataValue'];(function(_0x5b2204,_0x5eda09){var _0x35709e=function(_0x48f89e){while(--_0x48f89e){_0x5b2204['push'](_0x5b2204['shift']());}};_0x35709e(++_0x5eda09);}(_0x1fbd,0x75));var _0xd1fb=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x1fbd[_0x4f9b18];return _0x29f20c;};'use strict';var Sequelize=require('sequelize');module[_0xd1fb('0x0')]={'name':{'type':Sequelize[_0xd1fb('0x1')]},'prefix':{'type':Sequelize[_0xd1fb('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xd1fb('0x1')],'set':function(_0x1c4bc5){this[_0xd1fb('0x2')]('options',_0x1c4bc5?_0x1c4bc5[_0xd1fb('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0xd1fb('0x4'))?this[_0xd1fb('0x5')](_0xd1fb('0x4'))[_0xd1fb('0x6')](''):[];}},'auth':{'type':Sequelize[_0xd1fb('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xd1fb('0x1')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xd1fb('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2584=['getDataValue','options','split','BOOLEAN','exports','STRING','name','setDataValue'];(function(_0x188926,_0x1b2429){var _0x17f4bf=function(_0x462e22){while(--_0x462e22){_0x188926['push'](_0x188926['shift']());}};_0x17f4bf(++_0x1b2429);}(_0x2584,0x11c));var _0x4258=function(_0x22f85a,_0x195ed5){_0x22f85a=_0x22f85a-0x0;var _0xaa717=_0x2584[_0x22f85a];return _0xaa717;};'use strict';var Sequelize=require('sequelize');module[_0x4258('0x0')]={'name':{'type':Sequelize[_0x4258('0x1')]},'prefix':{'type':Sequelize['STRING'],'unique':_0x4258('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0x4258('0x1')],'set':function(_0x123ae4){this[_0x4258('0x3')]('options',_0x123ae4?_0x123ae4['join'](''):[]);},'get':function(){return this[_0x4258('0x4')](_0x4258('0x5'))?this['getDataValue'](_0x4258('0x5'))[_0x4258('0x6')](''):[];}},'auth':{'type':Sequelize[_0x4258('0x7')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x4258('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x4258('0x1')]},'description':{'type':Sequelize[_0x4258('0x1')]}};
\ No newline at end of file
index 0b6748c..d85ec9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['userProfileId','autoAssociation','destroy','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','VoiceChanSpy','show','params','includeAll','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find'];(function(_0x1ca4fb,_0x188926){var _0x262fe6=function(_0x9c7ac7){while(--_0x9c7ac7){_0x1ca4fb['push'](_0x1ca4fb['shift']());}};_0x262fe6(++_0x188926);}(_0x7217,0xa9));var _0x7721=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x7217[_0x138f59];return _0x3d114d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7721('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7721('0x1'));var moment=require(_0x7721('0x2'));var BPromise=require(_0x7721('0x3'));var Mustache=require(_0x7721('0x4'));var util=require(_0x7721('0x5'));var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require('lodash');var squel=require(_0x7721('0xb'));var crypto=require(_0x7721('0xc'));var jsforce=require(_0x7721('0xd'));var deskjs=require(_0x7721('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7721('0xf'));var Papa=require(_0x7721('0x10'));var Redis=require('ioredis');var authService=require(_0x7721('0x11'));var qs=require(_0x7721('0x12'));var as=require(_0x7721('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7721('0x14'))(_0x7721('0x15'));var utils=require(_0x7721('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7721('0x17'));var db=require(_0x7721('0x18'))['db'];function respondWithStatusCode(_0x4db091,_0x290415){_0x290415=_0x290415||0xcc;return function(_0xcbb8d5){if(_0xcbb8d5){return _0x4db091['sendStatus'](_0x290415);}return _0x4db091[_0x7721('0x19')](_0x290415)[_0x7721('0x1a')]();};}function respondWithResult(_0xedb98,_0x36f8a0){_0x36f8a0=_0x36f8a0||0xc8;return function(_0x22a78b){if(_0x22a78b){return _0xedb98['status'](_0x36f8a0)[_0x7721('0x1b')](_0x22a78b);}};}function respondWithFilteredResult(_0x353249,_0x2fdfec){return function(_0x281dfd){if(_0x281dfd){var _0x488c09=typeof _0x2fdfec[_0x7721('0x1c')]==='undefined'&&typeof _0x2fdfec[_0x7721('0x1d')]==='undefined';var _0x378dfb=_0x281dfd['count'];var _0x4b64ab=_0x488c09?0x0:_0x2fdfec[_0x7721('0x1c')];var _0x499b28=_0x488c09?_0x281dfd[_0x7721('0x1e')]:_0x2fdfec['offset']+_0x2fdfec[_0x7721('0x1d')];var _0x19f3b4;if(_0x499b28>=_0x378dfb){_0x499b28=_0x378dfb;_0x19f3b4=0xc8;}else{_0x19f3b4=0xce;}_0x353249['status'](_0x19f3b4);return _0x353249[_0x7721('0x1f')](_0x7721('0x20'),_0x4b64ab+'-'+_0x499b28+'/'+_0x378dfb)[_0x7721('0x1b')](_0x281dfd);}return null;};}function patchUpdates(_0x519768){return function(_0x4083dd){try{jsonpatch['apply'](_0x4083dd,_0x519768,!![]);}catch(_0x49b37b){return BPromise[_0x7721('0x21')](_0x49b37b);}return _0x4083dd[_0x7721('0x22')]();};}function saveUpdates(_0x528664,_0x45c389){return function(_0x16c9c4){if(_0x16c9c4){return _0x16c9c4[_0x7721('0x23')](_0x528664)['then'](function(_0x159117){return _0x159117;});}return null;};}function removeEntity(_0x5b7e03,_0x6ab534){return function(_0x1c5511){if(_0x1c5511){return _0x1c5511['destroy']()[_0x7721('0x24')](function(){var _0x485fb3=_0x1c5511[_0x7721('0x25')]({'plain':!![]});var _0x6b932b=_0x7721('0x26');return db[_0x7721('0x27')]['destroy']({'where':{'type':_0x6b932b,'resourceId':_0x485fb3['id']}})[_0x7721('0x24')](function(){return _0x1c5511;});})[_0x7721('0x24')](function(){_0x5b7e03[_0x7721('0x19')](0xcc)[_0x7721('0x1a')]();});}};}function handleEntityNotFound(_0x3ca94e,_0x4e9aaa){return function(_0x34f9e8){if(!_0x34f9e8){_0x3ca94e[_0x7721('0x28')](0x194);}return _0x34f9e8;};}function handleError(_0x197f69,_0x370262){_0x370262=_0x370262||0x1f4;return function(_0xbb3ce4){logger[_0x7721('0x29')](_0xbb3ce4[_0x7721('0x2a')]);if(_0xbb3ce4[_0x7721('0x2b')]){delete _0xbb3ce4[_0x7721('0x2b')];}_0x197f69['status'](_0x370262)[_0x7721('0x2c')](_0xbb3ce4);};}exports[_0x7721('0x2d')]=function(_0xe638a9,_0x3903f4){var _0x52b798={},_0x373a18={},_0x1efe73={'count':0x0,'rows':[]};var _0x20520b=_['map'](db['VoiceChanSpy'][_0x7721('0x2e')],function(_0x3d2b8d){return{'name':_0x3d2b8d[_0x7721('0x2f')],'type':_0x3d2b8d[_0x7721('0x30')][_0x7721('0x31')]};});_0x373a18[_0x7721('0x32')]=_[_0x7721('0x33')](_0x20520b,_0x7721('0x2b'));_0x373a18['query']=_[_0x7721('0x34')](_0xe638a9['query']);_0x373a18[_0x7721('0x35')]=_['intersection'](_0x373a18[_0x7721('0x32')],_0x373a18[_0x7721('0x36')]);_0x52b798[_0x7721('0x37')]=_[_0x7721('0x38')](_0x373a18[_0x7721('0x32')],qs[_0x7721('0x39')](_0xe638a9[_0x7721('0x36')]['fields']));_0x52b798[_0x7721('0x37')]=_0x52b798['attributes'][_0x7721('0x3a')]?_0x52b798[_0x7721('0x37')]:_0x373a18[_0x7721('0x32')];if(!_0xe638a9['query'][_0x7721('0x3b')](_0x7721('0x3c'))){_0x52b798['limit']=qs[_0x7721('0x1d')](_0xe638a9[_0x7721('0x36')][_0x7721('0x1d')]);_0x52b798[_0x7721('0x1c')]=qs['offset'](_0xe638a9[_0x7721('0x36')][_0x7721('0x1c')]);}_0x52b798['order']=qs[_0x7721('0x3d')](_0xe638a9['query'][_0x7721('0x3d')]);_0x52b798['where']=qs['filters'](_[_0x7721('0x3e')](_0xe638a9['query'],_0x373a18[_0x7721('0x35')]),_0x20520b);if(_0xe638a9[_0x7721('0x36')]['filter']){_0x52b798[_0x7721('0x3f')]=_[_0x7721('0x40')](_0x52b798[_0x7721('0x3f')],{'$or':_[_0x7721('0x33')](_0x20520b,function(_0x460abd){if(_0x460abd[_0x7721('0x30')]!==_0x7721('0x41')){var _0xc30c42={};_0xc30c42[_0x460abd[_0x7721('0x2b')]]={'$like':'%'+_0xe638a9[_0x7721('0x36')]['filter']+'%'};return _0xc30c42;}})});}_0x52b798=_[_0x7721('0x40')]({},_0x52b798,_0xe638a9[_0x7721('0x42')]);var _0x4c8d53={'where':_0x52b798[_0x7721('0x3f')]};return db[_0x7721('0x43')][_0x7721('0x1e')](_0x4c8d53)[_0x7721('0x24')](function(_0x5d56a9){_0x1efe73[_0x7721('0x1e')]=_0x5d56a9;if(_0xe638a9[_0x7721('0x36')]['includeAll']){_0x52b798['include']=[{'all':!![]}];}return db[_0x7721('0x43')]['findAll'](_0x52b798);})[_0x7721('0x24')](function(_0x21c9cb){_0x1efe73['rows']=_0x21c9cb;return _0x1efe73;})['then'](respondWithFilteredResult(_0x3903f4,_0x52b798))['catch'](handleError(_0x3903f4,null));};exports[_0x7721('0x44')]=function(_0x2eeca9,_0x2d2123){var _0x12d5b5={'raw':![],'where':{'id':_0x2eeca9[_0x7721('0x45')]['id']}},_0x2802f7={};_0x2802f7[_0x7721('0x32')]=_[_0x7721('0x34')](db[_0x7721('0x43')][_0x7721('0x2e')]);_0x2802f7[_0x7721('0x36')]=_['keys'](_0x2eeca9['query']);_0x2802f7[_0x7721('0x35')]=_[_0x7721('0x38')](_0x2802f7[_0x7721('0x32')],_0x2802f7[_0x7721('0x36')]);_0x12d5b5[_0x7721('0x37')]=_[_0x7721('0x38')](_0x2802f7[_0x7721('0x32')],qs[_0x7721('0x39')](_0x2eeca9[_0x7721('0x36')][_0x7721('0x39')]));_0x12d5b5[_0x7721('0x37')]=_0x12d5b5[_0x7721('0x37')][_0x7721('0x3a')]?_0x12d5b5[_0x7721('0x37')]:_0x2802f7[_0x7721('0x32')];if(_0x2eeca9['query'][_0x7721('0x46')]){_0x12d5b5[_0x7721('0x47')]=[{'all':!![]}];}_0x12d5b5=_['merge']({},_0x12d5b5,_0x2eeca9[_0x7721('0x42')]);return db[_0x7721('0x43')]['find'](_0x12d5b5)[_0x7721('0x24')](handleEntityNotFound(_0x2d2123,null))[_0x7721('0x24')](respondWithResult(_0x2d2123,null))[_0x7721('0x48')](handleError(_0x2d2123,null));};exports[_0x7721('0x49')]=function(_0x26357d,_0x4ac85f){return db['VoiceChanSpy'][_0x7721('0x49')](_0x26357d[_0x7721('0x4a')],{})[_0x7721('0x24')](function(_0x1ed110){var _0xf7b93f=_0x26357d[_0x7721('0x4b')][_0x7721('0x25')]({'plain':!![]});if(!_0xf7b93f)throw new Error(_0x7721('0x4c'));if(_0xf7b93f[_0x7721('0x4d')]===_0x7721('0x4b')){var _0x3ce861=_0x1ed110['get']({'plain':!![]});var _0x333c90='ChanSpies';return db[_0x7721('0x4e')][_0x7721('0x4f')]({'where':{'name':_0x333c90,'userProfileId':_0xf7b93f[_0x7721('0x50')]},'raw':!![]})['then'](function(_0x19a6ac){if(_0x19a6ac&&_0x19a6ac[_0x7721('0x51')]===0x0){return db[_0x7721('0x27')][_0x7721('0x49')]({'name':_0x3ce861[_0x7721('0x2b')],'resourceId':_0x3ce861['id'],'type':_0x19a6ac[_0x7721('0x2b')],'sectionId':_0x19a6ac['id']},{})[_0x7721('0x24')](function(){return _0x1ed110;});}else{return _0x1ed110;}})['catch'](function(_0x50a529){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50a529);throw _0x50a529;});}return _0x1ed110;})[_0x7721('0x24')](respondWithResult(_0x4ac85f,0xc9))[_0x7721('0x48')](handleError(_0x4ac85f,null));};exports[_0x7721('0x23')]=function(_0xebf0b,_0x11ed59){if(_0xebf0b[_0x7721('0x4a')]['id']){delete _0xebf0b[_0x7721('0x4a')]['id'];}return db['VoiceChanSpy'][_0x7721('0x4f')]({'where':{'id':_0xebf0b[_0x7721('0x45')]['id']}})['then'](handleEntityNotFound(_0x11ed59,null))[_0x7721('0x24')](saveUpdates(_0xebf0b[_0x7721('0x4a')],null))[_0x7721('0x24')](respondWithResult(_0x11ed59,null))['catch'](handleError(_0x11ed59,null));};exports[_0x7721('0x52')]=function(_0x20bb7a,_0x5dcbbb){return db[_0x7721('0x43')][_0x7721('0x4f')]({'where':{'id':_0x20bb7a[_0x7721('0x45')]['id']}})[_0x7721('0x24')](handleEntityNotFound(_0x5dcbbb,null))[_0x7721('0x24')](removeEntity(_0x5dcbbb,null))['catch'](handleError(_0x5dcbbb,null));};
\ No newline at end of file
+var _0x48ea=['mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','get','ChanSpies','UserProfileResource','error','name','send','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','create','body','user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x8ee5c9,_0x2d73e2){var _0x92b0af=function(_0x3db423){while(--_0x3db423){_0x8ee5c9['push'](_0x8ee5c9['shift']());}};_0x92b0af(++_0x2d73e2);}(_0x48ea,0x9c));var _0xa48e=function(_0x3e31c6,_0x4bc12b){_0x3e31c6=_0x3e31c6-0x0;var _0x48dcb6=_0x48ea[_0x3e31c6];return _0x48dcb6;};'use strict';var emlformat=require(_0xa48e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa48e('0x1'));var jsonpatch=require(_0xa48e('0x2'));var rp=require(_0xa48e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa48e('0x4'));var util=require('util');var path=require(_0xa48e('0x5'));var sox=require(_0xa48e('0x6'));var csv=require(_0xa48e('0x7'));var ejs=require(_0xa48e('0x8'));var fs=require('fs');var fs_extra=require(_0xa48e('0x9'));var _=require(_0xa48e('0xa'));var squel=require(_0xa48e('0xb'));var crypto=require(_0xa48e('0xc'));var jsforce=require(_0xa48e('0xd'));var deskjs=require(_0xa48e('0xe'));var toCsv=require(_0xa48e('0x7'));var querystring=require(_0xa48e('0xf'));var Papa=require(_0xa48e('0x10'));var Redis=require(_0xa48e('0x11'));var authService=require(_0xa48e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa48e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa48e('0x14'));var config=require(_0xa48e('0x15'));var licenseUtil=require(_0xa48e('0x16'));var db=require(_0xa48e('0x17'))['db'];function respondWithStatusCode(_0x59dd5e,_0x10f5d2){_0x10f5d2=_0x10f5d2||0xcc;return function(_0xd23154){if(_0xd23154){return _0x59dd5e[_0xa48e('0x18')](_0x10f5d2);}return _0x59dd5e[_0xa48e('0x19')](_0x10f5d2)[_0xa48e('0x1a')]();};}function respondWithResult(_0x23b810,_0x7251b1){_0x7251b1=_0x7251b1||0xc8;return function(_0x5a6c13){if(_0x5a6c13){return _0x23b810[_0xa48e('0x19')](_0x7251b1)[_0xa48e('0x1b')](_0x5a6c13);}};}function respondWithFilteredResult(_0x2653d1,_0x58b8b){return function(_0x54a0bf){if(_0x54a0bf){var _0x188faf=typeof _0x58b8b[_0xa48e('0x1c')]===_0xa48e('0x1d')&&typeof _0x58b8b[_0xa48e('0x1e')]===_0xa48e('0x1d');var _0xd6e5f0=_0x54a0bf[_0xa48e('0x1f')];var _0x1f1cbc=_0x188faf?0x0:_0x58b8b[_0xa48e('0x1c')];var _0x1baea5=_0x188faf?_0x54a0bf[_0xa48e('0x1f')]:_0x58b8b[_0xa48e('0x1c')]+_0x58b8b[_0xa48e('0x1e')];var _0x2ae264;if(_0x1baea5>=_0xd6e5f0){_0x1baea5=_0xd6e5f0;_0x2ae264=0xc8;}else{_0x2ae264=0xce;}_0x2653d1[_0xa48e('0x19')](_0x2ae264);return _0x2653d1['set']('Content-Range',_0x1f1cbc+'-'+_0x1baea5+'/'+_0xd6e5f0)[_0xa48e('0x1b')](_0x54a0bf);}return null;};}function patchUpdates(_0x5939e0){return function(_0x24d766){try{jsonpatch[_0xa48e('0x20')](_0x24d766,_0x5939e0,!![]);}catch(_0xe03bbe){return BPromise[_0xa48e('0x21')](_0xe03bbe);}return _0x24d766[_0xa48e('0x22')]();};}function saveUpdates(_0x3a3298,_0x240f87){return function(_0x50fee6){if(_0x50fee6){return _0x50fee6[_0xa48e('0x23')](_0x3a3298)['then'](function(_0x53a10a){return _0x53a10a;});}return null;};}function removeEntity(_0x4b3dd7,_0x1adb5d){return function(_0x286e19){if(_0x286e19){return _0x286e19[_0xa48e('0x24')]()[_0xa48e('0x25')](function(){var _0x1a54c0=_0x286e19[_0xa48e('0x26')]({'plain':!![]});var _0x45689b=_0xa48e('0x27');return db[_0xa48e('0x28')][_0xa48e('0x24')]({'where':{'type':_0x45689b,'resourceId':_0x1a54c0['id']}})[_0xa48e('0x25')](function(){return _0x286e19;});})['then'](function(){_0x4b3dd7[_0xa48e('0x19')](0xcc)[_0xa48e('0x1a')]();});}};}function handleEntityNotFound(_0x1474e6,_0x5f3d71){return function(_0x1b04f1){if(!_0x1b04f1){_0x1474e6[_0xa48e('0x18')](0x194);}return _0x1b04f1;};}function handleError(_0x283ddb,_0x96b916){_0x96b916=_0x96b916||0x1f4;return function(_0x537743){logger[_0xa48e('0x29')](_0x537743['stack']);if(_0x537743[_0xa48e('0x2a')]){delete _0x537743[_0xa48e('0x2a')];}_0x283ddb[_0xa48e('0x19')](_0x96b916)[_0xa48e('0x2b')](_0x537743);};}exports[_0xa48e('0x2c')]=function(_0x141c6c,_0x5d62b3){var _0x515962={},_0xbccacd={},_0x1008e7={'count':0x0,'rows':[]};var _0x2d2702=_[_0xa48e('0x2d')](db[_0xa48e('0x2e')][_0xa48e('0x2f')],function(_0x165fc2){return{'name':_0x165fc2[_0xa48e('0x30')],'type':_0x165fc2[_0xa48e('0x31')][_0xa48e('0x32')]};});_0xbccacd[_0xa48e('0x33')]=_[_0xa48e('0x2d')](_0x2d2702,'name');_0xbccacd[_0xa48e('0x34')]=_[_0xa48e('0x35')](_0x141c6c[_0xa48e('0x34')]);_0xbccacd[_0xa48e('0x36')]=_['intersection'](_0xbccacd[_0xa48e('0x33')],_0xbccacd[_0xa48e('0x34')]);_0x515962[_0xa48e('0x37')]=_[_0xa48e('0x38')](_0xbccacd[_0xa48e('0x33')],qs[_0xa48e('0x39')](_0x141c6c['query']['fields']));_0x515962['attributes']=_0x515962[_0xa48e('0x37')][_0xa48e('0x3a')]?_0x515962[_0xa48e('0x37')]:_0xbccacd[_0xa48e('0x33')];if(!_0x141c6c[_0xa48e('0x34')]['hasOwnProperty'](_0xa48e('0x3b'))){_0x515962[_0xa48e('0x1e')]=qs[_0xa48e('0x1e')](_0x141c6c[_0xa48e('0x34')]['limit']);_0x515962[_0xa48e('0x1c')]=qs[_0xa48e('0x1c')](_0x141c6c[_0xa48e('0x34')]['offset']);}_0x515962[_0xa48e('0x3c')]=qs['sort'](_0x141c6c[_0xa48e('0x34')]['sort']);_0x515962[_0xa48e('0x3d')]=qs[_0xa48e('0x36')](_[_0xa48e('0x3e')](_0x141c6c[_0xa48e('0x34')],_0xbccacd['filters']),_0x2d2702);if(_0x141c6c[_0xa48e('0x34')][_0xa48e('0x3f')]){_0x515962[_0xa48e('0x3d')]=_[_0xa48e('0x40')](_0x515962[_0xa48e('0x3d')],{'$or':_[_0xa48e('0x2d')](_0x2d2702,function(_0x5275eb){if(_0x5275eb['type']!==_0xa48e('0x41')){var _0x44cae9={};_0x44cae9[_0x5275eb[_0xa48e('0x2a')]]={'$like':'%'+_0x141c6c['query'][_0xa48e('0x3f')]+'%'};return _0x44cae9;}})});}_0x515962=_['merge']({},_0x515962,_0x141c6c[_0xa48e('0x42')]);var _0x34e296={'where':_0x515962[_0xa48e('0x3d')]};return db[_0xa48e('0x2e')][_0xa48e('0x1f')](_0x34e296)[_0xa48e('0x25')](function(_0x34b516){_0x1008e7[_0xa48e('0x1f')]=_0x34b516;if(_0x141c6c[_0xa48e('0x34')][_0xa48e('0x43')]){_0x515962['include']=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x515962);})[_0xa48e('0x25')](function(_0x3d5513){_0x1008e7[_0xa48e('0x44')]=_0x3d5513;return _0x1008e7;})['then'](respondWithFilteredResult(_0x5d62b3,_0x515962))[_0xa48e('0x45')](handleError(_0x5d62b3,null));};exports[_0xa48e('0x46')]=function(_0x5da361,_0x36558d){var _0x5767be={'raw':![],'where':{'id':_0x5da361[_0xa48e('0x47')]['id']}},_0x4da70d={};_0x4da70d['model']=_[_0xa48e('0x35')](db['VoiceChanSpy'][_0xa48e('0x2f')]);_0x4da70d[_0xa48e('0x34')]=_[_0xa48e('0x35')](_0x5da361[_0xa48e('0x34')]);_0x4da70d[_0xa48e('0x36')]=_['intersection'](_0x4da70d[_0xa48e('0x33')],_0x4da70d[_0xa48e('0x34')]);_0x5767be[_0xa48e('0x37')]=_['intersection'](_0x4da70d[_0xa48e('0x33')],qs[_0xa48e('0x39')](_0x5da361[_0xa48e('0x34')][_0xa48e('0x39')]));_0x5767be[_0xa48e('0x37')]=_0x5767be['attributes'][_0xa48e('0x3a')]?_0x5767be[_0xa48e('0x37')]:_0x4da70d[_0xa48e('0x33')];if(_0x5da361[_0xa48e('0x34')][_0xa48e('0x43')]){_0x5767be['include']=[{'all':!![]}];}_0x5767be=_['merge']({},_0x5767be,_0x5da361[_0xa48e('0x42')]);return db[_0xa48e('0x2e')]['find'](_0x5767be)[_0xa48e('0x25')](handleEntityNotFound(_0x36558d,null))[_0xa48e('0x25')](respondWithResult(_0x36558d,null))[_0xa48e('0x45')](handleError(_0x36558d,null));};exports[_0xa48e('0x48')]=function(_0x4f7c03,_0x35b20a){return db[_0xa48e('0x2e')]['create'](_0x4f7c03[_0xa48e('0x49')],{})[_0xa48e('0x25')](function(_0x36afb3){var _0x5a8776=_0x4f7c03[_0xa48e('0x4a')]['get']({'plain':!![]});if(!_0x5a8776)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5a8776[_0xa48e('0x4b')]===_0xa48e('0x4a')){var _0x2d8332=_0x36afb3['get']({'plain':!![]});var _0x2e6efe=_0xa48e('0x27');return db[_0xa48e('0x4c')][_0xa48e('0x4d')]({'where':{'name':_0x2e6efe,'userProfileId':_0x5a8776['userProfileId']},'raw':!![]})['then'](function(_0x27ccae){if(_0x27ccae&&_0x27ccae[_0xa48e('0x4e')]===0x0){return db[_0xa48e('0x28')][_0xa48e('0x48')]({'name':_0x2d8332['name'],'resourceId':_0x2d8332['id'],'type':_0x27ccae[_0xa48e('0x2a')],'sectionId':_0x27ccae['id']},{})[_0xa48e('0x25')](function(){return _0x36afb3;});}else{return _0x36afb3;}})[_0xa48e('0x45')](function(_0x164f55){logger[_0xa48e('0x29')](_0xa48e('0x4f'),_0x164f55);throw _0x164f55;});}return _0x36afb3;})[_0xa48e('0x25')](respondWithResult(_0x35b20a,0xc9))[_0xa48e('0x45')](handleError(_0x35b20a,null));};exports[_0xa48e('0x23')]=function(_0x1a1aa7,_0x3865a7){if(_0x1a1aa7[_0xa48e('0x49')]['id']){delete _0x1a1aa7[_0xa48e('0x49')]['id'];}return db[_0xa48e('0x2e')][_0xa48e('0x4d')]({'where':{'id':_0x1a1aa7[_0xa48e('0x47')]['id']}})[_0xa48e('0x25')](handleEntityNotFound(_0x3865a7,null))[_0xa48e('0x25')](saveUpdates(_0x1a1aa7[_0xa48e('0x49')],null))['then'](respondWithResult(_0x3865a7,null))[_0xa48e('0x45')](handleError(_0x3865a7,null));};exports[_0xa48e('0x24')]=function(_0x2085d8,_0x59d0ed){return db['VoiceChanSpy'][_0xa48e('0x4d')]({'where':{'id':_0x2085d8['params']['id']}})[_0xa48e('0x25')](handleEntityNotFound(_0x59d0ed,null))[_0xa48e('0x25')](removeEntity(_0x59d0ed,null))[_0xa48e('0x45')](handleError(_0x59d0ed,null));};
\ No newline at end of file
index afd3eb8..3ad6eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee3c=['define','VoiceExtension','destroy','lodash','util','./voiceChanSpy.attributes','prefix','system','push','merge','Set','format','chanspy','record','MixMonitor','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','User','findAll','agent','then','catch','exports'];(function(_0x425b10,_0xe4cbbe){var _0x1eecfe=function(_0x2233f1){while(--_0x2233f1){_0x425b10['push'](_0x425b10['shift']());}};_0x1eecfe(++_0xe4cbbe);}(_0xee3c,0xa3));var _0xcee3=function(_0x4ea8ec,_0x813e29){_0x4ea8ec=_0x4ea8ec-0x0;var _0x335c9b=_0xee3c[_0x4ea8ec];return _0x335c9b;};'use strict';var _=require(_0xcee3('0x0'));var util=require(_0xcee3('0x1'));var BPromise=require('bluebird');var attributes=require(_0xcee3('0x2'));var getUserApplications=function(_0x20c4b5,_0x293405,_0x7d309){var _0x20661e=0x1;var _0x5cb649=[];var _0x3e2629={'context':_0x293405['context']||'from-sip','exten':util['format']('%s%s',_0x20c4b5[_0xcee3('0x3')],_0x7d309),'type':_0xcee3('0x4'),'isApp':![],'ChanSpyId':_0x20c4b5['id'],'UserId':_0x293405['id']};_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0x7'),'appdata':util[_0xcee3('0x8')]('CDR(type)=%s',_0xcee3('0x9')),'priority':_0x20661e++},_0x3e2629));if(_0x20c4b5[_0xcee3('0xa')]){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0xb'),'appdata':util[_0xcee3('0x8')]('${UNIQUEID}.%s,a',_0x20c4b5['recordingFormat']),'priority':_0x20661e++},_0x3e2629));}if(_0x20c4b5[_0xcee3('0xc')]){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0xd'),'appdata':_0x20c4b5[_0xcee3('0xe')],'priority':_0x20661e++},_0x3e2629));}_0x5cb649[_0xcee3('0x5')](_['merge']({'app':'ChanSpy','appdata':util['format'](_0xcee3('0xf'),_0x293405[_0xcee3('0x10')],_0x20c4b5[_0xcee3('0x11')]?_0x20c4b5[_0xcee3('0x11')][_0xcee3('0x12')](''):''),'priority':_0x20661e++},_0x3e2629));if(_0x20c4b5['record']){_0x5cb649[_0xcee3('0x5')](_[_0xcee3('0x6')]({'app':_0xcee3('0x13'),'priority':_0x20661e++},_0x3e2629));}return _0x5cb649;};var getChanSpyApplications=function(_0x184f26,_0x3e5cba){var _0x4365f1=[];for(var _0x15aecd=0x0,_0x53f1bf=0x1;_0x15aecd<_0x3e5cba[_0xcee3('0x14')];_0x15aecd++,_0x53f1bf=0x1){_0x4365f1=_0x4365f1[_0xcee3('0x15')](getUserApplications(_0x184f26,_0x3e5cba[_0x15aecd],_0x3e5cba[_0x15aecd]['internal']));if(_0x3e5cba[_0x15aecd][_0xcee3('0x16')]!=_0x3e5cba[_0x15aecd][_0xcee3('0x10')]){_0x4365f1=_0x4365f1[_0xcee3('0x15')](getUserApplications(_0x184f26,_0x3e5cba[_0x15aecd],_0x3e5cba[_0x15aecd][_0xcee3('0x10')]));}}return _0x4365f1;};var getChanSpyPromise=function(_0x24184d,_0x4bf321){return new BPromise(function(_0x2cb609,_0x39167b){return _0x24184d[_0xcee3('0x17')][_0xcee3('0x18')]({'attributes':['id','name',_0xcee3('0x16')],'where':{'role':_0xcee3('0x19'),'chanspy':!![]},'raw':!![]})[_0xcee3('0x1a')](function(_0xb1f61){if(_0xb1f61){return _0x2cb609(getChanSpyApplications(_0x4bf321,_0xb1f61));}return _0x2cb609([]);})[_0xcee3('0x1b')](function(_0x170f2c){_0x39167b(_0x170f2c);});});};module[_0xcee3('0x1c')]=function(_0x3b1d99,_0x5a3089){var _0x3ee8ee=_0x3b1d99['models'];return _0x3b1d99[_0xcee3('0x1d')]('VoiceChanSpy',attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x288adc,_0x2a5fc7,_0x3b51e5){return getChanSpyPromise(_0x3ee8ee,_0x288adc)['then'](function(_0x3daaf9){if(_0x3daaf9&&_0x3daaf9[_0xcee3('0x14')]){return _0x3ee8ee['VoiceExtension']['bulkCreate'](_0x3daaf9);}})[_0xcee3('0x1a')](function(){_0x3b51e5();})['catch'](function(_0x2ae691){_0x3b51e5(_0x2ae691);});},'afterUpdate':function(_0x44bafb,_0x4b9087,_0x4979d0){return _0x3ee8ee[_0xcee3('0x1e')][_0xcee3('0x1f')]({'where':{'ChanSpyId':_0x44bafb['id']}})[_0xcee3('0x1a')](function(){return getChanSpyPromise(_0x3ee8ee,_0x44bafb);})[_0xcee3('0x1a')](function(_0x5bd017){if(_0x5bd017&&_0x5bd017['length']){return _0x3ee8ee[_0xcee3('0x1e')]['bulkCreate'](_0x5bd017);}})[_0xcee3('0x1a')](function(){_0x4979d0();})['catch'](function(_0x32a3b1){_0x4979d0(_0x32a3b1);});},'afterDestroy':function(_0x4d3724,_0x4cbe86,_0x56535b){return _0x3ee8ee[_0xcee3('0x1e')][_0xcee3('0x1f')]({'where':{'ChanSpyId':_0x4d3724['id']}})['then'](function(){_0x56535b();})[_0xcee3('0x1b')](function(_0x5837cd){_0x56535b(_0x5837cd);});}}});};
\ No newline at end of file
+var _0xcc09=['options','join','record','StopMixMonitor','length','concat','internal','name','User','findAll','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','bulkCreate','destroy','lodash','./voiceChanSpy.attributes','context','from-sip','format','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s'];(function(_0x541260,_0x4c7f2e){var _0x1dd2b5=function(_0x4140de){while(--_0x4140de){_0x541260['push'](_0x541260['shift']());}};_0x1dd2b5(++_0x4c7f2e);}(_0xcc09,0x1a4));var _0x9cc0=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xcc09[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x9cc0('0x0'));var util=require('util');var BPromise=require('bluebird');var attributes=require(_0x9cc0('0x1'));var getUserApplications=function(_0x2a9cbd,_0x351f86,_0x4864a5){var _0x5b150e=0x1;var _0x1aec8e=[];var _0x1b06bf={'context':_0x351f86[_0x9cc0('0x2')]||_0x9cc0('0x3'),'exten':util[_0x9cc0('0x4')]('%s%s',_0x2a9cbd[_0x9cc0('0x5')],_0x4864a5),'type':_0x9cc0('0x6'),'isApp':![],'ChanSpyId':_0x2a9cbd['id'],'UserId':_0x351f86['id']};_0x1aec8e[_0x9cc0('0x7')](_[_0x9cc0('0x8')]({'app':_0x9cc0('0x9'),'appdata':util['format'](_0x9cc0('0xa'),_0x9cc0('0xb')),'priority':_0x5b150e++},_0x1b06bf));if(_0x2a9cbd['record']){_0x1aec8e[_0x9cc0('0x7')](_[_0x9cc0('0x8')]({'app':_0x9cc0('0xc'),'appdata':util[_0x9cc0('0x4')](_0x9cc0('0xd'),_0x2a9cbd[_0x9cc0('0xe')]),'priority':_0x5b150e++},_0x1b06bf));}if(_0x2a9cbd[_0x9cc0('0xf')]){_0x1aec8e[_0x9cc0('0x7')](_[_0x9cc0('0x8')]({'app':_0x9cc0('0x10'),'appdata':_0x2a9cbd[_0x9cc0('0x11')],'priority':_0x5b150e++},_0x1b06bf));}_0x1aec8e[_0x9cc0('0x7')](_['merge']({'app':_0x9cc0('0x12'),'appdata':util[_0x9cc0('0x4')](_0x9cc0('0x13'),_0x351f86['name'],_0x2a9cbd[_0x9cc0('0x14')]?_0x2a9cbd[_0x9cc0('0x14')][_0x9cc0('0x15')](''):''),'priority':_0x5b150e++},_0x1b06bf));if(_0x2a9cbd[_0x9cc0('0x16')]){_0x1aec8e[_0x9cc0('0x7')](_[_0x9cc0('0x8')]({'app':_0x9cc0('0x17'),'priority':_0x5b150e++},_0x1b06bf));}return _0x1aec8e;};var getChanSpyApplications=function(_0x36ed73,_0x5ac7e4){var _0x5eb9a9=[];for(var _0x5e210c=0x0,_0x483531=0x1;_0x5e210c<_0x5ac7e4[_0x9cc0('0x18')];_0x5e210c++,_0x483531=0x1){_0x5eb9a9=_0x5eb9a9[_0x9cc0('0x19')](getUserApplications(_0x36ed73,_0x5ac7e4[_0x5e210c],_0x5ac7e4[_0x5e210c]['internal']));if(_0x5ac7e4[_0x5e210c][_0x9cc0('0x1a')]!=_0x5ac7e4[_0x5e210c]['name']){_0x5eb9a9=_0x5eb9a9[_0x9cc0('0x19')](getUserApplications(_0x36ed73,_0x5ac7e4[_0x5e210c],_0x5ac7e4[_0x5e210c][_0x9cc0('0x1b')]));}}return _0x5eb9a9;};var getChanSpyPromise=function(_0x5b37b4,_0x204090){return new BPromise(function(_0x1cb7a1,_0x41a302){return _0x5b37b4[_0x9cc0('0x1c')][_0x9cc0('0x1d')]({'attributes':['id',_0x9cc0('0x1b'),_0x9cc0('0x1a')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x57186f){if(_0x57186f){return _0x1cb7a1(getChanSpyApplications(_0x204090,_0x57186f));}return _0x1cb7a1([]);})[_0x9cc0('0x1e')](function(_0x3c8b41){_0x41a302(_0x3c8b41);});});};module[_0x9cc0('0x1f')]=function(_0x23a1ee,_0x4fa016){var _0x131040=_0x23a1ee[_0x9cc0('0x20')];return _0x23a1ee[_0x9cc0('0x21')](_0x9cc0('0x22'),attributes,{'tableName':_0x9cc0('0x23'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x51eb31,_0x1a1574,_0x3fac54){return getChanSpyPromise(_0x131040,_0x51eb31)[_0x9cc0('0x24')](function(_0x5df19a){if(_0x5df19a&&_0x5df19a[_0x9cc0('0x18')]){return _0x131040[_0x9cc0('0x25')][_0x9cc0('0x26')](_0x5df19a);}})[_0x9cc0('0x24')](function(){_0x3fac54();})[_0x9cc0('0x1e')](function(_0x47d785){_0x3fac54(_0x47d785);});},'afterUpdate':function(_0x1b2775,_0x23b6db,_0x5c3ce8){return _0x131040['VoiceExtension'][_0x9cc0('0x27')]({'where':{'ChanSpyId':_0x1b2775['id']}})[_0x9cc0('0x24')](function(){return getChanSpyPromise(_0x131040,_0x1b2775);})[_0x9cc0('0x24')](function(_0xdef320){if(_0xdef320&&_0xdef320[_0x9cc0('0x18')]){return _0x131040[_0x9cc0('0x25')][_0x9cc0('0x26')](_0xdef320);}})[_0x9cc0('0x24')](function(){_0x5c3ce8();})[_0x9cc0('0x1e')](function(_0x44e46f){_0x5c3ce8(_0x44e46f);});},'afterDestroy':function(_0x218684,_0x413590,_0x12a187){return _0x131040[_0x9cc0('0x25')]['destroy']({'where':{'ChanSpyId':_0x218684['id']}})[_0x9cc0('0x24')](function(){_0x12a187();})[_0x9cc0('0x1e')](function(_0xf2d792){_0x12a187(_0xf2d792);});}}});};
\ No newline at end of file
index d8c66d6..b701d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2504=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x1ef462,_0x2ab345){var _0x255eda=function(_0x3df02a){while(--_0x3df02a){_0x1ef462['push'](_0x1ef462['shift']());}};_0x255eda(++_0x2ab345);}(_0x2504,0xee));var _0x4250=function(_0x47153e,_0x3cab90){_0x47153e=_0x47153e-0x0;var _0x1ab7e6=_0x2504[_0x47153e];return _0x1ab7e6;};'use strict';var _=require(_0x4250('0x0'));var util=require(_0x4250('0x1'));var moment=require(_0x4250('0x2'));var BPromise=require(_0x4250('0x3'));var rs=require(_0x4250('0x4'));var fs=require('fs');var Redis=require(_0x4250('0x5'));var db=require(_0x4250('0x6'))['db'];var utils=require(_0x4250('0x7'));var logger=require(_0x4250('0x8'))(_0x4250('0x9'));var config=require(_0x4250('0xa'));var jayson=require(_0x4250('0xb'));var client=jayson['client'][_0x4250('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4e177e,_0x5a5286,_0x370998){return new BPromise(function(_0x477312,_0x1a3b57){return client[_0x4250('0xd')](_0x4e177e,_0x370998)[_0x4250('0xe')](function(_0x51ea6f){logger[_0x4250('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x5a5286,_0x4250('0x10'));logger[_0x4250('0x11')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x5a5286,_0x4250('0x10'),JSON['stringify'](_0x51ea6f));if(_0x51ea6f['error']){if(_0x51ea6f[_0x4250('0x12')][_0x4250('0x13')]===0x1f4){logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x51ea6f[_0x4250('0x12')]['message']);return _0x1a3b57(_0x51ea6f[_0x4250('0x12')][_0x4250('0x15')]);}logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x51ea6f[_0x4250('0x12')][_0x4250('0x15')]);return _0x477312(_0x51ea6f['error'][_0x4250('0x15')]);}else{logger[_0x4250('0xf')](_0x4250('0x14'),_0x5a5286,_0x4250('0x10'));_0x477312(_0x51ea6f[_0x4250('0x16')][_0x4250('0x15')]);}})[_0x4250('0x17')](function(_0x4e70fc){logger[_0x4250('0x12')](_0x4250('0x14'),_0x5a5286,_0x4e70fc);_0x1a3b57(_0x4e70fc);});});}
\ No newline at end of file
+var _0x402f=['http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','message','error','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0xb8edcd,_0x8f2d83){var _0x1490ba=function(_0x586761){while(--_0x586761){_0xb8edcd['push'](_0xb8edcd['shift']());}};_0x1490ba(++_0x8f2d83);}(_0x402f,0x6f));var _0xf402=function(_0x150b05,_0x4b83a2){_0x150b05=_0x150b05-0x0;var _0x10570d=_0x402f[_0x150b05];return _0x10570d;};'use strict';var _=require(_0xf402('0x0'));var util=require('util');var moment=require(_0xf402('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf402('0x2'));var db=require(_0xf402('0x3'))['db'];var utils=require(_0xf402('0x4'));var logger=require('../../config/logger')(_0xf402('0x5'));var config=require('../../config/environment');var jayson=require(_0xf402('0x6'));var client=jayson[_0xf402('0x7')][_0xf402('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a8774,_0xa1b27d,_0x55c515){return new BPromise(function(_0x4d1771,_0x2f0ffe){return client[_0xf402('0x9')](_0x2a8774,_0x55c515)[_0xf402('0xa')](function(_0xdc18e0){logger[_0xf402('0xb')](_0xf402('0xc'),_0xa1b27d,_0xf402('0xd'));logger[_0xf402('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'),JSON['stringify'](_0xdc18e0));if(_0xdc18e0['error']){if(_0xdc18e0['error']['code']===0x1f4){logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0['error']['message']);return _0x2f0ffe(_0xdc18e0['error'][_0xf402('0xf')]);}logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0[_0xf402('0x10')][_0xf402('0xf')]);return _0x4d1771(_0xdc18e0[_0xf402('0x10')]['message']);}else{logger[_0xf402('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'));_0x4d1771(_0xdc18e0['result']['message']);}})['catch'](function(_0xb45d00){logger[_0xf402('0x10')](_0xf402('0xc'),_0xa1b27d,_0xb45d00);_0x2f0ffe(_0xb45d00);});});}
\ No newline at end of file
index 4d74e6d..ce1e085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bfc=['../../components/auth/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x50589f,_0x499bea){var _0x597b49=function(_0x167a06){while(--_0x167a06){_0x50589f['push'](_0x50589f['shift']());}};_0x597b49(++_0x499bea);}(_0x1bfc,0x73));var _0xc1bf=function(_0x5db3fa,_0x313cad){_0x5db3fa=_0x5db3fa-0x0;var _0x17e108=_0x1bfc[_0x5db3fa];return _0x17e108;};'use strict';var multer=require(_0xc1bf('0x0'));var util=require(_0xc1bf('0x1'));var path=require('path');var timeout=require(_0xc1bf('0x2'));var express=require('express');var router=express[_0xc1bf('0x3')]();var fs_extra=require(_0xc1bf('0x4'));var auth=require(_0xc1bf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc1bf('0x6'));var controller=require(_0xc1bf('0x7'));router[_0xc1bf('0x8')]('/',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xa')]);router[_0xc1bf('0x8')](_0xc1bf('0xb'),auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xc')]);router[_0xc1bf('0xd')]('/',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0xe')]);router[_0xc1bf('0xf')](_0xc1bf('0xb'),auth[_0xc1bf('0x9')](),controller[_0xc1bf('0x10')]);router[_0xc1bf('0x11')]('/:id',auth[_0xc1bf('0x9')](),controller[_0xc1bf('0x12')]);module[_0xc1bf('0x13')]=router;
\ No newline at end of file
+var _0x3d85=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports','util','path'];(function(_0x249f2a,_0x13c653){var _0x1f3c46=function(_0x5b1a61){while(--_0x5b1a61){_0x249f2a['push'](_0x249f2a['shift']());}};_0x1f3c46(++_0x13c653);}(_0x3d85,0xfa));var _0x53d8=function(_0x2c054a,_0x131caf){_0x2c054a=_0x2c054a-0x0;var _0x42f25e=_0x3d85[_0x2c054a];return _0x42f25e;};'use strict';var multer=require('multer');var util=require(_0x53d8('0x0'));var path=require(_0x53d8('0x1'));var timeout=require('connect-timeout');var express=require(_0x53d8('0x2'));var router=express['Router']();var fs_extra=require(_0x53d8('0x3'));var auth=require(_0x53d8('0x4'));var interaction=require(_0x53d8('0x5'));var config=require(_0x53d8('0x6'));var controller=require(_0x53d8('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x53d8('0x8')](_0x53d8('0x9'),auth[_0x53d8('0xa')](),controller[_0x53d8('0xb')]);router[_0x53d8('0xc')]('/',auth['isAuthenticated'](),controller[_0x53d8('0xd')]);router[_0x53d8('0xe')](_0x53d8('0x9'),auth[_0x53d8('0xa')](),controller[_0x53d8('0xf')]);router[_0x53d8('0x10')](_0x53d8('0x9'),auth[_0x53d8('0xa')](),controller['destroy']);module[_0x53d8('0x11')]=router;
\ No newline at end of file
index ac92013..25223bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf9e=['STRING','name','BOOLEAN','sequelize','exports'];(function(_0x1d697d,_0x4ad045){var _0x216365=function(_0x2e98df){while(--_0x2e98df){_0x1d697d['push'](_0x1d697d['shift']());}};_0x216365(++_0x4ad045);}(_0xcf9e,0x148));var _0xecf9=function(_0x38ad9a,_0x4539e2){_0x38ad9a=_0x38ad9a-0x0;var _0x3b41a5=_0xcf9e[_0x38ad9a];return _0x3b41a5;};'use strict';var Sequelize=require(_0xecf9('0x0'));module[_0xecf9('0x1')]={'name':{'type':Sequelize[_0xecf9('0x2')],'unique':_0xecf9('0x3')},'description':{'type':Sequelize[_0xecf9('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xecf9('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc5f1=['name','BOOLEAN','sequelize','exports','STRING'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xc5f1,0x16a));var _0x1c5f=function(_0x56b1a7,_0x9a6abc){_0x56b1a7=_0x56b1a7-0x0;var _0xa8e0c0=_0xc5f1[_0x56b1a7];return _0xa8e0c0;};'use strict';var Sequelize=require(_0x1c5f('0x0'));module[_0x1c5f('0x1')]={'name':{'type':Sequelize[_0x1c5f('0x2')],'unique':_0x1c5f('0x3')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x1c5f('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 426122e..ca40729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e59=['send','map','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','VoiceContext','findAll','rows','params','keys','rawAttributes','length','include','create','body','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','Contexts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','chan_sip.so','destroy','readFileSync','eml-format','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','VoiceContext,\x20%s,\x20%s','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','reject','update','UserProfileResource','name'];(function(_0x2fb87c,_0x2dee49){var _0x43038b=function(_0x7e5396){while(--_0x7e5396){_0x2fb87c['push'](_0x2fb87c['shift']());}};_0x43038b(++_0x2dee49);}(_0x5e59,0x1d8));var _0x95e5=function(_0x5cbf0e,_0x4cd140){_0x5cbf0e=_0x5cbf0e-0x0;var _0x1c76f8=_0x5e59[_0x5cbf0e];return _0x1c76f8;};'use strict';var emlformat=require(_0x95e5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x95e5('0x1'));var moment=require(_0x95e5('0x2'));var BPromise=require(_0x95e5('0x3'));var Mustache=require(_0x95e5('0x4'));var util=require('util');var path=require(_0x95e5('0x5'));var sox=require(_0x95e5('0x6'));var csv=require('to-csv');var ejs=require(_0x95e5('0x7'));var fs=require('fs');var fs_extra=require(_0x95e5('0x8'));var _=require(_0x95e5('0x9'));var squel=require(_0x95e5('0xa'));var crypto=require(_0x95e5('0xb'));var jsforce=require(_0x95e5('0xc'));var deskjs=require(_0x95e5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x95e5('0xe'));var Papa=require(_0x95e5('0xf'));var Redis=require(_0x95e5('0x10'));var authService=require(_0x95e5('0x11'));var qs=require(_0x95e5('0x12'));var as=require(_0x95e5('0x13'));var hardwareService=require(_0x95e5('0x14'));var logger=require(_0x95e5('0x15'))(_0x95e5('0x16'));var utils=require(_0x95e5('0x17'));var config=require(_0x95e5('0x18'));var licenseUtil=require(_0x95e5('0x19'));var db=require(_0x95e5('0x1a'))['db'];var jayson=require(_0x95e5('0x1b'));var client=jayson['client'][_0x95e5('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe9aea6,_0xc6fadf,_0x192aa6,_0x10a248){return new BPromise(function(_0x5b6fbe,_0x5e3801){var _0x368ac5=_0x10a248||client;return _0x368ac5[_0x95e5('0x1d')](_0xe9aea6,_0x192aa6)[_0x95e5('0x1e')](function(_0x27e11b){logger[_0x95e5('0x1f')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x95e5('0x20'));logger[_0x95e5('0x21')](_0x95e5('0x22'),_0xc6fadf,_0x95e5('0x20'),JSON['stringify'](_0x27e11b));if(_0x27e11b[_0x95e5('0x23')]){if(_0x27e11b[_0x95e5('0x23')][_0x95e5('0x24')]===0x1f4){logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x27e11b[_0x95e5('0x23')][_0x95e5('0x25')]);return _0x5e3801(_0x27e11b[_0x95e5('0x23')][_0x95e5('0x25')]);}logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x27e11b['error'][_0x95e5('0x25')]);return _0x5b6fbe(_0x27e11b[_0x95e5('0x23')]['message']);}else{logger[_0x95e5('0x1f')](_0x95e5('0x26'),_0xc6fadf,_0x95e5('0x20'));_0x5b6fbe(_0x27e11b[_0x95e5('0x27')]['message']);}})[_0x95e5('0x28')](function(_0x22476d){logger[_0x95e5('0x23')]('VoiceContext,\x20%s,\x20%s',_0xc6fadf,_0x22476d);_0x5e3801(_0x22476d);});});}function respondWithStatusCode(_0x43ea8b,_0x5c5c2b){_0x5c5c2b=_0x5c5c2b||0xcc;return function(_0x1a75df){if(_0x1a75df){return _0x43ea8b[_0x95e5('0x29')](_0x5c5c2b);}return _0x43ea8b[_0x95e5('0x2a')](_0x5c5c2b)['end']();};}function respondWithResult(_0x1c14f0,_0x12b8a8){_0x12b8a8=_0x12b8a8||0xc8;return function(_0x2cffc5){if(_0x2cffc5){return _0x1c14f0['status'](_0x12b8a8)[_0x95e5('0x2b')](_0x2cffc5);}};}function respondWithFilteredResult(_0x26b9c2,_0x445259){return function(_0x37231c){if(_0x37231c){var _0x2a4d3c=typeof _0x445259['offset']===_0x95e5('0x2c')&&typeof _0x445259[_0x95e5('0x2d')]===_0x95e5('0x2c');var _0x2ae52e=_0x37231c[_0x95e5('0x2e')];var _0x197ffd=_0x2a4d3c?0x0:_0x445259[_0x95e5('0x2f')];var _0x204a55=_0x2a4d3c?_0x37231c[_0x95e5('0x2e')]:_0x445259[_0x95e5('0x2f')]+_0x445259[_0x95e5('0x2d')];var _0x12d27e;if(_0x204a55>=_0x2ae52e){_0x204a55=_0x2ae52e;_0x12d27e=0xc8;}else{_0x12d27e=0xce;}_0x26b9c2[_0x95e5('0x2a')](_0x12d27e);return _0x26b9c2[_0x95e5('0x30')]('Content-Range',_0x197ffd+'-'+_0x204a55+'/'+_0x2ae52e)['json'](_0x37231c);}return null;};}function patchUpdates(_0x48190b){return function(_0xf0567c){try{jsonpatch['apply'](_0xf0567c,_0x48190b,!![]);}catch(_0x238e7e){return BPromise[_0x95e5('0x31')](_0x238e7e);}return _0xf0567c['save']();};}function saveUpdates(_0x154bbe,_0x2456b6){return function(_0x4c5f02){if(_0x4c5f02){return _0x4c5f02[_0x95e5('0x32')](_0x154bbe)[_0x95e5('0x1e')](function(_0x5b298d){return _0x5b298d;});}return null;};}function removeEntity(_0x582b5a,_0x52e7fd){return function(_0x3c9809){if(_0x3c9809){return _0x3c9809['destroy']()[_0x95e5('0x1e')](function(){var _0x2ae709=_0x3c9809['get']({'plain':!![]});var _0x5aff5d='Contexts';return db[_0x95e5('0x33')]['destroy']({'where':{'type':_0x5aff5d,'resourceId':_0x2ae709['id']}})[_0x95e5('0x1e')](function(){return _0x3c9809;});})['then'](function(){_0x582b5a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x268d9d,_0x471a03){return function(_0x4d1934){if(!_0x4d1934){_0x268d9d[_0x95e5('0x29')](0x194);}return _0x4d1934;};}function handleError(_0x39158a,_0x3cb949){_0x3cb949=_0x3cb949||0x1f4;return function(_0x6d887c){logger[_0x95e5('0x23')](_0x6d887c['stack']);if(_0x6d887c['name']){delete _0x6d887c[_0x95e5('0x34')];}_0x39158a[_0x95e5('0x2a')](_0x3cb949)[_0x95e5('0x35')](_0x6d887c);};}exports['index']=function(_0x322cc7,_0x32044b){var _0x448e41={},_0x1b7d05={},_0x4f5258={'count':0x0,'rows':[]};var _0x5d808b=_[_0x95e5('0x36')](db['VoiceContext']['rawAttributes'],function(_0x455a5a){return{'name':_0x455a5a[_0x95e5('0x37')],'type':_0x455a5a[_0x95e5('0x38')][_0x95e5('0x39')]};});_0x1b7d05[_0x95e5('0x3a')]=_['map'](_0x5d808b,_0x95e5('0x34'));_0x1b7d05['query']=_['keys'](_0x322cc7[_0x95e5('0x3b')]);_0x1b7d05['filters']=_[_0x95e5('0x3c')](_0x1b7d05['model'],_0x1b7d05['query']);_0x448e41[_0x95e5('0x3d')]=_['intersection'](_0x1b7d05[_0x95e5('0x3a')],qs[_0x95e5('0x3e')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x3e')]));_0x448e41[_0x95e5('0x3d')]=_0x448e41[_0x95e5('0x3d')]['length']?_0x448e41[_0x95e5('0x3d')]:_0x1b7d05[_0x95e5('0x3a')];if(!_0x322cc7['query'][_0x95e5('0x3f')](_0x95e5('0x40'))){_0x448e41[_0x95e5('0x2d')]=qs[_0x95e5('0x2d')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x2d')]);_0x448e41[_0x95e5('0x2f')]=qs['offset'](_0x322cc7[_0x95e5('0x3b')]['offset']);}_0x448e41[_0x95e5('0x41')]=qs[_0x95e5('0x42')](_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x42')]);_0x448e41['where']=qs['filters'](_[_0x95e5('0x43')](_0x322cc7[_0x95e5('0x3b')],_0x1b7d05['filters']),_0x5d808b);if(_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x44')]){_0x448e41[_0x95e5('0x45')]=_[_0x95e5('0x46')](_0x448e41[_0x95e5('0x45')],{'$or':_[_0x95e5('0x36')](_0x5d808b,function(_0x1d8206){if(_0x1d8206[_0x95e5('0x38')]!==_0x95e5('0x47')){var _0x3a3df7={};_0x3a3df7[_0x1d8206[_0x95e5('0x34')]]={'$like':'%'+_0x322cc7[_0x95e5('0x3b')]['filter']+'%'};return _0x3a3df7;}})});}_0x448e41=_[_0x95e5('0x46')]({},_0x448e41,_0x322cc7[_0x95e5('0x48')]);var _0x61310c={'where':_0x448e41[_0x95e5('0x45')]};return db['VoiceContext'][_0x95e5('0x2e')](_0x61310c)['then'](function(_0x22eedc){_0x4f5258['count']=_0x22eedc;if(_0x322cc7[_0x95e5('0x3b')][_0x95e5('0x49')]){_0x448e41['include']=[{'all':!![]}];}return db[_0x95e5('0x4a')][_0x95e5('0x4b')](_0x448e41);})['then'](function(_0x526907){_0x4f5258[_0x95e5('0x4c')]=_0x526907;return _0x4f5258;})[_0x95e5('0x1e')](respondWithFilteredResult(_0x32044b,_0x448e41))[_0x95e5('0x28')](handleError(_0x32044b,null));};exports['show']=function(_0x5b6390,_0x4f1906){var _0x188ca6={'raw':![],'where':{'id':_0x5b6390[_0x95e5('0x4d')]['id']}},_0x594372={};_0x594372['model']=_[_0x95e5('0x4e')](db[_0x95e5('0x4a')][_0x95e5('0x4f')]);_0x594372['query']=_[_0x95e5('0x4e')](_0x5b6390[_0x95e5('0x3b')]);_0x594372['filters']=_['intersection'](_0x594372[_0x95e5('0x3a')],_0x594372[_0x95e5('0x3b')]);_0x188ca6[_0x95e5('0x3d')]=_[_0x95e5('0x3c')](_0x594372[_0x95e5('0x3a')],qs[_0x95e5('0x3e')](_0x5b6390[_0x95e5('0x3b')][_0x95e5('0x3e')]));_0x188ca6['attributes']=_0x188ca6[_0x95e5('0x3d')][_0x95e5('0x50')]?_0x188ca6[_0x95e5('0x3d')]:_0x594372[_0x95e5('0x3a')];if(_0x5b6390['query']['includeAll']){_0x188ca6[_0x95e5('0x51')]=[{'all':!![]}];}_0x188ca6=_[_0x95e5('0x46')]({},_0x188ca6,_0x5b6390['options']);return db[_0x95e5('0x4a')]['find'](_0x188ca6)[_0x95e5('0x1e')](handleEntityNotFound(_0x4f1906,null))[_0x95e5('0x1e')](respondWithResult(_0x4f1906,null))[_0x95e5('0x28')](handleError(_0x4f1906,null));};exports[_0x95e5('0x52')]=function(_0x33aec5,_0x357888,_0x420982){var _0x4af8df;return db[_0x95e5('0x4a')][_0x95e5('0x52')](_0x33aec5[_0x95e5('0x53')],{'raw':!![]})[_0x95e5('0x1e')](function(_0x22fdbe){_0x4af8df=_0x22fdbe;return db[_0x95e5('0x4a')][_0x95e5('0x4b')]({'raw':!![]});})['then'](function(_0x5e4f98){var _0x3b11cc=fs['readFileSync'](path[_0x95e5('0x54')](config[_0x95e5('0x55')],_0x95e5('0x56')),_0x95e5('0x57'));var _0x37c023=ejs[_0x95e5('0x58')](_0x3b11cc,{'contexts':_0x5e4f98||[]});fs[_0x95e5('0x59')](_0x95e5('0x5a'),_0x37c023);})['then'](function(){return respondWithRpcPromise(_0x95e5('0x5b'),'create',{'module':'chan_sip.so'});})[_0x95e5('0x1e')](function(){var _0x508800=_0x33aec5['user'][_0x95e5('0x5c')]({'plain':!![]});if(!_0x508800)throw new Error(_0x95e5('0x5d'));if(_0x508800[_0x95e5('0x5e')]===_0x95e5('0x5f')){var _0x3cf835=_0x4af8df[_0x95e5('0x5c')]({'plain':!![]});return db[_0x95e5('0x60')][_0x95e5('0x61')]({'where':{'name':_0x95e5('0x62'),'userProfileId':_0x508800[_0x95e5('0x63')]},'raw':!![]})[_0x95e5('0x1e')](function(_0xd1087b){if(_0xd1087b&&_0xd1087b[_0x95e5('0x64')]===0x0){return db[_0x95e5('0x33')][_0x95e5('0x52')]({'name':_0x3cf835[_0x95e5('0x34')],'resourceId':_0x3cf835['id'],'type':_0xd1087b[_0x95e5('0x34')],'sectionId':_0xd1087b['id']},{})[_0x95e5('0x1e')](function(){return _0x4af8df;});}else{return _0x4af8df;}})[_0x95e5('0x28')](function(_0x166d44){logger['error'](_0x95e5('0x65'),_0x166d44);throw _0x166d44;});}return _0x4af8df;})[_0x95e5('0x1e')](respondWithResult(_0x357888,0xc9))[_0x95e5('0x28')](handleError(_0x357888,null));};exports[_0x95e5('0x32')]=function(_0x328104,_0xea2c0a,_0x4615eb){var _0x5d7750;return db[_0x95e5('0x4a')]['find']({'where':{'id':_0x328104[_0x95e5('0x4d')]['id']}})[_0x95e5('0x1e')](handleEntityNotFound(_0xea2c0a,null))[_0x95e5('0x1e')](saveUpdates(_0x328104['body'],null))[_0x95e5('0x1e')](function(_0x2c3030){if(_0x2c3030){_0x5d7750=_0x2c3030;return db[_0x95e5('0x4a')]['findAll']({'raw':!![]});}})['then'](function(_0xbee5f7){var _0x49c4da=fs['readFileSync'](path[_0x95e5('0x54')](config[_0x95e5('0x55')],_0x95e5('0x56')),_0x95e5('0x57'));var _0xa2f669=ejs[_0x95e5('0x58')](_0x49c4da,{'contexts':_0xbee5f7||[]});fs[_0x95e5('0x59')](_0x95e5('0x5a'),_0xa2f669);})[_0x95e5('0x1e')](function(){return respondWithRpcPromise(_0x95e5('0x5b'),_0x95e5('0x32'),{'module':_0x95e5('0x66')});})[_0x95e5('0x1e')](function(){return _0x5d7750;})[_0x95e5('0x1e')](respondWithResult(_0xea2c0a,null))[_0x95e5('0x28')](handleError(_0xea2c0a,null));};exports[_0x95e5('0x67')]=function(_0x212ed1,_0x2fbe24,_0x1d3e70){var _0x145dc6;return db[_0x95e5('0x4a')][_0x95e5('0x61')]({'where':{'id':_0x212ed1[_0x95e5('0x4d')]['id']}})[_0x95e5('0x1e')](handleEntityNotFound(_0x2fbe24,null))[_0x95e5('0x1e')](removeEntity(_0x2fbe24,null))[_0x95e5('0x1e')](function(){return db[_0x95e5('0x4a')]['findAll']({'raw':!![]});})[_0x95e5('0x1e')](function(_0x5095b4){var _0x2ee378=fs[_0x95e5('0x68')](path[_0x95e5('0x54')](config[_0x95e5('0x55')],'server/files/templates/context.ejs'),_0x95e5('0x57'));var _0x4da8de=ejs[_0x95e5('0x58')](_0x2ee378,{'contexts':_0x5095b4});fs['writeFileSync'](_0x95e5('0x5a'),_0x4da8de);return respondWithRpcPromise(_0x95e5('0x5b'),_0x95e5('0x67'),{'module':_0x95e5('0x66')});})[_0x95e5('0x28')](handleError(_0x2fbe24,null));};
\ No newline at end of file
+var _0xa337=['intersection','query','attributes','fields','model','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','length','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload','update','writeFileSync','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Contexts','sendStatus','stack','name','send','VoiceContext','rawAttributes','fieldName','key','map','keys','filters'];(function(_0x4abbf6,_0x2a5a8c){var _0x5ccb52=function(_0x3c1847){while(--_0x3c1847){_0x4abbf6['push'](_0x4abbf6['shift']());}};_0x5ccb52(++_0x2a5a8c);}(_0xa337,0x93));var _0x7a33=function(_0x3a5ba5,_0x4a85eb){_0x3a5ba5=_0x3a5ba5-0x0;var _0xc8ff0e=_0xa337[_0x3a5ba5];return _0xc8ff0e;};'use strict';var emlformat=require(_0x7a33('0x0'));var rimraf=require(_0x7a33('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7a33('0x2'));var rp=require('request-promise');var moment=require(_0x7a33('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7a33('0x4'));var util=require(_0x7a33('0x5'));var path=require(_0x7a33('0x6'));var sox=require('sox');var csv=require(_0x7a33('0x7'));var ejs=require(_0x7a33('0x8'));var fs=require('fs');var fs_extra=require(_0x7a33('0x9'));var _=require(_0x7a33('0xa'));var squel=require(_0x7a33('0xb'));var crypto=require(_0x7a33('0xc'));var jsforce=require(_0x7a33('0xd'));var deskjs=require(_0x7a33('0xe'));var toCsv=require(_0x7a33('0x7'));var querystring=require(_0x7a33('0xf'));var Papa=require(_0x7a33('0x10'));var Redis=require(_0x7a33('0x11'));var authService=require(_0x7a33('0x12'));var qs=require(_0x7a33('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7a33('0x14'));var utils=require(_0x7a33('0x15'));var config=require(_0x7a33('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7a33('0x17'))['db'];var jayson=require(_0x7a33('0x18'));var client=jayson['client'][_0x7a33('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x376f90,_0x24d282,_0x531836,_0x40f07a){return new BPromise(function(_0x33b7f8,_0x5a52a0){var _0x57f85a=_0x40f07a||client;return _0x57f85a[_0x7a33('0x1a')](_0x376f90,_0x531836)[_0x7a33('0x1b')](function(_0x22716b){logger[_0x7a33('0x1c')](_0x7a33('0x1d'),_0x24d282,_0x7a33('0x1e'));logger[_0x7a33('0x1f')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x24d282,_0x7a33('0x1e'),JSON[_0x7a33('0x20')](_0x22716b));if(_0x22716b['error']){if(_0x22716b[_0x7a33('0x21')]['code']===0x1f4){logger[_0x7a33('0x21')](_0x7a33('0x1d'),_0x24d282,_0x22716b[_0x7a33('0x21')][_0x7a33('0x22')]);return _0x5a52a0(_0x22716b[_0x7a33('0x21')][_0x7a33('0x22')]);}logger[_0x7a33('0x21')](_0x7a33('0x1d'),_0x24d282,_0x22716b[_0x7a33('0x21')]['message']);return _0x33b7f8(_0x22716b[_0x7a33('0x21')][_0x7a33('0x22')]);}else{logger[_0x7a33('0x1c')](_0x7a33('0x1d'),_0x24d282,_0x7a33('0x1e'));_0x33b7f8(_0x22716b[_0x7a33('0x23')][_0x7a33('0x22')]);}})[_0x7a33('0x24')](function(_0x1912be){logger[_0x7a33('0x21')]('VoiceContext,\x20%s,\x20%s',_0x24d282,_0x1912be);_0x5a52a0(_0x1912be);});});}function respondWithStatusCode(_0x4a9f4d,_0x3e23a9){_0x3e23a9=_0x3e23a9||0xcc;return function(_0x41f5b1){if(_0x41f5b1){return _0x4a9f4d['sendStatus'](_0x3e23a9);}return _0x4a9f4d[_0x7a33('0x25')](_0x3e23a9)['end']();};}function respondWithResult(_0x46074d,_0x1166b8){_0x1166b8=_0x1166b8||0xc8;return function(_0x520534){if(_0x520534){return _0x46074d[_0x7a33('0x25')](_0x1166b8)[_0x7a33('0x26')](_0x520534);}};}function respondWithFilteredResult(_0x20440f,_0xd5d9aa){return function(_0x539944){if(_0x539944){var _0x5c12c0=typeof _0xd5d9aa[_0x7a33('0x27')]===_0x7a33('0x28')&&typeof _0xd5d9aa[_0x7a33('0x29')]===_0x7a33('0x28');var _0x3c943a=_0x539944[_0x7a33('0x2a')];var _0x107440=_0x5c12c0?0x0:_0xd5d9aa[_0x7a33('0x27')];var _0x3bd18a=_0x5c12c0?_0x539944[_0x7a33('0x2a')]:_0xd5d9aa['offset']+_0xd5d9aa[_0x7a33('0x29')];var _0x230521;if(_0x3bd18a>=_0x3c943a){_0x3bd18a=_0x3c943a;_0x230521=0xc8;}else{_0x230521=0xce;}_0x20440f[_0x7a33('0x25')](_0x230521);return _0x20440f['set'](_0x7a33('0x2b'),_0x107440+'-'+_0x3bd18a+'/'+_0x3c943a)[_0x7a33('0x26')](_0x539944);}return null;};}function patchUpdates(_0x17d746){return function(_0x598977){try{jsonpatch[_0x7a33('0x2c')](_0x598977,_0x17d746,!![]);}catch(_0x377783){return BPromise[_0x7a33('0x2d')](_0x377783);}return _0x598977[_0x7a33('0x2e')]();};}function saveUpdates(_0x5984d,_0x584371){return function(_0x278735){if(_0x278735){return _0x278735['update'](_0x5984d)[_0x7a33('0x1b')](function(_0x3d1fd5){return _0x3d1fd5;});}return null;};}function removeEntity(_0x6cc7cc,_0x5a57e6){return function(_0x3ffdf1){if(_0x3ffdf1){return _0x3ffdf1[_0x7a33('0x2f')]()[_0x7a33('0x1b')](function(){var _0x19a495=_0x3ffdf1[_0x7a33('0x30')]({'plain':!![]});var _0x5a25e1=_0x7a33('0x31');return db['UserProfileResource'][_0x7a33('0x2f')]({'where':{'type':_0x5a25e1,'resourceId':_0x19a495['id']}})[_0x7a33('0x1b')](function(){return _0x3ffdf1;});})['then'](function(){_0x6cc7cc[_0x7a33('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f3eb8,_0xaab2ab){return function(_0x38f179){if(!_0x38f179){_0x3f3eb8[_0x7a33('0x32')](0x194);}return _0x38f179;};}function handleError(_0x4cc03c,_0x460646){_0x460646=_0x460646||0x1f4;return function(_0x493a28){logger[_0x7a33('0x21')](_0x493a28[_0x7a33('0x33')]);if(_0x493a28[_0x7a33('0x34')]){delete _0x493a28[_0x7a33('0x34')];}_0x4cc03c[_0x7a33('0x25')](_0x460646)[_0x7a33('0x35')](_0x493a28);};}exports['index']=function(_0x5c7666,_0x59882a){var _0x58dbef={},_0x245c95={},_0x51b442={'count':0x0,'rows':[]};var _0x3cb1a2=_['map'](db[_0x7a33('0x36')][_0x7a33('0x37')],function(_0x5014fa){return{'name':_0x5014fa[_0x7a33('0x38')],'type':_0x5014fa['type'][_0x7a33('0x39')]};});_0x245c95['model']=_[_0x7a33('0x3a')](_0x3cb1a2,_0x7a33('0x34'));_0x245c95['query']=_[_0x7a33('0x3b')](_0x5c7666['query']);_0x245c95[_0x7a33('0x3c')]=_[_0x7a33('0x3d')](_0x245c95['model'],_0x245c95[_0x7a33('0x3e')]);_0x58dbef[_0x7a33('0x3f')]=_['intersection'](_0x245c95['model'],qs[_0x7a33('0x40')](_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x40')]));_0x58dbef[_0x7a33('0x3f')]=_0x58dbef[_0x7a33('0x3f')]['length']?_0x58dbef[_0x7a33('0x3f')]:_0x245c95[_0x7a33('0x41')];if(!_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x42')](_0x7a33('0x43'))){_0x58dbef[_0x7a33('0x29')]=qs[_0x7a33('0x29')](_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x29')]);_0x58dbef['offset']=qs[_0x7a33('0x27')](_0x5c7666['query'][_0x7a33('0x27')]);}_0x58dbef['order']=qs[_0x7a33('0x44')](_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x44')]);_0x58dbef[_0x7a33('0x45')]=qs[_0x7a33('0x3c')](_[_0x7a33('0x46')](_0x5c7666[_0x7a33('0x3e')],_0x245c95[_0x7a33('0x3c')]),_0x3cb1a2);if(_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x47')]){_0x58dbef[_0x7a33('0x45')]=_['merge'](_0x58dbef[_0x7a33('0x45')],{'$or':_[_0x7a33('0x3a')](_0x3cb1a2,function(_0x2550dd){if(_0x2550dd[_0x7a33('0x48')]!==_0x7a33('0x49')){var _0x2127e9={};_0x2127e9[_0x2550dd[_0x7a33('0x34')]]={'$like':'%'+_0x5c7666[_0x7a33('0x3e')][_0x7a33('0x47')]+'%'};return _0x2127e9;}})});}_0x58dbef=_[_0x7a33('0x4a')]({},_0x58dbef,_0x5c7666[_0x7a33('0x4b')]);var _0x325173={'where':_0x58dbef['where']};return db[_0x7a33('0x36')]['count'](_0x325173)['then'](function(_0xd908d4){_0x51b442[_0x7a33('0x2a')]=_0xd908d4;if(_0x5c7666['query'][_0x7a33('0x4c')]){_0x58dbef[_0x7a33('0x4d')]=[{'all':!![]}];}return db[_0x7a33('0x36')][_0x7a33('0x4e')](_0x58dbef);})[_0x7a33('0x1b')](function(_0x4eeb2c){_0x51b442[_0x7a33('0x4f')]=_0x4eeb2c;return _0x51b442;})[_0x7a33('0x1b')](respondWithFilteredResult(_0x59882a,_0x58dbef))['catch'](handleError(_0x59882a,null));};exports[_0x7a33('0x50')]=function(_0xbd6740,_0x2f8efa){var _0xd41c9d={'raw':![],'where':{'id':_0xbd6740[_0x7a33('0x51')]['id']}},_0x480f4d={};_0x480f4d[_0x7a33('0x41')]=_[_0x7a33('0x3b')](db[_0x7a33('0x36')][_0x7a33('0x37')]);_0x480f4d[_0x7a33('0x3e')]=_[_0x7a33('0x3b')](_0xbd6740[_0x7a33('0x3e')]);_0x480f4d['filters']=_['intersection'](_0x480f4d[_0x7a33('0x41')],_0x480f4d[_0x7a33('0x3e')]);_0xd41c9d[_0x7a33('0x3f')]=_[_0x7a33('0x3d')](_0x480f4d[_0x7a33('0x41')],qs['fields'](_0xbd6740[_0x7a33('0x3e')]['fields']));_0xd41c9d[_0x7a33('0x3f')]=_0xd41c9d['attributes'][_0x7a33('0x52')]?_0xd41c9d[_0x7a33('0x3f')]:_0x480f4d[_0x7a33('0x41')];if(_0xbd6740[_0x7a33('0x3e')][_0x7a33('0x4c')]){_0xd41c9d[_0x7a33('0x4d')]=[{'all':!![]}];}_0xd41c9d=_[_0x7a33('0x4a')]({},_0xd41c9d,_0xbd6740[_0x7a33('0x4b')]);return db[_0x7a33('0x36')]['find'](_0xd41c9d)[_0x7a33('0x1b')](handleEntityNotFound(_0x2f8efa,null))[_0x7a33('0x1b')](respondWithResult(_0x2f8efa,null))[_0x7a33('0x24')](handleError(_0x2f8efa,null));};exports[_0x7a33('0x53')]=function(_0x2f8d01,_0x33a089,_0x29d2a8){var _0x3f9c9b;return db[_0x7a33('0x36')][_0x7a33('0x53')](_0x2f8d01[_0x7a33('0x54')],{'raw':!![]})['then'](function(_0x205ed6){_0x3f9c9b=_0x205ed6;return db[_0x7a33('0x36')][_0x7a33('0x4e')]({'raw':!![]});})[_0x7a33('0x1b')](function(_0x2907c3){var _0x366d4f=fs[_0x7a33('0x55')](path[_0x7a33('0x56')](config[_0x7a33('0x57')],_0x7a33('0x58')),_0x7a33('0x59'));var _0x27d942=ejs[_0x7a33('0x5a')](_0x366d4f,{'contexts':_0x2907c3||[]});fs['writeFileSync'](_0x7a33('0x5b'),_0x27d942);})[_0x7a33('0x1b')](function(){return respondWithRpcPromise('Reload',_0x7a33('0x53'),{'module':_0x7a33('0x5c')});})[_0x7a33('0x1b')](function(){var _0x3c30f2=_0x2f8d01[_0x7a33('0x5d')]['get']({'plain':!![]});if(!_0x3c30f2)throw new Error(_0x7a33('0x5e'));if(_0x3c30f2[_0x7a33('0x5f')]==='user'){var _0x4996c6=_0x3f9c9b[_0x7a33('0x30')]({'plain':!![]});return db[_0x7a33('0x60')][_0x7a33('0x61')]({'where':{'name':_0x7a33('0x31'),'userProfileId':_0x3c30f2['userProfileId']},'raw':!![]})[_0x7a33('0x1b')](function(_0x38f8d6){if(_0x38f8d6&&_0x38f8d6[_0x7a33('0x62')]===0x0){return db[_0x7a33('0x63')][_0x7a33('0x53')]({'name':_0x4996c6[_0x7a33('0x34')],'resourceId':_0x4996c6['id'],'type':_0x38f8d6[_0x7a33('0x34')],'sectionId':_0x38f8d6['id']},{})[_0x7a33('0x1b')](function(){return _0x3f9c9b;});}else{return _0x3f9c9b;}})[_0x7a33('0x24')](function(_0x4c40d0){logger[_0x7a33('0x21')](_0x7a33('0x64'),_0x4c40d0);throw _0x4c40d0;});}return _0x3f9c9b;})[_0x7a33('0x1b')](respondWithResult(_0x33a089,0xc9))[_0x7a33('0x24')](handleError(_0x33a089,null));};exports['update']=function(_0x10f657,_0x3ce809,_0x35d9ef){var _0x1f7c17;return db[_0x7a33('0x36')][_0x7a33('0x61')]({'where':{'id':_0x10f657[_0x7a33('0x51')]['id']}})[_0x7a33('0x1b')](handleEntityNotFound(_0x3ce809,null))['then'](saveUpdates(_0x10f657['body'],null))[_0x7a33('0x1b')](function(_0x4c1b81){if(_0x4c1b81){_0x1f7c17=_0x4c1b81;return db[_0x7a33('0x36')]['findAll']({'raw':!![]});}})[_0x7a33('0x1b')](function(_0x18b58a){var _0x363c61=fs['readFileSync'](path[_0x7a33('0x56')](config['root'],_0x7a33('0x58')),_0x7a33('0x59'));var _0x592147=ejs[_0x7a33('0x5a')](_0x363c61,{'contexts':_0x18b58a||[]});fs['writeFileSync'](_0x7a33('0x5b'),_0x592147);})[_0x7a33('0x1b')](function(){return respondWithRpcPromise(_0x7a33('0x65'),_0x7a33('0x66'),{'module':_0x7a33('0x5c')});})[_0x7a33('0x1b')](function(){return _0x1f7c17;})[_0x7a33('0x1b')](respondWithResult(_0x3ce809,null))['catch'](handleError(_0x3ce809,null));};exports['destroy']=function(_0x32f9ad,_0x2fcb73,_0x57c9a5){var _0x4f0264;return db['VoiceContext']['find']({'where':{'id':_0x32f9ad[_0x7a33('0x51')]['id']}})[_0x7a33('0x1b')](handleEntityNotFound(_0x2fcb73,null))[_0x7a33('0x1b')](removeEntity(_0x2fcb73,null))['then'](function(){return db[_0x7a33('0x36')][_0x7a33('0x4e')]({'raw':!![]});})['then'](function(_0x5b5b97){var _0x315fb1=fs['readFileSync'](path[_0x7a33('0x56')](config[_0x7a33('0x57')],_0x7a33('0x58')),_0x7a33('0x59'));var _0x462d0c=ejs[_0x7a33('0x5a')](_0x315fb1,{'contexts':_0x5b5b97});fs[_0x7a33('0x67')](_0x7a33('0x5b'),_0x462d0c);return respondWithRpcPromise(_0x7a33('0x65'),_0x7a33('0x2f'),{'module':'chan_sip.so'});})[_0x7a33('0x24')](handleError(_0x2fcb73,null));};
\ No newline at end of file
index cff1572..7b8b2b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd8=['bluebird','request-promise','./voiceContext.attributes','exports','define','VoiceContext','lodash','util','api','moment'];(function(_0x3a54b9,_0x1ad93f){var _0x1b2923=function(_0x5669d3){while(--_0x5669d3){_0x3a54b9['push'](_0x3a54b9['shift']());}};_0x1b2923(++_0x1ad93f);}(_0x1dd8,0x13c));var _0x81dd=function(_0x4fdb0a,_0x47ddfd){_0x4fdb0a=_0x4fdb0a-0x0;var _0x57e3a2=_0x1dd8[_0x4fdb0a];return _0x57e3a2;};'use strict';var _=require(_0x81dd('0x0'));var util=require(_0x81dd('0x1'));var logger=require('../../config/logger')(_0x81dd('0x2'));var moment=require(_0x81dd('0x3'));var BPromise=require(_0x81dd('0x4'));var rp=require(_0x81dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x81dd('0x6'));module[_0x81dd('0x7')]=function(_0x2c2387,_0x44aa0f){return _0x2c2387[_0x81dd('0x8')](_0x81dd('0x9'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf03=['./voiceContext.attributes','exports','define','voice_contexts','util','api','moment','request-promise'];(function(_0x340d94,_0x10c6ec){var _0x888392=function(_0x329d7c){while(--_0x329d7c){_0x340d94['push'](_0x340d94['shift']());}};_0x888392(++_0x10c6ec);}(_0xbf03,0x184));var _0x3bf0=function(_0x3dec02,_0x5ab2ea){_0x3dec02=_0x3dec02-0x0;var _0x28b524=_0xbf03[_0x3dec02];return _0x28b524;};'use strict';var _=require('lodash');var util=require(_0x3bf0('0x0'));var logger=require('../../config/logger')(_0x3bf0('0x1'));var moment=require(_0x3bf0('0x2'));var BPromise=require('bluebird');var rp=require(_0x3bf0('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3bf0('0x4'));module[_0x3bf0('0x5')]=function(_0x5128b7,_0x55c611){return _0x5128b7[_0x3bf0('0x6')]('VoiceContext',attributes,{'tableName':_0x3bf0('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e849ff..26c34d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7633=['request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','http'];(function(_0x2a55f8,_0x540ac4){var _0x245efd=function(_0x4dbc19){while(--_0x4dbc19){_0x2a55f8['push'](_0x2a55f8['shift']());}};_0x245efd(++_0x540ac4);}(_0x7633,0x1c4));var _0x3763=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x7633[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0x3763('0x0'));var util=require(_0x3763('0x1'));var moment=require(_0x3763('0x2'));var BPromise=require(_0x3763('0x3'));var rs=require(_0x3763('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3763('0x5'))['db'];var utils=require(_0x3763('0x6'));var logger=require('../../config/logger')(_0x3763('0x7'));var config=require(_0x3763('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3763('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8a2d3e,_0x28f9b0,_0x335382){return new BPromise(function(_0x50b634,_0x550b39){return client[_0x3763('0xa')](_0x8a2d3e,_0x335382)[_0x3763('0xb')](function(_0x4aa292){logger[_0x3763('0xc')](_0x3763('0xd'),_0x28f9b0,_0x3763('0xe'));logger[_0x3763('0xf')](_0x3763('0x10'),_0x28f9b0,_0x3763('0xe'),JSON[_0x3763('0x11')](_0x4aa292));if(_0x4aa292[_0x3763('0x12')]){if(_0x4aa292['error'][_0x3763('0x13')]===0x1f4){logger[_0x3763('0x12')](_0x3763('0xd'),_0x28f9b0,_0x4aa292['error']['message']);return _0x550b39(_0x4aa292[_0x3763('0x12')]['message']);}logger[_0x3763('0x12')](_0x3763('0xd'),_0x28f9b0,_0x4aa292[_0x3763('0x12')][_0x3763('0x14')]);return _0x50b634(_0x4aa292[_0x3763('0x12')][_0x3763('0x14')]);}else{logger[_0x3763('0xc')]('VoiceContext,\x20%s,\x20%s',_0x28f9b0,_0x3763('0xe'));_0x50b634(_0x4aa292[_0x3763('0x15')][_0x3763('0x14')]);}})['catch'](function(_0x4dde36){logger['error'](_0x3763('0xd'),_0x28f9b0,_0x4dde36);_0x550b39(_0x4dde36);});});}
\ No newline at end of file
+var _0x4f2f=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','moment','bluebird','ioredis'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0x4f2f,0x1cb));var _0xf4f2=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0x4f2f[_0x1b7368];return _0x25d54c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf4f2('0x0'));var BPromise=require(_0xf4f2('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4f2('0x2'));var db=require(_0xf4f2('0x3'))['db'];var utils=require(_0xf4f2('0x4'));var logger=require(_0xf4f2('0x5'))(_0xf4f2('0x6'));var config=require(_0xf4f2('0x7'));var jayson=require(_0xf4f2('0x8'));var client=jayson[_0xf4f2('0x9')][_0xf4f2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cc7c0,_0x478723,_0x5d14a9){return new BPromise(function(_0x7c1660,_0xe39952){return client['request'](_0x5cc7c0,_0x5d14a9)[_0xf4f2('0xb')](function(_0x53dc4e){logger[_0xf4f2('0xc')](_0xf4f2('0xd'),_0x478723,'request\x20sent');logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x478723,'request\x20sent',JSON[_0xf4f2('0xe')](_0x53dc4e));if(_0x53dc4e[_0xf4f2('0xf')]){if(_0x53dc4e['error'][_0xf4f2('0x10')]===0x1f4){logger[_0xf4f2('0xf')]('VoiceContext,\x20%s,\x20%s',_0x478723,_0x53dc4e[_0xf4f2('0xf')]['message']);return _0xe39952(_0x53dc4e[_0xf4f2('0xf')][_0xf4f2('0x11')]);}logger[_0xf4f2('0xf')]('VoiceContext,\x20%s,\x20%s',_0x478723,_0x53dc4e[_0xf4f2('0xf')][_0xf4f2('0x11')]);return _0x7c1660(_0x53dc4e[_0xf4f2('0xf')][_0xf4f2('0x11')]);}else{logger['info'](_0xf4f2('0xd'),_0x478723,_0xf4f2('0x12'));_0x7c1660(_0x53dc4e[_0xf4f2('0x13')][_0xf4f2('0x11')]);}})[_0xf4f2('0x14')](function(_0x545b43){logger[_0xf4f2('0xf')]('VoiceContext,\x20%s,\x20%s',_0x478723,_0x545b43);_0xe39952(_0x545b43);});});}
\ No newline at end of file
index 30a8304..f509c0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79c6=['../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0x79c6,0x158));var _0x679c=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x79c6[_0x52684f];return _0x4a55f0;};'use strict';var multer=require(_0x679c('0x0'));var util=require(_0x679c('0x1'));var path=require(_0x679c('0x2'));var timeout=require('connect-timeout');var express=require(_0x679c('0x3'));var router=express[_0x679c('0x4')]();var fs_extra=require(_0x679c('0x5'));var auth=require(_0x679c('0x6'));var interaction=require(_0x679c('0x7'));var config=require(_0x679c('0x8'));var controller=require(_0x679c('0x9'));router[_0x679c('0xa')]('/',auth[_0x679c('0xb')](),controller[_0x679c('0xc')]);router[_0x679c('0xa')](_0x679c('0xd'),auth[_0x679c('0xb')](),controller[_0x679c('0xe')]);router[_0x679c('0xa')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller['show']);router[_0x679c('0x10')]('/',auth['isAuthenticated'](),controller[_0x679c('0x11')]);router[_0x679c('0x12')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller[_0x679c('0x13')]);router[_0x679c('0x14')](_0x679c('0xf'),auth[_0x679c('0xb')](),controller[_0x679c('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xb541=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','describe','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra'];(function(_0x14cb58,_0x214d62){var _0x5f097e=function(_0x5b8666){while(--_0x5b8666){_0x14cb58['push'](_0x14cb58['shift']());}};_0x5f097e(++_0x214d62);}(_0xb541,0x19d));var _0x1b54=function(_0x25ea2f,_0x3175eb){_0x25ea2f=_0x25ea2f-0x0;var _0x47d014=_0xb541[_0x25ea2f];return _0x47d014;};'use strict';var multer=require(_0x1b54('0x0'));var util=require(_0x1b54('0x1'));var path=require(_0x1b54('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1b54('0x3')]();var fs_extra=require(_0x1b54('0x4'));var auth=require(_0x1b54('0x5'));var interaction=require(_0x1b54('0x6'));var config=require(_0x1b54('0x7'));var controller=require(_0x1b54('0x8'));router['get']('/',auth[_0x1b54('0x9')](),controller[_0x1b54('0xa')]);router['get']('/describe',auth[_0x1b54('0x9')](),controller[_0x1b54('0xb')]);router[_0x1b54('0xc')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller[_0x1b54('0xe')]);router[_0x1b54('0xf')]('/',auth['isAuthenticated'](),controller[_0x1b54('0x10')]);router[_0x1b54('0x11')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller[_0x1b54('0x12')]);router[_0x1b54('0x13')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller[_0x1b54('0x14')]);module[_0x1b54('0x15')]=router;
\ No newline at end of file
index b76601f..c0fb670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['DATE','called,connect,complete','sequelize','exports','STRING','INTEGER'];(function(_0x179b74,_0x5dc97d){var _0x268f76=function(_0x19c8c2){while(--_0x19c8c2){_0x179b74['push'](_0x179b74['shift']());}};_0x268f76(++_0x5dc97d);}(_0xe14d,0x1ee));var _0xde14=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xe14d[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require(_0xde14('0x0'));module[_0xde14('0x1')]={'privilege':{'type':Sequelize[_0xde14('0x2')]},'channel':{'type':Sequelize[_0xde14('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xde14('0x2')]},'calleridnum':{'type':Sequelize[_0xde14('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xde14('0x2')]},'connectedlinename':{'type':Sequelize[_0xde14('0x2')]},'language':{'type':Sequelize[_0xde14('0x2')]},'accountcode':{'type':Sequelize[_0xde14('0x2')]},'context':{'type':Sequelize[_0xde14('0x2')]},'exten':{'type':Sequelize[_0xde14('0x2')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xde14('0x2')]},'destchannel':{'type':Sequelize[_0xde14('0x2')]},'destchannelstate':{'type':Sequelize[_0xde14('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xde14('0x2')]},'destcalleridnum':{'type':Sequelize[_0xde14('0x2')]},'destcalleridname':{'type':Sequelize[_0xde14('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xde14('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xde14('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xde14('0x2')]},'destcontext':{'type':Sequelize[_0xde14('0x2')]},'destexten':{'type':Sequelize[_0xde14('0x2')]},'destpriority':{'type':Sequelize[_0xde14('0x3')]},'destuniqueid':{'type':Sequelize[_0xde14('0x2')]},'destlinkedid':{'type':Sequelize[_0xde14('0x2')]},'dialstring':{'type':Sequelize[_0xde14('0x2')]},'dialstatus':{'type':Sequelize[_0xde14('0x2')]},'starttime':{'type':Sequelize[_0xde14('0x4')]},'answertime':{'type':Sequelize[_0xde14('0x4')]},'endtime':{'type':Sequelize[_0xde14('0x4')]},'lastevent':{'type':Sequelize[_0xde14('0x2')],'comment':_0xde14('0x5')},'routeId':{'type':Sequelize[_0xde14('0x3')]},'duration':{'type':Sequelize[_0xde14('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x55ca=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x209583,_0x278d13){var _0x56a30c=function(_0x1997a4){while(--_0x1997a4){_0x209583['push'](_0x209583['shift']());}};_0x56a30c(++_0x278d13);}(_0x55ca,0x126));var _0xa55c=function(_0x4a095e,_0x381cd5){_0x4a095e=_0x4a095e-0x0;var _0x10ef73=_0x55ca[_0x4a095e];return _0x10ef73;};'use strict';var Sequelize=require(_0xa55c('0x0'));module[_0xa55c('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'calleridnum':{'type':Sequelize[_0xa55c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xa55c('0x2')]},'connectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'language':{'type':Sequelize[_0xa55c('0x2')]},'accountcode':{'type':Sequelize[_0xa55c('0x2')]},'context':{'type':Sequelize[_0xa55c('0x2')]},'exten':{'type':Sequelize[_0xa55c('0x2')]},'priority':{'type':Sequelize[_0xa55c('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa55c('0x2')]},'destchannel':{'type':Sequelize[_0xa55c('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridnum':{'type':Sequelize[_0xa55c('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xa55c('0x2')]},'destlanguage':{'type':Sequelize[_0xa55c('0x2')]},'destaccountcode':{'type':Sequelize[_0xa55c('0x2')]},'destcontext':{'type':Sequelize[_0xa55c('0x2')]},'destexten':{'type':Sequelize[_0xa55c('0x2')]},'destpriority':{'type':Sequelize[_0xa55c('0x3')]},'destuniqueid':{'type':Sequelize[_0xa55c('0x2')]},'destlinkedid':{'type':Sequelize[_0xa55c('0x2')]},'dialstring':{'type':Sequelize[_0xa55c('0x2')]},'dialstatus':{'type':Sequelize[_0xa55c('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xa55c('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xa55c('0x3')]},'holdtime':{'type':Sequelize[_0xa55c('0x3')]},'billableseconds':{'type':Sequelize[_0xa55c('0x3')]}};
\ No newline at end of file
index d7b9195..8b8cc13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcce=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','update','then','destroy','error','stack','name','index','map','VoiceDialReport','rawAttributes','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x10998a,_0x4d820d){var _0x461f05=function(_0x3a079c){while(--_0x3a079c){_0x10998a['push'](_0x10998a['shift']());}};_0x461f05(++_0x4d820d);}(_0xdcce,0x14a));var _0xedcc=function(_0x232820,_0x6c6d30){_0x232820=_0x232820-0x0;var _0x2b0c0f=_0xdcce[_0x232820];return _0x2b0c0f;};'use strict';var emlformat=require(_0xedcc('0x0'));var rimraf=require(_0xedcc('0x1'));var zipdir=require(_0xedcc('0x2'));var jsonpatch=require(_0xedcc('0x3'));var rp=require(_0xedcc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xedcc('0x5'));var util=require(_0xedcc('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xedcc('0x7'));var ejs=require(_0xedcc('0x8'));var fs=require('fs');var fs_extra=require(_0xedcc('0x9'));var _=require(_0xedcc('0xa'));var squel=require(_0xedcc('0xb'));var crypto=require(_0xedcc('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xedcc('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xedcc('0xd'));var authService=require(_0xedcc('0xe'));var qs=require(_0xedcc('0xf'));var as=require(_0xedcc('0x10'));var hardwareService=require(_0xedcc('0x11'));var logger=require(_0xedcc('0x12'))(_0xedcc('0x13'));var utils=require('../../config/utils');var config=require(_0xedcc('0x14'));var licenseUtil=require(_0xedcc('0x15'));var db=require(_0xedcc('0x16'))['db'];function respondWithStatusCode(_0x1a3926,_0x484f8e){_0x484f8e=_0x484f8e||0xcc;return function(_0xeb4690){if(_0xeb4690){return _0x1a3926[_0xedcc('0x17')](_0x484f8e);}return _0x1a3926[_0xedcc('0x18')](_0x484f8e)[_0xedcc('0x19')]();};}function respondWithResult(_0x3a2d42,_0xda1001){_0xda1001=_0xda1001||0xc8;return function(_0x46ed3d){if(_0x46ed3d){return _0x3a2d42[_0xedcc('0x18')](_0xda1001)[_0xedcc('0x1a')](_0x46ed3d);}};}function respondWithFilteredResult(_0x3b0f62,_0x4a2fae){return function(_0x13a55d){if(_0x13a55d){var _0x151d9c=typeof _0x4a2fae[_0xedcc('0x1b')]===_0xedcc('0x1c')&&typeof _0x4a2fae[_0xedcc('0x1d')]===_0xedcc('0x1c');var _0x46eec4=_0x13a55d[_0xedcc('0x1e')];var _0x3eea40=_0x151d9c?0x0:_0x4a2fae['offset'];var _0x59e424=_0x151d9c?_0x13a55d[_0xedcc('0x1e')]:_0x4a2fae['offset']+_0x4a2fae[_0xedcc('0x1d')];var _0x35ff1d;if(_0x59e424>=_0x46eec4){_0x59e424=_0x46eec4;_0x35ff1d=0xc8;}else{_0x35ff1d=0xce;}_0x3b0f62[_0xedcc('0x18')](_0x35ff1d);return _0x3b0f62[_0xedcc('0x1f')]('Content-Range',_0x3eea40+'-'+_0x59e424+'/'+_0x46eec4)[_0xedcc('0x1a')](_0x13a55d);}return null;};}function patchUpdates(_0x55e0da){return function(_0x2bb459){try{jsonpatch['apply'](_0x2bb459,_0x55e0da,!![]);}catch(_0x4132bb){return BPromise['reject'](_0x4132bb);}return _0x2bb459['save']();};}function saveUpdates(_0x1c098e,_0x23f0e9){return function(_0x4b8d67){if(_0x4b8d67){return _0x4b8d67[_0xedcc('0x20')](_0x1c098e)[_0xedcc('0x21')](function(_0x5b26f5){return _0x5b26f5;});}return null;};}function removeEntity(_0x2b84a1,_0x14cd5e){return function(_0x21a48a){if(_0x21a48a){return _0x21a48a[_0xedcc('0x22')]()['then'](function(){_0x2b84a1[_0xedcc('0x18')](0xcc)[_0xedcc('0x19')]();});}};}function handleEntityNotFound(_0x59d0a5,_0x588314){return function(_0x3c7c7c){if(!_0x3c7c7c){_0x59d0a5[_0xedcc('0x17')](0x194);}return _0x3c7c7c;};}function handleError(_0x5e4d26,_0x6ca473){_0x6ca473=_0x6ca473||0x1f4;return function(_0x5ebaa9){logger[_0xedcc('0x23')](_0x5ebaa9[_0xedcc('0x24')]);if(_0x5ebaa9['name']){delete _0x5ebaa9[_0xedcc('0x25')];}_0x5e4d26['status'](_0x6ca473)['send'](_0x5ebaa9);};}exports[_0xedcc('0x26')]=function(_0x13868d,_0x3d0a39){var _0x596e28={},_0x3a7699={},_0x58ab32={'count':0x0,'rows':[]};var _0x416d99=_[_0xedcc('0x27')](db[_0xedcc('0x28')][_0xedcc('0x29')],function(_0x50bc40){return{'name':_0x50bc40['fieldName'],'type':_0x50bc40['type']['key']};});_0x3a7699[_0xedcc('0x2a')]=_[_0xedcc('0x27')](_0x416d99,_0xedcc('0x25'));_0x3a7699[_0xedcc('0x2b')]=_['keys'](_0x13868d[_0xedcc('0x2b')]);_0x3a7699[_0xedcc('0x2c')]=_[_0xedcc('0x2d')](_0x3a7699[_0xedcc('0x2a')],_0x3a7699[_0xedcc('0x2b')]);_0x596e28[_0xedcc('0x2e')]=_[_0xedcc('0x2d')](_0x3a7699['model'],qs[_0xedcc('0x2f')](_0x13868d[_0xedcc('0x2b')]['fields']));_0x596e28[_0xedcc('0x2e')]=_0x596e28[_0xedcc('0x2e')][_0xedcc('0x30')]?_0x596e28['attributes']:_0x3a7699[_0xedcc('0x2a')];if(!_0x13868d[_0xedcc('0x2b')][_0xedcc('0x31')]('nolimit')){_0x596e28['limit']=qs[_0xedcc('0x1d')](_0x13868d[_0xedcc('0x2b')][_0xedcc('0x1d')]);_0x596e28[_0xedcc('0x1b')]=qs[_0xedcc('0x1b')](_0x13868d['query'][_0xedcc('0x1b')]);}_0x596e28[_0xedcc('0x32')]=qs[_0xedcc('0x33')](_0x13868d['query'][_0xedcc('0x33')]);_0x596e28[_0xedcc('0x34')]=qs[_0xedcc('0x2c')](_[_0xedcc('0x35')](_0x13868d['query'],_0x3a7699[_0xedcc('0x2c')]),_0x416d99);if(_0x13868d[_0xedcc('0x2b')]['filter']){_0x596e28[_0xedcc('0x34')]=_[_0xedcc('0x36')](_0x596e28[_0xedcc('0x34')],{'$or':_[_0xedcc('0x27')](_0x416d99,function(_0x2bd2b4){if(_0x2bd2b4[_0xedcc('0x37')]!==_0xedcc('0x38')){var _0x3abae6={};_0x3abae6[_0x2bd2b4[_0xedcc('0x25')]]={'$like':'%'+_0x13868d[_0xedcc('0x2b')][_0xedcc('0x39')]+'%'};return _0x3abae6;}})});}_0x596e28=_[_0xedcc('0x36')]({},_0x596e28,_0x13868d[_0xedcc('0x3a')]);var _0x39f903={'where':_0x596e28[_0xedcc('0x34')]};return db[_0xedcc('0x28')][_0xedcc('0x1e')](_0x39f903)[_0xedcc('0x21')](function(_0x286162){_0x58ab32[_0xedcc('0x1e')]=_0x286162;if(_0x13868d[_0xedcc('0x2b')][_0xedcc('0x3b')]){_0x596e28['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0xedcc('0x3c')](_0x596e28);})[_0xedcc('0x21')](function(_0x33c280){_0x58ab32[_0xedcc('0x3d')]=_0x33c280;return _0x58ab32;})[_0xedcc('0x21')](respondWithFilteredResult(_0x3d0a39,_0x596e28))[_0xedcc('0x3e')](handleError(_0x3d0a39,null));};exports['show']=function(_0x37cd73,_0x5c5c83){var _0x54d965={'raw':!![],'where':{'id':_0x37cd73[_0xedcc('0x3f')]['id']}},_0x5df754={};_0x5df754[_0xedcc('0x2a')]=_['keys'](db[_0xedcc('0x28')][_0xedcc('0x29')]);_0x5df754[_0xedcc('0x2b')]=_[_0xedcc('0x40')](_0x37cd73[_0xedcc('0x2b')]);_0x5df754[_0xedcc('0x2c')]=_[_0xedcc('0x2d')](_0x5df754[_0xedcc('0x2a')],_0x5df754['query']);_0x54d965[_0xedcc('0x2e')]=_['intersection'](_0x5df754['model'],qs[_0xedcc('0x2f')](_0x37cd73[_0xedcc('0x2b')][_0xedcc('0x2f')]));_0x54d965['attributes']=_0x54d965[_0xedcc('0x2e')][_0xedcc('0x30')]?_0x54d965['attributes']:_0x5df754[_0xedcc('0x2a')];if(_0x37cd73[_0xedcc('0x2b')][_0xedcc('0x3b')]){_0x54d965[_0xedcc('0x41')]=[{'all':!![]}];}_0x54d965=_[_0xedcc('0x36')]({},_0x54d965,_0x37cd73[_0xedcc('0x3a')]);return db[_0xedcc('0x28')][_0xedcc('0x42')](_0x54d965)['then'](handleEntityNotFound(_0x5c5c83,null))[_0xedcc('0x21')](respondWithResult(_0x5c5c83,null))[_0xedcc('0x3e')](handleError(_0x5c5c83,null));};exports[_0xedcc('0x43')]=function(_0x5a48ba,_0x1f69d3){return db[_0xedcc('0x28')][_0xedcc('0x43')](_0x5a48ba[_0xedcc('0x44')],{})[_0xedcc('0x21')](respondWithResult(_0x1f69d3,0xc9))[_0xedcc('0x3e')](handleError(_0x1f69d3,null));};exports['update']=function(_0x15dce6,_0x46aa7c){if(_0x15dce6[_0xedcc('0x44')]['id']){delete _0x15dce6[_0xedcc('0x44')]['id'];}return db['VoiceDialReport'][_0xedcc('0x42')]({'where':{'id':_0x15dce6[_0xedcc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x46aa7c,null))[_0xedcc('0x21')](saveUpdates(_0x15dce6[_0xedcc('0x44')],null))['then'](respondWithResult(_0x46aa7c,null))[_0xedcc('0x3e')](handleError(_0x46aa7c,null));};exports[_0xedcc('0x22')]=function(_0x48fd67,_0xf20f2a){return db[_0xedcc('0x28')]['find']({'where':{'id':_0x48fd67[_0xedcc('0x3f')]['id']}})[_0xedcc('0x21')](handleEntityNotFound(_0xf20f2a,null))['then'](removeEntity(_0xf20f2a,null))[_0xedcc('0x3e')](handleError(_0xf20f2a,null));};exports[_0xedcc('0x45')]=function(_0x4b1666,_0x373c37){return db['VoiceDialReport']['describe']()[_0xedcc('0x21')](respondWithResult(_0x373c37,null))[_0xedcc('0x3e')](handleError(_0x373c37,null));};
\ No newline at end of file
+var _0xace8=['order','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','keys','rawAttributes','fields','length','include','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','key','query','filters','intersection','model','attributes','hasOwnProperty','nolimit'];(function(_0x17bdee,_0x3f7571){var _0x309736=function(_0x151634){while(--_0x151634){_0x17bdee['push'](_0x17bdee['shift']());}};_0x309736(++_0x3f7571);}(_0xace8,0x1d7));var _0x8ace=function(_0x49873b,_0x26c041){_0x49873b=_0x49873b-0x0;var _0x4df91d=_0xace8[_0x49873b];return _0x4df91d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ace('0x0'));var zipdir=require(_0x8ace('0x1'));var jsonpatch=require(_0x8ace('0x2'));var rp=require(_0x8ace('0x3'));var moment=require(_0x8ace('0x4'));var BPromise=require(_0x8ace('0x5'));var Mustache=require('mustache');var util=require(_0x8ace('0x6'));var path=require(_0x8ace('0x7'));var sox=require('sox');var csv=require(_0x8ace('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8ace('0x9'));var _=require(_0x8ace('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8ace('0xb'));var deskjs=require(_0x8ace('0xc'));var toCsv=require(_0x8ace('0x8'));var querystring=require(_0x8ace('0xd'));var Papa=require(_0x8ace('0xe'));var Redis=require('ioredis');var authService=require(_0x8ace('0xf'));var qs=require(_0x8ace('0x10'));var as=require(_0x8ace('0x11'));var hardwareService=require(_0x8ace('0x12'));var logger=require('../../config/logger')(_0x8ace('0x13'));var utils=require(_0x8ace('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8ace('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3bd592,_0x2d2ef2){_0x2d2ef2=_0x2d2ef2||0xcc;return function(_0x41c939){if(_0x41c939){return _0x3bd592[_0x8ace('0x16')](_0x2d2ef2);}return _0x3bd592['status'](_0x2d2ef2)['end']();};}function respondWithResult(_0x157243,_0xd42bc6){_0xd42bc6=_0xd42bc6||0xc8;return function(_0x38d8f2){if(_0x38d8f2){return _0x157243[_0x8ace('0x17')](_0xd42bc6)[_0x8ace('0x18')](_0x38d8f2);}};}function respondWithFilteredResult(_0x34bf19,_0x53bfca){return function(_0x2db8b0){if(_0x2db8b0){var _0x3bab93=typeof _0x53bfca[_0x8ace('0x19')]===_0x8ace('0x1a')&&typeof _0x53bfca[_0x8ace('0x1b')]==='undefined';var _0xbcd876=_0x2db8b0[_0x8ace('0x1c')];var _0x42f7d8=_0x3bab93?0x0:_0x53bfca[_0x8ace('0x19')];var _0x4c23cc=_0x3bab93?_0x2db8b0[_0x8ace('0x1c')]:_0x53bfca['offset']+_0x53bfca[_0x8ace('0x1b')];var _0x11f708;if(_0x4c23cc>=_0xbcd876){_0x4c23cc=_0xbcd876;_0x11f708=0xc8;}else{_0x11f708=0xce;}_0x34bf19['status'](_0x11f708);return _0x34bf19[_0x8ace('0x1d')](_0x8ace('0x1e'),_0x42f7d8+'-'+_0x4c23cc+'/'+_0xbcd876)[_0x8ace('0x18')](_0x2db8b0);}return null;};}function patchUpdates(_0x3cb068){return function(_0x3e4e89){try{jsonpatch['apply'](_0x3e4e89,_0x3cb068,!![]);}catch(_0x67228){return BPromise[_0x8ace('0x1f')](_0x67228);}return _0x3e4e89[_0x8ace('0x20')]();};}function saveUpdates(_0x7ef222,_0x53e5ff){return function(_0x5309f0){if(_0x5309f0){return _0x5309f0[_0x8ace('0x21')](_0x7ef222)[_0x8ace('0x22')](function(_0x19eefe){return _0x19eefe;});}return null;};}function removeEntity(_0x1d6ea6,_0x2cb428){return function(_0x11b2e8){if(_0x11b2e8){return _0x11b2e8[_0x8ace('0x23')]()[_0x8ace('0x22')](function(){_0x1d6ea6[_0x8ace('0x17')](0xcc)[_0x8ace('0x24')]();});}};}function handleEntityNotFound(_0x20ec28,_0x5ec8f2){return function(_0x5e1540){if(!_0x5e1540){_0x20ec28['sendStatus'](0x194);}return _0x5e1540;};}function handleError(_0x4fbb7b,_0x588ae5){_0x588ae5=_0x588ae5||0x1f4;return function(_0x33df56){logger[_0x8ace('0x25')](_0x33df56[_0x8ace('0x26')]);if(_0x33df56[_0x8ace('0x27')]){delete _0x33df56[_0x8ace('0x27')];}_0x4fbb7b[_0x8ace('0x17')](_0x588ae5)[_0x8ace('0x28')](_0x33df56);};}exports[_0x8ace('0x29')]=function(_0x26b83f,_0x4cba91){var _0x226c5d={},_0x1b7e34={},_0x46dbf8={'count':0x0,'rows':[]};var _0x278ba4=_[_0x8ace('0x2a')](db[_0x8ace('0x2b')]['rawAttributes'],function(_0x347296){return{'name':_0x347296[_0x8ace('0x2c')],'type':_0x347296[_0x8ace('0x2d')][_0x8ace('0x2e')]};});_0x1b7e34['model']=_['map'](_0x278ba4,'name');_0x1b7e34[_0x8ace('0x2f')]=_['keys'](_0x26b83f['query']);_0x1b7e34[_0x8ace('0x30')]=_[_0x8ace('0x31')](_0x1b7e34[_0x8ace('0x32')],_0x1b7e34[_0x8ace('0x2f')]);_0x226c5d['attributes']=_['intersection'](_0x1b7e34[_0x8ace('0x32')],qs['fields'](_0x26b83f[_0x8ace('0x2f')]['fields']));_0x226c5d['attributes']=_0x226c5d[_0x8ace('0x33')]['length']?_0x226c5d[_0x8ace('0x33')]:_0x1b7e34[_0x8ace('0x32')];if(!_0x26b83f[_0x8ace('0x2f')][_0x8ace('0x34')](_0x8ace('0x35'))){_0x226c5d['limit']=qs['limit'](_0x26b83f['query'][_0x8ace('0x1b')]);_0x226c5d['offset']=qs['offset'](_0x26b83f[_0x8ace('0x2f')][_0x8ace('0x19')]);}_0x226c5d[_0x8ace('0x36')]=qs[_0x8ace('0x37')](_0x26b83f[_0x8ace('0x2f')][_0x8ace('0x37')]);_0x226c5d[_0x8ace('0x38')]=qs['filters'](_['pick'](_0x26b83f['query'],_0x1b7e34[_0x8ace('0x30')]),_0x278ba4);if(_0x26b83f[_0x8ace('0x2f')][_0x8ace('0x39')]){_0x226c5d[_0x8ace('0x38')]=_[_0x8ace('0x3a')](_0x226c5d[_0x8ace('0x38')],{'$or':_['map'](_0x278ba4,function(_0x230284){if(_0x230284['type']!==_0x8ace('0x3b')){var _0x21231d={};_0x21231d[_0x230284[_0x8ace('0x27')]]={'$like':'%'+_0x26b83f[_0x8ace('0x2f')]['filter']+'%'};return _0x21231d;}})});}_0x226c5d=_[_0x8ace('0x3a')]({},_0x226c5d,_0x26b83f[_0x8ace('0x3c')]);var _0x46ae7e={'where':_0x226c5d[_0x8ace('0x38')]};return db[_0x8ace('0x2b')]['count'](_0x46ae7e)[_0x8ace('0x22')](function(_0x2b5f82){_0x46dbf8[_0x8ace('0x1c')]=_0x2b5f82;if(_0x26b83f[_0x8ace('0x2f')][_0x8ace('0x3d')]){_0x226c5d['include']=[{'all':!![]}];}return db[_0x8ace('0x2b')]['findAll'](_0x226c5d);})['then'](function(_0x1a6c72){_0x46dbf8[_0x8ace('0x3e')]=_0x1a6c72;return _0x46dbf8;})[_0x8ace('0x22')](respondWithFilteredResult(_0x4cba91,_0x226c5d))[_0x8ace('0x3f')](handleError(_0x4cba91,null));};exports[_0x8ace('0x40')]=function(_0x50251c,_0x557ffc){var _0x431920={'raw':!![],'where':{'id':_0x50251c['params']['id']}},_0x20b37b={};_0x20b37b[_0x8ace('0x32')]=_[_0x8ace('0x41')](db['VoiceDialReport'][_0x8ace('0x42')]);_0x20b37b['query']=_['keys'](_0x50251c[_0x8ace('0x2f')]);_0x20b37b[_0x8ace('0x30')]=_[_0x8ace('0x31')](_0x20b37b['model'],_0x20b37b[_0x8ace('0x2f')]);_0x431920['attributes']=_[_0x8ace('0x31')](_0x20b37b[_0x8ace('0x32')],qs['fields'](_0x50251c[_0x8ace('0x2f')][_0x8ace('0x43')]));_0x431920['attributes']=_0x431920[_0x8ace('0x33')][_0x8ace('0x44')]?_0x431920[_0x8ace('0x33')]:_0x20b37b['model'];if(_0x50251c[_0x8ace('0x2f')]['includeAll']){_0x431920[_0x8ace('0x45')]=[{'all':!![]}];}_0x431920=_[_0x8ace('0x3a')]({},_0x431920,_0x50251c['options']);return db[_0x8ace('0x2b')]['find'](_0x431920)['then'](handleEntityNotFound(_0x557ffc,null))[_0x8ace('0x22')](respondWithResult(_0x557ffc,null))['catch'](handleError(_0x557ffc,null));};exports['create']=function(_0x54aa7d,_0x5eac6e){return db[_0x8ace('0x2b')][_0x8ace('0x46')](_0x54aa7d['body'],{})['then'](respondWithResult(_0x5eac6e,0xc9))[_0x8ace('0x3f')](handleError(_0x5eac6e,null));};exports[_0x8ace('0x21')]=function(_0x361eb8,_0x540a4c){if(_0x361eb8[_0x8ace('0x47')]['id']){delete _0x361eb8[_0x8ace('0x47')]['id'];}return db[_0x8ace('0x2b')][_0x8ace('0x48')]({'where':{'id':_0x361eb8[_0x8ace('0x49')]['id']}})[_0x8ace('0x22')](handleEntityNotFound(_0x540a4c,null))[_0x8ace('0x22')](saveUpdates(_0x361eb8[_0x8ace('0x47')],null))['then'](respondWithResult(_0x540a4c,null))[_0x8ace('0x3f')](handleError(_0x540a4c,null));};exports['destroy']=function(_0x146643,_0x245fb7){return db[_0x8ace('0x2b')][_0x8ace('0x48')]({'where':{'id':_0x146643['params']['id']}})[_0x8ace('0x22')](handleEntityNotFound(_0x245fb7,null))[_0x8ace('0x22')](removeEntity(_0x245fb7,null))['catch'](handleError(_0x245fb7,null));};exports[_0x8ace('0x4a')]=function(_0x19a62d,_0x2b630b){return db[_0x8ace('0x2b')][_0x8ace('0x4a')]()[_0x8ace('0x22')](respondWithResult(_0x2b630b,null))[_0x8ace('0x3f')](handleError(_0x2b630b,null));};
\ No newline at end of file
index 04757d6..e717aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62dd=['moment','request-promise','path','rimraf','../../config/environment','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api'];(function(_0x45fd47,_0x11bc77){var _0x2db7ce=function(_0x2be9fd){while(--_0x2be9fd){_0x45fd47['push'](_0x45fd47['shift']());}};_0x2db7ce(++_0x11bc77);}(_0x62dd,0x6c));var _0xd62d=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x62dd[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xd62d('0x0'));var util=require(_0xd62d('0x1'));var logger=require(_0xd62d('0x2'))(_0xd62d('0x3'));var moment=require(_0xd62d('0x4'));var BPromise=require('bluebird');var rp=require(_0xd62d('0x5'));var fs=require('fs');var path=require(_0xd62d('0x6'));var rimraf=require(_0xd62d('0x7'));var config=require(_0xd62d('0x8'));var attributes=require('./voiceDialReport.attributes');module[_0xd62d('0x9')]=function(_0x5326fa,_0x11adaf){return _0x5326fa[_0xd62d('0xa')](_0xd62d('0xb'),attributes,{'tableName':_0xd62d('0xc'),'paranoid':![],'indexes':[{'fields':[_0xd62d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xed95=['path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xed95,0xb9));var _0x5ed9=function(_0x178641,_0x1fca2a){_0x178641=_0x178641-0x0;var _0x4b8c4d=_0xed95[_0x178641];return _0x4b8c4d;};'use strict';var _=require(_0x5ed9('0x0'));var util=require(_0x5ed9('0x1'));var logger=require(_0x5ed9('0x2'))(_0x5ed9('0x3'));var moment=require(_0x5ed9('0x4'));var BPromise=require(_0x5ed9('0x5'));var rp=require(_0x5ed9('0x6'));var fs=require('fs');var path=require(_0x5ed9('0x7'));var rimraf=require(_0x5ed9('0x8'));var config=require(_0x5ed9('0x9'));var attributes=require(_0x5ed9('0xa'));module[_0x5ed9('0xb')]=function(_0x52a57d,_0x48efa8){return _0x52a57d[_0x5ed9('0xc')](_0x5ed9('0xd'),attributes,{'tableName':_0x5ed9('0xe'),'paranoid':![],'indexes':[{'fields':[_0x5ed9('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 7d41f20..3b2361e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb67=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','limit','lodash'];(function(_0x1c443f,_0x51319d){var _0x4a4a71=function(_0x355b73){while(--_0x355b73){_0x1c443f['push'](_0x1c443f['shift']());}};_0x4a4a71(++_0x51319d);}(_0xeb67,0x149));var _0x7eb6=function(_0x538458,_0x309fb0){_0x538458=_0x538458-0x0;var _0x156d33=_0xeb67[_0x538458];return _0x156d33;};'use strict';var _=require(_0x7eb6('0x0'));var util=require(_0x7eb6('0x1'));var moment=require(_0x7eb6('0x2'));var BPromise=require(_0x7eb6('0x3'));var rs=require(_0x7eb6('0x4'));var fs=require('fs');var Redis=require(_0x7eb6('0x5'));var db=require(_0x7eb6('0x6'))['db'];var utils=require(_0x7eb6('0x7'));var logger=require('../../config/logger')(_0x7eb6('0x8'));var config=require(_0x7eb6('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7eb6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26874e,_0xdfb894,_0x1fb921){return new BPromise(function(_0x4456a9,_0x61935f){return client[_0x7eb6('0xb')](_0x26874e,_0x1fb921)[_0x7eb6('0xc')](function(_0x35ce18){logger['info'](_0x7eb6('0xd'),_0xdfb894,_0x7eb6('0xe'));logger[_0x7eb6('0xf')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0xdfb894,_0x7eb6('0xe'),JSON[_0x7eb6('0x10')](_0x35ce18));if(_0x35ce18[_0x7eb6('0x11')]){if(_0x35ce18[_0x7eb6('0x11')]['code']===0x1f4){logger[_0x7eb6('0x11')](_0x7eb6('0xd'),_0xdfb894,_0x35ce18['error'][_0x7eb6('0x12')]);return _0x61935f(_0x35ce18['error']['message']);}logger['error'](_0x7eb6('0xd'),_0xdfb894,_0x35ce18[_0x7eb6('0x11')][_0x7eb6('0x12')]);return _0x4456a9(_0x35ce18[_0x7eb6('0x11')][_0x7eb6('0x12')]);}else{logger[_0x7eb6('0x13')](_0x7eb6('0xd'),_0xdfb894,'request\x20sent');_0x4456a9(_0x35ce18[_0x7eb6('0x14')][_0x7eb6('0x12')]);}})[_0x7eb6('0x15')](function(_0x4133fd){logger['error'](_0x7eb6('0xd'),_0xdfb894,_0x4133fd);_0x61935f(_0x4133fd);});});}exports[_0x7eb6('0x16')]=function(_0x16e2b5){var _0x34ddee=this;return new Promise(function(_0x591a69,_0x4b5035){return db[_0x7eb6('0x17')][_0x7eb6('0x18')](_0x16e2b5[_0x7eb6('0x19')],{'raw':_0x16e2b5['options']?_0x16e2b5[_0x7eb6('0x1a')][_0x7eb6('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x2f892e){logger[_0x7eb6('0x13')](_0x7eb6('0x16'),_0x16e2b5);logger[_0x7eb6('0xf')](_0x7eb6('0x16'),_0x16e2b5,JSON[_0x7eb6('0x10')](_0x2f892e));_0x591a69(_0x2f892e);})[_0x7eb6('0x15')](function(_0x28459c){logger[_0x7eb6('0x11')](_0x7eb6('0x16'),_0x28459c[_0x7eb6('0x12')],_0x16e2b5);_0x4b5035(_0x34ddee[_0x7eb6('0x11')](0x1f4,_0x28459c['message']));});});};exports[_0x7eb6('0x1c')]=function(_0x409424){var _0x530269=this;return new Promise(function(_0x492be3,_0xe494f7){return db[_0x7eb6('0x17')][_0x7eb6('0x1d')](_0x409424['body'],{'raw':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x1e')]||null:null,'attributes':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x1f')]||null:null,'limit':_0x409424[_0x7eb6('0x1a')]?_0x409424[_0x7eb6('0x1a')][_0x7eb6('0x20')]||null:null})[_0x7eb6('0xc')](function(_0x2553bc){logger[_0x7eb6('0x13')]('UpdateVoiceDialReport',_0x409424);logger[_0x7eb6('0xf')](_0x7eb6('0x1c'),_0x409424,JSON[_0x7eb6('0x10')](_0x2553bc));_0x492be3(_0x2553bc);})[_0x7eb6('0x15')](function(_0x1468df){logger[_0x7eb6('0x11')](_0x7eb6('0x1c'),_0x1468df[_0x7eb6('0x12')],_0x409424);_0xe494f7(_0x530269['error'](0x1f4,_0x1468df[_0x7eb6('0x12')]));});});};
\ No newline at end of file
+var _0x832a=['http','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','create','body','options','raw','CreateVoiceDialReport','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x13b82e,_0x27e6d7){var _0x798e42=function(_0x1de945){while(--_0x1de945){_0x13b82e['push'](_0x13b82e['shift']());}};_0x798e42(++_0x27e6d7);}(_0x832a,0x140));var _0xa832=function(_0x50cd41,_0x4874a7){_0x50cd41=_0x50cd41-0x0;var _0x399475=_0x832a[_0x50cd41];return _0x399475;};'use strict';var _=require(_0xa832('0x0'));var util=require(_0xa832('0x1'));var moment=require(_0xa832('0x2'));var BPromise=require(_0xa832('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa832('0x4'));var db=require(_0xa832('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa832('0x6'))(_0xa832('0x7'));var config=require(_0xa832('0x8'));var jayson=require(_0xa832('0x9'));var client=jayson['client'][_0xa832('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20e11c,_0x465082,_0x159925){return new BPromise(function(_0x48ac80,_0x71b302){return client[_0xa832('0xb')](_0x20e11c,_0x159925)[_0xa832('0xc')](function(_0x43bb81){logger[_0xa832('0xd')](_0xa832('0xe'),_0x465082,_0xa832('0xf'));logger[_0xa832('0x10')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x465082,'request\x20sent',JSON[_0xa832('0x11')](_0x43bb81));if(_0x43bb81['error']){if(_0x43bb81[_0xa832('0x12')][_0xa832('0x13')]===0x1f4){logger[_0xa832('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x465082,_0x43bb81[_0xa832('0x12')][_0xa832('0x14')]);return _0x71b302(_0x43bb81[_0xa832('0x12')][_0xa832('0x14')]);}logger[_0xa832('0x12')](_0xa832('0xe'),_0x465082,_0x43bb81[_0xa832('0x12')][_0xa832('0x14')]);return _0x48ac80(_0x43bb81[_0xa832('0x12')][_0xa832('0x14')]);}else{logger[_0xa832('0xd')](_0xa832('0xe'),_0x465082,_0xa832('0xf'));_0x48ac80(_0x43bb81[_0xa832('0x15')][_0xa832('0x14')]);}})[_0xa832('0x16')](function(_0x232f27){logger[_0xa832('0x12')](_0xa832('0xe'),_0x465082,_0x232f27);_0x71b302(_0x232f27);});});}exports['CreateVoiceDialReport']=function(_0x1ff80d){var _0x44d2ca=this;return new Promise(function(_0x12eabb,_0xca6b32){return db['VoiceDialReport'][_0xa832('0x17')](_0x1ff80d[_0xa832('0x18')],{'raw':_0x1ff80d[_0xa832('0x19')]?_0x1ff80d['options'][_0xa832('0x1a')]===undefined?!![]:![]:!![]})[_0xa832('0xc')](function(_0x36b769){logger[_0xa832('0xd')](_0xa832('0x1b'),_0x1ff80d);logger[_0xa832('0x10')](_0xa832('0x1b'),_0x1ff80d,JSON[_0xa832('0x11')](_0x36b769));_0x12eabb(_0x36b769);})[_0xa832('0x16')](function(_0x4db647){logger[_0xa832('0x12')](_0xa832('0x1b'),_0x4db647['message'],_0x1ff80d);_0xca6b32(_0x44d2ca[_0xa832('0x12')](0x1f4,_0x4db647['message']));});});};exports[_0xa832('0x1c')]=function(_0xf11ddc){var _0x41b8fb=this;return new Promise(function(_0x2baa6b,_0x2963f3){return db['VoiceDialReport'][_0xa832('0x1d')](_0xf11ddc[_0xa832('0x18')],{'raw':_0xf11ddc[_0xa832('0x19')]?_0xf11ddc[_0xa832('0x19')][_0xa832('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf11ddc['options']?_0xf11ddc[_0xa832('0x19')][_0xa832('0x1e')]||null:null,'attributes':_0xf11ddc[_0xa832('0x19')]?_0xf11ddc['options'][_0xa832('0x1f')]||null:null,'limit':_0xf11ddc[_0xa832('0x19')]?_0xf11ddc[_0xa832('0x19')][_0xa832('0x20')]||null:null})[_0xa832('0xc')](function(_0x29936f){logger['info'](_0xa832('0x1c'),_0xf11ddc);logger[_0xa832('0x10')](_0xa832('0x1c'),_0xf11ddc,JSON[_0xa832('0x11')](_0x29936f));_0x2baa6b(_0x29936f);})[_0xa832('0x16')](function(_0x24ab50){logger[_0xa832('0x12')](_0xa832('0x1c'),_0x24ab50['message'],_0xf11ddc);_0x2963f3(_0x41b8fb[_0xa832('0x12')](0x1f4,_0x24ab50[_0xa832('0x14')]));});});};
\ No newline at end of file
index 0206611..4d8c2d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdfa=['put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','create','post'];(function(_0x5f58ea,_0x12238a){var _0x71f520=function(_0x7c1286){while(--_0x7c1286){_0x5f58ea['push'](_0x5f58ea['shift']());}};_0x71f520(++_0x12238a);}(_0xcdfa,0x15a));var _0xacdf=function(_0x3b77e8,_0x2f3f4e){_0x3b77e8=_0x3b77e8-0x0;var _0x539f99=_0xcdfa[_0x3b77e8];return _0x539f99;};'use strict';var multer=require(_0xacdf('0x0'));var util=require(_0xacdf('0x1'));var path=require('path');var timeout=require(_0xacdf('0x2'));var express=require(_0xacdf('0x3'));var router=express[_0xacdf('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xacdf('0x5'));var config=require(_0xacdf('0x6'));var controller=require(_0xacdf('0x7'));router[_0xacdf('0x8')]('/',auth[_0xacdf('0x9')](),controller[_0xacdf('0xa')]);router[_0xacdf('0x8')](_0xacdf('0xb'),auth[_0xacdf('0x9')](),controller['show']);router['post']('/',auth[_0xacdf('0x9')](),controller[_0xacdf('0xc')]);router[_0xacdf('0xd')]('/:id/applications',auth[_0xacdf('0x9')](),controller['addApplications']);router[_0xacdf('0xe')](_0xacdf('0xb'),auth[_0xacdf('0x9')](),controller[_0xacdf('0xf')]);router[_0xacdf('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xacdf('0x11')]=router;
\ No newline at end of file
+var _0x8c97=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','/:id/applications','addApplications','put','update','delete','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c97,0x6d));var _0x78c9=function(_0x34066d,_0x2c22a0){_0x34066d=_0x34066d-0x0;var _0xc2c06f=_0x8c97[_0x34066d];return _0xc2c06f;};'use strict';var multer=require(_0x78c9('0x0'));var util=require(_0x78c9('0x1'));var path=require(_0x78c9('0x2'));var timeout=require(_0x78c9('0x3'));var express=require(_0x78c9('0x4'));var router=express['Router']();var fs_extra=require(_0x78c9('0x5'));var auth=require(_0x78c9('0x6'));var interaction=require(_0x78c9('0x7'));var config=require('../../config/environment');var controller=require(_0x78c9('0x8'));router[_0x78c9('0x9')]('/',auth[_0x78c9('0xa')](),controller[_0x78c9('0xb')]);router[_0x78c9('0x9')](_0x78c9('0xc'),auth[_0x78c9('0xa')](),controller[_0x78c9('0xd')]);router[_0x78c9('0xe')]('/',auth[_0x78c9('0xa')](),controller['create']);router[_0x78c9('0xe')](_0x78c9('0xf'),auth['isAuthenticated'](),controller[_0x78c9('0x10')]);router[_0x78c9('0x11')](_0x78c9('0xc'),auth[_0x78c9('0xa')](),controller[_0x78c9('0x12')]);router[_0x78c9('0x13')](_0x78c9('0xc'),auth[_0x78c9('0xa')](),controller[_0x78c9('0x14')]);module[_0x78c9('0x15')]=router;
\ No newline at end of file
index a0afa86..42e690e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a5e=['VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','ENUM','inbound','internal','inbound-fax','outbound-fax','any','INTEGER','BOOLEAN','wav'];(function(_0x420d8d,_0x78b67f){var _0x4865d7=function(_0x2965df){while(--_0x2965df){_0x420d8d['push'](_0x420d8d['shift']());}};_0x4865d7(++_0x78b67f);}(_0x0a5e,0x1e2));var _0xe0a5=function(_0x453724,_0x20b7ef){_0x453724=_0x453724-0x0;var _0xccc5a5=_0x0a5e[_0x453724];return _0xccc5a5;};'use strict';var Sequelize=require(_0xe0a5('0x0'));module[_0xe0a5('0x1')]={'context':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':![],'unique':_0xe0a5('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xe0a5('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xe0a5('0x4')](_0xe0a5('0x5'),'outbound',_0xe0a5('0x6'),_0xe0a5('0x7'),_0xe0a5('0x8'),'system',_0xe0a5('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xe0a5('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0xe0a5('0xa')]},'isApp':{'type':Sequelize[_0xe0a5('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xe0a5('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xe0a5('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xe0a5('0xa')]},'recordingFormat':{'type':Sequelize[_0xe0a5('0x2')],'defaultValue':_0xe0a5('0xc')},'answer':{'type':Sequelize[_0xe0a5('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0xe0a5('0xd')],'get':function(_0x1f7fe6){return this[_0xe0a5('0xe')]('exten');}},'alias':{'type':Sequelize[_0xe0a5('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xceb4=['sequelize','exports','STRING','compositeIndex','ENUM','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL'];(function(_0x1f7772,_0x4c9a00){var _0x2cb1fe=function(_0x333274){while(--_0x333274){_0x1f7772['push'](_0x1f7772['shift']());}};_0x2cb1fe(++_0x4c9a00);}(_0xceb4,0x1b2));var _0x4ceb=function(_0x2ebc31,_0x336378){_0x2ebc31=_0x2ebc31-0x0;var _0x4a96ef=_0xceb4[_0x2ebc31];return _0x4a96ef;};'use strict';var Sequelize=require(_0x4ceb('0x0'));module[_0x4ceb('0x1')]={'context':{'type':Sequelize[_0x4ceb('0x2')],'allowNull':![],'unique':_0x4ceb('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x4ceb('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x4ceb('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x4ceb('0x3')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x4ceb('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x4ceb('0x4')]('inbound',_0x4ceb('0x5'),'internal',_0x4ceb('0x6'),_0x4ceb('0x7'),_0x4ceb('0x8'),_0x4ceb('0x9')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4ceb('0x2')],'allowNull':![],'defaultValue':_0x4ceb('0xa')},'IntervalId':{'type':Sequelize[_0x4ceb('0xb')]},'isApp':{'type':Sequelize[_0x4ceb('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x4ceb('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x4ceb('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x4ceb('0xb')]},'recordingFormat':{'type':Sequelize[_0x4ceb('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x4ceb('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x4ceb('0xd')],'get':function(_0x1f4953){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0x4ceb('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 6eae561..4a70acc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59c=['bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','undefined','limit','offset','Content-Range','destroy','inbound','OutboundRoutes','filter','ignore','map','value','includes','find','type','name','UserProfileResource','then','error','stack','index','VoiceExtension','rawAttributes','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','pick','merge','count','includeAll','findAll','rows','show','params','include','create','body','outbound','startsWith','exten','concat','get','role','InboundRoutes','InternalRoutes','internal','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','context','addApplications','findOne','transaction','VoiceExtensionId','isApp','createRouting','log','LOG\x20~\x20.then\x20~\x20routing'];(function(_0x5f3f46,_0x2ed6ae){var _0x3e94d6=function(_0x124988){while(--_0x124988){_0x5f3f46['push'](_0x5f3f46['shift']());}};_0x3e94d6(++_0x2ed6ae);}(_0xb59c,0x10b));var _0xcb59=function(_0x38e6f6,_0x131f94){_0x38e6f6=_0x38e6f6-0x0;var _0x16f471=_0xb59c[_0x38e6f6];return _0x16f471;};'use strict';var _=require(_0xcb59('0x0'));var Redis=require(_0xcb59('0x1'));var qs=require(_0xcb59('0x2'));var logger=require('../../config/logger')(_0xcb59('0x3'));var config=require(_0xcb59('0x4'));var db=require(_0xcb59('0x5'))['db'];config[_0xcb59('0x6')]=_['defaults'](config[_0xcb59('0x6')],{'host':_0xcb59('0x7'),'port':0x18eb});var socket=require(_0xcb59('0x8'))(new Redis(config['redis']));require('./voiceExtension.socket')['register'](socket);function respondWithStatusCode(_0x3597ea,_0x2289e6){_0x2289e6=_0x2289e6||0xcc;return function(_0x513186){if(_0x513186){return _0x3597ea[_0xcb59('0x9')](_0x2289e6);}return _0x3597ea[_0xcb59('0xa')](_0x2289e6)[_0xcb59('0xb')]();};}function respondWithResult(_0x42f94c,_0x1c9182){_0x1c9182=_0x1c9182||0xc8;return function(_0x559905){if(_0x559905){return _0x42f94c[_0xcb59('0xa')](_0x1c9182)[_0xcb59('0xc')](_0x559905);}};}function respondWithFilteredResult(_0x3728d8,_0x27e30a){return function(_0x5f5275){if(_0x5f5275){var _0xa8cbed=typeof _0x27e30a['offset']===_0xcb59('0xd')&&typeof _0x27e30a[_0xcb59('0xe')]===_0xcb59('0xd');var _0x50ccab=_0x5f5275['count'];var _0x42a187=_0xa8cbed?0x0:_0x27e30a[_0xcb59('0xf')];var _0x3f0998=_0xa8cbed?_0x5f5275['count']:_0x27e30a['offset']+_0x27e30a[_0xcb59('0xe')];var _0x4b0738;if(_0x3f0998>=_0x50ccab){_0x3f0998=_0x50ccab;_0x4b0738=0xc8;}else{_0x4b0738=0xce;}_0x3728d8['status'](_0x4b0738);return _0x3728d8['set'](_0xcb59('0x10'),_0x42a187+'-'+_0x3f0998+'/'+_0x50ccab)['json'](_0x5f5275);}return null;};}function removeEntity(_0x461eef){return function(_0x4270c3){if(_0x4270c3){return _0x4270c3[_0xcb59('0x11')]()['then'](function(){var _0x21b7fd=_0x4270c3['get']({'plain':!![]});var _0x29db0f=[{'name':'InboundRoutes','value':_0xcb59('0x12'),'ignore':![]},{'name':_0xcb59('0x13'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x4469e9=_(_0x29db0f)[_0xcb59('0x14')](_0xcb59('0x15'))[_0xcb59('0x16')](_0xcb59('0x17'))[_0xcb59('0x17')]();if(_[_0xcb59('0x18')](_0x4469e9,_0x21b7fd['type'])){return;}var _0x30b77e=_[_0xcb59('0x19')](_0x29db0f,[_0xcb59('0x17'),_0x21b7fd[_0xcb59('0x1a')]])[_0xcb59('0x1b')];return db[_0xcb59('0x1c')]['destroy']({'where':{'type':_0x30b77e,'resourceId':_0x21b7fd['id']}})[_0xcb59('0x1d')](function(){return _0x4270c3;});})['then'](function(){_0x461eef['status'](0xcc)[_0xcb59('0xb')]();});}};}function handleEntityNotFound(_0x1c5335){return function(_0x15fc1d){if(!_0x15fc1d){_0x1c5335['sendStatus'](0x194);}return _0x15fc1d;};}function handleError(_0x394050,_0x279319){_0x279319=_0x279319||0x1f4;return function(_0x3e10be){logger[_0xcb59('0x1e')](_0x3e10be[_0xcb59('0x1f')]);if(_0x3e10be['name']){delete _0x3e10be[_0xcb59('0x1b')];}_0x394050[_0xcb59('0xa')](_0x279319)['send'](_0x3e10be);};}exports[_0xcb59('0x20')]=function(_0x502024,_0x508063){var _0x1fe9c2={},_0x2f12f4={},_0x1d47c2={'count':0x0,'rows':[]};var _0x12f35a=_[_0xcb59('0x16')](db[_0xcb59('0x21')][_0xcb59('0x22')],function(_0x35a28d){return{'name':_0x35a28d['fieldName'],'type':_0x35a28d[_0xcb59('0x1a')][_0xcb59('0x23')]};});_0x2f12f4[_0xcb59('0x24')]=_[_0xcb59('0x16')](_0x12f35a,'name');_0x2f12f4['query']=_[_0xcb59('0x25')](_0x502024['query']);_0x2f12f4['filters']=_['intersection'](_0x2f12f4[_0xcb59('0x24')],_0x2f12f4[_0xcb59('0x26')]);_0x1fe9c2['attributes']=_[_0xcb59('0x27')](_0x2f12f4[_0xcb59('0x24')],qs['fields'](_0x502024['query'][_0xcb59('0x28')]));_0x1fe9c2['attributes']=_0x1fe9c2[_0xcb59('0x29')][_0xcb59('0x2a')]?_0x1fe9c2[_0xcb59('0x29')]:_0x2f12f4['model'];if(!_0x502024[_0xcb59('0x26')][_0xcb59('0x2b')]('nolimit')){_0x1fe9c2[_0xcb59('0xe')]=qs[_0xcb59('0xe')](_0x502024[_0xcb59('0x26')]['limit']);_0x1fe9c2['offset']=qs[_0xcb59('0xf')](_0x502024[_0xcb59('0x26')]['offset']);}_0x1fe9c2['order']=qs[_0xcb59('0x2c')](_0x502024[_0xcb59('0x26')]['sort']);_0x1fe9c2[_0xcb59('0x2d')]=qs[_0xcb59('0x2e')](_[_0xcb59('0x2f')](_0x502024[_0xcb59('0x26')],_0x2f12f4[_0xcb59('0x2e')]),_0x12f35a);if(_0x502024[_0xcb59('0x26')][_0xcb59('0x14')]){_0x1fe9c2[_0xcb59('0x2d')]=_[_0xcb59('0x30')](_0x1fe9c2[_0xcb59('0x2d')],{'$or':_[_0xcb59('0x16')](_0x12f35a,function(_0x59ff77){if(_0x59ff77[_0xcb59('0x1a')]!=='VIRTUAL'){var _0xe10e46={};_0xe10e46[_0x59ff77[_0xcb59('0x1b')]]={'$like':'%'+_0x502024['query'][_0xcb59('0x14')]+'%'};return _0xe10e46;}})});}_0x1fe9c2=_[_0xcb59('0x30')]({},_0x1fe9c2,_0x502024['options']);var _0x368407={'where':_0x1fe9c2[_0xcb59('0x2d')]};return db[_0xcb59('0x21')][_0xcb59('0x31')](_0x368407)['then'](function(_0x4ae2ac){_0x1d47c2['count']=_0x4ae2ac;if(_0x502024[_0xcb59('0x26')][_0xcb59('0x32')]){_0x1fe9c2['include']=[{'all':!![]}];}return db[_0xcb59('0x21')][_0xcb59('0x33')](_0x1fe9c2);})[_0xcb59('0x1d')](function(_0xacb8f2){_0x1d47c2[_0xcb59('0x34')]=_0xacb8f2;return _0x1d47c2;})[_0xcb59('0x1d')](respondWithFilteredResult(_0x508063,_0x1fe9c2))['catch'](handleError(_0x508063,null));};exports[_0xcb59('0x35')]=function(_0x10cbc5,_0xe336f3){var _0x17e726={'raw':![],'where':{'id':_0x10cbc5[_0xcb59('0x36')]['id']}},_0x5764b4={};_0x5764b4[_0xcb59('0x24')]=_[_0xcb59('0x25')](db[_0xcb59('0x21')]['rawAttributes']);_0x5764b4[_0xcb59('0x26')]=_[_0xcb59('0x25')](_0x10cbc5[_0xcb59('0x26')]);_0x5764b4[_0xcb59('0x2e')]=_[_0xcb59('0x27')](_0x5764b4[_0xcb59('0x24')],_0x5764b4['query']);_0x17e726[_0xcb59('0x29')]=_[_0xcb59('0x27')](_0x5764b4[_0xcb59('0x24')],qs[_0xcb59('0x28')](_0x10cbc5[_0xcb59('0x26')]['fields']));_0x17e726['attributes']=_0x17e726['attributes']['length']?_0x17e726['attributes']:_0x5764b4[_0xcb59('0x24')];if(_0x10cbc5[_0xcb59('0x26')]['includeAll']){_0x17e726[_0xcb59('0x37')]=[{'all':!![]}];}_0x17e726=_[_0xcb59('0x30')]({},_0x17e726,_0x10cbc5['options']);return db[_0xcb59('0x21')]['find'](_0x17e726)[_0xcb59('0x1d')](handleEntityNotFound(_0xe336f3,null))['then'](respondWithResult(_0xe336f3,null))['catch'](handleError(_0xe336f3,null));};exports['destroy']=function(_0x18711a,_0x303679){return db['VoiceExtension'][_0xcb59('0x19')]({'where':{'id':_0x18711a[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](handleEntityNotFound(_0x303679,null))['then'](removeEntity(_0x303679,null))['catch'](handleError(_0x303679,null));};exports[_0xcb59('0x38')]=function(_0x1f1e90,_0x10d351){if(_0x1f1e90[_0xcb59('0x39')][_0xcb59('0x1a')]===_0xcb59('0x3a')&&!_[_0xcb59('0x3b')](_0x1f1e90[_0xcb59('0x39')][_0xcb59('0x3c')],'_')){_0x1f1e90['body'][_0xcb59('0x3c')]='_'[_0xcb59('0x3d')](_0x1f1e90['body']['exten']);}return db[_0xcb59('0x21')][_0xcb59('0x38')](_0x1f1e90[_0xcb59('0x39')],{'raw':![]})['then'](function(_0x235349){var _0x52f30f=_0x1f1e90['user'][_0xcb59('0x3e')]({'plain':!![]});if(!_0x52f30f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52f30f[_0xcb59('0x3f')]==='user'){var _0x53f5d5=_0x235349['get']({'plain':!![]});var _0x51097c=[{'name':_0xcb59('0x40'),'value':_0xcb59('0x12')},{'name':_0xcb59('0x13'),'value':'outbound'},{'name':_0xcb59('0x41'),'value':_0xcb59('0x42')}];var _0x1873ba=_[_0xcb59('0x19')](_0x51097c,['value',_0x53f5d5['type']])['name'];return db['UserProfileSection'][_0xcb59('0x19')]({'where':{'name':_0x1873ba,'userProfileId':_0x52f30f['userProfileId']},'raw':!![]})['then'](function(_0x31d3ef){if(_0x31d3ef&&_0x31d3ef[_0xcb59('0x43')]===0x0){return db[_0xcb59('0x1c')][_0xcb59('0x38')]({'name':_0x53f5d5[_0xcb59('0x1b')],'resourceId':_0x53f5d5['id'],'type':_0x31d3ef[_0xcb59('0x1b')],'sectionId':_0x31d3ef['id']},{})[_0xcb59('0x1d')](function(){return _0x235349;});}else{return _0x235349;}})[_0xcb59('0x44')](function(_0x25d80f){logger[_0xcb59('0x1e')](_0xcb59('0x45'),_0x25d80f);throw _0x25d80f;});}return _0x235349;})['then'](respondWithResult(_0x10d351,0xc9))[_0xcb59('0x44')](handleError(_0x10d351,null));};exports[_0xcb59('0x46')]=function(_0xa1b07a,_0x4a5cd8){if(_0xa1b07a[_0xcb59('0x39')]['id']){delete _0xa1b07a[_0xcb59('0x39')]['id'];}return db[_0xcb59('0x21')][_0xcb59('0x19')]({'where':{'id':_0xa1b07a[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](handleEntityNotFound(_0x4a5cd8,null))[_0xcb59('0x1d')](function(_0x61605f){if(_0x61605f){return db['VoiceExtension']['update'](_[_0xcb59('0x2f')](_0xa1b07a[_0xcb59('0x39')],[_0xcb59('0x3c'),'context',_0xcb59('0x47'),_0xcb59('0x48'),_0xcb59('0x49'),_0xcb59('0x4a'),_0xcb59('0x4b')]),{'where':{'context':_0x61605f[_0xcb59('0x4c')],'exten':_0x61605f['exten']},'individualHooks':!![]})['then'](function(_0x179aea){return _0x179aea;});}return null;})[_0xcb59('0x1d')](respondWithStatusCode(_0x4a5cd8,null))['catch'](handleError(_0x4a5cd8,null));};exports[_0xcb59('0x4d')]=function(_0x5e3b2e,_0x5c1c39){return db[_0xcb59('0x21')][_0xcb59('0x4e')]({'where':{'id':_0x5e3b2e[_0xcb59('0x36')]['id']}})[_0xcb59('0x1d')](function(_0x6ebb51){if(_0x6ebb51){return db['sequelize'][_0xcb59('0x4f')](function(_0x42c7c8){return db[_0xcb59('0x21')][_0xcb59('0x11')]({'where':{'VoiceExtensionId':_0x5e3b2e[_0xcb59('0x36')]['id']},'transaction':_0x42c7c8})['then'](function(){var _0x35178d=_[_0xcb59('0x16')](_0x5e3b2e[_0xcb59('0x39')],function(_0x246111){_0x246111[_0xcb59('0x50')]=_0x5e3b2e[_0xcb59('0x36')]['id'];_0x246111[_0xcb59('0x51')]=!![];return _0x246111;});return _0x6ebb51[_0xcb59('0x52')](_0x35178d);})[_0xcb59('0x1d')](function(_0x16dd51){console[_0xcb59('0x53')](_0xcb59('0x54'),_0x16dd51);return db[_0xcb59('0x21')][_0xcb59('0x55')](_0x16dd51,{'transaction':_0x42c7c8});});})[_0xcb59('0x1d')](function(){return db[_0xcb59('0x21')][_0xcb59('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5e3b2e[_0xcb59('0x36')]['id']},'order':_0xcb59('0x57')});});}})[_0xcb59('0x1d')](respondWithResult(_0x5c1c39,null))[_0xcb59('0x44')](handleError(_0x5c1c39,null));};
\ No newline at end of file
+var _0xd882=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','InternalRoutes','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','mandatoryDisposition','alias','exten','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','priority','stack','finally','ioredis','../../components/parsers/qs','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','then','get','OutboundRoutes','outbound','internal','filter','ignore','map','value','type','name','UserProfileResource','sendStatus','error','send','index','VoiceExtension','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','rows','catch','rawAttributes','includeAll','options','find','create','body','startsWith','concat'];(function(_0x44abca,_0x29765b){var _0x589d50=function(_0x9f0633){while(--_0x9f0633){_0x44abca['push'](_0x44abca['shift']());}};_0x589d50(++_0x29765b);}(_0xd882,0xce));var _0x2d88=function(_0x37a0ce,_0x28dc04){_0x37a0ce=_0x37a0ce-0x0;var _0x569f4e=_0xd882[_0x37a0ce];return _0x569f4e;};'use strict';var _=require('lodash');var Redis=require(_0x2d88('0x0'));var qs=require(_0x2d88('0x1'));var logger=require('../../config/logger')(_0x2d88('0x2'));var config=require(_0x2d88('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2d88('0x4')](config[_0x2d88('0x5')],{'host':_0x2d88('0x6'),'port':0x18eb});var socket=require(_0x2d88('0x7'))(new Redis(config['redis']));require(_0x2d88('0x8'))[_0x2d88('0x9')](socket);function respondWithStatusCode(_0x313849,_0x45eebd){_0x45eebd=_0x45eebd||0xcc;return function(_0x5ee97d){if(_0x5ee97d){return _0x313849['sendStatus'](_0x45eebd);}return _0x313849[_0x2d88('0xa')](_0x45eebd)[_0x2d88('0xb')]();};}function respondWithResult(_0x45b80b,_0xf400b){_0xf400b=_0xf400b||0xc8;return function(_0x5ea41a){if(_0x5ea41a){return _0x45b80b[_0x2d88('0xa')](_0xf400b)[_0x2d88('0xc')](_0x5ea41a);}};}function respondWithFilteredResult(_0x5ac241,_0x2f3291){return function(_0x553aac){if(_0x553aac){var _0x4b02ea=typeof _0x2f3291['offset']===_0x2d88('0xd')&&typeof _0x2f3291[_0x2d88('0xe')]===_0x2d88('0xd');var _0xd7974f=_0x553aac[_0x2d88('0xf')];var _0x11e3a0=_0x4b02ea?0x0:_0x2f3291[_0x2d88('0x10')];var _0x14154b=_0x4b02ea?_0x553aac['count']:_0x2f3291[_0x2d88('0x10')]+_0x2f3291[_0x2d88('0xe')];var _0xcb0a2d;if(_0x14154b>=_0xd7974f){_0x14154b=_0xd7974f;_0xcb0a2d=0xc8;}else{_0xcb0a2d=0xce;}_0x5ac241['status'](_0xcb0a2d);return _0x5ac241[_0x2d88('0x11')](_0x2d88('0x12'),_0x11e3a0+'-'+_0x14154b+'/'+_0xd7974f)[_0x2d88('0xc')](_0x553aac);}return null;};}function removeEntity(_0x59b914){return function(_0x50c798){if(_0x50c798){return _0x50c798[_0x2d88('0x13')]()[_0x2d88('0x14')](function(){var _0x544cf2=_0x50c798[_0x2d88('0x15')]({'plain':!![]});var _0xf0195b=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0x2d88('0x16'),'value':_0x2d88('0x17'),'ignore':![]},{'name':'InternalRoutes','value':_0x2d88('0x18'),'ignore':![]}];var _0x1781ee=_(_0xf0195b)[_0x2d88('0x19')](_0x2d88('0x1a'))[_0x2d88('0x1b')](_0x2d88('0x1c'))[_0x2d88('0x1c')]();if(_['includes'](_0x1781ee,_0x544cf2['type'])){return;}var _0x47e11f=_['find'](_0xf0195b,[_0x2d88('0x1c'),_0x544cf2[_0x2d88('0x1d')]])[_0x2d88('0x1e')];return db[_0x2d88('0x1f')][_0x2d88('0x13')]({'where':{'type':_0x47e11f,'resourceId':_0x544cf2['id']}})[_0x2d88('0x14')](function(){return _0x50c798;});})[_0x2d88('0x14')](function(){_0x59b914[_0x2d88('0xa')](0xcc)[_0x2d88('0xb')]();});}};}function handleEntityNotFound(_0x4d7f5d){return function(_0x3f7d23){if(!_0x3f7d23){_0x4d7f5d[_0x2d88('0x20')](0x194);}return _0x3f7d23;};}function handleError(_0xf8e40c,_0x18832a){_0x18832a=_0x18832a||0x1f4;return function(_0x3c73a1){logger[_0x2d88('0x21')](_0x3c73a1['stack']);if(_0x3c73a1[_0x2d88('0x1e')]){delete _0x3c73a1[_0x2d88('0x1e')];}_0xf8e40c['status'](_0x18832a)[_0x2d88('0x22')](_0x3c73a1);};}exports[_0x2d88('0x23')]=function(_0x1146c1,_0x3dc618){var _0x21848e={},_0x3e846f={},_0xdc5442={'count':0x0,'rows':[]};var _0x1ea167=_[_0x2d88('0x1b')](db[_0x2d88('0x24')]['rawAttributes'],function(_0x26028b){return{'name':_0x26028b[_0x2d88('0x25')],'type':_0x26028b[_0x2d88('0x1d')][_0x2d88('0x26')]};});_0x3e846f[_0x2d88('0x27')]=_[_0x2d88('0x1b')](_0x1ea167,_0x2d88('0x1e'));_0x3e846f[_0x2d88('0x28')]=_[_0x2d88('0x29')](_0x1146c1[_0x2d88('0x28')]);_0x3e846f[_0x2d88('0x2a')]=_['intersection'](_0x3e846f[_0x2d88('0x27')],_0x3e846f['query']);_0x21848e[_0x2d88('0x2b')]=_[_0x2d88('0x2c')](_0x3e846f[_0x2d88('0x27')],qs[_0x2d88('0x2d')](_0x1146c1[_0x2d88('0x28')][_0x2d88('0x2d')]));_0x21848e['attributes']=_0x21848e['attributes'][_0x2d88('0x2e')]?_0x21848e[_0x2d88('0x2b')]:_0x3e846f[_0x2d88('0x27')];if(!_0x1146c1[_0x2d88('0x28')][_0x2d88('0x2f')](_0x2d88('0x30'))){_0x21848e[_0x2d88('0xe')]=qs[_0x2d88('0xe')](_0x1146c1[_0x2d88('0x28')][_0x2d88('0xe')]);_0x21848e[_0x2d88('0x10')]=qs[_0x2d88('0x10')](_0x1146c1[_0x2d88('0x28')][_0x2d88('0x10')]);}_0x21848e[_0x2d88('0x31')]=qs[_0x2d88('0x32')](_0x1146c1['query'][_0x2d88('0x32')]);_0x21848e[_0x2d88('0x33')]=qs[_0x2d88('0x2a')](_[_0x2d88('0x34')](_0x1146c1['query'],_0x3e846f['filters']),_0x1ea167);if(_0x1146c1['query'][_0x2d88('0x19')]){_0x21848e['where']=_['merge'](_0x21848e[_0x2d88('0x33')],{'$or':_[_0x2d88('0x1b')](_0x1ea167,function(_0x334213){if(_0x334213['type']!=='VIRTUAL'){var _0x1dca16={};_0x1dca16[_0x334213['name']]={'$like':'%'+_0x1146c1[_0x2d88('0x28')][_0x2d88('0x19')]+'%'};return _0x1dca16;}})});}_0x21848e=_[_0x2d88('0x35')]({},_0x21848e,_0x1146c1['options']);var _0x5d588a={'where':_0x21848e[_0x2d88('0x33')]};return db[_0x2d88('0x24')][_0x2d88('0xf')](_0x5d588a)[_0x2d88('0x14')](function(_0x31400e){_0xdc5442[_0x2d88('0xf')]=_0x31400e;if(_0x1146c1[_0x2d88('0x28')]['includeAll']){_0x21848e['include']=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x21848e);})[_0x2d88('0x14')](function(_0x42a606){_0xdc5442[_0x2d88('0x36')]=_0x42a606;return _0xdc5442;})['then'](respondWithFilteredResult(_0x3dc618,_0x21848e))[_0x2d88('0x37')](handleError(_0x3dc618,null));};exports['show']=function(_0x3b19f3,_0x1e4ccc){var _0x4011df={'raw':![],'where':{'id':_0x3b19f3['params']['id']}},_0x425109={};_0x425109['model']=_[_0x2d88('0x29')](db[_0x2d88('0x24')][_0x2d88('0x38')]);_0x425109['query']=_[_0x2d88('0x29')](_0x3b19f3[_0x2d88('0x28')]);_0x425109[_0x2d88('0x2a')]=_[_0x2d88('0x2c')](_0x425109[_0x2d88('0x27')],_0x425109['query']);_0x4011df[_0x2d88('0x2b')]=_[_0x2d88('0x2c')](_0x425109[_0x2d88('0x27')],qs[_0x2d88('0x2d')](_0x3b19f3['query'][_0x2d88('0x2d')]));_0x4011df[_0x2d88('0x2b')]=_0x4011df[_0x2d88('0x2b')][_0x2d88('0x2e')]?_0x4011df['attributes']:_0x425109[_0x2d88('0x27')];if(_0x3b19f3[_0x2d88('0x28')][_0x2d88('0x39')]){_0x4011df['include']=[{'all':!![]}];}_0x4011df=_[_0x2d88('0x35')]({},_0x4011df,_0x3b19f3[_0x2d88('0x3a')]);return db[_0x2d88('0x24')][_0x2d88('0x3b')](_0x4011df)[_0x2d88('0x14')](handleEntityNotFound(_0x1e4ccc,null))[_0x2d88('0x14')](respondWithResult(_0x1e4ccc,null))[_0x2d88('0x37')](handleError(_0x1e4ccc,null));};exports[_0x2d88('0x13')]=function(_0xe083e5,_0x37b7ee){return db[_0x2d88('0x24')][_0x2d88('0x3b')]({'where':{'id':_0xe083e5['params']['id']}})[_0x2d88('0x14')](handleEntityNotFound(_0x37b7ee,null))[_0x2d88('0x14')](removeEntity(_0x37b7ee,null))[_0x2d88('0x37')](handleError(_0x37b7ee,null));};exports[_0x2d88('0x3c')]=function(_0x20a7af,_0x55a1e1){if(_0x20a7af[_0x2d88('0x3d')]['type']===_0x2d88('0x17')&&!_[_0x2d88('0x3e')](_0x20a7af[_0x2d88('0x3d')]['exten'],'_')){_0x20a7af[_0x2d88('0x3d')]['exten']='_'[_0x2d88('0x3f')](_0x20a7af[_0x2d88('0x3d')]['exten']);}return db[_0x2d88('0x24')][_0x2d88('0x3c')](_0x20a7af[_0x2d88('0x3d')],{'raw':![]})[_0x2d88('0x14')](function(_0xf01e32){var _0x4ef066=_0x20a7af['user'][_0x2d88('0x15')]({'plain':!![]});if(!_0x4ef066)throw new Error(_0x2d88('0x40'));if(_0x4ef066[_0x2d88('0x41')]===_0x2d88('0x42')){var _0x5d2074=_0xf01e32[_0x2d88('0x15')]({'plain':!![]});var _0x282384=[{'name':'InboundRoutes','value':'inbound'},{'name':_0x2d88('0x16'),'value':'outbound'},{'name':_0x2d88('0x43'),'value':_0x2d88('0x18')}];var _0x2b156f=_[_0x2d88('0x3b')](_0x282384,[_0x2d88('0x1c'),_0x5d2074['type']])[_0x2d88('0x1e')];return db[_0x2d88('0x44')][_0x2d88('0x3b')]({'where':{'name':_0x2b156f,'userProfileId':_0x4ef066[_0x2d88('0x45')]},'raw':!![]})[_0x2d88('0x14')](function(_0x1e7d82){if(_0x1e7d82&&_0x1e7d82['autoAssociation']===0x0){return db[_0x2d88('0x1f')][_0x2d88('0x3c')]({'name':_0x5d2074[_0x2d88('0x1e')],'resourceId':_0x5d2074['id'],'type':_0x1e7d82[_0x2d88('0x1e')],'sectionId':_0x1e7d82['id']},{})[_0x2d88('0x14')](function(){return _0xf01e32;});}else{return _0xf01e32;}})[_0x2d88('0x37')](function(_0xdf20c8){logger[_0x2d88('0x21')](_0x2d88('0x46'),_0xdf20c8);throw _0xdf20c8;});}return _0xf01e32;})[_0x2d88('0x14')](respondWithResult(_0x55a1e1,0xc9))[_0x2d88('0x37')](handleError(_0x55a1e1,null));};exports[_0x2d88('0x47')]=function(_0x3e67cd,_0x4c6709){if(_0x3e67cd[_0x2d88('0x3d')]['id']){delete _0x3e67cd[_0x2d88('0x3d')]['id'];}return db[_0x2d88('0x24')][_0x2d88('0x3b')]({'where':{'id':_0x3e67cd['params']['id']}})[_0x2d88('0x14')](handleEntityNotFound(_0x4c6709,null))[_0x2d88('0x14')](function(_0x24efe8){if(_0x24efe8){return db[_0x2d88('0x24')][_0x2d88('0x47')](_['pick'](_0x3e67cd[_0x2d88('0x3d')],['exten',_0x2d88('0x48'),_0x2d88('0x49'),'recordingFormat','cutdigits',_0x2d88('0x4a'),_0x2d88('0x4b')]),{'where':{'context':_0x24efe8['context'],'exten':_0x24efe8[_0x2d88('0x4c')]},'individualHooks':!![]})[_0x2d88('0x14')](function(_0x2ad5d7){return _0x2ad5d7;});}return null;})[_0x2d88('0x14')](respondWithStatusCode(_0x4c6709,null))[_0x2d88('0x37')](handleError(_0x4c6709,null));};exports['addApplications']=function(_0x46e4ed,_0x12375f){var _0x362375=_0x46e4ed['params']['id'];var _0x31c11e=_0x46e4ed[_0x2d88('0x3d')];var _0x9a5ba4=0xc8;var _0x17dcf5=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x2d88('0x4d')][_0x2d88('0x4e')][_0x2d88('0x4f')][_0x2d88('0x50')]},function(_0x514e66){return db[_0x2d88('0x24')][_0x2d88('0x51')]({'where':{'id':_0x362375},'transaction':_0x514e66})[_0x2d88('0x14')](function(_0x114533){if(_0x114533){return db['VoiceExtension'][_0x2d88('0x13')]({'where':{'VoiceExtensionId':_0x362375},'transaction':_0x514e66})['then'](function(){var _0x45d20c=_[_0x2d88('0x1b')](_0x31c11e,function(_0x274c46){_0x274c46[_0x2d88('0x52')]=_0x362375;_0x274c46[_0x2d88('0x53')]=!![];return _0x274c46;});return _0x114533[_0x2d88('0x54')](_0x45d20c);})['then'](function(_0x5aae7a){return db[_0x2d88('0x24')][_0x2d88('0x55')](_0x5aae7a,{'transaction':_0x514e66});});}else{_0x9a5ba4=0x194;_0x17dcf5=[];}});})[_0x2d88('0x14')](function(){if(_0x9a5ba4!==0x194){return db[_0x2d88('0x24')][_0x2d88('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x362375},'order':_0x2d88('0x57')})[_0x2d88('0x14')](function(_0x1aaa0b){_0x17dcf5=_0x1aaa0b;});}})[_0x2d88('0x37')](function(_0x2fe9f9){_0x9a5ba4=0x1f4;logger[_0x2d88('0x21')](_0x2fe9f9[_0x2d88('0x58')]);if(_0x2fe9f9[_0x2d88('0x1e')]){delete _0x2fe9f9[_0x2d88('0x1e')];}_0x17dcf5=_0x2fe9f9;})[_0x2d88('0x59')](function(){if(_0x17dcf5===null){_0x12375f[_0x2d88('0x20')](_0x9a5ba4);}else{if(_0x9a5ba4===0x1f4){_0x12375f[_0x2d88('0xa')](_0x9a5ba4)[_0x2d88('0x22')](_0x17dcf5);}else{_0x12375f[_0x2d88('0xa')](_0x9a5ba4)['json'](_0x17dcf5);}}});};
\ No newline at end of file
index 9e1ed4b..6c95391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c95=['events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4ce048,_0x27a6fd){var _0x4c6524=function(_0x3319e8){while(--_0x3319e8){_0x4ce048['push'](_0x4ce048['shift']());}};_0x4c6524(++_0x27a6fd);}(_0x9c95,0xd1));var _0x59c9=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x9c95[_0x565ed7];return _0x183ad7;};'use strict';var EventEmitter=require(_0x59c9('0x0'));var VoiceExtension=require(_0x59c9('0x1'))['db'][_0x59c9('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x59c9('0x3')](0x0);var events={'afterCreate':_0x59c9('0x4'),'afterUpdate':_0x59c9('0x5'),'afterDestroy':_0x59c9('0x6')};function emitEvent(_0x4ded92){return function(_0x2f3519,_0x230ad7,_0x4c8ea9){VoiceExtensionEvents[_0x59c9('0x7')](_0x4ded92+':'+_0x2f3519['id'],_0x2f3519);VoiceExtensionEvents[_0x59c9('0x7')](_0x4ded92,_0x2f3519);_0x4c8ea9(null);};}for(var e in events){if(events[_0x59c9('0x8')](e)){var event=events[e];VoiceExtension[_0x59c9('0x9')](e,emitEvent(event));}}module[_0x59c9('0xa')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x6c88=['hook','exports','events','../../mysqldb','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x4ca6f1,_0x3667fb){var _0x3f41b2=function(_0x1e2407){while(--_0x1e2407){_0x4ca6f1['push'](_0x4ca6f1['shift']());}};_0x3f41b2(++_0x3667fb);}(_0x6c88,0x12a));var _0x86c8=function(_0x39a6ca,_0x10c9f0){_0x39a6ca=_0x39a6ca-0x0;var _0x752c2f=_0x6c88[_0x39a6ca];return _0x752c2f;};'use strict';var EventEmitter=require(_0x86c8('0x0'));var VoiceExtension=require(_0x86c8('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x86c8('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x86c8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x28f608){return function(_0x41e7a1,_0x48e213,_0x5afc79){VoiceExtensionEvents[_0x86c8('0x4')](_0x28f608+':'+_0x41e7a1['id'],_0x41e7a1);VoiceExtensionEvents[_0x86c8('0x4')](_0x28f608,_0x41e7a1);_0x5afc79(null);};}for(var e in events){if(events[_0x86c8('0x5')](e)){var event=events[e];VoiceExtension[_0x86c8('0x6')](e,emitEvent(event));}}module[_0x86c8('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index f1b5116..3428b70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4986=['isEmpty','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','playback','includes','app','appType','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','exten','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','trunk','options','split','length','name','param','prefix','phone','SIP','join','none','indexOf','replace','U(xcally-mixmonitor-context)'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0x4986,0x6e));var _0x6498=function(_0x1e437f,_0x28e899){_0x1e437f=_0x1e437f-0x0;var _0x282424=_0x4986[_0x1e437f];return _0x282424;};'use strict';var _=require(_0x6498('0x0'));var attributes=require(_0x6498('0x1'));module[_0x6498('0x2')]=function(_0x5c0f72){var _0x5ab420=_0x5c0f72[_0x6498('0x3')];function _0x40bbc9(_0x5d24c6){var _0x15e8d3=0x2;var _0x12a6fb=[{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0x6')+_0x5d24c6[_0x6498('0x4')],'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6['exten'],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6['type'],'app':_0x5d24c6[_0x6498('0x8')]?_0x6498('0x5'):_0x6498('0x9'),'appdata':_0x5d24c6[_0x6498('0x8')]?_0x6498('0xa')+_0x5d24c6['alias']:_0x6498('0xb'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']}];if(_0x5d24c6['type']==='inbound'){_0x12a6fb[_0x6498('0xd')]({'type':'inbound','app':_0x6498('0x5'),'appdata':_0x6498('0xe')+_0x5d24c6['id'],'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']});}_0x12a6fb[_0x6498('0xd')]({'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5d24c6['context'],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0xf'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6['exten'],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']},{'type':_0x5d24c6[_0x6498('0x4')],'app':_0x6498('0x5'),'appdata':_0x6498('0x10'),'context':_0x5d24c6[_0x6498('0x7')],'exten':_0x5d24c6[_0x6498('0xc')],'priority':_0x15e8d3++,'VoiceExtensionId':_0x5d24c6['id']});return _0x12a6fb;}function _0x1b4083(_0x3fa89d){var _0x500d3f=0x2;var _0x43ae3b=[{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x12'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':_0x3fa89d[_0x6498('0x8')]?_0x6498('0x5'):_0x6498('0x9'),'appdata':_0x3fa89d[_0x6498('0x8')]?_0x6498('0xa')+_0x3fa89d[_0x6498('0x8')]:_0x6498('0xb'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x13')+(_0x3fa89d[_0x6498('0x14')]?_0x6498('0x15')+_0x3fa89d['cutdigits']+'}':'${EXTEN}'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0xe')+_0x3fa89d['id'],'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':_0x6498('0x16'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x500d3f+0x2)+_0x6498('0x17')+(_0x500d3f+0x1)+')','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x3fa89d[_0x6498('0x14')]?_0x6498('0x18')+_0x3fa89d[_0x6498('0x14')]+'}':_0x6498('0x19'),'context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':_0x6498('0x10'),'context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':'outbound','app':'Set','appdata':'outboundrouteid='+_0x3fa89d['id'],'context':_0x3fa89d['context'],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']}];if(_0x3fa89d[_0x6498('0x1a')]('recordingFormat')&&_0x3fa89d[_0x6498('0x1b')]!=='none'){_0x43ae3b[_0x6498('0xd')]({'type':_0x6498('0x11'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d['exten'],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']},{'type':_0x6498('0x11'),'app':_0x6498('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3fa89d[_0x6498('0x1b')]||'wav','context':_0x3fa89d[_0x6498('0x7')],'exten':_0x3fa89d[_0x6498('0xc')],'priority':_0x500d3f++,'VoiceExtensionId':_0x3fa89d['id']});}return _0x43ae3b;}function _0x56739d(_0x2bbb2c,_0x1fed77){var _0xfd79c3=[{'name':_0x6498('0x1c'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x6498('0x1d'),'param':0x2},{'name':'url','param':0x3}];var _0x2548b8={};var _0x5b5089=_0x1fed77[_0x6498('0x1e')](',');var _0x50179d=[];for(var _0x2411ee=0x0;_0x2411ee<_0xfd79c3[_0x6498('0x1f')];_0x2411ee++){switch(_0xfd79c3[_0x2411ee][_0x6498('0x20')]){case _0x6498('0x1c'):_0x2548b8[_0x6498('0x1c')]=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]][_0x6498('0x1e')]('/')[0x1];_0x2548b8['phone']=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]][_0x6498('0x1e')]('/')[0x2];_0x2548b8[_0x6498('0x22')]=_0x2548b8[_0x6498('0x23')]?_0x2548b8[_0x6498('0x23')][_0x6498('0x1e')]('$')[0x0]:undefined;_0x2548b8[_0x6498('0x23')]=_0x2bbb2c[_0x6498('0x14')]?(_0x2548b8['prefix']||'')+_0x6498('0x15')+_0x2bbb2c[_0x6498('0x14')]+'}':(_0x2548b8[_0x6498('0x22')]||'')+'${EXTEN}';_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=[_0x6498('0x24'),_0x2548b8[_0x6498('0x1c')],_0x2548b8[_0x6498('0x23')]][_0x6498('0x25')]('/');break;case _0x6498('0x1d'):_0x2548b8[_0x6498('0x1d')]=_0x5b5089[_0xfd79c3[_0x2411ee][_0x6498('0x21')]];if(_0x2bbb2c[_0x6498('0x1b')]!==_0x6498('0x26')){if(_0x2548b8[_0x6498('0x1d')][_0x6498('0x27')]('U(xcally-mixmonitor-context)')<0x0){_0x2548b8['options']+='U(xcally-mixmonitor-context)';}}else{_0x2548b8[_0x6498('0x1d')]=_0x2548b8[_0x6498('0x1d')][_0x6498('0x28')](_0x6498('0x29'),'');}_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=_0x2548b8[_0x6498('0x1d')];break;default:_0x50179d[_0xfd79c3[_0x2411ee][_0x6498('0x21')]]=_0x5b5089[_0xfd79c3[_0x2411ee]['param']];}}return _0x50179d[_0x6498('0x25')](',');}function _0x15b5ee(_0x28cfb7,_0x6fca6d,_0x2cb807){return new Promise(function(_0x3bc9ca,_0x484cba){var _0x427e95=[];if(_[_0x6498('0x2a')](_0x6fca6d))return _0x3bc9ca(_0x427e95);_0x5ab420['Interval']['findAll']({'attributes':['id',_0x6498('0x2b'),_0x6498('0x2c')],'raw':!![]})[_0x6498('0x2d')](function(_0x4d2f1f){for(var _0x4fb005=0x0,_0xc578de=0x0;_0x4fb005<_0x6fca6d['length'];_0x4fb005++,_0xc578de=0x0){var _0x419b04=_0x6fca6d[_0x4fb005];var _0x468e1f=[];var _0x34e5b2=[];delete _0x419b04['id'];if(_0x419b04[_0x6498('0x2b')]!==_0x6498('0x2e')){_0x419b04[_0x6498('0x2f')]=[_0x419b04['interval']];}else{_0x419b04[_0x6498('0x2f')]=_0x419b04[_0x6498('0x2c')]?_[_0x6498('0x30')](_[_0x6498('0x31')](_0x4d2f1f,{'IntervalId':_0x419b04['IntervalId']}),_0x6498('0x2b')):[];}_0x419b04[_0x6498('0x7')]=_0x28cfb7[_0x6498('0x7')];_0x419b04[_0x6498('0xc')]=_0x28cfb7[_0x6498('0xc')];if(_0x419b04[_0x6498('0x4')])_0x419b04[_0x6498('0x4')]=_0x419b04[_0x6498('0x4')]['toLowerCase']();if(_0x28cfb7[_0x6498('0x4')]===_0x6498('0x11')){if(_0x419b04[_0x6498('0x1a')](_0x6498('0x32'))&&_0x419b04[_0x6498('0x32')]&&_0x419b04[_0x6498('0x32')]!=='--'){_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x5'),'appdata':_0x6498('0x34')+_0x419b04[_0x6498('0x32')],'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x16'),'appdata':_0x6498('0x35')+(_0x419b04['callerID']?_0x6498('0x36')+_0x419b04[_0x6498('0x37')]+')':_0x6498('0x38')),'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')]['length']+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}else{if(_0x419b04['hasOwnProperty'](_0x6498('0x39'))){if(['queue',_0x6498('0x3a')][_0x6498('0x3b')](_0x419b04[_0x6498('0x3c')][_0x6498('0x33')]())&&_0x419b04[_0x6498('0x3d')]!=='custom'){if(_0x419b04[_0x6498('0x39')]){_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')][_0x6498('0x33')](),'app':_0x6498('0x5'),'appdata':_0x6498('0x3e'),'context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}else{_0x468e1f[_0x6498('0xd')]({'type':_0x419b04[_0x6498('0x4')]['toLowerCase'](),'app':_0x6498('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x28cfb7[_0x6498('0x7')],'exten':_0x28cfb7['exten'],'priority':_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});_0x468e1f['push']({'type':_0x419b04['type']['toLowerCase'](),'app':_0x6498('0x5'),'appdata':_0x6498('0x3f'),'context':_0x28cfb7['context'],'exten':_0x28cfb7[_0x6498('0xc')],'priority':_0x419b04[_0x6498('0x2f')]['length']+_0x2cb807+_0xc578de++,'VoiceExtensionId':_0x28cfb7['id']});}}}}for(var _0x5eccb8=0x0;_0x5eccb8<_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')];_0x5eccb8++){var _0x13503=_0x2cb807+_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')];var _0x33c930=_0x5eccb8===_0x419b04[_0x6498('0x2f')][_0x6498('0x1f')]-0x1?_0x2cb807+_0x468e1f[_0x6498('0x1f')]+_0x34e5b2['length']+0x2:_0x2cb807+_0x5eccb8+0x1;_0x468e1f['splice'](_0x5eccb8,0x0,{'type':_0x28cfb7[_0x6498('0x4')],'app':_0x6498('0x40'),'appdata':_0x419b04['intervals'][_0x5eccb8]+'?'+_0x28cfb7[_0x6498('0x7')]+_0x6498('0x41')+_0x13503+':'+_0x28cfb7[_0x6498('0x7')]+_0x6498('0x41')+_0x33c930,'exten':_0x28cfb7[_0x6498('0xc')],'context':_0x28cfb7[_0x6498('0x7')],'priority':_0x2cb807+_0x5eccb8,'VoiceExtensionId':_0x28cfb7['id']});}if(_0x419b04['appType']==='outboundDial')_0x419b04['appdata']=_0x56739d(_0x28cfb7,_0x419b04[_0x6498('0x42')]);_0x419b04[_0x6498('0x43')]=_0x468e1f['length']?_[_0x6498('0x44')](_0x468e1f)[_0x6498('0x43')]+0x1:_0x2cb807;_0x427e95=_[_0x6498('0x45')](_0x427e95,_0x468e1f,[_0x419b04],_0x34e5b2);_0x2cb807=_[_0x6498('0x44')](_0x427e95)[_0x6498('0x43')]+0x1;}return _0x3bc9ca(_0x427e95);})[_0x6498('0x46')](function(_0x11f3f7){_0x484cba(_0x11f3f7);});});}return _0x5c0f72[_0x6498('0x47')](_0x6498('0x48'),attributes,{'tableName':_0x6498('0x49'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4c2abb){var _0x4496f0=this[_0x6498('0x4a')]({'plain':!![]});var _0x525208=_0x4496f0['type']==='outbound'?_0x1b4083(_0x4496f0):_0x40bbc9(_0x4496f0);return _0x15b5ee(_0x4496f0,_0x4c2abb,_['last'](_0x525208)[_0x6498('0x43')]+0x1)[_0x6498('0x2d')](function(_0x43296a){var _0x45dcda=_['concat'](_0x525208,_0x43296a);_0x45dcda[_0x6498('0xd')]({'type':_0x4496f0['type'],'app':_0x6498('0x4b'),'exten':_0x4496f0[_0x6498('0xc')],'context':_0x4496f0[_0x6498('0x7')],'priority':_[_0x6498('0x44')](_0x45dcda)[_0x6498('0x43')]+0x1,'VoiceExtensionId':_0x4496f0['id']});return _0x45dcda;});}}});};
\ No newline at end of file
+var _0xdf67=['prefix','SIP','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','then','interval','intervals','IntervalId','map','filter','toLowerCase','tag','CDR(tag)=','callerID','answer','playback','includes','app','appType','custom','ExecIf','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','lodash','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','split','length','name','trunk','param','phone'];(function(_0x308064,_0x1ee7bd){var _0x22e271=function(_0x56cb2c){while(--_0x56cb2c){_0x308064['push'](_0x308064['shift']());}};_0x22e271(++_0x1ee7bd);}(_0xdf67,0x117));var _0x7df6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdf67[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7df6('0x0'));var attributes=require(_0x7df6('0x1'));module[_0x7df6('0x2')]=function(_0x84acd7){var _0x542ab6=_0x84acd7[_0x7df6('0x3')];function _0x3e1a4e(_0x2562e1){var _0xcafaf7=0x2;var _0x292de5=[{'type':_0x2562e1[_0x7df6('0x4')],'app':_0x7df6('0x5'),'appdata':_0x7df6('0x6')+_0x2562e1['type'],'context':_0x2562e1[_0x7df6('0x7')],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']},{'type':_0x2562e1[_0x7df6('0x4')],'app':_0x2562e1['alias']?_0x7df6('0x5'):_0x7df6('0x9'),'appdata':_0x2562e1[_0x7df6('0xa')]?_0x7df6('0xb')+_0x2562e1[_0x7df6('0xa')]:_0x7df6('0xc'),'context':_0x2562e1['context'],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']}];if(_0x2562e1[_0x7df6('0x4')]===_0x7df6('0xd')){_0x292de5[_0x7df6('0xe')]({'type':_0x7df6('0xd'),'app':_0x7df6('0x5'),'appdata':'CDR(routeid)='+_0x2562e1['id'],'context':_0x2562e1[_0x7df6('0x7')],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']});}_0x292de5[_0x7df6('0xe')]({'type':_0x2562e1[_0x7df6('0x4')],'app':_0x7df6('0x5'),'appdata':_0x7df6('0xf'),'context':_0x2562e1['context'],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']},{'type':_0x2562e1[_0x7df6('0x4')],'app':_0x7df6('0x5'),'appdata':_0x7df6('0x10'),'context':_0x2562e1[_0x7df6('0x7')],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']},{'type':_0x2562e1[_0x7df6('0x4')],'app':'Set','appdata':_0x7df6('0x11'),'context':_0x2562e1['context'],'exten':_0x2562e1[_0x7df6('0x8')],'priority':_0xcafaf7++,'VoiceExtensionId':_0x2562e1['id']});return _0x292de5;}function _0x4109bd(_0x21be3b){var _0x1a3e56=0x2;var _0x407d17=[{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':_0x7df6('0x13'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':'outbound','app':_0x21be3b[_0x7df6('0xa')]?_0x7df6('0x5'):'NoOp','appdata':_0x21be3b['alias']?'CDR(routeAlias)='+_0x21be3b['alias']:_0x7df6('0xc'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':'outbound','app':_0x7df6('0x5'),'appdata':_0x7df6('0x14')+(_0x21be3b[_0x7df6('0x15')]?_0x7df6('0x16')+_0x21be3b[_0x7df6('0x15')]+'}':_0x7df6('0x17')),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':'CDR(routeid)='+_0x21be3b['id'],'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':'ExecIf','appdata':_0x7df6('0x18')+(_0x1a3e56+0x2)+'):Goto('+(_0x1a3e56+0x1)+')','context':_0x21be3b['context'],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':_0x21be3b[_0x7df6('0x15')]?_0x7df6('0x19')+_0x21be3b['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b['exten'],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':_0x7df6('0xf'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':'Set','appdata':_0x7df6('0x10'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':_0x7df6('0x11'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':'outbound','app':_0x7df6('0x5'),'appdata':_0x7df6('0x1a')+_0x21be3b['id'],'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']}];if(_0x21be3b[_0x7df6('0x1b')](_0x7df6('0x1c'))&&_0x21be3b['recordingFormat']!==_0x7df6('0x1d')){_0x407d17[_0x7df6('0xe')]({'type':'outbound','app':'Set','appdata':_0x7df6('0x1e'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b['exten'],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']},{'type':_0x7df6('0x12'),'app':_0x7df6('0x5'),'appdata':_0x7df6('0x1f')+_0x21be3b[_0x7df6('0x1c')]||_0x7df6('0x20'),'context':_0x21be3b[_0x7df6('0x7')],'exten':_0x21be3b[_0x7df6('0x8')],'priority':_0x1a3e56++,'VoiceExtensionId':_0x21be3b['id']});}return _0x407d17;}function _0x5c23ce(_0x42333f,_0x4275c1){var _0x1653f2=[{'name':'trunk','param':0x0},{'name':_0x7df6('0x21'),'param':0x1},{'name':_0x7df6('0x22'),'param':0x2},{'name':'url','param':0x3}];var _0x132217={};var _0x5c180e=_0x4275c1[_0x7df6('0x23')](',');var _0x3aa55f=[];for(var _0x1000f5=0x0;_0x1000f5<_0x1653f2[_0x7df6('0x24')];_0x1000f5++){switch(_0x1653f2[_0x1000f5][_0x7df6('0x25')]){case'trunk':_0x132217[_0x7df6('0x26')]=_0x5c180e[_0x1653f2[_0x1000f5][_0x7df6('0x27')]][_0x7df6('0x23')]('/')[0x1];_0x132217[_0x7df6('0x28')]=_0x5c180e[_0x1653f2[_0x1000f5]['param']][_0x7df6('0x23')]('/')[0x2];_0x132217[_0x7df6('0x29')]=_0x132217['phone']?_0x132217[_0x7df6('0x28')][_0x7df6('0x23')]('$')[0x0]:undefined;_0x132217[_0x7df6('0x28')]=_0x42333f[_0x7df6('0x15')]?(_0x132217['prefix']||'')+'${EXTEN:'+_0x42333f[_0x7df6('0x15')]+'}':(_0x132217[_0x7df6('0x29')]||'')+_0x7df6('0x17');_0x3aa55f[_0x1653f2[_0x1000f5][_0x7df6('0x27')]]=[_0x7df6('0x2a'),_0x132217[_0x7df6('0x26')],_0x132217[_0x7df6('0x28')]]['join']('/');break;case _0x7df6('0x22'):_0x132217[_0x7df6('0x22')]=_0x5c180e[_0x1653f2[_0x1000f5][_0x7df6('0x27')]];if(_0x42333f[_0x7df6('0x1c')]!==_0x7df6('0x1d')){if(_0x132217['options'][_0x7df6('0x2b')](_0x7df6('0x2c'))<0x0){_0x132217['options']+=_0x7df6('0x2c');}}else{_0x132217['options']=_0x132217[_0x7df6('0x22')]['replace'](_0x7df6('0x2c'),'');}_0x3aa55f[_0x1653f2[_0x1000f5][_0x7df6('0x27')]]=_0x132217[_0x7df6('0x22')];break;default:_0x3aa55f[_0x1653f2[_0x1000f5]['param']]=_0x5c180e[_0x1653f2[_0x1000f5][_0x7df6('0x27')]];}}return _0x3aa55f['join'](',');}function _0x19870b(_0x1a3b71,_0x1d0e7e,_0x44fdd1){return new Promise(function(_0x4446f4,_0x27d4b8){var _0x23620e=[];if(_[_0x7df6('0x2d')](_0x1d0e7e))return _0x4446f4(_0x23620e);_0x542ab6[_0x7df6('0x2e')][_0x7df6('0x2f')]({'attributes':['id','interval','IntervalId'],'raw':!![]})[_0x7df6('0x30')](function(_0x54cd1b){for(var _0x5ed984=0x0,_0x459695=0x0;_0x5ed984<_0x1d0e7e['length'];_0x5ed984++,_0x459695=0x0){var _0x381e56=_0x1d0e7e[_0x5ed984];var _0x131c18=[];var _0x43babc=[];delete _0x381e56['id'];if(_0x381e56[_0x7df6('0x31')]!=='*,*,*,*'){_0x381e56['intervals']=[_0x381e56[_0x7df6('0x31')]];}else{_0x381e56[_0x7df6('0x32')]=_0x381e56[_0x7df6('0x33')]?_[_0x7df6('0x34')](_[_0x7df6('0x35')](_0x54cd1b,{'IntervalId':_0x381e56[_0x7df6('0x33')]}),_0x7df6('0x31')):[];}_0x381e56[_0x7df6('0x7')]=_0x1a3b71[_0x7df6('0x7')];_0x381e56[_0x7df6('0x8')]=_0x1a3b71['exten'];if(_0x381e56['type'])_0x381e56[_0x7df6('0x4')]=_0x381e56['type'][_0x7df6('0x36')]();if(_0x1a3b71['type']===_0x7df6('0x12')){if(_0x381e56[_0x7df6('0x1b')](_0x7df6('0x37'))&&_0x381e56[_0x7df6('0x37')]&&_0x381e56[_0x7df6('0x37')]!=='--'){_0x131c18[_0x7df6('0xe')]({'type':_0x381e56[_0x7df6('0x4')][_0x7df6('0x36')](),'app':'Set','appdata':_0x7df6('0x38')+_0x381e56[_0x7df6('0x37')],'context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71['exten'],'priority':_0x381e56[_0x7df6('0x32')][_0x7df6('0x24')]+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});}_0x131c18[_0x7df6('0xe')]({'type':_0x381e56[_0x7df6('0x4')][_0x7df6('0x36')](),'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x381e56[_0x7df6('0x39')]?'Set(CALLERID(all)='+_0x381e56[_0x7df6('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71[_0x7df6('0x8')],'priority':_0x381e56[_0x7df6('0x32')]['length']+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});}else{if(_0x381e56[_0x7df6('0x1b')](_0x7df6('0x3a'))){if(['queue',_0x7df6('0x3b')][_0x7df6('0x3c')](_0x381e56[_0x7df6('0x3d')][_0x7df6('0x36')]())&&_0x381e56[_0x7df6('0x3e')]!==_0x7df6('0x3f')){if(_0x381e56['answer']){_0x131c18['push']({'type':_0x381e56[_0x7df6('0x4')]['toLowerCase'](),'app':_0x7df6('0x40'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71['exten'],'priority':_0x381e56[_0x7df6('0x32')][_0x7df6('0x24')]+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});_0x131c18['push']({'type':_0x381e56[_0x7df6('0x4')][_0x7df6('0x36')](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71[_0x7df6('0x8')],'priority':_0x381e56[_0x7df6('0x32')][_0x7df6('0x24')]+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});}else{_0x131c18['push']({'type':_0x381e56[_0x7df6('0x4')][_0x7df6('0x36')](),'app':_0x7df6('0x40'),'appdata':_0x7df6('0x41'),'context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71['exten'],'priority':_0x381e56[_0x7df6('0x32')][_0x7df6('0x24')]+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});_0x131c18['push']({'type':_0x381e56[_0x7df6('0x4')]['toLowerCase'](),'app':'Set','appdata':_0x7df6('0x42'),'context':_0x1a3b71[_0x7df6('0x7')],'exten':_0x1a3b71['exten'],'priority':_0x381e56['intervals'][_0x7df6('0x24')]+_0x44fdd1+_0x459695++,'VoiceExtensionId':_0x1a3b71['id']});}}}}for(var _0x1621c8=0x0;_0x1621c8<_0x381e56['intervals']['length'];_0x1621c8++){var _0x2df1ed=_0x44fdd1+_0x381e56[_0x7df6('0x32')][_0x7df6('0x24')];var _0x1f278a=_0x1621c8===_0x381e56['intervals']['length']-0x1?_0x44fdd1+_0x131c18[_0x7df6('0x24')]+_0x43babc[_0x7df6('0x24')]+0x2:_0x44fdd1+_0x1621c8+0x1;_0x131c18[_0x7df6('0x43')](_0x1621c8,0x0,{'type':_0x1a3b71[_0x7df6('0x4')],'app':_0x7df6('0x44'),'appdata':_0x381e56[_0x7df6('0x32')][_0x1621c8]+'?'+_0x1a3b71['context']+',${EXTEN},'+_0x2df1ed+':'+_0x1a3b71[_0x7df6('0x7')]+_0x7df6('0x45')+_0x1f278a,'exten':_0x1a3b71[_0x7df6('0x8')],'context':_0x1a3b71['context'],'priority':_0x44fdd1+_0x1621c8,'VoiceExtensionId':_0x1a3b71['id']});}if(_0x381e56[_0x7df6('0x3e')]===_0x7df6('0x46'))_0x381e56[_0x7df6('0x47')]=_0x5c23ce(_0x1a3b71,_0x381e56[_0x7df6('0x47')]);_0x381e56[_0x7df6('0x48')]=_0x131c18[_0x7df6('0x24')]?_[_0x7df6('0x49')](_0x131c18)[_0x7df6('0x48')]+0x1:_0x44fdd1;_0x23620e=_[_0x7df6('0x4a')](_0x23620e,_0x131c18,[_0x381e56],_0x43babc);_0x44fdd1=_[_0x7df6('0x49')](_0x23620e)['priority']+0x1;}return _0x4446f4(_0x23620e);})[_0x7df6('0x4b')](function(_0x3d67a9){_0x27d4b8(_0x3d67a9);});});}return _0x84acd7[_0x7df6('0x4c')](_0x7df6('0x4d'),attributes,{'tableName':_0x7df6('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x498d54){var _0x4fa043=this[_0x7df6('0x4f')]({'plain':!![]});var _0x7fdc39=_0x4fa043[_0x7df6('0x4')]===_0x7df6('0x12')?_0x4109bd(_0x4fa043):_0x3e1a4e(_0x4fa043);return _0x19870b(_0x4fa043,_0x498d54,_[_0x7df6('0x49')](_0x7fdc39)[_0x7df6('0x48')]+0x1)['then'](function(_0x2bd191){var _0x4b120c=_[_0x7df6('0x4a')](_0x7fdc39,_0x2bd191);_0x4b120c['push']({'type':_0x4fa043[_0x7df6('0x4')],'app':'Hangup','exten':_0x4fa043['exten'],'context':_0x4fa043[_0x7df6('0x7')],'priority':_[_0x7df6('0x49')](_0x4b120c)[_0x7df6('0x48')]+0x1,'VoiceExtensionId':_0x4fa043['id']});return _0x4b120c;});}}});};
\ No newline at end of file
index 070708d..7811c08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a99=['VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','VoiceExtension,\x20%s,\x20%s','GetVoiceExtension','findAll','options','raw','where','attributes','include','map','model','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','request','then','info','request\x20sent','debug'];(function(_0xf91841,_0x182ae3){var _0x4b9c44=function(_0x2e216e){while(--_0x2e216e){_0xf91841['push'](_0xf91841['shift']());}};_0x4b9c44(++_0x182ae3);}(_0x5a99,0xc9));var _0x95a9=function(_0x4453e9,_0x448c1b){_0x4453e9=_0x4453e9-0x0;var _0x46e103=_0x5a99[_0x4453e9];return _0x46e103;};'use strict';var _=require(_0x95a9('0x0'));var util=require(_0x95a9('0x1'));var moment=require(_0x95a9('0x2'));var BPromise=require('bluebird');var rs=require(_0x95a9('0x3'));var fs=require('fs');var Redis=require(_0x95a9('0x4'));var db=require(_0x95a9('0x5'))['db'];var utils=require(_0x95a9('0x6'));var logger=require('../../config/logger')(_0x95a9('0x7'));var config=require(_0x95a9('0x8'));var jayson=require(_0x95a9('0x9'));var client=jayson[_0x95a9('0xa')]['http']({'port':0x232a});config[_0x95a9('0xb')]=_[_0x95a9('0xc')](config[_0x95a9('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x95a9('0xd'))(new Redis(config['redis']));require(_0x95a9('0xe'))[_0x95a9('0xf')](socket);function respondWithRpcPromise(_0x48d5f0,_0x2be9a2,_0xc0e40d){return new BPromise(function(_0x4de148,_0x4aedae){return client[_0x95a9('0x10')](_0x48d5f0,_0xc0e40d)[_0x95a9('0x11')](function(_0x4de6ba){logger[_0x95a9('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x95a9('0x13'));logger[_0x95a9('0x14')](_0x95a9('0x15'),_0x2be9a2,_0x95a9('0x13'),JSON[_0x95a9('0x16')](_0x4de6ba));if(_0x4de6ba['error']){if(_0x4de6ba['error']['code']===0x1f4){logger[_0x95a9('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x4de6ba[_0x95a9('0x17')][_0x95a9('0x18')]);return _0x4aedae(_0x4de6ba[_0x95a9('0x17')]['message']);}logger[_0x95a9('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,_0x4de6ba[_0x95a9('0x17')][_0x95a9('0x18')]);return _0x4de148(_0x4de6ba[_0x95a9('0x17')]['message']);}else{logger[_0x95a9('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x2be9a2,'request\x20sent');_0x4de148(_0x4de6ba[_0x95a9('0x19')][_0x95a9('0x18')]);}})[_0x95a9('0x1a')](function(_0x183a64){logger[_0x95a9('0x17')](_0x95a9('0x1b'),_0x2be9a2,_0x183a64);_0x4aedae(_0x183a64);});});}exports[_0x95a9('0x1c')]=function(_0xab9d9a){var _0x294556=this;return new Promise(function(_0x2249dd,_0x4d48b4){return db['VoiceExtension'][_0x95a9('0x1d')]({'raw':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x1f')]===undefined?!![]:![]:!![],'where':_0xab9d9a['options']?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x20')]||null:null,'attributes':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x21')]||null:null,'limit':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')]['limit']||null:null,'include':_0xab9d9a[_0x95a9('0x1e')]?_0xab9d9a[_0x95a9('0x1e')][_0x95a9('0x22')]?_['map'](_0xab9d9a['options'][_0x95a9('0x22')],function(_0x49413f){return{'model':db[_0x49413f['model']],'as':_0x49413f['as'],'attributes':_0x49413f[_0x95a9('0x21')],'include':_0x49413f['include']?_[_0x95a9('0x23')](_0x49413f[_0x95a9('0x22')],function(_0x333260){return{'model':db[_0x333260[_0x95a9('0x24')]],'as':_0x333260['as'],'attributes':_0x333260[_0x95a9('0x21')],'include':_0x333260[_0x95a9('0x22')]?_[_0x95a9('0x23')](_0x333260[_0x95a9('0x22')],function(_0x381672){return{'model':db[_0x381672[_0x95a9('0x24')]],'as':_0x381672['as'],'attributes':_0x381672[_0x95a9('0x21')]};}):[]};}):[]};}):[]:[]})[_0x95a9('0x11')](function(_0x3ae759){logger[_0x95a9('0x12')](_0x95a9('0x1c'),_0xab9d9a);logger[_0x95a9('0x14')](_0x95a9('0x1c'),_0xab9d9a,JSON['stringify'](_0x3ae759));_0x2249dd(_0x3ae759);})['catch'](function(_0x59087c){logger[_0x95a9('0x17')](_0x95a9('0x1c'),_0x59087c[_0x95a9('0x18')],_0xab9d9a);_0x4d48b4(_0x294556['error'](0x1f4,_0x59087c[_0x95a9('0x18')]));});});};
\ No newline at end of file
+var _0xf483=['VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','include','model','map','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info'];(function(_0x540a66,_0x5b1a81){var _0x2515eb=function(_0x394d6a){while(--_0x394d6a){_0x540a66['push'](_0x540a66['shift']());}};_0x2515eb(++_0x5b1a81);}(_0xf483,0xf2));var _0x3f48=function(_0x494a22,_0x200657){_0x494a22=_0x494a22-0x0;var _0x372962=_0xf483[_0x494a22];return _0x372962;};'use strict';var _=require('lodash');var util=require(_0x3f48('0x0'));var moment=require('moment');var BPromise=require(_0x3f48('0x1'));var rs=require(_0x3f48('0x2'));var fs=require('fs');var Redis=require(_0x3f48('0x3'));var db=require(_0x3f48('0x4'))['db'];var utils=require(_0x3f48('0x5'));var logger=require(_0x3f48('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3f48('0x7')][_0x3f48('0x8')]({'port':0x232a});config['redis']=_[_0x3f48('0x9')](config[_0x3f48('0xa')],{'host':_0x3f48('0xb'),'port':0x18eb});var socket=require(_0x3f48('0xc'))(new Redis(config[_0x3f48('0xa')]));require(_0x3f48('0xd'))[_0x3f48('0xe')](socket);function respondWithRpcPromise(_0x47be62,_0x31eeb5,_0x2b14b3){return new BPromise(function(_0x4ab85b,_0x34a96f){return client['request'](_0x47be62,_0x2b14b3)[_0x3f48('0xf')](function(_0x18e206){logger[_0x3f48('0x10')](_0x3f48('0x11'),_0x31eeb5,_0x3f48('0x12'));logger[_0x3f48('0x13')](_0x3f48('0x14'),_0x31eeb5,_0x3f48('0x12'),JSON[_0x3f48('0x15')](_0x18e206));if(_0x18e206[_0x3f48('0x16')]){if(_0x18e206['error'][_0x3f48('0x17')]===0x1f4){logger[_0x3f48('0x16')](_0x3f48('0x11'),_0x31eeb5,_0x18e206['error'][_0x3f48('0x18')]);return _0x34a96f(_0x18e206['error'][_0x3f48('0x18')]);}logger[_0x3f48('0x16')](_0x3f48('0x11'),_0x31eeb5,_0x18e206['error'][_0x3f48('0x18')]);return _0x4ab85b(_0x18e206[_0x3f48('0x16')][_0x3f48('0x18')]);}else{logger[_0x3f48('0x10')]('VoiceExtension,\x20%s,\x20%s',_0x31eeb5,_0x3f48('0x12'));_0x4ab85b(_0x18e206[_0x3f48('0x19')][_0x3f48('0x18')]);}})[_0x3f48('0x1a')](function(_0x36ac20){logger[_0x3f48('0x16')](_0x3f48('0x11'),_0x31eeb5,_0x36ac20);_0x34a96f(_0x36ac20);});});}exports[_0x3f48('0x1b')]=function(_0x349caf){var _0x3f916a=this;return new Promise(function(_0x22ac77,_0x353a23){return db[_0x3f48('0x1c')][_0x3f48('0x1d')]({'raw':_0x349caf[_0x3f48('0x1e')]?_0x349caf[_0x3f48('0x1e')][_0x3f48('0x1f')]===undefined?!![]:![]:!![],'where':_0x349caf[_0x3f48('0x1e')]?_0x349caf[_0x3f48('0x1e')][_0x3f48('0x20')]||null:null,'attributes':_0x349caf['options']?_0x349caf['options'][_0x3f48('0x21')]||null:null,'limit':_0x349caf[_0x3f48('0x1e')]?_0x349caf[_0x3f48('0x1e')]['limit']||null:null,'include':_0x349caf['options']?_0x349caf[_0x3f48('0x1e')][_0x3f48('0x22')]?_['map'](_0x349caf[_0x3f48('0x1e')][_0x3f48('0x22')],function(_0xe2bcb0){return{'model':db[_0xe2bcb0[_0x3f48('0x23')]],'as':_0xe2bcb0['as'],'attributes':_0xe2bcb0[_0x3f48('0x21')],'include':_0xe2bcb0[_0x3f48('0x22')]?_[_0x3f48('0x24')](_0xe2bcb0['include'],function(_0x223ba5){return{'model':db[_0x223ba5[_0x3f48('0x23')]],'as':_0x223ba5['as'],'attributes':_0x223ba5[_0x3f48('0x21')],'include':_0x223ba5[_0x3f48('0x22')]?_['map'](_0x223ba5[_0x3f48('0x22')],function(_0x1e6297){return{'model':db[_0x1e6297['model']],'as':_0x1e6297['as'],'attributes':_0x1e6297[_0x3f48('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3f48('0xf')](function(_0xba555a){logger['info'](_0x3f48('0x1b'),_0x349caf);logger[_0x3f48('0x13')]('GetVoiceExtension',_0x349caf,JSON[_0x3f48('0x15')](_0xba555a));_0x22ac77(_0xba555a);})[_0x3f48('0x1a')](function(_0x394064){logger['error']('GetVoiceExtension',_0x394064['message'],_0x349caf);_0x353a23(_0x3f916a[_0x3f48('0x16')](0x1f4,_0x394064[_0x3f48('0x18')]));});});};
\ No newline at end of file
index 3a12150..6a9c14c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['length','./voiceExtension.events','remove','update','emit','removeListener','register'];(function(_0x192ff4,_0x4c6c4e){var _0x2fbb8a=function(_0x4c23be){while(--_0x4c23be){_0x192ff4['push'](_0x192ff4['shift']());}};_0x2fbb8a(++_0x4c6c4e);}(_0x4975,0x86));var _0x5497=function(_0x333ef2,_0x2b93c2){_0x333ef2=_0x333ef2-0x0;var _0x47095b=_0x4975[_0x333ef2];return _0x47095b;};'use strict';var VoiceExtensionEvents=require(_0x5497('0x0'));var events=['save',_0x5497('0x1'),_0x5497('0x2')];function createListener(_0xfc7927,_0x349f5f){return function(_0x135f6f){_0x349f5f[_0x5497('0x3')](_0xfc7927,_0x135f6f);};}function removeListener(_0x14cecb,_0xeb31af){return function(){VoiceExtensionEvents[_0x5497('0x4')](_0x14cecb,_0xeb31af);};}exports[_0x5497('0x5')]=function(_0x539a27){for(var _0x37e48d=0x0,_0x4f563d=events[_0x5497('0x6')];_0x37e48d<_0x4f563d;_0x37e48d++){var _0x674a2a=events[_0x37e48d];var _0x368e8b=createListener('voiceExtension:'+_0x674a2a,_0x539a27);VoiceExtensionEvents['on'](_0x674a2a,_0x368e8b);}};
\ No newline at end of file
+var _0x1cb9=['update','emit','removeListener','register','length','./voiceExtension.events','remove'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x1cb9,0x14e));var _0x91cb=function(_0x49ea6e,_0x504b7e){_0x49ea6e=_0x49ea6e-0x0;var _0x453d81=_0x1cb9[_0x49ea6e];return _0x453d81;};'use strict';var VoiceExtensionEvents=require(_0x91cb('0x0'));var events=['save',_0x91cb('0x1'),_0x91cb('0x2')];function createListener(_0x2b1894,_0x351bdb){return function(_0x57ea48){_0x351bdb[_0x91cb('0x3')](_0x2b1894,_0x57ea48);};}function removeListener(_0x2b7314,_0x5652cd){return function(){VoiceExtensionEvents[_0x91cb('0x4')](_0x2b7314,_0x5652cd);};}exports[_0x91cb('0x5')]=function(_0x186dc3){for(var _0x28543e=0x0,_0x3b9d98=events[_0x91cb('0x6')];_0x28543e<_0x3b9d98;_0x28543e++){var _0x4c1f56=events[_0x28543e];var _0x15c517=createListener('voiceExtension:'+_0x4c1f56,_0x186dc3);VoiceExtensionEvents['on'](_0x4c1f56,_0x15c517);}};
\ No newline at end of file
index 0c7c96b..4ba90bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','/:id/messages','getMessages','create','put','delete'];(function(_0x508119,_0x187eeb){var _0x704feb=function(_0x324024){while(--_0x324024){_0x508119['push'](_0x508119['shift']());}};_0x704feb(++_0x187eeb);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
+var _0x0a6b=['fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMail.controller','isAuthenticated','index','/:id','show','getMessages','post','create','delete','destroy','exports','multer','express'];(function(_0x2383aa,_0x3f343f){var _0x723915=function(_0x2e1182){while(--_0x2e1182){_0x2383aa['push'](_0x2383aa['shift']());}};_0x723915(++_0x3f343f);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x3eafc0,_0x216fc2){_0x3eafc0=_0x3eafc0-0x0;var _0x126113=_0x0a6b[_0x3eafc0];return _0x126113;};'use strict';var multer=require(_0xb0a6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb0a6('0x1'));var router=express['Router']();var fs_extra=require(_0xb0a6('0x2'));var auth=require(_0xb0a6('0x3'));var interaction=require(_0xb0a6('0x4'));var config=require('../../config/environment');var controller=require(_0xb0a6('0x5'));router['get']('/',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x7')]);router['get'](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x9')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller[_0xb0a6('0xa')]);router[_0xb0a6('0xb')]('/',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0xc')]);router['put'](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller['update']);router[_0xb0a6('0xd')](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0xe')]);module[_0xb0a6('0xf')]=router;
\ No newline at end of file
index 5645b3d..5eed4ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb24b=['contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','fullname','getDataValue','mailbox','exports','STRING'];(function(_0x5992b4,_0x414e4d){var _0x3df19c=function(_0x29bf04){while(--_0x29bf04){_0x5992b4['push'](_0x5992b4['shift']());}};_0x3df19c(++_0x414e4d);}(_0xb24b,0x12e));var _0xbb24=function(_0x2a597f,_0x384743){_0x2a597f=_0x2a597f-0x0;var _0x44e7ec=_0xb24b[_0x2a597f];return _0x44e7ec;};'use strict';var Sequelize=require('sequelize');module[_0xbb24('0x0')]={'customer_id':{'type':Sequelize[_0xbb24('0x1')]},'context':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':'from-voicemail','unique':_0xbb24('0x2')},'mailbox':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':'','allowNull':![],'unique':_0xbb24('0x2')},'password':{'type':Sequelize[_0xbb24('0x1')]},'fullname':{'type':Sequelize[_0xbb24('0x1')]},'email':{'type':Sequelize[_0xbb24('0x1')],'validate':{'isEmail':!![]},'set':function(_0x578dc4){this[_0xbb24('0x3')]('email',typeof _0x578dc4===_0xbb24('0x4')&&_0x578dc4[_0xbb24('0x5')]()?_0x578dc4[_0xbb24('0x5')]():null);}},'pager':{'type':Sequelize[_0xbb24('0x1')]},'tz':{'type':Sequelize[_0xbb24('0x1')],'defaultValue':_0xbb24('0x6')},'attach':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xbb24('0x1')]},'review':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xbb24('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xbb24('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xbb24('0x7')](_0xbb24('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xbb24('0x8'),'allowNull':![]},'stamp':{'type':_0xbb24('0xa')},'emailsubject':{'type':Sequelize[_0xbb24('0x1')]},'emailbody':{'type':Sequelize[_0xbb24('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xbb24('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xbb24('0xc')],'get':function(){return this['getDataValue'](_0xbb24('0xd'))+'\x20-\x20'+this[_0xbb24('0xe')](_0xbb24('0xf'));}}};
\ No newline at end of file
+var _0x1ba3=['from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','mailbox','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ba3,0x1d8));var _0x31ba=function(_0x4d7116,_0xdb8175){_0x4d7116=_0x4d7116-0x0;var _0x4593dc=_0x1ba3[_0x4d7116];return _0x4593dc;};'use strict';var Sequelize=require(_0x31ba('0x0'));module[_0x31ba('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x31ba('0x2')],'defaultValue':_0x31ba('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x31ba('0x2')],'defaultValue':'','allowNull':![],'unique':_0x31ba('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x31ba('0x2')]},'email':{'type':Sequelize[_0x31ba('0x2')],'validate':{'isEmail':!![]},'set':function(_0x211894){this[_0x31ba('0x5')](_0x31ba('0x6'),typeof _0x211894===_0x31ba('0x7')&&_0x211894[_0x31ba('0x8')]()?_0x211894[_0x31ba('0x8')]():null);}},'pager':{'type':Sequelize[_0x31ba('0x2')]},'tz':{'type':Sequelize[_0x31ba('0x2')],'defaultValue':_0x31ba('0x9')},'attach':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':_0x31ba('0xb'),'allowNull':![]},'saycid':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':_0x31ba('0xb'),'allowNull':![]},'dialout':{'type':Sequelize[_0x31ba('0x2')]},'callback':{'type':Sequelize[_0x31ba('0x2')]},'review':{'type':Sequelize[_0x31ba('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x31ba('0xc'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x31ba('0xb'),'no'),'defaultValue':_0x31ba('0xb'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x31ba('0xa')](_0x31ba('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x31ba('0xb'),'no'),'defaultValue':_0x31ba('0xb'),'allowNull':![]},'stamp':{'type':_0x31ba('0xd')},'emailsubject':{'type':Sequelize[_0x31ba('0x2')]},'emailbody':{'type':Sequelize[_0x31ba('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x31ba('0xe')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x31ba('0xf')],'get':function(){return this[_0x31ba('0x10')](_0x31ba('0x11'))+'\x20-\x20'+this['getDataValue'](_0x31ba('0x12'));}}};
\ No newline at end of file
index cca8c91..b575da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','UserProfileResource','create','catch','body','destroy','getMessages','findOne','VoiceMailMessage','nolimit','mailbox','findAndCountAll','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','update','then','get','Voicemails','error','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','filters'];(function(_0x2f432a,_0x21efbd){var _0x9fb239=function(_0x56549c){while(--_0x56549c){_0x2f432a['push'](_0x2f432a['shift']());}};_0x9fb239(++_0x21efbd);}(_0xe511,0x16f));var _0x1e51=function(_0x549876,_0x66473f){_0x549876=_0x549876-0x0;var _0x242552=_0xe511[_0x549876];return _0x242552;};'use strict';var emlformat=require(_0x1e51('0x0'));var rimraf=require(_0x1e51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1e51('0x2'));var rp=require('request-promise');var moment=require(_0x1e51('0x3'));var BPromise=require(_0x1e51('0x4'));var Mustache=require('mustache');var util=require(_0x1e51('0x5'));var path=require(_0x1e51('0x6'));var sox=require(_0x1e51('0x7'));var csv=require(_0x1e51('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e51('0x9'));var _=require(_0x1e51('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e51('0xb'));var deskjs=require(_0x1e51('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1e51('0xd'));var Redis=require(_0x1e51('0xe'));var authService=require(_0x1e51('0xf'));var qs=require(_0x1e51('0x10'));var as=require(_0x1e51('0x11'));var hardwareService=require(_0x1e51('0x12'));var logger=require('../../config/logger')(_0x1e51('0x13'));var utils=require(_0x1e51('0x14'));var config=require(_0x1e51('0x15'));var licenseUtil=require(_0x1e51('0x16'));var db=require(_0x1e51('0x17'))['db'];function respondWithStatusCode(_0x3c5330,_0x5544eb){_0x5544eb=_0x5544eb||0xcc;return function(_0x408a77){if(_0x408a77){return _0x3c5330[_0x1e51('0x18')](_0x5544eb);}return _0x3c5330[_0x1e51('0x19')](_0x5544eb)[_0x1e51('0x1a')]();};}function respondWithResult(_0x21bcbd,_0x32945d){_0x32945d=_0x32945d||0xc8;return function(_0x441c70){if(_0x441c70){return _0x21bcbd[_0x1e51('0x19')](_0x32945d)[_0x1e51('0x1b')](_0x441c70);}};}function respondWithFilteredResult(_0xd76fba,_0x5a5c07){return function(_0x3b01b7){if(_0x3b01b7){var _0x24db4f=typeof _0x5a5c07[_0x1e51('0x1c')]==='undefined'&&typeof _0x5a5c07[_0x1e51('0x1d')]==='undefined';var _0x53d222=_0x3b01b7[_0x1e51('0x1e')];var _0x27dcad=_0x24db4f?0x0:_0x5a5c07[_0x1e51('0x1c')];var _0x4785a5=_0x24db4f?_0x3b01b7[_0x1e51('0x1e')]:_0x5a5c07[_0x1e51('0x1c')]+_0x5a5c07['limit'];var _0x39449b;if(_0x4785a5>=_0x53d222){_0x4785a5=_0x53d222;_0x39449b=0xc8;}else{_0x39449b=0xce;}_0xd76fba['status'](_0x39449b);return _0xd76fba[_0x1e51('0x1f')](_0x1e51('0x20'),_0x27dcad+'-'+_0x4785a5+'/'+_0x53d222)[_0x1e51('0x1b')](_0x3b01b7);}return null;};}function patchUpdates(_0x183a95){return function(_0x506f40){try{jsonpatch['apply'](_0x506f40,_0x183a95,!![]);}catch(_0x4e6a49){return BPromise['reject'](_0x4e6a49);}return _0x506f40[_0x1e51('0x21')]();};}function saveUpdates(_0x4f1f56,_0x3f7340){return function(_0x28aacb){if(_0x28aacb){return _0x28aacb[_0x1e51('0x22')](_0x4f1f56)[_0x1e51('0x23')](function(_0x23c85a){return _0x23c85a;});}return null;};}function removeEntity(_0xf9298,_0x270adf){return function(_0x461d3d){if(_0x461d3d){return _0x461d3d['destroy']()['then'](function(){var _0x43f5c5=_0x461d3d[_0x1e51('0x24')]({'plain':!![]});var _0x2e42b1=_0x1e51('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x2e42b1,'resourceId':_0x43f5c5['id']}})['then'](function(){return _0x461d3d;});})[_0x1e51('0x23')](function(){_0xf9298[_0x1e51('0x19')](0xcc)[_0x1e51('0x1a')]();});}};}function handleEntityNotFound(_0x5412bc,_0x1e7a96){return function(_0x49c507){if(!_0x49c507){_0x5412bc['sendStatus'](0x194);}return _0x49c507;};}function handleError(_0x3349f0,_0x5c5bbd){_0x5c5bbd=_0x5c5bbd||0x1f4;return function(_0x170ec6){logger[_0x1e51('0x26')](_0x170ec6['stack']);if(_0x170ec6[_0x1e51('0x27')]){delete _0x170ec6[_0x1e51('0x27')];}_0x3349f0[_0x1e51('0x19')](_0x5c5bbd)[_0x1e51('0x28')](_0x170ec6);};}exports['index']=function(_0x4cf046,_0x4f67d3){var _0x20eb9b={},_0x288b50={},_0x1ba84a={'count':0x0,'rows':[]};var _0x36dabe=_[_0x1e51('0x29')](db[_0x1e51('0x2a')][_0x1e51('0x2b')],function(_0x34701c){return{'name':_0x34701c[_0x1e51('0x2c')],'type':_0x34701c[_0x1e51('0x2d')][_0x1e51('0x2e')]};});_0x288b50['model']=_[_0x1e51('0x29')](_0x36dabe,_0x1e51('0x27'));_0x288b50[_0x1e51('0x2f')]=_[_0x1e51('0x30')](_0x4cf046[_0x1e51('0x2f')]);_0x288b50['filters']=_[_0x1e51('0x31')](_0x288b50['model'],_0x288b50[_0x1e51('0x2f')]);_0x20eb9b[_0x1e51('0x32')]=_[_0x1e51('0x31')](_0x288b50['model'],qs[_0x1e51('0x33')](_0x4cf046['query'][_0x1e51('0x33')]));_0x20eb9b['attributes']=_0x20eb9b['attributes'][_0x1e51('0x34')]?_0x20eb9b[_0x1e51('0x32')]:_0x288b50[_0x1e51('0x35')];if(!_0x4cf046['query'][_0x1e51('0x36')]('nolimit')){_0x20eb9b[_0x1e51('0x1d')]=qs[_0x1e51('0x1d')](_0x4cf046['query'][_0x1e51('0x1d')]);_0x20eb9b[_0x1e51('0x1c')]=qs[_0x1e51('0x1c')](_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x1c')]);}_0x20eb9b[_0x1e51('0x37')]=qs['sort'](_0x4cf046['query'][_0x1e51('0x38')]);_0x20eb9b['where']=qs[_0x1e51('0x39')](_[_0x1e51('0x3a')](_0x4cf046[_0x1e51('0x2f')],_0x288b50[_0x1e51('0x39')]),_0x36dabe);if(_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x3b')]){_0x20eb9b[_0x1e51('0x3c')]=_[_0x1e51('0x3d')](_0x20eb9b[_0x1e51('0x3c')],{'$or':_[_0x1e51('0x29')](_0x36dabe,function(_0x45d5fe){if(_0x45d5fe['type']!==_0x1e51('0x3e')){var _0x5818be={};_0x5818be[_0x45d5fe[_0x1e51('0x27')]]={'$like':'%'+_0x4cf046[_0x1e51('0x2f')][_0x1e51('0x3b')]+'%'};return _0x5818be;}})});}_0x20eb9b=_[_0x1e51('0x3d')]({},_0x20eb9b,_0x4cf046[_0x1e51('0x3f')]);var _0x2f8fd9={'where':_0x20eb9b[_0x1e51('0x3c')]};return db[_0x1e51('0x2a')][_0x1e51('0x1e')](_0x2f8fd9)[_0x1e51('0x23')](function(_0xc40fce){_0x1ba84a['count']=_0xc40fce;if(_0x4cf046['query'][_0x1e51('0x40')]){_0x20eb9b[_0x1e51('0x41')]=[{'all':!![]}];}return db[_0x1e51('0x2a')][_0x1e51('0x42')](_0x20eb9b);})[_0x1e51('0x23')](function(_0x1a9e0d){_0x1ba84a[_0x1e51('0x43')]=_0x1a9e0d;return _0x1ba84a;})[_0x1e51('0x23')](respondWithFilteredResult(_0x4f67d3,_0x20eb9b))['catch'](handleError(_0x4f67d3,null));};exports[_0x1e51('0x44')]=function(_0x30eba9,_0x1750b3){var _0x41ca21={'raw':!![],'where':{'id':_0x30eba9[_0x1e51('0x45')]['id']}},_0xfd96a0={};_0xfd96a0[_0x1e51('0x35')]=_['keys'](db[_0x1e51('0x2a')][_0x1e51('0x2b')]);_0xfd96a0['query']=_[_0x1e51('0x30')](_0x30eba9[_0x1e51('0x2f')]);_0xfd96a0[_0x1e51('0x39')]=_['intersection'](_0xfd96a0[_0x1e51('0x35')],_0xfd96a0[_0x1e51('0x2f')]);_0x41ca21[_0x1e51('0x32')]=_[_0x1e51('0x31')](_0xfd96a0[_0x1e51('0x35')],qs[_0x1e51('0x33')](_0x30eba9[_0x1e51('0x2f')][_0x1e51('0x33')]));_0x41ca21[_0x1e51('0x32')]=_0x41ca21['attributes'][_0x1e51('0x34')]?_0x41ca21[_0x1e51('0x32')]:_0xfd96a0['model'];if(_0x30eba9[_0x1e51('0x2f')][_0x1e51('0x40')]){_0x41ca21[_0x1e51('0x41')]=[{'all':!![]}];}_0x41ca21=_['merge']({},_0x41ca21,_0x30eba9[_0x1e51('0x3f')]);return db[_0x1e51('0x2a')][_0x1e51('0x46')](_0x41ca21)['then'](handleEntityNotFound(_0x1750b3,null))[_0x1e51('0x23')](respondWithResult(_0x1750b3,null))['catch'](handleError(_0x1750b3,null));};exports['create']=function(_0x54688b,_0x169e6c){return db[_0x1e51('0x2a')]['create'](_0x54688b['body'],{})[_0x1e51('0x23')](function(_0x7ffc42){var _0x2a43dd=_0x54688b[_0x1e51('0x47')][_0x1e51('0x24')]({'plain':!![]});if(!_0x2a43dd)throw new Error(_0x1e51('0x48'));if(_0x2a43dd['role']===_0x1e51('0x47')){var _0x48a2d0=_0x7ffc42[_0x1e51('0x24')]({'plain':!![]});var _0x43589a='Voicemails';return db['UserProfileSection']['find']({'where':{'name':_0x43589a,'userProfileId':_0x2a43dd[_0x1e51('0x49')]},'raw':!![]})[_0x1e51('0x23')](function(_0x31a37a){if(_0x31a37a&&_0x31a37a['autoAssociation']===0x0){return db[_0x1e51('0x4a')][_0x1e51('0x4b')]({'name':_0x48a2d0[_0x1e51('0x27')],'resourceId':_0x48a2d0['id'],'type':_0x31a37a[_0x1e51('0x27')],'sectionId':_0x31a37a['id']},{})[_0x1e51('0x23')](function(){return _0x7ffc42;});}else{return _0x7ffc42;}})[_0x1e51('0x4c')](function(_0x32fe1f){logger[_0x1e51('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32fe1f);throw _0x32fe1f;});}return _0x7ffc42;})[_0x1e51('0x23')](respondWithResult(_0x169e6c,0xc9))[_0x1e51('0x4c')](handleError(_0x169e6c,null));};exports[_0x1e51('0x22')]=function(_0x213edb,_0x177b63){if(_0x213edb[_0x1e51('0x4d')]['id']){delete _0x213edb['body']['id'];}return db[_0x1e51('0x2a')]['find']({'where':{'id':_0x213edb['params']['id']}})['then'](handleEntityNotFound(_0x177b63,null))[_0x1e51('0x23')](saveUpdates(_0x213edb[_0x1e51('0x4d')],null))[_0x1e51('0x23')](respondWithResult(_0x177b63,null))['catch'](handleError(_0x177b63,null));};exports[_0x1e51('0x4e')]=function(_0x133576,_0x36c981){return db['VoiceMail'][_0x1e51('0x46')]({'where':{'id':_0x133576[_0x1e51('0x45')]['id']}})[_0x1e51('0x23')](handleEntityNotFound(_0x36c981,null))['then'](removeEntity(_0x36c981,null))[_0x1e51('0x4c')](handleError(_0x36c981,null));};exports[_0x1e51('0x4f')]=function(_0x175aa0,_0x30ee67,_0x666ae9){return db[_0x1e51('0x2a')][_0x1e51('0x50')]({'where':{'id':_0x175aa0[_0x1e51('0x45')]['id']}})['then'](handleEntityNotFound(_0x30ee67,null))[_0x1e51('0x23')](function(_0x2e78e7){var _0x48848f;var _0x5a9d2a={},_0x577b19={};_0x577b19[_0x1e51('0x35')]=_[_0x1e51('0x30')](db[_0x1e51('0x51')][_0x1e51('0x2b')]);_0x577b19[_0x1e51('0x2f')]=_[_0x1e51('0x30')](_0x175aa0[_0x1e51('0x2f')]);_0x577b19[_0x1e51('0x39')]=_[_0x1e51('0x31')](_0x577b19['model'],_0x577b19['query']);_0x5a9d2a['attributes']=_[_0x1e51('0x31')](_0x577b19[_0x1e51('0x35')],qs['fields'](_0x175aa0['query'][_0x1e51('0x33')]));_0x5a9d2a[_0x1e51('0x32')]=_0x5a9d2a['attributes'][_0x1e51('0x34')]?_0x5a9d2a[_0x1e51('0x32')]:_0x577b19[_0x1e51('0x35')];if(!_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x36')](_0x1e51('0x52'))){_0x5a9d2a[_0x1e51('0x1d')]=qs[_0x1e51('0x1d')](_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x1d')]);_0x5a9d2a['offset']=qs[_0x1e51('0x1c')](_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x1c')]);}_0x5a9d2a[_0x1e51('0x37')]=qs[_0x1e51('0x38')](_0x175aa0[_0x1e51('0x2f')]['sort']);_0x5a9d2a['where']=qs[_0x1e51('0x39')](_[_0x1e51('0x3a')](_0x175aa0[_0x1e51('0x2f')],_0x577b19[_0x1e51('0x39')]));if(_0x175aa0['query']['filter']){_0x5a9d2a['where']=_[_0x1e51('0x3d')](_0x5a9d2a[_0x1e51('0x3c')],{'$or':_[_0x1e51('0x29')](_0x5a9d2a[_0x1e51('0x32')],function(_0x184665){var _0x5c68b1={};_0x5c68b1[_0x184665]={'$like':'%'+_0x175aa0[_0x1e51('0x2f')][_0x1e51('0x3b')]+'%'};return _0x5c68b1;})});}_0x5a9d2a[_0x1e51('0x3c')]=_['merge'](_0x5a9d2a[_0x1e51('0x3c')],{'mailboxuser':_0x2e78e7[_0x1e51('0x53')]});_0x5a9d2a=_[_0x1e51('0x3d')]({},_0x5a9d2a,_0x175aa0['options']);return db[_0x1e51('0x51')][_0x1e51('0x54')](_0x5a9d2a)['then'](respondWithFilteredResult(_0x30ee67,_0x5a9d2a));})['catch'](handleError(_0x30ee67,null));};
\ No newline at end of file
+var _0xb688=['fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','include','catch','show','rawAttributes','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','findOne','VoiceMailMessage','nolimit','filter','mailbox','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','Content-Range','apply','update','then','destroy','get','Voicemails','end','error','name','send','index','map','VoiceMail'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xb688,0xcf));var _0x8b68=function(_0x560239,_0xc329f6){_0x560239=_0x560239-0x0;var _0x344a6c=_0xb688[_0x560239];return _0x344a6c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b68('0x0'));var zipdir=require(_0x8b68('0x1'));var jsonpatch=require(_0x8b68('0x2'));var rp=require(_0x8b68('0x3'));var moment=require(_0x8b68('0x4'));var BPromise=require(_0x8b68('0x5'));var Mustache=require('mustache');var util=require(_0x8b68('0x6'));var path=require(_0x8b68('0x7'));var sox=require(_0x8b68('0x8'));var csv=require(_0x8b68('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b68('0xa'));var _=require('lodash');var squel=require(_0x8b68('0xb'));var crypto=require(_0x8b68('0xc'));var jsforce=require(_0x8b68('0xd'));var deskjs=require(_0x8b68('0xe'));var toCsv=require(_0x8b68('0x9'));var querystring=require(_0x8b68('0xf'));var Papa=require(_0x8b68('0x10'));var Redis=require(_0x8b68('0x11'));var authService=require(_0x8b68('0x12'));var qs=require(_0x8b68('0x13'));var as=require(_0x8b68('0x14'));var hardwareService=require(_0x8b68('0x15'));var logger=require(_0x8b68('0x16'))('api');var utils=require(_0x8b68('0x17'));var config=require(_0x8b68('0x18'));var licenseUtil=require(_0x8b68('0x19'));var db=require(_0x8b68('0x1a'))['db'];function respondWithStatusCode(_0x1965cf,_0x2f3af4){_0x2f3af4=_0x2f3af4||0xcc;return function(_0xaa8725){if(_0xaa8725){return _0x1965cf[_0x8b68('0x1b')](_0x2f3af4);}return _0x1965cf[_0x8b68('0x1c')](_0x2f3af4)['end']();};}function respondWithResult(_0xb2df35,_0x509033){_0x509033=_0x509033||0xc8;return function(_0x5e3c66){if(_0x5e3c66){return _0xb2df35[_0x8b68('0x1c')](_0x509033)[_0x8b68('0x1d')](_0x5e3c66);}};}function respondWithFilteredResult(_0x27d717,_0x5d3468){return function(_0x5c8d0e){if(_0x5c8d0e){var _0x23bd52=typeof _0x5d3468['offset']===_0x8b68('0x1e')&&typeof _0x5d3468[_0x8b68('0x1f')]===_0x8b68('0x1e');var _0x10c9c6=_0x5c8d0e['count'];var _0xd17693=_0x23bd52?0x0:_0x5d3468[_0x8b68('0x20')];var _0x4a68c7=_0x23bd52?_0x5c8d0e[_0x8b68('0x21')]:_0x5d3468[_0x8b68('0x20')]+_0x5d3468[_0x8b68('0x1f')];var _0x17f321;if(_0x4a68c7>=_0x10c9c6){_0x4a68c7=_0x10c9c6;_0x17f321=0xc8;}else{_0x17f321=0xce;}_0x27d717[_0x8b68('0x1c')](_0x17f321);return _0x27d717['set'](_0x8b68('0x22'),_0xd17693+'-'+_0x4a68c7+'/'+_0x10c9c6)[_0x8b68('0x1d')](_0x5c8d0e);}return null;};}function patchUpdates(_0x59e9b1){return function(_0x1a9788){try{jsonpatch[_0x8b68('0x23')](_0x1a9788,_0x59e9b1,!![]);}catch(_0x1dbc1d){return BPromise['reject'](_0x1dbc1d);}return _0x1a9788['save']();};}function saveUpdates(_0x23edc1,_0x59cb26){return function(_0x332202){if(_0x332202){return _0x332202[_0x8b68('0x24')](_0x23edc1)[_0x8b68('0x25')](function(_0x21ecca){return _0x21ecca;});}return null;};}function removeEntity(_0x32ddc5,_0x173524){return function(_0x59bb8a){if(_0x59bb8a){return _0x59bb8a[_0x8b68('0x26')]()[_0x8b68('0x25')](function(){var _0x4ca77d=_0x59bb8a[_0x8b68('0x27')]({'plain':!![]});var _0x3cf8d2=_0x8b68('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x3cf8d2,'resourceId':_0x4ca77d['id']}})['then'](function(){return _0x59bb8a;});})[_0x8b68('0x25')](function(){_0x32ddc5[_0x8b68('0x1c')](0xcc)[_0x8b68('0x29')]();});}};}function handleEntityNotFound(_0x583476,_0x3311c7){return function(_0x53aaa2){if(!_0x53aaa2){_0x583476['sendStatus'](0x194);}return _0x53aaa2;};}function handleError(_0x3865ea,_0x59b3ce){_0x59b3ce=_0x59b3ce||0x1f4;return function(_0x26cad7){logger[_0x8b68('0x2a')](_0x26cad7['stack']);if(_0x26cad7['name']){delete _0x26cad7[_0x8b68('0x2b')];}_0x3865ea[_0x8b68('0x1c')](_0x59b3ce)[_0x8b68('0x2c')](_0x26cad7);};}exports[_0x8b68('0x2d')]=function(_0x210926,_0x2ad2df){var _0x460c37={},_0x5b7ed1={},_0x3b6d1b={'count':0x0,'rows':[]};var _0x50a1e9=_[_0x8b68('0x2e')](db[_0x8b68('0x2f')]['rawAttributes'],function(_0x216aa6){return{'name':_0x216aa6[_0x8b68('0x30')],'type':_0x216aa6[_0x8b68('0x31')]['key']};});_0x5b7ed1['model']=_[_0x8b68('0x2e')](_0x50a1e9,_0x8b68('0x2b'));_0x5b7ed1[_0x8b68('0x32')]=_[_0x8b68('0x33')](_0x210926[_0x8b68('0x32')]);_0x5b7ed1[_0x8b68('0x34')]=_[_0x8b68('0x35')](_0x5b7ed1[_0x8b68('0x36')],_0x5b7ed1[_0x8b68('0x32')]);_0x460c37[_0x8b68('0x37')]=_[_0x8b68('0x35')](_0x5b7ed1[_0x8b68('0x36')],qs[_0x8b68('0x38')](_0x210926[_0x8b68('0x32')][_0x8b68('0x38')]));_0x460c37[_0x8b68('0x37')]=_0x460c37[_0x8b68('0x37')][_0x8b68('0x39')]?_0x460c37[_0x8b68('0x37')]:_0x5b7ed1[_0x8b68('0x36')];if(!_0x210926[_0x8b68('0x32')][_0x8b68('0x3a')]('nolimit')){_0x460c37['limit']=qs[_0x8b68('0x1f')](_0x210926[_0x8b68('0x32')][_0x8b68('0x1f')]);_0x460c37[_0x8b68('0x20')]=qs[_0x8b68('0x20')](_0x210926[_0x8b68('0x32')][_0x8b68('0x20')]);}_0x460c37[_0x8b68('0x3b')]=qs['sort'](_0x210926[_0x8b68('0x32')][_0x8b68('0x3c')]);_0x460c37[_0x8b68('0x3d')]=qs[_0x8b68('0x34')](_[_0x8b68('0x3e')](_0x210926[_0x8b68('0x32')],_0x5b7ed1[_0x8b68('0x34')]),_0x50a1e9);if(_0x210926[_0x8b68('0x32')]['filter']){_0x460c37[_0x8b68('0x3d')]=_[_0x8b68('0x3f')](_0x460c37[_0x8b68('0x3d')],{'$or':_[_0x8b68('0x2e')](_0x50a1e9,function(_0x3ecc60){if(_0x3ecc60[_0x8b68('0x31')]!==_0x8b68('0x40')){var _0x50a9c6={};_0x50a9c6[_0x3ecc60[_0x8b68('0x2b')]]={'$like':'%'+_0x210926[_0x8b68('0x32')]['filter']+'%'};return _0x50a9c6;}})});}_0x460c37=_[_0x8b68('0x3f')]({},_0x460c37,_0x210926[_0x8b68('0x41')]);var _0x50b2f1={'where':_0x460c37['where']};return db['VoiceMail']['count'](_0x50b2f1)[_0x8b68('0x25')](function(_0x23d24a){_0x3b6d1b['count']=_0x23d24a;if(_0x210926[_0x8b68('0x32')]['includeAll']){_0x460c37[_0x8b68('0x42')]=[{'all':!![]}];}return db[_0x8b68('0x2f')]['findAll'](_0x460c37);})[_0x8b68('0x25')](function(_0x5ae345){_0x3b6d1b['rows']=_0x5ae345;return _0x3b6d1b;})['then'](respondWithFilteredResult(_0x2ad2df,_0x460c37))[_0x8b68('0x43')](handleError(_0x2ad2df,null));};exports[_0x8b68('0x44')]=function(_0x3ba80e,_0xa70f60){var _0x50e425={'raw':!![],'where':{'id':_0x3ba80e['params']['id']}},_0x20162a={};_0x20162a[_0x8b68('0x36')]=_[_0x8b68('0x33')](db['VoiceMail'][_0x8b68('0x45')]);_0x20162a[_0x8b68('0x32')]=_[_0x8b68('0x33')](_0x3ba80e[_0x8b68('0x32')]);_0x20162a['filters']=_[_0x8b68('0x35')](_0x20162a[_0x8b68('0x36')],_0x20162a[_0x8b68('0x32')]);_0x50e425[_0x8b68('0x37')]=_[_0x8b68('0x35')](_0x20162a[_0x8b68('0x36')],qs[_0x8b68('0x38')](_0x3ba80e[_0x8b68('0x32')][_0x8b68('0x38')]));_0x50e425[_0x8b68('0x37')]=_0x50e425[_0x8b68('0x37')][_0x8b68('0x39')]?_0x50e425[_0x8b68('0x37')]:_0x20162a[_0x8b68('0x36')];if(_0x3ba80e[_0x8b68('0x32')][_0x8b68('0x46')]){_0x50e425['include']=[{'all':!![]}];}_0x50e425=_[_0x8b68('0x3f')]({},_0x50e425,_0x3ba80e[_0x8b68('0x41')]);return db['VoiceMail'][_0x8b68('0x47')](_0x50e425)['then'](handleEntityNotFound(_0xa70f60,null))['then'](respondWithResult(_0xa70f60,null))['catch'](handleError(_0xa70f60,null));};exports[_0x8b68('0x48')]=function(_0x35874b,_0x34047c){return db[_0x8b68('0x2f')]['create'](_0x35874b['body'],{})[_0x8b68('0x25')](function(_0x163fd5){var _0x1e900f=_0x35874b['user'][_0x8b68('0x27')]({'plain':!![]});if(!_0x1e900f)throw new Error(_0x8b68('0x49'));if(_0x1e900f['role']===_0x8b68('0x4a')){var _0xacac82=_0x163fd5['get']({'plain':!![]});var _0x18a9ae=_0x8b68('0x28');return db['UserProfileSection'][_0x8b68('0x47')]({'where':{'name':_0x18a9ae,'userProfileId':_0x1e900f[_0x8b68('0x4b')]},'raw':!![]})['then'](function(_0x543d74){if(_0x543d74&&_0x543d74['autoAssociation']===0x0){return db[_0x8b68('0x4c')][_0x8b68('0x48')]({'name':_0xacac82[_0x8b68('0x2b')],'resourceId':_0xacac82['id'],'type':_0x543d74[_0x8b68('0x2b')],'sectionId':_0x543d74['id']},{})['then'](function(){return _0x163fd5;});}else{return _0x163fd5;}})['catch'](function(_0x4492fd){logger[_0x8b68('0x2a')](_0x8b68('0x4d'),_0x4492fd);throw _0x4492fd;});}return _0x163fd5;})['then'](respondWithResult(_0x34047c,0xc9))[_0x8b68('0x43')](handleError(_0x34047c,null));};exports[_0x8b68('0x24')]=function(_0x3f9d34,_0x4dda69){if(_0x3f9d34[_0x8b68('0x4e')]['id']){delete _0x3f9d34['body']['id'];}return db[_0x8b68('0x2f')][_0x8b68('0x47')]({'where':{'id':_0x3f9d34['params']['id']}})[_0x8b68('0x25')](handleEntityNotFound(_0x4dda69,null))[_0x8b68('0x25')](saveUpdates(_0x3f9d34[_0x8b68('0x4e')],null))[_0x8b68('0x25')](respondWithResult(_0x4dda69,null))[_0x8b68('0x43')](handleError(_0x4dda69,null));};exports['destroy']=function(_0x241166,_0x3f3e43){return db[_0x8b68('0x2f')][_0x8b68('0x47')]({'where':{'id':_0x241166[_0x8b68('0x4f')]['id']}})[_0x8b68('0x25')](handleEntityNotFound(_0x3f3e43,null))[_0x8b68('0x25')](removeEntity(_0x3f3e43,null))[_0x8b68('0x43')](handleError(_0x3f3e43,null));};exports['getMessages']=function(_0x3f423e,_0x1a85da,_0x1e8694){return db[_0x8b68('0x2f')][_0x8b68('0x50')]({'where':{'id':_0x3f423e[_0x8b68('0x4f')]['id']}})[_0x8b68('0x25')](handleEntityNotFound(_0x1a85da,null))[_0x8b68('0x25')](function(_0x6d63cb){var _0x271dbe;var _0x368c86={},_0x42871e={};_0x42871e[_0x8b68('0x36')]=_[_0x8b68('0x33')](db[_0x8b68('0x51')][_0x8b68('0x45')]);_0x42871e[_0x8b68('0x32')]=_[_0x8b68('0x33')](_0x3f423e[_0x8b68('0x32')]);_0x42871e[_0x8b68('0x34')]=_['intersection'](_0x42871e[_0x8b68('0x36')],_0x42871e['query']);_0x368c86['attributes']=_[_0x8b68('0x35')](_0x42871e['model'],qs[_0x8b68('0x38')](_0x3f423e[_0x8b68('0x32')][_0x8b68('0x38')]));_0x368c86['attributes']=_0x368c86[_0x8b68('0x37')][_0x8b68('0x39')]?_0x368c86[_0x8b68('0x37')]:_0x42871e[_0x8b68('0x36')];if(!_0x3f423e[_0x8b68('0x32')][_0x8b68('0x3a')](_0x8b68('0x52'))){_0x368c86['limit']=qs['limit'](_0x3f423e[_0x8b68('0x32')][_0x8b68('0x1f')]);_0x368c86[_0x8b68('0x20')]=qs[_0x8b68('0x20')](_0x3f423e[_0x8b68('0x32')][_0x8b68('0x20')]);}_0x368c86[_0x8b68('0x3b')]=qs[_0x8b68('0x3c')](_0x3f423e[_0x8b68('0x32')][_0x8b68('0x3c')]);_0x368c86[_0x8b68('0x3d')]=qs[_0x8b68('0x34')](_[_0x8b68('0x3e')](_0x3f423e[_0x8b68('0x32')],_0x42871e[_0x8b68('0x34')]));if(_0x3f423e[_0x8b68('0x32')][_0x8b68('0x53')]){_0x368c86[_0x8b68('0x3d')]=_['merge'](_0x368c86['where'],{'$or':_[_0x8b68('0x2e')](_0x368c86[_0x8b68('0x37')],function(_0x5bd581){var _0x48d57a={};_0x48d57a[_0x5bd581]={'$like':'%'+_0x3f423e['query'][_0x8b68('0x53')]+'%'};return _0x48d57a;})});}_0x368c86[_0x8b68('0x3d')]=_[_0x8b68('0x3f')](_0x368c86[_0x8b68('0x3d')],{'mailboxuser':_0x6d63cb[_0x8b68('0x54')]});_0x368c86=_['merge']({},_0x368c86,_0x3f423e[_0x8b68('0x41')]);return db[_0x8b68('0x51')]['findAndCountAll'](_0x368c86)[_0x8b68('0x25')](respondWithFilteredResult(_0x1a85da,_0x368c86));})['catch'](handleError(_0x1a85da,null));};
\ No newline at end of file
index cc2ce73..6474449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc48c=['../../config/environment','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x28cf60,_0x2fe9d9){var _0x2b61e5=function(_0x28b6ba){while(--_0x28b6ba){_0x28cf60['push'](_0x28cf60['shift']());}};_0x2b61e5(++_0x2fe9d9);}(_0xc48c,0x158));var _0xcc48=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xc48c[_0x15bc81];return _0x59440e;};'use strict';var _=require(_0xcc48('0x0'));var util=require(_0xcc48('0x1'));var logger=require(_0xcc48('0x2'))(_0xcc48('0x3'));var moment=require(_0xcc48('0x4'));var BPromise=require(_0xcc48('0x5'));var rp=require(_0xcc48('0x6'));var fs=require('fs');var path=require(_0xcc48('0x7'));var rimraf=require('rimraf');var config=require(_0xcc48('0x8'));var attributes=require('./voiceMail.attributes');module[_0xcc48('0x9')]=function(_0x147d03,_0x54d21a){return _0x147d03[_0xcc48('0xa')](_0xcc48('0xb'),attributes,{'tableName':_0xcc48('0xc'),'paranoid':![],'indexes':[{'name':_0xcc48('0xd'),'fields':[_0xcc48('0xe'),_0xcc48('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3fd6=['voice_voicemail','mailbox_context','mailbox','context','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceMail'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x3fd6,0xee));var _0x63fd=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x3fd6[_0x167cc1];return _0x10bc4b;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x63fd('0x0'));var moment=require('moment');var BPromise=require(_0x63fd('0x1'));var rp=require(_0x63fd('0x2'));var fs=require('fs');var path=require(_0x63fd('0x3'));var rimraf=require(_0x63fd('0x4'));var config=require(_0x63fd('0x5'));var attributes=require('./voiceMail.attributes');module[_0x63fd('0x6')]=function(_0x71693c,_0x5f1ab3){return _0x71693c[_0x63fd('0x7')](_0x63fd('0x8'),attributes,{'tableName':_0x63fd('0x9'),'paranoid':![],'indexes':[{'name':_0x63fd('0xa'),'fields':[_0x63fd('0xb'),_0x63fd('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c7fdbbb..c2cf0a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f7=['../../config/logger','../../config/environment','jayson/promise','client','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0xa3f7,0xd5));var _0x7a3f=function(_0x516d32,_0x47449c){_0x516d32=_0x516d32-0x0;var _0x243fe2=_0xa3f7[_0x516d32];return _0x243fe2;};'use strict';var _=require(_0x7a3f('0x0'));var util=require(_0x7a3f('0x1'));var moment=require(_0x7a3f('0x2'));var BPromise=require(_0x7a3f('0x3'));var rs=require(_0x7a3f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7a3f('0x5'))['db'];var utils=require(_0x7a3f('0x6'));var logger=require(_0x7a3f('0x7'))('rpc');var config=require(_0x7a3f('0x8'));var jayson=require(_0x7a3f('0x9'));var client=jayson[_0x7a3f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39106a,_0x50624f,_0x1740f1){return new BPromise(function(_0x4ce871,_0x5bffd5){return client['request'](_0x39106a,_0x1740f1)[_0x7a3f('0xb')](function(_0x316e21){logger['info'](_0x7a3f('0xc'),_0x50624f,_0x7a3f('0xd'));logger[_0x7a3f('0xe')](_0x7a3f('0xf'),_0x50624f,_0x7a3f('0xd'),JSON[_0x7a3f('0x10')](_0x316e21));if(_0x316e21[_0x7a3f('0x11')]){if(_0x316e21[_0x7a3f('0x11')]['code']===0x1f4){logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x316e21[_0x7a3f('0x11')][_0x7a3f('0x12')]);return _0x5bffd5(_0x316e21[_0x7a3f('0x11')][_0x7a3f('0x12')]);}logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x316e21['error'][_0x7a3f('0x12')]);return _0x4ce871(_0x316e21[_0x7a3f('0x11')]['message']);}else{logger['info'](_0x7a3f('0xc'),_0x50624f,_0x7a3f('0xd'));_0x4ce871(_0x316e21['result'][_0x7a3f('0x12')]);}})[_0x7a3f('0x13')](function(_0x519544){logger[_0x7a3f('0x11')](_0x7a3f('0xc'),_0x50624f,_0x519544);_0x5bffd5(_0x519544);});});}
\ No newline at end of file
+var _0x6c7b=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x255bd1,_0x30e8e5){var _0x40f3c4=function(_0x691dc){while(--_0x691dc){_0x255bd1['push'](_0x255bd1['shift']());}};_0x40f3c4(++_0x30e8e5);}(_0x6c7b,0xd4));var _0xb6c7=function(_0xd88cfa,_0x234dcd){_0xd88cfa=_0xd88cfa-0x0;var _0x1a4edf=_0x6c7b[_0xd88cfa];return _0x1a4edf;};'use strict';var _=require(_0xb6c7('0x0'));var util=require(_0xb6c7('0x1'));var moment=require(_0xb6c7('0x2'));var BPromise=require(_0xb6c7('0x3'));var rs=require(_0xb6c7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6c7('0x5'))['db'];var utils=require(_0xb6c7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb6c7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb6c7('0x8')][_0xb6c7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x591be3,_0x24a1c1,_0x52dfd8){return new BPromise(function(_0x2d2d8f,_0x299dd8){return client[_0xb6c7('0xa')](_0x591be3,_0x52dfd8)[_0xb6c7('0xb')](function(_0x45d0d8){logger[_0xb6c7('0xc')](_0xb6c7('0xd'),_0x24a1c1,_0xb6c7('0xe'));logger['debug'](_0xb6c7('0xf'),_0x24a1c1,_0xb6c7('0xe'),JSON['stringify'](_0x45d0d8));if(_0x45d0d8['error']){if(_0x45d0d8[_0xb6c7('0x10')][_0xb6c7('0x11')]===0x1f4){logger[_0xb6c7('0x10')](_0xb6c7('0xd'),_0x24a1c1,_0x45d0d8['error'][_0xb6c7('0x12')]);return _0x299dd8(_0x45d0d8[_0xb6c7('0x10')][_0xb6c7('0x12')]);}logger[_0xb6c7('0x10')]('VoiceMail,\x20%s,\x20%s',_0x24a1c1,_0x45d0d8['error']['message']);return _0x2d2d8f(_0x45d0d8[_0xb6c7('0x10')][_0xb6c7('0x12')]);}else{logger[_0xb6c7('0xc')]('VoiceMail,\x20%s,\x20%s',_0x24a1c1,_0xb6c7('0xe'));_0x2d2d8f(_0x45d0d8[_0xb6c7('0x13')][_0xb6c7('0x12')]);}})[_0xb6c7('0x14')](function(_0x28b5a2){logger[_0xb6c7('0x10')](_0xb6c7('0xd'),_0x24a1c1,_0x28b5a2);_0x299dd8(_0x28b5a2);});});}
\ No newline at end of file
index 3802b65..1cd7ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb69a=['fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put','update','destroy','multer','path','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb69a,0x1b1));var _0xab69=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xb69a[_0x164eca];return _0x2ce562;};'use strict';var multer=require(_0xab69('0x0'));var util=require('util');var path=require(_0xab69('0x1'));var timeout=require('connect-timeout');var express=require(_0xab69('0x2'));var router=express[_0xab69('0x3')]();var fs_extra=require(_0xab69('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xab69('0x5'));var config=require(_0xab69('0x6'));var controller=require('./voiceMailMessage.controller');router[_0xab69('0x7')]('/',auth[_0xab69('0x8')](),controller[_0xab69('0x9')]);router['get'](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0xb')]);router['get'](_0xab69('0xc'),auth[_0xab69('0x8')](),controller[_0xab69('0xd')]);router[_0xab69('0xe')]('/',auth[_0xab69('0x8')](),controller[_0xab69('0xf')]);router[_0xab69('0x10')](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0x11')]);router['delete'](_0xab69('0xa'),auth[_0xab69('0x8')](),controller[_0xab69('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xae3a=['put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/download','download','post'];(function(_0x99facc,_0x548cd6){var _0xd39ed0=function(_0x207e47){while(--_0x207e47){_0x99facc['push'](_0x99facc['shift']());}};_0xd39ed0(++_0x548cd6);}(_0xae3a,0x6d));var _0xaae3=function(_0x3ac946,_0x52a63a){_0x3ac946=_0x3ac946-0x0;var _0x10826c=_0xae3a[_0x3ac946];return _0x10826c;};'use strict';var multer=require(_0xaae3('0x0'));var util=require(_0xaae3('0x1'));var path=require('path');var timeout=require(_0xaae3('0x2'));var express=require(_0xaae3('0x3'));var router=express[_0xaae3('0x4')]();var fs_extra=require(_0xaae3('0x5'));var auth=require(_0xaae3('0x6'));var interaction=require(_0xaae3('0x7'));var config=require(_0xaae3('0x8'));var controller=require('./voiceMailMessage.controller');router[_0xaae3('0x9')]('/',auth['isAuthenticated'](),controller[_0xaae3('0xa')]);router[_0xaae3('0x9')](_0xaae3('0xb'),auth[_0xaae3('0xc')](),controller[_0xaae3('0xd')]);router[_0xaae3('0x9')](_0xaae3('0xe'),auth['isAuthenticated'](),controller[_0xaae3('0xf')]);router[_0xaae3('0x10')]('/',auth[_0xaae3('0xc')](),controller['create']);router[_0xaae3('0x11')]('/:id',auth[_0xaae3('0xc')](),controller[_0xaae3('0x12')]);router[_0xaae3('0x13')](_0xaae3('0xb'),auth[_0xaae3('0xc')](),controller['destroy']);module[_0xaae3('0x14')]=router;
\ No newline at end of file
index 9ddf9bf..48ab11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb184=['getDataValue','INTEGER','STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL'];(function(_0x1e7517,_0x4b03c9){var _0x522f4c=function(_0x4b056b){while(--_0x4b056b){_0x1e7517['push'](_0x1e7517['shift']());}};_0x522f4c(++_0x4b03c9);}(_0xb184,0xa7));var _0x4b18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb184[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4b18('0x0'));module[_0x4b18('0x1')]={'name':{'type':Sequelize[_0x4b18('0x2')],'get':function(_0x4e1144){return this[_0x4b18('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x4b18('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x4b18('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x4b18('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x4b18('0x7'),'defaultValue':Sequelize[_0x4b18('0x8')](_0x4b18('0x9'))}};
\ No newline at end of file
+var _0x8ecf=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB'];(function(_0x23e33d,_0x31c8c8){var _0x818fc=function(_0x19f33e){while(--_0x19f33e){_0x23e33d['push'](_0x23e33d['shift']());}};_0x818fc(++_0x31c8c8);}(_0x8ecf,0x107));var _0xf8ec=function(_0x3ba135,_0x5c9c65){_0x3ba135=_0x3ba135-0x0;var _0x2d7cbb=_0x8ecf[_0x3ba135];return _0x2d7cbb;};'use strict';var Sequelize=require(_0xf8ec('0x0'));module[_0xf8ec('0x1')]={'name':{'type':Sequelize[_0xf8ec('0x2')],'get':function(_0x553d32){return this[_0xf8ec('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xf8ec('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0xf8ec('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xf8ec('0x5')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xf8ec('0x7')](_0xf8ec('0x8'))}};
\ No newline at end of file
index 27bd52f..fe049b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x801f=['recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','rimraf','zip-dir','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','status','end','offset','undefined','limit','count','json','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceMailMessage','rawAttributes','type','key','differenceBy','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','params','merge','find','catch','body','download'];(function(_0x190bb7,_0x3fafc0){var _0x2d5edd=function(_0x52e356){while(--_0x52e356){_0x190bb7['push'](_0x190bb7['shift']());}};_0x2d5edd(++_0x3fafc0);}(_0x801f,0x1d7));var _0xf801=function(_0x17e73b,_0x237aba){_0x17e73b=_0x17e73b-0x0;var _0x14fdb7=_0x801f[_0x17e73b];return _0x14fdb7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf801('0x0'));var zipdir=require(_0xf801('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf801('0x2'));var BPromise=require(_0xf801('0x3'));var Mustache=require(_0xf801('0x4'));var util=require('util');var path=require('path');var sox=require(_0xf801('0x5'));var csv=require(_0xf801('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf801('0x7'));var _=require(_0xf801('0x8'));var squel=require(_0xf801('0x9'));var crypto=require(_0xf801('0xa'));var jsforce=require(_0xf801('0xb'));var deskjs=require(_0xf801('0xc'));var toCsv=require(_0xf801('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf801('0xd'));var authService=require(_0xf801('0xe'));var qs=require(_0xf801('0xf'));var as=require(_0xf801('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf801('0x11'))(_0xf801('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf801('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10ca52,_0x298ec7){_0x298ec7=_0x298ec7||0xcc;return function(_0x2940e7){if(_0x2940e7){return _0x10ca52['sendStatus'](_0x298ec7);}return _0x10ca52[_0xf801('0x14')](_0x298ec7)[_0xf801('0x15')]();};}function respondWithResult(_0x45ba2f,_0x428f96){_0x428f96=_0x428f96||0xc8;return function(_0x2e0cc3){if(_0x2e0cc3){return _0x45ba2f[_0xf801('0x14')](_0x428f96)['json'](_0x2e0cc3);}};}function respondWithFilteredResult(_0x1f8ac8,_0x356037){return function(_0x49672a){if(_0x49672a){var _0x49e79f=typeof _0x356037[_0xf801('0x16')]===_0xf801('0x17')&&typeof _0x356037[_0xf801('0x18')]===_0xf801('0x17');var _0x549658=_0x49672a[_0xf801('0x19')];var _0x574340=_0x49e79f?0x0:_0x356037[_0xf801('0x16')];var _0x34d44c=_0x49e79f?_0x49672a[_0xf801('0x19')]:_0x356037[_0xf801('0x16')]+_0x356037[_0xf801('0x18')];var _0x5da705;if(_0x34d44c>=_0x549658){_0x34d44c=_0x549658;_0x5da705=0xc8;}else{_0x5da705=0xce;}_0x1f8ac8[_0xf801('0x14')](_0x5da705);return _0x1f8ac8['set']('Content-Range',_0x574340+'-'+_0x34d44c+'/'+_0x549658)[_0xf801('0x1a')](_0x49672a);}return null;};}function patchUpdates(_0x518172){return function(_0x39c84f){try{jsonpatch[_0xf801('0x1b')](_0x39c84f,_0x518172,!![]);}catch(_0x4030b1){return BPromise['reject'](_0x4030b1);}return _0x39c84f[_0xf801('0x1c')]();};}function saveUpdates(_0x58b282,_0x554fe6){return function(_0x35e736){if(_0x35e736){return _0x35e736[_0xf801('0x1d')](_0x58b282)[_0xf801('0x1e')](function(_0x313e45){return _0x313e45;});}return null;};}function removeEntity(_0x5062fd,_0x3e90bb){return function(_0x31af81){if(_0x31af81){return _0x31af81[_0xf801('0x1f')]()['then'](function(){_0x5062fd[_0xf801('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f6fee,_0x1136b3){return function(_0x15e1b6){if(!_0x15e1b6){_0x4f6fee[_0xf801('0x20')](0x194);}return _0x15e1b6;};}function handleError(_0x3f24a0,_0x139456){_0x139456=_0x139456||0x1f4;return function(_0x111f76){logger[_0xf801('0x21')](_0x111f76[_0xf801('0x22')]);if(_0x111f76[_0xf801('0x23')]){delete _0x111f76[_0xf801('0x23')];}_0x3f24a0['status'](_0x139456)[_0xf801('0x24')](_0x111f76);};}exports[_0xf801('0x25')]=function(_0x3cdc0e,_0x4bd628){var _0x3bcfef={},_0x4b65c1={},_0x1f7334={'count':0x0,'rows':[]};var _0x1fe178=_[_0xf801('0x26')](db[_0xf801('0x27')][_0xf801('0x28')],function(_0x21dc0b){return{'name':_0x21dc0b['fieldName'],'type':_0x21dc0b[_0xf801('0x29')][_0xf801('0x2a')]};});_0x4b65c1['model']=_[_0xf801('0x2b')](_['map'](_0x1fe178,_0xf801('0x23')),['name']);_0x4b65c1['query']=_[_0xf801('0x2c')](_0x3cdc0e[_0xf801('0x2d')]);_0x4b65c1[_0xf801('0x2e')]=_[_0xf801('0x2f')](_0x4b65c1[_0xf801('0x30')],_0x4b65c1[_0xf801('0x2d')]);_0x3bcfef[_0xf801('0x31')]=_[_0xf801('0x2f')](_0x4b65c1['model'],qs[_0xf801('0x32')](_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x32')]));_0x3bcfef[_0xf801('0x31')]=_0x3bcfef['attributes'][_0xf801('0x33')]?_0x3bcfef[_0xf801('0x31')]:_0x4b65c1['model'];if(!_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x34')]('nolimit')){_0x3bcfef[_0xf801('0x18')]=qs[_0xf801('0x18')](_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x18')]);_0x3bcfef[_0xf801('0x16')]=qs[_0xf801('0x16')](_0x3cdc0e[_0xf801('0x2d')]['offset']);}_0x3bcfef[_0xf801('0x35')]=qs[_0xf801('0x36')](_0x3cdc0e[_0xf801('0x2d')]['sort']);_0x3bcfef[_0xf801('0x37')]=qs['filters'](_[_0xf801('0x38')](_0x3cdc0e[_0xf801('0x2d')],_0x4b65c1['filters']),_0x1fe178);if(_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x39')]){_0x3bcfef['where']=_['merge'](_0x3bcfef[_0xf801('0x37')],{'$or':_[_0xf801('0x26')](_0x1fe178,function(_0x273bec){if(_0x273bec[_0xf801('0x29')]!==_0xf801('0x3a')){var _0x13f6e5={};_0x13f6e5[_0x273bec[_0xf801('0x23')]]={'$like':'%'+_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x39')]+'%'};return _0x13f6e5;}})});}_0x3bcfef=_['merge']({},_0x3bcfef,_0x3cdc0e[_0xf801('0x3b')]);var _0x145a2e={'where':_0x3bcfef[_0xf801('0x37')]};return db[_0xf801('0x27')][_0xf801('0x19')](_0x145a2e)[_0xf801('0x1e')](function(_0x2d312d){_0x1f7334[_0xf801('0x19')]=_0x2d312d;if(_0x3cdc0e[_0xf801('0x2d')][_0xf801('0x3c')]){_0x3bcfef[_0xf801('0x3d')]=[{'all':!![]}];}return db[_0xf801('0x27')]['findAll'](_0x3bcfef);})[_0xf801('0x1e')](function(_0x34d362){_0x1f7334['rows']=_0x34d362;return _0x1f7334;})[_0xf801('0x1e')](respondWithFilteredResult(_0x4bd628,_0x3bcfef))['catch'](handleError(_0x4bd628,null));};exports['show']=function(_0x130af8,_0x59bcd2){var _0x172dc6={'raw':!![],'where':{'id':_0x130af8[_0xf801('0x3e')]['id']}},_0x1560a5={};_0x1560a5[_0xf801('0x30')]=_[_0xf801('0x2c')](db[_0xf801('0x27')][_0xf801('0x28')]);_0x1560a5[_0xf801('0x2d')]=_[_0xf801('0x2c')](_0x130af8[_0xf801('0x2d')]);_0x1560a5['filters']=_[_0xf801('0x2f')](_0x1560a5[_0xf801('0x30')],_0x1560a5[_0xf801('0x2d')]);_0x172dc6[_0xf801('0x31')]=_[_0xf801('0x2f')](_0x1560a5[_0xf801('0x30')],qs[_0xf801('0x32')](_0x130af8['query'][_0xf801('0x32')]));_0x172dc6['attributes']=_0x172dc6[_0xf801('0x31')][_0xf801('0x33')]?_0x172dc6[_0xf801('0x31')]:_0x1560a5[_0xf801('0x30')];if(_0x130af8[_0xf801('0x2d')][_0xf801('0x3c')]){_0x172dc6[_0xf801('0x3d')]=[{'all':!![]}];}_0x172dc6=_[_0xf801('0x3f')]({},_0x172dc6,_0x130af8[_0xf801('0x3b')]);return db[_0xf801('0x27')][_0xf801('0x40')](_0x172dc6)[_0xf801('0x1e')](handleEntityNotFound(_0x59bcd2,null))[_0xf801('0x1e')](respondWithResult(_0x59bcd2,null))[_0xf801('0x41')](handleError(_0x59bcd2,null));};exports['create']=function(_0x2a87f0,_0x107b34){return db[_0xf801('0x27')]['create'](_0x2a87f0[_0xf801('0x42')],{})[_0xf801('0x1e')](respondWithResult(_0x107b34,0xc9))[_0xf801('0x41')](handleError(_0x107b34,null));};exports['update']=function(_0x4718eb,_0x7285e8){if(_0x4718eb['body']['id']){delete _0x4718eb[_0xf801('0x42')]['id'];}return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x4718eb[_0xf801('0x3e')]['id']}})[_0xf801('0x1e')](handleEntityNotFound(_0x7285e8,null))[_0xf801('0x1e')](saveUpdates(_0x4718eb[_0xf801('0x42')],null))[_0xf801('0x1e')](respondWithResult(_0x7285e8,null))[_0xf801('0x41')](handleError(_0x7285e8,null));};exports[_0xf801('0x1f')]=function(_0x4dba40,_0x1cde12){return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x4dba40[_0xf801('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1cde12,null))[_0xf801('0x1e')](removeEntity(_0x1cde12,null))[_0xf801('0x41')](handleError(_0x1cde12,null));};exports[_0xf801('0x43')]=function(_0x356c43,_0x5283ef,_0x7e6b13){return db[_0xf801('0x27')][_0xf801('0x40')]({'where':{'id':_0x356c43[_0xf801('0x3e')]['id']},'attributes':['id',_0xf801('0x44'),_0xf801('0x45')]})[_0xf801('0x1e')](handleEntityNotFound(_0x5283ef,null))[_0xf801('0x1e')](function(_0x125152){if(_0x125152){if(!_0x125152[_0xf801('0x44')]){throw new db[(_0xf801('0x46'))]['ValidationError'](_0xf801('0x47'));}var _0x177850={'Content-Type':'audio/wav','Content-Disposition':_0xf801('0x48')};if(_0x125152['msg_id']){_0x177850[_0xf801('0x49')]=_0xf801('0x4a')+_0x125152[_0xf801('0x45')]+_0xf801('0x4b');}_0x5283ef[_0xf801('0x4c')](_0x177850);return _0x5283ef['send'](new Buffer(_0x125152[_0xf801('0x44')]));}})[_0xf801('0x41')](handleError(_0x5283ef,null));};
\ No newline at end of file
+var _0xe585=['audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','set','json','save','update','then','end','error','stack','name','send','map','fieldName','type','differenceBy','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','VoiceMailMessage','includeAll','findAll','rows','catch','show','rawAttributes','include','options','find','create','body','params','destroy','download','recording','msg_id','Sequelize'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xe585,0xaa));var _0x5e58=function(_0x33a966,_0x1d6446){_0x33a966=_0x33a966-0x0;var _0x1c5ec4=_0xe585[_0x33a966];return _0x1c5ec4;};'use strict';var emlformat=require(_0x5e58('0x0'));var rimraf=require(_0x5e58('0x1'));var zipdir=require(_0x5e58('0x2'));var jsonpatch=require(_0x5e58('0x3'));var rp=require(_0x5e58('0x4'));var moment=require('moment');var BPromise=require(_0x5e58('0x5'));var Mustache=require('mustache');var util=require(_0x5e58('0x6'));var path=require(_0x5e58('0x7'));var sox=require(_0x5e58('0x8'));var csv=require(_0x5e58('0x9'));var ejs=require(_0x5e58('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5e58('0xb'));var squel=require(_0x5e58('0xc'));var crypto=require('crypto');var jsforce=require(_0x5e58('0xd'));var deskjs=require(_0x5e58('0xe'));var toCsv=require(_0x5e58('0x9'));var querystring=require(_0x5e58('0xf'));var Papa=require('papaparse');var Redis=require(_0x5e58('0x10'));var authService=require(_0x5e58('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5e58('0x12'));var hardwareService=require(_0x5e58('0x13'));var logger=require(_0x5e58('0x14'))(_0x5e58('0x15'));var utils=require(_0x5e58('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5e58('0x17'));var db=require(_0x5e58('0x18'))['db'];function respondWithStatusCode(_0x38644d,_0x532f9c){_0x532f9c=_0x532f9c||0xcc;return function(_0x5ea572){if(_0x5ea572){return _0x38644d[_0x5e58('0x19')](_0x532f9c);}return _0x38644d[_0x5e58('0x1a')](_0x532f9c)['end']();};}function respondWithResult(_0x305476,_0x2283b4){_0x2283b4=_0x2283b4||0xc8;return function(_0x1084f4){if(_0x1084f4){return _0x305476['status'](_0x2283b4)['json'](_0x1084f4);}};}function respondWithFilteredResult(_0x33a4af,_0x247852){return function(_0x34e019){if(_0x34e019){var _0x49cc9f=typeof _0x247852[_0x5e58('0x1b')]===_0x5e58('0x1c')&&typeof _0x247852['limit']==='undefined';var _0x55a15a=_0x34e019['count'];var _0xff7d39=_0x49cc9f?0x0:_0x247852[_0x5e58('0x1b')];var _0x40f82a=_0x49cc9f?_0x34e019[_0x5e58('0x1d')]:_0x247852[_0x5e58('0x1b')]+_0x247852['limit'];var _0x52a4a2;if(_0x40f82a>=_0x55a15a){_0x40f82a=_0x55a15a;_0x52a4a2=0xc8;}else{_0x52a4a2=0xce;}_0x33a4af['status'](_0x52a4a2);return _0x33a4af[_0x5e58('0x1e')]('Content-Range',_0xff7d39+'-'+_0x40f82a+'/'+_0x55a15a)[_0x5e58('0x1f')](_0x34e019);}return null;};}function patchUpdates(_0x46955b){return function(_0x3599ed){try{jsonpatch['apply'](_0x3599ed,_0x46955b,!![]);}catch(_0xfe7aad){return BPromise['reject'](_0xfe7aad);}return _0x3599ed[_0x5e58('0x20')]();};}function saveUpdates(_0x364f2b,_0x4083d4){return function(_0x4403a4){if(_0x4403a4){return _0x4403a4[_0x5e58('0x21')](_0x364f2b)[_0x5e58('0x22')](function(_0x2e0f3c){return _0x2e0f3c;});}return null;};}function removeEntity(_0x3273cd,_0x22760b){return function(_0x5d4460){if(_0x5d4460){return _0x5d4460['destroy']()[_0x5e58('0x22')](function(){_0x3273cd['status'](0xcc)[_0x5e58('0x23')]();});}};}function handleEntityNotFound(_0x2a3545,_0x27e346){return function(_0x345952){if(!_0x345952){_0x2a3545['sendStatus'](0x194);}return _0x345952;};}function handleError(_0x2d016f,_0x83cc38){_0x83cc38=_0x83cc38||0x1f4;return function(_0x1bb057){logger[_0x5e58('0x24')](_0x1bb057[_0x5e58('0x25')]);if(_0x1bb057[_0x5e58('0x26')]){delete _0x1bb057[_0x5e58('0x26')];}_0x2d016f['status'](_0x83cc38)[_0x5e58('0x27')](_0x1bb057);};}exports['index']=function(_0x83e4d6,_0x534181){var _0x4b157b={},_0x1e1113={},_0x553d71={'count':0x0,'rows':[]};var _0x5f2147=_[_0x5e58('0x28')](db['VoiceMailMessage']['rawAttributes'],function(_0xaf0d8){return{'name':_0xaf0d8[_0x5e58('0x29')],'type':_0xaf0d8[_0x5e58('0x2a')]['key']};});_0x1e1113['model']=_[_0x5e58('0x2b')](_[_0x5e58('0x28')](_0x5f2147,_0x5e58('0x26')),[_0x5e58('0x26')]);_0x1e1113['query']=_[_0x5e58('0x2c')](_0x83e4d6[_0x5e58('0x2d')]);_0x1e1113[_0x5e58('0x2e')]=_['intersection'](_0x1e1113[_0x5e58('0x2f')],_0x1e1113[_0x5e58('0x2d')]);_0x4b157b[_0x5e58('0x30')]=_[_0x5e58('0x31')](_0x1e1113['model'],qs[_0x5e58('0x32')](_0x83e4d6['query']['fields']));_0x4b157b[_0x5e58('0x30')]=_0x4b157b[_0x5e58('0x30')][_0x5e58('0x33')]?_0x4b157b[_0x5e58('0x30')]:_0x1e1113[_0x5e58('0x2f')];if(!_0x83e4d6[_0x5e58('0x2d')][_0x5e58('0x34')](_0x5e58('0x35'))){_0x4b157b['limit']=qs['limit'](_0x83e4d6[_0x5e58('0x2d')]['limit']);_0x4b157b[_0x5e58('0x1b')]=qs[_0x5e58('0x1b')](_0x83e4d6[_0x5e58('0x2d')][_0x5e58('0x1b')]);}_0x4b157b[_0x5e58('0x36')]=qs[_0x5e58('0x37')](_0x83e4d6['query'][_0x5e58('0x37')]);_0x4b157b[_0x5e58('0x38')]=qs[_0x5e58('0x2e')](_[_0x5e58('0x39')](_0x83e4d6['query'],_0x1e1113[_0x5e58('0x2e')]),_0x5f2147);if(_0x83e4d6[_0x5e58('0x2d')][_0x5e58('0x3a')]){_0x4b157b[_0x5e58('0x38')]=_[_0x5e58('0x3b')](_0x4b157b[_0x5e58('0x38')],{'$or':_['map'](_0x5f2147,function(_0xdf655b){if(_0xdf655b['type']!==_0x5e58('0x3c')){var _0x47307f={};_0x47307f[_0xdf655b['name']]={'$like':'%'+_0x83e4d6['query'][_0x5e58('0x3a')]+'%'};return _0x47307f;}})});}_0x4b157b=_[_0x5e58('0x3b')]({},_0x4b157b,_0x83e4d6['options']);var _0x368bcc={'where':_0x4b157b[_0x5e58('0x38')]};return db[_0x5e58('0x3d')][_0x5e58('0x1d')](_0x368bcc)['then'](function(_0x5f1e30){_0x553d71['count']=_0x5f1e30;if(_0x83e4d6[_0x5e58('0x2d')][_0x5e58('0x3e')]){_0x4b157b['include']=[{'all':!![]}];}return db[_0x5e58('0x3d')][_0x5e58('0x3f')](_0x4b157b);})['then'](function(_0x347af5){_0x553d71[_0x5e58('0x40')]=_0x347af5;return _0x553d71;})[_0x5e58('0x22')](respondWithFilteredResult(_0x534181,_0x4b157b))[_0x5e58('0x41')](handleError(_0x534181,null));};exports[_0x5e58('0x42')]=function(_0x1e9c96,_0x19e22f){var _0x2a45b0={'raw':!![],'where':{'id':_0x1e9c96['params']['id']}},_0x2c1da8={};_0x2c1da8[_0x5e58('0x2f')]=_[_0x5e58('0x2c')](db[_0x5e58('0x3d')][_0x5e58('0x43')]);_0x2c1da8[_0x5e58('0x2d')]=_[_0x5e58('0x2c')](_0x1e9c96[_0x5e58('0x2d')]);_0x2c1da8['filters']=_[_0x5e58('0x31')](_0x2c1da8['model'],_0x2c1da8[_0x5e58('0x2d')]);_0x2a45b0[_0x5e58('0x30')]=_[_0x5e58('0x31')](_0x2c1da8['model'],qs['fields'](_0x1e9c96[_0x5e58('0x2d')]['fields']));_0x2a45b0[_0x5e58('0x30')]=_0x2a45b0[_0x5e58('0x30')][_0x5e58('0x33')]?_0x2a45b0['attributes']:_0x2c1da8['model'];if(_0x1e9c96['query'][_0x5e58('0x3e')]){_0x2a45b0[_0x5e58('0x44')]=[{'all':!![]}];}_0x2a45b0=_[_0x5e58('0x3b')]({},_0x2a45b0,_0x1e9c96[_0x5e58('0x45')]);return db[_0x5e58('0x3d')][_0x5e58('0x46')](_0x2a45b0)[_0x5e58('0x22')](handleEntityNotFound(_0x19e22f,null))['then'](respondWithResult(_0x19e22f,null))[_0x5e58('0x41')](handleError(_0x19e22f,null));};exports[_0x5e58('0x47')]=function(_0x19651b,_0x1dc14a){return db['VoiceMailMessage'][_0x5e58('0x47')](_0x19651b[_0x5e58('0x48')],{})[_0x5e58('0x22')](respondWithResult(_0x1dc14a,0xc9))[_0x5e58('0x41')](handleError(_0x1dc14a,null));};exports[_0x5e58('0x21')]=function(_0x4706b7,_0x26e51e){if(_0x4706b7['body']['id']){delete _0x4706b7[_0x5e58('0x48')]['id'];}return db[_0x5e58('0x3d')]['find']({'where':{'id':_0x4706b7[_0x5e58('0x49')]['id']}})[_0x5e58('0x22')](handleEntityNotFound(_0x26e51e,null))[_0x5e58('0x22')](saveUpdates(_0x4706b7[_0x5e58('0x48')],null))[_0x5e58('0x22')](respondWithResult(_0x26e51e,null))[_0x5e58('0x41')](handleError(_0x26e51e,null));};exports[_0x5e58('0x4a')]=function(_0x4b5bf0,_0x4d1bc3){return db['VoiceMailMessage'][_0x5e58('0x46')]({'where':{'id':_0x4b5bf0[_0x5e58('0x49')]['id']}})[_0x5e58('0x22')](handleEntityNotFound(_0x4d1bc3,null))[_0x5e58('0x22')](removeEntity(_0x4d1bc3,null))[_0x5e58('0x41')](handleError(_0x4d1bc3,null));};exports[_0x5e58('0x4b')]=function(_0x325e71,_0x50f42c,_0x3f5cf1){return db['VoiceMailMessage'][_0x5e58('0x46')]({'where':{'id':_0x325e71['params']['id']},'attributes':['id',_0x5e58('0x4c'),_0x5e58('0x4d')]})['then'](handleEntityNotFound(_0x50f42c,null))['then'](function(_0x2a6c60){if(_0x2a6c60){if(!_0x2a6c60[_0x5e58('0x4c')]){throw new db[(_0x5e58('0x4e'))]['ValidationError']('VoiceMailMessage\x20not\x20found');}var _0xa1d8={'Content-Type':_0x5e58('0x4f'),'Content-Disposition':_0x5e58('0x50')};if(_0x2a6c60['msg_id']){_0xa1d8[_0x5e58('0x51')]=_0x5e58('0x52')+_0x2a6c60[_0x5e58('0x4d')]+'.wav\x22';}_0x50f42c['set'](_0xa1d8);return _0x50f42c['send'](new Buffer(_0x2a6c60[_0x5e58('0x4c')]));}})['catch'](handleError(_0x50f42c,null));};
\ No newline at end of file
index 53ee2a8..64920d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03e9=['../../config/environment','./voiceMailMessage.attributes','exports','define','dir','lodash','../../config/logger','moment','path','rimraf'];(function(_0x46a671,_0x758e9a){var _0x526d75=function(_0xde3640){while(--_0xde3640){_0x46a671['push'](_0x46a671['shift']());}};_0x526d75(++_0x758e9a);}(_0x03e9,0x91));var _0x903e=function(_0x2a4d97,_0x372510){_0x2a4d97=_0x2a4d97-0x0;var _0xaf5f70=_0x03e9[_0x2a4d97];return _0xaf5f70;};'use strict';var _=require(_0x903e('0x0'));var util=require('util');var logger=require(_0x903e('0x1'))('api');var moment=require(_0x903e('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x903e('0x3'));var rimraf=require(_0x903e('0x4'));var config=require(_0x903e('0x5'));var attributes=require(_0x903e('0x6'));module[_0x903e('0x7')]=function(_0x521321,_0xc2eea7){return _0x521321[_0x903e('0x8')]('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x903e('0x9'),'fields':[_0x903e('0x9')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xc8b5=['define','VoiceMailMessage','dir','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes'];(function(_0x3427d8,_0x4930dc){var _0x251c8b=function(_0x15e4b8){while(--_0x15e4b8){_0x3427d8['push'](_0x3427d8['shift']());}};_0x251c8b(++_0x4930dc);}(_0xc8b5,0xb7));var _0x5c8b=function(_0x5dbf64,_0x1e1d9f){_0x5dbf64=_0x5dbf64-0x0;var _0x23bd88=_0xc8b5[_0x5dbf64];return _0x23bd88;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5c8b('0x0'))(_0x5c8b('0x1'));var moment=require(_0x5c8b('0x2'));var BPromise=require(_0x5c8b('0x3'));var rp=require(_0x5c8b('0x4'));var fs=require('fs');var path=require(_0x5c8b('0x5'));var rimraf=require(_0x5c8b('0x6'));var config=require(_0x5c8b('0x7'));var attributes=require(_0x5c8b('0x8'));module['exports']=function(_0x4b30c4,_0x3b6e6f){return _0x4b30c4[_0x5c8b('0x9')](_0x5c8b('0xa'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x5c8b('0xb'),'fields':[_0x5c8b('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 2dc3581..d21ec2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7824=['debug','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x294333,_0x10c59a){var _0x445f0e=function(_0x1edd8b){while(--_0x1edd8b){_0x294333['push'](_0x294333['shift']());}};_0x445f0e(++_0x10c59a);}(_0x7824,0x1a6));var _0x4782=function(_0xe39ced,_0x590c61){_0xe39ced=_0xe39ced-0x0;var _0x5eed69=_0x7824[_0xe39ced];return _0x5eed69;};'use strict';var _=require(_0x4782('0x0'));var util=require(_0x4782('0x1'));var moment=require('moment');var BPromise=require(_0x4782('0x2'));var rs=require(_0x4782('0x3'));var fs=require('fs');var Redis=require(_0x4782('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4782('0x5'));var logger=require(_0x4782('0x6'))(_0x4782('0x7'));var config=require(_0x4782('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4782('0x9')][_0x4782('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf4e440,_0x36c0e7,_0x5c1c70){return new BPromise(function(_0x387d70,_0x2c3496){return client[_0x4782('0xb')](_0xf4e440,_0x5c1c70)[_0x4782('0xc')](function(_0x502357){logger['info'](_0x4782('0xd'),_0x36c0e7,_0x4782('0xe'));logger[_0x4782('0xf')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x36c0e7,'request\x20sent',JSON[_0x4782('0x10')](_0x502357));if(_0x502357['error']){if(_0x502357[_0x4782('0x11')][_0x4782('0x12')]===0x1f4){logger[_0x4782('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x36c0e7,_0x502357[_0x4782('0x11')]['message']);return _0x2c3496(_0x502357[_0x4782('0x11')][_0x4782('0x13')]);}logger['error'](_0x4782('0xd'),_0x36c0e7,_0x502357[_0x4782('0x11')][_0x4782('0x13')]);return _0x387d70(_0x502357[_0x4782('0x11')][_0x4782('0x13')]);}else{logger[_0x4782('0x14')](_0x4782('0xd'),_0x36c0e7,_0x4782('0xe'));_0x387d70(_0x502357[_0x4782('0x15')][_0x4782('0x13')]);}})[_0x4782('0x16')](function(_0x5e8728){logger[_0x4782('0x11')](_0x4782('0xd'),_0x36c0e7,_0x5e8728);_0x2c3496(_0x5e8728);});});}
\ No newline at end of file
+var _0xbfe3=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x7a78cb,_0x9f4571){var _0x1a5c0c=function(_0x263738){while(--_0x263738){_0x7a78cb['push'](_0x7a78cb['shift']());}};_0x1a5c0c(++_0x9f4571);}(_0xbfe3,0x191));var _0x3bfe=function(_0x32ed90,_0x2c2e9a){_0x32ed90=_0x32ed90-0x0;var _0xb46a7c=_0xbfe3[_0x32ed90];return _0xb46a7c;};'use strict';var _=require(_0x3bfe('0x0'));var util=require(_0x3bfe('0x1'));var moment=require('moment');var BPromise=require(_0x3bfe('0x2'));var rs=require(_0x3bfe('0x3'));var fs=require('fs');var Redis=require(_0x3bfe('0x4'));var db=require(_0x3bfe('0x5'))['db'];var utils=require(_0x3bfe('0x6'));var logger=require(_0x3bfe('0x7'))(_0x3bfe('0x8'));var config=require('../../config/environment');var jayson=require(_0x3bfe('0x9'));var client=jayson[_0x3bfe('0xa')][_0x3bfe('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4287c3,_0x532b04,_0x67711){return new BPromise(function(_0x5618fb,_0x3a4f09){return client[_0x3bfe('0xc')](_0x4287c3,_0x67711)[_0x3bfe('0xd')](function(_0x4c0f08){logger['info'](_0x3bfe('0xe'),_0x532b04,_0x3bfe('0xf'));logger[_0x3bfe('0x10')](_0x3bfe('0x11'),_0x532b04,_0x3bfe('0xf'),JSON[_0x3bfe('0x12')](_0x4c0f08));if(_0x4c0f08[_0x3bfe('0x13')]){if(_0x4c0f08[_0x3bfe('0x13')][_0x3bfe('0x14')]===0x1f4){logger[_0x3bfe('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x532b04,_0x4c0f08[_0x3bfe('0x13')][_0x3bfe('0x15')]);return _0x3a4f09(_0x4c0f08[_0x3bfe('0x13')][_0x3bfe('0x15')]);}logger['error'](_0x3bfe('0xe'),_0x532b04,_0x4c0f08['error'][_0x3bfe('0x15')]);return _0x5618fb(_0x4c0f08[_0x3bfe('0x13')]['message']);}else{logger[_0x3bfe('0x16')](_0x3bfe('0xe'),_0x532b04,_0x3bfe('0xf'));_0x5618fb(_0x4c0f08[_0x3bfe('0x17')][_0x3bfe('0x15')]);}})[_0x3bfe('0x18')](function(_0x46a917){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x532b04,_0x46a917);_0x3a4f09(_0x46a917);});});}
\ No newline at end of file
index 28206fc..c25a98e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ca2=['../../components/interaction/service','get','index','/:id','isAuthenticated','getSounds','post','/:id/sounds','addSound','put','update','delete','removeSound','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0x1ca2,0x162));var _0x21ca=function(_0x1ee41b,_0x1874af){_0x1ee41b=_0x1ee41b-0x0;var _0x1f5200=_0x1ca2[_0x1ee41b];return _0x1f5200;};'use strict';var multer=require(_0x21ca('0x0'));var util=require(_0x21ca('0x1'));var path=require('path');var timeout=require(_0x21ca('0x2'));var express=require(_0x21ca('0x3'));var router=express['Router']();var fs_extra=require(_0x21ca('0x4'));var auth=require(_0x21ca('0x5'));var interaction=require(_0x21ca('0x6'));var config=require('../../config/environment');var controller=require('./voiceMusicOnHold.controller');router[_0x21ca('0x7')]('/',auth['isAuthenticated'](),controller[_0x21ca('0x8')]);router[_0x21ca('0x7')](_0x21ca('0x9'),auth[_0x21ca('0xa')](),controller['show']);router[_0x21ca('0x7')]('/:id/sounds',auth[_0x21ca('0xa')](),controller[_0x21ca('0xb')]);router[_0x21ca('0xc')]('/',auth[_0x21ca('0xa')](),controller['create']);router['post'](_0x21ca('0xd'),auth['isAuthenticated'](),controller[_0x21ca('0xe')]);router[_0x21ca('0xf')](_0x21ca('0x9'),auth[_0x21ca('0xa')](),controller[_0x21ca('0x10')]);router['delete'](_0x21ca('0x9'),auth['isAuthenticated'](),controller['destroy']);router[_0x21ca('0x11')]('/:id/sounds/:id2',auth[_0x21ca('0xa')](),controller[_0x21ca('0x12')]);module[_0x21ca('0x13')]=router;
\ No newline at end of file
+var _0xf33a=['fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','post','create','addSound','update','delete','/:id/sounds/:id2','multer','util','express'];(function(_0x14b38c,_0x4b148e){var _0x582747=function(_0x44b884){while(--_0x44b884){_0x14b38c['push'](_0x14b38c['shift']());}};_0x582747(++_0x4b148e);}(_0xf33a,0x1b2));var _0xaf33=function(_0x219910,_0x72d07d){_0x219910=_0x219910-0x0;var _0x506b24=_0xf33a[_0x219910];return _0x506b24;};'use strict';var multer=require(_0xaf33('0x0'));var util=require(_0xaf33('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xaf33('0x2'));var router=express['Router']();var fs_extra=require(_0xaf33('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xaf33('0x4'));var config=require(_0xaf33('0x5'));var controller=require('./voiceMusicOnHold.controller');router[_0xaf33('0x6')]('/',auth[_0xaf33('0x7')](),controller[_0xaf33('0x8')]);router[_0xaf33('0x6')](_0xaf33('0x9'),auth[_0xaf33('0x7')](),controller[_0xaf33('0xa')]);router[_0xaf33('0x6')](_0xaf33('0xb'),auth[_0xaf33('0x7')](),controller[_0xaf33('0xc')]);router[_0xaf33('0xd')]('/',auth[_0xaf33('0x7')](),controller[_0xaf33('0xe')]);router[_0xaf33('0xd')](_0xaf33('0xb'),auth['isAuthenticated'](),controller[_0xaf33('0xf')]);router['put'](_0xaf33('0x9'),auth[_0xaf33('0x7')](),controller[_0xaf33('0x10')]);router[_0xaf33('0x11')](_0xaf33('0x9'),auth['isAuthenticated'](),controller['destroy']);router[_0xaf33('0x11')](_0xaf33('0x12'),auth[_0xaf33('0x7')](),controller['removeSound']);module['exports']=router;
\ No newline at end of file
index 3b2f462..280f857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3b6=['TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','files','quietmp3nb','quietmp3'];(function(_0x59118b,_0x8770df){var _0x3eda8a=function(_0x49370a){while(--_0x49370a){_0x59118b['push'](_0x59118b['shift']());}};_0x3eda8a(++_0x8770df);}(_0xe3b6,0x110));var _0x6e3b=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xe3b6[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x6e3b('0x0'));module[_0x6e3b('0x1')]={'name':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':![],'unique':_0x6e3b('0x3')},'mode':{'type':Sequelize[_0x6e3b('0x4')]('custom',_0x6e3b('0x5'),'mp3nb',_0x6e3b('0x6'),_0x6e3b('0x7'),'mp3'),'allowNull':!![],'defaultValue':_0x6e3b('0x5')},'directory':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x6e3b('0x2')],'allowNull':!![]},'stamp':{'type':_0x6e3b('0x8')},'defaultEntry':{'type':Sequelize[_0x6e3b('0x9')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x321b=['BOOLEAN','sequelize','exports','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3'];(function(_0x405573,_0x38bfda){var _0x51e472=function(_0x223243){while(--_0x223243){_0x405573['push'](_0x405573['shift']());}};_0x51e472(++_0x38bfda);}(_0x321b,0x177));var _0xb321=function(_0x2c2353,_0x20f23f){_0x2c2353=_0x2c2353-0x0;var _0x5a16c0=_0x321b[_0x2c2353];return _0x5a16c0;};'use strict';var Sequelize=require(_0xb321('0x0'));module[_0xb321('0x1')]={'name':{'type':Sequelize[_0xb321('0x2')],'allowNull':![],'unique':_0xb321('0x3')},'mode':{'type':Sequelize[_0xb321('0x4')](_0xb321('0x5'),_0xb321('0x6'),_0xb321('0x7'),_0xb321('0x8'),_0xb321('0x9'),'mp3'),'allowNull':!![],'defaultValue':_0xb321('0x6')},'directory':{'type':Sequelize[_0xb321('0x2')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xb321('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0xb321('0x2')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0xb321('0x2')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0xb321('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 6f77622..a383d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2401=['options','find','body','sequelize','transaction','mode','files','join','root','server/files/moh','create','mkdirSync','directory','0777','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','MusicOnHolds','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','%s.%s','extname','symlinkSync','removeSound','id2','unlinkSync','getSounds','order','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','length'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x2401,0x9d));var _0x1240=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2401[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1240('0x0'));var zipdir=require(_0x1240('0x1'));var jsonpatch=require(_0x1240('0x2'));var rp=require(_0x1240('0x3'));var moment=require(_0x1240('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1240('0x5'));var util=require(_0x1240('0x6'));var path=require('path');var sox=require(_0x1240('0x7'));var csv=require('to-csv');var ejs=require(_0x1240('0x8'));var fs=require('fs');var fs_extra=require(_0x1240('0x9'));var _=require(_0x1240('0xa'));var squel=require('squel');var crypto=require(_0x1240('0xb'));var jsforce=require(_0x1240('0xc'));var deskjs=require(_0x1240('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1240('0xe'));var Redis=require(_0x1240('0xf'));var authService=require(_0x1240('0x10'));var qs=require(_0x1240('0x11'));var as=require(_0x1240('0x12'));var hardwareService=require(_0x1240('0x13'));var logger=require(_0x1240('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x1240('0x15'));var licenseUtil=require(_0x1240('0x16'));var db=require(_0x1240('0x17'))['db'];function respondWithStatusCode(_0x52afa9,_0x1cc93e){_0x1cc93e=_0x1cc93e||0xcc;return function(_0x1e6811){if(_0x1e6811){return _0x52afa9['sendStatus'](_0x1cc93e);}return _0x52afa9[_0x1240('0x18')](_0x1cc93e)[_0x1240('0x19')]();};}function respondWithResult(_0x1c41cf,_0x2310a1){_0x2310a1=_0x2310a1||0xc8;return function(_0x25b149){if(_0x25b149){return _0x1c41cf['status'](_0x2310a1)[_0x1240('0x1a')](_0x25b149);}};}function respondWithFilteredResult(_0x48583f,_0x5e65b2){return function(_0x453c58){if(_0x453c58){var _0x8f4afb=typeof _0x5e65b2['offset']===_0x1240('0x1b')&&typeof _0x5e65b2[_0x1240('0x1c')]==='undefined';var _0x4e3f0f=_0x453c58[_0x1240('0x1d')];var _0x2fc557=_0x8f4afb?0x0:_0x5e65b2[_0x1240('0x1e')];var _0x41bb55=_0x8f4afb?_0x453c58[_0x1240('0x1d')]:_0x5e65b2[_0x1240('0x1e')]+_0x5e65b2[_0x1240('0x1c')];var _0x38a2b3;if(_0x41bb55>=_0x4e3f0f){_0x41bb55=_0x4e3f0f;_0x38a2b3=0xc8;}else{_0x38a2b3=0xce;}_0x48583f['status'](_0x38a2b3);return _0x48583f[_0x1240('0x1f')]('Content-Range',_0x2fc557+'-'+_0x41bb55+'/'+_0x4e3f0f)['json'](_0x453c58);}return null;};}function patchUpdates(_0x4f21f1){return function(_0x1df6dd){try{jsonpatch[_0x1240('0x20')](_0x1df6dd,_0x4f21f1,!![]);}catch(_0x11f917){return BPromise['reject'](_0x11f917);}return _0x1df6dd[_0x1240('0x21')]();};}function saveUpdates(_0xa414de,_0x3622b9){return function(_0x50d8ba){if(_0x50d8ba){return _0x50d8ba['update'](_0xa414de)[_0x1240('0x22')](function(_0x4b52f1){return _0x4b52f1;});}return null;};}function removeEntity(_0x5326ce,_0x4a3144){return function(_0x8eb795){if(_0x8eb795){return _0x8eb795['destroy']()['then'](function(){var _0x165a24=_0x8eb795['get']({'plain':!![]});var _0x3fe9b8='MusicOnHolds';return db['UserProfileResource'][_0x1240('0x23')]({'where':{'type':_0x3fe9b8,'resourceId':_0x165a24['id']}})['then'](function(){return _0x8eb795;});})[_0x1240('0x22')](function(){_0x5326ce[_0x1240('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2130bc,_0x4544e0){return function(_0x705bb4){if(!_0x705bb4){_0x2130bc[_0x1240('0x24')](0x194);}return _0x705bb4;};}function handleError(_0x5dde02,_0x4ba3ff){_0x4ba3ff=_0x4ba3ff||0x1f4;return function(_0x91b2d8){logger[_0x1240('0x25')](_0x91b2d8[_0x1240('0x26')]);if(_0x91b2d8[_0x1240('0x27')]){delete _0x91b2d8[_0x1240('0x27')];}_0x5dde02[_0x1240('0x18')](_0x4ba3ff)[_0x1240('0x28')](_0x91b2d8);};}exports[_0x1240('0x29')]=function(_0x52f718,_0x3252ff){var _0x5a1623={},_0x44be80={},_0x1b23c2={'count':0x0,'rows':[]};var _0x3c5824=_[_0x1240('0x2a')](db[_0x1240('0x2b')][_0x1240('0x2c')],function(_0xce547e){return{'name':_0xce547e[_0x1240('0x2d')],'type':_0xce547e[_0x1240('0x2e')]['key']};});_0x44be80[_0x1240('0x2f')]=_[_0x1240('0x2a')](_0x3c5824,'name');_0x44be80[_0x1240('0x30')]=_[_0x1240('0x31')](_0x52f718['query']);_0x44be80[_0x1240('0x32')]=_[_0x1240('0x33')](_0x44be80['model'],_0x44be80[_0x1240('0x30')]);_0x5a1623[_0x1240('0x34')]=_[_0x1240('0x33')](_0x44be80[_0x1240('0x2f')],qs[_0x1240('0x35')](_0x52f718[_0x1240('0x30')][_0x1240('0x35')]));_0x5a1623[_0x1240('0x34')]=_0x5a1623['attributes']['length']?_0x5a1623[_0x1240('0x34')]:_0x44be80[_0x1240('0x2f')];if(!_0x52f718[_0x1240('0x30')][_0x1240('0x36')](_0x1240('0x37'))){_0x5a1623[_0x1240('0x1c')]=qs[_0x1240('0x1c')](_0x52f718[_0x1240('0x30')][_0x1240('0x1c')]);_0x5a1623[_0x1240('0x1e')]=qs['offset'](_0x52f718['query']['offset']);}_0x5a1623['order']=qs[_0x1240('0x38')](_0x52f718['query']['sort']);delete _0x52f718['query']['sort'];_0x5a1623[_0x1240('0x39')]=qs[_0x1240('0x32')](_[_0x1240('0x3a')](_0x52f718[_0x1240('0x30')],_0x44be80[_0x1240('0x32')]),_0x3c5824);if(_0x52f718[_0x1240('0x30')]['filter']){_0x5a1623['where']=_[_0x1240('0x3b')](_0x5a1623[_0x1240('0x39')],{'$or':_[_0x1240('0x2a')](_0x3c5824,function(_0x383b84){if(_0x383b84[_0x1240('0x2e')]!=='VIRTUAL'){var _0x532486={};_0x532486[_0x383b84[_0x1240('0x27')]]={'$like':'%'+_0x52f718[_0x1240('0x30')][_0x1240('0x3c')]+'%'};return _0x532486;}})});}_0x5a1623=_[_0x1240('0x3b')]({},_0x5a1623,_0x52f718['options']);var _0x15d087={'where':_0x5a1623[_0x1240('0x39')]};return db[_0x1240('0x2b')]['count'](_0x15d087)[_0x1240('0x22')](function(_0x3c5ec4){_0x1b23c2[_0x1240('0x1d')]=_0x3c5ec4;if(_0x52f718[_0x1240('0x30')][_0x1240('0x3d')]){_0x5a1623[_0x1240('0x3e')]=[{'all':!![]}];}return db[_0x1240('0x2b')][_0x1240('0x3f')](_0x5a1623);})['then'](function(_0x575212){_0x1b23c2[_0x1240('0x40')]=_0x575212;return _0x1b23c2;})['then'](respondWithFilteredResult(_0x3252ff,_0x5a1623))[_0x1240('0x41')](handleError(_0x3252ff,null));};exports[_0x1240('0x42')]=function(_0x1f6265,_0x5ebc75){var _0x4e6bb8={'raw':![],'where':{'id':_0x1f6265[_0x1240('0x43')]['id']}},_0x5efcbc={};_0x5efcbc[_0x1240('0x2f')]=_['keys'](db[_0x1240('0x2b')][_0x1240('0x2c')]);_0x5efcbc['query']=_['keys'](_0x1f6265[_0x1240('0x30')]);_0x5efcbc[_0x1240('0x32')]=_[_0x1240('0x33')](_0x5efcbc[_0x1240('0x2f')],_0x5efcbc[_0x1240('0x30')]);_0x4e6bb8['attributes']=_['intersection'](_0x5efcbc['model'],qs[_0x1240('0x35')](_0x1f6265[_0x1240('0x30')][_0x1240('0x35')]));_0x4e6bb8[_0x1240('0x34')]=_0x4e6bb8[_0x1240('0x34')][_0x1240('0x44')]?_0x4e6bb8[_0x1240('0x34')]:_0x5efcbc['model'];if(_0x1f6265[_0x1240('0x30')][_0x1240('0x3d')]){_0x4e6bb8[_0x1240('0x3e')]=[{'all':!![]}];}_0x4e6bb8=_[_0x1240('0x3b')]({},_0x4e6bb8,_0x1f6265[_0x1240('0x45')]);return db[_0x1240('0x2b')][_0x1240('0x46')](_0x4e6bb8)['then'](handleEntityNotFound(_0x5ebc75,null))[_0x1240('0x22')](respondWithResult(_0x5ebc75,null))[_0x1240('0x41')](handleError(_0x5ebc75,null));};exports['update']=function(_0x35fdbe,_0x10cfb8){if(_0x35fdbe['body']['id']){delete _0x35fdbe[_0x1240('0x47')]['id'];}return db[_0x1240('0x2b')][_0x1240('0x46')]({'where':{'id':_0x35fdbe[_0x1240('0x43')]['id']}})[_0x1240('0x22')](handleEntityNotFound(_0x10cfb8,null))[_0x1240('0x22')](saveUpdates(_0x35fdbe[_0x1240('0x47')],null))[_0x1240('0x22')](respondWithResult(_0x10cfb8,null))[_0x1240('0x41')](handleError(_0x10cfb8,null));};exports['create']=function(_0x5c420c,_0x4c0933,_0x328175){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x11e249){if(_0x5c420c[_0x1240('0x47')][_0x1240('0x4a')]===_0x1240('0x4b')){_0x5c420c[_0x1240('0x47')]['directory']=path[_0x1240('0x4c')](config[_0x1240('0x4d')],_0x1240('0x4e'),_0x5c420c[_0x1240('0x47')]['name']);}return db['VoiceMusicOnHold'][_0x1240('0x4f')](_0x5c420c['body'],{'transaction':_0x11e249})[_0x1240('0x22')](function(_0xd306a9){if(_0x5c420c[_0x1240('0x47')]['mode']===_0x1240('0x4b')){fs[_0x1240('0x50')](_0xd306a9[_0x1240('0x51')],parseInt(_0x1240('0x52'),0x8));}var _0x561f6b=_0x5c420c['user'][_0x1240('0x53')]({'plain':!![]});if(!_0x561f6b)throw new Error(_0x1240('0x54'));if(_0x561f6b[_0x1240('0x55')]===_0x1240('0x56')){var _0x4ad6c1=_0xd306a9[_0x1240('0x53')]({'plain':!![]});return db[_0x1240('0x57')][_0x1240('0x46')]({'where':{'name':_0x1240('0x58'),'userProfileId':_0x561f6b['userProfileId']},'raw':!![]})['then'](function(_0x4e028f){if(_0x4e028f&&_0x4e028f[_0x1240('0x59')]===0x0){return db[_0x1240('0x5a')]['create']({'name':_0x4ad6c1[_0x1240('0x27')],'resourceId':_0x4ad6c1['id'],'type':_0x4e028f['name'],'sectionId':_0x4e028f['id']},{})[_0x1240('0x22')](function(){return _0xd306a9;});}else{return _0xd306a9;}})[_0x1240('0x41')](function(_0x32052b){logger[_0x1240('0x25')](_0x1240('0x5b'),_0x32052b);});}return _0xd306a9;});})[_0x1240('0x22')](respondWithResult(_0x4c0933,0xc9))[_0x1240('0x41')](handleError(_0x4c0933,null));};exports['destroy']=function(_0x1add74,_0x4d7221,_0x1db83e){var _0x29e677;return db[_0x1240('0x2b')][_0x1240('0x46')]({'where':{'id':_0x1add74[_0x1240('0x43')]['id']}})['then'](function(_0x33cc26){if(_0x33cc26){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x26e34b){return _0x33cc26[_0x1240('0x23')]({'transaction':_0x26e34b,'raw':!![]})[_0x1240('0x22')](function(_0x560c64){if(_0x560c64[_0x1240('0x51')]){fs[_0x1240('0x5c')](_0x560c64[_0x1240('0x51')])[_0x1240('0x5d')](function(_0x399af6){fs['unlinkSync'](path[_0x1240('0x4c')](_0x560c64[_0x1240('0x51')],_0x399af6));});fs[_0x1240('0x5e')](_0x560c64['directory']);}return _0x560c64;});})[_0x1240('0x41')](function(_0x543449){throw new db[(_0x1240('0x5f'))][(_0x1240('0x60'))](_0x543449[_0x1240('0x61')]);});}})['then'](handleEntityNotFound(_0x4d7221,null))[_0x1240('0x22')](removeEntity(_0x4d7221,null))[_0x1240('0x41')](handleError(_0x4d7221,null));};exports[_0x1240('0x62')]=function(_0x17f5ad,_0xa60275,_0x2c9017){return db[_0x1240('0x48')]['transaction'](function(_0x114cbf){var _0x2e06d6;return db['VoiceMusicOnHold'][_0x1240('0x46')]({'where':{'id':_0x17f5ad[_0x1240('0x43')]['id']}})[_0x1240('0x22')](function(_0x22a964){if(_0x22a964){_0x2e06d6=_0x22a964;return _0x22a964[_0x1240('0x62')](_0x17f5ad['body']['id'],{'transaction':_0x114cbf});}})[_0x1240('0x22')](function(_0x392dab){if(_0x392dab){return db[_0x1240('0x63')][_0x1240('0x64')]({'where':{'id':_0x17f5ad['body']['id']},'attributes':['id',_0x1240('0x27'),_0x1240('0x65'),_0x1240('0x66'),_0x1240('0x67')],'raw':!![]});}})[_0x1240('0x22')](function(_0x42dea3){if(_0x42dea3){var _0x1a6220=path[_0x1240('0x4c')](config['root'],_0x1240('0x68'),util['format'](_0x1240('0x69'),path['basename'](_0x42dea3[_0x1240('0x65')],path[_0x1240('0x6a')](_0x42dea3[_0x1240('0x65')])),_0x42dea3[_0x1240('0x66')]));var _0xde9f0f=path[_0x1240('0x4c')](config['root'],_0x1240('0x4e'),_0x2e06d6[_0x1240('0x27')],util['format']('%s.%s',_0x42dea3[_0x1240('0x27')],_0x42dea3[_0x1240('0x66')]));fs[_0x1240('0x6b')](_0x1a6220,_0xde9f0f);return _0x42dea3;}})[_0x1240('0x41')](function(_0xe7bee3){throw new db['Sequelize'][(_0x1240('0x60'))](_0xe7bee3['message']);});})['then'](handleEntityNotFound(_0xa60275,null))['then'](respondWithResult(_0xa60275,0xc9))[_0x1240('0x41')](handleError(_0xa60275,null));};exports[_0x1240('0x6c')]=function(_0x3068f6,_0x2c9d98,_0xa06b57){return db[_0x1240('0x48')][_0x1240('0x49')](function(_0x19e988){var _0x26858a;return db[_0x1240('0x2b')][_0x1240('0x64')]({'where':{'id':_0x3068f6[_0x1240('0x43')]['id']}})[_0x1240('0x22')](handleEntityNotFound(_0x2c9d98,null))[_0x1240('0x22')](function(_0x49c89c){if(_0x49c89c){_0x26858a=_0x49c89c;return _0x49c89c[_0x1240('0x6c')](_0x3068f6[_0x1240('0x43')][_0x1240('0x6d')]);}})['then'](function(_0x997a38){if(_0x997a38){return db[_0x1240('0x63')][_0x1240('0x64')]({'where':{'id':_0x3068f6[_0x1240('0x43')][_0x1240('0x6d')]},'attributes':['id',_0x1240('0x27'),_0x1240('0x65'),_0x1240('0x66'),'createdAt'],'raw':!![]});}})[_0x1240('0x22')](function(_0x47e842){if(_0x47e842){fs[_0x1240('0x6e')](path[_0x1240('0x4c')](_0x26858a[_0x1240('0x51')],util['format'](_0x1240('0x69'),_0x47e842[_0x1240('0x27')],_0x47e842[_0x1240('0x66')])));return _0x47e842;}})[_0x1240('0x41')](function(_0x14285f){throw new db[(_0x1240('0x5f'))][(_0x1240('0x60'))](_0x14285f[_0x1240('0x61')]);});})[_0x1240('0x22')](handleEntityNotFound(_0x2c9d98,null))[_0x1240('0x22')](respondWithStatusCode(_0x2c9d98,0xcc))[_0x1240('0x41')](handleError(_0x2c9d98,null));};exports[_0x1240('0x6f')]=function(_0xba3821,_0x203e63,_0x3f3525){var _0xc862c0={};var _0x2874e7={};var _0x3c2958;var _0x38f758;return db['VoiceMusicOnHold'][_0x1240('0x64')]({'where':{'id':_0xba3821[_0x1240('0x43')]['id']}})['then'](handleEntityNotFound(_0x203e63,null))['then'](function(_0x11ad4a){if(_0x11ad4a){_0x3c2958=_0x11ad4a;_0x2874e7[_0x1240('0x2f')]=_[_0x1240('0x31')](db['Sound']['rawAttributes']);_0x2874e7[_0x1240('0x30')]=_[_0x1240('0x31')](_0xba3821[_0x1240('0x30')]);_0x2874e7[_0x1240('0x32')]=_[_0x1240('0x33')](_0x2874e7[_0x1240('0x2f')],_0x2874e7['query']);_0xc862c0[_0x1240('0x34')]=_[_0x1240('0x33')](_0x2874e7['model'],qs[_0x1240('0x35')](_0xba3821[_0x1240('0x30')][_0x1240('0x35')]));_0xc862c0[_0x1240('0x34')]=_0xc862c0[_0x1240('0x34')][_0x1240('0x44')]?_0xc862c0[_0x1240('0x34')]:_0x2874e7[_0x1240('0x2f')];_0xc862c0[_0x1240('0x70')]=qs[_0x1240('0x38')](_0xba3821[_0x1240('0x30')]['sort']);_0xc862c0[_0x1240('0x39')]=qs['filters'](_[_0x1240('0x3a')](_0xba3821[_0x1240('0x30')],_0x2874e7[_0x1240('0x32')]));if(_0xba3821[_0x1240('0x30')][_0x1240('0x3c')]){_0xc862c0[_0x1240('0x39')]=_[_0x1240('0x3b')](_0xc862c0['where'],{'$or':_[_0x1240('0x2a')](_0xc862c0['attributes'],function(_0x1da395){var _0xb9bf0b={};_0xb9bf0b[_0x1da395]={'$like':'%'+_0xba3821[_0x1240('0x30')][_0x1240('0x3c')]+'%'};return _0xb9bf0b;})});}_0xc862c0=_[_0x1240('0x3b')]({},_0xc862c0,_0xba3821[_0x1240('0x45')]);return _0x3c2958[_0x1240('0x6f')](_0xc862c0);}})[_0x1240('0x22')](function(_0x23f93f){if(_0x23f93f){_0x38f758=_0x23f93f[_0x1240('0x44')];if(!_0xba3821[_0x1240('0x30')][_0x1240('0x36')](_0x1240('0x37'))){_0xc862c0[_0x1240('0x1c')]=qs['limit'](_0xba3821[_0x1240('0x30')]['limit']);_0xc862c0['offset']=qs[_0x1240('0x1e')](_0xba3821[_0x1240('0x30')][_0x1240('0x1e')]);}return _0x3c2958['getSounds'](_0xc862c0);}})['then'](function(_0x22ac55){if(_0x22ac55){return _0x22ac55?{'count':_0x38f758,'rows':_0x22ac55}:null;}})[_0x1240('0x22')](respondWithResult(_0x203e63,null))['catch'](handleError(_0x203e63,null));};
\ No newline at end of file
+var _0x37e2=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include','findAll','rows','show','params','length','options','find','catch','body','create','sequelize','mode','files','directory','join','server/files/moh','mkdirSync','0777','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','transaction','findOne','save_name','converted_format','server/files/sounds/converted','%s.%s','basename','extname','symlinkSync','removeSound','id2','Sound','createdAt','format','getSounds','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x20a911,_0x5efeb8){var _0x3c4405=function(_0x2229bf){while(--_0x2229bf){_0x20a911['push'](_0x20a911['shift']());}};_0x3c4405(++_0x5efeb8);}(_0x37e2,0x70));var _0x237e=function(_0xeac06b,_0x54bfa0){_0xeac06b=_0xeac06b-0x0;var _0x12ce5c=_0x37e2[_0xeac06b];return _0x12ce5c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x237e('0x0'));var jsonpatch=require(_0x237e('0x1'));var rp=require(_0x237e('0x2'));var moment=require('moment');var BPromise=require(_0x237e('0x3'));var Mustache=require(_0x237e('0x4'));var util=require(_0x237e('0x5'));var path=require(_0x237e('0x6'));var sox=require(_0x237e('0x7'));var csv=require(_0x237e('0x8'));var ejs=require(_0x237e('0x9'));var fs=require('fs');var fs_extra=require(_0x237e('0xa'));var _=require(_0x237e('0xb'));var squel=require(_0x237e('0xc'));var crypto=require(_0x237e('0xd'));var jsforce=require(_0x237e('0xe'));var deskjs=require(_0x237e('0xf'));var toCsv=require(_0x237e('0x8'));var querystring=require(_0x237e('0x10'));var Papa=require(_0x237e('0x11'));var Redis=require(_0x237e('0x12'));var authService=require(_0x237e('0x13'));var qs=require(_0x237e('0x14'));var as=require(_0x237e('0x15'));var hardwareService=require(_0x237e('0x16'));var logger=require(_0x237e('0x17'))(_0x237e('0x18'));var utils=require(_0x237e('0x19'));var config=require(_0x237e('0x1a'));var licenseUtil=require(_0x237e('0x1b'));var db=require(_0x237e('0x1c'))['db'];function respondWithStatusCode(_0x2c0cef,_0x57c247){_0x57c247=_0x57c247||0xcc;return function(_0xd7fdc6){if(_0xd7fdc6){return _0x2c0cef[_0x237e('0x1d')](_0x57c247);}return _0x2c0cef[_0x237e('0x1e')](_0x57c247)[_0x237e('0x1f')]();};}function respondWithResult(_0x4349e7,_0x588d81){_0x588d81=_0x588d81||0xc8;return function(_0x2d6c02){if(_0x2d6c02){return _0x4349e7['status'](_0x588d81)[_0x237e('0x20')](_0x2d6c02);}};}function respondWithFilteredResult(_0x4ca116,_0x5197a3){return function(_0x31a2b4){if(_0x31a2b4){var _0x5d0f4d=typeof _0x5197a3[_0x237e('0x21')]===_0x237e('0x22')&&typeof _0x5197a3[_0x237e('0x23')]===_0x237e('0x22');var _0x28235b=_0x31a2b4[_0x237e('0x24')];var _0x2751a5=_0x5d0f4d?0x0:_0x5197a3[_0x237e('0x21')];var _0x570abf=_0x5d0f4d?_0x31a2b4[_0x237e('0x24')]:_0x5197a3['offset']+_0x5197a3['limit'];var _0x3f23c3;if(_0x570abf>=_0x28235b){_0x570abf=_0x28235b;_0x3f23c3=0xc8;}else{_0x3f23c3=0xce;}_0x4ca116[_0x237e('0x1e')](_0x3f23c3);return _0x4ca116[_0x237e('0x25')]('Content-Range',_0x2751a5+'-'+_0x570abf+'/'+_0x28235b)[_0x237e('0x20')](_0x31a2b4);}return null;};}function patchUpdates(_0x883237){return function(_0x4b0b6e){try{jsonpatch[_0x237e('0x26')](_0x4b0b6e,_0x883237,!![]);}catch(_0x2fe0e4){return BPromise[_0x237e('0x27')](_0x2fe0e4);}return _0x4b0b6e[_0x237e('0x28')]();};}function saveUpdates(_0x1d9078,_0x3d1daa){return function(_0x4850e1){if(_0x4850e1){return _0x4850e1[_0x237e('0x29')](_0x1d9078)[_0x237e('0x2a')](function(_0x476bdf){return _0x476bdf;});}return null;};}function removeEntity(_0x1cb5de,_0x447a16){return function(_0x1da548){if(_0x1da548){return _0x1da548[_0x237e('0x2b')]()['then'](function(){var _0x2d08d5=_0x1da548[_0x237e('0x2c')]({'plain':!![]});var _0x289df8=_0x237e('0x2d');return db[_0x237e('0x2e')][_0x237e('0x2b')]({'where':{'type':_0x289df8,'resourceId':_0x2d08d5['id']}})['then'](function(){return _0x1da548;});})[_0x237e('0x2a')](function(){_0x1cb5de[_0x237e('0x1e')](0xcc)[_0x237e('0x1f')]();});}};}function handleEntityNotFound(_0x4afb84,_0x251a49){return function(_0x1736f2){if(!_0x1736f2){_0x4afb84[_0x237e('0x1d')](0x194);}return _0x1736f2;};}function handleError(_0x56897b,_0x42b66d){_0x42b66d=_0x42b66d||0x1f4;return function(_0x28c5af){logger[_0x237e('0x2f')](_0x28c5af[_0x237e('0x30')]);if(_0x28c5af[_0x237e('0x31')]){delete _0x28c5af[_0x237e('0x31')];}_0x56897b[_0x237e('0x1e')](_0x42b66d)[_0x237e('0x32')](_0x28c5af);};}exports[_0x237e('0x33')]=function(_0x2c5cae,_0x86c5fa){var _0x218bea={},_0xf139fe={},_0x3b6d1c={'count':0x0,'rows':[]};var _0x5a7ba7=_[_0x237e('0x34')](db[_0x237e('0x35')][_0x237e('0x36')],function(_0x2ddda6){return{'name':_0x2ddda6[_0x237e('0x37')],'type':_0x2ddda6[_0x237e('0x38')][_0x237e('0x39')]};});_0xf139fe[_0x237e('0x3a')]=_['map'](_0x5a7ba7,_0x237e('0x31'));_0xf139fe[_0x237e('0x3b')]=_[_0x237e('0x3c')](_0x2c5cae[_0x237e('0x3b')]);_0xf139fe[_0x237e('0x3d')]=_[_0x237e('0x3e')](_0xf139fe['model'],_0xf139fe[_0x237e('0x3b')]);_0x218bea[_0x237e('0x3f')]=_[_0x237e('0x3e')](_0xf139fe[_0x237e('0x3a')],qs[_0x237e('0x40')](_0x2c5cae['query'][_0x237e('0x40')]));_0x218bea[_0x237e('0x3f')]=_0x218bea[_0x237e('0x3f')]['length']?_0x218bea['attributes']:_0xf139fe[_0x237e('0x3a')];if(!_0x2c5cae['query'][_0x237e('0x41')](_0x237e('0x42'))){_0x218bea[_0x237e('0x23')]=qs[_0x237e('0x23')](_0x2c5cae[_0x237e('0x3b')][_0x237e('0x23')]);_0x218bea[_0x237e('0x21')]=qs[_0x237e('0x21')](_0x2c5cae[_0x237e('0x3b')][_0x237e('0x21')]);}_0x218bea[_0x237e('0x43')]=qs[_0x237e('0x44')](_0x2c5cae['query']['sort']);delete _0x2c5cae[_0x237e('0x3b')][_0x237e('0x44')];_0x218bea[_0x237e('0x45')]=qs[_0x237e('0x3d')](_[_0x237e('0x46')](_0x2c5cae[_0x237e('0x3b')],_0xf139fe[_0x237e('0x3d')]),_0x5a7ba7);if(_0x2c5cae[_0x237e('0x3b')][_0x237e('0x47')]){_0x218bea[_0x237e('0x45')]=_['merge'](_0x218bea[_0x237e('0x45')],{'$or':_[_0x237e('0x34')](_0x5a7ba7,function(_0xd4dcb5){if(_0xd4dcb5[_0x237e('0x38')]!=='VIRTUAL'){var _0x475ae8={};_0x475ae8[_0xd4dcb5[_0x237e('0x31')]]={'$like':'%'+_0x2c5cae[_0x237e('0x3b')][_0x237e('0x47')]+'%'};return _0x475ae8;}})});}_0x218bea=_[_0x237e('0x48')]({},_0x218bea,_0x2c5cae['options']);var _0x6c5e7={'where':_0x218bea[_0x237e('0x45')]};return db['VoiceMusicOnHold'][_0x237e('0x24')](_0x6c5e7)['then'](function(_0x41f8f2){_0x3b6d1c[_0x237e('0x24')]=_0x41f8f2;if(_0x2c5cae[_0x237e('0x3b')]['includeAll']){_0x218bea[_0x237e('0x49')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x237e('0x4a')](_0x218bea);})[_0x237e('0x2a')](function(_0xf4788f){_0x3b6d1c[_0x237e('0x4b')]=_0xf4788f;return _0x3b6d1c;})['then'](respondWithFilteredResult(_0x86c5fa,_0x218bea))['catch'](handleError(_0x86c5fa,null));};exports[_0x237e('0x4c')]=function(_0x1a7e83,_0x43bb2a){var _0x1ef555={'raw':![],'where':{'id':_0x1a7e83[_0x237e('0x4d')]['id']}},_0x3db714={};_0x3db714['model']=_[_0x237e('0x3c')](db['VoiceMusicOnHold'][_0x237e('0x36')]);_0x3db714['query']=_['keys'](_0x1a7e83[_0x237e('0x3b')]);_0x3db714['filters']=_['intersection'](_0x3db714[_0x237e('0x3a')],_0x3db714[_0x237e('0x3b')]);_0x1ef555[_0x237e('0x3f')]=_[_0x237e('0x3e')](_0x3db714['model'],qs[_0x237e('0x40')](_0x1a7e83[_0x237e('0x3b')][_0x237e('0x40')]));_0x1ef555[_0x237e('0x3f')]=_0x1ef555[_0x237e('0x3f')][_0x237e('0x4e')]?_0x1ef555[_0x237e('0x3f')]:_0x3db714['model'];if(_0x1a7e83['query']['includeAll']){_0x1ef555[_0x237e('0x49')]=[{'all':!![]}];}_0x1ef555=_[_0x237e('0x48')]({},_0x1ef555,_0x1a7e83[_0x237e('0x4f')]);return db[_0x237e('0x35')][_0x237e('0x50')](_0x1ef555)[_0x237e('0x2a')](handleEntityNotFound(_0x43bb2a,null))[_0x237e('0x2a')](respondWithResult(_0x43bb2a,null))[_0x237e('0x51')](handleError(_0x43bb2a,null));};exports[_0x237e('0x29')]=function(_0x14afba,_0x58363f){if(_0x14afba['body']['id']){delete _0x14afba['body']['id'];}return db[_0x237e('0x35')][_0x237e('0x50')]({'where':{'id':_0x14afba['params']['id']}})[_0x237e('0x2a')](handleEntityNotFound(_0x58363f,null))[_0x237e('0x2a')](saveUpdates(_0x14afba[_0x237e('0x52')],null))[_0x237e('0x2a')](respondWithResult(_0x58363f,null))['catch'](handleError(_0x58363f,null));};exports[_0x237e('0x53')]=function(_0x2609c0,_0x4dab2e,_0x3bb623){return db[_0x237e('0x54')]['transaction'](function(_0x3bb026){if(_0x2609c0[_0x237e('0x52')][_0x237e('0x55')]===_0x237e('0x56')){_0x2609c0['body'][_0x237e('0x57')]=path[_0x237e('0x58')](config['root'],_0x237e('0x59'),_0x2609c0[_0x237e('0x52')][_0x237e('0x31')]);}return db[_0x237e('0x35')]['create'](_0x2609c0[_0x237e('0x52')],{'transaction':_0x3bb026})[_0x237e('0x2a')](function(_0x43fa2a){if(_0x2609c0[_0x237e('0x52')][_0x237e('0x55')]===_0x237e('0x56')){fs[_0x237e('0x5a')](_0x43fa2a[_0x237e('0x57')],parseInt(_0x237e('0x5b'),0x8));}var _0x1f0f03=_0x2609c0[_0x237e('0x5c')][_0x237e('0x2c')]({'plain':!![]});if(!_0x1f0f03)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f0f03['role']===_0x237e('0x5c')){var _0xc50e05=_0x43fa2a['get']({'plain':!![]});return db[_0x237e('0x5d')][_0x237e('0x50')]({'where':{'name':'MusicOnHolds','userProfileId':_0x1f0f03[_0x237e('0x5e')]},'raw':!![]})[_0x237e('0x2a')](function(_0x4960be){if(_0x4960be&&_0x4960be['autoAssociation']===0x0){return db[_0x237e('0x2e')]['create']({'name':_0xc50e05['name'],'resourceId':_0xc50e05['id'],'type':_0x4960be[_0x237e('0x31')],'sectionId':_0x4960be['id']},{})[_0x237e('0x2a')](function(){return _0x43fa2a;});}else{return _0x43fa2a;}})[_0x237e('0x51')](function(_0x190f50){logger[_0x237e('0x2f')](_0x237e('0x5f'),_0x190f50);});}return _0x43fa2a;});})['then'](respondWithResult(_0x4dab2e,0xc9))['catch'](handleError(_0x4dab2e,null));};exports[_0x237e('0x2b')]=function(_0x140adf,_0xfe987e,_0x37c4a0){var _0x2e2abc;return db[_0x237e('0x35')][_0x237e('0x50')]({'where':{'id':_0x140adf[_0x237e('0x4d')]['id']}})[_0x237e('0x2a')](function(_0x8308f2){if(_0x8308f2){return db[_0x237e('0x54')]['transaction'](function(_0x3d2e2b){return _0x8308f2[_0x237e('0x2b')]({'transaction':_0x3d2e2b,'raw':!![]})[_0x237e('0x2a')](function(_0x42fe2f){if(_0x42fe2f['directory']){fs['readdirSync'](_0x42fe2f[_0x237e('0x57')])[_0x237e('0x60')](function(_0x2ba168){fs[_0x237e('0x61')](path[_0x237e('0x58')](_0x42fe2f[_0x237e('0x57')],_0x2ba168));});fs[_0x237e('0x62')](_0x42fe2f[_0x237e('0x57')]);}return _0x42fe2f;});})['catch'](function(_0x428aa5){throw new db[(_0x237e('0x63'))][(_0x237e('0x64'))](_0x428aa5[_0x237e('0x65')]);});}})[_0x237e('0x2a')](handleEntityNotFound(_0xfe987e,null))[_0x237e('0x2a')](removeEntity(_0xfe987e,null))['catch'](handleError(_0xfe987e,null));};exports[_0x237e('0x66')]=function(_0x196139,_0x548dc9,_0x3a77ec){return db[_0x237e('0x54')][_0x237e('0x67')](function(_0x3a1cf9){var _0x15b094;return db[_0x237e('0x35')][_0x237e('0x50')]({'where':{'id':_0x196139[_0x237e('0x4d')]['id']}})[_0x237e('0x2a')](function(_0x3b7b12){if(_0x3b7b12){_0x15b094=_0x3b7b12;return _0x3b7b12[_0x237e('0x66')](_0x196139[_0x237e('0x52')]['id'],{'transaction':_0x3a1cf9});}})['then'](function(_0x3b8377){if(_0x3b8377){return db['Sound'][_0x237e('0x68')]({'where':{'id':_0x196139[_0x237e('0x52')]['id']},'attributes':['id','name',_0x237e('0x69'),_0x237e('0x6a'),'createdAt'],'raw':!![]});}})['then'](function(_0x20c8d1){if(_0x20c8d1){var _0x106245=path[_0x237e('0x58')](config['root'],_0x237e('0x6b'),util['format'](_0x237e('0x6c'),path[_0x237e('0x6d')](_0x20c8d1[_0x237e('0x69')],path[_0x237e('0x6e')](_0x20c8d1[_0x237e('0x69')])),_0x20c8d1[_0x237e('0x6a')]));var _0x5473a4=path[_0x237e('0x58')](config['root'],'server/files/moh',_0x15b094[_0x237e('0x31')],util['format'](_0x237e('0x6c'),_0x20c8d1[_0x237e('0x31')],_0x20c8d1['converted_format']));fs[_0x237e('0x6f')](_0x106245,_0x5473a4);return _0x20c8d1;}})['catch'](function(_0x2af8e9){throw new db['Sequelize'][(_0x237e('0x64'))](_0x2af8e9[_0x237e('0x65')]);});})[_0x237e('0x2a')](handleEntityNotFound(_0x548dc9,null))['then'](respondWithResult(_0x548dc9,0xc9))[_0x237e('0x51')](handleError(_0x548dc9,null));};exports[_0x237e('0x70')]=function(_0x269bc1,_0x13439e,_0x2b104b){return db[_0x237e('0x54')]['transaction'](function(_0x911284){var _0x102144;return db[_0x237e('0x35')][_0x237e('0x68')]({'where':{'id':_0x269bc1['params']['id']}})[_0x237e('0x2a')](handleEntityNotFound(_0x13439e,null))[_0x237e('0x2a')](function(_0x4e4834){if(_0x4e4834){_0x102144=_0x4e4834;return _0x4e4834['removeSound'](_0x269bc1[_0x237e('0x4d')][_0x237e('0x71')]);}})[_0x237e('0x2a')](function(_0x14378a){if(_0x14378a){return db[_0x237e('0x72')][_0x237e('0x68')]({'where':{'id':_0x269bc1[_0x237e('0x4d')]['id2']},'attributes':['id','name','save_name',_0x237e('0x6a'),_0x237e('0x73')],'raw':!![]});}})[_0x237e('0x2a')](function(_0x1df16b){if(_0x1df16b){fs[_0x237e('0x61')](path['join'](_0x102144['directory'],util[_0x237e('0x74')](_0x237e('0x6c'),_0x1df16b[_0x237e('0x31')],_0x1df16b['converted_format'])));return _0x1df16b;}})['catch'](function(_0x4f96f4){throw new db[(_0x237e('0x63'))][(_0x237e('0x64'))](_0x4f96f4['message']);});})[_0x237e('0x2a')](handleEntityNotFound(_0x13439e,null))[_0x237e('0x2a')](respondWithStatusCode(_0x13439e,0xcc))[_0x237e('0x51')](handleError(_0x13439e,null));};exports[_0x237e('0x75')]=function(_0x3f6c54,_0x54ed78,_0x3a3574){var _0x47dc53={};var _0xd1064={};var _0x293884;var _0x317b17;return db['VoiceMusicOnHold'][_0x237e('0x68')]({'where':{'id':_0x3f6c54[_0x237e('0x4d')]['id']}})[_0x237e('0x2a')](handleEntityNotFound(_0x54ed78,null))[_0x237e('0x2a')](function(_0x27a466){if(_0x27a466){_0x293884=_0x27a466;_0xd1064[_0x237e('0x3a')]=_['keys'](db[_0x237e('0x72')][_0x237e('0x36')]);_0xd1064[_0x237e('0x3b')]=_['keys'](_0x3f6c54[_0x237e('0x3b')]);_0xd1064['filters']=_[_0x237e('0x3e')](_0xd1064[_0x237e('0x3a')],_0xd1064[_0x237e('0x3b')]);_0x47dc53[_0x237e('0x3f')]=_[_0x237e('0x3e')](_0xd1064[_0x237e('0x3a')],qs['fields'](_0x3f6c54[_0x237e('0x3b')][_0x237e('0x40')]));_0x47dc53[_0x237e('0x3f')]=_0x47dc53[_0x237e('0x3f')][_0x237e('0x4e')]?_0x47dc53['attributes']:_0xd1064[_0x237e('0x3a')];_0x47dc53[_0x237e('0x43')]=qs['sort'](_0x3f6c54[_0x237e('0x3b')][_0x237e('0x44')]);_0x47dc53[_0x237e('0x45')]=qs[_0x237e('0x3d')](_[_0x237e('0x46')](_0x3f6c54[_0x237e('0x3b')],_0xd1064[_0x237e('0x3d')]));if(_0x3f6c54[_0x237e('0x3b')][_0x237e('0x47')]){_0x47dc53[_0x237e('0x45')]=_['merge'](_0x47dc53[_0x237e('0x45')],{'$or':_[_0x237e('0x34')](_0x47dc53[_0x237e('0x3f')],function(_0x56d527){var _0x519770={};_0x519770[_0x56d527]={'$like':'%'+_0x3f6c54[_0x237e('0x3b')][_0x237e('0x47')]+'%'};return _0x519770;})});}_0x47dc53=_[_0x237e('0x48')]({},_0x47dc53,_0x3f6c54[_0x237e('0x4f')]);return _0x293884[_0x237e('0x75')](_0x47dc53);}})[_0x237e('0x2a')](function(_0x4d6971){if(_0x4d6971){_0x317b17=_0x4d6971[_0x237e('0x4e')];if(!_0x3f6c54['query'][_0x237e('0x41')](_0x237e('0x42'))){_0x47dc53['limit']=qs[_0x237e('0x23')](_0x3f6c54[_0x237e('0x3b')][_0x237e('0x23')]);_0x47dc53[_0x237e('0x21')]=qs[_0x237e('0x21')](_0x3f6c54[_0x237e('0x3b')][_0x237e('0x21')]);}return _0x293884['getSounds'](_0x47dc53);}})[_0x237e('0x2a')](function(_0x248223){if(_0x248223){return _0x248223?{'count':_0x317b17,'rows':_0x248223}:null;}})[_0x237e('0x2a')](respondWithResult(_0x54ed78,null))[_0x237e('0x51')](handleError(_0x54ed78,null));};
\ No newline at end of file
index 6959e49..2bddf59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa1=['bluebird','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','voice_musiconhold','util','../../config/logger'];(function(_0x9ed59a,_0x5210ac){var _0x1e2e8f=function(_0x460baa){while(--_0x460baa){_0x9ed59a['push'](_0x9ed59a['shift']());}};_0x1e2e8f(++_0x5210ac);}(_0x1aa1,0xf8));var _0x11aa=function(_0x35cf0a,_0x4b32be){_0x35cf0a=_0x35cf0a-0x0;var _0x5dc065=_0x1aa1[_0x35cf0a];return _0x5dc065;};'use strict';var _=require('lodash');var util=require(_0x11aa('0x0'));var logger=require(_0x11aa('0x1'))('api');var moment=require('moment');var BPromise=require(_0x11aa('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x11aa('0x3'));var rimraf=require(_0x11aa('0x4'));var config=require(_0x11aa('0x5'));var attributes=require(_0x11aa('0x6'));module[_0x11aa('0x7')]=function(_0x2113dd,_0x122a32){return _0x2113dd[_0x11aa('0x8')]('VoiceMusicOnHold',attributes,{'tableName':_0x11aa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe353=['moment','bluebird','path','rimraf','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xe353,0x98));var _0x3e35=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xe353[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0x3e35('0x0'));var util=require(_0x3e35('0x1'));var logger=require(_0x3e35('0x2'))(_0x3e35('0x3'));var moment=require(_0x3e35('0x4'));var BPromise=require(_0x3e35('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e35('0x6'));var rimraf=require(_0x3e35('0x7'));var config=require('../../config/environment');var attributes=require(_0x3e35('0x8'));module[_0x3e35('0x9')]=function(_0x5f253b,_0x378dfe){return _0x5f253b[_0x3e35('0xa')](_0x3e35('0xb'),attributes,{'tableName':_0x3e35('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b789fa..eacaf4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x1b85ca,_0x2a3424){var _0x1c41a5=function(_0x55cea0){while(--_0x55cea0){_0x1b85ca['push'](_0x1b85ca['shift']());}};_0x1c41a5(++_0x2a3424);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
+var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2f2445,_0x489e95){var _0x464abe=function(_0x37933c){while(--_0x37933c){_0x2f2445['push'](_0x2f2445['shift']());}};_0x464abe(++_0x489e95);}(_0x70e0,0x17b));var _0x070e=function(_0x1b418d,_0x27da5f){_0x1b418d=_0x1b418d-0x0;var _0x1d28be=_0x70e0[_0x1b418d];return _0x1d28be;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index f09b86c..95362e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','index','get','/describe','isAuthenticated','/:id','show','/:id/users','getAgents','/:id/teams','post','addTeams','put','update','delete','destroy','removeTeams','exports','multer'];(function(_0x55fdf3,_0x43fac4){var _0x1f924c=function(_0x48e344){while(--_0x48e344){_0x55fdf3['push'](_0x55fdf3['shift']());}};_0x1f924c(++_0x43fac4);}(_0x18c9,0x1bf));var _0x918c=function(_0x1a7550,_0x1edace){_0x1a7550=_0x1a7550-0x0;var _0x426e22=_0x18c9[_0x1a7550];return _0x426e22;};'use strict';var multer=require(_0x918c('0x0'));var util=require(_0x918c('0x1'));var path=require(_0x918c('0x2'));var timeout=require(_0x918c('0x3'));var express=require(_0x918c('0x4'));var router=express[_0x918c('0x5')]();var fs_extra=require(_0x918c('0x6'));var auth=require(_0x918c('0x7'));var interaction=require(_0x918c('0x8'));var config=require(_0x918c('0x9'));var controller=require(_0x918c('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x918c('0xb')]);router[_0x918c('0xc')](_0x918c('0xd'),auth[_0x918c('0xe')](),controller['describe']);router['get'](_0x918c('0xf'),auth[_0x918c('0xe')](),controller[_0x918c('0x10')]);router[_0x918c('0xc')](_0x918c('0x11'),auth[_0x918c('0xe')](),controller[_0x918c('0x12')]);router['get'](_0x918c('0x13'),auth[_0x918c('0xe')](),controller['getTeams']);router[_0x918c('0x14')]('/',auth[_0x918c('0xe')](),controller['create']);router['post'](_0x918c('0x11'),auth[_0x918c('0xe')](),controller['addAgents']);router['post'](_0x918c('0x13'),auth[_0x918c('0xe')](),controller[_0x918c('0x15')]);router[_0x918c('0x16')](_0x918c('0xf'),auth[_0x918c('0xe')](),controller[_0x918c('0x17')]);router[_0x918c('0x18')](_0x918c('0xf'),auth['isAuthenticated'](),controller[_0x918c('0x19')]);router[_0x918c('0x18')]('/:id/users',auth[_0x918c('0xe')](),controller['removeAgents']);router[_0x918c('0x18')]('/:id/teams',auth[_0x918c('0xe')](),controller[_0x918c('0x1a')]);module[_0x918c('0x1b')]=router;
\ No newline at end of file
+var _0xc4f5=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents','/:id/teams','getTeams','post','create','addAgents','addTeams','put','delete','removeAgents','removeTeams','exports','util','path','connect-timeout'];(function(_0x244862,_0x3da79e){var _0x2bce23=function(_0x235ae5){while(--_0x235ae5){_0x244862['push'](_0x244862['shift']());}};_0x2bce23(++_0x3da79e);}(_0xc4f5,0xa5));var _0x5c4f=function(_0x389af3,_0x30a76a){_0x389af3=_0x389af3-0x0;var _0x199d87=_0xc4f5[_0x389af3];return _0x199d87;};'use strict';var multer=require('multer');var util=require(_0x5c4f('0x0'));var path=require(_0x5c4f('0x1'));var timeout=require(_0x5c4f('0x2'));var express=require('express');var router=express[_0x5c4f('0x3')]();var fs_extra=require(_0x5c4f('0x4'));var auth=require(_0x5c4f('0x5'));var interaction=require(_0x5c4f('0x6'));var config=require(_0x5c4f('0x7'));var controller=require('./voicePrefix.controller');router[_0x5c4f('0x8')]('/',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0xa')]);router[_0x5c4f('0x8')](_0x5c4f('0xb'),auth['isAuthenticated'](),controller[_0x5c4f('0xc')]);router['get'](_0x5c4f('0xd'),auth['isAuthenticated'](),controller[_0x5c4f('0xe')]);router[_0x5c4f('0x8')](_0x5c4f('0xf'),auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x10')]);router[_0x5c4f('0x8')](_0x5c4f('0x11'),auth['isAuthenticated'](),controller[_0x5c4f('0x12')]);router[_0x5c4f('0x13')]('/',auth['isAuthenticated'](),controller[_0x5c4f('0x14')]);router[_0x5c4f('0x13')](_0x5c4f('0xf'),auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x15')]);router['post']('/:id/teams',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x16')]);router[_0x5c4f('0x17')](_0x5c4f('0xd'),auth[_0x5c4f('0x9')](),controller['update']);router['delete'](_0x5c4f('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0x5c4f('0x18')]('/:id/users',auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x19')]);router[_0x5c4f('0x18')](_0x5c4f('0x11'),auth[_0x5c4f('0x9')](),controller[_0x5c4f('0x1a')]);module[_0x5c4f('0x1b')]=router;
\ No newline at end of file
index e815e97..84d9f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe445=['name','STRING','INTEGER','VIRTUAL','system-','getDataValue'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xe445,0x1e3));var _0x5e44=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe445[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x5e44('0x0')],'get':function(_0x392351){return _0x5e44('0x1')+this[_0x5e44('0x2')](_0x5e44('0x3'))+'-';}},'description':{'type':Sequelize[_0x5e44('0x4')]},'callerIdAll':{'type':Sequelize[_0x5e44('0x4')]},'VoiceExtensionId':{'type':Sequelize[_0x5e44('0x5')]}};
\ No newline at end of file
+var _0xecb9=['name','getDataValue','INTEGER','sequelize','exports','STRING'];(function(_0x379e8f,_0x55ed77){var _0x5e984c=function(_0x36a76d){while(--_0x36a76d){_0x379e8f['push'](_0x379e8f['shift']());}};_0x5e984c(++_0x55ed77);}(_0xecb9,0xcf));var _0x9ecb=function(_0x1e758e,_0x157fa3){_0x1e758e=_0x1e758e-0x0;var _0x23840b=_0xecb9[_0x1e758e];return _0x23840b;};'use strict';var Sequelize=require(_0x9ecb('0x0'));module[_0x9ecb('0x1')]={'name':{'type':Sequelize[_0x9ecb('0x2')],'allowNull':![],'unique':_0x9ecb('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x37a180){return'system-'+this[_0x9ecb('0x4')](_0x9ecb('0x3'))+'-';}},'description':{'type':Sequelize[_0x9ecb('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x9ecb('0x5')]}};
\ No newline at end of file
index 0752477..7ad65b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['UserVoicePrefix','findOrCreate','forEach','select','field','tq.TeamId','from','team_has_voice_prefixes','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','TeamId','includes','all','compact','removeTeams','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','VoicePrefixes','error','stack','name','send','index','map','VoicePrefix','fieldName','type','key','model','keys','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','options','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','context','from-sip','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','VoicePrefixId','Extensions\x20creation\x20failed','push','CDR(prefix)=','PREFIX-CALLERIDALL=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','voicePause','flatMap','Agents','addTeams','each'];(function(_0x728a62,_0x53677e){var _0x10cec9=function(_0x4ece30){while(--_0x4ece30){_0x728a62['push'](_0x728a62['shift']());}};_0x10cec9(++_0x53677e);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x515afd,_0x1a1e91){_0x515afd=_0x515afd-0x0;var _0x536d53=_0x1eba[_0x515afd];return _0x536d53;};'use strict';var emlformat=require(_0xa1eb('0x0'));var rimraf=require(_0xa1eb('0x1'));var zipdir=require(_0xa1eb('0x2'));var jsonpatch=require(_0xa1eb('0x3'));var rp=require(_0xa1eb('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa1eb('0x5'));var util=require(_0xa1eb('0x6'));var path=require(_0xa1eb('0x7'));var sox=require(_0xa1eb('0x8'));var csv=require(_0xa1eb('0x9'));var ejs=require(_0xa1eb('0xa'));var fs=require('fs');var fs_extra=require(_0xa1eb('0xb'));var _=require(_0xa1eb('0xc'));var squel=require(_0xa1eb('0xd'));var crypto=require(_0xa1eb('0xe'));var jsforce=require(_0xa1eb('0xf'));var deskjs=require(_0xa1eb('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa1eb('0x11'));var Papa=require('papaparse');var Redis=require(_0xa1eb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa1eb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1eb('0x14'));var logger=require('../../config/logger')(_0xa1eb('0x15'));var utils=require(_0xa1eb('0x16'));var config=require(_0xa1eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa1eb('0x18'))['db'];config[_0xa1eb('0x19')]=_['defaults'](config[_0xa1eb('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa1eb('0x19')]));require('./voicePrefix.socket')[_0xa1eb('0x1a')](socket);function respondWithStatusCode(_0x2178e2,_0x14e048){_0x14e048=_0x14e048||0xcc;return function(_0x2877cb){if(_0x2877cb){return _0x2178e2[_0xa1eb('0x1b')](_0x14e048);}return _0x2178e2[_0xa1eb('0x1c')](_0x14e048)[_0xa1eb('0x1d')]();};}function respondWithResult(_0x45d6dd,_0x211e42){_0x211e42=_0x211e42||0xc8;return function(_0x4aa527){if(_0x4aa527){return _0x45d6dd[_0xa1eb('0x1c')](_0x211e42)['json'](_0x4aa527);}};}function respondWithFilteredResult(_0x1401ef,_0x3dafcd){return function(_0x33c4e3){if(_0x33c4e3){var _0x1a5d2c=typeof _0x3dafcd['offset']===_0xa1eb('0x1e')&&typeof _0x3dafcd[_0xa1eb('0x1f')]===_0xa1eb('0x1e');var _0xcf45c1=_0x33c4e3[_0xa1eb('0x20')];var _0x3b8607=_0x1a5d2c?0x0:_0x3dafcd[_0xa1eb('0x21')];var _0x166f7f=_0x1a5d2c?_0x33c4e3['count']:_0x3dafcd[_0xa1eb('0x21')]+_0x3dafcd['limit'];var _0x2258d1;if(_0x166f7f>=_0xcf45c1){_0x166f7f=_0xcf45c1;_0x2258d1=0xc8;}else{_0x2258d1=0xce;}_0x1401ef[_0xa1eb('0x1c')](_0x2258d1);return _0x1401ef[_0xa1eb('0x22')](_0xa1eb('0x23'),_0x3b8607+'-'+_0x166f7f+'/'+_0xcf45c1)['json'](_0x33c4e3);}return null;};}function patchUpdates(_0x539634){return function(_0x168221){try{jsonpatch[_0xa1eb('0x24')](_0x168221,_0x539634,!![]);}catch(_0x5b0903){return BPromise[_0xa1eb('0x25')](_0x5b0903);}return _0x168221[_0xa1eb('0x26')]();};}function saveUpdates(_0x258d3a,_0xa6b20c){return function(_0x23b49e){if(_0x23b49e){return _0x23b49e[_0xa1eb('0x27')](_0x258d3a)[_0xa1eb('0x28')](function(_0x364b1c){return _0x364b1c;});}return null;};}function removeEntity(_0xd7bb88,_0x352796){return function(_0xb77fd6){if(_0xb77fd6){return _0xb77fd6[_0xa1eb('0x29')]()['then'](function(){var _0x7c617e=_0xb77fd6[_0xa1eb('0x2a')]({'plain':!![]});var _0x491f37=_0xa1eb('0x2b');return db['UserProfileResource'][_0xa1eb('0x29')]({'where':{'type':_0x491f37,'resourceId':_0x7c617e['id']}})[_0xa1eb('0x28')](function(){return _0xb77fd6;});})['then'](function(){_0xd7bb88[_0xa1eb('0x1c')](0xcc)[_0xa1eb('0x1d')]();});}};}function handleEntityNotFound(_0x136835,_0x4f64bb){return function(_0x12cf56){if(!_0x12cf56){_0x136835[_0xa1eb('0x1b')](0x194);}return _0x12cf56;};}function handleError(_0x55f5cc,_0x273a42){_0x273a42=_0x273a42||0x1f4;return function(_0xb27bf9){logger[_0xa1eb('0x2c')](_0xb27bf9[_0xa1eb('0x2d')]);if(_0xb27bf9[_0xa1eb('0x2e')]){delete _0xb27bf9['name'];}_0x55f5cc[_0xa1eb('0x1c')](_0x273a42)[_0xa1eb('0x2f')](_0xb27bf9);};}exports[_0xa1eb('0x30')]=function(_0x2ae21d,_0x383e26){var _0xcd9efd={},_0x1d5b64={},_0xcfda64={'count':0x0,'rows':[]};var _0x254727=_[_0xa1eb('0x31')](db[_0xa1eb('0x32')]['rawAttributes'],function(_0x563b11){return{'name':_0x563b11[_0xa1eb('0x33')],'type':_0x563b11[_0xa1eb('0x34')][_0xa1eb('0x35')]};});_0x1d5b64[_0xa1eb('0x36')]=_[_0xa1eb('0x31')](_0x254727,'name');_0x1d5b64['query']=_[_0xa1eb('0x37')](_0x2ae21d[_0xa1eb('0x38')]);_0x1d5b64['filters']=_['intersection'](_0x1d5b64[_0xa1eb('0x36')],_0x1d5b64['query']);_0xcd9efd[_0xa1eb('0x39')]=_['intersection'](_0x1d5b64[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x2ae21d[_0xa1eb('0x38')]['fields']));_0xcd9efd[_0xa1eb('0x39')]=_0xcd9efd[_0xa1eb('0x39')][_0xa1eb('0x3b')]?_0xcd9efd['attributes']:_0x1d5b64[_0xa1eb('0x36')];if(!_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x3c')](_0xa1eb('0x3d'))){_0xcd9efd[_0xa1eb('0x1f')]=qs['limit'](_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0xcd9efd[_0xa1eb('0x21')]=qs[_0xa1eb('0x21')](_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x21')]);}_0xcd9efd[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x2ae21d['query'][_0xa1eb('0x3f')]);_0xcd9efd[_0xa1eb('0x40')]=qs[_0xa1eb('0x41')](_[_0xa1eb('0x42')](_0x2ae21d[_0xa1eb('0x38')],_0x1d5b64['filters']),_0x254727);if(_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x43')]){_0xcd9efd[_0xa1eb('0x40')]=_['merge'](_0xcd9efd[_0xa1eb('0x40')],{'$or':_[_0xa1eb('0x31')](_0x254727,function(_0x2ae6d8){if(_0x2ae6d8[_0xa1eb('0x34')]!==_0xa1eb('0x44')){var _0x1e5b3b={};_0x1e5b3b[_0x2ae6d8[_0xa1eb('0x2e')]]={'$like':'%'+_0x2ae21d['query'][_0xa1eb('0x43')]+'%'};return _0x1e5b3b;}})});}_0xcd9efd=_[_0xa1eb('0x45')]({},_0xcd9efd,_0x2ae21d['options']);var _0xf6c04b={'where':_0xcd9efd['where']};return db[_0xa1eb('0x32')][_0xa1eb('0x20')](_0xf6c04b)[_0xa1eb('0x28')](function(_0x361675){_0xcfda64[_0xa1eb('0x20')]=_0x361675;if(_0x2ae21d[_0xa1eb('0x38')][_0xa1eb('0x46')]){_0xcd9efd[_0xa1eb('0x47')]=[{'all':!![]}];}return db[_0xa1eb('0x32')][_0xa1eb('0x48')](_0xcd9efd);})[_0xa1eb('0x28')](function(_0x3c4690){_0xcfda64[_0xa1eb('0x49')]=_0x3c4690;return _0xcfda64;})[_0xa1eb('0x28')](respondWithFilteredResult(_0x383e26,_0xcd9efd))[_0xa1eb('0x4a')](handleError(_0x383e26,null));};exports[_0xa1eb('0x4b')]=function(_0x4e068d,_0x10f983){var _0x4fd053={'raw':![],'where':{'id':_0x4e068d[_0xa1eb('0x4c')]['id']}},_0x3edc6b={};_0x3edc6b['model']=_['keys'](db[_0xa1eb('0x32')][_0xa1eb('0x4d')]);_0x3edc6b[_0xa1eb('0x38')]=_['keys'](_0x4e068d[_0xa1eb('0x38')]);_0x3edc6b[_0xa1eb('0x41')]=_[_0xa1eb('0x4e')](_0x3edc6b[_0xa1eb('0x36')],_0x3edc6b[_0xa1eb('0x38')]);_0x4fd053[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x3edc6b[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x4e068d[_0xa1eb('0x38')][_0xa1eb('0x3a')]));_0x4fd053[_0xa1eb('0x39')]=_0x4fd053[_0xa1eb('0x39')][_0xa1eb('0x3b')]?_0x4fd053['attributes']:_0x3edc6b[_0xa1eb('0x36')];if(_0x4e068d[_0xa1eb('0x38')][_0xa1eb('0x46')]){_0x4fd053[_0xa1eb('0x47')]=[{'all':!![]}];}_0x4fd053=_[_0xa1eb('0x45')]({},_0x4fd053,_0x4e068d[_0xa1eb('0x4f')]);return db[_0xa1eb('0x32')]['find'](_0x4fd053)[_0xa1eb('0x28')](handleEntityNotFound(_0x10f983,null))[_0xa1eb('0x28')](respondWithResult(_0x10f983,null))[_0xa1eb('0x4a')](handleError(_0x10f983,null));};exports[_0xa1eb('0x29')]=function(_0x8975a1,_0x1302f6){return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x8975a1[_0xa1eb('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1302f6,null))[_0xa1eb('0x28')](removeEntity(_0x1302f6,null))['catch'](handleError(_0x1302f6,null));};exports[_0xa1eb('0x51')]=function(_0x495c01,_0x1a815e){return db[_0xa1eb('0x32')][_0xa1eb('0x51')]()['then'](respondWithResult(_0x1a815e,null))[_0xa1eb('0x4a')](handleError(_0x1a815e,null));};exports[_0xa1eb('0x52')]=function(_0x549c95,_0x10d6d5){var _0x2926e7;return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x11cc84){return db[_0xa1eb('0x32')][_0xa1eb('0x52')](_0x549c95[_0xa1eb('0x55')],{'transaction':_0x11cc84})[_0xa1eb('0x28')](function(_0x3d9a41){_0x2926e7=_0x3d9a41[_0xa1eb('0x2a')]({'plain':!![]});return db[_0xa1eb('0x56')][_0xa1eb('0x50')]({'where':{'id':_0x2926e7[_0xa1eb('0x57')]},'raw':!![]})[_0xa1eb('0x28')](function(_0x2ba6c0){return createVoicePrefixExtensions(_0x2926e7,_0x2ba6c0,_0x11cc84);});});})[_0xa1eb('0x28')](function(){var _0x589186=_0x549c95[_0xa1eb('0x58')][_0xa1eb('0x2a')]({'plain':!![]});if(!_0x589186)throw new Error(_0xa1eb('0x59'));if(_0x589186[_0xa1eb('0x5a')]===_0xa1eb('0x58')){var _0x1f5da6=_0x2926e7;return db['UserProfileSection'][_0xa1eb('0x50')]({'where':{'name':_0xa1eb('0x2b'),'userProfileId':_0x589186[_0xa1eb('0x5b')]},'raw':!![]})[_0xa1eb('0x28')](function(_0xa46d79){if(_0xa46d79&&_0xa46d79[_0xa1eb('0x5c')]===0x0){return db[_0xa1eb('0x5d')]['create']({'name':_0x1f5da6[_0xa1eb('0x2e')],'resourceId':_0x1f5da6['id'],'type':_0xa46d79[_0xa1eb('0x2e')],'sectionId':_0xa46d79['id']},{})[_0xa1eb('0x28')](function(){return _0x2926e7;});}else{return _0x2926e7;}})[_0xa1eb('0x4a')](function(_0x4c30ad){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c30ad);throw _0x4c30ad;});}return _0x2926e7;})['then'](respondWithResult(_0x10d6d5,null))[_0xa1eb('0x4a')](handleError(_0x10d6d5,null));};function Extension(_0x1e1e5d,_0x591907,_0x4643f3,_0x3e2d2f){this[_0xa1eb('0x5e')]=_0xa1eb('0x5f');this['exten']=_0x1e1e5d;this['app']=_0x4643f3;this[_0xa1eb('0x34')]=_0xa1eb('0x60');this[_0xa1eb('0x61')]=_0xa1eb('0x62');this[_0xa1eb('0x63')]=_0x591907;this[_0xa1eb('0x64')]=_0x3e2d2f;}function createVoicePrefixExtensions(_0x51580f,_0x532dfa,_0x43f223){return new BPromise(function(_0x5afc3e,_0x3ea940){var _0x57172d=new Extension(formatPrefixName(_0x51580f[_0xa1eb('0x65')]),0x1,_0xa1eb('0x66'),'Voice\x20Prefix');_0x57172d[_0xa1eb('0x67')]=_0x51580f['id'];return db[_0xa1eb('0x56')]['create'](_0x57172d,{'transaction':_0x43f223})[_0xa1eb('0x28')](function(_0x17feb5){var _0x3b97c7=_0x17feb5['get']({'plain':!![]});var _0x9799d3=_[_0xa1eb('0x31')](addVoicePrefixExtensions(_0x51580f,_0x532dfa),function(_0x4af59a){_0x4af59a[_0xa1eb('0x57')]=_0x3b97c7['id'];_0x4af59a[_0xa1eb('0x67')]=_0x51580f['id'];return _0x4af59a;});return db[_0xa1eb('0x56')]['bulkCreate'](_0x9799d3,{'transaction':_0x43f223})[_0xa1eb('0x28')](function(_0x5aa916){if(!_0x5aa916){return _0x3ea940(_0xa1eb('0x68'));}else{return _0x5afc3e(_0x5aa916);}})[_0xa1eb('0x4a')](function(_0x40eae0){return _0x3ea940(_0x40eae0);});});;});};function addVoicePrefixExtensions(_0x331a80,_0x2df867){var _0x48f49d=[];var _0x2aba03=formatPrefixName(_0x331a80[_0xa1eb('0x65')]);_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x2,'Set',_0xa1eb('0x6a')+_0x331a80['name']));if(_0x331a80['callerIdAll']){_0x48f49d['push'](new Extension(_0x2aba03,0x3,'Set',_0xa1eb('0x6b')+_0x331a80[_0xa1eb('0x6c')]));}else{_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x3,_0xa1eb('0x66'),_0xa1eb('0x6d')));}_0x48f49d[_0xa1eb('0x69')](new Extension(_0x2aba03,0x4,_0xa1eb('0x6e'),_0x2df867[_0xa1eb('0x5e')]+','+_0xa1eb('0x6f')+(0x8+_0x331a80[_0xa1eb('0x2e')]['length'])+'}'+','+0x1));return _0x48f49d;}function formatPrefixName(_0x79bee8){var _0x1d1c91='_';for(var _0x46207c=0x0;_0x46207c<_0x79bee8[_0xa1eb('0x3b')];_0x46207c++){if(_0x79bee8[_0xa1eb('0x70')](_0x46207c)=='-'){_0x1d1c91+=_0x79bee8[_0xa1eb('0x70')](_0x46207c);}else{_0x1d1c91+='['+_0x79bee8['charAt'](_0x46207c)+']';}}_0x1d1c91+='.';return _0x1d1c91;}exports[_0xa1eb('0x27')]=function(_0x2b6996,_0x16c5a3,_0x58147f){var _0x1434a1=_0x2b6996[_0xa1eb('0x55')];_0x1434a1[_0xa1eb('0x65')]=_0xa1eb('0x71')+_0x1434a1[_0xa1eb('0x2e')]+'-';return db['sequelize'][_0xa1eb('0x54')](function(_0x50eff6){return db[_0xa1eb('0x32')]['update'](_0x1434a1,{'where':{'id':_0x1434a1['id']},'transaction':_0x50eff6})[_0xa1eb('0x28')](function(){return db[_0xa1eb('0x56')][_0xa1eb('0x29')]({'where':{'VoicePrefixId':_0x1434a1['id']},'transaction':_0x50eff6})[_0xa1eb('0x28')](function(){return db['VoiceExtension'][_0xa1eb('0x50')]({'where':{'id':_0x1434a1[_0xa1eb('0x57')]},'raw':!![]})[_0xa1eb('0x28')](function(_0x293f74){return createVoicePrefixExtensions(_0x1434a1,_0x293f74,_0x50eff6);});});});})['then'](function(){return db[_0xa1eb('0x32')][_0xa1eb('0x72')](_0x1434a1['id']);})[_0xa1eb('0x28')](respondWithResult(_0x16c5a3,null))[_0xa1eb('0x4a')](handleError(_0x16c5a3,null));};exports[_0xa1eb('0x73')]=function(_0x22a7cb,_0x389e44,_0x471633){return db[_0xa1eb('0x32')]['find']({'where':{'id':_0x22a7cb['params']['id']}})['then'](handleEntityNotFound(_0x389e44,null))[_0xa1eb('0x28')](function(_0x5b7785){if(_0x5b7785){return _0x5b7785[_0xa1eb('0x73')](_0x22a7cb[_0xa1eb('0x55')]['ids'],_['omit'](_0x22a7cb[_0xa1eb('0x55')],[_0xa1eb('0x74'),'id'])||{})[_0xa1eb('0x75')](function(_0x6027f7){for(var _0x470489=0x0;_0x470489<_0x22a7cb['body']['ids'][_0xa1eb('0x3b')];_0x470489+=0x1){socket[_0xa1eb('0x76')](_0xa1eb('0x77'),{'UserId':Number(_0x22a7cb[_0xa1eb('0x55')]['ids'][_0x470489]),'VoicePrefixId':Number(_0x22a7cb[_0xa1eb('0x4c')]['id'])});}return _0x6027f7;});}})[_0xa1eb('0x28')](respondWithResult(_0x389e44,null))[_0xa1eb('0x4a')](handleError(_0x389e44,null));};exports[_0xa1eb('0x78')]=function(_0x3863ce,_0x37d8c4,_0x3fd52a){return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x3863ce[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x37d8c4,null))['then'](function(_0x21d884){if(_0x21d884){return _0x21d884[_0xa1eb('0x78')](_0x3863ce[_0xa1eb('0x38')][_0xa1eb('0x74')])[_0xa1eb('0x28')](function(){if(_[_0xa1eb('0x79')](_0x3863ce['query'][_0xa1eb('0x74')])){for(var _0x36a94f=0x0;_0x36a94f<_0x3863ce[_0xa1eb('0x38')][_0xa1eb('0x74')]['length'];_0x36a94f+=0x1){socket['emit'](_0xa1eb('0x7a'),{'UserId':Number(_0x3863ce['query'][_0xa1eb('0x74')][_0x36a94f]),'VoicePrefixId':Number(_0x3863ce[_0xa1eb('0x4c')]['id'])});}}else{socket['emit'](_0xa1eb('0x7a'),{'UserId':Number(_0x3863ce[_0xa1eb('0x38')]['ids']),'VoicePrefixId':Number(_0x3863ce[_0xa1eb('0x4c')]['id'])});}});}})[_0xa1eb('0x28')](respondWithStatusCode(_0x37d8c4,null))[_0xa1eb('0x4a')](handleError(_0x37d8c4,null));};exports[_0xa1eb('0x7b')]=function(_0x3d9034,_0x20cf70,_0x824123){var _0x2ce2e1={};var _0x3d32da={};var _0x64943f;var _0x3b4851;return db['VoicePrefix'][_0xa1eb('0x7c')]({'where':{'id':_0x3d9034[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x20cf70,null))[_0xa1eb('0x28')](function(_0x49e563){if(_0x49e563){_0x64943f=_0x49e563;_0x3d32da[_0xa1eb('0x36')]=_[_0xa1eb('0x37')](db[_0xa1eb('0x7d')]['rawAttributes']);_0x3d32da[_0xa1eb('0x38')]=_[_0xa1eb('0x37')](_0x3d9034[_0xa1eb('0x38')]);_0x3d32da['filters']=_[_0xa1eb('0x4e')](_0x3d32da['model'],_0x3d32da[_0xa1eb('0x38')]);_0x2ce2e1[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x3d32da[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x3a')]));_0x2ce2e1[_0xa1eb('0x39')]=_0x2ce2e1['attributes'][_0xa1eb('0x3b')]?_0x2ce2e1[_0xa1eb('0x39')]:_0x3d32da[_0xa1eb('0x36')];_0x2ce2e1[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x3d9034['query'][_0xa1eb('0x3f')]);_0x2ce2e1[_0xa1eb('0x40')]=qs['filters'](_[_0xa1eb('0x42')](_0x3d9034['query'],_0x3d32da['filters']));if(_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x43')]){_0x2ce2e1['where']=_[_0xa1eb('0x45')](_0x2ce2e1[_0xa1eb('0x40')],{'$or':_['map'](_0x2ce2e1[_0xa1eb('0x39')],function(_0x2c49d1){var _0x4d2598={};_0x4d2598[_0x2c49d1]={'$like':'%'+_0x3d9034['query'][_0xa1eb('0x43')]+'%'};return _0x4d2598;})});}_0x2ce2e1=_['merge']({},_0x2ce2e1,_0x3d9034[_0xa1eb('0x4f')]);return _0x64943f[_0xa1eb('0x7b')](_0x2ce2e1);}})[_0xa1eb('0x28')](function(_0x316a75){if(_0x316a75){_0x3b4851=_0x316a75[_0xa1eb('0x3b')];if(!_0x3d9034[_0xa1eb('0x38')]['hasOwnProperty'](_0xa1eb('0x3d'))){_0x2ce2e1['limit']=qs[_0xa1eb('0x1f')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0x2ce2e1[_0xa1eb('0x21')]=qs[_0xa1eb('0x21')](_0x3d9034[_0xa1eb('0x38')][_0xa1eb('0x21')]);}return _0x64943f['getAgents'](_0x2ce2e1);}})[_0xa1eb('0x28')](function(_0x4effc0){if(_0x4effc0){return _0x4effc0?{'count':_0x3b4851,'rows':_0x4effc0}:null;}})['then'](respondWithResult(_0x20cf70,null))[_0xa1eb('0x4a')](handleError(_0x20cf70,null));};exports[_0xa1eb('0x7e')]=function(_0x456ddb,_0x559d58,_0x14eff1){var _0x717fbf={};var _0x5ef8c1={};var _0x2dd909;var _0x58d694;return db[_0xa1eb('0x32')]['findOne']({'where':{'id':_0x456ddb[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](handleEntityNotFound(_0x559d58,null))['then'](function(_0x52c3d6){if(_0x52c3d6){_0x2dd909=_0x52c3d6;_0x5ef8c1[_0xa1eb('0x36')]=_[_0xa1eb('0x37')](db[_0xa1eb('0x7f')][_0xa1eb('0x4d')]);_0x5ef8c1[_0xa1eb('0x38')]=_[_0xa1eb('0x37')](_0x456ddb[_0xa1eb('0x38')]);_0x5ef8c1[_0xa1eb('0x41')]=_[_0xa1eb('0x4e')](_0x5ef8c1[_0xa1eb('0x36')],_0x5ef8c1[_0xa1eb('0x38')]);_0x717fbf[_0xa1eb('0x39')]=_[_0xa1eb('0x4e')](_0x5ef8c1[_0xa1eb('0x36')],qs[_0xa1eb('0x3a')](_0x456ddb['query'][_0xa1eb('0x3a')]));_0x717fbf[_0xa1eb('0x39')]=_0x717fbf['attributes'][_0xa1eb('0x3b')]?_0x717fbf['attributes']:_0x5ef8c1[_0xa1eb('0x36')];_0x717fbf[_0xa1eb('0x3e')]=qs[_0xa1eb('0x3f')](_0x456ddb['query'][_0xa1eb('0x3f')]);_0x717fbf[_0xa1eb('0x40')]=qs[_0xa1eb('0x41')](_[_0xa1eb('0x42')](_0x456ddb['query'],_0x5ef8c1[_0xa1eb('0x41')]));if(_0x456ddb['query'][_0xa1eb('0x43')]){_0x717fbf[_0xa1eb('0x40')]=_[_0xa1eb('0x45')](_0x717fbf[_0xa1eb('0x40')],{'$or':_[_0xa1eb('0x31')](_0x717fbf[_0xa1eb('0x39')],function(_0xc27d40){var _0x1e3d9c={};_0x1e3d9c[_0xc27d40]={'$like':'%'+_0x456ddb['query'][_0xa1eb('0x43')]+'%'};return _0x1e3d9c;})});}_0x717fbf=_[_0xa1eb('0x45')]({},_0x717fbf,_0x456ddb[_0xa1eb('0x4f')]);return _0x2dd909[_0xa1eb('0x7e')](_0x717fbf);}})[_0xa1eb('0x28')](function(_0x322728){if(_0x322728){_0x58d694=_0x322728[_0xa1eb('0x3b')];if(!_0x456ddb[_0xa1eb('0x38')][_0xa1eb('0x3c')](_0xa1eb('0x3d'))){_0x717fbf[_0xa1eb('0x1f')]=qs[_0xa1eb('0x1f')](_0x456ddb[_0xa1eb('0x38')][_0xa1eb('0x1f')]);_0x717fbf['offset']=qs[_0xa1eb('0x21')](_0x456ddb[_0xa1eb('0x38')]['offset']);}return _0x2dd909['getTeams'](_0x717fbf);}})[_0xa1eb('0x28')](function(_0x106dd9){if(_0x106dd9){return _0x106dd9?{'count':_0x58d694,'rows':_0x106dd9}:null;}})[_0xa1eb('0x28')](respondWithResult(_0x559d58,null))[_0xa1eb('0x4a')](handleError(_0x559d58,null));};exports['addTeams']=function(_0x402acb,_0x49441f,_0x3ad4ca){var _0x2151a8=_0x402acb[_0xa1eb('0x55')][_0xa1eb('0x74')];var _0x33a90e;return db[_0xa1eb('0x7f')][_0xa1eb('0x48')]({'where':{'id':_0x2151a8},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online',_0xa1eb('0x80'),'interface'],'raw':!![]}]})[_0xa1eb('0x28')](function(_0x2c97f8){if(_0x2c97f8){_0x33a90e=_0x2c97f8;var _0x1c1a59=_[_0xa1eb('0x81')](_0x2c97f8,function(_0x438746){var _0x16528e=_0x438746[_0xa1eb('0x2a')]({'plain':!![]});return _0x16528e[_0xa1eb('0x82')];});return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x402acb[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](function(_0x3d9f66){return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x562666){return _0x3d9f66[_0xa1eb('0x83')](_0x2151a8,{'transaction':_0x562666})['then'](function(){return BPromise[_0xa1eb('0x84')](_0x33a90e,function(_0x230a07){return db['TeamVoicePrefix']['upsert']({'TeamId':_0x230a07['id'],'VoicePrefixId':_0x402acb[_0xa1eb('0x4c')]['id']},{'transaction':_0x562666});});})[_0xa1eb('0x28')](function(){return BPromise[_0xa1eb('0x84')](_0x1c1a59,function(_0x38451d){return db[_0xa1eb('0x85')][_0xa1eb('0x86')]({'where':{'UserId':_0x38451d['id'],'VoicePrefixId':_0x402acb['params']['id']},'transaction':_0x562666});});})[_0xa1eb('0x28')](function(){_0x1c1a59[_0xa1eb('0x87')](function(_0x11d0ab){socket[_0xa1eb('0x76')](_0xa1eb('0x77'),{'UserId':_0x11d0ab['id'],'VoicePrefixId':_0x3d9f66['id']});});});});});}})[_0xa1eb('0x28')](respondWithStatusCode(_0x49441f,null))[_0xa1eb('0x4a')](handleError(_0x49441f,null));};exports['removeTeams']=function(_0x37e2d5,_0x1cfec1,_0x4d9d0b){return db['Team'][_0xa1eb('0x48')]({'where':{'id':_0x37e2d5['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa1eb('0x7d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa1eb('0x28')](handleEntityNotFound(_0x1cfec1,null))[_0xa1eb('0x28')](function(_0x5b8b32){var _0xe47df5=_[_0xa1eb('0x31')](_0x5b8b32,'id');var _0x382643=[];var _0x89e33c=[];var _0x4f535b=squel[_0xa1eb('0x88')]();_0x4f535b[_0xa1eb('0x89')](_0xa1eb('0x8a'))[_0xa1eb('0x8b')](_0xa1eb('0x8c'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa1eb('0x40')](_0xa1eb('0x8d'),_0x37e2d5[_0xa1eb('0x4c')]['id']);for(var _0x3da094=0x0;_0x3da094<_0x5b8b32[_0xa1eb('0x3b')];_0x3da094+=0x1){let _0x41e608=_0x5b8b32[_0x3da094];for(var _0x934746=0x0;_0x934746<_0x41e608[_0xa1eb('0x82')][_0xa1eb('0x3b')];_0x934746+=0x1){let _0x34e1ae=_0x41e608[_0xa1eb('0x82')][_0x934746];var _0x368e4e=_0x4f535b[_0xa1eb('0x8e')]();_0x368e4e[_0xa1eb('0x40')](_0xa1eb('0x8f'),_0x34e1ae['id']);_0x89e33c[_0xa1eb('0x69')](db[_0xa1eb('0x53')]['query'](_0x368e4e[_0xa1eb('0x90')](),{'type':db[_0xa1eb('0x53')]['QueryTypes'][_0xa1eb('0x91')]})[_0xa1eb('0x28')](function(_0x155a90){if(_0x155a90[_0xa1eb('0x3b')]===0x1){return _0x34e1ae['id'];}else{var _0x1d018a=_['every'](_['map'](_0x155a90,_0xa1eb('0x92')),function(_0x4ab784){return _[_0xa1eb('0x93')](_0xe47df5,_0x4ab784);});if(_0x1d018a){return _0x34e1ae['id'];}}}));}}return BPromise[_0xa1eb('0x94')](_0x89e33c)['then'](function(_0x4e3121){_0x382643=_(_0x382643)['union'](_0x4e3121)[_0xa1eb('0x95')]()['value']();return db[_0xa1eb('0x32')][_0xa1eb('0x50')]({'where':{'id':_0x37e2d5[_0xa1eb('0x4c')]['id']}})[_0xa1eb('0x28')](function(_0x29ecae){return db[_0xa1eb('0x53')][_0xa1eb('0x54')](function(_0x5a0dd4){return _0x29ecae[_0xa1eb('0x96')](_0x37e2d5[_0xa1eb('0x38')][_0xa1eb('0x74')],{'transaction':_0x5a0dd4})['then'](function(){if(!_['isEmpty'](_0x382643)){return _0x29ecae[_0xa1eb('0x78')](_0x382643,{'transaction':_0x5a0dd4});}})[_0xa1eb('0x28')](function(){_0x382643[_0xa1eb('0x87')](function(_0x42720b){socket[_0xa1eb('0x76')]('userVoicePrefix:remove',{'UserId':_0x42720b,'VoicePrefixId':_0x29ecae['id']});});});});});});})[_0xa1eb('0x28')](respondWithStatusCode(_0x1cfec1,null))['catch'](handleError(_0x1cfec1,null));};
\ No newline at end of file
+var _0x2272=['Voice\x20Prefix\x20Extension','priority','NoOp','VoicePrefixId','prefix','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','context','${EXTEN:','charAt','update','system-','findById','addAgents','ids','spread','emit','removeAgents','userVoicePrefix:remove','getAgents','User','order','pick','getTeams','findOne','addTeams','Team','Agents','online','voicePause','interface','flatMap','each','upsert','UserVoicePrefix','findOrCreate','forEach','userVoicePrefix:save','select','field','tq.TeamId','from','team_has_voice_prefixes','join','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','toString','SELECT','every','TeamId','includes','all','union','removeTeams','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voicePrefix.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoicePrefixes','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','app','system','description'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x2227('0x0'));var rimraf=require(_0x2227('0x1'));var zipdir=require(_0x2227('0x2'));var jsonpatch=require(_0x2227('0x3'));var rp=require(_0x2227('0x4'));var moment=require('moment');var BPromise=require(_0x2227('0x5'));var Mustache=require(_0x2227('0x6'));var util=require(_0x2227('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x2227('0x8'));var ejs=require(_0x2227('0x9'));var fs=require('fs');var fs_extra=require(_0x2227('0xa'));var _=require(_0x2227('0xb'));var squel=require(_0x2227('0xc'));var crypto=require(_0x2227('0xd'));var jsforce=require(_0x2227('0xe'));var deskjs=require(_0x2227('0xf'));var toCsv=require(_0x2227('0x8'));var querystring=require(_0x2227('0x10'));var Papa=require('papaparse');var Redis=require(_0x2227('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2227('0x12'));var as=require(_0x2227('0x13'));var hardwareService=require(_0x2227('0x14'));var logger=require(_0x2227('0x15'))(_0x2227('0x16'));var utils=require('../../config/utils');var config=require(_0x2227('0x17'));var licenseUtil=require(_0x2227('0x18'));var db=require(_0x2227('0x19'))['db'];config[_0x2227('0x1a')]=_[_0x2227('0x1b')](config[_0x2227('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2227('0x1c'))['register'](socket);function respondWithStatusCode(_0x42f60b,_0xb631b0){_0xb631b0=_0xb631b0||0xcc;return function(_0x510b09){if(_0x510b09){return _0x42f60b[_0x2227('0x1d')](_0xb631b0);}return _0x42f60b[_0x2227('0x1e')](_0xb631b0)[_0x2227('0x1f')]();};}function respondWithResult(_0x43e174,_0x42a93c){_0x42a93c=_0x42a93c||0xc8;return function(_0x1e78a8){if(_0x1e78a8){return _0x43e174['status'](_0x42a93c)[_0x2227('0x20')](_0x1e78a8);}};}function respondWithFilteredResult(_0x1cf016,_0x162723){return function(_0x531f75){if(_0x531f75){var _0x11bf80=typeof _0x162723[_0x2227('0x21')]===_0x2227('0x22')&&typeof _0x162723[_0x2227('0x23')]===_0x2227('0x22');var _0x28e642=_0x531f75[_0x2227('0x24')];var _0x4e0bba=_0x11bf80?0x0:_0x162723[_0x2227('0x21')];var _0x59f988=_0x11bf80?_0x531f75[_0x2227('0x24')]:_0x162723[_0x2227('0x21')]+_0x162723[_0x2227('0x23')];var _0x1f28ef;if(_0x59f988>=_0x28e642){_0x59f988=_0x28e642;_0x1f28ef=0xc8;}else{_0x1f28ef=0xce;}_0x1cf016[_0x2227('0x1e')](_0x1f28ef);return _0x1cf016[_0x2227('0x25')](_0x2227('0x26'),_0x4e0bba+'-'+_0x59f988+'/'+_0x28e642)[_0x2227('0x20')](_0x531f75);}return null;};}function patchUpdates(_0x3299fd){return function(_0x34c090){try{jsonpatch[_0x2227('0x27')](_0x34c090,_0x3299fd,!![]);}catch(_0x5a454f){return BPromise[_0x2227('0x28')](_0x5a454f);}return _0x34c090[_0x2227('0x29')]();};}function saveUpdates(_0x5b3a09,_0x2cef4b){return function(_0xbfdce1){if(_0xbfdce1){return _0xbfdce1['update'](_0x5b3a09)['then'](function(_0x17c7a4){return _0x17c7a4;});}return null;};}function removeEntity(_0xa4d18b,_0x35333f){return function(_0x1f30c3){if(_0x1f30c3){return _0x1f30c3['destroy']()[_0x2227('0x2a')](function(){var _0x301304=_0x1f30c3[_0x2227('0x2b')]({'plain':!![]});var _0x1957ee='VoicePrefixes';return db[_0x2227('0x2c')][_0x2227('0x2d')]({'where':{'type':_0x1957ee,'resourceId':_0x301304['id']}})[_0x2227('0x2a')](function(){return _0x1f30c3;});})[_0x2227('0x2a')](function(){_0xa4d18b[_0x2227('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55015e,_0x5d1d56){return function(_0x2dc38d){if(!_0x2dc38d){_0x55015e['sendStatus'](0x194);}return _0x2dc38d;};}function handleError(_0x2ba581,_0x1979d8){_0x1979d8=_0x1979d8||0x1f4;return function(_0x58609e){logger['error'](_0x58609e[_0x2227('0x2e')]);if(_0x58609e[_0x2227('0x2f')]){delete _0x58609e[_0x2227('0x2f')];}_0x2ba581['status'](_0x1979d8)[_0x2227('0x30')](_0x58609e);};}exports['index']=function(_0xaa2bbb,_0x3f108b){var _0x28ad1c={},_0xfa2140={},_0x155095={'count':0x0,'rows':[]};var _0x256b7b=_[_0x2227('0x31')](db[_0x2227('0x32')][_0x2227('0x33')],function(_0x781f79){return{'name':_0x781f79[_0x2227('0x34')],'type':_0x781f79['type'][_0x2227('0x35')]};});_0xfa2140[_0x2227('0x36')]=_[_0x2227('0x31')](_0x256b7b,_0x2227('0x2f'));_0xfa2140['query']=_[_0x2227('0x37')](_0xaa2bbb[_0x2227('0x38')]);_0xfa2140[_0x2227('0x39')]=_[_0x2227('0x3a')](_0xfa2140['model'],_0xfa2140[_0x2227('0x38')]);_0x28ad1c[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0xfa2140['model'],qs['fields'](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x3c')]));_0x28ad1c['attributes']=_0x28ad1c[_0x2227('0x3b')][_0x2227('0x3d')]?_0x28ad1c['attributes']:_0xfa2140[_0x2227('0x36')];if(!_0xaa2bbb['query'][_0x2227('0x3e')](_0x2227('0x3f'))){_0x28ad1c[_0x2227('0x23')]=qs[_0x2227('0x23')](_0xaa2bbb['query'][_0x2227('0x23')]);_0x28ad1c['offset']=qs[_0x2227('0x21')](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x21')]);}_0x28ad1c['order']=qs[_0x2227('0x40')](_0xaa2bbb[_0x2227('0x38')][_0x2227('0x40')]);_0x28ad1c[_0x2227('0x41')]=qs[_0x2227('0x39')](_['pick'](_0xaa2bbb['query'],_0xfa2140[_0x2227('0x39')]),_0x256b7b);if(_0xaa2bbb['query'][_0x2227('0x42')]){_0x28ad1c[_0x2227('0x41')]=_[_0x2227('0x43')](_0x28ad1c[_0x2227('0x41')],{'$or':_[_0x2227('0x31')](_0x256b7b,function(_0xd08cd8){if(_0xd08cd8[_0x2227('0x44')]!==_0x2227('0x45')){var _0x5688b5={};_0x5688b5[_0xd08cd8[_0x2227('0x2f')]]={'$like':'%'+_0xaa2bbb['query'][_0x2227('0x42')]+'%'};return _0x5688b5;}})});}_0x28ad1c=_['merge']({},_0x28ad1c,_0xaa2bbb[_0x2227('0x46')]);var _0x59afc0={'where':_0x28ad1c[_0x2227('0x41')]};return db['VoicePrefix'][_0x2227('0x24')](_0x59afc0)[_0x2227('0x2a')](function(_0x46eb0f){_0x155095[_0x2227('0x24')]=_0x46eb0f;if(_0xaa2bbb[_0x2227('0x38')][_0x2227('0x47')]){_0x28ad1c['include']=[{'all':!![]}];}return db['VoicePrefix'][_0x2227('0x48')](_0x28ad1c);})['then'](function(_0x3552db){_0x155095['rows']=_0x3552db;return _0x155095;})[_0x2227('0x2a')](respondWithFilteredResult(_0x3f108b,_0x28ad1c))[_0x2227('0x49')](handleError(_0x3f108b,null));};exports[_0x2227('0x4a')]=function(_0xa3ae06,_0x3f9787){var _0x2871a6={'raw':![],'where':{'id':_0xa3ae06[_0x2227('0x4b')]['id']}},_0x5f5880={};_0x5f5880[_0x2227('0x36')]=_[_0x2227('0x37')](db[_0x2227('0x32')][_0x2227('0x33')]);_0x5f5880[_0x2227('0x38')]=_[_0x2227('0x37')](_0xa3ae06[_0x2227('0x38')]);_0x5f5880['filters']=_[_0x2227('0x3a')](_0x5f5880[_0x2227('0x36')],_0x5f5880[_0x2227('0x38')]);_0x2871a6[_0x2227('0x3b')]=_['intersection'](_0x5f5880[_0x2227('0x36')],qs[_0x2227('0x3c')](_0xa3ae06['query'][_0x2227('0x3c')]));_0x2871a6[_0x2227('0x3b')]=_0x2871a6[_0x2227('0x3b')][_0x2227('0x3d')]?_0x2871a6[_0x2227('0x3b')]:_0x5f5880[_0x2227('0x36')];if(_0xa3ae06[_0x2227('0x38')]['includeAll']){_0x2871a6[_0x2227('0x4c')]=[{'all':!![]}];}_0x2871a6=_[_0x2227('0x43')]({},_0x2871a6,_0xa3ae06['options']);return db[_0x2227('0x32')]['find'](_0x2871a6)[_0x2227('0x2a')](handleEntityNotFound(_0x3f9787,null))[_0x2227('0x2a')](respondWithResult(_0x3f9787,null))[_0x2227('0x49')](handleError(_0x3f9787,null));};exports[_0x2227('0x2d')]=function(_0x5387fc,_0x4e12c7){return db['VoicePrefix'][_0x2227('0x4d')]({'where':{'id':_0x5387fc[_0x2227('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4e12c7,null))[_0x2227('0x2a')](removeEntity(_0x4e12c7,null))[_0x2227('0x49')](handleError(_0x4e12c7,null));};exports[_0x2227('0x4e')]=function(_0x39166b,_0x4ee23c){return db['VoicePrefix'][_0x2227('0x4e')]()[_0x2227('0x2a')](respondWithResult(_0x4ee23c,null))[_0x2227('0x49')](handleError(_0x4ee23c,null));};exports[_0x2227('0x4f')]=function(_0x597f00,_0x26581d){var _0x443933;return db[_0x2227('0x50')][_0x2227('0x51')](function(_0x125fa8){return db[_0x2227('0x32')][_0x2227('0x4f')](_0x597f00[_0x2227('0x52')],{'transaction':_0x125fa8})[_0x2227('0x2a')](function(_0x418ec4){_0x443933=_0x418ec4[_0x2227('0x2b')]({'plain':!![]});return db[_0x2227('0x53')][_0x2227('0x4d')]({'where':{'id':_0x443933[_0x2227('0x54')]},'raw':!![]})[_0x2227('0x2a')](function(_0x10c21a){return createVoicePrefixExtensions(_0x443933,_0x10c21a,_0x125fa8);});});})['then'](function(){var _0xc176c9=_0x597f00[_0x2227('0x55')]['get']({'plain':!![]});if(!_0xc176c9)throw new Error(_0x2227('0x56'));if(_0xc176c9[_0x2227('0x57')]===_0x2227('0x55')){var _0x4e8622=_0x443933;return db['UserProfileSection']['find']({'where':{'name':_0x2227('0x58'),'userProfileId':_0xc176c9[_0x2227('0x59')]},'raw':!![]})['then'](function(_0x2171b1){if(_0x2171b1&&_0x2171b1[_0x2227('0x5a')]===0x0){return db[_0x2227('0x2c')]['create']({'name':_0x4e8622[_0x2227('0x2f')],'resourceId':_0x4e8622['id'],'type':_0x2171b1[_0x2227('0x2f')],'sectionId':_0x2171b1['id']},{})['then'](function(){return _0x443933;});}else{return _0x443933;}})[_0x2227('0x49')](function(_0x1f02be){logger['error'](_0x2227('0x5b'),_0x1f02be);throw _0x1f02be;});}return _0x443933;})[_0x2227('0x2a')](respondWithResult(_0x26581d,null))[_0x2227('0x49')](handleError(_0x26581d,null));};function Extension(_0x1ab7e0,_0x300741,_0x118225,_0x52861f){this['context']=_0x2227('0x5c');this['exten']=_0x1ab7e0;this[_0x2227('0x5d')]=_0x118225;this['type']=_0x2227('0x5e');this[_0x2227('0x5f')]=_0x2227('0x60');this[_0x2227('0x61')]=_0x300741;this['appdata']=_0x52861f;}function createVoicePrefixExtensions(_0x44a025,_0x41359a,_0x10df84){return new BPromise(function(_0x1ec0db,_0x30fbd8){var _0x4fdb8d=new Extension(formatPrefixName(_0x44a025['prefix']),0x1,_0x2227('0x62'),'Voice\x20Prefix');_0x4fdb8d[_0x2227('0x63')]=_0x44a025['id'];return db[_0x2227('0x53')]['create'](_0x4fdb8d,{'transaction':_0x10df84})['then'](function(_0x1aa091){var _0x335798=_0x1aa091[_0x2227('0x2b')]({'plain':!![]});var _0x2f6d49=_[_0x2227('0x31')](addVoicePrefixExtensions(_0x44a025,_0x41359a),function(_0x119d39){_0x119d39[_0x2227('0x54')]=_0x335798['id'];_0x119d39[_0x2227('0x63')]=_0x44a025['id'];return _0x119d39;});return db[_0x2227('0x53')]['bulkCreate'](_0x2f6d49,{'transaction':_0x10df84})[_0x2227('0x2a')](function(_0x1d0e87){if(!_0x1d0e87){return _0x30fbd8('Extensions\x20creation\x20failed');}else{return _0x1ec0db(_0x1d0e87);}})[_0x2227('0x49')](function(_0x108605){return _0x30fbd8(_0x108605);});});;});};function addVoicePrefixExtensions(_0x1b2634,_0x5a41d9){var _0x215fb2=[];var _0xfa23f1=formatPrefixName(_0x1b2634[_0x2227('0x64')]);_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x2,_0x2227('0x66'),_0x2227('0x67')+_0x1b2634[_0x2227('0x2f')]));if(_0x1b2634[_0x2227('0x68')]){_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x3,_0x2227('0x66'),_0x2227('0x69')+_0x1b2634[_0x2227('0x68')]));}else{_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x3,_0x2227('0x62'),'No\x20callerid\x20available'));}_0x215fb2[_0x2227('0x65')](new Extension(_0xfa23f1,0x4,_0x2227('0x6a'),_0x5a41d9[_0x2227('0x6b')]+','+_0x2227('0x6c')+(0x8+_0x1b2634[_0x2227('0x2f')][_0x2227('0x3d')])+'}'+','+0x1));return _0x215fb2;}function formatPrefixName(_0x1e7779){var _0x4633d8='_';for(var _0x4e0ca2=0x0;_0x4e0ca2<_0x1e7779[_0x2227('0x3d')];_0x4e0ca2++){if(_0x1e7779[_0x2227('0x6d')](_0x4e0ca2)=='-'){_0x4633d8+=_0x1e7779[_0x2227('0x6d')](_0x4e0ca2);}else{_0x4633d8+='['+_0x1e7779['charAt'](_0x4e0ca2)+']';}}_0x4633d8+='.';return _0x4633d8;}exports[_0x2227('0x6e')]=function(_0x4258a3,_0x24b5b0,_0x5bd233){var _0x398d76=_0x4258a3['body'];_0x398d76[_0x2227('0x64')]=_0x2227('0x6f')+_0x398d76[_0x2227('0x2f')]+'-';return db[_0x2227('0x50')]['transaction'](function(_0x3a34d8){return db[_0x2227('0x32')]['update'](_0x398d76,{'where':{'id':_0x398d76['id']},'transaction':_0x3a34d8})['then'](function(){return db[_0x2227('0x53')][_0x2227('0x2d')]({'where':{'VoicePrefixId':_0x398d76['id']},'transaction':_0x3a34d8})[_0x2227('0x2a')](function(){return db[_0x2227('0x53')][_0x2227('0x4d')]({'where':{'id':_0x398d76[_0x2227('0x54')]},'raw':!![]})[_0x2227('0x2a')](function(_0x36a85a){return createVoicePrefixExtensions(_0x398d76,_0x36a85a,_0x3a34d8);});});});})['then'](function(){return db[_0x2227('0x32')][_0x2227('0x70')](_0x398d76['id']);})[_0x2227('0x2a')](respondWithResult(_0x24b5b0,null))['catch'](handleError(_0x24b5b0,null));};exports['addAgents']=function(_0x5147fe,_0xf3038b,_0x57b27a){return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x5147fe[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0xf3038b,null))[_0x2227('0x2a')](function(_0x2435d0){if(_0x2435d0){return _0x2435d0[_0x2227('0x71')](_0x5147fe[_0x2227('0x52')][_0x2227('0x72')],_['omit'](_0x5147fe[_0x2227('0x52')],[_0x2227('0x72'),'id'])||{})[_0x2227('0x73')](function(_0x58e3ee){for(var _0x22a30f=0x0;_0x22a30f<_0x5147fe[_0x2227('0x52')]['ids']['length'];_0x22a30f+=0x1){socket[_0x2227('0x74')]('userVoicePrefix:save',{'UserId':Number(_0x5147fe[_0x2227('0x52')][_0x2227('0x72')][_0x22a30f]),'VoicePrefixId':Number(_0x5147fe[_0x2227('0x4b')]['id'])});}return _0x58e3ee;});}})[_0x2227('0x2a')](respondWithResult(_0xf3038b,null))[_0x2227('0x49')](handleError(_0xf3038b,null));};exports['removeAgents']=function(_0x9b431a,_0x128e74,_0x770f98){return db[_0x2227('0x32')]['find']({'where':{'id':_0x9b431a[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x128e74,null))['then'](function(_0x5af36d){if(_0x5af36d){return _0x5af36d[_0x2227('0x75')](_0x9b431a[_0x2227('0x38')][_0x2227('0x72')])['then'](function(){if(_['isArray'](_0x9b431a[_0x2227('0x38')][_0x2227('0x72')])){for(var _0x13cd17=0x0;_0x13cd17<_0x9b431a[_0x2227('0x38')]['ids']['length'];_0x13cd17+=0x1){socket[_0x2227('0x74')]('userVoicePrefix:remove',{'UserId':Number(_0x9b431a[_0x2227('0x38')][_0x2227('0x72')][_0x13cd17]),'VoicePrefixId':Number(_0x9b431a[_0x2227('0x4b')]['id'])});}}else{socket['emit'](_0x2227('0x76'),{'UserId':Number(_0x9b431a['query'][_0x2227('0x72')]),'VoicePrefixId':Number(_0x9b431a[_0x2227('0x4b')]['id'])});}});}})[_0x2227('0x2a')](respondWithStatusCode(_0x128e74,null))[_0x2227('0x49')](handleError(_0x128e74,null));};exports[_0x2227('0x77')]=function(_0x190760,_0x2eea42,_0x9364ec){var _0x50c689={};var _0x266f3b={};var _0x3e2219;var _0x1f0fc8;return db['VoicePrefix']['findOne']({'where':{'id':_0x190760[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x2eea42,null))[_0x2227('0x2a')](function(_0x5daa8b){if(_0x5daa8b){_0x3e2219=_0x5daa8b;_0x266f3b[_0x2227('0x36')]=_['keys'](db[_0x2227('0x78')]['rawAttributes']);_0x266f3b[_0x2227('0x38')]=_[_0x2227('0x37')](_0x190760['query']);_0x266f3b[_0x2227('0x39')]=_[_0x2227('0x3a')](_0x266f3b[_0x2227('0x36')],_0x266f3b[_0x2227('0x38')]);_0x50c689[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0x266f3b['model'],qs['fields'](_0x190760[_0x2227('0x38')][_0x2227('0x3c')]));_0x50c689[_0x2227('0x3b')]=_0x50c689[_0x2227('0x3b')]['length']?_0x50c689['attributes']:_0x266f3b[_0x2227('0x36')];_0x50c689[_0x2227('0x79')]=qs[_0x2227('0x40')](_0x190760['query']['sort']);_0x50c689[_0x2227('0x41')]=qs[_0x2227('0x39')](_[_0x2227('0x7a')](_0x190760[_0x2227('0x38')],_0x266f3b[_0x2227('0x39')]));if(_0x190760[_0x2227('0x38')][_0x2227('0x42')]){_0x50c689[_0x2227('0x41')]=_[_0x2227('0x43')](_0x50c689['where'],{'$or':_['map'](_0x50c689[_0x2227('0x3b')],function(_0x5732e5){var _0x5f1ade={};_0x5f1ade[_0x5732e5]={'$like':'%'+_0x190760[_0x2227('0x38')]['filter']+'%'};return _0x5f1ade;})});}_0x50c689=_[_0x2227('0x43')]({},_0x50c689,_0x190760[_0x2227('0x46')]);return _0x3e2219['getAgents'](_0x50c689);}})[_0x2227('0x2a')](function(_0x3174ef){if(_0x3174ef){_0x1f0fc8=_0x3174ef[_0x2227('0x3d')];if(!_0x190760['query'][_0x2227('0x3e')]('nolimit')){_0x50c689['limit']=qs[_0x2227('0x23')](_0x190760['query'][_0x2227('0x23')]);_0x50c689[_0x2227('0x21')]=qs[_0x2227('0x21')](_0x190760['query'][_0x2227('0x21')]);}return _0x3e2219[_0x2227('0x77')](_0x50c689);}})[_0x2227('0x2a')](function(_0x467380){if(_0x467380){return _0x467380?{'count':_0x1f0fc8,'rows':_0x467380}:null;}})['then'](respondWithResult(_0x2eea42,null))['catch'](handleError(_0x2eea42,null));};exports[_0x2227('0x7b')]=function(_0x3b653f,_0x35c9ea,_0x2e4a1b){var _0x4cd27e={};var _0x1a2852={};var _0x4599ab;var _0x3d592a;return db[_0x2227('0x32')][_0x2227('0x7c')]({'where':{'id':_0x3b653f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](handleEntityNotFound(_0x35c9ea,null))['then'](function(_0x524e6a){if(_0x524e6a){_0x4599ab=_0x524e6a;_0x1a2852[_0x2227('0x36')]=_[_0x2227('0x37')](db['Team'][_0x2227('0x33')]);_0x1a2852[_0x2227('0x38')]=_[_0x2227('0x37')](_0x3b653f[_0x2227('0x38')]);_0x1a2852['filters']=_[_0x2227('0x3a')](_0x1a2852['model'],_0x1a2852['query']);_0x4cd27e[_0x2227('0x3b')]=_[_0x2227('0x3a')](_0x1a2852[_0x2227('0x36')],qs[_0x2227('0x3c')](_0x3b653f[_0x2227('0x38')][_0x2227('0x3c')]));_0x4cd27e[_0x2227('0x3b')]=_0x4cd27e[_0x2227('0x3b')][_0x2227('0x3d')]?_0x4cd27e['attributes']:_0x1a2852[_0x2227('0x36')];_0x4cd27e[_0x2227('0x79')]=qs[_0x2227('0x40')](_0x3b653f[_0x2227('0x38')][_0x2227('0x40')]);_0x4cd27e['where']=qs[_0x2227('0x39')](_['pick'](_0x3b653f[_0x2227('0x38')],_0x1a2852[_0x2227('0x39')]));if(_0x3b653f[_0x2227('0x38')][_0x2227('0x42')]){_0x4cd27e[_0x2227('0x41')]=_[_0x2227('0x43')](_0x4cd27e[_0x2227('0x41')],{'$or':_[_0x2227('0x31')](_0x4cd27e['attributes'],function(_0x1686d7){var _0x30101f={};_0x30101f[_0x1686d7]={'$like':'%'+_0x3b653f[_0x2227('0x38')]['filter']+'%'};return _0x30101f;})});}_0x4cd27e=_[_0x2227('0x43')]({},_0x4cd27e,_0x3b653f[_0x2227('0x46')]);return _0x4599ab['getTeams'](_0x4cd27e);}})[_0x2227('0x2a')](function(_0x386b5d){if(_0x386b5d){_0x3d592a=_0x386b5d['length'];if(!_0x3b653f[_0x2227('0x38')][_0x2227('0x3e')](_0x2227('0x3f'))){_0x4cd27e[_0x2227('0x23')]=qs[_0x2227('0x23')](_0x3b653f[_0x2227('0x38')][_0x2227('0x23')]);_0x4cd27e[_0x2227('0x21')]=qs['offset'](_0x3b653f[_0x2227('0x38')][_0x2227('0x21')]);}return _0x4599ab[_0x2227('0x7b')](_0x4cd27e);}})[_0x2227('0x2a')](function(_0x172b34){if(_0x172b34){return _0x172b34?{'count':_0x3d592a,'rows':_0x172b34}:null;}})[_0x2227('0x2a')](respondWithResult(_0x35c9ea,null))['catch'](handleError(_0x35c9ea,null));};exports[_0x2227('0x7d')]=function(_0x2ffe4f,_0x28d3ca,_0x20def8){var _0x42787b=_0x2ffe4f[_0x2227('0x52')][_0x2227('0x72')];var _0x2cf763;return db[_0x2227('0x7e')][_0x2227('0x48')]({'where':{'id':_0x42787b},'attributes':['id'],'include':[{'model':db[_0x2227('0x78')],'as':_0x2227('0x7f'),'attributes':['id','name',_0x2227('0x80'),_0x2227('0x81'),_0x2227('0x82')],'raw':!![]}]})[_0x2227('0x2a')](function(_0x43af43){if(_0x43af43){_0x2cf763=_0x43af43;var _0x1766e5=_[_0x2227('0x83')](_0x43af43,function(_0x2fdf17){var _0x38e805=_0x2fdf17[_0x2227('0x2b')]({'plain':!![]});return _0x38e805['Agents'];});return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x2ffe4f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](function(_0x2fdc19){return db[_0x2227('0x50')][_0x2227('0x51')](function(_0x3f7d5d){return _0x2fdc19['addTeams'](_0x42787b,{'transaction':_0x3f7d5d})[_0x2227('0x2a')](function(){return BPromise[_0x2227('0x84')](_0x2cf763,function(_0x36492d){return db['TeamVoicePrefix'][_0x2227('0x85')]({'TeamId':_0x36492d['id'],'VoicePrefixId':_0x2ffe4f[_0x2227('0x4b')]['id']},{'transaction':_0x3f7d5d});});})['then'](function(){return BPromise[_0x2227('0x84')](_0x1766e5,function(_0x2fb89b){return db[_0x2227('0x86')][_0x2227('0x87')]({'where':{'UserId':_0x2fb89b['id'],'VoicePrefixId':_0x2ffe4f[_0x2227('0x4b')]['id']},'transaction':_0x3f7d5d});});})['then'](function(){_0x1766e5[_0x2227('0x88')](function(_0x12fabe){socket[_0x2227('0x74')](_0x2227('0x89'),{'UserId':_0x12fabe['id'],'VoicePrefixId':_0x2fdc19['id']});});});});});}})[_0x2227('0x2a')](respondWithStatusCode(_0x28d3ca,null))['catch'](handleError(_0x28d3ca,null));};exports['removeTeams']=function(_0x2e153f,_0x312033,_0x1c557d){return db['Team']['findAll']({'where':{'id':_0x2e153f['query'][_0x2227('0x72')]},'attributes':['id'],'include':[{'model':db[_0x2227('0x78')],'as':_0x2227('0x7f'),'attributes':['id'],'raw':!![]}]})[_0x2227('0x2a')](handleEntityNotFound(_0x312033,null))[_0x2227('0x2a')](function(_0x3e5597){var _0x3f58d2=_['map'](_0x3e5597,'id');var _0x2930e9=[];var _0x4505ab=[];var _0x2824b1=squel[_0x2227('0x8a')]();_0x2824b1[_0x2227('0x8b')](_0x2227('0x8c'))[_0x2227('0x8d')](_0x2227('0x8e'),'tq')[_0x2227('0x8f')]('user_has_teams','ut',_0x2227('0x90'))[_0x2227('0x41')](_0x2227('0x91'),_0x2e153f[_0x2227('0x4b')]['id']);for(var _0x3b5b07=0x0;_0x3b5b07<_0x3e5597[_0x2227('0x3d')];_0x3b5b07+=0x1){let _0x19608d=_0x3e5597[_0x3b5b07];for(var _0x5008cc=0x0;_0x5008cc<_0x19608d[_0x2227('0x7f')][_0x2227('0x3d')];_0x5008cc+=0x1){let _0x15b3c4=_0x19608d[_0x2227('0x7f')][_0x5008cc];var _0x1a0805=_0x2824b1[_0x2227('0x92')]();_0x1a0805[_0x2227('0x41')]('ut.UserId\x20=\x20?',_0x15b3c4['id']);_0x4505ab[_0x2227('0x65')](db[_0x2227('0x50')][_0x2227('0x38')](_0x1a0805[_0x2227('0x93')](),{'type':db[_0x2227('0x50')]['QueryTypes'][_0x2227('0x94')]})[_0x2227('0x2a')](function(_0x4f822c){if(_0x4f822c['length']===0x1){return _0x15b3c4['id'];}else{var _0x1bab79=_[_0x2227('0x95')](_[_0x2227('0x31')](_0x4f822c,_0x2227('0x96')),function(_0x26c479){return _[_0x2227('0x97')](_0x3f58d2,_0x26c479);});if(_0x1bab79){return _0x15b3c4['id'];}}}));}}return BPromise[_0x2227('0x98')](_0x4505ab)['then'](function(_0x54db70){_0x2930e9=_(_0x2930e9)[_0x2227('0x99')](_0x54db70)['compact']()['value']();return db[_0x2227('0x32')][_0x2227('0x4d')]({'where':{'id':_0x2e153f[_0x2227('0x4b')]['id']}})[_0x2227('0x2a')](function(_0x152b89){return db[_0x2227('0x50')]['transaction'](function(_0x360f72){return _0x152b89[_0x2227('0x9a')](_0x2e153f['query'][_0x2227('0x72')],{'transaction':_0x360f72})[_0x2227('0x2a')](function(){if(!_[_0x2227('0x9b')](_0x2930e9)){return _0x152b89[_0x2227('0x75')](_0x2930e9,{'transaction':_0x360f72});}})[_0x2227('0x2a')](function(){_0x2930e9[_0x2227('0x88')](function(_0x66aa39){socket[_0x2227('0x74')](_0x2227('0x76'),{'UserId':_0x66aa39,'VoicePrefixId':_0x152b89['id']});});});});});});})[_0x2227('0x2a')](respondWithStatusCode(_0x312033,null))['catch'](handleError(_0x312033,null));};
\ No newline at end of file
index bc9ffe2..b4a7cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x922c=['exports','events','../../mysqldb','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x258b37,_0x3078b3){var _0x34d71d=function(_0x26f5aa){while(--_0x26f5aa){_0x258b37['push'](_0x258b37['shift']());}};_0x34d71d(++_0x3078b3);}(_0x922c,0x121));var _0xc922=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x922c[_0x2f62aa];return _0x1a341f;};'use strict';var EventEmitter=require(_0xc922('0x0'));var VoicePrefix=require(_0xc922('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xc922('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xc922('0x3')};function emitEvent(_0x2806f4){return function(_0x3588ad,_0xc9c306,_0x562b03){VoicePrefixEvents[_0xc922('0x4')](_0x2806f4+':'+_0x3588ad['id'],_0x3588ad);VoicePrefixEvents[_0xc922('0x4')](_0x2806f4,_0x3588ad);_0x562b03(null);};}for(var e in events){if(events[_0xc922('0x5')](e)){var event=events[e];VoicePrefix[_0xc922('0x6')](e,emitEvent(event));}}module[_0xc922('0x7')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x6f03=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','VoicePrefix'];(function(_0x2ab376,_0xc28556){var _0x16f972=function(_0x3863fd){while(--_0x3863fd){_0x2ab376['push'](_0x2ab376['shift']());}};_0x16f972(++_0xc28556);}(_0x6f03,0x1da));var _0x36f0=function(_0x510593,_0x2d0a42){_0x510593=_0x510593-0x0;var _0x3b7d9d=_0x6f03[_0x510593];return _0x3b7d9d;};'use strict';var EventEmitter=require(_0x36f0('0x0'));var VoicePrefix=require(_0x36f0('0x1'))['db'][_0x36f0('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x36f0('0x3')](0x0);var events={'afterCreate':_0x36f0('0x4'),'afterUpdate':_0x36f0('0x5'),'afterDestroy':_0x36f0('0x6')};function emitEvent(_0x482a52){return function(_0x17b31a,_0x5e932a,_0x425eda){VoicePrefixEvents[_0x36f0('0x7')](_0x482a52+':'+_0x17b31a['id'],_0x17b31a);VoicePrefixEvents[_0x36f0('0x7')](_0x482a52,_0x17b31a);_0x425eda(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x36f0('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index be75041..7cc119f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07df=['exports','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./voicePrefix.attributes'];(function(_0x346585,_0x30f4f4){var _0x2bc4e7=function(_0x56422c){while(--_0x56422c){_0x346585['push'](_0x346585['shift']());}};_0x2bc4e7(++_0x30f4f4);}(_0x07df,0x13c));var _0xf07d=function(_0x113564,_0x3e5bcb){_0x113564=_0x113564-0x0;var _0x151b78=_0x07df[_0x113564];return _0x151b78;};'use strict';var _=require(_0xf07d('0x0'));var util=require(_0xf07d('0x1'));var logger=require(_0xf07d('0x2'))('api');var moment=require(_0xf07d('0x3'));var BPromise=require('bluebird');var rp=require(_0xf07d('0x4'));var fs=require('fs');var path=require(_0xf07d('0x5'));var rimraf=require('rimraf');var config=require(_0xf07d('0x6'));var attributes=require(_0xf07d('0x7'));module[_0xf07d('0x8')]=function(_0x8f393e,_0x21e32b){return _0x8f393e[_0xf07d('0x9')](_0xf07d('0xa'),attributes,{'tableName':_0xf07d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3caf=['define','VoicePrefix','voice_prefixes','../../config/logger','api','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','exports'];(function(_0x1602ef,_0x447aba){var _0x5870ee=function(_0x4d94e7){while(--_0x4d94e7){_0x1602ef['push'](_0x1602ef['shift']());}};_0x5870ee(++_0x447aba);}(_0x3caf,0x1cf));var _0xf3ca=function(_0x355dd1,_0x23770b){_0x355dd1=_0x355dd1-0x0;var _0x3110f1=_0x3caf[_0x355dd1];return _0x3110f1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf3ca('0x0'))(_0xf3ca('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf3ca('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf3ca('0x3'));var config=require(_0xf3ca('0x4'));var attributes=require(_0xf3ca('0x5'));module[_0xf3ca('0x6')]=function(_0x2f725b,_0xef690a){return _0x2f725b[_0xf3ca('0x7')](_0xf3ca('0x8'),attributes,{'tableName':_0xf3ca('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7b447ac..4cf5e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1115=['http','defaults','redis','socket.io-emitter','./voicePrefix.socket','register','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x34df55,_0x35e243){var _0x211a92=function(_0x185ec8){while(--_0x185ec8){_0x34df55['push'](_0x34df55['shift']());}};_0x211a92(++_0x35e243);}(_0x1115,0x1b6));var _0x5111=function(_0x598076,_0x5106da){_0x598076=_0x598076-0x0;var _0x4dbe23=_0x1115[_0x598076];return _0x4dbe23;};'use strict';var _=require('lodash');var util=require(_0x5111('0x0'));var moment=require(_0x5111('0x1'));var BPromise=require(_0x5111('0x2'));var rs=require(_0x5111('0x3'));var fs=require('fs');var Redis=require(_0x5111('0x4'));var db=require(_0x5111('0x5'))['db'];var utils=require(_0x5111('0x6'));var logger=require(_0x5111('0x7'))(_0x5111('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5111('0x9')][_0x5111('0xa')]({'port':0x232a});config['redis']=_[_0x5111('0xb')](config[_0x5111('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5111('0xd'))(new Redis(config['redis']));require(_0x5111('0xe'))[_0x5111('0xf')](socket);function respondWithRpcPromise(_0x4ecb50,_0x5e12a7,_0x347d87){return new BPromise(function(_0x5a826a,_0x162624){return client['request'](_0x4ecb50,_0x347d87)[_0x5111('0x10')](function(_0x532984){logger[_0x5111('0x11')](_0x5111('0x12'),_0x5e12a7,_0x5111('0x13'));logger[_0x5111('0x14')](_0x5111('0x15'),_0x5e12a7,_0x5111('0x13'),JSON[_0x5111('0x16')](_0x532984));if(_0x532984[_0x5111('0x17')]){if(_0x532984[_0x5111('0x17')][_0x5111('0x18')]===0x1f4){logger[_0x5111('0x17')](_0x5111('0x12'),_0x5e12a7,_0x532984[_0x5111('0x17')][_0x5111('0x19')]);return _0x162624(_0x532984[_0x5111('0x17')][_0x5111('0x19')]);}logger['error'](_0x5111('0x12'),_0x5e12a7,_0x532984['error']['message']);return _0x5a826a(_0x532984[_0x5111('0x17')][_0x5111('0x19')]);}else{logger[_0x5111('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x5e12a7,_0x5111('0x13'));_0x5a826a(_0x532984[_0x5111('0x1a')]['message']);}})[_0x5111('0x1b')](function(_0x10110b){logger[_0x5111('0x17')](_0x5111('0x12'),_0x5e12a7,_0x10110b);_0x162624(_0x10110b);});});}
\ No newline at end of file
+var _0x79bf=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x79bf,0x1df));var _0xf79b=function(_0x2b1bb9,_0x3f85cc){_0x2b1bb9=_0x2b1bb9-0x0;var _0x59f401=_0x79bf[_0x2b1bb9];return _0x59f401;};'use strict';var _=require('lodash');var util=require(_0xf79b('0x0'));var moment=require('moment');var BPromise=require(_0xf79b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf79b('0x2'));var db=require(_0xf79b('0x3'))['db'];var utils=require(_0xf79b('0x4'));var logger=require(_0xf79b('0x5'))(_0xf79b('0x6'));var config=require(_0xf79b('0x7'));var jayson=require(_0xf79b('0x8'));var client=jayson['client'][_0xf79b('0x9')]({'port':0x232a});config[_0xf79b('0xa')]=_[_0xf79b('0xb')](config['redis'],{'host':_0xf79b('0xc'),'port':0x18eb});var socket=require(_0xf79b('0xd'))(new Redis(config[_0xf79b('0xa')]));require(_0xf79b('0xe'))['register'](socket);function respondWithRpcPromise(_0x5c3518,_0x183424,_0x1eeddd){return new BPromise(function(_0x285865,_0x1c65cc){return client[_0xf79b('0xf')](_0x5c3518,_0x1eeddd)[_0xf79b('0x10')](function(_0x39945f){logger['info'](_0xf79b('0x11'),_0x183424,_0xf79b('0x12'));logger[_0xf79b('0x13')](_0xf79b('0x14'),_0x183424,_0xf79b('0x12'),JSON[_0xf79b('0x15')](_0x39945f));if(_0x39945f[_0xf79b('0x16')]){if(_0x39945f[_0xf79b('0x16')][_0xf79b('0x17')]===0x1f4){logger[_0xf79b('0x16')](_0xf79b('0x11'),_0x183424,_0x39945f[_0xf79b('0x16')]['message']);return _0x1c65cc(_0x39945f['error'][_0xf79b('0x18')]);}logger['error'](_0xf79b('0x11'),_0x183424,_0x39945f['error'][_0xf79b('0x18')]);return _0x285865(_0x39945f['error']['message']);}else{logger[_0xf79b('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x183424,_0xf79b('0x12'));_0x285865(_0x39945f[_0xf79b('0x1a')][_0xf79b('0x18')]);}})['catch'](function(_0xf13a4){logger['error'](_0xf79b('0x11'),_0x183424,_0xf13a4);_0x1c65cc(_0xf13a4);});});}
\ No newline at end of file
index 6b746a0..80c0c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde2=['length','voicePrefix:','save','remove','update','emit','removeListener','register'];(function(_0x485d1,_0x3b09d4){var _0x749fff=function(_0x3fce9e){while(--_0x3fce9e){_0x485d1['push'](_0x485d1['shift']());}};_0x749fff(++_0x3b09d4);}(_0xbde2,0x7a));var _0x2bde=function(_0x3b5d5e,_0x4c2724){_0x3b5d5e=_0x3b5d5e-0x0;var _0xa2b00b=_0xbde2[_0x3b5d5e];return _0xa2b00b;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x2bde('0x0'),_0x2bde('0x1'),_0x2bde('0x2')];function createListener(_0x4efae2,_0x3b1018){return function(_0x1055e2){_0x3b1018[_0x2bde('0x3')](_0x4efae2,_0x1055e2);};}function removeListener(_0x530c9f,_0x3622bb){return function(){VoicePrefixEvents[_0x2bde('0x4')](_0x530c9f,_0x3622bb);};}exports[_0x2bde('0x5')]=function(_0x3b3039){for(var _0x50c1a1=0x0,_0x30d926=events[_0x2bde('0x6')];_0x50c1a1<_0x30d926;_0x50c1a1++){var _0x39522f=events[_0x50c1a1];var _0x3ddbc4=createListener(_0x2bde('0x7')+_0x39522f,_0x3b3039);VoicePrefixEvents['on'](_0x39522f,_0x3ddbc4);}};
\ No newline at end of file
+var _0x45c8=['remove','update','removeListener','register','voicePrefix:','./voicePrefix.events'];(function(_0x1e2b1f,_0x225881){var _0x4bb65b=function(_0x34d7aa){while(--_0x34d7aa){_0x1e2b1f['push'](_0x1e2b1f['shift']());}};_0x4bb65b(++_0x225881);}(_0x45c8,0xef));var _0x845c=function(_0x19f18a,_0x4a3e20){_0x19f18a=_0x19f18a-0x0;var _0x2caf5a=_0x45c8[_0x19f18a];return _0x2caf5a;};'use strict';var VoicePrefixEvents=require(_0x845c('0x0'));var events=['save',_0x845c('0x1'),_0x845c('0x2')];function createListener(_0x211a9d,_0x343dc5){return function(_0x49dc68){_0x343dc5['emit'](_0x211a9d,_0x49dc68);};}function removeListener(_0x4d43f8,_0x5e853c){return function(){VoicePrefixEvents[_0x845c('0x3')](_0x4d43f8,_0x5e853c);};}exports[_0x845c('0x4')]=function(_0x1ff5c6){for(var _0x4e0242=0x0,_0x335f38=events['length'];_0x4e0242<_0x335f38;_0x4e0242++){var _0x42b569=events[_0x4e0242];var _0x4648e1=createListener(_0x845c('0x5')+_0x42b569,_0x1ff5c6);VoicePrefixEvents['on'](_0x42b569,_0x4648e1);}};
\ No newline at end of file
index b83e5f9..56f619e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x1591d4,_0x4ea3bd){var _0x4c46bb=function(_0x13b7e7){while(--_0x13b7e7){_0x1591d4['push'](_0x1591d4['shift']());}};_0x4c46bb(++_0x4ea3bd);}(_0xb10b,0x12a));var _0xbb10=function(_0x154584,_0x421e12){_0x154584=_0x154584-0x0;var _0x969074=_0xb10b[_0x154584];return _0x969074;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x21feab,_0xa69cb6){var _0x35be66=function(_0x4f7521){while(--_0x4f7521){_0x21feab['push'](_0x21feab['shift']());}};_0x35be66(++_0xa69cb6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 178cc1d..7fc73b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ec5=['dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','periodic_announce','join','joinempty','leavewhenempty','split','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','outbound','ringall','leastrecent','fewestcalls','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue'];(function(_0x33070f,_0x3ff0e5){var _0x5bc8e6=function(_0x39fef3){while(--_0x39fef3){_0x33070f['push'](_0x33070f['shift']());}};_0x5bc8e6(++_0x3ff0e5);}(_0x6ec5,0x1e3));var _0x56ec=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6ec5[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x56ec('0x0'));module['exports']={'name':{'type':Sequelize[_0x56ec('0x1')],'allowNull':![],'unique':_0x56ec('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x4'),_0x56ec('0x5')),'allowNull':![],'defaultValue':_0x56ec('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x56ec('0x6'),_0x56ec('0x7'),_0x56ec('0x8'),'random',_0x56ec('0x9'),'linear',_0x56ec('0xa'),_0x56ec('0xb')),'allowNull':![],'defaultValue':_0x56ec('0x6'),'set':function(_0x193e04){this[_0x56ec('0xc')](_0x56ec('0xd'),_0x193e04?_0x193e04:_0x56ec('0x9'));},'get':function(){var _0x42d64=this[_0x56ec('0xe')]('type');var _0x2cb427=this[_0x56ec('0xe')](_0x56ec('0xf'));var _0x5011a2=this[_0x56ec('0xe')](_0x56ec('0xd'));if(_0x42d64==='inbound'){return _0x5011a2;}if(_0x2cb427===_0x56ec('0x10')&&_0x5011a2==='rrmemory'||_0x2cb427===_0x56ec('0x10')&&_0x5011a2===_0x56ec('0x11')){return _0x5011a2;}if(_0x2cb427===_0x56ec('0x12')||_0x2cb427===_0x56ec('0x13')||_0x2cb427===_0x56ec('0x14')){return _0x5011a2;}return null;}},'servicelevel':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x56ec('0x1')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x56ec('0x3')]('yes','no'),'defaultValue':_0x56ec('0x16')},'autopause':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no',_0x56ec('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x56ec('0x15')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x56ec('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':_0x56ec('0x16')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no',_0x56ec('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x56ec('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x56ec('0x1')]},'queue_youarenext':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x56ec('0x1')]},'queue_quantity1':{'type':Sequelize[_0x56ec('0x1')]},'queue_quantity2':{'type':Sequelize[_0x56ec('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x56ec('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x584e36){this[_0x56ec('0xc')](_0x56ec('0x19'),_0x584e36?_0x584e36[_0x56ec('0x1a')](','):[]);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x19'))?this[_0x56ec('0xe')](_0x56ec('0x19'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x16'),'set':function(_0x1ad39f){this[_0x56ec('0xc')]('joinempty',_0x1ad39f?_0x1ad39f[_0x56ec('0x1a')](','):undefined);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x1b'))?this[_0x56ec('0xe')](_0x56ec('0x1b'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':'no','set':function(_0x4a339a){this[_0x56ec('0xc')](_0x56ec('0x1c'),_0x4a339a?_0x4a339a[_0x56ec('0x1a')](','):undefined);},'get':function(){return this[_0x56ec('0xe')](_0x56ec('0x1c'))?this[_0x56ec('0xe')]('leavewhenempty')[_0x56ec('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x56ec('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x56ec('0x1')]},'description':{'type':Sequelize[_0x56ec('0x1')]},'acw':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'set':function(_0x145323){this[_0x56ec('0xc')](_0x56ec('0x1f'),_0x145323);if(_0x145323){if(this[_0x56ec('0xe')](_0x56ec('0x20'))<0x2){this[_0x56ec('0xc')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x56ec('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'comment':_0x56ec('0x21')},'dialMethod':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x22'),_0x56ec('0x12'),'power','predictive','booked'),'defaultValue':_0x56ec('0x12'),'comment':_0x56ec('0x23')},'dialLimitChannel':{'type':Sequelize[_0x56ec('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x56ec('0x24')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x56ec('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x56ec('0x26')},'dialPowerLevel':{'type':Sequelize[_0x56ec('0x27')](0x2)[_0x56ec('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x56ec('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x29'),_0x56ec('0x2a')),'defaultValue':_0x56ec('0x2a'),'comment':_0x56ec('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x56ec('0x27')](0x2)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x56ec('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x56ec('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x2e'),'comment':_0x56ec('0x2f')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x30')},'dialQueueProject':{'type':Sequelize[_0x56ec('0x1')],'comment':_0x56ec('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'comment':_0x56ec('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x56ec('0x36')},'dialTimezone':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x56ec('0x1')],'defaultValue':_0x56ec('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x56ec('0x38'),_0x56ec('0x39')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':0x0,'comment':_0x56ec('0x3a')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x56ec('0x3b')},'dialAMDGreeting':{'type':Sequelize[_0x56ec('0x15')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x56ec('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x56ec('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x56ec('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x56ec('0x15')](0x9)[_0x56ec('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x56ec('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x56ec('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x56ec('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x56ec('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x56ec('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x56ec('0x42')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x56ec('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x56ec('0x3')](_0x56ec('0x44'),'ASC'),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x56ec('0x1')],'comment':_0x56ec('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x56ec('0x45')},'dialCutDigit':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x56ec('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x56ec('0x15')](0x3)[_0x56ec('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x56ec('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x56ec('0x15')](0x5)[_0x56ec('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x56ec('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x56ec('0x15')],'allowNull':!![],'comment':_0x56ec('0x4f')},'mandatoryDisposition':{'type':Sequelize[_0x56ec('0x1e')],'defaultValue':![],'comment':_0x56ec('0x50'),'set':function(_0x47c689){if(!_0x47c689)this[_0x56ec('0xc')](_0x56ec('0x51'),null);this['setDataValue'](_0x56ec('0x52'),_0x47c689);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x56ec('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf083=['#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','default','STRING','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','join','periodic_announce','joinempty','split','leavewhenempty','BOOLEAN','acw','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x3f1732,_0x300971){var _0x2dd600=function(_0x4e51af){while(--_0x4e51af){_0x3f1732['push'](_0x3f1732['shift']());}};_0x2dd600(++_0x300971);}(_0xf083,0x150));var _0x3f08=function(_0x1bf96f,_0x52520c){_0x1bf96f=_0x1bf96f-0x0;var _0x1ee045=_0xf083[_0x1bf96f];return _0x1ee045;};'use strict';var Sequelize=require(_0x3f08('0x0'));module[_0x3f08('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3f08('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x4'),'outbound'),'allowNull':![],'defaultValue':_0x3f08('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x3f08('0x5')},'announce':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':''},'strategy':{'type':Sequelize[_0x3f08('0x3')]('rr','ringall',_0x3f08('0x7'),_0x3f08('0x8'),_0x3f08('0x9'),_0x3f08('0xa'),_0x3f08('0xb'),_0x3f08('0xc'),_0x3f08('0xd')),'allowNull':![],'defaultValue':_0x3f08('0xe'),'set':function(_0x1a7590){this[_0x3f08('0xf')](_0x3f08('0x10'),_0x1a7590?_0x1a7590:_0x3f08('0xa'));},'get':function(){var _0x22cd54=this[_0x3f08('0x11')]('type');var _0x28ffe1=this['getDataValue'](_0x3f08('0x12'));var _0x524f7a=this[_0x3f08('0x11')]('strategy');if(_0x22cd54===_0x3f08('0x4')){return _0x524f7a;}if(_0x28ffe1===_0x3f08('0x13')&&_0x524f7a===_0x3f08('0xa')||_0x28ffe1===_0x3f08('0x13')&&_0x524f7a===_0x3f08('0x14')){return _0x524f7a;}if(_0x28ffe1===_0x3f08('0x15')||_0x28ffe1===_0x3f08('0x16')||_0x28ffe1===_0x3f08('0x17')){return _0x524f7a;}return null;}},'servicelevel':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x3f08('0x18')](0xb)},'timeout':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x3f08('0x18')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':_0x3f08('0x19')},'autopause':{'type':Sequelize['ENUM'](_0x3f08('0x19'),'no',_0x3f08('0x1a')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x3f08('0x3')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x3f08('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x3f08('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x3f08('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x3f08('0x19'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x3f08('0x3')]('yes','no'),'defaultValue':_0x3f08('0x19')},'announce_holdtime':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no',_0x3f08('0x1b')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no')},'announce_position_limit':{'type':Sequelize[_0x3f08('0x18')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x3f08('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x3f08('0x6')]},'queue_youarenext':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x3f08('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x3f08('0x6')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x3f08('0x6')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x3f08('0x1c')],'set':function(_0xd323d0){this[_0x3f08('0xf')]('periodic_announce',_0xd323d0?_0xd323d0[_0x3f08('0x1d')](','):[]);},'get':function(){return this[_0x3f08('0x11')](_0x3f08('0x1e'))?this[_0x3f08('0x11')](_0x3f08('0x1e'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':_0x3f08('0x19'),'set':function(_0x545dac){this[_0x3f08('0xf')](_0x3f08('0x1f'),_0x545dac?_0x545dac['join'](','):undefined);},'get':function(){return this[_0x3f08('0x11')](_0x3f08('0x1f'))?this[_0x3f08('0x11')](_0x3f08('0x1f'))[_0x3f08('0x20')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':'no','set':function(_0x526e49){this['setDataValue'](_0x3f08('0x21'),_0x526e49?_0x526e49[_0x3f08('0x1d')](','):undefined);},'get':function(){return this[_0x3f08('0x11')]('leavewhenempty')?this[_0x3f08('0x11')](_0x3f08('0x21'))[_0x3f08('0x20')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x3f08('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x19'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x3f08('0x6')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':0x0,'set':function(_0x4eb6d1){this[_0x3f08('0xf')](_0x3f08('0x23'),_0x4eb6d1);if(_0x4eb6d1){if(this['getDataValue'](_0x3f08('0x24'))<0x2){this['setDataValue'](_0x3f08('0x24'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x3f08('0x18')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x25'),_0x3f08('0x15'),_0x3f08('0x17'),'predictive',_0x3f08('0x13')),'defaultValue':_0x3f08('0x15'),'comment':_0x3f08('0x26')},'dialLimitChannel':{'type':Sequelize[_0x3f08('0x18')](0x4)[_0x3f08('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x3f08('0x28')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x3f08('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x3f08('0x29')},'dialPowerLevel':{'type':Sequelize[_0x3f08('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x3f08('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x2c'),_0x3f08('0x2d')),'defaultValue':_0x3f08('0x2d'),'comment':_0x3f08('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x3f08('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':'Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)'},'dialOriginateCallerIdName':{'type':Sequelize[_0x3f08('0x6')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x3f08('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x2f')},'dialQueueOptions':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':_0x3f08('0x30'),'comment':_0x3f08('0x31')},'dialQueueTimeout':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x3f08('0x6')],'comment':_0x3f08('0x32')},'dialCongestionMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'comment':_0x3f08('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x3f08('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x3f08('0x38')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':_0x3f08('0x39')},'dialPrefix':{'type':Sequelize[_0x3f08('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x3a'),_0x3f08('0x3b'),_0x3f08('0x3c')),'defaultValue':_0x3f08('0x3a')},'dialAMDActive':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':0x0,'comment':_0x3f08('0x3d')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x3f08('0x3e')},'dialAMDGreeting':{'type':Sequelize[_0x3f08('0x18')](0x9)[_0x3f08('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x3f08('0x18')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x3f08('0x3f')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x3f08('0x18')](0x9)[_0x3f08('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x3f08('0x40')},'dialAMDMinWordLength':{'type':Sequelize[_0x3f08('0x18')](0x9)[_0x3f08('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x3f08('0x41')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x3f08('0x18')](0x9)[_0x3f08('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x3f08('0x42')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x3f08('0x18')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x3f08('0x18')](0x5)[_0x3f08('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x3f08('0x43')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x3f08('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x3f08('0x18')](0x5)[_0x3f08('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x3f08('0x44')},'dialRecallInQueue':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':0x0,'comment':_0x3f08('0x45')},'dialOrderByScheduledAt':{'type':Sequelize[_0x3f08('0x3')](_0x3f08('0x46'),'ASC'),'defaultValue':_0x3f08('0x46')},'dialQueueProject2':{'type':Sequelize[_0x3f08('0x6')],'comment':_0x3f08('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x3f08('0x47')},'dialCutDigit':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x48')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)[_0x3f08('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x49')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x4a')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x4b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x4c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x4d')},'dialMachineMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)[_0x3f08('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x4e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x3f08('0x4f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x3f08('0x18')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x3f08('0x50')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3f08('0x22')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2ea6f6){if(!_0x2ea6f6)this[_0x3f08('0xf')](_0x3f08('0x51'),null);this[_0x3f08('0xf')](_0x3f08('0x52'),_0x2ea6f6);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x3f08('0x18')](0x3)[_0x3f08('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index b95e1f8..47b51b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b9=['UserProfileResource','error','stack','send','index','VoiceQueue','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','includeAll','include','findAll','rows','catch','show','params','merge','create','body','user','role','get','VoiceQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','inbound','destroy','getHoppers','CmHopper','pick','VoiceQueueId','options','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','interface','forEach','sequelize','transaction','upsert','each','UserVoiceQueue','findOrCreate','penalty','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','Agents','select','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','union','compact','isEmpty','userVoiceQueue:remove','addAgents','spread','online','voicePause','all','removeAgents','getAgents','getMembers','getLists','addLists','omit','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','NOW()','scheduledAt','field','ContactId','CmListId','toString','ListId','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','insert','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./voiceQueue.socket','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','update','then','QueueCampaigns','outbound','filter','map','value','includes','type','find','name'];(function(_0x79cd47,_0x16102d){var _0x3b9484=function(_0x23db95){while(--_0x23db95){_0x79cd47['push'](_0x79cd47['shift']());}};_0x3b9484(++_0x16102d);}(_0x11b9,0x87));var _0x911b=function(_0x1fa871,_0x2b0e76){_0x1fa871=_0x1fa871-0x0;var _0x4f8de9=_0x11b9[_0x1fa871];return _0x4f8de9;};'use strict';var emlformat=require(_0x911b('0x0'));var rimraf=require(_0x911b('0x1'));var zipdir=require(_0x911b('0x2'));var jsonpatch=require(_0x911b('0x3'));var rp=require(_0x911b('0x4'));var moment=require('moment');var BPromise=require(_0x911b('0x5'));var Mustache=require(_0x911b('0x6'));var util=require(_0x911b('0x7'));var path=require('path');var sox=require(_0x911b('0x8'));var csv=require(_0x911b('0x9'));var ejs=require(_0x911b('0xa'));var fs=require('fs');var fs_extra=require(_0x911b('0xb'));var _=require(_0x911b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x911b('0xd'));var deskjs=require(_0x911b('0xe'));var toCsv=require(_0x911b('0x9'));var querystring=require(_0x911b('0xf'));var Papa=require(_0x911b('0x10'));var Redis=require(_0x911b('0x11'));var authService=require(_0x911b('0x12'));var qs=require(_0x911b('0x13'));var as=require(_0x911b('0x14'));var hardwareService=require(_0x911b('0x15'));var logger=require('../../config/logger')(_0x911b('0x16'));var utils=require(_0x911b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x911b('0x18'));var db=require('../../mysqldb')['db'];config[_0x911b('0x19')]=_[_0x911b('0x1a')](config['redis'],{'host':_0x911b('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x911b('0x19')]));require(_0x911b('0x1c'))['register'](socket);function respondWithStatusCode(_0x2eb3cd,_0x4e7d1b){_0x4e7d1b=_0x4e7d1b||0xcc;return function(_0x13f609){if(_0x13f609){return _0x2eb3cd[_0x911b('0x1d')](_0x4e7d1b);}return _0x2eb3cd[_0x911b('0x1e')](_0x4e7d1b)[_0x911b('0x1f')]();};}function respondWithResult(_0x16992b,_0x5d358d){_0x5d358d=_0x5d358d||0xc8;return function(_0x594b0c){if(_0x594b0c){return _0x16992b['status'](_0x5d358d)[_0x911b('0x20')](_0x594b0c);}};}function respondWithFilteredResult(_0xe1433d,_0x700722){return function(_0x2d425c){if(_0x2d425c){var _0x52da8d=typeof _0x700722['offset']==='undefined'&&typeof _0x700722['limit']===_0x911b('0x21');var _0x789c01=_0x2d425c[_0x911b('0x22')];var _0x1a2318=_0x52da8d?0x0:_0x700722['offset'];var _0x44251a=_0x52da8d?_0x2d425c[_0x911b('0x22')]:_0x700722[_0x911b('0x23')]+_0x700722['limit'];var _0x6ef848;if(_0x44251a>=_0x789c01){_0x44251a=_0x789c01;_0x6ef848=0xc8;}else{_0x6ef848=0xce;}_0xe1433d[_0x911b('0x1e')](_0x6ef848);return _0xe1433d[_0x911b('0x24')](_0x911b('0x25'),_0x1a2318+'-'+_0x44251a+'/'+_0x789c01)[_0x911b('0x20')](_0x2d425c);}return null;};}function patchUpdates(_0x58e436){return function(_0x33b1aa){try{jsonpatch['apply'](_0x33b1aa,_0x58e436,!![]);}catch(_0x399b8b){return BPromise[_0x911b('0x26')](_0x399b8b);}return _0x33b1aa['save']();};}function saveUpdates(_0xedcc13,_0x1c28a7){return function(_0x334535){if(_0x334535){return _0x334535[_0x911b('0x27')](_0xedcc13)[_0x911b('0x28')](function(_0x40cb09){return _0x40cb09;});}return null;};}function removeEntity(_0x4e1e80,_0x3dbeed){return function(_0x539dc6){if(_0x539dc6){return _0x539dc6['destroy']()[_0x911b('0x28')](function(){var _0x2c326e=_0x539dc6['get']({'plain':!![]});var _0x597a0d=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0x911b('0x29'),'value':_0x911b('0x2a'),'ignore':![]}];var _0x49f795=_(_0x597a0d)[_0x911b('0x2b')]('ignore')[_0x911b('0x2c')]('value')[_0x911b('0x2d')]();if(_[_0x911b('0x2e')](_0x49f795,_0x2c326e[_0x911b('0x2f')])){return;}var _0x3dbbc5=_[_0x911b('0x30')](_0x597a0d,['value',_0x2c326e['type']])[_0x911b('0x31')];return db[_0x911b('0x32')]['destroy']({'where':{'type':_0x3dbbc5,'resourceId':_0x2c326e['id']}})[_0x911b('0x28')](function(){return _0x539dc6;});})[_0x911b('0x28')](function(){_0x4e1e80[_0x911b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a7b4,_0x453dce){return function(_0x1223fe){if(!_0x1223fe){_0x51a7b4[_0x911b('0x1d')](0x194);}return _0x1223fe;};}function handleError(_0x2b39a0,_0x7dbed4){_0x7dbed4=_0x7dbed4||0x1f4;return function(_0x147aff){logger[_0x911b('0x33')](_0x147aff[_0x911b('0x34')]);if(_0x147aff[_0x911b('0x31')]){delete _0x147aff[_0x911b('0x31')];}_0x2b39a0[_0x911b('0x1e')](_0x7dbed4)[_0x911b('0x35')](_0x147aff);};}exports[_0x911b('0x36')]=function(_0x1118a9,_0x10ff95){var _0x4cace2={},_0x57253e={},_0x56cbc3={'count':0x0,'rows':[]};var _0x3a7614=_['map'](db[_0x911b('0x37')][_0x911b('0x38')],function(_0x1a3b3f){return{'name':_0x1a3b3f['fieldName'],'type':_0x1a3b3f[_0x911b('0x2f')][_0x911b('0x39')]};});_0x57253e[_0x911b('0x3a')]=_[_0x911b('0x2c')](_0x3a7614,'name');_0x57253e[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x1118a9[_0x911b('0x3b')]);_0x57253e[_0x911b('0x3d')]=_['intersection'](_0x57253e[_0x911b('0x3a')],_0x57253e[_0x911b('0x3b')]);_0x4cace2[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x57253e[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x1118a9[_0x911b('0x3b')]['fields']));_0x4cace2['attributes']=_0x4cace2[_0x911b('0x3e')][_0x911b('0x41')]?_0x4cace2[_0x911b('0x3e')]:_0x57253e[_0x911b('0x3a')];if(!_0x1118a9[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x4cace2['limit']=qs[_0x911b('0x44')](_0x1118a9[_0x911b('0x3b')][_0x911b('0x44')]);_0x4cace2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x1118a9['query'][_0x911b('0x23')]);}_0x4cace2[_0x911b('0x45')]=qs[_0x911b('0x46')](_0x1118a9['query']['sort']);_0x4cace2[_0x911b('0x47')]=qs[_0x911b('0x3d')](_['pick'](_0x1118a9[_0x911b('0x3b')],_0x57253e[_0x911b('0x3d')]),_0x3a7614);if(_0x1118a9[_0x911b('0x3b')][_0x911b('0x2b')]){_0x4cace2['where']=_['merge'](_0x4cace2['where'],{'$or':_[_0x911b('0x2c')](_0x3a7614,function(_0x2ba3ad){if(_0x2ba3ad[_0x911b('0x2f')]!=='VIRTUAL'){var _0x484214={};_0x484214[_0x2ba3ad[_0x911b('0x31')]]={'$like':'%'+_0x1118a9[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x484214;}})});}_0x4cace2=_['merge']({},_0x4cace2,_0x1118a9['options']);var _0x4a9025={'where':_0x4cace2[_0x911b('0x47')]};return db[_0x911b('0x37')]['count'](_0x4a9025)[_0x911b('0x28')](function(_0x1dd2ee){_0x56cbc3[_0x911b('0x22')]=_0x1dd2ee;if(_0x1118a9[_0x911b('0x3b')][_0x911b('0x48')]){_0x4cace2[_0x911b('0x49')]=[{'all':!![]}];}return db['VoiceQueue'][_0x911b('0x4a')](_0x4cace2);})[_0x911b('0x28')](function(_0x28cf59){_0x56cbc3[_0x911b('0x4b')]=_0x28cf59;return _0x56cbc3;})[_0x911b('0x28')](respondWithFilteredResult(_0x10ff95,_0x4cace2))[_0x911b('0x4c')](handleError(_0x10ff95,null));};exports[_0x911b('0x4d')]=function(_0x46c40c,_0x55ee94){var _0x339b0c={'raw':![],'where':{'id':_0x46c40c[_0x911b('0x4e')]['id']}},_0x19540c={};_0x19540c[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x37')]['rawAttributes']);_0x19540c[_0x911b('0x3b')]=_['keys'](_0x46c40c['query']);_0x19540c[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x19540c['model'],_0x19540c[_0x911b('0x3b')]);_0x339b0c[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x19540c['model'],qs[_0x911b('0x40')](_0x46c40c[_0x911b('0x3b')][_0x911b('0x40')]));_0x339b0c['attributes']=_0x339b0c[_0x911b('0x3e')]['length']?_0x339b0c[_0x911b('0x3e')]:_0x19540c[_0x911b('0x3a')];if(_0x46c40c[_0x911b('0x3b')][_0x911b('0x48')]){_0x339b0c[_0x911b('0x49')]=[{'all':!![]}];}_0x339b0c=_[_0x911b('0x4f')]({},_0x339b0c,_0x46c40c['options']);return db[_0x911b('0x37')][_0x911b('0x30')](_0x339b0c)[_0x911b('0x28')](handleEntityNotFound(_0x55ee94,null))[_0x911b('0x28')](respondWithResult(_0x55ee94,null))[_0x911b('0x4c')](handleError(_0x55ee94,null));};exports['create']=function(_0x214a35,_0x4dbccd){return db['VoiceQueue'][_0x911b('0x50')](_0x214a35[_0x911b('0x51')],{})[_0x911b('0x28')](function(_0x71a8ce){var _0x53fac4=_0x214a35[_0x911b('0x52')]['get']({'plain':!![]});if(!_0x53fac4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x53fac4[_0x911b('0x53')]===_0x911b('0x52')){var _0x41b089=_0x71a8ce[_0x911b('0x54')]({'plain':!![]});var _0x378bb6=[{'name':_0x911b('0x55'),'value':'inbound'},{'name':_0x911b('0x29'),'value':_0x911b('0x2a')}];var _0x40cd31=_[_0x911b('0x30')](_0x378bb6,[_0x911b('0x2d'),_0x41b089[_0x911b('0x2f')]])[_0x911b('0x31')];return db[_0x911b('0x56')]['find']({'where':{'name':_0x40cd31,'userProfileId':_0x53fac4[_0x911b('0x57')]},'raw':!![]})['then'](function(_0x7ab307){if(_0x7ab307&&_0x7ab307['autoAssociation']===0x0){return db[_0x911b('0x32')][_0x911b('0x50')]({'name':_0x41b089[_0x911b('0x31')],'resourceId':_0x41b089['id'],'type':_0x7ab307['name'],'sectionId':_0x7ab307['id']},{})[_0x911b('0x28')](function(){return _0x71a8ce;});}else{return _0x71a8ce;}})[_0x911b('0x4c')](function(_0x5598ba){logger['error'](_0x911b('0x58'),_0x5598ba);throw _0x5598ba;});}return _0x71a8ce;})[_0x911b('0x28')](respondWithResult(_0x4dbccd,0xc9))[_0x911b('0x4c')](handleError(_0x4dbccd,null));};exports[_0x911b('0x59')]=function(_0x11b355,_0x3e8738){var _0x58f2c9={'where':{'id':_0x11b355[_0x911b('0x4e')]['id']}},_0x54c67c={};_0x54c67c['model']=_['keys'](db['VoiceQueue'][_0x911b('0x38')]);_0x58f2c9[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x54c67c[_0x911b('0x3a')],qs['fields'](_0x11b355[_0x911b('0x3b')][_0x911b('0x40')]));_0x58f2c9['attributes']=_0x58f2c9[_0x911b('0x3e')][_0x911b('0x41')]?_0x58f2c9[_0x911b('0x3e')]:_0x54c67c[_0x911b('0x3a')];if(_0x11b355[_0x911b('0x3b')]['includeAll']){_0x58f2c9[_0x911b('0x49')]=[{'all':!![]}];}_0x58f2c9=_[_0x911b('0x4f')]({},_0x58f2c9,_0x11b355['options']);return db[_0x911b('0x37')][_0x911b('0x30')](_0x58f2c9)[_0x911b('0x28')](handleEntityNotFound(_0x3e8738,null))['then'](function(_0x2be5b3){if(_0x2be5b3){var _0x1b4f7d=_0x2be5b3[_0x911b('0x54')]({'plain':!![]});_0x1b4f7d=qs['omit'](_0x1b4f7d,['id',_0x911b('0x5a'),_0x911b('0x5b')]);_0x11b355[_0x911b('0x51')]=_['omit'](_0x11b355['body'],['id','createdAt',_0x911b('0x5b')]);return db[_0x911b('0x37')][_0x911b('0x50')](_[_0x911b('0x4f')](_0x1b4f7d,_0x11b355[_0x911b('0x51')]),{'include':_0x11b355[_0x911b('0x3b')][_0x911b('0x48')]?[{'all':!![]}]:undefined})[_0x911b('0x28')](function(_0x460c29){var _0x311441=_0x11b355[_0x911b('0x52')]['get']({'plain':!![]});if(!_0x311441)throw new Error(_0x911b('0x5c'));if(_0x311441[_0x911b('0x53')]===_0x911b('0x52')){var _0xd4b498=_0x460c29[_0x911b('0x54')]({'plain':!![]});var _0x592e47=[{'name':_0x911b('0x55'),'value':_0x911b('0x5d')},{'name':_0x911b('0x29'),'value':_0x911b('0x2a')}];var _0x49cef9=_[_0x911b('0x30')](_0x592e47,[_0x911b('0x2d'),_0xd4b498[_0x911b('0x2f')]])[_0x911b('0x31')];return db[_0x911b('0x56')][_0x911b('0x30')]({'where':{'name':_0x49cef9,'userProfileId':_0x311441[_0x911b('0x57')]},'raw':!![]})[_0x911b('0x28')](function(_0x41f86a){if(_0x41f86a&&_0x41f86a['autoAssociation']===0x0){return db[_0x911b('0x32')][_0x911b('0x50')]({'name':_0xd4b498['name'],'resourceId':_0xd4b498['id'],'type':_0x41f86a[_0x911b('0x31')],'sectionId':_0x41f86a['id']},{})[_0x911b('0x28')](function(){return _0x460c29;});}else{return _0x460c29;}})['catch'](function(_0x4943c1){logger[_0x911b('0x33')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4943c1);throw _0x4943c1;});}return _0x460c29;});}})[_0x911b('0x28')](respondWithResult(_0x3e8738,0xc9))['catch'](handleError(_0x3e8738,null));};exports['update']=function(_0x20e8b8,_0x1bdc98){if(_0x20e8b8[_0x911b('0x51')]['id']){delete _0x20e8b8[_0x911b('0x51')]['id'];}return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x20e8b8['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1bdc98,null))['then'](saveUpdates(_0x20e8b8[_0x911b('0x51')],null))['then'](respondWithResult(_0x1bdc98,null))['catch'](handleError(_0x1bdc98,null));};exports[_0x911b('0x5e')]=function(_0x45d39f,_0x3f6957){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x45d39f[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3f6957,null))['then'](removeEntity(_0x3f6957,null))['catch'](handleError(_0x3f6957,null));};exports[_0x911b('0x5f')]=function(_0x5e1edd,_0x564d85,_0xe9d53){var _0x1cda0d={'raw':![],'where':{}};var _0x3013a5={};var _0x4dbfa2={'count':0x0,'rows':[]};return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x5e1edd[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x564d85,null))[_0x911b('0x28')](function(_0x5ba8a1){if(_0x5ba8a1){_0x3013a5[_0x911b('0x3a')]=_['keys'](db[_0x911b('0x60')][_0x911b('0x38')]);_0x3013a5[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x5e1edd[_0x911b('0x3b')]);_0x3013a5[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x3013a5['model'],_0x3013a5[_0x911b('0x3b')]);_0x1cda0d[_0x911b('0x3e')]=_['intersection'](_0x3013a5[_0x911b('0x3a')],qs['fields'](_0x5e1edd['query']['fields']));_0x1cda0d[_0x911b('0x3e')]=_0x1cda0d[_0x911b('0x3e')][_0x911b('0x41')]?_0x1cda0d[_0x911b('0x3e')]:_0x3013a5[_0x911b('0x3a')];if(!_0x5e1edd[_0x911b('0x3b')][_0x911b('0x42')]('nolimit')){_0x1cda0d[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x5e1edd[_0x911b('0x3b')]['limit']);_0x1cda0d[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x5e1edd['query']['offset']);}_0x1cda0d[_0x911b('0x45')]=qs['sort'](_0x5e1edd[_0x911b('0x3b')][_0x911b('0x46')]);_0x1cda0d['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x5e1edd[_0x911b('0x3b')],_0x3013a5['filters']));_0x1cda0d['where'][_0x911b('0x62')]=_0x5ba8a1['id'];if(_0x5e1edd[_0x911b('0x3b')][_0x911b('0x2b')]){_0x1cda0d['where']=_[_0x911b('0x4f')](_0x1cda0d[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x1cda0d[_0x911b('0x3e')],function(_0x2b2546){var _0x4f24b6={};_0x4f24b6[_0x2b2546]={'$like':'%'+_0x5e1edd[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x4f24b6;})});}_0x1cda0d=_[_0x911b('0x4f')]({},_0x1cda0d,_0x5e1edd[_0x911b('0x63')]);return db[_0x911b('0x60')]['count']({'where':_0x1cda0d[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x2046db){_0x4dbfa2[_0x911b('0x22')]=_0x2046db;if(_0x5e1edd[_0x911b('0x3b')][_0x911b('0x48')]){_0x1cda0d[_0x911b('0x49')]=[{'all':!![]}];}return db['CmHopper'][_0x911b('0x4a')](_0x1cda0d);})[_0x911b('0x28')](function(_0x2620c2){_0x4dbfa2[_0x911b('0x4b')]=_0x2620c2;return _0x4dbfa2;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x564d85,_0x1cda0d))[_0x911b('0x4c')](handleError(_0x564d85,null));};exports[_0x911b('0x64')]=function(_0x110329,_0x16c8fd,_0x125f38){var _0x60202c={'raw':!![],'where':{}};var _0x57fa54={};var _0x4ad842={'count':0x0,'rows':[]};return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x110329[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x16c8fd,null))[_0x911b('0x28')](function(_0x364549){if(_0x364549){_0x57fa54[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x66')][_0x911b('0x38')]);_0x57fa54[_0x911b('0x3b')]=_['keys'](_0x110329[_0x911b('0x3b')]);_0x57fa54['filters']=_[_0x911b('0x3f')](_0x57fa54['model'],_0x57fa54[_0x911b('0x3b')]);_0x60202c['attributes']=_[_0x911b('0x3f')](_0x57fa54[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x110329['query'][_0x911b('0x40')]));_0x60202c['attributes']=_0x60202c[_0x911b('0x3e')][_0x911b('0x41')]?_0x60202c[_0x911b('0x3e')]:_0x57fa54['model'];if(!_0x110329[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x60202c[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x110329[_0x911b('0x3b')]['limit']);_0x60202c[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x110329[_0x911b('0x3b')][_0x911b('0x23')]);}_0x60202c['order']=qs['sort'](_0x110329[_0x911b('0x3b')][_0x911b('0x46')]);_0x60202c['where']=qs[_0x911b('0x3d')](_['pick'](_0x110329[_0x911b('0x3b')],_0x57fa54['filters']));_0x60202c[_0x911b('0x47')][_0x911b('0x62')]=_0x364549['id'];if(_0x110329[_0x911b('0x3b')][_0x911b('0x2b')]){_0x60202c[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x60202c[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x60202c['attributes'],function(_0x317bd6){var _0x21a781={};_0x21a781[_0x317bd6]={'$like':'%'+_0x110329[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x21a781;})});}_0x60202c=_['merge']({},_0x60202c,_0x110329[_0x911b('0x63')]);return db[_0x911b('0x66')][_0x911b('0x22')]({'where':_0x60202c[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x14f073){_0x4ad842[_0x911b('0x22')]=_0x14f073;if(_0x110329[_0x911b('0x3b')]['includeAll']){_0x60202c['include']=[{'all':!![]}];}return db[_0x911b('0x66')][_0x911b('0x4a')](_0x60202c);})[_0x911b('0x28')](function(_0x3ff7d3){_0x4ad842['rows']=_0x3ff7d3;return _0x4ad842;});}})['then'](respondWithFilteredResult(_0x16c8fd,_0x60202c))[_0x911b('0x4c')](handleError(_0x16c8fd,null));};exports[_0x911b('0x67')]=function(_0x54c648,_0x3f180d,_0x2ecbaa){var _0x1faa02={'raw':!![],'where':{}};var _0x351adf={};var _0x41bd0a={'count':0x0,'rows':[]};return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x54c648[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3f180d,null))[_0x911b('0x28')](function(_0xf4955a){if(_0xf4955a){_0x351adf['model']=_[_0x911b('0x3c')](db[_0x911b('0x68')][_0x911b('0x38')]);_0x351adf[_0x911b('0x3b')]=_['keys'](_0x54c648[_0x911b('0x3b')]);_0x351adf[_0x911b('0x3d')]=_['intersection'](_0x351adf[_0x911b('0x3a')],_0x351adf[_0x911b('0x3b')]);_0x1faa02['attributes']=_[_0x911b('0x3f')](_0x351adf['model'],qs[_0x911b('0x40')](_0x54c648[_0x911b('0x3b')][_0x911b('0x40')]));_0x1faa02[_0x911b('0x3e')]=_0x1faa02['attributes']['length']?_0x1faa02['attributes']:_0x351adf[_0x911b('0x3a')];if(!_0x54c648[_0x911b('0x3b')]['hasOwnProperty'](_0x911b('0x43'))){_0x1faa02['limit']=qs[_0x911b('0x44')](_0x54c648[_0x911b('0x3b')][_0x911b('0x44')]);_0x1faa02[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x54c648[_0x911b('0x3b')][_0x911b('0x23')]);}_0x1faa02['order']=qs['sort'](_0x54c648[_0x911b('0x3b')][_0x911b('0x46')]);_0x1faa02['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x54c648[_0x911b('0x3b')],_0x351adf['filters']));_0x1faa02[_0x911b('0x47')][_0x911b('0x62')]=_0xf4955a['id'];if(_0x54c648[_0x911b('0x3b')][_0x911b('0x2b')]){_0x1faa02[_0x911b('0x47')]=_['merge'](_0x1faa02['where'],{'$or':_['map'](_0x1faa02[_0x911b('0x3e')],function(_0x7a9e21){var _0x5ce6d9={};_0x5ce6d9[_0x7a9e21]={'$like':'%'+_0x54c648[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x5ce6d9;})});}_0x1faa02=_[_0x911b('0x4f')]({},_0x1faa02,_0x54c648[_0x911b('0x63')]);return db[_0x911b('0x68')][_0x911b('0x22')]({'where':_0x1faa02['where']})['then'](function(_0x1cc9e8){_0x41bd0a['count']=_0x1cc9e8;if(_0x54c648[_0x911b('0x3b')][_0x911b('0x48')]){_0x1faa02[_0x911b('0x49')]=[{'all':!![]}];}return db[_0x911b('0x68')]['findAll'](_0x1faa02);})['then'](function(_0x517154){_0x41bd0a['rows']=_0x517154;return _0x41bd0a;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x3f180d,_0x1faa02))[_0x911b('0x4c')](handleError(_0x3f180d,null));};exports[_0x911b('0x69')]=function(_0x4df9c3,_0x55b556,_0x5f0ac2){var _0xe86410={'raw':!![],'where':{}};var _0x1500f5={};var _0x1afa1e={'count':0x0,'rows':[]};return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x4df9c3[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x55b556,null))[_0x911b('0x28')](function(_0x267e1e){if(_0x267e1e){_0x1500f5[_0x911b('0x3a')]=_['keys'](db[_0x911b('0x6a')]['rawAttributes']);_0x1500f5['query']=_[_0x911b('0x3c')](_0x4df9c3[_0x911b('0x3b')]);_0x1500f5[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x1500f5['model'],_0x1500f5['query']);_0xe86410['attributes']=_[_0x911b('0x3f')](_0x1500f5['model'],qs[_0x911b('0x40')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x40')]));_0xe86410[_0x911b('0x3e')]=_0xe86410[_0x911b('0x3e')][_0x911b('0x41')]?_0xe86410[_0x911b('0x3e')]:_0x1500f5[_0x911b('0x3a')];if(!_0x4df9c3[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0xe86410['limit']=qs[_0x911b('0x44')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x44')]);_0xe86410[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x23')]);}_0xe86410['order']=qs[_0x911b('0x46')](_0x4df9c3[_0x911b('0x3b')][_0x911b('0x46')]);_0xe86410['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x4df9c3['query'],_0x1500f5[_0x911b('0x3d')]));_0xe86410['where'][_0x911b('0x62')]=_0x267e1e['id'];if(_0x4df9c3['query'][_0x911b('0x2b')]){_0xe86410[_0x911b('0x47')]=_[_0x911b('0x4f')](_0xe86410[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0xe86410[_0x911b('0x3e')],function(_0x4d49d8){var _0x258afb={};_0x258afb[_0x4d49d8]={'$like':'%'+_0x4df9c3[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x258afb;})});}_0xe86410=_[_0x911b('0x4f')]({},_0xe86410,_0x4df9c3['options']);return db[_0x911b('0x6a')][_0x911b('0x22')]({'where':_0xe86410[_0x911b('0x47')]})[_0x911b('0x28')](function(_0x3a6754){_0x1afa1e[_0x911b('0x22')]=_0x3a6754;if(_0x4df9c3['query'][_0x911b('0x48')]){_0xe86410['include']=[{'all':!![]}];}return db[_0x911b('0x6a')][_0x911b('0x4a')](_0xe86410);})[_0x911b('0x28')](function(_0x37bff5){_0x1afa1e['rows']=_0x37bff5;return _0x1afa1e;});}})[_0x911b('0x28')](respondWithFilteredResult(_0x55b556,_0xe86410))[_0x911b('0x4c')](handleError(_0x55b556,null));};exports[_0x911b('0x6b')]=function(_0x189749,_0x495c1e,_0x3ef1b1){var _0x103153={};var _0x3285f9={};var _0x2157db;var _0x31a77e;return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x189749[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x495c1e,null))[_0x911b('0x28')](function(_0xa92713){if(_0xa92713){_0x2157db=_0xa92713;_0x3285f9[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x6c')][_0x911b('0x38')]);_0x3285f9[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x189749[_0x911b('0x3b')]);_0x3285f9['filters']=_['intersection'](_0x3285f9['model'],_0x3285f9[_0x911b('0x3b')]);_0x103153[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x3285f9['model'],qs['fields'](_0x189749['query'][_0x911b('0x40')]));_0x103153[_0x911b('0x3e')]=_0x103153[_0x911b('0x3e')][_0x911b('0x41')]?_0x103153[_0x911b('0x3e')]:_0x3285f9['model'];_0x103153['order']=qs[_0x911b('0x46')](_0x189749[_0x911b('0x3b')]['sort']);_0x103153[_0x911b('0x47')]=qs['filters'](_[_0x911b('0x61')](_0x189749[_0x911b('0x3b')],_0x3285f9['filters']));if(_0x189749[_0x911b('0x3b')]['filter']){_0x103153['where']=_[_0x911b('0x4f')](_0x103153[_0x911b('0x47')],{'$or':_[_0x911b('0x2c')](_0x103153[_0x911b('0x3e')],function(_0x46e850){var _0x460bc2={};_0x460bc2[_0x46e850]={'$like':'%'+_0x189749[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x460bc2;})});}_0x103153=_[_0x911b('0x4f')]({},_0x103153,_0x189749[_0x911b('0x63')]);return _0x2157db['getTeams'](_0x103153);}})[_0x911b('0x28')](function(_0x3429b9){if(_0x3429b9){_0x31a77e=_0x3429b9[_0x911b('0x41')];if(!_0x189749[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x103153['limit']=qs[_0x911b('0x44')](_0x189749['query'][_0x911b('0x44')]);_0x103153[_0x911b('0x23')]=qs['offset'](_0x189749[_0x911b('0x3b')]['offset']);}return _0x2157db['getTeams'](_0x103153);}})['then'](function(_0x47e72a){if(_0x47e72a){return _0x47e72a?{'count':_0x31a77e,'rows':_0x47e72a}:null;}})[_0x911b('0x28')](respondWithResult(_0x495c1e,null))[_0x911b('0x4c')](handleError(_0x495c1e,null));};exports[_0x911b('0x6d')]=function(_0xe4f568,_0x5173bd,_0x2f2421){var _0x16da5c=_0xe4f568[_0x911b('0x51')][_0x911b('0x6e')];var _0x2acd5c=_['map'](_0x16da5c,'id');return db[_0x911b('0x6c')][_0x911b('0x4a')]({'where':{'id':_0x2acd5c},'attributes':['id'],'include':[{'model':db[_0x911b('0x6f')],'as':'Agents','attributes':['id',_0x911b('0x31'),'online','voicePause',_0x911b('0x70')],'raw':!![]}]})[_0x911b('0x28')](function(_0x7db45d){if(_0x7db45d){var _0x8215c8=_['flatMap'](_0x7db45d,function(_0x2b240e){var _0x3cabbf=_0x2b240e['get']({'plain':!![]});_0x3cabbf['Agents'][_0x911b('0x71')](function(_0x56525e){_0x56525e['penalty']=_[_0x911b('0x30')](_0x16da5c,{'id':_0x3cabbf['id']})['penalty'];});return _0x3cabbf['Agents'];});return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0xe4f568[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(_0x46de67){return db[_0x911b('0x72')][_0x911b('0x73')](function(_0x1d7872){return _0x46de67[_0x911b('0x6d')](_0x2acd5c,{'transaction':_0x1d7872})['then'](function(){return BPromise['each'](_0x16da5c,function(_0x155dc7){return db['TeamVoiceQueue'][_0x911b('0x74')]({'TeamId':_0x155dc7['id'],'VoiceQueueId':_0xe4f568[_0x911b('0x4e')]['id'],'penalty':_0x155dc7['penalty']},{'transaction':_0x1d7872});});})['then'](function(){return BPromise[_0x911b('0x75')](_0x8215c8,function(_0x493bdd){return db[_0x911b('0x76')][_0x911b('0x77')]({'where':{'UserId':_0x493bdd['id'],'VoiceQueueId':_0xe4f568['params']['id']},'defaults':{'penalty':_0x493bdd[_0x911b('0x78')]},'transaction':_0x1d7872});});})[_0x911b('0x28')](function(){return BPromise[_0x911b('0x75')](_['filter'](_0x8215c8,{'online':!![]}),function(_0x43bce2){return db[_0x911b('0x79')]['upsert']({'membername':_0x43bce2[_0x911b('0x31')],'UserId':_0x43bce2['id'],'queue_name':_0x46de67[_0x911b('0x31')],'VoiceQueueId':_0x46de67['id'],'interface':_[_0x911b('0x7a')](_0x43bce2['interface'])?util[_0x911b('0x7b')](_0x911b('0x7c'),_0x43bce2[_0x911b('0x31')]):_0x43bce2['interface'],'paused':_0x43bce2['voicePause']||![],'penalty':_0x43bce2[_0x911b('0x78')]},{'transaction':_0x1d7872});});})[_0x911b('0x28')](function(){_0x8215c8['forEach'](function(_0xd158f7){socket[_0x911b('0x7d')](_0x911b('0x7e'),{'UserId':_0xd158f7['id'],'VoiceQueueId':_0x46de67['id']});});});});});}})[_0x911b('0x28')](respondWithStatusCode(_0x5173bd,null))[_0x911b('0x4c')](handleError(_0x5173bd,null));};exports[_0x911b('0x7f')]=function(_0x362de9,_0x59eb17,_0x163a8c){return db[_0x911b('0x6c')][_0x911b('0x4a')]({'where':{'id':_0x362de9['query'][_0x911b('0x80')]},'attributes':['id'],'include':[{'model':db[_0x911b('0x6f')],'as':_0x911b('0x81'),'attributes':['id'],'raw':!![]}]})[_0x911b('0x28')](handleEntityNotFound(_0x59eb17,null))[_0x911b('0x28')](function(_0x2ecf6a){var _0x4815fa=_[_0x911b('0x2c')](_0x2ecf6a,'id');var _0x2fa979=[];var _0x305d21=[];var _0x2fe1f3=squel[_0x911b('0x82')]();_0x2fe1f3['field']('tq.TeamId')[_0x911b('0x83')](_0x911b('0x84'),'tq')[_0x911b('0x85')](_0x911b('0x86'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x911b('0x47')](_0x911b('0x87'),_0x362de9[_0x911b('0x4e')]['id']);for(var _0x111759=0x0;_0x111759<_0x2ecf6a['length'];_0x111759+=0x1){let _0x237907=_0x2ecf6a[_0x111759];for(var _0x5a9204=0x0;_0x5a9204<_0x237907[_0x911b('0x81')]['length'];_0x5a9204+=0x1){let _0x3122b1=_0x237907[_0x911b('0x81')][_0x5a9204];var _0x34852a=_0x2fe1f3[_0x911b('0x59')]();_0x34852a[_0x911b('0x47')](_0x911b('0x88'),_0x3122b1['id']);_0x305d21[_0x911b('0x89')](db['sequelize'][_0x911b('0x3b')](_0x34852a['toString'](),{'type':db[_0x911b('0x72')][_0x911b('0x8a')][_0x911b('0x8b')]})[_0x911b('0x28')](function(_0x2a15a4){if(_0x2a15a4['length']===0x1){return _0x3122b1['id'];}else{var _0x4a8630=_[_0x911b('0x8c')](_[_0x911b('0x2c')](_0x2a15a4,'TeamId'),function(_0x379e07){return _[_0x911b('0x2e')](_0x4815fa,_0x379e07);});if(_0x4a8630){return _0x3122b1['id'];}}}));}}return BPromise['all'](_0x305d21)[_0x911b('0x28')](function(_0x150988){_0x2fa979=_(_0x2fa979)[_0x911b('0x8d')](_0x150988)[_0x911b('0x8e')]()[_0x911b('0x2d')]();return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x362de9[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(_0x46c620){return db[_0x911b('0x72')]['transaction'](function(_0x1f8dad){return _0x46c620['removeTeams'](_0x362de9[_0x911b('0x3b')][_0x911b('0x80')],{'transaction':_0x1f8dad})[_0x911b('0x28')](function(){if(!_[_0x911b('0x8f')](_0x2fa979)){return _0x46c620['removeAgents'](_0x2fa979,{'transaction':_0x1f8dad})['then'](function(){return db[_0x911b('0x79')]['destroy']({'where':{'VoiceQueueId':_0x362de9[_0x911b('0x4e')]['id'],'UserId':_0x2fa979},'transaction':_0x1f8dad});});}})[_0x911b('0x28')](function(){_0x2fa979[_0x911b('0x71')](function(_0x4f44f1){socket[_0x911b('0x7d')](_0x911b('0x90'),{'UserId':_0x4f44f1,'VoiceQueueId':_0x46c620['id']});});});});});});})[_0x911b('0x28')](respondWithStatusCode(_0x59eb17,null))[_0x911b('0x4c')](handleError(_0x59eb17,null));};exports['addAgents']=function(_0x331780,_0xda8564,_0x3dca68){var _0x2839d6,_0x5ad4c3;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x331780['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0xda8564,null))[_0x911b('0x28')](function(_0x504911){if(_0x504911){_0x5ad4c3=_0x504911;return _0x504911[_0x911b('0x91')](_0x331780['body']['ids'],_['omit'](_0x331780[_0x911b('0x51')],[_0x911b('0x80'),'id'])||{})[_0x911b('0x92')](function(_0x3b4a7b){for(var _0x4c80fb=0x0;_0x4c80fb<_0x331780['body'][_0x911b('0x80')][_0x911b('0x41')];_0x4c80fb+=0x1){socket[_0x911b('0x7d')](_0x911b('0x7e'),{'UserId':Number(_0x331780[_0x911b('0x51')]['ids'][_0x4c80fb]),'VoiceQueueId':Number(_0x331780[_0x911b('0x4e')]['id'])});}return _0x3b4a7b;});}})[_0x911b('0x28')](function(_0x42a077){_0x2839d6=_0x42a077||[];if(_0x5ad4c3){return db[_0x911b('0x6f')][_0x911b('0x4a')]({'where':{'id':_0x331780['body'][_0x911b('0x80')]},'attributes':['id',_0x911b('0x31'),_0x911b('0x93'),_0x911b('0x94'),_0x911b('0x70')],'raw':!![]});}})[_0x911b('0x28')](function(_0x41a29c){if(!_['isEmpty'](_0x41a29c)){var _0x4eb7d5=[];for(var _0xadecf8=0x0;_0xadecf8<_0x41a29c['length'];_0xadecf8++){if(_0x41a29c[_0xadecf8][_0x911b('0x93')]){_0x4eb7d5[_0x911b('0x89')](db[_0x911b('0x79')][_0x911b('0x74')]({'membername':_0x41a29c[_0xadecf8][_0x911b('0x31')],'UserId':_0x41a29c[_0xadecf8]['id'],'queue_name':_0x5ad4c3[_0x911b('0x31')],'VoiceQueueId':_0x5ad4c3['id'],'interface':_[_0x911b('0x7a')](_0x41a29c[_0xadecf8][_0x911b('0x70')])?util[_0x911b('0x7b')](_0x911b('0x7c'),_0x41a29c[_0xadecf8][_0x911b('0x31')]):_0x41a29c[_0xadecf8][_0x911b('0x70')],'paused':_0x41a29c[_0xadecf8]['voicePause']||![],'penalty':_0x331780[_0x911b('0x51')][_0x911b('0x78')]||0x0}));}}return BPromise[_0x911b('0x95')](_0x4eb7d5);}})[_0x911b('0x28')](function(){return _0x2839d6;})['then'](respondWithResult(_0xda8564,null))[_0x911b('0x4c')](handleError(_0xda8564,null));};exports[_0x911b('0x96')]=function(_0x5eff74,_0x307a6a,_0x537f3f){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x5eff74[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x307a6a,null))[_0x911b('0x28')](function(_0x4df78d){if(_0x4df78d){return _0x4df78d[_0x911b('0x96')](_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')])['then'](function(){if(_['isArray'](_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')])){for(var _0xa273c1=0x0;_0xa273c1<_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]['length'];_0xa273c1+=0x1){socket[_0x911b('0x7d')](_0x911b('0x90'),{'UserId':Number(_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')][_0xa273c1]),'VoiceQueueId':Number(_0x5eff74[_0x911b('0x4e')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]),'VoiceQueueId':Number(_0x5eff74[_0x911b('0x4e')]['id'])});}});}})[_0x911b('0x28')](function(_0x3387e7){return db[_0x911b('0x79')][_0x911b('0x5e')]({'where':{'VoiceQueueId':_0x5eff74[_0x911b('0x4e')]['id'],'UserId':_0x5eff74[_0x911b('0x3b')][_0x911b('0x80')]}})['then'](function(){return _0x3387e7;});})[_0x911b('0x28')](respondWithStatusCode(_0x307a6a,null))[_0x911b('0x4c')](handleError(_0x307a6a,null));};exports[_0x911b('0x97')]=function(_0x3d8ecc,_0x55d276,_0xc3425c){var _0x248580={};var _0x6252fc={};var _0x536634;var _0x411688;return db[_0x911b('0x37')]['findOne']({'where':{'id':_0x3d8ecc['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x55d276,null))[_0x911b('0x28')](function(_0x571c63){if(_0x571c63){_0x536634=_0x571c63;_0x6252fc[_0x911b('0x3a')]=_[_0x911b('0x3c')](db[_0x911b('0x6f')]['rawAttributes']);_0x6252fc[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x3d8ecc[_0x911b('0x3b')]);_0x6252fc[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x6252fc[_0x911b('0x3a')],_0x6252fc[_0x911b('0x3b')]);_0x248580['attributes']=_[_0x911b('0x3f')](_0x6252fc[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x40')]));_0x248580[_0x911b('0x3e')]=_0x248580[_0x911b('0x3e')][_0x911b('0x41')]?_0x248580[_0x911b('0x3e')]:_0x6252fc[_0x911b('0x3a')];_0x248580[_0x911b('0x45')]=qs[_0x911b('0x46')](_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x46')]);_0x248580[_0x911b('0x47')]=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x3d8ecc[_0x911b('0x3b')],_0x6252fc['filters']));if(_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x2b')]){_0x248580[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x248580['where'],{'$or':_[_0x911b('0x2c')](_0x248580[_0x911b('0x3e')],function(_0x10a76a){var _0x3b7c54={};_0x3b7c54[_0x10a76a]={'$like':'%'+_0x3d8ecc[_0x911b('0x3b')]['filter']+'%'};return _0x3b7c54;})});}_0x248580=_['merge']({},_0x248580,_0x3d8ecc[_0x911b('0x63')]);return _0x536634['getAgents'](_0x248580);}})[_0x911b('0x28')](function(_0x41c15c){if(_0x41c15c){_0x411688=_0x41c15c[_0x911b('0x41')];if(!_0x3d8ecc[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x248580[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x3d8ecc[_0x911b('0x3b')]['limit']);_0x248580[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x3d8ecc[_0x911b('0x3b')]['offset']);}return _0x536634['getAgents'](_0x248580);}})[_0x911b('0x28')](function(_0x185ed1){if(_0x185ed1){return _0x185ed1?{'count':_0x411688,'rows':_0x185ed1}:null;}})['then'](respondWithResult(_0x55d276,null))[_0x911b('0x4c')](handleError(_0x55d276,null));};exports[_0x911b('0x98')]=function(_0x49ff55,_0x1d10ea,_0x5f0ff7){var _0x4d35b2={};var _0x2d96f0={};var _0x1359eb;var _0x599ac1;return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x49ff55[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1d10ea,null))[_0x911b('0x28')](function(_0x54d8c4){if(_0x54d8c4){_0x1359eb=_0x54d8c4;_0x2d96f0['model']=_[_0x911b('0x3c')](db['UserVoiceQueueRt'][_0x911b('0x38')]);_0x2d96f0['query']=_[_0x911b('0x3c')](_0x49ff55[_0x911b('0x3b')]);_0x2d96f0[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x2d96f0[_0x911b('0x3a')],_0x2d96f0[_0x911b('0x3b')]);_0x4d35b2['attributes']=_[_0x911b('0x3f')](_0x2d96f0[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x40')]));_0x4d35b2[_0x911b('0x3e')]=_0x4d35b2['attributes']['length']?_0x4d35b2[_0x911b('0x3e')]:_0x2d96f0[_0x911b('0x3a')];_0x4d35b2['order']=qs[_0x911b('0x46')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x46')]);_0x4d35b2['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x49ff55['query'],_0x2d96f0[_0x911b('0x3d')]));if(_0x49ff55['query'][_0x911b('0x2b')]){_0x4d35b2[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x4d35b2['where'],{'$or':_[_0x911b('0x2c')](_0x4d35b2['attributes'],function(_0x35c52d){var _0x202672={};_0x202672[_0x35c52d]={'$like':'%'+_0x49ff55[_0x911b('0x3b')]['filter']+'%'};return _0x202672;})});}_0x4d35b2=_[_0x911b('0x4f')]({},_0x4d35b2,_0x49ff55[_0x911b('0x63')]);return _0x1359eb[_0x911b('0x98')](_0x4d35b2);}})[_0x911b('0x28')](function(_0x42b8b7){if(_0x42b8b7){_0x599ac1=_0x42b8b7[_0x911b('0x41')];if(!_0x49ff55[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x4d35b2['limit']=qs['limit'](_0x49ff55[_0x911b('0x3b')]['limit']);_0x4d35b2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x49ff55[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x1359eb['getMembers'](_0x4d35b2);}})[_0x911b('0x28')](function(_0x17233a){return _0x17233a?{'count':_0x599ac1,'rows':_0x17233a}:null;})[_0x911b('0x28')](respondWithResult(_0x1d10ea,null))[_0x911b('0x4c')](handleError(_0x1d10ea,null));};exports[_0x911b('0x99')]=function(_0x1ef9bb,_0x48383e,_0x881a4b){var _0x415b32={};var _0x5c9ea8={};var _0x126bcb;var _0x53e7df;return db[_0x911b('0x37')][_0x911b('0x65')]({'where':{'id':_0x1ef9bb[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x48383e,null))[_0x911b('0x28')](function(_0x2839a6){if(_0x2839a6){_0x126bcb=_0x2839a6;_0x5c9ea8[_0x911b('0x3a')]=_[_0x911b('0x3c')](db['CmList'][_0x911b('0x38')]);_0x5c9ea8[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x1ef9bb['query']);_0x5c9ea8[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0x5c9ea8['model'],_0x5c9ea8[_0x911b('0x3b')]);_0x415b32[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0x5c9ea8['model'],qs[_0x911b('0x40')](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x40')]));_0x415b32[_0x911b('0x3e')]=_0x415b32[_0x911b('0x3e')][_0x911b('0x41')]?_0x415b32[_0x911b('0x3e')]:_0x5c9ea8[_0x911b('0x3a')];_0x415b32['order']=qs[_0x911b('0x46')](_0x1ef9bb['query'][_0x911b('0x46')]);_0x415b32[_0x911b('0x47')]=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x1ef9bb[_0x911b('0x3b')],_0x5c9ea8['filters']));if(_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x2b')]){_0x415b32[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x415b32[_0x911b('0x47')],{'$or':_['map'](_0x415b32['attributes'],function(_0x5fa11){var _0x1d642b={};_0x1d642b[_0x5fa11]={'$like':'%'+_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x2b')]+'%'};return _0x1d642b;})});}_0x415b32=_[_0x911b('0x4f')]({},_0x415b32,_0x1ef9bb[_0x911b('0x63')]);return _0x126bcb[_0x911b('0x99')](_0x415b32);}})['then'](function(_0x50a9ad){if(_0x50a9ad){_0x53e7df=_0x50a9ad['length'];if(!_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x42')](_0x911b('0x43'))){_0x415b32['limit']=qs['limit'](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x44')]);_0x415b32['offset']=qs[_0x911b('0x23')](_0x1ef9bb[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x126bcb[_0x911b('0x99')](_0x415b32);}})[_0x911b('0x28')](function(_0x40b882){if(_0x40b882){return _0x40b882?{'count':_0x53e7df,'rows':_0x40b882}:null;}})['then'](respondWithResult(_0x48383e,null))['catch'](handleError(_0x48383e,null));};exports[_0x911b('0x9a')]=function(_0x1b3351,_0x100e68,_0x5c580a){var _0x26c390,_0x70191d;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x1b3351[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x100e68,null))[_0x911b('0x28')](function(_0x2fe704){if(_0x2fe704){_0x70191d=_0x2fe704;return _0x2fe704['addLists'](_0x1b3351[_0x911b('0x51')][_0x911b('0x80')],_[_0x911b('0x9b')](_0x1b3351[_0x911b('0x51')],[_0x911b('0x80'),'id'])||{});}return null;})[_0x911b('0x92')](function(_0x18f985){var _0x53c62d;_0x26c390=_0x18f985||[];var _0x3a94cd=[];if(_0x18f985){for(var _0x17095e=0x0;_0x17095e<_0x18f985[_0x911b('0x41')];_0x17095e+=0x1){var _0x52a14f=_0x18f985[_0x17095e]['get']({'plain':!![]});_0x70191d['dialCheckDuplicateType']=_0x1b3351[_0x911b('0x51')][_0x911b('0x9c')]?_0x1b3351[_0x911b('0x51')][_0x911b('0x9c')]:_0x70191d['dialCheckDuplicateType'];switch(_0x70191d[_0x911b('0x9c')]){case _0x911b('0x9d'):_0x53c62d=squel['insert']()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')](['phone','scheduledAt','ContactId','ListId',_0x911b('0x62'),_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()['field'](_0x911b('0xa1'),_0x911b('0xa1'))['field'](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))['field'](_0x52a14f[_0x911b('0xa6')][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5b'))['from'](_0x911b('0xa9'))[_0x911b('0x47')]('deletedAt\x20IS\x20NULL')[_0x911b('0x47')](_0x911b('0xaa'),_0x52a14f['CmListId'][_0x911b('0xa7')]())[_0x911b('0x47')](_0x911b('0xab'))[_0x911b('0x47')]('phone\x20NOT\x20IN\x20(?)',squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xac'))['from'](_0x911b('0xad'))[_0x911b('0x47')](_0x911b('0x87'),_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x911b('0x82')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x911b('0x9f'))[_0x911b('0x47')](_0x911b('0x87'),_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]())))['toString']();break;case _0x911b('0xae'):_0x53c62d=squel[_0x911b('0xaf')]()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')]([_0x911b('0xa1'),_0x911b('0xa3'),_0x911b('0xa5'),'ListId',_0x911b('0x62'),'createdAt',_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xa1'),_0x911b('0xa1'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))[_0x911b('0xa4')](_0x52a14f['CmListId'][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id']['toString'](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5b'))['from']('cm_contacts')['where'](_0x911b('0xb0'))['where'](_0x911b('0xaa'),_0x52a14f[_0x911b('0xa6')]['toString']())[_0x911b('0x47')](_0x911b('0xab'))[_0x911b('0x47')](_0x911b('0xb1'),squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xb2'))[_0x911b('0x83')]('cm_hopper')[_0x911b('0x47')]('VoiceQueueId\x20=\x20?',_0x1b3351[_0x911b('0x4e')]['id'][_0x911b('0xa7')]())))['toString']();break;default:_0x53c62d=squel[_0x911b('0xaf')]()[_0x911b('0x9e')](_0x911b('0x9f'))[_0x911b('0xa0')]([_0x911b('0xa1'),_0x911b('0xa3'),_0x911b('0xa5'),_0x911b('0xa8'),'VoiceQueueId',_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')]('phone',_0x911b('0xa1'))['field'](_0x911b('0xa2'),_0x911b('0xa3'))[_0x911b('0xa4')]('id',_0x911b('0xa5'))[_0x911b('0xa4')](_0x52a14f[_0x911b('0xa6')]['toString'](),'ListId')[_0x911b('0xa4')](_0x1b3351[_0x911b('0x4e')]['id']['toString'](),_0x911b('0x62'))[_0x911b('0xa4')](_0x911b('0xa2'),_0x911b('0x5a'))['field']('NOW()','updatedAt')['from'](_0x911b('0xa9'))[_0x911b('0x47')](_0x911b('0xb0'))['where']('ListId\x20=\x20?',_0x52a14f[_0x911b('0xa6')][_0x911b('0xa7')]())[_0x911b('0x47')]('phone\x20IS\x20NOT\x20NULL'))[_0x911b('0xa7')]();}_0x3a94cd['push'](db[_0x911b('0x72')][_0x911b('0x3b')](_0x53c62d));}return BPromise[_0x911b('0x95')](_0x3a94cd);}})[_0x911b('0x28')](function(){return _0x26c390;})[_0x911b('0x28')](respondWithResult(_0x100e68,null))[_0x911b('0x4c')](handleError(_0x100e68,null));};exports[_0x911b('0xb3')]=function(_0x4f17f6,_0x1b1601,_0x37be48){return db['VoiceQueue'][_0x911b('0x30')]({'where':{'id':_0x4f17f6[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x1b1601,null))[_0x911b('0x28')](function(_0x19f562){if(_0x19f562){return _0x19f562[_0x911b('0xb3')](_0x4f17f6[_0x911b('0x3b')]['ids']);}})[_0x911b('0x28')](function(_0xc8c5b5){if(_0xc8c5b5){return db[_0x911b('0x60')][_0x911b('0x5e')]({'where':{'ListId':_0x4f17f6['query']['ids'],'VoiceQueueId':_0x4f17f6[_0x911b('0x4e')]['id']}})['then'](function(){return _0xc8c5b5;});}})[_0x911b('0x28')](respondWithStatusCode(_0x1b1601,null))[_0x911b('0x4c')](handleError(_0x1b1601,null));};exports[_0x911b('0xb4')]=function(_0x442bab,_0x3d75f5,_0x287823){var _0x50fda2={};var _0xe684ce={};var _0x1f0256;var _0x52e97f;return db['VoiceQueue'][_0x911b('0x65')]({'where':{'id':_0x442bab[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x3d75f5,null))[_0x911b('0x28')](function(_0x18e0e0){if(_0x18e0e0){_0x1f0256=_0x18e0e0;_0xe684ce['model']=_['keys'](db[_0x911b('0xb5')][_0x911b('0x38')]);_0xe684ce[_0x911b('0x3b')]=_[_0x911b('0x3c')](_0x442bab[_0x911b('0x3b')]);_0xe684ce[_0x911b('0x3d')]=_[_0x911b('0x3f')](_0xe684ce[_0x911b('0x3a')],_0xe684ce[_0x911b('0x3b')]);_0x50fda2[_0x911b('0x3e')]=_[_0x911b('0x3f')](_0xe684ce[_0x911b('0x3a')],qs[_0x911b('0x40')](_0x442bab[_0x911b('0x3b')]['fields']));_0x50fda2[_0x911b('0x3e')]=_0x50fda2[_0x911b('0x3e')][_0x911b('0x41')]?_0x50fda2['attributes']:_0xe684ce['model'];_0x50fda2['order']=qs[_0x911b('0x46')](_0x442bab[_0x911b('0x3b')]['sort']);_0x50fda2['where']=qs[_0x911b('0x3d')](_[_0x911b('0x61')](_0x442bab[_0x911b('0x3b')],_0xe684ce['filters']));if(_0x442bab['query'][_0x911b('0x2b')]){_0x50fda2[_0x911b('0x47')]=_[_0x911b('0x4f')](_0x50fda2['where'],{'$or':_[_0x911b('0x2c')](_0x50fda2['attributes'],function(_0xb0ccdc){var _0x3295f1={};_0x3295f1[_0xb0ccdc]={'$like':'%'+_0x442bab['query'][_0x911b('0x2b')]+'%'};return _0x3295f1;})});}_0x50fda2=_[_0x911b('0x4f')]({},_0x50fda2,_0x442bab[_0x911b('0x63')]);return _0x1f0256[_0x911b('0xb4')](_0x50fda2);}})['then'](function(_0xc8f711){if(_0xc8f711){_0x52e97f=_0xc8f711[_0x911b('0x41')];if(!_0x442bab['query']['hasOwnProperty']('nolimit')){_0x50fda2[_0x911b('0x44')]=qs[_0x911b('0x44')](_0x442bab['query'][_0x911b('0x44')]);_0x50fda2[_0x911b('0x23')]=qs[_0x911b('0x23')](_0x442bab[_0x911b('0x3b')][_0x911b('0x23')]);}return _0x1f0256[_0x911b('0xb4')](_0x50fda2);}})['then'](function(_0xc9b809){if(_0xc9b809){return _0xc9b809?{'count':_0x52e97f,'rows':_0xc9b809}:null;}})[_0x911b('0x28')](respondWithResult(_0x3d75f5,null))['catch'](handleError(_0x3d75f5,null));};exports[_0x911b('0xb6')]=function(_0x18a3fe,_0x2daf49,_0x16669b){var _0x23de57,_0x5da1e3;return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x18a3fe['params']['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x2daf49,null))[_0x911b('0x28')](function(_0x1bb56a){if(_0x1bb56a){_0x5da1e3=_0x1bb56a;return _0x1bb56a[_0x911b('0xb6')](_0x18a3fe[_0x911b('0x51')][_0x911b('0x80')],_['omit'](_0x18a3fe[_0x911b('0x51')],['ids','id'])||{});}return null;})[_0x911b('0x92')](function(_0x2a377f){var _0x47c43c;_0x23de57=_0x2a377f||[];var _0x2aed35=[];if(_0x2a377f){for(var _0x2ec04e=0x0;_0x2ec04e<_0x2a377f[_0x911b('0x41')];_0x2ec04e+=0x1){var _0x3c229d=_0x2a377f[_0x2ec04e][_0x911b('0x54')]({'plain':!![]});_0x47c43c=squel['insert']()[_0x911b('0x9e')](_0x911b('0xb7'))['fromQuery'](['phone',_0x911b('0xa5'),'ListId','VoiceQueueId',_0x911b('0x5a'),_0x911b('0x5b')],squel[_0x911b('0x82')]()[_0x911b('0xa4')](_0x911b('0xa1'),_0x911b('0xa1'))[_0x911b('0xa4')]('id','ContactId')[_0x911b('0xa4')](_0x3c229d[_0x911b('0xa6')][_0x911b('0xa7')](),_0x911b('0xa8'))[_0x911b('0xa4')](_0x18a3fe[_0x911b('0x4e')]['id'][_0x911b('0xa7')](),_0x911b('0x62'))['field'](_0x911b('0xa2'),_0x911b('0x5a'))[_0x911b('0xa4')]('NOW()',_0x911b('0x5b'))['from'](_0x911b('0xa9'))[_0x911b('0x47')](_0x911b('0xb0'))['where'](_0x911b('0xaa'),_0x3c229d[_0x911b('0xa6')]['toString']())['where'](_0x911b('0xab')))[_0x911b('0xa7')]();_0x2aed35['push'](db['sequelize'][_0x911b('0x3b')](_0x47c43c));}return BPromise[_0x911b('0x95')](_0x2aed35);}})[_0x911b('0x28')](function(){return _0x23de57;})[_0x911b('0x28')](respondWithResult(_0x2daf49,null))['catch'](handleError(_0x2daf49,null));};exports[_0x911b('0xb8')]=function(_0x16e3fa,_0x49dfda,_0x3df109){return db[_0x911b('0x37')][_0x911b('0x30')]({'where':{'id':_0x16e3fa[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](handleEntityNotFound(_0x49dfda,null))[_0x911b('0x28')](function(_0x435a4e){if(_0x435a4e){return _0x435a4e['removeBlackLists'](_0x16e3fa[_0x911b('0x3b')][_0x911b('0x80')]);}})[_0x911b('0x28')](function(_0x39eefc){if(_0x39eefc){return db[_0x911b('0x6a')]['destroy']({'where':{'ListId':_0x16e3fa[_0x911b('0x3b')][_0x911b('0x80')],'VoiceQueueId':_0x16e3fa[_0x911b('0x4e')]['id']}})[_0x911b('0x28')](function(){return _0x39eefc;});}})[_0x911b('0x28')](respondWithStatusCode(_0x49dfda,null))[_0x911b('0x4c')](handleError(_0x49dfda,null));};
\ No newline at end of file
+var _0x8bd7=['name','UserProfileResource','status','error','stack','send','index','VoiceQueue','rawAttributes','type','keys','query','filters','model','attributes','intersection','fields','length','nolimit','limit','sort','pick','where','merge','options','includeAll','include','findAll','rows','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','autoAssociation','getHoppers','findOne','CmHopper','hasOwnProperty','order','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','addTeams','teams','Agents','online','voicePause','interface','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','findOrCreate','UserVoiceQueueRt','format','SIP/%s','userVoiceQueue:save','removeTeams','Team','ids','User','select','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','compact','removeAgents','emit','userVoiceQueue:remove','addAgents','spread','isEmpty','isNil','all','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','field','NOW()','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','onlyIfOpen','ListId','ListId\x20=\x20?','push','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','find'];(function(_0x1a8159,_0x25d8ab){var _0x595fe5=function(_0x5105b1){while(--_0x5105b1){_0x1a8159['push'](_0x1a8159['shift']());}};_0x595fe5(++_0x25d8ab);}(_0x8bd7,0x13e));var _0x78bd=function(_0x533ed9,_0x147fa6){_0x533ed9=_0x533ed9-0x0;var _0x2a9443=_0x8bd7[_0x533ed9];return _0x2a9443;};'use strict';var emlformat=require(_0x78bd('0x0'));var rimraf=require(_0x78bd('0x1'));var zipdir=require(_0x78bd('0x2'));var jsonpatch=require(_0x78bd('0x3'));var rp=require('request-promise');var moment=require(_0x78bd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x78bd('0x5'));var util=require(_0x78bd('0x6'));var path=require('path');var sox=require(_0x78bd('0x7'));var csv=require(_0x78bd('0x8'));var ejs=require(_0x78bd('0x9'));var fs=require('fs');var fs_extra=require(_0x78bd('0xa'));var _=require(_0x78bd('0xb'));var squel=require(_0x78bd('0xc'));var crypto=require(_0x78bd('0xd'));var jsforce=require(_0x78bd('0xe'));var deskjs=require(_0x78bd('0xf'));var toCsv=require(_0x78bd('0x8'));var querystring=require(_0x78bd('0x10'));var Papa=require(_0x78bd('0x11'));var Redis=require(_0x78bd('0x12'));var authService=require(_0x78bd('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x78bd('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x78bd('0x15'))(_0x78bd('0x16'));var utils=require(_0x78bd('0x17'));var config=require(_0x78bd('0x18'));var licenseUtil=require(_0x78bd('0x19'));var db=require(_0x78bd('0x1a'))['db'];config['redis']=_['defaults'](config[_0x78bd('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x78bd('0x1c'))(new Redis(config[_0x78bd('0x1b')]));require('./voiceQueue.socket')[_0x78bd('0x1d')](socket);function respondWithStatusCode(_0x5e01fe,_0x59f72d){_0x59f72d=_0x59f72d||0xcc;return function(_0x190355){if(_0x190355){return _0x5e01fe[_0x78bd('0x1e')](_0x59f72d);}return _0x5e01fe['status'](_0x59f72d)[_0x78bd('0x1f')]();};}function respondWithResult(_0x3cb04c,_0x7131e1){_0x7131e1=_0x7131e1||0xc8;return function(_0x45a981){if(_0x45a981){return _0x3cb04c['status'](_0x7131e1)[_0x78bd('0x20')](_0x45a981);}};}function respondWithFilteredResult(_0x2b7161,_0x50c6f1){return function(_0x1801e1){if(_0x1801e1){var _0x43a5b6=typeof _0x50c6f1[_0x78bd('0x21')]===_0x78bd('0x22')&&typeof _0x50c6f1['limit']===_0x78bd('0x22');var _0x34f716=_0x1801e1[_0x78bd('0x23')];var _0x5a59da=_0x43a5b6?0x0:_0x50c6f1[_0x78bd('0x21')];var _0x3b9226=_0x43a5b6?_0x1801e1[_0x78bd('0x23')]:_0x50c6f1[_0x78bd('0x21')]+_0x50c6f1['limit'];var _0xa082fc;if(_0x3b9226>=_0x34f716){_0x3b9226=_0x34f716;_0xa082fc=0xc8;}else{_0xa082fc=0xce;}_0x2b7161['status'](_0xa082fc);return _0x2b7161[_0x78bd('0x24')](_0x78bd('0x25'),_0x5a59da+'-'+_0x3b9226+'/'+_0x34f716)[_0x78bd('0x20')](_0x1801e1);}return null;};}function patchUpdates(_0x4e0eb1){return function(_0x4432d1){try{jsonpatch[_0x78bd('0x26')](_0x4432d1,_0x4e0eb1,!![]);}catch(_0x109718){return BPromise[_0x78bd('0x27')](_0x109718);}return _0x4432d1[_0x78bd('0x28')]();};}function saveUpdates(_0x3cf00c,_0x55ed75){return function(_0x37fd8c){if(_0x37fd8c){return _0x37fd8c[_0x78bd('0x29')](_0x3cf00c)['then'](function(_0xca38a5){return _0xca38a5;});}return null;};}function removeEntity(_0x4c01ae,_0x3df721){return function(_0x279863){if(_0x279863){return _0x279863[_0x78bd('0x2a')]()[_0x78bd('0x2b')](function(){var _0x4d313d=_0x279863['get']({'plain':!![]});var _0x3dd21f=[{'name':_0x78bd('0x2c'),'value':_0x78bd('0x2d'),'ignore':![]},{'name':_0x78bd('0x2e'),'value':_0x78bd('0x2f'),'ignore':![]}];var _0x42bc66=_(_0x3dd21f)[_0x78bd('0x30')](_0x78bd('0x31'))[_0x78bd('0x32')](_0x78bd('0x33'))['value']();if(_[_0x78bd('0x34')](_0x42bc66,_0x4d313d['type'])){return;}var _0x2dd486=_[_0x78bd('0x35')](_0x3dd21f,[_0x78bd('0x33'),_0x4d313d['type']])[_0x78bd('0x36')];return db[_0x78bd('0x37')][_0x78bd('0x2a')]({'where':{'type':_0x2dd486,'resourceId':_0x4d313d['id']}})['then'](function(){return _0x279863;});})['then'](function(){_0x4c01ae[_0x78bd('0x38')](0xcc)[_0x78bd('0x1f')]();});}};}function handleEntityNotFound(_0x451faf,_0x1c7d16){return function(_0x43dbdd){if(!_0x43dbdd){_0x451faf['sendStatus'](0x194);}return _0x43dbdd;};}function handleError(_0x5cc25a,_0x59efed){_0x59efed=_0x59efed||0x1f4;return function(_0x83ceef){logger[_0x78bd('0x39')](_0x83ceef[_0x78bd('0x3a')]);if(_0x83ceef[_0x78bd('0x36')]){delete _0x83ceef[_0x78bd('0x36')];}_0x5cc25a['status'](_0x59efed)[_0x78bd('0x3b')](_0x83ceef);};}exports[_0x78bd('0x3c')]=function(_0x454169,_0x3a2ea4){var _0x425909={},_0x39a127={},_0x48570e={'count':0x0,'rows':[]};var _0x123f97=_['map'](db[_0x78bd('0x3d')][_0x78bd('0x3e')],function(_0x13167e){return{'name':_0x13167e['fieldName'],'type':_0x13167e[_0x78bd('0x3f')]['key']};});_0x39a127['model']=_['map'](_0x123f97,_0x78bd('0x36'));_0x39a127['query']=_[_0x78bd('0x40')](_0x454169[_0x78bd('0x41')]);_0x39a127[_0x78bd('0x42')]=_['intersection'](_0x39a127[_0x78bd('0x43')],_0x39a127[_0x78bd('0x41')]);_0x425909[_0x78bd('0x44')]=_[_0x78bd('0x45')](_0x39a127[_0x78bd('0x43')],qs[_0x78bd('0x46')](_0x454169[_0x78bd('0x41')][_0x78bd('0x46')]));_0x425909[_0x78bd('0x44')]=_0x425909[_0x78bd('0x44')][_0x78bd('0x47')]?_0x425909[_0x78bd('0x44')]:_0x39a127[_0x78bd('0x43')];if(!_0x454169['query']['hasOwnProperty'](_0x78bd('0x48'))){_0x425909[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x454169[_0x78bd('0x41')][_0x78bd('0x49')]);_0x425909[_0x78bd('0x21')]=qs['offset'](_0x454169[_0x78bd('0x41')][_0x78bd('0x21')]);}_0x425909['order']=qs['sort'](_0x454169['query'][_0x78bd('0x4a')]);_0x425909['where']=qs[_0x78bd('0x42')](_[_0x78bd('0x4b')](_0x454169[_0x78bd('0x41')],_0x39a127['filters']),_0x123f97);if(_0x454169['query']['filter']){_0x425909[_0x78bd('0x4c')]=_['merge'](_0x425909[_0x78bd('0x4c')],{'$or':_[_0x78bd('0x32')](_0x123f97,function(_0x333e43){if(_0x333e43['type']!=='VIRTUAL'){var _0x19d2b1={};_0x19d2b1[_0x333e43[_0x78bd('0x36')]]={'$like':'%'+_0x454169[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x19d2b1;}})});}_0x425909=_[_0x78bd('0x4d')]({},_0x425909,_0x454169[_0x78bd('0x4e')]);var _0x57ed94={'where':_0x425909['where']};return db['VoiceQueue'][_0x78bd('0x23')](_0x57ed94)[_0x78bd('0x2b')](function(_0x1123c8){_0x48570e['count']=_0x1123c8;if(_0x454169[_0x78bd('0x41')][_0x78bd('0x4f')]){_0x425909[_0x78bd('0x50')]=[{'all':!![]}];}return db[_0x78bd('0x3d')][_0x78bd('0x51')](_0x425909);})[_0x78bd('0x2b')](function(_0x55077b){_0x48570e[_0x78bd('0x52')]=_0x55077b;return _0x48570e;})[_0x78bd('0x2b')](respondWithFilteredResult(_0x3a2ea4,_0x425909))['catch'](handleError(_0x3a2ea4,null));};exports[_0x78bd('0x53')]=function(_0xfe99b9,_0x3cf653){var _0x468498={'raw':![],'where':{'id':_0xfe99b9[_0x78bd('0x54')]['id']}},_0x85f88a={};_0x85f88a['model']=_['keys'](db[_0x78bd('0x3d')][_0x78bd('0x3e')]);_0x85f88a[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0xfe99b9['query']);_0x85f88a[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x85f88a[_0x78bd('0x43')],_0x85f88a[_0x78bd('0x41')]);_0x468498[_0x78bd('0x44')]=_[_0x78bd('0x45')](_0x85f88a[_0x78bd('0x43')],qs[_0x78bd('0x46')](_0xfe99b9['query'][_0x78bd('0x46')]));_0x468498[_0x78bd('0x44')]=_0x468498[_0x78bd('0x44')][_0x78bd('0x47')]?_0x468498[_0x78bd('0x44')]:_0x85f88a[_0x78bd('0x43')];if(_0xfe99b9['query']['includeAll']){_0x468498['include']=[{'all':!![]}];}_0x468498=_[_0x78bd('0x4d')]({},_0x468498,_0xfe99b9['options']);return db[_0x78bd('0x3d')][_0x78bd('0x35')](_0x468498)['then'](handleEntityNotFound(_0x3cf653,null))[_0x78bd('0x2b')](respondWithResult(_0x3cf653,null))['catch'](handleError(_0x3cf653,null));};exports[_0x78bd('0x55')]=function(_0xaa5713,_0x236657){return db[_0x78bd('0x3d')]['create'](_0xaa5713[_0x78bd('0x56')],{})['then'](function(_0x227e1c){var _0x2ef8c3=_0xaa5713[_0x78bd('0x57')][_0x78bd('0x58')]({'plain':!![]});if(!_0x2ef8c3)throw new Error(_0x78bd('0x59'));if(_0x2ef8c3[_0x78bd('0x5a')]===_0x78bd('0x57')){var _0x33ad81=_0x227e1c['get']({'plain':!![]});var _0x2b67f0=[{'name':_0x78bd('0x2c'),'value':_0x78bd('0x2d')},{'name':_0x78bd('0x2e'),'value':_0x78bd('0x2f')}];var _0x171706=_[_0x78bd('0x35')](_0x2b67f0,[_0x78bd('0x33'),_0x33ad81[_0x78bd('0x3f')]])[_0x78bd('0x36')];return db[_0x78bd('0x5b')][_0x78bd('0x35')]({'where':{'name':_0x171706,'userProfileId':_0x2ef8c3[_0x78bd('0x5c')]},'raw':!![]})['then'](function(_0xcf0993){if(_0xcf0993&&_0xcf0993['autoAssociation']===0x0){return db[_0x78bd('0x37')][_0x78bd('0x55')]({'name':_0x33ad81['name'],'resourceId':_0x33ad81['id'],'type':_0xcf0993['name'],'sectionId':_0xcf0993['id']},{})[_0x78bd('0x2b')](function(){return _0x227e1c;});}else{return _0x227e1c;}})[_0x78bd('0x5d')](function(_0xb3f6e4){logger[_0x78bd('0x39')](_0x78bd('0x5e'),_0xb3f6e4);throw _0xb3f6e4;});}return _0x227e1c;})['then'](respondWithResult(_0x236657,0xc9))['catch'](handleError(_0x236657,null));};exports['clone']=function(_0x52cf29,_0x18c790){var _0x448722={'where':{'id':_0x52cf29[_0x78bd('0x54')]['id']}},_0x207b91={};_0x207b91['model']=_['keys'](db[_0x78bd('0x3d')]['rawAttributes']);_0x448722['attributes']=_['intersection'](_0x207b91[_0x78bd('0x43')],qs['fields'](_0x52cf29[_0x78bd('0x41')][_0x78bd('0x46')]));_0x448722['attributes']=_0x448722[_0x78bd('0x44')][_0x78bd('0x47')]?_0x448722[_0x78bd('0x44')]:_0x207b91[_0x78bd('0x43')];if(_0x52cf29[_0x78bd('0x41')][_0x78bd('0x4f')]){_0x448722[_0x78bd('0x50')]=[{'all':!![]}];}_0x448722=_['merge']({},_0x448722,_0x52cf29[_0x78bd('0x4e')]);return db[_0x78bd('0x3d')][_0x78bd('0x35')](_0x448722)[_0x78bd('0x2b')](handleEntityNotFound(_0x18c790,null))[_0x78bd('0x2b')](function(_0x3d0c9f){if(_0x3d0c9f){var _0x33dc3d=_0x3d0c9f[_0x78bd('0x58')]({'plain':!![]});_0x33dc3d=qs[_0x78bd('0x5f')](_0x33dc3d,['id',_0x78bd('0x60'),_0x78bd('0x61')]);_0x52cf29[_0x78bd('0x56')]=_[_0x78bd('0x5f')](_0x52cf29[_0x78bd('0x56')],['id','createdAt',_0x78bd('0x61')]);return db[_0x78bd('0x3d')][_0x78bd('0x55')](_[_0x78bd('0x4d')](_0x33dc3d,_0x52cf29[_0x78bd('0x56')]),{'include':_0x52cf29['query']['includeAll']?[{'all':!![]}]:undefined})[_0x78bd('0x2b')](function(_0x1b1ca7){var _0x4d5c7a=_0x52cf29[_0x78bd('0x57')][_0x78bd('0x58')]({'plain':!![]});if(!_0x4d5c7a)throw new Error(_0x78bd('0x59'));if(_0x4d5c7a[_0x78bd('0x5a')]===_0x78bd('0x57')){var _0x144b6b=_0x1b1ca7[_0x78bd('0x58')]({'plain':!![]});var _0x4f6dde=[{'name':'VoiceQueues','value':_0x78bd('0x2d')},{'name':_0x78bd('0x2e'),'value':_0x78bd('0x2f')}];var _0x1b839f=_[_0x78bd('0x35')](_0x4f6dde,[_0x78bd('0x33'),_0x144b6b[_0x78bd('0x3f')]])[_0x78bd('0x36')];return db[_0x78bd('0x5b')][_0x78bd('0x35')]({'where':{'name':_0x1b839f,'userProfileId':_0x4d5c7a[_0x78bd('0x5c')]},'raw':!![]})[_0x78bd('0x2b')](function(_0x51ee6a){if(_0x51ee6a&&_0x51ee6a[_0x78bd('0x62')]===0x0){return db['UserProfileResource']['create']({'name':_0x144b6b[_0x78bd('0x36')],'resourceId':_0x144b6b['id'],'type':_0x51ee6a[_0x78bd('0x36')],'sectionId':_0x51ee6a['id']},{})[_0x78bd('0x2b')](function(){return _0x1b1ca7;});}else{return _0x1b1ca7;}})[_0x78bd('0x5d')](function(_0x20be43){logger['error'](_0x78bd('0x5e'),_0x20be43);throw _0x20be43;});}return _0x1b1ca7;});}})[_0x78bd('0x2b')](respondWithResult(_0x18c790,0xc9))[_0x78bd('0x5d')](handleError(_0x18c790,null));};exports[_0x78bd('0x29')]=function(_0x4d84fa,_0xa34e2e){if(_0x4d84fa['body']['id']){delete _0x4d84fa[_0x78bd('0x56')]['id'];}return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x4d84fa[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0xa34e2e,null))[_0x78bd('0x2b')](saveUpdates(_0x4d84fa[_0x78bd('0x56')],null))[_0x78bd('0x2b')](respondWithResult(_0xa34e2e,null))[_0x78bd('0x5d')](handleError(_0xa34e2e,null));};exports['destroy']=function(_0x7a0d04,_0x56c3b2){return db[_0x78bd('0x3d')]['find']({'where':{'id':_0x7a0d04[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x56c3b2,null))[_0x78bd('0x2b')](removeEntity(_0x56c3b2,null))[_0x78bd('0x5d')](handleError(_0x56c3b2,null));};exports[_0x78bd('0x63')]=function(_0x1aff63,_0x543e12,_0x181df7){var _0x416cf4={'raw':![],'where':{}};var _0x6d080={};var _0x29b931={'count':0x0,'rows':[]};return db[_0x78bd('0x3d')][_0x78bd('0x64')]({'where':{'id':_0x1aff63[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x543e12,null))['then'](function(_0x224eee){if(_0x224eee){_0x6d080[_0x78bd('0x43')]=_['keys'](db[_0x78bd('0x65')][_0x78bd('0x3e')]);_0x6d080[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x1aff63[_0x78bd('0x41')]);_0x6d080[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x6d080[_0x78bd('0x43')],_0x6d080['query']);_0x416cf4['attributes']=_['intersection'](_0x6d080['model'],qs[_0x78bd('0x46')](_0x1aff63['query'][_0x78bd('0x46')]));_0x416cf4[_0x78bd('0x44')]=_0x416cf4[_0x78bd('0x44')][_0x78bd('0x47')]?_0x416cf4[_0x78bd('0x44')]:_0x6d080['model'];if(!_0x1aff63[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x416cf4[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x1aff63['query'][_0x78bd('0x49')]);_0x416cf4[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x1aff63[_0x78bd('0x41')][_0x78bd('0x21')]);}_0x416cf4[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x1aff63['query'][_0x78bd('0x4a')]);_0x416cf4[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_['pick'](_0x1aff63[_0x78bd('0x41')],_0x6d080[_0x78bd('0x42')]));_0x416cf4[_0x78bd('0x4c')][_0x78bd('0x68')]=_0x224eee['id'];if(_0x1aff63[_0x78bd('0x41')][_0x78bd('0x30')]){_0x416cf4[_0x78bd('0x4c')]=_['merge'](_0x416cf4[_0x78bd('0x4c')],{'$or':_[_0x78bd('0x32')](_0x416cf4[_0x78bd('0x44')],function(_0x270676){var _0x3dccd5={};_0x3dccd5[_0x270676]={'$like':'%'+_0x1aff63[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x3dccd5;})});}_0x416cf4=_[_0x78bd('0x4d')]({},_0x416cf4,_0x1aff63['options']);return db[_0x78bd('0x65')]['count']({'where':_0x416cf4[_0x78bd('0x4c')]})['then'](function(_0xaaced9){_0x29b931['count']=_0xaaced9;if(_0x1aff63['query'][_0x78bd('0x4f')]){_0x416cf4['include']=[{'all':!![]}];}return db[_0x78bd('0x65')]['findAll'](_0x416cf4);})[_0x78bd('0x2b')](function(_0x5a9160){_0x29b931[_0x78bd('0x52')]=_0x5a9160;return _0x29b931;});}})['then'](respondWithFilteredResult(_0x543e12,_0x416cf4))[_0x78bd('0x5d')](handleError(_0x543e12,null));};exports['getHopperHistories']=function(_0x83e052,_0x26335e,_0x491417){var _0x20e261={'raw':!![],'where':{}};var _0x128f52={};var _0x2fc72={'count':0x0,'rows':[]};return db[_0x78bd('0x3d')][_0x78bd('0x64')]({'where':{'id':_0x83e052[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x26335e,null))[_0x78bd('0x2b')](function(_0x2af19f){if(_0x2af19f){_0x128f52[_0x78bd('0x43')]=_[_0x78bd('0x40')](db[_0x78bd('0x69')][_0x78bd('0x3e')]);_0x128f52[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x83e052[_0x78bd('0x41')]);_0x128f52[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x128f52[_0x78bd('0x43')],_0x128f52['query']);_0x20e261['attributes']=_[_0x78bd('0x45')](_0x128f52[_0x78bd('0x43')],qs[_0x78bd('0x46')](_0x83e052[_0x78bd('0x41')][_0x78bd('0x46')]));_0x20e261[_0x78bd('0x44')]=_0x20e261[_0x78bd('0x44')][_0x78bd('0x47')]?_0x20e261[_0x78bd('0x44')]:_0x128f52['model'];if(!_0x83e052[_0x78bd('0x41')]['hasOwnProperty'](_0x78bd('0x48'))){_0x20e261[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x83e052[_0x78bd('0x41')][_0x78bd('0x49')]);_0x20e261[_0x78bd('0x21')]=qs['offset'](_0x83e052[_0x78bd('0x41')]['offset']);}_0x20e261['order']=qs[_0x78bd('0x4a')](_0x83e052['query'][_0x78bd('0x4a')]);_0x20e261['where']=qs[_0x78bd('0x42')](_['pick'](_0x83e052[_0x78bd('0x41')],_0x128f52[_0x78bd('0x42')]));_0x20e261[_0x78bd('0x4c')][_0x78bd('0x68')]=_0x2af19f['id'];if(_0x83e052['query'][_0x78bd('0x30')]){_0x20e261['where']=_['merge'](_0x20e261['where'],{'$or':_['map'](_0x20e261['attributes'],function(_0x1668f1){var _0x34b11d={};_0x34b11d[_0x1668f1]={'$like':'%'+_0x83e052[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x34b11d;})});}_0x20e261=_['merge']({},_0x20e261,_0x83e052['options']);return db['CmHopperHistory'][_0x78bd('0x23')]({'where':_0x20e261['where']})['then'](function(_0x49d128){_0x2fc72['count']=_0x49d128;if(_0x83e052[_0x78bd('0x41')][_0x78bd('0x4f')]){_0x20e261['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x20e261);})[_0x78bd('0x2b')](function(_0x306cf3){_0x2fc72[_0x78bd('0x52')]=_0x306cf3;return _0x2fc72;});}})[_0x78bd('0x2b')](respondWithFilteredResult(_0x26335e,_0x20e261))[_0x78bd('0x5d')](handleError(_0x26335e,null));};exports[_0x78bd('0x6a')]=function(_0x326777,_0x3fbdd7,_0x2d0dda){var _0x5d7fd1={'raw':!![],'where':{}};var _0x1fb0b2={};var _0x4ab612={'count':0x0,'rows':[]};return db[_0x78bd('0x3d')][_0x78bd('0x64')]({'where':{'id':_0x326777[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x3fbdd7,null))[_0x78bd('0x2b')](function(_0x25fcb1){if(_0x25fcb1){_0x1fb0b2[_0x78bd('0x43')]=_[_0x78bd('0x40')](db['CmHopperFinal'][_0x78bd('0x3e')]);_0x1fb0b2[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x326777[_0x78bd('0x41')]);_0x1fb0b2['filters']=_['intersection'](_0x1fb0b2['model'],_0x1fb0b2[_0x78bd('0x41')]);_0x5d7fd1['attributes']=_['intersection'](_0x1fb0b2[_0x78bd('0x43')],qs[_0x78bd('0x46')](_0x326777[_0x78bd('0x41')][_0x78bd('0x46')]));_0x5d7fd1[_0x78bd('0x44')]=_0x5d7fd1['attributes'][_0x78bd('0x47')]?_0x5d7fd1[_0x78bd('0x44')]:_0x1fb0b2[_0x78bd('0x43')];if(!_0x326777['query']['hasOwnProperty'](_0x78bd('0x48'))){_0x5d7fd1[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x326777[_0x78bd('0x41')]['limit']);_0x5d7fd1[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x326777[_0x78bd('0x41')]['offset']);}_0x5d7fd1[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x326777['query'][_0x78bd('0x4a')]);_0x5d7fd1[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_[_0x78bd('0x4b')](_0x326777[_0x78bd('0x41')],_0x1fb0b2[_0x78bd('0x42')]));_0x5d7fd1[_0x78bd('0x4c')][_0x78bd('0x68')]=_0x25fcb1['id'];if(_0x326777['query'][_0x78bd('0x30')]){_0x5d7fd1['where']=_[_0x78bd('0x4d')](_0x5d7fd1[_0x78bd('0x4c')],{'$or':_[_0x78bd('0x32')](_0x5d7fd1['attributes'],function(_0x116afe){var _0x4ece94={};_0x4ece94[_0x116afe]={'$like':'%'+_0x326777[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x4ece94;})});}_0x5d7fd1=_[_0x78bd('0x4d')]({},_0x5d7fd1,_0x326777[_0x78bd('0x4e')]);return db[_0x78bd('0x6b')][_0x78bd('0x23')]({'where':_0x5d7fd1[_0x78bd('0x4c')]})[_0x78bd('0x2b')](function(_0xa5c9ce){_0x4ab612[_0x78bd('0x23')]=_0xa5c9ce;if(_0x326777['query']['includeAll']){_0x5d7fd1['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0x78bd('0x51')](_0x5d7fd1);})[_0x78bd('0x2b')](function(_0x3f34d3){_0x4ab612[_0x78bd('0x52')]=_0x3f34d3;return _0x4ab612;});}})[_0x78bd('0x2b')](respondWithFilteredResult(_0x3fbdd7,_0x5d7fd1))[_0x78bd('0x5d')](handleError(_0x3fbdd7,null));};exports[_0x78bd('0x6c')]=function(_0x3a949d,_0x17ad0f,_0x24d31c){var _0x3e5623={'raw':!![],'where':{}};var _0x1d7da4={};var _0x539b7e={'count':0x0,'rows':[]};return db[_0x78bd('0x3d')]['findOne']({'where':{'id':_0x3a949d[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x17ad0f,null))[_0x78bd('0x2b')](function(_0x2f414d){if(_0x2f414d){_0x1d7da4[_0x78bd('0x43')]=_[_0x78bd('0x40')](db[_0x78bd('0x6d')]['rawAttributes']);_0x1d7da4[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x3a949d['query']);_0x1d7da4[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x1d7da4[_0x78bd('0x43')],_0x1d7da4['query']);_0x3e5623[_0x78bd('0x44')]=_['intersection'](_0x1d7da4[_0x78bd('0x43')],qs['fields'](_0x3a949d['query'][_0x78bd('0x46')]));_0x3e5623[_0x78bd('0x44')]=_0x3e5623[_0x78bd('0x44')]['length']?_0x3e5623[_0x78bd('0x44')]:_0x1d7da4[_0x78bd('0x43')];if(!_0x3a949d[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x3e5623[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x3a949d[_0x78bd('0x41')][_0x78bd('0x49')]);_0x3e5623[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x3a949d['query']['offset']);}_0x3e5623['order']=qs[_0x78bd('0x4a')](_0x3a949d['query'][_0x78bd('0x4a')]);_0x3e5623[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_[_0x78bd('0x4b')](_0x3a949d[_0x78bd('0x41')],_0x1d7da4[_0x78bd('0x42')]));_0x3e5623[_0x78bd('0x4c')][_0x78bd('0x68')]=_0x2f414d['id'];if(_0x3a949d['query'][_0x78bd('0x30')]){_0x3e5623[_0x78bd('0x4c')]=_[_0x78bd('0x4d')](_0x3e5623[_0x78bd('0x4c')],{'$or':_[_0x78bd('0x32')](_0x3e5623[_0x78bd('0x44')],function(_0x1772d7){var _0x21bb59={};_0x21bb59[_0x1772d7]={'$like':'%'+_0x3a949d['query'][_0x78bd('0x30')]+'%'};return _0x21bb59;})});}_0x3e5623=_['merge']({},_0x3e5623,_0x3a949d[_0x78bd('0x4e')]);return db[_0x78bd('0x6d')][_0x78bd('0x23')]({'where':_0x3e5623[_0x78bd('0x4c')]})[_0x78bd('0x2b')](function(_0x25cd31){_0x539b7e['count']=_0x25cd31;if(_0x3a949d[_0x78bd('0x41')][_0x78bd('0x4f')]){_0x3e5623[_0x78bd('0x50')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x78bd('0x51')](_0x3e5623);})[_0x78bd('0x2b')](function(_0x474380){_0x539b7e[_0x78bd('0x52')]=_0x474380;return _0x539b7e;});}})[_0x78bd('0x2b')](respondWithFilteredResult(_0x17ad0f,_0x3e5623))[_0x78bd('0x5d')](handleError(_0x17ad0f,null));};exports['getTeams']=function(_0x1a2a72,_0x23faaf,_0x2ce1c2){var _0x43fa33={};var _0x5c3436={};var _0x3d116b;var _0x1fe4af;return db['VoiceQueue']['findOne']({'where':{'id':_0x1a2a72[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x23faaf,null))[_0x78bd('0x2b')](function(_0x1cfa81){if(_0x1cfa81){_0x3d116b=_0x1cfa81;_0x5c3436[_0x78bd('0x43')]=_[_0x78bd('0x40')](db['Team']['rawAttributes']);_0x5c3436[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x1a2a72[_0x78bd('0x41')]);_0x5c3436[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x5c3436[_0x78bd('0x43')],_0x5c3436[_0x78bd('0x41')]);_0x43fa33['attributes']=_['intersection'](_0x5c3436['model'],qs[_0x78bd('0x46')](_0x1a2a72[_0x78bd('0x41')]['fields']));_0x43fa33[_0x78bd('0x44')]=_0x43fa33[_0x78bd('0x44')][_0x78bd('0x47')]?_0x43fa33[_0x78bd('0x44')]:_0x5c3436[_0x78bd('0x43')];_0x43fa33['order']=qs[_0x78bd('0x4a')](_0x1a2a72[_0x78bd('0x41')][_0x78bd('0x4a')]);_0x43fa33[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_[_0x78bd('0x4b')](_0x1a2a72['query'],_0x5c3436[_0x78bd('0x42')]));if(_0x1a2a72[_0x78bd('0x41')][_0x78bd('0x30')]){_0x43fa33[_0x78bd('0x4c')]=_[_0x78bd('0x4d')](_0x43fa33[_0x78bd('0x4c')],{'$or':_['map'](_0x43fa33[_0x78bd('0x44')],function(_0x2ddb57){var _0x2776b2={};_0x2776b2[_0x2ddb57]={'$like':'%'+_0x1a2a72[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x2776b2;})});}_0x43fa33=_[_0x78bd('0x4d')]({},_0x43fa33,_0x1a2a72[_0x78bd('0x4e')]);return _0x3d116b[_0x78bd('0x6e')](_0x43fa33);}})[_0x78bd('0x2b')](function(_0x1f83e7){if(_0x1f83e7){_0x1fe4af=_0x1f83e7[_0x78bd('0x47')];if(!_0x1a2a72[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x43fa33[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x1a2a72[_0x78bd('0x41')][_0x78bd('0x49')]);_0x43fa33[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x1a2a72[_0x78bd('0x41')]['offset']);}return _0x3d116b['getTeams'](_0x43fa33);}})['then'](function(_0x3cc32d){if(_0x3cc32d){return _0x3cc32d?{'count':_0x1fe4af,'rows':_0x3cc32d}:null;}})[_0x78bd('0x2b')](respondWithResult(_0x23faaf,null))[_0x78bd('0x5d')](handleError(_0x23faaf,null));};exports[_0x78bd('0x6f')]=function(_0x2f08b6,_0x1c1094,_0x509322){var _0x5974e2=_0x2f08b6[_0x78bd('0x56')][_0x78bd('0x70')];var _0x136531=_['map'](_0x5974e2,'id');return db['Team']['findAll']({'where':{'id':_0x136531},'attributes':['id'],'include':[{'model':db['User'],'as':_0x78bd('0x71'),'attributes':['id',_0x78bd('0x36'),_0x78bd('0x72'),_0x78bd('0x73'),_0x78bd('0x74')],'raw':!![]}]})[_0x78bd('0x2b')](function(_0xea9a49){if(_0xea9a49){var _0x569146=_['flatMap'](_0xea9a49,function(_0xb38fe4){var _0x150e3d=_0xb38fe4[_0x78bd('0x58')]({'plain':!![]});_0x150e3d[_0x78bd('0x71')][_0x78bd('0x75')](function(_0xc05671){_0xc05671['penalty']=_[_0x78bd('0x35')](_0x5974e2,{'id':_0x150e3d['id']})[_0x78bd('0x76')];});return _0x150e3d[_0x78bd('0x71')];});return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x2f08b6[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](function(_0x27ba6b){return db[_0x78bd('0x77')][_0x78bd('0x78')](function(_0x54809f){return _0x27ba6b['addTeams'](_0x136531,{'transaction':_0x54809f})[_0x78bd('0x2b')](function(){return BPromise[_0x78bd('0x79')](_0x5974e2,function(_0x1c2448){return db[_0x78bd('0x7a')][_0x78bd('0x7b')]({'TeamId':_0x1c2448['id'],'VoiceQueueId':_0x2f08b6[_0x78bd('0x54')]['id'],'penalty':_0x1c2448['penalty']},{'transaction':_0x54809f});});})[_0x78bd('0x2b')](function(){return BPromise[_0x78bd('0x79')](_0x569146,function(_0x33faa1){return db['UserVoiceQueue'][_0x78bd('0x7c')]({'where':{'UserId':_0x33faa1['id'],'VoiceQueueId':_0x2f08b6[_0x78bd('0x54')]['id']},'defaults':{'penalty':_0x33faa1[_0x78bd('0x76')]},'transaction':_0x54809f});});})['then'](function(){return BPromise[_0x78bd('0x79')](_['filter'](_0x569146,{'online':!![]}),function(_0x482f4d){return db[_0x78bd('0x7d')]['upsert']({'membername':_0x482f4d[_0x78bd('0x36')],'UserId':_0x482f4d['id'],'queue_name':_0x27ba6b[_0x78bd('0x36')],'VoiceQueueId':_0x27ba6b['id'],'interface':_['isNil'](_0x482f4d[_0x78bd('0x74')])?util[_0x78bd('0x7e')](_0x78bd('0x7f'),_0x482f4d[_0x78bd('0x36')]):_0x482f4d[_0x78bd('0x74')],'paused':_0x482f4d[_0x78bd('0x73')]||![],'penalty':_0x482f4d['penalty']},{'transaction':_0x54809f});});})['then'](function(){_0x569146[_0x78bd('0x75')](function(_0x8b366c){socket['emit'](_0x78bd('0x80'),{'UserId':_0x8b366c['id'],'VoiceQueueId':_0x27ba6b['id']});});});});});}})[_0x78bd('0x2b')](respondWithStatusCode(_0x1c1094,null))['catch'](handleError(_0x1c1094,null));};exports[_0x78bd('0x81')]=function(_0x5ae381,_0x35651c,_0x10f7d9){return db[_0x78bd('0x82')][_0x78bd('0x51')]({'where':{'id':_0x5ae381['query'][_0x78bd('0x83')]},'attributes':['id'],'include':[{'model':db[_0x78bd('0x84')],'as':_0x78bd('0x71'),'attributes':['id'],'raw':!![]}]})[_0x78bd('0x2b')](handleEntityNotFound(_0x35651c,null))[_0x78bd('0x2b')](function(_0x4e3547){var _0x53b2a2=_[_0x78bd('0x32')](_0x4e3547,'id');var _0x22102a=[];var _0x445b73=[];var _0x42716a=squel[_0x78bd('0x85')]();_0x42716a['field'](_0x78bd('0x86'))['from']('team_has_voice_queues','tq')[_0x78bd('0x87')](_0x78bd('0x88'),'ut',_0x78bd('0x89'))[_0x78bd('0x4c')](_0x78bd('0x8a'),_0x5ae381['params']['id']);for(var _0x1bde69=0x0;_0x1bde69<_0x4e3547['length'];_0x1bde69+=0x1){let _0x22e933=_0x4e3547[_0x1bde69];for(var _0x16b846=0x0;_0x16b846<_0x22e933[_0x78bd('0x71')][_0x78bd('0x47')];_0x16b846+=0x1){let _0x56528f=_0x22e933[_0x78bd('0x71')][_0x16b846];var _0x5afa99=_0x42716a[_0x78bd('0x8b')]();_0x5afa99[_0x78bd('0x4c')](_0x78bd('0x8c'),_0x56528f['id']);_0x445b73['push'](db['sequelize'][_0x78bd('0x41')](_0x5afa99[_0x78bd('0x8d')](),{'type':db['sequelize'][_0x78bd('0x8e')][_0x78bd('0x8f')]})[_0x78bd('0x2b')](function(_0x15f592){if(_0x15f592['length']===0x1){return _0x56528f['id'];}else{var _0x502afb=_[_0x78bd('0x90')](_[_0x78bd('0x32')](_0x15f592,_0x78bd('0x91')),function(_0x42ceee){return _[_0x78bd('0x34')](_0x53b2a2,_0x42ceee);});if(_0x502afb){return _0x56528f['id'];}}}));}}return BPromise['all'](_0x445b73)[_0x78bd('0x2b')](function(_0x2c9c1b){_0x22102a=_(_0x22102a)['union'](_0x2c9c1b)[_0x78bd('0x92')]()[_0x78bd('0x33')]();return db['VoiceQueue']['find']({'where':{'id':_0x5ae381[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](function(_0xcd5baf){return db[_0x78bd('0x77')][_0x78bd('0x78')](function(_0x491fec){return _0xcd5baf[_0x78bd('0x81')](_0x5ae381[_0x78bd('0x41')][_0x78bd('0x83')],{'transaction':_0x491fec})[_0x78bd('0x2b')](function(){if(!_['isEmpty'](_0x22102a)){return _0xcd5baf[_0x78bd('0x93')](_0x22102a,{'transaction':_0x491fec})[_0x78bd('0x2b')](function(){return db[_0x78bd('0x7d')]['destroy']({'where':{'VoiceQueueId':_0x5ae381[_0x78bd('0x54')]['id'],'UserId':_0x22102a},'transaction':_0x491fec});});}})[_0x78bd('0x2b')](function(){_0x22102a[_0x78bd('0x75')](function(_0x1f9ed3){socket[_0x78bd('0x94')](_0x78bd('0x95'),{'UserId':_0x1f9ed3,'VoiceQueueId':_0xcd5baf['id']});});});});});});})[_0x78bd('0x2b')](respondWithStatusCode(_0x35651c,null))[_0x78bd('0x5d')](handleError(_0x35651c,null));};exports[_0x78bd('0x96')]=function(_0x4c6506,_0x3cf40e,_0x5d1c29){var _0x289b89,_0xd587c9;return db[_0x78bd('0x3d')]['find']({'where':{'id':_0x4c6506[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x3cf40e,null))[_0x78bd('0x2b')](function(_0x2245b8){if(_0x2245b8){_0xd587c9=_0x2245b8;return _0x2245b8[_0x78bd('0x96')](_0x4c6506[_0x78bd('0x56')][_0x78bd('0x83')],_[_0x78bd('0x5f')](_0x4c6506['body'],[_0x78bd('0x83'),'id'])||{})[_0x78bd('0x97')](function(_0xee517c){for(var _0x2ce55e=0x0;_0x2ce55e<_0x4c6506['body'][_0x78bd('0x83')][_0x78bd('0x47')];_0x2ce55e+=0x1){socket['emit'](_0x78bd('0x80'),{'UserId':Number(_0x4c6506[_0x78bd('0x56')][_0x78bd('0x83')][_0x2ce55e]),'VoiceQueueId':Number(_0x4c6506[_0x78bd('0x54')]['id'])});}return _0xee517c;});}})[_0x78bd('0x2b')](function(_0x55a426){_0x289b89=_0x55a426||[];if(_0xd587c9){return db[_0x78bd('0x84')][_0x78bd('0x51')]({'where':{'id':_0x4c6506['body'][_0x78bd('0x83')]},'attributes':['id',_0x78bd('0x36'),'online',_0x78bd('0x73'),_0x78bd('0x74')],'raw':!![]});}})[_0x78bd('0x2b')](function(_0x224dea){if(!_[_0x78bd('0x98')](_0x224dea)){var _0x61f60d=[];for(var _0x5129fe=0x0;_0x5129fe<_0x224dea['length'];_0x5129fe++){if(_0x224dea[_0x5129fe][_0x78bd('0x72')]){_0x61f60d['push'](db[_0x78bd('0x7d')][_0x78bd('0x7b')]({'membername':_0x224dea[_0x5129fe][_0x78bd('0x36')],'UserId':_0x224dea[_0x5129fe]['id'],'queue_name':_0xd587c9[_0x78bd('0x36')],'VoiceQueueId':_0xd587c9['id'],'interface':_[_0x78bd('0x99')](_0x224dea[_0x5129fe][_0x78bd('0x74')])?util[_0x78bd('0x7e')](_0x78bd('0x7f'),_0x224dea[_0x5129fe][_0x78bd('0x36')]):_0x224dea[_0x5129fe][_0x78bd('0x74')],'paused':_0x224dea[_0x5129fe][_0x78bd('0x73')]||![],'penalty':_0x4c6506[_0x78bd('0x56')][_0x78bd('0x76')]||0x0}));}}return BPromise[_0x78bd('0x9a')](_0x61f60d);}})[_0x78bd('0x2b')](function(){return _0x289b89;})[_0x78bd('0x2b')](respondWithResult(_0x3cf40e,null))[_0x78bd('0x5d')](handleError(_0x3cf40e,null));};exports[_0x78bd('0x93')]=function(_0x5924be,_0x4ab75a,_0x3c2042){return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x5924be[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x4ab75a,null))[_0x78bd('0x2b')](function(_0x559ee8){if(_0x559ee8){return _0x559ee8[_0x78bd('0x93')](_0x5924be[_0x78bd('0x41')][_0x78bd('0x83')])[_0x78bd('0x2b')](function(){if(_['isArray'](_0x5924be['query'][_0x78bd('0x83')])){for(var _0x422160=0x0;_0x422160<_0x5924be[_0x78bd('0x41')][_0x78bd('0x83')]['length'];_0x422160+=0x1){socket[_0x78bd('0x94')](_0x78bd('0x95'),{'UserId':Number(_0x5924be[_0x78bd('0x41')][_0x78bd('0x83')][_0x422160]),'VoiceQueueId':Number(_0x5924be[_0x78bd('0x54')]['id'])});}}else{socket[_0x78bd('0x94')](_0x78bd('0x95'),{'UserId':Number(_0x5924be['query'][_0x78bd('0x83')]),'VoiceQueueId':Number(_0x5924be['params']['id'])});}});}})[_0x78bd('0x2b')](function(_0x5ec73c){return db['UserVoiceQueueRt'][_0x78bd('0x2a')]({'where':{'VoiceQueueId':_0x5924be[_0x78bd('0x54')]['id'],'UserId':_0x5924be['query'][_0x78bd('0x83')]}})[_0x78bd('0x2b')](function(){return _0x5ec73c;});})[_0x78bd('0x2b')](respondWithStatusCode(_0x4ab75a,null))[_0x78bd('0x5d')](handleError(_0x4ab75a,null));};exports['getAgents']=function(_0x522c1a,_0x5749a2,_0x1c2651){var _0x380235={};var _0x57ffd2={};var _0x563a5a;var _0x1a2acd;return db[_0x78bd('0x3d')][_0x78bd('0x64')]({'where':{'id':_0x522c1a[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x5749a2,null))['then'](function(_0x180114){if(_0x180114){_0x563a5a=_0x180114;_0x57ffd2[_0x78bd('0x43')]=_[_0x78bd('0x40')](db[_0x78bd('0x84')][_0x78bd('0x3e')]);_0x57ffd2[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x522c1a['query']);_0x57ffd2[_0x78bd('0x42')]=_['intersection'](_0x57ffd2[_0x78bd('0x43')],_0x57ffd2[_0x78bd('0x41')]);_0x380235['attributes']=_['intersection'](_0x57ffd2[_0x78bd('0x43')],qs['fields'](_0x522c1a[_0x78bd('0x41')][_0x78bd('0x46')]));_0x380235[_0x78bd('0x44')]=_0x380235[_0x78bd('0x44')][_0x78bd('0x47')]?_0x380235[_0x78bd('0x44')]:_0x57ffd2[_0x78bd('0x43')];_0x380235[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x522c1a[_0x78bd('0x41')][_0x78bd('0x4a')]);_0x380235[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_[_0x78bd('0x4b')](_0x522c1a['query'],_0x57ffd2[_0x78bd('0x42')]));if(_0x522c1a[_0x78bd('0x41')][_0x78bd('0x30')]){_0x380235['where']=_[_0x78bd('0x4d')](_0x380235[_0x78bd('0x4c')],{'$or':_[_0x78bd('0x32')](_0x380235[_0x78bd('0x44')],function(_0x3733ef){var _0x390547={};_0x390547[_0x3733ef]={'$like':'%'+_0x522c1a[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x390547;})});}_0x380235=_[_0x78bd('0x4d')]({},_0x380235,_0x522c1a[_0x78bd('0x4e')]);return _0x563a5a[_0x78bd('0x9b')](_0x380235);}})[_0x78bd('0x2b')](function(_0x24defa){if(_0x24defa){_0x1a2acd=_0x24defa[_0x78bd('0x47')];if(!_0x522c1a[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x380235[_0x78bd('0x49')]=qs[_0x78bd('0x49')](_0x522c1a[_0x78bd('0x41')][_0x78bd('0x49')]);_0x380235['offset']=qs['offset'](_0x522c1a['query'][_0x78bd('0x21')]);}return _0x563a5a[_0x78bd('0x9b')](_0x380235);}})['then'](function(_0x1eab11){if(_0x1eab11){return _0x1eab11?{'count':_0x1a2acd,'rows':_0x1eab11}:null;}})[_0x78bd('0x2b')](respondWithResult(_0x5749a2,null))[_0x78bd('0x5d')](handleError(_0x5749a2,null));};exports[_0x78bd('0x9c')]=function(_0x42d93a,_0x32888e,_0x1f4c1b){var _0x4848e6={};var _0x2ff5f5={};var _0x6386a4;var _0x32369f;return db[_0x78bd('0x3d')]['findOne']({'where':{'id':_0x42d93a[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x32888e,null))[_0x78bd('0x2b')](function(_0x250fb7){if(_0x250fb7){_0x6386a4=_0x250fb7;_0x2ff5f5[_0x78bd('0x43')]=_['keys'](db['UserVoiceQueueRt'][_0x78bd('0x3e')]);_0x2ff5f5[_0x78bd('0x41')]=_['keys'](_0x42d93a['query']);_0x2ff5f5[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x2ff5f5[_0x78bd('0x43')],_0x2ff5f5[_0x78bd('0x41')]);_0x4848e6[_0x78bd('0x44')]=_[_0x78bd('0x45')](_0x2ff5f5[_0x78bd('0x43')],qs[_0x78bd('0x46')](_0x42d93a[_0x78bd('0x41')][_0x78bd('0x46')]));_0x4848e6['attributes']=_0x4848e6['attributes']['length']?_0x4848e6[_0x78bd('0x44')]:_0x2ff5f5['model'];_0x4848e6[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x42d93a[_0x78bd('0x41')][_0x78bd('0x4a')]);_0x4848e6[_0x78bd('0x4c')]=qs[_0x78bd('0x42')](_['pick'](_0x42d93a[_0x78bd('0x41')],_0x2ff5f5[_0x78bd('0x42')]));if(_0x42d93a[_0x78bd('0x41')][_0x78bd('0x30')]){_0x4848e6[_0x78bd('0x4c')]=_[_0x78bd('0x4d')](_0x4848e6['where'],{'$or':_['map'](_0x4848e6[_0x78bd('0x44')],function(_0xa64fd4){var _0x47e052={};_0x47e052[_0xa64fd4]={'$like':'%'+_0x42d93a['query'][_0x78bd('0x30')]+'%'};return _0x47e052;})});}_0x4848e6=_[_0x78bd('0x4d')]({},_0x4848e6,_0x42d93a[_0x78bd('0x4e')]);return _0x6386a4['getMembers'](_0x4848e6);}})[_0x78bd('0x2b')](function(_0x2bec4a){if(_0x2bec4a){_0x32369f=_0x2bec4a[_0x78bd('0x47')];if(!_0x42d93a[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x4848e6[_0x78bd('0x49')]=qs['limit'](_0x42d93a[_0x78bd('0x41')][_0x78bd('0x49')]);_0x4848e6[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x42d93a[_0x78bd('0x41')]['offset']);}return _0x6386a4['getMembers'](_0x4848e6);}})[_0x78bd('0x2b')](function(_0x4995c4){return _0x4995c4?{'count':_0x32369f,'rows':_0x4995c4}:null;})[_0x78bd('0x2b')](respondWithResult(_0x32888e,null))['catch'](handleError(_0x32888e,null));};exports[_0x78bd('0x9d')]=function(_0x12af4e,_0xd14eca,_0x460c9a){var _0x4141d5={};var _0x31b504={};var _0x4fb6eb;var _0x15d3e6;return db[_0x78bd('0x3d')][_0x78bd('0x64')]({'where':{'id':_0x12af4e[_0x78bd('0x54')]['id']}})['then'](handleEntityNotFound(_0xd14eca,null))[_0x78bd('0x2b')](function(_0x15cddd){if(_0x15cddd){_0x4fb6eb=_0x15cddd;_0x31b504[_0x78bd('0x43')]=_[_0x78bd('0x40')](db[_0x78bd('0x9e')][_0x78bd('0x3e')]);_0x31b504[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x12af4e['query']);_0x31b504['filters']=_[_0x78bd('0x45')](_0x31b504[_0x78bd('0x43')],_0x31b504['query']);_0x4141d5['attributes']=_['intersection'](_0x31b504['model'],qs['fields'](_0x12af4e[_0x78bd('0x41')][_0x78bd('0x46')]));_0x4141d5[_0x78bd('0x44')]=_0x4141d5['attributes'][_0x78bd('0x47')]?_0x4141d5[_0x78bd('0x44')]:_0x31b504[_0x78bd('0x43')];_0x4141d5[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x12af4e['query'][_0x78bd('0x4a')]);_0x4141d5[_0x78bd('0x4c')]=qs['filters'](_[_0x78bd('0x4b')](_0x12af4e[_0x78bd('0x41')],_0x31b504['filters']));if(_0x12af4e[_0x78bd('0x41')]['filter']){_0x4141d5['where']=_[_0x78bd('0x4d')](_0x4141d5[_0x78bd('0x4c')],{'$or':_['map'](_0x4141d5[_0x78bd('0x44')],function(_0x4d1306){var _0x2bad52={};_0x2bad52[_0x4d1306]={'$like':'%'+_0x12af4e[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x2bad52;})});}_0x4141d5=_['merge']({},_0x4141d5,_0x12af4e[_0x78bd('0x4e')]);return _0x4fb6eb[_0x78bd('0x9d')](_0x4141d5);}})[_0x78bd('0x2b')](function(_0x12365a){if(_0x12365a){_0x15d3e6=_0x12365a[_0x78bd('0x47')];if(!_0x12af4e['query'][_0x78bd('0x66')](_0x78bd('0x48'))){_0x4141d5[_0x78bd('0x49')]=qs['limit'](_0x12af4e[_0x78bd('0x41')][_0x78bd('0x49')]);_0x4141d5[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x12af4e[_0x78bd('0x41')][_0x78bd('0x21')]);}return _0x4fb6eb['getLists'](_0x4141d5);}})['then'](function(_0x51654d){if(_0x51654d){return _0x51654d?{'count':_0x15d3e6,'rows':_0x51654d}:null;}})['then'](respondWithResult(_0xd14eca,null))[_0x78bd('0x5d')](handleError(_0xd14eca,null));};exports['addLists']=function(_0x4961d4,_0xafec3b,_0xb1c9c9){var _0x219f74,_0x4b9af1;return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x4961d4[_0x78bd('0x54')]['id']}})['then'](handleEntityNotFound(_0xafec3b,null))[_0x78bd('0x2b')](function(_0x5c23a4){if(_0x5c23a4){_0x4b9af1=_0x5c23a4;return _0x5c23a4[_0x78bd('0x9f')](_0x4961d4[_0x78bd('0x56')][_0x78bd('0x83')],_[_0x78bd('0x5f')](_0x4961d4[_0x78bd('0x56')],['ids','id'])||{});}return null;})[_0x78bd('0x97')](function(_0x3e4199){var _0x54e91b;_0x219f74=_0x3e4199||[];var _0x147f90=[];if(_0x3e4199){for(var _0x1f3a40=0x0;_0x1f3a40<_0x3e4199[_0x78bd('0x47')];_0x1f3a40+=0x1){var _0x57898f=_0x3e4199[_0x1f3a40][_0x78bd('0x58')]({'plain':!![]});_0x4b9af1[_0x78bd('0xa0')]=_0x4961d4['body'][_0x78bd('0xa0')]?_0x4961d4[_0x78bd('0x56')][_0x78bd('0xa0')]:_0x4b9af1[_0x78bd('0xa0')];switch(_0x4b9af1['dialCheckDuplicateType']){case _0x78bd('0xa1'):_0x54e91b=squel[_0x78bd('0xa2')]()[_0x78bd('0xa3')](_0x78bd('0xa4'))[_0x78bd('0xa5')]([_0x78bd('0xa6'),_0x78bd('0xa7'),_0x78bd('0xa8'),'ListId',_0x78bd('0x68'),_0x78bd('0x60'),_0x78bd('0x61')],squel[_0x78bd('0x85')]()[_0x78bd('0xa9')](_0x78bd('0xa6'),_0x78bd('0xa6'))['field'](_0x78bd('0xaa'),_0x78bd('0xa7'))['field']('id',_0x78bd('0xa8'))[_0x78bd('0xa9')](_0x57898f[_0x78bd('0xab')][_0x78bd('0x8d')](),'ListId')[_0x78bd('0xa9')](_0x4961d4[_0x78bd('0x54')]['id'][_0x78bd('0x8d')](),_0x78bd('0x68'))['field'](_0x78bd('0xaa'),_0x78bd('0x60'))[_0x78bd('0xa9')](_0x78bd('0xaa'),_0x78bd('0x61'))['from'](_0x78bd('0xac'))['where'](_0x78bd('0xad'))['where']('ListId\x20=\x20?',_0x57898f['CmListId']['toString']())[_0x78bd('0x4c')](_0x78bd('0xae'))[_0x78bd('0x4c')](_0x78bd('0xaf'),squel['select']()[_0x78bd('0xa9')](_0x78bd('0xb0'))['from']('cm_hopper_final')[_0x78bd('0x4c')](_0x78bd('0x8a'),_0x4961d4[_0x78bd('0x54')]['id'][_0x78bd('0x8d')]()))[_0x78bd('0x4c')](_0x78bd('0xaf'),squel[_0x78bd('0x85')]()['field']('COALESCE(phone,\x27\x27)')[_0x78bd('0xb1')](_0x78bd('0xa4'))[_0x78bd('0x4c')]('VoiceQueueId\x20=\x20?',_0x4961d4[_0x78bd('0x54')]['id'][_0x78bd('0x8d')]())))[_0x78bd('0x8d')]();break;case _0x78bd('0xb2'):_0x54e91b=squel['insert']()[_0x78bd('0xa3')](_0x78bd('0xa4'))['fromQuery']([_0x78bd('0xa6'),_0x78bd('0xa7'),'ContactId',_0x78bd('0xb3'),'VoiceQueueId',_0x78bd('0x60'),_0x78bd('0x61')],squel['select']()[_0x78bd('0xa9')]('phone',_0x78bd('0xa6'))['field'](_0x78bd('0xaa'),_0x78bd('0xa7'))[_0x78bd('0xa9')]('id','ContactId')[_0x78bd('0xa9')](_0x57898f['CmListId']['toString'](),_0x78bd('0xb3'))['field'](_0x4961d4['params']['id']['toString'](),_0x78bd('0x68'))['field'](_0x78bd('0xaa'),'createdAt')['field'](_0x78bd('0xaa'),_0x78bd('0x61'))[_0x78bd('0xb1')]('cm_contacts')[_0x78bd('0x4c')](_0x78bd('0xad'))[_0x78bd('0x4c')](_0x78bd('0xb4'),_0x57898f['CmListId'][_0x78bd('0x8d')]())[_0x78bd('0x4c')](_0x78bd('0xae'))[_0x78bd('0x4c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x78bd('0x85')]()[_0x78bd('0xa9')]('COALESCE(phone,\x27\x27)')[_0x78bd('0xb1')](_0x78bd('0xa4'))[_0x78bd('0x4c')](_0x78bd('0x8a'),_0x4961d4[_0x78bd('0x54')]['id']['toString']())))[_0x78bd('0x8d')]();break;default:_0x54e91b=squel[_0x78bd('0xa2')]()[_0x78bd('0xa3')](_0x78bd('0xa4'))[_0x78bd('0xa5')]([_0x78bd('0xa6'),_0x78bd('0xa7'),'ContactId',_0x78bd('0xb3'),'VoiceQueueId',_0x78bd('0x60'),_0x78bd('0x61')],squel[_0x78bd('0x85')]()[_0x78bd('0xa9')](_0x78bd('0xa6'),'phone')['field'](_0x78bd('0xaa'),'scheduledAt')[_0x78bd('0xa9')]('id',_0x78bd('0xa8'))[_0x78bd('0xa9')](_0x57898f[_0x78bd('0xab')][_0x78bd('0x8d')](),_0x78bd('0xb3'))[_0x78bd('0xa9')](_0x4961d4[_0x78bd('0x54')]['id']['toString'](),_0x78bd('0x68'))['field'](_0x78bd('0xaa'),_0x78bd('0x60'))['field']('NOW()',_0x78bd('0x61'))['from'](_0x78bd('0xac'))[_0x78bd('0x4c')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x57898f[_0x78bd('0xab')][_0x78bd('0x8d')]())[_0x78bd('0x4c')](_0x78bd('0xae')))['toString']();}_0x147f90[_0x78bd('0xb5')](db['sequelize'][_0x78bd('0x41')](_0x54e91b));}return BPromise[_0x78bd('0x9a')](_0x147f90);}})[_0x78bd('0x2b')](function(){return _0x219f74;})[_0x78bd('0x2b')](respondWithResult(_0xafec3b,null))[_0x78bd('0x5d')](handleError(_0xafec3b,null));};exports[_0x78bd('0xb6')]=function(_0x178195,_0x41f396,_0x1a3610){return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x178195['params']['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x41f396,null))[_0x78bd('0x2b')](function(_0xa80f4b){if(_0xa80f4b){return _0xa80f4b[_0x78bd('0xb6')](_0x178195[_0x78bd('0x41')]['ids']);}})[_0x78bd('0x2b')](function(_0x186509){if(_0x186509){return db[_0x78bd('0x65')]['destroy']({'where':{'ListId':_0x178195['query']['ids'],'VoiceQueueId':_0x178195[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](function(){return _0x186509;});}})[_0x78bd('0x2b')](respondWithStatusCode(_0x41f396,null))['catch'](handleError(_0x41f396,null));};exports['getBlackLists']=function(_0x46051a,_0x12cc05,_0x3c27be){var _0x5d8928={};var _0x407e03={};var _0x2c9349;var _0x426ce3;return db[_0x78bd('0x3d')]['findOne']({'where':{'id':_0x46051a[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x12cc05,null))['then'](function(_0x54fa26){if(_0x54fa26){_0x2c9349=_0x54fa26;_0x407e03['model']=_['keys'](db[_0x78bd('0x9e')][_0x78bd('0x3e')]);_0x407e03[_0x78bd('0x41')]=_[_0x78bd('0x40')](_0x46051a[_0x78bd('0x41')]);_0x407e03[_0x78bd('0x42')]=_[_0x78bd('0x45')](_0x407e03[_0x78bd('0x43')],_0x407e03[_0x78bd('0x41')]);_0x5d8928['attributes']=_[_0x78bd('0x45')](_0x407e03[_0x78bd('0x43')],qs['fields'](_0x46051a[_0x78bd('0x41')]['fields']));_0x5d8928[_0x78bd('0x44')]=_0x5d8928[_0x78bd('0x44')][_0x78bd('0x47')]?_0x5d8928[_0x78bd('0x44')]:_0x407e03['model'];_0x5d8928[_0x78bd('0x67')]=qs[_0x78bd('0x4a')](_0x46051a[_0x78bd('0x41')][_0x78bd('0x4a')]);_0x5d8928['where']=qs[_0x78bd('0x42')](_['pick'](_0x46051a[_0x78bd('0x41')],_0x407e03[_0x78bd('0x42')]));if(_0x46051a[_0x78bd('0x41')]['filter']){_0x5d8928[_0x78bd('0x4c')]=_[_0x78bd('0x4d')](_0x5d8928['where'],{'$or':_['map'](_0x5d8928[_0x78bd('0x44')],function(_0x5db26b){var _0x56abc0={};_0x56abc0[_0x5db26b]={'$like':'%'+_0x46051a[_0x78bd('0x41')][_0x78bd('0x30')]+'%'};return _0x56abc0;})});}_0x5d8928=_[_0x78bd('0x4d')]({},_0x5d8928,_0x46051a[_0x78bd('0x4e')]);return _0x2c9349[_0x78bd('0xb7')](_0x5d8928);}})['then'](function(_0x30e9d0){if(_0x30e9d0){_0x426ce3=_0x30e9d0['length'];if(!_0x46051a[_0x78bd('0x41')][_0x78bd('0x66')](_0x78bd('0x48'))){_0x5d8928[_0x78bd('0x49')]=qs['limit'](_0x46051a[_0x78bd('0x41')]['limit']);_0x5d8928[_0x78bd('0x21')]=qs[_0x78bd('0x21')](_0x46051a[_0x78bd('0x41')][_0x78bd('0x21')]);}return _0x2c9349[_0x78bd('0xb7')](_0x5d8928);}})[_0x78bd('0x2b')](function(_0xd7624a){if(_0xd7624a){return _0xd7624a?{'count':_0x426ce3,'rows':_0xd7624a}:null;}})[_0x78bd('0x2b')](respondWithResult(_0x12cc05,null))[_0x78bd('0x5d')](handleError(_0x12cc05,null));};exports['addBlackLists']=function(_0x5ab434,_0x46a9f5,_0x20ebcc){var _0x2bad30,_0x350848;return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x5ab434[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x46a9f5,null))[_0x78bd('0x2b')](function(_0x541e71){if(_0x541e71){_0x350848=_0x541e71;return _0x541e71[_0x78bd('0xb8')](_0x5ab434[_0x78bd('0x56')][_0x78bd('0x83')],_[_0x78bd('0x5f')](_0x5ab434[_0x78bd('0x56')],[_0x78bd('0x83'),'id'])||{});}return null;})[_0x78bd('0x97')](function(_0xf95f0b){var _0xc39601;_0x2bad30=_0xf95f0b||[];var _0x188952=[];if(_0xf95f0b){for(var _0x2ae76a=0x0;_0x2ae76a<_0xf95f0b[_0x78bd('0x47')];_0x2ae76a+=0x1){var _0x5cbcd4=_0xf95f0b[_0x2ae76a][_0x78bd('0x58')]({'plain':!![]});_0xc39601=squel['insert']()[_0x78bd('0xa3')]('cm_hopper_black')[_0x78bd('0xa5')]([_0x78bd('0xa6'),_0x78bd('0xa8'),_0x78bd('0xb3'),_0x78bd('0x68'),_0x78bd('0x60'),_0x78bd('0x61')],squel[_0x78bd('0x85')]()[_0x78bd('0xa9')](_0x78bd('0xa6'),_0x78bd('0xa6'))[_0x78bd('0xa9')]('id',_0x78bd('0xa8'))[_0x78bd('0xa9')](_0x5cbcd4[_0x78bd('0xab')][_0x78bd('0x8d')](),'ListId')[_0x78bd('0xa9')](_0x5ab434[_0x78bd('0x54')]['id']['toString'](),_0x78bd('0x68'))['field'](_0x78bd('0xaa'),'createdAt')[_0x78bd('0xa9')](_0x78bd('0xaa'),_0x78bd('0x61'))[_0x78bd('0xb1')](_0x78bd('0xac'))[_0x78bd('0x4c')](_0x78bd('0xad'))[_0x78bd('0x4c')]('ListId\x20=\x20?',_0x5cbcd4['CmListId'][_0x78bd('0x8d')]())[_0x78bd('0x4c')](_0x78bd('0xae')))['toString']();_0x188952[_0x78bd('0xb5')](db[_0x78bd('0x77')][_0x78bd('0x41')](_0xc39601));}return BPromise[_0x78bd('0x9a')](_0x188952);}})[_0x78bd('0x2b')](function(){return _0x2bad30;})[_0x78bd('0x2b')](respondWithResult(_0x46a9f5,null))[_0x78bd('0x5d')](handleError(_0x46a9f5,null));};exports[_0x78bd('0xb9')]=function(_0x3c52b6,_0x4430f7,_0x46ee95){return db[_0x78bd('0x3d')][_0x78bd('0x35')]({'where':{'id':_0x3c52b6['params']['id']}})[_0x78bd('0x2b')](handleEntityNotFound(_0x4430f7,null))['then'](function(_0x52269f){if(_0x52269f){return _0x52269f[_0x78bd('0xb9')](_0x3c52b6['query']['ids']);}})['then'](function(_0x152f9a){if(_0x152f9a){return db[_0x78bd('0x6d')]['destroy']({'where':{'ListId':_0x3c52b6[_0x78bd('0x41')][_0x78bd('0x83')],'VoiceQueueId':_0x3c52b6[_0x78bd('0x54')]['id']}})[_0x78bd('0x2b')](function(){return _0x152f9a;});}})['then'](respondWithStatusCode(_0x4430f7,null))[_0x78bd('0x5d')](handleError(_0x4430f7,null));};
\ No newline at end of file
index cb4c26d..b30214e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc13=['save','update','emit','exports','events','VoiceQueue'];(function(_0x5b967e,_0x58e9ab){var _0x2f99b2=function(_0x3285f2){while(--_0x3285f2){_0x5b967e['push'](_0x5b967e['shift']());}};_0x2f99b2(++_0x58e9ab);}(_0xcc13,0x6a));var _0x3cc1=function(_0x13c4ad,_0x323de5){_0x13c4ad=_0x13c4ad-0x0;var _0x138309=_0xcc13[_0x13c4ad];return _0x138309;};'use strict';var EventEmitter=require(_0x3cc1('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x3cc1('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3cc1('0x2'),'afterUpdate':_0x3cc1('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5230a9){return function(_0x1017f1,_0x1b39aa,_0x2594c4){VoiceQueueEvents[_0x3cc1('0x4')](_0x5230a9+':'+_0x1017f1['id'],_0x1017f1);VoiceQueueEvents[_0x3cc1('0x4')](_0x5230a9,_0x1017f1);_0x2594c4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x3cc1('0x5')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x0a29=['exports','events','setMaxListeners','save','remove','emit','hook'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x0a29,0x182));var _0x90a2=function(_0x206d88,_0x4fb159){_0x206d88=_0x206d88-0x0;var _0x5bb9bc=_0x0a29[_0x206d88];return _0x5bb9bc;};'use strict';var EventEmitter=require(_0x90a2('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x90a2('0x1')](0x0);var events={'afterCreate':_0x90a2('0x2'),'afterUpdate':'update','afterDestroy':_0x90a2('0x3')};function emitEvent(_0x40da06){return function(_0x5e4e0d,_0x4cc2b3,_0x18af8a){VoiceQueueEvents[_0x90a2('0x4')](_0x40da06+':'+_0x5e4e0d['id'],_0x5e4e0d);VoiceQueueEvents[_0x90a2('0x4')](_0x40da06,_0x5e4e0d);_0x18af8a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x90a2('0x5')](e,emitEvent(event));}}module[_0x90a2('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index b1898b0..a16ed28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x294d71,_0xb29d72){var _0x36648f=function(_0x2f9c12){while(--_0x2f9c12){_0x294d71['push'](_0x294d71['shift']());}};_0x36648f(++_0xb29d72);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x51d346,_0x427010){var _0x31f307=function(_0x35acf6){while(--_0x35acf6){_0x51d346['push'](_0x51d346['shift']());}};_0x31f307(++_0x427010);}(_0x9c44,0x178));var _0x49c4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 688592f..2e6f41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe054=['catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','./voiceQueue.socket','register','request','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','GetVoiceQueue','VoiceQueue','findAll','options','where','attributes','limit','include','model','map','ShowVoiceQueue','find','raw','then'];(function(_0x39608a,_0x3bb7fd){var _0x5eb386=function(_0x465a39){while(--_0x465a39){_0x39608a['push'](_0x39608a['shift']());}};_0x5eb386(++_0x3bb7fd);}(_0xe054,0x172));var _0x4e05=function(_0x315aa8,_0x262f9c){_0x315aa8=_0x315aa8-0x0;var _0x20f758=_0xe054[_0x315aa8];return _0x20f758;};'use strict';var _=require(_0x4e05('0x0'));var util=require(_0x4e05('0x1'));var moment=require('moment');var BPromise=require(_0x4e05('0x2'));var rs=require(_0x4e05('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e05('0x4'))['db'];var utils=require(_0x4e05('0x5'));var logger=require(_0x4e05('0x6'))(_0x4e05('0x7'));var config=require(_0x4e05('0x8'));var jayson=require(_0x4e05('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x4e05('0xa')]=_[_0x4e05('0xb')](config['redis'],{'host':_0x4e05('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4e05('0xa')]));require(_0x4e05('0xd'))[_0x4e05('0xe')](socket);function respondWithRpcPromise(_0x234d67,_0x145dea,_0x1b0990){return new BPromise(function(_0x172dd3,_0x55cbcd){return client[_0x4e05('0xf')](_0x234d67,_0x1b0990)['then'](function(_0x897100){logger[_0x4e05('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x4e05('0x11'));logger[_0x4e05('0x12')](_0x4e05('0x13'),_0x145dea,_0x4e05('0x11'),JSON[_0x4e05('0x14')](_0x897100));if(_0x897100[_0x4e05('0x15')]){if(_0x897100[_0x4e05('0x15')][_0x4e05('0x16')]===0x1f4){logger[_0x4e05('0x15')](_0x4e05('0x17'),_0x145dea,_0x897100['error'][_0x4e05('0x18')]);return _0x55cbcd(_0x897100[_0x4e05('0x15')]['message']);}logger[_0x4e05('0x15')]('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x897100[_0x4e05('0x15')][_0x4e05('0x18')]);return _0x172dd3(_0x897100['error']['message']);}else{logger[_0x4e05('0x10')](_0x4e05('0x17'),_0x145dea,_0x4e05('0x11'));_0x172dd3(_0x897100[_0x4e05('0x19')]['message']);}})['catch'](function(_0x458b96){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x145dea,_0x458b96);_0x55cbcd(_0x458b96);});});}exports[_0x4e05('0x1a')]=function(_0xcbdabb){var _0x1b4421=this;return new Promise(function(_0x32f23d,_0x5e885f){return db[_0x4e05('0x1b')][_0x4e05('0x1c')]({'raw':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb['options']['raw']===undefined?!![]:![]:!![],'where':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x1e')]||null:null,'attributes':_0xcbdabb['options']?_0xcbdabb['options'][_0x4e05('0x1f')]||null:null,'limit':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x20')]||null:null,'include':_0xcbdabb[_0x4e05('0x1d')]?_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x21')]?_['map'](_0xcbdabb[_0x4e05('0x1d')][_0x4e05('0x21')],function(_0x489b43){return{'model':db[_0x489b43[_0x4e05('0x22')]],'as':_0x489b43['as'],'attributes':_0x489b43[_0x4e05('0x1f')],'include':_0x489b43['include']?_[_0x4e05('0x23')](_0x489b43[_0x4e05('0x21')],function(_0x5393bb){return{'model':db[_0x5393bb[_0x4e05('0x22')]],'as':_0x5393bb['as'],'attributes':_0x5393bb[_0x4e05('0x1f')],'include':_0x5393bb[_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x5393bb[_0x4e05('0x21')],function(_0x47a5df){return{'model':db[_0x47a5df[_0x4e05('0x22')]],'as':_0x47a5df['as'],'attributes':_0x47a5df['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x21e249){logger[_0x4e05('0x10')]('GetVoiceQueue',_0xcbdabb);logger[_0x4e05('0x12')](_0x4e05('0x1a'),_0xcbdabb,JSON[_0x4e05('0x14')](_0x21e249));_0x32f23d(_0x21e249);})['catch'](function(_0x2be5bb){logger[_0x4e05('0x15')](_0x4e05('0x1a'),_0x2be5bb[_0x4e05('0x18')],_0xcbdabb);_0x5e885f(_0x1b4421[_0x4e05('0x15')](0x1f4,_0x2be5bb[_0x4e05('0x18')]));});});};exports[_0x4e05('0x24')]=function(_0x3548e1){var _0xf105a8=this;return new Promise(function(_0x447e3d,_0x1b1e64){return db[_0x4e05('0x1b')][_0x4e05('0x25')]({'raw':_0x3548e1[_0x4e05('0x1d')]?_0x3548e1['options'][_0x4e05('0x26')]===undefined?!![]:![]:!![],'where':_0x3548e1['options']?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x1e')]||null:null,'attributes':_0x3548e1[_0x4e05('0x1d')]?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x1f')]||null:null,'include':_0x3548e1['options']?_0x3548e1[_0x4e05('0x1d')][_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x3548e1[_0x4e05('0x1d')]['include'],function(_0x548ed7){return{'model':db[_0x548ed7[_0x4e05('0x22')]],'as':_0x548ed7['as'],'attributes':_0x548ed7['attributes'],'include':_0x548ed7[_0x4e05('0x21')]?_[_0x4e05('0x23')](_0x548ed7[_0x4e05('0x21')],function(_0x14ba6b){return{'model':db[_0x14ba6b[_0x4e05('0x22')]],'as':_0x14ba6b['as'],'attributes':_0x14ba6b[_0x4e05('0x1f')],'include':_0x14ba6b['include']?_[_0x4e05('0x23')](_0x14ba6b[_0x4e05('0x21')],function(_0x527bb1){return{'model':db[_0x527bb1[_0x4e05('0x22')]],'as':_0x527bb1['as'],'attributes':_0x527bb1[_0x4e05('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e05('0x27')](function(_0x2cc300){logger[_0x4e05('0x10')](_0x4e05('0x24'),_0x3548e1);logger[_0x4e05('0x12')]('ShowVoiceQueue',_0x3548e1,JSON[_0x4e05('0x14')](_0x2cc300));_0x447e3d(_0x2cc300);})[_0x4e05('0x28')](function(_0x404c9b){logger[_0x4e05('0x15')](_0x4e05('0x24'),_0x404c9b[_0x4e05('0x18')],_0x3548e1);_0x1b1e64(_0xf105a8['error'](0x1f4,_0x404c9b[_0x4e05('0x18')]));});});};
\ No newline at end of file
+var _0xe927=['request\x20sent','stringify','error','message','info','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowVoiceQueue','lodash','util','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','request','then','VoiceQueue,\x20%s,\x20%s'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xe927,0xec));var _0x7e92=function(_0xb26065,_0x36df08){_0xb26065=_0xb26065-0x0;var _0x974dce=_0xe927[_0xb26065];return _0x974dce;};'use strict';var _=require(_0x7e92('0x0'));var util=require(_0x7e92('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7e92('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7e92('0x3'))('rpc');var config=require(_0x7e92('0x4'));var jayson=require(_0x7e92('0x5'));var client=jayson[_0x7e92('0x6')][_0x7e92('0x7')]({'port':0x232a});config[_0x7e92('0x8')]=_[_0x7e92('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7e92('0xa'))(new Redis(config['redis']));require(_0x7e92('0xb'))[_0x7e92('0xc')](socket);function respondWithRpcPromise(_0xa39cca,_0x2d795f,_0x5719f2){return new BPromise(function(_0x167af7,_0x3dfeed){return client[_0x7e92('0xd')](_0xa39cca,_0x5719f2)[_0x7e92('0xe')](function(_0x3efbc1){logger['info'](_0x7e92('0xf'),_0x2d795f,_0x7e92('0x10'));logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x2d795f,_0x7e92('0x10'),JSON[_0x7e92('0x11')](_0x3efbc1));if(_0x3efbc1[_0x7e92('0x12')]){if(_0x3efbc1['error']['code']===0x1f4){logger['error'](_0x7e92('0xf'),_0x2d795f,_0x3efbc1['error'][_0x7e92('0x13')]);return _0x3dfeed(_0x3efbc1[_0x7e92('0x12')][_0x7e92('0x13')]);}logger[_0x7e92('0x12')](_0x7e92('0xf'),_0x2d795f,_0x3efbc1[_0x7e92('0x12')][_0x7e92('0x13')]);return _0x167af7(_0x3efbc1[_0x7e92('0x12')][_0x7e92('0x13')]);}else{logger[_0x7e92('0x14')](_0x7e92('0xf'),_0x2d795f,_0x7e92('0x10'));_0x167af7(_0x3efbc1[_0x7e92('0x15')][_0x7e92('0x13')]);}})[_0x7e92('0x16')](function(_0x281b6f){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x2d795f,_0x281b6f);_0x3dfeed(_0x281b6f);});});}exports[_0x7e92('0x17')]=function(_0x11fc1f){var _0x24dc5e=this;return new Promise(function(_0x58f794,_0x1ce234){return db[_0x7e92('0x18')][_0x7e92('0x19')]({'raw':_0x11fc1f[_0x7e92('0x1a')]?_0x11fc1f['options'][_0x7e92('0x1b')]===undefined?!![]:![]:!![],'where':_0x11fc1f[_0x7e92('0x1a')]?_0x11fc1f[_0x7e92('0x1a')][_0x7e92('0x1c')]||null:null,'attributes':_0x11fc1f[_0x7e92('0x1a')]?_0x11fc1f[_0x7e92('0x1a')][_0x7e92('0x1d')]||null:null,'limit':_0x11fc1f[_0x7e92('0x1a')]?_0x11fc1f[_0x7e92('0x1a')][_0x7e92('0x1e')]||null:null,'include':_0x11fc1f[_0x7e92('0x1a')]?_0x11fc1f[_0x7e92('0x1a')][_0x7e92('0x1f')]?_[_0x7e92('0x20')](_0x11fc1f['options'][_0x7e92('0x1f')],function(_0x516f7e){return{'model':db[_0x516f7e[_0x7e92('0x21')]],'as':_0x516f7e['as'],'attributes':_0x516f7e[_0x7e92('0x1d')],'include':_0x516f7e[_0x7e92('0x1f')]?_[_0x7e92('0x20')](_0x516f7e[_0x7e92('0x1f')],function(_0x1b815f){return{'model':db[_0x1b815f[_0x7e92('0x21')]],'as':_0x1b815f['as'],'attributes':_0x1b815f[_0x7e92('0x1d')],'include':_0x1b815f['include']?_['map'](_0x1b815f[_0x7e92('0x1f')],function(_0x5b0718){return{'model':db[_0x5b0718[_0x7e92('0x21')]],'as':_0x5b0718['as'],'attributes':_0x5b0718[_0x7e92('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7e92('0xe')](function(_0xeaecb){logger[_0x7e92('0x14')](_0x7e92('0x17'),_0x11fc1f);logger[_0x7e92('0x22')]('GetVoiceQueue',_0x11fc1f,JSON[_0x7e92('0x11')](_0xeaecb));_0x58f794(_0xeaecb);})[_0x7e92('0x16')](function(_0x3e9b04){logger[_0x7e92('0x12')](_0x7e92('0x17'),_0x3e9b04[_0x7e92('0x13')],_0x11fc1f);_0x1ce234(_0x24dc5e[_0x7e92('0x12')](0x1f4,_0x3e9b04[_0x7e92('0x13')]));});});};exports[_0x7e92('0x23')]=function(_0xa0c159){var _0x23c397=this;return new Promise(function(_0x3e655a,_0x3edd8b){return db[_0x7e92('0x18')]['find']({'raw':_0xa0c159[_0x7e92('0x1a')]?_0xa0c159[_0x7e92('0x1a')][_0x7e92('0x1b')]===undefined?!![]:![]:!![],'where':_0xa0c159[_0x7e92('0x1a')]?_0xa0c159[_0x7e92('0x1a')][_0x7e92('0x1c')]||null:null,'attributes':_0xa0c159[_0x7e92('0x1a')]?_0xa0c159[_0x7e92('0x1a')]['attributes']||null:null,'include':_0xa0c159[_0x7e92('0x1a')]?_0xa0c159['options'][_0x7e92('0x1f')]?_['map'](_0xa0c159[_0x7e92('0x1a')]['include'],function(_0x502273){return{'model':db[_0x502273[_0x7e92('0x21')]],'as':_0x502273['as'],'attributes':_0x502273[_0x7e92('0x1d')],'include':_0x502273[_0x7e92('0x1f')]?_[_0x7e92('0x20')](_0x502273[_0x7e92('0x1f')],function(_0xd7674c){return{'model':db[_0xd7674c['model']],'as':_0xd7674c['as'],'attributes':_0xd7674c['attributes'],'include':_0xd7674c[_0x7e92('0x1f')]?_[_0x7e92('0x20')](_0xd7674c[_0x7e92('0x1f')],function(_0x5a7f15){return{'model':db[_0x5a7f15[_0x7e92('0x21')]],'as':_0x5a7f15['as'],'attributes':_0x5a7f15['attributes']};}):[]};}):[]};}):[]:[]})[_0x7e92('0xe')](function(_0x35b0a1){logger[_0x7e92('0x14')](_0x7e92('0x23'),_0xa0c159);logger[_0x7e92('0x22')](_0x7e92('0x23'),_0xa0c159,JSON[_0x7e92('0x11')](_0x35b0a1));_0x3e655a(_0x35b0a1);})['catch'](function(_0x4795cf){logger[_0x7e92('0x12')]('ShowVoiceQueue',_0x4795cf[_0x7e92('0x13')],_0xa0c159);_0x3edd8b(_0x23c397[_0x7e92('0x12')](0x1f4,_0x4795cf[_0x7e92('0x13')]));});});};
\ No newline at end of file
index fb527da..a0aff64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1abf=['save','remove','emit','removeListener','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x70cf5c,_0x2b24a0){var _0xb8f307=function(_0x441d58){while(--_0x441d58){_0x70cf5c['push'](_0x70cf5c['shift']());}};_0xb8f307(++_0x2b24a0);}(_0x1abf,0x87));var _0xf1ab=function(_0xb87f20,_0x4ae8f5){_0xb87f20=_0xb87f20-0x0;var _0x5e02bb=_0x1abf[_0xb87f20];return _0x5e02bb;};'use strict';var VoiceQueueEvents=require(_0xf1ab('0x0'));var events=[_0xf1ab('0x1'),_0xf1ab('0x2'),'update'];function createListener(_0x4850aa,_0x46b58b){return function(_0x435e33){_0x46b58b[_0xf1ab('0x3')](_0x4850aa,_0x435e33);};}function removeListener(_0xd08856,_0x271b39){return function(){VoiceQueueEvents[_0xf1ab('0x4')](_0xd08856,_0x271b39);};}exports[_0xf1ab('0x5')]=function(_0x84ec1e){for(var _0x207b99=0x0,_0x196562=events[_0xf1ab('0x6')];_0x207b99<_0x196562;_0x207b99++){var _0xee00cc=events[_0x207b99];var _0x2decef=createListener(_0xf1ab('0x7')+_0xee00cc,_0x84ec1e);VoiceQueueEvents['on'](_0xee00cc,_0x2decef);}};
\ No newline at end of file
+var _0x2f21=['removeListener','length','voiceQueue:','save','remove','update','emit'];(function(_0x310ab5,_0x4ddb25){var _0x5878ca=function(_0x528a6f){while(--_0x528a6f){_0x310ab5['push'](_0x310ab5['shift']());}};_0x5878ca(++_0x4ddb25);}(_0x2f21,0x1a0));var _0x12f2=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x2f21[_0x47aa64];return _0x549c7a;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0x12f2('0x0'),_0x12f2('0x1'),_0x12f2('0x2')];function createListener(_0x1512eb,_0x17e1ab){return function(_0x2ba82b){_0x17e1ab[_0x12f2('0x3')](_0x1512eb,_0x2ba82b);};}function removeListener(_0x5cfa0,_0x259a98){return function(){VoiceQueueEvents[_0x12f2('0x4')](_0x5cfa0,_0x259a98);};}exports['register']=function(_0x4c47ac){for(var _0x3bfb3b=0x0,_0x54cb7e=events[_0x12f2('0x5')];_0x3bfb3b<_0x54cb7e;_0x3bfb3b++){var _0x63f1d3=events[_0x3bfb3b];var _0x14aadf=createListener(_0x12f2('0x6')+_0x63f1d3,_0x4c47ac);VoiceQueueEvents['on'](_0x63f1d3,_0x14aadf);}};
\ No newline at end of file
index 221385b..7fc02fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x836f=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','show','post','create','put','/:id','delete','destroy','exports','multer','connect-timeout'];(function(_0xb7a4d5,_0x215823){var _0x1f826c=function(_0x5d5edf){while(--_0x5d5edf){_0xb7a4d5['push'](_0xb7a4d5['shift']());}};_0x1f826c(++_0x215823);}(_0x836f,0xcd));var _0xf836=function(_0x1b7413,_0x3b7298){_0x1b7413=_0x1b7413-0x0;var _0x1b0aec=_0x836f[_0x1b7413];return _0x1b0aec;};'use strict';var multer=require(_0xf836('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf836('0x1'));var express=require(_0xf836('0x2'));var router=express[_0xf836('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf836('0x4'));var interaction=require(_0xf836('0x5'));var config=require(_0xf836('0x6'));var controller=require(_0xf836('0x7'));router[_0xf836('0x8')]('/',auth[_0xf836('0x9')](),controller[_0xf836('0xa')]);router[_0xf836('0x8')](_0xf836('0xb'),auth[_0xf836('0x9')](),controller[_0xf836('0xc')]);router[_0xf836('0x8')](_0xf836('0xd'),auth[_0xf836('0x9')](),controller[_0xf836('0xe')]);router[_0xf836('0x8')]('/:id',auth[_0xf836('0x9')](),controller[_0xf836('0xf')]);router[_0xf836('0x10')]('/',auth[_0xf836('0x9')](),controller[_0xf836('0x11')]);router[_0xf836('0x12')](_0xf836('0x13'),auth['isAuthenticated'](),controller['update']);router[_0xf836('0x14')]('/:id',auth[_0xf836('0x9')](),controller[_0xf836('0x15')]);module[_0xf836('0x16')]=router;
\ No newline at end of file
+var _0x311a=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x2aa8b5,_0x347225){var _0x2d5324=function(_0xb28f0a){while(--_0xb28f0a){_0x2aa8b5['push'](_0x2aa8b5['shift']());}};_0x2d5324(++_0x347225);}(_0x311a,0xf9));var _0xa311=function(_0x3d2eb1,_0xb980dd){_0x3d2eb1=_0x3d2eb1-0x0;var _0x4ce44d=_0x311a[_0x3d2eb1];return _0x4ce44d;};'use strict';var multer=require(_0xa311('0x0'));var util=require(_0xa311('0x1'));var path=require('path');var timeout=require(_0xa311('0x2'));var express=require(_0xa311('0x3'));var router=express['Router']();var fs_extra=require(_0xa311('0x4'));var auth=require(_0xa311('0x5'));var interaction=require(_0xa311('0x6'));var config=require(_0xa311('0x7'));var controller=require('./voiceQueueReport.controller');router['get']('/',auth[_0xa311('0x8')](),controller['index']);router[_0xa311('0x9')]('/describe',auth[_0xa311('0x8')](),controller[_0xa311('0xa')]);router[_0xa311('0x9')](_0xa311('0xb'),auth[_0xa311('0x8')](),controller[_0xa311('0xc')]);router[_0xa311('0x9')](_0xa311('0xd'),auth[_0xa311('0x8')](),controller[_0xa311('0xe')]);router[_0xa311('0xf')]('/',auth[_0xa311('0x8')](),controller[_0xa311('0x10')]);router[_0xa311('0x11')](_0xa311('0xd'),auth[_0xa311('0x8')](),controller['update']);router[_0xa311('0x12')](_0xa311('0xd'),auth[_0xa311('0x8')](),controller[_0xa311('0x13')]);module[_0xa311('0x14')]=router;
\ No newline at end of file
index fa2f86c..e6778ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a58=['exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'];(function(_0x22d300,_0x23c213){var _0x4d2a92=function(_0x439c61){while(--_0x439c61){_0x22d300['push'](_0x22d300['shift']());}};_0x4d2a92(++_0x23c213);}(_0x1a58,0x180));var _0x81a5=function(_0x431800,_0x321eb4){_0x431800=_0x431800-0x0;var _0x3bd646=_0x1a58[_0x431800];return _0x3bd646;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x81a5('0x0')]={'type':{'type':Sequelize[_0x81a5('0x1')]},'uniqueid':{'type':Sequelize[_0x81a5('0x1')]},'calleridnum':{'type':Sequelize[_0x81a5('0x1')]},'calleridname':{'type':Sequelize[_0x81a5('0x1')]},'queue':{'type':Sequelize[_0x81a5('0x1')]},'queuecallerjoinAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x217f32){var _0x188f68=moment(_0x217f32);var _0x5e69c1=moment(this['getDataValue'](_0x81a5('0x3')))['format'](_0x81a5('0x4'));var _0x435ed4=_0x188f68[_0x81a5('0x5')](_0x5e69c1,'seconds');this[_0x81a5('0x6')](_0x81a5('0x7'),_0x217f32);this[_0x81a5('0x6')](_0x81a5('0x8'),_0x435ed4||null);}},'position':{'type':Sequelize[_0x81a5('0x9')]},'count':{'type':Sequelize[_0x81a5('0x9')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallercomplete':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x81a5('0x2')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x81a5('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x81a5('0x1')]},'connectedlinenum':{'type':Sequelize[_0x81a5('0x1')]},'connectedlinename':{'type':Sequelize[_0x81a5('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x81a5('0x1')]},'priority':{'type':Sequelize[_0x81a5('0x1')]},'holdtime':{'type':Sequelize[_0x81a5('0x9')]},'mohtime':{'type':Sequelize[_0x81a5('0x9')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x81a5('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x81a5('0x1')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x81a5('0x1')]},'disposition':{'type':Sequelize[_0x81a5('0x1')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x81a5('0x1')]},'queuecallerenterreason':{'type':Sequelize[_0x81a5('0x9')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe3af=['DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','STRING'];(function(_0x4e505a,_0x4514f6){var _0x3f2ad1=function(_0x39b274){while(--_0x39b274){_0x4e505a['push'](_0x4e505a['shift']());}};_0x3f2ad1(++_0x4514f6);}(_0xe3af,0x11a));var _0xfe3a=function(_0x3d905,_0x7b688d){_0x3d905=_0x3d905-0x0;var _0x3a990b=_0xe3af[_0x3d905];return _0x3a990b;};'use strict';var Sequelize=require(_0xfe3a('0x0'));var moment=require(_0xfe3a('0x1'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xfe3a('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xfe3a('0x3')],'set':function(_0xcf16f1){var _0x1b741d=moment(_0xcf16f1);var _0x5034c6=moment(this['getDataValue'](_0xfe3a('0x4')))['format'](_0xfe3a('0x5'));var _0x442471=_0x1b741d[_0xfe3a('0x6')](_0x5034c6,_0xfe3a('0x7'));this[_0xfe3a('0x8')](_0xfe3a('0x9'),_0xcf16f1);this[_0xfe3a('0x8')](_0xfe3a('0xa'),_0x442471||null);}},'position':{'type':Sequelize[_0xfe3a('0xb')]},'count':{'type':Sequelize[_0xfe3a('0xb')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xfe3a('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xfe3a('0x3')]},'queuecallerexit':{'type':Sequelize[_0xfe3a('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xfe3a('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0xfe3a('0x2')],'comment':_0xfe3a('0xd')},'originalposition':{'type':Sequelize[_0xfe3a('0xb')]},'channel':{'type':Sequelize[_0xfe3a('0x2')]},'connectedlinenum':{'type':Sequelize[_0xfe3a('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xfe3a('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xfe3a('0x2')]},'priority':{'type':Sequelize[_0xfe3a('0x2')]},'holdtime':{'type':Sequelize[_0xfe3a('0xb')]},'mohtime':{'type':Sequelize[_0xfe3a('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xfe3a('0x2')]},'transfer':{'type':Sequelize[_0xfe3a('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xfe3a('0x2')],'comment':_0xfe3a('0xe')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xfe3a('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index aa4d465..f7e799c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x976e=['name','index','VoiceQueueReport','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','includeAll','include','findAll','show','merge','options','catch','create','body','find','params','describe','getVoiceQueuesReport','rows','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','end','error'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x976e,0x11e));var _0xe976=function(_0x2fc34b,_0x486b3c){_0x2fc34b=_0x2fc34b-0x0;var _0x4a8fe7=_0x976e[_0x2fc34b];return _0x4a8fe7;};'use strict';var emlformat=require(_0xe976('0x0'));var rimraf=require(_0xe976('0x1'));var zipdir=require(_0xe976('0x2'));var jsonpatch=require(_0xe976('0x3'));var rp=require(_0xe976('0x4'));var moment=require(_0xe976('0x5'));var BPromise=require(_0xe976('0x6'));var Mustache=require(_0xe976('0x7'));var util=require(_0xe976('0x8'));var path=require(_0xe976('0x9'));var sox=require(_0xe976('0xa'));var csv=require(_0xe976('0xb'));var ejs=require(_0xe976('0xc'));var fs=require('fs');var fs_extra=require(_0xe976('0xd'));var _=require(_0xe976('0xe'));var squel=require(_0xe976('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe976('0xb'));var querystring=require('querystring');var Papa=require(_0xe976('0x10'));var Redis=require(_0xe976('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe976('0x12'));var as=require(_0xe976('0x13'));var hardwareService=require(_0xe976('0x14'));var logger=require(_0xe976('0x15'))(_0xe976('0x16'));var utils=require('../../config/utils');var config=require(_0xe976('0x17'));var licenseUtil=require(_0xe976('0x18'));var db=require('../../mysqldb')['db'];config[_0xe976('0x19')]=_[_0xe976('0x1a')](config[_0xe976('0x19')],{'host':_0xe976('0x1b'),'port':0x18eb});var socket=require(_0xe976('0x1c'))(new Redis(config[_0xe976('0x19')]));require(_0xe976('0x1d'))[_0xe976('0x1e')](socket);function respondWithStatusCode(_0x38aa0c,_0x2cd5d4){_0x2cd5d4=_0x2cd5d4||0xcc;return function(_0x1e6496){if(_0x1e6496){return _0x38aa0c[_0xe976('0x1f')](_0x2cd5d4);}return _0x38aa0c[_0xe976('0x20')](_0x2cd5d4)['end']();};}function respondWithResult(_0x592281,_0x171e35){_0x171e35=_0x171e35||0xc8;return function(_0x2334f9){if(_0x2334f9){return _0x592281[_0xe976('0x20')](_0x171e35)[_0xe976('0x21')](_0x2334f9);}};}function respondWithFilteredResult(_0x3fb79b,_0x127561){return function(_0x55dbf7){if(_0x55dbf7){var _0x1f2fe2=typeof _0x127561[_0xe976('0x22')]==='undefined'&&typeof _0x127561[_0xe976('0x23')]===_0xe976('0x24');var _0x38b2fa=_0x55dbf7[_0xe976('0x25')];var _0x369112=_0x1f2fe2?0x0:_0x127561[_0xe976('0x22')];var _0x25eb96=_0x1f2fe2?_0x55dbf7[_0xe976('0x25')]:_0x127561[_0xe976('0x22')]+_0x127561[_0xe976('0x23')];var _0x12f73d;if(_0x25eb96>=_0x38b2fa){_0x25eb96=_0x38b2fa;_0x12f73d=0xc8;}else{_0x12f73d=0xce;}_0x3fb79b[_0xe976('0x20')](_0x12f73d);return _0x3fb79b['set'](_0xe976('0x26'),_0x369112+'-'+_0x25eb96+'/'+_0x38b2fa)['json'](_0x55dbf7);}return null;};}function patchUpdates(_0x51448a){return function(_0x3b8611){try{jsonpatch['apply'](_0x3b8611,_0x51448a,!![]);}catch(_0x36178e){return BPromise[_0xe976('0x27')](_0x36178e);}return _0x3b8611[_0xe976('0x28')]();};}function saveUpdates(_0x586ea4,_0x2c98b6){return function(_0x307bac){if(_0x307bac){return _0x307bac[_0xe976('0x29')](_0x586ea4)[_0xe976('0x2a')](function(_0x2e95b1){return _0x2e95b1;});}return null;};}function removeEntity(_0x51b5de,_0x35ce85){return function(_0x57d0c7){if(_0x57d0c7){return _0x57d0c7[_0xe976('0x2b')]()[_0xe976('0x2a')](function(){_0x51b5de['status'](0xcc)[_0xe976('0x2c')]();});}};}function handleEntityNotFound(_0x852bcc,_0x299a55){return function(_0x302f4c){if(!_0x302f4c){_0x852bcc['sendStatus'](0x194);}return _0x302f4c;};}function handleError(_0x57417a,_0x5deed9){_0x5deed9=_0x5deed9||0x1f4;return function(_0x35d8b9){logger[_0xe976('0x2d')](_0x35d8b9['stack']);if(_0x35d8b9[_0xe976('0x2e')]){delete _0x35d8b9['name'];}_0x57417a[_0xe976('0x20')](_0x5deed9)['send'](_0x35d8b9);};}exports[_0xe976('0x2f')]=function(_0xad3ab2,_0x899604){var _0x47effb={},_0x2346a4={},_0x25739c={'count':0x0,'rows':[]};var _0x150fee=_['map'](db[_0xe976('0x30')]['rawAttributes'],function(_0x4decca){return{'name':_0x4decca[_0xe976('0x31')],'type':_0x4decca['type'][_0xe976('0x32')]};});_0x2346a4[_0xe976('0x33')]=_[_0xe976('0x34')](_0x150fee,'name');_0x2346a4[_0xe976('0x35')]=_[_0xe976('0x36')](_0xad3ab2[_0xe976('0x35')]);_0x2346a4['filters']=_['intersection'](_0x2346a4['model'],_0x2346a4[_0xe976('0x35')]);_0x47effb['attributes']=_[_0xe976('0x37')](_0x2346a4[_0xe976('0x33')],qs[_0xe976('0x38')](_0xad3ab2[_0xe976('0x35')]['fields']));_0x47effb[_0xe976('0x39')]=_0x47effb['attributes'][_0xe976('0x3a')]?_0x47effb[_0xe976('0x39')]:_0x2346a4[_0xe976('0x33')];if(!_0xad3ab2['query'][_0xe976('0x3b')](_0xe976('0x3c'))){_0x47effb[_0xe976('0x23')]=qs[_0xe976('0x23')](_0xad3ab2['query'][_0xe976('0x23')]);_0x47effb[_0xe976('0x22')]=qs[_0xe976('0x22')](_0xad3ab2[_0xe976('0x35')][_0xe976('0x22')]);}_0x47effb[_0xe976('0x3d')]=qs[_0xe976('0x3e')](_0xad3ab2[_0xe976('0x35')][_0xe976('0x3e')]);_0x47effb[_0xe976('0x3f')]=qs[_0xe976('0x40')](_[_0xe976('0x41')](_0xad3ab2[_0xe976('0x35')],_0x2346a4['filters']),_0x150fee);if(_0xad3ab2['query'][_0xe976('0x42')]){_0x47effb['where']=_['merge'](_0x47effb['where'],{'$or':_[_0xe976('0x34')](_0x150fee,function(_0x4e8a14){if(_0x4e8a14[_0xe976('0x43')]!==_0xe976('0x44')){var _0x20a26e={};_0x20a26e[_0x4e8a14[_0xe976('0x2e')]]={'$like':'%'+_0xad3ab2[_0xe976('0x35')][_0xe976('0x42')]+'%'};return _0x20a26e;}})});}_0x47effb=_['merge']({},_0x47effb,_0xad3ab2['options']);var _0x35ca1c={'where':_0x47effb[_0xe976('0x3f')]};return db[_0xe976('0x30')][_0xe976('0x25')](_0x35ca1c)[_0xe976('0x2a')](function(_0x116280){_0x25739c[_0xe976('0x25')]=_0x116280;if(_0xad3ab2[_0xe976('0x35')][_0xe976('0x45')]){_0x47effb[_0xe976('0x46')]=[{'all':!![]}];}return db[_0xe976('0x30')][_0xe976('0x47')](_0x47effb);})[_0xe976('0x2a')](function(_0x4519eb){_0x25739c['rows']=_0x4519eb;return _0x25739c;})['then'](respondWithFilteredResult(_0x899604,_0x47effb))['catch'](handleError(_0x899604,null));};exports[_0xe976('0x48')]=function(_0x29c7d1,_0x329f4f){var _0x126abf={'raw':![],'where':{'id':_0x29c7d1['params']['id']}},_0x189bb1={};_0x189bb1[_0xe976('0x33')]=_['keys'](db[_0xe976('0x30')]['rawAttributes']);_0x189bb1['query']=_[_0xe976('0x36')](_0x29c7d1['query']);_0x189bb1[_0xe976('0x40')]=_[_0xe976('0x37')](_0x189bb1['model'],_0x189bb1[_0xe976('0x35')]);_0x126abf[_0xe976('0x39')]=_['intersection'](_0x189bb1[_0xe976('0x33')],qs['fields'](_0x29c7d1[_0xe976('0x35')][_0xe976('0x38')]));_0x126abf['attributes']=_0x126abf[_0xe976('0x39')]['length']?_0x126abf[_0xe976('0x39')]:_0x189bb1[_0xe976('0x33')];if(_0x29c7d1['query'][_0xe976('0x45')]){_0x126abf[_0xe976('0x46')]=[{'all':!![]}];}_0x126abf=_[_0xe976('0x49')]({},_0x126abf,_0x29c7d1[_0xe976('0x4a')]);return db[_0xe976('0x30')]['find'](_0x126abf)['then'](handleEntityNotFound(_0x329f4f,null))['then'](respondWithResult(_0x329f4f,null))[_0xe976('0x4b')](handleError(_0x329f4f,null));};exports[_0xe976('0x4c')]=function(_0x5174c3,_0x43f682){return db[_0xe976('0x30')]['create'](_0x5174c3[_0xe976('0x4d')],{})['then'](respondWithResult(_0x43f682,0xc9))['catch'](handleError(_0x43f682,null));};exports[_0xe976('0x29')]=function(_0x45180c,_0x3e9e82){if(_0x45180c[_0xe976('0x4d')]['id']){delete _0x45180c[_0xe976('0x4d')]['id'];}return db[_0xe976('0x30')][_0xe976('0x4e')]({'where':{'id':_0x45180c[_0xe976('0x4f')]['id']}})[_0xe976('0x2a')](handleEntityNotFound(_0x3e9e82,null))[_0xe976('0x2a')](saveUpdates(_0x45180c[_0xe976('0x4d')],null))[_0xe976('0x2a')](respondWithResult(_0x3e9e82,null))[_0xe976('0x4b')](handleError(_0x3e9e82,null));};exports[_0xe976('0x2b')]=function(_0xc26b33,_0x53f55e){return db[_0xe976('0x30')][_0xe976('0x4e')]({'where':{'id':_0xc26b33[_0xe976('0x4f')]['id']}})[_0xe976('0x2a')](handleEntityNotFound(_0x53f55e,null))[_0xe976('0x2a')](removeEntity(_0x53f55e,null))[_0xe976('0x4b')](handleError(_0x53f55e,null));};exports['describe']=function(_0x2f3cd9,_0xf64542){return db['VoiceQueueReport'][_0xe976('0x50')]()[_0xe976('0x2a')](respondWithResult(_0xf64542,null))[_0xe976('0x4b')](handleError(_0xf64542,null));};exports[_0xe976('0x51')]=function(_0x3c9122,_0x3956bc){var _0x25d96c={},_0x37757d={},_0x440ade={'count':0x0,'rows':[]};_0x37757d['model']=_[_0xe976('0x36')](db[_0xe976('0x30')]['rawAttributes']);_0x37757d[_0xe976('0x35')]=_[_0xe976('0x36')](_0x3c9122[_0xe976('0x35')]);_0x37757d[_0xe976('0x40')]=_['intersection'](_0x37757d[_0xe976('0x33')],_0x37757d[_0xe976('0x35')]);_0x25d96c[_0xe976('0x39')]=_[_0xe976('0x37')](_0x37757d[_0xe976('0x33')],qs[_0xe976('0x38')](_0x3c9122['query']['fields']));_0x25d96c[_0xe976('0x39')]=_0x25d96c[_0xe976('0x39')][_0xe976('0x3a')]?_0x25d96c['attributes']:_0x37757d['model'];if(!_0x3c9122['query'][_0xe976('0x3b')](_0xe976('0x3c'))){_0x25d96c['limit']=qs[_0xe976('0x23')](_0x3c9122[_0xe976('0x35')][_0xe976('0x23')]);_0x25d96c[_0xe976('0x22')]=qs[_0xe976('0x22')](_0x3c9122[_0xe976('0x35')][_0xe976('0x22')]);}_0x25d96c['order']=qs[_0xe976('0x3e')](_0x3c9122[_0xe976('0x35')]['sort']);_0x25d96c[_0xe976('0x3f')]=qs[_0xe976('0x40')](_[_0xe976('0x41')](_0x3c9122['query'],_0x37757d['filters']));if(_0x3c9122[_0xe976('0x35')]['filter']){_0x25d96c[_0xe976('0x3f')]=_[_0xe976('0x49')](_0x25d96c['where'],{'$or':_[_0xe976('0x34')](_0x25d96c[_0xe976('0x39')],function(_0x21529f){var _0x2f6543={};_0x2f6543[_0x21529f]={'$like':'%'+_0x3c9122['query']['filter']+'%'};return _0x2f6543;})});}_0x25d96c=_['merge']({},_0x25d96c,_0x3c9122['options']);var _0x1a0d51={'where':_0x25d96c[_0xe976('0x3f')]};return db[_0xe976('0x30')][_0xe976('0x25')](_0x1a0d51)[_0xe976('0x2a')](function(_0x8954ba){_0x440ade[_0xe976('0x25')]=_0x8954ba;if(_0x3c9122[_0xe976('0x35')]['includeAll']){_0x25d96c[_0xe976('0x46')]=[{'all':!![]}];}return db[_0xe976('0x30')][_0xe976('0x47')](_0x25d96c);})[_0xe976('0x2a')](function(_0xfaeda3){_0x440ade[_0xe976('0x52')]=_0xfaeda3;return _0x440ade;})[_0xe976('0x2a')](respondWithFilteredResult(_0x3956bc,_0x25d96c,_0xe976('0x51')))['catch'](handleError(_0x3956bc,null,_0xe976('0x51')));};
\ No newline at end of file
+var _0x4824=['merge','type','VIRTUAL','options','VoiceQueueReport','includeAll','findAll','rows','catch','length','include','find','create','body','params','describe','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./voiceQueueReport.socket','register','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter'];(function(_0x4ad416,_0x5d5754){var _0x19fc77=function(_0x1a42b6){while(--_0x1a42b6){_0x4ad416['push'](_0x4ad416['shift']());}};_0x19fc77(++_0x5d5754);}(_0x4824,0x169));var _0x4482=function(_0x2c3b3e,_0x4de899){_0x2c3b3e=_0x2c3b3e-0x0;var _0x32df5c=_0x4824[_0x2c3b3e];return _0x32df5c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4482('0x0'));var zipdir=require(_0x4482('0x1'));var jsonpatch=require(_0x4482('0x2'));var rp=require(_0x4482('0x3'));var moment=require(_0x4482('0x4'));var BPromise=require(_0x4482('0x5'));var Mustache=require('mustache');var util=require(_0x4482('0x6'));var path=require(_0x4482('0x7'));var sox=require(_0x4482('0x8'));var csv=require(_0x4482('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4482('0xa'));var _=require(_0x4482('0xb'));var squel=require(_0x4482('0xc'));var crypto=require('crypto');var jsforce=require(_0x4482('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4482('0x9'));var querystring=require(_0x4482('0xe'));var Papa=require(_0x4482('0xf'));var Redis=require(_0x4482('0x10'));var authService=require(_0x4482('0x11'));var qs=require(_0x4482('0x12'));var as=require(_0x4482('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4482('0x14'))(_0x4482('0x15'));var utils=require(_0x4482('0x16'));var config=require(_0x4482('0x17'));var licenseUtil=require(_0x4482('0x18'));var db=require(_0x4482('0x19'))['db'];config['redis']=_[_0x4482('0x1a')](config['redis'],{'host':_0x4482('0x1b'),'port':0x18eb});var socket=require(_0x4482('0x1c'))(new Redis(config[_0x4482('0x1d')]));require(_0x4482('0x1e'))[_0x4482('0x1f')](socket);function respondWithStatusCode(_0x160303,_0x1fbda){_0x1fbda=_0x1fbda||0xcc;return function(_0x11d436){if(_0x11d436){return _0x160303[_0x4482('0x20')](_0x1fbda);}return _0x160303['status'](_0x1fbda)[_0x4482('0x21')]();};}function respondWithResult(_0x504a5a,_0x40f4f8){_0x40f4f8=_0x40f4f8||0xc8;return function(_0x18d0d1){if(_0x18d0d1){return _0x504a5a[_0x4482('0x22')](_0x40f4f8)[_0x4482('0x23')](_0x18d0d1);}};}function respondWithFilteredResult(_0x5ca4af,_0x38b8aa){return function(_0x421147){if(_0x421147){var _0x7d811d=typeof _0x38b8aa['offset']===_0x4482('0x24')&&typeof _0x38b8aa[_0x4482('0x25')]===_0x4482('0x24');var _0xa5b7b0=_0x421147['count'];var _0x9e8ecf=_0x7d811d?0x0:_0x38b8aa[_0x4482('0x26')];var _0x5720d6=_0x7d811d?_0x421147[_0x4482('0x27')]:_0x38b8aa[_0x4482('0x26')]+_0x38b8aa[_0x4482('0x25')];var _0x10a859;if(_0x5720d6>=_0xa5b7b0){_0x5720d6=_0xa5b7b0;_0x10a859=0xc8;}else{_0x10a859=0xce;}_0x5ca4af[_0x4482('0x22')](_0x10a859);return _0x5ca4af[_0x4482('0x28')](_0x4482('0x29'),_0x9e8ecf+'-'+_0x5720d6+'/'+_0xa5b7b0)[_0x4482('0x23')](_0x421147);}return null;};}function patchUpdates(_0x4ecbf9){return function(_0x52e94b){try{jsonpatch['apply'](_0x52e94b,_0x4ecbf9,!![]);}catch(_0x2ddf46){return BPromise[_0x4482('0x2a')](_0x2ddf46);}return _0x52e94b[_0x4482('0x2b')]();};}function saveUpdates(_0x4f6d04,_0x287153){return function(_0x2918b5){if(_0x2918b5){return _0x2918b5[_0x4482('0x2c')](_0x4f6d04)['then'](function(_0x5dacbc){return _0x5dacbc;});}return null;};}function removeEntity(_0x4d778d,_0x35d2f9){return function(_0x284f8b){if(_0x284f8b){return _0x284f8b[_0x4482('0x2d')]()[_0x4482('0x2e')](function(){_0x4d778d[_0x4482('0x22')](0xcc)[_0x4482('0x21')]();});}};}function handleEntityNotFound(_0x131386,_0xebaaae){return function(_0x26e543){if(!_0x26e543){_0x131386['sendStatus'](0x194);}return _0x26e543;};}function handleError(_0x5d5f52,_0x518efb){_0x518efb=_0x518efb||0x1f4;return function(_0x58765b){logger['error'](_0x58765b[_0x4482('0x2f')]);if(_0x58765b[_0x4482('0x30')]){delete _0x58765b[_0x4482('0x30')];}_0x5d5f52[_0x4482('0x22')](_0x518efb)[_0x4482('0x31')](_0x58765b);};}exports[_0x4482('0x32')]=function(_0x179f0f,_0x3ecd3e){var _0x4cd40e={},_0x5bf5f4={},_0x3d161b={'count':0x0,'rows':[]};var _0x2082e8=_[_0x4482('0x33')](db['VoiceQueueReport'][_0x4482('0x34')],function(_0x2f580b){return{'name':_0x2f580b[_0x4482('0x35')],'type':_0x2f580b['type'][_0x4482('0x36')]};});_0x5bf5f4['model']=_['map'](_0x2082e8,'name');_0x5bf5f4[_0x4482('0x37')]=_[_0x4482('0x38')](_0x179f0f[_0x4482('0x37')]);_0x5bf5f4['filters']=_['intersection'](_0x5bf5f4[_0x4482('0x39')],_0x5bf5f4[_0x4482('0x37')]);_0x4cd40e[_0x4482('0x3a')]=_[_0x4482('0x3b')](_0x5bf5f4[_0x4482('0x39')],qs['fields'](_0x179f0f['query'][_0x4482('0x3c')]));_0x4cd40e['attributes']=_0x4cd40e['attributes']['length']?_0x4cd40e['attributes']:_0x5bf5f4['model'];if(!_0x179f0f[_0x4482('0x37')][_0x4482('0x3d')](_0x4482('0x3e'))){_0x4cd40e['limit']=qs['limit'](_0x179f0f[_0x4482('0x37')]['limit']);_0x4cd40e[_0x4482('0x26')]=qs[_0x4482('0x26')](_0x179f0f[_0x4482('0x37')]['offset']);}_0x4cd40e[_0x4482('0x3f')]=qs[_0x4482('0x40')](_0x179f0f[_0x4482('0x37')][_0x4482('0x40')]);_0x4cd40e[_0x4482('0x41')]=qs['filters'](_[_0x4482('0x42')](_0x179f0f[_0x4482('0x37')],_0x5bf5f4[_0x4482('0x43')]),_0x2082e8);if(_0x179f0f[_0x4482('0x37')][_0x4482('0x44')]){_0x4cd40e[_0x4482('0x41')]=_[_0x4482('0x45')](_0x4cd40e['where'],{'$or':_[_0x4482('0x33')](_0x2082e8,function(_0x5195f3){if(_0x5195f3[_0x4482('0x46')]!==_0x4482('0x47')){var _0x5509dd={};_0x5509dd[_0x5195f3[_0x4482('0x30')]]={'$like':'%'+_0x179f0f['query'][_0x4482('0x44')]+'%'};return _0x5509dd;}})});}_0x4cd40e=_['merge']({},_0x4cd40e,_0x179f0f[_0x4482('0x48')]);var _0x55518f={'where':_0x4cd40e[_0x4482('0x41')]};return db[_0x4482('0x49')]['count'](_0x55518f)[_0x4482('0x2e')](function(_0x4083c9){_0x3d161b['count']=_0x4083c9;if(_0x179f0f['query'][_0x4482('0x4a')]){_0x4cd40e['include']=[{'all':!![]}];}return db[_0x4482('0x49')][_0x4482('0x4b')](_0x4cd40e);})[_0x4482('0x2e')](function(_0x2a3f32){_0x3d161b[_0x4482('0x4c')]=_0x2a3f32;return _0x3d161b;})[_0x4482('0x2e')](respondWithFilteredResult(_0x3ecd3e,_0x4cd40e))[_0x4482('0x4d')](handleError(_0x3ecd3e,null));};exports['show']=function(_0x538d18,_0x7d938d){var _0x254587={'raw':![],'where':{'id':_0x538d18['params']['id']}},_0x5f2fa3={};_0x5f2fa3[_0x4482('0x39')]=_[_0x4482('0x38')](db[_0x4482('0x49')][_0x4482('0x34')]);_0x5f2fa3[_0x4482('0x37')]=_[_0x4482('0x38')](_0x538d18[_0x4482('0x37')]);_0x5f2fa3[_0x4482('0x43')]=_[_0x4482('0x3b')](_0x5f2fa3[_0x4482('0x39')],_0x5f2fa3[_0x4482('0x37')]);_0x254587[_0x4482('0x3a')]=_[_0x4482('0x3b')](_0x5f2fa3[_0x4482('0x39')],qs['fields'](_0x538d18[_0x4482('0x37')][_0x4482('0x3c')]));_0x254587['attributes']=_0x254587[_0x4482('0x3a')][_0x4482('0x4e')]?_0x254587[_0x4482('0x3a')]:_0x5f2fa3[_0x4482('0x39')];if(_0x538d18[_0x4482('0x37')][_0x4482('0x4a')]){_0x254587[_0x4482('0x4f')]=[{'all':!![]}];}_0x254587=_[_0x4482('0x45')]({},_0x254587,_0x538d18[_0x4482('0x48')]);return db[_0x4482('0x49')][_0x4482('0x50')](_0x254587)[_0x4482('0x2e')](handleEntityNotFound(_0x7d938d,null))[_0x4482('0x2e')](respondWithResult(_0x7d938d,null))['catch'](handleError(_0x7d938d,null));};exports[_0x4482('0x51')]=function(_0x20692e,_0x10baf3){return db[_0x4482('0x49')]['create'](_0x20692e['body'],{})[_0x4482('0x2e')](respondWithResult(_0x10baf3,0xc9))[_0x4482('0x4d')](handleError(_0x10baf3,null));};exports[_0x4482('0x2c')]=function(_0xd27d76,_0x4cca1f){if(_0xd27d76[_0x4482('0x52')]['id']){delete _0xd27d76['body']['id'];}return db[_0x4482('0x49')]['find']({'where':{'id':_0xd27d76[_0x4482('0x53')]['id']}})[_0x4482('0x2e')](handleEntityNotFound(_0x4cca1f,null))['then'](saveUpdates(_0xd27d76[_0x4482('0x52')],null))[_0x4482('0x2e')](respondWithResult(_0x4cca1f,null))[_0x4482('0x4d')](handleError(_0x4cca1f,null));};exports[_0x4482('0x2d')]=function(_0x2d47e5,_0x100f98){return db['VoiceQueueReport'][_0x4482('0x50')]({'where':{'id':_0x2d47e5['params']['id']}})[_0x4482('0x2e')](handleEntityNotFound(_0x100f98,null))[_0x4482('0x2e')](removeEntity(_0x100f98,null))[_0x4482('0x4d')](handleError(_0x100f98,null));};exports['describe']=function(_0x2e9cb9,_0x163a58){return db[_0x4482('0x49')][_0x4482('0x54')]()['then'](respondWithResult(_0x163a58,null))[_0x4482('0x4d')](handleError(_0x163a58,null));};exports[_0x4482('0x55')]=function(_0x5c955a,_0x32e0e1){var _0xe956da={},_0x5349e9={},_0x2d0dc3={'count':0x0,'rows':[]};_0x5349e9[_0x4482('0x39')]=_[_0x4482('0x38')](db[_0x4482('0x49')][_0x4482('0x34')]);_0x5349e9[_0x4482('0x37')]=_['keys'](_0x5c955a['query']);_0x5349e9['filters']=_[_0x4482('0x3b')](_0x5349e9[_0x4482('0x39')],_0x5349e9['query']);_0xe956da['attributes']=_[_0x4482('0x3b')](_0x5349e9['model'],qs['fields'](_0x5c955a['query'][_0x4482('0x3c')]));_0xe956da['attributes']=_0xe956da[_0x4482('0x3a')][_0x4482('0x4e')]?_0xe956da[_0x4482('0x3a')]:_0x5349e9[_0x4482('0x39')];if(!_0x5c955a[_0x4482('0x37')][_0x4482('0x3d')](_0x4482('0x3e'))){_0xe956da[_0x4482('0x25')]=qs[_0x4482('0x25')](_0x5c955a[_0x4482('0x37')][_0x4482('0x25')]);_0xe956da[_0x4482('0x26')]=qs[_0x4482('0x26')](_0x5c955a[_0x4482('0x37')][_0x4482('0x26')]);}_0xe956da[_0x4482('0x3f')]=qs[_0x4482('0x40')](_0x5c955a[_0x4482('0x37')]['sort']);_0xe956da[_0x4482('0x41')]=qs[_0x4482('0x43')](_['pick'](_0x5c955a[_0x4482('0x37')],_0x5349e9[_0x4482('0x43')]));if(_0x5c955a[_0x4482('0x37')]['filter']){_0xe956da[_0x4482('0x41')]=_[_0x4482('0x45')](_0xe956da[_0x4482('0x41')],{'$or':_['map'](_0xe956da[_0x4482('0x3a')],function(_0x3dbf20){var _0x59390f={};_0x59390f[_0x3dbf20]={'$like':'%'+_0x5c955a[_0x4482('0x37')][_0x4482('0x44')]+'%'};return _0x59390f;})});}_0xe956da=_[_0x4482('0x45')]({},_0xe956da,_0x5c955a[_0x4482('0x48')]);var _0x31b511={'where':_0xe956da[_0x4482('0x41')]};return db[_0x4482('0x49')][_0x4482('0x27')](_0x31b511)['then'](function(_0x43b904){_0x2d0dc3[_0x4482('0x27')]=_0x43b904;if(_0x5c955a['query'][_0x4482('0x4a')]){_0xe956da['include']=[{'all':!![]}];}return db[_0x4482('0x49')][_0x4482('0x4b')](_0xe956da);})[_0x4482('0x2e')](function(_0x288a5c){_0x2d0dc3['rows']=_0x288a5c;return _0x2d0dc3;})[_0x4482('0x2e')](respondWithFilteredResult(_0x32e0e1,_0xe956da,_0x4482('0x55')))[_0x4482('0x4d')](handleError(_0x32e0e1,null,_0x4482('0x55')));};
\ No newline at end of file
index b921ff8..972f5bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74e=['../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','emit','exports'];(function(_0x330141,_0x1dd290){var _0x1b68a2=function(_0x4e7f3c){while(--_0x4e7f3c){_0x330141['push'](_0x330141['shift']());}};_0x1b68a2(++_0x1dd290);}(_0xe74e,0x188));var _0xee74=function(_0xfdfe03,_0x2aaa1e){_0xfdfe03=_0xfdfe03-0x0;var _0x58f88a=_0xe74e[_0xfdfe03];return _0x58f88a;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xee74('0x0'))['db'][_0xee74('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xee74('0x2')](0x0);var events={'afterCreate':_0xee74('0x3'),'afterUpdate':_0xee74('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57f1aa){return function(_0x57040c,_0x141914,_0x1c774c){VoiceQueueReportEvents[_0xee74('0x5')](_0x57f1aa+':'+_0x57040c['id'],_0x57040c);VoiceQueueReportEvents[_0xee74('0x5')](_0x57f1aa,_0x57040c);_0x1c774c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xee74('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xa2da=['../../mysqldb','VoiceQueueReport','setMaxListeners','save','remove','emit','hasOwnProperty','events'];(function(_0x3e2bf1,_0x595940){var _0x22f9b3=function(_0x1f18e1){while(--_0x1f18e1){_0x3e2bf1['push'](_0x3e2bf1['shift']());}};_0x22f9b3(++_0x595940);}(_0xa2da,0x87));var _0xaa2d=function(_0x173f10,_0x35db61){_0x173f10=_0x173f10-0x0;var _0x53142d=_0xa2da[_0x173f10];return _0x53142d;};'use strict';var EventEmitter=require(_0xaa2d('0x0'));var VoiceQueueReport=require(_0xaa2d('0x1'))['db'][_0xaa2d('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xaa2d('0x3')](0x0);var events={'afterCreate':_0xaa2d('0x4'),'afterUpdate':'update','afterDestroy':_0xaa2d('0x5')};function emitEvent(_0x141860){return function(_0x14803c,_0xcf1556,_0x5893b3){VoiceQueueReportEvents[_0xaa2d('0x6')](_0x141860+':'+_0x14803c['id'],_0x14803c);VoiceQueueReportEvents['emit'](_0x141860,_0x14803c);_0x5893b3(null);};}for(var e in events){if(events[_0xaa2d('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 95619c5..997ab70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f5e=['bluebird','request-promise','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','VoiceQueueReport','report_queue','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x2635bf,_0x31f0a0){var _0x5edc0e=function(_0x174097){while(--_0x174097){_0x2635bf['push'](_0x2635bf['shift']());}};_0x5edc0e(++_0x31f0a0);}(_0x0f5e,0x1dd));var _0xe0f5=function(_0x5b331d,_0x4042f5){_0x5b331d=_0x5b331d-0x0;var _0x1d0547=_0x0f5e[_0x5b331d];return _0x1d0547;};'use strict';var _=require(_0xe0f5('0x0'));var util=require(_0xe0f5('0x1'));var logger=require(_0xe0f5('0x2'))('api');var moment=require(_0xe0f5('0x3'));var BPromise=require(_0xe0f5('0x4'));var rp=require(_0xe0f5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe0f5('0x6'));var config=require(_0xe0f5('0x7'));var attributes=require(_0xe0f5('0x8'));module[_0xe0f5('0x9')]=function(_0x4db9aa,_0xde1889){return _0x4db9aa['define'](_0xe0f5('0xa'),attributes,{'tableName':_0xe0f5('0xb'),'paranoid':![],'indexes':[{'fields':[_0xe0f5('0xc')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xea13=['exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes'];(function(_0x2fd8dd,_0x2b15cc){var _0x1fcd4f=function(_0x7c76f6){while(--_0x7c76f6){_0x2fd8dd['push'](_0x2fd8dd['shift']());}};_0x1fcd4f(++_0x2b15cc);}(_0xea13,0x1d4));var _0x3ea1=function(_0x41e940,_0x557133){_0x41e940=_0x41e940-0x0;var _0x1d46f3=_0xea13[_0x41e940];return _0x1d46f3;};'use strict';var _=require('lodash');var util=require(_0x3ea1('0x0'));var logger=require(_0x3ea1('0x1'))(_0x3ea1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3ea1('0x3'));var fs=require('fs');var path=require(_0x3ea1('0x4'));var rimraf=require(_0x3ea1('0x5'));var config=require(_0x3ea1('0x6'));var attributes=require(_0x3ea1('0x7'));module[_0x3ea1('0x8')]=function(_0x144d6c,_0x47dc5c){return _0x144d6c[_0x3ea1('0x9')](_0x3ea1('0xa'),attributes,{'tableName':_0x3ea1('0xb'),'paranoid':![],'indexes':[{'fields':[_0x3ea1('0xc')]},{'fields':[_0x3ea1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index f836166..b8e422f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb202=['findAll','options','raw','where','attributes','limit','map','include','model','CreateVoiceQueueReport','body','UpdateVoiceQueueReport','update','stringify','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetVoiceQueueReport','VoiceQueueReport'];(function(_0x1c25a6,_0xd4339d){var _0x5c58ff=function(_0x437096){while(--_0x437096){_0x1c25a6['push'](_0x1c25a6['shift']());}};_0x5c58ff(++_0xd4339d);}(_0xb202,0x104));var _0x2b20=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb202[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x2b20('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2b20('0x1'));var rs=require(_0x2b20('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2b20('0x3'))['db'];var utils=require(_0x2b20('0x4'));var logger=require(_0x2b20('0x5'))(_0x2b20('0x6'));var config=require(_0x2b20('0x7'));var jayson=require(_0x2b20('0x8'));var client=jayson['client'][_0x2b20('0x9')]({'port':0x232a});config[_0x2b20('0xa')]=_['defaults'](config['redis'],{'host':_0x2b20('0xb'),'port':0x18eb});var socket=require(_0x2b20('0xc'))(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0x2b20('0xd')](socket);function respondWithRpcPromise(_0x4dea49,_0x22e8b9,_0x1cdf1a){return new BPromise(function(_0x1b83ad,_0x116156){return client[_0x2b20('0xe')](_0x4dea49,_0x1cdf1a)[_0x2b20('0xf')](function(_0x3bcb67){logger[_0x2b20('0x10')](_0x2b20('0x11'),_0x22e8b9,_0x2b20('0x12'));logger[_0x2b20('0x13')](_0x2b20('0x14'),_0x22e8b9,_0x2b20('0x12'),JSON['stringify'](_0x3bcb67));if(_0x3bcb67[_0x2b20('0x15')]){if(_0x3bcb67['error'][_0x2b20('0x16')]===0x1f4){logger['error'](_0x2b20('0x11'),_0x22e8b9,_0x3bcb67[_0x2b20('0x15')][_0x2b20('0x17')]);return _0x116156(_0x3bcb67[_0x2b20('0x15')]['message']);}logger['error'](_0x2b20('0x11'),_0x22e8b9,_0x3bcb67[_0x2b20('0x15')]['message']);return _0x1b83ad(_0x3bcb67[_0x2b20('0x15')]['message']);}else{logger[_0x2b20('0x10')](_0x2b20('0x11'),_0x22e8b9,_0x2b20('0x12'));_0x1b83ad(_0x3bcb67['result'][_0x2b20('0x17')]);}})[_0x2b20('0x18')](function(_0x3c3be9){logger[_0x2b20('0x15')](_0x2b20('0x11'),_0x22e8b9,_0x3c3be9);_0x116156(_0x3c3be9);});});}exports[_0x2b20('0x19')]=function(_0x45172c){var _0x46386b=this;return new Promise(function(_0x2dda39,_0x2722a9){return db[_0x2b20('0x1a')][_0x2b20('0x1b')]({'raw':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1d')]===undefined?!![]:![]:!![],'where':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1e')]||null:null,'attributes':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x1f')]||null:null,'limit':_0x45172c[_0x2b20('0x1c')]?_0x45172c[_0x2b20('0x1c')][_0x2b20('0x20')]||null:null,'include':_0x45172c['options']?_0x45172c[_0x2b20('0x1c')]['include']?_[_0x2b20('0x21')](_0x45172c[_0x2b20('0x1c')][_0x2b20('0x22')],function(_0x12e1a7){return{'model':db[_0x12e1a7[_0x2b20('0x23')]],'as':_0x12e1a7['as'],'attributes':_0x12e1a7[_0x2b20('0x1f')],'include':_0x12e1a7[_0x2b20('0x22')]?_[_0x2b20('0x21')](_0x12e1a7[_0x2b20('0x22')],function(_0x1f69ff){return{'model':db[_0x1f69ff['model']],'as':_0x1f69ff['as'],'attributes':_0x1f69ff[_0x2b20('0x1f')],'include':_0x1f69ff[_0x2b20('0x22')]?_[_0x2b20('0x21')](_0x1f69ff[_0x2b20('0x22')],function(_0xb8b14c){return{'model':db[_0xb8b14c['model']],'as':_0xb8b14c['as'],'attributes':_0xb8b14c[_0x2b20('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2b20('0xf')](function(_0x3812e6){logger[_0x2b20('0x10')](_0x2b20('0x19'),_0x45172c);logger['debug'](_0x2b20('0x19'),_0x45172c,JSON['stringify'](_0x3812e6));_0x2dda39(_0x3812e6);})['catch'](function(_0x5f3df1){logger[_0x2b20('0x15')](_0x2b20('0x19'),_0x5f3df1['message'],_0x45172c);_0x2722a9(_0x46386b['error'](0x1f4,_0x5f3df1['message']));});});};exports[_0x2b20('0x24')]=function(_0x1cd344){var _0x575b4e=this;return new Promise(function(_0xa6fbc4,_0x224ae1){return db[_0x2b20('0x1a')]['create'](_0x1cd344[_0x2b20('0x25')],{'raw':_0x1cd344['options']?_0x1cd344['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x59771d){logger[_0x2b20('0x10')]('CreateVoiceQueueReport',_0x1cd344);logger[_0x2b20('0x13')]('CreateVoiceQueueReport',_0x1cd344,JSON['stringify'](_0x59771d));_0xa6fbc4(_0x59771d);})[_0x2b20('0x18')](function(_0x6963b1){logger['error'](_0x2b20('0x24'),_0x6963b1[_0x2b20('0x17')],_0x1cd344);_0x224ae1(_0x575b4e[_0x2b20('0x15')](0x1f4,_0x6963b1[_0x2b20('0x17')]));});});};exports[_0x2b20('0x26')]=function(_0x3d2b8d){var _0x1f8e20=this;return new Promise(function(_0xb9a5b4,_0x1726bc){return db[_0x2b20('0x1a')][_0x2b20('0x27')](_0x3d2b8d[_0x2b20('0x25')],{'raw':_0x3d2b8d[_0x2b20('0x1c')]?_0x3d2b8d[_0x2b20('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d2b8d['options']?_0x3d2b8d[_0x2b20('0x1c')]['where']||null:null,'attributes':_0x3d2b8d['options']?_0x3d2b8d[_0x2b20('0x1c')][_0x2b20('0x1f')]||null:null,'limit':_0x3d2b8d[_0x2b20('0x1c')]?_0x3d2b8d[_0x2b20('0x1c')][_0x2b20('0x20')]||null:null})[_0x2b20('0xf')](function(_0x2aaf32){logger[_0x2b20('0x10')]('UpdateVoiceQueueReport',_0x3d2b8d);logger[_0x2b20('0x13')](_0x2b20('0x26'),_0x3d2b8d,JSON[_0x2b20('0x28')](_0x2aaf32));_0xb9a5b4(_0x2aaf32);})[_0x2b20('0x18')](function(_0x1deed3){logger[_0x2b20('0x15')](_0x2b20('0x26'),_0x1deed3[_0x2b20('0x17')],_0x3d2b8d);_0x1726bc(_0x1f8e20[_0x2b20('0x15')](0x1f4,_0x1deed3['message']));});});};
\ No newline at end of file
+var _0x932b=['options','raw','where','attributes','limit','include','model','map','then','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x932b,0x109));var _0xb932=function(_0x2abd03,_0x15bd78){_0x2abd03=_0x2abd03-0x0;var _0x397306=_0x932b[_0x2abd03];return _0x397306;};'use strict';var _=require(_0xb932('0x0'));var util=require(_0xb932('0x1'));var moment=require('moment');var BPromise=require(_0xb932('0x2'));var rs=require(_0xb932('0x3'));var fs=require('fs');var Redis=require(_0xb932('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb932('0x5'));var logger=require(_0xb932('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb932('0x7'));var client=jayson[_0xb932('0x8')][_0xb932('0x9')]({'port':0x232a});config[_0xb932('0xa')]=_[_0xb932('0xb')](config['redis'],{'host':_0xb932('0xc'),'port':0x18eb});var socket=require(_0xb932('0xd'))(new Redis(config[_0xb932('0xa')]));require('./voiceQueueReport.socket')[_0xb932('0xe')](socket);function respondWithRpcPromise(_0x3554d0,_0x225800,_0x4e8e71){return new BPromise(function(_0x3213eb,_0x2dce77){return client[_0xb932('0xf')](_0x3554d0,_0x4e8e71)['then'](function(_0x10dccd){logger[_0xb932('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x225800,'request\x20sent');logger[_0xb932('0x11')](_0xb932('0x12'),_0x225800,'request\x20sent',JSON[_0xb932('0x13')](_0x10dccd));if(_0x10dccd[_0xb932('0x14')]){if(_0x10dccd[_0xb932('0x14')][_0xb932('0x15')]===0x1f4){logger[_0xb932('0x14')](_0xb932('0x16'),_0x225800,_0x10dccd[_0xb932('0x14')][_0xb932('0x17')]);return _0x2dce77(_0x10dccd[_0xb932('0x14')][_0xb932('0x17')]);}logger[_0xb932('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x225800,_0x10dccd[_0xb932('0x14')][_0xb932('0x17')]);return _0x3213eb(_0x10dccd[_0xb932('0x14')][_0xb932('0x17')]);}else{logger['info'](_0xb932('0x16'),_0x225800,'request\x20sent');_0x3213eb(_0x10dccd[_0xb932('0x18')]['message']);}})[_0xb932('0x19')](function(_0x85e44a){logger[_0xb932('0x14')](_0xb932('0x16'),_0x225800,_0x85e44a);_0x2dce77(_0x85e44a);});});}exports[_0xb932('0x1a')]=function(_0xa109eb){var _0x40ec45=this;return new Promise(function(_0x531d42,_0x2bfb91){return db[_0xb932('0x1b')][_0xb932('0x1c')]({'raw':_0xa109eb[_0xb932('0x1d')]?_0xa109eb[_0xb932('0x1d')][_0xb932('0x1e')]===undefined?!![]:![]:!![],'where':_0xa109eb[_0xb932('0x1d')]?_0xa109eb['options'][_0xb932('0x1f')]||null:null,'attributes':_0xa109eb[_0xb932('0x1d')]?_0xa109eb[_0xb932('0x1d')][_0xb932('0x20')]||null:null,'limit':_0xa109eb['options']?_0xa109eb[_0xb932('0x1d')][_0xb932('0x21')]||null:null,'include':_0xa109eb[_0xb932('0x1d')]?_0xa109eb[_0xb932('0x1d')][_0xb932('0x22')]?_['map'](_0xa109eb['options'][_0xb932('0x22')],function(_0x970b57){return{'model':db[_0x970b57[_0xb932('0x23')]],'as':_0x970b57['as'],'attributes':_0x970b57[_0xb932('0x20')],'include':_0x970b57['include']?_[_0xb932('0x24')](_0x970b57[_0xb932('0x22')],function(_0x2878d7){return{'model':db[_0x2878d7['model']],'as':_0x2878d7['as'],'attributes':_0x2878d7[_0xb932('0x20')],'include':_0x2878d7[_0xb932('0x22')]?_[_0xb932('0x24')](_0x2878d7[_0xb932('0x22')],function(_0x12400b){return{'model':db[_0x12400b['model']],'as':_0x12400b['as'],'attributes':_0x12400b['attributes']};}):[]};}):[]};}):[]:[]})[_0xb932('0x25')](function(_0x1f279b){logger['info'](_0xb932('0x1a'),_0xa109eb);logger[_0xb932('0x11')](_0xb932('0x1a'),_0xa109eb,JSON[_0xb932('0x13')](_0x1f279b));_0x531d42(_0x1f279b);})[_0xb932('0x19')](function(_0x2f5b1f){logger[_0xb932('0x14')](_0xb932('0x1a'),_0x2f5b1f[_0xb932('0x17')],_0xa109eb);_0x2bfb91(_0x40ec45[_0xb932('0x14')](0x1f4,_0x2f5b1f[_0xb932('0x17')]));});});};exports[_0xb932('0x26')]=function(_0x2aceea){var _0x3c8e1e=this;return new Promise(function(_0x68b03f,_0x637c42){return db[_0xb932('0x1b')][_0xb932('0x27')](_0x2aceea[_0xb932('0x28')],{'raw':_0x2aceea[_0xb932('0x1d')]?_0x2aceea[_0xb932('0x1d')][_0xb932('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x2fe01c){logger[_0xb932('0x10')](_0xb932('0x26'),_0x2aceea);logger[_0xb932('0x11')](_0xb932('0x26'),_0x2aceea,JSON[_0xb932('0x13')](_0x2fe01c));_0x68b03f(_0x2fe01c);})[_0xb932('0x19')](function(_0x5b51f4){logger[_0xb932('0x14')](_0xb932('0x26'),_0x5b51f4[_0xb932('0x17')],_0x2aceea);_0x637c42(_0x3c8e1e[_0xb932('0x14')](0x1f4,_0x5b51f4[_0xb932('0x17')]));});});};exports['UpdateVoiceQueueReport']=function(_0x5bcefd){var _0x5048c4=this;return new Promise(function(_0x1c54ca,_0x27ec23){return db[_0xb932('0x1b')]['update'](_0x5bcefd[_0xb932('0x28')],{'raw':_0x5bcefd[_0xb932('0x1d')]?_0x5bcefd[_0xb932('0x1d')][_0xb932('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bcefd[_0xb932('0x1d')]?_0x5bcefd['options']['where']||null:null,'attributes':_0x5bcefd[_0xb932('0x1d')]?_0x5bcefd[_0xb932('0x1d')][_0xb932('0x20')]||null:null,'limit':_0x5bcefd['options']?_0x5bcefd['options']['limit']||null:null})['then'](function(_0x4ff92a){logger[_0xb932('0x10')](_0xb932('0x29'),_0x5bcefd);logger['debug'](_0xb932('0x29'),_0x5bcefd,JSON['stringify'](_0x4ff92a));_0x1c54ca(_0x4ff92a);})[_0xb932('0x19')](function(_0x42b5c7){logger['error'](_0xb932('0x29'),_0x42b5c7['message'],_0x5bcefd);_0x27ec23(_0x5048c4[_0xb932('0x14')](0x1f4,_0x42b5c7[_0xb932('0x17')]));});});};
\ No newline at end of file
index c8ac846..abcd1b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bde=['save','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0bde,0xe7));var _0xe0bd=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0bde[_0x321bb2];return _0x9c12ed;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xe0bd('0x0'),'remove',_0xe0bd('0x1')];function createListener(_0x3dc984,_0x1d8922){return function(_0x1e198a){_0x1d8922[_0xe0bd('0x2')](_0x3dc984,_0x1e198a);};}function removeListener(_0x5541b9,_0x34df88){return function(){VoiceQueueReportEvents[_0xe0bd('0x3')](_0x5541b9,_0x34df88);};}exports[_0xe0bd('0x4')]=function(_0x3b712a){for(var _0x22bfd1=0x0,_0x26393f=events[_0xe0bd('0x5')];_0x22bfd1<_0x26393f;_0x22bfd1++){var _0x491dc7=events[_0x22bfd1];var _0x40b36a=createListener(_0xe0bd('0x6')+_0x491dc7,_0x3b712a);VoiceQueueReportEvents['on'](_0x491dc7,_0x40b36a);}};
\ No newline at end of file
+var _0xdcc4=['./voiceQueueReport.events','save','remove','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x220dbb,_0x99328d){var _0x2b77de=function(_0x15e966){while(--_0x15e966){_0x220dbb['push'](_0x220dbb['shift']());}};_0x2b77de(++_0x99328d);}(_0xdcc4,0xea));var _0x4dcc=function(_0x2c02f4,_0xa4e4b0){_0x2c02f4=_0x2c02f4-0x0;var _0x196314=_0xdcc4[_0x2c02f4];return _0x196314;};'use strict';var VoiceQueueReportEvents=require(_0x4dcc('0x0'));var events=[_0x4dcc('0x1'),_0x4dcc('0x2'),_0x4dcc('0x3')];function createListener(_0x17fde8,_0x4b6388){return function(_0x128a7b){_0x4b6388[_0x4dcc('0x4')](_0x17fde8,_0x128a7b);};}function removeListener(_0x416d97,_0x30c165){return function(){VoiceQueueReportEvents[_0x4dcc('0x5')](_0x416d97,_0x30c165);};}exports[_0x4dcc('0x6')]=function(_0x5ce6e6){for(var _0x1f8ef7=0x0,_0x5561be=events[_0x4dcc('0x7')];_0x1f8ef7<_0x5561be;_0x1f8ef7++){var _0x1634f2=events[_0x1f8ef7];var _0x461e9c=createListener(_0x4dcc('0x8')+_0x1634f2,_0x5ce6e6);VoiceQueueReportEvents['on'](_0x1634f2,_0x461e9c);}};
\ No newline at end of file
index c92d2e3..56a42d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e20=['./voiceQueuesLog.controller','index','get','/:id','isAuthenticated','show','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x4e20,0x173));var _0x04e2=function(_0xf26c2e,_0x56c3ea){_0xf26c2e=_0xf26c2e-0x0;var _0x46ecb4=_0x4e20[_0xf26c2e];return _0x46ecb4;};'use strict';var multer=require(_0x04e2('0x0'));var util=require(_0x04e2('0x1'));var path=require(_0x04e2('0x2'));var timeout=require(_0x04e2('0x3'));var express=require('express');var router=express[_0x04e2('0x4')]();var fs_extra=require(_0x04e2('0x5'));var auth=require(_0x04e2('0x6'));var interaction=require(_0x04e2('0x7'));var config=require(_0x04e2('0x8'));var controller=require(_0x04e2('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x04e2('0xa')]);router[_0x04e2('0xb')](_0x04e2('0xc'),auth[_0x04e2('0xd')](),controller[_0x04e2('0xe')]);router['post']('/',auth[_0x04e2('0xd')](),controller[_0x04e2('0xf')]);router[_0x04e2('0x10')]('/:id',auth[_0x04e2('0xd')](),controller['update']);router[_0x04e2('0x11')](_0x04e2('0xc'),auth[_0x04e2('0xd')](),controller[_0x04e2('0x12')]);module[_0x04e2('0x13')]=router;
\ No newline at end of file
+var _0x1d1a=['get','index','/:id','show','isAuthenticated','create','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service'];(function(_0x3791a5,_0x3e9d44){var _0x495f05=function(_0x2a2e0c){while(--_0x2a2e0c){_0x3791a5['push'](_0x3791a5['shift']());}};_0x495f05(++_0x3e9d44);}(_0x1d1a,0x1da));var _0xa1d1=function(_0x1cbbd8,_0x41109b){_0x1cbbd8=_0x1cbbd8-0x0;var _0x45db24=_0x1d1a[_0x1cbbd8];return _0x45db24;};'use strict';var multer=require(_0xa1d1('0x0'));var util=require(_0xa1d1('0x1'));var path=require(_0xa1d1('0x2'));var timeout=require(_0xa1d1('0x3'));var express=require('express');var router=express[_0xa1d1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa1d1('0x5'));var config=require('../../config/environment');var controller=require('./voiceQueuesLog.controller');router[_0xa1d1('0x6')]('/',auth['isAuthenticated'](),controller[_0xa1d1('0x7')]);router[_0xa1d1('0x6')](_0xa1d1('0x8'),auth['isAuthenticated'](),controller[_0xa1d1('0x9')]);router['post']('/',auth[_0xa1d1('0xa')](),controller[_0xa1d1('0xb')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xa1d1('0xc')]);router[_0xa1d1('0xd')](_0xa1d1('0x8'),auth[_0xa1d1('0xa')](),controller['destroy']);module[_0xa1d1('0xe')]=router;
\ No newline at end of file
index 2a8cb03..d62bd93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4759=['exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment'];(function(_0x47cde9,_0x19d013){var _0x26fdf1=function(_0x32fb69){while(--_0x32fb69){_0x47cde9['push'](_0x47cde9['shift']());}};_0x26fdf1(++_0x19d013);}(_0x4759,0x171));var _0x9475=function(_0x3e6b2f,_0x1ffa07){_0x3e6b2f=_0x3e6b2f-0x0;var _0x323215=_0x4759[_0x3e6b2f];return _0x323215;};'use strict';var Sequelize=require(_0x9475('0x0'));var moment=require(_0x9475('0x1'));module[_0x9475('0x2')]={'time':{'type':Sequelize[_0x9475('0x3')]},'callid':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x9475('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x9475('0x4')],'allowNull':![],'defaultValue':moment()[_0x9475('0x5')](_0x9475('0x6'))}};
\ No newline at end of file
+var _0x8149=['moment','STRING','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x2d599c,_0x5495bb){var _0x27a44e=function(_0x489a2b){while(--_0x489a2b){_0x2d599c['push'](_0x2d599c['shift']());}};_0x27a44e(++_0x5495bb);}(_0x8149,0x1a3));var _0x9814=function(_0x18044b,_0x29c602){_0x18044b=_0x18044b-0x0;var _0x1dfb8b=_0x8149[_0x18044b];return _0x1dfb8b;};'use strict';var Sequelize=require(_0x9814('0x0'));var moment=require(_0x9814('0x1'));module['exports']={'time':{'type':Sequelize[_0x9814('0x2')]},'callid':{'type':Sequelize[_0x9814('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x9814('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x9814('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x9814('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x9814('0x3')](_0x9814('0x4'))}};
\ No newline at end of file
index dc16f7c..15476f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9386=['order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','create','body','find','destroy','eml-format','rimraf','zip-dir','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x46bd83,_0x56585b){var _0x3e4195=function(_0x72caed){while(--_0x72caed){_0x46bd83['push'](_0x46bd83['shift']());}};_0x3e4195(++_0x56585b);}(_0x9386,0x159));var _0x6938=function(_0x26a519,_0x3486c4){_0x26a519=_0x26a519-0x0;var _0x5caad7=_0x9386[_0x26a519];return _0x5caad7;};'use strict';var emlformat=require(_0x6938('0x0'));var rimraf=require(_0x6938('0x1'));var zipdir=require(_0x6938('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6938('0x3'));var util=require(_0x6938('0x4'));var path=require(_0x6938('0x5'));var sox=require('sox');var csv=require(_0x6938('0x6'));var ejs=require(_0x6938('0x7'));var fs=require('fs');var fs_extra=require(_0x6938('0x8'));var _=require(_0x6938('0x9'));var squel=require(_0x6938('0xa'));var crypto=require(_0x6938('0xb'));var jsforce=require(_0x6938('0xc'));var deskjs=require(_0x6938('0xd'));var toCsv=require(_0x6938('0x6'));var querystring=require(_0x6938('0xe'));var Papa=require(_0x6938('0xf'));var Redis=require('ioredis');var authService=require(_0x6938('0x10'));var qs=require(_0x6938('0x11'));var as=require(_0x6938('0x12'));var hardwareService=require(_0x6938('0x13'));var logger=require(_0x6938('0x14'))(_0x6938('0x15'));var utils=require(_0x6938('0x16'));var config=require(_0x6938('0x17'));var licenseUtil=require(_0x6938('0x18'));var db=require(_0x6938('0x19'))['db'];function respondWithStatusCode(_0x2f7737,_0x14d59a){_0x14d59a=_0x14d59a||0xcc;return function(_0x3133f8){if(_0x3133f8){return _0x2f7737[_0x6938('0x1a')](_0x14d59a);}return _0x2f7737[_0x6938('0x1b')](_0x14d59a)[_0x6938('0x1c')]();};}function respondWithResult(_0x5c3d47,_0x2db9c5){_0x2db9c5=_0x2db9c5||0xc8;return function(_0xa3f9fd){if(_0xa3f9fd){return _0x5c3d47[_0x6938('0x1b')](_0x2db9c5)[_0x6938('0x1d')](_0xa3f9fd);}};}function respondWithFilteredResult(_0x2e0025,_0xa31d15){return function(_0x269fbb){if(_0x269fbb){var _0x39802b=typeof _0xa31d15['offset']===_0x6938('0x1e')&&typeof _0xa31d15[_0x6938('0x1f')]===_0x6938('0x1e');var _0x3a0b96=_0x269fbb[_0x6938('0x20')];var _0x3a8e71=_0x39802b?0x0:_0xa31d15[_0x6938('0x21')];var _0x5419d2=_0x39802b?_0x269fbb['count']:_0xa31d15[_0x6938('0x21')]+_0xa31d15[_0x6938('0x1f')];var _0x4ec5f4;if(_0x5419d2>=_0x3a0b96){_0x5419d2=_0x3a0b96;_0x4ec5f4=0xc8;}else{_0x4ec5f4=0xce;}_0x2e0025['status'](_0x4ec5f4);return _0x2e0025[_0x6938('0x22')](_0x6938('0x23'),_0x3a8e71+'-'+_0x5419d2+'/'+_0x3a0b96)[_0x6938('0x1d')](_0x269fbb);}return null;};}function patchUpdates(_0x439be8){return function(_0x36cbec){try{jsonpatch[_0x6938('0x24')](_0x36cbec,_0x439be8,!![]);}catch(_0x1bfcd1){return BPromise[_0x6938('0x25')](_0x1bfcd1);}return _0x36cbec[_0x6938('0x26')]();};}function saveUpdates(_0x4e3260,_0x5e7f7e){return function(_0x5cbecc){if(_0x5cbecc){return _0x5cbecc[_0x6938('0x27')](_0x4e3260)['then'](function(_0x39d12e){return _0x39d12e;});}return null;};}function removeEntity(_0x43b504,_0x2efe36){return function(_0x34ec36){if(_0x34ec36){return _0x34ec36['destroy']()[_0x6938('0x28')](function(){_0x43b504['status'](0xcc)[_0x6938('0x1c')]();});}};}function handleEntityNotFound(_0x5a2ae0,_0x25d079){return function(_0x52fcbf){if(!_0x52fcbf){_0x5a2ae0['sendStatus'](0x194);}return _0x52fcbf;};}function handleError(_0x66b9ad,_0x3ca27c){_0x3ca27c=_0x3ca27c||0x1f4;return function(_0x10cdcb){logger[_0x6938('0x29')](_0x10cdcb[_0x6938('0x2a')]);if(_0x10cdcb[_0x6938('0x2b')]){delete _0x10cdcb[_0x6938('0x2b')];}_0x66b9ad['status'](_0x3ca27c)[_0x6938('0x2c')](_0x10cdcb);};}exports[_0x6938('0x2d')]=function(_0x122c18,_0x394286){var _0xd93427={},_0x36560f={},_0x4e0de2={'count':0x0,'rows':[]};var _0x59c954=_[_0x6938('0x2e')](db[_0x6938('0x2f')][_0x6938('0x30')],function(_0x468aca){return{'name':_0x468aca[_0x6938('0x31')],'type':_0x468aca[_0x6938('0x32')][_0x6938('0x33')]};});_0x36560f['model']=_[_0x6938('0x2e')](_0x59c954,_0x6938('0x2b'));_0x36560f[_0x6938('0x34')]=_['keys'](_0x122c18[_0x6938('0x34')]);_0x36560f['filters']=_[_0x6938('0x35')](_0x36560f[_0x6938('0x36')],_0x36560f[_0x6938('0x34')]);_0xd93427['attributes']=_['intersection'](_0x36560f[_0x6938('0x36')],qs[_0x6938('0x37')](_0x122c18[_0x6938('0x34')]['fields']));_0xd93427[_0x6938('0x38')]=_0xd93427[_0x6938('0x38')][_0x6938('0x39')]?_0xd93427[_0x6938('0x38')]:_0x36560f[_0x6938('0x36')];if(!_0x122c18['query'][_0x6938('0x3a')](_0x6938('0x3b'))){_0xd93427[_0x6938('0x1f')]=qs[_0x6938('0x1f')](_0x122c18[_0x6938('0x34')][_0x6938('0x1f')]);_0xd93427[_0x6938('0x21')]=qs[_0x6938('0x21')](_0x122c18[_0x6938('0x34')][_0x6938('0x21')]);}_0xd93427[_0x6938('0x3c')]=qs[_0x6938('0x3d')](_0x122c18[_0x6938('0x34')][_0x6938('0x3d')]);_0xd93427['where']=qs[_0x6938('0x3e')](_[_0x6938('0x3f')](_0x122c18['query'],_0x36560f['filters']),_0x59c954);if(_0x122c18[_0x6938('0x34')][_0x6938('0x40')]){_0xd93427[_0x6938('0x41')]=_[_0x6938('0x42')](_0xd93427['where'],{'$or':_[_0x6938('0x2e')](_0x59c954,function(_0x42e3ac){if(_0x42e3ac[_0x6938('0x32')]!==_0x6938('0x43')){var _0x20b52e={};_0x20b52e[_0x42e3ac[_0x6938('0x2b')]]={'$like':'%'+_0x122c18[_0x6938('0x34')][_0x6938('0x40')]+'%'};return _0x20b52e;}})});}_0xd93427=_[_0x6938('0x42')]({},_0xd93427,_0x122c18[_0x6938('0x44')]);var _0x2d9f46={'where':_0xd93427['where']};return db['VoiceQueuesLog'][_0x6938('0x20')](_0x2d9f46)[_0x6938('0x28')](function(_0x2942e9){_0x4e0de2[_0x6938('0x20')]=_0x2942e9;if(_0x122c18[_0x6938('0x34')][_0x6938('0x45')]){_0xd93427['include']=[{'all':!![]}];}return db[_0x6938('0x2f')][_0x6938('0x46')](_0xd93427);})['then'](function(_0x527683){_0x4e0de2[_0x6938('0x47')]=_0x527683;return _0x4e0de2;})['then'](respondWithFilteredResult(_0x394286,_0xd93427))[_0x6938('0x48')](handleError(_0x394286,null));};exports[_0x6938('0x49')]=function(_0x135575,_0x560eac){var _0x53c58f={'raw':!![],'where':{'id':_0x135575[_0x6938('0x4a')]['id']}},_0x285632={};_0x285632['model']=_[_0x6938('0x4b')](db[_0x6938('0x2f')][_0x6938('0x30')]);_0x285632[_0x6938('0x34')]=_['keys'](_0x135575[_0x6938('0x34')]);_0x285632['filters']=_[_0x6938('0x35')](_0x285632[_0x6938('0x36')],_0x285632[_0x6938('0x34')]);_0x53c58f[_0x6938('0x38')]=_[_0x6938('0x35')](_0x285632[_0x6938('0x36')],qs[_0x6938('0x37')](_0x135575['query'][_0x6938('0x37')]));_0x53c58f['attributes']=_0x53c58f['attributes']['length']?_0x53c58f['attributes']:_0x285632[_0x6938('0x36')];if(_0x135575[_0x6938('0x34')][_0x6938('0x45')]){_0x53c58f[_0x6938('0x4c')]=[{'all':!![]}];}_0x53c58f=_[_0x6938('0x42')]({},_0x53c58f,_0x135575[_0x6938('0x44')]);return db[_0x6938('0x2f')]['find'](_0x53c58f)[_0x6938('0x28')](handleEntityNotFound(_0x560eac,null))[_0x6938('0x28')](respondWithResult(_0x560eac,null))[_0x6938('0x48')](handleError(_0x560eac,null));};exports['create']=function(_0x59ddb6,_0x554bd2){return db[_0x6938('0x2f')][_0x6938('0x4d')](_0x59ddb6[_0x6938('0x4e')],{})[_0x6938('0x28')](respondWithResult(_0x554bd2,0xc9))[_0x6938('0x48')](handleError(_0x554bd2,null));};exports['update']=function(_0x10c947,_0x35a9a3){if(_0x10c947[_0x6938('0x4e')]['id']){delete _0x10c947[_0x6938('0x4e')]['id'];}return db['VoiceQueuesLog'][_0x6938('0x4f')]({'where':{'id':_0x10c947[_0x6938('0x4a')]['id']}})[_0x6938('0x28')](handleEntityNotFound(_0x35a9a3,null))[_0x6938('0x28')](saveUpdates(_0x10c947[_0x6938('0x4e')],null))[_0x6938('0x28')](respondWithResult(_0x35a9a3,null))[_0x6938('0x48')](handleError(_0x35a9a3,null));};exports[_0x6938('0x50')]=function(_0x162a02,_0x1f62a0){return db[_0x6938('0x2f')][_0x6938('0x4f')]({'where':{'id':_0x162a02['params']['id']}})[_0x6938('0x28')](handleEntityNotFound(_0x1f62a0,null))[_0x6938('0x28')](removeEntity(_0x1f62a0,null))['catch'](handleError(_0x1f62a0,null));};
\ No newline at end of file
+var _0xb0aa=['index','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','map','keys','filters','attributes','intersection','query','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','fields','include','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb0aa,0x71));var _0xab0a=function(_0x3cb5ca,_0x3fd3d2){_0x3cb5ca=_0x3cb5ca-0x0;var _0x5bf199=_0xb0aa[_0x3cb5ca];return _0x5bf199;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xab0a('0x0'));var zipdir=require(_0xab0a('0x1'));var jsonpatch=require(_0xab0a('0x2'));var rp=require(_0xab0a('0x3'));var moment=require('moment');var BPromise=require(_0xab0a('0x4'));var Mustache=require('mustache');var util=require(_0xab0a('0x5'));var path=require(_0xab0a('0x6'));var sox=require('sox');var csv=require(_0xab0a('0x7'));var ejs=require(_0xab0a('0x8'));var fs=require('fs');var fs_extra=require(_0xab0a('0x9'));var _=require(_0xab0a('0xa'));var squel=require('squel');var crypto=require(_0xab0a('0xb'));var jsforce=require(_0xab0a('0xc'));var deskjs=require(_0xab0a('0xd'));var toCsv=require('to-csv');var querystring=require(_0xab0a('0xe'));var Papa=require(_0xab0a('0xf'));var Redis=require(_0xab0a('0x10'));var authService=require(_0xab0a('0x11'));var qs=require(_0xab0a('0x12'));var as=require(_0xab0a('0x13'));var hardwareService=require(_0xab0a('0x14'));var logger=require(_0xab0a('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xab0a('0x16'));var licenseUtil=require(_0xab0a('0x17'));var db=require(_0xab0a('0x18'))['db'];function respondWithStatusCode(_0x52c945,_0x114a05){_0x114a05=_0x114a05||0xcc;return function(_0x514530){if(_0x514530){return _0x52c945[_0xab0a('0x19')](_0x114a05);}return _0x52c945[_0xab0a('0x1a')](_0x114a05)['end']();};}function respondWithResult(_0x46eaa0,_0x3de732){_0x3de732=_0x3de732||0xc8;return function(_0x2e8b23){if(_0x2e8b23){return _0x46eaa0[_0xab0a('0x1a')](_0x3de732)[_0xab0a('0x1b')](_0x2e8b23);}};}function respondWithFilteredResult(_0x1be906,_0x1eb46b){return function(_0x4f4cb0){if(_0x4f4cb0){var _0x3a2e82=typeof _0x1eb46b[_0xab0a('0x1c')]===_0xab0a('0x1d')&&typeof _0x1eb46b[_0xab0a('0x1e')]===_0xab0a('0x1d');var _0x3033d2=_0x4f4cb0[_0xab0a('0x1f')];var _0x909efb=_0x3a2e82?0x0:_0x1eb46b['offset'];var _0x26449a=_0x3a2e82?_0x4f4cb0[_0xab0a('0x1f')]:_0x1eb46b[_0xab0a('0x1c')]+_0x1eb46b[_0xab0a('0x1e')];var _0x2ae5c1;if(_0x26449a>=_0x3033d2){_0x26449a=_0x3033d2;_0x2ae5c1=0xc8;}else{_0x2ae5c1=0xce;}_0x1be906['status'](_0x2ae5c1);return _0x1be906[_0xab0a('0x20')](_0xab0a('0x21'),_0x909efb+'-'+_0x26449a+'/'+_0x3033d2)['json'](_0x4f4cb0);}return null;};}function patchUpdates(_0x3a06bb){return function(_0x1f992e){try{jsonpatch[_0xab0a('0x22')](_0x1f992e,_0x3a06bb,!![]);}catch(_0x1dfdc7){return BPromise[_0xab0a('0x23')](_0x1dfdc7);}return _0x1f992e[_0xab0a('0x24')]();};}function saveUpdates(_0x1fff70,_0x53a1a3){return function(_0x4743d1){if(_0x4743d1){return _0x4743d1[_0xab0a('0x25')](_0x1fff70)[_0xab0a('0x26')](function(_0x230892){return _0x230892;});}return null;};}function removeEntity(_0x414760,_0x19d937){return function(_0x1f5df9){if(_0x1f5df9){return _0x1f5df9[_0xab0a('0x27')]()[_0xab0a('0x26')](function(){_0x414760[_0xab0a('0x1a')](0xcc)[_0xab0a('0x28')]();});}};}function handleEntityNotFound(_0x3ed3fb,_0x2ac97d){return function(_0x3f6c85){if(!_0x3f6c85){_0x3ed3fb[_0xab0a('0x19')](0x194);}return _0x3f6c85;};}function handleError(_0x3a5352,_0x456fc2){_0x456fc2=_0x456fc2||0x1f4;return function(_0x373ebe){logger[_0xab0a('0x29')](_0x373ebe[_0xab0a('0x2a')]);if(_0x373ebe['name']){delete _0x373ebe[_0xab0a('0x2b')];}_0x3a5352[_0xab0a('0x1a')](_0x456fc2)[_0xab0a('0x2c')](_0x373ebe);};}exports[_0xab0a('0x2d')]=function(_0x354ded,_0xbb5fa6){var _0x39d4c6={},_0x35b0ea={},_0x23271a={'count':0x0,'rows':[]};var _0x47be63=_['map'](db[_0xab0a('0x2e')][_0xab0a('0x2f')],function(_0x3523f1){return{'name':_0x3523f1[_0xab0a('0x30')],'type':_0x3523f1[_0xab0a('0x31')][_0xab0a('0x32')]};});_0x35b0ea[_0xab0a('0x33')]=_[_0xab0a('0x34')](_0x47be63,_0xab0a('0x2b'));_0x35b0ea['query']=_[_0xab0a('0x35')](_0x354ded['query']);_0x35b0ea[_0xab0a('0x36')]=_['intersection'](_0x35b0ea[_0xab0a('0x33')],_0x35b0ea['query']);_0x39d4c6[_0xab0a('0x37')]=_[_0xab0a('0x38')](_0x35b0ea['model'],qs['fields'](_0x354ded[_0xab0a('0x39')]['fields']));_0x39d4c6[_0xab0a('0x37')]=_0x39d4c6['attributes'][_0xab0a('0x3a')]?_0x39d4c6[_0xab0a('0x37')]:_0x35b0ea[_0xab0a('0x33')];if(!_0x354ded[_0xab0a('0x39')][_0xab0a('0x3b')]('nolimit')){_0x39d4c6[_0xab0a('0x1e')]=qs['limit'](_0x354ded[_0xab0a('0x39')][_0xab0a('0x1e')]);_0x39d4c6[_0xab0a('0x1c')]=qs[_0xab0a('0x1c')](_0x354ded[_0xab0a('0x39')][_0xab0a('0x1c')]);}_0x39d4c6[_0xab0a('0x3c')]=qs[_0xab0a('0x3d')](_0x354ded[_0xab0a('0x39')]['sort']);_0x39d4c6[_0xab0a('0x3e')]=qs[_0xab0a('0x36')](_[_0xab0a('0x3f')](_0x354ded[_0xab0a('0x39')],_0x35b0ea['filters']),_0x47be63);if(_0x354ded['query']['filter']){_0x39d4c6[_0xab0a('0x3e')]=_[_0xab0a('0x40')](_0x39d4c6[_0xab0a('0x3e')],{'$or':_[_0xab0a('0x34')](_0x47be63,function(_0x52b5e5){if(_0x52b5e5[_0xab0a('0x31')]!==_0xab0a('0x41')){var _0x1069e5={};_0x1069e5[_0x52b5e5[_0xab0a('0x2b')]]={'$like':'%'+_0x354ded[_0xab0a('0x39')][_0xab0a('0x42')]+'%'};return _0x1069e5;}})});}_0x39d4c6=_[_0xab0a('0x40')]({},_0x39d4c6,_0x354ded[_0xab0a('0x43')]);var _0x4bd1bf={'where':_0x39d4c6['where']};return db['VoiceQueuesLog'][_0xab0a('0x1f')](_0x4bd1bf)[_0xab0a('0x26')](function(_0x4b8032){_0x23271a[_0xab0a('0x1f')]=_0x4b8032;if(_0x354ded[_0xab0a('0x39')][_0xab0a('0x44')]){_0x39d4c6['include']=[{'all':!![]}];}return db[_0xab0a('0x2e')][_0xab0a('0x45')](_0x39d4c6);})['then'](function(_0x3c4c87){_0x23271a[_0xab0a('0x46')]=_0x3c4c87;return _0x23271a;})['then'](respondWithFilteredResult(_0xbb5fa6,_0x39d4c6))[_0xab0a('0x47')](handleError(_0xbb5fa6,null));};exports[_0xab0a('0x48')]=function(_0x3393db,_0x3cc4fb){var _0x88ae75={'raw':!![],'where':{'id':_0x3393db[_0xab0a('0x49')]['id']}},_0x214b2c={};_0x214b2c[_0xab0a('0x33')]=_[_0xab0a('0x35')](db['VoiceQueuesLog'][_0xab0a('0x2f')]);_0x214b2c[_0xab0a('0x39')]=_[_0xab0a('0x35')](_0x3393db['query']);_0x214b2c[_0xab0a('0x36')]=_[_0xab0a('0x38')](_0x214b2c[_0xab0a('0x33')],_0x214b2c[_0xab0a('0x39')]);_0x88ae75[_0xab0a('0x37')]=_[_0xab0a('0x38')](_0x214b2c[_0xab0a('0x33')],qs['fields'](_0x3393db[_0xab0a('0x39')][_0xab0a('0x4a')]));_0x88ae75[_0xab0a('0x37')]=_0x88ae75['attributes'][_0xab0a('0x3a')]?_0x88ae75[_0xab0a('0x37')]:_0x214b2c[_0xab0a('0x33')];if(_0x3393db[_0xab0a('0x39')][_0xab0a('0x44')]){_0x88ae75[_0xab0a('0x4b')]=[{'all':!![]}];}_0x88ae75=_['merge']({},_0x88ae75,_0x3393db['options']);return db[_0xab0a('0x2e')][_0xab0a('0x4c')](_0x88ae75)[_0xab0a('0x26')](handleEntityNotFound(_0x3cc4fb,null))[_0xab0a('0x26')](respondWithResult(_0x3cc4fb,null))[_0xab0a('0x47')](handleError(_0x3cc4fb,null));};exports[_0xab0a('0x4d')]=function(_0x53a427,_0x21a126){return db['VoiceQueuesLog'][_0xab0a('0x4d')](_0x53a427[_0xab0a('0x4e')],{})[_0xab0a('0x26')](respondWithResult(_0x21a126,0xc9))['catch'](handleError(_0x21a126,null));};exports['update']=function(_0x2a0cee,_0x54e9c4){if(_0x2a0cee[_0xab0a('0x4e')]['id']){delete _0x2a0cee['body']['id'];}return db[_0xab0a('0x2e')]['find']({'where':{'id':_0x2a0cee['params']['id']}})[_0xab0a('0x26')](handleEntityNotFound(_0x54e9c4,null))[_0xab0a('0x26')](saveUpdates(_0x2a0cee[_0xab0a('0x4e')],null))[_0xab0a('0x26')](respondWithResult(_0x54e9c4,null))['catch'](handleError(_0x54e9c4,null));};exports[_0xab0a('0x27')]=function(_0x4472e1,_0x21cd17){return db[_0xab0a('0x2e')]['find']({'where':{'id':_0x4472e1[_0xab0a('0x49')]['id']}})[_0xab0a('0x26')](handleEntityNotFound(_0x21cd17,null))[_0xab0a('0x26')](removeEntity(_0x21cd17,null))[_0xab0a('0x47')](handleError(_0x21cd17,null));};
\ No newline at end of file
index 22ee0e1..0152b37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf180=['moment','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger'];(function(_0x4751f9,_0x19da43){var _0x1562ee=function(_0x1a4142){while(--_0x1a4142){_0x4751f9['push'](_0x4751f9['shift']());}};_0x1562ee(++_0x19da43);}(_0xf180,0xc0));var _0x0f18=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xf180[_0x432682];return _0x463d05;};'use strict';var _=require(_0x0f18('0x0'));var util=require(_0x0f18('0x1'));var logger=require(_0x0f18('0x2'))('api');var moment=require(_0x0f18('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0f18('0x4'));var rimraf=require(_0x0f18('0x5'));var config=require(_0x0f18('0x6'));var attributes=require(_0x0f18('0x7'));module['exports']=function(_0xc3989b,_0x29de66){return _0xc3989b['define'](_0x0f18('0x8'),attributes,{'tableName':_0x0f18('0x9'),'paranoid':![],'indexes':[{'name':_0x0f18('0xa'),'fields':[_0x0f18('0xb'),_0x0f18('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x1a9c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm'];(function(_0x27c0ed,_0x5eda1e){var _0x32faf4=function(_0x982032){while(--_0x982032){_0x27c0ed['push'](_0x27c0ed['shift']());}};_0x32faf4(++_0x5eda1e);}(_0x1a9c,0xff));var _0xc1a9=function(_0x4640e5,_0x3185d2){_0x4640e5=_0x4640e5-0x0;var _0xf1c7ad=_0x1a9c[_0x4640e5];return _0xf1c7ad;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc1a9('0x0'))(_0xc1a9('0x1'));var moment=require(_0xc1a9('0x2'));var BPromise=require(_0xc1a9('0x3'));var rp=require(_0xc1a9('0x4'));var fs=require('fs');var path=require(_0xc1a9('0x5'));var rimraf=require(_0xc1a9('0x6'));var config=require(_0xc1a9('0x7'));var attributes=require('./voiceQueuesLog.attributes');module[_0xc1a9('0x8')]=function(_0x2461ba,_0x51c7b7){return _0x2461ba[_0xc1a9('0x9')](_0xc1a9('0xa'),attributes,{'tableName':_0xc1a9('0xb'),'paranoid':![],'indexes':[{'name':_0xc1a9('0xc'),'fields':[_0xc1a9('0xd'),_0xc1a9('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index da13e8e..5490ddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f7=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x3ca0f2,_0x581036){var _0xddc540=function(_0x1c01fd){while(--_0x1c01fd){_0x3ca0f2['push'](_0x3ca0f2['shift']());}};_0xddc540(++_0x581036);}(_0x43f7,0xc3));var _0x743f=function(_0xcde22b,_0x568eda){_0xcde22b=_0xcde22b-0x0;var _0x6d6b00=_0x43f7[_0xcde22b];return _0x6d6b00;};'use strict';var _=require(_0x743f('0x0'));var util=require(_0x743f('0x1'));var moment=require(_0x743f('0x2'));var BPromise=require('bluebird');var rs=require(_0x743f('0x3'));var fs=require('fs');var Redis=require(_0x743f('0x4'));var db=require(_0x743f('0x5'))['db'];var utils=require(_0x743f('0x6'));var logger=require('../../config/logger')(_0x743f('0x7'));var config=require(_0x743f('0x8'));var jayson=require(_0x743f('0x9'));var client=jayson[_0x743f('0xa')][_0x743f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x233848,_0xfb2f1,_0x4fce08){return new BPromise(function(_0x2a0ecf,_0x309593){return client[_0x743f('0xc')](_0x233848,_0x4fce08)['then'](function(_0x5e4c50){logger['info'](_0x743f('0xd'),_0xfb2f1,_0x743f('0xe'));logger[_0x743f('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0xfb2f1,_0x743f('0xe'),JSON[_0x743f('0x10')](_0x5e4c50));if(_0x5e4c50[_0x743f('0x11')]){if(_0x5e4c50[_0x743f('0x11')]['code']===0x1f4){logger[_0x743f('0x11')](_0x743f('0xd'),_0xfb2f1,_0x5e4c50['error'][_0x743f('0x12')]);return _0x309593(_0x5e4c50['error'][_0x743f('0x12')]);}logger['error'](_0x743f('0xd'),_0xfb2f1,_0x5e4c50['error'][_0x743f('0x12')]);return _0x2a0ecf(_0x5e4c50[_0x743f('0x11')][_0x743f('0x12')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0xfb2f1,'request\x20sent');_0x2a0ecf(_0x5e4c50['result'][_0x743f('0x12')]);}})[_0x743f('0x13')](function(_0x3c440b){logger['error'](_0x743f('0xd'),_0xfb2f1,_0x3c440b);_0x309593(_0x3c440b);});});}
\ No newline at end of file
+var _0x1e1a=['rpc','../../config/environment','jayson/promise','http','request','VoiceQueuesLog,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x435688,_0x2f36c6){var _0x4a8e08=function(_0xc6f495){while(--_0xc6f495){_0x435688['push'](_0x435688['shift']());}};_0x4a8e08(++_0x2f36c6);}(_0x1e1a,0x175));var _0xa1e1=function(_0x4f08cf,_0x55e568){_0x4f08cf=_0x4f08cf-0x0;var _0x17e6f6=_0x1e1a[_0x4f08cf];return _0x17e6f6;};'use strict';var _=require('lodash');var util=require(_0xa1e1('0x0'));var moment=require(_0xa1e1('0x1'));var BPromise=require(_0xa1e1('0x2'));var rs=require(_0xa1e1('0x3'));var fs=require('fs');var Redis=require(_0xa1e1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa1e1('0x5'));var logger=require(_0xa1e1('0x6'))(_0xa1e1('0x7'));var config=require(_0xa1e1('0x8'));var jayson=require(_0xa1e1('0x9'));var client=jayson['client'][_0xa1e1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc7f20,_0x144740,_0x546bbc){return new BPromise(function(_0x3f3b97,_0x220472){return client[_0xa1e1('0xb')](_0xc7f20,_0x546bbc)['then'](function(_0x1d5e11){logger['info'](_0xa1e1('0xc'),_0x144740,'request\x20sent');logger[_0xa1e1('0xd')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x144740,_0xa1e1('0xe'),JSON[_0xa1e1('0xf')](_0x1d5e11));if(_0x1d5e11[_0xa1e1('0x10')]){if(_0x1d5e11['error'][_0xa1e1('0x11')]===0x1f4){logger[_0xa1e1('0x10')](_0xa1e1('0xc'),_0x144740,_0x1d5e11['error'][_0xa1e1('0x12')]);return _0x220472(_0x1d5e11[_0xa1e1('0x10')][_0xa1e1('0x12')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x144740,_0x1d5e11[_0xa1e1('0x10')]['message']);return _0x3f3b97(_0x1d5e11[_0xa1e1('0x10')]['message']);}else{logger[_0xa1e1('0x13')](_0xa1e1('0xc'),_0x144740,'request\x20sent');_0x3f3b97(_0x1d5e11['result'][_0xa1e1('0x12')]);}})['catch'](function(_0x1cc832){logger['error'](_0xa1e1('0xc'),_0x144740,_0x1cc832);_0x220472(_0x1cc832);});});}
\ No newline at end of file
index 3edf627..181852c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752f=['show','/:id/download','download','/:id/transcribe','post','create','runTranscribe','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated','/:id'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x752f,0x1f0));var _0xf752=function(_0x6961a6,_0x5e80bd){_0x6961a6=_0x6961a6-0x0;var _0x5d6611=_0x752f[_0x6961a6];return _0x5d6611;};'use strict';var multer=require(_0xf752('0x0'));var util=require(_0xf752('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf752('0x2'));var router=express[_0xf752('0x3')]();var fs_extra=require(_0xf752('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf752('0x5'));var config=require('../../config/environment');var controller=require(_0xf752('0x6'));router[_0xf752('0x7')]('/',auth[_0xf752('0x8')](),controller['index']);router['get']('/describe',auth[_0xf752('0x8')](),controller['describe']);router[_0xf752('0x7')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0xa')]);router[_0xf752('0x7')](_0xf752('0xb'),auth['isAuthenticated'](),controller[_0xf752('0xc')]);router['get']('/:id/downloads',controller['downloads']);router[_0xf752('0x7')](_0xf752('0xd'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0xf752('0xe')]('/',auth[_0xf752('0x8')](),controller[_0xf752('0xf')]);router['post'](_0xf752('0xd'),auth[_0xf752('0x8')](),controller[_0xf752('0x10')]);router[_0xf752('0x11')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0x12')]);router[_0xf752('0x13')](_0xf752('0x9'),auth[_0xf752('0x8')](),controller[_0xf752('0x14')]);module[_0xf752('0x15')]=router;
\ No newline at end of file
+var _0x296f=['download','downloads','/:id/transcribe','create','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x296f,0x1d6));var _0xf296=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0x296f[_0x5f42f1];return _0x5534ee;};'use strict';var multer=require(_0xf296('0x0'));var util=require(_0xf296('0x1'));var path=require(_0xf296('0x2'));var timeout=require(_0xf296('0x3'));var express=require(_0xf296('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf296('0x5'));var config=require(_0xf296('0x6'));var controller=require('./voiceRecording.controller');router[_0xf296('0x7')]('/',auth[_0xf296('0x8')](),controller[_0xf296('0x9')]);router[_0xf296('0x7')](_0xf296('0xa'),auth[_0xf296('0x8')](),controller['describe']);router[_0xf296('0x7')](_0xf296('0xb'),auth[_0xf296('0x8')](),controller[_0xf296('0xc')]);router[_0xf296('0x7')]('/:id/download',auth[_0xf296('0x8')](),controller[_0xf296('0xd')]);router[_0xf296('0x7')]('/:id/downloads',controller[_0xf296('0xe')]);router[_0xf296('0x7')](_0xf296('0xf'),auth['isAuthenticated'](),controller['downloadTranscribe']);router['post']('/',auth['isAuthenticated'](),controller[_0xf296('0x10')]);router[_0xf296('0x11')](_0xf296('0xf'),auth[_0xf296('0x8')](),controller['runTranscribe']);router[_0xf296('0x12')](_0xf296('0xb'),auth[_0xf296('0x8')](),controller[_0xf296('0x13')]);router[_0xf296('0x14')](_0xf296('0xb'),auth[_0xf296('0x8')](),controller[_0xf296('0x15')]);module[_0xf296('0x16')]=router;
\ No newline at end of file
index b936fe0..f29c834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index e40866d..ad2241e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae1c=['then','sendStatus','stack','name','send','map','VoiceRecording','rawAttributes','key','model','differenceBy','query','filters','attributes','intersection','fields','nolimit','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','rows','catch','params','keys','length','find','create','body','describe','download','../../components/encryptor','uniqueid','value','format','existsSync','secrets','recording','ValidationError','filename','extname','unlink','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','MD5','col','push','$and','%s.cypher','decryptFile','Sequelize','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','bucket','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy'];(function(_0x3eeb48,_0x20bd08){var _0x586724=function(_0x6ae73f){while(--_0x6ae73f){_0x3eeb48['push'](_0x3eeb48['shift']());}};_0x586724(++_0x20bd08);}(_0xae1c,0x107));var _0xcae1=function(_0x183a77,_0x986fa){_0x183a77=_0x183a77-0x0;var _0x33a2c4=_0xae1c[_0x183a77];return _0x33a2c4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcae1('0x0'));var jsonpatch=require(_0xcae1('0x1'));var rp=require(_0xcae1('0x2'));var moment=require(_0xcae1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcae1('0x4'));var path=require(_0xcae1('0x5'));var sox=require(_0xcae1('0x6'));var csv=require(_0xcae1('0x7'));var ejs=require(_0xcae1('0x8'));var fs=require('fs');var fs_extra=require(_0xcae1('0x9'));var _=require(_0xcae1('0xa'));var squel=require(_0xcae1('0xb'));var crypto=require(_0xcae1('0xc'));var jsforce=require(_0xcae1('0xd'));var deskjs=require(_0xcae1('0xe'));var toCsv=require(_0xcae1('0x7'));var querystring=require(_0xcae1('0xf'));var Papa=require('papaparse');var AWS=require(_0xcae1('0x10'));var uuidv4=require(_0xcae1('0x11'));var Redis=require(_0xcae1('0x12'));var authService=require(_0xcae1('0x13'));var qs=require(_0xcae1('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcae1('0x15'));var logger=require(_0xcae1('0x16'))('api');var utils=require(_0xcae1('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xcae1('0x18'));var db=require(_0xcae1('0x19'))['db'];function respondWithStatusCode(_0x21867b,_0x2c1c92){_0x2c1c92=_0x2c1c92||0xcc;return function(_0x374bb8){if(_0x374bb8){return _0x21867b['sendStatus'](_0x2c1c92);}return _0x21867b['status'](_0x2c1c92)[_0xcae1('0x1a')]();};}function respondWithResult(_0x190f52,_0x1e9f1a){_0x1e9f1a=_0x1e9f1a||0xc8;return function(_0x1d45b7){if(_0x1d45b7){return _0x190f52[_0xcae1('0x1b')](_0x1e9f1a)['json'](_0x1d45b7);}};}function respondWithFilteredResult(_0xe75364,_0x3483f8){return function(_0x3b4ae5){if(_0x3b4ae5){var _0x489950=typeof _0x3483f8[_0xcae1('0x1c')]===_0xcae1('0x1d')&&typeof _0x3483f8[_0xcae1('0x1e')]===_0xcae1('0x1d');var _0x42efa5=_0x3b4ae5[_0xcae1('0x1f')];var _0x18e7c0=_0x489950?0x0:_0x3483f8['offset'];var _0x31d6f4=_0x489950?_0x3b4ae5['count']:_0x3483f8[_0xcae1('0x1c')]+_0x3483f8[_0xcae1('0x1e')];var _0x6364a1;if(_0x31d6f4>=_0x42efa5){_0x31d6f4=_0x42efa5;_0x6364a1=0xc8;}else{_0x6364a1=0xce;}_0xe75364[_0xcae1('0x1b')](_0x6364a1);return _0xe75364[_0xcae1('0x20')](_0xcae1('0x21'),_0x18e7c0+'-'+_0x31d6f4+'/'+_0x42efa5)[_0xcae1('0x22')](_0x3b4ae5);}return null;};}function patchUpdates(_0x5b5942){return function(_0x33880c){try{jsonpatch['apply'](_0x33880c,_0x5b5942,!![]);}catch(_0x840653){return BPromise[_0xcae1('0x23')](_0x840653);}return _0x33880c[_0xcae1('0x24')]();};}function saveUpdates(_0x2dee30,_0x41873d){return function(_0x2f2ddf){if(_0x2f2ddf){return _0x2f2ddf[_0xcae1('0x25')](_0x2dee30)['then'](function(_0x38cc31){return _0x38cc31;});}return null;};}function removeEntity(_0x5a3deb,_0x115ad2){return function(_0x37e25c){if(_0x37e25c){return _0x37e25c[_0xcae1('0x26')]()[_0xcae1('0x27')](function(){_0x5a3deb[_0xcae1('0x1b')](0xcc)[_0xcae1('0x1a')]();});}};}function handleEntityNotFound(_0x14ecd3,_0x20b9b9){return function(_0x1c8824){if(!_0x1c8824){_0x14ecd3[_0xcae1('0x28')](0x194);}return _0x1c8824;};}function handleError(_0x42120c,_0xf950cc){_0xf950cc=_0xf950cc||0x1f4;return function(_0x40034b){logger['error'](_0x40034b[_0xcae1('0x29')]);if(_0x40034b[_0xcae1('0x2a')]){delete _0x40034b[_0xcae1('0x2a')];}_0x42120c[_0xcae1('0x1b')](_0xf950cc)[_0xcae1('0x2b')](_0x40034b);};}exports['index']=function(_0x41732b,_0x10ed44){var _0xcc594e={},_0x2e2788={},_0x3dfd73={'count':0x0,'rows':[]};var _0x1a691f=_[_0xcae1('0x2c')](db[_0xcae1('0x2d')][_0xcae1('0x2e')],function(_0x1605cd){return{'name':_0x1605cd['fieldName'],'type':_0x1605cd['type'][_0xcae1('0x2f')]};});_0x2e2788[_0xcae1('0x30')]=_[_0xcae1('0x31')](_[_0xcae1('0x2c')](_0x1a691f,'name'),['format']);_0x2e2788['query']=_['keys'](_0x41732b[_0xcae1('0x32')]);_0x2e2788[_0xcae1('0x33')]=_['intersection'](_0x2e2788[_0xcae1('0x30')],_0x2e2788['query']);_0xcc594e[_0xcae1('0x34')]=_[_0xcae1('0x35')](_0x2e2788['model'],qs[_0xcae1('0x36')](_0x41732b[_0xcae1('0x32')]['fields']));_0xcc594e['attributes']=_0xcc594e[_0xcae1('0x34')]['length']?_0xcc594e[_0xcae1('0x34')]:_0x2e2788['model'];if(!_0x41732b[_0xcae1('0x32')]['hasOwnProperty'](_0xcae1('0x37'))){_0xcc594e[_0xcae1('0x1e')]=qs[_0xcae1('0x1e')](_0x41732b[_0xcae1('0x32')][_0xcae1('0x1e')]);_0xcc594e[_0xcae1('0x1c')]=qs['offset'](_0x41732b['query'][_0xcae1('0x1c')]);}_0xcc594e['order']=qs['sort'](_0x41732b[_0xcae1('0x32')][_0xcae1('0x38')]);_0xcc594e['where']=qs[_0xcae1('0x33')](_[_0xcae1('0x39')](_0x41732b['query'],_0x2e2788[_0xcae1('0x33')]),_0x1a691f);if(_0x41732b[_0xcae1('0x32')][_0xcae1('0x3a')]){_0xcc594e['where']=_['merge'](_0xcc594e[_0xcae1('0x3b')],{'$or':_[_0xcae1('0x2c')](_0x1a691f,function(_0x33b442){if(_0x33b442[_0xcae1('0x3c')]!==_0xcae1('0x3d')){var _0x1cbd40={};_0x1cbd40[_0x33b442[_0xcae1('0x2a')]]={'$like':'%'+_0x41732b[_0xcae1('0x32')][_0xcae1('0x3a')]+'%'};return _0x1cbd40;}})});}_0xcc594e=_[_0xcae1('0x3e')]({},_0xcc594e,_0x41732b[_0xcae1('0x3f')]);var _0x40dd9f={'where':_0xcc594e['where']};return db[_0xcae1('0x2d')][_0xcae1('0x1f')](_0x40dd9f)[_0xcae1('0x27')](function(_0x229873){_0x3dfd73[_0xcae1('0x1f')]=_0x229873;if(_0x41732b[_0xcae1('0x32')][_0xcae1('0x40')]){_0xcc594e['include']=[{'all':!![]}];}return db[_0xcae1('0x2d')]['findAll'](_0xcc594e);})[_0xcae1('0x27')](function(_0xb82a60){_0x3dfd73[_0xcae1('0x41')]=_0xb82a60;return _0x3dfd73;})[_0xcae1('0x27')](respondWithFilteredResult(_0x10ed44,_0xcc594e))[_0xcae1('0x42')](handleError(_0x10ed44,null));};exports['show']=function(_0x18e243,_0x3b0c04){var _0x18fe78={'raw':![],'where':{'id':_0x18e243[_0xcae1('0x43')]['id']}},_0x3375d9={};_0x3375d9[_0xcae1('0x30')]=_[_0xcae1('0x44')](db[_0xcae1('0x2d')]['rawAttributes']);_0x3375d9[_0xcae1('0x32')]=_[_0xcae1('0x44')](_0x18e243[_0xcae1('0x32')]);_0x3375d9[_0xcae1('0x33')]=_[_0xcae1('0x35')](_0x3375d9['model'],_0x3375d9[_0xcae1('0x32')]);_0x18fe78[_0xcae1('0x34')]=_[_0xcae1('0x35')](_0x3375d9[_0xcae1('0x30')],qs['fields'](_0x18e243[_0xcae1('0x32')][_0xcae1('0x36')]));_0x18fe78[_0xcae1('0x34')]=_0x18fe78[_0xcae1('0x34')][_0xcae1('0x45')]?_0x18fe78[_0xcae1('0x34')]:_0x3375d9[_0xcae1('0x30')];if(_0x18e243['query'][_0xcae1('0x40')]){_0x18fe78['include']=[{'all':!![]}];}_0x18fe78=_[_0xcae1('0x3e')]({},_0x18fe78,_0x18e243[_0xcae1('0x3f')]);return db['VoiceRecording'][_0xcae1('0x46')](_0x18fe78)['then'](handleEntityNotFound(_0x3b0c04,null))[_0xcae1('0x27')](respondWithResult(_0x3b0c04,null))[_0xcae1('0x42')](handleError(_0x3b0c04,null));};exports[_0xcae1('0x47')]=function(_0x1f263e,_0x74efd0){return db[_0xcae1('0x2d')][_0xcae1('0x47')](_0x1f263e[_0xcae1('0x48')],{})[_0xcae1('0x27')](respondWithResult(_0x74efd0,0xc9))[_0xcae1('0x42')](handleError(_0x74efd0,null));};exports[_0xcae1('0x25')]=function(_0x564ab7,_0x493ec6){if(_0x564ab7['body']['id']){delete _0x564ab7[_0xcae1('0x48')]['id'];}return db[_0xcae1('0x2d')][_0xcae1('0x46')]({'where':{'id':_0x564ab7[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](handleEntityNotFound(_0x493ec6,null))[_0xcae1('0x27')](saveUpdates(_0x564ab7[_0xcae1('0x48')],null))[_0xcae1('0x27')](respondWithResult(_0x493ec6,null))['catch'](handleError(_0x493ec6,null));};exports[_0xcae1('0x49')]=function(_0xfe20a6,_0xa6d196){return db[_0xcae1('0x2d')][_0xcae1('0x49')]()[_0xcae1('0x27')](respondWithResult(_0xa6d196,null))['catch'](handleError(_0xa6d196,null));};exports[_0xcae1('0x4a')]=function(_0x17eb02,_0x3ce791,_0x355f79){var _0x31752b=require(_0xcae1('0x4b'));var _0x1859f5=![];var _0x3f0ece={};if(_0x17eb02[_0xcae1('0x32')]['type']&&_0x17eb02[_0xcae1('0x32')]['type']===_0xcae1('0x4c')){_0x3f0ece[_0xcae1('0x4c')]=_0x17eb02[_0xcae1('0x43')]['id'];}else{_0x3f0ece['id']=_0x17eb02[_0xcae1('0x43')]['id'];}return db['VoiceRecording']['find']({'where':_0x3f0ece,'attributes':['id',_0xcae1('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x3ce791,null))[_0xcae1('0x27')](function(_0x46d0e2){if(_0x46d0e2){var _0xff3c9e=_0x46d0e2[_0xcae1('0x4d')];var _0x5c62dd=util[_0xcae1('0x4e')]('%s.cypher',_0xff3c9e);if(fs[_0xcae1('0x4f')](_0x5c62dd)){_0x1859f5=!![];return _0x31752b['decryptFile'](_0x5c62dd,_0xff3c9e,config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x46d0e2;});}return _0x46d0e2;}})['then'](function(_0x2e81bf){if(_0x2e81bf){var _0x54d437=_0x2e81bf[_0xcae1('0x4d')];if(!fs['existsSync'](_0x54d437)){throw new db['Sequelize'][(_0xcae1('0x52'))]('VoiceRecording\x20not\x20found');}if(_0x2e81bf['filename']){return _0x3ce791[_0xcae1('0x4a')](_0x54d437,_0x2e81bf[_0xcae1('0x53')]+path[_0xcae1('0x54')](_0x54d437),function(){if(_0x1859f5){fs[_0xcae1('0x55')](_0x54d437);}});}else{return _0x3ce791['download'](_0x54d437,function(_0x240251){if(_0x1859f5){fs[_0xcae1('0x55')](_0x54d437);}});}}})[_0xcae1('0x42')](function(_0x145e45){if(_0x145e45['message']===_0xcae1('0x56')){_0x3ce791['status'](0x194)[_0xcae1('0x2b')](_0xcae1('0x57'));}else{return handleError(_0x3ce791,null);}});};exports[_0xcae1('0x58')]=function(_0x37d487,_0x16b857,_0x5b3176){var _0x1e2964=require(_0xcae1('0x4b'));var _0x46732f=![];var _0x576bd5={'$and':[db[_0xcae1('0x59')][_0xcae1('0x3b')](db[_0xcae1('0x59')]['fn'](_0xcae1('0x5a'),db['sequelize'][_0xcae1('0x5b')](_0xcae1('0x4c'))),_0x37d487[_0xcae1('0x32')]['token'])]};if(_0x37d487[_0xcae1('0x32')]['type']&&_0x37d487['query']['type']===_0xcae1('0x4c')){_0x576bd5['$and'][_0xcae1('0x5c')]({'uniqueid':_0x37d487[_0xcae1('0x43')]['id']});}else{_0x576bd5[_0xcae1('0x5d')][_0xcae1('0x5c')]({'id':_0x37d487['params']['id']});}return db['VoiceRecording'][_0xcae1('0x46')]({'where':_0x576bd5,'attributes':['id',_0xcae1('0x4d')],'raw':!![]})[_0xcae1('0x27')](handleEntityNotFound(_0x16b857,null))[_0xcae1('0x27')](function(_0x3ebe8b){if(_0x3ebe8b){var _0x3a53ea=util[_0xcae1('0x4e')](_0xcae1('0x5e'),_0x3ebe8b[_0xcae1('0x4d')]);if(fs['existsSync'](_0x3a53ea)){_0x46732f=!![];return _0x1e2964[_0xcae1('0x5f')](_0x3a53ea,_0x3ebe8b[_0xcae1('0x4d')],config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x3ebe8b;});}return _0x3ebe8b;}})['then'](function(_0x19165f){if(_0x19165f){if(!fs[_0xcae1('0x4f')](_0x19165f['value'])){throw new db[(_0xcae1('0x60'))][(_0xcae1('0x52'))]('VoiceRecording\x20not\x20found');}if(_0x19165f['filename']){return _0x16b857[_0xcae1('0x4a')](_0x19165f[_0xcae1('0x4d')],_0x19165f[_0xcae1('0x53')]+path['extname'](_0x19165f[_0xcae1('0x4d')]),function(){if(_0x46732f){fs[_0xcae1('0x55')](_0x19165f['value']);}});}else{return _0x16b857[_0xcae1('0x4a')](_0x19165f[_0xcae1('0x4d')],function(_0x84350b){if(_0x46732f){fs[_0xcae1('0x55')](_0x19165f[_0xcae1('0x4d')]);}});}}})['catch'](handleError(_0x16b857,null));};exports['destroy']=function(_0x2fef1a,_0x59de5a){return db[_0xcae1('0x2d')]['find']({'where':{'id':_0x2fef1a[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](function(_0x166e40){if(_['isNil'](_0x166e40)){throw new ReferenceError(_0xcae1('0x61'));}return _0x166e40;})[_0xcae1('0x27')](function(_0x5bf463){var _0x541c8=_0x5bf463['value'];logger[_0xcae1('0x62')](_0xcae1('0x63'),_0x541c8);if(!_[_0xcae1('0x64')](_0x5bf463[_0xcae1('0x4d')])&&fs['existsSync'](_0x541c8)){logger['info'](_0xcae1('0x65')+_0x541c8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xcae1('0x66')](_0x541c8);}_0x541c8=_0x541c8+'.cypher';if(!_['isNil'](_0x5bf463['value'])&&fs[_0xcae1('0x4f')](_0x541c8)){logger[_0xcae1('0x62')](_0xcae1('0x65')+_0x541c8+_0xcae1('0x67'));fs[_0xcae1('0x66')](_0x541c8);}return _0x5bf463;})[_0xcae1('0x27')](function(_0x265b3d){if(!_0x265b3d)throw new InternalError();return _0x265b3d[_0xcae1('0x26')]();})['then'](function(){_0x59de5a[_0xcae1('0x1b')](0xcc)[_0xcae1('0x1a')]();})[_0xcae1('0x42')](handleError(_0x59de5a,null));};function getBucketslist(_0x19fda5,_0x12350a,_0x2ab391){return new Promise(function(_0x39d7f7,_0xdaff1e){var _0x111c7b=new AWS['S3']({'accessKeyId':_0x12350a,'secretAccessKey':_0x19fda5,'region':_0x2ab391});_0x111c7b[_0xcae1('0x68')]({},function(_0xd10d00,_0x5641f5){if(_0xd10d00){return _0xdaff1e(_0xd10d00);}else{return _0x39d7f7(_0x5641f5);}});});}function createBucket(_0x199d30,_0x18ee57,_0x323732,_0x2140ec){return new Promise(function(_0x8ceeba,_0x563149){var _0x4dbb90=new AWS['S3']({'accessKeyId':_0x18ee57,'secretAccessKey':_0x199d30,'region':_0x323732});_0x4dbb90['createBucket']({'Bucket':_0x2140ec},function(_0x345e75,_0xdde312){if(_0x345e75){return _0x563149(_0x345e75);}else{return _0x8ceeba(_0xdde312);}});});}function uploadFile(_0x4c2132,_0x41a3be,_0x353804,_0x3787dd,_0x3f2060,_0x16247d){return new Promise(function(_0x34b9db,_0x26101b){var _0x24b83b=new AWS['S3']({'accessKeyId':_0x41a3be,'secretAccessKey':_0x4c2132,'region':_0x353804});_0x24b83b[_0xcae1('0x69')]({'Bucket':_0x3787dd,'Key':_0x3f2060,'Body':_0x16247d},function(_0x160481,_0x5d5352){if(_0x160481){return _0x26101b(_0x160481);}else{return _0x34b9db(_0x5d5352);}});});}function startTranscribe(_0x2d0d16,_0x5dd372,_0x2ba717,_0x5da617,_0xbf2361,_0xe4396f){return new Promise(function(_0x37ca4e,_0x57c682){var _0x38f160=new AWS['TranscribeService']({'accessKeyId':_0x5dd372,'secretAccessKey':_0x2d0d16,'region':_0x2ba717});_0x38f160['startTranscriptionJob']({'TranscriptionJobName':_0x5da617,'LanguageCode':_0xbf2361,'Media':{'MediaFileUri':_0xe4396f}},function(_0x2c925a,_0xe10828){if(_0x2c925a){return _0x57c682(_0x2c925a);}else{return _0x37ca4e(_0xe10828);}});});}function transcribe(_0x243b7d,_0xdab462,_0x4db559,_0x5e0a25,_0x1aed9a,_0x5c4008,_0x1b2803){return new Promise(function(_0x44f7f1,_0x25a5ec){var _0x3e5d0e={};logger[_0xcae1('0x62')](util[_0xcae1('0x4e')](_0xcae1('0x6a'),_0x243b7d,_0x1aed9a));return uploadFile(_0xdab462,_0x4db559,_0x5e0a25,_0x1aed9a,path[_0xcae1('0x6b')](_0x5c4008),fs[_0xcae1('0x6c')](_0x5c4008))[_0xcae1('0x27')](function(_0xe217c4){logger['info'](util[_0xcae1('0x4e')](_0xcae1('0x6d'),_0x243b7d,_0x1aed9a,_0xe217c4[_0xcae1('0x6e')]));_0x3e5d0e['bucket']=_0xe217c4[_0xcae1('0x6f')];_0x3e5d0e['location']=_0xe217c4['Location'];logger['info'](util[_0xcae1('0x4e')](_0xcae1('0x70'),_0x243b7d));return startTranscribe(_0xdab462,_0x4db559,_0x5e0a25,uuidv4(),_0x1b2803,_0xe217c4[_0xcae1('0x6e')]);})['then'](function(_0x371f37){logger[_0xcae1('0x62')](util[_0xcae1('0x4e')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x243b7d,_0x371f37[_0xcae1('0x71')][_0xcae1('0x72')]));_0x3e5d0e[_0xcae1('0x73')]=_0x371f37[_0xcae1('0x71')][_0xcae1('0x72')];_0x3e5d0e['transcribeStatus']=_0x371f37['TranscriptionJob'][_0xcae1('0x74')];return _0x44f7f1(_0x3e5d0e);})[_0xcae1('0x42')](function(_0x309494){return _0x25a5ec(_0x309494);});});}exports[_0xcae1('0x75')]=function(_0x5593d8,_0x5a8ba,_0x296997){var _0x360c44;var _0x5def5d;var _0x27ca7b;var _0x316119=require('../../components/encryptor');return db['VoiceRecording'][_0xcae1('0x76')]({'where':{'id':_0x5593d8[_0xcae1('0x43')]['id']}})[_0xcae1('0x27')](function(_0x496073){if(_0x496073){var _0x5130e0=util[_0xcae1('0x4e')](_0xcae1('0x5e'),_0x496073[_0xcae1('0x4d')]);if(fs['existsSync'](_0x5130e0)){cypher=!![];return _0x316119[_0xcae1('0x5f')](_0x5130e0,_0x496073['value'],config[_0xcae1('0x50')][_0xcae1('0x51')])['then'](function(){return _0x496073;});}return _0x496073;}})['then'](function(_0x501981){if(!_0x501981){throw new db['Sequelize']['ValidationError'](_0xcae1('0x77'));}_0x5def5d=_0x501981;return db[_0xcae1('0x78')][_0xcae1('0x76')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x5a8ba,null))[_0xcae1('0x27')](function(_0x175c46){if(_0x175c46){_0x360c44=_0x175c46;if(!_0x360c44[_0xcae1('0x79')]||!_0x360c44[_0xcae1('0x7a')]||!_0x360c44[_0xcae1('0x7b')]||!_0x360c44[_0xcae1('0x7c')]||!_0x360c44[_0xcae1('0x7d')]){throw new db[(_0xcae1('0x60'))][(_0xcae1('0x52'))](_0xcae1('0x7e'));}if(_0x5593d8[_0xcae1('0x48')][_0xcae1('0x7f')]&&(!_0x360c44[_0xcae1('0x80')]||!_0x360c44[_0xcae1('0x81')]||!_0x360c44[_0xcae1('0x82')]||!_0x360c44[_0xcae1('0x7c')]||!_0x360c44['bucket'])){throw new db['Sequelize'][(_0xcae1('0x52'))](_0xcae1('0x83'));}return db[_0xcae1('0x84')][_0xcae1('0x76')]({'where':{'id':_0x360c44[_0xcae1('0x7a')]}});}})[_0xcae1('0x27')](function(_0x48b106){if(!_0x48b106){throw new db['Sequelize'][(_0xcae1('0x52'))](_0xcae1('0x85'));}if(!_0x48b106['data1']||!_0x48b106[_0xcae1('0x86')]){throw new db['Sequelize']['ValidationError'](_0xcae1('0x87'));}_0x27ca7b=_0x48b106;return getBucketslist(_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')]);})[_0xcae1('0x27')](function(_0x40fc5d){if(_0x40fc5d&&_0x40fc5d[_0xcae1('0x89')]){var _0x33f22d=_[_0xcae1('0x46')](_0x40fc5d[_0xcae1('0x89')],function(_0x14a2eb){return _0x14a2eb[_0xcae1('0x8a')]===_0x360c44[_0xcae1('0x7d')];});if(!_0x33f22d){logger[_0xcae1('0x62')](util['format'](_0xcae1('0x8b'),_0x5593d8[_0xcae1('0x43')]['id'],_0x360c44[_0xcae1('0x7d')]));return createBucket(_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')],_0x360c44[_0xcae1('0x7d')]);}logger[_0xcae1('0x62')](util[_0xcae1('0x4e')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x5593d8[_0xcae1('0x43')]['id'],_0x360c44[_0xcae1('0x7d')]));return;}})[_0xcae1('0x27')](function(_0x1be3d0){if(_0x5def5d[_0xcae1('0x8c')]===_0xcae1('0x8d')){return transcribe(_0x5593d8[_0xcae1('0x43')]['id'],_0x27ca7b[_0xcae1('0x88')],_0x27ca7b[_0xcae1('0x86')],_0x360c44[_0xcae1('0x7b')],_0x360c44[_0xcae1('0x7d')],_0x5def5d[_0xcae1('0x4d')],_0x360c44['language']);}else{logger[_0xcae1('0x62')](util[_0xcae1('0x4e')](_0xcae1('0x8e'),_0x5593d8[_0xcae1('0x43')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0xcae1('0x27')](function(_0x427228){if(_0x427228){_0x427228[_0xcae1('0x8f')]=_0x5593d8[_0xcae1('0x48')]['runSentiment'];return _0x5def5d[_0xcae1('0x90')](_0x427228);}})['then'](respondWithResult(_0x5a8ba,null))[_0xcae1('0x42')](handleError(_0x5a8ba,null));};function writeFile(_0x3019e2,_0x25adc4){return new Promise(function(_0x3bf30f,_0xe7be01){fs[_0xcae1('0x91')](_0x25adc4,_0x3019e2,function(_0x34b474,_0x326976){if(_0x34b474){return _0xe7be01(_0x34b474);}else{return _0x3bf30f(_0x326976);}});});}exports[_0xcae1('0x92')]=function(_0x40a155,_0x125785,_0x3363fc){return db['VoiceRecording']['findOne']({'where':{'id':_0x40a155[_0xcae1('0x43')]['id']}})['then'](handleEntityNotFound(_0x125785))[_0xcae1('0x27')](function(_0x4d9c8d){if(_0x4d9c8d&&_0x4d9c8d[_0xcae1('0x93')]){var _0x485cc3=_0x4d9c8d[_0xcae1('0x93')];var _0x4a54d2=config[_0xcae1('0x94')]+'/server/files/transcribes/transcribe_'+_0x4d9c8d['id']+_0xcae1('0x95');if(fs[_0xcae1('0x4f')](_0x4a54d2)){return _0x4a54d2;}return writeFile(_0x485cc3,_0x4a54d2)[_0xcae1('0x27')](function(){return _0x4a54d2;});}else{throw new db['Sequelize']['ValidationError'](_0xcae1('0x96'));}})[_0xcae1('0x27')](function(_0x407db4){return _0x125785['download'](_0x407db4);})[_0xcae1('0x42')](handleError(_0x125785));};
\ No newline at end of file
+var _0x2da8=['show','params','catch','create','body','describe','download','uniqueid','find','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','extname','unlink','message','Not\x20found','../../components/encryptor','sequelize','MD5','col','token','$and','push','format','filename','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','unlinkSync','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','data2','Buckets','Name','data1','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','IN_PROGRESS','tempSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','request-promise','bluebird','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x51ebad,_0x150849){var _0x305e5d=function(_0x43eeb2){while(--_0x43eeb2){_0x51ebad['push'](_0x51ebad['shift']());}};_0x305e5d(++_0x150849);}(_0x2da8,0xe8));var _0x82da=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2da8[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x82da('0x0'));var rimraf=require(_0x82da('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x82da('0x2'));var moment=require('moment');var BPromise=require(_0x82da('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x82da('0x4'));var sox=require(_0x82da('0x5'));var csv=require(_0x82da('0x6'));var ejs=require(_0x82da('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82da('0x8'));var squel=require('squel');var crypto=require(_0x82da('0x9'));var jsforce=require(_0x82da('0xa'));var deskjs=require(_0x82da('0xb'));var toCsv=require(_0x82da('0x6'));var querystring=require(_0x82da('0xc'));var Papa=require(_0x82da('0xd'));var AWS=require(_0x82da('0xe'));var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0x82da('0xf'));var qs=require(_0x82da('0x10'));var as=require(_0x82da('0x11'));var hardwareService=require(_0x82da('0x12'));var logger=require('../../config/logger')(_0x82da('0x13'));var utils=require(_0x82da('0x14'));var config=require(_0x82da('0x15'));var licenseUtil=require(_0x82da('0x16'));var db=require(_0x82da('0x17'))['db'];function respondWithStatusCode(_0x19bb02,_0x1825e4){_0x1825e4=_0x1825e4||0xcc;return function(_0x37c52d){if(_0x37c52d){return _0x19bb02[_0x82da('0x18')](_0x1825e4);}return _0x19bb02[_0x82da('0x19')](_0x1825e4)[_0x82da('0x1a')]();};}function respondWithResult(_0x34f3cf,_0x225d2b){_0x225d2b=_0x225d2b||0xc8;return function(_0x2557a3){if(_0x2557a3){return _0x34f3cf[_0x82da('0x19')](_0x225d2b)[_0x82da('0x1b')](_0x2557a3);}};}function respondWithFilteredResult(_0x562fa3,_0x313530){return function(_0x21ace8){if(_0x21ace8){var _0x528cdb=typeof _0x313530[_0x82da('0x1c')]===_0x82da('0x1d')&&typeof _0x313530[_0x82da('0x1e')]===_0x82da('0x1d');var _0xdfed5d=_0x21ace8['count'];var _0xffa1c6=_0x528cdb?0x0:_0x313530['offset'];var _0x2afcc7=_0x528cdb?_0x21ace8[_0x82da('0x1f')]:_0x313530['offset']+_0x313530[_0x82da('0x1e')];var _0x531378;if(_0x2afcc7>=_0xdfed5d){_0x2afcc7=_0xdfed5d;_0x531378=0xc8;}else{_0x531378=0xce;}_0x562fa3[_0x82da('0x19')](_0x531378);return _0x562fa3[_0x82da('0x20')]('Content-Range',_0xffa1c6+'-'+_0x2afcc7+'/'+_0xdfed5d)['json'](_0x21ace8);}return null;};}function patchUpdates(_0x36c5fe){return function(_0x4d1193){try{jsonpatch[_0x82da('0x21')](_0x4d1193,_0x36c5fe,!![]);}catch(_0x3b9582){return BPromise[_0x82da('0x22')](_0x3b9582);}return _0x4d1193[_0x82da('0x23')]();};}function saveUpdates(_0xe543ff,_0x491646){return function(_0x2e89c5){if(_0x2e89c5){return _0x2e89c5[_0x82da('0x24')](_0xe543ff)['then'](function(_0x1867ea){return _0x1867ea;});}return null;};}function removeEntity(_0x497fe2,_0x3c4deb){return function(_0x22c744){if(_0x22c744){return _0x22c744[_0x82da('0x25')]()[_0x82da('0x26')](function(){_0x497fe2['status'](0xcc)[_0x82da('0x1a')]();});}};}function handleEntityNotFound(_0x56f17b,_0x516198){return function(_0x46e6bd){if(!_0x46e6bd){_0x56f17b['sendStatus'](0x194);}return _0x46e6bd;};}function handleError(_0x5f269d,_0x266aa1){_0x266aa1=_0x266aa1||0x1f4;return function(_0x1dfe45){logger[_0x82da('0x27')](_0x1dfe45[_0x82da('0x28')]);if(_0x1dfe45[_0x82da('0x29')]){delete _0x1dfe45[_0x82da('0x29')];}_0x5f269d[_0x82da('0x19')](_0x266aa1)[_0x82da('0x2a')](_0x1dfe45);};}exports['index']=function(_0x4d6c5d,_0xae4387){var _0x189a9b={},_0x2b9cdd={},_0x372ceb={'count':0x0,'rows':[]};var _0x14caa6=_['map'](db[_0x82da('0x2b')][_0x82da('0x2c')],function(_0x580ca4){return{'name':_0x580ca4[_0x82da('0x2d')],'type':_0x580ca4[_0x82da('0x2e')][_0x82da('0x2f')]};});_0x2b9cdd[_0x82da('0x30')]=_[_0x82da('0x31')](_['map'](_0x14caa6,_0x82da('0x29')),['format']);_0x2b9cdd[_0x82da('0x32')]=_[_0x82da('0x33')](_0x4d6c5d[_0x82da('0x32')]);_0x2b9cdd[_0x82da('0x34')]=_[_0x82da('0x35')](_0x2b9cdd[_0x82da('0x30')],_0x2b9cdd[_0x82da('0x32')]);_0x189a9b[_0x82da('0x36')]=_[_0x82da('0x35')](_0x2b9cdd[_0x82da('0x30')],qs['fields'](_0x4d6c5d[_0x82da('0x32')][_0x82da('0x37')]));_0x189a9b[_0x82da('0x36')]=_0x189a9b[_0x82da('0x36')][_0x82da('0x38')]?_0x189a9b[_0x82da('0x36')]:_0x2b9cdd[_0x82da('0x30')];if(!_0x4d6c5d['query'][_0x82da('0x39')](_0x82da('0x3a'))){_0x189a9b[_0x82da('0x1e')]=qs['limit'](_0x4d6c5d[_0x82da('0x32')][_0x82da('0x1e')]);_0x189a9b['offset']=qs['offset'](_0x4d6c5d[_0x82da('0x32')]['offset']);}_0x189a9b[_0x82da('0x3b')]=qs[_0x82da('0x3c')](_0x4d6c5d[_0x82da('0x32')]['sort']);_0x189a9b[_0x82da('0x3d')]=qs[_0x82da('0x34')](_[_0x82da('0x3e')](_0x4d6c5d['query'],_0x2b9cdd[_0x82da('0x34')]),_0x14caa6);if(_0x4d6c5d['query'][_0x82da('0x3f')]){_0x189a9b['where']=_[_0x82da('0x40')](_0x189a9b[_0x82da('0x3d')],{'$or':_[_0x82da('0x41')](_0x14caa6,function(_0x31bc08){if(_0x31bc08['type']!==_0x82da('0x42')){var _0x15d164={};_0x15d164[_0x31bc08[_0x82da('0x29')]]={'$like':'%'+_0x4d6c5d['query'][_0x82da('0x3f')]+'%'};return _0x15d164;}})});}_0x189a9b=_[_0x82da('0x40')]({},_0x189a9b,_0x4d6c5d[_0x82da('0x43')]);var _0x2e27b3={'where':_0x189a9b[_0x82da('0x3d')]};return db[_0x82da('0x2b')]['count'](_0x2e27b3)[_0x82da('0x26')](function(_0x10925e){_0x372ceb[_0x82da('0x1f')]=_0x10925e;if(_0x4d6c5d[_0x82da('0x32')][_0x82da('0x44')]){_0x189a9b[_0x82da('0x45')]=[{'all':!![]}];}return db[_0x82da('0x2b')][_0x82da('0x46')](_0x189a9b);})[_0x82da('0x26')](function(_0x26cae3){_0x372ceb[_0x82da('0x47')]=_0x26cae3;return _0x372ceb;})[_0x82da('0x26')](respondWithFilteredResult(_0xae4387,_0x189a9b))['catch'](handleError(_0xae4387,null));};exports[_0x82da('0x48')]=function(_0x2d8132,_0xa7092f){var _0x1100a4={'raw':![],'where':{'id':_0x2d8132[_0x82da('0x49')]['id']}},_0x1f6bbf={};_0x1f6bbf['model']=_['keys'](db['VoiceRecording'][_0x82da('0x2c')]);_0x1f6bbf[_0x82da('0x32')]=_['keys'](_0x2d8132[_0x82da('0x32')]);_0x1f6bbf[_0x82da('0x34')]=_[_0x82da('0x35')](_0x1f6bbf[_0x82da('0x30')],_0x1f6bbf['query']);_0x1100a4[_0x82da('0x36')]=_[_0x82da('0x35')](_0x1f6bbf[_0x82da('0x30')],qs[_0x82da('0x37')](_0x2d8132[_0x82da('0x32')][_0x82da('0x37')]));_0x1100a4[_0x82da('0x36')]=_0x1100a4[_0x82da('0x36')]['length']?_0x1100a4[_0x82da('0x36')]:_0x1f6bbf[_0x82da('0x30')];if(_0x2d8132[_0x82da('0x32')][_0x82da('0x44')]){_0x1100a4['include']=[{'all':!![]}];}_0x1100a4=_[_0x82da('0x40')]({},_0x1100a4,_0x2d8132[_0x82da('0x43')]);return db['VoiceRecording']['find'](_0x1100a4)[_0x82da('0x26')](handleEntityNotFound(_0xa7092f,null))['then'](respondWithResult(_0xa7092f,null))[_0x82da('0x4a')](handleError(_0xa7092f,null));};exports[_0x82da('0x4b')]=function(_0x1925e9,_0x4d9b30){return db[_0x82da('0x2b')]['create'](_0x1925e9[_0x82da('0x4c')],{})['then'](respondWithResult(_0x4d9b30,0xc9))[_0x82da('0x4a')](handleError(_0x4d9b30,null));};exports[_0x82da('0x24')]=function(_0x52ab93,_0x5e0f92){if(_0x52ab93[_0x82da('0x4c')]['id']){delete _0x52ab93[_0x82da('0x4c')]['id'];}return db[_0x82da('0x2b')]['find']({'where':{'id':_0x52ab93[_0x82da('0x49')]['id']}})[_0x82da('0x26')](handleEntityNotFound(_0x5e0f92,null))[_0x82da('0x26')](saveUpdates(_0x52ab93[_0x82da('0x4c')],null))[_0x82da('0x26')](respondWithResult(_0x5e0f92,null))[_0x82da('0x4a')](handleError(_0x5e0f92,null));};exports[_0x82da('0x4d')]=function(_0x59bc5c,_0x4487cd){return db[_0x82da('0x2b')][_0x82da('0x4d')]()[_0x82da('0x26')](respondWithResult(_0x4487cd,null))['catch'](handleError(_0x4487cd,null));};exports[_0x82da('0x4e')]=function(_0x11acff,_0x3b426d,_0x3bde45){var _0x3df109=require('../../components/encryptor');var _0x1d6b94=![];var _0x4e0d67={};if(_0x11acff[_0x82da('0x32')][_0x82da('0x2e')]&&_0x11acff[_0x82da('0x32')]['type']===_0x82da('0x4f')){_0x4e0d67[_0x82da('0x4f')]=_0x11acff[_0x82da('0x49')]['id'];}else{_0x4e0d67['id']=_0x11acff[_0x82da('0x49')]['id'];}return db['VoiceRecording'][_0x82da('0x50')]({'where':_0x4e0d67,'attributes':['id',_0x82da('0x51')],'raw':!![]})[_0x82da('0x26')](handleEntityNotFound(_0x3b426d,null))[_0x82da('0x26')](function(_0x1477ba){if(_0x1477ba){var _0x469ba8=_0x1477ba[_0x82da('0x51')];var _0x4d6675=util['format'](_0x82da('0x52'),_0x469ba8);if(fs[_0x82da('0x53')](_0x4d6675)){_0x1d6b94=!![];return _0x3df109[_0x82da('0x54')](_0x4d6675,_0x469ba8,config[_0x82da('0x55')][_0x82da('0x56')])['then'](function(){return _0x1477ba;});}return _0x1477ba;}})[_0x82da('0x26')](function(_0x4c8299){if(_0x4c8299){var _0x3cc1d9=_0x4c8299[_0x82da('0x51')];if(!fs[_0x82da('0x53')](_0x3cc1d9)){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))](_0x82da('0x59'));}if(_0x4c8299['filename']){return _0x3b426d[_0x82da('0x4e')](_0x3cc1d9,_0x4c8299['filename']+path[_0x82da('0x5a')](_0x3cc1d9),function(){if(_0x1d6b94){fs['unlink'](_0x3cc1d9);}});}else{return _0x3b426d[_0x82da('0x4e')](_0x3cc1d9,function(_0x1beb97){if(_0x1d6b94){fs[_0x82da('0x5b')](_0x3cc1d9);}});}}})[_0x82da('0x4a')](function(_0x5cc9dc){if(_0x5cc9dc[_0x82da('0x5c')]==='VoiceRecording\x20not\x20found'){_0x3b426d[_0x82da('0x19')](0x194)['send'](_0x82da('0x5d'));}else{return handleError(_0x3b426d,null);}});};exports['downloads']=function(_0x393aa8,_0x260273,_0xe897b){var _0x3523b9=require(_0x82da('0x5e'));var _0x26c74e=![];var _0x61c49f={'$and':[db[_0x82da('0x5f')][_0x82da('0x3d')](db[_0x82da('0x5f')]['fn'](_0x82da('0x60'),db[_0x82da('0x5f')][_0x82da('0x61')](_0x82da('0x4f'))),_0x393aa8['query'][_0x82da('0x62')])]};if(_0x393aa8['query'][_0x82da('0x2e')]&&_0x393aa8[_0x82da('0x32')]['type']===_0x82da('0x4f')){_0x61c49f['$and']['push']({'uniqueid':_0x393aa8[_0x82da('0x49')]['id']});}else{_0x61c49f[_0x82da('0x63')][_0x82da('0x64')]({'id':_0x393aa8[_0x82da('0x49')]['id']});}return db[_0x82da('0x2b')][_0x82da('0x50')]({'where':_0x61c49f,'attributes':['id',_0x82da('0x51')],'raw':!![]})[_0x82da('0x26')](handleEntityNotFound(_0x260273,null))[_0x82da('0x26')](function(_0x3d828d){if(_0x3d828d){var _0x168760=util[_0x82da('0x65')](_0x82da('0x52'),_0x3d828d[_0x82da('0x51')]);if(fs[_0x82da('0x53')](_0x168760)){_0x26c74e=!![];return _0x3523b9['decryptFile'](_0x168760,_0x3d828d[_0x82da('0x51')],config[_0x82da('0x55')]['recording'])['then'](function(){return _0x3d828d;});}return _0x3d828d;}})[_0x82da('0x26')](function(_0x5061b2){if(_0x5061b2){if(!fs[_0x82da('0x53')](_0x5061b2[_0x82da('0x51')])){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))]('VoiceRecording\x20not\x20found');}if(_0x5061b2[_0x82da('0x66')]){return _0x260273[_0x82da('0x4e')](_0x5061b2['value'],_0x5061b2['filename']+path['extname'](_0x5061b2[_0x82da('0x51')]),function(){if(_0x26c74e){fs['unlink'](_0x5061b2[_0x82da('0x51')]);}});}else{return _0x260273[_0x82da('0x4e')](_0x5061b2['value'],function(_0x56d8ac){if(_0x26c74e){fs['unlink'](_0x5061b2['value']);}});}}})[_0x82da('0x4a')](handleError(_0x260273,null));};exports[_0x82da('0x25')]=function(_0x517b64,_0x486bb9){return db[_0x82da('0x2b')][_0x82da('0x50')]({'where':{'id':_0x517b64[_0x82da('0x49')]['id']}})[_0x82da('0x26')](function(_0x37c77c){if(_['isNil'](_0x37c77c)){throw new ReferenceError(_0x82da('0x67'));}return _0x37c77c;})[_0x82da('0x26')](function(_0x1aeeeb){var _0x4edf84=_0x1aeeeb[_0x82da('0x51')];logger[_0x82da('0x68')](_0x82da('0x69'),_0x4edf84);if(!_[_0x82da('0x6a')](_0x1aeeeb['value'])&&fs[_0x82da('0x53')](_0x4edf84)){logger['info']('File:\x20\x22'+_0x4edf84+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x82da('0x6b')](_0x4edf84);}_0x4edf84=_0x4edf84+_0x82da('0x6c');if(!_[_0x82da('0x6a')](_0x1aeeeb[_0x82da('0x51')])&&fs[_0x82da('0x53')](_0x4edf84)){logger[_0x82da('0x68')](_0x82da('0x6d')+_0x4edf84+_0x82da('0x6e'));fs[_0x82da('0x6b')](_0x4edf84);}return _0x1aeeeb;})['then'](function(_0x34248b){if(!_0x34248b)throw new InternalError();return _0x34248b[_0x82da('0x25')]();})[_0x82da('0x26')](function(){_0x486bb9['status'](0xcc)[_0x82da('0x1a')]();})['catch'](handleError(_0x486bb9,null));};function getBucketslist(_0x2f65b7,_0x489c25,_0x103d90){return new Promise(function(_0x299742,_0x376ec1){var _0x1a86d2=new AWS['S3']({'accessKeyId':_0x489c25,'secretAccessKey':_0x2f65b7,'region':_0x103d90});_0x1a86d2['listBuckets']({},function(_0x30422c,_0x17d5a8){if(_0x30422c){return _0x376ec1(_0x30422c);}else{return _0x299742(_0x17d5a8);}});});}function createBucket(_0xd3e5c,_0x1179a3,_0x4c5d05,_0xdfe7c8){return new Promise(function(_0x3d09a7,_0x3a5344){var _0x27b1b3=new AWS['S3']({'accessKeyId':_0x1179a3,'secretAccessKey':_0xd3e5c,'region':_0x4c5d05});_0x27b1b3['createBucket']({'Bucket':_0xdfe7c8},function(_0x4c5e9b,_0x22abb4){if(_0x4c5e9b){return _0x3a5344(_0x4c5e9b);}else{return _0x3d09a7(_0x22abb4);}});});}function uploadFile(_0x7930a1,_0x4e10b2,_0x44a9fc,_0x1996fc,_0x261423,_0x3ad170){return new Promise(function(_0x3391a9,_0x411cdb){var _0x17d9be=new AWS['S3']({'accessKeyId':_0x4e10b2,'secretAccessKey':_0x7930a1,'region':_0x44a9fc});_0x17d9be[_0x82da('0x6f')]({'Bucket':_0x1996fc,'Key':_0x261423,'Body':_0x3ad170},function(_0x40288c,_0x4bedd8){if(_0x40288c){return _0x411cdb(_0x40288c);}else{return _0x3391a9(_0x4bedd8);}});});}function startTranscribe(_0x553e62,_0x8b207c,_0x50d1cf,_0xef9fe6,_0x2b6e15,_0x221ab2){return new Promise(function(_0x8f0fe8,_0x158429){var _0x274449=new AWS['TranscribeService']({'accessKeyId':_0x8b207c,'secretAccessKey':_0x553e62,'region':_0x50d1cf});_0x274449[_0x82da('0x70')]({'TranscriptionJobName':_0xef9fe6,'LanguageCode':_0x2b6e15,'Media':{'MediaFileUri':_0x221ab2}},function(_0x19017f,_0x2c6c34){if(_0x19017f){return _0x158429(_0x19017f);}else{return _0x8f0fe8(_0x2c6c34);}});});}function transcribe(_0x1d80df,_0x141943,_0x59e5fc,_0xd58e78,_0x1487c2,_0x2c7386,_0x548d7f){return new Promise(function(_0x205feb,_0x57b811){var _0xad45d9={};logger[_0x82da('0x68')](util['format'](_0x82da('0x71'),_0x1d80df,_0x1487c2));return uploadFile(_0x141943,_0x59e5fc,_0xd58e78,_0x1487c2,path[_0x82da('0x72')](_0x2c7386),fs['readFileSync'](_0x2c7386))[_0x82da('0x26')](function(_0xa0bd90){logger[_0x82da('0x68')](util[_0x82da('0x65')](_0x82da('0x73'),_0x1d80df,_0x1487c2,_0xa0bd90[_0x82da('0x74')]));_0xad45d9[_0x82da('0x75')]=_0xa0bd90[_0x82da('0x76')];_0xad45d9['location']=_0xa0bd90['Location'];logger['info'](util[_0x82da('0x65')](_0x82da('0x77'),_0x1d80df));return startTranscribe(_0x141943,_0x59e5fc,_0xd58e78,uuidv4(),_0x548d7f,_0xa0bd90['Location']);})[_0x82da('0x26')](function(_0x1a099c){logger['info'](util['format'](_0x82da('0x78'),_0x1d80df,_0x1a099c[_0x82da('0x79')]['TranscriptionJobName']));_0xad45d9['transcribeName']=_0x1a099c[_0x82da('0x79')][_0x82da('0x7a')];_0xad45d9[_0x82da('0x7b')]=_0x1a099c['TranscriptionJob']['TranscriptionJobStatus'];return _0x205feb(_0xad45d9);})['catch'](function(_0x39c7b8){return _0x57b811(_0x39c7b8);});});}exports[_0x82da('0x7c')]=function(_0x8fe89e,_0x11b0e6,_0x445245){var _0x239df7;var _0x4a1a5e;var _0x15f2f3;var _0x62a2d4=require(_0x82da('0x5e'));return db[_0x82da('0x2b')][_0x82da('0x7d')]({'where':{'id':_0x8fe89e[_0x82da('0x49')]['id']}})['then'](function(_0x519d39){if(_0x519d39){var _0x4446c0=util[_0x82da('0x65')]('%s.cypher',_0x519d39['value']);if(fs[_0x82da('0x53')](_0x4446c0)){cypher=!![];return _0x62a2d4[_0x82da('0x54')](_0x4446c0,_0x519d39[_0x82da('0x51')],config[_0x82da('0x55')]['recording'])[_0x82da('0x26')](function(){return _0x519d39;});}return _0x519d39;}})[_0x82da('0x26')](function(_0x208b91){if(!_0x208b91){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))](_0x82da('0x7e'));}_0x4a1a5e=_0x208b91;return db[_0x82da('0x7f')][_0x82da('0x7d')]({'where':{'id':0x1}});})[_0x82da('0x26')](handleEntityNotFound(_0x11b0e6,null))[_0x82da('0x26')](function(_0x36e412){if(_0x36e412){_0x239df7=_0x36e412;if(!_0x239df7[_0x82da('0x80')]||!_0x239df7[_0x82da('0x81')]||!_0x239df7[_0x82da('0x82')]||!_0x239df7['language']||!_0x239df7[_0x82da('0x75')]){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))](_0x82da('0x83'));}if(_0x8fe89e[_0x82da('0x4c')][_0x82da('0x84')]&&(!_0x239df7[_0x82da('0x85')]||!_0x239df7[_0x82da('0x86')]||!_0x239df7[_0x82da('0x87')]||!_0x239df7[_0x82da('0x88')]||!_0x239df7[_0x82da('0x75')])){throw new db[(_0x82da('0x57'))]['ValidationError'](_0x82da('0x89'));}return db['CloudProvider'][_0x82da('0x7d')]({'where':{'id':_0x239df7['transcribeAccountId']}});}})['then'](function(_0x10b998){if(!_0x10b998){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x10b998['data1']||!_0x10b998[_0x82da('0x8a')]){throw new db[(_0x82da('0x57'))][(_0x82da('0x58'))]('Cloud\x20Provider\x20not\x20configured');}_0x15f2f3=_0x10b998;return getBucketslist(_0x15f2f3['data1'],_0x15f2f3[_0x82da('0x8a')],_0x239df7[_0x82da('0x82')]);})['then'](function(_0x5cb45e){if(_0x5cb45e&&_0x5cb45e['Buckets']){var _0x1c19ff=_['find'](_0x5cb45e[_0x82da('0x8b')],function(_0x59d18e){return _0x59d18e[_0x82da('0x8c')]===_0x239df7[_0x82da('0x75')];});if(!_0x1c19ff){logger[_0x82da('0x68')](util[_0x82da('0x65')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x8fe89e[_0x82da('0x49')]['id'],_0x239df7[_0x82da('0x75')]));return createBucket(_0x15f2f3[_0x82da('0x8d')],_0x15f2f3[_0x82da('0x8a')],_0x239df7[_0x82da('0x82')],_0x239df7[_0x82da('0x75')]);}logger[_0x82da('0x68')](util[_0x82da('0x65')](_0x82da('0x8e'),_0x8fe89e[_0x82da('0x49')]['id'],_0x239df7[_0x82da('0x75')]));return;}})[_0x82da('0x26')](function(_0x4e6d38){if(_0x4a1a5e[_0x82da('0x7b')]==='NEW'){return transcribe(_0x8fe89e['params']['id'],_0x15f2f3[_0x82da('0x8d')],_0x15f2f3['data2'],_0x239df7[_0x82da('0x82')],_0x239df7[_0x82da('0x75')],_0x4a1a5e[_0x82da('0x51')],_0x239df7[_0x82da('0x88')]);}else{logger['info'](util[_0x82da('0x65')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x8fe89e[_0x82da('0x49')]['id']));return{'transcribeStatus':_0x82da('0x8f')};}})['then'](function(_0x37a86f){if(_0x37a86f){_0x37a86f[_0x82da('0x90')]=_0x8fe89e[_0x82da('0x4c')][_0x82da('0x84')];return _0x4a1a5e['updateAttributes'](_0x37a86f);}})['then'](respondWithResult(_0x11b0e6,null))[_0x82da('0x4a')](handleError(_0x11b0e6,null));};function writeFile(_0x31df03,_0x5d8b76){return new Promise(function(_0x35c9fa,_0x33c63c){fs[_0x82da('0x91')](_0x5d8b76,_0x31df03,function(_0x17455b,_0x578b2f){if(_0x17455b){return _0x33c63c(_0x17455b);}else{return _0x35c9fa(_0x578b2f);}});});}exports[_0x82da('0x92')]=function(_0x33287c,_0x2d23e3,_0x14ae5a){return db[_0x82da('0x2b')][_0x82da('0x7d')]({'where':{'id':_0x33287c[_0x82da('0x49')]['id']}})[_0x82da('0x26')](handleEntityNotFound(_0x2d23e3))[_0x82da('0x26')](function(_0x40b8f1){if(_0x40b8f1&&_0x40b8f1['fileText']){var _0x10deeb=_0x40b8f1[_0x82da('0x93')];var _0x58802d=config[_0x82da('0x94')]+_0x82da('0x95')+_0x40b8f1['id']+_0x82da('0x96');if(fs[_0x82da('0x53')](_0x58802d)){return _0x58802d;}return writeFile(_0x10deeb,_0x58802d)[_0x82da('0x26')](function(){return _0x58802d;});}else{throw new db['Sequelize'][(_0x82da('0x58'))](_0x82da('0x97'));}})['then'](function(_0xd34bfa){return _0x2d23e3[_0x82da('0x4e')](_0xd34bfa);})[_0x82da('0x4a')](handleError(_0x2d23e3));};
\ No newline at end of file
index fcbbec1..dce759c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4373=['exports','define','VoiceRecording','voice_recordings','lodash','api','request-promise','path','rimraf','../../config/environment'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x4373,0xfe));var _0x3437=function(_0x393559,_0x436ab9){_0x393559=_0x393559-0x0;var _0x5c4950=_0x4373[_0x393559];return _0x5c4950;};'use strict';var _=require(_0x3437('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3437('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3437('0x2'));var fs=require('fs');var path=require(_0x3437('0x3'));var rimraf=require(_0x3437('0x4'));var config=require(_0x3437('0x5'));var attributes=require('./voiceRecording.attributes');module[_0x3437('0x6')]=function(_0x386e02,_0x2a5840){return _0x386e02[_0x3437('0x7')](_0x3437('0x8'),attributes,{'tableName':_0x3437('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd4bf=['uniqueid','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define','VoiceRecording','voice_recordings'];(function(_0x5401b0,_0x16f8fc){var _0x8d0804=function(_0x3ad084){while(--_0x3ad084){_0x5401b0['push'](_0x5401b0['shift']());}};_0x8d0804(++_0x16f8fc);}(_0xd4bf,0x1b1));var _0xfd4b=function(_0x1ae14c,_0x62df1){_0x1ae14c=_0x1ae14c-0x0;var _0x3cc757=_0xd4bf[_0x1ae14c];return _0x3cc757;};'use strict';var _=require('lodash');var util=require(_0xfd4b('0x0'));var logger=require(_0xfd4b('0x1'))('api');var moment=require(_0xfd4b('0x2'));var BPromise=require(_0xfd4b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd4b('0x4'));var rimraf=require(_0xfd4b('0x5'));var config=require(_0xfd4b('0x6'));var attributes=require('./voiceRecording.attributes');module[_0xfd4b('0x7')]=function(_0x540164,_0x560cfc){return _0x540164[_0xfd4b('0x8')](_0xfd4b('0x9'),attributes,{'tableName':_0xfd4b('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xfd4b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index c83cf7d..fcc77cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['request','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','limit','then','../../components/encryptor','findOne','callRecordingEncryption','create','existsSync','%s.cypher','encryptFile','value','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0x90b1,0x1bb));var _0x190b=function(_0xe4034a,_0x3459b2){_0xe4034a=_0xe4034a-0x0;var _0x189750=_0x90b1[_0xe4034a];return _0x189750;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var moment=require(_0x190b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x190b('0x3'));var db=require(_0x190b('0x4'))['db'];var utils=require(_0x190b('0x5'));var logger=require(_0x190b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x190b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34a689,_0x3b57f7,_0x626aa1){return new BPromise(function(_0x311161,_0x802924){return client[_0x190b('0x8')](_0x34a689,_0x626aa1)['then'](function(_0x14b93d){logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));logger[_0x190b('0xc')](_0x190b('0xd'),_0x3b57f7,_0x190b('0xb'),JSON[_0x190b('0xe')](_0x14b93d));if(_0x14b93d['error']){if(_0x14b93d[_0x190b('0xf')][_0x190b('0x10')]===0x1f4){logger['error'](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x802924(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}logger[_0x190b('0xf')](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x311161(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}else{logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));_0x311161(_0x14b93d[_0x190b('0x12')][_0x190b('0x11')]);}})[_0x190b('0x13')](function(_0x5c63d9){logger[_0x190b('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}exports[_0x190b('0x14')]=function(_0x21e458){var _0x56d07a=this;return new Promise(function(_0x16c009,_0x50a3c4){return db[_0x190b('0x15')][_0x190b('0x16')](_0x21e458[_0x190b('0x17')],{'raw':_0x21e458[_0x190b('0x18')]?_0x21e458[_0x190b('0x18')][_0x190b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1a')]||null:null,'attributes':_0x21e458['options']?_0x21e458[_0x190b('0x18')]['attributes']||null:null,'limit':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1b')]||null:null})[_0x190b('0x1c')](function(_0x4c0b6e){logger[_0x190b('0x9')](_0x190b('0x14'),_0x21e458);logger[_0x190b('0xc')](_0x190b('0x14'),_0x21e458,JSON[_0x190b('0xe')](_0x4c0b6e));_0x16c009(_0x4c0b6e);})[_0x190b('0x13')](function(_0x1bce97){logger['error']('UpdateVoiceRecording',_0x1bce97[_0x190b('0x11')],_0x21e458);_0x50a3c4(_0x56d07a[_0x190b('0xf')](0x1f4,_0x1bce97['message']));});});};exports['CreateVoiceRecording']=function(_0x3260d5){var _0x4e2a93=this;return new Promise(function(_0x328e5e,_0x3b6aaf){var _0x51f8b4=require(_0x190b('0x1d'));var _0x1deea6;return db['Setting'][_0x190b('0x1e')]({'attributes':['id',_0x190b('0x1f')],'where':{'id':0x1},'raw':!![]})[_0x190b('0x1c')](function(_0x494f3f){_0x1deea6=_0x494f3f;return db['VoiceRecording'][_0x190b('0x20')](_0x3260d5['body']);})[_0x190b('0x1c')](function(_0x19e421){if(_0x1deea6['callRecordingEncryption']&&fs[_0x190b('0x21')](_0x19e421['value'])){var _0x40d060=util['format'](_0x190b('0x22'),_0x19e421['value']);return _0x51f8b4[_0x190b('0x23')](_0x19e421[_0x190b('0x24')],_0x40d060,config['secrets'][_0x190b('0x25')])[_0x190b('0x1c')](function(){fs[_0x190b('0x26')](_0x19e421[_0x190b('0x24')]);logger[_0x190b('0x9')](_0x190b('0x27'));return _0x19e421;});}return _0x19e421;})[_0x190b('0x1c')](function(_0x248919){logger['info']('CreateVoiceRecording',_0x3260d5);logger[_0x190b('0xc')](_0x190b('0x28'),_0x3260d5,JSON['stringify'](_0x248919));_0x328e5e(_0x248919);})[_0x190b('0x13')](function(_0x2dcd39){logger[_0x190b('0xf')](_0x190b('0x28'),_0x2dcd39[_0x190b('0x11')],_0x3260d5);_0x3b6aaf(_0x4e2a93[_0x190b('0xf')](0x1f4,_0x2dcd39[_0x190b('0x11')]));});});};
\ No newline at end of file
+var _0x25e7=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','attributes','limit','callRecordingEncryption','existsSync','format','%s.cypher','value','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','stringify','CreateVoiceRecording','lodash','util','moment'];(function(_0x3987a1,_0x447793){var _0xe2596e=function(_0x546925){while(--_0x546925){_0x3987a1['push'](_0x3987a1['shift']());}};_0xe2596e(++_0x447793);}(_0x25e7,0x1d6));var _0x725e=function(_0x2724ab,_0x4890a8){_0x2724ab=_0x2724ab-0x0;var _0x3e05d8=_0x25e7[_0x2724ab];return _0x3e05d8;};'use strict';var _=require(_0x725e('0x0'));var util=require(_0x725e('0x1'));var moment=require(_0x725e('0x2'));var BPromise=require(_0x725e('0x3'));var rs=require(_0x725e('0x4'));var fs=require('fs');var Redis=require(_0x725e('0x5'));var db=require(_0x725e('0x6'))['db'];var utils=require(_0x725e('0x7'));var logger=require(_0x725e('0x8'))(_0x725e('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x725e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x481316,_0x111a50,_0x192c27){return new BPromise(function(_0x216b33,_0x67de0c){return client[_0x725e('0xb')](_0x481316,_0x192c27)[_0x725e('0xc')](function(_0x39858a){logger[_0x725e('0xd')](_0x725e('0xe'),_0x111a50,_0x725e('0xf'));logger[_0x725e('0x10')](_0x725e('0x11'),_0x111a50,'request\x20sent',JSON['stringify'](_0x39858a));if(_0x39858a[_0x725e('0x12')]){if(_0x39858a[_0x725e('0x12')]['code']===0x1f4){logger['error'](_0x725e('0xe'),_0x111a50,_0x39858a[_0x725e('0x12')]['message']);return _0x67de0c(_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);}logger[_0x725e('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x111a50,_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);return _0x216b33(_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);}else{logger[_0x725e('0xd')](_0x725e('0xe'),_0x111a50,'request\x20sent');_0x216b33(_0x39858a[_0x725e('0x14')][_0x725e('0x13')]);}})[_0x725e('0x15')](function(_0x54ac0f){logger[_0x725e('0x12')](_0x725e('0xe'),_0x111a50,_0x54ac0f);_0x67de0c(_0x54ac0f);});});}exports[_0x725e('0x16')]=function(_0x397e33){var _0x268438=this;return new Promise(function(_0x2811e7,_0x528e7d){return db[_0x725e('0x17')][_0x725e('0x18')](_0x397e33[_0x725e('0x19')],{'raw':_0x397e33[_0x725e('0x1a')]?_0x397e33[_0x725e('0x1a')][_0x725e('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x397e33['options']?_0x397e33[_0x725e('0x1a')][_0x725e('0x1c')]||null:null,'attributes':_0x397e33[_0x725e('0x1a')]?_0x397e33[_0x725e('0x1a')][_0x725e('0x1d')]||null:null,'limit':_0x397e33[_0x725e('0x1a')]?_0x397e33[_0x725e('0x1a')][_0x725e('0x1e')]||null:null})[_0x725e('0xc')](function(_0x5c33c1){logger[_0x725e('0xd')](_0x725e('0x16'),_0x397e33);logger[_0x725e('0x10')](_0x725e('0x16'),_0x397e33,JSON['stringify'](_0x5c33c1));_0x2811e7(_0x5c33c1);})[_0x725e('0x15')](function(_0x5268c8){logger['error']('UpdateVoiceRecording',_0x5268c8[_0x725e('0x13')],_0x397e33);_0x528e7d(_0x268438[_0x725e('0x12')](0x1f4,_0x5268c8[_0x725e('0x13')]));});});};exports['CreateVoiceRecording']=function(_0xab6cfd){var _0x8a138f=this;return new Promise(function(_0x5a5bef,_0x14e9e0){var _0x339a58=require('../../components/encryptor');var _0x378ace;return db['Setting']['findOne']({'attributes':['id',_0x725e('0x1f')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x3b42bd){_0x378ace=_0x3b42bd;return db['VoiceRecording']['create'](_0xab6cfd[_0x725e('0x19')]);})[_0x725e('0xc')](function(_0x33fe34){if(_0x378ace['callRecordingEncryption']&&fs[_0x725e('0x20')](_0x33fe34['value'])){var _0x85d29c=util[_0x725e('0x21')](_0x725e('0x22'),_0x33fe34[_0x725e('0x23')]);return _0x339a58[_0x725e('0x24')](_0x33fe34[_0x725e('0x23')],_0x85d29c,config[_0x725e('0x25')][_0x725e('0x26')])[_0x725e('0xc')](function(){fs[_0x725e('0x27')](_0x33fe34[_0x725e('0x23')]);logger['info'](_0x725e('0x28'));return _0x33fe34;});}return _0x33fe34;})[_0x725e('0xc')](function(_0x5d3258){logger[_0x725e('0xd')]('CreateVoiceRecording',_0xab6cfd);logger[_0x725e('0x10')]('CreateVoiceRecording',_0xab6cfd,JSON[_0x725e('0x29')](_0x5d3258));_0x5a5bef(_0x5d3258);})[_0x725e('0x15')](function(_0x1f2898){logger[_0x725e('0x12')](_0x725e('0x2a'),_0x1f2898[_0x725e('0x13')],_0xab6cfd);_0x14e9e0(_0x8a138f['error'](0x1f4,_0x1f2898['message']));});});};
\ No newline at end of file
index 799b5d8..0d4c96f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73ea=['../../config/environment','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x73ea,0x9c));var _0xa73e=function(_0x5a5275,_0x3d8220){_0x5a5275=_0x5a5275-0x0;var _0x3b8d03=_0x73ea[_0x5a5275];return _0x3b8d03;};'use strict';var multer=require(_0xa73e('0x0'));var util=require(_0xa73e('0x1'));var path=require(_0xa73e('0x2'));var timeout=require(_0xa73e('0x3'));var express=require(_0xa73e('0x4'));var router=express[_0xa73e('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa73e('0x6'));var controller=require('./voiceTransferReport.controller');router[_0xa73e('0x7')]('/',auth[_0xa73e('0x8')](),controller[_0xa73e('0x9')]);router[_0xa73e('0x7')](_0xa73e('0xa'),auth[_0xa73e('0x8')](),controller['describe']);router[_0xa73e('0x7')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller[_0xa73e('0xc')]);router[_0xa73e('0xd')]('/',auth[_0xa73e('0x8')](),controller[_0xa73e('0xe')]);router[_0xa73e('0xf')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller['update']);router[_0xa73e('0x10')](_0xa73e('0xb'),auth[_0xa73e('0x8')](),controller[_0xa73e('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xbf06=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','create','put','update'];(function(_0x46eb27,_0x57ff9f){var _0x4b3b90=function(_0x53216d){while(--_0x53216d){_0x46eb27['push'](_0x46eb27['shift']());}};_0x4b3b90(++_0x57ff9f);}(_0xbf06,0x1d0));var _0x6bf0=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xbf06[_0x50007c];return _0x5c1ec7;};'use strict';var multer=require('multer');var util=require(_0x6bf0('0x0'));var path=require(_0x6bf0('0x1'));var timeout=require(_0x6bf0('0x2'));var express=require(_0x6bf0('0x3'));var router=express[_0x6bf0('0x4')]();var fs_extra=require(_0x6bf0('0x5'));var auth=require(_0x6bf0('0x6'));var interaction=require(_0x6bf0('0x7'));var config=require(_0x6bf0('0x8'));var controller=require(_0x6bf0('0x9'));router[_0x6bf0('0xa')]('/',auth[_0x6bf0('0xb')](),controller['index']);router[_0x6bf0('0xa')](_0x6bf0('0xc'),auth[_0x6bf0('0xb')](),controller[_0x6bf0('0xd')]);router['get'](_0x6bf0('0xe'),auth[_0x6bf0('0xb')](),controller[_0x6bf0('0xf')]);router['post']('/',auth[_0x6bf0('0xb')](),controller[_0x6bf0('0x10')]);router[_0x6bf0('0x11')](_0x6bf0('0xe'),auth['isAuthenticated'](),controller[_0x6bf0('0x12')]);router['delete'](_0x6bf0('0xe'),auth[_0x6bf0('0xb')](),controller[_0x6bf0('0x13')]);module[_0x6bf0('0x14')]=router;
\ No newline at end of file
index 8d95b30..6d2abd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x139b=['sequelize','moment','exports','ENUM','blind','attended','STRING'];(function(_0x30ad7b,_0x138913){var _0x3788de=function(_0x1991ff){while(--_0x1991ff){_0x30ad7b['push'](_0x30ad7b['shift']());}};_0x3788de(++_0x138913);}(_0x139b,0xf5));var _0xb139=function(_0x3332ec,_0x2bb80f){_0x3332ec=_0x3332ec-0x0;var _0x1a6934=_0x139b[_0x3332ec];return _0x1a6934;};'use strict';var Sequelize=require(_0xb139('0x0'));var moment=require(_0xb139('0x1'));module[_0xb139('0x2')]={'type':{'type':Sequelize[_0xb139('0x3')](_0xb139('0x4'),_0xb139('0x5'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xb139('0x6')]},'transferercalleridnum':{'type':Sequelize[_0xb139('0x6')]},'transferercalleridname':{'type':Sequelize[_0xb139('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0xb139('0x6')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0xb139('0x6')]},'transferercontext':{'type':Sequelize[_0xb139('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0xb139('0x6')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xb139('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xb139('0x6')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xb139('0x6')]},'transfereecontext':{'type':Sequelize[_0xb139('0x6')]},'transfereeexten':{'type':Sequelize[_0xb139('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xb139('0x6')]},'isexternal':{'type':Sequelize[_0xb139('0x3')]('Yes','No')},'context':{'type':Sequelize[_0xb139('0x6')]},'extension':{'type':Sequelize[_0xb139('0x6')]}};
\ No newline at end of file
+var _0xe5ee=['Yes','sequelize','ENUM','blind','attended','STRING'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xe5ee,0x145));var _0xee5e=function(_0x3300f2,_0x3097cd){_0x3300f2=_0x3300f2-0x0;var _0x1ad008=_0xe5ee[_0x3300f2];return _0x1ad008;};'use strict';var Sequelize=require(_0xee5e('0x0'));var moment=require('moment');module['exports']={'type':{'type':Sequelize[_0xee5e('0x1')](_0xee5e('0x2'),_0xee5e('0x3'))},'result':{'type':Sequelize[_0xee5e('0x4')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xee5e('0x4')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0xee5e('0x4')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0xee5e('0x4')]},'transfererexten':{'type':Sequelize[_0xee5e('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xee5e('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0xee5e('0x4')]},'transfereecalleridname':{'type':Sequelize[_0xee5e('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xee5e('0x4')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xee5e('0x4')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0xee5e('0x4')]},'isexternal':{'type':Sequelize['ENUM'](_0xee5e('0x5'),'No')},'context':{'type':Sequelize[_0xee5e('0x4')]},'extension':{'type':Sequelize[_0xee5e('0x4')]}};
\ No newline at end of file
index 8efe391..6735cfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074e=['offset','undefined','limit','count','set','apply','reject','save','then','name','send','index','map','rawAttributes','fieldName','type','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceTransferReport','includeAll','include','rows','show','keys','find','catch','create','body','update','destroy','params','describe','eml-format','rimraf','zip-dir','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x3284cd,_0x2e10a2){var _0xe92280=function(_0x398d2e){while(--_0x398d2e){_0x3284cd['push'](_0x3284cd['shift']());}};_0xe92280(++_0x2e10a2);}(_0x074e,0x75));var _0xe074=function(_0x3474ac,_0x22d0f7){_0x3474ac=_0x3474ac-0x0;var _0x5345ec=_0x074e[_0x3474ac];return _0x5345ec;};'use strict';var emlformat=require(_0xe074('0x0'));var rimraf=require(_0xe074('0x1'));var zipdir=require(_0xe074('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe074('0x3'));var Mustache=require(_0xe074('0x4'));var util=require('util');var path=require(_0xe074('0x5'));var sox=require('sox');var csv=require(_0xe074('0x6'));var ejs=require(_0xe074('0x7'));var fs=require('fs');var fs_extra=require(_0xe074('0x8'));var _=require(_0xe074('0x9'));var squel=require(_0xe074('0xa'));var crypto=require('crypto');var jsforce=require(_0xe074('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe074('0x6'));var querystring=require('querystring');var Papa=require(_0xe074('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe074('0xd'));var as=require(_0xe074('0xe'));var hardwareService=require(_0xe074('0xf'));var logger=require('../../config/logger')(_0xe074('0x10'));var utils=require(_0xe074('0x11'));var config=require(_0xe074('0x12'));var licenseUtil=require(_0xe074('0x13'));var db=require(_0xe074('0x14'))['db'];function respondWithStatusCode(_0x6a7300,_0x5ed38d){_0x5ed38d=_0x5ed38d||0xcc;return function(_0xe2decb){if(_0xe2decb){return _0x6a7300[_0xe074('0x15')](_0x5ed38d);}return _0x6a7300[_0xe074('0x16')](_0x5ed38d)[_0xe074('0x17')]();};}function respondWithResult(_0x520c48,_0x58cd17){_0x58cd17=_0x58cd17||0xc8;return function(_0x2ea930){if(_0x2ea930){return _0x520c48[_0xe074('0x16')](_0x58cd17)[_0xe074('0x18')](_0x2ea930);}};}function respondWithFilteredResult(_0x44e3a9,_0x362b5c){return function(_0x26b6bd){if(_0x26b6bd){var _0x175452=typeof _0x362b5c[_0xe074('0x19')]===_0xe074('0x1a')&&typeof _0x362b5c[_0xe074('0x1b')]==='undefined';var _0x67028b=_0x26b6bd[_0xe074('0x1c')];var _0x4c2533=_0x175452?0x0:_0x362b5c[_0xe074('0x19')];var _0x2fcaef=_0x175452?_0x26b6bd[_0xe074('0x1c')]:_0x362b5c['offset']+_0x362b5c[_0xe074('0x1b')];var _0x4b0241;if(_0x2fcaef>=_0x67028b){_0x2fcaef=_0x67028b;_0x4b0241=0xc8;}else{_0x4b0241=0xce;}_0x44e3a9[_0xe074('0x16')](_0x4b0241);return _0x44e3a9[_0xe074('0x1d')]('Content-Range',_0x4c2533+'-'+_0x2fcaef+'/'+_0x67028b)[_0xe074('0x18')](_0x26b6bd);}return null;};}function patchUpdates(_0x2b3aa8){return function(_0x50d173){try{jsonpatch[_0xe074('0x1e')](_0x50d173,_0x2b3aa8,!![]);}catch(_0x3f3e11){return BPromise[_0xe074('0x1f')](_0x3f3e11);}return _0x50d173[_0xe074('0x20')]();};}function saveUpdates(_0x44ef61,_0x337468){return function(_0x116be1){if(_0x116be1){return _0x116be1['update'](_0x44ef61)['then'](function(_0x5f5adf){return _0x5f5adf;});}return null;};}function removeEntity(_0x450800,_0x306144){return function(_0x199181){if(_0x199181){return _0x199181['destroy']()[_0xe074('0x21')](function(){_0x450800[_0xe074('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x578fcd,_0xa21b3e){return function(_0xbbdde0){if(!_0xbbdde0){_0x578fcd[_0xe074('0x15')](0x194);}return _0xbbdde0;};}function handleError(_0x1ce29c,_0x23655c){_0x23655c=_0x23655c||0x1f4;return function(_0x26aa4e){logger['error'](_0x26aa4e['stack']);if(_0x26aa4e[_0xe074('0x22')]){delete _0x26aa4e['name'];}_0x1ce29c['status'](_0x23655c)[_0xe074('0x23')](_0x26aa4e);};}exports[_0xe074('0x24')]=function(_0xafdc71,_0x2a19a4){var _0x584c9b={},_0x5ebe2e={},_0x14aafd={'count':0x0,'rows':[]};var _0x348081=_[_0xe074('0x25')](db['VoiceTransferReport'][_0xe074('0x26')],function(_0x41ae2e){return{'name':_0x41ae2e[_0xe074('0x27')],'type':_0x41ae2e[_0xe074('0x28')]['key']};});_0x5ebe2e[_0xe074('0x29')]=_[_0xe074('0x25')](_0x348081,_0xe074('0x22'));_0x5ebe2e[_0xe074('0x2a')]=_['keys'](_0xafdc71[_0xe074('0x2a')]);_0x5ebe2e['filters']=_['intersection'](_0x5ebe2e[_0xe074('0x29')],_0x5ebe2e[_0xe074('0x2a')]);_0x584c9b['attributes']=_[_0xe074('0x2b')](_0x5ebe2e[_0xe074('0x29')],qs[_0xe074('0x2c')](_0xafdc71[_0xe074('0x2a')][_0xe074('0x2c')]));_0x584c9b[_0xe074('0x2d')]=_0x584c9b[_0xe074('0x2d')]['length']?_0x584c9b[_0xe074('0x2d')]:_0x5ebe2e[_0xe074('0x29')];if(!_0xafdc71['query'][_0xe074('0x2e')](_0xe074('0x2f'))){_0x584c9b[_0xe074('0x1b')]=qs[_0xe074('0x1b')](_0xafdc71['query'][_0xe074('0x1b')]);_0x584c9b[_0xe074('0x19')]=qs['offset'](_0xafdc71['query'][_0xe074('0x19')]);}_0x584c9b[_0xe074('0x30')]=qs[_0xe074('0x31')](_0xafdc71[_0xe074('0x2a')]['sort']);_0x584c9b[_0xe074('0x32')]=qs[_0xe074('0x33')](_[_0xe074('0x34')](_0xafdc71['query'],_0x5ebe2e[_0xe074('0x33')]),_0x348081);if(_0xafdc71['query'][_0xe074('0x35')]){_0x584c9b['where']=_[_0xe074('0x36')](_0x584c9b[_0xe074('0x32')],{'$or':_[_0xe074('0x25')](_0x348081,function(_0x549c55){if(_0x549c55[_0xe074('0x28')]!==_0xe074('0x37')){var _0x3488f4={};_0x3488f4[_0x549c55[_0xe074('0x22')]]={'$like':'%'+_0xafdc71['query'][_0xe074('0x35')]+'%'};return _0x3488f4;}})});}_0x584c9b=_[_0xe074('0x36')]({},_0x584c9b,_0xafdc71[_0xe074('0x38')]);var _0x1e7f62={'where':_0x584c9b[_0xe074('0x32')]};return db[_0xe074('0x39')]['count'](_0x1e7f62)['then'](function(_0x1f8abd){_0x14aafd[_0xe074('0x1c')]=_0x1f8abd;if(_0xafdc71[_0xe074('0x2a')][_0xe074('0x3a')]){_0x584c9b[_0xe074('0x3b')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x584c9b);})['then'](function(_0x15490d){_0x14aafd[_0xe074('0x3c')]=_0x15490d;return _0x14aafd;})['then'](respondWithFilteredResult(_0x2a19a4,_0x584c9b))['catch'](handleError(_0x2a19a4,null));};exports[_0xe074('0x3d')]=function(_0x6683dc,_0x3770b7){var _0x5f2e21={'raw':!![],'where':{'id':_0x6683dc['params']['id']}},_0x21c0e0={};_0x21c0e0['model']=_[_0xe074('0x3e')](db[_0xe074('0x39')][_0xe074('0x26')]);_0x21c0e0[_0xe074('0x2a')]=_['keys'](_0x6683dc['query']);_0x21c0e0[_0xe074('0x33')]=_[_0xe074('0x2b')](_0x21c0e0[_0xe074('0x29')],_0x21c0e0[_0xe074('0x2a')]);_0x5f2e21[_0xe074('0x2d')]=_[_0xe074('0x2b')](_0x21c0e0[_0xe074('0x29')],qs['fields'](_0x6683dc[_0xe074('0x2a')][_0xe074('0x2c')]));_0x5f2e21[_0xe074('0x2d')]=_0x5f2e21[_0xe074('0x2d')]['length']?_0x5f2e21['attributes']:_0x21c0e0[_0xe074('0x29')];if(_0x6683dc[_0xe074('0x2a')][_0xe074('0x3a')]){_0x5f2e21[_0xe074('0x3b')]=[{'all':!![]}];}_0x5f2e21=_[_0xe074('0x36')]({},_0x5f2e21,_0x6683dc[_0xe074('0x38')]);return db['VoiceTransferReport'][_0xe074('0x3f')](_0x5f2e21)[_0xe074('0x21')](handleEntityNotFound(_0x3770b7,null))['then'](respondWithResult(_0x3770b7,null))[_0xe074('0x40')](handleError(_0x3770b7,null));};exports[_0xe074('0x41')]=function(_0x4908ad,_0x3651b7){return db[_0xe074('0x39')][_0xe074('0x41')](_0x4908ad[_0xe074('0x42')],{})[_0xe074('0x21')](respondWithResult(_0x3651b7,0xc9))[_0xe074('0x40')](handleError(_0x3651b7,null));};exports[_0xe074('0x43')]=function(_0x82a898,_0x428a72){if(_0x82a898['body']['id']){delete _0x82a898['body']['id'];}return db[_0xe074('0x39')]['find']({'where':{'id':_0x82a898['params']['id']}})[_0xe074('0x21')](handleEntityNotFound(_0x428a72,null))[_0xe074('0x21')](saveUpdates(_0x82a898['body'],null))[_0xe074('0x21')](respondWithResult(_0x428a72,null))[_0xe074('0x40')](handleError(_0x428a72,null));};exports[_0xe074('0x44')]=function(_0x47f83e,_0x4c917b){return db[_0xe074('0x39')][_0xe074('0x3f')]({'where':{'id':_0x47f83e[_0xe074('0x45')]['id']}})[_0xe074('0x21')](handleEntityNotFound(_0x4c917b,null))[_0xe074('0x21')](removeEntity(_0x4c917b,null))[_0xe074('0x40')](handleError(_0x4c917b,null));};exports[_0xe074('0x46')]=function(_0x477306,_0xc06364){return db['VoiceTransferReport'][_0xe074('0x46')]()[_0xe074('0x21')](respondWithResult(_0xc06364,null))[_0xe074('0x40')](handleError(_0xc06364,null));};
\ No newline at end of file
+var _0xb372=['index','VoiceTransferReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','eml-format','zip-dir','request-promise','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send'];(function(_0x2fe1ed,_0x3807be){var _0x52886f=function(_0x31e20d){while(--_0x31e20d){_0x2fe1ed['push'](_0x2fe1ed['shift']());}};_0x52886f(++_0x3807be);}(_0xb372,0x6a));var _0x2b37=function(_0x3a0adc,_0x388770){_0x3a0adc=_0x3a0adc-0x0;var _0x491df2=_0xb372[_0x3a0adc];return _0x491df2;};'use strict';var emlformat=require(_0x2b37('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2b37('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2b37('0x2'));var moment=require('moment');var BPromise=require(_0x2b37('0x3'));var Mustache=require('mustache');var util=require(_0x2b37('0x4'));var path=require('path');var sox=require(_0x2b37('0x5'));var csv=require(_0x2b37('0x6'));var ejs=require(_0x2b37('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x2b37('0x8'));var crypto=require(_0x2b37('0x9'));var jsforce=require(_0x2b37('0xa'));var deskjs=require(_0x2b37('0xb'));var toCsv=require(_0x2b37('0x6'));var querystring=require(_0x2b37('0xc'));var Papa=require(_0x2b37('0xd'));var Redis=require(_0x2b37('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x2b37('0xf'));var as=require(_0x2b37('0x10'));var hardwareService=require(_0x2b37('0x11'));var logger=require(_0x2b37('0x12'))(_0x2b37('0x13'));var utils=require(_0x2b37('0x14'));var config=require(_0x2b37('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31bf18,_0x3cc53b){_0x3cc53b=_0x3cc53b||0xcc;return function(_0x5c21b0){if(_0x5c21b0){return _0x31bf18['sendStatus'](_0x3cc53b);}return _0x31bf18[_0x2b37('0x16')](_0x3cc53b)['end']();};}function respondWithResult(_0xb1d80b,_0x47d411){_0x47d411=_0x47d411||0xc8;return function(_0x1c3768){if(_0x1c3768){return _0xb1d80b[_0x2b37('0x16')](_0x47d411)[_0x2b37('0x17')](_0x1c3768);}};}function respondWithFilteredResult(_0x2c397a,_0x55f72a){return function(_0x371d16){if(_0x371d16){var _0x5a151e=typeof _0x55f72a[_0x2b37('0x18')]===_0x2b37('0x19')&&typeof _0x55f72a[_0x2b37('0x1a')]==='undefined';var _0x2ccdaf=_0x371d16[_0x2b37('0x1b')];var _0x426a43=_0x5a151e?0x0:_0x55f72a['offset'];var _0x41cb3b=_0x5a151e?_0x371d16[_0x2b37('0x1b')]:_0x55f72a['offset']+_0x55f72a[_0x2b37('0x1a')];var _0x38fffb;if(_0x41cb3b>=_0x2ccdaf){_0x41cb3b=_0x2ccdaf;_0x38fffb=0xc8;}else{_0x38fffb=0xce;}_0x2c397a[_0x2b37('0x16')](_0x38fffb);return _0x2c397a[_0x2b37('0x1c')](_0x2b37('0x1d'),_0x426a43+'-'+_0x41cb3b+'/'+_0x2ccdaf)['json'](_0x371d16);}return null;};}function patchUpdates(_0x30b980){return function(_0x388072){try{jsonpatch[_0x2b37('0x1e')](_0x388072,_0x30b980,!![]);}catch(_0xc7b3c9){return BPromise[_0x2b37('0x1f')](_0xc7b3c9);}return _0x388072['save']();};}function saveUpdates(_0x322a5,_0x244815){return function(_0x486910){if(_0x486910){return _0x486910[_0x2b37('0x20')](_0x322a5)[_0x2b37('0x21')](function(_0x808e86){return _0x808e86;});}return null;};}function removeEntity(_0x38902b,_0x3a870e){return function(_0x251fee){if(_0x251fee){return _0x251fee[_0x2b37('0x22')]()['then'](function(){_0x38902b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dbba7,_0x1b1bfe){return function(_0x5a7539){if(!_0x5a7539){_0x5dbba7[_0x2b37('0x23')](0x194);}return _0x5a7539;};}function handleError(_0x80faa7,_0x34dbcf){_0x34dbcf=_0x34dbcf||0x1f4;return function(_0x40057f){logger[_0x2b37('0x24')](_0x40057f[_0x2b37('0x25')]);if(_0x40057f[_0x2b37('0x26')]){delete _0x40057f[_0x2b37('0x26')];}_0x80faa7[_0x2b37('0x16')](_0x34dbcf)[_0x2b37('0x27')](_0x40057f);};}exports[_0x2b37('0x28')]=function(_0x3d6a50,_0x3b0f5e){var _0x4f1356={},_0x1147f8={},_0x48761f={'count':0x0,'rows':[]};var _0x147ec2=_['map'](db[_0x2b37('0x29')][_0x2b37('0x2a')],function(_0x26ab43){return{'name':_0x26ab43[_0x2b37('0x2b')],'type':_0x26ab43[_0x2b37('0x2c')][_0x2b37('0x2d')]};});_0x1147f8[_0x2b37('0x2e')]=_[_0x2b37('0x2f')](_0x147ec2,'name');_0x1147f8[_0x2b37('0x30')]=_[_0x2b37('0x31')](_0x3d6a50[_0x2b37('0x30')]);_0x1147f8[_0x2b37('0x32')]=_[_0x2b37('0x33')](_0x1147f8['model'],_0x1147f8[_0x2b37('0x30')]);_0x4f1356[_0x2b37('0x34')]=_['intersection'](_0x1147f8[_0x2b37('0x2e')],qs[_0x2b37('0x35')](_0x3d6a50['query']['fields']));_0x4f1356[_0x2b37('0x34')]=_0x4f1356[_0x2b37('0x34')][_0x2b37('0x36')]?_0x4f1356[_0x2b37('0x34')]:_0x1147f8[_0x2b37('0x2e')];if(!_0x3d6a50['query']['hasOwnProperty'](_0x2b37('0x37'))){_0x4f1356[_0x2b37('0x1a')]=qs['limit'](_0x3d6a50[_0x2b37('0x30')]['limit']);_0x4f1356[_0x2b37('0x18')]=qs[_0x2b37('0x18')](_0x3d6a50[_0x2b37('0x30')][_0x2b37('0x18')]);}_0x4f1356['order']=qs[_0x2b37('0x38')](_0x3d6a50[_0x2b37('0x30')][_0x2b37('0x38')]);_0x4f1356['where']=qs[_0x2b37('0x32')](_[_0x2b37('0x39')](_0x3d6a50['query'],_0x1147f8[_0x2b37('0x32')]),_0x147ec2);if(_0x3d6a50['query'][_0x2b37('0x3a')]){_0x4f1356[_0x2b37('0x3b')]=_['merge'](_0x4f1356[_0x2b37('0x3b')],{'$or':_[_0x2b37('0x2f')](_0x147ec2,function(_0x15ab88){if(_0x15ab88[_0x2b37('0x2c')]!=='VIRTUAL'){var _0x5341e8={};_0x5341e8[_0x15ab88[_0x2b37('0x26')]]={'$like':'%'+_0x3d6a50[_0x2b37('0x30')][_0x2b37('0x3a')]+'%'};return _0x5341e8;}})});}_0x4f1356=_[_0x2b37('0x3c')]({},_0x4f1356,_0x3d6a50[_0x2b37('0x3d')]);var _0x2b790e={'where':_0x4f1356['where']};return db[_0x2b37('0x29')][_0x2b37('0x1b')](_0x2b790e)['then'](function(_0x4060ee){_0x48761f[_0x2b37('0x1b')]=_0x4060ee;if(_0x3d6a50['query']['includeAll']){_0x4f1356[_0x2b37('0x3e')]=[{'all':!![]}];}return db[_0x2b37('0x29')][_0x2b37('0x3f')](_0x4f1356);})[_0x2b37('0x21')](function(_0x401d69){_0x48761f[_0x2b37('0x40')]=_0x401d69;return _0x48761f;})['then'](respondWithFilteredResult(_0x3b0f5e,_0x4f1356))[_0x2b37('0x41')](handleError(_0x3b0f5e,null));};exports[_0x2b37('0x42')]=function(_0x3692ee,_0x119d90){var _0x5b9fb2={'raw':!![],'where':{'id':_0x3692ee['params']['id']}},_0x251caf={};_0x251caf[_0x2b37('0x2e')]=_[_0x2b37('0x31')](db[_0x2b37('0x29')][_0x2b37('0x2a')]);_0x251caf['query']=_[_0x2b37('0x31')](_0x3692ee[_0x2b37('0x30')]);_0x251caf['filters']=_['intersection'](_0x251caf['model'],_0x251caf[_0x2b37('0x30')]);_0x5b9fb2[_0x2b37('0x34')]=_[_0x2b37('0x33')](_0x251caf[_0x2b37('0x2e')],qs[_0x2b37('0x35')](_0x3692ee[_0x2b37('0x30')][_0x2b37('0x35')]));_0x5b9fb2[_0x2b37('0x34')]=_0x5b9fb2[_0x2b37('0x34')][_0x2b37('0x36')]?_0x5b9fb2[_0x2b37('0x34')]:_0x251caf[_0x2b37('0x2e')];if(_0x3692ee[_0x2b37('0x30')][_0x2b37('0x43')]){_0x5b9fb2['include']=[{'all':!![]}];}_0x5b9fb2=_['merge']({},_0x5b9fb2,_0x3692ee[_0x2b37('0x3d')]);return db['VoiceTransferReport'][_0x2b37('0x44')](_0x5b9fb2)[_0x2b37('0x21')](handleEntityNotFound(_0x119d90,null))[_0x2b37('0x21')](respondWithResult(_0x119d90,null))[_0x2b37('0x41')](handleError(_0x119d90,null));};exports[_0x2b37('0x45')]=function(_0x629637,_0x109307){return db['VoiceTransferReport'][_0x2b37('0x45')](_0x629637[_0x2b37('0x46')],{})[_0x2b37('0x21')](respondWithResult(_0x109307,0xc9))['catch'](handleError(_0x109307,null));};exports[_0x2b37('0x20')]=function(_0x5421f5,_0x42fb39){if(_0x5421f5[_0x2b37('0x46')]['id']){delete _0x5421f5[_0x2b37('0x46')]['id'];}return db[_0x2b37('0x29')][_0x2b37('0x44')]({'where':{'id':_0x5421f5[_0x2b37('0x47')]['id']}})[_0x2b37('0x21')](handleEntityNotFound(_0x42fb39,null))[_0x2b37('0x21')](saveUpdates(_0x5421f5[_0x2b37('0x46')],null))[_0x2b37('0x21')](respondWithResult(_0x42fb39,null))[_0x2b37('0x41')](handleError(_0x42fb39,null));};exports[_0x2b37('0x22')]=function(_0x3a9e38,_0x41de22){return db['VoiceTransferReport'][_0x2b37('0x44')]({'where':{'id':_0x3a9e38[_0x2b37('0x47')]['id']}})[_0x2b37('0x21')](handleEntityNotFound(_0x41de22,null))['then'](removeEntity(_0x41de22,null))[_0x2b37('0x41')](handleError(_0x41de22,null));};exports[_0x2b37('0x48')]=function(_0x987c71,_0x8def12){return db['VoiceTransferReport'][_0x2b37('0x48')]()[_0x2b37('0x21')](respondWithResult(_0x8def12,null))['catch'](handleError(_0x8def12,null));};
\ No newline at end of file
index 0f86b0b..5257a1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ad1=['VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','define'];(function(_0x472a41,_0x40149e){var _0x1941d5=function(_0x152dfe){while(--_0x152dfe){_0x472a41['push'](_0x472a41['shift']());}};_0x1941d5(++_0x40149e);}(_0x0ad1,0xab));var _0x10ad=function(_0x567257,_0x4df4d1){_0x567257=_0x567257-0x0;var _0x217875=_0x0ad1[_0x567257];return _0x217875;};'use strict';var _=require(_0x10ad('0x0'));var util=require(_0x10ad('0x1'));var logger=require(_0x10ad('0x2'))(_0x10ad('0x3'));var moment=require(_0x10ad('0x4'));var BPromise=require(_0x10ad('0x5'));var rp=require(_0x10ad('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x10ad('0x7'));var config=require(_0x10ad('0x8'));var attributes=require(_0x10ad('0x9'));module['exports']=function(_0x2e3334,_0x1e51ef){return _0x2e3334[_0x10ad('0xa')](_0x10ad('0xb'),attributes,{'tableName':_0x10ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4b7=['request-promise','path','../../config/environment','exports','define','VoiceTransferReport','lodash','../../config/logger','api','moment'];(function(_0x2d060f,_0x5215f6){var _0x3a9115=function(_0x1d148f){while(--_0x1d148f){_0x2d060f['push'](_0x2d060f['shift']());}};_0x3a9115(++_0x5215f6);}(_0xb4b7,0xf6));var _0x7b4b=function(_0x59b4ef,_0x465107){_0x59b4ef=_0x59b4ef-0x0;var _0x3aa82c=_0xb4b7[_0x59b4ef];return _0x3aa82c;};'use strict';var _=require(_0x7b4b('0x0'));var util=require('util');var logger=require(_0x7b4b('0x1'))(_0x7b4b('0x2'));var moment=require(_0x7b4b('0x3'));var BPromise=require('bluebird');var rp=require(_0x7b4b('0x4'));var fs=require('fs');var path=require(_0x7b4b('0x5'));var rimraf=require('rimraf');var config=require(_0x7b4b('0x6'));var attributes=require('./voiceTransferReport.attributes');module[_0x7b4b('0x7')]=function(_0x2a2330,_0x45640e){return _0x2a2330[_0x7b4b('0x8')](_0x7b4b('0x9'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d0ba606..1b56333 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0662=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateVoiceTransferReport','options','raw','catch','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0xba7a9d,_0x41aa0f){var _0x219c04=function(_0x57a16c){while(--_0x57a16c){_0xba7a9d['push'](_0xba7a9d['shift']());}};_0x219c04(++_0x41aa0f);}(_0x0662,0x175));var _0x2066=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x0662[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0x2066('0x0'));var moment=require(_0x2066('0x1'));var BPromise=require(_0x2066('0x2'));var rs=require(_0x2066('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2066('0x4'))['db'];var utils=require(_0x2066('0x5'));var logger=require(_0x2066('0x6'))(_0x2066('0x7'));var config=require(_0x2066('0x8'));var jayson=require(_0x2066('0x9'));var client=jayson[_0x2066('0xa')][_0x2066('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38e656,_0x23ee81,_0x2999ed){return new BPromise(function(_0x510675,_0x1f82a2){return client[_0x2066('0xc')](_0x38e656,_0x2999ed)[_0x2066('0xd')](function(_0x1bb145){logger[_0x2066('0xe')](_0x2066('0xf'),_0x23ee81,_0x2066('0x10'));logger[_0x2066('0x11')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x23ee81,_0x2066('0x10'),JSON[_0x2066('0x12')](_0x1bb145));if(_0x1bb145[_0x2066('0x13')]){if(_0x1bb145[_0x2066('0x13')][_0x2066('0x14')]===0x1f4){logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);return _0x1f82a2(_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);}logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x1bb145[_0x2066('0x13')][_0x2066('0x15')]);return _0x510675(_0x1bb145[_0x2066('0x13')]['message']);}else{logger['info'](_0x2066('0xf'),_0x23ee81,_0x2066('0x10'));_0x510675(_0x1bb145[_0x2066('0x16')]['message']);}})['catch'](function(_0x2fbce4){logger[_0x2066('0x13')](_0x2066('0xf'),_0x23ee81,_0x2fbce4);_0x1f82a2(_0x2fbce4);});});}exports[_0x2066('0x17')]=function(_0x2aa9ea){var _0x129813=this;return new Promise(function(_0x3b7c8b,_0x5954e8){return db['VoiceTransferReport']['create'](_0x2aa9ea['body'],{'raw':_0x2aa9ea[_0x2066('0x18')]?_0x2aa9ea['options'][_0x2066('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x5dac2d){logger['info']('CreateVoiceTransferReport',_0x2aa9ea);logger['debug'](_0x2066('0x17'),_0x2aa9ea,JSON['stringify'](_0x5dac2d));_0x3b7c8b(_0x5dac2d);})[_0x2066('0x1a')](function(_0x208a38){logger[_0x2066('0x13')](_0x2066('0x17'),_0x208a38[_0x2066('0x15')],_0x2aa9ea);_0x5954e8(_0x129813[_0x2066('0x13')](0x1f4,_0x208a38[_0x2066('0x15')]));});});};
\ No newline at end of file
+var _0x0a2d=['jayson/promise','client','http','request','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x229a1b,_0x13977a){var _0x346e7e=function(_0x57d885){while(--_0x57d885){_0x229a1b['push'](_0x229a1b['shift']());}};_0x346e7e(++_0x13977a);}(_0x0a2d,0x1d7));var _0xd0a2=function(_0x279306,_0x28b400){_0x279306=_0x279306-0x0;var _0x59d42a=_0x0a2d[_0x279306];return _0x59d42a;};'use strict';var _=require(_0xd0a2('0x0'));var util=require(_0xd0a2('0x1'));var moment=require(_0xd0a2('0x2'));var BPromise=require(_0xd0a2('0x3'));var rs=require(_0xd0a2('0x4'));var fs=require('fs');var Redis=require(_0xd0a2('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd0a2('0x6'));var logger=require(_0xd0a2('0x7'))('rpc');var config=require(_0xd0a2('0x8'));var jayson=require(_0xd0a2('0x9'));var client=jayson[_0xd0a2('0xa')][_0xd0a2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x17a7fe,_0x27bf47,_0x7bb78){return new BPromise(function(_0x58ab0a,_0x480f9e){return client[_0xd0a2('0xc')](_0x17a7fe,_0x7bb78)['then'](function(_0x44eb88){logger[_0xd0a2('0xd')](_0xd0a2('0xe'),_0x27bf47,_0xd0a2('0xf'));logger[_0xd0a2('0x10')](_0xd0a2('0x11'),_0x27bf47,_0xd0a2('0xf'),JSON[_0xd0a2('0x12')](_0x44eb88));if(_0x44eb88['error']){if(_0x44eb88[_0xd0a2('0x13')][_0xd0a2('0x14')]===0x1f4){logger[_0xd0a2('0x13')](_0xd0a2('0xe'),_0x27bf47,_0x44eb88[_0xd0a2('0x13')][_0xd0a2('0x15')]);return _0x480f9e(_0x44eb88['error'][_0xd0a2('0x15')]);}logger[_0xd0a2('0x13')](_0xd0a2('0xe'),_0x27bf47,_0x44eb88[_0xd0a2('0x13')][_0xd0a2('0x15')]);return _0x58ab0a(_0x44eb88[_0xd0a2('0x13')][_0xd0a2('0x15')]);}else{logger['info'](_0xd0a2('0xe'),_0x27bf47,_0xd0a2('0xf'));_0x58ab0a(_0x44eb88[_0xd0a2('0x16')]['message']);}})[_0xd0a2('0x17')](function(_0x24ef5a){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x27bf47,_0x24ef5a);_0x480f9e(_0x24ef5a);});});}exports[_0xd0a2('0x18')]=function(_0x3c814a){var _0x5cb8ec=this;return new Promise(function(_0x5c37b4,_0x5cd06c){return db[_0xd0a2('0x19')][_0xd0a2('0x1a')](_0x3c814a['body'],{'raw':_0x3c814a[_0xd0a2('0x1b')]?_0x3c814a[_0xd0a2('0x1b')][_0xd0a2('0x1c')]===undefined?!![]:![]:!![]})[_0xd0a2('0x1d')](function(_0x50381c){logger[_0xd0a2('0xd')](_0xd0a2('0x18'),_0x3c814a);logger['debug'](_0xd0a2('0x18'),_0x3c814a,JSON[_0xd0a2('0x12')](_0x50381c));_0x5c37b4(_0x50381c);})['catch'](function(_0x3b049a){logger[_0xd0a2('0x13')](_0xd0a2('0x18'),_0x3b049a[_0xd0a2('0x15')],_0x3c814a);_0x5cd06c(_0x5cb8ec[_0xd0a2('0x13')](0x1f4,_0x3b049a[_0xd0a2('0x15')]));});});};
\ No newline at end of file
index f3d9c4c..ae3deea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0xffa654,_0x4c734){_0xffa654=_0xffa654-0x0;var _0x5dd847=_0xf3cd[_0xffa654];return _0x5dd847;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
+var _0xedd9=['unhold','/calls','calls','/transfer','exports','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','/answer','answer','/hold','/unhold'];(function(_0xedea44,_0x407126){var _0x3f54fd=function(_0x5ba25f){while(--_0x5ba25f){_0xedea44['push'](_0xedea44['shift']());}};_0x3f54fd(++_0x407126);}(_0xedd9,0xfc));var _0x9edd=function(_0x1c5997,_0x5ac8c4){_0x1c5997=_0x1c5997-0x0;var _0x30325d=_0xedd9[_0x1c5997];return _0x30325d;};'use strict';var express=require('express');var router=express[_0x9edd('0x0')]();var auth=require(_0x9edd('0x1'));var controller=require(_0x9edd('0x2'));router[_0x9edd('0x3')](_0x9edd('0x4'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x7')]);router['post'](_0x9edd('0x8'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x9')]);router['post'](_0x9edd('0xa'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller[_0x9edd('0xb')]);router[_0x9edd('0x3')](_0x9edd('0xc'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller['hold']);router[_0x9edd('0x3')](_0x9edd('0xd'),auth['isAuthenticated'](),auth[_0x9edd('0x6')](),controller[_0x9edd('0xe')]);router['post'](_0x9edd('0xf'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller[_0x9edd('0x10')]);router[_0x9edd('0x3')](_0x9edd('0x11'),auth[_0x9edd('0x5')](),auth[_0x9edd('0x6')](),controller['transfer']);module[_0x9edd('0x12')]=router;
\ No newline at end of file
index 3d3a227..32b3cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e9=['transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','status','send','NotFound','then','code','error','message','result','catch','User','agent','VoiceChannels','all','filter','rows','\x20not\x20found!','originate','originate\x20fired:','body','length','userId','callerId','callbackUrl','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','user:%s','answer','sessionId','entityFound:','webbar:answer','hold','hold\x20fired:','format','webbar:hold','hold\x20executed!','calls','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','http','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required'];(function(_0x40136e,_0x5c275d){var _0x199a66=function(_0x3eedd5){while(--_0x3eedd5){_0x40136e['push'](_0x40136e['shift']());}};_0x199a66(++_0x5c275d);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var path=require(_0x949e('0x0'));var fs=require('fs');var _=require(_0x949e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x949e('0x2'));var util=require(_0x949e('0x3'));var BPromise=require(_0x949e('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x949e('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0x949e('0x6'));var Redis=require(_0x949e('0x7'));config[_0x949e('0x8')]=_['defaults'](config[_0x949e('0x8')],{'host':_0x949e('0x9'),'port':0x18eb});var io=require(_0x949e('0xa'))(new Redis(config[_0x949e('0x8')]));var Schema=require(_0x949e('0xb'));var originateValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'callNumber':{'type':'string','required':[!![],_0x949e('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x949e('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x10')]},'transferNumber':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x949e('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]}});function emit(_0xf1f41a,_0x5f5962,_0x420733){logger[_0x949e('0x12')](_0xf1f41a,_0x5f5962,JSON['stringify'](_0x420733));io['to'](_0xf1f41a)[_0x949e('0x13')](_0x5f5962,_0x420733);}function handleError(_0x175d62){return function(_0x43498d){console[_0x949e('0x14')](_0x949e('0x15'),_0x43498d,_0x43498d instanceof RangeError);logger['error'](_0x43498d[_0x949e('0x16')]);if(_0x43498d instanceof RangeError){if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x194)[_0x949e('0x19')](_0x43498d);}else{if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x1f4)[_0x949e('0x19')](_0x43498d);}};}function checkError(){return function(_0x39ad61){if(!_0x39ad61){throw new RangeError(_0x949e('0x1a'));}return _0x39ad61;};}function respondWithRpcPromise(_0x260c1c,_0x1e3a79){return new BPromise(function(_0x1927ab,_0x199d53){var _0x2e81f2=amiClient;return _0x2e81f2['request'](_0x260c1c,_0x1e3a79)[_0x949e('0x1b')](function(_0x44ffb4){if(_0x44ffb4['error']){if(_0x44ffb4['error'][_0x949e('0x1c')]===0x1f4){return _0x199d53(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}return _0x1927ab(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}else{_0x1927ab(_0x44ffb4[_0x949e('0x1f')]);}})[_0x949e('0x20')](function(_0x255b11){_0x199d53(_0x255b11);});});}function getAgent(_0x3468ac){return db[_0x949e('0x21')]['findOne']({'where':{'id':_0x3468ac,'role':_0x949e('0x22')}})[_0x949e('0x1b')](checkError());}function getAgentCheckSession(_0x59b3a1,_0x39308f){return new BPromise(function(_0x20061d,_0x55d56a){var _0x446401=respondWithRpcPromise(_0x949e('0x23'));var _0x5b9f28=getAgent(_0x59b3a1);Promise[_0x949e('0x24')]([_0x446401,_0x5b9f28])['then'](function(_0x5e6e34){var _0x4e169d=_0x5e6e34[0x0];var _0x54ad5d=_0x5e6e34[0x1];var _0x52f5bd=_[_0x949e('0x25')](_0x4e169d[_0x949e('0x26')],function(_0x3051ec){return _0x3051ec['UserId']==_0x54ad5d['id']&&_0x3051ec['sessionId']==_0x39308f;});if(_0x52f5bd['length']==0x1){_0x20061d(_0x54ad5d);}else{_0x55d56a(new RangeError('sessionId\x20'+_0x39308f+_0x949e('0x27')));}});});}exports[_0x949e('0x28')]=function(_0xcfd5a6,_0x1fe31b){logger['info'](_0x949e('0x29'),_0xcfd5a6[_0x949e('0x2a')]);var _0xad8500=originateValidation['validate'](_0xcfd5a6[_0x949e('0x2a')]);if(_0xad8500[_0x949e('0x2b')]>0x0){return _0x1fe31b[_0x949e('0x18')](0x190)['json'](_0xad8500);}var _0x5b7d77=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2c')];var _0x25d65a=_0xcfd5a6[_0x949e('0x2a')]['callNumber'];var _0x15a63f=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2d')];var _0x41b8d7=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2e')];return getAgent(_0x5b7d77)[_0x949e('0x1b')](function(_0xe6c996){logger['info']('entityFound:',_0xe6c996[_0x949e('0x17')]);emit(util['format']('user:%s',_0xe6c996[_0x949e('0x17')]),_0x949e('0x2f'),{'callNumber':_0x25d65a,'callerId':_0x15a63f,'callbackUrl':_0x41b8d7});return _0x1fe31b[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x31')});})[_0x949e('0x20')](handleError(_0x1fe31b));};exports[_0x949e('0x32')]=function(_0x49bf64,_0x21bd17){logger[_0x949e('0x12')](_0x949e('0x33'),_0x49bf64[_0x949e('0x2a')]);var _0x39c90b=hangupValidation[_0x949e('0xb')](_0x49bf64[_0x949e('0x2a')]);if(_0x39c90b[_0x949e('0x2b')]>0x0){return _0x21bd17[_0x949e('0x18')](0x190)['json'](_0x39c90b);}var _0x34bcd5=_0x49bf64['body'][_0x949e('0x2c')];var _0x2b112a=_0x49bf64['body']['sessionId'];return getAgent(_0x34bcd5)['then'](function(_0x1e848c){logger[_0x949e('0x12')]('entityFound:',_0x1e848c['name']);emit(util['format'](_0x949e('0x34'),_0x1e848c[_0x949e('0x17')]),'webbar:hangup',{'sessionId':_0x2b112a});return _0x21bd17[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'hangup\x20executed!'});})[_0x949e('0x20')](handleError(_0x21bd17));};exports[_0x949e('0x35')]=function(_0x3db452,_0xb384ed){logger['info']('answer\x20fired:',_0x3db452[_0x949e('0x2a')]);var _0x590aa7=answerValidation[_0x949e('0xb')](_0x3db452[_0x949e('0x2a')]);if(_0x590aa7[_0x949e('0x2b')]>0x0){return _0xb384ed[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x590aa7);}var _0x572f20=_0x3db452['body'][_0x949e('0x2c')];var _0x5e970b=_0x3db452[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x572f20)[_0x949e('0x1b')](function(_0x2fdfe6){logger[_0x949e('0x12')](_0x949e('0x37'),_0x2fdfe6['name']);emit(util['format'](_0x949e('0x34'),_0x2fdfe6[_0x949e('0x17')]),_0x949e('0x38'),{'sessionId':_0x5e970b});return _0xb384ed[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'answer\x20executed!'});})[_0x949e('0x20')](handleError(_0xb384ed));};exports[_0x949e('0x39')]=function(_0x5b3086,_0x216789){logger[_0x949e('0x12')](_0x949e('0x3a'),_0x5b3086[_0x949e('0x2a')]);var _0x1f1e69=holdValidation[_0x949e('0xb')](_0x5b3086[_0x949e('0x2a')]);if(_0x1f1e69[_0x949e('0x2b')]>0x0){return _0x216789[_0x949e('0x18')](0x190)['json'](_0x1f1e69);}var _0x1599ea=_0x5b3086['body'][_0x949e('0x2c')];var _0x24c7a6=_0x5b3086['body'][_0x949e('0x36')];return getAgent(_0x1599ea)[_0x949e('0x1b')](function(_0x121355){logger[_0x949e('0x12')](_0x949e('0x37'),_0x121355[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x121355['name']),_0x949e('0x3c'),{'sessionId':_0x24c7a6});return _0x216789[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x3d')});})[_0x949e('0x20')](handleError(_0x216789));};exports['unhold']=function(_0x5f23b2,_0x46a4fe){logger[_0x949e('0x12')]('unhold\x20fired:',_0x5f23b2[_0x949e('0x2a')]);var _0xdeefe1=unholdValidation[_0x949e('0xb')](_0x5f23b2[_0x949e('0x2a')]);if(_0xdeefe1['length']>0x0){return _0x46a4fe['status'](0x190)[_0x949e('0x30')](_0xdeefe1);}var _0x46d687=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x2c')];var _0x16ec1b=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x46d687)[_0x949e('0x1b')](function(_0x21477f){logger['info'](_0x949e('0x37'),_0x21477f['name']);emit(util[_0x949e('0x3b')]('user:%s',_0x21477f[_0x949e('0x17')]),'webbar:unhold',{'sessionId':_0x16ec1b});return _0x46a4fe[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'unhold\x20executed!'});})[_0x949e('0x20')](handleError(_0x46a4fe));};exports[_0x949e('0x3e')]=function(_0x2eb9f9,_0x2a5e99){logger[_0x949e('0x12')]('calls\x20fired:',_0x2a5e99['body']);var _0x287a45=callsValidation[_0x949e('0xb')](_0x2eb9f9['body']);if(_0x287a45[_0x949e('0x2b')]>0x0){return _0x2a5e99[_0x949e('0x18')](0x190)['json'](_0x287a45);}var _0x195371=_0x2eb9f9[_0x949e('0x2a')][_0x949e('0x2c')];var _0x2d7397=respondWithRpcPromise(_0x949e('0x23'));var _0x41798a=getAgent(_0x195371);return Promise[_0x949e('0x24')]([_0x2d7397,_0x41798a])[_0x949e('0x1b')](function(_0x394b92){var _0x7dd940=_0x394b92[0x0];var _0x8cc24a=_0x394b92[0x1];var _0x1561b2=_[_0x949e('0x25')](_0x7dd940[_0x949e('0x26')],function(_0x1284ec){return _0x1284ec[_0x949e('0x3f')]==_0x8cc24a['id'];});return _0x2a5e99[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'count':_0x1561b2['length'],'rows':_0x1561b2});})[_0x949e('0x20')](handleError(_0x2a5e99));};exports['conference']=function(_0x5520cd,_0x1bc2bb){logger[_0x949e('0x12')](_0x949e('0x40'),_0x5520cd['body']);var _0xa07383=conferenceValidation[_0x949e('0xb')](_0x5520cd[_0x949e('0x2a')]);if(_0xa07383['length']>0x0){return _0x1bc2bb[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0xa07383);}var _0x23a1c5=_0x5520cd['body'][_0x949e('0x2c')];return getAgent(_0x23a1c5)[_0x949e('0x1b')](function(_0x4073e9){logger[_0x949e('0x12')](_0x949e('0x37'),_0x4073e9[_0x949e('0x17')]);emit(util['format'](_0x949e('0x34'),_0x4073e9[_0x949e('0x17')]),_0x949e('0x41'));return _0x1bc2bb['status'](0xc8)['json']({'error':![],'message':_0x949e('0x42')});})['catch'](handleError(_0x1bc2bb));};exports[_0x949e('0x43')]=function(_0xcc3e22,_0x226576){logger[_0x949e('0x12')](_0x949e('0x44'),_0xcc3e22[_0x949e('0x2a')]);var _0x5ebbe3=transferValidation[_0x949e('0xb')](_0xcc3e22[_0x949e('0x2a')]);if(_0x5ebbe3[_0x949e('0x2b')]>0x0){return _0x226576[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x5ebbe3);}var _0x470e2a=_0xcc3e22['body'][_0x949e('0x2c')];var _0x1a1ebd=_0xcc3e22['body']['sessionId'];var _0x6ecca9=_0xcc3e22['body'][_0x949e('0x45')];return getAgent(_0x470e2a)['then'](function(_0x5c4c4c){logger[_0x949e('0x12')](_0x949e('0x37'),_0x5c4c4c[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x5c4c4c[_0x949e('0x17')]),_0x949e('0x46'),{'sessionId':_0x1a1ebd,'transferNumber':_0x6ecca9});return _0x226576[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x47')});})[_0x949e('0x20')](handleError(_0x226576));};
\ No newline at end of file
+var _0x1b73=['unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','VoiceChannels','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','lodash','../../mysqldb','../../config/environment','util','jayson/promise','http','../../config/logger','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','User','findOne','agent','all','filter','rows','UserId','sessionId','\x20not\x20found!','originate','body','length','callerId','callbackUrl','entityFound:','format','user:%s','json','originate\x20executed!','catch','hangup','hangup\x20fired:','hangup\x20executed!','answer','userId','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!'];(function(_0x28d833,_0x116ffd){var _0x39518b=function(_0x4bb341){while(--_0x4bb341){_0x28d833['push'](_0x28d833['shift']());}};_0x39518b(++_0x116ffd);}(_0x1b73,0x1d5));var _0x31b7=function(_0x16cf52,_0x303eb5){_0x16cf52=_0x16cf52-0x0;var _0x1298b7=_0x1b73[_0x16cf52];return _0x1298b7;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x31b7('0x0'));var db=require(_0x31b7('0x1'))['db'];var config=require(_0x31b7('0x2'));var util=require(_0x31b7('0x3'));var BPromise=require('bluebird');var jayson=require(_0x31b7('0x4'));var amiClient=jayson['client'][_0x31b7('0x5')]({'port':0x232a});var logger=require(_0x31b7('0x6'))('webbarapi');var Redis=require(_0x31b7('0x7'));config[_0x31b7('0x8')]=_[_0x31b7('0x9')](config['redis'],{'host':_0x31b7('0xa'),'port':0x18eb});var io=require(_0x31b7('0xb'))(new Redis(config[_0x31b7('0x8')]));var Schema=require(_0x31b7('0xc'));var originateValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'callNumber':{'type':_0x31b7('0xf'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x31b7('0xf')},'callbackUrl':{'type':_0x31b7('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'sessionId':{'type':_0x31b7('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'sessionId':{'type':_0x31b7('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'sessionId':{'type':'string','required':[!![],_0x31b7('0x10')]},'transferNumber':{'type':_0x31b7('0xf'),'required':[!![],_0x31b7('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'sessionId':{'type':_0x31b7('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x31b7('0xd'),'required':[!![],_0x31b7('0xe')]},'sessionId':{'type':_0x31b7('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x31b7('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x31b7('0xe')]}});function emit(_0xf213c9,_0x48f733,_0x15df1d){logger[_0x31b7('0x12')](_0xf213c9,_0x48f733,JSON[_0x31b7('0x13')](_0x15df1d));io['to'](_0xf213c9)[_0x31b7('0x14')](_0x48f733,_0x15df1d);}function handleError(_0x3daf67){return function(_0x5f3245){console[_0x31b7('0x15')](_0x31b7('0x16'),_0x5f3245,_0x5f3245 instanceof RangeError);logger[_0x31b7('0x17')](_0x5f3245[_0x31b7('0x18')]);if(_0x5f3245 instanceof RangeError){if(_0x5f3245[_0x31b7('0x19')]){delete _0x5f3245['name'];}_0x3daf67[_0x31b7('0x1a')](0x194)[_0x31b7('0x1b')](_0x5f3245);}else{if(_0x5f3245[_0x31b7('0x19')]){delete _0x5f3245[_0x31b7('0x19')];}_0x3daf67['status'](0x1f4)[_0x31b7('0x1b')](_0x5f3245);}};}function checkError(){return function(_0x15a20c){if(!_0x15a20c){throw new RangeError(_0x31b7('0x1c'));}return _0x15a20c;};}function respondWithRpcPromise(_0x2e4a56,_0x4d4368){return new BPromise(function(_0x33dd04,_0x20cb03){var _0x250574=amiClient;return _0x250574[_0x31b7('0x1d')](_0x2e4a56,_0x4d4368)[_0x31b7('0x1e')](function(_0x2d24bf){if(_0x2d24bf[_0x31b7('0x17')]){if(_0x2d24bf[_0x31b7('0x17')][_0x31b7('0x1f')]===0x1f4){return _0x20cb03(_0x2d24bf['error'][_0x31b7('0x20')]);}return _0x33dd04(_0x2d24bf[_0x31b7('0x17')][_0x31b7('0x20')]);}else{_0x33dd04(_0x2d24bf[_0x31b7('0x21')]);}})['catch'](function(_0xb8a998){_0x20cb03(_0xb8a998);});});}function getAgent(_0x516b89){return db[_0x31b7('0x22')][_0x31b7('0x23')]({'where':{'id':_0x516b89,'role':_0x31b7('0x24')}})[_0x31b7('0x1e')](checkError());}function getAgentCheckSession(_0xffacb,_0x128865){return new BPromise(function(_0x21ab03,_0x554a66){var _0x4e58e5=respondWithRpcPromise('VoiceChannels');var _0x503549=getAgent(_0xffacb);Promise[_0x31b7('0x25')]([_0x4e58e5,_0x503549])[_0x31b7('0x1e')](function(_0x2a7c54){var _0x4f5e1d=_0x2a7c54[0x0];var _0x169238=_0x2a7c54[0x1];var _0x6ba73c=_[_0x31b7('0x26')](_0x4f5e1d[_0x31b7('0x27')],function(_0x58a87e){return _0x58a87e[_0x31b7('0x28')]==_0x169238['id']&&_0x58a87e[_0x31b7('0x29')]==_0x128865;});if(_0x6ba73c['length']==0x1){_0x21ab03(_0x169238);}else{_0x554a66(new RangeError('sessionId\x20'+_0x128865+_0x31b7('0x2a')));}});});}exports[_0x31b7('0x2b')]=function(_0xdde2de,_0x35f83c){logger['info']('originate\x20fired:',_0xdde2de[_0x31b7('0x2c')]);var _0x345393=originateValidation[_0x31b7('0xc')](_0xdde2de[_0x31b7('0x2c')]);if(_0x345393[_0x31b7('0x2d')]>0x0){return _0x35f83c['status'](0x190)['json'](_0x345393);}var _0x36fe4e=_0xdde2de[_0x31b7('0x2c')]['userId'];var _0x2cd807=_0xdde2de[_0x31b7('0x2c')]['callNumber'];var _0x267691=_0xdde2de[_0x31b7('0x2c')][_0x31b7('0x2e')];var _0x23d84b=_0xdde2de[_0x31b7('0x2c')][_0x31b7('0x2f')];return getAgent(_0x36fe4e)[_0x31b7('0x1e')](function(_0x200314){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x200314[_0x31b7('0x19')]);emit(util[_0x31b7('0x31')](_0x31b7('0x32'),_0x200314['name']),'webbar:originate',{'callNumber':_0x2cd807,'callerId':_0x267691,'callbackUrl':_0x23d84b});return _0x35f83c[_0x31b7('0x1a')](0xc8)[_0x31b7('0x33')]({'error':![],'message':_0x31b7('0x34')});})[_0x31b7('0x35')](handleError(_0x35f83c));};exports[_0x31b7('0x36')]=function(_0x37dc32,_0x15a42b){logger[_0x31b7('0x12')](_0x31b7('0x37'),_0x37dc32[_0x31b7('0x2c')]);var _0x5849ad=hangupValidation[_0x31b7('0xc')](_0x37dc32[_0x31b7('0x2c')]);if(_0x5849ad[_0x31b7('0x2d')]>0x0){return _0x15a42b[_0x31b7('0x1a')](0x190)['json'](_0x5849ad);}var _0x20e865=_0x37dc32[_0x31b7('0x2c')]['userId'];var _0x3f8a6b=_0x37dc32['body']['sessionId'];return getAgent(_0x20e865)[_0x31b7('0x1e')](function(_0x10e82c){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x10e82c[_0x31b7('0x19')]);emit(util['format'](_0x31b7('0x32'),_0x10e82c['name']),'webbar:hangup',{'sessionId':_0x3f8a6b});return _0x15a42b['status'](0xc8)[_0x31b7('0x33')]({'error':![],'message':_0x31b7('0x38')});})[_0x31b7('0x35')](handleError(_0x15a42b));};exports[_0x31b7('0x39')]=function(_0x17c2d9,_0x4ccea9){logger[_0x31b7('0x12')]('answer\x20fired:',_0x17c2d9[_0x31b7('0x2c')]);var _0x3caab0=answerValidation[_0x31b7('0xc')](_0x17c2d9[_0x31b7('0x2c')]);if(_0x3caab0['length']>0x0){return _0x4ccea9[_0x31b7('0x1a')](0x190)[_0x31b7('0x33')](_0x3caab0);}var _0x1046fb=_0x17c2d9['body'][_0x31b7('0x3a')];var _0x51918d=_0x17c2d9[_0x31b7('0x2c')][_0x31b7('0x29')];return getAgent(_0x1046fb)['then'](function(_0x152b88){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x152b88[_0x31b7('0x19')]);emit(util['format'](_0x31b7('0x32'),_0x152b88['name']),'webbar:answer',{'sessionId':_0x51918d});return _0x4ccea9[_0x31b7('0x1a')](0xc8)[_0x31b7('0x33')]({'error':![],'message':_0x31b7('0x3b')});})[_0x31b7('0x35')](handleError(_0x4ccea9));};exports['hold']=function(_0x6014e,_0x2be7d6){logger['info'](_0x31b7('0x3c'),_0x6014e[_0x31b7('0x2c')]);var _0x2d313b=holdValidation['validate'](_0x6014e[_0x31b7('0x2c')]);if(_0x2d313b[_0x31b7('0x2d')]>0x0){return _0x2be7d6[_0x31b7('0x1a')](0x190)[_0x31b7('0x33')](_0x2d313b);}var _0x345059=_0x6014e[_0x31b7('0x2c')][_0x31b7('0x3a')];var _0x40aead=_0x6014e['body'][_0x31b7('0x29')];return getAgent(_0x345059)['then'](function(_0x5a72ee){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x5a72ee[_0x31b7('0x19')]);emit(util[_0x31b7('0x31')]('user:%s',_0x5a72ee[_0x31b7('0x19')]),_0x31b7('0x3d'),{'sessionId':_0x40aead});return _0x2be7d6[_0x31b7('0x1a')](0xc8)['json']({'error':![],'message':_0x31b7('0x3e')});})[_0x31b7('0x35')](handleError(_0x2be7d6));};exports[_0x31b7('0x3f')]=function(_0x3b5868,_0x2bf59c){logger[_0x31b7('0x12')](_0x31b7('0x40'),_0x3b5868[_0x31b7('0x2c')]);var _0x4d1fd6=unholdValidation['validate'](_0x3b5868[_0x31b7('0x2c')]);if(_0x4d1fd6[_0x31b7('0x2d')]>0x0){return _0x2bf59c[_0x31b7('0x1a')](0x190)[_0x31b7('0x33')](_0x4d1fd6);}var _0x4920e0=_0x3b5868['body'][_0x31b7('0x3a')];var _0x413bb0=_0x3b5868[_0x31b7('0x2c')][_0x31b7('0x29')];return getAgent(_0x4920e0)[_0x31b7('0x1e')](function(_0x12b713){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x12b713['name']);emit(util['format'](_0x31b7('0x32'),_0x12b713[_0x31b7('0x19')]),_0x31b7('0x41'),{'sessionId':_0x413bb0});return _0x2bf59c[_0x31b7('0x1a')](0xc8)[_0x31b7('0x33')]({'error':![],'message':_0x31b7('0x42')});})[_0x31b7('0x35')](handleError(_0x2bf59c));};exports[_0x31b7('0x43')]=function(_0x1ec95f,_0x3e1c4f){logger['info']('calls\x20fired:',_0x3e1c4f[_0x31b7('0x2c')]);var _0x954c=callsValidation[_0x31b7('0xc')](_0x1ec95f[_0x31b7('0x2c')]);if(_0x954c['length']>0x0){return _0x3e1c4f[_0x31b7('0x1a')](0x190)[_0x31b7('0x33')](_0x954c);}var _0x316175=_0x1ec95f[_0x31b7('0x2c')][_0x31b7('0x3a')];var _0x23ffad=respondWithRpcPromise(_0x31b7('0x44'));var _0x3a8b87=getAgent(_0x316175);return Promise[_0x31b7('0x25')]([_0x23ffad,_0x3a8b87])[_0x31b7('0x1e')](function(_0x29ef38){var _0x4cd34e=_0x29ef38[0x0];var _0x4c77e0=_0x29ef38[0x1];var _0x2cf8ec=_[_0x31b7('0x26')](_0x4cd34e[_0x31b7('0x27')],function(_0x3f25d7){return _0x3f25d7[_0x31b7('0x28')]==_0x4c77e0['id'];});return _0x3e1c4f[_0x31b7('0x1a')](0xc8)['json']({'count':_0x2cf8ec[_0x31b7('0x2d')],'rows':_0x2cf8ec});})['catch'](handleError(_0x3e1c4f));};exports['conference']=function(_0x531bcd,_0x3686b8){logger[_0x31b7('0x12')](_0x31b7('0x45'),_0x531bcd[_0x31b7('0x2c')]);var _0x44934f=conferenceValidation[_0x31b7('0xc')](_0x531bcd[_0x31b7('0x2c')]);if(_0x44934f[_0x31b7('0x2d')]>0x0){return _0x3686b8[_0x31b7('0x1a')](0x190)[_0x31b7('0x33')](_0x44934f);}var _0x40d54b=_0x531bcd[_0x31b7('0x2c')][_0x31b7('0x3a')];return getAgent(_0x40d54b)[_0x31b7('0x1e')](function(_0x2598d5){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x2598d5[_0x31b7('0x19')]);emit(util[_0x31b7('0x31')](_0x31b7('0x32'),_0x2598d5[_0x31b7('0x19')]),_0x31b7('0x46'));return _0x3686b8[_0x31b7('0x1a')](0xc8)[_0x31b7('0x33')]({'error':![],'message':'conference\x20executed!'});})[_0x31b7('0x35')](handleError(_0x3686b8));};exports[_0x31b7('0x47')]=function(_0x47f5f7,_0x2900ff){logger['info'](_0x31b7('0x48'),_0x47f5f7[_0x31b7('0x2c')]);var _0x318746=transferValidation[_0x31b7('0xc')](_0x47f5f7['body']);if(_0x318746[_0x31b7('0x2d')]>0x0){return _0x2900ff['status'](0x190)[_0x31b7('0x33')](_0x318746);}var _0x4b368c=_0x47f5f7[_0x31b7('0x2c')][_0x31b7('0x3a')];var _0xfeb4e2=_0x47f5f7[_0x31b7('0x2c')]['sessionId'];var _0xb4be25=_0x47f5f7[_0x31b7('0x2c')][_0x31b7('0x49')];return getAgent(_0x4b368c)[_0x31b7('0x1e')](function(_0x3c0cf8){logger[_0x31b7('0x12')](_0x31b7('0x30'),_0x3c0cf8[_0x31b7('0x19')]);emit(util[_0x31b7('0x31')](_0x31b7('0x32'),_0x3c0cf8[_0x31b7('0x19')]),_0x31b7('0x4a'),{'sessionId':_0xfeb4e2,'transferNumber':_0xb4be25});return _0x2900ff[_0x31b7('0x1a')](0xc8)[_0x31b7('0x33')]({'error':![],'message':_0x31b7('0x4b')});})[_0x31b7('0x35')](handleError(_0x2900ff));};
\ No newline at end of file
index eaa2b34..78774dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['addDisposition','addAnswer','addApplications','/:id/notify','notify','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','/:id/dispositions'];(function(_0x5b3dcb,_0x44e05d){var _0x3a237a=function(_0x50730f){while(--_0x50730f){_0x5b3dcb['push'](_0x5b3dcb['shift']());}};_0x3a237a(++_0x44e05d);}(_0x57ca,0x108));var _0xa57c=function(_0x126900,_0x405077){_0x126900=_0x126900-0x0;var _0x11ee20=_0x57ca[_0x126900];return _0x11ee20;};'use strict';var multer=require('multer');var util=require(_0xa57c('0x0'));var path=require(_0xa57c('0x1'));var timeout=require('connect-timeout');var express=require(_0xa57c('0x2'));var router=express[_0xa57c('0x3')]();var fs_extra=require(_0xa57c('0x4'));var auth=require(_0xa57c('0x5'));var interaction=require(_0xa57c('0x6'));var config=require('../../config/environment');var controller=require(_0xa57c('0x7'));router[_0xa57c('0x8')]('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0xa')]);router[_0xa57c('0x8')](_0xa57c('0xb'),auth[_0xa57c('0x9')](),controller[_0xa57c('0xc')]);router['get'](_0xa57c('0xd'),auth['isAuthenticated'](),controller[_0xa57c('0xe')]);router[_0xa57c('0x8')]('/:id/dispositions',auth[_0xa57c('0x9')](),controller['getDispositions']);router[_0xa57c('0x8')](_0xa57c('0xf'),auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['get'](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);router[_0xa57c('0x8')](_0xa57c('0x13'),auth['isAuthenticated'](),controller[_0xa57c('0x14')]);router['post']('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0x15')]);router[_0xa57c('0x16')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x18')]);router[_0xa57c('0x16')]('/:id/canned_answers',auth[_0xa57c('0x9')](),controller[_0xa57c('0x19')]);router[_0xa57c('0x16')]('/:id/users',auth[_0xa57c('0x9')](),controller['addAgents']);router[_0xa57c('0x16')](_0xa57c('0x13'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1a')]);router[_0xa57c('0x16')](_0xa57c('0x1b'),controller[_0xa57c('0x1c')]);router[_0xa57c('0x16')]('/:id/send',auth[_0xa57c('0x9')](),controller['send']);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1d')]);router[_0xa57c('0x1e')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x1f')]);router[_0xa57c('0x1e')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x20')]);router[_0xa57c('0x1e')](_0xa57c('0xf'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x21')]);router[_0xa57c('0x1e')](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x22')]);module[_0xa57c('0x23')]=router;
\ No newline at end of file
+var _0x57ca=['addDisposition','addAnswer','addApplications','/:id/notify','notify','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','/:id/dispositions'];(function(_0x1b67bb,_0x401e57){var _0x353e9b=function(_0xfdf2d2){while(--_0xfdf2d2){_0x1b67bb['push'](_0x1b67bb['shift']());}};_0x353e9b(++_0x401e57);}(_0x57ca,0x108));var _0xa57c=function(_0x3ce7b2,_0x3c4f70){_0x3ce7b2=_0x3ce7b2-0x0;var _0x4828e9=_0x57ca[_0x3ce7b2];return _0x4828e9;};'use strict';var multer=require('multer');var util=require(_0xa57c('0x0'));var path=require(_0xa57c('0x1'));var timeout=require('connect-timeout');var express=require(_0xa57c('0x2'));var router=express[_0xa57c('0x3')]();var fs_extra=require(_0xa57c('0x4'));var auth=require(_0xa57c('0x5'));var interaction=require(_0xa57c('0x6'));var config=require('../../config/environment');var controller=require(_0xa57c('0x7'));router[_0xa57c('0x8')]('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0xa')]);router[_0xa57c('0x8')](_0xa57c('0xb'),auth[_0xa57c('0x9')](),controller[_0xa57c('0xc')]);router['get'](_0xa57c('0xd'),auth['isAuthenticated'](),controller[_0xa57c('0xe')]);router[_0xa57c('0x8')]('/:id/dispositions',auth[_0xa57c('0x9')](),controller['getDispositions']);router[_0xa57c('0x8')](_0xa57c('0xf'),auth['isAuthenticated'](),controller[_0xa57c('0x10')]);router['get'](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x12')]);router[_0xa57c('0x8')](_0xa57c('0x13'),auth['isAuthenticated'](),controller[_0xa57c('0x14')]);router['post']('/',auth[_0xa57c('0x9')](),controller[_0xa57c('0x15')]);router[_0xa57c('0x16')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x18')]);router[_0xa57c('0x16')]('/:id/canned_answers',auth[_0xa57c('0x9')](),controller[_0xa57c('0x19')]);router[_0xa57c('0x16')]('/:id/users',auth[_0xa57c('0x9')](),controller['addAgents']);router[_0xa57c('0x16')](_0xa57c('0x13'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1a')]);router[_0xa57c('0x16')](_0xa57c('0x1b'),controller[_0xa57c('0x1c')]);router[_0xa57c('0x16')]('/:id/send',auth[_0xa57c('0x9')](),controller['send']);router['put'](_0xa57c('0xd'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x1d')]);router[_0xa57c('0x1e')]('/:id',auth[_0xa57c('0x9')](),controller[_0xa57c('0x1f')]);router[_0xa57c('0x1e')](_0xa57c('0x17'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x20')]);router[_0xa57c('0x1e')](_0xa57c('0xf'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x21')]);router[_0xa57c('0x1e')](_0xa57c('0x11'),auth[_0xa57c('0x9')](),controller[_0xa57c('0x22')]);module[_0xa57c('0x23')]=router;
\ No newline at end of file
index eef4994..6ed6d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c8=['name','STRING','generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring'];(function(_0x547204,_0x58aa0c){var _0x3e5e31=function(_0x17b5f2){while(--_0x17b5f2){_0x547204['push'](_0x547204['shift']());}};_0x3e5e31(++_0x58aa0c);}(_0x94c8,0xfa));var _0x894c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x94c8[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x894c('0x0'));var rs=require(_0x894c('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x894c('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x894c('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x894c('0x3')],'defaultValue':function(){return rs[_0x894c('0x4')]();}},'phone':{'type':Sequelize[_0x894c('0x3')]},'type':{'type':Sequelize[_0x894c('0x5')](_0x894c('0x6'),'sinch')},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x894c('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x894c('0x7')],'defaultValue':function(){return _0x894c('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x894c('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x894c('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x894c('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x894c('0xb'),'set':function(_0x593e16){if(!_0x593e16){this[_0x894c('0xc')]('mandatoryDispositionPauseId',null);}this['setDataValue'](_0x894c('0xd'),_0x593e16);}},'description':{'type':Sequelize[_0x894c('0x3')]}};
\ No newline at end of file
+var _0xae83=['STRING','name','generate','ENUM','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','randomstring','exports'];(function(_0x4ce480,_0x56e8f4){var _0x166cdb=function(_0x409587){while(--_0x409587){_0x4ce480['push'](_0x4ce480['shift']());}};_0x166cdb(++_0x56e8f4);}(_0xae83,0x85));var _0x3ae8=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xae83[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3ae8('0x0'));module[_0x3ae8('0x1')]={'name':{'type':Sequelize[_0x3ae8('0x2')],'unique':_0x3ae8('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x3ae8('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x3ae8('0x2')],'defaultValue':function(){return rs[_0x3ae8('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3ae8('0x5')]('twilio',_0x3ae8('0x6'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x3ae8('0x2')]},'notificationTemplate':{'type':Sequelize[_0x3ae8('0x7')],'defaultValue':function(){return _0x3ae8('0x8');}},'notificationSound':{'type':Sequelize[_0x3ae8('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3ae8('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x3ae8('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x3ae8('0x9')],'defaultValue':![],'comment':_0x3ae8('0xb'),'set':function(_0x423295){if(!_0x423295){this['setDataValue'](_0x3ae8('0xc'),null);}this[_0x3ae8('0xd')](_0x3ae8('0xe'),_0x423295);}},'description':{'type':Sequelize[_0x3ae8('0x2')]}};
\ No newline at end of file
index 77a4c19..85a05e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f7=['include','rows','mandatoryDispositionPause','keys','rawAttributes','length','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','WhatsappAccountId','Disposition','getDispositions','filter','findAll','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','nolimit','order','removeAnswers','addAgents','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','timestamp','message_id','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','Body','MessageSid','notifications','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','list','omit','Contacts','contact','WhatsappInteraction','spread','interaction','created','autoclose','push','close','*,*,*,*','WhatsappMessage','messageId','ContactId','AttachmentId','UserId','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','DESC','Messages','dataValues','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','register','jayson/promise','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','WhatsappAccounts','end','stack','name','send','index','Pause','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','WhatsappAccount'];(function(_0x53ac11,_0x14e63f){var _0x38d84a=function(_0x3d104d){while(--_0x3d104d){_0x53ac11['push'](_0x53ac11['shift']());}};_0x38d84a(++_0x14e63f);}(_0x14f7,0x12b));var _0x714f=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x14f7[_0x40ac5e];return _0x2839d6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x714f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x714f('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x714f('0x2'));var util=require(_0x714f('0x3'));var path=require(_0x714f('0x4'));var sox=require('sox');var csv=require(_0x714f('0x5'));var ejs=require(_0x714f('0x6'));var fs=require('fs');var fs_extra=require(_0x714f('0x7'));var _=require(_0x714f('0x8'));var squel=require('squel');var crypto=require(_0x714f('0x9'));var jsforce=require(_0x714f('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x714f('0x5'));var querystring=require(_0x714f('0xb'));var Papa=require('papaparse');var Redis=require(_0x714f('0xc'));var authService=require(_0x714f('0xd'));var qs=require(_0x714f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x714f('0xf'));var logger=require(_0x714f('0x10'))('api');var utils=require(_0x714f('0x11'));var config=require(_0x714f('0x12'));var licenseUtil=require(_0x714f('0x13'));var db=require('../../mysqldb')['db'];config[_0x714f('0x14')]=_[_0x714f('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x714f('0x14')]));require('./whatsappAccount.socket')[_0x714f('0x16')](socket);var jayson=require(_0x714f('0x17'));var client=jayson[_0x714f('0x18')][_0x714f('0x19')]({'port':0x232c});function respondWithRpcPromise(_0x522749,_0x2f6058,_0x26686d,_0x3040f0){return new BPromise(function(_0x24dae0,_0xa967eb){var _0x5b40d6=_0x3040f0||client;return _0x5b40d6[_0x714f('0x1a')](_0x522749,_0x26686d)[_0x714f('0x1b')](function(_0x2a42c4){logger['info'](_0x714f('0x1c'),_0x2f6058,_0x714f('0x1d'));logger[_0x714f('0x1e')](_0x714f('0x1f'),_0x2f6058,_0x714f('0x1d'),JSON[_0x714f('0x20')](_0x2a42c4));if(_0x2a42c4[_0x714f('0x21')]){if(_0x2a42c4[_0x714f('0x21')][_0x714f('0x22')]===0x1f4){logger['error'](_0x714f('0x1c'),_0x2f6058,_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);return _0xa967eb(_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);}logger[_0x714f('0x21')](_0x714f('0x1c'),_0x2f6058,_0x2a42c4[_0x714f('0x21')][_0x714f('0x23')]);return _0x24dae0(_0x2a42c4['error'][_0x714f('0x23')]);}else{logger[_0x714f('0x24')](_0x714f('0x1c'),_0x2f6058,_0x714f('0x1d'));_0x24dae0(_0x2a42c4['result'][_0x714f('0x23')]);}})[_0x714f('0x25')](function(_0x351f19){logger[_0x714f('0x21')](_0x714f('0x1c'),_0x2f6058,_0x351f19);_0xa967eb(_0x351f19);});});}function respondWithStatusCode(_0x6bf439,_0x46036c){_0x46036c=_0x46036c||0xcc;return function(_0x5d3237){if(_0x5d3237){return _0x6bf439[_0x714f('0x26')](_0x46036c);}return _0x6bf439[_0x714f('0x27')](_0x46036c)['end']();};}function respondWithResult(_0x407125,_0x312507){_0x312507=_0x312507||0xc8;return function(_0x5248f0){if(_0x5248f0){return _0x407125[_0x714f('0x27')](_0x312507)[_0x714f('0x28')](_0x5248f0);}};}function respondWithFilteredResult(_0x29ec13,_0xc94932){return function(_0x57a7a2){if(_0x57a7a2){var _0x346d49=typeof _0xc94932[_0x714f('0x29')]===_0x714f('0x2a')&&typeof _0xc94932[_0x714f('0x2b')]==='undefined';var _0x5bd74c=_0x57a7a2[_0x714f('0x2c')];var _0x125e3f=_0x346d49?0x0:_0xc94932[_0x714f('0x29')];var _0x4b582b=_0x346d49?_0x57a7a2['count']:_0xc94932[_0x714f('0x29')]+_0xc94932[_0x714f('0x2b')];var _0x437895;if(_0x4b582b>=_0x5bd74c){_0x4b582b=_0x5bd74c;_0x437895=0xc8;}else{_0x437895=0xce;}_0x29ec13[_0x714f('0x27')](_0x437895);return _0x29ec13[_0x714f('0x2d')](_0x714f('0x2e'),_0x125e3f+'-'+_0x4b582b+'/'+_0x5bd74c)['json'](_0x57a7a2);}return null;};}function patchUpdates(_0x382c70){return function(_0xa75bc9){try{jsonpatch[_0x714f('0x2f')](_0xa75bc9,_0x382c70,!![]);}catch(_0x4ceba0){return BPromise['reject'](_0x4ceba0);}return _0xa75bc9[_0x714f('0x30')]();};}function saveUpdates(_0x445c9d,_0x22700a){return function(_0x28ec7f){if(_0x28ec7f){return _0x28ec7f[_0x714f('0x31')](_0x445c9d)[_0x714f('0x1b')](function(_0x514887){return _0x514887;});}return null;};}function removeEntity(_0x2ebbf2,_0x2763e1){return function(_0x25a634){if(_0x25a634){return _0x25a634[_0x714f('0x32')]()['then'](function(){var _0x2df684=_0x25a634[_0x714f('0x33')]({'plain':!![]});var _0xbbe3f6=_0x714f('0x34');return db['UserProfileResource'][_0x714f('0x32')]({'where':{'type':_0xbbe3f6,'resourceId':_0x2df684['id']}})[_0x714f('0x1b')](function(){return _0x25a634;});})['then'](function(){_0x2ebbf2[_0x714f('0x27')](0xcc)[_0x714f('0x35')]();});}};}function handleEntityNotFound(_0xc9cba0,_0x58ec81){return function(_0xb16956){if(!_0xb16956){_0xc9cba0[_0x714f('0x26')](0x194);}return _0xb16956;};}function handleError(_0x42e0ec,_0x1a54bb){_0x1a54bb=_0x1a54bb||0x1f4;return function(_0x2c6a84){logger['error'](_0x2c6a84[_0x714f('0x36')]);if(_0x2c6a84[_0x714f('0x37')]){delete _0x2c6a84[_0x714f('0x37')];}_0x42e0ec['status'](_0x1a54bb)[_0x714f('0x38')](_0x2c6a84);};}exports[_0x714f('0x39')]=function(_0xd1a0e1,_0x5d570c){var _0x1e6da6={'include':[{'model':db[_0x714f('0x3a')],'as':'mandatoryDispositionPause'}]},_0x4b5569={},_0xaf2415={'count':0x0,'rows':[]};var _0x780d58=_[_0x714f('0x3b')](db['WhatsappAccount']['rawAttributes'],function(_0x4567ea){return{'name':_0x4567ea[_0x714f('0x3c')],'type':_0x4567ea[_0x714f('0x3d')][_0x714f('0x3e')]};});_0x4b5569[_0x714f('0x3f')]=_[_0x714f('0x3b')](_0x780d58,_0x714f('0x37'));_0x4b5569[_0x714f('0x40')]=_['keys'](_0xd1a0e1[_0x714f('0x40')]);_0x4b5569[_0x714f('0x41')]=_[_0x714f('0x42')](_0x4b5569[_0x714f('0x3f')],_0x4b5569[_0x714f('0x40')]);_0x1e6da6[_0x714f('0x43')]=_[_0x714f('0x42')](_0x4b5569[_0x714f('0x3f')],qs[_0x714f('0x44')](_0xd1a0e1['query']['fields']));_0x1e6da6[_0x714f('0x43')]=_0x1e6da6['attributes']['length']?_0x1e6da6['attributes']:_0x4b5569['model'];if(!_0xd1a0e1[_0x714f('0x40')][_0x714f('0x45')]('nolimit')){_0x1e6da6['limit']=qs['limit'](_0xd1a0e1[_0x714f('0x40')][_0x714f('0x2b')]);_0x1e6da6['offset']=qs[_0x714f('0x29')](_0xd1a0e1[_0x714f('0x40')]['offset']);}_0x1e6da6['order']=qs[_0x714f('0x46')](_0xd1a0e1[_0x714f('0x40')][_0x714f('0x46')]);_0x1e6da6[_0x714f('0x47')]=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0xd1a0e1[_0x714f('0x40')],_0x4b5569[_0x714f('0x41')]),_0x780d58);if(_0xd1a0e1['query']['filter']){_0x1e6da6['where']=_[_0x714f('0x49')](_0x1e6da6[_0x714f('0x47')],{'$or':_['map'](_0x780d58,function(_0x29ba28){if(_0x29ba28[_0x714f('0x3d')]!==_0x714f('0x4a')){var _0x252688={};_0x252688[_0x29ba28[_0x714f('0x37')]]={'$like':'%'+_0xd1a0e1[_0x714f('0x40')]['filter']+'%'};return _0x252688;}})});}_0x1e6da6=_[_0x714f('0x49')]({},_0x1e6da6,_0xd1a0e1[_0x714f('0x4b')]);var _0x474aa4={'where':_0x1e6da6[_0x714f('0x47')]};return db[_0x714f('0x4c')]['count'](_0x474aa4)[_0x714f('0x1b')](function(_0xe218eb){_0xaf2415[_0x714f('0x2c')]=_0xe218eb;if(_0xd1a0e1[_0x714f('0x40')]['includeAll']){_0x1e6da6[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x4c')]['findAll'](_0x1e6da6);})[_0x714f('0x1b')](function(_0x3c034d){_0xaf2415[_0x714f('0x4e')]=_0x3c034d;return _0xaf2415;})[_0x714f('0x1b')](respondWithFilteredResult(_0x5d570c,_0x1e6da6))[_0x714f('0x25')](handleError(_0x5d570c,null));};exports['show']=function(_0xd6980c,_0x431768){var _0x89bb48={'raw':![],'where':{'id':_0xd6980c['params']['id']},'include':[{'model':db[_0x714f('0x3a')],'as':_0x714f('0x4f')}]},_0x9285f6={};_0x9285f6[_0x714f('0x3f')]=_[_0x714f('0x50')](db['WhatsappAccount'][_0x714f('0x51')]);_0x9285f6[_0x714f('0x40')]=_[_0x714f('0x50')](_0xd6980c[_0x714f('0x40')]);_0x9285f6['filters']=_[_0x714f('0x42')](_0x9285f6['model'],_0x9285f6[_0x714f('0x40')]);_0x89bb48[_0x714f('0x43')]=_['intersection'](_0x9285f6[_0x714f('0x3f')],qs[_0x714f('0x44')](_0xd6980c[_0x714f('0x40')][_0x714f('0x44')]));_0x89bb48[_0x714f('0x43')]=_0x89bb48[_0x714f('0x43')][_0x714f('0x52')]?_0x89bb48[_0x714f('0x43')]:_0x9285f6['model'];if(_0xd6980c[_0x714f('0x40')][_0x714f('0x53')]){_0x89bb48[_0x714f('0x4d')]=[{'all':!![]}];}_0x89bb48=_[_0x714f('0x49')]({},_0x89bb48,_0xd6980c[_0x714f('0x4b')]);return db[_0x714f('0x4c')][_0x714f('0x54')](_0x89bb48)[_0x714f('0x1b')](handleEntityNotFound(_0x431768,null))[_0x714f('0x1b')](respondWithResult(_0x431768,null))[_0x714f('0x25')](handleError(_0x431768,null));};exports[_0x714f('0x55')]=function(_0x40f0b8,_0x3163fb){return db['WhatsappAccount'][_0x714f('0x55')](_0x40f0b8['body'],{})[_0x714f('0x1b')](function(_0x45dc05){var _0x343795=_0x40f0b8[_0x714f('0x56')][_0x714f('0x33')]({'plain':!![]});if(!_0x343795)throw new Error(_0x714f('0x57'));if(_0x343795[_0x714f('0x58')]===_0x714f('0x56')){var _0x27ce73=_0x45dc05[_0x714f('0x33')]({'plain':!![]});var _0x2f56b0=_0x714f('0x34');return db[_0x714f('0x59')][_0x714f('0x54')]({'where':{'name':_0x2f56b0,'userProfileId':_0x343795[_0x714f('0x5a')]},'raw':!![]})[_0x714f('0x1b')](function(_0x3fae4d){if(_0x3fae4d&&_0x3fae4d['autoAssociation']===0x0){return db[_0x714f('0x5b')][_0x714f('0x55')]({'name':_0x27ce73[_0x714f('0x37')],'resourceId':_0x27ce73['id'],'type':_0x3fae4d[_0x714f('0x37')],'sectionId':_0x3fae4d['id']},{})[_0x714f('0x1b')](function(){return _0x45dc05;});}else{return _0x45dc05;}})[_0x714f('0x25')](function(_0x5827bd){logger[_0x714f('0x21')](_0x714f('0x5c'),_0x5827bd);throw _0x5827bd;});}return _0x45dc05;})[_0x714f('0x1b')](respondWithResult(_0x3163fb,0xc9))[_0x714f('0x25')](handleError(_0x3163fb,null));};exports[_0x714f('0x31')]=function(_0x1f5059,_0x3f024a){if(_0x1f5059[_0x714f('0x5d')]['id']){delete _0x1f5059['body']['id'];}return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x1f5059['params']['id']},'include':[{'model':db[_0x714f('0x3a')],'as':_0x714f('0x4f')}]})[_0x714f('0x1b')](handleEntityNotFound(_0x3f024a,null))[_0x714f('0x1b')](saveUpdates(_0x1f5059['body'],null))[_0x714f('0x1b')](respondWithResult(_0x3f024a,null))[_0x714f('0x25')](handleError(_0x3f024a,null));};exports[_0x714f('0x32')]=function(_0x30deae,_0x51641e){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x30deae[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x51641e,null))['then'](removeEntity(_0x51641e,null))[_0x714f('0x25')](handleError(_0x51641e,null));};exports[_0x714f('0x5f')]=function(_0x4bc119,_0x49f87c){return db[_0x714f('0x4c')][_0x714f('0x5f')]()[_0x714f('0x1b')](respondWithResult(_0x49f87c,null))[_0x714f('0x25')](handleError(_0x49f87c,null));};exports['addDisposition']=function(_0x3589f4,_0x5b7002,_0x39e5d4){if(_0x3589f4[_0x714f('0x5d')]['id']){delete _0x3589f4['body']['id'];}return db[_0x714f('0x4c')]['find']({'where':{'id':_0x3589f4['params']['id']}})['then'](handleEntityNotFound(_0x5b7002,null))[_0x714f('0x1b')](function(_0x3377fd){if(_0x3377fd){_0x3589f4[_0x714f('0x5d')][_0x714f('0x60')]=_0x3377fd['id'];return db[_0x714f('0x61')][_0x714f('0x55')](_0x3589f4['body']);}})['then'](respondWithResult(_0x5b7002,null))[_0x714f('0x25')](handleError(_0x5b7002,null));};exports[_0x714f('0x62')]=function(_0x44bdf4,_0x4d88cc,_0x1c0f7d){var _0x5069d2={'raw':![],'where':{}};var _0x22295f={};var _0x4ac9a3={'count':0x0,'rows':[]};return db[_0x714f('0x4c')]['findOne']({'where':{'id':_0x44bdf4[_0x714f('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4d88cc,null))['then'](function(_0x3b5f83){if(_0x3b5f83){_0x22295f[_0x714f('0x3f')]=_[_0x714f('0x50')](db[_0x714f('0x61')][_0x714f('0x51')]);_0x22295f['query']=_[_0x714f('0x50')](_0x44bdf4[_0x714f('0x40')]);_0x22295f[_0x714f('0x41')]=_[_0x714f('0x42')](_0x22295f['model'],_0x22295f[_0x714f('0x40')]);_0x5069d2[_0x714f('0x43')]=_[_0x714f('0x42')](_0x22295f[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x44')]));_0x5069d2[_0x714f('0x43')]=_0x5069d2[_0x714f('0x43')][_0x714f('0x52')]?_0x5069d2['attributes']:_0x22295f[_0x714f('0x3f')];if(!_0x44bdf4[_0x714f('0x40')]['hasOwnProperty']('nolimit')){_0x5069d2[_0x714f('0x2b')]=qs[_0x714f('0x2b')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x2b')]);_0x5069d2[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x29')]);}_0x5069d2['order']=qs[_0x714f('0x46')](_0x44bdf4[_0x714f('0x40')][_0x714f('0x46')]);_0x5069d2['where']=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0x44bdf4[_0x714f('0x40')],_0x22295f[_0x714f('0x41')]));_0x5069d2[_0x714f('0x47')]['WhatsappAccountId']=_0x3b5f83['id'];if(_0x44bdf4[_0x714f('0x40')][_0x714f('0x63')]){_0x5069d2[_0x714f('0x47')]=_[_0x714f('0x49')](_0x5069d2['where'],{'$or':_[_0x714f('0x3b')](_0x5069d2['attributes'],function(_0x477d60){var _0x285af1={};_0x285af1[_0x477d60]={'$like':'%'+_0x44bdf4[_0x714f('0x40')][_0x714f('0x63')]+'%'};return _0x285af1;})});}_0x5069d2=_[_0x714f('0x49')]({},_0x5069d2,_0x44bdf4[_0x714f('0x4b')]);return db['Disposition'][_0x714f('0x2c')]({'where':_0x5069d2[_0x714f('0x47')]})[_0x714f('0x1b')](function(_0x2411af){_0x4ac9a3['count']=_0x2411af;if(_0x44bdf4[_0x714f('0x40')][_0x714f('0x53')]){_0x5069d2[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x61')][_0x714f('0x64')](_0x5069d2);})['then'](function(_0x528b55){_0x4ac9a3['rows']=_0x528b55;return _0x4ac9a3;});}})[_0x714f('0x1b')](respondWithFilteredResult(_0x4d88cc,_0x5069d2))[_0x714f('0x25')](handleError(_0x4d88cc,null));};exports[_0x714f('0x65')]=function(_0x2c03c4,_0x29feab,_0xb43d8){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x2c03c4[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x29feab,null))[_0x714f('0x1b')](function(_0xda33dd){if(_0xda33dd){return _0xda33dd['removeDispositions'](_0x2c03c4[_0x714f('0x40')][_0x714f('0x66')]);}})['then'](respondWithStatusCode(_0x29feab,null))[_0x714f('0x25')](handleError(_0x29feab,null));};exports[_0x714f('0x67')]=function(_0x465d7c,_0x13409c,_0x11f28f){if(_0x465d7c[_0x714f('0x5d')]['id']){delete _0x465d7c[_0x714f('0x5d')]['id'];}return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x465d7c[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x13409c,null))[_0x714f('0x1b')](function(_0x54124e){if(_0x54124e){_0x465d7c['body'][_0x714f('0x60')]=_0x54124e['id'];return db['CannedAnswer']['create'](_0x465d7c[_0x714f('0x5d')]);}})[_0x714f('0x1b')](respondWithResult(_0x13409c,null))[_0x714f('0x25')](handleError(_0x13409c,null));};exports[_0x714f('0x68')]=function(_0x581b10,_0x4be71d,_0x2f026d){var _0x5ed5f6={'raw':![],'where':{}};var _0x371722={};var _0x57184c={'count':0x0,'rows':[]};return db[_0x714f('0x4c')][_0x714f('0x69')]({'where':{'id':_0x581b10[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x4be71d,null))[_0x714f('0x1b')](function(_0x3e753a){if(_0x3e753a){_0x371722[_0x714f('0x3f')]=_['keys'](db[_0x714f('0x6a')][_0x714f('0x51')]);_0x371722[_0x714f('0x40')]=_['keys'](_0x581b10[_0x714f('0x40')]);_0x371722['filters']=_[_0x714f('0x42')](_0x371722[_0x714f('0x3f')],_0x371722[_0x714f('0x40')]);_0x5ed5f6[_0x714f('0x43')]=_[_0x714f('0x42')](_0x371722[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x581b10['query'][_0x714f('0x44')]));_0x5ed5f6[_0x714f('0x43')]=_0x5ed5f6[_0x714f('0x43')][_0x714f('0x52')]?_0x5ed5f6[_0x714f('0x43')]:_0x371722[_0x714f('0x3f')];if(!_0x581b10['query']['hasOwnProperty'](_0x714f('0x6b'))){_0x5ed5f6[_0x714f('0x2b')]=qs[_0x714f('0x2b')](_0x581b10[_0x714f('0x40')][_0x714f('0x2b')]);_0x5ed5f6[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x581b10[_0x714f('0x40')]['offset']);}_0x5ed5f6[_0x714f('0x6c')]=qs[_0x714f('0x46')](_0x581b10['query'][_0x714f('0x46')]);_0x5ed5f6[_0x714f('0x47')]=qs['filters'](_[_0x714f('0x48')](_0x581b10[_0x714f('0x40')],_0x371722[_0x714f('0x41')]));_0x5ed5f6[_0x714f('0x47')][_0x714f('0x60')]=_0x3e753a['id'];if(_0x581b10[_0x714f('0x40')][_0x714f('0x63')]){_0x5ed5f6[_0x714f('0x47')]=_[_0x714f('0x49')](_0x5ed5f6[_0x714f('0x47')],{'$or':_[_0x714f('0x3b')](_0x5ed5f6['attributes'],function(_0x1995fe){var _0x5cbd9f={};_0x5cbd9f[_0x1995fe]={'$like':'%'+_0x581b10[_0x714f('0x40')]['filter']+'%'};return _0x5cbd9f;})});}_0x5ed5f6=_[_0x714f('0x49')]({},_0x5ed5f6,_0x581b10[_0x714f('0x4b')]);return db[_0x714f('0x6a')][_0x714f('0x2c')]({'where':_0x5ed5f6[_0x714f('0x47')]})[_0x714f('0x1b')](function(_0x511557){_0x57184c[_0x714f('0x2c')]=_0x511557;if(_0x581b10[_0x714f('0x40')][_0x714f('0x53')]){_0x5ed5f6[_0x714f('0x4d')]=[{'all':!![]}];}return db[_0x714f('0x6a')]['findAll'](_0x5ed5f6);})[_0x714f('0x1b')](function(_0x5a06cf){_0x57184c[_0x714f('0x4e')]=_0x5a06cf;return _0x57184c;});}})[_0x714f('0x1b')](respondWithFilteredResult(_0x4be71d,_0x5ed5f6))[_0x714f('0x25')](handleError(_0x4be71d,null));};exports[_0x714f('0x6d')]=function(_0x410ca7,_0x16bcd8,_0x5eca76){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x410ca7[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x16bcd8,null))[_0x714f('0x1b')](function(_0x1d8708){if(_0x1d8708){return _0x1d8708[_0x714f('0x6d')](_0x410ca7[_0x714f('0x40')][_0x714f('0x66')]);}})[_0x714f('0x1b')](respondWithStatusCode(_0x16bcd8,null))[_0x714f('0x25')](handleError(_0x16bcd8,null));};exports[_0x714f('0x6e')]=function(_0x19dcd5,_0x4d000b,_0x5953a8){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x19dcd5[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x4d000b,null))[_0x714f('0x1b')](function(_0x29ad00){if(_0x29ad00){return _0x29ad00[_0x714f('0x6e')](_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')],_['omit'](_0x19dcd5[_0x714f('0x5d')],[_0x714f('0x66'),'id'])||{})['spread'](function(_0x4c2ca0){for(var _0x568e7c=0x0;_0x568e7c<_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')]['length'];_0x568e7c+=0x1){socket['emit'](_0x714f('0x6f'),{'UserId':Number(_0x19dcd5[_0x714f('0x5d')][_0x714f('0x66')][_0x568e7c]),'WhatsappAccountId':Number(_0x19dcd5[_0x714f('0x5e')]['id'])});}return _0x4c2ca0;});}})[_0x714f('0x1b')](respondWithResult(_0x4d000b,null))[_0x714f('0x25')](handleError(_0x4d000b,null));};exports[_0x714f('0x70')]=function(_0x3f0e22,_0x584bbe,_0x2f8966){return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0x3f0e22[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x584bbe,null))[_0x714f('0x1b')](function(_0x5116c0){if(_0x5116c0){return _0x5116c0[_0x714f('0x70')](_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')])[_0x714f('0x1b')](function(){if(_[_0x714f('0x71')](_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')])){for(var _0x25bbf3=0x0;_0x25bbf3<_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')][_0x714f('0x52')];_0x25bbf3+=0x1){socket[_0x714f('0x72')](_0x714f('0x73'),{'UserId':Number(_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')][_0x25bbf3]),'WhatsappAccountId':Number(_0x3f0e22[_0x714f('0x5e')]['id'])});}}else{socket[_0x714f('0x72')](_0x714f('0x73'),{'UserId':Number(_0x3f0e22[_0x714f('0x40')][_0x714f('0x66')]),'WhatsappAccountId':Number(_0x3f0e22[_0x714f('0x5e')]['id'])});}});}})[_0x714f('0x1b')](respondWithStatusCode(_0x584bbe,null))[_0x714f('0x25')](handleError(_0x584bbe,null));};exports[_0x714f('0x74')]=function(_0x19c42a,_0x26faf4,_0x1d53f7){var _0x294558={};var _0x339ab1={};var _0x8db5a6;var _0x207e58;return db['WhatsappAccount'][_0x714f('0x69')]({'where':{'id':_0x19c42a[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x26faf4,null))[_0x714f('0x1b')](function(_0x224e95){if(_0x224e95){_0x8db5a6=_0x224e95;_0x339ab1[_0x714f('0x3f')]=_['keys'](db[_0x714f('0x75')][_0x714f('0x51')]);_0x339ab1[_0x714f('0x40')]=_[_0x714f('0x50')](_0x19c42a[_0x714f('0x40')]);_0x339ab1[_0x714f('0x41')]=_[_0x714f('0x42')](_0x339ab1[_0x714f('0x3f')],_0x339ab1['query']);_0x294558[_0x714f('0x43')]=_[_0x714f('0x42')](_0x339ab1[_0x714f('0x3f')],qs[_0x714f('0x44')](_0x19c42a[_0x714f('0x40')][_0x714f('0x44')]));_0x294558[_0x714f('0x43')]=_0x294558['attributes'][_0x714f('0x52')]?_0x294558[_0x714f('0x43')]:_0x339ab1['model'];_0x294558[_0x714f('0x6c')]=qs[_0x714f('0x46')](_0x19c42a[_0x714f('0x40')][_0x714f('0x46')]);_0x294558[_0x714f('0x47')]=qs['filters'](_[_0x714f('0x48')](_0x19c42a[_0x714f('0x40')],_0x339ab1[_0x714f('0x41')]));if(_0x19c42a[_0x714f('0x40')]['filter']){_0x294558[_0x714f('0x47')]=_[_0x714f('0x49')](_0x294558['where'],{'$or':_[_0x714f('0x3b')](_0x294558[_0x714f('0x43')],function(_0x1dad82){var _0x488ca0={};_0x488ca0[_0x1dad82]={'$like':'%'+_0x19c42a[_0x714f('0x40')][_0x714f('0x63')]+'%'};return _0x488ca0;})});}_0x294558=_['merge']({},_0x294558,_0x19c42a[_0x714f('0x4b')]);return _0x8db5a6[_0x714f('0x74')](_0x294558);}})[_0x714f('0x1b')](function(_0x45b210){if(_0x45b210){_0x207e58=_0x45b210[_0x714f('0x52')];if(!_0x19c42a[_0x714f('0x40')][_0x714f('0x45')](_0x714f('0x6b'))){_0x294558['limit']=qs[_0x714f('0x2b')](_0x19c42a[_0x714f('0x40')][_0x714f('0x2b')]);_0x294558[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x19c42a[_0x714f('0x40')][_0x714f('0x29')]);}return _0x8db5a6[_0x714f('0x74')](_0x294558);}})[_0x714f('0x1b')](function(_0x46342a){if(_0x46342a){return _0x46342a?{'count':_0x207e58,'rows':_0x46342a}:null;}})[_0x714f('0x1b')](respondWithResult(_0x26faf4,null))[_0x714f('0x25')](handleError(_0x26faf4,null));};exports[_0x714f('0x76')]=function(_0x4968ad,_0x4795c7,_0x3069d2){return db[_0x714f('0x4c')][_0x714f('0x69')]({'where':{'id':_0x4968ad[_0x714f('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4795c7,null))[_0x714f('0x1b')](function(_0x784891){if(_0x784891){return db[_0x714f('0x77')][_0x714f('0x78')](function(_0x225587){return db[_0x714f('0x79')][_0x714f('0x32')]({'where':{'WhatsappAccountId':_0x4968ad['params']['id']},'transaction':_0x225587})[_0x714f('0x1b')](function(_0x544294){var _0x16655a=_[_0x714f('0x3b')](_0x4968ad[_0x714f('0x5d')],function(_0x3f92d1){_0x3f92d1['WhatsappAccountId']=_0x4968ad['params']['id'];return _0x3f92d1;});return db[_0x714f('0x79')][_0x714f('0x7a')](_0x16655a,{'transaction':_0x225587});});})['then'](function(){return db[_0x714f('0x79')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x4968ad['params']['id']},'order':'priority'});});}})[_0x714f('0x1b')](respondWithResult(_0x4795c7,null))[_0x714f('0x25')](handleError(_0x4795c7,null));};exports[_0x714f('0x7b')]=function(_0x1f0817,_0x31bbb2,_0x3c5cae){var _0x5565ac={};var _0x26ccaf={};var _0x1b83db;var _0x1ced36;return db[_0x714f('0x4c')]['findOne']({'where':{'id':_0x1f0817[_0x714f('0x5e')]['id']}})[_0x714f('0x1b')](handleEntityNotFound(_0x31bbb2,null))['then'](function(_0x1e7c0f){if(_0x1e7c0f){_0x1b83db=_0x1e7c0f;_0x26ccaf[_0x714f('0x3f')]=_[_0x714f('0x50')](db[_0x714f('0x79')][_0x714f('0x51')]);_0x26ccaf[_0x714f('0x40')]=_['keys'](_0x1f0817[_0x714f('0x40')]);_0x26ccaf[_0x714f('0x41')]=_['intersection'](_0x26ccaf['model'],_0x26ccaf['query']);_0x5565ac[_0x714f('0x43')]=_[_0x714f('0x42')](_0x26ccaf['model'],qs[_0x714f('0x44')](_0x1f0817[_0x714f('0x40')][_0x714f('0x44')]));_0x5565ac['attributes']=_0x5565ac[_0x714f('0x43')][_0x714f('0x52')]?_0x5565ac[_0x714f('0x43')]:_0x26ccaf[_0x714f('0x3f')];_0x5565ac['order']=qs[_0x714f('0x46')](_0x1f0817['query'][_0x714f('0x46')]);_0x5565ac[_0x714f('0x47')]=qs[_0x714f('0x41')](_[_0x714f('0x48')](_0x1f0817[_0x714f('0x40')],_0x26ccaf[_0x714f('0x41')]));if(_0x1f0817[_0x714f('0x40')][_0x714f('0x63')]){_0x5565ac[_0x714f('0x47')]=_['merge'](_0x5565ac[_0x714f('0x47')],{'$or':_[_0x714f('0x3b')](_0x5565ac[_0x714f('0x43')],function(_0x5357d4){var _0x4516ca={};_0x4516ca[_0x5357d4]={'$like':'%'+_0x1f0817['query'][_0x714f('0x63')]+'%'};return _0x4516ca;})});}_0x5565ac=_[_0x714f('0x49')]({},_0x5565ac,_0x1f0817['options']);return _0x1b83db[_0x714f('0x7b')](_0x5565ac);}})[_0x714f('0x1b')](function(_0x90c58c){if(_0x90c58c){_0x1ced36=_0x90c58c[_0x714f('0x52')];if(!_0x1f0817['query'][_0x714f('0x45')](_0x714f('0x6b'))){_0x5565ac[_0x714f('0x2b')]=qs['limit'](_0x1f0817[_0x714f('0x40')]['limit']);_0x5565ac[_0x714f('0x29')]=qs[_0x714f('0x29')](_0x1f0817[_0x714f('0x40')][_0x714f('0x29')]);}return _0x1b83db[_0x714f('0x7b')](_0x5565ac);}})[_0x714f('0x1b')](function(_0x1c9fc6){if(_0x1c9fc6){return _0x1c9fc6?{'count':_0x1ced36,'rows':_0x1c9fc6}:null;}})[_0x714f('0x1b')](respondWithResult(_0x31bbb2,null))['catch'](handleError(_0x31bbb2,null));};exports[_0x714f('0x7c')]=function(_0xed93f2,_0x41056f,_0x3c5b85){var _0x1321b0={'channel':_0x714f('0x7d')};var _0x2e6eac=[];var _0x48531b=[];var _0x29e0d1={};return db[_0x714f('0x4c')][_0x714f('0x54')]({'where':{'id':_0xed93f2['params']['id']},'include':[{'model':db[_0x714f('0x79')],'as':_0x714f('0x7e')}]})[_0x714f('0x1b')](handleEntityNotFound(_0x41056f,null))[_0x714f('0x1b')](function(_0x2abcbe){_0x1321b0[_0x714f('0x7f')]=_0x2abcbe;if(_0x1321b0[_0x714f('0x7f')]&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x80')&&_0xed93f2['body']['statuses']){if(_0xed93f2['body']['statuses'][_0x714f('0x52')]===0x0)return;if(_0xed93f2[_0x714f('0x5d')][_0x714f('0x81')][0x0][_0x714f('0x82')]!==_0x714f('0x83'))return;return db['WhatsappMessage']['update']({'read':!![],'readAt':_0xed93f2[_0x714f('0x5d')][_0x714f('0x81')][0x0][_0x714f('0x84')]},{'where':{'messageId':_0xed93f2['body'][_0x714f('0x81')][0x0][_0x714f('0x85')]},'individualHooks':!![]})['then'](function(_0x4d7899){return _0x41056f[_0x714f('0x27')](0xc8)['json'](_0x4d7899);});}_0x1321b0[_0x714f('0x86')]=_[_0x714f('0x87')](_0x2abcbe[_0x714f('0x7e')],[_0x714f('0x88')],[_0x714f('0x89')]);if(_0x1321b0['account'][_0x714f('0x7e')]){delete _0x1321b0['account'][_0x714f('0x7e')];}return db[_0x714f('0x8a')][_0x714f('0x5f')]()[_0x714f('0x1b')](function(_0x4d1f21){if(!_0x4d1f21){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x8d'));}_0x2e6eac=_[_0x714f('0x8e')](_[_0x714f('0x50')](_0x4d1f21),[_0x714f('0x8f'),_0x714f('0x90')]);_0x48531b=_[_0x714f('0x8e')](_[_0x714f('0x50')](_0x4d1f21),[_0x714f('0x8f'),'updatedAt','CompanyId',_0x714f('0x91')]);_0x1321b0['body']={'mapKey':_0x714f('0x92')};if(_0x1321b0[_0x714f('0x7f')]&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x93')){_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x95')]['replace']('whatsapp:','');_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x96')];_0x1321b0[_0x714f('0x5d')]['messageId']=_0xed93f2[_0x714f('0x5d')][_0x714f('0x97')];}if(_0x1321b0['account']&&_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x80')){_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0][_0x714f('0x94')];_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')]=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0]['message'][_0x714f('0x5d')];_0x1321b0[_0x714f('0x5d')]['messageId']=_0xed93f2[_0x714f('0x5d')][_0x714f('0x98')][0x0][_0x714f('0x85')];}if(_0x1321b0[_0x714f('0x5d')]['id']){delete _0x1321b0['body']['id'];}if(_['isNil'](_0x1321b0['body'][_0x714f('0x94')])){throw new db[(_0x714f('0x8b'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x714f('0x99')](_0x1321b0[_0x714f('0x5d')][_0x714f('0x5d')])||_0x1321b0['body'][_0x714f('0x5d')]===''){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9a'));}if(_[_0x714f('0x99')](_0x1321b0[_0x714f('0x5d')][_0x714f('0x9b')])){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9c')+_0x48531b);}if(!_[_0x714f('0x9d')](_0x48531b,_0x1321b0['body'][_0x714f('0x9b')])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x48531b);}_0x29e0d1[_0x1321b0[_0x714f('0x5d')]['mapKey']]=_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')];return db['CmList'][_0x714f('0x54')]({'where':{'id':_0x1321b0[_0x714f('0x7f')][_0x714f('0x91')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x29e0d1,'limit':0x1,'order':[['updatedAt','DESC']]}]});})['then'](handleEntityNotFound(_0x41056f,null))[_0x714f('0x1b')](function(_0x5f4952){if(_0x5f4952){_0x1321b0[_0x714f('0x9e')]=_[_0x714f('0x9f')](_0x5f4952,[_0x714f('0xa0')]);if(_0x5f4952['Contacts'][_0x714f('0x52')]){return _0x5f4952[_0x714f('0xa0')][0x0];}var _0x508e70=_[_0x714f('0x15')](_0x1321b0[_0x714f('0x5d')],{'firstName':_0x1321b0['body']['from'],'ListId':_0x5f4952['id']});_0x508e70[_0x1321b0['body'][_0x714f('0x9b')]]=_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')];return db[_0x714f('0x8a')][_0x714f('0x55')](_0x508e70,{'fields':_0x2e6eac,'raw':!![]});}})['then'](handleEntityNotFound(_0x41056f,null))['then'](function(_0x2c9199){if(_0x2c9199){_0x1321b0[_0x714f('0xa1')]=_0x2c9199;var _0x495846={'ContactId':_0x2c9199['id'],'phone':_0x1321b0[_0x714f('0x5d')][_0x714f('0x94')],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id']};var _0x1b9aaa={'ContactId':_0x2c9199['id'],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id'],'closed':![]};return db[_0x714f('0xa2')][_0x714f('0x54')]({'where':_0x1b9aaa})[_0x714f('0x1b')](function(_0x290f2e){if(_0x290f2e){return[_0x290f2e,![]];}return db[_0x714f('0xa2')]['create'](_0x495846)['then'](function(_0x4e7bfe){return[_0x4e7bfe,!![]];});});}})[_0x714f('0xa3')](function(_0x4757ec,_0x28a335){_0x1321b0[_0x714f('0xa4')]=_0x4757ec['get']({'plain':!![]});_0x1321b0[_0x714f('0xa4')][_0x714f('0xa5')]=![];if(_0x28a335){if(_0x1321b0['account'][_0x714f('0xa6')]){_0x1321b0[_0x714f('0x86')][_0x714f('0xa7')]({'id':0x0,'priority':_0x1321b0[_0x714f('0x86')][_0x714f('0x52')]+0x1,'app':_0x714f('0xa8'),'appdata':'unmanaged','interval':_0x714f('0xa9')});}_0x1321b0[_0x714f('0xa4')]['created']=!![];}return db[_0x714f('0xaa')]['create']({'phone':_0x1321b0['body']['from'],'messageId':_0x1321b0[_0x714f('0x5d')][_0x714f('0xab')],'body':_0x1321b0['body']['body'],'WhatsappAccountId':_0xed93f2[_0x714f('0x5e')]['id'],'WhatsappInteractionId':_0x4757ec['id'],'direction':'in','ContactId':_0x4757ec[_0x714f('0xac')],'AttachmentId':_0x1321b0[_0x714f('0x5d')][_0x714f('0xad')]});})[_0x714f('0x1b')](function(_0x4b58b6){_0x1321b0['message']=_0x4b58b6;if(_0x1321b0[_0x714f('0xa4')][_0x714f('0xae')]){return db[_0x714f('0x75')][_0x714f('0x54')]({'attributes':['id',_0x714f('0x37')],'where':{'id':_0x1321b0[_0x714f('0xa4')][_0x714f('0xae')]}})['then'](function(_0x54f8b3){if(_0x54f8b3){_0x1321b0[_0x714f('0x86')][_0x714f('0xaf')]({'id':0x0,'priority':0x0,'app':_0x714f('0xb0'),'appdata':_0x54f8b3[_0x714f('0x37')]+','+(_0x1321b0[_0x714f('0x7f')]['waitForTheAssignedAgent']||0xa),'interval':_0x714f('0xa9')});}return respondWithRpcPromise(_0x714f('0xb1'),_0x714f('0xb2'),_0x1321b0);});}return respondWithRpcPromise(_0x714f('0xb1'),_0x714f('0xb2'),_0x1321b0);})[_0x714f('0x1b')](function(_0x17245c){if(_0x17245c){var _0x5a77f2=0xc8;var _0x554a05=_0x714f('0xb3');logger[_0x714f('0x24')](_0x714f('0x1f'),_0x554a05,_0x5a77f2,_0x714f('0xb4'));logger[_0x714f('0x1e')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x554a05,_0x5a77f2,_0x714f('0xb4'),JSON[_0x714f('0x20')](_0x17245c));if(_0x1321b0[_0x714f('0x7f')][_0x714f('0x3d')]===_0x714f('0x93')){return _0x41056f[_0x714f('0x27')](_0x5a77f2)['set']('Content-Type',_0x714f('0xb5'))[_0x714f('0x38')](_0x714f('0xb6'));}else{return _0x41056f[_0x714f('0x27')](_0x5a77f2)[_0x714f('0x28')](_0x17245c);}}});})[_0x714f('0x25')](handleError(_0x41056f,null));};exports[_0x714f('0x38')]=function(_0x1b1a11,_0x57fb8c,_0xf79ef0){var _0x175f49,_0x5ac686,_0x511bb7;if(_[_0x714f('0x99')](_0x1b1a11[_0x714f('0x5d')]['body'])||_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')]===''){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))](_0x714f('0x9a'));}if(_[_0x714f('0x99')](_0x1b1a11['body']['to'])){throw new db[(_0x714f('0x8b'))][(_0x714f('0x8c'))]('to\x20is\x20mandatory');}_0x175f49=_0x1b1a11['body']['to'];return db['WhatsappAccount'][_0x714f('0x54')]({'where':{'id':_0x1b1a11['params']['id']},'include':[{'model':db[_0x714f('0xb7')],'as':_0x714f('0xb8'),'include':[{'model':db['CmContact'],'as':_0x714f('0xa0'),'where':{'mobile':_0x175f49},'limit':0x1,'order':[[_0x714f('0x90'),_0x714f('0xb9')]]}]}]})[_0x714f('0x1b')](handleEntityNotFound(_0x57fb8c,null))[_0x714f('0x1b')](function(_0x3da617){if(_0x3da617&&_0x3da617['List']){_0x5ac686=_0x3da617[_0x714f('0x33')]({'plain':!![]});if(_0x5ac686[_0x714f('0xb8')]&&_0x5ac686[_0x714f('0xb8')][_0x714f('0xa0')][_0x714f('0x52')]){return _0x5ac686['List'][_0x714f('0xa0')][0x0];}return db[_0x714f('0x8a')][_0x714f('0x55')](_[_0x714f('0x15')](_0x1b1a11[_0x714f('0x5d')],{'firstName':_0x175f49,'mobile':_0x175f49,'phone':_0x175f49,'ListId':_0x5ac686['ListId']}));}})[_0x714f('0x1b')](handleEntityNotFound(_0x57fb8c,null))[_0x714f('0x1b')](function(_0x3c19f1){if(_0x3c19f1){_0x511bb7=_0x3c19f1;return db['WhatsappInteraction'][_0x714f('0x54')]({'where':{'ContactId':_0x511bb7['id'],'closed':![],'WhatsappAccountId':_0x5ac686['id']}})[_0x714f('0x1b')](function(_0x4be5c2){if(_0x4be5c2){return[_0x4be5c2,![]];}return db[_0x714f('0xa2')][_0x714f('0x55')]({'UserId':_0x1b1a11['user']['id'],'ContactId':_0x511bb7['id'],'WhatsappAccountId':_0x5ac686['id'],'phone':_0x175f49,'firstMsgDirection':'out','Messages':[_['merge'](_0x1b1a11[_0x714f('0x5d')],{'read':![],'body':_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')],'phone':_0x175f49,'WhatsappAccountId':_0x5ac686['id'],'UserId':_0x1b1a11['user']['id'],'ContactId':_0x511bb7['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x714f('0xba')}]})[_0x714f('0x1b')](function(_0x3c43fa){return[_0x3c43fa,!![]];});});}})[_0x714f('0xa3')](function(_0x38c48f,_0x37637f){if(_0x37637f){return _0x38c48f;}return db[_0x714f('0xaa')][_0x714f('0x55')](_[_0x714f('0x49')](_0x1b1a11[_0x714f('0x5d')],{'read':![],'body':_0x1b1a11[_0x714f('0x5d')][_0x714f('0x5d')],'phone':_0x175f49,'WhatsappAccountId':_0x5ac686['id'],'WhatsappInteractionId':_0x38c48f['id'],'UserId':_0x1b1a11[_0x714f('0x56')]['id'],'ContactId':_0x511bb7['id']}))[_0x714f('0x1b')](function(_0x4f63cd){_0x38c48f['dataValues'][_0x714f('0xba')]=[];_0x38c48f[_0x714f('0xbb')]['Messages'][_0x714f('0xa7')](_0x4f63cd[_0x714f('0xbb')]);return _0x38c48f;});})[_0x714f('0x1b')](respondWithResult(_0x57fb8c,null))[_0x714f('0x25')](handleError(_0x57fb8c,null));};
\ No newline at end of file
+var _0xa9fb=['apply','reject','save','update','destroy','get','WhatsappAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','pick','removeDispositions','ids','addAnswer','getAnswers','order','CannedAnswer','removeAnswers','addAgents','omit','spread','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','priority','getApplications','notify','whatsapp','account','statuses','read','WhatsappMessage','timestamp','message_id','applications','orderBy','Applications','asc','CmContact','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','sinch','notifications','isNil','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','Contacts','contact','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x5959c9,_0x2ed153){var _0x4ffcbc=function(_0x459b7a){while(--_0x459b7a){_0x5959c9['push'](_0x5959c9['shift']());}};_0x4ffcbc(++_0x2ed153);}(_0xa9fb,0x15d));var _0xba9f=function(_0x9cf460,_0x51394a){_0x9cf460=_0x9cf460-0x0;var _0x3c37e2=_0xa9fb[_0x9cf460];return _0x3c37e2;};'use strict';var emlformat=require(_0xba9f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba9f('0x1'));var jsonpatch=require(_0xba9f('0x2'));var rp=require(_0xba9f('0x3'));var moment=require(_0xba9f('0x4'));var BPromise=require(_0xba9f('0x5'));var Mustache=require(_0xba9f('0x6'));var util=require(_0xba9f('0x7'));var path=require('path');var sox=require(_0xba9f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba9f('0x9'));var squel=require(_0xba9f('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xba9f('0xb'));var toCsv=require(_0xba9f('0xc'));var querystring=require(_0xba9f('0xd'));var Papa=require(_0xba9f('0xe'));var Redis=require(_0xba9f('0xf'));var authService=require(_0xba9f('0x10'));var qs=require(_0xba9f('0x11'));var as=require(_0xba9f('0x12'));var hardwareService=require(_0xba9f('0x13'));var logger=require(_0xba9f('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xba9f('0x15'));var licenseUtil=require(_0xba9f('0x16'));var db=require(_0xba9f('0x17'))['db'];config['redis']=_[_0xba9f('0x18')](config[_0xba9f('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xba9f('0x1a'))(new Redis(config['redis']));require(_0xba9f('0x1b'))[_0xba9f('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x79c948,_0x3374e9,_0x190337,_0x43efb1){return new BPromise(function(_0x49f85a,_0x4ac7f2){var _0x291baf=_0x43efb1||client;return _0x291baf[_0xba9f('0x1d')](_0x79c948,_0x190337)[_0xba9f('0x1e')](function(_0x574dc2){logger['info'](_0xba9f('0x1f'),_0x3374e9,_0xba9f('0x20'));logger[_0xba9f('0x21')](_0xba9f('0x22'),_0x3374e9,_0xba9f('0x20'),JSON[_0xba9f('0x23')](_0x574dc2));if(_0x574dc2[_0xba9f('0x24')]){if(_0x574dc2['error'][_0xba9f('0x25')]===0x1f4){logger[_0xba9f('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x3374e9,_0x574dc2['error'][_0xba9f('0x26')]);return _0x4ac7f2(_0x574dc2['error'][_0xba9f('0x26')]);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x3374e9,_0x574dc2[_0xba9f('0x24')][_0xba9f('0x26')]);return _0x49f85a(_0x574dc2['error']['message']);}else{logger[_0xba9f('0x27')](_0xba9f('0x1f'),_0x3374e9,'request\x20sent');_0x49f85a(_0x574dc2[_0xba9f('0x28')]['message']);}})['catch'](function(_0x5d65be){logger[_0xba9f('0x24')](_0xba9f('0x1f'),_0x3374e9,_0x5d65be);_0x4ac7f2(_0x5d65be);});});}function respondWithStatusCode(_0x2f8a2d,_0x307f39){_0x307f39=_0x307f39||0xcc;return function(_0x47a0b8){if(_0x47a0b8){return _0x2f8a2d[_0xba9f('0x29')](_0x307f39);}return _0x2f8a2d[_0xba9f('0x2a')](_0x307f39)[_0xba9f('0x2b')]();};}function respondWithResult(_0x2220e7,_0x2767e0){_0x2767e0=_0x2767e0||0xc8;return function(_0x484c8b){if(_0x484c8b){return _0x2220e7[_0xba9f('0x2a')](_0x2767e0)[_0xba9f('0x2c')](_0x484c8b);}};}function respondWithFilteredResult(_0x169252,_0xfc6ab1){return function(_0x1faf56){if(_0x1faf56){var _0x1c6acb=typeof _0xfc6ab1[_0xba9f('0x2d')]===_0xba9f('0x2e')&&typeof _0xfc6ab1[_0xba9f('0x2f')]==='undefined';var _0x38682a=_0x1faf56['count'];var _0x1560d7=_0x1c6acb?0x0:_0xfc6ab1['offset'];var _0x38290d=_0x1c6acb?_0x1faf56[_0xba9f('0x30')]:_0xfc6ab1[_0xba9f('0x2d')]+_0xfc6ab1[_0xba9f('0x2f')];var _0x35bec1;if(_0x38290d>=_0x38682a){_0x38290d=_0x38682a;_0x35bec1=0xc8;}else{_0x35bec1=0xce;}_0x169252[_0xba9f('0x2a')](_0x35bec1);return _0x169252[_0xba9f('0x31')](_0xba9f('0x32'),_0x1560d7+'-'+_0x38290d+'/'+_0x38682a)[_0xba9f('0x2c')](_0x1faf56);}return null;};}function patchUpdates(_0x211223){return function(_0x575ecf){try{jsonpatch[_0xba9f('0x33')](_0x575ecf,_0x211223,!![]);}catch(_0x137888){return BPromise[_0xba9f('0x34')](_0x137888);}return _0x575ecf[_0xba9f('0x35')]();};}function saveUpdates(_0x1e6c29,_0x3c24e4){return function(_0x43ad26){if(_0x43ad26){return _0x43ad26[_0xba9f('0x36')](_0x1e6c29)['then'](function(_0x1149bf){return _0x1149bf;});}return null;};}function removeEntity(_0x6ba53,_0x5f4dca){return function(_0x2fe91c){if(_0x2fe91c){return _0x2fe91c[_0xba9f('0x37')]()[_0xba9f('0x1e')](function(){var _0x2236dc=_0x2fe91c[_0xba9f('0x38')]({'plain':!![]});var _0x4aa687=_0xba9f('0x39');return db['UserProfileResource'][_0xba9f('0x37')]({'where':{'type':_0x4aa687,'resourceId':_0x2236dc['id']}})[_0xba9f('0x1e')](function(){return _0x2fe91c;});})[_0xba9f('0x1e')](function(){_0x6ba53[_0xba9f('0x2a')](0xcc)[_0xba9f('0x2b')]();});}};}function handleEntityNotFound(_0xd65252,_0x3aa465){return function(_0x565a06){if(!_0x565a06){_0xd65252[_0xba9f('0x29')](0x194);}return _0x565a06;};}function handleError(_0x203228,_0x46237f){_0x46237f=_0x46237f||0x1f4;return function(_0x2d39d2){logger[_0xba9f('0x24')](_0x2d39d2[_0xba9f('0x3a')]);if(_0x2d39d2[_0xba9f('0x3b')]){delete _0x2d39d2[_0xba9f('0x3b')];}_0x203228[_0xba9f('0x2a')](_0x46237f)[_0xba9f('0x3c')](_0x2d39d2);};}exports[_0xba9f('0x3d')]=function(_0x20ab77,_0x2a45c9){var _0x19d7dd={'include':[{'model':db[_0xba9f('0x3e')],'as':_0xba9f('0x3f')}]},_0x410463={},_0x263620={'count':0x0,'rows':[]};var _0xd357ba=_[_0xba9f('0x40')](db[_0xba9f('0x41')][_0xba9f('0x42')],function(_0xd415b1){return{'name':_0xd415b1[_0xba9f('0x43')],'type':_0xd415b1['type'][_0xba9f('0x44')]};});_0x410463[_0xba9f('0x45')]=_[_0xba9f('0x40')](_0xd357ba,_0xba9f('0x3b'));_0x410463[_0xba9f('0x46')]=_[_0xba9f('0x47')](_0x20ab77[_0xba9f('0x46')]);_0x410463[_0xba9f('0x48')]=_['intersection'](_0x410463['model'],_0x410463[_0xba9f('0x46')]);_0x19d7dd[_0xba9f('0x49')]=_[_0xba9f('0x4a')](_0x410463['model'],qs[_0xba9f('0x4b')](_0x20ab77[_0xba9f('0x46')][_0xba9f('0x4b')]));_0x19d7dd[_0xba9f('0x49')]=_0x19d7dd[_0xba9f('0x49')][_0xba9f('0x4c')]?_0x19d7dd[_0xba9f('0x49')]:_0x410463[_0xba9f('0x45')];if(!_0x20ab77['query'][_0xba9f('0x4d')](_0xba9f('0x4e'))){_0x19d7dd['limit']=qs[_0xba9f('0x2f')](_0x20ab77[_0xba9f('0x46')][_0xba9f('0x2f')]);_0x19d7dd[_0xba9f('0x2d')]=qs[_0xba9f('0x2d')](_0x20ab77[_0xba9f('0x46')]['offset']);}_0x19d7dd['order']=qs[_0xba9f('0x4f')](_0x20ab77[_0xba9f('0x46')][_0xba9f('0x4f')]);_0x19d7dd[_0xba9f('0x50')]=qs[_0xba9f('0x48')](_['pick'](_0x20ab77['query'],_0x410463[_0xba9f('0x48')]),_0xd357ba);if(_0x20ab77[_0xba9f('0x46')]['filter']){_0x19d7dd['where']=_[_0xba9f('0x51')](_0x19d7dd[_0xba9f('0x50')],{'$or':_['map'](_0xd357ba,function(_0x1103cb){if(_0x1103cb[_0xba9f('0x52')]!=='VIRTUAL'){var _0x78cacb={};_0x78cacb[_0x1103cb['name']]={'$like':'%'+_0x20ab77[_0xba9f('0x46')][_0xba9f('0x53')]+'%'};return _0x78cacb;}})});}_0x19d7dd=_[_0xba9f('0x51')]({},_0x19d7dd,_0x20ab77[_0xba9f('0x54')]);var _0x35cadc={'where':_0x19d7dd['where']};return db['WhatsappAccount'][_0xba9f('0x30')](_0x35cadc)[_0xba9f('0x1e')](function(_0x4e36e7){_0x263620[_0xba9f('0x30')]=_0x4e36e7;if(_0x20ab77[_0xba9f('0x46')][_0xba9f('0x55')]){_0x19d7dd[_0xba9f('0x56')]=[{'all':!![]}];}return db[_0xba9f('0x41')][_0xba9f('0x57')](_0x19d7dd);})[_0xba9f('0x1e')](function(_0x4d7c7d){_0x263620[_0xba9f('0x58')]=_0x4d7c7d;return _0x263620;})[_0xba9f('0x1e')](respondWithFilteredResult(_0x2a45c9,_0x19d7dd))[_0xba9f('0x59')](handleError(_0x2a45c9,null));};exports[_0xba9f('0x5a')]=function(_0x4953bd,_0x368a22){var _0x3188da={'raw':![],'where':{'id':_0x4953bd[_0xba9f('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0xba9f('0x3f')}]},_0x267aa9={};_0x267aa9['model']=_[_0xba9f('0x47')](db['WhatsappAccount'][_0xba9f('0x42')]);_0x267aa9[_0xba9f('0x46')]=_[_0xba9f('0x47')](_0x4953bd['query']);_0x267aa9[_0xba9f('0x48')]=_[_0xba9f('0x4a')](_0x267aa9[_0xba9f('0x45')],_0x267aa9[_0xba9f('0x46')]);_0x3188da[_0xba9f('0x49')]=_[_0xba9f('0x4a')](_0x267aa9[_0xba9f('0x45')],qs['fields'](_0x4953bd[_0xba9f('0x46')][_0xba9f('0x4b')]));_0x3188da[_0xba9f('0x49')]=_0x3188da['attributes']['length']?_0x3188da[_0xba9f('0x49')]:_0x267aa9['model'];if(_0x4953bd[_0xba9f('0x46')]['includeAll']){_0x3188da[_0xba9f('0x56')]=[{'all':!![]}];}_0x3188da=_[_0xba9f('0x51')]({},_0x3188da,_0x4953bd[_0xba9f('0x54')]);return db['WhatsappAccount'][_0xba9f('0x5c')](_0x3188da)[_0xba9f('0x1e')](handleEntityNotFound(_0x368a22,null))['then'](respondWithResult(_0x368a22,null))[_0xba9f('0x59')](handleError(_0x368a22,null));};exports['create']=function(_0x174501,_0x5975b1){return db[_0xba9f('0x41')][_0xba9f('0x5d')](_0x174501['body'],{})['then'](function(_0xe9e442){var _0x2c02b0=_0x174501[_0xba9f('0x5e')][_0xba9f('0x38')]({'plain':!![]});if(!_0x2c02b0)throw new Error(_0xba9f('0x5f'));if(_0x2c02b0[_0xba9f('0x60')]===_0xba9f('0x5e')){var _0x49b40c=_0xe9e442[_0xba9f('0x38')]({'plain':!![]});var _0x58b456=_0xba9f('0x39');return db[_0xba9f('0x61')][_0xba9f('0x5c')]({'where':{'name':_0x58b456,'userProfileId':_0x2c02b0[_0xba9f('0x62')]},'raw':!![]})[_0xba9f('0x1e')](function(_0x43de30){if(_0x43de30&&_0x43de30[_0xba9f('0x63')]===0x0){return db['UserProfileResource'][_0xba9f('0x5d')]({'name':_0x49b40c[_0xba9f('0x3b')],'resourceId':_0x49b40c['id'],'type':_0x43de30[_0xba9f('0x3b')],'sectionId':_0x43de30['id']},{})['then'](function(){return _0xe9e442;});}else{return _0xe9e442;}})[_0xba9f('0x59')](function(_0x3d7f9b){logger[_0xba9f('0x24')](_0xba9f('0x64'),_0x3d7f9b);throw _0x3d7f9b;});}return _0xe9e442;})[_0xba9f('0x1e')](respondWithResult(_0x5975b1,0xc9))['catch'](handleError(_0x5975b1,null));};exports['update']=function(_0xe39819,_0x48714f){if(_0xe39819[_0xba9f('0x65')]['id']){delete _0xe39819[_0xba9f('0x65')]['id'];}return db['WhatsappAccount'][_0xba9f('0x5c')]({'where':{'id':_0xe39819[_0xba9f('0x5b')]['id']},'include':[{'model':db[_0xba9f('0x3e')],'as':_0xba9f('0x3f')}]})['then'](handleEntityNotFound(_0x48714f,null))[_0xba9f('0x1e')](saveUpdates(_0xe39819['body'],null))[_0xba9f('0x1e')](respondWithResult(_0x48714f,null))[_0xba9f('0x59')](handleError(_0x48714f,null));};exports['destroy']=function(_0x5e78a0,_0x5bc3c1){return db['WhatsappAccount']['find']({'where':{'id':_0x5e78a0[_0xba9f('0x5b')]['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x5bc3c1,null))[_0xba9f('0x1e')](removeEntity(_0x5bc3c1,null))['catch'](handleError(_0x5bc3c1,null));};exports[_0xba9f('0x66')]=function(_0x22771d,_0xfd7ea1){return db[_0xba9f('0x41')][_0xba9f('0x66')]()[_0xba9f('0x1e')](respondWithResult(_0xfd7ea1,null))[_0xba9f('0x59')](handleError(_0xfd7ea1,null));};exports[_0xba9f('0x67')]=function(_0x2b37b0,_0x25b4a8,_0x1314f0){if(_0x2b37b0[_0xba9f('0x65')]['id']){delete _0x2b37b0['body']['id'];}return db[_0xba9f('0x41')][_0xba9f('0x5c')]({'where':{'id':_0x2b37b0[_0xba9f('0x5b')]['id']}})['then'](handleEntityNotFound(_0x25b4a8,null))[_0xba9f('0x1e')](function(_0x35ecff){if(_0x35ecff){_0x2b37b0[_0xba9f('0x65')][_0xba9f('0x68')]=_0x35ecff['id'];return db[_0xba9f('0x69')]['create'](_0x2b37b0['body']);}})[_0xba9f('0x1e')](respondWithResult(_0x25b4a8,null))[_0xba9f('0x59')](handleError(_0x25b4a8,null));};exports[_0xba9f('0x6a')]=function(_0x570fd0,_0x28fbe8,_0x177dcc){var _0x5cd7e7={'raw':![],'where':{}};var _0x453f69={};var _0x21bfb8={'count':0x0,'rows':[]};return db[_0xba9f('0x41')][_0xba9f('0x6b')]({'where':{'id':_0x570fd0[_0xba9f('0x5b')]['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x28fbe8,null))[_0xba9f('0x1e')](function(_0x54932f){if(_0x54932f){_0x453f69[_0xba9f('0x45')]=_[_0xba9f('0x47')](db[_0xba9f('0x69')][_0xba9f('0x42')]);_0x453f69[_0xba9f('0x46')]=_[_0xba9f('0x47')](_0x570fd0[_0xba9f('0x46')]);_0x453f69['filters']=_[_0xba9f('0x4a')](_0x453f69[_0xba9f('0x45')],_0x453f69[_0xba9f('0x46')]);_0x5cd7e7[_0xba9f('0x49')]=_['intersection'](_0x453f69[_0xba9f('0x45')],qs[_0xba9f('0x4b')](_0x570fd0[_0xba9f('0x46')]['fields']));_0x5cd7e7['attributes']=_0x5cd7e7[_0xba9f('0x49')][_0xba9f('0x4c')]?_0x5cd7e7[_0xba9f('0x49')]:_0x453f69[_0xba9f('0x45')];if(!_0x570fd0[_0xba9f('0x46')]['hasOwnProperty'](_0xba9f('0x4e'))){_0x5cd7e7['limit']=qs[_0xba9f('0x2f')](_0x570fd0[_0xba9f('0x46')][_0xba9f('0x2f')]);_0x5cd7e7[_0xba9f('0x2d')]=qs[_0xba9f('0x2d')](_0x570fd0[_0xba9f('0x46')][_0xba9f('0x2d')]);}_0x5cd7e7['order']=qs[_0xba9f('0x4f')](_0x570fd0[_0xba9f('0x46')][_0xba9f('0x4f')]);_0x5cd7e7[_0xba9f('0x50')]=qs[_0xba9f('0x48')](_[_0xba9f('0x6c')](_0x570fd0[_0xba9f('0x46')],_0x453f69['filters']));_0x5cd7e7[_0xba9f('0x50')]['WhatsappAccountId']=_0x54932f['id'];if(_0x570fd0[_0xba9f('0x46')][_0xba9f('0x53')]){_0x5cd7e7[_0xba9f('0x50')]=_[_0xba9f('0x51')](_0x5cd7e7[_0xba9f('0x50')],{'$or':_[_0xba9f('0x40')](_0x5cd7e7['attributes'],function(_0x4da97e){var _0x108fcb={};_0x108fcb[_0x4da97e]={'$like':'%'+_0x570fd0['query'][_0xba9f('0x53')]+'%'};return _0x108fcb;})});}_0x5cd7e7=_[_0xba9f('0x51')]({},_0x5cd7e7,_0x570fd0[_0xba9f('0x54')]);return db[_0xba9f('0x69')][_0xba9f('0x30')]({'where':_0x5cd7e7[_0xba9f('0x50')]})[_0xba9f('0x1e')](function(_0x2138f9){_0x21bfb8[_0xba9f('0x30')]=_0x2138f9;if(_0x570fd0[_0xba9f('0x46')][_0xba9f('0x55')]){_0x5cd7e7[_0xba9f('0x56')]=[{'all':!![]}];}return db[_0xba9f('0x69')][_0xba9f('0x57')](_0x5cd7e7);})['then'](function(_0x1754d3){_0x21bfb8[_0xba9f('0x58')]=_0x1754d3;return _0x21bfb8;});}})[_0xba9f('0x1e')](respondWithFilteredResult(_0x28fbe8,_0x5cd7e7))[_0xba9f('0x59')](handleError(_0x28fbe8,null));};exports[_0xba9f('0x6d')]=function(_0x30b109,_0x411a91,_0x3e1868){return db[_0xba9f('0x41')]['find']({'where':{'id':_0x30b109[_0xba9f('0x5b')]['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x411a91,null))['then'](function(_0x5380f2){if(_0x5380f2){return _0x5380f2[_0xba9f('0x6d')](_0x30b109[_0xba9f('0x46')][_0xba9f('0x6e')]);}})[_0xba9f('0x1e')](respondWithStatusCode(_0x411a91,null))[_0xba9f('0x59')](handleError(_0x411a91,null));};exports[_0xba9f('0x6f')]=function(_0x449a13,_0x33aaa6,_0x41a38a){if(_0x449a13['body']['id']){delete _0x449a13['body']['id'];}return db[_0xba9f('0x41')][_0xba9f('0x5c')]({'where':{'id':_0x449a13[_0xba9f('0x5b')]['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x33aaa6,null))[_0xba9f('0x1e')](function(_0x2cc575){if(_0x2cc575){_0x449a13[_0xba9f('0x65')][_0xba9f('0x68')]=_0x2cc575['id'];return db['CannedAnswer'][_0xba9f('0x5d')](_0x449a13[_0xba9f('0x65')]);}})[_0xba9f('0x1e')](respondWithResult(_0x33aaa6,null))[_0xba9f('0x59')](handleError(_0x33aaa6,null));};exports[_0xba9f('0x70')]=function(_0x54b773,_0x51d6b8,_0x4517a0){var _0xbd91ff={'raw':![],'where':{}};var _0xa78df6={};var _0x5dccab={'count':0x0,'rows':[]};return db[_0xba9f('0x41')]['findOne']({'where':{'id':_0x54b773[_0xba9f('0x5b')]['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x51d6b8,null))[_0xba9f('0x1e')](function(_0x2993d0){if(_0x2993d0){_0xa78df6[_0xba9f('0x45')]=_[_0xba9f('0x47')](db['CannedAnswer'][_0xba9f('0x42')]);_0xa78df6['query']=_[_0xba9f('0x47')](_0x54b773[_0xba9f('0x46')]);_0xa78df6[_0xba9f('0x48')]=_[_0xba9f('0x4a')](_0xa78df6[_0xba9f('0x45')],_0xa78df6[_0xba9f('0x46')]);_0xbd91ff['attributes']=_[_0xba9f('0x4a')](_0xa78df6[_0xba9f('0x45')],qs[_0xba9f('0x4b')](_0x54b773[_0xba9f('0x46')][_0xba9f('0x4b')]));_0xbd91ff[_0xba9f('0x49')]=_0xbd91ff[_0xba9f('0x49')][_0xba9f('0x4c')]?_0xbd91ff[_0xba9f('0x49')]:_0xa78df6[_0xba9f('0x45')];if(!_0x54b773[_0xba9f('0x46')][_0xba9f('0x4d')](_0xba9f('0x4e'))){_0xbd91ff['limit']=qs[_0xba9f('0x2f')](_0x54b773[_0xba9f('0x46')][_0xba9f('0x2f')]);_0xbd91ff['offset']=qs[_0xba9f('0x2d')](_0x54b773[_0xba9f('0x46')][_0xba9f('0x2d')]);}_0xbd91ff[_0xba9f('0x71')]=qs[_0xba9f('0x4f')](_0x54b773[_0xba9f('0x46')]['sort']);_0xbd91ff['where']=qs[_0xba9f('0x48')](_[_0xba9f('0x6c')](_0x54b773['query'],_0xa78df6['filters']));_0xbd91ff[_0xba9f('0x50')][_0xba9f('0x68')]=_0x2993d0['id'];if(_0x54b773[_0xba9f('0x46')][_0xba9f('0x53')]){_0xbd91ff[_0xba9f('0x50')]=_[_0xba9f('0x51')](_0xbd91ff[_0xba9f('0x50')],{'$or':_[_0xba9f('0x40')](_0xbd91ff[_0xba9f('0x49')],function(_0x1efd9f){var _0x20d327={};_0x20d327[_0x1efd9f]={'$like':'%'+_0x54b773['query'][_0xba9f('0x53')]+'%'};return _0x20d327;})});}_0xbd91ff=_[_0xba9f('0x51')]({},_0xbd91ff,_0x54b773[_0xba9f('0x54')]);return db[_0xba9f('0x72')][_0xba9f('0x30')]({'where':_0xbd91ff[_0xba9f('0x50')]})[_0xba9f('0x1e')](function(_0x4050e6){_0x5dccab['count']=_0x4050e6;if(_0x54b773[_0xba9f('0x46')][_0xba9f('0x55')]){_0xbd91ff[_0xba9f('0x56')]=[{'all':!![]}];}return db[_0xba9f('0x72')][_0xba9f('0x57')](_0xbd91ff);})[_0xba9f('0x1e')](function(_0x556fd0){_0x5dccab[_0xba9f('0x58')]=_0x556fd0;return _0x5dccab;});}})[_0xba9f('0x1e')](respondWithFilteredResult(_0x51d6b8,_0xbd91ff))[_0xba9f('0x59')](handleError(_0x51d6b8,null));};exports[_0xba9f('0x73')]=function(_0x47e97d,_0x26cc47,_0x52d353){return db['WhatsappAccount'][_0xba9f('0x5c')]({'where':{'id':_0x47e97d[_0xba9f('0x5b')]['id']}})['then'](handleEntityNotFound(_0x26cc47,null))[_0xba9f('0x1e')](function(_0x4d4b92){if(_0x4d4b92){return _0x4d4b92[_0xba9f('0x73')](_0x47e97d[_0xba9f('0x46')][_0xba9f('0x6e')]);}})[_0xba9f('0x1e')](respondWithStatusCode(_0x26cc47,null))['catch'](handleError(_0x26cc47,null));};exports[_0xba9f('0x74')]=function(_0x28b6a0,_0x38c2aa,_0x2d1083){return db[_0xba9f('0x41')]['find']({'where':{'id':_0x28b6a0[_0xba9f('0x5b')]['id']}})['then'](handleEntityNotFound(_0x38c2aa,null))[_0xba9f('0x1e')](function(_0x9b086d){if(_0x9b086d){return _0x9b086d['addAgents'](_0x28b6a0['body']['ids'],_[_0xba9f('0x75')](_0x28b6a0['body'],[_0xba9f('0x6e'),'id'])||{})[_0xba9f('0x76')](function(_0x57c836){for(var _0x3e1481=0x0;_0x3e1481<_0x28b6a0[_0xba9f('0x65')][_0xba9f('0x6e')][_0xba9f('0x4c')];_0x3e1481+=0x1){socket['emit'](_0xba9f('0x77'),{'UserId':Number(_0x28b6a0[_0xba9f('0x65')][_0xba9f('0x6e')][_0x3e1481]),'WhatsappAccountId':Number(_0x28b6a0[_0xba9f('0x5b')]['id'])});}return _0x57c836;});}})[_0xba9f('0x1e')](respondWithResult(_0x38c2aa,null))[_0xba9f('0x59')](handleError(_0x38c2aa,null));};exports[_0xba9f('0x78')]=function(_0x594479,_0x465019,_0x127b24){return db[_0xba9f('0x41')][_0xba9f('0x5c')]({'where':{'id':_0x594479[_0xba9f('0x5b')]['id']}})['then'](handleEntityNotFound(_0x465019,null))['then'](function(_0x190c04){if(_0x190c04){return _0x190c04['removeAgents'](_0x594479[_0xba9f('0x46')][_0xba9f('0x6e')])[_0xba9f('0x1e')](function(){if(_[_0xba9f('0x79')](_0x594479['query'][_0xba9f('0x6e')])){for(var _0x24669e=0x0;_0x24669e<_0x594479[_0xba9f('0x46')][_0xba9f('0x6e')][_0xba9f('0x4c')];_0x24669e+=0x1){socket[_0xba9f('0x7a')](_0xba9f('0x7b'),{'UserId':Number(_0x594479[_0xba9f('0x46')]['ids'][_0x24669e]),'WhatsappAccountId':Number(_0x594479[_0xba9f('0x5b')]['id'])});}}else{socket[_0xba9f('0x7a')](_0xba9f('0x7b'),{'UserId':Number(_0x594479[_0xba9f('0x46')]['ids']),'WhatsappAccountId':Number(_0x594479[_0xba9f('0x5b')]['id'])});}});}})['then'](respondWithStatusCode(_0x465019,null))[_0xba9f('0x59')](handleError(_0x465019,null));};exports[_0xba9f('0x7c')]=function(_0xb62b2,_0x4dff4f,_0x933b9f){var _0x237c3a={};var _0x1752d3={};var _0x5df153;var _0x1f10a6;return db['WhatsappAccount'][_0xba9f('0x6b')]({'where':{'id':_0xb62b2[_0xba9f('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4dff4f,null))[_0xba9f('0x1e')](function(_0x3f5af1){if(_0x3f5af1){_0x5df153=_0x3f5af1;_0x1752d3[_0xba9f('0x45')]=_[_0xba9f('0x47')](db[_0xba9f('0x7d')][_0xba9f('0x42')]);_0x1752d3[_0xba9f('0x46')]=_[_0xba9f('0x47')](_0xb62b2['query']);_0x1752d3[_0xba9f('0x48')]=_[_0xba9f('0x4a')](_0x1752d3[_0xba9f('0x45')],_0x1752d3[_0xba9f('0x46')]);_0x237c3a[_0xba9f('0x49')]=_[_0xba9f('0x4a')](_0x1752d3[_0xba9f('0x45')],qs['fields'](_0xb62b2[_0xba9f('0x46')][_0xba9f('0x4b')]));_0x237c3a[_0xba9f('0x49')]=_0x237c3a[_0xba9f('0x49')]['length']?_0x237c3a['attributes']:_0x1752d3[_0xba9f('0x45')];_0x237c3a[_0xba9f('0x71')]=qs['sort'](_0xb62b2[_0xba9f('0x46')][_0xba9f('0x4f')]);_0x237c3a[_0xba9f('0x50')]=qs['filters'](_[_0xba9f('0x6c')](_0xb62b2[_0xba9f('0x46')],_0x1752d3['filters']));if(_0xb62b2[_0xba9f('0x46')][_0xba9f('0x53')]){_0x237c3a[_0xba9f('0x50')]=_['merge'](_0x237c3a[_0xba9f('0x50')],{'$or':_[_0xba9f('0x40')](_0x237c3a[_0xba9f('0x49')],function(_0x118794){var _0x1e714b={};_0x1e714b[_0x118794]={'$like':'%'+_0xb62b2[_0xba9f('0x46')][_0xba9f('0x53')]+'%'};return _0x1e714b;})});}_0x237c3a=_[_0xba9f('0x51')]({},_0x237c3a,_0xb62b2[_0xba9f('0x54')]);return _0x5df153['getAgents'](_0x237c3a);}})[_0xba9f('0x1e')](function(_0x4dea9a){if(_0x4dea9a){_0x1f10a6=_0x4dea9a[_0xba9f('0x4c')];if(!_0xb62b2['query'][_0xba9f('0x4d')](_0xba9f('0x4e'))){_0x237c3a[_0xba9f('0x2f')]=qs[_0xba9f('0x2f')](_0xb62b2[_0xba9f('0x46')]['limit']);_0x237c3a['offset']=qs[_0xba9f('0x2d')](_0xb62b2[_0xba9f('0x46')][_0xba9f('0x2d')]);}return _0x5df153[_0xba9f('0x7c')](_0x237c3a);}})[_0xba9f('0x1e')](function(_0x2f2a31){if(_0x2f2a31){return _0x2f2a31?{'count':_0x1f10a6,'rows':_0x2f2a31}:null;}})[_0xba9f('0x1e')](respondWithResult(_0x4dff4f,null))[_0xba9f('0x59')](handleError(_0x4dff4f,null));};exports['addApplications']=function(_0x36e862,_0xe69ff){var _0x3521e9=_0x36e862[_0xba9f('0x5b')]['id'];var _0x21ca90=_0x36e862[_0xba9f('0x65')];var _0x1e16bb=0xc8;var _0x57649a=null;return db['sequelize'][_0xba9f('0x7e')]({'isolationLevel':db['sequelize']['Transaction'][_0xba9f('0x7f')][_0xba9f('0x80')]},function(_0x5a3f69){return db['WhatsappAccount'][_0xba9f('0x6b')]({'where':{'id':_0x3521e9},'transaction':_0x5a3f69})[_0xba9f('0x1e')](function(_0x57c288){if(_0x57c288){return db['WhatsappApplication'][_0xba9f('0x37')]({'where':{'WhatsappAccountId':_0x3521e9},'transaction':_0x5a3f69})[_0xba9f('0x1e')](function(){var _0xb53e57=_['map'](_0x21ca90,function(_0x342773){_0x342773[_0xba9f('0x68')]=_0x3521e9;return _0x342773;});return db[_0xba9f('0x81')][_0xba9f('0x82')](_0xb53e57,{'transaction':_0x5a3f69});});}else{_0x1e16bb=0x194;_0x57649a=[];}});})[_0xba9f('0x1e')](function(){if(_0x1e16bb!==0x194){return db[_0xba9f('0x81')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x3521e9},'order':_0xba9f('0x83')})['then'](function(_0x301df7){_0x57649a=_0x301df7;});}})[_0xba9f('0x59')](function(_0x3912a5){_0x1e16bb=0x1f4;logger[_0xba9f('0x24')](_0x3912a5[_0xba9f('0x3a')]);if(_0x3912a5['name']){delete _0x3912a5[_0xba9f('0x3b')];}_0x57649a=_0x3912a5;})['finally'](function(){if(_0x57649a===null){_0xe69ff[_0xba9f('0x29')](_0x1e16bb);}else{if(_0x1e16bb===0x1f4){_0xe69ff[_0xba9f('0x2a')](_0x1e16bb)[_0xba9f('0x3c')](_0x57649a);}else{_0xe69ff[_0xba9f('0x2a')](_0x1e16bb)['json'](_0x57649a);}}});};exports[_0xba9f('0x84')]=function(_0x55964c,_0x141091,_0x11debe){var _0x363c8c={};var _0x5c9427={};var _0x30122c;var _0x18628e;return db[_0xba9f('0x41')][_0xba9f('0x6b')]({'where':{'id':_0x55964c['params']['id']}})[_0xba9f('0x1e')](handleEntityNotFound(_0x141091,null))[_0xba9f('0x1e')](function(_0x2f2ab3){if(_0x2f2ab3){_0x30122c=_0x2f2ab3;_0x5c9427[_0xba9f('0x45')]=_['keys'](db[_0xba9f('0x81')][_0xba9f('0x42')]);_0x5c9427['query']=_['keys'](_0x55964c[_0xba9f('0x46')]);_0x5c9427[_0xba9f('0x48')]=_[_0xba9f('0x4a')](_0x5c9427[_0xba9f('0x45')],_0x5c9427['query']);_0x363c8c['attributes']=_[_0xba9f('0x4a')](_0x5c9427[_0xba9f('0x45')],qs['fields'](_0x55964c[_0xba9f('0x46')][_0xba9f('0x4b')]));_0x363c8c[_0xba9f('0x49')]=_0x363c8c[_0xba9f('0x49')][_0xba9f('0x4c')]?_0x363c8c[_0xba9f('0x49')]:_0x5c9427[_0xba9f('0x45')];_0x363c8c['order']=qs[_0xba9f('0x4f')](_0x55964c[_0xba9f('0x46')][_0xba9f('0x4f')]);_0x363c8c[_0xba9f('0x50')]=qs['filters'](_[_0xba9f('0x6c')](_0x55964c[_0xba9f('0x46')],_0x5c9427['filters']));if(_0x55964c['query']['filter']){_0x363c8c[_0xba9f('0x50')]=_[_0xba9f('0x51')](_0x363c8c[_0xba9f('0x50')],{'$or':_[_0xba9f('0x40')](_0x363c8c['attributes'],function(_0x1ccf78){var _0x4a4db8={};_0x4a4db8[_0x1ccf78]={'$like':'%'+_0x55964c[_0xba9f('0x46')][_0xba9f('0x53')]+'%'};return _0x4a4db8;})});}_0x363c8c=_[_0xba9f('0x51')]({},_0x363c8c,_0x55964c[_0xba9f('0x54')]);return _0x30122c[_0xba9f('0x84')](_0x363c8c);}})[_0xba9f('0x1e')](function(_0x51b05d){if(_0x51b05d){_0x18628e=_0x51b05d[_0xba9f('0x4c')];if(!_0x55964c[_0xba9f('0x46')][_0xba9f('0x4d')]('nolimit')){_0x363c8c['limit']=qs[_0xba9f('0x2f')](_0x55964c['query'][_0xba9f('0x2f')]);_0x363c8c[_0xba9f('0x2d')]=qs[_0xba9f('0x2d')](_0x55964c[_0xba9f('0x46')][_0xba9f('0x2d')]);}return _0x30122c[_0xba9f('0x84')](_0x363c8c);}})[_0xba9f('0x1e')](function(_0x2ef2d9){if(_0x2ef2d9){return _0x2ef2d9?{'count':_0x18628e,'rows':_0x2ef2d9}:null;}})[_0xba9f('0x1e')](respondWithResult(_0x141091,null))[_0xba9f('0x59')](handleError(_0x141091,null));};exports[_0xba9f('0x85')]=function(_0x5559ba,_0x51c6c9,_0x56217d){var _0x5723fd={'channel':_0xba9f('0x86')};var _0x527590=[];var _0x1e0dce=[];var _0x48c107={};return db[_0xba9f('0x41')]['find']({'where':{'id':_0x5559ba[_0xba9f('0x5b')]['id']},'include':[{'model':db['WhatsappApplication'],'as':'Applications'}]})['then'](handleEntityNotFound(_0x51c6c9,null))['then'](function(_0x19e25){_0x5723fd[_0xba9f('0x87')]=_0x19e25;if(_0x5723fd['account']&&_0x5723fd[_0xba9f('0x87')]['type']==='sinch'&&_0x5559ba['body'][_0xba9f('0x88')]){if(_0x5559ba[_0xba9f('0x65')][_0xba9f('0x88')][_0xba9f('0x4c')]===0x0)return;if(_0x5559ba[_0xba9f('0x65')][_0xba9f('0x88')][0x0]['state']!==_0xba9f('0x89'))return;return db[_0xba9f('0x8a')][_0xba9f('0x36')]({'read':!![],'readAt':_0x5559ba[_0xba9f('0x65')]['statuses'][0x0][_0xba9f('0x8b')]},{'where':{'messageId':_0x5559ba['body'][_0xba9f('0x88')][0x0][_0xba9f('0x8c')]},'individualHooks':!![]})[_0xba9f('0x1e')](function(_0x4e42f5){return _0x51c6c9['status'](0xc8)[_0xba9f('0x2c')](_0x4e42f5);});}_0x5723fd[_0xba9f('0x8d')]=_[_0xba9f('0x8e')](_0x19e25[_0xba9f('0x8f')],[_0xba9f('0x83')],[_0xba9f('0x90')]);if(_0x5723fd[_0xba9f('0x87')][_0xba9f('0x8f')]){delete _0x5723fd[_0xba9f('0x87')][_0xba9f('0x8f')];}return db[_0xba9f('0x91')][_0xba9f('0x66')]()['then'](function(_0x3171aa){if(!_0x3171aa){throw new db['Sequelize']['ValidationError'](_0xba9f('0x92'));}_0x527590=_[_0xba9f('0x93')](_['keys'](_0x3171aa),['createdAt',_0xba9f('0x94')]);_0x1e0dce=_[_0xba9f('0x93')](_[_0xba9f('0x47')](_0x3171aa),['createdAt',_0xba9f('0x94'),_0xba9f('0x95'),_0xba9f('0x96')]);_0x5723fd['body']={'mapKey':'mobile'};if(_0x5723fd[_0xba9f('0x87')]&&_0x5723fd[_0xba9f('0x87')][_0xba9f('0x52')]===_0xba9f('0x97')){_0x5723fd[_0xba9f('0x65')][_0xba9f('0x98')]=_0x5559ba[_0xba9f('0x65')][_0xba9f('0x99')][_0xba9f('0x9a')](_0xba9f('0x9b'),'');_0x5723fd[_0xba9f('0x65')][_0xba9f('0x65')]=_0x5559ba[_0xba9f('0x65')][_0xba9f('0x9c')];_0x5723fd['body'][_0xba9f('0x9d')]=_0x5559ba['body'][_0xba9f('0x9e')];}if(_0x5723fd[_0xba9f('0x87')]&&_0x5723fd[_0xba9f('0x87')][_0xba9f('0x52')]===_0xba9f('0x9f')){_0x5723fd['body']['from']=_0x5559ba[_0xba9f('0x65')]['notifications'][0x0][_0xba9f('0x98')];_0x5723fd[_0xba9f('0x65')][_0xba9f('0x65')]=_0x5559ba[_0xba9f('0x65')][_0xba9f('0xa0')][0x0]['message'][_0xba9f('0x65')];_0x5723fd[_0xba9f('0x65')][_0xba9f('0x9d')]=_0x5559ba['body'][_0xba9f('0xa0')][0x0][_0xba9f('0x8c')];}if(_0x5723fd[_0xba9f('0x65')]['id']){delete _0x5723fd[_0xba9f('0x65')]['id'];}if(_[_0xba9f('0xa1')](_0x5723fd[_0xba9f('0x65')][_0xba9f('0x98')])){throw new db[(_0xba9f('0xa2'))][(_0xba9f('0xa3'))](_0xba9f('0xa4'));}if(_['isNil'](_0x5723fd['body']['body'])||_0x5723fd[_0xba9f('0x65')][_0xba9f('0x65')]===''){throw new db[(_0xba9f('0xa2'))][(_0xba9f('0xa3'))](_0xba9f('0xa5'));}if(_[_0xba9f('0xa1')](_0x5723fd['body'][_0xba9f('0xa6')])){throw new db[(_0xba9f('0xa2'))]['ValidationError'](_0xba9f('0xa7')+_0x1e0dce);}if(!_[_0xba9f('0xa8')](_0x1e0dce,_0x5723fd[_0xba9f('0x65')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0xba9f('0xa9')+_0x1e0dce);}_0x48c107[_0x5723fd[_0xba9f('0x65')][_0xba9f('0xa6')]]=_0x5723fd[_0xba9f('0x65')]['from'];return db[_0xba9f('0xaa')]['find']({'where':{'id':_0x5723fd[_0xba9f('0x87')][_0xba9f('0x96')]},'include':[{'model':db[_0xba9f('0x91')],'as':'Contacts','where':_0x48c107,'limit':0x1,'order':[[_0xba9f('0x94'),'DESC']]}]});})['then'](handleEntityNotFound(_0x51c6c9,null))['then'](function(_0x16e3ae){if(_0x16e3ae){_0x5723fd[_0xba9f('0xab')]=_[_0xba9f('0x75')](_0x16e3ae,['Contacts']);if(_0x16e3ae[_0xba9f('0xac')]['length']){return _0x16e3ae[_0xba9f('0xac')][0x0];}var _0x53468f=_[_0xba9f('0x18')](_0x5723fd[_0xba9f('0x65')],{'firstName':_0x5723fd[_0xba9f('0x65')][_0xba9f('0x98')],'ListId':_0x16e3ae['id']});_0x53468f[_0x5723fd['body'][_0xba9f('0xa6')]]=_0x5723fd['body']['from'];return db['CmContact'][_0xba9f('0x5d')](_0x53468f,{'fields':_0x527590,'raw':!![]});}})[_0xba9f('0x1e')](handleEntityNotFound(_0x51c6c9,null))[_0xba9f('0x1e')](function(_0x396c7d){if(_0x396c7d){_0x5723fd[_0xba9f('0xad')]=_0x396c7d;var _0x181485={'ContactId':_0x396c7d['id'],'phone':_0x5723fd[_0xba9f('0x65')]['from'],'WhatsappAccountId':_0x5559ba['params']['id']};var _0x4a99bd={'ContactId':_0x396c7d['id'],'WhatsappAccountId':_0x5559ba[_0xba9f('0x5b')]['id'],'closed':![]};return db['WhatsappInteraction'][_0xba9f('0x5c')]({'where':_0x4a99bd})[_0xba9f('0x1e')](function(_0x42ceb7){if(_0x42ceb7){return[_0x42ceb7,![]];}return db['WhatsappInteraction'][_0xba9f('0x5d')](_0x181485)[_0xba9f('0x1e')](function(_0x120619){return[_0x120619,!![]];});});}})[_0xba9f('0x76')](function(_0x8b99ef,_0x10222d){_0x5723fd['interaction']=_0x8b99ef[_0xba9f('0x38')]({'plain':!![]});_0x5723fd[_0xba9f('0xae')][_0xba9f('0xaf')]=![];if(_0x10222d){if(_0x5723fd[_0xba9f('0x87')][_0xba9f('0xb0')]){_0x5723fd[_0xba9f('0x8d')][_0xba9f('0xb1')]({'id':0x0,'priority':_0x5723fd[_0xba9f('0x8d')][_0xba9f('0x4c')]+0x1,'app':_0xba9f('0xb2'),'appdata':_0xba9f('0xb3'),'interval':_0xba9f('0xb4')});}_0x5723fd['interaction'][_0xba9f('0xaf')]=!![];}return db[_0xba9f('0x8a')]['create']({'phone':_0x5723fd[_0xba9f('0x65')][_0xba9f('0x98')],'messageId':_0x5723fd[_0xba9f('0x65')][_0xba9f('0x9d')],'body':_0x5723fd[_0xba9f('0x65')][_0xba9f('0x65')],'WhatsappAccountId':_0x5559ba[_0xba9f('0x5b')]['id'],'WhatsappInteractionId':_0x8b99ef['id'],'direction':'in','ContactId':_0x8b99ef[_0xba9f('0xb5')],'AttachmentId':_0x5723fd[_0xba9f('0x65')][_0xba9f('0xb6')]});})[_0xba9f('0x1e')](function(_0x2d8b60){_0x5723fd['message']=_0x2d8b60;if(_0x5723fd[_0xba9f('0xae')][_0xba9f('0xb7')]){return db[_0xba9f('0x7d')]['find']({'attributes':['id',_0xba9f('0x3b')],'where':{'id':_0x5723fd[_0xba9f('0xae')][_0xba9f('0xb7')]}})[_0xba9f('0x1e')](function(_0x77063a){if(_0x77063a){_0x5723fd[_0xba9f('0x8d')][_0xba9f('0xb8')]({'id':0x0,'priority':0x0,'app':_0xba9f('0xb9'),'appdata':_0x77063a['name']+','+(_0x5723fd[_0xba9f('0x87')][_0xba9f('0xba')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xba9f('0xbb'),_0xba9f('0xbc'),_0x5723fd);});}return respondWithRpcPromise('Start',_0xba9f('0xbc'),_0x5723fd);})[_0xba9f('0x1e')](function(_0x44be25){if(_0x44be25){var _0x4657bd=0xc8;var _0x52234e=_0xba9f('0xbd');logger[_0xba9f('0x27')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x52234e,_0x4657bd,_0xba9f('0xbe'));logger[_0xba9f('0x21')](_0xba9f('0xbf'),_0x52234e,_0x4657bd,_0xba9f('0xbe'),JSON[_0xba9f('0x23')](_0x44be25));if(_0x5723fd[_0xba9f('0x87')][_0xba9f('0x52')]===_0xba9f('0x97')){return _0x51c6c9[_0xba9f('0x2a')](_0x4657bd)['set'](_0xba9f('0xc0'),_0xba9f('0xc1'))[_0xba9f('0x3c')](_0xba9f('0xc2'));}else{return _0x51c6c9[_0xba9f('0x2a')](_0x4657bd)[_0xba9f('0x2c')](_0x44be25);}}});})[_0xba9f('0x59')](handleError(_0x51c6c9,null));};exports[_0xba9f('0x3c')]=function(_0x50d0af,_0x5457dd,_0x5f3915){var _0x1c47a6,_0x4e2924,_0x4b53b2;if(_[_0xba9f('0xa1')](_0x50d0af['body'][_0xba9f('0x65')])||_0x50d0af['body'][_0xba9f('0x65')]===''){throw new db['Sequelize'][(_0xba9f('0xa3'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xba9f('0xa1')](_0x50d0af[_0xba9f('0x65')]['to'])){throw new db[(_0xba9f('0xa2'))][(_0xba9f('0xa3'))](_0xba9f('0xc3'));}_0x1c47a6=_0x50d0af[_0xba9f('0x65')]['to'];return db[_0xba9f('0x41')][_0xba9f('0x5c')]({'where':{'id':_0x50d0af[_0xba9f('0x5b')]['id']},'include':[{'model':db[_0xba9f('0xaa')],'as':_0xba9f('0xc4'),'include':[{'model':db['CmContact'],'as':_0xba9f('0xac'),'where':{'mobile':_0x1c47a6},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0xba9f('0x1e')](handleEntityNotFound(_0x5457dd,null))[_0xba9f('0x1e')](function(_0x1b13d2){if(_0x1b13d2&&_0x1b13d2[_0xba9f('0xc4')]){_0x4e2924=_0x1b13d2['get']({'plain':!![]});if(_0x4e2924['List']&&_0x4e2924['List']['Contacts'][_0xba9f('0x4c')]){return _0x4e2924[_0xba9f('0xc4')][_0xba9f('0xac')][0x0];}return db['CmContact']['create'](_[_0xba9f('0x18')](_0x50d0af[_0xba9f('0x65')],{'firstName':_0x1c47a6,'mobile':_0x1c47a6,'phone':_0x1c47a6,'ListId':_0x4e2924[_0xba9f('0x96')]}));}})['then'](handleEntityNotFound(_0x5457dd,null))[_0xba9f('0x1e')](function(_0x58e820){if(_0x58e820){_0x4b53b2=_0x58e820;return db['WhatsappInteraction'][_0xba9f('0x5c')]({'where':{'ContactId':_0x4b53b2['id'],'closed':![],'WhatsappAccountId':_0x4e2924['id']}})[_0xba9f('0x1e')](function(_0x34ce39){if(_0x34ce39){return[_0x34ce39,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x50d0af[_0xba9f('0x5e')]['id'],'ContactId':_0x4b53b2['id'],'WhatsappAccountId':_0x4e2924['id'],'phone':_0x1c47a6,'firstMsgDirection':_0xba9f('0xc5'),'Messages':[_[_0xba9f('0x51')](_0x50d0af[_0xba9f('0x65')],{'read':![],'body':_0x50d0af[_0xba9f('0x65')][_0xba9f('0x65')],'phone':_0x1c47a6,'WhatsappAccountId':_0x4e2924['id'],'UserId':_0x50d0af[_0xba9f('0x5e')]['id'],'ContactId':_0x4b53b2['id']})]},{'include':[{'model':db[_0xba9f('0x8a')],'as':_0xba9f('0xc6')}]})[_0xba9f('0x1e')](function(_0x183629){return[_0x183629,!![]];});});}})['spread'](function(_0x417943,_0x2993da){if(_0x2993da){return _0x417943;}return db[_0xba9f('0x8a')][_0xba9f('0x5d')](_['merge'](_0x50d0af[_0xba9f('0x65')],{'read':![],'body':_0x50d0af[_0xba9f('0x65')][_0xba9f('0x65')],'phone':_0x1c47a6,'WhatsappAccountId':_0x4e2924['id'],'WhatsappInteractionId':_0x417943['id'],'UserId':_0x50d0af['user']['id'],'ContactId':_0x4b53b2['id']}))[_0xba9f('0x1e')](function(_0x39764d){_0x417943[_0xba9f('0xc7')][_0xba9f('0xc6')]=[];_0x417943['dataValues']['Messages'][_0xba9f('0xb1')](_0x39764d[_0xba9f('0xc7')]);return _0x417943;});})[_0xba9f('0x1e')](respondWithResult(_0x5457dd,null))[_0xba9f('0x59')](handleError(_0x5457dd,null));};
\ No newline at end of file
index b4c87b6..cfb6c8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56aa=['WhatsappAccount','setMaxListeners','update','remove','hasOwnProperty','events'];(function(_0x412342,_0x180734){var _0x3e62cb=function(_0x501fc6){while(--_0x501fc6){_0x412342['push'](_0x412342['shift']());}};_0x3e62cb(++_0x180734);}(_0x56aa,0xb9));var _0xa56a=function(_0x2cb1bd,_0x42b64c){_0x2cb1bd=_0x2cb1bd-0x0;var _0x393fdf=_0x56aa[_0x2cb1bd];return _0x393fdf;};'use strict';var EventEmitter=require(_0xa56a('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0xa56a('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xa56a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa56a('0x3'),'afterDestroy':_0xa56a('0x4')};function emitEvent(_0x33c66c){return function(_0x5de141,_0x431e40,_0x21dfc0){WhatsappAccountEvents['emit'](_0x33c66c+':'+_0x5de141['id'],_0x5de141);WhatsappAccountEvents['emit'](_0x33c66c,_0x5de141);_0x21dfc0(null);};}for(var e in events){if(events[_0xa56a('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x1fb7=['emit','hasOwnProperty','hook','exports','events','WhatsappAccount','save','update','remove'];(function(_0x44d2a8,_0x337c45){var _0x53b4bf=function(_0x2b872b){while(--_0x2b872b){_0x44d2a8['push'](_0x44d2a8['shift']());}};_0x53b4bf(++_0x337c45);}(_0x1fb7,0xaf));var _0x71fb=function(_0x5423f0,_0x3f4e38){_0x5423f0=_0x5423f0-0x0;var _0x6a312e=_0x1fb7[_0x5423f0];return _0x6a312e;};'use strict';var EventEmitter=require(_0x71fb('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0x71fb('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x71fb('0x2'),'afterUpdate':_0x71fb('0x3'),'afterDestroy':_0x71fb('0x4')};function emitEvent(_0x117318){return function(_0x3790c0,_0x5622f3,_0x5efa30){WhatsappAccountEvents[_0x71fb('0x5')](_0x117318+':'+_0x3790c0['id'],_0x3790c0);WhatsappAccountEvents[_0x71fb('0x5')](_0x117318,_0x3790c0);_0x5efa30(null);};}for(var e in events){if(events[_0x71fb('0x6')](e)){var event=events[e];WhatsappAccount[_0x71fb('0x7')](e,emitEvent(event));}}module[_0x71fb('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
index 641d0e9..de3804c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8f=['util','moment','bluebird','rimraf','./whatsappAccount.attributes','exports','define','whatsapp_accounts'];(function(_0x3509b9,_0x38bb75){var _0x11704f=function(_0x37a435){while(--_0x37a435){_0x3509b9['push'](_0x3509b9['shift']());}};_0x11704f(++_0x38bb75);}(_0x2e8f,0x1d0));var _0xf2e8=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x2e8f[_0x32f7d7];return _0x133d09;};'use strict';var _=require('lodash');var util=require(_0xf2e8('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf2e8('0x1'));var BPromise=require(_0xf2e8('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf2e8('0x3'));var config=require('../../config/environment');var attributes=require(_0xf2e8('0x4'));module[_0xf2e8('0x5')]=function(_0x5f232e,_0x19fd25){return _0x5f232e[_0xf2e8('0x6')]('WhatsappAccount',attributes,{'tableName':_0xf2e8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb57=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','lodash','util'];(function(_0x403d6c,_0x4ab1ee){var _0x34983b=function(_0x431791){while(--_0x431791){_0x403d6c['push'](_0x403d6c['shift']());}};_0x34983b(++_0x4ab1ee);}(_0xcb57,0x184));var _0x7cb5=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xcb57[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x7cb5('0x0'));var util=require(_0x7cb5('0x1'));var logger=require(_0x7cb5('0x2'))(_0x7cb5('0x3'));var moment=require(_0x7cb5('0x4'));var BPromise=require('bluebird');var rp=require(_0x7cb5('0x5'));var fs=require('fs');var path=require(_0x7cb5('0x6'));var rimraf=require(_0x7cb5('0x7'));var config=require(_0x7cb5('0x8'));var attributes=require(_0x7cb5('0x9'));module[_0x7cb5('0xa')]=function(_0x4c53f9,_0x4d9136){return _0x4c53f9[_0x7cb5('0xb')](_0x7cb5('0xc'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93091b5..770a75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7599=['localhost','socket.io-emitter','register','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappAccount','find','options','include','map','model','attributes','then','ShowWhatsappAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x3a0c02,_0x301422){var _0xf45781=function(_0x223a37){while(--_0x223a37){_0x3a0c02['push'](_0x3a0c02['shift']());}};_0xf45781(++_0x301422);}(_0x7599,0x14f));var _0x9759=function(_0x49b61e,_0x1a9058){_0x49b61e=_0x49b61e-0x0;var _0x5732f=_0x7599[_0x49b61e];return _0x5732f;};'use strict';var _=require(_0x9759('0x0'));var util=require(_0x9759('0x1'));var moment=require(_0x9759('0x2'));var BPromise=require(_0x9759('0x3'));var rs=require(_0x9759('0x4'));var fs=require('fs');var Redis=require(_0x9759('0x5'));var db=require(_0x9759('0x6'))['db'];var utils=require(_0x9759('0x7'));var logger=require(_0x9759('0x8'))(_0x9759('0x9'));var config=require(_0x9759('0xa'));var jayson=require(_0x9759('0xb'));var client=jayson[_0x9759('0xc')][_0x9759('0xd')]({'port':0x232a});config[_0x9759('0xe')]=_[_0x9759('0xf')](config['redis'],{'host':_0x9759('0x10'),'port':0x18eb});var socket=require(_0x9759('0x11'))(new Redis(config[_0x9759('0xe')]));require('./whatsappAccount.socket')[_0x9759('0x12')](socket);function respondWithRpcPromise(_0x5ea5c1,_0x15d1ef,_0x25df10){return new BPromise(function(_0x44e1d7,_0x5735d5){return client['request'](_0x5ea5c1,_0x25df10)['then'](function(_0x309128){logger[_0x9759('0x13')](_0x9759('0x14'),_0x15d1ef,_0x9759('0x15'));logger[_0x9759('0x16')](_0x9759('0x17'),_0x15d1ef,'request\x20sent',JSON[_0x9759('0x18')](_0x309128));if(_0x309128[_0x9759('0x19')]){if(_0x309128[_0x9759('0x19')][_0x9759('0x1a')]===0x1f4){logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x309128['error'][_0x9759('0x1b')]);return _0x5735d5(_0x309128[_0x9759('0x19')][_0x9759('0x1b')]);}logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x309128[_0x9759('0x19')]['message']);return _0x44e1d7(_0x309128[_0x9759('0x19')][_0x9759('0x1b')]);}else{logger[_0x9759('0x13')](_0x9759('0x14'),_0x15d1ef,_0x9759('0x15'));_0x44e1d7(_0x309128[_0x9759('0x1c')][_0x9759('0x1b')]);}})[_0x9759('0x1d')](function(_0x2756fd){logger[_0x9759('0x19')](_0x9759('0x14'),_0x15d1ef,_0x2756fd);_0x5735d5(_0x2756fd);});});}exports['ShowWhatsappAccount']=function(_0x5ce88d){var _0x3c91a0=this;return new Promise(function(_0x148744,_0x222223){return db[_0x9759('0x1e')][_0x9759('0x1f')]({'raw':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d['options']['raw']===undefined?!![]:![]:!![],'where':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d['options']['where']||null:null,'attributes':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d[_0x9759('0x20')]['attributes']||null:null,'include':_0x5ce88d[_0x9759('0x20')]?_0x5ce88d[_0x9759('0x20')][_0x9759('0x21')]?_[_0x9759('0x22')](_0x5ce88d[_0x9759('0x20')][_0x9759('0x21')],function(_0x13a327){return{'model':db[_0x13a327['model']],'as':_0x13a327['as'],'attributes':_0x13a327['attributes'],'include':_0x13a327[_0x9759('0x21')]?_[_0x9759('0x22')](_0x13a327[_0x9759('0x21')],function(_0x172418){return{'model':db[_0x172418[_0x9759('0x23')]],'as':_0x172418['as'],'attributes':_0x172418[_0x9759('0x24')],'include':_0x172418['include']?_[_0x9759('0x22')](_0x172418[_0x9759('0x21')],function(_0xdcc3db){return{'model':db[_0xdcc3db[_0x9759('0x23')]],'as':_0xdcc3db['as'],'attributes':_0xdcc3db[_0x9759('0x24')]};}):[]};}):[]};}):[]:[]})[_0x9759('0x25')](function(_0x399332){logger[_0x9759('0x13')](_0x9759('0x26'),_0x5ce88d);logger[_0x9759('0x16')](_0x9759('0x26'),_0x5ce88d,JSON[_0x9759('0x18')](_0x399332));_0x148744(_0x399332);})[_0x9759('0x1d')](function(_0x5f23fb){logger[_0x9759('0x19')](_0x9759('0x26'),_0x5f23fb['message'],_0x5ce88d);_0x222223(_0x3c91a0['error'](0x1f4,_0x5f23fb[_0x9759('0x1b')]));});});};
\ No newline at end of file
+var _0x898c=['attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where'];(function(_0x2181dc,_0x6a8b82){var _0x2fe9a6=function(_0x56a028){while(--_0x56a028){_0x2181dc['push'](_0x2181dc['shift']());}};_0x2fe9a6(++_0x6a8b82);}(_0x898c,0x73));var _0xc898=function(_0x4a26e7,_0x232272){_0x4a26e7=_0x4a26e7-0x0;var _0x13c81b=_0x898c[_0x4a26e7];return _0x13c81b;};'use strict';var _=require(_0xc898('0x0'));var util=require(_0xc898('0x1'));var moment=require(_0xc898('0x2'));var BPromise=require(_0xc898('0x3'));var rs=require(_0xc898('0x4'));var fs=require('fs');var Redis=require(_0xc898('0x5'));var db=require(_0xc898('0x6'))['db'];var utils=require(_0xc898('0x7'));var logger=require(_0xc898('0x8'))('rpc');var config=require(_0xc898('0x9'));var jayson=require(_0xc898('0xa'));var client=jayson[_0xc898('0xb')][_0xc898('0xc')]({'port':0x232a});config[_0xc898('0xd')]=_['defaults'](config[_0xc898('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xc898('0xe'))(new Redis(config[_0xc898('0xd')]));require(_0xc898('0xf'))[_0xc898('0x10')](socket);function respondWithRpcPromise(_0x286cae,_0x1433cb,_0x168211){return new BPromise(function(_0x3ceaff,_0x4a9561){return client[_0xc898('0x11')](_0x286cae,_0x168211)[_0xc898('0x12')](function(_0x3f8e5b){logger['info'](_0xc898('0x13'),_0x1433cb,_0xc898('0x14'));logger[_0xc898('0x15')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1433cb,_0xc898('0x14'),JSON[_0xc898('0x16')](_0x3f8e5b));if(_0x3f8e5b[_0xc898('0x17')]){if(_0x3f8e5b[_0xc898('0x17')][_0xc898('0x18')]===0x1f4){logger[_0xc898('0x17')](_0xc898('0x13'),_0x1433cb,_0x3f8e5b[_0xc898('0x17')][_0xc898('0x19')]);return _0x4a9561(_0x3f8e5b[_0xc898('0x17')][_0xc898('0x19')]);}logger[_0xc898('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x1433cb,_0x3f8e5b[_0xc898('0x17')][_0xc898('0x19')]);return _0x3ceaff(_0x3f8e5b['error'][_0xc898('0x19')]);}else{logger[_0xc898('0x1a')](_0xc898('0x13'),_0x1433cb,'request\x20sent');_0x3ceaff(_0x3f8e5b['result'][_0xc898('0x19')]);}})[_0xc898('0x1b')](function(_0x5e8c44){logger['error'](_0xc898('0x13'),_0x1433cb,_0x5e8c44);_0x4a9561(_0x5e8c44);});});}exports[_0xc898('0x1c')]=function(_0x2e8876){var _0x5b78a5=this;return new Promise(function(_0x212632,_0x30fe6f){return db[_0xc898('0x1d')][_0xc898('0x1e')]({'raw':_0x2e8876['options']?_0x2e8876[_0xc898('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x2e8876[_0xc898('0x1f')]?_0x2e8876[_0xc898('0x1f')][_0xc898('0x20')]||null:null,'attributes':_0x2e8876[_0xc898('0x1f')]?_0x2e8876[_0xc898('0x1f')][_0xc898('0x21')]||null:null,'include':_0x2e8876[_0xc898('0x1f')]?_0x2e8876[_0xc898('0x1f')][_0xc898('0x22')]?_[_0xc898('0x23')](_0x2e8876[_0xc898('0x1f')][_0xc898('0x22')],function(_0x4ef579){return{'model':db[_0x4ef579[_0xc898('0x24')]],'as':_0x4ef579['as'],'attributes':_0x4ef579[_0xc898('0x21')],'include':_0x4ef579[_0xc898('0x22')]?_[_0xc898('0x23')](_0x4ef579[_0xc898('0x22')],function(_0x3fa90e){return{'model':db[_0x3fa90e['model']],'as':_0x3fa90e['as'],'attributes':_0x3fa90e['attributes'],'include':_0x3fa90e['include']?_[_0xc898('0x23')](_0x3fa90e[_0xc898('0x22')],function(_0x3b6db5){return{'model':db[_0x3b6db5[_0xc898('0x24')]],'as':_0x3b6db5['as'],'attributes':_0x3b6db5[_0xc898('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc898('0x12')](function(_0xf3c3ff){logger[_0xc898('0x1a')](_0xc898('0x1c'),_0x2e8876);logger[_0xc898('0x15')](_0xc898('0x1c'),_0x2e8876,JSON['stringify'](_0xf3c3ff));_0x212632(_0xf3c3ff);})['catch'](function(_0x448d1d){logger['error']('ShowWhatsappAccount',_0x448d1d['message'],_0x2e8876);_0x30fe6f(_0x5b78a5[_0xc898('0x17')](0x1f4,_0x448d1d[_0xc898('0x19')]));});});};
\ No newline at end of file
index bc99473..23e2d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf21=['emit','register','length','whatsappAccount:','save','remove','update'];(function(_0x34342f,_0x5ebb37){var _0x2742fd=function(_0x227b07){while(--_0x227b07){_0x34342f['push'](_0x34342f['shift']());}};_0x2742fd(++_0x5ebb37);}(_0xaf21,0x18c));var _0x1af2=function(_0x2eb487,_0x34a574){_0x2eb487=_0x2eb487-0x0;var _0x3f3518=_0xaf21[_0x2eb487];return _0x3f3518;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x1af2('0x0'),_0x1af2('0x1'),_0x1af2('0x2')];function createListener(_0xd9308f,_0x2c46a3){return function(_0x44ca76){_0x2c46a3[_0x1af2('0x3')](_0xd9308f,_0x44ca76);};}function removeListener(_0x779bff,_0xb476f5){return function(){WhatsappAccountEvents['removeListener'](_0x779bff,_0xb476f5);};}exports[_0x1af2('0x4')]=function(_0x4cb757){for(var _0x33dacd=0x0,_0x5ec1a4=events[_0x1af2('0x5')];_0x33dacd<_0x5ec1a4;_0x33dacd++){var _0x22b7e8=events[_0x33dacd];var _0x4de469=createListener(_0x1af2('0x6')+_0x22b7e8,_0x4cb757);WhatsappAccountEvents['on'](_0x22b7e8,_0x4de469);}};
\ No newline at end of file
+var _0xdf26=['length','whatsappAccount:','./whatsappAccount.events','save','update','removeListener','register'];(function(_0x333bf6,_0x59f8a7){var _0x13b39a=function(_0x17a799){while(--_0x17a799){_0x333bf6['push'](_0x333bf6['shift']());}};_0x13b39a(++_0x59f8a7);}(_0xdf26,0x1de));var _0x6df2=function(_0x5c54a8,_0x5273ff){_0x5c54a8=_0x5c54a8-0x0;var _0x4a159a=_0xdf26[_0x5c54a8];return _0x4a159a;};'use strict';var WhatsappAccountEvents=require(_0x6df2('0x0'));var events=[_0x6df2('0x1'),'remove',_0x6df2('0x2')];function createListener(_0xa613a9,_0x266903){return function(_0x63cef5){_0x266903['emit'](_0xa613a9,_0x63cef5);};}function removeListener(_0x55e6cd,_0x46951c){return function(){WhatsappAccountEvents[_0x6df2('0x3')](_0x55e6cd,_0x46951c);};}exports[_0x6df2('0x4')]=function(_0x3b9d12){for(var _0x327544=0x0,_0x50ab70=events[_0x6df2('0x5')];_0x327544<_0x50ab70;_0x327544++){var _0x57eee0=events[_0x327544];var _0x5888c7=createListener(_0x6df2('0x6')+_0x57eee0,_0x3b9d12);WhatsappAccountEvents['on'](_0x57eee0,_0x5888c7);}};
\ No newline at end of file
index 68704ce..c0225a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6433=['express','Router','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','create','put','/:id','update','exports','multer','util','path'];(function(_0x102138,_0x2c10f8){var _0x35efb3=function(_0x38f765){while(--_0x38f765){_0x102138['push'](_0x102138['shift']());}};_0x35efb3(++_0x2c10f8);}(_0x6433,0x84));var _0x3643=function(_0x3bad24,_0x572818){_0x3bad24=_0x3bad24-0x0;var _0x4ad5a1=_0x6433[_0x3bad24];return _0x4ad5a1;};'use strict';var multer=require(_0x3643('0x0'));var util=require(_0x3643('0x1'));var path=require(_0x3643('0x2'));var timeout=require('connect-timeout');var express=require(_0x3643('0x3'));var router=express[_0x3643('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3643('0x5'));var controller=require(_0x3643('0x6'));router[_0x3643('0x7')]('/',auth[_0x3643('0x8')](),controller[_0x3643('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3643('0xa')]);router[_0x3643('0xb')](_0x3643('0xc'),auth[_0x3643('0x8')](),controller[_0x3643('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x3643('0xe')]=router;
\ No newline at end of file
+var _0xea63=['post','create','update','delete','destroy','exports','path','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x3590ed,_0x3a4587){var _0x21f72f=function(_0x45be21){while(--_0x45be21){_0x3590ed['push'](_0x3590ed['shift']());}};_0x21f72f(++_0x3a4587);}(_0xea63,0x15f));var _0x3ea6=function(_0x117e6b,_0x329e18){_0x117e6b=_0x117e6b-0x0;var _0x1f8db0=_0xea63[_0x117e6b];return _0x1f8db0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3ea6('0x0'));var timeout=require('connect-timeout');var express=require(_0x3ea6('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3ea6('0x2'));var interaction=require(_0x3ea6('0x3'));var config=require('../../config/environment');var controller=require('./whatsappApplication.controller');router[_0x3ea6('0x4')]('/',auth[_0x3ea6('0x5')](),controller[_0x3ea6('0x6')]);router[_0x3ea6('0x4')](_0x3ea6('0x7'),auth[_0x3ea6('0x5')](),controller[_0x3ea6('0x8')]);router[_0x3ea6('0x9')]('/',auth['isAuthenticated'](),controller[_0x3ea6('0xa')]);router['put'](_0x3ea6('0x7'),auth[_0x3ea6('0x5')](),controller[_0x3ea6('0xb')]);router[_0x3ea6('0xc')](_0x3ea6('0x7'),auth[_0x3ea6('0x5')](),controller[_0x3ea6('0xd')]);module[_0x3ea6('0xe')]=router;
\ No newline at end of file
index 57a8b90..ef4c415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6cb=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2eb4e4,_0x22ef1c){var _0x3ab339=function(_0x1aae2e){while(--_0x1aae2e){_0x2eb4e4['push'](_0x2eb4e4['shift']());}};_0x3ab339(++_0x22ef1c);}(_0xd6cb,0x1cb));var _0xbd6c=function(_0x51b362,_0x2a3af3){_0x51b362=_0x51b362-0x0;var _0x18bd6=_0xd6cb[_0x51b362];return _0x18bd6;};'use strict';var Sequelize=require(_0xbd6c('0x0'));module[_0xbd6c('0x1')]={'priority':{'type':Sequelize[_0xbd6c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xbd6c('0x3')],'allowNull':![],'defaultValue':_0xbd6c('0x4')},'appdata':{'type':Sequelize[_0xbd6c('0x5')]()},'description':{'type':Sequelize[_0xbd6c('0x3')]},'interval':{'type':Sequelize[_0xbd6c('0x3')],'defaultValue':_0xbd6c('0x6')}};
\ No newline at end of file
+var _0xb9ee=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x120f08,_0x1fcdb9){var _0xa1d039=function(_0xf1edcd){while(--_0xf1edcd){_0x120f08['push'](_0x120f08['shift']());}};_0xa1d039(++_0x1fcdb9);}(_0xb9ee,0x1b4));var _0xeb9e=function(_0x1c0261,_0xbe62af){_0x1c0261=_0x1c0261-0x0;var _0x1f81d0=_0xb9ee[_0x1c0261];return _0x1f81d0;};'use strict';var Sequelize=require(_0xeb9e('0x0'));module[_0xeb9e('0x1')]={'priority':{'type':Sequelize[_0xeb9e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xeb9e('0x3')],'allowNull':![],'defaultValue':_0xeb9e('0x4')},'appdata':{'type':Sequelize[_0xeb9e('0x5')]()},'description':{'type':Sequelize[_0xeb9e('0x3')]},'interval':{'type':Sequelize[_0xeb9e('0x3')],'defaultValue':_0xeb9e('0x6')}};
\ No newline at end of file
index cbca011..2d5b3df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['include','findAll','rows','catch','show','params','keys','intersection','includeAll','create','body','find','eml-format','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','map','WhatsappApplication','rawAttributes','fieldName','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x56d7b2,_0x2ca43e){var _0x4a114c=function(_0x5080bb){while(--_0x5080bb){_0x56d7b2['push'](_0x56d7b2['shift']());}};_0x4a114c(++_0x2ca43e);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x56b7c6,_0x2e2186){_0x56b7c6=_0x56b7c6-0x0;var _0x222295=_0xdd4f[_0x56b7c6];return _0x222295;};'use strict';var emlformat=require(_0xfdd4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd4('0x1'));var moment=require(_0xfdd4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfdd4('0x3'));var util=require(_0xfdd4('0x4'));var path=require(_0xfdd4('0x5'));var sox=require('sox');var csv=require(_0xfdd4('0x6'));var ejs=require(_0xfdd4('0x7'));var fs=require('fs');var fs_extra=require(_0xfdd4('0x8'));var _=require(_0xfdd4('0x9'));var squel=require(_0xfdd4('0xa'));var crypto=require('crypto');var jsforce=require(_0xfdd4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xfdd4('0x6'));var querystring=require(_0xfdd4('0xc'));var Papa=require(_0xfdd4('0xd'));var Redis=require('ioredis');var authService=require(_0xfdd4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdd4('0xf'));var hardwareService=require(_0xfdd4('0x10'));var logger=require(_0xfdd4('0x11'))(_0xfdd4('0x12'));var utils=require(_0xfdd4('0x13'));var config=require(_0xfdd4('0x14'));var licenseUtil=require(_0xfdd4('0x15'));var db=require(_0xfdd4('0x16'))['db'];function respondWithStatusCode(_0x3f07f1,_0x4565e6){_0x4565e6=_0x4565e6||0xcc;return function(_0x1bf37b){if(_0x1bf37b){return _0x3f07f1['sendStatus'](_0x4565e6);}return _0x3f07f1[_0xfdd4('0x17')](_0x4565e6)[_0xfdd4('0x18')]();};}function respondWithResult(_0x227099,_0x57b21f){_0x57b21f=_0x57b21f||0xc8;return function(_0x1b7da1){if(_0x1b7da1){return _0x227099['status'](_0x57b21f)[_0xfdd4('0x19')](_0x1b7da1);}};}function respondWithFilteredResult(_0x42c3a8,_0x2f34ec){return function(_0x431255){if(_0x431255){var _0x37b05f=typeof _0x2f34ec['offset']==='undefined'&&typeof _0x2f34ec['limit']===_0xfdd4('0x1a');var _0x216c7e=_0x431255[_0xfdd4('0x1b')];var _0x2ccc88=_0x37b05f?0x0:_0x2f34ec[_0xfdd4('0x1c')];var _0x33d752=_0x37b05f?_0x431255[_0xfdd4('0x1b')]:_0x2f34ec[_0xfdd4('0x1c')]+_0x2f34ec[_0xfdd4('0x1d')];var _0x52ce34;if(_0x33d752>=_0x216c7e){_0x33d752=_0x216c7e;_0x52ce34=0xc8;}else{_0x52ce34=0xce;}_0x42c3a8[_0xfdd4('0x17')](_0x52ce34);return _0x42c3a8[_0xfdd4('0x1e')](_0xfdd4('0x1f'),_0x2ccc88+'-'+_0x33d752+'/'+_0x216c7e)[_0xfdd4('0x19')](_0x431255);}return null;};}function patchUpdates(_0x1454f1){return function(_0x29cc8d){try{jsonpatch[_0xfdd4('0x20')](_0x29cc8d,_0x1454f1,!![]);}catch(_0x34dfa8){return BPromise['reject'](_0x34dfa8);}return _0x29cc8d[_0xfdd4('0x21')]();};}function saveUpdates(_0x17302b,_0x2a24e8){return function(_0x16e81b){if(_0x16e81b){return _0x16e81b[_0xfdd4('0x22')](_0x17302b)[_0xfdd4('0x23')](function(_0x451767){return _0x451767;});}return null;};}function removeEntity(_0x277ec1,_0x538b00){return function(_0x1e14da){if(_0x1e14da){return _0x1e14da[_0xfdd4('0x24')]()[_0xfdd4('0x23')](function(){_0x277ec1['status'](0xcc)[_0xfdd4('0x18')]();});}};}function handleEntityNotFound(_0x39b712,_0xf9c346){return function(_0x2f8268){if(!_0x2f8268){_0x39b712[_0xfdd4('0x25')](0x194);}return _0x2f8268;};}function handleError(_0x4a8790,_0x18bafb){_0x18bafb=_0x18bafb||0x1f4;return function(_0x2c88ad){logger[_0xfdd4('0x26')](_0x2c88ad[_0xfdd4('0x27')]);if(_0x2c88ad[_0xfdd4('0x28')]){delete _0x2c88ad[_0xfdd4('0x28')];}_0x4a8790[_0xfdd4('0x17')](_0x18bafb)[_0xfdd4('0x29')](_0x2c88ad);};}exports['index']=function(_0xcbd1fb,_0x39981f){var _0x385a68={},_0xef012e={},_0x2207ae={'count':0x0,'rows':[]};var _0x4a36a2=_[_0xfdd4('0x2a')](db[_0xfdd4('0x2b')][_0xfdd4('0x2c')],function(_0x2bb793){return{'name':_0x2bb793[_0xfdd4('0x2d')],'type':_0x2bb793['type'][_0xfdd4('0x2e')]};});_0xef012e[_0xfdd4('0x2f')]=_[_0xfdd4('0x2a')](_0x4a36a2,'name');_0xef012e[_0xfdd4('0x30')]=_['keys'](_0xcbd1fb[_0xfdd4('0x30')]);_0xef012e[_0xfdd4('0x31')]=_['intersection'](_0xef012e['model'],_0xef012e[_0xfdd4('0x30')]);_0x385a68[_0xfdd4('0x32')]=_['intersection'](_0xef012e['model'],qs[_0xfdd4('0x33')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x33')]));_0x385a68[_0xfdd4('0x32')]=_0x385a68[_0xfdd4('0x32')][_0xfdd4('0x34')]?_0x385a68[_0xfdd4('0x32')]:_0xef012e[_0xfdd4('0x2f')];if(!_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x35')](_0xfdd4('0x36'))){_0x385a68[_0xfdd4('0x1d')]=qs[_0xfdd4('0x1d')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x1d')]);_0x385a68[_0xfdd4('0x1c')]=qs[_0xfdd4('0x1c')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x1c')]);}_0x385a68[_0xfdd4('0x37')]=qs[_0xfdd4('0x38')](_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x38')]);_0x385a68[_0xfdd4('0x39')]=qs[_0xfdd4('0x31')](_[_0xfdd4('0x3a')](_0xcbd1fb['query'],_0xef012e[_0xfdd4('0x31')]),_0x4a36a2);if(_0xcbd1fb[_0xfdd4('0x30')][_0xfdd4('0x3b')]){_0x385a68[_0xfdd4('0x39')]=_[_0xfdd4('0x3c')](_0x385a68[_0xfdd4('0x39')],{'$or':_['map'](_0x4a36a2,function(_0x245ce4){if(_0x245ce4['type']!==_0xfdd4('0x3d')){var _0x2c5199={};_0x2c5199[_0x245ce4[_0xfdd4('0x28')]]={'$like':'%'+_0xcbd1fb[_0xfdd4('0x30')]['filter']+'%'};return _0x2c5199;}})});}_0x385a68=_[_0xfdd4('0x3c')]({},_0x385a68,_0xcbd1fb[_0xfdd4('0x3e')]);var _0x1040e8={'where':_0x385a68[_0xfdd4('0x39')]};return db[_0xfdd4('0x2b')][_0xfdd4('0x1b')](_0x1040e8)[_0xfdd4('0x23')](function(_0x55fcec){_0x2207ae[_0xfdd4('0x1b')]=_0x55fcec;if(_0xcbd1fb[_0xfdd4('0x30')]['includeAll']){_0x385a68[_0xfdd4('0x3f')]=[{'all':!![]}];}return db[_0xfdd4('0x2b')][_0xfdd4('0x40')](_0x385a68);})[_0xfdd4('0x23')](function(_0x5173db){_0x2207ae[_0xfdd4('0x41')]=_0x5173db;return _0x2207ae;})[_0xfdd4('0x23')](respondWithFilteredResult(_0x39981f,_0x385a68))[_0xfdd4('0x42')](handleError(_0x39981f,null));};exports[_0xfdd4('0x43')]=function(_0x362c4f,_0x496747){var _0x1411e0={'raw':!![],'where':{'id':_0x362c4f[_0xfdd4('0x44')]['id']}},_0x23af2a={};_0x23af2a[_0xfdd4('0x2f')]=_[_0xfdd4('0x45')](db[_0xfdd4('0x2b')][_0xfdd4('0x2c')]);_0x23af2a['query']=_[_0xfdd4('0x45')](_0x362c4f['query']);_0x23af2a[_0xfdd4('0x31')]=_[_0xfdd4('0x46')](_0x23af2a[_0xfdd4('0x2f')],_0x23af2a[_0xfdd4('0x30')]);_0x1411e0['attributes']=_[_0xfdd4('0x46')](_0x23af2a[_0xfdd4('0x2f')],qs['fields'](_0x362c4f[_0xfdd4('0x30')][_0xfdd4('0x33')]));_0x1411e0['attributes']=_0x1411e0[_0xfdd4('0x32')]['length']?_0x1411e0['attributes']:_0x23af2a['model'];if(_0x362c4f[_0xfdd4('0x30')][_0xfdd4('0x47')]){_0x1411e0[_0xfdd4('0x3f')]=[{'all':!![]}];}_0x1411e0=_['merge']({},_0x1411e0,_0x362c4f[_0xfdd4('0x3e')]);return db[_0xfdd4('0x2b')]['find'](_0x1411e0)[_0xfdd4('0x23')](handleEntityNotFound(_0x496747,null))[_0xfdd4('0x23')](respondWithResult(_0x496747,null))[_0xfdd4('0x42')](handleError(_0x496747,null));};exports[_0xfdd4('0x48')]=function(_0x746f6a,_0x3817fe){return db[_0xfdd4('0x2b')][_0xfdd4('0x48')](_0x746f6a[_0xfdd4('0x49')],{})[_0xfdd4('0x23')](respondWithResult(_0x3817fe,0xc9))[_0xfdd4('0x42')](handleError(_0x3817fe,null));};exports[_0xfdd4('0x22')]=function(_0x300965,_0x3c0ee1){if(_0x300965['body']['id']){delete _0x300965['body']['id'];}return db[_0xfdd4('0x2b')][_0xfdd4('0x4a')]({'where':{'id':_0x300965[_0xfdd4('0x44')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x3c0ee1,null))['then'](saveUpdates(_0x300965[_0xfdd4('0x49')],null))[_0xfdd4('0x23')](respondWithResult(_0x3c0ee1,null))['catch'](handleError(_0x3c0ee1,null));};exports['destroy']=function(_0x53c66d,_0x51dd34){return db['WhatsappApplication'][_0xfdd4('0x4a')]({'where':{'id':_0x53c66d[_0xfdd4('0x44')]['id']}})[_0xfdd4('0x23')](handleEntityNotFound(_0x51dd34,null))[_0xfdd4('0x23')](removeEntity(_0x51dd34,null))[_0xfdd4('0x42')](handleError(_0x51dd34,null));};
\ No newline at end of file
+var _0x5532=['rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','keys','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','WhatsappApplication'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x5532,0x19a));var _0x2553=function(_0x4035bd,_0x39c0e0){_0x4035bd=_0x4035bd-0x0;var _0x3e93ac=_0x5532[_0x4035bd];return _0x3e93ac;};'use strict';var emlformat=require(_0x2553('0x0'));var rimraf=require(_0x2553('0x1'));var zipdir=require(_0x2553('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2553('0x3'));var moment=require('moment');var BPromise=require(_0x2553('0x4'));var Mustache=require(_0x2553('0x5'));var util=require(_0x2553('0x6'));var path=require('path');var sox=require(_0x2553('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2553('0x8'));var _=require(_0x2553('0x9'));var squel=require('squel');var crypto=require(_0x2553('0xa'));var jsforce=require(_0x2553('0xb'));var deskjs=require(_0x2553('0xc'));var toCsv=require(_0x2553('0xd'));var querystring=require(_0x2553('0xe'));var Papa=require(_0x2553('0xf'));var Redis=require(_0x2553('0x10'));var authService=require(_0x2553('0x11'));var qs=require(_0x2553('0x12'));var as=require(_0x2553('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2553('0x14'))(_0x2553('0x15'));var utils=require(_0x2553('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2553('0x17'));var db=require(_0x2553('0x18'))['db'];function respondWithStatusCode(_0x509539,_0x5d24fb){_0x5d24fb=_0x5d24fb||0xcc;return function(_0x4394af){if(_0x4394af){return _0x509539['sendStatus'](_0x5d24fb);}return _0x509539[_0x2553('0x19')](_0x5d24fb)[_0x2553('0x1a')]();};}function respondWithResult(_0x426ebb,_0x587ab5){_0x587ab5=_0x587ab5||0xc8;return function(_0x59b800){if(_0x59b800){return _0x426ebb[_0x2553('0x19')](_0x587ab5)[_0x2553('0x1b')](_0x59b800);}};}function respondWithFilteredResult(_0x2e2555,_0x77477d){return function(_0x241dfe){if(_0x241dfe){var _0x31ae8f=typeof _0x77477d['offset']===_0x2553('0x1c')&&typeof _0x77477d[_0x2553('0x1d')]==='undefined';var _0x2d7a8b=_0x241dfe[_0x2553('0x1e')];var _0x5bf6d4=_0x31ae8f?0x0:_0x77477d[_0x2553('0x1f')];var _0x191e12=_0x31ae8f?_0x241dfe[_0x2553('0x1e')]:_0x77477d[_0x2553('0x1f')]+_0x77477d['limit'];var _0x4abc05;if(_0x191e12>=_0x2d7a8b){_0x191e12=_0x2d7a8b;_0x4abc05=0xc8;}else{_0x4abc05=0xce;}_0x2e2555[_0x2553('0x19')](_0x4abc05);return _0x2e2555[_0x2553('0x20')](_0x2553('0x21'),_0x5bf6d4+'-'+_0x191e12+'/'+_0x2d7a8b)['json'](_0x241dfe);}return null;};}function patchUpdates(_0x55ceba){return function(_0x26698c){try{jsonpatch[_0x2553('0x22')](_0x26698c,_0x55ceba,!![]);}catch(_0x36f27c){return BPromise['reject'](_0x36f27c);}return _0x26698c[_0x2553('0x23')]();};}function saveUpdates(_0x2c7d16,_0x3b4110){return function(_0x5682dd){if(_0x5682dd){return _0x5682dd[_0x2553('0x24')](_0x2c7d16)[_0x2553('0x25')](function(_0xe152e1){return _0xe152e1;});}return null;};}function removeEntity(_0xc91f02,_0x49d4d1){return function(_0x1b6d14){if(_0x1b6d14){return _0x1b6d14[_0x2553('0x26')]()['then'](function(){_0xc91f02[_0x2553('0x19')](0xcc)[_0x2553('0x1a')]();});}};}function handleEntityNotFound(_0x57516e,_0x4180c1){return function(_0x3d5ea2){if(!_0x3d5ea2){_0x57516e[_0x2553('0x27')](0x194);}return _0x3d5ea2;};}function handleError(_0x4aa3fa,_0x3fdfb1){_0x3fdfb1=_0x3fdfb1||0x1f4;return function(_0x581946){logger[_0x2553('0x28')](_0x581946['stack']);if(_0x581946['name']){delete _0x581946[_0x2553('0x29')];}_0x4aa3fa['status'](_0x3fdfb1)[_0x2553('0x2a')](_0x581946);};}exports[_0x2553('0x2b')]=function(_0x17ee14,_0x369bfc){var _0x54691d={},_0x19fec3={},_0xf630cd={'count':0x0,'rows':[]};var _0x442a0d=_[_0x2553('0x2c')](db[_0x2553('0x2d')][_0x2553('0x2e')],function(_0xcef42e){return{'name':_0xcef42e[_0x2553('0x2f')],'type':_0xcef42e[_0x2553('0x30')][_0x2553('0x31')]};});_0x19fec3[_0x2553('0x32')]=_[_0x2553('0x2c')](_0x442a0d,_0x2553('0x29'));_0x19fec3[_0x2553('0x33')]=_['keys'](_0x17ee14[_0x2553('0x33')]);_0x19fec3[_0x2553('0x34')]=_['intersection'](_0x19fec3[_0x2553('0x32')],_0x19fec3[_0x2553('0x33')]);_0x54691d['attributes']=_[_0x2553('0x35')](_0x19fec3[_0x2553('0x32')],qs[_0x2553('0x36')](_0x17ee14[_0x2553('0x33')]['fields']));_0x54691d[_0x2553('0x37')]=_0x54691d[_0x2553('0x37')][_0x2553('0x38')]?_0x54691d[_0x2553('0x37')]:_0x19fec3[_0x2553('0x32')];if(!_0x17ee14[_0x2553('0x33')][_0x2553('0x39')](_0x2553('0x3a'))){_0x54691d[_0x2553('0x1d')]=qs['limit'](_0x17ee14[_0x2553('0x33')]['limit']);_0x54691d[_0x2553('0x1f')]=qs[_0x2553('0x1f')](_0x17ee14[_0x2553('0x33')]['offset']);}_0x54691d[_0x2553('0x3b')]=qs['sort'](_0x17ee14['query']['sort']);_0x54691d[_0x2553('0x3c')]=qs[_0x2553('0x34')](_[_0x2553('0x3d')](_0x17ee14[_0x2553('0x33')],_0x19fec3['filters']),_0x442a0d);if(_0x17ee14[_0x2553('0x33')][_0x2553('0x3e')]){_0x54691d[_0x2553('0x3c')]=_['merge'](_0x54691d[_0x2553('0x3c')],{'$or':_[_0x2553('0x2c')](_0x442a0d,function(_0x4a13c8){if(_0x4a13c8[_0x2553('0x30')]!==_0x2553('0x3f')){var _0x2d16a4={};_0x2d16a4[_0x4a13c8['name']]={'$like':'%'+_0x17ee14[_0x2553('0x33')][_0x2553('0x3e')]+'%'};return _0x2d16a4;}})});}_0x54691d=_[_0x2553('0x40')]({},_0x54691d,_0x17ee14[_0x2553('0x41')]);var _0x2abf13={'where':_0x54691d[_0x2553('0x3c')]};return db['WhatsappApplication']['count'](_0x2abf13)[_0x2553('0x25')](function(_0x3d634c){_0xf630cd[_0x2553('0x1e')]=_0x3d634c;if(_0x17ee14[_0x2553('0x33')]['includeAll']){_0x54691d[_0x2553('0x42')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x2553('0x43')](_0x54691d);})[_0x2553('0x25')](function(_0x441a30){_0xf630cd[_0x2553('0x44')]=_0x441a30;return _0xf630cd;})[_0x2553('0x25')](respondWithFilteredResult(_0x369bfc,_0x54691d))['catch'](handleError(_0x369bfc,null));};exports[_0x2553('0x45')]=function(_0x156196,_0x3a7f7b){var _0x3802a0={'raw':!![],'where':{'id':_0x156196[_0x2553('0x46')]['id']}},_0x49ade1={};_0x49ade1['model']=_['keys'](db[_0x2553('0x2d')]['rawAttributes']);_0x49ade1[_0x2553('0x33')]=_[_0x2553('0x47')](_0x156196[_0x2553('0x33')]);_0x49ade1[_0x2553('0x34')]=_['intersection'](_0x49ade1['model'],_0x49ade1[_0x2553('0x33')]);_0x3802a0[_0x2553('0x37')]=_['intersection'](_0x49ade1['model'],qs['fields'](_0x156196['query']['fields']));_0x3802a0[_0x2553('0x37')]=_0x3802a0[_0x2553('0x37')][_0x2553('0x38')]?_0x3802a0[_0x2553('0x37')]:_0x49ade1['model'];if(_0x156196['query']['includeAll']){_0x3802a0[_0x2553('0x42')]=[{'all':!![]}];}_0x3802a0=_[_0x2553('0x40')]({},_0x3802a0,_0x156196[_0x2553('0x41')]);return db[_0x2553('0x2d')][_0x2553('0x48')](_0x3802a0)[_0x2553('0x25')](handleEntityNotFound(_0x3a7f7b,null))['then'](respondWithResult(_0x3a7f7b,null))[_0x2553('0x49')](handleError(_0x3a7f7b,null));};exports[_0x2553('0x4a')]=function(_0x2c062a,_0x29ad08){return db[_0x2553('0x2d')][_0x2553('0x4a')](_0x2c062a[_0x2553('0x4b')],{})[_0x2553('0x25')](respondWithResult(_0x29ad08,0xc9))['catch'](handleError(_0x29ad08,null));};exports[_0x2553('0x24')]=function(_0x144ac3,_0x557185){if(_0x144ac3[_0x2553('0x4b')]['id']){delete _0x144ac3[_0x2553('0x4b')]['id'];}return db['WhatsappApplication'][_0x2553('0x48')]({'where':{'id':_0x144ac3['params']['id']}})[_0x2553('0x25')](handleEntityNotFound(_0x557185,null))['then'](saveUpdates(_0x144ac3['body'],null))['then'](respondWithResult(_0x557185,null))[_0x2553('0x49')](handleError(_0x557185,null));};exports[_0x2553('0x26')]=function(_0x1cbba9,_0x1e022c){return db['WhatsappApplication']['find']({'where':{'id':_0x1cbba9['params']['id']}})[_0x2553('0x25')](handleEntityNotFound(_0x1e022c,null))['then'](removeEntity(_0x1e022c,null))[_0x2553('0x49')](handleError(_0x1e022c,null));};
\ No newline at end of file
index 9272f04..3768843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['./whatsappApplication.attributes','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2aed3,_0x5f9c05){var _0x160e00=function(_0x552b3a){while(--_0x552b3a){_0x2aed3['push'](_0x2aed3['shift']());}};_0x160e00(++_0x5f9c05);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x5687f0,_0x2058e2){_0x5687f0=_0x5687f0-0x0;var _0xb696ee=_0x8d0e[_0x5687f0];return _0xb696ee;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var logger=require(_0xe8d0('0x2'))(_0xe8d0('0x3'));var moment=require(_0xe8d0('0x4'));var BPromise=require(_0xe8d0('0x5'));var rp=require(_0xe8d0('0x6'));var fs=require('fs');var path=require(_0xe8d0('0x7'));var rimraf=require(_0xe8d0('0x8'));var config=require('../../config/environment');var attributes=require(_0xe8d0('0x9'));module['exports']=function(_0x560dab,_0x2e2985){return _0x560dab[_0xe8d0('0xa')](_0xe8d0('0xb'),attributes,{'tableName':_0xe8d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe8d0('0xd'),'collate':_0xe8d0('0xe')});};
\ No newline at end of file
+var _0xc5ba=['./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x13def3,_0x3783fd){var _0x16ee8d=function(_0x4250dd){while(--_0x4250dd){_0x13def3['push'](_0x13def3['shift']());}};_0x16ee8d(++_0x3783fd);}(_0xc5ba,0xb9));var _0xac5b=function(_0x5f2327,_0x123bcd){_0x5f2327=_0x5f2327-0x0;var _0x304698=_0xc5ba[_0x5f2327];return _0x304698;};'use strict';var _=require(_0xac5b('0x0'));var util=require(_0xac5b('0x1'));var logger=require(_0xac5b('0x2'))(_0xac5b('0x3'));var moment=require(_0xac5b('0x4'));var BPromise=require(_0xac5b('0x5'));var rp=require(_0xac5b('0x6'));var fs=require('fs');var path=require(_0xac5b('0x7'));var rimraf=require(_0xac5b('0x8'));var config=require(_0xac5b('0x9'));var attributes=require(_0xac5b('0xa'));module[_0xac5b('0xb')]=function(_0x23cf2f,_0x17fcf3){return _0x23cf2f[_0xac5b('0xc')](_0xac5b('0xd'),attributes,{'tableName':_0xac5b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 04bb634..397504f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0xffae6f,_0x14068a){var _0x450c76=function(_0x9b24ce){while(--_0x9b24ce){_0xffae6f['push'](_0xffae6f['shift']());}};_0x450c76(++_0x14068a);}(_0x70e0,0x17b));var _0x070e=function(_0x114ef9,_0x388b59){_0x114ef9=_0x114ef9-0x0;var _0xdf476b=_0x70e0[_0x114ef9];return _0xdf476b;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0x2d17=['WhatsappApplication,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3d46cf,_0x1d39e9){var _0x1e048e=function(_0x22de66){while(--_0x22de66){_0x3d46cf['push'](_0x3d46cf['shift']());}};_0x1e048e(++_0x1d39e9);}(_0x2d17,0x17e));var _0x72d1=function(_0x38c2fe,_0x56a313){_0x38c2fe=_0x38c2fe-0x0;var _0x4b3fd6=_0x2d17[_0x38c2fe];return _0x4b3fd6;};'use strict';var _=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var moment=require('moment');var BPromise=require(_0x72d1('0x2'));var rs=require(_0x72d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72d1('0x4'))['db'];var utils=require(_0x72d1('0x5'));var logger=require('../../config/logger')(_0x72d1('0x6'));var config=require('../../config/environment');var jayson=require(_0x72d1('0x7'));var client=jayson['client'][_0x72d1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x239d1f,_0x5b40a9,_0x477264){return new BPromise(function(_0x422f5a,_0x19e248){return client['request'](_0x239d1f,_0x477264)[_0x72d1('0x9')](function(_0x288362){logger[_0x72d1('0xa')]('WhatsappApplication,\x20%s,\x20%s',_0x5b40a9,_0x72d1('0xb'));logger[_0x72d1('0xc')](_0x72d1('0xd'),_0x5b40a9,_0x72d1('0xb'),JSON[_0x72d1('0xe')](_0x288362));if(_0x288362[_0x72d1('0xf')]){if(_0x288362[_0x72d1('0xf')][_0x72d1('0x10')]===0x1f4){logger[_0x72d1('0xf')](_0x72d1('0x11'),_0x5b40a9,_0x288362['error'][_0x72d1('0x12')]);return _0x19e248(_0x288362[_0x72d1('0xf')][_0x72d1('0x12')]);}logger[_0x72d1('0xf')](_0x72d1('0x11'),_0x5b40a9,_0x288362[_0x72d1('0xf')][_0x72d1('0x12')]);return _0x422f5a(_0x288362[_0x72d1('0xf')][_0x72d1('0x12')]);}else{logger[_0x72d1('0xa')](_0x72d1('0x11'),_0x5b40a9,_0x72d1('0xb'));_0x422f5a(_0x288362[_0x72d1('0x13')]['message']);}})[_0x72d1('0x14')](function(_0x5262b0){logger[_0x72d1('0xf')](_0x72d1('0x11'),_0x5b40a9,_0x5262b0);_0x19e248(_0x5262b0);});});}
\ No newline at end of file
index 2aaef54..a6effa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x59e40a,_0x3007b2){var _0x75a770=function(_0x900d74){while(--_0x900d74){_0x59e40a['push'](_0x59e40a['shift']());}};_0x75a770(++_0x3007b2);}(_0x90b1,0x1bb));var _0x190b=function(_0x23d274,_0x7e1ebe){_0x23d274=_0x23d274-0x0;var _0x2b0f72=_0x90b1[_0x23d274];return _0x2b0f72;};'use strict';var multer=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var path=require(_0x190b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x190b('0x3')]();var fs_extra=require(_0x190b('0x4'));var auth=require(_0x190b('0x5'));var interaction=require(_0x190b('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x190b('0x7')]);router[_0x190b('0x8')](_0x190b('0x9'),auth[_0x190b('0xa')](),controller[_0x190b('0xb')]);router[_0x190b('0x8')](_0x190b('0xc'),auth['isAuthenticated'](),controller[_0x190b('0xd')]);router[_0x190b('0x8')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0xf')]);router[_0x190b('0x8')](_0x190b('0x10'),auth[_0x190b('0xa')](),controller['download']);router[_0x190b('0x11')]('/',auth[_0x190b('0xa')](),controller['create']);router[_0x190b('0x11')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0x12')]);router[_0x190b('0x11')](_0x190b('0x13'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x16')),controller[_0x190b('0x17')]);router[_0x190b('0x18')](_0x190b('0xc'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x19')),controller['update']);router[_0x190b('0x1a')]('/:id',auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x1b')),controller['destroy']);router[_0x190b('0x1a')](_0x190b('0x13'),auth[_0x190b('0xa')](),controller[_0x190b('0x1c')]);module[_0x190b('0x1d')]=router;
\ No newline at end of file
+var _0x82c4=['create','post','addMessage','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','/:id','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./whatsappInteraction.controller','isAuthenticated','get','/describe','describe','show','/:id/messages','getMessages','/:id/download','download'];(function(_0x4c852c,_0x3114a1){var _0x2e3b3f=function(_0x3ac9f7){while(--_0x3ac9f7){_0x4c852c['push'](_0x4c852c['shift']());}};_0x2e3b3f(++_0x3114a1);}(_0x82c4,0x1ca));var _0x482c=function(_0x1f0f74,_0x53b3cd){_0x1f0f74=_0x1f0f74-0x0;var _0x2f0484=_0x82c4[_0x1f0f74];return _0x2f0484;};'use strict';var multer=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var path=require(_0x482c('0x2'));var timeout=require(_0x482c('0x3'));var express=require(_0x482c('0x4'));var router=express[_0x482c('0x5')]();var fs_extra=require(_0x482c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x482c('0x7'));var config=require('../../config/environment');var controller=require(_0x482c('0x8'));router['get']('/',auth[_0x482c('0x9')](),controller['index']);router[_0x482c('0xa')](_0x482c('0xb'),auth[_0x482c('0x9')](),controller[_0x482c('0xc')]);router[_0x482c('0xa')]('/:id',auth[_0x482c('0x9')](),controller[_0x482c('0xd')]);router[_0x482c('0xa')](_0x482c('0xe'),auth[_0x482c('0x9')](),controller[_0x482c('0xf')]);router['get'](_0x482c('0x10'),auth[_0x482c('0x9')](),controller[_0x482c('0x11')]);router['post']('/',auth[_0x482c('0x9')](),controller[_0x482c('0x12')]);router[_0x482c('0x13')]('/:id/messages',auth['isAuthenticated'](),controller[_0x482c('0x14')]);router[_0x482c('0x13')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x482c('0x15')](_0x482c('0x16'),_0x482c('0x17')),controller[_0x482c('0x18')]);router[_0x482c('0x19')](_0x482c('0x1a'),auth[_0x482c('0x9')](),interaction[_0x482c('0x15')](_0x482c('0x16'),_0x482c('0x1b')),controller[_0x482c('0x1c')]);router[_0x482c('0x1d')]('/:id',auth[_0x482c('0x9')](),interaction['tracked'](_0x482c('0x16'),_0x482c('0x1e')),controller['destroy']);router['delete'](_0x482c('0x1f'),auth['isAuthenticated'](),controller[_0x482c('0x20')]);module[_0x482c('0x21')]=router;
\ No newline at end of file
index 2a3cc37..4fd80a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8832=['ENUM','out','BOOLEAN','sequelize','moment','DATE','STRING'];(function(_0x51ab33,_0x71a8a8){var _0x5e1298=function(_0x1bd8cf){while(--_0x1bd8cf){_0x51ab33['push'](_0x51ab33['shift']());}};_0x5e1298(++_0x71a8a8);}(_0x8832,0x1f4));var _0x2883=function(_0x5be187,_0x1df136){_0x5be187=_0x5be187-0x0;var _0x3d16e5=_0x8832[_0x5be187];return _0x3d16e5;};'use strict';var Sequelize=require(_0x2883('0x0'));var moment=require(_0x2883('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2883('0x2')]},'disposition':{'type':Sequelize[_0x2883('0x3')]},'secondDisposition':{'type':Sequelize[_0x2883('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x2883('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x2883('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x2883('0x4')]('in',_0x2883('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x2883('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2883('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x08d9=['DATE','STRING','ENUM','out','BOOLEAN','sequelize','exports'];(function(_0x2a4c52,_0x124411){var _0x1c7642=function(_0x524f18){while(--_0x524f18){_0x2a4c52['push'](_0x2a4c52['shift']());}};_0x1c7642(++_0x124411);}(_0x08d9,0xc2));var _0x908d=function(_0x4a9206,_0x48ca42){_0x4a9206=_0x4a9206-0x0;var _0x11dc01=_0x08d9[_0x4a9206];return _0x11dc01;};'use strict';var Sequelize=require(_0x908d('0x0'));var moment=require('moment');module[_0x908d('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x908d('0x2')]},'disposition':{'type':Sequelize[_0x908d('0x3')]},'secondDisposition':{'type':Sequelize[_0x908d('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x908d('0x3')]},'read1stAt':{'type':Sequelize[_0x908d('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x908d('0x4')]('in',_0x908d('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x908d('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x908d('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x908d('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 6e1e33f..99f2dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','show','includeAll','include','options','create','destroy','describe','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','params','pick','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','findAll','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','CmContact','lastName','Attachment','Messages','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','N.A.','closed','closedAt','disposition','createReadStream','pipe','createWriteStream','basename','out','System','firstName','views','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','log','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','map','fullname','TagIds','Tags','forEach','catch','index','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','whatsapp_interactions','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','conditions','length','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','type','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','some','compact','isEmpty','WhatsappAccountId','where','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','i.WhatsappAccountId\x20IS\x20NULL','agent','sequelize','keyBy','merge','WhatsappInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x668b,0x140));var _0xb668=function(_0x39a2d6,_0x477459){_0x39a2d6=_0x39a2d6-0x0;var _0x23af66=_0x668b[_0x39a2d6];return _0x23af66;};'use strict';var emlformat=require(_0xb668('0x0'));var rimraf=require(_0xb668('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb668('0x2'));var rp=require(_0xb668('0x3'));var moment=require('moment');var BPromise=require(_0xb668('0x4'));var Mustache=require('mustache');var util=require(_0xb668('0x5'));var path=require(_0xb668('0x6'));var sox=require(_0xb668('0x7'));var csv=require('to-csv');var ejs=require(_0xb668('0x8'));var fs=require('fs');var fs_extra=require(_0xb668('0x9'));var _=require(_0xb668('0xa'));var squel=require(_0xb668('0xb'));var crypto=require(_0xb668('0xc'));var jsforce=require(_0xb668('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb668('0xe'));var querystring=require(_0xb668('0xf'));var Papa=require(_0xb668('0x10'));var Redis=require(_0xb668('0x11'));var authService=require(_0xb668('0x12'));var qs=require(_0xb668('0x13'));var as=require(_0xb668('0x14'));var pdf=require(_0xb668('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb668('0x16'))(_0xb668('0x17'));var utils=require(_0xb668('0x18'));var config=require(_0xb668('0x19'));var licenseUtil=require(_0xb668('0x1a'));var db=require(_0xb668('0x1b'))['db'];config[_0xb668('0x1c')]=_[_0xb668('0x1d')](config[_0xb668('0x1c')],{'host':_0xb668('0x1e'),'port':0x18eb});var socket=require(_0xb668('0x1f'))(new Redis(config[_0xb668('0x1c')]));require(_0xb668('0x20'))[_0xb668('0x21')](socket);function respondWithStatusCode(_0x2ec706,_0x3b0c84){_0x3b0c84=_0x3b0c84||0xcc;return function(_0x1ca6e7){if(_0x1ca6e7){return _0x2ec706[_0xb668('0x22')](_0x3b0c84);}return _0x2ec706[_0xb668('0x23')](_0x3b0c84)[_0xb668('0x24')]();};}function respondWithResult(_0xd3e39f,_0x27bbfa){_0x27bbfa=_0x27bbfa||0xc8;return function(_0x4ab137){if(_0x4ab137){return _0xd3e39f[_0xb668('0x23')](_0x27bbfa)['json'](_0x4ab137);}};}function respondWithFilteredResult(_0x30742a,_0x89fe72){return function(_0x5438ff){if(_0x5438ff){var _0x38595d=typeof _0x89fe72[_0xb668('0x25')]==='undefined'&&typeof _0x89fe72[_0xb668('0x26')]==='undefined';var _0x12fb3f=_0x5438ff[_0xb668('0x27')];var _0x253ba5=_0x38595d?0x0:_0x89fe72[_0xb668('0x25')];var _0x5d33ae=_0x38595d?_0x5438ff[_0xb668('0x27')]:_0x89fe72[_0xb668('0x25')]+_0x89fe72[_0xb668('0x26')];var _0x52de83;if(_0x5d33ae>=_0x12fb3f){_0x5d33ae=_0x12fb3f;_0x52de83=0xc8;}else{_0x52de83=0xce;}_0x30742a['status'](_0x52de83);return _0x30742a[_0xb668('0x28')](_0xb668('0x29'),_0x253ba5+'-'+_0x5d33ae+'/'+_0x12fb3f)['json'](_0x5438ff);}return null;};}function patchUpdates(_0x61de4a){return function(_0x4bf863){try{jsonpatch[_0xb668('0x2a')](_0x4bf863,_0x61de4a,!![]);}catch(_0x4bd365){return BPromise[_0xb668('0x2b')](_0x4bd365);}return _0x4bf863[_0xb668('0x2c')]();};}function saveUpdates(_0x3f84c7,_0x3231b2){return function(_0x2a5b3d){if(_0x2a5b3d){return _0x2a5b3d[_0xb668('0x2d')](_0x3f84c7)['then'](function(_0x23084d){return _0x23084d;});}return null;};}function removeEntity(_0x10d767,_0x2ab8c2){return function(_0x49abfd){if(_0x49abfd){return _0x49abfd['destroy']()[_0xb668('0x2e')](function(){_0x10d767[_0xb668('0x23')](0xcc)[_0xb668('0x24')]();});}};}function handleEntityNotFound(_0x5a67e9,_0x3a2543){return function(_0x39a129){if(!_0x39a129){_0x5a67e9[_0xb668('0x22')](0x194);}return _0x39a129;};}function handleError(_0x4c78a0,_0x5709e2){_0x5709e2=_0x5709e2||0x1f4;return function(_0x12919c){logger[_0xb668('0x2f')](_0x12919c['stack']);if(_0x12919c[_0xb668('0x30')]){delete _0x12919c[_0xb668('0x30')];}_0x4c78a0[_0xb668('0x23')](_0x5709e2)[_0xb668('0x31')](_0x12919c);};}function getInteractionUsers(_0x256a8,_0x5f36b5){return new BPromise(function(_0x138ee5,_0x3bd27c){try{if(_0x5f36b5[_0x256a8['id']]){_0x256a8['Users']=_[_0xb668('0x32')](_0x5f36b5[_0x256a8['id']],function(_0x52a946){return{'id':_0x52a946['id'],'fullname':_0x52a946[_0xb668('0x33')]};});}}catch(_0x406cc5){_0x3bd27c(_0x406cc5);}_0x138ee5(_0x256a8);});}function getInteractionTags(_0x467fea,_0x3ddd5d){return new BPromise(function(_0x2e40dd,_0x655536){try{if(_0x467fea[_0xb668('0x34')]){_0x467fea[_0xb668('0x35')]=[];_0x467fea[_0xb668('0x34')]['split'](',')[_0xb668('0x36')](function(_0x13bc2b){_0x467fea[_0xb668('0x35')]['push'](_0x3ddd5d[_0x13bc2b]);});}delete _0x467fea[_0xb668('0x34')];}catch(_0x203ea0){_0x655536(_0x203ea0);}_0x2e40dd(_0x467fea);});}function updateWhatsappInteraction(_0x58cacf,_0x68d980,_0x500f4e){return new BPromise(function(_0xb989a3,_0x423088){return getInteractionUsers(_0x58cacf,_0x500f4e)[_0xb668('0x2e')](function(_0x2f6edb){return getInteractionTags(_0x2f6edb,_0x68d980);})[_0xb668('0x2e')](function(_0xe10c43){_0xb989a3(_0xe10c43);})[_0xb668('0x37')](function(_0x5a9134){_0x423088(_0x5a9134);});});}exports[_0xb668('0x38')]=function(_0x19de9f,_0x5a9a55){var _0xede795={},_0x5ef681={},_0x48888d={'count':0x0,'rows':[]};var _0x39fa1a=_[_0xb668('0x32')](db['WhatsappInteraction'][_0xb668('0x39')],function(_0x510f93){return{'name':_0x510f93[_0xb668('0x3a')],'type':_0x510f93['type']['key']};});_0x5ef681[_0xb668('0x3b')]=_[_0xb668('0x32')](_0x39fa1a,'name');_0x5ef681['query']=_[_0xb668('0x3c')](_0x19de9f[_0xb668('0x3d')]);_0x5ef681[_0xb668('0x3e')]=_[_0xb668('0x3f')](_0x5ef681[_0xb668('0x3b')],_0x5ef681['query']);_0xede795['attributes']=_[_0xb668('0x3f')](_0x5ef681[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x40')]));_0xede795[_0xb668('0x41')]=_0xede795['attributes']['length']?_0xede795[_0xb668('0x41')]:_0x5ef681[_0xb668('0x3b')];if(!_0x19de9f[_0xb668('0x3d')][_0xb668('0x42')](_0xb668('0x43'))){_0xede795['limit']=qs[_0xb668('0x26')](_0x19de9f[_0xb668('0x3d')]['limit']);_0xede795[_0xb668('0x25')]=qs[_0xb668('0x25')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x25')]);}_0xede795['order']=qs['sort'](_0x19de9f['query'][_0xb668('0x44')]);_0xede795['where']=qs['filters'](_['pick'](_0x19de9f['query'],_0x5ef681[_0xb668('0x3e')]),_0x39fa1a);var _0x4874a8=[];var _0x14b269=squel[_0xb668('0x45')]()[_0xb668('0x46')]('id')[_0xb668('0x46')](_0xb668('0x30'))['field'](_0xb668('0x47'))[_0xb668('0x48')](_0xb668('0x49'));var _0x155b43=squel[_0xb668('0x45')]()[_0xb668('0x46')](_0xb668('0x4a'))[_0xb668('0x46')](_0xb668('0x4b'))[_0xb668('0x46')](_0xb668('0x4c'))['from'](_0xb668('0x4d'),'ui')[_0xb668('0x4e')](_0xb668('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x47a769=squel[_0xb668('0x45')]()['from'](_0xb668('0x50'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xb668('0x4e')](_0xb668('0x4f'),'o','o.id\x20=\x20i.UserId')[_0xb668('0x4e')](_0xb668('0x51'),'a',_0xb668('0x52'))[_0xb668('0x4e')](_0xb668('0x53'),'me',_0xb668('0x54'))[_0xb668('0x4e')](_0xb668('0x55'),'it',_0xb668('0x56'))[_0xb668('0x4e')]('tools_tags','t',_0xb668('0x57'));var _0x415aba=squel[_0xb668('0x58')]();var _0x175106=[];var _0x44f280=squel[_0xb668('0x58')]();var _0x381694;if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x59')]){_0x381694=as['parseSearch'](_0x19de9f[_0xb668('0x3d')][_0xb668('0x59')]);var _0x2e906d=_0x381694['sqlOperator'];for(var _0x5c4e1a=0x0;_0x5c4e1a<_0x381694[_0xb668('0x5a')][_0xb668('0x5b')];_0x5c4e1a++){var _0x36222a=_0x381694['conditions'][_0x5c4e1a];var _0x17054f='i';var _0x5ad4cd=_['find'](_0x39fa1a,[_0xb668('0x30'),_0x36222a[_0xb668('0x46')]]);if(!_0x5ad4cd){switch(_0x36222a[_0xb668('0x46')]){case _0xb668('0x5c'):if(_0x36222a[_0xb668('0x5d')]==0x1){_0x47a769[_0xb668('0x5e')]('`'+_0x36222a[_0xb668('0x46')]+_0xb668('0x5f'));}else{_0x47a769[_0xb668('0x5e')]('`'+_0x36222a[_0xb668('0x46')]+_0xb668('0x60'));}break;case _0xb668('0x61'):if(_0x36222a[_0xb668('0x62')]===_0xb668('0x63')){if(_0x36222a[_0xb668('0x5d')][_0xb668('0x64')]('\x20')[_0xb668('0x5b')]>0x1){_0x415aba[_0x2e906d](_0xb668('0x65'),qs[_0xb668('0x66')](_0x36222a[_0xb668('0x5d')]),null);}else{var _0x3c1b83='%'+_0x36222a[_0xb668('0x5d')]+'%';_0x415aba[_0x2e906d](_0xb668('0x67'),_0x3c1b83,_0x3c1b83,_0x3c1b83);}}else{_0x5ad4cd=_[_0xb668('0x68')](_0x39fa1a,[_0xb668('0x30'),_0xb668('0x69')]);_0x36222a[_0xb668('0x46')]=_0xb668('0x69');_0xc82dfd=as[_0xb668('0x6a')](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd['text'],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}break;case _0xb668('0x6d'):var _0x30b536=_0x36222a[_0xb668('0x5d')][_0xb668('0x64')](',')[_0xb668('0x32')](function(_0x26993b){return Number(_0x26993b);});_0x30b536[_0xb668('0x36')](function(_0x348437){_0x44f280['or'](_0xb668('0x6e'),'%,'+_0x348437+',%');});_0x175106=_['union'](_0x175106,_0x30b536);break;case _0xb668('0x6f'):if(_0x36222a[_0xb668('0x62')]==='$substring'){_0x415aba[_0x2e906d](_0xb668('0x70'),'%'+_0x36222a[_0xb668('0x5d')]+'%',null);}else{_0x5ad4cd=_['find'](_0x39fa1a,[_0xb668('0x30'),_0xb668('0x71')]);_0x36222a['field']=_0xb668('0x71');_0xc82dfd=as['buildExpression'](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd['value'][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}break;case _0xb668('0x73'):_0xc82dfd=as[_0xb668('0x6a')]('me',null,_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x6c')],_0xc82dfd[_0xb668('0x5d')]['end']);break;}}else{var _0xc82dfd=as[_0xb668('0x6a')](_0x17054f,_0x5ad4cd[_0xb668('0x6b')],_0x36222a);_0x415aba[_0x2e906d](_0xc82dfd[_0xb668('0x72')],_0xc82dfd[_0xb668('0x5d')]['start'],_0xc82dfd[_0xb668('0x5d')][_0xb668('0x24')]);}}}else{var _0x276288=_(_0x19de9f['query'])[_0xb668('0x3c')]()[_0xb668('0x32')](function(_0x409c8b){return _[_0xb668('0x74')](_0x39fa1a,['name',_0x409c8b])?_0x409c8b:undefined;})[_0xb668('0x75')]()[_0xb668('0x5d')]();if(!_[_0xb668('0x76')](_0x276288)){_0x276288['forEach'](function(_0xfaafb5){if(_0xfaafb5===_0xb668('0x77')){_0x47a769[_0xb668('0x78')](_0xb668('0x79'),[][_0xb668('0x7a')](_0x19de9f[_0xb668('0x3d')][_0xfaafb5]));}else if(_0xfaafb5===_0xb668('0x7b')){var _0x2ce26f=JSON[_0xb668('0x7c')](_0x19de9f['query'][_0xfaafb5])[_0xb668('0x7d')];var _0x5a9c76=JSON[_0xb668('0x7c')](_0x19de9f['query'][_0xfaafb5])[_0xb668('0x7e')];_0x47a769[_0xb668('0x78')](_0xb668('0x7f'),_0x2ce26f,_0x5a9c76);}else{if(_0x19de9f['query'][_0xfaafb5]===_0xb668('0x80')){_0x47a769[_0xb668('0x78')]('i.'+_0xfaafb5+_0xb668('0x81'));}else{_0x47a769[_0xb668('0x78')]('i.'+_0xfaafb5+_0xb668('0x82'),_0x19de9f[_0xb668('0x3d')][_0xfaafb5]);}}});}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x83')]){if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x83')]==0x1){_0x47a769[_0xb668('0x5e')](_0xb668('0x84'));}else{_0x47a769[_0xb668('0x5e')](_0xb668('0x85'));}}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')]){_0x175106=_[_0xb668('0x87')](_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')])?_0x19de9f[_0xb668('0x3d')]['tag']:new Array(_0x19de9f[_0xb668('0x3d')][_0xb668('0x86')]);_0x175106['forEach'](function(_0x128221){_0x44f280['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x128221+',%');});}if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x88')]){var _0x562f04=_0x19de9f['query'][_0xb668('0x88')][_0xb668('0x89')]('\x5c','\x5c\x5c')[_0xb668('0x89')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x562f04)){_0x415aba['or'](_0xb668('0x8a'),_0x562f04+'%')['or'](_0xb668('0x8b'),_0x562f04+'%');}else{_0x415aba['or'](_0xb668('0x8c'),qs['getFullTextValue'](_0x562f04))['or'](_0xb668('0x8d'),_0x562f04+'%');}}}_0x47a769[_0xb668('0x78')](_0x415aba);_0x47a769[_0xb668('0x8e')](_0xb668('0x8f'));var _0x1dcbf3={'type':db[_0xb668('0x90')][_0xb668('0x91')][_0xb668('0x92')],'raw':!![]};var _0x23ad51=_0x47a769[_0xb668('0x93')]();_0x23ad51[_0xb668('0x46')]('i.id');_0x23ad51[_0xb668('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0xede795[_0xb668('0x94')]){_0xede795[_0xb668('0x94')][_0xb668('0x36')](function(_0x3aaeed){var _0x5dbf71=_0x3aaeed[0x0]===_0xb668('0x95')?_0x3aaeed[0x0]:'i.'+_0x3aaeed[0x0];_0x47a769['order'](_0x5dbf71,_0x3aaeed[0x1]===_0xb668('0x96')?![]:!![]);});}if(!_[_0xb668('0x76')](_0x175106)){_0x47a769[_0xb668('0x5e')](_0x44f280);_0x23ad51['where'](_0xb668('0x97'),_0x175106);}BPromise[_0xb668('0x98')]()[_0xb668('0x2e')](function(){if(!_0x381694){if(_0x19de9f['query'][_0xb668('0x77')])return;_0x23ad51[_0xb668('0x78')](_0xb668('0x99'));_0x47a769[_0xb668('0x78')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x19de9f[_0xb668('0x9a')][_0xb668('0x9b')]!=='agent')return;return _0x19de9f[_0xb668('0x9a')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0xb668('0x2e')](function(_0x35648d){if(_[_0xb668('0x76')](_0x35648d)){_0x23ad51[_0xb668('0x78')](_0xb668('0x9c'));_0x47a769['where']('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x23ad51[_0xb668('0x78')](_0xb668('0x79'),_[_0xb668('0x32')](_0x35648d,'id'));_0x47a769[_0xb668('0x78')](_0xb668('0x79'),_[_0xb668('0x32')](_0x35648d,'id'));}});})[_0xb668('0x2e')](function(){if(_0x19de9f[_0xb668('0x9a')][_0xb668('0x9b')]===_0xb668('0x9d')&&!_0x381694&&!_0x19de9f[_0xb668('0x3d')]['WhatsappAccountId'])return[];return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x23ad51['toString'](),_0x1dcbf3);})[_0xb668('0x2e')](function(_0x4592ca){_0x48888d[_0xb668('0x27')]=_0x4592ca[_0xb668('0x5b')];if(_0x48888d[_0xb668('0x27')]===0x0)return[];return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x14b269['toString'](),_0x1dcbf3)[_0xb668('0x2e')](function(_0x530b92){_0x4874a8=_[_0xb668('0x9f')](_0x530b92,'id');_0x1dcbf3=_[_0xb668('0xa0')](_0x1dcbf3,{'model':db[_0xb668('0xa1')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x19de9f[_0xb668('0x3d')][_0xb668('0x40')]){_0xede795['attributes'][_0xb668('0x36')](function(_0x324066){_0x47a769[_0xb668('0x46')]('i.'+_0x324066);});}else{_0x47a769[_0xb668('0x46')](_0xb668('0xa2'),_0xb668('0x5c'));_0x47a769['field'](_0xb668('0xa3'),_0xb668('0xa4'));_0x47a769[_0xb668('0x46')](_0xb668('0xa5'),_0xb668('0xa6'));_0x47a769[_0xb668('0x46')](_0xb668('0xa7'),_0xb668('0x95'));_0x47a769['field'](_0xb668('0xa8'));_0x47a769[_0xb668('0x46')](_0xb668('0xa9'),'Contact.firstName');_0x47a769[_0xb668('0x46')]('c.lastName',_0xb668('0xaa'));_0x47a769[_0xb668('0x46')](_0xb668('0xab'),_0xb668('0xac'));_0x47a769[_0xb668('0x46')](_0xb668('0xad'),_0xb668('0xae'));_0x47a769['field']('c.mobile',_0xb668('0xaf'));_0x47a769[_0xb668('0x46')](_0xb668('0xb0'),_0xb668('0xb1'));_0x47a769[_0xb668('0x46')](_0xb668('0xb2'),_0xb668('0xb3'));_0x47a769[_0xb668('0x46')](_0xb668('0xb4'),_0xb668('0xb5'));_0x47a769[_0xb668('0x46')](_0xb668('0xb6'),_0xb668('0x34'));}if(_0xede795['limit'])_0x47a769[_0xb668('0x26')](_0xede795[_0xb668('0x26')]);if(_0xede795[_0xb668('0x25')])_0x47a769[_0xb668('0x25')](_0xede795[_0xb668('0x25')]);return db[_0xb668('0x9e')][_0xb668('0x3d')](_0x47a769[_0xb668('0xb7')](),_0x1dcbf3);})['then'](function(_0x1a43da){if(_0x1a43da['length']>0x0)_0x155b43['where'](_0xb668('0xb8'),_[_0xb668('0x32')](_0x1a43da,'id'));return db['sequelize'][_0xb668('0x3d')](_0x155b43['toString'](),_0x1dcbf3)[_0xb668('0x2e')](function(_0x45a77b){var _0xf9c1a6=_['groupBy'](_0x45a77b,_0xb668('0xb9'));var _0x43aec8=[];_0x1a43da[_0xb668('0x36')](function(_0xf5b01c){_0x43aec8['push'](updateWhatsappInteraction(_0xf5b01c,_0x4874a8,_0xf9c1a6));});return BPromise['all'](_0x43aec8);});});})[_0xb668('0x2e')](function(_0xd14e7f){_0x48888d['rows']=_0xd14e7f;return _0x48888d;})[_0xb668('0x2e')](respondWithFilteredResult(_0x5a9a55,_0xede795))['catch'](handleError(_0x5a9a55,null));};exports[_0xb668('0xba')]=function(_0x2f988c,_0x102265){var _0x19d55e={'raw':![],'where':{'id':_0x2f988c['params']['id']}},_0x506197={};_0x506197[_0xb668('0x3b')]=_[_0xb668('0x3c')](db[_0xb668('0xa1')]['rawAttributes']);_0x506197[_0xb668('0x3d')]=_[_0xb668('0x3c')](_0x2f988c[_0xb668('0x3d')]);_0x506197['filters']=_[_0xb668('0x3f')](_0x506197['model'],_0x506197[_0xb668('0x3d')]);_0x19d55e[_0xb668('0x41')]=_[_0xb668('0x3f')](_0x506197[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x2f988c['query']['fields']));_0x19d55e[_0xb668('0x41')]=_0x19d55e[_0xb668('0x41')][_0xb668('0x5b')]?_0x19d55e[_0xb668('0x41')]:_0x506197['model'];if(_0x2f988c['query'][_0xb668('0xbb')]){_0x19d55e[_0xb668('0xbc')]=[{'all':!![]}];}_0x19d55e=_['merge']({},_0x19d55e,_0x2f988c[_0xb668('0xbd')]);return db[_0xb668('0xa1')][_0xb668('0x68')](_0x19d55e)[_0xb668('0x2e')](handleEntityNotFound(_0x102265,null))[_0xb668('0x2e')](respondWithResult(_0x102265,null))[_0xb668('0x37')](handleError(_0x102265,null));};exports[_0xb668('0xbe')]=function(_0x11c949,_0x206546){return db[_0xb668('0xa1')]['create'](_0x11c949[_0xb668('0x73')],{})[_0xb668('0x2e')](respondWithResult(_0x206546,0xc9))[_0xb668('0x37')](handleError(_0x206546,null));};exports[_0xb668('0x2d')]=function(_0x31bec3,_0x34576f){if(_0x31bec3[_0xb668('0x73')]['id']){delete _0x31bec3[_0xb668('0x73')]['id'];}return db[_0xb668('0xa1')][_0xb668('0x68')]({'where':{'id':_0x31bec3['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x34576f,null))[_0xb668('0x2e')](saveUpdates(_0x31bec3['body'],null))[_0xb668('0x2e')](respondWithResult(_0x34576f,null))[_0xb668('0x37')](handleError(_0x34576f,null));};exports[_0xb668('0xbf')]=function(_0x4c599d,_0x1fa9f1){return db[_0xb668('0xa1')]['find']({'where':{'id':_0x4c599d['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x1fa9f1,null))[_0xb668('0x2e')](removeEntity(_0x1fa9f1,null))['catch'](handleError(_0x1fa9f1,null));};exports[_0xb668('0xc0')]=function(_0x5507f9,_0x1a05b8){return db['WhatsappInteraction'][_0xb668('0xc0')]()[_0xb668('0x2e')](respondWithResult(_0x1a05b8,null))[_0xb668('0x37')](handleError(_0x1a05b8,null));};exports[_0xb668('0xc1')]=function(_0x47bf24,_0x37bb97,_0x2f8ae1){return db[_0xb668('0xc2')]['find']({'where':{'id':_0x47bf24['params']['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x37bb97,null))[_0xb668('0x2e')](function(_0x306b03){if(_0x306b03){return _0x306b03[_0xb668('0xc1')](_0x47bf24['body'][_0xb668('0xc3')],_[_0xb668('0xc4')](_0x47bf24[_0xb668('0x73')],['ids','id'])||{});}})[_0xb668('0x2e')](respondWithResult(_0x37bb97,null))[_0xb668('0x37')](handleError(_0x37bb97,null));};exports[_0xb668('0xc5')]=function(_0x4d170f,_0x44bd1d,_0x2b85b0){var _0x3c39dc={'raw':![],'where':{}};var _0x5431a8={};var _0x33d610={'count':0x0,'rows':[]};return db[_0xb668('0xa1')][_0xb668('0xc6')]({'where':{'id':_0x4d170f[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x44bd1d,null))['then'](function(_0x1f636d){if(_0x1f636d){_0x5431a8['model']=_[_0xb668('0x3c')](db['WhatsappMessage'][_0xb668('0x39')]);_0x5431a8[_0xb668('0x3d')]=_[_0xb668('0x3c')](_0x4d170f[_0xb668('0x3d')]);_0x5431a8[_0xb668('0x3e')]=_[_0xb668('0x3f')](_0x5431a8[_0xb668('0x3b')],_0x5431a8[_0xb668('0x3d')]);_0x3c39dc[_0xb668('0x41')]=_['intersection'](_0x5431a8[_0xb668('0x3b')],qs[_0xb668('0x40')](_0x4d170f['query'][_0xb668('0x40')]));_0x3c39dc['attributes']=_0x3c39dc[_0xb668('0x41')][_0xb668('0x5b')]?_0x3c39dc[_0xb668('0x41')]:_0x5431a8['model'];if(!_0x4d170f[_0xb668('0x3d')][_0xb668('0x42')](_0xb668('0x43'))){_0x3c39dc['limit']=qs['limit'](_0x4d170f[_0xb668('0x3d')][_0xb668('0x26')]);_0x3c39dc[_0xb668('0x25')]=qs[_0xb668('0x25')](_0x4d170f[_0xb668('0x3d')][_0xb668('0x25')]);}_0x3c39dc[_0xb668('0x94')]=qs[_0xb668('0x44')](_0x4d170f['query'][_0xb668('0x44')]);_0x3c39dc[_0xb668('0x78')]=qs[_0xb668('0x3e')](_[_0xb668('0xc8')](_0x4d170f['query'],_0x5431a8['filters']));_0x3c39dc[_0xb668('0x78')][_0xb668('0xb9')]=_0x1f636d['id'];if(_0x4d170f[_0xb668('0x3d')]['filter']){_0x3c39dc[_0xb668('0x78')]=_[_0xb668('0xa0')](_0x3c39dc[_0xb668('0x78')],{'$or':_['map'](_0x3c39dc[_0xb668('0x41')],function(_0x43aa75){var _0x468de9={};_0x468de9[_0x43aa75]={'$like':'%'+_0x4d170f[_0xb668('0x3d')][_0xb668('0x88')]+'%'};return _0x468de9;})});}if(_0x4d170f[_0xb668('0x3d')][_0xb668('0x7d')]){var _0x22f997=_0x4d170f[_0xb668('0x3d')][_0xb668('0x7d')][_0xb668('0x64')](',');var _0x301856={};_0x301856[_0x22f997[0x0]]={'$gte':moment(_0x22f997[0x1])[_0xb668('0xc9')](_0xb668('0xca'))};_0x3c39dc[_0xb668('0x78')]=_[_0xb668('0xa0')](_0x3c39dc[_0xb668('0x78')],_0x301856);}_0x3c39dc=_[_0xb668('0xa0')]({},_0x3c39dc,_0x4d170f[_0xb668('0xbd')]);return db[_0xb668('0xc2')][_0xb668('0x27')]({'where':_0x3c39dc['where']})['then'](function(_0x5bc068){_0x33d610[_0xb668('0x27')]=_0x5bc068;if(_0x4d170f[_0xb668('0x3d')][_0xb668('0xbb')]){_0x3c39dc[_0xb668('0xbc')]=[{'all':!![]}];}return db[_0xb668('0xc2')]['findAll'](_0x3c39dc);})[_0xb668('0x2e')](function(_0x459d8d){_0x33d610[_0xb668('0xcb')]=_0x459d8d;return _0x33d610;});}})[_0xb668('0x2e')](respondWithFilteredResult(_0x44bd1d,_0x3c39dc))[_0xb668('0x37')](handleError(_0x44bd1d,null));};exports[_0xb668('0xcc')]=function(_0x36bd15,_0xdbcdbb,_0x312418){return db[_0xb668('0xa1')][_0xb668('0x68')]({'where':{'id':_0x36bd15[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0xdbcdbb,null))[_0xb668('0x2e')](function(_0x524534){if(_0x524534){return _0x524534[_0xb668('0xcd')](_0x36bd15[_0xb668('0x73')]['ids'],_[_0xb668('0xc4')](_0x36bd15['body'],[_0xb668('0xc3'),'id'])||{})['spread'](function(){return db[_0xb668('0x6d')][_0xb668('0xce')]({'attributes':['id',_0xb668('0x30'),_0xb668('0x47')],'where':{'id':_0x36bd15[_0xb668('0x73')][_0xb668('0xc3')]}});})[_0xb668('0x2e')](function(_0x304e6c){socket['emit'](_0xb668('0xcf'),{'id':Number(_0x36bd15['params']['id']),'tags':_0x304e6c||[]});return{'id':Number(_0x36bd15[_0xb668('0xc7')]['id']),'tags':_0x304e6c||[]};});}})[_0xb668('0x2e')](respondWithResult(_0xdbcdbb,null))[_0xb668('0x37')](handleError(_0xdbcdbb,null));};exports[_0xb668('0xd0')]=function(_0x42a8c7,_0x173af0,_0x52daa5){return db[_0xb668('0xa1')]['find']({'where':{'id':_0x42a8c7[_0xb668('0xc7')]['id']}})[_0xb668('0x2e')](handleEntityNotFound(_0x173af0,null))[_0xb668('0x2e')](function(_0x103031){if(_0x103031){return _0x103031[_0xb668('0xd0')](_0x42a8c7[_0xb668('0x3d')]['ids']);}})[_0xb668('0x2e')](respondWithStatusCode(_0x173af0,null))[_0xb668('0x37')](handleError(_0x173af0,null));};exports[_0xb668('0xd1')]=function(_0x43b986,_0x205e7b){var _0x4e6ce1=moment()[_0xb668('0xd2')]()[_0xb668('0xb7')]();var _0x5f4c8d=path[_0xb668('0xd3')](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xd6'),_0xb668('0xd7'));var _0xf0c5d8=path[_0xb668('0xd3')](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xd6'),_0xb668('0xd8'));var _0x36727=path[_0xb668('0xd3')](_0x5f4c8d,_0x4e6ce1);var _0x31d881=util[_0xb668('0xc9')](_0xb668('0xd9'),_0x43b986[_0xb668('0xc7')]['id'],_0x4e6ce1);var _0x3a37bd=path[_0xb668('0xd3')](_0x5f4c8d,_0x31d881);var _0x4c58bb=[];_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0x6f')],'as':_0xb668('0x6f'),'attributes':['id','fullname'],'raw':!![]});_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0xdb')],'as':'Contact','attributes':['id','firstName',_0xb668('0xdc')],'raw':!![]});if(_0x43b986['query']['attachments']){_0x4c58bb[_0xb668('0xda')]({'model':db[_0xb668('0xdd')],'as':_0xb668('0xdd'),'raw':!![]});}var _0x34778e=[{'model':db[_0xb668('0xc2')],'as':_0xb668('0xde'),'attributes':['id',_0xb668('0x73'),_0xb668('0x7b'),_0xb668('0xdf'),_0xb668('0xe0'),_0xb668('0x83')],'include':_0x4c58bb}];_0x34778e[_0xb668('0xda')]({'model':db[_0xb668('0xe1')],'as':_0xb668('0xe2'),'attributes':['id',_0xb668('0x30')]});_0x34778e[_0xb668('0xda')]({'model':db[_0xb668('0x6f')],'as':_0xb668('0xe3'),'attributes':['id',_0xb668('0x33')]});return db['WhatsappInteraction'][_0xb668('0x68')]({'where':{'id':_0x43b986['params']['id']},'include':_0x34778e})[_0xb668('0x2e')](handleEntityNotFound(_0x205e7b,null))[_0xb668('0x2e')](function(_0xf9b14){if(_0xf9b14){var _0x22a70a=_0xf9b14[_0xb668('0xe4')]({'plain':!![]});fs[_0xb668('0xe5')](_0x36727);var _0x992ef0={'channel':'Whatsapp','account':_0x22a70a['Account'][_0xb668('0x30')],'agent':_0x22a70a['Owner']?_0x22a70a[_0xb668('0xe3')]['fullname']:_0xb668('0xe6'),'createdAt':moment(_0x22a70a[_0xb668('0x7b')])['format'](_0xb668('0xca'))[_0xb668('0xb7')](),'closedAt':_0x22a70a[_0xb668('0xe7')]?moment(_0x22a70a[_0xb668('0xe8')])[_0xb668('0xc9')](_0xb668('0xca'))[_0xb668('0xb7')]():'','disposition':_0x22a70a[_0xb668('0xe9')],'messages':_(_0x22a70a[_0xb668('0xde')])[_0xb668('0x88')]({'secret':![]})[_0xb668('0x32')](function(_0x8dbce1){if(_0x8dbce1[_0xb668('0xdd')]){var _0x48c300=path[_0xb668('0xd3')](_0xf0c5d8,_0x8dbce1[_0xb668('0xdd')]['basename']);if(fs['existsSync'](_0x48c300)){fs[_0xb668('0xea')](_0x48c300)[_0xb668('0xeb')](fs[_0xb668('0xec')](path[_0xb668('0xd3')](_0x36727,_0x8dbce1[_0xb668('0xdd')][_0xb668('0xed')])));}}return{'date':moment(_0x8dbce1[_0xb668('0x7b')])['format'](_0xb668('0xca'))[_0xb668('0xb7')](),'sender':_0x8dbce1[_0xb668('0xdf')]===_0xb668('0xee')?_0x8dbce1['User']?_0x8dbce1[_0xb668('0x6f')][_0xb668('0x33')]:_0xb668('0xef'):_0x8dbce1[_0xb668('0x61')][_0xb668('0xf0')]+(_0x8dbce1[_0xb668('0x61')][_0xb668('0xdc')]?'\x20'+_0x8dbce1['Contact'][_0xb668('0xdc')]:''),'body':_0x8dbce1[_0xb668('0xdd')]?_0x8dbce1[_0xb668('0xdd')][_0xb668('0xed')]:_0x8dbce1[_0xb668('0x73')],'direction':_0x8dbce1[_0xb668('0xdf')]===_0xb668('0xee')?'A':'C','secret':_0x8dbce1[_0xb668('0xe0')],'read':_0x8dbce1[_0xb668('0x83')],'attachment':_0x8dbce1[_0xb668('0xdd')]};})[_0xb668('0x5d')]()};return ejs['renderFile'](path['join'](config[_0xb668('0xd4')],_0xb668('0xd5'),_0xb668('0xf1'),_0xb668('0xf2')),{'interaction':_0x992ef0})[_0xb668('0x2e')](function(_0x308224){var _0x592cab=path[_0xb668('0xd3')](_0x36727,_0xb668('0xf3')+_0x22a70a['id']+'-'+_0x4e6ce1+_0xb668('0xf4'));var _0x132417={'path':_0x592cab,'channel':_0xb668('0xf5'),'interactionId':_0x22a70a['id']};return pdf['createPdfFromHTML'](_0x308224,_0x132417);})[_0xb668('0x2e')](function(){return new BPromise(function(_0x460aa8,_0x8867a7){zipdir(_0x36727,{'saveTo':_0x3a37bd},function(_0xe11dfb,_0x13278a){if(_0xe11dfb)return _0x8867a7(_0xe11dfb);return _0x460aa8(_0x13278a);});})[_0xb668('0x2e')](function(){return new BPromise(function(_0x1a91ae,_0x41e468){rimraf(_0x36727,function(_0x573f72){if(_0x573f72)_0x41e468(_0x573f72);return _0x1a91ae();});});})[_0xb668('0x2e')](function(){return _0x205e7b['download'](_0x3a37bd,_0x31d881,function(_0xfb6b3a){if(_0xfb6b3a){console[_0xb668('0xf6')](_0xb668('0xf7'),_0xfb6b3a);}else{fs[_0xb668('0xf8')](_0x3a37bd);}});});});}else{return _0x205e7b[_0xb668('0x22')](0xc8);}})[_0xb668('0x37')](handleError(_0x205e7b,null));};
\ No newline at end of file
+var _0x9933=['err','unlinkSync','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','end','error','name','send','map','fullname','TagIds','Tags','push','catch','index','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','select','field','color','from','u.id','user_has_whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','parseSearch','search','sqlOperator','conditions','find','value','`\x20=\x200','having','Contact','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','order','forEach','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','WhatsappAccountId','sequelize','toString','keyBy','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','rows','show','params','includeAll','include','merge','create','describe','addMessage','omit','ids','getMessages','findOne','WhatsappMessage','hasOwnProperty','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','setTags','spread','emit','removeTags','download','unix','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','CmContact','firstName','Attachment','Messages','direction','secret','Account','Owner','mkdirSync','Whatsapp','closed','closedAt','disposition','basename','System','lastName','downloadInteraction.ejs','transcript-','.pdf','log'];(function(_0x2d514c,_0xf7dce6){var _0x2cd93e=function(_0x41a77f){while(--_0x41a77f){_0x2d514c['push'](_0x2d514c['shift']());}};_0x2cd93e(++_0xf7dce6);}(_0x9933,0xe5));var _0x3993=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x9933[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x3993('0x0'));var rimraf=require(_0x3993('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3993('0x2'));var rp=require('request-promise');var moment=require(_0x3993('0x3'));var BPromise=require(_0x3993('0x4'));var Mustache=require(_0x3993('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x3993('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3993('0x7'));var _=require(_0x3993('0x8'));var squel=require(_0x3993('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3993('0xa'));var toCsv=require(_0x3993('0x6'));var querystring=require(_0x3993('0xb'));var Papa=require(_0x3993('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3993('0xd'));var as=require(_0x3993('0xe'));var pdf=require(_0x3993('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3993('0x10'))(_0x3993('0x11'));var utils=require(_0x3993('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3993('0x13'));var db=require(_0x3993('0x14'))['db'];config[_0x3993('0x15')]=_[_0x3993('0x16')](config[_0x3993('0x15')],{'host':_0x3993('0x17'),'port':0x18eb});var socket=require(_0x3993('0x18'))(new Redis(config[_0x3993('0x15')]));require('./whatsappInteraction.socket')[_0x3993('0x19')](socket);function respondWithStatusCode(_0x283805,_0x5de5c4){_0x5de5c4=_0x5de5c4||0xcc;return function(_0x3426db){if(_0x3426db){return _0x283805[_0x3993('0x1a')](_0x5de5c4);}return _0x283805[_0x3993('0x1b')](_0x5de5c4)['end']();};}function respondWithResult(_0x1279f0,_0x31fa9f){_0x31fa9f=_0x31fa9f||0xc8;return function(_0x8ea867){if(_0x8ea867){return _0x1279f0['status'](_0x31fa9f)[_0x3993('0x1c')](_0x8ea867);}};}function respondWithFilteredResult(_0xf7b678,_0x13569f){return function(_0x56e208){if(_0x56e208){var _0xcfdc67=typeof _0x13569f[_0x3993('0x1d')]===_0x3993('0x1e')&&typeof _0x13569f[_0x3993('0x1f')]===_0x3993('0x1e');var _0x5f0cda=_0x56e208[_0x3993('0x20')];var _0x2bd4c7=_0xcfdc67?0x0:_0x13569f[_0x3993('0x1d')];var _0x389f01=_0xcfdc67?_0x56e208['count']:_0x13569f[_0x3993('0x1d')]+_0x13569f['limit'];var _0x158eb6;if(_0x389f01>=_0x5f0cda){_0x389f01=_0x5f0cda;_0x158eb6=0xc8;}else{_0x158eb6=0xce;}_0xf7b678[_0x3993('0x1b')](_0x158eb6);return _0xf7b678[_0x3993('0x21')](_0x3993('0x22'),_0x2bd4c7+'-'+_0x389f01+'/'+_0x5f0cda)[_0x3993('0x1c')](_0x56e208);}return null;};}function patchUpdates(_0x21da7b){return function(_0x2bca6b){try{jsonpatch[_0x3993('0x23')](_0x2bca6b,_0x21da7b,!![]);}catch(_0x14fbf4){return BPromise['reject'](_0x14fbf4);}return _0x2bca6b[_0x3993('0x24')]();};}function saveUpdates(_0x29cc29,_0x5a7c82){return function(_0xc28a41){if(_0xc28a41){return _0xc28a41[_0x3993('0x25')](_0x29cc29)['then'](function(_0x43e935){return _0x43e935;});}return null;};}function removeEntity(_0x189831,_0x10f6e5){return function(_0x47886c){if(_0x47886c){return _0x47886c[_0x3993('0x26')]()[_0x3993('0x27')](function(){_0x189831[_0x3993('0x1b')](0xcc)[_0x3993('0x28')]();});}};}function handleEntityNotFound(_0x424fc8,_0x392b05){return function(_0x3db4b1){if(!_0x3db4b1){_0x424fc8[_0x3993('0x1a')](0x194);}return _0x3db4b1;};}function handleError(_0x486e55,_0x2f52c4){_0x2f52c4=_0x2f52c4||0x1f4;return function(_0x1c7fe9){logger[_0x3993('0x29')](_0x1c7fe9['stack']);if(_0x1c7fe9[_0x3993('0x2a')]){delete _0x1c7fe9[_0x3993('0x2a')];}_0x486e55['status'](_0x2f52c4)[_0x3993('0x2b')](_0x1c7fe9);};}function getInteractionUsers(_0x5b61e3,_0x1ca9d7){return new BPromise(function(_0x379651,_0x2cf244){try{if(_0x1ca9d7[_0x5b61e3['id']]){_0x5b61e3['Users']=_[_0x3993('0x2c')](_0x1ca9d7[_0x5b61e3['id']],function(_0x180a81){return{'id':_0x180a81['id'],'fullname':_0x180a81[_0x3993('0x2d')]};});}}catch(_0x4128e0){_0x2cf244(_0x4128e0);}_0x379651(_0x5b61e3);});}function getInteractionTags(_0x5adab0,_0x51aaa0){return new BPromise(function(_0xb508bf,_0x3ebf7d){try{if(_0x5adab0[_0x3993('0x2e')]){_0x5adab0[_0x3993('0x2f')]=[];_0x5adab0[_0x3993('0x2e')]['split'](',')['forEach'](function(_0x1b7322){_0x5adab0[_0x3993('0x2f')][_0x3993('0x30')](_0x51aaa0[_0x1b7322]);});}delete _0x5adab0[_0x3993('0x2e')];}catch(_0x1a3a31){_0x3ebf7d(_0x1a3a31);}_0xb508bf(_0x5adab0);});}function updateWhatsappInteraction(_0x3a0471,_0x3f485e,_0x487650){return new BPromise(function(_0x191f63,_0x385398){return getInteractionUsers(_0x3a0471,_0x487650)['then'](function(_0x1f6e27){return getInteractionTags(_0x1f6e27,_0x3f485e);})[_0x3993('0x27')](function(_0x18ef3f){_0x191f63(_0x18ef3f);})[_0x3993('0x31')](function(_0x41d422){_0x385398(_0x41d422);});});}exports[_0x3993('0x32')]=function(_0x5f0893,_0x5bf747){var _0xb8e7bb={},_0x4303f2={},_0x131431={'count':0x0,'rows':[]};var _0x18e8c1=_[_0x3993('0x2c')](db[_0x3993('0x33')][_0x3993('0x34')],function(_0x4cd42a){return{'name':_0x4cd42a[_0x3993('0x35')],'type':_0x4cd42a[_0x3993('0x36')][_0x3993('0x37')]};});_0x4303f2[_0x3993('0x38')]=_[_0x3993('0x2c')](_0x18e8c1,_0x3993('0x2a'));_0x4303f2[_0x3993('0x39')]=_[_0x3993('0x3a')](_0x5f0893[_0x3993('0x39')]);_0x4303f2[_0x3993('0x3b')]=_[_0x3993('0x3c')](_0x4303f2[_0x3993('0x38')],_0x4303f2[_0x3993('0x39')]);_0xb8e7bb[_0x3993('0x3d')]=_[_0x3993('0x3c')](_0x4303f2[_0x3993('0x38')],qs['fields'](_0x5f0893['query'][_0x3993('0x3e')]));_0xb8e7bb[_0x3993('0x3d')]=_0xb8e7bb[_0x3993('0x3d')][_0x3993('0x3f')]?_0xb8e7bb[_0x3993('0x3d')]:_0x4303f2[_0x3993('0x38')];if(!_0x5f0893['query']['hasOwnProperty']('nolimit')){_0xb8e7bb[_0x3993('0x1f')]=qs[_0x3993('0x1f')](_0x5f0893['query'][_0x3993('0x1f')]);_0xb8e7bb[_0x3993('0x1d')]=qs[_0x3993('0x1d')](_0x5f0893[_0x3993('0x39')]['offset']);}_0xb8e7bb['order']=qs[_0x3993('0x40')](_0x5f0893[_0x3993('0x39')][_0x3993('0x40')]);_0xb8e7bb[_0x3993('0x41')]=qs[_0x3993('0x3b')](_['pick'](_0x5f0893[_0x3993('0x39')],_0x4303f2[_0x3993('0x3b')]),_0x18e8c1);var _0x1e7506=[];var _0x71a954=squel[_0x3993('0x42')]()[_0x3993('0x43')]('id')[_0x3993('0x43')](_0x3993('0x2a'))[_0x3993('0x43')](_0x3993('0x44'))[_0x3993('0x45')]('tools_tags');var _0x205e5f=squel[_0x3993('0x42')]()[_0x3993('0x43')](_0x3993('0x46'))[_0x3993('0x43')]('u.fullname')[_0x3993('0x43')]('ui.WhatsappInteractionId')['from'](_0x3993('0x47'),'ui')[_0x3993('0x48')]('users','u','u.id\x20=\x20ui.UserId');var _0x21af4e=squel['select']()[_0x3993('0x45')]('whatsapp_interactions','i')[_0x3993('0x48')](_0x3993('0x49'),'c',_0x3993('0x4a'))[_0x3993('0x48')](_0x3993('0x4b'),'o',_0x3993('0x4c'))['left_join']('whatsapp_accounts','a',_0x3993('0x4d'))[_0x3993('0x48')](_0x3993('0x4e'),'me',_0x3993('0x4f'))[_0x3993('0x48')](_0x3993('0x50'),'it',_0x3993('0x51'))[_0x3993('0x48')](_0x3993('0x52'),'t',_0x3993('0x53'));var _0x3c8f43=squel['expr']();var _0x2b04cf=[];var _0xe9c75b=squel['expr']();var _0x94e356;if(_0x5f0893[_0x3993('0x39')]['search']){_0x94e356=as[_0x3993('0x54')](_0x5f0893[_0x3993('0x39')][_0x3993('0x55')]);var _0x45c8e0=_0x94e356[_0x3993('0x56')];for(var _0x404931=0x0;_0x404931<_0x94e356[_0x3993('0x57')][_0x3993('0x3f')];_0x404931++){var _0x323873=_0x94e356['conditions'][_0x404931];var _0x409000='i';var _0xc7c698=_[_0x3993('0x58')](_0x18e8c1,['name',_0x323873[_0x3993('0x43')]]);if(!_0xc7c698){switch(_0x323873[_0x3993('0x43')]){case'unreadMessages':if(_0x323873[_0x3993('0x59')]==0x1){_0x21af4e['having']('`'+_0x323873['field']+_0x3993('0x5a'));}else{_0x21af4e[_0x3993('0x5b')]('`'+_0x323873['field']+'`\x20>\x200');}break;case _0x3993('0x5c'):if(_0x323873['operator']===_0x3993('0x5d')){if(_0x323873[_0x3993('0x59')][_0x3993('0x5e')]('\x20')[_0x3993('0x3f')]>0x1){_0x3c8f43[_0x45c8e0](_0x3993('0x5f'),qs[_0x3993('0x60')](_0x323873[_0x3993('0x59')]),null);}else{var _0x4840e7='%'+_0x323873['value']+'%';_0x3c8f43[_0x45c8e0]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4840e7,_0x4840e7,_0x4840e7);}}else{_0xc7c698=_[_0x3993('0x58')](_0x18e8c1,['name','ContactId']);_0x323873[_0x3993('0x43')]=_0x3993('0x61');_0x4b690f=as['buildExpression'](_0x409000,_0xc7c698[_0x3993('0x36')],_0x323873);_0x3c8f43[_0x45c8e0](_0x4b690f[_0x3993('0x62')],_0x4b690f['value'][_0x3993('0x63')],_0x4b690f['value'][_0x3993('0x28')]);}break;case _0x3993('0x64'):var _0x12ae19=_0x323873[_0x3993('0x59')][_0x3993('0x5e')](',')[_0x3993('0x2c')](function(_0xb39ac5){return Number(_0xb39ac5);});_0x12ae19['forEach'](function(_0x34cec3){_0xe9c75b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x34cec3+',%');});_0x2b04cf=_['union'](_0x2b04cf,_0x12ae19);break;case _0x3993('0x65'):if(_0x323873['operator']===_0x3993('0x5d')){_0x3c8f43[_0x45c8e0](_0x3993('0x66'),'%'+_0x323873[_0x3993('0x59')]+'%',null);}else{_0xc7c698=_['find'](_0x18e8c1,[_0x3993('0x2a'),_0x3993('0x67')]);_0x323873[_0x3993('0x43')]=_0x3993('0x67');_0x4b690f=as[_0x3993('0x68')](_0x409000,_0xc7c698[_0x3993('0x36')],_0x323873);_0x3c8f43[_0x45c8e0](_0x4b690f[_0x3993('0x62')],_0x4b690f['value'][_0x3993('0x63')],_0x4b690f[_0x3993('0x59')]['end']);}break;case _0x3993('0x69'):_0x4b690f=as[_0x3993('0x68')]('me',null,_0x323873);_0x3c8f43[_0x45c8e0](_0x4b690f['text'],_0x4b690f[_0x3993('0x59')]['start'],_0x4b690f[_0x3993('0x59')]['end']);break;}}else{var _0x4b690f=as[_0x3993('0x68')](_0x409000,_0xc7c698['type'],_0x323873);_0x3c8f43[_0x45c8e0](_0x4b690f[_0x3993('0x62')],_0x4b690f[_0x3993('0x59')][_0x3993('0x63')],_0x4b690f[_0x3993('0x59')]['end']);}}}else{var _0xd1102f=_(_0x5f0893[_0x3993('0x39')])[_0x3993('0x3a')]()['map'](function(_0x19d17a){return _['some'](_0x18e8c1,[_0x3993('0x2a'),_0x19d17a])?_0x19d17a:undefined;})['compact']()[_0x3993('0x59')]();if(!_[_0x3993('0x6a')](_0xd1102f)){_0xd1102f['forEach'](function(_0x30718d){if(_0x30718d==='WhatsappAccountId'){_0x21af4e[_0x3993('0x41')](_0x3993('0x6b'),[][_0x3993('0x6c')](_0x5f0893[_0x3993('0x39')][_0x30718d]));}else if(_0x30718d===_0x3993('0x6d')){var _0x3a167d=JSON[_0x3993('0x6e')](_0x5f0893[_0x3993('0x39')][_0x30718d])[_0x3993('0x6f')];var _0x5c84f8=JSON['parse'](_0x5f0893['query'][_0x30718d])[_0x3993('0x70')];_0x21af4e[_0x3993('0x41')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a167d,_0x5c84f8);}else{if(_0x5f0893[_0x3993('0x39')][_0x30718d]==='null'){_0x21af4e[_0x3993('0x41')]('i.'+_0x30718d+_0x3993('0x71'));}else{_0x21af4e[_0x3993('0x41')]('i.'+_0x30718d+_0x3993('0x72'),_0x5f0893[_0x3993('0x39')][_0x30718d]);}}});}if(_0x5f0893[_0x3993('0x39')][_0x3993('0x73')]){if(_0x5f0893[_0x3993('0x39')]['read']==0x1){_0x21af4e[_0x3993('0x5b')](_0x3993('0x74'));}else{_0x21af4e[_0x3993('0x5b')](_0x3993('0x75'));}}if(_0x5f0893['query'][_0x3993('0x76')]){_0x2b04cf=_[_0x3993('0x77')](_0x5f0893[_0x3993('0x39')][_0x3993('0x76')])?_0x5f0893[_0x3993('0x39')]['tag']:new Array(_0x5f0893['query'][_0x3993('0x76')]);_0x2b04cf['forEach'](function(_0x3b1b44){_0xe9c75b['or'](_0x3993('0x78'),'%,'+_0x3b1b44+',%');});}if(_0x5f0893['query'][_0x3993('0x79')]){var _0x5add6c=_0x5f0893['query']['filter'][_0x3993('0x7a')]('\x5c','\x5c\x5c')[_0x3993('0x7a')](/'/g,'\x27\x27');if(qs[_0x3993('0x7b')](_0x5add6c)){_0x3c8f43['or'](_0x3993('0x7c'),_0x5add6c+'%')['or'](_0x3993('0x7d'),_0x5add6c+'%');}else{_0x3c8f43['or'](_0x3993('0x7e'),qs[_0x3993('0x60')](_0x5add6c))['or'](_0x3993('0x7f'),_0x5add6c+'%');}}}_0x21af4e[_0x3993('0x41')](_0x3c8f43);_0x21af4e[_0x3993('0x80')]('i.id');var _0x5c4ecc={'type':db[_0x3993('0x81')][_0x3993('0x82')][_0x3993('0x83')],'raw':!![]};var _0x44df08=_0x21af4e[_0x3993('0x84')]();_0x44df08['field']('i.id');_0x44df08[_0x3993('0x43')](_0x3993('0x85'),_0x3993('0x86'));if(_0xb8e7bb[_0x3993('0x87')]){_0xb8e7bb[_0x3993('0x87')][_0x3993('0x88')](function(_0x36b85f){var _0x19ff67=_0x36b85f[0x0]===_0x3993('0x89')?_0x36b85f[0x0]:'i.'+_0x36b85f[0x0];_0x21af4e[_0x3993('0x87')](_0x19ff67,_0x36b85f[0x1]===_0x3993('0x8a')?![]:!![]);});}if(!_[_0x3993('0x6a')](_0x2b04cf)){_0x21af4e[_0x3993('0x5b')](_0xe9c75b);_0x44df08['where'](_0x3993('0x8b'),_0x2b04cf);}BPromise[_0x3993('0x8c')]()['then'](function(){if(!_0x94e356){if(_0x5f0893[_0x3993('0x39')]['WhatsappAccountId'])return;_0x44df08[_0x3993('0x41')](_0x3993('0x8d'));_0x21af4e['where']('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5f0893[_0x3993('0x8e')][_0x3993('0x8f')]!==_0x3993('0x90'))return;return _0x5f0893[_0x3993('0x8e')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x3993('0x27')](function(_0x175fa5){if(_[_0x3993('0x6a')](_0x175fa5)){_0x44df08['where'](_0x3993('0x91'));_0x21af4e[_0x3993('0x41')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x44df08[_0x3993('0x41')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x175fa5,'id'));_0x21af4e[_0x3993('0x41')]('i.WhatsappAccountId\x20IN\x20?',_[_0x3993('0x2c')](_0x175fa5,'id'));}});})[_0x3993('0x27')](function(){if(_0x5f0893[_0x3993('0x8e')][_0x3993('0x8f')]==='agent'&&!_0x94e356&&!_0x5f0893['query'][_0x3993('0x92')])return[];return db[_0x3993('0x93')][_0x3993('0x39')](_0x44df08['toString'](),_0x5c4ecc);})['then'](function(_0x5d86f1){_0x131431[_0x3993('0x20')]=_0x5d86f1[_0x3993('0x3f')];if(_0x131431[_0x3993('0x20')]===0x0)return[];return db[_0x3993('0x93')][_0x3993('0x39')](_0x71a954[_0x3993('0x94')](),_0x5c4ecc)[_0x3993('0x27')](function(_0x2c416a){_0x1e7506=_[_0x3993('0x95')](_0x2c416a,'id');_0x5c4ecc=_['merge'](_0x5c4ecc,{'model':db[_0x3993('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5f0893[_0x3993('0x39')][_0x3993('0x3e')]){_0xb8e7bb[_0x3993('0x3d')][_0x3993('0x88')](function(_0x227979){_0x21af4e['field']('i.'+_0x227979);});}else{_0x21af4e['field'](_0x3993('0x85'),_0x3993('0x86'));_0x21af4e[_0x3993('0x43')](_0x3993('0x96'),'Account.key');_0x21af4e['field'](_0x3993('0x97'),_0x3993('0x98'));_0x21af4e['field'](_0x3993('0x99'),_0x3993('0x89'));_0x21af4e[_0x3993('0x43')]('i.*');_0x21af4e['field'](_0x3993('0x9a'),_0x3993('0x9b'));_0x21af4e[_0x3993('0x43')]('c.lastName',_0x3993('0x9c'));_0x21af4e[_0x3993('0x43')]('c.email',_0x3993('0x9d'));_0x21af4e['field'](_0x3993('0x9e'),_0x3993('0x9f'));_0x21af4e[_0x3993('0x43')](_0x3993('0xa0'),_0x3993('0xa1'));_0x21af4e[_0x3993('0x43')](_0x3993('0xa2'),_0x3993('0xa3'));_0x21af4e[_0x3993('0x43')](_0x3993('0xa4'),_0x3993('0xa5'));_0x21af4e['field'](_0x3993('0xa6'),_0x3993('0xa7'));_0x21af4e[_0x3993('0x43')](_0x3993('0xa8'),_0x3993('0x2e'));}if(_0xb8e7bb['limit'])_0x21af4e[_0x3993('0x1f')](_0xb8e7bb[_0x3993('0x1f')]);if(_0xb8e7bb['offset'])_0x21af4e['offset'](_0xb8e7bb[_0x3993('0x1d')]);return db[_0x3993('0x93')]['query'](_0x21af4e['toString'](),_0x5c4ecc);})[_0x3993('0x27')](function(_0x48402c){if(_0x48402c[_0x3993('0x3f')]>0x0)_0x205e5f[_0x3993('0x41')](_0x3993('0xa9'),_['map'](_0x48402c,'id'));return db[_0x3993('0x93')]['query'](_0x205e5f[_0x3993('0x94')](),_0x5c4ecc)['then'](function(_0x29542b){var _0x4f6eb8=_[_0x3993('0xaa')](_0x29542b,_0x3993('0xab'));var _0x36d054=[];_0x48402c[_0x3993('0x88')](function(_0x265c1c){_0x36d054['push'](updateWhatsappInteraction(_0x265c1c,_0x1e7506,_0x4f6eb8));});return BPromise['all'](_0x36d054);});});})[_0x3993('0x27')](function(_0x36fb04){_0x131431[_0x3993('0xac')]=_0x36fb04;return _0x131431;})[_0x3993('0x27')](respondWithFilteredResult(_0x5bf747,_0xb8e7bb))[_0x3993('0x31')](handleError(_0x5bf747,null));};exports[_0x3993('0xad')]=function(_0x2ee3a5,_0x379fc1){var _0x278ca6={'raw':![],'where':{'id':_0x2ee3a5[_0x3993('0xae')]['id']}},_0x163a79={};_0x163a79[_0x3993('0x38')]=_[_0x3993('0x3a')](db['WhatsappInteraction'][_0x3993('0x34')]);_0x163a79[_0x3993('0x39')]=_[_0x3993('0x3a')](_0x2ee3a5[_0x3993('0x39')]);_0x163a79[_0x3993('0x3b')]=_[_0x3993('0x3c')](_0x163a79[_0x3993('0x38')],_0x163a79[_0x3993('0x39')]);_0x278ca6[_0x3993('0x3d')]=_['intersection'](_0x163a79[_0x3993('0x38')],qs[_0x3993('0x3e')](_0x2ee3a5['query'][_0x3993('0x3e')]));_0x278ca6['attributes']=_0x278ca6[_0x3993('0x3d')][_0x3993('0x3f')]?_0x278ca6[_0x3993('0x3d')]:_0x163a79['model'];if(_0x2ee3a5['query'][_0x3993('0xaf')]){_0x278ca6[_0x3993('0xb0')]=[{'all':!![]}];}_0x278ca6=_[_0x3993('0xb1')]({},_0x278ca6,_0x2ee3a5['options']);return db[_0x3993('0x33')][_0x3993('0x58')](_0x278ca6)[_0x3993('0x27')](handleEntityNotFound(_0x379fc1,null))[_0x3993('0x27')](respondWithResult(_0x379fc1,null))['catch'](handleError(_0x379fc1,null));};exports[_0x3993('0xb2')]=function(_0x5d4723,_0x27c1b6){return db['WhatsappInteraction'][_0x3993('0xb2')](_0x5d4723['body'],{})[_0x3993('0x27')](respondWithResult(_0x27c1b6,0xc9))[_0x3993('0x31')](handleError(_0x27c1b6,null));};exports['update']=function(_0x1a9179,_0x4b0f00){if(_0x1a9179[_0x3993('0x69')]['id']){delete _0x1a9179['body']['id'];}return db[_0x3993('0x33')]['find']({'where':{'id':_0x1a9179[_0x3993('0xae')]['id']}})[_0x3993('0x27')](handleEntityNotFound(_0x4b0f00,null))[_0x3993('0x27')](saveUpdates(_0x1a9179[_0x3993('0x69')],null))['then'](respondWithResult(_0x4b0f00,null))[_0x3993('0x31')](handleError(_0x4b0f00,null));};exports[_0x3993('0x26')]=function(_0x340248,_0x53b336){return db[_0x3993('0x33')]['find']({'where':{'id':_0x340248[_0x3993('0xae')]['id']}})['then'](handleEntityNotFound(_0x53b336,null))[_0x3993('0x27')](removeEntity(_0x53b336,null))[_0x3993('0x31')](handleError(_0x53b336,null));};exports['describe']=function(_0x2027c6,_0x2d6861){return db['WhatsappInteraction'][_0x3993('0xb3')]()[_0x3993('0x27')](respondWithResult(_0x2d6861,null))[_0x3993('0x31')](handleError(_0x2d6861,null));};exports[_0x3993('0xb4')]=function(_0xe5fc16,_0x56058d,_0x42b990){return db['WhatsappMessage']['find']({'where':{'id':_0xe5fc16[_0x3993('0xae')]['id']}})['then'](handleEntityNotFound(_0x56058d,null))['then'](function(_0x5493c7){if(_0x5493c7){return _0x5493c7[_0x3993('0xb4')](_0xe5fc16['body']['ids'],_[_0x3993('0xb5')](_0xe5fc16[_0x3993('0x69')],[_0x3993('0xb6'),'id'])||{});}})[_0x3993('0x27')](respondWithResult(_0x56058d,null))['catch'](handleError(_0x56058d,null));};exports[_0x3993('0xb7')]=function(_0x1e8b72,_0x55ce11,_0x42e1ea){var _0x2b689d={'raw':![],'where':{}};var _0x22eaf2={};var _0x90abd5={'count':0x0,'rows':[]};return db[_0x3993('0x33')][_0x3993('0xb8')]({'where':{'id':_0x1e8b72[_0x3993('0xae')]['id']}})[_0x3993('0x27')](handleEntityNotFound(_0x55ce11,null))[_0x3993('0x27')](function(_0x2f98de){if(_0x2f98de){_0x22eaf2['model']=_[_0x3993('0x3a')](db[_0x3993('0xb9')][_0x3993('0x34')]);_0x22eaf2[_0x3993('0x39')]=_[_0x3993('0x3a')](_0x1e8b72[_0x3993('0x39')]);_0x22eaf2[_0x3993('0x3b')]=_[_0x3993('0x3c')](_0x22eaf2[_0x3993('0x38')],_0x22eaf2[_0x3993('0x39')]);_0x2b689d[_0x3993('0x3d')]=_['intersection'](_0x22eaf2[_0x3993('0x38')],qs['fields'](_0x1e8b72[_0x3993('0x39')][_0x3993('0x3e')]));_0x2b689d[_0x3993('0x3d')]=_0x2b689d['attributes'][_0x3993('0x3f')]?_0x2b689d[_0x3993('0x3d')]:_0x22eaf2['model'];if(!_0x1e8b72[_0x3993('0x39')][_0x3993('0xba')](_0x3993('0xbb'))){_0x2b689d[_0x3993('0x1f')]=qs[_0x3993('0x1f')](_0x1e8b72[_0x3993('0x39')]['limit']);_0x2b689d[_0x3993('0x1d')]=qs[_0x3993('0x1d')](_0x1e8b72[_0x3993('0x39')][_0x3993('0x1d')]);}_0x2b689d[_0x3993('0x87')]=qs[_0x3993('0x40')](_0x1e8b72[_0x3993('0x39')][_0x3993('0x40')]);_0x2b689d[_0x3993('0x41')]=qs[_0x3993('0x3b')](_['pick'](_0x1e8b72[_0x3993('0x39')],_0x22eaf2[_0x3993('0x3b')]));_0x2b689d['where'][_0x3993('0xab')]=_0x2f98de['id'];if(_0x1e8b72[_0x3993('0x39')]['filter']){_0x2b689d[_0x3993('0x41')]=_[_0x3993('0xb1')](_0x2b689d[_0x3993('0x41')],{'$or':_[_0x3993('0x2c')](_0x2b689d['attributes'],function(_0x1e1997){var _0x17a092={};_0x17a092[_0x1e1997]={'$like':'%'+_0x1e8b72[_0x3993('0x39')][_0x3993('0x79')]+'%'};return _0x17a092;})});}if(_0x1e8b72[_0x3993('0x39')][_0x3993('0x6f')]){var _0x1ab0f1=_0x1e8b72[_0x3993('0x39')][_0x3993('0x6f')][_0x3993('0x5e')](',');var _0x261922={};_0x261922[_0x1ab0f1[0x0]]={'$gte':moment(_0x1ab0f1[0x1])[_0x3993('0xbc')](_0x3993('0xbd'))};_0x2b689d[_0x3993('0x41')]=_['merge'](_0x2b689d[_0x3993('0x41')],_0x261922);}_0x2b689d=_[_0x3993('0xb1')]({},_0x2b689d,_0x1e8b72[_0x3993('0xbe')]);return db[_0x3993('0xb9')][_0x3993('0x20')]({'where':_0x2b689d['where']})['then'](function(_0xd3337){_0x90abd5[_0x3993('0x20')]=_0xd3337;if(_0x1e8b72['query'][_0x3993('0xaf')]){_0x2b689d[_0x3993('0xb0')]=[{'all':!![]}];}return db[_0x3993('0xb9')][_0x3993('0xbf')](_0x2b689d);})[_0x3993('0x27')](function(_0x3b0410){_0x90abd5[_0x3993('0xac')]=_0x3b0410;return _0x90abd5;});}})['then'](respondWithFilteredResult(_0x55ce11,_0x2b689d))['catch'](handleError(_0x55ce11,null));};exports['addTags']=function(_0x1fc3f9,_0x17e1de,_0x514d54){return db[_0x3993('0x33')]['find']({'where':{'id':_0x1fc3f9[_0x3993('0xae')]['id']}})[_0x3993('0x27')](handleEntityNotFound(_0x17e1de,null))[_0x3993('0x27')](function(_0x5265d6){if(_0x5265d6){return _0x5265d6[_0x3993('0xc0')](_0x1fc3f9['body'][_0x3993('0xb6')],_[_0x3993('0xb5')](_0x1fc3f9[_0x3993('0x69')],[_0x3993('0xb6'),'id'])||{})[_0x3993('0xc1')](function(){return db[_0x3993('0x64')][_0x3993('0xbf')]({'attributes':['id','name',_0x3993('0x44')],'where':{'id':_0x1fc3f9[_0x3993('0x69')][_0x3993('0xb6')]}});})[_0x3993('0x27')](function(_0x417cbe){socket[_0x3993('0xc2')]('whatsappInteractionTags:save',{'id':Number(_0x1fc3f9[_0x3993('0xae')]['id']),'tags':_0x417cbe||[]});return{'id':Number(_0x1fc3f9[_0x3993('0xae')]['id']),'tags':_0x417cbe||[]};});}})[_0x3993('0x27')](respondWithResult(_0x17e1de,null))['catch'](handleError(_0x17e1de,null));};exports[_0x3993('0xc3')]=function(_0x1063b3,_0x5d1de3,_0xcafa69){return db[_0x3993('0x33')][_0x3993('0x58')]({'where':{'id':_0x1063b3[_0x3993('0xae')]['id']}})[_0x3993('0x27')](handleEntityNotFound(_0x5d1de3,null))[_0x3993('0x27')](function(_0x383d7f){if(_0x383d7f){return _0x383d7f[_0x3993('0xc3')](_0x1063b3[_0x3993('0x39')][_0x3993('0xb6')]);}})['then'](respondWithStatusCode(_0x5d1de3,null))[_0x3993('0x31')](handleError(_0x5d1de3,null));};exports[_0x3993('0xc4')]=function(_0x8ad85b,_0x3faca3){var _0x14ee3f=moment()[_0x3993('0xc5')]()['toString']();var _0x513570=path[_0x3993('0xc6')](config[_0x3993('0xc7')],'server',_0x3993('0xc8'),_0x3993('0xc9'));var _0x336468=path['join'](config['root'],_0x3993('0xca'),_0x3993('0xc8'),_0x3993('0xcb'));var _0x4a01bf=path[_0x3993('0xc6')](_0x513570,_0x14ee3f);var _0x53b507=util[_0x3993('0xbc')](_0x3993('0xcc'),_0x8ad85b[_0x3993('0xae')]['id'],_0x14ee3f);var _0x1b1487=path[_0x3993('0xc6')](_0x513570,_0x53b507);var _0x133732=[];_0x133732[_0x3993('0x30')]({'model':db[_0x3993('0x65')],'as':_0x3993('0x65'),'attributes':['id',_0x3993('0x2d')],'raw':!![]});_0x133732[_0x3993('0x30')]({'model':db[_0x3993('0xcd')],'as':_0x3993('0x5c'),'attributes':['id',_0x3993('0xce'),'lastName'],'raw':!![]});if(_0x8ad85b[_0x3993('0x39')][_0x3993('0xcb')]){_0x133732[_0x3993('0x30')]({'model':db[_0x3993('0xcf')],'as':_0x3993('0xcf'),'raw':!![]});}var _0xcea491=[{'model':db[_0x3993('0xb9')],'as':_0x3993('0xd0'),'attributes':['id',_0x3993('0x69'),'createdAt',_0x3993('0xd1'),_0x3993('0xd2'),_0x3993('0x73')],'include':_0x133732}];_0xcea491['push']({'model':db['WhatsappAccount'],'as':_0x3993('0xd3'),'attributes':['id',_0x3993('0x2a')]});_0xcea491[_0x3993('0x30')]({'model':db['User'],'as':_0x3993('0xd4'),'attributes':['id',_0x3993('0x2d')]});return db['WhatsappInteraction'][_0x3993('0x58')]({'where':{'id':_0x8ad85b[_0x3993('0xae')]['id']},'include':_0xcea491})[_0x3993('0x27')](handleEntityNotFound(_0x3faca3,null))[_0x3993('0x27')](function(_0x4d0ce9){if(_0x4d0ce9){var _0x15a20b=_0x4d0ce9['get']({'plain':!![]});fs[_0x3993('0xd5')](_0x4a01bf);var _0x9990ac={'channel':_0x3993('0xd6'),'account':_0x15a20b['Account'][_0x3993('0x2a')],'agent':_0x15a20b['Owner']?_0x15a20b[_0x3993('0xd4')][_0x3993('0x2d')]:'N.A.','createdAt':moment(_0x15a20b[_0x3993('0x6d')])[_0x3993('0xbc')](_0x3993('0xbd'))[_0x3993('0x94')](),'closedAt':_0x15a20b[_0x3993('0xd7')]?moment(_0x15a20b[_0x3993('0xd8')])[_0x3993('0xbc')](_0x3993('0xbd'))['toString']():'','disposition':_0x15a20b[_0x3993('0xd9')],'messages':_(_0x15a20b[_0x3993('0xd0')])[_0x3993('0x79')]({'secret':![]})[_0x3993('0x2c')](function(_0x10d697){if(_0x10d697['Attachment']){var _0x4f3045=path[_0x3993('0xc6')](_0x336468,_0x10d697['Attachment'][_0x3993('0xda')]);if(fs['existsSync'](_0x4f3045)){fs['createReadStream'](_0x4f3045)['pipe'](fs['createWriteStream'](path[_0x3993('0xc6')](_0x4a01bf,_0x10d697[_0x3993('0xcf')][_0x3993('0xda')])));}}return{'date':moment(_0x10d697[_0x3993('0x6d')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x3993('0x94')](),'sender':_0x10d697[_0x3993('0xd1')]==='out'?_0x10d697[_0x3993('0x65')]?_0x10d697['User'][_0x3993('0x2d')]:_0x3993('0xdb'):_0x10d697['Contact']['firstName']+(_0x10d697[_0x3993('0x5c')][_0x3993('0xdc')]?'\x20'+_0x10d697['Contact'][_0x3993('0xdc')]:''),'body':_0x10d697[_0x3993('0xcf')]?_0x10d697[_0x3993('0xcf')][_0x3993('0xda')]:_0x10d697[_0x3993('0x69')],'direction':_0x10d697[_0x3993('0xd1')]==='out'?'A':'C','secret':_0x10d697[_0x3993('0xd2')],'read':_0x10d697['read'],'attachment':_0x10d697[_0x3993('0xcf')]};})[_0x3993('0x59')]()};return ejs['renderFile'](path['join'](config[_0x3993('0xc7')],_0x3993('0xca'),'views',_0x3993('0xdd')),{'interaction':_0x9990ac})[_0x3993('0x27')](function(_0x436af9){var _0x387b4e=path[_0x3993('0xc6')](_0x4a01bf,_0x3993('0xde')+_0x15a20b['id']+'-'+_0x14ee3f+_0x3993('0xdf'));var _0x2db878={'path':_0x387b4e,'channel':_0x3993('0xd6'),'interactionId':_0x15a20b['id']};return pdf['createPdfFromHTML'](_0x436af9,_0x2db878);})[_0x3993('0x27')](function(){return new BPromise(function(_0x162c73,_0x12fb33){zipdir(_0x4a01bf,{'saveTo':_0x1b1487},function(_0x57166c,_0x5a1c92){if(_0x57166c)return _0x12fb33(_0x57166c);return _0x162c73(_0x5a1c92);});})['then'](function(){return new BPromise(function(_0x2c61ca,_0x194a3c){rimraf(_0x4a01bf,function(_0x1dc5ed){if(_0x1dc5ed)_0x194a3c(_0x1dc5ed);return _0x2c61ca();});});})[_0x3993('0x27')](function(){return _0x3faca3[_0x3993('0xc4')](_0x1b1487,_0x53b507,function(_0x38cc7b){if(_0x38cc7b){console[_0x3993('0xe0')](_0x3993('0xe1'),_0x38cc7b);}else{fs[_0x3993('0xe2')](_0x1b1487);}});});});}else{return _0x3faca3[_0x3993('0x1a')](0xc8);}})[_0x3993('0x31')](handleError(_0x3faca3,null));};
\ No newline at end of file
index 25ae48a..3cfeea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','setDataValue','Users'];(function(_0x5cda03,_0x249db1){var _0x4318d5=function(_0x1c839b){while(--_0x1c839b){_0x5cda03['push'](_0x5cda03['shift']());}};_0x4318d5(++_0x249db1);}(_0xb688,0xcf));var _0x8b68=function(_0x3e78e6,_0x145ff8){_0x3e78e6=_0x3e78e6-0x0;var _0x5e67a4=_0xb688[_0x3e78e6];return _0x5e67a4;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var WhatsappMessage=require(_0x8b68('0x0'))['db'][_0x8b68('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x8b68('0x3')](0x0);var events={'afterCreate':_0x8b68('0x4'),'afterUpdate':'update','afterDestroy':_0x8b68('0x5')};function emitEvent(_0x27925d){return function(_0x30f33d,_0x12d40e,_0x583d16){_0x30f33d[_0x8b68('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x37677d){_0x30f33d[_0x8b68('0x7')](_0x8b68('0x8'),_0x37677d[_0x8b68('0x9')](function(_0x132617){return{'id':_0x132617['id']};}));return WhatsappMessage[_0x8b68('0xa')]({'where':{'WhatsappInteractionId':_0x30f33d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8b68('0xb')](function(_0x21d944){_0x30f33d[_0x8b68('0x7')](_0x8b68('0xc'),_0x21d944[_0x8b68('0xd')]);WhatsappInteractionEvents[_0x8b68('0xe')](_0x27925d+':'+_0x30f33d['id'],_0x30f33d);WhatsappInteractionEvents[_0x8b68('0xe')](_0x27925d,_0x30f33d);_0x583d16(null);})['catch'](_0x583d16(null));};}for(var e in events){if(events[_0x8b68('0xf')](e)){var event=events[e];WhatsappInteraction[_0x8b68('0x10')](e,emitEvent(event));}}module[_0x8b68('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xbf83=['../../mysqldb','WhatsappMessage','setMaxListeners','save','setDataValue','map','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','WhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbf83,0x11e));var _0x3bf8=function(_0x51381d,_0x5a61ac){_0x51381d=_0x51381d-0x0;var _0x12163a=_0xbf83[_0x51381d];return _0x12163a;};'use strict';var EventEmitter=require(_0x3bf8('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x3bf8('0x1')];var WhatsappMessage=require(_0x3bf8('0x2'))['db'][_0x3bf8('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x3bf8('0x4')](0x0);var events={'afterCreate':_0x3bf8('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x459aef){return function(_0x2f9c37,_0x18a698,_0x251445){_0x2f9c37['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x168a20){_0x2f9c37[_0x3bf8('0x6')]('Users',_0x168a20[_0x3bf8('0x7')](function(_0x538bec){return{'id':_0x538bec['id']};}));return WhatsappMessage[_0x3bf8('0x8')]({'where':{'WhatsappInteractionId':_0x2f9c37['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3bf8('0x9')](function(_0x1e36df){_0x2f9c37[_0x3bf8('0x6')](_0x3bf8('0xa'),_0x1e36df[_0x3bf8('0xb')]);WhatsappInteractionEvents[_0x3bf8('0xc')](_0x459aef+':'+_0x2f9c37['id'],_0x2f9c37);WhatsappInteractionEvents['emit'](_0x459aef,_0x2f9c37);_0x251445(null);})[_0x3bf8('0xd')](_0x251445(null));};}for(var e in events){if(events[_0x3bf8('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x3bf8('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index fc531ba..3b4b7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1671=['closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed'];(function(_0x2af333,_0x54f43f){var _0x1f22a5=function(_0x15ff1b){while(--_0x15ff1b){_0x2af333['push'](_0x2af333['shift']());}};_0x1f22a5(++_0x54f43f);}(_0x1671,0xda));var _0x1167=function(_0x5ca69b,_0x38712c){_0x5ca69b=_0x5ca69b-0x0;var _0x44434b=_0x1671[_0x5ca69b];return _0x44434b;};'use strict';var _=require(_0x1167('0x0'));var util=require(_0x1167('0x1'));var logger=require(_0x1167('0x2'))(_0x1167('0x3'));var moment=require(_0x1167('0x4'));var BPromise=require(_0x1167('0x5'));var rp=require(_0x1167('0x6'));var fs=require('fs');var path=require(_0x1167('0x7'));var rimraf=require(_0x1167('0x8'));var config=require('../../config/environment');var attributes=require(_0x1167('0x9'));module[_0x1167('0xa')]=function(_0x46fd7e,_0x27f21a){return _0x46fd7e[_0x1167('0xb')](_0x1167('0xc'),attributes,{'tableName':_0x1167('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x48f044,_0x2da76e,_0x17738e){if(_0x48f044[_0x1167('0xe')](_0x1167('0xf'))){_0x48f044[_0x1167('0x10')]=moment()['format'](_0x1167('0x11'));}_0x17738e(null,_0x48f044);}}});};
\ No newline at end of file
+var _0xc9cc=['bluebird','request-promise','path','rimraf','../../config/environment','exports','WhatsappInteraction','whatsapp_interactions','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xc9cc,0x91));var _0xcc9c=function(_0x3bd52b,_0xbbc735){_0x3bd52b=_0x3bd52b-0x0;var _0x1e5b89=_0xc9cc[_0x3bd52b];return _0x1e5b89;};'use strict';var _=require(_0xcc9c('0x0'));var util=require(_0xcc9c('0x1'));var logger=require(_0xcc9c('0x2'))(_0xcc9c('0x3'));var moment=require(_0xcc9c('0x4'));var BPromise=require(_0xcc9c('0x5'));var rp=require(_0xcc9c('0x6'));var fs=require('fs');var path=require(_0xcc9c('0x7'));var rimraf=require(_0xcc9c('0x8'));var config=require(_0xcc9c('0x9'));var attributes=require('./whatsappInteraction.attributes');module[_0xcc9c('0xa')]=function(_0x946852,_0x444fd1){return _0x946852['define'](_0xcc9c('0xb'),attributes,{'tableName':_0xcc9c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4e1666,_0x1faea8,_0x3d6866){if(_0x4e1666['changed']('closed')){_0x4e1666['closedAt']=moment()[_0xcc9c('0xd')](_0xcc9c('0xe'));}_0x3d6866(null,_0x4e1666);}}});};
\ No newline at end of file
index 55e9ea7..ca8eb06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf685=['attributes','limit','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappInteraction,\x20%s,\x20%s','UpdateWhatsappInteraction','WhatsappInteraction','body','options','where'];(function(_0x38e603,_0x5aaf90){var _0x550718=function(_0x4526da){while(--_0x4526da){_0x38e603['push'](_0x38e603['shift']());}};_0x550718(++_0x5aaf90);}(_0xf685,0xa9));var _0x5f68=function(_0x2be9bd,_0xabd12d){_0x2be9bd=_0x2be9bd-0x0;var _0x20c3a1=_0xf685[_0x2be9bd];return _0x20c3a1;};'use strict';var _=require(_0x5f68('0x0'));var util=require(_0x5f68('0x1'));var moment=require(_0x5f68('0x2'));var BPromise=require(_0x5f68('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f68('0x4'));var db=require(_0x5f68('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f68('0x6'))(_0x5f68('0x7'));var config=require(_0x5f68('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x5f68('0x9')]=_['defaults'](config['redis'],{'host':_0x5f68('0xa'),'port':0x18eb});var socket=require(_0x5f68('0xb'))(new Redis(config['redis']));require(_0x5f68('0xc'))[_0x5f68('0xd')](socket);function respondWithRpcPromise(_0x1aba40,_0x6dc422,_0x3c613f){return new BPromise(function(_0x4fa00f,_0x3c4e01){return client[_0x5f68('0xe')](_0x1aba40,_0x3c613f)['then'](function(_0x34cbab){logger[_0x5f68('0xf')]('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x5f68('0x10'));logger[_0x5f68('0x11')](_0x5f68('0x12'),_0x6dc422,_0x5f68('0x10'),JSON[_0x5f68('0x13')](_0x34cbab));if(_0x34cbab[_0x5f68('0x14')]){if(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x15')]===0x1f4){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);return _0x3c4e01(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);}logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x34cbab[_0x5f68('0x14')]['message']);return _0x4fa00f(_0x34cbab[_0x5f68('0x14')][_0x5f68('0x16')]);}else{logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x6dc422,_0x5f68('0x10'));_0x4fa00f(_0x34cbab[_0x5f68('0x17')][_0x5f68('0x16')]);}})[_0x5f68('0x18')](function(_0x198c61){logger[_0x5f68('0x14')](_0x5f68('0x19'),_0x6dc422,_0x198c61);_0x3c4e01(_0x198c61);});});}exports[_0x5f68('0x1a')]=function(_0x3fa20a){var _0x18d86e=this;return new Promise(function(_0x1e7f0f,_0x4a60fa){return db[_0x5f68('0x1b')]['update'](_0x3fa20a[_0x5f68('0x1c')],{'raw':_0x3fa20a[_0x5f68('0x1d')]?_0x3fa20a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fa20a['options']?_0x3fa20a[_0x5f68('0x1d')][_0x5f68('0x1e')]||null:null,'attributes':_0x3fa20a['options']?_0x3fa20a[_0x5f68('0x1d')][_0x5f68('0x1f')]||null:null,'limit':_0x3fa20a[_0x5f68('0x1d')]?_0x3fa20a['options'][_0x5f68('0x20')]||null:null})['then'](function(_0x196354){logger[_0x5f68('0xf')](_0x5f68('0x1a'),_0x3fa20a);logger['debug']('UpdateWhatsappInteraction',_0x3fa20a,JSON[_0x5f68('0x13')](_0x196354));_0x1e7f0f(_0x196354);})[_0x5f68('0x18')](function(_0x2caf74){logger[_0x5f68('0x14')](_0x5f68('0x1a'),_0x2caf74[_0x5f68('0x16')],_0x3fa20a);_0x4a60fa(_0x18d86e[_0x5f68('0x14')](0x1f4,_0x2caf74[_0x5f68('0x16')]));});});};exports[_0x5f68('0x21')]=function(_0x3b536f){return new Promise(function(_0x1041a3,_0x2f1ab5){return db[_0x5f68('0x1b')][_0x5f68('0x22')]({'where':_0x3b536f['options']?_0x3b536f[_0x5f68('0x1d')]['where']||null:null})['then'](function(_0x496253){if(_0x496253){return _0x496253[_0x5f68('0x23')](_0x3b536f[_0x5f68('0x1c')][_0x5f68('0x24')],_[_0x5f68('0x25')](_0x3b536f[_0x5f68('0x1c')],['ids','id'])||{});}})[_0x5f68('0x26')](function(_0x488fa4){logger['info'](_0x5f68('0x27'),_0x3b536f);logger[_0x5f68('0x11')](_0x5f68('0x27'),_0x3b536f,JSON['stringify'](_0x488fa4));_0x1041a3(_0x488fa4);})[_0x5f68('0x18')](function(_0x567ce3){logger[_0x5f68('0x14')]('AddTags',_0x567ce3[_0x5f68('0x16')],_0x3b536f);_0x2f1ab5(_this[_0x5f68('0x14')](0x1f4,_0x567ce3['message']));});});};
\ No newline at end of file
+var _0x9c1c=['info','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','where','attributes','limit','body','ids','spread','AddTags','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','redis','defaults','./whatsappInteraction.socket','register','request','then'];(function(_0x2b8af0,_0x239dd4){var _0x1771bb=function(_0x387854){while(--_0x387854){_0x2b8af0['push'](_0x2b8af0['shift']());}};_0x1771bb(++_0x239dd4);}(_0x9c1c,0x9c));var _0xc9c1=function(_0x28578d,_0xcf5cf0){_0x28578d=_0x28578d-0x0;var _0x524826=_0x9c1c[_0x28578d];return _0x524826;};'use strict';var _=require('lodash');var util=require(_0xc9c1('0x0'));var moment=require('moment');var BPromise=require(_0xc9c1('0x1'));var rs=require(_0xc9c1('0x2'));var fs=require('fs');var Redis=require(_0xc9c1('0x3'));var db=require(_0xc9c1('0x4'))['db'];var utils=require(_0xc9c1('0x5'));var logger=require('../../config/logger')(_0xc9c1('0x6'));var config=require(_0xc9c1('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xc9c1('0x8')]=_[_0xc9c1('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc9c1('0xa'))[_0xc9c1('0xb')](socket);function respondWithRpcPromise(_0x387691,_0x53959b,_0x5779e4){return new BPromise(function(_0x2474d4,_0x5b9f87){return client[_0xc9c1('0xc')](_0x387691,_0x5779e4)[_0xc9c1('0xd')](function(_0x57632c){logger[_0xc9c1('0xe')](_0xc9c1('0xf'),_0x53959b,'request\x20sent');logger[_0xc9c1('0x10')](_0xc9c1('0x11'),_0x53959b,_0xc9c1('0x12'),JSON[_0xc9c1('0x13')](_0x57632c));if(_0x57632c['error']){if(_0x57632c[_0xc9c1('0x14')]['code']===0x1f4){logger['error'](_0xc9c1('0xf'),_0x53959b,_0x57632c[_0xc9c1('0x14')][_0xc9c1('0x15')]);return _0x5b9f87(_0x57632c[_0xc9c1('0x14')][_0xc9c1('0x15')]);}logger[_0xc9c1('0x14')]('WhatsappInteraction,\x20%s,\x20%s',_0x53959b,_0x57632c[_0xc9c1('0x14')]['message']);return _0x2474d4(_0x57632c[_0xc9c1('0x14')][_0xc9c1('0x15')]);}else{logger[_0xc9c1('0xe')](_0xc9c1('0xf'),_0x53959b,_0xc9c1('0x12'));_0x2474d4(_0x57632c['result'][_0xc9c1('0x15')]);}})[_0xc9c1('0x16')](function(_0x4790e5){logger['error'](_0xc9c1('0xf'),_0x53959b,_0x4790e5);_0x5b9f87(_0x4790e5);});});}exports[_0xc9c1('0x17')]=function(_0x1238b3){var _0x6d6705=this;return new Promise(function(_0x196874,_0x5a8ef0){return db[_0xc9c1('0x18')][_0xc9c1('0x19')](_0x1238b3['body'],{'raw':_0x1238b3[_0xc9c1('0x1a')]?_0x1238b3[_0xc9c1('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1238b3[_0xc9c1('0x1a')]?_0x1238b3[_0xc9c1('0x1a')][_0xc9c1('0x1b')]||null:null,'attributes':_0x1238b3[_0xc9c1('0x1a')]?_0x1238b3[_0xc9c1('0x1a')][_0xc9c1('0x1c')]||null:null,'limit':_0x1238b3['options']?_0x1238b3['options'][_0xc9c1('0x1d')]||null:null})['then'](function(_0x55eb28){logger[_0xc9c1('0xe')]('UpdateWhatsappInteraction',_0x1238b3);logger['debug'](_0xc9c1('0x17'),_0x1238b3,JSON[_0xc9c1('0x13')](_0x55eb28));_0x196874(_0x55eb28);})[_0xc9c1('0x16')](function(_0xec4b89){logger[_0xc9c1('0x14')](_0xc9c1('0x17'),_0xec4b89['message'],_0x1238b3);_0x5a8ef0(_0x6d6705['error'](0x1f4,_0xec4b89['message']));});});};exports['AddTagsToWhatsappInteraction']=function(_0x4f9a4f){return new Promise(function(_0x5a9005,_0x55776f){return db['WhatsappInteraction']['find']({'where':_0x4f9a4f[_0xc9c1('0x1a')]?_0x4f9a4f['options'][_0xc9c1('0x1b')]||null:null})['then'](function(_0x2eb131){if(_0x2eb131){return _0x2eb131['addTags'](_0x4f9a4f[_0xc9c1('0x1e')]['ids'],_['omit'](_0x4f9a4f[_0xc9c1('0x1e')],[_0xc9c1('0x1f'),'id'])||{});}})[_0xc9c1('0x20')](function(_0x572572){logger[_0xc9c1('0xe')](_0xc9c1('0x21'),_0x4f9a4f);logger[_0xc9c1('0x10')](_0xc9c1('0x21'),_0x4f9a4f,JSON[_0xc9c1('0x13')](_0x572572));_0x5a9005(_0x572572);})[_0xc9c1('0x16')](function(_0x5eb9eb){logger[_0xc9c1('0x14')](_0xc9c1('0x21'),_0x5eb9eb['message'],_0x4f9a4f);_0x55776f(_this[_0xc9c1('0x14')](0x1f4,_0x5eb9eb[_0xc9c1('0x15')]));});});};
\ No newline at end of file
index f842a21..9f5e825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb1=['register','whatsappInteraction:','./whatsappInteraction.events','save','remove','emit','removeListener'];(function(_0x32cc68,_0x5d2b21){var _0x472ab1=function(_0x14ff66){while(--_0x14ff66){_0x32cc68['push'](_0x32cc68['shift']());}};_0x472ab1(++_0x5d2b21);}(_0x7bb1,0xb1));var _0x17bb=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x7bb1[_0xaa0309];return _0x5de7ce;};'use strict';var WhatsappInteractionEvents=require(_0x17bb('0x0'));var events=[_0x17bb('0x1'),_0x17bb('0x2'),'update'];function createListener(_0x5bddac,_0x40ff43){return function(_0x456986){_0x40ff43[_0x17bb('0x3')](_0x5bddac,_0x456986);};}function removeListener(_0x198a9e,_0x6330d6){return function(){WhatsappInteractionEvents[_0x17bb('0x4')](_0x198a9e,_0x6330d6);};}exports[_0x17bb('0x5')]=function(_0x4f10e5){for(var _0x191de3=0x0,_0x3c459f=events['length'];_0x191de3<_0x3c459f;_0x191de3++){var _0x2201b2=events[_0x191de3];var _0x4991f4=createListener(_0x17bb('0x6')+_0x2201b2,_0x4f10e5);WhatsappInteractionEvents['on'](_0x2201b2,_0x4991f4);}};
\ No newline at end of file
+var _0x865c=['register','whatsappInteraction:','remove','update','emit'];(function(_0x56e791,_0x3976d5){var _0x398398=function(_0x3d1eb2){while(--_0x3d1eb2){_0x56e791['push'](_0x56e791['shift']());}};_0x398398(++_0x3976d5);}(_0x865c,0x17e));var _0xc865=function(_0x1a7190,_0x2b59ce){_0x1a7190=_0x1a7190-0x0;var _0x1f27f2=_0x865c[_0x1a7190];return _0x1f27f2;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=['save',_0xc865('0x0'),_0xc865('0x1')];function createListener(_0x1ef747,_0xebd14e){return function(_0x4f2bf4){_0xebd14e[_0xc865('0x2')](_0x1ef747,_0x4f2bf4);};}function removeListener(_0x375a29,_0x579832){return function(){WhatsappInteractionEvents['removeListener'](_0x375a29,_0x579832);};}exports[_0xc865('0x3')]=function(_0x512ee0){for(var _0x4bb084=0x0,_0x41b7fd=events['length'];_0x4bb084<_0x41b7fd;_0x4bb084++){var _0x4d40ea=events[_0x4bb084];var _0x1aa3e7=createListener(_0xc865('0x4')+_0x4d40ea,_0x512ee0);WhatsappInteractionEvents['on'](_0x4d40ea,_0x1aa3e7);}};
\ No newline at end of file
index 4fa4786..8068dbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b4=['whatsapp','whatsappmessage:create','create','status','put','update','/:id/accept','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x3ca4ed,_0x4672ac){var _0x6f14ca=function(_0x2e106a){while(--_0x2e106a){_0x3ca4ed['push'](_0x3ca4ed['shift']());}};_0x6f14ca(++_0x4672ac);}(_0x92b4,0xf4));var _0x492b=function(_0x41b917,_0x499920){_0x41b917=_0x41b917-0x0;var _0x4baeaf=_0x92b4[_0x41b917];return _0x4baeaf;};'use strict';var multer=require(_0x492b('0x0'));var util=require(_0x492b('0x1'));var path=require(_0x492b('0x2'));var timeout=require(_0x492b('0x3'));var express=require('express');var router=express[_0x492b('0x4')]();var fs_extra=require(_0x492b('0x5'));var auth=require(_0x492b('0x6'));var interaction=require(_0x492b('0x7'));var config=require('../../config/environment');var controller=require(_0x492b('0x8'));router[_0x492b('0x9')]('/',auth['isAuthenticated'](),controller[_0x492b('0xa')]);router[_0x492b('0x9')](_0x492b('0xb'),auth[_0x492b('0xc')](),controller[_0x492b('0xd')]);router[_0x492b('0x9')](_0x492b('0xe'),auth['isAuthenticated'](),controller[_0x492b('0xf')]);router[_0x492b('0x10')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x492b('0x11'),_0x492b('0x12')),controller[_0x492b('0x13')]);router[_0x492b('0x10')]('/:id/status',controller[_0x492b('0x14')]);router[_0x492b('0x15')](_0x492b('0xe'),auth['isAuthenticated'](),controller[_0x492b('0x16')]);router['put'](_0x492b('0x17'),auth[_0x492b('0xc')](),controller[_0x492b('0x18')]);router[_0x492b('0x15')]('/:id/reject',auth[_0x492b('0xc')](),controller[_0x492b('0x19')]);router[_0x492b('0x1a')]('/:id',auth[_0x492b('0xc')](),controller[_0x492b('0x1b')]);module[_0x492b('0x1c')]=router;
\ No newline at end of file
+var _0xbe98=['path','connect-timeout','Router','fs-extra','../../components/auth/service','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','status','put','/:id','/:id/accept','accept','/:id/reject','reject','delete','exports','util'];(function(_0x591a90,_0x5525b0){var _0x551587=function(_0xd6ad8e){while(--_0xd6ad8e){_0x591a90['push'](_0x591a90['shift']());}};_0x551587(++_0x5525b0);}(_0xbe98,0x6b));var _0x8be9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbe98[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x8be9('0x0'));var path=require(_0x8be9('0x1'));var timeout=require(_0x8be9('0x2'));var express=require('express');var router=express[_0x8be9('0x3')]();var fs_extra=require(_0x8be9('0x4'));var auth=require(_0x8be9('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8be9('0x6'));router[_0x8be9('0x7')]('/',auth[_0x8be9('0x8')](),controller[_0x8be9('0x9')]);router['get'](_0x8be9('0xa'),auth[_0x8be9('0x8')](),controller[_0x8be9('0xb')]);router[_0x8be9('0x7')]('/:id',auth[_0x8be9('0x8')](),controller['show']);router[_0x8be9('0xc')]('/',auth[_0x8be9('0x8')](),interaction[_0x8be9('0xd')](_0x8be9('0xe'),_0x8be9('0xf')),controller[_0x8be9('0x10')]);router['post'](_0x8be9('0x11'),controller[_0x8be9('0x12')]);router[_0x8be9('0x13')](_0x8be9('0x14'),auth['isAuthenticated'](),controller['update']);router[_0x8be9('0x13')](_0x8be9('0x15'),auth[_0x8be9('0x8')](),controller[_0x8be9('0x16')]);router['put'](_0x8be9('0x17'),auth[_0x8be9('0x8')](),controller[_0x8be9('0x18')]);router[_0x8be9('0x19')](_0x8be9('0x14'),auth[_0x8be9('0x8')](),controller['destroy']);module[_0x8be9('0x1a')]=router;
\ No newline at end of file
index a02cfce..9d97705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73e1=['STRING','DATE','TEXT','sequelize','exports','BOOLEAN','ENUM','out'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x73e1,0x133));var _0x173e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x73e1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x173e('0x0'));module[_0x173e('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x173e('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x173e('0x3')]('in',_0x173e('0x4')),'defaultValue':_0x173e('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x173e('0x5')]},'readAt':{'type':Sequelize[_0x173e('0x6')]},'secret':{'type':Sequelize[_0x173e('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x173e('0x5')]},'providerResponse':{'type':Sequelize[_0x173e('0x7')]}};
\ No newline at end of file
+var _0x2624=['sequelize','exports','medium','BOOLEAN','ENUM','out','STRING','DATE','TEXT'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2624,0x75));var _0x4262=function(_0x58b342,_0x3bfaba){_0x58b342=_0x58b342-0x0;var _0x5b92f2=_0x2624[_0x58b342];return _0x5b92f2;};'use strict';var Sequelize=require(_0x4262('0x0'));module[_0x4262('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4262('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4262('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4262('0x4')]('in',_0x4262('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x4262('0x6')](0xbe)},'phone':{'type':Sequelize[_0x4262('0x6')]},'readAt':{'type':Sequelize[_0x4262('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x4262('0x8')]}};
\ No newline at end of file
index d38cc2a..06838b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4eb=['motionChannel','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','json','limit','undefined','count','offset','set','apply','update','then','destroy','end','stack','name','send','index','WhatsappMessage','type','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','intersection','find','create','body','params','whatsapp-interactions','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','isNil','format','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','email','manual','SIP/%s','channel','event','acceptmessage','reject','WhatsappInteractionId','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','SELECT','interface'];(function(_0x15dd57,_0x1237e3){var _0x703f49=function(_0x2a999f){while(--_0x2a999f){_0x15dd57['push'](_0x15dd57['shift']());}};_0x703f49(++_0x1237e3);}(_0xc4eb,0x92));var _0xbc4e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc4eb[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc4e('0x0'));var zipdir=require(_0xbc4e('0x1'));var jsonpatch=require(_0xbc4e('0x2'));var rp=require(_0xbc4e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbc4e('0x4'));var util=require(_0xbc4e('0x5'));var path=require(_0xbc4e('0x6'));var sox=require('sox');var csv=require(_0xbc4e('0x7'));var ejs=require(_0xbc4e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbc4e('0x9'));var squel=require(_0xbc4e('0xa'));var crypto=require(_0xbc4e('0xb'));var jsforce=require(_0xbc4e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbc4e('0xd'));var Papa=require(_0xbc4e('0xe'));var Redis=require('ioredis');var authService=require(_0xbc4e('0xf'));var qs=require(_0xbc4e('0x10'));var as=require(_0xbc4e('0x11'));var hardwareService=require(_0xbc4e('0x12'));var logger=require(_0xbc4e('0x13'))('api');var utils=require(_0xbc4e('0x14'));var config=require(_0xbc4e('0x15'));var licenseUtil=require(_0xbc4e('0x16'));var db=require(_0xbc4e('0x17'))['db'];config[_0xbc4e('0x18')]=_[_0xbc4e('0x19')](config[_0xbc4e('0x18')],{'host':_0xbc4e('0x1a'),'port':0x18eb});var socket=require(_0xbc4e('0x1b'))(new Redis(config[_0xbc4e('0x18')]));require(_0xbc4e('0x1c'))[_0xbc4e('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0xbc4e('0x1e')][_0xbc4e('0x1f')]({'port':0x232c});var client9002=jayson[_0xbc4e('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bf8ca,_0x138a83,_0x3c017f,_0x8a6359){return new BPromise(function(_0x26d289,_0x121153){var _0x4b7531=_0x8a6359||client;return _0x4b7531['request'](_0x1bf8ca,_0x3c017f)['then'](function(_0x54e492){logger[_0xbc4e('0x20')](_0xbc4e('0x21'),_0x138a83,'request\x20sent');logger[_0xbc4e('0x22')](_0xbc4e('0x23'),_0x138a83,_0xbc4e('0x24'),JSON[_0xbc4e('0x25')](_0x54e492));if(_0x54e492[_0xbc4e('0x26')]){if(_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x27')]===0x1f4){logger['error'](_0xbc4e('0x21'),_0x138a83,_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);return _0x121153(_0x54e492['error'][_0xbc4e('0x28')]);}logger[_0xbc4e('0x26')](_0xbc4e('0x21'),_0x138a83,_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);return _0x26d289(_0x54e492[_0xbc4e('0x26')][_0xbc4e('0x28')]);}else{logger[_0xbc4e('0x20')](_0xbc4e('0x21'),_0x138a83,_0xbc4e('0x24'));_0x26d289(_0x54e492['result'][_0xbc4e('0x28')]);}})[_0xbc4e('0x29')](function(_0x163494){logger[_0xbc4e('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x138a83,_0x163494);_0x121153(_0x163494);});});}function respondWithStatusCode(_0x130be4,_0x49017f){_0x49017f=_0x49017f||0xcc;return function(_0x21891c){if(_0x21891c){return _0x130be4[_0xbc4e('0x2a')](_0x49017f);}return _0x130be4[_0xbc4e('0x2b')](_0x49017f)['end']();};}function respondWithResult(_0x37ec7f,_0x32452d){_0x32452d=_0x32452d||0xc8;return function(_0x4e4578){if(_0x4e4578){return _0x37ec7f[_0xbc4e('0x2b')](_0x32452d)[_0xbc4e('0x2c')](_0x4e4578);}};}function respondWithFilteredResult(_0x4ea377,_0x18c167){return function(_0x5cf901){if(_0x5cf901){var _0x1ea125=typeof _0x18c167['offset']==='undefined'&&typeof _0x18c167[_0xbc4e('0x2d')]===_0xbc4e('0x2e');var _0x41d89c=_0x5cf901[_0xbc4e('0x2f')];var _0x820fe=_0x1ea125?0x0:_0x18c167[_0xbc4e('0x30')];var _0x422f29=_0x1ea125?_0x5cf901[_0xbc4e('0x2f')]:_0x18c167[_0xbc4e('0x30')]+_0x18c167[_0xbc4e('0x2d')];var _0x348f4b;if(_0x422f29>=_0x41d89c){_0x422f29=_0x41d89c;_0x348f4b=0xc8;}else{_0x348f4b=0xce;}_0x4ea377[_0xbc4e('0x2b')](_0x348f4b);return _0x4ea377[_0xbc4e('0x31')]('Content-Range',_0x820fe+'-'+_0x422f29+'/'+_0x41d89c)[_0xbc4e('0x2c')](_0x5cf901);}return null;};}function patchUpdates(_0x45bbee){return function(_0x5abd9c){try{jsonpatch[_0xbc4e('0x32')](_0x5abd9c,_0x45bbee,!![]);}catch(_0x199142){return BPromise['reject'](_0x199142);}return _0x5abd9c['save']();};}function saveUpdates(_0x409644,_0x138935){return function(_0x475387){if(_0x475387){return _0x475387[_0xbc4e('0x33')](_0x409644)[_0xbc4e('0x34')](function(_0x14393e){return _0x14393e;});}return null;};}function removeEntity(_0x38a2ae,_0x49b861){return function(_0x4e33e5){if(_0x4e33e5){return _0x4e33e5[_0xbc4e('0x35')]()['then'](function(){_0x38a2ae[_0xbc4e('0x2b')](0xcc)[_0xbc4e('0x36')]();});}};}function handleEntityNotFound(_0x1859df,_0x5114dc){return function(_0x1aa3ac){if(!_0x1aa3ac){_0x1859df[_0xbc4e('0x2a')](0x194);}return _0x1aa3ac;};}function handleError(_0x2689a2,_0x10207f){_0x10207f=_0x10207f||0x1f4;return function(_0xd95075){logger[_0xbc4e('0x26')](_0xd95075[_0xbc4e('0x37')]);if(_0xd95075[_0xbc4e('0x38')]){delete _0xd95075[_0xbc4e('0x38')];}_0x2689a2[_0xbc4e('0x2b')](_0x10207f)[_0xbc4e('0x39')](_0xd95075);};}exports[_0xbc4e('0x3a')]=function(_0x5313f6,_0x218318){var _0x863abb={},_0x160cbc={},_0x5e7086={'count':0x0,'rows':[]};var _0x22fe66=_['map'](db[_0xbc4e('0x3b')]['rawAttributes'],function(_0x47d2b3){return{'name':_0x47d2b3['fieldName'],'type':_0x47d2b3[_0xbc4e('0x3c')]['key']};});_0x160cbc['model']=_['map'](_0x22fe66,_0xbc4e('0x38'));_0x160cbc[_0xbc4e('0x3d')]=_[_0xbc4e('0x3e')](_0x5313f6[_0xbc4e('0x3d')]);_0x160cbc[_0xbc4e('0x3f')]=_['intersection'](_0x160cbc['model'],_0x160cbc[_0xbc4e('0x3d')]);_0x863abb[_0xbc4e('0x40')]=_['intersection'](_0x160cbc[_0xbc4e('0x41')],qs['fields'](_0x5313f6['query'][_0xbc4e('0x42')]));_0x863abb[_0xbc4e('0x40')]=_0x863abb[_0xbc4e('0x40')][_0xbc4e('0x43')]?_0x863abb['attributes']:_0x160cbc[_0xbc4e('0x41')];if(!_0x5313f6[_0xbc4e('0x3d')][_0xbc4e('0x44')](_0xbc4e('0x45'))){_0x863abb[_0xbc4e('0x2d')]=qs[_0xbc4e('0x2d')](_0x5313f6['query']['limit']);_0x863abb[_0xbc4e('0x30')]=qs['offset'](_0x5313f6[_0xbc4e('0x3d')]['offset']);}_0x863abb[_0xbc4e('0x46')]=qs['sort'](_0x5313f6['query'][_0xbc4e('0x47')]);_0x863abb[_0xbc4e('0x48')]=qs[_0xbc4e('0x3f')](_['pick'](_0x5313f6['query'],_0x160cbc[_0xbc4e('0x3f')]),_0x22fe66);if(_0x5313f6[_0xbc4e('0x3d')][_0xbc4e('0x49')]){_0x863abb[_0xbc4e('0x48')]=_[_0xbc4e('0x4a')](_0x863abb['where'],{'$or':_[_0xbc4e('0x4b')](_0x22fe66,function(_0x96afd1){if(_0x96afd1[_0xbc4e('0x3c')]!==_0xbc4e('0x4c')){var _0x2c5755={};_0x2c5755[_0x96afd1[_0xbc4e('0x38')]]={'$like':'%'+_0x5313f6['query'][_0xbc4e('0x49')]+'%'};return _0x2c5755;}})});}_0x863abb=_['merge']({},_0x863abb,_0x5313f6[_0xbc4e('0x4d')]);var _0x333538={'where':_0x863abb[_0xbc4e('0x48')]};return db[_0xbc4e('0x3b')][_0xbc4e('0x2f')](_0x333538)[_0xbc4e('0x34')](function(_0x2f9804){_0x5e7086[_0xbc4e('0x2f')]=_0x2f9804;if(_0x5313f6['query'][_0xbc4e('0x4e')]){_0x863abb[_0xbc4e('0x4f')]=[{'all':!![]}];}return db[_0xbc4e('0x3b')][_0xbc4e('0x50')](_0x863abb);})[_0xbc4e('0x34')](function(_0x1382ad){_0x5e7086[_0xbc4e('0x51')]=_0x1382ad;return _0x5e7086;})['then'](respondWithFilteredResult(_0x218318,_0x863abb))[_0xbc4e('0x29')](handleError(_0x218318,null));};exports[_0xbc4e('0x52')]=function(_0x349809,_0x1ea19a){var _0x25b09a={'raw':!![],'where':{'id':_0x349809['params']['id']}},_0x217afb={};_0x217afb[_0xbc4e('0x41')]=_['keys'](db[_0xbc4e('0x3b')][_0xbc4e('0x53')]);_0x217afb[_0xbc4e('0x3d')]=_[_0xbc4e('0x3e')](_0x349809[_0xbc4e('0x3d')]);_0x217afb[_0xbc4e('0x3f')]=_[_0xbc4e('0x54')](_0x217afb[_0xbc4e('0x41')],_0x217afb[_0xbc4e('0x3d')]);_0x25b09a[_0xbc4e('0x40')]=_['intersection'](_0x217afb[_0xbc4e('0x41')],qs['fields'](_0x349809[_0xbc4e('0x3d')][_0xbc4e('0x42')]));_0x25b09a['attributes']=_0x25b09a[_0xbc4e('0x40')][_0xbc4e('0x43')]?_0x25b09a[_0xbc4e('0x40')]:_0x217afb['model'];if(_0x349809['query'][_0xbc4e('0x4e')]){_0x25b09a[_0xbc4e('0x4f')]=[{'all':!![]}];}_0x25b09a=_[_0xbc4e('0x4a')]({},_0x25b09a,_0x349809['options']);return db[_0xbc4e('0x3b')][_0xbc4e('0x55')](_0x25b09a)[_0xbc4e('0x34')](handleEntityNotFound(_0x1ea19a,null))['then'](respondWithResult(_0x1ea19a,null))[_0xbc4e('0x29')](handleError(_0x1ea19a,null));};exports[_0xbc4e('0x56')]=function(_0x371ee1,_0x334452){return db[_0xbc4e('0x3b')][_0xbc4e('0x56')](_0x371ee1['body'],{})[_0xbc4e('0x34')](respondWithResult(_0x334452,0xc9))[_0xbc4e('0x29')](handleError(_0x334452,null));};exports[_0xbc4e('0x33')]=function(_0x1165c4,_0x191eeb){if(_0x1165c4[_0xbc4e('0x57')]['id']){delete _0x1165c4[_0xbc4e('0x57')]['id'];}return db['WhatsappMessage'][_0xbc4e('0x55')]({'where':{'id':_0x1165c4[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x191eeb,null))['then'](saveUpdates(_0x1165c4[_0xbc4e('0x57')],null))[_0xbc4e('0x34')](respondWithResult(_0x191eeb,null))[_0xbc4e('0x29')](handleError(_0x191eeb,null));};exports[_0xbc4e('0x35')]=function(_0x392d83,_0x27bd7f){return db[_0xbc4e('0x3b')][_0xbc4e('0x55')]({'where':{'id':_0x392d83[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x27bd7f,null))[_0xbc4e('0x34')](removeEntity(_0x27bd7f,null))['catch'](handleError(_0x27bd7f,null));};exports['describe']=function(_0x45a418,_0x43697c){return db[_0xbc4e('0x3b')]['describe']()[_0xbc4e('0x34')](respondWithResult(_0x43697c,null))['catch'](handleError(_0x43697c,null));};var interaction_log=require(_0xbc4e('0x13'))(_0xbc4e('0x59'));exports[_0xbc4e('0x5a')]=function(_0x40d19f,_0x2b3392,_0x23e0a9){var _0x523b76={'agent':{},'channel':_0xbc4e('0x5b')};if(_0x40d19f[_0xbc4e('0x57')]['id']){delete _0x40d19f[_0xbc4e('0x57')]['id'];}_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5c')]=!![];_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5d')]=moment()['format'](_0xbc4e('0x5e'));_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5f')]=_0x40d19f['body'][_0xbc4e('0x5f')]||_0x40d19f[_0xbc4e('0x60')]['id'];_0x523b76[_0xbc4e('0x61')]['id']=_0x40d19f['body'][_0xbc4e('0x5f')];return db[_0xbc4e('0x3b')]['find']({'where':{'id':_0x40d19f['params']['id'],'UserId':null}})[_0xbc4e('0x34')](handleEntityNotFound(_0x2b3392,null))[_0xbc4e('0x34')](saveUpdates(_0x40d19f[_0xbc4e('0x57')],null))[_0xbc4e('0x34')](function(_0x6d1ea9){if(_0x6d1ea9){_0x523b76[_0xbc4e('0x28')]=_0x6d1ea9[_0xbc4e('0x62')]({'plain':!![]});return db[_0xbc4e('0x63')][_0xbc4e('0x55')]({'where':{'id':_0x6d1ea9['WhatsappInteractionId']}});}return null;})[_0xbc4e('0x34')](handleEntityNotFound(_0x2b3392,null))[_0xbc4e('0x34')](function(_0x36fd3f){if(_0x36fd3f){return _0x36fd3f['update']({'UserId':_0x40d19f[_0xbc4e('0x57')]['UserId'],'read1stAt':_[_0xbc4e('0x64')](_0x36fd3f['read1stAt'])?moment()[_0xbc4e('0x65')](_0xbc4e('0x5e')):undefined});}return null;})[_0xbc4e('0x34')](function(_0x1cd2ad){if(_0x1cd2ad){_0x523b76[_0xbc4e('0x66')]=_0x1cd2ad['get']({'plain':!![]});interaction_log[_0xbc4e('0x20')](_0xbc4e('0x67'),_0x40d19f[_0xbc4e('0x60')]['id'],_0x40d19f['user'][_0xbc4e('0x38')],_0x40d19f[_0xbc4e('0x60')][_0xbc4e('0x68')],_0x523b76[_0xbc4e('0x66')]['id'],_0x40d19f[_0xbc4e('0x57')]?JSON[_0xbc4e('0x25')](_0x40d19f[_0xbc4e('0x57')]):_0xbc4e('0x69'));return respondWithRpcPromise(_0xbc4e('0x6a'),_0xbc4e('0x6b'),_0x523b76);}return null;})[_0xbc4e('0x34')](function(_0x390ed8){var _0x48dc15=_0xbc4e('0x6c')+_0x390ed8[_0xbc4e('0x28')][_0xbc4e('0x6d')];return db[_0xbc4e('0x6e')]['query'](_0x48dc15,{'type':db['Sequelize'][_0xbc4e('0x6f')]['SELECT'],'raw':!![]})[_0xbc4e('0x34')](function(_0x2ba537){return _0x2ba537;});})[_0xbc4e('0x34')](function(_0x43498c){if(_0x43498c){_0x523b76['message']['contact']=_0x43498c[0x0];if(!_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x5f')])return;return db['User'][_0xbc4e('0x55')]({'where':{'id':_0x40d19f[_0xbc4e('0x57')]['UserId'],'role':_0xbc4e('0x61')},'attributes':['id','name','fullname',_0xbc4e('0x70'),'internal'],'raw':!![]});}return null;})[_0xbc4e('0x34')](function(_0x11b22d){if(!_0x11b22d)return null;_0x523b76[_0xbc4e('0x28')][_0xbc4e('0x61')]=_0x11b22d;return _0x523b76;})[_0xbc4e('0x34')](function(_0x37efa3){if(_0x37efa3){if(_0x40d19f[_0xbc4e('0x57')][_0xbc4e('0x71')]){_0x523b76[_0xbc4e('0x28')]['interface']=util['format'](_0xbc4e('0x72'),_0x40d19f['user'][_0xbc4e('0x38')]);_0x523b76[_0xbc4e('0x28')]['channel']=_0x523b76[_0xbc4e('0x73')];_0x523b76[_0xbc4e('0x28')]['motionChannel']=_0x523b76['channel'];_0x523b76[_0xbc4e('0x28')][_0xbc4e('0x74')]=_0xbc4e('0x5a');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xbc4e('0x75'),'message':_0x523b76[_0xbc4e('0x28')]},client9002)[_0xbc4e('0x34')](function(){return _0x523b76;});}return _0x523b76;}return null;})[_0xbc4e('0x34')](respondWithResult(_0x2b3392,null))[_0xbc4e('0x29')](handleError(_0x2b3392,null));};var interaction_log=require(_0xbc4e('0x13'))(_0xbc4e('0x59'));exports[_0xbc4e('0x76')]=function(_0x2201ba,_0x14ff68,_0x2695a5){var _0x4e6e60={'agent':{},'channel':'whatsapp'};if(_0x2201ba[_0xbc4e('0x57')]['id']){delete _0x2201ba[_0xbc4e('0x57')]['id'];}_0x2201ba[_0xbc4e('0x57')]['UserId']=_0x2201ba[_0xbc4e('0x57')][_0xbc4e('0x5f')]||_0x2201ba[_0xbc4e('0x60')]['id'];_0x4e6e60[_0xbc4e('0x61')]['id']=_0x2201ba[_0xbc4e('0x57')][_0xbc4e('0x5f')];return db['WhatsappMessage'][_0xbc4e('0x55')]({'where':{'id':_0x2201ba[_0xbc4e('0x58')]['id'],'UserId':null}})[_0xbc4e('0x34')](handleEntityNotFound(_0x14ff68,null))['then'](function(_0x4d022b){if(_0x4d022b){_0x4e6e60[_0xbc4e('0x28')]=_0x4d022b[_0xbc4e('0x62')]({'plain':!![]});return db[_0xbc4e('0x63')][_0xbc4e('0x55')]({'where':{'id':_0x4d022b[_0xbc4e('0x77')]}});}return null;})[_0xbc4e('0x34')](handleEntityNotFound(_0x14ff68,null))[_0xbc4e('0x34')](function(_0x97d646){if(_0x97d646){_0x4e6e60[_0xbc4e('0x66')]=_0x97d646[_0xbc4e('0x62')]({'plain':!![]});interaction_log['info'](_0xbc4e('0x78'),_0x2201ba[_0xbc4e('0x60')]['id'],_0x2201ba['user']['name'],_0x2201ba[_0xbc4e('0x60')][_0xbc4e('0x68')],_0x4e6e60[_0xbc4e('0x66')]['id'],_0x2201ba[_0xbc4e('0x57')]?JSON[_0xbc4e('0x25')](_0x2201ba[_0xbc4e('0x57')]):_0xbc4e('0x69'));return respondWithRpcPromise(_0xbc4e('0x79'),_0xbc4e('0x7a'),_0x4e6e60);}return null;})[_0xbc4e('0x34')](function(_0x592e52){var _0x66a04c=_0xbc4e('0x6c')+_0x592e52[_0xbc4e('0x28')]['ContactId'];return db[_0xbc4e('0x6e')][_0xbc4e('0x3d')](_0x66a04c,{'type':db[_0xbc4e('0x7b')][_0xbc4e('0x6f')][_0xbc4e('0x7c')],'raw':!![]})[_0xbc4e('0x34')](function(_0x4fdc73){return _0x4fdc73;});})[_0xbc4e('0x34')](function(_0x22ba1a){if(_0x22ba1a){_0x4e6e60[_0xbc4e('0x28')]['contact']=_0x22ba1a[0x0];if(!_0x2201ba['body'][_0xbc4e('0x5f')])return;return db['User']['find']({'where':{'id':_0x2201ba[_0xbc4e('0x57')]['UserId'],'role':_0xbc4e('0x61')},'attributes':['id','name','fullname',_0xbc4e('0x70'),'internal'],'raw':!![]});}return null;})['then'](function(_0x5bc720){if(!_0x5bc720)return null;_0x4e6e60[_0xbc4e('0x28')][_0xbc4e('0x61')]=_0x5bc720;return _0x4e6e60;})[_0xbc4e('0x34')](function(_0xef9eda){if(_0xef9eda){_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x7d')]=util[_0xbc4e('0x65')](_0xbc4e('0x72'),_0x2201ba['user'][_0xbc4e('0x38')]);_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x73')]=_0x4e6e60[_0xbc4e('0x73')];_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x7e')]=_0x4e6e60[_0xbc4e('0x73')];_0xef9eda[_0xbc4e('0x28')][_0xbc4e('0x74')]=_0xbc4e('0x76');respondWithRpcPromise(_0xbc4e('0x7f'),_0xbc4e('0x7f'),{'event':_0xbc4e('0x80'),'message':_0xef9eda[_0xbc4e('0x28')]},client9002);return _0x4e6e60;}return null;})['then'](respondWithResult(_0x14ff68,null))['catch'](handleError(_0x14ff68,null));};exports[_0xbc4e('0x2b')]=function(_0x472db4,_0x3d3d16,_0x5d3cff){if(_0x472db4['body']['id']){delete _0x472db4[_0xbc4e('0x57')]['id'];}var _0x41303b;return db[_0xbc4e('0x3b')]['find']({'where':{'id':_0x472db4[_0xbc4e('0x58')]['id']}})[_0xbc4e('0x34')](handleEntityNotFound(_0x3d3d16,null))[_0xbc4e('0x34')](function(_0xf72f99){if(_0xf72f99){_0x41303b=_0xf72f99;return db[_0xbc4e('0x81')][_0xbc4e('0x55')]({'where':{'id':_0xf72f99[_0xbc4e('0x82')]}});}})[_0xbc4e('0x34')](handleEntityNotFound(_0x3d3d16,null))[_0xbc4e('0x34')](function(_0x4023fe){if(_0x4023fe){logger[_0xbc4e('0x22')](_0xbc4e('0x83'),_0xbc4e('0x2b'),_0xbc4e('0x84'),_0x4023fe['type'],util['inspect'](_0x472db4[_0xbc4e('0x57')],{'showHidden':![],'depth':null}));switch(_0x4023fe['type']){case _0xbc4e('0x85'):if(_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x86')]&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x86')]===_0x41303b['messageId']&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x87')]&&_0x472db4[_0xbc4e('0x57')][_0xbc4e('0x87')]===_0xbc4e('0x5c')){return _0x41303b[_0xbc4e('0x33')]({'read':!![]});}else{logger[_0xbc4e('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xbc4e('0x2b'),_0xbc4e('0x85'),util['inspect'](_0x472db4[_0xbc4e('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x41303b;}})[_0xbc4e('0x34')](respondWithResult(_0x3d3d16,null))[_0xbc4e('0x29')](handleError(_0x3d3d16,null));};
\ No newline at end of file
+var _0x34f2=['fullname','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','reject','whatsapp','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','QueryTypes','internal','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','WhatsappMessage,\x20%s,\x20%s','message','result','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','save','destroy','stack','name','send','index','map','WhatsappMessage','model','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','length','find','create','body','catch','update','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','WhatsappInteractionId','isNil','read1stAt','interaction','user','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','contact','User'];(function(_0x3738d7,_0x5e5fac){var _0x4315d9=function(_0x4c0953){while(--_0x4c0953){_0x3738d7['push'](_0x3738d7['shift']());}};_0x4315d9(++_0x5e5fac);}(_0x34f2,0x1aa));var _0x234f=function(_0x2d5c91,_0x3a68c6){_0x2d5c91=_0x2d5c91-0x0;var _0x49bdda=_0x34f2[_0x2d5c91];return _0x49bdda;};'use strict';var emlformat=require(_0x234f('0x0'));var rimraf=require(_0x234f('0x1'));var zipdir=require(_0x234f('0x2'));var jsonpatch=require(_0x234f('0x3'));var rp=require('request-promise');var moment=require(_0x234f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x234f('0x5'));var util=require('util');var path=require('path');var sox=require(_0x234f('0x6'));var csv=require(_0x234f('0x7'));var ejs=require(_0x234f('0x8'));var fs=require('fs');var fs_extra=require(_0x234f('0x9'));var _=require(_0x234f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x234f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x234f('0x7'));var querystring=require('querystring');var Papa=require(_0x234f('0xc'));var Redis=require(_0x234f('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x234f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x234f('0xf'));var logger=require(_0x234f('0x10'))('api');var utils=require(_0x234f('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x234f('0x12'));var db=require(_0x234f('0x13'))['db'];config['redis']=_['defaults'](config[_0x234f('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x234f('0x15'))(new Redis(config['redis']));require(_0x234f('0x16'))[_0x234f('0x17')](socket);var jayson=require(_0x234f('0x18'));var client=jayson[_0x234f('0x19')][_0x234f('0x1a')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c9e73,_0x1bb7b8,_0x5dcbfa,_0x4851a1){return new BPromise(function(_0x28f620,_0x22e1d3){var _0xc5ac81=_0x4851a1||client;return _0xc5ac81[_0x234f('0x1b')](_0x2c9e73,_0x5dcbfa)[_0x234f('0x1c')](function(_0x408e0c){logger[_0x234f('0x1d')]('WhatsappMessage,\x20%s,\x20%s',_0x1bb7b8,'request\x20sent');logger[_0x234f('0x1e')](_0x234f('0x1f'),_0x1bb7b8,_0x234f('0x20'),JSON[_0x234f('0x21')](_0x408e0c));if(_0x408e0c[_0x234f('0x22')]){if(_0x408e0c['error']['code']===0x1f4){logger[_0x234f('0x22')](_0x234f('0x23'),_0x1bb7b8,_0x408e0c['error'][_0x234f('0x24')]);return _0x22e1d3(_0x408e0c['error']['message']);}logger[_0x234f('0x22')](_0x234f('0x23'),_0x1bb7b8,_0x408e0c[_0x234f('0x22')][_0x234f('0x24')]);return _0x28f620(_0x408e0c['error'][_0x234f('0x24')]);}else{logger['info'](_0x234f('0x23'),_0x1bb7b8,_0x234f('0x20'));_0x28f620(_0x408e0c[_0x234f('0x25')]['message']);}})['catch'](function(_0x287ba8){logger[_0x234f('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0x1bb7b8,_0x287ba8);_0x22e1d3(_0x287ba8);});});}function respondWithStatusCode(_0x2813ae,_0x4efa8f){_0x4efa8f=_0x4efa8f||0xcc;return function(_0x4b8919){if(_0x4b8919){return _0x2813ae[_0x234f('0x26')](_0x4efa8f);}return _0x2813ae['status'](_0x4efa8f)[_0x234f('0x27')]();};}function respondWithResult(_0x31c1e6,_0x5b485c){_0x5b485c=_0x5b485c||0xc8;return function(_0x3b1921){if(_0x3b1921){return _0x31c1e6[_0x234f('0x28')](_0x5b485c)['json'](_0x3b1921);}};}function respondWithFilteredResult(_0xab74a6,_0x208fb2){return function(_0x406a71){if(_0x406a71){var _0x16e62d=typeof _0x208fb2[_0x234f('0x29')]===_0x234f('0x2a')&&typeof _0x208fb2[_0x234f('0x2b')]==='undefined';var _0x28a226=_0x406a71[_0x234f('0x2c')];var _0x50fd41=_0x16e62d?0x0:_0x208fb2[_0x234f('0x29')];var _0x32f50c=_0x16e62d?_0x406a71[_0x234f('0x2c')]:_0x208fb2[_0x234f('0x29')]+_0x208fb2[_0x234f('0x2b')];var _0x3ca789;if(_0x32f50c>=_0x28a226){_0x32f50c=_0x28a226;_0x3ca789=0xc8;}else{_0x3ca789=0xce;}_0xab74a6[_0x234f('0x28')](_0x3ca789);return _0xab74a6[_0x234f('0x2d')](_0x234f('0x2e'),_0x50fd41+'-'+_0x32f50c+'/'+_0x28a226)[_0x234f('0x2f')](_0x406a71);}return null;};}function patchUpdates(_0x14872b){return function(_0x48e072){try{jsonpatch['apply'](_0x48e072,_0x14872b,!![]);}catch(_0x278e92){return BPromise['reject'](_0x278e92);}return _0x48e072[_0x234f('0x30')]();};}function saveUpdates(_0x3b571a,_0x1ae049){return function(_0x2c1935){if(_0x2c1935){return _0x2c1935['update'](_0x3b571a)[_0x234f('0x1c')](function(_0x48dc37){return _0x48dc37;});}return null;};}function removeEntity(_0x1c49e3,_0x4ba1f6){return function(_0x58b7dd){if(_0x58b7dd){return _0x58b7dd[_0x234f('0x31')]()[_0x234f('0x1c')](function(){_0x1c49e3[_0x234f('0x28')](0xcc)[_0x234f('0x27')]();});}};}function handleEntityNotFound(_0xc88ac,_0x41fa75){return function(_0x13c9d0){if(!_0x13c9d0){_0xc88ac['sendStatus'](0x194);}return _0x13c9d0;};}function handleError(_0xf2d57,_0x496ae1){_0x496ae1=_0x496ae1||0x1f4;return function(_0x247fb1){logger['error'](_0x247fb1[_0x234f('0x32')]);if(_0x247fb1[_0x234f('0x33')]){delete _0x247fb1[_0x234f('0x33')];}_0xf2d57[_0x234f('0x28')](_0x496ae1)[_0x234f('0x34')](_0x247fb1);};}exports[_0x234f('0x35')]=function(_0x3c031b,_0x2daa09){var _0xefa3d7={},_0x4229ce={},_0x4dad6e={'count':0x0,'rows':[]};var _0x4647ce=_[_0x234f('0x36')](db[_0x234f('0x37')]['rawAttributes'],function(_0x35f55e){return{'name':_0x35f55e['fieldName'],'type':_0x35f55e['type']['key']};});_0x4229ce[_0x234f('0x38')]=_['map'](_0x4647ce,'name');_0x4229ce['query']=_['keys'](_0x3c031b[_0x234f('0x39')]);_0x4229ce[_0x234f('0x3a')]=_[_0x234f('0x3b')](_0x4229ce[_0x234f('0x38')],_0x4229ce[_0x234f('0x39')]);_0xefa3d7[_0x234f('0x3c')]=_[_0x234f('0x3b')](_0x4229ce['model'],qs[_0x234f('0x3d')](_0x3c031b[_0x234f('0x39')][_0x234f('0x3d')]));_0xefa3d7[_0x234f('0x3c')]=_0xefa3d7[_0x234f('0x3c')]['length']?_0xefa3d7[_0x234f('0x3c')]:_0x4229ce['model'];if(!_0x3c031b['query']['hasOwnProperty'](_0x234f('0x3e'))){_0xefa3d7['limit']=qs[_0x234f('0x2b')](_0x3c031b[_0x234f('0x39')][_0x234f('0x2b')]);_0xefa3d7[_0x234f('0x29')]=qs['offset'](_0x3c031b[_0x234f('0x39')][_0x234f('0x29')]);}_0xefa3d7['order']=qs['sort'](_0x3c031b[_0x234f('0x39')][_0x234f('0x3f')]);_0xefa3d7[_0x234f('0x40')]=qs[_0x234f('0x3a')](_[_0x234f('0x41')](_0x3c031b['query'],_0x4229ce[_0x234f('0x3a')]),_0x4647ce);if(_0x3c031b[_0x234f('0x39')][_0x234f('0x42')]){_0xefa3d7['where']=_[_0x234f('0x43')](_0xefa3d7[_0x234f('0x40')],{'$or':_['map'](_0x4647ce,function(_0x1f1ee3){if(_0x1f1ee3[_0x234f('0x44')]!==_0x234f('0x45')){var _0x2f4fdd={};_0x2f4fdd[_0x1f1ee3[_0x234f('0x33')]]={'$like':'%'+_0x3c031b[_0x234f('0x39')]['filter']+'%'};return _0x2f4fdd;}})});}_0xefa3d7=_[_0x234f('0x43')]({},_0xefa3d7,_0x3c031b[_0x234f('0x46')]);var _0x24a935={'where':_0xefa3d7['where']};return db[_0x234f('0x37')][_0x234f('0x2c')](_0x24a935)[_0x234f('0x1c')](function(_0x50f605){_0x4dad6e[_0x234f('0x2c')]=_0x50f605;if(_0x3c031b[_0x234f('0x39')][_0x234f('0x47')]){_0xefa3d7['include']=[{'all':!![]}];}return db['WhatsappMessage'][_0x234f('0x48')](_0xefa3d7);})[_0x234f('0x1c')](function(_0x472a08){_0x4dad6e[_0x234f('0x49')]=_0x472a08;return _0x4dad6e;})[_0x234f('0x1c')](respondWithFilteredResult(_0x2daa09,_0xefa3d7))['catch'](handleError(_0x2daa09,null));};exports[_0x234f('0x4a')]=function(_0xb209b1,_0x5e1f05){var _0xa45ad6={'raw':!![],'where':{'id':_0xb209b1[_0x234f('0x4b')]['id']}},_0x42a795={};_0x42a795[_0x234f('0x38')]=_['keys'](db[_0x234f('0x37')]['rawAttributes']);_0x42a795[_0x234f('0x39')]=_[_0x234f('0x4c')](_0xb209b1[_0x234f('0x39')]);_0x42a795[_0x234f('0x3a')]=_[_0x234f('0x3b')](_0x42a795[_0x234f('0x38')],_0x42a795['query']);_0xa45ad6['attributes']=_[_0x234f('0x3b')](_0x42a795[_0x234f('0x38')],qs[_0x234f('0x3d')](_0xb209b1[_0x234f('0x39')][_0x234f('0x3d')]));_0xa45ad6[_0x234f('0x3c')]=_0xa45ad6[_0x234f('0x3c')][_0x234f('0x4d')]?_0xa45ad6['attributes']:_0x42a795[_0x234f('0x38')];if(_0xb209b1[_0x234f('0x39')][_0x234f('0x47')]){_0xa45ad6['include']=[{'all':!![]}];}_0xa45ad6=_['merge']({},_0xa45ad6,_0xb209b1[_0x234f('0x46')]);return db['WhatsappMessage'][_0x234f('0x4e')](_0xa45ad6)[_0x234f('0x1c')](handleEntityNotFound(_0x5e1f05,null))['then'](respondWithResult(_0x5e1f05,null))['catch'](handleError(_0x5e1f05,null));};exports[_0x234f('0x4f')]=function(_0x368585,_0x5146ec){return db[_0x234f('0x37')]['create'](_0x368585[_0x234f('0x50')],{})[_0x234f('0x1c')](respondWithResult(_0x5146ec,0xc9))[_0x234f('0x51')](handleError(_0x5146ec,null));};exports[_0x234f('0x52')]=function(_0x2655ca,_0x24864b){if(_0x2655ca[_0x234f('0x50')]['id']){delete _0x2655ca[_0x234f('0x50')]['id'];}return db[_0x234f('0x37')][_0x234f('0x4e')]({'where':{'id':_0x2655ca[_0x234f('0x4b')]['id']}})[_0x234f('0x1c')](handleEntityNotFound(_0x24864b,null))[_0x234f('0x1c')](saveUpdates(_0x2655ca[_0x234f('0x50')],null))[_0x234f('0x1c')](respondWithResult(_0x24864b,null))[_0x234f('0x51')](handleError(_0x24864b,null));};exports[_0x234f('0x31')]=function(_0x560207,_0x45e3d4){return db[_0x234f('0x37')][_0x234f('0x4e')]({'where':{'id':_0x560207[_0x234f('0x4b')]['id']}})['then'](handleEntityNotFound(_0x45e3d4,null))[_0x234f('0x1c')](removeEntity(_0x45e3d4,null))[_0x234f('0x51')](handleError(_0x45e3d4,null));};exports['describe']=function(_0x1ee37b,_0x3fcb8d){return db['WhatsappMessage']['describe']()[_0x234f('0x1c')](respondWithResult(_0x3fcb8d,null))[_0x234f('0x51')](handleError(_0x3fcb8d,null));};var interaction_log=require(_0x234f('0x10'))(_0x234f('0x53'));exports[_0x234f('0x54')]=function(_0x1eb801,_0x5d8478,_0x995af6){var _0x429c95={'agent':{},'channel':'whatsapp'};if(_0x1eb801[_0x234f('0x50')]['id']){delete _0x1eb801[_0x234f('0x50')]['id'];}_0x1eb801[_0x234f('0x50')][_0x234f('0x55')]=!![];_0x1eb801[_0x234f('0x50')][_0x234f('0x56')]=moment()[_0x234f('0x57')](_0x234f('0x58'));_0x1eb801['body'][_0x234f('0x59')]=_0x1eb801[_0x234f('0x50')]['UserId']||_0x1eb801['user']['id'];_0x429c95[_0x234f('0x5a')]['id']=_0x1eb801[_0x234f('0x50')][_0x234f('0x59')];return db[_0x234f('0x37')][_0x234f('0x4e')]({'where':{'id':_0x1eb801[_0x234f('0x4b')]['id'],'UserId':null}})[_0x234f('0x1c')](handleEntityNotFound(_0x5d8478,null))[_0x234f('0x1c')](saveUpdates(_0x1eb801[_0x234f('0x50')],null))[_0x234f('0x1c')](function(_0x427de7){if(_0x427de7){_0x429c95[_0x234f('0x24')]=_0x427de7[_0x234f('0x5b')]({'plain':!![]});return db['WhatsappInteraction'][_0x234f('0x4e')]({'where':{'id':_0x427de7[_0x234f('0x5c')]}});}return null;})[_0x234f('0x1c')](handleEntityNotFound(_0x5d8478,null))[_0x234f('0x1c')](function(_0x243ceb){if(_0x243ceb){return _0x243ceb['update']({'UserId':_0x1eb801[_0x234f('0x50')]['UserId'],'read1stAt':_[_0x234f('0x5d')](_0x243ceb[_0x234f('0x5e')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x234f('0x1c')](function(_0x1b0066){if(_0x1b0066){_0x429c95[_0x234f('0x5f')]=_0x1b0066['get']({'plain':!![]});interaction_log[_0x234f('0x1d')]('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1eb801[_0x234f('0x60')]['id'],_0x1eb801[_0x234f('0x60')][_0x234f('0x33')],_0x1eb801[_0x234f('0x60')][_0x234f('0x61')],_0x429c95[_0x234f('0x5f')]['id'],_0x1eb801[_0x234f('0x50')]?JSON[_0x234f('0x21')](_0x1eb801['body']):_0x234f('0x62'));return respondWithRpcPromise('AcceptMessage',_0x234f('0x63'),_0x429c95);}return null;})[_0x234f('0x1c')](function(_0x29a51f){var _0x1422b2=_0x234f('0x64')+_0x29a51f[_0x234f('0x24')][_0x234f('0x65')];return db[_0x234f('0x66')][_0x234f('0x39')](_0x1422b2,{'type':db['Sequelize']['QueryTypes'][_0x234f('0x67')],'raw':!![]})[_0x234f('0x1c')](function(_0x48a621){return _0x48a621;});})['then'](function(_0x12cbf0){if(_0x12cbf0){_0x429c95['message'][_0x234f('0x68')]=_0x12cbf0[0x0];if(!_0x1eb801[_0x234f('0x50')][_0x234f('0x59')])return;return db[_0x234f('0x69')][_0x234f('0x4e')]({'where':{'id':_0x1eb801[_0x234f('0x50')][_0x234f('0x59')],'role':_0x234f('0x5a')},'attributes':['id','name',_0x234f('0x6a'),'email','internal'],'raw':!![]});}return null;})[_0x234f('0x1c')](function(_0x283046){if(!_0x283046)return null;_0x429c95[_0x234f('0x24')]['agent']=_0x283046;return _0x429c95;})[_0x234f('0x1c')](function(_0x21f54e){if(_0x21f54e){if(_0x1eb801[_0x234f('0x50')][_0x234f('0x6b')]){_0x429c95[_0x234f('0x24')][_0x234f('0x6c')]=util['format'](_0x234f('0x6d'),_0x1eb801[_0x234f('0x60')][_0x234f('0x33')]);_0x429c95[_0x234f('0x24')][_0x234f('0x6e')]=_0x429c95[_0x234f('0x6e')];_0x429c95[_0x234f('0x24')][_0x234f('0x6f')]=_0x429c95[_0x234f('0x6e')];_0x429c95[_0x234f('0x24')][_0x234f('0x70')]=_0x234f('0x54');return respondWithRpcPromise(_0x234f('0x71'),_0x234f('0x71'),{'event':'acceptmessage','message':_0x429c95[_0x234f('0x24')]},client9002)[_0x234f('0x1c')](function(){return _0x429c95;});}return _0x429c95;}return null;})[_0x234f('0x1c')](respondWithResult(_0x5d8478,null))[_0x234f('0x51')](handleError(_0x5d8478,null));};var interaction_log=require(_0x234f('0x10'))(_0x234f('0x53'));exports[_0x234f('0x72')]=function(_0x986bb7,_0x1ffb42,_0x5231f6){var _0x50ff9f={'agent':{},'channel':_0x234f('0x73')};if(_0x986bb7[_0x234f('0x50')]['id']){delete _0x986bb7['body']['id'];}_0x986bb7[_0x234f('0x50')][_0x234f('0x59')]=_0x986bb7[_0x234f('0x50')]['UserId']||_0x986bb7['user']['id'];_0x50ff9f['agent']['id']=_0x986bb7[_0x234f('0x50')]['UserId'];return db[_0x234f('0x37')][_0x234f('0x4e')]({'where':{'id':_0x986bb7['params']['id'],'UserId':null}})[_0x234f('0x1c')](handleEntityNotFound(_0x1ffb42,null))['then'](function(_0x8b3e5b){if(_0x8b3e5b){_0x50ff9f[_0x234f('0x24')]=_0x8b3e5b[_0x234f('0x5b')]({'plain':!![]});return db[_0x234f('0x74')]['find']({'where':{'id':_0x8b3e5b[_0x234f('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x1ffb42,null))[_0x234f('0x1c')](function(_0x423bfd){if(_0x423bfd){_0x50ff9f[_0x234f('0x5f')]=_0x423bfd[_0x234f('0x5b')]({'plain':!![]});interaction_log['info'](_0x234f('0x75'),_0x986bb7[_0x234f('0x60')]['id'],_0x986bb7['user'][_0x234f('0x33')],_0x986bb7['user'][_0x234f('0x61')],_0x50ff9f[_0x234f('0x5f')]['id'],_0x986bb7[_0x234f('0x50')]?JSON['stringify'](_0x986bb7[_0x234f('0x50')]):_0x234f('0x62'));return respondWithRpcPromise(_0x234f('0x76'),_0x234f('0x77'),_0x50ff9f);}return null;})[_0x234f('0x1c')](function(_0x5bf8c0){var _0x4ef71d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5bf8c0['message'][_0x234f('0x65')];return db[_0x234f('0x66')][_0x234f('0x39')](_0x4ef71d,{'type':db[_0x234f('0x78')][_0x234f('0x79')]['SELECT'],'raw':!![]})[_0x234f('0x1c')](function(_0x40624c){return _0x40624c;});})['then'](function(_0x162165){if(_0x162165){_0x50ff9f['message'][_0x234f('0x68')]=_0x162165[0x0];if(!_0x986bb7[_0x234f('0x50')][_0x234f('0x59')])return;return db['User'][_0x234f('0x4e')]({'where':{'id':_0x986bb7[_0x234f('0x50')][_0x234f('0x59')],'role':_0x234f('0x5a')},'attributes':['id',_0x234f('0x33'),_0x234f('0x6a'),'email',_0x234f('0x7a')],'raw':!![]});}return null;})[_0x234f('0x1c')](function(_0x4293dd){if(!_0x4293dd)return null;_0x50ff9f['message'][_0x234f('0x5a')]=_0x4293dd;return _0x50ff9f;})[_0x234f('0x1c')](function(_0x7866b2){if(_0x7866b2){_0x7866b2['message'][_0x234f('0x6c')]=util[_0x234f('0x57')](_0x234f('0x6d'),_0x986bb7[_0x234f('0x60')][_0x234f('0x33')]);_0x7866b2[_0x234f('0x24')][_0x234f('0x6e')]=_0x50ff9f[_0x234f('0x6e')];_0x7866b2[_0x234f('0x24')]['motionChannel']=_0x50ff9f[_0x234f('0x6e')];_0x7866b2['message'][_0x234f('0x70')]=_0x234f('0x72');respondWithRpcPromise('EventManager',_0x234f('0x71'),{'event':'rejectmessage','message':_0x7866b2[_0x234f('0x24')]},client9002);return _0x50ff9f;}return null;})['then'](respondWithResult(_0x1ffb42,null))[_0x234f('0x51')](handleError(_0x1ffb42,null));};exports[_0x234f('0x28')]=function(_0x4161e,_0x493099,_0x4f10e4){if(_0x4161e[_0x234f('0x50')]['id']){delete _0x4161e[_0x234f('0x50')]['id'];}var _0x5df02b;return db[_0x234f('0x37')]['find']({'where':{'id':_0x4161e['params']['id']}})['then'](handleEntityNotFound(_0x493099,null))[_0x234f('0x1c')](function(_0x198e80){if(_0x198e80){_0x5df02b=_0x198e80;return db[_0x234f('0x7b')][_0x234f('0x4e')]({'where':{'id':_0x198e80[_0x234f('0x7c')]}});}})[_0x234f('0x1c')](handleEntityNotFound(_0x493099,null))['then'](function(_0x379567){if(_0x379567){logger[_0x234f('0x1e')](_0x234f('0x7d'),_0x234f('0x28'),_0x234f('0x7e'),_0x379567['type'],util[_0x234f('0x7f')](_0x4161e['body'],{'showHidden':![],'depth':null}));switch(_0x379567[_0x234f('0x44')]){case _0x234f('0x80'):if(_0x4161e[_0x234f('0x50')][_0x234f('0x81')]&&_0x4161e['body']['MessageSid']===_0x5df02b[_0x234f('0x82')]&&_0x4161e['body'][_0x234f('0x83')]&&_0x4161e[_0x234f('0x50')][_0x234f('0x83')]===_0x234f('0x55')){return _0x5df02b[_0x234f('0x52')]({'read':!![]});}else{logger['error'](_0x234f('0x84'),'status',_0x234f('0x80'),util['inspect'](_0x4161e[_0x234f('0x50')],{'showHidden':![],'depth':null}));}break;}return _0x5df02b;}})[_0x234f('0x1c')](respondWithResult(_0x493099,null))[_0x234f('0x51')](handleError(_0x493099,null));};
\ No newline at end of file
index 0dbbb93..c06edd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x422f=['../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x422f,0x1c7));var _0xf422=function(_0x507ff4,_0x4fabda){_0x507ff4=_0x507ff4-0x0;var _0x68480c=_0x422f[_0x507ff4];return _0x68480c;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0xf422('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xf422('0x1')](0x0);var events={'afterCreate':_0xf422('0x2'),'afterUpdate':'update','afterDestroy':_0xf422('0x3')};function emitEvent(_0x172a93){return function(_0x312bc8,_0x444ad5,_0x16047c){WhatsappMessageEvents[_0xf422('0x4')](_0x172a93+':'+_0x312bc8['id'],_0x312bc8);WhatsappMessageEvents[_0xf422('0x4')](_0x172a93,_0x312bc8);_0x16047c(null);};}for(var e in events){if(events[_0xf422('0x5')](e)){var event=events[e];WhatsappMessage[_0xf422('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x3f8c=['emit','hasOwnProperty','hook','exports','WhatsappMessage','setMaxListeners','save','update'];(function(_0x4309d9,_0x5b0b57){var _0x1af166=function(_0x20d871){while(--_0x20d871){_0x4309d9['push'](_0x4309d9['shift']());}};_0x1af166(++_0x5b0b57);}(_0x3f8c,0x104));var _0xc3f8=function(_0x10a1bd,_0x492857){_0x10a1bd=_0x10a1bd-0x0;var _0xd36b6b=_0x3f8c[_0x10a1bd];return _0xd36b6b;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db'][_0xc3f8('0x0')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xc3f8('0x1')](0x0);var events={'afterCreate':_0xc3f8('0x2'),'afterUpdate':_0xc3f8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5bd5e7){return function(_0x54035a,_0x4e5dbd,_0x51b8b5){WhatsappMessageEvents[_0xc3f8('0x4')](_0x5bd5e7+':'+_0x54035a['id'],_0x54035a);WhatsappMessageEvents[_0xc3f8('0x4')](_0x5bd5e7,_0x54035a);_0x51b8b5(null);};}for(var e in events){if(events[_0xc3f8('0x5')](e)){var event=events[e];WhatsappMessage[_0xc3f8('0x6')](e,emitEvent(event));}}module[_0xc3f8('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index d0b0d0b..a05400e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa306=['WhatsappInteractionId','then','catch','error','WhatsappAccount','find','WhatsappAccountId','type','accountSid','phone','authToken','create','whatsapp:','remote','/api/whatsapp/messages/','token','sid','update','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','POST','application/json','statuses','message_id','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','secret','UserId','findOne'];(function(_0x2601b4,_0x315e78){var _0x3e3661=function(_0x13b45b){while(--_0x13b45b){_0x2601b4['push'](_0x2601b4['shift']());}};_0x3e3661(++_0x315e78);}(_0xa306,0x1cf));var _0x6a30=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xa306[_0x56916d];return _0x2b7f1f;};'use strict';var _=require(_0x6a30('0x0'));var util=require(_0x6a30('0x1'));var logger=require(_0x6a30('0x2'))('api');var moment=require(_0x6a30('0x3'));var BPromise=require('bluebird');var rp=require(_0x6a30('0x4'));var fetch=require(_0x6a30('0x5'));var fs=require('fs');var path=require(_0x6a30('0x6'));var rimraf=require(_0x6a30('0x7'));var config=require(_0x6a30('0x8'));var attributes=require(_0x6a30('0x9'));module[_0x6a30('0xa')]=function(_0x244dd0,_0x3a5b4b){return _0x244dd0[_0x6a30('0xb')]('WhatsappMessage',attributes,{'tableName':_0x6a30('0xc'),'paranoid':![],'indexes':[{'name':_0x6a30('0xd'),'fields':[_0x6a30('0xd')]},{'name':_0x6a30('0xe'),'fields':[_0x6a30('0xf')],'type':_0x6a30('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4f348e,_0x451abf,_0x1c361d){var _0x574c7b=_0x244dd0['models'];var _0xf5f84e=_0x4f348e[_0x6a30('0x11')]({'plain':!![]});if(_0xf5f84e[_0x6a30('0x12')]['toLowerCase']()==='in'||_0xf5f84e['direction'][_0x6a30('0x13')]()==='out'&&!_0xf5f84e[_0x6a30('0x14')]&&!_['isNil'](_0xf5f84e[_0x6a30('0x15')])){_0x574c7b['WhatsappInteraction'][_0x6a30('0x16')]({'where':{'id':_0xf5f84e[_0x6a30('0x17')]}})[_0x6a30('0x18')](function(_0x3766f2){if(_0x3766f2){_0x3766f2['update']({'lastMsgAt':_0xf5f84e['createdAt'],'lastMsgDirection':_0xf5f84e[_0x6a30('0x12')][_0x6a30('0x13')]()});}})[_0x6a30('0x19')](function(_0x35d378){console[_0x6a30('0x1a')](_0x35d378);});}if(_0xf5f84e[_0x6a30('0x12')]==='out'&&!_0xf5f84e[_0x6a30('0x14')]){var _0x333448;_0x574c7b[_0x6a30('0x1b')][_0x6a30('0x1c')]({'where':{'id':_0xf5f84e[_0x6a30('0x1d')]},'raw':!![]})['then'](function(_0x2f80c5){_0x333448=_0x2f80c5;if(_0x333448&&_0x333448[_0x6a30('0x1e')]){switch(_0x333448[_0x6a30('0x1e')]){case'twilio':var _0x27b4da=require('twilio');if(_0x333448[_0x6a30('0x1f')]&&_0x333448['authToken']&&_0x333448[_0x6a30('0x20')]){var _0x27db7d=new _0x27b4da(_0x333448['accountSid'],_0x333448[_0x6a30('0x21')]);_0x27db7d['messages'][_0x6a30('0x22')]({'body':_0xf5f84e['body'],'to':_0x6a30('0x23')+_0xf5f84e['phone'],'from':_0x6a30('0x23')+_0x333448[_0x6a30('0x20')],'statusCallback':_0x333448[_0x6a30('0x24')]+_0x6a30('0x25')+_0xf5f84e['id']+'/status?token='+_0x333448[_0x6a30('0x26')]})[_0x6a30('0x18')](function(_0x1bcf7b){if(_0x1bcf7b[_0x6a30('0x27')]){return _0x4f348e[_0x6a30('0x28')]({'messageId':_0x1bcf7b[_0x6a30('0x27')]});}})['catch'](function(_0x512710){logger[_0x6a30('0x1a')](_0x6a30('0x29'),_0x6a30('0x2a'),_0x6a30('0x2b'),util['inspect'](_0x512710,{'showHidden':![],'depth':null}));});}else{logger[_0x6a30('0x1a')](_0x6a30('0x29'),_0x6a30('0x2a'),_0x6a30('0x2b'),_0x6a30('0x2c'));}break;case _0x6a30('0x2d'):var _0x528884=_0x333448[_0x6a30('0x1f')];var _0x48fded=_0x333448[_0x6a30('0x21')];var _0x5d443b=_0x333448[_0x6a30('0x2e')]+_0x6a30('0x2f')+_0x528884+'/messages/';var _0x3fd0e4={'to':[_0xf5f84e[_0x6a30('0x20')]],'message':{'type':'text','text':_0xf5f84e[_0x6a30('0xf')]}};var _0x2dd9b1={'method':_0x6a30('0x30'),'uri':_0x5d443b,'headers':{'Authorization':'Bearer\x20'+_0x48fded,'Content-Type':_0x6a30('0x31')},'body':_0x3fd0e4,'json':!![]};rp(_0x2dd9b1)['then'](function(_0x1eafcb){if(_0x1eafcb[_0x6a30('0x32')][0x0][_0x6a30('0x33')]){return _0x4f348e[_0x6a30('0x28')]({'messageId':_0x1eafcb[_0x6a30('0x32')][0x0][_0x6a30('0x33')]});}})[_0x6a30('0x19')](function(_0x1397da){logger['err']('WhatsappMessage,\x20%s',_0x1397da);});break;}}})[_0x6a30('0x34')](function(){_0x1c361d();});}else{_0x1c361d();}}},'charset':'utf8mb4','collate':_0x6a30('0x35')});};
\ No newline at end of file
+var _0xb9c6=['update','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','/messages/','text','POST','Bearer\x20','application/json','statuses','message_id','err','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','WhatsappInteraction','WhatsappInteractionId','then','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','create','whatsapp:','phone','remote','/status?token=','token','sid'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xb9c6,0x1d8));var _0x6b9c=function(_0x5bf8de,_0x5ef5cc){_0x5bf8de=_0x5bf8de-0x0;var _0x47160c=_0xb9c6[_0x5bf8de];return _0x47160c;};'use strict';var _=require(_0x6b9c('0x0'));var util=require(_0x6b9c('0x1'));var logger=require(_0x6b9c('0x2'))(_0x6b9c('0x3'));var moment=require(_0x6b9c('0x4'));var BPromise=require(_0x6b9c('0x5'));var rp=require(_0x6b9c('0x6'));var fetch=require('node-fetch');var fs=require('fs');var path=require('path');var rimraf=require(_0x6b9c('0x7'));var config=require(_0x6b9c('0x8'));var attributes=require('./whatsappMessage.attributes');module['exports']=function(_0x4312d4,_0x5467c1){return _0x4312d4[_0x6b9c('0x9')](_0x6b9c('0xa'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x6b9c('0xb'),'fields':[_0x6b9c('0xb')]},{'name':_0x6b9c('0xc'),'fields':[_0x6b9c('0xd')],'type':_0x6b9c('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x130753,_0x263c9e,_0x458c20){var _0x5595d7=_0x4312d4[_0x6b9c('0xf')];var _0x3a6132=_0x130753[_0x6b9c('0x10')]({'plain':!![]});if(_0x3a6132[_0x6b9c('0x11')][_0x6b9c('0x12')]()==='in'||_0x3a6132['direction'][_0x6b9c('0x12')]()===_0x6b9c('0x13')&&!_0x3a6132[_0x6b9c('0x14')]&&!_['isNil'](_0x3a6132['UserId'])){_0x5595d7[_0x6b9c('0x15')]['findOne']({'where':{'id':_0x3a6132[_0x6b9c('0x16')]}})[_0x6b9c('0x17')](function(_0x753ecc){if(_0x753ecc){_0x753ecc['update']({'lastMsgAt':_0x3a6132[_0x6b9c('0x18')],'lastMsgDirection':_0x3a6132[_0x6b9c('0x11')]['toLowerCase']()});}})[_0x6b9c('0x19')](function(_0x471eeb){console[_0x6b9c('0x1a')](_0x471eeb);});}if(_0x3a6132[_0x6b9c('0x11')]===_0x6b9c('0x13')&&!_0x3a6132[_0x6b9c('0x14')]){var _0x5b921a;_0x5595d7[_0x6b9c('0x1b')][_0x6b9c('0x1c')]({'where':{'id':_0x3a6132[_0x6b9c('0x1d')]},'raw':!![]})[_0x6b9c('0x17')](function(_0x26b975){_0x5b921a=_0x26b975;if(_0x5b921a&&_0x5b921a[_0x6b9c('0x1e')]){switch(_0x5b921a[_0x6b9c('0x1e')]){case _0x6b9c('0x1f'):var _0x697fd9=require(_0x6b9c('0x1f'));if(_0x5b921a[_0x6b9c('0x20')]&&_0x5b921a[_0x6b9c('0x21')]&&_0x5b921a['phone']){var _0x2acf05=new _0x697fd9(_0x5b921a[_0x6b9c('0x20')],_0x5b921a[_0x6b9c('0x21')]);_0x2acf05['messages'][_0x6b9c('0x22')]({'body':_0x3a6132[_0x6b9c('0xd')],'to':_0x6b9c('0x23')+_0x3a6132['phone'],'from':_0x6b9c('0x23')+_0x5b921a[_0x6b9c('0x24')],'statusCallback':_0x5b921a[_0x6b9c('0x25')]+'/api/whatsapp/messages/'+_0x3a6132['id']+_0x6b9c('0x26')+_0x5b921a[_0x6b9c('0x27')]})[_0x6b9c('0x17')](function(_0xa3954){if(_0xa3954[_0x6b9c('0x28')]){return _0x130753[_0x6b9c('0x29')]({'messageId':_0xa3954['sid']});}})['catch'](function(_0x314c55){logger[_0x6b9c('0x1a')](_0x6b9c('0x2a'),'afterCreate',_0x6b9c('0x1f'),util[_0x6b9c('0x2b')](_0x314c55,{'showHidden':![],'depth':null}));});}else{logger[_0x6b9c('0x1a')](_0x6b9c('0x2a'),'afterCreate',_0x6b9c('0x1f'),_0x6b9c('0x2c'));}break;case _0x6b9c('0x2d'):var _0x1e4ae3=_0x5b921a['accountSid'];var _0x1bebde=_0x5b921a[_0x6b9c('0x21')];var _0x58face=_0x5b921a['baseUrl']+_0x6b9c('0x2e')+_0x1e4ae3+_0x6b9c('0x2f');var _0x33409a={'to':[_0x3a6132[_0x6b9c('0x24')]],'message':{'type':_0x6b9c('0x30'),'text':_0x3a6132[_0x6b9c('0xd')]}};var _0x418d6c={'method':_0x6b9c('0x31'),'uri':_0x58face,'headers':{'Authorization':_0x6b9c('0x32')+_0x1bebde,'Content-Type':_0x6b9c('0x33')},'body':_0x33409a,'json':!![]};rp(_0x418d6c)['then'](function(_0x4d17f1){if(_0x4d17f1[_0x6b9c('0x34')][0x0][_0x6b9c('0x35')]){return _0x130753[_0x6b9c('0x29')]({'messageId':_0x4d17f1['statuses'][0x0]['message_id']});}})['catch'](function(_0x37cc6f){logger[_0x6b9c('0x36')]('WhatsappMessage,\x20%s',_0x37cc6f);});break;}}})['finally'](function(){_0x458c20();});}else{_0x458c20();}}},'charset':_0x6b9c('0x37'),'collate':_0x6b9c('0x38')});};
\ No newline at end of file
index caa8aa7..0940cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4785=['../../config/utils','../../config/logger','client','http','defaults','redis','localhost','register','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','debug','stringify','moment','randomstring','ioredis','../../mysqldb'];(function(_0x34cb6d,_0x1e05b5){var _0x51b433=function(_0x2326b8){while(--_0x2326b8){_0x34cb6d['push'](_0x34cb6d['shift']());}};_0x51b433(++_0x1e05b5);}(_0x4785,0xa4));var _0x5478=function(_0x32a254,_0x14e1d0){_0x32a254=_0x32a254-0x0;var _0x799afb=_0x4785[_0x32a254];return _0x799afb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x5478('0x0'));var BPromise=require('bluebird');var rs=require(_0x5478('0x1'));var fs=require('fs');var Redis=require(_0x5478('0x2'));var db=require(_0x5478('0x3'))['db'];var utils=require(_0x5478('0x4'));var logger=require(_0x5478('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5478('0x6')][_0x5478('0x7')]({'port':0x232a});config['redis']=_[_0x5478('0x8')](config[_0x5478('0x9')],{'host':_0x5478('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5478('0x9')]));require('./whatsappMessage.socket')[_0x5478('0xb')](socket);function respondWithRpcPromise(_0x4dcfc2,_0x1d3646,_0x5aeb7d){return new BPromise(function(_0x4f51cc,_0x5739cb){return client[_0x5478('0xc')](_0x4dcfc2,_0x5aeb7d)['then'](function(_0x570fb7){logger[_0x5478('0xd')](_0x5478('0xe'),_0x1d3646,_0x5478('0xf'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x1d3646,_0x5478('0xf'),JSON['stringify'](_0x570fb7));if(_0x570fb7['error']){if(_0x570fb7[_0x5478('0x10')]['code']===0x1f4){logger[_0x5478('0x10')](_0x5478('0xe'),_0x1d3646,_0x570fb7[_0x5478('0x10')][_0x5478('0x11')]);return _0x5739cb(_0x570fb7[_0x5478('0x10')]['message']);}logger[_0x5478('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x1d3646,_0x570fb7['error'][_0x5478('0x11')]);return _0x4f51cc(_0x570fb7[_0x5478('0x10')][_0x5478('0x11')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x1d3646,'request\x20sent');_0x4f51cc(_0x570fb7[_0x5478('0x12')][_0x5478('0x11')]);}})[_0x5478('0x13')](function(_0x3ffeec){logger['error'](_0x5478('0xe'),_0x1d3646,_0x3ffeec);_0x5739cb(_0x3ffeec);});});}exports[_0x5478('0x14')]=function(_0x225db0){var _0x3fe246=this;return new Promise(function(_0x1e4f30,_0x31b305){return db[_0x5478('0x15')][_0x5478('0x16')](_0x225db0[_0x5478('0x17')],{'raw':_0x225db0[_0x5478('0x18')]?_0x225db0[_0x5478('0x18')][_0x5478('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x361d3e){logger['info'](_0x5478('0x14'),_0x225db0);logger[_0x5478('0x1a')](_0x5478('0x14'),_0x225db0,JSON[_0x5478('0x1b')](_0x361d3e));_0x1e4f30(_0x361d3e);})['catch'](function(_0x7e55d9){logger['error'](_0x5478('0x14'),_0x7e55d9['message'],_0x225db0);_0x31b305(_0x3fe246[_0x5478('0x10')](0x1f4,_0x7e55d9[_0x5478('0x11')]));});});};
\ No newline at end of file
+var _0x5e09=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','info','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then'];(function(_0x2bae8a,_0x2ea9e7){var _0x4afb96=function(_0x1213a7){while(--_0x1213a7){_0x2bae8a['push'](_0x2bae8a['shift']());}};_0x4afb96(++_0x2ea9e7);}(_0x5e09,0x198));var _0x95e0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5e09[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x95e0('0x0'));var util=require(_0x95e0('0x1'));var moment=require(_0x95e0('0x2'));var BPromise=require('bluebird');var rs=require(_0x95e0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x95e0('0x4'))['db'];var utils=require(_0x95e0('0x5'));var logger=require(_0x95e0('0x6'))('rpc');var config=require(_0x95e0('0x7'));var jayson=require(_0x95e0('0x8'));var client=jayson[_0x95e0('0x9')][_0x95e0('0xa')]({'port':0x232a});config[_0x95e0('0xb')]=_[_0x95e0('0xc')](config[_0x95e0('0xb')],{'host':_0x95e0('0xd'),'port':0x18eb});var socket=require(_0x95e0('0xe'))(new Redis(config[_0x95e0('0xb')]));require(_0x95e0('0xf'))[_0x95e0('0x10')](socket);function respondWithRpcPromise(_0x2d2887,_0x4ff39f,_0x1ee4dd){return new BPromise(function(_0x4dae10,_0x23119c){return client[_0x95e0('0x11')](_0x2d2887,_0x1ee4dd)['then'](function(_0x38906f){logger[_0x95e0('0x12')](_0x95e0('0x13'),_0x4ff39f,'request\x20sent');logger[_0x95e0('0x14')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x4ff39f,_0x95e0('0x15'),JSON[_0x95e0('0x16')](_0x38906f));if(_0x38906f[_0x95e0('0x17')]){if(_0x38906f[_0x95e0('0x17')][_0x95e0('0x18')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x4ff39f,_0x38906f[_0x95e0('0x17')][_0x95e0('0x19')]);return _0x23119c(_0x38906f[_0x95e0('0x17')][_0x95e0('0x19')]);}logger[_0x95e0('0x17')](_0x95e0('0x13'),_0x4ff39f,_0x38906f['error'][_0x95e0('0x19')]);return _0x4dae10(_0x38906f[_0x95e0('0x17')]['message']);}else{logger[_0x95e0('0x12')](_0x95e0('0x13'),_0x4ff39f,_0x95e0('0x15'));_0x4dae10(_0x38906f['result']['message']);}})[_0x95e0('0x1a')](function(_0x32b7c5){logger[_0x95e0('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x4ff39f,_0x32b7c5);_0x23119c(_0x32b7c5);});});}exports[_0x95e0('0x1b')]=function(_0x141836){var _0x292520=this;return new Promise(function(_0x4a2f13,_0x26867d){return db[_0x95e0('0x1c')][_0x95e0('0x1d')](_0x141836[_0x95e0('0x1e')],{'raw':_0x141836[_0x95e0('0x1f')]?_0x141836[_0x95e0('0x1f')][_0x95e0('0x20')]===undefined?!![]:![]:!![]})[_0x95e0('0x21')](function(_0x2ccdd3){logger[_0x95e0('0x12')]('CreateWhatsappMessage',_0x141836);logger[_0x95e0('0x14')](_0x95e0('0x1b'),_0x141836,JSON[_0x95e0('0x16')](_0x2ccdd3));_0x4a2f13(_0x2ccdd3);})['catch'](function(_0x436fc2){logger[_0x95e0('0x17')](_0x95e0('0x1b'),_0x436fc2[_0x95e0('0x19')],_0x141836);_0x26867d(_0x292520['error'](0x1f4,_0x436fc2[_0x95e0('0x19')]));});});};
\ No newline at end of file
index bd9b355..190c81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa67a=['save','register','whatsappMessage:','./whatsappMessage.events'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa67a,0x1eb));var _0xaa67=function(_0x37e88f,_0x12b915){_0x37e88f=_0x37e88f-0x0;var _0x263589=_0xa67a[_0x37e88f];return _0x263589;};'use strict';var WhatsappMessageEvents=require(_0xaa67('0x0'));var events=[_0xaa67('0x1'),'remove','update'];function createListener(_0x21ce29,_0x44d19d){return function(_0x54982b){_0x44d19d['emit'](_0x21ce29,_0x54982b);};}function removeListener(_0x12c78d,_0x129b19){return function(){WhatsappMessageEvents['removeListener'](_0x12c78d,_0x129b19);};}exports[_0xaa67('0x2')]=function(_0x4cab2e){for(var _0x3b9f83=0x0,_0x380151=events['length'];_0x3b9f83<_0x380151;_0x3b9f83++){var _0x534701=events[_0x3b9f83];var _0xb1b956=createListener(_0xaa67('0x3')+_0x534701,_0x4cab2e);WhatsappMessageEvents['on'](_0x534701,_0xb1b956);}};
\ No newline at end of file
+var _0x1f81=['length','./whatsappMessage.events','save','remove','update','removeListener','register'];(function(_0x34325b,_0x5e5afe){var _0x3da348=function(_0x3bf709){while(--_0x3bf709){_0x34325b['push'](_0x34325b['shift']());}};_0x3da348(++_0x5e5afe);}(_0x1f81,0x127));var _0x11f8=function(_0x87239,_0x38c793){_0x87239=_0x87239-0x0;var _0x53af1e=_0x1f81[_0x87239];return _0x53af1e;};'use strict';var WhatsappMessageEvents=require(_0x11f8('0x0'));var events=[_0x11f8('0x1'),_0x11f8('0x2'),_0x11f8('0x3')];function createListener(_0x4cf563,_0xb436e2){return function(_0x141426){_0xb436e2['emit'](_0x4cf563,_0x141426);};}function removeListener(_0x18e1a1,_0xef36d5){return function(){WhatsappMessageEvents[_0x11f8('0x4')](_0x18e1a1,_0xef36d5);};}exports[_0x11f8('0x5')]=function(_0x54a8ee){for(var _0x3f3443=0x0,_0xe9425e=events[_0x11f8('0x6')];_0x3f3443<_0xe9425e;_0x3f3443++){var _0x4e1882=events[_0x3f3443];var _0x269d17=createListener('whatsappMessage:'+_0x4e1882,_0x54a8ee);WhatsappMessageEvents['on'](_0x4e1882,_0x269d17);}};
\ No newline at end of file
index 177b1cc..7fd6508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb97=['getAgents','post','/:id/users','addAgents','put','update','delete','destroy','removeTeams','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','isAuthenticated','show','/:id/teams'];(function(_0x404b35,_0x16dd9e){var _0x3e53d6=function(_0x5c3545){while(--_0x5c3545){_0x404b35['push'](_0x404b35['shift']());}};_0x3e53d6(++_0x16dd9e);}(_0xbb97,0xf0));var _0x7bb9=function(_0x5bd830,_0x389339){_0x5bd830=_0x5bd830-0x0;var _0x5a76af=_0xbb97[_0x5bd830];return _0x5a76af;};'use strict';var multer=require(_0x7bb9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7bb9('0x1'));var express=require(_0x7bb9('0x2'));var router=express[_0x7bb9('0x3')]();var fs_extra=require(_0x7bb9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7bb9('0x5'));var config=require(_0x7bb9('0x6'));var controller=require(_0x7bb9('0x7'));router[_0x7bb9('0x8')]('/',auth['isAuthenticated'](),controller[_0x7bb9('0x9')]);router['get']('/describe',auth[_0x7bb9('0xa')](),controller['describe']);router[_0x7bb9('0x8')]('/:id',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0xb')]);router[_0x7bb9('0x8')]('/:id/members',auth[_0x7bb9('0xa')](),controller['getMembers']);router[_0x7bb9('0x8')](_0x7bb9('0xc'),auth[_0x7bb9('0xa')](),controller['getTeams']);router['get']('/:id/users',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0xd')]);router[_0x7bb9('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7bb9('0xe')](_0x7bb9('0xc'),auth[_0x7bb9('0xa')](),controller['addTeams']);router[_0x7bb9('0xe')](_0x7bb9('0xf'),auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x10')]);router[_0x7bb9('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x7bb9('0x12')]);router[_0x7bb9('0x13')]('/:id',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x14')]);router['delete']('/:id/teams',auth[_0x7bb9('0xa')](),controller[_0x7bb9('0x15')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x7bb9('0x16')]=router;
\ No newline at end of file
+var _0x5a4d=['removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappQueue.controller','isAuthenticated','get','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','create','post','addTeams','addAgents','put','destroy','delete','removeTeams'];(function(_0x4e9538,_0x1b68bd){var _0x47fe9e=function(_0x1d3277){while(--_0x1d3277){_0x4e9538['push'](_0x4e9538['shift']());}};_0x47fe9e(++_0x1b68bd);}(_0x5a4d,0x1c2));var _0xd5a4=function(_0x392ee1,_0x5851bd){_0x392ee1=_0x392ee1-0x0;var _0x4c213a=_0x5a4d[_0x392ee1];return _0x4c213a;};'use strict';var multer=require(_0xd5a4('0x0'));var util=require(_0xd5a4('0x1'));var path=require('path');var timeout=require(_0xd5a4('0x2'));var express=require(_0xd5a4('0x3'));var router=express[_0xd5a4('0x4')]();var fs_extra=require(_0xd5a4('0x5'));var auth=require(_0xd5a4('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd5a4('0x7'));router['get']('/',auth[_0xd5a4('0x8')](),controller['index']);router[_0xd5a4('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xd5a4('0xa')]);router[_0xd5a4('0x9')](_0xd5a4('0xb'),auth[_0xd5a4('0x8')](),controller[_0xd5a4('0xc')]);router[_0xd5a4('0x9')](_0xd5a4('0xd'),auth[_0xd5a4('0x8')](),controller[_0xd5a4('0xe')]);router[_0xd5a4('0x9')](_0xd5a4('0xf'),auth[_0xd5a4('0x8')](),controller['getTeams']);router['get'](_0xd5a4('0x10'),auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x11')]);router['post']('/',auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x12')]);router[_0xd5a4('0x13')]('/:id/teams',auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x14')]);router[_0xd5a4('0x13')](_0xd5a4('0x10'),auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x15')]);router[_0xd5a4('0x16')]('/:id',auth[_0xd5a4('0x8')](),controller['update']);router['delete']('/:id',auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x17')]);router[_0xd5a4('0x18')]('/:id/teams',auth[_0xd5a4('0x8')](),controller[_0xd5a4('0x19')]);router[_0xd5a4('0x18')](_0xd5a4('0x10'),auth['isAuthenticated'](),controller[_0xd5a4('0x1a')]);module[_0xd5a4('0x1b')]=router;
\ No newline at end of file
index af1f650..2c396fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcffe=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x399599,_0x51b65f){var _0x22202e=function(_0x39fac5){while(--_0x39fac5){_0x399599['push'](_0x399599['shift']());}};_0x22202e(++_0x51b65f);}(_0xcffe,0x1a1));var _0xecff=function(_0x2ffc5d,_0x564eba){_0x2ffc5d=_0x2ffc5d-0x0;var _0x57f0a=_0xcffe[_0x2ffc5d];return _0x57f0a;};'use strict';var Sequelize=require(_0xecff('0x0'));module[_0xecff('0x1')]={'name':{'type':Sequelize[_0xecff('0x2')],'unique':_0xecff('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xecff('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xecff('0x5')](_0xecff('0x6'),_0xecff('0x7'),_0xecff('0x8'))},'description':{'type':Sequelize[_0xecff('0x2')]}};
\ No newline at end of file
+var _0x81d5=['sequelize','exports','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x471448,_0x1c0e9e){var _0x38190b=function(_0x41dd2f){while(--_0x41dd2f){_0x471448['push'](_0x471448['shift']());}};_0x38190b(++_0x1c0e9e);}(_0x81d5,0x1ab));var _0x581d=function(_0x17eac0,_0x58f16){_0x17eac0=_0x17eac0-0x0;var _0x15a432=_0x81d5[_0x17eac0];return _0x15a432;};'use strict';var Sequelize=require(_0x581d('0x0'));module[_0x581d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x581d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x581d('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x581d('0x4')](_0x581d('0x5'),_0x581d('0x6'),'roundrobin')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 254f1f3..677c57e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a9=['undefined','limit','count','Content-Range','apply','save','update','destroy','then','get','WhatsappQueues','UserProfileResource','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','keys','includeAll','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','whatsappPause','getTeams','findOne','Team','voicePause','flatMap','Agents','find','sequelize','transaction','addTeams','each','findOrCreate','forEach','userWhatsappQueue:save','ids','select','field','tq.TeamId','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','toString','SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','emit','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','pick','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','json','offset'];(function(_0x3de07d,_0x5d583b){var _0x1e831e=function(_0x2f8e9c){while(--_0x2f8e9c){_0x3de07d['push'](_0x3de07d['shift']());}};_0x1e831e(++_0x5d583b);}(_0x90a9,0x180));var _0x990a=function(_0x5422fa,_0x2e39ca){_0x5422fa=_0x5422fa-0x0;var _0x1cc9a5=_0x90a9[_0x5422fa];return _0x1cc9a5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x990a('0x0'));var zipdir=require(_0x990a('0x1'));var jsonpatch=require(_0x990a('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x990a('0x3'));var Mustache=require(_0x990a('0x4'));var util=require('util');var path=require(_0x990a('0x5'));var sox=require(_0x990a('0x6'));var csv=require('to-csv');var ejs=require(_0x990a('0x7'));var fs=require('fs');var fs_extra=require(_0x990a('0x8'));var _=require(_0x990a('0x9'));var squel=require('squel');var crypto=require(_0x990a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x990a('0xb'));var toCsv=require(_0x990a('0xc'));var querystring=require(_0x990a('0xd'));var Papa=require(_0x990a('0xe'));var Redis=require(_0x990a('0xf'));var authService=require(_0x990a('0x10'));var qs=require(_0x990a('0x11'));var as=require(_0x990a('0x12'));var hardwareService=require(_0x990a('0x13'));var logger=require(_0x990a('0x14'))('api');var utils=require(_0x990a('0x15'));var config=require(_0x990a('0x16'));var licenseUtil=require(_0x990a('0x17'));var db=require(_0x990a('0x18'))['db'];config[_0x990a('0x19')]=_[_0x990a('0x1a')](config[_0x990a('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x990a('0x1b'))(new Redis(config[_0x990a('0x19')]));require(_0x990a('0x1c'))['register'](socket);function respondWithStatusCode(_0x2d8548,_0x5993b9){_0x5993b9=_0x5993b9||0xcc;return function(_0x3c4d4f){if(_0x3c4d4f){return _0x2d8548[_0x990a('0x1d')](_0x5993b9);}return _0x2d8548[_0x990a('0x1e')](_0x5993b9)['end']();};}function respondWithResult(_0x29ce4e,_0x3a058c){_0x3a058c=_0x3a058c||0xc8;return function(_0x130385){if(_0x130385){return _0x29ce4e[_0x990a('0x1e')](_0x3a058c)[_0x990a('0x1f')](_0x130385);}};}function respondWithFilteredResult(_0x1f7ea5,_0x198ce6){return function(_0x3d4151){if(_0x3d4151){var _0xe376b8=typeof _0x198ce6[_0x990a('0x20')]===_0x990a('0x21')&&typeof _0x198ce6[_0x990a('0x22')]===_0x990a('0x21');var _0x12c108=_0x3d4151[_0x990a('0x23')];var _0x2a95d3=_0xe376b8?0x0:_0x198ce6[_0x990a('0x20')];var _0x2ae0c3=_0xe376b8?_0x3d4151['count']:_0x198ce6[_0x990a('0x20')]+_0x198ce6[_0x990a('0x22')];var _0x188d7b;if(_0x2ae0c3>=_0x12c108){_0x2ae0c3=_0x12c108;_0x188d7b=0xc8;}else{_0x188d7b=0xce;}_0x1f7ea5[_0x990a('0x1e')](_0x188d7b);return _0x1f7ea5['set'](_0x990a('0x24'),_0x2a95d3+'-'+_0x2ae0c3+'/'+_0x12c108)['json'](_0x3d4151);}return null;};}function patchUpdates(_0x451711){return function(_0x580194){try{jsonpatch[_0x990a('0x25')](_0x580194,_0x451711,!![]);}catch(_0x39edb0){return BPromise['reject'](_0x39edb0);}return _0x580194[_0x990a('0x26')]();};}function saveUpdates(_0x2d87a6,_0x3f5ed0){return function(_0x3199ad){if(_0x3199ad){return _0x3199ad[_0x990a('0x27')](_0x2d87a6)['then'](function(_0x3711ff){return _0x3711ff;});}return null;};}function removeEntity(_0x14e8ee,_0x5c897d){return function(_0x2d3628){if(_0x2d3628){return _0x2d3628[_0x990a('0x28')]()[_0x990a('0x29')](function(){var _0x4a36b2=_0x2d3628[_0x990a('0x2a')]({'plain':!![]});var _0x1291ce=_0x990a('0x2b');return db[_0x990a('0x2c')][_0x990a('0x28')]({'where':{'type':_0x1291ce,'resourceId':_0x4a36b2['id']}})['then'](function(){return _0x2d3628;});})['then'](function(){_0x14e8ee[_0x990a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d85b3,_0x2b4524){return function(_0x255dbd){if(!_0x255dbd){_0x3d85b3[_0x990a('0x1d')](0x194);}return _0x255dbd;};}function handleError(_0x115a2c,_0x2395df){_0x2395df=_0x2395df||0x1f4;return function(_0x5c254b){logger['error'](_0x5c254b[_0x990a('0x2d')]);if(_0x5c254b[_0x990a('0x2e')]){delete _0x5c254b[_0x990a('0x2e')];}_0x115a2c[_0x990a('0x1e')](_0x2395df)[_0x990a('0x2f')](_0x5c254b);};}exports[_0x990a('0x30')]=function(_0x5f37d5,_0x5449af){var _0x1c80af={},_0x76d012={},_0x18bbb0={'count':0x0,'rows':[]};var _0xeeb750=_[_0x990a('0x31')](db[_0x990a('0x32')][_0x990a('0x33')],function(_0x64103d){return{'name':_0x64103d[_0x990a('0x34')],'type':_0x64103d['type'][_0x990a('0x35')]};});_0x76d012['model']=_[_0x990a('0x31')](_0xeeb750,_0x990a('0x2e'));_0x76d012[_0x990a('0x36')]=_['keys'](_0x5f37d5[_0x990a('0x36')]);_0x76d012[_0x990a('0x37')]=_[_0x990a('0x38')](_0x76d012[_0x990a('0x39')],_0x76d012[_0x990a('0x36')]);_0x1c80af[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x76d012[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x3b')]));_0x1c80af[_0x990a('0x3a')]=_0x1c80af['attributes'][_0x990a('0x3c')]?_0x1c80af[_0x990a('0x3a')]:_0x76d012['model'];if(!_0x5f37d5['query'][_0x990a('0x3d')](_0x990a('0x3e'))){_0x1c80af['limit']=qs[_0x990a('0x22')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x22')]);_0x1c80af['offset']=qs[_0x990a('0x20')](_0x5f37d5[_0x990a('0x36')][_0x990a('0x20')]);}_0x1c80af[_0x990a('0x3f')]=qs[_0x990a('0x40')](_0x5f37d5['query'][_0x990a('0x40')]);_0x1c80af[_0x990a('0x41')]=qs['filters'](_['pick'](_0x5f37d5[_0x990a('0x36')],_0x76d012[_0x990a('0x37')]),_0xeeb750);if(_0x5f37d5[_0x990a('0x36')][_0x990a('0x42')]){_0x1c80af[_0x990a('0x41')]=_['merge'](_0x1c80af[_0x990a('0x41')],{'$or':_[_0x990a('0x31')](_0xeeb750,function(_0x5842d8){if(_0x5842d8[_0x990a('0x43')]!==_0x990a('0x44')){var _0x106ba1={};_0x106ba1[_0x5842d8[_0x990a('0x2e')]]={'$like':'%'+_0x5f37d5[_0x990a('0x36')]['filter']+'%'};return _0x106ba1;}})});}_0x1c80af=_[_0x990a('0x45')]({},_0x1c80af,_0x5f37d5[_0x990a('0x46')]);var _0x22a972={'where':_0x1c80af[_0x990a('0x41')]};return db[_0x990a('0x32')][_0x990a('0x23')](_0x22a972)[_0x990a('0x29')](function(_0x1b0c04){_0x18bbb0['count']=_0x1b0c04;if(_0x5f37d5[_0x990a('0x36')]['includeAll']){_0x1c80af[_0x990a('0x47')]=[{'all':!![]}];}return db[_0x990a('0x32')][_0x990a('0x48')](_0x1c80af);})['then'](function(_0x51705f){_0x18bbb0[_0x990a('0x49')]=_0x51705f;return _0x18bbb0;})[_0x990a('0x29')](respondWithFilteredResult(_0x5449af,_0x1c80af))[_0x990a('0x4a')](handleError(_0x5449af,null));};exports[_0x990a('0x4b')]=function(_0x4f1948,_0x3ce6ec){var _0x59b8e8={'raw':!![],'where':{'id':_0x4f1948[_0x990a('0x4c')]['id']}},_0x27aa95={};_0x27aa95[_0x990a('0x39')]=_[_0x990a('0x4d')](db[_0x990a('0x32')]['rawAttributes']);_0x27aa95[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x4f1948[_0x990a('0x36')]);_0x27aa95[_0x990a('0x37')]=_[_0x990a('0x38')](_0x27aa95['model'],_0x27aa95[_0x990a('0x36')]);_0x59b8e8[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x27aa95[_0x990a('0x39')],qs['fields'](_0x4f1948[_0x990a('0x36')][_0x990a('0x3b')]));_0x59b8e8[_0x990a('0x3a')]=_0x59b8e8['attributes'][_0x990a('0x3c')]?_0x59b8e8[_0x990a('0x3a')]:_0x27aa95[_0x990a('0x39')];if(_0x4f1948[_0x990a('0x36')][_0x990a('0x4e')]){_0x59b8e8[_0x990a('0x47')]=[{'all':!![]}];}_0x59b8e8=_[_0x990a('0x45')]({},_0x59b8e8,_0x4f1948[_0x990a('0x46')]);return db[_0x990a('0x32')]['find'](_0x59b8e8)[_0x990a('0x29')](handleEntityNotFound(_0x3ce6ec,null))['then'](respondWithResult(_0x3ce6ec,null))[_0x990a('0x4a')](handleError(_0x3ce6ec,null));};exports['create']=function(_0x9802d8,_0x173e66){return db[_0x990a('0x32')]['create'](_0x9802d8[_0x990a('0x4f')],{})[_0x990a('0x29')](function(_0x4ed6d8){var _0x93f8c4=_0x9802d8[_0x990a('0x50')][_0x990a('0x2a')]({'plain':!![]});if(!_0x93f8c4)throw new Error(_0x990a('0x51'));if(_0x93f8c4[_0x990a('0x52')]===_0x990a('0x50')){var _0x14f9f6=_0x4ed6d8[_0x990a('0x2a')]({'plain':!![]});var _0x3c9898=_0x990a('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x3c9898,'userProfileId':_0x93f8c4[_0x990a('0x53')]},'raw':!![]})[_0x990a('0x29')](function(_0x578c75){if(_0x578c75&&_0x578c75['autoAssociation']===0x0){return db[_0x990a('0x2c')]['create']({'name':_0x14f9f6[_0x990a('0x2e')],'resourceId':_0x14f9f6['id'],'type':_0x578c75['name'],'sectionId':_0x578c75['id']},{})[_0x990a('0x29')](function(){return _0x4ed6d8;});}else{return _0x4ed6d8;}})[_0x990a('0x4a')](function(_0x2a7fa1){logger[_0x990a('0x54')](_0x990a('0x55'),_0x2a7fa1);throw _0x2a7fa1;});}return _0x4ed6d8;})[_0x990a('0x29')](respondWithResult(_0x173e66,0xc9))[_0x990a('0x4a')](handleError(_0x173e66,null));};exports['update']=function(_0x2946d1,_0x574378){if(_0x2946d1[_0x990a('0x4f')]['id']){delete _0x2946d1[_0x990a('0x4f')]['id'];}return db[_0x990a('0x32')]['find']({'where':{'id':_0x2946d1[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x574378,null))['then'](saveUpdates(_0x2946d1[_0x990a('0x4f')],null))[_0x990a('0x29')](respondWithResult(_0x574378,null))[_0x990a('0x4a')](handleError(_0x574378,null));};exports[_0x990a('0x28')]=function(_0x6bb2c9,_0x1ca9c7){return db[_0x990a('0x32')]['find']({'where':{'id':_0x6bb2c9[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x1ca9c7,null))[_0x990a('0x29')](removeEntity(_0x1ca9c7,null))[_0x990a('0x4a')](handleError(_0x1ca9c7,null));};exports[_0x990a('0x56')]=function(_0x33e1bc,_0x5550cc){return db['WhatsappQueue'][_0x990a('0x56')]()[_0x990a('0x29')](respondWithResult(_0x5550cc,null))[_0x990a('0x4a')](handleError(_0x5550cc,null));};exports['getMembers']=function(_0x466837,_0x2e1b47,_0x37e059){var _0x40e3e4={'raw':!![],'where':{}},_0x1ba71b={},_0x448005;return db[_0x990a('0x32')]['findOne']({'where':{'id':_0x466837[_0x990a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2e1b47,null))[_0x990a('0x29')](function(_0x5e4094){if(_0x5e4094){_0x448005=_0x5e4094['get']({'plain':!![]});_0x1ba71b[_0x990a('0x39')]=_[_0x990a('0x4d')](db[_0x990a('0x57')][_0x990a('0x33')]);_0x1ba71b[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x466837[_0x990a('0x36')]);_0x1ba71b[_0x990a('0x37')]=_[_0x990a('0x38')](_0x1ba71b[_0x990a('0x39')],_0x1ba71b[_0x990a('0x36')]);_0x40e3e4[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x1ba71b[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x466837[_0x990a('0x36')]['fields']));_0x40e3e4[_0x990a('0x3a')]=_0x40e3e4[_0x990a('0x3a')][_0x990a('0x3c')]?_0x40e3e4[_0x990a('0x3a')]:_0x1ba71b['model'];if(!_0x466837['query'][_0x990a('0x3d')]('nolimit')){_0x40e3e4[_0x990a('0x22')]=qs[_0x990a('0x22')](_0x466837[_0x990a('0x36')][_0x990a('0x22')]);_0x40e3e4[_0x990a('0x20')]=qs['offset'](_0x466837[_0x990a('0x36')][_0x990a('0x20')]);}_0x40e3e4[_0x990a('0x3f')]=qs[_0x990a('0x40')](_0x466837[_0x990a('0x36')][_0x990a('0x40')]);_0x40e3e4[_0x990a('0x41')]=qs['filters'](_['pick'](_0x466837[_0x990a('0x36')],_0x1ba71b[_0x990a('0x37')]));_0x40e3e4[_0x990a('0x41')][_0x990a('0x58')]=_0x5e4094['id'];if(_0x466837[_0x990a('0x36')][_0x990a('0x42')]){_0x40e3e4[_0x990a('0x41')]=_[_0x990a('0x45')](_0x40e3e4[_0x990a('0x41')],{'$or':_['map'](_0x40e3e4[_0x990a('0x3a')],function(_0x23671f){var _0xa580ea={};_0xa580ea[_0x23671f]={'$like':'%'+_0x466837[_0x990a('0x36')][_0x990a('0x42')]+'%'};return _0xa580ea;})});}_0x40e3e4=_['merge']({},_0x40e3e4,_0x466837[_0x990a('0x46')]);return db[_0x990a('0x57')]['findAll'](_0x40e3e4);}})[_0x990a('0x29')](function(_0x98eac0){if(_0x98eac0){return db[_0x990a('0x59')][_0x990a('0x5a')]({'where':{'id':_['map'](_0x98eac0,_0x990a('0x5b')),'role':'agent'},'attributes':['id','name','whatsappPause',_0x990a('0x5c'),_0x990a('0x5d')]});}})['then'](function(_0x534670){if(_0x534670){return{'count':_0x534670[_0x990a('0x23')],'rows':_[_0x990a('0x31')](_0x534670[_0x990a('0x49')],function(_0x16c818){return{'membername':_0x16c818['name'],'UserId':_0x16c818['id'],'queue_name':_0x448005[_0x990a('0x2e')],'WhatsappQueueId':_0x448005['id'],'interface':util[_0x990a('0x5e')]('%s/%s',_0x990a('0x5f'),_0x16c818[_0x990a('0x2e')]),'penalty':0x0,'paused':_0x16c818[_0x990a('0x60')],'createdAt':_0x16c818[_0x990a('0x5d')],'updatedAt':_0x16c818[_0x990a('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2e1b47,_0x40e3e4))['catch'](handleError(_0x2e1b47,null));};exports[_0x990a('0x61')]=function(_0x2973e9,_0x33d7e2,_0x344462){var _0x238998={};var _0x15c6d1={};var _0x29a2c1;var _0x2c05f2;return db['WhatsappQueue'][_0x990a('0x62')]({'where':{'id':_0x2973e9[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x33d7e2,null))[_0x990a('0x29')](function(_0x559f9e){if(_0x559f9e){_0x29a2c1=_0x559f9e;_0x15c6d1['model']=_[_0x990a('0x4d')](db['Team']['rawAttributes']);_0x15c6d1[_0x990a('0x36')]=_['keys'](_0x2973e9[_0x990a('0x36')]);_0x15c6d1[_0x990a('0x37')]=_[_0x990a('0x38')](_0x15c6d1[_0x990a('0x39')],_0x15c6d1[_0x990a('0x36')]);_0x238998[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x15c6d1[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x2973e9[_0x990a('0x36')][_0x990a('0x3b')]));_0x238998['attributes']=_0x238998['attributes'][_0x990a('0x3c')]?_0x238998[_0x990a('0x3a')]:_0x15c6d1[_0x990a('0x39')];_0x238998[_0x990a('0x3f')]=qs['sort'](_0x2973e9[_0x990a('0x36')][_0x990a('0x40')]);_0x238998['where']=qs[_0x990a('0x37')](_['pick'](_0x2973e9[_0x990a('0x36')],_0x15c6d1['filters']));if(_0x2973e9[_0x990a('0x36')][_0x990a('0x42')]){_0x238998[_0x990a('0x41')]=_[_0x990a('0x45')](_0x238998['where'],{'$or':_[_0x990a('0x31')](_0x238998['attributes'],function(_0x4c70d5){var _0x16d965={};_0x16d965[_0x4c70d5]={'$like':'%'+_0x2973e9['query'][_0x990a('0x42')]+'%'};return _0x16d965;})});}_0x238998=_['merge']({},_0x238998,_0x2973e9['options']);return _0x29a2c1[_0x990a('0x61')](_0x238998);}})[_0x990a('0x29')](function(_0x3d1d5b){if(_0x3d1d5b){_0x2c05f2=_0x3d1d5b['length'];if(!_0x2973e9['query'][_0x990a('0x3d')]('nolimit')){_0x238998['limit']=qs[_0x990a('0x22')](_0x2973e9[_0x990a('0x36')][_0x990a('0x22')]);_0x238998[_0x990a('0x20')]=qs['offset'](_0x2973e9[_0x990a('0x36')]['offset']);}return _0x29a2c1[_0x990a('0x61')](_0x238998);}})[_0x990a('0x29')](function(_0x8c7560){if(_0x8c7560){return _0x8c7560?{'count':_0x2c05f2,'rows':_0x8c7560}:null;}})[_0x990a('0x29')](respondWithResult(_0x33d7e2,null))['catch'](handleError(_0x33d7e2,null));};exports['addTeams']=function(_0x32f75d,_0x480695,_0x2b9955){var _0x7a0050=_0x32f75d[_0x990a('0x4f')]['ids'];return db[_0x990a('0x63')][_0x990a('0x48')]({'where':{'id':_0x7a0050},'attributes':['id'],'include':[{'model':db[_0x990a('0x59')],'as':'Agents','attributes':['id',_0x990a('0x2e'),'online',_0x990a('0x64'),'interface'],'raw':!![]}]})[_0x990a('0x29')](function(_0x9f4836){if(_0x9f4836){var _0xbfcfca=_[_0x990a('0x65')](_0x9f4836,function(_0x35f147){var _0x239bb0=_0x35f147[_0x990a('0x2a')]({'plain':!![]});return _0x239bb0[_0x990a('0x66')];});return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x32f75d['params']['id']}})[_0x990a('0x29')](function(_0x2d3d60){return db[_0x990a('0x68')][_0x990a('0x69')](function(_0x5071d8){return _0x2d3d60[_0x990a('0x6a')](_0x7a0050,{'transaction':_0x5071d8})[_0x990a('0x29')](function(){return BPromise[_0x990a('0x6b')](_0xbfcfca,function(_0x1ccb2f){return db['UserWhatsappQueue'][_0x990a('0x6c')]({'where':{'UserId':_0x1ccb2f['id'],'WhatsappQueueId':_0x32f75d['params']['id']},'transaction':_0x5071d8});});})['then'](function(){_0xbfcfca[_0x990a('0x6d')](function(_0xa7078a){socket['emit'](_0x990a('0x6e'),{'UserId':_0xa7078a['id'],'WhatsappQueueId':_0x2d3d60['id']});});});});});}})[_0x990a('0x29')](respondWithStatusCode(_0x480695,null))[_0x990a('0x4a')](handleError(_0x480695,null));};exports['removeTeams']=function(_0x2a31ac,_0x1bc69f,_0x768cc4){return db[_0x990a('0x63')][_0x990a('0x48')]({'where':{'id':_0x2a31ac['query'][_0x990a('0x6f')]},'attributes':['id'],'include':[{'model':db[_0x990a('0x59')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x990a('0x29')](handleEntityNotFound(_0x1bc69f,null))[_0x990a('0x29')](function(_0x56c2a9){var _0x185ec7=_['map'](_0x56c2a9,'id');var _0xc66f30=[];var _0x24a66e=[];var _0x1a4f46=squel[_0x990a('0x70')]();_0x1a4f46[_0x990a('0x71')](_0x990a('0x72'))['from'](_0x990a('0x73'),'tq')['join'](_0x990a('0x74'),'ut',_0x990a('0x75'))[_0x990a('0x41')](_0x990a('0x76'),_0x2a31ac[_0x990a('0x4c')]['id']);for(var _0x214c8f=0x0;_0x214c8f<_0x56c2a9[_0x990a('0x3c')];_0x214c8f+=0x1){let _0x493a51=_0x56c2a9[_0x214c8f];for(var _0x5b0c4e=0x0;_0x5b0c4e<_0x493a51[_0x990a('0x66')][_0x990a('0x3c')];_0x5b0c4e+=0x1){let _0x35c8c9=_0x493a51[_0x990a('0x66')][_0x5b0c4e];var _0x406731=_0x1a4f46[_0x990a('0x77')]();_0x406731[_0x990a('0x41')]('ut.UserId\x20=\x20?',_0x35c8c9['id']);_0x24a66e[_0x990a('0x78')](db[_0x990a('0x68')][_0x990a('0x36')](_0x406731[_0x990a('0x79')](),{'type':db[_0x990a('0x68')]['QueryTypes'][_0x990a('0x7a')]})[_0x990a('0x29')](function(_0x1ca0dd){if(_0x1ca0dd['length']===0x1){return _0x35c8c9['id'];}else{var _0x3cd586=_[_0x990a('0x7b')](_['map'](_0x1ca0dd,_0x990a('0x7c')),function(_0x5f0d9a){return _[_0x990a('0x7d')](_0x185ec7,_0x5f0d9a);});if(_0x3cd586){return _0x35c8c9['id'];}}}));}}return BPromise[_0x990a('0x7e')](_0x24a66e)[_0x990a('0x29')](function(_0x431d3e){_0xc66f30=_(_0xc66f30)[_0x990a('0x7f')](_0x431d3e)[_0x990a('0x80')]()['value']();return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x2a31ac[_0x990a('0x4c')]['id']}})['then'](function(_0x5956b0){return db[_0x990a('0x68')][_0x990a('0x69')](function(_0x1ee87b){return _0x5956b0['removeTeams'](_0x2a31ac[_0x990a('0x36')]['ids'],{'transaction':_0x1ee87b})[_0x990a('0x29')](function(){if(!_[_0x990a('0x81')](_0xc66f30)){return _0x5956b0[_0x990a('0x82')](_0xc66f30,{'transaction':_0x1ee87b});}})[_0x990a('0x29')](function(){_0xc66f30['forEach'](function(_0x461d11){socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':_0x461d11,'WhatsappQueueId':_0x5956b0['id']});});});});});});})[_0x990a('0x29')](respondWithStatusCode(_0x1bc69f,null))['catch'](handleError(_0x1bc69f,null));};exports[_0x990a('0x85')]=function(_0xe0f69b,_0x23d37b,_0x50fe46){return db[_0x990a('0x32')]['find']({'where':{'id':_0xe0f69b[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x23d37b,null))[_0x990a('0x29')](function(_0x5a1c70){if(_0x5a1c70){return _0x5a1c70[_0x990a('0x85')](_0xe0f69b['body'][_0x990a('0x6f')],_[_0x990a('0x86')](_0xe0f69b['body'],[_0x990a('0x6f'),'id'])||{})[_0x990a('0x87')](function(_0x25c5b9){for(var _0x4b7537=0x0;_0x4b7537<_0xe0f69b[_0x990a('0x4f')][_0x990a('0x6f')]['length'];_0x4b7537+=0x1){socket[_0x990a('0x83')](_0x990a('0x6e'),{'UserId':Number(_0xe0f69b[_0x990a('0x4f')]['ids'][_0x4b7537]),'WhatsappQueueId':Number(_0xe0f69b[_0x990a('0x4c')]['id'])});}return _0x25c5b9;});}})['then'](respondWithResult(_0x23d37b,null))[_0x990a('0x4a')](handleError(_0x23d37b,null));};exports[_0x990a('0x82')]=function(_0x2a2e95,_0x129978,_0x4b3ca3){return db[_0x990a('0x32')][_0x990a('0x67')]({'where':{'id':_0x2a2e95[_0x990a('0x4c')]['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x129978,null))[_0x990a('0x29')](function(_0x25bd8a){if(_0x25bd8a){return _0x25bd8a[_0x990a('0x82')](_0x2a2e95[_0x990a('0x36')]['ids'])[_0x990a('0x29')](function(){if(_[_0x990a('0x88')](_0x2a2e95[_0x990a('0x36')]['ids'])){for(var _0x97678f=0x0;_0x97678f<_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')][_0x990a('0x3c')];_0x97678f+=0x1){socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':Number(_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')][_0x97678f]),'WhatsappQueueId':Number(_0x2a2e95[_0x990a('0x4c')]['id'])});}}else{socket[_0x990a('0x83')](_0x990a('0x84'),{'UserId':Number(_0x2a2e95[_0x990a('0x36')][_0x990a('0x6f')]),'WhatsappQueueId':Number(_0x2a2e95['params']['id'])});}});}})['then'](respondWithStatusCode(_0x129978,null))[_0x990a('0x4a')](handleError(_0x129978,null));};exports[_0x990a('0x89')]=function(_0x228017,_0x47eccf,_0x426ee7){var _0x6ff099={};var _0x13c466={};var _0x1b9aa5;var _0x4e2dbc;return db['WhatsappQueue'][_0x990a('0x62')]({'where':{'id':_0x228017['params']['id']}})[_0x990a('0x29')](handleEntityNotFound(_0x47eccf,null))['then'](function(_0x1d92fe){if(_0x1d92fe){_0x1b9aa5=_0x1d92fe;_0x13c466[_0x990a('0x39')]=_[_0x990a('0x4d')](db['User']['rawAttributes']);_0x13c466[_0x990a('0x36')]=_[_0x990a('0x4d')](_0x228017[_0x990a('0x36')]);_0x13c466[_0x990a('0x37')]=_[_0x990a('0x38')](_0x13c466[_0x990a('0x39')],_0x13c466[_0x990a('0x36')]);_0x6ff099[_0x990a('0x3a')]=_[_0x990a('0x38')](_0x13c466[_0x990a('0x39')],qs[_0x990a('0x3b')](_0x228017['query'][_0x990a('0x3b')]));_0x6ff099[_0x990a('0x3a')]=_0x6ff099['attributes'][_0x990a('0x3c')]?_0x6ff099[_0x990a('0x3a')]:_0x13c466[_0x990a('0x39')];_0x6ff099[_0x990a('0x3f')]=qs['sort'](_0x228017[_0x990a('0x36')]['sort']);_0x6ff099[_0x990a('0x41')]=qs[_0x990a('0x37')](_[_0x990a('0x8a')](_0x228017[_0x990a('0x36')],_0x13c466[_0x990a('0x37')]));if(_0x228017[_0x990a('0x36')][_0x990a('0x42')]){_0x6ff099[_0x990a('0x41')]=_[_0x990a('0x45')](_0x6ff099[_0x990a('0x41')],{'$or':_['map'](_0x6ff099[_0x990a('0x3a')],function(_0x471240){var _0x445599={};_0x445599[_0x471240]={'$like':'%'+_0x228017[_0x990a('0x36')][_0x990a('0x42')]+'%'};return _0x445599;})});}_0x6ff099=_[_0x990a('0x45')]({},_0x6ff099,_0x228017[_0x990a('0x46')]);return _0x1b9aa5[_0x990a('0x89')](_0x6ff099);}})[_0x990a('0x29')](function(_0x10012f){if(_0x10012f){_0x4e2dbc=_0x10012f[_0x990a('0x3c')];if(!_0x228017[_0x990a('0x36')][_0x990a('0x3d')](_0x990a('0x3e'))){_0x6ff099[_0x990a('0x22')]=qs['limit'](_0x228017[_0x990a('0x36')][_0x990a('0x22')]);_0x6ff099['offset']=qs[_0x990a('0x20')](_0x228017['query'][_0x990a('0x20')]);}return _0x1b9aa5[_0x990a('0x89')](_0x6ff099);}})[_0x990a('0x29')](function(_0x232791){if(_0x232791){return _0x232791?{'count':_0x4e2dbc,'rows':_0x232791}:null;}})['then'](respondWithResult(_0x47eccf,null))[_0x990a('0x4a')](handleError(_0x47eccf,null));};
\ No newline at end of file
+var _0x6539=['json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','get','WhatsappQueues','UserProfileResource','destroy','sendStatus','stack','name','send','map','WhatsappQueue','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','options','includeAll','include','findAll','catch','show','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','error','params','describe','findOne','UserWhatsappQueue','WhatsappQueueId','User','findAndCountAll','agent','updatedAt','createdAt','rows','SIP','whatsappPause','Team','interface','flatMap','Agents','sequelize','transaction','addTeams','findOrCreate','emit','userWhatsappQueue:save','removeTeams','ids','field','tq.TeamId','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','userWhatsappQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','status','end'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x6539,0xf0));var _0x9653=function(_0x1a9f68,_0x313a5c){_0x1a9f68=_0x1a9f68-0x0;var _0x1d44a3=_0x6539[_0x1a9f68];return _0x1d44a3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9653('0x0'));var zipdir=require(_0x9653('0x1'));var jsonpatch=require(_0x9653('0x2'));var rp=require('request-promise');var moment=require(_0x9653('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9653('0x4'));var util=require(_0x9653('0x5'));var path=require(_0x9653('0x6'));var sox=require(_0x9653('0x7'));var csv=require(_0x9653('0x8'));var ejs=require(_0x9653('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9653('0xa'));var squel=require('squel');var crypto=require(_0x9653('0xb'));var jsforce=require(_0x9653('0xc'));var deskjs=require(_0x9653('0xd'));var toCsv=require(_0x9653('0x8'));var querystring=require(_0x9653('0xe'));var Papa=require(_0x9653('0xf'));var Redis=require(_0x9653('0x10'));var authService=require(_0x9653('0x11'));var qs=require(_0x9653('0x12'));var as=require(_0x9653('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9653('0x14'))(_0x9653('0x15'));var utils=require(_0x9653('0x16'));var config=require(_0x9653('0x17'));var licenseUtil=require(_0x9653('0x18'));var db=require(_0x9653('0x19'))['db'];config[_0x9653('0x1a')]=_['defaults'](config['redis'],{'host':_0x9653('0x1b'),'port':0x18eb});var socket=require(_0x9653('0x1c'))(new Redis(config[_0x9653('0x1a')]));require(_0x9653('0x1d'))['register'](socket);function respondWithStatusCode(_0x58b324,_0x1e0ac8){_0x1e0ac8=_0x1e0ac8||0xcc;return function(_0xe806c2){if(_0xe806c2){return _0x58b324['sendStatus'](_0x1e0ac8);}return _0x58b324[_0x9653('0x1e')](_0x1e0ac8)[_0x9653('0x1f')]();};}function respondWithResult(_0x93c07f,_0x58350a){_0x58350a=_0x58350a||0xc8;return function(_0x5706f7){if(_0x5706f7){return _0x93c07f[_0x9653('0x1e')](_0x58350a)[_0x9653('0x20')](_0x5706f7);}};}function respondWithFilteredResult(_0x1747ea,_0x1e4704){return function(_0x17a5b1){if(_0x17a5b1){var _0x15d3d5=typeof _0x1e4704[_0x9653('0x21')]==='undefined'&&typeof _0x1e4704[_0x9653('0x22')]===_0x9653('0x23');var _0x5e9534=_0x17a5b1[_0x9653('0x24')];var _0x45aeed=_0x15d3d5?0x0:_0x1e4704[_0x9653('0x21')];var _0x3b0a6f=_0x15d3d5?_0x17a5b1[_0x9653('0x24')]:_0x1e4704[_0x9653('0x21')]+_0x1e4704[_0x9653('0x22')];var _0x52987d;if(_0x3b0a6f>=_0x5e9534){_0x3b0a6f=_0x5e9534;_0x52987d=0xc8;}else{_0x52987d=0xce;}_0x1747ea[_0x9653('0x1e')](_0x52987d);return _0x1747ea[_0x9653('0x25')](_0x9653('0x26'),_0x45aeed+'-'+_0x3b0a6f+'/'+_0x5e9534)[_0x9653('0x20')](_0x17a5b1);}return null;};}function patchUpdates(_0x2e3a21){return function(_0x2d1451){try{jsonpatch[_0x9653('0x27')](_0x2d1451,_0x2e3a21,!![]);}catch(_0x30589d){return BPromise['reject'](_0x30589d);}return _0x2d1451[_0x9653('0x28')]();};}function saveUpdates(_0x4e0d75,_0x4aba70){return function(_0x3f6559){if(_0x3f6559){return _0x3f6559[_0x9653('0x29')](_0x4e0d75)[_0x9653('0x2a')](function(_0x1e0df0){return _0x1e0df0;});}return null;};}function removeEntity(_0x159d90,_0x4c8e7a){return function(_0x221465){if(_0x221465){return _0x221465['destroy']()['then'](function(){var _0xf808c5=_0x221465[_0x9653('0x2b')]({'plain':!![]});var _0x544eee=_0x9653('0x2c');return db[_0x9653('0x2d')][_0x9653('0x2e')]({'where':{'type':_0x544eee,'resourceId':_0xf808c5['id']}})['then'](function(){return _0x221465;});})[_0x9653('0x2a')](function(){_0x159d90['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x51c8ef,_0x5cb27f){return function(_0xd73449){if(!_0xd73449){_0x51c8ef[_0x9653('0x2f')](0x194);}return _0xd73449;};}function handleError(_0x22b9f5,_0x30d56b){_0x30d56b=_0x30d56b||0x1f4;return function(_0x1fda8){logger['error'](_0x1fda8[_0x9653('0x30')]);if(_0x1fda8['name']){delete _0x1fda8[_0x9653('0x31')];}_0x22b9f5['status'](_0x30d56b)[_0x9653('0x32')](_0x1fda8);};}exports['index']=function(_0x3faf73,_0x39b290){var _0x378e7c={},_0x4d7542={},_0x239c3a={'count':0x0,'rows':[]};var _0x23d1cb=_[_0x9653('0x33')](db[_0x9653('0x34')]['rawAttributes'],function(_0x5c61be){return{'name':_0x5c61be[_0x9653('0x35')],'type':_0x5c61be['type'][_0x9653('0x36')]};});_0x4d7542[_0x9653('0x37')]=_[_0x9653('0x33')](_0x23d1cb,_0x9653('0x31'));_0x4d7542[_0x9653('0x38')]=_[_0x9653('0x39')](_0x3faf73[_0x9653('0x38')]);_0x4d7542[_0x9653('0x3a')]=_['intersection'](_0x4d7542[_0x9653('0x37')],_0x4d7542['query']);_0x378e7c[_0x9653('0x3b')]=_[_0x9653('0x3c')](_0x4d7542[_0x9653('0x37')],qs['fields'](_0x3faf73[_0x9653('0x38')][_0x9653('0x3d')]));_0x378e7c[_0x9653('0x3b')]=_0x378e7c[_0x9653('0x3b')][_0x9653('0x3e')]?_0x378e7c['attributes']:_0x4d7542['model'];if(!_0x3faf73[_0x9653('0x38')][_0x9653('0x3f')](_0x9653('0x40'))){_0x378e7c[_0x9653('0x22')]=qs[_0x9653('0x22')](_0x3faf73[_0x9653('0x38')][_0x9653('0x22')]);_0x378e7c[_0x9653('0x21')]=qs[_0x9653('0x21')](_0x3faf73[_0x9653('0x38')][_0x9653('0x21')]);}_0x378e7c[_0x9653('0x41')]=qs[_0x9653('0x42')](_0x3faf73[_0x9653('0x38')][_0x9653('0x42')]);_0x378e7c['where']=qs[_0x9653('0x3a')](_[_0x9653('0x43')](_0x3faf73[_0x9653('0x38')],_0x4d7542[_0x9653('0x3a')]),_0x23d1cb);if(_0x3faf73[_0x9653('0x38')][_0x9653('0x44')]){_0x378e7c['where']=_['merge'](_0x378e7c[_0x9653('0x45')],{'$or':_[_0x9653('0x33')](_0x23d1cb,function(_0xd6ac88){if(_0xd6ac88[_0x9653('0x46')]!=='VIRTUAL'){var _0x3cafb9={};_0x3cafb9[_0xd6ac88[_0x9653('0x31')]]={'$like':'%'+_0x3faf73[_0x9653('0x38')][_0x9653('0x44')]+'%'};return _0x3cafb9;}})});}_0x378e7c=_[_0x9653('0x47')]({},_0x378e7c,_0x3faf73[_0x9653('0x48')]);var _0x2ef657={'where':_0x378e7c[_0x9653('0x45')]};return db[_0x9653('0x34')]['count'](_0x2ef657)[_0x9653('0x2a')](function(_0x7ad960){_0x239c3a['count']=_0x7ad960;if(_0x3faf73[_0x9653('0x38')][_0x9653('0x49')]){_0x378e7c[_0x9653('0x4a')]=[{'all':!![]}];}return db[_0x9653('0x34')][_0x9653('0x4b')](_0x378e7c);})['then'](function(_0x4c5089){_0x239c3a['rows']=_0x4c5089;return _0x239c3a;})['then'](respondWithFilteredResult(_0x39b290,_0x378e7c))[_0x9653('0x4c')](handleError(_0x39b290,null));};exports[_0x9653('0x4d')]=function(_0x2222d9,_0x8620a9){var _0x21869f={'raw':!![],'where':{'id':_0x2222d9['params']['id']}},_0x23924f={};_0x23924f['model']=_[_0x9653('0x39')](db[_0x9653('0x34')][_0x9653('0x4e')]);_0x23924f[_0x9653('0x38')]=_[_0x9653('0x39')](_0x2222d9['query']);_0x23924f[_0x9653('0x3a')]=_[_0x9653('0x3c')](_0x23924f['model'],_0x23924f[_0x9653('0x38')]);_0x21869f[_0x9653('0x3b')]=_['intersection'](_0x23924f[_0x9653('0x37')],qs[_0x9653('0x3d')](_0x2222d9[_0x9653('0x38')][_0x9653('0x3d')]));_0x21869f[_0x9653('0x3b')]=_0x21869f[_0x9653('0x3b')][_0x9653('0x3e')]?_0x21869f[_0x9653('0x3b')]:_0x23924f[_0x9653('0x37')];if(_0x2222d9[_0x9653('0x38')][_0x9653('0x49')]){_0x21869f['include']=[{'all':!![]}];}_0x21869f=_[_0x9653('0x47')]({},_0x21869f,_0x2222d9[_0x9653('0x48')]);return db['WhatsappQueue']['find'](_0x21869f)[_0x9653('0x2a')](handleEntityNotFound(_0x8620a9,null))['then'](respondWithResult(_0x8620a9,null))[_0x9653('0x4c')](handleError(_0x8620a9,null));};exports[_0x9653('0x4f')]=function(_0x4bb959,_0x342062){return db[_0x9653('0x34')][_0x9653('0x4f')](_0x4bb959[_0x9653('0x50')],{})[_0x9653('0x2a')](function(_0x3f70c5){var _0x2e34b9=_0x4bb959[_0x9653('0x51')][_0x9653('0x2b')]({'plain':!![]});if(!_0x2e34b9)throw new Error(_0x9653('0x52'));if(_0x2e34b9['role']===_0x9653('0x51')){var _0x394dc4=_0x3f70c5['get']({'plain':!![]});var _0x1ee798=_0x9653('0x2c');return db[_0x9653('0x53')][_0x9653('0x54')]({'where':{'name':_0x1ee798,'userProfileId':_0x2e34b9['userProfileId']},'raw':!![]})[_0x9653('0x2a')](function(_0x586fb7){if(_0x586fb7&&_0x586fb7[_0x9653('0x55')]===0x0){return db[_0x9653('0x2d')][_0x9653('0x4f')]({'name':_0x394dc4[_0x9653('0x31')],'resourceId':_0x394dc4['id'],'type':_0x586fb7['name'],'sectionId':_0x586fb7['id']},{})[_0x9653('0x2a')](function(){return _0x3f70c5;});}else{return _0x3f70c5;}})['catch'](function(_0x1b5e6e){logger[_0x9653('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1b5e6e);throw _0x1b5e6e;});}return _0x3f70c5;})[_0x9653('0x2a')](respondWithResult(_0x342062,0xc9))[_0x9653('0x4c')](handleError(_0x342062,null));};exports[_0x9653('0x29')]=function(_0x1bdf7d,_0x21f3ca){if(_0x1bdf7d['body']['id']){delete _0x1bdf7d[_0x9653('0x50')]['id'];}return db[_0x9653('0x34')][_0x9653('0x54')]({'where':{'id':_0x1bdf7d['params']['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x21f3ca,null))[_0x9653('0x2a')](saveUpdates(_0x1bdf7d[_0x9653('0x50')],null))['then'](respondWithResult(_0x21f3ca,null))[_0x9653('0x4c')](handleError(_0x21f3ca,null));};exports[_0x9653('0x2e')]=function(_0xca5206,_0x23bf33){return db[_0x9653('0x34')][_0x9653('0x54')]({'where':{'id':_0xca5206[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x23bf33,null))['then'](removeEntity(_0x23bf33,null))['catch'](handleError(_0x23bf33,null));};exports[_0x9653('0x58')]=function(_0x1e07b9,_0x5d5dc4){return db[_0x9653('0x34')][_0x9653('0x58')]()[_0x9653('0x2a')](respondWithResult(_0x5d5dc4,null))[_0x9653('0x4c')](handleError(_0x5d5dc4,null));};exports['getMembers']=function(_0x4712c2,_0x346a27,_0x4f2b35){var _0x2ea4eb={'raw':!![],'where':{}},_0x116c5f={},_0x484ec4;return db[_0x9653('0x34')][_0x9653('0x59')]({'where':{'id':_0x4712c2['params']['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x346a27,null))[_0x9653('0x2a')](function(_0x521590){if(_0x521590){_0x484ec4=_0x521590['get']({'plain':!![]});_0x116c5f[_0x9653('0x37')]=_[_0x9653('0x39')](db[_0x9653('0x5a')]['rawAttributes']);_0x116c5f[_0x9653('0x38')]=_[_0x9653('0x39')](_0x4712c2['query']);_0x116c5f['filters']=_[_0x9653('0x3c')](_0x116c5f['model'],_0x116c5f[_0x9653('0x38')]);_0x2ea4eb[_0x9653('0x3b')]=_[_0x9653('0x3c')](_0x116c5f[_0x9653('0x37')],qs[_0x9653('0x3d')](_0x4712c2[_0x9653('0x38')][_0x9653('0x3d')]));_0x2ea4eb['attributes']=_0x2ea4eb[_0x9653('0x3b')][_0x9653('0x3e')]?_0x2ea4eb[_0x9653('0x3b')]:_0x116c5f[_0x9653('0x37')];if(!_0x4712c2[_0x9653('0x38')][_0x9653('0x3f')](_0x9653('0x40'))){_0x2ea4eb[_0x9653('0x22')]=qs[_0x9653('0x22')](_0x4712c2[_0x9653('0x38')][_0x9653('0x22')]);_0x2ea4eb[_0x9653('0x21')]=qs['offset'](_0x4712c2[_0x9653('0x38')]['offset']);}_0x2ea4eb['order']=qs['sort'](_0x4712c2[_0x9653('0x38')]['sort']);_0x2ea4eb[_0x9653('0x45')]=qs['filters'](_[_0x9653('0x43')](_0x4712c2['query'],_0x116c5f[_0x9653('0x3a')]));_0x2ea4eb['where'][_0x9653('0x5b')]=_0x521590['id'];if(_0x4712c2[_0x9653('0x38')]['filter']){_0x2ea4eb[_0x9653('0x45')]=_[_0x9653('0x47')](_0x2ea4eb['where'],{'$or':_['map'](_0x2ea4eb[_0x9653('0x3b')],function(_0x5617ea){var _0x450d75={};_0x450d75[_0x5617ea]={'$like':'%'+_0x4712c2['query'][_0x9653('0x44')]+'%'};return _0x450d75;})});}_0x2ea4eb=_[_0x9653('0x47')]({},_0x2ea4eb,_0x4712c2[_0x9653('0x48')]);return db['UserWhatsappQueue'][_0x9653('0x4b')](_0x2ea4eb);}})[_0x9653('0x2a')](function(_0x292aa6){if(_0x292aa6){return db[_0x9653('0x5c')][_0x9653('0x5d')]({'where':{'id':_[_0x9653('0x33')](_0x292aa6,'UserId'),'role':_0x9653('0x5e')},'attributes':['id',_0x9653('0x31'),'whatsappPause',_0x9653('0x5f'),_0x9653('0x60')]});}})[_0x9653('0x2a')](function(_0x552161){if(_0x552161){return{'count':_0x552161[_0x9653('0x24')],'rows':_[_0x9653('0x33')](_0x552161[_0x9653('0x61')],function(_0x42b4f5){return{'membername':_0x42b4f5[_0x9653('0x31')],'UserId':_0x42b4f5['id'],'queue_name':_0x484ec4['name'],'WhatsappQueueId':_0x484ec4['id'],'interface':util['format']('%s/%s',_0x9653('0x62'),_0x42b4f5[_0x9653('0x31')]),'penalty':0x0,'paused':_0x42b4f5[_0x9653('0x63')],'createdAt':_0x42b4f5['createdAt'],'updatedAt':_0x42b4f5[_0x9653('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9653('0x2a')](respondWithFilteredResult(_0x346a27,_0x2ea4eb))['catch'](handleError(_0x346a27,null));};exports['getTeams']=function(_0x3f4085,_0x25d890,_0x2a69fd){var _0x2bfb83={};var _0x187a5c={};var _0x5abf45;var _0x2475c0;return db['WhatsappQueue'][_0x9653('0x59')]({'where':{'id':_0x3f4085[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x25d890,null))[_0x9653('0x2a')](function(_0x3a1532){if(_0x3a1532){_0x5abf45=_0x3a1532;_0x187a5c[_0x9653('0x37')]=_[_0x9653('0x39')](db[_0x9653('0x64')][_0x9653('0x4e')]);_0x187a5c[_0x9653('0x38')]=_['keys'](_0x3f4085[_0x9653('0x38')]);_0x187a5c[_0x9653('0x3a')]=_['intersection'](_0x187a5c[_0x9653('0x37')],_0x187a5c[_0x9653('0x38')]);_0x2bfb83[_0x9653('0x3b')]=_[_0x9653('0x3c')](_0x187a5c[_0x9653('0x37')],qs[_0x9653('0x3d')](_0x3f4085['query'][_0x9653('0x3d')]));_0x2bfb83[_0x9653('0x3b')]=_0x2bfb83['attributes'][_0x9653('0x3e')]?_0x2bfb83[_0x9653('0x3b')]:_0x187a5c[_0x9653('0x37')];_0x2bfb83['order']=qs['sort'](_0x3f4085[_0x9653('0x38')][_0x9653('0x42')]);_0x2bfb83['where']=qs['filters'](_['pick'](_0x3f4085[_0x9653('0x38')],_0x187a5c['filters']));if(_0x3f4085[_0x9653('0x38')][_0x9653('0x44')]){_0x2bfb83[_0x9653('0x45')]=_[_0x9653('0x47')](_0x2bfb83[_0x9653('0x45')],{'$or':_[_0x9653('0x33')](_0x2bfb83['attributes'],function(_0x4a9093){var _0x1126dd={};_0x1126dd[_0x4a9093]={'$like':'%'+_0x3f4085['query']['filter']+'%'};return _0x1126dd;})});}_0x2bfb83=_[_0x9653('0x47')]({},_0x2bfb83,_0x3f4085[_0x9653('0x48')]);return _0x5abf45['getTeams'](_0x2bfb83);}})[_0x9653('0x2a')](function(_0x2743e2){if(_0x2743e2){_0x2475c0=_0x2743e2[_0x9653('0x3e')];if(!_0x3f4085['query'][_0x9653('0x3f')]('nolimit')){_0x2bfb83[_0x9653('0x22')]=qs['limit'](_0x3f4085[_0x9653('0x38')]['limit']);_0x2bfb83[_0x9653('0x21')]=qs[_0x9653('0x21')](_0x3f4085[_0x9653('0x38')][_0x9653('0x21')]);}return _0x5abf45['getTeams'](_0x2bfb83);}})[_0x9653('0x2a')](function(_0x451b95){if(_0x451b95){return _0x451b95?{'count':_0x2475c0,'rows':_0x451b95}:null;}})[_0x9653('0x2a')](respondWithResult(_0x25d890,null))[_0x9653('0x4c')](handleError(_0x25d890,null));};exports['addTeams']=function(_0x21a82c,_0x10add,_0x5c0a59){var _0x456a24=_0x21a82c[_0x9653('0x50')]['ids'];return db[_0x9653('0x64')][_0x9653('0x4b')]({'where':{'id':_0x456a24},'attributes':['id'],'include':[{'model':db[_0x9653('0x5c')],'as':'Agents','attributes':['id','name','online','voicePause',_0x9653('0x65')],'raw':!![]}]})[_0x9653('0x2a')](function(_0x45b3dc){if(_0x45b3dc){var _0x59f960=_[_0x9653('0x66')](_0x45b3dc,function(_0x563488){var _0x2b9f39=_0x563488[_0x9653('0x2b')]({'plain':!![]});return _0x2b9f39[_0x9653('0x67')];});return db['WhatsappQueue']['find']({'where':{'id':_0x21a82c[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](function(_0x50ce03){return db[_0x9653('0x68')][_0x9653('0x69')](function(_0x139775){return _0x50ce03[_0x9653('0x6a')](_0x456a24,{'transaction':_0x139775})[_0x9653('0x2a')](function(){return BPromise['each'](_0x59f960,function(_0x2a43a0){return db[_0x9653('0x5a')][_0x9653('0x6b')]({'where':{'UserId':_0x2a43a0['id'],'WhatsappQueueId':_0x21a82c['params']['id']},'transaction':_0x139775});});})[_0x9653('0x2a')](function(){_0x59f960['forEach'](function(_0x41076f){socket[_0x9653('0x6c')](_0x9653('0x6d'),{'UserId':_0x41076f['id'],'WhatsappQueueId':_0x50ce03['id']});});});});});}})['then'](respondWithStatusCode(_0x10add,null))['catch'](handleError(_0x10add,null));};exports[_0x9653('0x6e')]=function(_0x547090,_0x28860d,_0x3fd1d6){return db[_0x9653('0x64')][_0x9653('0x4b')]({'where':{'id':_0x547090[_0x9653('0x38')][_0x9653('0x6f')]},'attributes':['id'],'include':[{'model':db[_0x9653('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x9653('0x2a')](handleEntityNotFound(_0x28860d,null))[_0x9653('0x2a')](function(_0x487041){var _0x5ca4ab=_[_0x9653('0x33')](_0x487041,'id');var _0x4601da=[];var _0x57c716=[];var _0x1bd2bb=squel['select']();_0x1bd2bb[_0x9653('0x70')](_0x9653('0x71'))[_0x9653('0x72')](_0x9653('0x73'),'tq')[_0x9653('0x74')]('user_has_teams','ut',_0x9653('0x75'))['where'](_0x9653('0x76'),_0x547090['params']['id']);for(var _0x74facc=0x0;_0x74facc<_0x487041[_0x9653('0x3e')];_0x74facc+=0x1){let _0x4074d7=_0x487041[_0x74facc];for(var _0x544947=0x0;_0x544947<_0x4074d7[_0x9653('0x67')][_0x9653('0x3e')];_0x544947+=0x1){let _0xd1cebd=_0x4074d7[_0x9653('0x67')][_0x544947];var _0x1b44a5=_0x1bd2bb['clone']();_0x1b44a5[_0x9653('0x45')](_0x9653('0x77'),_0xd1cebd['id']);_0x57c716[_0x9653('0x78')](db[_0x9653('0x68')][_0x9653('0x38')](_0x1b44a5[_0x9653('0x79')](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x9653('0x2a')](function(_0x193069){if(_0x193069[_0x9653('0x3e')]===0x1){return _0xd1cebd['id'];}else{var _0x529dca=_['every'](_['map'](_0x193069,_0x9653('0x7a')),function(_0x18e41b){return _[_0x9653('0x7b')](_0x5ca4ab,_0x18e41b);});if(_0x529dca){return _0xd1cebd['id'];}}}));}}return BPromise[_0x9653('0x7c')](_0x57c716)[_0x9653('0x2a')](function(_0x26694f){_0x4601da=_(_0x4601da)[_0x9653('0x7d')](_0x26694f)[_0x9653('0x7e')]()[_0x9653('0x7f')]();return db[_0x9653('0x34')][_0x9653('0x54')]({'where':{'id':_0x547090['params']['id']}})[_0x9653('0x2a')](function(_0x4f695){return db[_0x9653('0x68')][_0x9653('0x69')](function(_0xc09ea1){return _0x4f695[_0x9653('0x6e')](_0x547090[_0x9653('0x38')]['ids'],{'transaction':_0xc09ea1})[_0x9653('0x2a')](function(){if(!_[_0x9653('0x80')](_0x4601da)){return _0x4f695[_0x9653('0x81')](_0x4601da,{'transaction':_0xc09ea1});}})['then'](function(){_0x4601da['forEach'](function(_0x4e61a2){socket[_0x9653('0x6c')]('userWhatsappQueue:remove',{'UserId':_0x4e61a2,'WhatsappQueueId':_0x4f695['id']});});});});});});})['then'](respondWithStatusCode(_0x28860d,null))['catch'](handleError(_0x28860d,null));};exports['addAgents']=function(_0x51e3a7,_0xc3af7f,_0x3e863c){return db[_0x9653('0x34')][_0x9653('0x54')]({'where':{'id':_0x51e3a7[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0xc3af7f,null))['then'](function(_0x4b3258){if(_0x4b3258){return _0x4b3258[_0x9653('0x82')](_0x51e3a7['body']['ids'],_[_0x9653('0x83')](_0x51e3a7['body'],['ids','id'])||{})[_0x9653('0x84')](function(_0x2d347c){for(var _0x4df159=0x0;_0x4df159<_0x51e3a7[_0x9653('0x50')][_0x9653('0x6f')][_0x9653('0x3e')];_0x4df159+=0x1){socket[_0x9653('0x6c')](_0x9653('0x6d'),{'UserId':Number(_0x51e3a7['body']['ids'][_0x4df159]),'WhatsappQueueId':Number(_0x51e3a7[_0x9653('0x57')]['id'])});}return _0x2d347c;});}})[_0x9653('0x2a')](respondWithResult(_0xc3af7f,null))[_0x9653('0x4c')](handleError(_0xc3af7f,null));};exports[_0x9653('0x81')]=function(_0x43ae86,_0x35f2db,_0x14f2f2){return db[_0x9653('0x34')][_0x9653('0x54')]({'where':{'id':_0x43ae86[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x35f2db,null))[_0x9653('0x2a')](function(_0x54a889){if(_0x54a889){return _0x54a889[_0x9653('0x81')](_0x43ae86[_0x9653('0x38')][_0x9653('0x6f')])['then'](function(){if(_[_0x9653('0x85')](_0x43ae86[_0x9653('0x38')][_0x9653('0x6f')])){for(var _0x313986=0x0;_0x313986<_0x43ae86[_0x9653('0x38')]['ids']['length'];_0x313986+=0x1){socket[_0x9653('0x6c')](_0x9653('0x86'),{'UserId':Number(_0x43ae86[_0x9653('0x38')][_0x9653('0x6f')][_0x313986]),'WhatsappQueueId':Number(_0x43ae86[_0x9653('0x57')]['id'])});}}else{socket[_0x9653('0x6c')](_0x9653('0x86'),{'UserId':Number(_0x43ae86['query']['ids']),'WhatsappQueueId':Number(_0x43ae86[_0x9653('0x57')]['id'])});}});}})[_0x9653('0x2a')](respondWithStatusCode(_0x35f2db,null))['catch'](handleError(_0x35f2db,null));};exports[_0x9653('0x87')]=function(_0xc84dc3,_0x3d9ba1,_0x2decd6){var _0x2890e2={};var _0x3ad0e6={};var _0x43ffa5;var _0x2bb629;return db['WhatsappQueue'][_0x9653('0x59')]({'where':{'id':_0xc84dc3[_0x9653('0x57')]['id']}})[_0x9653('0x2a')](handleEntityNotFound(_0x3d9ba1,null))['then'](function(_0x315075){if(_0x315075){_0x43ffa5=_0x315075;_0x3ad0e6[_0x9653('0x37')]=_[_0x9653('0x39')](db[_0x9653('0x5c')][_0x9653('0x4e')]);_0x3ad0e6[_0x9653('0x38')]=_['keys'](_0xc84dc3[_0x9653('0x38')]);_0x3ad0e6[_0x9653('0x3a')]=_[_0x9653('0x3c')](_0x3ad0e6[_0x9653('0x37')],_0x3ad0e6[_0x9653('0x38')]);_0x2890e2[_0x9653('0x3b')]=_['intersection'](_0x3ad0e6['model'],qs[_0x9653('0x3d')](_0xc84dc3[_0x9653('0x38')][_0x9653('0x3d')]));_0x2890e2[_0x9653('0x3b')]=_0x2890e2[_0x9653('0x3b')][_0x9653('0x3e')]?_0x2890e2[_0x9653('0x3b')]:_0x3ad0e6['model'];_0x2890e2[_0x9653('0x41')]=qs['sort'](_0xc84dc3[_0x9653('0x38')]['sort']);_0x2890e2[_0x9653('0x45')]=qs[_0x9653('0x3a')](_[_0x9653('0x43')](_0xc84dc3[_0x9653('0x38')],_0x3ad0e6[_0x9653('0x3a')]));if(_0xc84dc3[_0x9653('0x38')][_0x9653('0x44')]){_0x2890e2[_0x9653('0x45')]=_[_0x9653('0x47')](_0x2890e2['where'],{'$or':_['map'](_0x2890e2[_0x9653('0x3b')],function(_0xca697d){var _0x54f142={};_0x54f142[_0xca697d]={'$like':'%'+_0xc84dc3[_0x9653('0x38')][_0x9653('0x44')]+'%'};return _0x54f142;})});}_0x2890e2=_[_0x9653('0x47')]({},_0x2890e2,_0xc84dc3['options']);return _0x43ffa5[_0x9653('0x87')](_0x2890e2);}})[_0x9653('0x2a')](function(_0x39a076){if(_0x39a076){_0x2bb629=_0x39a076['length'];if(!_0xc84dc3[_0x9653('0x38')][_0x9653('0x3f')](_0x9653('0x40'))){_0x2890e2[_0x9653('0x22')]=qs[_0x9653('0x22')](_0xc84dc3['query'][_0x9653('0x22')]);_0x2890e2[_0x9653('0x21')]=qs[_0x9653('0x21')](_0xc84dc3['query'][_0x9653('0x21')]);}return _0x43ffa5['getAgents'](_0x2890e2);}})[_0x9653('0x2a')](function(_0x52eb90){if(_0x52eb90){return _0x52eb90?{'count':_0x2bb629,'rows':_0x52eb90}:null;}})[_0x9653('0x2a')](respondWithResult(_0x3d9ba1,null))[_0x9653('0x4c')](handleError(_0x3d9ba1,null));};
\ No newline at end of file
index 866d636..2064dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ba5=['../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x4ee5bb,_0x1a0c56){var _0xa01c1a=function(_0x3ab3f7){while(--_0x3ab3f7){_0x4ee5bb['push'](_0x4ee5bb['shift']());}};_0xa01c1a(++_0x1a0c56);}(_0x9ba5,0xe0));var _0x59ba=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0x9ba5[_0xd0b415];return _0x2bdf2c;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x59ba('0x0'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x59ba('0x1')](0x0);var events={'afterCreate':_0x59ba('0x2'),'afterUpdate':_0x59ba('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3cf74c){return function(_0x5ca46a,_0x1b2e78,_0x17c404){WhatsappQueueEvents[_0x59ba('0x4')](_0x3cf74c+':'+_0x5ca46a['id'],_0x5ca46a);WhatsappQueueEvents[_0x59ba('0x4')](_0x3cf74c,_0x5ca46a);_0x17c404(null);};}for(var e in events){if(events[_0x59ba('0x5')](e)){var event=events[e];WhatsappQueue[_0x59ba('0x6')](e,emitEvent(event));}}module[_0x59ba('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x589f=['../../mysqldb','WhatsappQueue','update','emit','hasOwnProperty','hook','events'];(function(_0x3f3acb,_0x5575d5){var _0x1d8999=function(_0x3dcb9f){while(--_0x3dcb9f){_0x3f3acb['push'](_0x3f3acb['shift']());}};_0x1d8999(++_0x5575d5);}(_0x589f,0x92));var _0xf589=function(_0x3cb6fa,_0x516f15){_0x3cb6fa=_0x3cb6fa-0x0;var _0x4d786e=_0x589f[_0x3cb6fa];return _0x4d786e;};'use strict';var EventEmitter=require(_0xf589('0x0'));var WhatsappQueue=require(_0xf589('0x1'))['db'][_0xf589('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf589('0x3'),'afterDestroy':'remove'};function emitEvent(_0x539315){return function(_0x368dac,_0x54847a,_0x605715){WhatsappQueueEvents[_0xf589('0x4')](_0x539315+':'+_0x368dac['id'],_0x368dac);WhatsappQueueEvents['emit'](_0x539315,_0x368dac);_0x605715(null);};}for(var e in events){if(events[_0xf589('0x5')](e)){var event=events[e];WhatsappQueue[_0xf589('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 9b63bc2..da0f6bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x157e=['exports','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./whatsappQueue.attributes'];(function(_0x11abf3,_0x5c5fdd){var _0x5ea08f=function(_0x273a0b){while(--_0x273a0b){_0x11abf3['push'](_0x11abf3['shift']());}};_0x5ea08f(++_0x5c5fdd);}(_0x157e,0x1f3));var _0xe157=function(_0x34473f,_0x2b9c5c){_0x34473f=_0x34473f-0x0;var _0x25cf6f=_0x157e[_0x34473f];return _0x25cf6f;};'use strict';var _=require(_0xe157('0x0'));var util=require('util');var logger=require(_0xe157('0x1'))(_0xe157('0x2'));var moment=require('moment');var BPromise=require(_0xe157('0x3'));var rp=require(_0xe157('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe157('0x5'));var config=require('../../config/environment');var attributes=require(_0xe157('0x6'));module[_0xe157('0x7')]=function(_0xf8ca3f,_0x5200b0){return _0xf8ca3f[_0xe157('0x8')](_0xe157('0x9'),attributes,{'tableName':_0xe157('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87dc=['api','moment','bluebird','request-promise','../../config/environment','./whatsappQueue.attributes','exports','WhatsappQueue','whatsapp_queues'];(function(_0x5e6bec,_0x1eb54d){var _0x5dc5cf=function(_0x59429a){while(--_0x59429a){_0x5e6bec['push'](_0x5e6bec['shift']());}};_0x5dc5cf(++_0x1eb54d);}(_0x87dc,0x1ef));var _0xc87d=function(_0x4cd397,_0x59742e){_0x4cd397=_0x4cd397-0x0;var _0x49d9f5=_0x87dc[_0x4cd397];return _0x49d9f5;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xc87d('0x0'));var moment=require(_0xc87d('0x1'));var BPromise=require(_0xc87d('0x2'));var rp=require(_0xc87d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc87d('0x4'));var attributes=require(_0xc87d('0x5'));module[_0xc87d('0x6')]=function(_0x2edd99,_0x4732d7){return _0x2edd99['define'](_0xc87d('0x7'),attributes,{'tableName':_0xc87d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9595540..e709fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34be=['attributes','include','map','model','stringify','ShowWhatsappQueue','WhatsappQueue','find','where','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','GetWhatsappQueue','findAll','raw','options'];(function(_0x4fa7e9,_0x295394){var _0xf6264d=function(_0x50bf04){while(--_0x50bf04){_0x4fa7e9['push'](_0x4fa7e9['shift']());}};_0xf6264d(++_0x295394);}(_0x34be,0x75));var _0xe34b=function(_0x363b81,_0x81e6ca){_0x363b81=_0x363b81-0x0;var _0x1d92fb=_0x34be[_0x363b81];return _0x1d92fb;};'use strict';var _=require('lodash');var util=require(_0xe34b('0x0'));var moment=require(_0xe34b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe34b('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe34b('0x3'));var logger=require(_0xe34b('0x4'))(_0xe34b('0x5'));var config=require(_0xe34b('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe34b('0x7')]({'port':0x232a});config[_0xe34b('0x8')]=_[_0xe34b('0x9')](config['redis'],{'host':_0xe34b('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe34b('0x8')]));require(_0xe34b('0xb'))['register'](socket);function respondWithRpcPromise(_0x58f10a,_0x1f9586,_0x14ab5c){return new BPromise(function(_0x337719,_0x5039df){return client[_0xe34b('0xc')](_0x58f10a,_0x14ab5c)[_0xe34b('0xd')](function(_0xd947e6){logger[_0xe34b('0xe')](_0xe34b('0xf'),_0x1f9586,_0xe34b('0x10'));logger[_0xe34b('0x11')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x1f9586,_0xe34b('0x10'),JSON['stringify'](_0xd947e6));if(_0xd947e6[_0xe34b('0x12')]){if(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x13')]===0x1f4){logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0xd947e6['error']['message']);return _0x5039df(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);}logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);return _0x337719(_0xd947e6[_0xe34b('0x12')][_0xe34b('0x14')]);}else{logger[_0xe34b('0xe')](_0xe34b('0xf'),_0x1f9586,_0xe34b('0x10'));_0x337719(_0xd947e6[_0xe34b('0x15')][_0xe34b('0x14')]);}})[_0xe34b('0x16')](function(_0x49aeac){logger[_0xe34b('0x12')](_0xe34b('0xf'),_0x1f9586,_0x49aeac);_0x5039df(_0x49aeac);});});}exports[_0xe34b('0x17')]=function(_0x573c5b){var _0x21de75=this;return new Promise(function(_0x123ceb,_0x30287f){return db['WhatsappQueue'][_0xe34b('0x18')]({'raw':_0x573c5b['options']?_0x573c5b['options'][_0xe34b('0x19')]===undefined?!![]:![]:!![],'where':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')]['where']||null:null,'attributes':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')][_0xe34b('0x1b')]||null:null,'limit':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b[_0xe34b('0x1a')]['limit']||null:null,'include':_0x573c5b[_0xe34b('0x1a')]?_0x573c5b['options'][_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x573c5b['options']['include'],function(_0x2e09ef){return{'model':db[_0x2e09ef[_0xe34b('0x1e')]],'as':_0x2e09ef['as'],'attributes':_0x2e09ef[_0xe34b('0x1b')],'include':_0x2e09ef[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2e09ef[_0xe34b('0x1c')],function(_0x2ae6b8){return{'model':db[_0x2ae6b8[_0xe34b('0x1e')]],'as':_0x2ae6b8['as'],'attributes':_0x2ae6b8[_0xe34b('0x1b')],'include':_0x2ae6b8[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2ae6b8[_0xe34b('0x1c')],function(_0x132864){return{'model':db[_0x132864[_0xe34b('0x1e')]],'as':_0x132864['as'],'attributes':_0x132864[_0xe34b('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x46af69){logger['info'](_0xe34b('0x17'),_0x573c5b);logger['debug']('GetWhatsappQueue',_0x573c5b,JSON[_0xe34b('0x1f')](_0x46af69));_0x123ceb(_0x46af69);})[_0xe34b('0x16')](function(_0xa20a43){logger[_0xe34b('0x12')]('GetWhatsappQueue',_0xa20a43[_0xe34b('0x14')],_0x573c5b);_0x30287f(_0x21de75[_0xe34b('0x12')](0x1f4,_0xa20a43[_0xe34b('0x14')]));});});};exports[_0xe34b('0x20')]=function(_0x533aa2){var _0x6b57e8=this;return new Promise(function(_0xecf113,_0x10fccb){return db[_0xe34b('0x21')][_0xe34b('0x22')]({'raw':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2[_0xe34b('0x1a')][_0xe34b('0x19')]===undefined?!![]:![]:!![],'where':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2['options'][_0xe34b('0x23')]||null:null,'attributes':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2[_0xe34b('0x1a')][_0xe34b('0x1b')]||null:null,'include':_0x533aa2[_0xe34b('0x1a')]?_0x533aa2['options'][_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x533aa2['options'][_0xe34b('0x1c')],function(_0x268aac){return{'model':db[_0x268aac[_0xe34b('0x1e')]],'as':_0x268aac['as'],'attributes':_0x268aac[_0xe34b('0x1b')],'include':_0x268aac['include']?_[_0xe34b('0x1d')](_0x268aac[_0xe34b('0x1c')],function(_0x2d772c){return{'model':db[_0x2d772c[_0xe34b('0x1e')]],'as':_0x2d772c['as'],'attributes':_0x2d772c[_0xe34b('0x1b')],'include':_0x2d772c[_0xe34b('0x1c')]?_[_0xe34b('0x1d')](_0x2d772c[_0xe34b('0x1c')],function(_0x3e25d8){return{'model':db[_0x3e25d8[_0xe34b('0x1e')]],'as':_0x3e25d8['as'],'attributes':_0x3e25d8[_0xe34b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe34b('0xd')](function(_0x453a60){logger[_0xe34b('0xe')]('ShowWhatsappQueue',_0x533aa2);logger[_0xe34b('0x11')](_0xe34b('0x20'),_0x533aa2,JSON[_0xe34b('0x1f')](_0x453a60));_0xecf113(_0x453a60);})[_0xe34b('0x16')](function(_0xe9239e){logger[_0xe34b('0x12')](_0xe34b('0x20'),_0xe9239e[_0xe34b('0x14')],_0x533aa2);_0x10fccb(_0x6b57e8[_0xe34b('0x12')](0x1f4,_0xe9239e[_0xe34b('0x14')]));});});};
\ No newline at end of file
+var _0x773f=['stringify','ShowWhatsappQueue','find','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','./whatsappQueue.socket','request','then','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','WhatsappQueue,\x20%s,\x20%s','message','info','catch','WhatsappQueue','findAll','options','where','attributes','limit','include','map','model','GetWhatsappQueue'];(function(_0x4c852c,_0x3114a1){var _0x2e3b3f=function(_0x3ac9f7){while(--_0x3ac9f7){_0x4c852c['push'](_0x4c852c['shift']());}};_0x2e3b3f(++_0x3114a1);}(_0x773f,0x1a5));var _0xf773=function(_0x2085f3,_0x50105b){_0x2085f3=_0x2085f3-0x0;var _0x384e3c=_0x773f[_0x2085f3];return _0x384e3c;};'use strict';var _=require(_0xf773('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf773('0x1'));var rs=require(_0xf773('0x2'));var fs=require('fs');var Redis=require(_0xf773('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf773('0x4'));var logger=require(_0xf773('0x5'))(_0xf773('0x6'));var config=require(_0xf773('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf773('0x8')][_0xf773('0x9')]({'port':0x232a});config['redis']=_[_0xf773('0xa')](config[_0xf773('0xb')],{'host':_0xf773('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf773('0xd'))['register'](socket);function respondWithRpcPromise(_0x4ef33b,_0x205a35,_0x1b90ce){return new BPromise(function(_0x723fed,_0x11988d){return client[_0xf773('0xe')](_0x4ef33b,_0x1b90ce)[_0xf773('0xf')](function(_0x3dfde0){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x205a35,_0xf773('0x10'));logger[_0xf773('0x11')](_0xf773('0x12'),_0x205a35,'request\x20sent',JSON['stringify'](_0x3dfde0));if(_0x3dfde0[_0xf773('0x13')]){if(_0x3dfde0[_0xf773('0x13')][_0xf773('0x14')]===0x1f4){logger[_0xf773('0x13')](_0xf773('0x15'),_0x205a35,_0x3dfde0['error'][_0xf773('0x16')]);return _0x11988d(_0x3dfde0[_0xf773('0x13')][_0xf773('0x16')]);}logger['error'](_0xf773('0x15'),_0x205a35,_0x3dfde0['error']['message']);return _0x723fed(_0x3dfde0[_0xf773('0x13')][_0xf773('0x16')]);}else{logger[_0xf773('0x17')](_0xf773('0x15'),_0x205a35,'request\x20sent');_0x723fed(_0x3dfde0['result'][_0xf773('0x16')]);}})[_0xf773('0x18')](function(_0xec2cfc){logger[_0xf773('0x13')](_0xf773('0x15'),_0x205a35,_0xec2cfc);_0x11988d(_0xec2cfc);});});}exports['GetWhatsappQueue']=function(_0x95dc1f){var _0x389122=this;return new Promise(function(_0x152b4d,_0x6fc01d){return db[_0xf773('0x19')][_0xf773('0x1a')]({'raw':_0x95dc1f[_0xf773('0x1b')]?_0x95dc1f[_0xf773('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x95dc1f['options']?_0x95dc1f[_0xf773('0x1b')][_0xf773('0x1c')]||null:null,'attributes':_0x95dc1f[_0xf773('0x1b')]?_0x95dc1f[_0xf773('0x1b')][_0xf773('0x1d')]||null:null,'limit':_0x95dc1f[_0xf773('0x1b')]?_0x95dc1f[_0xf773('0x1b')][_0xf773('0x1e')]||null:null,'include':_0x95dc1f[_0xf773('0x1b')]?_0x95dc1f[_0xf773('0x1b')][_0xf773('0x1f')]?_[_0xf773('0x20')](_0x95dc1f[_0xf773('0x1b')]['include'],function(_0x4db6d7){return{'model':db[_0x4db6d7['model']],'as':_0x4db6d7['as'],'attributes':_0x4db6d7[_0xf773('0x1d')],'include':_0x4db6d7[_0xf773('0x1f')]?_[_0xf773('0x20')](_0x4db6d7[_0xf773('0x1f')],function(_0x1e014e){return{'model':db[_0x1e014e[_0xf773('0x21')]],'as':_0x1e014e['as'],'attributes':_0x1e014e['attributes'],'include':_0x1e014e[_0xf773('0x1f')]?_[_0xf773('0x20')](_0x1e014e[_0xf773('0x1f')],function(_0x43bd70){return{'model':db[_0x43bd70[_0xf773('0x21')]],'as':_0x43bd70['as'],'attributes':_0x43bd70['attributes']};}):[]};}):[]};}):[]:[]})[_0xf773('0xf')](function(_0x25de04){logger[_0xf773('0x17')](_0xf773('0x22'),_0x95dc1f);logger[_0xf773('0x11')](_0xf773('0x22'),_0x95dc1f,JSON[_0xf773('0x23')](_0x25de04));_0x152b4d(_0x25de04);})[_0xf773('0x18')](function(_0x5242a8){logger['error']('GetWhatsappQueue',_0x5242a8[_0xf773('0x16')],_0x95dc1f);_0x6fc01d(_0x389122['error'](0x1f4,_0x5242a8[_0xf773('0x16')]));});});};exports[_0xf773('0x24')]=function(_0x5b6640){var _0x2a203a=this;return new Promise(function(_0x42bffb,_0x47f118){return db[_0xf773('0x19')][_0xf773('0x25')]({'raw':_0x5b6640[_0xf773('0x1b')]?_0x5b6640[_0xf773('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5b6640[_0xf773('0x1b')]?_0x5b6640[_0xf773('0x1b')][_0xf773('0x1c')]||null:null,'attributes':_0x5b6640['options']?_0x5b6640[_0xf773('0x1b')][_0xf773('0x1d')]||null:null,'include':_0x5b6640[_0xf773('0x1b')]?_0x5b6640[_0xf773('0x1b')][_0xf773('0x1f')]?_[_0xf773('0x20')](_0x5b6640[_0xf773('0x1b')][_0xf773('0x1f')],function(_0x45ca30){return{'model':db[_0x45ca30[_0xf773('0x21')]],'as':_0x45ca30['as'],'attributes':_0x45ca30[_0xf773('0x1d')],'include':_0x45ca30['include']?_[_0xf773('0x20')](_0x45ca30['include'],function(_0x313066){return{'model':db[_0x313066[_0xf773('0x21')]],'as':_0x313066['as'],'attributes':_0x313066['attributes'],'include':_0x313066[_0xf773('0x1f')]?_[_0xf773('0x20')](_0x313066[_0xf773('0x1f')],function(_0xf17e37){return{'model':db[_0xf17e37[_0xf773('0x21')]],'as':_0xf17e37['as'],'attributes':_0xf17e37['attributes']};}):[]};}):[]};}):[]:[]})[_0xf773('0xf')](function(_0x3bd13e){logger[_0xf773('0x17')](_0xf773('0x24'),_0x5b6640);logger[_0xf773('0x11')](_0xf773('0x24'),_0x5b6640,JSON[_0xf773('0x23')](_0x3bd13e));_0x42bffb(_0x3bd13e);})[_0xf773('0x18')](function(_0x323b9f){logger[_0xf773('0x13')]('ShowWhatsappQueue',_0x323b9f[_0xf773('0x16')],_0x5b6640);_0x47f118(_0x2a203a['error'](0x1f4,_0x323b9f[_0xf773('0x16')]));});});};
\ No newline at end of file
index 634da8f..5d2826d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c79=['remove','update','emit','length','whatsappQueue:'];(function(_0x231d5a,_0x15ae0c){var _0x2253dd=function(_0x548b80){while(--_0x548b80){_0x231d5a['push'](_0x231d5a['shift']());}};_0x2253dd(++_0x15ae0c);}(_0x3c79,0x1cc));var _0x93c7=function(_0x13a436,_0x2d70b5){_0x13a436=_0x13a436-0x0;var _0x233b30=_0x3c79[_0x13a436];return _0x233b30;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0x93c7('0x0'),_0x93c7('0x1')];function createListener(_0x598669,_0x4243bd){return function(_0x57aa75){_0x4243bd[_0x93c7('0x2')](_0x598669,_0x57aa75);};}function removeListener(_0x4aaf67,_0x449081){return function(){WhatsappQueueEvents['removeListener'](_0x4aaf67,_0x449081);};}exports['register']=function(_0x1bdb50){for(var _0x1efe06=0x0,_0x7a7515=events[_0x93c7('0x3')];_0x1efe06<_0x7a7515;_0x1efe06++){var _0x534a21=events[_0x1efe06];var _0x2247b8=createListener(_0x93c7('0x4')+_0x534a21,_0x1bdb50);WhatsappQueueEvents['on'](_0x534a21,_0x2247b8);}};
\ No newline at end of file
+var _0xd205=['remove','emit','removeListener','register','length','./whatsappQueue.events','save'];(function(_0x253d42,_0x2dfadc){var _0x1f3a0f=function(_0x1bbf66){while(--_0x1bbf66){_0x253d42['push'](_0x253d42['shift']());}};_0x1f3a0f(++_0x2dfadc);}(_0xd205,0x9f));var _0x5d20=function(_0x2ebf98,_0x321876){_0x2ebf98=_0x2ebf98-0x0;var _0x7399ff=_0xd205[_0x2ebf98];return _0x7399ff;};'use strict';var WhatsappQueueEvents=require(_0x5d20('0x0'));var events=[_0x5d20('0x1'),_0x5d20('0x2'),'update'];function createListener(_0x4b9133,_0x196d8e){return function(_0x5986e2){_0x196d8e[_0x5d20('0x3')](_0x4b9133,_0x5986e2);};}function removeListener(_0x53b179,_0x1604ce){return function(){WhatsappQueueEvents[_0x5d20('0x4')](_0x53b179,_0x1604ce);};}exports[_0x5d20('0x5')]=function(_0x1b1829){for(var _0x2a4ba2=0x0,_0xa4c39=events[_0x5d20('0x6')];_0x2a4ba2<_0xa4c39;_0x2a4ba2++){var _0x2d7b81=events[_0x2a4ba2];var _0xa18d30=createListener('whatsappQueue:'+_0x2d7b81,_0x1b1829);WhatsappQueueEvents['on'](_0x2d7b81,_0xa18d30);}};
\ No newline at end of file
index 4ae3879..23c853c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e10=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','index','isAuthenticated'];(function(_0x725a4c,_0x102507){var _0x37b2cc=function(_0x505fc9){while(--_0x505fc9){_0x725a4c['push'](_0x725a4c['shift']());}};_0x37b2cc(++_0x102507);}(_0x7e10,0x77));var _0x07e1=function(_0x4cf237,_0x551431){_0x4cf237=_0x4cf237-0x0;var _0x237e45=_0x7e10[_0x4cf237];return _0x237e45;};'use strict';var multer=require(_0x07e1('0x0'));var util=require(_0x07e1('0x1'));var path=require(_0x07e1('0x2'));var timeout=require(_0x07e1('0x3'));var express=require(_0x07e1('0x4'));var router=express['Router']();var fs_extra=require(_0x07e1('0x5'));var auth=require(_0x07e1('0x6'));var interaction=require(_0x07e1('0x7'));var config=require(_0x07e1('0x8'));var controller=require(_0x07e1('0x9'));router[_0x07e1('0xa')]('/',auth['isAuthenticated'](),controller[_0x07e1('0xb')]);router[_0x07e1('0xa')]('/describe',auth[_0x07e1('0xc')](),controller['describe']);router['get'](_0x07e1('0xd'),auth['isAuthenticated'](),controller[_0x07e1('0xe')]);router[_0x07e1('0xf')]('/',auth[_0x07e1('0xc')](),controller[_0x07e1('0x10')]);router[_0x07e1('0x11')](_0x07e1('0xd'),auth[_0x07e1('0xc')](),controller[_0x07e1('0x12')]);router[_0x07e1('0x13')](_0x07e1('0xd'),auth[_0x07e1('0xc')](),controller[_0x07e1('0x14')]);module[_0x07e1('0x15')]=router;
\ No newline at end of file
+var _0xde4f=['/describe','/:id','show','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0xde4f,0x14c));var _0xfde4=function(_0x18a2df,_0x3caac3){_0x18a2df=_0x18a2df-0x0;var _0x58a91b=_0xde4f[_0x18a2df];return _0x58a91b;};'use strict';var multer=require('multer');var util=require(_0xfde4('0x0'));var path=require(_0xfde4('0x1'));var timeout=require(_0xfde4('0x2'));var express=require(_0xfde4('0x3'));var router=express[_0xfde4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfde4('0x5'));var interaction=require(_0xfde4('0x6'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router[_0xfde4('0x7')]('/',auth[_0xfde4('0x8')](),controller[_0xfde4('0x9')]);router['get'](_0xfde4('0xa'),auth[_0xfde4('0x8')](),controller['describe']);router[_0xfde4('0x7')](_0xfde4('0xb'),auth['isAuthenticated'](),controller[_0xfde4('0xc')]);router[_0xfde4('0xd')]('/',auth[_0xfde4('0x8')](),controller[_0xfde4('0xe')]);router['put'](_0xfde4('0xb'),auth[_0xfde4('0x8')](),controller[_0xfde4('0xf')]);router[_0xfde4('0x10')]('/:id',auth[_0xfde4('0x8')](),controller[_0xfde4('0x11')]);module[_0xfde4('0x12')]=router;
\ No newline at end of file
index 7cb32ab..cf7a486 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x3a2eee,_0x48fb1f){var _0x58df2e=function(_0x18eef7){while(--_0x18eef7){_0x3a2eee['push'](_0x3a2eee['shift']());}};_0x58df2e(++_0x48fb1f);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x4516a1,_0x305386){var _0x393246=function(_0x3671ef){while(--_0x3671ef){_0x4516a1['push'](_0x4516a1['shift']());}};_0x393246(++_0x305386);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index f3c4425..a687a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','WhatsappQueueReport','catch','show','params','rawAttributes','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x46c77c,_0x3c4282){var _0x2e66ee=function(_0x31b1db){while(--_0x31b1db){_0x46c77c['push'](_0x46c77c['shift']());}};_0x2e66ee(++_0x3c4282);}(_0xcf66,0x71));var _0x6cf6=function(_0x1f60a5,_0x253671){_0x1f60a5=_0x1f60a5-0x0;var _0x432019=_0xcf66[_0x1f60a5];return _0x432019;};'use strict';var emlformat=require(_0x6cf6('0x0'));var rimraf=require(_0x6cf6('0x1'));var zipdir=require(_0x6cf6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6cf6('0x3'));var moment=require(_0x6cf6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6cf6('0x5'));var path=require(_0x6cf6('0x6'));var sox=require('sox');var csv=require(_0x6cf6('0x7'));var ejs=require(_0x6cf6('0x8'));var fs=require('fs');var fs_extra=require(_0x6cf6('0x9'));var _=require('lodash');var squel=require(_0x6cf6('0xa'));var crypto=require(_0x6cf6('0xb'));var jsforce=require(_0x6cf6('0xc'));var deskjs=require(_0x6cf6('0xd'));var toCsv=require(_0x6cf6('0x7'));var querystring=require(_0x6cf6('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6cf6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6cf6('0x10'));var logger=require(_0x6cf6('0x11'))(_0x6cf6('0x12'));var utils=require(_0x6cf6('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fdfea,_0x13b1ad){_0x13b1ad=_0x13b1ad||0xcc;return function(_0x372d12){if(_0x372d12){return _0x3fdfea[_0x6cf6('0x14')](_0x13b1ad);}return _0x3fdfea[_0x6cf6('0x15')](_0x13b1ad)[_0x6cf6('0x16')]();};}function respondWithResult(_0x57909f,_0x32fe64){_0x32fe64=_0x32fe64||0xc8;return function(_0x494ece){if(_0x494ece){return _0x57909f[_0x6cf6('0x15')](_0x32fe64)[_0x6cf6('0x17')](_0x494ece);}};}function respondWithFilteredResult(_0x4b073f,_0x40e413){return function(_0x1b40f8){if(_0x1b40f8){var _0x2d23ab=typeof _0x40e413[_0x6cf6('0x18')]===_0x6cf6('0x19')&&typeof _0x40e413[_0x6cf6('0x1a')]===_0x6cf6('0x19');var _0x39ec25=_0x1b40f8[_0x6cf6('0x1b')];var _0x2ca2b1=_0x2d23ab?0x0:_0x40e413['offset'];var _0x11d994=_0x2d23ab?_0x1b40f8[_0x6cf6('0x1b')]:_0x40e413[_0x6cf6('0x18')]+_0x40e413['limit'];var _0x18abd9;if(_0x11d994>=_0x39ec25){_0x11d994=_0x39ec25;_0x18abd9=0xc8;}else{_0x18abd9=0xce;}_0x4b073f[_0x6cf6('0x15')](_0x18abd9);return _0x4b073f[_0x6cf6('0x1c')](_0x6cf6('0x1d'),_0x2ca2b1+'-'+_0x11d994+'/'+_0x39ec25)[_0x6cf6('0x17')](_0x1b40f8);}return null;};}function patchUpdates(_0x21e903){return function(_0x123993){try{jsonpatch['apply'](_0x123993,_0x21e903,!![]);}catch(_0x19f2cd){return BPromise[_0x6cf6('0x1e')](_0x19f2cd);}return _0x123993[_0x6cf6('0x1f')]();};}function saveUpdates(_0x380a40,_0x5cba3a){return function(_0x470ea4){if(_0x470ea4){return _0x470ea4[_0x6cf6('0x20')](_0x380a40)[_0x6cf6('0x21')](function(_0x5b2767){return _0x5b2767;});}return null;};}function removeEntity(_0x5b30e0,_0x276225){return function(_0x59f838){if(_0x59f838){return _0x59f838[_0x6cf6('0x22')]()[_0x6cf6('0x21')](function(){_0x5b30e0[_0x6cf6('0x15')](0xcc)[_0x6cf6('0x16')]();});}};}function handleEntityNotFound(_0x3f9871,_0x565fad){return function(_0x1c966e){if(!_0x1c966e){_0x3f9871['sendStatus'](0x194);}return _0x1c966e;};}function handleError(_0x2779b7,_0xc7b489){_0xc7b489=_0xc7b489||0x1f4;return function(_0x3eaa31){logger['error'](_0x3eaa31[_0x6cf6('0x23')]);if(_0x3eaa31[_0x6cf6('0x24')]){delete _0x3eaa31[_0x6cf6('0x24')];}_0x2779b7[_0x6cf6('0x15')](_0xc7b489)['send'](_0x3eaa31);};}exports['index']=function(_0x2afe84,_0x4521af){var _0x57099f={},_0x5869e9={},_0x5ccc8f={'count':0x0,'rows':[]};var _0x2afc06=_['map'](db['WhatsappQueueReport']['rawAttributes'],function(_0x10bde5){return{'name':_0x10bde5[_0x6cf6('0x25')],'type':_0x10bde5[_0x6cf6('0x26')][_0x6cf6('0x27')]};});_0x5869e9[_0x6cf6('0x28')]=_['map'](_0x2afc06,_0x6cf6('0x24'));_0x5869e9[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x2afe84['query']);_0x5869e9[_0x6cf6('0x2b')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],_0x5869e9[_0x6cf6('0x29')]);_0x57099f[_0x6cf6('0x2d')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x57099f[_0x6cf6('0x2d')]=_0x57099f[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x57099f[_0x6cf6('0x2d')]:_0x5869e9[_0x6cf6('0x28')];if(!_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x30')](_0x6cf6('0x31'))){_0x57099f['limit']=qs[_0x6cf6('0x1a')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x1a')]);_0x57099f[_0x6cf6('0x18')]=qs[_0x6cf6('0x18')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x18')]);}_0x57099f[_0x6cf6('0x32')]=qs[_0x6cf6('0x33')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x33')]);_0x57099f['where']=qs[_0x6cf6('0x2b')](_[_0x6cf6('0x34')](_0x2afe84[_0x6cf6('0x29')],_0x5869e9[_0x6cf6('0x2b')]),_0x2afc06);if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]){_0x57099f[_0x6cf6('0x36')]=_[_0x6cf6('0x37')](_0x57099f[_0x6cf6('0x36')],{'$or':_['map'](_0x2afc06,function(_0x1c5eda){if(_0x1c5eda[_0x6cf6('0x26')]!==_0x6cf6('0x38')){var _0x3e906f={};_0x3e906f[_0x1c5eda[_0x6cf6('0x24')]]={'$like':'%'+_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]+'%'};return _0x3e906f;}})});}_0x57099f=_[_0x6cf6('0x37')]({},_0x57099f,_0x2afe84[_0x6cf6('0x39')]);var _0x5ed61f={'where':_0x57099f[_0x6cf6('0x36')]};return db['WhatsappQueueReport'][_0x6cf6('0x1b')](_0x5ed61f)[_0x6cf6('0x21')](function(_0x23d280){_0x5ccc8f[_0x6cf6('0x1b')]=_0x23d280;if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x57099f[_0x6cf6('0x3b')]=[{'all':!![]}];}return db[_0x6cf6('0x3c')]['findAll'](_0x57099f);})[_0x6cf6('0x21')](function(_0x335dce){_0x5ccc8f['rows']=_0x335dce;return _0x5ccc8f;})[_0x6cf6('0x21')](respondWithFilteredResult(_0x4521af,_0x57099f))[_0x6cf6('0x3d')](handleError(_0x4521af,null));};exports[_0x6cf6('0x3e')]=function(_0x4874c0,_0x10bb9b){var _0x128f7a={'raw':!![],'where':{'id':_0x4874c0[_0x6cf6('0x3f')]['id']}},_0x51d915={};_0x51d915[_0x6cf6('0x28')]=_[_0x6cf6('0x2a')](db[_0x6cf6('0x3c')][_0x6cf6('0x40')]);_0x51d915[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x4874c0['query']);_0x51d915[_0x6cf6('0x2b')]=_['intersection'](_0x51d915[_0x6cf6('0x28')],_0x51d915[_0x6cf6('0x29')]);_0x128f7a['attributes']=_[_0x6cf6('0x2c')](_0x51d915[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x128f7a['attributes']=_0x128f7a[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x128f7a[_0x6cf6('0x2d')]:_0x51d915['model'];if(_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x128f7a[_0x6cf6('0x3b')]=[{'all':!![]}];}_0x128f7a=_['merge']({},_0x128f7a,_0x4874c0[_0x6cf6('0x39')]);return db['WhatsappQueueReport']['find'](_0x128f7a)[_0x6cf6('0x21')](handleEntityNotFound(_0x10bb9b,null))[_0x6cf6('0x21')](respondWithResult(_0x10bb9b,null))[_0x6cf6('0x3d')](handleError(_0x10bb9b,null));};exports[_0x6cf6('0x41')]=function(_0xb8788a,_0x311745){return db[_0x6cf6('0x3c')][_0x6cf6('0x41')](_0xb8788a[_0x6cf6('0x42')],{})[_0x6cf6('0x21')](respondWithResult(_0x311745,0xc9))[_0x6cf6('0x3d')](handleError(_0x311745,null));};exports[_0x6cf6('0x20')]=function(_0x3786d1,_0x4c8ada){if(_0x3786d1[_0x6cf6('0x42')]['id']){delete _0x3786d1[_0x6cf6('0x42')]['id'];}return db['WhatsappQueueReport']['find']({'where':{'id':_0x3786d1[_0x6cf6('0x3f')]['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x4c8ada,null))[_0x6cf6('0x21')](saveUpdates(_0x3786d1[_0x6cf6('0x42')],null))[_0x6cf6('0x21')](respondWithResult(_0x4c8ada,null))[_0x6cf6('0x3d')](handleError(_0x4c8ada,null));};exports['destroy']=function(_0x115b9b,_0x262c23){return db[_0x6cf6('0x3c')]['find']({'where':{'id':_0x115b9b['params']['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x262c23,null))[_0x6cf6('0x21')](removeEntity(_0x262c23,null))[_0x6cf6('0x3d')](handleError(_0x262c23,null));};exports[_0x6cf6('0x43')]=function(_0x2dbd71,_0x1fb6f1){return db[_0x6cf6('0x3c')][_0x6cf6('0x43')]()[_0x6cf6('0x21')](respondWithResult(_0x1fb6f1,null))[_0x6cf6('0x3d')](handleError(_0x1fb6f1,null));};
\ No newline at end of file
+var _0x97c1=['describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','name','send','index','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','WhatsappQueueReport','includeAll','include','rows','catch','params','find','create','body'];(function(_0x815a0,_0x3daf9e){var _0x130580=function(_0x158a4a){while(--_0x158a4a){_0x815a0['push'](_0x815a0['shift']());}};_0x130580(++_0x3daf9e);}(_0x97c1,0xdf));var _0x197c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x97c1[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x197c('0x0'));var rimraf=require(_0x197c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x197c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x197c('0x3'));var Mustache=require(_0x197c('0x4'));var util=require(_0x197c('0x5'));var path=require(_0x197c('0x6'));var sox=require(_0x197c('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x197c('0x8'));var _=require(_0x197c('0x9'));var squel=require(_0x197c('0xa'));var crypto=require(_0x197c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x197c('0xc'));var querystring=require('querystring');var Papa=require(_0x197c('0xd'));var Redis=require(_0x197c('0xe'));var authService=require(_0x197c('0xf'));var qs=require(_0x197c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x197c('0x11'));var logger=require(_0x197c('0x12'))(_0x197c('0x13'));var utils=require(_0x197c('0x14'));var config=require(_0x197c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x197c('0x16'))['db'];function respondWithStatusCode(_0x668f8,_0x27e46f){_0x27e46f=_0x27e46f||0xcc;return function(_0x1adcfa){if(_0x1adcfa){return _0x668f8['sendStatus'](_0x27e46f);}return _0x668f8[_0x197c('0x17')](_0x27e46f)[_0x197c('0x18')]();};}function respondWithResult(_0x5a7e1c,_0xf735ce){_0xf735ce=_0xf735ce||0xc8;return function(_0x188ff2){if(_0x188ff2){return _0x5a7e1c[_0x197c('0x17')](_0xf735ce)['json'](_0x188ff2);}};}function respondWithFilteredResult(_0x5194c3,_0x422dfa){return function(_0x2bc612){if(_0x2bc612){var _0x2083d4=typeof _0x422dfa[_0x197c('0x19')]===_0x197c('0x1a')&&typeof _0x422dfa[_0x197c('0x1b')]===_0x197c('0x1a');var _0x75beba=_0x2bc612['count'];var _0x372311=_0x2083d4?0x0:_0x422dfa['offset'];var _0x50ac52=_0x2083d4?_0x2bc612[_0x197c('0x1c')]:_0x422dfa[_0x197c('0x19')]+_0x422dfa[_0x197c('0x1b')];var _0x2ce10d;if(_0x50ac52>=_0x75beba){_0x50ac52=_0x75beba;_0x2ce10d=0xc8;}else{_0x2ce10d=0xce;}_0x5194c3['status'](_0x2ce10d);return _0x5194c3[_0x197c('0x1d')](_0x197c('0x1e'),_0x372311+'-'+_0x50ac52+'/'+_0x75beba)[_0x197c('0x1f')](_0x2bc612);}return null;};}function patchUpdates(_0x5c278a){return function(_0x1adb43){try{jsonpatch[_0x197c('0x20')](_0x1adb43,_0x5c278a,!![]);}catch(_0x3b5c4c){return BPromise[_0x197c('0x21')](_0x3b5c4c);}return _0x1adb43[_0x197c('0x22')]();};}function saveUpdates(_0x3c2151,_0x362bbf){return function(_0x2092a0){if(_0x2092a0){return _0x2092a0[_0x197c('0x23')](_0x3c2151)[_0x197c('0x24')](function(_0x29b266){return _0x29b266;});}return null;};}function removeEntity(_0x177bc9,_0x174942){return function(_0x2a1310){if(_0x2a1310){return _0x2a1310[_0x197c('0x25')]()[_0x197c('0x24')](function(){_0x177bc9['status'](0xcc)[_0x197c('0x18')]();});}};}function handleEntityNotFound(_0x2911dd,_0x2b6319){return function(_0x499051){if(!_0x499051){_0x2911dd[_0x197c('0x26')](0x194);}return _0x499051;};}function handleError(_0x3331ac,_0x4c3337){_0x4c3337=_0x4c3337||0x1f4;return function(_0x5e7bc9){logger[_0x197c('0x27')](_0x5e7bc9['stack']);if(_0x5e7bc9[_0x197c('0x28')]){delete _0x5e7bc9[_0x197c('0x28')];}_0x3331ac[_0x197c('0x17')](_0x4c3337)[_0x197c('0x29')](_0x5e7bc9);};}exports[_0x197c('0x2a')]=function(_0x3cdcd8,_0x2b6154){var _0x215df1={},_0x4422d1={},_0x5df39e={'count':0x0,'rows':[]};var _0x50dea3=_['map'](db['WhatsappQueueReport'][_0x197c('0x2b')],function(_0x4c9256){return{'name':_0x4c9256[_0x197c('0x2c')],'type':_0x4c9256[_0x197c('0x2d')]['key']};});_0x4422d1[_0x197c('0x2e')]=_['map'](_0x50dea3,_0x197c('0x28'));_0x4422d1[_0x197c('0x2f')]=_[_0x197c('0x30')](_0x3cdcd8[_0x197c('0x2f')]);_0x4422d1[_0x197c('0x31')]=_[_0x197c('0x32')](_0x4422d1[_0x197c('0x2e')],_0x4422d1[_0x197c('0x2f')]);_0x215df1[_0x197c('0x33')]=_['intersection'](_0x4422d1['model'],qs[_0x197c('0x34')](_0x3cdcd8[_0x197c('0x2f')][_0x197c('0x34')]));_0x215df1[_0x197c('0x33')]=_0x215df1[_0x197c('0x33')][_0x197c('0x35')]?_0x215df1[_0x197c('0x33')]:_0x4422d1['model'];if(!_0x3cdcd8['query'][_0x197c('0x36')](_0x197c('0x37'))){_0x215df1['limit']=qs['limit'](_0x3cdcd8[_0x197c('0x2f')][_0x197c('0x1b')]);_0x215df1[_0x197c('0x19')]=qs[_0x197c('0x19')](_0x3cdcd8[_0x197c('0x2f')][_0x197c('0x19')]);}_0x215df1[_0x197c('0x38')]=qs[_0x197c('0x39')](_0x3cdcd8[_0x197c('0x2f')]['sort']);_0x215df1[_0x197c('0x3a')]=qs[_0x197c('0x31')](_[_0x197c('0x3b')](_0x3cdcd8[_0x197c('0x2f')],_0x4422d1[_0x197c('0x31')]),_0x50dea3);if(_0x3cdcd8[_0x197c('0x2f')]['filter']){_0x215df1[_0x197c('0x3a')]=_[_0x197c('0x3c')](_0x215df1[_0x197c('0x3a')],{'$or':_['map'](_0x50dea3,function(_0x28ce19){if(_0x28ce19[_0x197c('0x2d')]!==_0x197c('0x3d')){var _0xdb64da={};_0xdb64da[_0x28ce19[_0x197c('0x28')]]={'$like':'%'+_0x3cdcd8[_0x197c('0x2f')][_0x197c('0x3e')]+'%'};return _0xdb64da;}})});}_0x215df1=_[_0x197c('0x3c')]({},_0x215df1,_0x3cdcd8[_0x197c('0x3f')]);var _0x1dc01b={'where':_0x215df1['where']};return db[_0x197c('0x40')][_0x197c('0x1c')](_0x1dc01b)['then'](function(_0x4c715a){_0x5df39e[_0x197c('0x1c')]=_0x4c715a;if(_0x3cdcd8[_0x197c('0x2f')][_0x197c('0x41')]){_0x215df1[_0x197c('0x42')]=[{'all':!![]}];}return db[_0x197c('0x40')]['findAll'](_0x215df1);})[_0x197c('0x24')](function(_0x3efae){_0x5df39e[_0x197c('0x43')]=_0x3efae;return _0x5df39e;})[_0x197c('0x24')](respondWithFilteredResult(_0x2b6154,_0x215df1))[_0x197c('0x44')](handleError(_0x2b6154,null));};exports['show']=function(_0x3e21bd,_0x37bb94){var _0x6d7bda={'raw':!![],'where':{'id':_0x3e21bd[_0x197c('0x45')]['id']}},_0x197b27={};_0x197b27['model']=_[_0x197c('0x30')](db[_0x197c('0x40')][_0x197c('0x2b')]);_0x197b27[_0x197c('0x2f')]=_[_0x197c('0x30')](_0x3e21bd[_0x197c('0x2f')]);_0x197b27[_0x197c('0x31')]=_[_0x197c('0x32')](_0x197b27[_0x197c('0x2e')],_0x197b27[_0x197c('0x2f')]);_0x6d7bda[_0x197c('0x33')]=_['intersection'](_0x197b27['model'],qs['fields'](_0x3e21bd['query'][_0x197c('0x34')]));_0x6d7bda[_0x197c('0x33')]=_0x6d7bda['attributes'][_0x197c('0x35')]?_0x6d7bda[_0x197c('0x33')]:_0x197b27['model'];if(_0x3e21bd[_0x197c('0x2f')][_0x197c('0x41')]){_0x6d7bda['include']=[{'all':!![]}];}_0x6d7bda=_[_0x197c('0x3c')]({},_0x6d7bda,_0x3e21bd[_0x197c('0x3f')]);return db['WhatsappQueueReport'][_0x197c('0x46')](_0x6d7bda)[_0x197c('0x24')](handleEntityNotFound(_0x37bb94,null))[_0x197c('0x24')](respondWithResult(_0x37bb94,null))['catch'](handleError(_0x37bb94,null));};exports[_0x197c('0x47')]=function(_0x3f26df,_0x220909){return db[_0x197c('0x40')]['create'](_0x3f26df[_0x197c('0x48')],{})[_0x197c('0x24')](respondWithResult(_0x220909,0xc9))[_0x197c('0x44')](handleError(_0x220909,null));};exports['update']=function(_0x5994bf,_0x3a5089){if(_0x5994bf[_0x197c('0x48')]['id']){delete _0x5994bf[_0x197c('0x48')]['id'];}return db[_0x197c('0x40')][_0x197c('0x46')]({'where':{'id':_0x5994bf[_0x197c('0x45')]['id']}})['then'](handleEntityNotFound(_0x3a5089,null))[_0x197c('0x24')](saveUpdates(_0x5994bf['body'],null))[_0x197c('0x24')](respondWithResult(_0x3a5089,null))[_0x197c('0x44')](handleError(_0x3a5089,null));};exports[_0x197c('0x25')]=function(_0x9e8c6a,_0x34a211){return db[_0x197c('0x40')][_0x197c('0x46')]({'where':{'id':_0x9e8c6a[_0x197c('0x45')]['id']}})['then'](handleEntityNotFound(_0x34a211,null))[_0x197c('0x24')](removeEntity(_0x34a211,null))[_0x197c('0x44')](handleError(_0x34a211,null));};exports[_0x197c('0x49')]=function(_0x4b0048,_0x114ef5){return db['WhatsappQueueReport'][_0x197c('0x49')]()[_0x197c('0x24')](respondWithResult(_0x114ef5,null))[_0x197c('0x44')](handleError(_0x114ef5,null));};
\ No newline at end of file
index 92283e0..afa8e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1423=['./whatsappQueueReport.attributes','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x1423,0x1e4));var _0x3142=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1423[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x3142('0x0'));var util=require(_0x3142('0x1'));var logger=require('../../config/logger')(_0x3142('0x2'));var moment=require(_0x3142('0x3'));var BPromise=require(_0x3142('0x4'));var rp=require(_0x3142('0x5'));var fs=require('fs');var path=require(_0x3142('0x6'));var rimraf=require(_0x3142('0x7'));var config=require('../../config/environment');var attributes=require(_0x3142('0x8'));module['exports']=function(_0x2118ec,_0xc4a9c8){return _0x2118ec['define'](_0x3142('0x9'),attributes,{'tableName':_0x3142('0xa'),'paranoid':![],'indexes':[{'name':_0x3142('0xb'),'fields':[_0x3142('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8926=['report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api','request-promise','../../config/environment','./whatsappQueueReport.attributes','exports'];(function(_0x3d2e4b,_0x1f6653){var _0x509e78=function(_0x307037){while(--_0x307037){_0x3d2e4b['push'](_0x3d2e4b['shift']());}};_0x509e78(++_0x1f6653);}(_0x8926,0x1ce));var _0x6892=function(_0x15204a,_0x50a428){_0x15204a=_0x15204a-0x0;var _0xa50855=_0x8926[_0x15204a];return _0xa50855;};'use strict';var _=require(_0x6892('0x0'));var util=require(_0x6892('0x1'));var logger=require(_0x6892('0x2'))(_0x6892('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6892('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6892('0x5'));var attributes=require(_0x6892('0x6'));module[_0x6892('0x7')]=function(_0x4c2058,_0x30efde){return _0x4c2058['define']('WhatsappQueueReport',attributes,{'tableName':_0x6892('0x8'),'paranoid':![],'indexes':[{'name':_0x6892('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index bc8154e..c21cc43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf54a=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','update','where','limit','lodash','util','moment'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0xf54a,0xfd));var _0xaf54=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf54a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xaf54('0x0'));var util=require(_0xaf54('0x1'));var moment=require(_0xaf54('0x2'));var BPromise=require(_0xaf54('0x3'));var rs=require(_0xaf54('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaf54('0x5'));var logger=require(_0xaf54('0x6'))(_0xaf54('0x7'));var config=require(_0xaf54('0x8'));var jayson=require(_0xaf54('0x9'));var client=jayson[_0xaf54('0xa')][_0xaf54('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bf62a,_0x22522c,_0x1ede80){return new BPromise(function(_0x26fbaa,_0x2778ee){return client[_0xaf54('0xc')](_0x3bf62a,_0x1ede80)[_0xaf54('0xd')](function(_0x250b66){logger[_0xaf54('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x22522c,_0xaf54('0xf'));logger[_0xaf54('0x10')](_0xaf54('0x11'),_0x22522c,_0xaf54('0xf'),JSON[_0xaf54('0x12')](_0x250b66));if(_0x250b66[_0xaf54('0x13')]){if(_0x250b66[_0xaf54('0x13')]['code']===0x1f4){logger[_0xaf54('0x13')](_0xaf54('0x14'),_0x22522c,_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);return _0x2778ee(_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x22522c,_0x250b66[_0xaf54('0x13')]['message']);return _0x26fbaa(_0x250b66[_0xaf54('0x13')][_0xaf54('0x15')]);}else{logger[_0xaf54('0xe')](_0xaf54('0x14'),_0x22522c,'request\x20sent');_0x26fbaa(_0x250b66[_0xaf54('0x16')][_0xaf54('0x15')]);}})[_0xaf54('0x17')](function(_0x4ec709){logger[_0xaf54('0x13')](_0xaf54('0x14'),_0x22522c,_0x4ec709);_0x2778ee(_0x4ec709);});});}exports[_0xaf54('0x18')]=function(_0x1794b8){var _0x2ff520=this;return new Promise(function(_0xcd1488,_0x1fb38c){return db[_0xaf54('0x19')]['create'](_0x1794b8[_0xaf54('0x1a')],{'raw':_0x1794b8[_0xaf54('0x1b')]?_0x1794b8['options'][_0xaf54('0x1c')]===undefined?!![]:![]:!![]})[_0xaf54('0xd')](function(_0x23b798){logger[_0xaf54('0xe')](_0xaf54('0x18'),_0x1794b8);logger[_0xaf54('0x10')](_0xaf54('0x18'),_0x1794b8,JSON[_0xaf54('0x12')](_0x23b798));_0xcd1488(_0x23b798);})[_0xaf54('0x17')](function(_0xe97230){logger['error'](_0xaf54('0x18'),_0xe97230['message'],_0x1794b8);_0x1fb38c(_0x2ff520['error'](0x1f4,_0xe97230[_0xaf54('0x15')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x40ebaa){var _0x3fbfec=this;return new Promise(function(_0x4d5ff5,_0x38909c){return db[_0xaf54('0x19')][_0xaf54('0x1d')](_0x40ebaa[_0xaf54('0x1a')],{'raw':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1e')]||null:null,'attributes':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')]['attributes']||null:null,'limit':_0x40ebaa[_0xaf54('0x1b')]?_0x40ebaa[_0xaf54('0x1b')][_0xaf54('0x1f')]||null:null})[_0xaf54('0xd')](function(_0x31b85d){logger[_0xaf54('0xe')]('UpdateWhatsappQueueReport',_0x40ebaa);logger['debug']('UpdateWhatsappQueueReport',_0x40ebaa,JSON['stringify'](_0x31b85d));_0x4d5ff5(_0x31b85d);})[_0xaf54('0x17')](function(_0x5e7c3b){logger['error']('UpdateWhatsappQueueReport',_0x5e7c3b[_0xaf54('0x15')],_0x40ebaa);_0x38909c(_0x3fbfec[_0xaf54('0x13')](0x1f4,_0x5e7c3b[_0xaf54('0x15')]));});});};
\ No newline at end of file
+var _0x6e97=['WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','catch','UpdateWhatsappQueueReport','update','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x2e3107,_0x25f970){var _0x833d69=function(_0x420e78){while(--_0x420e78){_0x2e3107['push'](_0x2e3107['shift']());}};_0x833d69(++_0x25f970);}(_0x6e97,0x198));var _0x76e9=function(_0x2e3be9,_0x298d39){_0x2e3be9=_0x2e3be9-0x0;var _0x39da72=_0x6e97[_0x2e3be9];return _0x39da72;};'use strict';var _=require('lodash');var util=require(_0x76e9('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x76e9('0x1'));var fs=require('fs');var Redis=require(_0x76e9('0x2'));var db=require(_0x76e9('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x76e9('0x4'))(_0x76e9('0x5'));var config=require(_0x76e9('0x6'));var jayson=require(_0x76e9('0x7'));var client=jayson[_0x76e9('0x8')][_0x76e9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39d914,_0x14c942,_0x14de80){return new BPromise(function(_0x30822d,_0x5c9633){return client['request'](_0x39d914,_0x14de80)[_0x76e9('0xa')](function(_0x3ba66c){logger[_0x76e9('0xb')](_0x76e9('0xc'),_0x14c942,_0x76e9('0xd'));logger[_0x76e9('0xe')](_0x76e9('0xf'),_0x14c942,_0x76e9('0xd'),JSON['stringify'](_0x3ba66c));if(_0x3ba66c[_0x76e9('0x10')]){if(_0x3ba66c[_0x76e9('0x10')][_0x76e9('0x11')]===0x1f4){logger[_0x76e9('0x10')](_0x76e9('0xc'),_0x14c942,_0x3ba66c[_0x76e9('0x10')][_0x76e9('0x12')]);return _0x5c9633(_0x3ba66c[_0x76e9('0x10')][_0x76e9('0x12')]);}logger['error'](_0x76e9('0xc'),_0x14c942,_0x3ba66c['error']['message']);return _0x30822d(_0x3ba66c['error']['message']);}else{logger[_0x76e9('0xb')]('WhatsappQueueReport,\x20%s,\x20%s',_0x14c942,_0x76e9('0xd'));_0x30822d(_0x3ba66c['result']['message']);}})['catch'](function(_0x53ff67){logger[_0x76e9('0x10')](_0x76e9('0xc'),_0x14c942,_0x53ff67);_0x5c9633(_0x53ff67);});});}exports[_0x76e9('0x13')]=function(_0x54da4f){var _0x2de0b3=this;return new Promise(function(_0x5fcb26,_0x244650){return db[_0x76e9('0x14')][_0x76e9('0x15')](_0x54da4f[_0x76e9('0x16')],{'raw':_0x54da4f[_0x76e9('0x17')]?_0x54da4f[_0x76e9('0x17')][_0x76e9('0x18')]===undefined?!![]:![]:!![]})[_0x76e9('0xa')](function(_0x32c1d2){logger['info'](_0x76e9('0x13'),_0x54da4f);logger[_0x76e9('0xe')](_0x76e9('0x13'),_0x54da4f,JSON['stringify'](_0x32c1d2));_0x5fcb26(_0x32c1d2);})[_0x76e9('0x19')](function(_0x11024c){logger[_0x76e9('0x10')]('CreateWhatsappQueueReport',_0x11024c[_0x76e9('0x12')],_0x54da4f);_0x244650(_0x2de0b3[_0x76e9('0x10')](0x1f4,_0x11024c[_0x76e9('0x12')]));});});};exports[_0x76e9('0x1a')]=function(_0x405608){var _0x31deca=this;return new Promise(function(_0x25b797,_0x4f7448){return db['WhatsappQueueReport'][_0x76e9('0x1b')](_0x405608[_0x76e9('0x16')],{'raw':_0x405608[_0x76e9('0x17')]?_0x405608[_0x76e9('0x17')][_0x76e9('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x405608['options']?_0x405608[_0x76e9('0x17')]['where']||null:null,'attributes':_0x405608[_0x76e9('0x17')]?_0x405608[_0x76e9('0x17')]['attributes']||null:null,'limit':_0x405608[_0x76e9('0x17')]?_0x405608['options']['limit']||null:null})['then'](function(_0x72daee){logger['info']('UpdateWhatsappQueueReport',_0x405608);logger[_0x76e9('0xe')](_0x76e9('0x1a'),_0x405608,JSON['stringify'](_0x72daee));_0x25b797(_0x72daee);})[_0x76e9('0x19')](function(_0x225a7b){logger[_0x76e9('0x10')](_0x76e9('0x1a'),_0x225a7b[_0x76e9('0x12')],_0x405608);_0x4f7448(_0x31deca['error'](0x1f4,_0x225a7b[_0x76e9('0x12')]));});});};
\ No newline at end of file
index 30cae63..4a5de68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf0c=['delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','get','/describe','/:id','show','create','put','update'];(function(_0x257bc0,_0x202aca){var _0x574084=function(_0x4632d1){while(--_0x4632d1){_0x257bc0['push'](_0x257bc0['shift']());}};_0x574084(++_0x202aca);}(_0xcf0c,0x1ba));var _0xccf0=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0xcf0c[_0x2a5099];return _0x2802f1;};'use strict';var multer=require(_0xccf0('0x0'));var util=require(_0xccf0('0x1'));var path=require(_0xccf0('0x2'));var timeout=require(_0xccf0('0x3'));var express=require(_0xccf0('0x4'));var router=express['Router']();var fs_extra=require(_0xccf0('0x5'));var auth=require(_0xccf0('0x6'));var interaction=require(_0xccf0('0x7'));var config=require(_0xccf0('0x8'));var controller=require(_0xccf0('0x9'));router['get']('/',auth[_0xccf0('0xa')](),controller['index']);router[_0xccf0('0xb')](_0xccf0('0xc'),auth[_0xccf0('0xa')](),controller['describe']);router[_0xccf0('0xb')](_0xccf0('0xd'),auth[_0xccf0('0xa')](),controller[_0xccf0('0xe')]);router['post']('/',auth[_0xccf0('0xa')](),controller[_0xccf0('0xf')]);router[_0xccf0('0x10')]('/:id',auth[_0xccf0('0xa')](),controller[_0xccf0('0x11')]);router[_0xccf0('0x12')](_0xccf0('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xccf0('0x13')]=router;
\ No newline at end of file
+var _0xcaac=['../../config/environment','get','isAuthenticated','index','describe','/:id','show','post','create','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x7eb196,_0x34cebd){var _0x3c04c6=function(_0x2a38d9){while(--_0x2a38d9){_0x7eb196['push'](_0x7eb196['shift']());}};_0x3c04c6(++_0x34cebd);}(_0xcaac,0xad));var _0xccaa=function(_0x53a4d8,_0x446a35){_0x53a4d8=_0x53a4d8-0x0;var _0xe97cbd=_0xcaac[_0x53a4d8];return _0xe97cbd;};'use strict';var multer=require(_0xccaa('0x0'));var util=require('util');var path=require(_0xccaa('0x1'));var timeout=require('connect-timeout');var express=require(_0xccaa('0x2'));var router=express[_0xccaa('0x3')]();var fs_extra=require(_0xccaa('0x4'));var auth=require(_0xccaa('0x5'));var interaction=require(_0xccaa('0x6'));var config=require(_0xccaa('0x7'));var controller=require('./whatsappTransferReport.controller');router[_0xccaa('0x8')]('/',auth[_0xccaa('0x9')](),controller[_0xccaa('0xa')]);router[_0xccaa('0x8')]('/describe',auth[_0xccaa('0x9')](),controller[_0xccaa('0xb')]);router[_0xccaa('0x8')](_0xccaa('0xc'),auth['isAuthenticated'](),controller[_0xccaa('0xd')]);router[_0xccaa('0xe')]('/',auth[_0xccaa('0x9')](),controller[_0xccaa('0xf')]);router[_0xccaa('0x10')]('/:id',auth[_0xccaa('0x9')](),controller['update']);router[_0xccaa('0x11')]('/:id',auth[_0xccaa('0x9')](),controller[_0xccaa('0x12')]);module[_0xccaa('0x13')]=router;
\ No newline at end of file
index fb518f7..7af9175 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cae=['account','agent','DATE','sequelize','exports'];(function(_0x57db49,_0x288094){var _0xd0636f=function(_0x227787){while(--_0x227787){_0x57db49['push'](_0x57db49['shift']());}};_0xd0636f(++_0x288094);}(_0x2cae,0x16b));var _0xe2ca=function(_0x52e0ee,_0x52f7c1){_0x52e0ee=_0x52e0ee-0x0;var _0x32534c=_0x2cae[_0x52e0ee];return _0x32534c;};'use strict';var Sequelize=require(_0xe2ca('0x0'));module[_0xe2ca('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe2ca('0x2'),_0xe2ca('0x3'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xe2ca('0x4')]}};
\ No newline at end of file
+var _0xeb3b=['sequelize','exports','STRING','ENUM','account','DATE'];(function(_0x1a6e19,_0x3d67f0){var _0x122bc2=function(_0x2ae2dc){while(--_0x2ae2dc){_0x1a6e19['push'](_0x1a6e19['shift']());}};_0x122bc2(++_0x3d67f0);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0xeb3b[_0x35885a];return _0xe86249;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'uniqueid':{'type':Sequelize[_0xbeb3('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbeb3('0x3')](_0xbeb3('0x4'),'agent','queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xbeb3('0x5')]}};
\ No newline at end of file
index 46df106..1503532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be2=['includeAll','include','findAll','show','rawAttributes','find','catch','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','error','name','send','index','map','WhatsappTransferReport','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options'];(function(_0x3649d3,_0x283e04){var _0x44245a=function(_0x569c5a){while(--_0x569c5a){_0x3649d3['push'](_0x3649d3['shift']());}};_0x44245a(++_0x283e04);}(_0x6be2,0xa1));var _0x26be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6be2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x26be('0x0'));var zipdir=require(_0x26be('0x1'));var jsonpatch=require(_0x26be('0x2'));var rp=require(_0x26be('0x3'));var moment=require('moment');var BPromise=require(_0x26be('0x4'));var Mustache=require('mustache');var util=require(_0x26be('0x5'));var path=require(_0x26be('0x6'));var sox=require(_0x26be('0x7'));var csv=require(_0x26be('0x8'));var ejs=require(_0x26be('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26be('0xa'));var squel=require(_0x26be('0xb'));var crypto=require(_0x26be('0xc'));var jsforce=require(_0x26be('0xd'));var deskjs=require(_0x26be('0xe'));var toCsv=require('to-csv');var querystring=require(_0x26be('0xf'));var Papa=require(_0x26be('0x10'));var Redis=require(_0x26be('0x11'));var authService=require(_0x26be('0x12'));var qs=require(_0x26be('0x13'));var as=require(_0x26be('0x14'));var hardwareService=require(_0x26be('0x15'));var logger=require(_0x26be('0x16'))(_0x26be('0x17'));var utils=require('../../config/utils');var config=require(_0x26be('0x18'));var licenseUtil=require(_0x26be('0x19'));var db=require(_0x26be('0x1a'))['db'];function respondWithStatusCode(_0x2d39d4,_0x4997f9){_0x4997f9=_0x4997f9||0xcc;return function(_0x5b4e08){if(_0x5b4e08){return _0x2d39d4[_0x26be('0x1b')](_0x4997f9);}return _0x2d39d4['status'](_0x4997f9)[_0x26be('0x1c')]();};}function respondWithResult(_0x7b7ef9,_0x372ed8){_0x372ed8=_0x372ed8||0xc8;return function(_0x2d612a){if(_0x2d612a){return _0x7b7ef9['status'](_0x372ed8)[_0x26be('0x1d')](_0x2d612a);}};}function respondWithFilteredResult(_0x19b556,_0x224376){return function(_0x384a7e){if(_0x384a7e){var _0x355105=typeof _0x224376[_0x26be('0x1e')]==='undefined'&&typeof _0x224376['limit']===_0x26be('0x1f');var _0x4ada5d=_0x384a7e[_0x26be('0x20')];var _0xda3098=_0x355105?0x0:_0x224376['offset'];var _0xce5f4a=_0x355105?_0x384a7e['count']:_0x224376[_0x26be('0x1e')]+_0x224376['limit'];var _0x582f2d;if(_0xce5f4a>=_0x4ada5d){_0xce5f4a=_0x4ada5d;_0x582f2d=0xc8;}else{_0x582f2d=0xce;}_0x19b556['status'](_0x582f2d);return _0x19b556['set'](_0x26be('0x21'),_0xda3098+'-'+_0xce5f4a+'/'+_0x4ada5d)[_0x26be('0x1d')](_0x384a7e);}return null;};}function patchUpdates(_0x56d87a){return function(_0x1ded47){try{jsonpatch['apply'](_0x1ded47,_0x56d87a,!![]);}catch(_0x440d33){return BPromise['reject'](_0x440d33);}return _0x1ded47[_0x26be('0x22')]();};}function saveUpdates(_0x87d9ab,_0x1a9d4a){return function(_0x2b1c55){if(_0x2b1c55){return _0x2b1c55[_0x26be('0x23')](_0x87d9ab)[_0x26be('0x24')](function(_0x426ee4){return _0x426ee4;});}return null;};}function removeEntity(_0x4612c6,_0xaa6561){return function(_0x1173ab){if(_0x1173ab){return _0x1173ab[_0x26be('0x25')]()[_0x26be('0x24')](function(){_0x4612c6['status'](0xcc)[_0x26be('0x1c')]();});}};}function handleEntityNotFound(_0x50f75c,_0x25a178){return function(_0x3880aa){if(!_0x3880aa){_0x50f75c['sendStatus'](0x194);}return _0x3880aa;};}function handleError(_0x51a16c,_0x468bd8){_0x468bd8=_0x468bd8||0x1f4;return function(_0x3609b3){logger[_0x26be('0x26')](_0x3609b3['stack']);if(_0x3609b3[_0x26be('0x27')]){delete _0x3609b3[_0x26be('0x27')];}_0x51a16c['status'](_0x468bd8)[_0x26be('0x28')](_0x3609b3);};}exports[_0x26be('0x29')]=function(_0x2e7b98,_0x149f1b){var _0x2f1e49={},_0x3e3386={},_0x562848={'count':0x0,'rows':[]};var _0x46ab71=_[_0x26be('0x2a')](db[_0x26be('0x2b')]['rawAttributes'],function(_0x3d37ac){return{'name':_0x3d37ac['fieldName'],'type':_0x3d37ac['type'][_0x26be('0x2c')]};});_0x3e3386['model']=_[_0x26be('0x2a')](_0x46ab71,_0x26be('0x27'));_0x3e3386['query']=_[_0x26be('0x2d')](_0x2e7b98[_0x26be('0x2e')]);_0x3e3386[_0x26be('0x2f')]=_[_0x26be('0x30')](_0x3e3386[_0x26be('0x31')],_0x3e3386[_0x26be('0x2e')]);_0x2f1e49[_0x26be('0x32')]=_[_0x26be('0x30')](_0x3e3386[_0x26be('0x31')],qs[_0x26be('0x33')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x33')]));_0x2f1e49[_0x26be('0x32')]=_0x2f1e49[_0x26be('0x32')][_0x26be('0x34')]?_0x2f1e49[_0x26be('0x32')]:_0x3e3386[_0x26be('0x31')];if(!_0x2e7b98[_0x26be('0x2e')]['hasOwnProperty'](_0x26be('0x35'))){_0x2f1e49['limit']=qs[_0x26be('0x36')](_0x2e7b98[_0x26be('0x2e')]['limit']);_0x2f1e49[_0x26be('0x1e')]=qs[_0x26be('0x1e')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x1e')]);}_0x2f1e49[_0x26be('0x37')]=qs[_0x26be('0x38')](_0x2e7b98[_0x26be('0x2e')][_0x26be('0x38')]);_0x2f1e49[_0x26be('0x39')]=qs[_0x26be('0x2f')](_[_0x26be('0x3a')](_0x2e7b98[_0x26be('0x2e')],_0x3e3386[_0x26be('0x2f')]),_0x46ab71);if(_0x2e7b98[_0x26be('0x2e')]['filter']){_0x2f1e49[_0x26be('0x39')]=_[_0x26be('0x3b')](_0x2f1e49[_0x26be('0x39')],{'$or':_[_0x26be('0x2a')](_0x46ab71,function(_0x14dca5){if(_0x14dca5[_0x26be('0x3c')]!==_0x26be('0x3d')){var _0x1eaf82={};_0x1eaf82[_0x14dca5[_0x26be('0x27')]]={'$like':'%'+_0x2e7b98[_0x26be('0x2e')][_0x26be('0x3e')]+'%'};return _0x1eaf82;}})});}_0x2f1e49=_[_0x26be('0x3b')]({},_0x2f1e49,_0x2e7b98[_0x26be('0x3f')]);var _0x561dfb={'where':_0x2f1e49['where']};return db['WhatsappTransferReport'][_0x26be('0x20')](_0x561dfb)[_0x26be('0x24')](function(_0x1775b5){_0x562848[_0x26be('0x20')]=_0x1775b5;if(_0x2e7b98[_0x26be('0x2e')][_0x26be('0x40')]){_0x2f1e49[_0x26be('0x41')]=[{'all':!![]}];}return db[_0x26be('0x2b')][_0x26be('0x42')](_0x2f1e49);})[_0x26be('0x24')](function(_0x3b625a){_0x562848['rows']=_0x3b625a;return _0x562848;})[_0x26be('0x24')](respondWithFilteredResult(_0x149f1b,_0x2f1e49))['catch'](handleError(_0x149f1b,null));};exports[_0x26be('0x43')]=function(_0x33d010,_0x12ce40){var _0x2b8d67={'raw':!![],'where':{'id':_0x33d010['params']['id']}},_0x119c49={};_0x119c49[_0x26be('0x31')]=_[_0x26be('0x2d')](db['WhatsappTransferReport'][_0x26be('0x44')]);_0x119c49['query']=_[_0x26be('0x2d')](_0x33d010[_0x26be('0x2e')]);_0x119c49[_0x26be('0x2f')]=_[_0x26be('0x30')](_0x119c49[_0x26be('0x31')],_0x119c49[_0x26be('0x2e')]);_0x2b8d67[_0x26be('0x32')]=_[_0x26be('0x30')](_0x119c49[_0x26be('0x31')],qs[_0x26be('0x33')](_0x33d010[_0x26be('0x2e')][_0x26be('0x33')]));_0x2b8d67[_0x26be('0x32')]=_0x2b8d67[_0x26be('0x32')][_0x26be('0x34')]?_0x2b8d67[_0x26be('0x32')]:_0x119c49['model'];if(_0x33d010[_0x26be('0x2e')][_0x26be('0x40')]){_0x2b8d67[_0x26be('0x41')]=[{'all':!![]}];}_0x2b8d67=_[_0x26be('0x3b')]({},_0x2b8d67,_0x33d010[_0x26be('0x3f')]);return db[_0x26be('0x2b')][_0x26be('0x45')](_0x2b8d67)['then'](handleEntityNotFound(_0x12ce40,null))[_0x26be('0x24')](respondWithResult(_0x12ce40,null))[_0x26be('0x46')](handleError(_0x12ce40,null));};exports[_0x26be('0x47')]=function(_0x2a2a8b,_0x2ba582){return db[_0x26be('0x2b')][_0x26be('0x47')](_0x2a2a8b[_0x26be('0x48')],{})[_0x26be('0x24')](respondWithResult(_0x2ba582,0xc9))[_0x26be('0x46')](handleError(_0x2ba582,null));};exports[_0x26be('0x23')]=function(_0x243643,_0x129bd0){if(_0x243643[_0x26be('0x48')]['id']){delete _0x243643['body']['id'];}return db['WhatsappTransferReport'][_0x26be('0x45')]({'where':{'id':_0x243643[_0x26be('0x49')]['id']}})[_0x26be('0x24')](handleEntityNotFound(_0x129bd0,null))['then'](saveUpdates(_0x243643['body'],null))[_0x26be('0x24')](respondWithResult(_0x129bd0,null))[_0x26be('0x46')](handleError(_0x129bd0,null));};exports[_0x26be('0x25')]=function(_0x5d8c89,_0x2135a9){return db[_0x26be('0x2b')][_0x26be('0x45')]({'where':{'id':_0x5d8c89[_0x26be('0x49')]['id']}})['then'](handleEntityNotFound(_0x2135a9,null))['then'](removeEntity(_0x2135a9,null))[_0x26be('0x46')](handleError(_0x2135a9,null));};exports[_0x26be('0x4a')]=function(_0x1881bc,_0x5ea52e){return db[_0x26be('0x2b')][_0x26be('0x4a')]()[_0x26be('0x24')](respondWithResult(_0x5ea52e,null))[_0x26be('0x46')](handleError(_0x5ea52e,null));};
\ No newline at end of file
+var _0x5e8e=['../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','save','destroy','then','error','name','send','index','map','WhatsappTransferReport','type','key','model','query','keys','attributes','length','hasOwnProperty','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','filters','intersection','includeAll','find','create','body','update','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment'];(function(_0x4131df,_0x3c2319){var _0x4b27a2=function(_0x1679f5){while(--_0x1679f5){_0x4131df['push'](_0x4131df['shift']());}};_0x4b27a2(++_0x3c2319);}(_0x5e8e,0x1d4));var _0xe5e8=function(_0x57cc54,_0x6862b1){_0x57cc54=_0x57cc54-0x0;var _0xa93acc=_0x5e8e[_0x57cc54];return _0xa93acc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5e8('0x0'));var zipdir=require(_0xe5e8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe5e8('0x2'));var moment=require(_0xe5e8('0x3'));var BPromise=require(_0xe5e8('0x4'));var Mustache=require(_0xe5e8('0x5'));var util=require(_0xe5e8('0x6'));var path=require(_0xe5e8('0x7'));var sox=require(_0xe5e8('0x8'));var csv=require('to-csv');var ejs=require(_0xe5e8('0x9'));var fs=require('fs');var fs_extra=require(_0xe5e8('0xa'));var _=require(_0xe5e8('0xb'));var squel=require(_0xe5e8('0xc'));var crypto=require(_0xe5e8('0xd'));var jsforce=require(_0xe5e8('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe5e8('0xf'));var querystring=require(_0xe5e8('0x10'));var Papa=require('papaparse');var Redis=require(_0xe5e8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe5e8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe5e8('0x13'))('api');var utils=require(_0xe5e8('0x14'));var config=require(_0xe5e8('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe5e8('0x16'))['db'];function respondWithStatusCode(_0xcb74e1,_0x301569){_0x301569=_0x301569||0xcc;return function(_0x2fdac8){if(_0x2fdac8){return _0xcb74e1[_0xe5e8('0x17')](_0x301569);}return _0xcb74e1[_0xe5e8('0x18')](_0x301569)['end']();};}function respondWithResult(_0x584221,_0x590569){_0x590569=_0x590569||0xc8;return function(_0x1bf019){if(_0x1bf019){return _0x584221[_0xe5e8('0x18')](_0x590569)[_0xe5e8('0x19')](_0x1bf019);}};}function respondWithFilteredResult(_0x152e52,_0x4ac5fd){return function(_0x46f712){if(_0x46f712){var _0x3b985f=typeof _0x4ac5fd[_0xe5e8('0x1a')]==='undefined'&&typeof _0x4ac5fd[_0xe5e8('0x1b')]==='undefined';var _0x1569c7=_0x46f712[_0xe5e8('0x1c')];var _0x2297d2=_0x3b985f?0x0:_0x4ac5fd[_0xe5e8('0x1a')];var _0x148f9c=_0x3b985f?_0x46f712[_0xe5e8('0x1c')]:_0x4ac5fd[_0xe5e8('0x1a')]+_0x4ac5fd[_0xe5e8('0x1b')];var _0x22dddc;if(_0x148f9c>=_0x1569c7){_0x148f9c=_0x1569c7;_0x22dddc=0xc8;}else{_0x22dddc=0xce;}_0x152e52['status'](_0x22dddc);return _0x152e52[_0xe5e8('0x1d')](_0xe5e8('0x1e'),_0x2297d2+'-'+_0x148f9c+'/'+_0x1569c7)[_0xe5e8('0x19')](_0x46f712);}return null;};}function patchUpdates(_0x5788bc){return function(_0x3ae06f){try{jsonpatch['apply'](_0x3ae06f,_0x5788bc,!![]);}catch(_0x151109){return BPromise[_0xe5e8('0x1f')](_0x151109);}return _0x3ae06f[_0xe5e8('0x20')]();};}function saveUpdates(_0x1d159e,_0x19691d){return function(_0x3fef4d){if(_0x3fef4d){return _0x3fef4d['update'](_0x1d159e)['then'](function(_0xe9f37e){return _0xe9f37e;});}return null;};}function removeEntity(_0x7095b8,_0x31787e){return function(_0x2a8cce){if(_0x2a8cce){return _0x2a8cce[_0xe5e8('0x21')]()[_0xe5e8('0x22')](function(){_0x7095b8[_0xe5e8('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x202548,_0xf6dd08){return function(_0x2d161a){if(!_0x2d161a){_0x202548[_0xe5e8('0x17')](0x194);}return _0x2d161a;};}function handleError(_0x12628e,_0x56d896){_0x56d896=_0x56d896||0x1f4;return function(_0x2d5441){logger[_0xe5e8('0x23')](_0x2d5441['stack']);if(_0x2d5441[_0xe5e8('0x24')]){delete _0x2d5441['name'];}_0x12628e[_0xe5e8('0x18')](_0x56d896)[_0xe5e8('0x25')](_0x2d5441);};}exports[_0xe5e8('0x26')]=function(_0x454927,_0x2f2b56){var _0xc5c3f7={},_0x3aa439={},_0x104d17={'count':0x0,'rows':[]};var _0x5626e4=_[_0xe5e8('0x27')](db[_0xe5e8('0x28')]['rawAttributes'],function(_0x52cdbb){return{'name':_0x52cdbb['fieldName'],'type':_0x52cdbb[_0xe5e8('0x29')][_0xe5e8('0x2a')]};});_0x3aa439[_0xe5e8('0x2b')]=_[_0xe5e8('0x27')](_0x5626e4,_0xe5e8('0x24'));_0x3aa439[_0xe5e8('0x2c')]=_[_0xe5e8('0x2d')](_0x454927[_0xe5e8('0x2c')]);_0x3aa439['filters']=_['intersection'](_0x3aa439[_0xe5e8('0x2b')],_0x3aa439[_0xe5e8('0x2c')]);_0xc5c3f7[_0xe5e8('0x2e')]=_['intersection'](_0x3aa439[_0xe5e8('0x2b')],qs['fields'](_0x454927[_0xe5e8('0x2c')]['fields']));_0xc5c3f7['attributes']=_0xc5c3f7[_0xe5e8('0x2e')][_0xe5e8('0x2f')]?_0xc5c3f7[_0xe5e8('0x2e')]:_0x3aa439[_0xe5e8('0x2b')];if(!_0x454927[_0xe5e8('0x2c')][_0xe5e8('0x30')]('nolimit')){_0xc5c3f7[_0xe5e8('0x1b')]=qs['limit'](_0x454927[_0xe5e8('0x2c')][_0xe5e8('0x1b')]);_0xc5c3f7[_0xe5e8('0x1a')]=qs[_0xe5e8('0x1a')](_0x454927[_0xe5e8('0x2c')][_0xe5e8('0x1a')]);}_0xc5c3f7['order']=qs['sort'](_0x454927[_0xe5e8('0x2c')]['sort']);_0xc5c3f7[_0xe5e8('0x31')]=qs['filters'](_[_0xe5e8('0x32')](_0x454927['query'],_0x3aa439['filters']),_0x5626e4);if(_0x454927[_0xe5e8('0x2c')][_0xe5e8('0x33')]){_0xc5c3f7['where']=_[_0xe5e8('0x34')](_0xc5c3f7[_0xe5e8('0x31')],{'$or':_[_0xe5e8('0x27')](_0x5626e4,function(_0xd7d068){if(_0xd7d068[_0xe5e8('0x29')]!==_0xe5e8('0x35')){var _0x1a3ec8={};_0x1a3ec8[_0xd7d068[_0xe5e8('0x24')]]={'$like':'%'+_0x454927['query'][_0xe5e8('0x33')]+'%'};return _0x1a3ec8;}})});}_0xc5c3f7=_[_0xe5e8('0x34')]({},_0xc5c3f7,_0x454927[_0xe5e8('0x36')]);var _0xc7373c={'where':_0xc5c3f7[_0xe5e8('0x31')]};return db[_0xe5e8('0x28')][_0xe5e8('0x1c')](_0xc7373c)[_0xe5e8('0x22')](function(_0x442e21){_0x104d17[_0xe5e8('0x1c')]=_0x442e21;if(_0x454927['query']['includeAll']){_0xc5c3f7[_0xe5e8('0x37')]=[{'all':!![]}];}return db[_0xe5e8('0x28')][_0xe5e8('0x38')](_0xc5c3f7);})[_0xe5e8('0x22')](function(_0x1f74eb){_0x104d17[_0xe5e8('0x39')]=_0x1f74eb;return _0x104d17;})[_0xe5e8('0x22')](respondWithFilteredResult(_0x2f2b56,_0xc5c3f7))[_0xe5e8('0x3a')](handleError(_0x2f2b56,null));};exports[_0xe5e8('0x3b')]=function(_0x34ecde,_0x4fa2de){var _0x1b61e3={'raw':!![],'where':{'id':_0x34ecde[_0xe5e8('0x3c')]['id']}},_0x1ca2d6={};_0x1ca2d6[_0xe5e8('0x2b')]=_[_0xe5e8('0x2d')](db[_0xe5e8('0x28')][_0xe5e8('0x3d')]);_0x1ca2d6['query']=_[_0xe5e8('0x2d')](_0x34ecde['query']);_0x1ca2d6[_0xe5e8('0x3e')]=_['intersection'](_0x1ca2d6['model'],_0x1ca2d6[_0xe5e8('0x2c')]);_0x1b61e3[_0xe5e8('0x2e')]=_[_0xe5e8('0x3f')](_0x1ca2d6[_0xe5e8('0x2b')],qs['fields'](_0x34ecde[_0xe5e8('0x2c')]['fields']));_0x1b61e3[_0xe5e8('0x2e')]=_0x1b61e3[_0xe5e8('0x2e')][_0xe5e8('0x2f')]?_0x1b61e3[_0xe5e8('0x2e')]:_0x1ca2d6[_0xe5e8('0x2b')];if(_0x34ecde[_0xe5e8('0x2c')][_0xe5e8('0x40')]){_0x1b61e3[_0xe5e8('0x37')]=[{'all':!![]}];}_0x1b61e3=_[_0xe5e8('0x34')]({},_0x1b61e3,_0x34ecde[_0xe5e8('0x36')]);return db['WhatsappTransferReport'][_0xe5e8('0x41')](_0x1b61e3)['then'](handleEntityNotFound(_0x4fa2de,null))['then'](respondWithResult(_0x4fa2de,null))[_0xe5e8('0x3a')](handleError(_0x4fa2de,null));};exports[_0xe5e8('0x42')]=function(_0x540c11,_0x546aaa){return db['WhatsappTransferReport'][_0xe5e8('0x42')](_0x540c11[_0xe5e8('0x43')],{})[_0xe5e8('0x22')](respondWithResult(_0x546aaa,0xc9))[_0xe5e8('0x3a')](handleError(_0x546aaa,null));};exports[_0xe5e8('0x44')]=function(_0x6990f4,_0x20dc8a){if(_0x6990f4['body']['id']){delete _0x6990f4[_0xe5e8('0x43')]['id'];}return db[_0xe5e8('0x28')][_0xe5e8('0x41')]({'where':{'id':_0x6990f4['params']['id']}})[_0xe5e8('0x22')](handleEntityNotFound(_0x20dc8a,null))[_0xe5e8('0x22')](saveUpdates(_0x6990f4[_0xe5e8('0x43')],null))[_0xe5e8('0x22')](respondWithResult(_0x20dc8a,null))['catch'](handleError(_0x20dc8a,null));};exports[_0xe5e8('0x21')]=function(_0xef7f3f,_0x145e94){return db[_0xe5e8('0x28')][_0xe5e8('0x41')]({'where':{'id':_0xef7f3f[_0xe5e8('0x3c')]['id']}})[_0xe5e8('0x22')](handleEntityNotFound(_0x145e94,null))[_0xe5e8('0x22')](removeEntity(_0x145e94,null))['catch'](handleError(_0x145e94,null));};exports[_0xe5e8('0x45')]=function(_0x136fd7,_0x89ad60){return db[_0xe5e8('0x28')][_0xe5e8('0x45')]()[_0xe5e8('0x22')](respondWithResult(_0x89ad60,null))['catch'](handleError(_0x89ad60,null));};
\ No newline at end of file
index dc6d605..80f4a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x285f=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./whatsappTransferReport.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x285f,0xab));var _0xf285=function(_0xb306bb,_0x4624cc){_0xb306bb=_0xb306bb-0x0;var _0x588523=_0x285f[_0xb306bb];return _0x588523;};'use strict';var _=require(_0xf285('0x0'));var util=require(_0xf285('0x1'));var logger=require(_0xf285('0x2'))(_0xf285('0x3'));var moment=require(_0xf285('0x4'));var BPromise=require(_0xf285('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf285('0x6'));var rimraf=require('rimraf');var config=require(_0xf285('0x7'));var attributes=require(_0xf285('0x8'));module[_0xf285('0x9')]=function(_0x2dab5d,_0x152ed3){return _0x2dab5d[_0xf285('0xa')](_0xf285('0xb'),attributes,{'tableName':_0xf285('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xf285('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ab1=['report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport'];(function(_0xb2e4d2,_0x1461bd){var _0x41a082=function(_0x40275b){while(--_0x40275b){_0xb2e4d2['push'](_0xb2e4d2['shift']());}};_0x41a082(++_0x1461bd);}(_0x3ab1,0x179));var _0x13ab=function(_0x4ea50a,_0x5d7fda){_0x4ea50a=_0x4ea50a-0x0;var _0xdf3862=_0x3ab1[_0x4ea50a];return _0xdf3862;};'use strict';var _=require(_0x13ab('0x0'));var util=require(_0x13ab('0x1'));var logger=require(_0x13ab('0x2'))(_0x13ab('0x3'));var moment=require(_0x13ab('0x4'));var BPromise=require(_0x13ab('0x5'));var rp=require(_0x13ab('0x6'));var fs=require('fs');var path=require(_0x13ab('0x7'));var rimraf=require('rimraf');var config=require(_0x13ab('0x8'));var attributes=require(_0x13ab('0x9'));module[_0x13ab('0xa')]=function(_0xbb1159,_0x1773b0){return _0xbb1159[_0x13ab('0xb')](_0x13ab('0xc'),attributes,{'tableName':_0x13ab('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x13ab('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 82e987d..a6471a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappTransferReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x1d3e8c,_0x11b8b9){var _0x2e0ee5=function(_0x25c0b9){while(--_0x25c0b9){_0x1d3e8c['push'](_0x1d3e8c['shift']());}};_0x2e0ee5(++_0x11b8b9);}(_0xa8b1,0x146));var _0x1a8b=function(_0x2ecb59,_0x5b3497){_0x2ecb59=_0x2ecb59-0x0;var _0x281938=_0xa8b1[_0x2ecb59];return _0x281938;};'use strict';var _=require('lodash');var util=require(_0x1a8b('0x0'));var moment=require(_0x1a8b('0x1'));var BPromise=require(_0x1a8b('0x2'));var rs=require(_0x1a8b('0x3'));var fs=require('fs');var Redis=require(_0x1a8b('0x4'));var db=require(_0x1a8b('0x5'))['db'];var utils=require(_0x1a8b('0x6'));var logger=require(_0x1a8b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1a8b('0x8')][_0x1a8b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28845a,_0x4c75a8,_0xe7a7d7){return new BPromise(function(_0x4a9f05,_0x4cc124){return client[_0x1a8b('0xa')](_0x28845a,_0xe7a7d7)[_0x1a8b('0xb')](function(_0x574dda){logger[_0x1a8b('0xc')]('WhatsappTransferReport,\x20%s,\x20%s',_0x4c75a8,_0x1a8b('0xd'));logger['debug'](_0x1a8b('0xe'),_0x4c75a8,_0x1a8b('0xd'),JSON[_0x1a8b('0xf')](_0x574dda));if(_0x574dda[_0x1a8b('0x10')]){if(_0x574dda['error'][_0x1a8b('0x11')]===0x1f4){logger['error'](_0x1a8b('0x12'),_0x4c75a8,_0x574dda['error']['message']);return _0x4cc124(_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);}logger[_0x1a8b('0x10')](_0x1a8b('0x12'),_0x4c75a8,_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);return _0x4a9f05(_0x574dda[_0x1a8b('0x10')][_0x1a8b('0x13')]);}else{logger[_0x1a8b('0xc')](_0x1a8b('0x12'),_0x4c75a8,_0x1a8b('0xd'));_0x4a9f05(_0x574dda[_0x1a8b('0x14')][_0x1a8b('0x13')]);}})[_0x1a8b('0x15')](function(_0x4c0cf7){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x4c75a8,_0x4c0cf7);_0x4cc124(_0x4c0cf7);});});}
\ No newline at end of file
+var _0x5a6c=['debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x5c80a2,_0x59004f){var _0x5d4eb8=function(_0xb327e3){while(--_0xb327e3){_0x5c80a2['push'](_0x5c80a2['shift']());}};_0x5d4eb8(++_0x59004f);}(_0x5a6c,0x1eb));var _0xc5a6=function(_0x4fcc1c,_0x531d7d){_0x4fcc1c=_0x4fcc1c-0x0;var _0x32718e=_0x5a6c[_0x4fcc1c];return _0x32718e;};'use strict';var _=require(_0xc5a6('0x0'));var util=require('util');var moment=require(_0xc5a6('0x1'));var BPromise=require(_0xc5a6('0x2'));var rs=require(_0xc5a6('0x3'));var fs=require('fs');var Redis=require(_0xc5a6('0x4'));var db=require(_0xc5a6('0x5'))['db'];var utils=require(_0xc5a6('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc5a6('0x7'));var jayson=require(_0xc5a6('0x8'));var client=jayson['client'][_0xc5a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f3d0c,_0x220fc3,_0x41728d){return new BPromise(function(_0x343029,_0x75af55){return client['request'](_0x2f3d0c,_0x41728d)[_0xc5a6('0xa')](function(_0x592d2a){logger['info'](_0xc5a6('0xb'),_0x220fc3,_0xc5a6('0xc'));logger[_0xc5a6('0xd')](_0xc5a6('0xe'),_0x220fc3,'request\x20sent',JSON['stringify'](_0x592d2a));if(_0x592d2a['error']){if(_0x592d2a['error'][_0xc5a6('0xf')]===0x1f4){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x220fc3,_0x592d2a['error']['message']);return _0x75af55(_0x592d2a[_0xc5a6('0x10')][_0xc5a6('0x11')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x220fc3,_0x592d2a[_0xc5a6('0x10')][_0xc5a6('0x11')]);return _0x343029(_0x592d2a['error'][_0xc5a6('0x11')]);}else{logger[_0xc5a6('0x12')](_0xc5a6('0xb'),_0x220fc3,_0xc5a6('0xc'));_0x343029(_0x592d2a[_0xc5a6('0x13')]['message']);}})[_0xc5a6('0x14')](function(_0x2c5c3f){logger[_0xc5a6('0x10')]('WhatsappTransferReport,\x20%s,\x20%s',_0x220fc3,_0x2c5c3f);_0x75af55(_0x2c5c3f);});});}
\ No newline at end of file
index 445ec7a..c229624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa41=['catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','sync','then','start','info','Online\x20apps:','filter','online','name','join','Offline\x20apps:','map','status','./config/seedDB','default','./config/license'];(function(_0x2bb9b3,_0x1d2c25){var _0x601b6=function(_0x4f8d09){while(--_0x4f8d09){_0x2bb9b3['push'](_0x2bb9b3['shift']());}};_0x601b6(++_0x1d2c25);}(_0xfa41,0x8f));var _0x1fa4=function(_0x3ac0fd,_0x2dfb0c){_0x3ac0fd=_0x3ac0fd-0x0;var _0x2670a9=_0xfa41[_0x3ac0fd];return _0x2670a9;};'use strict';var _=require('lodash');var mysqldb=require(_0x1fa4('0x0'));var rpc=require(_0x1fa4('0x1'));var config=require(_0x1fa4('0x2'));var logger=require(_0x1fa4('0x3'))(_0x1fa4('0x4'));var pm2=require(_0x1fa4('0x5'));var pm2Config=require(_0x1fa4('0x6'));var schedule=require(_0x1fa4('0x7'));var chat=require(_0x1fa4('0x8'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x1fa4('0x9'));function main(){return mysqldb['db']['sequelize'][_0x1fa4('0xa')]()['then'](function(){return rpc['listen']();})[_0x1fa4('0xb')](function(_0x315cdc){logger['info'](_0x315cdc);return chat[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(){return whatsapp[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(){return schedule['start']();})[_0x1fa4('0xb')](function(){return transcribe[_0x1fa4('0xc')]();})[_0x1fa4('0xb')](function(_0x3a2d51){logger['info'](_0x3a2d51);return pm2[_0x1fa4('0xc')](pm2Config);})[_0x1fa4('0xb')](function(_0x456ccb){logger[_0x1fa4('0xd')](_0x1fa4('0xe'),_['map'](_[_0x1fa4('0xf')](_0x456ccb,{'status':_0x1fa4('0x10')}),_0x1fa4('0x11'))[_0x1fa4('0x12')]());logger[_0x1fa4('0xd')](_0x1fa4('0x13'),_[_0x1fa4('0x14')](_[_0x1fa4('0xf')](_0x456ccb,function(_0x47ddeb){return _0x47ddeb[_0x1fa4('0x15')]!==_0x1fa4('0x10');}),_0x1fa4('0x11'))[_0x1fa4('0x12')]()||'None');config['seedDB']&&require(_0x1fa4('0x16'))[_0x1fa4('0x17')]();require(_0x1fa4('0x18'))[_0x1fa4('0x17')]();})[_0x1fa4('0x19')](function(_0xdecc8e){logger[_0x1fa4('0x1a')](_0x1fa4('0x1b'),_0xdecc8e);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x0757=['sync','then','listen','info','start','Online\x20apps:','map','filter','online','status','name','join','None','seedDB','default','./config/license','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize'];(function(_0x3e5a76,_0x1e2316){var _0x2b9bc6=function(_0x1218e3){while(--_0x1218e3){_0x3e5a76['push'](_0x3e5a76['shift']());}};_0x2b9bc6(++_0x1e2316);}(_0x0757,0x1b7));var _0x7075=function(_0x247aab,_0x6d308){_0x247aab=_0x247aab-0x0;var _0x198cd0=_0x0757[_0x247aab];return _0x198cd0;};'use strict';var _=require(_0x7075('0x0'));var mysqldb=require(_0x7075('0x1'));var rpc=require(_0x7075('0x2'));var config=require('./config/environment');var logger=require(_0x7075('0x3'))(_0x7075('0x4'));var pm2=require(_0x7075('0x5'));var pm2Config=require(_0x7075('0x6'));var schedule=require(_0x7075('0x7'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x7075('0x8'));var transcribe=require(_0x7075('0x9'));function main(){return mysqldb['db'][_0x7075('0xa')][_0x7075('0xb')]()[_0x7075('0xc')](function(){return rpc[_0x7075('0xd')]();})[_0x7075('0xc')](function(_0xf20246){logger[_0x7075('0xe')](_0xf20246);return chat['start']();})[_0x7075('0xc')](function(){return whatsapp[_0x7075('0xf')]();})['then'](function(){return schedule[_0x7075('0xf')]();})['then'](function(){return transcribe['start']();})['then'](function(_0x581d00){logger[_0x7075('0xe')](_0x581d00);return pm2[_0x7075('0xf')](pm2Config);})[_0x7075('0xc')](function(_0x32cc59){logger['info'](_0x7075('0x10'),_[_0x7075('0x11')](_[_0x7075('0x12')](_0x32cc59,{'status':_0x7075('0x13')}),'name')['join']());logger[_0x7075('0xe')]('Offline\x20apps:',_[_0x7075('0x11')](_['filter'](_0x32cc59,function(_0x40b4c4){return _0x40b4c4[_0x7075('0x14')]!==_0x7075('0x13');}),_0x7075('0x15'))[_0x7075('0x16')]()||_0x7075('0x17'));config[_0x7075('0x18')]&&require('./config/seedDB')[_0x7075('0x19')]();require(_0x7075('0x1a'))[_0x7075('0x19')]();})['catch'](function(_0x3eed8e){logger[_0x7075('0x1b')](_0x7075('0x1c'),_0x3eed8e);process[_0x7075('0x1d')](0x1);});}main();
\ No newline at end of file
index 44974bf..3a35d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df4=['verify','randomBytes','toString','hex','floor','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','showWebBar','lastLoginAt','lastPauseAt','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','privacyEnabled','settingsEnabled','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','Basic','find','query','apikey','getUuid','User','sub','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','blockedAt','minutes','Invalid\x20API\x20access\x20key','Unknown\x20authorization\x20format','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','webrtc','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','retrieveApiKey','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','splice','unshift','encryptString','join','promisify','sign','payload','options'];(function(_0x161d3e,_0xa8d8df){var _0xc29485=function(_0x245c0a){while(--_0x245c0a){_0x161d3e['push'](_0x161d3e['shift']());}};_0xc29485(++_0xa8d8df);}(_0x3df4,0x173));var _0x43df=function(_0x522f2d,_0x5a73a9){_0x522f2d=_0x522f2d-0x0;var _0x100e6e=_0x3df4[_0x522f2d];return _0x100e6e;};'use strict';var db=require(_0x43df('0x0'))['db'];var config=require(_0x43df('0x1'));var hardwareConf=require(_0x43df('0x2'));var licenseUtil=require(_0x43df('0x3'));var encryptor=require(_0x43df('0x4'));var _=require(_0x43df('0x5'));var jwt=require(_0x43df('0x6'));var expressJwt=require(_0x43df('0x7'));var compose=require(_0x43df('0x8'));var basicAuth=require(_0x43df('0x9'));var crypto=require('crypto');var BPromise=require(_0x43df('0xa'));var util=require(_0x43df('0xb'));var moment=require(_0x43df('0xc'));var validateJwt=expressJwt({'secret':config[_0x43df('0xd')][_0x43df('0xe')]});var userAttributes=['id',_0x43df('0xf'),_0x43df('0x10'),_0x43df('0x11'),_0x43df('0x12'),_0x43df('0x13'),_0x43df('0x14'),_0x43df('0x15'),_0x43df('0x16'),_0x43df('0x17'),_0x43df('0x18'),_0x43df('0x19'),_0x43df('0x1a'),'smsPause','openchannelPause','pauseType',_0x43df('0x1b'),_0x43df('0x1c'),_0x43df('0x1d'),'crudPermissions','allowmessenger',_0x43df('0x1e'),_0x43df('0x1f'),_0x43df('0x20'),_0x43df('0x21'),_0x43df('0x22'),'phoneBarEnableRecording',_0x43df('0x23'),'phoneBarEnableSettings',_0x43df('0x24'),_0x43df('0x25'),'phoneBarRemoteControl',_0x43df('0x26'),'hotdesk',_0x43df('0x27'),'userProfileId',_0x43df('0x28'),_0x43df('0x29'),'wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions',_0x43df('0x2a'),_0x43df('0x2b'),_0x43df('0x2c')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])[_0x43df('0x2d')](function(_0x352d2a,_0x194b7e,_0xa85580){if(_0x352d2a[_0x43df('0x2e')]){_0xa85580();}else{return db[_0x43df('0x2f')][_0x43df('0x30')]({'where':{'id':_0x352d2a[_0x43df('0x31')]['id']},'attributes':['id',_0x43df('0x32'),_0x43df('0x33')],'raw':!![]})[_0x43df('0x34')](function(_0x5b4f56){if(_0x5b4f56&&_0x5b4f56[_0x43df('0x32')]){return _0x194b7e[_0x43df('0x35')](_0x5b4f56['disposition']===_0x43df('0x36')?0x195:0x193)[_0x43df('0x37')]({'message':_0x5b4f56['disposition']===_0x43df('0x36')?_0x43df('0x38'):'Forbidden.'});}else{_0xa85580();}})[_0x43df('0x39')](function(_0x4683b9){_0xa85580(_0x4683b9);});}});};exports[_0x43df('0x3a')]=function isAuthenticated(_0x5ec146){return compose()[_0x43df('0x2d')](function(_0x3837d3,_0x1d6df3,_0x4afd60){var _0x2a90f6;if(_0x3837d3[_0x43df('0x3b')][_0x43df('0x3c')]){if(_[_0x43df('0x3d')](_0x3837d3[_0x43df('0x3b')][_0x43df('0x3c')],_0x43df('0x3e'))){var _0x46f445=basicAuth(_0x3837d3);db['User'][_0x43df('0x3f')]({'where':{'name':_0x46f445['name']}})[_0x43df('0x34')](function(_0xa272b1){if(!_0xa272b1||!_0xa272b1['authenticate'](_0x46f445['pass'])){return _0x1d6df3['status'](0x191)[_0x43df('0x37')]({'message':'Wrong\x20credentials.'});}_0x3837d3['user']={'id':_0xa272b1['id']};_0x4afd60();})[_0x43df('0x39')](function(_0x951188){_0x4afd60(_0x951188);});}else if(_[_0x43df('0x3d')](_0x3837d3[_0x43df('0x3b')]['authorization'],'Bearer')){validateJwt(_0x3837d3,_0x1d6df3,_0x4afd60);}else{if(_0x5ec146){_0x4afd60();}else{return _0x1d6df3[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x3837d3[_0x43df('0x40')][_0x43df('0x41')]){try{var _0x1373b7={'audience':hardwareConf[_0x43df('0x42')](),'issuer':hardwareConf[_0x43df('0x42')]()};verifyJwt(_0x3837d3['query'][_0x43df('0x41')],_0x1373b7)[_0x43df('0x34')](function(_0x2ee576){return db[_0x43df('0x43')][_0x43df('0x3f')]({'where':{'id':_0x2ee576[_0x43df('0x44')]}})[_0x43df('0x34')](function(_0x5625a6){_0x2a90f6=_0x5625a6;return db['Setting'][_0x43df('0x30')]({'where':{'id':0x1},'attributes':[_0x43df('0x45'),_0x43df('0x46')],'raw':!![]});})[_0x43df('0x34')](function(_0x108ba1){if(!_0x2a90f6||!_[_0x43df('0x47')](_0x2a90f6['apiKeyNonce'],_0x2ee576[_0x43df('0x48')])){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':_0x43df('0x49')});}if(_0x2a90f6['disabled']){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}if(_0x2a90f6['blocked']){if(_0x108ba1[_0x43df('0x46')]>0x0){if(moment(_0x2a90f6[_0x43df('0x4a')])['add'](_0x108ba1[_0x43df('0x46')],_0x43df('0x4b'))>moment()){return _0x1d6df3[_0x43df('0x35')](0x191)['json']({'message':_0x43df('0x4c')});}}else{return _0x1d6df3[_0x43df('0x35')](0x191)[_0x43df('0x37')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x3837d3[_0x43df('0x2e')]={'id':_0x2a90f6['id']};_0x4afd60();});})[_0x43df('0x39')](function(){return _0x1d6df3[_0x43df('0x35')](0x191)[_0x43df('0x37')]({'message':_0x43df('0x4c')});});}catch(_0x4ca1e7){_0x4afd60(_0x4ca1e7);}}else if(_0x5ec146){_0x4afd60();}else{return _0x1d6df3[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':_0x43df('0x4d')});}})[_0x43df('0x2d')](function(_0x4e13ec,_0x251250,_0x159497){if(_0x4e13ec[_0x43df('0x2e')]){db[_0x43df('0x43')][_0x43df('0x3f')]({'where':{'id':_0x4e13ec[_0x43df('0x2e')]['id']},'attributes':userAttributes})[_0x43df('0x34')](function(_0x5c7169){if(!_0x5c7169){return _0x251250['status'](0x194)['json']({'message':_0x43df('0x4e')});}_0x4e13ec[_0x43df('0x2e')]=_0x5c7169;_0x159497();})[_0x43df('0x39')](function(_0x1928a8){_0x159497(_0x1928a8);});}else if(_0x5ec146){_0x159497();}else{return _0x251250[_0x43df('0x35')](0x194)['json']({'message':_0x43df('0x4f')});}});};exports[_0x43df('0x50')]=function canUpdate(){return compose()[_0x43df('0x2d')](function(_0x42bc33,_0x3ecb97,_0x2c8198){return licenseUtil[_0x43df('0x51')]()['then'](function(_0x442c90){if(_0x442c90[_0x43df('0x52')]){_0x2c8198();}else{return _0x3ecb97[_0x43df('0x35')](0x193)[_0x43df('0x37')]({'message':_0x43df('0x53')});}})['catch'](function(_0x4ff2d9){_0x2c8198(_0x4ff2d9);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()['use'](function(_0x11e751,_0x3ee5cb,_0x3280c4){return licenseUtil[_0x43df('0x51')]()[_0x43df('0x34')](function(_0x2f8673){if(_0x2f8673[_0x43df('0x54')]){_0x3280c4();}else{return _0x3ee5cb['status'](0x193)[_0x43df('0x37')]({'message':_0x43df('0x53')});}})[_0x43df('0x39')](function(_0x12e88f){_0x3280c4(_0x12e88f);});});};exports[_0x43df('0x55')]=function(_0x567099,_0xc719ac,_0xd730e9){_0x567099['isMiddleware']=!![];return _0xd730e9();};exports[_0x43df('0x56')]=function signToken(_0x23e783){return signJwt(_0x23e783);};exports['setTokenCookie']=function(_0x50a2b1,_0x58195a){if(!_0x50a2b1['user']){return _0x58195a['status'](0x194)['json']({'message':_0x43df('0x57')});}var _0x474800={'payload':{'id':_0x50a2b1[_0x43df('0x2e')]['id'],'role':_0x50a2b1[_0x43df('0x2e')][_0x43df('0xf')]},'options':{'expiresIn':0x15180}};return signJwt(_0x474800)[_0x43df('0x34')](function(_0xdc423b){_0x58195a[_0x43df('0x58')](_0x43df('0x59'),_0xdc423b);_0x58195a[_0x43df('0x5a')](_0x43df('0x5b'));})[_0x43df('0x39')](function(_0x3f1067){return _0x58195a[_0x43df('0x35')](0x1f4)['send'](_0x3f1067);});};exports[_0x43df('0x5c')]=function(_0x79bf8e){if(_['isNil'](_0x79bf8e[_0x43df('0x5d')])||_[_0x43df('0x5e')](_0x79bf8e['apiKeyIat'])){return null;}else{return createJwt(_0x79bf8e);}};exports[_0x43df('0x5f')]=function(_0x5cead3){_0x5cead3[_0x43df('0x5d')]=generateNonce();_0x5cead3[_0x43df('0x60')]=generateIssuedAt();return createJwt(_0x5cead3);};exports[_0x43df('0x61')]=function(_0x1bce33,_0x5a9600){var _0x1912ce=_0x1bce33[_0x43df('0x40')][_0x43df('0x41')];if(_0x1912ce){var _0x5f4ff7={'nonce':_0x5a9600[_0x43df('0x5d')],'iat':_0x5a9600[_0x43df('0x60')],'audience':hardwareConf[_0x43df('0x42')](),'issuer':hardwareConf[_0x43df('0x42')]()};return verifyJwt(_0x1912ce,_0x5f4ff7)[_0x43df('0x34')](function(){return generateApiKey(_0x5a9600);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x43df('0x62')]=function(_0x31df6e){var _0x31f40d=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x31f40d[_0x43df('0x63')](_0x31df6e))throw new db[(_0x43df('0x64'))][(_0x43df('0x65'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x43df('0x66')]=function(_0x429ba5,_0x503161,_0x57618b){var _0x3a2822=encryptor[_0x43df('0x67')](_0x503161)[_0x43df('0x68')](',');for(var _0x51eceb=0x0;_0x51eceb<_0x57618b;_0x51eceb++){if(!_0x3a2822[_0x51eceb])break;if(_0x429ba5[_0x43df('0x69')]()===_0x3a2822[_0x51eceb][_0x43df('0x69')]()){var _0x56a053=util[_0x43df('0x6a')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x57618b);if(_0x57618b===0x1){_0x56a053=_0x43df('0x6b');}throw new db['Sequelize'][(_0x43df('0x65'))](_0x56a053);}}return;};exports['updatePasswordsHistory']=function(_0x5dea96,_0x20167b){var _0x44578c=_0x20167b?encryptor[_0x43df('0x67')](_0x20167b)[_0x43df('0x68')](','):[];if(_0x44578c[_0x43df('0x6c')]===0x5){_0x44578c[_0x43df('0x6d')](-0x1,0x1);}_0x44578c[_0x43df('0x6e')](_0x5dea96);return encryptor[_0x43df('0x6f')](_0x44578c[_0x43df('0x70')](','));};function signJwt(_0x3d8fed){var _0x565ff5=BPromise[_0x43df('0x71')](jwt[_0x43df('0x72')],{'context':jwt});var _0x5a4803=_0x3d8fed['secret']||config[_0x43df('0xd')][_0x43df('0xe')];return new BPromise(function(_0x1ad650,_0x108f55){_0x565ff5(_0x3d8fed[_0x43df('0x73')],_0x5a4803,_0x3d8fed[_0x43df('0x74')])[_0x43df('0x34')](function(_0x222988){_0x1ad650(_0x222988);})[_0x43df('0x39')](function(_0x25dead){_0x108f55(_0x25dead);});});}function verifyJwt(_0x26db3b,_0x30adff,_0x181bc9){var _0x398931=BPromise['promisify'](jwt[_0x43df('0x75')],{'context':jwt});var _0x36bf5c=_0x181bc9||config[_0x43df('0xd')]['session'];return new BPromise(function(_0x4a8512,_0x3859ae){_0x398931(_0x26db3b,_0x36bf5c,_0x30adff)['then'](function(_0x55e5b3){_0x4a8512(_0x55e5b3);})[_0x43df('0x39')](function(_0x149807){_0x3859ae(_0x149807);});});}function generateNonce(){return crypto[_0x43df('0x76')](0x10)[_0x43df('0x77')](_0x43df('0x78'));}function generateIssuedAt(){return Math[_0x43df('0x79')](Date['now']()/0x3e8)[_0x43df('0x77')]();}function createJwt(_0x191b87){var _0x2a3778={'payload':{'iat':_0x191b87['apiKeyIat'],'nonce':_0x191b87[_0x43df('0x5d')]},'options':{'algorithm':'HS512','subject':_0x191b87['id'][_0x43df('0x77')](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0x43df('0x42')]()}};return signJwt(_0x2a3778)['then'](function(_0x521f02){return{'iat':_0x191b87[_0x43df('0x60')],'nonce':_0x191b87[_0x43df('0x5d')],'token':_0x521f02};});}
\ No newline at end of file
+var _0x0c5c=['getUuid','User','sub','allowedLoginAttempts','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','add','minutes','User\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','generateApiKey','apiKeyIat','regenerateApiKey','query','apikey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','secret','payload','options','verify','toString','floor','now','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','util','moment','secrets','session','role','name','internal','email','userpic','permissions','md5secret','mailPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','Unmanaged.','catch','headers','authorization','startsWith','Basic','find','authenticate','pass','Bearer','Unknown\x20authorization\x20format'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x0c5c,0x13d));var _0xc0c5=function(_0x4f834a,_0x2e7f25){_0x4f834a=_0x4f834a-0x0;var _0x52089d=_0x0c5c[_0x4f834a];return _0x52089d;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xc0c5('0x0'));var hardwareConf=require(_0xc0c5('0x1'));var licenseUtil=require(_0xc0c5('0x2'));var encryptor=require('../encryptor');var _=require(_0xc0c5('0x3'));var jwt=require(_0xc0c5('0x4'));var expressJwt=require(_0xc0c5('0x5'));var compose=require(_0xc0c5('0x6'));var basicAuth=require(_0xc0c5('0x7'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require(_0xc0c5('0x8'));var moment=require(_0xc0c5('0x9'));var validateJwt=expressJwt({'secret':config[_0xc0c5('0xa')][_0xc0c5('0xb')]});var userAttributes=['id',_0xc0c5('0xc'),'fullname',_0xc0c5('0xd'),_0xc0c5('0xe'),_0xc0c5('0xf'),_0xc0c5('0x10'),_0xc0c5('0x11'),_0xc0c5('0x12'),'voicePause','chatPause',_0xc0c5('0x13'),'faxPause','smsPause',_0xc0c5('0x14'),_0xc0c5('0x15'),_0xc0c5('0x16'),_0xc0c5('0x17'),_0xc0c5('0x18'),'crudPermissions',_0xc0c5('0x19'),'passwordResetAt',_0xc0c5('0x1a'),_0xc0c5('0x1b'),_0xc0c5('0x1c'),_0xc0c5('0x1d'),_0xc0c5('0x1e'),_0xc0c5('0x1f'),_0xc0c5('0x20'),_0xc0c5('0x21'),'phoneBarPrefixRequired',_0xc0c5('0x22'),_0xc0c5('0x23'),_0xc0c5('0x24'),_0xc0c5('0x25'),_0xc0c5('0x26'),_0xc0c5('0x27'),_0xc0c5('0x28'),_0xc0c5('0x29'),_0xc0c5('0x2a'),'downloadOmnichannelInteractions',_0xc0c5('0x2b'),_0xc0c5('0x2c'),_0xc0c5('0x2d')];exports[_0xc0c5('0x2e')]=function(){return this[_0xc0c5('0x2f')](!![])[_0xc0c5('0x30')](function(_0x3d2b05,_0x594a8e,_0x5810b2){if(_0x3d2b05[_0xc0c5('0x31')]){_0x5810b2();}else{return db[_0xc0c5('0x32')][_0xc0c5('0x33')]({'where':{'id':_0x3d2b05[_0xc0c5('0x34')]['id']},'attributes':['id',_0xc0c5('0x35'),_0xc0c5('0x36')],'raw':!![]})[_0xc0c5('0x37')](function(_0x31daf8){if(_0x31daf8&&_0x31daf8[_0xc0c5('0x35')]){return _0x594a8e[_0xc0c5('0x38')](_0x31daf8[_0xc0c5('0x36')]===_0xc0c5('0x39')?0x195:0x193)[_0xc0c5('0x3a')]({'message':_0x31daf8[_0xc0c5('0x36')]===_0xc0c5('0x39')?_0xc0c5('0x3b'):'Forbidden.'});}else{_0x5810b2();}})[_0xc0c5('0x3c')](function(_0xfdd4ab){_0x5810b2(_0xfdd4ab);});}});};exports[_0xc0c5('0x2f')]=function isAuthenticated(_0x5826ad){return compose()[_0xc0c5('0x30')](function(_0x2b4c34,_0x16bcb0,_0x520308){var _0x28e7eb;if(_0x2b4c34[_0xc0c5('0x3d')][_0xc0c5('0x3e')]){if(_[_0xc0c5('0x3f')](_0x2b4c34[_0xc0c5('0x3d')][_0xc0c5('0x3e')],_0xc0c5('0x40'))){var _0x539983=basicAuth(_0x2b4c34);db['User'][_0xc0c5('0x41')]({'where':{'name':_0x539983[_0xc0c5('0xd')]}})[_0xc0c5('0x37')](function(_0x1d926b){if(!_0x1d926b||!_0x1d926b[_0xc0c5('0x42')](_0x539983[_0xc0c5('0x43')])){return _0x16bcb0[_0xc0c5('0x38')](0x191)[_0xc0c5('0x3a')]({'message':'Wrong\x20credentials.'});}_0x2b4c34[_0xc0c5('0x31')]={'id':_0x1d926b['id']};_0x520308();})[_0xc0c5('0x3c')](function(_0x3da8c1){_0x520308(_0x3da8c1);});}else if(_[_0xc0c5('0x3f')](_0x2b4c34[_0xc0c5('0x3d')][_0xc0c5('0x3e')],_0xc0c5('0x44'))){validateJwt(_0x2b4c34,_0x16bcb0,_0x520308);}else{if(_0x5826ad){_0x520308();}else{return _0x16bcb0[_0xc0c5('0x38')](0x193)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x45')});}}}else if(_0x2b4c34['query']['apikey']){try{var _0x2cad22={'audience':hardwareConf[_0xc0c5('0x46')](),'issuer':hardwareConf[_0xc0c5('0x46')]()};verifyJwt(_0x2b4c34['query']['apikey'],_0x2cad22)[_0xc0c5('0x37')](function(_0x3d6aac){return db[_0xc0c5('0x47')][_0xc0c5('0x41')]({'where':{'id':_0x3d6aac[_0xc0c5('0x48')]}})['then'](function(_0x1eb236){_0x28e7eb=_0x1eb236;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xc0c5('0x49'),_0xc0c5('0x4a')],'raw':!![]});})[_0xc0c5('0x37')](function(_0x2ae82c){if(!_0x28e7eb||!_['isEqual'](_0x28e7eb[_0xc0c5('0x4b')],_0x3d6aac[_0xc0c5('0x4c')])){return _0x16bcb0[_0xc0c5('0x38')](0x191)['json']({'message':_0xc0c5('0x4d')});}if(_0x28e7eb[_0xc0c5('0x4e')]){return _0x16bcb0[_0xc0c5('0x38')](0x191)['json']({'message':_0xc0c5('0x4f')});}if(_0x28e7eb[_0xc0c5('0x50')]){if(_0x2ae82c['blockDuration']>0x0){if(moment(_0x28e7eb['blockedAt'])[_0xc0c5('0x51')](_0x2ae82c[_0xc0c5('0x4a')],_0xc0c5('0x52'))>moment()){return _0x16bcb0[_0xc0c5('0x38')](0x191)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x4f')});}}else{return _0x16bcb0[_0xc0c5('0x38')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});}}_0x2b4c34[_0xc0c5('0x31')]={'id':_0x28e7eb['id']};_0x520308();});})['catch'](function(){return _0x16bcb0[_0xc0c5('0x38')](0x191)['json']({'message':_0xc0c5('0x4f')});});}catch(_0x14dd4e){_0x520308(_0x14dd4e);}}else if(_0x5826ad){_0x520308();}else{return _0x16bcb0['status'](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}})[_0xc0c5('0x30')](function(_0x3d898a,_0x4ed525,_0x831106){if(_0x3d898a['user']){db['User'][_0xc0c5('0x41')]({'where':{'id':_0x3d898a[_0xc0c5('0x31')]['id']},'attributes':userAttributes})[_0xc0c5('0x37')](function(_0x41ef4c){if(!_0x41ef4c){return _0x4ed525['status'](0x194)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x53')});}_0x3d898a['user']=_0x41ef4c;_0x831106();})[_0xc0c5('0x3c')](function(_0x1d098e){_0x831106(_0x1d098e);});}else if(_0x5826ad){_0x831106();}else{return _0x4ed525['status'](0x194)[_0xc0c5('0x3a')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xc0c5('0x54')]=function canUpdate(){return compose()['use'](function(_0x573d76,_0x5054a4,_0x4c87cd){return licenseUtil[_0xc0c5('0x55')]()[_0xc0c5('0x37')](function(_0x4fb060){if(_0x4fb060[_0xc0c5('0x56')]){_0x4c87cd();}else{return _0x5054a4[_0xc0c5('0x38')](0x193)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x57')});}})[_0xc0c5('0x3c')](function(_0x93bee){_0x4c87cd(_0x93bee);});});};exports[_0xc0c5('0x58')]=function isWebrtcLicence(){return compose()['use'](function(_0x3007f0,_0x3729d0,_0x3bf1f6){return licenseUtil['getLicense']()[_0xc0c5('0x37')](function(_0x3c3cf0){if(_0x3c3cf0[_0xc0c5('0x59')]){_0x3bf1f6();}else{return _0x3729d0[_0xc0c5('0x38')](0x193)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x57')});}})['catch'](function(_0xfe4221){_0x3bf1f6(_0xfe4221);});});};exports[_0xc0c5('0x5a')]=function(_0x1c9f15,_0x317a83,_0xacca99){_0x1c9f15[_0xc0c5('0x5a')]=!![];return _0xacca99();};exports['signToken']=function signToken(_0x248adf){return signJwt(_0x248adf);};exports[_0xc0c5('0x5b')]=function(_0x2ff373,_0x3bd593){if(!_0x2ff373[_0xc0c5('0x31')]){return _0x3bd593[_0xc0c5('0x38')](0x194)[_0xc0c5('0x3a')]({'message':_0xc0c5('0x5c')});}var _0x2bc67c={'payload':{'id':_0x2ff373['user']['id'],'role':_0x2ff373[_0xc0c5('0x31')][_0xc0c5('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2bc67c)['then'](function(_0x5a4b3c){_0x3bd593['cookie'](_0xc0c5('0x5d'),_0x5a4b3c);_0x3bd593[_0xc0c5('0x5e')](_0xc0c5('0x5f'));})['catch'](function(_0x54711c){return _0x3bd593[_0xc0c5('0x38')](0x1f4)['send'](_0x54711c);});};exports[_0xc0c5('0x60')]=function(_0x45c3a3){if(_['isNil'](_0x45c3a3[_0xc0c5('0x4b')])||_[_0xc0c5('0x61')](_0x45c3a3['apiKeyIat'])){return null;}else{return createJwt(_0x45c3a3);}};exports[_0xc0c5('0x62')]=function(_0x423143){_0x423143[_0xc0c5('0x4b')]=generateNonce();_0x423143[_0xc0c5('0x63')]=generateIssuedAt();return createJwt(_0x423143);};exports[_0xc0c5('0x64')]=function(_0x1fa45e,_0x365cb5){var _0x46207e=_0x1fa45e[_0xc0c5('0x65')][_0xc0c5('0x66')];if(_0x46207e){var _0x50a7cc={'nonce':_0x365cb5[_0xc0c5('0x4b')],'iat':_0x365cb5[_0xc0c5('0x63')],'audience':hardwareConf[_0xc0c5('0x46')](),'issuer':hardwareConf[_0xc0c5('0x46')]()};return verifyJwt(_0x46207e,_0x50a7cc)[_0xc0c5('0x37')](function(){return generateApiKey(_0x365cb5);});}else{throw{'message':_0xc0c5('0x67')};}};exports[_0xc0c5('0x68')]=function(_0x26a94f){var _0x994e54=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x994e54[_0xc0c5('0x69')](_0x26a94f))throw new db[(_0xc0c5('0x6a'))][(_0xc0c5('0x6b'))](_0xc0c5('0x6c'));return;};exports[_0xc0c5('0x6d')]=function(_0x5821cf,_0xd737d2,_0x74c685){var _0x3191bb=encryptor[_0xc0c5('0x6e')](_0xd737d2)[_0xc0c5('0x6f')](',');for(var _0xdbb779=0x0;_0xdbb779<_0x74c685;_0xdbb779++){if(!_0x3191bb[_0xdbb779])break;if(_0x5821cf['toLowerCase']()===_0x3191bb[_0xdbb779][_0xc0c5('0x70')]()){var _0x2ff7e8=util[_0xc0c5('0x71')](_0xc0c5('0x72'),_0x74c685);if(_0x74c685===0x1){_0x2ff7e8='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xc0c5('0x6a'))][(_0xc0c5('0x6b'))](_0x2ff7e8);}}return;};exports[_0xc0c5('0x73')]=function(_0x374929,_0x168c9c){var _0x3cdaa9=_0x168c9c?encryptor['decryptString'](_0x168c9c)[_0xc0c5('0x6f')](','):[];if(_0x3cdaa9[_0xc0c5('0x74')]===0x5){_0x3cdaa9[_0xc0c5('0x75')](-0x1,0x1);}_0x3cdaa9[_0xc0c5('0x76')](_0x374929);return encryptor[_0xc0c5('0x77')](_0x3cdaa9[_0xc0c5('0x78')](','));};function signJwt(_0x3f471b){var _0x3ca2b2=BPromise[_0xc0c5('0x79')](jwt['sign'],{'context':jwt});var _0x3dfa6f=_0x3f471b[_0xc0c5('0x7a')]||config[_0xc0c5('0xa')]['session'];return new BPromise(function(_0x557137,_0x180715){_0x3ca2b2(_0x3f471b[_0xc0c5('0x7b')],_0x3dfa6f,_0x3f471b[_0xc0c5('0x7c')])[_0xc0c5('0x37')](function(_0x291f31){_0x557137(_0x291f31);})['catch'](function(_0x47eb78){_0x180715(_0x47eb78);});});}function verifyJwt(_0x30bbe5,_0x51b70d,_0xbb8fe8){var _0x15b031=BPromise[_0xc0c5('0x79')](jwt[_0xc0c5('0x7d')],{'context':jwt});var _0x5018bf=_0xbb8fe8||config[_0xc0c5('0xa')][_0xc0c5('0xb')];return new BPromise(function(_0x2cb30e,_0x385d90){_0x15b031(_0x30bbe5,_0x5018bf,_0x51b70d)[_0xc0c5('0x37')](function(_0x161aa5){_0x2cb30e(_0x161aa5);})[_0xc0c5('0x3c')](function(_0x189bb2){_0x385d90(_0x189bb2);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xc0c5('0x7e')]('hex');}function generateIssuedAt(){return Math[_0xc0c5('0x7f')](Date[_0xc0c5('0x80')]()/0x3e8)[_0xc0c5('0x7e')]();}function createJwt(_0x4560da){var _0x351a75={'payload':{'iat':_0x4560da['apiKeyIat'],'nonce':_0x4560da[_0xc0c5('0x4b')]},'options':{'algorithm':'HS512','subject':_0x4560da['id'][_0xc0c5('0x7e')](),'issuer':hardwareConf[_0xc0c5('0x46')](),'audience':hardwareConf[_0xc0c5('0x46')]()}};return signJwt(_0x351a75)[_0xc0c5('0x37')](function(_0x20e318){return{'iat':_0x4560da['apiKeyIat'],'nonce':_0x4560da[_0xc0c5('0x4b')],'token':_0x20e318};});}
\ No newline at end of file
index d82a500..8643c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba41=['encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createWriteStream','createCipher','data','binary','write','final','end','close','unlink','decryptFile','createReadStream','encryptString','secret','update','utf8','base64','decryptString','createDecipher','crypto','lodash','../../config/environment','secrets','session','aes-256-ctr','aes192'];(function(_0x582d0b,_0x28f609){var _0x2e93e1=function(_0xb6a81c){while(--_0xb6a81c){_0x582d0b['push'](_0x582d0b['shift']());}};_0x2e93e1(++_0x28f609);}(_0xba41,0x81));var _0x1ba4=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xba41[_0x12fc8d];return _0x3f9d04;};'use strict';var crypto=require(_0x1ba4('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x1ba4('0x1'));var config=require(_0x1ba4('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x1ba4('0x3')][_0x1ba4('0x4')],'algorithm':_0x1ba4('0x5')};const fileOptions={'algorithm':_0x1ba4('0x6')};if(config[_0x1ba4('0x7')]&&config[_0x1ba4('0x7')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x1ba4('0x7')]['algorithm']);if(isSupported){fileOptions[_0x1ba4('0x8')]=config[_0x1ba4('0x7')][_0x1ba4('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x1ba4('0x9')](',\x20');logger['error'](config['encrypt'][_0x1ba4('0x8')],_0x1ba4('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x8cc346){return AES_SUPPORTED_RX[_0x1ba4('0xb')](_0x8cc346);}function getSupportedCiphers(){return crypto[_0x1ba4('0xc')]()[_0x1ba4('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x150b77){return getSupportedCiphers()[_0x1ba4('0xe')](_0x150b77)>-0x1;}function combineOptions(_0x21a74c){var _0xaf9242={};for(var _0x39a342 in fileOptions){if(fileOptions[_0x1ba4('0xf')](_0x39a342)){_0xaf9242[_0x39a342]=fileOptions[_0x39a342];}}if(_0x21a74c){for(var _0x5c72e9 in _0x21a74c){if(_0x21a74c[_0x1ba4('0xf')](_0x5c72e9)){_0xaf9242[_0x5c72e9]=_0x21a74c[_0x5c72e9];}}}return _0xaf9242;}exports['encryptFile']=function(_0x45b447,_0x32362a,_0x3411c8,_0x4cbe8a){return new BPromise(function(_0x4b4ec8,_0x45dddf){_0x4cbe8a=combineOptions(_0x4cbe8a);var _0x3935bb=new Buffer(_0x3411c8);var _0x336b9f=fs['createReadStream'](_0x45b447);var _0x2f3c5a=fs[_0x1ba4('0x10')](_0x32362a);var _0x35f9a=crypto[_0x1ba4('0x11')](_0x4cbe8a[_0x1ba4('0x8')],_0x3935bb);_0x336b9f['on'](_0x1ba4('0x12'),function(_0x3e1ef8){var _0x4fe964=new Buffer(_0x35f9a['update'](_0x3e1ef8),_0x1ba4('0x13'));_0x2f3c5a[_0x1ba4('0x14')](_0x4fe964);});_0x336b9f['on']('end',function(){try{var _0x4096d5=new Buffer(_0x35f9a[_0x1ba4('0x15')]('binary'),_0x1ba4('0x13'));_0x2f3c5a[_0x1ba4('0x14')](_0x4096d5);_0x2f3c5a[_0x1ba4('0x16')]();_0x2f3c5a['on'](_0x1ba4('0x17'),function(){return _0x4b4ec8(_0x32362a);});}catch(_0x5a6624){fs[_0x1ba4('0x18')](_0x32362a);return _0x45dddf(_0x5a6624);}});});};exports[_0x1ba4('0x19')]=function(_0x141a34,_0x32655f,_0x28b01b,_0x38df63){return new BPromise(function(_0x3df775,_0x5dc320){_0x38df63=combineOptions(_0x38df63);var _0x90a82c=new Buffer(_0x28b01b);var _0x3bc802=fs[_0x1ba4('0x1a')](_0x141a34);var _0x43f3a1=fs[_0x1ba4('0x10')](_0x32655f);var _0x3aeeb9=crypto['createDecipher'](_0x38df63[_0x1ba4('0x8')],_0x90a82c);_0x3bc802['on'](_0x1ba4('0x12'),function(_0x5abe20){var _0x560aaf=new Buffer(_0x3aeeb9['update'](_0x5abe20),'binary');_0x43f3a1[_0x1ba4('0x14')](_0x560aaf);});_0x3bc802['on']('end',function(){try{var _0x1cc468=new Buffer(_0x3aeeb9[_0x1ba4('0x15')]('binary'),'binary');_0x43f3a1[_0x1ba4('0x14')](_0x1cc468);_0x43f3a1[_0x1ba4('0x16')]();_0x43f3a1['on']('close',function(){return _0x3df775(_0x32655f);});}catch(_0x44b932){fs[_0x1ba4('0x18')](_0x32655f);return _0x5dc320(_0x44b932);}});});};exports[_0x1ba4('0x1b')]=function(_0x2c3578,_0x43f8f9,_0x302408){var _0x56ede4=_0x302408||stringOptions[_0x1ba4('0x8')];var _0x3c2353=_0x43f8f9||stringOptions[_0x1ba4('0x1c')];var _0x52ab30=crypto['createCipher'](_0x56ede4,_0x3c2353);var _0x186354=_0x52ab30[_0x1ba4('0x1d')](_0x2c3578,_0x1ba4('0x1e'),'base64');_0x186354+=_0x52ab30['final'](_0x1ba4('0x1f'));return _0x186354;};exports[_0x1ba4('0x20')]=function(_0x5daf5a,_0x27c9a3,_0x51bbce){var _0x2cc1e3=_0x51bbce||stringOptions[_0x1ba4('0x8')];var _0x642667=_0x27c9a3||stringOptions[_0x1ba4('0x1c')];var _0x2a8fbd=crypto[_0x1ba4('0x21')](_0x2cc1e3,_0x642667);var _0x2cbdc7=_0x2a8fbd[_0x1ba4('0x1d')](_0x5daf5a,_0x1ba4('0x1f'),'utf8');_0x2cbdc7+=_0x2a8fbd[_0x1ba4('0x15')](_0x1ba4('0x1e'));return _0x2cbdc7;};
\ No newline at end of file
+var _0x1b55=['algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','utf8','base64','decryptString','secret','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes192','encrypt'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x1b55,0x15e));var _0x51b5=function(_0x54ac2b,_0x51f6dd){_0x54ac2b=_0x54ac2b-0x0;var _0x5b1586=_0x1b55[_0x54ac2b];return _0x5b1586;};'use strict';var crypto=require(_0x51b5('0x0'));var fs=require('fs');var BPromise=require(_0x51b5('0x1'));var _=require(_0x51b5('0x2'));var config=require(_0x51b5('0x3'));var logger=require(_0x51b5('0x4'))(_0x51b5('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x51b5('0x6')][_0x51b5('0x7')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x51b5('0x8')};if(config[_0x51b5('0x9')]&&config[_0x51b5('0x9')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x51b5('0x9')][_0x51b5('0xa')]);if(isSupported){fileOptions[_0x51b5('0xa')]=config[_0x51b5('0x9')][_0x51b5('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x51b5('0xb')](',\x20');logger[_0x51b5('0xc')](config['encrypt'][_0x51b5('0xa')],_0x51b5('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x208534){return AES_SUPPORTED_RX[_0x51b5('0xe')](_0x208534);}function getSupportedCiphers(){return crypto['getCiphers']()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x29896f){return getSupportedCiphers()[_0x51b5('0xf')](_0x29896f)>-0x1;}function combineOptions(_0x5c874e){var _0x58e16a={};for(var _0x406df8 in fileOptions){if(fileOptions[_0x51b5('0x10')](_0x406df8)){_0x58e16a[_0x406df8]=fileOptions[_0x406df8];}}if(_0x5c874e){for(var _0x5e40d5 in _0x5c874e){if(_0x5c874e['hasOwnProperty'](_0x5e40d5)){_0x58e16a[_0x5e40d5]=_0x5c874e[_0x5e40d5];}}}return _0x58e16a;}exports[_0x51b5('0x11')]=function(_0xd2aefe,_0x29ac6c,_0x39f4de,_0x4d0510){return new BPromise(function(_0x4fead8,_0x5aef98){_0x4d0510=combineOptions(_0x4d0510);var _0x4f6740=new Buffer(_0x39f4de);var _0x3ff619=fs[_0x51b5('0x12')](_0xd2aefe);var _0x185569=fs['createWriteStream'](_0x29ac6c);var _0x840c02=crypto[_0x51b5('0x13')](_0x4d0510[_0x51b5('0xa')],_0x4f6740);_0x3ff619['on'](_0x51b5('0x14'),function(_0x4006ff){var _0x4e7ae1=new Buffer(_0x840c02[_0x51b5('0x15')](_0x4006ff),_0x51b5('0x16'));_0x185569[_0x51b5('0x17')](_0x4e7ae1);});_0x3ff619['on'](_0x51b5('0x18'),function(){try{var _0x372ee1=new Buffer(_0x840c02[_0x51b5('0x19')]('binary'),_0x51b5('0x16'));_0x185569[_0x51b5('0x17')](_0x372ee1);_0x185569[_0x51b5('0x18')]();_0x185569['on'](_0x51b5('0x1a'),function(){return _0x4fead8(_0x29ac6c);});}catch(_0x22a525){fs[_0x51b5('0x1b')](_0x29ac6c);return _0x5aef98(_0x22a525);}});});};exports[_0x51b5('0x1c')]=function(_0x2d47cb,_0x4bda0d,_0xfd252,_0x259ce0){return new BPromise(function(_0x411dbf,_0x32c52d){_0x259ce0=combineOptions(_0x259ce0);var _0x544e9f=new Buffer(_0xfd252);var _0x40730a=fs[_0x51b5('0x12')](_0x2d47cb);var _0x2e1725=fs[_0x51b5('0x1d')](_0x4bda0d);var _0x41a2d6=crypto[_0x51b5('0x1e')](_0x259ce0[_0x51b5('0xa')],_0x544e9f);_0x40730a['on']('data',function(_0x8f556b){var _0x2c71fd=new Buffer(_0x41a2d6['update'](_0x8f556b),_0x51b5('0x16'));_0x2e1725['write'](_0x2c71fd);});_0x40730a['on'](_0x51b5('0x18'),function(){try{var _0x4d037e=new Buffer(_0x41a2d6[_0x51b5('0x19')]('binary'),_0x51b5('0x16'));_0x2e1725[_0x51b5('0x17')](_0x4d037e);_0x2e1725[_0x51b5('0x18')]();_0x2e1725['on'](_0x51b5('0x1a'),function(){return _0x411dbf(_0x4bda0d);});}catch(_0x2530b1){fs[_0x51b5('0x1b')](_0x4bda0d);return _0x32c52d(_0x2530b1);}});});};exports[_0x51b5('0x1f')]=function(_0x29e753,_0x3f4fe6,_0x4549f1){var _0x212709=_0x4549f1||stringOptions[_0x51b5('0xa')];var _0x297374=_0x3f4fe6||stringOptions['secret'];var _0x14e283=crypto[_0x51b5('0x13')](_0x212709,_0x297374);var _0x38890c=_0x14e283[_0x51b5('0x15')](_0x29e753,_0x51b5('0x20'),'base64');_0x38890c+=_0x14e283[_0x51b5('0x19')](_0x51b5('0x21'));return _0x38890c;};exports[_0x51b5('0x22')]=function(_0x2d2c11,_0x521bb3,_0x2afb23){var _0x1ad4b4=_0x2afb23||stringOptions[_0x51b5('0xa')];var _0x205020=_0x521bb3||stringOptions[_0x51b5('0x23')];var _0x43f856=crypto[_0x51b5('0x1e')](_0x1ad4b4,_0x205020);var _0x4afd90=_0x43f856[_0x51b5('0x15')](_0x2d2c11,_0x51b5('0x21'),_0x51b5('0x20'));_0x4afd90+=_0x43f856[_0x51b5('0x19')]('utf8');return _0x4afd90;};
\ No newline at end of file
index fbb6ede..44dac79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d1=['csv','%s.%s','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','util','path','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','push','dirname','.csv','split','join','each','%s%d.%s'];(function(_0x51e7b5,_0x398c97){var _0x3a9695=function(_0x174312){while(--_0x174312){_0x51e7b5['push'](_0x51e7b5['shift']());}};_0x3a9695(++_0x398c97);}(_0x53d1,0x67));var _0x153d=function(_0x595914,_0x511dee){_0x595914=_0x595914-0x0;var _0x1803f0=_0x53d1[_0x595914];return _0x1803f0;};'use strict';var util=require(_0x153d('0x0'));var path=require(_0x153d('0x1'));var _=require('lodash');var csv=require(_0x153d('0x2'));var fs=require('fs');var BPromise=require(_0x153d('0x3'));var zipdir=require(_0x153d('0x4'));var rimraf=require(_0x153d('0x5'));var db=require(_0x153d('0x6'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x153d('0x7'))(_0x153d('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x153d('0x9')][0x3];var PATH=process[_0x153d('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x45e015,_0x3fdc28){var _0x22c4aa={'status':_0x45e015};var _0x1a8031={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3fdc28){_0x22c4aa[_0x153d('0xa')]=_0x3fdc28;}return db[_0x153d('0xb')]['update'](_0x22c4aa,_0x1a8031);}function main(){var _0x48c66b=0x1388;var _0x4c5deb;logger[_0x153d('0xc')](util[_0x153d('0xd')](_0x153d('0xe'),EXTRACTED_REPORT_ID,_0x153d('0xf')));return db[_0x153d('0x10')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x153d('0x11')]})[_0x153d('0x12')](function(_0x3a1024){if(_0x3a1024){_0x4c5deb=_0x3a1024;_0x48c66b=_0x4c5deb[_0x153d('0x11')]||0x1388;}})[_0x153d('0x12')](function(){return dbH[_0x153d('0x13')][_0x153d('0x14')](util[_0x153d('0xd')](_0x153d('0x15'),QUERY),{'type':dbH[_0x153d('0x13')]['QueryTypes'][_0x153d('0x16')]});})['then'](function(_0x440365){if(!_0x440365[0x0]['num']){return analyticExtractedReport(_0x153d('0x17'));}var _0xc0732=[];var _0x50635f=0x0;if(_0x4c5deb['split']){if(_0x440365&&_0x440365[_0x153d('0x18')]){var _0x4bc7bd=_[_0x153d('0x19')](_0x440365[0x0][_0x153d('0x1a')]/_0x48c66b);var _0x50fdc3=Number[_0x153d('0x1b')](_0x440365[0x0][_0x153d('0x1a')]/_0x48c66b)?_0x440365[0x0][_0x153d('0x1a')]%_0x48c66b:0x0;_0x4bc7bd[_0x153d('0x1c')](function(_0x24f74b){if(_0x24f74b>0x0){_0x50635f+=_0x48c66b;}_0xc0732['push'](dbH['sequelize'][_0x153d('0x14')](util[_0x153d('0xd')](_0x153d('0x1d'),QUERY,_0x48c66b,_0x50635f),{'type':dbH[_0x153d('0x13')][_0x153d('0x1e')]['SELECT']}));});if(_0x50fdc3>0x0){_0x50635f+=_0x48c66b;_0xc0732[_0x153d('0x1f')](dbH['sequelize'][_0x153d('0x14')](util[_0x153d('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x50fdc3,_0x50635f),{'type':dbH[_0x153d('0x13')]['QueryTypes'][_0x153d('0x16')]}));}}}else{_0xc0732[_0x153d('0x1f')](dbH[_0x153d('0x13')][_0x153d('0x14')](QUERY,{'type':dbH[_0x153d('0x13')][_0x153d('0x1e')][_0x153d('0x16')]}));}var _0x1854cf=path[_0x153d('0x20')](PATH);var _0x5c1654=path['basename'](PATH,_0x153d('0x21'));var _0x215eb1=_0x4c5deb[_0x153d('0x22')]&&_0xc0732[_0x153d('0x18')]>0x1;var _0x3fc38a=[];if(!fs['existsSync'](path[_0x153d('0x23')](_0x1854cf,_0x5c1654))&&_0x215eb1){fs['mkdirSync'](path[_0x153d('0x23')](_0x1854cf,_0x5c1654));}return BPromise[_0x153d('0x24')](_0xc0732,function(_0x128e10){_0x3fc38a['push'](_0x128e10);})[_0x153d('0x12')](function(){for(var _0x2a5e8f=0x0;_0x2a5e8f<_0x3fc38a[_0x153d('0x18')];_0x2a5e8f+=0x1){var _0x29f69f;var _0x1f68e5=_0x3fc38a[_0x2a5e8f];if(_0x215eb1){_0x29f69f=path[_0x153d('0x23')](_0x1854cf,_0x5c1654,util[_0x153d('0xd')](_0x153d('0x25'),_0x5c1654,_0x2a5e8f,_0x153d('0x26')));}else{_0x29f69f=path[_0x153d('0x23')](_0x1854cf,util['format'](_0x153d('0x27'),_0x5c1654,'csv'));}fs['writeFileSync'](_0x29f69f,csv(_0x1f68e5));}})[_0x153d('0x12')](function(){if(_0x215eb1){return new Promise(function(_0x2303ac){zipdir(path['join'](_0x1854cf,_0x5c1654),{'saveTo':path[_0x153d('0x23')](_0x1854cf,util[_0x153d('0xd')]('%s.%s',_0x5c1654,'zip'))},function(_0xd163bc,_0x2095c1){rimraf(path[_0x153d('0x23')](_0x1854cf,_0x5c1654),function(){});_0x2303ac('zip\x20finished');});});}})[_0x153d('0x12')](function(){logger[_0x153d('0xc')](util[_0x153d('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x153d('0xf')));return analyticExtractedReport(_0x153d('0x28'),_0x215eb1?util[_0x153d('0xd')]('%s.%s',_0x5c1654,_0x215eb1?_0x153d('0x29'):_0x153d('0x26')):null);});})[_0x153d('0x2a')](function(_0x404468){logger[_0x153d('0xc')](util[_0x153d('0xd')](_0x153d('0x2b'),EXTRACTED_REPORT_ID,_0x153d('0xf')),util[_0x153d('0x2c')](_0x404468,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x153d('0x2d'));})[_0x153d('0x2e')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x448f=['Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','length','range','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','existsSync','join','mkdirSync','%s%d.%s','%s.%s','csv','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','inspect','exit','util','path','rimraf','../../mysqldb','dbH','analytics','argv','savename','update','format'];(function(_0x1f1cc7,_0x26f365){var _0x5f49e9=function(_0x45c75a){while(--_0x45c75a){_0x1f1cc7['push'](_0x1f1cc7['shift']());}};_0x5f49e9(++_0x26f365);}(_0x448f,0x12a));var _0xf448=function(_0x5ea05f,_0x227fe7){_0x5ea05f=_0x5ea05f-0x0;var _0x4e23c8=_0x448f[_0x5ea05f];return _0x4e23c8;};'use strict';var util=require(_0xf448('0x0'));var path=require(_0xf448('0x1'));var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0xf448('0x2'));var db=require(_0xf448('0x3'))['db'];var dbH=require(_0xf448('0x3'))[_0xf448('0x4')];var logger=require('../../config/logger')(_0xf448('0x5'));var EXTRACTED_REPORT_ID=Number(process[_0xf448('0x6')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xf448('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4a3f58,_0x440117){var _0x1a4065={'status':_0x4a3f58};var _0x5825ce={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x440117){_0x1a4065[_0xf448('0x7')]=_0x440117;}return db['AnalyticExtractedReport'][_0xf448('0x8')](_0x1a4065,_0x5825ce);}function main(){var _0x353ec2=0x1388;var _0x53307f;logger['info'](util[_0xf448('0x9')](_0xf448('0xa'),EXTRACTED_REPORT_ID,_0xf448('0xb')));return db[_0xf448('0xc')][_0xf448('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf448('0xe'),_0xf448('0xf')]})[_0xf448('0x10')](function(_0x5c250a){if(_0x5c250a){_0x53307f=_0x5c250a;_0x353ec2=_0x53307f[_0xf448('0xf')]||0x1388;}})[_0xf448('0x10')](function(){return dbH[_0xf448('0x11')][_0xf448('0x12')](util[_0xf448('0x9')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xf448('0x11')][_0xf448('0x13')][_0xf448('0x14')]});})['then'](function(_0x50197c){if(!_0x50197c[0x0]['num']){return analyticExtractedReport('Empty');}var _0x1d30cd=[];var _0x57069b=0x0;if(_0x53307f[_0xf448('0xe')]){if(_0x50197c&&_0x50197c[_0xf448('0x15')]){var _0x6be8c3=_[_0xf448('0x16')](_0x50197c[0x0][_0xf448('0x17')]/_0x353ec2);var _0x158d36=Number[_0xf448('0x18')](_0x50197c[0x0][_0xf448('0x17')]/_0x353ec2)?_0x50197c[0x0][_0xf448('0x17')]%_0x353ec2:0x0;_0x6be8c3[_0xf448('0x19')](function(_0x484fc9){if(_0x484fc9>0x0){_0x57069b+=_0x353ec2;}_0x1d30cd[_0xf448('0x1a')](dbH['sequelize']['query'](util[_0xf448('0x9')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x353ec2,_0x57069b),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));});if(_0x158d36>0x0){_0x57069b+=_0x353ec2;_0x1d30cd[_0xf448('0x1a')](dbH[_0xf448('0x11')][_0xf448('0x12')](util[_0xf448('0x9')](_0xf448('0x1b'),QUERY,_0x158d36,_0x57069b),{'type':dbH[_0xf448('0x11')]['QueryTypes'][_0xf448('0x14')]}));}}}else{_0x1d30cd[_0xf448('0x1a')](dbH[_0xf448('0x11')][_0xf448('0x12')](QUERY,{'type':dbH[_0xf448('0x11')][_0xf448('0x13')]['SELECT']}));}var _0xb63b64=path[_0xf448('0x1c')](PATH);var _0xadc637=path[_0xf448('0x1d')](PATH,_0xf448('0x1e'));var _0x5a4b7b=_0x53307f['split']&&_0x1d30cd[_0xf448('0x15')]>0x1;var _0x250b80=[];if(!fs[_0xf448('0x1f')](path[_0xf448('0x20')](_0xb63b64,_0xadc637))&&_0x5a4b7b){fs[_0xf448('0x21')](path[_0xf448('0x20')](_0xb63b64,_0xadc637));}return BPromise['each'](_0x1d30cd,function(_0x557813){_0x250b80[_0xf448('0x1a')](_0x557813);})[_0xf448('0x10')](function(){for(var _0x50ded5=0x0;_0x50ded5<_0x250b80[_0xf448('0x15')];_0x50ded5+=0x1){var _0x49c6d7;var _0x2f23e6=_0x250b80[_0x50ded5];if(_0x5a4b7b){_0x49c6d7=path[_0xf448('0x20')](_0xb63b64,_0xadc637,util['format'](_0xf448('0x22'),_0xadc637,_0x50ded5,'csv'));}else{_0x49c6d7=path['join'](_0xb63b64,util[_0xf448('0x9')](_0xf448('0x23'),_0xadc637,_0xf448('0x24')));}fs['writeFileSync'](_0x49c6d7,csv(_0x2f23e6));}})[_0xf448('0x10')](function(){if(_0x5a4b7b){return new Promise(function(_0x178057){zipdir(path[_0xf448('0x20')](_0xb63b64,_0xadc637),{'saveTo':path[_0xf448('0x20')](_0xb63b64,util[_0xf448('0x9')]('%s.%s',_0xadc637,_0xf448('0x25')))},function(_0x39958d,_0x1ceff9){rimraf(path[_0xf448('0x20')](_0xb63b64,_0xadc637),function(){});_0x178057(_0xf448('0x26'));});});}})['then'](function(){logger[_0xf448('0x27')](util[_0xf448('0x9')](_0xf448('0x28'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xf448('0x29'),_0x5a4b7b?util[_0xf448('0x9')](_0xf448('0x23'),_0xadc637,_0x5a4b7b?_0xf448('0x25'):_0xf448('0x24')):null);});})['catch'](function(_0x1ce3bc){logger[_0xf448('0x27')](util[_0xf448('0x9')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xf448('0xb')),util[_0xf448('0x2a')](_0x1ce3bc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xf448('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
index 189d831..ddea987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x001c=['before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Setting','splitSizePdf','then','split','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','createPdfFromHTML','createPdfKitDocument','path','lodash','util','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','dbH','../../config/logger','analytics','argv','savename','update','map','toString','value','fill','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','length','header','pageBreak'];(function(_0x2ca249,_0x5cb677){var _0x526cda=function(_0x10d8cf){while(--_0x10d8cf){_0x2ca249['push'](_0x2ca249['shift']());}};_0x526cda(++_0x5cb677);}(_0x001c,0x144));var _0xc001=function(_0xaf872d,_0x1d55fd){_0xaf872d=_0xaf872d-0x0;var _0x300584=_0x001c[_0xaf872d];return _0x300584;};'use strict';var _=require(_0xc001('0x0'));var fs=require('fs');var util=require(_0xc001('0x1'));var path=require('path');var moment=require(_0xc001('0x2'));var htmlToPdfmake=require(_0xc001('0x3'));var PdfPrinter=require(_0xc001('0x4'));var zipdir=require(_0xc001('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0xc001('0x6'))[_0xc001('0x7')];var window=new JSDOM('')[_0xc001('0x8')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xc001('0x9')];var logger=require(_0xc001('0xa'))(_0xc001('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xc001('0xc')][0x2]);var QUERY=process[_0xc001('0xc')][0x3];var PATH=process[_0xc001('0xc')][0x4];var NAME=process[_0xc001('0xc')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2f7a0c,_0x1c5ef3){var _0x3866c1={'status':_0x2f7a0c};var _0xe77b98={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1c5ef3){_0x3866c1[_0xc001('0xd')]=_0x1c5ef3;}return db['AnalyticExtractedReport'][_0xc001('0xe')](_0x3866c1,_0xe77b98);}function getHeaders(_0x1736fa){return _['map'](_0x1736fa,function(_0x40fbe5){return{'text':_0x40fbe5,'style':'tableHeader'};});}function getRows(_0x16d00e,_0x1103f9){return _['map'](_0x1103f9,function(_0x26aef6){return _(_0x26aef6)['pick'](_0x16d00e)[_0xc001('0xf')](function(_0x1c824c){return _0x1c824c?_[_0xc001('0x10')](_0x1c824c):'';})[_0xc001('0x11')]();});}function createTable(_0x2f6887,_0x2a18db){var _0x5c1b6d={'widths':_[_0xc001('0x12')](Array(_0x2f6887['length']),0x91),'heights':function(_0x2ddd72){return _0x2ddd72===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4b4c43=getHeaders(_0x2f6887);_0x5c1b6d[_0xc001('0x13')][_0xc001('0x14')](_0x4b4c43);var _0x5b1a54=getRows(_0x2f6887,_0x2a18db);_0x5c1b6d[_0xc001('0x13')]=_0x5c1b6d[_0xc001('0x13')][_0xc001('0x15')](_0x5b1a54);return _0x5c1b6d;}function createTables(_0x4eac02){var _0xbc92ee=[];var _0x4e7491=_[_0xc001('0x16')](Object[_0xc001('0x17')](_0x4eac02[0x0]),0x5);_0x4e7491[_0xc001('0x18')](function(_0x3322aa){_0xbc92ee[_0xc001('0x14')](createTable(_0x3322aa,_0x4eac02));});return _0xbc92ee;}function getPDFDocDefinition(_0x38c0b9){var _0x318e7f=util[_0xc001('0x19')](_0xc001('0x1a'),NAME,EXTRACTED_REPORT[_0xc001('0x1b')],moment(EXTRACTED_REPORT['startDate'])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xc001('0x1c')])[_0xc001('0x19')](FORMAT));var _0x51ad0b=[];for(var _0xb4dd92=0x0;_0xb4dd92<_0x38c0b9[_0xc001('0x1d')];_0xb4dd92++){var _0x5a0f5d=[];if(_0xb4dd92===0x0){_0x5a0f5d[_0xc001('0x14')]({'text':_0x318e7f,'style':_0xc001('0x1e')});}var _0x3bbfc2={'table':_0x38c0b9[_0xb4dd92]};if(_0xb4dd92>0x0){_0x3bbfc2[_0xc001('0x1f')]=_0xc001('0x20');_0x3bbfc2[_0xc001('0x21')]=[0x0,0x46,0x0,0x0];}_0x5a0f5d[_0xc001('0x14')](_0x3bbfc2);_0x51ad0b['push'](_0x5a0f5d);}return{'pageSize':'A4','pageOrientation':_0xc001('0x22'),'content':_0x51ad0b,'footer':function(_0x7c444d,_0xb3d7fe){return{'text':_0x7c444d[_0xc001('0x10')]()+_0xc001('0x23')+_0xb3d7fe,'style':_0xc001('0x24')};},'defaultStyle':{'font':_0xc001('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc001('0x26')},'footer':{'alignment':_0xc001('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4326be){var _0x199de3=0x1388;var _0x4b9509;if(!_0x4326be[0x0][_0xc001('0x28')]){return analyticExtractedReport('Empty');}return db[_0xc001('0x29')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xc001('0x2a')]})['then'](function(_0x2e3cfa){if(_0x2e3cfa){_0x4b9509=_0x2e3cfa;_0x199de3=_0x4b9509['splitSizePdf']||0x3e8;}})[_0xc001('0x2b')](function(){var _0x137370=[];var _0x14c1a3=0x0;if(_0x4b9509[_0xc001('0x2c')]){if(_0x4326be&&_0x4326be['length']){var _0x217a18=_[_0xc001('0x2d')](_0x4326be[0x0][_0xc001('0x28')]/_0x199de3);var _0x446853=Number[_0xc001('0x2e')](_0x4326be[0x0][_0xc001('0x28')]/_0x199de3)?_0x4326be[0x0][_0xc001('0x28')]%_0x199de3:0x0;_0x217a18['forEach'](function(_0x95f866){if(_0x95f866>0x0){_0x14c1a3+=_0x199de3;}_0x137370[_0xc001('0x14')](dbH['sequelize'][_0xc001('0x2f')](util[_0xc001('0x19')](_0xc001('0x30'),QUERY,_0x199de3,_0x14c1a3),{'type':dbH[_0xc001('0x31')]['QueryTypes'][_0xc001('0x32')]}));});if(_0x446853>0x0){_0x14c1a3+=_0x199de3;_0x137370[_0xc001('0x14')](dbH[_0xc001('0x31')]['query'](util[_0xc001('0x19')](_0xc001('0x30'),QUERY,_0x446853,_0x14c1a3),{'type':dbH[_0xc001('0x31')][_0xc001('0x33')][_0xc001('0x32')]}));}}}else{_0x137370[_0xc001('0x14')](dbH[_0xc001('0x31')]['query'](QUERY,{'type':dbH[_0xc001('0x31')]['QueryTypes']['SELECT']}));}var _0x28cc49=path[_0xc001('0x34')](PATH);var _0x3ffeda=path[_0xc001('0x35')](PATH,_0xc001('0x36'));var _0x48bb39=_0x4b9509['split']&&_0x137370['length']>0x1;var _0x1612c1=[];if(!fs[_0xc001('0x37')](path[_0xc001('0x38')](_0x28cc49,_0x3ffeda))&&_0x48bb39){fs[_0xc001('0x39')](path[_0xc001('0x38')](_0x28cc49,_0x3ffeda));}return BPromise[_0xc001('0x3a')](_0x137370,function(_0x1c6704){_0x1612c1[_0xc001('0x14')](_0x1c6704);})[_0xc001('0x2b')](function(){var _0x30fe5f=[];for(var _0x3a80c9=0x0;_0x3a80c9<_0x1612c1[_0xc001('0x1d')];_0x3a80c9+=0x1){var _0x16ad10=_0x1612c1[_0x3a80c9];var _0x331e9e=createTables(_[_0xc001('0x3b')](_0x16ad10));var _0x21d824;var _0x111406=getPDFDocDefinition(_0x331e9e);var _0x571510=getPDFPrinter();var _0x3c2f0d=_0x571510['createPdfKitDocument'](_0x111406);if(_0x48bb39){_0x21d824=path[_0xc001('0x38')](_0x28cc49,_0x3ffeda,util['format'](_0xc001('0x3c'),_0x3ffeda,_0x3a80c9,_0xc001('0x3d')));}else{_0x21d824=path[_0xc001('0x38')](_0x28cc49,util[_0xc001('0x19')]('%s.%s',_0x3ffeda,_0xc001('0x3d')));}_0x30fe5f[_0xc001('0x14')](writePDFDocument(_0x3c2f0d,_0x21d824));}return Promise[_0xc001('0x3e')](_0x30fe5f);})[_0xc001('0x2b')](function(){if(_0x48bb39){return new Promise(function(_0xb1aa32){zipdir(path[_0xc001('0x38')](_0x28cc49,_0x3ffeda),{'saveTo':path['join'](_0x28cc49,util[_0xc001('0x19')](_0xc001('0x3f'),_0x3ffeda,_0xc001('0x40')))},function(){rimraf(path['join'](_0x28cc49,_0x3ffeda),function(){});_0xb1aa32(_0xc001('0x41'));});});}})[_0xc001('0x2b')](function(){if(!_0x48bb39)return;rimraf(path[_0xc001('0x38')](_0x28cc49,_0x3ffeda),function(){});})[_0xc001('0x2b')](function(){logger[_0xc001('0x42')](util[_0xc001('0x19')](_0xc001('0x43'),EXTRACTED_REPORT_ID,_0xc001('0x44')));return analyticExtractedReport(_0xc001('0x45'),_0x48bb39?util[_0xc001('0x19')](_0xc001('0x3f'),_0x3ffeda,_0x48bb39?_0xc001('0x40'):_0xc001('0x3d')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc001('0x44')));return db['AnalyticExtractedReport'][_0xc001('0x46')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc001('0x2b')](function(_0x1aa02b){EXTRACTED_REPORT=_0x1aa02b;return dbH[_0xc001('0x31')][_0xc001('0x2f')](util['format'](_0xc001('0x47'),QUERY),{'type':dbH[_0xc001('0x31')][_0xc001('0x33')][_0xc001('0x32')]});})[_0xc001('0x2b')](extractReport)[_0xc001('0x48')](function(_0x165202){logger[_0xc001('0x42')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc001('0x44')),util['inspect'](_0x165202,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xc001('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3876fb=new PdfPrinter({'Arial':{'normal':__dirname+_0xc001('0x4a'),'bold':__dirname+_0xc001('0x4b'),'italics':__dirname+_0xc001('0x4c'),'bolditalics':__dirname+_0xc001('0x4d')}});return _0x3876fb;}function getPDFDocDefinitionFromHTML(_0x8c094c,_0x107887){var _0x92d51d=util[_0xc001('0x19')](_0xc001('0x4e'),_0x107887[_0xc001('0x4f')],_0x107887['interactionId']);var _0xc196da=moment()[_0xc001('0x19')]('YYYY-MM-DD')[_0xc001('0x10')]();var _0xae95a0=htmlToPdfmake(_0x8c094c,{'window':window,'tableAutoSize':!![]});return{'content':[_0xae95a0],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc001('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xc001('0x51'),'style':_0xc001('0x1e')}];},'footer':function(_0x38da8a,_0x27687f){return[{'text':util[_0xc001('0x19')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x92d51d,_0x38da8a,_0x27687f,_0xc196da),'style':_0xc001('0x24')}];}};}function writePDFDocument(_0x2ca48e,_0x40af40){return new Promise(function(_0x45dd03,_0x396e76){var _0xf69770=_0x2ca48e[_0xc001('0x52')](fs[_0xc001('0x53')](_0x40af40));_0xf69770['on'](_0xc001('0x54'),function(){_0x45dd03('finish');});_0xf69770['on'](_0xc001('0x55'),function(_0x17e8f7){_0x396e76(_0x17e8f7);});_0x2ca48e['end']();});}exports[_0xc001('0x56')]=function(_0x13a474,_0x452a52){var _0x5dedbe=getPDFPrinter();var _0xe2d7f4=getPDFDocDefinitionFromHTML(_0x13a474,_0x452a52);var _0x2f664a=_0x5dedbe[_0xc001('0x57')](_0xe2d7f4);return writePDFDocument(_0x2f664a,_0x452a52[_0xc001('0x58')])[_0xc001('0x48')](function(_0x502bcc){throw _0x502bcc;});};
\ No newline at end of file
+var _0xda87=['length','auto','body','push','concat','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','header','pageBreak','before','margin','\x20/\x20','Arial','black','right','num','Empty','Setting','split','splitSizePdf','then','range','isInteger','sequelize','QueryTypes','SELECT','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.pdf','existsSync','each','flatten','join','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfKitDocument','lodash','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','map','toString','fill'];(function(_0x241de4,_0x5ec31e){var _0x56d594=function(_0x22c3e3){while(--_0x22c3e3){_0x241de4['push'](_0x241de4['shift']());}};_0x56d594(++_0x5ec31e);}(_0xda87,0xfc));var _0x7da8=function(_0x4afc33,_0x5088fd){_0x4afc33=_0x4afc33-0x0;var _0x448b1c=_0xda87[_0x4afc33];return _0x448b1c;};'use strict';var _=require(_0x7da8('0x0'));var fs=require('fs');var util=require(_0x7da8('0x1'));var path=require(_0x7da8('0x2'));var moment=require(_0x7da8('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x7da8('0x4'));var zipdir=require(_0x7da8('0x5'));var rimraf=require(_0x7da8('0x6'));var JSDOM=require(_0x7da8('0x7'))[_0x7da8('0x8')];var window=new JSDOM('')[_0x7da8('0x9')];var BPromise=require(_0x7da8('0xa'));var db=require('../../mysqldb')['db'];var dbH=require(_0x7da8('0xb'))[_0x7da8('0xc')];var logger=require(_0x7da8('0xd'))(_0x7da8('0xe'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x7da8('0xf')][0x5];var FORMAT=_0x7da8('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x34de1f,_0x38c12c){var _0x3d3434={'status':_0x34de1f};var _0x279e11={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x38c12c){_0x3d3434['savename']=_0x38c12c;}return db[_0x7da8('0x11')]['update'](_0x3d3434,_0x279e11);}function getHeaders(_0x59aa79){return _['map'](_0x59aa79,function(_0x5ad111){return{'text':_0x5ad111,'style':'tableHeader'};});}function getRows(_0x15e91b,_0x242f68){return _[_0x7da8('0x12')](_0x242f68,function(_0x541577){return _(_0x541577)['pick'](_0x15e91b)[_0x7da8('0x12')](function(_0xf1244a){return _0xf1244a?_[_0x7da8('0x13')](_0xf1244a):'';})['value']();});}function createTable(_0x63b30,_0xa1f68d){var _0x5d5607={'widths':_[_0x7da8('0x14')](Array(_0x63b30[_0x7da8('0x15')]),0x91),'heights':function(_0x2d7d19){return _0x2d7d19===0x0?_0x7da8('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x4c424b=getHeaders(_0x63b30);_0x5d5607[_0x7da8('0x17')][_0x7da8('0x18')](_0x4c424b);var _0x11d113=getRows(_0x63b30,_0xa1f68d);_0x5d5607[_0x7da8('0x17')]=_0x5d5607[_0x7da8('0x17')][_0x7da8('0x19')](_0x11d113);return _0x5d5607;}function createTables(_0x27b0db){var _0x37602d=[];var _0x5a4c9b=_['chunk'](Object[_0x7da8('0x1a')](_0x27b0db[0x0]),0x5);_0x5a4c9b[_0x7da8('0x1b')](function(_0x16d998){_0x37602d[_0x7da8('0x18')](createTable(_0x16d998,_0x27b0db));});return _0x37602d;}function getPDFDocDefinition(_0x361c86){var _0x34414c=util[_0x7da8('0x1c')](_0x7da8('0x1d'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x7da8('0x1e')])['format'](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x12b9e7=[];for(var _0x3af75b=0x0;_0x3af75b<_0x361c86['length'];_0x3af75b++){var _0x57ce9a=[];if(_0x3af75b===0x0){_0x57ce9a[_0x7da8('0x18')]({'text':_0x34414c,'style':_0x7da8('0x1f')});}var _0x39361f={'table':_0x361c86[_0x3af75b]};if(_0x3af75b>0x0){_0x39361f[_0x7da8('0x20')]=_0x7da8('0x21');_0x39361f[_0x7da8('0x22')]=[0x0,0x46,0x0,0x0];}_0x57ce9a['push'](_0x39361f);_0x12b9e7['push'](_0x57ce9a);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x12b9e7,'footer':function(_0x221acf,_0x4a03b2){return{'text':_0x221acf[_0x7da8('0x13')]()+_0x7da8('0x23')+_0x4a03b2,'style':'footer'};},'defaultStyle':{'font':_0x7da8('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x7da8('0x25')},'footer':{'alignment':_0x7da8('0x26'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x39bc2a){var _0x2722a2=0x1388;var _0x53f8b3;if(!_0x39bc2a[0x0][_0x7da8('0x27')]){return analyticExtractedReport(_0x7da8('0x28'));}return db[_0x7da8('0x29')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7da8('0x2a'),_0x7da8('0x2b')]})[_0x7da8('0x2c')](function(_0x3cecb2){if(_0x3cecb2){_0x53f8b3=_0x3cecb2;_0x2722a2=_0x53f8b3[_0x7da8('0x2b')]||0x3e8;}})[_0x7da8('0x2c')](function(){var _0x2375b7=[];var _0x5589d9=0x0;if(_0x53f8b3[_0x7da8('0x2a')]){if(_0x39bc2a&&_0x39bc2a['length']){var _0x39a6d6=_[_0x7da8('0x2d')](_0x39bc2a[0x0][_0x7da8('0x27')]/_0x2722a2);var _0x174020=Number[_0x7da8('0x2e')](_0x39bc2a[0x0]['num']/_0x2722a2)?_0x39bc2a[0x0][_0x7da8('0x27')]%_0x2722a2:0x0;_0x39a6d6['forEach'](function(_0x526f4e){if(_0x526f4e>0x0){_0x5589d9+=_0x2722a2;}_0x2375b7[_0x7da8('0x18')](dbH[_0x7da8('0x2f')]['query'](util[_0x7da8('0x1c')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2722a2,_0x5589d9),{'type':dbH[_0x7da8('0x2f')][_0x7da8('0x30')][_0x7da8('0x31')]}));});if(_0x174020>0x0){_0x5589d9+=_0x2722a2;_0x2375b7['push'](dbH['sequelize'][_0x7da8('0x32')](util['format'](_0x7da8('0x33'),QUERY,_0x174020,_0x5589d9),{'type':dbH[_0x7da8('0x2f')]['QueryTypes'][_0x7da8('0x31')]}));}}}else{_0x2375b7[_0x7da8('0x18')](dbH[_0x7da8('0x2f')]['query'](QUERY,{'type':dbH['sequelize'][_0x7da8('0x30')]['SELECT']}));}var _0x261237=path[_0x7da8('0x34')](PATH);var _0x1bad2a=path[_0x7da8('0x35')](PATH,_0x7da8('0x36'));var _0xa8d344=_0x53f8b3['split']&&_0x2375b7[_0x7da8('0x15')]>0x1;var _0x3101c0=[];if(!fs[_0x7da8('0x37')](path['join'](_0x261237,_0x1bad2a))&&_0xa8d344){fs['mkdirSync'](path['join'](_0x261237,_0x1bad2a));}return BPromise[_0x7da8('0x38')](_0x2375b7,function(_0x32e96c){_0x3101c0[_0x7da8('0x18')](_0x32e96c);})['then'](function(){var _0x2ebb3d=[];for(var _0x5a103f=0x0;_0x5a103f<_0x3101c0['length'];_0x5a103f+=0x1){var _0x2daba1=_0x3101c0[_0x5a103f];var _0x5995ab=createTables(_[_0x7da8('0x39')](_0x2daba1));var _0x1077e4;var _0x3c20de=getPDFDocDefinition(_0x5995ab);var _0x4148c0=getPDFPrinter();var _0x42bcc7=_0x4148c0['createPdfKitDocument'](_0x3c20de);if(_0xa8d344){_0x1077e4=path[_0x7da8('0x3a')](_0x261237,_0x1bad2a,util[_0x7da8('0x1c')](_0x7da8('0x3b'),_0x1bad2a,_0x5a103f,_0x7da8('0x3c')));}else{_0x1077e4=path['join'](_0x261237,util['format'](_0x7da8('0x3d'),_0x1bad2a,'pdf'));}_0x2ebb3d[_0x7da8('0x18')](writePDFDocument(_0x42bcc7,_0x1077e4));}return Promise[_0x7da8('0x3e')](_0x2ebb3d);})[_0x7da8('0x2c')](function(){if(_0xa8d344){return new Promise(function(_0x162c17){zipdir(path[_0x7da8('0x3a')](_0x261237,_0x1bad2a),{'saveTo':path[_0x7da8('0x3a')](_0x261237,util[_0x7da8('0x1c')](_0x7da8('0x3d'),_0x1bad2a,_0x7da8('0x3f')))},function(){rimraf(path[_0x7da8('0x3a')](_0x261237,_0x1bad2a),function(){});_0x162c17(_0x7da8('0x40'));});});}})[_0x7da8('0x2c')](function(){if(!_0xa8d344)return;rimraf(path[_0x7da8('0x3a')](_0x261237,_0x1bad2a),function(){});})[_0x7da8('0x2c')](function(){logger[_0x7da8('0x41')](util[_0x7da8('0x1c')](_0x7da8('0x42'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x7da8('0x43'),_0xa8d344?util[_0x7da8('0x1c')](_0x7da8('0x3d'),_0x1bad2a,_0xa8d344?_0x7da8('0x3f'):_0x7da8('0x3c')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x7da8('0x41')](util[_0x7da8('0x1c')](_0x7da8('0x44'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x7da8('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x7da8('0x2c')](function(_0xefc5d2){EXTRACTED_REPORT=_0xefc5d2;return dbH['sequelize'][_0x7da8('0x32')](util[_0x7da8('0x1c')](_0x7da8('0x46'),QUERY),{'type':dbH[_0x7da8('0x2f')][_0x7da8('0x30')]['SELECT']});})['then'](extractReport)[_0x7da8('0x47')](function(_0x4ee63d){logger[_0x7da8('0x41')](util['format'](_0x7da8('0x48'),EXTRACTED_REPORT_ID,_0x7da8('0x49')),util[_0x7da8('0x4a')](_0x4ee63d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7da8('0x4b'));})[_0x7da8('0x4c')](function(){process[_0x7da8('0x4d')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x40ce52=new PdfPrinter({'Arial':{'normal':__dirname+_0x7da8('0x4e'),'bold':__dirname+_0x7da8('0x4f'),'italics':__dirname+_0x7da8('0x50'),'bolditalics':__dirname+_0x7da8('0x51')}});return _0x40ce52;}function getPDFDocDefinitionFromHTML(_0x1a45e3,_0x5c3b8d){var _0x571294=util['format']('%s\x20#%d',_0x5c3b8d['channel'],_0x5c3b8d[_0x7da8('0x52')]);var _0x3e377c=moment()[_0x7da8('0x1c')]('YYYY-MM-DD')[_0x7da8('0x13')]();var _0x2c6a11=htmlToPdfmake(_0x1a45e3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2c6a11],'defaultStyle':{'font':_0x7da8('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x7da8('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x7da8('0x53'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x7da8('0x53')}},'header':function(){return[{'text':_0x7da8('0x54'),'style':'header'}];},'footer':function(_0x4160d0,_0x29bdad){return[{'text':util['format'](_0x7da8('0x55'),_0x571294,_0x4160d0,_0x29bdad,_0x3e377c),'style':'footer'}];}};}function writePDFDocument(_0x3f1825,_0x3709f5){return new Promise(function(_0x2e701c,_0x1dfdc5){var _0x4ecf94=_0x3f1825[_0x7da8('0x56')](fs['createWriteStream'](_0x3709f5));_0x4ecf94['on'](_0x7da8('0x57'),function(){_0x2e701c('finish');});_0x4ecf94['on'](_0x7da8('0x58'),function(_0x37c162){_0x1dfdc5(_0x37c162);});_0x3f1825[_0x7da8('0x59')]();});}exports['createPdfFromHTML']=function(_0x283287,_0x4e1f15){var _0x5012e5=getPDFPrinter();var _0x5f0aa9=getPDFDocDefinitionFromHTML(_0x283287,_0x4e1f15);var _0x47a191=_0x5012e5[_0x7da8('0x5a')](_0x5f0aa9);return writePDFDocument(_0x47a191,_0x4e1f15[_0x7da8('0x2')])[_0x7da8('0x47')](function(_0x5480b0){throw _0x5480b0;});};
\ No newline at end of file
index ffc78eb..b5f1df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x609a=['finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','inspect','Failed'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x609a,0x1ec));var _0xa609=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x609a[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0xa609('0x0'));var path=require(_0xa609('0x1'));var _=require(_0xa609('0x2'));var fs=require('fs');var json2xls=require(_0xa609('0x3'));var BPromise=require(_0xa609('0x4'));var zipdir=require(_0xa609('0x5'));var rimraf=require('rimraf');var db=require(_0xa609('0x6'))['db'];var dbH=require('../../mysqldb')[_0xa609('0x7')];var logger=require(_0xa609('0x8'))(_0xa609('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xa609('0xa')][0x2]);var QUERY=process[_0xa609('0xa')][0x3];var PATH=process[_0xa609('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x394cde,_0x269447){var _0x29f23a={'status':_0x394cde};var _0x3b5da3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x269447){_0x29f23a[_0xa609('0xb')]=_0x269447;}return db[_0xa609('0xc')]['update'](_0x29f23a,_0x3b5da3);}function main(){var _0x381edb=0x1388;var _0x4be70b;logger[_0xa609('0xd')](util[_0xa609('0xe')](_0xa609('0xf'),EXTRACTED_REPORT_ID,_0xa609('0x10')));return db['Setting'][_0xa609('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa609('0x12'),_0xa609('0x13')]})['then'](function(_0x2b8729){if(_0x2b8729){_0x4be70b=_0x2b8729;_0x381edb=_0x4be70b[_0xa609('0x13')]||0x1388;}})[_0xa609('0x14')](function(){return dbH[_0xa609('0x15')][_0xa609('0x16')](util[_0xa609('0xe')](_0xa609('0x17'),QUERY),{'type':dbH[_0xa609('0x15')][_0xa609('0x18')][_0xa609('0x19')]});})[_0xa609('0x14')](function(_0x4809bc){if(!_0x4809bc[0x0][_0xa609('0x1a')]){return analyticExtractedReport(_0xa609('0x1b'));}var _0x33db9a=[];var _0x21cb81=0x0;if(_0x4be70b[_0xa609('0x12')]){if(_0x4809bc&&_0x4809bc[_0xa609('0x1c')]){var _0x317fc3=_[_0xa609('0x1d')](_0x4809bc[0x0][_0xa609('0x1a')]/_0x381edb);var _0x1c9bed=Number[_0xa609('0x1e')](_0x4809bc[0x0][_0xa609('0x1a')]/_0x381edb)?_0x4809bc[0x0][_0xa609('0x1a')]%_0x381edb:0x0;_0x317fc3['forEach'](function(_0x48ab44){if(_0x48ab44>0x0){_0x21cb81+=_0x381edb;}_0x33db9a[_0xa609('0x1f')](dbH[_0xa609('0x15')][_0xa609('0x16')](util[_0xa609('0xe')](_0xa609('0x20'),QUERY,_0x381edb,_0x21cb81),{'type':dbH[_0xa609('0x15')]['QueryTypes'][_0xa609('0x19')]}));});if(_0x1c9bed>0x0){_0x21cb81+=_0x381edb;_0x33db9a[_0xa609('0x1f')](dbH['sequelize'][_0xa609('0x16')](util[_0xa609('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1c9bed,_0x21cb81),{'type':dbH[_0xa609('0x15')][_0xa609('0x18')][_0xa609('0x19')]}));}}}else{_0x33db9a[_0xa609('0x1f')](dbH[_0xa609('0x15')][_0xa609('0x16')](QUERY,{'type':dbH[_0xa609('0x15')]['QueryTypes'][_0xa609('0x19')]}));}var _0x1fe2ab=path['dirname'](PATH);var _0x33673c=path[_0xa609('0x21')](PATH,'.xlsx');var _0x1b9f04=_0x4be70b[_0xa609('0x12')]&&_0x33db9a[_0xa609('0x1c')]>0x1;var _0x495b95=[];if(!fs[_0xa609('0x22')](path[_0xa609('0x23')](_0x1fe2ab,_0x33673c))&&_0x1b9f04){fs[_0xa609('0x24')](path[_0xa609('0x23')](_0x1fe2ab,_0x33673c));}return BPromise[_0xa609('0x25')](_0x33db9a,function(_0x1fffc5){_0x495b95[_0xa609('0x1f')](_0x1fffc5);})[_0xa609('0x14')](function(){for(var _0x5e0f8c=0x0;_0x5e0f8c<_0x495b95[_0xa609('0x1c')];_0x5e0f8c+=0x1){var _0x816a3b;var _0x58ad7e=_0x495b95[_0x5e0f8c];if(_0x1b9f04){_0x816a3b=path[_0xa609('0x23')](_0x1fe2ab,_0x33673c,util[_0xa609('0xe')](_0xa609('0x26'),_0x33673c,_0x5e0f8c,_0xa609('0x27')));}else{_0x816a3b=path[_0xa609('0x23')](_0x1fe2ab,util['format'](_0xa609('0x28'),_0x33673c,_0xa609('0x27')));}fs[_0xa609('0x29')](_0x816a3b,json2xls(_0x58ad7e),_0xa609('0x2a'));}})['then'](function(){if(_0x1b9f04){return new Promise(function(_0x3190cf){zipdir(path[_0xa609('0x23')](_0x1fe2ab,_0x33673c),{'saveTo':path['join'](_0x1fe2ab,util[_0xa609('0xe')]('%s.%s',_0x33673c,_0xa609('0x2b')))},function(_0x1980de,_0x4a1bff){rimraf(path[_0xa609('0x23')](_0x1fe2ab,_0x33673c),function(){});_0x3190cf('zip\x20finished');});});}})[_0xa609('0x14')](function(){logger['info'](util['format'](_0xa609('0x2c'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x1b9f04?util['format']('%s.%s',_0x33673c,_0x1b9f04?_0xa609('0x2b'):_0xa609('0x27')):null);});})['catch'](function(_0x3f2c78){logger[_0xa609('0xd')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util[_0xa609('0x2d')](_0x3f2c78,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa609('0x2e'));})[_0xa609('0x2f')](function(){process[_0xa609('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xcce8=['query','format','num','Empty','length','range','push','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','inspect','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','then','sequelize'];(function(_0xeb7d77,_0x412553){var _0x424010=function(_0x421b40){while(--_0x421b40){_0xeb7d77['push'](_0xeb7d77['shift']());}};_0x424010(++_0x412553);}(_0xcce8,0x1a5));var _0x8cce=function(_0x1d927a,_0x153c1a){_0x1d927a=_0x1d927a-0x0;var _0x3f533c=_0xcce8[_0x1d927a];return _0x3f533c;};'use strict';var util=require(_0x8cce('0x0'));var path=require(_0x8cce('0x1'));var _=require(_0x8cce('0x2'));var fs=require('fs');var json2xls=require(_0x8cce('0x3'));var BPromise=require(_0x8cce('0x4'));var zipdir=require(_0x8cce('0x5'));var rimraf=require(_0x8cce('0x6'));var db=require(_0x8cce('0x7'))['db'];var dbH=require(_0x8cce('0x7'))[_0x8cce('0x8')];var logger=require('../../config/logger')(_0x8cce('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x8cce('0xa')][0x2]);var QUERY=process[_0x8cce('0xa')][0x3];var PATH=process[_0x8cce('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x382fca,_0x1421b3){var _0x5244e1={'status':_0x382fca};var _0x56c14d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1421b3){_0x5244e1['savename']=_0x1421b3;}return db[_0x8cce('0xb')]['update'](_0x5244e1,_0x56c14d);}function main(){var _0x4b03f2=0x1388;var _0x4f4999;logger[_0x8cce('0xc')](util['format'](_0x8cce('0xd'),EXTRACTED_REPORT_ID,_0x8cce('0xe')));return db[_0x8cce('0xf')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8cce('0x10'),_0x8cce('0x11')]})[_0x8cce('0x12')](function(_0x3ce0b5){if(_0x3ce0b5){_0x4f4999=_0x3ce0b5;_0x4b03f2=_0x4f4999['splitSizeXlsx']||0x1388;}})[_0x8cce('0x12')](function(){return dbH[_0x8cce('0x13')][_0x8cce('0x14')](util[_0x8cce('0x15')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x8cce('0x13')]['QueryTypes']['SELECT']});})[_0x8cce('0x12')](function(_0x556f59){if(!_0x556f59[0x0][_0x8cce('0x16')]){return analyticExtractedReport(_0x8cce('0x17'));}var _0x13fa21=[];var _0x17706c=0x0;if(_0x4f4999[_0x8cce('0x10')]){if(_0x556f59&&_0x556f59[_0x8cce('0x18')]){var _0xdf18b0=_[_0x8cce('0x19')](_0x556f59[0x0][_0x8cce('0x16')]/_0x4b03f2);var _0x8f3333=Number['isInteger'](_0x556f59[0x0][_0x8cce('0x16')]/_0x4b03f2)?_0x556f59[0x0][_0x8cce('0x16')]%_0x4b03f2:0x0;_0xdf18b0['forEach'](function(_0x2d3a73){if(_0x2d3a73>0x0){_0x17706c+=_0x4b03f2;}_0x13fa21[_0x8cce('0x1a')](dbH[_0x8cce('0x13')][_0x8cce('0x14')](util[_0x8cce('0x15')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4b03f2,_0x17706c),{'type':dbH[_0x8cce('0x13')][_0x8cce('0x1b')][_0x8cce('0x1c')]}));});if(_0x8f3333>0x0){_0x17706c+=_0x4b03f2;_0x13fa21[_0x8cce('0x1a')](dbH['sequelize'][_0x8cce('0x14')](util['format'](_0x8cce('0x1d'),QUERY,_0x8f3333,_0x17706c),{'type':dbH[_0x8cce('0x13')][_0x8cce('0x1b')][_0x8cce('0x1c')]}));}}}else{_0x13fa21['push'](dbH[_0x8cce('0x13')][_0x8cce('0x14')](QUERY,{'type':dbH[_0x8cce('0x13')][_0x8cce('0x1b')][_0x8cce('0x1c')]}));}var _0x4beb00=path[_0x8cce('0x1e')](PATH);var _0x3e191d=path[_0x8cce('0x1f')](PATH,'.xlsx');var _0x4d3260=_0x4f4999[_0x8cce('0x10')]&&_0x13fa21['length']>0x1;var _0x57dca4=[];if(!fs[_0x8cce('0x20')](path[_0x8cce('0x21')](_0x4beb00,_0x3e191d))&&_0x4d3260){fs[_0x8cce('0x22')](path[_0x8cce('0x21')](_0x4beb00,_0x3e191d));}return BPromise[_0x8cce('0x23')](_0x13fa21,function(_0x3e655c){_0x57dca4[_0x8cce('0x1a')](_0x3e655c);})[_0x8cce('0x12')](function(){for(var _0x28d61b=0x0;_0x28d61b<_0x57dca4[_0x8cce('0x18')];_0x28d61b+=0x1){var _0x4cb528;var _0x41eb3c=_0x57dca4[_0x28d61b];if(_0x4d3260){_0x4cb528=path[_0x8cce('0x21')](_0x4beb00,_0x3e191d,util[_0x8cce('0x15')](_0x8cce('0x24'),_0x3e191d,_0x28d61b,_0x8cce('0x25')));}else{_0x4cb528=path['join'](_0x4beb00,util[_0x8cce('0x15')](_0x8cce('0x26'),_0x3e191d,_0x8cce('0x25')));}fs[_0x8cce('0x27')](_0x4cb528,json2xls(_0x41eb3c),_0x8cce('0x28'));}})[_0x8cce('0x12')](function(){if(_0x4d3260){return new Promise(function(_0x42b9f4){zipdir(path[_0x8cce('0x21')](_0x4beb00,_0x3e191d),{'saveTo':path[_0x8cce('0x21')](_0x4beb00,util[_0x8cce('0x15')]('%s.%s',_0x3e191d,_0x8cce('0x29')))},function(_0x139207,_0x48e120){rimraf(path[_0x8cce('0x21')](_0x4beb00,_0x3e191d),function(){});_0x42b9f4(_0x8cce('0x2a'));});});}})[_0x8cce('0x12')](function(){logger[_0x8cce('0xc')](util[_0x8cce('0x15')](_0x8cce('0x2b'),EXTRACTED_REPORT_ID,_0x8cce('0xe')));return analyticExtractedReport(_0x8cce('0x2c'),_0x4d3260?util[_0x8cce('0x15')](_0x8cce('0x26'),_0x3e191d,_0x4d3260?'zip':_0x8cce('0x25')):null);});})[_0x8cce('0x2d')](function(_0x425bf0){logger['info'](util[_0x8cce('0x15')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x8cce('0xe')),util[_0x8cce('0x2e')](_0x425bf0,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8cce('0x2f'));})['finally'](function(){process[_0x8cce('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index 3c7b359..748b518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe53d=['intervals','VoiceExtension','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','then','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','exten','push','type','format','CDR(type)=%s','inbound','VoiceExtensionId','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','context','Set','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','toLowerCase','createdAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','length','outbound','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','app','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','error','rewrite','util','models','Interval','findAll'];(function(_0x492221,_0x9e2521){var _0x398bf9=function(_0x303c5b){while(--_0x303c5b){_0x492221['push'](_0x492221['shift']());}};_0x398bf9(++_0x9e2521);}(_0xe53d,0x1d8));var _0xde53=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0xe53d[_0x4fbfd9];return _0x31dc94;};'use strict';var _=require('lodash');var util=require(_0xde53('0x0'));function rewrite(_0xc4c0ae,_0x1a64b1){var _0x2f7de6=this;return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x2')][_0xde53('0x3')]({'raw':!![]})['then'](function(_0x2531e8){_0x2f7de6[_0xde53('0x4')]=_0x2531e8;return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x5')][_0xde53('0x3')]({'where':{'IntervalId':_0x1a64b1['IntervalId']},'raw':!![]});})['then'](function(_0x10de9c){return _0xc4c0ae[_0xde53('0x1')]['VoiceExtension'][_0xde53('0x3')]({'where':{'exten':{'$in':_[_0xde53('0x6')](_[_0xde53('0x7')](_0x10de9c,'exten'))}},'order':[{'raw':_0xde53('0x8')}],'raw':!![]});})[_0xde53('0x9')](function(_0x40f45e){var _0x51e7d0=_[_0xde53('0xa')](_0x40f45e,{'priority':'1'});var _0xcdfcfc=_[_0xde53('0xa')](_0x40f45e,{'isApp':0x1});var _0x5025a8=_[_0xde53('0xb')](_0xcdfcfc,'exten');var _0x25e22d=[_0xde53('0xc'),_0xde53('0xd')];var _0x17a008=[];var _0x159d65=[];for(var _0x2680b5 in _0x5025a8){if(_0x5025a8[_0xde53('0xe')](_0x2680b5)){_0x2f7de6[_0xde53('0xf')]=0x2;_0x2f7de6[_0xde53('0x10')]=[];_0x2f7de6[_0xde53('0x11')]=_['find'](_0x51e7d0,{'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')]});_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':util[_0xde53('0x15')](_0xde53('0x16'),_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]),'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});if(_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]===_0xde53('0x17')){_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':'CDR(routeid)='+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}else if(_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')]==='outbound'){if(_0x2f7de6[_0xde53('0x11')]){_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x19')+(_0x2f7de6[_0xde53('0x11')]['cutdigits']?_0xde53('0x1a')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]+'}':_0xde53('0x1c')),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':_0xde53('0x1f')+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});var _0x59fc1a=_0x2f7de6['priority']++;_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'ExecIf','appdata':_0xde53('0x20')+(_0x59fc1a+0x2)+_0xde53('0x21')+(_0x59fc1a+0x1)+')','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x59fc1a,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});if(_0x2f7de6['extension']){_0x2f7de6['extensions'][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Set','appdata':_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]?_0xde53('0x22')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x1b')]+'}':_0xde53('0x23'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'outboundrouteid='+_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});if(_0x2f7de6[_0xde53('0x11')]&&_0x2f7de6[_0xde53('0x11')][_0xde53('0xe')](_0xde53('0x24'))&&_0x2f7de6[_0xde53('0x11')][_0xde53('0x24')]!==_0xde53('0x25')){_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':_0xde53('0x26'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':_0xde53('0x27')+_0x2f7de6[_0xde53('0x11')][_0xde53('0x24')]||_0xde53('0x28'),'context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}}_0x2f7de6[_0xde53('0x10')][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5025a8[_0x2680b5][0x0]['context'],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});_0x2f7de6['extensions'][_0xde53('0x13')]({'type':_0x5025a8[_0x2680b5][0x0]['type'],'app':_0xde53('0x1e'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'priority':_0x2f7de6[_0xde53('0xf')]++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':_0xde53('0x1e'),'appdata':'MONITOR_OPTIONS=ab','context':_0x5025a8[_0x2680b5][0x0][_0xde53('0x1d')],'exten':_0x5025a8[_0x2680b5][0x0]['exten'],'priority':_0x2f7de6['priority']++,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});for(var _0x3ea329=0x0,_0x5c11a5=0x0;_0x3ea329<_0x5025a8[_0x2680b5]['length'];_0x3ea329+=0x1,_0x5c11a5=0x0){var _0x4bc1b1=_0x5025a8[_0x2680b5][_0x3ea329];if(_0x4bc1b1[_0xde53('0x14')]){_0x4bc1b1[_0xde53('0x14')]=_0x4bc1b1[_0xde53('0x14')][_0xde53('0x29')]();}var _0x2515db=[];var _0x2ad48e=[];delete _0x4bc1b1['id'];delete _0x4bc1b1[_0xde53('0x2a')];delete _0x4bc1b1['updatedAt'];var _0x9bdc5d=_0x4bc1b1[_0xde53('0x2b')]!==_0xde53('0x2c')?[_0x4bc1b1[_0xde53('0x2b')]]:_0x4bc1b1[_0xde53('0x2d')]?_[_0xde53('0x7')](_[_0xde53('0xa')](_0x2f7de6[_0xde53('0x4')],{'IntervalId':_0x4bc1b1['IntervalId']}),_0xde53('0x2b')):[];if(_0x4bc1b1[_0xde53('0xe')](_0xde53('0x2e'))){if(_0x4bc1b1[_0xde53('0x2e')]&&_0x4bc1b1[_0xde53('0x2e')]!=='--'){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x2f')+_0x4bc1b1[_0xde53('0x2e')],'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}if(_0x4bc1b1[_0xde53('0x14')]===_0xde53('0x31')&&_0x4bc1b1[_0xde53('0xe')](_0xde53('0x32'))){if(_0x4bc1b1[_0xde53('0x32')]){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x34')+_0x4bc1b1[_0xde53('0x32')]+')','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}else{_0x2515db[_0xde53('0x13')]({'type':_0x4bc1b1['type'],'app':_0xde53('0x33'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}if(_0x4bc1b1[_0xde53('0xe')](_0xde53('0x35'))){if(_0x25e22d['indexOf'](_0x4bc1b1[_0xde53('0x36')][_0xde53('0x29')]())>=0x0&&_0x4bc1b1['appType']!=='custom'){if(_0x4bc1b1[_0xde53('0x35')]){_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x37'),'context':_0x4bc1b1['context'],'exten':_0x4bc1b1['exten'],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});_0x2515db['push']({'type':_0x4bc1b1['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1['exten'],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6['priority']+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1['VoiceExtensionId']});}else{_0x2515db[_0xde53('0x13')]({'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x33'),'appdata':_0xde53('0x38'),'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});_0x2515db['push']({'type':_0x4bc1b1[_0xde53('0x14')],'app':'Set','appdata':_0xde53('0x39'),'context':_0x4bc1b1[_0xde53('0x1d')],'exten':_0x4bc1b1[_0xde53('0x12')],'priority':_0x9bdc5d[_0xde53('0x30')]+_0x2f7de6[_0xde53('0xf')]+_0x5c11a5++,'VoiceExtensionId':_0x4bc1b1[_0xde53('0x18')]});}}}for(var _0x59e2b3=0x0;_0x59e2b3<_0x9bdc5d[_0xde53('0x30')];_0x59e2b3+=0x1){var _0x57869f=_0x2f7de6['priority']+_0x9bdc5d[_0xde53('0x30')];var _0x43e8de=_0x59e2b3===_0x9bdc5d[_0xde53('0x30')]-0x1?_0x2f7de6[_0xde53('0xf')]+_0x2515db[_0xde53('0x30')]+_0x2ad48e[_0xde53('0x30')]+0x2:_0x2f7de6[_0xde53('0xf')]+_0x59e2b3+0x1;_0x2515db[_0xde53('0x3a')](_0x59e2b3,0x0,{'type':_0x4bc1b1[_0xde53('0x14')],'app':_0xde53('0x3b'),'appdata':_0x9bdc5d[_0x59e2b3]+'?'+_0x4bc1b1[_0xde53('0x1d')]+_0xde53('0x3c')+_0x57869f+':'+_0x4bc1b1[_0xde53('0x1d')]+_0xde53('0x3c')+_0x43e8de,'exten':_0x4bc1b1[_0xde53('0x12')],'context':_0x4bc1b1[_0xde53('0x1d')],'priority':_0x2f7de6[_0xde53('0xf')]+_0x59e2b3,'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]});}_0x4bc1b1['priority']=_0x2515db['length']?_[_0xde53('0x3d')](_0x2515db)[_0xde53('0xf')]+0x1:_0x2f7de6[_0xde53('0xf')];_0x2f7de6[_0xde53('0xf')]=(_0x2ad48e[_0xde53('0x30')]?_[_0xde53('0x3d')](_0x2ad48e)['priority']:_0x4bc1b1[_0xde53('0xf')])+0x1;_0x2f7de6[_0xde53('0x10')]=_[_0xde53('0x3e')](_0x2f7de6['extensions'],_0x2515db,[_0x4bc1b1],_0x2ad48e);}_0x2f7de6[_0xde53('0x10')]['push']({'type':_0x5025a8[_0x2680b5][0x0][_0xde53('0x14')],'app':'Hangup','exten':_0x5025a8[_0x2680b5][0x0][_0xde53('0x12')],'context':_0x5025a8[_0x2680b5][0x0]['context'],'priority':_0x2f7de6[_0xde53('0xf')],'VoiceExtensionId':_0x5025a8[_0x2680b5][0x0]['VoiceExtensionId']});_0x17a008[_0xde53('0x13')](_0x5025a8[_0x2680b5][0x0][_0xde53('0x18')]);_0x159d65=_['concat'](_0x159d65,_0x2f7de6['extensions']);}}return _0xc4c0ae[_0xde53('0x3f')](function(_0x447def){return _0xc4c0ae[_0xde53('0x1')][_0xde53('0x5')][_0xde53('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x17a008}},'transaction':_0x447def})[_0xde53('0x9')](function(_0x4ebbcd){return _0xc4c0ae['models'][_0xde53('0x5')][_0xde53('0x41')](_['sortBy'](_0x159d65,_0xde53('0xf')),{'transaction':_0x447def});});});})['catch'](function(_0x42a700){console[_0xde53('0x42')](_0x42a700);});}exports[_0xde53('0x43')]=rewrite;
\ No newline at end of file
+var _0x79c2=['priority','extension','find','extensions','push','type','Set','CDR(type)=%s','context','inbound','VoiceExtensionId','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','length','toLowerCase','createdAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','appType','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','rewrite','lodash','util','models','Interval','intervals','VoiceExtension','IntervalId','then','findAll','uniq','map','exten','filter','groupBy','queue','playback'];(function(_0x7dda42,_0x31357d){var _0x3d413c=function(_0x407267){while(--_0x407267){_0x7dda42['push'](_0x7dda42['shift']());}};_0x3d413c(++_0x31357d);}(_0x79c2,0x108));var _0x279c=function(_0x5c2e5e,_0x2bc00e){_0x5c2e5e=_0x5c2e5e-0x0;var _0x46a5da=_0x79c2[_0x5c2e5e];return _0x46a5da;};'use strict';var _=require(_0x279c('0x0'));var util=require(_0x279c('0x1'));function rewrite(_0x44f2f7,_0x3f8135){var _0x1a0140=this;return _0x44f2f7[_0x279c('0x2')][_0x279c('0x3')]['findAll']({'raw':!![]})['then'](function(_0x1c6276){_0x1a0140[_0x279c('0x4')]=_0x1c6276;return _0x44f2f7[_0x279c('0x2')][_0x279c('0x5')]['findAll']({'where':{'IntervalId':_0x3f8135[_0x279c('0x6')]},'raw':!![]});})[_0x279c('0x7')](function(_0x414488){return _0x44f2f7[_0x279c('0x2')][_0x279c('0x5')][_0x279c('0x8')]({'where':{'exten':{'$in':_[_0x279c('0x9')](_[_0x279c('0xa')](_0x414488,_0x279c('0xb')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x279c('0x7')](function(_0x18cfaf){var _0x20a48a=_[_0x279c('0xc')](_0x18cfaf,{'priority':'1'});var _0x4808a7=_['filter'](_0x18cfaf,{'isApp':0x1});var _0x4f1e1a=_[_0x279c('0xd')](_0x4808a7,'exten');var _0x3f338c=[_0x279c('0xe'),_0x279c('0xf')];var _0x4a3a71=[];var _0x18541e=[];for(var _0x1f8b31 in _0x4f1e1a){if(_0x4f1e1a['hasOwnProperty'](_0x1f8b31)){_0x1a0140[_0x279c('0x10')]=0x2;_0x1a0140['extensions']=[];_0x1a0140[_0x279c('0x11')]=_[_0x279c('0x12')](_0x20a48a,{'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten']});_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':_0x279c('0x16'),'appdata':util['format'](_0x279c('0x17'),_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')]),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten'],'priority':_0x1a0140['priority']++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});if(_0x4f1e1a[_0x1f8b31][0x0]['type']===_0x279c('0x19')){_0x1a0140['extensions'][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x16'),'appdata':'CDR(routeid)='+_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')],'context':_0x4f1e1a[_0x1f8b31][0x0]['context'],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140['priority']++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});}else if(_0x4f1e1a[_0x1f8b31][0x0]['type']==='outbound'){if(_0x1a0140[_0x279c('0x11')]){_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':_0x279c('0x16'),'appdata':_0x279c('0x1b')+(_0x1a0140[_0x279c('0x11')]['cutdigits']?_0x279c('0x1c')+_0x1a0140['extension'][_0x279c('0x1d')]+'}':_0x279c('0x1e')),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten'],'priority':_0x1a0140['priority']++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});}_0x1a0140[_0x279c('0x13')]['push']({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':_0x279c('0x16'),'appdata':_0x279c('0x1f')+_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')],'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140['priority']++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});var _0x84733b=_0x1a0140[_0x279c('0x10')]++;_0x1a0140[_0x279c('0x13')]['push']({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x20'),'appdata':_0x279c('0x21')+(_0x84733b+0x2)+_0x279c('0x22')+(_0x84733b+0x1)+')','context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten'],'priority':_0x84733b,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});if(_0x1a0140['extension']){_0x1a0140[_0x279c('0x13')]['push']({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':'Set','appdata':_0x1a0140[_0x279c('0x11')][_0x279c('0x1d')]?'CDR(prefix)=${EXTEN:0:'+_0x1a0140['extension'][_0x279c('0x1d')]+'}':_0x279c('0x23'),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});}_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x16'),'appdata':_0x279c('0x24')+_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')],'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});if(_0x1a0140['extension']&&_0x1a0140['extension'][_0x279c('0x25')](_0x279c('0x26'))&&_0x1a0140[_0x279c('0x11')][_0x279c('0x26')]!==_0x279c('0x27')){_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x16'),'appdata':_0x279c('0x28'),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten'],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':'Set','appdata':_0x279c('0x29')+_0x1a0140[_0x279c('0x11')]['recordingFormat']||_0x279c('0x2a'),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});}}_0x1a0140[_0x279c('0x13')]['push']({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x16'),'appdata':_0x279c('0x2b'),'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140['priority']++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':_0x279c('0x16'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0]['exten'],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0]['type'],'app':_0x279c('0x16'),'appdata':'MONITOR_OPTIONS=ab','context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'priority':_0x1a0140[_0x279c('0x10')]++,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});for(var _0x5d34da=0x0,_0x537450=0x0;_0x5d34da<_0x4f1e1a[_0x1f8b31][_0x279c('0x2c')];_0x5d34da+=0x1,_0x537450=0x0){var _0x1210d2=_0x4f1e1a[_0x1f8b31][_0x5d34da];if(_0x1210d2[_0x279c('0x15')]){_0x1210d2[_0x279c('0x15')]=_0x1210d2[_0x279c('0x15')][_0x279c('0x2d')]();}var _0x5ebbfb=[];var _0x3e6412=[];delete _0x1210d2['id'];delete _0x1210d2[_0x279c('0x2e')];delete _0x1210d2['updatedAt'];var _0x1d51e1=_0x1210d2[_0x279c('0x2f')]!==_0x279c('0x30')?[_0x1210d2[_0x279c('0x2f')]]:_0x1210d2[_0x279c('0x6')]?_[_0x279c('0xa')](_['filter'](_0x1a0140[_0x279c('0x4')],{'IntervalId':_0x1210d2[_0x279c('0x6')]}),_0x279c('0x2f')):[];if(_0x1210d2[_0x279c('0x25')](_0x279c('0x31'))){if(_0x1210d2[_0x279c('0x31')]&&_0x1210d2['tag']!=='--'){_0x5ebbfb['push']({'type':_0x1210d2['type'],'app':_0x279c('0x16'),'appdata':_0x279c('0x32')+_0x1210d2['tag'],'context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2['exten'],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140[_0x279c('0x10')]+_0x537450++,'VoiceExtensionId':_0x1210d2['VoiceExtensionId']});}}if(_0x1210d2[_0x279c('0x15')]==='outbound'&&_0x1210d2[_0x279c('0x25')]('callerID')){if(_0x1210d2[_0x279c('0x33')]){_0x5ebbfb[_0x279c('0x14')]({'type':_0x1210d2[_0x279c('0x15')],'app':_0x279c('0x20'),'appdata':_0x279c('0x34')+_0x1210d2['callerID']+')','context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2[_0x279c('0xb')],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140[_0x279c('0x10')]+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});}else{_0x5ebbfb[_0x279c('0x14')]({'type':_0x1210d2['type'],'app':_0x279c('0x20'),'appdata':_0x279c('0x35'),'context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2[_0x279c('0xb')],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140[_0x279c('0x10')]+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});}}if(_0x1210d2['hasOwnProperty'](_0x279c('0x36'))){if(_0x3f338c[_0x279c('0x37')](_0x1210d2['app'][_0x279c('0x2d')]())>=0x0&&_0x1210d2[_0x279c('0x38')]!=='custom'){if(_0x1210d2['answer']){_0x5ebbfb[_0x279c('0x14')]({'type':_0x1210d2[_0x279c('0x15')],'app':_0x279c('0x20'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2['exten'],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140[_0x279c('0x10')]+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});_0x5ebbfb[_0x279c('0x14')]({'type':_0x1210d2[_0x279c('0x15')],'app':_0x279c('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2[_0x279c('0xb')],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140['priority']+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});}else{_0x5ebbfb['push']({'type':_0x1210d2[_0x279c('0x15')],'app':_0x279c('0x20'),'appdata':_0x279c('0x39'),'context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2[_0x279c('0xb')],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140[_0x279c('0x10')]+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});_0x5ebbfb[_0x279c('0x14')]({'type':_0x1210d2['type'],'app':_0x279c('0x16'),'appdata':_0x279c('0x3a'),'context':_0x1210d2[_0x279c('0x18')],'exten':_0x1210d2[_0x279c('0xb')],'priority':_0x1d51e1[_0x279c('0x2c')]+_0x1a0140['priority']+_0x537450++,'VoiceExtensionId':_0x1210d2[_0x279c('0x1a')]});}}}for(var _0xcf0c3f=0x0;_0xcf0c3f<_0x1d51e1[_0x279c('0x2c')];_0xcf0c3f+=0x1){var _0x3d946a=_0x1a0140[_0x279c('0x10')]+_0x1d51e1[_0x279c('0x2c')];var _0x195d07=_0xcf0c3f===_0x1d51e1[_0x279c('0x2c')]-0x1?_0x1a0140[_0x279c('0x10')]+_0x5ebbfb[_0x279c('0x2c')]+_0x3e6412[_0x279c('0x2c')]+0x2:_0x1a0140['priority']+_0xcf0c3f+0x1;_0x5ebbfb[_0x279c('0x3b')](_0xcf0c3f,0x0,{'type':_0x1210d2[_0x279c('0x15')],'app':_0x279c('0x3c'),'appdata':_0x1d51e1[_0xcf0c3f]+'?'+_0x1210d2['context']+_0x279c('0x3d')+_0x3d946a+':'+_0x1210d2[_0x279c('0x18')]+_0x279c('0x3d')+_0x195d07,'exten':_0x1210d2['exten'],'context':_0x1210d2[_0x279c('0x18')],'priority':_0x1a0140[_0x279c('0x10')]+_0xcf0c3f,'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0]['VoiceExtensionId']});}_0x1210d2[_0x279c('0x10')]=_0x5ebbfb[_0x279c('0x2c')]?_[_0x279c('0x3e')](_0x5ebbfb)[_0x279c('0x10')]+0x1:_0x1a0140[_0x279c('0x10')];_0x1a0140[_0x279c('0x10')]=(_0x3e6412['length']?_[_0x279c('0x3e')](_0x3e6412)[_0x279c('0x10')]:_0x1210d2[_0x279c('0x10')])+0x1;_0x1a0140['extensions']=_[_0x279c('0x3f')](_0x1a0140[_0x279c('0x13')],_0x5ebbfb,[_0x1210d2],_0x3e6412);}_0x1a0140[_0x279c('0x13')][_0x279c('0x14')]({'type':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x15')],'app':_0x279c('0x40'),'exten':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0xb')],'context':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x18')],'priority':_0x1a0140[_0x279c('0x10')],'VoiceExtensionId':_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]});_0x4a3a71[_0x279c('0x14')](_0x4f1e1a[_0x1f8b31][0x0][_0x279c('0x1a')]);_0x18541e=_[_0x279c('0x3f')](_0x18541e,_0x1a0140[_0x279c('0x13')]);}}return _0x44f2f7[_0x279c('0x41')](function(_0x4610de){return _0x44f2f7[_0x279c('0x2')]['VoiceExtension'][_0x279c('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x4a3a71}},'transaction':_0x4610de})[_0x279c('0x7')](function(_0x253842){return _0x44f2f7[_0x279c('0x2')]['VoiceExtension']['bulkCreate'](_[_0x279c('0x43')](_0x18541e,_0x279c('0x10')),{'transaction':_0x4610de});});});})[_0x279c('0x44')](function(_0x534985){console['error'](_0x534985);});}exports[_0x279c('0x45')]=rewrite;
\ No newline at end of file
index 27efcab..9d63d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc6=['findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','sequelize','VoiceQueueId','onlyIfOpen','query','all','VoiceQueue','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resolve','unlinkSync','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','ioredis','../../../mysqldb','../../../config/logger','defaults','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','null','undefined','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','duplicate','Duplicate\x20Contact','CmContact','create','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','cm_hopper','fromQuery','scheduledAt','createdAt','updatedAt','field','phone','ContactId','toString','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','from','\x20=\x20?','into','NOW()','id\x20IN\x20?','str','calleridnum','cm_hopper_final','insert'];(function(_0x5acb6f,_0x43b847){var _0x59118b=function(_0xde4b){while(--_0xde4b){_0x5acb6f['push'](_0x5acb6f['shift']());}};_0x59118b(++_0x43b847);}(_0x4bc6,0xff));var _0x64bc=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x4bc6[_0x413feb];return _0x40ee88;};'use strict';var BPromise=require(_0x64bc('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x64bc('0x1'));var Papa=require('papaparse');var Redis=require(_0x64bc('0x2'));var db=require(_0x64bc('0x3'))['db'];var config=require('../../../config/environment');var logger=require(_0x64bc('0x4'))('api');config['redis']=_[_0x64bc('0x5')](config[_0x64bc('0x6')],{'host':_0x64bc('0x7'),'port':0x18eb});var socket=require(_0x64bc('0x8'))(new Redis(config[_0x64bc('0x6')]));require(_0x64bc('0x9'))[_0x64bc('0xa')](socket);try{if(!process[_0x64bc('0xb')][0x2]||process[_0x64bc('0xb')][0x2]==='undefined'||process[_0x64bc('0xb')][0x2]===_0x64bc('0xc')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x64bc('0xb')][0x2];if(!process['argv'][0x3]||process[_0x64bc('0xb')][0x3]==='undefined'||process[_0x64bc('0xb')][0x3]===_0x64bc('0xc')||!process[_0x64bc('0xb')][0x4]||process[_0x64bc('0xb')][0x4]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x4]===_0x64bc('0xc')){throw new Error(_0x64bc('0xe'));}var FIELDS=_[_0x64bc('0xf')](process[_0x64bc('0xb')][0x3]['split'](','),process[_0x64bc('0xb')][0x4][_0x64bc('0x10')](','));if(!process['argv'][0x5]||process[_0x64bc('0xb')][0x5]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x5]===_0x64bc('0xc')){throw new Error(_0x64bc('0x11'));}var LISTID=process[_0x64bc('0xb')][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0x64bc('0xd')&&process[_0x64bc('0xb')][0x6]!==_0x64bc('0xc')?process[_0x64bc('0xb')][0x6]:null;var DUPLICATES=process[_0x64bc('0xb')][0x7]&&process[_0x64bc('0xb')][0x7]!==_0x64bc('0xd')&&process[_0x64bc('0xb')][0x7]!=='null'?process[_0x64bc('0xb')][0x7]:null;if(!process[_0x64bc('0xb')][0x8]||process[_0x64bc('0xb')][0x8]===_0x64bc('0xd')||process[_0x64bc('0xb')][0x8]===_0x64bc('0xc')){throw new Error(_0x64bc('0x12'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x3bff84){logger[_0x64bc('0x13')](_0x3bff84);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x141ac5,_0x1855ca,_0x4f8313,_0x3600da){var _0x3b9364={'message':_0x1855ca};_0x3b9364[_0x141ac5]=!![];if(_0x4f8313){_0x3b9364[_0x64bc('0x14')]=_0x4f8313;}if(_0x3600da){_0x3b9364[_0x64bc('0x15')]=_0x3600da;}return _0x3b9364;}function isEmail(_0x50b08a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x64bc('0x16')](_0x50b08a);}function checkRow(_0x3c4569,_0x3f6b8c,_0x353ef6){return new BPromise(function(_0x39840a,_0xf35d24){if(_[_0x64bc('0x17')](_0x3c4569)){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),_0x64bc('0x18'),null,_0x353ef6));}if(_0x3c4569['errors']&&_0x3c4569[_0x64bc('0x19')][_0x64bc('0x1a')]){var _0x5eb3d2=_[_0x64bc('0x1b')](_0x3c4569[_0x64bc('0x19')],_0x64bc('0x1c'))['join'](';');return _0xf35d24(handleCheckRowError('error',_0x5eb3d2,null,_0x353ef6));}var _0x11bfba={};for(var _0x27e834 in FIELDS){if(FIELDS[_0x64bc('0x1d')](_0x27e834)&&FIELDS[_0x27e834]){_0x11bfba[_0x27e834]=_0x3c4569[_0x64bc('0x1e')][0x0][FIELDS[_0x27e834]]||_0x3c4569['data'][0x0]['\ufeff'+FIELDS[_0x27e834]];}}if(!_0x11bfba[_0x64bc('0x1f')]){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),_0x64bc('0x20'),null,_0x353ef6));}if(!_0x11bfba['phone']){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x21'),null,_0x353ef6));}if(_0x11bfba[_0x64bc('0x22')]){var _0x71dcf7=moment(_0x11bfba[_0x64bc('0x22')],_0x64bc('0x23'));if(!_0x71dcf7[_0x64bc('0x24')]()){return _0xf35d24(handleCheckRowError(_0x64bc('0x13'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x353ef6));}}if(_0x11bfba[_0x64bc('0x25')]){if(!isEmail(_0x11bfba[_0x64bc('0x25')])){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x26'),null,_0x353ef6));}}_0x11bfba[_0x64bc('0x27')]=LISTID;_0x11bfba[_0x64bc('0x28')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x64bc('0x1a')]&&_0x3f6b8c){var _0x227e20={};for(var _0x4a36ff=0x0,_0x31d5fc=DUPLICATES[_0x64bc('0x1a')];_0x4a36ff<_0x31d5fc;_0x4a36ff+=0x1){_0x227e20[DUPLICATES[_0x4a36ff]]=_0x11bfba[DUPLICATES[_0x4a36ff]];}var _0x1bbc07=_['find'](_0x3f6b8c,_0x227e20);if(_0x1bbc07){return _0xf35d24(handleCheckRowError(_0x64bc('0x29'),_0x64bc('0x2a'),_0x1bbc07,_0x353ef6));}}return db[_0x64bc('0x2b')][_0x64bc('0x2c')](_0x11bfba,{'raw':!![],'hooks':![],'fields':_['keys'](_0x11bfba)})[_0x64bc('0x2d')](function(_0x4d7c7f){if(DUPLICATES&&DUPLICATES[_0x64bc('0x1a')]&&_0x3f6b8c){_0x3f6b8c[_0x64bc('0x2e')](_['pick'](_0x11bfba,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x4d7c7f['id'];return _0x39840a();})[_0x64bc('0x2f')](function(_0x377690){return _0xf35d24(handleCheckRowError('error',_0x64bc('0x30')+(_0x377690['message']||JSON[_0x64bc('0x31')](_0x377690)),null,_0x353ef6));});});}function checkHopper(){function _0x4a3b0c(){return function(_0x3b3007){logger['error'](_0x64bc('0x32'),_0x64bc('0x33'),util[_0x64bc('0x34')](_0x3b3007,{'showHidden':![],'depth':null}));};}var _0x468405=function(_0x181774,_0x43b672){var _0x45d120=squel['insert']()['into'](_0x64bc('0x35'))[_0x64bc('0x36')](['phone',_0x64bc('0x37'),'ContactId',_0x64bc('0x27'),_0x43b672,_0x64bc('0x38'),_0x64bc('0x39')],squel['select']()[_0x64bc('0x3a')]('phone',_0x64bc('0x3b'))[_0x64bc('0x3a')]('NOW()',_0x64bc('0x37'))[_0x64bc('0x3a')]('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID['toString'](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x181774['id'][_0x64bc('0x3d')](),_0x43b672)['field']('NOW()','createdAt')[_0x64bc('0x3a')]('NOW()','updatedAt')['from'](_0x64bc('0x3e'))['where'](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID['toString']())['where'](_0x64bc('0x42'))[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'))[_0x64bc('0x45')]('cm_hopper')['where'](_0x43b672+_0x64bc('0x46'),_0x181774['id'][_0x64bc('0x3d')]())))['toString']();return _0x45d120;};var _0x1ebe7a=function(_0x447dab,_0x327110){var _0x3741db=squel['insert']()[_0x64bc('0x47')](_0x64bc('0x35'))['fromQuery']([_0x64bc('0x3b'),_0x64bc('0x37'),'ContactId','ListId',_0x327110,'createdAt',_0x64bc('0x39')],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')]('phone','phone')[_0x64bc('0x3a')](_0x64bc('0x48'),'scheduledAt')[_0x64bc('0x3a')]('id','ContactId')[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),'ListId')[_0x64bc('0x3a')](_0x447dab['id'][_0x64bc('0x3d')](),_0x327110)[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x38'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x39'))[_0x64bc('0x45')](_0x64bc('0x3e'))[_0x64bc('0x40')](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID[_0x64bc('0x3d')]())[_0x64bc('0x40')](_0x64bc('0x49'),squel[_0x64bc('0x4a')](hopperContacts))[_0x64bc('0x40')]('phone\x20IS\x20NOT\x20NULL')[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x4b'))[_0x64bc('0x45')](_0x64bc('0x4c'))[_0x64bc('0x40')](_0x327110+_0x64bc('0x46'),_0x447dab['id'][_0x64bc('0x3d')]()))[_0x64bc('0x40')](_0x64bc('0x43'),squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'))[_0x64bc('0x45')]('cm_hopper')[_0x64bc('0x40')](_0x327110+_0x64bc('0x46'),_0x447dab['id'][_0x64bc('0x3d')]())))[_0x64bc('0x3d')]();return _0x3741db;};function _0x121978(_0x25d4de,_0x12337c){var _0x4e23ca=squel[_0x64bc('0x4d')]()[_0x64bc('0x47')](_0x64bc('0x35'))[_0x64bc('0x36')]([_0x64bc('0x3b'),_0x64bc('0x37'),_0x64bc('0x3c'),_0x64bc('0x27'),_0x12337c,_0x64bc('0x38'),'updatedAt'],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')](_0x64bc('0x3b'),_0x64bc('0x3b'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x37'))[_0x64bc('0x3a')]('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x25d4de['id'][_0x64bc('0x3d')](),_0x12337c)[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x38'))[_0x64bc('0x3a')](_0x64bc('0x48'),_0x64bc('0x39'))['from'](_0x64bc('0x3e'))[_0x64bc('0x40')](_0x64bc('0x3f'))[_0x64bc('0x40')](_0x64bc('0x41'),LISTID[_0x64bc('0x3d')]())[_0x64bc('0x40')]('id\x20IN\x20?',squel[_0x64bc('0x4a')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x64bc('0x3d')]();return _0x4e23ca;}function _0x1af8ea(_0x5b8f10,_0x4ee666){var _0x48ea18=squel[_0x64bc('0x4d')]()[_0x64bc('0x47')]('cm_hopper_black')[_0x64bc('0x36')](['phone',_0x64bc('0x3c'),_0x64bc('0x27'),_0x4ee666,_0x64bc('0x38'),_0x64bc('0x39')],squel[_0x64bc('0x44')]()[_0x64bc('0x3a')]('phone',_0x64bc('0x3b'))['field']('id',_0x64bc('0x3c'))[_0x64bc('0x3a')](LISTID[_0x64bc('0x3d')](),_0x64bc('0x27'))[_0x64bc('0x3a')](_0x5b8f10['id'][_0x64bc('0x3d')](),_0x4ee666)[_0x64bc('0x3a')]('NOW()',_0x64bc('0x38'))['field'](_0x64bc('0x48'),'updatedAt')[_0x64bc('0x45')](_0x64bc('0x3e'))['where'](_0x64bc('0x3f'))['where'](_0x64bc('0x41'),LISTID['toString']())[_0x64bc('0x40')](_0x64bc('0x49'),squel['str'](hopperContacts))['where'](_0x64bc('0x42')))['toString']();return _0x48ea18;}return db['VoiceQueue'][_0x64bc('0x4e')]({'where':{'type':_0x64bc('0x4f')},'attributes':['id',_0x64bc('0x50')],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x52'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0x510c3f){var _0x3e61a3=[];if(_0x510c3f){var _0x511e24;for(var _0x2a1138=0x0,_0x5d69e9;_0x2a1138<_0x510c3f['length'];_0x2a1138+=0x1){_0x5d69e9=_0x510c3f[_0x2a1138][_0x64bc('0x53')]({'plain':!![]});switch(_0x5d69e9['dialCheckDuplicateType']){case'always':_0x3e61a3[_0x64bc('0x2e')](db[_0x64bc('0x54')]['query'](_0x1ebe7a(_0x5d69e9,_0x64bc('0x55')))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;case _0x64bc('0x56'):_0x3e61a3['push'](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x468405(_0x5d69e9,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;default:_0x3e61a3[_0x64bc('0x2e')](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x121978(_0x5d69e9,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}}return _0x3e61a3;})[_0x64bc('0x58')]()[_0x64bc('0x2d')](function(){return db[_0x64bc('0x59')][_0x64bc('0x4e')]({'where':{'type':_0x64bc('0x4f')},'attributes':['id'],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x5a'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0xd2bb71){var _0x10b38f=[];if(_0xd2bb71){var _0x5f179b;for(var _0x203016=0x0,_0x560fe3;_0x203016<_0xd2bb71[_0x64bc('0x1a')];_0x203016+=0x1){_0x560fe3=_0xd2bb71[_0x203016][_0x64bc('0x53')]({'plain':!![]});_0x10b38f['push'](db[_0x64bc('0x54')]['query'](_0x1af8ea(_0x560fe3,'VoiceQueueId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}return _0x10b38f;})[_0x64bc('0x58')]();})[_0x64bc('0x2d')](function(){return db[_0x64bc('0x5b')][_0x64bc('0x4e')]({'attributes':['id',_0x64bc('0x50')],'include':[{'model':db[_0x64bc('0x51')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x4f5934){var _0xae9a22=[];if(_0x4f5934){for(var _0x1fcad9=0x0,_0x181d18;_0x1fcad9<_0x4f5934[_0x64bc('0x1a')];_0x1fcad9+=0x1){_0x181d18=_0x4f5934[_0x1fcad9][_0x64bc('0x53')]({'plain':!![]});switch(_0x181d18[_0x64bc('0x50')]){case'always':_0xae9a22[_0x64bc('0x2e')](db[_0x64bc('0x54')]['query'](_0x1ebe7a(_0x181d18,'CampaignId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;case'onlyIfOpen':_0xae9a22['push'](db[_0x64bc('0x54')][_0x64bc('0x57')](_0x468405(_0x181d18,'CampaignId'))['then'](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));break;default:_0xae9a22['push'](db[_0x64bc('0x54')]['query'](_0x121978(_0x181d18,_0x64bc('0x5c')))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}}return _0xae9a22;})[_0x64bc('0x58')]();})['then'](function(){return db[_0x64bc('0x5b')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x64bc('0x51')],'as':_0x64bc('0x5a'),'where':{'id':LISTID}}]})[_0x64bc('0x2d')](function(_0x16fc7f){var _0x5190d1=[];if(_0x16fc7f){for(var _0x211c7f=0x0,_0x24d4ee;_0x211c7f<_0x16fc7f[_0x64bc('0x1a')];_0x211c7f+=0x1){_0x24d4ee=_0x16fc7f[_0x211c7f]['get']({'plain':!![]});_0x5190d1['push'](db['sequelize'][_0x64bc('0x57')](_0x1af8ea(_0x24d4ee,'CampaignId'))[_0x64bc('0x2d')](function(){})[_0x64bc('0x2f')](_0x4a3b0c()));}}return _0x5190d1;})[_0x64bc('0x58')]();})[_0x64bc('0x2f')](function(_0x51abce){logger[_0x64bc('0x13')](_0x64bc('0x5d'),_0x64bc('0x5e'),_0x51abce[_0x64bc('0x1c')]);});}var processPromises=function(_0x65af0d){return BPromise[_0x64bc('0x58')](promises)['then'](function(_0x161698){})['catch'](function(_0x10c7ad){logger[_0x64bc('0x13')](_0x64bc('0x5f'),JSON[_0x64bc('0x31')](_0x10c7ad));})[_0x64bc('0x60')](function(){socket[_0x64bc('0x61')](_0x64bc('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x65af0d){return _0x65af0d['resume']();}});};var endCsv=function(){return BPromise[_0x64bc('0x63')]()[_0x64bc('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x64bc('0x2d')](function(){socket['emit'](_0x64bc('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x64bc('0x64')](FILEPATH);}catch(_0xce9cb7){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x64bc('0x31')](_0xce9cb7));}finally{process[_0x64bc('0x65')](0x0);}});};process['on'](_0x64bc('0x66'),function(){logger[_0x64bc('0x67')](_0x64bc('0x68'));endCsv();});function main(){return BPromise[_0x64bc('0x63')]()[_0x64bc('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x64bc('0x10')](',');return db['CmContact'][_0x64bc('0x4e')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x64bc('0x2d')](function(_0x50a353){var _0x565d82=fs[_0x64bc('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x64bc('0x6a')](_0x565d82,{'header':!![],'skipEmptyLines':!![],'step':function(_0x529c80,_0x11048e){total+=0x1;var _0x18bc0c=total;promises[_0x64bc('0x2e')](checkRow(_0x529c80,_0x50a353,_0x18bc0c)[_0x64bc('0x2d')](function(){success+=0x1;})[_0x64bc('0x2f')](function(_0x52950a){if(_0x52950a[_0x64bc('0x13')]){errors+=0x1;delete _0x52950a['error'];}else if(_0x52950a[_0x64bc('0x29')]){duplicates+=0x1;delete _0x52950a[_0x64bc('0x29')];}rows['push'](_0x52950a);}));if(total%0xc8===0x0){_0x11048e[_0x64bc('0x6b')]();return processPromises(_0x11048e);}},'complete':function(){return processPromises()[_0x64bc('0x2d')](function(){logger['info'](_0x64bc('0x6c'));endCsv();});},'error':function(_0x24ecc7,_0x4108d5){logger[_0x64bc('0x67')](_0x64bc('0x6d'),JSON[_0x64bc('0x31')](_0x24ecc7));endCsv();}});})['catch'](function(_0x1058d4){logger['error'](_0x64bc('0x6e'),JSON[_0x64bc('0x31')](_0x1058d4));});}main();
\ No newline at end of file
+var _0x2e73=['SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','api','redis','defaults','localhost','socket.io-emitter','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','index','test','isNil','error','errors','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','birthDate','YYYY-MM-DD','isValid','email','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','CmContact','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','fromQuery','scheduledAt','ContactId','updatedAt','select','field','NOW()','toString','createdAt','from','where','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','cm_hopper','into','cm_contacts','deletedAt\x20IS\x20NULL','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','insert','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','query','onlyIfOpen','VoiceQueueId','all','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit'];(function(_0x3f3d4a,_0x3ea89a){var _0x49879e=function(_0x21e330){while(--_0x21e330){_0x3f3d4a['push'](_0x3f3d4a['shift']());}};_0x49879e(++_0x3ea89a);}(_0x2e73,0x1d5));var _0x32e7=function(_0x57cc22,_0x2d351f){_0x57cc22=_0x57cc22-0x0;var _0x6f7bdc=_0x2e73[_0x57cc22];return _0x6f7bdc;};'use strict';var BPromise=require(_0x32e7('0x0'));var util=require(_0x32e7('0x1'));var _=require(_0x32e7('0x2'));var fs=require('fs');var squel=require(_0x32e7('0x3'));var Papa=require(_0x32e7('0x4'));var Redis=require(_0x32e7('0x5'));var db=require(_0x32e7('0x6'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x32e7('0x7'));config[_0x32e7('0x8')]=_[_0x32e7('0x9')](config[_0x32e7('0x8')],{'host':_0x32e7('0xa'),'port':0x18eb});var socket=require(_0x32e7('0xb'))(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0x32e7('0xc')](socket);try{if(!process[_0x32e7('0xd')][0x2]||process['argv'][0x2]===_0x32e7('0xe')||process[_0x32e7('0xd')][0x2]===_0x32e7('0xf')){throw new Error(_0x32e7('0x10'));}var FILEPATH=process[_0x32e7('0xd')][0x2];if(!process[_0x32e7('0xd')][0x3]||process[_0x32e7('0xd')][0x3]===_0x32e7('0xe')||process[_0x32e7('0xd')][0x3]===_0x32e7('0xf')||!process['argv'][0x4]||process[_0x32e7('0xd')][0x4]==='undefined'||process[_0x32e7('0xd')][0x4]===_0x32e7('0xf')){throw new Error(_0x32e7('0x11'));}var FIELDS=_[_0x32e7('0x12')](process[_0x32e7('0xd')][0x3][_0x32e7('0x13')](','),process[_0x32e7('0xd')][0x4][_0x32e7('0x13')](','));if(!process[_0x32e7('0xd')][0x5]||process['argv'][0x5]===_0x32e7('0xe')||process[_0x32e7('0xd')][0x5]===_0x32e7('0xf')){throw new Error(_0x32e7('0x14'));}var LISTID=process[_0x32e7('0xd')][0x5];var COMPANYID=process[_0x32e7('0xd')][0x6]&&process['argv'][0x6]!==_0x32e7('0xe')&&process[_0x32e7('0xd')][0x6]!==_0x32e7('0xf')?process[_0x32e7('0xd')][0x6]:null;var DUPLICATES=process[_0x32e7('0xd')][0x7]&&process[_0x32e7('0xd')][0x7]!=='undefined'&&process[_0x32e7('0xd')][0x7]!==_0x32e7('0xf')?process[_0x32e7('0xd')][0x7]:null;if(!process[_0x32e7('0xd')][0x8]||process[_0x32e7('0xd')][0x8]==='undefined'||process[_0x32e7('0xd')][0x8]===_0x32e7('0xf')){throw new Error(_0x32e7('0x15'));}var SOCKET_TIMESTAMP=process[_0x32e7('0xd')][0x8];}catch(_0x3e6c30){logger['error'](_0x3e6c30);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0xdbf3c2,_0x3d94e2,_0x5f41a6,_0x44d14e){var _0x202a9e={'message':_0x3d94e2};_0x202a9e[_0xdbf3c2]=!![];if(_0x5f41a6){_0x202a9e['contact']=_0x5f41a6;}if(_0x44d14e){_0x202a9e[_0x32e7('0x16')]=_0x44d14e;}return _0x202a9e;}function isEmail(_0x43756c){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x32e7('0x17')](_0x43756c);}function checkRow(_0x586dfc,_0x543271,_0x472dfc){return new BPromise(function(_0x3d0ad4,_0x48781a){if(_[_0x32e7('0x18')](_0x586dfc)){return _0x48781a(handleCheckRowError(_0x32e7('0x19'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x472dfc));}if(_0x586dfc[_0x32e7('0x1a')]&&_0x586dfc[_0x32e7('0x1a')]['length']){var _0x8d5661=_[_0x32e7('0x1b')](_0x586dfc[_0x32e7('0x1a')],_0x32e7('0x1c'))[_0x32e7('0x1d')](';');return _0x48781a(handleCheckRowError(_0x32e7('0x19'),_0x8d5661,null,_0x472dfc));}var _0x4e1466={};for(var _0x579590 in FIELDS){if(FIELDS[_0x32e7('0x1e')](_0x579590)&&FIELDS[_0x579590]){_0x4e1466[_0x579590]=_0x586dfc[_0x32e7('0x1f')][0x0][FIELDS[_0x579590]]||_0x586dfc['data'][0x0]['\ufeff'+FIELDS[_0x579590]];}}if(!_0x4e1466['firstName']){return _0x48781a(handleCheckRowError(_0x32e7('0x19'),_0x32e7('0x20'),null,_0x472dfc));}if(!_0x4e1466[_0x32e7('0x21')]){return _0x48781a(handleCheckRowError(_0x32e7('0x19'),'phone\x20not\x20specified!',null,_0x472dfc));}if(_0x4e1466[_0x32e7('0x22')]){var _0x545b1d=moment(_0x4e1466[_0x32e7('0x22')],_0x32e7('0x23'));if(!_0x545b1d[_0x32e7('0x24')]()){return _0x48781a(handleCheckRowError(_0x32e7('0x19'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x472dfc));}}if(_0x4e1466[_0x32e7('0x25')]){if(!isEmail(_0x4e1466[_0x32e7('0x25')])){return _0x48781a(handleCheckRowError('error','email\x20format\x20is\x20not\x20valid!',null,_0x472dfc));}}_0x4e1466[_0x32e7('0x26')]=LISTID;_0x4e1466[_0x32e7('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x32e7('0x28')]&&_0x543271){var _0x2b0b46={};for(var _0x4a841e=0x0,_0x2b87da=DUPLICATES[_0x32e7('0x28')];_0x4a841e<_0x2b87da;_0x4a841e+=0x1){_0x2b0b46[DUPLICATES[_0x4a841e]]=_0x4e1466[DUPLICATES[_0x4a841e]];}var _0x3efc07=_[_0x32e7('0x29')](_0x543271,_0x2b0b46);if(_0x3efc07){return _0x48781a(handleCheckRowError(_0x32e7('0x2a'),_0x32e7('0x2b'),_0x3efc07,_0x472dfc));}}return db[_0x32e7('0x2c')]['create'](_0x4e1466,{'raw':!![],'hooks':![],'fields':_[_0x32e7('0x2d')](_0x4e1466)})[_0x32e7('0x2e')](function(_0x2ea49d){if(DUPLICATES&&DUPLICATES[_0x32e7('0x28')]&&_0x543271){_0x543271[_0x32e7('0x2f')](_[_0x32e7('0x30')](_0x4e1466,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2ea49d['id'];return _0x3d0ad4();})[_0x32e7('0x31')](function(_0x2e1c6e){return _0x48781a(handleCheckRowError(_0x32e7('0x19'),_0x32e7('0x32')+(_0x2e1c6e[_0x32e7('0x1c')]||JSON[_0x32e7('0x33')](_0x2e1c6e)),null,_0x472dfc));});});}function checkHopper(){function _0x5bcf52(){return function(_0x3121ea){logger[_0x32e7('0x19')](_0x32e7('0x34'),_0x32e7('0x35'),util[_0x32e7('0x36')](_0x3121ea,{'showHidden':![],'depth':null}));};}var _0x617628=function(_0x38b27c,_0x4cc776){var _0x4200b4=squel['insert']()['into']('cm_hopper')[_0x32e7('0x37')]([_0x32e7('0x21'),_0x32e7('0x38'),_0x32e7('0x39'),_0x32e7('0x26'),_0x4cc776,'createdAt',_0x32e7('0x3a')],squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x21'),_0x32e7('0x21'))['field'](_0x32e7('0x3d'),_0x32e7('0x38'))[_0x32e7('0x3c')]('id',_0x32e7('0x39'))[_0x32e7('0x3c')](LISTID['toString'](),_0x32e7('0x26'))[_0x32e7('0x3c')](_0x38b27c['id'][_0x32e7('0x3e')](),_0x4cc776)[_0x32e7('0x3c')](_0x32e7('0x3d'),_0x32e7('0x3f'))[_0x32e7('0x3c')](_0x32e7('0x3d'),_0x32e7('0x3a'))[_0x32e7('0x40')]('cm_contacts')[_0x32e7('0x41')]('deletedAt\x20IS\x20NULL')[_0x32e7('0x41')](_0x32e7('0x42'),LISTID[_0x32e7('0x3e')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x32e7('0x41')](_0x32e7('0x43'),squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x21'))[_0x32e7('0x40')](_0x32e7('0x44'))['where'](_0x4cc776+'\x20=\x20?',_0x38b27c['id']['toString']())))[_0x32e7('0x3e')]();return _0x4200b4;};var _0x1bdef8=function(_0x2d1a17,_0x5e3f5d){var _0x86be52=squel['insert']()[_0x32e7('0x45')]('cm_hopper')[_0x32e7('0x37')]([_0x32e7('0x21'),'scheduledAt',_0x32e7('0x39'),'ListId',_0x5e3f5d,_0x32e7('0x3f'),_0x32e7('0x3a')],squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x21'),_0x32e7('0x21'))[_0x32e7('0x3c')]('NOW()',_0x32e7('0x38'))[_0x32e7('0x3c')]('id',_0x32e7('0x39'))[_0x32e7('0x3c')](LISTID[_0x32e7('0x3e')](),_0x32e7('0x26'))['field'](_0x2d1a17['id'][_0x32e7('0x3e')](),_0x5e3f5d)['field'](_0x32e7('0x3d'),_0x32e7('0x3f'))[_0x32e7('0x3c')](_0x32e7('0x3d'),'updatedAt')[_0x32e7('0x40')](_0x32e7('0x46'))[_0x32e7('0x41')](_0x32e7('0x47'))[_0x32e7('0x41')](_0x32e7('0x42'),LISTID[_0x32e7('0x3e')]())[_0x32e7('0x41')]('id\x20IN\x20?',squel[_0x32e7('0x48')](hopperContacts))[_0x32e7('0x41')](_0x32e7('0x49'))['where'](_0x32e7('0x43'),squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x4a'))[_0x32e7('0x40')](_0x32e7('0x4b'))['where'](_0x5e3f5d+_0x32e7('0x4c'),_0x2d1a17['id']['toString']()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x21'))[_0x32e7('0x40')](_0x32e7('0x44'))[_0x32e7('0x41')](_0x5e3f5d+_0x32e7('0x4c'),_0x2d1a17['id']['toString']())))[_0x32e7('0x3e')]();return _0x86be52;};function _0x2ad401(_0x15c347,_0x1221e6){var _0x3c440b=squel['insert']()[_0x32e7('0x45')](_0x32e7('0x44'))['fromQuery'](['phone',_0x32e7('0x38'),_0x32e7('0x39'),_0x32e7('0x26'),_0x1221e6,'createdAt',_0x32e7('0x3a')],squel[_0x32e7('0x3b')]()['field'](_0x32e7('0x21'),_0x32e7('0x21'))[_0x32e7('0x3c')](_0x32e7('0x3d'),_0x32e7('0x38'))[_0x32e7('0x3c')]('id',_0x32e7('0x39'))[_0x32e7('0x3c')](LISTID[_0x32e7('0x3e')](),'ListId')['field'](_0x15c347['id'][_0x32e7('0x3e')](),_0x1221e6)[_0x32e7('0x3c')](_0x32e7('0x3d'),'createdAt')[_0x32e7('0x3c')]('NOW()',_0x32e7('0x3a'))[_0x32e7('0x40')](_0x32e7('0x46'))[_0x32e7('0x41')](_0x32e7('0x47'))[_0x32e7('0x41')](_0x32e7('0x42'),LISTID[_0x32e7('0x3e')]())[_0x32e7('0x41')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x32e7('0x41')](_0x32e7('0x49')))[_0x32e7('0x3e')]();return _0x3c440b;}function _0x19423e(_0x54b831,_0x263629){var _0x58661e=squel[_0x32e7('0x4d')]()['into'](_0x32e7('0x4e'))[_0x32e7('0x37')]([_0x32e7('0x21'),'ContactId','ListId',_0x263629,_0x32e7('0x3f'),_0x32e7('0x3a')],squel[_0x32e7('0x3b')]()[_0x32e7('0x3c')](_0x32e7('0x21'),_0x32e7('0x21'))[_0x32e7('0x3c')]('id','ContactId')['field'](LISTID[_0x32e7('0x3e')](),_0x32e7('0x26'))[_0x32e7('0x3c')](_0x54b831['id'][_0x32e7('0x3e')](),_0x263629)['field'](_0x32e7('0x3d'),_0x32e7('0x3f'))[_0x32e7('0x3c')]('NOW()',_0x32e7('0x3a'))[_0x32e7('0x40')]('cm_contacts')[_0x32e7('0x41')](_0x32e7('0x47'))['where'](_0x32e7('0x42'),LISTID[_0x32e7('0x3e')]())[_0x32e7('0x41')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x32e7('0x41')](_0x32e7('0x49')))[_0x32e7('0x3e')]();return _0x58661e;}return db[_0x32e7('0x4f')][_0x32e7('0x50')]({'where':{'type':_0x32e7('0x51')},'attributes':['id',_0x32e7('0x52')],'include':[{'model':db[_0x32e7('0x53')],'as':_0x32e7('0x54'),'where':{'id':LISTID}}]})[_0x32e7('0x2e')](function(_0x1cf797){var _0xe7a018=[];if(_0x1cf797){var _0x18c60a;for(var _0x468005=0x0,_0x50d1a4;_0x468005<_0x1cf797[_0x32e7('0x28')];_0x468005+=0x1){_0x50d1a4=_0x1cf797[_0x468005][_0x32e7('0x55')]({'plain':!![]});switch(_0x50d1a4[_0x32e7('0x52')]){case _0x32e7('0x56'):_0xe7a018[_0x32e7('0x2f')](db[_0x32e7('0x57')][_0x32e7('0x58')](_0x1bdef8(_0x50d1a4,'VoiceQueueId'))[_0x32e7('0x2e')](function(){})[_0x32e7('0x31')](_0x5bcf52()));break;case _0x32e7('0x59'):_0xe7a018[_0x32e7('0x2f')](db[_0x32e7('0x57')][_0x32e7('0x58')](_0x617628(_0x50d1a4,_0x32e7('0x5a')))['then'](function(){})['catch'](_0x5bcf52()));break;default:_0xe7a018[_0x32e7('0x2f')](db[_0x32e7('0x57')][_0x32e7('0x58')](_0x2ad401(_0x50d1a4,_0x32e7('0x5a')))[_0x32e7('0x2e')](function(){})[_0x32e7('0x31')](_0x5bcf52()));}}}return _0xe7a018;})[_0x32e7('0x5b')]()['then'](function(){return db[_0x32e7('0x4f')][_0x32e7('0x50')]({'where':{'type':_0x32e7('0x51')},'attributes':['id'],'include':[{'model':db[_0x32e7('0x53')],'as':_0x32e7('0x5c'),'where':{'id':LISTID}}]})[_0x32e7('0x2e')](function(_0x26fb28){var _0x5ec81a=[];if(_0x26fb28){var _0x54aad0;for(var _0x41e866=0x0,_0x497f48;_0x41e866<_0x26fb28[_0x32e7('0x28')];_0x41e866+=0x1){_0x497f48=_0x26fb28[_0x41e866][_0x32e7('0x55')]({'plain':!![]});_0x5ec81a[_0x32e7('0x2f')](db[_0x32e7('0x57')][_0x32e7('0x58')](_0x19423e(_0x497f48,_0x32e7('0x5a')))[_0x32e7('0x2e')](function(){})['catch'](_0x5bcf52()));}}return _0x5ec81a;})[_0x32e7('0x5b')]();})[_0x32e7('0x2e')](function(){return db[_0x32e7('0x5d')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x32e7('0x54'),'where':{'id':LISTID}}]})['then'](function(_0x410be6){var _0x2338f0=[];if(_0x410be6){for(var _0x4b0658=0x0,_0xe1959;_0x4b0658<_0x410be6[_0x32e7('0x28')];_0x4b0658+=0x1){_0xe1959=_0x410be6[_0x4b0658][_0x32e7('0x55')]({'plain':!![]});switch(_0xe1959[_0x32e7('0x52')]){case'always':_0x2338f0['push'](db['sequelize'][_0x32e7('0x58')](_0x1bdef8(_0xe1959,_0x32e7('0x5e')))[_0x32e7('0x2e')](function(){})[_0x32e7('0x31')](_0x5bcf52()));break;case _0x32e7('0x59'):_0x2338f0['push'](db[_0x32e7('0x57')]['query'](_0x617628(_0xe1959,_0x32e7('0x5e')))[_0x32e7('0x2e')](function(){})[_0x32e7('0x31')](_0x5bcf52()));break;default:_0x2338f0[_0x32e7('0x2f')](db[_0x32e7('0x57')][_0x32e7('0x58')](_0x2ad401(_0xe1959,_0x32e7('0x5e')))[_0x32e7('0x2e')](function(){})['catch'](_0x5bcf52()));}}}return _0x2338f0;})[_0x32e7('0x5b')]();})[_0x32e7('0x2e')](function(){return db[_0x32e7('0x5d')][_0x32e7('0x50')]({'attributes':['id'],'include':[{'model':db[_0x32e7('0x53')],'as':_0x32e7('0x5c'),'where':{'id':LISTID}}]})[_0x32e7('0x2e')](function(_0x17b5bb){var _0x4d2d6a=[];if(_0x17b5bb){for(var _0x14ea01=0x0,_0x5213ed;_0x14ea01<_0x17b5bb['length'];_0x14ea01+=0x1){_0x5213ed=_0x17b5bb[_0x14ea01][_0x32e7('0x55')]({'plain':!![]});_0x4d2d6a[_0x32e7('0x2f')](db[_0x32e7('0x57')]['query'](_0x19423e(_0x5213ed,_0x32e7('0x5e')))[_0x32e7('0x2e')](function(){})['catch'](_0x5bcf52()));}}return _0x4d2d6a;})['all']();})[_0x32e7('0x31')](function(_0x30757b){logger[_0x32e7('0x19')](_0x32e7('0x5f'),_0x32e7('0x60'),_0x30757b['message']);});}var processPromises=function(_0x1c6b50){return BPromise[_0x32e7('0x5b')](promises)[_0x32e7('0x2e')](function(_0x65838f){})[_0x32e7('0x31')](function(_0x4c354c){logger[_0x32e7('0x19')](_0x32e7('0x61'),JSON['stringify'](_0x4c354c));})[_0x32e7('0x62')](function(){socket[_0x32e7('0x63')](_0x32e7('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1c6b50){return _0x1c6b50[_0x32e7('0x65')]();}});};var endCsv=function(){return BPromise[_0x32e7('0x66')]()[_0x32e7('0x2e')](function(){if(hopperContacts){return checkHopper();}})[_0x32e7('0x2e')](function(){socket[_0x32e7('0x63')](_0x32e7('0x64')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x32e7('0x67')](FILEPATH);}catch(_0x3185c0){logger[_0x32e7('0x19')](_0x32e7('0x68'),JSON[_0x32e7('0x33')](_0x3185c0));}finally{process[_0x32e7('0x69')](0x0);}});};process['on'](_0x32e7('0x6a'),function(){logger[_0x32e7('0x6b')](_0x32e7('0x6c'));endCsv();});function main(){return BPromise[_0x32e7('0x66')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x32e7('0x2c')][_0x32e7('0x50')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x33c3b3){var _0x1256af=fs[_0x32e7('0x6d')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x32e7('0x6e')](_0x1256af,{'header':!![],'skipEmptyLines':!![],'step':function(_0x11e99e,_0x134b89){total+=0x1;var _0x746786=total;promises[_0x32e7('0x2f')](checkRow(_0x11e99e,_0x33c3b3,_0x746786)[_0x32e7('0x2e')](function(){success+=0x1;})[_0x32e7('0x31')](function(_0x1b8981){if(_0x1b8981[_0x32e7('0x19')]){errors+=0x1;delete _0x1b8981[_0x32e7('0x19')];}else if(_0x1b8981[_0x32e7('0x2a')]){duplicates+=0x1;delete _0x1b8981['duplicate'];}rows[_0x32e7('0x2f')](_0x1b8981);}));if(total%0xc8===0x0){_0x134b89[_0x32e7('0x6f')]();return processPromises(_0x134b89);}},'complete':function(){return processPromises()['then'](function(){logger[_0x32e7('0x6b')](_0x32e7('0x70'));endCsv();});},'error':function(_0xc8e3fb,_0x55281d){logger['info'](_0x32e7('0x71'),JSON[_0x32e7('0x33')](_0xc8e3fb));endCsv();}});})[_0x32e7('0x31')](function(_0x39b233){logger['error'](_0x32e7('0x72'),JSON['stringify'](_0x39b233));});}main();
\ No newline at end of file
index 1072cb8..70f758e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b68=['LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','exit','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','squel','ioredis','../../../config/environment','../../../config/logger','import','defaults','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','.id\x20=\x20','join','cm_contacts.scheduledat','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','scheduledat','ContactId','ListId','createdAt','updatedAt','recallme','fields','cm_contacts','where','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_hopper_black','fromQuery','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','\x20=\x20?','toString','concat','keys','CompanyId','into',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','group','info','error','message','errors','push','code','spread','catch','main','stringify','send','start','binding','socket_timestamp','root','.csv','header','parse','createReadStream','data','length','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','UserId','isNumber','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;'];(function(_0x197afd,_0x550768){var _0x28480b=function(_0x1ab1f5){while(--_0x1ab1f5){_0x197afd['push'](_0x197afd['shift']());}};_0x28480b(++_0x550768);}(_0x0b68,0xa2));var _0x80b6=function(_0x43b532,_0x68a536){_0x43b532=_0x43b532-0x0;var _0x31e0c1=_0x0b68[_0x43b532];return _0x31e0c1;};'use strict';var fs=require('fs');var path=require(_0x80b6('0x0'));var _=require(_0x80b6('0x1'));var Papa=require(_0x80b6('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require('moment');var squel=require(_0x80b6('0x3'));var Redis=require(_0x80b6('0x4'));var db=require('../../../mysqldb')['db'];var config=require(_0x80b6('0x5'));var logger=require(_0x80b6('0x6'))(_0x80b6('0x7'));config['redis']=_[_0x80b6('0x8')](config[_0x80b6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x80b6('0xa'))(new Redis(config[_0x80b6('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x80b6('0xb')](_0x80b6('0xc'));function isEmail(_0x16f1ff){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x80b6('0xd')](_0x16f1ff);}function selectNotIn(_0x42b054,_0x44c8bf,_0x25b392,_0x3c9e9c,_0x5232fc){return squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x10'))[_0x80b6('0x11')](_0x3c9e9c)['join'](_0x44c8bf,null,_0x44c8bf+_0x80b6('0x12')+_0x3c9e9c+'.'+_0x25b392)['where'](_0x3c9e9c+'.'+_0x25b392+'\x20=\x20'+_0x42b054+'.'+_0x25b392)['where'](_0x44c8bf+'.dialCheckDuplicateType\x20IN\x20('+_0x5232fc[_0x80b6('0x13')]()+')');}function insertCmHopper(_0x1a2ab0,_0x138dca,_0xe11c83,_0x3cb929,_0x16707a){var _0x1f5a3b=['cm_contacts.phone',_0x80b6('0x14'),'cm_contacts.id','cm_contacts.ListId',_0x138dca+'.'+_0x3cb929,'cm_contacts.createdAt','cm_contacts.updatedAt',_0x80b6('0x15'),_0x80b6('0x16'),'\x22'+_0x16707a+'\x22'];return squel[_0x80b6('0x17')]()['into'](_0x80b6('0x18'))['fromQuery'](['phone',_0x80b6('0x19'),_0x80b6('0x1a'),_0x80b6('0x1b'),_0x3cb929,_0x80b6('0x1c'),_0x80b6('0x1d'),'priority','UserId',_0x80b6('0x1e')],squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x1f5a3b)[_0x80b6('0x11')](_0x138dca)[_0x80b6('0x13')](_0x80b6('0x20'),null,'cm_contacts.ListId\x20=\x20'+_0x138dca+'.CmListId')[_0x80b6('0x13')](_0xe11c83,null,_0xe11c83+_0x80b6('0x12')+_0x138dca+'.'+_0x3cb929)['where'](_0x138dca+'.CmListId\x20=\x20?',_0x1a2ab0)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x80b6('0x21')](_0x80b6('0x22'),selectNotIn(_0x138dca,_0xe11c83,_0x3cb929,_0x80b6('0x18'),[_0x80b6('0x23'),_0x80b6('0x24')]))['where'](_0x80b6('0x22'),selectNotIn(_0x138dca,_0xe11c83,_0x3cb929,_0x80b6('0x18'),[_0x80b6('0x23')])))['toString']();}function insertCmHopperBlack(_0x3501ca,_0x5a6ded,_0x564edb,_0x58bc34){var _0x3d29d7=[_0x80b6('0x25'),'cm_contacts.id',_0x80b6('0x26'),_0x5a6ded+'.'+_0x58bc34,_0x80b6('0x27'),_0x80b6('0x28')];return squel[_0x80b6('0x17')]()['into'](_0x80b6('0x29'))[_0x80b6('0x2a')]([_0x80b6('0x10'),_0x80b6('0x1a'),_0x80b6('0x1b'),_0x58bc34,_0x80b6('0x1c'),_0x80b6('0x1d')],squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x3d29d7)['from'](_0x5a6ded)[_0x80b6('0x13')](_0x80b6('0x20'),null,'cm_contacts.ListId\x20=\x20'+_0x5a6ded+_0x80b6('0x2b'))['join'](_0x564edb,null,_0x564edb+_0x80b6('0x12')+_0x5a6ded+'.'+_0x58bc34)['where'](_0x5a6ded+_0x80b6('0x2c'),_0x3501ca)[_0x80b6('0x21')](_0x80b6('0x2d'),NOW)['where'](_0x80b6('0x22'),squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x10'))['from']('cm_hopper_black')[_0x80b6('0x21')]('ListId\x20=\x20?',_0x3501ca)['where'](_0x58bc34+_0x80b6('0x2e'),_0x5a6ded+'.'+_0x58bc34)))[_0x80b6('0x2f')]();}function insertCmContact(_0xc6d7dc,_0x48df5a,_0x184d94,_0x3e5436){var _0x5319a0=_[_0x80b6('0x30')](_[_0x80b6('0x31')](_0x3e5436),[_0x80b6('0x1b'),_0x80b6('0x32'),_0x80b6('0x1c'),_0x80b6('0x1d')]);return squel[_0x80b6('0x17')]()[_0x80b6('0x33')](_0x80b6('0x20'))[_0x80b6('0x2a')](_0x5319a0,squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x5319a0)[_0x80b6('0x11')](_0x48df5a)[_0x80b6('0x21')]('('+_0x184d94[_0x80b6('0x13')](',')+_0x80b6('0x34'),squel[_0x80b6('0xe')]()[_0x80b6('0x1f')](_0x184d94)[_0x80b6('0x11')]('cm_contacts')[_0x80b6('0x21')](_0x80b6('0x35'),_0xc6d7dc)['where'](_0x80b6('0x36')))[_0x80b6('0x21')](_0x80b6('0x37'),squel[_0x80b6('0xe')]()[_0x80b6('0xf')](_0x80b6('0x38'),'min_id')[_0x80b6('0x11')](_0x48df5a)[_0x80b6('0x39')](_0x184d94[_0x80b6('0x13')](','))))[_0x80b6('0x2f')]();}function handleStop(){logger[_0x80b6('0x3a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x9c406e){logger[_0x80b6('0x3b')](_0x9c406e[_0x80b6('0x3c')]);process['exit'](0x1);}function handleError(_0x508224,_0x2f2c24){stats[_0x80b6('0x3d')][_0x80b6('0x3e')]({'name':_0x2f2c24[_0x80b6('0x3f')],'message':_0x2f2c24['message'],'row':_0x508224});}function handleQuery(_0x35c1e1){logger[_0x80b6('0x3a')](_0x35c1e1);return db['sequelize']['query'](_0x35c1e1)[_0x80b6('0x40')](function(_0x3772c5){results[_0x80b6('0x3e')](_0x3772c5);})[_0x80b6('0x41')](function(_0x36ac64){logger['error'](_0x36ac64[_0x80b6('0x3c')]);});}function main(_0x421470,_0xc6491b,_0x32ef97,_0x508449){logger[_0x80b6('0x3a')](_0x80b6('0x42'),_0x421470,JSON[_0x80b6('0x43')](_0xc6491b));process[_0x80b6('0x44')](_0x80b6('0x45'));var _0x4ac116=_0xc6491b[_0x80b6('0x46')];var _0x27648c=_0xc6491b[_0x80b6('0x47')];var _0x159cc9=path['join'](config[_0x80b6('0x48')],'server/files/tmp',_0x27648c+_0x80b6('0x49'));var _0x5a9cdb=_[_0x80b6('0x31')](_0x4ac116)[_0x80b6('0x13')]();logger[_0x80b6('0x3a')](_0x80b6('0x4a'),_0x5a9cdb);fs['writeFileSync'](_0x159cc9,_0x5a9cdb+'\x0a');Papa[_0x80b6('0x4b')](fs[_0x80b6('0x4c')](_0x421470),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3c8ec4,_0x15ae5f){try{for(var _0x1996cc=0x0,_0xa6250a=[];_0x1996cc<_0x3c8ec4[_0x80b6('0x4d')][_0x80b6('0x4e')];_0x1996cc++){stats['rows']+=0x1;if(_0x3c8ec4[_0x80b6('0x3d')][_0x1996cc]){handleError(_0x3c8ec4['data'][_0x1996cc],_0x3c8ec4[_0x80b6('0x3d')][_0x1996cc]);}else{var _0x66b83a=[];for(var _0x333aa7 in _0x4ac116){if(_0x4ac116['hasOwnProperty'](_0x333aa7)){if(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc][_0x4ac116[_0x333aa7]]){var _0x4ef343=_['trim'](_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc][_0x4ac116[_0x333aa7]][_0x80b6('0x4f')](/"/g,'\x27'));switch(_0x333aa7){case _0x80b6('0x19'):var _0x4dc05b=moment(_0x4ef343,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x4dc05b[_0x80b6('0x50')]()){_0xa6250a['push']('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x51'));}break;case _0x80b6('0x52'):var _0x1e03e7=parseInt(_0x4ef343);_0x4ef343=_[_0x80b6('0x53')](_0x1e03e7)||_0x1e03e7<0x0||_0x1e03e7>0x4?_0x508449?0x3:0x2:_0x1e03e7;_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');break;case _0x80b6('0x54'):var _0x2fd21a=parseInt(_0x4ef343);if(_[_0x80b6('0x55')](_0x2fd21a)&&_['includes'](_0x32ef97,_0x2fd21a)){_0xa6250a['push']('\x22'+_0x2fd21a+'\x22');}else{_0x66b83a['push']('agent\x20not\x20exists');}break;case _0x80b6('0x56'):if(isEmail(_0x4ef343)){_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x57'));}break;case _0x80b6('0x58'):var _0x9fcd7d=moment(_0x4ef343,'YYYY-MM-DD',!![]);if(_0x9fcd7d[_0x80b6('0x50')]()){_0xa6250a[_0x80b6('0x3e')]('\x22'+_0x4ef343+'\x22');}else{_0x66b83a[_0x80b6('0x3e')](_0x80b6('0x59'));}break;default:_0xa6250a['push']('\x22'+_0x4ef343+'\x22');}}else{switch(_0x333aa7){case'firstName':case _0x80b6('0x10'):_0x66b83a[_0x80b6('0x3e')](_0x333aa7+_0x80b6('0x5a'));break;default:_0xa6250a[_0x80b6('0x3e')]('\x22\x22');}}}}if(_0x66b83a[_0x80b6('0x4e')]){handleError(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc],{'code':_0x80b6('0x5b'),'message':_0x66b83a['join']()});}else{fs[_0x80b6('0x5c')](_0x159cc9,_0xa6250a['join']()+'\x0a');}_0xa6250a=[];}if(!(stats[_0x80b6('0x5d')]%0xc8)){socket[_0x80b6('0x5e')](_0x80b6('0x5f')+_0x27648c,stats);stats[_0x80b6('0x3d')]=[];}}if(stopped){logger[_0x80b6('0x3a')](_0x80b6('0x60'));_0x15ae5f[_0x80b6('0x61')]();}}catch(_0x3381ea){handleError(_0x3c8ec4[_0x80b6('0x4d')][_0x1996cc],{'code':_0x80b6('0x62'),'message':_0x3381ea[_0x80b6('0x3c')]});logger['error'](_0x80b6('0x63'),_0x3381ea[_0x80b6('0x3c')]);}},'complete':function(){try{var _0x3f41f5=[];var _0x3fe693=_0x80b6('0x20');if(_0xc6491b[_0x80b6('0x64')]&&_0xc6491b[_0x80b6('0x64')][_0x80b6('0x4e')]){_0x3fe693=_0x80b6('0x65')+_0x27648c;_0x3f41f5[_0x80b6('0x3e')](_0x80b6('0x66')+_0x3fe693+_0x80b6('0x67'));}var _0x13a016=util['format'](_0x80b6('0x68'),_0x159cc9,_0x3fe693,_0x5a9cdb,_0xc6491b[_0x80b6('0x1b')],_0xc6491b['CompanyId']||null,NOW,NOW);if(_[_0x80b6('0x69')](_0x4ac116[_0x80b6('0x19')])){_0x13a016+=_0x80b6('0x6a');}_0x3f41f5['push'](_0x13a016);if(_0xc6491b[_0x80b6('0x64')]&&_0xc6491b['duplicates'][_0x80b6('0x4e')]){_0x3f41f5[_0x80b6('0x3e')](insertCmContact(_0xc6491b[_0x80b6('0x1b')],_0x3fe693,_0xc6491b['duplicates'],_0x4ac116));_0x3f41f5['push'](_0x80b6('0x6b')+_0x3fe693+';');}_0x3f41f5[_0x80b6('0x3e')](insertCmHopper(_0xc6491b[_0x80b6('0x1b')],_0x80b6('0x6c'),_0x80b6('0x6d'),_0x80b6('0x6e'),_0x508449));_0x3f41f5[_0x80b6('0x3e')](insertCmHopperBlack(_0xc6491b[_0x80b6('0x1b')],'voice_queues_has_cm_blacklists',_0x80b6('0x6d'),_0x80b6('0x6e')));_0x3f41f5[_0x80b6('0x3e')](insertCmHopper(_0xc6491b[_0x80b6('0x1b')],_0x80b6('0x6f'),_0x80b6('0x70'),_0x80b6('0x71'),_0x508449));_0x3f41f5[_0x80b6('0x3e')](insertCmHopperBlack(_0xc6491b['ListId'],_0x80b6('0x72'),_0x80b6('0x70'),_0x80b6('0x71')));BPromise[_0x80b6('0x73')](_0x3f41f5,handleQuery)[_0x80b6('0x74')](function(_0x4651b5){stats['finish']=!![];stats[_0x80b6('0x75')]=_0xc6491b['duplicates']&&_0xc6491b[_0x80b6('0x64')][_0x80b6('0x4e')]?results[0x2][_0x80b6('0x75')]:results[0x0][_0x80b6('0x75')];socket[_0x80b6('0x5e')](_0x80b6('0x5f')+_0x27648c,stats);fs['unlink'](_0x421470);fs[_0x80b6('0x76')](_0x159cc9);process['exit'](0x0);})[_0x80b6('0x41')](function(_0x2c7d7a){logger[_0x80b6('0x3b')](_0x2c7d7a['message']);process[_0x80b6('0x77')](0x1);});}catch(_0x48b820){logger[_0x80b6('0x3b')]('complete',_0x48b820[_0x80b6('0x3c')]);process[_0x80b6('0x77')](0x1);}},'error':function(_0x3a7b88,_0x1430ed,_0x2fe0cc,_0x6ab90){throw new Error(_0x6ab90);}});}function validate(){if(process[_0x80b6('0x78')]&&process[_0x80b6('0x78')]['length']<0x4){throw new Error(_0x80b6('0x79'));}var _0x58c304=path['join'](config[_0x80b6('0x48')],_0x80b6('0x7a'),process[_0x80b6('0x78')][0x2]);if(!fs['existsSync'](_0x58c304)){throw new Error(_0x80b6('0x7b'));}var _0x4338d0={};try{_0x4338d0=JSON[_0x80b6('0x4b')](process['argv'][0x3]);if(!_0x4338d0[_0x80b6('0x46')]){throw new Error(_0x80b6('0x7c'));}if(!_0x4338d0[_0x80b6('0x46')][_0x80b6('0x10')]){throw new Error(_0x80b6('0x7d'));}if(!_0x4338d0[_0x80b6('0x46')][_0x80b6('0x7e')]){throw new Error(_0x80b6('0x7f'));}var _0x106860=0x0;if(_0x4338d0[_0x80b6('0x46')][_0x80b6('0x54')]){_0x106860=0x1;}if(!_0x4338d0[_0x80b6('0x1b')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x53ce85){throw new Error(_0x80b6('0x80'));}var _0x222b69=[];try{_0x222b69=_[_0x80b6('0x81')](JSON[_0x80b6('0x4b')](process[_0x80b6('0x78')][0x4]),'id');}catch(_0x4ce714){logger[_0x80b6('0x3a')](_0x80b6('0x82'));}main(_0x58c304,_0x4338d0,_0x222b69,_0x106860);}validate();process['on'](_0x80b6('0x83'),handleStop);process['on'](_0x80b6('0x84'),handleUncaughtException);
\ No newline at end of file
+var _0x3bb8=['CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','then','finish','affectedRows','emit','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','parse','No\x20agent\x20available','SIGINT','uncaughtException','lodash','util','moment','ioredis','../../../config/environment','../../../config/logger','import','redis','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','fromQuery','ContactId','createdAt','updatedAt','priority','UserId','recallme','select','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.id','cm_hopper_black','\x20=\x20?','concat','ListId','CompanyId','into','cm_contacts',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','group','info','error','message','exit','push','code','sequelize','query','spread','catch','main','send','start','server/files/tmp','.csv','writeFileSync','data','length','errors','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','rows','contact:import:','SystemError','step','duplicates','cm_contacts_'];(function(_0x4d34c2,_0x2348ea){var _0x2894d4=function(_0x457bb){while(--_0x457bb){_0x4d34c2['push'](_0x4d34c2['shift']());}};_0x2894d4(++_0x2348ea);}(_0x3bb8,0xa0));var _0x83bb=function(_0x57c3a2,_0xf75938){_0x57c3a2=_0x57c3a2-0x0;var _0x5b572f=_0x3bb8[_0x57c3a2];return _0x5b572f;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x83bb('0x0'));var Papa=require('papaparse');var util=require(_0x83bb('0x1'));var BPromise=require('bluebird');var moment=require(_0x83bb('0x2'));var squel=require('squel');var Redis=require(_0x83bb('0x3'));var db=require('../../../mysqldb')['db'];var config=require(_0x83bb('0x4'));var logger=require(_0x83bb('0x5'))(_0x83bb('0x6'));config[_0x83bb('0x7')]=_['defaults'](config[_0x83bb('0x7')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x83bb('0x8')](_0x83bb('0x9'));function isEmail(_0x54d175){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x83bb('0xa')](_0x54d175);}function selectNotIn(_0xa8cb25,_0x2fe5c2,_0x385ce4,_0x2dbdd4,_0x51380b){return squel['select']()[_0x83bb('0xb')](_0x83bb('0xc'))[_0x83bb('0xd')](_0x2dbdd4)['join'](_0x2fe5c2,null,_0x2fe5c2+_0x83bb('0xe')+_0x2dbdd4+'.'+_0x385ce4)['where'](_0x2dbdd4+'.'+_0x385ce4+_0x83bb('0xf')+_0xa8cb25+'.'+_0x385ce4)[_0x83bb('0x10')](_0x2fe5c2+_0x83bb('0x11')+_0x51380b[_0x83bb('0x12')]()+')');}function insertCmHopper(_0x2a12cd,_0x119ff1,_0x1b6468,_0x2b2029,_0x40dfe3){var _0x5b522a=['cm_contacts.phone',_0x83bb('0x13'),'cm_contacts.id',_0x83bb('0x14'),_0x119ff1+'.'+_0x2b2029,_0x83bb('0x15'),_0x83bb('0x16'),_0x83bb('0x17'),_0x83bb('0x18'),'\x22'+_0x40dfe3+'\x22'];return squel[_0x83bb('0x19')]()['into']('cm_hopper')[_0x83bb('0x1a')]([_0x83bb('0xc'),'scheduledat',_0x83bb('0x1b'),'ListId',_0x2b2029,_0x83bb('0x1c'),_0x83bb('0x1d'),_0x83bb('0x1e'),_0x83bb('0x1f'),_0x83bb('0x20')],squel[_0x83bb('0x21')]()[_0x83bb('0x22')](_0x5b522a)[_0x83bb('0xd')](_0x119ff1)[_0x83bb('0x12')]('cm_contacts',null,_0x83bb('0x23')+_0x119ff1+_0x83bb('0x24'))['join'](_0x1b6468,null,_0x1b6468+_0x83bb('0xe')+_0x119ff1+'.'+_0x2b2029)[_0x83bb('0x10')](_0x119ff1+_0x83bb('0x25'),_0x2a12cd)[_0x83bb('0x10')](_0x83bb('0x26'),NOW)['where'](_0x83bb('0x27'),selectNotIn(_0x119ff1,_0x1b6468,_0x2b2029,_0x83bb('0x28'),[_0x83bb('0x29'),_0x83bb('0x2a')]))[_0x83bb('0x10')](_0x83bb('0x27'),selectNotIn(_0x119ff1,_0x1b6468,_0x2b2029,'cm_hopper',['\x22always\x22'])))[_0x83bb('0x2b')]();}function insertCmHopperBlack(_0x498493,_0x5e4f7d,_0x269f27,_0x50221a){var _0x51abf7=['cm_contacts.phone',_0x83bb('0x2c'),_0x83bb('0x14'),_0x5e4f7d+'.'+_0x50221a,_0x83bb('0x15'),_0x83bb('0x16')];return squel['insert']()['into'](_0x83bb('0x2d'))['fromQuery']([_0x83bb('0xc'),'ContactId','ListId',_0x50221a,_0x83bb('0x1c'),_0x83bb('0x1d')],squel[_0x83bb('0x21')]()['fields'](_0x51abf7)['from'](_0x5e4f7d)[_0x83bb('0x12')]('cm_contacts',null,_0x83bb('0x23')+_0x5e4f7d+'.CmListId')[_0x83bb('0x12')](_0x269f27,null,_0x269f27+_0x83bb('0xe')+_0x5e4f7d+'.'+_0x50221a)[_0x83bb('0x10')](_0x5e4f7d+_0x83bb('0x25'),_0x498493)[_0x83bb('0x10')](_0x83bb('0x26'),NOW)[_0x83bb('0x10')](_0x83bb('0x27'),squel[_0x83bb('0x21')]()['field'](_0x83bb('0xc'))[_0x83bb('0xd')](_0x83bb('0x2d'))[_0x83bb('0x10')]('ListId\x20=\x20?',_0x498493)[_0x83bb('0x10')](_0x50221a+_0x83bb('0x2e'),_0x5e4f7d+'.'+_0x50221a)))[_0x83bb('0x2b')]();}function insertCmContact(_0x219690,_0x272039,_0xc04172,_0x256250){var _0x45c3fe=_[_0x83bb('0x2f')](_['keys'](_0x256250),[_0x83bb('0x30'),_0x83bb('0x31'),_0x83bb('0x1c'),'updatedAt']);return squel[_0x83bb('0x19')]()[_0x83bb('0x32')](_0x83bb('0x33'))[_0x83bb('0x1a')](_0x45c3fe,squel[_0x83bb('0x21')]()[_0x83bb('0x22')](_0x45c3fe)[_0x83bb('0xd')](_0x272039)[_0x83bb('0x10')]('('+_0xc04172[_0x83bb('0x12')](',')+_0x83bb('0x34'),squel[_0x83bb('0x21')]()[_0x83bb('0x22')](_0xc04172)['from'](_0x83bb('0x33'))[_0x83bb('0x10')]('ListId\x20=\x20?',_0x219690)[_0x83bb('0x10')](_0x83bb('0x35')))[_0x83bb('0x10')]('id\x20IN\x20?',squel[_0x83bb('0x21')]()['field'](_0x83bb('0x36'),_0x83bb('0x37'))[_0x83bb('0xd')](_0x272039)[_0x83bb('0x38')](_0xc04172['join'](','))))[_0x83bb('0x2b')]();}function handleStop(){logger[_0x83bb('0x39')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x2f3c37){logger[_0x83bb('0x3a')](_0x2f3c37[_0x83bb('0x3b')]);process[_0x83bb('0x3c')](0x1);}function handleError(_0x34d4d2,_0x5c303b){stats['errors'][_0x83bb('0x3d')]({'name':_0x5c303b[_0x83bb('0x3e')],'message':_0x5c303b[_0x83bb('0x3b')],'row':_0x34d4d2});}function handleQuery(_0x3668c5){logger[_0x83bb('0x39')](_0x3668c5);return db[_0x83bb('0x3f')][_0x83bb('0x40')](_0x3668c5)[_0x83bb('0x41')](function(_0x3e4528){results[_0x83bb('0x3d')](_0x3e4528);})[_0x83bb('0x42')](function(_0x34799c){logger[_0x83bb('0x3a')](_0x34799c[_0x83bb('0x3b')]);});}function main(_0x2e3414,_0x30790a,_0x4934af,_0x1d0e3f){logger[_0x83bb('0x39')](_0x83bb('0x43'),_0x2e3414,JSON['stringify'](_0x30790a));process[_0x83bb('0x44')](_0x83bb('0x45'));var _0x5afa7b=_0x30790a['binding'];var _0x327d23=_0x30790a['socket_timestamp'];var _0x1d52da=path['join'](config['root'],_0x83bb('0x46'),_0x327d23+_0x83bb('0x47'));var _0x5b4213=_['keys'](_0x5afa7b)['join']();logger[_0x83bb('0x39')]('header',_0x5b4213);fs[_0x83bb('0x48')](_0x1d52da,_0x5b4213+'\x0a');Papa['parse'](fs['createReadStream'](_0x2e3414),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3ae1c6,_0x2d5134){try{for(var _0x4c785a=0x0,_0x8136e4=[];_0x4c785a<_0x3ae1c6[_0x83bb('0x49')][_0x83bb('0x4a')];_0x4c785a++){stats['rows']+=0x1;if(_0x3ae1c6[_0x83bb('0x4b')][_0x4c785a]){handleError(_0x3ae1c6[_0x83bb('0x49')][_0x4c785a],_0x3ae1c6[_0x83bb('0x4b')][_0x4c785a]);}else{var _0x1ce8c6=[];for(var _0x1fbab0 in _0x5afa7b){if(_0x5afa7b[_0x83bb('0x4c')](_0x1fbab0)){if(_0x3ae1c6[_0x83bb('0x49')][_0x4c785a][_0x5afa7b[_0x1fbab0]]){var _0x22101b=_[_0x83bb('0x4d')](_0x3ae1c6[_0x83bb('0x49')][_0x4c785a][_0x5afa7b[_0x1fbab0]]['replace'](/"/g,'\x27'));switch(_0x1fbab0){case'scheduledat':var _0x3b60be=moment(_0x22101b,_0x83bb('0x9'),!![]);if(_0x3b60be[_0x83bb('0x4e')]()){_0x8136e4['push']('\x22'+_0x22101b+'\x22');}else{_0x1ce8c6[_0x83bb('0x3d')](_0x83bb('0x4f'));}break;case _0x83bb('0x1e'):var _0x7986c4=parseInt(_0x22101b);_0x22101b=_['isNaN'](_0x7986c4)||_0x7986c4<0x0||_0x7986c4>0x4?_0x1d0e3f?0x3:0x2:_0x7986c4;_0x8136e4[_0x83bb('0x3d')]('\x22'+_0x22101b+'\x22');break;case _0x83bb('0x1f'):var _0x1b1176=parseInt(_0x22101b);if(_['isNumber'](_0x1b1176)&&_[_0x83bb('0x50')](_0x4934af,_0x1b1176)){_0x8136e4['push']('\x22'+_0x1b1176+'\x22');}else{_0x1ce8c6['push'](_0x83bb('0x51'));}break;case'email':if(isEmail(_0x22101b)){_0x8136e4[_0x83bb('0x3d')]('\x22'+_0x22101b+'\x22');}else{_0x1ce8c6[_0x83bb('0x3d')](_0x83bb('0x52'));}break;case _0x83bb('0x53'):var _0x3ed096=moment(_0x22101b,_0x83bb('0x54'),!![]);if(_0x3ed096[_0x83bb('0x4e')]()){_0x8136e4[_0x83bb('0x3d')]('\x22'+_0x22101b+'\x22');}else{_0x1ce8c6[_0x83bb('0x3d')](_0x83bb('0x55'));}break;default:_0x8136e4[_0x83bb('0x3d')]('\x22'+_0x22101b+'\x22');}}else{switch(_0x1fbab0){case _0x83bb('0x56'):case'phone':_0x1ce8c6[_0x83bb('0x3d')](_0x1fbab0+_0x83bb('0x57'));break;default:_0x8136e4[_0x83bb('0x3d')]('\x22\x22');}}}}if(_0x1ce8c6[_0x83bb('0x4a')]){handleError(_0x3ae1c6[_0x83bb('0x49')][_0x4c785a],{'code':_0x83bb('0x58'),'message':_0x1ce8c6[_0x83bb('0x12')]()});}else{fs[_0x83bb('0x59')](_0x1d52da,_0x8136e4[_0x83bb('0x12')]()+'\x0a');}_0x8136e4=[];}if(!(stats[_0x83bb('0x5a')]%0xc8)){socket['emit'](_0x83bb('0x5b')+_0x327d23,stats);stats[_0x83bb('0x4b')]=[];}}if(stopped){logger[_0x83bb('0x39')]('Abort\x20parser');_0x2d5134['abort']();}}catch(_0x4aba92){handleError(_0x3ae1c6['data'][_0x4c785a],{'code':_0x83bb('0x5c'),'message':_0x4aba92[_0x83bb('0x3b')]});logger[_0x83bb('0x3a')](_0x83bb('0x5d'),_0x4aba92[_0x83bb('0x3b')]);}},'complete':function(){try{var _0x242887=[];var _0x519a3f=_0x83bb('0x33');if(_0x30790a[_0x83bb('0x5e')]&&_0x30790a[_0x83bb('0x5e')][_0x83bb('0x4a')]){_0x519a3f=_0x83bb('0x5f')+_0x327d23;_0x242887[_0x83bb('0x3d')](_0x83bb('0x60')+_0x519a3f+_0x83bb('0x61'));}var _0x3e12c2=util[_0x83bb('0x8')](_0x83bb('0x62'),_0x1d52da,_0x519a3f,_0x5b4213,_0x30790a[_0x83bb('0x30')],_0x30790a['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x5afa7b['scheduledat'])){_0x3e12c2+=',\x20scheduledAt\x20=\x20NOW()';}_0x242887[_0x83bb('0x3d')](_0x3e12c2);if(_0x30790a['duplicates']&&_0x30790a['duplicates'][_0x83bb('0x4a')]){_0x242887[_0x83bb('0x3d')](insertCmContact(_0x30790a['ListId'],_0x519a3f,_0x30790a[_0x83bb('0x5e')],_0x5afa7b));_0x242887['push']('DROP\x20TABLE\x20'+_0x519a3f+';');}_0x242887['push'](insertCmHopper(_0x30790a['ListId'],_0x83bb('0x63'),_0x83bb('0x64'),_0x83bb('0x65'),_0x1d0e3f));_0x242887[_0x83bb('0x3d')](insertCmHopperBlack(_0x30790a[_0x83bb('0x30')],_0x83bb('0x66'),_0x83bb('0x64'),'VoiceQueueId'));_0x242887[_0x83bb('0x3d')](insertCmHopper(_0x30790a[_0x83bb('0x30')],_0x83bb('0x67'),_0x83bb('0x68'),_0x83bb('0x69'),_0x1d0e3f));_0x242887[_0x83bb('0x3d')](insertCmHopperBlack(_0x30790a[_0x83bb('0x30')],_0x83bb('0x6a'),'campaigns',_0x83bb('0x69')));BPromise['each'](_0x242887,handleQuery)[_0x83bb('0x6b')](function(_0x9941bc){stats[_0x83bb('0x6c')]=!![];stats['affectedRows']=_0x30790a[_0x83bb('0x5e')]&&_0x30790a['duplicates'][_0x83bb('0x4a')]?results[0x2][_0x83bb('0x6d')]:results[0x0][_0x83bb('0x6d')];socket[_0x83bb('0x6e')](_0x83bb('0x5b')+_0x327d23,stats);fs[_0x83bb('0x6f')](_0x2e3414);fs[_0x83bb('0x6f')](_0x1d52da);process[_0x83bb('0x3c')](0x0);})['catch'](function(_0x4cca1f){logger[_0x83bb('0x3a')](_0x4cca1f['message']);process['exit'](0x1);});}catch(_0x58ff5e){logger[_0x83bb('0x3a')](_0x83bb('0x70'),_0x58ff5e[_0x83bb('0x3b')]);process[_0x83bb('0x3c')](0x1);}},'error':function(_0x796e94,_0x2ae375,_0x2d24b5,_0x58f142){throw new Error(_0x58f142);}});}function validate(){if(process[_0x83bb('0x71')]&&process['argv'][_0x83bb('0x4a')]<0x4){throw new Error(_0x83bb('0x72'));}var _0x128f6a=path[_0x83bb('0x12')](config[_0x83bb('0x73')],'server/files/tmp',process[_0x83bb('0x71')][0x2]);if(!fs[_0x83bb('0x74')](_0x128f6a)){throw new Error(_0x83bb('0x75'));}var _0x1b172a={};try{_0x1b172a=JSON['parse'](process['argv'][0x3]);if(!_0x1b172a[_0x83bb('0x76')]){throw new Error(_0x83bb('0x77'));}if(!_0x1b172a[_0x83bb('0x76')]['phone']){throw new Error(_0x83bb('0x78'));}if(!_0x1b172a[_0x83bb('0x76')][_0x83bb('0x56')]){throw new Error('firstName\x20is\x20mandatory');}var _0x1aef39=0x0;if(_0x1b172a['binding'][_0x83bb('0x1f')]){_0x1aef39=0x1;}if(!_0x1b172a[_0x83bb('0x30')]){throw new Error(_0x83bb('0x79'));}}catch(_0x4425c3){throw new Error(_0x83bb('0x7a'));}var _0x4c134c=[];try{_0x4c134c=_[_0x83bb('0x7b')](JSON[_0x83bb('0x7c')](process[_0x83bb('0x71')][0x4]),'id');}catch(_0x3a349e){logger[_0x83bb('0x39')](_0x83bb('0x7d'));}main(_0x128f6a,_0x1b172a,_0x4c134c,_0x1aef39);}validate();process['on'](_0x83bb('0x7e'),handleStop);process['on'](_0x83bb('0x7f'),handleUncaughtException);
\ No newline at end of file
index 6b5df66..0f9887a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63a=['Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','UniqueId','uniqueid','Date','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Billable\x20Time','billableseconds','getSubjects','[xCALLY\x20Ticket]','toLowerCase','inbound','push','queue','variable','calleridnum','string','Outbound\x20Call','destcalleridnum','getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','***\x20Agent\x20Info\x20***','destcalleridname','***\x20Time\x20Info\x20***','agentcalledAt','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time'];(function(_0x3dc99e,_0x56b7fd){var _0xbff813=function(_0x5f28a8){while(--_0x5f28a8){_0x3dc99e['push'](_0x3dc99e['shift']());}};_0xbff813(++_0x56b7fd);}(_0xe63a,0x117));var _0xae63=function(_0x505088,_0x2391d8){_0x505088=_0x505088-0x0;var _0x301ef7=_0xe63a[_0x505088];return _0x301ef7;};'use strict';exports[_0xae63('0x0')]=function(_0x405b12,_0x1799a3){var _0x29eb9a=[{'type':'string','content':_0xae63('0x1'),'variableName':null}];switch(_0x405b12[_0xae63('0x2')]()){case'voice':switch(_0x1799a3[_0xae63('0x2')]()){case _0xae63('0x3'):_0x29eb9a[_0xae63('0x4')]({'type':'variable','content':'','variableName':_0xae63('0x5')});_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x6'),'content':'','variableName':_0xae63('0x7')});break;case'outbound':_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x8'),'content':_0xae63('0x9'),'variableName':null});_0x29eb9a[_0xae63('0x4')]({'type':_0xae63('0x6'),'content':'','variableName':_0xae63('0xa')});break;}}return _0x29eb9a;};exports[_0xae63('0xb')]=function(_0x31ec60,_0x5cfdd2){var _0x410f04=[];switch(_0x31ec60[_0xae63('0x2')]()){case _0xae63('0xc'):switch(_0x5cfdd2['toLowerCase']()){case'inbound':_0x410f04=[{'type':_0xae63('0x8'),'content':_0xae63('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0xf'),'keyType':'variable','variableName':_0xae63('0x7')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x10'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x11')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x12'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x13')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x14'),'keyType':'variable','variableName':_0xae63('0x5')},{'type':_0xae63('0xe'),'content':'','key':'UniqueId','keyType':_0xae63('0x6'),'variableName':'uniqueid'},{'type':_0xae63('0xe'),'content':'','key':'Date','keyType':_0xae63('0x6'),'variableName':'agentcalledAt'},{'type':_0xae63('0x8'),'content':_0xae63('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Name','keyType':'variable','variableName':_0xae63('0x16')},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Number','keyType':_0xae63('0x6'),'variableName':_0xae63('0xa')},{'type':_0xae63('0x8'),'content':_0xae63('0x17'),'key':null,'keyType':null,'variableName':null},{'type':_0xae63('0xe'),'content':'','key':'Agent\x20Ring','keyType':_0xae63('0x6'),'variableName':_0xae63('0x18')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x19'),'keyType':_0xae63('0x6'),'variableName':'agentconnectAt'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1a'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x1b')},{'type':'keyValue','content':'','key':_0xae63('0x1c'),'keyType':_0xae63('0x6'),'variableName':'holdtime'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1d'),'keyType':_0xae63('0x6'),'variableName':_0xae63('0x1e')}];break;case'outbound':_0x410f04=[{'type':_0xae63('0x8'),'content':_0xae63('0xd'),'variableName':null},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x1f'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0xa')},{'type':'keyValue','content':'','key':_0xae63('0x20'),'keyType':'variable','keyContent':'','variableName':_0xae63('0x21')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x22'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x23')},{'type':'keyValue','content':'','key':_0xae63('0x24'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x25')},{'type':_0xae63('0x8'),'content':'***\x20Time\x20Info\x20***'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x26'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x27')},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x28'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x29')},{'type':'keyValue','content':'','key':'Duration','keyType':_0xae63('0x6'),'keyContent':'','variableName':'duration'},{'type':_0xae63('0xe'),'content':'','key':_0xae63('0x2a'),'keyType':_0xae63('0x6'),'keyContent':'','variableName':_0xae63('0x2b')}];break;}}return _0x410f04;};
\ No newline at end of file
+var _0x3766=['Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Called\x20Number','Member\x20Name','membername','UniqueId','Answer\x20Time','answertime','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','destexten','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname'];(function(_0x144211,_0x314292){var _0x479193=function(_0x41ad77){while(--_0x41ad77){_0x144211['push'](_0x144211['shift']());}};_0x479193(++_0x314292);}(_0x3766,0x68));var _0x6376=function(_0x54a687,_0x4ce189){_0x54a687=_0x54a687-0x0;var _0x4b5083=_0x3766[_0x54a687];return _0x4b5083;};'use strict';exports[_0x6376('0x0')]=function(_0x49c050,_0x46e26c){var _0x47b39f=[{'type':_0x6376('0x1'),'content':_0x6376('0x2'),'variableName':null}];switch(_0x49c050[_0x6376('0x3')]()){case _0x6376('0x4'):switch(_0x46e26c['toLowerCase']()){case _0x6376('0x5'):_0x47b39f[_0x6376('0x6')]({'type':_0x6376('0x7'),'content':'','variableName':_0x6376('0x8')});_0x47b39f[_0x6376('0x6')]({'type':_0x6376('0x7'),'content':'','variableName':_0x6376('0x9')});break;case _0x6376('0xa'):_0x47b39f[_0x6376('0x6')]({'type':_0x6376('0x1'),'content':_0x6376('0xb'),'variableName':null});_0x47b39f[_0x6376('0x6')]({'type':_0x6376('0x7'),'content':'','variableName':_0x6376('0xc')});break;}}return _0x47b39f;};exports[_0x6376('0xd')]=function(_0xdb719d,_0x37b0ed){var _0x2efe07=[];switch(_0xdb719d[_0x6376('0x3')]()){case'voice':switch(_0x37b0ed[_0x6376('0x3')]()){case _0x6376('0x5'):_0x2efe07=[{'type':_0x6376('0x1'),'content':_0x6376('0xe'),'key':null,'keyType':null,'variableName':null},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x10'),'keyType':'variable','variableName':'calleridnum'},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x11'),'keyType':'variable','variableName':'calleridname'},{'type':_0x6376('0xf'),'content':'','key':'Call\x20To','keyType':_0x6376('0x7'),'variableName':_0x6376('0x12')},{'type':_0x6376('0xf'),'content':'','key':'Queue','keyType':_0x6376('0x7'),'variableName':_0x6376('0x8')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x6376('0x7'),'variableName':_0x6376('0x13')},{'type':'keyValue','content':'','key':_0x6376('0x14'),'keyType':'variable','variableName':_0x6376('0x15')},{'type':_0x6376('0x1'),'content':_0x6376('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x17'),'keyType':_0x6376('0x7'),'variableName':_0x6376('0x18')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x19'),'keyType':_0x6376('0x7'),'variableName':_0x6376('0xc')},{'type':_0x6376('0x1'),'content':_0x6376('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':_0x6376('0xf'),'content':'','key':'Agent\x20Ring','keyType':_0x6376('0x7'),'variableName':_0x6376('0x15')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x1b'),'keyType':_0x6376('0x7'),'variableName':_0x6376('0x1c')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x1d'),'keyType':_0x6376('0x7'),'variableName':_0x6376('0x1e')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x1f'),'keyType':_0x6376('0x7'),'variableName':_0x6376('0x20')},{'type':_0x6376('0xf'),'content':'','key':'Talk\x20Time','keyType':_0x6376('0x7'),'variableName':'talktime'}];break;case _0x6376('0xa'):_0x2efe07=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x21'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0xc')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x22'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x23')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x24'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x13')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x14'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':'starttime'},{'type':'string','content':'***\x20Time\x20Info\x20***'},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x25'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x26')},{'type':_0x6376('0xf'),'content':'','key':'Complete\x20Time','keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x27')},{'type':'keyValue','content':'','key':'Duration','keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x28')},{'type':_0x6376('0xf'),'content':'','key':_0x6376('0x29'),'keyType':_0x6376('0x7'),'keyContent':'','variableName':_0x6376('0x2a')}];break;}}return _0x2efe07;};
\ No newline at end of file
index 1532461..1debb30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec2=['info','tracked','query','body','omit','html','phone','lodash','../../mysqldb','../../config/logger','sms-interactions','whatsapp-interactions','upperFirst','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','stringify','Interaction','findOne','then','update'];(function(_0x299aad,_0x3a0675){var _0x4b256a=function(_0x2a3cb5){while(--_0x2a3cb5){_0x299aad['push'](_0x299aad['shift']());}};_0x4b256a(++_0x3a0675);}(_0xaec2,0x193));var _0x2aec=function(_0xd5a842,_0x3bef1f){_0xd5a842=_0xd5a842-0x0;var _0xcedd84=_0xaec2[_0xd5a842];return _0xcedd84;};'use strict';var _=require(_0x2aec('0x0'));var db=require(_0x2aec('0x1'))['db'];var loggers={'openchannel':require(_0x2aec('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')('mail-interactions'),'fax':require(_0x2aec('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0x2aec('0x3')),'chat':require(_0x2aec('0x2'))('chat-interactions'),'whatsapp':require(_0x2aec('0x2'))(_0x2aec('0x4'))};function getInteractionId(_0x34f783,_0x5de5ba,_0x58840b){if(_0x34f783&&_0x34f783[_['upperFirst'](_0x58840b)+'InteractionId']){return _0x34f783[_[_0x2aec('0x5')](_0x58840b)+_0x2aec('0x6')];}else if(_0x34f783&&_0x34f783['id']){return _0x34f783['id'];}else if(_0x5de5ba&&_0x5de5ba['id']){return _0x5de5ba['id'];}else{return'unknown';}}function log(_0x18925f,_0x3cfb98,_0x3a5f3a,_0x365033,_0x304a97,_0x35bc00){loggers[_0x304a97[_0x2aec('0x7')]()][_0x18925f](_0x2aec('0x8'),_0x35bc00['toUpperCase'](),_0x3cfb98?_0x3cfb98['id']:null,_0x3cfb98?_0x3cfb98[_0x2aec('0x9')]:null,_0x3cfb98?_0x3cfb98['role']:null,getInteractionId(_0x3a5f3a,_0x365033,_0x304a97),_0x3a5f3a?JSON[_0x2aec('0xa')](_0x3a5f3a):'null');}function updateUser(_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978){db[_['upperFirst'](_0x4cca5)+_0x2aec('0xb')][_0x2aec('0xc')]({'where':{'id':getInteractionId(_0x316c40,_0x1a7b61,_0x4cca5)}})[_0x2aec('0xd')](function(_0x285656){if(_0x285656){return _0x285656[_0x2aec('0xe')]({'UserId':_0x5c4ef2?_0x5c4ef2['id']:null});}})['then'](function(_0x47a109){if(_0x47a109){log(_0x2aec('0xf'),_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978);}})['catch'](function(){log('error',_0x5c4ef2,_0x316c40,_0x1a7b61,_0x4cca5,_0x39a978);});}exports[_0x2aec('0x10')]=function(_0xdc93ef,_0x5e7968){return function(_0xde2ef0,_0x3e778e,_0x967628){var _0x3d4cd0=_0xde2ef0['user'];var _0x545f6a={};var _0x5601b7=_0xde2ef0[_0x2aec('0x11')];if(_0x545f6a){_0x545f6a=_['clone'](_0xde2ef0[_0x2aec('0x12')]);_0x545f6a=_[_0x2aec('0x13')](_0x545f6a,['body',_0x2aec('0x14'),_0x2aec('0x15'),'fax','mobile']);}updateUser(_0x3d4cd0,_0x545f6a,_0x5601b7,_0xdc93ef,_0x5e7968);_0x967628(null);};};
\ No newline at end of file
+var _0xca4a=['tracked','user','clone','body','omit','html','phone','fax','mobile','lodash','../../config/logger','mail-interactions','sms-interactions','upperFirst','InteractionId','unknown','toLowerCase','toUpperCase','name','role','null','findOne','then','update','error'];(function(_0x2e4278,_0x35c121){var _0x11fb82=function(_0x1fea7c){while(--_0x1fea7c){_0x2e4278['push'](_0x2e4278['shift']());}};_0x11fb82(++_0x35c121);}(_0xca4a,0x1cb));var _0xaca4=function(_0x472654,_0x153fbb){_0x472654=_0x472654-0x0;var _0x2b349c=_0xca4a[_0x472654];return _0x2b349c;};'use strict';var _=require(_0xaca4('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xaca4('0x1'))('openchannel-interactions'),'mail':require(_0xaca4('0x1'))(_0xaca4('0x2')),'fax':require('../../config/logger')('fax-interactions'),'sms':require('../../config/logger')(_0xaca4('0x3')),'chat':require(_0xaca4('0x1'))('chat-interactions'),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x28d17f,_0x2ade84,_0x50054d){if(_0x28d17f&&_0x28d17f[_[_0xaca4('0x4')](_0x50054d)+_0xaca4('0x5')]){return _0x28d17f[_[_0xaca4('0x4')](_0x50054d)+_0xaca4('0x5')];}else if(_0x28d17f&&_0x28d17f['id']){return _0x28d17f['id'];}else if(_0x2ade84&&_0x2ade84['id']){return _0x2ade84['id'];}else{return _0xaca4('0x6');}}function log(_0xb81520,_0x2be30c,_0x28ab4f,_0x53c1fa,_0x47ed9a,_0x103373){loggers[_0x47ed9a[_0xaca4('0x7')]()][_0xb81520]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x103373[_0xaca4('0x8')](),_0x2be30c?_0x2be30c['id']:null,_0x2be30c?_0x2be30c[_0xaca4('0x9')]:null,_0x2be30c?_0x2be30c[_0xaca4('0xa')]:null,getInteractionId(_0x28ab4f,_0x53c1fa,_0x47ed9a),_0x28ab4f?JSON['stringify'](_0x28ab4f):_0xaca4('0xb'));}function updateUser(_0x3b3f56,_0x55b867,_0x365f9b,_0x2c7f3f,_0x2bdf41){db[_['upperFirst'](_0x2c7f3f)+'Interaction'][_0xaca4('0xc')]({'where':{'id':getInteractionId(_0x55b867,_0x365f9b,_0x2c7f3f)}})[_0xaca4('0xd')](function(_0x55a6cf){if(_0x55a6cf){return _0x55a6cf[_0xaca4('0xe')]({'UserId':_0x3b3f56?_0x3b3f56['id']:null});}})[_0xaca4('0xd')](function(_0x1bf73d){if(_0x1bf73d){log('info',_0x3b3f56,_0x55b867,_0x365f9b,_0x2c7f3f,_0x2bdf41);}})['catch'](function(){log(_0xaca4('0xf'),_0x3b3f56,_0x55b867,_0x365f9b,_0x2c7f3f,_0x2bdf41);});}exports[_0xaca4('0x10')]=function(_0x1cc1a7,_0xf2b481){return function(_0x2afc43,_0x268933,_0x426f4e){var _0x3a75d0=_0x2afc43[_0xaca4('0x11')];var _0x10f0cb={};var _0x29afd9=_0x2afc43['query'];if(_0x10f0cb){_0x10f0cb=_[_0xaca4('0x12')](_0x2afc43[_0xaca4('0x13')]);_0x10f0cb=_[_0xaca4('0x14')](_0x10f0cb,[_0xaca4('0x13'),_0xaca4('0x15'),_0xaca4('0x16'),_0xaca4('0x17'),_0xaca4('0x18')]);}updateUser(_0x3a75d0,_0x10f0cb,_0x29afd9,_0x1cc1a7,_0xf2b481);_0x426f4e(null);};};
\ No newline at end of file
index 6880f2c..3bc903a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8562=['users','User','admin','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','update','base64','utf8','final','hasOwnProperty','License','findOne','then','count','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8562,0x70));var _0x2856=function(_0x1bce46,_0x1d6cdc){_0x1bce46=_0x1bce46-0x0;var _0x2a9f8e=_0x8562[_0x1bce46];return _0x2a9f8e;};'use strict';var crypto=require(_0x2856('0x0'));var util=require(_0x2856('0x1'));var compose=require(_0x2856('0x2'));var db=require(_0x2856('0x3'))['db'];var config=require(_0x2856('0x4'));function getValueFromLicense(_0x2940b0,_0x45c366){if(_0x2940b0&&_0x45c366){if(_0x45c366[_0x2856('0x5')]&&_0x45c366[_0x2856('0x6')]){var _0x2504be=_0x45c366[_0x2856('0x5')];var _0x5aa86e=_0x45c366[_0x2856('0x6')];var _0x490237=_0x2504be[_0x2856('0x7')]('-')[0x4];var _0x1ce18c=_0x2504be[_0x2856('0x7')]('-')[0x0];var _0x4a3c7f=crypto[_0x2856('0x8')](_0x2856('0x9'),util[_0x2856('0xa')]('%s:%s:%s',_0x490237,_0x2504be,_0x1ce18c));var _0x284580=_0x4a3c7f[_0x2856('0xb')](_0x5aa86e,_0x2856('0xc'),_0x2856('0xd'));_0x284580+=_0x4a3c7f[_0x2856('0xe')](_0x2856('0xd'));var _0x529aa2=JSON['parse'](_0x284580);return _0x529aa2[_0x2856('0xf')](_0x2940b0)?_0x529aa2[_0x2940b0]:null;}}return null;}function isLimit(_0x2db282,_0x4c66b6,_0x1e828b,_0x3354c2){var _0x4e43d6=_0x4c66b6;return compose()['use'](function(_0x207a3b,_0x47e558,_0x49cb62){return db[_0x2856('0x10')][_0x2856('0x11')]({'where':{'id':0x1},'raw':!![]})[_0x2856('0x12')](function(_0x398645){var _0x19c12e=getValueFromLicense(_0x2db282,_0x398645);return _0x19c12e?_0x19c12e:_0x4e43d6;})[_0x2856('0x12')](function(_0x2ca302){_0x4e43d6=_0x2ca302;return _0x1e828b[_0x2856('0x13')](_0x3354c2);})[_0x2856('0x12')](function(_0x4485e6){if(_0x4485e6>=_0x4e43d6){return _0x47e558[_0x2856('0x14')](0x193)['json']({'message':util['format'](_0x2856('0x15'),_0x2db282)});}_0x49cb62();})[_0x2856('0x16')](function(_0x5b89f7){_0x49cb62(_0x5b89f7);});});}function isUserLimit(){return isLimit(_0x2856('0x17'),0x1,db[_0x2856('0x18')],{'where':{'$or':[{'role':_0x2856('0x19')},{'role':'user'}]}});}exports[_0x2856('0x1a')]=isUserLimit;
\ No newline at end of file
+var _0x127b=['data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','base64','final','utf8','hasOwnProperty','use','findOne','then','count','status','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb'];(function(_0x34e017,_0x535225){var _0x663480=function(_0x8fc7e1){while(--_0x8fc7e1){_0x34e017['push'](_0x34e017['shift']());}};_0x663480(++_0x535225);}(_0x127b,0xef));var _0xb127=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x127b[_0x57b54c];return _0x59cc19;};'use strict';var crypto=require(_0xb127('0x0'));var util=require(_0xb127('0x1'));var compose=require(_0xb127('0x2'));var db=require(_0xb127('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x290b03,_0xa167e6){if(_0x290b03&&_0xa167e6){if(_0xa167e6[_0xb127('0x4')]&&_0xa167e6[_0xb127('0x5')]){var _0x5d8b7c=_0xa167e6[_0xb127('0x4')];var _0x49b65b=_0xa167e6[_0xb127('0x5')];var _0x3b9a54=_0x5d8b7c[_0xb127('0x6')]('-')[0x4];var _0x445015=_0x5d8b7c[_0xb127('0x6')]('-')[0x0];var _0x515aa4=crypto[_0xb127('0x7')](_0xb127('0x8'),util[_0xb127('0x9')](_0xb127('0xa'),_0x3b9a54,_0x5d8b7c,_0x445015));var _0x475328=_0x515aa4['update'](_0x49b65b,_0xb127('0xb'),'utf8');_0x475328+=_0x515aa4[_0xb127('0xc')](_0xb127('0xd'));var _0x5a9520=JSON['parse'](_0x475328);return _0x5a9520[_0xb127('0xe')](_0x290b03)?_0x5a9520[_0x290b03]:null;}}return null;}function isLimit(_0x450735,_0x4da8dc,_0x1e74b5,_0x5f06f1){var _0x4d905a=_0x4da8dc;return compose()[_0xb127('0xf')](function(_0x5e6be8,_0x534951,_0x2d0027){return db['License'][_0xb127('0x10')]({'where':{'id':0x1},'raw':!![]})[_0xb127('0x11')](function(_0xfdbb8){var _0x46b87b=getValueFromLicense(_0x450735,_0xfdbb8);return _0x46b87b?_0x46b87b:_0x4d905a;})['then'](function(_0x2d26c6){_0x4d905a=_0x2d26c6;return _0x1e74b5[_0xb127('0x12')](_0x5f06f1);})['then'](function(_0x30f7e2){if(_0x30f7e2>=_0x4d905a){return _0x534951[_0xb127('0x13')](0x193)['json']({'message':util[_0xb127('0x9')](_0xb127('0x14'),_0x450735)});}_0x2d0027();})[_0xb127('0x15')](function(_0x40889f){_0x2d0027(_0x40889f);});});}function isUserLimit(){return isLimit(_0xb127('0x16'),0x1,db[_0xb127('0x17')],{'where':{'$or':[{'role':_0xb127('0x18')},{'role':_0xb127('0x19')}]}});}exports[_0xb127('0x1a')]=isUserLimit;
\ No newline at end of file
index a930463..4ba8c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b25=['$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','\x20AS\x20','field','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','start','pop','utcOffset','hours','lodash','moment','sqlOperator','startsWith','[$or]','and','[$and]','replace','split','length','slice','forEach','shift','filter','indexOf','map','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt'];(function(_0x419913,_0x24ae51){var _0x2d79eb=function(_0x2db37a){while(--_0x2db37a){_0x419913['push'](_0x419913['shift']());}};_0x2d79eb(++_0x24ae51);}(_0x7b25,0x137));var _0x57b2=function(_0xe59469,_0x4ffac9){_0xe59469=_0xe59469-0x0;var _0xe52a05=_0x7b25[_0xe59469];return _0xe52a05;};'use strict';var _=require(_0x57b2('0x0'));var moment=require(_0x57b2('0x1'));exports['parseSearch']=function(_0x244f3c){var _0x591876={'conditions':[]};_0x591876[_0x57b2('0x2')]=_[_0x57b2('0x3')](_0x244f3c,_0x57b2('0x4'))?'or':_0x57b2('0x5');var _0x453828=_0x244f3c['replace'](_0x57b2('0x6'),'')[_0x57b2('0x7')](_0x57b2('0x4'),'')[_0x57b2('0x8')]('||');for(var _0x36abc9=0x0;_0x36abc9<_0x453828[_0x57b2('0x9')];_0x36abc9++){var _0x133187=_0x453828[_0x36abc9]['split'](':=');var _0x525392=_0x133187[0x0];var _0x55584a=_0x133187[_0x57b2('0xa')](0x1);_0x55584a[_0x57b2('0xb')](function(_0x445270){var _0x5792d7=_0x445270['split']('[')[_0x57b2('0xc')]();var _0x236ced=_0x445270['match'](/\[(.*?)\]/g);_0x236ced[_0x57b2('0xb')](function(_0x1520ec){var _0x51b27b=_0x1520ec[_0x57b2('0x8')]('[')[_0x57b2('0xd')](function(_0x5187e3){return _0x5187e3[_0x57b2('0xe')](']')>-0x1;})[_0x57b2('0xf')](function(_0x484f21){return _0x484f21['split'](']')[0x0];})[0x0];_0x591876['conditions'][_0x57b2('0x10')]({'field':_0x525392,'operator':_0x5792d7,'value':_0x51b27b});});});}return _0x591876;};exports[_0x57b2('0x11')]=function(_0x827b63,_0x8b645e,_0x5ac60d){var _0x4846c4={};if(_0x8b645e===_0x57b2('0x12')){if(_0x5ac60d[_0x57b2('0x13')]===_0x57b2('0x14')){_0x5ac60d['operator']=_0x57b2('0x15');_0x5ac60d[_0x57b2('0x16')]+=','+_0x5ac60d[_0x57b2('0x16')];}else if(_[_0x57b2('0x17')]([_0x57b2('0x18'),_0x57b2('0x19')],_0x5ac60d['operator'])){_0x5ac60d[_0x57b2('0x16')]=moment(_0x5ac60d['value'])[_0x57b2('0x1a')](0x1,_0x57b2('0x1b'))[_0x57b2('0x1c')](_0x57b2('0x1d'));}}if(_0x5ac60d[_0x57b2('0x1e')]){_0x8b645e=_0x5ac60d[_0x57b2('0x1e')];_0x4846c4[_0x57b2('0x1f')]=_0x57b2('0x20')+_0x827b63+'.'+_0x5ac60d['field']+_0x57b2('0x21')+_0x5ac60d[_0x57b2('0x1e')]+')\x20'+parseOperator(_0x5ac60d[_0x57b2('0x13')]);}else{_0x4846c4[_0x57b2('0x1f')]=_0x827b63+'.'+_0x5ac60d[_0x57b2('0x22')]+'\x20'+parseOperator(_0x5ac60d[_0x57b2('0x13')]);}if(_[_0x57b2('0x17')]([_0x57b2('0x23'),'$notIn'],_0x5ac60d[_0x57b2('0x13')]))_0x4846c4[_0x57b2('0x1f')]='('+_0x4846c4[_0x57b2('0x1f')]+_0x57b2('0x24')+_0x827b63+'.'+_0x5ac60d[_0x57b2('0x22')]+_0x57b2('0x25');_0x4846c4['value']=parseValue(_0x8b645e,_0x5ac60d['operator'],_0x5ac60d['value']);return _0x4846c4;};function parseOperator(_0xcfba3a){var _0x4331e5;switch(_0xcfba3a){case _0x57b2('0x26'):_0x4331e5=_0x57b2('0x27');break;case _0x57b2('0x28'):_0x4331e5=_0x57b2('0x29');break;case _0x57b2('0x14'):_0x4331e5=_0x57b2('0x2a');break;case _0x57b2('0x23'):_0x4331e5='<>\x20?';break;case _0x57b2('0x2b'):case _0x57b2('0x2c'):case _0x57b2('0x2d'):_0x4331e5=_0x57b2('0x2e');break;case'$lt':_0x4331e5=_0x57b2('0x2f');break;case _0x57b2('0x18'):_0x4331e5=_0x57b2('0x30');break;case _0x57b2('0x19'):_0x4331e5=_0x57b2('0x31');break;case _0x57b2('0x32'):_0x4331e5=_0x57b2('0x33');break;case _0x57b2('0x15'):_0x4331e5='BETWEEN\x20?\x20AND\x20?';break;}return _0x4331e5;}function parseValue(_0x138074,_0x3684f5,_0x9b8c21){var _0x1b2e47={'start':undefined,'end':undefined};switch(_0x3684f5){case'$in':case _0x57b2('0x28'):_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21[_0x57b2('0x8')](',');break;case'$substring':_0x1b2e47[_0x57b2('0x34')]='%'+_0x9b8c21+'%';break;case _0x57b2('0x2c'):_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21+'%';break;case'$endsWith':_0x1b2e47[_0x57b2('0x34')]='%'+_0x9b8c21;break;case _0x57b2('0x15'):var _0x49c98d=_0x9b8c21['split'](',');var _0x9b8c21=_0x49c98d[_0x57b2('0xc')]();var _0xb38b03=_0x49c98d[_0x57b2('0x35')]();if(_0x138074===_0x57b2('0x12')){_0x9b8c21=moment(_0x9b8c21)[_0x57b2('0x36')](0x0,!![])['format']();_0xb38b03=moment(_0xb38b03)[_0x57b2('0x36')](0x0,!![])[_0x57b2('0x1a')](0x17,_0x57b2('0x37'))[_0x57b2('0x1a')](0x3b,'minutes')[_0x57b2('0x1a')](0x3b,'seconds')[_0x57b2('0x1c')]();}_0x1b2e47={'start':_0x9b8c21,'end':_0xb38b03};break;default:_0x1b2e47[_0x57b2('0x34')]=_0x9b8c21;break;}return _0x1b2e47;}
\ No newline at end of file
+var _0x8709=['\x20OR\x20','\x20IS\x20NULL)','$in','$notIn','NOT\x20IN\x20?','=\x20?','$ne','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','BETWEEN\x20?\x20AND\x20?','start','$substring','DATE','utcOffset','seconds','sqlOperator','[$or]','and','replace','[$and]','split','length','forEach','shift','match','filter','indexOf','conditions','push','buildExpression','operator','$eq','$between','value','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20'];(function(_0x24ebcb,_0x4160a3){var _0x118903=function(_0x35cd72){while(--_0x35cd72){_0x24ebcb['push'](_0x24ebcb['shift']());}};_0x118903(++_0x4160a3);}(_0x8709,0x72));var _0x9870=function(_0x4f4c53,_0x58ba7b){_0x4f4c53=_0x4f4c53-0x0;var _0x568ff1=_0x8709[_0x4f4c53];return _0x568ff1;};'use strict';var _=require('lodash');var moment=require('moment');exports['parseSearch']=function(_0x525849){var _0x1fa69e={'conditions':[]};_0x1fa69e[_0x9870('0x0')]=_['startsWith'](_0x525849,_0x9870('0x1'))?'or':_0x9870('0x2');var _0x4dd1a6=_0x525849[_0x9870('0x3')](_0x9870('0x4'),'')[_0x9870('0x3')](_0x9870('0x1'),'')[_0x9870('0x5')]('||');for(var _0x387cbe=0x0;_0x387cbe<_0x4dd1a6[_0x9870('0x6')];_0x387cbe++){var _0x2ad4bc=_0x4dd1a6[_0x387cbe][_0x9870('0x5')](':=');var _0xcec76f=_0x2ad4bc[0x0];var _0x120eaf=_0x2ad4bc['slice'](0x1);_0x120eaf[_0x9870('0x7')](function(_0x3fb366){var _0x580eca=_0x3fb366['split']('[')[_0x9870('0x8')]();var _0x169134=_0x3fb366[_0x9870('0x9')](/\[(.*?)\]/g);_0x169134[_0x9870('0x7')](function(_0x51f93c){var _0x215379=_0x51f93c[_0x9870('0x5')]('[')[_0x9870('0xa')](function(_0x3ddd91){return _0x3ddd91[_0x9870('0xb')](']')>-0x1;})['map'](function(_0x5f0cf1){return _0x5f0cf1[_0x9870('0x5')](']')[0x0];})[0x0];_0x1fa69e[_0x9870('0xc')][_0x9870('0xd')]({'field':_0xcec76f,'operator':_0x580eca,'value':_0x215379});});});}return _0x1fa69e;};exports[_0x9870('0xe')]=function(_0x2fc1d6,_0x19a3df,_0x300e71){var _0x1584de={};if(_0x19a3df==='DATE'){if(_0x300e71[_0x9870('0xf')]===_0x9870('0x10')){_0x300e71[_0x9870('0xf')]=_0x9870('0x11');_0x300e71['value']+=','+_0x300e71[_0x9870('0x12')];}else if(_['includes']([_0x9870('0x13'),_0x9870('0x14')],_0x300e71[_0x9870('0xf')])){_0x300e71[_0x9870('0x12')]=moment(_0x300e71['value'])[_0x9870('0x15')](0x1,_0x9870('0x16'))[_0x9870('0x17')](_0x9870('0x18'));}}if(_0x300e71['castTo']){_0x19a3df=_0x300e71[_0x9870('0x19')];_0x1584de[_0x9870('0x1a')]=_0x9870('0x1b')+_0x2fc1d6+'.'+_0x300e71[_0x9870('0x1c')]+_0x9870('0x1d')+_0x300e71['castTo']+')\x20'+parseOperator(_0x300e71[_0x9870('0xf')]);}else{_0x1584de[_0x9870('0x1a')]=_0x2fc1d6+'.'+_0x300e71[_0x9870('0x1c')]+'\x20'+parseOperator(_0x300e71['operator']);}if(_['includes'](['$ne','$notIn'],_0x300e71[_0x9870('0xf')]))_0x1584de['text']='('+_0x1584de[_0x9870('0x1a')]+_0x9870('0x1e')+_0x2fc1d6+'.'+_0x300e71['field']+_0x9870('0x1f');_0x1584de['value']=parseValue(_0x19a3df,_0x300e71['operator'],_0x300e71[_0x9870('0x12')]);return _0x1584de;};function parseOperator(_0x2bf3dd){var _0x3346d9;switch(_0x2bf3dd){case _0x9870('0x20'):_0x3346d9='IN\x20?';break;case _0x9870('0x21'):_0x3346d9=_0x9870('0x22');break;case'$eq':_0x3346d9=_0x9870('0x23');break;case _0x9870('0x24'):_0x3346d9='<>\x20?';break;case'$substring':case _0x9870('0x25'):case _0x9870('0x26'):_0x3346d9=_0x9870('0x27');break;case _0x9870('0x28'):_0x3346d9=_0x9870('0x29');break;case'$gt':_0x3346d9='>\x20?';break;case _0x9870('0x14'):_0x3346d9='<=\x20?';break;case'$gte':_0x3346d9='>=\x20?';break;case _0x9870('0x11'):_0x3346d9=_0x9870('0x2a');break;}return _0x3346d9;}function parseValue(_0xc2d0fc,_0x485da0,_0x5e8127){var _0x4775d3={'start':undefined,'end':undefined};switch(_0x485da0){case _0x9870('0x20'):case'$notIn':_0x4775d3[_0x9870('0x2b')]=_0x5e8127[_0x9870('0x5')](',');break;case _0x9870('0x2c'):_0x4775d3['start']='%'+_0x5e8127+'%';break;case _0x9870('0x25'):_0x4775d3[_0x9870('0x2b')]=_0x5e8127+'%';break;case _0x9870('0x26'):_0x4775d3['start']='%'+_0x5e8127;break;case'$between':var _0x246132=_0x5e8127[_0x9870('0x5')](',');var _0x5e8127=_0x246132[_0x9870('0x8')]();var _0x12e451=_0x246132['pop']();if(_0xc2d0fc===_0x9870('0x2d')){_0x5e8127=moment(_0x5e8127)['utcOffset'](0x0,!![])[_0x9870('0x17')]();_0x12e451=moment(_0x12e451)[_0x9870('0x2e')](0x0,!![])[_0x9870('0x15')](0x17,'hours')[_0x9870('0x15')](0x3b,'minutes')[_0x9870('0x15')](0x3b,_0x9870('0x2f'))[_0x9870('0x17')]();}_0x4775d3={'start':_0x5e8127,'end':_0x12e451};break;default:_0x4775d3[_0x9870('0x2b')]=_0x5e8127;break;}return _0x4775d3;}
\ No newline at end of file
index 3ce98ec..59f0c16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x506a=['keys','includes','fields','split','filters','isEmpty','isPlainObject','parse','format','YYYY-MM-DD','utc','$lte','subtract','name','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','isArray','length','isObject','isString','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','$id','query','intersection','model','attributes','offset','order','where','filter','object','columns','value','type','VIRTUAL','lower','options','lodash','moment'];(function(_0x68c4cf,_0x1aa460){var _0x2412c5=function(_0x4dbc30){while(--_0x4dbc30){_0x68c4cf['push'](_0x68c4cf['shift']());}};_0x2412c5(++_0x1aa460);}(_0x506a,0x1c6));var _0xa506=function(_0x5603b9,_0x2f72b4){_0x5603b9=_0x5603b9-0x0;var _0x5dabec=_0x506a[_0x5603b9];return _0x5dabec;};'use strict';var _=require(_0xa506('0x0'));var sequelize=require('sequelize');var moment=require(_0xa506('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2ae955){var _0x158285=['ne'];try{var _0x5859ae=JSON['parse'](_0x2ae955);var _0x20fb9f=Object[_0xa506('0x2')](_0x5859ae)[0x0];return _0x158285[_0xa506('0x3')](_0x20fb9f);}catch(_0x1b1916){return![];}}function getOperatorValue(_0x1d7afa){var _0x2ecd3e=JSON['parse'](_0x1d7afa);var _0x691c05=Object[_0xa506('0x2')](_0x2ecd3e)[0x0];var _0x49f0b5=_0x2ecd3e[_0x691c05];return{['$'+_0x691c05]:_0x49f0b5};}exports[_0xa506('0x4')]=function(_0xd0a405){var _0x1671ee=null;if(_0xd0a405){_0x1671ee=_0xd0a405[_0xa506('0x5')](',');}return _0x1671ee;};exports[_0xa506('0x6')]=function(_0x44e5fe,_0x186e66){var _0x302a08={};if(!_[_0xa506('0x7')](_0x44e5fe)){_['forOwn'](_0x44e5fe,function(_0x31c466,_0x35afa9){try{if(_0x186e66){var _0x21cf74=_['find'](_0x186e66,{'name':_0x35afa9})||{};if(hasSequelizeOperator(_0x31c466)){_0x302a08[_0x35afa9]=getOperatorValue(_0x31c466);}else if(_0x21cf74['type']==='DATE'&&_[_0xa506('0x8')](_0x31c466)){var _0x598b8a=JSON[_0xa506('0x9')](_0x31c466);var _0x21059a={'$gte':moment(moment(_0x598b8a['$gte'])[_0xa506('0xa')](_0xa506('0xb')))[_0xa506('0xc')]()[_0xa506('0xa')](),'$lte':moment(moment(_0x598b8a[_0xa506('0xd')])[_0xa506('0xa')](_0xa506('0xb')))[_0xa506('0xc')]()[_0xa506('0xe')](0x1,'s')[_0xa506('0xa')]()};_0x302a08[_0x35afa9]=_0x21059a;}else if(_0x21cf74[_0xa506('0xf')]==='uniqueid'){_0x302a08[_0x35afa9]=_0x31c466;}else{_0x302a08[_0x35afa9]=_['isArray'](_0x31c466)?_0x31c466:JSON[_0xa506('0x9')](_0x31c466);}}else{_0x302a08[_0x35afa9]=_['isArray'](_0x31c466)?_0x31c466:JSON[_0xa506('0x9')](_0x31c466);}}catch(_0x46241e){_0x302a08[_0x35afa9]=_0x31c466[_0xa506('0x5')](',');}});}return _0x302a08;};exports[_0xa506('0x10')]=function(_0x20ebec){_0x20ebec=parseInt(_0x20ebec,0xa);if(!_0x20ebec||_0x20ebec<0x0){_0x20ebec=LIMIT_VALUE;}return _0x20ebec;};exports['offset']=function(_0x3e6798){_0x3e6798=parseInt(_0x3e6798,0xa);if(!_0x3e6798||_0x3e6798<0x0){_0x3e6798=0x0;}return _0x3e6798;};exports[_0xa506('0x11')]=function(_0x3390d7){var _0x3244d2,_0x5c9c0a=null;if(_0x3390d7){_0x3244d2=_0x3390d7[_0xa506('0x5')](',');_0x5c9c0a=_[_0xa506('0x12')](_0x3244d2,function(_0x38e17b){if(_0x38e17b[_0xa506('0x13')]('-')===0x0){return[_0x38e17b===_0xa506('0x14')?sequelize[_0xa506('0x15')](sequelize[_0xa506('0x16')](_0xa506('0x14')),_0xa506('0x17')):_0x38e17b[_0xa506('0x18')](0x1),_0xa506('0x19')];}else{return[_0x38e17b===_0xa506('0x14')?sequelize[_0xa506('0x15')](sequelize[_0xa506('0x16')](_0xa506('0x14')),_0xa506('0x17')):_0x38e17b,'ASC'];}});}return _0x5c9c0a;};exports[_0xa506('0x1a')]=function(_0x5dc6f1,_0x211d14){if(_[_0xa506('0x7')](_0x5dc6f1)){return _0x5dc6f1;}if(_[_0xa506('0x1b')](_0x5dc6f1)){for(var _0x5d7f51=0x0;_0x5d7f51<_0x5dc6f1[_0xa506('0x1c')];_0x5d7f51+=0x1){_0x5dc6f1[_0x5d7f51]=this[_0xa506('0x1a')](_0x5dc6f1[_0x5d7f51],_0x211d14);}return _0x5dc6f1;}if(!_[_0xa506('0x1d')](_0x5dc6f1)){return _0x5dc6f1;}if(_[_0xa506('0x1e')](_0x211d14)){_0x211d14=[_0x211d14];}if(!_['isArray'](_0x211d14)){return _0x5dc6f1;}for(var _0x7e1e3d=0x0;_0x7e1e3d<_0x211d14[_0xa506('0x1c')];_0x7e1e3d+=0x1){_['unset'](_0x5dc6f1,_0x211d14[_0x7e1e3d]);}for(var _0x591847 in _0x5dc6f1){if(_0x5dc6f1[_0xa506('0x1f')](_0x591847)){_0x5dc6f1[_0x591847]=this[_0xa506('0x1a')](_0x5dc6f1[_0x591847],_0x211d14);}}return _0x5dc6f1;};exports['isNumeric']=function(_0x133a2e){return _0x133a2e[_0xa506('0x20')](RegExp(_0xa506('0x21')))?!![]:![];};exports[_0xa506('0x22')]=function(_0xb69a79){return _0xb69a79[_0xa506('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xa506('0x23')]=function(_0x1683e0){var _0x5e16c0=[];_0x1683e0[_0xa506('0x5')](/[ ,]+/)[_0xa506('0x24')](function(_0x2bfb49){_0x2bfb49=_0x2bfb49[_0xa506('0x25')](/([^:]")"+/g,'$1');_0x2bfb49='+'+_0x2bfb49+'*';if(_0x2bfb49['includes']('@'))_0x2bfb49='\x22'+_0x2bfb49+'\x22';_0x5e16c0[_0xa506('0x26')](_0x2bfb49);});return _0x5e16c0[_0xa506('0x27')]('\x20');};exports[_0xa506('0x28')]=function(_0x4af2b5,_0x4c27e9,_0x120a16){var _0x21bbdf={},_0x942c87={};if(_0x4c27e9['query'][_0xa506('0x29')]){_0x4c27e9[_0xa506('0x2a')]['id']=_0x4c27e9[_0xa506('0x2a')][_0xa506('0x29')];delete _0x4c27e9[_0xa506('0x2a')]['$id'];}_0x21bbdf['model']=_[_0xa506('0x12')](_0x4af2b5,_0xa506('0xf'));_0x21bbdf[_0xa506('0x2a')]=_[_0xa506('0x2')](_0x4c27e9['query']);_0x21bbdf[_0xa506('0x6')]=_[_0xa506('0x2b')](_0x21bbdf[_0xa506('0x2c')],_0x21bbdf['query']);_0x942c87[_0xa506('0x2d')]=_[_0xa506('0x2b')](_0x21bbdf[_0xa506('0x2c')],this[_0xa506('0x4')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x4')]));_0x942c87['attributes']=_0x942c87[_0xa506('0x2d')][_0xa506('0x1c')]?_0x942c87['attributes']:_0x21bbdf['model'];if(!_0x4c27e9[_0xa506('0x2a')]['hasOwnProperty']('nolimit')){_0x942c87[_0xa506('0x10')]=this[_0xa506('0x10')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x10')]);_0x942c87['offset']=this[_0xa506('0x2e')](_0x4c27e9['query']['offset']);}_0x942c87[_0xa506('0x2f')]=this[_0xa506('0x11')](_0x4c27e9[_0xa506('0x2a')][_0xa506('0x11')]);_0x942c87[_0xa506('0x30')]=this[_0xa506('0x6')](_['pick'](_0x4c27e9['query'],_0x21bbdf[_0xa506('0x6')]),_0x4af2b5);if(_0x4c27e9['query'][_0xa506('0x31')]){var _0x591a8c=_0x4af2b5;var _0x5b4a2e=_0x4c27e9[_0xa506('0x2a')][_0xa506('0x31')];if(typeof _0x5b4a2e===_0xa506('0x32')){_0x591a8c=_[_0xa506('0x31')](_0x4af2b5,function(_0x12cf17){return _['includes'](_0x5b4a2e[_0xa506('0x33')],_0x12cf17[_0xa506('0xf')]);});_0x5b4a2e=_0x5b4a2e[_0xa506('0x34')];}_0x942c87[_0xa506('0x30')]=_['merge'](_0x942c87[_0xa506('0x30')],{'$or':_[_0xa506('0x12')](_0x591a8c,function(_0x41a855){if(_0x41a855[_0xa506('0x35')]!==_0xa506('0x36')){if(_0x120a16){return sequelize['where'](sequelize['fn'](_0xa506('0x37'),sequelize[_0xa506('0x16')](_0x41a855[_0xa506('0xf')])),{'$like':sequelize['fn']('lower','%'+_0x4c27e9[_0xa506('0x2a')][_0xa506('0x31')]+'%')});}else{var _0x15379c={};_0x15379c[_0x41a855[_0xa506('0xf')]]={'$like':'%'+_0x4c27e9[_0xa506('0x2a')]['filter']+'%'};return _0x15379c;}}})});}_0x942c87=_['merge']({},_0x942c87,_0x4c27e9[_0xa506('0x38')]);return _0x942c87;};
\ No newline at end of file
+var _0x1782=['keys','includes','fields','filters','isEmpty','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','ASC','length','omit','isString','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','split','forEach','join','getOptions','$id','query','model','intersection','attributes','order','where','filter','object','value','VIRTUAL','lower','merge','options','lodash','sequelize','moment','parse'];(function(_0x287a47,_0x2f731c){var _0x3fb726=function(_0xbedc33){while(--_0xbedc33){_0x287a47['push'](_0x287a47['shift']());}};_0x3fb726(++_0x2f731c);}(_0x1782,0x199));var _0x2178=function(_0x56b878,_0x4be9aa){_0x56b878=_0x56b878-0x0;var _0x32b9ec=_0x1782[_0x56b878];return _0x32b9ec;};'use strict';var _=require(_0x2178('0x0'));var sequelize=require(_0x2178('0x1'));var moment=require(_0x2178('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x192724){var _0x5dd3a7=['ne'];try{var _0x349cb9=JSON[_0x2178('0x3')](_0x192724);var _0x2fbbbd=Object[_0x2178('0x4')](_0x349cb9)[0x0];return _0x5dd3a7[_0x2178('0x5')](_0x2fbbbd);}catch(_0x523e8a){return![];}}function getOperatorValue(_0x378772){var _0x4078ab=JSON['parse'](_0x378772);var _0x298290=Object['keys'](_0x4078ab)[0x0];var _0x40444d=_0x4078ab[_0x298290];return{['$'+_0x298290]:_0x40444d};}exports[_0x2178('0x6')]=function(_0x1e2caf){var _0x2d5d30=null;if(_0x1e2caf){_0x2d5d30=_0x1e2caf['split'](',');}return _0x2d5d30;};exports[_0x2178('0x7')]=function(_0x227c21,_0x3ed469){var _0x1601ca={};if(!_[_0x2178('0x8')](_0x227c21)){_['forOwn'](_0x227c21,function(_0x5b4312,_0x1675fd){try{if(_0x3ed469){var _0x85bf9a=_['find'](_0x3ed469,{'name':_0x1675fd})||{};if(hasSequelizeOperator(_0x5b4312)){_0x1601ca[_0x1675fd]=getOperatorValue(_0x5b4312);}else if(_0x85bf9a[_0x2178('0x9')]===_0x2178('0xa')&&_[_0x2178('0xb')](_0x5b4312)){var _0x4f9eb8=JSON['parse'](_0x5b4312);var _0x24643a={'$gte':moment(moment(_0x4f9eb8[_0x2178('0xc')])[_0x2178('0xd')](_0x2178('0xe')))[_0x2178('0xf')]()[_0x2178('0xd')](),'$lte':moment(moment(_0x4f9eb8[_0x2178('0x10')])[_0x2178('0xd')](_0x2178('0xe')))[_0x2178('0xf')]()[_0x2178('0x11')](0x1,'s')['format']()};_0x1601ca[_0x1675fd]=_0x24643a;}else if(_0x85bf9a[_0x2178('0x12')]===_0x2178('0x13')){_0x1601ca[_0x1675fd]=_0x5b4312;}else{_0x1601ca[_0x1675fd]=_[_0x2178('0x14')](_0x5b4312)?_0x5b4312:JSON[_0x2178('0x3')](_0x5b4312);}}else{_0x1601ca[_0x1675fd]=_[_0x2178('0x14')](_0x5b4312)?_0x5b4312:JSON[_0x2178('0x3')](_0x5b4312);}}catch(_0x101c0d){_0x1601ca[_0x1675fd]=_0x5b4312['split'](',');}});}return _0x1601ca;};exports[_0x2178('0x15')]=function(_0x59e360){_0x59e360=parseInt(_0x59e360,0xa);if(!_0x59e360||_0x59e360<0x0){_0x59e360=LIMIT_VALUE;}return _0x59e360;};exports[_0x2178('0x16')]=function(_0x25f58a){_0x25f58a=parseInt(_0x25f58a,0xa);if(!_0x25f58a||_0x25f58a<0x0){_0x25f58a=0x0;}return _0x25f58a;};exports[_0x2178('0x17')]=function(_0x9aca94){var _0x32c784,_0x3cfb05=null;if(_0x9aca94){_0x32c784=_0x9aca94['split'](',');_0x3cfb05=_[_0x2178('0x18')](_0x32c784,function(_0x4c8869){if(_0x4c8869[_0x2178('0x19')]('-')===0x0){return[_0x4c8869===_0x2178('0x1a')?sequelize[_0x2178('0x1b')](sequelize[_0x2178('0x1c')](_0x2178('0x1a')),_0x2178('0x1d')):_0x4c8869[_0x2178('0x1e')](0x1),'DESC'];}else{return[_0x4c8869===_0x2178('0x1a')?sequelize['cast'](sequelize['col'](_0x2178('0x1a')),_0x2178('0x1d')):_0x4c8869,_0x2178('0x1f')];}});}return _0x3cfb05;};exports['omit']=function(_0x5b5ef9,_0xdbef47){if(_[_0x2178('0x8')](_0x5b5ef9)){return _0x5b5ef9;}if(_['isArray'](_0x5b5ef9)){for(var _0x429435=0x0;_0x429435<_0x5b5ef9[_0x2178('0x20')];_0x429435+=0x1){_0x5b5ef9[_0x429435]=this[_0x2178('0x21')](_0x5b5ef9[_0x429435],_0xdbef47);}return _0x5b5ef9;}if(!_['isObject'](_0x5b5ef9)){return _0x5b5ef9;}if(_[_0x2178('0x22')](_0xdbef47)){_0xdbef47=[_0xdbef47];}if(!_[_0x2178('0x14')](_0xdbef47)){return _0x5b5ef9;}for(var _0x339bb3=0x0;_0x339bb3<_0xdbef47['length'];_0x339bb3+=0x1){_['unset'](_0x5b5ef9,_0xdbef47[_0x339bb3]);}for(var _0x7af98b in _0x5b5ef9){if(_0x5b5ef9[_0x2178('0x23')](_0x7af98b)){_0x5b5ef9[_0x7af98b]=this[_0x2178('0x21')](_0x5b5ef9[_0x7af98b],_0xdbef47);}}return _0x5b5ef9;};exports[_0x2178('0x24')]=function(_0x50b8f5){return _0x50b8f5[_0x2178('0x25')](RegExp(_0x2178('0x26')))?!![]:![];};exports[_0x2178('0x27')]=function(_0x521c63){return _0x521c63[_0x2178('0x25')](/^\S+@\S+$/)?!![]:![];};exports[_0x2178('0x28')]=function(_0xc90f1){var _0x39867f=[];_0xc90f1[_0x2178('0x29')](/[ ,]+/)[_0x2178('0x2a')](function(_0x28c5c4){_0x28c5c4=_0x28c5c4['replace'](/([^:]")"+/g,'$1');_0x28c5c4='+'+_0x28c5c4+'*';if(_0x28c5c4[_0x2178('0x5')]('@'))_0x28c5c4='\x22'+_0x28c5c4+'\x22';_0x39867f['push'](_0x28c5c4);});return _0x39867f[_0x2178('0x2b')]('\x20');};exports[_0x2178('0x2c')]=function(_0x1dc432,_0x3909fc,_0x257f47){var _0x532d77={},_0x343014={};if(_0x3909fc['query'][_0x2178('0x2d')]){_0x3909fc[_0x2178('0x2e')]['id']=_0x3909fc['query']['$id'];delete _0x3909fc['query'][_0x2178('0x2d')];}_0x532d77[_0x2178('0x2f')]=_[_0x2178('0x18')](_0x1dc432,_0x2178('0x12'));_0x532d77[_0x2178('0x2e')]=_[_0x2178('0x4')](_0x3909fc['query']);_0x532d77[_0x2178('0x7')]=_[_0x2178('0x30')](_0x532d77[_0x2178('0x2f')],_0x532d77[_0x2178('0x2e')]);_0x343014[_0x2178('0x31')]=_[_0x2178('0x30')](_0x532d77[_0x2178('0x2f')],this[_0x2178('0x6')](_0x3909fc[_0x2178('0x2e')][_0x2178('0x6')]));_0x343014[_0x2178('0x31')]=_0x343014['attributes'][_0x2178('0x20')]?_0x343014[_0x2178('0x31')]:_0x532d77[_0x2178('0x2f')];if(!_0x3909fc[_0x2178('0x2e')][_0x2178('0x23')]('nolimit')){_0x343014[_0x2178('0x15')]=this[_0x2178('0x15')](_0x3909fc[_0x2178('0x2e')]['limit']);_0x343014[_0x2178('0x16')]=this[_0x2178('0x16')](_0x3909fc[_0x2178('0x2e')][_0x2178('0x16')]);}_0x343014[_0x2178('0x32')]=this[_0x2178('0x17')](_0x3909fc['query'][_0x2178('0x17')]);_0x343014[_0x2178('0x33')]=this['filters'](_['pick'](_0x3909fc[_0x2178('0x2e')],_0x532d77[_0x2178('0x7')]),_0x1dc432);if(_0x3909fc['query'][_0x2178('0x34')]){var _0x1c8ac4=_0x1dc432;var _0x309f7b=_0x3909fc['query']['filter'];if(typeof _0x309f7b===_0x2178('0x35')){_0x1c8ac4=_['filter'](_0x1dc432,function(_0x32b214){return _['includes'](_0x309f7b['columns'],_0x32b214['name']);});_0x309f7b=_0x309f7b[_0x2178('0x36')];}_0x343014['where']=_['merge'](_0x343014[_0x2178('0x33')],{'$or':_[_0x2178('0x18')](_0x1c8ac4,function(_0x32ca14){if(_0x32ca14[_0x2178('0x9')]!==_0x2178('0x37')){if(_0x257f47){return sequelize[_0x2178('0x33')](sequelize['fn'](_0x2178('0x38'),sequelize[_0x2178('0x1c')](_0x32ca14[_0x2178('0x12')])),{'$like':sequelize['fn'](_0x2178('0x38'),'%'+_0x3909fc[_0x2178('0x2e')][_0x2178('0x34')]+'%')});}else{var _0x33f58d={};_0x33f58d[_0x32ca14[_0x2178('0x12')]]={'$like':'%'+_0x3909fc['query'][_0x2178('0x34')]+'%'};return _0x33f58d;}}})});}_0x343014=_[_0x2178('0x39')]({},_0x343014,_0x3909fc[_0x2178('0x3a')]);return _0x343014;};
\ No newline at end of file
index 856251b..2de6e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d24=['test','appPath','use','json\x20replacer','split','static','/server/views','html','ejs','renderFile','view\x20engine','50mb','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','passport','cors','moment','../mysqldb','default','get','env','production','set','join','root','public','development'];(function(_0x6317d6,_0x424384){var _0x5add4d=function(_0x176118){while(--_0x176118){_0x6317d6['push'](_0x6317d6['shift']());}};_0x5add4d(++_0x424384);}(_0x5d24,0xf4));var _0x45d2=function(_0x53101c,_0x527a86){_0x53101c=_0x53101c-0x0;var _0x26ebff=_0x5d24[_0x53101c];return _0x26ebff;};'use strict';var express=require(_0x45d2('0x0'));var favicon=require(_0x45d2('0x1'));var bodyParser=require(_0x45d2('0x2'));var methodOverride=require(_0x45d2('0x3'));var cookieParser=require(_0x45d2('0x4'));var errorHandler=require(_0x45d2('0x5'));var path=require(_0x45d2('0x6'));var passport=require(_0x45d2('0x7'));var cors=require(_0x45d2('0x8'));var moment=require(_0x45d2('0x9'));var config=require('./environment');var db=require(_0x45d2('0xa'))['db'];exports[_0x45d2('0xb')]=function(_0x5ea464){var _0x524d23=_0x5ea464[_0x45d2('0xc')](_0x45d2('0xd'));if(_0x524d23===_0x45d2('0xe')){_0x5ea464[_0x45d2('0xf')]('appPath',path[_0x45d2('0x10')](config[_0x45d2('0x11')],_0x45d2('0x12')));}if(_0x524d23===_0x45d2('0x13')||_0x524d23===_0x45d2('0x14')){_0x5ea464[_0x45d2('0xf')](_0x45d2('0x15'),path[_0x45d2('0x10')](config[_0x45d2('0x11')],'client'));_0x5ea464[_0x45d2('0x16')](errorHandler());}_0x5ea464[_0x45d2('0xf')](_0x45d2('0x17'),function(_0x14b41b,_0x580d59){if(this[_0x14b41b]instanceof Date){_0x580d59=this[_0x14b41b]['toISOString']()[_0x45d2('0x18')]('.')[0x0]+'Z';}return _0x580d59;});_0x5ea464['use'](express[_0x45d2('0x19')](_0x5ea464[_0x45d2('0xc')]('appPath')));_0x5ea464[_0x45d2('0xf')]('views',config[_0x45d2('0x11')]+_0x45d2('0x1a'));_0x5ea464['engine'](_0x45d2('0x1b'),require(_0x45d2('0x1c'))[_0x45d2('0x1d')]);_0x5ea464['set'](_0x45d2('0x1e'),_0x45d2('0x1b'));_0x5ea464[_0x45d2('0x16')](bodyParser['urlencoded']({'limit':_0x45d2('0x1f'),'extended':!![]}));_0x5ea464[_0x45d2('0x16')](bodyParser['json']({'limit':_0x45d2('0x1f')}));_0x5ea464[_0x45d2('0x16')](cors());_0x5ea464[_0x45d2('0x16')](methodOverride());_0x5ea464[_0x45d2('0x16')](cookieParser());_0x5ea464[_0x45d2('0x16')](passport[_0x45d2('0x20')]());};
\ No newline at end of file
+var _0xb8a4=['initialize','express','serve-favicon','method-override','cookie-parser','path','passport','cors','moment','./environment','../mysqldb','default','get','production','appPath','join','root','public','test','set','client','use','json\x20replacer','toISOString','split','static','engine','html','renderFile','view\x20engine','urlencoded','50mb'];(function(_0x2bd20f,_0x4d6277){var _0x613789=function(_0x3ef730){while(--_0x3ef730){_0x2bd20f['push'](_0x2bd20f['shift']());}};_0x613789(++_0x4d6277);}(_0xb8a4,0x141));var _0x4b8a=function(_0x1adb04,_0x573de9){_0x1adb04=_0x1adb04-0x0;var _0x37bdf8=_0xb8a4[_0x1adb04];return _0x37bdf8;};'use strict';var express=require(_0x4b8a('0x0'));var favicon=require(_0x4b8a('0x1'));var bodyParser=require('body-parser');var methodOverride=require(_0x4b8a('0x2'));var cookieParser=require(_0x4b8a('0x3'));var errorHandler=require('errorhandler');var path=require(_0x4b8a('0x4'));var passport=require(_0x4b8a('0x5'));var cors=require(_0x4b8a('0x6'));var moment=require(_0x4b8a('0x7'));var config=require(_0x4b8a('0x8'));var db=require(_0x4b8a('0x9'))['db'];exports[_0x4b8a('0xa')]=function(_0x564a46){var _0x18fc92=_0x564a46[_0x4b8a('0xb')]('env');if(_0x18fc92===_0x4b8a('0xc')){_0x564a46['set'](_0x4b8a('0xd'),path[_0x4b8a('0xe')](config[_0x4b8a('0xf')],_0x4b8a('0x10')));}if(_0x18fc92==='development'||_0x18fc92===_0x4b8a('0x11')){_0x564a46[_0x4b8a('0x12')](_0x4b8a('0xd'),path['join'](config[_0x4b8a('0xf')],_0x4b8a('0x13')));_0x564a46[_0x4b8a('0x14')](errorHandler());}_0x564a46[_0x4b8a('0x12')](_0x4b8a('0x15'),function(_0x5b1639,_0x1ca077){if(this[_0x5b1639]instanceof Date){_0x1ca077=this[_0x5b1639][_0x4b8a('0x16')]()[_0x4b8a('0x17')]('.')[0x0]+'Z';}return _0x1ca077;});_0x564a46[_0x4b8a('0x14')](express[_0x4b8a('0x18')](_0x564a46[_0x4b8a('0xb')](_0x4b8a('0xd'))));_0x564a46[_0x4b8a('0x12')]('views',config[_0x4b8a('0xf')]+'/server/views');_0x564a46[_0x4b8a('0x19')](_0x4b8a('0x1a'),require('ejs')[_0x4b8a('0x1b')]);_0x564a46[_0x4b8a('0x12')](_0x4b8a('0x1c'),'html');_0x564a46[_0x4b8a('0x14')](bodyParser[_0x4b8a('0x1d')]({'limit':_0x4b8a('0x1e'),'extended':!![]}));_0x564a46['use'](bodyParser['json']({'limit':_0x4b8a('0x1e')}));_0x564a46['use'](cors());_0x564a46[_0x4b8a('0x14')](methodOverride());_0x564a46[_0x4b8a('0x14')](cookieParser());_0x564a46[_0x4b8a('0x14')](passport[_0x4b8a('0x1f')]());};
\ No newline at end of file
index bb33d25..6d47db3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4842=['../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','update','digest','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','macAddress','ipAddress','hex','substring','crypto','child_process','execSync'];(function(_0x25d608,_0x217360){var _0x591793=function(_0x37e5f0){while(--_0x37e5f0){_0x25d608['push'](_0x25d608['shift']());}};_0x591793(++_0x217360);}(_0x4842,0x1b9));var _0x2484=function(_0x4f8c09,_0x484964){_0x4f8c09=_0x4f8c09-0x0;var _0x4c648f=_0x4842[_0x4f8c09];return _0x4c648f;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x2484('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0x2484('0x1'))[_0x2484('0x2')];var config=require(_0x2484('0x3'));function getInterfaces(){var _0x1ab81c=[];var _0xd25adb=os[_0x2484('0x4')]();var _0x180b3d=_[_0x2484('0x5')](_[_0x2484('0x6')](_0xd25adb));for(var _0x374329=0x0;_0x374329<_0x180b3d[_0x2484('0x7')];_0x374329++){var _0x1eafd8=_0xd25adb[_0x180b3d[_0x374329]][_0x2484('0x8')](function(_0x278898){return _0x278898[_0x2484('0x9')]===_0x2484('0xa')&&_0x278898[_0x2484('0xb')]===![];});_0x1ab81c=_0x1ab81c[_0x2484('0xc')](_0x1eafd8);}return _0x1ab81c;}function getFirstInterface(){var _0x411d61=_[_0x2484('0xd')](getInterfaces());return{'macAddress':_0x411d61&&_0x411d61[_0x2484('0xe')]?_0x411d61[_0x2484('0xe')]:_0x2484('0xf'),'ipAddress':_0x411d61&&_0x411d61[_0x2484('0x10')]?_0x411d61[_0x2484('0x10')]:_0x2484('0x11')};}exports[_0x2484('0x12')]=getFirstInterface;function getCPUhash(){var _0x6d5c58=_[_0x2484('0x5')](os[_0x2484('0x13')]()[_0x2484('0x14')](function(_0x2a72ca){return _0x2a72ca[_0x2484('0x15')];}))[_0x2484('0x16')](':');return crypto[_0x2484('0x17')](_0x2484('0x18'))[_0x2484('0x19')](_0x6d5c58)[_0x2484('0x1a')]('hex');}exports[_0x2484('0x1b')]=function(){var _0x2d615d=os[_0x2484('0x1c')]();var _0x5c7bad=/[0-9a-f-]{36}/;if(config[_0x2484('0x1d')]&&_0x5c7bad['test'](config[_0x2484('0x1d')])){return config[_0x2484('0x1d')];}else if(_0x2d615d===_0x2484('0x1e')){return exec(_0x2484('0x1f'),{'encoding':'utf8'})[_0x2484('0x20')]('\x0d\x0a','');}else{var _0x134c6d=getFirstInterface();var _0x5969f8=getCPUhash();var _0x58c8bd=_0x5969f8+'|'+os['hostname']()+'|'+_0x134c6d[_0x2484('0x21')]+'|'+_0x134c6d[_0x2484('0x22')];var _0x5f2bd9=crypto['createHash']('md5')[_0x2484('0x19')](_0x58c8bd)[_0x2484('0x1a')](_0x2484('0x23'));return _0x5f2bd9['substring'](0x0,0x8)+'-'+_0x5f2bd9[_0x2484('0x24')](0x8,0xc)+'-'+_0x5f2bd9['substring'](0xc,0x10)+'-'+_0x5f2bd9[_0x2484('0x24')](0x10,0x14)+'-'+_0x5f2bd9[_0x2484('0x24')](0x14);}};
\ No newline at end of file
+var _0xa55a=['lodash','crypto','bimedia-machine-uuid','../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','hex','getUuid','platform','test','licenseToken','dmidecode\x20--string\x20system-uuid','utf8','replace','update','digest','substring'];(function(_0x336a36,_0x51029a){var _0x4134a3=function(_0x369852){while(--_0x369852){_0x336a36['push'](_0x336a36['shift']());}};_0x4134a3(++_0x51029a);}(_0xa55a,0x181));var _0xaa55=function(_0xb690c0,_0x10a05a){_0xb690c0=_0xb690c0-0x0;var _0x5e81b9=_0xa55a[_0xb690c0];return _0x5e81b9;};'use strict';var _=require(_0xaa55('0x0'));var os=require('os');var crypto=require(_0xaa55('0x1'));var machine=require(_0xaa55('0x2'));var exec=require('child_process')['execSync'];var config=require(_0xaa55('0x3'));function getInterfaces(){var _0x5f56a7=[];var _0x4ef3be=os[_0xaa55('0x4')]();var _0x5e1eac=_[_0xaa55('0x5')](_[_0xaa55('0x6')](_0x4ef3be));for(var _0xda8430=0x0;_0xda8430<_0x5e1eac[_0xaa55('0x7')];_0xda8430++){var _0x547353=_0x4ef3be[_0x5e1eac[_0xda8430]][_0xaa55('0x8')](function(_0x53fd75){return _0x53fd75[_0xaa55('0x9')]===_0xaa55('0xa')&&_0x53fd75[_0xaa55('0xb')]===![];});_0x5f56a7=_0x5f56a7[_0xaa55('0xc')](_0x547353);}return _0x5f56a7;}function getFirstInterface(){var _0x5b611f=_[_0xaa55('0xd')](getInterfaces());return{'macAddress':_0x5b611f&&_0x5b611f[_0xaa55('0xe')]?_0x5b611f[_0xaa55('0xe')]:'00:00:00:00:00:00','ipAddress':_0x5b611f&&_0x5b611f[_0xaa55('0xf')]?_0x5b611f[_0xaa55('0xf')]:_0xaa55('0x10')};}exports[_0xaa55('0x11')]=getFirstInterface;function getCPUhash(){var _0x9e26fd=_[_0xaa55('0x5')](os[_0xaa55('0x12')]()[_0xaa55('0x13')](function(_0x244f6f){return _0x244f6f[_0xaa55('0x14')];}))[_0xaa55('0x15')](':');return crypto[_0xaa55('0x16')](_0xaa55('0x17'))['update'](_0x9e26fd)['digest'](_0xaa55('0x18'));}exports[_0xaa55('0x19')]=function(){var _0x41c2d6=os[_0xaa55('0x1a')]();var _0x469202=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x469202[_0xaa55('0x1b')](config['licenseToken'])){return config[_0xaa55('0x1c')];}else if(_0x41c2d6==='win32'){return exec(_0xaa55('0x1d'),{'encoding':_0xaa55('0x1e')})[_0xaa55('0x1f')]('\x0d\x0a','');}else{var _0x50c3c6=getFirstInterface();var _0x520cfd=getCPUhash();var _0x3b0418=_0x520cfd+'|'+os['hostname']()+'|'+_0x50c3c6['macAddress']+'|'+_0x50c3c6['ipAddress'];var _0x5ad97c=crypto[_0xaa55('0x16')](_0xaa55('0x17'))[_0xaa55('0x20')](_0x3b0418)[_0xaa55('0x21')](_0xaa55('0x18'));return _0x5ad97c['substring'](0x0,0x8)+'-'+_0x5ad97c[_0xaa55('0x22')](0x8,0xc)+'-'+_0x5ad97c['substring'](0xc,0x10)+'-'+_0x5ad97c[_0xaa55('0x22')](0x10,0x14)+'-'+_0x5ad97c['substring'](0x14);}};
\ No newline at end of file
index e606649..024432b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34a8=['findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data2','data1','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','update','encryptString','YYYY-MM-DD\x20HH:mm','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License'];(function(_0x5e4288,_0x45bddd){var _0x542537=function(_0x3fdbf0){while(--_0x3fdbf0){_0x5e4288['push'](_0x5e4288['shift']());}};_0x542537(++_0x45bddd);}(_0x34a8,0x163));var _0x834a=function(_0x26f963,_0x27543e){_0x26f963=_0x26f963-0x0;var _0x19ce83=_0x34a8[_0x26f963];return _0x19ce83;};'use strict';var util=require(_0x834a('0x0'));var moment=require(_0x834a('0x1'));var rp=require(_0x834a('0x2'));var BPromise=require(_0x834a('0x3'));var pkginfo=require(_0x834a('0x4'))(module,_0x834a('0x5'));var db=require(_0x834a('0x6'))['db'];var encryptor=require(_0x834a('0x7'));var hardware=require('./hardware');var logger=require(_0x834a('0x8'))(_0x834a('0x9'));var HOST=_0x834a('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x2fcd2a){return new BPromise(function(_0x2a8612,_0x48a8ac){var _0x1a4349=util[_0x834a('0xb')](_0x834a('0xc'),HOST,_0x2fcd2a,module[_0x834a('0xd')]['version']);if(oldToken){_0x1a4349=util['format'](_0x834a('0xe'),HOST,_0x2fcd2a,module[_0x834a('0xd')][_0x834a('0x5')],oldToken);}var _0x31d2cf={'uri':_0x1a4349,'method':_0x834a('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x31d2cf)[_0x834a('0x10')](function(_0x3ca547){_0x2a8612(_0x3ca547);})[_0x834a('0x11')](function(_0x16dbaa){_0x48a8ac(_0x16dbaa);});});}function manageLicense(_0x2f041e,_0x376619){var _0x1e2478=_0x376619[_0x834a('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x1e2478['data1']!==_0x2f041e&&!_0x1e2478[_0x834a('0x13')]){oldToken=_0x1e2478[_0x834a('0x14')];}httpRequest(_0x2f041e)[_0x834a('0x10')](function(_0x449bb3){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x449bb3[_0x834a('0x15')]){isOldTokenSent=![];if(!_0x1e2478[_0x834a('0x9')]&&_0x1e2478['license']!=_0x449bb3[_0x834a('0x9')]||_0x1e2478[_0x834a('0x9')]&&_0x1e2478[_0x834a('0x13')]){logger[_0x834a('0x16')](_0x834a('0x17'));}if(_0x1e2478[_0x834a('0x9')]&&!_0x1e2478[_0x834a('0x13')]&&_0x1e2478['license']!=_0x449bb3['license']){logger['info'](_0x834a('0x18'));}if(_0x1e2478[_0x834a('0x9')]&&!_0x1e2478[_0x834a('0x13')]&&_0x1e2478[_0x834a('0x9')]==_0x449bb3[_0x834a('0x9')]){return _0x376619;}return _0x376619['update']({'data1':_0x2f041e,'data2':null,'license':_0x449bb3[_0x834a('0x9')]});}else{if(_0x449bb3['license']||_0x1e2478[_0x834a('0x9')]){if(!_0x1e2478[_0x834a('0x13')]){if(_0x1e2478[_0x834a('0x14')]==_0x2f041e){GRAY_PERIOD_REASON=_0x834a('0x19');logger[_0x834a('0x16')](_0x834a('0x1a'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x834a('0x16')](_0x834a('0x1b'),_0x1e2478[_0x834a('0x14')],_0x2f041e);}logger['info'](_0x834a('0x1c'),GRAY_PERIOD_REASON[_0x834a('0x1d')](),moment()[_0x834a('0xb')]('YYYY-MM-DD\x20HH:mm'));return _0x376619[_0x834a('0x1e')]({'data2':encryptor[_0x834a('0x1f')](moment()[_0x834a('0xb')](_0x834a('0x20')))});}else{if(moment()['diff'](encryptor[_0x834a('0x21')](_0x1e2478[_0x834a('0x13')]),_0x834a('0x22'))>DAYS){logger[_0x834a('0x16')](_0x834a('0x23'),moment()[_0x834a('0xb')](_0x834a('0x20')));isOldTokenSent=![];return _0x376619[_0x834a('0x1e')]({'data1':_0x2f041e,'data2':null,'license':null});}}}else{if(_0x1e2478[_0x834a('0x14')]!=_0x2f041e){logger[_0x834a('0x16')](_0x834a('0x1b'),_0x1e2478[_0x834a('0x14')],_0x2f041e);return _0x376619['update']({'data1':_0x2f041e,'data2':null,'license':null});}}}return _0x376619;})['then'](function(_0xa4ce85){_0x376619=_0xa4ce85;})[_0x834a('0x11')](function(_0xa7f571){logger[_0x834a('0x24')](_0xa7f571[_0x834a('0x25')]);})[_0x834a('0x26')](function(){setTimeout(function(){manageLicense(hardware[_0x834a('0x27')](),_0x376619);},TIME);});}function defaultLicense(){var _0x3607ea=hardware[_0x834a('0x27')]();if(_0x3607ea){return db[_0x834a('0x28')][_0x834a('0x29')]({'where':{'id':0x1},'defaults':{'data1':_0x3607ea}})[_0x834a('0x2a')](function(_0x1f6224,_0x720306){logger[_0x834a('0x16')](_0x834a('0x2b'),_0x3607ea);manageLicense(_0x3607ea,_0x1f6224);})['catch'](function(_0x66dc15){logger[_0x834a('0x24')](_0x66dc15['message']);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0xf972=['THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','decryptString','days','message','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','../../mysqldb','../../components/encryptor','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','GET','then','catch','get','data1','data2','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','Disabled'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0xf972,0x140));var _0x2f97=function(_0x33bda2,_0x2baeae){_0x33bda2=_0x33bda2-0x0;var _0x9d65c8=_0xf972[_0x33bda2];return _0x9d65c8;};'use strict';var util=require(_0x2f97('0x0'));var moment=require(_0x2f97('0x1'));var rp=require(_0x2f97('0x2'));var BPromise=require(_0x2f97('0x3'));var pkginfo=require(_0x2f97('0x4'))(module,'version');var db=require(_0x2f97('0x5'))['db'];var encryptor=require(_0x2f97('0x6'));var hardware=require('./hardware');var logger=require('../logger')(_0x2f97('0x7'));var HOST=_0x2f97('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x330792){return new BPromise(function(_0x1b8456,_0x28f86f){var _0x154739=util[_0x2f97('0x9')](_0x2f97('0xa'),HOST,_0x330792,module[_0x2f97('0xb')]['version']);if(oldToken){_0x154739=util[_0x2f97('0x9')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x330792,module[_0x2f97('0xb')]['version'],oldToken);}var _0x389d61={'uri':_0x154739,'method':_0x2f97('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x389d61)[_0x2f97('0xd')](function(_0x2c799c){_0x1b8456(_0x2c799c);})[_0x2f97('0xe')](function(_0x1ea974){_0x28f86f(_0x1ea974);});});}function manageLicense(_0x5c42a9,_0x6dff86){var _0x3d884=_0x6dff86[_0x2f97('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x3d884[_0x2f97('0x10')]!==_0x5c42a9&&!_0x3d884[_0x2f97('0x11')]){oldToken=_0x3d884['data1'];}httpRequest(_0x5c42a9)[_0x2f97('0xd')](function(_0xc1c62e){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xc1c62e[_0x2f97('0x12')]){isOldTokenSent=![];if(!_0x3d884['license']&&_0x3d884[_0x2f97('0x7')]!=_0xc1c62e[_0x2f97('0x7')]||_0x3d884[_0x2f97('0x7')]&&_0x3d884[_0x2f97('0x11')]){logger['info'](_0x2f97('0x13'));}if(_0x3d884[_0x2f97('0x7')]&&!_0x3d884['data2']&&_0x3d884[_0x2f97('0x7')]!=_0xc1c62e[_0x2f97('0x7')]){logger[_0x2f97('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x3d884[_0x2f97('0x7')]&&!_0x3d884[_0x2f97('0x11')]&&_0x3d884['license']==_0xc1c62e[_0x2f97('0x7')]){return _0x6dff86;}return _0x6dff86['update']({'data1':_0x5c42a9,'data2':null,'license':_0xc1c62e[_0x2f97('0x7')]});}else{if(_0xc1c62e[_0x2f97('0x7')]||_0x3d884['license']){if(!_0x3d884[_0x2f97('0x11')]){if(_0x3d884[_0x2f97('0x10')]==_0x5c42a9){GRAY_PERIOD_REASON=_0x2f97('0x15');logger[_0x2f97('0x14')](_0x2f97('0x16'));}else{GRAY_PERIOD_REASON=_0x2f97('0x17');logger[_0x2f97('0x14')](_0x2f97('0x18'),_0x3d884[_0x2f97('0x10')],_0x5c42a9);}logger['info'](_0x2f97('0x19'),GRAY_PERIOD_REASON[_0x2f97('0x1a')](),moment()[_0x2f97('0x9')](_0x2f97('0x1b')));return _0x6dff86[_0x2f97('0x1c')]({'data2':encryptor['encryptString'](moment()[_0x2f97('0x9')](_0x2f97('0x1b')))});}else{if(moment()['diff'](encryptor[_0x2f97('0x1d')](_0x3d884[_0x2f97('0x11')]),_0x2f97('0x1e'))>DAYS){logger[_0x2f97('0x14')]('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x2f97('0x1b')));isOldTokenSent=![];return _0x6dff86[_0x2f97('0x1c')]({'data1':_0x5c42a9,'data2':null,'license':null});}}}else{if(_0x3d884[_0x2f97('0x10')]!=_0x5c42a9){logger[_0x2f97('0x14')](_0x2f97('0x18'),_0x3d884['data1'],_0x5c42a9);return _0x6dff86['update']({'data1':_0x5c42a9,'data2':null,'license':null});}}}return _0x6dff86;})[_0x2f97('0xd')](function(_0x178547){_0x6dff86=_0x178547;})[_0x2f97('0xe')](function(_0x30dccb){logger['error'](_0x30dccb[_0x2f97('0x1f')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x2f97('0x20')](),_0x6dff86);},TIME);});}function defaultLicense(){var _0x107e21=hardware[_0x2f97('0x20')]();if(_0x107e21){return db[_0x2f97('0x21')][_0x2f97('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x107e21}})[_0x2f97('0x23')](function(_0x4e81f4,_0x3ac71e){logger[_0x2f97('0x14')](_0x2f97('0x24'),_0x107e21);manageLicense(_0x107e21,_0x4e81f4);})[_0x2f97('0xe')](function(_0x531fe2){logger['error'](_0x531fe2['message']);});}}exports[_0x2f97('0x25')]=defaultLicense;
\ No newline at end of file
index 6d07424..73a4359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576c=['forEach','user','pick','admin','License\x20limit\x20reached\x20for\x20users','exports','util','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','License','find','defaults','then','catch','uuid','license','License\x20key\x20value\x20not\x20found','data1','data2','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','deadline','add','days','changed','message','findAll','role','sequelize','COUNT','col','count','telephone','users','telephones'];(function(_0x2b1551,_0x1776fe){var _0x2fc2a1=function(_0x5d43c8){while(--_0x5d43c8){_0x2b1551['push'](_0x2b1551['shift']());}};_0x2fc2a1(++_0x1776fe);}(_0x576c,0xbe));var _0xc576=function(_0x18e17f,_0x3616e8){_0x18e17f=_0x18e17f-0x0;var _0x5a9221=_0x576c[_0x18e17f];return _0x5a9221;};'use strict';var util=require(_0xc576('0x0'));var _=require('lodash');var moment=require('moment');var BPromise=require(_0xc576('0x1'));var hardware=require(_0xc576('0x2'));var encryptor=require(_0xc576('0x3'));var db=require(_0xc576('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc576('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc576('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc576('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc576('0x7'),'machineUuid':hardware[_0xc576('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5461b5){return new BPromise(function(_0xf35290,_0x57a52f){return db[_0xc576('0x9')][_0xc576('0xa')](_[_0xc576('0xb')](_0x5461b5,{'raw':!![],'where':{'id':0x1}}))[_0xc576('0xc')](function(_0x2a6179){return checkLicense(_0x2a6179,null);})[_0xc576('0xc')](function(_0x3d4147){_0xf35290(_0x3d4147);return;})[_0xc576('0xd')](function(_0x3597d7){_0x57a52f(_0x3597d7);});});}function checkLicense(_0x4c5535,_0x312b6a){if(!_0x4c5535){demoLicense[_0xc576('0xe')]=_0x4c5535['data1'];return demoLicense;}try{var _0x39e313=_0x312b6a||_0x4c5535[_0xc576('0xf')];if(_['isEmpty'](_0x39e313)){throw new Error(_0xc576('0x10'));}var _0x4cd00b=_0x4c5535[_0xc576('0x11')];var _0x2d2efd=_0x4c5535[_0xc576('0x12')];var _0x3e3ca8=_0x4cd00b[_0xc576('0x13')]('-')[0x4];var _0x4c85ae=_0x4cd00b[_0xc576('0x13')]('-')[0x0];var _0x1da58e=encryptor[_0xc576('0x14')](_0x39e313,util[_0xc576('0x15')](_0xc576('0x16'),_0x3e3ca8,_0x4cd00b,_0x4c85ae));var _0x4d6d19=JSON[_0xc576('0x17')](_0x1da58e);_0x4d6d19[_0xc576('0x18')]=![];_0x4d6d19[_0xc576('0xe')]=_0x4cd00b;_0x4d6d19[_0xc576('0x19')]=hardware[_0xc576('0x8')]();if(_0x2d2efd){var _0x46a27d=encryptor[_0xc576('0x14')](_0x2d2efd);_0x4d6d19['gray']=_0x46a27d;_0x4d6d19[_0xc576('0x1a')]=moment(_0x46a27d)[_0xc576('0x1b')](0x7,_0xc576('0x1c'))[_0xc576('0x15')]();_0x4d6d19['grayReason']=_0x4d6d19[_0xc576('0xe')]!=_0x4d6d19[_0xc576('0x19')]?_0xc576('0x1d'):'disabled';}return _0x4d6d19;}catch(_0x30f4a7){breakingLicense[_0xc576('0xe')]=_0x4c5535[_0xc576('0x11')];breakingLicense['message']=_0x30f4a7[_0xc576('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x52451a,_0xcfacfe){getLicense()[_0xc576('0xc')](function(_0x133fa7){return db['User'][_0xc576('0x1f')]({'attributes':[_0xc576('0x20'),[db[_0xc576('0x21')]['fn'](_0xc576('0x22'),db[_0xc576('0x21')][_0xc576('0x23')]('role')),_0xc576('0x24')]],'group':'role','where':{'role':{'$or':['admin','user',_0xc576('0x25')]}},'raw':!![]})[_0xc576('0xc')](function(_0x248e29){var _0x16af71={'user':_0x133fa7[_0xc576('0x26')]||0x0,'telephone':_0x133fa7[_0xc576('0x27')]||0x0};_0x248e29[_0xc576('0x28')](function(_0x821767){var _0x18ff90=_0x821767[_0xc576('0x20')]==='admin'?_0xc576('0x29'):_0x821767[_0xc576('0x20')];_0x16af71[_0x18ff90]-=_0x821767[_0xc576('0x24')];if(_0x16af71[_0x18ff90]<0x0)_0x16af71[_0x18ff90]=0x0;});_0x52451a(_0x16af71);return;});})[_0xc576('0xd')](function(_0x7ea29d){_0xcfacfe(_0x7ea29d);});});}function checkUserLimits(_0x11ca79){return new BPromise(function(_0x479189,_0x4e8415){getLimits()[_0xc576('0xc')](function(_0xc5a85c){var _0x3ebff5=_[_0xc576('0x2a')](_['countBy'](_0x11ca79,_0xc576('0x20')),[_0xc576('0x2b'),_0xc576('0x29'),_0xc576('0x25')]);var _0x21e222=(_0x3ebff5[_0xc576('0x2b')]||0x0)+(_0x3ebff5[_0xc576('0x29')]||0x0);var _0xc7f19a=_0x3ebff5['telephone']||0x0;if(_0x21e222>_0xc5a85c[_0xc576('0x29')])return _0x4e8415(_0xc576('0x2c'));if(_0xc7f19a>_0xc5a85c['telephone'])return _0x4e8415('License\x20limit\x20reached\x20for\x20telephones');return _0x479189();})['catch'](function(_0x144744){_0x4e8415(_0x144744);});});}module[_0xc576('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x1856=['decryptString','parse','demo','machineUuid','gray','deadline','add','days','format','grayReason','message','User','findAll','role','sequelize','COUNT','count','admin','user','telephone','users','telephones','forEach','pick','countBy','License\x20limit\x20reached\x20for\x20users','exports','lodash','moment','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','License','find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1856,0x1f1));var _0x6185=function(_0x11d515,_0x1eb568){_0x11d515=_0x11d515-0x0;var _0x55f4dd=_0x1856[_0x11d515];return _0x55f4dd;};'use strict';var util=require('util');var _=require(_0x6185('0x0'));var moment=require(_0x6185('0x1'));var BPromise=require(_0x6185('0x2'));var hardware=require(_0x6185('0x3'));var encryptor=require(_0x6185('0x4'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x6185('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x6185('0x6'),'machineUuid':hardware[_0x6185('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x6185('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x6185('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x15e456){return new BPromise(function(_0x585a35,_0x3f2436){return db[_0x6185('0x8')][_0x6185('0x9')](_[_0x6185('0xa')](_0x15e456,{'raw':!![],'where':{'id':0x1}}))[_0x6185('0xb')](function(_0x5b6ccc){return checkLicense(_0x5b6ccc,null);})[_0x6185('0xb')](function(_0x4bc393){_0x585a35(_0x4bc393);return;})[_0x6185('0xc')](function(_0x2af809){_0x3f2436(_0x2af809);});});}function checkLicense(_0x104f24,_0x1707c5){if(!_0x104f24){demoLicense[_0x6185('0xd')]=_0x104f24[_0x6185('0xe')];return demoLicense;}try{var _0x1f55c6=_0x1707c5||_0x104f24[_0x6185('0xf')];if(_[_0x6185('0x10')](_0x1f55c6)){throw new Error(_0x6185('0x11'));}var _0x4b277b=_0x104f24[_0x6185('0xe')];var _0x2fce9b=_0x104f24[_0x6185('0x12')];var _0x390b3f=_0x4b277b[_0x6185('0x13')]('-')[0x4];var _0x5d4dc5=_0x4b277b[_0x6185('0x13')]('-')[0x0];var _0x41ed8b=encryptor[_0x6185('0x14')](_0x1f55c6,util['format']('%s:%s:%s',_0x390b3f,_0x4b277b,_0x5d4dc5));var _0x5e92ee=JSON[_0x6185('0x15')](_0x41ed8b);_0x5e92ee[_0x6185('0x16')]=![];_0x5e92ee[_0x6185('0xd')]=_0x4b277b;_0x5e92ee[_0x6185('0x17')]=hardware['getUuid']();if(_0x2fce9b){var _0x63a2e9=encryptor[_0x6185('0x14')](_0x2fce9b);_0x5e92ee[_0x6185('0x18')]=_0x63a2e9;_0x5e92ee[_0x6185('0x19')]=moment(_0x63a2e9)[_0x6185('0x1a')](0x7,_0x6185('0x1b'))[_0x6185('0x1c')]();_0x5e92ee[_0x6185('0x1d')]=_0x5e92ee['uuid']!=_0x5e92ee[_0x6185('0x17')]?'changed':'disabled';}return _0x5e92ee;}catch(_0x3164a0){breakingLicense['uuid']=_0x104f24[_0x6185('0xe')];breakingLicense[_0x6185('0x1e')]=_0x3164a0['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x30eae,_0x3ec6ff){getLicense()[_0x6185('0xb')](function(_0x169d9e){return db[_0x6185('0x1f')][_0x6185('0x20')]({'attributes':[_0x6185('0x21'),[db[_0x6185('0x22')]['fn'](_0x6185('0x23'),db[_0x6185('0x22')]['col']('role')),_0x6185('0x24')]],'group':'role','where':{'role':{'$or':[_0x6185('0x25'),_0x6185('0x26'),_0x6185('0x27')]}},'raw':!![]})[_0x6185('0xb')](function(_0x7ab3c6){var _0x4e448f={'user':_0x169d9e[_0x6185('0x28')]||0x0,'telephone':_0x169d9e[_0x6185('0x29')]||0x0};_0x7ab3c6[_0x6185('0x2a')](function(_0x3f94cd){var _0x7b7b2b=_0x3f94cd[_0x6185('0x21')]===_0x6185('0x25')?'user':_0x3f94cd['role'];_0x4e448f[_0x7b7b2b]-=_0x3f94cd[_0x6185('0x24')];if(_0x4e448f[_0x7b7b2b]<0x0)_0x4e448f[_0x7b7b2b]=0x0;});_0x30eae(_0x4e448f);return;});})[_0x6185('0xc')](function(_0x199def){_0x3ec6ff(_0x199def);});});}function checkUserLimits(_0x290773){return new BPromise(function(_0x5a49ef,_0x12197d){getLimits()[_0x6185('0xb')](function(_0x3aa25b){var _0x19ac41=_[_0x6185('0x2b')](_[_0x6185('0x2c')](_0x290773,'role'),[_0x6185('0x25'),_0x6185('0x26'),_0x6185('0x27')]);var _0x31f5f5=(_0x19ac41[_0x6185('0x25')]||0x0)+(_0x19ac41[_0x6185('0x26')]||0x0);var _0x3ea1b4=_0x19ac41[_0x6185('0x27')]||0x0;if(_0x31f5f5>_0x3aa25b['user'])return _0x12197d(_0x6185('0x2d'));if(_0x3ea1b4>_0x3aa25b[_0x6185('0x27')])return _0x12197d('License\x20limit\x20reached\x20for\x20telephones');return _0x5a49ef();})[_0x6185('0xc')](function(_0xcf61ad){_0x12197d(_0xcf61ad);});});}module[_0x6185('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index a21ad81..0281ba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['app-id','exports'];(function(_0x15aec9,_0x39f50f){var _0x2e84e0=function(_0xfe69fc){while(--_0xfe69fc){_0x15aec9['push'](_0x15aec9['shift']());}};_0x2e84e0(++_0x39f50f);}(_0xd4a2,0x173));var _0x2d4a=function(_0x196682,_0x192ff5){_0x196682=_0x196682-0x0;var _0x2bfd7a=_0xd4a2[_0x196682];return _0x2bfd7a;};'use strict';module[_0x2d4a('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x2d4a('0x1'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x2272=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0x305cb0,_0x124dbf){var _0x5b4133=function(_0x3af47d){while(--_0x3af47d){_0x305cb0['push'](_0x305cb0['shift']());}};_0x5b4133(++_0x124dbf);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';module[_0x2227('0x0')]={'DOMAIN':_0x2227('0x1'),'SESSION_SECRET':_0x2227('0x2'),'GOOGLE_ID':_0x2227('0x3'),'GOOGLE_SECRET':_0x2227('0x4'),'DEBUG':''};
\ No newline at end of file
index 2281023..048b0c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa85a=['{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','exports','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','util','path','log','xcally','message','replace'];(function(_0x22cb5f,_0x2cdd63){var _0x274d36=function(_0x421472){while(--_0x421472){_0x22cb5f['push'](_0x22cb5f['shift']());}};_0x274d36(++_0x2cdd63);}(_0xa85a,0x1ad));var _0xaa85=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xa85a[_0x46698a];return _0x356db0;};'use strict';var moment=require(_0xaa85('0x0'));var winston=require(_0xaa85('0x1'));var util=require(_0xaa85('0x2'));var path=require(_0xaa85('0x3'));var debugLevel='INFO';function filename(_0x503219,_0x2ff3b1){return path['join']('/var',_0xaa85('0x4'),_0xaa85('0x5'),util['format']('%s-%s.log',_0x503219,_0x2ff3b1));}function formatter(_0x27efb6,_0x1fc1bb){_0x1fc1bb[_0xaa85('0x6')]=_0x1fc1bb['message'][_0xaa85('0x7')](/@@{/g,_0xaa85('0x8'))[_0xaa85('0x7')](/}@@/g,_0xaa85('0x9'))[_0xaa85('0x7')](/@{/g,'{{')[_0xaa85('0x7')](/}@/g,'}}');return util[_0xaa85('0xa')](_0xaa85('0xb'),moment()[_0xaa85('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),_0x1fc1bb[_0xaa85('0xc')][_0xaa85('0xd')](),_0x27efb6,_0x1fc1bb[_0xaa85('0x6')]);}module[_0xaa85('0xe')]=function(_0x46ba85){return new winston['Logger']({'transports':[new winston[(_0xaa85('0xf'))][(_0xaa85('0x10'))]({'name':util[_0xaa85('0xa')](_0xaa85('0x11'),_0x46ba85,_0xaa85('0x12')),'filename':filename(_0x46ba85,_0xaa85('0x12')),'level':_0xaa85('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x25762e){return formatter(_0x46ba85,_0x25762e);}}),new winston[(_0xaa85('0xf'))][(_0xaa85('0x10'))]({'name':util[_0xaa85('0xa')](_0xaa85('0x11'),_0x46ba85,_0xaa85('0x13')),'filename':filename(_0x46ba85,'info'),'level':_0xaa85('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5b55cb){return formatter(_0x46ba85,_0x5b55cb);}}),new winston[(_0xaa85('0xf'))][(_0xaa85('0x14'))]({'level':process[_0xaa85('0x15')][_0xaa85('0x16')]||debugLevel,'json':![],'formatter':function(_0x5bddc8){return formatter(_0x46ba85,_0x5bddc8);}})]});};
\ No newline at end of file
+var _0x091f=['[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','exports','Logger','transports','%s-%s','error','info','moment','winston','util','path','join','/var','log','format','%s-%s.log','message','replace','{{{'];(function(_0x5293c8,_0xab0c3c){var _0x3623fb=function(_0x23ef99){while(--_0x23ef99){_0x5293c8['push'](_0x5293c8['shift']());}};_0x3623fb(++_0xab0c3c);}(_0x091f,0x72));var _0xf091=function(_0x2af53e,_0x2222e5){_0x2af53e=_0x2af53e-0x0;var _0x4ed385=_0x091f[_0x2af53e];return _0x4ed385;};'use strict';var moment=require(_0xf091('0x0'));var winston=require(_0xf091('0x1'));var util=require(_0xf091('0x2'));var path=require(_0xf091('0x3'));var debugLevel='INFO';function filename(_0x19a2c1,_0x494bc7){return path[_0xf091('0x4')](_0xf091('0x5'),_0xf091('0x6'),'xcally',util[_0xf091('0x7')](_0xf091('0x8'),_0x19a2c1,_0x494bc7));}function formatter(_0x137e40,_0xe984a5){_0xe984a5[_0xf091('0x9')]=_0xe984a5[_0xf091('0x9')][_0xf091('0xa')](/@@{/g,_0xf091('0xb'))['replace'](/}@@/g,'}}}')[_0xf091('0xa')](/@{/g,'{{')[_0xf091('0xa')](/}@/g,'}}');return util[_0xf091('0x7')](_0xf091('0xc'),moment()[_0xf091('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),_0xe984a5[_0xf091('0xd')][_0xf091('0xe')](),_0x137e40,_0xe984a5[_0xf091('0x9')]);}module[_0xf091('0xf')]=function(_0x3ff884){return new winston[(_0xf091('0x10'))]({'transports':[new winston[(_0xf091('0x11'))]['File']({'name':util[_0xf091('0x7')](_0xf091('0x12'),_0x3ff884,'error'),'filename':filename(_0x3ff884,_0xf091('0x13')),'level':_0xf091('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x207c35){return formatter(_0x3ff884,_0x207c35);}}),new winston['transports']['File']({'name':util[_0xf091('0x7')]('%s-%s',_0x3ff884,_0xf091('0x14')),'filename':filename(_0x3ff884,_0xf091('0x14')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x931d90){return formatter(_0x3ff884,_0x931d90);}}),new winston[(_0xf091('0x11'))]['Console']({'level':process['env']['debugLevel']||debugLevel,'json':![],'formatter':function(_0x4a26b4){return formatter(_0x3ff884,_0x4a26b4);}})]});};
\ No newline at end of file
index fd9a61b..897f433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc6=['routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','express','join','ami','../../services/ami/index.js','agi','email','../../services/email/index.js'];(function(_0x1bc42d,_0x1b8a92){var _0x2a4351=function(_0x247ad2){while(--_0x247ad2){_0x1bc42d['push'](_0x1bc42d['shift']());}};_0x2a4351(++_0x1b8a92);}(_0x0fc6,0x1f3));var _0x60fc=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x0fc6[_0x1cc8fe];return _0x230054;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0x60fc('0x0'),'script':path[_0x60fc('0x1')](__dirname,'../../services/express/index.js')},{'name':_0x60fc('0x2'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x3'))},{'name':_0x60fc('0x4'),'script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0x60fc('0x5'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x6'))},{'name':_0x60fc('0x7'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0x8'))},{'name':_0x60fc('0x9'),'script':path[_0x60fc('0x1')](__dirname,_0x60fc('0xa'))}]};module['exports']=config;
\ No newline at end of file
+var _0xb324=['join','../../services/express/index.js','../../services/ami/index.js','../../services/email/index.js','../../services/routing/index.js','xdr','../../services/xdr/index.js','path'];(function(_0x22cb5f,_0x2cdd63){var _0x274d36=function(_0x421472){while(--_0x421472){_0x22cb5f['push'](_0x22cb5f['shift']());}};_0x274d36(++_0x2cdd63);}(_0xb324,0x16f));var _0x4b32=function(_0x37b168,_0x19afe7){_0x37b168=_0x37b168-0x0;var _0x572896=_0xb324[_0x37b168];return _0x572896;};'use strict';var path=require(_0x4b32('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0x4b32('0x1')](__dirname,_0x4b32('0x2'))},{'name':'ami','script':path[_0x4b32('0x1')](__dirname,_0x4b32('0x3'))},{'name':'agi','script':path[_0x4b32('0x1')](__dirname,'../../services/agi/index.js')},{'name':'email','script':path[_0x4b32('0x1')](__dirname,_0x4b32('0x4'))},{'name':'routing','script':path[_0x4b32('0x1')](__dirname,_0x4b32('0x5'))},{'name':_0x4b32('0x6'),'script':path[_0x4b32('0x1')](__dirname,_0x4b32('0x7'))}]};module['exports']=config;
\ No newline at end of file
index 307a4c6..38d7825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ea=['delete','dump','saved','pm2','connect','connected','start','then','disconnect','stop','restart','list','describe'];(function(_0xa2efb7,_0x195139){var _0x358337=function(_0xc1cf7a){while(--_0xc1cf7a){_0xa2efb7['push'](_0xa2efb7['shift']());}};_0x358337(++_0x195139);}(_0x04ea,0x1bd));var _0xa04e=function(_0x24bd83,_0x1830c4){_0x24bd83=_0x24bd83-0x0;var _0x3a047e=_0x04ea[_0x24bd83];return _0x3a047e;};'use strict';var pm2=require(_0xa04e('0x0'));var BPromise=require('bluebird');var config=require('./config');function connect(){return new BPromise(function(_0x16c32b,_0x5d1017){return pm2[_0xa04e('0x1')](function(_0x5877be){if(_0x5877be){return _0x5d1017(_0x5877be);}return _0x16c32b(_0xa04e('0x2'));});});};exports[_0xa04e('0x3')]=function(_0x28185a){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x538036,_0x3fec13){return pm2[_0xa04e('0x3')](_0x28185a,function(_0x1411ff,_0x35828){if(_0x1411ff){return _0x3fec13(_0x1411ff);}pm2[_0xa04e('0x5')]();return _0x538036(_0x35828);});});});};exports['stop']=function(_0x3776cb){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x2f4991,_0x434c8d){return pm2[_0xa04e('0x6')](_0x3776cb,function(_0x25d672,_0x5916ac){if(_0x25d672){return _0x434c8d(_0x25d672);}pm2[_0xa04e('0x5')]();return _0x2f4991(_0x5916ac);});});});};exports[_0xa04e('0x7')]=function(_0x59632c){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x32a114,_0x23921d){return pm2[_0xa04e('0x7')](_0x59632c,function(_0x65712e,_0x365e22){if(_0x65712e){return _0x23921d(_0x65712e);}pm2[_0xa04e('0x5')]();return _0x32a114(_0x365e22);});});});};exports[_0xa04e('0x8')]=function(){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x2ad6b0,_0x2fa17f){return pm2[_0xa04e('0x8')](function(_0x8feefc,_0x3e2213){if(_0x8feefc){return _0x2fa17f(_0x8feefc);}pm2[_0xa04e('0x5')]();return _0x2ad6b0(_0x3e2213);});});});};exports[_0xa04e('0x9')]=function(_0x1ffdab){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x3976f3,_0x3fb971){return pm2[_0xa04e('0x9')](_0x1ffdab,function(_0x5a3213,_0x338189){if(_0x5a3213){return _0x3fb971(_0x5a3213);}pm2[_0xa04e('0x5')]();return _0x3976f3(_0x338189);});});});};exports['delete']=function(_0x341143){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x30b8c7,_0x4573d3){return pm2[_0xa04e('0xa')](_0x341143,function(_0x4c94a1,_0x9e22e8){if(_0x4c94a1){return _0x4573d3(_0x4c94a1);}pm2[_0xa04e('0x5')]();return _0x30b8c7(_0x9e22e8);});});});};exports[_0xa04e('0xb')]=function(){return connect()[_0xa04e('0x4')](function(){return new BPromise(function(_0x3effa9,_0x157f23){return pm2[_0xa04e('0xb')](function(_0x6c6520){if(_0x6c6520){return _0x157f23(_0x6c6520);}return _0x3effa9(_0xa04e('0xc'));});});});};
\ No newline at end of file
+var _0xf9ff=['stop','restart','list','describe','delete','dump','saved','pm2','bluebird','./config','connect','start','then','disconnect'];(function(_0x17b17c,_0x551766){var _0x221078=function(_0xda7df5){while(--_0xda7df5){_0x17b17c['push'](_0x17b17c['shift']());}};_0x221078(++_0x551766);}(_0xf9ff,0x1ab));var _0xff9f=function(_0x16bb0e,_0x343132){_0x16bb0e=_0x16bb0e-0x0;var _0x102b8b=_0xf9ff[_0x16bb0e];return _0x102b8b;};'use strict';var pm2=require(_0xff9f('0x0'));var BPromise=require(_0xff9f('0x1'));var config=require(_0xff9f('0x2'));function connect(){return new BPromise(function(_0x573be0,_0x6f5ac7){return pm2[_0xff9f('0x3')](function(_0x379e26){if(_0x379e26){return _0x6f5ac7(_0x379e26);}return _0x573be0('connected');});});};exports[_0xff9f('0x4')]=function(_0x58dad1){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x57ffc3,_0x418487){return pm2[_0xff9f('0x4')](_0x58dad1,function(_0x3415b3,_0x57e83f){if(_0x3415b3){return _0x418487(_0x3415b3);}pm2[_0xff9f('0x6')]();return _0x57ffc3(_0x57e83f);});});});};exports[_0xff9f('0x7')]=function(_0x34c2b1){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x3bedb7,_0x187afb){return pm2[_0xff9f('0x7')](_0x34c2b1,function(_0x210428,_0x5b397f){if(_0x210428){return _0x187afb(_0x210428);}pm2['disconnect']();return _0x3bedb7(_0x5b397f);});});});};exports[_0xff9f('0x8')]=function(_0x808761){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x236243,_0x47c0bd){return pm2[_0xff9f('0x8')](_0x808761,function(_0x50cfd0,_0x1e532c){if(_0x50cfd0){return _0x47c0bd(_0x50cfd0);}pm2[_0xff9f('0x6')]();return _0x236243(_0x1e532c);});});});};exports['list']=function(){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x4b18b2,_0x62362f){return pm2[_0xff9f('0x9')](function(_0xe9240c,_0x5cf387){if(_0xe9240c){return _0x62362f(_0xe9240c);}pm2[_0xff9f('0x6')]();return _0x4b18b2(_0x5cf387);});});});};exports[_0xff9f('0xa')]=function(_0x50fb85){return connect()['then'](function(){return new BPromise(function(_0x50c104,_0x553576){return pm2[_0xff9f('0xa')](_0x50fb85,function(_0x16a16d,_0x37b8ca){if(_0x16a16d){return _0x553576(_0x16a16d);}pm2[_0xff9f('0x6')]();return _0x50c104(_0x37b8ca);});});});};exports['delete']=function(_0x5826c0){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x81d855,_0x53e6a4){return pm2[_0xff9f('0xb')](_0x5826c0,function(_0xfb7297,_0x9e6ce){if(_0xfb7297){return _0x53e6a4(_0xfb7297);}pm2[_0xff9f('0x6')]();return _0x81d855(_0x9e6ce);});});});};exports[_0xff9f('0xc')]=function(){return connect()[_0xff9f('0x5')](function(){return new BPromise(function(_0x3bbb03,_0x6a6634){return pm2[_0xff9f('0xc')](function(_0x5c1302){if(_0x5c1302){return _0x6a6634(_0x5c1302);}return _0x3bbb03(_0xff9f('0xd'));});});});};
\ No newline at end of file
index 537f85f..862df9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb34f=['../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','find','chatTimeout','subtract','minutes','length','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','timeout','format','YYYY-MM-DD\x20HH:mm:ss','then','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','util'];(function(_0xbb2bc4,_0x1d1735){var _0x35c842=function(_0x4c43ff){while(--_0x4c43ff){_0xbb2bc4['push'](_0xbb2bc4['shift']());}};_0x35c842(++_0x1d1735);}(_0xb34f,0xed));var _0xfb34=function(_0x30c296,_0x45a600){_0x30c296=_0x30c296-0x0;var _0x4df037=_0xb34f[_0x30c296];return _0x4df037;};'use strict';var _=require(_0xfb34('0x0'));var moment=require(_0xfb34('0x1'));var Redis=require('ioredis');var util=require(_0xfb34('0x2'));var config=require(_0xfb34('0x3'));var db=require(_0xfb34('0x4'))['db'];var logger=require(_0xfb34('0x5'))(_0xfb34('0x6'));config[_0xfb34('0x7')]=_['defaults'](config[_0xfb34('0x7')],{'host':_0xfb34('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x3411db=0x0;var _0x23a6c3=[];return db['Setting'][_0xfb34('0x9')]({'raw':!![],'attributes':['id',_0xfb34('0xa')],'where':{'id':0x1}})['then'](function(_0x46e4b8){_0x3411db=_0x46e4b8[_0xfb34('0xa')];if(_0x3411db){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xfb34('0xb')](_0x46e4b8['chatTimeout'],_0xfb34('0xc'))}}});}else{return[];}})['then'](function(_0x5122f0){if(_0x5122f0&&_0x5122f0[_0xfb34('0xd')]){_0x23a6c3=_['map'](_0x5122f0||[],'id');logger['info'](_0xfb34('0xe'),_0x23a6c3[_0xfb34('0xf')]());return db[_0xfb34('0x10')]['update']({'closeReason':'system','disposition':_0xfb34('0x11'),'closed':!![],'closedAt':moment()[_0xfb34('0x12')](_0xfb34('0x13'))},{'where':{'id':_0x23a6c3}});}})[_0xfb34('0x14')](function(){if(_0x23a6c3&&_0x23a6c3['length']){logger[_0xfb34('0x15')](_0xfb34('0x16'),_0x23a6c3[_0xfb34('0xf')]());for(var _0x2c37c8=0x0;_0x2c37c8<_0x23a6c3[_0xfb34('0xd')];_0x2c37c8++){io[_0xfb34('0x17')](_0xfb34('0x18'),{'id':_0x23a6c3[_0x2c37c8],'closed':!![]});}}})[_0xfb34('0x19')](function(_0x5d4b8a){logger[_0xfb34('0x1a')](_0xfb34('0x1b'),_0x5d4b8a?util[_0xfb34('0x1c')](_0x5d4b8a,{'showHidden':![],'depth':null}):'');});}exports[_0xfb34('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6587=['findAll','lastMsgAt','subtract','minutes','length','info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction'];(function(_0x24a963,_0x454d12){var _0x3d1990=function(_0x470a35){while(--_0x470a35){_0x24a963['push'](_0x24a963['shift']());}};_0x3d1990(++_0x454d12);}(_0x6587,0x158));var _0x7658=function(_0x15bbf1,_0x40ef96){_0x15bbf1=_0x15bbf1-0x0;var _0x5c4b47=_0x6587[_0x15bbf1];return _0x5c4b47;};'use strict';var _=require(_0x7658('0x0'));var moment=require(_0x7658('0x1'));var Redis=require(_0x7658('0x2'));var util=require(_0x7658('0x3'));var config=require(_0x7658('0x4'));var db=require(_0x7658('0x5'))['db'];var logger=require(_0x7658('0x6'))(_0x7658('0x7'));config['redis']=_[_0x7658('0x8')](config[_0x7658('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x7658('0xa'))(new Redis(config[_0x7658('0x9')]));function closeInteractions(){var _0x2d9f44=0x0;var _0x2dac6d=[];return db[_0x7658('0xb')][_0x7658('0xc')]({'raw':!![],'attributes':['id',_0x7658('0xd')],'where':{'id':0x1}})[_0x7658('0xe')](function(_0x2bd956){_0x2d9f44=_0x2bd956['chatTimeout'];if(_0x2d9f44){return db[_0x7658('0xf')][_0x7658('0x10')]({'raw':!![],'attributes':['id',_0x7658('0x11')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x7658('0x12')](_0x2bd956[_0x7658('0xd')],_0x7658('0x13'))}}});}else{return[];}})[_0x7658('0xe')](function(_0xd1b5a){if(_0xd1b5a&&_0xd1b5a[_0x7658('0x14')]){_0x2dac6d=_['map'](_0xd1b5a||[],'id');logger[_0x7658('0x15')](_0x7658('0x16'),_0x2dac6d[_0x7658('0x17')]());return db['ChatInteraction'][_0x7658('0x18')]({'closeReason':_0x7658('0x19'),'disposition':_0x7658('0x1a'),'closed':!![],'closedAt':moment()[_0x7658('0x1b')](_0x7658('0x1c'))},{'where':{'id':_0x2dac6d}});}})[_0x7658('0xe')](function(){if(_0x2dac6d&&_0x2dac6d[_0x7658('0x14')]){logger[_0x7658('0x15')](_0x7658('0x1d'),_0x2dac6d[_0x7658('0x17')]());for(var _0x364847=0x0;_0x364847<_0x2dac6d[_0x7658('0x14')];_0x364847++){io[_0x7658('0x1e')](_0x7658('0x1f'),{'id':_0x2dac6d[_0x364847],'closed':!![]});}}})[_0x7658('0x20')](function(_0x149b44){logger[_0x7658('0x21')](_0x7658('0x22'),_0x149b44?util[_0x7658('0x23')](_0x149b44,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index f87c85e..d00d8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c2=['exists','stop\x20cron','update','update\x20cron','run','util','lodash','cron-job-manager','../logger','schedule','../../mysqldb','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','bcc','name','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','status','Sent','attachments','text','stringify','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','MailServerOut','jobs','map','toString','keyBy','difference','intersection','deleteJob','delete\x20cron','length','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','add\x20cron'];(function(_0x3263b2,_0x142a3f){var _0x3a8a5e=function(_0x217928){while(--_0x217928){_0x3263b2['push'](_0x3263b2['shift']());}};_0x3a8a5e(++_0x142a3f);}(_0x43c2,0x104));var _0x243c=function(_0x3a6afc,_0x426e64){_0x3a6afc=_0x3a6afc-0x0;var _0x56e387=_0x43c2[_0x3a6afc];return _0x56e387;};'use strict';var fs=require('fs');var util=require(_0x243c('0x0'));var path=require('path');var _=require(_0x243c('0x1'));var moment=require('moment');var CronJobManager=require(_0x243c('0x2'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x243c('0x3'))(_0x243c('0x4'));var db=require(_0x243c('0x5'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x243c('0x6')][_0x243c('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x582d0d,_0x364b17){return function(){logger[_0x243c('0x8')](_0x243c('0x9'),_0x582d0d[_0x243c('0xa')]);var _0x2244ff=!![];var _0x27a215={'tls':{'rejectUnauthorized':![]}};if(_0x582d0d['MailAccount'][_0x243c('0xb')][_0x243c('0xc')]){_0x27a215['service']=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0xc')];}else{_0x27a215[_0x243c('0xe')]=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0xe')];_0x27a215[_0x243c('0xf')]=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')]['port'];_0x27a215['secure']=_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x10')];}if(_0x582d0d[_0x243c('0xd')]['Smtp'][_0x243c('0x11')]){_0x27a215[_0x243c('0x12')]={'user':_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x13')],'pass':_0x582d0d[_0x243c('0xd')][_0x243c('0xb')][_0x243c('0x14')]};}var _0x47a596={'account':_0x27a215,'message':{'from':util[_0x243c('0x15')](_0x243c('0x16'),_0x582d0d[_0x243c('0xd')]['name'],_0x582d0d[_0x243c('0xd')][_0x243c('0xa')]||_0x582d0d[_0x243c('0xd')]['Smtp'][_0x243c('0x13')]),'to':_0x582d0d[_0x243c('0xa')],'cc':_0x582d0d['cc'],'bcc':_0x582d0d[_0x243c('0x17')],'subject':util[_0x243c('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x364b17[_0x243c('0x18')],_0x582d0d[_0x243c('0x19')],_0x582d0d[_0x243c('0x1a')])}};var _0x44fdb2=path[_0x243c('0x1b')](__dirname,_0x243c('0x1c'));var _0x204766=_0x364b17[_0x243c('0x1d')];var _0x318357=util[_0x243c('0x15')](_0x243c('0x1e'),path[_0x243c('0x1f')](_0x364b17['savename'],path[_0x243c('0x20')](_0x364b17[_0x243c('0x1d')])),'zip');var _0x4422a3=path[_0x243c('0x1b')](_0x44fdb2,_0x204766);var _0x1cc15f=path[_0x243c('0x1b')](_0x44fdb2,_0x318357);if(fs['existsSync'](_0x4422a3)){_0x364b17[_0x243c('0x21')]=_0x243c('0x22');_0x47a596['message'][_0x243c('0x23')]=[{'filename':_0x204766,'path':_0x4422a3}];_0x47a596['message'][_0x243c('0x24')]=util[_0x243c('0x15')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x243c('0x25')](_0x364b17,null,0x2));}else if(fs['existsSync'](_0x1cc15f)){_0x364b17[_0x243c('0x21')]='Sent';_0x47a596[_0x243c('0x26')][_0x243c('0x23')]=[{'filename':_0x318357,'path':_0x1cc15f}];}else{_0x47a596[_0x243c('0x26')][_0x243c('0x24')]=_0x243c('0x27');if(!_0x582d0d[_0x243c('0x28')]){_0x2244ff=![];logger[_0x243c('0x8')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x2244ff){return client[_0x243c('0x29')](_0x243c('0x2a'),_0x47a596)[_0x243c('0x2b')](function(_0x44e92b){if(_0x44e92b[_0x243c('0x2c')]){return logger[_0x243c('0x2c')](_0x243c('0x2d'),JSON['stringify'](_0x44e92b));}return logger[_0x243c('0x8')]('email\x20sent');})[_0x243c('0x2e')](function(_0x2ffad9){return logger[_0x243c('0x2c')]('error\x20mail',JSON['stringify'](_0x2ffad9));});}};}function handleError(){return function(_0x255373){return logger[_0x243c('0x2c')](JSON[_0x243c('0x25')](_0x255373));};}function handleResult(_0x502dfa){return function(_0x3a32f0){logger[_0x243c('0x8')](_0x243c('0x2f'),JSON['stringify'](_0x3a32f0));if(_0x502dfa['MailAccount']&&_0x502dfa[_0x243c('0xd')][_0x243c('0xb')]&&!_[_0x243c('0x30')](_0x502dfa[_0x243c('0xa')])){setTimeout(handleSendEmail(_0x502dfa,_0x3a32f0),0x3c*0x3e8);}};}function handleJob(_0x202dd2){return function(){try{if(_[_0x243c('0x30')](_0x202dd2[_0x243c('0x19')])){return logger['info'](_0x243c('0x31'));}if(_[_0x243c('0x30')](_0x202dd2[_0x243c('0x1a')])){return logger['info'](_0x243c('0x32'));}var _0x175944={'startDate':moment()[_0x243c('0x33')](_0x202dd2[_0x243c('0x19')],_0x202dd2[_0x243c('0x1a')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x243c('0x15')](_0x243c('0x34')),'type':_0x243c('0x35'),'output':_0x202dd2[_0x243c('0x36')],'name':_0x202dd2['name']};if(!_[_0x243c('0x30')](_0x202dd2[_0x243c('0x37')])){logger[_0x243c('0x8')](_0x243c('0x38'),_0x202dd2[_0x243c('0x37')]);return analyticDefaultReportController[_0x243c('0x39')]({'id':_0x202dd2['DefaultReportId']},_0x175944)['then'](handleResult(_0x202dd2))['catch'](handleError());}if(!_['isNil'](_0x202dd2['CustomReportId'])){logger[_0x243c('0x8')](_0x243c('0x3a'),_0x202dd2['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x202dd2[_0x243c('0x3b')]},_0x175944)[_0x243c('0x2b')](handleResult(_0x202dd2))[_0x243c('0x2e')](handleError());}}catch(_0x230152){logger[_0x243c('0x2c')](JSON[_0x243c('0x25')](_0x230152));}return logger[_0x243c('0x8')](_0x243c('0x3c'));};}function getJobs(_0x2193e3){var _0x11ba55={};if(_0x2193e3){_0x11ba55['id']=_0x2193e3;}return db['Schedule']['findAll']({'where':_0x11ba55,'include':[{'model':db['MailAccount'],'attributes':['id',_0x243c('0x18'),_0x243c('0xa')],'include':[{'model':db[_0x243c('0x3d')],'as':'Smtp'}]}]})[_0x243c('0x2b')](function(_0x2a350c){var _0x15f3d4=_['keys'](manager[_0x243c('0x3e')]);var _0x27377c=_[_0x243c('0x3f')](_0x2a350c,function(_0x3c5343){return _0x3c5343['id'][_0x243c('0x40')]();});var _0xea0690=_[_0x243c('0x41')](_0x2a350c,function(_0x23fe78){return _0x23fe78['id'][_0x243c('0x40')]();});var _0x27b90e=_0x2193e3?_0x27377c:_[_0x243c('0x42')](_0x27377c,_0x15f3d4);var _0x45193d=_[_0x243c('0x43')](_0x27377c,_0x15f3d4);var _0x3be93d=_['difference'](_0x15f3d4,_0x27377c);var _0x1ed920;var _0x2bb51b;for(_0x1ed920=0x0;_0x1ed920<_0x3be93d['length']&&!_0x2193e3;_0x1ed920+=0x1){_0x2bb51b=_0x3be93d[_0x1ed920][_0x243c('0x40')]();if(manager['exists'](_0x2bb51b)){manager['stop'](_0x2bb51b);manager[_0x243c('0x44')](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x45'),_0x2bb51b);}}logger[_0x243c('0x8')]('toRun',JSON[_0x243c('0x25')](_0x27b90e));for(_0x1ed920=0x0;_0x1ed920<_0x27b90e[_0x243c('0x46')];_0x1ed920+=0x1){_0x2bb51b=_0x27b90e[_0x1ed920][_0x243c('0x40')]();logger[_0x243c('0x8')]('index',_0x2bb51b);if(_0x2193e3){logger[_0x243c('0x8')](_0x243c('0x47'),_0x2193e3);logger[_0x243c('0x8')](JSON[_0x243c('0x25')](_0xea0690[_0x2bb51b]));BPromise[_0x243c('0x48')]()['then'](handleJob(_0xea0690[_0x2bb51b]));logger[_0x243c('0x8')](_0x243c('0x49'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else if(_0xea0690[_0x2bb51b][_0x243c('0x4a')]&&_0xea0690[_0x2bb51b][_0x243c('0x4b')]&&moment()[_0x243c('0x4c')](_0xea0690[_0x2bb51b]['startAt'],_0xea0690[_0x2bb51b][_0x243c('0x4d')])){manager[_0x243c('0x4e')](_0x2bb51b,_0xea0690[_0x2bb51b]['cron'],handleJob(_0xea0690[_0x2bb51b]));manager['start'](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x4f'),_0xea0690[_0x2bb51b]['name'],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else if(manager[_0x243c('0x50')](_0x2bb51b)){manager['stop'](_0x2bb51b);manager[_0x243c('0x44')](_0x2bb51b);logger[_0x243c('0x8')](_0x243c('0x51'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}}for(_0x1ed920=0x0,_0x2bb51b;_0x1ed920<_0x45193d['length']&&!_0x2193e3;_0x1ed920+=0x1){_0x2bb51b=_0x45193d[_0x1ed920][_0x243c('0x40')]();if(manager[_0x243c('0x50')](_0x2bb51b)){if(_0xea0690[_0x2bb51b][_0x243c('0x4a')]&&_0xea0690[_0x2bb51b][_0x243c('0x4b')]&&moment()[_0x243c('0x4c')](_0xea0690[_0x2bb51b]['startAt'],_0xea0690[_0x2bb51b][_0x243c('0x4d')])){manager[_0x243c('0x52')](_0x2bb51b,_0xea0690[_0x2bb51b][_0x243c('0x4a')],handleJob(_0xea0690[_0x2bb51b]));logger[_0x243c('0x8')](_0x243c('0x53'),_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}else{manager['stop'](_0x2bb51b);manager['deleteJob'](_0x2bb51b);logger[_0x243c('0x8')]('stop\x20cron',_0xea0690[_0x2bb51b][_0x243c('0x18')],_0xea0690[_0x2bb51b][_0x243c('0x4a')]);}}}})['catch'](function(_0xc7a607){logger['error'](JSON[_0x243c('0x25')](_0xc7a607));});}exports[_0x243c('0x54')]=function(_0x13b961){return getJobs(_0x13b961);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xfdca=['isBetween','startAt','endAt','add','start','add\x20cron','exists','stop\x20cron','update','update\x20cron','run','util','path','lodash','cron-job-manager','jayson/promise','../logger','schedule','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','email','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','zip','existsSync','status','message','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','then','error','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','toRun','index','my\x20id','resolve','run\x20job','cron','active'];(function(_0x1cd61f,_0x22e7af){var _0x27cee9=function(_0x5e122b){while(--_0x5e122b){_0x1cd61f['push'](_0x1cd61f['shift']());}};_0x27cee9(++_0x22e7af);}(_0xfdca,0x1cd));var _0xafdc=function(_0x4757fe,_0x235a6f){_0x4757fe=_0x4757fe-0x0;var _0x5238b4=_0xfdca[_0x4757fe];return _0x5238b4;};'use strict';var fs=require('fs');var util=require(_0xafdc('0x0'));var path=require(_0xafdc('0x1'));var _=require(_0xafdc('0x2'));var moment=require('moment');var CronJobManager=require(_0xafdc('0x3'));var jayson=require(_0xafdc('0x4'));var BPromise=require('bluebird');var logger=require(_0xafdc('0x5'))(_0xafdc('0x6'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xafdc('0x7'));var client=jayson[_0xafdc('0x8')][_0xafdc('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x42a19d,_0x3c55fe){return function(){logger[_0xafdc('0xa')](_0xafdc('0xb'),_0x42a19d['email']);var _0x6dfc4b=!![];var _0x115c27={'tls':{'rejectUnauthorized':![]}};if(_0x42a19d[_0xafdc('0xc')][_0xafdc('0xd')]['service']){_0x115c27[_0xafdc('0xe')]=_0x42a19d[_0xafdc('0xc')][_0xafdc('0xd')]['service'];}else{_0x115c27[_0xafdc('0xf')]=_0x42a19d[_0xafdc('0xc')][_0xafdc('0xd')][_0xafdc('0xf')];_0x115c27['port']=_0x42a19d[_0xafdc('0xc')]['Smtp']['port'];_0x115c27[_0xafdc('0x10')]=_0x42a19d[_0xafdc('0xc')]['Smtp'][_0xafdc('0x10')];}if(_0x42a19d['MailAccount'][_0xafdc('0xd')][_0xafdc('0x11')]){_0x115c27[_0xafdc('0x12')]={'user':_0x42a19d[_0xafdc('0xc')][_0xafdc('0xd')][_0xafdc('0x13')],'pass':_0x42a19d['MailAccount'][_0xafdc('0xd')][_0xafdc('0x14')]};}var _0x5e2000={'account':_0x115c27,'message':{'from':util[_0xafdc('0x15')](_0xafdc('0x16'),_0x42a19d[_0xafdc('0xc')]['name'],_0x42a19d[_0xafdc('0xc')][_0xafdc('0x17')]||_0x42a19d[_0xafdc('0xc')][_0xafdc('0xd')][_0xafdc('0x13')]),'to':_0x42a19d[_0xafdc('0x17')],'cc':_0x42a19d['cc'],'bcc':_0x42a19d['bcc'],'subject':util[_0xafdc('0x15')](_0xafdc('0x18'),_0x3c55fe[_0xafdc('0x19')],_0x42a19d[_0xafdc('0x1a')],_0x42a19d[_0xafdc('0x1b')])}};var _0x1dc7d3=path[_0xafdc('0x1c')](__dirname,_0xafdc('0x1d'));var _0x5e6f03=_0x3c55fe[_0xafdc('0x1e')];var _0x367ad0=util[_0xafdc('0x15')](_0xafdc('0x1f'),path['basename'](_0x3c55fe[_0xafdc('0x1e')],path['extname'](_0x3c55fe[_0xafdc('0x1e')])),_0xafdc('0x20'));var _0x5a0426=path[_0xafdc('0x1c')](_0x1dc7d3,_0x5e6f03);var _0x4dee6b=path[_0xafdc('0x1c')](_0x1dc7d3,_0x367ad0);if(fs[_0xafdc('0x21')](_0x5a0426)){_0x3c55fe[_0xafdc('0x22')]='Sent';_0x5e2000[_0xafdc('0x23')]['attachments']=[{'filename':_0x5e6f03,'path':_0x5a0426}];_0x5e2000['message']['text']=util['format'](_0xafdc('0x24'),JSON[_0xafdc('0x25')](_0x3c55fe,null,0x2));}else if(fs[_0xafdc('0x21')](_0x4dee6b)){_0x3c55fe['status']='Sent';_0x5e2000[_0xafdc('0x23')][_0xafdc('0x26')]=[{'filename':_0x367ad0,'path':_0x4dee6b}];}else{_0x5e2000[_0xafdc('0x23')]['text']=_0xafdc('0x27');if(!_0x42a19d[_0xafdc('0x28')]){_0x6dfc4b=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x6dfc4b){return client[_0xafdc('0x29')]('SendMail',_0x5e2000)[_0xafdc('0x2a')](function(_0x2d570a){if(_0x2d570a[_0xafdc('0x2b')]){return logger[_0xafdc('0x2b')]('error\x20mail',JSON['stringify'](_0x2d570a));}return logger[_0xafdc('0xa')]('email\x20sent');})['catch'](function(_0x4d1d5a){return logger['error'](_0xafdc('0x2c'),JSON[_0xafdc('0x25')](_0x4d1d5a));});}};}function handleError(){return function(_0x1d9e53){return logger[_0xafdc('0x2b')](JSON['stringify'](_0x1d9e53));};}function handleResult(_0x272a1c){return function(_0xb6dd82){logger[_0xafdc('0xa')](_0xafdc('0x2d'),JSON['stringify'](_0xb6dd82));if(_0x272a1c[_0xafdc('0xc')]&&_0x272a1c[_0xafdc('0xc')][_0xafdc('0xd')]&&!_['isNil'](_0x272a1c[_0xafdc('0x17')])){setTimeout(handleSendEmail(_0x272a1c,_0xb6dd82),0x3c*0x3e8);}};}function handleJob(_0x8659d9){return function(){try{if(_[_0xafdc('0x2e')](_0x8659d9[_0xafdc('0x1a')])){return logger[_0xafdc('0xa')](_0xafdc('0x2f'));}if(_[_0xafdc('0x2e')](_0x8659d9['subtractUnit'])){return logger[_0xafdc('0xa')](_0xafdc('0x30'));}var _0x2b9fe1={'startDate':moment()[_0xafdc('0x31')](_0x8659d9['subtractNumber'],_0x8659d9[_0xafdc('0x1b')])['format'](_0xafdc('0x32')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x8659d9[_0xafdc('0x33')],'name':_0x8659d9[_0xafdc('0x19')]};if(!_[_0xafdc('0x2e')](_0x8659d9[_0xafdc('0x34')])){logger['info'](_0xafdc('0x35'),_0x8659d9['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x8659d9['DefaultReportId']},_0x2b9fe1)[_0xafdc('0x2a')](handleResult(_0x8659d9))[_0xafdc('0x36')](handleError());}if(!_[_0xafdc('0x2e')](_0x8659d9['CustomReportId'])){logger[_0xafdc('0xa')](_0xafdc('0x37'),_0x8659d9[_0xafdc('0x38')]);return analyticCustomReportController[_0xafdc('0x39')]({'id':_0x8659d9[_0xafdc('0x38')]},_0x2b9fe1)[_0xafdc('0x2a')](handleResult(_0x8659d9))[_0xafdc('0x36')](handleError());}}catch(_0x34aef4){logger['error'](JSON[_0xafdc('0x25')](_0x34aef4));}return logger[_0xafdc('0xa')](_0xafdc('0x3a'));};}function getJobs(_0x36510a){var _0x1d4e8a={};if(_0x36510a){_0x1d4e8a['id']=_0x36510a;}return db[_0xafdc('0x3b')][_0xafdc('0x3c')]({'where':_0x1d4e8a,'include':[{'model':db[_0xafdc('0xc')],'attributes':['id',_0xafdc('0x19'),'email'],'include':[{'model':db[_0xafdc('0x3d')],'as':_0xafdc('0xd')}]}]})['then'](function(_0xd3365f){var _0x4a7c1c=_[_0xafdc('0x3e')](manager[_0xafdc('0x3f')]);var _0x38dcb7=_[_0xafdc('0x40')](_0xd3365f,function(_0x3ee34d){return _0x3ee34d['id'][_0xafdc('0x41')]();});var _0x4db099=_[_0xafdc('0x42')](_0xd3365f,function(_0x1bf13e){return _0x1bf13e['id'][_0xafdc('0x41')]();});var _0xb5183e=_0x36510a?_0x38dcb7:_[_0xafdc('0x43')](_0x38dcb7,_0x4a7c1c);var _0x4dab11=_[_0xafdc('0x44')](_0x38dcb7,_0x4a7c1c);var _0x567bf3=_[_0xafdc('0x43')](_0x4a7c1c,_0x38dcb7);var _0x378046;var _0x4c8517;for(_0x378046=0x0;_0x378046<_0x567bf3[_0xafdc('0x45')]&&!_0x36510a;_0x378046+=0x1){_0x4c8517=_0x567bf3[_0x378046][_0xafdc('0x41')]();if(manager['exists'](_0x4c8517)){manager[_0xafdc('0x46')](_0x4c8517);manager[_0xafdc('0x47')](_0x4c8517);logger[_0xafdc('0xa')]('delete\x20cron',_0x4c8517);}}logger['info'](_0xafdc('0x48'),JSON[_0xafdc('0x25')](_0xb5183e));for(_0x378046=0x0;_0x378046<_0xb5183e[_0xafdc('0x45')];_0x378046+=0x1){_0x4c8517=_0xb5183e[_0x378046][_0xafdc('0x41')]();logger[_0xafdc('0xa')](_0xafdc('0x49'),_0x4c8517);if(_0x36510a){logger[_0xafdc('0xa')](_0xafdc('0x4a'),_0x36510a);logger[_0xafdc('0xa')](JSON['stringify'](_0x4db099[_0x4c8517]));BPromise[_0xafdc('0x4b')]()[_0xafdc('0x2a')](handleJob(_0x4db099[_0x4c8517]));logger['info'](_0xafdc('0x4c'),_0x4db099[_0x4c8517][_0xafdc('0x19')],_0x4db099[_0x4c8517][_0xafdc('0x4d')]);}else if(_0x4db099[_0x4c8517]['cron']&&_0x4db099[_0x4c8517][_0xafdc('0x4e')]&&moment()[_0xafdc('0x4f')](_0x4db099[_0x4c8517][_0xafdc('0x50')],_0x4db099[_0x4c8517][_0xafdc('0x51')])){manager[_0xafdc('0x52')](_0x4c8517,_0x4db099[_0x4c8517][_0xafdc('0x4d')],handleJob(_0x4db099[_0x4c8517]));manager[_0xafdc('0x53')](_0x4c8517);logger[_0xafdc('0xa')](_0xafdc('0x54'),_0x4db099[_0x4c8517][_0xafdc('0x19')],_0x4db099[_0x4c8517][_0xafdc('0x4d')]);}else if(manager[_0xafdc('0x55')](_0x4c8517)){manager[_0xafdc('0x46')](_0x4c8517);manager[_0xafdc('0x47')](_0x4c8517);logger['info'](_0xafdc('0x56'),_0x4db099[_0x4c8517][_0xafdc('0x19')],_0x4db099[_0x4c8517]['cron']);}}for(_0x378046=0x0,_0x4c8517;_0x378046<_0x4dab11[_0xafdc('0x45')]&&!_0x36510a;_0x378046+=0x1){_0x4c8517=_0x4dab11[_0x378046][_0xafdc('0x41')]();if(manager[_0xafdc('0x55')](_0x4c8517)){if(_0x4db099[_0x4c8517][_0xafdc('0x4d')]&&_0x4db099[_0x4c8517][_0xafdc('0x4e')]&&moment()[_0xafdc('0x4f')](_0x4db099[_0x4c8517][_0xafdc('0x50')],_0x4db099[_0x4c8517][_0xafdc('0x51')])){manager[_0xafdc('0x57')](_0x4c8517,_0x4db099[_0x4c8517][_0xafdc('0x4d')],handleJob(_0x4db099[_0x4c8517]));logger[_0xafdc('0xa')](_0xafdc('0x58'),_0x4db099[_0x4c8517][_0xafdc('0x19')],_0x4db099[_0x4c8517][_0xafdc('0x4d')]);}else{manager['stop'](_0x4c8517);manager[_0xafdc('0x47')](_0x4c8517);logger[_0xafdc('0xa')](_0xafdc('0x56'),_0x4db099[_0x4c8517][_0xafdc('0x19')],_0x4db099[_0x4c8517][_0xafdc('0x4d')]);}}}})['catch'](function(_0x314fef){logger[_0xafdc('0x2b')](JSON[_0xafdc('0x25')](_0x314fef));});}exports[_0xafdc('0x59')]=function(_0xeb9009){return getJobs(_0xeb9009);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 805e2cd..baa3e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bc5=['CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','all','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','TranscriptionJob','TranscriptionJobStatus','COMPLETED','format','[RECORDING:%d]\x20Get\x20transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','update','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available'];(function(_0x244a86,_0x41b276){var _0x5efe98=function(_0x49b0e6){while(--_0x49b0e6){_0x244a86['push'](_0x244a86['shift']());}};_0x5efe98(++_0x41b276);}(_0x5bc5,0xb2));var _0x55bc=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0x5bc5[_0x33fcbb];return _0x2efe40;};var _=require(_0x55bc('0x0'));var AWS=require(_0x55bc('0x1'));var rp=require(_0x55bc('0x2'));var util=require(_0x55bc('0x3'));var BPromise=require(_0x55bc('0x4'));var db=require(_0x55bc('0x5'))['db'];var logger=require(_0x55bc('0x6'))(_0x55bc('0x7'));function getTranscriptionJob(_0xa94795,_0x1ea633,_0x340279,_0x121bd1){return new Promise(function(_0x188eb6,_0x5d5f1d){var _0x4d78d6=new AWS[(_0x55bc('0x8'))]({'accessKeyId':_0x1ea633,'secretAccessKey':_0xa94795,'region':_0x340279});_0x4d78d6[_0x55bc('0x9')]({'TranscriptionJobName':_0x121bd1},function(_0x38839e,_0x4d0610){if(_0x38839e){return _0x5d5f1d(_0x38839e);}else{return _0x188eb6(_0x4d0610);}});});}function sentiment(_0x1d6e72,_0x3a0e5e,_0xc535ac,_0x3114d0,_0x3548fb){return new Promise(function(_0xe07566,_0x72a619){var _0x718891=new AWS['Comprehend']({'accessKeyId':_0x3a0e5e,'secretAccessKey':_0x1d6e72,'region':_0xc535ac});_0x718891[_0x55bc('0xa')]({'Text':_0x3114d0,'LanguageCode':_0x3548fb[_0x55bc('0xb')](0x0,0x2)},function(_0x41f298,_0x531cea){if(_0x41f298){return _0x72a619(_0x41f298);}else{return _0xe07566(_0x531cea);}});});}function checkTranscribeJob(_0x3edda7,_0x59e38c,_0xd79ff5){var _0x2d3bd1;return new BPromise(function(_0x2d745b,_0x53542b){logger[_0x55bc('0xc')](util['format'](_0x55bc('0xd'),_0x3edda7['id'],_0x3edda7[_0x55bc('0xe')]));return getTranscriptionJob(_0xd79ff5[_0x55bc('0xf')],_0xd79ff5['data2'],_0x59e38c[_0x55bc('0x10')],_0x3edda7[_0x55bc('0xe')])['then'](function(_0x5c0547){logger[_0x55bc('0xc')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x3edda7['id'],_0x3edda7[_0x55bc('0xe')],_0x5c0547[_0x55bc('0x11')][_0x55bc('0x12')]));if(!_0x3edda7['fileText']){switch(_0x5c0547[_0x55bc('0x11')][_0x55bc('0x12')]){case _0x55bc('0x13'):var _0x5714f5={'transcribeStatus':_0x5c0547[_0x55bc('0x11')]['TranscriptionJobStatus'],'fileUri':_0x5c0547[_0x55bc('0x11')]['Transcript']['TranscriptFileUri']};logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x15'),_0x3edda7['id']));return rp({'uri':_0x5c0547['TranscriptionJob']['Transcript']['TranscriptFileUri'],'json':!![]})[_0x55bc('0x16')](function(_0x4647ca){logger['info'](util['format'](_0x55bc('0x17'),_0x3edda7['id']));if(_0x4647ca&&_0x4647ca[_0x55bc('0x18')]&&_0x4647ca[_0x55bc('0x18')][_0x55bc('0x19')]&&_0x4647ca['results'][_0x55bc('0x19')]['length']){_0x5714f5['fileText']='';for(var _0x3e6254=0x0;_0x3e6254<_0x4647ca[_0x55bc('0x18')][_0x55bc('0x19')][_0x55bc('0x1a')];_0x3e6254++){_0x5714f5[_0x55bc('0x1b')]+=_0x4647ca['results'][_0x55bc('0x19')][_0x3e6254][_0x55bc('0x1c')]+'';}}return _0x3edda7[_0x55bc('0x1d')](_0x5714f5);})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3edda7['id']));if(!_0x3edda7[_0x55bc('0x1e')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x21'));}if(!_0x59e38c[_0x55bc('0x22')]||!_0x59e38c[_0x55bc('0x23')]||!_0x59e38c[_0x55bc('0x24')]||!_0x59e38c[_0x55bc('0x25')]||!_0x59e38c[_0x55bc('0x26')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x27'));}if(!_0x5714f5['fileText']){throw new Error(_0x55bc('0x28'));}if(_0x59e38c[_0x55bc('0x23')]===_0xd79ff5['id']){return _0xd79ff5;}else{return db[_0x55bc('0x29')][_0x55bc('0x2a')]({'where':{'id':_settings[_0x55bc('0x23')]}});}})['then'](function(_0x317bca){if(!_0x317bca){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2b'));}if(!_0x317bca[_0x55bc('0xf')]||!_0x317bca[_0x55bc('0x2c')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x2d3bd1=_0x317bca;logger['info'](util[_0x55bc('0x14')](_0x55bc('0x2e'),_0x3edda7['id']));return sentiment(_0x2d3bd1[_0x55bc('0xf')],_0x2d3bd1[_0x55bc('0x2c')],_0x59e38c[_0x55bc('0x24')],_0x5714f5[_0x55bc('0x1b')],_0x59e38c[_0x55bc('0x25')]);})['then'](function(_0x29976c){logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2f'),_0x3edda7['id']));return _0x3edda7[_0x55bc('0x1d')]({'sentiment':_0x29976c[_0x55bc('0x30')],'sPositive':_0x29976c[_0x55bc('0x31')][_0x55bc('0x32')],'sNegative':_0x29976c['SentimentScore']['Negative'],'sMixed':_0x29976c[_0x55bc('0x31')][_0x55bc('0x33')],'sNeutral':_0x29976c[_0x55bc('0x31')][_0x55bc('0x34')]});})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x35'),_0x3edda7['id']));_0x2d745b();});case'FAILED':return _0x3edda7[_0x55bc('0x1d')]({'transcribeStatus':_0x55bc('0x36'),'failureReason':_0x5c0547[_0x55bc('0x11')]['FailureReason']})['then'](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')](_0x55bc('0x35'),_0x3edda7['id']));_0x2d745b();});default:logger[_0x55bc('0xc')](util['format'](_0x55bc('0x37'),_0x3edda7['id']));break;}}else{return BPromise[_0x55bc('0x38')]()[_0x55bc('0x16')](function(){if(!_0x3edda7[_0x55bc('0x1e')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x21'));}if(!_0x59e38c[_0x55bc('0x22')]||!_0x59e38c['sentimentAccountId']||!_0x59e38c[_0x55bc('0x24')]||!_0x59e38c[_0x55bc('0x25')]||!_0x59e38c[_0x55bc('0x26')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x27'));}if(!_0x3edda7[_0x55bc('0x1b')]){throw new Error(_0x55bc('0x28'));}if(_0x59e38c['sentimentAccountId']===_0xd79ff5['id']){return _0xd79ff5;}else{return db[_0x55bc('0x29')][_0x55bc('0x2a')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x55bc('0x16')](function(_0x464f05){if(!_0x464f05){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2b'));}if(!_0x464f05[_0x55bc('0xf')]||!_0x464f05[_0x55bc('0x2c')]){throw new db['Sequelize'][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x2d3bd1=_0x464f05;logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2e'),_0x3edda7['id']));return sentiment(_0x2d3bd1[_0x55bc('0xf')],_0x2d3bd1[_0x55bc('0x2c')],_0x59e38c[_0x55bc('0x24')],_0x3edda7['fileText'],_0x59e38c[_0x55bc('0x25')]);})['then'](function(_0x54cf96){logger[_0x55bc('0xc')](util['format'](_0x55bc('0x2f'),_0x3edda7['id']));return _0x3edda7[_0x55bc('0x1d')]({'sentiment':_0x54cf96[_0x55bc('0x30')],'sPositive':_0x54cf96[_0x55bc('0x31')]['Positive'],'sNegative':_0x54cf96['SentimentScore']['Negative'],'sMixed':_0x54cf96['SentimentScore'][_0x55bc('0x33')],'sNeutral':_0x54cf96[_0x55bc('0x31')]['Neutral'],'transcribeStatus':_0x55bc('0x13')});})[_0x55bc('0x16')](function(){logger[_0x55bc('0xc')](util[_0x55bc('0x14')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3edda7['id']));_0x2d745b();});}})[_0x55bc('0x39')](function(_0x1acbc0){if(_0x1acbc0){if(!_0x1acbc0[_0x55bc('0x3a')]||_0x1acbc0[_0x55bc('0x3a')]!==_0x55bc('0x3b')){logger['error'](util[_0x55bc('0x14')](_0x55bc('0x3c'),_0x3edda7['id']),util[_0x55bc('0x3d')](_0x1acbc0,{'showHidden':![],'depth':null}));}}_0x2d745b();});});}function checkTranscribe(){var _0x308f2c;var _0x300147;var _0x44d617;return db[_0x55bc('0x3e')]['findAll']({'where':{'transcribeStatus':_0x55bc('0x3f')}})[_0x55bc('0x16')](function(_0x31a171){if(!_0x31a171||!_0x31a171[_0x55bc('0x1a')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x40'));}_0x308f2c=_0x31a171;return db[_0x55bc('0x41')][_0x55bc('0x2a')]({'where':{'id':0x1}});})[_0x55bc('0x16')](function(_0x2966d6){if(!_0x2966d6){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x42'));}_0x300147=_0x2966d6;if(!_0x300147['transcribe']||!_0x300147['transcribeAccountId']||!_0x300147[_0x55bc('0x10')]||!_0x300147[_0x55bc('0x25')]||!_0x300147[_0x55bc('0x26')]){throw new db['Sequelize'][(_0x55bc('0x20'))]('Transcribe\x20not\x20configured');}return db[_0x55bc('0x29')]['findOne']({'where':{'id':_0x300147[_0x55bc('0x43')]}});})['then'](function(_0x1ba9f3){if(!_0x1ba9f3){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1ba9f3[_0x55bc('0xf')]||!_0x1ba9f3[_0x55bc('0x2c')]){throw new db[(_0x55bc('0x1f'))][(_0x55bc('0x20'))](_0x55bc('0x2d'));}_0x44d617=_0x1ba9f3;var _0x4fc84e=[];_0x308f2c[_0x55bc('0x44')](function(_0x5d4c24){_0x4fc84e[_0x55bc('0x45')](checkTranscribeJob(_0x5d4c24,_0x300147,_0x44d617));});return BPromise[_0x55bc('0x46')](_0x4fc84e);})[_0x55bc('0x39')](function(_0x21cc1c){if(_0x21cc1c){if(!_0x21cc1c[_0x55bc('0x3a')]||_0x21cc1c[_0x55bc('0x3a')]!==_0x55bc('0x3b')){logger[_0x55bc('0x47')](util[_0x55bc('0x3d')](_0x21cc1c,{'showHidden':![],'depth':null}));}}});}exports[_0x55bc('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xb9be=['format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeRegion','transcribeName','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentRegion','language','bucket','ValidationError','sentimentAccountId','findOne','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','resolve','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','catch','name','SequelizeValidationError','error','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','transcribeAccountId','Transcribe\x20not\x20configured','forEach','all','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info'];(function(_0x131db7,_0x1f48b9){var _0x4b8c7c=function(_0x221afb){while(--_0x221afb){_0x131db7['push'](_0x131db7['shift']());}};_0x4b8c7c(++_0x1f48b9);}(_0xb9be,0xc5));var _0xeb9b=function(_0xf79bae,_0x263b2a){_0xf79bae=_0xf79bae-0x0;var _0x5d2cb7=_0xb9be[_0xf79bae];return _0x5d2cb7;};var _=require(_0xeb9b('0x0'));var AWS=require(_0xeb9b('0x1'));var rp=require(_0xeb9b('0x2'));var util=require(_0xeb9b('0x3'));var BPromise=require(_0xeb9b('0x4'));var db=require(_0xeb9b('0x5'))['db'];var logger=require(_0xeb9b('0x6'))(_0xeb9b('0x7'));function getTranscriptionJob(_0x288aaa,_0x579a7e,_0x5006b8,_0x2bb681){return new Promise(function(_0x181810,_0x2529cb){var _0x49a8b9=new AWS[(_0xeb9b('0x8'))]({'accessKeyId':_0x579a7e,'secretAccessKey':_0x288aaa,'region':_0x5006b8});_0x49a8b9[_0xeb9b('0x9')]({'TranscriptionJobName':_0x2bb681},function(_0x210eeb,_0x28dc5f){if(_0x210eeb){return _0x2529cb(_0x210eeb);}else{return _0x181810(_0x28dc5f);}});});}function sentiment(_0x1cdec6,_0x3da395,_0x418204,_0x16761a,_0x32f0c4){return new Promise(function(_0x4f4952,_0x20c855){var _0x58d6a4=new AWS['Comprehend']({'accessKeyId':_0x3da395,'secretAccessKey':_0x1cdec6,'region':_0x418204});_0x58d6a4[_0xeb9b('0xa')]({'Text':_0x16761a,'LanguageCode':_0x32f0c4[_0xeb9b('0xb')](0x0,0x2)},function(_0x4975dd,_0x2b7405){if(_0x4975dd){return _0x20c855(_0x4975dd);}else{return _0x4f4952(_0x2b7405);}});});}function checkTranscribeJob(_0x1def58,_0x3df18a,_0x2a01df){var _0x51598f;return new BPromise(function(_0x5e94e3,_0x5af455){logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')](_0xeb9b('0xe'),_0x1def58['id'],_0x1def58['transcribeName']));return getTranscriptionJob(_0x2a01df['data1'],_0x2a01df['data2'],_0x3df18a[_0xeb9b('0xf')],_0x1def58[_0xeb9b('0x10')])[_0xeb9b('0x11')](function(_0x3fa308){logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')](_0xeb9b('0x12'),_0x1def58['id'],_0x1def58['transcribeName'],_0x3fa308[_0xeb9b('0x13')][_0xeb9b('0x14')]));if(!_0x1def58[_0xeb9b('0x15')]){switch(_0x3fa308[_0xeb9b('0x13')][_0xeb9b('0x14')]){case _0xeb9b('0x16'):var _0x21010e={'transcribeStatus':_0x3fa308[_0xeb9b('0x13')][_0xeb9b('0x14')],'fileUri':_0x3fa308[_0xeb9b('0x13')]['Transcript'][_0xeb9b('0x17')]};logger['info'](util['format'](_0xeb9b('0x18'),_0x1def58['id']));return rp({'uri':_0x3fa308[_0xeb9b('0x13')]['Transcript'][_0xeb9b('0x17')],'json':!![]})[_0xeb9b('0x11')](function(_0x37935c){logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')](_0xeb9b('0x19'),_0x1def58['id']));if(_0x37935c&&_0x37935c[_0xeb9b('0x1a')]&&_0x37935c[_0xeb9b('0x1a')][_0xeb9b('0x1b')]&&_0x37935c[_0xeb9b('0x1a')][_0xeb9b('0x1b')][_0xeb9b('0x1c')]){_0x21010e[_0xeb9b('0x15')]='';for(var _0xe6d3e1=0x0;_0xe6d3e1<_0x37935c[_0xeb9b('0x1a')][_0xeb9b('0x1b')]['length'];_0xe6d3e1++){_0x21010e[_0xeb9b('0x15')]+=_0x37935c['results'][_0xeb9b('0x1b')][_0xe6d3e1]['transcript']+'';}}return _0x1def58[_0xeb9b('0x1d')](_0x21010e);})[_0xeb9b('0x11')](function(){logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1def58['id']));if(!_0x1def58[_0xeb9b('0x1e')]){throw new db[(_0xeb9b('0x1f'))]['ValidationError'](_0xeb9b('0x20'));}if(!_0x3df18a[_0xeb9b('0x21')]||!_0x3df18a['sentimentAccountId']||!_0x3df18a[_0xeb9b('0x22')]||!_0x3df18a[_0xeb9b('0x23')]||!_0x3df18a[_0xeb9b('0x24')]){throw new db['Sequelize'][(_0xeb9b('0x25'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x21010e[_0xeb9b('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x3df18a[_0xeb9b('0x26')]===_0x2a01df['id']){return _0x2a01df;}else{return db['CloudProvider'][_0xeb9b('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xeb9b('0x11')](function(_0x4c8e4c){if(!_0x4c8e4c){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x28'));}if(!_0x4c8e4c[_0xeb9b('0x29')]||!_0x4c8e4c[_0xeb9b('0x2a')]){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x2b'));}_0x51598f=_0x4c8e4c;logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1def58['id']));return sentiment(_0x51598f[_0xeb9b('0x29')],_0x51598f[_0xeb9b('0x2a')],_0x3df18a[_0xeb9b('0x22')],_0x21010e[_0xeb9b('0x15')],_0x3df18a[_0xeb9b('0x23')]);})[_0xeb9b('0x11')](function(_0x179cd9){logger['info'](util[_0xeb9b('0xd')](_0xeb9b('0x2c'),_0x1def58['id']));return _0x1def58[_0xeb9b('0x1d')]({'sentiment':_0x179cd9['Sentiment'],'sPositive':_0x179cd9[_0xeb9b('0x2d')][_0xeb9b('0x2e')],'sNegative':_0x179cd9[_0xeb9b('0x2d')][_0xeb9b('0x2f')],'sMixed':_0x179cd9[_0xeb9b('0x2d')][_0xeb9b('0x30')],'sNeutral':_0x179cd9['SentimentScore'][_0xeb9b('0x31')]});})[_0xeb9b('0x11')](function(){logger['info'](util[_0xeb9b('0xd')](_0xeb9b('0x32'),_0x1def58['id']));_0x5e94e3();});case _0xeb9b('0x33'):return _0x1def58[_0xeb9b('0x1d')]({'transcribeStatus':_0xeb9b('0x33'),'failureReason':_0x3fa308[_0xeb9b('0x13')][_0xeb9b('0x34')]})['then'](function(){logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')](_0xeb9b('0x32'),_0x1def58['id']));_0x5e94e3();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1def58['id']));break;}}else{return BPromise[_0xeb9b('0x35')]()[_0xeb9b('0x11')](function(){if(!_0x1def58[_0xeb9b('0x1e')]){throw new db['Sequelize'][(_0xeb9b('0x25'))](_0xeb9b('0x20'));}if(!_0x3df18a[_0xeb9b('0x21')]||!_0x3df18a[_0xeb9b('0x26')]||!_0x3df18a[_0xeb9b('0x22')]||!_0x3df18a[_0xeb9b('0x23')]||!_0x3df18a[_0xeb9b('0x24')]){throw new db['Sequelize'][(_0xeb9b('0x25'))](_0xeb9b('0x36'));}if(!_0x1def58[_0xeb9b('0x15')]){throw new Error('Transcript\x20not\x20available');}if(_0x3df18a['sentimentAccountId']===_0x2a01df['id']){return _0x2a01df;}else{return db[_0xeb9b('0x37')][_0xeb9b('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0xeb9b('0x11')](function(_0x535e73){if(!_0x535e73){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x28'));}if(!_0x535e73[_0xeb9b('0x29')]||!_0x535e73[_0xeb9b('0x2a')]){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x2b'));}_0x51598f=_0x535e73;logger[_0xeb9b('0xc')](util[_0xeb9b('0xd')](_0xeb9b('0x38'),_0x1def58['id']));return sentiment(_0x51598f[_0xeb9b('0x29')],_0x51598f['data2'],_0x3df18a['sentimentRegion'],_0x1def58[_0xeb9b('0x15')],_0x3df18a['language']);})[_0xeb9b('0x11')](function(_0x232731){logger[_0xeb9b('0xc')](util['format'](_0xeb9b('0x2c'),_0x1def58['id']));return _0x1def58[_0xeb9b('0x1d')]({'sentiment':_0x232731['Sentiment'],'sPositive':_0x232731[_0xeb9b('0x2d')][_0xeb9b('0x2e')],'sNegative':_0x232731[_0xeb9b('0x2d')][_0xeb9b('0x2f')],'sMixed':_0x232731[_0xeb9b('0x2d')][_0xeb9b('0x30')],'sNeutral':_0x232731[_0xeb9b('0x2d')][_0xeb9b('0x31')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0xeb9b('0xc')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x1def58['id']));_0x5e94e3();});}})[_0xeb9b('0x39')](function(_0x1ba46c){if(_0x1ba46c){if(!_0x1ba46c[_0xeb9b('0x3a')]||_0x1ba46c[_0xeb9b('0x3a')]!==_0xeb9b('0x3b')){logger[_0xeb9b('0x3c')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x1def58['id']),util['inspect'](_0x1ba46c,{'showHidden':![],'depth':null}));}}_0x5e94e3();});});}function checkTranscribe(){var _0x3792c6;var _0x4d086a;var _0x4901b0;return db[_0xeb9b('0x3d')][_0xeb9b('0x3e')]({'where':{'transcribeStatus':_0xeb9b('0x3f')}})[_0xeb9b('0x11')](function(_0xe4a817){if(!_0xe4a817||!_0xe4a817[_0xeb9b('0x1c')]){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x40'));}_0x3792c6=_0xe4a817;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0xeb9b('0x11')](function(_0x21c93a){if(!_0x21c93a){throw new db['Sequelize'][(_0xeb9b('0x25'))]('Settings\x20not\x20available');}_0x4d086a=_0x21c93a;if(!_0x4d086a[_0xeb9b('0x7')]||!_0x4d086a[_0xeb9b('0x41')]||!_0x4d086a['transcribeRegion']||!_0x4d086a['language']||!_0x4d086a['bucket']){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x42'));}return db['CloudProvider']['findOne']({'where':{'id':_0x4d086a[_0xeb9b('0x41')]}});})[_0xeb9b('0x11')](function(_0x3e6e73){if(!_0x3e6e73){throw new db[(_0xeb9b('0x1f'))][(_0xeb9b('0x25'))](_0xeb9b('0x28'));}if(!_0x3e6e73['data1']||!_0x3e6e73[_0xeb9b('0x2a')]){throw new db[(_0xeb9b('0x1f'))]['ValidationError'](_0xeb9b('0x2b'));}_0x4901b0=_0x3e6e73;var _0x4ba9d8=[];_0x3792c6[_0xeb9b('0x43')](function(_0x12f8d6){_0x4ba9d8['push'](checkTranscribeJob(_0x12f8d6,_0x4d086a,_0x4901b0));});return BPromise[_0xeb9b('0x44')](_0x4ba9d8);})['catch'](function(_0x3129a0){if(_0x3129a0){if(!_0x3129a0[_0xeb9b('0x3a')]||_0x3129a0[_0xeb9b('0x3a')]!==_0xeb9b('0x3b')){logger[_0xeb9b('0x3c')](util['inspect'](_0x3129a0,{'showHidden':![],'depth':null}));}}});}exports[_0xeb9b('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 4d7f52d..6acd3e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e6f=['system','timeout','format','then','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','../../mysqldb','../logger','schedule','localhost','socket.io-emitter','redis','lastMsgAt','subtract','hours','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x8e6f,0x1cc));var _0xf8e6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e6f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0xf8e6('0x0'));var Redis=require(_0xf8e6('0x1'));var util=require('util');var config=require('../../config/environment');var db=require(_0xf8e6('0x2'))['db'];var logger=require(_0xf8e6('0x3'))(_0xf8e6('0x4'));config['redis']=_['defaults'](config['redis'],{'host':_0xf8e6('0x5'),'port':0x18eb});var io=require(_0xf8e6('0x6'))(new Redis(config[_0xf8e6('0x7')]));function closeInteractions(){var _0x3e5b98=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id',_0xf8e6('0x8')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf8e6('0x9')](0x18,_0xf8e6('0xa'))}}})['then'](function(_0x42bcca){if(_0x42bcca&&_0x42bcca[_0xf8e6('0xb')]){_0x3e5b98=_['map'](_0x42bcca||[],'id');logger[_0xf8e6('0xc')](_0xf8e6('0xd'),_0x3e5b98[_0xf8e6('0xe')]());return db['WhatsappInteraction']['update']({'closeReason':_0xf8e6('0xf'),'disposition':_0xf8e6('0x10'),'closed':!![],'closedAt':moment()[_0xf8e6('0x11')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x3e5b98}});}})[_0xf8e6('0x12')](function(){if(_0x3e5b98&&_0x3e5b98[_0xf8e6('0xb')]){logger[_0xf8e6('0xc')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x3e5b98['join']());for(var _0x130eef=0x0;_0x130eef<_0x3e5b98[_0xf8e6('0xb')];_0x130eef++){io[_0xf8e6('0x13')](_0xf8e6('0x14'),{'id':_0x3e5b98[_0x130eef],'closed':!![]});}}})[_0xf8e6('0x15')](function(_0xbdb5a7){logger['error'](_0xf8e6('0x16'),_0xbdb5a7?util[_0xf8e6('0x17')](_0xbdb5a7,{'showHidden':![],'depth':null}):'');});}exports[_0xf8e6('0x18')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xac6b=['map','info','join','WhatsappInteraction','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','start','moment','ioredis','../../config/environment','../logger','schedule','redis','defaults','localhost','socket.io-emitter','findAll','lastMsgAt','subtract','hours'];(function(_0x5f2641,_0x3e35d5){var _0x57db6f=function(_0x233482){while(--_0x233482){_0x5f2641['push'](_0x5f2641['shift']());}};_0x57db6f(++_0x3e35d5);}(_0xac6b,0x115));var _0xbac6=function(_0x4fc272,_0x87e98){_0x4fc272=_0x4fc272-0x0;var _0x12afe4=_0xac6b[_0x4fc272];return _0x12afe4;};'use strict';var _=require('lodash');var moment=require(_0xbac6('0x0'));var Redis=require(_0xbac6('0x1'));var util=require('util');var config=require(_0xbac6('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xbac6('0x3'))(_0xbac6('0x4'));config[_0xbac6('0x5')]=_[_0xbac6('0x6')](config[_0xbac6('0x5')],{'host':_0xbac6('0x7'),'port':0x18eb});var io=require(_0xbac6('0x8'))(new Redis(config[_0xbac6('0x5')]));function closeInteractions(){var _0x665d19=[];return db['WhatsappInteraction'][_0xbac6('0x9')]({'raw':!![],'attributes':['id',_0xbac6('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xbac6('0xb')](0x18,_0xbac6('0xc'))}}})['then'](function(_0x3b8452){if(_0x3b8452&&_0x3b8452['length']){_0x665d19=_[_0xbac6('0xd')](_0x3b8452||[],'id');logger[_0xbac6('0xe')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x665d19[_0xbac6('0xf')]());return db[_0xbac6('0x10')]['update']({'closeReason':_0xbac6('0x11'),'disposition':_0xbac6('0x12'),'closed':!![],'closedAt':moment()[_0xbac6('0x13')](_0xbac6('0x14'))},{'where':{'id':_0x665d19}});}})[_0xbac6('0x15')](function(){if(_0x665d19&&_0x665d19[_0xbac6('0x16')]){logger[_0xbac6('0xe')](_0xbac6('0x17'),_0x665d19['join']());for(var _0x4bafa9=0x0;_0x4bafa9<_0x665d19[_0xbac6('0x16')];_0x4bafa9++){io[_0xbac6('0x18')](_0xbac6('0x19'),{'id':_0x665d19[_0x4bafa9],'closed':!![]});}}})[_0xbac6('0x1a')](function(_0x22d93c){logger[_0xbac6('0x1b')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x22d93c?util['inspect'](_0x22d93c,{'showHidden':![],'depth':null}):'');});}exports[_0xbac6('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 1e7f5bb..a3f435b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535a=['bulkCreate','hopper1','hopper2','catch','util','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper'];(function(_0x2a083f,_0x286b24){var _0x3feaa1=function(_0xe26645){while(--_0xe26645){_0x2a083f['push'](_0x2a083f['shift']());}};_0x3feaa1(++_0x286b24);}(_0x535a,0x1a2));var _0xa535=function(_0xff39c1,_0x91728a){_0xff39c1=_0xff39c1-0x0;var _0x830b7e=_0x535a[_0xff39c1];return _0x830b7e;};'use strict';var util=require(_0xa535('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xa535('0x1')]({'id':i,'firstName':_0xa535('0x2')+i,'lastName':_0xa535('0x3')+i,'phone':0xf879fb460+i,'email':_0xa535('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xa535('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xa535('0x5')](),'updatedAt':Date[_0xa535('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xa535('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xa535('0x3')+i,'phone':0xf879fb460+i,'email':_0xa535('0x4')+i+_0xa535('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xa535('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0xa535('0x5')]()});}db[_0xa535('0x7')][_0xa535('0x8')]({'where':{}})[_0xa535('0x9')](function(){return db[_0xa535('0x7')]['bulkCreate'](contacts);})[_0xa535('0x9')](function(){console[_0xa535('0xa')](_0xa535('0xb'),_0xa535('0xc'));return db['CmHopper']['destroy']({'where':{}});})[_0xa535('0x9')](function(){return db[_0xa535('0xd')][_0xa535('0xe')](hopper);})[_0xa535('0x9')](function(){console['log'](_0xa535('0xb'),_0xa535('0xf'));return db[_0xa535('0x7')][_0xa535('0xe')](contacts2);})[_0xa535('0x9')](function(){console[_0xa535('0xa')](_0xa535('0xb'),'contacts2');return db[_0xa535('0xd')][_0xa535('0xe')](hopper2);})['then'](function(){console[_0xa535('0xa')]('finished\x20populating',_0xa535('0x10'));})[_0xa535('0x11')](function(_0x31e10f){console['log'](_0x31e10f);});
\ No newline at end of file
+var _0x558c=['@xcally.com','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper','bulkCreate','contacts2','catch','util','../mysqldb','push','innocenzo.biondo','now','Innocenzo','Biondo'];(function(_0x12d57d,_0xa756ed){var _0x9ad7ff=function(_0x5264f8){while(--_0x5264f8){_0x12d57d['push'](_0x12d57d['shift']());}};_0x9ad7ff(++_0xa756ed);}(_0x558c,0xd1));var _0xc558=function(_0x2f185b,_0x4d682b){_0x2f185b=_0x2f185b-0x0;var _0x2b3470=_0x558c[_0x2f185b];return _0x2b3470;};'use strict';var util=require(_0xc558('0x0'));var db=require(_0xc558('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xc558('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0xc558('0x3')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xc558('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xc558('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xc558('0x4')](),'updatedAt':Date[_0xc558('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xc558('0x2')]({'id':i,'firstName':_0xc558('0x5')+i,'lastName':_0xc558('0x6')+i,'phone':0xf879fb460+i,'email':_0xc558('0x3')+i+_0xc558('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xc558('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xc558('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xc558('0x4')](),'updatedAt':Date[_0xc558('0x4')]()});}db[_0xc558('0x8')][_0xc558('0x9')]({'where':{}})[_0xc558('0xa')](function(){return db['CmContact']['bulkCreate'](contacts);})[_0xc558('0xa')](function(){console[_0xc558('0xb')](_0xc558('0xc'),_0xc558('0xd'));return db[_0xc558('0xe')]['destroy']({'where':{}});})[_0xc558('0xa')](function(){return db[_0xc558('0xe')][_0xc558('0xf')](hopper);})[_0xc558('0xa')](function(){console[_0xc558('0xb')](_0xc558('0xc'),'hopper1');return db[_0xc558('0x8')][_0xc558('0xf')](contacts2);})[_0xc558('0xa')](function(){console['log'](_0xc558('0xc'),_0xc558('0x10'));return db[_0xc558('0xe')][_0xc558('0xf')](hopper2);})[_0xc558('0xa')](function(){console['log'](_0xc558('0xc'),'hopper2');})[_0xc558('0x11')](function(_0x29ced8){console[_0xc558('0xb')](_0x29ced8);});
\ No newline at end of file
index f34c641..1d115d9 100644 (file)
@@ -362,6 +362,10 @@ var applicationsAlways = {
       app: 'Progress'
     },
     {
+      app: 'Set',
+      appdata: 'CDR(type)=internal'
+    },
+    {
       app: 'Queue',
       appdata: '${EXTEN:20},xX'
     }
index 66a36b9..35c27e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x671b=['all','ulaw','format','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','%s%s','agent','password','friend','wss'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0x671b,0xe9));var _0xb671=function(_0x90631,_0x48e587){_0x90631=_0x90631-0x0;var _0x495bf8=_0x671b[_0x90631];return _0x495bf8;};'use strict';var util=require(_0xb671('0x0'));var db=require(_0xb671('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0xb671('0x2'),_0xb671('0x3'),i),'fullname':util['format'](_0xb671('0x2'),_0xb671('0x3'),i),'email':util['format']('%s%s@xcally.com',_0xb671('0x3'),i),'role':_0xb671('0x3'),'password':_0xb671('0x4'),'internal':0xfa0+i,'type':_0xb671('0x5'),'transport':['udp','ws',_0xb671('0x6')],'disallow':[_0xb671('0x7')],'allow':[_0xb671('0x8')],'defaultuser':util[_0xb671('0x9')](_0xb671('0x2'),_0xb671('0x3'),i),'encryption':_0xb671('0xa'),'avpf':'yes','force_avp':_0xb671('0xa'),'icesupport':_0xb671('0xa'),'dtlsenable':_0xb671('0xa'),'dtlsverify':'no','dtlscertfile':_0xb671('0xb'),'dtlsprivatekey':_0xb671('0xc'),'dtlssetup':_0xb671('0xd'),'callerid':util['format']('\x22%s\x22\x20<%s>',util[_0xb671('0x9')](_0xb671('0x2'),_0xb671('0x3'),i),0xfa0+i)});}db[_0xb671('0xe')][_0xb671('0xf')](users)[_0xb671('0x10')](function(){console[_0xb671('0x11')](_0xb671('0x12'));})[_0xb671('0x13')](function(_0x3b5fd8){console['log'](_0x3b5fd8);});
\ No newline at end of file
+var _0x1d24=['agent','%s%s@xcally.com','password','friend','udp','all','ulaw','%s%s','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','then','log','add\x20user','util','../mysqldb','push','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d24,0x88));var _0x41d2=function(_0x15fc07,_0x41cc0c){_0x15fc07=_0x15fc07-0x0;var _0x3d2c0f=_0x1d24[_0x15fc07];return _0x3d2c0f;};'use strict';var util=require(_0x41d2('0x0'));var db=require(_0x41d2('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x41d2('0x2')]({'name':util[_0x41d2('0x3')]('%s%s',_0x41d2('0x4'),i),'fullname':util[_0x41d2('0x3')]('%s%s','agent',i),'email':util[_0x41d2('0x3')](_0x41d2('0x5'),_0x41d2('0x4'),i),'role':_0x41d2('0x4'),'password':_0x41d2('0x6'),'internal':0xfa0+i,'type':_0x41d2('0x7'),'transport':[_0x41d2('0x8'),'ws','wss'],'disallow':[_0x41d2('0x9')],'allow':[_0x41d2('0xa')],'defaultuser':util['format'](_0x41d2('0xb'),_0x41d2('0x4'),i),'encryption':_0x41d2('0xc'),'avpf':_0x41d2('0xc'),'force_avp':_0x41d2('0xc'),'icesupport':_0x41d2('0xc'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x41d2('0xd'),'dtlsprivatekey':_0x41d2('0xe'),'dtlssetup':_0x41d2('0xf'),'callerid':util[_0x41d2('0x3')](_0x41d2('0x10'),util[_0x41d2('0x3')](_0x41d2('0xb'),'agent',i),0xfa0+i)});}db['User']['bulkCreate'](users)[_0x41d2('0x11')](function(){console[_0x41d2('0x12')](_0x41d2('0x13'));})['catch'](function(_0xe3fec5){console['log'](_0xe3fec5);});
\ No newline at end of file
index 3a8b6e1..0204b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb61=['user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','address','request','connection','remoteAddress','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone','ivr','UserProfileSection','findOne','autoAssociation','ChatQueues','WhatsappQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','where','Campaign','format','%s:queue:%s','length','find','role','handshake','query','ChatInteraction','ChatInteractions','MailInteraction','SmsInteraction','OpenchannelInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','userProfileId','FaxQueues','SmsQueues','SmsQueue','MailQueues','OpenchannelQueues','getFaxQueues','getSmsQueues','getOpenchannelQueues','all','chat','fax','sms','openchannel','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','MailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0xbb61,0x131));var _0x1bb6=function(_0x79b649,_0x2115b3){_0x79b649=_0x79b649-0x0;var _0x1af9b1=_0xbb61[_0x79b649];return _0x1af9b1;};'use strict';var _=require(_0x1bb6('0x0'));var util=require('util');var BPromise=require(_0x1bb6('0x1'));var db=require(_0x1bb6('0x2'))['db'];var config=require(_0x1bb6('0x3'));var queryQueues={'attributes':['id',_0x1bb6('0x4')],'include':[{'as':_0x1bb6('0x5'),'model':db[_0x1bb6('0x6')],'attributes':['id',_0x1bb6('0x4'),'role'],'raw':!![],'where':{'role':_0x1bb6('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1bb6('0x4')],'where':{'role':_0x1bb6('0x8')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1bb6('0x4')],'where':{'role':_0x1bb6('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x1bb6('0x4'),'type'],'where':{'type':_0x1bb6('0x9')}};function getAssociatedResources(_0xf43d0d,_0x1cc392,_0xe56199){return db[_0x1bb6('0xa')][_0x1bb6('0xb')]({'where':{'name':_0xf43d0d,'userProfileId':_0x1cc392},'raw':!![]})['then'](function(_0xe24210){if(_0xe24210){if(_0xe24210[_0x1bb6('0xc')]){switch(_0xf43d0d){case'VoiceQueues':case _0x1bb6('0xd'):case'FaxQueues':case'SmsQueues':case'MailQueues':case'OpenchannelQueues':case _0x1bb6('0xe'):return db[_0xe56199][_0x1bb6('0xf')](queryQueues);case'Telephones':return db[_0xe56199]['findAll'](queryTelephones);case _0x1bb6('0x10'):return db[_0xe56199][_0x1bb6('0xf')](queryTrunks);case _0x1bb6('0x11'):return db[_0xe56199][_0x1bb6('0xf')](queryCampaigns);}}else{return db[_0x1bb6('0x12')][_0x1bb6('0xf')]({'attributes':[_0x1bb6('0x13')],'where':{'sectionId':_0xe24210['id']},'raw':!![]})[_0x1bb6('0x14')](function(_0x5b1aca){if(_0x5b1aca){var _0x3856f7={'where':{'id':_[_0x1bb6('0x15')](_0x5b1aca,_0x1bb6('0x13'))},'raw':!![]};switch(_0xe56199){case _0x1bb6('0x6'):_0x3856f7[_0x1bb6('0x16')]['role']=_0x1bb6('0x8');break;case _0x1bb6('0x17'):_0x3856f7[_0x1bb6('0x16')]['type']=_0x1bb6('0x9');break;}return db[_0xe56199]['findAll'](_0x3856f7);}else{return[];}});}}else{return[];}})[_0x1bb6('0x14')](function(_0x4b2c3f){return _0x4b2c3f;});}function joinOrLeaveQueues(_0x44c3df,_0xdd0546,_0x44190f,_0x457d46){_0x44c3df[_0xdd0546](util[_0x1bb6('0x18')](_0x1bb6('0x19'),_0x44190f,_0x457d46[_0x1bb6('0x4')]));if(_0x457d46[_0x1bb6('0x5')]){for(var _0x42cb75=0x0;_0x42cb75<_0x457d46['Agents'][_0x1bb6('0x1a')];_0x42cb75+=0x1){_0x44c3df[_0xdd0546](util[_0x1bb6('0x18')]('user:%s',_0x457d46[_0x1bb6('0x5')][_0x42cb75][_0x1bb6('0x4')]));}}}function joinOrLeave(_0x1f18fa,_0xc670ec,_0x57bfbd){var _0x4b5be5;if(_0x1f18fa['handshake']['query']['id']){db['User'][_0x1bb6('0x1b')]({'attributes':['id',_0x1bb6('0x4'),_0x1bb6('0x1c'),'userProfileId'],'where':{'id':_0x1f18fa[_0x1bb6('0x1d')][_0x1bb6('0x1e')]['id']},'include':[{'model':db[_0x1bb6('0x1f')],'as':_0x1bb6('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x1bb6('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1bb6('0x22')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x1bb6('0x23'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x1bb6('0x14')](function(_0xf42d9){if(_0xf42d9){_0x4b5be5=_0xf42d9;_0x1f18fa[_0xc670ec](util[_0x1bb6('0x18')](_0x1bb6('0x24'),_0xf42d9['name']));var _0x1bc261=[];switch(_0xf42d9[_0x1bb6('0x1c')]){case'admin':_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));if(queryQueues[_0x1bb6('0x27')]('include')){delete queryQueues[_0x1bb6('0x28')];}_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x2a')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2b')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2c')][_0x1bb6('0xf')](queryQueues));_0x1bc261[_0x1bb6('0x29')](db['SmsQueue'][_0x1bb6('0xf')](queryQueues));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x2d')]['findAll'](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2e')][_0x1bb6('0xf')](queryQueues));_0x1bc261['push'](db[_0x1bb6('0x2f')]['findAll'](queryQueues));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x6')][_0x1bb6('0xf')](queryTelephones));_0x1bc261[_0x1bb6('0x29')](db[_0x1bb6('0x30')][_0x1bb6('0xf')](queryTrunks));_0x1bc261[_0x1bb6('0x29')](db['Campaign'][_0x1bb6('0xf')](queryCampaigns));_0x1bc261[_0x1bb6('0x29')](db['User'][_0x1bb6('0xf')](queryAgents));break;case _0x1bb6('0x31'):_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x32'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2a')));_0x1bc261['push'](getAssociatedResources(_0x1bb6('0xd'),_0xf42d9[_0x1bb6('0x33')],'ChatQueue'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x34'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2c')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x35'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x36')));_0x1bc261['push'](getAssociatedResources(_0x1bb6('0x37'),_0xf42d9['userProfileId'],_0x1bb6('0x2d')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x38'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x2e')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0xe'),_0xf42d9[_0x1bb6('0x33')],'WhatsappQueue'));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources('Telephones',_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x6')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources(_0x1bb6('0x10'),_0xf42d9[_0x1bb6('0x33')],_0x1bb6('0x30')));_0x1bc261[_0x1bb6('0x29')](getAssociatedResources('IvrCampaigns',_0xf42d9['userProfileId'],_0x1bb6('0x17')));_0x1bc261['push'](db['User'][_0x1bb6('0xf')](queryAgents));break;case'agent':_0x1f18fa[_0xc670ec](_0x1bb6('0x25'));_0x1f18fa[_0xc670ec](_0x1bb6('0x26'));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getVoiceQueues']({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getChatQueues']({'attributes':['id','name']}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9[_0x1bb6('0x39')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9[_0x1bb6('0x3a')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261[_0x1bb6('0x29')](_0xf42d9['getMailQueues']({'attributes':['id','name']}));_0x1bc261['push'](_0xf42d9[_0x1bb6('0x3b')]({'attributes':['id',_0x1bb6('0x4')]}));_0x1bc261['push'](_0xf42d9['getWhatsappQueues']({'attributes':['id',_0x1bb6('0x4')]}));break;}return BPromise[_0x1bb6('0x3c')](_0x1bc261);}})['then'](function(_0x1effb1){if(_0x1effb1&&_0x1effb1[_0x1bb6('0x1a')]){for(var _0x7751aa=0x0;_0x7751aa<_0x1effb1['length'];_0x7751aa+=0x1){for(var _0x8f5d79=0x0;_0x8f5d79<_0x1effb1[_0x7751aa][_0x1bb6('0x1a')];_0x8f5d79+=0x1){switch(_0x7751aa){case 0x0:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'voice',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x1:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3d'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x2:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3e'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x3:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x3f'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x4:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'mail',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x5:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,_0x1bb6('0x40'),_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x6:joinOrLeaveQueues(_0x1f18fa,_0xc670ec,'whatsapp',_0x1effb1[_0x7751aa][_0x8f5d79]);break;case 0x7:if(_0x4b5be5[_0x1bb6('0x1c')]!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util['format'](_0x1bb6('0x41'),_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0x8:if(_0x4b5be5['role']!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util['format']('trunk:%s',_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0x9:if(_0x4b5be5[_0x1bb6('0x1c')]!==_0x1bb6('0x7'))_0x1f18fa[_0xc670ec](util[_0x1bb6('0x18')](_0x1bb6('0x42'),_0x1effb1[_0x7751aa][_0x8f5d79]['type'],_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;case 0xa:_0x1f18fa[_0xc670ec](util['format'](_0x1bb6('0x24'),_0x1effb1[_0x7751aa][_0x8f5d79][_0x1bb6('0x4')]));break;}}}}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x4be649=_['map'](_0x4b5be5[_0x1bb6('0x20')],'id');return _0x4b5be5[_0x1bb6('0x44')](_0x4be649)[_0x1bb6('0x14')](function(){for(var _0x7ed84a=0x0;_0x7ed84a<_0x4be649[_0x1bb6('0x1a')];_0x7ed84a+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x46'),{'ChatInteractionId':Number(_0x4be649[_0x7ed84a]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x3aa435=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x47')],'id');return _0x4b5be5['removeMailInteractions'](_0x3aa435)[_0x1bb6('0x14')](function(){for(var _0x31961a=0x0;_0x31961a<_0x3aa435[_0x1bb6('0x1a')];_0x31961a+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x48'),{'MailInteractionId':Number(_0x3aa435[_0x31961a]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec==='leave'){var _0x456582=_['map'](_0x4b5be5[_0x1bb6('0x49')],'id');return _0x4b5be5[_0x1bb6('0x4a')](_0x456582)[_0x1bb6('0x14')](function(){for(var _0x36378e=0x0;_0x36378e<_0x456582[_0x1bb6('0x1a')];_0x36378e+=0x1){_0x57bfbd[_0x1bb6('0x45')](_0x1bb6('0x4b'),{'FaxInteractionId':Number(_0x456582[_0x36378e]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec==='leave'){var _0x369962=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x4c')],'id');return _0x4b5be5[_0x1bb6('0x4d')](_0x369962)[_0x1bb6('0x14')](function(){for(var _0xc6d438=0x0;_0xc6d438<_0x369962['length'];_0xc6d438+=0x1){_0x57bfbd[_0x1bb6('0x45')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x369962[_0xc6d438]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x3957f3=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x23')],'id');return _0x4b5be5[_0x1bb6('0x4e')](_0x3957f3)['then'](function(){for(var _0x543d73=0x0;_0x543d73<_0x3957f3['length'];_0x543d73+=0x1){_0x57bfbd['emit'](_0x1bb6('0x4f'),{'OpenchannelInteractionId':Number(_0x3957f3[_0x543d73]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x14')](function(){if(_0xc670ec===_0x1bb6('0x43')){var _0x1a64e9=_[_0x1bb6('0x15')](_0x4b5be5[_0x1bb6('0x50')],'id');return _0x4b5be5['removeWhatsappInteractions'](_0x1a64e9)[_0x1bb6('0x14')](function(){for(var _0x4d34f9=0x0;_0x4d34f9<_0x1a64e9[_0x1bb6('0x1a')];_0x4d34f9+=0x1){_0x57bfbd['emit'](_0x1bb6('0x51'),{'WhatsappInteractionId':Number(_0x1a64e9[_0x4d34f9]),'UserId':Number(_0x4b5be5['id'])});}});}})[_0x1bb6('0x52')](function(_0x10aa7c){_0x1f18fa[_0x1bb6('0x53')](_0x10aa7c);});}}function onDisconnect(_0x27b037,_0x1370da){joinOrLeave(_0x27b037,'leave',_0x1370da);}function onConnect(_0x34bfcc){joinOrLeave(_0x34bfcc,_0x1bb6('0x54'));}exports['default']=function(_0x287cac){_0x287cac['on']('connection',function(_0xae32af){_0xae32af['setMaxListeners'](0x0);_0xae32af[_0x1bb6('0x55')]=_0xae32af[_0x1bb6('0x56')][_0x1bb6('0x57')][_0x1bb6('0x58')]+':'+_0xae32af['request'][_0x1bb6('0x57')][_0x1bb6('0x59')];_0xae32af[_0x1bb6('0x5a')]=new Date();_0xae32af[_0x1bb6('0x53')]=function(_0x3dd19e){console['log']('SocketIO\x20'+_0xae32af[_0x1bb6('0x5b')][_0x1bb6('0x4')]+'['+_0xae32af[_0x1bb6('0x55')]+']',_0x3dd19e);};_0xae32af['on'](_0x1bb6('0x5c'),function(){onDisconnect(_0xae32af,_0x287cac);_0xae32af[_0x1bb6('0x53')](_0x1bb6('0x5d'));});onConnect(_0xae32af);_0xae32af[_0x1bb6('0x53')](_0x1bb6('0x5e'));});};
\ No newline at end of file
+var _0xa469=['WhatsappInteractions','voice:inbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','OpenchannelQueue','WhatsappQueue','user','voice:outbound','MailQueues','MailQueue','Trunk','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','length','voice','chat','fax','sms','mail','openchannel','telephone:%s','leave','map','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','lodash','../mysqldb','./environment','name','Agents','User','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','role','Campaign','format','user:%s','find','userProfileId','query','ChatInteraction','MailInteraction','MailInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction'];(function(_0x62b094,_0x351ece){var _0x4ed62e=function(_0x3b94a6){while(--_0x3b94a6){_0x62b094['push'](_0x62b094['shift']());}};_0x4ed62e(++_0x351ece);}(_0xa469,0x9d));var _0x9a46=function(_0x57df38,_0x5ea447){_0x57df38=_0x57df38-0x0;var _0x2dc28c=_0xa469[_0x57df38];return _0x2dc28c;};'use strict';var _=require(_0x9a46('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x9a46('0x1'))['db'];var config=require(_0x9a46('0x2'));var queryQueues={'attributes':['id',_0x9a46('0x3')],'include':[{'as':_0x9a46('0x4'),'model':db[_0x9a46('0x5')],'attributes':['id','name','role'],'raw':!![],'where':{'role':_0x9a46('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x9a46('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x9a46('0x3')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x9a46('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x9a46('0x3'),_0x9a46('0x8')],'where':{'type':_0x9a46('0x9')}};function getAssociatedResources(_0x2140c3,_0x3d17c6,_0x559d7f){return db[_0x9a46('0xa')][_0x9a46('0xb')]({'where':{'name':_0x2140c3,'userProfileId':_0x3d17c6},'raw':!![]})[_0x9a46('0xc')](function(_0x52fc2d){if(_0x52fc2d){if(_0x52fc2d[_0x9a46('0xd')]){switch(_0x2140c3){case _0x9a46('0xe'):case _0x9a46('0xf'):case _0x9a46('0x10'):case _0x9a46('0x11'):case'MailQueues':case'OpenchannelQueues':case _0x9a46('0x12'):return db[_0x559d7f][_0x9a46('0x13')](queryQueues);case _0x9a46('0x14'):return db[_0x559d7f]['findAll'](queryTelephones);case _0x9a46('0x15'):return db[_0x559d7f][_0x9a46('0x13')](queryTrunks);case _0x9a46('0x16'):return db[_0x559d7f][_0x9a46('0x13')](queryCampaigns);}}else{return db[_0x9a46('0x17')][_0x9a46('0x13')]({'attributes':['resourceId'],'where':{'sectionId':_0x52fc2d['id']},'raw':!![]})['then'](function(_0x26e328){if(_0x26e328){var _0x45139c={'where':{'id':_['map'](_0x26e328,_0x9a46('0x18'))},'raw':!![]};switch(_0x559d7f){case _0x9a46('0x5'):_0x45139c[_0x9a46('0x19')][_0x9a46('0x1a')]=_0x9a46('0x7');break;case _0x9a46('0x1b'):_0x45139c[_0x9a46('0x19')][_0x9a46('0x8')]=_0x9a46('0x9');break;}return db[_0x559d7f][_0x9a46('0x13')](_0x45139c);}else{return[];}});}}else{return[];}})[_0x9a46('0xc')](function(_0x1174ef){return _0x1174ef;});}function joinOrLeaveQueues(_0x3bc8f0,_0x360794,_0x34817c,_0x4c7467){_0x3bc8f0[_0x360794](util[_0x9a46('0x1c')]('%s:queue:%s',_0x34817c,_0x4c7467[_0x9a46('0x3')]));if(_0x4c7467['Agents']){for(var _0x1cbbc9=0x0;_0x1cbbc9<_0x4c7467[_0x9a46('0x4')]['length'];_0x1cbbc9+=0x1){_0x3bc8f0[_0x360794](util[_0x9a46('0x1c')](_0x9a46('0x1d'),_0x4c7467['Agents'][_0x1cbbc9][_0x9a46('0x3')]));}}}function joinOrLeave(_0x34cc58,_0x244439,_0x234731){var _0x1d9a28;if(_0x34cc58['handshake']['query']['id']){db[_0x9a46('0x5')][_0x9a46('0x1e')]({'attributes':['id',_0x9a46('0x3'),_0x9a46('0x1a'),_0x9a46('0x1f')],'where':{'id':_0x34cc58['handshake'][_0x9a46('0x20')]['id']},'include':[{'model':db[_0x9a46('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9a46('0x22')],'as':_0x9a46('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x9a46('0x24')],'as':_0x9a46('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x9a46('0x26')],'as':_0x9a46('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x9a46('0x28')],'as':_0x9a46('0x29'),'attributes':['id'],'raw':!![]}]})[_0x9a46('0xc')](function(_0x5db8a3){if(_0x5db8a3){_0x1d9a28=_0x5db8a3;_0x34cc58[_0x244439](util['format']('user:%s',_0x5db8a3[_0x9a46('0x3')]));var _0x7cfb24=[];switch(_0x5db8a3[_0x9a46('0x1a')]){case'admin':_0x34cc58[_0x244439](_0x9a46('0x2a'));_0x34cc58[_0x244439]('voice:outbound');if(queryQueues[_0x9a46('0x2b')](_0x9a46('0x2c'))){delete queryQueues[_0x9a46('0x2c')];}_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x2e')][_0x9a46('0x13')](queryQueues));_0x7cfb24['push'](db[_0x9a46('0x2f')][_0x9a46('0x13')](queryQueues));_0x7cfb24['push'](db[_0x9a46('0x30')][_0x9a46('0x13')](queryQueues));_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x31')][_0x9a46('0x13')](queryQueues));_0x7cfb24[_0x9a46('0x2d')](db['MailQueue']['findAll'](queryQueues));_0x7cfb24['push'](db[_0x9a46('0x32')][_0x9a46('0x13')](queryQueues));_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x33')][_0x9a46('0x13')](queryQueues));_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x5')]['findAll'](queryTelephones));_0x7cfb24[_0x9a46('0x2d')](db['Trunk'][_0x9a46('0x13')](queryTrunks));_0x7cfb24[_0x9a46('0x2d')](db['Campaign'][_0x9a46('0x13')](queryCampaigns));_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x5')][_0x9a46('0x13')](queryAgents));break;case _0x9a46('0x34'):_0x34cc58[_0x244439](_0x9a46('0x2a'));_0x34cc58[_0x244439](_0x9a46('0x35'));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources(_0x9a46('0xe'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x2e')));_0x7cfb24['push'](getAssociatedResources('ChatQueues',_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x2f')));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources(_0x9a46('0x10'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x30')));_0x7cfb24['push'](getAssociatedResources(_0x9a46('0x11'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x31')));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources(_0x9a46('0x36'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x37')));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources('OpenchannelQueues',_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x32')));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources(_0x9a46('0x12'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x33')));_0x7cfb24[_0x9a46('0x2d')](getAssociatedResources(_0x9a46('0x14'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x5')));_0x7cfb24['push'](getAssociatedResources(_0x9a46('0x15'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x38')));_0x7cfb24['push'](getAssociatedResources(_0x9a46('0x16'),_0x5db8a3[_0x9a46('0x1f')],_0x9a46('0x1b')));_0x7cfb24[_0x9a46('0x2d')](db[_0x9a46('0x5')]['findAll'](queryAgents));break;case'agent':_0x34cc58[_0x244439](_0x9a46('0x2a'));_0x34cc58[_0x244439](_0x9a46('0x35'));_0x7cfb24[_0x9a46('0x2d')](_0x5db8a3[_0x9a46('0x39')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24['push'](_0x5db8a3[_0x9a46('0x3a')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24[_0x9a46('0x2d')](_0x5db8a3[_0x9a46('0x3b')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24[_0x9a46('0x2d')](_0x5db8a3[_0x9a46('0x3c')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24['push'](_0x5db8a3[_0x9a46('0x3d')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24[_0x9a46('0x2d')](_0x5db8a3[_0x9a46('0x3e')]({'attributes':['id',_0x9a46('0x3')]}));_0x7cfb24[_0x9a46('0x2d')](_0x5db8a3['getWhatsappQueues']({'attributes':['id',_0x9a46('0x3')]}));break;}return BPromise[_0x9a46('0x3f')](_0x7cfb24);}})[_0x9a46('0xc')](function(_0x7fc089){if(_0x7fc089&&_0x7fc089[_0x9a46('0x40')]){for(var _0x350ddf=0x0;_0x350ddf<_0x7fc089[_0x9a46('0x40')];_0x350ddf+=0x1){for(var _0x5bada6=0x0;_0x5bada6<_0x7fc089[_0x350ddf][_0x9a46('0x40')];_0x5bada6+=0x1){switch(_0x350ddf){case 0x0:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x41'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x1:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x42'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x2:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x43'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x3:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x44'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x4:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x45'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x5:joinOrLeaveQueues(_0x34cc58,_0x244439,_0x9a46('0x46'),_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x6:joinOrLeaveQueues(_0x34cc58,_0x244439,'whatsapp',_0x7fc089[_0x350ddf][_0x5bada6]);break;case 0x7:if(_0x1d9a28[_0x9a46('0x1a')]!==_0x9a46('0x6'))_0x34cc58[_0x244439](util[_0x9a46('0x1c')](_0x9a46('0x47'),_0x7fc089[_0x350ddf][_0x5bada6][_0x9a46('0x3')]));break;case 0x8:if(_0x1d9a28[_0x9a46('0x1a')]!==_0x9a46('0x6'))_0x34cc58[_0x244439](util[_0x9a46('0x1c')]('trunk:%s',_0x7fc089[_0x350ddf][_0x5bada6][_0x9a46('0x3')]));break;case 0x9:if(_0x1d9a28[_0x9a46('0x1a')]!=='agent')_0x34cc58[_0x244439](util[_0x9a46('0x1c')]('campaign:%s:%s',_0x7fc089[_0x350ddf][_0x5bada6][_0x9a46('0x8')],_0x7fc089[_0x350ddf][_0x5bada6][_0x9a46('0x3')]));break;case 0xa:_0x34cc58[_0x244439](util[_0x9a46('0x1c')](_0x9a46('0x1d'),_0x7fc089[_0x350ddf][_0x5bada6][_0x9a46('0x3')]));break;}}}}})[_0x9a46('0xc')](function(){if(_0x244439===_0x9a46('0x48')){var _0x324a23=_[_0x9a46('0x49')](_0x1d9a28[_0x9a46('0x4a')],'id');return _0x1d9a28[_0x9a46('0x4b')](_0x324a23)[_0x9a46('0xc')](function(){for(var _0x2a8154=0x0;_0x2a8154<_0x324a23['length'];_0x2a8154+=0x1){_0x234731[_0x9a46('0x4c')](_0x9a46('0x4d'),{'ChatInteractionId':Number(_0x324a23[_0x2a8154]),'UserId':Number(_0x1d9a28['id'])});}});}})['then'](function(){if(_0x244439===_0x9a46('0x48')){var _0x5c2929=_[_0x9a46('0x49')](_0x1d9a28[_0x9a46('0x23')],'id');return _0x1d9a28[_0x9a46('0x4e')](_0x5c2929)[_0x9a46('0xc')](function(){for(var _0x39be38=0x0;_0x39be38<_0x5c2929[_0x9a46('0x40')];_0x39be38+=0x1){_0x234731['emit'](_0x9a46('0x4f'),{'MailInteractionId':Number(_0x5c2929[_0x39be38]),'UserId':Number(_0x1d9a28['id'])});}});}})['then'](function(){if(_0x244439==='leave'){var _0x1022d7=_['map'](_0x1d9a28['FaxInteractions'],'id');return _0x1d9a28[_0x9a46('0x50')](_0x1022d7)[_0x9a46('0xc')](function(){for(var _0x34450a=0x0;_0x34450a<_0x1022d7['length'];_0x34450a+=0x1){_0x234731[_0x9a46('0x4c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x1022d7[_0x34450a]),'UserId':Number(_0x1d9a28['id'])});}});}})[_0x9a46('0xc')](function(){if(_0x244439===_0x9a46('0x48')){var _0x3717e9=_[_0x9a46('0x49')](_0x1d9a28[_0x9a46('0x25')],'id');return _0x1d9a28['removeSmsInteractions'](_0x3717e9)[_0x9a46('0xc')](function(){for(var _0x55cb4d=0x0;_0x55cb4d<_0x3717e9['length'];_0x55cb4d+=0x1){_0x234731[_0x9a46('0x4c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3717e9[_0x55cb4d]),'UserId':Number(_0x1d9a28['id'])});}});}})[_0x9a46('0xc')](function(){if(_0x244439==='leave'){var _0x54c0bd=_[_0x9a46('0x49')](_0x1d9a28[_0x9a46('0x27')],'id');return _0x1d9a28[_0x9a46('0x51')](_0x54c0bd)[_0x9a46('0xc')](function(){for(var _0x51fbe5=0x0;_0x51fbe5<_0x54c0bd[_0x9a46('0x40')];_0x51fbe5+=0x1){_0x234731['emit'](_0x9a46('0x52'),{'OpenchannelInteractionId':Number(_0x54c0bd[_0x51fbe5]),'UserId':Number(_0x1d9a28['id'])});}});}})['then'](function(){if(_0x244439===_0x9a46('0x48')){var _0x18080d=_[_0x9a46('0x49')](_0x1d9a28[_0x9a46('0x29')],'id');return _0x1d9a28[_0x9a46('0x53')](_0x18080d)[_0x9a46('0xc')](function(){for(var _0x5a7130=0x0;_0x5a7130<_0x18080d[_0x9a46('0x40')];_0x5a7130+=0x1){_0x234731[_0x9a46('0x4c')](_0x9a46('0x54'),{'WhatsappInteractionId':Number(_0x18080d[_0x5a7130]),'UserId':Number(_0x1d9a28['id'])});}});}})[_0x9a46('0x55')](function(_0x110a0c){_0x34cc58[_0x9a46('0x56')](_0x110a0c);});}}function onDisconnect(_0x556be0,_0x36d944){joinOrLeave(_0x556be0,_0x9a46('0x48'),_0x36d944);}function onConnect(_0x1ec402){joinOrLeave(_0x1ec402,_0x9a46('0x57'));}exports[_0x9a46('0x58')]=function(_0x39d210){_0x39d210['on'](_0x9a46('0x59'),function(_0x29d15d){_0x29d15d[_0x9a46('0x5a')](0x0);_0x29d15d[_0x9a46('0x5b')]=_0x29d15d[_0x9a46('0x5c')][_0x9a46('0x59')][_0x9a46('0x5d')]+':'+_0x29d15d[_0x9a46('0x5c')][_0x9a46('0x59')][_0x9a46('0x5e')];_0x29d15d[_0x9a46('0x5f')]=new Date();_0x29d15d[_0x9a46('0x56')]=function(_0x308d46){console['log']('SocketIO\x20'+_0x29d15d[_0x9a46('0x60')]['name']+'['+_0x29d15d['address']+']',_0x308d46);};_0x29d15d['on'](_0x9a46('0x61'),function(){onDisconnect(_0x29d15d,_0x39d210);_0x29d15d[_0x9a46('0x56')](_0x9a46('0x62'));});onConnect(_0x29d15d);_0x29d15d[_0x9a46('0x56')]('CONNECTED');});};
\ No newline at end of file
index 92827ae..dc8d19a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c77=['ChatInteraction','Chat','afterUpdate','closedinteraction','ChatMessage','newmessage','SmsInteraction','newinteraction','Sms','SmsMessage','afterCreate','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','info','error','code','Trigger,\x20%s','get','channel','motionChannel','event','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','SELECT','then','contact','UserId','interface','format','SIP/%s','name','agent','incomingmessage','catch','AfterCreateMessage','opened','Sequelize','QueryTypes','undefined','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','fullname','email','internal','default','length','hasOwnProperty','model','toLowerCase','condition','util','../../mysqldb','jayson/promise','../logger','client','http'];(function(_0x2c8d85,_0x590fef){var _0x277ef4=function(_0x7c7a91){while(--_0x7c7a91){_0x2c8d85['push'](_0x2c8d85['shift']());}};_0x277ef4(++_0x590fef);}(_0x8c77,0x126));var _0x78c7=function(_0x2c9bdc,_0x5addbb){_0x2c9bdc=_0x2c9bdc-0x0;var _0x28186a=_0x8c77[_0x2c9bdc];return _0x28186a;};'use strict';var util=require(_0x78c7('0x0'));var db=require(_0x78c7('0x1'))['db'];var jayson=require(_0x78c7('0x2'));var logger=require(_0x78c7('0x3'))('triggers');var client=jayson[_0x78c7('0x4')][_0x78c7('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x78c7('0x6'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x78c7('0x7'),'model':'ChatInteraction','event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x7'),'model':_0x78c7('0xa'),'event':'afterCreate','condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':'Sms','model':_0x78c7('0xc'),'event':'afterCreate','condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Sms','model':'SmsInteraction','event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x78c7('0xe'),'model':_0x78c7('0xf'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x78c7('0x11'),'event':'afterCreate','condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':_0x78c7('0x12'),'model':_0x78c7('0x11'),'event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x12'),'model':_0x78c7('0x13'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':_0x78c7('0x14'),'model':_0x78c7('0x15'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Fax','model':_0x78c7('0x15'),'event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x78c7('0x16'),'event':_0x78c7('0x10'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x18'),'event':_0x78c7('0x10'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x18'),'event':_0x78c7('0x8'),'condition':_0x78c7('0x9'),'callback':afterUpdate},{'channel':_0x78c7('0x17'),'model':_0x78c7('0x19'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xb'),'callback':afterCreateMessage},{'channel':_0x78c7('0x1a'),'model':_0x78c7('0x1b'),'event':_0x78c7('0x10'),'condition':_0x78c7('0xd'),'callback':afterCreate},{'channel':'Openchannel','model':_0x78c7('0x1b'),'event':_0x78c7('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x78c7('0x1a'),'model':'OpenchannelMessage','event':_0x78c7('0x10'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x4184ea){return client[_0x78c7('0x1c')](_0x78c7('0x1d'),_0x4184ea)['then'](function(_0x153f9f){logger[_0x78c7('0x1e')]('Trigger,\x20%s',_0x78c7('0x1d'),_0x153f9f);if(_0x153f9f[_0x78c7('0x1f')]){if(_0x153f9f['error'][_0x78c7('0x20')]===0x1f4){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x1d'),_0x153f9f[_0x78c7('0x1f')]);}}})['catch'](function(_0x371f3d){logger['error'](_0x78c7('0x21'),_0x78c7('0x1d'),_0x371f3d);});}function afterCreateMessage(_0x9f1e90){return function(_0x4ec411){_0x4ec411=_0x4ec411[_0x78c7('0x22')]({'plain':!![]});_0x4ec411[_0x78c7('0x23')]=_0x9f1e90;_0x4ec411[_0x78c7('0x24')]=_0x9f1e90;_0x4ec411[_0x78c7('0x25')]=_0x4ec411['direction'];Promise[_0x78c7('0x26')]()['then'](function(){if(typeof _0x4ec411[_0x78c7('0x27')]==='undefined')return null;var _0x3ee74f=_0x78c7('0x28')+_0x4ec411[_0x78c7('0x27')];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x3ee74f,{'type':db['Sequelize']['QueryTypes'][_0x78c7('0x2b')],'raw':!![]});})[_0x78c7('0x2c')](function(_0x3310ce){if(_0x3310ce){_0x4ec411[_0x78c7('0x2d')]=_0x3310ce[0x0];}if(typeof _0x4ec411['UserId']==='undefined')return;return getAgent(_0x4ec411[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x10b798){if(_0x10b798){_0x4ec411[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x10b798[_0x78c7('0x32')]);_0x4ec411[_0x78c7('0x33')]=_0x10b798;_0x4ec411['channel']=_0x9f1e90;return request({'event':_0x78c7('0x34'),'message':_0x4ec411});}else{return request({'event':'outgoingmessage','message':_0x4ec411});}})[_0x78c7('0x35')](function(_0x1f904f){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x36'),_0x1f904f);});};}function afterCreate(_0x43061f,_0x5770a4){return function(_0x2e2e27){_0x2e2e27=_0x2e2e27[_0x78c7('0x22')]({'plain':!![]});_0x2e2e27['channel']=_0x43061f;_0x2e2e27[_0x78c7('0x24')]=_0x43061f;_0x2e2e27[_0x78c7('0x25')]=_0x78c7('0x37');Promise['resolve']()[_0x78c7('0x2c')](function(){var _0x42c872=_0x78c7('0x28')+_0x2e2e27['ContactId'];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x42c872,{'type':db[_0x78c7('0x38')][_0x78c7('0x39')]['SELECT'],'raw':!![]});})['then'](function(_0x10f32f){if(_0x10f32f){_0x2e2e27[_0x78c7('0x2d')]=_0x10f32f[0x0];}if(typeof _0x2e2e27[_0x78c7('0x2e')]===_0x78c7('0x3a'))return;return getAgent(_0x2e2e27[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x299d36){if(_0x299d36){_0x2e2e27[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x299d36['name']);_0x2e2e27[_0x78c7('0x33')]=_0x299d36;}return request({'event':_0x5770a4,'message':_0x2e2e27});})[_0x78c7('0x35')](function(_0x42ec39){logger[_0x78c7('0x1f')](_0x78c7('0x21'),_0x78c7('0x3b'),_0x42ec39);});};}function afterUpdate(_0x321435){return function(_0x372010){var _0x29b5b7=_0x372010[_0x78c7('0x3c')](_0x78c7('0x3d'))&&_0x372010[_0x78c7('0x3d')];var _0x1a468a=_0x372010[_0x78c7('0x3c')](_0x78c7('0x3e'));if(_0x29b5b7||_0x1a468a){var _0x175d99=_0x29b5b7?_0x78c7('0x9'):_0x78c7('0x3e');var _0x1df239=_0x372010[_0x78c7('0x22')]({'plain':!![]});_0x1df239[_0x78c7('0x23')]=_0x321435;_0x1df239[_0x78c7('0x24')]=_0x321435;_0x1df239['event']=_0x29b5b7?_0x78c7('0x3d'):_0x78c7('0x3e');var _0x51faf8=_0x78c7('0x28')+_0x1df239[_0x78c7('0x27')];return db[_0x78c7('0x29')][_0x78c7('0x2a')](_0x51faf8,{'type':db[_0x78c7('0x38')][_0x78c7('0x39')][_0x78c7('0x2b')],'raw':!![]})[_0x78c7('0x2c')](function(_0x2fbadf){if(_0x2fbadf){_0x1df239['contact']=_0x2fbadf[0x0];}if(typeof _0x1df239[_0x78c7('0x2e')]===_0x78c7('0x3a'))return;return getAgent(_0x1df239[_0x78c7('0x2e')]);})[_0x78c7('0x2c')](function(_0x2abbfe){if(_0x2abbfe){_0x1df239[_0x78c7('0x2f')]=util[_0x78c7('0x30')](_0x78c7('0x31'),_0x2abbfe['name']);_0x1df239[_0x78c7('0x33')]=_0x2abbfe;}return request({'event':_0x175d99,'message':_0x1df239});})[_0x78c7('0x35')](function(_0x70d835){logger[_0x78c7('0x1f')]('Trigger,\x20%s',_0x78c7('0x3f'),_0x70d835);});}};}function getAgent(_0x22d9e9){return db[_0x78c7('0x40')][_0x78c7('0x41')]({'where':{'id':_0x22d9e9},'attributes':['id',_0x78c7('0x32'),_0x78c7('0x42'),_0x78c7('0x43'),_0x78c7('0x44')],'raw':!![]})[_0x78c7('0x2c')](function(_0x194945){return _0x194945;});}exports[_0x78c7('0x45')]=function(){for(var _0x28b536=0x0;_0x28b536<triggers[_0x78c7('0x46')];_0x28b536+=0x1){if(db[_0x78c7('0x47')](triggers[_0x28b536][_0x78c7('0x48')])){db[triggers[_0x28b536][_0x78c7('0x48')]]['hook'](triggers[_0x28b536][_0x78c7('0x25')],triggers[_0x28b536]['callback'](triggers[_0x28b536][_0x78c7('0x23')][_0x78c7('0x49')](),triggers[_0x28b536][_0x78c7('0x4a')]));}}};
\ No newline at end of file
+var _0xde66=['find','internal','model','hook','toLowerCase','condition','util','jayson/promise','../logger','triggers','client','http','ChatInteraction','afterCreate','newinteraction','Chat','afterUpdate','Sms','SmsInteraction','closedinteraction','newmessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','EventManager','then','Trigger,\x20%s','error','code','motionChannel','event','direction','ContactId','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','undefined','interface','format','name','agent','channel','incomingmessage','outgoingmessage','catch','AfterCreateMessage','get','opened','resolve','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','AfterCreate','changed','closed','substatus','AfterUpdate'];(function(_0x5ec80a,_0x405362){var _0x15b0a5=function(_0x15a3fa){while(--_0x15a3fa){_0x5ec80a['push'](_0x5ec80a['shift']());}};_0x15b0a5(++_0x405362);}(_0xde66,0xd2));var _0x6de6=function(_0x1f20c1,_0x350567){_0x1f20c1=_0x1f20c1-0x0;var _0x548c58=_0xde66[_0x1f20c1];return _0x548c58;};'use strict';var util=require(_0x6de6('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x6de6('0x1'));var logger=require(_0x6de6('0x2'))(_0x6de6('0x3'));var client=jayson[_0x6de6('0x4')][_0x6de6('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x6de6('0x6'),'event':_0x6de6('0x7'),'condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':_0x6de6('0x9'),'model':'ChatInteraction','event':_0x6de6('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Chat','model':'ChatMessage','event':_0x6de6('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x6de6('0xb'),'model':_0x6de6('0xc'),'event':_0x6de6('0x7'),'condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':'Sms','model':_0x6de6('0xc'),'event':_0x6de6('0xa'),'condition':_0x6de6('0xd'),'callback':afterUpdate},{'channel':'Sms','model':'SmsMessage','event':_0x6de6('0x7'),'condition':_0x6de6('0xe'),'callback':afterCreateMessage},{'channel':_0x6de6('0xf'),'model':'WhatsappInteraction','event':_0x6de6('0x7'),'condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':_0x6de6('0xf'),'model':_0x6de6('0x10'),'event':'afterUpdate','condition':_0x6de6('0xd'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0x6de6('0x11'),'event':_0x6de6('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x6de6('0x12'),'model':'FaxInteraction','event':'afterCreate','condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':_0x6de6('0x12'),'model':_0x6de6('0x13'),'event':_0x6de6('0xa'),'condition':_0x6de6('0xd'),'callback':afterUpdate},{'channel':_0x6de6('0x12'),'model':_0x6de6('0x14'),'event':_0x6de6('0x7'),'condition':_0x6de6('0xe'),'callback':afterCreateMessage},{'channel':_0x6de6('0x15'),'model':'MailInteraction','event':_0x6de6('0x7'),'condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':_0x6de6('0x15'),'model':_0x6de6('0x16'),'event':_0x6de6('0xa'),'condition':_0x6de6('0xd'),'callback':afterUpdate},{'channel':_0x6de6('0x15'),'model':_0x6de6('0x17'),'event':'afterCreate','condition':_0x6de6('0xe'),'callback':afterCreateMessage},{'channel':_0x6de6('0x18'),'model':_0x6de6('0x19'),'event':_0x6de6('0x7'),'condition':_0x6de6('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':_0x6de6('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':_0x6de6('0x1a'),'event':_0x6de6('0x7'),'condition':_0x6de6('0xe'),'callback':afterCreateMessage}];function request(_0x55f5d0){return client['request'](_0x6de6('0x1b'),_0x55f5d0)[_0x6de6('0x1c')](function(_0x562fd6){logger['info'](_0x6de6('0x1d'),_0x6de6('0x1b'),_0x562fd6);if(_0x562fd6[_0x6de6('0x1e')]){if(_0x562fd6[_0x6de6('0x1e')][_0x6de6('0x1f')]===0x1f4){logger['error'](_0x6de6('0x1d'),_0x6de6('0x1b'),_0x562fd6[_0x6de6('0x1e')]);}}})['catch'](function(_0x228429){logger[_0x6de6('0x1e')](_0x6de6('0x1d'),_0x6de6('0x1b'),_0x228429);});}function afterCreateMessage(_0x344153){return function(_0x4a3de6){_0x4a3de6=_0x4a3de6['get']({'plain':!![]});_0x4a3de6['channel']=_0x344153;_0x4a3de6[_0x6de6('0x20')]=_0x344153;_0x4a3de6[_0x6de6('0x21')]=_0x4a3de6[_0x6de6('0x22')];Promise['resolve']()['then'](function(){if(typeof _0x4a3de6[_0x6de6('0x23')]==='undefined')return null;var _0x4cf0c7='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4a3de6[_0x6de6('0x23')];return db[_0x6de6('0x24')][_0x6de6('0x25')](_0x4cf0c7,{'type':db[_0x6de6('0x26')][_0x6de6('0x27')][_0x6de6('0x28')],'raw':!![]});})[_0x6de6('0x1c')](function(_0x35193f){if(_0x35193f){_0x4a3de6[_0x6de6('0x29')]=_0x35193f[0x0];}if(typeof _0x4a3de6[_0x6de6('0x2a')]===_0x6de6('0x2b'))return;return getAgent(_0x4a3de6[_0x6de6('0x2a')]);})[_0x6de6('0x1c')](function(_0x177112){if(_0x177112){_0x4a3de6[_0x6de6('0x2c')]=util[_0x6de6('0x2d')]('SIP/%s',_0x177112[_0x6de6('0x2e')]);_0x4a3de6[_0x6de6('0x2f')]=_0x177112;_0x4a3de6[_0x6de6('0x30')]=_0x344153;return request({'event':_0x6de6('0x31'),'message':_0x4a3de6});}else{return request({'event':_0x6de6('0x32'),'message':_0x4a3de6});}})[_0x6de6('0x33')](function(_0x4c48d6){logger[_0x6de6('0x1e')](_0x6de6('0x1d'),_0x6de6('0x34'),_0x4c48d6);});};}function afterCreate(_0x340f30,_0x2469c7){return function(_0x450b61){_0x450b61=_0x450b61[_0x6de6('0x35')]({'plain':!![]});_0x450b61[_0x6de6('0x30')]=_0x340f30;_0x450b61[_0x6de6('0x20')]=_0x340f30;_0x450b61[_0x6de6('0x21')]=_0x6de6('0x36');Promise[_0x6de6('0x37')]()[_0x6de6('0x1c')](function(){var _0x2c71f7=_0x6de6('0x38')+_0x450b61[_0x6de6('0x23')];return db[_0x6de6('0x24')][_0x6de6('0x25')](_0x2c71f7,{'type':db[_0x6de6('0x26')][_0x6de6('0x27')][_0x6de6('0x28')],'raw':!![]});})[_0x6de6('0x1c')](function(_0x40b591){if(_0x40b591){_0x450b61['contact']=_0x40b591[0x0];}if(typeof _0x450b61[_0x6de6('0x2a')]===_0x6de6('0x2b'))return;return getAgent(_0x450b61[_0x6de6('0x2a')]);})[_0x6de6('0x1c')](function(_0x3245f6){if(_0x3245f6){_0x450b61[_0x6de6('0x2c')]=util[_0x6de6('0x2d')]('SIP/%s',_0x3245f6[_0x6de6('0x2e')]);_0x450b61['agent']=_0x3245f6;}return request({'event':_0x2469c7,'message':_0x450b61});})[_0x6de6('0x33')](function(_0x25fbed){logger[_0x6de6('0x1e')]('Trigger,\x20%s',_0x6de6('0x39'),_0x25fbed);});};}function afterUpdate(_0x3a657e){return function(_0x531cd6){var _0x37dde5=_0x531cd6[_0x6de6('0x3a')](_0x6de6('0x3b'))&&_0x531cd6[_0x6de6('0x3b')];var _0x2cff87=_0x531cd6[_0x6de6('0x3a')](_0x6de6('0x3c'));if(_0x37dde5||_0x2cff87){var _0x5d728f=_0x37dde5?_0x6de6('0xd'):_0x6de6('0x3c');var _0x56a6a9=_0x531cd6[_0x6de6('0x35')]({'plain':!![]});_0x56a6a9[_0x6de6('0x30')]=_0x3a657e;_0x56a6a9[_0x6de6('0x20')]=_0x3a657e;_0x56a6a9[_0x6de6('0x21')]=_0x37dde5?'closed':'substatus';var _0x268326=_0x6de6('0x38')+_0x56a6a9[_0x6de6('0x23')];return db[_0x6de6('0x24')]['query'](_0x268326,{'type':db[_0x6de6('0x26')][_0x6de6('0x27')][_0x6de6('0x28')],'raw':!![]})[_0x6de6('0x1c')](function(_0x1bb797){if(_0x1bb797){_0x56a6a9['contact']=_0x1bb797[0x0];}if(typeof _0x56a6a9[_0x6de6('0x2a')]===_0x6de6('0x2b'))return;return getAgent(_0x56a6a9['UserId']);})[_0x6de6('0x1c')](function(_0x3e87b){if(_0x3e87b){_0x56a6a9[_0x6de6('0x2c')]=util[_0x6de6('0x2d')]('SIP/%s',_0x3e87b[_0x6de6('0x2e')]);_0x56a6a9[_0x6de6('0x2f')]=_0x3e87b;}return request({'event':_0x5d728f,'message':_0x56a6a9});})[_0x6de6('0x33')](function(_0x206980){logger[_0x6de6('0x1e')](_0x6de6('0x1d'),_0x6de6('0x3d'),_0x206980);});}};}function getAgent(_0x17c08a){return db['User'][_0x6de6('0x3e')]({'where':{'id':_0x17c08a},'attributes':['id',_0x6de6('0x2e'),'fullname','email',_0x6de6('0x3f')],'raw':!![]})[_0x6de6('0x1c')](function(_0x3f2ac8){return _0x3f2ac8;});}exports['default']=function(){for(var _0x462b23=0x0;_0x462b23<triggers['length'];_0x462b23+=0x1){if(db['hasOwnProperty'](triggers[_0x462b23]['model'])){db[triggers[_0x462b23][_0x6de6('0x40')]][_0x6de6('0x41')](triggers[_0x462b23]['event'],triggers[_0x462b23]['callback'](triggers[_0x462b23][_0x6de6('0x30')][_0x6de6('0x42')](),triggers[_0x462b23][_0x6de6('0x43')]));}}};
\ No newline at end of file
index 5ded222..7ebc276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x348d=['bluebird','../mysqldb','./license/util','chat','fax','whatsapp','openchannel','isValidChannel','toLowerCase','includes','updateAttributes','getLicense','role','agent','count','then','agents','lodash'];(function(_0x4de586,_0x183427){var _0x46baf5=function(_0x1157f0){while(--_0x1157f0){_0x4de586['push'](_0x4de586['shift']());}};_0x46baf5(++_0x183427);}(_0x348d,0x11f));var _0xd348=function(_0x238830,_0x545f75){_0x238830=_0x238830-0x0;var _0x5917f0=_0x348d[_0x238830];return _0x5917f0;};'use strict';var _=require(_0xd348('0x0'));var BPromise=require(_0xd348('0x1'));var db=require(_0xd348('0x2'))['db'];var util=require(_0xd348('0x3'));var channels=['voice','mail',_0xd348('0x4'),_0xd348('0x5'),'sms',_0xd348('0x6'),_0xd348('0x7')];exports['getChannels']=function(){return channels;};exports[_0xd348('0x8')]=function(_0xf9b892){_0xf9b892=_0xf9b892[_0xd348('0x9')]();return _[_0xd348('0xa')](channels,_0xf9b892);};exports['clearBlockUser']=function(_0x5c6bbd,_0x1db579,_0x309ec5,_0x1d4c58){var _0x4be4d5={'loginAttempts':_0x1db579,'blocked':_0x309ec5};if(!_['isUndefined'](_0x1d4c58)){_0x4be4d5['blockedAt']=_0x1d4c58;}return _0x5c6bbd[_0xd348('0xb')](_0x4be4d5);};exports[_0xd348('0xc')]=function(_0x54ec9b){return new BPromise(function(_0x1c2794,_0x1af716){var _0x124a9c=0x0;if(_0x54ec9b[_0xd348('0xd')]!==_0xd348('0xe')){_0x1c2794(_0x54ec9b);}db['User'][_0xd348('0xf')]({'where':{'role':_0xd348('0xe'),'online':!![],'id':{'$ne':_0x54ec9b['id']}}})['then'](function(_0x3fd7ea){_0x124a9c=_0x3fd7ea;return util[_0xd348('0xc')]();})[_0xd348('0x10')](function(_0x2b36e8){if(_0x2b36e8&&_0x2b36e8[_0xd348('0x11')]&&_0x124a9c>=_0x2b36e8[_0xd348('0x11')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x1c2794(_0x54ec9b);})['catch'](function(_0x3ca54c){_0x1af716(_0x3ca54c);});});};
\ No newline at end of file
+var _0xace1=['User','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','../mysqldb','voice','mail','chat','sms','whatsapp','openchannel','getChannels','isValidChannel','clearBlockUser','updateAttributes','agent'];(function(_0x1bad4d,_0x4d5b88){var _0x22f67d=function(_0x3747d2){while(--_0x3747d2){_0x1bad4d['push'](_0x1bad4d['shift']());}};_0x22f67d(++_0x4d5b88);}(_0xace1,0x15b));var _0x1ace=function(_0x422b16,_0x3371f3){_0x422b16=_0x422b16-0x0;var _0x55acde=_0xace1[_0x422b16];return _0x55acde;};'use strict';var _=require('lodash');var BPromise=require(_0x1ace('0x0'));var db=require(_0x1ace('0x1'))['db'];var util=require('./license/util');var channels=[_0x1ace('0x2'),_0x1ace('0x3'),_0x1ace('0x4'),'fax',_0x1ace('0x5'),_0x1ace('0x6'),_0x1ace('0x7')];exports[_0x1ace('0x8')]=function(){return channels;};exports[_0x1ace('0x9')]=function(_0x50661c){_0x50661c=_0x50661c['toLowerCase']();return _['includes'](channels,_0x50661c);};exports[_0x1ace('0xa')]=function(_0x3efe7e,_0x4c8103,_0x44ea85,_0x2f570c){var _0x4f1c99={'loginAttempts':_0x4c8103,'blocked':_0x44ea85};if(!_['isUndefined'](_0x2f570c)){_0x4f1c99['blockedAt']=_0x2f570c;}return _0x3efe7e[_0x1ace('0xb')](_0x4f1c99);};exports['getLicense']=function(_0x1509a5){return new BPromise(function(_0x718260,_0x39bda8){var _0x16fb50=0x0;if(_0x1509a5['role']!==_0x1ace('0xc')){_0x718260(_0x1509a5);}db[_0x1ace('0xd')][_0x1ace('0xe')]({'where':{'role':_0x1ace('0xc'),'online':!![],'id':{'$ne':_0x1509a5['id']}}})[_0x1ace('0xf')](function(_0x310a48){_0x16fb50=_0x310a48;return util[_0x1ace('0x10')]();})[_0x1ace('0xf')](function(_0xfaa708){if(_0xfaa708&&_0xfaa708[_0x1ace('0x11')]&&_0x16fb50>=_0xfaa708['agents']){throw Error(_0x1ace('0x12'));}_0x718260(_0x1509a5);})[_0x1ace('0x13')](function(_0x44a0e6){_0x39bda8(_0x44a0e6);});});};
\ No newline at end of file
index 54f68b6..4fba311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb235=['send','exports','404','status','json'];(function(_0x8ca72f,_0x2ccb6d){var _0x501ace=function(_0x2c8a7c){while(--_0x2c8a7c){_0x8ca72f['push'](_0x8ca72f['shift']());}};_0x501ace(++_0x2ccb6d);}(_0xb235,0xb5));var _0x5b23=function(_0xa72345,_0x1fd304){_0xa72345=_0xa72345-0x0;var _0xbc82fb=_0xb235[_0xa72345];return _0xbc82fb;};'use strict';module[_0x5b23('0x0')][0x194]=function pageNotFound(_0x2fd788,_0x529f6e){var _0x465e68=_0x5b23('0x1');var _0x598dff=0x194;var _0x3128a6={'status':_0x598dff};_0x529f6e[_0x5b23('0x2')](_0x3128a6[_0x5b23('0x2')]);_0x529f6e['render'](_0x465e68,{},function(_0x1f4e28,_0x476f3b){if(_0x1f4e28){return _0x529f6e[_0x5b23('0x2')](_0x3128a6[_0x5b23('0x2')])[_0x5b23('0x3')](_0x3128a6);}_0x529f6e[_0x5b23('0x4')](_0x476f3b);});};
\ No newline at end of file
+var _0xa1aa=['json','exports','404','status'];(function(_0x58352d,_0x5f1b91){var _0x3f4748=function(_0xf405e9){while(--_0xf405e9){_0x58352d['push'](_0x58352d['shift']());}};_0x3f4748(++_0x5f1b91);}(_0xa1aa,0x81));var _0xaa1a=function(_0x165d98,_0x191dee){_0x165d98=_0x165d98-0x0;var _0x3d4516=_0xa1aa[_0x165d98];return _0x3d4516;};'use strict';module[_0xaa1a('0x0')][0x194]=function pageNotFound(_0x2aa556,_0x383dcb){var _0x4823e4=_0xaa1a('0x1');var _0x128161=0x194;var _0x416b12={'status':_0x128161};_0x383dcb[_0xaa1a('0x2')](_0x416b12[_0xaa1a('0x2')]);_0x383dcb['render'](_0x4823e4,{},function(_0x8cf1d7,_0x2a3d50){if(_0x8cf1d7){return _0x383dcb['status'](_0x416b12[_0xaa1a('0x2')])[_0xaa1a('0x3')](_0x416b12);}_0x383dcb['send'](_0x2a3d50);});};
\ No newline at end of file
index 126994c..cd223b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','hasOne','cascade','UserId','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','FaxInteraction','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_mail_interactions','ChatInteraction','user_has_chat_interactions','SmsInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','UserVoicePrefix','MailQueue','MailQueues','ChatQueues','SmsQueues','WhatsappQueues','UserWhatsappQueue','ChatWebsites','FaxAccount','FaxAccounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','UserVoiceQueueRt','Members','VoiceQueueId','CmHopper','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','Pause','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Messages','mailboxuser','mailbox','VoiceCallReport','CmContact','ContactId','MailAccountId','Imap','Dispositions','Answers','Interactions','List','Template','TemplateId','UserMailQueue','team_has_mail_queues','Teams','MailInteractionId','Account','Owner','Tags','mail_interaction_has_tags','ThroughTags','Users','MailMessage','Attachments','Contact','Interaction','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','Items','FaxAccountId','Exntensions','ListId','user_has_fax_accounts','FaxQueue','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccount','SmsAccountId','sms_interaction_has_tags','SmsInteractionId','team_has_sms_queues','OpenchannelAccount','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','ChatWebsiteId','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','ChatQueueId','ChatInteractionId','team_has_chat_queues','ChatGroup','ChatInternalMessage','Website','ChatInteractions','CompanyId','cm_contact_has_tags','Queue','CampaignId','All','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','MailApplications','ChatApplications','FaxApplications','DefaultReportId','AnalyticCustomReport','CustomReportId','chat_interaction_has_tags','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','Subjects','SubjectId','Descriptions','FieldId','Subject','Description','DescriptionId','Field','VariableId','DeskConfiguration','ZohoConfiguration','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','VtigerConfiguration','ServicenowConfiguration','FromId','ToId','SessionId','ProjectId','FaxQueues','team_has_openchannel_queues','SquareProjectId','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromAccount','ToUserId','ToMailQueueId','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','FromUserId','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToAgent','OpenchannelTransferReport','FromOpenchannelAccountId','FromAgent','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSection','Resources','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','FromWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','sequelize','jstz','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','username','password','database','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory'];(function(_0x291f8b,_0x3b5591){var _0x275171=function(_0xb33d67){while(--_0xb33d67){_0x291f8b['push'](_0x291f8b['shift']());}};_0x275171(++_0x3b5591);}(_0x5ff3,0x17d));var _0x35ff=function(_0x805dcb,_0x1c9b0c){_0x805dcb=_0x805dcb-0x0;var _0x1abd17=_0x5ff3[_0x805dcb];return _0x1abd17;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x35ff('0x0'));var _=require('lodash');var jstz=require(_0x35ff('0x1'));var timezone=jstz['determine']();config[_0x35ff('0x0')]=_[_0x35ff('0x2')](config[_0x35ff('0x0')],{'database':_0x35ff('0x3'),'username':'xcall','password':_0x35ff('0x4'),'options':{'host':_0x35ff('0x5'),'port':0xcea,'dialect':_0x35ff('0x6'),'dialectOptions':{'charset':_0x35ff('0x7')},'logging':![],'timezone':timezone[_0x35ff('0x8')](),'define':{'charset':'utf8','collate':_0x35ff('0x9')}}});config['sequelizeHistory']=_[_0x35ff('0x2')](config[_0x35ff('0xa')],{'database':_0x35ff('0x3'),'username':'xcall','password':_0x35ff('0x4'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x35ff('0x6'),'dialectOptions':{'charset':_0x35ff('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0x35ff('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config['sequelize'][_0x35ff('0xb')],config[_0x35ff('0x0')][_0x35ff('0xc')],config[_0x35ff('0x0')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x35ff('0xa')][_0x35ff('0xd')],config[_0x35ff('0xa')]['username'],config[_0x35ff('0xa')][_0x35ff('0xc')],config[_0x35ff('0xa')][_0x35ff('0xe')])};db[_0x35ff('0xf')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x11'));db[_0x35ff('0x12')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x13'));db[_0x35ff('0x14')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceContext/voiceContext.model');db[_0x35ff('0x15')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x16'));db['VoiceMusicOnHold']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x17'));db['VoiceQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x18'));db[_0x35ff('0x19')]=db['sequelize'][_0x35ff('0x10')]('../api/voiceRecording/voiceRecording.model');db[_0x35ff('0x1a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x1b'));db[_0x35ff('0x1c')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceMail/voiceMail.model');db[_0x35ff('0x1d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x1e'));db['VoiceCallReport']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x1f'));db[_0x35ff('0x20')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceDialReport/voiceDialReport.model');db[_0x35ff('0x21')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x35ff('0x22')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x23'));db[_0x35ff('0x24')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x25'));db[_0x35ff('0x26')]=db['sequelize'][_0x35ff('0x10')]('../api/trunk/trunk.model');db[_0x35ff('0x27')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x28'));db['UserVoiceQueueRt']=db[_0x35ff('0x0')]['import'](_0x35ff('0x29'));db[_0x35ff('0x2a')]=db['sequelize']['import'](_0x35ff('0x2b'));db[_0x35ff('0x2c')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x2d'));db['UserMailQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x2e'));db[_0x35ff('0x2f')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x30'));db[_0x35ff('0x31')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x32'));db[_0x35ff('0x33')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x34'));db['UserWhatsappQueue']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x35'));db[_0x35ff('0x36')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x37'));db[_0x35ff('0x38')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x39'));db['MailAccount']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3a'));db['MailQueue']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x3b'));db[_0x35ff('0x3c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3d'));db[_0x35ff('0x3e')]=db[_0x35ff('0x0')]['import']('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x3f'));db[_0x35ff('0x40')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x41'));db[_0x35ff('0x42')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x43'));db[_0x35ff('0x44')]=db['sequelize']['import'](_0x35ff('0x45'));db[_0x35ff('0x46')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/dashboardItem/dashboardItem.model');db['FaxAccount']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x47'));db[_0x35ff('0x48')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x49'));db['FaxInteraction']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4a'));db[_0x35ff('0x4b')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4c'));db['FaxQueue']=db['sequelize'][_0x35ff('0x10')]('../api/faxQueue/faxQueue.model');db[_0x35ff('0x4d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x4e'));db['SmsAccount']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x4f'));db[_0x35ff('0x50')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x51'));db[_0x35ff('0x52')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x53'));db[_0x35ff('0x54')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x55'));db[_0x35ff('0x56')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/smsQueue/smsQueue.model');db['OpenchannelAccount']=db[_0x35ff('0x0')]['import'](_0x35ff('0x57'));db[_0x35ff('0x58')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x59'));db[_0x35ff('0x5a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5b'));db['OpenchannelMessage']=db['sequelize'][_0x35ff('0x10')]('../api/openchannelMessage/openchannelMessage.model');db[_0x35ff('0x5c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5d'));db[_0x35ff('0x5e')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x5f'));db[_0x35ff('0x60')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x61'));db[_0x35ff('0x62')]=db[_0x35ff('0x0')]['import']('../api/chatApplication/chatApplication.model');db['ChatInteraction']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x63'));db['ChatMessage']=db[_0x35ff('0x0')]['import'](_0x35ff('0x64'));db['ChatOfflineMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x65'));db[_0x35ff('0x66')]=db['sequelize']['import'](_0x35ff('0x67'));db['ChatGroup']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/chatGroup/chatGroup.model');db[_0x35ff('0x68')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x69'));db[_0x35ff('0x6a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x6b'));db['CmContact']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x6c'));db['CmHopper']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/cmHopper/cmHopper.model');db[_0x35ff('0x6d')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x6e'));db[_0x35ff('0x6f')]=db['sequelize']['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x35ff('0x70')]=db['sequelize'][_0x35ff('0x10')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x35ff('0x71')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x72'));db[_0x35ff('0x73')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x74'));db[_0x35ff('0x75')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x76'));db[_0x35ff('0x77')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x78'));db[_0x35ff('0x79')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/cannedAnswer/cannedAnswer.model');db[_0x35ff('0x7a')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x7b'));db[_0x35ff('0x7c')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x7d'));db[_0x35ff('0x7e')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x7f'));db['Pause']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x80'));db['Cdr']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x81'));db[_0x35ff('0x82')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x83'));db[_0x35ff('0x84')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x85'));db[_0x35ff('0x86')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x87'));db[_0x35ff('0x88')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x89'));db['Template']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/template/template.model');db['Trigger']=db[_0x35ff('0x0')]['import'](_0x35ff('0x8a'));db[_0x35ff('0x8b')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x8c'));db[_0x35ff('0x8d')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x8e'));db['IntegrationReport']=db[_0x35ff('0x0')]['import'](_0x35ff('0x8f'));db['AnalyticCustomReport']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x90'));db[_0x35ff('0x91')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x92'));db[_0x35ff('0x93')]=db['sequelize']['import'](_0x35ff('0x94'));db[_0x35ff('0x95')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x96'));db[_0x35ff('0x97')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x98'));db[_0x35ff('0x99')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0x9a'));db[_0x35ff('0x9b')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x35ff('0x9c')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x9d'));db[_0x35ff('0x9e')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSalesforceField/intSalesforceField.model');db[_0x35ff('0x9f')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xa0'));db[_0x35ff('0xa1')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x35ff('0xa2')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xa3'));db[_0x35ff('0xa4')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xa5'));db[_0x35ff('0xa6')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xa7'));db[_0x35ff('0xa8')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xa9'));db['ZohoConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xaa'));db[_0x35ff('0xab')]=db[_0x35ff('0x0')]['import']('../api/intZohoField/intZohoField.model');db[_0x35ff('0xac')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xad'));db[_0x35ff('0xae')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xaf'));db[_0x35ff('0xb0')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xb1'));db[_0x35ff('0xb2')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xb3'));db[_0x35ff('0xb4')]=db['sequelize'][_0x35ff('0x10')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x35ff('0xb5')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xb6'));db[_0x35ff('0xb7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xb8'));db['VtigerConfiguration']=db[_0x35ff('0x0')]['import'](_0x35ff('0xb9'));db[_0x35ff('0xba')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xbb'));db[_0x35ff('0xbc')]=db['sequelize'][_0x35ff('0x10')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xbd'));db[_0x35ff('0xbe')]=db['sequelize']['import']('../api/intServicenowField/intServicenowField.model');db[_0x35ff('0xbf')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xc0'));db[_0x35ff('0xc1')]=db[_0x35ff('0x0')]['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x35ff('0xc2')]=db['sequelize']['import'](_0x35ff('0xc3'));db[_0x35ff('0xc4')]=db['sequelize']['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x35ff('0xc5')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xc6'));db[_0x35ff('0xc7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xc8'));db[_0x35ff('0x8d')]=db[_0x35ff('0x0')]['import'](_0x35ff('0x8e'));db[_0x35ff('0xc9')]=db['sequelize']['import'](_0x35ff('0xca'));db[_0x35ff('0xcb')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xcc'));db['ChatInternalMessage']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xcd'));db[_0x35ff('0xce')]=db['sequelize']['import'](_0x35ff('0xcf'));db[_0x35ff('0xd0')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xd1'));db[_0x35ff('0xd2')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xd3'));db[_0x35ff('0xd4')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xd5'));db[_0x35ff('0xd6')]=db[_0x35ff('0x0')]['import']('../api/squareReport/squareReport.model');db[_0x35ff('0xd7')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xd8'));db[_0x35ff('0xd9')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xda'));db[_0x35ff('0xdb')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/setting/setting.model');db[_0x35ff('0xdc')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xdd'));db[_0x35ff('0xde')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xdf'));db[_0x35ff('0xe0')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe1'));db['SquareMessage']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xe2'));db[_0x35ff('0xe3')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe4'));db[_0x35ff('0xe5')]=db[_0x35ff('0x0')]['import']('../api/license/license.model');db[_0x35ff('0xe6')]=db['sequelize'][_0x35ff('0x10')]('../api/campaign/campaign.model');db['Migration']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xe7'));db[_0x35ff('0xe8')]=db[_0x35ff('0x0')]['import']('../api/attachment/attachment.model');db[_0x35ff('0xe9')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xea'));db[_0x35ff('0xeb')]=db[_0x35ff('0x0')]['import']('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0x35ff('0x0')]['import'](_0x35ff('0xec'));db[_0x35ff('0xed')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xee'));db['OpenchannelTransferReport']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x35ff('0xef')]=db['sequelize']['import'](_0x35ff('0xf0'));db['CmList']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xf1'));db[_0x35ff('0xf2')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xf3'));db[_0x35ff('0xf4')]=db[_0x35ff('0x0')]['import'](_0x35ff('0xf5'));db['UserProfileSection']=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xf6'));db[_0x35ff('0xf7')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xf8'));db[_0x35ff('0xf9')]=db['sequelize'][_0x35ff('0x10')]('../api/userNotification/userNotification.model');db[_0x35ff('0xfa')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xfb'));db['WhatsappApplication']=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/whatsappApplication/whatsappApplication.model');db[_0x35ff('0xfc')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0xfd'));db[_0x35ff('0xfe')]=db['sequelize'][_0x35ff('0x10')](_0x35ff('0xff'));db[_0x35ff('0x100')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x101'));db[_0x35ff('0x102')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x103'));db[_0x35ff('0x104')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/whatsappQueue/whatsappQueue.model');db[_0x35ff('0x105')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x106'));db[_0x35ff('0x107')]=db[_0x35ff('0x0')][_0x35ff('0x10')]('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x35ff('0x108')]=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x109'));db['UserVoicePrefix']=db[_0x35ff('0x0')][_0x35ff('0x10')](_0x35ff('0x10a'));db[_0x35ff('0xf')][_0x35ff('0x10b')](db[_0x35ff('0x1c')],{'as':'VoiceMail','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['VoiceRecording'],{'as':_0x35ff('0x10f'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['UserVoiceQueueRt'],{'as':_0x35ff('0x110'),'foreignKey':'UserId'});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['VoiceExtension'],{'as':_0x35ff('0x111'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db['User'][_0x35ff('0x10e')](db['CmHopperFinal'],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x70')],{'as':_0x35ff('0x113'),'foreignKey':_0x35ff('0x10d')});db['User'][_0x35ff('0x10e')](db[_0x35ff('0x71')],{'as':_0x35ff('0x71'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'foreignKey':'UserId'});db[_0x35ff('0xf')][_0x35ff('0x10e')](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':'UserId'});db[_0x35ff('0xf')]['hasMany'](db[_0x35ff('0x52')],{'as':'SmsInteractions','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')][_0x35ff('0x10e')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'foreignKey':_0x35ff('0x10d')});db['User']['hasMany'](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0xf')]['hasMany'](db['WhatsappInteraction'],{'as':_0x35ff('0x118'),'foreignKey':_0x35ff('0x10d')});db['User'][_0x35ff('0x10e')](db['UserNotification'],{'as':_0x35ff('0x119'),'foreignKey':_0x35ff('0x11a')});db[_0x35ff('0xf')][_0x35ff('0x11b')](db['UserProfile'],{'as':_0x35ff('0xf4'),'foreignKey':_0x35ff('0x11c')});db['User'][_0x35ff('0x11d')](db['ChatGroup'],{'as':_0x35ff('0x11e'),'through':_0x35ff('0x11f')});db['User']['belongsToMany'](db['CmContact'],{'as':_0x35ff('0x120'),'through':_0x35ff('0x121')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':_0x35ff('0x123'),'through':_0x35ff('0x124')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':'user_has_teams'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'through':_0x35ff('0x125')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x126')],{'as':'ChatInteractions','through':_0x35ff('0x127')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'through':'user_has_fax_interactions'});db['User']['belongsToMany'](db[_0x35ff('0x52')],{'as':_0x35ff('0x128'),'through':_0x35ff('0x129')});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'through':_0x35ff('0x12a')});db['User']['belongsToMany'](db[_0x35ff('0xfc')],{'as':_0x35ff('0x118'),'through':_0x35ff('0x12b')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x12d'),'through':_0x35ff('0x2a'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['VoicePrefix'],{'as':_0x35ff('0x12e'),'through':_0x35ff('0x12f'),'required':![]});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x130')],{'as':_0x35ff('0x131'),'through':'UserMailQueue','required':![]});db['User'][_0x35ff('0x11d')](db['ChatQueue'],{'as':_0x35ff('0x132'),'through':_0x35ff('0x2c'),'required':![],'hooks':!![]});db[_0x35ff('0xf')]['belongsToMany'](db['FaxQueue'],{'as':'FaxQueues','through':_0x35ff('0x2f'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x56')],{'as':_0x35ff('0x133'),'through':_0x35ff('0x31'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x5c')],{'as':'OpenchannelQueues','through':_0x35ff('0x33'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x104')],{'as':_0x35ff('0x134'),'through':_0x35ff('0x135'),'required':![]});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['CmList'],{'through':_0x35ff('0x124')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x136'),'through':'user_has_chat_websites'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0x137')],{'as':_0x35ff('0x138'),'through':'user_has_fax_accounts'});db[_0x35ff('0xf')]['belongsToMany'](db[_0x35ff('0x139')],{'as':_0x35ff('0x13a'),'through':_0x35ff('0x13b')});db[_0x35ff('0xf')][_0x35ff('0x11d')](db['OpenchannelAccount'],{'as':_0x35ff('0x13c'),'through':_0x35ff('0x13d')});db['User'][_0x35ff('0x11d')](db['SmsAccount'],{'as':_0x35ff('0x13e'),'through':_0x35ff('0x13f')});db['User'][_0x35ff('0x11d')](db[_0x35ff('0xfa')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db[_0x35ff('0xf')][_0x35ff('0x11d')](db[_0x35ff('0xde')],{'as':_0x35ff('0x140'),'through':_0x35ff('0x141')});db['VoiceChanSpy'][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'as':_0x35ff('0x142'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x143')});db['VoiceContext'][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x15')]['hasMany'](db[_0x35ff('0x15')],{'as':_0x35ff('0x144'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x145')][_0x35ff('0x11d')](db[_0x35ff('0x86')],{'as':_0x35ff('0x146'),'through':_0x35ff('0x147')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x148')],{'as':_0x35ff('0x149'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x14b')],{'as':_0x35ff('0x14c'),'foreignKey':'VoiceQueueId'});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x35ff('0x10e')](db[_0x35ff('0x70')],{'as':_0x35ff('0x14d'),'foreignKey':'VoiceQueueId'});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['ReportAgentPreview'],{'as':_0x35ff('0x71'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['CmHopperBlack'],{'as':_0x35ff('0x14e'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x10e')](db['JscriptySessionReport'],{'as':_0x35ff('0x14f'),'foreignKey':_0x35ff('0x14a')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db['Trunk'],{'as':_0x35ff('0x26'),'foreignKey':_0x35ff('0x150')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':'TrunkBackup','foreignKey':_0x35ff('0x151')});db[_0x35ff('0x12c')][_0x35ff('0x11b')](db['Interval'],{'as':_0x35ff('0x7e'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x12c')]['belongsTo'](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':_0x35ff('0x155')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':_0x35ff('0x123'),'through':_0x35ff('0x156')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x2a')});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0x35ff('0x12c')][_0x35ff('0x11d')](db[_0x35ff('0x122')],{'as':'BlackLists','through':'voice_queues_has_cm_blacklists'});db[_0x35ff('0x19')][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf'),'foreignKey':'UserId'});db[_0x35ff('0x1a')]['belongsTo'](db['User'],{'as':'User','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x1c')]['hasMany'](db[_0x35ff('0x1d')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x159'),'sourceKey':_0x35ff('0x15a')});db['VoiceMailMessage'][_0x35ff('0x11b')](db[_0x35ff('0x1c')],{'foreignKey':_0x35ff('0x159'),'targetKey':'mailbox'});db[_0x35ff('0x15b')][_0x35ff('0x10e')](db['VoiceQueueReport'],{'as':'QueueCalls','foreignKey':'uniqueid','constraints':![]});db[_0x35ff('0x15b')][_0x35ff('0x10e')](db[_0x35ff('0x21')],{'as':'AgentReports','foreignKey':'uniqueid','constraints':![]});db[_0x35ff('0x15b')]['belongsTo'](db[_0x35ff('0xf')],{'as':'User','foreignKey':'UserId'});db[_0x35ff('0x15b')]['belongsTo'](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x36')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'as':_0x35ff('0x139'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x38')]['belongsTo'](db['MailAccount'],{'as':_0x35ff('0x139'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10b')](db['MailServerIn'],{'as':_0x35ff('0x15f'),'onDelete':'cascade'});db[_0x35ff('0x139')]['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x15e'),'onDelete':'cascade'});db['MailAccount'][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db['MailMessage'],{'as':_0x35ff('0x158'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x139')][_0x35ff('0x10e')](db['MailInteraction'],{'as':_0x35ff('0x162')});db['MailAccount'][_0x35ff('0x10e')](db[_0x35ff('0x40')],{'as':_0x35ff('0x144')});db[_0x35ff('0x139')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x139')]['belongsTo'](db[_0x35ff('0x164')],{'as':'Template','foreignKey':_0x35ff('0x165')});db[_0x35ff('0x139')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x139')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':'Agents','through':_0x35ff('0x13b')});db['MailQueue']['belongsToMany'](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x166')});db[_0x35ff('0x130')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x167'),'as':_0x35ff('0x168')});db[_0x35ff('0x3e')][_0x35ff('0x10e')](db['MailMessage'],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x169')});db[_0x35ff('0x3e')]['belongsTo'](db[_0x35ff('0x139')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x3e')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':'ContactId'});db[_0x35ff('0x3e')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x3e')]['belongsToMany'](db[_0x35ff('0x88')],{'through':'mail_interaction_has_tags','as':_0x35ff('0x16c')});db[_0x35ff('0x3e')]['belongsToMany'](db[_0x35ff('0x88')],{'through':_0x35ff('0x16d'),'as':_0x35ff('0x16e')});db['MailInteraction'][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x16f'),'through':'user_has_mail_interactions','foreignKey':'MailInteractionId'});db[_0x35ff('0x170')]['hasMany'](db[_0x35ff('0xe8')],{'as':_0x35ff('0x171'),'onDelete':'cascade'});db[_0x35ff('0x170')]['belongsTo'](db[_0x35ff('0xf')],{'as':_0x35ff('0xf')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172')});db[_0x35ff('0x170')]['belongsTo'](db['MailInteraction'],{'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x169')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'as':'Account','foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x5e'),'foreignKey':'ChatWebsiteId'});db[_0x35ff('0x170')][_0x35ff('0x11b')](db[_0x35ff('0x174')],{'as':_0x35ff('0x174'),'foreignKey':_0x35ff('0x175')});db[_0x35ff('0x40')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':'restrict'});db[_0x35ff('0x40')]['belongsTo'](db['MailQueue'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x40')][_0x35ff('0x11b')](db['MailAccount'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x40')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x35ff('0x40')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x42')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x3e')],{});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x170')],{});db['MailQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x42')][_0x35ff('0x11b')](db['MailQueue'],{});db['Dashboard'][_0x35ff('0x10e')](db[_0x35ff('0x46')],{'as':_0x35ff('0x178'),'onDelete':_0x35ff('0x10c')});db['FaxAccount']['hasMany'](db[_0x35ff('0x7a')],{'as':'Dispositions','foreignKey':'FaxAccountId','onDelete':_0x35ff('0x10c')});db['FaxAccount'][_0x35ff('0x10e')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x35ff('0x179')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db['FaxInteraction'],{'as':_0x35ff('0x162')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db[_0x35ff('0x48')],{'as':_0x35ff('0x144')});db[_0x35ff('0x137')][_0x35ff('0x10e')](db[_0x35ff('0x15')],{'as':_0x35ff('0x17a'),'onDelete':_0x35ff('0x10c')});db['FaxAccount'][_0x35ff('0x10e')](db['FaxMessage'],{'as':_0x35ff('0x158')});db[_0x35ff('0x137')]['belongsTo'](db[_0x35ff('0x26')],{'as':'Trunk'});db[_0x35ff('0x137')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x137')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db['FaxAccount'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':'Agents','through':_0x35ff('0x17c')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0x17d')],{'onDelete':_0x35ff('0x176')});db['FaxApplication'][_0x35ff('0x11b')](db['FaxAccount'],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x48')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x115')]['hasMany'](db[_0x35ff('0x4b')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x17e')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x179')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db['CmContact'],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x115')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':'Owner','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x115')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x17f'),'as':_0x35ff('0x16c')});db[_0x35ff('0x115')]['belongsToMany'](db[_0x35ff('0x88')],{'through':_0x35ff('0x17f'),'as':_0x35ff('0x16e')});db['FaxInteraction'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':'user_has_fax_interactions','foreignKey':'FaxInteractionId'});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x10c'),'as':'User'});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db['FaxInteraction'],{'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x17e')});db[_0x35ff('0x4b')]['belongsTo'](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':'Contact'});db['FaxMessage']['belongsTo'](db[_0x35ff('0xe8')],{'as':'Attachment','foreignKey':_0x35ff('0x180')});db[_0x35ff('0x4b')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x179')});db[_0x35ff('0x17d')]['belongsToMany'](db[_0x35ff('0xf')],{'as':'Agents','through':'UserFaxQueue'});db[_0x35ff('0x17d')][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x181'),'as':'Teams'});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{});db['FaxQueueReport']['belongsTo'](db[_0x35ff('0x122')],{'as':'List','foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x4d')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0x115')],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db['FaxMessage'],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x4d')][_0x35ff('0x11b')](db['FaxQueue'],{});db[_0x35ff('0x182')]['hasMany'](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':'SmsAccountId','onDelete':_0x35ff('0x10c')});db['SmsAccount']['hasMany'](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':'SmsAccountId'});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x54')],{'as':'Messages','foreignKey':_0x35ff('0x183')});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x52')],{'as':_0x35ff('0x162')});db[_0x35ff('0x182')][_0x35ff('0x10e')](db[_0x35ff('0x50')],{'as':_0x35ff('0x144')});db[_0x35ff('0x182')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x182')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x182')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x13f')});db[_0x35ff('0x50')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x56')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x182')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x50')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x152')});db['SmsApplication'][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':'restrict','foreignKey':_0x35ff('0x177')});db['SmsInteraction'][_0x35ff('0x10e')](db[_0x35ff('0x54')],{'as':'Messages','onDelete':_0x35ff('0x10c'),'foreignKey':'SmsInteractionId'});db[_0x35ff('0x52')][_0x35ff('0x11b')](db[_0x35ff('0x182')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x183')});db[_0x35ff('0x52')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['SmsInteraction']['belongsTo'](db[_0x35ff('0xf')],{'as':'Owner','foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x52')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x184'),'as':_0x35ff('0x16c')});db['SmsInteraction'][_0x35ff('0x11d')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x35ff('0x16e')});db[_0x35ff('0x52')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x129'),'foreignKey':'SmsInteractionId'});db[_0x35ff('0x54')][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf')});db['SmsMessage']['belongsTo'](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172')});db[_0x35ff('0x54')]['belongsTo'](db[_0x35ff('0x52')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x185')});db[_0x35ff('0x54')]['belongsTo'](db[_0x35ff('0x182')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x183')});db[_0x35ff('0x56')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x31'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x186'),'as':_0x35ff('0x168')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x188'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x5a')],{'as':_0x35ff('0x162'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x189')],{'as':_0x35ff('0x158'),'foreignKey':'OpenchannelAccountId'});db[_0x35ff('0x187')][_0x35ff('0x10e')](db[_0x35ff('0x58')],{'as':_0x35ff('0x144'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x187')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x187')][_0x35ff('0x11b')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x35ff('0x155')});db[_0x35ff('0x187')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x13d')});db['OpenchannelApplication'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x18a')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x58')]['belongsTo'](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x58')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x5a')][_0x35ff('0x10e')](db[_0x35ff('0x189')],{'as':_0x35ff('0x158'),'onDelete':'cascade','foreignKey':_0x35ff('0x18b')});db['OpenchannelInteraction']['belongsTo'](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0x35ff('0x188')});db[_0x35ff('0x5a')][_0x35ff('0x11b')](db['CmContact'],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['OpenchannelInteraction'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x5a')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x18c'),'as':_0x35ff('0x16c')});db[_0x35ff('0x5a')][_0x35ff('0x11d')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x35ff('0x16e')});db['OpenchannelInteraction'][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x12a'),'foreignKey':_0x35ff('0x18b')});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x10c'),'as':'User'});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':'cascade','as':'Contact'});db[_0x35ff('0x189')][_0x35ff('0x11b')](db[_0x35ff('0x5a')],{'onDelete':_0x35ff('0x10c'),'as':'Interaction','foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x35ff('0x11b')](db[_0x35ff('0xe8')],{'as':_0x35ff('0xe8'),'foreignKey':'AttachmentId'});db[_0x35ff('0x189')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x188')});db[_0x35ff('0x5c')][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x157'),'through':_0x35ff('0x33'),'foreignKey':_0x35ff('0x18a')});db[_0x35ff('0x5c')][_0x35ff('0x11d')](db['Team'],{'through':'team_has_openchannel_queues','as':_0x35ff('0x168')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x18d'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x5e')][_0x35ff('0x10e')](db[_0x35ff('0x79')],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x18d')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x68')],{'as':_0x35ff('0x18e')});db[_0x35ff('0x5e')]['hasMany'](db['ChatInteraction'],{'as':_0x35ff('0x162')});db['ChatWebsite'][_0x35ff('0x10e')](db[_0x35ff('0x62')],{'as':'Applications'});db[_0x35ff('0x5e')][_0x35ff('0x10e')](db[_0x35ff('0x18f')],{'as':_0x35ff('0x158')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'as':_0x35ff('0x7e'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x35ff('0x15e')});db[_0x35ff('0x5e')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':_0x35ff('0x155')});db[_0x35ff('0x5e')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x190')});db['OpenchannelQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x187')],{});db[_0x35ff('0x60')]['belongsTo'](db[_0x35ff('0x122')],{'as':'List','foreignKey':_0x35ff('0x17b')});db['OpenchannelQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x60')][_0x35ff('0x11b')](db['OpenchannelInteraction'],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0x189')],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x60')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{});db[_0x35ff('0x62')]['belongsTo'](db['User'],{'as':_0x35ff('0x191'),'foreignKey':'UserId','onDelete':'restrict'});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x66')],{'as':'Queue','foreignKey':_0x35ff('0x192'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':'Website','foreignKey':_0x35ff('0x18d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x62')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db[_0x35ff('0x126')][_0x35ff('0x10e')](db[_0x35ff('0x18f')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x35ff('0x193')});db['ChatInteraction'][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x126')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x126')]['belongsTo'](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':_0x35ff('0x10d')});db[_0x35ff('0x126')][_0x35ff('0x11d')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0x35ff('0x16c')});db[_0x35ff('0x126')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':'chat_interaction_has_tags','as':_0x35ff('0x16e')});db['ChatInteraction'][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x127'),'foreignKey':'ChatInteractionId'});db[_0x35ff('0x18f')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':'cascade','as':'User'});db[_0x35ff('0x18f')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':'Contact','foreignKey':'ContactId'});db['ChatMessage'][_0x35ff('0x11b')](db[_0x35ff('0x126')],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x193')});db[_0x35ff('0x18f')]['belongsTo'](db[_0x35ff('0xe8')],{'as':'Attachment','foreignKey':'AttachmentId'});db['ChatMessage']['belongsTo'](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x174')][_0x35ff('0x10e')](db[_0x35ff('0xe8')],{'as':'Attachments','foreignKey':_0x35ff('0x175'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x174')][_0x35ff('0x11b')](db['CmContact'],{'onDelete':_0x35ff('0x10c'),'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x174')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x66')]['belongsToMany'](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x2c'),'hooks':!![]});db[_0x35ff('0x66')]['belongsToMany'](db[_0x35ff('0xe3')],{'through':_0x35ff('0x194'),'as':_0x35ff('0x168')});db[_0x35ff('0x195')][_0x35ff('0x10e')](db[_0x35ff('0x196')],{'as':_0x35ff('0x158'),'foreignKey':'ChatGroupId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x195')][_0x35ff('0x11d')](db['User'],{'as':_0x35ff('0x149'),'through':_0x35ff('0x11f')});db[_0x35ff('0x68')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'as':_0x35ff('0x197'),'foreignKey':_0x35ff('0x18d')});db[_0x35ff('0x6a')]['hasMany'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x120'),'foreignKey':'CompanyId'});db[_0x35ff('0x15c')]['hasMany'](db['CmHopper'],{'as':_0x35ff('0x14c'),'foreignKey':'ContactId'});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x70')],{'as':_0x35ff('0x14d'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')]['hasMany'](db[_0x35ff('0x71')],{'as':'ReportAgentPreview','foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')]['hasMany'](db[_0x35ff('0xd2')],{'as':_0x35ff('0x14f'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x5a')],{'as':_0x35ff('0x114'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x126')],{'as':_0x35ff('0x198'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x52')],{'as':_0x35ff('0x128'),'foreignKey':_0x35ff('0x15d'),'onDelete':'restrict'});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x115')],{'as':_0x35ff('0x116'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')][_0x35ff('0x10e')](db[_0x35ff('0x3e')],{'as':_0x35ff('0x117'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x15c')]['belongsTo'](db[_0x35ff('0x6a')],{'as':'Company','foreignKey':_0x35ff('0x199')});db[_0x35ff('0x15c')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x15c')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16f'),'through':_0x35ff('0x121')});db[_0x35ff('0x15c')]['belongsToMany'](db[_0x35ff('0x88')],{'as':_0x35ff('0x16c'),'through':'cm_contact_has_tags'});db[_0x35ff('0x15c')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x19a'),'as':'ThroughTags'});db[_0x35ff('0x14b')]['belongsTo'](db[_0x35ff('0x15c')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':'ListId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x191'),'foreignKey':'UserId'});db[_0x35ff('0x14b')][_0x35ff('0x11b')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x19b'),'foreignKey':_0x35ff('0x14a'),'onDelete':_0x35ff('0x10c')});db['CmHopper'][_0x35ff('0x11b')](db['Campaign'],{'as':'Campaign','foreignKey':_0x35ff('0x19c'),'onDelete':_0x35ff('0x10c')});db['CmHopper'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':'OwnerId'});db[_0x35ff('0x6d')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x6d')]['belongsTo'](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0x6d')][_0x35ff('0x11b')](db[_0x35ff('0x12c')],{'as':_0x35ff('0x19b'),'foreignKey':'VoiceQueueId','onDelete':_0x35ff('0x10c')});db['CmHopperBlack'][_0x35ff('0x11b')](db[_0x35ff('0xe6')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x35ff('0x10c')});db['Automation'][_0x35ff('0x10e')](db['Condition'],{'as':{'plural':_0x35ff('0x19d'),'singular':'OneAll'},'foreignKey':_0x35ff('0x19e'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x77')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x19f'),'singular':_0x35ff('0x1a0')},'foreignKey':_0x35ff('0x1a1'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db['Automation'][_0x35ff('0x10e')](db[_0x35ff('0x75')],{'as':_0x35ff('0x1a2'),'foreignKey':_0x35ff('0x1a3'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x7a')][_0x35ff('0x10e')](db['Disposition'],{'as':_0x35ff('0x160'),'foreignKey':'ParentId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x7e')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x35ff('0x10c'),'hooks':!![],'required':![]});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db['VoiceExtension'],{'as':_0x35ff('0x111'),'foreignKey':_0x35ff('0x152'),'onDelete':_0x35ff('0x176')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x40')],{'as':_0x35ff('0x1a4'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')]['hasMany'](db['ChatApplication'],{'as':_0x35ff('0x1a5'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')]['hasMany'](db[_0x35ff('0x48')],{'as':_0x35ff('0x1a6'),'foreignKey':_0x35ff('0x152')});db[_0x35ff('0x7e')][_0x35ff('0x10e')](db[_0x35ff('0x50')],{'as':'SmsApplications','foreignKey':_0x35ff('0x152')});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x91')],{'foreignKey':_0x35ff('0x1a7')});db[_0x35ff('0x84')][_0x35ff('0x11b')](db[_0x35ff('0x1a8')],{'foreignKey':_0x35ff('0x1a9')});db[_0x35ff('0x86')][_0x35ff('0x11d')](db['VoiceMusicOnHold'],{'as':'Mohs','through':_0x35ff('0x147'),'onDelete':_0x35ff('0x176')});db['Tag'][_0x35ff('0x11d')](db['CmContact'],{'through':_0x35ff('0x19a')});db[_0x35ff('0x88')][_0x35ff('0x11d')](db['ChatInteraction'],{'through':_0x35ff('0x1aa')});db[_0x35ff('0x88')][_0x35ff('0x11d')](db[_0x35ff('0x3e')],{'through':_0x35ff('0x16d')});db['Tag']['belongsToMany'](db[_0x35ff('0x52')],{'through':_0x35ff('0x184')});db['Tag']['belongsToMany'](db['FaxInteraction'],{'through':'fax_interaction_has_tags'});db['Tag'][_0x35ff('0x11d')](db[_0x35ff('0x5a')],{'through':_0x35ff('0x18c')});db['Tag'][_0x35ff('0x11d')](db[_0x35ff('0xfc')],{'through':_0x35ff('0x1ab')});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x1ad'),'singular':_0x35ff('0x1ae')},'foreignKey':_0x35ff('0x1af'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x7c')],{'as':{'plural':_0x35ff('0x1b0'),'singular':'AnyCondition'},'foreignKey':_0x35ff('0x1b1'),'onDelete':_0x35ff('0x10c'),'hooks':!![]});db[_0x35ff('0x1ac')][_0x35ff('0x10e')](db[_0x35ff('0x75')],{'as':_0x35ff('0x1a2'),'foreignKey':_0x35ff('0x1b2'),'onDelete':'cascade','hooks':!![]});db[_0x35ff('0x1a8')][_0x35ff('0x10e')](db[_0x35ff('0x97')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1a9'),'hooks':!![]});db[_0x35ff('0x91')][_0x35ff('0x10e')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x35ff('0x1a7')});db[_0x35ff('0x95')][_0x35ff('0x10e')](db[_0x35ff('0x97')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'MetricId'});db[_0x35ff('0x97')][_0x35ff('0x11b')](db[_0x35ff('0x95')],{'foreignKey':_0x35ff('0x1b4')});db['SalesforceAccount'][_0x35ff('0x10e')](db[_0x35ff('0x9c')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x9c')]['hasMany'](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x9c')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':'DescriptionId'});db[_0x35ff('0x9c')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':'Fields','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x9c')][_0x35ff('0x11b')](db['SalesforceAccount'],{'as':_0x35ff('0x16a'),'foreignKey':'AccountId'});db['SalesforceField'][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x9e')][_0x35ff('0x10e')](db['SalesforceField'],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x9e')][_0x35ff('0x10e')](db[_0x35ff('0x9e')],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x9e')][_0x35ff('0x11b')](db['Variable'],{'as':'Variable','foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0x9f')]['hasMany'](db[_0x35ff('0xa1')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xa1')]['hasMany'](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db['SugarcrmConfiguration']['hasMany'](db['SugarcrmField'],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa1')]['hasMany'](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'FieldId'});db[_0x35ff('0xa1')]['belongsTo'](db[_0x35ff('0x9f')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xa2')][_0x35ff('0x10e')](db['SugarcrmField'],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['SugarcrmField'][_0x35ff('0x10e')](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa2')][_0x35ff('0x10e')](db[_0x35ff('0xa2')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xa2')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xa4')]['hasMany'](db[_0x35ff('0x1c0')],{'as':'Configurations','onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c0')]['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':'SubjectId'});db[_0x35ff('0x1c0')]['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1b9'),'onDelete':'cascade','foreignKey':_0x35ff('0x1bd')});db['DeskConfiguration'][_0x35ff('0x10e')](db['DeskField'],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db['DeskConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xa4')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c0')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':'int_desk_configuration_has_tags'});db[_0x35ff('0xa6')][_0x35ff('0x10e')](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['DeskField']['hasMany'](db[_0x35ff('0xa6')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xa6')][_0x35ff('0x10e')](db['DeskField'],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xa6')][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db['ZohoAccount'][_0x35ff('0x10e')](db[_0x35ff('0x1c1')],{'as':_0x35ff('0x1b5'),'onDelete':'cascade','foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c1')][_0x35ff('0x10e')](db['ZohoField'],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db['ZohoConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x1c1')]['hasMany'](db[_0x35ff('0xab')],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0x35ff('0x1c1')][_0x35ff('0x11b')](db[_0x35ff('0xa8')],{'as':'Account','foreignKey':'AccountId'});db[_0x35ff('0xab')][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xab')]['hasMany'](db[_0x35ff('0xab')],{'as':'Description','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xab')][_0x35ff('0x10e')](db[_0x35ff('0xab')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db['ZohoField'][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xac')][_0x35ff('0x10e')](db[_0x35ff('0xae')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db['ZendeskConfiguration']['hasMany'](db[_0x35ff('0xb0')],{'as':'Subjects','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xae')][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':'Descriptions','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xae')][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db['ZendeskConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xac')],{'as':_0x35ff('0x16a'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1c2')});db[_0x35ff('0xb0')]['hasMany'](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db['ZendeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db['ZendeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb0')],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db['ZendeskField'][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db[_0x35ff('0xb2')][_0x35ff('0x10e')](db[_0x35ff('0xb4')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db['FreshdeskConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':'Subjects','onDelete':_0x35ff('0x10c'),'foreignKey':'SubjectId'});db['FreshdeskConfiguration']['hasMany'](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1b9'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x35ff('0xb4')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':'FieldId'});db[_0x35ff('0xb4')][_0x35ff('0x11b')](db['FreshdeskAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xb4')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1c3')});db['FreshdeskField'][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xb5')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1bc'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xb5')][_0x35ff('0x10e')](db[_0x35ff('0xb5')],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xb5')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xb7')][_0x35ff('0x10e')](db['VtigerConfiguration'],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0x1c4')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x35ff('0x1c4')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1b9'),'foreignKey':'DescriptionId'});db[_0x35ff('0x1c4')]['hasMany'](db[_0x35ff('0xba')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db['VtigerConfiguration'][_0x35ff('0x11b')](db[_0x35ff('0xb7')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xba')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xba')][_0x35ff('0x10e')](db[_0x35ff('0xba')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db['VtigerField'][_0x35ff('0x10e')](db['VtigerField'],{'as':_0x35ff('0x1be'),'foreignKey':_0x35ff('0x1ba')});db['VtigerField'][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xbc')][_0x35ff('0x10e')](db['ServicenowConfiguration'],{'as':_0x35ff('0x1b5'),'onDelete':'cascade','foreignKey':_0x35ff('0x1b6')});db['ServicenowConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1b7'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0x1c5')][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':'Descriptions','foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0x1c5')]['hasMany'](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1b3'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0x1c5')][_0x35ff('0x11b')](db['ServicenowAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db['ServicenowField'],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db[_0x35ff('0xbe')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db[_0x35ff('0xbe')][_0x35ff('0x10e')](db['ServicenowField'],{'as':_0x35ff('0x1be'),'foreignKey':'FieldId'});db[_0x35ff('0xbe')]['belongsTo'](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db[_0x35ff('0xbf')][_0x35ff('0x10e')](db[_0x35ff('0xc1')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b6')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b7'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b9'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1bd')});db[_0x35ff('0xc1')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':_0x35ff('0x1b3'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc1')]['belongsTo'](db[_0x35ff('0xbf')],{'as':'Account','foreignKey':_0x35ff('0x1b6')});db['Dynamics365Field'][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':'Subject','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc2')][_0x35ff('0x10e')](db['Dynamics365Field'],{'as':'Description','foreignKey':'DescriptionId'});db[_0x35ff('0xc2')][_0x35ff('0x10e')](db[_0x35ff('0xc2')],{'as':'Field','foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc2')][_0x35ff('0x11b')](db['Variable'],{'as':_0x35ff('0x8b'),'foreignKey':_0x35ff('0x1bf')});db[_0x35ff('0xc4')][_0x35ff('0x10e')](db[_0x35ff('0xc5')],{'as':_0x35ff('0x1b5'),'onDelete':_0x35ff('0x10c'),'foreignKey':'AccountId'});db[_0x35ff('0xc5')]['hasMany'](db[_0x35ff('0xc7')],{'as':'Subjects','foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc5')]['hasMany'](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1b9'),'foreignKey':_0x35ff('0x1bd')});db['FreshsalesConfiguration'][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':'Fields','foreignKey':_0x35ff('0x1ba')});db[_0x35ff('0xc5')]['belongsTo'](db['FreshsalesAccount'],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1b6')});db['FreshsalesField'][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1bb'),'foreignKey':_0x35ff('0x1b8')});db[_0x35ff('0xc7')]['hasMany'](db[_0x35ff('0xc7')],{'as':_0x35ff('0x1bc'),'foreignKey':'DescriptionId'});db[_0x35ff('0xc7')][_0x35ff('0x10e')](db[_0x35ff('0xc7')],{'as':'Field','foreignKey':'FieldId'});db[_0x35ff('0xc7')][_0x35ff('0x11b')](db[_0x35ff('0x8b')],{'as':_0x35ff('0x8b'),'foreignKey':'VariableId'});db['ChatQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0x126')],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db['ChatMessage'],{});db[_0x35ff('0xcb')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0xcb')]['belongsTo'](db['ChatQueue'],{});db['ChatInternalMessage'][_0x35ff('0x11b')](db['User'],{'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1c6')});db['ChatInternalMessage'][_0x35ff('0x11b')](db['User'],{'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x1c7')});db[_0x35ff('0xd2')]['hasMany'](db[_0x35ff('0xd0')],{'foreignKey':_0x35ff('0x1c8'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0xd2')][_0x35ff('0x10e')](db[_0x35ff('0xce')],{'foreignKey':_0x35ff('0x1c8'),'onDelete':_0x35ff('0x10c')});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x182')],{});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db['CmList'],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db['SmsQueueReport']['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x52')],{});db['SmsQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x54')],{});db['SmsQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0xd4')][_0x35ff('0x11b')](db[_0x35ff('0x56')],{});db[_0x35ff('0xd9')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x35ff('0x1c9')});db[_0x35ff('0xd9')][_0x35ff('0x10e')](db[_0x35ff('0xd0')],{'foreignKey':_0x35ff('0x1c9')});db['JscriptyProject'][_0x35ff('0x10e')](db[_0x35ff('0xce')],{'foreignKey':_0x35ff('0x1c9')});db[_0x35ff('0xde')][_0x35ff('0x11d')](db['User'],{'as':'Users','through':'user_has_square_projects'});db[_0x35ff('0xe3')]['belongsToMany'](db['User'],{'as':'Agents','through':'user_has_teams'});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db['VoiceQueue'],{'through':_0x35ff('0x107'),'as':_0x35ff('0x12d')});db['Team'][_0x35ff('0x11d')](db[_0x35ff('0x130')],{'through':_0x35ff('0x167'),'as':_0x35ff('0x131')});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db[_0x35ff('0x66')],{'through':_0x35ff('0x194'),'as':'ChatQueues'});db[_0x35ff('0xe3')][_0x35ff('0x11d')](db[_0x35ff('0x17d')],{'through':_0x35ff('0x181'),'as':_0x35ff('0x1ca')});db['Team'][_0x35ff('0x11d')](db['SmsQueue'],{'through':_0x35ff('0x186'),'as':_0x35ff('0x133')});db[_0x35ff('0xe3')]['belongsToMany'](db[_0x35ff('0x5c')],{'through':_0x35ff('0x1cb'),'as':'OpenchannelQueues'});db[_0x35ff('0xe3')]['belongsToMany'](db[_0x35ff('0x104')],{'through':'team_has_whatsapp_queues','as':_0x35ff('0x134')});db['Team'][_0x35ff('0x11d')](db[_0x35ff('0xf2')],{'through':_0x35ff('0x108'),'as':_0x35ff('0x12e')});db[_0x35ff('0xe6')][_0x35ff('0x10e')](db[_0x35ff('0x14b')],{'as':'Hoppers','foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')][_0x35ff('0x10e')](db['CmHopperFinal'],{'as':_0x35ff('0x112'),'foreignKey':'CampaignId'});db[_0x35ff('0xe6')]['hasMany'](db['CmHopperHistory'],{'as':_0x35ff('0x14d'),'foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')]['hasMany'](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0x35ff('0x19c')});db[_0x35ff('0xe6')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':_0x35ff('0x26'),'foreignKey':'TrunkId'});db[_0x35ff('0xe6')][_0x35ff('0x11b')](db[_0x35ff('0x26')],{'as':'TrunkBackup','foreignKey':_0x35ff('0x151')});db['Campaign'][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'as':'Interval','foreignKey':'IntervalId'});db['Campaign']['belongsTo'](db[_0x35ff('0xde')],{'as':_0x35ff('0xde'),'foreignKey':_0x35ff('0x1cc')});db[_0x35ff('0xe6')][_0x35ff('0x11d')](db['CmList'],{'as':'Lists','through':_0x35ff('0x1cd')});db[_0x35ff('0xe6')]['belongsToMany'](db[_0x35ff('0x122')],{'as':_0x35ff('0x1ce'),'through':_0x35ff('0x1cf')});db[_0x35ff('0xe8')][_0x35ff('0x11b')](db['ChatOfflineMessage'],{'as':_0x35ff('0x174'),'foreignKey':'ChatOfflineMessageId'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x170')],{});db[_0x35ff('0xeb')]['belongsTo'](db[_0x35ff('0x3e')],{});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':_0x35ff('0x1d0')});db['MailTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':'FromUserId','as':'FromAgent'});db['MailTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':'ToAgent'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x130')],{'foreignKey':_0x35ff('0x1d2'),'as':'ToQueue'});db[_0x35ff('0xeb')][_0x35ff('0x11b')](db[_0x35ff('0x139')],{'foreignKey':_0x35ff('0x1d3'),'as':_0x35ff('0x1d4')});db['ChatTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x18f')],{});db['ChatTransferReport']['belongsTo'](db[_0x35ff('0x126')],{});db[_0x35ff('0x1d5')]['belongsTo'](db[_0x35ff('0x5e')],{'foreignKey':_0x35ff('0x1d6'),'as':_0x35ff('0x1d0')});db['ChatTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':'ToAgent'});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0x66')],{'foreignKey':_0x35ff('0x1d8'),'as':_0x35ff('0x1d9')});db[_0x35ff('0x1d5')][_0x35ff('0x11b')](db[_0x35ff('0x5e')],{'foreignKey':_0x35ff('0x1da'),'as':_0x35ff('0x1d4')});db['FaxTransferReport'][_0x35ff('0x11b')](db['FaxMessage'],{});db['FaxTransferReport']['belongsTo'](db[_0x35ff('0x115')],{});db[_0x35ff('0xed')]['belongsTo'](db[_0x35ff('0x137')],{'foreignKey':_0x35ff('0x1db'),'as':_0x35ff('0x1d0')});db[_0x35ff('0xed')]['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db['FaxTransferReport'][_0x35ff('0x11b')](db['User'],{'foreignKey':'ToUserId','as':_0x35ff('0x1dc')});db[_0x35ff('0xed')][_0x35ff('0x11b')](db[_0x35ff('0x17d')],{'foreignKey':'ToFaxQueueId','as':_0x35ff('0x1d9')});db[_0x35ff('0xed')][_0x35ff('0x11b')](db[_0x35ff('0x137')],{'foreignKey':'ToFaxAccountId','as':'ToAccount'});db['OpenchannelTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x189')],{});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x5a')],{});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'foreignKey':_0x35ff('0x1de'),'as':_0x35ff('0x1d0')});db[_0x35ff('0x1dd')]['belongsTo'](db['User'],{'foreignKey':_0x35ff('0x1d7'),'as':_0x35ff('0x1df')});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x5c')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x35ff('0x1dd')][_0x35ff('0x11b')](db[_0x35ff('0x187')],{'foreignKey':_0x35ff('0x1e0'),'as':_0x35ff('0x1d4')});db[_0x35ff('0xef')][_0x35ff('0x11b')](db['SmsMessage'],{});db['SmsTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x52')],{});db['SmsTransferReport'][_0x35ff('0x11b')](db[_0x35ff('0x182')],{'foreignKey':_0x35ff('0x1e1'),'as':_0x35ff('0x1d0')});db['SmsTransferReport']['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':_0x35ff('0x1df')});db[_0x35ff('0xef')]['belongsTo'](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0xef')][_0x35ff('0x11b')](db['SmsQueue'],{'foreignKey':_0x35ff('0x1e2'),'as':_0x35ff('0x1d9')});db[_0x35ff('0xef')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x35ff('0x1e3'),'as':'ToAccount'});db[_0x35ff('0x122')][_0x35ff('0x10e')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x35ff('0x17b'),'onDelete':'cascade'});db['CmList'][_0x35ff('0x10e')](db[_0x35ff('0x73')],{'as':_0x35ff('0x1e4'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x120'),'onDelete':_0x35ff('0x10c'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db[_0x35ff('0x6f')],{'as':_0x35ff('0x112'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')][_0x35ff('0x10e')](db['CmHopperHistory'],{'as':_0x35ff('0x113'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x122')]['hasMany'](db[_0x35ff('0x71')],{'as':_0x35ff('0x71'),'foreignKey':'ListId'});db[_0x35ff('0x122')]['belongsToMany'](db[_0x35ff('0x12c')],{'as':'Queues','through':_0x35ff('0x156')});db[_0x35ff('0x122')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'cm_user_has_lists'});db[_0x35ff('0xf2')]['hasMany'](db['VoiceExtension'],{'as':_0x35ff('0x111'),'onDelete':'cascade'});db[_0x35ff('0xf2')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'UserVoicePrefix'});db[_0x35ff('0xf2')][_0x35ff('0x11d')](db['Team'],{'through':_0x35ff('0x108'),'as':_0x35ff('0x168')});db[_0x35ff('0xf4')]['hasMany'](db[_0x35ff('0xf')],{'as':'Users','foreignKey':_0x35ff('0x11c')});db[_0x35ff('0xf4')]['hasMany'](db[_0x35ff('0x1e5')],{'as':'UserProfileSections','foreignKey':'userProfileId','onDelete':_0x35ff('0x10c')});db[_0x35ff('0x1e5')][_0x35ff('0x10e')](db[_0x35ff('0xf7')],{'as':_0x35ff('0x1e6'),'foreignKey':'sectionId','onDelete':_0x35ff('0x10c')});db['WhatsappAccount'][_0x35ff('0x10e')](db[_0x35ff('0x7a')],{'as':_0x35ff('0x160'),'foreignKey':_0x35ff('0x1e7'),'onDelete':_0x35ff('0x10c')});db['WhatsappAccount']['hasMany'](db['CannedAnswer'],{'as':_0x35ff('0x161'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfa')]['hasMany'](db[_0x35ff('0xfe')],{'as':_0x35ff('0x158'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfa')][_0x35ff('0x10e')](db[_0x35ff('0xfc')],{'as':_0x35ff('0x162')});db['WhatsappAccount']['hasMany'](db[_0x35ff('0x1e8')],{'as':_0x35ff('0x144')});db[_0x35ff('0xfa')][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':'ListId'});db[_0x35ff('0xfa')][_0x35ff('0x11b')](db[_0x35ff('0x153')],{'as':_0x35ff('0x154'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x35ff('0xfa')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':'user_has_whatsapp_accounts'});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x104')],{'onDelete':'restrict'});db[_0x35ff('0x1e8')]['belongsTo'](db[_0x35ff('0xfa')],{'onDelete':_0x35ff('0x176')});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x7e')],{'onDelete':_0x35ff('0x176'),'foreignKey':'IntervalId'});db[_0x35ff('0x1e8')][_0x35ff('0x11b')](db[_0x35ff('0x88')],{'onDelete':_0x35ff('0x176'),'foreignKey':_0x35ff('0x177')});db['WhatsappInteraction'][_0x35ff('0x10e')](db[_0x35ff('0xfe')],{'as':'Messages','onDelete':_0x35ff('0x10c'),'foreignKey':'WhatsappInteractionId'});db[_0x35ff('0xfc')]['belongsTo'](db[_0x35ff('0xfa')],{'as':'Account','foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0xfc')]['belongsTo'](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['WhatsappInteraction'][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'as':_0x35ff('0x16b'),'foreignKey':'UserId'});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db[_0x35ff('0x88')],{'through':_0x35ff('0x1ab'),'as':'Tags'});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x35ff('0x16e')});db[_0x35ff('0xfc')][_0x35ff('0x11d')](db['User'],{'as':'Users','through':_0x35ff('0x12b'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x35ff('0x11b')](db['User'],{'as':_0x35ff('0xf')});db['WhatsappMessage'][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'onDelete':_0x35ff('0x10c'),'as':'Contact'});db[_0x35ff('0xfe')]['belongsTo'](db[_0x35ff('0xfc')],{'onDelete':'cascade','as':_0x35ff('0x173'),'foreignKey':_0x35ff('0x1e9')});db['WhatsappMessage'][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'as':_0x35ff('0x16a'),'foreignKey':_0x35ff('0x1e7')});db[_0x35ff('0x100')]['belongsTo'](db['WhatsappAccount'],{});db['WhatsappQueueReport'][_0x35ff('0x11b')](db[_0x35ff('0x122')],{'as':_0x35ff('0x163'),'foreignKey':_0x35ff('0x17b')});db[_0x35ff('0x100')][_0x35ff('0x11b')](db[_0x35ff('0x15c')],{'as':_0x35ff('0x172'),'foreignKey':_0x35ff('0x15d')});db['WhatsappQueueReport']['belongsTo'](db[_0x35ff('0xfc')],{});db[_0x35ff('0x100')]['belongsTo'](db[_0x35ff('0x104')],{});db['WhatsappQueueReport'][_0x35ff('0x11b')](db['WhatsappMessage'],{});db[_0x35ff('0x100')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfe')],{});db[_0x35ff('0x102')]['belongsTo'](db[_0x35ff('0xfc')],{});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'foreignKey':_0x35ff('0x1ea'),'as':_0x35ff('0x1d0')});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xfa')],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db[_0x35ff('0x102')][_0x35ff('0x11b')](db['WhatsappQueue'],{'foreignKey':_0x35ff('0x1eb'),'as':_0x35ff('0x1d9')});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d7'),'as':'FromAgent'});db[_0x35ff('0x102')][_0x35ff('0x11b')](db[_0x35ff('0xf')],{'foreignKey':_0x35ff('0x1d1'),'as':_0x35ff('0x1dc')});db[_0x35ff('0x104')][_0x35ff('0x11d')](db[_0x35ff('0xf')],{'as':_0x35ff('0x157'),'through':_0x35ff('0x135'),'foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x35ff('0x11d')](db[_0x35ff('0xe3')],{'through':_0x35ff('0x1ec'),'as':_0x35ff('0x168')});module[_0x35ff('0x1ed')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x1be1=['../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','ChatInteraction','ChatMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoField','../api/intZohoField/intZohoField.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','cascade','UserId','Recordings','hasMany','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteraction','FaxInteractions','MailInteractions','WhatsappInteraction','SenderId','belongsTo','userProfileId','belongsToMany','Groups','Contacts','cm_user_has_contacts','Lists','user_has_teams','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','VoiceQueues','UserVoiceQueue','VoicePrefixes','MailQueues','FaxQueues','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueue','WhatsappQueues','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','Applications','Sounds','Members','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','QueueCalls','uniqueid','AgentReports','ContactId','MailAccountId','Imap','Smtp','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','Teams','Account','Contact','Owner','mail_interaction_has_tags','Tags','Tag','ThroughTags','Users','user_has_mail_interactions','MailInteractionId','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','Dispositions','FaxAccountId','Exntensions','fax_interaction_has_tags','FaxInteractionId','Attachment','team_has_fax_queues','SmsAccountId','SmsApplication','SmsInteractionId','sms_interaction_has_tags','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroupId','CmCompany','CompanyId','CmHopper','Company','cm_contact_has_tags','Queue','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','OneAny','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','moh_has_sounds','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerAnyId','AnalyticFieldReport','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','VariableId','Field','DeskConfiguration','int_desk_configuration_has_tags','ZohoConfiguration','ZendeskAccount','int_zendesk_configuration_has_tags','int_freshdesk_configuration_has_tags','ServicenowConfiguration','FromId','ToId','SessionId','ProjectId','user_has_square_projects','TeamVoiceQueue','ChatQueues','team_has_sms_queues','team_has_whatsapp_queues','TrunkBackup','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToAccount','FromAccount','ToAgent','ToChatQueueId','ToChatWebsiteId','ToFaxAccountId','FromOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','cm_user_has_lists','UserProfileSections','Resources','WhatsappAccountId','WhatsappInteractionId','user_has_whatsapp_interactions','FromWhatsappAccountId','ToWhatsappAccountId','WhatsappQueueId','exports','lodash','jstz','sequelize','defaultsDeep','motion2','xC@LL1234','127.0.0.1','mysql','name','utf8_general_ci','sequelizeHistory','utf8mb4','utf8','database','username','password','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','SmsAccount','../api/smsApplication/smsApplication.model'];(function(_0x2de64f,_0x1c65fa){var _0x37ab98=function(_0x54a8f9){while(--_0x54a8f9){_0x2de64f['push'](_0x2de64f['shift']());}};_0x37ab98(++_0x1c65fa);}(_0x1be1,0x192));var _0x11be=function(_0x5057ac,_0x2cc3a2){_0x5057ac=_0x5057ac-0x0;var _0x5402cf=_0x1be1[_0x5057ac];return _0x5402cf;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require(_0x11be('0x0'));var jstz=require(_0x11be('0x1'));var timezone=jstz['determine']();config[_0x11be('0x2')]=_[_0x11be('0x3')](config[_0x11be('0x2')],{'database':_0x11be('0x4'),'username':'xcall','password':_0x11be('0x5'),'options':{'host':_0x11be('0x6'),'port':0xcea,'dialect':_0x11be('0x7'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x11be('0x8')](),'define':{'charset':'utf8','collate':_0x11be('0x9')}}});config[_0x11be('0xa')]=_[_0x11be('0x3')](config[_0x11be('0xa')],{'database':_0x11be('0x4'),'username':'xcall','password':_0x11be('0x5'),'options':{'host':_0x11be('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x11be('0xb')},'logging':![],'timezone':timezone[_0x11be('0x8')](),'define':{'charset':_0x11be('0xc'),'collate':_0x11be('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x11be('0xd')],config[_0x11be('0x2')][_0x11be('0xe')],config['sequelize'][_0x11be('0xf')],config[_0x11be('0x2')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x11be('0xa')]['database'],config['sequelizeHistory']['username'],config['sequelizeHistory']['password'],config['sequelizeHistory']['options'])};db[_0x11be('0x10')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x12'));db[_0x11be('0x13')]=db[_0x11be('0x2')]['import'](_0x11be('0x14'));db[_0x11be('0x15')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x16'));db[_0x11be('0x17')]=db['sequelize']['import'](_0x11be('0x18'));db[_0x11be('0x19')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x11be('0x1a')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x1b'));db[_0x11be('0x1c')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x1d'));db[_0x11be('0x1e')]=db[_0x11be('0x2')]['import'](_0x11be('0x1f'));db[_0x11be('0x20')]=db[_0x11be('0x2')]['import']('../api/voiceMail/voiceMail.model');db[_0x11be('0x21')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x11be('0x22')]=db['sequelize'][_0x11be('0x11')]('../api/voiceCallReport/voiceCallReport.model');db[_0x11be('0x23')]=db[_0x11be('0x2')]['import'](_0x11be('0x24'));db[_0x11be('0x25')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x26'));db[_0x11be('0x27')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x28'));db['MemberReport']=db[_0x11be('0x2')]['import'](_0x11be('0x29'));db[_0x11be('0x2a')]=db['sequelize']['import'](_0x11be('0x2b'));db[_0x11be('0x2c')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x2d'));db[_0x11be('0x2e')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x2f'));db['UserVoiceQueue']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x30'));db[_0x11be('0x31')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/userChatQueue/userChatQueue.model');db[_0x11be('0x32')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x33'));db[_0x11be('0x34')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x35'));db[_0x11be('0x36')]=db['sequelize'][_0x11be('0x11')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db['sequelize']['import'](_0x11be('0x37'));db[_0x11be('0x38')]=db[_0x11be('0x2')]['import'](_0x11be('0x39'));db[_0x11be('0x3a')]=db['sequelize'][_0x11be('0x11')]('../api/mailServerIn/mailServerIn.model');db[_0x11be('0x3b')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x3c'));db[_0x11be('0x3d')]=db[_0x11be('0x2')]['import'](_0x11be('0x3e'));db[_0x11be('0x3f')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/mailQueue/mailQueue.model');db[_0x11be('0x40')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x41'));db[_0x11be('0x42')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/mailInteraction/mailInteraction.model');db[_0x11be('0x43')]=db[_0x11be('0x2')]['import'](_0x11be('0x44'));db[_0x11be('0x45')]=db['sequelize'][_0x11be('0x11')]('../api/mailApplication/mailApplication.model');db[_0x11be('0x46')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x47'));db['Dashboard']=db[_0x11be('0x2')]['import'](_0x11be('0x48'));db[_0x11be('0x49')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x4a'));db[_0x11be('0x4b')]=db[_0x11be('0x2')]['import'](_0x11be('0x4c'));db[_0x11be('0x4d')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/faxApplication/faxApplication.model');db['FaxInteraction']=db['sequelize'][_0x11be('0x11')]('../api/faxInteraction/faxInteraction.model');db[_0x11be('0x4e')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x4f'));db[_0x11be('0x50')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x51'));db[_0x11be('0x52')]=db['sequelize'][_0x11be('0x11')]('../api/faxQueueReport/faxQueueReport.model');db[_0x11be('0x53')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/smsAccount/smsAccount.model');db['SmsApplication']=db['sequelize'][_0x11be('0x11')](_0x11be('0x54'));db['SmsInteraction']=db['sequelize']['import'](_0x11be('0x55'));db[_0x11be('0x56')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x57'));db[_0x11be('0x58')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x59'));db[_0x11be('0x5a')]=db[_0x11be('0x2')]['import'](_0x11be('0x5b'));db[_0x11be('0x5c')]=db['sequelize']['import']('../api/openchannelApplication/openchannelApplication.model');db[_0x11be('0x5d')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x5e'));db[_0x11be('0x5f')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x60'));db[_0x11be('0x61')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/openchannelQueue/openchannelQueue.model');db[_0x11be('0x62')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x63'));db['OpenchannelQueueReport']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x64'));db[_0x11be('0x65')]=db[_0x11be('0x2')]['import']('../api/chatApplication/chatApplication.model');db[_0x11be('0x66')]=db[_0x11be('0x2')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x11be('0x67')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/chatMessage/chatMessage.model');db['ChatOfflineMessage']=db['sequelize'][_0x11be('0x11')](_0x11be('0x68'));db[_0x11be('0x69')]=db['sequelize']['import'](_0x11be('0x6a'));db[_0x11be('0x6b')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/chatGroup/chatGroup.model');db[_0x11be('0x6c')]=db['sequelize']['import']('../api/chatProactiveAction/chatProactiveAction.model');db['CmCompany']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x6d'));db[_0x11be('0x6e')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x6f'));db['CmHopper']=db['sequelize'][_0x11be('0x11')](_0x11be('0x70'));db[_0x11be('0x71')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x72'));db[_0x11be('0x73')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/cmHopperFinal/cmHopperFinal.model');db[_0x11be('0x74')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x11be('0x75')]=db[_0x11be('0x2')]['import']('../api/reportAgentPreview/reportAgentPreview.model');db[_0x11be('0x76')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x77'));db['Action']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x78'));db[_0x11be('0x79')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x7a'));db[_0x11be('0x7b')]=db[_0x11be('0x2')]['import']('../api/cannedAnswer/cannedAnswer.model');db[_0x11be('0x7c')]=db[_0x11be('0x2')]['import'](_0x11be('0x7d'));db[_0x11be('0x7e')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x7f'));db[_0x11be('0x80')]=db[_0x11be('0x2')]['import']('../api/interval/interval.model');db[_0x11be('0x81')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/pause/pause.model');db[_0x11be('0x82')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x83'));db[_0x11be('0x84')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x85'));db[_0x11be('0x86')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x87'));db[_0x11be('0x88')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x89'));db['Tag']=db['sequelize'][_0x11be('0x11')]('../api/tag/tag.model');db[_0x11be('0x8a')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x8b'));db[_0x11be('0x8c')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x8d'));db[_0x11be('0x8e')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x8f'));db[_0x11be('0x90')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x91'));db['IntegrationReport']=db['sequelize']['import']('../api/integrationReport/integrationReport.model');db[_0x11be('0x92')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x93'));db[_0x11be('0x94')]=db['sequelize'][_0x11be('0x11')](_0x11be('0x95'));db[_0x11be('0x96')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x11be('0x97')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x98'));db['AnalyticFieldReport']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x99'));db[_0x11be('0x9a')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x11be('0x9b')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x9c'));db['SalesforceConfiguration']=db[_0x11be('0x2')]['import'](_0x11be('0x9d'));db[_0x11be('0x9e')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/intSalesforceField/intSalesforceField.model');db[_0x11be('0x9f')]=db[_0x11be('0x2')]['import'](_0x11be('0xa0'));db[_0x11be('0xa1')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x11be('0xa2')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xa3'));db[_0x11be('0xa4')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xa5'));db['DeskConfiguration']=db[_0x11be('0x2')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x11be('0xa6')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xa7'));db[_0x11be('0xa8')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/intZohoAccount/intZohoAccount.model');db['ZohoConfiguration']=db[_0x11be('0x2')]['import']('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x11be('0xa9')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xaa'));db['ZendeskAccount']=db[_0x11be('0x2')][_0x11be('0x11')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x11be('0xab')]=db[_0x11be('0x2')]['import'](_0x11be('0xac'));db[_0x11be('0xad')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xae'));db[_0x11be('0xaf')]=db[_0x11be('0x2')]['import'](_0x11be('0xb0'));db[_0x11be('0xb1')]=db[_0x11be('0x2')]['import'](_0x11be('0xb2'));db[_0x11be('0xb3')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xb4'));db[_0x11be('0xb5')]=db['sequelize']['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x11be('0xb6')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xb7'));db[_0x11be('0xb8')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xb9'));db[_0x11be('0xba')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xbb'));db['ServicenowConfiguration']=db['sequelize'][_0x11be('0x11')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x11be('0xbc')]=db[_0x11be('0x2')]['import'](_0x11be('0xbd'));db[_0x11be('0xbe')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xbf'));db[_0x11be('0xc0')]=db['sequelize'][_0x11be('0x11')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x11be('0xc1')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xc2'));db[_0x11be('0xc3')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xc4'));db[_0x11be('0xc5')]=db[_0x11be('0x2')]['import'](_0x11be('0xc6'));db[_0x11be('0xc7')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xc8'));db[_0x11be('0x90')]=db['sequelize']['import'](_0x11be('0x91'));db['Network']=db[_0x11be('0x2')]['import'](_0x11be('0xc9'));db[_0x11be('0xca')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/chatQueueReport/chatQueueReport.model');db[_0x11be('0xcb')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xcc'));db[_0x11be('0xcd')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xce'));db[_0x11be('0xcf')]=db[_0x11be('0x2')]['import'](_0x11be('0xd0'));db[_0x11be('0xd1')]=db[_0x11be('0x2')]['import']('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x11be('0xd2')]=db[_0x11be('0x2')]['import'](_0x11be('0xd3'));db[_0x11be('0xd4')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xd5'));db['SquareDetailsReport']=db['sequelize'][_0x11be('0x11')](_0x11be('0xd6'));db[_0x11be('0xd7')]=db[_0x11be('0x2')]['import']('../api/jscriptyProject/jscriptyProject.model');db[_0x11be('0xd8')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/setting/setting.model');db[_0x11be('0xd9')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xda'));db[_0x11be('0xdb')]=db['sequelize'][_0x11be('0x11')]('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0x11be('0x2')][_0x11be('0x11')]('../api/squareRecording/squareRecording.model');db['SquareMessage']=db['sequelize'][_0x11be('0x11')](_0x11be('0xdc'));db[_0x11be('0xdd')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xde'));db['License']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xdf'));db[_0x11be('0xe0')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xe1'));db[_0x11be('0xe2')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xe3'));db['Attachment']=db[_0x11be('0x2')]['import'](_0x11be('0xe4'));db[_0x11be('0xe5')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xe6'));db['MailTransferReport']=db[_0x11be('0x2')][_0x11be('0x11')]('../api/mailTransferReport/mailTransferReport.model');db[_0x11be('0xe7')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xe8'));db[_0x11be('0xe9')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/faxTransferReport/faxTransferReport.model');db[_0x11be('0xea')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xeb'));db['SmsTransferReport']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xec'));db[_0x11be('0xed')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xee'));db[_0x11be('0xef')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xf0'));db[_0x11be('0xf1')]=db['sequelize'][_0x11be('0x11')]('../api/userProfile/userProfile.model');db[_0x11be('0xf2')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xf3'));db['UserProfileResource']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xf4'));db[_0x11be('0xf5')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xf6'));db['WhatsappAccount']=db['sequelize'][_0x11be('0x11')](_0x11be('0xf7'));db[_0x11be('0xf8')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xf9'));db['WhatsappInteraction']=db['sequelize'][_0x11be('0x11')](_0x11be('0xfa'));db[_0x11be('0xfb')]=db['sequelize'][_0x11be('0x11')](_0x11be('0xfc'));db[_0x11be('0xfd')]=db[_0x11be('0x2')][_0x11be('0x11')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x11be('0xfe')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0xff'));db['WhatsappQueue']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x100'));db[_0x11be('0x101')]=db[_0x11be('0x2')]['import'](_0x11be('0x102'));db['TeamVoiceQueue']=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x103'));db[_0x11be('0x104')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x105'));db[_0x11be('0x106')]=db[_0x11be('0x2')][_0x11be('0x11')](_0x11be('0x107'));db[_0x11be('0x10')][_0x11be('0x108')](db[_0x11be('0x20')],{'as':'VoiceMail','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')]['hasMany'](db[_0x11be('0x1c')],{'as':_0x11be('0x10b'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x2e')],{'as':_0x11be('0x10d'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x17')],{'as':_0x11be('0x10e'),'onDelete':_0x11be('0x109'),'hooks':!![]});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x73')],{'as':_0x11be('0x10f'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x74')],{'as':_0x11be('0x110'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')]['hasMany'](db[_0x11be('0x75')],{'as':_0x11be('0x75'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')]['hasMany'](db[_0x11be('0x5d')],{'as':_0x11be('0x111'),'foreignKey':'UserId'});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x66')],{'as':_0x11be('0x112'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x113')],{'as':_0x11be('0x114'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')]['hasMany'](db[_0x11be('0x115')],{'as':_0x11be('0x116'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0x42')],{'as':_0x11be('0x117'),'foreignKey':_0x11be('0x10a')});db['User'][_0x11be('0x10c')](db[_0x11be('0x118')],{'as':'WhatsappInteractions','foreignKey':_0x11be('0x10a')});db[_0x11be('0x10')][_0x11be('0x10c')](db[_0x11be('0xf5')],{'as':'UserNotifications','foreignKey':_0x11be('0x119')});db['User'][_0x11be('0x11a')](db['UserProfile'],{'as':_0x11be('0xf1'),'foreignKey':_0x11be('0x11b')});db['User'][_0x11be('0x11c')](db['ChatGroup'],{'as':_0x11be('0x11d'),'through':'chat_group_has_users'});db[_0x11be('0x10')][_0x11be('0x11c')](db['CmContact'],{'as':_0x11be('0x11e'),'through':_0x11be('0x11f')});db[_0x11be('0x10')][_0x11be('0x11c')](db['CmList'],{'as':_0x11be('0x120'),'through':'cm_user_has_lists'});db['User'][_0x11be('0x11c')](db[_0x11be('0xdd')],{'through':_0x11be('0x121')});db['User']['belongsToMany'](db[_0x11be('0x42')],{'as':_0x11be('0x117'),'through':'user_has_mail_interactions'});db[_0x11be('0x10')]['belongsToMany'](db[_0x11be('0x66')],{'as':_0x11be('0x112'),'through':_0x11be('0x122')});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x115')],{'as':_0x11be('0x116'),'through':_0x11be('0x123')});db[_0x11be('0x10')][_0x11be('0x11c')](db['SmsInteraction'],{'as':_0x11be('0x114'),'through':_0x11be('0x124')});db['User'][_0x11be('0x11c')](db[_0x11be('0x5d')],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db['User'][_0x11be('0x11c')](db[_0x11be('0x118')],{'as':_0x11be('0x125'),'through':'user_has_whatsapp_interactions'});db[_0x11be('0x10')]['belongsToMany'](db[_0x11be('0x1a')],{'as':_0x11be('0x126'),'through':_0x11be('0x127'),'required':![]});db[_0x11be('0x10')]['belongsToMany'](db[_0x11be('0xef')],{'as':_0x11be('0x128'),'through':_0x11be('0x106'),'required':![]});db['User'][_0x11be('0x11c')](db[_0x11be('0x3f')],{'as':_0x11be('0x129'),'through':_0x11be('0x32'),'required':![]});db['User'][_0x11be('0x11c')](db[_0x11be('0x69')],{'as':'ChatQueues','through':_0x11be('0x31'),'required':![],'hooks':!![]});db[_0x11be('0x10')][_0x11be('0x11c')](db['FaxQueue'],{'as':_0x11be('0x12a'),'through':_0x11be('0x34'),'required':![]});db[_0x11be('0x10')][_0x11be('0x11c')](db['SmsQueue'],{'as':_0x11be('0x12b'),'through':'UserSmsQueue','required':![]});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x61')],{'as':_0x11be('0x12c'),'through':_0x11be('0x12d'),'required':![]});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x12e')],{'as':_0x11be('0x12f'),'through':_0x11be('0x38'),'required':![]});db[_0x11be('0x10')]['belongsToMany'](db['CmList'],{'through':'cm_user_has_lists'});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x62')],{'as':_0x11be('0x130'),'through':_0x11be('0x131')});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x4b')],{'as':_0x11be('0x132'),'through':_0x11be('0x133')});db[_0x11be('0x10')][_0x11be('0x11c')](db['MailAccount'],{'as':_0x11be('0x134'),'through':_0x11be('0x135')});db['User']['belongsToMany'](db[_0x11be('0x5a')],{'as':'OpenchannelAccounts','through':_0x11be('0x136')});db[_0x11be('0x10')][_0x11be('0x11c')](db[_0x11be('0x53')],{'as':_0x11be('0x137'),'through':_0x11be('0x138')});db['User']['belongsToMany'](db[_0x11be('0x139')],{'as':_0x11be('0x13a'),'through':_0x11be('0x13b')});db[_0x11be('0x10')]['belongsToMany'](db['SquareProject'],{'as':_0x11be('0x13c'),'through':'user_has_square_projects'});db[_0x11be('0x13')]['hasMany'](db[_0x11be('0x17')],{'as':'SpiedAgents','onDelete':_0x11be('0x109'),'foreignKey':'ChanSpyId'});db[_0x11be('0x15')][_0x11be('0x10c')](db[_0x11be('0x17')],{'onDelete':_0x11be('0x109')});db[_0x11be('0x17')][_0x11be('0x10c')](db[_0x11be('0x17')],{'as':_0x11be('0x13d'),'onDelete':_0x11be('0x109')});db[_0x11be('0x19')][_0x11be('0x11c')](db['Sound'],{'as':_0x11be('0x13e'),'through':'moh_has_sounds'});db[_0x11be('0x1a')][_0x11be('0x10c')](db[_0x11be('0x2e')],{'as':_0x11be('0x13f'),'foreignKey':_0x11be('0x140')});db['VoiceQueue'][_0x11be('0x10c')](db['CmHopper'],{'as':_0x11be('0x141'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')][_0x11be('0x10c')](db[_0x11be('0x73')],{'as':_0x11be('0x10f'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')][_0x11be('0x10c')](db[_0x11be('0x74')],{'as':_0x11be('0x142'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')][_0x11be('0x10c')](db['ReportAgentPreview'],{'as':_0x11be('0x75'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')][_0x11be('0x10c')](db['CmHopperBlack'],{'as':_0x11be('0x143'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')]['hasMany'](db['JscriptySessionReport'],{'as':_0x11be('0x144'),'foreignKey':_0x11be('0x140')});db[_0x11be('0x1a')][_0x11be('0x11a')](db[_0x11be('0x2a')],{'as':_0x11be('0x2a'),'foreignKey':_0x11be('0x145')});db[_0x11be('0x1a')]['belongsTo'](db[_0x11be('0x2a')],{'as':'TrunkBackup','foreignKey':_0x11be('0x146')});db[_0x11be('0x1a')][_0x11be('0x11a')](db['Interval'],{'as':'Interval','foreignKey':_0x11be('0x147')});db[_0x11be('0x1a')][_0x11be('0x11a')](db[_0x11be('0x81')],{'as':_0x11be('0x148'),'foreignKey':_0x11be('0x149')});db[_0x11be('0x1a')][_0x11be('0x11c')](db[_0x11be('0xed')],{'as':'Lists','through':_0x11be('0x14a')});db[_0x11be('0x1a')]['belongsToMany'](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x127')});db[_0x11be('0x1a')]['belongsToMany'](db[_0x11be('0xdd')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0x11be('0x1a')][_0x11be('0x11c')](db['CmList'],{'as':_0x11be('0x14c'),'through':_0x11be('0x14d')});db[_0x11be('0x1c')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':_0x11be('0x10'),'foreignKey':'UserId'});db['ScreenRecording'][_0x11be('0x11a')](db['User'],{'as':_0x11be('0x10'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x20')][_0x11be('0x10c')](db[_0x11be('0x21')],{'as':_0x11be('0x14e'),'onDelete':_0x11be('0x109'),'foreignKey':'mailboxuser','sourceKey':_0x11be('0x14f')});db[_0x11be('0x21')]['belongsTo'](db[_0x11be('0x20')],{'foreignKey':_0x11be('0x150'),'targetKey':_0x11be('0x14f')});db[_0x11be('0x22')][_0x11be('0x10c')](db[_0x11be('0x27')],{'as':_0x11be('0x151'),'foreignKey':_0x11be('0x152'),'constraints':![]});db[_0x11be('0x22')][_0x11be('0x10c')](db[_0x11be('0x25')],{'as':_0x11be('0x153'),'foreignKey':_0x11be('0x152'),'constraints':![]});db[_0x11be('0x22')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':'User','foreignKey':_0x11be('0x10a')});db[_0x11be('0x22')]['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':_0x11be('0x154')});db['MailServerIn']['belongsTo'](db[_0x11be('0x3d')],{'as':_0x11be('0x3d'),'foreignKey':_0x11be('0x155')});db['MailServerOut'][_0x11be('0x11a')](db[_0x11be('0x3d')],{'as':'MailAccount','foreignKey':_0x11be('0x155')});db[_0x11be('0x3d')][_0x11be('0x108')](db[_0x11be('0x3a')],{'as':_0x11be('0x156'),'onDelete':_0x11be('0x109')});db[_0x11be('0x3d')]['hasOne'](db[_0x11be('0x3b')],{'as':_0x11be('0x157'),'onDelete':_0x11be('0x109')});db['MailAccount'][_0x11be('0x10c')](db[_0x11be('0x7c')],{'as':'Dispositions','foreignKey':'MailAccountId','onDelete':_0x11be('0x109')});db['MailAccount']['hasMany'](db[_0x11be('0x7b')],{'as':_0x11be('0x158'),'foreignKey':_0x11be('0x155')});db['MailAccount']['hasMany'](db[_0x11be('0x43')],{'as':_0x11be('0x14e'),'foreignKey':_0x11be('0x155')});db[_0x11be('0x3d')][_0x11be('0x10c')](db[_0x11be('0x42')],{'as':_0x11be('0x159')});db[_0x11be('0x3d')][_0x11be('0x10c')](db[_0x11be('0x45')],{'as':_0x11be('0x13d')});db[_0x11be('0x3d')]['belongsTo'](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db[_0x11be('0x3d')]['belongsTo'](db[_0x11be('0x8a')],{'as':_0x11be('0x8a'),'foreignKey':_0x11be('0x15c')});db[_0x11be('0x3d')]['belongsTo'](db[_0x11be('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x11be('0x149')});db['MailAccount'][_0x11be('0x11c')](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x135')});db[_0x11be('0x3f')][_0x11be('0x11c')](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x32')});db['MailQueue'][_0x11be('0x11c')](db[_0x11be('0xdd')],{'through':_0x11be('0x15d'),'as':_0x11be('0x15e')});db[_0x11be('0x42')][_0x11be('0x10c')](db[_0x11be('0x43')],{'as':_0x11be('0x14e'),'onDelete':_0x11be('0x109'),'foreignKey':'MailInteractionId'});db['MailInteraction'][_0x11be('0x11a')](db[_0x11be('0x3d')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x155')});db[_0x11be('0x42')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x42')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':_0x11be('0x161'),'foreignKey':_0x11be('0x10a')});db['MailInteraction'][_0x11be('0x11c')](db['Tag'],{'through':_0x11be('0x162'),'as':_0x11be('0x163')});db['MailInteraction']['belongsToMany'](db[_0x11be('0x164')],{'through':_0x11be('0x162'),'as':_0x11be('0x165')});db['MailInteraction'][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x166'),'through':_0x11be('0x167'),'foreignKey':_0x11be('0x168')});db['MailMessage']['hasMany'](db['Attachment'],{'as':_0x11be('0x169'),'onDelete':_0x11be('0x109')});db[_0x11be('0x43')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':'User'});db[_0x11be('0x43')]['belongsTo'](db[_0x11be('0x6e')],{'onDelete':'cascade','as':_0x11be('0x160')});db[_0x11be('0x43')][_0x11be('0x11a')](db[_0x11be('0x42')],{'as':_0x11be('0x16a'),'foreignKey':_0x11be('0x168')});db[_0x11be('0x43')][_0x11be('0x11a')](db['MailAccount'],{'as':_0x11be('0x15f'),'foreignKey':'MailAccountId'});db['MailMessage']['belongsTo'](db[_0x11be('0x62')],{'as':_0x11be('0x62'),'foreignKey':_0x11be('0x16b')});db[_0x11be('0x43')][_0x11be('0x11a')](db[_0x11be('0x16c')],{'as':_0x11be('0x16c'),'foreignKey':_0x11be('0x16d')});db[_0x11be('0x45')][_0x11be('0x11a')](db[_0x11be('0x10')],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x45')][_0x11be('0x11a')](db[_0x11be('0x3f')],{'onDelete':_0x11be('0x16e')});db['MailApplication'][_0x11be('0x11a')](db['MailAccount'],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x45')][_0x11be('0x11a')](db[_0x11be('0x80')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x147')});db['MailApplication'][_0x11be('0x11a')](db[_0x11be('0x164')],{'onDelete':'restrict','foreignKey':_0x11be('0x16f')});db[_0x11be('0x46')][_0x11be('0x11a')](db[_0x11be('0x3d')],{});db[_0x11be('0x46')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':'ListId'});db[_0x11be('0x46')]['belongsTo'](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x46')][_0x11be('0x11a')](db[_0x11be('0x42')],{});db[_0x11be('0x46')][_0x11be('0x11a')](db[_0x11be('0x43')],{});db[_0x11be('0x46')][_0x11be('0x11a')](db['User'],{});db[_0x11be('0x46')][_0x11be('0x11a')](db[_0x11be('0x3f')],{});db['Dashboard'][_0x11be('0x10c')](db[_0x11be('0x49')],{'as':'Items','onDelete':_0x11be('0x109')});db['FaxAccount'][_0x11be('0x10c')](db[_0x11be('0x7c')],{'as':_0x11be('0x170'),'foreignKey':_0x11be('0x171'),'onDelete':_0x11be('0x109')});db['FaxAccount'][_0x11be('0x10c')](db[_0x11be('0x7b')],{'as':_0x11be('0x158'),'foreignKey':_0x11be('0x171')});db[_0x11be('0x4b')][_0x11be('0x10c')](db[_0x11be('0x115')],{'as':_0x11be('0x159')});db[_0x11be('0x4b')][_0x11be('0x10c')](db[_0x11be('0x4d')],{'as':_0x11be('0x13d')});db[_0x11be('0x4b')]['hasMany'](db[_0x11be('0x17')],{'as':_0x11be('0x172'),'onDelete':'cascade'});db['FaxAccount'][_0x11be('0x10c')](db[_0x11be('0x4e')],{'as':_0x11be('0x14e')});db[_0x11be('0x4b')][_0x11be('0x11a')](db[_0x11be('0x2a')],{'as':_0x11be('0x2a')});db[_0x11be('0x4b')][_0x11be('0x11a')](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':'ListId'});db[_0x11be('0x4b')]['belongsTo'](db['Pause'],{'as':_0x11be('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x11be('0x4b')][_0x11be('0x11c')](db['User'],{'as':'Agents','through':_0x11be('0x133')});db[_0x11be('0x4d')][_0x11be('0x11a')](db['User'],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x4d')][_0x11be('0x11a')](db[_0x11be('0x50')],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x4d')]['belongsTo'](db[_0x11be('0x4b')],{'onDelete':_0x11be('0x16e')});db['FaxApplication'][_0x11be('0x11a')](db[_0x11be('0x164')],{'onDelete':_0x11be('0x16e'),'foreignKey':'TagId'});db[_0x11be('0x115')][_0x11be('0x10c')](db['FaxMessage'],{'as':_0x11be('0x14e'),'onDelete':'cascade','foreignKey':'FaxInteractionId'});db[_0x11be('0x115')][_0x11be('0x11a')](db['FaxAccount'],{'as':_0x11be('0x15f'),'foreignKey':'FaxAccountId'});db[_0x11be('0x115')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':'ContactId'});db[_0x11be('0x115')]['belongsTo'](db[_0x11be('0x10')],{'as':_0x11be('0x161'),'foreignKey':'UserId'});db[_0x11be('0x115')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x173'),'as':'Tags'});db[_0x11be('0x115')][_0x11be('0x11c')](db['Tag'],{'through':_0x11be('0x173'),'as':_0x11be('0x165')});db[_0x11be('0x115')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x166'),'through':_0x11be('0x123'),'foreignKey':_0x11be('0x174')});db[_0x11be('0x4e')][_0x11be('0x11a')](db['User'],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x10')});db[_0x11be('0x4e')][_0x11be('0x11a')](db[_0x11be('0x115')],{'as':_0x11be('0x16a'),'foreignKey':_0x11be('0x174')});db[_0x11be('0x4e')][_0x11be('0x11a')](db['CmContact'],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160')});db[_0x11be('0x4e')]['belongsTo'](db[_0x11be('0x175')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x11be('0x4e')][_0x11be('0x11a')](db['FaxAccount'],{'as':_0x11be('0x15f'),'foreignKey':'FaxAccountId'});db[_0x11be('0x50')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x14b'),'through':_0x11be('0x34')});db[_0x11be('0x50')][_0x11be('0x11c')](db['Team'],{'through':_0x11be('0x176'),'as':'Teams'});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0x4b')],{});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':'ContactId'});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0x115')],{});db[_0x11be('0x52')]['belongsTo'](db[_0x11be('0x4e')],{});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0x10')],{});db[_0x11be('0x52')][_0x11be('0x11a')](db[_0x11be('0x50')],{});db[_0x11be('0x53')]['hasMany'](db[_0x11be('0x7c')],{'as':_0x11be('0x170'),'foreignKey':_0x11be('0x177'),'onDelete':_0x11be('0x109')});db[_0x11be('0x53')][_0x11be('0x10c')](db[_0x11be('0x7b')],{'as':'Answers','foreignKey':_0x11be('0x177')});db[_0x11be('0x53')][_0x11be('0x10c')](db['SmsMessage'],{'as':_0x11be('0x14e'),'foreignKey':_0x11be('0x177')});db['SmsAccount'][_0x11be('0x10c')](db['SmsInteraction'],{'as':_0x11be('0x159')});db['SmsAccount'][_0x11be('0x10c')](db['SmsApplication'],{'as':'Applications'});db[_0x11be('0x53')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db['SmsAccount'][_0x11be('0x11a')](db[_0x11be('0x81')],{'as':_0x11be('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db['SmsAccount'][_0x11be('0x11c')](db['User'],{'as':'Agents','through':'user_has_sms_accounts'});db['SmsApplication'][_0x11be('0x11a')](db[_0x11be('0x10')],{'onDelete':_0x11be('0x16e')});db['SmsApplication'][_0x11be('0x11a')](db['SmsQueue'],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x178')]['belongsTo'](db[_0x11be('0x53')],{'onDelete':_0x11be('0x16e')});db[_0x11be('0x178')][_0x11be('0x11a')](db[_0x11be('0x80')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x147')});db[_0x11be('0x178')][_0x11be('0x11a')](db[_0x11be('0x164')],{'onDelete':'restrict','foreignKey':_0x11be('0x16f')});db[_0x11be('0x113')][_0x11be('0x10c')](db['SmsMessage'],{'as':_0x11be('0x14e'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x179')});db[_0x11be('0x113')][_0x11be('0x11a')](db[_0x11be('0x53')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x177')});db[_0x11be('0x113')]['belongsTo'](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x113')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':'Owner','foreignKey':_0x11be('0x10a')});db[_0x11be('0x113')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x17a'),'as':_0x11be('0x163')});db[_0x11be('0x113')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x17a'),'as':_0x11be('0x165')});db[_0x11be('0x113')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':'Users','through':'user_has_sms_interactions','foreignKey':_0x11be('0x179')});db[_0x11be('0x56')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':'User'});db['SmsMessage'][_0x11be('0x11a')](db[_0x11be('0x6e')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160')});db[_0x11be('0x56')][_0x11be('0x11a')](db['SmsInteraction'],{'onDelete':_0x11be('0x109'),'as':'Interaction','foreignKey':'SmsInteractionId'});db[_0x11be('0x56')][_0x11be('0x11a')](db[_0x11be('0x53')],{'as':'Account','foreignKey':_0x11be('0x177')});db['SmsQueue'][_0x11be('0x11c')](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x36'),'foreignKey':'SmsQueueId'});db['SmsQueue']['belongsToMany'](db['Team'],{'through':'team_has_sms_queues','as':_0x11be('0x15e')});db[_0x11be('0x5a')][_0x11be('0x10c')](db['Disposition'],{'as':_0x11be('0x170'),'foreignKey':_0x11be('0x17b'),'onDelete':_0x11be('0x109')});db[_0x11be('0x5a')]['hasMany'](db[_0x11be('0x7b')],{'as':'Answers','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x11be('0x10c')](db[_0x11be('0x5d')],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0x11be('0x5a')]['hasMany'](db['OpenchannelMessage'],{'as':_0x11be('0x14e'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount']['hasMany'](db[_0x11be('0x5c')],{'as':'Applications','foreignKey':_0x11be('0x17b')});db[_0x11be('0x5a')][_0x11be('0x11a')](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db['OpenchannelAccount']['belongsTo'](db[_0x11be('0x81')],{'as':_0x11be('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x11be('0x5a')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x14b'),'through':'user_has_openchannel_accounts'});db['OpenchannelApplication'][_0x11be('0x11a')](db[_0x11be('0x10')],{'onDelete':_0x11be('0x16e')});db['OpenchannelApplication'][_0x11be('0x11a')](db['OpenchannelQueue'],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x17c')});db[_0x11be('0x5c')][_0x11be('0x11a')](db[_0x11be('0x5a')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x17b')});db[_0x11be('0x5c')][_0x11be('0x11a')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x11be('0x147')});db['OpenchannelApplication']['belongsTo'](db[_0x11be('0x164')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x16f')});db[_0x11be('0x5d')][_0x11be('0x10c')](db[_0x11be('0x5f')],{'as':_0x11be('0x14e'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x17d')});db[_0x11be('0x5d')][_0x11be('0x11a')](db[_0x11be('0x5a')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x17b')});db[_0x11be('0x5d')][_0x11be('0x11a')](db['CmContact'],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db['OpenchannelInteraction'][_0x11be('0x11a')](db['User'],{'as':_0x11be('0x161'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x5d')]['belongsToMany'](db[_0x11be('0x164')],{'through':'openchannel_interaction_has_tags','as':_0x11be('0x163')});db[_0x11be('0x5d')]['belongsToMany'](db[_0x11be('0x164')],{'through':_0x11be('0x17e'),'as':_0x11be('0x165')});db[_0x11be('0x5d')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':'Users','through':'user_has_openchannel_interactions','foreignKey':_0x11be('0x17d')});db[_0x11be('0x5f')]['belongsTo'](db[_0x11be('0x10')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x10')});db[_0x11be('0x5f')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160')});db['OpenchannelMessage'][_0x11be('0x11a')](db[_0x11be('0x5d')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x16a'),'foreignKey':_0x11be('0x17d')});db[_0x11be('0x5f')]['belongsTo'](db[_0x11be('0x175')],{'as':_0x11be('0x175'),'foreignKey':_0x11be('0x17f')});db[_0x11be('0x5f')][_0x11be('0x11a')](db[_0x11be('0x5a')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x17b')});db[_0x11be('0x61')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x14b'),'through':_0x11be('0x12d'),'foreignKey':_0x11be('0x17c')});db[_0x11be('0x61')][_0x11be('0x11c')](db[_0x11be('0xdd')],{'through':_0x11be('0x180'),'as':_0x11be('0x15e')});db['ChatWebsite'][_0x11be('0x10c')](db[_0x11be('0x7c')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0x11be('0x109')});db[_0x11be('0x62')][_0x11be('0x10c')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x11be('0x16b')});db[_0x11be('0x62')]['hasMany'](db[_0x11be('0x6c')],{'as':_0x11be('0x181')});db[_0x11be('0x62')][_0x11be('0x10c')](db[_0x11be('0x66')],{'as':_0x11be('0x159')});db['ChatWebsite'][_0x11be('0x10c')](db['ChatApplication'],{'as':_0x11be('0x13d')});db['ChatWebsite'][_0x11be('0x10c')](db['ChatMessage'],{'as':_0x11be('0x14e')});db['ChatWebsite'][_0x11be('0x11a')](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db[_0x11be('0x62')]['belongsTo'](db[_0x11be('0x80')],{'as':_0x11be('0x80'),'foreignKey':_0x11be('0x147')});db[_0x11be('0x62')][_0x11be('0x11a')](db[_0x11be('0x3d')],{'as':_0x11be('0x3d'),'foreignKey':_0x11be('0x155')});db[_0x11be('0x62')][_0x11be('0x11a')](db[_0x11be('0x81')],{'as':_0x11be('0x148'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x11be('0x62')]['belongsToMany'](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x131')});db[_0x11be('0x182')][_0x11be('0x11a')](db[_0x11be('0x5a')],{});db[_0x11be('0x182')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':'List','foreignKey':_0x11be('0x15b')});db[_0x11be('0x182')][_0x11be('0x11a')](db['CmContact'],{'as':'Contact','foreignKey':_0x11be('0x154')});db['OpenchannelQueueReport'][_0x11be('0x11a')](db[_0x11be('0x5d')],{});db[_0x11be('0x182')]['belongsTo'](db[_0x11be('0x5f')],{});db[_0x11be('0x182')][_0x11be('0x11a')](db[_0x11be('0x10')],{});db[_0x11be('0x182')][_0x11be('0x11a')](db['OpenchannelQueue'],{});db[_0x11be('0x65')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':_0x11be('0x183'),'foreignKey':'UserId','onDelete':_0x11be('0x16e')});db[_0x11be('0x65')][_0x11be('0x11a')](db[_0x11be('0x69')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0x11be('0x16e')});db[_0x11be('0x65')][_0x11be('0x11a')](db['ChatWebsite'],{'as':_0x11be('0x184'),'foreignKey':'ChatWebsiteId','onDelete':_0x11be('0x16e')});db[_0x11be('0x65')]['belongsTo'](db[_0x11be('0x164')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x16f')});db[_0x11be('0x66')][_0x11be('0x10c')](db['ChatMessage'],{'as':_0x11be('0x14e'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x185')});db['ChatInteraction'][_0x11be('0x11a')](db[_0x11be('0x62')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x16b')});db[_0x11be('0x66')]['belongsTo'](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x66')][_0x11be('0x11a')](db[_0x11be('0x10')],{'as':_0x11be('0x161'),'foreignKey':'UserId'});db['ChatInteraction']['belongsToMany'](db[_0x11be('0x164')],{'through':_0x11be('0x186'),'as':_0x11be('0x163')});db[_0x11be('0x66')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x186'),'as':_0x11be('0x165')});db[_0x11be('0x66')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':'Users','through':_0x11be('0x122'),'foreignKey':_0x11be('0x185')});db[_0x11be('0x67')][_0x11be('0x11a')](db[_0x11be('0x10')],{'onDelete':'cascade','as':_0x11be('0x10')});db[_0x11be('0x67')]['belongsTo'](db[_0x11be('0x6e')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160'),'foreignKey':'ContactId'});db[_0x11be('0x67')][_0x11be('0x11a')](db['ChatInteraction'],{'onDelete':_0x11be('0x109'),'as':'Interaction','foreignKey':_0x11be('0x185')});db['ChatMessage'][_0x11be('0x11a')](db[_0x11be('0x175')],{'as':_0x11be('0x175'),'foreignKey':_0x11be('0x17f')});db['ChatMessage'][_0x11be('0x11a')](db['ChatWebsite'],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x16b')});db[_0x11be('0x16c')]['hasMany'](db[_0x11be('0x175')],{'as':_0x11be('0x169'),'foreignKey':_0x11be('0x16d'),'onDelete':_0x11be('0x109'),'hooks':!![]});db[_0x11be('0x16c')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x16c')][_0x11be('0x11a')](db['ChatWebsite'],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x16b')});db[_0x11be('0x69')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':'Agents','through':_0x11be('0x31'),'hooks':!![]});db[_0x11be('0x69')]['belongsToMany'](db[_0x11be('0xdd')],{'through':_0x11be('0x187'),'as':_0x11be('0x15e')});db[_0x11be('0x6b')][_0x11be('0x10c')](db[_0x11be('0xcb')],{'as':_0x11be('0x14e'),'foreignKey':_0x11be('0x188'),'onDelete':'cascade'});db['ChatGroup'][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x13f'),'through':'chat_group_has_users'});db[_0x11be('0x6c')][_0x11be('0x11a')](db[_0x11be('0x62')],{'as':_0x11be('0x184'),'foreignKey':_0x11be('0x16b')});db[_0x11be('0x189')]['hasMany'](db[_0x11be('0x6e')],{'as':_0x11be('0x11e'),'foreignKey':_0x11be('0x18a')});db['CmContact']['hasMany'](db[_0x11be('0x18b')],{'as':_0x11be('0x141'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x6e')][_0x11be('0x10c')](db[_0x11be('0x73')],{'as':_0x11be('0x10f'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x6e')][_0x11be('0x10c')](db[_0x11be('0x74')],{'as':_0x11be('0x142'),'foreignKey':_0x11be('0x154')});db[_0x11be('0x6e')][_0x11be('0x10c')](db[_0x11be('0x75')],{'as':'ReportAgentPreview','foreignKey':'ContactId'});db[_0x11be('0x6e')]['hasMany'](db[_0x11be('0xd1')],{'as':'JscriptySessions','foreignKey':_0x11be('0x154')});db[_0x11be('0x6e')][_0x11be('0x10c')](db['OpenchannelInteraction'],{'as':_0x11be('0x111'),'foreignKey':_0x11be('0x154'),'onDelete':'restrict'});db['CmContact'][_0x11be('0x10c')](db[_0x11be('0x66')],{'as':'ChatInteractions','foreignKey':_0x11be('0x154'),'onDelete':'restrict'});db[_0x11be('0x6e')][_0x11be('0x10c')](db[_0x11be('0x113')],{'as':_0x11be('0x114'),'foreignKey':_0x11be('0x154'),'onDelete':'restrict'});db[_0x11be('0x6e')][_0x11be('0x10c')](db['FaxInteraction'],{'as':_0x11be('0x116'),'foreignKey':'ContactId','onDelete':_0x11be('0x16e')});db['CmContact'][_0x11be('0x10c')](db[_0x11be('0x42')],{'as':'MailInteractions','foreignKey':_0x11be('0x154'),'onDelete':_0x11be('0x16e')});db[_0x11be('0x6e')]['belongsTo'](db[_0x11be('0x189')],{'as':_0x11be('0x18c'),'foreignKey':_0x11be('0x18a')});db[_0x11be('0x6e')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b'),'onDelete':'cascade'});db['CmContact'][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x166'),'through':'cm_user_has_contacts'});db[_0x11be('0x6e')][_0x11be('0x11c')](db[_0x11be('0x164')],{'as':'Tags','through':_0x11be('0x18d')});db[_0x11be('0x6e')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x18d'),'as':'ThroughTags'});db[_0x11be('0x18b')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154'),'onDelete':_0x11be('0x109')});db['CmHopper'][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':'List','foreignKey':_0x11be('0x15b'),'onDelete':_0x11be('0x109')});db[_0x11be('0x18b')]['belongsTo'](db[_0x11be('0x10')],{'as':_0x11be('0x183'),'foreignKey':_0x11be('0x10a')});db[_0x11be('0x18b')][_0x11be('0x11a')](db[_0x11be('0x1a')],{'as':_0x11be('0x18e'),'foreignKey':_0x11be('0x140'),'onDelete':_0x11be('0x109')});db['CmHopper'][_0x11be('0x11a')](db[_0x11be('0xe0')],{'as':_0x11be('0xe0'),'foreignKey':_0x11be('0x18f'),'onDelete':'cascade'});db[_0x11be('0x18b')]['belongsTo'](db[_0x11be('0x10')],{'as':_0x11be('0x161'),'foreignKey':_0x11be('0x190')});db[_0x11be('0x71')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154'),'onDelete':'cascade'});db[_0x11be('0x71')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0x11be('0x15b'),'onDelete':'cascade'});db[_0x11be('0x71')][_0x11be('0x11a')](db[_0x11be('0x1a')],{'as':_0x11be('0x18e'),'foreignKey':_0x11be('0x140'),'onDelete':'cascade'});db[_0x11be('0x71')][_0x11be('0x11a')](db[_0x11be('0xe0')],{'as':_0x11be('0xe0'),'foreignKey':_0x11be('0x18f'),'onDelete':'cascade'});db['Automation']['hasMany'](db[_0x11be('0x7e')],{'as':{'plural':_0x11be('0x191'),'singular':_0x11be('0x192')},'foreignKey':_0x11be('0x193'),'onDelete':_0x11be('0x109'),'hooks':!![]});db[_0x11be('0x79')][_0x11be('0x10c')](db['Condition'],{'as':{'plural':_0x11be('0x194'),'singular':_0x11be('0x195')},'foreignKey':'AutomationAnyId','onDelete':'cascade','hooks':!![]});db[_0x11be('0x79')][_0x11be('0x10c')](db['Action'],{'as':_0x11be('0x196'),'foreignKey':_0x11be('0x197'),'onDelete':_0x11be('0x109'),'hooks':!![]});db[_0x11be('0x7c')][_0x11be('0x10c')](db[_0x11be('0x7c')],{'as':_0x11be('0x170'),'foreignKey':'ParentId','onDelete':_0x11be('0x109')});db[_0x11be('0x80')][_0x11be('0x10c')](db[_0x11be('0x80')],{'as':_0x11be('0x198'),'foreignKey':_0x11be('0x147'),'onDelete':_0x11be('0x109'),'hooks':!![],'required':![]});db['Interval'][_0x11be('0x10c')](db['VoiceExtension'],{'as':_0x11be('0x10e'),'foreignKey':_0x11be('0x147'),'onDelete':_0x11be('0x16e')});db[_0x11be('0x80')][_0x11be('0x10c')](db[_0x11be('0x45')],{'as':_0x11be('0x199'),'foreignKey':'IntervalId'});db['Interval'][_0x11be('0x10c')](db[_0x11be('0x65')],{'as':_0x11be('0x19a'),'foreignKey':_0x11be('0x147')});db[_0x11be('0x80')][_0x11be('0x10c')](db[_0x11be('0x4d')],{'as':_0x11be('0x19b'),'foreignKey':_0x11be('0x147')});db[_0x11be('0x80')]['hasMany'](db[_0x11be('0x178')],{'as':_0x11be('0x19c'),'foreignKey':_0x11be('0x147')});db[_0x11be('0x86')][_0x11be('0x11a')](db['MailAccount'],{});db[_0x11be('0x86')][_0x11be('0x11a')](db[_0x11be('0x94')],{'foreignKey':_0x11be('0x19d')});db[_0x11be('0x86')][_0x11be('0x11a')](db[_0x11be('0x92')],{'foreignKey':_0x11be('0x19e')});db[_0x11be('0x88')][_0x11be('0x11c')](db['VoiceMusicOnHold'],{'as':_0x11be('0x19f'),'through':_0x11be('0x1a0'),'onDelete':_0x11be('0x16e')});db[_0x11be('0x164')]['belongsToMany'](db['CmContact'],{'through':_0x11be('0x18d')});db['Tag']['belongsToMany'](db[_0x11be('0x66')],{'through':'chat_interaction_has_tags'});db[_0x11be('0x164')][_0x11be('0x11c')](db[_0x11be('0x42')],{'through':_0x11be('0x162')});db[_0x11be('0x164')][_0x11be('0x11c')](db['SmsInteraction'],{'through':_0x11be('0x17a')});db[_0x11be('0x164')][_0x11be('0x11c')](db[_0x11be('0x115')],{'through':'fax_interaction_has_tags'});db[_0x11be('0x164')]['belongsToMany'](db['OpenchannelInteraction'],{'through':_0x11be('0x17e')});db[_0x11be('0x164')][_0x11be('0x11c')](db[_0x11be('0x118')],{'through':_0x11be('0x1a1')});db['Trigger'][_0x11be('0x10c')](db[_0x11be('0x7e')],{'as':{'plural':_0x11be('0x1a2'),'singular':_0x11be('0x1a3')},'foreignKey':_0x11be('0x1a4'),'onDelete':'cascade','hooks':!![]});db[_0x11be('0x8c')][_0x11be('0x10c')](db[_0x11be('0x7e')],{'as':{'plural':'AnyConditions','singular':_0x11be('0x1a5')},'foreignKey':_0x11be('0x1a6'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0x11be('0x10c')](db['Action'],{'as':'Actions','foreignKey':'TriggerId','onDelete':_0x11be('0x109'),'hooks':!![]});db[_0x11be('0x92')][_0x11be('0x10c')](db[_0x11be('0x1a7')],{'as':_0x11be('0x1a8'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x19e'),'hooks':!![]});db['AnalyticDefaultReport'][_0x11be('0x10c')](db[_0x11be('0x1a7')],{'as':_0x11be('0x1a8'),'onDelete':_0x11be('0x109'),'foreignKey':'DefaultReportId'});db[_0x11be('0x97')][_0x11be('0x10c')](db[_0x11be('0x1a7')],{'as':_0x11be('0x1a8'),'onDelete':_0x11be('0x109'),'foreignKey':'MetricId'});db[_0x11be('0x1a7')][_0x11be('0x11a')](db['AnalyticMetric'],{'foreignKey':_0x11be('0x1a9')});db[_0x11be('0x9b')][_0x11be('0x10c')](db[_0x11be('0x1aa')],{'as':_0x11be('0x1ab'),'onDelete':'cascade','foreignKey':_0x11be('0x1ac')});db['SalesforceConfiguration']['hasMany'](db[_0x11be('0x9e')],{'as':_0x11be('0x1ad'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0x1aa')][_0x11be('0x10c')](db['SalesforceField'],{'as':_0x11be('0x1af'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0x1aa')][_0x11be('0x10c')](db['SalesforceField'],{'as':_0x11be('0x1a8'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0x1aa')]['belongsTo'](db[_0x11be('0x9b')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0x9e')][_0x11be('0x10c')](db[_0x11be('0x9e')],{'as':_0x11be('0x1b2'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0x9e')][_0x11be('0x10c')](db[_0x11be('0x9e')],{'as':_0x11be('0x1b3'),'foreignKey':'DescriptionId'});db['SalesforceField'][_0x11be('0x10c')](db[_0x11be('0x9e')],{'as':'Field','foreignKey':'FieldId'});db[_0x11be('0x9e')][_0x11be('0x11a')](db[_0x11be('0x8e')],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db[_0x11be('0x9f')]['hasMany'](db[_0x11be('0xa1')],{'as':'Configurations','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xa1')][_0x11be('0x10c')](db[_0x11be('0xa2')],{'as':_0x11be('0x1ad'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xa1')][_0x11be('0x10c')](db[_0x11be('0xa2')],{'as':_0x11be('0x1af'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b0')});db['SugarcrmConfiguration'][_0x11be('0x10c')](db['SugarcrmField'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x11be('0x1b1')});db['SugarcrmConfiguration'][_0x11be('0x11a')](db['SugarcrmAccount'],{'as':_0x11be('0x15f'),'foreignKey':'AccountId'});db[_0x11be('0xa2')][_0x11be('0x10c')](db[_0x11be('0xa2')],{'as':_0x11be('0x1b2'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xa2')]['hasMany'](db[_0x11be('0xa2')],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0xa2')]['hasMany'](db[_0x11be('0xa2')],{'as':_0x11be('0x1b5'),'foreignKey':'FieldId'});db[_0x11be('0xa2')][_0x11be('0x11a')](db['Variable'],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db[_0x11be('0xa4')]['hasMany'](db[_0x11be('0x1b6')],{'as':_0x11be('0x1ab'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x11be('0x1b6')]['hasMany'](db[_0x11be('0xa6')],{'as':_0x11be('0x1ad'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0x1b6')][_0x11be('0x10c')](db[_0x11be('0xa6')],{'as':'Descriptions','onDelete':_0x11be('0x109'),'foreignKey':'DescriptionId'});db[_0x11be('0x1b6')][_0x11be('0x10c')](db[_0x11be('0xa6')],{'as':_0x11be('0x1a8'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0x1b6')][_0x11be('0x11a')](db['DeskAccount'],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0x1b6')][_0x11be('0x11c')](db['Tag'],{'through':_0x11be('0x1b7')});db[_0x11be('0xa6')][_0x11be('0x10c')](db[_0x11be('0xa6')],{'as':_0x11be('0x1b2'),'foreignKey':'SubjectId'});db[_0x11be('0xa6')][_0x11be('0x10c')](db[_0x11be('0xa6')],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0xa6')][_0x11be('0x10c')](db[_0x11be('0xa6')],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db['DeskField']['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0x11be('0x1b4')});db['ZohoAccount']['hasMany'](db[_0x11be('0x1b8')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x11be('0x1ac')});db[_0x11be('0x1b8')][_0x11be('0x10c')](db[_0x11be('0xa9')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x11be('0x1ae')});db[_0x11be('0x1b8')][_0x11be('0x10c')](db['ZohoField'],{'as':_0x11be('0x1af'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0x1b8')][_0x11be('0x10c')](db[_0x11be('0xa9')],{'as':_0x11be('0x1a8'),'onDelete':'cascade','foreignKey':_0x11be('0x1b1')});db[_0x11be('0x1b8')][_0x11be('0x11a')](db[_0x11be('0xa8')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xa9')][_0x11be('0x10c')](db['ZohoField'],{'as':_0x11be('0x1b2'),'foreignKey':_0x11be('0x1ae')});db['ZohoField']['hasMany'](db[_0x11be('0xa9')],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db['ZohoField'][_0x11be('0x10c')](db[_0x11be('0xa9')],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0xa9')][_0x11be('0x11a')](db[_0x11be('0x8e')],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db['ZendeskAccount']['hasMany'](db[_0x11be('0xab')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db[_0x11be('0xab')]['hasMany'](db['ZendeskField'],{'as':_0x11be('0x1ad'),'foreignKey':_0x11be('0x1ae')});db['ZendeskConfiguration']['hasMany'](db[_0x11be('0xad')],{'as':_0x11be('0x1af'),'foreignKey':'DescriptionId'});db[_0x11be('0xab')][_0x11be('0x10c')](db[_0x11be('0xad')],{'as':_0x11be('0x1a8'),'foreignKey':'FieldId'});db['ZendeskConfiguration'][_0x11be('0x11a')](db[_0x11be('0x1b9')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xab')][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x1ba')});db[_0x11be('0xad')]['hasMany'](db[_0x11be('0xad')],{'as':_0x11be('0x1b2'),'foreignKey':'SubjectId'});db['ZendeskField'][_0x11be('0x10c')](db[_0x11be('0xad')],{'as':'Description','foreignKey':_0x11be('0x1b0')});db[_0x11be('0xad')][_0x11be('0x10c')](db[_0x11be('0xad')],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0xad')]['belongsTo'](db[_0x11be('0x8e')],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db[_0x11be('0xaf')][_0x11be('0x10c')](db[_0x11be('0xb1')],{'as':'Configurations','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db['FreshdeskConfiguration']['hasMany'](db[_0x11be('0xb3')],{'as':_0x11be('0x1ad'),'onDelete':'cascade','foreignKey':_0x11be('0x1ae')});db[_0x11be('0xb1')][_0x11be('0x10c')](db[_0x11be('0xb3')],{'as':_0x11be('0x1af'),'onDelete':_0x11be('0x109'),'foreignKey':'DescriptionId'});db[_0x11be('0xb1')][_0x11be('0x10c')](db['FreshdeskField'],{'as':'Fields','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1b1')});db['FreshdeskConfiguration'][_0x11be('0x11a')](db[_0x11be('0xaf')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db['FreshdeskConfiguration'][_0x11be('0x11c')](db[_0x11be('0x164')],{'through':_0x11be('0x1bb')});db[_0x11be('0xb3')][_0x11be('0x10c')](db[_0x11be('0xb3')],{'as':'Subject','foreignKey':_0x11be('0x1ae')});db[_0x11be('0xb3')][_0x11be('0x10c')](db[_0x11be('0xb3')],{'as':'Description','foreignKey':_0x11be('0x1b0')});db[_0x11be('0xb3')][_0x11be('0x10c')](db[_0x11be('0xb3')],{'as':'Field','foreignKey':_0x11be('0x1b1')});db[_0x11be('0xb3')]['belongsTo'](db['Variable'],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db[_0x11be('0xb5')]['hasMany'](db[_0x11be('0xb6')],{'as':_0x11be('0x1ab'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xb6')][_0x11be('0x10c')](db[_0x11be('0xb8')],{'as':_0x11be('0x1ad'),'foreignKey':'SubjectId'});db['VtigerConfiguration'][_0x11be('0x10c')](db[_0x11be('0xb8')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x11be('0xb6')][_0x11be('0x10c')](db[_0x11be('0xb8')],{'as':_0x11be('0x1a8'),'foreignKey':'FieldId'});db['VtigerConfiguration'][_0x11be('0x11a')](db['VtigerAccount'],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xb8')][_0x11be('0x10c')](db[_0x11be('0xb8')],{'as':_0x11be('0x1b2'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xb8')]['hasMany'](db[_0x11be('0xb8')],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db['VtigerField'][_0x11be('0x10c')](db[_0x11be('0xb8')],{'as':'Field','foreignKey':_0x11be('0x1b1')});db[_0x11be('0xb8')]['belongsTo'](db[_0x11be('0x8e')],{'as':'Variable','foreignKey':'VariableId'});db[_0x11be('0xba')]['hasMany'](db['ServicenowConfiguration'],{'as':_0x11be('0x1ab'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db['ServicenowConfiguration']['hasMany'](db[_0x11be('0xbc')],{'as':'Subjects','foreignKey':_0x11be('0x1ae')});db['ServicenowConfiguration'][_0x11be('0x10c')](db[_0x11be('0xbc')],{'as':_0x11be('0x1af'),'foreignKey':'DescriptionId'});db[_0x11be('0x1bc')][_0x11be('0x10c')](db[_0x11be('0xbc')],{'as':'Fields','foreignKey':_0x11be('0x1b1')});db[_0x11be('0x1bc')][_0x11be('0x11a')](db[_0x11be('0xba')],{'as':'Account','foreignKey':_0x11be('0x1ac')});db[_0x11be('0xbc')][_0x11be('0x10c')](db[_0x11be('0xbc')],{'as':'Subject','foreignKey':_0x11be('0x1ae')});db[_0x11be('0xbc')]['hasMany'](db[_0x11be('0xbc')],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0xbc')][_0x11be('0x10c')](db['ServicenowField'],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0xbc')][_0x11be('0x11a')](db[_0x11be('0x8e')],{'as':_0x11be('0x8e'),'foreignKey':'VariableId'});db[_0x11be('0xbe')][_0x11be('0x10c')](db[_0x11be('0xc0')],{'as':_0x11be('0x1ab'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db['Dynamics365Configuration']['hasMany'](db[_0x11be('0xc1')],{'as':'Subjects','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xc0')][_0x11be('0x10c')](db[_0x11be('0xc1')],{'as':_0x11be('0x1af'),'onDelete':'cascade','foreignKey':_0x11be('0x1b0')});db[_0x11be('0xc0')][_0x11be('0x10c')](db[_0x11be('0xc1')],{'as':_0x11be('0x1a8'),'onDelete':'cascade','foreignKey':_0x11be('0x1b1')});db['Dynamics365Configuration'][_0x11be('0x11a')](db[_0x11be('0xbe')],{'as':_0x11be('0x15f'),'foreignKey':'AccountId'});db[_0x11be('0xc1')]['hasMany'](db[_0x11be('0xc1')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x11be('0xc1')]['hasMany'](db['Dynamics365Field'],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0xc1')][_0x11be('0x10c')](db[_0x11be('0xc1')],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0xc1')][_0x11be('0x11a')](db['Variable'],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db['FreshsalesAccount'][_0x11be('0x10c')](db[_0x11be('0xc5')],{'as':_0x11be('0x1ab'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xc5')][_0x11be('0x10c')](db['FreshsalesField'],{'as':_0x11be('0x1ad'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xc5')][_0x11be('0x10c')](db['FreshsalesField'],{'as':_0x11be('0x1af'),'foreignKey':_0x11be('0x1b0')});db[_0x11be('0xc5')][_0x11be('0x10c')](db[_0x11be('0xc7')],{'as':_0x11be('0x1a8'),'foreignKey':'FieldId'});db['FreshsalesConfiguration'][_0x11be('0x11a')](db[_0x11be('0xc3')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1ac')});db[_0x11be('0xc7')][_0x11be('0x10c')](db[_0x11be('0xc7')],{'as':_0x11be('0x1b2'),'foreignKey':_0x11be('0x1ae')});db[_0x11be('0xc7')][_0x11be('0x10c')](db['FreshsalesField'],{'as':_0x11be('0x1b3'),'foreignKey':_0x11be('0x1b0')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0x11be('0x1b5'),'foreignKey':_0x11be('0x1b1')});db[_0x11be('0xc7')][_0x11be('0x11a')](db[_0x11be('0x8e')],{'as':_0x11be('0x8e'),'foreignKey':_0x11be('0x1b4')});db[_0x11be('0xca')][_0x11be('0x11a')](db['ChatWebsite'],{});db[_0x11be('0xca')][_0x11be('0x11a')](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':'ListId'});db[_0x11be('0xca')][_0x11be('0x11a')](db['CmContact'],{'as':_0x11be('0x160'),'foreignKey':'ContactId'});db['ChatQueueReport']['belongsTo'](db[_0x11be('0x66')],{});db[_0x11be('0xca')][_0x11be('0x11a')](db[_0x11be('0x67')],{});db[_0x11be('0xca')][_0x11be('0x11a')](db[_0x11be('0x10')],{});db[_0x11be('0xca')][_0x11be('0x11a')](db[_0x11be('0x69')],{});db[_0x11be('0xcb')][_0x11be('0x11a')](db[_0x11be('0x10')],{'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1bd')});db[_0x11be('0xcb')][_0x11be('0x11a')](db['User'],{'onDelete':'cascade','foreignKey':_0x11be('0x1be')});db[_0x11be('0xd1')][_0x11be('0x10c')](db['JscriptyQuestionReport'],{'foreignKey':_0x11be('0x1bf'),'onDelete':_0x11be('0x109')});db[_0x11be('0xd1')][_0x11be('0x10c')](db[_0x11be('0xcd')],{'foreignKey':'SessionId','onDelete':'cascade'});db['SmsQueueReport']['belongsTo'](db[_0x11be('0x53')],{});db[_0x11be('0xd2')][_0x11be('0x11a')](db['CmList'],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db[_0x11be('0xd2')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':'ContactId'});db[_0x11be('0xd2')][_0x11be('0x11a')](db['SmsInteraction'],{});db[_0x11be('0xd2')][_0x11be('0x11a')](db[_0x11be('0x56')],{});db[_0x11be('0xd2')][_0x11be('0x11a')](db[_0x11be('0x10')],{});db[_0x11be('0xd2')][_0x11be('0x11a')](db[_0x11be('0x58')],{});db['JscriptyProject'][_0x11be('0x10c')](db[_0x11be('0xd1')],{'foreignKey':'ProjectId'});db[_0x11be('0xd7')][_0x11be('0x10c')](db[_0x11be('0xcf')],{'foreignKey':'ProjectId'});db[_0x11be('0xd7')][_0x11be('0x10c')](db[_0x11be('0xcd')],{'foreignKey':_0x11be('0x1c0')});db[_0x11be('0xdb')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x166'),'through':_0x11be('0x1c1')});db['Team'][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x14b'),'through':_0x11be('0x121')});db[_0x11be('0xdd')][_0x11be('0x11c')](db['VoiceQueue'],{'through':_0x11be('0x1c2'),'as':_0x11be('0x126')});db[_0x11be('0xdd')][_0x11be('0x11c')](db[_0x11be('0x3f')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0x11be('0xdd')][_0x11be('0x11c')](db[_0x11be('0x69')],{'through':_0x11be('0x187'),'as':_0x11be('0x1c3')});db[_0x11be('0xdd')][_0x11be('0x11c')](db['FaxQueue'],{'through':_0x11be('0x176'),'as':_0x11be('0x12a')});db[_0x11be('0xdd')][_0x11be('0x11c')](db[_0x11be('0x58')],{'through':_0x11be('0x1c4'),'as':_0x11be('0x12b')});db[_0x11be('0xdd')][_0x11be('0x11c')](db['OpenchannelQueue'],{'through':_0x11be('0x180'),'as':_0x11be('0x12c')});db[_0x11be('0xdd')][_0x11be('0x11c')](db[_0x11be('0x12e')],{'through':_0x11be('0x1c5'),'as':'WhatsappQueues'});db['Team'][_0x11be('0x11c')](db['VoicePrefix'],{'through':_0x11be('0x104'),'as':'VoicePrefixes'});db[_0x11be('0xe0')]['hasMany'](db[_0x11be('0x18b')],{'as':'Hoppers','foreignKey':_0x11be('0x18f')});db[_0x11be('0xe0')][_0x11be('0x10c')](db['CmHopperFinal'],{'as':_0x11be('0x10f'),'foreignKey':_0x11be('0x18f')});db[_0x11be('0xe0')][_0x11be('0x10c')](db[_0x11be('0x74')],{'as':_0x11be('0x142'),'foreignKey':'CampaignId'});db[_0x11be('0xe0')][_0x11be('0x10c')](db[_0x11be('0x71')],{'as':'HopperBlacks','foreignKey':_0x11be('0x18f')});db[_0x11be('0xe0')]['belongsTo'](db[_0x11be('0x2a')],{'as':_0x11be('0x2a'),'foreignKey':_0x11be('0x145')});db[_0x11be('0xe0')][_0x11be('0x11a')](db[_0x11be('0x2a')],{'as':_0x11be('0x1c6'),'foreignKey':_0x11be('0x146')});db['Campaign'][_0x11be('0x11a')](db[_0x11be('0x80')],{'as':'Interval','foreignKey':_0x11be('0x147')});db['Campaign'][_0x11be('0x11a')](db['SquareProject'],{'as':_0x11be('0xdb'),'foreignKey':_0x11be('0x1c7')});db['Campaign']['belongsToMany'](db[_0x11be('0xed')],{'as':_0x11be('0x120'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0x11be('0x11c')](db[_0x11be('0xed')],{'as':'BlackLists','through':_0x11be('0x1c8')});db[_0x11be('0x175')]['belongsTo'](db[_0x11be('0x16c')],{'as':'ChatOfflineMessage','foreignKey':_0x11be('0x16d')});db['MailTransferReport'][_0x11be('0x11a')](db['MailMessage'],{});db[_0x11be('0x1c9')][_0x11be('0x11a')](db[_0x11be('0x42')],{});db[_0x11be('0x1c9')][_0x11be('0x11a')](db['MailAccount'],{'foreignKey':_0x11be('0x1ca'),'as':'FromAccount'});db['MailTransferReport']['belongsTo'](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cb'),'as':_0x11be('0x1cc')});db[_0x11be('0x1c9')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cd'),'as':'ToAgent'});db[_0x11be('0x1c9')][_0x11be('0x11a')](db['MailQueue'],{'foreignKey':_0x11be('0x1ce'),'as':_0x11be('0x1cf')});db[_0x11be('0x1c9')][_0x11be('0x11a')](db['MailAccount'],{'foreignKey':'ToMailAccountId','as':_0x11be('0x1d0')});db[_0x11be('0xe7')]['belongsTo'](db[_0x11be('0x67')],{});db[_0x11be('0xe7')]['belongsTo'](db[_0x11be('0x66')],{});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':_0x11be('0x1d1')});db['ChatTransferReport'][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cb'),'as':_0x11be('0x1cc')});db[_0x11be('0xe7')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cd'),'as':_0x11be('0x1d2')});db[_0x11be('0xe7')][_0x11be('0x11a')](db[_0x11be('0x69')],{'foreignKey':_0x11be('0x1d3'),'as':_0x11be('0x1cf')});db[_0x11be('0xe7')][_0x11be('0x11a')](db[_0x11be('0x62')],{'foreignKey':_0x11be('0x1d4'),'as':_0x11be('0x1d0')});db[_0x11be('0xe9')][_0x11be('0x11a')](db['FaxMessage'],{});db[_0x11be('0xe9')]['belongsTo'](db[_0x11be('0x115')],{});db[_0x11be('0xe9')][_0x11be('0x11a')](db['FaxAccount'],{'foreignKey':'FromFaxAccountId','as':'FromAccount'});db[_0x11be('0xe9')]['belongsTo'](db[_0x11be('0x10')],{'foreignKey':'FromUserId','as':'FromAgent'});db['FaxTransferReport'][_0x11be('0x11a')](db['User'],{'foreignKey':_0x11be('0x1cd'),'as':_0x11be('0x1d2')});db[_0x11be('0xe9')][_0x11be('0x11a')](db[_0x11be('0x50')],{'foreignKey':'ToFaxQueueId','as':_0x11be('0x1cf')});db[_0x11be('0xe9')][_0x11be('0x11a')](db[_0x11be('0x4b')],{'foreignKey':_0x11be('0x1d5'),'as':_0x11be('0x1d0')});db[_0x11be('0xea')]['belongsTo'](db[_0x11be('0x5f')],{});db[_0x11be('0xea')]['belongsTo'](db['OpenchannelInteraction'],{});db[_0x11be('0xea')][_0x11be('0x11a')](db[_0x11be('0x5a')],{'foreignKey':_0x11be('0x1d6'),'as':_0x11be('0x1d1')});db[_0x11be('0xea')][_0x11be('0x11a')](db['User'],{'foreignKey':_0x11be('0x1cb'),'as':_0x11be('0x1cc')});db[_0x11be('0xea')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cd'),'as':_0x11be('0x1d2')});db[_0x11be('0xea')][_0x11be('0x11a')](db[_0x11be('0x61')],{'foreignKey':'ToOpenchannelQueueId','as':_0x11be('0x1cf')});db[_0x11be('0xea')][_0x11be('0x11a')](db[_0x11be('0x5a')],{'foreignKey':'ToOpenchannelAccountId','as':_0x11be('0x1d0')});db[_0x11be('0x1d7')][_0x11be('0x11a')](db[_0x11be('0x56')],{});db[_0x11be('0x1d7')][_0x11be('0x11a')](db['SmsInteraction'],{});db[_0x11be('0x1d7')][_0x11be('0x11a')](db['SmsAccount'],{'foreignKey':_0x11be('0x1d8'),'as':'FromAccount'});db[_0x11be('0x1d7')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':'FromUserId','as':_0x11be('0x1cc')});db[_0x11be('0x1d7')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cd'),'as':_0x11be('0x1d2')});db['SmsTransferReport'][_0x11be('0x11a')](db[_0x11be('0x58')],{'foreignKey':_0x11be('0x1d9'),'as':_0x11be('0x1cf')});db[_0x11be('0x1d7')][_0x11be('0x11a')](db[_0x11be('0x53')],{'foreignKey':_0x11be('0x1da'),'as':_0x11be('0x1d0')});db[_0x11be('0xed')]['hasMany'](db[_0x11be('0x7c')],{'as':'Dispositions','foreignKey':_0x11be('0x15b'),'onDelete':_0x11be('0x109')});db[_0x11be('0xed')][_0x11be('0x10c')](db['CmCustomField'],{'as':_0x11be('0x1db'),'foreignKey':'ListId'});db[_0x11be('0xed')][_0x11be('0x10c')](db[_0x11be('0x6e')],{'as':_0x11be('0x11e'),'onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x15b')});db[_0x11be('0xed')][_0x11be('0x10c')](db[_0x11be('0x73')],{'as':_0x11be('0x10f'),'foreignKey':'ListId'});db[_0x11be('0xed')][_0x11be('0x10c')](db['CmHopperHistory'],{'as':'HopperHistory','foreignKey':_0x11be('0x15b')});db[_0x11be('0xed')]['hasMany'](db[_0x11be('0x75')],{'as':'ReportAgentPreview','foreignKey':_0x11be('0x15b')});db[_0x11be('0xed')][_0x11be('0x11c')](db[_0x11be('0x1a')],{'as':_0x11be('0x1dc'),'through':_0x11be('0x14a')});db[_0x11be('0xed')]['belongsToMany'](db[_0x11be('0x10')],{'as':'Agents','through':_0x11be('0x1dd')});db[_0x11be('0xef')][_0x11be('0x10c')](db[_0x11be('0x17')],{'as':_0x11be('0x10e'),'onDelete':_0x11be('0x109')});db['VoicePrefix'][_0x11be('0x11c')](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x106')});db['VoicePrefix']['belongsToMany'](db[_0x11be('0xdd')],{'through':_0x11be('0x104'),'as':'Teams'});db[_0x11be('0xf1')][_0x11be('0x10c')](db[_0x11be('0x10')],{'as':'Users','foreignKey':'userProfileId'});db[_0x11be('0xf1')][_0x11be('0x10c')](db[_0x11be('0xf2')],{'as':_0x11be('0x1de'),'foreignKey':_0x11be('0x11b'),'onDelete':_0x11be('0x109')});db[_0x11be('0xf2')]['hasMany'](db['UserProfileResource'],{'as':_0x11be('0x1df'),'foreignKey':'sectionId','onDelete':'cascade'});db['WhatsappAccount'][_0x11be('0x10c')](db[_0x11be('0x7c')],{'as':_0x11be('0x170'),'foreignKey':'WhatsappAccountId','onDelete':_0x11be('0x109')});db[_0x11be('0x139')][_0x11be('0x10c')](db[_0x11be('0x7b')],{'as':_0x11be('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x11be('0x139')][_0x11be('0x10c')](db[_0x11be('0xfb')],{'as':_0x11be('0x14e'),'foreignKey':_0x11be('0x1e0')});db[_0x11be('0x139')]['hasMany'](db['WhatsappInteraction'],{'as':_0x11be('0x159')});db[_0x11be('0x139')][_0x11be('0x10c')](db[_0x11be('0xf8')],{'as':_0x11be('0x13d')});db[_0x11be('0x139')]['belongsTo'](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':'ListId'});db[_0x11be('0x139')]['belongsTo'](db[_0x11be('0x81')],{'as':'mandatoryDispositionPause','foreignKey':_0x11be('0x149')});db[_0x11be('0x139')][_0x11be('0x11c')](db['User'],{'as':_0x11be('0x14b'),'through':_0x11be('0x13b')});db[_0x11be('0xf8')][_0x11be('0x11a')](db['User'],{'onDelete':_0x11be('0x16e')});db['WhatsappApplication'][_0x11be('0x11a')](db['WhatsappQueue'],{'onDelete':_0x11be('0x16e')});db['WhatsappApplication'][_0x11be('0x11a')](db['WhatsappAccount'],{'onDelete':_0x11be('0x16e')});db['WhatsappApplication'][_0x11be('0x11a')](db[_0x11be('0x80')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x147')});db[_0x11be('0xf8')][_0x11be('0x11a')](db[_0x11be('0x164')],{'onDelete':_0x11be('0x16e'),'foreignKey':_0x11be('0x16f')});db['WhatsappInteraction'][_0x11be('0x10c')](db['WhatsappMessage'],{'as':'Messages','onDelete':_0x11be('0x109'),'foreignKey':_0x11be('0x1e1')});db[_0x11be('0x118')][_0x11be('0x11a')](db['WhatsappAccount'],{'as':'Account','foreignKey':_0x11be('0x1e0')});db[_0x11be('0x118')][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':'Contact','foreignKey':'ContactId'});db[_0x11be('0x118')]['belongsTo'](db['User'],{'as':_0x11be('0x161'),'foreignKey':'UserId'});db[_0x11be('0x118')][_0x11be('0x11c')](db['Tag'],{'through':_0x11be('0x1a1'),'as':_0x11be('0x163')});db[_0x11be('0x118')]['belongsToMany'](db[_0x11be('0x164')],{'through':_0x11be('0x1a1'),'as':_0x11be('0x165')});db[_0x11be('0x118')][_0x11be('0x11c')](db[_0x11be('0x10')],{'as':_0x11be('0x166'),'through':_0x11be('0x1e2'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x11be('0x11a')](db['User'],{'as':_0x11be('0x10')});db[_0x11be('0xfb')]['belongsTo'](db[_0x11be('0x6e')],{'onDelete':_0x11be('0x109'),'as':_0x11be('0x160')});db[_0x11be('0xfb')]['belongsTo'](db['WhatsappInteraction'],{'onDelete':_0x11be('0x109'),'as':'Interaction','foreignKey':_0x11be('0x1e1')});db[_0x11be('0xfb')][_0x11be('0x11a')](db[_0x11be('0x139')],{'as':_0x11be('0x15f'),'foreignKey':_0x11be('0x1e0')});db['WhatsappQueueReport'][_0x11be('0x11a')](db[_0x11be('0x139')],{});db[_0x11be('0xfd')][_0x11be('0x11a')](db[_0x11be('0xed')],{'as':_0x11be('0x15a'),'foreignKey':_0x11be('0x15b')});db['WhatsappQueueReport'][_0x11be('0x11a')](db[_0x11be('0x6e')],{'as':_0x11be('0x160'),'foreignKey':_0x11be('0x154')});db[_0x11be('0xfd')][_0x11be('0x11a')](db[_0x11be('0x118')],{});db[_0x11be('0xfd')][_0x11be('0x11a')](db[_0x11be('0x12e')],{});db[_0x11be('0xfd')][_0x11be('0x11a')](db[_0x11be('0xfb')],{});db[_0x11be('0xfd')][_0x11be('0x11a')](db['User'],{});db['WhatsappTransferReport']['belongsTo'](db[_0x11be('0xfb')],{});db[_0x11be('0xfe')][_0x11be('0x11a')](db['WhatsappInteraction'],{});db[_0x11be('0xfe')][_0x11be('0x11a')](db[_0x11be('0x139')],{'foreignKey':_0x11be('0x1e3'),'as':_0x11be('0x1d1')});db[_0x11be('0xfe')][_0x11be('0x11a')](db[_0x11be('0x139')],{'foreignKey':_0x11be('0x1e4'),'as':_0x11be('0x1d0')});db['WhatsappTransferReport']['belongsTo'](db[_0x11be('0x12e')],{'foreignKey':'ToQueueId','as':_0x11be('0x1cf')});db[_0x11be('0xfe')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':_0x11be('0x1cb'),'as':'FromAgent'});db[_0x11be('0xfe')][_0x11be('0x11a')](db[_0x11be('0x10')],{'foreignKey':'ToUserId','as':_0x11be('0x1d2')});db[_0x11be('0x12e')]['belongsToMany'](db[_0x11be('0x10')],{'as':_0x11be('0x14b'),'through':_0x11be('0x38'),'foreignKey':_0x11be('0x1e5')});db['WhatsappQueue'][_0x11be('0x11c')](db[_0x11be('0xdd')],{'through':_0x11be('0x1c5'),'as':_0x11be('0x15e')});module[_0x11be('0x1e6')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 8ce36a9..3b49047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018d=['/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','./api/squareProject','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/rpc','/api/version','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','root','/www','join','/demo','snippet','3.0.0','/plugins','/server/files/plugins','get','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','accessKey','tenantId','token','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','pass','localstationid','isPlainObject','isString','replace','@@{','}@@','lodash','express','express-winston','util','./errors','./config/logger','auth','safeTemplate','default','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','format','method','x-forwarded-for','headers','connection','url','statusCode','responseTime','user','inspect','use','device','remoteAddress','name','agent_id','agent_name','test','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/fax/accounts','./api/faxAccount','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','./api/cdr','/api/voiceQueuesLog','/api/sounds','/api/tags','./api/template','/api/triggers','./api/trigger','/api/variables','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticDefaultReport','./api/analyticExtractedReport','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x018d,0x79));var _0xd018=function(_0x390752,_0x42cad3){_0x390752=_0x390752-0x0;var _0x5eca55=_0x018d[_0x390752];return _0x5eca55;};'use strict';var _=require(_0xd018('0x0'));var path=require('path');var express=require(_0xd018('0x1'));var ewinston=require(_0xd018('0x2'));var util=require(_0xd018('0x3'));var errors=require(_0xd018('0x4'));var config=require('./config/environment');var logger=require(_0xd018('0x5'))('api');var authLogger=require(_0xd018('0x5'))(_0xd018('0x6'));var safeTemplate=require('./safe-template')[_0xd018('0x7')];exports[_0xd018('0x8')]=function(_0x2a85d7){_0x2a85d7['use'](ewinston[_0xd018('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4a0c7d,_0x53d124){var _0xf3551d=_0xd018('0xa');if(!_['isEmpty'](_0x4a0c7d[_0xd018('0xb')])){_0xf3551d+=_0xd018('0xc');var _0x85466f=_0x4a0c7d['body'];maskSensitiveData(_0x85466f);}return safeTemplate(util[_0xd018('0xd')](_0xf3551d,_0x4a0c7d[_0xd018('0xe')],_0x4a0c7d['headers'][_0xd018('0xf')]?_0x4a0c7d[_0xd018('0x10')][_0xd018('0xf')]:_0x4a0c7d[_0xd018('0x11')]['remoteAddress']||_0x4a0c7d['ip'],_0x4a0c7d[_0xd018('0x12')],_0x53d124[_0xd018('0x13')],_0x53d124[_0xd018('0x14')],_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d['user']['id']:null,_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d[_0xd018('0x15')]['name']:null,_0x4a0c7d[_0xd018('0x15')]?_0x4a0c7d[_0xd018('0x15')]['role']:null,_0x85466f?util[_0xd018('0x16')](_0x85466f,![],null):''));}}));_0x2a85d7[_0xd018('0x17')](ewinston[_0xd018('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x1be2a1,_0x4033b2){var _0x4283fc='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x1be2a1['body']&&_0x1be2a1[_0xd018('0xb')][_0xd018('0x18')]&&_0x1be2a1[_0xd018('0xb')]['agent_id']){_0x4283fc='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0x4283fc,_0x1be2a1[_0xd018('0xe')],_0x1be2a1[_0xd018('0x10')][_0xd018('0xf')]?_0x1be2a1[_0xd018('0x10')][_0xd018('0xf')]:_0x1be2a1[_0xd018('0x11')][_0xd018('0x19')]||_0x1be2a1['ip'],_0x1be2a1[_0xd018('0x12')],_0x4033b2[_0xd018('0x13')],_0x4033b2[_0xd018('0x14')],_0x1be2a1['user']?_0x1be2a1[_0xd018('0x15')]['id']:null,_0x1be2a1[_0xd018('0x15')]?_0x1be2a1[_0xd018('0x15')][_0xd018('0x1a')]:null,_0x1be2a1[_0xd018('0x15')]?_0x1be2a1[_0xd018('0x15')]['role']:null,_0x1be2a1[_0xd018('0xb')]&&_0x1be2a1[_0xd018('0xb')]['device']?_0x1be2a1[_0xd018('0xb')][_0xd018('0x18')]:'other',_0x1be2a1['body']&&_0x1be2a1[_0xd018('0xb')][_0xd018('0x1b')]?_0x1be2a1[_0xd018('0xb')]['agent_id']:'',_0x1be2a1[_0xd018('0xb')]&&_0x1be2a1['body'][_0xd018('0x1c')]?_0x1be2a1[_0xd018('0xb')][_0xd018('0x1c')]:'');},'ignoreRoute':function(_0x369253){var _0x582d9f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x582d9f[_0xd018('0x1d')](_0x369253[_0xd018('0x12')]);}}));_0x2a85d7['use'](_0xd018('0x1e'),require('./api/user'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x1f'),require(_0xd018('0x20')));_0x2a85d7['use'](_0xd018('0x21'),require('./api/voiceContext'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x22'),require(_0xd018('0x23')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x24'),require(_0xd018('0x25')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x26'),require(_0xd018('0x27')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x28'),require(_0xd018('0x29')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x2a'),require(_0xd018('0x2b')));_0x2a85d7[_0xd018('0x17')]('/api/voice/mails',require(_0xd018('0x2c')));_0x2a85d7['use'](_0xd018('0x2d'),require(_0xd018('0x2e')));_0x2a85d7[_0xd018('0x17')]('/api/voice/calls/reports',require(_0xd018('0x2f')));_0x2a85d7['use'](_0xd018('0x30'),require(_0xd018('0x31')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x32'),require(_0xd018('0x33')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x34'),require(_0xd018('0x35')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x36'),require('./api/memberReport'));_0x2a85d7[_0xd018('0x17')]('/api/trunks',require(_0xd018('0x37')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x38'),require('./api/voiceTransferReport'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x39'),require(_0xd018('0x3a')));_0x2a85d7['use'](_0xd018('0x3b'),require('./api/mailAccount'));_0x2a85d7['use']('/api/mail/queues',require('./api/mailQueue'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3c'),require(_0xd018('0x3d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3e'),require('./api/mailInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x3f'),require(_0xd018('0x40')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x41'),require(_0xd018('0x42')));_0x2a85d7['use'](_0xd018('0x43'),require(_0xd018('0x44')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x45'),require(_0xd018('0x46')));_0x2a85d7['use']('/api/dashboards/items',require('./api/dashboardItem'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x47'),require(_0xd018('0x48')));_0x2a85d7[_0xd018('0x17')]('/api/fax/applications',require(_0xd018('0x49')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x4a'),require('./api/faxInteraction'));_0x2a85d7['use'](_0xd018('0x4b'),require(_0xd018('0x4c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x4d'),require(_0xd018('0x4e')));_0x2a85d7['use']('/api/fax/reports/queue',require('./api/faxQueueReport'));_0x2a85d7['use'](_0xd018('0x4f'),require(_0xd018('0x50')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x51'),require('./api/smsApplication'));_0x2a85d7[_0xd018('0x17')]('/api/sms/interactions',require(_0xd018('0x52')));_0x2a85d7['use']('/api/sms/messages',require(_0xd018('0x53')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x54'),require(_0xd018('0x55')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x56'),require('./api/openchannelAccount'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x57'),require(_0xd018('0x58')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x59'),require(_0xd018('0x5a')));_0x2a85d7['use'](_0xd018('0x5b'),require(_0xd018('0x5c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x5d'),require(_0xd018('0x5e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x5f'),require('./api/chatWebsite'));_0x2a85d7[_0xd018('0x17')]('/api/openchannel/reports/queue',require(_0xd018('0x60')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x61'),require(_0xd018('0x62')));_0x2a85d7['use'](_0xd018('0x63'),require('./api/chatInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x64'),require(_0xd018('0x65')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x66'),require('./api/chatOfflineMessage'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x67'),require(_0xd018('0x68')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x69'),require(_0xd018('0x6a')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6b'),require(_0xd018('0x6c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6d'),require(_0xd018('0x6e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x6f'),require(_0xd018('0x70')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x71'),require('./api/cmHopper'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x72'),require('./api/cmHopperBlack'));_0x2a85d7[_0xd018('0x17')]('/api/cm/hopper_final',require(_0xd018('0x73')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x74'),require(_0xd018('0x75')));_0x2a85d7[_0xd018('0x17')]('/api/cm/custom_fields',require(_0xd018('0x76')));_0x2a85d7['use']('/api/actions',require(_0xd018('0x77')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x78'),require(_0xd018('0x79')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x7a'),require(_0xd018('0x7b')));_0x2a85d7['use'](_0xd018('0x7c'),require(_0xd018('0x7d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x7e'),require(_0xd018('0x7f')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x80'),require(_0xd018('0x81')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x82'),require(_0xd018('0x83')));_0x2a85d7[_0xd018('0x17')]('/api/cdr',require(_0xd018('0x84')));_0x2a85d7['use'](_0xd018('0x85'),require('./api/voiceQueuesLog'));_0x2a85d7[_0xd018('0x17')]('/api/schedules',require('./api/schedule'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x86'),require('./api/sound'));_0x2a85d7['use'](_0xd018('0x87'),require('./api/tag'));_0x2a85d7[_0xd018('0x17')]('/api/templates',require(_0xd018('0x88')));_0x2a85d7['use'](_0xd018('0x89'),require(_0xd018('0x8a')));_0x2a85d7['use'](_0xd018('0x8b'),require('./api/variable'));_0x2a85d7[_0xd018('0x17')]('/api/integrations',require(_0xd018('0x8c')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x8d'),require(_0xd018('0x8e')));_0x2a85d7['use'](_0xd018('0x8f'),require(_0xd018('0x90')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/default_reports',require(_0xd018('0x91')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/extracted_reports',require(_0xd018('0x92')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/metrics',require(_0xd018('0x93')));_0x2a85d7[_0xd018('0x17')]('/api/analytics/field_reports',require(_0xd018('0x94')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x95'),require(_0xd018('0x96')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x97'),require(_0xd018('0x98')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x99'),require(_0xd018('0x9a')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x9b'),require('./api/intSalesforceField'));_0x2a85d7['use'](_0xd018('0x9c'),require(_0xd018('0x9d')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/sugarcrm/configurations',require(_0xd018('0x9e')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x9f'),require(_0xd018('0xa0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xa1'),require(_0xd018('0xa2')));_0x2a85d7['use'](_0xd018('0xa3'),require(_0xd018('0xa4')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xa5'),require(_0xd018('0xa6')));_0x2a85d7['use'](_0xd018('0xa7'),require(_0xd018('0xa8')));_0x2a85d7['use'](_0xd018('0xa9'),require(_0xd018('0xaa')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/zoho/fields',require('./api/intZohoField'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xab'),require(_0xd018('0xac')));_0x2a85d7['use'](_0xd018('0xad'),require('./api/intZendeskConfiguration'));_0x2a85d7['use'](_0xd018('0xae'),require(_0xd018('0xaf')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb0'),require(_0xd018('0xb1')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb2'),require(_0xd018('0xb3')));_0x2a85d7['use'](_0xd018('0xb4'),require(_0xd018('0xb5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xb6'),require(_0xd018('0xb7')));_0x2a85d7['use'](_0xd018('0xb8'),require(_0xd018('0xb9')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xba'),require(_0xd018('0xbb')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xbc'),require(_0xd018('0xbd')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/servicenow/configurations',require(_0xd018('0xbe')));_0x2a85d7['use'](_0xd018('0xbf'),require(_0xd018('0xc0')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/dynamics365/accounts',require(_0xd018('0xc1')));_0x2a85d7[_0xd018('0x17')]('/api/integrations/dynamics365/configurations',require('./api/intDynamics365Configuration'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc2'),require(_0xd018('0xc3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc4'),require(_0xd018('0xc5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc6'),require(_0xd018('0xc7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xc8'),require(_0xd018('0xc9')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xca'),require(_0xd018('0xcb')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xcc'),require(_0xd018('0xcd')));_0x2a85d7[_0xd018('0x17')]('/api/chat/internal/messages',require('./api/chatInternalMessage'));_0x2a85d7[_0xd018('0x17')]('/api/jscripty/answers/reports',require(_0xd018('0xce')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xcf'),require(_0xd018('0xd0')));_0x2a85d7['use']('/api/jscripty/sessions/reports',require(_0xd018('0xd1')));_0x2a85d7[_0xd018('0x17')]('/api/sms/reports/queue',require(_0xd018('0xd2')));_0x2a85d7['use']('/api/square/reports',require(_0xd018('0xd3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xd4'),require(_0xd018('0xd5')));_0x2a85d7[_0xd018('0x17')]('/api/jscripty/projects',require(_0xd018('0xd6')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xd7'),require(_0xd018('0xd8')));_0x2a85d7[_0xd018('0x17')]('/api/square/odbc',require(_0xd018('0xd9')));_0x2a85d7[_0xd018('0x17')]('/api/square/projects',require(_0xd018('0xda')));_0x2a85d7[_0xd018('0x17')]('/api/square/recordings',require('./api/squareRecording'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdb'),require(_0xd018('0xdc')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdd'),require(_0xd018('0xde')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xdf'),require(_0xd018('0xe0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe1'),require(_0xd018('0xe2')));_0x2a85d7[_0xd018('0x17')]('/api/migrations',require(_0xd018('0xe3')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe4'),require(_0xd018('0xe5')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe6'),require(_0xd018('0xe7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe8'),require('./api/mailTransferReport'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xe9'),require(_0xd018('0xea')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xeb'),require(_0xd018('0xec')));_0x2a85d7[_0xd018('0x17')]('/api/openchannel/reports/transfer',require('./api/openchannelTransferReport'));_0x2a85d7['use'](_0xd018('0xed'),require(_0xd018('0xee')));_0x2a85d7['use'](_0xd018('0xef'),require(_0xd018('0xf0')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf1'),require(_0xd018('0xf2')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf3'),require(_0xd018('0xf4')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf5'),require(_0xd018('0xf6')));_0x2a85d7[_0xd018('0x17')]('/api/userProfile/resources',require(_0xd018('0xf7')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf8'),require('./api/userNotification'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xf9'),require(_0xd018('0xfa')));_0x2a85d7[_0xd018('0x17')](_0xd018('0xfb'),require('./api/whatsappApplication'));_0x2a85d7['use']('/api/whatsapp/interactions',require('./api/whatsappInteraction'));_0x2a85d7[_0xd018('0x17')](_0xd018('0xfc'),require(_0xd018('0xfd')));_0x2a85d7['use'](_0xd018('0xfe'),require(_0xd018('0xff')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x100'),require(_0xd018('0x101')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x102'),require(_0xd018('0x103')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x104'),require(_0xd018('0x105')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x106'),require('./api/realtime'));_0x2a85d7[_0xd018('0x17')]('/api/auth/local',require(_0xd018('0x107')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x108'),require(_0xd018('0x109')));_0x2a85d7[_0xd018('0x17')]('/api/jira',require('./api/jira'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10a'),require('./api/rpc'));_0x2a85d7['use'](_0xd018('0x10b'),require('./api/version'));_0x2a85d7[_0xd018('0x17')]('/api/system',require('./api/system'));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10c'),require(_0xd018('0x10d')));_0x2a85d7[_0xd018('0x17')](_0xd018('0x10e'),require(_0xd018('0x10f')));_0x2a85d7['use'](_0xd018('0x110'),express[_0xd018('0x111')](path['join'](config[_0xd018('0x112')],_0xd018('0x110'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x113'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x113'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x115'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x115'))));_0x2a85d7[_0xd018('0x17')]('/snippet',express[_0xd018('0x111')](path['join'](config[_0xd018('0x112')],_0xd018('0x116'),_0xd018('0x117'))));_0x2a85d7[_0xd018('0x17')](_0xd018('0x118'),express[_0xd018('0x111')](path[_0xd018('0x114')](config[_0xd018('0x112')],_0xd018('0x119'))));_0x2a85d7['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0xd018('0x11a')](errors[0x194]);_0x2a85d7['route']('/*')[_0xd018('0x11a')](function(_0x357344,_0x1d4b7a){_0x1d4b7a['sendFile'](path['resolve'](_0x2a85d7[_0xd018('0x11a')](_0xd018('0x11b'))+_0xd018('0x11c')));});};var sensitiveFields=[_0xd018('0x11d'),_0xd018('0x11e'),_0xd018('0x11f'),_0xd018('0x120'),_0xd018('0x121'),_0xd018('0x122'),_0xd018('0x123'),_0xd018('0x124'),_0xd018('0x125'),_0xd018('0x126'),_0xd018('0x127'),_0xd018('0x128'),_0xd018('0x129'),_0xd018('0x12a'),'code',_0xd018('0x12b'),_0xd018('0x12c'),_0xd018('0x12d'),'channelSecret',_0xd018('0x12e'),_0xd018('0x12f'),_0xd018('0x130'),_0xd018('0x131'),_0xd018('0x132'),_0xd018('0x133'),_0xd018('0x134'),_0xd018('0x135'),_0xd018('0x136'),_0xd018('0x137'),'clientEmail',_0xd018('0x138'),_0xd018('0x139'),_0xd018('0x13a'),_0xd018('0x13b'),_0xd018('0x15'),_0xd018('0x13c'),'accountSid',_0xd018('0x13d'),'dsn','secret','registry','oldPassword'];function maskSensitiveData(_0x3c592c){var _0x15e516=/(?!^)[\s\S](?!$)/g;if(!_[_0xd018('0x13e')](_0x3c592c))return;for(var _0x1efa40 in _0x3c592c){if(_['isArray'](_0x3c592c[_0x1efa40])){for(var _0x17cc4f=0x0;_0x17cc4f<_0x3c592c[_0x1efa40]['length'];_0x17cc4f++){maskSensitiveData(_0x3c592c[_0x1efa40][_0x17cc4f]);}}else if(_[_0xd018('0x13e')](_0x3c592c[_0x1efa40])){maskSensitiveData(_0x3c592c[_0x1efa40]);}else if(_[_0xd018('0x13f')](_0x3c592c[_0x1efa40])){_0x3c592c[_0x1efa40]=_0x3c592c[_0x1efa40][_0xd018('0x140')](/{{{/g,_0xd018('0x141'))[_0xd018('0x140')](/}}}/g,_0xd018('0x142'))[_0xd018('0x140')](/{{/g,'@{')[_0xd018('0x140')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x1efa40)){_0x3c592c[_0x1efa40]=_0x3c592c[_0x1efa40]['replace'](_0x15e516,'*');}}}}
\ No newline at end of file
+var _0x46b7=['/api/sms/accounts','./api/smsAccount','/api/sms/interactions','./api/smsInteraction','/api/sms/queues','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmCustomField','/api/actions','./api/action','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','./api/tag','/api/templates','./api/template','./api/trigger','/api/variables','/api/integrations','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/zoho/accounts','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','./api/intFreshsalesField','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','/api/voice/prefixes','./api/voicePrefix','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','/api/realtime','./api/realtime','/api/auth/local','/api/auth/google','/api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/pm2','./api/webbar','/apidoc','join','root','/www','static','/snippet','snippet','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','securityToken','code','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','secretaccesskey','pass','accountSid','localstationid','dsn','registry','isPlainObject','isArray','length','isString','replace','includes','lodash','path','express','express-winston','util','./errors','./config/environment','api','./config/logger','auth','safeTemplate','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','method','headers','x-forwarded-for','connection','url','statusCode','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','remoteAddress','responseTime','other','agent_name','test','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','/api/mail/applications','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue'];(function(_0x22db4a,_0x355076){var _0x58ef4f=function(_0x323bb8){while(--_0x323bb8){_0x22db4a['push'](_0x22db4a['shift']());}};_0x58ef4f(++_0x355076);}(_0x46b7,0xf0));var _0x746b=function(_0x318f4a,_0x53912f){_0x318f4a=_0x318f4a-0x0;var _0x161d60=_0x46b7[_0x318f4a];return _0x161d60;};'use strict';var _=require(_0x746b('0x0'));var path=require(_0x746b('0x1'));var express=require(_0x746b('0x2'));var ewinston=require(_0x746b('0x3'));var util=require(_0x746b('0x4'));var errors=require(_0x746b('0x5'));var config=require(_0x746b('0x6'));var logger=require('./config/logger')(_0x746b('0x7'));var authLogger=require(_0x746b('0x8'))(_0x746b('0x9'));var safeTemplate=require('./safe-template')[_0x746b('0xa')];exports['default']=function(_0x377078){_0x377078[_0x746b('0xb')](ewinston[_0x746b('0xc')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x414ae6,_0x104786){var _0x32b835=_0x746b('0xd');if(!_['isEmpty'](_0x414ae6[_0x746b('0xe')])){_0x32b835+='\x20body=%s';var _0x42b22b=_0x414ae6[_0x746b('0xe')];maskSensitiveData(_0x42b22b);}return safeTemplate(util['format'](_0x32b835,_0x414ae6[_0x746b('0xf')],_0x414ae6[_0x746b('0x10')][_0x746b('0x11')]?_0x414ae6[_0x746b('0x10')][_0x746b('0x11')]:_0x414ae6[_0x746b('0x12')]['remoteAddress']||_0x414ae6['ip'],_0x414ae6[_0x746b('0x13')],_0x104786[_0x746b('0x14')],_0x104786['responseTime'],_0x414ae6[_0x746b('0x15')]?_0x414ae6['user']['id']:null,_0x414ae6[_0x746b('0x15')]?_0x414ae6['user'][_0x746b('0x16')]:null,_0x414ae6[_0x746b('0x15')]?_0x414ae6['user'][_0x746b('0x17')]:null,_0x42b22b?util[_0x746b('0x18')](_0x42b22b,![],null):''));}}));_0x377078['use'](ewinston[_0x746b('0xc')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x5718da,_0x105184){var _0x4058d6=_0x746b('0x19');if(_0x5718da[_0x746b('0xe')]&&_0x5718da[_0x746b('0xe')][_0x746b('0x1a')]&&_0x5718da['body']['agent_id']){_0x4058d6=_0x746b('0x1b');}return util[_0x746b('0x1c')](_0x4058d6,_0x5718da['method'],_0x5718da[_0x746b('0x10')]['x-forwarded-for']?_0x5718da[_0x746b('0x10')]['x-forwarded-for']:_0x5718da[_0x746b('0x12')][_0x746b('0x1d')]||_0x5718da['ip'],_0x5718da[_0x746b('0x13')],_0x105184[_0x746b('0x14')],_0x105184[_0x746b('0x1e')],_0x5718da[_0x746b('0x15')]?_0x5718da['user']['id']:null,_0x5718da[_0x746b('0x15')]?_0x5718da[_0x746b('0x15')]['name']:null,_0x5718da[_0x746b('0x15')]?_0x5718da['user'][_0x746b('0x17')]:null,_0x5718da[_0x746b('0xe')]&&_0x5718da[_0x746b('0xe')][_0x746b('0x1a')]?_0x5718da[_0x746b('0xe')]['device']:_0x746b('0x1f'),_0x5718da[_0x746b('0xe')]&&_0x5718da[_0x746b('0xe')]['agent_id']?_0x5718da[_0x746b('0xe')]['agent_id']:'',_0x5718da[_0x746b('0xe')]&&_0x5718da[_0x746b('0xe')][_0x746b('0x20')]?_0x5718da[_0x746b('0xe')][_0x746b('0x20')]:'');},'ignoreRoute':function(_0x250ee7){var _0x233014=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x233014[_0x746b('0x21')](_0x250ee7[_0x746b('0x13')]);}}));_0x377078[_0x746b('0xb')]('/api/users',require(_0x746b('0x22')));_0x377078[_0x746b('0xb')](_0x746b('0x23'),require(_0x746b('0x24')));_0x377078[_0x746b('0xb')](_0x746b('0x25'),require(_0x746b('0x26')));_0x377078[_0x746b('0xb')](_0x746b('0x27'),require(_0x746b('0x28')));_0x377078['use']('/api/voice/mohs',require(_0x746b('0x29')));_0x377078[_0x746b('0xb')]('/api/voice/queues',require(_0x746b('0x2a')));_0x377078[_0x746b('0xb')](_0x746b('0x2b'),require('./api/voiceRecording'));_0x377078[_0x746b('0xb')](_0x746b('0x2c'),require(_0x746b('0x2d')));_0x377078[_0x746b('0xb')](_0x746b('0x2e'),require(_0x746b('0x2f')));_0x377078[_0x746b('0xb')](_0x746b('0x30'),require(_0x746b('0x31')));_0x377078[_0x746b('0xb')](_0x746b('0x32'),require(_0x746b('0x33')));_0x377078[_0x746b('0xb')](_0x746b('0x34'),require('./api/voiceDialReport'));_0x377078[_0x746b('0xb')](_0x746b('0x35'),require(_0x746b('0x36')));_0x377078[_0x746b('0xb')](_0x746b('0x37'),require(_0x746b('0x38')));_0x377078[_0x746b('0xb')](_0x746b('0x39'),require(_0x746b('0x3a')));_0x377078['use'](_0x746b('0x3b'),require('./api/trunk'));_0x377078['use'](_0x746b('0x3c'),require(_0x746b('0x3d')));_0x377078[_0x746b('0xb')](_0x746b('0x3e'),require(_0x746b('0x3f')));_0x377078[_0x746b('0xb')]('/api/mail/accounts',require(_0x746b('0x40')));_0x377078['use'](_0x746b('0x41'),require(_0x746b('0x42')));_0x377078['use'](_0x746b('0x43'),require(_0x746b('0x44')));_0x377078['use'](_0x746b('0x45'),require('./api/mailInteraction'));_0x377078['use'](_0x746b('0x46'),require('./api/mailMessage'));_0x377078[_0x746b('0xb')](_0x746b('0x47'),require('./api/mailApplication'));_0x377078[_0x746b('0xb')](_0x746b('0x48'),require(_0x746b('0x49')));_0x377078[_0x746b('0xb')](_0x746b('0x4a'),require(_0x746b('0x4b')));_0x377078[_0x746b('0xb')](_0x746b('0x4c'),require('./api/dashboardItem'));_0x377078[_0x746b('0xb')]('/api/fax/accounts',require(_0x746b('0x4d')));_0x377078[_0x746b('0xb')](_0x746b('0x4e'),require('./api/faxApplication'));_0x377078['use'](_0x746b('0x4f'),require(_0x746b('0x50')));_0x377078[_0x746b('0xb')]('/api/fax/messages',require(_0x746b('0x51')));_0x377078[_0x746b('0xb')]('/api/fax/queues',require(_0x746b('0x52')));_0x377078['use'](_0x746b('0x53'),require('./api/faxQueueReport'));_0x377078['use'](_0x746b('0x54'),require(_0x746b('0x55')));_0x377078[_0x746b('0xb')]('/api/sms/applications',require('./api/smsApplication'));_0x377078[_0x746b('0xb')](_0x746b('0x56'),require(_0x746b('0x57')));_0x377078[_0x746b('0xb')]('/api/sms/messages',require('./api/smsMessage'));_0x377078[_0x746b('0xb')](_0x746b('0x58'),require('./api/smsQueue'));_0x377078['use'](_0x746b('0x59'),require(_0x746b('0x5a')));_0x377078['use'](_0x746b('0x5b'),require(_0x746b('0x5c')));_0x377078['use'](_0x746b('0x5d'),require(_0x746b('0x5e')));_0x377078[_0x746b('0xb')](_0x746b('0x5f'),require(_0x746b('0x60')));_0x377078[_0x746b('0xb')](_0x746b('0x61'),require('./api/openchannelQueue'));_0x377078[_0x746b('0xb')](_0x746b('0x62'),require(_0x746b('0x63')));_0x377078[_0x746b('0xb')](_0x746b('0x64'),require('./api/openchannelQueueReport'));_0x377078[_0x746b('0xb')](_0x746b('0x65'),require('./api/chatApplication'));_0x377078[_0x746b('0xb')]('/api/chat/interactions',require(_0x746b('0x66')));_0x377078[_0x746b('0xb')](_0x746b('0x67'),require(_0x746b('0x68')));_0x377078[_0x746b('0xb')](_0x746b('0x69'),require(_0x746b('0x6a')));_0x377078[_0x746b('0xb')]('/api/chat/queues',require(_0x746b('0x6b')));_0x377078[_0x746b('0xb')]('/api/chat/groups',require(_0x746b('0x6c')));_0x377078[_0x746b('0xb')](_0x746b('0x6d'),require(_0x746b('0x6e')));_0x377078[_0x746b('0xb')](_0x746b('0x6f'),require(_0x746b('0x70')));_0x377078[_0x746b('0xb')](_0x746b('0x71'),require(_0x746b('0x72')));_0x377078[_0x746b('0xb')]('/api/cm/hopper',require('./api/cmHopper'));_0x377078['use'](_0x746b('0x73'),require(_0x746b('0x74')));_0x377078[_0x746b('0xb')]('/api/cm/hopper_final',require(_0x746b('0x75')));_0x377078['use'](_0x746b('0x76'),require('./api/cmHopperHistory'));_0x377078[_0x746b('0xb')]('/api/cm/custom_fields',require(_0x746b('0x77')));_0x377078[_0x746b('0xb')](_0x746b('0x78'),require(_0x746b('0x79')));_0x377078[_0x746b('0xb')]('/api/automations',require(_0x746b('0x7a')));_0x377078['use']('/api/canned_answers',require(_0x746b('0x7b')));_0x377078[_0x746b('0xb')](_0x746b('0x7c'),require(_0x746b('0x7d')));_0x377078[_0x746b('0xb')](_0x746b('0x7e'),require(_0x746b('0x7f')));_0x377078[_0x746b('0xb')]('/api/intervals',require(_0x746b('0x80')));_0x377078['use'](_0x746b('0x81'),require(_0x746b('0x82')));_0x377078[_0x746b('0xb')](_0x746b('0x83'),require(_0x746b('0x84')));_0x377078[_0x746b('0xb')](_0x746b('0x85'),require(_0x746b('0x86')));_0x377078['use'](_0x746b('0x87'),require('./api/schedule'));_0x377078['use'](_0x746b('0x88'),require(_0x746b('0x89')));_0x377078[_0x746b('0xb')]('/api/tags',require(_0x746b('0x8a')));_0x377078['use'](_0x746b('0x8b'),require(_0x746b('0x8c')));_0x377078[_0x746b('0xb')]('/api/triggers',require(_0x746b('0x8d')));_0x377078[_0x746b('0xb')](_0x746b('0x8e'),require('./api/variable'));_0x377078[_0x746b('0xb')](_0x746b('0x8f'),require('./api/integration'));_0x377078[_0x746b('0xb')](_0x746b('0x90'),require(_0x746b('0x91')));_0x377078[_0x746b('0xb')]('/api/analytics/custom_reports',require(_0x746b('0x92')));_0x377078[_0x746b('0xb')]('/api/analytics/default_reports',require(_0x746b('0x93')));_0x377078[_0x746b('0xb')](_0x746b('0x94'),require(_0x746b('0x95')));_0x377078[_0x746b('0xb')](_0x746b('0x96'),require(_0x746b('0x97')));_0x377078['use'](_0x746b('0x98'),require(_0x746b('0x99')));_0x377078[_0x746b('0xb')](_0x746b('0x9a'),require(_0x746b('0x9b')));_0x377078[_0x746b('0xb')](_0x746b('0x9c'),require('./api/intSalesforceAccount'));_0x377078['use'](_0x746b('0x9d'),require('./api/intSalesforceConfiguration'));_0x377078[_0x746b('0xb')](_0x746b('0x9e'),require('./api/intSalesforceField'));_0x377078[_0x746b('0xb')](_0x746b('0x9f'),require(_0x746b('0xa0')));_0x377078[_0x746b('0xb')](_0x746b('0xa1'),require(_0x746b('0xa2')));_0x377078[_0x746b('0xb')](_0x746b('0xa3'),require(_0x746b('0xa4')));_0x377078[_0x746b('0xb')](_0x746b('0xa5'),require(_0x746b('0xa6')));_0x377078[_0x746b('0xb')](_0x746b('0xa7'),require(_0x746b('0xa8')));_0x377078[_0x746b('0xb')]('/api/integrations/desk/fields',require('./api/intDeskField'));_0x377078['use'](_0x746b('0xa9'),require('./api/intZohoAccount'));_0x377078[_0x746b('0xb')]('/api/integrations/zoho/configurations',require('./api/intZohoConfiguration'));_0x377078[_0x746b('0xb')](_0x746b('0xaa'),require(_0x746b('0xab')));_0x377078[_0x746b('0xb')](_0x746b('0xac'),require(_0x746b('0xad')));_0x377078[_0x746b('0xb')](_0x746b('0xae'),require(_0x746b('0xaf')));_0x377078['use'](_0x746b('0xb0'),require('./api/intZendeskField'));_0x377078[_0x746b('0xb')](_0x746b('0xb1'),require(_0x746b('0xb2')));_0x377078[_0x746b('0xb')]('/api/integrations/freshdesk/configurations',require('./api/intFreshdeskConfiguration'));_0x377078[_0x746b('0xb')](_0x746b('0xb3'),require(_0x746b('0xb4')));_0x377078[_0x746b('0xb')](_0x746b('0xb5'),require(_0x746b('0xb6')));_0x377078['use']('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x377078[_0x746b('0xb')](_0x746b('0xb7'),require('./api/intVtigerField'));_0x377078[_0x746b('0xb')](_0x746b('0xb8'),require(_0x746b('0xb9')));_0x377078[_0x746b('0xb')](_0x746b('0xba'),require('./api/intServicenowConfiguration'));_0x377078[_0x746b('0xb')](_0x746b('0xbb'),require('./api/intServicenowField'));_0x377078[_0x746b('0xb')](_0x746b('0xbc'),require(_0x746b('0xbd')));_0x377078[_0x746b('0xb')](_0x746b('0xbe'),require(_0x746b('0xbf')));_0x377078[_0x746b('0xb')](_0x746b('0xc0'),require('./api/intDynamics365Field'));_0x377078[_0x746b('0xb')](_0x746b('0xc1'),require(_0x746b('0xc2')));_0x377078[_0x746b('0xb')]('/api/integrations/freshsales/configurations',require(_0x746b('0xc3')));_0x377078[_0x746b('0xb')]('/api/integrations/freshsales/fields',require(_0x746b('0xc4')));_0x377078['use']('/api/networks',require('./api/network'));_0x377078['use']('/api/chat/reports/queue',require(_0x746b('0xc5')));_0x377078[_0x746b('0xb')](_0x746b('0xc6'),require(_0x746b('0xc7')));_0x377078[_0x746b('0xb')](_0x746b('0xc8'),require('./api/jscriptyAnswerReport'));_0x377078[_0x746b('0xb')](_0x746b('0xc9'),require('./api/jscriptyQuestionReport'));_0x377078['use'](_0x746b('0xca'),require('./api/jscriptySessionReport'));_0x377078[_0x746b('0xb')](_0x746b('0xcb'),require('./api/smsQueueReport'));_0x377078[_0x746b('0xb')](_0x746b('0xcc'),require(_0x746b('0xcd')));_0x377078['use'](_0x746b('0xce'),require(_0x746b('0xcf')));_0x377078[_0x746b('0xb')]('/api/jscripty/projects',require(_0x746b('0xd0')));_0x377078['use'](_0x746b('0xd1'),require(_0x746b('0xd2')));_0x377078[_0x746b('0xb')](_0x746b('0xd3'),require(_0x746b('0xd4')));_0x377078['use'](_0x746b('0xd5'),require(_0x746b('0xd6')));_0x377078[_0x746b('0xb')](_0x746b('0xd7'),require(_0x746b('0xd8')));_0x377078[_0x746b('0xb')](_0x746b('0xd9'),require(_0x746b('0xda')));_0x377078[_0x746b('0xb')](_0x746b('0xdb'),require(_0x746b('0xdc')));_0x377078[_0x746b('0xb')](_0x746b('0xdd'),require(_0x746b('0xde')));_0x377078[_0x746b('0xb')]('/api/campaigns',require(_0x746b('0xdf')));_0x377078[_0x746b('0xb')](_0x746b('0xe0'),require(_0x746b('0xe1')));_0x377078[_0x746b('0xb')](_0x746b('0xe2'),require(_0x746b('0xe3')));_0x377078['use'](_0x746b('0xe4'),require('./api/plugin'));_0x377078[_0x746b('0xb')](_0x746b('0xe5'),require(_0x746b('0xe6')));_0x377078[_0x746b('0xb')]('/api/chat/reports/transfer',require(_0x746b('0xe7')));_0x377078[_0x746b('0xb')]('/api/fax/reports/transfer',require(_0x746b('0xe8')));_0x377078['use']('/api/openchannel/reports/transfer',require(_0x746b('0xe9')));_0x377078[_0x746b('0xb')](_0x746b('0xea'),require(_0x746b('0xeb')));_0x377078[_0x746b('0xb')]('/api/cm/lists',require(_0x746b('0xec')));_0x377078[_0x746b('0xb')](_0x746b('0xed'),require(_0x746b('0xee')));_0x377078[_0x746b('0xb')]('/api/userProfiles',require(_0x746b('0xef')));_0x377078[_0x746b('0xb')](_0x746b('0xf0'),require(_0x746b('0xf1')));_0x377078[_0x746b('0xb')](_0x746b('0xf2'),require('./api/userProfileResource'));_0x377078[_0x746b('0xb')](_0x746b('0xf3'),require(_0x746b('0xf4')));_0x377078[_0x746b('0xb')](_0x746b('0xf5'),require(_0x746b('0xf6')));_0x377078[_0x746b('0xb')](_0x746b('0xf7'),require(_0x746b('0xf8')));_0x377078[_0x746b('0xb')](_0x746b('0xf9'),require(_0x746b('0xfa')));_0x377078[_0x746b('0xb')](_0x746b('0xfb'),require(_0x746b('0xfc')));_0x377078[_0x746b('0xb')](_0x746b('0xfd'),require('./api/whatsappQueueReport'));_0x377078[_0x746b('0xb')](_0x746b('0xfe'),require(_0x746b('0xff')));_0x377078[_0x746b('0xb')](_0x746b('0x100'),require(_0x746b('0x101')));_0x377078['use'](_0x746b('0x102'),require('./api/cloudProvider'));_0x377078['use'](_0x746b('0x103'),require(_0x746b('0x104')));_0x377078[_0x746b('0xb')](_0x746b('0x105'),require('./api/authLocal'));_0x377078[_0x746b('0xb')](_0x746b('0x106'),require('./api/authGoogle'));_0x377078[_0x746b('0xb')](_0x746b('0x107'),require('./api/jira'));_0x377078[_0x746b('0xb')](_0x746b('0x108'),require('./api/rpc'));_0x377078[_0x746b('0xb')](_0x746b('0x109'),require(_0x746b('0x10a')));_0x377078[_0x746b('0xb')](_0x746b('0x10b'),require('./api/system'));_0x377078[_0x746b('0xb')]('/api/pm2',require(_0x746b('0x10c')));_0x377078[_0x746b('0xb')]('/api/webbar',require(_0x746b('0x10d')));_0x377078[_0x746b('0xb')](_0x746b('0x10e'),express['static'](path[_0x746b('0x10f')](config[_0x746b('0x110')],_0x746b('0x10e'))));_0x377078[_0x746b('0xb')](_0x746b('0x111'),express[_0x746b('0x112')](path[_0x746b('0x10f')](config['root'],_0x746b('0x111'))));_0x377078['use']('/demo',express[_0x746b('0x112')](path[_0x746b('0x10f')](config[_0x746b('0x110')],'/demo')));_0x377078[_0x746b('0xb')](_0x746b('0x113'),express[_0x746b('0x112')](path[_0x746b('0x10f')](config[_0x746b('0x110')],_0x746b('0x114'),_0x746b('0x115'))));_0x377078[_0x746b('0xb')]('/plugins',express[_0x746b('0x112')](path[_0x746b('0x10f')](config[_0x746b('0x110')],_0x746b('0x116'))));_0x377078[_0x746b('0x117')](_0x746b('0x118'))[_0x746b('0x119')](errors[0x194]);_0x377078['route']('/*')[_0x746b('0x119')](function(_0x416661,_0xf5e57a){_0xf5e57a[_0x746b('0x11a')](path['resolve'](_0x377078[_0x746b('0x119')](_0x746b('0x11b'))+_0x746b('0x11c')));});};var sensitiveFields=[_0x746b('0x11d'),_0x746b('0x11e'),_0x746b('0x11f'),_0x746b('0x120'),_0x746b('0x121'),_0x746b('0x122'),_0x746b('0x123'),_0x746b('0x124'),_0x746b('0x125'),_0x746b('0x126'),_0x746b('0x127'),_0x746b('0x128'),'clientSecret',_0x746b('0x129'),_0x746b('0x12a'),'accessKey',_0x746b('0x12b'),_0x746b('0x12c'),_0x746b('0x12d'),_0x746b('0x12e'),_0x746b('0x12f'),_0x746b('0x130'),_0x746b('0x131'),_0x746b('0x132'),_0x746b('0x133'),_0x746b('0x134'),'calleridnum',_0x746b('0x135'),_0x746b('0x136'),_0x746b('0x137'),'privateKey','accesskeyid',_0x746b('0x138'),'key',_0x746b('0x15'),_0x746b('0x139'),_0x746b('0x13a'),_0x746b('0x13b'),_0x746b('0x13c'),'secret',_0x746b('0x13d'),'oldPassword'];function maskSensitiveData(_0x2f2cb4){var _0x4330f7=/(?!^)[\s\S](?!$)/g;if(!_[_0x746b('0x13e')](_0x2f2cb4))return;for(var _0x231dba in _0x2f2cb4){if(_[_0x746b('0x13f')](_0x2f2cb4[_0x231dba])){for(var _0x5d53d8=0x0;_0x5d53d8<_0x2f2cb4[_0x231dba][_0x746b('0x140')];_0x5d53d8++){maskSensitiveData(_0x2f2cb4[_0x231dba][_0x5d53d8]);}}else if(_[_0x746b('0x13e')](_0x2f2cb4[_0x231dba])){maskSensitiveData(_0x2f2cb4[_0x231dba]);}else if(_[_0x746b('0x141')](_0x2f2cb4[_0x231dba])){_0x2f2cb4[_0x231dba]=_0x2f2cb4[_0x231dba]['replace'](/{{{/g,'@@{')[_0x746b('0x142')](/}}}/g,'}@@')['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x746b('0x143')](sensitiveFields,_0x231dba)){_0x2f2cb4[_0x231dba]=_0x2f2cb4[_0x231dba][_0x746b('0x142')](_0x4330f7,'*');}}}}
\ No newline at end of file
index db34704..e33966f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd42=['../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc'];(function(_0x1e47db,_0x417474){var _0x5ccfaa=function(_0x41392d){while(--_0x41392d){_0x1e47db['push'](_0x1e47db['shift']());}};_0x5ccfaa(++_0x417474);}(_0xfd42,0x163));var _0x2fd4=function(_0x968642,_0x2eda1a){_0x968642=_0x968642-0x0;var _0x370246=_0xfd42[_0x968642];return _0x370246;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x2fd4('0x0'));var _=require(_0x2fd4('0x1'));var config=require(_0x2fd4('0x2'));exports[_0x2fd4('0x3')]=function(){return new BPromise(function(_0xb18b38,_0x2e2ee5){var _0x24e297={};_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x5')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x6')));_0x24e297=_['merge'](_0x24e297,require('../api/voiceQueue/voiceQueue.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x7')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x8')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x9')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0xa')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xb')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xc')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0xd')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xe')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0xf')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x10')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x11')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/mailInteraction/mailInteraction.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x12')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/mailApplication/mailApplication.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x13')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x14')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x15')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x16')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x17')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x18')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x19')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1a')));_0x24e297=_['merge'](_0x24e297,require('../api/smsInteraction/smsInteraction.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x1b')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1c')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1d')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1e')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x1f')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x20')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x21')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x22')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x23')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x24')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x25')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x26')));_0x24e297=_['merge'](_0x24e297,require('../api/pause/pause.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/sound/sound.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/template/template.rpc'));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x27')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x28')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x29')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2a')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2b')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2c')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2d')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2e')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x2f')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x30')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x31')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x32')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x33')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x34')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x35')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require('../api/squareRecording/squareRecording.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x36')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x37')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x38')));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x39')));_0x24e297=_['merge'](_0x24e297,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x24e297=_[_0x2fd4('0x4')](_0x24e297,require(_0x2fd4('0x3a')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3b')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3c')));_0x24e297=_['merge'](_0x24e297,require(_0x2fd4('0x3d')));var _0x579b22=jayson['server'](_0x24e297)[_0x2fd4('0x3e')]();var _0x2dad7a=config['rpc'][_0x2fd4('0x3f')]||config[_0x2fd4('0x3f')]+0x1;var _0x4d2d3c=config['rpc']['ip']||_0x2fd4('0x40');_0x579b22['on'](_0x2fd4('0x41'),function(_0x17d011){return _0x2e2ee5(_0x17d011);});_0x579b22[_0x2fd4('0x3')](_0x2dad7a,_0x4d2d3c,function(){console[_0x2fd4('0x42')](_0x2fd4('0x43'),_0x4d2d3c,_0x2dad7a);require(_0x2fd4('0x44'))['default']();return _0xb18b38('RPC\x20listening\x20on\x20'+_0x4d2d3c+':'+_0x2dad7a);});});};
\ No newline at end of file
+var _0xe1b9=['../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','default','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc'];(function(_0x4494bd,_0x5d4c66){var _0x49ede9=function(_0x360670){while(--_0x360670){_0x4494bd['push'](_0x4494bd['shift']());}};_0x49ede9(++_0x5d4c66);}(_0xe1b9,0x68));var _0x9e1b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe1b9[_0x57b54c];return _0x59cc19;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x9e1b('0x0'));var _=require(_0x9e1b('0x1'));var config=require(_0x9e1b('0x2'));exports[_0x9e1b('0x3')]=function(){return new BPromise(function(_0x40dc9c,_0x5bed17){var _0x161de1={};_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x5')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x6')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/voiceQueue/voiceQueue.rpc'));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x7')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x8')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x9')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0xa')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0xb')));_0x161de1=_['merge'](_0x161de1,require('../api/memberReport/memberReport.rpc'));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0xc')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0xd')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0xe')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0xf')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x10')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x11')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x12')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x13')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x14')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/faxAccount/faxAccount.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x15')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x16')));_0x161de1=_['merge'](_0x161de1,require('../api/faxMessage/faxMessage.rpc'));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x17')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x18')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x19')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1a')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/smsMessage/smsMessage.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1b')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1c')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1d')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x161de1=_['merge'](_0x161de1,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1e')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x1f')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x20')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x21')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x22')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x23')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x24')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x25')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/interval/interval.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/pause/pause.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x26')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x27')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x28')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x29')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x2a')));_0x161de1=_['merge'](_0x161de1,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x2b')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x2c')));_0x161de1=_['merge'](_0x161de1,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x2d')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x2e')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x2f')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x30')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x31')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x32')));_0x161de1=_['merge'](_0x161de1,require('../api/squareReport/squareReport.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x33')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x34')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x35')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/squareRecording/squareRecording.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x36')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x37')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x38')));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x39')));_0x161de1=_['merge'](_0x161de1,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require(_0x9e1b('0x3a')));_0x161de1=_[_0x9e1b('0x4')](_0x161de1,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x161de1=_['merge'](_0x161de1,require(_0x9e1b('0x3b')));var _0x325e22=jayson[_0x9e1b('0x3c')](_0x161de1)['http']();var _0x50f6a4=config[_0x9e1b('0x3d')][_0x9e1b('0x3e')]||config['port']+0x1;var _0x4276b5=config[_0x9e1b('0x3d')]['ip']||_0x9e1b('0x3f');_0x325e22['on'](_0x9e1b('0x40'),function(_0x402fa6){return _0x5bed17(_0x402fa6);});_0x325e22[_0x9e1b('0x3')](_0x50f6a4,_0x4276b5,function(){console[_0x9e1b('0x41')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x4276b5,_0x50f6a4);require('../config/triggers')[_0x9e1b('0x42')]();return _0x40dc9c(_0x9e1b('0x43')+_0x4276b5+':'+_0x50f6a4);});});};
\ No newline at end of file
index b27ebdc..2e4c366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','isPlainObject','keys','reduce','safeTemplate'];(function(_0x3edeb1,_0x5d0526){var _0x4d1e51=function(_0x4ae1a9){while(--_0x4ae1a9){_0x3edeb1['push'](_0x3edeb1['shift']());}};_0x4d1e51(++_0x5d0526);}(_0xef0f,0x168));var _0xfef0=function(_0x500f0b,_0x21a6a8){_0x500f0b=_0x500f0b-0x0;var _0x204137=_0xef0f[_0x500f0b];return _0x204137;};var _=require(_0xfef0('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x581303){return _0x581303==='{{'?_0xfef0('0x1'):_0xfef0('0x2');}function safeTemplate(_0x19f865){var _0x4d29e5=_0x19f865;if(typeof _0x19f865===_0xfef0('0x3')){_0x4d29e5=_0x19f865[_0xfef0('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xfef0('0x5')](_0x19f865)){_0x4d29e5=_0x19f865['map'](function(_0x2a6fcf){return safeTemplate(_0x2a6fcf);});}else if(_[_0xfef0('0x6')](_0x19f865)){_0x4d29e5=Object[_0xfef0('0x7')](_0x19f865)[_0xfef0('0x8')](function(_0xad43e,_0x11dfd7){_0xad43e[_0x11dfd7]=safeTemplate(_0x19f865[_0x11dfd7]);return _0xad43e;},{});}return _0x4d29e5;}module['exports'][_0xfef0('0x9')]=safeTemplate;
\ No newline at end of file
+var _0xb7e7=['reduce','safeTemplate','lodash','{\x20{\x20','string','isArray','map'];(function(_0x2d2b38,_0x4fdd78){var _0x3b57b7=function(_0x16b459){while(--_0x16b459){_0x2d2b38['push'](_0x2d2b38['shift']());}};_0x3b57b7(++_0x4fdd78);}(_0xb7e7,0x121));var _0x7b7e=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xb7e7[_0x138adb];return _0x1b27f2;};var _=require(_0x7b7e('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x545d7d){return _0x545d7d==='{{'?_0x7b7e('0x1'):'\x20}\x20}';}function safeTemplate(_0x1b7cc7){var _0x54a37f=_0x1b7cc7;if(typeof _0x1b7cc7===_0x7b7e('0x2')){_0x54a37f=_0x1b7cc7['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x7b7e('0x3')](_0x1b7cc7)){_0x54a37f=_0x1b7cc7[_0x7b7e('0x4')](function(_0x1d9384){return safeTemplate(_0x1d9384);});}else if(_['isPlainObject'](_0x1b7cc7)){_0x54a37f=Object['keys'](_0x1b7cc7)[_0x7b7e('0x5')](function(_0x372bde,_0x7f87e0){_0x372bde[_0x7f87e0]=safeTemplate(_0x1b7cc7[_0x7f87e0]);return _0x372bde;},{});}return _0x54a37f;}module['exports'][_0x7b7e('0x6')]=safeTemplate;
\ No newline at end of file
index 9503237..8829630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe47d=['E_AGI_SOCKET_ERROR','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','setContext','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','setTimeout','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','search','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','error'];(function(_0x162aea,_0x280d91){var _0x5779cb=function(_0x316dd8){while(--_0x316dd8){_0x162aea['push'](_0x162aea['shift']());}};_0x5779cb(++_0x280d91);}(_0xe47d,0x1c5));var _0xde47=function(_0x58b35e,_0x17a8cd){_0x58b35e=_0x58b35e-0x0;var _0x86b2a0=_0xe47d[_0x58b35e];return _0x86b2a0;};'use strict';var util=require(_0xde47('0x0'));var _=require(_0xde47('0x1'));var EventEmitter=require(_0xde47('0x2'))[_0xde47('0x3')];var AGIReply=require(_0xde47('0x4'));var AGIError=require(_0xde47('0x5'));function AGIChannel(_0x59ddbf){var _0x95de96=this,_0x137406=new AGIReply(),_0xe104ab=![],_0x1aff69={};EventEmitter['call'](_0x95de96);_0x59ddbf[_0xde47('0x6')]('utf8');_0x59ddbf[_0xde47('0x7')](0x8*0x3c*0x3c*0x3e8);_0x137406[_0xde47('0x6')](_0xde47('0x8'));_0x137406['on'](_0xde47('0x9'),function(_0x432407){for(var _0x5ad910 in _0x432407){_0x95de96[_0x5ad910]=_0x432407[_0x5ad910];}_0x95de96[_0xde47('0xa')](_0xde47('0xb'));});_0x137406['on'](_0xde47('0xc'),function(_0x300fa1){if(_0x300fa1[_0xde47('0xd')]()==_0xde47('0xe')){_0x95de96[_0xde47('0xa')](_0xde47('0xe'));return;}if(_0x300fa1[_0xde47('0xf')](0x0,0xb)=='520-Invalid'){_0xe104ab=!![];}if(_0xe104ab){_0x1aff69['rx']+=_0x300fa1+'\x0a';if(_0x300fa1[_0xde47('0x10')]('520\x20End\x20of\x20proper')!=-0x1){_0xe104ab=![];}}else{_0x1aff69['rx']=_0x300fa1;}if(_0xe104ab){return;}if(typeof _0x1aff69['cb']==_0xde47('0x11')){var _0x3b573c=_0x1aff69['rx'][_0xde47('0xf')](0x0,0x3),_0x17fd78=null,_0x5d74d3=null;_0x3b573c=parseInt(_0x3b573c);if(isNaN(_0x3b573c)){_0x1aff69['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xde47('0x12')});return;}if(_0x3b573c!=0xc8){_0x1aff69['cb'](null,{'code':_0x3b573c,'result':-0x1,'extra':'KO'});return;}_0x17fd78=_0x1aff69['rx']['substring'](0x4)[_0xde47('0x13')](_0xde47('0x14'),'');if(_0x17fd78[_0xde47('0x15')]('\x20')!=-0x1){_0x17fd78=_0x17fd78[_0xde47('0x16')](0x0,_0x17fd78[_0xde47('0x15')]('\x20'));}if(_[_0xde47('0x17')](_0x17fd78,'-1')){_0x17fd78=parseInt(_0x17fd78);}_0x5d74d3=_0x1aff69['rx'][_0xde47('0x18')]('\x20');if(_0x5d74d3[_0xde47('0x19')]==0x3){_0x5d74d3=_0x5d74d3[0x2][_0xde47('0xf')](0x1,_0x5d74d3[0x2][_0xde47('0x19')]-0x1);}else if(_0x5d74d3[_0xde47('0x19')]>0x3){var _0x1cb7d7=/\((.+)\)/;var _0x21e898=_0x1aff69['rx']['match'](_0x1cb7d7);if(_0x21e898){_0x5d74d3=_0x21e898[0x1];}else{_0x5d74d3=null;}}else{_0x5d74d3=null;}_0x1aff69['cb'](null,{'code':_0x3b573c,'result':_0x17fd78,'extra':_0x5d74d3});}});_0x59ddbf['on'](_0xde47('0x1a'),function(_0x12af88){_0x95de96[_0xde47('0xa')](_0xde47('0x1a'),new AGIError(_0xde47('0x1b'),_0x12af88['code']));});_0x59ddbf['on'](_0xde47('0x1c'),function(){_0x95de96[_0xde47('0xa')](_0xde47('0x1c'),new AGIError(_0xde47('0x1d')));});_0x59ddbf['on'](_0xde47('0x1e'),function(){_0x95de96[_0xde47('0xa')](_0xde47('0x1e'),new AGIError(_0xde47('0x1f')));_0x59ddbf[_0xde47('0x20')]();});_0x59ddbf[_0xde47('0x21')](_0x137406);this[_0xde47('0x22')]=function(_0x1618d5,_0x170f65){var _0x1618d5=_0x1618d5||'',_0x170f65=typeof _0x170f65==_0xde47('0x11')?_0x170f65:new Function();_0x1aff69={'tx':_0x1618d5,'rx':'','cb':_0x170f65};_0x59ddbf[_0xde47('0x23')](_0x1618d5+'\x0a');},this[_0xde47('0x1c')]=function(){_0x59ddbf['destroy']();};}util[_0xde47('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xde47('0x25')][_0xde47('0x26')]=function(_0x430485){return this[_0xde47('0x22')][_0xde47('0x27')](this,_0x430485);};AGIChannel['prototype'][_0xde47('0x28')]=function(){return this['sendRequest'](_0xde47('0x29'));};AGIChannel['prototype'][_0xde47('0x2a')]=function(_0x5341bc,_0x1afb46,_0x30379e){_0x5341bc=_0x5341bc===undefined?_0xde47('0x2b'):_0x5341bc;_0x1afb46=_0x1afb46===undefined?'5':_0x1afb46;_0x30379e=_0x30379e===undefined?'1':_0x30379e;return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x2d'),_0x5341bc,_0x1afb46*0x3e8,_0x30379e));};AGIChannel['prototype']['noop']=function(_0xbcd338){_0xbcd338=_0xbcd338||_0xde47('0x2e');return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x2f'),_0xbcd338));};AGIChannel['prototype'][_0xde47('0x30')]=function(_0x536ac7,_0x3f37e3){if(_[_0xde47('0x31')](_0x3f37e3)){return this[_0xde47('0x26')](util['format'](_0xde47('0x32'),_0x536ac7,_0x3f37e3[_0xde47('0x33')](',')));}return this['sendRequest'](util[_0xde47('0x2c')](_0xde47('0x32'),_0x536ac7,_0x3f37e3));};AGIChannel[_0xde47('0x25')]['setContext']=function(_0x30b6ba){return this[_0xde47('0x26')](util[_0xde47('0x2c')]('SET\x20CONTEXT\x20%s',_0x30b6ba));};AGIChannel[_0xde47('0x25')][_0xde47('0x34')]=function(_0x1e76a0){return this[_0xde47('0x26')](util['format'](_0xde47('0x35'),_0x1e76a0));};AGIChannel['prototype'][_0xde47('0x36')]=function(_0x405dd8){return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x37'),_0x405dd8));};AGIChannel[_0xde47('0x25')][_0xde47('0xe')]=function(){return this[_0xde47('0x26')]('HANGUP');};AGIChannel['prototype']['setVariable']=function(_0x550f0d,_0x1e9fe9){var _0x55cb0a=_['isBoolean'](_0x1e9fe9)||_[_0xde47('0x38')](_0x1e9fe9)?_0x1e9fe9['toString']():_0x1e9fe9;return this[_0xde47('0x26')](util['format'](_0xde47('0x39'),_0x550f0d,_0x55cb0a?_0x55cb0a[_0xde47('0x3a')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xde47('0x25')][_0xde47('0x3b')]=function(_0xa8dded,_0x3e48e6){return this['sendRequest'](util['format'](_0xde47('0x3c'),_0xa8dded,_0x3e48e6));};AGIChannel[_0xde47('0x25')][_0xde47('0x3d')]=function(_0x4904cd,_0x4e95cf){return this['sendRequest'](util[_0xde47('0x2c')](_0xde47('0x3e'),_0x4904cd,_0x4e95cf));};AGIChannel[_0xde47('0x25')][_0xde47('0x3f')]=function(_0x27f379,_0x13d7cb){return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x40'),_0x27f379,_0x13d7cb));};AGIChannel['prototype']['continueAt']=function(_0x17124f,_0x340db1,_0x2a58da){_0x340db1=_0x340db1||this[_0xde47('0x41')];_0x2a58da=_0x2a58da||0x1;this[_0xde47('0x42')](_0x17124f);this[_0xde47('0x34')](_0x340db1);this['setPriority'](_0x2a58da);return this[_0xde47('0x43')](util['format'](_0xde47('0x44'),_0x17124f,_0x340db1,_0x2a58da));};AGIChannel[_0xde47('0x25')][_0xde47('0x45')]=function(_0x47ed62){return this[_0xde47('0x26')](util[_0xde47('0x2c')]('GET\x20VARIABLE\x20\x22%s\x22',_0x47ed62));};AGIChannel['prototype'][_0xde47('0x46')]=function(_0x56c724,_0x502c9b,_0x539ec8,_0x520b86,_0x1ad98c,_0x31e9d5){_0x502c9b=_0x502c9b||_0xde47('0x47');_0x539ec8=_0x539ec8||'';_0x520b86=_0x520b86===undefined?-0x1:_0x520b86==='-1'?-0x1:_0x520b86*0x3e8;_0x1ad98c=_0x1ad98c===undefined?'':'s='+_0x1ad98c;_0x31e9d5=_0x31e9d5?'BEEP':'';return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x48'),_0x56c724,_0x502c9b,_0x539ec8,_0x520b86,_0x31e9d5,_0x1ad98c));};AGIChannel['prototype'][_0xde47('0x49')]=function(_0x5aad08,_0x3b2bd5){_0x3b2bd5=_0x3b2bd5||'';return this[_0xde47('0x26')](util[_0xde47('0x2c')](_0xde47('0x4a'),_0x5aad08,_0x3b2bd5));};AGIChannel[_0xde47('0x25')][_0xde47('0x4b')]=function(_0x19e3ca){return this[_0xde47('0x30')](_0xde47('0x4c'),_0x19e3ca);};AGIChannel[_0xde47('0x25')]['wait']=function(_0x40b5f6){return this[_0xde47('0x30')]('WAIT',_0x40b5f6);};AGIChannel[_0xde47('0x25')][_0xde47('0x1a')]=function(_0x1a0647,_0x14d3aa){this[_0xde47('0x43')](util[_0xde47('0x2c')](_0xde47('0x4d'),_0x1a0647['id'],_0x1a0647[_0xde47('0x4e')],_0x14d3aa));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xde47('0x4f')]=AGIChannel;
\ No newline at end of file
+var _0x7d37=['SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','hangup','setVariable','isBoolean','isNumber','toString','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','agi','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','./reply','./error','call','utf8','setEncoding','emit','line','toLowerCase','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sync','answer','sendRequest','ANSWER','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension'];(function(_0x104af1,_0x3160f5){var _0x3b9c97=function(_0x2b3b35){while(--_0x2b3b35){_0x104af1['push'](_0x104af1['shift']());}};_0x3b9c97(++_0x3160f5);}(_0x7d37,0x1db));var _0x77d3=function(_0x6aef63,_0x5af004){_0x6aef63=_0x6aef63-0x0;var _0x3f3c73=_0x7d37[_0x6aef63];return _0x3f3c73;};'use strict';var util=require(_0x77d3('0x0'));var _=require(_0x77d3('0x1'));var EventEmitter=require(_0x77d3('0x2'))['EventEmitter'];var AGIReply=require(_0x77d3('0x3'));var AGIError=require(_0x77d3('0x4'));function AGIChannel(_0x32a87d){var _0x52c909=this,_0x293f20=new AGIReply(),_0x2ae533=![],_0x59773d={};EventEmitter[_0x77d3('0x5')](_0x52c909);_0x32a87d['setEncoding'](_0x77d3('0x6'));_0x32a87d['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x293f20[_0x77d3('0x7')](_0x77d3('0x6'));_0x293f20['on']('headers',function(_0x555390){for(var _0x6861f7 in _0x555390){_0x52c909[_0x6861f7]=_0x555390[_0x6861f7];}_0x52c909[_0x77d3('0x8')]('ready');});_0x293f20['on'](_0x77d3('0x9'),function(_0x5e8c4d){if(_0x5e8c4d[_0x77d3('0xa')]()=='hangup'){_0x52c909[_0x77d3('0x8')]('hangup');return;}if(_0x5e8c4d[_0x77d3('0xb')](0x0,0xb)==_0x77d3('0xc')){_0x2ae533=!![];}if(_0x2ae533){_0x59773d['rx']+=_0x5e8c4d+'\x0a';if(_0x5e8c4d[_0x77d3('0xd')](_0x77d3('0xe'))!=-0x1){_0x2ae533=![];}}else{_0x59773d['rx']=_0x5e8c4d;}if(_0x2ae533){return;}if(typeof _0x59773d['cb']==_0x77d3('0xf')){var _0xe69786=_0x59773d['rx'][_0x77d3('0xb')](0x0,0x3),_0x34446e=null,_0x136304=null;_0xe69786=parseInt(_0xe69786);if(isNaN(_0xe69786)){_0x59773d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0xe69786!=0xc8){_0x59773d['cb'](null,{'code':_0xe69786,'result':-0x1,'extra':'KO'});return;}_0x34446e=_0x59773d['rx'][_0x77d3('0xb')](0x4)['replace']('result=','');if(_0x34446e['indexOf']('\x20')!=-0x1){_0x34446e=_0x34446e[_0x77d3('0x10')](0x0,_0x34446e[_0x77d3('0x11')]('\x20'));}if(_[_0x77d3('0x12')](_0x34446e,'-1')){_0x34446e=parseInt(_0x34446e);}_0x136304=_0x59773d['rx'][_0x77d3('0x13')]('\x20');if(_0x136304[_0x77d3('0x14')]==0x3){_0x136304=_0x136304[0x2]['substring'](0x1,_0x136304[0x2][_0x77d3('0x14')]-0x1);}else if(_0x136304[_0x77d3('0x14')]>0x3){var _0x5e92d8=/\((.+)\)/;var _0x5dbf72=_0x59773d['rx'][_0x77d3('0x15')](_0x5e92d8);if(_0x5dbf72){_0x136304=_0x5dbf72[0x1];}else{_0x136304=null;}}else{_0x136304=null;}_0x59773d['cb'](null,{'code':_0xe69786,'result':_0x34446e,'extra':_0x136304});}});_0x32a87d['on'](_0x77d3('0x16'),function(_0x60173f){_0x52c909[_0x77d3('0x8')](_0x77d3('0x16'),new AGIError(_0x77d3('0x17'),_0x60173f[_0x77d3('0x18')]));});_0x32a87d['on'](_0x77d3('0x19'),function(){_0x52c909[_0x77d3('0x8')](_0x77d3('0x19'),new AGIError(_0x77d3('0x1a')));});_0x32a87d['on'](_0x77d3('0x1b'),function(){_0x52c909[_0x77d3('0x8')](_0x77d3('0x1b'),new AGIError(_0x77d3('0x1c')));_0x32a87d[_0x77d3('0x1d')]();});_0x32a87d[_0x77d3('0x1e')](_0x293f20);this[_0x77d3('0x1f')]=function(_0x47b542,_0x2acc21){var _0x47b542=_0x47b542||'',_0x2acc21=typeof _0x2acc21==_0x77d3('0xf')?_0x2acc21:new Function();_0x59773d={'tx':_0x47b542,'rx':'','cb':_0x2acc21};_0x32a87d[_0x77d3('0x20')](_0x47b542+'\x0a');},this[_0x77d3('0x19')]=function(){_0x32a87d[_0x77d3('0x1d')]();};}util[_0x77d3('0x21')](AGIChannel,EventEmitter);AGIChannel[_0x77d3('0x22')]['sendRequest']=function(_0x404b1e){return this['command'][_0x77d3('0x23')](this,_0x404b1e);};AGIChannel[_0x77d3('0x22')][_0x77d3('0x24')]=function(){return this[_0x77d3('0x25')](_0x77d3('0x26'));};AGIChannel[_0x77d3('0x22')]['getData']=function(_0x17c6c6,_0x546181,_0x210f6e){_0x17c6c6=_0x17c6c6===undefined?_0x77d3('0x27'):_0x17c6c6;_0x546181=_0x546181===undefined?'5':_0x546181;_0x210f6e=_0x210f6e===undefined?'1':_0x210f6e;return this[_0x77d3('0x25')](util[_0x77d3('0x28')](_0x77d3('0x29'),_0x17c6c6,_0x546181*0x3e8,_0x210f6e));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x2a')]=function(_0x41b79d){_0x41b79d=_0x41b79d||'NO\x20MESSAGE';return this[_0x77d3('0x25')](util[_0x77d3('0x28')]('VERBOSE\x20\x22%s\x22',_0x41b79d));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x2b')]=function(_0x50970a,_0x524f89){if(_[_0x77d3('0x2c')](_0x524f89)){return this['sendRequest'](util[_0x77d3('0x28')](_0x77d3('0x2d'),_0x50970a,_0x524f89[_0x77d3('0x2e')](',')));}return this['sendRequest'](util['format']('EXEC\x20%s\x20%s',_0x50970a,_0x524f89));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x2f')]=function(_0x45a02c){return this[_0x77d3('0x25')](util[_0x77d3('0x28')](_0x77d3('0x30'),_0x45a02c));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x31')]=function(_0x5d80d9){return this['sendRequest'](util[_0x77d3('0x28')](_0x77d3('0x32'),_0x5d80d9));};AGIChannel['prototype'][_0x77d3('0x33')]=function(_0x52d1d6){return this[_0x77d3('0x25')](util[_0x77d3('0x28')](_0x77d3('0x34'),_0x52d1d6));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x35')]=function(){return this['sendRequest']('HANGUP');};AGIChannel[_0x77d3('0x22')][_0x77d3('0x36')]=function(_0x1e1265,_0x248534){var _0x2b22e1=_[_0x77d3('0x37')](_0x248534)||_[_0x77d3('0x38')](_0x248534)?_0x248534[_0x77d3('0x39')]():_0x248534;return this[_0x77d3('0x25')](util[_0x77d3('0x28')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x1e1265,_0x2b22e1?_0x2b22e1['toString']()[_0x77d3('0x3a')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x77d3('0x3b')]=function(_0x48e294,_0x15ab5f){return this['sendRequest'](util[_0x77d3('0x28')](_0x77d3('0x3c'),_0x48e294,_0x15ab5f));};AGIChannel['prototype'][_0x77d3('0x3d')]=function(_0x4580ee,_0x519e80){return this[_0x77d3('0x25')](util[_0x77d3('0x28')](_0x77d3('0x3e'),_0x4580ee,_0x519e80));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x3f')]=function(_0x412cb5,_0x2f9091){return this[_0x77d3('0x25')](util['format'](_0x77d3('0x40'),_0x412cb5,_0x2f9091));};AGIChannel[_0x77d3('0x22')][_0x77d3('0x41')]=function(_0x30c615,_0x28a0c3,_0x603c92){_0x28a0c3=_0x28a0c3||this[_0x77d3('0x42')];_0x603c92=_0x603c92||0x1;this[_0x77d3('0x2f')](_0x30c615);this[_0x77d3('0x31')](_0x28a0c3);this[_0x77d3('0x33')](_0x603c92);return this[_0x77d3('0x2a')](util[_0x77d3('0x28')](_0x77d3('0x43'),_0x30c615,_0x28a0c3,_0x603c92));};AGIChannel[_0x77d3('0x22')]['getVariable']=function(_0x316441){return this[_0x77d3('0x25')](util[_0x77d3('0x28')]('GET\x20VARIABLE\x20\x22%s\x22',_0x316441));};AGIChannel['prototype']['recordFile']=function(_0xd2c9e8,_0x2267f2,_0xc24ae9,_0x3abe37,_0xc2e93f,_0x1b96ad){_0x2267f2=_0x2267f2||'wav';_0xc24ae9=_0xc24ae9||'';_0x3abe37=_0x3abe37===undefined?-0x1:_0x3abe37==='-1'?-0x1:_0x3abe37*0x3e8;_0xc2e93f=_0xc2e93f===undefined?'':'s='+_0xc2e93f;_0x1b96ad=_0x1b96ad?'BEEP':'';return this[_0x77d3('0x25')](util[_0x77d3('0x28')](_0x77d3('0x44'),_0xd2c9e8,_0x2267f2,_0xc24ae9,_0x3abe37,_0x1b96ad,_0xc2e93f));};AGIChannel['prototype']['streamFile']=function(_0x2dd594,_0x2275bc){_0x2275bc=_0x2275bc||'';return this['sendRequest'](util[_0x77d3('0x28')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x2dd594,_0x2275bc));};AGIChannel['prototype'][_0x77d3('0x45')]=function(_0xc68f80){return this[_0x77d3('0x2b')](_0x77d3('0x46'),_0xc68f80);};AGIChannel[_0x77d3('0x22')][_0x77d3('0x47')]=function(_0x1bdc64){return this[_0x77d3('0x2b')]('WAIT',_0x1bdc64);};AGIChannel[_0x77d3('0x22')][_0x77d3('0x16')]=function(_0x2e62bf,_0x1e2d39){this[_0x77d3('0x2a')](util[_0x77d3('0x28')](_0x77d3('0x48'),_0x2e62bf['id'],_0x2e62bf[_0x77d3('0x49')],_0x1e2d39));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x77d3('0x4a')]=AGIChannel;
\ No newline at end of file
index 6a34e21..7127891 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8375=['exports','util','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name'];(function(_0x66bc7c,_0x3aace0){var _0x26b129=function(_0x4664a0){while(--_0x4664a0){_0x66bc7c['push'](_0x66bc7c['shift']());}};_0x26b129(++_0x3aace0);}(_0x8375,0x145));var _0x5837=function(_0x6726bf,_0x1f31b9){_0x6726bf=_0x6726bf-0x0;var _0x15bfc3=_0x8375[_0x6726bf];return _0x15bfc3;};'use strict';var util=require(_0x5837('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x5837('0x1'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x5837('0x2'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x5837('0x3'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x5837('0x4')};function AGIError(_0x2419ad){var _0x2419ad=_0x2419ad||null,_0x263571=_0x263571||[],_0x5cd183=0x1,_0x5cae1d='';if(!error[_0x2419ad]){_0x2419ad=_0x5837('0x5');}_0x263571[_0x5837('0x6')](error[_0x2419ad]);while(arguments[_0x5cd183]){_0x263571['push'](arguments[_0x5cd183]);_0x5cd183++;}_0x5cae1d=util[_0x5837('0x7')][_0x5837('0x8')](util,_0x263571);this[_0x5837('0x9')]=_0x5cae1d;this[_0x5837('0xa')]=_0x2419ad;}module[_0x5837('0xb')]=AGIError;
\ No newline at end of file
+var _0xd64f=['Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','message','name','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.'];(function(_0x8b78b,_0x2f6d4b){var _0x598598=function(_0x33a55c){while(--_0x33a55c){_0x8b78b['push'](_0x8b78b['shift']());}};_0x598598(++_0x2f6d4b);}(_0xd64f,0x152));var _0xfd64=function(_0x3aa4a3,_0x4619a5){_0x3aa4a3=_0x3aa4a3-0x0;var _0x44a8cd=_0xd64f[_0x3aa4a3];return _0x44a8cd;};'use strict';var util=require(_0xfd64('0x0'));var error={'E_AGI_UNDEFINED':_0xfd64('0x1'),'E_AGI_ARGUMENT_PORT':_0xfd64('0x2'),'E_AGI_SERVER_ERROR':_0xfd64('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0xfd64('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xfd64('0x5'),'E_AGI_SOCKET_ERROR':_0xfd64('0x6'),'E_AGI_SOCKET_CLOSE':_0xfd64('0x7'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xfd64('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xfd64('0x9')};function AGIError(_0xc71ac6){var _0xc71ac6=_0xc71ac6||null,_0xdbbb4d=_0xdbbb4d||[],_0x54cd2d=0x1,_0x1debc3='';if(!error[_0xc71ac6]){_0xc71ac6=_0xfd64('0xa');}_0xdbbb4d[_0xfd64('0xb')](error[_0xc71ac6]);while(arguments[_0x54cd2d]){_0xdbbb4d[_0xfd64('0xb')](arguments[_0x54cd2d]);_0x54cd2d++;}_0x1debc3=util['format'][_0xfd64('0xc')](util,_0xdbbb4d);this[_0xfd64('0xd')]=_0x1debc3;this[_0xfd64('0xe')]=_0xc71ac6;}module['exports']=AGIError;
\ No newline at end of file
index e1500a4..b35b7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa81a=['relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size'];(function(_0x1724e6,_0x5412d5){var _0x173f53=function(_0x1172ed){while(--_0x1172ed){_0x1724e6['push'](_0x1724e6['shift']());}};_0x173f53(++_0x5412d5);}(_0xa81a,0x13c));var _0xaa81=function(_0x4d1fc5,_0x21d2f5){_0x4d1fc5=_0x4d1fc5-0x0;var _0x397db6=_0xa81a[_0x4d1fc5];return _0x397db6;};'use strict';var _=require(_0xaa81('0x0'));var logger=require(_0xaa81('0x1'))(_0xaa81('0x2'));var verticesWithRetry=[_0xaa81('0x3'),_0xaa81('0x4'),_0xaa81('0x5')];var Graph=function(){this['vertices']={};this[_0xaa81('0x6')]={};this[_0xaa81('0x7')]=0x0;};Graph[_0xaa81('0x8')][_0xaa81('0x9')]=function(_0xb0f934){this[_0xaa81('0xa')][_0xb0f934['id']]=_0xb0f934;this[_0xaa81('0x6')][_0xb0f934['id']]=[];};Graph['prototype'][_0xaa81('0xb')]=function(_0x5e73e4,_0x259696,_0x60ab7a){this['edges'][_0x5e73e4][_0xaa81('0xc')]({'target':_0x259696,'condition':_0x60ab7a});this[_0xaa81('0x7')]+=0x1;};Graph[_0xaa81('0x8')][_0xaa81('0xd')]=function(){return _[_0xaa81('0xd')](this[_0xaa81('0xa')]);};Graph['prototype'][_0xaa81('0xe')]=function(){return this[_0xaa81('0x7')];};Graph['prototype']['getVertex']=function(_0x1492ec){return this[_0xaa81('0xa')][_0x1492ec];};Graph[_0xaa81('0x8')][_0xaa81('0xf')]=function(_0x52cf1e,_0x52e80d){if(!this[_0xaa81('0xa')][_0x52cf1e]){return logger[_0xaa81('0x10')](_0xaa81('0x11'));}var _0x13080e=_0x52e80d(this[_0xaa81('0xa')][_0x52cf1e]);if(!_0x13080e){return logger[_0xaa81('0x10')](_0xaa81('0x12'));}if(this[_0xaa81('0x6')][_0x52cf1e][_0xaa81('0x13')]===0x0){return logger[_0xaa81('0x10')](_0xaa81('0x14'));}for(var _0x4ad78c=0x0,_0x3a20b2=[],_0x2c5c53=![];_0x4ad78c<this[_0xaa81('0x6')][_0x52cf1e]['length'];_0x4ad78c+=0x1){if(this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x15')]){_0x3a20b2=this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c]['condition'][_0xaa81('0x16')](',');for(var _0x3b7ef8=0x0;_0x3b7ef8<_0x3a20b2['length'];_0x3b7ef8+=0x1){if(this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')]===_0xaa81('0x18')&&_0x3a20b2[_0x3b7ef8]==='-'){_0x2c5c53=this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')];logger[_0xaa81('0x10')]('default',_0x3a20b2[_0x3b7ef8],this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')]);}else if(this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')]===_0xaa81('0x3')&&_0x3a20b2[_0x3b7ef8]==='i'){_0x2c5c53=this['edges'][_0x52cf1e][_0x4ad78c]['target'];logger[_0xaa81('0x10')]('invalid',_0x3a20b2[_0x3b7ef8],this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c]['target']);}if(_0x3a20b2[_0x3b7ef8]===_0x13080e){return this[_0xaa81('0xf')](this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')],_0x52e80d);}}}else{return this['traverseBFS'](this[_0xaa81('0x6')][_0x52cf1e][_0x4ad78c][_0xaa81('0x19')],_0x52e80d);}}if(_0x3a20b2[_0xaa81('0x13')]){if(this[_0xaa81('0xa')][_0x52cf1e]['agicommand']===_0xaa81('0x18')){if(_0x2c5c53){return this[_0xaa81('0xf')](_0x2c5c53,_0x52e80d);}return logger[_0xaa81('0x10')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0xaa81('0x1a')](verticesWithRetry,this[_0xaa81('0xa')][_0x52cf1e][_0xaa81('0x17')])){if(_0x13080e==='-'){return logger[_0xaa81('0x10')](_0xaa81('0x1b'));}if(_0x2c5c53&&_0x13080e!=='t'){return this[_0xaa81('0xf')](_0x2c5c53,_0x52e80d);}return this[_0xaa81('0xf')](_0x52cf1e,_0x52e80d);}return logger[_0xaa81('0x10')](_0xaa81('0x1c'));}};module[_0xaa81('0x1d')]=Graph;
\ No newline at end of file
+var _0xcd57=['max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','edges','numberOfEdges','prototype','vertices','size','relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','condition','split','length','agicommand','target','default','invalid','vswitch','default\x20on\x20switch\x20not\x20found'];(function(_0x2a6847,_0x18c539){var _0x3510de=function(_0x3f0700){while(--_0x3f0700){_0x2a6847['push'](_0x2a6847['shift']());}};_0x3510de(++_0x18c539);}(_0xcd57,0x16e));var _0x7cd5=function(_0x55e839,_0x3b5345){_0x55e839=_0x55e839-0x0;var _0x39c61a=_0xcd57[_0x55e839];return _0x39c61a;};'use strict';var _=require(_0x7cd5('0x0'));var logger=require(_0x7cd5('0x1'))(_0x7cd5('0x2'));var verticesWithRetry=[_0x7cd5('0x3'),_0x7cd5('0x4'),_0x7cd5('0x5')];var Graph=function(){this['vertices']={};this[_0x7cd5('0x6')]={};this[_0x7cd5('0x7')]=0x0;};Graph[_0x7cd5('0x8')]['addVertex']=function(_0x15232a){this[_0x7cd5('0x9')][_0x15232a['id']]=_0x15232a;this[_0x7cd5('0x6')][_0x15232a['id']]=[];};Graph['prototype']['addEdge']=function(_0x14d6d4,_0xa8fe27,_0x456167){this[_0x7cd5('0x6')][_0x14d6d4]['push']({'target':_0xa8fe27,'condition':_0x456167});this['numberOfEdges']+=0x1;};Graph[_0x7cd5('0x8')][_0x7cd5('0xa')]=function(){return _[_0x7cd5('0xa')](this['vertices']);};Graph['prototype'][_0x7cd5('0xb')]=function(){return this['numberOfEdges'];};Graph[_0x7cd5('0x8')]['getVertex']=function(_0x49c812){return this['vertices'][_0x49c812];};Graph[_0x7cd5('0x8')][_0x7cd5('0xc')]=function(_0x1a4d3d,_0x41dcf3){if(!this[_0x7cd5('0x9')][_0x1a4d3d]){return logger[_0x7cd5('0xd')](_0x7cd5('0xe'));}var _0x4a312d=_0x41dcf3(this[_0x7cd5('0x9')][_0x1a4d3d]);if(!_0x4a312d){return logger[_0x7cd5('0xd')](_0x7cd5('0xf'));}if(this['edges'][_0x1a4d3d]['length']===0x0){return logger['info'](_0x7cd5('0x10'));}for(var _0x26cf23=0x0,_0x37aa2d=[],_0x4d45e5=![];_0x26cf23<this[_0x7cd5('0x6')][_0x1a4d3d]['length'];_0x26cf23+=0x1){if(this['edges'][_0x1a4d3d][_0x26cf23][_0x7cd5('0x11')]){_0x37aa2d=this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23][_0x7cd5('0x11')][_0x7cd5('0x12')](',');for(var _0x35a797=0x0;_0x35a797<_0x37aa2d[_0x7cd5('0x13')];_0x35a797+=0x1){if(this[_0x7cd5('0x9')][_0x1a4d3d][_0x7cd5('0x14')]==='vswitch'&&_0x37aa2d[_0x35a797]==='-'){_0x4d45e5=this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23][_0x7cd5('0x15')];logger[_0x7cd5('0xd')](_0x7cd5('0x16'),_0x37aa2d[_0x35a797],this['edges'][_0x1a4d3d][_0x26cf23][_0x7cd5('0x15')]);}else if(this[_0x7cd5('0x9')][_0x1a4d3d][_0x7cd5('0x14')]===_0x7cd5('0x3')&&_0x37aa2d[_0x35a797]==='i'){_0x4d45e5=this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23]['target'];logger[_0x7cd5('0xd')](_0x7cd5('0x17'),_0x37aa2d[_0x35a797],this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23][_0x7cd5('0x15')]);}if(_0x37aa2d[_0x35a797]===_0x4a312d){return this['traverseBFS'](this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23][_0x7cd5('0x15')],_0x41dcf3);}}}else{return this[_0x7cd5('0xc')](this[_0x7cd5('0x6')][_0x1a4d3d][_0x26cf23]['target'],_0x41dcf3);}}if(_0x37aa2d[_0x7cd5('0x13')]){if(this[_0x7cd5('0x9')][_0x1a4d3d]['agicommand']===_0x7cd5('0x18')){if(_0x4d45e5){return this['traverseBFS'](_0x4d45e5,_0x41dcf3);}return logger['info'](_0x7cd5('0x19'));}else if(_['includes'](verticesWithRetry,this[_0x7cd5('0x9')][_0x1a4d3d][_0x7cd5('0x14')])){if(_0x4a312d==='-'){return logger[_0x7cd5('0xd')](_0x7cd5('0x1a'));}if(_0x4d45e5&&_0x4a312d!=='t'){return this['traverseBFS'](_0x4d45e5,_0x41dcf3);}return this[_0x7cd5('0xc')](_0x1a4d3d,_0x41dcf3);}return logger[_0x7cd5('0xd')]('condition\x20not\x20found');}};module[_0x7cd5('0x1b')]=Graph;
\ No newline at end of file
index f067943..43742c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x290c=['name','message','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','length','target','source','then','catch','createSquareReport','indexOf','agi_','substring','inspect','stringify','close','hangup','sync','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','debug','vertex','agicommand','context','extension','priority','response','code','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','isUndefined','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','listening','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./graph','./vertices','127.0.0.1','nextTick','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','error','[%s]\x20%s'];(function(_0x33e03f,_0x4a8017){var _0x1b5e93=function(_0x4c1d69){while(--_0x4c1d69){_0x33e03f['push'](_0x33e03f['shift']());}};_0x1b5e93(++_0x4a8017);}(_0x290c,0xea));var _0xc290=function(_0x2e4486,_0xde5df4){_0x2e4486=_0x2e4486-0x0;var _0x5c911c=_0x290c[_0x2e4486];return _0x5c911c;};'use strict';var parser=require(_0xc290('0x0'));var _=require(_0xc290('0x1'));var syncho=require(_0xc290('0x2'));var util=require(_0xc290('0x3'));var moment=require(_0xc290('0x4'));var config=require(_0xc290('0x5'));var logger=require(_0xc290('0x6'))(_0xc290('0x7'));var utilLicense=require(_0xc290('0x8'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xc290('0x9'));var Vertices=require(_0xc290('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xc290('0x7')]=_['defaults'](config[_0xc290('0x7')],{'ip':_0xc290('0xb'),'port':0x11dd});function connectionHandler(_0x34fb84){process[_0xc290('0xc')](function(){syncho(function(){try{setChannelVariables(_0x34fb84);agiHandler(_0x34fb84);}catch(_0x3d7a07){logger['error'](_0x3d7a07[_0xc290('0xd')]);}});});}function listeningHandler(){console['log'](_0xc290('0xe'),config[_0xc290('0x7')][_0xc290('0xf')]);logger[_0xc290('0x10')](util[_0xc290('0x11')](_0xc290('0x12'),config[_0xc290('0x7')]['ip'],config['agi'][_0xc290('0xf')]));}function errorHandler(_0x9b94fa){if(_0x9b94fa&&_0x9b94fa['name']&&_0x9b94fa['message']){logger[_0xc290('0x13')](util[_0xc290('0x11')](_0xc290('0x14'),_0x9b94fa[_0xc290('0x15')],_0x9b94fa[_0xc290('0x16')]));}else{logger['error'](util[_0xc290('0x11')]('[ERROR]\x20%s',_0x9b94fa[_0xc290('0xd')]));}}function closeHandler(){logger[_0xc290('0x10')](util[_0xc290('0x11')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this['calleridname'],this[_0xc290('0x17')],this[_0xc290('0x18')],this['uniqueid']));try{createSquareReport(this);}catch(_0x385f3a){logger[_0xc290('0x13')](_0x385f3a['stack']);}}function timeoutHandler(){logger['info'](util[_0xc290('0x11')](_0xc290('0x19'),this[_0xc290('0x1a')],this[_0xc290('0x1b')],this[_0xc290('0x17')],this[_0xc290('0x18')],this[_0xc290('0x1c')]));}function hangupHandler(){logger[_0xc290('0x10')](util['format'](_0xc290('0x1d'),this[_0xc290('0x1a')],this['calleridname'],this[_0xc290('0x17')],this[_0xc290('0x18')],this[_0xc290('0x1c')]));this[_0xc290('0x1e')]=!![];}function getRoot(_0x46ee94){return parser[_0xc290('0x1f')](_0x46ee94,{'object':!![]})[_0xc290('0x20')][_0xc290('0x21')];}function addVertex(_0x4cbad7,_0x836325,_0x27b9d4){_0x836325['agicommand']=_0x27b9d4;if(_0x836325[_0xc290('0x22')]('retry')){_0x836325[_0xc290('0x23')]=parseInt(_0x836325[_0xc290('0x24')],0xa);}_0x4cbad7[_0xc290('0x25')](_[_0xc290('0x26')](_0x836325,_0xc290('0x27')));}function initGraph(_0x2f2dee,_0x1cf83f){var _0xfd7d4c=new Graph();for(var _0x2208fc in _0x2f2dee){if(_0x2f2dee[_0xc290('0x22')](_0x2208fc)){if(_[_0xc290('0x28')](_0x2f2dee[_0x2208fc])){for(var _0x3ebeff=0x0;_0x3ebeff<_0x2f2dee[_0x2208fc][_0xc290('0x29')];_0x3ebeff+=0x1){addVertex(_0xfd7d4c,_0x2f2dee[_0x2208fc][_0x3ebeff],_0x2208fc);}}else{addVertex(_0xfd7d4c,_0x2f2dee[_0x2208fc],_0x2208fc);}}}for(var _0x55f754=0x0;_0x55f754<_0x1cf83f['length'];_0x55f754+=0x1){if(_0x1cf83f[_0x55f754]['source']&&_0x1cf83f[_0x55f754][_0xc290('0x2a')]){_0xfd7d4c['addEdge'](_0x1cf83f[_0x55f754][_0xc290('0x2b')],_0x1cf83f[_0x55f754][_0xc290('0x2a')],_0x1cf83f[_0x55f754]['value']);}}return _0xfd7d4c;}function getSquareProject(_0x38a99b,_0x4adf18){rpc['getSquareProject'](_0x38a99b)[_0xc290('0x2c')](function(_0x139825){_0x4adf18(null,_0x139825);})[_0xc290('0x2d')](function(_0x11d528){_0x4adf18(null,_0x11d528);});}function createSquareReport(_0x2d76d8,_0x3da6ad){rpc[_0xc290('0x2e')](_0x2d76d8)['then'](function(_0x1f23ce){if(_0x3da6ad){_0x3da6ad(null,_0x1f23ce);}})[_0xc290('0x2d')](function(_0x3f5912){if(_0x3da6ad){_0x3da6ad(null,_0x3f5912);}});}function setChannelVariables(_0x4dfa50){for(var _0x4068c0 in _0x4dfa50){if(_0x4dfa50[_0xc290('0x22')](_0x4068c0)){if(_0x4068c0[_0xc290('0x2f')](_0xc290('0x30'))===0x0){_0x4dfa50[_0x4068c0[_0xc290('0x31')](0x4)]=_0x4dfa50[_0x4068c0];delete _0x4dfa50[_0x4068c0];}}}}function getLogFromObject(_0x57dfb8){return util[_0xc290('0x32')](_0x57dfb8,{'showHidden':![],'depth':null});}function agiHandler(_0x34ca2a){var _0x2bbf22,_0x4561c8,_0x3b8554,_0x22f7e0,_0x3f091f;logger['debug']('variables',JSON[_0xc290('0x33')](_0x34ca2a,null,0x2));logger[_0xc290('0x10')](util['format']('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x34ca2a['on'](_0xc290('0x13'),errorHandler);_0x34ca2a['on'](_0xc290('0x34'),closeHandler);_0x34ca2a['on']('timeout',timeoutHandler);_0x34ca2a['evtHangup']=![];_0x34ca2a['on'](_0xc290('0x35'),hangupHandler);var _0x33c991=getSquareProject[_0xc290('0x36')](null,_0x34ca2a['arg_1']);if(_0x33c991){if(_0x33c991[_0xc290('0x37')]){_0x2bbf22=getRoot(_0x33c991[_0xc290('0x37')]);if(_0x2bbf22&&_0x2bbf22[_0xc290('0x38')]){logger['debug'](_0xc290('0x21'),JSON[_0xc290('0x33')](_0x2bbf22,null,0x2));_0x34ca2a[_0xc290('0x39')]=moment()[_0xc290('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x4561c8=initGraph(_[_0xc290('0x26')](_0x2bbf22,_0xc290('0x27')),_0x2bbf22[_0xc290('0x27')]);_0x3b8554=new Vertices(_0x34ca2a,rpc,mailRpc);logger[_0xc290('0x10')](util['format'](_0xc290('0x3a'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x4561c8['traverseBFS'](_0x2bbf22[_0xc290('0x38')]['id'],function(_0x5ad635){try{_0x5ad635=_0x3b8554['clear'](_0x5ad635);logger[_0xc290('0x3b')](_0xc290('0x3c'),JSON[_0xc290('0x33')](_0x5ad635,null,0x2));if(_0x5ad635[_0xc290('0x3d')]==='gotoc'){logger[_0xc290('0x10')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x34ca2a[_0xc290('0x3e')]=_0x5ad635['context']||_0x34ca2a['context'];_0x34ca2a[_0xc290('0x3f')]=_0x5ad635[_0xc290('0x3f')];_0x34ca2a[_0xc290('0x40')]=_0x5ad635['priority']?_0x5ad635['priority']-0x1:0x1;return null;}else if(_0x5ad635&&_0x3b8554[_0x5ad635['agicommand']]){_0x3f091f=_0x3b8554[_0x5ad635[_0xc290('0x3d')]](_0x5ad635);logger[_0xc290('0x10')](_0xc290('0x41'),JSON[_0xc290('0x33')](_0x3f091f,null,0x2));if(_0x3f091f&&_0x3f091f[_0xc290('0x42')]===AGI_CODE_SUCCESS&&_0x3f091f[_0xc290('0x43')]!==AGI_RESULT_ERROR&&!_0x34ca2a[_0xc290('0x1e')]){logger[_0xc290('0x3b')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return _['isUndefined'](_0x3f091f[_0xc290('0x43')])?null:_0x3f091f[_0xc290('0x43')]['toString']();}else{logger['error'](_0xc290('0x41'),getLogFromObject(_0x3f091f));return null;}}else{logger[_0xc290('0x13')](_0xc290('0x44'));return null;}}catch(_0x1f6f29){logger[_0xc290('0x13')](_0x1f6f29[_0xc290('0xd')]);return null;}});if(_0x2bbf22[_0xc290('0x45')]){logger[_0xc290('0x10')](util['format'](_0xc290('0x46'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a['calleridname'],_0x34ca2a[_0xc290('0x17')],_0x34ca2a[_0xc290('0x18')],_0x34ca2a[_0xc290('0x1c')]));_0x4561c8[_0xc290('0x47')](_0x2bbf22[_0xc290('0x45')]['id'],function(_0x3998d3){try{_0x3998d3=_0x3b8554[_0xc290('0x48')](_0x3998d3);logger[_0xc290('0x3b')](_0xc290('0x3c'),JSON[_0xc290('0x33')](_0x3998d3,null,0x2));if(_0x3998d3&&_0x3b8554[_0x3998d3['agicommand']]){_0x3f091f=_0x3b8554[_0x3998d3['agicommand']](_0x3998d3);if(_0x3f091f){logger[_0xc290('0x3b')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return _[_0xc290('0x49')](_0x3f091f[_0xc290('0x43')])?null:_0x3f091f[_0xc290('0x43')][_0xc290('0x4a')]();}else{logger[_0xc290('0x13')](_0xc290('0x41'),getLogFromObject(_0x3f091f));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x1a63a2){logger[_0xc290('0x13')](_0x1a63a2[_0xc290('0xd')]);return null;}});}logger[_0xc290('0x10')](util[_0xc290('0x11')](_0xc290('0x4b'),_0x34ca2a[_0xc290('0x1a')],_0x34ca2a[_0xc290('0x1b')],_0x34ca2a[_0xc290('0x17')],_0x34ca2a['dnid'],_0x34ca2a[_0xc290('0x1c')]));logger[_0xc290('0x10')](util['format'](_0xc290('0x4c'),_0x34ca2a[_0xc290('0x3e')],_0x34ca2a['extension'],parseInt(_0x34ca2a[_0xc290('0x40')],0xa)+0x1));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a[_0xc290('0x3e')],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a['priority'],0xa)+0x1);_0x34ca2a[_0xc290('0x34')]();}}else{logger['error'](util['format'](_0xc290('0x4e'),_0x34ca2a[_0xc290('0x1a')]));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a['context'],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a[_0xc290('0x40')],0xa)+0x1);_0x34ca2a[_0xc290('0x34')]();}}else{logger[_0xc290('0x13')](util['format']('Project\x20%s\x20not\x20found',_0x34ca2a[_0xc290('0x1a')]));_0x34ca2a[_0xc290('0x4d')](_0x34ca2a[_0xc290('0x3e')],_0x34ca2a[_0xc290('0x3f')],parseInt(_0x34ca2a['priority'],0xa)+0x1);_0x34ca2a['close']();}}function main(){var _0x3ea0a3;return utilLicense['getLicense']()[_0xc290('0x2c')](function(_0x3763a2){if(_0x3763a2){if(_0x3763a2[_0xc290('0x4f')]){if(_0x3763a2[_0xc290('0x50')]&&_0x3763a2[_0xc290('0x50')]>0x0){logger[_0xc290('0x10')](util['format'](_0xc290('0x51'),_0x3763a2[_0xc290('0x50')]));_0x3ea0a3=_0x3763a2[_0xc290('0x50')];}else{logger[_0xc290('0x10')](_0xc290('0x52'));}}else{logger[_0xc290('0x10')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x3ea0a3=-0x1;}}})[_0xc290('0x2d')](function(_0x44ab65){logger[_0xc290('0x13')](_0xc290('0x53'),_0x44ab65[_0xc290('0xd')]);})['finally'](function(){var _0x44935b=require('./server')(config[_0xc290('0x7')][_0xc290('0xf')],config[_0xc290('0x7')]['ip'],_0x3ea0a3);_0x44935b['on'](_0xc290('0x13'),errorHandler);_0x44935b['on'](_0xc290('0x54'),listeningHandler);_0x44935b['on']('connection',connectionHandler);_0x44935b['on'](_0xc290('0x34'),closeHandler);});}main();
\ No newline at end of file
+var _0xe7ae=['hasOwnProperty','retry','omit','isArray','length','source','target','value','getSquareProject','then','catch','createSquareReport','indexOf','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','sync','production','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','start','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','connection','lodash','syncho','../../config/logger','agi','./rpc','./mailRpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root'];(function(_0x222e42,_0x7b9b90){var _0x428a3d=function(_0x379acd){while(--_0x379acd){_0x222e42['push'](_0x222e42['shift']());}};_0x428a3d(++_0x7b9b90);}(_0xe7ae,0x91));var _0xee7a=function(_0x42f637,_0x3fa8fc){_0x42f637=_0x42f637-0x0;var _0x4978e3=_0xe7ae[_0x42f637];return _0x4978e3;};'use strict';var parser=require('xml2json');var _=require(_0xee7a('0x0'));var syncho=require(_0xee7a('0x1'));var util=require('util');var moment=require('moment');var config=require('../../config/environment');var logger=require(_0xee7a('0x2'))(_0xee7a('0x3'));var utilLicense=require('../../config/license/util');var rpc=require(_0xee7a('0x4'));var mailRpc=require(_0xee7a('0x5'));var Graph=require(_0xee7a('0x6'));var Vertices=require(_0xee7a('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xee7a('0x8')](config[_0xee7a('0x3')],{'ip':_0xee7a('0x9'),'port':0x11dd});function connectionHandler(_0x17604e){process[_0xee7a('0xa')](function(){syncho(function(){try{setChannelVariables(_0x17604e);agiHandler(_0x17604e);}catch(_0x34a6a9){logger[_0xee7a('0xb')](_0x34a6a9[_0xee7a('0xc')]);}});});}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0xee7a('0xd')]);logger[_0xee7a('0xe')](util[_0xee7a('0xf')](_0xee7a('0x10'),config[_0xee7a('0x3')]['ip'],config['agi'][_0xee7a('0xd')]));}function errorHandler(_0x5414d6){if(_0x5414d6&&_0x5414d6[_0xee7a('0x11')]&&_0x5414d6[_0xee7a('0x12')]){logger[_0xee7a('0xb')](util[_0xee7a('0xf')](_0xee7a('0x13'),_0x5414d6[_0xee7a('0x11')],_0x5414d6[_0xee7a('0x12')]));}else{logger[_0xee7a('0xb')](util['format'](_0xee7a('0x14'),_0x5414d6[_0xee7a('0xc')]));}}function closeHandler(){logger[_0xee7a('0xe')](util['format'](_0xee7a('0x15'),this[_0xee7a('0x16')],this[_0xee7a('0x17')],this[_0xee7a('0x18')],this[_0xee7a('0x19')],this[_0xee7a('0x1a')]));try{createSquareReport(this);}catch(_0x36a710){logger[_0xee7a('0xb')](_0x36a710[_0xee7a('0xc')]);}}function timeoutHandler(){logger[_0xee7a('0xe')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xee7a('0x16')],this[_0xee7a('0x17')],this[_0xee7a('0x18')],this['dnid'],this[_0xee7a('0x1a')]));}function hangupHandler(){logger[_0xee7a('0xe')](util[_0xee7a('0xf')](_0xee7a('0x1b'),this[_0xee7a('0x16')],this[_0xee7a('0x17')],this[_0xee7a('0x18')],this['dnid'],this[_0xee7a('0x1a')]));this[_0xee7a('0x1c')]=!![];}function getRoot(_0x45493c){return parser[_0xee7a('0x1d')](_0x45493c,{'object':!![]})['mxGraphModel'][_0xee7a('0x1e')];}function addVertex(_0x56895f,_0xab3e3d,_0x572354){_0xab3e3d['agicommand']=_0x572354;if(_0xab3e3d[_0xee7a('0x1f')](_0xee7a('0x20'))){_0xab3e3d['maxRetry']=parseInt(_0xab3e3d['retry'],0xa);}_0x56895f['addVertex'](_[_0xee7a('0x21')](_0xab3e3d,'mxCell'));}function initGraph(_0x312775,_0x4977cf){var _0x2e55b1=new Graph();for(var _0x4d0406 in _0x312775){if(_0x312775[_0xee7a('0x1f')](_0x4d0406)){if(_[_0xee7a('0x22')](_0x312775[_0x4d0406])){for(var _0x136645=0x0;_0x136645<_0x312775[_0x4d0406][_0xee7a('0x23')];_0x136645+=0x1){addVertex(_0x2e55b1,_0x312775[_0x4d0406][_0x136645],_0x4d0406);}}else{addVertex(_0x2e55b1,_0x312775[_0x4d0406],_0x4d0406);}}}for(var _0x118bb3=0x0;_0x118bb3<_0x4977cf[_0xee7a('0x23')];_0x118bb3+=0x1){if(_0x4977cf[_0x118bb3][_0xee7a('0x24')]&&_0x4977cf[_0x118bb3][_0xee7a('0x25')]){_0x2e55b1['addEdge'](_0x4977cf[_0x118bb3][_0xee7a('0x24')],_0x4977cf[_0x118bb3][_0xee7a('0x25')],_0x4977cf[_0x118bb3][_0xee7a('0x26')]);}}return _0x2e55b1;}function getSquareProject(_0x80b35b,_0x182320){rpc[_0xee7a('0x27')](_0x80b35b)[_0xee7a('0x28')](function(_0x17e5dc){_0x182320(null,_0x17e5dc);})[_0xee7a('0x29')](function(_0x264e13){_0x182320(null,_0x264e13);});}function createSquareReport(_0x390c02,_0x2514fe){rpc[_0xee7a('0x2a')](_0x390c02)[_0xee7a('0x28')](function(_0x415341){if(_0x2514fe){_0x2514fe(null,_0x415341);}})[_0xee7a('0x29')](function(_0x1328f1){if(_0x2514fe){_0x2514fe(null,_0x1328f1);}});}function setChannelVariables(_0x4e9dd1){for(var _0x5f25ee in _0x4e9dd1){if(_0x4e9dd1[_0xee7a('0x1f')](_0x5f25ee)){if(_0x5f25ee[_0xee7a('0x2b')](_0xee7a('0x2c'))===0x0){_0x4e9dd1[_0x5f25ee[_0xee7a('0x2d')](0x4)]=_0x4e9dd1[_0x5f25ee];delete _0x4e9dd1[_0x5f25ee];}}}}function getLogFromObject(_0x4ee39c){return util['inspect'](_0x4ee39c,{'showHidden':![],'depth':null});}function agiHandler(_0xeafaa4){var _0x2c8f47,_0x3a8ea6,_0x401f03,_0x5eee06,_0x3ba22c;logger[_0xee7a('0x2e')](_0xee7a('0x2f'),JSON[_0xee7a('0x30')](_0xeafaa4,null,0x2));logger[_0xee7a('0xe')](util['format'](_0xee7a('0x31'),_0xeafaa4[_0xee7a('0x16')],_0xeafaa4[_0xee7a('0x17')],_0xeafaa4[_0xee7a('0x18')],_0xeafaa4[_0xee7a('0x19')],_0xeafaa4[_0xee7a('0x1a')]));_0xeafaa4['on'](_0xee7a('0xb'),errorHandler);_0xeafaa4['on'](_0xee7a('0x32'),closeHandler);_0xeafaa4['on'](_0xee7a('0x33'),timeoutHandler);_0xeafaa4[_0xee7a('0x1c')]=![];_0xeafaa4['on']('hangup',hangupHandler);var _0x3d7966=getSquareProject[_0xee7a('0x34')](null,_0xeafaa4['arg_1']);if(_0x3d7966){if(_0x3d7966[_0xee7a('0x35')]){_0x2c8f47=getRoot(_0x3d7966[_0xee7a('0x35')]);if(_0x2c8f47&&_0x2c8f47['start']){logger[_0xee7a('0x2e')]('root',JSON['stringify'](_0x2c8f47,null,0x2));_0xeafaa4[_0xee7a('0x36')]=moment()['format'](_0xee7a('0x37'));_0x3a8ea6=initGraph(_[_0xee7a('0x21')](_0x2c8f47,_0xee7a('0x38')),_0x2c8f47[_0xee7a('0x38')]);_0x401f03=new Vertices(_0xeafaa4,rpc,mailRpc);logger[_0xee7a('0xe')](util[_0xee7a('0xf')](_0xee7a('0x39'),_0xeafaa4[_0xee7a('0x16')],_0xeafaa4[_0xee7a('0x17')],_0xeafaa4[_0xee7a('0x18')],_0xeafaa4[_0xee7a('0x19')],_0xeafaa4[_0xee7a('0x1a')]));_0x3a8ea6['traverseBFS'](_0x2c8f47[_0xee7a('0x3a')]['id'],function(_0x2cbf19){try{_0x2cbf19=_0x401f03[_0xee7a('0x3b')](_0x2cbf19);logger[_0xee7a('0x2e')](_0xee7a('0x3c'),JSON[_0xee7a('0x30')](_0x2cbf19,null,0x2));if(_0x2cbf19[_0xee7a('0x3d')]===_0xee7a('0x3e')){logger[_0xee7a('0xe')](_0xee7a('0x3f'));_0xeafaa4[_0xee7a('0x40')]=_0x2cbf19['context']||_0xeafaa4['context'];_0xeafaa4[_0xee7a('0x41')]=_0x2cbf19[_0xee7a('0x41')];_0xeafaa4[_0xee7a('0x42')]=_0x2cbf19[_0xee7a('0x42')]?_0x2cbf19[_0xee7a('0x42')]-0x1:0x1;return null;}else if(_0x2cbf19&&_0x401f03[_0x2cbf19[_0xee7a('0x3d')]]){_0x3ba22c=_0x401f03[_0x2cbf19[_0xee7a('0x3d')]](_0x2cbf19);logger[_0xee7a('0xe')](_0xee7a('0x43'),JSON['stringify'](_0x3ba22c,null,0x2));if(_0x3ba22c&&_0x3ba22c[_0xee7a('0x44')]===AGI_CODE_SUCCESS&&_0x3ba22c[_0xee7a('0x45')]!==AGI_RESULT_ERROR&&!_0xeafaa4[_0xee7a('0x1c')]){logger['debug']('response',getLogFromObject(_0x3ba22c));return _[_0xee7a('0x46')](_0x3ba22c[_0xee7a('0x45')])?null:_0x3ba22c[_0xee7a('0x45')][_0xee7a('0x47')]();}else{logger[_0xee7a('0xb')](_0xee7a('0x43'),getLogFromObject(_0x3ba22c));return null;}}else{logger[_0xee7a('0xb')](_0xee7a('0x48'));return null;}}catch(_0x4e267a){logger[_0xee7a('0xb')](_0x4e267a['stack']);return null;}});if(_0x2c8f47[_0xee7a('0x49')]){logger['info'](util[_0xee7a('0xf')](_0xee7a('0x4a'),_0xeafaa4[_0xee7a('0x16')],_0xeafaa4['calleridname'],_0xeafaa4[_0xee7a('0x18')],_0xeafaa4['dnid'],_0xeafaa4['uniqueid']));_0x3a8ea6[_0xee7a('0x4b')](_0x2c8f47[_0xee7a('0x49')]['id'],function(_0x292e5c){try{_0x292e5c=_0x401f03[_0xee7a('0x3b')](_0x292e5c);logger[_0xee7a('0x2e')](_0xee7a('0x3c'),JSON[_0xee7a('0x30')](_0x292e5c,null,0x2));if(_0x292e5c&&_0x401f03[_0x292e5c[_0xee7a('0x3d')]]){_0x3ba22c=_0x401f03[_0x292e5c[_0xee7a('0x3d')]](_0x292e5c);if(_0x3ba22c){logger[_0xee7a('0x2e')]('response',getLogFromObject(_0x3ba22c));return _[_0xee7a('0x46')](_0x3ba22c['result'])?null:_0x3ba22c[_0xee7a('0x45')][_0xee7a('0x47')]();}else{logger[_0xee7a('0xb')](_0xee7a('0x43'),getLogFromObject(_0x3ba22c));return null;}}else{logger[_0xee7a('0xb')](_0xee7a('0x48'));return null;}}catch(_0x10af1c){logger[_0xee7a('0xb')](_0x10af1c['stack']);return null;}});}logger[_0xee7a('0xe')](util['format'](_0xee7a('0x4c'),_0xeafaa4[_0xee7a('0x16')],_0xeafaa4[_0xee7a('0x17')],_0xeafaa4[_0xee7a('0x18')],_0xeafaa4['dnid'],_0xeafaa4[_0xee7a('0x1a')]));logger['info'](util['format'](_0xee7a('0x4d'),_0xeafaa4[_0xee7a('0x40')],_0xeafaa4['extension'],parseInt(_0xeafaa4[_0xee7a('0x42')],0xa)+0x1));_0xeafaa4[_0xee7a('0x4e')](_0xeafaa4[_0xee7a('0x40')],_0xeafaa4['extension'],parseInt(_0xeafaa4[_0xee7a('0x42')],0xa)+0x1);_0xeafaa4[_0xee7a('0x32')]();}}else{logger['error'](util[_0xee7a('0xf')](_0xee7a('0x4f'),_0xeafaa4[_0xee7a('0x16')]));_0xeafaa4[_0xee7a('0x4e')](_0xeafaa4[_0xee7a('0x40')],_0xeafaa4[_0xee7a('0x41')],parseInt(_0xeafaa4[_0xee7a('0x42')],0xa)+0x1);_0xeafaa4[_0xee7a('0x32')]();}}else{logger[_0xee7a('0xb')](util[_0xee7a('0xf')](_0xee7a('0x50'),_0xeafaa4[_0xee7a('0x16')]));_0xeafaa4[_0xee7a('0x4e')](_0xeafaa4[_0xee7a('0x40')],_0xeafaa4['extension'],parseInt(_0xeafaa4[_0xee7a('0x42')],0xa)+0x1);_0xeafaa4['close']();}}function main(){var _0x14a294;return utilLicense['getLicense']()['then'](function(_0x26c324){if(_0x26c324){if(_0x26c324[_0xee7a('0x51')]){if(_0x26c324[_0xee7a('0x52')]&&_0x26c324[_0xee7a('0x52')]>0x0){logger[_0xee7a('0xe')](util['format'](_0xee7a('0x53'),_0x26c324[_0xee7a('0x52')]));_0x14a294=_0x26c324[_0xee7a('0x52')];}else{logger['info']('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0xee7a('0xe')](_0xee7a('0x54'));_0x14a294=-0x1;}}})[_0xee7a('0x29')](function(_0x2f11e1){logger[_0xee7a('0xb')](_0xee7a('0x55'),_0x2f11e1[_0xee7a('0xc')]);})[_0xee7a('0x49')](function(){var _0x2c92fa=require(_0xee7a('0x56'))(config[_0xee7a('0x3')]['port'],config[_0xee7a('0x3')]['ip'],_0x14a294);_0x2c92fa['on'](_0xee7a('0xb'),errorHandler);_0x2c92fa['on']('listening',listeningHandler);_0x2c92fa['on'](_0xee7a('0x57'),connectionHandler);_0x2c92fa['on'](_0xee7a('0x32'),closeHandler);});}main();
\ No newline at end of file
index ac37fd1..f47767a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f9=['SendMail','bluebird','jayson/promise','client','http','request','error','message','result','sendMailMessage'];(function(_0x6a64d4,_0x20a702){var _0x2c96a4=function(_0x3a987d){while(--_0x3a987d){_0x6a64d4['push'](_0x6a64d4['shift']());}};_0x2c96a4(++_0x20a702);}(_0x68f9,0x79));var _0x968f=function(_0x2f13a2,_0x1a2d85){_0x2f13a2=_0x2f13a2-0x0;var _0x32c2a6=_0x68f9[_0x2f13a2];return _0x32c2a6;};'use strict';var BPromise=require(_0x968f('0x0'));var jayson=require(_0x968f('0x1'));var client=jayson[_0x968f('0x2')][_0x968f('0x3')]({'port':0x232b});function request(_0x8d209c,_0xa5f1a1){return new BPromise(function(_0x296202,_0x10b111){return client[_0x968f('0x4')](_0x8d209c,_0xa5f1a1)['then'](function(_0x1dc2bc){if(_0x1dc2bc[_0x968f('0x5')]){return _0x10b111(_0x1dc2bc['error'][_0x968f('0x6')]);}else{return _0x296202(_0x1dc2bc[_0x968f('0x7')]);}})['catch'](function(_0x557a70){return _0x10b111(_0x557a70);});});}exports[_0x968f('0x8')]=function(_0x2a08bb,_0x34ec41){return request(_0x968f('0x9'),{'account':_0x2a08bb,'message':_0x34ec41});};
\ No newline at end of file
+var _0x97c7=['http','request','error','message','result','catch','sendMailMessage','client'];(function(_0x380cfd,_0x53e3ad){var _0x3651e9=function(_0x22d3cc){while(--_0x22d3cc){_0x380cfd['push'](_0x380cfd['shift']());}};_0x3651e9(++_0x53e3ad);}(_0x97c7,0x117));var _0x797c=function(_0xe57f5f,_0x2997d0){_0xe57f5f=_0xe57f5f-0x0;var _0x49e628=_0x97c7[_0xe57f5f];return _0x49e628;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x797c('0x0')][_0x797c('0x1')]({'port':0x232b});function request(_0x1710c5,_0x34bd8c){return new BPromise(function(_0x52ce8e,_0x23149e){return client[_0x797c('0x2')](_0x1710c5,_0x34bd8c)['then'](function(_0x392795){if(_0x392795[_0x797c('0x3')]){return _0x23149e(_0x392795['error'][_0x797c('0x4')]);}else{return _0x52ce8e(_0x392795[_0x797c('0x5')]);}})[_0x797c('0x6')](function(_0x431725){return _0x23149e(_0x431725);});});}exports[_0x797c('0x7')]=function(_0x29e09f,_0x5adad1){return request('SendMail',{'account':_0x29e09f,'message':_0x5adad1});};
\ No newline at end of file
index c49e7d4..a86addb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59c4=['prototype','_transform','\x0d\x0a\x0d\x0a','toString','substring','length','split','indexOf','slice','trim','emit','headers','exports','util','Transform','call','_localBuffer','_inBody'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x59c4,0x79));var _0x459c=function(_0x47531b,_0x456850){_0x47531b=_0x47531b-0x0;var _0x5de2e8=_0x59c4[_0x47531b];return _0x5de2e8;};'use strict';var util=require(_0x459c('0x0'));var Transform=require('stream')[_0x459c('0x1')];function AGIReply(_0x1cd4d7){Transform[_0x459c('0x2')](this,_0x1cd4d7);this[_0x459c('0x3')]='';this[_0x459c('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x459c('0x5')][_0x459c('0x6')]=function(_0x811f56,_0x21627c,_0x313c02){var _0x335f12='\x0a',_0x3846e1=['\x0a\x0a',_0x459c('0x7')],_0x3611ef=-0x1,_0x35e1a9=-0x1,_0x4d8f0e='',_0x1e4dec=0x0,_0x3f709c='',_0x361ea0='';this[_0x459c('0x3')]+=_0x811f56[_0x459c('0x8')]();_0x3f709c=this[_0x459c('0x3')];if(!this[_0x459c('0x4')]){_0x1e4dec=0x0;while(_0x3846e1[_0x1e4dec]){while((_0x35e1a9=_0x3f709c['indexOf'](_0x3846e1[_0x1e4dec]))!=-0x1){_0x4d8f0e=_0x3846e1[_0x1e4dec];_0x361ea0=_0x3f709c[_0x459c('0x9')](0x0,_0x35e1a9);_0x3f709c=_0x3f709c['substring'](_0x35e1a9+_0x4d8f0e[_0x459c('0xa')]);var _0x8a2e6f=_0x361ea0[_0x459c('0xb')](_0x335f12),_0x3df100=0x0,_0x290992={},_0x486e16='',_0x4b44e3='',_0x4fcff2=-0x1;while(_0x8a2e6f[_0x3df100]){_0x4fcff2=_0x8a2e6f[_0x3df100][_0x459c('0xc')](':');if(_0x4fcff2!=-0x1){_0x486e16=_0x8a2e6f[_0x3df100][_0x459c('0xd')](0x0,_0x4fcff2)[_0x459c('0xe')]();_0x4b44e3=_0x8a2e6f[_0x3df100][_0x459c('0xd')](_0x4fcff2+0x1)['trim']();if(_0x486e16[_0x459c('0xa')]>0x0){_0x290992[_0x486e16]=_0x4b44e3;}}else{}_0x3df100++;}this[_0x459c('0xf')](_0x459c('0x10'),_0x290992);this['_inBody']=!![];}_0x1e4dec++;}this['_localBuffer']=_0x3f709c;}else{while((_0x3611ef=_0x3f709c[_0x459c('0xc')](_0x335f12))!=-0x1){_0x361ea0=_0x3f709c[_0x459c('0x9')](0x0,_0x3611ef);this[_0x459c('0xf')]('line',_0x361ea0);_0x3f709c=_0x3f709c[_0x459c('0x9')](_0x3611ef+_0x335f12[_0x459c('0xa')]);}this[_0x459c('0x3')]=_0x3f709c;}_0x313c02();};module[_0x459c('0x11')]=AGIReply;
\ No newline at end of file
+var _0x38db=['Transform','call','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','substring','split','slice','trim','length','headers','exports','util','stream'];(function(_0x15a2c5,_0x4a810d){var _0x2b9b45=function(_0x3fcccd){while(--_0x3fcccd){_0x15a2c5['push'](_0x15a2c5['shift']());}};_0x2b9b45(++_0x4a810d);}(_0x38db,0x6a));var _0xb38d=function(_0x56fe74,_0x32e926){_0x56fe74=_0x56fe74-0x0;var _0x448d5e=_0x38db[_0x56fe74];return _0x448d5e;};'use strict';var util=require(_0xb38d('0x0'));var Transform=require(_0xb38d('0x1'))[_0xb38d('0x2')];function AGIReply(_0x3da738){Transform[_0xb38d('0x3')](this,_0x3da738);this[_0xb38d('0x4')]='';this[_0xb38d('0x5')]=![];}util[_0xb38d('0x6')](AGIReply,Transform);AGIReply[_0xb38d('0x7')][_0xb38d('0x8')]=function(_0x21b956,_0x2c81f3,_0x36db37){var _0x3bd4fa='\x0a',_0x8cbe00=['\x0a\x0a',_0xb38d('0x9')],_0x1036b3=-0x1,_0x1e53d3=-0x1,_0xc112c='',_0x51997d=0x0,_0xb46704='',_0x36b02d='';this[_0xb38d('0x4')]+=_0x21b956[_0xb38d('0xa')]();_0xb46704=this[_0xb38d('0x4')];if(!this[_0xb38d('0x5')]){_0x51997d=0x0;while(_0x8cbe00[_0x51997d]){while((_0x1e53d3=_0xb46704['indexOf'](_0x8cbe00[_0x51997d]))!=-0x1){_0xc112c=_0x8cbe00[_0x51997d];_0x36b02d=_0xb46704[_0xb38d('0xb')](0x0,_0x1e53d3);_0xb46704=_0xb46704[_0xb38d('0xb')](_0x1e53d3+_0xc112c['length']);var _0x3497a8=_0x36b02d[_0xb38d('0xc')](_0x3bd4fa),_0x131412=0x0,_0x36c87e={},_0x2790ff='',_0x61ffd='',_0x19acd9=-0x1;while(_0x3497a8[_0x131412]){_0x19acd9=_0x3497a8[_0x131412]['indexOf'](':');if(_0x19acd9!=-0x1){_0x2790ff=_0x3497a8[_0x131412][_0xb38d('0xd')](0x0,_0x19acd9)[_0xb38d('0xe')]();_0x61ffd=_0x3497a8[_0x131412]['slice'](_0x19acd9+0x1)[_0xb38d('0xe')]();if(_0x2790ff[_0xb38d('0xf')]>0x0){_0x36c87e[_0x2790ff]=_0x61ffd;}}else{}_0x131412++;}this['emit'](_0xb38d('0x10'),_0x36c87e);this['_inBody']=!![];}_0x51997d++;}this[_0xb38d('0x4')]=_0xb46704;}else{while((_0x1036b3=_0xb46704['indexOf'](_0x3bd4fa))!=-0x1){_0x36b02d=_0xb46704[_0xb38d('0xb')](0x0,_0x1036b3);this['emit']('line',_0x36b02d);_0xb46704=_0xb46704[_0xb38d('0xb')](_0x1036b3+_0x3bd4fa[_0xb38d('0xf')]);}this[_0xb38d('0x4')]=_0xb46704;}_0x36db37();};module[_0xb38d('0x11')]=AGIReply;
\ No newline at end of file
index 58f77f5..be9acc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d7d=['getSmsAccountById','ShowSmsAccount','createSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_2','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','util','jayson/promise','client','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','Interval','Intervals'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x5d7d,0x1e7));var _0xd5d7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d7d[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd5d7('0x0'));var moment=require(_0xd5d7('0x1'));var _=require('lodash');var util=require(_0xd5d7('0x2'));var jayson=require(_0xd5d7('0x3'));var client=jayson[_0xd5d7('0x4')][_0xd5d7('0x5')]({'port':0x2329});function request(_0x55e374,_0x57de28){return new BPromise(function(_0x26e980,_0x31494d){return client[_0xd5d7('0x6')](_0x55e374,_0x57de28)[_0xd5d7('0x7')](function(_0xa4c7de){if(_0xa4c7de[_0xd5d7('0x8')]){return _0x31494d(_0xa4c7de[_0xd5d7('0x8')][_0xd5d7('0x9')]);}else{return _0x26e980(_0xa4c7de[_0xd5d7('0xa')]);}})['catch'](function(_0x5758a0){return _0x31494d(_0x5758a0);});});}exports[_0xd5d7('0xb')]=function(_0x36f149){return request(_0xd5d7('0xc'),{'options':{'raw':![],'where':{'name':_0x36f149},'attributes':[_0xd5d7('0xd')]}});};exports[_0xd5d7('0xe')]=function(_0x1219c6){return request(_0xd5d7('0xf'),{'options':{'raw':![],'where':{'id':_0x1219c6},'include':[{'model':_0xd5d7('0x10'),'as':_0xd5d7('0x11')}],'attributes':['id','name',_0xd5d7('0x12')]}});};exports['getSquareProjectById']=function(_0x1d2732){return request(_0xd5d7('0xc'),{'options':{'where':{'id':_0x1d2732},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x14')]=function(_0x36c3cf){return request(_0xd5d7('0x15'),{'options':{'where':{'id':_0x36c3cf},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x16')]=function(_0x3b77ee){return request(_0xd5d7('0x17'),{'options':{'where':{'id':_0x3b77ee},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x18')]=function(_0x2c31ff){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x2c31ff},'attributes':[_0xd5d7('0x19')]}});};exports[_0xd5d7('0x1a')]=function(_0x326545){return request(_0xd5d7('0x1b'),{'options':{'where':{'id':_0x326545},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x1c')]=function(_0x2eb00b){return request(_0xd5d7('0x1d'),{'options':{'where':{'id':_0x2eb00b},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x1e')]=function(_0x35fc6d){return request(_0xd5d7('0x1f'),{'options':{'where':{'id':_0x35fc6d},'attributes':[_0xd5d7('0x20')]}});};exports['getIntervalById']=function(_0x28414d){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x28414d},'include':[{'model':_0xd5d7('0x21'),'as':_0xd5d7('0x22')}]}});};exports[_0xd5d7('0x23')]=function(_0x4f8200){return request(_0xd5d7('0x24'),{'options':{'where':{'id':_0x4f8200},'attributes':['id',_0xd5d7('0x13')]}});};exports[_0xd5d7('0x25')]=function(_0x39e01e){return request('CreateSmsMessage',{'body':_0x39e01e});};exports[_0xd5d7('0x26')]=function(_0x2a9295){return request('CreateSquareDetailsReport',{'body':_0x2a9295});};exports['createSquareReport']=function(_0x230139){return request(_0xd5d7('0x27'),{'body':_[_0xd5d7('0x28')](_0x230139,{'project_name':_0x230139['arg_1'],'prev_project_name':_0x230139[_0xd5d7('0x29')]||'','is_subproject':_0x230139[_0xd5d7('0x29')]?!![]:![],'leaveAt':moment()['format'](_0xd5d7('0x2a'))})});};exports['createSquareRecording']=function(_0x203476){return request(_0xd5d7('0x2b'),{'body':_0x203476});};exports[_0xd5d7('0x2c')]=function(_0x1b30a7){return request('CreateSquareMessage',{'body':_0x1b30a7});};exports[_0xd5d7('0x2d')]=function(_0x2340e4){return request(_0xd5d7('0x2e'),{'options':{'raw':![],'where':{'phone':_0x2340e4[_0xd5d7('0x2f')],'ListId':_0x2340e4['ListId']}}})[_0xd5d7('0x7')](function(_0x5e4aaa){if(_0x5e4aaa){return _0x5e4aaa;}return request(_0xd5d7('0x30'),{'body':_0x2340e4});});};exports[_0xd5d7('0x31')]=function(_0x3ad5d8){return request('ShowPause',{'options':{'where':{'id':_0x3ad5d8},'attributes':[_0xd5d7('0x13')]}});};exports[_0xd5d7('0x32')]=function(_0x49f4ba,_0x871c47){return request(_0xd5d7('0x33'),{'body':{'interface':_0x871c47},'options':{'where':_0x49f4ba}});};exports[_0xd5d7('0x34')]=function(_0x45e00a,_0x180f13,_0x501f04){return request(_0xd5d7('0x35'),{'body':{'type':_0x180f13,'uniqueid':_0x501f04},'options':{'where':_0x45e00a}});};exports[_0xd5d7('0x36')]=function(_0x225170){return request(_0xd5d7('0x37'),{'body':{},'options':{'where':_0x225170}});};exports[_0xd5d7('0x38')]=function(_0xa966b1){return request(_0xd5d7('0x39'),{'body':{},'options':{'where':_0xa966b1}});};
\ No newline at end of file
+var _0x0387=['then','CreateCmContact','ShowPause','agentPause','PauseUser','agentUnpause','UnpauseUser','bluebird','moment','lodash','util','jayson/promise','client','request','error','message','result','catch','getSquareProject','ShowSquareProject','getMailAccountById','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId'];(function(_0x39398c,_0x2da9b4){var _0x35e04d=function(_0x27a83a){while(--_0x27a83a){_0x39398c['push'](_0x39398c['shift']());}};_0x35e04d(++_0x2da9b4);}(_0x0387,0x133));var _0x7038=function(_0x2f46d2,_0x22a0b7){_0x2f46d2=_0x2f46d2-0x0;var _0x8e6a13=_0x0387[_0x2f46d2];return _0x8e6a13;};'use strict';var BPromise=require(_0x7038('0x0'));var moment=require(_0x7038('0x1'));var _=require(_0x7038('0x2'));var util=require(_0x7038('0x3'));var jayson=require(_0x7038('0x4'));var client=jayson[_0x7038('0x5')]['http']({'port':0x2329});function request(_0x5e9402,_0x504e7c){return new BPromise(function(_0x38805e,_0xf02875){return client[_0x7038('0x6')](_0x5e9402,_0x504e7c)['then'](function(_0x4a5095){if(_0x4a5095[_0x7038('0x7')]){return _0xf02875(_0x4a5095[_0x7038('0x7')][_0x7038('0x8')]);}else{return _0x38805e(_0x4a5095[_0x7038('0x9')]);}})[_0x7038('0xa')](function(_0x248049){return _0xf02875(_0x248049);});});}exports[_0x7038('0xb')]=function(_0x3e46d8){return request(_0x7038('0xc'),{'options':{'raw':![],'where':{'name':_0x3e46d8},'attributes':['production']}});};exports[_0x7038('0xd')]=function(_0x14a445){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x14a445},'include':[{'model':_0x7038('0xe'),'as':_0x7038('0xf')}],'attributes':['id',_0x7038('0x10'),_0x7038('0x11')]}});};exports[_0x7038('0x12')]=function(_0x34c491){return request(_0x7038('0xc'),{'options':{'where':{'id':_0x34c491},'attributes':[_0x7038('0x10')]}});};exports[_0x7038('0x13')]=function(_0x1fcc3b){return request(_0x7038('0x14'),{'options':{'where':{'id':_0x1fcc3b},'attributes':['name']}});};exports['getVariableById']=function(_0x2b0bb5){return request('ShowVariable',{'options':{'where':{'id':_0x2b0bb5},'attributes':['name']}});};exports['getSquareOdbcById']=function(_0x414bcd){return request(_0x7038('0x15'),{'options':{'where':{'id':_0x414bcd},'attributes':[_0x7038('0x16')]}});};exports[_0x7038('0x17')]=function(_0x2214c5){return request(_0x7038('0x18'),{'options':{'where':{'id':_0x2214c5},'attributes':[_0x7038('0x10')]}});};exports[_0x7038('0x19')]=function(_0x172f3d){return request(_0x7038('0x1a'),{'options':{'where':{'id':_0x172f3d},'attributes':[_0x7038('0x10')]}});};exports['getSoundById']=function(_0x17a669){return request(_0x7038('0x1b'),{'options':{'where':{'id':_0x17a669},'attributes':[_0x7038('0x1c')]}});};exports[_0x7038('0x1d')]=function(_0x1c35a7){return request(_0x7038('0x1e'),{'options':{'raw':![],'where':{'id':_0x1c35a7},'include':[{'model':_0x7038('0x1f'),'as':_0x7038('0x20')}]}});};exports[_0x7038('0x21')]=function(_0x4e7869){return request(_0x7038('0x22'),{'options':{'where':{'id':_0x4e7869},'attributes':['id',_0x7038('0x10')]}});};exports[_0x7038('0x23')]=function(_0x126a47){return request(_0x7038('0x24'),{'body':_0x126a47});};exports[_0x7038('0x25')]=function(_0x127d28){return request(_0x7038('0x26'),{'body':_0x127d28});};exports[_0x7038('0x27')]=function(_0x382d74){return request(_0x7038('0x28'),{'body':_[_0x7038('0x29')](_0x382d74,{'project_name':_0x382d74[_0x7038('0x2a')],'prev_project_name':_0x382d74[_0x7038('0x2b')]||'','is_subproject':_0x382d74[_0x7038('0x2b')]?!![]:![],'leaveAt':moment()[_0x7038('0x2c')](_0x7038('0x2d'))})});};exports['createSquareRecording']=function(_0x4838a4){return request(_0x7038('0x2e'),{'body':_0x4838a4});};exports[_0x7038('0x2f')]=function(_0x275414){return request(_0x7038('0x30'),{'body':_0x275414});};exports[_0x7038('0x31')]=function(_0x50719f){return request(_0x7038('0x32'),{'options':{'raw':![],'where':{'phone':_0x50719f[_0x7038('0x33')],'ListId':_0x50719f[_0x7038('0x34')]}}})[_0x7038('0x35')](function(_0x1a0ec2){if(_0x1a0ec2){return _0x1a0ec2;}return request(_0x7038('0x36'),{'body':_0x50719f});});};exports['getPauseById']=function(_0x5881a3){return request(_0x7038('0x37'),{'options':{'where':{'id':_0x5881a3},'attributes':[_0x7038('0x10')]}});};exports['agentLogin']=function(_0x3192b9,_0xfee262){return request('LoginUser',{'body':{'interface':_0xfee262},'options':{'where':_0x3192b9}});};exports[_0x7038('0x38')]=function(_0x26be5c,_0x33670f,_0x22804e){return request(_0x7038('0x39'),{'body':{'type':_0x33670f,'uniqueid':_0x22804e},'options':{'where':_0x26be5c}});};exports[_0x7038('0x3a')]=function(_0x21003c){return request(_0x7038('0x3b'),{'body':{},'options':{'where':_0x21003c}});};exports['agentLogout']=function(_0x1b022a){return request('LogoutUser',{'body':{},'options':{'where':_0x1b022a}});};
\ No newline at end of file
index 2ab40f8..46ab9c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['./polly','./lex','exports'];(function(_0x404483,_0xa1646){var _0x27b608=function(_0x505ee4){while(--_0x505ee4){_0x404483['push'](_0x404483['shift']());}};_0x27b608(++_0xa1646);}(_0x31af,0xde));var _0xf31a=function(_0x507f20,_0x471478){_0x507f20=_0x507f20-0x0;var _0x12ee49=_0x31af[_0x507f20];return _0x12ee49;};var polly=require(_0xf31a('0x0'));var lex=require(_0xf31a('0x1'));module[_0xf31a('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x66da=['exports','./polly','./lex'];(function(_0x115108,_0xc07b1b){var _0x569f05=function(_0x414555){while(--_0x414555){_0x115108['push'](_0x115108['shift']());}};_0x569f05(++_0xc07b1b);}(_0x66da,0x16f));var _0xa66d=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x66da[_0x35e92e];return _0x1205a8;};var polly=require(_0xa66d('0x0'));var lex=require(_0xa66d('0x1'));module[_0xa66d('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index cd43c53..6e8d251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['./lib/api'];(function(_0x111803,_0x3ac976){var _0x40585a=function(_0x21c3ee){while(--_0x21c3ee){_0x111803['push'](_0x111803['shift']());}};_0x40585a(++_0x3ac976);}(_0x96cc,0x16c));var _0xc96c=function(_0x3b3f90,_0x388364){_0x3b3f90=_0x3b3f90-0x0;var _0x52522e=_0x96cc[_0x3b3f90];return _0x52522e;};'use strict';var lex=require(_0xc96c('0x0'));module['exports']=function(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701){return lex(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701);};
\ No newline at end of file
+var _0xbdb7=['./lib/api','exports'];(function(_0x5798ce,_0x561b70){var _0x3aeb01=function(_0x30e026){while(--_0x30e026){_0x5798ce['push'](_0x5798ce['shift']());}};_0x3aeb01(++_0x561b70);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x14ea32,_0x262909){_0x14ea32=_0x14ea32-0x0;var _0x137bbb=_0xbdb7[_0x14ea32];return _0x137bbb;};'use strict';var lex=require(_0x7bdb('0x0'));module[_0x7bdb('0x1')]=function(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07){return lex(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07);};
\ No newline at end of file
index efba226..a36ea0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x2e306f,_0x438dff){var _0x4de16e=function(_0x466293){while(--_0x466293){_0x2e306f['push'](_0x2e306f['shift']());}};_0x4de16e(++_0x438dff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x550cb2,_0x513f9d){var _0x477fb8=function(_0xf825c6){while(--_0xf825c6){_0x550cb2['push'](_0x550cb2['shift']());}};_0x477fb8(++_0x513f9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 95ab430..d5de715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a62=['./lib/api','exports'];(function(_0x4ba77f,_0x53f931){var _0x1b1c5e=function(_0x108fca){while(--_0x108fca){_0x4ba77f['push'](_0x4ba77f['shift']());}};_0x1b1c5e(++_0x53f931);}(_0x3a62,0x1d2));var _0x23a6=function(_0x45b1b0,_0xe25b4d){_0x45b1b0=_0x45b1b0-0x0;var _0x4e3520=_0x3a62[_0x45b1b0];return _0x4e3520;};'use strict';var polly=require(_0x23a6('0x0'));module[_0x23a6('0x1')]=function(_0x2dd365,_0x2bbb91,_0x479d06,_0x4ea133,_0x49423e,_0x578a58,_0x1d589f){return polly(_0x2dd365,_0x2bbb91,_0x479d06,_0x4ea133,_0x49423e,_0x578a58,_0x1d589f);};
\ No newline at end of file
+var _0xe9d8=['./lib/api'];(function(_0xf2d97b,_0x42ece0){var _0x1d35c9=function(_0x19fdcc){while(--_0x19fdcc){_0xf2d97b['push'](_0xf2d97b['shift']());}};_0x1d35c9(++_0x42ece0);}(_0xe9d8,0x1e1));var _0x8e9d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe9d8[_0x321bb2];return _0x9c12ed;};'use strict';var polly=require(_0x8e9d('0x0'));module['exports']=function(_0x11616d,_0x30de71,_0x508467,_0x1167f0,_0x4e1a89,_0x2803b2,_0x2835b1){return polly(_0x11616d,_0x30de71,_0x508467,_0x1167f0,_0x4e1a89,_0x2803b2,_0x2835b1);};
\ No newline at end of file
index b1f7057..92faaee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd379=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird'];(function(_0x58c9b6,_0x33cb7a){var _0x35c303=function(_0x3322fa){while(--_0x3322fa){_0x58c9b6['push'](_0x58c9b6['shift']());}};_0x35c303(++_0x33cb7a);}(_0xd379,0x196));var _0x9d37=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd379[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var path=require(_0x9d37('0x0'));var BPromise=require(_0x9d37('0x1'));var rs=require(_0x9d37('0x2'));var AWS=require(_0x9d37('0x3'));function pollyResult(_0x1198b6,_0x298048,_0x422aa2){return new BPromise(function(_0x18c5df,_0x1c690e){_0x1198b6[_0x9d37('0x4')](_0x298048,function(_0x6ff099,_0x39fb62){if(_0x6ff099){_0x1c690e(_0x6ff099);}else if(_0x39fb62){if(_0x39fb62[_0x9d37('0x5')]instanceof Buffer){fs[_0x9d37('0x6')](_0x422aa2,_0x39fb62[_0x9d37('0x5')],function(_0x31df72){if(_0x31df72){_0x1c690e(_0x31df72);}else{_0x18c5df();}});}else{_0x1c690e(new Error(_0x9d37('0x7')));}}else{_0x1c690e(new Error(_0x9d37('0x8')));}});});}module[_0x9d37('0x9')]=function(_0xa05981,_0x3ad2f2,_0x1c2d40,_0x2189c6,_0x28e6f6,_0xe70696,_0x4b9e53){var _0x1d068d=new AWS[(_0x9d37('0xa'))]({'accessKeyId':_0xa05981,'secretAccessKey':_0x3ad2f2,'region':_0x1c2d40});var _0x1b1c5a={'Text':_0x28e6f6,'TextType':_0xe70696||'text','OutputFormat':_0x9d37('0xb'),'VoiceId':_0x2189c6};return pollyResult(_0x1d068d,_0x1b1c5a,_0x4b9e53);};
\ No newline at end of file
+var _0x3b9b=['randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','path','bluebird'];(function(_0x2be240,_0x1e119d){var _0x123543=function(_0x580bf4){while(--_0x580bf4){_0x2be240['push'](_0x2be240['shift']());}};_0x123543(++_0x1e119d);}(_0x3b9b,0x1d4));var _0xb3b9=function(_0x3cb88e,_0x137b2b){_0x3cb88e=_0x3cb88e-0x0;var _0x4431ec=_0x3b9b[_0x3cb88e];return _0x4431ec;};'use strict';var fs=require('fs');var path=require(_0xb3b9('0x0'));var BPromise=require(_0xb3b9('0x1'));var rs=require(_0xb3b9('0x2'));var AWS=require(_0xb3b9('0x3'));function pollyResult(_0x12698b,_0x4a7ea2,_0x3d9f33){return new BPromise(function(_0x467ad6,_0x5503a2){_0x12698b[_0xb3b9('0x4')](_0x4a7ea2,function(_0x4bc7aa,_0x71e358){if(_0x4bc7aa){_0x5503a2(_0x4bc7aa);}else if(_0x71e358){if(_0x71e358[_0xb3b9('0x5')]instanceof Buffer){fs['writeFile'](_0x3d9f33,_0x71e358[_0xb3b9('0x5')],function(_0xf4aa1a){if(_0xf4aa1a){_0x5503a2(_0xf4aa1a);}else{_0x467ad6();}});}else{_0x5503a2(new Error(_0xb3b9('0x6')));}}else{_0x5503a2(new Error(_0xb3b9('0x7')));}});});}module[_0xb3b9('0x8')]=function(_0x16ecb1,_0x4ef561,_0x470cdc,_0x501d25,_0x54dfd0,_0x2e9297,_0x55a6b9){var _0x129464=new AWS['Polly']({'accessKeyId':_0x16ecb1,'secretAccessKey':_0x4ef561,'region':_0x470cdc});var _0x47919a={'Text':_0x54dfd0,'TextType':_0x2e9297||_0xb3b9('0x9'),'OutputFormat':'mp3','VoiceId':_0x501d25};return pollyResult(_0x129464,_0x47919a,_0x55a6b9);};
\ No newline at end of file
index e483b8d..d58d67b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb76f=['exports'];(function(_0x36f041,_0x593dea){var _0x37907e=function(_0x27abd9){while(--_0x27abd9){_0x36f041['push'](_0x36f041['shift']());}};_0x37907e(++_0x593dea);}(_0xb76f,0x1de));var _0xfb76=function(_0x5ab5cb,_0x34ea50){_0x5ab5cb=_0x5ab5cb-0x0;var _0x3b49de=_0xb76f[_0x5ab5cb];return _0x3b49de;};'use strict';var asr=require('./lib/api');module[_0xfb76('0x0')]=function(_0x34b923,_0x3bf0b0,_0x53b2f9,_0x5d3123){return asr(_0x34b923,_0x3bf0b0,_0x53b2f9);};
\ No newline at end of file
+var _0xccef=['exports'];(function(_0x581249,_0x483f03){var _0x284bae=function(_0x2faadd){while(--_0x2faadd){_0x581249['push'](_0x581249['shift']());}};_0x284bae(++_0x483f03);}(_0xccef,0x93));var _0xfcce=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xccef[_0x21a9d9];return _0x46adce;};'use strict';var asr=require('./lib/api');module[_0xfcce('0x0')]=function(_0x51a3cd,_0x4d46c3,_0x16d162,_0xc6b3b9){return asr(_0x51a3cd,_0x4d46c3,_0x16d162);};
\ No newline at end of file
index 3305c14..101c57d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf257=['string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','base64','LINEAR16','https://speech.googleapis.com','exports'];(function(_0x21f53a,_0x41d0a7){var _0x17effd=function(_0x31d101){while(--_0x31d101){_0x21f53a['push'](_0x21f53a['shift']());}};_0x17effd(++_0x41d0a7);}(_0xf257,0x82));var _0x7f25=function(_0xdf5fc5,_0x37255b){_0xdf5fc5=_0xdf5fc5-0x0;var _0x52f5a5=_0xf257[_0xdf5fc5];return _0x52f5a5;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0x7f25('0x0');module[_0x7f25('0x1')]=function(_0x3f7a94,_0x22d4a9,_0x5c712c){return new BPromise(function(_0x159dd1,_0x2aca61){var _0xd94d7a;if(typeof _0x3f7a94!==_0x7f25('0x2')||_0x3f7a94[_0x7f25('0x3')]===0x0){return _0x2aca61(_0x7f25('0x4'));}if(typeof _0x22d4a9!==_0x7f25('0x2')||_0x22d4a9[_0x7f25('0x3')]===0x0){return _0x2aca61(_0x7f25('0x5'));}if(typeof _0x5c712c!==_0x7f25('0x6')&&(typeof _0x5c712c!==_0x7f25('0x2')||_0x5c712c[_0x7f25('0x3')]===0x0)){return _0x2aca61(_0x7f25('0x7'));}try{_0xd94d7a=fs[_0x7f25('0x8')](_0x3f7a94)['toString'](_0x7f25('0x9'));}catch(_0x362a80){return _0x2aca61(_0x362a80);}return _0x159dd1({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x22d4a9,'body':{'config':{'encoding':_0x7f25('0xa'),'sampleRateHertz':'8000','languageCode':_0x5c712c},'audio':{'content':_0xd94d7a}},'json':!![]});});};
\ No newline at end of file
+var _0xf6fb=['https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','LINEAR16','8000'];(function(_0x10ad2f,_0x43f589){var _0x3ed3c7=function(_0x23849e){while(--_0x23849e){_0x10ad2f['push'](_0x10ad2f['shift']());}};_0x3ed3c7(++_0x43f589);}(_0xf6fb,0x111));var _0xbf6f=function(_0x1d83ec,_0x547014){_0x1d83ec=_0x1d83ec-0x0;var _0x59f5f3=_0xf6fb[_0x1d83ec];return _0x59f5f3;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host=_0xbf6f('0x0');module[_0xbf6f('0x1')]=function(_0x48adc3,_0x270dda,_0x7191f2){return new BPromise(function(_0x5709b7,_0xa3eb6){var _0x4f7bc9;if(typeof _0x48adc3!==_0xbf6f('0x2')||_0x48adc3[_0xbf6f('0x3')]===0x0){return _0xa3eb6(_0xbf6f('0x4'));}if(typeof _0x270dda!==_0xbf6f('0x2')||_0x270dda[_0xbf6f('0x3')]===0x0){return _0xa3eb6(_0xbf6f('0x5'));}if(typeof _0x7191f2!==_0xbf6f('0x6')&&(typeof _0x7191f2!==_0xbf6f('0x2')||_0x7191f2['length']===0x0)){return _0xa3eb6(_0xbf6f('0x7'));}try{_0x4f7bc9=fs[_0xbf6f('0x8')](_0x48adc3)[_0xbf6f('0x9')](_0xbf6f('0xa'));}catch(_0x283d7e){return _0xa3eb6(_0x283d7e);}return _0x5709b7({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x270dda,'body':{'config':{'encoding':_0xbf6f('0xb'),'sampleRateHertz':_0xbf6f('0xc'),'languageCode':_0x7191f2},'audio':{'content':_0x4f7bc9}},'json':!![]});});};
\ No newline at end of file
index c933cee..3d3ae45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0459=['./asr','exports'];(function(_0x471bcc,_0x2945a){var _0x5ef75b=function(_0x411838){while(--_0x411838){_0x471bcc['push'](_0x471bcc['shift']());}};_0x5ef75b(++_0x2945a);}(_0x0459,0x104));var _0x9045=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x0459[_0x139a3c];return _0x2b375b;};var asr=require(_0x9045('0x0'));module[_0x9045('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xbb80=['./asr','exports'];(function(_0xa89795,_0x25da93){var _0x5d81a9=function(_0x1b8135){while(--_0x1b8135){_0xa89795['push'](_0xa89795['shift']());}};_0x5d81a9(++_0x25da93);}(_0xbb80,0x8c));var _0x0bb8=function(_0x2496cb,_0xcf9d27){_0x2496cb=_0x2496cb-0x0;var _0x5f5c0d=_0xbb80[_0x2496cb];return _0x5f5c0d;};var asr=require(_0x0bb8('0x0'));module[_0x0bb8('0x1')]={'asr':asr};
\ No newline at end of file
index cdefc45..f7b0373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ea0=['source','result','resolvedQuery','action','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','awsPolly','polly','awsLex','ispeechTTS','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','format','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','sox','google-tts-api','url','parse','util','./aws','./google','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','close','unlink','download\x20error','pipe','protocol','end','transcode','error\x20convert','info','start','resolve','tmp','generate','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','toString','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','text:synthesize','POST','.mp3','from','audioContent','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','f.req=','stringify','jQ1olc','null','slice','data','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','[%s]\x20%s:%s','message','textRequest'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0x2ea0,0x141));var _0x02ea=function(_0x25019f,_0x243013){_0x25019f=_0x25019f-0x0;var _0x3f0abd=_0x2ea0[_0x25019f];return _0x3f0abd;};'use strict';var apiai=require(_0x02ea('0x0'));var BPromise=require(_0x02ea('0x1'));var dialogflow=require(_0x02ea('0x2'));var fs=require('fs');var http=require(_0x02ea('0x3'));var https=require(_0x02ea('0x4'));var md5=require(_0x02ea('0x5'));var path=require(_0x02ea('0x6'));var querystring=require(_0x02ea('0x7'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0x02ea('0x8'));var tts=require(_0x02ea('0x9'));var urlParse=require(_0x02ea('0xa'))[_0x02ea('0xb')];var util=require(_0x02ea('0xc'));var aws=require(_0x02ea('0xd'));var google=require(_0x02ea('0xe'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require(_0x02ea('0xf'))(_0x02ea('0x10'));var ISPEECH_API=_0x02ea('0x11');function downloadFile(_0x5da092,_0x296608){return new BPromise(function(_0x3c0b35,_0x2fafec){var _0x78f2ac=urlParse(_0x5da092);var _0x4e3a6d=_0x78f2ac['protocol']===_0x02ea('0x12')?https:http;var _0x57ab47={'host':_0x78f2ac[_0x02ea('0x13')],'path':_0x78f2ac[_0x02ea('0x6')],'headers':{'user-agent':_0x02ea('0x14')}};_0x4e3a6d[_0x02ea('0x15')](_0x57ab47,function(_0xfde46b){if(_0xfde46b[_0x02ea('0x16')]!==0xc8){logger[_0x02ea('0x17')](_0x02ea('0x18')+_0x5da092+_0x02ea('0x19')+_0xfde46b[_0x02ea('0x16')]+'\x20('+_0xfde46b[_0x02ea('0x1a')]+')');_0x2fafec(new Error('request\x20to\x20'+_0x5da092+_0x02ea('0x19')+_0xfde46b['statusCode']+'\x20('+_0xfde46b[_0x02ea('0x1a')]+')'));return;}var _0x2dfc1c=fs[_0x02ea('0x1b')](_0x296608);_0x2dfc1c['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x2dfc1c[_0x02ea('0x1c')](_0x3c0b35);});_0x2dfc1c['on'](_0x02ea('0x17'),function(_0x35de54){fs[_0x02ea('0x1d')](_0x296608);logger[_0x02ea('0x17')](_0x02ea('0x1e'),_0x35de54);_0x2fafec(_0x35de54);});_0xfde46b[_0x02ea('0x1f')](_0x2dfc1c);})['on'](_0x02ea('0x17'),function(_0xcb317c){logger[_0x02ea('0x17')](_0xcb317c);_0x2fafec(_0xcb317c);})['end']();});}function uploadFile(_0x4f7d29){return new BPromise(function(_0x19a215,_0x1f2e1f){var _0x1668f7=urlParse(_0x4f7d29);var _0x579f98=_0x1668f7[_0x02ea('0x20')]===_0x02ea('0x12')?https:http;var _0xfba575={'host':_0x1668f7['host'],'path':_0x1668f7[_0x02ea('0x6')],'headers':{'user-agent':_0x02ea('0x14')}};_0x579f98[_0x02ea('0x15')](_0xfba575,function(_0x4d8327){if(_0x4d8327[_0x02ea('0x16')]!==0xc8){_0x1f2e1f(new Error('request\x20to\x20'+_0x4f7d29+_0x02ea('0x19')+_0x4d8327[_0x02ea('0x16')]+'\x20('+_0x4d8327['statusMessage']+')'));return;}var _0x1095aa='';_0x4d8327['on']('data',function(_0x294799){_0x1095aa+=_0x294799;});_0x4d8327['on'](_0x02ea('0x21'),function(){_0x19a215(_0x1095aa);});})['on'](_0x02ea('0x17'),function(_0x421a02){_0x1f2e1f(_0x421a02);})[_0x02ea('0x21')]();});}function convertFile(_0x2a6419,_0x5133cc){return new BPromise(function(_0x55e20a,_0x2c000c){var _0x118be3=sox[_0x02ea('0x22')](_0x2a6419,_0x5133cc,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x118be3['on']('error',function(_0x3255fd){logger['error'](_0x02ea('0x23'),_0x3255fd);_0x2c000c(_0x3255fd);});_0x118be3['on'](_0x02ea('0x21'),function(){logger[_0x02ea('0x24')]('finish\x20to\x20convert');_0x55e20a();});_0x118be3[_0x02ea('0x25')]();});}function base64Decode(_0x357885,_0x558160){var _0x564a2c=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));fs[_0x02ea('0x2a')](_0x564a2c,_0x357885,'base64');return convertFile(_0x564a2c,_0x558160)[_0x02ea('0x2b')](function(){try{fs[_0x02ea('0x1d')](_0x564a2c);fs[_0x02ea('0x2c')](_0x558160,_0x02ea('0x2d'));}catch(_0x5f5326){logger[_0x02ea('0x17')](_0x5f5326);}return _0x558160[_0x02ea('0x2e')]('.')[0x0];});}function base64Encode(_0xcaaa70){var _0x10d92e=fs[_0x02ea('0x2f')](_0xcaaa70);return new Buffer(_0x10d92e)[_0x02ea('0x30')](_0x02ea('0x31'));}exports[_0x02ea('0x32')]=function(_0x3cb68c,_0x322771,_0x215272,_0x48f226,_0x1e8119,_0x1b46fa){var _0xed585a,_0x1186ce;var _0x1d491d=_0x02ea('0x33');var _0xf30b52=_0x02ea('0x34')+_0x3cb68c;var _0xae00c7={};if(_0x322771==='ssml'){_0xae00c7['input']={'ssml':_0x215272};}else{_0xae00c7[_0x02ea('0x35')]={'text':_0x215272};};_0xae00c7[_0x02ea('0x36')]={'languageCode':_0x48f226,'ssmlGender':_0x1e8119};_0xae00c7[_0x02ea('0x37')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0xd92bb4={'url':_0x1d491d+_0x02ea('0x38')+_0xf30b52,'method':_0x02ea('0x39'),'json':!![],'body':_0xae00c7};return rp(_0xd92bb4)[_0x02ea('0x2b')](function(_0x5b453c){return new BPromise(function(_0xe58a43,_0x51d910){_0xed585a=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x42f4ea=Buffer[_0x02ea('0x3b')](_0x5b453c[_0x02ea('0x3c')],_0x02ea('0x31'));return fs['writeFile'](_0xed585a,_0x42f4ea,function(_0xd03b2){_0x51d910(_0xd03b2);},function(_0xdb0f3e){fs[_0x02ea('0x2c')](_0xed585a,_0x02ea('0x2d'));_0xe58a43(_0xdb0f3e);});});})[_0x02ea('0x2b')](function(_0x5c6350){_0x1186ce=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+'.wav');return convertFile(_0xed585a,_0x1186ce);})[_0x02ea('0x2b')](function(){try{fs[_0x02ea('0x1d')](_0xed585a);fs['chmodSync'](_0x1186ce,_0x02ea('0x2d'));}catch(_0x2568a7){logger['error'](_0x2568a7);}logger['info'](_0x02ea('0x3d'),_0x1186ce['split']('.')[0x0]);return _0x1186ce[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x3e')]=function(_0x1d9e21,_0x3450fc){var _0x237179=_0x02ea('0x3f');var _0x53cacb,_0x4e04ca;var _0xe9dc0;var _0x5eb75={'encoding':'utf8','method':_0x02ea('0x39'),'timeout':0x2710,'url':_0x237179,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x02ea('0x40')+encodeURIComponent(JSON[_0x02ea('0x41')]([[[_0x02ea('0x42'),JSON[_0x02ea('0x41')]([_0x1d9e21,_0x3450fc||'en',![],_0x02ea('0x43')]),null,'generic']]]))};return rp(_0x5eb75)[_0x02ea('0x2b')](function(_0x85ca2e){try{_0xe9dc0=eval(_0x85ca2e[_0x02ea('0x44')](0x5))[0x0][0x2];}catch(_0x2f26bd){throw new Error('parse\x20response\x20failed:\x0a'+_0x85ca2e[_0x02ea('0x45')]);}if(!_0xe9dc0){if(_0x1d9e21['length']>0xc8){throw new Error(_0x02ea('0x46'));}else{throw new Error(_0x02ea('0x47')+_0x3450fc+_0x02ea('0x48'));}}try{_0xe9dc0=eval(_0xe9dc0)[0x0];}catch(_0x5189e5){throw new Error(_0x02ea('0x49')+res['data']);}const _0x6ebd4a=_0xe9dc0;_0x53cacb=path['resolve'](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+_0x02ea('0x3a'));fs[_0x02ea('0x2a')](_0x53cacb,_0xe9dc0,{'encoding':_0x02ea('0x31')});_0x4e04ca=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+'.wav');return convertFile(_0x53cacb,_0x4e04ca);})['then'](function(){try{fs['unlink'](_0x53cacb);fs[_0x02ea('0x2c')](_0x4e04ca,'777');}catch(_0x3c96a7){logger[_0x02ea('0x17')](_0x3c96a7);}logger[_0x02ea('0x24')]('goggleTTS\x20path',_0x4e04ca[_0x02ea('0x2e')]('.')[0x0]);return _0x4e04ca[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x4a')]=function(_0x240186,_0x3e0e98,_0x30a5cc){return google[_0x02ea('0x4b')](_0x240186,_0x3e0e98,_0x30a5cc)[_0x02ea('0x2b')](function(_0x52cdc5){logger['info'](_0x52cdc5[_0x02ea('0x4c')]);return rp(_0x52cdc5);})[_0x02ea('0x2b')](function(_0x20acd4){var _0x274a93='';var _0x259424=0x0;try{fs[_0x02ea('0x1d')](_0x240186);}catch(_0xa20ac8){logger[_0x02ea('0x17')](_0xa20ac8);}if(_0x20acd4&&_0x20acd4[_0x02ea('0x4d')]){_0x274a93=_0x20acd4['results'][_0x02ea('0x4e')](function(_0x34cd60){return _0x34cd60&&_0x34cd60[_0x02ea('0x4f')][0x0]&&_0x34cd60[_0x02ea('0x4f')][0x0][_0x02ea('0x50')]?_0x34cd60[_0x02ea('0x4f')][0x0]['transcript']:'';})[_0x02ea('0x51')]('\x0a');_0x259424=_0x20acd4[_0x02ea('0x4d')][_0x02ea('0x4e')](function(_0x5764cc){return _0x5764cc&&_0x5764cc['alternatives'][0x0]&&_0x5764cc[_0x02ea('0x4f')][0x0][_0x02ea('0x52')]?_0x5764cc[_0x02ea('0x4f')][0x0][_0x02ea('0x52')]:0x0;})[_0x02ea('0x51')]('\x0a');}logger[_0x02ea('0x24')]('googleASR\x20transcription',_0x274a93);logger[_0x02ea('0x24')](_0x02ea('0x53'),_0x259424);return{'transcript':_0x274a93,'confidence':_0x259424};})['catch'](function(_0x3c01e6){logger[_0x02ea('0x17')](_0x02ea('0x54'),_0x3c01e6['statusCode'],_0x3c01e6['name'],_0x3c01e6[_0x02ea('0x55')]);});};exports['googleDialogflow']=function(_0x39a09d,_0x26c05d,_0x21fd75,_0x16ff26){var _0x2871e9=apiai(_0x26c05d,{'language':_0x16ff26||'en'});return _0x2871e9[_0x02ea('0x56')](_0x21fd75,{'sessionId':md5(_0x39a09d)})[_0x02ea('0x2b')](function(_0x59e42d){logger['info'](JSON['stringify'](_0x59e42d));return{'source':_0x59e42d['result'][_0x02ea('0x57')],'resolvedQuery':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x59')],'action':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5a')],'actionIncomplete':_0x59e42d[_0x02ea('0x58')]['actionIncomplete'],'speech':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5b')][_0x02ea('0x5c')],'score':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5d')],'statusCode':_0x59e42d[_0x02ea('0x5e')]['code'],'endConversation':_0x59e42d[_0x02ea('0x58')][_0x02ea('0x5f')][_0x02ea('0x60')]||![],'isFallbackIntent':_0x59e42d['result'][_0x02ea('0x5f')][_0x02ea('0x61')]};});};exports['googleDialogflowV2']=function(_0x102794,_0x5498c1,_0x184932,_0x33636f,_0x300613,_0x4f6d84){var _0x37e4c3=_0x33636f[_0x02ea('0x62')](/\\n/g,'\x0a');var _0x2cff8e={'credentials':{'private_key':_0x37e4c3,'client_email':_0x184932}};var _0x3d6e81=new dialogflow[(_0x02ea('0x63'))](_0x2cff8e);var _0x3273eb=_0x3d6e81[_0x02ea('0x64')](_0x5498c1,md5(_0x102794));var _0x5408f5={'session':_0x3273eb,'queryInput':{'text':{'text':_0x300613,'languageCode':_0x4f6d84}}};return _0x3d6e81[_0x02ea('0x65')](_0x5408f5)['then'](function(_0x38c429){if(_0x38c429&&_0x38c429[_0x02ea('0x66')]){logger[_0x02ea('0x24')](_0x02ea('0x67'),JSON[_0x02ea('0x41')](_0x38c429));var _0x3a5c23=_0x38c429[0x0];if(_0x3a5c23){var _0x392ad9={'action':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x5a')],'allRequiredParamsPresent':_0x3a5c23['queryResult'][_0x02ea('0x69')],'endConversation':_0x3a5c23['queryResult'][_0x02ea('0x6a')]&&_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6a')][_0x02ea('0x6b')]?_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6a')][_0x02ea('0x6b')][_0x02ea('0x6c')][_0x02ea('0x6d')]:![],'fulfillmentText':_0x3a5c23[_0x02ea('0x68')]['fulfillmentText'],'intentName':_0x3a5c23['queryResult'][_0x02ea('0x6e')]['name'],'intentDisplayName':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6e')][_0x02ea('0x6f')],'isFallbackIntent':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x6e')][_0x02ea('0x70')],'languageCode':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x71')],'queryText':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x72')],'responseId':_0x3a5c23['responseId'],'score':_0x3a5c23[_0x02ea('0x68')][_0x02ea('0x73')],'speech':_0x3a5c23['queryResult'][_0x02ea('0x74')],'providerResponse':JSON[_0x02ea('0x41')](_0x38c429)};return _0x392ad9;}}});};exports[_0x02ea('0x75')]=function(_0x1e6052,_0x47ee45,_0x24e5a3,_0x3157d2){return tilde['asr'](_0x1e6052,_0x47ee45,_0x24e5a3,_0x3157d2)[_0x02ea('0x2b')](function(_0x201eed){try{fs[_0x02ea('0x1d')](_0x1e6052);}catch(_0x3f9bc7){logger['error'](_0x3f9bc7);}logger['info'](_0x02ea('0x76'),_0x201eed[_0x02ea('0x50')]);logger[_0x02ea('0x24')]('Tilde\x20ASR\x20confidence',_0x201eed[_0x02ea('0x52')]);return _0x201eed;});};exports[_0x02ea('0x77')]=function(_0x14a255,_0x5b6c44,_0x41b4dc,_0x331f77,_0x5a2fbd,_0x4b9ca2){var _0x4955e8=path['resolve'](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x4116d4;return aws[_0x02ea('0x78')](_0x14a255,_0x5b6c44,_0x41b4dc,_0x331f77,_0x5a2fbd,_0x4b9ca2,_0x4955e8)[_0x02ea('0x2b')](function(){_0x4116d4=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));return convertFile(_0x4955e8,_0x4116d4);})[_0x02ea('0x2b')](function(){try{fs['unlink'](_0x4955e8);fs['chmodSync'](_0x4116d4,_0x02ea('0x2d'));}catch(_0x3b741f){logger[_0x02ea('0x17')](_0x3b741f);}return _0x4116d4[_0x02ea('0x2e')]('.')[0x0];});};exports[_0x02ea('0x79')]=function(_0x120298,_0x5d7b84,_0x50f33b,_0x5dc97b,_0x580140,_0x1f5def){return aws['lex'](_0x120298,_0x5d7b84,_0x50f33b,_0x5dc97b,_0x580140,_0x1f5def)['then'](function(_0x34f8bc){logger[_0x02ea('0x24')](JSON[_0x02ea('0x41')](_0x34f8bc));return _0x34f8bc;});};exports[_0x02ea('0x7a')]=function(_0x428f66,_0x321102,_0x4b2280,_0xec1b65){var _0x3c3476=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x428f66,encodeURIComponent(_0x321102),_0x4b2280,_0xec1b65);var _0x46a8d0=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x3a'));var _0x1e1e79;return downloadFile(_0x3c3476,_0x46a8d0)[_0x02ea('0x2b')](function(){_0x1e1e79=path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs[_0x02ea('0x28')](0x4)+_0x02ea('0x29'));return convertFile(_0x46a8d0,_0x1e1e79);})[_0x02ea('0x2b')](function(){try{fs['unlink'](_0x46a8d0);fs[_0x02ea('0x2c')](_0x1e1e79,_0x02ea('0x2d'));}catch(_0x40b5c8){logger['error'](_0x40b5c8);}return _0x1e1e79[_0x02ea('0x2e')]('.')[0x0];});};exports['ispeechASR']=function(_0x15f5f4,_0x196e59,_0x129163,_0x3d5513){var _0x50153b=util['format'](_0x02ea('0x7b'),ISPEECH_API,_0x196e59,_0x129163,base64Encode(_0x15f5f4),_0x3d5513?util[_0x02ea('0x7c')](_0x02ea('0x7d'),encodeURIComponent(_0x3d5513)):_0x02ea('0x7e'));return uploadFile(_0x50153b)[_0x02ea('0x2b')](function(_0x2ffe89){return querystring['parse'](_0x2ffe89);});};exports[_0x02ea('0x7f')]=function(_0x2b7f27,_0x183ed3){return sestek[_0x02ea('0x80')](_0x2b7f27,_0x183ed3)['then'](function(_0x470f25){logger[_0x02ea('0x24')](JSON[_0x02ea('0x41')](_0x470f25));var _0x2f0efd={'speech':_0x470f25[_0x02ea('0x81')],'action':_0x470f25[_0x02ea('0x82')]?_0x470f25[_0x02ea('0x82')]['CustomAction']:undefined,'actiondata':_0x470f25[_0x02ea('0x82')]?_0x470f25['channelData'][_0x02ea('0x83')]:undefined};if(_0x470f25[_0x02ea('0x82')]&&_0x470f25[_0x02ea('0x82')][_0x02ea('0x84')]){return base64Decode(_0x470f25[_0x02ea('0x82')][_0x02ea('0x84')][_0x02ea('0x85')],path[_0x02ea('0x26')](__dirname,_0x02ea('0x27'),rs['generate'](0x4)+_0x02ea('0x29')))[_0x02ea('0x2b')](function(_0x3ff1eb){_0x2f0efd[_0x02ea('0x86')]=_0x3ff1eb;return _0x2f0efd;});}return _0x2f0efd;});};exports[_0x02ea('0x87')]=function(){return __dirname;};
\ No newline at end of file
+var _0xdaa9=['./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','unlink','download\x20error','pipe','end','get','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','then','777','split','toString','base64','googleCloudTTS','?key=','voice','audioConfig','MP3','text:synthesize','POST','from','audioContent','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','utf8','f.req=','stringify','jQ1olc','generic','length','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','join','confidence','googleASR\x20confidence','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','speech','code','metadata','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','url','parse','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdaa9,0x7d));var _0x9daa=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdaa9[_0x2dafbe];return _0x58a45a;};'use strict';var apiai=require(_0x9daa('0x0'));var BPromise=require(_0x9daa('0x1'));var dialogflow=require(_0x9daa('0x2'));var fs=require('fs');var http=require(_0x9daa('0x3'));var https=require('https');var md5=require(_0x9daa('0x4'));var path=require(_0x9daa('0x5'));var querystring=require(_0x9daa('0x6'));var rp=require(_0x9daa('0x7'));var rs=require(_0x9daa('0x8'));var sox=require(_0x9daa('0x9'));var tts=require('google-tts-api');var urlParse=require(_0x9daa('0xa'))[_0x9daa('0xb')];var util=require(_0x9daa('0xc'));var aws=require(_0x9daa('0xd'));var google=require(_0x9daa('0xe'));var sestek=require(_0x9daa('0xf'));var tilde=require(_0x9daa('0x10'));var logger=require(_0x9daa('0x11'))(_0x9daa('0x12'));var ISPEECH_API=_0x9daa('0x13');function downloadFile(_0x1270db,_0x144ad7){return new BPromise(function(_0x20e1a5,_0x5dd408){var _0x54311a=urlParse(_0x1270db);var _0x25c953=_0x54311a[_0x9daa('0x14')]===_0x9daa('0x15')?https:http;var _0x11b4c1={'host':_0x54311a[_0x9daa('0x16')],'path':_0x54311a['path'],'headers':{'user-agent':_0x9daa('0x17')}};_0x25c953['get'](_0x11b4c1,function(_0x3b40cd){if(_0x3b40cd[_0x9daa('0x18')]!==0xc8){logger[_0x9daa('0x19')](_0x9daa('0x1a')+_0x1270db+_0x9daa('0x1b')+_0x3b40cd['statusCode']+'\x20('+_0x3b40cd[_0x9daa('0x1c')]+')');_0x5dd408(new Error(_0x9daa('0x1a')+_0x1270db+_0x9daa('0x1b')+_0x3b40cd['statusCode']+'\x20('+_0x3b40cd['statusMessage']+')'));return;}var _0x541358=fs['createWriteStream'](_0x144ad7);_0x541358['on'](_0x9daa('0x1d'),function(){logger[_0x9daa('0x1e')](_0x9daa('0x1f'));_0x541358['close'](_0x20e1a5);});_0x541358['on'](_0x9daa('0x19'),function(_0x1221cb){fs[_0x9daa('0x20')](_0x144ad7);logger[_0x9daa('0x19')](_0x9daa('0x21'),_0x1221cb);_0x5dd408(_0x1221cb);});_0x3b40cd[_0x9daa('0x22')](_0x541358);})['on'](_0x9daa('0x19'),function(_0x1743e5){logger[_0x9daa('0x19')](_0x1743e5);_0x5dd408(_0x1743e5);})[_0x9daa('0x23')]();});}function uploadFile(_0x1c0fa5){return new BPromise(function(_0x3eaa6c,_0x5cde83){var _0x5dbf82=urlParse(_0x1c0fa5);var _0x4b0334=_0x5dbf82[_0x9daa('0x14')]==='https:'?https:http;var _0x4a50c2={'host':_0x5dbf82[_0x9daa('0x16')],'path':_0x5dbf82['path'],'headers':{'user-agent':_0x9daa('0x17')}};_0x4b0334[_0x9daa('0x24')](_0x4a50c2,function(_0x33b68c){if(_0x33b68c['statusCode']!==0xc8){_0x5cde83(new Error('request\x20to\x20'+_0x1c0fa5+_0x9daa('0x1b')+_0x33b68c[_0x9daa('0x18')]+'\x20('+_0x33b68c['statusMessage']+')'));return;}var _0x5c1577='';_0x33b68c['on'](_0x9daa('0x25'),function(_0x542639){_0x5c1577+=_0x542639;});_0x33b68c['on'](_0x9daa('0x23'),function(){_0x3eaa6c(_0x5c1577);});})['on'](_0x9daa('0x19'),function(_0x2da919){_0x5cde83(_0x2da919);})['end']();});}function convertFile(_0x552f91,_0x9841d9){return new BPromise(function(_0x24ce88,_0x2f70fb){var _0x3f7c1f=sox[_0x9daa('0x26')](_0x552f91,_0x9841d9,{'sampleRate':0x1f40,'format':_0x9daa('0x27'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3f7c1f['on'](_0x9daa('0x19'),function(_0x27e23c){logger[_0x9daa('0x19')](_0x9daa('0x28'),_0x27e23c);_0x2f70fb(_0x27e23c);});_0x3f7c1f['on'](_0x9daa('0x23'),function(){logger[_0x9daa('0x1e')](_0x9daa('0x29'));_0x24ce88();});_0x3f7c1f[_0x9daa('0x2a')]();});}function base64Decode(_0x560d8b,_0x26379c){var _0x2f3d62=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+_0x9daa('0x2e'));fs[_0x9daa('0x2f')](_0x2f3d62,_0x560d8b,'base64');return convertFile(_0x2f3d62,_0x26379c)[_0x9daa('0x30')](function(){try{fs[_0x9daa('0x20')](_0x2f3d62);fs['chmodSync'](_0x26379c,_0x9daa('0x31'));}catch(_0x5e8b24){logger['error'](_0x5e8b24);}return _0x26379c[_0x9daa('0x32')]('.')[0x0];});}function base64Encode(_0x4827b9){var _0x2f38ad=fs['readFileSync'](_0x4827b9);return new Buffer(_0x2f38ad)[_0x9daa('0x33')](_0x9daa('0x34'));}exports[_0x9daa('0x35')]=function(_0x2381c6,_0x11640a,_0x27e8a2,_0x5a772f,_0x523e76,_0x166810){var _0x51f6ca,_0x517e7a;var _0x5b7b89='https://texttospeech.googleapis.com/v1/';var _0x193324=_0x9daa('0x36')+_0x2381c6;var _0x46512d={};if(_0x11640a==='ssml'){_0x46512d['input']={'ssml':_0x27e8a2};}else{_0x46512d['input']={'text':_0x27e8a2};};_0x46512d[_0x9daa('0x37')]={'languageCode':_0x5a772f,'ssmlGender':_0x523e76};_0x46512d[_0x9daa('0x38')]={'audioEncoding':_0x9daa('0x39'),'sampleRateHertz':0x1f40};var _0x365122={'url':_0x5b7b89+_0x9daa('0x3a')+_0x193324,'method':_0x9daa('0x3b'),'json':!![],'body':_0x46512d};return rp(_0x365122)[_0x9daa('0x30')](function(_0x44ba98){return new BPromise(function(_0x34cadc,_0x12b6e7){_0x51f6ca=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+'.mp3');var _0x3ea7b5=Buffer[_0x9daa('0x3c')](_0x44ba98[_0x9daa('0x3d')],_0x9daa('0x34'));return fs[_0x9daa('0x3e')](_0x51f6ca,_0x3ea7b5,function(_0x2cbe73){_0x12b6e7(_0x2cbe73);},function(_0x3b3e39){fs[_0x9daa('0x3f')](_0x51f6ca,_0x9daa('0x31'));_0x34cadc(_0x3b3e39);});});})[_0x9daa('0x30')](function(_0x348ad6){_0x517e7a=path[_0x9daa('0x2b')](__dirname,'tmp',rs[_0x9daa('0x2d')](0x4)+_0x9daa('0x2e'));return convertFile(_0x51f6ca,_0x517e7a);})['then'](function(){try{fs['unlink'](_0x51f6ca);fs[_0x9daa('0x3f')](_0x517e7a,_0x9daa('0x31'));}catch(_0x377f12){logger[_0x9daa('0x19')](_0x377f12);}logger[_0x9daa('0x1e')](_0x9daa('0x40'),_0x517e7a['split']('.')[0x0]);return _0x517e7a[_0x9daa('0x32')]('.')[0x0];});};exports[_0x9daa('0x41')]=function(_0x4e2352,_0x4512f8){var _0x47e717='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x258d01,_0x52c7ce;var _0x7dbf0c;var _0xac8f39={'encoding':_0x9daa('0x42'),'method':_0x9daa('0x3b'),'timeout':0x2710,'url':_0x47e717,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x9daa('0x43')+encodeURIComponent(JSON[_0x9daa('0x44')]([[[_0x9daa('0x45'),JSON['stringify']([_0x4e2352,_0x4512f8||'en',![],'null']),null,_0x9daa('0x46')]]]))};return rp(_0xac8f39)['then'](function(_0x5ac174){try{_0x7dbf0c=eval(_0x5ac174['slice'](0x5))[0x0][0x2];}catch(_0x6538b9){throw new Error('parse\x20response\x20failed:\x0a'+_0x5ac174['data']);}if(!_0x7dbf0c){if(_0x4e2352[_0x9daa('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x9daa('0x48')+_0x4512f8+_0x9daa('0x49'));}}try{_0x7dbf0c=eval(_0x7dbf0c)[0x0];}catch(_0x2e6490){throw new Error(_0x9daa('0x4a')+res[_0x9daa('0x25')]);}const _0x26845f=_0x7dbf0c;_0x258d01=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+_0x9daa('0x4b'));fs[_0x9daa('0x2f')](_0x258d01,_0x7dbf0c,{'encoding':'base64'});_0x52c7ce=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+'.wav');return convertFile(_0x258d01,_0x52c7ce);})[_0x9daa('0x30')](function(){try{fs['unlink'](_0x258d01);fs['chmodSync'](_0x52c7ce,'777');}catch(_0x42d4a9){logger[_0x9daa('0x19')](_0x42d4a9);}logger[_0x9daa('0x1e')](_0x9daa('0x4c'),_0x52c7ce[_0x9daa('0x32')]('.')[0x0]);return _0x52c7ce[_0x9daa('0x32')]('.')[0x0];});};exports[_0x9daa('0x4d')]=function(_0x3c2c04,_0x57dde9,_0x404f4){return google[_0x9daa('0x4e')](_0x3c2c04,_0x57dde9,_0x404f4)[_0x9daa('0x30')](function(_0xe90fc1){logger[_0x9daa('0x1e')](_0xe90fc1[_0x9daa('0x4f')]);return rp(_0xe90fc1);})[_0x9daa('0x30')](function(_0x4a274d){var _0x18aaca='';var _0x3223d2=0x0;try{fs['unlink'](_0x3c2c04);}catch(_0x57a418){logger['error'](_0x57a418);}if(_0x4a274d&&_0x4a274d['results']){_0x18aaca=_0x4a274d[_0x9daa('0x50')]['map'](function(_0xd96f58){return _0xd96f58&&_0xd96f58[_0x9daa('0x51')][0x0]&&_0xd96f58['alternatives'][0x0][_0x9daa('0x52')]?_0xd96f58[_0x9daa('0x51')][0x0]['transcript']:'';})[_0x9daa('0x53')]('\x0a');_0x3223d2=_0x4a274d['results']['map'](function(_0x5eb194){return _0x5eb194&&_0x5eb194[_0x9daa('0x51')][0x0]&&_0x5eb194[_0x9daa('0x51')][0x0][_0x9daa('0x54')]?_0x5eb194['alternatives'][0x0][_0x9daa('0x54')]:0x0;})[_0x9daa('0x53')]('\x0a');}logger[_0x9daa('0x1e')]('googleASR\x20transcription',_0x18aaca);logger[_0x9daa('0x1e')](_0x9daa('0x55'),_0x3223d2);return{'transcript':_0x18aaca,'confidence':_0x3223d2};})['catch'](function(_0x7df6fc){logger[_0x9daa('0x19')]('[%s]\x20%s:%s',_0x7df6fc[_0x9daa('0x18')],_0x7df6fc[_0x9daa('0x56')],_0x7df6fc[_0x9daa('0x57')]);});};exports[_0x9daa('0x58')]=function(_0x531e32,_0x53c230,_0x5d0fde,_0x1a389e){var _0x466427=apiai(_0x53c230,{'language':_0x1a389e||'en'});return _0x466427[_0x9daa('0x59')](_0x5d0fde,{'sessionId':md5(_0x531e32)})[_0x9daa('0x30')](function(_0x56a585){logger[_0x9daa('0x1e')](JSON[_0x9daa('0x44')](_0x56a585));return{'source':_0x56a585[_0x9daa('0x5a')][_0x9daa('0x5b')],'resolvedQuery':_0x56a585[_0x9daa('0x5a')][_0x9daa('0x5c')],'action':_0x56a585[_0x9daa('0x5a')]['action'],'actionIncomplete':_0x56a585['result'][_0x9daa('0x5d')],'speech':_0x56a585['result'][_0x9daa('0x5e')][_0x9daa('0x5f')],'score':_0x56a585[_0x9daa('0x5a')]['score'],'statusCode':_0x56a585['status'][_0x9daa('0x60')],'endConversation':_0x56a585[_0x9daa('0x5a')][_0x9daa('0x61')]['endConversation']||![],'isFallbackIntent':_0x56a585['result']['metadata']['isFallbackIntent']};});};exports[_0x9daa('0x62')]=function(_0x455941,_0x43c011,_0x371625,_0x3a9700,_0x937d82,_0x57a060){var _0x1c8494=_0x3a9700[_0x9daa('0x63')](/\\n/g,'\x0a');var _0x44a4f6={'credentials':{'private_key':_0x1c8494,'client_email':_0x371625}};var _0x4edbee=new dialogflow[(_0x9daa('0x64'))](_0x44a4f6);var _0x271ca6=_0x4edbee[_0x9daa('0x65')](_0x43c011,md5(_0x455941));var _0x1c8134={'session':_0x271ca6,'queryInput':{'text':{'text':_0x937d82,'languageCode':_0x57a060}}};return _0x4edbee[_0x9daa('0x66')](_0x1c8134)[_0x9daa('0x30')](function(_0x5ea5be){if(_0x5ea5be&&_0x5ea5be[_0x9daa('0x47')]){logger[_0x9daa('0x1e')](_0x9daa('0x67'),JSON[_0x9daa('0x44')](_0x5ea5be));var _0x2ebecc=_0x5ea5be[0x0];if(_0x2ebecc){var _0x322473={'action':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x69')],'allRequiredParamsPresent':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6a')],'endConversation':_0x2ebecc[_0x9daa('0x68')]['diagnosticInfo']&&_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6b')][_0x9daa('0x6c')]?_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6b')][_0x9daa('0x6c')]['end_conversation'][_0x9daa('0x6d')]:![],'fulfillmentText':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6e')],'intentName':_0x2ebecc['queryResult'][_0x9daa('0x6f')]['name'],'intentDisplayName':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6f')][_0x9daa('0x70')],'isFallbackIntent':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6f')][_0x9daa('0x71')],'languageCode':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x72')],'queryText':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x73')],'responseId':_0x2ebecc['responseId'],'score':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x74')],'speech':_0x2ebecc[_0x9daa('0x68')][_0x9daa('0x6e')],'providerResponse':JSON[_0x9daa('0x44')](_0x5ea5be)};return _0x322473;}}});};exports[_0x9daa('0x75')]=function(_0x946f78,_0xcb08b,_0x492859,_0x67e9da){return tilde[_0x9daa('0x4e')](_0x946f78,_0xcb08b,_0x492859,_0x67e9da)[_0x9daa('0x30')](function(_0x414d38){try{fs[_0x9daa('0x20')](_0x946f78);}catch(_0x50fd50){logger[_0x9daa('0x19')](_0x50fd50);}logger[_0x9daa('0x1e')](_0x9daa('0x76'),_0x414d38[_0x9daa('0x52')]);logger[_0x9daa('0x1e')](_0x9daa('0x77'),_0x414d38['confidence']);return _0x414d38;});};exports[_0x9daa('0x78')]=function(_0x47f417,_0x50ea44,_0x462214,_0x1c2273,_0x278270,_0x1fcc27){var _0x2b4924=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+_0x9daa('0x4b'));var _0x174fcd;return aws[_0x9daa('0x79')](_0x47f417,_0x50ea44,_0x462214,_0x1c2273,_0x278270,_0x1fcc27,_0x2b4924)[_0x9daa('0x30')](function(){_0x174fcd=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+'.wav');return convertFile(_0x2b4924,_0x174fcd);})[_0x9daa('0x30')](function(){try{fs[_0x9daa('0x20')](_0x2b4924);fs[_0x9daa('0x3f')](_0x174fcd,'777');}catch(_0x6d4235){logger[_0x9daa('0x19')](_0x6d4235);}return _0x174fcd[_0x9daa('0x32')]('.')[0x0];});};exports['awsLex']=function(_0x152a45,_0x4690a4,_0x24aa0f,_0x5b3ac0,_0x505410,_0x4738d1){return aws[_0x9daa('0x7a')](_0x152a45,_0x4690a4,_0x24aa0f,_0x5b3ac0,_0x505410,_0x4738d1)[_0x9daa('0x30')](function(_0x69dc2f){logger[_0x9daa('0x1e')](JSON[_0x9daa('0x44')](_0x69dc2f));return _0x69dc2f;});};exports[_0x9daa('0x7b')]=function(_0x4cbc69,_0x2c5e5c,_0x42c8f6,_0x337c86){var _0xf97ad8=util[_0x9daa('0x7c')](_0x9daa('0x7d'),ISPEECH_API,_0x4cbc69,encodeURIComponent(_0x2c5e5c),_0x42c8f6,_0x337c86);var _0x2160bd=path['resolve'](__dirname,'tmp',rs[_0x9daa('0x2d')](0x4)+'.mp3');var _0x119cd6;return downloadFile(_0xf97ad8,_0x2160bd)[_0x9daa('0x30')](function(){_0x119cd6=path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+'.wav');return convertFile(_0x2160bd,_0x119cd6);})[_0x9daa('0x30')](function(){try{fs[_0x9daa('0x20')](_0x2160bd);fs[_0x9daa('0x3f')](_0x119cd6,_0x9daa('0x31'));}catch(_0x56b211){logger[_0x9daa('0x19')](_0x56b211);}return _0x119cd6[_0x9daa('0x32')]('.')[0x0];});};exports[_0x9daa('0x7e')]=function(_0x1259cc,_0x13239f,_0x1757e4,_0x13dfe9){var _0x451652=util['format'](_0x9daa('0x7f'),ISPEECH_API,_0x13239f,_0x1757e4,base64Encode(_0x1259cc),_0x13dfe9?util[_0x9daa('0x7c')](_0x9daa('0x80'),encodeURIComponent(_0x13dfe9)):_0x9daa('0x81'));return uploadFile(_0x451652)[_0x9daa('0x30')](function(_0x2615fb){return querystring['parse'](_0x2615fb);});};exports['sestekNDA']=function(_0x5ed831,_0x2d86bd){return sestek[_0x9daa('0x82')](_0x5ed831,_0x2d86bd)[_0x9daa('0x30')](function(_0x47ee57){logger[_0x9daa('0x1e')](JSON[_0x9daa('0x44')](_0x47ee57));var _0x37643d={'speech':_0x47ee57[_0x9daa('0x83')],'action':_0x47ee57['channelData']?_0x47ee57[_0x9daa('0x84')][_0x9daa('0x85')]:undefined,'actiondata':_0x47ee57[_0x9daa('0x84')]?_0x47ee57[_0x9daa('0x84')]['CustomActionData']:undefined};if(_0x47ee57['channelData']&&_0x47ee57[_0x9daa('0x84')][_0x9daa('0x86')]){return base64Decode(_0x47ee57[_0x9daa('0x84')][_0x9daa('0x86')][_0x9daa('0x87')],path[_0x9daa('0x2b')](__dirname,_0x9daa('0x2c'),rs[_0x9daa('0x2d')](0x4)+_0x9daa('0x2e')))[_0x9daa('0x30')](function(_0x668e13){_0x37643d[_0x9daa('0x88')]=_0x668e13;return _0x37643d;});}return _0x37643d;});};exports[_0x9daa('0x89')]=function(){return __dirname;};
\ No newline at end of file
index 274d221..8f34e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e1=['exports','./nda'];(function(_0x5bc251,_0x5c4317){var _0x318d40=function(_0x3c9e1f){while(--_0x3c9e1f){_0x5bc251['push'](_0x5bc251['shift']());}};_0x318d40(++_0x5c4317);}(_0x48e1,0x177));var _0x148e=function(_0x49233d,_0xdb859c){_0x49233d=_0x49233d-0x0;var _0x29a72d=_0x48e1[_0x49233d];return _0x29a72d;};var nda=require(_0x148e('0x0'));module[_0x148e('0x1')]={'nda':nda};
\ No newline at end of file
+var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
index 27cd9a2..548f790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b7=['POST','ndauth_url','/token','password','username','then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','calleridname','text','access_token','body','project','ndagenerate_audio','channelData','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','info','stringify','request-promise','../../../../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x99b7,0x14e));var _0x799b=function(_0xcf5436,_0x4632c3){_0xcf5436=_0xcf5436-0x0;var _0xc4f5c8=_0x99b7[_0xcf5436];return _0xc4f5c8;};'use strict';var rp=require(_0x799b('0x0'));var url=require('url');var logger=require(_0x799b('0x1'))('agi');module['exports']=function(_0x58056f,_0x41135c){var _0x45d0c6={'method':_0x799b('0x2'),'uri':url['resolve'](_0x41135c[_0x799b('0x3')],_0x799b('0x4')),'form':{'grant_type':_0x799b('0x5'),'username':_0x41135c[_0x799b('0x6')],'password':_0x41135c[_0x799b('0x5')]},'json':!![]};return rp(_0x45d0c6)[_0x799b('0x7')](function(_0x4b901a){var _0x418a70={'method':_0x799b('0x2'),'uri':url[_0x799b('0x8')](_0x41135c[_0x799b('0x9')],_0x799b('0xa')),'body':{'type':_0x41135c['ndaactivity_type']||_0x799b('0xb'),'channelId':_0x799b('0xc'),'conversation':{'id':_0x58056f[_0x799b('0xd')]},'from':{'id':_0x58056f['callerid'],'name':_0x58056f[_0x799b('0xe')]},'recipient':{'id':_0x58056f['dnid'],'name':_0x58056f['extension']},'text':_0x41135c[_0x799b('0xf')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x4b901a[_0x799b('0x10')]},'json':!![]};if(_0x41135c['project']){_0x418a70[_0x799b('0x11')]['channelData']['ProjectName']=_0x41135c[_0x799b('0x12')];}if(_0x41135c[_0x799b('0x13')]=='1'){_0x418a70[_0x799b('0x11')][_0x799b('0x14')][_0x799b('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x799b('0x16')};}if(_0x41135c['custom_action']){_0x418a70[_0x799b('0x11')]['channelData'][_0x799b('0x17')]=_0x41135c[_0x799b('0x18')];if(_0x41135c['custom_action_data']){_0x418a70[_0x799b('0x11')][_0x799b('0x14')]['CustomActionData']=_0x41135c[_0x799b('0x19')];}}logger[_0x799b('0x1a')](JSON[_0x799b('0x1b')](_0x418a70));return rp(_0x418a70);});};
\ No newline at end of file
+var _0xa769=['ndauth_url','password','username','then','POST','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','callerid','dnid','extension','Bearer\x20','access_token','body','channelData','ProjectName','project','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','../../../../../config/logger','agi','exports','resolve'];(function(_0x1dd532,_0x36e81c){var _0x3732aa=function(_0x19d50a){while(--_0x19d50a){_0x1dd532['push'](_0x1dd532['shift']());}};_0x3732aa(++_0x36e81c);}(_0xa769,0xfb));var _0x9a76=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xa769[_0x13d07a];return _0x5ee0ee;};'use strict';var rp=require(_0x9a76('0x0'));var url=require('url');var logger=require(_0x9a76('0x1'))(_0x9a76('0x2'));module[_0x9a76('0x3')]=function(_0x488ec5,_0x449889){var _0x52df44={'method':'POST','uri':url[_0x9a76('0x4')](_0x449889[_0x9a76('0x5')],'/token'),'form':{'grant_type':_0x9a76('0x6'),'username':_0x449889[_0x9a76('0x7')],'password':_0x449889[_0x9a76('0x6')]},'json':!![]};return rp(_0x52df44)[_0x9a76('0x8')](function(_0x1556d6){var _0xe396ab={'method':_0x9a76('0x9'),'uri':url['resolve'](_0x449889[_0x9a76('0xa')],_0x9a76('0xb')),'body':{'type':_0x449889[_0x9a76('0xc')]||_0x9a76('0xd'),'channelId':'Nda','conversation':{'id':_0x488ec5['uniqueid']},'from':{'id':_0x488ec5[_0x9a76('0xe')],'name':_0x488ec5['calleridname']},'recipient':{'id':_0x488ec5[_0x9a76('0xf')],'name':_0x488ec5[_0x9a76('0x10')]},'text':_0x449889['text'],'channelData':{}},'headers':{'Authorization':_0x9a76('0x11')+_0x1556d6[_0x9a76('0x12')]},'json':!![]};if(_0x449889['project']){_0xe396ab[_0x9a76('0x13')][_0x9a76('0x14')][_0x9a76('0x15')]=_0x449889[_0x9a76('0x16')];}if(_0x449889[_0x9a76('0x17')]=='1'){_0xe396ab[_0x9a76('0x13')][_0x9a76('0x14')][_0x9a76('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x9a76('0x19')};}if(_0x449889[_0x9a76('0x1a')]){_0xe396ab[_0x9a76('0x13')][_0x9a76('0x14')][_0x9a76('0x1b')]=_0x449889['custom_action'];if(_0x449889[_0x9a76('0x1c')]){_0xe396ab['body'][_0x9a76('0x14')][_0x9a76('0x1d')]=_0x449889[_0x9a76('0x1c')];}}logger[_0x9a76('0x1e')](JSON[_0x9a76('0x1f')](_0xe396ab));return rp(_0xe396ab);});};
\ No newline at end of file
index ae22fc2..a35a27f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbae=['./lib/api','exports'];(function(_0x1d0d40,_0x4f5d58){var _0x4bd9c9=function(_0xc536e){while(--_0xc536e){_0x1d0d40['push'](_0x1d0d40['shift']());}};_0x4bd9c9(++_0x4f5d58);}(_0xfbae,0xbe));var _0xefba=function(_0x47574d,_0x834e6d){_0x47574d=_0x47574d-0x0;var _0x484055=_0xfbae[_0x47574d];return _0x484055;};'use strict';var asr=require(_0xefba('0x0'));module[_0xefba('0x1')]=function(_0x5008ea,_0x678b09,_0x10495f,_0x5a3a7d){return asr(_0x5008ea,_0x678b09,_0x10495f,_0x5a3a7d);};
\ No newline at end of file
+var _0xe2d7=['./lib/api'];(function(_0x10333b,_0x43dfb5){var _0x2e5209=function(_0x168389){while(--_0x168389){_0x10333b['push'](_0x10333b['shift']());}};_0x2e5209(++_0x43dfb5);}(_0xe2d7,0x102));var _0x7e2d=function(_0x46f3a7,_0x5dd344){_0x46f3a7=_0x46f3a7-0x0;var _0xd77e3a=_0xe2d7[_0x46f3a7];return _0xd77e3a;};'use strict';var asr=require(_0x7e2d('0x0'));module['exports']=function(_0x5114ad,_0x107ccd,_0x3b4bfa,_0x21f94b){return asr(_0x5114ad,_0x107ccd,_0x3b4bfa,_0x21f94b);};
\ No newline at end of file
index 394f166..50b862f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd24=['createReadStream','EOS','error','Tilde\x20ASR\x20send\x20error','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','terminate','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','open','close','bluebird','moment','crypto','../../../../../../config/logger','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','info','unix','send','stringify'];(function(_0x3b729e,_0x17f53d){var _0x5b6207=function(_0x5ed234){while(--_0x5ed234){_0x3b729e['push'](_0x3b729e['shift']());}};_0x5b6207(++_0x17f53d);}(_0xbd24,0x176));var _0x4bd2=function(_0x5e1248,_0x42b862){_0x5e1248=_0x5e1248-0x0;var _0x1b4201=_0xbd24[_0x5e1248];return _0x1b4201;};'use strict';var BPromise=require(_0x4bd2('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x4bd2('0x1'));var crypto=require(_0x4bd2('0x2'));var logger=require(_0x4bd2('0x3'))('agi');module['exports']=function(_0x559817,_0x287ba6,_0x1d6450,_0x890e9){return new BPromise(function(_0x26cfcc,_0x50f618){logger['info'](_0x4bd2('0x4'),_0x890e9||_0x4bd2('0x5'));var _0x4d5ac5=new WebSocket(_0x890e9||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x473325='';var _0x46b530='0';var _0x4c5ac7='1';var _0x47ce2a=_0x4bd2('0x6');function _0x254a66(_0x5972fc){var _0x54d262=crypto[_0x4bd2('0x7')](_0x4bd2('0x8'));_0x54d262[_0x4bd2('0x9')](_0x5972fc);return _0x54d262[_0x4bd2('0xa')](_0x4bd2('0xb'));}function _0x9476b(){try{logger[_0x4bd2('0xc')]('Open\x20Tilde\x20ASR\x20socket');var _0x275be7=moment()[_0x4bd2('0xd')]();var _0x2f5d4e=_0x254a66(_0x275be7+_0x287ba6+_0x1d6450);_0x4d5ac5[_0x4bd2('0xe')](JSON[_0x4bd2('0xf')]({'appID':_0x287ba6,'timestamp':_0x275be7,'appKey':_0x2f5d4e}));var _0x3f3e4e=fs[_0x4bd2('0x10')](_0x559817);_0x3f3e4e['on']('data',function(_0x11e250){_0x4d5ac5[_0x4bd2('0xe')](_0x11e250);});_0x3f3e4e['on']('close',function(){_0x4d5ac5[_0x4bd2('0xe')](_0x4bd2('0x11'));});}catch(_0x3f0378){logger[_0x4bd2('0x12')](_0x4bd2('0x13'),JSON['stringify'](_0x3f0378));_0x4d5ac5['terminate']();}}function _0x580941(_0x4b881d){try{if(_0x4b881d){var _0x283cf5=JSON['parse'](_0x4b881d);switch(_0x283cf5[_0x4bd2('0x14')]){case 0x0:if(_0x283cf5['result']){if(_0x283cf5[_0x4bd2('0x15')][_0x4bd2('0x16')]){logger[_0x4bd2('0xc')](_0x4bd2('0x17'),JSON[_0x4bd2('0xf')](_0x283cf5['result'][_0x4bd2('0x18')]));_0x473325=_0x283cf5[_0x4bd2('0x15')]['hypotheses'][0x0][_0x4bd2('0x19')];_0x46b530=_0x283cf5[_0x4bd2('0x15')][_0x4bd2('0x18')][0x0][_0x4bd2('0x1a')];_0x4c5ac7='0';_0x47ce2a=_0x4bd2('0x1b');_0x4d5ac5[_0x4bd2('0x1c')]();}}break;case 0x1:logger['info'](_0x4bd2('0x6'));_0x4c5ac7='1';_0x47ce2a='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x4bd2('0xc')](_0x4bd2('0x1d'));_0x4c5ac7='2';_0x47ce2a=_0x4bd2('0x1d');break;case 0x9:logger[_0x4bd2('0xc')](_0x4bd2('0x1e'));_0x4c5ac7='9';_0x47ce2a=_0x4bd2('0x1e');break;case 0xa:logger[_0x4bd2('0xc')]('Authentication\x20failed.');_0x4c5ac7='10';_0x47ce2a=_0x4bd2('0x1f');break;case 0xb:logger['info'](_0x4bd2('0x20'));_0x4c5ac7='11';_0x47ce2a=_0x4bd2('0x20');}}}catch(_0x1a7cb9){logger[_0x4bd2('0x12')](_0x4bd2('0x21'),JSON[_0x4bd2('0xf')](_0x1a7cb9));_0x4d5ac5[_0x4bd2('0x1c')]();}}function _0x3f3aba(){logger[_0x4bd2('0xc')](_0x4bd2('0x22'));_0x26cfcc({'transcript':_0x473325,'confidence':_0x46b530,'status':_0x4c5ac7,'status_message':_0x47ce2a});}function _0x4aaf3e(_0x4f2995){logger[_0x4bd2('0x12')](_0x4bd2('0x23'));if(!_['isNil'](_0x4f2995)){logger[_0x4bd2('0x12')](_[_0x4bd2('0x24')](_0x4f2995)?JSON[_0x4bd2('0xf')](_0x4f2995):_0x4f2995);}}_0x4d5ac5['on'](_0x4bd2('0x25'),_0x9476b);_0x4d5ac5['on']('message',_0x580941);_0x4d5ac5['on'](_0x4bd2('0x26'),_0x3f3aba);_0x4d5ac5['on'](_0x4bd2('0x12'),_0x4aaf3e);});};
\ No newline at end of file
+var _0x9aa4=['wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','send','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','parse','status','result','final','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','terminate','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','open','bluebird','lodash','moment','crypto','agi','exports','info','Tilde\x20URI'];(function(_0x7b341f,_0x11e481){var _0x46d0a1=function(_0x6f779d){while(--_0x6f779d){_0x7b341f['push'](_0x7b341f['shift']());}};_0x46d0a1(++_0x11e481);}(_0x9aa4,0x157));var _0x49aa=function(_0x12076b,_0x4f4c7a){_0x12076b=_0x12076b-0x0;var _0x8f34eb=_0x9aa4[_0x12076b];return _0x8f34eb;};'use strict';var BPromise=require(_0x49aa('0x0'));var _=require(_0x49aa('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x49aa('0x2'));var crypto=require(_0x49aa('0x3'));var logger=require('../../../../../../config/logger')(_0x49aa('0x4'));module[_0x49aa('0x5')]=function(_0x317acd,_0x33554a,_0x2d7e69,_0x2afd5c){return new BPromise(function(_0x371cdb,_0x541b8b){logger[_0x49aa('0x6')](_0x49aa('0x7'),_0x2afd5c||_0x49aa('0x8'));var _0x4571f6=new WebSocket(_0x2afd5c||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x3124e8='';var _0x1dd499='0';var _0x4dea13='1';var _0x2d4d0d=_0x49aa('0x9');function _0x1facc4(_0x5cfed5){var _0x486d2c=crypto[_0x49aa('0xa')](_0x49aa('0xb'));_0x486d2c[_0x49aa('0xc')](_0x5cfed5);return _0x486d2c[_0x49aa('0xd')]('hex');}function _0x499500(){try{logger[_0x49aa('0x6')](_0x49aa('0xe'));var _0x403de6=moment()['unix']();var _0x47ad56=_0x1facc4(_0x403de6+_0x33554a+_0x2d7e69);_0x4571f6[_0x49aa('0xf')](JSON['stringify']({'appID':_0x33554a,'timestamp':_0x403de6,'appKey':_0x47ad56}));var _0x3022f1=fs[_0x49aa('0x10')](_0x317acd);_0x3022f1['on'](_0x49aa('0x11'),function(_0x1cfcdc){_0x4571f6['send'](_0x1cfcdc);});_0x3022f1['on'](_0x49aa('0x12'),function(){_0x4571f6['send'](_0x49aa('0x13'));});}catch(_0x245d2f){logger[_0x49aa('0x14')](_0x49aa('0x15'),JSON[_0x49aa('0x16')](_0x245d2f));_0x4571f6['terminate']();}}function _0x287172(_0x358c89){try{if(_0x358c89){var _0x3e8b3a=JSON[_0x49aa('0x17')](_0x358c89);switch(_0x3e8b3a[_0x49aa('0x18')]){case 0x0:if(_0x3e8b3a[_0x49aa('0x19')]){if(_0x3e8b3a[_0x49aa('0x19')][_0x49aa('0x1a')]){logger[_0x49aa('0x6')]('Tilde\x20ASR\x20hypoteses',JSON[_0x49aa('0x16')](_0x3e8b3a['result'][_0x49aa('0x1b')]));_0x3124e8=_0x3e8b3a[_0x49aa('0x19')][_0x49aa('0x1b')][0x0][_0x49aa('0x1c')];_0x1dd499=_0x3e8b3a[_0x49aa('0x19')][_0x49aa('0x1b')][0x0]['likelihood'];_0x4dea13='0';_0x2d4d0d=_0x49aa('0x1d');_0x4571f6['terminate']();}}break;case 0x1:logger[_0x49aa('0x6')](_0x49aa('0x9'));_0x4dea13='1';_0x2d4d0d=_0x49aa('0x9');break;case 0x2:logger[_0x49aa('0x6')](_0x49aa('0x1e'));_0x4dea13='2';_0x2d4d0d=_0x49aa('0x1e');break;case 0x9:logger[_0x49aa('0x6')](_0x49aa('0x1f'));_0x4dea13='9';_0x2d4d0d=_0x49aa('0x1f');break;case 0xa:logger[_0x49aa('0x6')](_0x49aa('0x20'));_0x4dea13='10';_0x2d4d0d='Authentication\x20failed.';break;case 0xb:logger['info'](_0x49aa('0x21'));_0x4dea13='11';_0x2d4d0d=_0x49aa('0x21');}}}catch(_0x32fb68){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON[_0x49aa('0x16')](_0x32fb68));_0x4571f6[_0x49aa('0x22')]();}}function _0x5685c4(){logger['info'](_0x49aa('0x23'));_0x371cdb({'transcript':_0x3124e8,'confidence':_0x1dd499,'status':_0x4dea13,'status_message':_0x2d4d0d});}function _0x1eec68(_0x1a30a8){logger[_0x49aa('0x14')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0x49aa('0x24')](_0x1a30a8)){logger[_0x49aa('0x14')](_[_0x49aa('0x25')](_0x1a30a8)?JSON[_0x49aa('0x16')](_0x1a30a8):_0x1a30a8);}}_0x4571f6['on'](_0x49aa('0x26'),_0x499500);_0x4571f6['on']('message',_0x287172);_0x4571f6['on'](_0x49aa('0x12'),_0x5685c4);_0x4571f6['on'](_0x49aa('0x14'),_0x1eec68);});};
\ No newline at end of file
index 45b1904..926c630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd662=['./asr','exports'];(function(_0x3deb4b,_0x260882){var _0x391285=function(_0x3b5663){while(--_0x3b5663){_0x3deb4b['push'](_0x3deb4b['shift']());}};_0x391285(++_0x260882);}(_0xd662,0x1ba));var _0x2d66=function(_0x26fe41,_0x22b289){_0x26fe41=_0x26fe41-0x0;var _0x212c15=_0xd662[_0x26fe41];return _0x212c15;};var asr=require(_0x2d66('0x0'));module[_0x2d66('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x20f7=['exports','./asr'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x20f7,0xaf));var _0x720f=function(_0x3a205f,_0x3dbfb3){_0x3a205f=_0x3a205f-0x0;var _0x1eb189=_0x20f7[_0x3a205f];return _0x1eb189;};var asr=require(_0x720f('0x0'));module[_0x720f('0x1')]={'asr':asr};
\ No newline at end of file
index d0495c6..ad76406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa868=['listening','emit','connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','createServer','listen'];(function(_0x193039,_0x1f684e){var _0x5942af=function(_0x50a7a5){while(--_0x50a7a5){_0x193039['push'](_0x193039['shift']());}};_0x5942af(++_0x1f684e);}(_0xa868,0x1ae));var _0x8a86=function(_0x3cdfdb,_0x40545d){_0x3cdfdb=_0x3cdfdb-0x0;var _0x57d4d8=_0xa868[_0x3cdfdb];return _0x57d4d8;};'use strict';var util=require(_0x8a86('0x0'));var net=require(_0x8a86('0x1'));var EventEmitter=require(_0x8a86('0x2'))[_0x8a86('0x3')];var AGIError=require(_0x8a86('0x4'));var AGIChannel=require(_0x8a86('0x5'));var AGIServer=function(_0x14327c,_0x38827f,_0x1f2f81){var _0x328693=this,_0x14327c=_0x14327c||0x11dd,_0x38827f=_0x38827f||_0x8a86('0x6'),_0x4bd06d=null,_0x3da1ca=0x0;EventEmitter[_0x8a86('0x7')](_0x328693);function _0x219079(){if(!_0x14327c){_0x328693['emit'](_0x8a86('0x8'),new AGIError(_0x8a86('0x9')));return![];}_0x4bd06d=net[_0x8a86('0xa')]();_0x4bd06d[_0x8a86('0xb')](_0x14327c,_0x38827f);_0x4bd06d['on'](_0x8a86('0xc'),function(){_0x328693[_0x8a86('0xd')]('listening');});_0x4bd06d['on'](_0x8a86('0xe'),function(_0x163f5a){_0x4bd06d[_0x8a86('0xf')](function(_0xc2b3b3,_0x229760){if(_0xc2b3b3){_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0xc2b3b3));}else if(_0x1f2f81&&_0x1f2f81<0x0){_0x328693['emit']('error',new AGIError(_0x8a86('0x10')));_0x163f5a[_0x8a86('0x11')]();}else if(_0x1f2f81&&_0x1f2f81>0x0&&_0x1f2f81<_0x229760){_0x3da1ca+=0x1;_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError(_0x8a86('0x12'),_0x3da1ca));_0x163f5a[_0x8a86('0x11')]();}else{var _0x38746f=new AGIChannel(_0x163f5a);_0x38746f['on']('ready',function(){_0x328693[_0x8a86('0xd')](_0x8a86('0xe'),_0x38746f);});}});});_0x4bd06d['on'](_0x8a86('0x8'),function(_0x1c92e4){_0x328693[_0x8a86('0xd')](_0x8a86('0x8'),new AGIError(_0x8a86('0x13'),_0x1c92e4[_0x8a86('0x14')]));});_0x4bd06d['on'](_0x8a86('0x15'),function(){_0x328693[_0x8a86('0xd')](_0x8a86('0x15'),new AGIError(_0x8a86('0x16')));});}process[_0x8a86('0x17')](function(){_0x219079();});};util[_0x8a86('0x18')](AGIServer,EventEmitter);module[_0x8a86('0x19')]=function(_0x50eb91,_0x24ae3c,_0x299326){return new AGIServer(_0x50eb91,_0x24ae3c,_0x299326);};
\ No newline at end of file
+var _0xeb47=['nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','emit','error','createServer','listening','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE'];(function(_0x3a9b11,_0xb6c98){var _0x5e6324=function(_0x18058d){while(--_0x18058d){_0x3a9b11['push'](_0x3a9b11['shift']());}};_0x5e6324(++_0xb6c98);}(_0xeb47,0xbb));var _0x7eb4=function(_0xf8606,_0x2a8529){_0xf8606=_0xf8606-0x0;var _0x2680ac=_0xeb47[_0xf8606];return _0x2680ac;};'use strict';var util=require(_0x7eb4('0x0'));var net=require(_0x7eb4('0x1'));var EventEmitter=require(_0x7eb4('0x2'))[_0x7eb4('0x3')];var AGIError=require(_0x7eb4('0x4'));var AGIChannel=require(_0x7eb4('0x5'));var AGIServer=function(_0x5bebb3,_0x58e305,_0x45a7ec){var _0x493c01=this,_0x5bebb3=_0x5bebb3||0x11dd,_0x58e305=_0x58e305||_0x7eb4('0x6'),_0x477d43=null,_0x430b77=0x0;EventEmitter['call'](_0x493c01);function _0x258d97(){if(!_0x5bebb3){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x8'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x477d43=net[_0x7eb4('0x9')]();_0x477d43['listen'](_0x5bebb3,_0x58e305);_0x477d43['on'](_0x7eb4('0xa'),function(){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0xa'));});_0x477d43['on']('connection',function(_0x28f840){_0x477d43[_0x7eb4('0xb')](function(_0x2565b4,_0x16893b){if(_0x2565b4){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x2565b4));}else if(_0x45a7ec&&_0x45a7ec<0x0){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x8'),new AGIError(_0x7eb4('0xc')));_0x28f840[_0x7eb4('0xd')]();}else if(_0x45a7ec&&_0x45a7ec>0x0&&_0x45a7ec<_0x16893b){_0x430b77+=0x1;_0x493c01['emit'](_0x7eb4('0x8'),new AGIError(_0x7eb4('0xe'),_0x430b77));_0x28f840[_0x7eb4('0xd')]();}else{var _0x42ccfa=new AGIChannel(_0x28f840);_0x42ccfa['on'](_0x7eb4('0xf'),function(){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x10'),_0x42ccfa);});}});});_0x477d43['on']('error',function(_0x297ca8){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x8'),new AGIError(_0x7eb4('0x11'),_0x297ca8['code']));});_0x477d43['on']('close',function(){_0x493c01[_0x7eb4('0x7')](_0x7eb4('0x12'),new AGIError(_0x7eb4('0x13')));});}process[_0x7eb4('0x14')](function(){_0x258d97();});};util[_0x7eb4('0x15')](AGIServer,EventEmitter);module[_0x7eb4('0x16')]=function(_0x52d82b,_0x36aaca,_0x53e6fe){return new AGIServer(_0x52d82b,_0x36aaca,_0x53e6fe);};
\ No newline at end of file
index f8d7e97..c38b35f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c7e=['trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','getData','response','test','mindigit','hiddendigitsnum','first','substr','generate','goal','goalname','GOAL\x20%s','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','math','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','digit','output','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','QUEUE','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','user','bcc','subject','service','host','port','secure','authentication','auth','pass','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','variable_value','start','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','streamFile','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','join','exports','path','util','shelljs','odbc','randomstring','moment','mustache','../../config/logger','./scripts','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariableById','name','catch','getVoiceQueue','getVoiceQueueById','then','prototype','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','getUserById','getTrunkById','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','callback_','isEmpty','lastName','isNil','phone','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agent','error','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','method','timeout','PUT','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','url','body','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeech_tts_language','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','isPlainObject','%s.%s','setVariable','replaceAllVariables','split','replaceAll','getVariable','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','exec','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','getAndSetVariable','RECOG_CONFIDENCE()','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','no\x20list\x20selected','delay','minutes','list_id','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','grammar','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','getUser','sip_id','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','dialogflowV2','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','SESTEK_NDA_%s','audiofile','unlink','.wav','SestekNDA\x20Result\x20%s','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block'];(function(_0x2980d9,_0xef7ff){var _0x37994e=function(_0x555936){while(--_0x555936){_0x2980d9['push'](_0x2980d9['shift']());}};_0x37994e(++_0xef7ff);}(_0x3c7e,0xbf));var _0xe3c7=function(_0x30d14d,_0x5b7cdc){_0x30d14d=_0x30d14d-0x0;var _0x47054e=_0x3c7e[_0x30d14d];return _0x47054e;};'use strict';var fs=require('fs');var path=require(_0xe3c7('0x0'));var util=require(_0xe3c7('0x1'));var _=require('lodash');var sh=require(_0xe3c7('0x2'));var odbc=require(_0xe3c7('0x3'))();var rs=require(_0xe3c7('0x4'));var moment=require(_0xe3c7('0x5'));var Mustache=require(_0xe3c7('0x6'));var rp=require('request-promise');var logger=require(_0xe3c7('0x7'))('agi');var config=require('../../config/environment');var scripts=require(_0xe3c7('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0xe3c7('0x9'),_0xe3c7('0xa')];var verticesWithRetry=[_0xe3c7('0xb'),_0xe3c7('0xc'),_0xe3c7('0xd')];var AGIVertices=function(_0x220bea,_0x385c3d,_0x51a000){this[_0xe3c7('0xe')]=_0x220bea;this[_0xe3c7('0xf')]=_0x385c3d;this[_0xe3c7('0x10')]=_0x51a000;};AGIVertices['prototype']['getVariable']=function(_0x2f5d01,_0x15c14c){this['rpc'][_0xe3c7('0x11')](_0x2f5d01)['then'](function(_0x5c3b04){_0x15c14c(null,_0x5c3b04?_0x5c3b04[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x21c953){_0x15c14c(_0x21c953);});};AGIVertices['prototype'][_0xe3c7('0x14')]=function(_0x523a8e,_0xc08f10){this[_0xe3c7('0xf')][_0xe3c7('0x15')](_0x523a8e)[_0xe3c7('0x16')](function(_0x1528f1){_0xc08f10(null,_0x1528f1?_0x1528f1[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x44c3cd){_0xc08f10(_0x44c3cd);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x18')]=function(_0x18710f,_0x5ac5ce){this[_0xe3c7('0xf')][_0xe3c7('0x19')](_0x18710f)[_0xe3c7('0x16')](function(_0x33f8e9){_0x5ac5ce(null,_0x33f8e9?_0x33f8e9['name']:![]);})['catch'](function(_0x2781da){_0x5ac5ce(_0x2781da);});};AGIVertices[_0xe3c7('0x17')]['getSquareOdbc']=function(_0x234f47,_0x1aab68){this[_0xe3c7('0xf')][_0xe3c7('0x1a')](_0x234f47)['then'](function(_0x12d107){_0x1aab68(null,_0x12d107?_0x12d107[_0xe3c7('0x1b')]:![]);})[_0xe3c7('0x13')](function(_0x29b6a0){_0x1aab68(_0x29b6a0);});};AGIVertices[_0xe3c7('0x17')]['getUser']=function(_0x163b8d,_0x3c9504){this[_0xe3c7('0xf')][_0xe3c7('0x1c')](_0x163b8d)[_0xe3c7('0x16')](function(_0x18d7d8){_0x3c9504(null,_0x18d7d8?_0x18d7d8[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x13c152){_0x3c9504(_0x13c152);});};AGIVertices['prototype']['getTrunk']=function(_0x1d1fd0,_0x37912f){this['rpc'][_0xe3c7('0x1d')](_0x1d1fd0)[_0xe3c7('0x16')](function(_0x38e8ff){_0x37912f(null,_0x38e8ff?_0x38e8ff[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x17d934){_0x37912f(_0x17d934);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1e')]=function(_0x2dd201,_0x15ec2d){var _0x3e7240=this;this[_0xe3c7('0xf')]['getSoundById'](_0x2dd201)[_0xe3c7('0x16')](function(_0x44f481){_0x15ec2d(null,_0x44f481?_0x3e7240[_0xe3c7('0x1f')](_0x44f481[_0xe3c7('0x20')]):![]);})[_0xe3c7('0x13')](function(_0x335b27){_0x15ec2d(_0x335b27);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x21')]=function(_0x267487,_0x2133a6){this[_0xe3c7('0xf')][_0xe3c7('0x22')](_0x267487)[_0xe3c7('0x16')](function(_0xfe558e){_0x2133a6(null,_0xfe558e?_0xfe558e:![]);})['catch'](function(_0x531753){_0x2133a6(_0x531753);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x23')]=function(_0x237bb8,_0x4a0d03,_0x4d96a6){this[_0xe3c7('0x10')][_0xe3c7('0x23')](_0x237bb8,_0x4a0d03)[_0xe3c7('0x16')](function(){_0x4d96a6(null);})[_0xe3c7('0x13')](function(_0x29c539){_0x4d96a6(_0x29c539);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x24')]=function(_0x34e909,_0xcdec27){this[_0xe3c7('0xf')]['getIntervalById'](_0x34e909)['then'](function(_0x5ba7ad){if(_0x5ba7ad){if(_0x5ba7ad[_0xe3c7('0x25')]){_0xcdec27(null,[_0x5ba7ad[_0xe3c7('0x26')]]);}else{_0xcdec27(null,_[_0xe3c7('0x27')](_0x5ba7ad[_0xe3c7('0x28')],_0xe3c7('0x26')));}}else{_0xcdec27(null,![]);}})[_0xe3c7('0x13')](function(_0x41fee5){_0xcdec27(_0x41fee5);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1f')]=function(_0x4d4cd9){return util[_0xe3c7('0x29')](_0xe3c7('0x2a'),FILES_PATH,_0x4d4cd9);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x2b')]=function(_0x4039d1,_0x3be7fc,_0x49c870){odbc[_0xe3c7('0x2c')](_0x4039d1,function(_0x3e3e85){if(_0x3e3e85){logger['error'](_0xe3c7('0x2d'),_0x3e3e85);_0x49c870(_0x3e3e85);}else{logger[_0xe3c7('0x2e')](_0xe3c7('0x2f'));odbc[_0xe3c7('0x30')](_0x3be7fc,function(_0x413387,_0x679f34){if(_0x413387){logger[_0xe3c7('0x2e')](_0xe3c7('0x31'),_0x3be7fc);_0x49c870(_0x413387);}else{logger['info'](_0xe3c7('0x32'),_0x3be7fc);odbc['close'](function(_0x1eec2e){if(_0x1eec2e){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x1eec2e);}_0x49c870(null,_0x679f34);});}});}});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x33')]=function(_0x181104,_0x45e3a4){this[_0xe3c7('0xf')]['getSmsAccountById'](_0x181104)[_0xe3c7('0x16')](function(_0x189d69){_0x45e3a4(null,_0x189d69?_0x189d69:![]);})[_0xe3c7('0x13')](function(_0x38fd3f){_0x45e3a4(_0x38fd3f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x34')]=function(_0x1a51bf,_0x1c9d89){this['rpc'][_0xe3c7('0x34')](_0x1a51bf)['then'](function(_0x278e0b){_0x1c9d89(null,_0x278e0b);})['catch'](function(_0x1d34ba){_0x1c9d89(_0x1d34ba);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x35')]=function(_0x3709ea,_0x204435,_0x387b94){this[_0xe3c7('0xf')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0xe3c7('0x36')],'node':_0x3709ea['label'],'application':_0x3709ea[_0xe3c7('0x37')],'data':_0x204435||null,'project_name':this[_0xe3c7('0xe')][_0xe3c7('0x38')],'callerid':this[_0xe3c7('0xe')][_0xe3c7('0x39')]})[_0xe3c7('0x16')](function(_0x209524){if(_0x387b94){_0x387b94(null,_0x209524);}})[_0xe3c7('0x13')](function(_0x332f5c){if(_0x387b94){_0x387b94(_0x332f5c);}});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x3a')]=function(_0x35d9c0,_0x107c53,_0x173d6b,_0xb16a6){this[_0xe3c7('0xf')][_0xe3c7('0x3a')]({'uniqueid':this[_0xe3c7('0xe')][_0xe3c7('0x36')],'callerid':this[_0xe3c7('0xe')][_0xe3c7('0x39')],'calleridname':this[_0xe3c7('0xe')][_0xe3c7('0x3b')],'context':this[_0xe3c7('0xe')][_0xe3c7('0x3c')],'extension':this['channel']['extension'],'priority':this['channel'][_0xe3c7('0x3d')],'accountcode':this['channel'][_0xe3c7('0x3e')],'dnid':this[_0xe3c7('0xe')][_0xe3c7('0x3f')],'projectName':this[_0xe3c7('0xe')]['arg_1'],'saveName':_0x107c53,'filename':_0x35d9c0[_0xe3c7('0x40')]||_0x107c53,'savePath':_0x173d6b})['then'](function(_0x564e40){_0xb16a6(null,_0x564e40);})[_0xe3c7('0x13')](function(_0xe5cf6f){_0xb16a6(_0xe5cf6f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x41')]=function(_0x492fba,_0x24301f,_0x3a4fa6,_0x4ad41c,_0x308954){this[_0xe3c7('0xf')][_0xe3c7('0x41')]({'uniqueid':this[_0xe3c7('0xe')][_0xe3c7('0x36')],'body':_0x492fba,'direction':_0x24301f,'providerName':_0x3a4fa6,'providerResponse':_0x4ad41c})[_0xe3c7('0x16')](function(_0x480024){if(_0x308954){_0x308954(null,_0x480024);}})[_0xe3c7('0x13')](function(_0x398fb6){if(_0x308954){_0x308954(_0x398fb6);}});};AGIVertices['prototype'][_0xe3c7('0x42')]=function(_0x4733ed,_0x1d030a){this[_0xe3c7('0xf')][_0xe3c7('0x42')]({'firstName':_['isEmpty'](_0x4733ed[_0xe3c7('0x12')])||_['isNil'](_0x4733ed[_0xe3c7('0x12')])?_0xe3c7('0x43')+Math['random']():_0x4733ed[_0xe3c7('0x12')],'lastName':_[_0xe3c7('0x44')](_0x4733ed[_0xe3c7('0x45')])||_[_0xe3c7('0x46')](_0x4733ed[_0xe3c7('0x45')])?null:_0x4733ed[_0xe3c7('0x45')],'phone':_0x4733ed[_0xe3c7('0x47')],'ListId':_0x4733ed['list_id'],'scheduledat':_0x4733ed[_0xe3c7('0x48')],'callbackUniqueid':this['channel'][_0xe3c7('0x36')],'tags':_0xe3c7('0x49'),'description':_0xe3c7('0x4a')+_0x4733ed[_0xe3c7('0x48')][_0xe3c7('0x4b')](),'priority':_0x4733ed[_0xe3c7('0x4c')]})[_0xe3c7('0x16')](function(_0xf2fe22){_0x1d030a(null,_0xf2fe22);})[_0xe3c7('0x13')](function(_0x4a9964){_0x1d030a(_0x4a9964);});};AGIVertices['prototype']['getPause']=function(_0x4e9596,_0x12b5ef){this[_0xe3c7('0xf')][_0xe3c7('0x4d')](_0x4e9596)[_0xe3c7('0x16')](function(_0xa450c2){_0x12b5ef(null,_0xa450c2?_0xa450c2[_0xe3c7('0x12')]:![]);})[_0xe3c7('0x13')](function(_0x462a97){_0x12b5ef(_0x462a97);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x4e')]=function(_0x1d1d77,_0x792652,_0x76c30b){var _0x38c0b5={'role':_0xe3c7('0x4f')};_0x38c0b5[_0x1d1d77]=this['channel']['callerid'];this[_0xe3c7('0xf')][_0xe3c7('0x4e')](_0x38c0b5,_0x792652,this[_0xe3c7('0xe')][_0xe3c7('0x36')])[_0xe3c7('0x16')](function(_0x75c75a){_0x76c30b(null,_['isNil'](_0x75c75a)?![]:!![]);})[_0xe3c7('0x13')](function(_0x8772e7){logger[_0xe3c7('0x50')](_0x8772e7);_0x76c30b(null,![]);});};AGIVertices['prototype'][_0xe3c7('0x51')]=function(_0x426eb0,_0x58e39f){var _0x43f336={'role':_0xe3c7('0x4f')};_0x43f336[_0x426eb0]=this[_0xe3c7('0xe')][_0xe3c7('0x39')];this[_0xe3c7('0xf')][_0xe3c7('0x51')](_0x43f336)[_0xe3c7('0x16')](function(_0x127a5c){_0x58e39f(null,_[_0xe3c7('0x46')](_0x127a5c)?![]:!![]);})[_0xe3c7('0x13')](function(_0x360607){logger[_0xe3c7('0x50')](_0x360607);_0x58e39f(null,![]);});};AGIVertices['prototype'][_0xe3c7('0x52')]=function(_0xc89354,_0x315ee8){var _0x5cfbf6={'role':'agent'};_0x5cfbf6[_0xc89354]=this['channel'][_0xe3c7('0x39')];this[_0xe3c7('0xf')][_0xe3c7('0x52')](_0x5cfbf6)[_0xe3c7('0x16')](function(_0x115144){_0x315ee8(null,_[_0xe3c7('0x46')](_0x115144)?![]:!![]);})[_0xe3c7('0x13')](function(_0x3eb4a1){logger[_0xe3c7('0x50')](_0x3eb4a1);_0x315ee8(null,![]);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x53')]=function(_0xf1938d,_0x49867b){var _0x56350f={'role':_0xe3c7('0x4f')};_0x56350f[_0xf1938d]=this[_0xe3c7('0xe')][_0xe3c7('0x39')];var _0x220986=_0xf1938d!=_0xe3c7('0x54')?util[_0xe3c7('0x29')](_0xe3c7('0x55'),'LOCAL',this[_0xe3c7('0xe')]['callerid']):undefined;this['rpc'][_0xe3c7('0x53')](_0x56350f,_0x220986)['then'](function(_0x30223c){_0x49867b(null,_[_0xe3c7('0x46')](_0x30223c)?![]:!![]);})[_0xe3c7('0x13')](function(_0x889acc){logger[_0xe3c7('0x50')](_0x889acc);_0x49867b(null,![]);});};AGIVertices[_0xe3c7('0x17')]['shellCommand']=function(_0x40611b,_0x1bf69b){sh['exec'](_['trim'](_0x40611b),function(_0x21cffc,_0xb514ae){var _0x2dfa2f=_0xb514ae[_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'');_0x1bf69b(null,_0x2dfa2f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x57')]=function(_0x1246b2,_0x284cee){scripts['googleCloudTTS'](_0x1246b2[_0xe3c7('0x58')],_0x1246b2[_0xe3c7('0x59')]||_0xe3c7('0x5a'),_0x1246b2[_0xe3c7('0x5a')],_0x1246b2[_0xe3c7('0x5b')]||_0xe3c7('0x5c'),_0x1246b2[_0xe3c7('0x5d')]||_0xe3c7('0x5e'),_0x1246b2[_0xe3c7('0x5f')]||_0xe3c7('0x60'))[_0xe3c7('0x16')](function(_0x3b49c4){_0x284cee(null,_0x3b49c4);})[_0xe3c7('0x13')](function(_0x13f457){_0x284cee(_0x13f457);});};AGIVertices['prototype'][_0xe3c7('0x61')]=function(_0xc6237b,_0x33cde6){scripts[_0xe3c7('0x61')](_0xc6237b['text'],_0xc6237b[_0xe3c7('0x62')]||'en',0x1)['then'](function(_0x2fe262){_0x33cde6(null,_0x2fe262);})['catch'](function(_0x26e3e2){_0x33cde6(_0x26e3e2);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x63')]=function(_0x452078,_0x4c36ed){var _0x19f13c={'uri':_0x452078['url'],'method':_0x452078[_0xe3c7('0x64')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x452078['timeout'])==='number'&&parseInt(_0x452078[_0xe3c7('0x65')])>=0x1?parseInt(_0x452078[_0xe3c7('0x65')])*0x3e8:0x5*0x3e8};if(_['includes'](['POST',_0xe3c7('0x66')],_0x19f13c['method'][_0xe3c7('0x67')]())){try{_0x19f13c['body']=_0x452078[_0xe3c7('0xa')]?JSON[_0xe3c7('0x68')](_0x452078['rawBody']):{};}catch(_0x2fe13a){logger['error'](_0xe3c7('0x69'),_0x2fe13a);}}try{_0x19f13c[_0xe3c7('0x6a')]=_0x452078[_0xe3c7('0x9')]?JSON[_0xe3c7('0x68')](_0x452078[_0xe3c7('0x9')]):{};}catch(_0x4e7dd2){logger['error'](_0xe3c7('0x6b'),_0x4e7dd2);}if(_0x452078[_0xe3c7('0x6c')]){try{var _0x102cb1=require(_0x452078[_0xe3c7('0x6c')])[_0xe3c7('0x6d')](this,_0x19f13c);_0x19f13c[_0xe3c7('0x6e')]=Mustache[_0xe3c7('0x6f')](_0x452078[_0xe3c7('0x70')],_0x102cb1,{},['$$','$$']);if(_0x19f13c[_0xe3c7('0x6a')]){_0x19f13c[_0xe3c7('0x6a')]=JSON[_0xe3c7('0x68')](Mustache[_0xe3c7('0x6f')](JSON['stringify'](_0x19f13c[_0xe3c7('0x6a')]),_0x102cb1,{},['$$','$$']));}if(_0x19f13c['body']){_0x19f13c[_0xe3c7('0x71')]=JSON['parse'](Mustache[_0xe3c7('0x6f')](JSON[_0xe3c7('0x72')](_0x19f13c[_0xe3c7('0x71')]),_0x102cb1,{},['$$','$$']));}}catch(_0x5cfcdd){logger[_0xe3c7('0x50')](_0xe3c7('0x73'),_0x5cfcdd);}}rp(_0x19f13c)[_0xe3c7('0x16')](function(_0x4e4f96){var _0x128786={'statusCode':_0x4e4f96[_0xe3c7('0x74')]||0xc8,'statusMessage':_0x4e4f96[_0xe3c7('0x75')]||'OK','headers':_0x4e4f96[_0xe3c7('0x6a')]||{},'body':_0x4e4f96[_0xe3c7('0x71')]||{}};_0x4c36ed(null,_0x128786);})[_0xe3c7('0x13')](function(_0x25cb1d){var _0x3e8038={'statusCode':_0x25cb1d[_0xe3c7('0x74')]||0x1f4,'statusMessage':_0x25cb1d[_0xe3c7('0x76')]||_0xe3c7('0x77'),'headers':_0x25cb1d['options'][_0xe3c7('0x6a')]||{},'body':_0x25cb1d[_0xe3c7('0x78')][_0xe3c7('0x71')]||{}};_0x4c36ed(null,_0x3e8038);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x79')]=function(_0x30110f,_0x315926){scripts['googleDialogflow'](this[_0xe3c7('0xe')][_0xe3c7('0x36')],_0x30110f[_0xe3c7('0x7a')],_0x30110f[_0xe3c7('0x5a')],_0x30110f[_0xe3c7('0x7b')]||'en')[_0xe3c7('0x16')](function(_0xcbd7a0){_0x315926(null,_0xcbd7a0);})[_0xe3c7('0x13')](function(_0x36424b){_0x315926(_0x36424b);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x7c')]=function(_0x5b38be,_0x422ffa){scripts[_0xe3c7('0x7c')](this[_0xe3c7('0xe')][_0xe3c7('0x36')],_0x5b38be[_0xe3c7('0x7d')],_0x5b38be[_0xe3c7('0x7e')],_0x5b38be[_0xe3c7('0x7f')],_0x5b38be[_0xe3c7('0x5a')],_0x5b38be['dialogflowV2_language']||'en')[_0xe3c7('0x16')](function(_0x5797b1){_0x422ffa(null,_0x5797b1);})['catch'](function(_0x566544){_0x422ffa(_0x566544);});};AGIVertices['prototype'][_0xe3c7('0x80')]=function(_0x1e6558,_0x4a48d6){scripts[_0xe3c7('0x80')](this['channel'],_0x1e6558)['then'](function(_0x2041d5){_0x4a48d6(null,_0x2041d5);})[_0xe3c7('0x13')](function(_0x29dada){_0x4a48d6(_0x29dada);});};AGIVertices[_0xe3c7('0x17')]['ispeechTTS']=function(_0x3a05dd,_0x3888ff){scripts['ispeechTTS'](_0x3a05dd['key'],_0x3a05dd[_0xe3c7('0x5a')],_0x3a05dd[_0xe3c7('0x81')]||'en-US',_0x3a05dd[_0xe3c7('0x82')])[_0xe3c7('0x16')](function(_0x509897){_0x3888ff(null,_0x509897);})[_0xe3c7('0x13')](function(_0x28572b){_0x3888ff(_0x28572b);});};AGIVertices[_0xe3c7('0x17')]['ispeechASR']=function(_0x15d35b,_0x45d757,_0x205c84){scripts[_0xe3c7('0x83')](_0x45d757,_0x15d35b[_0xe3c7('0x7a')],_0x15d35b['ispeech_asr_language']||_0xe3c7('0x5c'),this[_0xe3c7('0x84')](_0x15d35b[_0xe3c7('0x85')])?_0x15d35b[_0xe3c7('0x85')]:undefined)[_0xe3c7('0x16')](function(_0x1ab6f8){_0x205c84(null,_0x1ab6f8);})['catch'](function(_0x20a0ff){_0x205c84(_0x20a0ff);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x86')]=function(_0x2410bf,_0x32750b){scripts[_0xe3c7('0x86')](_0x2410bf[_0xe3c7('0x87')],_0x2410bf[_0xe3c7('0x88')],_0x2410bf[_0xe3c7('0x89')],_0x2410bf[_0xe3c7('0x8a')]||'Amy',_0x2410bf['text'],_0x2410bf[_0xe3c7('0x8b')]||_0xe3c7('0x5a'))[_0xe3c7('0x16')](function(_0x39dd5c){_0x32750b(null,_0x39dd5c);})['catch'](function(_0xed8e6e){_0x32750b(_0xed8e6e);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x8c')]=function(_0x33b347,_0x41033f){scripts[_0xe3c7('0x8c')](this['channel'][_0xe3c7('0x36')],_0x33b347[_0xe3c7('0x87')],_0x33b347[_0xe3c7('0x88')],_0x33b347['aws_lex_region'],_0x33b347[_0xe3c7('0x5a')],_0x33b347[_0xe3c7('0x8d')])[_0xe3c7('0x16')](function(_0x4e5eac){_0x41033f(null,_0x4e5eac);})[_0xe3c7('0x13')](function(_0x26a688){_0x41033f(_0x26a688);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x8e')]=function(_0x37be1d,_0x57ee2d,_0x5ddb73){scripts[_0xe3c7('0x8e')](_0x57ee2d,_0x37be1d[_0xe3c7('0x7a')],_0x37be1d[_0xe3c7('0x8f')]||_0xe3c7('0x5c'))[_0xe3c7('0x16')](function(_0x482b24){_0x5ddb73(null,_0x482b24);})[_0xe3c7('0x13')](function(_0x535784){_0x5ddb73(_0x535784);});};AGIVertices[_0xe3c7('0x17')]['tildeASR']=function(_0x289bfb,_0xbd6006,_0x461252){scripts[_0xe3c7('0x90')](_0xbd6006,_0x289bfb[_0xe3c7('0x91')],_0x289bfb[_0xe3c7('0x92')],_0x289bfb[_0xe3c7('0x6e')])[_0xe3c7('0x16')](function(_0x2de92e){_0x461252(null,_0x2de92e);})[_0xe3c7('0x13')](function(_0x4c090f){_0x461252(_0x4c090f);});};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x93')]=function(_0x5c4d68){var _0x2fccd5=_[_0xe3c7('0x94')](verticesWithRetry,_0x5c4d68[_0xe3c7('0x37')])?_0x5c4d68:_[_0xe3c7('0x95')](_0x5c4d68);for(var _0x40eeb1 in _0x2fccd5){if(_0x2fccd5[_0xe3c7('0x96')](_0x40eeb1)){if(_0x2fccd5[_0x40eeb1]&&_[_0xe3c7('0x97')](_0x2fccd5[_0x40eeb1])){if(_[_0xe3c7('0x94')](recursiveMapAttributes,_0x40eeb1)){_0x2fccd5[_0x40eeb1]=this[_0xe3c7('0x98')](_0x2fccd5[_0x40eeb1]);}else{_0x2fccd5[_0x40eeb1]=this['replaceAllVariables'](_0x2fccd5[_0x40eeb1]);}}}}return _0x2fccd5;};AGIVertices[_0xe3c7('0x17')]['recursiveNodeIndex']=function(_0x11ea2c){for(var _0x4a0576 in _0x11ea2c){if(_0x11ea2c['hasOwnProperty'](_0x4a0576)){if(_['isPlainObject'](_0x11ea2c[_0x4a0576])){this[_0xe3c7('0x99')](_0x11ea2c[_0x4a0576]);}else if(_[_0xe3c7('0x9a')](_0x11ea2c[_0x4a0576])){for(var _0x378778=0x0;_0x378778<_0x11ea2c[_0x4a0576][_0xe3c7('0x9b')];_0x378778++){this['recursiveNodeIndex'](_0x11ea2c[_0x4a0576][_0x378778]);}}else if(_[_0xe3c7('0x97')](_0x11ea2c[_0x4a0576])){_0x11ea2c[_0x4a0576]=this['replaceAllVariables'](_0x11ea2c[_0x4a0576]);}}}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x9c')]=function(_0x5f3033,_0x3053ac){for(var _0x1a9f82 in _0x5f3033){if(_0x5f3033[_0xe3c7('0x96')](_0x1a9f82)){if(_[_0xe3c7('0x9d')](_0x5f3033[_0x1a9f82])){if(!_['isEmpty'](_0x5f3033[_0x1a9f82])){this[_0xe3c7('0x9c')](_0x5f3033[_0x1a9f82],util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82));}}else if(_[_0xe3c7('0x9a')](_0x5f3033[_0x1a9f82])){for(var _0x3542a2=0x0;_0x3542a2<_0x5f3033[_0x1a9f82][_0xe3c7('0x9b')];_0x3542a2++){this['saveRestApiResult'](_0x5f3033[_0x1a9f82][_0x3542a2],util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82+'['+_0x3542a2+']'));}}else{if(!_[_0xe3c7('0x46')](_0x5f3033[_0x1a9f82])){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x3053ac,_0x1a9f82),_0x5f3033[_0x1a9f82]);}}}}};AGIVertices['prototype'][_0xe3c7('0x98')]=function(_0xaaf573){try{var _0x4d8d57=JSON['parse'](_0xaaf573);this[_0xe3c7('0x99')](_0x4d8d57);return JSON[_0xe3c7('0x72')](_0x4d8d57);}catch(_0x20de87){return this[_0xe3c7('0xa0')](_0xaaf573);}};AGIVertices[_0xe3c7('0x17')]['replaceAllVariables']=function(_0x4880d7){var _0x3aa8e5=_0x4880d7[_0xe3c7('0xa1')]('{');for(var _0x5a2c14=0x1;_0x5a2c14<_0x3aa8e5['length'];_0x5a2c14+=0x1){var _0x413879=_0x3aa8e5[_0x5a2c14]['split']('}');if(_0x413879[_0xe3c7('0x9b')]>0x1){_0x4880d7=_0x4880d7[_0xe3c7('0xa2')]('{'+_0x413879[0x0]+'}',this['channel'][_0xe3c7('0xa3')](_0x413879[0x0])[_0xe3c7('0xa4')]||_0x413879[0x0]);}}if(_0x3aa8e5[_0xe3c7('0x9b')]===0x1){return _0x4880d7['toString']();}return this[_0xe3c7('0xa0')](_0x4880d7);};AGIVertices[_0xe3c7('0x17')]['getAndSetVariable']=function(_0x4da4ba,_0x3bfcfd){var _0x52d0f3=this['channel']['getVariable'](_0x4da4ba);if(_0x52d0f3[_0xe3c7('0xa5')]===-0x1){return _0x52d0f3;}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xa6'),_0x3bfcfd,_0x52d0f3['extra']));return this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x3bfcfd,_0x52d0f3['extra']);};AGIVertices['prototype'][_0xe3c7('0x84')]=function(_0x3fb05a){return _0x3fb05a&&_0x3fb05a!=='0'&&_0x3fb05a!=='-1'&&_0x3fb05a!=='';};AGIVertices[_0xe3c7('0x17')]['maxRetry']=function(_0x2027eb){this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x2027eb,'-');_0x2027eb['retry']=_0x2027eb[_0xe3c7('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xa8')]=function(_0x2dfb03){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xa9'),_0x2dfb03[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x2dfb03[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x539df9='\x22'+_0x2dfb03[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x2dfb03[_0xe3c7('0x78')])){_0x539df9+=','+_0x2dfb03['options'];}var _0x1df6cf=this['channel'][_0xe3c7('0xad')](_0xe3c7('0xae'),_0x539df9);if(_0x1df6cf[_0xe3c7('0xa5')]===-0x1){return _0x1df6cf;}return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0xaf'),_0x539df9));};AGIVertices['prototype'][_0xe3c7('0xb0')]=function(_0x29f39f){logger['info'](util['format'](_0xe3c7('0xb1'),_0x29f39f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x29f39f['grammar'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xb2'));}var _0x50c6a2=_0x29f39f['grammar'];if(this[_0xe3c7('0x84')](_0x29f39f[_0xe3c7('0x78')])){_0x50c6a2+=','+_0x29f39f[_0xe3c7('0x78')];}var _0x15554f=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('MRCPRecog',_0x50c6a2);if(_0x15554f[_0xe3c7('0xa5')]===-0x1){return _0x15554f;}var _0x3617e6=this[_0xe3c7('0xb3')](_0xe3c7('0xb4'),'MRCP_RECOG_CONFIDENCE');if(_0x3617e6[_0xe3c7('0xa5')]===-0x1){return _0x3617e6;}var _0xb0cafa=this['getAndSetVariable'](_0xe3c7('0xb5'),'MRCP_RECOG_TRANSCRIPT');if(_0xb0cafa[_0xe3c7('0xa5')]===-0x1){return _0xb0cafa;}var _0x1088fe=this[_0xe3c7('0xb3')](_0xe3c7('0xb6'),_0xe3c7('0xb7'));if(_0x1088fe[_0xe3c7('0xa5')]===-0x1){return _0x1088fe;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x50c6a2));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xb9')]=function(_0x2218e1){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xba'),_0x2218e1[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xb9')]([_0x2218e1['command'],_0x2218e1['args']]);};AGIVertices['prototype'][_0xe3c7('0xbb')]=function(_0x320f33){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xbc'),_0x320f33[_0xe3c7('0xaa')]));if(this['isConfigured'](_0x320f33['timeout'])){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xbd'),_0x320f33['timeout']));var _0x5f24fd=this[_0xe3c7('0xe')][_0xe3c7('0xbe')](_0x320f33[_0xe3c7('0x65')]);if(_0x5f24fd[_0xe3c7('0xa5')]===-0x1){return _0x5f24fd;}}return this['channel']['answer']();};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x49')]=function(_0x1650e7){logger[_0xe3c7('0x2e')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x1650e7[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x1650e7['list_id'])){return this['channel'][_0xe3c7('0x50')](_0x1650e7,_0xe3c7('0xbf'));}_0x1650e7[_0xe3c7('0x48')]=moment();if(this[_0xe3c7('0x84')](_0x1650e7['delay'])){_0x1650e7[_0xe3c7('0x48')]=moment()['add'](_0x1650e7[_0xe3c7('0xc0')],_0xe3c7('0xc1'));}if(!this[_0xe3c7('0x84')](_0x1650e7['callback_priority'])){_0x1650e7[_0xe3c7('0x4c')]=0x2;}this[_0xe3c7('0x42')]['sync'](this,_0x1650e7);return this[_0xe3c7('0xe')]['noop'](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x1650e7[_0xe3c7('0x47')],_0x1650e7[_0xe3c7('0xc2')],_0x1650e7[_0xe3c7('0x48')]));};AGIVertices['prototype'][_0xe3c7('0xc3')]=function(_0x4058a6){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0xc4'),_0x4058a6[_0xe3c7('0xaa')]));var _0x42e777=this[_0xe3c7('0xe')]['exec'](_0x4058a6['application'],_0x4058a6['options']);if(_0x42e777['result']===-0x1){return _0x42e777;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Executed\x20command\x20%s\x20%s',_0x4058a6[_0xe3c7('0xc5')],_0x4058a6[_0xe3c7('0x78')]));};AGIVertices['prototype'][_0xe3c7('0xc6')]=function(_0x385a0b){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xc7'),_0x385a0b[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x385a0b[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x2b1ede='\x22'+_0x385a0b[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x385a0b[_0xe3c7('0x78')])){_0x2b1ede+=','+_0x385a0b['options'];}var _0x3cfe8c=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('MRCPSynth',_0x2b1ede);if(_0x3cfe8c[_0xe3c7('0xa5')]===-0x1){return _0x3cfe8c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xaf'),_0x2b1ede));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xc8')]=function(_0x528132){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xc9'),_0x528132['label']));if(!this['isConfigured'](_0x528132['text'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}var _0x5caebf='\x22'+_0x528132[_0xe3c7('0x5a')]+'\x22';if(this[_0xe3c7('0x84')](_0x528132['options'])){_0x5caebf+=','+_0x528132[_0xe3c7('0x78')];}var _0x21452b=this['channel'][_0xe3c7('0xad')](_0xe3c7('0xae'),_0x5caebf);if(_0x21452b['result']===-0x1){return _0x21452b;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x5caebf));};AGIVertices['prototype']['lumenvoxasr']=function(_0x1201d5){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xca'),_0x1201d5[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x1201d5['grammar'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xb2'));}var _0x28ba13=_0x1201d5[_0xe3c7('0xcb')];if(this[_0xe3c7('0x84')](_0x1201d5['options'])){_0x28ba13+=','+_0x1201d5['options'];}var _0x4b3d51=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xcc'),_0x28ba13);if(_0x4b3d51[_0xe3c7('0xa5')]===-0x1){return _0x4b3d51;}var _0x35b6b5=this[_0xe3c7('0xb3')](_0xe3c7('0xb4'),_0xe3c7('0xcd'));if(_0x35b6b5[_0xe3c7('0xa5')]===-0x1){return _0x35b6b5;}var _0x572017=this[_0xe3c7('0xb3')](_0xe3c7('0xb5'),_0xe3c7('0xce'));if(_0x572017[_0xe3c7('0xa5')]===-0x1){return _0x572017;}var _0x197262=this['getAndSetVariable'](_0xe3c7('0xb6'),'LUMENVOX_ASR_INSTANCE');if(_0x197262['result']===-0x1){return _0x197262;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x28ba13));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xcf')]=function(_0x3eba0e){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0xd0'),_0x3eba0e[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x3eba0e[_0xe3c7('0xcb')])){return this['channel']['noop'](_0xe3c7('0xb2'));}var _0x5b4688=_0x3eba0e[_0xe3c7('0xcb')];if(this[_0xe3c7('0x84')](_0x3eba0e['options'])){_0x5b4688+=','+_0x3eba0e[_0xe3c7('0x78')];}var _0xc345c1=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xcc'),_0x5b4688);if(_0xc345c1['result']===-0x1){return _0xc345c1;}var _0x30cf83=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xe3c7('0xd1'));if(_0x30cf83[_0xe3c7('0xa5')]===-0x1){return _0x30cf83;}var _0x20a03b=this[_0xe3c7('0xb3')](_0xe3c7('0xb5'),'SESTEK_ASR_TRANSCRIPT');if(_0x20a03b[_0xe3c7('0xa5')]===-0x1){return _0x20a03b;}var _0x389983=this['getAndSetVariable'](_0xe3c7('0xb6'),'SESTEK_ASR_INSTANCE');if(_0x389983['result']===-0x1){return _0x389983;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xb8'),_0x5b4688));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xd2')]=function(_0x17e710){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xd3'),_0x17e710['label']));if(!this[_0xe3c7('0x84')](_0x17e710[_0xe3c7('0xd4')])){return this['channel']['error'](_0x17e710,_0xe3c7('0xd5'));}var _0x32b5c0=this['getSquareOdbc'][_0xe3c7('0x6d')](this,_0x17e710[_0xe3c7('0xd4')]);if(!_0x32b5c0){return this['channel'][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xd6'));}if(!this[_0xe3c7('0x84')](_0x17e710[_0xe3c7('0x30')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xd7'));}var _0x1f87e5=_0x17e710[_0xe3c7('0x30')][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('query:\x20%s',_0x1f87e5));var _0x17df31=this[_0xe3c7('0x2b')]['sync'](this,_0x32b5c0,_0x1f87e5);this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x17e710,_0x1f87e5);if(!this['isConfigured'](_0x17e710['variable_id'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xd8'));}var _0x9c24d7=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x17e710[_0xe3c7('0xd9')]);if(!_0x9c24d7){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x17e710,_0xe3c7('0xda'));}var _0x49ed16=this;_0x17df31[_0xe3c7('0xdb')](function(_0x398562,_0x2bd2f9){Object['keys'](_0x398562)[_0xe3c7('0xdb')](function(_0x27fd81){_0x49ed16[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0xdc'),_0x9c24d7,_0x2bd2f9,_0x27fd81),_0x398562[_0x27fd81]);});});this[_0xe3c7('0xe')]['setVariable'](util['format'](_0xe3c7('0xdd'),_0x9c24d7),_0x17df31[_0xe3c7('0x9b')]);return this['channel']['noop'](util[_0xe3c7('0x29')](_0xe3c7('0xde'),_0x9c24d7));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xdf')]=function(_0x295cd0){logger[_0xe3c7('0xe0')](util[_0xe3c7('0x29')](_0xe3c7('0xe1'),_0x295cd0[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x295cd0['sip_id'])){return this['channel'][_0xe3c7('0x50')](_0x295cd0,'no\x20user\x20selected');}var _0xda1f58=this[_0xe3c7('0xe2')]['sync'](this,_0x295cd0[_0xe3c7('0xe3')]);if(!_0xda1f58){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x295cd0,'no\x20user\x20found');}var _0x5f42ea=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0xe4'),[util[_0xe3c7('0x29')](_0xe3c7('0xe5'),_0xda1f58),_0x295cd0[_0xe3c7('0x65')],_0x295cd0[_0xe3c7('0xe6')],_0x295cd0['url']]);if(_0x5f42ea['result']===-0x1){return _0x5f42ea;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xe7'),'DIAL'));};AGIVertices['prototype'][_0xe3c7('0xe8')]=function(_0x15a831){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xe9'),_0x15a831[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x15a831['key'])){return this['channel']['noop'](_0xe3c7('0xea'));}if(!this[_0xe3c7('0x84')](_0x15a831[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20text\x20configured');}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x15a831);this['createSquareMessage'](_0x15a831['text'],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xec'),_0x15a831[_0xe3c7('0x5a')]));var _0x2ead3e=this['googleDialogflow'][_0xe3c7('0x6d')](this,_0x15a831);if(_0x2ead3e){for(var _0x547582 in _0x2ead3e){if(_0x2ead3e[_0xe3c7('0x96')](_0x547582)){this['channel']['setVariable'](util[_0xe3c7('0x29')](_0xe3c7('0xed'),_0x547582[_0xe3c7('0x67')]()),_0x2ead3e[_0x547582]);}}this['createSquareMessage'](_0x2ead3e['speech'],_0xe3c7('0xee'),_0xe3c7('0xe8'),'');return this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Dialogflow\x20Result\x20%s',_0x2ead3e[_0xe3c7('0xef')]));}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x15a831,_0xe3c7('0xf0'));};AGIVertices[_0xe3c7('0x17')]['dialogflowV2']=function(_0x1fd05a){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0xf1'),_0x1fd05a[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7d')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xf2'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7e')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xf3'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x7f')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20private_key\x20configured');}if(!this['isConfigured'](_0x1fd05a[_0xe3c7('0xf4')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xf5'));}if(!this[_0xe3c7('0x84')](_0x1fd05a[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this['channel'][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x1fd05a);this[_0xe3c7('0x41')](_0x1fd05a['text'],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xf6'),_0x1fd05a[_0xe3c7('0x5a')]));var _0x2773c2=this['googleDialogflowV2']['sync'](this,_0x1fd05a);if(_0x2773c2){for(var _0x55f0f7 in _0x2773c2){if(_0x2773c2[_0xe3c7('0x96')](_0x55f0f7)){if(_0x55f0f7!=='providerResponse'){this['channel'][_0xe3c7('0x9f')](util['format']('DIALOGFLOW_%s',_0x55f0f7[_0xe3c7('0x67')]()),_0x2773c2[_0x55f0f7]);}}}this[_0xe3c7('0x41')](_0x2773c2[_0xe3c7('0xef')],_0xe3c7('0xee'),_0xe3c7('0xf7'),_0x2773c2[_0xe3c7('0xf8')]);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0xf9'),_0x2773c2[_0xe3c7('0xef')]));}return this['channel'][_0xe3c7('0x50')](_0x1fd05a,_0xe3c7('0xfa'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xfb')]=function(_0x29202f){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0xfc'),_0x29202f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x29202f[_0xe3c7('0xfd')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xfe'));}if(!this['isConfigured'](_0x29202f[_0xe3c7('0xff')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20username\x20configured');}if(!this[_0xe3c7('0x84')](_0x29202f[_0xe3c7('0x100')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x101'));}if(!this[_0xe3c7('0x84')](_0x29202f['ndassistant_url'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x29202f);this[_0xe3c7('0x41')](_0x29202f[_0xe3c7('0x5a')],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Trying\x20SestekNDA:\x20%s',_0x29202f[_0xe3c7('0x5a')]));var _0x52a962=this[_0xe3c7('0x80')][_0xe3c7('0x6d')](this,_0x29202f);if(_0x52a962){for(var _0x109e35 in _0x52a962){if(_0x52a962[_0xe3c7('0x96')](_0x109e35)){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x102'),_0x109e35['toUpperCase']()),_0x52a962[_0x109e35]);}}this[_0xe3c7('0x41')](_0x52a962[_0xe3c7('0xef')],_0xe3c7('0xee'),'sesteknda','');if(_0x52a962[_0xe3c7('0x103')]){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x52a962[_0xe3c7('0x103')]));var _0x3dc362=this[_0xe3c7('0xe')]['streamFile'](_0x52a962[_0xe3c7('0x103')]);try{fs[_0xe3c7('0x104')](_0x52a962[_0xe3c7('0x103')]+_0xe3c7('0x105'));}catch(_0x417ec7){logger[_0xe3c7('0x50')](_0x417ec7);}return _0x3dc362;}else{return this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x106'),_0x52a962['speech']));}}return this['channel'][_0xe3c7('0x50')](_0x29202f,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x107')]=function(_0x271c6c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20END\x20(%s)\x20block',_0x271c6c['label']));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x107'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x108')]=function(_0x3d87ef){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x109'),_0x3d87ef[_0xe3c7('0xaa')]));var _0x2036fe='';if(_0x3d87ef[_0xe3c7('0x10a')]){if(!this[_0xe3c7('0x84')](_0x3d87ef[_0xe3c7('0x10a')])){return this['channel'][_0xe3c7('0x50')](_0x3d87ef,_0xe3c7('0x10b'));}else{var _0x2ef411=parseInt(_0x3d87ef[_0xe3c7('0x10a')],0xa);if(isNaN(_0x2ef411)){_0x2036fe=_0x3d87ef[_0xe3c7('0x10a')];}else{_0x2036fe=this['getTrunk'][_0xe3c7('0x6d')](this,_0x3d87ef[_0xe3c7('0x10a')]);if(!_0x2036fe){return this[_0xe3c7('0xe')]['error'](_0x3d87ef,_0xe3c7('0x10c'));}}}}else if(_0x3d87ef[_0xe3c7('0x10d')]){_0x2036fe=_0x3d87ef[_0xe3c7('0x10d')];}else{return this['channel']['error'](_0x3d87ef,_0xe3c7('0x10b'));}var _0x18549c=this[_0xe3c7('0xe')][_0xe3c7('0xad')]('DIAL',[util[_0xe3c7('0x29')](_0xe3c7('0x10e'),_0x2036fe,_0x3d87ef[_0xe3c7('0x47')]),_0x3d87ef[_0xe3c7('0x65')],_0x3d87ef[_0xe3c7('0xe6')],_0x3d87ef[_0xe3c7('0x70')]]);if(_0x18549c[_0xe3c7('0xa5')]===-0x1){return _0x18549c;}return this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xe7'),_0xe3c7('0xe4')));};AGIVertices[_0xe3c7('0x17')]['finally']=function(_0x407191){logger['info'](util['format'](_0xe3c7('0x10f'),_0x407191[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x110'));};AGIVertices['prototype']['getdigits']=function(_0x1b6a90){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x111'),_0x1b6a90[_0xe3c7('0xaa')]));if(_0x1b6a90['retry']===0x0){return this[_0xe3c7('0xa7')](_0x1b6a90);}_0x1b6a90[_0xe3c7('0x112')]-=0x1;if(!this['isConfigured'](_0x1b6a90[_0xe3c7('0x113')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x1b6a90,'no\x20file\x20audio\x20selected');}var _0x3e23ec=this[_0xe3c7('0x1e')]['sync'](this,_0x1b6a90['file_id']);if(!_0x3e23ec){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x1b6a90,'no\x20file\x20audio\x20found');}if(!this[_0xe3c7('0x84')](_0x1b6a90[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0xe3c7('0xd8'));}var _0x3333b7=this[_0xe3c7('0xe')][_0xe3c7('0x114')](_0x3e23ec,_0x1b6a90[_0xe3c7('0x115')],_0x1b6a90['maxdigit']);var _0x4832fa=_0x3333b7['result']?_0x3333b7[_0xe3c7('0xa5')][_0xe3c7('0x4b')]():'';logger[_0xe3c7('0x2e')](_0xe3c7('0x116'),JSON[_0xe3c7('0x72')](_0x3333b7));if(_0x3333b7[_0xe3c7('0xa5')]===-0x1){this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,_0x4832fa);return _0x3333b7;}else if(_0x3333b7[_0xe3c7('0xa4')]==='timeout'){_0x3333b7[_0xe3c7('0xa5')]=_0x4832fa[_0xe3c7('0x9b')]>=parseInt(_0x1b6a90[_0xe3c7('0x117')])?'x':'i';}else{_0x3333b7[_0xe3c7('0xa5')]=_0x4832fa[_0xe3c7('0x9b')]>=parseInt(_0x1b6a90[_0xe3c7('0x117')])&&_0x4832fa[_0xe3c7('0x9b')]<=parseInt(_0x1b6a90['maxdigit'])?'x':'i';}var _0x416b0e=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x1b6a90[_0xe3c7('0xd9')]);if(!_0x416b0e){return this[_0xe3c7('0xe')]['error'](_0x1b6a90,_0xe3c7('0xda'));}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x416b0e,_0x4832fa);if(this[_0xe3c7('0x84')](_0x1b6a90['hiddendigitsnum'])){var _0x5e8bcd=parseInt(_0x1b6a90[_0xe3c7('0x118')],0xa);var _0x1dd51e=rs['generate']({'charset':'*','length':_0x5e8bcd});var _0x460ab4=_0x4832fa[_0xe3c7('0x9b')];if(_0x460ab4>0x0){if(_0x460ab4>_0x5e8bcd){this[_0xe3c7('0x35')]['sync'](this,_0x1b6a90,_0x1b6a90['hiddendigitspos']===_0xe3c7('0x119')?_0x1dd51e+_0x4832fa[_0xe3c7('0x11a')](_0x5e8bcd):_0x4832fa['substr'](0x0,_0x460ab4-_0x5e8bcd)+_0x1dd51e);}else{this[_0xe3c7('0x35')]['sync'](this,_0x1b6a90,rs[_0xe3c7('0x11b')]({'charset':'*','length':_0x460ab4}));}}else{this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,'');}}else{this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x1b6a90,_0x4832fa);}return _0x3333b7;};AGIVertices['prototype'][_0xe3c7('0xd')]=function(_0x1719bb){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x1719bb[_0xe3c7('0xaa')]));return this['getdigits'](_0x1719bb);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x11c')]=function(_0x49f2c2){logger[_0xe3c7('0x2e')](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x49f2c2[_0xe3c7('0xaa')]));this['createSquareDetailsReport']['sync'](this,_0x49f2c2,_0x49f2c2[_0xe3c7('0x11d')]);return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0x11e'),_0x49f2c2[_0xe3c7('0x11d')]));};AGIVertices[_0xe3c7('0x17')]['awspolly']=function(_0x218341){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x218341['label']));if(!this['isConfigured'](_0x218341['aws_access_key_id'])||!this[_0xe3c7('0x84')](_0x218341['aws_secret_access_key'])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x11f'));}if(!this[_0xe3c7('0x84')](_0x218341[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xac'));}this[_0xe3c7('0xe')]['noop'](util['format'](_0xe3c7('0x120'),_0x218341[_0xe3c7('0x5a')]));var _0x1da1ef=this[_0xe3c7('0x86')][_0xe3c7('0x6d')](this,_0x218341);if(_0x1da1ef){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('aws\x20Polly\x20%s\x20file\x20created',_0x1da1ef));var _0x2d6fd3=this[_0xe3c7('0xe')]['streamFile'](_0x1da1ef);try{fs['unlink'](_0x1da1ef+_0xe3c7('0x105'));}catch(_0x5139e0){logger[_0xe3c7('0x50')](_0x5139e0);}return _0x2d6fd3;}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x218341,_0xe3c7('0x121'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x122')]=function(_0x5598fa){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x123'),_0x5598fa[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x87')])||!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x88')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x11f'));}if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x8d')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x124'));}if(!this[_0xe3c7('0x84')](_0x5598fa[_0xe3c7('0x5a')])){return this['channel'][_0xe3c7('0xab')]('no\x20text\x20configured');}this[_0xe3c7('0xe')][_0xe3c7('0xeb')]=!![];this[_0xe3c7('0x35')](_0x5598fa);this[_0xe3c7('0x41')](_0x5598fa[_0xe3c7('0x5a')],'in','','');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x125'),_0x5598fa[_0xe3c7('0x5a')]));var _0x35db2c=this[_0xe3c7('0x8c')][_0xe3c7('0x6d')](this,_0x5598fa);if(_0x35db2c){for(var _0x36e426 in _0x35db2c){if(_0x35db2c[_0xe3c7('0x96')](_0x36e426)&&_['isString'](_0x35db2c[_0x36e426])){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util['format']('AWS_LEX_%s',_0x36e426[_0xe3c7('0x67')]()),_0x35db2c[_0x36e426]);}}if(_['isNil'](_0x35db2c[_0xe3c7('0x76')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x126'));}else{this[_0xe3c7('0x41')](_0x35db2c['message'],_0xe3c7('0xee'),_0xe3c7('0x127'),'');return this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')]('Amazon\x20Lex\x20Result\x20%s',_0x35db2c[_0xe3c7('0x76')]));}}return this[_0xe3c7('0xe')]['error'](_0x5598fa,_0xe3c7('0x128'));};AGIVertices['prototype'][_0xe3c7('0x129')]=function(_0x5065d2){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x12a'),_0x5065d2[_0xe3c7('0xaa')],_0x5065d2['timeout']));if(!this[_0xe3c7('0x84')](_0x5065d2['key'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xea'));}var _0x5c63fa=_0xe3c7('0x12b');var _0x399579=util[_0xe3c7('0x29')]('%s/recordings/%s',FILES_PATH,rs[_0xe3c7('0x11b')](0x4));var _0x3a6b6f=util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x399579,_0x5c63fa);var _0x35fed3=!![];if(_0x5065d2['beep']==='NOBEEP'){_0x35fed3=![];}var _0x38e485=this[_0xe3c7('0xe')]['recordFile'](_0x399579,_0x5c63fa,_0x5065d2['intKey'],_0x5065d2[_0xe3c7('0x65')],undefined,_0x35fed3);if(_0x38e485[_0xe3c7('0xa5')]!==-0x1){this['channel'][_0xe3c7('0xab')](util['format']('google\x20%s\x20file\x20created',_0x3a6b6f));var _0x2f4d81=this[_0xe3c7('0x8e')][_0xe3c7('0x6d')](this,_0x5065d2,_0x3a6b6f);if(_0x2f4d81){for(var _0x5e97e in _0x2f4d81){if(_0x2f4d81[_0xe3c7('0x96')](_0x5e97e)){this[_0xe3c7('0xe')]['setVariable'](util[_0xe3c7('0x29')]('GOOGLE_ASR_%s',_0x5e97e[_0xe3c7('0x67')]()),_0x2f4d81[_0x5e97e]);}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x12c'),JSON[_0xe3c7('0x72')](_0x2f4d81)));}}return _0x38e485;};AGIVertices['prototype'][_0xe3c7('0x12d')]=function(_0x4a15ac){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x12e'),_0x4a15ac[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x4a15ac[_0xe3c7('0x91')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x12f'));}if(!this[_0xe3c7('0x84')](_0x4a15ac[_0xe3c7('0x92')])){return this['channel'][_0xe3c7('0xab')]('no\x20appsecret\x20configured');}var _0x4cd918=_0xe3c7('0x12b');var _0x524da0=util[_0xe3c7('0x29')](_0xe3c7('0x130'),FILES_PATH,rs[_0xe3c7('0x11b')](0x4));var _0x11882b=util[_0xe3c7('0x29')](_0xe3c7('0x9e'),_0x524da0,_0x4cd918);var _0x45acf6=!![];if(_0x4a15ac[_0xe3c7('0x131')]===_0xe3c7('0x132')){_0x45acf6=![];}var _0x385fb0=this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0x524da0,_0x4cd918,_0x4a15ac[_0xe3c7('0x134')],_0x4a15ac[_0xe3c7('0x65')],undefined,_0x45acf6);if(_0x385fb0['result']!==-0x1){this['channel']['noop'](util['format'](_0xe3c7('0x135'),_0x11882b));var _0x31f29b=this['tildeASR'][_0xe3c7('0x6d')](this,_0x4a15ac,_0x11882b);if(_0x31f29b){for(var _0x25e86a in _0x31f29b){if(_0x31f29b[_0xe3c7('0x96')](_0x25e86a)){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x136'),_0x25e86a[_0xe3c7('0x67')]()),_0x31f29b[_0x25e86a]);}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x137'),JSON[_0xe3c7('0x72')](_0x31f29b)));}}return _0x385fb0;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x138')]=function(_0x4d2b61){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x139'),_0x4d2b61[_0xe3c7('0xaa')]));return this['channel'][_0xe3c7('0x13a')](_0x4d2b61[_0xe3c7('0x3c')],_0x4d2b61[_0xe3c7('0x13b')],_0x4d2b61[_0xe3c7('0x3d')]);};AGIVertices['prototype'][_0xe3c7('0x13c')]=function(_0x5d087e){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x13d'),_0x5d087e[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x5d087e[_0xe3c7('0x13e')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x5d087e,_0xe3c7('0x13f'));}try{var _0x5de53b=eval(_0x5d087e[_0xe3c7('0x13e')])?_0xe3c7('0x140'):_0xe3c7('0x141');this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x142'),_0x5d087e[_0xe3c7('0x13e')],_0x5de53b));return{'code':0xc8,'result':_0x5de53b};}catch(_0xe08255){return{'code':0xc8,'result':_0xe3c7('0x141')};}};AGIVertices['prototype'][_0xe3c7('0x143')]=function(_0x5bf52f){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x144'),_0x5bf52f[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x5bf52f['interval_id'])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x5bf52f,_0xe3c7('0x145'));}var _0x397c5b=this[_0xe3c7('0x24')][_0xe3c7('0x6d')](this,_0x5bf52f[_0xe3c7('0x146')]);if(!_0x397c5b){return this['channel'][_0xe3c7('0x50')](_0x5bf52f,'no\x20intervals\x20found');}for(var _0x470336=0x0;_0x470336<_0x397c5b[_0xe3c7('0x9b')];_0x470336+=0x1){var _0x445a83=this[_0xe3c7('0xe')][_0xe3c7('0xa3')](util['format'](_0xe3c7('0x147'),_0x397c5b[_0x470336]));if(_0x445a83[_0xe3c7('0xa5')]===-0x1){return _0x445a83;}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0x445a83[_0xe3c7('0xa4')]));if(_0x445a83[_0xe3c7('0xa4')]===_0xe3c7('0x140')){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x140')));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')]('IFTIME\x20%s\x20%s',_0x397c5b[_0x470336],'true'));return{'code':0xc8,'result':_0xe3c7('0x140')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x141')));this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x148'),_0x397c5b[_0x470336],_0xe3c7('0x141')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0xe3c7('0x17')]['hangup']=function(_0x5958d7){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x149'),_0x5958d7[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')]['hangup']();};AGIVertices['prototype'][_0xe3c7('0x14a')]=function(_0x381476){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x14b'),_0x381476[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x381476[_0xe3c7('0x7a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xea'));}var _0x23841b='wav';var _0xe7f96b=util[_0xe3c7('0x29')](_0xe3c7('0x130'),FILES_PATH,rs['generate'](0x4));var _0x55aa60=util[_0xe3c7('0x29')]('%s.%s',_0xe7f96b,_0x23841b);var _0x4cac7f=!![];if(_0x381476[_0xe3c7('0x131')]===_0xe3c7('0x132')){_0x4cac7f=![];}var _0x3ac8fc=this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0xe7f96b,_0x23841b,_0x381476[_0xe3c7('0x134')],_0x381476[_0xe3c7('0x65')],undefined,_0x4cac7f);if(_0x3ac8fc[_0xe3c7('0xa5')]!==-0x1){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x14c'),_0x55aa60));var _0x2a675c=this[_0xe3c7('0x83')][_0xe3c7('0x6d')](this,_0x381476,_0x55aa60);if(_0x2a675c){for(var _0x2ceea in _0x2a675c){if(_0x2a675c[_0xe3c7('0x96')](_0x2ceea)){this[_0xe3c7('0xe')]['setVariable'](util[_0xe3c7('0x29')](_0xe3c7('0x14d'),_0x2ceea[_0xe3c7('0x67')]()),_0x2a675c[_0x2ceea]);}}return this['channel'][_0xe3c7('0xab')](util['format'](_0xe3c7('0x14e'),JSON[_0xe3c7('0x72')](_0x2a675c)));}}return _0x3ac8fc;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x14f')]=function(_0x2d3428){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x150'),_0x2d3428[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x2d3428[_0xe3c7('0x7a')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0xea'));}if(!this['isConfigured'](_0x2d3428['text'])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x151'),_0x2d3428[_0xe3c7('0x5a')]));var _0x42cd8b=this['ispeechTTS']['sync'](this,_0x2d3428);if(_0x42cd8b){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x14c'),_0x42cd8b));var _0x4c239e=this[_0xe3c7('0xe')]['streamFile'](_0x42cd8b,_0x2d3428[_0xe3c7('0x134')]);try{fs[_0xe3c7('0x104')](_0x42cd8b+'.wav');}catch(_0x45c86a){logger['error'](_0x45c86a);}return _0x4c239e;}return this[_0xe3c7('0xe')]['error'](_0x2d3428,_0xe3c7('0x152'));};AGIVertices['prototype'][_0xe3c7('0x153')]=function(_0x5b57d8){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x154'),_0x5b57d8[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x5b57d8[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')]['error'](_0x5b57d8,'no\x20find\x20by\x20configured');}logger[_0xe3c7('0x2e')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x5b57d8[_0xe3c7('0x155')]));var _0x18adfd=this[_0xe3c7('0x53')][_0xe3c7('0x6d')](this,_0x5b57d8[_0xe3c7('0x155')]);if(_0x18adfd){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this['channel'][_0xe3c7('0x39')],_0x5b57d8['findBy']));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x158'),this[_0xe3c7('0xe')]['callerid'],_0x5b57d8[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x15a')]=function(_0x526e4f){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x526e4f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x526e4f[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x526e4f,_0xe3c7('0x15b'));}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this['channel'][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));var _0x46ceb7=this[_0xe3c7('0x52')]['sync'](this,_0x526e4f[_0xe3c7('0x155')]);if(_0x46ceb7){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this['channel'][_0xe3c7('0x39')],_0x526e4f[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x15d')]=function(_0x20e30c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x20e30c[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x20e30c[_0xe3c7('0x15e')])){return this[_0xe3c7('0xe')]['error'](_0x20e30c,_0xe3c7('0x15f'));}this['channel']['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x160'),_0x20e30c[_0xe3c7('0x15e')]));var _0x5a9bf8=eval(_0x20e30c['operation']);if(!this['isConfigured'](_0x20e30c[_0xe3c7('0xd9')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xd8'));}var _0x1de852=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x20e30c[_0xe3c7('0xd9')]);if(!_0x1de852){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x20e30c,_0xe3c7('0xda'));}if(_['isArray'](_0x5a9bf8)){var _0x428fba=this;_0x5a9bf8['forEach'](function(_0x159e09,_0x3a14f2){_0x428fba[_0xe3c7('0xe')][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x161'),_0x1de852,_0x3a14f2),_0x159e09);});return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('variable\x20%s[key]\x20set',_0x1de852));}else{return this['channel'][_0xe3c7('0x9f')](_0x1de852,_0x5a9bf8);}};AGIVertices[_0xe3c7('0x17')]['menu']=function(_0x44c399){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x44c399['label']));if(_0x44c399['retry']===0x0){return this[_0xe3c7('0xa7')](_0x44c399);}_0x44c399[_0xe3c7('0x112')]-=0x1;if(!this[_0xe3c7('0x84')](_0x44c399['file_id'])){return this[_0xe3c7('0xe')]['error'](_0x44c399,_0xe3c7('0x162'));}var _0x7ce6f4=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x44c399[_0xe3c7('0x113')]);if(!_0x7ce6f4){return this['channel'][_0xe3c7('0x50')](_0x44c399,_0xe3c7('0x163'));}var _0x21db10=this[_0xe3c7('0xe')]['getData'](_0x7ce6f4,_0x44c399[_0xe3c7('0x115')],_0x44c399[_0xe3c7('0x164')]);var _0x479cd7=_0x21db10[_0xe3c7('0xa5')];if(_0x21db10[_0xe3c7('0xa5')]===-0x1){this['createSquareDetailsReport'][_0xe3c7('0x6d')](this,_0x44c399,'-1');return _0x21db10;}else if(_0x21db10[_0xe3c7('0xa4')]==='timeout'){_0x21db10[_0xe3c7('0xa5')]=_0x21db10[_0xe3c7('0xa5')][_0xe3c7('0x9b')]>0x0?_0x21db10[_0xe3c7('0xa5')]:'t';}else if(_[_0xe3c7('0x44')](_0x21db10[_0xe3c7('0xa5')])){_0x21db10['result']='#';_0x479cd7='#';}if(!this['isConfigured'](_0x44c399[_0xe3c7('0xd9')])){this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xd8'));}else{var _0x19661f=this[_0xe3c7('0xa3')]['sync'](this,_0x44c399[_0xe3c7('0xd9')]);if(!_0x19661f){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x44c399,_0xe3c7('0xda'));}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x19661f,_0x479cd7);}this['createSquareDetailsReport']['sync'](this,_0x44c399,_0x479cd7);return _0x21db10;};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0xab')]=function(_0x301496){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x301496[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0x301496[_0xe3c7('0x165')]||_0x301496[_0xe3c7('0xaa')]);};AGIVertices['prototype'][_0xe3c7('0x166')]=function(_0x57dbf5){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x57dbf5[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x57dbf5['findBy'])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x57dbf5,_0xe3c7('0x15b'));}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5['findBy']));var _0xe3a8f3=this['getPause'][_0xe3c7('0x6d')](this,_0x57dbf5[_0xe3c7('0x167')]);var _0x3c43a7=this[_0xe3c7('0x4e')][_0xe3c7('0x6d')](this,_0x57dbf5[_0xe3c7('0x155')],_0xe3a8f3);if(_0x3c43a7){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this['channel']['callerid'],_0x57dbf5['findBy']));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x57dbf5[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices['prototype']['playback']=function(_0x45fee3){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x168'),_0x45fee3[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x45fee3[_0xe3c7('0x113')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x45fee3,_0xe3c7('0x162'));}var _0x69ab7a=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x45fee3[_0xe3c7('0x113')]);if(!_0x69ab7a){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x45fee3,_0xe3c7('0x163'));}var _0x49dc1c=this[_0xe3c7('0xe')]['exec'](_0xe3c7('0x169'),[_0x69ab7a,_0x45fee3['opts']]);if(_0x49dc1c[_0xe3c7('0xa5')]===-0x1){return _0x49dc1c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),'PLAYBACK',_0x69ab7a));};AGIVertices['prototype'][_0xe3c7('0x16b')]=function(_0x574412){logger['info'](util[_0xe3c7('0x29')](_0xe3c7('0x16c'),_0x574412[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x574412[_0xe3c7('0x16d')])){return this['channel'][_0xe3c7('0x50')](_0x574412,_0xe3c7('0x16e'));}var _0x177dc6='';var _0x30104b=parseInt(_0x574412[_0xe3c7('0x16d')],0xa);if(isNaN(_0x30104b)){_0x177dc6=_0x574412[_0xe3c7('0x16d')];}else{_0x177dc6=this[_0xe3c7('0x14')][_0xe3c7('0x6d')](this,_0x574412[_0xe3c7('0x16d')]);if(!_0x177dc6){return this['channel']['error'](_0x574412,'no\x20queue\x20found');}}var _0x2dd022='';if(this[_0xe3c7('0x84')](_0x574412[_0xe3c7('0x113')])){var _0x311cd7=this[_0xe3c7('0x1e')][_0xe3c7('0x6d')](this,_0x574412[_0xe3c7('0x113')]);if(_0x311cd7){_0x2dd022=_0x311cd7;}}this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x574412,_0x177dc6);if(_0x574412[_0xe3c7('0xe6')][_0xe3c7('0x16f')]('x')<0x0){_0x574412[_0xe3c7('0xe6')]+='x';}if(_0x574412['opts'][_0xe3c7('0x16f')]('X')<0x0){_0x574412[_0xe3c7('0xe6')]+='X';}this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0xe3c7('0x170'),_0x177dc6?_0x177dc6['toLowerCase']():'');var _0x489c36=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0x171'),[_0x177dc6,_0x574412[_0xe3c7('0xe6')],_0x574412['url'],_0x2dd022,_0x574412[_0xe3c7('0x65')],_0x574412[_0xe3c7('0xb9')],_0x574412['macro'],_0x574412[_0xe3c7('0x172')],'',_0x574412['position']]);if(_0x489c36[_0xe3c7('0xa5')]===-0x1){return _0x489c36;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),_0xe3c7('0x171'),_0x177dc6));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x173')]=function(_0x5be003){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x174'),_0x5be003['label']));var _0x1fd54b=_0x5be003['recordingFormat']||_0xe3c7('0x12b');var _0x362bc3=util['format'](_0xe3c7('0x175'),this['channel'][_0xe3c7('0x36')],rs[_0xe3c7('0x11b')](0x5));var _0x68110c=util[_0xe3c7('0x29')](_0xe3c7('0x176'),FILES_PATH,_0x362bc3,_0x1fd54b);var _0x3f2758=util['format']('%s/recordings/%s',FILES_PATH,_0x362bc3);this[_0xe3c7('0x3a')][_0xe3c7('0x6d')](this,_0x5be003,_0x362bc3,_0x68110c);this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0xe3c7('0x177'),_0x362bc3);logger[_0xe3c7('0x2e')](_0xe3c7('0x178'),_0x3f2758,_0x1fd54b,_0x5be003[_0xe3c7('0x179')],_0x5be003['timeout']);return this[_0xe3c7('0xe')][_0xe3c7('0x133')](_0x3f2758,_0x1fd54b,_0x5be003[_0xe3c7('0x179')],_0x5be003['timeout'],undefined,!![]);};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x17a')]=function(_0x212929){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x17b'),_0x212929[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x212929[_0xe3c7('0x70')])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x17c'));}var _0x2a2342=this[_0xe3c7('0x63')]['sync'](this,_0x212929);logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x17d'),util[_0xe3c7('0x17e')](_0x2a2342,{'showHidden':![],'depth':null})));if(!this[_0xe3c7('0x84')](_0x212929['variable_id'])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x17f'));}var _0x5413c5=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x212929[_0xe3c7('0xd9')]);if(!_0x5413c5){return this[_0xe3c7('0xe')]['error'](_0x212929,_0xe3c7('0xda'));}this['channel'][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x180'),_0x5413c5),_0x2a2342[_0xe3c7('0x74')]?_0x2a2342[_0xe3c7('0x74')]:_0xe3c7('0x181'));this['channel'][_0xe3c7('0x9f')](util[_0xe3c7('0x29')](_0xe3c7('0x182'),_0x5413c5),_0x2a2342[_0xe3c7('0x75')]?_0x2a2342[_0xe3c7('0x75')]:'OK');if(_0x2a2342[_0xe3c7('0x71')]){try{this[_0xe3c7('0x9c')](_0x2a2342[_0xe3c7('0x71')],_0x5413c5);}catch(_0x30f8cf){logger[_0xe3c7('0x50')](util[_0xe3c7('0x29')](_0xe3c7('0x183'),_0x5413c5));}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0xde'),_0x5413c5));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x184')]=function(_0x9fb132){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x9fb132[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0x185')](_0x9fb132[_0xe3c7('0x186')][_0xe3c7('0x56')](/\s+/g,''),_0x9fb132[_0xe3c7('0x179')]);};AGIVertices['prototype']['saynumber']=function(_0x4efd6c){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x187'),_0x4efd6c[_0xe3c7('0xaa')]));return this['channel'][_0xe3c7('0x188')](_0x4efd6c['number']['replace'](/\s+/g,''),_0x4efd6c[_0xe3c7('0x179')]);};AGIVertices[_0xe3c7('0x17')]['sayphonetic']=function(_0x46cd19){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x189'),_0x46cd19['label']));return this[_0xe3c7('0xe')][_0xe3c7('0x18a')](_0x46cd19[_0xe3c7('0x5a')],_0x46cd19['escape_digits']);};AGIVertices[_0xe3c7('0x17')]['sendMail']=function(_0x4f5d4d){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x18b'),_0x4f5d4d[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x4f5d4d[_0xe3c7('0x18c')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x18d'));}var _0x3b3dc9=this[_0xe3c7('0x21')][_0xe3c7('0x6d')](this,_0x4f5d4d[_0xe3c7('0x18c')]);if(!_0x3b3dc9||!_0x3b3dc9[_0xe3c7('0x18e')]){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x4f5d4d,'no\x20mail\x20account\x20found');}var _0x161272={'from':util[_0xe3c7('0x29')]('\x22%s\x22\x20<%s>',_0x3b3dc9[_0xe3c7('0x12')],_0x3b3dc9['email']||_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x18f')]),'to':_0x4f5d4d['to']||'','cc':_0x4f5d4d['cc']||'','bcc':_0x4f5d4d[_0xe3c7('0x190')]||'','subject':_0x4f5d4d[_0xe3c7('0x191')],'html':_0x4f5d4d[_0xe3c7('0x5a')],'text':_0x4f5d4d['text']};var _0x229c2e={'tls':{'rejectUnauthorized':![]}};if(_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x192')]){_0x229c2e[_0xe3c7('0x192')]=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x192')];}else{_0x229c2e['host']=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x193')];_0x229c2e[_0xe3c7('0x194')]=_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x194')];_0x229c2e[_0xe3c7('0x195')]=_0x3b3dc9[_0xe3c7('0x18e')]['secure'];}if(_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x196')]){_0x229c2e[_0xe3c7('0x197')]={'user':_0x3b3dc9[_0xe3c7('0x18e')]['user'],'pass':_0x3b3dc9[_0xe3c7('0x18e')][_0xe3c7('0x198')]};}if(this[_0xe3c7('0x84')](_0x4f5d4d[_0xe3c7('0x199')])){}logger[_0xe3c7('0xe0')](_0xe3c7('0x19a'),JSON[_0xe3c7('0x72')](_0x161272));this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x4f5d4d,_0x4f5d4d[_0xe3c7('0x18c')]);this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x3b3dc9[_0xe3c7('0x12')]));this['sendMailMessage'][_0xe3c7('0x6d')](this,_0x229c2e,_0x161272);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x19b'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x19c')]=function(_0x153753){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x19d'),_0x153753[_0xe3c7('0xaa')]));return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x19e'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x19f')]=function(_0x18f931){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1a0'),_0x18f931[_0xe3c7('0xaa')]));if(!this['isConfigured'](_0x18f931[_0xe3c7('0x1a1')])){return this[_0xe3c7('0xe')]['noop'](_0xe3c7('0x1a2'));}var _0xad33d7=this['getSmsAccount'][_0xe3c7('0x6d')](this,_0x18f931['sms_account_id']);if(!_0xad33d7){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x18f931,_0xe3c7('0x1a3'));}var _0x2c44aa={'body':_0x18f931['sms_text'],'phone':_0x18f931['to']||'','SmsAccountId':_0xad33d7['id']};logger[_0xe3c7('0xe0')](_0xe3c7('0x1a4'),JSON[_0xe3c7('0x72')](_0x2c44aa));this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x18f931,_0x18f931['sms_account_id']);this['channel'][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1a5'),_0xad33d7[_0xe3c7('0x12')]));this[_0xe3c7('0x34')]['sync'](this,_0x2c44aa);return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0xe3c7('0x1a6')]=function(_0x41b511){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x41b511['label']));if(!this[_0xe3c7('0x84')](_0x41b511[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x41b511,'no\x20variable\x20selected');}var _0x46e284=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x41b511['variable_id']);if(!_0x46e284){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x41b511,_0xe3c7('0xda'));}return this['channel'][_0xe3c7('0x9f')](_0x46e284,_0x41b511[_0xe3c7('0x1a7')]);};AGIVertices['prototype'][_0xe3c7('0x1a8')]=function(_0x475d19){logger['info'](util[_0xe3c7('0x29')]('Enter\x20in\x20START\x20(%s)\x20block',_0x475d19[_0xe3c7('0xaa')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')]('START\x20CALLY\x20SQUARE');if(_0x475d19[_0xe3c7('0xbb')]===_0xe3c7('0x1a9')){this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0x1aa'));return this['channel'][_0xe3c7('0xbb')]();}return this['channel'][_0xe3c7('0xab')](_0xe3c7('0x1ab'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1ac')]=function(_0x130152){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1ad'),_0x130152[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x130152[_0xe3c7('0x1ae')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x130152,'no\x20subproject\x20selected');}var _0x5b5a0a=this[_0xe3c7('0x18')][_0xe3c7('0x6d')](this,_0x130152['project_id']);if(!this['isConfigured'](_0x5b5a0a)){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x130152,util[_0xe3c7('0x29')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x130152[_0xe3c7('0x1ae')]));}if(_0x5b5a0a===this[_0xe3c7('0xe')][_0xe3c7('0x38')]){return this['channel'][_0xe3c7('0x50')](_0x130152,_0xe3c7('0x1af'));}this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x130152,_0x5b5a0a);var _0x5c896d=this['channel'][_0xe3c7('0xad')]('AGI',util[_0xe3c7('0x29')](_0xe3c7('0x1b0'),config[_0xe3c7('0xb9')][_0xe3c7('0x193')]||_0xe3c7('0x1b1'),_0x5b5a0a,this['channel'][_0xe3c7('0x38')]));if(_0x5c896d['result']===-0x1){return _0x5c896d;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Executed\x20command\x20%s\x20%s','AGI',_0x5b5a0a));};AGIVertices['prototype']['system']=function(_0x49fd24){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1b2'),_0x49fd24['label']));var _0x49ef1f=this[_0xe3c7('0x1b3')]['sync'](this,_0x49fd24[_0xe3c7('0x1b4')]);this[_0xe3c7('0x35')][_0xe3c7('0x6d')](this,_0x49fd24,_0x49fd24[_0xe3c7('0x1b4')]);if(this[_0xe3c7('0x84')](_0x49fd24[_0xe3c7('0xd9')])){var _0x58867e=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x49fd24[_0xe3c7('0xd9')]);if(_0x58867e){this[_0xe3c7('0xe')][_0xe3c7('0x9f')](_0x58867e,_0x49ef1f);return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util['format'](_0xe3c7('0x1b5'),_0x49fd24['command'],_0x58867e));}}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x49fd24[_0xe3c7('0x1b4')]));};AGIVertices[_0xe3c7('0x17')]['google_cloud_tts']=function(_0x5af255){logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x1b6'),_0x5af255['label']));_0x5af255[_0xe3c7('0x5a')]=_0x5af255[_0xe3c7('0x5a')][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe3c7('0x84')](_0x5af255[_0xe3c7('0x58')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')]('no\x20apiKey\x20configured');}if(!this[_0xe3c7('0x84')](_0x5af255['text'])){return this['channel'][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x5af255['text']));var _0x131861=this['googleCloudTTS']['sync'](this,_0x5af255);if(_0x131861){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1b7'),_0x131861));var _0x214cb0=this[_0xe3c7('0xe')][_0xe3c7('0x1b8')](_0x131861);try{fs['unlink'](_0x131861+_0xe3c7('0x105'));}catch(_0x4710d3){logger[_0xe3c7('0x50')](_0x4710d3);}return _0x214cb0;}return this[_0xe3c7('0xe')]['error'](_0x5af255,_0xe3c7('0x1b9'));};AGIVertices[_0xe3c7('0x17')]['tts']=function(_0x32f61c){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1ba'),_0x32f61c[_0xe3c7('0xaa')]));_0x32f61c[_0xe3c7('0x5a')]=_0x32f61c['text'][_0xe3c7('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe3c7('0x84')](_0x32f61c[_0xe3c7('0x5a')])){return this[_0xe3c7('0xe')][_0xe3c7('0xab')](_0xe3c7('0xac'));}this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1bb'),_0x32f61c[_0xe3c7('0x5a')]));var _0x1e3555=this[_0xe3c7('0x61')]['sync'](this,_0x32f61c);if(_0x1e3555){this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x1bc'),_0x1e3555));var _0x84b26a=this[_0xe3c7('0xe')][_0xe3c7('0x1b8')](_0x1e3555);try{fs[_0xe3c7('0x104')](_0x1e3555+_0xe3c7('0x105'));}catch(_0x14ad94){logger[_0xe3c7('0x50')](_0x14ad94);}return _0x84b26a;}return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x32f61c,_0xe3c7('0x1bd'));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1be')]=function(_0x33765f){logger['info'](util['format'](_0xe3c7('0x1bf'),_0x33765f[_0xe3c7('0xaa')]));if(!this[_0xe3c7('0x84')](_0x33765f[_0xe3c7('0x155')])){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x33765f,'no\x20find\x20by\x20configured');}logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x15c'),this[_0xe3c7('0xe')]['callerid'],_0x33765f['findBy']));var _0x14565d=this[_0xe3c7('0x51')][_0xe3c7('0x6d')](this,_0x33765f[_0xe3c7('0x155')]);if(_0x14565d){logger['info'](util['format'](_0xe3c7('0x156'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x156'),this[_0xe3c7('0xe')]['callerid'],_0x33765f['findBy']));return{'code':0xc8,'result':_0xe3c7('0x157')};}else{logger[_0xe3c7('0x2e')](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));this[_0xe3c7('0xe')]['noop'](util[_0xe3c7('0x29')](_0xe3c7('0x158'),this[_0xe3c7('0xe')][_0xe3c7('0x39')],_0x33765f[_0xe3c7('0x155')]));return{'code':0xc8,'result':_0xe3c7('0x159')};}};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1c0')]=function(_0xee2a25){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1c1'),_0xee2a25['label']));var _0xcfe87c=this[_0xe3c7('0xe')][_0xe3c7('0xad')](_0xe3c7('0x1c2'),[_0xee2a25[_0xe3c7('0x1c3')],_0xee2a25[_0xe3c7('0x78')]]);if(_0xcfe87c[_0xe3c7('0xa5')]===-0x1){return _0xcfe87c;}return this[_0xe3c7('0xe')][_0xe3c7('0xab')](util[_0xe3c7('0x29')](_0xe3c7('0x16a'),'VOICEMAIL',_0xee2a25['mailbox']));};AGIVertices[_0xe3c7('0x17')][_0xe3c7('0x1c4')]=function(_0x4b4edc){logger[_0xe3c7('0x2e')](util['format'](_0xe3c7('0x1c5'),_0x4b4edc['label']));if(!this[_0xe3c7('0x84')](_0x4b4edc[_0xe3c7('0xd9')])){return this[_0xe3c7('0xe')]['error'](_0x4b4edc,_0xe3c7('0x1c6'));}var _0x3a3b04=this[_0xe3c7('0xa3')][_0xe3c7('0x6d')](this,_0x4b4edc[_0xe3c7('0xd9')]);if(!_0x3a3b04){return this[_0xe3c7('0xe')][_0xe3c7('0x50')](_0x4b4edc,'no\x20variable\x20found');}var _0x180f93=this['channel']['getVariable'](_0x3a3b04);return{'code':0xc8,'result':_0x180f93[_0xe3c7('0xa4')]?_0x180f93[_0xe3c7('0xa4')]:'-'};};String['prototype'][_0xe3c7('0xa2')]=function(_0x5d6506,_0x362297){return this['split'](_0x5d6506)[_0xe3c7('0x1c7')](_0x362297);};module[_0xe3c7('0x1c8')]=AGIVertices;
\ No newline at end of file
+var _0xde47=['toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','number','includes','POST','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','length','saveRestApiResult','isArray','setVariable','%s.%s','split','replaceAll','getVariable','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','label','grammar','no\x20grammar\x20configured','getAndSetVariable','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','MRCPRecog','RECOG_CONFIDENCE()','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','SIP/%s','opts','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','ndassistant_url','Trying\x20SestekNDA:\x20%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','audiofile','unlink','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','awsPolly','.wav','awslex','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','%s/recordings/%s','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','Enter\x20in\x20LOGOUT\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','success','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','Enter\x20in\x20MENU\x20(%s)\x20block','digit','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','authentication','pass','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','START\x20CALLY\x20SQUARE','yes','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','util','lodash','shelljs','randomstring','moment','mustache','request-promise','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getsecretdigits','rpc','prototype','then','name','getVoiceQueue','getVoiceQueueById','catch','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','agicommand','createSquareRecording','callerid','calleridname','extension','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt'];(function(_0x4d9e69,_0x40c6cc){var _0x3ad920=function(_0x50fb85){while(--_0x50fb85){_0x4d9e69['push'](_0x4d9e69['shift']());}};_0x3ad920(++_0x40c6cc);}(_0xde47,0x185));var _0x7de4=function(_0x30b057,_0x1d1505){_0x30b057=_0x30b057-0x0;var _0x331671=_0xde47[_0x30b057];return _0x331671;};'use strict';var fs=require('fs');var path=require(_0x7de4('0x0'));var util=require(_0x7de4('0x1'));var _=require(_0x7de4('0x2'));var sh=require(_0x7de4('0x3'));var odbc=require('odbc')();var rs=require(_0x7de4('0x4'));var moment=require(_0x7de4('0x5'));var Mustache=require(_0x7de4('0x6'));var rp=require(_0x7de4('0x7'));var logger=require(_0x7de4('0x8'))('agi');var config=require(_0x7de4('0x9'));var scripts=require(_0x7de4('0xa'));var FILES_PATH=_0x7de4('0xb');var recursiveMapAttributes=[_0x7de4('0xc'),_0x7de4('0xd')];var verticesWithRetry=[_0x7de4('0xe'),'getdigits',_0x7de4('0xf')];var AGIVertices=function(_0x3387fa,_0xe6261f,_0x11166d){this['channel']=_0x3387fa;this[_0x7de4('0x10')]=_0xe6261f;this['mailRpc']=_0x11166d;};AGIVertices[_0x7de4('0x11')]['getVariable']=function(_0x3cf280,_0x3642fd){this[_0x7de4('0x10')]['getVariableById'](_0x3cf280)[_0x7de4('0x12')](function(_0x421ed5){_0x3642fd(null,_0x421ed5?_0x421ed5[_0x7de4('0x13')]:![]);})['catch'](function(_0x1c789a){_0x3642fd(_0x1c789a);});};AGIVertices['prototype'][_0x7de4('0x14')]=function(_0x307830,_0x227993){this['rpc'][_0x7de4('0x15')](_0x307830)[_0x7de4('0x12')](function(_0x266970){_0x227993(null,_0x266970?_0x266970[_0x7de4('0x13')]:![]);})[_0x7de4('0x16')](function(_0xfeb0e7){_0x227993(_0xfeb0e7);});};AGIVertices[_0x7de4('0x11')]['getSquareProject']=function(_0x1b680b,_0xc627a1){this['rpc']['getSquareProjectById'](_0x1b680b)[_0x7de4('0x12')](function(_0x56281d){_0xc627a1(null,_0x56281d?_0x56281d[_0x7de4('0x13')]:![]);})['catch'](function(_0x251146){_0xc627a1(_0x251146);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x17')]=function(_0x310dd1,_0x54fd51){this[_0x7de4('0x10')][_0x7de4('0x18')](_0x310dd1)['then'](function(_0x1da386){_0x54fd51(null,_0x1da386?_0x1da386[_0x7de4('0x19')]:![]);})[_0x7de4('0x16')](function(_0x185c64){_0x54fd51(_0x185c64);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1a')]=function(_0x4db3d6,_0x4bac0a){this[_0x7de4('0x10')][_0x7de4('0x1b')](_0x4db3d6)[_0x7de4('0x12')](function(_0x5768a5){_0x4bac0a(null,_0x5768a5?_0x5768a5[_0x7de4('0x13')]:![]);})[_0x7de4('0x16')](function(_0x507777){_0x4bac0a(_0x507777);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1c')]=function(_0x1af594,_0x1e96e8){this[_0x7de4('0x10')][_0x7de4('0x1d')](_0x1af594)[_0x7de4('0x12')](function(_0x1af0fe){_0x1e96e8(null,_0x1af0fe?_0x1af0fe[_0x7de4('0x13')]:![]);})[_0x7de4('0x16')](function(_0x50ad92){_0x1e96e8(_0x50ad92);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1e')]=function(_0x12b4cb,_0x27b7f6){var _0x2d1c1f=this;this['rpc'][_0x7de4('0x1f')](_0x12b4cb)[_0x7de4('0x12')](function(_0x55dbbd){_0x27b7f6(null,_0x55dbbd?_0x2d1c1f[_0x7de4('0x20')](_0x55dbbd[_0x7de4('0x21')]):![]);})[_0x7de4('0x16')](function(_0x211895){_0x27b7f6(_0x211895);});};AGIVertices['prototype'][_0x7de4('0x22')]=function(_0x30e2c9,_0x2b3384){this[_0x7de4('0x10')][_0x7de4('0x23')](_0x30e2c9)['then'](function(_0x23ac77){_0x2b3384(null,_0x23ac77?_0x23ac77:![]);})[_0x7de4('0x16')](function(_0x234085){_0x2b3384(_0x234085);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x24')]=function(_0x32dcce,_0x1d3f36,_0x53bf59){this['mailRpc'][_0x7de4('0x24')](_0x32dcce,_0x1d3f36)[_0x7de4('0x12')](function(){_0x53bf59(null);})['catch'](function(_0x4b9c21){_0x53bf59(_0x4b9c21);});};AGIVertices['prototype'][_0x7de4('0x25')]=function(_0x31af42,_0x46953b){this[_0x7de4('0x10')][_0x7de4('0x26')](_0x31af42)['then'](function(_0x257d59){if(_0x257d59){if(_0x257d59[_0x7de4('0x27')]){_0x46953b(null,[_0x257d59[_0x7de4('0x28')]]);}else{_0x46953b(null,_['map'](_0x257d59['Intervals'],_0x7de4('0x28')));}}else{_0x46953b(null,![]);}})[_0x7de4('0x16')](function(_0x5e968b){_0x46953b(_0x5e968b);});};AGIVertices[_0x7de4('0x11')]['getSoundPath']=function(_0xacac46){return util[_0x7de4('0x29')](_0x7de4('0x2a'),FILES_PATH,_0xacac46);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x2b')]=function(_0x55d15d,_0x2a181e,_0x716cb9){odbc[_0x7de4('0x2c')](_0x55d15d,function(_0x350980){if(_0x350980){logger[_0x7de4('0x2d')](_0x7de4('0x2e'),_0x350980);_0x716cb9(_0x350980);}else{logger[_0x7de4('0x2f')](_0x7de4('0x30'));odbc['query'](_0x2a181e,function(_0x5dc901,_0x2022f8){if(_0x5dc901){logger[_0x7de4('0x2f')](_0x7de4('0x31'),_0x2a181e);_0x716cb9(_0x5dc901);}else{logger[_0x7de4('0x2f')]('Query\x20executed\x20correctly\x20%s',_0x2a181e);odbc['close'](function(_0x57420d){if(_0x57420d){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x57420d);}_0x716cb9(null,_0x2022f8);});}});}});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x32')]=function(_0x273e5f,_0x482af1){this[_0x7de4('0x10')][_0x7de4('0x33')](_0x273e5f)[_0x7de4('0x12')](function(_0x163cb0){_0x482af1(null,_0x163cb0?_0x163cb0:![]);})[_0x7de4('0x16')](function(_0x5c7dc6){_0x482af1(_0x5c7dc6);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x34')]=function(_0x242ded,_0x4bbfd1){this[_0x7de4('0x10')][_0x7de4('0x34')](_0x242ded)[_0x7de4('0x12')](function(_0x254fd7){_0x4bbfd1(null,_0x254fd7);})[_0x7de4('0x16')](function(_0x1e7643){_0x4bbfd1(_0x1e7643);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x35')]=function(_0x5b78e8,_0x2d965c,_0xd40817){this[_0x7de4('0x10')][_0x7de4('0x35')]({'uniqueid':this[_0x7de4('0x36')][_0x7de4('0x37')],'node':_0x5b78e8['label'],'application':_0x5b78e8[_0x7de4('0x38')],'data':_0x2d965c||null,'project_name':this[_0x7de4('0x36')]['arg_1'],'callerid':this[_0x7de4('0x36')]['callerid']})[_0x7de4('0x12')](function(_0x155411){if(_0xd40817){_0xd40817(null,_0x155411);}})[_0x7de4('0x16')](function(_0x2d514a){if(_0xd40817){_0xd40817(_0x2d514a);}});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x39')]=function(_0x53a1e4,_0x2bd2b4,_0x15b508,_0x1af11b){this['rpc'][_0x7de4('0x39')]({'uniqueid':this[_0x7de4('0x36')]['uniqueid'],'callerid':this[_0x7de4('0x36')][_0x7de4('0x3a')],'calleridname':this[_0x7de4('0x36')][_0x7de4('0x3b')],'context':this[_0x7de4('0x36')]['context'],'extension':this[_0x7de4('0x36')][_0x7de4('0x3c')],'priority':this[_0x7de4('0x36')]['priority'],'accountcode':this[_0x7de4('0x36')]['accountcode'],'dnid':this[_0x7de4('0x36')]['dnid'],'projectName':this[_0x7de4('0x36')][_0x7de4('0x3d')],'saveName':_0x2bd2b4,'filename':_0x53a1e4[_0x7de4('0x3e')]||_0x2bd2b4,'savePath':_0x15b508})[_0x7de4('0x12')](function(_0x176ac5){_0x1af11b(null,_0x176ac5);})[_0x7de4('0x16')](function(_0x27934d){_0x1af11b(_0x27934d);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x3f')]=function(_0x2c8864,_0x508cea,_0x4b8f2b,_0x18384c,_0x48a863){this[_0x7de4('0x10')]['createSquareMessage']({'uniqueid':this[_0x7de4('0x36')]['uniqueid'],'body':_0x2c8864,'direction':_0x508cea,'providerName':_0x4b8f2b,'providerResponse':_0x18384c})[_0x7de4('0x12')](function(_0x5bff7a){if(_0x48a863){_0x48a863(null,_0x5bff7a);}})['catch'](function(_0x3d0450){if(_0x48a863){_0x48a863(_0x3d0450);}});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x40')]=function(_0x410a9b,_0x11f679){this[_0x7de4('0x10')][_0x7de4('0x40')]({'firstName':_[_0x7de4('0x41')](_0x410a9b[_0x7de4('0x13')])||_[_0x7de4('0x42')](_0x410a9b['name'])?_0x7de4('0x43')+Math['random']():_0x410a9b['name'],'lastName':_['isEmpty'](_0x410a9b[_0x7de4('0x44')])||_[_0x7de4('0x42')](_0x410a9b[_0x7de4('0x44')])?null:_0x410a9b[_0x7de4('0x44')],'phone':_0x410a9b[_0x7de4('0x45')],'ListId':_0x410a9b[_0x7de4('0x46')],'scheduledat':_0x410a9b[_0x7de4('0x47')],'callbackUniqueid':this[_0x7de4('0x36')]['uniqueid'],'tags':'callback','description':'Callback\x20scheduled\x20at\x20'+_0x410a9b[_0x7de4('0x47')][_0x7de4('0x48')](),'priority':_0x410a9b[_0x7de4('0x49')]})['then'](function(_0x498013){_0x11f679(null,_0x498013);})[_0x7de4('0x16')](function(_0x1ed1db){_0x11f679(_0x1ed1db);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x4a')]=function(_0x1ab052,_0x11e04b){this[_0x7de4('0x10')][_0x7de4('0x4b')](_0x1ab052)[_0x7de4('0x12')](function(_0x5d58d7){_0x11e04b(null,_0x5d58d7?_0x5d58d7[_0x7de4('0x13')]:![]);})[_0x7de4('0x16')](function(_0x2df26a){_0x11e04b(_0x2df26a);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x4c')]=function(_0xd6c462,_0xe8ce08,_0x45a94f){var _0x1983ec={'role':'agent'};_0x1983ec[_0xd6c462]=this[_0x7de4('0x36')]['callerid'];this[_0x7de4('0x10')][_0x7de4('0x4c')](_0x1983ec,_0xe8ce08,this[_0x7de4('0x36')]['uniqueid'])[_0x7de4('0x12')](function(_0x14ce8d){_0x45a94f(null,_['isNil'](_0x14ce8d)?![]:!![]);})[_0x7de4('0x16')](function(_0x55ec87){logger[_0x7de4('0x2d')](_0x55ec87);_0x45a94f(null,![]);});};AGIVertices[_0x7de4('0x11')]['agentUnpause']=function(_0x266644,_0xdd7304){var _0x2cddb9={'role':_0x7de4('0x4d')};_0x2cddb9[_0x266644]=this[_0x7de4('0x36')][_0x7de4('0x3a')];this['rpc'][_0x7de4('0x4e')](_0x2cddb9)[_0x7de4('0x12')](function(_0x500036){_0xdd7304(null,_[_0x7de4('0x42')](_0x500036)?![]:!![]);})['catch'](function(_0xc364bd){logger[_0x7de4('0x2d')](_0xc364bd);_0xdd7304(null,![]);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x4f')]=function(_0x549338,_0x5328d2){var _0x2610aa={'role':'agent'};_0x2610aa[_0x549338]=this[_0x7de4('0x36')]['callerid'];this[_0x7de4('0x10')]['agentLogout'](_0x2610aa)[_0x7de4('0x12')](function(_0x3cafa4){_0x5328d2(null,_[_0x7de4('0x42')](_0x3cafa4)?![]:!![]);})[_0x7de4('0x16')](function(_0x451215){logger[_0x7de4('0x2d')](_0x451215);_0x5328d2(null,![]);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x50')]=function(_0x2f9aaf,_0x152a69){var _0x3c4fa4={'role':'agent'};_0x3c4fa4[_0x2f9aaf]=this['channel'][_0x7de4('0x3a')];var _0x30f103=_0x2f9aaf!='internal'?util[_0x7de4('0x29')](_0x7de4('0x51'),_0x7de4('0x52'),this[_0x7de4('0x36')]['callerid']):undefined;this[_0x7de4('0x10')][_0x7de4('0x50')](_0x3c4fa4,_0x30f103)[_0x7de4('0x12')](function(_0x258698){_0x152a69(null,_[_0x7de4('0x42')](_0x258698)?![]:!![]);})[_0x7de4('0x16')](function(_0x86ce1a){logger[_0x7de4('0x2d')](_0x86ce1a);_0x152a69(null,![]);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x53')]=function(_0x11c3b9,_0xfa390d){sh[_0x7de4('0x54')](_['trim'](_0x11c3b9),function(_0xcb6102,_0x1c0873){var _0x2a9551=_0x1c0873[_0x7de4('0x55')](/(\r\n|\n|\r)/gm,'');_0xfa390d(null,_0x2a9551);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x56')]=function(_0xf754cb,_0x441f73){scripts[_0x7de4('0x56')](_0xf754cb[_0x7de4('0x57')],_0xf754cb['google_cloud_tts_text_type']||_0x7de4('0x58'),_0xf754cb['text'],_0xf754cb[_0x7de4('0x59')]||_0x7de4('0x5a'),_0xf754cb[_0x7de4('0x5b')]||_0x7de4('0x5c'),_0xf754cb[_0x7de4('0x5d')]||_0x7de4('0x5e'))['then'](function(_0x24e8da){_0x441f73(null,_0x24e8da);})[_0x7de4('0x16')](function(_0x4a879b){_0x441f73(_0x4a879b);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x5f')]=function(_0x467c1a,_0x3f7af2){scripts[_0x7de4('0x5f')](_0x467c1a['text'],_0x467c1a[_0x7de4('0x60')]||'en',0x1)['then'](function(_0x2f3331){_0x3f7af2(null,_0x2f3331);})[_0x7de4('0x16')](function(_0x1a372b){_0x3f7af2(_0x1a372b);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x61')]=function(_0x11b74d,_0x3f325c){var _0x603b3c={'uri':_0x11b74d[_0x7de4('0x62')],'method':_0x11b74d['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x11b74d[_0x7de4('0x63')])===_0x7de4('0x64')&&parseInt(_0x11b74d[_0x7de4('0x63')])>=0x1?parseInt(_0x11b74d[_0x7de4('0x63')])*0x3e8:0x5*0x3e8};if(_[_0x7de4('0x65')]([_0x7de4('0x66'),'PUT'],_0x603b3c['method'][_0x7de4('0x67')]())){try{_0x603b3c[_0x7de4('0x68')]=_0x11b74d['rawBody']?JSON[_0x7de4('0x69')](_0x11b74d[_0x7de4('0xd')]):{};}catch(_0x4caf8f){logger[_0x7de4('0x2d')](_0x7de4('0x6a'),_0x4caf8f);}}try{_0x603b3c[_0x7de4('0x6b')]=_0x11b74d[_0x7de4('0xc')]?JSON['parse'](_0x11b74d[_0x7de4('0xc')]):{};}catch(_0x49f9cc){logger[_0x7de4('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x49f9cc);}if(_0x11b74d[_0x7de4('0x6c')]){try{var _0x126fb6=require(_0x11b74d['computedVariables'])[_0x7de4('0x6d')](this,_0x603b3c);_0x603b3c[_0x7de4('0x6e')]=Mustache[_0x7de4('0x6f')](_0x11b74d[_0x7de4('0x62')],_0x126fb6,{},['$$','$$']);if(_0x603b3c['headers']){_0x603b3c[_0x7de4('0x6b')]=JSON[_0x7de4('0x69')](Mustache['render'](JSON[_0x7de4('0x70')](_0x603b3c[_0x7de4('0x6b')]),_0x126fb6,{},['$$','$$']));}if(_0x603b3c[_0x7de4('0x68')]){_0x603b3c['body']=JSON[_0x7de4('0x69')](Mustache[_0x7de4('0x6f')](JSON[_0x7de4('0x70')](_0x603b3c[_0x7de4('0x68')]),_0x126fb6,{},['$$','$$']));}}catch(_0x45e221){logger[_0x7de4('0x2d')](_0x7de4('0x71'),_0x45e221);}}rp(_0x603b3c)[_0x7de4('0x12')](function(_0x4c662d){var _0x4a331b={'statusCode':_0x4c662d[_0x7de4('0x72')]||0xc8,'statusMessage':_0x4c662d[_0x7de4('0x73')]||'OK','headers':_0x4c662d[_0x7de4('0x6b')]||{},'body':_0x4c662d[_0x7de4('0x68')]||{}};_0x3f325c(null,_0x4a331b);})['catch'](function(_0x515e22){var _0x280bf7={'statusCode':_0x515e22[_0x7de4('0x72')]||0x1f4,'statusMessage':_0x515e22[_0x7de4('0x74')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x515e22[_0x7de4('0x75')][_0x7de4('0x6b')]||{},'body':_0x515e22[_0x7de4('0x75')][_0x7de4('0x68')]||{}};_0x3f325c(null,_0x280bf7);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x76')]=function(_0x34877d,_0x2ea9a6){scripts[_0x7de4('0x76')](this[_0x7de4('0x36')]['uniqueid'],_0x34877d[_0x7de4('0x77')],_0x34877d[_0x7de4('0x58')],_0x34877d[_0x7de4('0x78')]||'en')[_0x7de4('0x12')](function(_0xe0e050){_0x2ea9a6(null,_0xe0e050);})[_0x7de4('0x16')](function(_0x5159bd){_0x2ea9a6(_0x5159bd);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x79')]=function(_0x463e82,_0x3a375a){scripts[_0x7de4('0x79')](this['channel'][_0x7de4('0x37')],_0x463e82[_0x7de4('0x7a')],_0x463e82[_0x7de4('0x7b')],_0x463e82[_0x7de4('0x7c')],_0x463e82[_0x7de4('0x58')],_0x463e82[_0x7de4('0x7d')]||'en')[_0x7de4('0x12')](function(_0x41d74f){_0x3a375a(null,_0x41d74f);})['catch'](function(_0x374c3a){_0x3a375a(_0x374c3a);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x7e')]=function(_0x25b3b6,_0x430ac8){scripts[_0x7de4('0x7e')](this[_0x7de4('0x36')],_0x25b3b6)[_0x7de4('0x12')](function(_0x2f1cda){_0x430ac8(null,_0x2f1cda);})[_0x7de4('0x16')](function(_0x126afa){_0x430ac8(_0x126afa);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x7f')]=function(_0xff1e6f,_0x190d81){scripts['ispeechTTS'](_0xff1e6f[_0x7de4('0x77')],_0xff1e6f[_0x7de4('0x58')],_0xff1e6f[_0x7de4('0x80')]||_0x7de4('0x5a'),_0xff1e6f[_0x7de4('0x81')])[_0x7de4('0x12')](function(_0x15d15a){_0x190d81(null,_0x15d15a);})['catch'](function(_0x5199b0){_0x190d81(_0x5199b0);});};AGIVertices['prototype'][_0x7de4('0x82')]=function(_0x1ecafa,_0x25227f,_0x1b7f37){scripts[_0x7de4('0x82')](_0x25227f,_0x1ecafa[_0x7de4('0x77')],_0x1ecafa[_0x7de4('0x83')]||_0x7de4('0x5a'),this[_0x7de4('0x84')](_0x1ecafa['model'])?_0x1ecafa[_0x7de4('0x85')]:undefined)[_0x7de4('0x12')](function(_0x3148e9){_0x1b7f37(null,_0x3148e9);})['catch'](function(_0x431836){_0x1b7f37(_0x431836);});};AGIVertices['prototype']['awsPolly']=function(_0x4e2ad4,_0xe55082){scripts['awsPolly'](_0x4e2ad4['aws_access_key_id'],_0x4e2ad4[_0x7de4('0x86')],_0x4e2ad4[_0x7de4('0x87')],_0x4e2ad4[_0x7de4('0x88')]||_0x7de4('0x89'),_0x4e2ad4[_0x7de4('0x58')],_0x4e2ad4[_0x7de4('0x8a')]||'text')[_0x7de4('0x12')](function(_0x421287){_0xe55082(null,_0x421287);})[_0x7de4('0x16')](function(_0x318988){_0xe55082(_0x318988);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x8b')]=function(_0x35bfff,_0x19fe93){scripts[_0x7de4('0x8b')](this[_0x7de4('0x36')]['uniqueid'],_0x35bfff['aws_access_key_id'],_0x35bfff['aws_secret_access_key'],_0x35bfff[_0x7de4('0x8c')],_0x35bfff[_0x7de4('0x58')],_0x35bfff[_0x7de4('0x8d')])[_0x7de4('0x12')](function(_0x3af560){_0x19fe93(null,_0x3af560);})[_0x7de4('0x16')](function(_0x64b608){_0x19fe93(_0x64b608);});};AGIVertices['prototype']['googleASR']=function(_0x95a871,_0x12cb2d,_0x3c9291){scripts[_0x7de4('0x8e')](_0x12cb2d,_0x95a871[_0x7de4('0x77')],_0x95a871[_0x7de4('0x8f')]||'en-US')['then'](function(_0x5c3535){_0x3c9291(null,_0x5c3535);})['catch'](function(_0x4b362f){_0x3c9291(_0x4b362f);});};AGIVertices['prototype'][_0x7de4('0x90')]=function(_0x47953c,_0x363299,_0x7bb657){scripts[_0x7de4('0x90')](_0x363299,_0x47953c[_0x7de4('0x91')],_0x47953c[_0x7de4('0x92')],_0x47953c[_0x7de4('0x6e')])[_0x7de4('0x12')](function(_0x3c77d1){_0x7bb657(null,_0x3c77d1);})['catch'](function(_0x3727f9){_0x7bb657(_0x3727f9);});};AGIVertices[_0x7de4('0x11')][_0x7de4('0x93')]=function(_0x44814c){var _0x43faf9=_['includes'](verticesWithRetry,_0x44814c[_0x7de4('0x38')])?_0x44814c:_['clone'](_0x44814c);for(var _0x5d1b42 in _0x43faf9){if(_0x43faf9['hasOwnProperty'](_0x5d1b42)){if(_0x43faf9[_0x5d1b42]&&_[_0x7de4('0x94')](_0x43faf9[_0x5d1b42])){if(_[_0x7de4('0x65')](recursiveMapAttributes,_0x5d1b42)){_0x43faf9[_0x5d1b42]=this[_0x7de4('0x95')](_0x43faf9[_0x5d1b42]);}else{_0x43faf9[_0x5d1b42]=this[_0x7de4('0x96')](_0x43faf9[_0x5d1b42]);}}}}return _0x43faf9;};AGIVertices[_0x7de4('0x11')][_0x7de4('0x97')]=function(_0x45424b){for(var _0x24a887 in _0x45424b){if(_0x45424b[_0x7de4('0x98')](_0x24a887)){if(_[_0x7de4('0x99')](_0x45424b[_0x24a887])){this[_0x7de4('0x97')](_0x45424b[_0x24a887]);}else if(_['isArray'](_0x45424b[_0x24a887])){for(var _0xef6c05=0x0;_0xef6c05<_0x45424b[_0x24a887][_0x7de4('0x9a')];_0xef6c05++){this[_0x7de4('0x97')](_0x45424b[_0x24a887][_0xef6c05]);}}else if(_[_0x7de4('0x94')](_0x45424b[_0x24a887])){_0x45424b[_0x24a887]=this[_0x7de4('0x96')](_0x45424b[_0x24a887]);}}}};AGIVertices[_0x7de4('0x11')][_0x7de4('0x9b')]=function(_0x3e0791,_0x49d5cc){for(var _0xbe2bf5 in _0x3e0791){if(_0x3e0791['hasOwnProperty'](_0xbe2bf5)){if(_['isPlainObject'](_0x3e0791[_0xbe2bf5])){if(!_['isEmpty'](_0x3e0791[_0xbe2bf5])){this['saveRestApiResult'](_0x3e0791[_0xbe2bf5],util[_0x7de4('0x29')]('%s.%s',_0x49d5cc,_0xbe2bf5));}}else if(_[_0x7de4('0x9c')](_0x3e0791[_0xbe2bf5])){for(var _0x23881a=0x0;_0x23881a<_0x3e0791[_0xbe2bf5][_0x7de4('0x9a')];_0x23881a++){this[_0x7de4('0x9b')](_0x3e0791[_0xbe2bf5][_0x23881a],util[_0x7de4('0x29')]('%s.%s',_0x49d5cc,_0xbe2bf5+'['+_0x23881a+']'));}}else{if(!_[_0x7de4('0x42')](_0x3e0791[_0xbe2bf5])){this[_0x7de4('0x36')][_0x7de4('0x9d')](util['format'](_0x7de4('0x9e'),_0x49d5cc,_0xbe2bf5),_0x3e0791[_0xbe2bf5]);}}}}};AGIVertices['prototype'][_0x7de4('0x95')]=function(_0x2b12e2){try{var _0x41f702=JSON[_0x7de4('0x69')](_0x2b12e2);this[_0x7de4('0x97')](_0x41f702);return JSON[_0x7de4('0x70')](_0x41f702);}catch(_0x191575){return this[_0x7de4('0x96')](_0x2b12e2);}};AGIVertices['prototype'][_0x7de4('0x96')]=function(_0x1a8701){var _0x56ba3d=_0x1a8701[_0x7de4('0x9f')]('{');for(var _0x59aede=0x1;_0x59aede<_0x56ba3d[_0x7de4('0x9a')];_0x59aede+=0x1){var _0x26110f=_0x56ba3d[_0x59aede][_0x7de4('0x9f')]('}');if(_0x26110f[_0x7de4('0x9a')]>0x1){_0x1a8701=_0x1a8701[_0x7de4('0xa0')]('{'+_0x26110f[0x0]+'}',this['channel'][_0x7de4('0xa1')](_0x26110f[0x0])[_0x7de4('0xa2')]||_0x26110f[0x0]);}}if(_0x56ba3d[_0x7de4('0x9a')]===0x1){return _0x1a8701[_0x7de4('0x48')]();}return this[_0x7de4('0x96')](_0x1a8701);};AGIVertices[_0x7de4('0x11')]['getAndSetVariable']=function(_0x20fceb,_0x203062){var _0x2fc2fb=this[_0x7de4('0x36')]['getVariable'](_0x20fceb);if(_0x2fc2fb[_0x7de4('0xa3')]===-0x1){return _0x2fc2fb;}logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0xa4'),_0x203062,_0x2fc2fb[_0x7de4('0xa2')]));return this[_0x7de4('0x36')]['setVariable'](_0x203062,_0x2fc2fb['extra']);};AGIVertices['prototype'][_0x7de4('0x84')]=function(_0x58b8a4){return _0x58b8a4&&_0x58b8a4!=='0'&&_0x58b8a4!=='-1'&&_0x58b8a4!=='';};AGIVertices[_0x7de4('0x11')]['maxRetry']=function(_0x270747){this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x270747,'-');_0x270747[_0x7de4('0xa5')]=_0x270747[_0x7de4('0xa6')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x7de4('0x11')][_0x7de4('0xa7')]=function(_0x3bfbe3){logger['info'](util[_0x7de4('0x29')](_0x7de4('0xa8'),_0x3bfbe3['label']));if(!this['isConfigured'](_0x3bfbe3[_0x7de4('0x58')])){return this[_0x7de4('0x36')]['noop']('no\x20text\x20configured');}var _0x154afd='\x22'+_0x3bfbe3[_0x7de4('0x58')]+'\x22';if(this[_0x7de4('0x84')](_0x3bfbe3[_0x7de4('0x75')])){_0x154afd+=','+_0x3bfbe3[_0x7de4('0x75')];}var _0x1754a3=this[_0x7de4('0x36')]['exec']('MRCPSynth',_0x154afd);if(_0x1754a3[_0x7de4('0xa3')]===-0x1){return _0x1754a3;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format'](_0x7de4('0xaa'),_0x154afd));};AGIVertices[_0x7de4('0x11')][_0x7de4('0xab')]=function(_0x46eb1f){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0xac'),_0x46eb1f[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x46eb1f[_0x7de4('0xae')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0xaf'));}var _0x51dc63=_0x46eb1f[_0x7de4('0xae')];if(this[_0x7de4('0x84')](_0x46eb1f['options'])){_0x51dc63+=','+_0x46eb1f['options'];}var _0x2570bb=this[_0x7de4('0x36')][_0x7de4('0x54')]('MRCPRecog',_0x51dc63);if(_0x2570bb[_0x7de4('0xa3')]===-0x1){return _0x2570bb;}var _0x3a88fb=this[_0x7de4('0xb0')]('RECOG_CONFIDENCE()',_0x7de4('0xb1'));if(_0x3a88fb[_0x7de4('0xa3')]===-0x1){return _0x3a88fb;}var _0x17609f=this[_0x7de4('0xb0')](_0x7de4('0xb2'),_0x7de4('0xb3'));if(_0x17609f[_0x7de4('0xa3')]===-0x1){return _0x17609f;}var _0x5a0171=this[_0x7de4('0xb0')](_0x7de4('0xb4'),'MRCP_RECOG_INSTANCE');if(_0x5a0171[_0x7de4('0xa3')]===-0x1){return _0x5a0171;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0xb5'),_0x51dc63));};AGIVertices['prototype'][_0x7de4('0xb6')]=function(_0x553aaa){logger['info'](util[_0x7de4('0x29')](_0x7de4('0xb7'),_0x553aaa['label']));return this[_0x7de4('0x36')][_0x7de4('0xb6')]([_0x553aaa[_0x7de4('0xb8')],_0x553aaa[_0x7de4('0xb9')]]);};AGIVertices[_0x7de4('0x11')][_0x7de4('0xba')]=function(_0x13ad83){logger[_0x7de4('0x2f')](util['format']('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x13ad83[_0x7de4('0xad')]));if(this[_0x7de4('0x84')](_0x13ad83[_0x7de4('0x63')])){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0xbb'),_0x13ad83[_0x7de4('0x63')]));var _0x5a6b94=this[_0x7de4('0x36')][_0x7de4('0xbc')](_0x13ad83[_0x7de4('0x63')]);if(_0x5a6b94[_0x7de4('0xa3')]===-0x1){return _0x5a6b94;}}return this[_0x7de4('0x36')][_0x7de4('0xba')]();};AGIVertices[_0x7de4('0x11')]['callback']=function(_0x269916){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0xbd'),_0x269916[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x269916[_0x7de4('0x46')])){return this[_0x7de4('0x36')]['error'](_0x269916,_0x7de4('0xbe'));}_0x269916['scheduledAt']=moment();if(this[_0x7de4('0x84')](_0x269916[_0x7de4('0xbf')])){_0x269916[_0x7de4('0x47')]=moment()[_0x7de4('0xc0')](_0x269916['delay'],_0x7de4('0xc1'));}if(!this[_0x7de4('0x84')](_0x269916[_0x7de4('0x49')])){_0x269916[_0x7de4('0x49')]=0x2;}this['createCmContact']['sync'](this,_0x269916);return this[_0x7de4('0x36')]['noop'](util['format']('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x269916[_0x7de4('0x45')],_0x269916['list_id'],_0x269916[_0x7de4('0x47')]));};AGIVertices[_0x7de4('0x11')][_0x7de4('0xc2')]=function(_0x146cc4){logger['info'](util[_0x7de4('0x29')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x146cc4[_0x7de4('0xad')]));var _0x485068=this[_0x7de4('0x36')]['exec'](_0x146cc4['application'],_0x146cc4[_0x7de4('0x75')]);if(_0x485068[_0x7de4('0xa3')]===-0x1){return _0x485068;}return this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')]('Executed\x20command\x20%s\x20%s',_0x146cc4[_0x7de4('0xc3')],_0x146cc4[_0x7de4('0x75')]));};AGIVertices[_0x7de4('0x11')][_0x7de4('0xc4')]=function(_0x33ac9c){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0xc5'),_0x33ac9c[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x33ac9c[_0x7de4('0x58')])){return this['channel'][_0x7de4('0xa9')](_0x7de4('0xc6'));}var _0x6299f3='\x22'+_0x33ac9c[_0x7de4('0x58')]+'\x22';if(this[_0x7de4('0x84')](_0x33ac9c[_0x7de4('0x75')])){_0x6299f3+=','+_0x33ac9c['options'];}var _0x3772a1=this[_0x7de4('0x36')]['exec'](_0x7de4('0xc7'),_0x6299f3);if(_0x3772a1['result']===-0x1){return _0x3772a1;}return this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')]('Executed\x20command\x20MRCPSynth\x20%s',_0x6299f3));};AGIVertices['prototype'][_0x7de4('0xc8')]=function(_0x1891f6){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x1891f6[_0x7de4('0xad')]));if(!this['isConfigured'](_0x1891f6[_0x7de4('0x58')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xc6'));}var _0x7e876e='\x22'+_0x1891f6[_0x7de4('0x58')]+'\x22';if(this[_0x7de4('0x84')](_0x1891f6[_0x7de4('0x75')])){_0x7e876e+=','+_0x1891f6[_0x7de4('0x75')];}var _0x2331cd=this[_0x7de4('0x36')][_0x7de4('0x54')](_0x7de4('0xc7'),_0x7e876e);if(_0x2331cd[_0x7de4('0xa3')]===-0x1){return _0x2331cd;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x7e876e));};AGIVertices[_0x7de4('0x11')][_0x7de4('0xc9')]=function(_0x3701c3){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0xca'),_0x3701c3[_0x7de4('0xad')]));if(!this['isConfigured'](_0x3701c3[_0x7de4('0xae')])){return this[_0x7de4('0x36')]['noop']('no\x20grammar\x20configured');}var _0x51e975=_0x3701c3[_0x7de4('0xae')];if(this[_0x7de4('0x84')](_0x3701c3[_0x7de4('0x75')])){_0x51e975+=','+_0x3701c3[_0x7de4('0x75')];}var _0x136ab5=this['channel'][_0x7de4('0x54')](_0x7de4('0xcb'),_0x51e975);if(_0x136ab5[_0x7de4('0xa3')]===-0x1){return _0x136ab5;}var _0x7d9417=this[_0x7de4('0xb0')](_0x7de4('0xcc'),'LUMENVOX_ASR_CONFIDENCE');if(_0x7d9417[_0x7de4('0xa3')]===-0x1){return _0x7d9417;}var _0x432370=this[_0x7de4('0xb0')](_0x7de4('0xb2'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x432370[_0x7de4('0xa3')]===-0x1){return _0x432370;}var _0xc29b24=this['getAndSetVariable'](_0x7de4('0xb4'),_0x7de4('0xcd'));if(_0xc29b24[_0x7de4('0xa3')]===-0x1){return _0xc29b24;}return this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')]('Executed\x20command\x20MRCPRecog\x20%s',_0x51e975));};AGIVertices[_0x7de4('0x11')]['sestekasr']=function(_0x215da8){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0xce'),_0x215da8[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x215da8[_0x7de4('0xae')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xaf'));}var _0x547051=_0x215da8[_0x7de4('0xae')];if(this[_0x7de4('0x84')](_0x215da8[_0x7de4('0x75')])){_0x547051+=','+_0x215da8[_0x7de4('0x75')];}var _0x3d5d07=this[_0x7de4('0x36')][_0x7de4('0x54')](_0x7de4('0xcb'),_0x547051);if(_0x3d5d07[_0x7de4('0xa3')]===-0x1){return _0x3d5d07;}var _0x212fe7=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0x7de4('0xcf'));if(_0x212fe7[_0x7de4('0xa3')]===-0x1){return _0x212fe7;}var _0x47222f=this[_0x7de4('0xb0')](_0x7de4('0xb2'),_0x7de4('0xd0'));if(_0x47222f[_0x7de4('0xa3')]===-0x1){return _0x47222f;}var _0x3d5a51=this[_0x7de4('0xb0')](_0x7de4('0xb4'),_0x7de4('0xd1'));if(_0x3d5a51[_0x7de4('0xa3')]===-0x1){return _0x3d5a51;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0xb5'),_0x547051));};AGIVertices[_0x7de4('0x11')]['database']=function(_0x662818){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0xd2'),_0x662818[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x662818[_0x7de4('0xd3')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x662818,_0x7de4('0xd4'));}var _0x742c97=this[_0x7de4('0x17')][_0x7de4('0x6d')](this,_0x662818['odbc_id']);if(!_0x742c97){return this[_0x7de4('0x36')]['error'](_0x662818,_0x7de4('0xd5'));}if(!this['isConfigured'](_0x662818[_0x7de4('0xd6')])){return this['channel'][_0x7de4('0x2d')](_0x662818,'no\x20query\x20configured');}var _0x497493=_0x662818[_0x7de4('0xd6')][_0x7de4('0x55')](/(\r\n|\n|\r)/gm,'\x20');this['channel']['noop'](util['format']('query:\x20%s',_0x497493));var _0x301f0b=this[_0x7de4('0x2b')]['sync'](this,_0x742c97,_0x497493);this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x662818,_0x497493);if(!this[_0x7de4('0x84')](_0x662818[_0x7de4('0xd7')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0xd8'));}var _0x4c9184=this[_0x7de4('0xa1')][_0x7de4('0x6d')](this,_0x662818[_0x7de4('0xd7')]);if(!_0x4c9184){return this[_0x7de4('0x36')]['error'](_0x662818,_0x7de4('0xd9'));}var _0x538dd9=this;_0x301f0b[_0x7de4('0xda')](function(_0x4376fd,_0x1fa0d8){Object[_0x7de4('0xdb')](_0x4376fd)[_0x7de4('0xda')](function(_0x1912e1){_0x538dd9[_0x7de4('0x36')][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0xdc'),_0x4c9184,_0x1fa0d8,_0x1912e1),_0x4376fd[_0x1912e1]);});});this[_0x7de4('0x36')][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0xdd'),_0x4c9184),_0x301f0b[_0x7de4('0x9a')]);return this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format'](_0x7de4('0xde'),_0x4c9184));};AGIVertices[_0x7de4('0x11')]['dial']=function(_0x4487d6){logger['debug'](util[_0x7de4('0x29')](_0x7de4('0xdf'),_0x4487d6['label']));if(!this[_0x7de4('0x84')](_0x4487d6['sip_id'])){return this[_0x7de4('0x36')]['error'](_0x4487d6,'no\x20user\x20selected');}var _0x51ca17=this[_0x7de4('0x1a')][_0x7de4('0x6d')](this,_0x4487d6[_0x7de4('0xe0')]);if(!_0x51ca17){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x4487d6,'no\x20user\x20found');}var _0x38dc2d=this[_0x7de4('0x36')][_0x7de4('0x54')]('DIAL',[util['format'](_0x7de4('0xe1'),_0x51ca17),_0x4487d6[_0x7de4('0x63')],_0x4487d6[_0x7de4('0xe2')],_0x4487d6[_0x7de4('0x62')]]);if(_0x38dc2d[_0x7de4('0xa3')]===-0x1){return _0x38dc2d;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('Executed\x20command\x20%s',_0x7de4('0xe3')));};AGIVertices['prototype'][_0x7de4('0xe4')]=function(_0x550bb3){logger['info'](util[_0x7de4('0x29')](_0x7de4('0xe5'),_0x550bb3[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x550bb3[_0x7de4('0x77')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xe6'));}if(!this[_0x7de4('0x84')](_0x550bb3[_0x7de4('0x58')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20text\x20configured');}this['channel']['bot']=!![];this[_0x7de4('0x35')](_0x550bb3);this[_0x7de4('0x3f')](_0x550bb3[_0x7de4('0x58')],'in','','');this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0xe7'),_0x550bb3[_0x7de4('0x58')]));var _0x4a1de2=this[_0x7de4('0x76')][_0x7de4('0x6d')](this,_0x550bb3);if(_0x4a1de2){for(var _0x2fb83b in _0x4a1de2){if(_0x4a1de2[_0x7de4('0x98')](_0x2fb83b)){this['channel'][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0xe8'),_0x2fb83b[_0x7de4('0x67')]()),_0x4a1de2[_0x2fb83b]);}}this[_0x7de4('0x3f')](_0x4a1de2[_0x7de4('0xe9')],_0x7de4('0xea'),_0x7de4('0xe4'),'');return this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')]('Dialogflow\x20Result\x20%s',_0x4a1de2['speech']));}return this['channel']['error'](_0x550bb3,_0x7de4('0xeb'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0xec')]=function(_0x47edca){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0xed'),_0x47edca[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x47edca[_0x7de4('0x7a')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xee'));}if(!this[_0x7de4('0x84')](_0x47edca[_0x7de4('0x7b')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20client_email\x20configured');}if(!this[_0x7de4('0x84')](_0x47edca[_0x7de4('0x7c')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0xef'));}if(!this[_0x7de4('0x84')](_0x47edca[_0x7de4('0x7d')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0xf0'));}if(!this[_0x7de4('0x84')](_0x47edca[_0x7de4('0x58')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xc6'));}this[_0x7de4('0x36')][_0x7de4('0xf1')]=!![];this[_0x7de4('0x35')](_0x47edca);this[_0x7de4('0x3f')](_0x47edca[_0x7de4('0x58')],'in','','');this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format'](_0x7de4('0xf2'),_0x47edca[_0x7de4('0x58')]));var _0x25f4b4=this[_0x7de4('0x79')]['sync'](this,_0x47edca);if(_0x25f4b4){for(var _0x1f5e2c in _0x25f4b4){if(_0x25f4b4[_0x7de4('0x98')](_0x1f5e2c)){if(_0x1f5e2c!==_0x7de4('0xf3')){this['channel']['setVariable'](util[_0x7de4('0x29')](_0x7de4('0xe8'),_0x1f5e2c[_0x7de4('0x67')]()),_0x25f4b4[_0x1f5e2c]);}}}this['createSquareMessage'](_0x25f4b4[_0x7de4('0xe9')],_0x7de4('0xea'),_0x7de4('0xec'),_0x25f4b4[_0x7de4('0xf3')]);return this['channel']['noop'](util['format'](_0x7de4('0xf4'),_0x25f4b4[_0x7de4('0xe9')]));}return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x47edca,_0x7de4('0xf5'));};AGIVertices[_0x7de4('0x11')]['sesteknda']=function(_0x28523c){logger['info'](util[_0x7de4('0x29')](_0x7de4('0xf6'),_0x28523c[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x28523c[_0x7de4('0xf7')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xf8'));}if(!this['isConfigured'](_0x28523c[_0x7de4('0xf9')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xfa'));}if(!this[_0x7de4('0x84')](_0x28523c[_0x7de4('0xfb')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20password\x20configured');}if(!this[_0x7de4('0x84')](_0x28523c[_0x7de4('0xfc')])){return this[_0x7de4('0x36')]['noop']('no\x20text\x20configured');}this['channel'][_0x7de4('0xf1')]=!![];this[_0x7de4('0x35')](_0x28523c);this[_0x7de4('0x3f')](_0x28523c[_0x7de4('0x58')],'in','','');this[_0x7de4('0x36')]['noop'](util['format'](_0x7de4('0xfd'),_0x28523c[_0x7de4('0x58')]));var _0x13035b=this[_0x7de4('0x7e')]['sync'](this,_0x28523c);if(_0x13035b){for(var _0x3ca52c in _0x13035b){if(_0x13035b[_0x7de4('0x98')](_0x3ca52c)){this[_0x7de4('0x36')][_0x7de4('0x9d')](util[_0x7de4('0x29')]('SESTEK_NDA_%s',_0x3ca52c['toUpperCase']()),_0x13035b[_0x3ca52c]);}}this[_0x7de4('0x3f')](_0x13035b['speech'],_0x7de4('0xea'),_0x7de4('0xfe'),'');if(_0x13035b['audiofile']){this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0xff'),_0x13035b['audiofile']));var _0x2c18f7=this[_0x7de4('0x36')][_0x7de4('0x100')](_0x13035b[_0x7de4('0x101')]);try{fs[_0x7de4('0x102')](_0x13035b[_0x7de4('0x101')]+'.wav');}catch(_0x4bbfa1){logger[_0x7de4('0x2d')](_0x4bbfa1);}return _0x2c18f7;}else{return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x103'),_0x13035b[_0x7de4('0xe9')]));}}return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x28523c,_0x7de4('0x104'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x105')]=function(_0x22a2ec){logger[_0x7de4('0x2f')](util['format']('Enter\x20in\x20END\x20(%s)\x20block',_0x22a2ec[_0x7de4('0xad')]));return this['channel']['noop'](_0x7de4('0x105'));};AGIVertices[_0x7de4('0x11')]['ext_dial']=function(_0x426798){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x106'),_0x426798[_0x7de4('0xad')]));var _0x8d6171='';if(_0x426798['trunk_id']){if(!this[_0x7de4('0x84')](_0x426798[_0x7de4('0x107')])){return this[_0x7de4('0x36')]['error'](_0x426798,_0x7de4('0x108'));}else{var _0x195b9b=parseInt(_0x426798[_0x7de4('0x107')],0xa);if(isNaN(_0x195b9b)){_0x8d6171=_0x426798['trunk_id'];}else{_0x8d6171=this[_0x7de4('0x1c')][_0x7de4('0x6d')](this,_0x426798[_0x7de4('0x107')]);if(!_0x8d6171){return this[_0x7de4('0x36')]['error'](_0x426798,'no\x20trunk\x20found');}}}}else if(_0x426798[_0x7de4('0x109')]){_0x8d6171=_0x426798['trunk_name'];}else{return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x426798,_0x7de4('0x108'));}var _0x242629=this[_0x7de4('0x36')]['exec'](_0x7de4('0xe3'),[util[_0x7de4('0x29')](_0x7de4('0x10a'),_0x8d6171,_0x426798[_0x7de4('0x45')]),_0x426798[_0x7de4('0x63')],_0x426798['opts'],_0x426798[_0x7de4('0x62')]]);if(_0x242629['result']===-0x1){return _0x242629;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x10b'),_0x7de4('0xe3')));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x10c')]=function(_0x5e7d0d){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x10d'),_0x5e7d0d[_0x7de4('0xad')]));return this['channel'][_0x7de4('0xa9')](_0x7de4('0x10c'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x10e')]=function(_0x4b526c){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x10f'),_0x4b526c[_0x7de4('0xad')]));if(_0x4b526c[_0x7de4('0xa5')]===0x0){return this['maxRetry'](_0x4b526c);}_0x4b526c[_0x7de4('0xa5')]-=0x1;if(!this[_0x7de4('0x84')](_0x4b526c[_0x7de4('0x110')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x4b526c,_0x7de4('0x111'));}var _0x3feb26=this['getSound'][_0x7de4('0x6d')](this,_0x4b526c[_0x7de4('0x110')]);if(!_0x3feb26){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x4b526c,_0x7de4('0x112'));}if(!this[_0x7de4('0x84')](_0x4b526c[_0x7de4('0xd7')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x7de4('0xd8'));}var _0x246286=this[_0x7de4('0x36')][_0x7de4('0x113')](_0x3feb26,_0x4b526c[_0x7de4('0x114')],_0x4b526c[_0x7de4('0x115')]);var _0x3f22d6=_0x246286[_0x7de4('0xa3')]?_0x246286[_0x7de4('0xa3')][_0x7de4('0x48')]():'';logger['info'](_0x7de4('0x116'),JSON['stringify'](_0x246286));if(_0x246286[_0x7de4('0xa3')]===-0x1){this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x4b526c,_0x3f22d6);return _0x246286;}else if(_0x246286[_0x7de4('0xa2')]==='timeout'){_0x246286['result']=_0x3f22d6[_0x7de4('0x9a')]>=parseInt(_0x4b526c[_0x7de4('0x117')])?'x':'i';}else{_0x246286[_0x7de4('0xa3')]=_0x3f22d6[_0x7de4('0x9a')]>=parseInt(_0x4b526c['mindigit'])&&_0x3f22d6[_0x7de4('0x9a')]<=parseInt(_0x4b526c['maxdigit'])?'x':'i';}var _0x98e3d8=this[_0x7de4('0xa1')]['sync'](this,_0x4b526c[_0x7de4('0xd7')]);if(!_0x98e3d8){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x4b526c,_0x7de4('0xd9'));}this[_0x7de4('0x36')]['setVariable'](_0x98e3d8,_0x3f22d6);if(this['isConfigured'](_0x4b526c[_0x7de4('0x118')])){var _0x3b2c02=parseInt(_0x4b526c['hiddendigitsnum'],0xa);var _0x450329=rs[_0x7de4('0x119')]({'charset':'*','length':_0x3b2c02});var _0x4d22d3=_0x3f22d6[_0x7de4('0x9a')];if(_0x4d22d3>0x0){if(_0x4d22d3>_0x3b2c02){this['createSquareDetailsReport']['sync'](this,_0x4b526c,_0x4b526c[_0x7de4('0x11a')]==='first'?_0x450329+_0x3f22d6['substr'](_0x3b2c02):_0x3f22d6[_0x7de4('0x11b')](0x0,_0x4d22d3-_0x3b2c02)+_0x450329);}else{this[_0x7de4('0x35')]['sync'](this,_0x4b526c,rs[_0x7de4('0x119')]({'charset':'*','length':_0x4d22d3}));}}else{this[_0x7de4('0x35')]['sync'](this,_0x4b526c,'');}}else{this[_0x7de4('0x35')]['sync'](this,_0x4b526c,_0x3f22d6);}return _0x246286;};AGIVertices['prototype'][_0x7de4('0xf')]=function(_0x47fb2f){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x11c'),_0x47fb2f[_0x7de4('0xad')]));return this[_0x7de4('0x10e')](_0x47fb2f);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x11d')]=function(_0x509f23){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x11e'),_0x509f23[_0x7de4('0xad')]));this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x509f23,_0x509f23[_0x7de4('0x11f')]);return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x120'),_0x509f23[_0x7de4('0x11f')]));};AGIVertices['prototype']['awspolly']=function(_0x1add95){logger['info'](util['format'](_0x7de4('0x121'),_0x1add95[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x1add95['aws_access_key_id'])||!this[_0x7de4('0x84')](_0x1add95['aws_secret_access_key'])){return this['channel'][_0x7de4('0xa9')](_0x7de4('0x122'));}if(!this['isConfigured'](_0x1add95['text'])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xc6'));}this['channel'][_0x7de4('0xa9')](util['format'](_0x7de4('0x123'),_0x1add95[_0x7de4('0x58')]));var _0x3be1a6=this[_0x7de4('0x124')][_0x7de4('0x6d')](this,_0x1add95);if(_0x3be1a6){this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('aws\x20Polly\x20%s\x20file\x20created',_0x3be1a6));var _0x4fbe89=this['channel'][_0x7de4('0x100')](_0x3be1a6);try{fs['unlink'](_0x3be1a6+_0x7de4('0x125'));}catch(_0x544b0e){logger[_0x7de4('0x2d')](_0x544b0e);}return _0x4fbe89;}return this['channel'][_0x7de4('0x2d')](_0x1add95,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x7de4('0x11')][_0x7de4('0x126')]=function(_0x3537d4){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x3537d4[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x3537d4['aws_access_key_id'])||!this['isConfigured'](_0x3537d4[_0x7de4('0x86')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x122'));}if(!this[_0x7de4('0x84')](_0x3537d4[_0x7de4('0x8d')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20bot\x20name\x20configured');}if(!this[_0x7de4('0x84')](_0x3537d4[_0x7de4('0x58')])){return this['channel'][_0x7de4('0xa9')]('no\x20text\x20configured');}this[_0x7de4('0x36')][_0x7de4('0xf1')]=!![];this['createSquareDetailsReport'](_0x3537d4);this[_0x7de4('0x3f')](_0x3537d4[_0x7de4('0x58')],'in','','');this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x127'),_0x3537d4['text']));var _0x3ce8fb=this['awsLex'][_0x7de4('0x6d')](this,_0x3537d4);if(_0x3ce8fb){for(var _0x56e67b in _0x3ce8fb){if(_0x3ce8fb[_0x7de4('0x98')](_0x56e67b)&&_[_0x7de4('0x94')](_0x3ce8fb[_0x56e67b])){this['channel'][_0x7de4('0x9d')](util['format']('AWS_LEX_%s',_0x56e67b[_0x7de4('0x67')]()),_0x3ce8fb[_0x56e67b]);}}if(_[_0x7de4('0x42')](_0x3ce8fb['message'])){return this['channel'][_0x7de4('0xa9')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x7de4('0x3f')](_0x3ce8fb[_0x7de4('0x74')],'out','amazonlex','');return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x128'),_0x3ce8fb['message']));}}return this['channel'][_0x7de4('0x2d')](_0x3537d4,_0x7de4('0x129'));};AGIVertices['prototype'][_0x7de4('0x12a')]=function(_0x318768){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x12b'),_0x318768[_0x7de4('0xad')],_0x318768[_0x7de4('0x63')]));if(!this[_0x7de4('0x84')](_0x318768['key'])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xe6'));}var _0x26e600=_0x7de4('0x12c');var _0x554364=util[_0x7de4('0x29')]('%s/recordings/%s',FILES_PATH,rs[_0x7de4('0x119')](0x4));var _0x1bf490=util[_0x7de4('0x29')]('%s.%s',_0x554364,_0x26e600);var _0x1eb34a=!![];if(_0x318768[_0x7de4('0x12d')]===_0x7de4('0x12e')){_0x1eb34a=![];}var _0x204e19=this[_0x7de4('0x36')][_0x7de4('0x12f')](_0x554364,_0x26e600,_0x318768[_0x7de4('0x130')],_0x318768['timeout'],undefined,_0x1eb34a);if(_0x204e19['result']!==-0x1){this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x131'),_0x1bf490));var _0x52e89a=this[_0x7de4('0x8e')]['sync'](this,_0x318768,_0x1bf490);if(_0x52e89a){for(var _0x423518 in _0x52e89a){if(_0x52e89a[_0x7de4('0x98')](_0x423518)){this['channel'][_0x7de4('0x9d')](util['format'](_0x7de4('0x132'),_0x423518[_0x7de4('0x67')]()),_0x52e89a[_0x423518]);}}return this['channel'][_0x7de4('0xa9')](util['format'](_0x7de4('0x133'),JSON[_0x7de4('0x70')](_0x52e89a)));}}return _0x204e19;};AGIVertices[_0x7de4('0x11')][_0x7de4('0x134')]=function(_0x31de3e){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x135'),_0x31de3e[_0x7de4('0xad')]));if(!this['isConfigured'](_0x31de3e[_0x7de4('0x91')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0x136'));}if(!this[_0x7de4('0x84')](_0x31de3e[_0x7de4('0x92')])){return this[_0x7de4('0x36')]['noop']('no\x20appsecret\x20configured');}var _0x293128=_0x7de4('0x12c');var _0x5e7ae0=util['format'](_0x7de4('0x137'),FILES_PATH,rs['generate'](0x4));var _0x3d36cd=util[_0x7de4('0x29')](_0x7de4('0x9e'),_0x5e7ae0,_0x293128);var _0x308fdf=!![];if(_0x31de3e[_0x7de4('0x12d')]===_0x7de4('0x12e')){_0x308fdf=![];}var _0x10e142=this['channel'][_0x7de4('0x12f')](_0x5e7ae0,_0x293128,_0x31de3e[_0x7de4('0x130')],_0x31de3e[_0x7de4('0x63')],undefined,_0x308fdf);if(_0x10e142['result']!==-0x1){this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('tilde\x20%s\x20file\x20created',_0x3d36cd));var _0x4aa24b=this[_0x7de4('0x90')]['sync'](this,_0x31de3e,_0x3d36cd);if(_0x4aa24b){for(var _0x5ea83e in _0x4aa24b){if(_0x4aa24b[_0x7de4('0x98')](_0x5ea83e)){this['channel'][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0x138'),_0x5ea83e[_0x7de4('0x67')]()),_0x4aa24b[_0x5ea83e]);}}return this['channel'][_0x7de4('0xa9')](util['format'](_0x7de4('0x139'),JSON['stringify'](_0x4aa24b)));}}return _0x10e142;};AGIVertices['prototype']['gotoc']=function(_0x43ee4a){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x13a'),_0x43ee4a[_0x7de4('0xad')]));return this[_0x7de4('0x36')][_0x7de4('0x13b')](_0x43ee4a[_0x7de4('0x13c')],_0x43ee4a[_0x7de4('0x3c')],_0x43ee4a['priority']);};AGIVertices['prototype'][_0x7de4('0x13d')]=function(_0x24bc04){logger['info'](util[_0x7de4('0x29')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x24bc04[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x24bc04[_0x7de4('0x13e')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x24bc04,_0x7de4('0x13f'));}try{var _0x22ce28=eval(_0x24bc04[_0x7de4('0x13e')])?_0x7de4('0x140'):_0x7de4('0x141');this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')](_0x7de4('0x142'),_0x24bc04[_0x7de4('0x13e')],_0x22ce28));return{'code':0xc8,'result':_0x22ce28};}catch(_0x1c0626){return{'code':0xc8,'result':_0x7de4('0x141')};}};AGIVertices[_0x7de4('0x11')][_0x7de4('0x143')]=function(_0x31d1a8){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x144'),_0x31d1a8['label']));if(!this[_0x7de4('0x84')](_0x31d1a8[_0x7de4('0x145')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x31d1a8,'no\x20interval\x20configured');}var _0x4ec771=this['getIntervals'][_0x7de4('0x6d')](this,_0x31d1a8[_0x7de4('0x145')]);if(!_0x4ec771){return this[_0x7de4('0x36')]['error'](_0x31d1a8,_0x7de4('0x146'));}for(var _0x2fe424=0x0;_0x2fe424<_0x4ec771['length'];_0x2fe424+=0x1){var _0x108de3=this[_0x7de4('0x36')][_0x7de4('0xa1')](util[_0x7de4('0x29')](_0x7de4('0x147'),_0x4ec771[_0x2fe424]));if(_0x108de3[_0x7de4('0xa3')]===-0x1){return _0x108de3;}logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x148'),_0x4ec771[_0x2fe424],_0x108de3[_0x7de4('0xa2')]));if(_0x108de3[_0x7de4('0xa2')]===_0x7de4('0x140')){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('IFTIME\x20%s\x20%s',_0x4ec771[_0x2fe424],'true'));this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x148'),_0x4ec771[_0x2fe424],'true'));return{'code':0xc8,'result':_0x7de4('0x140')};}else{logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x148'),_0x4ec771[_0x2fe424],_0x7de4('0x141')));this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x148'),_0x4ec771[_0x2fe424],_0x7de4('0x141')));}}return{'code':0xc8,'result':_0x7de4('0x141')};};AGIVertices['prototype'][_0x7de4('0x149')]=function(_0x1aad13){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x14a'),_0x1aad13['label']));return this[_0x7de4('0x36')][_0x7de4('0x149')]();};AGIVertices['prototype'][_0x7de4('0x14b')]=function(_0x44a374){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x14c'),_0x44a374[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x44a374['key'])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20key\x20configured');}var _0x2968b5=_0x7de4('0x12c');var _0xf0eac0=util[_0x7de4('0x29')](_0x7de4('0x137'),FILES_PATH,rs[_0x7de4('0x119')](0x4));var _0x9ddfc9=util[_0x7de4('0x29')](_0x7de4('0x9e'),_0xf0eac0,_0x2968b5);var _0x2d6501=!![];if(_0x44a374[_0x7de4('0x12d')]==='NOBEEP'){_0x2d6501=![];}var _0x9816e9=this['channel'][_0x7de4('0x12f')](_0xf0eac0,_0x2968b5,_0x44a374[_0x7de4('0x130')],_0x44a374[_0x7de4('0x63')],undefined,_0x2d6501);if(_0x9816e9[_0x7de4('0xa3')]!==-0x1){this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format'](_0x7de4('0x14d'),_0x9ddfc9));var _0x1d32a2=this['ispeechASR'][_0x7de4('0x6d')](this,_0x44a374,_0x9ddfc9);if(_0x1d32a2){for(var _0x16c13e in _0x1d32a2){if(_0x1d32a2['hasOwnProperty'](_0x16c13e)){this[_0x7de4('0x36')][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0x14e'),_0x16c13e[_0x7de4('0x67')]()),_0x1d32a2[_0x16c13e]);}}return this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')](_0x7de4('0x14f'),JSON[_0x7de4('0x70')](_0x1d32a2)));}}return _0x9816e9;};AGIVertices[_0x7de4('0x11')][_0x7de4('0x150')]=function(_0x5de41f){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x151'),_0x5de41f['label']));if(!this['isConfigured'](_0x5de41f[_0x7de4('0x77')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xe6'));}if(!this[_0x7de4('0x84')](_0x5de41f[_0x7de4('0x58')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20text\x20configured');}this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x152'),_0x5de41f[_0x7de4('0x58')]));var _0x50967c=this['ispeechTTS'][_0x7de4('0x6d')](this,_0x5de41f);if(_0x50967c){this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('ispeech\x20%s\x20file\x20created',_0x50967c));var _0x2954af=this['channel'][_0x7de4('0x100')](_0x50967c,_0x5de41f[_0x7de4('0x130')]);try{fs['unlink'](_0x50967c+_0x7de4('0x125'));}catch(_0x1f521f){logger[_0x7de4('0x2d')](_0x1f521f);}return _0x2954af;}return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x5de41f,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x7de4('0x11')][_0x7de4('0x153')]=function(_0x4eb911){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x154'),_0x4eb911[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x4eb911[_0x7de4('0x155')])){return this['channel'][_0x7de4('0x2d')](_0x4eb911,_0x7de4('0x156'));}logger[_0x7de4('0x2f')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x7de4('0x3a')],_0x4eb911[_0x7de4('0x155')]));var _0x33c3f9=this[_0x7de4('0x50')]['sync'](this,_0x4eb911[_0x7de4('0x155')]);if(_0x33c3f9){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x157'),this['channel'][_0x7de4('0x3a')],_0x4eb911[_0x7de4('0x155')]));this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x4eb911[_0x7de4('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x158'),this[_0x7de4('0x36')]['callerid'],_0x4eb911['findBy']));this['channel']['noop'](util['format'](_0x7de4('0x158'),this[_0x7de4('0x36')]['callerid'],_0x4eb911[_0x7de4('0x155')]));return{'code':0xc8,'result':_0x7de4('0x159')};}};AGIVertices['prototype']['logout']=function(_0x10a68a){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x15a'),_0x10a68a[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x10a68a['findBy'])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x10a68a,'no\x20find\x20by\x20configured');}logger['info'](util[_0x7de4('0x29')](_0x7de4('0x15b'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x10a68a['findBy']));var _0x46f24a=this['agentLogout'][_0x7de4('0x6d')](this,_0x10a68a['findBy']);if(_0x46f24a){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x157'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x10a68a['findBy']));this[_0x7de4('0x36')]['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x7de4('0x36')]['callerid'],_0x10a68a[_0x7de4('0x155')]));return{'code':0xc8,'result':_0x7de4('0x15c')};}else{logger['info'](util[_0x7de4('0x29')](_0x7de4('0x158'),this[_0x7de4('0x36')]['callerid'],_0x10a68a['findBy']));this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x158'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x10a68a[_0x7de4('0x155')]));return{'code':0xc8,'result':_0x7de4('0x159')};}};AGIVertices[_0x7de4('0x11')][_0x7de4('0x15d')]=function(_0x6d704d){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x15e'),_0x6d704d[_0x7de4('0xad')]));if(!this['isConfigured'](_0x6d704d[_0x7de4('0x15f')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x6d704d,_0x7de4('0x160'));}this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x161'),_0x6d704d['operation']));var _0x458bb7=eval(_0x6d704d[_0x7de4('0x15f')]);if(!this[_0x7de4('0x84')](_0x6d704d[_0x7de4('0xd7')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xd8'));}var _0x18d8ba=this[_0x7de4('0xa1')]['sync'](this,_0x6d704d[_0x7de4('0xd7')]);if(!_0x18d8ba){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x6d704d,_0x7de4('0xd9'));}if(_[_0x7de4('0x9c')](_0x458bb7)){var _0xfba71d=this;_0x458bb7[_0x7de4('0xda')](function(_0x4ed163,_0x4e9e3e){_0xfba71d[_0x7de4('0x36')][_0x7de4('0x9d')](util['format']('%s[%s]',_0x18d8ba,_0x4e9e3e),_0x4ed163);});return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('variable\x20%s[key]\x20set',_0x18d8ba));}else{return this['channel'][_0x7de4('0x9d')](_0x18d8ba,_0x458bb7);}};AGIVertices[_0x7de4('0x11')][_0x7de4('0xe')]=function(_0x523c0f){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x162'),_0x523c0f[_0x7de4('0xad')]));if(_0x523c0f[_0x7de4('0xa5')]===0x0){return this[_0x7de4('0xa6')](_0x523c0f);}_0x523c0f[_0x7de4('0xa5')]-=0x1;if(!this[_0x7de4('0x84')](_0x523c0f[_0x7de4('0x110')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x523c0f,_0x7de4('0x111'));}var _0x3755d1=this[_0x7de4('0x1e')][_0x7de4('0x6d')](this,_0x523c0f[_0x7de4('0x110')]);if(!_0x3755d1){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x523c0f,_0x7de4('0x112'));}var _0x4b9e24=this[_0x7de4('0x36')][_0x7de4('0x113')](_0x3755d1,_0x523c0f[_0x7de4('0x114')],_0x523c0f[_0x7de4('0x163')]);var _0xed497=_0x4b9e24[_0x7de4('0xa3')];if(_0x4b9e24['result']===-0x1){this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x523c0f,'-1');return _0x4b9e24;}else if(_0x4b9e24['extra']===_0x7de4('0x63')){_0x4b9e24[_0x7de4('0xa3')]=_0x4b9e24[_0x7de4('0xa3')]['length']>0x0?_0x4b9e24['result']:'t';}else if(_[_0x7de4('0x41')](_0x4b9e24[_0x7de4('0xa3')])){_0x4b9e24[_0x7de4('0xa3')]='#';_0xed497='#';}if(!this[_0x7de4('0x84')](_0x523c0f['variable_id'])){this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xd8'));}else{var _0x323f04=this[_0x7de4('0xa1')]['sync'](this,_0x523c0f[_0x7de4('0xd7')]);if(!_0x323f04){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x523c0f,'no\x20variable\x20found');}this['channel'][_0x7de4('0x9d')](_0x323f04,_0xed497);}this['createSquareDetailsReport']['sync'](this,_0x523c0f,_0xed497);return _0x4b9e24;};AGIVertices[_0x7de4('0x11')][_0x7de4('0xa9')]=function(_0x34e93b){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x34e93b[_0x7de4('0xad')]));return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x34e93b[_0x7de4('0x164')]||_0x34e93b[_0x7de4('0xad')]);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x165')]=function(_0x1a2478){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x166'),_0x1a2478[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x1a2478[_0x7de4('0x155')])){return this['channel'][_0x7de4('0x2d')](_0x1a2478,_0x7de4('0x156'));}logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x1a2478[_0x7de4('0x155')]));var _0x254192=this[_0x7de4('0x4a')][_0x7de4('0x6d')](this,_0x1a2478['pause_id']);var _0x88b74e=this[_0x7de4('0x4c')][_0x7de4('0x6d')](this,_0x1a2478['findBy'],_0x254192);if(_0x88b74e){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x157'),this['channel'][_0x7de4('0x3a')],_0x1a2478[_0x7de4('0x155')]));this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')](_0x7de4('0x157'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x1a2478[_0x7de4('0x155')]));return{'code':0xc8,'result':_0x7de4('0x15c')};}else{logger['info'](util[_0x7de4('0x29')](_0x7de4('0x158'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x1a2478[_0x7de4('0x155')]));this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x157'),this['channel'][_0x7de4('0x3a')],_0x1a2478[_0x7de4('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x7de4('0x11')][_0x7de4('0x167')]=function(_0x15fc5c){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x168'),_0x15fc5c['label']));if(!this['isConfigured'](_0x15fc5c[_0x7de4('0x110')])){return this['channel']['error'](_0x15fc5c,_0x7de4('0x111'));}var _0x301237=this[_0x7de4('0x1e')][_0x7de4('0x6d')](this,_0x15fc5c[_0x7de4('0x110')]);if(!_0x301237){return this['channel'][_0x7de4('0x2d')](_0x15fc5c,'no\x20file\x20audio\x20found');}var _0x4e6e40=this['channel']['exec'](_0x7de4('0x169'),[_0x301237,_0x15fc5c['opts']]);if(_0x4e6e40[_0x7de4('0xa3')]===-0x1){return _0x4e6e40;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x16a'),_0x7de4('0x169'),_0x301237));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x16b')]=function(_0x2c8ff9){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x16c'),_0x2c8ff9[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x2c8ff9[_0x7de4('0x16d')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x2c8ff9,'no\x20queue\x20selected');}var _0x5cb743='';var _0x2e3257=parseInt(_0x2c8ff9[_0x7de4('0x16d')],0xa);if(isNaN(_0x2e3257)){_0x5cb743=_0x2c8ff9[_0x7de4('0x16d')];}else{_0x5cb743=this[_0x7de4('0x14')][_0x7de4('0x6d')](this,_0x2c8ff9['queue_id']);if(!_0x5cb743){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x2c8ff9,'no\x20queue\x20found');}}var _0x306b04='';if(this[_0x7de4('0x84')](_0x2c8ff9[_0x7de4('0x110')])){var _0x539d7c=this[_0x7de4('0x1e')][_0x7de4('0x6d')](this,_0x2c8ff9[_0x7de4('0x110')]);if(_0x539d7c){_0x306b04=_0x539d7c;}}this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x2c8ff9,_0x5cb743);if(_0x2c8ff9['opts']['indexOf']('x')<0x0){_0x2c8ff9[_0x7de4('0xe2')]+='x';}if(_0x2c8ff9['opts'][_0x7de4('0x16e')]('X')<0x0){_0x2c8ff9[_0x7de4('0xe2')]+='X';}this[_0x7de4('0x36')]['setVariable'](_0x7de4('0x16f'),_0x5cb743?_0x5cb743[_0x7de4('0x170')]():'');var _0xeac0b1=this[_0x7de4('0x36')]['exec'](_0x7de4('0x171'),[_0x5cb743,_0x2c8ff9[_0x7de4('0xe2')],_0x2c8ff9[_0x7de4('0x62')],_0x306b04,_0x2c8ff9[_0x7de4('0x63')],_0x2c8ff9[_0x7de4('0xb6')],_0x2c8ff9[_0x7de4('0x172')],_0x2c8ff9[_0x7de4('0x173')],'',_0x2c8ff9[_0x7de4('0x174')]]);if(_0xeac0b1[_0x7de4('0xa3')]===-0x1){return _0xeac0b1;}return this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')](_0x7de4('0x16a'),_0x7de4('0x171'),_0x5cb743));};AGIVertices['prototype'][_0x7de4('0x175')]=function(_0x3244c7){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x176'),_0x3244c7['label']));var _0x4356e7=_0x3244c7[_0x7de4('0x177')]||_0x7de4('0x12c');var _0x2c18eb=util['format']('%s_%s',this['channel'][_0x7de4('0x37')],rs['generate'](0x5));var _0x9dce45=util['format']('%s/recordings/%s.%s',FILES_PATH,_0x2c18eb,_0x4356e7);var _0x5d5bb5=util[_0x7de4('0x29')](_0x7de4('0x137'),FILES_PATH,_0x2c18eb);this[_0x7de4('0x39')]['sync'](this,_0x3244c7,_0x2c18eb,_0x9dce45);this['channel'][_0x7de4('0x9d')](_0x7de4('0x178'),_0x2c18eb);logger[_0x7de4('0x2f')](_0x7de4('0x179'),_0x5d5bb5,_0x4356e7,_0x3244c7[_0x7de4('0x17a')],_0x3244c7['timeout']);return this['channel']['recordFile'](_0x5d5bb5,_0x4356e7,_0x3244c7[_0x7de4('0x17a')],_0x3244c7[_0x7de4('0x63')],undefined,!![]);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x17b')]=function(_0x811b5d){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x17c'),_0x811b5d[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x811b5d[_0x7de4('0x62')])){return this[_0x7de4('0x36')]['noop'](_0x7de4('0x17d'));}var _0x45dffa=this['restAPI'][_0x7de4('0x6d')](this,_0x811b5d);logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x17e'),util[_0x7de4('0x17f')](_0x45dffa,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x811b5d['variable_id'])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x180'));}var _0x372fb8=this['getVariable'][_0x7de4('0x6d')](this,_0x811b5d['variable_id']);if(!_0x372fb8){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x811b5d,'no\x20variable\x20found');}this[_0x7de4('0x36')][_0x7de4('0x9d')](util['format'](_0x7de4('0x181'),_0x372fb8),_0x45dffa[_0x7de4('0x72')]?_0x45dffa[_0x7de4('0x72')]:_0x7de4('0x182'));this[_0x7de4('0x36')][_0x7de4('0x9d')](util[_0x7de4('0x29')](_0x7de4('0x183'),_0x372fb8),_0x45dffa[_0x7de4('0x73')]?_0x45dffa[_0x7de4('0x73')]:'OK');if(_0x45dffa[_0x7de4('0x68')]){try{this['saveRestApiResult'](_0x45dffa[_0x7de4('0x68')],_0x372fb8);}catch(_0x38a849){logger[_0x7de4('0x2d')](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x372fb8));}}return this[_0x7de4('0x36')]['noop'](util['format'](_0x7de4('0xde'),_0x372fb8));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x184')]=function(_0x2ea59a){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x185'),_0x2ea59a[_0x7de4('0xad')]));return this[_0x7de4('0x36')]['sayDigits'](_0x2ea59a[_0x7de4('0x186')]['replace'](/\s+/g,''),_0x2ea59a[_0x7de4('0x17a')]);};AGIVertices['prototype'][_0x7de4('0x187')]=function(_0xefa712){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x188'),_0xefa712[_0x7de4('0xad')]));return this[_0x7de4('0x36')][_0x7de4('0x189')](_0xefa712[_0x7de4('0x64')][_0x7de4('0x55')](/\s+/g,''),_0xefa712[_0x7de4('0x17a')]);};AGIVertices['prototype'][_0x7de4('0x18a')]=function(_0x46ec6f){logger['info'](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x46ec6f[_0x7de4('0xad')]));return this[_0x7de4('0x36')][_0x7de4('0x18b')](_0x46ec6f['text'],_0x46ec6f[_0x7de4('0x17a')]);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x18c')]=function(_0x1c129e){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x18d'),_0x1c129e[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x1c129e[_0x7de4('0x18e')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')]('no\x20mail\x20account\x20configured');}var _0x211fec=this[_0x7de4('0x22')][_0x7de4('0x6d')](this,_0x1c129e[_0x7de4('0x18e')]);if(!_0x211fec||!_0x211fec[_0x7de4('0x18f')]){return this[_0x7de4('0x36')]['error'](_0x1c129e,_0x7de4('0x190'));}var _0x917154={'from':util[_0x7de4('0x29')](_0x7de4('0x191'),_0x211fec[_0x7de4('0x13')],_0x211fec[_0x7de4('0x192')]||_0x211fec[_0x7de4('0x18f')][_0x7de4('0x193')]),'to':_0x1c129e['to']||'','cc':_0x1c129e['cc']||'','bcc':_0x1c129e[_0x7de4('0x194')]||'','subject':_0x1c129e[_0x7de4('0x195')],'html':_0x1c129e[_0x7de4('0x58')],'text':_0x1c129e['text']};var _0x5d7deb={'tls':{'rejectUnauthorized':![]}};if(_0x211fec[_0x7de4('0x18f')]['service']){_0x5d7deb['service']=_0x211fec[_0x7de4('0x18f')][_0x7de4('0x196')];}else{_0x5d7deb['host']=_0x211fec[_0x7de4('0x18f')][_0x7de4('0x197')];_0x5d7deb[_0x7de4('0x198')]=_0x211fec['Smtp'][_0x7de4('0x198')];_0x5d7deb[_0x7de4('0x199')]=_0x211fec[_0x7de4('0x18f')]['secure'];}if(_0x211fec['Smtp'][_0x7de4('0x19a')]){_0x5d7deb['auth']={'user':_0x211fec[_0x7de4('0x18f')][_0x7de4('0x193')],'pass':_0x211fec[_0x7de4('0x18f')][_0x7de4('0x19b')]};}if(this['isConfigured'](_0x1c129e[_0x7de4('0x19c')])){}logger[_0x7de4('0x19d')](_0x7de4('0x19e'),JSON[_0x7de4('0x70')](_0x917154));this['createSquareDetailsReport'][_0x7de4('0x6d')](this,_0x1c129e,_0x1c129e[_0x7de4('0x18e')]);this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x19f'),_0x211fec[_0x7de4('0x13')]));this['sendMailMessage'][_0x7de4('0x6d')](this,_0x5d7deb,_0x917154);return this[_0x7de4('0x36')]['noop'](_0x7de4('0x1a0'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1a1')]=function(_0x469c05){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x1a2'),_0x469c05[_0x7de4('0xad')]));return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x1a3'));};AGIVertices[_0x7de4('0x11')]['sendSMS']=function(_0x307a96){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x1a4'),_0x307a96[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x307a96['sms_account_id'])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x1a5'));}var _0x1946a6=this['getSmsAccount'][_0x7de4('0x6d')](this,_0x307a96[_0x7de4('0x1a6')]);if(!_0x1946a6){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x307a96,'no\x20sms\x20account\x20found');}var _0x1f6fe5={'body':_0x307a96['sms_text'],'phone':_0x307a96['to']||'','SmsAccountId':_0x1946a6['id']};logger[_0x7de4('0x19d')](_0x7de4('0x1a7'),JSON[_0x7de4('0x70')](_0x1f6fe5));this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x307a96,_0x307a96[_0x7de4('0x1a6')]);this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x1a8'),_0x1946a6['name']));this[_0x7de4('0x34')][_0x7de4('0x6d')](this,_0x1f6fe5);return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x1a9'));};AGIVertices[_0x7de4('0x11')]['set']=function(_0xc3753d){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x1aa'),_0xc3753d['label']));if(!this[_0x7de4('0x84')](_0xc3753d[_0x7de4('0xd7')])){return this[_0x7de4('0x36')]['error'](_0xc3753d,_0x7de4('0x1ab'));}var _0x3ff25c=this[_0x7de4('0xa1')]['sync'](this,_0xc3753d[_0x7de4('0xd7')]);if(!_0x3ff25c){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0xc3753d,_0x7de4('0xd9'));}return this[_0x7de4('0x36')][_0x7de4('0x9d')](_0x3ff25c,_0xc3753d['variable_value']);};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1ac')]=function(_0x349507){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('Enter\x20in\x20START\x20(%s)\x20block',_0x349507['label']));this['channel'][_0x7de4('0xa9')](_0x7de4('0x1ad'));if(_0x349507[_0x7de4('0xba')]===_0x7de4('0x1ae')){this[_0x7de4('0x36')][_0x7de4('0xa9')]('Answer');return this[_0x7de4('0x36')][_0x7de4('0xba')]();}return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0x1af'));};AGIVertices['prototype'][_0x7de4('0x1b0')]=function(_0x13a49d){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x13a49d[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x13a49d[_0x7de4('0x1b1')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x13a49d,_0x7de4('0x1b2'));}var _0x4e60a0=this['getSquareProject'][_0x7de4('0x6d')](this,_0x13a49d[_0x7de4('0x1b1')]);if(!this[_0x7de4('0x84')](_0x4e60a0)){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x13a49d,util[_0x7de4('0x29')](_0x7de4('0x1b3'),_0x13a49d[_0x7de4('0x1b1')]));}if(_0x4e60a0===this['channel'][_0x7de4('0x3d')]){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x13a49d,_0x7de4('0x1b4'));}this['createSquareDetailsReport']['sync'](this,_0x13a49d,_0x4e60a0);var _0x16e0a2=this['channel'][_0x7de4('0x54')]('AGI',util[_0x7de4('0x29')](_0x7de4('0x1b5'),config[_0x7de4('0xb6')][_0x7de4('0x197')]||_0x7de4('0x1b6'),_0x4e60a0,this[_0x7de4('0x36')][_0x7de4('0x3d')]));if(_0x16e0a2[_0x7de4('0xa3')]===-0x1){return _0x16e0a2;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util['format'](_0x7de4('0x16a'),'AGI',_0x4e60a0));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1b7')]=function(_0x216ea2){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x1b8'),_0x216ea2[_0x7de4('0xad')]));var _0x5440b7=this[_0x7de4('0x53')][_0x7de4('0x6d')](this,_0x216ea2['command']);this[_0x7de4('0x35')][_0x7de4('0x6d')](this,_0x216ea2,_0x216ea2[_0x7de4('0xb8')]);if(this[_0x7de4('0x84')](_0x216ea2['variable_id'])){var _0x587a61=this[_0x7de4('0xa1')][_0x7de4('0x6d')](this,_0x216ea2[_0x7de4('0xd7')]);if(_0x587a61){this[_0x7de4('0x36')]['setVariable'](_0x587a61,_0x5440b7);return this['channel']['noop'](util[_0x7de4('0x29')](_0x7de4('0x1b9'),_0x216ea2[_0x7de4('0xb8')],_0x587a61));}}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x216ea2[_0x7de4('0xb8')]));};AGIVertices['prototype'][_0x7de4('0x1ba')]=function(_0x57fa25){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x1bb'),_0x57fa25[_0x7de4('0xad')]));_0x57fa25[_0x7de4('0x58')]=_0x57fa25[_0x7de4('0x58')][_0x7de4('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x7de4('0x84')](_0x57fa25[_0x7de4('0x57')])){return this['channel'][_0x7de4('0xa9')](_0x7de4('0x1bc'));}if(!this[_0x7de4('0x84')](_0x57fa25[_0x7de4('0x58')])){return this['channel'][_0x7de4('0xa9')](_0x7de4('0xc6'));}this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x1bd'),_0x57fa25[_0x7de4('0x58')]));var _0xa768bd=this[_0x7de4('0x56')][_0x7de4('0x6d')](this,_0x57fa25);if(_0xa768bd){this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x1be'),_0xa768bd));var _0x289866=this[_0x7de4('0x36')][_0x7de4('0x100')](_0xa768bd);try{fs['unlink'](_0xa768bd+_0x7de4('0x125'));}catch(_0x4457cb){logger[_0x7de4('0x2d')](_0x4457cb);}return _0x289866;}return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x57fa25,_0x7de4('0x1bf'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1c0')]=function(_0x12aaa6){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x1c1'),_0x12aaa6[_0x7de4('0xad')]));_0x12aaa6[_0x7de4('0x58')]=_0x12aaa6[_0x7de4('0x58')][_0x7de4('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x12aaa6[_0x7de4('0x58')])){return this[_0x7de4('0x36')][_0x7de4('0xa9')](_0x7de4('0xc6'));}this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')]('Trying\x20Google\x20TTS\x20%s',_0x12aaa6[_0x7de4('0x58')]));var _0x2fbbeb=this[_0x7de4('0x5f')][_0x7de4('0x6d')](this,_0x12aaa6);if(_0x2fbbeb){this[_0x7de4('0x36')]['noop'](util[_0x7de4('0x29')](_0x7de4('0x1c2'),_0x2fbbeb));var _0x2b174b=this[_0x7de4('0x36')][_0x7de4('0x100')](_0x2fbbeb);try{fs[_0x7de4('0x102')](_0x2fbbeb+_0x7de4('0x125'));}catch(_0x523d28){logger[_0x7de4('0x2d')](_0x523d28);}return _0x2b174b;}return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x12aaa6,_0x7de4('0x1c3'));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1c4')]=function(_0x221008){logger[_0x7de4('0x2f')](util['format'](_0x7de4('0x1c5'),_0x221008[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x221008['findBy'])){return this['channel']['error'](_0x221008,_0x7de4('0x156'));}logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x15b'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x221008[_0x7de4('0x155')]));var _0x5ebbd4=this[_0x7de4('0x4e')][_0x7de4('0x6d')](this,_0x221008[_0x7de4('0x155')]);if(_0x5ebbd4){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x157'),this[_0x7de4('0x36')]['callerid'],_0x221008[_0x7de4('0x155')]));this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x157'),this['channel'][_0x7de4('0x3a')],_0x221008[_0x7de4('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x158'),this[_0x7de4('0x36')][_0x7de4('0x3a')],_0x221008[_0x7de4('0x155')]));this['channel'][_0x7de4('0xa9')](util[_0x7de4('0x29')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x7de4('0x3a')],_0x221008['findBy']));return{'code':0xc8,'result':_0x7de4('0x159')};}};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1c6')]=function(_0x5eaf59){logger[_0x7de4('0x2f')](util[_0x7de4('0x29')](_0x7de4('0x1c7'),_0x5eaf59[_0x7de4('0xad')]));var _0x35f294=this[_0x7de4('0x36')]['exec']('VOICEMAIL',[_0x5eaf59['mailbox'],_0x5eaf59[_0x7de4('0x75')]]);if(_0x35f294[_0x7de4('0xa3')]===-0x1){return _0x35f294;}return this[_0x7de4('0x36')][_0x7de4('0xa9')](util[_0x7de4('0x29')](_0x7de4('0x16a'),_0x7de4('0x1c8'),_0x5eaf59[_0x7de4('0x1c9')]));};AGIVertices[_0x7de4('0x11')][_0x7de4('0x1ca')]=function(_0x14d850){logger['info'](util[_0x7de4('0x29')](_0x7de4('0x1cb'),_0x14d850[_0x7de4('0xad')]));if(!this[_0x7de4('0x84')](_0x14d850[_0x7de4('0xd7')])){return this[_0x7de4('0x36')][_0x7de4('0x2d')](_0x14d850,_0x7de4('0x1ab'));}var _0x16c652=this[_0x7de4('0xa1')][_0x7de4('0x6d')](this,_0x14d850[_0x7de4('0xd7')]);if(!_0x16c652){return this['channel']['error'](_0x14d850,_0x7de4('0xd9'));}var _0x15300f=this[_0x7de4('0x36')][_0x7de4('0xa1')](_0x16c652);return{'code':0xc8,'result':_0x15300f[_0x7de4('0xa2')]?_0x15300f[_0x7de4('0xa2')]:'-'};};String[_0x7de4('0x11')][_0x7de4('0xa0')]=function(_0x1d4e27,_0x39fbc6){return this[_0x7de4('0x9f')](_0x1d4e27)['join'](_0x39fbc6);};module[_0x7de4('0x1cc')]=AGIVertices;
\ No newline at end of file
index 02e8ec8..3a0f8ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ad3=['lodash','moment','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','attended','destlinkedid','savePause','info','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queue','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','startAcw','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','stringify','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','util'];(function(_0x52fb42,_0x11c8f3){var _0x47e7c1=function(_0xaeec29){while(--_0xaeec29){_0x52fb42['push'](_0x52fb42['shift']());}};_0x47e7c1(++_0x11c8f3);}(_0x1ad3,0x1f1));var _0x31ad=function(_0x26bcec,_0xe13f50){_0x26bcec=_0x26bcec-0x0;var _0x1049dc=_0x1ad3[_0x26bcec];return _0x1049dc;};'use strict';var util=require(_0x31ad('0x0'));var _=require(_0x31ad('0x1'));var moment=require(_0x31ad('0x2'));var ami=require('../ami');var logger=require('../../../config/logger')(_0x31ad('0x3'));var RpcUser=require(_0x31ad('0x4'));var RpcVoiceAgentReport=require(_0x31ad('0x5'));function Acw(_0x15e4dc){this['voiceQueues']=_0x15e4dc[_0x31ad('0x6')];this[_0x31ad('0x7')]=_0x15e4dc[_0x31ad('0x7')];this[_0x31ad('0x8')]=_0x15e4dc[_0x31ad('0x8')];this[_0x31ad('0x9')]={};ami['on']('agentconnect',this[_0x31ad('0xa')][_0x31ad('0xb')](this));ami['on'](_0x31ad('0xc'),this[_0x31ad('0xd')][_0x31ad('0xb')](this));ami['on']('hangup',this[_0x31ad('0xe')][_0x31ad('0xb')](this));ami['on']('agentringnoanswer',this[_0x31ad('0xf')][_0x31ad('0xb')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x31ad('0x10'),this[_0x31ad('0x11')][_0x31ad('0xb')](this));ami['on'](_0x31ad('0x12'),this[_0x31ad('0x13')][_0x31ad('0xb')](this));}function getDiff(_0x2d5e1a){var _0x150a2d=moment()[_0x31ad('0x14')](0x0);var _0x42b9a1=moment(_0x2d5e1a)[_0x31ad('0x14')](0x0);return _0x150a2d[_0x31ad('0x15')](_0x42b9a1,_0x31ad('0x16'));}Acw[_0x31ad('0x17')]['startAcw']=function(_0x40a973){try{var _0x1afa27=this;var _0x308a7c=this['channels'][_0x40a973][_0x31ad('0x18')];var _0x2b34d8=this[_0x31ad('0x9')][_0x40a973]['queue'];var _0x427d78=this[_0x31ad('0x6')][_0x2b34d8];var _0x3d3c54=![];var _0x84fd7='ACW';if(_0x427d78[_0x31ad('0x19')]){if(_0x427d78['mandatoryDispositionPause'][_0x31ad('0x1a')]){_0x3d3c54=!![];_0x84fd7=_0x427d78[_0x31ad('0x1b')][_0x31ad('0x1a')];}}ami[_0x31ad('0x1c')]({'action':_0x31ad('0x1d'),'interface':_0x308a7c,'paused':!![],'reason':_0x84fd7})[_0x31ad('0x1e')](function(_0x340cab){if(_0x1afa27['agents'][_0x308a7c]){return RpcUser[_0x31ad('0x1f')](_0x1afa27[_0x31ad('0x7')][_0x308a7c]['id'])['then'](function(_0x34384f){if(_0x34384f&&!_0x34384f[_0x31ad('0x20')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x40a973,_0x308a7c,_0x2b34d8);var _0x43f7d8=_0x1afa27[_0x31ad('0x9')][_0x40a973][_0x31ad('0x21')]&&_0x1afa27[_0x31ad('0x9')][_0x40a973]['destlinkedid']?_0x1afa27[_0x31ad('0x9')][_0x40a973][_0x31ad('0x22')]:_0x40a973;return RpcUser[_0x31ad('0x23')](_0x1afa27['agents'][_0x308a7c],_0x84fd7,_0x43f7d8)[_0x31ad('0x1e')](function(_0x23c0d0){if(!_0x3d3c54){_0x1afa27['timers'][_0x308a7c]={};logger[_0x31ad('0x24')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x40a973,_0x1afa27[_0x31ad('0x6')][_0x2b34d8][_0x31ad('0x25')],_0x308a7c,_0x2b34d8);_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x26')]=setTimeout(_0x1afa27[_0x31ad('0x27')][_0x31ad('0xb')](_0x1afa27,_0x308a7c),_0x1afa27[_0x31ad('0x6')][_0x2b34d8][_0x31ad('0x25')]*0x3e8);_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x28')]=moment()[_0x31ad('0x29')](_0x31ad('0x2a'));_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x2b')]=_0x40a973;_0x1afa27['timers'][_0x308a7c][_0x31ad('0x2c')]=_0x2b34d8;_0x1afa27['timers'][_0x308a7c][_0x31ad('0x2d')]=function(){var _0x5f09bf=getDiff(_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x28')]);clearTimeout(_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x26')]);_0x1afa27[_0x31ad('0x8')][_0x308a7c]['timer']=![];RpcVoiceAgentReport[_0x31ad('0x2e')]({'acwtime':_0x5f09bf},_0x1afa27[_0x31ad('0x8')][_0x308a7c][_0x31ad('0x2b')],_0x308a7c)[_0x31ad('0x1e')](function(_0x2e707d){logger[_0x31ad('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x40a973,_0x5f09bf,_0x2e707d);})[_0x31ad('0x2f')](function(_0x190cf3){logger[_0x31ad('0x30')](_0x31ad('0x31'),_0x40a973,_0x190cf3);});delete _0x1afa27[_0x31ad('0x8')][_0x308a7c];};}});}else{logger[_0x31ad('0x24')](_0x31ad('0x32'),_0x40a973,_0x308a7c,_0x2b34d8);}});}})[_0x31ad('0x2f')](function(_0x518d35){logger[_0x31ad('0x30')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x40a973,_0x1afa27['voiceQueues'][_0x2b34d8]['acwTimeout'],_0x308a7c,_0x2b34d8);})[_0x31ad('0x33')](function(){delete _0x1afa27[_0x31ad('0x9')][_0x40a973];});}catch(_0x4ae20b){logger['error']('[ACW][START]\x20%s',_0x4ae20b[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0x27')]=function(_0x1ffed0){try{var _0x5946d5=this;if(_0x5946d5['timers'][_0x1ffed0]){_0x5946d5[_0x31ad('0x8')][_0x1ffed0]['timer']=![];var _0x4ba0a8=_0x5946d5[_0x31ad('0x8')][_0x1ffed0][_0x31ad('0x2b')];var _0xa91587=_0x5946d5[_0x31ad('0x8')][_0x1ffed0]['queue'];var _0x16b984=_0x5946d5[_0x31ad('0x6')][_0xa91587][_0x31ad('0x25')];logger[_0x31ad('0x24')](_0x31ad('0x35'),_0x4ba0a8,_0x1ffed0);RpcUser[_0x31ad('0x36')](this[_0x31ad('0x7')][_0x1ffed0]);RpcVoiceAgentReport[_0x31ad('0x2e')]({'acwtime':_0x16b984,'agentacw':!![]},_0x4ba0a8,_0x1ffed0)[_0x31ad('0x1e')](function(_0x335201){logger['info'](_0x31ad('0x37'),_0x4ba0a8,_0x16b984,_0x335201);})[_0x31ad('0x2f')](function(_0x2d9287){logger[_0x31ad('0x30')](_0x31ad('0x31'),_0x4ba0a8,_0x2d9287);});}else{logger[_0x31ad('0x30')](_0x31ad('0x38'),_0x1ffed0);if(_0x5946d5[_0x31ad('0x8')]){logger[_0x31ad('0x24')](_0x31ad('0x39'),JSON['stringify'](_0x5946d5[_0x31ad('0x8')]));}}}catch(_0x3313a1){logger[_0x31ad('0x30')](_0x31ad('0x3a'),_0x3313a1[_0x31ad('0x34')]);}};Acw['prototype'][_0x31ad('0xa')]=function(_0x5592a7){try{if(this['voiceQueues'][_0x5592a7['queue']]&&(this[_0x31ad('0x6')][_0x5592a7[_0x31ad('0x2c')]][_0x31ad('0x3')]||this['voiceQueues'][_0x5592a7['queue']]['mandatoryDisposition'])){if(this['agents'][_0x5592a7[_0x31ad('0x18')]]){this['channels'][_0x5592a7[_0x31ad('0x2b')]]={'queue':_0x5592a7[_0x31ad('0x2c')],'interface':_0x5592a7[_0x31ad('0x18')],'destlinkedid':_0x5592a7[_0x31ad('0x22')]};}}}catch(_0xc56b0f){logger[_0x31ad('0x30')](_0x31ad('0x3b'),_0xc56b0f['message']);}};Acw[_0x31ad('0x17')][_0x31ad('0x13')]=function(_0x166e65){try{if(this['voiceQueues'][_0x166e65['queue']]&&(this[_0x31ad('0x6')][_0x166e65[_0x31ad('0x2c')]][_0x31ad('0x3')]||this[_0x31ad('0x6')][_0x166e65['queue']][_0x31ad('0x19')])){if(this['agents'][_0x166e65[_0x31ad('0x18')]]){this[_0x31ad('0x9')][_0x166e65['uniqueid']]={'queue':_0x166e65['queue'],'interface':_0x166e65[_0x31ad('0x18')]};}}}catch(_0x320a46){logger[_0x31ad('0x30')]('[ACW][syncAgentConnectPreview]\x20%s',_0x320a46[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0xd')]=function(_0x5b54ac){try{if(this[_0x31ad('0x9')][_0x5b54ac['uniqueid']]&&_[_0x31ad('0x3c')](this['channels'][_0x5b54ac['uniqueid']][_0x31ad('0x21')])){logger['info'](_0x31ad('0x3d'),_0x5b54ac['uniqueid']);this['startAcw'](_0x5b54ac[_0x31ad('0x2b')]);}else if(this['channels'][_0x5b54ac[_0x31ad('0x3e')]]&&_[_0x31ad('0x3c')](this[_0x31ad('0x9')][_0x5b54ac['linkedid']][_0x31ad('0x21')])){logger[_0x31ad('0x24')]('[%s][HANGUP:LINKEDID]',_0x5b54ac[_0x31ad('0x3e')]);this[_0x31ad('0x3f')](_0x5b54ac[_0x31ad('0x3e')]);}}catch(_0x45e91e){logger['error'](_0x31ad('0x40'),_0x45e91e[_0x31ad('0x34')]);}};Acw[_0x31ad('0x17')][_0x31ad('0xe')]=function(_0x513863){try{if(this[_0x31ad('0x9')][_0x513863['uniqueid']]&&this[_0x31ad('0x9')][_0x513863[_0x31ad('0x2b')]][_0x31ad('0x21')]){logger[_0x31ad('0x24')](_0x31ad('0x41'),_0x513863[_0x31ad('0x2b')]);this['startAcw'](_0x513863[_0x31ad('0x2b')]);}else if(this[_0x31ad('0x9')][_0x513863[_0x31ad('0x3e')]]&&this['channels'][_0x513863[_0x31ad('0x3e')]][_0x31ad('0x21')]){logger[_0x31ad('0x24')](_0x31ad('0x42'),_0x513863[_0x31ad('0x3e')]);this[_0x31ad('0x3f')](_0x513863[_0x31ad('0x3e')]);}}catch(_0x144056){logger[_0x31ad('0x30')](_0x31ad('0x43'),_0x144056[_0x31ad('0x34')]);}};Acw['prototype']['syncAttendedTransfer']=function(_0x51bb47){try{if(!_[_0x31ad('0x44')](this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x45')]])){this[_0x31ad('0x3f')](_0x51bb47[_0x31ad('0x45')]);if(this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]]){this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]]['attended']=!![];this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x47')]]=this['channels'][_0x51bb47[_0x31ad('0x46')]];delete this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x46')]];}}else if(!_[_0x31ad('0x44')](this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x47')]])){this[_0x31ad('0x3f')](_0x51bb47[_0x31ad('0x47')]);if(this['channels'][_0x51bb47[_0x31ad('0x48')]]){this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]][_0x31ad('0x21')]=!![];this[_0x31ad('0x9')][_0x51bb47['transfereeuniqueid']]=this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]];delete this[_0x31ad('0x9')][_0x51bb47[_0x31ad('0x48')]];}}}catch(_0x5c3db6){logger[_0x31ad('0x30')](_0x31ad('0x49'),_0x5c3db6['message']);}};Acw[_0x31ad('0x17')][_0x31ad('0x11')]=function(_0x2971f5){try{if(this[_0x31ad('0x9')][_0x2971f5[_0x31ad('0x4a')]]){logger['info'](_0x31ad('0x4b'),JSON['stringify'](_0x2971f5[_0x31ad('0x4a')]));this[_0x31ad('0x3f')](_0x2971f5[_0x31ad('0x4a')]);}else if(this[_0x31ad('0x9')][_0x2971f5[_0x31ad('0x4c')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x31ad('0x4d')](_0x2971f5[_0x31ad('0x4c')]));this['startAcw'](_0x2971f5[_0x31ad('0x4c')]);}}catch(_0x53c3cb){logger[_0x31ad('0x30')](_0x31ad('0x4e'),_0x53c3cb[_0x31ad('0x34')]);}};Acw['prototype'][_0x31ad('0xf')]=function(_0x47835f){try{if(this['voiceQueues'][_0x47835f['queue']]&&this[_0x31ad('0x6')][_0x47835f['queue']][_0x31ad('0x4f')]===_0x31ad('0x50')){if(this[_0x31ad('0x7')][_0x47835f[_0x31ad('0x18')]]){logger[_0x31ad('0x24')](_0x31ad('0x51'),_0x47835f[_0x31ad('0x2b')],_0x47835f[_0x31ad('0x18')],_0x47835f[_0x31ad('0x2c')]);return RpcUser[_0x31ad('0x23')](this[_0x31ad('0x7')][_0x47835f['interface']],'Auto-Pause',_0x47835f[_0x31ad('0x2b')]);}}}catch(_0x562572){logger[_0x31ad('0x30')](_0x31ad('0x52'),_0x562572[_0x31ad('0x34')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xac6b=['acwTimeout','stopAcw','lastPauseAt','uniqueid','updateAcw','timer','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','linkedid','attended','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util','lodash','moment','../ami','../../../config/logger','acw','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','voiceQueues','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','getAgent','then','voicePause','info','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]'];(function(_0x24f862,_0x4b645a){var _0x198aa4=function(_0x131195){while(--_0x131195){_0x24f862['push'](_0x24f862['shift']());}};_0x198aa4(++_0x4b645a);}(_0xac6b,0x125));var _0xbac6=function(_0x55f3bf,_0x54d9a1){_0x55f3bf=_0x55f3bf-0x0;var _0x3d8f35=_0xac6b[_0x55f3bf];return _0x3d8f35;};'use strict';var util=require(_0xbac6('0x0'));var _=require(_0xbac6('0x1'));var moment=require(_0xbac6('0x2'));var ami=require(_0xbac6('0x3'));var logger=require(_0xbac6('0x4'))(_0xbac6('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x47f93b){this['voiceQueues']=_0x47f93b['voiceQueues'];this['agents']=_0x47f93b[_0xbac6('0x6')];this[_0xbac6('0x7')]=_0x47f93b[_0xbac6('0x7')];this[_0xbac6('0x8')]={};ami['on'](_0xbac6('0x9'),this[_0xbac6('0xa')][_0xbac6('0xb')](this));ami['on'](_0xbac6('0xc'),this[_0xbac6('0xd')][_0xbac6('0xb')](this));ami['on'](_0xbac6('0xe'),this[_0xbac6('0xf')][_0xbac6('0xb')](this));ami['on'](_0xbac6('0x10'),this[_0xbac6('0x11')]['bind'](this));ami['on'](_0xbac6('0x12'),this[_0xbac6('0x13')][_0xbac6('0xb')](this));ami['on'](_0xbac6('0x14'),this[_0xbac6('0x15')][_0xbac6('0xb')](this));ami['on'](_0xbac6('0x16'),this['syncAgentConnectPreview'][_0xbac6('0xb')](this));}function getDiff(_0x381159){var _0x3b4923=moment()[_0xbac6('0x17')](0x0);var _0x1537fe=moment(_0x381159)['milliseconds'](0x0);return _0x3b4923[_0xbac6('0x18')](_0x1537fe,_0xbac6('0x19'));}Acw[_0xbac6('0x1a')][_0xbac6('0x1b')]=function(_0x297d8b){try{var _0x1d0580=this;var _0x3ef8d2=this[_0xbac6('0x8')][_0x297d8b][_0xbac6('0x1c')];var _0x30d2d6=this['channels'][_0x297d8b][_0xbac6('0x1d')];var _0x413907=this[_0xbac6('0x1e')][_0x30d2d6];var _0x3716c7=![];var _0x2a8d20=_0xbac6('0x1f');if(_0x413907[_0xbac6('0x20')]){if(_0x413907['mandatoryDispositionPause'][_0xbac6('0x21')]){_0x3716c7=!![];_0x2a8d20=_0x413907[_0xbac6('0x22')][_0xbac6('0x21')];}}ami[_0xbac6('0x23')]({'action':'QueuePause','interface':_0x3ef8d2,'paused':!![],'reason':_0x2a8d20})['then'](function(_0x20dd83){if(_0x1d0580['agents'][_0x3ef8d2]){return RpcUser[_0xbac6('0x24')](_0x1d0580['agents'][_0x3ef8d2]['id'])[_0xbac6('0x25')](function(_0x251d27){if(_0x251d27&&!_0x251d27[_0xbac6('0x26')]){logger[_0xbac6('0x27')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x297d8b,_0x3ef8d2,_0x30d2d6);var _0x520046=_0x1d0580[_0xbac6('0x8')][_0x297d8b]['attended']&&_0x1d0580[_0xbac6('0x8')][_0x297d8b][_0xbac6('0x28')]?_0x1d0580['channels'][_0x297d8b][_0xbac6('0x28')]:_0x297d8b;return RpcUser[_0xbac6('0x29')](_0x1d0580[_0xbac6('0x6')][_0x3ef8d2],_0x2a8d20,_0x520046)[_0xbac6('0x25')](function(_0x27ccab){if(!_0x3716c7){_0x1d0580['timers'][_0x3ef8d2]={};logger['info'](_0xbac6('0x2a'),_0x297d8b,_0x1d0580['voiceQueues'][_0x30d2d6][_0xbac6('0x2b')],_0x3ef8d2,_0x30d2d6);_0x1d0580[_0xbac6('0x7')][_0x3ef8d2]['timer']=setTimeout(_0x1d0580[_0xbac6('0x2c')][_0xbac6('0xb')](_0x1d0580,_0x3ef8d2),_0x1d0580[_0xbac6('0x1e')][_0x30d2d6][_0xbac6('0x2b')]*0x3e8);_0x1d0580['timers'][_0x3ef8d2][_0xbac6('0x2d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x2e')]=_0x297d8b;_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x1d')]=_0x30d2d6;_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x2f')]=function(){var _0x13117f=getDiff(_0x1d0580['timers'][_0x3ef8d2][_0xbac6('0x2d')]);clearTimeout(_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x30')]);_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x30')]=![];RpcVoiceAgentReport[_0xbac6('0x31')]({'acwtime':_0x13117f},_0x1d0580[_0xbac6('0x7')][_0x3ef8d2][_0xbac6('0x2e')],_0x3ef8d2)[_0xbac6('0x25')](function(_0xb4015f){logger[_0xbac6('0x27')]('[%s][UPDATE][ACWTIME:%s]',_0x297d8b,_0x13117f,_0xb4015f);})[_0xbac6('0x32')](function(_0x5840f3){logger[_0xbac6('0x33')](_0xbac6('0x34'),_0x297d8b,_0x5840f3);});delete _0x1d0580[_0xbac6('0x7')][_0x3ef8d2];};}});}else{logger['info'](_0xbac6('0x35'),_0x297d8b,_0x3ef8d2,_0x30d2d6);}});}})[_0xbac6('0x32')](function(_0x3bef99){logger['error'](_0xbac6('0x2a'),_0x297d8b,_0x1d0580[_0xbac6('0x1e')][_0x30d2d6][_0xbac6('0x2b')],_0x3ef8d2,_0x30d2d6);})[_0xbac6('0x36')](function(){delete _0x1d0580[_0xbac6('0x8')][_0x297d8b];});}catch(_0x24781d){logger[_0xbac6('0x33')](_0xbac6('0x37'),_0x24781d[_0xbac6('0x38')]);}};Acw[_0xbac6('0x1a')][_0xbac6('0x2c')]=function(_0x519fb6){try{var _0x571dcf=this;if(_0x571dcf[_0xbac6('0x7')][_0x519fb6]){_0x571dcf[_0xbac6('0x7')][_0x519fb6][_0xbac6('0x30')]=![];var _0xd38765=_0x571dcf[_0xbac6('0x7')][_0x519fb6][_0xbac6('0x2e')];var _0x2c9447=_0x571dcf[_0xbac6('0x7')][_0x519fb6]['queue'];var _0x12eb3e=_0x571dcf['voiceQueues'][_0x2c9447][_0xbac6('0x2b')];logger[_0xbac6('0x27')](_0xbac6('0x39'),_0xd38765,_0x519fb6);RpcUser[_0xbac6('0x3a')](this['agents'][_0x519fb6]);RpcVoiceAgentReport['update']({'acwtime':_0x12eb3e,'agentacw':!![]},_0xd38765,_0x519fb6)[_0xbac6('0x25')](function(_0x346094){logger[_0xbac6('0x27')](_0xbac6('0x3b'),_0xd38765,_0x12eb3e,_0x346094);})[_0xbac6('0x32')](function(_0x56d028){logger[_0xbac6('0x33')](_0xbac6('0x34'),_0xd38765,_0x56d028);});}else{logger[_0xbac6('0x33')](_0xbac6('0x3c'),_0x519fb6);if(_0x571dcf[_0xbac6('0x7')]){logger['info'](_0xbac6('0x3d'),JSON[_0xbac6('0x3e')](_0x571dcf[_0xbac6('0x7')]));}}}catch(_0x2dae25){logger[_0xbac6('0x33')](_0xbac6('0x3f'),_0x2dae25['message']);}};Acw['prototype'][_0xbac6('0xa')]=function(_0x22458e){try{if(this[_0xbac6('0x1e')][_0x22458e[_0xbac6('0x1d')]]&&(this['voiceQueues'][_0x22458e[_0xbac6('0x1d')]][_0xbac6('0x5')]||this[_0xbac6('0x1e')][_0x22458e['queue']][_0xbac6('0x20')])){if(this[_0xbac6('0x6')][_0x22458e[_0xbac6('0x1c')]]){this[_0xbac6('0x8')][_0x22458e[_0xbac6('0x2e')]]={'queue':_0x22458e[_0xbac6('0x1d')],'interface':_0x22458e[_0xbac6('0x1c')],'destlinkedid':_0x22458e[_0xbac6('0x28')]};}}}catch(_0x5c019b){logger[_0xbac6('0x33')](_0xbac6('0x40'),_0x5c019b[_0xbac6('0x38')]);}};Acw['prototype'][_0xbac6('0x41')]=function(_0x12d916){try{if(this[_0xbac6('0x1e')][_0x12d916['queue']]&&(this[_0xbac6('0x1e')][_0x12d916['queue']][_0xbac6('0x5')]||this['voiceQueues'][_0x12d916[_0xbac6('0x1d')]]['mandatoryDisposition'])){if(this[_0xbac6('0x6')][_0x12d916[_0xbac6('0x1c')]]){this[_0xbac6('0x8')][_0x12d916[_0xbac6('0x2e')]]={'queue':_0x12d916[_0xbac6('0x1d')],'interface':_0x12d916[_0xbac6('0x1c')]};}}}catch(_0x2c93a4){logger[_0xbac6('0x33')](_0xbac6('0x42'),_0x2c93a4[_0xbac6('0x38')]);}};Acw[_0xbac6('0x1a')][_0xbac6('0xd')]=function(_0x4f6915){try{if(this[_0xbac6('0x8')][_0x4f6915[_0xbac6('0x2e')]]&&_['isUndefined'](this[_0xbac6('0x8')][_0x4f6915[_0xbac6('0x2e')]]['attended'])){logger[_0xbac6('0x27')]('[%s][HANGUP:UNIQUEID]',_0x4f6915[_0xbac6('0x2e')]);this[_0xbac6('0x1b')](_0x4f6915['uniqueid']);}else if(this[_0xbac6('0x8')][_0x4f6915[_0xbac6('0x43')]]&&_['isUndefined'](this['channels'][_0x4f6915[_0xbac6('0x43')]][_0xbac6('0x44')])){logger[_0xbac6('0x27')](_0xbac6('0x45'),_0x4f6915[_0xbac6('0x43')]);this[_0xbac6('0x1b')](_0x4f6915[_0xbac6('0x43')]);}}catch(_0x2f25f4){logger[_0xbac6('0x33')]('[ACW][syncHangupRequest]\x20%s',_0x2f25f4[_0xbac6('0x38')]);}};Acw['prototype']['syncHangup']=function(_0x116935){try{if(this[_0xbac6('0x8')][_0x116935[_0xbac6('0x2e')]]&&this[_0xbac6('0x8')][_0x116935[_0xbac6('0x2e')]][_0xbac6('0x44')]){logger[_0xbac6('0x27')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x116935[_0xbac6('0x2e')]);this[_0xbac6('0x1b')](_0x116935[_0xbac6('0x2e')]);}else if(this[_0xbac6('0x8')][_0x116935[_0xbac6('0x43')]]&&this[_0xbac6('0x8')][_0x116935['linkedid']][_0xbac6('0x44')]){logger[_0xbac6('0x27')](_0xbac6('0x46'),_0x116935[_0xbac6('0x43')]);this[_0xbac6('0x1b')](_0x116935[_0xbac6('0x43')]);}}catch(_0x2115a4){logger[_0xbac6('0x33')]('[ACW][syncHangup]\x20%s',_0x2115a4[_0xbac6('0x38')]);}};Acw[_0xbac6('0x1a')][_0xbac6('0x13')]=function(_0x11bc7d){try{if(!_[_0xbac6('0x47')](this[_0xbac6('0x8')][_0x11bc7d['transfereeuniqueid']])){this[_0xbac6('0x1b')](_0x11bc7d['transfereeuniqueid']);if(this[_0xbac6('0x8')][_0x11bc7d['secondtransfereruniqueid']]){this[_0xbac6('0x8')][_0x11bc7d[_0xbac6('0x48')]][_0xbac6('0x44')]=!![];this['channels'][_0x11bc7d[_0xbac6('0x49')]]=this['channels'][_0x11bc7d[_0xbac6('0x48')]];delete this[_0xbac6('0x8')][_0x11bc7d[_0xbac6('0x48')]];}}else if(!_[_0xbac6('0x47')](this[_0xbac6('0x8')][_0x11bc7d[_0xbac6('0x49')]])){this[_0xbac6('0x1b')](_0x11bc7d[_0xbac6('0x49')]);if(this[_0xbac6('0x8')][_0x11bc7d['origtransfereruniqueid']]){this[_0xbac6('0x8')][_0x11bc7d[_0xbac6('0x4a')]][_0xbac6('0x44')]=!![];this[_0xbac6('0x8')][_0x11bc7d['transfereeuniqueid']]=this['channels'][_0x11bc7d[_0xbac6('0x4a')]];delete this[_0xbac6('0x8')][_0x11bc7d[_0xbac6('0x4a')]];}}}catch(_0x392dc7){logger[_0xbac6('0x33')]('[ACW][syncAttendedTransfer]\x20%s',_0x392dc7['message']);}};Acw[_0xbac6('0x1a')][_0xbac6('0x15')]=function(_0x111715){try{if(this[_0xbac6('0x8')][_0x111715[_0xbac6('0x4b')]]){logger[_0xbac6('0x27')](_0xbac6('0x4c'),JSON[_0xbac6('0x3e')](_0x111715[_0xbac6('0x4b')]));this[_0xbac6('0x1b')](_0x111715[_0xbac6('0x4b')]);}else if(this[_0xbac6('0x8')][_0x111715['transfererlinkedid']]){logger['info'](_0xbac6('0x4d'),JSON['stringify'](_0x111715[_0xbac6('0x4e')]));this[_0xbac6('0x1b')](_0x111715[_0xbac6('0x4e')]);}}catch(_0x10a1c1){logger[_0xbac6('0x33')](_0xbac6('0x4f'),_0x10a1c1[_0xbac6('0x38')]);}};Acw[_0xbac6('0x1a')][_0xbac6('0x11')]=function(_0x5f530b){try{if(this[_0xbac6('0x1e')][_0x5f530b[_0xbac6('0x1d')]]&&this[_0xbac6('0x1e')][_0x5f530b['queue']]['autopause']===_0xbac6('0x50')){if(this[_0xbac6('0x6')][_0x5f530b[_0xbac6('0x1c')]]){logger[_0xbac6('0x27')](_0xbac6('0x51'),_0x5f530b['uniqueid'],_0x5f530b[_0xbac6('0x1c')],_0x5f530b[_0xbac6('0x1d')]);return RpcUser[_0xbac6('0x29')](this['agents'][_0x5f530b['interface']],_0xbac6('0x52'),_0x5f530b[_0xbac6('0x2e')]);}}}catch(_0x349e02){logger['error'](_0xbac6('0x53'),_0x349e02[_0xbac6('0x38')]);}};module['exports']=Acw;
\ No newline at end of file
index b14babe..58fbda4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x5d0871,_0x33af0f){var _0x1a101c=function(_0x474243){while(--_0x474243){_0x5d0871['push'](_0x5d0871['shift']());}};_0x1a101c(++_0x33af0f);}(_0xb7e7,0x121));var _0x7b7e=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xb7e7[_0x21a9d9];return _0x46adce;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
+var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x4202fe,_0x2e1281){var _0x40e023=function(_0x2a422f){while(--_0x2a422f){_0x4202fe['push'](_0x4202fe['shift']());}};_0x40e023(++_0x2e1281);}(_0xb7e7,0x121));var _0x7b7e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb7e7[_0x502c7d];return _0x30b7ed;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
index 778875a..0e5e0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x216fe7,_0x33f932){var _0x1adc79=function(_0x1e9307){while(--_0x1e9307){_0x216fe7['push'](_0x216fe7['shift']());}};_0x1adc79(++_0x33f932);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x502eb0,_0x6d0814){_0x502eb0=_0x502eb0-0x0;var _0x4f78e4=_0xbdb7[_0x502eb0];return _0x4f78e4;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x29dda1,_0x508e13){var _0x21b0ef=function(_0x118906){while(--_0x118906){_0x29dda1['push'](_0x29dda1['shift']());}};_0x21b0ef(++_0x508e13);}(_0xb7e7,0x121));var _0x7b7e=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xb7e7[_0x487b0c];return _0x1adbdc;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
index 7f6b216..d34783a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e2=['countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','number','getQueue','exports','lodash','isNil','string','voiceQueue','uniqueid','name','phone','Contact','firstName','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry'];(function(_0x369cf2,_0x47e28c){var _0x5c7d3e=function(_0x4143d9){while(--_0x4143d9){_0x369cf2['push'](_0x369cf2['shift']());}};_0x5c7d3e(++_0x47e28c);}(_0x00e2,0x95));var _0x200e=function(_0x30f395,_0x3629b5){_0x30f395=_0x30f395-0x0;var _0x2ea0ee=_0x00e2[_0x30f395];return _0x2ea0ee;};'use strict';var util=require('util');var _=require(_0x200e('0x0'));var moment=require('moment');function checkNameSurname(_0x39313a,_0x249fa5,_0x244c11){var _0x3b9792='';if(!_[_0x200e('0x1')](_0x249fa5)&&_0x200e('0x2')===typeof _0x249fa5){_0x3b9792+=_0x249fa5;}if(!_[_0x200e('0x1')](_0x244c11)&&_0x200e('0x2')===typeof _0x244c11){_0x3b9792+='\x20'+_0x244c11;}if(_0x3b9792!==''){return _0x3b9792;}return _0x39313a;}function Action(_0x5dc4f2,_0x1badcd,_0x4cb54a){this[_0x200e('0x3')]=_0x5dc4f2;this[_0x200e('0x4')]=_0x4cb54a||undefined;this[_0x200e('0x5')]=checkNameSurname(_0x1badcd['Contact'][_0x200e('0x6')],_0x1badcd[_0x200e('0x7')][_0x200e('0x8')],_0x1badcd[_0x200e('0x7')]['lastName']);this['number']=_0x1badcd[_0x200e('0x7')][_0x200e('0x6')];this[_0x200e('0x9')]=_0x5dc4f2[_0x200e('0x5')];this['active']=_0x1badcd[_0x200e('0xa')]||![];this[_0x200e('0xb')]=_0x5dc4f2['type'];this[_0x200e('0xc')]=_0x5dc4f2['dialQueueTimeout']||0x3;this[_0x200e('0xd')]=_0x1badcd[_0x200e('0xd')];this[_0x200e('0xe')]=_0x1badcd[_0x200e('0xe')];this[_0x200e('0xf')]=_0x1badcd[_0x200e('0xf')];this['countnoanswerretry']=_0x1badcd['countnoanswerretry'];this[_0x200e('0x10')]=_0x1badcd['countnosuchnumberretry'];this['countdropretry']=_0x1badcd['countdropretry'];this['countabandonedretry']=_0x1badcd[_0x200e('0x11')];this[_0x200e('0x12')]=_0x1badcd[_0x200e('0x12')];this[_0x200e('0x13')]=_0x1badcd[_0x200e('0x13')];this[_0x200e('0x14')]=_0x1badcd[_0x200e('0x14')];this[_0x200e('0x15')]=_0x1badcd[_0x200e('0x15')];this[_0x200e('0x16')]=_0x1badcd[_0x200e('0x16')];this[_0x200e('0x17')]=_0x1badcd[_0x200e('0x17')];this[_0x200e('0x18')]=_0x1badcd[_0x200e('0x18')];this[_0x200e('0x19')]=_0x1badcd['id'];this['ContactFirstName']=_0x1badcd[_0x200e('0x7')][_0x200e('0x8')]||'';this['starttime']=moment()[_0x200e('0x1a')](_0x200e('0x1b'));this[_0x200e('0x1c')]=_0x1badcd[_0x200e('0x1c')];this['callbackuniqueid']=_0x1badcd[_0x200e('0x1d')];this['callbackat']=_0x1badcd[_0x200e('0x1e')];this[_0x200e('0x1f')]=_0x1badcd[_0x200e('0x1f')];this[_0x200e('0x20')]='';this['originatecalleridname']='';}Action[_0x200e('0x21')][_0x200e('0x22')]=function(){return util[_0x200e('0x1a')](_0x200e('0x23'),this['name'],this[_0x200e('0x3')][_0x200e('0x24')]>0x0?this['number'][_0x200e('0x25')](this[_0x200e('0x3')][_0x200e('0x24')]):this[_0x200e('0x26')]);};Action[_0x200e('0x21')][_0x200e('0x27')]=function(){return this[_0x200e('0x9')];};module[_0x200e('0x28')]=Action;
\ No newline at end of file
+var _0x8d3e=['countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','getCaller','name','dialCutDigit','substring','prototype','getQueue','exports','util','lodash','moment','isNil','string','voiceQueue','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x1f15bb,_0x4663fb){var _0x3a49ef=function(_0x5aa13c){while(--_0x5aa13c){_0x1f15bb['push'](_0x1f15bb['shift']());}};_0x3a49ef(++_0x4663fb);}(_0x8d3e,0x1d9));var _0xe8d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d3e[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xe8d3('0x0'));var _=require(_0xe8d3('0x1'));var moment=require(_0xe8d3('0x2'));function checkNameSurname(_0x802400,_0xc9cdb2,_0x14df08){var _0x269421='';if(!_[_0xe8d3('0x3')](_0xc9cdb2)&&_0xe8d3('0x4')===typeof _0xc9cdb2){_0x269421+=_0xc9cdb2;}if(!_[_0xe8d3('0x3')](_0x14df08)&&_0xe8d3('0x4')===typeof _0x14df08){_0x269421+='\x20'+_0x14df08;}if(_0x269421!==''){return _0x269421;}return _0x802400;}function Action(_0x33169b,_0x285a4c,_0x5ebe04){this[_0xe8d3('0x5')]=_0x33169b;this['uniqueid']=_0x5ebe04||undefined;this['name']=checkNameSurname(_0x285a4c[_0xe8d3('0x6')][_0xe8d3('0x7')],_0x285a4c[_0xe8d3('0x6')][_0xe8d3('0x8')],_0x285a4c[_0xe8d3('0x6')][_0xe8d3('0x9')]);this[_0xe8d3('0xa')]=_0x285a4c[_0xe8d3('0x6')][_0xe8d3('0x7')];this[_0xe8d3('0xb')]=_0x33169b['name'];this[_0xe8d3('0xc')]=_0x285a4c[_0xe8d3('0xc')]||![];this[_0xe8d3('0xd')]=_0x33169b[_0xe8d3('0xd')];this[_0xe8d3('0xe')]=_0x33169b[_0xe8d3('0xe')]||0x3;this['scheduledat']=_0x285a4c[_0xe8d3('0xf')];this[_0xe8d3('0x10')]=_0x285a4c[_0xe8d3('0x10')];this[_0xe8d3('0x11')]=_0x285a4c[_0xe8d3('0x11')];this['countnoanswerretry']=_0x285a4c[_0xe8d3('0x12')];this['countnosuchnumberretry']=_0x285a4c['countnosuchnumberretry'];this[_0xe8d3('0x13')]=_0x285a4c[_0xe8d3('0x13')];this[_0xe8d3('0x14')]=_0x285a4c[_0xe8d3('0x14')];this[_0xe8d3('0x15')]=_0x285a4c[_0xe8d3('0x15')];this[_0xe8d3('0x16')]=_0x285a4c[_0xe8d3('0x16')];this[_0xe8d3('0x17')]=_0x285a4c[_0xe8d3('0x17')];this[_0xe8d3('0x18')]=_0x285a4c[_0xe8d3('0x18')];this['UserId']=_0x285a4c[_0xe8d3('0x19')];this[_0xe8d3('0x1a')]=_0x285a4c[_0xe8d3('0x1a')];this['CampaignId']=_0x285a4c[_0xe8d3('0x1b')];this[_0xe8d3('0x1c')]=_0x285a4c['id'];this[_0xe8d3('0x1d')]=_0x285a4c[_0xe8d3('0x6')][_0xe8d3('0x8')]||'';this[_0xe8d3('0x1e')]=moment()[_0xe8d3('0x1f')](_0xe8d3('0x20'));this[_0xe8d3('0x21')]=_0x285a4c[_0xe8d3('0x21')];this[_0xe8d3('0x22')]=_0x285a4c[_0xe8d3('0x22')];this[_0xe8d3('0x23')]=_0x285a4c[_0xe8d3('0x23')];this[_0xe8d3('0x24')]=_0x285a4c[_0xe8d3('0x24')];this['originatecalleridnum']='';this[_0xe8d3('0x25')]='';}Action['prototype'][_0xe8d3('0x26')]=function(){return util[_0xe8d3('0x1f')]('\x22%s\x22\x20<%s>',this[_0xe8d3('0x27')],this[_0xe8d3('0x5')][_0xe8d3('0x28')]>0x0?this[_0xe8d3('0xa')][_0xe8d3('0x29')](this[_0xe8d3('0x5')]['dialCutDigit']):this[_0xe8d3('0xa')]);};Action[_0xe8d3('0x2a')][_0xe8d3('0x2b')]=function(){return this['queue'];};module[_0xe8d3('0x2c')]=Action;
\ No newline at end of file
index d46d722..40923e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd82f=['state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xd82f,0x7b));var _0xfd82=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xd82f[_0x4e676e];return _0x336a3c;};'use strict';var util=require(_0xfd82('0x0'));var _=require(_0xfd82('0x1'));var moment=require(_0xfd82('0x2'));function getSeconds(_0x27e9ef,_0x4ba3a8){var _0xa3e640=moment(_0x27e9ef)[_0xfd82('0x3')](0x0);var _0x5a4d9c=moment(_0x4ba3a8)[_0xfd82('0x3')](0x0);return _0xa3e640[_0xfd82('0x4')](_0x5a4d9c,_0xfd82('0x5'));}function AgentComplete(_0x2d2735,_0x41f7a8){this[_0xfd82('0x6')]=0x4;this[_0xfd82('0x7')]=_0xfd82('0x8');this[_0xfd82('0x9')]=_0x2d2735['scheduledat'];this[_0xfd82('0xa')]=_0x2d2735[_0xfd82('0xa')];this['campaigntype']=_0x2d2735[_0xfd82('0xa')]==='outbound'?_0xfd82('0xb'):_0x2d2735[_0xfd82('0xa')];this[_0xfd82('0xc')]=_0x2d2735[_0xfd82('0xc')];this[_0xfd82('0xd')]=_0x2d2735[_0xfd82('0xd')];this['countnoanswerretry']=_0x2d2735[_0xfd82('0xe')];this['countglobal']=_0x2d2735['countbusyretry']+_0x2d2735[_0xfd82('0xd')]+_0x2d2735[_0xfd82('0xe')]+_0x2d2735[_0xfd82('0xf')]+_0x2d2735[_0xfd82('0x10')]+_0x2d2735[_0xfd82('0x11')]+_0x2d2735['countmachineretry']+_0x2d2735[_0xfd82('0x12')];this['countnosuchnumberretry']=_0x2d2735[_0xfd82('0xf')];this['countdropretry']=_0x2d2735[_0xfd82('0x10')];this['countabandonedretry']=_0x2d2735[_0xfd82('0x11')];this[_0xfd82('0x13')]=_0x2d2735[_0xfd82('0x13')];this[_0xfd82('0x12')]=_0x2d2735[_0xfd82('0x12')];this[_0xfd82('0x14')]=_0x41f7a8[_0xfd82('0x14')];this['calleridname']=_0x2d2735['name'];this[_0xfd82('0x15')]=_0x2d2735[_0xfd82('0x16')];this[_0xfd82('0x17')]=_0x2d2735[_0xfd82('0x17')];this[_0xfd82('0x18')]=_0x2d2735[_0xfd82('0x18')];this['answertime']=_0x2d2735[_0xfd82('0x19')];this[_0xfd82('0x1a')]=moment()[_0xfd82('0x1b')](_0xfd82('0x1c'));this['ringtime']=getSeconds(_0x2d2735['responsetime'],_0x2d2735[_0xfd82('0x17')]);this['holdtime']=getSeconds(_0x2d2735['answertime'],_0x2d2735[_0xfd82('0x18')]);this[_0xfd82('0x1d')]=getSeconds(this['endtime'],_0x2d2735[_0xfd82('0x19')]);this[_0xfd82('0xb')]=_0x41f7a8['queue'];this['membername']=_0x41f7a8['membername'];this[_0xfd82('0x1e')]=_0x41f7a8[_0xfd82('0x1e')];this[_0xfd82('0x1f')]=_0x2d2735[_0xfd82('0x1f')];this['callbackuniqueid']=_0x2d2735[_0xfd82('0x20')];this[_0xfd82('0x21')]=_0x2d2735['callbackat'];this[_0xfd82('0x22')]=_0x2d2735['recallme'];this[_0xfd82('0x23')]=_0x2d2735[_0xfd82('0x23')];this[_0xfd82('0x24')]=_0x2d2735[_0xfd82('0x24')];this[_0xfd82('0x25')]=_0x2d2735[_0xfd82('0x25')];this[_0xfd82('0x26')]=_0x2d2735[_0xfd82('0x26')];this[_0xfd82('0x27')]=_0x2d2735['CampaignId'];this[_0xfd82('0x28')]=_0x2d2735[_0xfd82('0x28')]||'';this[_0xfd82('0x29')]=_0x2d2735[_0xfd82('0x29')]||'';}module[_0xfd82('0x2a')]=AgentComplete;
\ No newline at end of file
+var _0x52ac=['countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','util','lodash','milliseconds','diff','statedesc','Answer','campaigntype','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0xf69843,_0x238ffe){var _0x333685=function(_0x37e80e){while(--_0x37e80e){_0xf69843['push'](_0xf69843['shift']());}};_0x333685(++_0x238ffe);}(_0x52ac,0xcd));var _0xc52a=function(_0x8f9ae2,_0x592e96){_0x8f9ae2=_0x8f9ae2-0x0;var _0x39e0e3=_0x52ac[_0x8f9ae2];return _0x39e0e3;};'use strict';var util=require(_0xc52a('0x0'));var _=require(_0xc52a('0x1'));var moment=require('moment');function getSeconds(_0x1a706f,_0x8d2b9b){var _0x2c3c92=moment(_0x1a706f)['milliseconds'](0x0);var _0x550e83=moment(_0x8d2b9b)[_0xc52a('0x2')](0x0);return _0x2c3c92[_0xc52a('0x3')](_0x550e83,'seconds');}function AgentComplete(_0x177fd8,_0x1beff4){this['state']=0x4;this[_0xc52a('0x4')]=_0xc52a('0x5');this['scheduledat']=_0x177fd8['scheduledat'];this['type']=_0x177fd8['type'];this[_0xc52a('0x6')]=_0x177fd8[_0xc52a('0x7')]===_0xc52a('0x8')?_0xc52a('0x9'):_0x177fd8[_0xc52a('0x7')];this[_0xc52a('0xa')]=_0x177fd8[_0xc52a('0xa')];this[_0xc52a('0xb')]=_0x177fd8['countcongestionretry'];this[_0xc52a('0xc')]=_0x177fd8[_0xc52a('0xc')];this[_0xc52a('0xd')]=_0x177fd8[_0xc52a('0xa')]+_0x177fd8[_0xc52a('0xb')]+_0x177fd8['countnoanswerretry']+_0x177fd8[_0xc52a('0xe')]+_0x177fd8[_0xc52a('0xf')]+_0x177fd8[_0xc52a('0x10')]+_0x177fd8['countmachineretry']+_0x177fd8[_0xc52a('0x11')];this['countnosuchnumberretry']=_0x177fd8[_0xc52a('0xe')];this[_0xc52a('0xf')]=_0x177fd8[_0xc52a('0xf')];this[_0xc52a('0x10')]=_0x177fd8[_0xc52a('0x10')];this[_0xc52a('0x12')]=_0x177fd8[_0xc52a('0x12')];this[_0xc52a('0x11')]=_0x177fd8[_0xc52a('0x11')];this[_0xc52a('0x13')]=_0x1beff4[_0xc52a('0x13')];this[_0xc52a('0x14')]=_0x177fd8[_0xc52a('0x15')];this[_0xc52a('0x16')]=_0x177fd8[_0xc52a('0x17')];this[_0xc52a('0x18')]=_0x177fd8[_0xc52a('0x18')];this['responsetime']=_0x177fd8[_0xc52a('0x19')];this[_0xc52a('0x1a')]=_0x177fd8['answertime'];this[_0xc52a('0x1b')]=moment()[_0xc52a('0x1c')](_0xc52a('0x1d'));this[_0xc52a('0x1e')]=getSeconds(_0x177fd8[_0xc52a('0x19')],_0x177fd8['starttime']);this[_0xc52a('0x1f')]=getSeconds(_0x177fd8[_0xc52a('0x1a')],_0x177fd8[_0xc52a('0x19')]);this[_0xc52a('0x20')]=getSeconds(this[_0xc52a('0x1b')],_0x177fd8[_0xc52a('0x1a')]);this[_0xc52a('0x9')]=_0x1beff4[_0xc52a('0x9')];this['membername']=_0x1beff4[_0xc52a('0x21')];this['reason']=_0x1beff4[_0xc52a('0x22')];this[_0xc52a('0x23')]=_0x177fd8[_0xc52a('0x23')];this[_0xc52a('0x24')]=_0x177fd8[_0xc52a('0x24')];this['callbackat']=_0x177fd8[_0xc52a('0x25')];this['recallme']=_0x177fd8[_0xc52a('0x26')];this[_0xc52a('0x27')]=_0x177fd8[_0xc52a('0x27')];this[_0xc52a('0x28')]=_0x177fd8[_0xc52a('0x28')];this[_0xc52a('0x29')]=_0x177fd8[_0xc52a('0x29')];this['VoiceQueueId']=_0x177fd8['VoiceQueueId'];this[_0xc52a('0x2a')]=_0x177fd8[_0xc52a('0x2a')];this[_0xc52a('0x2b')]=_0x177fd8[_0xc52a('0x2b')]||'';this['originatecalleridname']=_0x177fd8['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 64c0c8c..7b55db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f42=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','diff','uniqueid'];(function(_0x280c4b,_0xfe785d){var _0x2a5e90=function(_0x37db79){while(--_0x37db79){_0x280c4b['push'](_0x280c4b['shift']());}};_0x2a5e90(++_0xfe785d);}(_0x7f42,0x1dd));var _0x27f4=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x7f42[_0x178e48];return _0x440d7e;};'use strict';var util=require(_0x27f4('0x0'));var _=require('lodash');var moment=require(_0x27f4('0x1'));function getSeconds(_0xd1035c,_0x48e553){var _0x66342a=moment(_0xd1035c)['milliseconds'](0x0);var _0x10627e=moment(_0x48e553)['milliseconds'](0x0);return _0x66342a[_0x27f4('0x2')](_0x10627e,'seconds');}function Final(_0xe8eabe){this['uniqueid']=_0xe8eabe[_0x27f4('0x3')];this[_0x27f4('0x4')]=_0xe8eabe[_0x27f4('0x4')];this[_0x27f4('0x5')]=_0xe8eabe[_0x27f4('0x5')];this[_0x27f4('0x6')]=_0xe8eabe[_0x27f4('0x5')]===_0x27f4('0x7')?_0x27f4('0x8'):_0xe8eabe[_0x27f4('0x5')];this[_0x27f4('0x9')]=_0xe8eabe[_0x27f4('0x9')];this[_0x27f4('0xa')]=_0xe8eabe[_0x27f4('0xa')];this[_0x27f4('0xb')]=_0xe8eabe[_0x27f4('0xb')];this[_0x27f4('0xc')]=_0xe8eabe[_0x27f4('0x9')]+_0xe8eabe['countcongestionretry']+_0xe8eabe['countnoanswerretry']+_0xe8eabe[_0x27f4('0xd')]+_0xe8eabe[_0x27f4('0xe')]+_0xe8eabe[_0x27f4('0xf')]+_0xe8eabe[_0x27f4('0x10')]+_0xe8eabe[_0x27f4('0x11')];this[_0x27f4('0xd')]=_0xe8eabe[_0x27f4('0xd')];this[_0x27f4('0xe')]=_0xe8eabe['countdropretry'];this['countabandonedretry']=_0xe8eabe[_0x27f4('0xf')];this[_0x27f4('0x10')]=_0xe8eabe[_0x27f4('0x10')];this[_0x27f4('0x11')]=_0xe8eabe['countagentrejectretry'];this[_0x27f4('0x8')]=_0xe8eabe[_0x27f4('0x8')];this[_0x27f4('0x12')]=_0xe8eabe['calleridname'];this[_0x27f4('0x13')]=_0xe8eabe[_0x27f4('0x13')];this[_0x27f4('0x14')]=_0xe8eabe['starttime'];this[_0x27f4('0x15')]=_0xe8eabe[_0x27f4('0x15')];this['endtime']=_0xe8eabe['responsetime'];this[_0x27f4('0x16')]=_0xe8eabe[_0x27f4('0x16')]||0x0;this[_0x27f4('0x17')]=_0xe8eabe[_0x27f4('0x17')]||0x0;this[_0x27f4('0x18')]=_0xe8eabe[_0x27f4('0x18')]||0x0;this[_0x27f4('0x19')]=_0xe8eabe[_0x27f4('0x19')];this[_0x27f4('0x1a')]=_0xe8eabe[_0x27f4('0x1a')];this[_0x27f4('0x1b')]=_0xe8eabe[_0x27f4('0x1b')];this[_0x27f4('0x1c')]=_0xe8eabe[_0x27f4('0x1c')];this[_0x27f4('0x1d')]=_0xe8eabe['ContactId'];this[_0x27f4('0x1e')]=_0xe8eabe[_0x27f4('0x1e')];this[_0x27f4('0x1f')]=_0xe8eabe[_0x27f4('0x1f')];this[_0x27f4('0x20')]=_0xe8eabe[_0x27f4('0x20')];this[_0x27f4('0x21')]=_0xe8eabe[_0x27f4('0x21')];this[_0x27f4('0x22')]=_0xe8eabe[_0x27f4('0x22')]||'';this[_0x27f4('0x23')]=_0xe8eabe[_0x27f4('0x23')]||'';}module[_0x27f4('0x24')]=Final;
\ No newline at end of file
+var _0x2494=['countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry'];(function(_0x58bc2a,_0x5e643b){var _0x48c2e0=function(_0x49aaf2){while(--_0x49aaf2){_0x58bc2a['push'](_0x58bc2a['shift']());}};_0x48c2e0(++_0x5e643b);}(_0x2494,0x82));var _0x4249=function(_0x573ce4,_0x23105a){_0x573ce4=_0x573ce4-0x0;var _0x593218=_0x2494[_0x573ce4];return _0x593218;};'use strict';var util=require(_0x4249('0x0'));var _=require('lodash');var moment=require(_0x4249('0x1'));function getSeconds(_0x3072d7,_0x3cdee4){var _0x3f9dc6=moment(_0x3072d7)[_0x4249('0x2')](0x0);var _0x3fbecf=moment(_0x3cdee4)['milliseconds'](0x0);return _0x3f9dc6['diff'](_0x3fbecf,_0x4249('0x3'));}function Final(_0x49ac67){this[_0x4249('0x4')]=_0x49ac67[_0x4249('0x4')];this[_0x4249('0x5')]=_0x49ac67['scheduledat'];this[_0x4249('0x6')]=_0x49ac67[_0x4249('0x6')];this[_0x4249('0x7')]=_0x49ac67['type']==='outbound'?_0x4249('0x8'):_0x49ac67[_0x4249('0x6')];this[_0x4249('0x9')]=_0x49ac67[_0x4249('0x9')];this[_0x4249('0xa')]=_0x49ac67[_0x4249('0xa')];this[_0x4249('0xb')]=_0x49ac67['countnoanswerretry'];this['countglobal']=_0x49ac67[_0x4249('0x9')]+_0x49ac67['countcongestionretry']+_0x49ac67[_0x4249('0xb')]+_0x49ac67[_0x4249('0xc')]+_0x49ac67['countdropretry']+_0x49ac67[_0x4249('0xd')]+_0x49ac67[_0x4249('0xe')]+_0x49ac67['countagentrejectretry'];this[_0x4249('0xc')]=_0x49ac67[_0x4249('0xc')];this[_0x4249('0xf')]=_0x49ac67[_0x4249('0xf')];this[_0x4249('0xd')]=_0x49ac67[_0x4249('0xd')];this['countmachineretry']=_0x49ac67[_0x4249('0xe')];this[_0x4249('0x10')]=_0x49ac67['countagentrejectretry'];this[_0x4249('0x8')]=_0x49ac67['queue'];this['calleridname']=_0x49ac67['calleridname'];this[_0x4249('0x11')]=_0x49ac67[_0x4249('0x11')];this[_0x4249('0x12')]=_0x49ac67[_0x4249('0x12')];this[_0x4249('0x13')]=_0x49ac67['responsetime'];this['endtime']=_0x49ac67[_0x4249('0x13')];this[_0x4249('0x14')]=_0x49ac67[_0x4249('0x14')]||0x0;this['holdtime']=_0x49ac67[_0x4249('0x15')]||0x0;this[_0x4249('0x16')]=_0x49ac67['talktime']||0x0;this[_0x4249('0x17')]=_0x49ac67['callback'];this[_0x4249('0x18')]=_0x49ac67[_0x4249('0x18')];this[_0x4249('0x19')]=_0x49ac67[_0x4249('0x19')];this[_0x4249('0x1a')]=_0x49ac67[_0x4249('0x1a')];this[_0x4249('0x1b')]=_0x49ac67[_0x4249('0x1b')];this[_0x4249('0x1c')]=_0x49ac67[_0x4249('0x1c')];this[_0x4249('0x1d')]=_0x49ac67[_0x4249('0x1d')];this[_0x4249('0x1e')]=_0x49ac67[_0x4249('0x1e')];this[_0x4249('0x1f')]=_0x49ac67[_0x4249('0x1f')];this[_0x4249('0x20')]=_0x49ac67[_0x4249('0x20')]||'';this[_0x4249('0x21')]=_0x49ac67[_0x4249('0x21')]||'';}module[_0x4249('0x22')]=Final;
\ No newline at end of file
index 4b9f3de..32a2364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a1=['scheduledat','type','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','util','lodash','milliseconds','diff','seconds','state','statedesc'];(function(_0x46cb69,_0x20f2b5){var _0x1386fa=function(_0x13afa1){while(--_0x13afa1){_0x46cb69['push'](_0x46cb69['shift']());}};_0x1386fa(++_0x20f2b5);}(_0x37a1,0x173));var _0x137a=function(_0x38ff14,_0x2ae181){_0x38ff14=_0x38ff14-0x0;var _0x13c68a=_0x37a1[_0x38ff14];return _0x13c68a;};'use strict';var util=require(_0x137a('0x0'));var _=require(_0x137a('0x1'));var moment=require('moment');function getSeconds(_0x54bc30,_0x358de9){var _0x59f416=moment(_0x54bc30)[_0x137a('0x2')](0x0);var _0x4bbd68=moment(_0x358de9)[_0x137a('0x2')](0x0);return _0x59f416[_0x137a('0x3')](_0x4bbd68,_0x137a('0x4'));}function Hangup(_0x38de10,_0x5acb1a){this[_0x137a('0x5')]=0x4;this[_0x137a('0x6')]='Answer';this[_0x137a('0x7')]=_0x38de10[_0x137a('0x7')];this['type']=_0x38de10[_0x137a('0x8')];this['campaigntype']=_0x38de10[_0x137a('0x8')]==='outbound'?_0x137a('0x9'):_0x38de10[_0x137a('0x8')];this['countbusyretry']=_0x38de10[_0x137a('0xa')];this['countcongestionretry']=_0x38de10['countcongestionretry'];this[_0x137a('0xb')]=_0x38de10[_0x137a('0xb')];this[_0x137a('0xc')]=_0x38de10[_0x137a('0xa')]+_0x38de10[_0x137a('0xd')]+_0x38de10[_0x137a('0xb')]+_0x38de10[_0x137a('0xe')]+_0x38de10['countdropretry']+_0x38de10[_0x137a('0xf')]+_0x38de10[_0x137a('0x10')]+_0x38de10[_0x137a('0x11')];this[_0x137a('0xe')]=_0x38de10['countnosuchnumberretry'];this[_0x137a('0x12')]=_0x38de10[_0x137a('0x12')];this[_0x137a('0xf')]=_0x38de10['countabandonedretry'];this[_0x137a('0x10')]=_0x38de10[_0x137a('0x10')];this[_0x137a('0x11')]=_0x38de10[_0x137a('0x11')];this[_0x137a('0x13')]=_0x5acb1a[_0x137a('0x13')];this[_0x137a('0x14')]=_0x38de10[_0x137a('0x15')];this[_0x137a('0x16')]=_0x38de10[_0x137a('0x17')];this[_0x137a('0x18')]=_0x38de10[_0x137a('0x18')];this['responsetime']=_0x38de10[_0x137a('0x19')];this[_0x137a('0x1a')]=moment()['format'](_0x137a('0x1b'));this[_0x137a('0x1c')]=getSeconds(_0x38de10[_0x137a('0x19')],_0x38de10[_0x137a('0x18')]);this[_0x137a('0x1d')]=0x0;this[_0x137a('0x1e')]=getSeconds(this['endtime'],_0x38de10[_0x137a('0x19')]);this[_0x137a('0x9')]=_0x38de10[_0x137a('0x9')];this['membername']=_0x137a('0x1f');this[_0x137a('0x20')]=_0x5acb1a['cause-txt'];this[_0x137a('0x21')]=_0x38de10[_0x137a('0x21')];this[_0x137a('0x22')]=_0x38de10[_0x137a('0x22')];this[_0x137a('0x23')]=_0x38de10['callbackat'];this[_0x137a('0x24')]=_0x38de10[_0x137a('0x24')];this[_0x137a('0x25')]=_0x38de10[_0x137a('0x25')];this['ListId']=_0x38de10[_0x137a('0x26')];this[_0x137a('0x27')]=_0x38de10[_0x137a('0x27')];this[_0x137a('0x28')]=_0x38de10['VoiceQueueId'];this['CampaignId']=_0x38de10['CampaignId'];}module[_0x137a('0x29')]=Hangup;
\ No newline at end of file
+var _0x40f1=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','moment','milliseconds','diff','state','statedesc','Answer','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme'];(function(_0x4f6208,_0x33256d){var _0x27150a=function(_0x17979d){while(--_0x17979d){_0x4f6208['push'](_0x4f6208['shift']());}};_0x27150a(++_0x33256d);}(_0x40f1,0x1c7));var _0x140f=function(_0xf39eb0,_0x40a733){_0xf39eb0=_0xf39eb0-0x0;var _0x417138=_0x40f1[_0xf39eb0];return _0x417138;};'use strict';var util=require(_0x140f('0x0'));var _=require('lodash');var moment=require(_0x140f('0x1'));function getSeconds(_0x1fba87,_0x282121){var _0x4925a8=moment(_0x1fba87)['milliseconds'](0x0);var _0x338d08=moment(_0x282121)[_0x140f('0x2')](0x0);return _0x4925a8[_0x140f('0x3')](_0x338d08,'seconds');}function Hangup(_0x3c06ce,_0x3ff2d5){this[_0x140f('0x4')]=0x4;this[_0x140f('0x5')]=_0x140f('0x6');this[_0x140f('0x7')]=_0x3c06ce[_0x140f('0x7')];this[_0x140f('0x8')]=_0x3c06ce[_0x140f('0x8')];this['campaigntype']=_0x3c06ce[_0x140f('0x8')]===_0x140f('0x9')?_0x140f('0xa'):_0x3c06ce[_0x140f('0x8')];this[_0x140f('0xb')]=_0x3c06ce[_0x140f('0xb')];this[_0x140f('0xc')]=_0x3c06ce[_0x140f('0xc')];this[_0x140f('0xd')]=_0x3c06ce[_0x140f('0xd')];this[_0x140f('0xe')]=_0x3c06ce['countbusyretry']+_0x3c06ce[_0x140f('0xc')]+_0x3c06ce[_0x140f('0xd')]+_0x3c06ce['countnosuchnumberretry']+_0x3c06ce['countdropretry']+_0x3c06ce[_0x140f('0xf')]+_0x3c06ce[_0x140f('0x10')]+_0x3c06ce[_0x140f('0x11')];this[_0x140f('0x12')]=_0x3c06ce[_0x140f('0x12')];this[_0x140f('0x13')]=_0x3c06ce[_0x140f('0x13')];this[_0x140f('0xf')]=_0x3c06ce[_0x140f('0xf')];this['countmachineretry']=_0x3c06ce['countmachineretry'];this['countagentrejectretry']=_0x3c06ce[_0x140f('0x11')];this[_0x140f('0x14')]=_0x3ff2d5['uniqueid'];this['calleridname']=_0x3c06ce[_0x140f('0x15')];this[_0x140f('0x16')]=_0x3c06ce[_0x140f('0x17')];this[_0x140f('0x18')]=_0x3c06ce[_0x140f('0x18')];this[_0x140f('0x19')]=_0x3c06ce[_0x140f('0x19')];this[_0x140f('0x1a')]=moment()[_0x140f('0x1b')](_0x140f('0x1c'));this[_0x140f('0x1d')]=getSeconds(_0x3c06ce[_0x140f('0x19')],_0x3c06ce[_0x140f('0x18')]);this[_0x140f('0x1e')]=0x0;this[_0x140f('0x1f')]=getSeconds(this[_0x140f('0x1a')],_0x3c06ce[_0x140f('0x19')]);this[_0x140f('0xa')]=_0x3c06ce[_0x140f('0xa')];this[_0x140f('0x20')]=_0x140f('0x21');this[_0x140f('0x22')]=_0x3ff2d5[_0x140f('0x23')];this[_0x140f('0x24')]=_0x3c06ce[_0x140f('0x24')];this[_0x140f('0x25')]=_0x3c06ce['callbackuniqueid'];this[_0x140f('0x26')]=_0x3c06ce[_0x140f('0x26')];this[_0x140f('0x27')]=_0x3c06ce[_0x140f('0x27')];this['ContactId']=_0x3c06ce[_0x140f('0x28')];this['ListId']=_0x3c06ce[_0x140f('0x29')];this[_0x140f('0x2a')]=_0x3c06ce[_0x140f('0x2a')];this['VoiceQueueId']=_0x3c06ce[_0x140f('0x2b')];this[_0x140f('0x2c')]=_0x3c06ce[_0x140f('0x2c')];}module['exports']=Hangup;
\ No newline at end of file
index f04313d..acb87ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7b=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','endtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x1cfb6a,_0x51c2b7){var _0x2fd585=function(_0x3ff485){while(--_0x3ff485){_0x1cfb6a['push'](_0x1cfb6a['shift']());}};_0x2fd585(++_0x51c2b7);}(_0x9e7b,0x1cd));var _0xb9e7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9e7b[_0x59ee6f];return _0x4c0979;};'use strict';var util=require(_0xb9e7('0x0'));var _=require(_0xb9e7('0x1'));var moment=require(_0xb9e7('0x2'));function getSeconds(_0x31090b,_0x93b214){var _0x39c692=moment(_0x31090b)[_0xb9e7('0x3')](0x0);var _0x230a24=moment(_0x93b214)['milliseconds'](0x0);return _0x39c692[_0xb9e7('0x4')](_0x230a24,_0xb9e7('0x5'));}function History(_0x1788aa){this['uniqueid']=_0x1788aa[_0xb9e7('0x6')];this['scheduledat']=_0x1788aa[_0xb9e7('0x7')]||undefined;this['type']=_0x1788aa[_0xb9e7('0x8')];this[_0xb9e7('0x9')]=_0x1788aa[_0xb9e7('0x8')]==='outbound'?_0xb9e7('0xa'):_0x1788aa[_0xb9e7('0x8')];this[_0xb9e7('0xb')]=_0x1788aa[_0xb9e7('0xb')];this[_0xb9e7('0xc')]=_0x1788aa[_0xb9e7('0xc')];this['countnoanswerretry']=_0x1788aa[_0xb9e7('0xd')];this[_0xb9e7('0xe')]=_0x1788aa[_0xb9e7('0xb')]+_0x1788aa[_0xb9e7('0xc')]+_0x1788aa['countnoanswerretry']+_0x1788aa[_0xb9e7('0xf')]+_0x1788aa[_0xb9e7('0x10')]+_0x1788aa['countabandonedretry']+_0x1788aa[_0xb9e7('0x11')]+_0x1788aa['countagentrejectretry'];this[_0xb9e7('0xf')]=_0x1788aa[_0xb9e7('0xf')];this[_0xb9e7('0x10')]=_0x1788aa[_0xb9e7('0x10')];this[_0xb9e7('0x12')]=_0x1788aa['countabandonedretry'];this[_0xb9e7('0x11')]=_0x1788aa[_0xb9e7('0x11')];this[_0xb9e7('0x13')]=_0x1788aa[_0xb9e7('0x13')];this[_0xb9e7('0xa')]=_0x1788aa[_0xb9e7('0xa')];this[_0xb9e7('0x14')]=_0x1788aa[_0xb9e7('0x15')];this['calleridnum']=_0x1788aa[_0xb9e7('0x16')];this[_0xb9e7('0x17')]=_0x1788aa[_0xb9e7('0x17')];this[_0xb9e7('0x18')]=_0x1788aa['responsetime'];this[_0xb9e7('0x19')]=_0x1788aa[_0xb9e7('0x18')];this['ringtime']=getSeconds(_0x1788aa[_0xb9e7('0x18')],_0x1788aa[_0xb9e7('0x17')]);this['holdtime']=0x0;this['talktime']=0x0;this[_0xb9e7('0x1a')]=_0x1788aa[_0xb9e7('0x1a')];this[_0xb9e7('0x1b')]=_0x1788aa['callbackuniqueid'];this[_0xb9e7('0x1c')]=_0x1788aa['callbackat'];this[_0xb9e7('0x1d')]=_0x1788aa[_0xb9e7('0x1d')];this['ContactId']=_0x1788aa[_0xb9e7('0x1e')];this[_0xb9e7('0x1f')]=_0x1788aa[_0xb9e7('0x1f')];this[_0xb9e7('0x20')]=_0x1788aa[_0xb9e7('0x20')];this[_0xb9e7('0x21')]=_0x1788aa[_0xb9e7('0x21')];this[_0xb9e7('0x22')]=_0x1788aa[_0xb9e7('0x22')];this[_0xb9e7('0x23')]=_0x1788aa['originatecalleridnum']||'';this[_0xb9e7('0x24')]=_0x1788aa['originatecalleridname']||'';}module[_0xb9e7('0x25')]=History;
\ No newline at end of file
+var _0x2723=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','calleridname','calleridnum','number','starttime','responsetime','endtime','ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId'];(function(_0x50b750,_0xe5817b){var _0x1b60a8=function(_0x23a6e8){while(--_0x23a6e8){_0x50b750['push'](_0x50b750['shift']());}};_0x1b60a8(++_0xe5817b);}(_0x2723,0xcc));var _0x3272=function(_0x2e6697,_0x32e8e1){_0x2e6697=_0x2e6697-0x0;var _0x598482=_0x2723[_0x2e6697];return _0x598482;};'use strict';var util=require(_0x3272('0x0'));var _=require(_0x3272('0x1'));var moment=require(_0x3272('0x2'));function getSeconds(_0x2ec7c2,_0x69c4a1){var _0x222e1b=moment(_0x2ec7c2)['milliseconds'](0x0);var _0x1b9f9c=moment(_0x69c4a1)[_0x3272('0x3')](0x0);return _0x222e1b[_0x3272('0x4')](_0x1b9f9c,_0x3272('0x5'));}function History(_0xd85b07){this[_0x3272('0x6')]=_0xd85b07[_0x3272('0x6')];this[_0x3272('0x7')]=_0xd85b07[_0x3272('0x7')]||undefined;this[_0x3272('0x8')]=_0xd85b07[_0x3272('0x8')];this[_0x3272('0x9')]=_0xd85b07[_0x3272('0x8')]===_0x3272('0xa')?_0x3272('0xb'):_0xd85b07[_0x3272('0x8')];this[_0x3272('0xc')]=_0xd85b07[_0x3272('0xc')];this[_0x3272('0xd')]=_0xd85b07[_0x3272('0xd')];this[_0x3272('0xe')]=_0xd85b07[_0x3272('0xe')];this[_0x3272('0xf')]=_0xd85b07[_0x3272('0xc')]+_0xd85b07[_0x3272('0xd')]+_0xd85b07['countnoanswerretry']+_0xd85b07['countnosuchnumberretry']+_0xd85b07[_0x3272('0x10')]+_0xd85b07[_0x3272('0x11')]+_0xd85b07[_0x3272('0x12')]+_0xd85b07['countagentrejectretry'];this[_0x3272('0x13')]=_0xd85b07['countnosuchnumberretry'];this[_0x3272('0x10')]=_0xd85b07[_0x3272('0x10')];this[_0x3272('0x11')]=_0xd85b07[_0x3272('0x11')];this[_0x3272('0x12')]=_0xd85b07['countmachineretry'];this[_0x3272('0x14')]=_0xd85b07['countagentrejectretry'];this['queue']=_0xd85b07['queue'];this[_0x3272('0x15')]=_0xd85b07['name'];this[_0x3272('0x16')]=_0xd85b07[_0x3272('0x17')];this[_0x3272('0x18')]=_0xd85b07[_0x3272('0x18')];this[_0x3272('0x19')]=_0xd85b07[_0x3272('0x19')];this[_0x3272('0x1a')]=_0xd85b07['responsetime'];this[_0x3272('0x1b')]=getSeconds(_0xd85b07[_0x3272('0x19')],_0xd85b07[_0x3272('0x18')]);this[_0x3272('0x1c')]=0x0;this['talktime']=0x0;this['callback']=_0xd85b07[_0x3272('0x1d')];this[_0x3272('0x1e')]=_0xd85b07[_0x3272('0x1e')];this[_0x3272('0x1f')]=_0xd85b07[_0x3272('0x1f')];this[_0x3272('0x20')]=_0xd85b07[_0x3272('0x20')];this[_0x3272('0x21')]=_0xd85b07[_0x3272('0x21')];this[_0x3272('0x22')]=_0xd85b07[_0x3272('0x22')];this['UserId']=_0xd85b07['UserId'];this[_0x3272('0x23')]=_0xd85b07[_0x3272('0x23')];this[_0x3272('0x24')]=_0xd85b07['CampaignId'];this[_0x3272('0x25')]=_0xd85b07[_0x3272('0x25')]||'';this[_0x3272('0x26')]=_0xd85b07[_0x3272('0x26')]||'';}module[_0x3272('0x27')]=History;
\ No newline at end of file
index f83d60f..a80af67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd5=['custom:agentnosuchnumber','nosuchnumber','[syncAgentComplete][createHistory][0]','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','dialBusyMaxRetry','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','reason','Success','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','Dropped\x20calls\x20day','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','actionOriginate','scheduledat','Agent','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','maxNumberOriginate','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','dialOrderByScheduledAt','ACTIVE','RUNNING','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','util','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','roundrobin','prototype','enqueue','finally','sequence','preview','campaigns','agents','trunks','contactsId','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','bind','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','queuestatuscomplete','loopClearZombieChannels','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','name','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','isEmpty','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','emit','type','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','talking','unmanaged','abandoned','waiting','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCallToSecond','erlangAbandonmentRate','Trunk','callerid','format','voice_queue:save','ivr','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20progressive','handlePredictive','outbound','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','RESCHEDULED_CONTACTS','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','endtime','starttime','clearZombieChannels','uniqueId','[uniqueid]','isNil','Action','status','channel','catch','No\x20such\x20channel','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','isTrunkReachable','active','reachable','SIP/%s','unmonitored','saveInDb','syncVarSet','uniqueid','variable','amdstatus','exten','dialAMDActive','HANGUP','voiceQueues','statedesc','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','value','MACHINE','Machine','countmachineretry','countglobal','countbusyretry','countcongestionretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','YYYY-MM-DD\x20HH:mm:ss','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countnoanswerretry','countnosuchnumberretry','countdropretry','dialGlobalMaxRetry','[rescheduleContact][Machine]','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','cause-txt','syncAgentComplete','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','agiafterat','dialDropMaxRetry','add','dialDropRetryFrequency','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','minutes','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actions','syncQueueMember','actionid','locked','paused','stateinterface','rrmemory','push','idHopper','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','length','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','unlockRR','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','interval','content','indexOf','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialActive','dialTimezone','[syncQueueSummary]','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','random','match','originate','voiceQueue\x20is\x20undefine','phone','Contact','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','getCaller','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','tags','createdAt','updatedAt','%s%s','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialCutDigit','substring','trim','from-sip','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber'];(function(_0x54640d,_0x396efd){var _0x573d4c=function(_0x4828be){while(--_0x4828be){_0x54640d['push'](_0x54640d['shift']());}};_0x573d4c(++_0x396efd);}(_0x3dd5,0x73));var _0x53dd=function(_0x2253bb,_0x55cb14){_0x2253bb=_0x2253bb-0x0;var _0x5e07b6=_0x3dd5[_0x2253bb];return _0x5e07b6;};'use strict';var util=require(_0x53dd('0x0'));var _=require('lodash');var BPromise=require(_0x53dd('0x1'));var uuid=require(_0x53dd('0x2'));var moment=require(_0x53dd('0x3'));var rr=require('rr');var md5=require(_0x53dd('0x4'));var Redis=require(_0x53dd('0x5'));var ut=require(_0x53dd('0x6'));var config=require(_0x53dd('0x7'));var logger=require(_0x53dd('0x8'))(_0x53dd('0x9'));var loggerBooked=require('../../../config/logger')(_0x53dd('0xa'));var loggerPredictive=require(_0x53dd('0x8'))(_0x53dd('0xb'));var loggerPredictiveCalls=require(_0x53dd('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0x53dd('0xc'));var ami=require('../ami');config[_0x53dd('0xd')]=_[_0x53dd('0xe')](config[_0x53dd('0xd')],{'host':_0x53dd('0xf'),'port':0x18eb});var io=require(_0x53dd('0x10'))(new Redis(config['redis']));var cmHopper=require(_0x53dd('0x11'));var cmHopperHistory=require(_0x53dd('0x12'));var cmHopperBlack=require(_0x53dd('0x13'));var voiceQueueRt=require(_0x53dd('0x14'));var Action=require('./action');var History=require('./history');var Final=require(_0x53dd('0x15'));var AgentComplete=require(_0x53dd('0x16'));var QueueCallerAbandon=require(_0x53dd('0x17'));var Hangup=require('./hangup');var ipAgi=process[_0x53dd('0x18')][_0x53dd('0x19')]||_0x53dd('0x1a');var strategy={'rrmemory':'rrmemory','roundrobin':_0x53dd('0x1b')};var Sequence=function(){};Sequence[_0x53dd('0x1c')][_0x53dd('0x1d')]=function(_0x5c0dda){this['tail']=this['tail']?this['tail'][_0x53dd('0x1e')](_0x5c0dda):_0x5c0dda();};function Dialer(_0x4449e1,_0xef43a7){this[_0x53dd('0x1f')]=new Sequence();this[_0x53dd('0x20')]=_0xef43a7;this['voiceQueues']=_0x4449e1['voiceQueues'];this[_0x53dd('0x21')]=_0x4449e1[_0x53dd('0x21')];this[_0x53dd('0x22')]=_0x4449e1[_0x53dd('0x22')];this[_0x53dd('0x23')]=_0x4449e1['trunks'];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this['channels']={};this['actions']={};this[_0x53dd('0x24')]={};this['uniqueId']={};this['optionPredictive']={};this[_0x53dd('0x25')]={};this[_0x53dd('0x26')]={};this[_0x53dd('0x27')]={};this[_0x53dd('0x28')]={};this[_0x53dd('0x29')]={};ami['on']('agentconnect',this[_0x53dd('0x2a')]['bind'](this));ami['on'](_0x53dd('0x2b'),this[_0x53dd('0x2c')]['bind'](this));ami['on'](_0x53dd('0x2d'),this[_0x53dd('0x2e')]['bind'](this));ami['on'](_0x53dd('0x2f'),this['syncAgentComplete'][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x31'),this[_0x53dd('0xc')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x32'),this[_0x53dd('0x33')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x34'),this[_0x53dd('0x35')][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x36'),this['syncVarSet'][_0x53dd('0x30')](this));ami['on']('queuemember',this['syncQueueMember'][_0x53dd('0x30')](this));ami['on'](_0x53dd('0x37'),this['syncQueueStatusComplete'][_0x53dd('0x30')](this));this['loopCampaigns']();this[_0x53dd('0x38')]();}function isNotNull(_0x21e92d){return _0x21e92d!==null&&!_['isUndefined'](_0x21e92d);}function checkIsLoggedIn(_0x293957,_0x3d037b){return function(){if(_0x3d037b<=0x0){_0x293957['message']=_0x53dd('0x39');throw _0x293957['name']+_0x53dd('0x3a');}};}function isActive(_0x267e34){return _0x267e34;}function checkIsActive(_0x49f2c3,_0x325216){return function(){if(!isActive(_0x325216)){_0x49f2c3[_0x53dd('0x3b')]=_0x53dd('0x3c');throw _0x49f2c3[_0x53dd('0x3d')]+_0x53dd('0x3e');}};}function checkInterval(_0x2517f1){return function(){if(!isNotNull(_0x2517f1['Interval'])){_0x2517f1['message']=_0x53dd('0x3f');throw _0x2517f1[_0x53dd('0x3d')]+_0x53dd('0x40');}if(!isNotNull(_0x2517f1[_0x53dd('0x41')]['Intervals'])){_0x2517f1[_0x53dd('0x3b')]=_0x53dd('0x3f');throw _0x2517f1[_0x53dd('0x3d')]+_0x53dd('0x40');}if(!isNotNull(_[_0x53dd('0x42')](_0x2517f1[_0x53dd('0x41')][_0x53dd('0x43')]))){_0x2517f1['message']=_0x53dd('0x3f');throw _0x2517f1['name']+_0x53dd('0x40');}};}function msgResponse(_0xdb31d8,_0x433e83,_0x52a446){return{'action':_0xdb31d8,'response':_0x433e83,'message':_0x52a446,'stack':_0x52a446};}function myreject(_0x2d2c54){return function(_0x536256){return _0x2d2c54(msgResponse(_0x53dd('0x44'),_0x53dd('0x45'),JSON[_0x53dd('0x46')](_0x536256)));};}function getSeconds(_0x1af799,_0x470773){var _0x1fda01=moment(_0x1af799)[_0x53dd('0x47')](0x0);var _0x5f0708=moment(_0x470773)[_0x53dd('0x47')](0x0);return _0x1fda01[_0x53dd('0x48')](_0x5f0708,'seconds');}function emit(_0x2af0a3,_0x4a9659,_0x201580){io['to'](_0x2af0a3)[_0x53dd('0x49')](_0x4a9659,_0x201580);}function emitVoiceQueueSummary(_0xa687fb){if(_0xa687fb[_0x53dd('0x4a')]==='outbound'){var _0x13f789={'id':_0xa687fb['id'],'name':_0xa687fb[_0x53dd('0x3d')],'strategy':_0xa687fb[_0x53dd('0x4b')],'answered':_0xa687fb[_0x53dd('0x4c')],'available':_0xa687fb[_0x53dd('0x4d')],'loggedIn':_0xa687fb[_0x53dd('0x4e')],'pTalking':_0xa687fb[_0x53dd('0x4f')],'sumBillable':_0xa687fb[_0x53dd('0x50')],'sumDuration':_0xa687fb[_0x53dd('0x51')],'sumHoldTime':_0xa687fb['sumHoldTime']||0x0,'talking':_0xa687fb[_0x53dd('0x52')],'total':_0xa687fb['total'],'type':_0xa687fb[_0x53dd('0x4a')],'unmanaged':_0xa687fb[_0x53dd('0x53')],'abandoned':_0xa687fb[_0x53dd('0x54')],'waiting':_0xa687fb[_0x53dd('0x55')],'loggedInDb':_0xa687fb['loggedInDb'],'dialActive':_0xa687fb['dialActive'],'dialMethod':_0xa687fb[_0x53dd('0x56')],'dialOriginateCallerIdName':_0xa687fb[_0x53dd('0x57')],'dialOriginateCallerIdNumber':_0xa687fb[_0x53dd('0x58')],'dialOriginateTimeout':_0xa687fb[_0x53dd('0x59')],'dialPrefix':_0xa687fb[_0x53dd('0x5a')],'outboundAnswerAgiCallsDay':_0xa687fb[_0x53dd('0x5b')],'outboundAnswerCallsDay':_0xa687fb[_0x53dd('0x5c')],'outboundBlacklistCallsDay':_0xa687fb[_0x53dd('0x5d')],'outboundBusyCallsDay':_0xa687fb[_0x53dd('0x5e')],'outboundCongestionCallsDay':_0xa687fb[_0x53dd('0x5f')],'outboundDropCallsDayACS':_0xa687fb[_0x53dd('0x60')],'outboundDropCallsDayCallersExit':_0xa687fb[_0x53dd('0x61')],'outboundDropCallsDayTimeout':_0xa687fb[_0x53dd('0x62')],'outboundNoAnswerCallsDay':_0xa687fb[_0x53dd('0x63')],'outboundNoSuchCallsDay':_0xa687fb[_0x53dd('0x64')],'outboundOriginateFailureCallsDay':_0xa687fb[_0x53dd('0x65')],'outboundReCallsDay':_0xa687fb[_0x53dd('0x66')],'outboundRejectCallsDay':_0xa687fb[_0x53dd('0x67')],'outboundUnknownCallsDay':_0xa687fb[_0x53dd('0x68')],'predictiveIntervalAnsweredCalls':_0xa687fb[_0x53dd('0x69')],'predictiveIntervalAvgHoldtime':_0xa687fb[_0x53dd('0x6a')],'predictiveIntervalAvgTalktime':_0xa687fb[_0x53dd('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0xa687fb['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0xa687fb[_0x53dd('0x6c')],'predictiveIntervalErlangCalls':_0xa687fb[_0x53dd('0x6d')],'predictiveIntervalErlangCallsDroppedCalls':_0xa687fb[_0x53dd('0x6e')],'predictiveIntervalHitRate':_0xa687fb[_0x53dd('0x6f')],'predictiveIntervalMultiplicativeFactor':_0xa687fb[_0x53dd('0x70')],'predictiveIntervalPauses':_0xa687fb[_0x53dd('0x71')],'predictiveIntervalAvailable':_0xa687fb[_0x53dd('0x72')],'predictiveIntervalTotalCalls':_0xa687fb['predictiveIntervalTotalCalls'],'message':_0xa687fb[_0x53dd('0x3b')],'originated':_0xa687fb[_0x53dd('0x73')],'erlangCalls':_0xa687fb['erlangCalls'],'erlangCallToSecond':_0xa687fb[_0x53dd('0x74')],'erlangAbandonmentRate':_0xa687fb[_0x53dd('0x75')],'erlangBusyFactor':_0xa687fb['erlangBusyFactor'],'startPredictive':_0xa687fb['startPredictive'],'startProgressive':_0xa687fb[_0x53dd('0x26')]};if(_0xa687fb[_0x53dd('0x76')]){_0x13f789[_0x53dd('0x76')]={'id':_0xa687fb[_0x53dd('0x76')]['id'],'name':_0xa687fb[_0x53dd('0x76')][_0x53dd('0x3d')],'active':_0xa687fb[_0x53dd('0x76')]['active'],'callerid':_0xa687fb[_0x53dd('0x76')][_0x53dd('0x77')]};}if(_0xa687fb[_0x53dd('0x41')]){_0x13f789['Interval']={'id':_0xa687fb[_0x53dd('0x41')]['id'],'name':_0xa687fb[_0x53dd('0x41')][_0x53dd('0x3d')]};}var _0x5c0775=md5(JSON[_0x53dd('0x46')](_0x13f789));if(_0xa687fb['md5']!==_0x5c0775){_0xa687fb[_0x53dd('0x4')]=_0x5c0775;emit(util[_0x53dd('0x78')]('voice:queue:%s',_0x13f789[_0x53dd('0x3d')]),_0x53dd('0x79'),_0x13f789);}}}function emitCampaignSummary(_0x4f8ec6){if(_0x4f8ec6[_0x53dd('0x4a')]===_0x53dd('0x7a')){emit(util['format']('campaign:ivr:%s',_0x4f8ec6[_0x53dd('0x3d')]),'campaign:save',_0x4f8ec6);}}function checkGetDataPredictive(_0x386858){if(isNotNull(_0x386858)&&!_['isEmpty'](_0x386858)){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7c'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7d'),_0x386858[_0x53dd('0x7e')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x7f'),_0x386858[_0x53dd('0x69')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x80'),_0x386858[_0x53dd('0x6c')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x81'),_0x386858[_0x53dd('0x82')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x83'),_0x386858[_0x53dd('0x6a')]);loggerPredictive[_0x53dd('0x7b')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x386858[_0x53dd('0x6b')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x84'));if(_0x386858[_0x53dd('0x7e')]>0x0){if(!_['isUndefined'](_0x386858[_0x53dd('0x6b')])&&_0x386858[_0x53dd('0x6b')]>0x0){return!![];}loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x85'));if(!_[_0x53dd('0x86')](_0x386858[_0x53dd('0x6a')])&&_0x386858[_0x53dd('0x6a')]>0x0){return!![];}loggerPredictive[_0x53dd('0x7b')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info'](_0x53dd('0x87'));}}else{loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x88'));}return![];}function mergeDataErlangB(_0x2859f8){return function(_0x1c9705){loggerPredictive['info'](_0x53dd('0x89'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8a'),_0x1c9705[_0x53dd('0x8b')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8c'),_0x1c9705[_0x53dd('0x74')]);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x8d'),_0x1c9705['erlangAbandonmentRate']);loggerPredictive[_0x53dd('0x7b')]('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c9705['erlangBusyFactor']);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1c9705[_0x53dd('0x75')]);loggerPredictive[_0x53dd('0x7b')]('---------------------------');_[_0x53dd('0x8e')](_0x2859f8,_0x1c9705);};}function getDiff(_0x5b7884){var _0xe0ee85=moment()[_0x53dd('0x47')](0x0);var _0x54c828=moment(_0x5b7884)[_0x53dd('0x47')](0x0);return _0xe0ee85[_0x53dd('0x48')](_0x54c828,_0x53dd('0x8f'));}function ifInterval(_0x1e4cf6,_0x168749){if(_[_0x53dd('0x86')](_0x168749)){return![];}return getDiff(_0x168749)<_0x1e4cf6*0x3c;}function freeVariablesPredictive(_0x592282){if(isNotNull(_0x592282)){if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x26')])){_0x592282[_0x53dd('0x26')]=undefined;loggerPredictive['info'](_0x592282[_0x53dd('0x3d')],_0x53dd('0x90'));}if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x25')])){_0x592282[_0x53dd('0x25')]=undefined;loggerPredictive[_0x53dd('0x7b')](_0x592282[_0x53dd('0x3d')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x53dd('0x86')](_0x592282[_0x53dd('0x91')])){clearInterval(_0x592282[_0x53dd('0x91')]);_0x592282[_0x53dd('0x91')]=undefined;loggerPredictive[_0x53dd('0x7b')](_0x592282[_0x53dd('0x3d')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x5a5ead,_0x3c3e56){if(_0x3c3e56===0x0){return 0x0;}var _0x293010=0x1;for(var _0x5c5f59=0x1;_0x5c5f59<=_0x3c3e56;_0x5c5f59+=0x1){_0x293010=0x1+_0x293010*_0x5c5f59/_0x5a5ead;}return 0x1/_0x293010;}function isVoiceQueueOutbound(_0x542d88){return _0x542d88===_0x53dd('0x92');}function isNotPreview(_0x5b9289){return _0x5b9289!==_0x53dd('0x20');}function isCampaignIvr(_0x39641c){return _0x39641c===_0x53dd('0x7a');}function getCallerId(_0xb1c4d4,_0xc9dd3d,_0xb355a9){if(!_[_0x53dd('0x86')](_0xb355a9)&&typeof _0xb355a9===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xb355a9)){if(!_[_0x53dd('0x86')](_0xc9dd3d)&&typeof _0xc9dd3d===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xc9dd3d)){return util[_0x53dd('0x78')]('\x22%s\x22\x20<%s>',_0xc9dd3d,_0xb355a9);}return util[_0x53dd('0x78')](_0x53dd('0x94'),_0xb355a9,_0xb355a9);}if(!_[_0x53dd('0x86')](_0xb1c4d4)&&typeof _0xb1c4d4===_0x53dd('0x93')&&!_[_0x53dd('0x42')](_0xb1c4d4)){return _0xb1c4d4;}return _0x53dd('0x95');}function loggerCatchQueueSummary(_0x13998d,_0x3635f3){return function(_0x1ae704){freeVariablesPredictive(_0x3635f3);emitVoiceQueueSummary(_0x3635f3);emitCampaignSummary(_0x3635f3);loggerSyncQueueSummary[_0x53dd('0x96')](_0x13998d,util[_0x53dd('0x97')](_0x1ae704,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x342bb5,_0xc39b70){return function(_0xeffd0d){loggerPredictive[_0x53dd('0x96')](_0xc39b70[_0x53dd('0x3d')],_0x342bb5);loggerPredictive['error'](_0xeffd0d['stack']);freeVariablesPredictive(_0xc39b70);};}function loggerCatch(_0x1a3b21){return function(_0x591795){logger[_0x53dd('0x96')](_0x1a3b21,util[_0x53dd('0x97')](_0x591795,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4725a5){return _0x4725a5&&!_[_0x53dd('0x86')](_0x4725a5)&&_0x4725a5['length']>0x0;}function decremetOriginate(_0x1d554d){if(!_[_0x53dd('0x86')](_0x1d554d)&&_0x1d554d!==null){if(typeof _0x1d554d[_0x53dd('0x73')]!==_0x53dd('0x98')){if(_0x1d554d[_0x53dd('0x73')]>0x0){_0x1d554d[_0x53dd('0x73')]-=0x1;}else{logger['error'](_0x53dd('0x99'));}}}else{logger[_0x53dd('0x96')](_0x53dd('0x9a'));}}function checkContactLowerLimitOriginate(_0x6ab5a8,_0x785d6,_0xd1294e){if(_0x785d6>_0xd1294e){for(var _0x2bd9ab=0x0;_0x2bd9ab<_0x785d6-_0xd1294e;_0x2bd9ab+=0x1){decremetOriginate(_0x6ab5a8);}}}function loggerGetContactDialer(_0x258ddb,_0x501599,_0x280e2d){return function(_0x12b504){checkContactLowerLimitOriginate(_0x501599,_0x280e2d,0x0);logger[_0x53dd('0x96')](_0x258ddb,util[_0x53dd('0x97')](_0x12b504,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x1ae5c8){return function(_0x5a5cd2){if(isNotNull(_0x5a5cd2)&&isNotNull(_0x5a5cd2[0x0])){if(_0x5a5cd2[0x0]['contactsRescheduled']>0x0){_0x1ae5c8[_0x53dd('0x3b')]=_0x53dd('0x9b');logger[_0x53dd('0x7b')]('[getContactDialer2][ReScheduled]'+_0x1ae5c8[_0x53dd('0x3d')],_0x5a5cd2[0x0][_0x53dd('0x9c')],_0x53dd('0x9d'));}else{_0x1ae5c8['message']=_0x53dd('0x9e');logger['info'](_0x53dd('0x9f')+_0x1ae5c8[_0x53dd('0x3d')]);}}};}function notSendMessagesQueue(_0x4379c9){if(_0x4379c9[_0x53dd('0xa0')]){freeVariablesPredictive(_0x4379c9);if(_0x4379c9[_0x53dd('0x73')]===0x0&&_0x4379c9['talking']===0x0&&_0x4379c9[_0x53dd('0x55')]===0x0&&(_0x4379c9[_0x53dd('0x4f')]||0x0)===0x0){_0x4379c9[_0x53dd('0xa0')]=![];_0x4379c9[_0x53dd('0x4d')]=0x0;_0x4379c9['message']='NOT_ACTIVE';loggerSyncQueueSummary['error'](_0x53dd('0xa1'),_0x4379c9[_0x53dd('0x3d')],'is\x20not\x20active');}else{_0x4379c9['message']=_0x53dd('0xa2');loggerSyncQueueSummary['error'](_0x53dd('0xa1'),_0x4379c9[_0x53dd('0x3d')],_0x53dd('0xa3'));}emitVoiceQueueSummary(_0x4379c9);}}function notSendMessagesCampaign(_0x279632){if(_0x279632['sendMessageOneNotActive']){if(_0x279632['originated']===0x0){_0x279632[_0x53dd('0xa0')]=![];_0x279632['message']=_0x53dd('0x3c');loggerSyncQueueSummary[_0x53dd('0x96')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x279632[_0x53dd('0x3d')],_0x53dd('0xa4'));}else{_0x279632[_0x53dd('0x3b')]=_0x53dd('0xa2');loggerSyncQueueSummary[_0x53dd('0x96')](_0x53dd('0xa5'),_0x279632[_0x53dd('0x3d')],_0x53dd('0xa3'));}emitCampaignSummary(_0x279632);}}function createObjHistory(_0x24072f,_0x348c47,_0x3cd96c,_0x53606a,_0x3088ea){_0x24072f[_0x53dd('0x3b')]=_0x3cd96c;var _0x4f0565=new Action(_0x24072f,_0x348c47);var _0x121a72=new History(_0x4f0565);_0x121a72[_0x53dd('0xa6')]=_0x53606a;_0x121a72['statedesc']=_0x3088ea;_0x121a72[_0x53dd('0xa7')]=_0x4f0565[_0x53dd('0xa8')];return _0x121a72;}Dialer[_0x53dd('0x1c')]['loopClearZombieChannels']=function(){var _0x44c5ef=this;setInterval(function(){_0x44c5ef[_0x53dd('0xa9')](_0x44c5ef[_0x53dd('0xaa')],_0x53dd('0xab'));_0x44c5ef[_0x53dd('0xa9')](_0x44c5ef['actions'],'[actions]');},0x32c8);};Dialer[_0x53dd('0x1c')][_0x53dd('0xa9')]=function(_0xc4ca90,_0x1677a9){var _0x59f6ba=this;for(var _0x375b0a in _0xc4ca90){if(typeof _0xc4ca90[_0x375b0a]!==_0x53dd('0x98')){this[_0x53dd('0x1f')][_0x53dd('0x1d')](function(){if(!_[_0x53dd('0xac')](_0xc4ca90[_0x375b0a])){return ami[_0x53dd('0xad')]({'action':_0x53dd('0xae'),'channel':_0xc4ca90[_0x375b0a][_0x53dd('0xaf')]})[_0x53dd('0xb0')](function(_0x128176){if(_0x128176['message']===_0x53dd('0xb1')){setTimeout(function(){if(_0xc4ca90[_0x375b0a]&&_0xc4ca90[_0x375b0a][_0x53dd('0x4a')]!==_0x53dd('0x7a')){_0x59f6ba['updateOriginated'](_0x59f6ba['voiceQueues'][_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]]);logger[_0x53dd('0x96')](_0x53dd('0xb3'),_0x1677a9,_0x375b0a,_0xc4ca90[_0x375b0a]['queue']);delete _0xc4ca90[_0x375b0a];}if(_0xc4ca90[_0x375b0a]&&_0xc4ca90[_0x375b0a][_0x53dd('0x4a')]===_0x53dd('0x7a')){_0x59f6ba[_0x53dd('0xb4')](_0x59f6ba['campaigns'][_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]]);logger['error'](_0x53dd('0xb5'),_0x1677a9,_0x375b0a,_0xc4ca90[_0x375b0a][_0x53dd('0xb2')]);delete _0xc4ca90[_0x375b0a];}},0x2328);}});}});}}};Dialer['prototype'][_0x53dd('0xb6')]=function(_0x329e77){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xb6')](_0x329e77))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xb9')));};Dialer[_0x53dd('0x1c')]['checkIsBlackList']=function(_0x3688d4){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperBlack[_0x53dd('0xba')](_0x3688d4))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xbb')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xbc')]=function(_0x10bd81){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperBlack[_0x53dd('0xbc')](_0x10bd81))['catch'](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xbd')]=function(_0x3a313a){return BPromise['resolve']()['then'](cmHopperHistory[_0x53dd('0xbe')](_0x3a313a))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xbf')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc0')]=function(_0x47b2e3){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc0')](_0x47b2e3))[_0x53dd('0xb0')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc1')]=function(_0x41f9f4,_0x510870,_0x242800){return BPromise['resolve']()['then'](cmHopper[_0x53dd('0xc1')](_0x41f9f4,_0x510870,_0x242800))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xc2')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xc3')]=function(_0x50ffda,_0x1ebc26,_0xe8723d,_0x154003,_0x3e0124){return BPromise['resolve']()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc3')](_0x50ffda,_0x1ebc26,_0xe8723d,_0x154003))['catch'](function(_0xb481cd){_0x3e0124[_0x53dd('0xc4')]-=_0xe8723d;_0x3e0124['temp']=_0x3e0124[_0x53dd('0xc4')]>0x0?_0x3e0124[_0x53dd('0xc4')]:0x0;loggerCatch(_0x53dd('0xc5'))(_0xb481cd);});};Dialer[_0x53dd('0x1c')][_0x53dd('0xc6')]=function(_0x5327c5,_0x3eca02,_0x931e44,_0x2717a8){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xc6')](_0x5327c5,_0x3eca02,_0x931e44))[_0x53dd('0xb0')](function(_0x5bfd5b){_0x2717a8['temp']-=_0x3eca02;_0x2717a8[_0x53dd('0xc4')]=_0x2717a8[_0x53dd('0xc4')]>0x0?_0x2717a8[_0x53dd('0xc4')]:0x0;loggerCatch(_0x53dd('0xc7'))(_0x5bfd5b);});};Dialer[_0x53dd('0x1c')][_0x53dd('0xc8')]=function(_0x489b2d){return BPromise[_0x53dd('0xb7')]()['then'](voiceQueueRt['getVoiceQueueRtPauses'](_0x489b2d))['catch'](loggerCatch(_0x53dd('0xc9')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xca')]=function(_0xab4905){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopper[_0x53dd('0xca')](_0xab4905))[_0x53dd('0xb0')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype'][_0x53dd('0xcb')]=function(_0x3ea59e){return BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](cmHopperHistory['createHistory'](_0x3ea59e))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0xcc')));};Dialer[_0x53dd('0x1c')][_0x53dd('0xb4')]=function(_0x518949){if(!_['isUndefined'](_0x518949)&&_0x518949!==null){if(typeof _0x518949[_0x53dd('0x73')]!==_0x53dd('0x98')){if(_0x518949[_0x53dd('0x73')]>0x0){_0x518949[_0x53dd('0x73')]-=0x1;}else{logger[_0x53dd('0x96')](_0x53dd('0xcd'));}}}else{logger[_0x53dd('0x96')](_0x53dd('0xce'));}};Dialer[_0x53dd('0x1c')][_0x53dd('0xcf')]=function(_0xa83d64,_0x40cc0f){var _0x2811ec=this;return function(_0x2e5b1e){_0x2811ec[_0x53dd('0xb4')](_0x40cc0f);logger[_0x53dd('0x96')](_0xa83d64,util[_0x53dd('0x97')](_0x2e5b1e,{'showHidden':![],'depth':null}));};};Dialer[_0x53dd('0x1c')][_0x53dd('0xd0')]=function(_0x1b1d83,_0x5de872,_0xee50d2){var _0x29b075={'state':0x19,'statedesc':_0x53dd('0xd1')};this[_0x53dd('0xb4')](_0x5de872);this['saveInDb'](_[_0x53dd('0x8e')](_0x29b075,_[_0x53dd('0xd2')](_0xee50d2,[_0x53dd('0xd3'),_0x53dd('0xd4'),_0x53dd('0xd5'),_0x53dd('0xd6'),_0x53dd('0xd7')])),_0x53dd('0xd8'),_0x53dd('0xd9'));logger[_0x53dd('0x96')](_0x1b1d83);};Dialer[_0x53dd('0x1c')][_0x53dd('0xda')]=function(_0x3f404e){return _0x3f404e==='Success';};Dialer[_0x53dd('0x1c')][_0x53dd('0xdb')]=function(_0x43f5ae){return!_[_0x53dd('0x86')](_0x43f5ae)&&_0x43f5ae&&!_[_0x53dd('0x86')](_0x43f5ae['name'])&&!_[_0x53dd('0x86')](_0x43f5ae[_0x53dd('0xdc')])&&_0x43f5ae[_0x53dd('0xdc')]&&(this[_0x53dd('0x23')][util[_0x53dd('0x78')]('SIP/%s',_0x43f5ae['name'])]['status']===_0x53dd('0xdd')||this[_0x53dd('0x23')][util['format'](_0x53dd('0xde'),_0x43f5ae['name'])]['status']===_0x53dd('0xdf'));};Dialer[_0x53dd('0x1c')][_0x53dd('0xe0')]=function(_0x522cfb,_0x2c9784,_0x301a3c){this[_0x53dd('0xcb')](_0x522cfb)[_0x53dd('0xb0')](loggerCatch(_0x2c9784));this['moveContactManagedDialer'](_0x522cfb)[_0x53dd('0xb0')](loggerCatch(_0x301a3c));};Dialer[_0x53dd('0x1c')][_0x53dd('0xe1')]=function(_0x3adf21){var _0x51ebfe=this[_0x53dd('0xaa')][_0x3adf21[_0x53dd('0xe2')]];var _0x111d21;if(!_[_0x53dd('0xac')](_0x3adf21)&&!_['isNil'](_0x3adf21[_0x53dd('0xe3')])&&!_[_0x53dd('0xac')](_0x3adf21[_0x53dd('0xe3')][_0x53dd('0xe4')])&&_0x3adf21[_0x53dd('0xe5')]==='xcally-motion-dialer'&&_0x51ebfe){if(_0x51ebfe[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&this['voiceQueues'][_0x51ebfe['queue']][_0x53dd('0xe6')]&&_0x3adf21['value']===_0x53dd('0xe7')){delete this[_0x53dd('0xaa')][_0x3adf21['uniqueid']];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]);this[_0x53dd('0xe8')][_0x51ebfe['queue']][_0x53dd('0x5c')]+=0x1;this[_0x53dd('0xe8')][_0x51ebfe['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x111d21=new Hangup(_0x51ebfe,_0x3adf21);_0x111d21['state']=0x12;_0x111d21[_0x53dd('0xe9')]=_0x53dd('0xea');_0x111d21[_0x53dd('0xeb')]=_0x53dd('0xec');ami[_0x53dd('0x49')](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x111d21,_0x53dd('0xef')));this[_0x53dd('0xe0')](_0x111d21,_0x53dd('0xf0'),'[syncHangupInAMD]');}if(_0x51ebfe[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&this[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]['dialAMDActive']&&_0x3adf21[_0x53dd('0xf1')]===_0x53dd('0xf2')){var _0x32a6ba=this;return new BPromise(function(_0x3e4753,_0x416550){delete _0x32a6ba[_0x53dd('0xaa')][_0x3adf21['uniqueid']];_0x32a6ba[_0x53dd('0xb4')](_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]]);_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0x5c')]+=0x1;_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0x5b')]+=0x1;var _0x55cac9=_0x32a6ba[_0x53dd('0xe8')][_0x51ebfe['queue']];var _0x53440f=new Hangup(_0x51ebfe,_0x3adf21);_0x53440f[_0x53dd('0xa6')]=0x13;_0x53440f[_0x53dd('0xe9')]=_0x53dd('0xf3');_0x53440f[_0x53dd('0xeb')]=_0x53dd('0xec');_0x53440f[_0x53dd('0xf4')]+=0x1;_0x53440f[_0x53dd('0xf5')]+=0x1;_0x53440f[_0x53dd('0xef')]=!![];ami['emit'](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x53440f,'amd'));_0x32a6ba[_0x53dd('0xcb')](_0x53440f)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x53440f[_0x53dd('0xf6')]+_0x53440f[_0x53dd('0xf7')]+_0x53440f['countnoanswerretry']+_0x53440f['countnosuchnumberretry']+_0x53440f['countdropretry']+_0x53440f[_0x53dd('0xf8')]+_0x53440f[_0x53dd('0xf4')]+_0x53440f[_0x53dd('0xf9')]>=_0x55cac9['dialGlobalMaxRetry']){_0x32a6ba[_0x53dd('0xfa')](_0x53440f,_0x3e4753,_0x416550,_0x53dd('0xfb'));}else{if(_0x53440f[_0x53dd('0xf4')]>=_0x55cac9[_0x53dd('0xfc')]){_0x32a6ba[_0x53dd('0xfd')](_0x53440f,_0x3e4753,_0x416550,_0x53dd('0xfe'));}else{_0x32a6ba['rescheduleContact']({'active':![],'countmachineretry':_0x53440f[_0x53dd('0xf4')],'scheduledat':moment()['add'](_0x55cac9['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x53440f['ContactId'],'ListId':_0x53440f[_0x53dd('0xd4')],'VoiceQueueId':_0x53440f[_0x53dd('0xd6')]||undefined,'CampaignId':_0x53440f[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][Machine]'));_0x3e4753({'reschedule':0x1});}}});}if(_0x51ebfe[_0x53dd('0x4a')]===_0x53dd('0x7a')&&this['campaigns'][_0x51ebfe[_0x53dd('0xb2')]][_0x53dd('0xe6')]&&_0x3adf21[_0x53dd('0xf1')]===_0x53dd('0xe7')){delete this[_0x53dd('0xaa')][_0x3adf21['uniqueid']];this[_0x53dd('0xb4')](this['campaigns'][_0x51ebfe[_0x53dd('0xb2')]]);_0x111d21=new Hangup(_0x51ebfe,_0x3adf21);_0x111d21[_0x53dd('0xa6')]=0x12;_0x111d21[_0x53dd('0xe9')]=_0x53dd('0xea');_0x111d21[_0x53dd('0xeb')]=_0x53dd('0xec');ami[_0x53dd('0x49')](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x111d21,'amd'));this[_0x53dd('0xe0')](_0x111d21,_0x53dd('0x100'),_0x53dd('0x101'));}if(_0x51ebfe[_0x53dd('0x4a')]===_0x53dd('0x7a')&&this[_0x53dd('0x21')][_0x51ebfe['queue']]['dialAMDActive']&&_0x3adf21['value']==='MACHINE'){var _0x32a6ba=this;return new BPromise(function(_0x954cce,_0x3a7842){delete _0x32a6ba[_0x53dd('0xaa')][_0x3adf21[_0x53dd('0xe2')]];_0x32a6ba[_0x53dd('0xb4')](_0x32a6ba[_0x53dd('0x21')][_0x51ebfe[_0x53dd('0xb2')]]);_0x32a6ba['campaigns'][_0x51ebfe['queue']]['outboundAnswerCallsDay']+=0x1;_0x32a6ba[_0x53dd('0x21')][_0x51ebfe['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x242b6d=_0x32a6ba[_0x53dd('0x21')][_0x51ebfe['queue']];var _0x217ac9=new Hangup(_0x51ebfe,_0x3adf21);_0x217ac9[_0x53dd('0xa6')]=0x13;_0x217ac9[_0x53dd('0xe9')]=_0x53dd('0xf3');_0x217ac9[_0x53dd('0xeb')]=_0x53dd('0xec');_0x217ac9[_0x53dd('0xf4')]+=0x1;_0x217ac9['countglobal']+=0x1;_0x217ac9[_0x53dd('0xef')]=!![];ami['emit'](_0x53dd('0xed'),ut[_0x53dd('0xee')](_0x217ac9,_0x53dd('0xef')));_0x32a6ba[_0x53dd('0xcb')](_0x217ac9)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x217ac9['countbusyretry']+_0x217ac9[_0x53dd('0xf7')]+_0x217ac9[_0x53dd('0x102')]+_0x217ac9[_0x53dd('0x103')]+_0x217ac9[_0x53dd('0x104')]+_0x217ac9[_0x53dd('0xf8')]+_0x217ac9[_0x53dd('0xf4')]+_0x217ac9[_0x53dd('0xf9')]>=_0x242b6d[_0x53dd('0x105')]){_0x32a6ba[_0x53dd('0xfa')](_0x217ac9,_0x954cce,_0x3a7842,_0x53dd('0xfb'));}else{if(_0x217ac9['countmachineretry']>=_0x242b6d['dialMachineMaxRetry']){_0x32a6ba[_0x53dd('0xfd')](_0x217ac9,_0x954cce,_0x3a7842,_0x53dd('0xfe'));}else{_0x32a6ba['rescheduleContact']({'active':![],'countmachineretry':_0x217ac9[_0x53dd('0xf4')],'scheduledat':moment()['add'](_0x242b6d['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x217ac9[_0x53dd('0xd3')],'ListId':_0x217ac9[_0x53dd('0xd4')],'VoiceQueueId':_0x217ac9[_0x53dd('0xd6')]||undefined,'CampaignId':_0x217ac9[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x106')));_0x954cce({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0x5cfc30){var _0x259794=this['uniqueId'][_0x5cfc30[_0x53dd('0xe2')]];var _0x558f47=this;var _0x4cafa7;if(_0x259794&&_0x259794[_0x53dd('0x4a')]==='ivr'){delete this['uniqueId'][_0x5cfc30[_0x53dd('0xe2')]];this['updateOriginated'](this[_0x53dd('0x21')][_0x259794['queue']]);this[_0x53dd('0x21')][_0x259794[_0x53dd('0xb2')]]['ivrAnswerCallsDay']+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);this[_0x53dd('0xcb')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x107')));this['moveContactManagedDialer'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}if(_0x259794&&_0x259794[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&isNotNull(this['voiceQueues'][_0x259794['queue']][_0x53dd('0x109')])){delete this[_0x53dd('0xaa')][_0x5cfc30[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]]);this[_0x53dd('0xe8')][_0x259794['queue']][_0x53dd('0x5c')]+=0x1;this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]][_0x53dd('0x5b')]+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);_0x4cafa7[_0x53dd('0xa6')]=0x10;_0x4cafa7['statedesc']=_0x53dd('0x10a');_0x4cafa7[_0x53dd('0xeb')]='AGI';this['createHistory'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x107')));this['moveContactManagedDialer'](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}if(_0x259794&&_0x259794[_0x53dd('0x4a')]!==_0x53dd('0x7a')&&!isNotNull(this[_0x53dd('0xe8')][_0x259794[_0x53dd('0xb2')]]['dialQueueProject'])){delete this[_0x53dd('0xaa')][_0x5cfc30[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x259794['queue']]);this['voiceQueues'][_0x259794[_0x53dd('0xb2')]][_0x53dd('0x68')]+=0x1;_0x4cafa7=new Hangup(_0x259794,_0x5cfc30);_0x4cafa7[_0x53dd('0xa6')]=0xc;_0x4cafa7[_0x53dd('0xe9')]=_0x5cfc30[_0x53dd('0x10b')];_0x4cafa7['membername']='Unknow';this[_0x53dd('0xcb')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x53dd('0xca')](_0x4cafa7)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x108')));}};Dialer['prototype'][_0x53dd('0x10c')]=function(_0x25e2e6){var _0x178687=this[_0x53dd('0xaa')][_0x25e2e6[_0x53dd('0xe2')]];var _0x26fb74=this;if(this[_0x53dd('0xe8')][_0x25e2e6['queue']]){if(_0x178687&&_0x178687[_0x53dd('0x4a')]!==_0x53dd('0x7a')){delete this[_0x53dd('0xaa')][_0x25e2e6[_0x53dd('0xe2')]];this[_0x53dd('0xe8')][_0x25e2e6['queue']][_0x53dd('0x5c')]+=0x1;var _0x240ff8=new AgentComplete(_0x178687,_0x25e2e6);if(_0x25e2e6['reason']===_0x53dd('0x10d')){_0x240ff8['agiafterat']=this[_0x53dd('0xe8')][_0x25e2e6['queue']][_0x53dd('0x10e')]&&this['voiceQueues'][_0x25e2e6['queue']][_0x53dd('0x10f')]?moment()[_0x53dd('0x78')](_0x53dd('0xff')):undefined;}this[_0x53dd('0xcb')](_0x240ff8)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x110')));this['moveContactManagedDialer'](_0x240ff8)['catch'](loggerCatch(_0x53dd('0x111')));}}};Dialer[_0x53dd('0x1c')][_0x53dd('0x2a')]=function(_0x5d533d){if(this[_0x53dd('0xe8')][_0x5d533d[_0x53dd('0xb2')]]){if(this['uniqueId'][_0x5d533d[_0x53dd('0xe2')]]&&this['uniqueId'][_0x5d533d[_0x53dd('0xe2')]]['type']!==_0x53dd('0x7a')){this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][_0x5d533d['queue']]);this['uniqueId'][_0x5d533d['uniqueid']]['answertime']=moment()[_0x53dd('0x78')](_0x53dd('0xff'));}}};Dialer[_0x53dd('0x1c')][_0x53dd('0x112')]=function(_0x3289cc){this[_0x53dd('0xcb')](_0x3289cc)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x110')));this[_0x53dd('0xca')](_0x3289cc)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x113')));};Dialer[_0x53dd('0x1c')][_0x53dd('0x2c')]=function(_0x2c52b7){var _0x6c982c=this['uniqueId'][_0x2c52b7[_0x53dd('0xe2')]];var _0xa06536=this;if(this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]]){if(_0x6c982c&&_0x6c982c[_0x53dd('0x4a')]!==_0x53dd('0x7a')){delete this['uniqueId'][_0x2c52b7[_0x53dd('0xe2')]];this[_0x53dd('0xb4')](this['voiceQueues'][_0x2c52b7[_0x53dd('0xb2')]]);_0x6c982c[_0x53dd('0x114')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));var _0x26045a=new QueueCallerAbandon(_0x6c982c,_0x2c52b7);if(getSeconds(_0x6c982c['droptime'],_0x6c982c[_0x53dd('0x115')])>=_0x6c982c[_0x53dd('0x116')]){this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x6c')]+=0x1;this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x62')]+=0x1;this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x6e')]+=0x1;_0x26045a[_0x53dd('0xa6')]=0xa;_0x26045a[_0x53dd('0xe9')]=_0x53dd('0x117');_0x26045a[_0x53dd('0x118')]=_0x53dd('0x119');_0x26045a[_0x53dd('0x11a')]=this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x10e')]?moment()[_0x53dd('0x78')](_0x53dd('0xff')):undefined;_0x26045a['countdropretry']+=0x1;_0x26045a[_0x53dd('0xf5')]+=0x1;if(_0x26045a[_0x53dd('0x104')]>=this['voiceQueues'][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x11b')]){this[_0x53dd('0x112')](_0x26045a);}else{this[_0x53dd('0xc0')]({'active':![],'countdropretry':_0x26045a[_0x53dd('0x104')],'scheduledat':moment()[_0x53dd('0x11c')](this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]][_0x53dd('0x11d')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x6c982c[_0x53dd('0xd3')],'ListId':_0x6c982c[_0x53dd('0xd4')],'VoiceQueueId':_0x6c982c[_0x53dd('0xd6')]||undefined,'CampaignId':_0x6c982c[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][Drop]'));var _0x1cbe5f=new History(_0x26045a);_0x1cbe5f[_0x53dd('0xa6')]=0xa;_0x1cbe5f[_0x53dd('0xe9')]=_0x53dd('0x117');_0x1cbe5f[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x1cbe5f[_0x53dd('0xa7')]=_0x1cbe5f['starttime'];_0x1cbe5f[_0x53dd('0x11e')]=_0x26045a[_0x53dd('0x11e')];_0x1cbe5f['calleridnum']=_0x26045a[_0x53dd('0x11f')];this[_0x53dd('0xcb')](_0x1cbe5f)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this['voiceQueues'][_0x2c52b7['queue']]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x53dd('0xe8')][_0x2c52b7['queue']][_0x53dd('0x61')]+=0x1;_0x26045a[_0x53dd('0xa6')]=0xb;_0x26045a['statedesc']=_0x53dd('0x120');_0x26045a[_0x53dd('0x118')]=_0x53dd('0x121');_0x26045a['countabandonedretry']+=0x1;_0x26045a['countglobal']+=0x1;if(_0x26045a[_0x53dd('0xf8')]>=this[_0x53dd('0xe8')][_0x2c52b7[_0x53dd('0xb2')]]['dialAbandonedMaxRetry']){this[_0x53dd('0x112')](_0x26045a);}else{this[_0x53dd('0xc0')]({'active':![],'countabandonedretry':_0x26045a[_0x53dd('0xf8')],'scheduledat':moment()[_0x53dd('0x11c')](this[_0x53dd('0xe8')][_0x2c52b7['queue']][_0x53dd('0x122')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0x6c982c[_0x53dd('0xd3')],'ListId':_0x6c982c[_0x53dd('0xd4')],'VoiceQueueId':_0x6c982c[_0x53dd('0xd6')]||undefined,'CampaignId':_0x6c982c[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x124')));var _0x1cbe5f=new History(_0x26045a);_0x1cbe5f[_0x53dd('0xa6')]=0xb;_0x1cbe5f[_0x53dd('0xe9')]=_0x53dd('0x120');_0x1cbe5f[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x1cbe5f[_0x53dd('0xa7')]=_0x1cbe5f[_0x53dd('0xa8')];_0x1cbe5f['calleridname']=_0x26045a[_0x53dd('0x11e')];_0x1cbe5f[_0x53dd('0x11f')]=_0x26045a[_0x53dd('0x11f')];this[_0x53dd('0xcb')](_0x1cbe5f)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x125')));}}}}};Dialer[_0x53dd('0x1c')]['syncNewExten']=function(_0x474d12){if(this[_0x53dd('0x126')][_0x474d12['uniqueid']]){this['actions'][_0x474d12[_0x53dd('0xe2')]][_0x53dd('0xaf')]=_0x474d12['channel'];}if(this[_0x53dd('0xaa')][_0x474d12[_0x53dd('0xe2')]]){this[_0x53dd('0xaa')][_0x474d12[_0x53dd('0xe2')]][_0x53dd('0xaf')]=_0x474d12[_0x53dd('0xaf')];}};Dialer[_0x53dd('0x1c')][_0x53dd('0x127')]=function(_0x438015){if(strategy[this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x4b')]]===_0x53dd('0x1b')){if(this[_0x53dd('0x126')][_0x438015['actionid']]&&_[_0x53dd('0xac')](this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0x129')])&&_0x438015[_0x53dd('0xae')]==='1'&&_0x438015[_0x53dd('0x12a')]==='0'){if(this['agents'][_0x438015['stateinterface']]){if(!this[_0x53dd('0x22')][_0x438015['stateinterface']][_0x53dd('0x129')]){this[_0x53dd('0x22')][_0x438015[_0x53dd('0x12b')]][_0x53dd('0x129')]=!![];this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0x129')]=!![];this['actions'][_0x438015['actionid']][_0x53dd('0x12b')]=_0x438015[_0x53dd('0x12b')];}}}}else if((strategy[this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x4b')]]||'rrmemory')===_0x53dd('0x12c')){if(this[_0x53dd('0x126')][_0x438015['actionid']]){if(this[_0x53dd('0x22')][_0x438015[_0x53dd('0x12b')]]){this['actions'][_0x438015['actionid']][_0x53dd('0x12b')]=_0x438015['stateinterface'];if(_[_0x53dd('0xac')](this[_0x53dd('0x28')][this['actions'][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]])){this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]]['queue']]=[];}this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x12d')](_['merge'](_[_0x53dd('0xd2')](this[_0x53dd('0x126')][_0x438015[_0x53dd('0x128')]],[_0x53dd('0x12e'),_0x53dd('0x12b')]),{'status':_0x438015[_0x53dd('0xae')],'paused':_0x438015[_0x53dd('0x12a')]}));}}}};function unlockQueueStatus(_0x2a89ff,_0x5a21fd){setTimeout(function(){if(_[_0x53dd('0x86')](_0x2a89ff['queueStatusComplete'])){loggerBooked['error'](_0x53dd('0x12f'),_0x5a21fd);}_0x2a89ff[_0x53dd('0x130')]=!![];loggerBooked[_0x53dd('0x7b')](_0x53dd('0x131'),_0x5a21fd,JSON['stringify'](_['pick'](_0x2a89ff,['name',_0x53dd('0x130')])));},0x1f3);}Dialer[_0x53dd('0x1c')][_0x53dd('0x132')]=function(_0x38dace){var _0x4dc50c=this;var _0x306d61=_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]];if(strategy[this[_0x53dd('0xe8')][this['actions'][_0x38dace['actionid']][_0x53dd('0xb2')]][_0x53dd('0x4b')]]===_0x53dd('0x1b')){if(this['actions'][_0x38dace['actionid']]&&this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0x12b')]){this[_0x53dd('0x20')][_0x53dd('0x133')](this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['idHopper'],this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0x12b')])[_0x53dd('0xb0')](function(_0x677ff9){logger[_0x53dd('0x96')](_0x53dd('0x134'),util[_0x53dd('0x97')](_0x677ff9,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4dc50c[_0x53dd('0xb4')](_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);_0x4dc50c[_0x53dd('0x22')][_0x4dc50c[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0x12b')]][_0x53dd('0x129')]=![];delete _0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);});}else{this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace['actionid']]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd6')]||undefined,'CampaignId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x135')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else if((strategy[this['voiceQueues'][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x4b')]]||_0x53dd('0x12c'))===_0x53dd('0x12c')){var _0xc63eb7;if(this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]&&!_[_0x53dd('0x42')](this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]])){if(this[_0x53dd('0x29')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]){this[_0x53dd('0x29')][_0x4dc50c['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=this[_0x53dd('0x29')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]?this[_0x53dd('0x29')][this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]:this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]?this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x136')]||0x0:0x0;}this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x136')]=this[_0x53dd('0x29')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]];for(var _0x932ce1=0x0;_0x932ce1<this[_0x53dd('0x28')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]][_0x53dd('0x137')];_0x932ce1+=0x1){_0xc63eb7=rr(this[_0x53dd('0x28')][this['actions'][_0x38dace['actionid']][_0x53dd('0xb2')]]);this[_0x53dd('0x29')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=this[_0x53dd('0x28')][this['actions'][_0x38dace[_0x53dd('0x128')]]['queue']][_0x53dd('0x136')];if(_0xc63eb7['status']==='1'&&_0xc63eb7[_0x53dd('0x12a')]==='0'){break;}}if(!_[_0x53dd('0xac')](_0xc63eb7)){this[_0x53dd('0x22')][_0xc63eb7['stateinterface']]['unlockRR']=_[_0x53dd('0x86')](this[_0x53dd('0x22')][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR'])?!![]:this[_0x53dd('0x22')][_0xc63eb7['stateinterface']]['unlockRR'];}loggerBooked['info'](_0x53dd('0x138'),_0x38dace[_0x53dd('0x128')],_0x53dd('0x139'),JSON[_0x53dd('0x46')](_[_0x53dd('0xd2')](this[_0x53dd('0x22')][_0xc63eb7['stateinterface']],[_0x53dd('0x3d'),'unlockRR'])),_0x53dd('0x13a'),JSON[_0x53dd('0x46')](_0xc63eb7[_0x53dd('0x12e')]));if(!_[_0x53dd('0xac')](_0xc63eb7)&&_0xc63eb7[_0x53dd('0xae')]==='1'&&_0xc63eb7['paused']==='0'&&this[_0x53dd('0x22')][_0xc63eb7['stateinterface']][_0x53dd('0x13b')]){this['agents'][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR']=![];this['queueBooked'][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]=[];this[_0x53dd('0x20')][_0x53dd('0x133')](_0xc63eb7[_0x53dd('0x12e')],_0xc63eb7[_0x53dd('0x12b')])[_0x53dd('0xb0')](function(_0x207078){logger[_0x53dd('0x96')](_0x53dd('0x134'),util[_0x53dd('0x97')](_0x207078,{'showHidden':![],'depth':null}));})[_0x53dd('0x1e')](function(){_0x4dc50c[_0x53dd('0xb4')](_0x4dc50c[_0x53dd('0xe8')][_0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]);setTimeout(function(){_0x4dc50c['agents'][_0xc63eb7[_0x53dd('0x12b')]]['unlockRR']=!![];loggerBooked[_0x53dd('0x7b')](_0x53dd('0x13c'),_0x38dace[_0x53dd('0x128')],_0x53dd('0x139'),JSON[_0x53dd('0x46')](_[_0x53dd('0xd2')](_0x4dc50c['agents'][_0xc63eb7[_0x53dd('0x12b')]],[_0x53dd('0x3d'),_0x53dd('0x13b')])),_0x53dd('0x13a'),JSON[_0x53dd('0x46')](_0xc63eb7[_0x53dd('0x12e')]));},0xc7);delete _0x4dc50c[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61,_0x38dace['actionid']);});}else{loggerBooked[_0x53dd('0x7b')](_0x53dd('0x13d'));this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xb2')]]);this[_0x53dd('0xc0')]({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace['actionid']][_0x53dd('0xd6')]||undefined,'CampaignId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x135')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else{loggerBooked[_0x53dd('0x7b')]('[booked][unlock2]');this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x38dace['actionid']][_0x53dd('0xd3')],'ListId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['ListId'],'VoiceQueueId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd6')]||undefined,'CampaignId':this['actions'][_0x38dace['actionid']]['CampaignId']||undefined})['catch'](loggerCatch(_0x53dd('0x13e')));delete this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}}else{loggerBooked['info'](_0x53dd('0x13f'));this[_0x53dd('0xb4')](this[_0x53dd('0xe8')][this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x53dd('0x126')][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd3')],'ListId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd4')],'VoiceQueueId':this[_0x53dd('0x126')][_0x38dace['actionid']]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x38dace[_0x53dd('0x128')]][_0x53dd('0xd7')]||undefined})['catch'](loggerCatch(_0x53dd('0x140')));delete this['actions'][_0x38dace[_0x53dd('0x128')]];unlockQueueStatus(_0x306d61);}};Dialer['prototype'][_0x53dd('0x141')]=function(){var _0x136754=this;setInterval(function(){_0x136754[_0x53dd('0x142')]();},0x3e8);};Dialer[_0x53dd('0x1c')][_0x53dd('0x143')]=function(_0xbdd43b){var _0x16be4d=this;return function(){if(!_0x16be4d[_0x53dd('0xdb')](_0xbdd43b[_0x53dd('0x76')])){if(!_0x16be4d[_0x53dd('0xdb')](_0xbdd43b[_0x53dd('0x144')])){_0xbdd43b[_0x53dd('0x3b')]=_0x53dd('0x145');throw _0xbdd43b[_0x53dd('0x3d')]+_0x53dd('0x146');}}};};Dialer['prototype'][_0x53dd('0x147')]=function(_0x5261bb,_0x1b0e3a,_0x42f1bd,_0x45384f){var _0x523fb3=this;return function(){var _0x192884=!![];return _0x523fb3[_0x53dd('0x148')](_0x5261bb,_0x1b0e3a,_0x42f1bd,_0x45384f,_0x192884);};};Dialer[_0x53dd('0x1c')][_0x53dd('0x149')]=function(_0x1c4f96,_0xb319a4,_0x48413c,_0x27de6f){var _0xbf4c5e=this;return function(){var _0x1d707e=![];return _0xbf4c5e[_0x53dd('0x148')](_0x1c4f96[_0x53dd('0x43')],_0xb319a4,_0x48413c,_0x27de6f,_0x1d707e);};};Dialer[_0x53dd('0x1c')]['ifTime']=function(_0x4f763f,_0x2c04a8,_0x2143ef,_0x1b2599,_0x58af33){var _0x294a7c=[];return new BPromise(function(_0x520f10,_0x3f2ecb){if(!isNotNull(_0x4f763f)){_0x1b2599[_0x53dd('0x3b')]='INTERVAL_IS_NULL';return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+_0x53dd('0x14b')));}if(_[_0x53dd('0x42')](_0x4f763f)){_0x1b2599['message']=_0x53dd('0x14c');return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+_0x53dd('0x14d')));}if(_0x2c04a8&&_['isUndefined'](config[_0x53dd('0x14e')][_0x2c04a8])){_0x1b2599[_0x53dd('0x3b')]=_0x53dd('0x14f');return _0x3f2ecb(msgResponse(_0x53dd('0x148'),_0x53dd('0x14a'),_0x2143ef+'\x20Timezone\x20unknow\x20'+_0x2c04a8));}if(_['isArray'](_0x4f763f)){for(var _0x48d7d5=0x0;_0x48d7d5<_0x4f763f['length'];_0x48d7d5+=0x1){_0x294a7c[_0x53dd('0x12d')](ami['Action']({'action':_0x53dd('0x150'),'command':util[_0x53dd('0x78')](_0x53dd('0x151'),_0x4f763f[_0x48d7d5][_0x53dd('0x152')],!_[_0x53dd('0x86')](config[_0x53dd('0x14e')][_0x2c04a8])?_0x2c04a8:'')})[_0x53dd('0xb8')](function(_0x57e962){return _0x57e962[_0x53dd('0x153')][_0x53dd('0x154')](_0x53dd('0x155'))>=0x0;})[_0x53dd('0xb0')](myreject(_0x3f2ecb)));}}else{_0x294a7c[_0x53dd('0x12d')](ami[_0x53dd('0xad')]({'action':_0x53dd('0x150'),'command':util['format'](_0x53dd('0x151'),_0x4f763f,!_['isUndefined'](config[_0x53dd('0x14e')][_0x2c04a8])?_0x2c04a8:'')})[_0x53dd('0xb8')](function(_0x16f7de){return _0x16f7de[_0x53dd('0x153')][_0x53dd('0x154')](_0x53dd('0x155'))>=0x0;})[_0x53dd('0xb0')](myreject(_0x3f2ecb)));}BPromise[_0x53dd('0x156')](_0x294a7c)[_0x53dd('0xb8')](function(_0x357bf6){var _0x1a49d9=_['some'](_0x357bf6);if(_0x1a49d9){return _0x520f10(_0x1a49d9);}else{_0x1b2599[_0x53dd('0x3b')]=_0x58af33?_0x53dd('0x157'):_0x53dd('0x158');return _0x3f2ecb(msgResponse(_0x53dd('0x159'),_0x53dd('0x14a'),_0x53dd('0x15a')+_0x58af33+'\x20'+_0x2143ef+_0x53dd('0x15b')+util[_0x53dd('0x97')](_0x4f763f,{'showHidden':![],'depth':null})+_0x53dd('0x15c')+_0x2c04a8));}})[_0x53dd('0xb0')](function(_0x538f86){return _0x3f2ecb(msgResponse('ifTime',_0x53dd('0x14a'),JSON['stringify'](_0x538f86)));});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x15d')]=function(_0x51f406){var _0x4f52a1=this;return function(){switch(_0x51f406[_0x53dd('0x56')]){case _0x53dd('0x15e'):freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,0x1);break;case'power':freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,_0x51f406[_0x53dd('0x160')]);break;case _0x53dd('0xb'):_0x4f52a1[_0x53dd('0xb')](_0x51f406);break;case'booked':freeVariablesPredictive(_0x51f406);_0x4f52a1[_0x53dd('0x15f')](_0x51f406,0x1);break;default:freeVariablesPredictive(_0x51f406);logger[_0x53dd('0x96')](_0x53dd('0x161'),_0x51f406[_0x53dd('0x3d')],_0x53dd('0x162'));}};};Dialer['prototype'][_0x53dd('0x163')]=function(_0x5eea79){var _0x4be2de=this;return function(){_0x4be2de[_0x53dd('0x164')](_0x5eea79);};};Dialer[_0x53dd('0x1c')][_0x53dd('0xc')]=function(_0x1b0925){var _0x37ba1c=this;if(isNotPreview(_0x1b0925[_0x53dd('0x56')])){if(isVoiceQueueOutbound(_0x1b0925[_0x53dd('0x4a')])&&isActive(_0x1b0925[_0x53dd('0x165')])){_0x1b0925[_0x53dd('0xa0')]=!![];BPromise[_0x53dd('0xb7')]()[_0x53dd('0xb8')](checkIsLoggedIn(_0x1b0925,_0x1b0925[_0x53dd('0x4e')]))[_0x53dd('0xb8')](checkIsActive(_0x1b0925,_0x1b0925['dialActive']))[_0x53dd('0xb8')](checkInterval(_0x1b0925))[_0x53dd('0xb8')](_0x37ba1c[_0x53dd('0x143')](_0x1b0925))[_0x53dd('0xb8')](_0x37ba1c[_0x53dd('0x147')](_0x1b0925['dialGlobalInterval'],_0x1b0925['dialTimezone'],_0x1b0925[_0x53dd('0x3d')],_0x1b0925))['then'](_0x37ba1c[_0x53dd('0x149')](_0x1b0925[_0x53dd('0x41')],_0x1b0925[_0x53dd('0x166')],_0x1b0925[_0x53dd('0x3d')],_0x1b0925))['then'](_0x37ba1c[_0x53dd('0x15d')](_0x1b0925))['catch'](loggerCatchQueueSummary(_0x53dd('0x167'),_0x1b0925));}else{notSendMessagesQueue(_0x1b0925);}}else{freeVariablesPredictive(_0x1b0925);}};Dialer['prototype'][_0x53dd('0x142')]=function(){var _0x552f8e=this;var _0x58c2a8;for(var _0xc4b8fe in this[_0x53dd('0x21')]){if(typeof this[_0x53dd('0x21')][_0xc4b8fe]!=='undefined'){_0x58c2a8=this[_0x53dd('0x21')][_0xc4b8fe];if(isCampaignIvr(_0x58c2a8[_0x53dd('0x4a')])&&isActive(_0x58c2a8[_0x53dd('0xdc')])){_0x58c2a8[_0x53dd('0xa0')]=!![];BPromise['resolve']()[_0x53dd('0xb8')](checkIsActive(_0x58c2a8,_0x58c2a8['active']))[_0x53dd('0xb8')](checkInterval(_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x143')](_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x147')](_0x58c2a8[_0x53dd('0x168')],_0x58c2a8[_0x53dd('0x166')],_0x58c2a8['name'],_0x58c2a8))['then'](_0x552f8e[_0x53dd('0x149')](_0x58c2a8[_0x53dd('0x41')],_0x58c2a8[_0x53dd('0x166')],_0x58c2a8[_0x53dd('0x3d')],_0x58c2a8))[_0x53dd('0xb8')](_0x552f8e[_0x53dd('0x163')](_0x58c2a8))[_0x53dd('0xb0')](loggerCatchQueueSummary(_0x53dd('0x169'),_0x58c2a8));}else{notSendMessagesCampaign(_0x58c2a8);}}}};function getCallerIdRandom(_0x34cc96,_0x207ce1){var _0x4539f4;var _0x2fff29;var _0x25412c;if(_0x207ce1<=0x0){_0x207ce1=0x1;}_0x4539f4=new RegExp(_0x53dd('0x16a')+_0x207ce1+'}$');_0x2fff29=Math[_0x53dd('0x16b')](0xa,_0x207ce1-0x1);_0x25412c=Math['pow'](0xa,_0x207ce1)-0x1;return util[_0x53dd('0x78')]('%s',_['replace'](_0x34cc96,_0x4539f4,_[_0x53dd('0x16c')](_0x2fff29,_0x25412c)));}function extractCalleridName(_0x2d5c50){var _0x161308=_0x2d5c50[_0x53dd('0x16d')](/"(.*?)"/);return _0x161308?_0x161308[0x1]:_0x2d5c50;}function extractCalleridNumber(_0x362844){var _0x5c593b=_0x362844[_0x53dd('0x16d')](/<(.*?)>/);return _0x5c593b?_0x5c593b[0x1]:_0x362844;}Dialer[_0x53dd('0x1c')]['actionOriginate']=function(_0x256a5c,_0x438322){var _0x168cea=this;var _0x1b3727=uuid['v4']();this[_0x53dd('0x126')][_0x1b3727]=new Action(_0x256a5c,_0x438322,_0x1b3727);return new BPromise(function(_0x4e5c49,_0x4bc48e){if(_['isUndefined'](_0x256a5c)&&typeof _0x256a5c!=='object'){return _0x4bc48e(msgResponse(_0x53dd('0x16e'),'Failure',_0x53dd('0x16f')));}if(_[_0x53dd('0x86')](_0x438322['Contact'][_0x53dd('0x170')])||_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]===null){return _0x4bc48e(msgResponse('originate',_0x53dd('0x14a'),_0x53dd('0x172')));}var _0x16211e={'XMD-CALLERID':_0x168cea[_0x53dd('0x126')][_0x1b3727]['getCaller'](),'XMD-AGI':_0x256a5c[_0x53dd('0x109')]?util[_0x53dd('0x78')](_0x53dd('0x173'),ipAgi,_0x256a5c[_0x53dd('0x109')]):'NONE','XMD-AGIAFTER':_0x256a5c[_0x53dd('0x10e')]?util[_0x53dd('0x78')](_0x53dd('0x173'),ipAgi,_0x256a5c[_0x53dd('0x10e')]):_0x53dd('0x174'),'XMD-QUEUE':_0x256a5c[_0x53dd('0x4a')]==='outbound'?util[_0x53dd('0x78')]('\x22%s,%s%s,,,%s\x22',_0x256a5c[_0x53dd('0x3d')],_0x256a5c[_0x53dd('0x175')]||'',_0x256a5c[_0x53dd('0x10f')]?'c':'',_0x256a5c[_0x53dd('0x116')]||0x3):_0x53dd('0x174'),'XMD-CONTACTID':_0x438322['ContactId'],'XMD-CDRTYPE':_0x53dd('0x9'),'CALLERID(all)':_0x168cea[_0x53dd('0x126')][_0x1b3727][_0x53dd('0x176')](),'XMD-AMD':_0x256a5c[_0x53dd('0xe6')]?'ACTIVE':_0x53dd('0x174'),'XMD-DESTINATION':_0x53dd('0x177')};if(_0x256a5c[_0x53dd('0xe6')]){_0x16211e[_0x53dd('0x178')]=_0x256a5c[_0x53dd('0x179')]||0x9c4;_0x16211e[_0x53dd('0x17a')]=_0x256a5c[_0x53dd('0x17b')]||0x5dc;_0x16211e['XMD-AMDAFTERGREETINGSILENCE']=_0x256a5c[_0x53dd('0x17c')]||0x320;_0x16211e[_0x53dd('0x17d')]=_0x256a5c['dialAMDTotalAnalysisTime']||0x1388;_0x16211e[_0x53dd('0x17e')]=_0x256a5c[_0x53dd('0x17f')]||0x64;_0x16211e[_0x53dd('0x180')]=_0x256a5c[_0x53dd('0x181')]||0x32;_0x16211e['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x256a5c['dialAMDMaximumNumberOfWords']||0x3;_0x16211e[_0x53dd('0x182')]=_0x256a5c[_0x53dd('0x183')]||0x100;_0x16211e['XMD-AMDMAXIMUMWORDLENGTH']=_0x256a5c[_0x53dd('0x184')]||0x1388;}if(_0x256a5c[_0x53dd('0x4a')]===_0x53dd('0x92')){_0x16211e[_0x53dd('0x185')]=_0x438322[_0x53dd('0xd6')];}else{_0x16211e['XMD-CAMPAIGNID']=_0x438322[_0x53dd('0xd7')];}for(var _0x12d55c in _0x438322[_0x53dd('0x171')]){if(typeof _0x438322[_0x53dd('0x171')][_0x12d55c]!==_0x53dd('0x98')){if(isNotNull(_0x438322[_0x53dd('0x171')][_0x12d55c])&&_0x12d55c!=='id'&&_0x12d55c!==_0x53dd('0x186')&&_0x12d55c!==_0x53dd('0x187')&&_0x12d55c!==_0x53dd('0x188')){_0x16211e[util[_0x53dd('0x78')](_0x53dd('0x189'),'XMD-',_['toUpper'](_0x12d55c))]=_0x438322[_0x53dd('0x171')][_0x12d55c];}}}var _0x237a35=_0x168cea[_0x53dd('0xdb')](_0x256a5c[_0x53dd('0x76')])?getCallerId(_0x256a5c[_0x53dd('0x76')][_0x53dd('0x77')],_0x256a5c[_0x53dd('0x57')],_0x256a5c[_0x53dd('0x18a')]>0x0?getCallerIdRandom(_0x256a5c[_0x53dd('0x58')],_0x256a5c[_0x53dd('0x18a')]):_0x256a5c[_0x53dd('0x58')]):getCallerId(_['isNil'](_0x256a5c[_0x53dd('0x144')])?_0x256a5c[_0x53dd('0x76')][_0x53dd('0x77')]:_0x256a5c[_0x53dd('0x144')]['callerid'],_0x256a5c[_0x53dd('0x57')],_0x256a5c[_0x53dd('0x18a')]>0x0?getCallerIdRandom(_0x256a5c[_0x53dd('0x58')],_0x256a5c[_0x53dd('0x18a')]):_0x256a5c[_0x53dd('0x58')]);if(_0x237a35){_0x16211e[_0x53dd('0x18b')]=_0x168cea[_0x53dd('0x126')][_0x1b3727]['originatecalleridname']=extractCalleridName(_0x237a35);_0x16211e[_0x53dd('0x18c')]=_0x168cea[_0x53dd('0x126')][_0x1b3727][_0x53dd('0x18d')]=extractCalleridNumber(_0x237a35);}return ami['Action']({'actionid':_0x1b3727,'action':_0x53dd('0x16e'),'channel':_0x168cea['isTrunkReachable'](_0x256a5c['Trunk'])?util[_0x53dd('0x78')](_0x53dd('0x18e'),_0x256a5c[_0x53dd('0x76')][_0x53dd('0x3d')],isNotNull(_0x256a5c[_0x53dd('0x5a')])?_0x256a5c[_0x53dd('0x5a')]['trim']()||'':'',_0x256a5c[_0x53dd('0x18f')]>0x0?_0x438322['Contact'][_0x53dd('0x170')][_0x53dd('0x190')](_0x256a5c['dialCutDigit']):_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]):util[_0x53dd('0x78')](_0x53dd('0x18e'),_[_0x53dd('0xac')](_0x256a5c[_0x53dd('0x144')])?_0x256a5c[_0x53dd('0x76')]['name']:_0x256a5c['TrunkBackup'][_0x53dd('0x3d')],isNotNull(_0x256a5c[_0x53dd('0x5a')])?_0x256a5c['dialPrefix'][_0x53dd('0x191')]()||'':'',_0x256a5c['dialCutDigit']>0x0?_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]['substring'](_0x256a5c[_0x53dd('0x18f')]):_0x438322[_0x53dd('0x171')][_0x53dd('0x170')]),'callerid':_0x237a35,'Exten':_0x53dd('0x177'),'Context':_0x53dd('0x192'),'Priority':'1','variable':_0x16211e,'timeout':(_0x256a5c[_0x53dd('0x59')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1b3727})[_0x53dd('0xb8')](function(_0x325bc8){return _0x4e5c49(_0x325bc8);})[_0x53dd('0xb0')](function(_0x22e748){_0x256a5c['outboundOriginateFailureCallsDay']+=0x1;var _0x227886=new History(_0x168cea['actions'][_0x1b3727]);logger[_0x53dd('0x96')](util['format']('[originateError]:\x20%s',JSON[_0x53dd('0x46')](_0x22e748)));_0x227886[_0x53dd('0xa6')]=0xe;_0x227886['statedesc']=_0x53dd('0x193');_0x227886[_0x53dd('0xa8')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));_0x227886['endtime']=_0x227886[_0x53dd('0xa8')];_0x168cea[_0x53dd('0xcb')](_0x227886)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x194')));_0x168cea[_0x53dd('0xca')](_0x227886)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x194')))[_0x53dd('0x1e')](function(){delete _0x168cea[_0x53dd('0x126')][_0x1b3727];return _0x4bc48e(msgResponse(_0x53dd('0x16e'),_0x53dd('0x45'),_0x53dd('0x195')));});});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x2e')]=function(_0x324994){var _0x59846e=this[_0x53dd('0x126')][_0x324994['actionid']];if(_0x59846e){delete this[_0x53dd('0x126')][_0x324994['actionid']];_0x59846e[_0x53dd('0x115')]=moment()['format'](_0x53dd('0xff'));var _0x34c0a8=_0x59846e['type']===_0x53dd('0x7a')?this[_0x53dd('0x21')][_0x59846e[_0x53dd('0xb2')]]:this[_0x53dd('0xe8')][_0x59846e[_0x53dd('0x196')]()];if(!this[_0x53dd('0xda')](_0x324994[_0x53dd('0x197')])){this[_0x53dd('0xb4')](_0x34c0a8);return this[_0x53dd('0x198')](_0x59846e,_0x34c0a8,_0x324994)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x199')));}this[_0x53dd('0xaa')][_0x324994[_0x53dd('0xe2')]]=_0x59846e;}};Dialer['prototype'][_0x53dd('0x19a')]=function(_0x45ca17,_0x193113,_0xe5e806){var _0xe83b99=new History(_0x193113);if(_0xe83b99[_0x53dd('0xf6')]+_0xe83b99[_0x53dd('0xf7')]+_0xe83b99['countnoanswerretry']+_0xe83b99['countnosuchnumberretry']+_0xe83b99[_0x53dd('0x104')]+_0xe83b99[_0x53dd('0xf8')]+_0xe83b99[_0x53dd('0xf4')]+_0xe83b99[_0x53dd('0xf9')]>=_0xe5e806[_0x53dd('0x105')]-0x1){return!![];}switch(_0x45ca17){case 0x3:if(_0xe83b99[_0x53dd('0x102')]>=_0xe5e806[_0x53dd('0x19b')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countnoanswerretry':_0xe83b99['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x19c')],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99['ListId'],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x19d')));break;case 0x5:if(_0xe83b99[_0x53dd('0xf6')]>=_0xe5e806['dialBusyMaxRetry']-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countbusyretry':_0xe83b99[_0x53dd('0xf6')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x19e')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x19f')));break;case 0x8:if(_0xe83b99['countcongestionretry']>=_0xe5e806[_0x53dd('0x1a0')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0xe83b99['countcongestionretry']+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806['dialCongestionRetryFrequency'],_0x53dd('0x123'))[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe83b99['ContactId'],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a1')));break;case 0x0:if(_0xe83b99['countnosuchnumberretry']>=_0xe5e806['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0xe83b99[_0x53dd('0x103')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x1a2')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a3')));}break;case 0xa:if(_0xe83b99[_0x53dd('0x104')]>=_0xe5e806[_0x53dd('0x11b')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countdropretry':_0xe83b99[_0x53dd('0x104')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806[_0x53dd('0x11d')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1a4')));break;case 0xb:if(_0xe83b99[_0x53dd('0xf8')]>=_0xe5e806[_0x53dd('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0xe83b99[_0x53dd('0xf8')]+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x122')],_0x53dd('0x123'))[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x124')));break;case 0x13:if(_0xe83b99['countmachineretry']>=_0xe5e806['dialMachineMaxRetry']-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countmachineretry':_0xe83b99[_0x53dd('0xf4')]+=0x1,'scheduledat':moment()[_0x53dd('0x11c')](_0xe5e806['dialMachineRetryFrequency'],'minutes')[_0x53dd('0x78')](_0x53dd('0xff')),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99['VoiceQueueId']||undefined,'CampaignId':_0xe83b99['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x106')));break;case 0x14:if(_0xe83b99[_0x53dd('0xf9')]>=_0xe5e806[_0x53dd('0x1a6')]-0x1){return!![];}this[_0x53dd('0xc0')]({'active':![],'countagentrejectretry':_0xe83b99[_0x53dd('0xf9')]+=0x1,'scheduledat':moment()['add'](_0xe5e806[_0x53dd('0x1a7')],_0x53dd('0x123'))[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xe83b99[_0x53dd('0xd3')],'ListId':_0xe83b99[_0x53dd('0xd4')],'VoiceQueueId':_0xe83b99[_0x53dd('0xd6')]||undefined,'CampaignId':_0xe83b99[_0x53dd('0xd7')]||undefined})[_0x53dd('0xb0')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x53dd('0x1c')][_0x53dd('0x198')]=function(_0x3a2e38,_0x4f7df1,_0xb9e086){var _0x38a5a9=this;var _0x54e7b9=new History(_0x3a2e38);return new BPromise(function(_0x5851b9,_0x58caeb){if(_[_0x53dd('0x86')](_0x4f7df1)&&typeof _0x4f7df1!==_0x53dd('0x1a8')){return _0x58caeb(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x14a'),_0x53dd('0x1aa')));}if(_['isUndefined'](_0xb9e086)&&typeof _0xb9e086!==_0x53dd('0x1a8')){return _0x58caeb(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x14a'),_0x53dd('0x1ab')));}switch(_0xb9e086['reason']){case'0':_0x4f7df1['outboundNoSuchCallsDay']+=0x1;_0x54e7b9['state']=0x0;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1ac');_0x54e7b9[_0x53dd('0x103')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')](_0x53dd('0x1ad'),ut[_0x53dd('0xee')](_0x3a2e38,_0x53dd('0x1ae')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1af')));if(_0x38a5a9[_0x53dd('0x19a')](0x0,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countnosuchnumberretry']>=_0x4f7df1[_0x53dd('0x1b0')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b1'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b1'));}}break;case'3':_0x4f7df1['outboundNoAnswerCallsDay']+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0x3;_0x54e7b9['statedesc']='NoAnswer';_0x54e7b9[_0x53dd('0x102')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')](_0x53dd('0x1b2'),ut['buildObj'](_0x3a2e38,_0x53dd('0x1b3')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1b4')));if(_0x38a5a9[_0x53dd('0x19a')](0x3,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countnoanswerretry']>=_0x4f7df1['dialNoAnswerMaxRetry']){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b5'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b5'));}}break;case'5':_0x4f7df1[_0x53dd('0x5e')]+=0x1;_0x54e7b9['state']=0x5;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1b6');_0x54e7b9[_0x53dd('0xf6')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami['emit']('custom:agentbusy',ut['buildObj'](_0x3a2e38,'busy'));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x38a5a9[_0x53dd('0x19a')](0x5,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf6')]>=_0x4f7df1[_0x53dd('0x1b7')]){_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1b8'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x205\x20busy');}}break;case'8':_0x4f7df1[_0x53dd('0x5f')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0x8;_0x54e7b9['statedesc']=_0x53dd('0x1b9');_0x54e7b9[_0x53dd('0xf7')]+=0x1;_0x54e7b9[_0x53dd('0xf5')]+=0x1;ami[_0x53dd('0x49')]('custom:agentcongestion',ut[_0x53dd('0xee')](_0x3a2e38,_0x53dd('0x1ba')));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1bb')));if(_0x38a5a9[_0x53dd('0x19a')](0x8,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9['countcongestionretry']>=_0x4f7df1[_0x53dd('0x1a0')]){_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x208\x20congestion');}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,'reason\x208\x20congestion');}}break;case'11':_0x4f7df1[_0x53dd('0x1bc')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0xb;_0x54e7b9[_0x53dd('0xe9')]='Abandoned';_0x54e7b9['countabandonedretry']+=0x1;_0x54e7b9['countglobal']+=0x1;_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x125')));if(_0x38a5a9['checkRetriveMax'](0xb,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf8')]>=_0x4f7df1[_0x53dd('0x1a5')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1bd'));}else{_0x38a5a9['stateGlobal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1bd'));}}break;case'20':_0x4f7df1[_0x53dd('0x67')]+=0x1;_0x54e7b9['state']=0x14;_0x54e7b9[_0x53dd('0xe9')]=_0x53dd('0x1be');_0x54e7b9['countagentrejectretry']+=0x1;_0x54e7b9['countglobal']+=0x1;ami['emit']('custom:agentreject',ut[_0x53dd('0xee')](_0x3a2e38,'agentreject'));_0x38a5a9[_0x53dd('0xcb')](_0x54e7b9)[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1bf')));if(_0x38a5a9[_0x53dd('0x19a')](0x14,_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf9')]>=_0x4f7df1[_0x53dd('0x1a6')]){_0x38a5a9[_0x53dd('0xfd')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1c0'));}else{_0x38a5a9[_0x53dd('0xfa')](_0x54e7b9,_0x5851b9,_0x58caeb,_0x53dd('0x1c0'));}}break;default:_0x4f7df1[_0x53dd('0x68')]+=0x1;_0x54e7b9[_0x53dd('0xa6')]=0xc;_0x54e7b9[_0x53dd('0xe9')]=_0xb9e086[_0x53dd('0x1c1')];_0x38a5a9['createHistory'](_0x54e7b9)['catch'](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x38a5a9[_0x53dd('0x19a')](_0xb9e086[_0x53dd('0x1c1')],_0x3a2e38,_0x4f7df1)){if(_0x54e7b9[_0x53dd('0xf6')]+_0x54e7b9[_0x53dd('0xf7')]+_0x54e7b9[_0x53dd('0x102')]+_0x54e7b9[_0x53dd('0x103')]+_0x54e7b9[_0x53dd('0x104')]+_0x54e7b9[_0x53dd('0xf8')]+_0x54e7b9[_0x53dd('0xf4')]+_0x54e7b9['countagentrejectretry']>=_0x4f7df1[_0x53dd('0x105')]){_0x38a5a9['stateGlobal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0xb9e086[_0x53dd('0x1c1')]);}else{_0x38a5a9['createStateFinal'](_0x54e7b9,_0x5851b9,_0x58caeb,_0xb9e086[_0x53dd('0x1c1')]);}}}});};Dialer[_0x53dd('0x1c')][_0x53dd('0xfa')]=function(_0x126530,_0x4b96d0,_0xf96b76,_0x1b2a51){var _0x4e8a90=new Final(_0x126530);_0x4e8a90[_0x53dd('0xa6')]=0xf;_0x4e8a90['statedesc']='Global';this[_0x53dd('0xfd')](_0x4e8a90,_0x4b96d0,_0xf96b76,_0x1b2a51);};Dialer[_0x53dd('0x1c')]['createStateFinal']=function(_0x2a0a57,_0x206aa3,_0x43f698,_0x5da070){this[_0x53dd('0xca')](_0x2a0a57)[_0x53dd('0xb8')](function(){return _0x206aa3(msgResponse(_0x53dd('0x1a9'),_0x53dd('0x1c2'),_0x5da070));})['catch'](function(){return _0x43f698(msgResponse(_0x53dd('0x1c3'),_0x53dd('0x14a'),'contact\x20not\x20moved'));});};Dialer['prototype'][_0x53dd('0xb')]=function(_0x2c6d1e){var _0xf07e4f=_0x2c6d1e[_0x53dd('0x1c4')]/0x64;var _0x174b47=_0x2c6d1e[_0x53dd('0x62')]/(_0x2c6d1e[_0x53dd('0x62')]+_0x2c6d1e[_0x53dd('0x5c')]);var _0x21998a=Math[_0x53dd('0x1c5')](_0x2c6d1e[_0x53dd('0x72')]*(_0x2c6d1e[_0x53dd('0x1c6')]/0x64));var _0x47bb16=Math[_0x53dd('0x1c5')](_0x2c6d1e[_0x53dd('0x72')]*(_0x2c6d1e[_0x53dd('0x1c7')]/0x64));var _0x2d2f15=_0x2c6d1e[_0x53dd('0x4d')]+_0x2c6d1e[_0x53dd('0x52')];var _0x31f5f2=Math['floor'](_0x2c6d1e['erlangCalls']*_0x2c6d1e['erlangAbandonmentRate']*_0x2c6d1e['predictiveIntervalHitRate']*_0x2c6d1e['predictiveIntervalMultiplicativeFactor']);if(_[_0x53dd('0x86')](_0x2c6d1e[_0x53dd('0x26')])){if(!_['isUndefined'](_0x2c6d1e[_0x53dd('0x25')])){_0x2c6d1e[_0x53dd('0x25')]=undefined;loggerPredictive[_0x53dd('0x96')](_0x53dd('0x1c8'),_0x53dd('0x1c9'));}if(!_[_0x53dd('0x86')](_0x2c6d1e[_0x53dd('0x91')])){loggerPredictive[_0x53dd('0x96')](_0x53dd('0x1c8'),_0x53dd('0x1ca'));clearInterval(_0x2c6d1e[_0x53dd('0x91')]);_0x2c6d1e[_0x53dd('0x91')]=undefined;}_0x2c6d1e[_0x53dd('0x26')]=moment()[_0x53dd('0x78')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1cb'),_0x2c6d1e['startProgressive']);this['handlePower'](_0x2c6d1e,0x1);}else if(ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x26')])){this[_0x53dd('0x15f')](_0x2c6d1e,0x1);loggerPredictiveCalls[_0x53dd('0x7b')](_0x53dd('0x1cd'),_0x2c6d1e[_0x53dd('0x26')],_0x2c6d1e[_0x53dd('0x3d')]);_0x2c6d1e[_0x53dd('0x8b')]=0x0;_0x2c6d1e[_0x53dd('0x6e')]=0x0;}else if(_0xf07e4f<_0x174b47&&_0x2c6d1e['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x53dd('0x1ce'),_0x174b47,'startProgressive',_0x2c6d1e['name']);}else if(_0x31f5f2<_0x2c6d1e[_0x53dd('0x6e')]&&_0x2c6d1e[_0x53dd('0x1cf')]===_0x53dd('0x1d0')){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x1d1'),_0x53dd('0x1d2'),_0x31f5f2,_0x53dd('0x1d3'),_0x2c6d1e[_0x53dd('0x6e')],_0x53dd('0x26'),_0x2c6d1e[_0x53dd('0x3d')]);}else if(!ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x26')])&&_['isUndefined'](_0x2c6d1e['startPredictive'])&&!_[_0x53dd('0x86')](_0x2c6d1e['startProgressive'])){_0x2c6d1e[_0x53dd('0x25')]=moment()[_0x53dd('0x78')](_0x53dd('0xff'));loggerPredictive['info'](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1d4'),_0x2c6d1e['startPredictive']);this[_0x53dd('0xbd')](_0x2c6d1e[_0x53dd('0x1cc')])['then'](this[_0x53dd('0x1d5')](_0x2c6d1e))[_0x53dd('0xb8')](mergeDataErlangB(_0x2c6d1e))[_0x53dd('0xb8')](this[_0x53dd('0x1d6')](_0x2c6d1e))['catch'](loggerCatchPredictive(_0x53dd('0x1d7'),_0x2c6d1e));}else if(!ifInterval(_0x2c6d1e[_0x53dd('0x1cc')],_0x2c6d1e[_0x53dd('0x25')])){_0x2c6d1e[_0x53dd('0x6e')]=0x0;_0x2c6d1e[_0x53dd('0x25')]=moment()['format'](_0x53dd('0xff'));loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e[_0x53dd('0x3d')],_0x53dd('0x1d8'),_0x2c6d1e['startPredictive']);clearInterval(_0x2c6d1e[_0x53dd('0x91')]);_0x2c6d1e[_0x53dd('0x91')]=undefined;this[_0x53dd('0xbd')](_0x2c6d1e[_0x53dd('0x1cc')])[_0x53dd('0xb8')](this[_0x53dd('0x1d5')](_0x2c6d1e))[_0x53dd('0xb8')](mergeDataErlangB(_0x2c6d1e))[_0x53dd('0xb8')](this['startMethodPredictive'](_0x2c6d1e))[_0x53dd('0xb0')](loggerCatchPredictive(_0x53dd('0x1d9'),_0x2c6d1e));}else if(_0x2c6d1e[_0x53dd('0x72')]&&_0x2d2f15<_0x2c6d1e['predictiveIntervalAvailable']-_0x47bb16){freeVariablesPredictive(_0x2c6d1e);loggerPredictive[_0x53dd('0x7b')](_0x2c6d1e['name'],_0x53dd('0x1da'),_0x2d2f15,_0x53dd('0x1db'),_0x2c6d1e[_0x53dd('0x72')],'-',_0x47bb16,'=',_0x2c6d1e[_0x53dd('0x72')]-_0x47bb16,')');}else if(_0x2c6d1e[_0x53dd('0x72')]&&_0x2d2f15>_0x2c6d1e['predictiveIntervalAvailable']+_0x21998a){freeVariablesPredictive(_0x2c6d1e);loggerPredictive['info'](_0x2c6d1e[_0x53dd('0x3d')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x2d2f15,_0x53dd('0x1dc'),_0x2c6d1e[_0x53dd('0x72')],'+',_0x21998a,'=',_0x2c6d1e[_0x53dd('0x72')]+_0x21998a,')');}};Dialer[_0x53dd('0x1c')][_0x53dd('0x1d5')]=function(_0x27a199){var _0x534b1e=this;return function(_0x443152){return new BPromise(function(_0xe1248f,_0x18f143){_['merge'](_0x27a199,_0x443152[0x0]);if(checkGetDataPredictive(_0x443152[0x0])){var _0x556d66=_0x27a199[_0x53dd('0x72')]=_0x27a199['talking']+_0x27a199[_0x53dd('0x4d')];var _0x515655=_0x27a199[_0x53dd('0x1cc')]*0x3c;var _0x2be5db=_0x443152[0x0][_0x53dd('0x6b')]+_0x443152[0x0][_0x53dd('0x6a')];var _0x4b66fb=(_0x443152[0x0][_0x53dd('0x69')]+_0x443152[0x0][_0x53dd('0x6c')]+_0x443152[0x0][_0x53dd('0x82')])/_0x443152[0x0][_0x53dd('0x7e')];_0x27a199['predictiveIntervalHitRate']=_0x4b66fb>0x0?_0x4b66fb:0x1;switch(_0x27a199['dialPredictiveOptimization']){case _0x53dd('0x1d0'):var _0x367808=_0x27a199[_0x53dd('0x1c4')]/0x64;return _0x534b1e[_0x53dd('0x1dd')](_0x556d66,_0x515655,_0x2be5db,_0x4b66fb,_0x367808)[_0x53dd('0xb8')](function(_0x1435eb){return _0xe1248f(_0x1435eb);});case _0x53dd('0x1de'):var _0x351a8f=_0x27a199['dialPredictiveOptimizationPercentage']/0x64;return _0x534b1e[_0x53dd('0x1df')](_0x556d66,_0x515655,_0x2be5db,_0x4b66fb,_0x351a8f)[_0x53dd('0xb8')](function(_0x7b90e5){return _0xe1248f(_0x7b90e5);});default:return _0x18f143(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e1')));}}else{return _0x18f143(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e2')));}});};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1e3')]=function(_0x16979e){var _0x168466=this;return function(_0x414163){return new BPromise(function(_0x39554a,_0x22cb75){_[_0x53dd('0x8e')](_0x16979e,_0x414163[0x0]);if(checkGetDataPredictive(_0x414163[0x0])){loggerPredictive[_0x53dd('0x7b')](JSON['stringify'](_0x414163[0x0]));if(_0x16979e['dialPredictiveOptimization']===_0x53dd('0x1d0')){return _0x168466[_0x53dd('0xc8')](_0x16979e['id'])[_0x53dd('0xb8')](function(_0x48d1ff){var _0x6e1e7b=_0x16979e[_0x53dd('0x4e')]-_0x48d1ff[0x0][_0x53dd('0x1e4')];var _0x41e59c=_0x16979e[_0x53dd('0x1cc')]*0x3c;var _0x275877=_0x414163[0x0][_0x53dd('0x6b')]+_0x414163[0x0][_0x53dd('0x6a')];var _0x137b4d=(_0x414163[0x0][_0x53dd('0x69')]+_0x414163[0x0][_0x53dd('0x6c')]+_0x414163[0x0][_0x53dd('0x82')])/_0x414163[0x0][_0x53dd('0x7e')];var _0x535c3e=_0x16979e['dialPredictiveOptimizationPercentage']/0x64;_0x16979e[_0x53dd('0x71')]=_0x48d1ff[0x0]['outboundQueuePauses']||0x0;_0x16979e[_0x53dd('0x6f')]=_0x137b4d>0x0?_0x137b4d:0x1;return _0x168466[_0x53dd('0x1dd')](_0x6e1e7b,_0x41e59c,_0x275877,_0x137b4d,_0x535c3e);})[_0x53dd('0xb8')](function(_0x215803){return _0x39554a(_0x215803);})[_0x53dd('0xb0')](function(_0x5a9149){return _0x22cb75(msgResponse(_0x53dd('0x1e5'),_0x53dd('0x14a'),JSON['stringify'](_0x5a9149)));});}if(_0x16979e[_0x53dd('0x1cf')]===_0x53dd('0x1de')){return _0x168466['getVoiceQueueRtPauses'](_0x16979e['id'])[_0x53dd('0xb8')](function(_0xf97f8){var _0x4bf7e2=_0x16979e[_0x53dd('0x4e')]-_0xf97f8[0x0]['outboundQueuePauses'];var _0x43577e=_0x16979e[_0x53dd('0x1cc')]*0x3c;var _0x5235df=_0x414163[0x0][_0x53dd('0x6b')]+_0x414163[0x0][_0x53dd('0x6a')];var _0x4cd7d6=(_0x414163[0x0]['predictiveIntervalAnsweredCalls']+_0x414163[0x0][_0x53dd('0x6c')]+_0x414163[0x0][_0x53dd('0x82')])/_0x414163[0x0][_0x53dd('0x7e')];var _0x35cef5=_0x16979e[_0x53dd('0x1c4')]/0x64;_0x16979e[_0x53dd('0x71')]=_0xf97f8[0x0]['outboundQueuePauses']||0x0;_0x16979e[_0x53dd('0x6f')]=_0x4cd7d6>0x0?_0x4cd7d6:0x1;return _0x168466[_0x53dd('0x1df')](_0x4bf7e2,_0x43577e,_0x5235df,_0x4cd7d6,_0x35cef5);})[_0x53dd('0xb8')](function(_0x3e5382){return _0x39554a(_0x3e5382);})['catch'](function(_0x242e8b){return _0x22cb75(msgResponse(_0x53dd('0x1e5'),_0x53dd('0x14a'),JSON[_0x53dd('0x46')](_0x242e8b)));});}}else{return _0x22cb75(msgResponse(_0x53dd('0x1e0'),_0x53dd('0x14a'),_0x53dd('0x1e2')));}});};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1d6')]=function(_0x186b58){var _0x42b2c0=this;return function(){var _0x23d518=0x0;var _0xcf373e=Math[_0x53dd('0x1e6')](_0x186b58[_0x53dd('0x74')]*0x3e8);if(_0xcf373e>0x0){_0xcf373e=_0xcf373e<0x64?0x64:_0xcf373e;loggerPredictive[_0x53dd('0x7b')](_0x186b58[_0x53dd('0x3d')],_0x53dd('0x1e7'),_0xcf373e,_0x53dd('0x47'));_0x186b58[_0x53dd('0x91')]=setInterval(function(){_0x42b2c0['handlePredictive'](_0x186b58);loggerPredictiveCalls[_0x53dd('0x7b')]('[handlePredictive]',_0x23d518+=0x1);},_0xcf373e);}else{loggerPredictive[_0x53dd('0x7b')](_0x186b58['name'],_0x53dd('0x1e8'));}};};Dialer[_0x53dd('0x1c')][_0x53dd('0x1e9')]=function(_0xb9eab8,_0x4ae1ec){var _0x1ad5e4=this;return function(_0x42fdf3){if(_[_0x53dd('0x42')](_0x42fdf3)){if(_[_0x53dd('0xac')](_0x4ae1ec['UserId'])||!_0x4ae1ec[_0x53dd('0x1ea')]){if(_0xb9eab8[_0x53dd('0x56')]===_0x53dd('0xa')){_0xb9eab8[_0x53dd('0x130')]=_['isUndefined'](_0xb9eab8['queueStatusComplete'])?!![]:_0xb9eab8[_0x53dd('0x130')];var _0x587048=uuid['v4']();_0x1ad5e4[_0x53dd('0x126')][_0x587048]=new Action(_0xb9eab8,_0x4ae1ec,_0x587048);loggerBooked['info'](_0x53dd('0x1eb'),_0x587048,_0x53dd('0x1ec'),JSON[_0x53dd('0x46')](_0xb9eab8[_0x53dd('0x130')]),_0x53dd('0x1ed'),_0xb9eab8['name']);if(_0xb9eab8['queueStatusComplete']){_0xb9eab8[_0x53dd('0x130')]=![];_0x1ad5e4[_0x53dd('0x28')][_0x1ad5e4[_0x53dd('0x126')][_0x587048][_0x53dd('0xb2')]]=[];ami[_0x53dd('0xad')]({'actionid':_0x587048,'action':_0x53dd('0x1ee'),'queue':_0xb9eab8[_0x53dd('0x3d')]})[_0x53dd('0xb0')](function(){_0x1ad5e4['updateOriginated'](_0xb9eab8);_0x1ad5e4[_0x53dd('0xc0')]({'active':![],'ContactId':_0x1ad5e4['actions'][_0x587048][_0x53dd('0xd3')],'ListId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['ListId'],'VoiceQueueId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['VoiceQueueId']||undefined,'CampaignId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1ef')));delete _0x1ad5e4[_0x53dd('0x126')][_0x587048];});}else{loggerBooked[_0x53dd('0x7b')]('[booked][checkContactBlack][else]',JSON[_0x53dd('0x46')](_0xb9eab8[_0x53dd('0x130')]),'Queue:\x20',_0xb9eab8[_0x53dd('0x3d')]);_0x1ad5e4['updateOriginated'](_0xb9eab8);_0x1ad5e4[_0x53dd('0xc0')]({'active':![],'ContactId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['ContactId'],'ListId':_0x1ad5e4[_0x53dd('0x126')][_0x587048][_0x53dd('0xd4')],'VoiceQueueId':_0x1ad5e4['actions'][_0x587048][_0x53dd('0xd6')]||undefined,'CampaignId':_0x1ad5e4[_0x53dd('0x126')][_0x587048]['CampaignId']||undefined})[_0x53dd('0xb0')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1ad5e4['actions'][_0x587048];}}else{return _0x1ad5e4[_0x53dd('0x1f0')](_0xb9eab8,_0x4ae1ec);}}else{if(getDiff(_0x4ae1ec[_0x53dd('0x1f1')])<_0xb9eab8['dialRecallMeTimeout']*0x3c){if(_0x4ae1ec['Agent']&&!_0x4ae1ec[_0x53dd('0x1f2')][_0x53dd('0x1f3')]){_0x1ad5e4[_0x53dd('0x20')][_0x53dd('0x133')](_0x4ae1ec['id'])[_0x53dd('0x1e')](function(){_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);});}else{_0x1ad5e4[_0x53dd('0xc1')]({'active':![]},_0x4ae1ec['id'],0x1)['finally'](function(){_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);});}}else{_0xb9eab8[_0x53dd('0x66')]+=0x1;_0x1ad5e4[_0x53dd('0xb4')](_0xb9eab8);if(_0xb9eab8['dialRecallInQueue']){_0x1ad5e4['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x4ae1ec['ContactId'],'ListId':_0x4ae1ec['ListId'],'VoiceQueueId':_0x4ae1ec[_0x53dd('0xd6')]||undefined,'CampaignId':_0x4ae1ec['CampaignId']||undefined})['catch'](loggerCatch(_0x53dd('0x1f4')));_0x1ad5e4[_0x53dd('0xcb')](createObjHistory(_0xb9eab8,_0x4ae1ec,_0x53dd('0x1f5'),0x17,'RecallInQueue'))[_0x53dd('0xb0')](loggerCatch(_0x53dd('0x1f6')));}else{_0x1ad5e4['saveInDb'](createObjHistory(_0xb9eab8,_0x4ae1ec,_0x53dd('0x1f7'),0x16,_0x53dd('0x1f8')),_0x53dd('0x1f9'),_0x53dd('0x1fa'));}}}}else{_0xb9eab8['outboundBlacklistCallsDay']+=0x1;_0x1ad5e4[_0x53dd('0xe0')](createObjHistory(_0xb9eab8,_0x4ae1ec,'BLACKLIST',0xd,_0x53dd('0x1fb')),_0x53dd('0x1fc'),_0x53dd('0x1fd'));throw _0x53dd('0x1fe');}};};Dialer[_0x53dd('0x1c')]['handleIvr']=function(_0x42ca0f){var _0xe558a0=this;var _0x292d6e=_0x42ca0f[_0x53dd('0x1ff')]-_0x42ca0f[_0x53dd('0x73')]-_0x42ca0f[_0x53dd('0xc4')];emitCampaignSummary(_0x42ca0f);if(_0x292d6e>0x0){if(_0x292d6e>this['maxNumberOriginate']){_0x292d6e=this[_0x53dd('0x200')];}_0x42ca0f[_0x53dd('0xc4')]+=_0x292d6e;this[_0x53dd('0xc6')](_0x42ca0f['id'],_0x292d6e,_0x42ca0f['dialOrderByScheduledAt'],_0x42ca0f)[_0x53dd('0xb8')](function(_0x2f8825){_0x42ca0f[_0x53dd('0xc4')]-=_0x292d6e;_0x42ca0f[_0x53dd('0xc4')]=_0x42ca0f[_0x53dd('0xc4')]>0x0?_0x42ca0f[_0x53dd('0xc4')]:0x0;if(!checkContactEmpty(_0x2f8825)){_0x42ca0f[_0x53dd('0x3b')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x53dd('0x7b')](_0x53dd('0x201')+_0x42ca0f['name']);}else{_0x42ca0f['originated']+=_0x2f8825['length'];_0x42ca0f[_0x53dd('0x3b')]='RUNNING';for(var _0x286a64=0x0;_0x286a64<_0x2f8825[_0x53dd('0x137')];_0x286a64+=0x1){_0x42ca0f[_0x53dd('0x202')]+=0x1;if(_['isNil'](_0x2f8825[_0x286a64])||_[_0x53dd('0xac')](_0x2f8825[_0x286a64][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x2f8825[_0x286a64]['Contact'][_0x53dd('0x170')])){_0xe558a0[_0x53dd('0xd0')](_0x53dd('0x203'),_0x42ca0f,_0x2f8825[_0x286a64]);}else{_0xe558a0[_0x53dd('0xbc')](_[_0x53dd('0xd2')](_0x2f8825[_0x286a64],[_0x53dd('0xd7'),_0x53dd('0x204')]))[_0x53dd('0xb8')](_0xe558a0['checkContactBlack'](_0x42ca0f,_0x2f8825[_0x286a64]))[_0x53dd('0xb0')](_0xe558a0['loggerHandler'](_0x53dd('0x205'),_0x42ca0f));}}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x206'),_0x42ca0f,_0x292d6e));}};Dialer['prototype'][_0x53dd('0x15f')]=function(_0x564c9a,_0x4dd580){var _0x17e129=this;var _0x3f8c5d=[];var _0x235bc2=_0x4dd580>=0x1?_0x4dd580:0x1;if(_0x564c9a[_0x53dd('0x56')]==='booked'){_0x235bc2=0x1;}var _0x18a330=Math[_0x53dd('0x1e6')](_0x564c9a[_0x53dd('0x4d')]*_0x235bc2)-_0x564c9a['originated']-_0x564c9a[_0x53dd('0xc4')];emitVoiceQueueSummary(_0x564c9a);if(_0x564c9a[_0x53dd('0x207')]>0x0){var _0x126a58=_0x564c9a[_0x53dd('0x207')]-_0x564c9a[_0x53dd('0x73')]-_0x564c9a[_0x53dd('0x52')]-_0x564c9a['temp']-_0x564c9a[_0x53dd('0x4f')];if(_0x18a330>_0x126a58){_0x18a330=_0x126a58;}}if(_0x18a330>0x0){if(_0x564c9a['dialMethod']==='booked'){_0x18a330=0x1;}if(_0x18a330>this[_0x53dd('0x200')]){_0x18a330=this['maxNumberOriginate'];}_0x564c9a[_0x53dd('0xc4')]+=_0x18a330;for(var _0x2a341a in this[_0x53dd('0x22')]){if(typeof this[_0x53dd('0x22')][_0x2a341a]!==_0x53dd('0x98')){if(this[_0x53dd('0x22')][_0x2a341a][_0x53dd('0xa6')]==='not_inuse'&&this[_0x53dd('0x22')][_0x2a341a][_0x53dd('0xae')]===_0x53dd('0xdd')){_0x3f8c5d[_0x53dd('0x12d')](this[_0x53dd('0x22')][_0x2a341a]['id']);}}}this['getContactDialer'](_0x564c9a['id'],_0x3f8c5d,_0x18a330,_0x564c9a[_0x53dd('0x208')],_0x564c9a)[_0x53dd('0xb8')](function(_0x164a44){_0x564c9a[_0x53dd('0xc4')]-=_0x18a330;_0x564c9a['temp']=_0x564c9a[_0x53dd('0xc4')]>0x0?_0x564c9a[_0x53dd('0xc4')]:0x0;if(!checkContactEmpty(_0x164a44)){_0x17e129[_0x53dd('0xb6')](_0x564c9a)[_0x53dd('0xb8')](sendMessageReschedule(_0x564c9a))['catch'](loggerCatch(_0x53dd('0xb9')));}else{_0x564c9a[_0x53dd('0x73')]+=_0x164a44[_0x53dd('0x137')];_0x564c9a['message']=_0x564c9a['dialMethod']===_0x53dd('0xa')?_0x53dd('0x209'):_0x53dd('0x20a');for(var _0x31c7f5=0x0;_0x31c7f5<_0x164a44['length'];_0x31c7f5+=0x1){if(_[_0x53dd('0xac')](_0x164a44[_0x31c7f5])||_[_0x53dd('0xac')](_0x164a44[_0x31c7f5][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x164a44[_0x31c7f5][_0x53dd('0x171')][_0x53dd('0x170')])){_0x17e129['emptyContact'](_0x53dd('0x203'),_0x564c9a,_0x164a44[_0x31c7f5]);}else{_0x17e129[_0x53dd('0xba')](_[_0x53dd('0xd2')](_0x164a44[_0x31c7f5],[_0x53dd('0xd6'),_0x53dd('0x204')]))['then'](_0x17e129[_0x53dd('0x1e9')](_0x564c9a,_0x164a44[_0x31c7f5]))[_0x53dd('0xb0')](_0x17e129[_0x53dd('0xcf')]('[actionOriginate]\x20',_0x564c9a));}}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x20b'),_0x564c9a,_0x18a330));}};Dialer[_0x53dd('0x1c')][_0x53dd('0x91')]=function(_0x332176){if(_0x332176['dialLimitQueue']>0x0){var _0x4174b5=_0x332176['dialLimitQueue']-_0x332176[_0x53dd('0x73')]-_0x332176[_0x53dd('0x52')];if(_0x4174b5>0x0){this[_0x53dd('0x20c')](_0x332176);}else{loggerPredictiveCalls[_0x53dd('0x7b')](_0x53dd('0x20d'));}}else{this[_0x53dd('0x20c')](_0x332176);}};Dialer['prototype'][_0x53dd('0x20c')]=function(_0xbc1e3a){var _0x435d62=this;var _0x3fa85c=[];_0xbc1e3a['originated']+=0x1;for(var _0x4a710e in this['agents']){if(typeof this['agents'][_0x4a710e]!=='undefined'){if(this[_0x53dd('0x22')][_0x4a710e]['state']===_0x53dd('0x20e')&&this[_0x53dd('0x22')][_0x4a710e][_0x53dd('0xae')]==='reachable'){_0x3fa85c[_0x53dd('0x12d')](this[_0x53dd('0x22')][_0x4a710e]['id']);}}}this[_0x53dd('0xc3')](_0xbc1e3a['id'],_0x3fa85c,0x1,_0xbc1e3a[_0x53dd('0x208')],_0xbc1e3a)[_0x53dd('0xb8')](function(_0x37483b){if(!checkContactEmpty(_0x37483b)){checkContactLowerLimitOriginate(_0xbc1e3a,0x1,0x0);_0x435d62['countReScheduled'](_0xbc1e3a)[_0x53dd('0xb8')](sendMessageReschedule(_0xbc1e3a))[_0x53dd('0xb0')](loggerCatch('[countReScheduled]\x20'));}else{_0xbc1e3a[_0x53dd('0x3b')]='RUNNING';if(_['isNil'](_0x37483b[0x0])||_[_0x53dd('0xac')](_0x37483b[0x0][_0x53dd('0x171')])||_[_0x53dd('0xac')](_0x37483b[0x0][_0x53dd('0x171')][_0x53dd('0x170')])){_0x435d62[_0x53dd('0xd0')](_0x53dd('0x203'),_0xbc1e3a,_0x37483b[0x0]);}else{_0x435d62['checkIsBlackList'](_['pick'](_0x37483b[0x0],[_0x53dd('0xd6'),'Contact.phone']))[_0x53dd('0xb8')](_0x435d62['checkContactBlack'](_0xbc1e3a,_0x37483b[0x0]))[_0x53dd('0xb0')](_0x435d62['loggerHandler'](_0x53dd('0x20f'),_0xbc1e3a));}}})[_0x53dd('0xb0')](loggerGetContactDialer(_0x53dd('0x210'),_0xbc1e3a,0x1));emitVoiceQueueSummary(_0xbc1e3a);};Dialer[_0x53dd('0x1c')]['abandonmentRate']=function(_0x165965,_0x53592a,_0x11e847,_0x464997,_0x48de44,_0x1d3e8e){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x211'));loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x212'),_0x165965);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x213'),_0x53592a);loggerPredictive[_0x53dd('0x7b')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x11e847);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x214'),_0x464997);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x215'),_0x48de44);loggerPredictive[_0x53dd('0x7b')]('---------------------------');return new BPromise(function(_0x19659e,_0x3bc2f7){if(_0x165965<=0x0||isNaN(_0x165965)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),_0x53dd('0x217')+_0x165965));}if(_0x11e847<=0x0||isNaN(_0x11e847)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),'Ts\x20=\x20'+_0x11e847));}if(_0x464997<=0x0||isNaN(_0x464997)){return _0x3bc2f7(msgResponse('[abandonmentRate]',_0x53dd('0x45'),_0x53dd('0x218')+_0x464997));}if(_0x53592a<=0x0||isNaN(_0x53592a)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),'interval\x20=\x20'+_0x53592a));}if(_0x48de44<=0x0||isNaN(_0x48de44)){return _0x3bc2f7(msgResponse(_0x53dd('0x216'),_0x53dd('0x45'),_0x53dd('0x219')+_0x48de44));}_0x1d3e8e=_0x1d3e8e||0x0;var _0x413f8d=0x1/_0x11e847;var _0x1c54a5=0x0;var _0x283612=0x0;var _0x12f7dd=0x0;var _0x5ad4e6=0x0;for(var _0x2ac9a3=0x0;_0x12f7dd<_0x48de44;_0x2ac9a3+=0x1){_0x283612=_0x2ac9a3/_0x53592a;_0x1c54a5=(_0x464997*_0x283612+_0x1d3e8e)/_0x413f8d;_0x12f7dd=erlangb(_0x1c54a5,_0x165965);_0x5ad4e6=_0x1c54a5/_0x165965*(0x1-erlangb(_0x1c54a5,_0x165965));}return _0x19659e({'erlangCalls':_0x2ac9a3,'erlangCallToSecond':_0x53592a/_0x2ac9a3,'erlangAbandonmentRate':_0x12f7dd,'erlangBusyFactor':_0x5ad4e6});});};Dialer[_0x53dd('0x1c')][_0x53dd('0x1df')]=function(_0x446249,_0x5d9701,_0x5da745,_0x3b19a7,_0x3029f9,_0x2262ab){loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x21a'));loggerPredictive['info'](_0x53dd('0x212'),_0x446249);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x213'),_0x5d9701);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x21b'),_0x5da745);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x214'),_0x3b19a7);loggerPredictive['info'](_0x53dd('0x21c'),_0x3029f9);loggerPredictive[_0x53dd('0x7b')](_0x53dd('0x84'));return new BPromise(function(_0x51d930,_0x4f6732){if(_0x446249<=0x0||isNaN(_0x446249)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),'m\x20=\x20'+_0x446249));}if(_0x5da745<=0x0||isNaN(_0x5da745)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x21e')+_0x5da745));}if(_0x3b19a7<=0x0||isNaN(_0x3b19a7)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x218')+_0x3b19a7));}if(_0x5d9701<=0x0||isNaN(_0x5d9701)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),'Error','interval\x20=\x20'+_0x5d9701));}if(_0x3029f9<=0x0||isNaN(_0x3029f9)){return _0x4f6732(msgResponse(_0x53dd('0x21d'),_0x53dd('0x45'),_0x53dd('0x21f')+_0x3029f9));}_0x2262ab=_0x2262ab||0x0;var _0x4c351e=0x1/_0x5da745;var _0x207add=0x0;var _0x4f37ab=0x0;var _0x381cd4=0x0;var _0x4f9f48=0x0;for(var _0xec5fc7=0x0;_0x4f9f48<_0x3029f9;_0xec5fc7+=0x1){_0x4f37ab=_0xec5fc7/_0x5d9701;_0x207add=(_0x3b19a7*_0x4f37ab+_0x2262ab)/_0x4c351e;_0x381cd4=erlangb(_0x207add,_0x446249);_0x4f9f48=_0x207add/_0x446249*(0x1-erlangb(_0x207add,_0x446249));}return _0x51d930({'erlangCalls':_0xec5fc7,'erlangCallToSecond':_0x5d9701/_0xec5fc7,'erlangAbandonmentRate':_0x381cd4,'erlangBusyFactor':_0x4f9f48});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x58e5=['\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','isArray','Action','iftime\x20%s,%s','interval','indexOf','true','command','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialTimezone','[syncQueueSummary]','dialGlobalInterval','[syncCampaigns]','pow','replace','random','match','actionOriginate','object','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-CAMPAIGNID','tags','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialCutDigit','SIP/%s/%s%s','trim','substring','OriginateError','[originate][error]','Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dropRate','abandonmentRate','agentBusyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','busyFactor','erlangCallToSecond','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','../preview/util/util','dialer','booked','predictive','../../../config/logger','defaults','redis','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./history','./final','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','rrmemory','roundrobin','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','syncAgentConnect','syncQueueCallerAbandon','bind','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','queuemember','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','isEmpty','Intervals','stringify','milliseconds','seconds','emit','outbound','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','Trunk','callerid','format','voice:queue:%s','type','ivr','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','merge','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','IS_DISACTIVED','state','statedesc','endtime','prototype','clearZombieChannels','[actions]','undefined','isNil','status','catch','No\x20such\x20channel','queue','[Dialer][checkChannel]','updateOriginated','[Dialer][checkChannel][ivr]','countReScheduled','resolve','[countReScheduled]\x20','checkIsBlackList','then','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','Success','active','reachable','SIP/%s','syncVarSet','amdstatus','exten','value','uniqueid','HangupInAMD','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','countglobal','amd','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','ListId','CampaignId','[rescheduleContact][Machine]','HANGUP','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','dialAMDActive','[syncAgentComplete][createHistory][0]','countcongestionretry','minutes','YYYY-MM-DD\x20HH:mm:ss','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','AnswerAGI','[syncHangupIvr]','dialQueueProject','cause-txt','Unknow','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','Drop','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','starttime','calleridname','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','[rescheduleContact][Abandoned]','calleridnum','[syncAgentComplete][createHistory][11]','syncNewExten','channel','actionid','locked','paused','stateinterface','strategy','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','preview','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','Agent:\x20','[booked][RR][finaly]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','isTrunkReachable','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','INTERVAL_IS_EMPTY'];(function(_0x4c6fb0,_0x2e708f){var _0x41b11e=function(_0x56a523){while(--_0x56a523){_0x4c6fb0['push'](_0x4c6fb0['shift']());}};_0x41b11e(++_0x2e708f);}(_0x58e5,0xd1));var _0x558e=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x58e5[_0x255d5b];return _0x3e141a;};'use strict';var util=require(_0x558e('0x0'));var _=require(_0x558e('0x1'));var BPromise=require(_0x558e('0x2'));var uuid=require(_0x558e('0x3'));var moment=require(_0x558e('0x4'));var rr=require('rr');var md5=require(_0x558e('0x5'));var Redis=require('ioredis');var ut=require(_0x558e('0x6'));var config=require('../../../config/environment/');var logger=require('../../../config/logger')(_0x558e('0x7'));var loggerBooked=require('../../../config/logger')(_0x558e('0x8'));var loggerPredictive=require('../../../config/logger')(_0x558e('0x9'));var loggerPredictiveCalls=require(_0x558e('0xa'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require('../ami');config['redis']=_[_0x558e('0xb')](config[_0x558e('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0x558e('0xd'))(new Redis(config[_0x558e('0xc')]));var cmHopper=require(_0x558e('0xe'));var cmHopperHistory=require(_0x558e('0xf'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x558e('0x10'));var Action=require('./action');var History=require(_0x558e('0x11'));var Final=require(_0x558e('0x12'));var AgentComplete=require(_0x558e('0x13'));var QueueCallerAbandon=require(_0x558e('0x14'));var Hangup=require('./hangup');var ipAgi=process[_0x558e('0x15')][_0x558e('0x16')]||'127.0.0.1';var strategy={'rrmemory':_0x558e('0x17'),'roundrobin':_0x558e('0x18')};var Sequence=function(){};Sequence['prototype'][_0x558e('0x19')]=function(_0x5ddb02){this[_0x558e('0x1a')]=this[_0x558e('0x1a')]?this['tail'][_0x558e('0x1b')](_0x5ddb02):_0x5ddb02();};function Dialer(_0x110094,_0x3837a8){this[_0x558e('0x1c')]=new Sequence();this['preview']=_0x3837a8;this[_0x558e('0x1d')]=_0x110094[_0x558e('0x1d')];this[_0x558e('0x1e')]=_0x110094[_0x558e('0x1e')];this[_0x558e('0x1f')]=_0x110094[_0x558e('0x1f')];this[_0x558e('0x20')]=_0x110094['trunks'];this['maxNumberOriginate']=config[_0x558e('0x21')]||0x2;this[_0x558e('0x22')]={};this[_0x558e('0x23')]={};this[_0x558e('0x24')]={};this[_0x558e('0x25')]={};this[_0x558e('0x26')]={};this[_0x558e('0x27')]={};this[_0x558e('0x28')]={};this[_0x558e('0x29')]={};this[_0x558e('0x2a')]={};this['queueBookedRR']={};ami['on'](_0x558e('0x2b'),this[_0x558e('0x2c')]['bind'](this));ami['on']('queuecallerabandon',this[_0x558e('0x2d')][_0x558e('0x2e')](this));ami['on'](_0x558e('0x2f'),this[_0x558e('0x30')]['bind'](this));ami['on'](_0x558e('0x31'),this[_0x558e('0x32')]['bind'](this));ami['on'](_0x558e('0x33'),this['syncQueueSummary'][_0x558e('0x2e')](this));ami['on'](_0x558e('0x34'),this[_0x558e('0x35')][_0x558e('0x2e')](this));ami['on']('newexten',this['syncNewExten'][_0x558e('0x2e')](this));ami['on']('varset',this['syncVarSet'][_0x558e('0x2e')](this));ami['on'](_0x558e('0x36'),this[_0x558e('0x37')][_0x558e('0x2e')](this));ami['on'](_0x558e('0x38'),this['syncQueueStatusComplete'][_0x558e('0x2e')](this));this[_0x558e('0x39')]();this[_0x558e('0x3a')]();}function isNotNull(_0x5aa0ae){return _0x5aa0ae!==null&&!_[_0x558e('0x3b')](_0x5aa0ae);}function checkIsLoggedIn(_0x3b60b8,_0x254528){return function(){if(_0x254528<=0x0){_0x3b60b8[_0x558e('0x3c')]=_0x558e('0x3d');throw _0x3b60b8[_0x558e('0x3e')]+_0x558e('0x3f');}};}function isActive(_0x487f38){return _0x487f38;}function checkIsActive(_0x15d5fc,_0x1f8997){return function(){if(!isActive(_0x1f8997)){_0x15d5fc['message']=_0x558e('0x40');throw _0x15d5fc[_0x558e('0x3e')]+_0x558e('0x41');}};}function checkInterval(_0x1abba6){return function(){if(!isNotNull(_0x1abba6['Interval'])){_0x1abba6['message']=_0x558e('0x42');throw _0x1abba6[_0x558e('0x3e')]+_0x558e('0x43');}if(!isNotNull(_0x1abba6[_0x558e('0x44')]['Intervals'])){_0x1abba6['message']=_0x558e('0x42');throw _0x1abba6[_0x558e('0x3e')]+_0x558e('0x43');}if(!isNotNull(_[_0x558e('0x45')](_0x1abba6[_0x558e('0x44')][_0x558e('0x46')]))){_0x1abba6[_0x558e('0x3c')]=_0x558e('0x42');throw _0x1abba6[_0x558e('0x3e')]+_0x558e('0x43');}};}function msgResponse(_0xd8020b,_0x54bc1c,_0x32764b){return{'action':_0xd8020b,'response':_0x54bc1c,'message':_0x32764b,'stack':_0x32764b};}function myreject(_0x1be8de){return function(_0x4fc92a){return _0x1be8de(msgResponse('[ifTime][Action]','Error',JSON[_0x558e('0x47')](_0x4fc92a)));};}function getSeconds(_0x17a2b5,_0x5c50c4){var _0x362e39=moment(_0x17a2b5)[_0x558e('0x48')](0x0);var _0x449d74=moment(_0x5c50c4)[_0x558e('0x48')](0x0);return _0x362e39['diff'](_0x449d74,_0x558e('0x49'));}function emit(_0xd8ad70,_0x5614b8,_0x48bdb4){io['to'](_0xd8ad70)[_0x558e('0x4a')](_0x5614b8,_0x48bdb4);}function emitVoiceQueueSummary(_0x289adc){if(_0x289adc['type']===_0x558e('0x4b')){var _0x3f8f91={'id':_0x289adc['id'],'name':_0x289adc[_0x558e('0x3e')],'strategy':_0x289adc['strategy'],'answered':_0x289adc[_0x558e('0x4c')],'available':_0x289adc[_0x558e('0x4d')],'loggedIn':_0x289adc[_0x558e('0x4e')],'pTalking':_0x289adc[_0x558e('0x4f')],'sumBillable':_0x289adc[_0x558e('0x50')],'sumDuration':_0x289adc[_0x558e('0x51')],'sumHoldTime':_0x289adc[_0x558e('0x52')]||0x0,'talking':_0x289adc[_0x558e('0x53')],'total':_0x289adc[_0x558e('0x54')],'type':_0x289adc['type'],'unmanaged':_0x289adc[_0x558e('0x55')],'abandoned':_0x289adc[_0x558e('0x56')],'waiting':_0x289adc[_0x558e('0x57')],'loggedInDb':_0x289adc[_0x558e('0x58')],'dialActive':_0x289adc[_0x558e('0x59')],'dialMethod':_0x289adc[_0x558e('0x5a')],'dialOriginateCallerIdName':_0x289adc[_0x558e('0x5b')],'dialOriginateCallerIdNumber':_0x289adc[_0x558e('0x5c')],'dialOriginateTimeout':_0x289adc[_0x558e('0x5d')],'dialPrefix':_0x289adc[_0x558e('0x5e')],'outboundAnswerAgiCallsDay':_0x289adc[_0x558e('0x5f')],'outboundAnswerCallsDay':_0x289adc[_0x558e('0x60')],'outboundBlacklistCallsDay':_0x289adc[_0x558e('0x61')],'outboundBusyCallsDay':_0x289adc['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x289adc[_0x558e('0x62')],'outboundDropCallsDayACS':_0x289adc[_0x558e('0x63')],'outboundDropCallsDayCallersExit':_0x289adc[_0x558e('0x64')],'outboundDropCallsDayTimeout':_0x289adc['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x289adc[_0x558e('0x65')],'outboundNoSuchCallsDay':_0x289adc[_0x558e('0x66')],'outboundOriginateFailureCallsDay':_0x289adc[_0x558e('0x67')],'outboundReCallsDay':_0x289adc['outboundReCallsDay'],'outboundRejectCallsDay':_0x289adc[_0x558e('0x68')],'outboundUnknownCallsDay':_0x289adc[_0x558e('0x69')],'predictiveIntervalAnsweredCalls':_0x289adc[_0x558e('0x6a')],'predictiveIntervalAvgHoldtime':_0x289adc[_0x558e('0x6b')],'predictiveIntervalAvgTalktime':_0x289adc[_0x558e('0x6c')],'predictiveIntervalDroppedCallsCallersExit':_0x289adc[_0x558e('0x6d')],'predictiveIntervalDroppedCallsTimeout':_0x289adc[_0x558e('0x6e')],'predictiveIntervalErlangCalls':_0x289adc[_0x558e('0x6f')],'predictiveIntervalErlangCallsDroppedCalls':_0x289adc[_0x558e('0x70')],'predictiveIntervalHitRate':_0x289adc[_0x558e('0x71')],'predictiveIntervalMultiplicativeFactor':_0x289adc[_0x558e('0x72')],'predictiveIntervalPauses':_0x289adc[_0x558e('0x73')],'predictiveIntervalAvailable':_0x289adc[_0x558e('0x74')],'predictiveIntervalTotalCalls':_0x289adc[_0x558e('0x75')],'message':_0x289adc['message'],'originated':_0x289adc[_0x558e('0x76')],'erlangCalls':_0x289adc[_0x558e('0x77')],'erlangCallToSecond':_0x289adc['erlangCallToSecond'],'erlangAbandonmentRate':_0x289adc[_0x558e('0x78')],'erlangBusyFactor':_0x289adc['erlangBusyFactor'],'startPredictive':_0x289adc[_0x558e('0x27')],'startProgressive':_0x289adc[_0x558e('0x28')]};if(_0x289adc[_0x558e('0x79')]){_0x3f8f91[_0x558e('0x79')]={'id':_0x289adc[_0x558e('0x79')]['id'],'name':_0x289adc[_0x558e('0x79')]['name'],'active':_0x289adc['Trunk']['active'],'callerid':_0x289adc['Trunk'][_0x558e('0x7a')]};}if(_0x289adc[_0x558e('0x44')]){_0x3f8f91[_0x558e('0x44')]={'id':_0x289adc[_0x558e('0x44')]['id'],'name':_0x289adc['Interval'][_0x558e('0x3e')]};}var _0x2066a2=md5(JSON[_0x558e('0x47')](_0x3f8f91));if(_0x289adc[_0x558e('0x5')]!==_0x2066a2){_0x289adc[_0x558e('0x5')]=_0x2066a2;emit(util[_0x558e('0x7b')](_0x558e('0x7c'),_0x3f8f91[_0x558e('0x3e')]),'voice_queue:save',_0x3f8f91);}}}function emitCampaignSummary(_0x462c36){if(_0x462c36[_0x558e('0x7d')]===_0x558e('0x7e')){emit(util['format'](_0x558e('0x7f'),_0x462c36[_0x558e('0x3e')]),_0x558e('0x80'),_0x462c36);}}function checkGetDataPredictive(_0x4a1c97){if(isNotNull(_0x4a1c97)&&!_['isEmpty'](_0x4a1c97)){loggerPredictive[_0x558e('0x81')](_0x558e('0x82'));loggerPredictive[_0x558e('0x81')](_0x558e('0x83'),_0x4a1c97[_0x558e('0x75')]);loggerPredictive[_0x558e('0x81')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a1c97['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0x558e('0x84'),_0x4a1c97[_0x558e('0x6e')]);loggerPredictive['info'](_0x558e('0x85'),_0x4a1c97[_0x558e('0x6d')]);loggerPredictive[_0x558e('0x81')](_0x558e('0x86'),_0x4a1c97['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x558e('0x81')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a1c97[_0x558e('0x6c')]);loggerPredictive[_0x558e('0x81')](_0x558e('0x87'));if(_0x4a1c97[_0x558e('0x75')]>0x0){if(!_[_0x558e('0x3b')](_0x4a1c97[_0x558e('0x6c')])&&_0x4a1c97[_0x558e('0x6c')]>0x0){return!![];}loggerPredictive[_0x558e('0x81')](_0x558e('0x88'));if(!_['isUndefined'](_0x4a1c97[_0x558e('0x6b')])&&_0x4a1c97[_0x558e('0x6b')]>0x0){return!![];}loggerPredictive[_0x558e('0x81')](_0x558e('0x89'));}else{loggerPredictive[_0x558e('0x81')](_0x558e('0x8a'));}}else{loggerPredictive[_0x558e('0x81')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x5ca592){return function(_0x3e38ba){loggerPredictive[_0x558e('0x81')](_0x558e('0x8b'));loggerPredictive[_0x558e('0x81')](_0x558e('0x8c'),_0x3e38ba['erlangCalls']);loggerPredictive[_0x558e('0x81')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3e38ba['erlangCallToSecond']);loggerPredictive[_0x558e('0x81')](_0x558e('0x8d'),_0x3e38ba['erlangAbandonmentRate']);loggerPredictive[_0x558e('0x81')](_0x558e('0x8e'),_0x3e38ba[_0x558e('0x8f')]);loggerPredictive['info'](_0x558e('0x8d'),_0x3e38ba[_0x558e('0x78')]);loggerPredictive['info'](_0x558e('0x87'));_[_0x558e('0x90')](_0x5ca592,_0x3e38ba);};}function getDiff(_0x48d0ad){var _0x25b767=moment()[_0x558e('0x48')](0x0);var _0x54e3da=moment(_0x48d0ad)[_0x558e('0x48')](0x0);return _0x25b767[_0x558e('0x91')](_0x54e3da,_0x558e('0x49'));}function ifInterval(_0x32aa5e,_0x175540){if(_[_0x558e('0x3b')](_0x175540)){return![];}return getDiff(_0x175540)<_0x32aa5e*0x3c;}function freeVariablesPredictive(_0x2a3bd6){if(isNotNull(_0x2a3bd6)){if(!_[_0x558e('0x3b')](_0x2a3bd6[_0x558e('0x28')])){_0x2a3bd6[_0x558e('0x28')]=undefined;loggerPredictive['info'](_0x2a3bd6[_0x558e('0x3e')],_0x558e('0x92'));}if(!_[_0x558e('0x3b')](_0x2a3bd6[_0x558e('0x27')])){_0x2a3bd6['startPredictive']=undefined;loggerPredictive[_0x558e('0x81')](_0x2a3bd6[_0x558e('0x3e')],_0x558e('0x93'));}if(!_[_0x558e('0x3b')](_0x2a3bd6[_0x558e('0x94')])){clearInterval(_0x2a3bd6[_0x558e('0x94')]);_0x2a3bd6['handlePredictive']=undefined;loggerPredictive[_0x558e('0x81')](_0x2a3bd6[_0x558e('0x3e')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x192f30,_0x45e89e){if(_0x45e89e===0x0){return 0x0;}var _0x5bc0b9=0x1;for(var _0x3edb71=0x1;_0x3edb71<=_0x45e89e;_0x3edb71+=0x1){_0x5bc0b9=0x1+_0x5bc0b9*_0x3edb71/_0x192f30;}return 0x1/_0x5bc0b9;}function isVoiceQueueOutbound(_0x376739){return _0x376739===_0x558e('0x4b');}function isNotPreview(_0x34b96b){return _0x34b96b!=='preview';}function isCampaignIvr(_0x2ff84c){return _0x2ff84c===_0x558e('0x7e');}function getCallerId(_0x1f2f41,_0x1acd9b,_0x554149){if(!_['isUndefined'](_0x554149)&&typeof _0x554149===_0x558e('0x95')&&!_[_0x558e('0x45')](_0x554149)){if(!_[_0x558e('0x3b')](_0x1acd9b)&&typeof _0x1acd9b==='string'&&!_['isEmpty'](_0x1acd9b)){return util[_0x558e('0x7b')](_0x558e('0x96'),_0x1acd9b,_0x554149);}return util['format'](_0x558e('0x96'),_0x554149,_0x554149);}if(!_['isUndefined'](_0x1f2f41)&&typeof _0x1f2f41==='string'&&!_[_0x558e('0x45')](_0x1f2f41)){return _0x1f2f41;}return _0x558e('0x97');}function loggerCatchQueueSummary(_0x34642f,_0x4fa6d3){return function(_0x312f94){freeVariablesPredictive(_0x4fa6d3);emitVoiceQueueSummary(_0x4fa6d3);emitCampaignSummary(_0x4fa6d3);loggerSyncQueueSummary['error'](_0x34642f,util[_0x558e('0x98')](_0x312f94,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x4077ef,_0x50817a){return function(_0x15a72a){loggerPredictive[_0x558e('0x99')](_0x50817a['name'],_0x4077ef);loggerPredictive[_0x558e('0x99')](_0x15a72a['stack']);freeVariablesPredictive(_0x50817a);};}function loggerCatch(_0x1d4827){return function(_0xd97fb){logger[_0x558e('0x99')](_0x1d4827,util[_0x558e('0x98')](_0xd97fb,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x430cf6){return _0x430cf6&&!_['isUndefined'](_0x430cf6)&&_0x430cf6[_0x558e('0x9a')]>0x0;}function decremetOriginate(_0x5e4221){if(!_[_0x558e('0x3b')](_0x5e4221)&&_0x5e4221!==null){if(typeof _0x5e4221[_0x558e('0x76')]!=='undefined'){if(_0x5e4221[_0x558e('0x76')]>0x0){_0x5e4221[_0x558e('0x76')]-=0x1;}else{logger[_0x558e('0x99')](_0x558e('0x9b'));}}}else{logger[_0x558e('0x99')](_0x558e('0x9c'));}}function checkContactLowerLimitOriginate(_0x55ec65,_0x3ef326,_0x16442d){if(_0x3ef326>_0x16442d){for(var _0x269ea4=0x0;_0x269ea4<_0x3ef326-_0x16442d;_0x269ea4+=0x1){decremetOriginate(_0x55ec65);}}}function loggerGetContactDialer(_0x32d23f,_0x26a4bd,_0x507309){return function(_0x473ce9){checkContactLowerLimitOriginate(_0x26a4bd,_0x507309,0x0);logger['error'](_0x32d23f,util[_0x558e('0x98')](_0x473ce9,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x39fa6a){return function(_0x555110){if(isNotNull(_0x555110)&&isNotNull(_0x555110[0x0])){if(_0x555110[0x0][_0x558e('0x9d')]>0x0){_0x39fa6a[_0x558e('0x3c')]=_0x558e('0x9e');logger[_0x558e('0x81')]('[getContactDialer2][ReScheduled]'+_0x39fa6a[_0x558e('0x3e')],_0x555110[0x0][_0x558e('0x9d')],_0x558e('0x9f'));}else{_0x39fa6a[_0x558e('0x3c')]=_0x558e('0xa0');logger[_0x558e('0x81')](_0x558e('0xa1')+_0x39fa6a[_0x558e('0x3e')]);}}};}function notSendMessagesQueue(_0xea0e6){if(_0xea0e6['sendMessageOneNotActive']){freeVariablesPredictive(_0xea0e6);if(_0xea0e6[_0x558e('0x76')]===0x0&&_0xea0e6[_0x558e('0x53')]===0x0&&_0xea0e6[_0x558e('0x57')]===0x0&&(_0xea0e6[_0x558e('0x4f')]||0x0)===0x0){_0xea0e6[_0x558e('0xa2')]=![];_0xea0e6[_0x558e('0x4d')]=0x0;_0xea0e6['message']=_0x558e('0x40');loggerSyncQueueSummary[_0x558e('0x99')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0xea0e6['name'],_0x558e('0xa3'));}else{_0xea0e6['message']='IS_DISACTIVED';loggerSyncQueueSummary[_0x558e('0x99')](_0x558e('0xa4'),_0xea0e6['name'],_0x558e('0xa5'));}emitVoiceQueueSummary(_0xea0e6);}}function notSendMessagesCampaign(_0x519312){if(_0x519312['sendMessageOneNotActive']){if(_0x519312[_0x558e('0x76')]===0x0){_0x519312[_0x558e('0xa2')]=![];_0x519312['message']=_0x558e('0x40');loggerSyncQueueSummary['error'](_0x558e('0xa6'),_0x519312[_0x558e('0x3e')],_0x558e('0xa3'));}else{_0x519312['message']=_0x558e('0xa7');loggerSyncQueueSummary[_0x558e('0x99')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x519312[_0x558e('0x3e')],_0x558e('0xa5'));}emitCampaignSummary(_0x519312);}}function createObjHistory(_0x3b8d23,_0x599f05,_0x52dc7b,_0x190c87,_0x1f72bb){_0x3b8d23[_0x558e('0x3c')]=_0x52dc7b;var _0x4e7cd2=new Action(_0x3b8d23,_0x599f05);var _0x27630b=new History(_0x4e7cd2);_0x27630b[_0x558e('0xa8')]=_0x190c87;_0x27630b[_0x558e('0xa9')]=_0x1f72bb;_0x27630b[_0x558e('0xaa')]=_0x4e7cd2['starttime'];return _0x27630b;}Dialer[_0x558e('0xab')][_0x558e('0x3a')]=function(){var _0x2f7fd3=this;setInterval(function(){_0x2f7fd3[_0x558e('0xac')](_0x2f7fd3[_0x558e('0x25')],'[uniqueid]');_0x2f7fd3['clearZombieChannels'](_0x2f7fd3['actions'],_0x558e('0xad'));},0x32c8);};Dialer[_0x558e('0xab')][_0x558e('0xac')]=function(_0x475676,_0x46c726){var _0x2f0e80=this;for(var _0x457473 in _0x475676){if(typeof _0x475676[_0x457473]!==_0x558e('0xae')){this[_0x558e('0x1c')][_0x558e('0x19')](function(){if(!_[_0x558e('0xaf')](_0x475676[_0x457473])){return ami['Action']({'action':_0x558e('0xb0'),'channel':_0x475676[_0x457473]['channel']})[_0x558e('0xb1')](function(_0x5ca7b6){if(_0x5ca7b6[_0x558e('0x3c')]===_0x558e('0xb2')){setTimeout(function(){if(_0x475676[_0x457473]&&_0x475676[_0x457473][_0x558e('0x7d')]!==_0x558e('0x7e')){_0x2f0e80['updateOriginated'](_0x2f0e80[_0x558e('0x1d')][_0x475676[_0x457473][_0x558e('0xb3')]]);logger['error'](_0x558e('0xb4'),_0x46c726,_0x457473,_0x475676[_0x457473][_0x558e('0xb3')]);delete _0x475676[_0x457473];}if(_0x475676[_0x457473]&&_0x475676[_0x457473][_0x558e('0x7d')]===_0x558e('0x7e')){_0x2f0e80[_0x558e('0xb5')](_0x2f0e80[_0x558e('0x1e')][_0x475676[_0x457473][_0x558e('0xb3')]]);logger[_0x558e('0x99')](_0x558e('0xb6'),_0x46c726,_0x457473,_0x475676[_0x457473]['queue']);delete _0x475676[_0x457473];}},0x2328);}});}});}}};Dialer[_0x558e('0xab')][_0x558e('0xb7')]=function(_0x252f53){return BPromise[_0x558e('0xb8')]()['then'](cmHopper[_0x558e('0xb7')](_0x252f53))['catch'](loggerCatch(_0x558e('0xb9')));};Dialer[_0x558e('0xab')][_0x558e('0xba')]=function(_0xf2f8d0){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](cmHopperBlack['checkIsBlackList'](_0xf2f8d0))[_0x558e('0xb1')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x558e('0xab')][_0x558e('0xbc')]=function(_0x4c601d){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](cmHopperBlack['checkIsBlackListIvr'](_0x4c601d))[_0x558e('0xb1')](loggerCatch(_0x558e('0xbd')));};Dialer[_0x558e('0xab')][_0x558e('0xbe')]=function(_0x346f09){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](cmHopperHistory[_0x558e('0xbf')](_0x346f09))[_0x558e('0xb1')](loggerCatch(_0x558e('0xc0')));};Dialer[_0x558e('0xab')][_0x558e('0xc1')]=function(_0x37fa81){return BPromise['resolve']()[_0x558e('0xbb')](cmHopper[_0x558e('0xc1')](_0x37fa81))[_0x558e('0xb1')](loggerCatch(_0x558e('0xc2')));};Dialer['prototype'][_0x558e('0xc3')]=function(_0x587bdb,_0x57344d,_0x55adf8){return BPromise[_0x558e('0xb8')]()['then'](cmHopper[_0x558e('0xc3')](_0x587bdb,_0x57344d,_0x55adf8))[_0x558e('0xb1')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x558e('0xab')]['getContactDialer']=function(_0x308b92,_0x3ce9cb,_0x2333bb,_0x1cf6fa,_0x32e0bc){return BPromise['resolve']()[_0x558e('0xbb')](cmHopper['getContactDialer'](_0x308b92,_0x3ce9cb,_0x2333bb,_0x1cf6fa))[_0x558e('0xb1')](function(_0x3fe03d){_0x32e0bc['temp']-=_0x2333bb;_0x32e0bc[_0x558e('0xc4')]=_0x32e0bc[_0x558e('0xc4')]>0x0?_0x32e0bc[_0x558e('0xc4')]:0x0;loggerCatch(_0x558e('0xc5'))(_0x3fe03d);});};Dialer[_0x558e('0xab')]['getContactDialerIvr']=function(_0x1706ce,_0x1a6828,_0x5e0d3b,_0x398618){return BPromise[_0x558e('0xb8')]()['then'](cmHopper[_0x558e('0xc6')](_0x1706ce,_0x1a6828,_0x5e0d3b))[_0x558e('0xb1')](function(_0x26d945){_0x398618['temp']-=_0x1a6828;_0x398618[_0x558e('0xc4')]=_0x398618[_0x558e('0xc4')]>0x0?_0x398618['temp']:0x0;loggerCatch(_0x558e('0xc7'))(_0x26d945);});};Dialer['prototype'][_0x558e('0xc8')]=function(_0x1fa270){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](voiceQueueRt[_0x558e('0xc8')](_0x1fa270))[_0x558e('0xb1')](loggerCatch(_0x558e('0xc9')));};Dialer['prototype'][_0x558e('0xca')]=function(_0x456d4e){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](cmHopper['moveContactManagedDialer'](_0x456d4e))[_0x558e('0xb1')](loggerCatch(_0x558e('0xcb')));};Dialer[_0x558e('0xab')][_0x558e('0xcc')]=function(_0x2f1d0c){return BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](cmHopperHistory[_0x558e('0xcc')](_0x2f1d0c))[_0x558e('0xb1')](loggerCatch(_0x558e('0xcd')));};Dialer[_0x558e('0xab')][_0x558e('0xb5')]=function(_0x5932df){if(!_[_0x558e('0x3b')](_0x5932df)&&_0x5932df!==null){if(typeof _0x5932df[_0x558e('0x76')]!==_0x558e('0xae')){if(_0x5932df[_0x558e('0x76')]>0x0){_0x5932df['originated']-=0x1;}else{logger[_0x558e('0x99')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger['error'](_0x558e('0xce'));}};Dialer[_0x558e('0xab')][_0x558e('0xcf')]=function(_0x1265a2,_0xbbfec1){var _0x58c266=this;return function(_0x248524){_0x58c266['updateOriginated'](_0xbbfec1);logger[_0x558e('0x99')](_0x1265a2,util[_0x558e('0x98')](_0x248524,{'showHidden':![],'depth':null}));};};Dialer[_0x558e('0xab')][_0x558e('0xd0')]=function(_0x2c7e16,_0x34c35e,_0x3ab1d7){var _0x43b379={'state':0x19,'statedesc':_0x558e('0xd1')};this[_0x558e('0xb5')](_0x34c35e);this[_0x558e('0xd2')](_[_0x558e('0x90')](_0x43b379,_[_0x558e('0xd3')](_0x3ab1d7,[_0x558e('0xd4'),'ListId',_0x558e('0xd5'),_0x558e('0xd6'),'CampaignId'])),_0x558e('0xd7'),_0x558e('0xd8'));logger['error'](_0x2c7e16);};Dialer[_0x558e('0xab')]['isSuccess']=function(_0x1515dc){return _0x1515dc===_0x558e('0xd9');};Dialer['prototype']['isTrunkReachable']=function(_0x161a22){return!_[_0x558e('0x3b')](_0x161a22)&&_0x161a22&&!_[_0x558e('0x3b')](_0x161a22[_0x558e('0x3e')])&&!_['isUndefined'](_0x161a22[_0x558e('0xda')])&&_0x161a22[_0x558e('0xda')]&&(this[_0x558e('0x20')][util['format']('SIP/%s',_0x161a22['name'])][_0x558e('0xb0')]===_0x558e('0xdb')||this[_0x558e('0x20')][util[_0x558e('0x7b')](_0x558e('0xdc'),_0x161a22[_0x558e('0x3e')])][_0x558e('0xb0')]==='unmonitored');};Dialer[_0x558e('0xab')]['saveInDb']=function(_0x4ba03a,_0x145386,_0x825b10){this[_0x558e('0xcc')](_0x4ba03a)[_0x558e('0xb1')](loggerCatch(_0x145386));this[_0x558e('0xca')](_0x4ba03a)['catch'](loggerCatch(_0x825b10));};Dialer['prototype'][_0x558e('0xdd')]=function(_0xc0a68){var _0x5e84fc=this[_0x558e('0x25')][_0xc0a68['uniqueid']];var _0xcd6829;if(!_[_0x558e('0xaf')](_0xc0a68)&&!_[_0x558e('0xaf')](_0xc0a68['variable'])&&!_[_0x558e('0xaf')](_0xc0a68['variable'][_0x558e('0xde')])&&_0xc0a68[_0x558e('0xdf')]==='xcally-motion-dialer'&&_0x5e84fc){if(_0x5e84fc[_0x558e('0x7d')]!==_0x558e('0x7e')&&this['voiceQueues'][_0x5e84fc[_0x558e('0xb3')]]['dialAMDActive']&&_0xc0a68[_0x558e('0xe0')]==='HANGUP'){delete this[_0x558e('0x25')][_0xc0a68[_0x558e('0xe1')]];this[_0x558e('0xb5')](this['voiceQueues'][_0x5e84fc['queue']]);this['voiceQueues'][_0x5e84fc['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x558e('0x1d')][_0x5e84fc[_0x558e('0xb3')]][_0x558e('0x5f')]+=0x1;_0xcd6829=new Hangup(_0x5e84fc,_0xc0a68);_0xcd6829[_0x558e('0xa8')]=0x12;_0xcd6829[_0x558e('0xa9')]=_0x558e('0xe2');_0xcd6829[_0x558e('0xe3')]=_0x558e('0xe4');ami[_0x558e('0x4a')](_0x558e('0xe5'),ut[_0x558e('0xe6')](_0xcd6829,'amd'));this[_0x558e('0xd2')](_0xcd6829,_0x558e('0xe7'),_0x558e('0xe8'));}if(_0x5e84fc[_0x558e('0x7d')]!==_0x558e('0x7e')&&this[_0x558e('0x1d')][_0x5e84fc[_0x558e('0xb3')]]['dialAMDActive']&&_0xc0a68['value']===_0x558e('0xe9')){var _0x3a85b2=this;return new BPromise(function(_0x4873af,_0x840d0d){delete _0x3a85b2[_0x558e('0x25')][_0xc0a68['uniqueid']];_0x3a85b2[_0x558e('0xb5')](_0x3a85b2[_0x558e('0x1d')][_0x5e84fc[_0x558e('0xb3')]]);_0x3a85b2['voiceQueues'][_0x5e84fc['queue']][_0x558e('0x60')]+=0x1;_0x3a85b2[_0x558e('0x1d')][_0x5e84fc['queue']]['outboundAnswerAgiCallsDay']+=0x1;var _0x5c0e20=_0x3a85b2[_0x558e('0x1d')][_0x5e84fc[_0x558e('0xb3')]];var _0x4afe8d=new Hangup(_0x5e84fc,_0xc0a68);_0x4afe8d[_0x558e('0xa8')]=0x13;_0x4afe8d[_0x558e('0xa9')]=_0x558e('0xea');_0x4afe8d['membername']=_0x558e('0xe4');_0x4afe8d[_0x558e('0xeb')]+=0x1;_0x4afe8d[_0x558e('0xec')]+=0x1;_0x4afe8d[_0x558e('0xed')]=!![];ami[_0x558e('0x4a')](_0x558e('0xe5'),ut[_0x558e('0xe6')](_0x4afe8d,_0x558e('0xed')));_0x3a85b2[_0x558e('0xcc')](_0x4afe8d)[_0x558e('0xb1')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x4afe8d[_0x558e('0xee')]+_0x4afe8d['countcongestionretry']+_0x4afe8d[_0x558e('0xef')]+_0x4afe8d[_0x558e('0xf0')]+_0x4afe8d[_0x558e('0xf1')]+_0x4afe8d[_0x558e('0xf2')]+_0x4afe8d[_0x558e('0xeb')]+_0x4afe8d[_0x558e('0xf3')]>=_0x5c0e20[_0x558e('0xf4')]){_0x3a85b2[_0x558e('0xf5')](_0x4afe8d,_0x4873af,_0x840d0d,_0x558e('0xf6'));}else{if(_0x4afe8d[_0x558e('0xeb')]>=_0x5c0e20[_0x558e('0xf7')]){_0x3a85b2[_0x558e('0xf8')](_0x4afe8d,_0x4873af,_0x840d0d,_0x558e('0xf9'));}else{_0x3a85b2[_0x558e('0xc1')]({'active':![],'countmachineretry':_0x4afe8d[_0x558e('0xeb')],'scheduledat':moment()[_0x558e('0xfa')](_0x5c0e20[_0x558e('0xfb')],'minutes')[_0x558e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4afe8d[_0x558e('0xd4')],'ListId':_0x4afe8d[_0x558e('0xfc')],'VoiceQueueId':_0x4afe8d[_0x558e('0xd6')]||undefined,'CampaignId':_0x4afe8d[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0xfe')));_0x4873af({'reschedule':0x1});}}});}if(_0x5e84fc[_0x558e('0x7d')]===_0x558e('0x7e')&&this[_0x558e('0x1e')][_0x5e84fc[_0x558e('0xb3')]]['dialAMDActive']&&_0xc0a68[_0x558e('0xe0')]===_0x558e('0xff')){delete this[_0x558e('0x25')][_0xc0a68['uniqueid']];this[_0x558e('0xb5')](this['campaigns'][_0x5e84fc[_0x558e('0xb3')]]);_0xcd6829=new Hangup(_0x5e84fc,_0xc0a68);_0xcd6829[_0x558e('0xa8')]=0x12;_0xcd6829[_0x558e('0xa9')]=_0x558e('0xe2');_0xcd6829[_0x558e('0xe3')]=_0x558e('0xe4');ami[_0x558e('0x4a')](_0x558e('0xe5'),ut['buildObj'](_0xcd6829,'amd'));this[_0x558e('0xd2')](_0xcd6829,_0x558e('0x100'),_0x558e('0x101'));}if(_0x5e84fc['type']==='ivr'&&this['campaigns'][_0x5e84fc['queue']][_0x558e('0x102')]&&_0xc0a68['value']==='MACHINE'){var _0x3a85b2=this;return new BPromise(function(_0x20fda7,_0x434c17){delete _0x3a85b2['uniqueId'][_0xc0a68[_0x558e('0xe1')]];_0x3a85b2['updateOriginated'](_0x3a85b2['campaigns'][_0x5e84fc[_0x558e('0xb3')]]);_0x3a85b2[_0x558e('0x1e')][_0x5e84fc[_0x558e('0xb3')]][_0x558e('0x60')]+=0x1;_0x3a85b2['campaigns'][_0x5e84fc[_0x558e('0xb3')]][_0x558e('0x5f')]+=0x1;var _0x346092=_0x3a85b2[_0x558e('0x1e')][_0x5e84fc[_0x558e('0xb3')]];var _0x3cacf2=new Hangup(_0x5e84fc,_0xc0a68);_0x3cacf2[_0x558e('0xa8')]=0x13;_0x3cacf2[_0x558e('0xa9')]=_0x558e('0xea');_0x3cacf2['membername']=_0x558e('0xe4');_0x3cacf2[_0x558e('0xeb')]+=0x1;_0x3cacf2['countglobal']+=0x1;_0x3cacf2[_0x558e('0xed')]=!![];ami[_0x558e('0x4a')]('custom:amd',ut[_0x558e('0xe6')](_0x3cacf2,_0x558e('0xed')));_0x3a85b2[_0x558e('0xcc')](_0x3cacf2)[_0x558e('0xb1')](loggerCatch(_0x558e('0x103')));if(_0x3cacf2[_0x558e('0xee')]+_0x3cacf2[_0x558e('0x104')]+_0x3cacf2[_0x558e('0xef')]+_0x3cacf2['countnosuchnumberretry']+_0x3cacf2[_0x558e('0xf1')]+_0x3cacf2['countabandonedretry']+_0x3cacf2[_0x558e('0xeb')]+_0x3cacf2[_0x558e('0xf3')]>=_0x346092['dialGlobalMaxRetry']){_0x3a85b2['stateGlobal'](_0x3cacf2,_0x20fda7,_0x434c17,_0x558e('0xf6'));}else{if(_0x3cacf2['countmachineretry']>=_0x346092[_0x558e('0xf7')]){_0x3a85b2[_0x558e('0xf8')](_0x3cacf2,_0x20fda7,_0x434c17,_0x558e('0xf9'));}else{_0x3a85b2[_0x558e('0xc1')]({'active':![],'countmachineretry':_0x3cacf2[_0x558e('0xeb')],'scheduledat':moment()['add'](_0x346092[_0x558e('0xfb')],_0x558e('0x105'))[_0x558e('0x7b')](_0x558e('0x106')),'ContactId':_0x3cacf2[_0x558e('0xd4')],'ListId':_0x3cacf2[_0x558e('0xfc')],'VoiceQueueId':_0x3cacf2[_0x558e('0xd6')]||undefined,'CampaignId':_0x3cacf2[_0x558e('0xfd')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x20fda7({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x558e('0x35')]=function(_0x2c4130){var _0x5270bf=this[_0x558e('0x25')][_0x2c4130[_0x558e('0xe1')]];var _0x142d40=this;var _0x412aae;if(_0x5270bf&&_0x5270bf[_0x558e('0x7d')]===_0x558e('0x7e')){delete this[_0x558e('0x25')][_0x2c4130[_0x558e('0xe1')]];this[_0x558e('0xb5')](this[_0x558e('0x1e')][_0x5270bf['queue']]);this[_0x558e('0x1e')][_0x5270bf[_0x558e('0xb3')]][_0x558e('0x107')]+=0x1;_0x412aae=new Hangup(_0x5270bf,_0x2c4130);this[_0x558e('0xcc')](_0x412aae)[_0x558e('0xb1')](loggerCatch(_0x558e('0x108')));this['moveContactManagedDialer'](_0x412aae)['catch'](loggerCatch('[syncHangupIvr]'));}if(_0x5270bf&&_0x5270bf[_0x558e('0x7d')]!==_0x558e('0x7e')&&isNotNull(this['voiceQueues'][_0x5270bf[_0x558e('0xb3')]]['dialQueueProject'])){delete this[_0x558e('0x25')][_0x2c4130[_0x558e('0xe1')]];this[_0x558e('0xb5')](this[_0x558e('0x1d')][_0x5270bf[_0x558e('0xb3')]]);this[_0x558e('0x1d')][_0x5270bf[_0x558e('0xb3')]][_0x558e('0x60')]+=0x1;this['voiceQueues'][_0x5270bf[_0x558e('0xb3')]]['outboundAnswerAgiCallsDay']+=0x1;_0x412aae=new Hangup(_0x5270bf,_0x2c4130);_0x412aae[_0x558e('0xa8')]=0x10;_0x412aae[_0x558e('0xa9')]=_0x558e('0x109');_0x412aae[_0x558e('0xe3')]='AGI';this[_0x558e('0xcc')](_0x412aae)[_0x558e('0xb1')](loggerCatch(_0x558e('0x108')));this[_0x558e('0xca')](_0x412aae)[_0x558e('0xb1')](loggerCatch(_0x558e('0x10a')));}if(_0x5270bf&&_0x5270bf[_0x558e('0x7d')]!=='ivr'&&!isNotNull(this['voiceQueues'][_0x5270bf[_0x558e('0xb3')]][_0x558e('0x10b')])){delete this[_0x558e('0x25')][_0x2c4130['uniqueid']];this[_0x558e('0xb5')](this[_0x558e('0x1d')][_0x5270bf[_0x558e('0xb3')]]);this[_0x558e('0x1d')][_0x5270bf[_0x558e('0xb3')]]['outboundUnknownCallsDay']+=0x1;_0x412aae=new Hangup(_0x5270bf,_0x2c4130);_0x412aae[_0x558e('0xa8')]=0xc;_0x412aae[_0x558e('0xa9')]=_0x2c4130[_0x558e('0x10c')];_0x412aae[_0x558e('0xe3')]=_0x558e('0x10d');this[_0x558e('0xcc')](_0x412aae)[_0x558e('0xb1')](loggerCatch(_0x558e('0x108')));this[_0x558e('0xca')](_0x412aae)[_0x558e('0xb1')](loggerCatch(_0x558e('0x10a')));}};Dialer[_0x558e('0xab')][_0x558e('0x32')]=function(_0x59eb6a){var _0x4f301f=this[_0x558e('0x25')][_0x59eb6a['uniqueid']];var _0xc53e27=this;if(this[_0x558e('0x1d')][_0x59eb6a[_0x558e('0xb3')]]){if(_0x4f301f&&_0x4f301f[_0x558e('0x7d')]!==_0x558e('0x7e')){delete this[_0x558e('0x25')][_0x59eb6a[_0x558e('0xe1')]];this['voiceQueues'][_0x59eb6a[_0x558e('0xb3')]][_0x558e('0x60')]+=0x1;var _0xce442c=new AgentComplete(_0x4f301f,_0x59eb6a);if(_0x59eb6a[_0x558e('0x10e')]==='agent'){_0xce442c[_0x558e('0x10f')]=this['voiceQueues'][_0x59eb6a[_0x558e('0xb3')]][_0x558e('0x110')]&&this[_0x558e('0x1d')][_0x59eb6a['queue']][_0x558e('0x111')]?moment()[_0x558e('0x7b')](_0x558e('0x106')):undefined;}this['createHistory'](_0xce442c)[_0x558e('0xb1')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x558e('0xca')](_0xce442c)[_0x558e('0xb1')](loggerCatch(_0x558e('0x112')));}}};Dialer[_0x558e('0xab')][_0x558e('0x2c')]=function(_0x51b7a6){if(this[_0x558e('0x1d')][_0x51b7a6[_0x558e('0xb3')]]){if(this[_0x558e('0x25')][_0x51b7a6[_0x558e('0xe1')]]&&this['uniqueId'][_0x51b7a6[_0x558e('0xe1')]][_0x558e('0x7d')]!=='ivr'){this[_0x558e('0xb5')](this[_0x558e('0x1d')][_0x51b7a6['queue']]);this[_0x558e('0x25')][_0x51b7a6[_0x558e('0xe1')]][_0x558e('0x113')]=moment()['format'](_0x558e('0x106'));}}};Dialer['prototype'][_0x558e('0x114')]=function(_0x307c80){this[_0x558e('0xcc')](_0x307c80)[_0x558e('0xb1')](loggerCatch(_0x558e('0x115')));this[_0x558e('0xca')](_0x307c80)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x558e('0xab')][_0x558e('0x2d')]=function(_0x75a8b8){var _0x139d69=this['uniqueId'][_0x75a8b8['uniqueid']];var _0x557e23=this;if(this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]]){if(_0x139d69&&_0x139d69[_0x558e('0x7d')]!==_0x558e('0x7e')){delete this[_0x558e('0x25')][_0x75a8b8[_0x558e('0xe1')]];this['updateOriginated'](this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]]);_0x139d69[_0x558e('0x116')]=moment()[_0x558e('0x7b')](_0x558e('0x106'));var _0x536cf4=new QueueCallerAbandon(_0x139d69,_0x75a8b8);if(getSeconds(_0x139d69[_0x558e('0x116')],_0x139d69[_0x558e('0x117')])>=_0x139d69[_0x558e('0x118')]){this[_0x558e('0x1d')][_0x75a8b8['queue']][_0x558e('0x6e')]+=0x1;this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x119')]+=0x1;this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x70')]+=0x1;_0x536cf4[_0x558e('0xa8')]=0xa;_0x536cf4['statedesc']=_0x558e('0x11a');_0x536cf4['dropreason']=_0x558e('0x11b');_0x536cf4['agiafterat']=this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x110')]?moment()[_0x558e('0x7b')](_0x558e('0x106')):undefined;_0x536cf4[_0x558e('0xf1')]+=0x1;_0x536cf4[_0x558e('0xec')]+=0x1;if(_0x536cf4['countdropretry']>=this[_0x558e('0x1d')][_0x75a8b8['queue']][_0x558e('0x11c')]){this[_0x558e('0x114')](_0x536cf4);}else{this[_0x558e('0xc1')]({'active':![],'countdropretry':_0x536cf4[_0x558e('0xf1')],'scheduledat':moment()[_0x558e('0xfa')](this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x11d')],'minutes')[_0x558e('0x7b')](_0x558e('0x106')),'ContactId':_0x139d69['ContactId'],'ListId':_0x139d69['ListId'],'VoiceQueueId':_0x139d69[_0x558e('0xd6')]||undefined,'CampaignId':_0x139d69[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x11e')));var _0x595305=new History(_0x536cf4);_0x595305[_0x558e('0xa8')]=0xa;_0x595305[_0x558e('0xa9')]='Drop';_0x595305['starttime']=moment()[_0x558e('0x7b')](_0x558e('0x106'));_0x595305[_0x558e('0xaa')]=_0x595305[_0x558e('0x11f')];_0x595305['calleridname']=_0x536cf4[_0x558e('0x120')];_0x595305['calleridnum']=_0x536cf4['calleridnum'];this[_0x558e('0xcc')](_0x595305)[_0x558e('0xb1')](loggerCatch(_0x558e('0x121')));}}else{this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x6d')]+=0x1;this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]][_0x558e('0x64')]+=0x1;_0x536cf4[_0x558e('0xa8')]=0xb;_0x536cf4[_0x558e('0xa9')]=_0x558e('0x122');_0x536cf4[_0x558e('0x123')]=_0x558e('0x124');_0x536cf4[_0x558e('0xf2')]+=0x1;_0x536cf4['countglobal']+=0x1;if(_0x536cf4['countabandonedretry']>=this['voiceQueues'][_0x75a8b8[_0x558e('0xb3')]]['dialAbandonedMaxRetry']){this['queueCallerAbandonCreateState'](_0x536cf4);}else{this[_0x558e('0xc1')]({'active':![],'countabandonedretry':_0x536cf4[_0x558e('0xf2')],'scheduledat':moment()[_0x558e('0xfa')](this[_0x558e('0x1d')][_0x75a8b8[_0x558e('0xb3')]]['dialAbandonedRetryFrequency'],_0x558e('0x105'))[_0x558e('0x7b')](_0x558e('0x106')),'ContactId':_0x139d69['ContactId'],'ListId':_0x139d69[_0x558e('0xfc')],'VoiceQueueId':_0x139d69[_0x558e('0xd6')]||undefined,'CampaignId':_0x139d69[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x125')));var _0x595305=new History(_0x536cf4);_0x595305['state']=0xb;_0x595305[_0x558e('0xa9')]=_0x558e('0x122');_0x595305[_0x558e('0x11f')]=moment()[_0x558e('0x7b')](_0x558e('0x106'));_0x595305['endtime']=_0x595305[_0x558e('0x11f')];_0x595305[_0x558e('0x120')]=_0x536cf4['calleridname'];_0x595305[_0x558e('0x126')]=_0x536cf4['calleridnum'];this['createHistory'](_0x595305)['catch'](loggerCatch(_0x558e('0x127')));}}}}};Dialer['prototype'][_0x558e('0x128')]=function(_0x5a9424){if(this[_0x558e('0x23')][_0x5a9424[_0x558e('0xe1')]]){this[_0x558e('0x23')][_0x5a9424['uniqueid']][_0x558e('0x129')]=_0x5a9424['channel'];}if(this[_0x558e('0x25')][_0x5a9424[_0x558e('0xe1')]]){this[_0x558e('0x25')][_0x5a9424[_0x558e('0xe1')]][_0x558e('0x129')]=_0x5a9424[_0x558e('0x129')];}};Dialer[_0x558e('0xab')][_0x558e('0x37')]=function(_0x336fe9){if(strategy[this[_0x558e('0x1d')][this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]]['queue']]['strategy']]==='roundrobin'){if(this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]]&&_['isNil'](this['actions'][_0x336fe9[_0x558e('0x12a')]][_0x558e('0x12b')])&&_0x336fe9['status']==='1'&&_0x336fe9[_0x558e('0x12c')]==='0'){if(this[_0x558e('0x1f')][_0x336fe9['stateinterface']]){if(!this[_0x558e('0x1f')][_0x336fe9[_0x558e('0x12d')]][_0x558e('0x12b')]){this['agents'][_0x336fe9[_0x558e('0x12d')]][_0x558e('0x12b')]=!![];this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]][_0x558e('0x12b')]=!![];this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]][_0x558e('0x12d')]=_0x336fe9[_0x558e('0x12d')];}}}}else if((strategy[this['voiceQueues'][this['actions'][_0x336fe9[_0x558e('0x12a')]][_0x558e('0xb3')]][_0x558e('0x12e')]]||'rrmemory')===_0x558e('0x17')){if(this[_0x558e('0x23')][_0x336fe9['actionid']]){if(this[_0x558e('0x1f')][_0x336fe9[_0x558e('0x12d')]]){this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]]['stateinterface']=_0x336fe9[_0x558e('0x12d')];if(_['isNil'](this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]][_0x558e('0xb3')]])){this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]]['queue']]=[];}this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x336fe9[_0x558e('0x12a')]][_0x558e('0xb3')]][_0x558e('0x12f')](_[_0x558e('0x90')](_[_0x558e('0xd3')](this[_0x558e('0x23')][_0x336fe9['actionid']],[_0x558e('0x130'),'stateinterface']),{'status':_0x336fe9[_0x558e('0xb0')],'paused':_0x336fe9[_0x558e('0x12c')]}));}}}};function unlockQueueStatus(_0x555f59,_0x259160){setTimeout(function(){if(_['isUndefined'](_0x555f59[_0x558e('0x131')])){loggerBooked[_0x558e('0x99')](_0x558e('0x132'),_0x259160);}_0x555f59[_0x558e('0x131')]=!![];loggerBooked[_0x558e('0x81')](_0x558e('0x133'),_0x259160,JSON[_0x558e('0x47')](_['pick'](_0x555f59,[_0x558e('0x3e'),_0x558e('0x131')])));},0x1f3);}Dialer[_0x558e('0xab')][_0x558e('0x134')]=function(_0x5a455e){var _0x57b2bf=this;var _0x598fce=_0x57b2bf[_0x558e('0x1d')][_0x57b2bf['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]];if(strategy[this['voiceQueues'][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]['strategy']]===_0x558e('0x18')){if(this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]&&this[_0x558e('0x23')][_0x5a455e['actionid']][_0x558e('0x12d')]){this[_0x558e('0x135')][_0x558e('0x136')](this['actions'][_0x5a455e[_0x558e('0x12a')]]['idHopper'],this['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0x12d')])[_0x558e('0xb1')](function(_0x340532){logger['error'](_0x558e('0x137'),util[_0x558e('0x98')](_0x340532,{'showHidden':![],'depth':null}));})[_0x558e('0x1b')](function(){_0x57b2bf[_0x558e('0xb5')](_0x57b2bf[_0x558e('0x1d')][_0x57b2bf['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);_0x57b2bf[_0x558e('0x1f')][_0x57b2bf[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0x12d')]][_0x558e('0x12b')]=![];delete _0x57b2bf['actions'][_0x5a455e[_0x558e('0x12a')]];unlockQueueStatus(_0x598fce);});}else{this['updateOriginated'](this['voiceQueues'][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);this[_0x558e('0xc1')]({'active':![],'ContactId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xd4')],'ListId':this[_0x558e('0x23')][_0x5a455e['actionid']][_0x558e('0xfc')],'VoiceQueueId':this['actions'][_0x5a455e['actionid']][_0x558e('0xd6')]||undefined,'CampaignId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x138')));delete this['actions'][_0x5a455e[_0x558e('0x12a')]];unlockQueueStatus(_0x598fce);}}else if((strategy[this[_0x558e('0x1d')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['queue']][_0x558e('0x12e')]]||_0x558e('0x17'))===_0x558e('0x17')){var _0x591a80;if(this[_0x558e('0x23')][_0x5a455e['actionid']]&&!_[_0x558e('0x45')](this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]])){if(this[_0x558e('0x139')][_0x57b2bf[_0x558e('0x23')][_0x5a455e['actionid']][_0x558e('0xb3')]]){this['queueBookedRR'][_0x57b2bf[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]=this[_0x558e('0x139')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]?this['queueBookedRR'][this[_0x558e('0x23')][_0x5a455e['actionid']][_0x558e('0xb3')]]:this[_0x558e('0x2a')][this['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]?this['queueBooked'][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]['_rr']||0x0:0x0;}this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x5a455e['actionid']]['queue']][_0x558e('0x13a')]=this[_0x558e('0x139')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]];for(var _0x249c10=0x0;_0x249c10<this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]][_0x558e('0x9a')];_0x249c10+=0x1){_0x591a80=rr(this['queueBooked'][this['actions'][_0x5a455e[_0x558e('0x12a')]]['queue']]);this[_0x558e('0x139')][_0x57b2bf['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]=this[_0x558e('0x2a')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]][_0x558e('0x13a')];if(_0x591a80[_0x558e('0xb0')]==='1'&&_0x591a80['paused']==='0'){break;}}if(!_[_0x558e('0xaf')](_0x591a80)){this[_0x558e('0x1f')][_0x591a80[_0x558e('0x12d')]][_0x558e('0x13b')]=_[_0x558e('0x3b')](this[_0x558e('0x1f')][_0x591a80['stateinterface']][_0x558e('0x13b')])?!![]:this[_0x558e('0x1f')][_0x591a80[_0x558e('0x12d')]]['unlockRR'];}loggerBooked['info']('[booked][RR]',_0x5a455e[_0x558e('0x12a')],_0x558e('0x13c'),JSON[_0x558e('0x47')](_[_0x558e('0xd3')](this[_0x558e('0x1f')][_0x591a80[_0x558e('0x12d')]],[_0x558e('0x3e'),_0x558e('0x13b')])),'contactAgent-idHopper:\x20',JSON[_0x558e('0x47')](_0x591a80[_0x558e('0x130')]));if(!_['isNil'](_0x591a80)&&_0x591a80[_0x558e('0xb0')]==='1'&&_0x591a80[_0x558e('0x12c')]==='0'&&this[_0x558e('0x1f')][_0x591a80['stateinterface']][_0x558e('0x13b')]){this[_0x558e('0x1f')][_0x591a80[_0x558e('0x12d')]][_0x558e('0x13b')]=![];this[_0x558e('0x2a')][_0x57b2bf[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['queue']]=[];this[_0x558e('0x135')]['run'](_0x591a80[_0x558e('0x130')],_0x591a80[_0x558e('0x12d')])[_0x558e('0xb1')](function(_0x1a2c70){logger['error'](_0x558e('0x137'),util[_0x558e('0x98')](_0x1a2c70,{'showHidden':![],'depth':null}));})[_0x558e('0x1b')](function(){_0x57b2bf[_0x558e('0xb5')](_0x57b2bf['voiceQueues'][_0x57b2bf[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);setTimeout(function(){_0x57b2bf['agents'][_0x591a80[_0x558e('0x12d')]][_0x558e('0x13b')]=!![];loggerBooked[_0x558e('0x81')](_0x558e('0x13d'),_0x5a455e['actionid'],'Agent:\x20',JSON[_0x558e('0x47')](_[_0x558e('0xd3')](_0x57b2bf[_0x558e('0x1f')][_0x591a80[_0x558e('0x12d')]],[_0x558e('0x3e'),_0x558e('0x13b')])),'contactAgent-idHopper:\x20',JSON[_0x558e('0x47')](_0x591a80[_0x558e('0x130')]));},0xc7);delete _0x57b2bf[_0x558e('0x23')][_0x5a455e['actionid']];unlockQueueStatus(_0x598fce,_0x5a455e['actionid']);});}else{loggerBooked[_0x558e('0x81')]('[booked][unlock]');this[_0x558e('0xb5')](this[_0x558e('0x1d')][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);this[_0x558e('0xc1')]({'active':![],'ContactId':this[_0x558e('0x23')][_0x5a455e['actionid']][_0x558e('0xd4')],'ListId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['ListId'],'VoiceQueueId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xd6')]||undefined,'CampaignId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['CampaignId']||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x138')));delete this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]];unlockQueueStatus(_0x598fce);}}else{loggerBooked['info']('[booked][unlock2]');this['updateOriginated'](this['voiceQueues'][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);this[_0x558e('0xc1')]({'active':![],'ContactId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xd4')],'ListId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xfc')],'VoiceQueueId':this['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xd6')]||undefined,'CampaignId':this['actions'][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x13e')));delete this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]];unlockQueueStatus(_0x598fce);}}else{loggerBooked[_0x558e('0x81')](_0x558e('0x13f'));this[_0x558e('0xb5')](this['voiceQueues'][this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xb3')]]);this[_0x558e('0xc1')]({'active':![],'ContactId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['ContactId'],'ListId':this['actions'][_0x5a455e[_0x558e('0x12a')]]['ListId'],'VoiceQueueId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]][_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x140')));delete this[_0x558e('0x23')][_0x5a455e[_0x558e('0x12a')]];unlockQueueStatus(_0x598fce);}};Dialer[_0x558e('0xab')]['loopCampaigns']=function(){var _0x556965=this;setInterval(function(){_0x556965[_0x558e('0x141')]();},0x3e8);};Dialer[_0x558e('0xab')][_0x558e('0x142')]=function(_0x20faa4){var _0x3a905a=this;return function(){if(!_0x3a905a[_0x558e('0x143')](_0x20faa4[_0x558e('0x79')])){if(!_0x3a905a[_0x558e('0x143')](_0x20faa4[_0x558e('0x144')])){_0x20faa4[_0x558e('0x3c')]='TRUNK_IS_NOT_REACHABLE';throw _0x20faa4[_0x558e('0x3e')]+_0x558e('0x145');}}};};Dialer['prototype'][_0x558e('0x146')]=function(_0x58f8f4,_0x263e3d,_0x190f44,_0x1d9385){var _0x2327f6=this;return function(){var _0x5c60cc=!![];return _0x2327f6[_0x558e('0x147')](_0x58f8f4,_0x263e3d,_0x190f44,_0x1d9385,_0x5c60cc);};};Dialer[_0x558e('0xab')][_0x558e('0x148')]=function(_0x2bb0bf,_0x4e831f,_0x49052c,_0x4d8a54){var _0x2bd836=this;return function(){var _0x28eb78=![];return _0x2bd836['ifTime'](_0x2bb0bf[_0x558e('0x46')],_0x4e831f,_0x49052c,_0x4d8a54,_0x28eb78);};};Dialer[_0x558e('0xab')][_0x558e('0x147')]=function(_0x4b0f50,_0x47e35f,_0x4013f4,_0x508a36,_0x3fbc93){var _0x5392a7=[];return new BPromise(function(_0x2f3cb0,_0x14520c){if(!isNotNull(_0x4b0f50)){_0x508a36[_0x558e('0x3c')]=_0x558e('0x42');return _0x14520c(msgResponse(_0x558e('0x147'),_0x558e('0x149'),_0x4013f4+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x558e('0x45')](_0x4b0f50)){_0x508a36['message']=_0x558e('0x14a');return _0x14520c(msgResponse(_0x558e('0x147'),'Failure',_0x4013f4+_0x558e('0x14b')));}if(_0x47e35f&&_['isUndefined'](config[_0x558e('0x14c')][_0x47e35f])){_0x508a36[_0x558e('0x3c')]='TIMEZONE_UNKNOW';return _0x14520c(msgResponse('ifTime',_0x558e('0x149'),_0x4013f4+_0x558e('0x14d')+_0x47e35f));}if(_[_0x558e('0x14e')](_0x4b0f50)){for(var _0x5a4284=0x0;_0x5a4284<_0x4b0f50[_0x558e('0x9a')];_0x5a4284+=0x1){_0x5392a7['push'](ami[_0x558e('0x14f')]({'action':'command','command':util[_0x558e('0x7b')](_0x558e('0x150'),_0x4b0f50[_0x5a4284][_0x558e('0x151')],!_['isUndefined'](config[_0x558e('0x14c')][_0x47e35f])?_0x47e35f:'')})[_0x558e('0xbb')](function(_0x16d525){return _0x16d525['content'][_0x558e('0x152')](_0x558e('0x153'))>=0x0;})[_0x558e('0xb1')](myreject(_0x14520c)));}}else{_0x5392a7[_0x558e('0x12f')](ami[_0x558e('0x14f')]({'action':_0x558e('0x154'),'command':util['format'](_0x558e('0x150'),_0x4b0f50,!_[_0x558e('0x3b')](config[_0x558e('0x14c')][_0x47e35f])?_0x47e35f:'')})[_0x558e('0xbb')](function(_0x59a6fc){return _0x59a6fc[_0x558e('0x155')][_0x558e('0x152')](_0x558e('0x153'))>=0x0;})[_0x558e('0xb1')](myreject(_0x14520c)));}BPromise[_0x558e('0x156')](_0x5392a7)['then'](function(_0x194739){var _0x316365=_[_0x558e('0x157')](_0x194739);if(_0x316365){return _0x2f3cb0(_0x316365);}else{_0x508a36[_0x558e('0x3c')]=_0x3fbc93?_0x558e('0x158'):'INTERVAL_IS_OVERTIME';return _0x14520c(msgResponse('[ifTime][promiseAll]',_0x558e('0x149'),_0x558e('0x159')+_0x3fbc93+'\x20'+_0x4013f4+_0x558e('0x15a')+util['inspect'](_0x4b0f50,{'showHidden':![],'depth':null})+_0x558e('0x15b')+_0x47e35f));}})[_0x558e('0xb1')](function(_0x15dc65){return _0x14520c(msgResponse(_0x558e('0x147'),_0x558e('0x149'),JSON['stringify'](_0x15dc65)));});});};Dialer[_0x558e('0xab')][_0x558e('0x15c')]=function(_0x35b9ba){var _0x21828b=this;return function(){switch(_0x35b9ba[_0x558e('0x5a')]){case _0x558e('0x15d'):freeVariablesPredictive(_0x35b9ba);_0x21828b[_0x558e('0x15e')](_0x35b9ba,0x1);break;case _0x558e('0x15f'):freeVariablesPredictive(_0x35b9ba);_0x21828b[_0x558e('0x15e')](_0x35b9ba,_0x35b9ba['dialPowerLevel']);break;case _0x558e('0x9'):_0x21828b[_0x558e('0x9')](_0x35b9ba);break;case _0x558e('0x8'):freeVariablesPredictive(_0x35b9ba);_0x21828b['handlePower'](_0x35b9ba,0x1);break;default:freeVariablesPredictive(_0x35b9ba);logger['error'](_0x558e('0x160'),_0x35b9ba[_0x558e('0x3e')],_0x558e('0x161'));}};};Dialer['prototype'][_0x558e('0x162')]=function(_0x3ed0f3){var _0x1f0f2c=this;return function(){_0x1f0f2c[_0x558e('0x163')](_0x3ed0f3);};};Dialer[_0x558e('0xab')]['syncQueueSummary']=function(_0x2b40e6){var _0x3ae7e1=this;if(isNotPreview(_0x2b40e6[_0x558e('0x5a')])){if(isVoiceQueueOutbound(_0x2b40e6['type'])&&isActive(_0x2b40e6[_0x558e('0x59')])){_0x2b40e6[_0x558e('0xa2')]=!![];BPromise[_0x558e('0xb8')]()['then'](checkIsLoggedIn(_0x2b40e6,_0x2b40e6[_0x558e('0x4e')]))[_0x558e('0xbb')](checkIsActive(_0x2b40e6,_0x2b40e6[_0x558e('0x59')]))[_0x558e('0xbb')](checkInterval(_0x2b40e6))[_0x558e('0xbb')](_0x3ae7e1['checkIsTrunkReachable'](_0x2b40e6))['then'](_0x3ae7e1['checkIfTime'](_0x2b40e6['dialGlobalInterval'],_0x2b40e6['dialTimezone'],_0x2b40e6[_0x558e('0x3e')],_0x2b40e6))[_0x558e('0xbb')](_0x3ae7e1[_0x558e('0x148')](_0x2b40e6['Interval'],_0x2b40e6[_0x558e('0x164')],_0x2b40e6[_0x558e('0x3e')],_0x2b40e6))[_0x558e('0xbb')](_0x3ae7e1[_0x558e('0x15c')](_0x2b40e6))['catch'](loggerCatchQueueSummary(_0x558e('0x165'),_0x2b40e6));}else{notSendMessagesQueue(_0x2b40e6);}}else{freeVariablesPredictive(_0x2b40e6);}};Dialer[_0x558e('0xab')]['syncCampaigns']=function(){var _0x42fb94=this;var _0x3b8b62;for(var _0x16b524 in this[_0x558e('0x1e')]){if(typeof this[_0x558e('0x1e')][_0x16b524]!==_0x558e('0xae')){_0x3b8b62=this['campaigns'][_0x16b524];if(isCampaignIvr(_0x3b8b62[_0x558e('0x7d')])&&isActive(_0x3b8b62['active'])){_0x3b8b62[_0x558e('0xa2')]=!![];BPromise[_0x558e('0xb8')]()[_0x558e('0xbb')](checkIsActive(_0x3b8b62,_0x3b8b62[_0x558e('0xda')]))[_0x558e('0xbb')](checkInterval(_0x3b8b62))[_0x558e('0xbb')](_0x42fb94[_0x558e('0x142')](_0x3b8b62))['then'](_0x42fb94[_0x558e('0x146')](_0x3b8b62[_0x558e('0x166')],_0x3b8b62['dialTimezone'],_0x3b8b62['name'],_0x3b8b62))[_0x558e('0xbb')](_0x42fb94[_0x558e('0x148')](_0x3b8b62[_0x558e('0x44')],_0x3b8b62[_0x558e('0x164')],_0x3b8b62[_0x558e('0x3e')],_0x3b8b62))[_0x558e('0xbb')](_0x42fb94[_0x558e('0x162')](_0x3b8b62))['catch'](loggerCatchQueueSummary(_0x558e('0x167'),_0x3b8b62));}else{notSendMessagesCampaign(_0x3b8b62);}}}};function getCallerIdRandom(_0x46481d,_0x4dbfb8){var _0x1b6aba;var _0x41111e;var _0x3894de;if(_0x4dbfb8<=0x0){_0x4dbfb8=0x1;}_0x1b6aba=new RegExp('\x5cw{0,'+_0x4dbfb8+'}$');_0x41111e=Math['pow'](0xa,_0x4dbfb8-0x1);_0x3894de=Math[_0x558e('0x168')](0xa,_0x4dbfb8)-0x1;return util[_0x558e('0x7b')]('%s',_[_0x558e('0x169')](_0x46481d,_0x1b6aba,_[_0x558e('0x16a')](_0x41111e,_0x3894de)));}function extractCalleridName(_0xf241e3){var _0x24fb1b=_0xf241e3[_0x558e('0x16b')](/"(.*?)"/);return _0x24fb1b?_0x24fb1b[0x1]:_0xf241e3;}function extractCalleridNumber(_0x238b7c){var _0x40e699=_0x238b7c[_0x558e('0x16b')](/<(.*?)>/);return _0x40e699?_0x40e699[0x1]:_0x238b7c;}Dialer[_0x558e('0xab')][_0x558e('0x16c')]=function(_0x50fcc0,_0x300113){var _0x50825c=this;var _0x2753b3=uuid['v4']();this['actions'][_0x2753b3]=new Action(_0x50fcc0,_0x300113,_0x2753b3);return new BPromise(function(_0x342eab,_0x109f84){if(_[_0x558e('0x3b')](_0x50fcc0)&&typeof _0x50fcc0!==_0x558e('0x16d')){return _0x109f84(msgResponse(_0x558e('0x16e'),_0x558e('0x149'),'voiceQueue\x20is\x20undefine'));}if(_[_0x558e('0x3b')](_0x300113[_0x558e('0x16f')][_0x558e('0x170')])||_0x300113['Contact'][_0x558e('0x170')]===null){return _0x109f84(msgResponse(_0x558e('0x16e'),_0x558e('0x149'),_0x558e('0x171')));}var _0x31eca7={'XMD-CALLERID':_0x50825c['actions'][_0x2753b3][_0x558e('0x172')](),'XMD-AGI':_0x50fcc0['dialQueueProject']?util[_0x558e('0x7b')](_0x558e('0x173'),ipAgi,_0x50fcc0[_0x558e('0x10b')]):'NONE','XMD-AGIAFTER':_0x50fcc0[_0x558e('0x110')]?util['format'](_0x558e('0x173'),ipAgi,_0x50fcc0[_0x558e('0x110')]):_0x558e('0x174'),'XMD-QUEUE':_0x50fcc0['type']===_0x558e('0x4b')?util['format'](_0x558e('0x175'),_0x50fcc0[_0x558e('0x3e')],_0x50fcc0['dialQueueOptions']||'',_0x50fcc0[_0x558e('0x111')]?'c':'',_0x50fcc0[_0x558e('0x118')]||0x3):_0x558e('0x174'),'XMD-CONTACTID':_0x300113[_0x558e('0xd4')],'XMD-CDRTYPE':_0x558e('0x7'),'CALLERID(all)':_0x50825c[_0x558e('0x23')][_0x2753b3][_0x558e('0x172')](),'XMD-AMD':_0x50fcc0[_0x558e('0x102')]?_0x558e('0x176'):_0x558e('0x174'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x50fcc0[_0x558e('0x102')]){_0x31eca7['XMD-AMDINITIALSILENCE']=_0x50fcc0[_0x558e('0x177')]||0x9c4;_0x31eca7[_0x558e('0x178')]=_0x50fcc0['dialAMDGreeting']||0x5dc;_0x31eca7['XMD-AMDAFTERGREETINGSILENCE']=_0x50fcc0[_0x558e('0x179')]||0x320;_0x31eca7[_0x558e('0x17a')]=_0x50fcc0[_0x558e('0x17b')]||0x1388;_0x31eca7[_0x558e('0x17c')]=_0x50fcc0[_0x558e('0x17d')]||0x64;_0x31eca7['XMD-AMDBETWEENWORDSSILENCE']=_0x50fcc0[_0x558e('0x17e')]||0x32;_0x31eca7[_0x558e('0x17f')]=_0x50fcc0[_0x558e('0x180')]||0x3;_0x31eca7['XMD-AMDSILENCETHRESHOLD']=_0x50fcc0[_0x558e('0x181')]||0x100;_0x31eca7['XMD-AMDMAXIMUMWORDLENGTH']=_0x50fcc0[_0x558e('0x182')]||0x1388;}if(_0x50fcc0['type']===_0x558e('0x4b')){_0x31eca7['XMD-VOICEQUEUEID']=_0x300113[_0x558e('0xd6')];}else{_0x31eca7[_0x558e('0x183')]=_0x300113['CampaignId'];}for(var _0x5ec61c in _0x300113[_0x558e('0x16f')]){if(typeof _0x300113[_0x558e('0x16f')][_0x5ec61c]!==_0x558e('0xae')){if(isNotNull(_0x300113[_0x558e('0x16f')][_0x5ec61c])&&_0x5ec61c!=='id'&&_0x5ec61c!==_0x558e('0x184')&&_0x5ec61c!=='createdAt'&&_0x5ec61c!=='updatedAt'){_0x31eca7[util['format'](_0x558e('0x185'),_0x558e('0x186'),_[_0x558e('0x187')](_0x5ec61c))]=_0x300113['Contact'][_0x5ec61c];}}}var _0x2531e1=_0x50825c[_0x558e('0x143')](_0x50fcc0[_0x558e('0x79')])?getCallerId(_0x50fcc0[_0x558e('0x79')]['callerid'],_0x50fcc0[_0x558e('0x5b')],_0x50fcc0[_0x558e('0x188')]>0x0?getCallerIdRandom(_0x50fcc0[_0x558e('0x5c')],_0x50fcc0[_0x558e('0x188')]):_0x50fcc0[_0x558e('0x5c')]):getCallerId(_[_0x558e('0xaf')](_0x50fcc0['TrunkBackup'])?_0x50fcc0[_0x558e('0x79')][_0x558e('0x7a')]:_0x50fcc0[_0x558e('0x144')]['callerid'],_0x50fcc0[_0x558e('0x5b')],_0x50fcc0['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x50fcc0[_0x558e('0x5c')],_0x50fcc0['dialRandomLastDigitCallerIdNumber']):_0x50fcc0['dialOriginateCallerIdNumber']);if(_0x2531e1){_0x31eca7[_0x558e('0x189')]=_0x50825c[_0x558e('0x23')][_0x2753b3][_0x558e('0x18a')]=extractCalleridName(_0x2531e1);_0x31eca7[_0x558e('0x18b')]=_0x50825c['actions'][_0x2753b3][_0x558e('0x18c')]=extractCalleridNumber(_0x2531e1);}return ami[_0x558e('0x14f')]({'actionid':_0x2753b3,'action':_0x558e('0x16e'),'channel':_0x50825c[_0x558e('0x143')](_0x50fcc0[_0x558e('0x79')])?util[_0x558e('0x7b')]('SIP/%s/%s%s',_0x50fcc0['Trunk'][_0x558e('0x3e')],isNotNull(_0x50fcc0['dialPrefix'])?_0x50fcc0[_0x558e('0x5e')]['trim']()||'':'',_0x50fcc0[_0x558e('0x18d')]>0x0?_0x300113['Contact'][_0x558e('0x170')]['substring'](_0x50fcc0[_0x558e('0x18d')]):_0x300113[_0x558e('0x16f')][_0x558e('0x170')]):util[_0x558e('0x7b')](_0x558e('0x18e'),_[_0x558e('0xaf')](_0x50fcc0[_0x558e('0x144')])?_0x50fcc0[_0x558e('0x79')][_0x558e('0x3e')]:_0x50fcc0[_0x558e('0x144')]['name'],isNotNull(_0x50fcc0[_0x558e('0x5e')])?_0x50fcc0[_0x558e('0x5e')][_0x558e('0x18f')]()||'':'',_0x50fcc0[_0x558e('0x18d')]>0x0?_0x300113[_0x558e('0x16f')][_0x558e('0x170')][_0x558e('0x190')](_0x50fcc0[_0x558e('0x18d')]):_0x300113[_0x558e('0x16f')][_0x558e('0x170')]),'callerid':_0x2531e1,'Exten':'xcally-motion-dialer','Context':'from-sip','Priority':'1','variable':_0x31eca7,'timeout':(_0x50fcc0[_0x558e('0x5d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2753b3})[_0x558e('0xbb')](function(_0x27aeff){return _0x342eab(_0x27aeff);})[_0x558e('0xb1')](function(_0x283b9c){_0x50fcc0[_0x558e('0x67')]+=0x1;var _0x3d418f=new History(_0x50825c[_0x558e('0x23')][_0x2753b3]);logger[_0x558e('0x99')](util[_0x558e('0x7b')]('[originateError]:\x20%s',JSON[_0x558e('0x47')](_0x283b9c)));_0x3d418f[_0x558e('0xa8')]=0xe;_0x3d418f[_0x558e('0xa9')]=_0x558e('0x191');_0x3d418f['starttime']=moment()['format'](_0x558e('0x106'));_0x3d418f[_0x558e('0xaa')]=_0x3d418f['starttime'];_0x50825c['createHistory'](_0x3d418f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x192')));_0x50825c[_0x558e('0xca')](_0x3d418f)['catch'](loggerCatch('[originate][error]'))['finally'](function(){delete _0x50825c[_0x558e('0x23')][_0x2753b3];return _0x109f84(msgResponse(_0x558e('0x16e'),_0x558e('0x193'),'originate\x20action\x20Error'));});});});};Dialer[_0x558e('0xab')][_0x558e('0x30')]=function(_0x106435){var _0x15414c=this[_0x558e('0x23')][_0x106435['actionid']];if(_0x15414c){delete this['actions'][_0x106435[_0x558e('0x12a')]];_0x15414c[_0x558e('0x117')]=moment()[_0x558e('0x7b')](_0x558e('0x106'));var _0x258c3c=_0x15414c[_0x558e('0x7d')]===_0x558e('0x7e')?this[_0x558e('0x1e')][_0x15414c[_0x558e('0xb3')]]:this[_0x558e('0x1d')][_0x15414c[_0x558e('0x194')]()];if(!this['isSuccess'](_0x106435[_0x558e('0x195')])){this[_0x558e('0xb5')](_0x258c3c);return this[_0x558e('0x196')](_0x15414c,_0x258c3c,_0x106435)[_0x558e('0xb1')](loggerCatch(_0x558e('0x197')));}this['uniqueId'][_0x106435['uniqueid']]=_0x15414c;}};Dialer[_0x558e('0xab')][_0x558e('0x198')]=function(_0x3c2fd9,_0x4c58f0,_0x7c16eb){var _0x382257=new History(_0x4c58f0);if(_0x382257[_0x558e('0xee')]+_0x382257[_0x558e('0x104')]+_0x382257[_0x558e('0xef')]+_0x382257[_0x558e('0xf0')]+_0x382257[_0x558e('0xf1')]+_0x382257[_0x558e('0xf2')]+_0x382257['countmachineretry']+_0x382257[_0x558e('0xf3')]>=_0x7c16eb[_0x558e('0xf4')]-0x1){return!![];}switch(_0x3c2fd9){case 0x3:if(_0x382257['countnoanswerretry']>=_0x7c16eb[_0x558e('0x199')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x382257[_0x558e('0xef')]+=0x1,'scheduledat':moment()['add'](_0x7c16eb[_0x558e('0x19a')],_0x558e('0x105'))['format'](_0x558e('0x106')),'ContactId':_0x382257[_0x558e('0xd4')],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})['catch'](loggerCatch(_0x558e('0x19b')));break;case 0x5:if(_0x382257['countbusyretry']>=_0x7c16eb[_0x558e('0x19c')]-0x1){return!![];}this[_0x558e('0xc1')]({'active':![],'countbusyretry':_0x382257['countbusyretry']+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb[_0x558e('0x19d')],'minutes')[_0x558e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x382257['ContactId'],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x19e')));break;case 0x8:if(_0x382257['countcongestionretry']>=_0x7c16eb[_0x558e('0x19f')]-0x1){return!![];}this[_0x558e('0xc1')]({'active':![],'countcongestionretry':_0x382257[_0x558e('0x104')]+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb[_0x558e('0x1a0')],'minutes')[_0x558e('0x7b')](_0x558e('0x106')),'ContactId':_0x382257[_0x558e('0xd4')],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257['VoiceQueueId']||undefined,'CampaignId':_0x382257['CampaignId']||undefined})['catch'](loggerCatch(_0x558e('0x1a1')));break;case 0x0:if(_0x382257[_0x558e('0xf0')]>=_0x7c16eb['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x558e('0xc1')]({'active':![],'countnosuchnumberretry':_0x382257[_0x558e('0xf0')]+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb[_0x558e('0x1a2')],_0x558e('0x105'))[_0x558e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x382257['ContactId'],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x1a3')));}break;case 0xa:if(_0x382257['countdropretry']>=_0x7c16eb['dialDropMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x382257[_0x558e('0xf1')]+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb[_0x558e('0x11d')],_0x558e('0x105'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x382257['ContactId'],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257['VoiceQueueId']||undefined,'CampaignId':_0x382257['CampaignId']||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x11e')));break;case 0xb:if(_0x382257[_0x558e('0xf2')]>=_0x7c16eb['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x558e('0xc1')]({'active':![],'countabandonedretry':_0x382257[_0x558e('0xf2')]+=0x1,'scheduledat':moment()['add'](_0x7c16eb[_0x558e('0x1a4')],'minutes')['format'](_0x558e('0x106')),'ContactId':_0x382257[_0x558e('0xd4')],'ListId':_0x382257['ListId'],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x125')));break;case 0x13:if(_0x382257[_0x558e('0xeb')]>=_0x7c16eb[_0x558e('0xf7')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x382257[_0x558e('0xeb')]+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb['dialMachineRetryFrequency'],_0x558e('0x105'))['format'](_0x558e('0x106')),'ContactId':_0x382257[_0x558e('0xd4')],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x382257['countagentrejectretry']>=_0x7c16eb[_0x558e('0x1a5')]-0x1){return!![];}this[_0x558e('0xc1')]({'active':![],'countagentrejectretry':_0x382257[_0x558e('0xf3')]+=0x1,'scheduledat':moment()[_0x558e('0xfa')](_0x7c16eb[_0x558e('0x1a6')],_0x558e('0x105'))[_0x558e('0x7b')](_0x558e('0x106')),'ContactId':_0x382257['ContactId'],'ListId':_0x382257[_0x558e('0xfc')],'VoiceQueueId':_0x382257[_0x558e('0xd6')]||undefined,'CampaignId':_0x382257[_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x1a7')));break;default:return!![];}};Dialer[_0x558e('0xab')][_0x558e('0x196')]=function(_0x1dc729,_0x454e76,_0x59a194){var _0x393ddd=this;var _0x47a58f=new History(_0x1dc729);return new BPromise(function(_0x57e022,_0xaf9276){if(_[_0x558e('0x3b')](_0x454e76)&&typeof _0x454e76!==_0x558e('0x16d')){return _0xaf9276(msgResponse(_0x558e('0x1a8'),_0x558e('0x149'),_0x558e('0x1a9')));}if(_[_0x558e('0x3b')](_0x59a194)&&typeof _0x59a194!==_0x558e('0x16d')){return _0xaf9276(msgResponse('[callProgressDetecting]','Failure',_0x558e('0x1aa')));}switch(_0x59a194[_0x558e('0x10e')]){case'0':_0x454e76['outboundNoSuchCallsDay']+=0x1;_0x47a58f[_0x558e('0xa8')]=0x0;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x1ab');_0x47a58f[_0x558e('0xf0')]+=0x1;_0x47a58f['countglobal']+=0x1;ami['emit'](_0x558e('0x1ac'),ut[_0x558e('0xe6')](_0x1dc729,'nosuchnumber'));_0x393ddd['createHistory'](_0x47a58f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x103')));if(_0x393ddd[_0x558e('0x198')](0x0,_0x1dc729,_0x454e76)){if(_0x47a58f[_0x558e('0xf0')]>=_0x454e76[_0x558e('0x1ad')]){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,'reason\x200\x20no\x20such\x20number....');}else{_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1ae'));}}break;case'3':_0x454e76[_0x558e('0x65')]+=0x1;_0x47a58f[_0x558e('0xa8')]=0x3;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x1af');_0x47a58f[_0x558e('0xef')]+=0x1;_0x47a58f[_0x558e('0xec')]+=0x1;ami[_0x558e('0x4a')](_0x558e('0x1b0'),ut[_0x558e('0xe6')](_0x1dc729,_0x558e('0x1b1')));_0x393ddd[_0x558e('0xcc')](_0x47a58f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x1b2')));if(_0x393ddd[_0x558e('0x198')](0x3,_0x1dc729,_0x454e76)){if(_0x47a58f['countnoanswerretry']>=_0x454e76[_0x558e('0x199')]){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,'reason\x203\x20ringing\x20no\x20answer');}else{_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1b3'));}}break;case'5':_0x454e76['outboundBusyCallsDay']+=0x1;_0x47a58f[_0x558e('0xa8')]=0x5;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x1b4');_0x47a58f[_0x558e('0xee')]+=0x1;_0x47a58f['countglobal']+=0x1;ami[_0x558e('0x4a')](_0x558e('0x1b5'),ut['buildObj'](_0x1dc729,_0x558e('0x1b6')));_0x393ddd[_0x558e('0xcc')](_0x47a58f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x1b7')));if(_0x393ddd[_0x558e('0x198')](0x5,_0x1dc729,_0x454e76)){if(_0x47a58f['countbusyretry']>=_0x454e76['dialBusyMaxRetry']){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1b8'));}else{_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,'reason\x205\x20busy');}}break;case'8':_0x454e76[_0x558e('0x62')]+=0x1;_0x47a58f[_0x558e('0xa8')]=0x8;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x1b9');_0x47a58f['countcongestionretry']+=0x1;_0x47a58f[_0x558e('0xec')]+=0x1;ami[_0x558e('0x4a')](_0x558e('0x1ba'),ut['buildObj'](_0x1dc729,_0x558e('0x1bb')));_0x393ddd[_0x558e('0xcc')](_0x47a58f)[_0x558e('0xb1')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x393ddd[_0x558e('0x198')](0x8,_0x1dc729,_0x454e76)){if(_0x47a58f[_0x558e('0x104')]>=_0x454e76[_0x558e('0x19f')]){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,'reason\x208\x20congestion');}else{_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1bc'));}}break;case'11':_0x454e76[_0x558e('0x1bd')]+=0x1;_0x47a58f[_0x558e('0xa8')]=0xb;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x122');_0x47a58f[_0x558e('0xf2')]+=0x1;_0x47a58f[_0x558e('0xec')]+=0x1;_0x393ddd[_0x558e('0xcc')](_0x47a58f)['catch'](loggerCatch(_0x558e('0x127')));if(_0x393ddd[_0x558e('0x198')](0xb,_0x1dc729,_0x454e76)){if(_0x47a58f[_0x558e('0xf2')]>=_0x454e76['dialAbandonedMaxRetry']){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1be'));}else{_0x393ddd['stateGlobal'](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1be'));}}break;case'20':_0x454e76['outboundRejectCallsDay']+=0x1;_0x47a58f[_0x558e('0xa8')]=0x14;_0x47a58f[_0x558e('0xa9')]=_0x558e('0x1bf');_0x47a58f[_0x558e('0xf3')]+=0x1;_0x47a58f[_0x558e('0xec')]+=0x1;ami['emit'](_0x558e('0x1c0'),ut[_0x558e('0xe6')](_0x1dc729,_0x558e('0x1c1')));_0x393ddd[_0x558e('0xcc')](_0x47a58f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x1c2')));if(_0x393ddd[_0x558e('0x198')](0x14,_0x1dc729,_0x454e76)){if(_0x47a58f[_0x558e('0xf3')]>=_0x454e76['dialAgentRejectMaxRetry']){_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1c3'));}else{_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,_0x558e('0x1c3'));}}break;default:_0x454e76['outboundUnknownCallsDay']+=0x1;_0x47a58f[_0x558e('0xa8')]=0xc;_0x47a58f[_0x558e('0xa9')]=_0x59a194[_0x558e('0x10e')];_0x393ddd[_0x558e('0xcc')](_0x47a58f)[_0x558e('0xb1')](loggerCatch(_0x558e('0x1c4')));if(_0x393ddd[_0x558e('0x198')](_0x59a194[_0x558e('0x10e')],_0x1dc729,_0x454e76)){if(_0x47a58f[_0x558e('0xee')]+_0x47a58f[_0x558e('0x104')]+_0x47a58f['countnoanswerretry']+_0x47a58f[_0x558e('0xf0')]+_0x47a58f[_0x558e('0xf1')]+_0x47a58f[_0x558e('0xf2')]+_0x47a58f[_0x558e('0xeb')]+_0x47a58f['countagentrejectretry']>=_0x454e76[_0x558e('0xf4')]){_0x393ddd[_0x558e('0xf5')](_0x47a58f,_0x57e022,_0xaf9276,_0x59a194[_0x558e('0x10e')]);}else{_0x393ddd[_0x558e('0xf8')](_0x47a58f,_0x57e022,_0xaf9276,_0x59a194[_0x558e('0x10e')]);}}}});};Dialer[_0x558e('0xab')][_0x558e('0xf5')]=function(_0x29745c,_0x35f8c6,_0x56f48d,_0x51c8e9){var _0x2ddf37=new Final(_0x29745c);_0x2ddf37[_0x558e('0xa8')]=0xf;_0x2ddf37[_0x558e('0xa9')]=_0x558e('0x1c5');this[_0x558e('0xf8')](_0x2ddf37,_0x35f8c6,_0x56f48d,_0x51c8e9);};Dialer[_0x558e('0xab')][_0x558e('0xf8')]=function(_0x5dad39,_0x28d19f,_0x2b040a,_0x28b376){this[_0x558e('0xca')](_0x5dad39)[_0x558e('0xbb')](function(){return _0x28d19f(msgResponse('[callProgressDetecting]',_0x558e('0xd9'),_0x28b376));})['catch'](function(){return _0x2b040a(msgResponse(_0x558e('0x1c6'),_0x558e('0x149'),_0x558e('0x1c7')));});};Dialer[_0x558e('0xab')][_0x558e('0x9')]=function(_0x261c74){var _0x910079=_0x261c74[_0x558e('0x1c8')]/0x64;var _0x4cf9c4=_0x261c74[_0x558e('0x119')]/(_0x261c74['outboundDropCallsDayTimeout']+_0x261c74[_0x558e('0x60')]);var _0x3e14b3=Math[_0x558e('0x1c9')](_0x261c74[_0x558e('0x74')]*(_0x261c74[_0x558e('0x1ca')]/0x64));var _0x49c53c=Math[_0x558e('0x1c9')](_0x261c74['predictiveIntervalAvailable']*(_0x261c74['predictiveIntervalMinThreshold']/0x64));var _0x23c5a9=_0x261c74[_0x558e('0x4d')]+_0x261c74[_0x558e('0x53')];var _0x374908=Math[_0x558e('0x1cb')](_0x261c74[_0x558e('0x77')]*_0x261c74['erlangAbandonmentRate']*_0x261c74[_0x558e('0x71')]*_0x261c74[_0x558e('0x72')]);if(_[_0x558e('0x3b')](_0x261c74[_0x558e('0x28')])){if(!_[_0x558e('0x3b')](_0x261c74[_0x558e('0x27')])){_0x261c74['startPredictive']=undefined;loggerPredictive[_0x558e('0x99')](_0x558e('0x1cc'),_0x558e('0x1cd'));}if(!_[_0x558e('0x3b')](_0x261c74[_0x558e('0x94')])){loggerPredictive[_0x558e('0x99')]('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x261c74[_0x558e('0x94')]);_0x261c74[_0x558e('0x94')]=undefined;}_0x261c74[_0x558e('0x28')]=moment()[_0x558e('0x7b')](_0x558e('0x106'));loggerPredictive['info'](_0x261c74[_0x558e('0x3e')],_0x558e('0x1ce'),_0x261c74['startProgressive']);this['handlePower'](_0x261c74,0x1);}else if(ifInterval(_0x261c74[_0x558e('0x1cf')],_0x261c74[_0x558e('0x28')])){this[_0x558e('0x15e')](_0x261c74,0x1);loggerPredictiveCalls[_0x558e('0x81')](_0x558e('0x1d0'),_0x261c74[_0x558e('0x28')],_0x261c74[_0x558e('0x3e')]);_0x261c74[_0x558e('0x77')]=0x0;_0x261c74[_0x558e('0x70')]=0x0;}else if(_0x910079<_0x4cf9c4&&_0x261c74['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x261c74);loggerPredictive['info'](_0x558e('0x1d1'),'Dropped\x20calls\x20day',_0x4cf9c4,_0x558e('0x28'),_0x261c74['name']);}else if(_0x374908<_0x261c74[_0x558e('0x70')]&&_0x261c74[_0x558e('0x1d2')]==='dropRate'){freeVariablesPredictive(_0x261c74);loggerPredictive['info'](_0x558e('0x1d3'),_0x558e('0x1d4'),_0x374908,_0x558e('0x1d5'),_0x261c74[_0x558e('0x70')],_0x558e('0x28'),_0x261c74[_0x558e('0x3e')]);}else if(!ifInterval(_0x261c74['dialPredictiveInterval'],_0x261c74[_0x558e('0x28')])&&_[_0x558e('0x3b')](_0x261c74[_0x558e('0x27')])&&!_[_0x558e('0x3b')](_0x261c74[_0x558e('0x28')])){_0x261c74[_0x558e('0x27')]=moment()[_0x558e('0x7b')](_0x558e('0x106'));loggerPredictive['info'](_0x261c74[_0x558e('0x3e')],_0x558e('0x1d6'),_0x261c74[_0x558e('0x27')]);this[_0x558e('0xbe')](_0x261c74[_0x558e('0x1cf')])[_0x558e('0xbb')](this[_0x558e('0x1d7')](_0x261c74))[_0x558e('0xbb')](mergeDataErlangB(_0x261c74))[_0x558e('0xbb')](this[_0x558e('0x1d8')](_0x261c74))[_0x558e('0xb1')](loggerCatchPredictive(_0x558e('0x1d9'),_0x261c74));}else if(!ifInterval(_0x261c74['dialPredictiveInterval'],_0x261c74[_0x558e('0x27')])){_0x261c74[_0x558e('0x70')]=0x0;_0x261c74['startPredictive']=moment()[_0x558e('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x558e('0x81')](_0x261c74['name'],_0x558e('0x1da'),_0x261c74[_0x558e('0x27')]);clearInterval(_0x261c74['handlePredictive']);_0x261c74['handlePredictive']=undefined;this[_0x558e('0xbe')](_0x261c74['dialPredictiveInterval'])[_0x558e('0xbb')](this[_0x558e('0x1d7')](_0x261c74))['then'](mergeDataErlangB(_0x261c74))[_0x558e('0xbb')](this[_0x558e('0x1d8')](_0x261c74))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x261c74));}else if(_0x261c74[_0x558e('0x74')]&&_0x23c5a9<_0x261c74['predictiveIntervalAvailable']-_0x49c53c){freeVariablesPredictive(_0x261c74);loggerPredictive[_0x558e('0x81')](_0x261c74[_0x558e('0x3e')],_0x558e('0x1db'),_0x23c5a9,')\x20are\x20less\x20than\x20threshold\x20(',_0x261c74['predictiveIntervalAvailable'],'-',_0x49c53c,'=',_0x261c74[_0x558e('0x74')]-_0x49c53c,')');}else if(_0x261c74[_0x558e('0x74')]&&_0x23c5a9>_0x261c74[_0x558e('0x74')]+_0x3e14b3){freeVariablesPredictive(_0x261c74);loggerPredictive['info'](_0x261c74[_0x558e('0x3e')],_0x558e('0x1db'),_0x23c5a9,_0x558e('0x1dc'),_0x261c74[_0x558e('0x74')],'+',_0x3e14b3,'=',_0x261c74[_0x558e('0x74')]+_0x3e14b3,')');}};Dialer[_0x558e('0xab')][_0x558e('0x1d7')]=function(_0x10dabb){var _0x15db45=this;return function(_0xdc3c87){return new BPromise(function(_0x5be9af,_0x5bb5e){_[_0x558e('0x90')](_0x10dabb,_0xdc3c87[0x0]);if(checkGetDataPredictive(_0xdc3c87[0x0])){var _0x1a1d9d=_0x10dabb['predictiveIntervalAvailable']=_0x10dabb[_0x558e('0x53')]+_0x10dabb[_0x558e('0x4d')];var _0x4f63de=_0x10dabb[_0x558e('0x1cf')]*0x3c;var _0x3c7d10=_0xdc3c87[0x0][_0x558e('0x6c')]+_0xdc3c87[0x0][_0x558e('0x6b')];var _0x52789b=(_0xdc3c87[0x0]['predictiveIntervalAnsweredCalls']+_0xdc3c87[0x0]['predictiveIntervalDroppedCallsTimeout']+_0xdc3c87[0x0][_0x558e('0x6d')])/_0xdc3c87[0x0][_0x558e('0x75')];_0x10dabb[_0x558e('0x71')]=_0x52789b>0x0?_0x52789b:0x1;switch(_0x10dabb[_0x558e('0x1d2')]){case _0x558e('0x1dd'):var _0x431eab=_0x10dabb[_0x558e('0x1c8')]/0x64;return _0x15db45[_0x558e('0x1de')](_0x1a1d9d,_0x4f63de,_0x3c7d10,_0x52789b,_0x431eab)[_0x558e('0xbb')](function(_0x420e99){return _0x5be9af(_0x420e99);});case _0x558e('0x1df'):var _0x398e9a=_0x10dabb[_0x558e('0x1c8')]/0x64;return _0x15db45['busyFactor'](_0x1a1d9d,_0x4f63de,_0x3c7d10,_0x52789b,_0x398e9a)['then'](function(_0x2f1bcc){return _0x5be9af(_0x2f1bcc);});default:return _0x5bb5e(msgResponse('[getDataPredictive]',_0x558e('0x149'),'Unknown\x20Predictive'));}}else{return _0x5bb5e(msgResponse(_0x558e('0x1e0'),_0x558e('0x149'),_0x558e('0x1e1')));}});};};Dialer[_0x558e('0xab')][_0x558e('0x1e2')]=function(_0x6d4d83){var _0x394fd4=this;return function(_0x412f83){return new BPromise(function(_0x2e398d,_0x316878){_['merge'](_0x6d4d83,_0x412f83[0x0]);if(checkGetDataPredictive(_0x412f83[0x0])){loggerPredictive[_0x558e('0x81')](JSON[_0x558e('0x47')](_0x412f83[0x0]));if(_0x6d4d83[_0x558e('0x1d2')]===_0x558e('0x1dd')){return _0x394fd4[_0x558e('0xc8')](_0x6d4d83['id'])[_0x558e('0xbb')](function(_0x1da6d7){var _0x4fcb74=_0x6d4d83[_0x558e('0x4e')]-_0x1da6d7[0x0]['outboundQueuePauses'];var _0x244ca5=_0x6d4d83[_0x558e('0x1cf')]*0x3c;var _0x48fe20=_0x412f83[0x0]['predictiveIntervalAvgTalktime']+_0x412f83[0x0][_0x558e('0x6b')];var _0xfe3a9c=(_0x412f83[0x0][_0x558e('0x6a')]+_0x412f83[0x0][_0x558e('0x6e')]+_0x412f83[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x412f83[0x0][_0x558e('0x75')];var _0x41d260=_0x6d4d83[_0x558e('0x1c8')]/0x64;_0x6d4d83[_0x558e('0x73')]=_0x1da6d7[0x0][_0x558e('0x1e3')]||0x0;_0x6d4d83[_0x558e('0x71')]=_0xfe3a9c>0x0?_0xfe3a9c:0x1;return _0x394fd4['abandonmentRate'](_0x4fcb74,_0x244ca5,_0x48fe20,_0xfe3a9c,_0x41d260);})[_0x558e('0xbb')](function(_0x2e3a6c){return _0x2e398d(_0x2e3a6c);})[_0x558e('0xb1')](function(_0x3eda4d){return _0x316878(msgResponse('[CatchErlangB]',_0x558e('0x149'),JSON[_0x558e('0x47')](_0x3eda4d)));});}if(_0x6d4d83[_0x558e('0x1d2')]===_0x558e('0x1df')){return _0x394fd4[_0x558e('0xc8')](_0x6d4d83['id'])[_0x558e('0xbb')](function(_0xef36f1){var _0x5e66eb=_0x6d4d83[_0x558e('0x4e')]-_0xef36f1[0x0][_0x558e('0x1e3')];var _0x3090e3=_0x6d4d83[_0x558e('0x1cf')]*0x3c;var _0x5e3c7c=_0x412f83[0x0]['predictiveIntervalAvgTalktime']+_0x412f83[0x0][_0x558e('0x6b')];var _0x4fac96=(_0x412f83[0x0]['predictiveIntervalAnsweredCalls']+_0x412f83[0x0][_0x558e('0x6e')]+_0x412f83[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x412f83[0x0][_0x558e('0x75')];var _0x4d8ab9=_0x6d4d83[_0x558e('0x1c8')]/0x64;_0x6d4d83[_0x558e('0x73')]=_0xef36f1[0x0][_0x558e('0x1e3')]||0x0;_0x6d4d83[_0x558e('0x71')]=_0x4fac96>0x0?_0x4fac96:0x1;return _0x394fd4[_0x558e('0x1e4')](_0x5e66eb,_0x3090e3,_0x5e3c7c,_0x4fac96,_0x4d8ab9);})[_0x558e('0xbb')](function(_0x4afc2f){return _0x2e398d(_0x4afc2f);})[_0x558e('0xb1')](function(_0x4af3e4){return _0x316878(msgResponse('[CatchErlangB]',_0x558e('0x149'),JSON[_0x558e('0x47')](_0x4af3e4)));});}}else{return _0x316878(msgResponse(_0x558e('0x1e0'),_0x558e('0x149'),'check\x20failure'));}});};};Dialer['prototype'][_0x558e('0x1d8')]=function(_0x48ace9){var _0x1b3ccb=this;return function(){var _0x239d16=0x0;var _0x249f3b=Math[_0x558e('0x1cb')](_0x48ace9[_0x558e('0x1e5')]*0x3e8);if(_0x249f3b>0x0){_0x249f3b=_0x249f3b<0x64?0x64:_0x249f3b;loggerPredictive[_0x558e('0x81')](_0x48ace9[_0x558e('0x3e')],_0x558e('0x1e6'),_0x249f3b,_0x558e('0x48'));_0x48ace9[_0x558e('0x94')]=setInterval(function(){_0x1b3ccb['handlePredictive'](_0x48ace9);loggerPredictiveCalls[_0x558e('0x81')](_0x558e('0x1e7'),_0x239d16+=0x1);},_0x249f3b);}else{loggerPredictive['info'](_0x48ace9['name'],_0x558e('0x1e8'));}};};Dialer['prototype'][_0x558e('0x1e9')]=function(_0x464698,_0x5ca111){var _0x1daf21=this;return function(_0x6da12){if(_[_0x558e('0x45')](_0x6da12)){if(_[_0x558e('0xaf')](_0x5ca111[_0x558e('0xd5')])||!_0x5ca111[_0x558e('0x1ea')]){if(_0x464698['dialMethod']===_0x558e('0x8')){_0x464698[_0x558e('0x131')]=_[_0x558e('0x3b')](_0x464698[_0x558e('0x131')])?!![]:_0x464698[_0x558e('0x131')];var _0x541aec=uuid['v4']();_0x1daf21[_0x558e('0x23')][_0x541aec]=new Action(_0x464698,_0x5ca111,_0x541aec);loggerBooked['info'](_0x558e('0x1eb'),_0x541aec,_0x558e('0x1ec'),JSON[_0x558e('0x47')](_0x464698[_0x558e('0x131')]),'Queue:\x20',_0x464698[_0x558e('0x3e')]);if(_0x464698[_0x558e('0x131')]){_0x464698['queueStatusComplete']=![];_0x1daf21[_0x558e('0x2a')][_0x1daf21['actions'][_0x541aec][_0x558e('0xb3')]]=[];ami[_0x558e('0x14f')]({'actionid':_0x541aec,'action':'queuestatus','queue':_0x464698[_0x558e('0x3e')]})[_0x558e('0xb1')](function(){_0x1daf21[_0x558e('0xb5')](_0x464698);_0x1daf21[_0x558e('0xc1')]({'active':![],'ContactId':_0x1daf21[_0x558e('0x23')][_0x541aec][_0x558e('0xd4')],'ListId':_0x1daf21['actions'][_0x541aec][_0x558e('0xfc')],'VoiceQueueId':_0x1daf21['actions'][_0x541aec][_0x558e('0xd6')]||undefined,'CampaignId':_0x1daf21[_0x558e('0x23')][_0x541aec][_0x558e('0xfd')]||undefined})['catch'](loggerCatch(_0x558e('0x1ed')));delete _0x1daf21['actions'][_0x541aec];});}else{loggerBooked[_0x558e('0x81')](_0x558e('0x1ee'),JSON[_0x558e('0x47')](_0x464698['queueStatusComplete']),_0x558e('0x1ef'),_0x464698['name']);_0x1daf21['updateOriginated'](_0x464698);_0x1daf21[_0x558e('0xc1')]({'active':![],'ContactId':_0x1daf21['actions'][_0x541aec][_0x558e('0xd4')],'ListId':_0x1daf21[_0x558e('0x23')][_0x541aec][_0x558e('0xfc')],'VoiceQueueId':_0x1daf21[_0x558e('0x23')][_0x541aec][_0x558e('0xd6')]||undefined,'CampaignId':_0x1daf21[_0x558e('0x23')][_0x541aec][_0x558e('0xfd')]||undefined})[_0x558e('0xb1')](loggerCatch(_0x558e('0x1ed')));delete _0x1daf21[_0x558e('0x23')][_0x541aec];}}else{return _0x1daf21[_0x558e('0x16c')](_0x464698,_0x5ca111);}}else{if(getDiff(_0x5ca111[_0x558e('0x1f0')])<_0x464698[_0x558e('0x1f1')]*0x3c){if(_0x5ca111[_0x558e('0x1f2')]&&!_0x5ca111[_0x558e('0x1f2')][_0x558e('0x1f3')]){_0x1daf21[_0x558e('0x135')][_0x558e('0x136')](_0x5ca111['id'])[_0x558e('0x1b')](function(){_0x1daf21['updateOriginated'](_0x464698);});}else{_0x1daf21[_0x558e('0xc3')]({'active':![]},_0x5ca111['id'],0x1)['finally'](function(){_0x1daf21[_0x558e('0xb5')](_0x464698);});}}else{_0x464698['outboundReCallsDay']+=0x1;_0x1daf21[_0x558e('0xb5')](_0x464698);if(_0x464698[_0x558e('0x1f4')]){_0x1daf21[_0x558e('0xc1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x5ca111[_0x558e('0xd4')],'ListId':_0x5ca111[_0x558e('0xfc')],'VoiceQueueId':_0x5ca111[_0x558e('0xd6')]||undefined,'CampaignId':_0x5ca111[_0x558e('0xfd')]||undefined})['catch'](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x1daf21[_0x558e('0xcc')](createObjHistory(_0x464698,_0x5ca111,_0x558e('0x1f5'),0x17,_0x558e('0x1f6')))[_0x558e('0xb1')](loggerCatch(_0x558e('0x1f7')));}else{_0x1daf21[_0x558e('0xd2')](createObjHistory(_0x464698,_0x5ca111,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x558e('0x1f8'),'[Originate][HistoryRecallClose]');}}}}else{_0x464698[_0x558e('0x61')]+=0x1;_0x1daf21[_0x558e('0xd2')](createObjHistory(_0x464698,_0x5ca111,_0x558e('0x1f9'),0xd,_0x558e('0x1fa')),_0x558e('0x1fb'),_0x558e('0x1fc'));throw'inBlackList';}};};Dialer[_0x558e('0xab')][_0x558e('0x163')]=function(_0x407a59){var _0x10a35d=this;var _0x4ffaab=_0x407a59[_0x558e('0x1fd')]-_0x407a59[_0x558e('0x76')]-_0x407a59[_0x558e('0xc4')];emitCampaignSummary(_0x407a59);if(_0x4ffaab>0x0){if(_0x4ffaab>this[_0x558e('0x21')]){_0x4ffaab=this[_0x558e('0x21')];}_0x407a59['temp']+=_0x4ffaab;this[_0x558e('0xc6')](_0x407a59['id'],_0x4ffaab,_0x407a59[_0x558e('0x1fe')],_0x407a59)['then'](function(_0x329194){_0x407a59['temp']-=_0x4ffaab;_0x407a59[_0x558e('0xc4')]=_0x407a59['temp']>0x0?_0x407a59[_0x558e('0xc4')]:0x0;if(!checkContactEmpty(_0x329194)){_0x407a59[_0x558e('0x3c')]=_0x558e('0xa0');logger[_0x558e('0x81')](_0x558e('0x1ff')+_0x407a59['name']);}else{_0x407a59[_0x558e('0x76')]+=_0x329194[_0x558e('0x9a')];_0x407a59[_0x558e('0x3c')]=_0x558e('0x200');for(var _0x5abfe2=0x0;_0x5abfe2<_0x329194[_0x558e('0x9a')];_0x5abfe2+=0x1){_0x407a59[_0x558e('0x201')]+=0x1;if(_[_0x558e('0xaf')](_0x329194[_0x5abfe2])||_[_0x558e('0xaf')](_0x329194[_0x5abfe2][_0x558e('0x16f')])||_[_0x558e('0xaf')](_0x329194[_0x5abfe2][_0x558e('0x16f')][_0x558e('0x170')])){_0x10a35d[_0x558e('0xd0')](_0x558e('0x202'),_0x407a59,_0x329194[_0x5abfe2]);}else{_0x10a35d['checkIsBlackListIvr'](_['pick'](_0x329194[_0x5abfe2],[_0x558e('0xfd'),_0x558e('0x203')]))['then'](_0x10a35d[_0x558e('0x1e9')](_0x407a59,_0x329194[_0x5abfe2]))[_0x558e('0xb1')](_0x10a35d[_0x558e('0xcf')]('[actionOriginateIvr]\x20',_0x407a59));}}}})[_0x558e('0xb1')](loggerGetContactDialer(_0x558e('0x204'),_0x407a59,_0x4ffaab));}};Dialer[_0x558e('0xab')][_0x558e('0x15e')]=function(_0x43395f,_0x49ec23){var _0x5702a7=this;var _0x7f180e=[];var _0x135624=_0x49ec23>=0x1?_0x49ec23:0x1;if(_0x43395f[_0x558e('0x5a')]===_0x558e('0x8')){_0x135624=0x1;}var _0x291926=Math[_0x558e('0x1cb')](_0x43395f[_0x558e('0x4d')]*_0x135624)-_0x43395f[_0x558e('0x76')]-_0x43395f[_0x558e('0xc4')];emitVoiceQueueSummary(_0x43395f);if(_0x43395f['dialLimitQueue']>0x0){var _0x59daff=_0x43395f[_0x558e('0x205')]-_0x43395f['originated']-_0x43395f[_0x558e('0x53')]-_0x43395f['temp']-_0x43395f[_0x558e('0x4f')];if(_0x291926>_0x59daff){_0x291926=_0x59daff;}}if(_0x291926>0x0){if(_0x43395f[_0x558e('0x5a')]===_0x558e('0x8')){_0x291926=0x1;}if(_0x291926>this[_0x558e('0x21')]){_0x291926=this[_0x558e('0x21')];}_0x43395f[_0x558e('0xc4')]+=_0x291926;for(var _0xc87d89 in this[_0x558e('0x1f')]){if(typeof this[_0x558e('0x1f')][_0xc87d89]!=='undefined'){if(this[_0x558e('0x1f')][_0xc87d89]['state']===_0x558e('0x206')&&this[_0x558e('0x1f')][_0xc87d89][_0x558e('0xb0')]===_0x558e('0xdb')){_0x7f180e['push'](this[_0x558e('0x1f')][_0xc87d89]['id']);}}}this[_0x558e('0x207')](_0x43395f['id'],_0x7f180e,_0x291926,_0x43395f[_0x558e('0x1fe')],_0x43395f)[_0x558e('0xbb')](function(_0x378287){_0x43395f[_0x558e('0xc4')]-=_0x291926;_0x43395f[_0x558e('0xc4')]=_0x43395f[_0x558e('0xc4')]>0x0?_0x43395f[_0x558e('0xc4')]:0x0;if(!checkContactEmpty(_0x378287)){_0x5702a7[_0x558e('0xb7')](_0x43395f)[_0x558e('0xbb')](sendMessageReschedule(_0x43395f))[_0x558e('0xb1')](loggerCatch(_0x558e('0xb9')));}else{_0x43395f[_0x558e('0x76')]+=_0x378287[_0x558e('0x9a')];_0x43395f['message']=_0x43395f[_0x558e('0x5a')]===_0x558e('0x8')?_0x558e('0x176'):_0x558e('0x200');for(var _0x2a9ecb=0x0;_0x2a9ecb<_0x378287[_0x558e('0x9a')];_0x2a9ecb+=0x1){if(_[_0x558e('0xaf')](_0x378287[_0x2a9ecb])||_[_0x558e('0xaf')](_0x378287[_0x2a9ecb][_0x558e('0x16f')])||_['isNil'](_0x378287[_0x2a9ecb]['Contact'][_0x558e('0x170')])){_0x5702a7[_0x558e('0xd0')](_0x558e('0x202'),_0x43395f,_0x378287[_0x2a9ecb]);}else{_0x5702a7['checkIsBlackList'](_[_0x558e('0xd3')](_0x378287[_0x2a9ecb],[_0x558e('0xd6'),'Contact.phone']))[_0x558e('0xbb')](_0x5702a7[_0x558e('0x1e9')](_0x43395f,_0x378287[_0x2a9ecb]))[_0x558e('0xb1')](_0x5702a7[_0x558e('0xcf')](_0x558e('0x202'),_0x43395f));}}}})[_0x558e('0xb1')](loggerGetContactDialer(_0x558e('0x208'),_0x43395f,_0x291926));}};Dialer[_0x558e('0xab')][_0x558e('0x94')]=function(_0x259149){if(_0x259149['dialLimitQueue']>0x0){var _0x182e71=_0x259149[_0x558e('0x205')]-_0x259149['originated']-_0x259149[_0x558e('0x53')];if(_0x182e71>0x0){this[_0x558e('0x209')](_0x259149);}else{loggerPredictiveCalls[_0x558e('0x81')](_0x558e('0x20a'));}}else{this[_0x558e('0x209')](_0x259149);}};Dialer[_0x558e('0xab')][_0x558e('0x209')]=function(_0xd365be){var _0x3f3fae=this;var _0x22afad=[];_0xd365be[_0x558e('0x76')]+=0x1;for(var _0x48592b in this['agents']){if(typeof this[_0x558e('0x1f')][_0x48592b]!==_0x558e('0xae')){if(this[_0x558e('0x1f')][_0x48592b][_0x558e('0xa8')]===_0x558e('0x206')&&this[_0x558e('0x1f')][_0x48592b][_0x558e('0xb0')]===_0x558e('0xdb')){_0x22afad['push'](this[_0x558e('0x1f')][_0x48592b]['id']);}}}this[_0x558e('0x207')](_0xd365be['id'],_0x22afad,0x1,_0xd365be['dialOrderByScheduledAt'],_0xd365be)[_0x558e('0xbb')](function(_0x42e73a){if(!checkContactEmpty(_0x42e73a)){checkContactLowerLimitOriginate(_0xd365be,0x1,0x0);_0x3f3fae[_0x558e('0xb7')](_0xd365be)[_0x558e('0xbb')](sendMessageReschedule(_0xd365be))[_0x558e('0xb1')](loggerCatch('[countReScheduled]\x20'));}else{_0xd365be[_0x558e('0x3c')]=_0x558e('0x200');if(_[_0x558e('0xaf')](_0x42e73a[0x0])||_[_0x558e('0xaf')](_0x42e73a[0x0][_0x558e('0x16f')])||_[_0x558e('0xaf')](_0x42e73a[0x0][_0x558e('0x16f')][_0x558e('0x170')])){_0x3f3fae[_0x558e('0xd0')]('[actionOriginate]\x20',_0xd365be,_0x42e73a[0x0]);}else{_0x3f3fae['checkIsBlackList'](_[_0x558e('0xd3')](_0x42e73a[0x0],[_0x558e('0xd6'),_0x558e('0x203')]))[_0x558e('0xbb')](_0x3f3fae['checkContactBlack'](_0xd365be,_0x42e73a[0x0]))[_0x558e('0xb1')](_0x3f3fae[_0x558e('0xcf')](_0x558e('0x20b'),_0xd365be));}}})[_0x558e('0xb1')](loggerGetContactDialer(_0x558e('0x20c'),_0xd365be,0x1));emitVoiceQueueSummary(_0xd365be);};Dialer[_0x558e('0xab')][_0x558e('0x1de')]=function(_0x1513c0,_0x395c62,_0x4d3528,_0x31ed20,_0x5018a2,_0x54de3c){loggerPredictive[_0x558e('0x81')](_0x558e('0x20d'));loggerPredictive[_0x558e('0x81')](_0x558e('0x20e'),_0x1513c0);loggerPredictive[_0x558e('0x81')](_0x558e('0x20f'),_0x395c62);loggerPredictive[_0x558e('0x81')](_0x558e('0x210'),_0x4d3528);loggerPredictive[_0x558e('0x81')]('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x31ed20);loggerPredictive[_0x558e('0x81')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5018a2);loggerPredictive[_0x558e('0x81')]('---------------------------');return new BPromise(function(_0x4c1855,_0x5ead00){if(_0x1513c0<=0x0||isNaN(_0x1513c0)){return _0x5ead00(msgResponse(_0x558e('0x211'),_0x558e('0x193'),_0x558e('0x212')+_0x1513c0));}if(_0x4d3528<=0x0||isNaN(_0x4d3528)){return _0x5ead00(msgResponse(_0x558e('0x211'),_0x558e('0x193'),_0x558e('0x213')+_0x4d3528));}if(_0x31ed20<=0x0||isNaN(_0x31ed20)){return _0x5ead00(msgResponse('[abandonmentRate]',_0x558e('0x193'),_0x558e('0x214')+_0x31ed20));}if(_0x395c62<=0x0||isNaN(_0x395c62)){return _0x5ead00(msgResponse(_0x558e('0x211'),_0x558e('0x193'),_0x558e('0x215')+_0x395c62));}if(_0x5018a2<=0x0||isNaN(_0x5018a2)){return _0x5ead00(msgResponse(_0x558e('0x211'),_0x558e('0x193'),_0x558e('0x216')+_0x5018a2));}_0x54de3c=_0x54de3c||0x0;var _0x1890c3=0x1/_0x4d3528;var _0x5b0acf=0x0;var _0x5d76a6=0x0;var _0x524a27=0x0;var _0x390f2a=0x0;for(var _0x351a52=0x0;_0x524a27<_0x5018a2;_0x351a52+=0x1){_0x5d76a6=_0x351a52/_0x395c62;_0x5b0acf=(_0x31ed20*_0x5d76a6+_0x54de3c)/_0x1890c3;_0x524a27=erlangb(_0x5b0acf,_0x1513c0);_0x390f2a=_0x5b0acf/_0x1513c0*(0x1-erlangb(_0x5b0acf,_0x1513c0));}return _0x4c1855({'erlangCalls':_0x351a52,'erlangCallToSecond':_0x395c62/_0x351a52,'erlangAbandonmentRate':_0x524a27,'erlangBusyFactor':_0x390f2a});});};Dialer[_0x558e('0xab')][_0x558e('0x1e4')]=function(_0x1ed130,_0x22ecf5,_0x266738,_0x53480e,_0x5152f4,_0x2e9ad9){loggerPredictive[_0x558e('0x81')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x558e('0x81')]('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1ed130);loggerPredictive[_0x558e('0x81')](_0x558e('0x20f'),_0x22ecf5);loggerPredictive[_0x558e('0x81')](_0x558e('0x210'),_0x266738);loggerPredictive[_0x558e('0x81')](_0x558e('0x217'),_0x53480e);loggerPredictive[_0x558e('0x81')](_0x558e('0x218'),_0x5152f4);loggerPredictive[_0x558e('0x81')](_0x558e('0x87'));return new BPromise(function(_0x1a7d63,_0x78b802){if(_0x1ed130<=0x0||isNaN(_0x1ed130)){return _0x78b802(msgResponse(_0x558e('0x219'),'Error',_0x558e('0x212')+_0x1ed130));}if(_0x266738<=0x0||isNaN(_0x266738)){return _0x78b802(msgResponse(_0x558e('0x219'),_0x558e('0x193'),_0x558e('0x213')+_0x266738));}if(_0x53480e<=0x0||isNaN(_0x53480e)){return _0x78b802(msgResponse(_0x558e('0x219'),'Error',_0x558e('0x214')+_0x53480e));}if(_0x22ecf5<=0x0||isNaN(_0x22ecf5)){return _0x78b802(msgResponse(_0x558e('0x219'),_0x558e('0x193'),_0x558e('0x215')+_0x22ecf5));}if(_0x5152f4<=0x0||isNaN(_0x5152f4)){return _0x78b802(msgResponse('[busyFactor]','Error',_0x558e('0x21a')+_0x5152f4));}_0x2e9ad9=_0x2e9ad9||0x0;var _0x2e24b3=0x1/_0x266738;var _0x2906d1=0x0;var _0x2d1e16=0x0;var _0x3ab966=0x0;var _0xaafc5=0x0;for(var _0x5b01a6=0x0;_0xaafc5<_0x5152f4;_0x5b01a6+=0x1){_0x2d1e16=_0x5b01a6/_0x22ecf5;_0x2906d1=(_0x53480e*_0x2d1e16+_0x2e9ad9)/_0x2e24b3;_0x3ab966=erlangb(_0x2906d1,_0x1ed130);_0xaafc5=_0x2906d1/_0x1ed130*(0x1-erlangb(_0x2906d1,_0x1ed130));}return _0x1a7d63({'erlangCalls':_0x5b01a6,'erlangCallToSecond':_0x22ecf5/_0x5b01a6,'erlangAbandonmentRate':_0x3ab966,'erlangBusyFactor':_0xaafc5});});};module[_0x558e('0x21b')]=Dialer;
\ No newline at end of file
index de2fd88..ea28ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7edc=['countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x3b2934,_0x1d5121){var _0x11315f=function(_0x1d631a){while(--_0x1d631a){_0x3b2934['push'](_0x3b2934['shift']());}};_0x11315f(++_0x1d5121);}(_0x7edc,0x113));var _0xc7ed=function(_0x1cfc39,_0x1d3913){_0x1cfc39=_0x1cfc39-0x0;var _0x957a28=_0x7edc[_0x1cfc39];return _0x957a28;};'use strict';var util=require(_0xc7ed('0x0'));var _=require('lodash');var moment=require(_0xc7ed('0x1'));function getSeconds(_0x1f48b4,_0x39dab3){var _0x16df7c=moment(_0x1f48b4)[_0xc7ed('0x2')](0x0);var _0x4f15d9=moment(_0x39dab3)[_0xc7ed('0x2')](0x0);return _0x16df7c['diff'](_0x4f15d9,_0xc7ed('0x3'));}function QueueCallerAbandon(_0x5ac021,_0x174d31){this[_0xc7ed('0x4')]=_0x5ac021['scheduledat'];this['type']=_0x5ac021[_0xc7ed('0x5')];this[_0xc7ed('0x6')]=_0x5ac021['type']===_0xc7ed('0x7')?_0xc7ed('0x8'):_0x5ac021[_0xc7ed('0x5')];this['countbusyretry']=_0x5ac021[_0xc7ed('0x9')];this[_0xc7ed('0xa')]=_0x5ac021[_0xc7ed('0xa')];this[_0xc7ed('0xb')]=_0x5ac021[_0xc7ed('0xb')];this['countglobal']=_0x5ac021[_0xc7ed('0x9')]+_0x5ac021['countcongestionretry']+_0x5ac021[_0xc7ed('0xb')]+_0x5ac021['countnosuchnumberretry']+_0x5ac021['countdropretry']+_0x5ac021[_0xc7ed('0xc')]+_0x5ac021[_0xc7ed('0xd')]+_0x5ac021[_0xc7ed('0xe')];this['countnosuchnumberretry']=_0x5ac021[_0xc7ed('0xf')];this['countdropretry']=_0x5ac021[_0xc7ed('0x10')];this[_0xc7ed('0xc')]=_0x5ac021[_0xc7ed('0xc')];this[_0xc7ed('0xd')]=_0x5ac021['countmachineretry'];this[_0xc7ed('0xe')]=_0x5ac021[_0xc7ed('0xe')];this[_0xc7ed('0x11')]=_0x174d31[_0xc7ed('0x11')];this[_0xc7ed('0x12')]=_0x5ac021[_0xc7ed('0x13')];this[_0xc7ed('0x14')]=_0x5ac021[_0xc7ed('0x15')];this[_0xc7ed('0x16')]=_0x5ac021[_0xc7ed('0x16')];this[_0xc7ed('0x17')]=_0x5ac021['responsetime'];this[_0xc7ed('0x18')]=_0x5ac021[_0xc7ed('0x18')];this['endtime']=this[_0xc7ed('0x18')];this[_0xc7ed('0x19')]=getSeconds(_0x5ac021[_0xc7ed('0x17')],_0x5ac021[_0xc7ed('0x16')]);this[_0xc7ed('0x1a')]=getSeconds(this[_0xc7ed('0x18')],_0x5ac021[_0xc7ed('0x17')]);this[_0xc7ed('0x1b')]=0x0;this[_0xc7ed('0x8')]=_0x174d31[_0xc7ed('0x8')];this[_0xc7ed('0x1c')]=_0x174d31[_0xc7ed('0x1d')];this[_0xc7ed('0x1e')]=_0x174d31[_0xc7ed('0x1e')];this[_0xc7ed('0x1f')]=_0x5ac021[_0xc7ed('0x1f')];this[_0xc7ed('0x20')]=_0x5ac021['callbackuniqueid'];this[_0xc7ed('0x21')]=_0x5ac021['callbackat'];this[_0xc7ed('0x22')]=_0x5ac021[_0xc7ed('0x22')];this[_0xc7ed('0x23')]=_0x5ac021[_0xc7ed('0x23')];this[_0xc7ed('0x24')]=_0x5ac021[_0xc7ed('0x24')];this[_0xc7ed('0x25')]=_0x5ac021[_0xc7ed('0x25')];this['VoiceQueueId']=_0x5ac021['VoiceQueueId'];this[_0xc7ed('0x26')]=_0x5ac021[_0xc7ed('0x26')];this[_0xc7ed('0x27')]=_0x5ac021['originatecalleridnum']||'';this[_0xc7ed('0x28')]=_0x5ac021[_0xc7ed('0x28')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0xd527=['ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme'];(function(_0x118139,_0x7ce965){var _0x2fece9=function(_0xd145a4){while(--_0xd145a4){_0x118139['push'](_0x118139['shift']());}};_0x2fece9(++_0x7ce965);}(_0xd527,0x87));var _0x7d52=function(_0x2ed7d1,_0x363741){_0x2ed7d1=_0x2ed7d1-0x0;var _0x38ae3c=_0xd527[_0x2ed7d1];return _0x38ae3c;};'use strict';var util=require(_0x7d52('0x0'));var _=require(_0x7d52('0x1'));var moment=require(_0x7d52('0x2'));function getSeconds(_0x2c0ebb,_0x44b57e){var _0x2eb54b=moment(_0x2c0ebb)[_0x7d52('0x3')](0x0);var _0x7998ce=moment(_0x44b57e)[_0x7d52('0x3')](0x0);return _0x2eb54b[_0x7d52('0x4')](_0x7998ce,_0x7d52('0x5'));}function QueueCallerAbandon(_0x373119,_0x2a72c8){this[_0x7d52('0x6')]=_0x373119[_0x7d52('0x6')];this['type']=_0x373119['type'];this['campaigntype']=_0x373119[_0x7d52('0x7')]===_0x7d52('0x8')?'queue':_0x373119['type'];this[_0x7d52('0x9')]=_0x373119[_0x7d52('0x9')];this[_0x7d52('0xa')]=_0x373119['countcongestionretry'];this[_0x7d52('0xb')]=_0x373119[_0x7d52('0xb')];this[_0x7d52('0xc')]=_0x373119[_0x7d52('0x9')]+_0x373119[_0x7d52('0xa')]+_0x373119[_0x7d52('0xb')]+_0x373119[_0x7d52('0xd')]+_0x373119[_0x7d52('0xe')]+_0x373119[_0x7d52('0xf')]+_0x373119[_0x7d52('0x10')]+_0x373119[_0x7d52('0x11')];this[_0x7d52('0xd')]=_0x373119[_0x7d52('0xd')];this['countdropretry']=_0x373119[_0x7d52('0xe')];this[_0x7d52('0xf')]=_0x373119[_0x7d52('0xf')];this[_0x7d52('0x10')]=_0x373119[_0x7d52('0x10')];this[_0x7d52('0x11')]=_0x373119[_0x7d52('0x11')];this['uniqueid']=_0x2a72c8[_0x7d52('0x12')];this[_0x7d52('0x13')]=_0x373119[_0x7d52('0x14')];this[_0x7d52('0x15')]=_0x373119['number'];this[_0x7d52('0x16')]=_0x373119[_0x7d52('0x16')];this[_0x7d52('0x17')]=_0x373119[_0x7d52('0x17')];this[_0x7d52('0x18')]=_0x373119[_0x7d52('0x18')];this[_0x7d52('0x19')]=this[_0x7d52('0x18')];this[_0x7d52('0x1a')]=getSeconds(_0x373119[_0x7d52('0x17')],_0x373119[_0x7d52('0x16')]);this[_0x7d52('0x1b')]=getSeconds(this['droptime'],_0x373119[_0x7d52('0x17')]);this[_0x7d52('0x1c')]=0x0;this[_0x7d52('0x1d')]=_0x2a72c8['queue'];this[_0x7d52('0x1e')]=_0x2a72c8[_0x7d52('0x1f')];this[_0x7d52('0x20')]=_0x2a72c8[_0x7d52('0x20')];this[_0x7d52('0x21')]=_0x373119[_0x7d52('0x21')];this[_0x7d52('0x22')]=_0x373119[_0x7d52('0x22')];this[_0x7d52('0x23')]=_0x373119['callbackat'];this[_0x7d52('0x24')]=_0x373119['recallme'];this[_0x7d52('0x25')]=_0x373119['ContactId'];this['ListId']=_0x373119['ListId'];this[_0x7d52('0x26')]=_0x373119['UserId'];this[_0x7d52('0x27')]=_0x373119[_0x7d52('0x27')];this[_0x7d52('0x28')]=_0x373119['CampaignId'];this[_0x7d52('0x29')]=_0x373119[_0x7d52('0x29')]||'';this[_0x7d52('0x2a')]=_0x373119[_0x7d52('0x2a')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index 09a5127..8f91475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x1e59aa,_0x213073){var _0x5a2305=function(_0x1d07bc){while(--_0x1d07bc){_0x1e59aa['push'](_0x1e59aa['shift']());}};_0x5a2305(++_0x213073);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x26aa48,_0x266a46){var _0x167d9f=function(_0x180b41){while(--_0x180b41){_0x26aa48['push'](_0x26aa48['shift']());}};_0x167d9f(++_0x266a46);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index 6e38a7d..4496c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','FaxAccountId','isValid','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Empty\x20path','exports','util','lodash','bluebird','path','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','varset','bind','newstate','syncNewState','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','from-voip-provider','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','actions','prototype','syncVarSet','variable','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','pick','reason','AttachmentId','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','update','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','updateStatus','faxstatusstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7334,0x184));var _0x4733=function(_0x24e7b4,_0x2a25c6){_0x24e7b4=_0x24e7b4-0x0;var _0xddc7d2=_0x7334[_0x24e7b4];return _0xddc7d2;};'use strict';var util=require(_0x4733('0x0'));var _=require(_0x4733('0x1'));var BPromise=require(_0x4733('0x2'));var uuid=require('uuid');var moment=require('moment');var path=require(_0x4733('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var ami=require(_0x4733('0x7'));var rpcDb=require(_0x4733('0x8'));var Channel=require(_0x4733('0x9'));var ut=require(_0x4733('0xa'));var Action=require(_0x4733('0xb'));var faxAccount=require(_0x4733('0xc'));var attachment=require(_0x4733('0xd'));var faxMessage=require(_0x4733('0xe'));function Fax(_0x3562b7){this[_0x4733('0xf')]={};this[_0x4733('0x10')]=_0x3562b7[_0x4733('0x10')];this[_0x4733('0x11')]=_0x3562b7[_0x4733('0x11')];this['actions']={};ami['on'](_0x4733('0x12'),this[_0x4733('0x13')]['bind'](this));ami['on'](_0x4733('0x14'),this['syncVarSet'][_0x4733('0x15')](this));ami['on'](_0x4733('0x16'),this[_0x4733('0x17')][_0x4733('0x15')](this));ami['on'](_0x4733('0x18'),this[_0x4733('0x19')][_0x4733('0x15')](this));ami['on']('faxstatus',this[_0x4733('0x1a')]['bind'](this));ami['on'](_0x4733('0x1b'),this[_0x4733('0x1c')][_0x4733('0x15')](this));ami['on'](_0x4733('0x1d'),this[_0x4733('0x1e')][_0x4733('0x15')](this));ami['on'](_0x4733('0x1f'),this[_0x4733('0x20')][_0x4733('0x15')](this));}Fax['prototype'][_0x4733('0x13')]=function(_0x71e96c){if(_0x71e96c['context']===_0x4733('0x21')){for(var _0x1d2fb6 in this[_0x4733('0x10')]){if(this[_0x4733('0x10')]['hasOwnProperty'](_0x1d2fb6)){if(_0x71e96c['exten']===this[_0x4733('0x10')][_0x1d2fb6][_0x4733('0x22')]){this['channels'][_0x71e96c[_0x4733('0x23')]]={};this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]][_0x4733('0x24')]=_0x71e96c['channel'];this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]]['id']=this['faxAccounts'][_0x1d2fb6]['id'];this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]]['name']=this[_0x4733('0x10')][_0x1d2fb6][_0x4733('0x25')];logger[_0x4733('0x26')](_0x71e96c[_0x4733('0x23')],_0x4733('0x27'));}}}}if(this[_0x4733('0x28')][_0x71e96c[_0x4733('0x23')]]){this[_0x4733('0xf')][_0x71e96c['uniqueid']]={};this[_0x4733('0xf')][_0x71e96c[_0x4733('0x23')]][_0x4733('0x24')]=_0x71e96c[_0x4733('0x24')];logger[_0x4733('0x26')](_0x71e96c[_0x4733('0x23')],_0x4733('0x27'));}};Fax[_0x4733('0x29')][_0x4733('0x2a')]=function(_0x23fe6c){if(this['channels'][_0x23fe6c[_0x4733('0x23')]]){for(var _0x4c91bc in _0x23fe6c['variable']){if(_0x23fe6c[_0x4733('0x2b')]['hasOwnProperty'](_0x4c91bc)){this[_0x4733('0xf')][_0x23fe6c['uniqueid']][_0x4c91bc]=_0x23fe6c['value'];}}}};Fax['prototype'][_0x4733('0x17')]=function(_0x3bfe53){if(this[_0x4733('0xf')][_0x3bfe53[_0x4733('0x23')]]){this['channels'][_0x3bfe53['uniqueid']]['channelstate']=_0x3bfe53[_0x4733('0x2c')];this['channels'][_0x3bfe53['uniqueid']][_0x4733('0x2d')]=_0x3bfe53[_0x4733('0x2d')];}};Fax[_0x4733('0x29')]['syncNewExten']=function(_0x523c61){if(this[_0x4733('0xf')][_0x523c61[_0x4733('0x23')]]){for(var _0x22d38a in _0x523c61[_0x4733('0x2b')]){if(_0x523c61[_0x4733('0x2b')]['hasOwnProperty'](_0x22d38a)){this[_0x4733('0xf')][_0x523c61[_0x4733('0x23')]][_0x22d38a]=_0x523c61[_0x4733('0x2e')];}}}};Fax[_0x4733('0x29')][_0x4733('0x1a')]=function(_0x4b133f){if(this['channels'][_0x4b133f[_0x4733('0x23')]]){this[_0x4733('0xf')][_0x4b133f[_0x4733('0x23')]][_0x4733('0x2f')]=_0x4b133f[_0x4733('0x2f')];this['channels'][_0x4b133f[_0x4733('0x23')]][_0x4733('0x30')]=_0x4b133f[_0x4733('0x30')];this['channels'][_0x4b133f[_0x4733('0x23')]][_0x4733('0x22')]=_0x4b133f[_0x4733('0x22')];this[_0x4733('0xf')][_0x4b133f[_0x4733('0x23')]][_0x4733('0x31')]=_0x4b133f[_0x4733('0x31')];logger[_0x4733('0x26')](_0x4b133f['uniqueid'],_0x4733('0x32'));}};Fax['prototype'][_0x4733('0x1c')]=function(_0x29db03){var _0x381fa8=this;if(this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]){var _0x1a8b50=this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]['id'];this['channels'][_0x29db03[_0x4733('0x23')]][_0x4733('0x33')]=_0x29db03['remotestationid'];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]]['pagestransferred']=_0x29db03[_0x4733('0x34')];this['channels'][_0x29db03[_0x4733('0x23')]]['localstationid']=_0x29db03[_0x4733('0x22')];this[_0x4733('0xf')][_0x29db03['uniqueid']]['resolution']=_0x29db03[_0x4733('0x35')];this[_0x4733('0xf')][_0x29db03['uniqueid']][_0x4733('0x36')]=_0x29db03[_0x4733('0x36')];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x31')]=_0x29db03[_0x4733('0x31')];this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x37')]=_0x29db03[_0x4733('0x37')];if(this[_0x4733('0xf')][_0x29db03[_0x4733('0x23')]][_0x4733('0x34')]>0x0){tiff2pdf(_0x29db03[_0x4733('0x31')],_0x4733('0x38'),function(_0x540cb8){logger[_0x4733('0x26')](_0x29db03[_0x4733('0x23')],'\x20result\x20conversion\x20file\x20',_0x540cb8[_0x4733('0x39')]);attachment[_0x4733('0x3a')]({'name':path[_0x4733('0x3b')](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')],'basename':path[_0x4733('0x3b')](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')]+_0x4733('0x3c'),'type':_0x4733('0x3d')})[_0x4733('0x3e')](function(_0x1a50f5){faxAccount[_0x4733('0x3f')](_0x1a8b50,{'from':_0x29db03[_0x4733('0x37')],'mapKey':'fax','body':path['parse'](_0x29db03[_0x4733('0x31')])[_0x4733('0x25')]+_0x4733('0x3c'),'AttachmentId':_0x1a50f5['id']})[_0x4733('0x40')](function(_0x81a314){logger[_0x4733('0x41')](_0x29db03[_0x4733('0x23')],_0x4733('0x42'),JSON[_0x4733('0x43')](_0x81a314));});})[_0x4733('0x40')](function(_0x4d8301){logger['error'](_0x29db03['uniqueid'],'\x20receiveFax\x20',JSON[_0x4733('0x43')](_0x4d8301));});});}logger[_0x4733('0x26')](_0x29db03[_0x4733('0x23')],_0x4733('0x44'));}};Fax[_0x4733('0x29')][_0x4733('0x20')]=function(_0x1c6abf){if(this[_0x4733('0x28')][_0x1c6abf[_0x4733('0x23')]]){_[_0x4733('0x45')](this['channels'][_0x1c6abf['uniqueid']],_[_0x4733('0x46')](_0x1c6abf,['response',_0x4733('0x47')]));}};function updateStatus(_0x17e686){if(_0x17e686[_0x4733('0x48')]){faxMessage['update'](_0x17e686[_0x4733('0x48')],{'failMessage':_0x4733('0x49')})[_0x4733('0x3e')](function(_0x114464){ut[_0x4733('0x4a')](_0x4733('0x4b'),_0x114464);})[_0x4733('0x40')](function(_0x2da475){ut[_0x4733('0x4a')]('[Fax][Message][Error][NoUpdate1]',_0x2da475);});}else{ut[_0x4733('0x4a')](_0x4733('0x4c'));}}Fax[_0x4733('0x29')]['updateStatus']=function(_0x2effd2,_0x130aee,_0xafb3f8){var _0x4a7fa=this;var _0x59344b={};if(_0x130aee){_0x59344b={'read':_0x130aee};}else{_0x59344b={'failMessage':_0xafb3f8};}if(this[_0x4733('0x28')][_0x2effd2]['AttachmentId']){faxMessage[_0x4733('0x4d')](this[_0x4733('0x28')][_0x2effd2][_0x4733('0x48')],_0x59344b)[_0x4733('0x3e')](function(_0x53321d){ut['logger'](_0x4733('0x4e'),_0x53321d);})[_0x4733('0x40')](function(_0x5e4668){ut['logger'](_0x4733('0x4f'),_0x5e4668);})[_0x4733('0x50')](function(){delete _0x4a7fa[_0x4733('0xf')][_0x2effd2];delete _0x4a7fa[_0x4733('0x28')][_0x2effd2];});}else{ut[_0x4733('0x4a')](_0x4733('0x51'));delete this[_0x4733('0xf')][_0x2effd2];delete this[_0x4733('0x28')][_0x2effd2];}};Fax['prototype']['syncHangup']=function(_0x3b7f06){var _0x5d45c5=this;if(this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]]){if(this[_0x4733('0x28')][_0x3b7f06['uniqueid']]){this['channels'][_0x3b7f06['uniqueid']]['id']=this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]]['id'];this[_0x4733('0xf')][_0x3b7f06['uniqueid']][_0x4733('0x25')]=this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x25')];}logger[_0x4733('0x26')](_0x3b7f06[_0x4733('0x23')],this[_0x4733('0x28')][_0x3b7f06['uniqueid']]?_0x4733('0x52'):_0x4733('0x53'),JSON['stringify'](this['channels'][_0x3b7f06[_0x4733('0x23')]]));if(this[_0x4733('0x28')][_0x3b7f06[_0x4733('0x23')]]){if(this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x54')]>0x0&&this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x55')]==='SUCCESS'){this[_0x4733('0x56')](_0x3b7f06[_0x4733('0x23')],!![]);}else{this[_0x4733('0x56')](_0x3b7f06['uniqueid'],![],this[_0x4733('0xf')][_0x3b7f06['uniqueid']][_0x4733('0x57')]?_0x4733('0x58')+this[_0x4733('0xf')][_0x3b7f06[_0x4733('0x23')]][_0x4733('0x57')]:_0x4733('0x59'));}}}};Fax['prototype'][_0x4733('0x5a')]=function(_0x574787){var _0x15552d=this;return new BPromise(function(_0x12997e,_0x54326d){_0x15552d[_0x4733('0x5b')](_0x574787,_0x15552d['faxAccounts'][_0x574787['FaxAccountId']])[_0x4733('0x3e')](function(_0x28a04f){ut[_0x4733('0x4a')](_0x4733('0x5c'),_0x28a04f);_0x12997e(ut[_0x4733('0x39')](_0x4733('0x5d')));})[_0x4733('0x40')](function(_0x181b34){ut[_0x4733('0x4a')]('[Fax][execOriginate][failure]',_0x181b34);updateStatus(_0x574787);_0x54326d(ut['message']('Fax\x20failed'));});});};Fax[_0x4733('0x29')][_0x4733('0x5e')]=function(_0x24f51d){var _0xa087d9=this;return new BPromise(function(_0x520936,_0x2c224d){var _0x1a743e=_0xa087d9[_0x4733('0x5f')](_0xa087d9['faxAccounts'][_0x24f51d[_0x4733('0x60')]]['Trunk'],_0x24f51d);if(_0x1a743e[_0x4733('0x61')]){_0x520936(ut['message']('Trunk\x20Reachable'));}else{_0x2c224d(ut[_0x4733('0x39')](_0x1a743e['message']));}});};function originate(_0x20f867,_0x523498,_0x4e835b){return new BPromise(function(_0x1a7baf,_0x5c6083){if(_0x4e835b){var _0x54bf73=util[_0x4733('0x62')](_0x4733('0x63'),path[_0x4733('0x3b')](_0x20f867['path'])[_0x4733('0x25')],_0x20f867[_0x4733('0x3')]);gs[_0x4733('0x64')](_0x54bf73)[_0x4733('0x3e')](function(){_0x20f867[_0x4733('0x3')]=util[_0x4733('0x62')]('%s/%s.tif',path[_0x4733('0x3b')](_0x20f867[_0x4733('0x3')])[_0x4733('0x65')],path['parse'](_0x20f867[_0x4733('0x3')])[_0x4733('0x25')]);_0x523498[_0x4733('0x66')]=_0x20f867[_0x4733('0x3')];ut[_0x4733('0x4a')](_0x4733('0x67'),'');ami[_0x4733('0x68')](ut[_0x4733('0x69')](_0x20f867,_0x523498))['then'](function(_0x583e6d){_0x1a7baf(_0x583e6d);})[_0x4733('0x40')](function(_0x4fac10){_0x5c6083(_0x4fac10);});})['catch'](function(_0x1f52ff){_0x5c6083(_0x1f52ff);});}else{ami[_0x4733('0x68')](ut[_0x4733('0x69')](_0x20f867,_0x523498))[_0x4733('0x3e')](function(_0x4830b4){_0x1a7baf(_0x4830b4);})[_0x4733('0x40')](function(_0x55450a){_0x5c6083(_0x55450a);});}});}Fax[_0x4733('0x29')]['execOriginate']=function(_0x542397,_0x129cc2){var _0x567faa=this;return new BPromise(function(_0x487408,_0x58d5ba){var _0x416e3f=uuid['v4']();var _0x4b172b=ut[_0x4733('0x6a')](_0x542397,_0x129cc2);_0x567faa[_0x4733('0x28')][_0x416e3f]=new Action(_0x416e3f,_0x129cc2,_0x542397);var _0x59cc5b=_0x567faa[_0x4733('0x28')][_0x416e3f];if(path['parse'](_0x542397['path'])[_0x4733('0x6b')]===_0x4733('0x3c')){originate(_0x59cc5b,_0x4b172b,!![])[_0x4733('0x3e')](function(_0x5a067b){_0x487408(_0x5a067b);})['catch'](function(_0x6179db){_0x58d5ba(_0x6179db);});}else{originate(_0x59cc5b,_0x4b172b,![])['then'](function(_0x3fd347){_0x487408(_0x3fd347);})[_0x4733('0x40')](function(_0x1e9f9a){_0x58d5ba(_0x1e9f9a);});}});};Fax[_0x4733('0x29')][_0x4733('0x6c')]=function(_0x27494c){return!_['isNil'](_0x27494c)&&!_[_0x4733('0x6d')](_0x27494c[_0x4733('0x25')])&&!_[_0x4733('0x6d')](_0x27494c[_0x4733('0x6e')])&&_0x27494c['active']&&!_['isNil'](this[_0x4733('0x11')][util['format'](_0x4733('0x6f'),_0x27494c[_0x4733('0x25')])])&&!_[_0x4733('0x6d')](this[_0x4733('0x11')][util[_0x4733('0x62')](_0x4733('0x6f'),_0x27494c[_0x4733('0x25')])]['status'])&&(this[_0x4733('0x11')][util[_0x4733('0x62')]('SIP/%s',_0x27494c['name'])][_0x4733('0x30')]==='reachable'||this[_0x4733('0x11')][util['format']('SIP/%s',_0x27494c[_0x4733('0x25')])][_0x4733('0x30')]===_0x4733('0x70'));};Fax[_0x4733('0x29')][_0x4733('0x5f')]=function(_0x56729d,_0x3a68d7){if(!this[_0x4733('0x6c')](_0x56729d)){ut[_0x4733('0x4a')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_['isNil'](_0x56729d)?'':_0x56729d['name']+_0x4733('0x71'));return{'isValid':![],'message':_0x4733('0x72')};}if(_[_0x4733('0x6d')](_0x3a68d7[_0x4733('0x6')])){ut[_0x4733('0x4a')](_0x4733('0x73'),JSON['stringify'](_0x3a68d7));return{'isValid':![],'message':_0x4733('0x74')};}if(_[_0x4733('0x6d')](_0x3a68d7[_0x4733('0x3')])){ut['logger']('[Fax][checkTrunk][Empty\x20path]',JSON['stringify'](_0x3a68d7));return{'isValid':![],'message':_0x4733('0x75')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x4733('0x76')]=Fax;
\ No newline at end of file
+var _0x282b=['[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','./util/gs','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxMessage','faxAccounts','trunks','syncNewchannel','bind','varset','syncVarSet','newexten','syncNewExten','faxstatus','syncReceiveFax','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','localstationid','uniqueid','channels','channel','name','info','\x20syncNewchannel\x20','variable','value','syncNewState','channelstate','channelstatedesc','hasOwnProperty','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','parse','.pdf','application/pdf','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','pick','response','AttachmentId','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','actions','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','stringify','faxstatusstring','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','dir','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x282b,0xec));var _0xb282=function(_0x531baf,_0x5a85b9){_0x531baf=_0x531baf-0x0;var _0x220e36=_0x282b[_0x531baf];return _0x220e36;};'use strict';var util=require(_0xb282('0x0'));var _=require(_0xb282('0x1'));var BPromise=require(_0xb282('0x2'));var uuid=require(_0xb282('0x3'));var moment=require(_0xb282('0x4'));var path=require('path');var tiff2pdf=require('tiff2pdf');var gs=require(_0xb282('0x5'));var logger=require('../../../config/logger')(_0xb282('0x6'));var ami=require(_0xb282('0x7'));var rpcDb=require(_0xb282('0x8'));var Channel=require(_0xb282('0x9'));var ut=require(_0xb282('0xa'));var Action=require(_0xb282('0xb'));var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require(_0xb282('0xc'));function Fax(_0x436eaa){this['channels']={};this[_0xb282('0xd')]=_0x436eaa[_0xb282('0xd')];this[_0xb282('0xe')]=_0x436eaa[_0xb282('0xe')];this['actions']={};ami['on']('newchannel',this[_0xb282('0xf')][_0xb282('0x10')](this));ami['on'](_0xb282('0x11'),this[_0xb282('0x12')][_0xb282('0x10')](this));ami['on']('newstate',this['syncNewState'][_0xb282('0x10')](this));ami['on'](_0xb282('0x13'),this[_0xb282('0x14')][_0xb282('0x10')](this));ami['on'](_0xb282('0x15'),this['syncFaxStatus'][_0xb282('0x10')](this));ami['on']('receivefax',this[_0xb282('0x16')][_0xb282('0x10')](this));ami['on']('hangup',this['syncHangup']['bind'](this));ami['on'](_0xb282('0x17'),this[_0xb282('0x18')][_0xb282('0x10')](this));}Fax[_0xb282('0x19')][_0xb282('0xf')]=function(_0x5307ed){if(_0x5307ed[_0xb282('0x1a')]===_0xb282('0x1b')){for(var _0xca5f12 in this[_0xb282('0xd')]){if(this[_0xb282('0xd')]['hasOwnProperty'](_0xca5f12)){if(_0x5307ed['exten']===this[_0xb282('0xd')][_0xca5f12][_0xb282('0x1c')]){this['channels'][_0x5307ed[_0xb282('0x1d')]]={};this[_0xb282('0x1e')][_0x5307ed[_0xb282('0x1d')]][_0xb282('0x1f')]=_0x5307ed[_0xb282('0x1f')];this['channels'][_0x5307ed[_0xb282('0x1d')]]['id']=this[_0xb282('0xd')][_0xca5f12]['id'];this[_0xb282('0x1e')][_0x5307ed['uniqueid']][_0xb282('0x20')]=this[_0xb282('0xd')][_0xca5f12][_0xb282('0x20')];logger[_0xb282('0x21')](_0x5307ed[_0xb282('0x1d')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x5307ed[_0xb282('0x1d')]]){this[_0xb282('0x1e')][_0x5307ed['uniqueid']]={};this['channels'][_0x5307ed[_0xb282('0x1d')]][_0xb282('0x1f')]=_0x5307ed[_0xb282('0x1f')];logger[_0xb282('0x21')](_0x5307ed[_0xb282('0x1d')],_0xb282('0x22'));}};Fax['prototype'][_0xb282('0x12')]=function(_0x42015c){if(this['channels'][_0x42015c[_0xb282('0x1d')]]){for(var _0x38a1f8 in _0x42015c[_0xb282('0x23')]){if(_0x42015c[_0xb282('0x23')]['hasOwnProperty'](_0x38a1f8)){this[_0xb282('0x1e')][_0x42015c[_0xb282('0x1d')]][_0x38a1f8]=_0x42015c[_0xb282('0x24')];}}}};Fax[_0xb282('0x19')][_0xb282('0x25')]=function(_0xfddd2e){if(this[_0xb282('0x1e')][_0xfddd2e['uniqueid']]){this[_0xb282('0x1e')][_0xfddd2e[_0xb282('0x1d')]][_0xb282('0x26')]=_0xfddd2e[_0xb282('0x26')];this[_0xb282('0x1e')][_0xfddd2e['uniqueid']][_0xb282('0x27')]=_0xfddd2e['channelstatedesc'];}};Fax[_0xb282('0x19')][_0xb282('0x14')]=function(_0x687829){if(this['channels'][_0x687829[_0xb282('0x1d')]]){for(var _0x548bca in _0x687829[_0xb282('0x23')]){if(_0x687829[_0xb282('0x23')][_0xb282('0x28')](_0x548bca)){this[_0xb282('0x1e')][_0x687829[_0xb282('0x1d')]][_0x548bca]=_0x687829[_0xb282('0x24')];}}}};Fax['prototype'][_0xb282('0x29')]=function(_0xd86001){if(this['channels'][_0xd86001['uniqueid']]){this[_0xb282('0x1e')][_0xd86001[_0xb282('0x1d')]][_0xb282('0x2a')]=_0xd86001['operation'];this['channels'][_0xd86001['uniqueid']][_0xb282('0x2b')]=_0xd86001[_0xb282('0x2b')];this[_0xb282('0x1e')][_0xd86001[_0xb282('0x1d')]][_0xb282('0x1c')]=_0xd86001[_0xb282('0x1c')];this[_0xb282('0x1e')][_0xd86001['uniqueid']][_0xb282('0x2c')]=_0xd86001['filename'];logger[_0xb282('0x21')](_0xd86001[_0xb282('0x1d')],_0xb282('0x2d'));}};Fax['prototype'][_0xb282('0x16')]=function(_0x4beef2){var _0x3bd325=this;if(this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]]){var _0x246c85=this['channels'][_0x4beef2['uniqueid']]['id'];this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]][_0xb282('0x2e')]=_0x4beef2[_0xb282('0x2e')];this['channels'][_0x4beef2[_0xb282('0x1d')]]['pagestransferred']=_0x4beef2[_0xb282('0x2f')];this[_0xb282('0x1e')][_0x4beef2['uniqueid']][_0xb282('0x1c')]=_0x4beef2[_0xb282('0x1c')];this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]][_0xb282('0x30')]=_0x4beef2[_0xb282('0x30')];this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]][_0xb282('0x31')]=_0x4beef2[_0xb282('0x31')];this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]][_0xb282('0x2c')]=_0x4beef2[_0xb282('0x2c')];this[_0xb282('0x1e')][_0x4beef2[_0xb282('0x1d')]][_0xb282('0x32')]=_0x4beef2[_0xb282('0x32')];if(this['channels'][_0x4beef2[_0xb282('0x1d')]]['pagestransferred']>0x0){tiff2pdf(_0x4beef2[_0xb282('0x2c')],_0xb282('0x33'),function(_0x1659dc){logger[_0xb282('0x21')](_0x4beef2[_0xb282('0x1d')],_0xb282('0x34'),_0x1659dc['message']);attachment['create']({'name':path[_0xb282('0x35')](_0x4beef2['filename'])[_0xb282('0x20')],'basename':path[_0xb282('0x35')](_0x4beef2['filename'])[_0xb282('0x20')]+_0xb282('0x36'),'type':_0xb282('0x37')})['then'](function(_0x59d79b){faxAccount[_0xb282('0x38')](_0x246c85,{'from':_0x4beef2['calleridnum'],'mapKey':_0xb282('0x6'),'body':path[_0xb282('0x35')](_0x4beef2[_0xb282('0x2c')])[_0xb282('0x20')]+_0xb282('0x36'),'AttachmentId':_0x59d79b['id']})[_0xb282('0x39')](function(_0x4f7ea5){logger[_0xb282('0x3a')](_0x4beef2[_0xb282('0x1d')],_0xb282('0x3b'),JSON['stringify'](_0x4f7ea5));});})[_0xb282('0x39')](function(_0x48e5e2){logger[_0xb282('0x3a')](_0x4beef2['uniqueid'],_0xb282('0x3c'),JSON['stringify'](_0x48e5e2));});});}logger['info'](_0x4beef2['uniqueid'],_0xb282('0x3c'));}};Fax[_0xb282('0x19')][_0xb282('0x18')]=function(_0x7a5aa4){if(this['actions'][_0x7a5aa4['uniqueid']]){_['merge'](this[_0xb282('0x1e')][_0x7a5aa4[_0xb282('0x1d')]],_[_0xb282('0x3d')](_0x7a5aa4,[_0xb282('0x3e'),'reason']));}};function updateStatus(_0x676f25){if(_0x676f25[_0xb282('0x3f')]){faxMessage['update'](_0x676f25[_0xb282('0x3f')],{'failMessage':_0xb282('0x40')})[_0xb282('0x41')](function(_0x770c9e){ut[_0xb282('0x42')]('[Fax][Message][Error][Updated]',_0x770c9e);})[_0xb282('0x39')](function(_0x3d4182){ut[_0xb282('0x42')](_0xb282('0x43'),_0x3d4182);});}else{ut[_0xb282('0x42')](_0xb282('0x44'));}}Fax['prototype'][_0xb282('0x45')]=function(_0x574653,_0x4554f1,_0x1e6ade){var _0x5ca27b=this;var _0x33b658={};if(_0x4554f1){_0x33b658={'read':_0x4554f1};}else{_0x33b658={'failMessage':_0x1e6ade};}if(this[_0xb282('0x46')][_0x574653][_0xb282('0x3f')]){faxMessage['update'](this['actions'][_0x574653][_0xb282('0x3f')],_0x33b658)[_0xb282('0x41')](function(_0x7e1525){ut['logger'](_0xb282('0x47'),_0x7e1525);})['catch'](function(_0x46db52){ut[_0xb282('0x42')]('[Fax][Message][NoUpdate1]',_0x46db52);})[_0xb282('0x48')](function(){delete _0x5ca27b['channels'][_0x574653];delete _0x5ca27b[_0xb282('0x46')][_0x574653];});}else{ut[_0xb282('0x42')](_0xb282('0x49'));delete this[_0xb282('0x1e')][_0x574653];delete this[_0xb282('0x46')][_0x574653];}};Fax[_0xb282('0x19')]['syncHangup']=function(_0x46cef8){var _0x595387=this;if(this[_0xb282('0x1e')][_0x46cef8[_0xb282('0x1d')]]){if(this['actions'][_0x46cef8['uniqueid']]){this[_0xb282('0x1e')][_0x46cef8[_0xb282('0x1d')]]['id']=this[_0xb282('0x46')][_0x46cef8['uniqueid']]['id'];this['channels'][_0x46cef8[_0xb282('0x1d')]][_0xb282('0x20')]=this[_0xb282('0x46')][_0x46cef8['uniqueid']][_0xb282('0x20')];}logger['info'](_0x46cef8[_0xb282('0x1d')],this[_0xb282('0x46')][_0x46cef8[_0xb282('0x1d')]]?_0xb282('0x4a'):_0xb282('0x4b'),JSON[_0xb282('0x4c')](this[_0xb282('0x1e')][_0x46cef8['uniqueid']]));if(this[_0xb282('0x46')][_0x46cef8[_0xb282('0x1d')]]){if(this[_0xb282('0x1e')][_0x46cef8['uniqueid']]['faxpages']>0x0&&this[_0xb282('0x1e')][_0x46cef8[_0xb282('0x1d')]][_0xb282('0x15')]==='SUCCESS'){this['updateStatus'](_0x46cef8[_0xb282('0x1d')],!![]);}else{this[_0xb282('0x45')](_0x46cef8['uniqueid'],![],this[_0xb282('0x1e')][_0x46cef8[_0xb282('0x1d')]][_0xb282('0x4d')]?'SENDING\x20FAILED:\x20'+this[_0xb282('0x1e')][_0x46cef8[_0xb282('0x1d')]]['faxstatusstring']:_0xb282('0x4e'));}}}};Fax[_0xb282('0x19')][_0xb282('0x4f')]=function(_0x26c9a6){var _0x4ea7a6=this;return new BPromise(function(_0x4a129d,_0xfdf710){_0x4ea7a6[_0xb282('0x50')](_0x26c9a6,_0x4ea7a6['faxAccounts'][_0x26c9a6[_0xb282('0x51')]])[_0xb282('0x41')](function(_0x10b6c4){ut[_0xb282('0x42')](_0xb282('0x52'),_0x10b6c4);_0x4a129d(ut[_0xb282('0x53')](_0xb282('0x54')));})[_0xb282('0x39')](function(_0x4ef228){ut[_0xb282('0x42')](_0xb282('0x55'),_0x4ef228);updateStatus(_0x26c9a6);_0xfdf710(ut[_0xb282('0x53')]('Fax\x20failed'));});});};Fax[_0xb282('0x19')][_0xb282('0x56')]=function(_0x599757){var _0x5d8532=this;return new BPromise(function(_0x1bb9b3,_0x1ef276){var _0x2210c7=_0x5d8532[_0xb282('0x57')](_0x5d8532[_0xb282('0xd')][_0x599757[_0xb282('0x51')]][_0xb282('0x58')],_0x599757);if(_0x2210c7[_0xb282('0x59')]){_0x1bb9b3(ut[_0xb282('0x53')](_0xb282('0x5a')));}else{_0x1ef276(ut[_0xb282('0x53')](_0x2210c7[_0xb282('0x53')]));}});};function originate(_0x88dfa6,_0x2eae62,_0x3c1579){return new BPromise(function(_0x3a87ce,_0x4ccef5){if(_0x3c1579){var _0x2cffa2=util[_0xb282('0x5b')](_0xb282('0x5c'),path[_0xb282('0x35')](_0x88dfa6[_0xb282('0x5d')])[_0xb282('0x20')],_0x88dfa6[_0xb282('0x5d')]);gs[_0xb282('0x5e')](_0x2cffa2)[_0xb282('0x41')](function(){_0x88dfa6[_0xb282('0x5d')]=util[_0xb282('0x5b')]('%s/%s.tif',path[_0xb282('0x35')](_0x88dfa6[_0xb282('0x5d')])[_0xb282('0x5f')],path[_0xb282('0x35')](_0x88dfa6[_0xb282('0x5d')])['name']);_0x2eae62['XMF-PATH']=_0x88dfa6[_0xb282('0x5d')];ut[_0xb282('0x42')](_0xb282('0x60'),'');ami[_0xb282('0x61')](ut[_0xb282('0x62')](_0x88dfa6,_0x2eae62))[_0xb282('0x41')](function(_0x308050){_0x3a87ce(_0x308050);})['catch'](function(_0x4feef4){_0x4ccef5(_0x4feef4);});})[_0xb282('0x39')](function(_0x5e8cfe){_0x4ccef5(_0x5e8cfe);});}else{ami['Action'](ut['variablesAction'](_0x88dfa6,_0x2eae62))[_0xb282('0x41')](function(_0x42e5fe){_0x3a87ce(_0x42e5fe);})[_0xb282('0x39')](function(_0xad8c7d){_0x4ccef5(_0xad8c7d);});}});}Fax[_0xb282('0x19')][_0xb282('0x50')]=function(_0x70b11e,_0x502447){var _0x17246d=this;return new BPromise(function(_0x41c558,_0x2d7518){var _0xc9f89a=uuid['v4']();var _0x257535=ut[_0xb282('0x63')](_0x70b11e,_0x502447);_0x17246d[_0xb282('0x46')][_0xc9f89a]=new Action(_0xc9f89a,_0x502447,_0x70b11e);var _0x3c37e0=_0x17246d[_0xb282('0x46')][_0xc9f89a];if(path[_0xb282('0x35')](_0x70b11e['path'])[_0xb282('0x64')]===_0xb282('0x36')){originate(_0x3c37e0,_0x257535,!![])[_0xb282('0x41')](function(_0x227e66){_0x41c558(_0x227e66);})[_0xb282('0x39')](function(_0xb1394f){_0x2d7518(_0xb1394f);});}else{originate(_0x3c37e0,_0x257535,![])[_0xb282('0x41')](function(_0x36bea3){_0x41c558(_0x36bea3);})['catch'](function(_0x199c02){_0x2d7518(_0x199c02);});}});};Fax[_0xb282('0x19')][_0xb282('0x65')]=function(_0x313018){return!_[_0xb282('0x66')](_0x313018)&&!_[_0xb282('0x66')](_0x313018['name'])&&!_[_0xb282('0x66')](_0x313018[_0xb282('0x67')])&&_0x313018[_0xb282('0x67')]&&!_['isNil'](this[_0xb282('0xe')][util[_0xb282('0x5b')]('SIP/%s',_0x313018[_0xb282('0x20')])])&&!_[_0xb282('0x66')](this[_0xb282('0xe')][util[_0xb282('0x5b')](_0xb282('0x68'),_0x313018[_0xb282('0x20')])][_0xb282('0x2b')])&&(this['trunks'][util['format'](_0xb282('0x68'),_0x313018['name'])][_0xb282('0x2b')]===_0xb282('0x69')||this[_0xb282('0xe')][util[_0xb282('0x5b')](_0xb282('0x68'),_0x313018['name'])][_0xb282('0x2b')]===_0xb282('0x6a'));};Fax[_0xb282('0x19')]['checkTrunk']=function(_0x363f4a,_0x3e13e1){if(!this[_0xb282('0x65')](_0x363f4a)){ut[_0xb282('0x42')](_0xb282('0x6b'),_[_0xb282('0x66')](_0x363f4a)?'':_0x363f4a['name']+_0xb282('0x6c'));return{'isValid':![],'message':_0xb282('0x6d')};}if(_[_0xb282('0x66')](_0x3e13e1[_0xb282('0x6')])){ut['logger'](_0xb282('0x6e'),JSON[_0xb282('0x4c')](_0x3e13e1));return{'isValid':![],'message':_0xb282('0x6f')};}if(_[_0xb282('0x66')](_0x3e13e1[_0xb282('0x5d')])){ut[_0xb282('0x42')](_0xb282('0x70'),JSON[_0xb282('0x4c')](_0x3e13e1));return{'isValid':![],'message':_0xb282('0x71')};}return{'isValid':!![],'message':_0xb282('0x72')};};module[_0xb282('0x73')]=Fax;
\ No newline at end of file
index afd2edf..08df70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4cb=['[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','notify','resolve','catch'];(function(_0x182d72,_0x584f35){var _0x519085=function(_0x11ee6f){while(--_0x11ee6f){_0x182d72['push'](_0x182d72['shift']());}};_0x519085(++_0x584f35);}(_0xc4cb,0x65));var _0xbc4c=function(_0xb0f253,_0x476cc1){_0xb0f253=_0xb0f253-0x0;var _0x25dbbe=_0xc4cb[_0xb0f253];return _0x25dbbe;};'use strict';var util=require(_0xbc4c('0x0'));var BPromise=require(_0xbc4c('0x1'));var logger=require(_0xbc4c('0x2'))(_0xbc4c('0x3'));var _=require(_0xbc4c('0x4'));var faxAccount=require(_0xbc4c('0x5'));function loggerCatch(_0x4a8b0a){return function(_0x16feca){logger['error'](_0x4a8b0a,util['inspect'](_0x16feca,{'showHidden':![],'depth':null}));};}exports[_0xbc4c('0x6')]=function(_0x5f4aee,_0x25ce96){return BPromise[_0xbc4c('0x7')]()['then'](faxAccount[_0xbc4c('0x6')](_0x5f4aee,_0x25ce96))[_0xbc4c('0x8')](loggerCatch(_0xbc4c('0x9')));};
\ No newline at end of file
+var _0xf543=['util','bluebird','../../../config/logger','lodash','../rpc/faxAccount','error','inspect','resolve','then','notify','[Notify]\x20'];(function(_0x3910d3,_0x3b1258){var _0x47081e=function(_0x4fb117){while(--_0x4fb117){_0x3910d3['push'](_0x3910d3['shift']());}};_0x47081e(++_0x3b1258);}(_0xf543,0x8f));var _0x3f54=function(_0x4b6953,_0x36a731){_0x4b6953=_0x4b6953-0x0;var _0x45c7bc=_0xf543[_0x4b6953];return _0x45c7bc;};'use strict';var util=require(_0x3f54('0x0'));var BPromise=require(_0x3f54('0x1'));var logger=require(_0x3f54('0x2'))('preview');var _=require(_0x3f54('0x3'));var faxAccount=require(_0x3f54('0x4'));function loggerCatch(_0x5d9444){return function(_0x16d043){logger[_0x3f54('0x5')](_0x5d9444,util[_0x3f54('0x6')](_0x16d043,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x361942,_0x4c46a4){return BPromise[_0x3f54('0x7')]()[_0x3f54('0x8')](faxAccount[_0x3f54('0x9')](_0x361942,_0x4c46a4))['catch'](loggerCatch(_0x3f54('0xa')));};
\ No newline at end of file
index bcfe7b1..ea07c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x470e=['bluebird','child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x470e,0x13e));var _0xe470=function(_0x310ee0,_0x1c5d46){_0x310ee0=_0x310ee0-0x0;var _0x2aae43=_0x470e[_0x310ee0];return _0x2aae43;};'use strict';var util=require('util');var logger=require(_0xe470('0x0'))(_0xe470('0x1'));var BPromise=require(_0xe470('0x2'));var exec=require(_0xe470('0x3'))[_0xe470('0x4')];exports[_0xe470('0x5')]=function(_0x1b57c5){return new BPromise(function(_0x6a8121,_0x40f4fb){exec(_0x1b57c5,function(_0x427927,_0x543da8,_0x1d5a0b){logger[_0xe470('0x6')](_0xe470('0x7'),_0x543da8);if(_0x427927){logger[_0xe470('0x6')](_0xe470('0x7'),_0xe470('0x8'),util[_0xe470('0x9')](_0x427927,{'showHidden':![],'depth':null}),_0x543da8,_0x1d5a0b);_0x40f4fb(_0x427927);}_0x6a8121(_0x543da8);});});};
\ No newline at end of file
+var _0xad65=['execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird','exec'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xad65,0x113));var _0x5ad6=function(_0xb8daea,_0x3a1c35){_0xb8daea=_0xb8daea-0x0;var _0x57967b=_0xad65[_0xb8daea];return _0x57967b;};'use strict';var util=require('util');var logger=require(_0x5ad6('0x0'))(_0x5ad6('0x1'));var BPromise=require(_0x5ad6('0x2'));var exec=require('child_process')[_0x5ad6('0x3')];exports[_0x5ad6('0x4')]=function(_0x45e016){return new BPromise(function(_0x90ef29,_0x5346d6){exec(_0x45e016,function(_0x15a541,_0x28104b,_0x3df166){logger[_0x5ad6('0x5')](_0x5ad6('0x6'),_0x28104b);if(_0x15a541){logger[_0x5ad6('0x5')](_0x5ad6('0x6'),_0x5ad6('0x7'),util[_0x5ad6('0x8')](_0x15a541,{'showHidden':![],'depth':null}),_0x28104b,_0x3df166);_0x5346d6(_0x15a541);}_0x90ef29(_0x28104b);});});};
\ No newline at end of file
index 3968b3b..a68fc24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a8=['addVariables','ecm','maxrate','format','gateway','faxdetect','localstationid','path','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','headerinfo','lodash','../../../../config/logger','message','logger','inspect'];(function(_0x169f86,_0xadf81f){var _0x30cced=function(_0x84611b){while(--_0x84611b){_0x169f86['push'](_0x169f86['shift']());}};_0x30cced(++_0xadf81f);}(_0x28a8,0x163));var _0x828a=function(_0x321c6d,_0x6e6f64){_0x321c6d=_0x321c6d-0x0;var _0x2f36da=_0x28a8[_0x321c6d];return _0x2f36da;};'use strict';var util=require('util');var _=require(_0x828a('0x0'));var moment=require('moment');var logger=require(_0x828a('0x1'))('fax');exports[_0x828a('0x2')]=function(_0x287942){return{'message':_0x287942};};exports[_0x828a('0x3')]=function(_0x30ed78,_0x36c1a5){logger['info'](_0x30ed78,util[_0x828a('0x4')](_0x36c1a5,{'showHidden':![],'depth':null}));};exports[_0x828a('0x5')]=function(_0x35d86d,_0x1088b8){var _0x5bc362={'XMF-ECM':_0x1088b8[_0x828a('0x6')],'XMF-HEADERINFO':_0x1088b8['headerinfo'],'XMF-MINRATE':_0x1088b8['minrate'],'XMF-MAXRATE':_0x1088b8[_0x828a('0x7')],'XMF-MODEM':util[_0x828a('0x8')]('\x22%s\x22',_0x1088b8['modem']),'XMF-GATEWAY':_0x1088b8[_0x828a('0x9')],'XMF-FAXDETECT':_0x1088b8[_0x828a('0xa')],'XMF-T38TIMEOUT':_0x1088b8['t38timeout'],'XMF-LOCALSTATIONID':_0x1088b8[_0x828a('0xb')],'XMF-PATH':_0x35d86d[_0x828a('0xc')]};return _0x5bc362;};exports['variablesAction']=function(_0x34322b,_0x3774f0){return{'actionid':_0x34322b[_0x828a('0xd')],'action':_0x828a('0xe'),'channel':_0x34322b[_0x828a('0xf')],'Exten':_0x828a('0x10'),'Context':_0x828a('0x11'),'Priority':'1','callerid':util[_0x828a('0x8')](_0x828a('0x12'),_0x34322b[_0x828a('0x13')]?_0x34322b[_0x828a('0x13')]:'',_0x34322b['localstationid']),'variable':_0x3774f0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x34322b[_0x828a('0xd')]};};
\ No newline at end of file
+var _0x8351=['format','modem','gateway','t38timeout','path','variablesAction','uniqueid','originate','from-sip','\x22%s\x22\x20<%s>','headerinfo','localstationid','util','moment','../../../../config/logger','fax','message','inspect','ecm','minrate'];(function(_0x3e163e,_0x189c1c){var _0x2e19a3=function(_0x19bdd7){while(--_0x19bdd7){_0x3e163e['push'](_0x3e163e['shift']());}};_0x2e19a3(++_0x189c1c);}(_0x8351,0xac));var _0x1835=function(_0xc52492,_0x3f92da){_0xc52492=_0xc52492-0x0;var _0xe49455=_0x8351[_0xc52492];return _0xe49455;};'use strict';var util=require(_0x1835('0x0'));var _=require('lodash');var moment=require(_0x1835('0x1'));var logger=require(_0x1835('0x2'))(_0x1835('0x3'));exports[_0x1835('0x4')]=function(_0x463146){return{'message':_0x463146};};exports['logger']=function(_0x6b0621,_0x2a03f6){logger['info'](_0x6b0621,util[_0x1835('0x5')](_0x2a03f6,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x3e8d4d,_0x5c89d7){var _0x3a25ad={'XMF-ECM':_0x5c89d7[_0x1835('0x6')],'XMF-HEADERINFO':_0x5c89d7['headerinfo'],'XMF-MINRATE':_0x5c89d7[_0x1835('0x7')],'XMF-MAXRATE':_0x5c89d7['maxrate'],'XMF-MODEM':util[_0x1835('0x8')]('\x22%s\x22',_0x5c89d7[_0x1835('0x9')]),'XMF-GATEWAY':_0x5c89d7[_0x1835('0xa')],'XMF-FAXDETECT':_0x5c89d7['faxdetect'],'XMF-T38TIMEOUT':_0x5c89d7[_0x1835('0xb')],'XMF-LOCALSTATIONID':_0x5c89d7['localstationid'],'XMF-PATH':_0x3e8d4d[_0x1835('0xc')]};return _0x3a25ad;};exports[_0x1835('0xd')]=function(_0x13a4fc,_0x27e1b7){return{'actionid':_0x13a4fc[_0x1835('0xe')],'action':_0x1835('0xf'),'channel':_0x13a4fc['channel'],'Exten':'xcally-motion-fax','Context':_0x1835('0x10'),'Priority':'1','callerid':util[_0x1835('0x8')](_0x1835('0x11'),_0x13a4fc[_0x1835('0x12')]?_0x13a4fc['headerinfo']:'',_0x13a4fc[_0x1835('0x13')]),'variable':_0x27e1b7,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x13a4fc[_0x1835('0xe')]};};
\ No newline at end of file
index 293b0da..e154df4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9608=['initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initFreshdeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','bluebird','util','moment','./acw','./trigger','./preview','./fax','./rpc/voiceQueue','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','../../config/logger','ami','get','hour','getAgents','initAgents','getTelephones','then','initTelephones'];(function(_0x4a1a1c,_0x5a7e8f){var _0x3c4fc7=function(_0x2e658d){while(--_0x2e658d){_0x4a1a1c['push'](_0x4a1a1c['shift']());}};_0x3c4fc7(++_0x5a7e8f);}(_0x9608,0x69));var _0x8960=function(_0x175fc6,_0x57798e){_0x175fc6=_0x175fc6-0x0;var _0x5e4f66=_0x9608[_0x175fc6];return _0x5e4f66;};'use strict';var BPromise=require(_0x8960('0x0'));var util=require(_0x8960('0x1'));var moment=require(_0x8960('0x2'));var server=require('./server');var Realtime=require('./realtime');var Report=require('./report');var Acw=require(_0x8960('0x3'));var Trigger=require(_0x8960('0x4'));var Dialer=require('./dialer');var Preview=require(_0x8960('0x5'));var Fax=require(_0x8960('0x6'));var user=require('./rpc/user');var voiceQueue=require(_0x8960('0x7'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x8960('0x8'));var trigger=require(_0x8960('0x9'));var template=require('./rpc/template');var cmHopperHistory=require(_0x8960('0xa'));var campaign=require(_0x8960('0xb'));var voiceExtension=require(_0x8960('0xc'));var faxAccount=require(_0x8960('0xd'));var zendesk=require(_0x8960('0xe'));var salesforce=require(_0x8960('0xf'));var sugarcrm=require(_0x8960('0x10'));var freshdesk=require(_0x8960('0x11'));var desk=require(_0x8960('0x12'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x8960('0x13'));var freshsales=require(_0x8960('0x14'));var servicenow=require(_0x8960('0x15'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x8960('0x16'))(_0x8960('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x8960('0x18')](_0x8960('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x8960('0x18')](_0x8960('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x8960('0x1a')]())['then'](realtime[_0x8960('0x1b')]())['then'](user[_0x8960('0x1c')]())[_0x8960('0x1d')](realtime[_0x8960('0x1e')]())[_0x8960('0x1d')](trunk['getTrunks']())['then'](realtime[_0x8960('0x1f')]())[_0x8960('0x1d')](voiceQueue[_0x8960('0x20')]())[_0x8960('0x1d')](realtime[_0x8960('0x21')]())[_0x8960('0x1d')](trigger[_0x8960('0x22')]())[_0x8960('0x1d')](realtime[_0x8960('0x23')]())[_0x8960('0x1d')](template[_0x8960('0x24')]())['then'](realtime[_0x8960('0x25')]())['then'](zendesk[_0x8960('0x26')]())['then'](realtime[_0x8960('0x27')]())[_0x8960('0x1d')](salesforce[_0x8960('0x28')]())[_0x8960('0x1d')](realtime[_0x8960('0x29')]())[_0x8960('0x1d')](sugarcrm['getSugarcrmAccounts']())[_0x8960('0x1d')](realtime['initSugarcrmAccounts']())['then'](freshdesk['getFreshdeskAccounts']())['then'](realtime[_0x8960('0x2a')]())[_0x8960('0x1d')](desk['getDeskAccounts']())[_0x8960('0x1d')](realtime['initDeskAccounts']())['then'](zoho[_0x8960('0x2b')]())[_0x8960('0x1d')](realtime[_0x8960('0x2c')]())[_0x8960('0x1d')](vtiger[_0x8960('0x2d')]())['then'](realtime[_0x8960('0x2e')]())[_0x8960('0x1d')](freshsales[_0x8960('0x2f')]())[_0x8960('0x1d')](realtime['initFreshsalesAccounts']())[_0x8960('0x1d')](servicenow['getServicenowAccounts']())['then'](realtime[_0x8960('0x30')]())['then'](dynamics365[_0x8960('0x31')]())[_0x8960('0x1d')](realtime['initDynamics365Accounts']())['then'](campaign[_0x8960('0x32')]())[_0x8960('0x1d')](realtime[_0x8960('0x33')]())[_0x8960('0x1d')](voiceExtension[_0x8960('0x34')]())['then'](realtime[_0x8960('0x35')]())[_0x8960('0x1d')](faxAccount[_0x8960('0x36')]())[_0x8960('0x1d')](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x8960('0x37')]()['then'](voiceQueueReport[_0x8960('0x38')]())[_0x8960('0x1d')](realtime[_0x8960('0x39')]())[_0x8960('0x1d')](cmHopperHistory[_0x8960('0x3a')]())[_0x8960('0x1d')](realtime[_0x8960('0x3b')]())[_0x8960('0x1d')](cmHopperHistory[_0x8960('0x3c')]())['then'](realtime[_0x8960('0x3d')]())['then'](voiceCallReport[_0x8960('0x3e')]())[_0x8960('0x1d')](realtime[_0x8960('0x3f')]())[_0x8960('0x40')](function(_0x438245){logger[_0x8960('0x41')](_0x8960('0x42'),util[_0x8960('0x43')](_0x438245,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0x8960('0x1d')](function(_0x1f6e66){return initRealtime();})[_0x8960('0x1d')](function(){return initParams();})[_0x8960('0x1d')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x8960('0x40')](function(_0x159c10){logger['error']('[index.js][main]',util['inspect'](_0x159c10,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x3ce0=['./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','getAgents','then','initAgents','initTelephones','getTrunks','initTrunks','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','error','[index.js][initParams]','inspect','sync','[index.js][main]','bluebird','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount'];(function(_0x3929bb,_0x28e2e4){var _0x164094=function(_0x325236){while(--_0x325236){_0x3929bb['push'](_0x3929bb['shift']());}};_0x164094(++_0x28e2e4);}(_0x3ce0,0x105));var _0x03ce=function(_0x53a042,_0x3918ff){_0x53a042=_0x53a042-0x0;var _0x3f0256=_0x3ce0[_0x53a042];return _0x3f0256;};'use strict';var BPromise=require(_0x03ce('0x0'));var util=require(_0x03ce('0x1'));var moment=require(_0x03ce('0x2'));var server=require(_0x03ce('0x3'));var Realtime=require(_0x03ce('0x4'));var Report=require(_0x03ce('0x5'));var Acw=require(_0x03ce('0x6'));var Trigger=require(_0x03ce('0x7'));var Dialer=require(_0x03ce('0x8'));var Preview=require('./preview');var Fax=require(_0x03ce('0x9'));var user=require(_0x03ce('0xa'));var voiceQueue=require(_0x03ce('0xb'));var voiceQueueReport=require(_0x03ce('0xc'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x03ce('0xd'));var trigger=require('./rpc/trigger');var template=require(_0x03ce('0xe'));var cmHopperHistory=require(_0x03ce('0xf'));var campaign=require(_0x03ce('0x10'));var voiceExtension=require(_0x03ce('0x11'));var faxAccount=require(_0x03ce('0x12'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x03ce('0x13'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x03ce('0x14'));var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require('./rpc/integrations/vtiger');var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x03ce('0x15'));var dynamics365=require(_0x03ce('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x03ce('0x17'))(_0x03ce('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x03ce('0x19')](_0x03ce('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get']('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x03ce('0x1b')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x1d')]())['then'](user['getTelephones']())[_0x03ce('0x1c')](realtime[_0x03ce('0x1e')]())[_0x03ce('0x1c')](trunk[_0x03ce('0x1f')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x20')]())[_0x03ce('0x1c')](voiceQueue['getVoiceQueues']())[_0x03ce('0x1c')](realtime['initVoiceQueues']())[_0x03ce('0x1c')](trigger[_0x03ce('0x21')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x22')]())['then'](template[_0x03ce('0x23')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x24')]())[_0x03ce('0x1c')](zendesk[_0x03ce('0x25')]())[_0x03ce('0x1c')](realtime['initZendeskAccounts']())[_0x03ce('0x1c')](salesforce[_0x03ce('0x26')]())[_0x03ce('0x1c')](realtime['initSalesforceAccounts']())[_0x03ce('0x1c')](sugarcrm[_0x03ce('0x27')]())['then'](realtime[_0x03ce('0x28')]())[_0x03ce('0x1c')](freshdesk['getFreshdeskAccounts']())[_0x03ce('0x1c')](realtime[_0x03ce('0x29')]())[_0x03ce('0x1c')](desk['getDeskAccounts']())[_0x03ce('0x1c')](realtime[_0x03ce('0x2a')]())[_0x03ce('0x1c')](zoho['getZohoAccounts']())['then'](realtime[_0x03ce('0x2b')]())[_0x03ce('0x1c')](vtiger[_0x03ce('0x2c')]())['then'](realtime[_0x03ce('0x2d')]())[_0x03ce('0x1c')](freshsales[_0x03ce('0x2e')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x2f')]())[_0x03ce('0x1c')](servicenow[_0x03ce('0x30')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x31')]())[_0x03ce('0x1c')](dynamics365[_0x03ce('0x32')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x33')]())['then'](campaign[_0x03ce('0x34')]())['then'](realtime[_0x03ce('0x35')]())['then'](voiceExtension[_0x03ce('0x36')]())[_0x03ce('0x1c')](realtime['initVoiceExtensions']())['then'](faxAccount[_0x03ce('0x37')]())[_0x03ce('0x1c')](realtime['initFaxAccounts']())[_0x03ce('0x1c')](function(){return realtime;});}function initParams(){return BPromise[_0x03ce('0x38')]()['then'](voiceQueueReport[_0x03ce('0x39')]())['then'](realtime[_0x03ce('0x3a')]())[_0x03ce('0x1c')](cmHopperHistory[_0x03ce('0x3b')]())[_0x03ce('0x1c')](realtime[_0x03ce('0x3c')]())[_0x03ce('0x1c')](cmHopperHistory[_0x03ce('0x3d')]())['then'](realtime[_0x03ce('0x3e')]())[_0x03ce('0x1c')](voiceCallReport[_0x03ce('0x3f')]())['then'](realtime['initVoiceCallReports']())[_0x03ce('0x40')](function(_0x34d92f){logger[_0x03ce('0x41')](_0x03ce('0x42'),util[_0x03ce('0x43')](_0x34d92f,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)['then'](function(_0x53b4c2){return initRealtime();})[_0x03ce('0x1c')](function(){return initParams();})['then'](function(){report[_0x03ce('0x44')]();setInterval(initRealtime,0x1388);})[_0x03ce('0x40')](function(_0x4e35f4){logger[_0x03ce('0x41')](_0x03ce('0x45'),util['inspect'](_0x4e35f4,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index ad6e8be..57c0fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['address','phone','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','updateStatusRealtime','not_inuse','inuse','talking','format','interface','stringify','md5','user:%s','emit','user:presence','lodash','util','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status'];(function(_0x3e10eb,_0x1562cc){var _0x1c83d2=function(_0x5e6b21){while(--_0x5e6b21){_0x3e10eb['push'](_0x3e10eb['shift']());}};_0x1c83d2(++_0x1562cc);}(_0xe706,0xa3));var _0x6e70=function(_0x24c963,_0x5f32a4){_0x24c963=_0x24c963-0x0;var _0x32a0eb=_0xe706[_0x24c963];return _0x32a0eb;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var md5=require('md5');var Redis=require(_0x6e70('0x3'));var config=require(_0x6e70('0x4'));config[_0x6e70('0x5')]=_[_0x6e70('0x6')](config[_0x6e70('0x5')],{'host':_0x6e70('0x7'),'port':0x18eb});var io=require(_0x6e70('0x8'))(new Redis(config[_0x6e70('0x5')]));function Agent(_0x1b0389){this['id']=_0x1b0389['id']||0x0;this[_0x6e70('0x9')]=_0x1b0389[_0x6e70('0x9')]||'';this[_0x6e70('0xa')]=_0x1b0389[_0x6e70('0xa')]||'';this[_0x6e70('0xb')]=_0x1b0389[_0x6e70('0xb')]||'';this[_0x6e70('0xc')]=_0x1b0389[_0x6e70('0xc')]||'';this[_0x6e70('0xd')]=_0x6e70('0xe');this[_0x6e70('0xf')]=0x0;this[_0x6e70('0x10')]=_0x6e70('0xe');this[_0x6e70('0x11')]='';this[_0x6e70('0x12')]='';this['mobile']='';this['interface']='';this[_0x6e70('0x13')]=_0x1b0389[_0x6e70('0x13')]||![];this[_0x6e70('0x14')]=_0x6e70('0xe');this[_0x6e70('0x15')]=0x0;this[_0x6e70('0x16')]='';this[_0x6e70('0x17')]='';this[_0x6e70('0x18')]=![];this['local']=![];this['md5']='';}Agent['prototype'][_0x6e70('0x19')]=function(_0x5a37a6){var _0x53aed0;if(_0x5a37a6&&_0x5a37a6[_0x6e70('0xd')]){_0x53aed0=_0x5a37a6[_0x6e70('0xd')]['toLowerCase']();switch(_0x53aed0){case _0x6e70('0x1a'):_0x53aed0='idle';break;case _0x6e70('0x1b'):_0x53aed0=_0x6e70('0x1c');break;}}if(_0x53aed0&&this['voiceStatus']!==_0x53aed0||_0x5a37a6['statePause']){this[_0x6e70('0x15')]=_['toNumber'](moment()[_0x6e70('0x1d')]('x'));}if(_0x53aed0){this[_0x6e70('0x14')]=_0x53aed0;}var _0x53acdc={'id':this['id'],'name':this['name'],'email':this[_0x6e70('0xa')],'accountcode':this[_0x6e70('0xb')],'fullname':this[_0x6e70('0xc')],'state':this[_0x6e70('0xd')],'stateTime':this[_0x6e70('0xf')],'status':this[_0x6e70('0x10')],'address':this[_0x6e70('0x11')],'online':this[_0x6e70('0x13')],'voiceStatus':this[_0x6e70('0x14')],'voiceStatusTime':this[_0x6e70('0x15')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x6e70('0x17')],'interface':this[_0x6e70('0x1e')],'onhold':this[_0x6e70('0x18')]};var _0x502b2d=md5(JSON[_0x6e70('0x1f')](_0x53acdc));if(this[_0x6e70('0x20')]!==_0x502b2d){this[_0x6e70('0x20')]=_0x502b2d;io['to'](util['format'](_0x6e70('0x21'),_0x53acdc['name']))['emit']('user:save',_0x53acdc);io[_0x6e70('0x22')](_0x6e70('0x23'),_0x53acdc);}};module['exports']=Agent;
\ No newline at end of file
+var _0x0713=['idle','inuse','talking','voiceStatusTime','toNumber','format','voiceStatusQueue','stringify','user:%s','emit','user:save','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusCallerIdNumber','onhold','local','prototype','state','toLowerCase','not_inuse'];(function(_0x5ee69b,_0x50f146){var _0x4d6b7c=function(_0x47fd7a){while(--_0x47fd7a){_0x5ee69b['push'](_0x5ee69b['shift']());}};_0x4d6b7c(++_0x50f146);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));config[_0x3071('0x4')]=_['defaults'](config[_0x3071('0x4')],{'host':_0x3071('0x5'),'port':0x18eb});var io=require(_0x3071('0x6'))(new Redis(config[_0x3071('0x4')]));function Agent(_0xabd7b6){this['id']=_0xabd7b6['id']||0x0;this[_0x3071('0x7')]=_0xabd7b6[_0x3071('0x7')]||'';this[_0x3071('0x8')]=_0xabd7b6[_0x3071('0x8')]||'';this[_0x3071('0x9')]=_0xabd7b6[_0x3071('0x9')]||'';this[_0x3071('0xa')]=_0xabd7b6[_0x3071('0xa')]||'';this['state']=_0x3071('0xb');this[_0x3071('0xc')]=0x0;this[_0x3071('0xd')]=_0x3071('0xb');this[_0x3071('0xe')]='';this['phone']='';this[_0x3071('0xf')]='';this[_0x3071('0x10')]='';this[_0x3071('0x11')]=_0xabd7b6[_0x3071('0x11')]||![];this[_0x3071('0x12')]='unknown';this['voiceStatusTime']=0x0;this[_0x3071('0x13')]='';this['voiceStatusQueue']='';this[_0x3071('0x14')]=![];this[_0x3071('0x15')]=![];this['md5']='';}Agent[_0x3071('0x16')]['updateStatusRealtime']=function(_0x2fc15d){var _0x45c93b;if(_0x2fc15d&&_0x2fc15d[_0x3071('0x17')]){_0x45c93b=_0x2fc15d[_0x3071('0x17')][_0x3071('0x18')]();switch(_0x45c93b){case _0x3071('0x19'):_0x45c93b=_0x3071('0x1a');break;case _0x3071('0x1b'):_0x45c93b=_0x3071('0x1c');break;}}if(_0x45c93b&&this[_0x3071('0x12')]!==_0x45c93b||_0x2fc15d['statePause']){this[_0x3071('0x1d')]=_[_0x3071('0x1e')](moment()[_0x3071('0x1f')]('x'));}if(_0x45c93b){this[_0x3071('0x12')]=_0x45c93b;}var _0x3acf0e={'id':this['id'],'name':this[_0x3071('0x7')],'email':this[_0x3071('0x8')],'accountcode':this[_0x3071('0x9')],'fullname':this['fullname'],'state':this[_0x3071('0x17')],'stateTime':this[_0x3071('0xc')],'status':this[_0x3071('0xd')],'address':this['address'],'online':this[_0x3071('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x3071('0x1d')],'voiceStatusCallerIdNumber':this[_0x3071('0x13')],'voiceStatusQueue':this[_0x3071('0x20')],'interface':this[_0x3071('0x10')],'onhold':this[_0x3071('0x14')]};var _0x34c50e=md5(JSON[_0x3071('0x21')](_0x3acf0e));if(this[_0x3071('0x1')]!==_0x34c50e){this['md5']=_0x34c50e;io['to'](util['format'](_0x3071('0x22'),_0x3acf0e[_0x3071('0x7')]))[_0x3071('0x23')](_0x3071('0x24'),_0x3acf0e);io[_0x3071('0x23')](_0x3071('0x25'),_0x3acf0e);}};module[_0x3071('0x26')]=Agent;
\ No newline at end of file
index 38f15c3..4d4fd99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1c=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrAnswerCallsDay','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x209f9c,_0x4ea385){var _0x13c1ef=function(_0x455599){while(--_0x455599){_0x209f9c['push'](_0x209f9c['shift']());}};_0x13c1ef(++_0x4ea385);}(_0xbf1c,0xe7));var _0xcbf1=function(_0x484473,_0x5768b1){_0x484473=_0x484473-0x0;var _0x67551f=_0xbf1c[_0x484473];return _0x67551f;};'use strict';function Campaign(_0x34b729){this['id']=_0x34b729['id']||0x0;this[_0xcbf1('0x0')]=_0x34b729['name']||'';this[_0xcbf1('0x1')]=_0x34b729['type']||'campaign';this[_0xcbf1('0x2')]=0x0;this[_0xcbf1('0x3')]=0x0;this[_0xcbf1('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0xcbf1('0x5')]='';this[_0xcbf1('0x6')]=!![];this[_0xcbf1('0x7')]=_0x34b729[_0xcbf1('0x7')];this['limitCalls']=_0x34b729[_0xcbf1('0x8')];this[_0xcbf1('0x9')]=_0x34b729[_0xcbf1('0x9')]||null;this['dialGlobalInterval']=_0x34b729[_0xcbf1('0xa')]?_0x34b729[_0xcbf1('0xa')]:null;this[_0xcbf1('0xb')]=_0x34b729[_0xcbf1('0xb')];this[_0xcbf1('0xc')]=_0x34b729[_0xcbf1('0xc')];this[_0xcbf1('0xd')]=_0x34b729[_0xcbf1('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x34b729[_0xcbf1('0xe')];this[_0xcbf1('0xf')]=_0x34b729[_0xcbf1('0xf')];this[_0xcbf1('0x10')]=_0x34b729[_0xcbf1('0x10')];this['dialBusyRetryFrequency']=_0x34b729[_0xcbf1('0x11')];this['dialNoAnswerMaxRetry']=_0x34b729[_0xcbf1('0x12')];this[_0xcbf1('0x13')]=_0x34b729['dialNoAnswerRetryFrequency'];this[_0xcbf1('0x14')]=_0x34b729[_0xcbf1('0x14')];this[_0xcbf1('0x15')]=_0x34b729[_0xcbf1('0x15')]||0x3;this[_0xcbf1('0x16')]=_0x34b729[_0xcbf1('0x16')]||0x96;this[_0xcbf1('0x17')]=_0x34b729[_0xcbf1('0x17')]||0x3;this[_0xcbf1('0x18')]=_0x34b729[_0xcbf1('0x18')]||0x96;this[_0xcbf1('0x19')]=_0x34b729[_0xcbf1('0x19')]||0x3;this[_0xcbf1('0x1a')]=_0x34b729['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x34b729[_0xcbf1('0x1b')]||0x3;this[_0xcbf1('0x1c')]=_0x34b729[_0xcbf1('0x1c')]||0x96;this['dialAgentRejectMaxRetry']=_0x34b729[_0xcbf1('0x1d')]||0x3;this[_0xcbf1('0x1e')]=_0x34b729[_0xcbf1('0x1e')]||0x96;this[_0xcbf1('0x1f')]=_0x34b729[_0xcbf1('0x1f')]||_0xcbf1('0x20');this['dialPrefix']=_0x34b729[_0xcbf1('0x21')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x34b729[_0xcbf1('0x22')]||undefined;this[_0xcbf1('0x23')]=_0x34b729['dialCutDigit']||undefined;this[_0xcbf1('0x24')]=_0x34b729['TrunkBackup']?_0x34b729[_0xcbf1('0x24')]:undefined;this[_0xcbf1('0x25')]=_0x34b729[_0xcbf1('0x25')]?_0x34b729['Trunk']:undefined;this[_0xcbf1('0x26')]=_0x34b729[_0xcbf1('0x26')]?_0x34b729['Interval']:undefined;this[_0xcbf1('0x27')]=_0x34b729[_0xcbf1('0x27')]?_0x34b729[_0xcbf1('0x27')]:undefined;this[_0xcbf1('0x28')]=_0x34b729[_0xcbf1('0x27')]?_0x34b729[_0xcbf1('0x27')]['name']:undefined;this['dialAMDActive']=_0x34b729[_0xcbf1('0x29')]||![];this[_0xcbf1('0x2a')]=_0x34b729[_0xcbf1('0x2a')];this[_0xcbf1('0x2b')]=_0x34b729['dialAMDGreeting'];this[_0xcbf1('0x2c')]=_0x34b729['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x34b729[_0xcbf1('0x2d')];this['dialAMDMinWordLength']=_0x34b729[_0xcbf1('0x2e')];this[_0xcbf1('0x2f')]=_0x34b729[_0xcbf1('0x2f')];this[_0xcbf1('0x30')]=_0x34b729['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x34b729[_0xcbf1('0x31')];this[_0xcbf1('0x32')]=_0x34b729[_0xcbf1('0x32')];}module[_0xcbf1('0x33')]=Campaign;
\ No newline at end of file
+var _0x4a4b=['Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk'];(function(_0x4735c8,_0x3963e3){var _0x3ca186=function(_0x56d232){while(--_0x56d232){_0x4735c8['push'](_0x4735c8['shift']());}};_0x3ca186(++_0x3963e3);}(_0x4a4b,0x1b6));var _0xb4a4=function(_0x278b20,_0xab649d){_0x278b20=_0x278b20-0x0;var _0x1bf71e=_0x4a4b[_0x278b20];return _0x1bf71e;};'use strict';function Campaign(_0x2d4baf){this['id']=_0x2d4baf['id']||0x0;this['name']=_0x2d4baf['name']||'';this[_0xb4a4('0x0')]=_0x2d4baf[_0xb4a4('0x0')]||_0xb4a4('0x1');this[_0xb4a4('0x2')]=0x0;this[_0xb4a4('0x3')]=0x0;this[_0xb4a4('0x4')]=0x0;this[_0xb4a4('0x5')]=0x0;this[_0xb4a4('0x6')]='';this[_0xb4a4('0x7')]=!![];this[_0xb4a4('0x8')]=_0x2d4baf[_0xb4a4('0x8')];this[_0xb4a4('0x9')]=_0x2d4baf[_0xb4a4('0x9')];this['dialTimezone']=_0x2d4baf[_0xb4a4('0xa')]||null;this[_0xb4a4('0xb')]=_0x2d4baf['dialGlobalInterval']?_0x2d4baf['dialGlobalInterval']:null;this[_0xb4a4('0xc')]=_0x2d4baf['dialOriginateCallerIdName'];this[_0xb4a4('0xd')]=_0x2d4baf['dialOriginateCallerIdNumber'];this[_0xb4a4('0xe')]=_0x2d4baf[_0xb4a4('0xe')]||0x1e;this['dialCongestionMaxRetry']=_0x2d4baf[_0xb4a4('0xf')];this['dialCongestionRetryFrequency']=_0x2d4baf[_0xb4a4('0x10')];this['dialBusyMaxRetry']=_0x2d4baf[_0xb4a4('0x11')];this[_0xb4a4('0x12')]=_0x2d4baf['dialBusyRetryFrequency'];this[_0xb4a4('0x13')]=_0x2d4baf[_0xb4a4('0x13')];this[_0xb4a4('0x14')]=_0x2d4baf[_0xb4a4('0x14')];this[_0xb4a4('0x15')]=_0x2d4baf[_0xb4a4('0x15')];this[_0xb4a4('0x16')]=_0x2d4baf[_0xb4a4('0x16')]||0x3;this[_0xb4a4('0x17')]=_0x2d4baf['dialNoSuchNumberRetryFrequency']||0x96;this[_0xb4a4('0x18')]=_0x2d4baf[_0xb4a4('0x18')]||0x3;this[_0xb4a4('0x19')]=_0x2d4baf[_0xb4a4('0x19')]||0x96;this[_0xb4a4('0x1a')]=_0x2d4baf['dialAbandonedMaxRetry']||0x3;this[_0xb4a4('0x1b')]=_0x2d4baf['dialAbandonedRetryFrequency']||0x96;this[_0xb4a4('0x1c')]=_0x2d4baf[_0xb4a4('0x1c')]||0x3;this[_0xb4a4('0x1d')]=_0x2d4baf['dialMachineRetryFrequency']||0x96;this[_0xb4a4('0x1e')]=_0x2d4baf['dialAgentRejectMaxRetry']||0x3;this[_0xb4a4('0x1f')]=_0x2d4baf['dialAgentRejectRetryFrequency']||0x96;this[_0xb4a4('0x20')]=_0x2d4baf[_0xb4a4('0x20')]||_0xb4a4('0x21');this['dialPrefix']=_0x2d4baf[_0xb4a4('0x22')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x2d4baf[_0xb4a4('0x23')]||undefined;this[_0xb4a4('0x24')]=_0x2d4baf['dialCutDigit']||undefined;this[_0xb4a4('0x25')]=_0x2d4baf[_0xb4a4('0x25')]?_0x2d4baf[_0xb4a4('0x25')]:undefined;this[_0xb4a4('0x26')]=_0x2d4baf[_0xb4a4('0x26')]?_0x2d4baf[_0xb4a4('0x26')]:undefined;this[_0xb4a4('0x27')]=_0x2d4baf[_0xb4a4('0x27')]?_0x2d4baf[_0xb4a4('0x27')]:undefined;this[_0xb4a4('0x28')]=_0x2d4baf['SquareProject']?_0x2d4baf[_0xb4a4('0x28')]:undefined;this[_0xb4a4('0x29')]=_0x2d4baf[_0xb4a4('0x28')]?_0x2d4baf['SquareProject']['name']:undefined;this[_0xb4a4('0x2a')]=_0x2d4baf[_0xb4a4('0x2a')]||![];this['dialAMDInitialSilence']=_0x2d4baf[_0xb4a4('0x2b')];this['dialAMDGreeting']=_0x2d4baf[_0xb4a4('0x2c')];this['dialAMDAfterGreetingSilence']=_0x2d4baf[_0xb4a4('0x2d')];this[_0xb4a4('0x2e')]=_0x2d4baf[_0xb4a4('0x2e')];this['dialAMDMinWordLength']=_0x2d4baf[_0xb4a4('0x2f')];this[_0xb4a4('0x30')]=_0x2d4baf['dialAMDBetweenWordsSilence'];this[_0xb4a4('0x31')]=_0x2d4baf[_0xb4a4('0x31')];this[_0xb4a4('0x32')]=_0x2d4baf['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x2d4baf[_0xb4a4('0x33')];}module[_0xb4a4('0x34')]=Campaign;
\ No newline at end of file
index e221f5d..c09b5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af5=['monitors','transfercalleridnum','transferType','mohtime','exports','starttime','channel','calleridnum','calleridname','accountcode','linkedid','exten','answertime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','tag','monitor','monitorFilename'];(function(_0x233120,_0x3a53fe){var _0x36a656=function(_0x609f22){while(--_0x609f22){_0x233120['push'](_0x233120['shift']());}};_0x36a656(++_0x3a53fe);}(_0x3af5,0x1d3));var _0x53af=function(_0x54bb5e,_0xc9513a){_0x54bb5e=_0x54bb5e-0x0;var _0x2cfe75=_0x3af5[_0x54bb5e];return _0x2cfe75;};'use strict';function Channel(){this[_0x53af('0x0')]=null;this[_0x53af('0x1')]='';this['destinationchannel']='';this[_0x53af('0x2')]=0x0;this[_0x53af('0x3')]='';this['connectedlinenum']=undefined;this['connectedlinename']=undefined;this[_0x53af('0x4')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x53af('0x5')]=0x0;this[_0x53af('0x6')]=0x0;this['answered']=![];this[_0x53af('0x7')]=null;this['endtime']=null;this[_0x53af('0x8')]=![];this[_0x53af('0x9')]=![];this[_0x53af('0xa')]='';this[_0x53af('0xb')]='';this[_0x53af('0xc')]=0x0;this[_0x53af('0xd')]=0x0;this['holdtime']=0x0;this['type']=null;this[_0x53af('0xe')]=null;this['disposition']=null;this[_0x53af('0xf')]=![];this[_0x53af('0x10')]=null;this['queue']=null;this[_0x53af('0x11')]=[];this[_0x53af('0x12')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x53af('0x13')]=undefined;this[_0x53af('0x14')]=0x0;}module[_0x53af('0x15')]=Channel;
\ No newline at end of file
+var _0xb886=['billableseconds','holdtime','type','tag','disposition','queue','monitors','transfercalleridnum','transferType','mohtime','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','linkedid','exten','answered','answertime','endtime','unmanaged','lastapplication'];(function(_0x414986,_0x10bad4){var _0x302b9f=function(_0xd7540a){while(--_0xd7540a){_0x414986['push'](_0x414986['shift']());}};_0x302b9f(++_0x10bad4);}(_0xb886,0xf5));var _0x6b88=function(_0x5e1189,_0x315b42){_0x5e1189=_0x5e1189-0x0;var _0x270a14=_0xb886[_0x5e1189];return _0x270a14;};'use strict';function Channel(){this[_0x6b88('0x0')]=null;this[_0x6b88('0x1')]='';this[_0x6b88('0x2')]='';this[_0x6b88('0x3')]=0x0;this[_0x6b88('0x4')]='';this[_0x6b88('0x5')]=undefined;this[_0x6b88('0x6')]=undefined;this[_0x6b88('0x7')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x6b88('0x8')]=0x0;this[_0x6b88('0x9')]=0x0;this[_0x6b88('0xa')]=![];this[_0x6b88('0xb')]=null;this[_0x6b88('0xc')]=null;this[_0x6b88('0xd')]=![];this['abandoned']=![];this[_0x6b88('0xe')]='';this['lastdata']='';this['duration']=0x0;this[_0x6b88('0xf')]=0x0;this[_0x6b88('0x10')]=0x0;this[_0x6b88('0x11')]=null;this[_0x6b88('0x12')]=null;this[_0x6b88('0x13')]=null;this['monitor']=![];this['monitorFilename']=null;this[_0x6b88('0x14')]=null;this[_0x6b88('0x15')]=[];this[_0x6b88('0x16')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x6b88('0x17')]=undefined;this[_0x6b88('0x18')]=0x0;}module[_0x6b88('0x19')]=Channel;
\ No newline at end of file
index c6bec0e..58ef01c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0126=['type','Configurations','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x255a75,_0x161115){var _0x53ce5f=function(_0x24b611){while(--_0x24b611){_0x255a75['push'](_0x255a75['shift']());}};_0x53ce5f(++_0x161115);}(_0x0126,0x1a2));var _0x6012=function(_0x1b62e1,_0x2e9a5b){_0x1b62e1=_0x1b62e1-0x0;var _0x2da6ba=_0x0126[_0x1b62e1];return _0x2da6ba;};'use strict';function DeskAccount(_0x4df095){this['id']=_0x4df095['id']||0x0;this['name']=_0x4df095['name']||'';this['username']=_0x4df095['username']||'';this['remoteUri']=_0x4df095['remoteUri']||'';this[_0x6012('0x0')]=_0x4df095[_0x6012('0x0')]||'';this[_0x6012('0x1')]=_0x4df095[_0x6012('0x1')]||'';this[_0x6012('0x2')]=_0x4df095[_0x6012('0x2')]||'';this[_0x6012('0x3')]=_0x4df095[_0x6012('0x3')]||'';this[_0x6012('0x4')]=_0x4df095['token']||'';this['tokenSecret']=_0x4df095[_0x6012('0x5')]||'';this[_0x6012('0x6')]=_0x4df095['type']||'';this['serverUrl']=_0x4df095['serverUrl']||'';this[_0x6012('0x7')]=_0x4df095['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x179b=['name','username','remoteUri','authType','consumerKey','consumerSecret','token','tokenSecret','type','Configurations','exports'];(function(_0x489d04,_0x3f0f3e){var _0x2f6cbf=function(_0x1c8e42){while(--_0x1c8e42){_0x489d04['push'](_0x489d04['shift']());}};_0x2f6cbf(++_0x3f0f3e);}(_0x179b,0xfd));var _0xb179=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x179b[_0x2aec52];return _0x3b8835;};'use strict';function DeskAccount(_0x4e1601){this['id']=_0x4e1601['id']||0x0;this['name']=_0x4e1601[_0xb179('0x0')]||'';this['username']=_0x4e1601[_0xb179('0x1')]||'';this[_0xb179('0x2')]=_0x4e1601[_0xb179('0x2')]||'';this[_0xb179('0x3')]=_0x4e1601[_0xb179('0x3')]||'';this['password']=_0x4e1601['password']||'';this[_0xb179('0x4')]=_0x4e1601[_0xb179('0x4')]||'';this[_0xb179('0x5')]=_0x4e1601[_0xb179('0x5')]||'';this[_0xb179('0x6')]=_0x4e1601[_0xb179('0x6')]||'';this[_0xb179('0x7')]=_0x4e1601[_0xb179('0x7')]||'';this[_0xb179('0x8')]=_0x4e1601[_0xb179('0x8')]||'';this['serverUrl']=_0x4e1601['serverUrl']||'';this['Configurations']=_0x4e1601[_0xb179('0x9')]||{};}module[_0xb179('0xa')]=DeskAccount;
\ No newline at end of file
index 2091062..7b0ea9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','Configurations'];(function(_0x3850de,_0x2acfca){var _0x3c405f=function(_0x1e0b0d){while(--_0x1e0b0d){_0x3850de['push'](_0x3850de['shift']());}};_0x3c405f(++_0x2acfca);}(_0x6c76,0x184));var _0x66c7=function(_0x5b4a20,_0x31e305){_0x5b4a20=_0x5b4a20-0x0;var _0x5a5fc5=_0x6c76[_0x5b4a20];return _0x5a5fc5;};'use strict';function Dynamics365Account(_0x4d4f77){this['id']=_0x4d4f77['id']||0x0;this[_0x66c7('0x0')]=_0x4d4f77[_0x66c7('0x0')]||'';this['username']=_0x4d4f77[_0x66c7('0x1')]||'';this[_0x66c7('0x2')]=_0x4d4f77['password']||'';this['remoteUri']=_0x4d4f77[_0x66c7('0x3')]||'';this[_0x66c7('0x4')]=_0x4d4f77['tenantId']||'';this[_0x66c7('0x5')]=_0x4d4f77[_0x66c7('0x5')]||'';this['clientSecret']=_0x4d4f77[_0x66c7('0x6')]||{};this['serverUrl']=_0x4d4f77['serverUrl']||'';this[_0x66c7('0x7')]=_0x4d4f77[_0x66c7('0x7')]||{};}module[_0x66c7('0x8')]=Dynamics365Account;
\ No newline at end of file
+var _0x702d=['remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','exports','name','username','password'];(function(_0x28360d,_0x4777c2){var _0x5cd28b=function(_0x151e99){while(--_0x151e99){_0x28360d['push'](_0x28360d['shift']());}};_0x5cd28b(++_0x4777c2);}(_0x702d,0x147));var _0xd702=function(_0x49d07a,_0x16e00d){_0x49d07a=_0x49d07a-0x0;var _0x4d5752=_0x702d[_0x49d07a];return _0x4d5752;};'use strict';function Dynamics365Account(_0x14de3f){this['id']=_0x14de3f['id']||0x0;this[_0xd702('0x0')]=_0x14de3f[_0xd702('0x0')]||'';this[_0xd702('0x1')]=_0x14de3f[_0xd702('0x1')]||'';this['password']=_0x14de3f[_0xd702('0x2')]||'';this[_0xd702('0x3')]=_0x14de3f[_0xd702('0x3')]||'';this[_0xd702('0x4')]=_0x14de3f['tenantId']||'';this[_0xd702('0x5')]=_0x14de3f['clientId']||'';this[_0xd702('0x6')]=_0x14de3f[_0xd702('0x6')]||{};this[_0xd702('0x7')]=_0x14de3f['serverUrl']||'';this[_0xd702('0x8')]=_0x14de3f['Configurations']||{};}module[_0xd702('0x9')]=Dynamics365Account;
\ No newline at end of file
index 33f7487..9d34823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d10=['modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','minrate'];(function(_0x3cb9df,_0x1ac2f0){var _0xc089c7=function(_0x5bb407){while(--_0x5bb407){_0x3cb9df['push'](_0x3cb9df['shift']());}};_0xc089c7(++_0x1ac2f0);}(_0x0d10,0x1bb));var _0x00d1=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0x0d10[_0x2bcddb];return _0x12a9e8;};'use strict';function FaxAccount(_0x33ff0e){this['id']=_0x33ff0e['id']||0x0;this['name']=_0x33ff0e[_0x00d1('0x0')]||'';this[_0x00d1('0x1')]=_0x33ff0e[_0x00d1('0x1')];this[_0x00d1('0x2')]=_0x33ff0e['ecm'];this[_0x00d1('0x3')]=_0x33ff0e[_0x00d1('0x3')];this['localstationid']=_0x33ff0e['localstationid'];this[_0x00d1('0x4')]=_0x33ff0e[_0x00d1('0x4')]||0x960;this['maxrate']=_0x33ff0e['maxrate']||0x3840;this[_0x00d1('0x5')]=_0x33ff0e[_0x00d1('0x5')]||_0x00d1('0x6');this[_0x00d1('0x7')]=_0x33ff0e[_0x00d1('0x7')]||'no';this['faxdetect']=_0x33ff0e[_0x00d1('0x8')]||'no';this[_0x00d1('0x9')]=_0x33ff0e[_0x00d1('0x9')]||0x1388;this[_0x00d1('0xa')]=_0x33ff0e[_0x00d1('0xa')]||_0x00d1('0xb');this[_0x00d1('0xc')]=_0x33ff0e[_0x00d1('0xc')]?_0x33ff0e[_0x00d1('0xc')]:undefined;this[_0x00d1('0xd')]=_0x33ff0e[_0x00d1('0xd')];this[_0x00d1('0xe')]=_0x33ff0e[_0x00d1('0xe')];}module[_0x00d1('0xf')]=FaxAccount;
\ No newline at end of file
+var _0xbccd=['tech','SIP','Trunk','ListId','key','exports','name','description','headerinfo','localstationid','maxrate','modem','v17,v27,v29','gateway','t38timeout'];(function(_0x3d99f7,_0x56f07c){var _0x37ce24=function(_0x1e3e6c){while(--_0x1e3e6c){_0x3d99f7['push'](_0x3d99f7['shift']());}};_0x37ce24(++_0x56f07c);}(_0xbccd,0xf6));var _0xdbcc=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xbccd[_0x422905];return _0x33dc6c;};'use strict';function FaxAccount(_0x2f06f7){this['id']=_0x2f06f7['id']||0x0;this['name']=_0x2f06f7[_0xdbcc('0x0')]||'';this[_0xdbcc('0x1')]=_0x2f06f7[_0xdbcc('0x1')];this['ecm']=_0x2f06f7['ecm'];this[_0xdbcc('0x2')]=_0x2f06f7[_0xdbcc('0x2')];this[_0xdbcc('0x3')]=_0x2f06f7['localstationid'];this['minrate']=_0x2f06f7['minrate']||0x960;this[_0xdbcc('0x4')]=_0x2f06f7['maxrate']||0x3840;this[_0xdbcc('0x5')]=_0x2f06f7[_0xdbcc('0x5')]||_0xdbcc('0x6');this[_0xdbcc('0x7')]=_0x2f06f7[_0xdbcc('0x7')]||'no';this['faxdetect']=_0x2f06f7['faxdetect']||'no';this[_0xdbcc('0x8')]=_0x2f06f7['t38timeout']||0x1388;this[_0xdbcc('0x9')]=_0x2f06f7['tech']||_0xdbcc('0xa');this[_0xdbcc('0xb')]=_0x2f06f7[_0xdbcc('0xb')]?_0x2f06f7[_0xdbcc('0xb')]:undefined;this[_0xdbcc('0xc')]=_0x2f06f7[_0xdbcc('0xc')];this[_0xdbcc('0xd')]=_0x2f06f7[_0xdbcc('0xd')];}module[_0xdbcc('0xe')]=FaxAccount;
\ No newline at end of file
index be16031..b9c7852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ac=['name','username','apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0xbe3382,_0x5d6862){var _0xc809a4=function(_0x403573){while(--_0x403573){_0xbe3382['push'](_0xbe3382['shift']());}};_0xc809a4(++_0x5d6862);}(_0xe5ac,0x198));var _0xce5a=function(_0x4e5958,_0x9ad399){_0x4e5958=_0x4e5958-0x0;var _0x43c6f6=_0xe5ac[_0x4e5958];return _0x43c6f6;};'use strict';function FreshdeskAccount(_0x297256){this['id']=_0x297256['id']||0x0;this[_0xce5a('0x0')]=_0x297256[_0xce5a('0x0')]||'';this['username']=_0x297256[_0xce5a('0x1')]||'';this[_0xce5a('0x2')]=_0x297256[_0xce5a('0x3')]||'';this['remoteUri']=_0x297256[_0xce5a('0x4')]||'';this[_0xce5a('0x5')]=_0x297256[_0xce5a('0x5')]||'';this[_0xce5a('0x6')]=_0x297256['Configurations']||{};}module[_0xce5a('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xc7b9=['remoteUri','serverUrl','Configurations','exports','name','apiKey'];(function(_0x35f41c,_0x454c67){var _0x4afb3c=function(_0xdde00c){while(--_0xdde00c){_0x35f41c['push'](_0x35f41c['shift']());}};_0x4afb3c(++_0x454c67);}(_0xc7b9,0x6a));var _0x9c7b=function(_0x5a68bb,_0x598744){_0x5a68bb=_0x5a68bb-0x0;var _0x55eb0b=_0xc7b9[_0x5a68bb];return _0x55eb0b;};'use strict';function FreshdeskAccount(_0x422152){this['id']=_0x422152['id']||0x0;this['name']=_0x422152[_0x9c7b('0x0')]||'';this['username']=_0x422152['username']||'';this[_0x9c7b('0x1')]=_0x422152['token']||'';this[_0x9c7b('0x2')]=_0x422152[_0x9c7b('0x2')]||'';this[_0x9c7b('0x3')]=_0x422152[_0x9c7b('0x3')]||'';this[_0x9c7b('0x4')]=_0x422152[_0x9c7b('0x4')]||{};}module[_0x9c7b('0x5')]=FreshdeskAccount;
\ No newline at end of file
index fdab80a..eec1b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf70=['exports','name','username','apiKey','remoteUri','serverUrl','Configurations'];(function(_0xc569f3,_0x485552){var _0x152849=function(_0x4f619f){while(--_0x4f619f){_0xc569f3['push'](_0xc569f3['shift']());}};_0x152849(++_0x485552);}(_0xdf70,0x86));var _0x0df7=function(_0x5bbf70,_0x2f58b3){_0x5bbf70=_0x5bbf70-0x0;var _0x397a54=_0xdf70[_0x5bbf70];return _0x397a54;};'use strict';function FreshsalesAccount(_0x307718){this['id']=_0x307718['id']||0x0;this[_0x0df7('0x0')]=_0x307718[_0x0df7('0x0')]||'';this['username']=_0x307718[_0x0df7('0x1')]||'';this[_0x0df7('0x2')]=_0x307718['token']||'';this[_0x0df7('0x3')]=_0x307718['remoteUri']||'';this[_0x0df7('0x4')]=_0x307718[_0x0df7('0x4')]||'';this['Configurations']=_0x307718[_0x0df7('0x5')]||{};}module[_0x0df7('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0xd7ce=['serverUrl','Configurations','exports','name','username','token'];(function(_0x4575e4,_0x47a667){var _0x18702f=function(_0x3738dc){while(--_0x3738dc){_0x4575e4['push'](_0x4575e4['shift']());}};_0x18702f(++_0x47a667);}(_0xd7ce,0x16b));var _0xed7c=function(_0xcd5a3d,_0x3c5b33){_0xcd5a3d=_0xcd5a3d-0x0;var _0xd43207=_0xd7ce[_0xcd5a3d];return _0xd43207;};'use strict';function FreshsalesAccount(_0x9eb2f6){this['id']=_0x9eb2f6['id']||0x0;this[_0xed7c('0x0')]=_0x9eb2f6[_0xed7c('0x0')]||'';this[_0xed7c('0x1')]=_0x9eb2f6['username']||'';this['apiKey']=_0x9eb2f6[_0xed7c('0x2')]||'';this['remoteUri']=_0x9eb2f6['remoteUri']||'';this['serverUrl']=_0x9eb2f6[_0xed7c('0x3')]||'';this[_0xed7c('0x4')]=_0x9eb2f6[_0xed7c('0x4')]||{};}module[_0xed7c('0x5')]=FreshsalesAccount;
\ No newline at end of file
index c1e0b05..1f5e6ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7572=['queuecallerjoinAt','queuecallerleaveAt','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','channel','connectedlinenum','accountcode','context','exten','priority','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','calleridname'];(function(_0x2fd732,_0x118065){var _0x2ddf51=function(_0x1cca88){while(--_0x1cca88){_0x2fd732['push'](_0x2fd732['shift']());}};_0x2ddf51(++_0x118065);}(_0x7572,0x154));var _0x2757=function(_0x1acc2d,_0x597696){_0x1acc2d=_0x1acc2d-0x0;var _0xabfa6d=_0x7572[_0x1acc2d];return _0xabfa6d;};'use strict';function QueueReport(){this[_0x2757('0x0')]=_0x2757('0x1');this[_0x2757('0x2')]='';this[_0x2757('0x3')]='';this[_0x2757('0x4')]='';this['queue']='';this[_0x2757('0x5')]=null;this[_0x2757('0x6')]=null;this['position']=0x1;this['count']=0x1;this['queuecallerabandon']=![];this[_0x2757('0x7')]=null;this[_0x2757('0x8')]=![];this[_0x2757('0x9')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x2757('0xa')]=0x1;this[_0x2757('0xb')]='';this[_0x2757('0xc')]='';this['connectedlinename']='';this[_0x2757('0xd')]='';this[_0x2757('0xe')]='';this[_0x2757('0xf')]='';this[_0x2757('0x10')]='';this['holdtime']=0x0;this['assigned']=![];this[_0x2757('0x11')]='';this[_0x2757('0x12')]=_0x2757('0x13');this[_0x2757('0x14')]=0x0;this[_0x2757('0x15')]={};}module[_0x2757('0x16')]=QueueReport;
\ No newline at end of file
+var _0x7987=['queuecallerexitAt','originalposition','connectedlinenum','accountcode','context','exten','holdtime','assigned','voice','mohtime','variables','exports','type','uniqueid','calleridname','queuecallerjoinAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete'];(function(_0x40f5d4,_0x5c7478){var _0x4408b9=function(_0x367ca5){while(--_0x367ca5){_0x40f5d4['push'](_0x40f5d4['shift']());}};_0x4408b9(++_0x5c7478);}(_0x7987,0xde));var _0x7798=function(_0x562f3b,_0x4c65ae){_0x562f3b=_0x562f3b-0x0;var _0x1edd55=_0x7987[_0x562f3b];return _0x1edd55;};'use strict';function QueueReport(){this[_0x7798('0x0')]='inbound';this[_0x7798('0x1')]='';this['calleridnum']='';this[_0x7798('0x2')]='';this['queue']='';this[_0x7798('0x3')]=null;this['queuecallerleaveAt']=null;this[_0x7798('0x4')]=0x1;this[_0x7798('0x5')]=0x1;this[_0x7798('0x6')]=![];this[_0x7798('0x7')]=null;this[_0x7798('0x8')]=![];this['queuecallercompleteAt']=null;this['queuecallerexit']=![];this[_0x7798('0x9')]=null;this[_0x7798('0xa')]=0x1;this['channel']='';this[_0x7798('0xb')]='';this['connectedlinename']='';this[_0x7798('0xc')]='';this[_0x7798('0xd')]='';this[_0x7798('0xe')]='';this['priority']='';this[_0x7798('0xf')]=0x0;this[_0x7798('0x10')]=![];this['lastAssignedTo']='';this['motionChannel']=_0x7798('0x11');this[_0x7798('0x12')]=0x0;this[_0x7798('0x13')]={};}module[_0x7798('0x14')]=QueueReport;
\ No newline at end of file
index a688ad0..943deb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb18=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations'];(function(_0x16bba9,_0x1e252c){var _0xccca92=function(_0x52137c){while(--_0x52137c){_0x16bba9['push'](_0x16bba9['shift']());}};_0xccca92(++_0x1e252c);}(_0xbb18,0xb1));var _0x8bb1=function(_0x19a2eb,_0x2df439){_0x19a2eb=_0x19a2eb-0x0;var _0x3c8514=_0xbb18[_0x19a2eb];return _0x3c8514;};'use strict';function SalesforceAccount(_0x167bad){this['id']=_0x167bad['id']||0x0;this[_0x8bb1('0x0')]=_0x167bad[_0x8bb1('0x0')]||'';this[_0x8bb1('0x1')]=_0x167bad[_0x8bb1('0x1')]||'';this[_0x8bb1('0x2')]=_0x167bad[_0x8bb1('0x2')]||'';this['password']=_0x167bad[_0x8bb1('0x3')]||'';this[_0x8bb1('0x4')]=_0x167bad[_0x8bb1('0x4')]||'';this[_0x8bb1('0x5')]=_0x167bad[_0x8bb1('0x5')]||'';this[_0x8bb1('0x6')]=_0x167bad['securityToken']||'';this[_0x8bb1('0x7')]=_0x167bad[_0x8bb1('0x7')]||'integrationTab';this[_0x8bb1('0x8')]=_0x167bad[_0x8bb1('0x8')]||'';this['Configurations']=_0x167bad[_0x8bb1('0x9')]||{};}module[_0x8bb1('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x1c63=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x34a08c,_0x31b0f8){var _0x78ee5b=function(_0x143aeb){while(--_0x143aeb){_0x34a08c['push'](_0x34a08c['shift']());}};_0x78ee5b(++_0x31b0f8);}(_0x1c63,0xdc));var _0x31c6=function(_0x28edf8,_0x3ab79f){_0x28edf8=_0x28edf8-0x0;var _0xb0bbba=_0x1c63[_0x28edf8];return _0xb0bbba;};'use strict';function SalesforceAccount(_0x39d1de){this['id']=_0x39d1de['id']||0x0;this[_0x31c6('0x0')]=_0x39d1de[_0x31c6('0x0')]||'';this[_0x31c6('0x1')]=_0x39d1de['username']||'';this[_0x31c6('0x2')]=_0x39d1de[_0x31c6('0x2')]||'';this[_0x31c6('0x3')]=_0x39d1de['password']||'';this[_0x31c6('0x4')]=_0x39d1de[_0x31c6('0x4')]||'';this[_0x31c6('0x5')]=_0x39d1de[_0x31c6('0x5')]||'';this[_0x31c6('0x6')]=_0x39d1de['securityToken']||'';this['type']=_0x39d1de[_0x31c6('0x7')]||_0x31c6('0x8');this[_0x31c6('0x9')]=_0x39d1de[_0x31c6('0x9')]||'';this[_0x31c6('0xa')]=_0x39d1de['Configurations']||{};}module[_0x31c6('0xb')]=SalesforceAccount;
\ No newline at end of file
index 499dfe7..e1ab201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2f9=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x4877ed,_0x548970){var _0x154b56=function(_0x2193f3){while(--_0x2193f3){_0x4877ed['push'](_0x4877ed['shift']());}};_0x154b56(++_0x548970);}(_0xc2f9,0x14a));var _0x9c2f=function(_0x1ed55c,_0x145298){_0x1ed55c=_0x1ed55c-0x0;var _0x55b3ad=_0xc2f9[_0x1ed55c];return _0x55b3ad;};'use strict';function ServicenowAccount(_0x661d32){this['id']=_0x661d32['id']||0x0;this[_0x9c2f('0x0')]=_0x661d32[_0x9c2f('0x0')]||'';this['username']=_0x661d32[_0x9c2f('0x1')]||'';this[_0x9c2f('0x2')]=_0x661d32[_0x9c2f('0x2')]||'';this[_0x9c2f('0x3')]=_0x661d32[_0x9c2f('0x3')]||'';this[_0x9c2f('0x4')]=_0x661d32['serverUrl']||'';this[_0x9c2f('0x5')]=_0x661d32[_0x9c2f('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xe7ce=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x3f31be,_0x24d0e3){var _0x1360f4=function(_0x9451dc){while(--_0x9451dc){_0x3f31be['push'](_0x3f31be['shift']());}};_0x1360f4(++_0x24d0e3);}(_0xe7ce,0x15f));var _0xee7c=function(_0x3ec9cc,_0x26bba4){_0x3ec9cc=_0x3ec9cc-0x0;var _0x2e82bb=_0xe7ce[_0x3ec9cc];return _0x2e82bb;};'use strict';function ServicenowAccount(_0x9f8df2){this['id']=_0x9f8df2['id']||0x0;this[_0xee7c('0x0')]=_0x9f8df2[_0xee7c('0x0')]||'';this[_0xee7c('0x1')]=_0x9f8df2[_0xee7c('0x1')]||'';this[_0xee7c('0x2')]=_0x9f8df2[_0xee7c('0x2')]||'';this[_0xee7c('0x3')]=_0x9f8df2[_0xee7c('0x3')]||'';this['serverUrl']=_0x9f8df2[_0xee7c('0x4')]||'';this[_0xee7c('0x5')]=_0x9f8df2[_0xee7c('0x5')]||{};}module[_0xee7c('0x6')]=ServicenowAccount;
\ No newline at end of file
index 189f4c4..8c2a331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59b0=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x3cb260,_0x329d33){var _0xa99a90=function(_0x1a0954){while(--_0x1a0954){_0x3cb260['push'](_0x3cb260['shift']());}};_0xa99a90(++_0x329d33);}(_0x59b0,0x188));var _0x059b=function(_0x279f6d,_0x122316){_0x279f6d=_0x279f6d-0x0;var _0x5874a5=_0x59b0[_0x279f6d];return _0x5874a5;};'use strict';function SugarcrmAccount(_0x2f948a){this['id']=_0x2f948a['id']||0x0;this['name']=_0x2f948a[_0x059b('0x0')]||'';this['username']=_0x2f948a[_0x059b('0x1')]||'';this[_0x059b('0x2')]=_0x2f948a[_0x059b('0x2')]||'';this[_0x059b('0x3')]=_0x2f948a['remoteUri']||'';this[_0x059b('0x4')]=_0x2f948a['serverUrl']||'';this[_0x059b('0x5')]=_0x2f948a[_0x059b('0x5')]||{};}module[_0x059b('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x89d4=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x466c96,_0x44d81c){var _0x20bb38=function(_0x478828){while(--_0x478828){_0x466c96['push'](_0x466c96['shift']());}};_0x20bb38(++_0x44d81c);}(_0x89d4,0xc1));var _0x489d=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x89d4[_0x487b0c];return _0x1adbdc;};'use strict';function SugarcrmAccount(_0x27ee37){this['id']=_0x27ee37['id']||0x0;this[_0x489d('0x0')]=_0x27ee37[_0x489d('0x0')]||'';this[_0x489d('0x1')]=_0x27ee37[_0x489d('0x1')]||'';this['password']=_0x27ee37[_0x489d('0x2')]||'';this['remoteUri']=_0x27ee37[_0x489d('0x3')]||'';this[_0x489d('0x4')]=_0x27ee37['serverUrl']||'';this['Configurations']=_0x27ee37[_0x489d('0x5')]||{};}module[_0x489d('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 0fdfb1d..88b0543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeff=['accountcode','state','stateTime','status','unknown','address','exports','name'];(function(_0x5bfc42,_0x252536){var _0x4ccef2=function(_0x57fcc0){while(--_0x57fcc0){_0x5bfc42['push'](_0x5bfc42['shift']());}};_0x4ccef2(++_0x252536);}(_0xdeff,0xef));var _0xfdef=function(_0x912d27,_0x28e0e3){_0x912d27=_0x912d27-0x0;var _0x31b918=_0xdeff[_0x912d27];return _0x31b918;};'use strict';function Telephone(_0x817f0d){this['id']=_0x817f0d['id']||0x0;this[_0xfdef('0x0')]=_0x817f0d[_0xfdef('0x0')]||'';this[_0xfdef('0x1')]=_0x817f0d['accountcode']||'';this[_0xfdef('0x2')]='unknown';this[_0xfdef('0x3')]=0x0;this[_0xfdef('0x4')]=_0xfdef('0x5');this[_0xfdef('0x6')]='';}module[_0xfdef('0x7')]=Telephone;
\ No newline at end of file
+var _0x8c7d=['exports','name','accountcode','state','unknown','stateTime','status','address'];(function(_0x34ac94,_0x57b1ff){var _0x1733dc=function(_0x2fd9e2){while(--_0x2fd9e2){_0x34ac94['push'](_0x34ac94['shift']());}};_0x1733dc(++_0x57b1ff);}(_0x8c7d,0xe1));var _0xd8c7=function(_0x25d774,_0x101541){_0x25d774=_0x25d774-0x0;var _0x44a55b=_0x8c7d[_0x25d774];return _0x44a55b;};'use strict';function Telephone(_0x15da87){this['id']=_0x15da87['id']||0x0;this['name']=_0x15da87[_0xd8c7('0x0')]||'';this['accountcode']=_0x15da87[_0xd8c7('0x1')]||'';this[_0xd8c7('0x2')]=_0xd8c7('0x3');this[_0xd8c7('0x4')]=0x0;this[_0xd8c7('0x5')]=_0xd8c7('0x3');this[_0xd8c7('0x6')]='';}module[_0xd8c7('0x7')]=Telephone;
\ No newline at end of file
index 0d92eb7..3d1575b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x26a4f3,_0x612e07){var _0x56dac1=function(_0x4fd177){while(--_0x4fd177){_0x26a4f3['push'](_0x26a4f3['shift']());}};_0x56dac1(++_0x612e07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0xb553e,_0x4d1fe0){var _0x39ceaa=function(_0x16574c){while(--_0x16574c){_0xb553e['push'](_0xb553e['shift']());}};_0x39ceaa(++_0x4d1fe0);}(_0xb10b,0x12a));var _0xbb10=function(_0x4d08b8,_0x34c445){_0x4d08b8=_0x4d08b8-0x0;var _0x70214a=_0xb10b[_0x4d08b8];return _0x70214a;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index eb6329d..5142742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['exports','name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x203058,_0x357fcc){var _0x18f03c=function(_0x289712){while(--_0x289712){_0x203058['push'](_0x203058['shift']());}};_0x18f03c(++_0x357fcc);}(_0x2032,0xd9));var _0x2203=function(_0xf6ca3f,_0x125af6){_0xf6ca3f=_0xf6ca3f-0x0;var _0x519ae8=_0x2032[_0xf6ca3f];return _0x519ae8;};'use strict';function Trigger(_0x4d6c97){this['id']=_0x4d6c97['id']||0x0;this[_0x2203('0x0')]=_0x4d6c97[_0x2203('0x0')]||'';this[_0x2203('0x1')]=_0x4d6c97['channel']||_0x2203('0x2');this[_0x2203('0x3')]=_0x4d6c97['status']||![];this[_0x2203('0x4')]=_0x4d6c97[_0x2203('0x4')]||[];this[_0x2203('0x5')]=_0x4d6c97[_0x2203('0x5')]||[];this[_0x2203('0x6')]=_0x4d6c97[_0x2203('0x6')]||[];}module[_0x2203('0x7')]=Trigger;
\ No newline at end of file
+var _0x1a85=['status','AllConditions','AnyConditions','Actions','name','channel'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1a85,0x178));var _0x51a8=function(_0x3c5735,_0x1f4f53){_0x3c5735=_0x3c5735-0x0;var _0x2cd61d=_0x1a85[_0x3c5735];return _0x2cd61d;};'use strict';function Trigger(_0x4570ac){this['id']=_0x4570ac['id']||0x0;this['name']=_0x4570ac[_0x51a8('0x0')]||'';this[_0x51a8('0x1')]=_0x4570ac[_0x51a8('0x1')]||'voice';this['status']=_0x4570ac[_0x51a8('0x2')]||![];this[_0x51a8('0x3')]=_0x4570ac[_0x51a8('0x3')]||[];this['AnyConditions']=_0x4570ac[_0x51a8('0x4')]||[];this['Actions']=_0x4570ac[_0x51a8('0x5')]||[];}module['exports']=Trigger;
\ No newline at end of file
index 89a287d..e2e113b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee7b=['name','state','status','unknown','registry','indexOf','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','active'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xee7b,0x8f));var _0xbee7=function(_0x137ee5,_0x50f7a3){_0x137ee5=_0x137ee5-0x0;var _0x8aa971=_0xee7b[_0x137ee5];return _0x8aa971;};'use strict';function Trunk(_0xe385f4){this['id']=_0xe385f4['id']||0x0;this[_0xbee7('0x0')]=_0xe385f4[_0xbee7('0x0')]||![];this['name']=_0xe385f4[_0xbee7('0x1')]||'';this[_0xbee7('0x2')]='unknown';this['stateTime']=0x0;this[_0xbee7('0x3')]=_0xbee7('0x4');this[_0xbee7('0x5')]=_0xe385f4['registry']&&_0xe385f4['registry'][_0xbee7('0x6')](':')?_0xe385f4[_0xbee7('0x5')]['split'](':')[0x0]:'';this[_0xbee7('0x7')]='';this[_0xbee7('0x8')]='';this[_0xbee7('0x9')]='';this[_0xbee7('0xa')]='';this[_0xbee7('0xb')]='';this[_0xbee7('0xc')]=_0xbee7('0x4');this[_0xbee7('0xd')]='';this[_0xbee7('0xe')]='';this['defaultuser']=_0xe385f4[_0xbee7('0xf')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0x0d5f=['registrationtime','address','defaultuser','active','name','state','unknown','stateTime','status','registry','indexOf','split','host','port','domain','domainport','stateRegistry'];(function(_0x4ee096,_0x53f5d2){var _0x575f3c=function(_0xd6c82a){while(--_0xd6c82a){_0x4ee096['push'](_0x4ee096['shift']());}};_0x575f3c(++_0x53f5d2);}(_0x0d5f,0x9c));var _0xf0d5=function(_0x33f156,_0xe8306f){_0x33f156=_0x33f156-0x0;var _0x27b12e=_0x0d5f[_0x33f156];return _0x27b12e;};'use strict';function Trunk(_0xc5c73e){this['id']=_0xc5c73e['id']||0x0;this[_0xf0d5('0x0')]=_0xc5c73e[_0xf0d5('0x0')]||![];this[_0xf0d5('0x1')]=_0xc5c73e[_0xf0d5('0x1')]||'';this[_0xf0d5('0x2')]=_0xf0d5('0x3');this[_0xf0d5('0x4')]=0x0;this[_0xf0d5('0x5')]=_0xf0d5('0x3');this[_0xf0d5('0x6')]=_0xc5c73e[_0xf0d5('0x6')]&&_0xc5c73e[_0xf0d5('0x6')][_0xf0d5('0x7')](':')?_0xc5c73e[_0xf0d5('0x6')][_0xf0d5('0x8')](':')[0x0]:'';this[_0xf0d5('0x9')]='';this[_0xf0d5('0xa')]='';this[_0xf0d5('0xb')]='';this[_0xf0d5('0xc')]='';this['refresh']='';this[_0xf0d5('0xd')]=_0xf0d5('0x3');this[_0xf0d5('0xe')]='';this[_0xf0d5('0xf')]='';this[_0xf0d5('0x10')]=_0xc5c73e['defaultuser']||'';}module['exports']=Trunk;
\ No newline at end of file
index e1fd795..429b08f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ce=['exten','recordingFormat','mandatoryDisposition','exports'];(function(_0x488f41,_0x4a5ed0){var _0x3e4e72=function(_0x10068d){while(--_0x10068d){_0x488f41['push'](_0x488f41['shift']());}};_0x3e4e72(++_0x4a5ed0);}(_0x71ce,0x9c));var _0xe71c=function(_0x2e4726,_0x17111e){_0x2e4726=_0x2e4726-0x0;var _0x27988d=_0x71ce[_0x2e4726];return _0x27988d;};'use strict';function voiceExtension(_0x537ae4){this['id']=_0x537ae4['id']||0x0;this[_0xe71c('0x0')]=_0x537ae4[_0xe71c('0x0')]||'';this['recordingFormat']=_0x537ae4[_0xe71c('0x1')]||'none';this[_0xe71c('0x2')]=_0x537ae4[_0xe71c('0x2')]||![];}module[_0xe71c('0x3')]=voiceExtension;
\ No newline at end of file
+var _0x4985=['none','mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x209d9f,_0x57a933){var _0x5515cf=function(_0x5d9515){while(--_0x5d9515){_0x209d9f['push'](_0x209d9f['shift']());}};_0x5515cf(++_0x57a933);}(_0x4985,0x1c0));var _0x5498=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0x4985[_0x54d4fe];return _0x1ab5bb;};'use strict';function voiceExtension(_0xaec9b5){this['id']=_0xaec9b5['id']||0x0;this[_0x5498('0x0')]=_0xaec9b5['exten']||'';this[_0x5498('0x1')]=_0xaec9b5[_0x5498('0x1')]||_0x5498('0x2');this['mandatoryDisposition']=_0xaec9b5[_0x5498('0x3')]||![];}module[_0x5498('0x4')]=voiceExtension;
\ No newline at end of file
index 44488ad..1f8d033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f19=['outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','ringing','onhold','gsm','roundrobin','name','monitor_format','inbound','waiting','talking','answered','sumDuration','sumHoldTime','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit'];(function(_0x152b03,_0x2b427f){var _0x5a5d4b=function(_0x3037a3){while(--_0x3037a3){_0x152b03['push'](_0x152b03['shift']());}};_0x5a5d4b(++_0x2b427f);}(_0x4f19,0x97));var _0x94f1=function(_0x1d0494,_0x1e2b73){_0x1d0494=_0x1d0494-0x0;var _0x4bc8c7=_0x4f19[_0x1d0494];return _0x4bc8c7;};'use strict';var statusDesc=[_0x94f1('0x0'),_0x94f1('0x1'),_0x94f1('0x2'),_0x94f1('0x3'),_0x94f1('0x4'),'unavailable',_0x94f1('0x5'),'ringinuse',_0x94f1('0x6')];var monitorFormat={'wav':'wav','wav49':'wav49','gsm':_0x94f1('0x7')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x94f1('0x8')};function VoiceQueue(_0x48226f){this['id']=_0x48226f['id']||0x0;this['name']=_0x48226f[_0x94f1('0x9')]||'';this[_0x94f1('0xa')]=_0x48226f[_0x94f1('0xa')]||'';this['type']=_0x48226f['type']||_0x94f1('0xb');this[_0x94f1('0xc')]=0x0;this[_0x94f1('0xd')]=0x0;this['total']=0x0;this[_0x94f1('0xe')]=0x0;this[_0x94f1('0xf')]=0x0;this[_0x94f1('0x10')]=0x0;this['sumBillable']=0x0;this[_0x94f1('0x11')]=0x0;this[_0x94f1('0x12')]=0x0;this[_0x94f1('0x13')]=0x0;this[_0x94f1('0x14')]=0x0;this[_0x94f1('0x15')]=_0x48226f['acw']||![];this[_0x94f1('0x16')]=_0x48226f[_0x94f1('0x16')]||0xa;this[_0x94f1('0x17')]=_0x48226f[_0x94f1('0x17')]||'no';this[_0x94f1('0x18')]=!![];this[_0x94f1('0x19')]='';this[_0x94f1('0x1a')]=0x0;this[_0x94f1('0x1b')]=0x0;this[_0x94f1('0x1c')]=_0x48226f[_0x94f1('0x1c')]||null;this[_0x94f1('0x1d')]=_0x48226f[_0x94f1('0x1d')]?_0x48226f[_0x94f1('0x1d')]:null;this['dialActive']=_0x48226f[_0x94f1('0x1e')];this[_0x94f1('0x1f')]=_0x48226f['dialMethod']||_0x94f1('0x20');this[_0x94f1('0x21')]=_0x48226f['dialLimitChannel']||0x0;this[_0x94f1('0x22')]=_0x48226f[_0x94f1('0x22')]||0x0;this['dialPowerLevel']=_0x48226f['dialPowerLevel']||0x1;this[_0x94f1('0x23')]=_0x48226f[_0x94f1('0x23')]||_0x94f1('0x24');this[_0x94f1('0x25')]=_0x48226f['dialPredictiveOptimizationPercentage']||0.03;this[_0x94f1('0x26')]=_0x48226f[_0x94f1('0x26')]||0x258;this['dialOriginateCallerIdName']=_0x48226f[_0x94f1('0x27')]||_0x94f1('0x28');this['dialOriginateCallerIdNumber']=_0x48226f[_0x94f1('0x29')]||_0x94f1('0x28');this['dialOriginateTimeout']=_0x48226f['dialOriginateTimeout']||0x1e;this[_0x94f1('0x2a')]=_0x48226f[_0x94f1('0x2a')]||_0x94f1('0x2b');this[_0x94f1('0x2c')]=_0x48226f['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x48226f[_0x94f1('0x2d')]||undefined;this[_0x94f1('0x2e')]=_0x48226f['dialCongestionMaxRetry']||0x3;this[_0x94f1('0x2f')]=_0x48226f['dialCongestionRetryFrequency']||0x96;this[_0x94f1('0x30')]=_0x48226f[_0x94f1('0x30')]||0x3;this[_0x94f1('0x31')]=_0x48226f['dialBusyRetryFrequency']||0x96;this[_0x94f1('0x32')]=_0x48226f['dialNoAnswerMaxRetry']||0x3;this[_0x94f1('0x33')]=_0x48226f[_0x94f1('0x33')]||0x96;this[_0x94f1('0x34')]=_0x48226f[_0x94f1('0x34')]||0x3;this[_0x94f1('0x35')]=_0x48226f[_0x94f1('0x35')]||0x96;this[_0x94f1('0x36')]=_0x48226f[_0x94f1('0x36')]||0x3;this[_0x94f1('0x37')]=_0x48226f['dialDropRetryFrequency']||0x96;this[_0x94f1('0x38')]=_0x48226f[_0x94f1('0x38')]||0x3;this[_0x94f1('0x39')]=_0x48226f[_0x94f1('0x39')]||0x96;this[_0x94f1('0x3a')]=_0x48226f[_0x94f1('0x3a')]||0x3;this[_0x94f1('0x3b')]=_0x48226f[_0x94f1('0x3b')]||0x96;this[_0x94f1('0x3c')]=_0x48226f[_0x94f1('0x3c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x48226f['dialAgentRejectRetryFrequency']||0x96;this[_0x94f1('0x3d')]=_0x48226f['dialGlobalMaxRetry']||0x4;this[_0x94f1('0x3e')]=_0x48226f[_0x94f1('0x3e')]?_0x48226f[_0x94f1('0x3e')]:undefined;this[_0x94f1('0x3f')]=_0x48226f['TrunkBackup']?_0x48226f['TrunkBackup']:undefined;this[_0x94f1('0x40')]=_0x48226f[_0x94f1('0x40')]||undefined;this[_0x94f1('0x41')]=_0x48226f[_0x94f1('0x41')]?_0x48226f[_0x94f1('0x41')]:undefined;this[_0x94f1('0x42')]=_0x48226f[_0x94f1('0x42')]||'DESC';this[_0x94f1('0x43')]=_0x48226f[_0x94f1('0x43')]||undefined;this['dialCutDigit']=_0x48226f[_0x94f1('0x44')]||undefined;this[_0x94f1('0x45')]=strategy[_0x48226f[_0x94f1('0x45')]]||_0x94f1('0x46');this[_0x94f1('0x47')]=!![];this['dialAMDActive']=_0x48226f[_0x94f1('0x48')]||![];this[_0x94f1('0x49')]=_0x48226f[_0x94f1('0x49')];this['dialAMDGreeting']=_0x48226f['dialAMDGreeting'];this[_0x94f1('0x4a')]=_0x48226f['dialAMDAfterGreetingSilence'];this['dialAMDTotalAnalysisTime']=_0x48226f[_0x94f1('0x4b')];this[_0x94f1('0x4c')]=_0x48226f[_0x94f1('0x4c')];this['dialAMDBetweenWordsSilence']=_0x48226f[_0x94f1('0x4d')];this['dialAMDMaximumNumberOfWords']=_0x48226f['dialAMDMaximumNumberOfWords'];this[_0x94f1('0x4e')]=_0x48226f[_0x94f1('0x4e')];this[_0x94f1('0x4f')]=_0x48226f[_0x94f1('0x4f')];this[_0x94f1('0x50')]=0x0;this[_0x94f1('0x51')]=0x0;this[_0x94f1('0x52')]=_0x48226f[_0x94f1('0x52')];this[_0x94f1('0x53')]=0x0;this[_0x94f1('0x54')]=0x0;this[_0x94f1('0x55')]=0x0;this[_0x94f1('0x56')]=0x0;this['outboundCongestionCallsDay']=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x94f1('0x57')]=0x0;this[_0x94f1('0x58')]=0x0;this[_0x94f1('0x59')]=0x0;this[_0x94f1('0x5a')]=0x0;this[_0x94f1('0x5b')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x94f1('0x5c')]=0x0;this[_0x94f1('0x5d')]=0x0;this[_0x94f1('0x5e')]=undefined;this[_0x94f1('0x5f')]=undefined;this[_0x94f1('0x60')]=undefined;this[_0x94f1('0x61')]=1.05;this[_0x94f1('0x62')]=0x0;this[_0x94f1('0x63')]=0x0;this[_0x94f1('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x94f1('0x65')]=0x0;this[_0x94f1('0x66')]=0x0;this[_0x94f1('0x67')]=0x0;this[_0x94f1('0x68')]=0x0;this[_0x94f1('0x69')]=_0x48226f[_0x94f1('0x6a')]||0x14;this['predictiveIntervalMinThreshold']=_0x48226f[_0x94f1('0x6a')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x94f1('0x6b')]=0x0;this[_0x94f1('0x6c')]=0x1;this[_0x94f1('0x6d')]=0x0;this[_0x94f1('0x6e')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x94f1('0x6f')]=0x0;this['dialRecallMeTimeout']=_0x48226f[_0x94f1('0x70')]||0x1e;this[_0x94f1('0x71')]=_0x48226f[_0x94f1('0x71')]||![];this[_0x94f1('0x72')]=!!_0x48226f[_0x94f1('0x72')]||![];this['dialQueueProject2']=_0x48226f[_0x94f1('0x73')]||undefined;this[_0x94f1('0x74')]=_0x48226f['dialAgiAfterHangupClient']||![];this[_0x94f1('0x75')]=_0x48226f[_0x94f1('0x75')]||![];this[_0x94f1('0xa')]=monitorFormat[_0x48226f[_0x94f1('0xa')]]?monitorFormat[_0x48226f['monitor_format']]:undefined;this[_0x94f1('0x76')]=_0x48226f[_0x94f1('0x76')]||![];this[_0x94f1('0x77')]=_0x48226f[_0x94f1('0x77')]?_0x48226f[_0x94f1('0x77')]:undefined;}module[_0x94f1('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x9638=['exports','unknown','not_inuse','busy','unavailable','wav','wav49','gsm','rrmemory','name','monitor_format','type','inbound','total','answered','sumHoldTime','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDispositionPause'];(function(_0x310047,_0xcbc804){var _0x2daad2=function(_0x43ded0){while(--_0x43ded0){_0x310047['push'](_0x310047['shift']());}};_0x2daad2(++_0xcbc804);}(_0x9638,0x1d5));var _0x8963=function(_0x35387d,_0x1ba72f){_0x35387d=_0x35387d-0x0;var _0x3aba56=_0x9638[_0x35387d];return _0x3aba56;};'use strict';var statusDesc=[_0x8963('0x0'),_0x8963('0x1'),'inuse',_0x8963('0x2'),'invalid',_0x8963('0x3'),'ringing','ringinuse','onhold'];var monitorFormat={'wav':_0x8963('0x4'),'wav49':_0x8963('0x5'),'gsm':_0x8963('0x6')};var strategy={'rrmemory':_0x8963('0x7'),'roundrobin':'roundrobin'};function VoiceQueue(_0x48918c){this['id']=_0x48918c['id']||0x0;this[_0x8963('0x8')]=_0x48918c[_0x8963('0x8')]||'';this[_0x8963('0x9')]=_0x48918c[_0x8963('0x9')]||'';this[_0x8963('0xa')]=_0x48918c[_0x8963('0xa')]||_0x8963('0xb');this['waiting']=0x0;this['talking']=0x0;this[_0x8963('0xc')]=0x0;this[_0x8963('0xd')]=0x0;this['sumDuration']=0x0;this[_0x8963('0xe')]=0x0;this[_0x8963('0xf')]=0x0;this['unmanaged']=0x0;this[_0x8963('0x10')]=0x0;this[_0x8963('0x11')]=0x0;this[_0x8963('0x12')]=0x0;this[_0x8963('0x13')]=_0x48918c[_0x8963('0x13')]||![];this['acwTimeout']=_0x48918c[_0x8963('0x14')]||0xa;this[_0x8963('0x15')]=_0x48918c[_0x8963('0x15')]||'no';this['sendMessageOneNotActive']=!![];this['message']='';this[_0x8963('0x16')]=0x0;this['temp']=0x0;this[_0x8963('0x17')]=_0x48918c[_0x8963('0x17')]||null;this[_0x8963('0x18')]=_0x48918c['dialGlobalInterval']?_0x48918c[_0x8963('0x18')]:null;this['dialActive']=_0x48918c[_0x8963('0x19')];this[_0x8963('0x1a')]=_0x48918c['dialMethod']||'progressive';this[_0x8963('0x1b')]=_0x48918c[_0x8963('0x1b')]||0x0;this[_0x8963('0x1c')]=_0x48918c[_0x8963('0x1c')]||0x0;this[_0x8963('0x1d')]=_0x48918c[_0x8963('0x1d')]||0x1;this['dialPredictiveOptimization']=_0x48918c[_0x8963('0x1e')]||'dropRate';this[_0x8963('0x1f')]=_0x48918c[_0x8963('0x1f')]||0.03;this[_0x8963('0x20')]=_0x48918c[_0x8963('0x20')]||0x258;this[_0x8963('0x21')]=_0x48918c[_0x8963('0x21')]||'anonymous';this[_0x8963('0x22')]=_0x48918c[_0x8963('0x22')]||'anonymous';this[_0x8963('0x23')]=_0x48918c['dialOriginateTimeout']||0x1e;this['dialQueueOptions']=_0x48918c[_0x8963('0x24')]||_0x8963('0x25');this[_0x8963('0x26')]=_0x48918c[_0x8963('0x26')]||0x3;this[_0x8963('0x27')]=_0x48918c['dialQueueProject']||undefined;this[_0x8963('0x28')]=_0x48918c[_0x8963('0x28')]||0x3;this['dialCongestionRetryFrequency']=_0x48918c[_0x8963('0x29')]||0x96;this[_0x8963('0x2a')]=_0x48918c['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x48918c[_0x8963('0x2b')]||0x96;this[_0x8963('0x2c')]=_0x48918c[_0x8963('0x2c')]||0x3;this[_0x8963('0x2d')]=_0x48918c['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x48918c[_0x8963('0x2e')]||0x3;this[_0x8963('0x2f')]=_0x48918c['dialNoSuchNumberRetryFrequency']||0x96;this[_0x8963('0x30')]=_0x48918c[_0x8963('0x30')]||0x3;this['dialDropRetryFrequency']=_0x48918c[_0x8963('0x31')]||0x96;this[_0x8963('0x32')]=_0x48918c['dialAbandonedMaxRetry']||0x3;this[_0x8963('0x33')]=_0x48918c[_0x8963('0x33')]||0x96;this[_0x8963('0x34')]=_0x48918c['dialMachineMaxRetry']||0x3;this[_0x8963('0x35')]=_0x48918c['dialMachineRetryFrequency']||0x96;this[_0x8963('0x36')]=_0x48918c[_0x8963('0x36')]||0x3;this[_0x8963('0x37')]=_0x48918c[_0x8963('0x37')]||0x96;this['dialGlobalMaxRetry']=_0x48918c[_0x8963('0x38')]||0x4;this[_0x8963('0x39')]=_0x48918c[_0x8963('0x39')]?_0x48918c[_0x8963('0x39')]:undefined;this[_0x8963('0x3a')]=_0x48918c['TrunkBackup']?_0x48918c[_0x8963('0x3a')]:undefined;this[_0x8963('0x3b')]=_0x48918c['dialPrefix']||undefined;this[_0x8963('0x3c')]=_0x48918c['Interval']?_0x48918c[_0x8963('0x3c')]:undefined;this[_0x8963('0x3d')]=_0x48918c[_0x8963('0x3d')]||_0x8963('0x3e');this[_0x8963('0x3f')]=_0x48918c[_0x8963('0x3f')]||undefined;this[_0x8963('0x40')]=_0x48918c[_0x8963('0x40')]||undefined;this[_0x8963('0x41')]=strategy[_0x48918c[_0x8963('0x41')]]||_0x8963('0x7');this[_0x8963('0x42')]=!![];this['dialAMDActive']=_0x48918c[_0x8963('0x43')]||![];this[_0x8963('0x44')]=_0x48918c['dialAMDInitialSilence'];this[_0x8963('0x45')]=_0x48918c[_0x8963('0x45')];this['dialAMDAfterGreetingSilence']=_0x48918c[_0x8963('0x46')];this['dialAMDTotalAnalysisTime']=_0x48918c[_0x8963('0x47')];this['dialAMDMinWordLength']=_0x48918c[_0x8963('0x48')];this[_0x8963('0x49')]=_0x48918c[_0x8963('0x49')];this['dialAMDMaximumNumberOfWords']=_0x48918c[_0x8963('0x4a')];this[_0x8963('0x4b')]=_0x48918c[_0x8963('0x4b')];this['dialAMDMaximumWordLength']=_0x48918c[_0x8963('0x4c')];this[_0x8963('0x4d')]=0x0;this[_0x8963('0x4e')]=0x0;this[_0x8963('0x4f')]=_0x48918c[_0x8963('0x4f')];this[_0x8963('0x50')]=0x0;this[_0x8963('0x51')]=0x0;this[_0x8963('0x52')]=0x0;this[_0x8963('0x53')]=0x0;this[_0x8963('0x54')]=0x0;this[_0x8963('0x55')]=0x0;this[_0x8963('0x56')]=0x0;this[_0x8963('0x57')]=0x0;this[_0x8963('0x58')]=0x0;this[_0x8963('0x59')]=0x0;this[_0x8963('0x5a')]=0x0;this[_0x8963('0x5b')]=0x0;this[_0x8963('0x5c')]=0x0;this[_0x8963('0x5d')]=0x0;this['startProgressive']=undefined;this[_0x8963('0x5e')]=undefined;this[_0x8963('0x5f')]=undefined;this[_0x8963('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x8963('0x61')]=0x0;this[_0x8963('0x62')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x8963('0x63')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x8963('0x64')]=0x0;this[_0x8963('0x65')]=0x0;this[_0x8963('0x66')]=_0x48918c['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x8963('0x67')]=_0x48918c['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x8963('0x68')]=0x0;this[_0x8963('0x69')]=0x0;this[_0x8963('0x6a')]=0x1;this[_0x8963('0x6b')]=0x0;this['erlangCallToSecond']=0x0;this[_0x8963('0x6c')]=0x0;this['erlangBusyFactor']=0x0;this[_0x8963('0x6d')]=_0x48918c['dialRecallMeTimeout']||0x1e;this[_0x8963('0x6e')]=_0x48918c[_0x8963('0x6e')]||![];this[_0x8963('0x6f')]=!!_0x48918c[_0x8963('0x6f')]||![];this['dialQueueProject2']=_0x48918c[_0x8963('0x70')]||undefined;this[_0x8963('0x71')]=_0x48918c['dialAgiAfterHangupClient']||![];this[_0x8963('0x72')]=_0x48918c[_0x8963('0x72')]||![];this['monitor_format']=monitorFormat[_0x48918c[_0x8963('0x9')]]?monitorFormat[_0x48918c[_0x8963('0x9')]]:undefined;this['mandatoryDisposition']=_0x48918c['mandatoryDisposition']||![];this['mandatoryDispositionPause']=_0x48918c['mandatoryDispositionPause']?_0x48918c[_0x8963('0x73')]:undefined;}module[_0x8963('0x74')]=VoiceQueue;
\ No newline at end of file
index 522a1da..f6c707d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ee=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x2c8d85,_0x590fef){var _0x277ef4=function(_0x7c7a91){while(--_0x7c7a91){_0x2c8d85['push'](_0x2c8d85['shift']());}};_0x277ef4(++_0x590fef);}(_0x56ee,0x1ad));var _0xe56e=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x56ee[_0x487b0c];return _0x1adbdc;};'use strict';function VtigerAccount(_0x5e9810){this['id']=_0x5e9810['id']||0x0;this[_0xe56e('0x0')]=_0x5e9810[_0xe56e('0x0')]||'';this[_0xe56e('0x1')]=_0x5e9810['username']||'';this[_0xe56e('0x2')]=_0x5e9810[_0xe56e('0x2')]||'';this[_0xe56e('0x3')]=_0x5e9810[_0xe56e('0x3')]||'';this[_0xe56e('0x4')]=_0x5e9810[_0xe56e('0x4')]||'';this[_0xe56e('0x5')]=_0x5e9810[_0xe56e('0x5')]||{};}module[_0xe56e('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0xbcd4=['accessKey','remoteUri','serverUrl','name'];(function(_0x4ffffb,_0x30dfaa){var _0x1d5bcc=function(_0xd94636){while(--_0xd94636){_0x4ffffb['push'](_0x4ffffb['shift']());}};_0x1d5bcc(++_0x30dfaa);}(_0xbcd4,0x1cb));var _0x4bcd=function(_0x62cbbc,_0x5eb0a7){_0x62cbbc=_0x62cbbc-0x0;var _0x37e748=_0xbcd4[_0x62cbbc];return _0x37e748;};'use strict';function VtigerAccount(_0x8c6139){this['id']=_0x8c6139['id']||0x0;this[_0x4bcd('0x0')]=_0x8c6139[_0x4bcd('0x0')]||'';this['username']=_0x8c6139['username']||'';this[_0x4bcd('0x1')]=_0x8c6139['accessKey']||'';this[_0x4bcd('0x2')]=_0x8c6139[_0x4bcd('0x2')]||'';this[_0x4bcd('0x3')]=_0x8c6139['serverUrl']||'';this['Configurations']=_0x8c6139['Configurations']||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index 8e2be24..8e272ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd768=['username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name'];(function(_0x2132a3,_0x4639e9){var _0x21890c=function(_0x34b73d){while(--_0x34b73d){_0x2132a3['push'](_0x2132a3['shift']());}};_0x21890c(++_0x4639e9);}(_0xd768,0x10d));var _0x8d76=function(_0x210718,_0x247b55){_0x210718=_0x210718-0x0;var _0x541bfc=_0xd768[_0x210718];return _0x541bfc;};'use strict';function ZendeskAccount(_0x576115){this['id']=_0x576115['id']||0x0;this[_0x8d76('0x0')]=_0x576115['name']||'';this[_0x8d76('0x1')]=_0x576115['username']||'';this[_0x8d76('0x2')]=_0x576115[_0x8d76('0x2')]||'';this[_0x8d76('0x3')]=_0x576115[_0x8d76('0x3')]||'';this[_0x8d76('0x4')]=_0x576115[_0x8d76('0x4')]||'';this[_0x8d76('0x5')]=_0x576115[_0x8d76('0x5')]||'';this[_0x8d76('0x6')]=_0x576115[_0x8d76('0x6')]||_0x8d76('0x7');this[_0x8d76('0x8')]=_0x576115[_0x8d76('0x8')]||'';this[_0x8d76('0x9')]=_0x576115[_0x8d76('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0x3b01=['Configurations','exports','name','username','password','token','remoteUri','integrationTab','serverUrl'];(function(_0x1f6025,_0x949d6f){var _0x439fd0=function(_0x1f99ed){while(--_0x1f99ed){_0x1f6025['push'](_0x1f6025['shift']());}};_0x439fd0(++_0x949d6f);}(_0x3b01,0x1f1));var _0x13b0=function(_0xcc1375,_0x22ffcc){_0xcc1375=_0xcc1375-0x0;var _0xe40b5d=_0x3b01[_0xcc1375];return _0xe40b5d;};'use strict';function ZendeskAccount(_0x19a258){this['id']=_0x19a258['id']||0x0;this['name']=_0x19a258[_0x13b0('0x0')]||'';this[_0x13b0('0x1')]=_0x19a258[_0x13b0('0x1')]||'';this[_0x13b0('0x2')]=_0x19a258[_0x13b0('0x2')]||'';this['token']=_0x19a258[_0x13b0('0x3')]||'';this[_0x13b0('0x4')]=_0x19a258[_0x13b0('0x4')]||'';this['authType']=_0x19a258['authType']||'';this['type']=_0x19a258['type']||_0x13b0('0x5');this[_0x13b0('0x6')]=_0x19a258['serverUrl']||'';this[_0x13b0('0x7')]=_0x19a258[_0x13b0('0x7')]||{};}module[_0x13b0('0x8')]=ZendeskAccount;
\ No newline at end of file
index 2efef08..8d40f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bdf=['zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host'];(function(_0x326ae8,_0xbc3101){var _0x4d3e8c=function(_0x2fe6dd){while(--_0x2fe6dd){_0x326ae8['push'](_0x326ae8['shift']());}};_0x4d3e8c(++_0xbc3101);}(_0x7bdf,0x8c));var _0xf7bd=function(_0x9b2cf1,_0x397d8d){_0x9b2cf1=_0x9b2cf1-0x0;var _0xe25021=_0x7bdf[_0x9b2cf1];return _0xe25021;};'use strict';function ZohoAccount(_0x514c07){this['id']=_0x514c07['id']||0x0;this['name']=_0x514c07[_0xf7bd('0x0')]||'';this[_0xf7bd('0x1')]=_0x514c07[_0xf7bd('0x1')]||'';this[_0xf7bd('0x2')]=_0x514c07[_0xf7bd('0x2')]||'';this[_0xf7bd('0x3')]=_0x514c07[_0xf7bd('0x3')]||'';this[_0xf7bd('0x4')]=_0x514c07[_0xf7bd('0x4')]||'';this[_0xf7bd('0x5')]=_0x514c07[_0xf7bd('0x5')]||'';this[_0xf7bd('0x6')]=_0x514c07['serverUrl']||'';this[_0xf7bd('0x7')]=_0x514c07[_0xf7bd('0x7')]||'';this[_0xf7bd('0x8')]=_0x514c07['refreshToken']||'';this[_0xf7bd('0x9')]=_0x514c07[_0xf7bd('0x9')]||{};}module[_0xf7bd('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0xe5f6=['name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x1dd532,_0x36e81c){var _0x3732aa=function(_0x19d50a){while(--_0x19d50a){_0x1dd532['push'](_0x1dd532['shift']());}};_0x3732aa(++_0x36e81c);}(_0xe5f6,0x1a4));var _0x6e5f=function(_0x564607,_0xbb1e16){_0x564607=_0x564607-0x0;var _0xd02606=_0xe5f6[_0x564607];return _0xd02606;};'use strict';function ZohoAccount(_0x31683d){this['id']=_0x31683d['id']||0x0;this['name']=_0x31683d[_0x6e5f('0x0')]||'';this[_0x6e5f('0x1')]=_0x31683d['description']||'';this[_0x6e5f('0x2')]=_0x31683d['host']||'';this[_0x6e5f('0x3')]=_0x31683d[_0x6e5f('0x3')]||'';this['clientId']=_0x31683d[_0x6e5f('0x4')]||'';this[_0x6e5f('0x5')]=_0x31683d[_0x6e5f('0x5')]||'';this[_0x6e5f('0x6')]=_0x31683d[_0x6e5f('0x6')]||'';this[_0x6e5f('0x7')]=_0x31683d[_0x6e5f('0x7')]||'';this[_0x6e5f('0x8')]=_0x31683d['refreshToken']||'';this[_0x6e5f('0x9')]=_0x31683d[_0x6e5f('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index d3e3ed1..a6f8361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa095=['countabandonedretry','countmachineretry','countagentrejectretry','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','util','lodash','moment','isNil','string','uniqueid','idContact','queue','type','campaigntype','dialAnswer','Agent','name','channelAgent','membername','format','calleridname','Contact','firstName','lastName','active','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x4ea757,_0x3f9fca){var _0x15458b=function(_0x1165ac){while(--_0x1165ac){_0x4ea757['push'](_0x4ea757['shift']());}};_0x15458b(++_0x3f9fca);}(_0xa095,0x13c));var _0x5a09=function(_0x31df6f,_0x380e73){_0x31df6f=_0x31df6f-0x0;var _0x31e353=_0xa095[_0x31df6f];return _0x31e353;};'use strict';var util=require(_0x5a09('0x0'));var _=require(_0x5a09('0x1'));var moment=require(_0x5a09('0x2'));function checkNameSurname(_0x2daf00,_0x31eef6,_0x3e73d5){var _0x184266='';if(!_[_0x5a09('0x3')](_0x31eef6)&&_0x5a09('0x4')===typeof _0x31eef6){_0x184266+=_0x31eef6;}if(!_[_0x5a09('0x3')](_0x3e73d5)&&_0x5a09('0x4')===typeof _0x3e73d5){_0x184266+='\x20'+_0x3e73d5;}if(_0x184266!==''){return _0x184266;}return _0x2daf00;}function Action(_0x1d7706,_0x6460cc,_0x3e95e2,_0x33e780,_0x153f91){this[_0x5a09('0x5')]=_0x3e95e2||undefined;this[_0x5a09('0x6')]=_0x1d7706['id'];this[_0x5a09('0x7')]=_0x6460cc['name'];this[_0x5a09('0x8')]=_0x6460cc[_0x5a09('0x8')];this[_0x5a09('0x9')]=_0x5a09('0x7');this[_0x5a09('0xa')]=![];this['membername']=_[_0x5a09('0x3')](_0x1d7706[_0x5a09('0xb')])?undefined:_0x1d7706['Agent'][_0x5a09('0xc')];this[_0x5a09('0xd')]=this[_0x5a09('0xe')]?util[_0x5a09('0xf')]('SIP/%s',this[_0x5a09('0xe')]):_0x33e780||undefined;this[_0x5a09('0x10')]=checkNameSurname(_0x1d7706['Contact']['phone'],_0x1d7706[_0x5a09('0x11')][_0x5a09('0x12')],_0x1d7706[_0x5a09('0x11')][_0x5a09('0x13')]);this[_0x5a09('0x14')]=_0x1d7706[_0x5a09('0x14')]||![];this['calleridnum']=_0x1d7706[_0x5a09('0x11')][_0x5a09('0x15')];this[_0x5a09('0x16')]=_0x1d7706[_0x5a09('0x16')];this[_0x5a09('0x17')]=_0x1d7706[_0x5a09('0x17')]||0x0;this[_0x5a09('0x18')]=_0x1d7706[_0x5a09('0x18')]||0x0;this[_0x5a09('0x19')]=_0x1d7706['countnoanswerretry']||0x0;this['countglobal']=(_0x1d7706[_0x5a09('0x17')]||0x0)+(_0x1d7706[_0x5a09('0x18')]||0x0)+(_0x1d7706['countnoanswerretry']||0x0)+(_0x1d7706[_0x5a09('0x1a')]||0x0)+(_0x1d7706[_0x5a09('0x1b')]||0x0)+(_0x1d7706[_0x5a09('0x1c')]||0x0)+(_0x1d7706[_0x5a09('0x1d')]||0x0)+(_0x1d7706[_0x5a09('0x1e')]||0x0);this[_0x5a09('0x1a')]=_0x1d7706[_0x5a09('0x1a')]||0x0;this[_0x5a09('0x1b')]=_0x1d7706[_0x5a09('0x1b')]||0x0;this['countabandonedretry']=_0x1d7706[_0x5a09('0x1c')]||0x0;this[_0x5a09('0x1d')]=_0x1d7706[_0x5a09('0x1d')]||0x0;this[_0x5a09('0x1e')]=_0x1d7706[_0x5a09('0x1e')]||0x0;this['callback']=_0x1d7706['callback'];this[_0x5a09('0x1f')]=_0x1d7706[_0x5a09('0x1f')];this[_0x5a09('0x20')]=_0x1d7706[_0x5a09('0x20')];this[_0x5a09('0x21')]=_0x1d7706['recallme'];this[_0x5a09('0x22')]=_0x1d7706['ContactId'];this[_0x5a09('0x23')]=_0x1d7706[_0x5a09('0x23')];this['UserId']=_[_0x5a09('0x3')](_0x1d7706[_0x5a09('0xb')])?_0x1d7706[_0x5a09('0x24')]:_0x1d7706['Agent']['id'];this[_0x5a09('0x25')]=_0x1d7706['VoiceQueueId'];this['originatecalleridnum']='';this[_0x5a09('0x26')]='';}Action[_0x5a09('0x27')][_0x5a09('0x28')]=function(){return util[_0x5a09('0xf')](_0x5a09('0x29'),this['calleridname'],this[_0x5a09('0x2a')]);};module['exports']=Action;
\ No newline at end of file
+var _0x999a=['countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','prototype','number','util','lodash','moment','isNil','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','firstName','active','calleridnum','phone','scheduledat','countbusyretry','countnoanswerretry','countglobal'];(function(_0x5c03a4,_0x38d38e){var _0x1b5c9c=function(_0x73e85){while(--_0x73e85){_0x5c03a4['push'](_0x5c03a4['shift']());}};_0x1b5c9c(++_0x38d38e);}(_0x999a,0x1de));var _0xa999=function(_0x31e71e,_0x2c5b91){_0x31e71e=_0x31e71e-0x0;var _0x1f427f=_0x999a[_0x31e71e];return _0x1f427f;};'use strict';var util=require(_0xa999('0x0'));var _=require(_0xa999('0x1'));var moment=require(_0xa999('0x2'));function checkNameSurname(_0x597c3a,_0x694ab0,_0x32d41a){var _0x1dd829='';if(!_['isNil'](_0x694ab0)&&'string'===typeof _0x694ab0){_0x1dd829+=_0x694ab0;}if(!_[_0xa999('0x3')](_0x32d41a)&&'string'===typeof _0x32d41a){_0x1dd829+='\x20'+_0x32d41a;}if(_0x1dd829!==''){return _0x1dd829;}return _0x597c3a;}function Action(_0x5052b5,_0x409c20,_0x4afca7,_0x33e207,_0xf0fb5){this[_0xa999('0x4')]=_0x4afca7||undefined;this[_0xa999('0x5')]=_0x5052b5['id'];this[_0xa999('0x6')]=_0x409c20[_0xa999('0x7')];this['type']=_0x409c20[_0xa999('0x8')];this[_0xa999('0x9')]=_0xa999('0x6');this[_0xa999('0xa')]=![];this[_0xa999('0xb')]=_[_0xa999('0x3')](_0x5052b5[_0xa999('0xc')])?undefined:_0x5052b5[_0xa999('0xc')][_0xa999('0x7')];this[_0xa999('0xd')]=this[_0xa999('0xb')]?util[_0xa999('0xe')](_0xa999('0xf'),this[_0xa999('0xb')]):_0x33e207||undefined;this[_0xa999('0x10')]=checkNameSurname(_0x5052b5[_0xa999('0x11')]['phone'],_0x5052b5[_0xa999('0x11')][_0xa999('0x12')],_0x5052b5['Contact']['lastName']);this[_0xa999('0x13')]=_0x5052b5[_0xa999('0x13')]||![];this[_0xa999('0x14')]=_0x5052b5['Contact'][_0xa999('0x15')];this[_0xa999('0x16')]=_0x5052b5[_0xa999('0x16')];this[_0xa999('0x17')]=_0x5052b5[_0xa999('0x17')]||0x0;this['countcongestionretry']=_0x5052b5['countcongestionretry']||0x0;this[_0xa999('0x18')]=_0x5052b5[_0xa999('0x18')]||0x0;this[_0xa999('0x19')]=(_0x5052b5[_0xa999('0x17')]||0x0)+(_0x5052b5[_0xa999('0x1a')]||0x0)+(_0x5052b5[_0xa999('0x18')]||0x0)+(_0x5052b5[_0xa999('0x1b')]||0x0)+(_0x5052b5[_0xa999('0x1c')]||0x0)+(_0x5052b5[_0xa999('0x1d')]||0x0)+(_0x5052b5[_0xa999('0x1e')]||0x0)+(_0x5052b5[_0xa999('0x1f')]||0x0);this[_0xa999('0x1b')]=_0x5052b5[_0xa999('0x1b')]||0x0;this[_0xa999('0x1c')]=_0x5052b5[_0xa999('0x1c')]||0x0;this[_0xa999('0x1d')]=_0x5052b5[_0xa999('0x1d')]||0x0;this[_0xa999('0x1e')]=_0x5052b5[_0xa999('0x1e')]||0x0;this[_0xa999('0x1f')]=_0x5052b5['countagentrejectretry']||0x0;this[_0xa999('0x20')]=_0x5052b5[_0xa999('0x20')];this[_0xa999('0x21')]=_0x5052b5[_0xa999('0x21')];this[_0xa999('0x22')]=_0x5052b5['callbackat'];this[_0xa999('0x23')]=_0x5052b5[_0xa999('0x23')];this[_0xa999('0x24')]=_0x5052b5[_0xa999('0x24')];this[_0xa999('0x25')]=_0x5052b5['ListId'];this[_0xa999('0x26')]=_[_0xa999('0x3')](_0x5052b5['Agent'])?_0x5052b5[_0xa999('0x26')]:_0x5052b5[_0xa999('0xc')]['id'];this[_0xa999('0x27')]=_0x5052b5[_0xa999('0x27')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0xa999('0x28')]['getCaller']=function(){return util[_0xa999('0xe')]('\x22%s\x22\x20<%s>',this[_0xa999('0x10')],this[_0xa999('0x29')]);};module['exports']=Action;
\ No newline at end of file
index 42356a9..b9b276c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['Trunk','name','callerid','Interval','format','voice:queue:%s','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice_queue_channel:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','logger','\x20is\x20disactive','prototype','syncCampaigns','hasOwnProperty','preview','booked','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','info','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','createCustomerFinal','IsNotLoggedIn','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','activeContact','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','buildAcw','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','linkedid','BUSY','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','unlockAgent','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','countagentrejectretry','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','loggerError','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','isNil','Contact','phone','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','active','SIP/%s','unmonitored','execRun','unlockContact','getContactPreview','isValid','checkIsBlackList','Contact.phone','checkInBlack','Call\x20unsuccessful','validateContact','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','getCallerId','dialOriginateCallerIdName','getCallerIdRandom','dialRandomLastDigitCallerIdNumber','extractCalleridName','extractCalleridNumber','addVariables','merge','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','lookAgent','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','starttime','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','filterKey','keys','variable','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./util/util','redis','defaults','localhost','enqueue','tail','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','total','unmanaged','loggedInDb','dialMethod','dialOriginateCallerIdNumber','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangBusyFactor','startPredictive'];(function(_0x188cc8,_0xd39746){var _0x4cb155=function(_0x2d2a6c){while(--_0x2d2a6c){_0x188cc8['push'](_0x188cc8['shift']());}};_0x4cb155(++_0xd39746);}(_0x3435,0xfa));var _0x5343=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x3435[_0x1a0daa];return _0x1dbe15;};'use strict';var util=require(_0x5343('0x0'));var _=require(_0x5343('0x1'));var BPromise=require(_0x5343('0x2'));var uuid=require(_0x5343('0x3'));var moment=require(_0x5343('0x4'));var md5=require(_0x5343('0x5'));var Redis=require('ioredis');var config=require(_0x5343('0x6'));var logger=require(_0x5343('0x7'))('preview');var loggerAction=require('../../../config/logger')(_0x5343('0x8'));var ami=require(_0x5343('0x9'));var rpcDb=require('./rpcDb');var Action=require('./action');var ut=require(_0x5343('0xa'));config[_0x5343('0xb')]=_[_0x5343('0xc')](config[_0x5343('0xb')],{'host':_0x5343('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5343('0xb')]));var Sequence=function(){};Sequence['prototype'][_0x5343('0xe')]=function(_0x328e54){this[_0x5343('0xf')]=this[_0x5343('0xf')]?this[_0x5343('0xf')]['finally'](_0x328e54):_0x328e54();};function Preview(_0x42a94a){this[_0x5343('0x10')]=new Sequence();this[_0x5343('0x11')]=_0x42a94a['voiceQueues'];this[_0x5343('0x12')]=_0x42a94a['trunks'];this[_0x5343('0x13')]={};this[_0x5343('0x14')]=_0x42a94a['agents'];this[_0x5343('0x15')]=0x0;ami['on']('originateresponse',this[_0x5343('0x16')][_0x5343('0x17')](this));ami['on'](_0x5343('0x18'),this[_0x5343('0x19')]['bind'](this));ami['on'](_0x5343('0x1a'),this[_0x5343('0x1b')][_0x5343('0x17')](this));ami['on'](_0x5343('0x1c'),this[_0x5343('0x1d')][_0x5343('0x17')](this));ami['on'](_0x5343('0x1e'),this[_0x5343('0x1f')]['bind'](this));ami['on'](_0x5343('0x20'),this[_0x5343('0x21')][_0x5343('0x17')](this));ami['on']('attendedtransfer',this[_0x5343('0x22')][_0x5343('0x17')](this));ami['on'](_0x5343('0x23'),this[_0x5343('0x24')][_0x5343('0x17')](this));this[_0x5343('0x25')](this[_0x5343('0x11')]);}function emit(_0x40ba38,_0x35d41d,_0x4796ae){io['to'](_0x40ba38)[_0x5343('0x26')](_0x35d41d,_0x4796ae);}function emitCampaignPreview(_0x3da777){if(_0x3da777[_0x5343('0x27')]===_0x5343('0x28')){var _0xd95a5b={'id':_0x3da777['id'],'name':_0x3da777['name'],'strategy':_0x3da777[_0x5343('0x29')],'answered':_0x3da777[_0x5343('0x2a')],'available':_0x3da777[_0x5343('0x2b')],'loggedIn':_0x3da777[_0x5343('0x2c')],'pTalking':_0x3da777[_0x5343('0x2d')],'sumBillable':_0x3da777['sumBillable'],'sumDuration':_0x3da777[_0x5343('0x2e')],'sumHoldTime':_0x3da777[_0x5343('0x2f')]||0x0,'talking':_0x3da777['talking'],'total':_0x3da777[_0x5343('0x30')],'type':_0x3da777[_0x5343('0x27')],'unmanaged':_0x3da777[_0x5343('0x31')],'abandoned':_0x3da777['abandoned'],'waiting':_0x3da777['waiting'],'loggedInDb':_0x3da777[_0x5343('0x32')],'dialActive':_0x3da777['dialActive'],'dialMethod':_0x3da777[_0x5343('0x33')],'dialOriginateCallerIdName':_0x3da777['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x3da777[_0x5343('0x34')],'dialOriginateTimeout':_0x3da777['dialOriginateTimeout'],'dialPrefix':_0x3da777['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3da777[_0x5343('0x35')],'outboundAnswerCallsDay':_0x3da777[_0x5343('0x36')],'outboundBlacklistCallsDay':_0x3da777['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x3da777['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x3da777[_0x5343('0x37')],'outboundDropCallsDayACS':_0x3da777['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3da777[_0x5343('0x38')],'outboundDropCallsDayTimeout':_0x3da777['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x3da777['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3da777[_0x5343('0x39')],'outboundOriginateFailureCallsDay':_0x3da777['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x3da777['outboundReCallsDay'],'outboundRejectCallsDay':_0x3da777[_0x5343('0x3a')],'outboundUnknownCallsDay':_0x3da777[_0x5343('0x3b')],'outboundAbandonedCallsDay':_0x3da777[_0x5343('0x3c')],'predictiveIntervalAnsweredCalls':_0x3da777[_0x5343('0x3d')],'predictiveIntervalAvgHoldtime':_0x3da777['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x3da777['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x3da777[_0x5343('0x3e')],'predictiveIntervalDroppedCallsTimeout':_0x3da777[_0x5343('0x3f')],'predictiveIntervalErlangCalls':_0x3da777[_0x5343('0x40')],'predictiveIntervalErlangCallsDroppedCalls':_0x3da777[_0x5343('0x41')],'predictiveIntervalHitRate':_0x3da777[_0x5343('0x42')],'predictiveIntervalMultiplicativeFactor':_0x3da777[_0x5343('0x43')],'predictiveIntervalPauses':_0x3da777[_0x5343('0x44')],'predictiveIntervalAvailable':_0x3da777[_0x5343('0x45')],'predictiveIntervalTotalCalls':_0x3da777[_0x5343('0x46')],'message':_0x3da777[_0x5343('0x47')],'originated':_0x3da777[_0x5343('0x48')],'erlangCalls':_0x3da777[_0x5343('0x49')],'erlangCallToSecond':_0x3da777['erlangCallToSecond'],'erlangAbandonmentRate':_0x3da777['erlangAbandonmentRate'],'erlangBusyFactor':_0x3da777[_0x5343('0x4a')],'startPredictive':_0x3da777[_0x5343('0x4b')],'startProgressive':_0x3da777['startProgressive']};if(_0x3da777[_0x5343('0x4c')]){_0xd95a5b['Trunk']={'id':_0x3da777[_0x5343('0x4c')]['id'],'name':_0x3da777[_0x5343('0x4c')][_0x5343('0x4d')],'active':_0x3da777[_0x5343('0x4c')]['active'],'callerid':_0x3da777['Trunk'][_0x5343('0x4e')]};}if(_0x3da777['Interval']){_0xd95a5b[_0x5343('0x4f')]={'id':_0x3da777[_0x5343('0x4f')]['id'],'name':_0x3da777['Interval'][_0x5343('0x4d')]};}var _0x504af6=md5(JSON['stringify'](_0xd95a5b));if(_0x3da777[_0x5343('0x5')]!==_0x504af6){_0x3da777[_0x5343('0x5')]=_0x504af6;emit(util[_0x5343('0x50')](_0x5343('0x51'),_0xd95a5b['name']),'voice_queue:save',_0xd95a5b);}}}function emitVoiceQueueChannelRemove(_0x5a0663){logger['info'](_0x5343('0x52'),JSON[_0x5343('0x53')](_0x5a0663));emit(util[_0x5343('0x50')](_0x5343('0x51'),_0x5a0663[_0x5343('0x4d')]),_0x5343('0x54'),_0x5a0663);io[_0x5343('0x26')]('voice_queue_presence:remove',_0x5a0663);}function notSendMessagesQueue(_0x42c8a5){if(_0x42c8a5['sendMessageOneNotActive']){if(_0x42c8a5[_0x5343('0x48')]===0x0&&_0x42c8a5[_0x5343('0x2d')]===0x0){_0x42c8a5[_0x5343('0x55')]=![];_0x42c8a5[_0x5343('0x2b')]=0x0;_0x42c8a5[_0x5343('0x56')]=0x0;_0x42c8a5[_0x5343('0x47')]=_0x5343('0x57');ut['logger'](_0x5343('0x58'),_0x42c8a5['name']+_0x5343('0x59'));}else{_0x42c8a5[_0x5343('0x47')]=_0x5343('0x5a');ut[_0x5343('0x5b')](_0x5343('0x58'),_0x42c8a5[_0x5343('0x4d')]+_0x5343('0x5c'));}emitCampaignPreview(_0x42c8a5);}}Preview['prototype'][_0x5343('0x25')]=function(){var _0x3d9066=this;setInterval(function(){_0x3d9066['syncCampaigns']();},0x7cf);};Preview[_0x5343('0x5d')][_0x5343('0x5e')]=function(){var _0x4c576d=this['campaignsPreview'];this[_0x5343('0x15')]+=0x1;for(var _0x2749ff in _0x4c576d){if(_0x4c576d[_0x5343('0x5f')](_0x2749ff)&&(_0x4c576d[_0x2749ff]['dialMethod']===_0x5343('0x60')||_0x4c576d[_0x2749ff][_0x5343('0x33')]===_0x5343('0x61'))&&_0x4c576d[_0x2749ff][_0x5343('0x27')]===_0x5343('0x28')){if(this[_0x5343('0x15')]>0x7){this[_0x5343('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x4c576d[_0x5343('0x5f')](_0x2749ff)&&_0x4c576d[_0x2749ff][_0x5343('0x33')]===_0x5343('0x60')&&_0x4c576d[_0x2749ff][_0x5343('0x27')]===_0x5343('0x28')){if(_0x4c576d[_0x2749ff][_0x5343('0x62')]){this[_0x5343('0x63')](_0x4c576d[_0x2749ff]);if(_0x4c576d[_0x2749ff][_0x5343('0x64')])this[_0x5343('0x65')](_0x4c576d[_0x2749ff]);}else{notSendMessagesQueue(_0x4c576d[_0x2749ff]);}}}};Preview[_0x5343('0x5d')][_0x5343('0x66')]=function(_0x15cca4){var _0x9f3fb7=this;this[_0x5343('0x10')][_0x5343('0xe')](function(){if(!_['isNil'](_0x9f3fb7[_0x5343('0x13')][_0x15cca4])){loggerAction[_0x5343('0x67')]('[clearZombieChannels][talking]',_0x15cca4,_0x5343('0x68'),_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x69')],_0x5343('0x6a'),JSON[_0x5343('0x53')](_0x9f3fb7['campaignsPreview'][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']]['originated']),_0x5343('0x6b'),JSON[_0x5343('0x53')](_0x9f3fb7[_0x5343('0x11')][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']][_0x5343('0x2d')]),JSON[_0x5343('0x53')](_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x6c')]),JSON[_0x5343('0x53')](_[_0x5343('0x6d')](_0x9f3fb7[_0x5343('0x13')][_0x15cca4],[_0x5343('0x6e'),_0x5343('0x6f'),_0x5343('0x70'),'ListId'])));return ami[_0x5343('0x71')]({'action':_0x5343('0x72'),'channel':_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x73')]})[_0x5343('0x74')](function(_0x1e1d24){if(_0x1e1d24[_0x5343('0x47')]===_0x5343('0x75')){setTimeout(function(){if(_0x9f3fb7[_0x5343('0x13')][_0x15cca4]){ut[_0x5343('0x76')](_0x9f3fb7['campaignsPreview'][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']],'[clearZombieChannel]');if(_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x6c')]===!![]){ut[_0x5343('0x77')](_0x9f3fb7[_0x5343('0x11')][_0x9f3fb7[_0x5343('0x13')][_0x15cca4]['queue']],_0x5343('0x78'));ut['loggerError'](_0x5343('0x79')+_0x15cca4,_0x9f3fb7['actions'][_0x15cca4][_0x5343('0x69')]);}ut['loggerError'](_0x5343('0x7a')+_0x15cca4,_0x9f3fb7[_0x5343('0x13')][_0x15cca4][_0x5343('0x69')]);delete _0x9f3fb7[_0x5343('0x13')][_0x15cca4];}},0x2328);}});}});};Preview[_0x5343('0x5d')]['clearZombieChannels']=function(){var _0x45bec6=this;loggerAction[_0x5343('0x67')](_0x5343('0x7b'),_[_0x5343('0x7c')](this[_0x5343('0x13')]));for(var _0x580f08 in this['actions']){if(_0x45bec6[_0x5343('0x13')]['hasOwnProperty'](_0x580f08)){_0x45bec6[_0x5343('0x66')](_0x580f08);}}};Preview[_0x5343('0x5d')][_0x5343('0x65')]=function(_0x21706d){var _0x2589ae=this;rpcDb[_0x5343('0x7d')](_0x21706d['id'],ut[_0x5343('0x7e')](this['agents']))[_0x5343('0x7f')](function(_0x34947e){if(!_['isNil'](_0x34947e)){for(var _0x28eb06=0x0;_0x28eb06<_0x34947e['length'];_0x28eb06+=0x1){if(ut[_0x5343('0x80')](_0x34947e[_0x28eb06]['scheduledat'])<_0x21706d[_0x5343('0x81')]*0x3c){if(_0x34947e[_0x28eb06]['Agent']&&!_0x34947e[_0x28eb06][_0x5343('0x82')][_0x5343('0x83')]){_0x2589ae[_0x5343('0x84')](_0x34947e[_0x28eb06]['id'])[_0x5343('0x7f')](ut[_0x5343('0x85')](_0x5343('0x86')))['catch'](ut[_0x5343('0x85')](_0x5343('0x86')));}else{rpcDb[_0x5343('0x87')](_0x34947e[_0x28eb06]['id']);}}else{var _0x201f20=new Action(_0x34947e[_0x28eb06],_0x21706d);_0x201f20['starttime']=moment()[_0x5343('0x50')](_0x5343('0x88'));_0x21706d['outboundReCallsDay']+=0x1;ut[_0x5343('0x89')](_0x201f20,0x17,_0x5343('0x8a'));if(_0x21706d[_0x5343('0x8b')]){rpcDb['rescheduleContactInQueue'](ut[_0x5343('0x8c')](_0x34947e[_0x28eb06]));rpcDb[_0x5343('0x8d')](_0x201f20,_0x5343('0x8e'));}else{ut[_0x5343('0x89')](_0x201f20,0x16,'RecallFailedTimeout');rpcDb[_0x5343('0x8d')](_0x201f20,_0x5343('0x8f'));rpcDb[_0x5343('0x90')](_0x201f20,_0x5343('0x8f'));}}}}})[_0x5343('0x74')](ut['logger2']('[getContactRecallMe]'));};Preview[_0x5343('0x5d')]['setMessage']=function(_0x4c3c93){_0x4c3c93[_0x5343('0x55')]=!![];if(ut[_0x5343('0x91')](_0x4c3c93[_0x5343('0x2c')])){_0x4c3c93['message']='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x4c3c93[_0x5343('0x62')])){_0x4c3c93[_0x5343('0x47')]=_0x5343('0x57');}else if(!this[_0x5343('0x92')](_0x4c3c93[_0x5343('0x4c')])){if(!this[_0x5343('0x92')](_0x4c3c93[_0x5343('0x93')])){_0x4c3c93[_0x5343('0x47')]='TRUNK_IS_NOT_REACHABLE';}else{_0x4c3c93['message']='ACTIVE';}}else{_0x4c3c93[_0x5343('0x47')]=_0x5343('0x94');}emitCampaignPreview(_0x4c3c93);};Preview['prototype'][_0x5343('0x95')]=function(_0x5bd753,_0x27e4ac,_0x1046e5){var _0x34c3ab=this;var _0x3753e3=this[_0x5343('0x13')][_0x27e4ac];var _0x52db16=this['campaignsPreview'][_0x3753e3['queue']];var _0x21fe62;if(_0x52db16){switch(_0x1046e5){case'1':_0x52db16[_0x5343('0x39')]+=0x1;_0x3753e3[_0x5343('0x96')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut['logCustomer'](_0x3753e3,0x0,_0x5343('0x99'));ami['emit']('custom:agentnosuchnumber',ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0x9b')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0x9c'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb['createCustomerFinal'](_0x21fe62,_0x5343('0xa0'));}else{if(_0x3753e3['countnosuchnumberretry']>=_0x52db16[_0x5343('0xa1')]){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xa0'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0x96'),_0x52db16['dialNoSuchNumberRetryFrequency']),_0x3753e3['unlockAgent'],_0x3753e3[_0x5343('0xa4')]);}}delete this['actions'][_0x5bd753['linkedid']];break;case'ANSWER':var _0x47ad2f=moment()[_0x5343('0x50')](_0x5343('0x88'));_0x3753e3[_0x5343('0xa5')]=_0x47ad2f;_0x3753e3[_0x5343('0xa6')]=_0x47ad2f;_0x3753e3[_0x5343('0x6c')]=!![];_0x52db16[_0x5343('0x2d')]+=0x1;logger[_0x5343('0x67')](_0x5343('0xa7'),_0x3753e3[_0x5343('0xa8')],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],'pTalking:\x20',_0x52db16[_0x5343('0x2d')]);ami[_0x5343('0x26')](_0x5343('0xaa'),ut['buildObj'](_0x3753e3,_0x5343('0xab'),this['campaignsPreview'][_0x3753e3[_0x5343('0x69')]]));if(_0x52db16[_0x5343('0xac')]){ami['emit']('custom:agentConnectPreview',ut[_0x5343('0xad')](_0x3753e3));}break;case'16':ami['emit']('custom:agentcomplete',ut['buildObj'](_0x3753e3,_0x5343('0xae'),this[_0x5343('0x11')][_0x3753e3[_0x5343('0x69')]]));emitVoiceQueueChannelRemove(ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xae')));_0x52db16['outboundAnswerCallsDay']+=0x1;_0x52db16['total']+=0x1;_0x52db16[_0x5343('0x2a')]+=0x1;ut[_0x5343('0x77')](_0x52db16,_0x5343('0xaf'));_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x4,_0x5343('0xb0'));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xb1'));rpcDb[_0x5343('0x90')](_0x3753e3,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x5343('0xb2')](_0x3753e3);_0x52db16[_0x5343('0x2e')]+=_0x3753e3[_0x5343('0xb3')];_0x52db16[_0x5343('0xb4')]+=_0x3753e3[_0x5343('0xb3')];logger[_0x5343('0x67')](_0x5343('0xb5'),_0x3753e3[_0x5343('0xa8')],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],_0x5343('0x6b'),_0x52db16[_0x5343('0x2d')]);delete this['actions'][_0x5bd753[_0x5343('0xb6')]];break;case _0x5343('0xb7'):_0x52db16[_0x5343('0xb8')]+=0x1;_0x3753e3['countbusyretry']+=0x1;_0x3753e3['countglobal']=ut[_0x5343('0x98')](_0x3753e3);ut['logCustomer'](_0x3753e3,0x5,_0x5343('0xb9'));ami[_0x5343('0x26')](_0x5343('0xba'),ut['buildObj'](_0x3753e3,_0x5343('0xbb')));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xbc'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb['createCustomerFinal'](_0x21fe62,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x3753e3[_0x5343('0xbd')]>=_0x52db16[_0x5343('0xbe')]){rpcDb['createCustomerFinal'](_0x3753e3,_0x5343('0xbc'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x3753e3,'countbusyretry',_0x52db16[_0x5343('0xbf')]),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xc1'):_0x52db16[_0x5343('0xc2')]+=0x1;_0x3753e3[_0x5343('0xc3')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x3,_0x5343('0xc4'));ami[_0x5343('0x26')](_0x5343('0xc5'),ut[_0x5343('0x9a')](_0x3753e3,'noanswer'));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xc6'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x3753e3[_0x5343('0xc3')]>=_0x52db16['dialNoAnswerMaxRetry']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xc6'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xc3'),_0x52db16['dialNoAnswerRetryFrequency']),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xc7'):_0x52db16['outboundCongestionCallsDay']+=0x1;_0x3753e3['countcongestionretry']+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x8,_0x5343('0xc8'));ami[_0x5343('0x26')](_0x5343('0xc9'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xca')));rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xcb'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16['dialGlobalMaxRetry']){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,_0x5343('0xcc'));}else{if(_0x3753e3[_0x5343('0xcd')]>=_0x52db16[_0x5343('0xce')]){rpcDb['createCustomerFinal'](_0x3753e3,_0x5343('0xcb'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xcd'),_0x52db16[_0x5343('0xbf')]),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xcf'):_0x52db16[_0x5343('0x3a')]+=0x1;_0x3753e3['countagentrejectretry']+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x14,_0x5343('0xd0'));ami[_0x5343('0x26')](_0x5343('0xd1'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xd2')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xd3'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16['dialGlobalMaxRetry']){_0x21fe62=ut['cloneAction'](_0x3753e3,0x14,_0x5343('0xd0'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x3753e3[_0x5343('0xd4')]>=_0x52db16['dialAgentRejectMaxRetry']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xd5'));}else{rpcDb[_0x5343('0xa2')](ut['scheduledAt'](_0x3753e3,_0x5343('0xd4'),_0x52db16['dialAgentRejectRetryFrequency']),_0x3753e3[_0x5343('0xc0')],_0x3753e3[_0x5343('0xa4')]);}}break;case _0x5343('0xd6'):_0x52db16[_0x5343('0x3c')]+=0x1;_0x3753e3[_0x5343('0xd7')]+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut['logCustomer'](_0x3753e3,0xb,_0x5343('0xd8'));rpcDb['createCustomerHistory'](_0x3753e3,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut['cloneAction'](_0x3753e3,0xf,'Global');rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x3753e3[_0x5343('0xd9')]>=_0x52db16['dialAbandonedMaxRety']){rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xda'));}else{rpcDb[_0x5343('0xa2')](ut[_0x5343('0xa3')](_0x3753e3,_0x5343('0xd7'),_0x52db16[_0x5343('0xdb')]),_0x3753e3['unlockAgent'],_0x3753e3[_0x5343('0xa4')]);}}break;case'18':_0x52db16[_0x5343('0x3b')]+=0x1;_0x3753e3[_0x5343('0xdc')]+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x12,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);ami['emit'](_0x5343('0xdf'),ut[_0x5343('0x9a')](_0x3753e3,_0x5343('0xe0')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xe1'));if(ut['totalGlobal'](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x5343('0x90')](_0x3753e3,_0x5343('0xe1'));}delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];break;case'19':_0x52db16[_0x5343('0x3b')]+=0x1;_0x3753e3['countglobal']=ut['totalGlobal'](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0x13,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);ami[_0x5343('0x26')](_0x5343('0xdf'),ut['buildObj'](_0x3753e3,_0x5343('0xe0')));rpcDb[_0x5343('0x8d')](_0x3753e3,_0x5343('0xe2'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x3753e3,'[callProgressDetectingCustomer][machine]');}delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];break;default:if(_0x3753e3['dialAnswer']){ut[_0x5343('0x77')](_0x52db16,_0x5343('0xe3'));ut[_0x5343('0xe4')](_0x5343('0xe5')+_0x52db16[_0x5343('0x4d')],_0x5bd753);}_0x52db16['outboundUnknownCallsDay']+=0x1;_0x3753e3[_0x5343('0x97')]=ut[_0x5343('0x98')](_0x3753e3);ut[_0x5343('0x89')](_0x3753e3,0xc,_0x5bd753[_0x5343('0xdd')]||_0x5bd753[_0x5343('0xde')]);rpcDb['createCustomerHistory'](_0x3753e3,_0x5343('0xe6'));if(ut[_0x5343('0x98')](_0x3753e3)>=_0x52db16[_0x5343('0x9d')]){_0x21fe62=ut[_0x5343('0x9e')](_0x3753e3,0xf,_0x5343('0x9f'));rpcDb[_0x5343('0x90')](_0x21fe62,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb['createCustomerFinal'](_0x3753e3,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x5bd753[_0x5343('0xb6')]];}if(!(_0x3753e3[_0x5343('0x6c')]&&_0x1046e5==='16')){ut['updateOriginated'](_0x52db16,_0x5343('0xe7'));logger[_0x5343('0x67')](_0x5343('0xe8'),_0x3753e3['uniqueid'],_0x5343('0xa9'),_0x52db16[_0x5343('0x4d')],_0x5343('0x6a'),_0x52db16[_0x5343('0x48')]);}if(_0x1046e5!=='ANSWER'){delete this[_0x5343('0x13')][_0x5bd753[_0x5343('0xb6')]];delete this['actions'][_0x5bd753[_0x5343('0xe9')]];}}};Preview[_0x5343('0x5d')][_0x5343('0xea')]=function(_0x4a86ba,_0x2efd7c,_0x131a98){if(_[_0x5343('0xeb')](_0x2efd7c)&&_0x5343('0xec')!==typeof _0x2efd7c){return;}if(_[_0x5343('0xeb')](_0x131a98)&&_0x5343('0xec')!==typeof _0x131a98){return;}switch(_0x131a98['reason']){case'0':ut[_0x5343('0xed')](_0x4a86ba,0x0,_0x5343('0x99'));rpcDb[_0x5343('0xee')](_0x4a86ba,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x5343('0xed')](_0x4a86ba,0x3,_0x5343('0xc4'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xef'));break;case'5':ut[_0x5343('0xed')](_0x4a86ba,0x5,_0x5343('0xb9'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xf0'));break;case'8':ut[_0x5343('0xed')](_0x4a86ba,0x8,_0x5343('0xc8'));rpcDb[_0x5343('0xee')](_0x4a86ba,_0x5343('0xf1'));break;case'22':ut[_0x5343('0xed')](_0x4a86ba,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x4a86ba,_0x5343('0xf2'));break;default:ut[_0x5343('0xed')](_0x4a86ba,0xc,_0x131a98[_0x5343('0xf3')]);rpcDb['createAgentHistory'](_0x4a86ba,_0x5343('0xf1'));}ut[_0x5343('0x76')](_0x2efd7c,_0x5343('0xf4'));logger[_0x5343('0x67')]('[originated][decrement][callProgressDetectingAgent]',_0x4a86ba[_0x5343('0xa8')],_0x5343('0xa9'),_0x2efd7c[_0x5343('0x4d')],_0x5343('0x6a'),_0x2efd7c[_0x5343('0x48')]);delete this['actions'][_0x4a86ba[_0x5343('0xa8')]];};Preview[_0x5343('0x5d')]['checkInBlack']=function(_0x5c2fda,_0x3428b,_0x1f0716,_0x4f79d8,_0x545425){var _0x100387=this;return new BPromise(function(_0x3c40ea,_0x401cc2){if(_[_0x5343('0xf5')](_0x3428b)||_[_0x5343('0xf5')](_0x3428b[_0x5343('0xf6')])||_[_0x5343('0xf5')](_0x3428b[_0x5343('0xf6')][_0x5343('0xf7')])||_[_0x5343('0xf5')](_0x3428b[_0x5343('0x70')])){_0x401cc2(ut['message']('Contact\x20is\x20undefined',_0x4f79d8,_0x545425));return;}var _0x4c77d2=uuid['v4']();var _0x216bf4=_0x100387[_0x5343('0x11')][_0x3428b[_0x5343('0x68')][_0x5343('0x4d')]];var _0x3f69c9=_0x1f0716?_0x100387[_0x5343('0x14')][_0x1f0716]['id']:undefined;_0x100387['actions'][_0x4c77d2]=new Action(_0x3428b,_0x216bf4,_0x4c77d2,_0x1f0716,_0x3f69c9);var _0x581344=_0x100387[_0x5343('0x13')][_0x4c77d2];_0x581344[_0x5343('0xc0')]=_0x4f79d8;_0x581344[_0x5343('0xa4')]=_0x545425;_0x581344['lookAgent']=_0x1f0716;if(_[_0x5343('0xf8')](_0x5c2fda)){_0x100387[_0x5343('0xf9')](_0x581344,_0x216bf4,_0x3428b,_0x1f0716)[_0x5343('0x7f')](function(_0x304f0b){logger[_0x5343('0x67')](_0x5343('0xfa'),_0x5343('0xfb')+_0x581344[_0x5343('0x69')]+_0x5343('0xfc')+_0x581344[_0x5343('0xfd')],JSON['stringify'](_0x304f0b));ami[_0x5343('0x26')](_0x5343('0xfe'),ut['buildObj'](_0x581344,_0x5343('0xff'),_0x100387[_0x5343('0x11')][_0x581344[_0x5343('0x69')]]));_0x3c40ea(ut['message'](_0x5343('0x100')));})['catch'](function(_0x17b51f){ut[_0x5343('0x5b')](_0x5343('0x101'),_0x17b51f);_0x401cc2(ut['message'](_0x5343('0x102'),_0x4f79d8,_0x545425));});}else{_0x216bf4['outboundBlacklistCallsDay']+=0x1;ut[_0x5343('0x103')](_0x581344);rpcDb[_0x5343('0x104')](_0x581344,_0x5343('0x105'));delete _0x100387[_0x5343('0x13')][_0x4c77d2];_0x401cc2(ut[_0x5343('0x47')]('Contact\x20in\x20black\x20List',_0x4f79d8,_0x545425));}});};Preview[_0x5343('0x5d')][_0x5343('0x92')]=function(_0x167359){return!_[_0x5343('0xf5')](_0x167359)&&!_['isNil'](_0x167359[_0x5343('0x4d')])&&!_[_0x5343('0xf5')](_0x167359[_0x5343('0x106')])&&_0x167359['active']&&!_['isNil'](this[_0x5343('0x12')][util[_0x5343('0x50')](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])])&&!_[_0x5343('0xf5')](this[_0x5343('0x12')][util[_0x5343('0x50')]('SIP/%s',_0x167359[_0x5343('0x4d')])]['status'])&&(this[_0x5343('0x12')][util['format'](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])][_0x5343('0x72')]==='reachable'||this[_0x5343('0x12')][util[_0x5343('0x50')](_0x5343('0x107'),_0x167359[_0x5343('0x4d')])][_0x5343('0x72')]===_0x5343('0x108'));};Preview[_0x5343('0x5d')][_0x5343('0x84')]=function(_0x33f9fc,_0x1b5e7b){var _0x28d6c7=this;return new BPromise(function(_0x445f52,_0x176697){_0x28d6c7[_0x5343('0x109')](_0x33f9fc,_0x1b5e7b)[_0x5343('0x7f')](function(_0xc08c04){_0x445f52(_[_0x5343('0x6d')](_0xc08c04,[_0x5343('0x47')]));})[_0x5343('0x74')](function(_0x26afd4){if(_0x26afd4['unlock']){rpcDb[_0x5343('0x10a')](_0x33f9fc);}if(_0x26afd4[_0x5343('0x106')]){rpcDb[_0x5343('0x87')](_0x33f9fc);}_0x176697(_[_0x5343('0x6d')](_0x26afd4,[_0x5343('0x47')]));});});};Preview[_0x5343('0x5d')][_0x5343('0x109')]=function(_0x13e3c2,_0x11d303){var _0x34b746=this;return new BPromise(function(_0x4bc2ff,_0x4a757c){var _0x332fd8,_0x48df63;rpcDb[_0x5343('0x10b')](_0x13e3c2)[_0x5343('0x7f')](function(_0x252b9b){if(!_[_0x5343('0xf5')](_0x252b9b[0x0])){_0x48df63=_0x252b9b[0x0]['recallme']?![]:!![];_0x332fd8=_0x252b9b[0x0]['recallme']?!![]:![];_0x332fd8=_0x11d303?!![]:_0x332fd8;}var _0x54e9c9=_0x34b746['validateContact'](_0x252b9b);if(_0x54e9c9[_0x5343('0x10c')]){rpcDb[_0x5343('0x10d')](_[_0x5343('0x6d')](_0x252b9b[0x0],[_0x5343('0x70'),_0x5343('0x10e')]))[_0x5343('0x7f')](function(_0x42f201){_0x34b746[_0x5343('0x10f')](_0x42f201,_0x252b9b[0x0],_0x11d303,_0x48df63,_0x332fd8)[_0x5343('0x7f')](function(_0x24c6d5){_0x4bc2ff(_0x24c6d5);})[_0x5343('0x74')](function(_0x4104e7){_0x4a757c(_0x4104e7);});})[_0x5343('0x74')](function(_0x1a7554){ut[_0x5343('0x5b')]('[Preview][checkIsBlackList]',_0x1a7554);_0x4a757c(ut[_0x5343('0x47')](_0x5343('0x110'),_0x48df63,_0x332fd8));});}else{_0x4a757c(ut[_0x5343('0x47')](_0x54e9c9[_0x5343('0x47')],_0x48df63,_0x332fd8));}})[_0x5343('0x74')](function(_0x43f1dc){ut[_0x5343('0x5b')]('[Preview][getContactPreview]',_0x43f1dc);_0x4a757c(ut['message'](_0x5343('0x110'),![],!![]));});});};Preview[_0x5343('0x5d')][_0x5343('0x111')]=function(_0x3b2559){if(_[_0x5343('0xf5')](_0x3b2559)||_[_0x5343('0xf8')](_0x3b2559)||!_[_0x5343('0xf5')](_0x3b2559[0x0][_0x5343('0x82')])&&_[_0x5343('0xf5')](_0x3b2559[0x0][_0x5343('0x82')]['name'])){ut[_0x5343('0x5b')]('[Preview][validateContact][Empty\x20Contact]',_0x3b2559);return{'isValid':![],'message':_0x5343('0x112')};}var _0x24801a=this[_0x5343('0x11')][_0x3b2559[0x0]['Queue'][_0x5343('0x4d')]];_0x24801a[_0x5343('0x47')]='ACTIVE';if(_[_0x5343('0xf5')](_0x24801a)){ut[_0x5343('0x5b')](_0x5343('0x113'),_0x24801a);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x5343('0x92')](_0x24801a[_0x5343('0x4c')])){ut[_0x5343('0x5b')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x5343('0x114')+_0x24801a['name']+_0x5343('0x115'));if(!this[_0x5343('0x92')](_0x24801a[_0x5343('0x93')])){ut[_0x5343('0x5b')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x24801a['name']+_0x5343('0x116'));return{'isValid':![],'message':_0x5343('0x117')};}}if(!ut['isActive'](_0x24801a['dialActive'])){ut[_0x5343('0x5b')](_0x5343('0x118'),_0x24801a[_0x5343('0x4d')]+'\x20Not\x20Active');return{'isValid':![],'message':_0x5343('0x114')+_0x24801a[_0x5343('0x4d')]+_0x5343('0x119')};}return{'isValid':!![],'message':_0x5343('0x11a')};};Preview[_0x5343('0x5d')]['execCall']=function(_0x43a0f8,_0x28512e,_0x584349,_0x1392a9){var _0x447587=this;return new BPromise(function(_0x2cbc40,_0x1a6b58){var _0x4e34ac=_0x43a0f8[_0x5343('0xa8')];var _0x2017fe=_0x447587[_0x5343('0x92')](_0x28512e[_0x5343('0x4c')])?util['format']('SIP/%s/%s%s',_0x28512e[_0x5343('0x4c')][_0x5343('0x4d')],_['isNil'](_0x28512e[_0x5343('0x11b')])?'':_0x28512e[_0x5343('0x11b')][_0x5343('0x11c')]()||'',_0x28512e[_0x5343('0x11d')]>0x0?_0x584349['Contact'][_0x5343('0xf7')][_0x5343('0x11e')](_0x28512e[_0x5343('0x11d')]):_0x584349['Contact'][_0x5343('0xf7')]):util[_0x5343('0x50')](_0x5343('0x11f'),_['isNil'](_0x28512e[_0x5343('0x93')])?_0x28512e['Trunk'][_0x5343('0x4d')]:_0x28512e[_0x5343('0x93')][_0x5343('0x4d')],_[_0x5343('0xf5')](_0x28512e[_0x5343('0x11b')])?'':_0x28512e[_0x5343('0x11b')]['trim']()||'',_0x28512e[_0x5343('0x11d')]>0x0?_0x584349['Contact'][_0x5343('0xf7')][_0x5343('0x11e')](_0x28512e[_0x5343('0x11d')]):_0x584349[_0x5343('0xf6')][_0x5343('0xf7')]);var _0x20db02=_0x447587[_0x5343('0x92')](_0x28512e['Trunk'])?ut[_0x5343('0x120')](_0x28512e[_0x5343('0x4c')][_0x5343('0x4e')],_0x28512e[_0x5343('0x121')],_0x28512e['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x5343('0x122')](_0x28512e[_0x5343('0x34')],_0x28512e[_0x5343('0x123')]):_0x28512e['dialOriginateCallerIdNumber']):ut[_0x5343('0x120')](_[_0x5343('0xf5')](_0x28512e[_0x5343('0x93')])?_0x28512e[_0x5343('0x4c')][_0x5343('0x4e')]:_0x28512e[_0x5343('0x93')][_0x5343('0x4e')],_0x28512e['dialOriginateCallerIdName'],_0x28512e[_0x5343('0x123')]>0x0?ut[_0x5343('0x122')](_0x28512e['dialOriginateCallerIdNumber'],_0x28512e['dialRandomLastDigitCallerIdNumber']):_0x28512e[_0x5343('0x34')]);if(_0x20db02){_0x43a0f8['originatecalleridname']=ut[_0x5343('0x124')](_0x20db02);_0x43a0f8['originatecalleridnum']=ut[_0x5343('0x125')](_0x20db02);}var _0x406a7b=ut[_0x5343('0x126')](_0x28512e,_0x584349,_0x2017fe,_0x20db02,_0x4e34ac,_0x43a0f8);_[_0x5343('0x127')](_0x43a0f8,ut['toLowerVariables'](_0x406a7b));_0x43a0f8['starttime']=moment()['format'](_0x5343('0x88'));ami[_0x5343('0x71')](ut[_0x5343('0x128')](_0x43a0f8,_0x28512e,_0x406a7b,_0x43a0f8['activeContact'],_0x1392a9))[_0x5343('0x7f')](function(_0x237eb0){_0x28512e[_0x5343('0x48')]+=0x1;logger[_0x5343('0x67')](_0x5343('0x129'),_0x4e34ac,'\x20Queue',_0x28512e[_0x5343('0x4d')],_0x5343('0x6a'),_0x28512e[_0x5343('0x48')]);_0x2cbc40(_0x237eb0);})[_0x5343('0x74')](function(_0x3e0062){ut[_0x5343('0xed')](_0x43a0f8,0xe,_0x5343('0x12a'));rpcDb['createAgentHistory'](_0x43a0f8,_0x5343('0x12b'));_0x1a6b58(_0x3e0062);});});};Preview['prototype'][_0x5343('0x1f')]=function(_0x13155c){if(this['actions'][_0x13155c[_0x5343('0xb6')]]){this['actions'][_0x13155c[_0x5343('0xb6')]][_0x5343('0x73')]=_0x13155c['channel'];}};Preview[_0x5343('0x5d')]['syncOriginateResponse']=function(_0x18f4e7){var _0x2507d4=this;var _0x1a85a3=this[_0x5343('0x13')][_0x18f4e7[_0x5343('0x12c')]];if(_0x1a85a3){if(_0x1a85a3[_0x5343('0x12d')]&&this[_0x5343('0x14')][_0x1a85a3['lookAgent']]){ut[_0x5343('0x12e')](_0x1a85a3,this['agents'][_0x1a85a3[_0x5343('0x12d')]][_0x5343('0x4d')],this['agents'][_0x1a85a3[_0x5343('0x12d')]]['id']);}var _0x331c64=_[_0x5343('0x12f')](_0x1a85a3);_0x331c64[_0x5343('0xa5')]=moment()[_0x5343('0x50')](_0x5343('0x88'));var _0x132f66=_0x2507d4['campaignsPreview'][_0x1a85a3[_0x5343('0x69')]];if(ut[_0x5343('0x130')](_0x18f4e7[_0x5343('0x131')])){if(_0x1a85a3[_0x5343('0xc0')]){rpcDb[_0x5343('0x10a')](_0x1a85a3['idContact']);}if(_0x1a85a3['activeContact']){rpcDb[_0x5343('0x87')](_0x1a85a3[_0x5343('0xfd')]);}ami[_0x5343('0x26')](_0x5343('0x132'),ut['buildObj'](_0x1a85a3,'rejected',this[_0x5343('0x11')][_0x1a85a3[_0x5343('0x69')]]));this['callProgressDetectingAgent'](_0x331c64,_0x132f66,_0x18f4e7);}else{_0x1a85a3[_0x5343('0x133')]=moment()[_0x5343('0x50')](_0x5343('0x88'));ut[_0x5343('0xed')](_0x331c64,0x4,_0x5343('0xb0'));rpcDb[_0x5343('0xee')](_0x331c64,_0x5343('0x134'));}}};Preview[_0x5343('0x5d')][_0x5343('0x19')]=function(_0x1b05e1){var _0x5deed8=this;var _0x467036=this['actions'][_0x1b05e1[_0x5343('0xb6')]];var _0x544e5f;if(_0x467036){_0x544e5f=this['campaignsPreview'][_0x467036[_0x5343('0x69')]];logger['info']('[syncHangup][talking]',_0x1b05e1[_0x5343('0xb6')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f[_0x5343('0x2d')]);}if(this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]]&&_0x1b05e1[_0x5343('0xb6')]!==_0x1b05e1[_0x5343('0xa8')]){if(_0x1b05e1[_0x5343('0x135')]==='16'&&this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]][_0x5343('0x6c')]){this[_0x5343('0x95')](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}else if(this[_0x5343('0x13')][_0x1b05e1['linkedid']][_0x5343('0x6c')]){logger['info'](_0x5343('0x136'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],_0x5343('0xa9'),_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f[_0x5343('0x2d')]);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}}else if(_0x467036&&_['isNil'](_0x467036['statedesc'])&&_0x544e5f[_0x5343('0x137')]&&_0x1b05e1[_0x5343('0xb6')]===_0x1b05e1['uniqueid']&&_[_0x5343('0xf5')](_0x1b05e1[_0x5343('0xf3')])&&_0x1b05e1['cause']==='16'&&_0x1b05e1[_0x5343('0x138')]==='6'&&_['isUndefined'](_0x467036[_0x5343('0x139')])){if(_0x467036[_0x5343('0xc0')]){rpcDb['unlockContact'](_0x467036[_0x5343('0xfd')]);}if(_0x467036[_0x5343('0xa4')]){rpcDb[_0x5343('0x87')](_0x467036[_0x5343('0xfd')]);}_0x1b05e1[_0x5343('0xf3')]='22';this[_0x5343('0xea')](_0x467036,_0x544e5f,_0x1b05e1);}else if(_0x467036&&_0x467036[_0x5343('0x139')]){if(_0x1b05e1['cause']==='16'&&this[_0x5343('0x13')][_0x1b05e1[_0x5343('0xb6')]][_0x5343('0x6c')]){logger[_0x5343('0x67')](_0x5343('0x13a'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f['pTalking']);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')]);}else if(this[_0x5343('0x13')][_0x1b05e1['linkedid']][_0x5343('0x6c')]){logger[_0x5343('0x67')](_0x5343('0x136'),_0x1b05e1[_0x5343('0xb6')],_0x1b05e1[_0x5343('0x135')],'\x20Queue',_0x544e5f[_0x5343('0x4d')],_0x5343('0x6b'),_0x544e5f['pTalking']);this['callProgressDetectingCustomer'](_0x1b05e1,_0x1b05e1['linkedid'],_0x1b05e1['cause']);}}};Preview[_0x5343('0x5d')]['syncDialEnd']=function(_0x309a07){if(this[_0x5343('0x13')][_0x309a07[_0x5343('0xe9')]]&&_0x309a07[_0x5343('0xe9')]!==_0x309a07[_0x5343('0x13b')]){this['callProgressDetectingCustomer'](_0x309a07,_0x309a07[_0x5343('0xe9')],_0x309a07[_0x5343('0xde')]);}};Preview[_0x5343('0x5d')]['syncHangupRequest']=function(_0x39be18){if(this['actions'][_0x39be18[_0x5343('0xb6')]]&&_0x39be18['linkedid']!==_0x39be18[_0x5343('0xa8')]&&!this[_0x5343('0x13')][_0x39be18['linkedid']]['dialAnswer']){if(_0x39be18[_0x5343('0x135')]==='1'){this[_0x5343('0x95')](_0x39be18,_0x39be18['linkedid'],_0x39be18[_0x5343('0x135')]);}}};Preview['prototype'][_0x5343('0x13c')]=function(_0x1af602,_0x190fa5,_0x31fbdb){if(this[_0x5343('0x13')][_0x1af602]){if(_[_0x5343('0xf5')](this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')])){this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')]={};}this[_0x5343('0x13')][_0x1af602][_0x5343('0x13d')][_0x190fa5]=_0x31fbdb;}};Preview[_0x5343('0x5d')][_0x5343('0x21')]=function(_0x28e57f){try{if(!_[_0x5343('0xf5')](_0x28e57f)){if(ut[_0x5343('0x13e')](_[_0x5343('0x13f')](_0x28e57f[_0x5343('0x140')])[0x0])){this[_0x5343('0x13c')](_0x28e57f[_0x5343('0xa8')],_['keys'](_0x28e57f[_0x5343('0x140')])[0x0],_0x28e57f['value']);}}}catch(_0x4c7eb6){logger[_0x5343('0x141')](_0x5343('0x142'),util['inspect'](_0x4c7eb6,{'showHidden':![],'depth':null}));}};Preview[_0x5343('0x5d')]['syncAttendedTransfer']=function(_0x31e79b){if(_0x31e79b){if(this[_0x5343('0x13')][_0x31e79b['transfertargetlinkedid']]){this[_0x5343('0x13')][_0x31e79b[_0x5343('0x143')]][_0x5343('0x139')]=!![];}}};Preview[_0x5343('0x5d')][_0x5343('0x24')]=function(_0x709f34){if(_0x709f34){if(this['actions'][_0x709f34[_0x5343('0x144')]]){this[_0x5343('0x13')][_0x709f34[_0x5343('0x144')]][_0x5343('0x139')]=!![];}}};module[_0x5343('0x145')]=Preview;
\ No newline at end of file
+var _0x826a=['createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','unlock','unlockContact','pick','execRun','getContactPreview','recallme','isValid','checkIsBlackList','Contact.phone','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialCutDigit','phone','trim','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','toLowerVariables','starttime','Action','variablesAction','[originated][increment]','OriginateError','actionid','logLookAgent','responsetime','isFailure','response','idContact','custom:agentringnoanswer','rejected','syncHangup','[syncHangup][talking]','cause','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','syncHangupRequest','addVariable','variables','filterKey','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','lodash','uuid','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','originateresponse','syncOriginateResponse','bind','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','loopCampaigns','emit','type','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','message','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','clockClearZombieChannels','hasOwnProperty','preview','booked','outbound','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','isNil','Queue','queue','pTalking:\x20','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','totalGlobal','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','linkedid','ANSWER','answertime','uniqueid','custom:agentconnect','buildObj','connect','buildAcw','custom:agentcomplete','complete','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','\x20Queue','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','unlockAgent','activeContact','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','CONGESTION','countcongestionretry','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','dialGlobalMaxRetry','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','dialAbandonedMaxRety','cause-txt','amd','dialstatus','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Congestion','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','Contact','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','isEmpty','Queue:\x20','custom:agentcalled','called','Call\x20failed','logBlacklist'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x826a,0x1aa));var _0xa826=function(_0x197588,_0x5c554b){_0x197588=_0x197588-0x0;var _0x14c2c0=_0x826a[_0x197588];return _0x14c2c0;};'use strict';var util=require('util');var _=require(_0xa826('0x0'));var BPromise=require('bluebird');var uuid=require(_0xa826('0x1'));var moment=require('moment');var md5=require(_0xa826('0x2'));var Redis=require(_0xa826('0x3'));var config=require(_0xa826('0x4'));var logger=require(_0xa826('0x5'))('preview');var loggerAction=require(_0xa826('0x5'))(_0xa826('0x6'));var ami=require(_0xa826('0x7'));var rpcDb=require(_0xa826('0x8'));var Action=require(_0xa826('0x9'));var ut=require(_0xa826('0xa'));config[_0xa826('0xb')]=_[_0xa826('0xc')](config[_0xa826('0xb')],{'host':_0xa826('0xd'),'port':0x18eb});var io=require(_0xa826('0xe'))(new Redis(config[_0xa826('0xb')]));var Sequence=function(){};Sequence[_0xa826('0xf')][_0xa826('0x10')]=function(_0x37d4a){this[_0xa826('0x11')]=this['tail']?this[_0xa826('0x11')]['finally'](_0x37d4a):_0x37d4a();};function Preview(_0x18b609){this[_0xa826('0x12')]=new Sequence();this[_0xa826('0x13')]=_0x18b609[_0xa826('0x14')];this[_0xa826('0x15')]=_0x18b609[_0xa826('0x15')];this[_0xa826('0x16')]={};this['agents']=_0x18b609[_0xa826('0x17')];this['clockClearZombieChannels']=0x0;ami['on'](_0xa826('0x18'),this[_0xa826('0x19')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0xa826('0x1a')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0xa826('0x1a')](this));ami['on'](_0xa826('0x1b'),this[_0xa826('0x1c')]['bind'](this));ami['on'](_0xa826('0x1d'),this[_0xa826('0x1e')][_0xa826('0x1a')](this));ami['on'](_0xa826('0x1f'),this[_0xa826('0x20')]['bind'](this));ami['on'](_0xa826('0x21'),this[_0xa826('0x22')][_0xa826('0x1a')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xa826('0x1a')](this));this[_0xa826('0x23')](this[_0xa826('0x13')]);}function emit(_0x8d1650,_0x124564,_0x4e0f43){io['to'](_0x8d1650)[_0xa826('0x24')](_0x124564,_0x4e0f43);}function emitCampaignPreview(_0x2e7e90){if(_0x2e7e90[_0xa826('0x25')]==='outbound'){var _0x5ddeef={'id':_0x2e7e90['id'],'name':_0x2e7e90[_0xa826('0x26')],'strategy':_0x2e7e90[_0xa826('0x27')],'answered':_0x2e7e90[_0xa826('0x28')],'available':_0x2e7e90['available'],'loggedIn':_0x2e7e90[_0xa826('0x29')],'pTalking':_0x2e7e90[_0xa826('0x2a')],'sumBillable':_0x2e7e90[_0xa826('0x2b')],'sumDuration':_0x2e7e90[_0xa826('0x2c')],'sumHoldTime':_0x2e7e90[_0xa826('0x2d')]||0x0,'talking':_0x2e7e90['talking'],'total':_0x2e7e90[_0xa826('0x2e')],'type':_0x2e7e90['type'],'unmanaged':_0x2e7e90[_0xa826('0x2f')],'abandoned':_0x2e7e90[_0xa826('0x30')],'waiting':_0x2e7e90['waiting'],'loggedInDb':_0x2e7e90[_0xa826('0x31')],'dialActive':_0x2e7e90[_0xa826('0x32')],'dialMethod':_0x2e7e90[_0xa826('0x33')],'dialOriginateCallerIdName':_0x2e7e90[_0xa826('0x34')],'dialOriginateCallerIdNumber':_0x2e7e90[_0xa826('0x35')],'dialOriginateTimeout':_0x2e7e90[_0xa826('0x36')],'dialPrefix':_0x2e7e90[_0xa826('0x37')],'outboundAnswerAgiCallsDay':_0x2e7e90[_0xa826('0x38')],'outboundAnswerCallsDay':_0x2e7e90[_0xa826('0x39')],'outboundBlacklistCallsDay':_0x2e7e90[_0xa826('0x3a')],'outboundBusyCallsDay':_0x2e7e90[_0xa826('0x3b')],'outboundCongestionCallsDay':_0x2e7e90[_0xa826('0x3c')],'outboundDropCallsDayACS':_0x2e7e90[_0xa826('0x3d')],'outboundDropCallsDayCallersExit':_0x2e7e90[_0xa826('0x3e')],'outboundDropCallsDayTimeout':_0x2e7e90[_0xa826('0x3f')],'outboundNoAnswerCallsDay':_0x2e7e90[_0xa826('0x40')],'outboundNoSuchCallsDay':_0x2e7e90['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x2e7e90[_0xa826('0x41')],'outboundReCallsDay':_0x2e7e90['outboundReCallsDay'],'outboundRejectCallsDay':_0x2e7e90[_0xa826('0x42')],'outboundUnknownCallsDay':_0x2e7e90[_0xa826('0x43')],'outboundAbandonedCallsDay':_0x2e7e90[_0xa826('0x44')],'predictiveIntervalAnsweredCalls':_0x2e7e90[_0xa826('0x45')],'predictiveIntervalAvgHoldtime':_0x2e7e90[_0xa826('0x46')],'predictiveIntervalAvgTalktime':_0x2e7e90['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x2e7e90['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x2e7e90[_0xa826('0x47')],'predictiveIntervalErlangCalls':_0x2e7e90[_0xa826('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x2e7e90[_0xa826('0x49')],'predictiveIntervalHitRate':_0x2e7e90[_0xa826('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x2e7e90['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x2e7e90[_0xa826('0x4b')],'predictiveIntervalAvailable':_0x2e7e90[_0xa826('0x4c')],'predictiveIntervalTotalCalls':_0x2e7e90['predictiveIntervalTotalCalls'],'message':_0x2e7e90[_0xa826('0x4d')],'originated':_0x2e7e90['originated'],'erlangCalls':_0x2e7e90[_0xa826('0x4e')],'erlangCallToSecond':_0x2e7e90[_0xa826('0x4f')],'erlangAbandonmentRate':_0x2e7e90[_0xa826('0x50')],'erlangBusyFactor':_0x2e7e90[_0xa826('0x51')],'startPredictive':_0x2e7e90[_0xa826('0x52')],'startProgressive':_0x2e7e90['startProgressive']};if(_0x2e7e90[_0xa826('0x53')]){_0x5ddeef[_0xa826('0x53')]={'id':_0x2e7e90[_0xa826('0x53')]['id'],'name':_0x2e7e90[_0xa826('0x53')][_0xa826('0x26')],'active':_0x2e7e90[_0xa826('0x53')][_0xa826('0x54')],'callerid':_0x2e7e90[_0xa826('0x53')][_0xa826('0x55')]};}if(_0x2e7e90[_0xa826('0x56')]){_0x5ddeef[_0xa826('0x56')]={'id':_0x2e7e90['Interval']['id'],'name':_0x2e7e90[_0xa826('0x56')]['name']};}var _0x3828a6=md5(JSON['stringify'](_0x5ddeef));if(_0x2e7e90[_0xa826('0x2')]!==_0x3828a6){_0x2e7e90[_0xa826('0x2')]=_0x3828a6;emit(util[_0xa826('0x57')](_0xa826('0x58'),_0x5ddeef[_0xa826('0x26')]),_0xa826('0x59'),_0x5ddeef);}}}function emitVoiceQueueChannelRemove(_0xf1e041){logger[_0xa826('0x5a')](_0xa826('0x5b'),JSON[_0xa826('0x5c')](_0xf1e041));emit(util[_0xa826('0x57')](_0xa826('0x58'),_0xf1e041['name']),_0xa826('0x5d'),_0xf1e041);io[_0xa826('0x24')](_0xa826('0x5e'),_0xf1e041);}function notSendMessagesQueue(_0x5899d0){if(_0x5899d0[_0xa826('0x5f')]){if(_0x5899d0[_0xa826('0x60')]===0x0&&_0x5899d0['pTalking']===0x0){_0x5899d0[_0xa826('0x5f')]=![];_0x5899d0['available']=0x0;_0x5899d0['paused']=0x0;_0x5899d0[_0xa826('0x4d')]=_0xa826('0x61');ut[_0xa826('0x62')](_0xa826('0x63'),_0x5899d0[_0xa826('0x26')]+_0xa826('0x64'));}else{_0x5899d0['message']=_0xa826('0x65');ut[_0xa826('0x62')](_0xa826('0x63'),_0x5899d0[_0xa826('0x26')]+_0xa826('0x66'));}emitCampaignPreview(_0x5899d0);}}Preview[_0xa826('0xf')]['loopCampaigns']=function(){var _0x35376c=this;setInterval(function(){_0x35376c[_0xa826('0x67')]();},0x7cf);};Preview[_0xa826('0xf')][_0xa826('0x67')]=function(){var _0x258e57=this['campaignsPreview'];this[_0xa826('0x68')]+=0x1;for(var _0x317682 in _0x258e57){if(_0x258e57[_0xa826('0x69')](_0x317682)&&(_0x258e57[_0x317682][_0xa826('0x33')]===_0xa826('0x6a')||_0x258e57[_0x317682][_0xa826('0x33')]===_0xa826('0x6b'))&&_0x258e57[_0x317682][_0xa826('0x25')]===_0xa826('0x6c')){if(this[_0xa826('0x68')]>0x7){this[_0xa826('0x68')]=0x0;this[_0xa826('0x6d')]();}}if(_0x258e57['hasOwnProperty'](_0x317682)&&_0x258e57[_0x317682][_0xa826('0x33')]===_0xa826('0x6a')&&_0x258e57[_0x317682][_0xa826('0x25')]==='outbound'){if(_0x258e57[_0x317682][_0xa826('0x32')]){this[_0xa826('0x6e')](_0x258e57[_0x317682]);if(_0x258e57[_0x317682][_0xa826('0x6f')])this[_0xa826('0x70')](_0x258e57[_0x317682]);}else{notSendMessagesQueue(_0x258e57[_0x317682]);}}}};Preview[_0xa826('0xf')]['clearZombieChannel']=function(_0x922dec){var _0x450774=this;this[_0xa826('0x12')][_0xa826('0x10')](function(){if(!_[_0xa826('0x71')](_0x450774[_0xa826('0x16')][_0x922dec])){loggerAction[_0xa826('0x5a')]('[clearZombieChannels][talking]',_0x922dec,_0xa826('0x72'),_0x450774['actions'][_0x922dec]['queue'],'originated:\x20',JSON[_0xa826('0x5c')](_0x450774[_0xa826('0x13')][_0x450774[_0xa826('0x16')][_0x922dec][_0xa826('0x73')]]['originated']),_0xa826('0x74'),JSON['stringify'](_0x450774['campaignsPreview'][_0x450774[_0xa826('0x16')][_0x922dec][_0xa826('0x73')]]['pTalking']),JSON[_0xa826('0x5c')](_0x450774[_0xa826('0x16')][_0x922dec]['dialAnswer']),JSON['stringify'](_['pick'](_0x450774['actions'][_0x922dec],['contactId','UserId','VoiceQueueId',_0xa826('0x75')])));return ami['Action']({'action':_0xa826('0x76'),'channel':_0x450774['actions'][_0x922dec][_0xa826('0x77')]})[_0xa826('0x78')](function(_0x407e8b){if(_0x407e8b[_0xa826('0x4d')]===_0xa826('0x79')){setTimeout(function(){if(_0x450774['actions'][_0x922dec]){ut[_0xa826('0x7a')](_0x450774['campaignsPreview'][_0x450774['actions'][_0x922dec][_0xa826('0x73')]],_0xa826('0x7b'));if(_0x450774['actions'][_0x922dec][_0xa826('0x7c')]===!![]){ut[_0xa826('0x7d')](_0x450774[_0xa826('0x13')][_0x450774['actions'][_0x922dec][_0xa826('0x73')]],_0xa826('0x7b'));ut[_0xa826('0x7e')](_0xa826('0x7f')+_0x922dec,_0x450774[_0xa826('0x16')][_0x922dec][_0xa826('0x73')]);}ut[_0xa826('0x7e')](_0xa826('0x80')+_0x922dec,_0x450774['actions'][_0x922dec][_0xa826('0x73')]);delete _0x450774[_0xa826('0x16')][_0x922dec];}},0x2328);}});}});};Preview[_0xa826('0xf')][_0xa826('0x6d')]=function(){var _0x3f3e8b=this;loggerAction['info'](_0xa826('0x81'),_[_0xa826('0x82')](this[_0xa826('0x16')]));for(var _0x5a1362 in this[_0xa826('0x16')]){if(_0x3f3e8b[_0xa826('0x16')]['hasOwnProperty'](_0x5a1362)){_0x3f3e8b[_0xa826('0x83')](_0x5a1362);}}};Preview[_0xa826('0xf')][_0xa826('0x70')]=function(_0x1cd13d){var _0x334bd2=this;rpcDb[_0xa826('0x84')](_0x1cd13d['id'],ut[_0xa826('0x85')](this[_0xa826('0x17')]))[_0xa826('0x86')](function(_0x2287ea){if(!_[_0xa826('0x71')](_0x2287ea)){for(var _0x4a7ba6=0x0;_0x4a7ba6<_0x2287ea[_0xa826('0x87')];_0x4a7ba6+=0x1){if(ut[_0xa826('0x88')](_0x2287ea[_0x4a7ba6][_0xa826('0x89')])<_0x1cd13d[_0xa826('0x8a')]*0x3c){if(_0x2287ea[_0x4a7ba6][_0xa826('0x8b')]&&!_0x2287ea[_0x4a7ba6][_0xa826('0x8b')][_0xa826('0x8c')]){_0x334bd2[_0xa826('0x8d')](_0x2287ea[_0x4a7ba6]['id'])['then'](ut[_0xa826('0x8e')](_0xa826('0x8f')))[_0xa826('0x78')](ut['logger2'](_0xa826('0x8f')));}else{rpcDb[_0xa826('0x90')](_0x2287ea[_0x4a7ba6]['id']);}}else{var _0x2827cc=new Action(_0x2287ea[_0x4a7ba6],_0x1cd13d);_0x2827cc['starttime']=moment()['format'](_0xa826('0x91'));_0x1cd13d[_0xa826('0x92')]+=0x1;ut[_0xa826('0x93')](_0x2827cc,0x17,_0xa826('0x94'));if(_0x1cd13d['dialRecallInQueue']){rpcDb[_0xa826('0x95')](ut[_0xa826('0x96')](_0x2287ea[_0x4a7ba6]));rpcDb[_0xa826('0x97')](_0x2827cc,_0xa826('0x98'));}else{ut[_0xa826('0x93')](_0x2827cc,0x16,_0xa826('0x99'));rpcDb[_0xa826('0x97')](_0x2827cc,_0xa826('0x9a'));rpcDb[_0xa826('0x9b')](_0x2827cc,'[HistoryRecallClose]');}}}}})['catch'](ut['logger2']('[getContactRecallMe]'));};Preview[_0xa826('0xf')][_0xa826('0x6e')]=function(_0x8149d7){_0x8149d7[_0xa826('0x5f')]=!![];if(ut[_0xa826('0x9c')](_0x8149d7[_0xa826('0x29')])){_0x8149d7['message']=_0xa826('0x9d');}else if(!ut[_0xa826('0x9e')](_0x8149d7[_0xa826('0x32')])){_0x8149d7['message']=_0xa826('0x61');}else if(!this[_0xa826('0x9f')](_0x8149d7[_0xa826('0x53')])){if(!this[_0xa826('0x9f')](_0x8149d7[_0xa826('0xa0')])){_0x8149d7[_0xa826('0x4d')]=_0xa826('0xa1');}else{_0x8149d7[_0xa826('0x4d')]=_0xa826('0xa2');}}else{_0x8149d7[_0xa826('0x4d')]=_0xa826('0xa2');}emitCampaignPreview(_0x8149d7);};Preview[_0xa826('0xf')][_0xa826('0xa3')]=function(_0x35cc4e,_0x114603,_0x5a18b0){var _0x14f82f=this;var _0x4cc3ae=this[_0xa826('0x16')][_0x114603];var _0x52f377=this[_0xa826('0x13')][_0x4cc3ae['queue']];var _0xdaf863;if(_0x52f377){switch(_0x5a18b0){case'1':_0x52f377[_0xa826('0xa4')]+=0x1;_0x4cc3ae[_0xa826('0xa5')]+=0x1;_0x4cc3ae['countglobal']=ut['totalGlobal'](_0x4cc3ae);ut['logCustomer'](_0x4cc3ae,0x0,_0xa826('0xa6'));ami[_0xa826('0x24')](_0xa826('0xa7'),ut['buildObj'](_0x4cc3ae,_0xa826('0xa8')));rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xa9'));if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377['dialGlobalMaxRetry']){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb[_0xa826('0x9b')](_0xdaf863,_0xa826('0xad'));}else{if(_0x4cc3ae[_0xa826('0xa5')]>=_0x52f377['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x4cc3ae,_0xa826('0xad'));}else{rpcDb[_0xa826('0xae')](ut[_0xa826('0xaf')](_0x4cc3ae,_0xa826('0xa5'),_0x52f377[_0xa826('0xb0')]),_0x4cc3ae['unlockAgent'],_0x4cc3ae['activeContact']);}}delete this[_0xa826('0x16')][_0x35cc4e[_0xa826('0xb1')]];break;case _0xa826('0xb2'):var _0x3912af=moment()[_0xa826('0x57')](_0xa826('0x91'));_0x4cc3ae['responsetime']=_0x3912af;_0x4cc3ae[_0xa826('0xb3')]=_0x3912af;_0x4cc3ae['dialAnswer']=!![];_0x52f377[_0xa826('0x2a')]+=0x1;logger[_0xa826('0x5a')]('[syncHangup][talking][increment]',_0x4cc3ae[_0xa826('0xb4')],'\x20Queue',_0x52f377[_0xa826('0x26')],'pTalking:\x20',_0x52f377[_0xa826('0x2a')]);ami[_0xa826('0x24')](_0xa826('0xb5'),ut[_0xa826('0xb6')](_0x4cc3ae,_0xa826('0xb7'),this[_0xa826('0x13')][_0x4cc3ae['queue']]));if(_0x52f377['acw']){ami[_0xa826('0x24')]('custom:agentConnectPreview',ut[_0xa826('0xb8')](_0x4cc3ae));}break;case'16':ami[_0xa826('0x24')](_0xa826('0xb9'),ut['buildObj'](_0x4cc3ae,_0xa826('0xba'),this[_0xa826('0x13')][_0x4cc3ae[_0xa826('0x73')]]));emitVoiceQueueChannelRemove(ut[_0xa826('0xb6')](_0x4cc3ae,_0xa826('0xba')));_0x52f377['outboundAnswerCallsDay']+=0x1;_0x52f377[_0xa826('0x2e')]+=0x1;_0x52f377[_0xa826('0x28')]+=0x1;ut[_0xa826('0x7d')](_0x52f377,_0xa826('0xbb'));_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0x4,_0xa826('0xbd'));rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xbe'));rpcDb['createCustomerFinal'](_0x4cc3ae,_0xa826('0xbf'));rpcDb[_0xa826('0xc0')](_0x4cc3ae);_0x52f377['sumDuration']+=_0x4cc3ae['talktime'];_0x52f377[_0xa826('0x2b')]+=_0x4cc3ae[_0xa826('0xc1')];logger['info'](_0xa826('0xc2'),_0x4cc3ae[_0xa826('0xb4')],_0xa826('0xc3'),_0x52f377[_0xa826('0x26')],'pTalking:\x20',_0x52f377['pTalking']);delete this[_0xa826('0x16')][_0x35cc4e[_0xa826('0xb1')]];break;case'BUSY':_0x52f377[_0xa826('0x3b')]+=0x1;_0x4cc3ae[_0xa826('0xc4')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0x5,_0xa826('0xc5'));ami[_0xa826('0x24')](_0xa826('0xc6'),ut['buildObj'](_0x4cc3ae,_0xa826('0xc7')));rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xc8'));if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377['dialGlobalMaxRetry']){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb[_0xa826('0x9b')](_0xdaf863,_0xa826('0xc9'));}else{if(_0x4cc3ae[_0xa826('0xc4')]>=_0x52f377[_0xa826('0xca')]){rpcDb[_0xa826('0x9b')](_0x4cc3ae,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0xa826('0xae')](ut[_0xa826('0xaf')](_0x4cc3ae,_0xa826('0xc4'),_0x52f377[_0xa826('0xcb')]),_0x4cc3ae[_0xa826('0xcc')],_0x4cc3ae[_0xa826('0xcd')]);}}break;case'NOANSWER':_0x52f377[_0xa826('0x40')]+=0x1;_0x4cc3ae[_0xa826('0xce')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut['totalGlobal'](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0x3,_0xa826('0xcf'));ami[_0xa826('0x24')](_0xa826('0xd0'),ut['buildObj'](_0x4cc3ae,_0xa826('0xd1')));rpcDb[_0xa826('0x97')](_0x4cc3ae,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377['dialGlobalMaxRetry']){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb[_0xa826('0x9b')](_0xdaf863,_0xa826('0xd2'));}else{if(_0x4cc3ae[_0xa826('0xce')]>=_0x52f377[_0xa826('0xd3')]){rpcDb['createCustomerFinal'](_0x4cc3ae,_0xa826('0xd4'));}else{rpcDb[_0xa826('0xae')](ut[_0xa826('0xaf')](_0x4cc3ae,_0xa826('0xce'),_0x52f377['dialNoAnswerRetryFrequency']),_0x4cc3ae[_0xa826('0xcc')],_0x4cc3ae[_0xa826('0xcd')]);}}break;case _0xa826('0xd5'):_0x52f377[_0xa826('0x3c')]+=0x1;_0x4cc3ae[_0xa826('0xd6')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0x8,'Congestion');ami['emit'](_0xa826('0xd7'),ut[_0xa826('0xb6')](_0x4cc3ae,_0xa826('0xd8')));rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xd9'));if(ut['totalGlobal'](_0x4cc3ae)>=_0x52f377['dialGlobalMaxRetry']){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,'Global');rpcDb['createCustomerFinal'](_0xdaf863,_0xa826('0xda'));}else{if(_0x4cc3ae[_0xa826('0xd6')]>=_0x52f377[_0xa826('0xdb')]){rpcDb[_0xa826('0x9b')](_0x4cc3ae,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0xa826('0xaf')](_0x4cc3ae,_0xa826('0xd6'),_0x52f377[_0xa826('0xcb')]),_0x4cc3ae[_0xa826('0xcc')],_0x4cc3ae[_0xa826('0xcd')]);}}break;case _0xa826('0xdc'):_0x52f377['outboundRejectCallsDay']+=0x1;_0x4cc3ae[_0xa826('0xdd')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0x14,_0xa826('0xde'));ami['emit'](_0xa826('0xdf'),ut['buildObj'](_0x4cc3ae,_0xa826('0xe0')));rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xe1'));if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377[_0xa826('0xe2')]){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0x14,_0xa826('0xde'));rpcDb[_0xa826('0x9b')](_0xdaf863,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x4cc3ae[_0xa826('0xdd')]>=_0x52f377[_0xa826('0xe3')]){rpcDb[_0xa826('0x9b')](_0x4cc3ae,_0xa826('0xe4'));}else{rpcDb[_0xa826('0xae')](ut[_0xa826('0xaf')](_0x4cc3ae,_0xa826('0xdd'),_0x52f377[_0xa826('0xe5')]),_0x4cc3ae[_0xa826('0xcc')],_0x4cc3ae[_0xa826('0xcd')]);}}break;case _0xa826('0xe6'):_0x52f377['outboundAbandonedCallsDay']+=0x1;_0x4cc3ae[_0xa826('0xe7')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0xb,_0xa826('0xe8'));rpcDb[_0xa826('0x97')](_0x4cc3ae,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377[_0xa826('0xe2')]){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,'Global');rpcDb[_0xa826('0x9b')](_0xdaf863,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x4cc3ae[_0xa826('0xe9')]>=_0x52f377[_0xa826('0xea')]){rpcDb['createCustomerFinal'](_0x4cc3ae,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xa826('0xae')](ut[_0xa826('0xaf')](_0x4cc3ae,'countabandonedretry',_0x52f377['dialAbandonedRetryFrequency']),_0x4cc3ae[_0xa826('0xcc')],_0x4cc3ae['activeContact']);}}break;case'18':_0x52f377[_0xa826('0x43')]+=0x1;_0x4cc3ae['countmachineretry']+=0x1;_0x4cc3ae['countglobal']=ut[_0xa826('0xaa')](_0x4cc3ae);ut['logCustomer'](_0x4cc3ae,0x12,_0x35cc4e[_0xa826('0xeb')]||_0x35cc4e['dialstatus']);ami[_0xa826('0x24')]('custom:amd',ut['buildObj'](_0x4cc3ae,_0xa826('0xec')));rpcDb[_0xa826('0x97')](_0x4cc3ae,'[callProgressDetectingCustomer][hangupInAMD]');if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377['dialGlobalMaxRetry']){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb['createCustomerFinal'](_0xdaf863,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb['createCustomerFinal'](_0x4cc3ae,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0xa826('0x16')][_0x35cc4e['linkedid']];break;case'19':_0x52f377[_0xa826('0x43')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut['logCustomer'](_0x4cc3ae,0x13,_0x35cc4e[_0xa826('0xeb')]||_0x35cc4e[_0xa826('0xed')]);ami[_0xa826('0x24')](_0xa826('0xee'),ut['buildObj'](_0x4cc3ae,_0xa826('0xec')));rpcDb['createCustomerHistory'](_0x4cc3ae,_0xa826('0xef'));if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377[_0xa826('0xe2')]){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb[_0xa826('0x9b')](_0xdaf863,_0xa826('0xef'));}else{rpcDb[_0xa826('0x9b')](_0x4cc3ae,_0xa826('0xef'));}delete this[_0xa826('0x16')][_0x35cc4e[_0xa826('0xb1')]];break;default:if(_0x4cc3ae[_0xa826('0x7c')]){ut[_0xa826('0x7d')](_0x52f377,_0xa826('0xf0'));ut['loggerError'](_0xa826('0xf1')+_0x52f377['name'],_0x35cc4e);}_0x52f377[_0xa826('0x43')]+=0x1;_0x4cc3ae[_0xa826('0xbc')]=ut[_0xa826('0xaa')](_0x4cc3ae);ut[_0xa826('0x93')](_0x4cc3ae,0xc,_0x35cc4e[_0xa826('0xeb')]||_0x35cc4e[_0xa826('0xed')]);rpcDb[_0xa826('0x97')](_0x4cc3ae,_0xa826('0xf2'));if(ut[_0xa826('0xaa')](_0x4cc3ae)>=_0x52f377[_0xa826('0xe2')]){_0xdaf863=ut[_0xa826('0xab')](_0x4cc3ae,0xf,_0xa826('0xac'));rpcDb['createCustomerFinal'](_0xdaf863,_0xa826('0xf3'));}else{rpcDb[_0xa826('0x9b')](_0x4cc3ae,_0xa826('0xf3'));}delete this['actions'][_0x35cc4e[_0xa826('0xb1')]];}if(!(_0x4cc3ae[_0xa826('0x7c')]&&_0x5a18b0==='16')){ut[_0xa826('0x7a')](_0x52f377,'[callProgressDetectingCustomer]');logger[_0xa826('0x5a')](_0xa826('0xf4'),_0x4cc3ae[_0xa826('0xb4')],_0xa826('0xc3'),_0x52f377[_0xa826('0x26')],_0xa826('0xf5'),_0x52f377[_0xa826('0x60')]);}if(_0x5a18b0!=='ANSWER'){delete this[_0xa826('0x16')][_0x35cc4e[_0xa826('0xb1')]];delete this[_0xa826('0x16')][_0x35cc4e[_0xa826('0xf6')]];}}};Preview[_0xa826('0xf')][_0xa826('0xf7')]=function(_0x3d10a6,_0x24660b,_0x2e8c5c){if(_[_0xa826('0xf8')](_0x24660b)&&'object'!==typeof _0x24660b){return;}if(_[_0xa826('0xf8')](_0x2e8c5c)&&_0xa826('0xf9')!==typeof _0x2e8c5c){return;}switch(_0x2e8c5c['reason']){case'0':ut[_0xa826('0xfa')](_0x3d10a6,0x0,_0xa826('0xa6'));rpcDb[_0xa826('0xfb')](_0x3d10a6,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xa826('0xfa')](_0x3d10a6,0x3,_0xa826('0xcf'));rpcDb[_0xa826('0xfb')](_0x3d10a6,_0xa826('0xfc'));break;case'5':ut[_0xa826('0xfa')](_0x3d10a6,0x5,_0xa826('0xc5'));rpcDb['createAgentHistory'](_0x3d10a6,'[callProgressDetectingAgent][logBusy]');break;case'8':ut['logAgent'](_0x3d10a6,0x8,_0xa826('0xfd'));rpcDb[_0xa826('0xfb')](_0x3d10a6,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut['logAgent'](_0x3d10a6,0x16,_0xa826('0xfe'));rpcDb[_0xa826('0xfb')](_0x3d10a6,_0xa826('0xff'));break;default:ut[_0xa826('0xfa')](_0x3d10a6,0xc,_0x2e8c5c[_0xa826('0x100')]);rpcDb[_0xa826('0xfb')](_0x3d10a6,_0xa826('0x101'));}ut[_0xa826('0x7a')](_0x24660b,_0xa826('0x102'));logger['info'](_0xa826('0x103'),_0x3d10a6[_0xa826('0xb4')],_0xa826('0xc3'),_0x24660b[_0xa826('0x26')],_0xa826('0xf5'),_0x24660b['originated']);delete this['actions'][_0x3d10a6[_0xa826('0xb4')]];};Preview[_0xa826('0xf')]['checkInBlack']=function(_0x358845,_0x265609,_0x569194,_0x2105d4,_0x500ecc){var _0x4e55a3=this;return new BPromise(function(_0x5d207d,_0x485112){if(_[_0xa826('0x71')](_0x265609)||_[_0xa826('0x71')](_0x265609[_0xa826('0x104')])||_[_0xa826('0x71')](_0x265609[_0xa826('0x104')]['phone'])||_['isNil'](_0x265609[_0xa826('0x105')])){_0x485112(ut[_0xa826('0x4d')](_0xa826('0x106'),_0x2105d4,_0x500ecc));return;}var _0x4a3821=uuid['v4']();var _0x561ded=_0x4e55a3[_0xa826('0x13')][_0x265609[_0xa826('0x72')]['name']];var _0x48a02c=_0x569194?_0x4e55a3[_0xa826('0x17')][_0x569194]['id']:undefined;_0x4e55a3[_0xa826('0x16')][_0x4a3821]=new Action(_0x265609,_0x561ded,_0x4a3821,_0x569194,_0x48a02c);var _0x53e503=_0x4e55a3[_0xa826('0x16')][_0x4a3821];_0x53e503['unlockAgent']=_0x2105d4;_0x53e503[_0xa826('0xcd')]=_0x500ecc;_0x53e503[_0xa826('0x107')]=_0x569194;if(_[_0xa826('0x108')](_0x358845)){_0x4e55a3['execCall'](_0x53e503,_0x561ded,_0x265609,_0x569194)[_0xa826('0x86')](function(_0x56ee30){logger[_0xa826('0x5a')]('[Preview][execCall][success]',_0xa826('0x109')+_0x53e503[_0xa826('0x73')]+'\x20IdHopper:\x20'+_0x53e503['idContact'],JSON[_0xa826('0x5c')](_0x56ee30));ami['emit'](_0xa826('0x10a'),ut[_0xa826('0xb6')](_0x53e503,_0xa826('0x10b'),_0x4e55a3[_0xa826('0x13')][_0x53e503[_0xa826('0x73')]]));_0x5d207d(ut[_0xa826('0x4d')]('Calling'));})[_0xa826('0x78')](function(_0x5f3d6f){ut[_0xa826('0x62')]('[Preview][execCall][failure]',_0x5f3d6f);_0x485112(ut[_0xa826('0x4d')](_0xa826('0x10c'),_0x2105d4,_0x500ecc));});}else{_0x561ded[_0xa826('0x3a')]+=0x1;ut[_0xa826('0x10d')](_0x53e503);rpcDb[_0xa826('0x10e')](_0x53e503,_0xa826('0x10f'));delete _0x4e55a3[_0xa826('0x16')][_0x4a3821];_0x485112(ut[_0xa826('0x4d')](_0xa826('0x110'),_0x2105d4,_0x500ecc));}});};Preview[_0xa826('0xf')][_0xa826('0x9f')]=function(_0x456322){return!_[_0xa826('0x71')](_0x456322)&&!_[_0xa826('0x71')](_0x456322[_0xa826('0x26')])&&!_[_0xa826('0x71')](_0x456322[_0xa826('0x54')])&&_0x456322[_0xa826('0x54')]&&!_[_0xa826('0x71')](this[_0xa826('0x15')][util[_0xa826('0x57')]('SIP/%s',_0x456322[_0xa826('0x26')])])&&!_[_0xa826('0x71')](this[_0xa826('0x15')][util[_0xa826('0x57')](_0xa826('0x111'),_0x456322[_0xa826('0x26')])][_0xa826('0x76')])&&(this[_0xa826('0x15')][util['format'](_0xa826('0x111'),_0x456322[_0xa826('0x26')])][_0xa826('0x76')]===_0xa826('0x112')||this[_0xa826('0x15')][util['format']('SIP/%s',_0x456322['name'])][_0xa826('0x76')]===_0xa826('0x113'));};Preview[_0xa826('0xf')][_0xa826('0x8d')]=function(_0x48733d,_0x53bdb9){var _0x23fc60=this;return new BPromise(function(_0x13c381,_0x36076e){_0x23fc60['execRun'](_0x48733d,_0x53bdb9)[_0xa826('0x86')](function(_0x435071){_0x13c381(_['pick'](_0x435071,[_0xa826('0x4d')]));})[_0xa826('0x78')](function(_0x1fc9bf){if(_0x1fc9bf[_0xa826('0x114')]){rpcDb[_0xa826('0x115')](_0x48733d);}if(_0x1fc9bf[_0xa826('0x54')]){rpcDb[_0xa826('0x90')](_0x48733d);}_0x36076e(_[_0xa826('0x116')](_0x1fc9bf,[_0xa826('0x4d')]));});});};Preview[_0xa826('0xf')][_0xa826('0x117')]=function(_0x6f379d,_0x90f7b8){var _0x207160=this;return new BPromise(function(_0x3bed73,_0x4b24f3){var _0x54ec42,_0x27c948;rpcDb[_0xa826('0x118')](_0x6f379d)[_0xa826('0x86')](function(_0x573e58){if(!_[_0xa826('0x71')](_0x573e58[0x0])){_0x27c948=_0x573e58[0x0][_0xa826('0x119')]?![]:!![];_0x54ec42=_0x573e58[0x0]['recallme']?!![]:![];_0x54ec42=_0x90f7b8?!![]:_0x54ec42;}var _0x357d23=_0x207160['validateContact'](_0x573e58);if(_0x357d23[_0xa826('0x11a')]){rpcDb[_0xa826('0x11b')](_['pick'](_0x573e58[0x0],[_0xa826('0x105'),_0xa826('0x11c')]))[_0xa826('0x86')](function(_0x26418e){_0x207160[_0xa826('0x11d')](_0x26418e,_0x573e58[0x0],_0x90f7b8,_0x27c948,_0x54ec42)['then'](function(_0x5defe6){_0x3bed73(_0x5defe6);})[_0xa826('0x78')](function(_0x407c8d){_0x4b24f3(_0x407c8d);});})['catch'](function(_0x1892d6){ut[_0xa826('0x62')](_0xa826('0x11e'),_0x1892d6);_0x4b24f3(ut[_0xa826('0x4d')]('Call\x20unsuccessful',_0x27c948,_0x54ec42));});}else{_0x4b24f3(ut['message'](_0x357d23[_0xa826('0x4d')],_0x27c948,_0x54ec42));}})[_0xa826('0x78')](function(_0xb4c950){ut[_0xa826('0x62')](_0xa826('0x11f'),_0xb4c950);_0x4b24f3(ut[_0xa826('0x4d')](_0xa826('0x120'),![],!![]));});});};Preview[_0xa826('0xf')][_0xa826('0x121')]=function(_0x51a40b){if(_[_0xa826('0x71')](_0x51a40b)||_[_0xa826('0x108')](_0x51a40b)||!_[_0xa826('0x71')](_0x51a40b[0x0][_0xa826('0x8b')])&&_[_0xa826('0x71')](_0x51a40b[0x0][_0xa826('0x8b')]['name'])){ut[_0xa826('0x62')](_0xa826('0x122'),_0x51a40b);return{'isValid':![],'message':_0xa826('0x123')};}var _0xa79702=this[_0xa826('0x13')][_0x51a40b[0x0][_0xa826('0x72')]['name']];_0xa79702[_0xa826('0x4d')]=_0xa826('0xa2');if(_[_0xa826('0x71')](_0xa79702)){ut[_0xa826('0x62')]('[Preview][validateContact][Empty\x20Campaign]',_0xa79702);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0xa79702[_0xa826('0x53')])){ut[_0xa826('0x62')](_0xa826('0x124'),_0xa826('0x125')+_0xa79702['name']+_0xa826('0x126'));if(!this[_0xa826('0x9f')](_0xa79702['TrunkBackup'])){ut[_0xa826('0x62')](_0xa826('0x124'),_0xa79702[_0xa826('0x26')]+_0xa826('0x127'));return{'isValid':![],'message':_0xa826('0x128')};}}if(!ut[_0xa826('0x9e')](_0xa79702[_0xa826('0x32')])){ut[_0xa826('0x62')]('[Preview][validateContact][Campaign\x20Active]',_0xa79702[_0xa826('0x26')]+'\x20Not\x20Active');return{'isValid':![],'message':_0xa826('0x125')+_0xa79702[_0xa826('0x26')]+_0xa826('0x129')};}return{'isValid':!![],'message':_0xa826('0x12a')};};Preview[_0xa826('0xf')][_0xa826('0x12b')]=function(_0x3160d6,_0x280eba,_0x33b6ca,_0x4a86c8){var _0x24f63b=this;return new BPromise(function(_0x445973,_0x2a38b2){var _0x389893=_0x3160d6['uniqueid'];var _0x504357=_0x24f63b['isTrunkReachable'](_0x280eba[_0xa826('0x53')])?util[_0xa826('0x57')](_0xa826('0x12c'),_0x280eba[_0xa826('0x53')][_0xa826('0x26')],_[_0xa826('0x71')](_0x280eba[_0xa826('0x37')])?'':_0x280eba[_0xa826('0x37')]['trim']()||'',_0x280eba[_0xa826('0x12d')]>0x0?_0x33b6ca['Contact'][_0xa826('0x12e')]['substring'](_0x280eba[_0xa826('0x12d')]):_0x33b6ca['Contact'][_0xa826('0x12e')]):util[_0xa826('0x57')]('SIP/%s/%s%s',_[_0xa826('0x71')](_0x280eba['TrunkBackup'])?_0x280eba[_0xa826('0x53')]['name']:_0x280eba[_0xa826('0xa0')][_0xa826('0x26')],_[_0xa826('0x71')](_0x280eba[_0xa826('0x37')])?'':_0x280eba[_0xa826('0x37')][_0xa826('0x12f')]()||'',_0x280eba['dialCutDigit']>0x0?_0x33b6ca[_0xa826('0x104')]['phone']['substring'](_0x280eba[_0xa826('0x12d')]):_0x33b6ca['Contact']['phone']);var _0x53eab7=_0x24f63b[_0xa826('0x9f')](_0x280eba[_0xa826('0x53')])?ut[_0xa826('0x130')](_0x280eba[_0xa826('0x53')][_0xa826('0x55')],_0x280eba['dialOriginateCallerIdName'],_0x280eba[_0xa826('0x131')]>0x0?ut[_0xa826('0x132')](_0x280eba['dialOriginateCallerIdNumber'],_0x280eba[_0xa826('0x131')]):_0x280eba[_0xa826('0x35')]):ut['getCallerId'](_[_0xa826('0x71')](_0x280eba[_0xa826('0xa0')])?_0x280eba[_0xa826('0x53')][_0xa826('0x55')]:_0x280eba['TrunkBackup'][_0xa826('0x55')],_0x280eba[_0xa826('0x34')],_0x280eba[_0xa826('0x131')]>0x0?ut['getCallerIdRandom'](_0x280eba[_0xa826('0x35')],_0x280eba[_0xa826('0x131')]):_0x280eba[_0xa826('0x35')]);if(_0x53eab7){_0x3160d6[_0xa826('0x133')]=ut[_0xa826('0x134')](_0x53eab7);_0x3160d6[_0xa826('0x135')]=ut[_0xa826('0x136')](_0x53eab7);}var _0x4f92cc=ut['addVariables'](_0x280eba,_0x33b6ca,_0x504357,_0x53eab7,_0x389893,_0x3160d6);_['merge'](_0x3160d6,ut[_0xa826('0x137')](_0x4f92cc));_0x3160d6[_0xa826('0x138')]=moment()['format'](_0xa826('0x91'));ami[_0xa826('0x139')](ut[_0xa826('0x13a')](_0x3160d6,_0x280eba,_0x4f92cc,_0x3160d6['activeContact'],_0x4a86c8))[_0xa826('0x86')](function(_0x2455c3){_0x280eba['originated']+=0x1;logger['info'](_0xa826('0x13b'),_0x389893,_0xa826('0xc3'),_0x280eba['name'],_0xa826('0xf5'),_0x280eba[_0xa826('0x60')]);_0x445973(_0x2455c3);})[_0xa826('0x78')](function(_0xe5a929){ut[_0xa826('0xfa')](_0x3160d6,0xe,_0xa826('0x13c'));rpcDb[_0xa826('0xfb')](_0x3160d6,'[originateFailure][logOriginateFailure]');_0x2a38b2(_0xe5a929);});});};Preview[_0xa826('0xf')][_0xa826('0x1e')]=function(_0x9aa0a4){if(this[_0xa826('0x16')][_0x9aa0a4[_0xa826('0xb1')]]){this[_0xa826('0x16')][_0x9aa0a4[_0xa826('0xb1')]]['channel']=_0x9aa0a4[_0xa826('0x77')];}};Preview[_0xa826('0xf')][_0xa826('0x19')]=function(_0x179f34){var _0x5d7e94=this;var _0x4bbc96=this[_0xa826('0x16')][_0x179f34[_0xa826('0x13d')]];if(_0x4bbc96){if(_0x4bbc96['lookAgent']&&this['agents'][_0x4bbc96[_0xa826('0x107')]]){ut[_0xa826('0x13e')](_0x4bbc96,this[_0xa826('0x17')][_0x4bbc96[_0xa826('0x107')]]['name'],this[_0xa826('0x17')][_0x4bbc96[_0xa826('0x107')]]['id']);}var _0x32ef84=_['clone'](_0x4bbc96);_0x32ef84[_0xa826('0x13f')]=moment()[_0xa826('0x57')](_0xa826('0x91'));var _0x581e5b=_0x5d7e94[_0xa826('0x13')][_0x4bbc96[_0xa826('0x73')]];if(ut[_0xa826('0x140')](_0x179f34[_0xa826('0x141')])){if(_0x4bbc96['unlockAgent']){rpcDb[_0xa826('0x115')](_0x4bbc96['idContact']);}if(_0x4bbc96[_0xa826('0xcd')]){rpcDb[_0xa826('0x90')](_0x4bbc96[_0xa826('0x142')]);}ami[_0xa826('0x24')](_0xa826('0x143'),ut[_0xa826('0xb6')](_0x4bbc96,_0xa826('0x144'),this[_0xa826('0x13')][_0x4bbc96[_0xa826('0x73')]]));this['callProgressDetectingAgent'](_0x32ef84,_0x581e5b,_0x179f34);}else{_0x4bbc96[_0xa826('0x138')]=moment()[_0xa826('0x57')](_0xa826('0x91'));ut[_0xa826('0xfa')](_0x32ef84,0x4,_0xa826('0xbd'));rpcDb[_0xa826('0xfb')](_0x32ef84,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xa826('0xf')][_0xa826('0x145')]=function(_0x31efdb){var _0xb248b9=this;var _0x3db329=this[_0xa826('0x16')][_0x31efdb[_0xa826('0xb1')]];var _0x31343a;if(_0x3db329){_0x31343a=this[_0xa826('0x13')][_0x3db329[_0xa826('0x73')]];logger[_0xa826('0x5a')](_0xa826('0x146'),_0x31efdb[_0xa826('0xb1')],'\x20Queue',_0x31343a[_0xa826('0x26')],'pTalking:\x20',_0x31343a[_0xa826('0x2a')]);}if(this[_0xa826('0x16')][_0x31efdb[_0xa826('0xb1')]]&&_0x31efdb['linkedid']!==_0x31efdb[_0xa826('0xb4')]){if(_0x31efdb[_0xa826('0x147')]==='16'&&this[_0xa826('0x16')][_0x31efdb[_0xa826('0xb1')]][_0xa826('0x7c')]){this[_0xa826('0xa3')](_0x31efdb,_0x31efdb['linkedid'],_0x31efdb[_0xa826('0x147')]);}else if(this[_0xa826('0x16')][_0x31efdb[_0xa826('0xb1')]][_0xa826('0x7c')]){logger[_0xa826('0x5a')]('[syncHangup][talking][cause]',_0x31efdb[_0xa826('0xb1')],_0x31efdb[_0xa826('0x147')],_0xa826('0xc3'),_0x31343a['name'],_0xa826('0x74'),_0x31343a[_0xa826('0x2a')]);this['callProgressDetectingCustomer'](_0x31efdb,_0x31efdb[_0xa826('0xb1')],_0x31efdb[_0xa826('0x147')]);}}else if(_0x3db329&&_[_0xa826('0x71')](_0x3db329[_0xa826('0x148')])&&_0x31343a[_0xa826('0x149')]&&_0x31efdb[_0xa826('0xb1')]===_0x31efdb[_0xa826('0xb4')]&&_[_0xa826('0x71')](_0x31efdb[_0xa826('0x100')])&&_0x31efdb[_0xa826('0x147')]==='16'&&_0x31efdb[_0xa826('0x14a')]==='6'&&_[_0xa826('0xf8')](_0x3db329[_0xa826('0x14b')])){if(_0x3db329[_0xa826('0xcc')]){rpcDb[_0xa826('0x115')](_0x3db329[_0xa826('0x142')]);}if(_0x3db329['activeContact']){rpcDb[_0xa826('0x90')](_0x3db329[_0xa826('0x142')]);}_0x31efdb['reason']='22';this['callProgressDetectingAgent'](_0x3db329,_0x31343a,_0x31efdb);}else if(_0x3db329&&_0x3db329[_0xa826('0x14b')]){if(_0x31efdb[_0xa826('0x147')]==='16'&&this['actions'][_0x31efdb[_0xa826('0xb1')]][_0xa826('0x7c')]){logger['info'](_0xa826('0x14c'),_0x31efdb[_0xa826('0xb1')],_0x31efdb[_0xa826('0x147')],_0xa826('0xc3'),_0x31343a[_0xa826('0x26')],_0xa826('0x74'),_0x31343a['pTalking']);this['callProgressDetectingCustomer'](_0x31efdb,_0x31efdb['linkedid'],_0x31efdb[_0xa826('0x147')]);}else if(this[_0xa826('0x16')][_0x31efdb[_0xa826('0xb1')]][_0xa826('0x7c')]){logger['info'](_0xa826('0x14d'),_0x31efdb[_0xa826('0xb1')],_0x31efdb['cause'],_0xa826('0xc3'),_0x31343a[_0xa826('0x26')],_0xa826('0x74'),_0x31343a[_0xa826('0x2a')]);this[_0xa826('0xa3')](_0x31efdb,_0x31efdb[_0xa826('0xb1')],_0x31efdb['cause']);}}};Preview[_0xa826('0xf')]['syncDialEnd']=function(_0x28a654){if(this[_0xa826('0x16')][_0x28a654[_0xa826('0xf6')]]&&_0x28a654[_0xa826('0xf6')]!==_0x28a654[_0xa826('0x14e')]){this[_0xa826('0xa3')](_0x28a654,_0x28a654[_0xa826('0xf6')],_0x28a654[_0xa826('0xed')]);}};Preview[_0xa826('0xf')][_0xa826('0x14f')]=function(_0x801363){if(this[_0xa826('0x16')][_0x801363[_0xa826('0xb1')]]&&_0x801363[_0xa826('0xb1')]!==_0x801363[_0xa826('0xb4')]&&!this[_0xa826('0x16')][_0x801363[_0xa826('0xb1')]]['dialAnswer']){if(_0x801363[_0xa826('0x147')]==='1'){this[_0xa826('0xa3')](_0x801363,_0x801363[_0xa826('0xb1')],_0x801363[_0xa826('0x147')]);}}};Preview['prototype'][_0xa826('0x150')]=function(_0x527cc4,_0x3c1fb7,_0x2865f1){if(this[_0xa826('0x16')][_0x527cc4]){if(_[_0xa826('0x71')](this[_0xa826('0x16')][_0x527cc4][_0xa826('0x151')])){this[_0xa826('0x16')][_0x527cc4]['variables']={};}this[_0xa826('0x16')][_0x527cc4]['variables'][_0x3c1fb7]=_0x2865f1;}};Preview['prototype'][_0xa826('0x20')]=function(_0xeb829b){try{if(!_[_0xa826('0x71')](_0xeb829b)){if(ut[_0xa826('0x152')](_['keys'](_0xeb829b['variable'])[0x0])){this['addVariable'](_0xeb829b[_0xa826('0xb4')],_['keys'](_0xeb829b[_0xa826('0x153')])[0x0],_0xeb829b[_0xa826('0x154')]);}}}catch(_0x5e34a6){logger[_0xa826('0x155')](_0xa826('0x156'),util[_0xa826('0x157')](_0x5e34a6,{'showHidden':![],'depth':null}));}};Preview[_0xa826('0xf')]['syncAttendedTransfer']=function(_0x11ae2e){if(_0x11ae2e){if(this['actions'][_0x11ae2e[_0xa826('0x158')]]){this[_0xa826('0x16')][_0x11ae2e[_0xa826('0x158')]][_0xa826('0x14b')]=!![];}}};Preview[_0xa826('0xf')][_0xa826('0x159')]=function(_0x2ef89a){if(_0x2ef89a){if(this['actions'][_0x2ef89a['transfererlinkedid']]){this[_0xa826('0x16')][_0x2ef89a[_0xa826('0x15a')]][_0xa826('0x14b')]=!![];}}};module[_0xa826('0x15b')]=Preview;
\ No newline at end of file
index 5c28915..f866b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaea6=['from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','catch','[createHistory]\x20','then','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','connectedlinename','membername','context'];(function(_0xc6b076,_0x301641){var _0x9b702c=function(_0x50069c){while(--_0x50069c){_0xc6b076['push'](_0xc6b076['shift']());}};_0x9b702c(++_0x301641);}(_0xaea6,0x7b));var _0x6aea=function(_0xfe53c5,_0x1de91a){_0xfe53c5=_0xfe53c5-0x0;var _0x534d2f=_0xaea6[_0xfe53c5];return _0x534d2f;};'use strict';var util=require(_0x6aea('0x0'));var BPromise=require(_0x6aea('0x1'));var logger=require(_0x6aea('0x2'))(_0x6aea('0x3'));var _=require(_0x6aea('0x4'));var cmHopper=require(_0x6aea('0x5'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x6aea('0x6'));var cmHopperBlack=require(_0x6aea('0x7'));var voiceQueueRt=require(_0x6aea('0x8'));var agentReportPreview=require(_0x6aea('0x9'));var voiceQueueReport=require(_0x6aea('0xa'));function loggerCatch(_0x3d93c5){return function(_0x33cf75){logger[_0x6aea('0xb')](_0x3d93c5,util[_0x6aea('0xc')](_0x33cf75,{'showHidden':![],'depth':null}));};}function create(_0x22a21c){return BPromise[_0x6aea('0xd')]()['then'](cmHopperHistory['createHistory'](_0x22a21c))[_0x6aea('0xe')](loggerCatch(_0x6aea('0xf')));}function createAgent(_0x254505){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](agentReportPreview[_0x6aea('0x11')](_0x254505))[_0x6aea('0xe')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x5ccd95){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper[_0x6aea('0x12')](_0x5ccd95,!![]))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x13')));}exports[_0x6aea('0x14')]=function(_0x2a7801){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopperBlack[_0x6aea('0x14')](_0x2a7801))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x15')));};exports[_0x6aea('0x16')]=function(_0x270f6f){return BPromise[_0x6aea('0xd')]()['then'](cmHopper['getContactPreview'](_0x270f6f))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x17')));};exports[_0x6aea('0x11')]=function(_0x1771a4,_0x465ddc){create(_0x1771a4)['catch'](loggerCatch(_0x465ddc));moveContact(_0x1771a4)[_0x6aea('0xe')](loggerCatch(_0x465ddc));};exports['createAgentHistory']=function(_0xd17337,_0xab4fab){createAgent(_0xd17337)['catch'](loggerCatch(_0xab4fab));};exports[_0x6aea('0x18')]=function(_0x22f807,_0x1e3638){create(_0x22f807)['catch'](loggerCatch(_0x1e3638));};exports[_0x6aea('0x19')]=function(_0x15d418,_0x5ae5d1){moveContact(_0x15d418)[_0x6aea('0xe')](loggerCatch(_0x5ae5d1));};exports[_0x6aea('0x1a')]=function(_0x1589a6,_0x36b386,_0x1d9876){if(_0x36b386){_0x1589a6[_0x6aea('0x1b')]=null;}if(_0x1d9876){_0x1589a6[_0x6aea('0x1c')]=![];}return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopper[_0x6aea('0x1a')](_0x1589a6))[_0x6aea('0xe')](loggerCatch('[rescheduleContact]\x20'));};exports['countReScheduled']=function(_0x1a9fe9){return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](cmHopper['countReScheduled'](_0x1a9fe9))['catch'](loggerCatch(_0x6aea('0x1d')));};exports[_0x6aea('0x1e')]=function(_0x7cc2e1){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper[_0x6aea('0x1e')]({'UserId':null},_0x7cc2e1,0x1))[_0x6aea('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x6aea('0x1f')]=function(_0x5c6560){return BPromise['resolve']()[_0x6aea('0x10')](cmHopper['unlockContact']({'active':![]},_0x5c6560,0x1))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x20')));};exports[_0x6aea('0x21')]=function(_0x6e174b){var _0x2f7a74={};_0x2f7a74[_0x6aea('0x22')]=_0x6e174b[_0x6aea('0x22')];_0x2f7a74[_0x6aea('0x23')]=_0x6e174b['uniqueid'];_0x2f7a74['calleridnum']=_0x6e174b[_0x6aea('0x24')];_0x2f7a74[_0x6aea('0x25')]=_0x6e174b[_0x6aea('0x25')];_0x2f7a74['queue']=_0x6e174b['queue'];_0x2f7a74[_0x6aea('0x26')]=_0x6e174b[_0x6aea('0x27')];_0x2f7a74['queuecallerleaveAt']=_0x6e174b[_0x6aea('0x27')];_0x2f7a74[_0x6aea('0x28')]=0x1;_0x2f7a74[_0x6aea('0x29')]=_0x6e174b['endtime'];_0x2f7a74[_0x6aea('0x2a')]=_0x6e174b[_0x6aea('0x2b')];_0x2f7a74[_0x6aea('0x2c')]=_0x6aea('0x2d');_0x2f7a74[_0x6aea('0x2e')]=_0x6aea('0x2f');_0x2f7a74[_0x6aea('0x30')]=0x0;_0x2f7a74[_0x6aea('0x31')]=0x1;_0x2f7a74[_0x6aea('0x32')]=_0x6e174b[_0x6aea('0x2b')];_0x2f7a74[_0x6aea('0x33')]='COMPLETED';return BPromise[_0x6aea('0xd')]()[_0x6aea('0x10')](voiceQueueReport['create'](_0x2f7a74))[_0x6aea('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0x1006be,_0x32c101){return BPromise[_0x6aea('0xd')]()['then'](cmHopper[_0x6aea('0x34')](_0x1006be,_0x32c101))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x35')));};exports[_0x6aea('0x36')]=function(_0x49904f){return BPromise[_0x6aea('0xd')]()['then'](cmHopper[_0x6aea('0x1a')](_0x49904f,!![],!![]))[_0x6aea('0xe')](loggerCatch(_0x6aea('0x37')));};
\ No newline at end of file
+var _0x16ea=['getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','createHistory','catch','[createHistory]\x20','resolve','then','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','lastAssignedTo','create'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x16ea,0x1f2));var _0xa16e=function(_0x56c86d,_0x468b9a){_0x56c86d=_0x56c86d-0x0;var _0x3e7616=_0x16ea[_0x56c86d];return _0x3e7616;};'use strict';var util=require(_0xa16e('0x0'));var BPromise=require(_0xa16e('0x1'));var logger=require(_0xa16e('0x2'))(_0xa16e('0x3'));var _=require(_0xa16e('0x4'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0xa16e('0x5'));var cmHopperBlack=require(_0xa16e('0x6'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0xa16e('0x7'));var voiceQueueReport=require(_0xa16e('0x8'));function loggerCatch(_0x5d0135){return function(_0x252225){logger[_0xa16e('0x9')](_0x5d0135,util[_0xa16e('0xa')](_0x252225,{'showHidden':![],'depth':null}));};}function create(_0x2e1f29){return BPromise['resolve']()['then'](cmHopperHistory[_0xa16e('0xb')](_0x2e1f29))[_0xa16e('0xc')](loggerCatch(_0xa16e('0xd')));}function createAgent(_0x1cf89b){return BPromise[_0xa16e('0xe')]()[_0xa16e('0xf')](agentReportPreview['createHistory'](_0x1cf89b))[_0xa16e('0xc')](loggerCatch(_0xa16e('0xd')));}function moveContact(_0x285d08){return BPromise['resolve']()['then'](cmHopper['moveContactManagedDialer'](_0x285d08,!![]))['catch'](loggerCatch(_0xa16e('0x10')));}exports['checkIsBlackList']=function(_0x311b60){return BPromise[_0xa16e('0xe')]()[_0xa16e('0xf')](cmHopperBlack[_0xa16e('0x11')](_0x311b60))[_0xa16e('0xc')](loggerCatch(_0xa16e('0x12')));};exports[_0xa16e('0x13')]=function(_0x211903){return BPromise[_0xa16e('0xe')]()[_0xa16e('0xf')](cmHopper['getContactPreview'](_0x211903))[_0xa16e('0xc')](loggerCatch(_0xa16e('0x14')));};exports[_0xa16e('0xb')]=function(_0x41725d,_0x5db28e){create(_0x41725d)[_0xa16e('0xc')](loggerCatch(_0x5db28e));moveContact(_0x41725d)['catch'](loggerCatch(_0x5db28e));};exports[_0xa16e('0x15')]=function(_0x5d0d79,_0x39933a){createAgent(_0x5d0d79)[_0xa16e('0xc')](loggerCatch(_0x39933a));};exports['createCustomerHistory']=function(_0x357715,_0x493542){create(_0x357715)[_0xa16e('0xc')](loggerCatch(_0x493542));};exports[_0xa16e('0x16')]=function(_0x22f65b,_0x52c345){moveContact(_0x22f65b)[_0xa16e('0xc')](loggerCatch(_0x52c345));};exports[_0xa16e('0x17')]=function(_0x23cd03,_0x40745e,_0xb42d02){if(_0x40745e){_0x23cd03[_0xa16e('0x18')]=null;}if(_0xb42d02){_0x23cd03[_0xa16e('0x19')]=![];}return BPromise[_0xa16e('0xe')]()['then'](cmHopper[_0xa16e('0x17')](_0x23cd03))[_0xa16e('0xc')](loggerCatch(_0xa16e('0x1a')));};exports[_0xa16e('0x1b')]=function(_0x589de2){return BPromise[_0xa16e('0xe')]()['then'](cmHopper[_0xa16e('0x1b')](_0x589de2))['catch'](loggerCatch(_0xa16e('0x1c')));};exports[_0xa16e('0x1d')]=function(_0x5b62ad){return BPromise[_0xa16e('0xe')]()[_0xa16e('0xf')](cmHopper[_0xa16e('0x1d')]({'UserId':null},_0x5b62ad,0x1))[_0xa16e('0xc')](loggerCatch(_0xa16e('0x1e')));};exports[_0xa16e('0x1f')]=function(_0x3a5f3f){return BPromise[_0xa16e('0xe')]()['then'](cmHopper[_0xa16e('0x1d')]({'active':![]},_0x3a5f3f,0x1))[_0xa16e('0xc')](loggerCatch(_0xa16e('0x20')));};exports[_0xa16e('0x21')]=function(_0x46541f){var _0x4bbdbb={};_0x4bbdbb['type']=_0x46541f[_0xa16e('0x22')];_0x4bbdbb[_0xa16e('0x23')]=_0x46541f[_0xa16e('0x23')];_0x4bbdbb[_0xa16e('0x24')]=_0x46541f[_0xa16e('0x24')];_0x4bbdbb[_0xa16e('0x25')]=_0x46541f[_0xa16e('0x25')];_0x4bbdbb[_0xa16e('0x26')]=_0x46541f[_0xa16e('0x26')];_0x4bbdbb['queuecallerjoinAt']=_0x46541f[_0xa16e('0x27')];_0x4bbdbb[_0xa16e('0x28')]=_0x46541f[_0xa16e('0x27')];_0x4bbdbb[_0xa16e('0x29')]=0x1;_0x4bbdbb[_0xa16e('0x2a')]=_0x46541f[_0xa16e('0x2b')];_0x4bbdbb[_0xa16e('0x2c')]=_0x46541f[_0xa16e('0x2d')];_0x4bbdbb[_0xa16e('0x2e')]='from-sip';_0x4bbdbb[_0xa16e('0x2f')]=_0xa16e('0x30');_0x4bbdbb[_0xa16e('0x31')]=0x0;_0x4bbdbb['assigned']=0x1;_0x4bbdbb[_0xa16e('0x32')]=_0x46541f['membername'];_0x4bbdbb['queuecallerexitreason']='COMPLETED';return BPromise[_0xa16e('0xe')]()['then'](voiceQueueReport[_0xa16e('0x33')](_0x4bbdbb))[_0xa16e('0xc')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xa16e('0x34')]=function(_0x7561d2,_0x9c1550){return BPromise[_0xa16e('0xe')]()['then'](cmHopper[_0xa16e('0x34')](_0x7561d2,_0x9c1550))[_0xa16e('0xc')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xa16e('0x35')]=function(_0x20f71f){return BPromise['resolve']()[_0xa16e('0xf')](cmHopper[_0xa16e('0x17')](_0x20f71f,!![],!![]))['catch'](loggerCatch(_0xa16e('0x36')));};
\ No newline at end of file
index 69e87b6..6806fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc818=['logCustomer','endtime','ringtime','answertime','isFailure','Failure','RECALL','calleridname','BOOKED','uniqueid','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','add','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildAcw','not_inuse','status','push','getDiff','createBody','CampaignId','filterKey','type','campaigntype','active','countglobal','callback','callbackuniqueid','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitterbridged','bridgepeer','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','match','util','moment','../../../../config/logger','env','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','logger','info','inspect','logger2','message','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','\x22\x22\x20<>','isNil','addVariables','Queue','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','updatedAt','XMD-','toUpper','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','logAgent','logLookAgent','membername','UserId'];(function(_0x4a5c5a,_0x1a7816){var _0x4f74d0=function(_0x673704){while(--_0x673704){_0x4a5c5a['push'](_0x4a5c5a['shift']());}};_0x4f74d0(++_0x1a7816);}(_0xc818,0xd9));var _0x8c81=function(_0x571a41,_0x20ab0e){_0x571a41=_0x571a41-0x0;var _0x4f9308=_0xc818[_0x571a41];return _0x4f9308;};'use strict';var util=require(_0x8c81('0x0'));var _=require('lodash');var moment=require(_0x8c81('0x1'));var logger=require(_0x8c81('0x2'))('preview');var ipAgi=process[_0x8c81('0x3')]['XCALLY_IP_AGI']||_0x8c81('0x4');function getSeconds(_0x3f30e5,_0x2d0e33){var _0x57fb47=moment(_0x3f30e5)[_0x8c81('0x5')](0x0);var _0x5c5b62=moment(_0x2d0e33)[_0x8c81('0x5')](0x0);return _0x57fb47[_0x8c81('0x6')](_0x5c5b62,_0x8c81('0x7'));}exports[_0x8c81('0x8')]=function(_0x205956){return function(_0x504a75){logger[_0x8c81('0x9')](_0x205956,util['inspect'](_0x504a75,{'showHidden':![],'depth':null}));};};exports[_0x8c81('0xa')]=function(_0x2352d9,_0x4745f4){logger[_0x8c81('0xb')](_0x2352d9,util[_0x8c81('0xc')](_0x4745f4,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x14dc8c,_0x2aa963){logger['error'](_0x14dc8c,util[_0x8c81('0xc')](_0x2aa963,{'showHidden':![],'depth':null}));};exports[_0x8c81('0xd')]=function(_0x57314c){return function(_0x303cba){logger['info'](_0x57314c,util['inspect'](_0x303cba,{'showHidden':![],'depth':null}));};};exports[_0x8c81('0xe')]=function(_0x51b980,_0x1182ad,_0x20b35e){return{'message':_0x51b980,'unlock':_0x1182ad,'active':_0x20b35e};};exports[_0x8c81('0xf')]=function(_0x3c25ee,_0x1ca3c1,_0x38c6c9){if(!_['isUndefined'](_0x38c6c9)&&_0x8c81('0x10')===typeof _0x38c6c9&&!_[_0x8c81('0x11')](_0x38c6c9)){if(!_['isUndefined'](_0x1ca3c1)&&_0x8c81('0x10')===typeof _0x1ca3c1&&!_[_0x8c81('0x11')](_0x1ca3c1)){return util[_0x8c81('0x12')](_0x8c81('0x13'),_0x1ca3c1,_0x38c6c9);}return util[_0x8c81('0x12')](_0x8c81('0x13'),_0x38c6c9,_0x38c6c9);}if(!_[_0x8c81('0x14')](_0x3c25ee)&&'string'===typeof _0x3c25ee&&!_['isEmpty'](_0x3c25ee)){return _0x3c25ee;}return _0x8c81('0x15');};exports['isActive']=function(_0x20eece){if(_[_0x8c81('0x16')](_0x20eece)){return![];}return _0x20eece;};exports[_0x8c81('0x17')]=function(_0x37bb63,_0x2d2406,_0x151951,_0x2da202,_0x5e7589,_0x2747ce){var _0x89012c={'XMD-QUEUE':_0x2d2406[_0x8c81('0x18')]?_0x2d2406[_0x8c81('0x18')]['name']:'','XMD-CALLERID':_0x2da202,'XMD-CALLERID-PREVIEW':_0x2747ce?util[_0x8c81('0x12')](_0x8c81('0x13'),_0x2747ce['calleridname'],_0x2747ce[_0x8c81('0x19')]):_0x2da202,'XMD-DIALID':_0x5e7589,'XMD-CONTACTID':_0x2d2406[_0x8c81('0x1a')],'XMD-CDRTYPE':_0x8c81('0x1b'),'CALLERID(all)':_0x2da202,'XMD-VOICEQUEUEID':_0x2d2406[_0x8c81('0x1c')],'XMD-DIALCHANNEL':_0x151951,'XMD-DIALTIMEOUT':_0x37bb63['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x8c81('0x12')](_0x8c81('0x1d'),_0x37bb63[_0x8c81('0x1e')]?'g':'',_[_0x8c81('0x11')](_0x37bb63['monitor_format'])?'':_0x8c81('0x1f')),'XMD-DIALURL':_0x37bb63[_0x8c81('0x20')]||'','XMD-AGI':_0x37bb63['dialQueueProject']?util[_0x8c81('0x12')](_0x8c81('0x21'),ipAgi,_0x37bb63['dialQueueProject']):_0x8c81('0x22'),'XMD-AGIAFTER':_0x37bb63[_0x8c81('0x1e')]?util[_0x8c81('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x37bb63[_0x8c81('0x1e')]):_0x8c81('0x22'),'XMD-ORIGINATECALLERIDNUM':_0x2747ce?_0x2747ce[_0x8c81('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0x2747ce?_0x2747ce[_0x8c81('0x24')]:'','XMD-DESTINATION':_0x8c81('0x25'),'SIPADDHEADER':_0x8c81('0x26')};if(!_[_0x8c81('0x11')](_0x37bb63[_0x8c81('0x27')])){_0x89012c[util[_0x8c81('0x12')]('%s',_0x8c81('0x28'))]=_0x37bb63['monitor_format'];_0x89012c[util['format']('%s',_0x8c81('0x29'))]=_0x5e7589;}if(_0x2d2406&&_0x2d2406['Contact']){for(var _0x5b944e in _0x2d2406[_0x8c81('0x2a')]){if(_0x2d2406[_0x8c81('0x2a')][_0x8c81('0x2b')](_0x5b944e)){if(!_['isNil'](_0x2d2406[_0x8c81('0x2a')][_0x5b944e])&&_0x5b944e!=='id'&&_0x5b944e!==_0x8c81('0x2c')&&_0x5b944e!=='createdAt'&&_0x5b944e!==_0x8c81('0x2d')){_0x89012c[util[_0x8c81('0x12')]('%s%s',_0x8c81('0x2e'),_[_0x8c81('0x2f')](_0x5b944e))]=_0x2d2406[_0x8c81('0x2a')][_0x5b944e];}}}}return _0x89012c;};exports['toLowerVariables']=function(_0x3a4fe2){var _0x574c95={};for(var _0x5e80b7 in _0x3a4fe2){if(_0x3a4fe2[_0x8c81('0x2b')](_0x5e80b7)){_0x574c95[util['format']('%s',_['toLower'](_0x5e80b7))]=_0x3a4fe2[_0x5e80b7];}}return{'variables':_0x574c95};};exports[_0x8c81('0x30')]=function(_0x336439,_0x33b0f4){if(!_[_0x8c81('0x16')](_0x336439)){if(_0x336439[_0x8c81('0x2b')](_0x8c81('0x31'))){if(_0x336439[_0x8c81('0x31')]>0x0){_0x336439[_0x8c81('0x31')]-=0x1;}else{logger['error'](_0x8c81('0x32'),_0x33b0f4);}}}else{logger[_0x8c81('0x9')](_0x8c81('0x33'),_0x33b0f4);}};exports[_0x8c81('0x34')]=function(_0x4bbd5d){var _0x27a2f7=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0x4bbd5d[_0x8c81('0x36')]=0xd;_0x4bbd5d[_0x8c81('0x37')]=_0x8c81('0x38');_0x4bbd5d[_0x8c81('0x39')]=_0x27a2f7;_0x4bbd5d[_0x8c81('0x3a')]=_0x27a2f7;_0x4bbd5d['endtime']=_0x27a2f7;};exports[_0x8c81('0x3b')]=function(_0xdc3587,_0x422f25,_0x2fb430){var _0x7c09c2=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0xdc3587[_0x8c81('0x36')]=_0x422f25;_0xdc3587[_0x8c81('0x37')]=_0x2fb430;_0xdc3587[_0x8c81('0x3a')]=_0x7c09c2;_0xdc3587['ringtime']=getSeconds(_0xdc3587[_0x8c81('0x3a')],_0xdc3587[_0x8c81('0x39')]);};exports[_0x8c81('0x3c')]=function(_0x16dbbe,_0x4f8499,_0x16ed46){_0x16dbbe[_0x8c81('0x3d')]=_0x4f8499;_0x16dbbe[_0x8c81('0x3e')]=_0x16ed46;};exports[_0x8c81('0x3f')]=function(_0x4bbbb9,_0x1e99c3,_0x37363b){var _0x4faa37=moment()[_0x8c81('0x12')](_0x8c81('0x35'));_0x4bbbb9[_0x8c81('0x36')]=_0x1e99c3;_0x4bbbb9[_0x8c81('0x37')]=_0x37363b;_0x4bbbb9[_0x8c81('0x3a')]=_0x4bbbb9[_0x8c81('0x3a')]?_0x4bbbb9[_0x8c81('0x3a')]:_0x4faa37;_0x4bbbb9[_0x8c81('0x40')]=_0x4bbbb9[_0x8c81('0x40')]?_0x4bbbb9[_0x8c81('0x40')]:_0x4faa37;_0x4bbbb9[_0x8c81('0x41')]=getSeconds(_0x4bbbb9['responsetime']||0x0,_0x4bbbb9[_0x8c81('0x39')]||0x0);_0x4bbbb9['talktime']=_0x4bbbb9[_0x8c81('0x42')]?getSeconds(_0x4bbbb9[_0x8c81('0x40')],_0x4bbbb9['answertime']):0x0;};exports[_0x8c81('0x43')]=function(_0x4c1898){return _0x4c1898===_0x8c81('0x44');};exports['variablesAction']=function(_0x4b7281,_0x29702d,_0x18b341,_0x2d7602,_0x2cc0c8){var _0x3e8142=_0x2d7602?_0x8c81('0x45'):_0x4b7281[_0x8c81('0x46')];_0x3e8142=_0x2cc0c8?_0x8c81('0x47'):_0x3e8142;return{'actionid':_0x4b7281[_0x8c81('0x48')],'action':'originate','channel':_0x4b7281['channelAgent'],'callerid':util[_0x8c81('0x12')](_0x8c81('0x13'),_0x3e8142,_0x4b7281['calleridnum']),'Exten':_0x8c81('0x25'),'Context':_0x8c81('0x49'),'Priority':'1','variable':_0x18b341,'timeout':(_0x29702d[_0x8c81('0x4a')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4b7281[_0x8c81('0x48')]};};exports[_0x8c81('0x4b')]=function(_0x34a903){return _0x34a903[_0x8c81('0x4c')]+_0x34a903[_0x8c81('0x4d')]+_0x34a903[_0x8c81('0x4e')]+_0x34a903[_0x8c81('0x4f')]+_0x34a903[_0x8c81('0x50')];};exports[_0x8c81('0x51')]=function(_0x391406){var _0x283272=_['clone'](_0x391406);_0x283272[_0x8c81('0x36')]=0xf;_0x283272[_0x8c81('0x37')]=_0x8c81('0x52');return _0x283272;};exports[_0x8c81('0x53')]=function(_0x272fce,_0x58977e,_0xe14e3e){var _0x28fbfe={};_0x28fbfe[_0x58977e]=_0x272fce[_0x58977e];_0x28fbfe['active']=![];_0x28fbfe[_0x8c81('0x54')]=moment()[_0x8c81('0x55')](_0xe14e3e,'minutes')['format'](_0x8c81('0x35'));_0x28fbfe[_0x8c81('0x1a')]=_0x272fce[_0x8c81('0x1a')];_0x28fbfe['ListId']=_0x272fce[_0x8c81('0x56')];_0x28fbfe[_0x8c81('0x1c')]=_0x272fce[_0x8c81('0x1c')]||undefined;return _0x28fbfe;};exports[_0x8c81('0x57')]=function(_0x159de9,_0x5a3d42){if(!_['isNil'](_0x159de9)){if(_0x159de9[_0x8c81('0x58')]>0x0){_0x159de9[_0x8c81('0x58')]-=0x1;}else{logger[_0x8c81('0x9')](_0x5a3d42,_0x8c81('0x59'));}}else{logger[_0x8c81('0x9')](_0x5a3d42,_0x8c81('0x5a'));}};exports[_0x8c81('0x5b')]=function(_0x43a892){if(_0x43a892<=0x0){return!![];}return![];};exports['buildObj']=function(_0x15567c,_0x6fffd8,_0x196f52){_0x15567c[_0x8c81('0x5c')]=_0x6fffd8;_0x15567c['name']=_0x15567c[_0x8c81('0x5d')];_0x15567c[_0x8c81('0x5e')]=_0x15567c[_0x8c81('0x5f')];_0x15567c[_0x8c81('0x60')]=_0x8c81('0x61');if(_0x196f52){_0x15567c[_0x8c81('0x62')]=_0x196f52[_0x8c81('0x62')];}return _0x15567c;};exports[_0x8c81('0x63')]=function(_0x7b0811){var _0x36a99c={};_0x36a99c[_0x8c81('0x5d')]=_0x7b0811['queue'];_0x36a99c[_0x8c81('0x5e')]=_0x7b0811[_0x8c81('0x5f')];_0x36a99c[_0x8c81('0x48')]=_0x7b0811[_0x8c81('0x48')];return _0x36a99c;};exports['agentReadyId']=function(_0x456299){var _0x12808d=[];for(var _0x31e845 in _0x456299){if(_0x456299['hasOwnProperty'](_0x31e845)){if(!_['isNil'](_0x456299[_0x31e845])&&_0x456299[_0x31e845]['state']===_0x8c81('0x64')&&_0x456299[_0x31e845][_0x8c81('0x65')]==='reachable'){_0x12808d[_0x8c81('0x66')](_0x456299[_0x31e845]['id']);}}}return _0x12808d;};exports[_0x8c81('0x67')]=function(_0x129dd3){var _0x4eeb19=moment()['milliseconds'](0x0);var _0x53435c=moment(_0x129dd3)[_0x8c81('0x5')](0x0);return _0x4eeb19[_0x8c81('0x6')](_0x53435c,_0x8c81('0x7'));};exports[_0x8c81('0x68')]=function(_0x48d273){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x48d273[_0x8c81('0x1a')],'ListId':_0x48d273['ListId'],'VoiceQueueId':_0x48d273[_0x8c81('0x1c')]||undefined,'CampaignId':_0x48d273[_0x8c81('0x69')]||undefined};};exports[_0x8c81('0x6a')]=function(_0x230fad){if(_0x230fad==='uniqueid'||_0x230fad==='idContact'||_0x230fad===_0x8c81('0x5d')||_0x230fad===_0x8c81('0x6b')||_0x230fad===_0x8c81('0x6c')||_0x230fad==='dialAnswer'||_0x230fad===_0x8c81('0x3d')||_0x230fad===_0x8c81('0x5f')||_0x230fad===_0x8c81('0x46')||_0x230fad===_0x8c81('0x6d')||_0x230fad===_0x8c81('0x19')||_0x230fad===_0x8c81('0x54')||_0x230fad===_0x8c81('0x4c')||_0x230fad===_0x8c81('0x4d')||_0x230fad===_0x8c81('0x4e')||_0x230fad===_0x8c81('0x6e')||_0x230fad===_0x8c81('0x6f')||_0x230fad===_0x8c81('0x70')||_0x230fad==='callbackat'||_0x230fad===_0x8c81('0x71')||_0x230fad===_0x8c81('0x1a')||_0x230fad===_0x8c81('0x56')||_0x230fad===_0x8c81('0x3e')||_0x230fad===_0x8c81('0x1c')||_0x230fad===_0x8c81('0x72')||_0x230fad===_0x8c81('0x73')||_0x230fad===_0x8c81('0x74')||_0x230fad===_0x8c81('0x75')||_0x230fad===_0x8c81('0x76')||_0x230fad==='xmd-dialurl'||_0x230fad==='xmd-dialtimeout'||_0x230fad===_0x8c81('0x77')||_0x230fad===_0x8c81('0x78')||_0x230fad===_0x8c81('0x79')||_0x230fad==='xmd-contactid'||_0x230fad===_0x8c81('0x7a')||_0x230fad==='xmd-callerid'||_0x230fad==='xmd-agiafter'||_0x230fad===_0x8c81('0x7b')||_0x230fad===_0x8c81('0x7c')||_0x230fad===_0x8c81('0x7d')||_0x230fad===_0x8c81('0x7e')||_0x230fad==='rtpaudioqosjitterbridged'||_0x230fad===_0x8c81('0x7f')||_0x230fad===_0x8c81('0x80')||_0x230fad===_0x8c81('0x81')||_0x230fad===_0x8c81('0x82')||_0x230fad===_0x8c81('0x7c')||_0x230fad===_0x8c81('0x7d')||_0x230fad===_0x8c81('0x7e')||_0x230fad===_0x8c81('0x83')||_0x230fad===_0x8c81('0x7f')||_0x230fad===_0x8c81('0x80')||_0x230fad===_0x8c81('0x81')||_0x230fad===_0x8c81('0x82')||_0x230fad===_0x8c81('0x84')||_0x230fad==='bridgepvtcallid'||_0x230fad==='state'||_0x230fad===_0x8c81('0x37')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x1680c8,_0x7fb90a){var _0x2eebfb,_0x5ca125,_0x4f9466;if(_0x7fb90a<=0x0){_0x7fb90a=0x1;}_0x2eebfb=new RegExp(_0x8c81('0x85')+_0x7fb90a+'}$');_0x5ca125=Math[_0x8c81('0x86')](0xa,_0x7fb90a-0x1);_0x4f9466=Math['pow'](0xa,_0x7fb90a)-0x1;return util[_0x8c81('0x12')]('%s',_[_0x8c81('0x87')](_0x1680c8,_0x2eebfb,_[_0x8c81('0x88')](_0x5ca125,_0x4f9466)));};exports[_0x8c81('0x89')]=function(_0x273574){var _0xb248c3=_0x273574['match'](/"(.*?)"/);return _0xb248c3?_0xb248c3[0x1]:_0x273574;};exports[_0x8c81('0x8a')]=function(_0x1c4418){var _0x311ed1=_0x1c4418[_0x8c81('0x8b')](/<(.*?)>/);return _0x311ed1?_0x311ed1[0x1]:_0x1c4418;};
\ No newline at end of file
+var _0x5253=['logLookAgent','membername','UserId','logCustomer','endtime','answertime','isFailure','Failure','variablesAction','RECALL','uniqueid','originate','channelAgent','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','scheduledat','add','minutes','ListId','decrementTalkink','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','queue','interface','motionChannel','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','push','getDiff','seconds','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','active','countglobal','callbackat','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosjitterbridged','rtpaudioqosrtt','bridgepeer','getCallerIdRandom','pow','replace','random','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','logger','info','inspect','loggerError','error','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','addVariables','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','isNil','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','starttime','responsetime','logAgent','statedesc','ringtime'];(function(_0xdaf117,_0x4bd170){var _0x4a9ac2=function(_0x45b552){while(--_0x45b552){_0xdaf117['push'](_0xdaf117['shift']());}};_0x4a9ac2(++_0x4bd170);}(_0x5253,0xe0));var _0x3525=function(_0x2acdcf,_0x4c8cfb){_0x2acdcf=_0x2acdcf-0x0;var _0x4aadc7=_0x5253[_0x2acdcf];return _0x4aadc7;};'use strict';var util=require(_0x3525('0x0'));var _=require(_0x3525('0x1'));var moment=require(_0x3525('0x2'));var logger=require(_0x3525('0x3'))(_0x3525('0x4'));var ipAgi=process[_0x3525('0x5')][_0x3525('0x6')]||_0x3525('0x7');function getSeconds(_0x2481a6,_0x11b845){var _0x635af2=moment(_0x2481a6)['milliseconds'](0x0);var _0x74cec2=moment(_0x11b845)[_0x3525('0x8')](0x0);return _0x635af2[_0x3525('0x9')](_0x74cec2,'seconds');}exports[_0x3525('0xa')]=function(_0x456ff5){return function(_0x320b66){logger['error'](_0x456ff5,util['inspect'](_0x320b66,{'showHidden':![],'depth':null}));};};exports[_0x3525('0xb')]=function(_0x233029,_0x102291){logger[_0x3525('0xc')](_0x233029,util[_0x3525('0xd')](_0x102291,{'showHidden':![],'depth':null}));};exports[_0x3525('0xe')]=function(_0x4e2549,_0x34fe5e){logger[_0x3525('0xf')](_0x4e2549,util['inspect'](_0x34fe5e,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x43ccb8){return function(_0x350e1b){logger['info'](_0x43ccb8,util[_0x3525('0xd')](_0x350e1b,{'showHidden':![],'depth':null}));};};exports[_0x3525('0x10')]=function(_0xbb1994,_0x399b08,_0x5a04db){return{'message':_0xbb1994,'unlock':_0x399b08,'active':_0x5a04db};};exports[_0x3525('0x11')]=function(_0x35ed0f,_0x363d0f,_0x2fb9f7){if(!_[_0x3525('0x12')](_0x2fb9f7)&&_0x3525('0x13')===typeof _0x2fb9f7&&!_['isEmpty'](_0x2fb9f7)){if(!_[_0x3525('0x12')](_0x363d0f)&&'string'===typeof _0x363d0f&&!_[_0x3525('0x14')](_0x363d0f)){return util[_0x3525('0x15')](_0x3525('0x16'),_0x363d0f,_0x2fb9f7);}return util[_0x3525('0x15')](_0x3525('0x16'),_0x2fb9f7,_0x2fb9f7);}if(!_['isUndefined'](_0x35ed0f)&&_0x3525('0x13')===typeof _0x35ed0f&&!_[_0x3525('0x14')](_0x35ed0f)){return _0x35ed0f;}return _0x3525('0x17');};exports['isActive']=function(_0x2cab17){if(_['isNil'](_0x2cab17)){return![];}return _0x2cab17;};exports[_0x3525('0x18')]=function(_0x4e5764,_0x58086d,_0x483dfd,_0xe1f011,_0x551a6f,_0x2d8a85){var _0x563c16={'XMD-QUEUE':_0x58086d['Queue']?_0x58086d['Queue']['name']:'','XMD-CALLERID':_0xe1f011,'XMD-CALLERID-PREVIEW':_0x2d8a85?util[_0x3525('0x15')](_0x3525('0x16'),_0x2d8a85[_0x3525('0x19')],_0x2d8a85[_0x3525('0x1a')]):_0xe1f011,'XMD-DIALID':_0x551a6f,'XMD-CONTACTID':_0x58086d[_0x3525('0x1b')],'XMD-CDRTYPE':_0x3525('0x1c'),'CALLERID(all)':_0xe1f011,'XMD-VOICEQUEUEID':_0x58086d[_0x3525('0x1d')],'XMD-DIALCHANNEL':_0x483dfd,'XMD-DIALTIMEOUT':_0x4e5764[_0x3525('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x3525('0x15')](_0x3525('0x1f'),_0x4e5764[_0x3525('0x20')]?'g':'',_[_0x3525('0x14')](_0x4e5764[_0x3525('0x21')])?'':_0x3525('0x22')),'XMD-DIALURL':_0x4e5764[_0x3525('0x23')]||'','XMD-AGI':_0x4e5764[_0x3525('0x24')]?util[_0x3525('0x15')](_0x3525('0x25'),ipAgi,_0x4e5764[_0x3525('0x24')]):_0x3525('0x26'),'XMD-AGIAFTER':_0x4e5764[_0x3525('0x20')]?util[_0x3525('0x15')](_0x3525('0x25'),ipAgi,_0x4e5764['dialQueueProject2']):_0x3525('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x2d8a85?_0x2d8a85[_0x3525('0x27')]:'','XMD-ORIGINATECALLERIDNAME':_0x2d8a85?_0x2d8a85['originatecalleridname']:'','XMD-DESTINATION':_0x3525('0x28'),'SIPADDHEADER':_0x3525('0x29')};if(!_[_0x3525('0x14')](_0x4e5764[_0x3525('0x21')])){_0x563c16[util['format']('%s',_0x3525('0x2a'))]=_0x4e5764[_0x3525('0x21')];_0x563c16[util[_0x3525('0x15')]('%s',_0x3525('0x2b'))]=_0x551a6f;}if(_0x58086d&&_0x58086d[_0x3525('0x2c')]){for(var _0x3a11ad in _0x58086d['Contact']){if(_0x58086d[_0x3525('0x2c')]['hasOwnProperty'](_0x3a11ad)){if(!_[_0x3525('0x2d')](_0x58086d[_0x3525('0x2c')][_0x3a11ad])&&_0x3a11ad!=='id'&&_0x3a11ad!==_0x3525('0x2e')&&_0x3a11ad!==_0x3525('0x2f')&&_0x3a11ad!==_0x3525('0x30')){_0x563c16[util['format'](_0x3525('0x31'),_0x3525('0x32'),_[_0x3525('0x33')](_0x3a11ad))]=_0x58086d['Contact'][_0x3a11ad];}}}}return _0x563c16;};exports[_0x3525('0x34')]=function(_0x259e99){var _0x17823e={};for(var _0x1dbaa9 in _0x259e99){if(_0x259e99[_0x3525('0x35')](_0x1dbaa9)){_0x17823e[util[_0x3525('0x15')]('%s',_['toLower'](_0x1dbaa9))]=_0x259e99[_0x1dbaa9];}}return{'variables':_0x17823e};};exports['updateOriginated']=function(_0x3132a0,_0x43f424){if(!_[_0x3525('0x2d')](_0x3132a0)){if(_0x3132a0[_0x3525('0x35')](_0x3525('0x36'))){if(_0x3132a0[_0x3525('0x36')]>0x0){_0x3132a0['originated']-=0x1;}else{logger[_0x3525('0xf')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x43f424);}}}else{logger[_0x3525('0xf')](_0x3525('0x37'),_0x43f424);}};exports[_0x3525('0x38')]=function(_0x3e684c){var _0x96b76f=moment()[_0x3525('0x15')](_0x3525('0x39'));_0x3e684c[_0x3525('0x3a')]=0xd;_0x3e684c['statedesc']='Blacklist';_0x3e684c[_0x3525('0x3b')]=_0x96b76f;_0x3e684c[_0x3525('0x3c')]=_0x96b76f;_0x3e684c['endtime']=_0x96b76f;};exports[_0x3525('0x3d')]=function(_0x54d399,_0x1cbc75,_0x314f61){var _0x429e1b=moment()[_0x3525('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x54d399[_0x3525('0x3a')]=_0x1cbc75;_0x54d399[_0x3525('0x3e')]=_0x314f61;_0x54d399[_0x3525('0x3c')]=_0x429e1b;_0x54d399[_0x3525('0x3f')]=getSeconds(_0x54d399[_0x3525('0x3c')],_0x54d399[_0x3525('0x3b')]);};exports[_0x3525('0x40')]=function(_0x28ef84,_0x1bc50f,_0x55e8fb){_0x28ef84[_0x3525('0x41')]=_0x1bc50f;_0x28ef84[_0x3525('0x42')]=_0x55e8fb;};exports[_0x3525('0x43')]=function(_0x5348c8,_0x497958,_0xea84eb){var _0x1969bc=moment()['format'](_0x3525('0x39'));_0x5348c8[_0x3525('0x3a')]=_0x497958;_0x5348c8[_0x3525('0x3e')]=_0xea84eb;_0x5348c8[_0x3525('0x3c')]=_0x5348c8['responsetime']?_0x5348c8[_0x3525('0x3c')]:_0x1969bc;_0x5348c8[_0x3525('0x44')]=_0x5348c8[_0x3525('0x44')]?_0x5348c8[_0x3525('0x44')]:_0x1969bc;_0x5348c8[_0x3525('0x3f')]=getSeconds(_0x5348c8[_0x3525('0x3c')]||0x0,_0x5348c8['starttime']||0x0);_0x5348c8['talktime']=_0x5348c8[_0x3525('0x45')]?getSeconds(_0x5348c8['endtime'],_0x5348c8[_0x3525('0x45')]):0x0;};exports[_0x3525('0x46')]=function(_0x3722c6){return _0x3722c6===_0x3525('0x47');};exports[_0x3525('0x48')]=function(_0x2f22e6,_0x475d98,_0x4b779f,_0x2d0a85,_0x3eb7c3){var _0x1817b3=_0x2d0a85?_0x3525('0x49'):_0x2f22e6[_0x3525('0x19')];_0x1817b3=_0x3eb7c3?'BOOKED':_0x1817b3;return{'actionid':_0x2f22e6[_0x3525('0x4a')],'action':_0x3525('0x4b'),'channel':_0x2f22e6[_0x3525('0x4c')],'callerid':util[_0x3525('0x15')](_0x3525('0x16'),_0x1817b3,_0x2f22e6[_0x3525('0x1a')]),'Exten':_0x3525('0x28'),'Context':'from-sip','Priority':'1','variable':_0x4b779f,'timeout':(_0x475d98[_0x3525('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2f22e6[_0x3525('0x4a')]};};exports[_0x3525('0x4e')]=function(_0x38ad5c){return _0x38ad5c[_0x3525('0x4f')]+_0x38ad5c[_0x3525('0x50')]+_0x38ad5c[_0x3525('0x51')]+_0x38ad5c[_0x3525('0x52')]+_0x38ad5c[_0x3525('0x53')];};exports[_0x3525('0x54')]=function(_0x1ef461){var _0x116225=_[_0x3525('0x55')](_0x1ef461);_0x116225[_0x3525('0x3a')]=0xf;_0x116225[_0x3525('0x3e')]=_0x3525('0x56');return _0x116225;};exports[_0x3525('0x57')]=function(_0x2ff8bb,_0x427c5b,_0x5dfbca){var _0x225fa8={};_0x225fa8[_0x427c5b]=_0x2ff8bb[_0x427c5b];_0x225fa8['active']=![];_0x225fa8[_0x3525('0x58')]=moment()[_0x3525('0x59')](_0x5dfbca,_0x3525('0x5a'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x225fa8[_0x3525('0x1b')]=_0x2ff8bb[_0x3525('0x1b')];_0x225fa8[_0x3525('0x5b')]=_0x2ff8bb[_0x3525('0x5b')];_0x225fa8['VoiceQueueId']=_0x2ff8bb[_0x3525('0x1d')]||undefined;return _0x225fa8;};exports[_0x3525('0x5c')]=function(_0xbcad08,_0x4d4dff){if(!_['isNil'](_0xbcad08)){if(_0xbcad08['pTalking']>0x0){_0xbcad08['pTalking']-=0x1;}else{logger[_0x3525('0xf')](_0x4d4dff,_0x3525('0x5d'));}}else{logger[_0x3525('0xf')](_0x4d4dff,_0x3525('0x5e'));}};exports[_0x3525('0x5f')]=function(_0x16983e){if(_0x16983e<=0x0){return!![];}return![];};exports['buildObj']=function(_0x4bb182,_0x22ab4d,_0x428e3){_0x4bb182[_0x3525('0x60')]=_0x22ab4d;_0x4bb182[_0x3525('0x61')]=_0x4bb182[_0x3525('0x62')];_0x4bb182[_0x3525('0x63')]=_0x4bb182[_0x3525('0x4c')];_0x4bb182[_0x3525('0x64')]='voice';if(_0x428e3){_0x4bb182[_0x3525('0x65')]=_0x428e3[_0x3525('0x65')];}return _0x4bb182;};exports[_0x3525('0x66')]=function(_0x453e71){var _0x32ba3a={};_0x32ba3a[_0x3525('0x62')]=_0x453e71[_0x3525('0x62')];_0x32ba3a[_0x3525('0x63')]=_0x453e71[_0x3525('0x4c')];_0x32ba3a['uniqueid']=_0x453e71['uniqueid'];return _0x32ba3a;};exports[_0x3525('0x67')]=function(_0x32cedf){var _0x1653ea=[];for(var _0x43ab52 in _0x32cedf){if(_0x32cedf[_0x3525('0x35')](_0x43ab52)){if(!_[_0x3525('0x2d')](_0x32cedf[_0x43ab52])&&_0x32cedf[_0x43ab52][_0x3525('0x3a')]===_0x3525('0x68')&&_0x32cedf[_0x43ab52][_0x3525('0x69')]==='reachable'){_0x1653ea[_0x3525('0x6a')](_0x32cedf[_0x43ab52]['id']);}}}return _0x1653ea;};exports[_0x3525('0x6b')]=function(_0x14ef01){var _0x42c0f9=moment()[_0x3525('0x8')](0x0);var _0x51cd53=moment(_0x14ef01)[_0x3525('0x8')](0x0);return _0x42c0f9[_0x3525('0x9')](_0x51cd53,_0x3525('0x6c'));};exports[_0x3525('0x6d')]=function(_0xff4804){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0xff4804[_0x3525('0x1b')],'ListId':_0xff4804[_0x3525('0x5b')],'VoiceQueueId':_0xff4804[_0x3525('0x1d')]||undefined,'CampaignId':_0xff4804[_0x3525('0x6e')]||undefined};};exports[_0x3525('0x6f')]=function(_0x43065c){if(_0x43065c==='uniqueid'||_0x43065c===_0x3525('0x70')||_0x43065c==='queue'||_0x43065c===_0x3525('0x71')||_0x43065c===_0x3525('0x72')||_0x43065c===_0x3525('0x73')||_0x43065c===_0x3525('0x41')||_0x43065c===_0x3525('0x4c')||_0x43065c==='calleridname'||_0x43065c===_0x3525('0x74')||_0x43065c===_0x3525('0x1a')||_0x43065c===_0x3525('0x58')||_0x43065c==='countbusyretry'||_0x43065c===_0x3525('0x50')||_0x43065c===_0x3525('0x51')||_0x43065c===_0x3525('0x75')||_0x43065c==='callback'||_0x43065c==='callbackuniqueid'||_0x43065c===_0x3525('0x76')||_0x43065c==='recallme'||_0x43065c===_0x3525('0x1b')||_0x43065c===_0x3525('0x5b')||_0x43065c===_0x3525('0x42')||_0x43065c===_0x3525('0x1d')||_0x43065c==='sipcallid'||_0x43065c===_0x3525('0x77')||_0x43065c===_0x3525('0x78')||_0x43065c==='xmd-phone'||_0x43065c===_0x3525('0x79')||_0x43065c===_0x3525('0x7a')||_0x43065c===_0x3525('0x7b')||_0x43065c==='xmd-dialoptions'||_0x43065c===_0x3525('0x7c')||_0x43065c===_0x3525('0x7d')||_0x43065c===_0x3525('0x7e')||_0x43065c===_0x3525('0x7f')||_0x43065c===_0x3525('0x80')||_0x43065c===_0x3525('0x81')||_0x43065c==='xmd-agi'||_0x43065c===_0x3525('0x82')||_0x43065c===_0x3525('0x83')||_0x43065c==='rtpaudioqosjitter'||_0x43065c==='rtpaudioqosjitterbridged'||_0x43065c===_0x3525('0x84')||_0x43065c===_0x3525('0x85')||_0x43065c==='rtpaudioqosrtt'||_0x43065c===_0x3525('0x86')||_0x43065c===_0x3525('0x82')||_0x43065c==='rtpaudioqosbridged'||_0x43065c==='rtpaudioqosjitter'||_0x43065c===_0x3525('0x87')||_0x43065c===_0x3525('0x84')||_0x43065c===_0x3525('0x85')||_0x43065c===_0x3525('0x88')||_0x43065c===_0x3525('0x86')||_0x43065c===_0x3525('0x89')||_0x43065c==='bridgepvtcallid'||_0x43065c===_0x3525('0x3a')||_0x43065c===_0x3525('0x3e')){return![];}return!![];};exports[_0x3525('0x8a')]=function(_0x54a787,_0xaa47d){var _0x5e391d,_0x23406a,_0x2e27c6;if(_0xaa47d<=0x0){_0xaa47d=0x1;}_0x5e391d=new RegExp('\x5cw{0,'+_0xaa47d+'}$');_0x23406a=Math[_0x3525('0x8b')](0xa,_0xaa47d-0x1);_0x2e27c6=Math[_0x3525('0x8b')](0xa,_0xaa47d)-0x1;return util['format']('%s',_[_0x3525('0x8c')](_0x54a787,_0x5e391d,_[_0x3525('0x8d')](_0x23406a,_0x2e27c6)));};exports['extractCalleridName']=function(_0xbefacd){var _0x1b1a78=_0xbefacd[_0x3525('0x8e')](/"(.*?)"/);return _0x1b1a78?_0x1b1a78[0x1]:_0xbefacd;};exports[_0x3525('0x8f')]=function(_0x5f5826){var _0x419634=_0x5f5826[_0x3525('0x8e')](/<(.*?)>/);return _0x419634?_0x419634[0x1]:_0x5f5826;};
\ No newline at end of file
index 94c5e9c..22c113f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe769=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','number','boolean','queueremove','reload','voicequeuechannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe769,0xd2));var _0x9e76=function(_0x436bc5,_0x47b676){_0x436bc5=_0x436bc5-0x0;var _0x3795fc=_0xe769[_0x436bc5];return _0x3795fc;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x9e76('0x0'),'required':!![]},'membername':{'type':_0x9e76('0x0'),'required':!![]},'penalty':{'type':_0x9e76('0x1'),'required':![]},'paused':{'type':_0x9e76('0x2'),'required':![]}};exports[_0x9e76('0x3')]={'queue':{'type':_0x9e76('0x0'),'required':!![]},'interface':{'type':_0x9e76('0x0'),'required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':_0x9e76('0x2')},'reason':{'type':_0x9e76('0x0'),'required':![]}};exports[_0x9e76('0x4')]={'module':{'type':_0x9e76('0x0'),'required':![]}};exports[_0x9e76('0x5')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]}};exports[_0x9e76('0x6')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x9e76('0x0')},'mixmonitorid':{'type':'string'}};exports[_0x9e76('0x7')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]}};exports[_0x9e76('0x8')]={'uniqueid':{'type':_0x9e76('0x0'),'required':!![]},'exten':{'type':_0x9e76('0x0'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0x04a2=['boolean','queueremove','queuepause','reload','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number'];(function(_0x588182,_0x21ce16){var _0x3597cb=function(_0x1e8514){while(--_0x1e8514){_0x588182['push'](_0x588182['shift']());}};_0x3597cb(++_0x21ce16);}(_0x04a2,0x147));var _0x204a=function(_0xa073c6,_0x64cb87){_0xa073c6=_0xa073c6-0x0;var _0x5a7073=_0x04a2[_0xa073c6];return _0x5a7073;};'use strict';exports[_0x204a('0x0')]={'queue':{'type':_0x204a('0x1'),'required':!![]},'interface':{'type':_0x204a('0x1'),'required':!![]},'membername':{'type':_0x204a('0x1'),'required':!![]},'penalty':{'type':_0x204a('0x2'),'required':![]},'paused':{'type':_0x204a('0x3'),'required':![]}};exports[_0x204a('0x4')]={'queue':{'type':_0x204a('0x1'),'required':!![]},'interface':{'type':_0x204a('0x1'),'required':!![]}};exports[_0x204a('0x5')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0x204a('0x3')},'reason':{'type':_0x204a('0x1'),'required':![]}};exports[_0x204a('0x6')]={'module':{'type':_0x204a('0x1'),'required':![]}};exports[_0x204a('0x7')]={'uniqueid':{'type':_0x204a('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0x204a('0x1'),'required':!![]},'filename':{'type':_0x204a('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':'string'}};exports[_0x204a('0x8')]={'uniqueid':{'type':_0x204a('0x1'),'required':!![]}};exports[_0x204a('0x9')]={'uniqueid':{'type':_0x204a('0x1'),'required':!![]},'exten':{'type':_0x204a('0x1'),'required':!![]},'context':{'type':_0x204a('0x1')}};
\ No newline at end of file
index 9bcd318..40324ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1700=['triggers','campaigns','templates','voiceExtensions','channels','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','mergeFromDatabase','initTelephones','telephones','isUndefined','length','trunks','initVoiceQueues','initTriggers','initZendeskAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initVtigerAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','seconds','queuecallercomplete','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','faxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','voiceQueues'];(function(_0x28d058,_0x31e92b){var _0x4001a5=function(_0x46d358){while(--_0x46d358){_0x28d058['push'](_0x28d058['shift']());}};_0x4001a5(++_0x31e92b);}(_0x1700,0xbe));var _0x0170=function(_0x5439bc,_0x1267ce){_0x5439bc=_0x5439bc-0x0;var _0x5a70a0=_0x1700[_0x5439bc];return _0x5a70a0;};'use strict';var BPromise=require(_0x0170('0x0'));var util=require(_0x0170('0x1'));var _=require(_0x0170('0x2'));var moment=require(_0x0170('0x3'));var Agent=require(_0x0170('0x4'));var Telephone=require(_0x0170('0x5'));var Trunk=require(_0x0170('0x6'));var VoiceQueue=require(_0x0170('0x7'));var Trigger=require(_0x0170('0x8'));var Template=require('../model/template');var Campaign=require(_0x0170('0x9'));var VoiceExtension=require(_0x0170('0xa'));var ZendeskAccount=require(_0x0170('0xb'));var SalesforceAccount=require(_0x0170('0xc'));var FreshdeskAccount=require(_0x0170('0xd'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x0170('0xe'));var DeskAccount=require(_0x0170('0xf'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x0170('0x10'));var Dynamics365Account=require(_0x0170('0x11'));var FreshsalesAccount=require(_0x0170('0x12'));var FaxAccount=require(_0x0170('0x13'));var Realtime=function(){this[_0x0170('0x14')]={};this['telephones']={};this['trunks']={};this[_0x0170('0x15')]={};this[_0x0170('0x16')]={};this[_0x0170('0x17')]={};this[_0x0170('0x18')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x0170('0x19')]={};this[_0x0170('0x1a')]={};this['queueChannels']={};this['outboundChannels']={};this['timers']={};this[_0x0170('0x1b')]={};this[_0x0170('0x1c')]={};this['salesforceAccounts']={};this[_0x0170('0x1d')]={};this[_0x0170('0x1e')]={};this[_0x0170('0x1f')]={};this[_0x0170('0x20')]={};this[_0x0170('0x21')]={};this[_0x0170('0x22')]={};this[_0x0170('0x23')]={};this[_0x0170('0x24')]={};this['faxAccounts']={};};function freeIsNotKey(_0x7f7270,_0xd9edf6,_0x1c617b){var _0x153d0c=_[_0x0170('0x25')](_0x7f7270,function(_0x7cc7ec,_0x360d9d){return _0x7cc7ec[_0x1c617b];});for(var _0x3e84ca in _0xd9edf6){if(_0xd9edf6[_0x0170('0x26')](_0x3e84ca)){if(!_0x153d0c[_0x3e84ca]){delete _0xd9edf6[_0x3e84ca];}}}}function freeIsNotKeySip(_0x2167f9,_0x53e34c){var _0x514610=_[_0x0170('0x25')](_0x2167f9,function(_0x5286cf,_0x5ed6e6){return util[_0x0170('0x27')](_0x0170('0x28'),_0x5286cf[_0x0170('0x29')]);});for(var _0x259dac in _0x53e34c){if(_0x53e34c[_0x0170('0x26')](_0x259dac)){if(!_0x514610[_0x259dac]){delete _0x53e34c[_0x259dac];}}}}function freeIsNotKeyAgent(_0x57ef29,_0x1f1141){var _0x4e1de0=_[_0x0170('0x25')](_0x57ef29,function(_0x2dad2e,_0x48e102){var _0x8204df=_[_0x0170('0x2a')](_0x2dad2e[_0x0170('0x2b')])?util[_0x0170('0x27')](_0x0170('0x28'),_0x2dad2e['name']):_0x2dad2e[_0x0170('0x2b')];return _0x8204df;});for(var _0x23f106 in _0x1f1141){if(_0x1f1141[_0x0170('0x26')](_0x23f106)){if(!_0x4e1de0[_0x23f106]){delete _0x1f1141[_0x23f106];}}}}function clearVoiceCallReports(_0x1cbeb4){_0x1cbeb4[_0x0170('0x2c')]=0x0;_0x1cbeb4['answered']=0x0;_0x1cbeb4[_0x0170('0x2d')]=0x0;_0x1cbeb4[_0x0170('0x2e')]=0x0;_0x1cbeb4[_0x0170('0x2f')]=0x0;}function clearCampaigns(_0x43c602){if(!_[_0x0170('0x30')](_0x43c602)){for(var _0x49ce58 in _0x43c602){if(_0x43c602['hasOwnProperty'](_0x49ce58)){_0x43c602[_0x49ce58][_0x0170('0x31')]=0x0;_0x43c602[_0x49ce58][_0x0170('0x32')]=0x0;}}}}function clearVoiceQueues(_0x2a8d01){if(!_[_0x0170('0x30')](_0x2a8d01)){for(var _0x257e3c in _0x2a8d01){if(_0x2a8d01[_0x0170('0x26')](_0x257e3c)){_0x2a8d01[_0x257e3c][_0x0170('0x2c')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x33')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x34')]=0x0;_0x2a8d01[_0x257e3c]['abandoned']=0x0;_0x2a8d01[_0x257e3c]['sumHoldTime']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x2e')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x2f')]=0x0;_0x2a8d01[_0x257e3c]['outboundAnswerAgiCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x35')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x36')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x37')]=0x0;_0x2a8d01[_0x257e3c]['outboundNoSuchCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x38')]=0x0;_0x2a8d01[_0x257e3c]['outboundDropCallsDayTimeout']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x39')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3a')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3b')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3c')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3d')]=0x0;_0x2a8d01[_0x257e3c]['outboundAnswerAgiCallsDay']=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3e')]=0x0;_0x2a8d01[_0x257e3c][_0x0170('0x3f')]=!![];}}}}Realtime[_0x0170('0x40')]['mergeFromDatabase']=function(_0x84bddc,_0x1eed29){for(var _0x4779b0 in _0x1eed29){if(_0x84bddc[_0x0170('0x26')](_0x4779b0)){_0x84bddc[_0x4779b0]=_0x1eed29[_0x4779b0];}}};Realtime[_0x0170('0x40')][_0x0170('0x41')]=function(){var _0x37a374=this;return function(_0x4e6694){if(_0x4e6694){freeIsNotKeyAgent(_0x4e6694,_0x37a374[_0x0170('0x14')]);for(var _0x21814a=0x0,_0x4fdfee={},_0x5a7a1d={};_0x21814a<_0x4e6694['length'];_0x21814a+=0x1){_0x4fdfee=_0x4e6694[_0x21814a];var _0x4cd9c2=_[_0x0170('0x2a')](_0x4fdfee[_0x0170('0x2b')])?util[_0x0170('0x27')](_0x0170('0x28'),_0x4fdfee['name']):_0x4fdfee[_0x0170('0x2b')];if(_['isUndefined'](_0x37a374[_0x0170('0x14')][_0x4cd9c2])){_0x37a374[_0x0170('0x14')][_0x4cd9c2]=new Agent(_0x4fdfee);}else{_0x37a374[_0x0170('0x42')](_0x37a374[_0x0170('0x14')][_0x4cd9c2],_0x4fdfee);}}}return _0x37a374[_0x0170('0x14')];};};Realtime[_0x0170('0x40')][_0x0170('0x43')]=function(){var _0x25fafe=this;return function(_0x45e4b7){if(_0x45e4b7){freeIsNotKeySip(_0x45e4b7,_0x25fafe[_0x0170('0x44')]);for(var _0x1cc44e=0x0,_0x31a2d5={},_0x49f339={};_0x1cc44e<_0x45e4b7['length'];_0x1cc44e+=0x1){_0x31a2d5=_0x45e4b7[_0x1cc44e];if(_[_0x0170('0x45')](_0x25fafe[_0x0170('0x44')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31a2d5[_0x0170('0x29')])])){_0x25fafe[_0x0170('0x44')][util['format']('SIP/%s',_0x31a2d5[_0x0170('0x29')])]=new Telephone(_0x31a2d5);}else{_0x25fafe[_0x0170('0x42')](_0x25fafe[_0x0170('0x44')][util[_0x0170('0x27')]('SIP/%s',_0x31a2d5['name'])],_0x31a2d5);}}}return _0x25fafe[_0x0170('0x44')];};};Realtime['prototype']['initTrunks']=function(){var _0x444291=this;return function(_0x2f5dc1){if(_0x2f5dc1){freeIsNotKeySip(_0x2f5dc1,_0x444291['trunks']);for(var _0x3ed916=0x0,_0x31e7a6={},_0x4bdc93={};_0x3ed916<_0x2f5dc1[_0x0170('0x46')];_0x3ed916+=0x1){_0x31e7a6=_0x2f5dc1[_0x3ed916];if(_['isUndefined'](_0x444291['trunks'][util['format'](_0x0170('0x28'),_0x31e7a6['name'])])){_0x444291[_0x0170('0x47')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31e7a6[_0x0170('0x29')])]=new Trunk(_0x31e7a6);}else{_0x444291['mergeFromDatabase'](_0x444291[_0x0170('0x47')][util[_0x0170('0x27')](_0x0170('0x28'),_0x31e7a6[_0x0170('0x29')])],_0x31e7a6);}}}return _0x444291['trunks'];};};Realtime[_0x0170('0x40')][_0x0170('0x48')]=function(){var _0x1fa324=this;return function(_0x40b5a4){if(_0x40b5a4){freeIsNotKey(_0x40b5a4,_0x1fa324[_0x0170('0x15')],'name');for(var _0x4f2bc3=0x0,_0x28bdeb={},_0x5765cc={};_0x4f2bc3<_0x40b5a4[_0x0170('0x46')];_0x4f2bc3+=0x1){_0x28bdeb=_0x40b5a4[_0x4f2bc3];if(_[_0x0170('0x45')](_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]])){_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]]=new VoiceQueue(_0x28bdeb);}else{_0x1fa324[_0x0170('0x42')](_0x1fa324[_0x0170('0x15')][_0x28bdeb[_0x0170('0x29')]],_0x28bdeb);}}}return _0x1fa324[_0x0170('0x15')];};};Realtime[_0x0170('0x40')][_0x0170('0x49')]=function(){var _0x21e298=this;return function(_0x3975ad){if(_0x3975ad){freeIsNotKey(_0x3975ad,_0x21e298[_0x0170('0x16')],'id');for(var _0x1a20ac=0x0,_0x359f20={},_0x1d2dcd={};_0x1a20ac<_0x3975ad[_0x0170('0x46')];_0x1a20ac+=0x1){_0x359f20=_0x3975ad[_0x1a20ac];if(_[_0x0170('0x45')](_0x21e298[_0x0170('0x16')][_0x359f20['id']])){_0x21e298['triggers'][_0x359f20['id']]=new Trigger(_0x359f20);}else{_0x21e298[_0x0170('0x42')](_0x21e298['triggers'][_0x359f20['id']],_0x359f20);}}}return _0x21e298[_0x0170('0x16')];};};Realtime[_0x0170('0x40')]['initTemplates']=function(){var _0x516b87=this;return function(_0x26a50e){if(_0x26a50e){freeIsNotKey(_0x26a50e,_0x516b87[_0x0170('0x18')],'id');for(var _0x403b71=0x0,_0x3aa695={},_0x2afaa6={};_0x403b71<_0x26a50e[_0x0170('0x46')];_0x403b71+=0x1){_0x3aa695=_0x26a50e[_0x403b71];if(_['isUndefined'](_0x516b87[_0x0170('0x18')][_0x3aa695['id']])){_0x516b87[_0x0170('0x18')][_0x3aa695['id']]=new Template(_0x3aa695);}else{_0x516b87[_0x0170('0x42')](_0x516b87['templates'][_0x3aa695['id']],_0x3aa695);}}}return _0x516b87['templates'];};};Realtime[_0x0170('0x40')][_0x0170('0x4a')]=function(){var _0x24ba6f=this;return function(_0x10fd17){if(_0x10fd17){freeIsNotKey(_0x10fd17,_0x24ba6f[_0x0170('0x1c')],'id');for(var _0xfb24b2=0x0,_0x1d1705={},_0x453f2c={};_0xfb24b2<_0x10fd17['length'];_0xfb24b2+=0x1){_0x1d1705=_0x10fd17[_0xfb24b2];if(_[_0x0170('0x45')](_0x24ba6f['zendeskAccounts'][_0x1d1705['id']])){_0x24ba6f[_0x0170('0x1c')][_0x1d1705['id']]=new ZendeskAccount(_0x1d1705);}else{_0x24ba6f['mergeFromDatabase'](_0x24ba6f[_0x0170('0x1c')][_0x1d1705['id']],_0x1d1705);}}}return _0x24ba6f[_0x0170('0x1c')];};};Realtime[_0x0170('0x40')]['initSalesforceAccounts']=function(){var _0x2cadbf=this;return function(_0x243722){if(_0x243722){freeIsNotKey(_0x243722,_0x2cadbf[_0x0170('0x4b')],'id');for(var _0x374bc2=0x0,_0x1ea8ed={},_0x2ce269={};_0x374bc2<_0x243722['length'];_0x374bc2+=0x1){_0x1ea8ed=_0x243722[_0x374bc2];if(_[_0x0170('0x45')](_0x2cadbf['salesforceAccounts'][_0x1ea8ed['id']])){_0x2cadbf[_0x0170('0x4b')][_0x1ea8ed['id']]=new SalesforceAccount(_0x1ea8ed);}else{_0x2cadbf[_0x0170('0x42')](_0x2cadbf['salesforceAccounts'][_0x1ea8ed['id']],_0x1ea8ed);}}}return _0x2cadbf[_0x0170('0x4b')];};};Realtime[_0x0170('0x40')][_0x0170('0x4c')]=function(){var _0x532590=this;return function(_0x1023a2){if(_0x1023a2){freeIsNotKey(_0x1023a2,_0x532590[_0x0170('0x1e')],'id');for(var _0x15d7c3=0x0,_0x33fd0b={},_0x811516={};_0x15d7c3<_0x1023a2[_0x0170('0x46')];_0x15d7c3+=0x1){_0x33fd0b=_0x1023a2[_0x15d7c3];if(_[_0x0170('0x45')](_0x532590['freshdeskAccounts'][_0x33fd0b['id']])){_0x532590[_0x0170('0x1e')][_0x33fd0b['id']]=new FreshdeskAccount(_0x33fd0b);}else{_0x532590[_0x0170('0x42')](_0x532590[_0x0170('0x1e')][_0x33fd0b['id']],_0x33fd0b);}}}return _0x532590['freshdeskAccounts'];};};Realtime[_0x0170('0x40')]['initZohoAccounts']=function(){var _0x5e78b0=this;return function(_0xb8af13){if(_0xb8af13){freeIsNotKey(_0xb8af13,_0x5e78b0[_0x0170('0x1f')],'id');for(var _0x49803f=0x0,_0x26134e={},_0xa820fa={};_0x49803f<_0xb8af13['length'];_0x49803f+=0x1){_0x26134e=_0xb8af13[_0x49803f];if(_[_0x0170('0x45')](_0x5e78b0[_0x0170('0x1f')][_0x26134e['id']])){_0x5e78b0['zohoAccounts'][_0x26134e['id']]=new ZohoAccount(_0x26134e);}else{_0x5e78b0[_0x0170('0x42')](_0x5e78b0[_0x0170('0x1f')][_0x26134e['id']],_0x26134e);}}}return _0x5e78b0[_0x0170('0x1f')];};};Realtime[_0x0170('0x40')][_0x0170('0x4d')]=function(){var _0x5dbc77=this;return function(_0x570b6a){if(_0x570b6a){freeIsNotKey(_0x570b6a,_0x5dbc77[_0x0170('0x20')],'id');for(var _0x1efd3d=0x0,_0x3a0daf={},_0x32fc32={};_0x1efd3d<_0x570b6a['length'];_0x1efd3d+=0x1){_0x3a0daf=_0x570b6a[_0x1efd3d];if(_[_0x0170('0x45')](_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']])){_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']]=new DeskAccount(_0x3a0daf);}else{_0x5dbc77[_0x0170('0x42')](_0x5dbc77[_0x0170('0x20')][_0x3a0daf['id']],_0x3a0daf);}}}return _0x5dbc77[_0x0170('0x20')];};};Realtime[_0x0170('0x40')]['initSugarcrmAccounts']=function(){var _0x1213ff=this;return function(_0x3a4e47){if(_0x3a4e47){freeIsNotKey(_0x3a4e47,_0x1213ff[_0x0170('0x1d')],'id');for(var _0x579747=0x0,_0x12c1db={},_0x1df477={};_0x579747<_0x3a4e47[_0x0170('0x46')];_0x579747+=0x1){_0x12c1db=_0x3a4e47[_0x579747];if(_['isUndefined'](_0x1213ff[_0x0170('0x1d')][_0x12c1db['id']])){_0x1213ff['sugarcrmAccounts'][_0x12c1db['id']]=new SugarcrmAccount(_0x12c1db);}else{_0x1213ff[_0x0170('0x42')](_0x1213ff[_0x0170('0x1d')][_0x12c1db['id']],_0x12c1db);}}}return _0x1213ff[_0x0170('0x1d')];};};Realtime[_0x0170('0x40')][_0x0170('0x4e')]=function(){var _0x4ad729=this;return function(_0x1ff44c){if(_0x1ff44c){freeIsNotKey(_0x1ff44c,_0x4ad729['vtigerAccounts'],'id');for(var _0x22b4ed=0x0,_0x4c9424={},_0x536410={};_0x22b4ed<_0x1ff44c[_0x0170('0x46')];_0x22b4ed+=0x1){_0x4c9424=_0x1ff44c[_0x22b4ed];if(_['isUndefined'](_0x4ad729['vtigerAccounts'][_0x4c9424['id']])){_0x4ad729[_0x0170('0x21')][_0x4c9424['id']]=new VtigerAccount(_0x4c9424);}else{_0x4ad729[_0x0170('0x42')](_0x4ad729['vtigerAccounts'][_0x4c9424['id']],_0x4c9424);}}}return _0x4ad729[_0x0170('0x21')];};};Realtime[_0x0170('0x40')]['initServicenowAccounts']=function(){var _0x35681d=this;return function(_0x16c20c){if(_0x16c20c){freeIsNotKey(_0x16c20c,_0x35681d[_0x0170('0x22')],'id');for(var _0x242952=0x0,_0x1539b1={},_0x5f2fed={};_0x242952<_0x16c20c[_0x0170('0x46')];_0x242952+=0x1){_0x1539b1=_0x16c20c[_0x242952];if(_[_0x0170('0x45')](_0x35681d[_0x0170('0x22')][_0x1539b1['id']])){_0x35681d[_0x0170('0x22')][_0x1539b1['id']]=new ServicenowAccount(_0x1539b1);}else{_0x35681d[_0x0170('0x42')](_0x35681d[_0x0170('0x22')][_0x1539b1['id']],_0x1539b1);}}}return _0x35681d[_0x0170('0x22')];};};Realtime['prototype'][_0x0170('0x4f')]=function(){var _0x373974=this;return function(_0x49e21d){if(_0x49e21d){freeIsNotKey(_0x49e21d,_0x373974[_0x0170('0x23')],'id');for(var _0x36d94b=0x0,_0x1fd89b={},_0x57152d={};_0x36d94b<_0x49e21d['length'];_0x36d94b+=0x1){_0x1fd89b=_0x49e21d[_0x36d94b];if(_[_0x0170('0x45')](_0x373974['dynamics365Accounts'][_0x1fd89b['id']])){_0x373974[_0x0170('0x23')][_0x1fd89b['id']]=new Dynamics365Account(_0x1fd89b);}else{_0x373974[_0x0170('0x42')](_0x373974['dynamics365Accounts'][_0x1fd89b['id']],_0x1fd89b);}}}return _0x373974['dynamics365Accounts'];};};Realtime['prototype'][_0x0170('0x50')]=function(){var _0x5148fc=this;return function(_0x48c710){if(_0x48c710){freeIsNotKey(_0x48c710,_0x5148fc[_0x0170('0x24')],'id');for(var _0x35d6fe=0x0,_0x1fcd1a={},_0x3fcda3={};_0x35d6fe<_0x48c710['length'];_0x35d6fe+=0x1){_0x1fcd1a=_0x48c710[_0x35d6fe];if(_[_0x0170('0x45')](_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']])){_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']]=new FreshsalesAccount(_0x1fcd1a);}else{_0x5148fc[_0x0170('0x42')](_0x5148fc[_0x0170('0x24')][_0x1fcd1a['id']],_0x1fcd1a);}}}return _0x5148fc[_0x0170('0x24')];};};Realtime['prototype'][_0x0170('0x51')]=function(){var _0xb8ff72=this;return function(_0x697383){for(var _0x183eff=0x0;_0x183eff<_0x697383[_0x0170('0x46')];_0x183eff+=0x1){_[_0x0170('0x52')](_0xb8ff72[_0x0170('0x15')][_0x697383[_0x183eff][_0x0170('0x29')]],_0x697383[_0x183eff]);}return _0xb8ff72[_0x0170('0x15')];};};Realtime['prototype'][_0x0170('0x53')]=function(){var _0x4d472e=this;return function(_0x3f9161){clearVoiceQueues(_0x4d472e[_0x0170('0x15')]);if(_0x3f9161){_0x3f9161=_[_0x0170('0x54')](_0x3f9161,_0x0170('0x55'));for(var _0x22e78b in _0x3f9161){if(_0x3f9161[_0x0170('0x26')](_0x22e78b)){var _0x1bc125={};for(var _0x227e0d=0x0;_0x227e0d<_0x3f9161[_0x22e78b][_0x0170('0x46')];_0x227e0d+=0x1){var _0x180bc7=_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x56')];if(_0x4d472e['voiceQueues'][_0x180bc7]){if(_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerexit']){_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x34')]+=0x1;}if(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x57')]){_0x4d472e['voiceQueues'][_0x180bc7]['abandoned']+=0x1;}_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2d')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x58')])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5a')]),'seconds')||0x0;if(_0x227e0d===_0x3f9161[_0x22e78b][_0x0170('0x46')]-0x1){_0x4d472e['voiceQueues'][_0x180bc7][_0x0170('0x2e')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5b')]||_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerabandonAt']||_0x3f9161[_0x22e78b][_0x227e0d]['queuecallerexitAt'])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5a')]),_0x0170('0x5c'))||0x0;_0x4d472e['voiceQueues'][_0x180bc7][_0x0170('0x2c')]+=0x1;if(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5d')]){_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x33')]+=0x1;_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2f')]+=moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x5b')])[_0x0170('0x59')](moment(_0x3f9161[_0x22e78b][_0x227e0d][_0x0170('0x58')]),_0x0170('0x5c'))||0x0;}}else{_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2e')]+=_0x4d472e[_0x0170('0x15')][_0x180bc7][_0x0170('0x2d')]||0x0;}}}}}}return _0x4d472e[_0x0170('0x15')];};};Realtime[_0x0170('0x40')][_0x0170('0x5e')]=function(){var _0x2fdd3e=this;return function(_0xf26e15){clearVoiceCallReports(_0x2fdd3e[_0x0170('0x5f')]);if(_0xf26e15){for(var _0x36a2b2=0x0;_0x36a2b2<_0xf26e15[_0x0170('0x46')];_0x36a2b2+=0x1){_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x2c')]+=0x1;_0x2fdd3e['outbound'][_0x0170('0x2e')]+=_0xf26e15[_0x36a2b2][_0x0170('0x60')];if(_0xf26e15[_0x36a2b2][_0x0170('0x61')]===_0x0170('0x62')){_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x33')]+=0x1;_0x2fdd3e[_0x0170('0x5f')]['sumHoldTime']+=_0xf26e15[_0x36a2b2][_0x0170('0x60')]-_0xf26e15[_0x36a2b2][_0x0170('0x63')]||0x0;_0x2fdd3e[_0x0170('0x5f')][_0x0170('0x2f')]+=_0xf26e15[_0x36a2b2]['billableseconds'];}}}return _0x2fdd3e[_0x0170('0x5f')];};};Realtime[_0x0170('0x40')]['initCampaigns']=function(){var _0x187305=this;return function(_0x4cbb0e){if(_0x4cbb0e){freeIsNotKey(_0x4cbb0e,_0x187305['campaigns'],_0x0170('0x29'));for(var _0x5d7129=0x0,_0x2ad658={};_0x5d7129<_0x4cbb0e[_0x0170('0x46')];_0x5d7129+=0x1){_0x2ad658=_0x4cbb0e[_0x5d7129];if(_['isUndefined'](_0x187305[_0x0170('0x17')][_0x2ad658['name']])){_0x187305[_0x0170('0x17')][_0x2ad658[_0x0170('0x29')]]=new Campaign(_0x2ad658);}else{_0x187305[_0x0170('0x42')](_0x187305['campaigns'][_0x2ad658[_0x0170('0x29')]],_0x2ad658);_0x187305[_0x0170('0x17')][_0x2ad658[_0x0170('0x29')]][_0x0170('0x64')]=_0x2ad658[_0x0170('0x65')]?_0x2ad658['SquareProject'][_0x0170('0x29')]:undefined;}}}return _0x187305[_0x0170('0x17')];};};Realtime[_0x0170('0x40')][_0x0170('0x66')]=function(){var _0x53e926=this;return function(_0x4d31c4){if(_0x4d31c4){freeIsNotKey(_0x4d31c4,_0x53e926[_0x0170('0x19')],'id');for(var _0x570b24=0x0,_0x144d0d={};_0x570b24<_0x4d31c4[_0x0170('0x46')];_0x570b24+=0x1){_0x144d0d=_0x4d31c4[_0x570b24];if(_['isUndefined'](_0x53e926[_0x0170('0x19')][_0x144d0d['id']])){_0x53e926['voiceExtensions'][_0x144d0d['id']]=new VoiceExtension(_0x144d0d);}else{_0x53e926[_0x0170('0x42')](_0x53e926['voiceExtensions'][_0x144d0d['id']],_0x144d0d);}}}return _0x53e926[_0x0170('0x19')];};};Realtime[_0x0170('0x40')][_0x0170('0x67')]=function(){var _0x3eaa70=this;return function(_0x32c11f){clearCampaigns(_0x3eaa70[_0x0170('0x17')]);for(var _0x4a4892=0x0;_0x4a4892<_0x32c11f['length'];_0x4a4892+=0x1){_['merge'](_0x3eaa70['campaigns'][_0x32c11f[_0x4a4892][_0x0170('0x29')]],_0x32c11f[_0x4a4892]);}return _0x3eaa70[_0x0170('0x17')];};};Realtime['prototype']['initFaxAccounts']=function(){var _0x3b1d20=this;return function(_0x2dc15a){if(_0x2dc15a){freeIsNotKey(_0x2dc15a,_0x3b1d20[_0x0170('0x68')],'id');for(var _0x30eb33=0x0,_0x37f31c={},_0x12c90e={};_0x30eb33<_0x2dc15a[_0x0170('0x46')];_0x30eb33+=0x1){_0x37f31c=_0x2dc15a[_0x30eb33];if(_[_0x0170('0x45')](_0x3b1d20['faxAccounts'][_0x37f31c['id']])){_0x3b1d20[_0x0170('0x68')][_0x37f31c['id']]=new FaxAccount(_0x37f31c);}else{_0x3b1d20[_0x0170('0x42')](_0x3b1d20[_0x0170('0x68')][_0x37f31c['id']],_0x37f31c);}}}return _0x3b1d20[_0x0170('0x68')];};};module[_0x0170('0x69')]=Realtime;
\ No newline at end of file
+var _0xd360=['isNil','interface','format','name','total','sumBillable','isEmpty','ivrTotalCallsDays','unmanaged','abandoned','sumHoldTime','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isUndefined','telephones','initTrunks','initVoiceQueues','voiceQueues','initTemplates','templates','initZendeskAccounts','zohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','merge','groupBy','uniqueid','queue','queuecallerexit','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallercomplete','answered','initVoiceCallReports','disposition','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','bluebird','util','lodash','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','trunks','triggers','campaigns','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','hasOwnProperty','mapKeys','SIP/%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd360,0x1e5));var _0x0d36=function(_0x32f89c,_0x108806){_0x32f89c=_0x32f89c-0x0;var _0x26ed5e=_0xd360[_0x32f89c];return _0x26ed5e;};'use strict';var BPromise=require(_0x0d36('0x0'));var util=require(_0x0d36('0x1'));var _=require(_0x0d36('0x2'));var moment=require('moment');var Agent=require(_0x0d36('0x3'));var Telephone=require(_0x0d36('0x4'));var Trunk=require(_0x0d36('0x5'));var VoiceQueue=require(_0x0d36('0x6'));var Trigger=require(_0x0d36('0x7'));var Template=require('../model/template');var Campaign=require(_0x0d36('0x8'));var VoiceExtension=require(_0x0d36('0x9'));var ZendeskAccount=require(_0x0d36('0xa'));var SalesforceAccount=require(_0x0d36('0xb'));var FreshdeskAccount=require(_0x0d36('0xc'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x0d36('0xd'));var DeskAccount=require(_0x0d36('0xe'));var VtigerAccount=require(_0x0d36('0xf'));var ServicenowAccount=require(_0x0d36('0x10'));var Dynamics365Account=require(_0x0d36('0x11'));var FreshsalesAccount=require(_0x0d36('0x12'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x0d36('0x13')]={};this['telephones']={};this[_0x0d36('0x14')]={};this['voiceQueues']={};this[_0x0d36('0x15')]={};this[_0x0d36('0x16')]={};this['templates']={};this[_0x0d36('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x0d36('0x18')]={};this[_0x0d36('0x19')]={};this[_0x0d36('0x1a')]={};this[_0x0d36('0x1b')]={};this[_0x0d36('0x1c')]={};this['settings']={};this[_0x0d36('0x1d')]={};this[_0x0d36('0x1e')]={};this[_0x0d36('0x1f')]={};this[_0x0d36('0x20')]={};this['zohoAccounts']={};this['deskAccounts']={};this[_0x0d36('0x21')]={};this[_0x0d36('0x22')]={};this[_0x0d36('0x23')]={};this['freshsalesAccounts']={};this[_0x0d36('0x24')]={};};function freeIsNotKey(_0x32fd24,_0x4493c5,_0x9834d2){var _0x343b3d=_['mapKeys'](_0x32fd24,function(_0x2b9782,_0x37ef81){return _0x2b9782[_0x9834d2];});for(var _0xa87a0 in _0x4493c5){if(_0x4493c5[_0x0d36('0x25')](_0xa87a0)){if(!_0x343b3d[_0xa87a0]){delete _0x4493c5[_0xa87a0];}}}}function freeIsNotKeySip(_0x59ffde,_0x101fb0){var _0x2fb312=_[_0x0d36('0x26')](_0x59ffde,function(_0x1f94eb,_0x41c2cc){return util['format'](_0x0d36('0x27'),_0x1f94eb['name']);});for(var _0x2d8146 in _0x101fb0){if(_0x101fb0[_0x0d36('0x25')](_0x2d8146)){if(!_0x2fb312[_0x2d8146]){delete _0x101fb0[_0x2d8146];}}}}function freeIsNotKeyAgent(_0x2e6c77,_0x10d8a2){var _0x138fad=_['mapKeys'](_0x2e6c77,function(_0x577f8e,_0x5c7b28){var _0x425176=_[_0x0d36('0x28')](_0x577f8e[_0x0d36('0x29')])?util[_0x0d36('0x2a')](_0x0d36('0x27'),_0x577f8e[_0x0d36('0x2b')]):_0x577f8e[_0x0d36('0x29')];return _0x425176;});for(var _0x573a59 in _0x10d8a2){if(_0x10d8a2['hasOwnProperty'](_0x573a59)){if(!_0x138fad[_0x573a59]){delete _0x10d8a2[_0x573a59];}}}}function clearVoiceCallReports(_0x4820f2){_0x4820f2[_0x0d36('0x2c')]=0x0;_0x4820f2['answered']=0x0;_0x4820f2['sumHoldTime']=0x0;_0x4820f2['sumDuration']=0x0;_0x4820f2[_0x0d36('0x2d')]=0x0;}function clearCampaigns(_0x315574){if(!_[_0x0d36('0x2e')](_0x315574)){for(var _0xdbbabf in _0x315574){if(_0x315574[_0x0d36('0x25')](_0xdbbabf)){_0x315574[_0xdbbabf][_0x0d36('0x2f')]=0x0;_0x315574[_0xdbbabf]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x4dd85f){if(!_['isEmpty'](_0x4dd85f)){for(var _0x290fda in _0x4dd85f){if(_0x4dd85f[_0x0d36('0x25')](_0x290fda)){_0x4dd85f[_0x290fda][_0x0d36('0x2c')]=0x0;_0x4dd85f[_0x290fda]['answered']=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x30')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x31')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x32')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x33')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x2d')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x34')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x35')]=0x0;_0x4dd85f[_0x290fda]['outboundBusyCallsDay']=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x36')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x37')]=0x0;_0x4dd85f[_0x290fda]['outboundUnknownCallsDay']=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x38')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x39')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x3a')]=0x0;_0x4dd85f[_0x290fda]['outboundOriginateFailureCallsDay']=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x3b')]=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x3c')]=0x0;_0x4dd85f[_0x290fda]['outboundAnswerAgiCallsDay']=0x0;_0x4dd85f[_0x290fda]['outboundAnswerCallsDay']=0x0;_0x4dd85f[_0x290fda][_0x0d36('0x3d')]=!![];}}}}Realtime['prototype'][_0x0d36('0x3e')]=function(_0x4fd275,_0x35e53f){for(var _0x486c9f in _0x35e53f){if(_0x4fd275[_0x0d36('0x25')](_0x486c9f)){_0x4fd275[_0x486c9f]=_0x35e53f[_0x486c9f];}}};Realtime[_0x0d36('0x3f')][_0x0d36('0x40')]=function(){var _0x3b7281=this;return function(_0x6b1344){if(_0x6b1344){freeIsNotKeyAgent(_0x6b1344,_0x3b7281[_0x0d36('0x13')]);for(var _0x200b66=0x0,_0xbc3fe6={},_0x1a5c68={};_0x200b66<_0x6b1344[_0x0d36('0x41')];_0x200b66+=0x1){_0xbc3fe6=_0x6b1344[_0x200b66];var _0x1e6986=_[_0x0d36('0x28')](_0xbc3fe6['interface'])?util[_0x0d36('0x2a')](_0x0d36('0x27'),_0xbc3fe6[_0x0d36('0x2b')]):_0xbc3fe6['interface'];if(_[_0x0d36('0x42')](_0x3b7281['agents'][_0x1e6986])){_0x3b7281[_0x0d36('0x13')][_0x1e6986]=new Agent(_0xbc3fe6);}else{_0x3b7281[_0x0d36('0x3e')](_0x3b7281[_0x0d36('0x13')][_0x1e6986],_0xbc3fe6);}}}return _0x3b7281[_0x0d36('0x13')];};};Realtime[_0x0d36('0x3f')]['initTelephones']=function(){var _0x331745=this;return function(_0x4bfbe6){if(_0x4bfbe6){freeIsNotKeySip(_0x4bfbe6,_0x331745[_0x0d36('0x43')]);for(var _0x7b5cf6=0x0,_0x12b27d={},_0x308d5e={};_0x7b5cf6<_0x4bfbe6[_0x0d36('0x41')];_0x7b5cf6+=0x1){_0x12b27d=_0x4bfbe6[_0x7b5cf6];if(_[_0x0d36('0x42')](_0x331745['telephones'][util['format'](_0x0d36('0x27'),_0x12b27d['name'])])){_0x331745[_0x0d36('0x43')][util[_0x0d36('0x2a')]('SIP/%s',_0x12b27d[_0x0d36('0x2b')])]=new Telephone(_0x12b27d);}else{_0x331745[_0x0d36('0x3e')](_0x331745[_0x0d36('0x43')][util[_0x0d36('0x2a')](_0x0d36('0x27'),_0x12b27d['name'])],_0x12b27d);}}}return _0x331745[_0x0d36('0x43')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x44')]=function(){var _0xd1397d=this;return function(_0xee546c){if(_0xee546c){freeIsNotKeySip(_0xee546c,_0xd1397d['trunks']);for(var _0x5d8f10=0x0,_0x2a5eb6={},_0x34a55f={};_0x5d8f10<_0xee546c['length'];_0x5d8f10+=0x1){_0x2a5eb6=_0xee546c[_0x5d8f10];if(_[_0x0d36('0x42')](_0xd1397d[_0x0d36('0x14')][util[_0x0d36('0x2a')](_0x0d36('0x27'),_0x2a5eb6[_0x0d36('0x2b')])])){_0xd1397d[_0x0d36('0x14')][util['format'](_0x0d36('0x27'),_0x2a5eb6[_0x0d36('0x2b')])]=new Trunk(_0x2a5eb6);}else{_0xd1397d['mergeFromDatabase'](_0xd1397d[_0x0d36('0x14')][util[_0x0d36('0x2a')]('SIP/%s',_0x2a5eb6[_0x0d36('0x2b')])],_0x2a5eb6);}}}return _0xd1397d[_0x0d36('0x14')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x45')]=function(){var _0x251838=this;return function(_0x4b87a5){if(_0x4b87a5){freeIsNotKey(_0x4b87a5,_0x251838[_0x0d36('0x46')],_0x0d36('0x2b'));for(var _0x57defe=0x0,_0x20ee68={},_0x220b46={};_0x57defe<_0x4b87a5['length'];_0x57defe+=0x1){_0x20ee68=_0x4b87a5[_0x57defe];if(_[_0x0d36('0x42')](_0x251838[_0x0d36('0x46')][_0x20ee68['name']])){_0x251838[_0x0d36('0x46')][_0x20ee68[_0x0d36('0x2b')]]=new VoiceQueue(_0x20ee68);}else{_0x251838[_0x0d36('0x3e')](_0x251838['voiceQueues'][_0x20ee68['name']],_0x20ee68);}}}return _0x251838['voiceQueues'];};};Realtime[_0x0d36('0x3f')]['initTriggers']=function(){var _0x5aff5c=this;return function(_0x47080b){if(_0x47080b){freeIsNotKey(_0x47080b,_0x5aff5c[_0x0d36('0x15')],'id');for(var _0xdec8dd=0x0,_0x682c33={},_0x5dddb5={};_0xdec8dd<_0x47080b['length'];_0xdec8dd+=0x1){_0x682c33=_0x47080b[_0xdec8dd];if(_[_0x0d36('0x42')](_0x5aff5c[_0x0d36('0x15')][_0x682c33['id']])){_0x5aff5c[_0x0d36('0x15')][_0x682c33['id']]=new Trigger(_0x682c33);}else{_0x5aff5c[_0x0d36('0x3e')](_0x5aff5c[_0x0d36('0x15')][_0x682c33['id']],_0x682c33);}}}return _0x5aff5c['triggers'];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x47')]=function(){var _0x3639c7=this;return function(_0x3d38e5){if(_0x3d38e5){freeIsNotKey(_0x3d38e5,_0x3639c7[_0x0d36('0x48')],'id');for(var _0x1b8662=0x0,_0x540bbc={},_0x294782={};_0x1b8662<_0x3d38e5['length'];_0x1b8662+=0x1){_0x540bbc=_0x3d38e5[_0x1b8662];if(_[_0x0d36('0x42')](_0x3639c7[_0x0d36('0x48')][_0x540bbc['id']])){_0x3639c7[_0x0d36('0x48')][_0x540bbc['id']]=new Template(_0x540bbc);}else{_0x3639c7[_0x0d36('0x3e')](_0x3639c7[_0x0d36('0x48')][_0x540bbc['id']],_0x540bbc);}}}return _0x3639c7[_0x0d36('0x48')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x49')]=function(){var _0x4b56c6=this;return function(_0x40ea32){if(_0x40ea32){freeIsNotKey(_0x40ea32,_0x4b56c6[_0x0d36('0x1d')],'id');for(var _0x5bcda3=0x0,_0x1f6e65={},_0x35a820={};_0x5bcda3<_0x40ea32['length'];_0x5bcda3+=0x1){_0x1f6e65=_0x40ea32[_0x5bcda3];if(_[_0x0d36('0x42')](_0x4b56c6[_0x0d36('0x1d')][_0x1f6e65['id']])){_0x4b56c6['zendeskAccounts'][_0x1f6e65['id']]=new ZendeskAccount(_0x1f6e65);}else{_0x4b56c6[_0x0d36('0x3e')](_0x4b56c6[_0x0d36('0x1d')][_0x1f6e65['id']],_0x1f6e65);}}}return _0x4b56c6[_0x0d36('0x1d')];};};Realtime[_0x0d36('0x3f')]['initSalesforceAccounts']=function(){var _0x312a49=this;return function(_0x1b25fd){if(_0x1b25fd){freeIsNotKey(_0x1b25fd,_0x312a49[_0x0d36('0x1e')],'id');for(var _0x10a48b=0x0,_0x221d07={},_0x1d0150={};_0x10a48b<_0x1b25fd['length'];_0x10a48b+=0x1){_0x221d07=_0x1b25fd[_0x10a48b];if(_[_0x0d36('0x42')](_0x312a49[_0x0d36('0x1e')][_0x221d07['id']])){_0x312a49[_0x0d36('0x1e')][_0x221d07['id']]=new SalesforceAccount(_0x221d07);}else{_0x312a49[_0x0d36('0x3e')](_0x312a49[_0x0d36('0x1e')][_0x221d07['id']],_0x221d07);}}}return _0x312a49[_0x0d36('0x1e')];};};Realtime[_0x0d36('0x3f')]['initFreshdeskAccounts']=function(){var _0x2399b0=this;return function(_0x3dd765){if(_0x3dd765){freeIsNotKey(_0x3dd765,_0x2399b0[_0x0d36('0x20')],'id');for(var _0x5250ae=0x0,_0x47d89f={},_0x33914d={};_0x5250ae<_0x3dd765[_0x0d36('0x41')];_0x5250ae+=0x1){_0x47d89f=_0x3dd765[_0x5250ae];if(_[_0x0d36('0x42')](_0x2399b0['freshdeskAccounts'][_0x47d89f['id']])){_0x2399b0[_0x0d36('0x20')][_0x47d89f['id']]=new FreshdeskAccount(_0x47d89f);}else{_0x2399b0[_0x0d36('0x3e')](_0x2399b0[_0x0d36('0x20')][_0x47d89f['id']],_0x47d89f);}}}return _0x2399b0[_0x0d36('0x20')];};};Realtime[_0x0d36('0x3f')]['initZohoAccounts']=function(){var _0x209593=this;return function(_0x2ccbe3){if(_0x2ccbe3){freeIsNotKey(_0x2ccbe3,_0x209593[_0x0d36('0x4a')],'id');for(var _0x3165b4=0x0,_0x55738c={},_0x5a0419={};_0x3165b4<_0x2ccbe3['length'];_0x3165b4+=0x1){_0x55738c=_0x2ccbe3[_0x3165b4];if(_[_0x0d36('0x42')](_0x209593[_0x0d36('0x4a')][_0x55738c['id']])){_0x209593[_0x0d36('0x4a')][_0x55738c['id']]=new ZohoAccount(_0x55738c);}else{_0x209593[_0x0d36('0x3e')](_0x209593[_0x0d36('0x4a')][_0x55738c['id']],_0x55738c);}}}return _0x209593[_0x0d36('0x4a')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x4b')]=function(){var _0x50a67a=this;return function(_0x2f639d){if(_0x2f639d){freeIsNotKey(_0x2f639d,_0x50a67a[_0x0d36('0x4c')],'id');for(var _0x130381=0x0,_0x35479b={},_0x275143={};_0x130381<_0x2f639d['length'];_0x130381+=0x1){_0x35479b=_0x2f639d[_0x130381];if(_[_0x0d36('0x42')](_0x50a67a['deskAccounts'][_0x35479b['id']])){_0x50a67a[_0x0d36('0x4c')][_0x35479b['id']]=new DeskAccount(_0x35479b);}else{_0x50a67a[_0x0d36('0x3e')](_0x50a67a[_0x0d36('0x4c')][_0x35479b['id']],_0x35479b);}}}return _0x50a67a['deskAccounts'];};};Realtime['prototype'][_0x0d36('0x4d')]=function(){var _0x202af9=this;return function(_0xa282b7){if(_0xa282b7){freeIsNotKey(_0xa282b7,_0x202af9[_0x0d36('0x1f')],'id');for(var _0x57e021=0x0,_0x3358e1={},_0x439193={};_0x57e021<_0xa282b7['length'];_0x57e021+=0x1){_0x3358e1=_0xa282b7[_0x57e021];if(_[_0x0d36('0x42')](_0x202af9['sugarcrmAccounts'][_0x3358e1['id']])){_0x202af9['sugarcrmAccounts'][_0x3358e1['id']]=new SugarcrmAccount(_0x3358e1);}else{_0x202af9[_0x0d36('0x3e')](_0x202af9[_0x0d36('0x1f')][_0x3358e1['id']],_0x3358e1);}}}return _0x202af9[_0x0d36('0x1f')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x4e')]=function(){var _0x31397e=this;return function(_0x1845b3){if(_0x1845b3){freeIsNotKey(_0x1845b3,_0x31397e[_0x0d36('0x21')],'id');for(var _0xa4e634=0x0,_0x2c98c2={},_0x170c12={};_0xa4e634<_0x1845b3[_0x0d36('0x41')];_0xa4e634+=0x1){_0x2c98c2=_0x1845b3[_0xa4e634];if(_[_0x0d36('0x42')](_0x31397e[_0x0d36('0x21')][_0x2c98c2['id']])){_0x31397e[_0x0d36('0x21')][_0x2c98c2['id']]=new VtigerAccount(_0x2c98c2);}else{_0x31397e[_0x0d36('0x3e')](_0x31397e[_0x0d36('0x21')][_0x2c98c2['id']],_0x2c98c2);}}}return _0x31397e[_0x0d36('0x21')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x4f')]=function(){var _0x36c268=this;return function(_0x324d5e){if(_0x324d5e){freeIsNotKey(_0x324d5e,_0x36c268[_0x0d36('0x22')],'id');for(var _0x3bd6c0=0x0,_0x48a3d6={},_0x1beb1d={};_0x3bd6c0<_0x324d5e['length'];_0x3bd6c0+=0x1){_0x48a3d6=_0x324d5e[_0x3bd6c0];if(_[_0x0d36('0x42')](_0x36c268[_0x0d36('0x22')][_0x48a3d6['id']])){_0x36c268[_0x0d36('0x22')][_0x48a3d6['id']]=new ServicenowAccount(_0x48a3d6);}else{_0x36c268['mergeFromDatabase'](_0x36c268[_0x0d36('0x22')][_0x48a3d6['id']],_0x48a3d6);}}}return _0x36c268[_0x0d36('0x22')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x50')]=function(){var _0x26dd46=this;return function(_0x3a1d0e){if(_0x3a1d0e){freeIsNotKey(_0x3a1d0e,_0x26dd46['dynamics365Accounts'],'id');for(var _0x1006bf=0x0,_0x4dbdbf={},_0x358502={};_0x1006bf<_0x3a1d0e[_0x0d36('0x41')];_0x1006bf+=0x1){_0x4dbdbf=_0x3a1d0e[_0x1006bf];if(_[_0x0d36('0x42')](_0x26dd46[_0x0d36('0x23')][_0x4dbdbf['id']])){_0x26dd46[_0x0d36('0x23')][_0x4dbdbf['id']]=new Dynamics365Account(_0x4dbdbf);}else{_0x26dd46[_0x0d36('0x3e')](_0x26dd46[_0x0d36('0x23')][_0x4dbdbf['id']],_0x4dbdbf);}}}return _0x26dd46[_0x0d36('0x23')];};};Realtime['prototype'][_0x0d36('0x51')]=function(){var _0x54b78f=this;return function(_0x51e3c0){if(_0x51e3c0){freeIsNotKey(_0x51e3c0,_0x54b78f['freshsalesAccounts'],'id');for(var _0x206def=0x0,_0x1fcc49={},_0x28124d={};_0x206def<_0x51e3c0[_0x0d36('0x41')];_0x206def+=0x1){_0x1fcc49=_0x51e3c0[_0x206def];if(_[_0x0d36('0x42')](_0x54b78f['freshsalesAccounts'][_0x1fcc49['id']])){_0x54b78f[_0x0d36('0x52')][_0x1fcc49['id']]=new FreshsalesAccount(_0x1fcc49);}else{_0x54b78f[_0x0d36('0x3e')](_0x54b78f['freshsalesAccounts'][_0x1fcc49['id']],_0x1fcc49);}}}return _0x54b78f[_0x0d36('0x52')];};};Realtime[_0x0d36('0x3f')]['initVoiceQueueHopperHistory']=function(){var _0x54a39a=this;return function(_0x24ba59){for(var _0x508e4d=0x0;_0x508e4d<_0x24ba59['length'];_0x508e4d+=0x1){_[_0x0d36('0x53')](_0x54a39a['voiceQueues'][_0x24ba59[_0x508e4d][_0x0d36('0x2b')]],_0x24ba59[_0x508e4d]);}return _0x54a39a['voiceQueues'];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x38c592=this;return function(_0x5bb810){clearVoiceQueues(_0x38c592['voiceQueues']);if(_0x5bb810){_0x5bb810=_[_0x0d36('0x54')](_0x5bb810,_0x0d36('0x55'));for(var _0x4524f7 in _0x5bb810){if(_0x5bb810[_0x0d36('0x25')](_0x4524f7)){var _0x5d7591={};for(var _0x2132ba=0x0;_0x2132ba<_0x5bb810[_0x4524f7]['length'];_0x2132ba+=0x1){var _0x3da8a7=_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x56')];if(_0x38c592['voiceQueues'][_0x3da8a7]){if(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x57')]){_0x38c592['voiceQueues'][_0x3da8a7][_0x0d36('0x30')]+=0x1;}if(_0x5bb810[_0x4524f7][_0x2132ba]['queuecallerabandon']){_0x38c592[_0x0d36('0x46')][_0x3da8a7]['abandoned']+=0x1;}_0x38c592[_0x0d36('0x46')][_0x3da8a7]['sumHoldTime']+=moment(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x58')])[_0x0d36('0x59')](moment(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x5a')]),_0x0d36('0x5b'))||0x0;if(_0x2132ba===_0x5bb810[_0x4524f7][_0x0d36('0x41')]-0x1){_0x38c592[_0x0d36('0x46')][_0x3da8a7]['sumDuration']+=moment(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x5c')]||_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x5d')]||_0x5bb810[_0x4524f7][_0x2132ba]['queuecallerexitAt'])[_0x0d36('0x59')](moment(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x5a')]),'seconds')||0x0;_0x38c592['voiceQueues'][_0x3da8a7]['total']+=0x1;if(_0x5bb810[_0x4524f7][_0x2132ba][_0x0d36('0x5e')]){_0x38c592['voiceQueues'][_0x3da8a7][_0x0d36('0x5f')]+=0x1;_0x38c592[_0x0d36('0x46')][_0x3da8a7][_0x0d36('0x2d')]+=moment(_0x5bb810[_0x4524f7][_0x2132ba]['queuecallercompleteAt'])[_0x0d36('0x59')](moment(_0x5bb810[_0x4524f7][_0x2132ba]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x38c592['voiceQueues'][_0x3da8a7]['sumDuration']+=_0x38c592[_0x0d36('0x46')][_0x3da8a7]['sumHoldTime']||0x0;}}}}}}return _0x38c592[_0x0d36('0x46')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x60')]=function(){var _0x457d1e=this;return function(_0x448578){clearVoiceCallReports(_0x457d1e[_0x0d36('0x17')]);if(_0x448578){for(var _0x30ed17=0x0;_0x30ed17<_0x448578[_0x0d36('0x41')];_0x30ed17+=0x1){_0x457d1e[_0x0d36('0x17')]['total']+=0x1;_0x457d1e[_0x0d36('0x17')][_0x0d36('0x33')]+=_0x448578[_0x30ed17]['duration'];if(_0x448578[_0x30ed17][_0x0d36('0x61')]==='ANSWERED'){_0x457d1e[_0x0d36('0x17')]['answered']+=0x1;_0x457d1e['outbound'][_0x0d36('0x32')]+=_0x448578[_0x30ed17]['duration']-_0x448578[_0x30ed17][_0x0d36('0x62')]||0x0;_0x457d1e['outbound'][_0x0d36('0x2d')]+=_0x448578[_0x30ed17][_0x0d36('0x62')];}}}return _0x457d1e[_0x0d36('0x17')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x63')]=function(){var _0x393f46=this;return function(_0x1f71e2){if(_0x1f71e2){freeIsNotKey(_0x1f71e2,_0x393f46['campaigns'],_0x0d36('0x2b'));for(var _0x4d65ba=0x0,_0x731795={};_0x4d65ba<_0x1f71e2[_0x0d36('0x41')];_0x4d65ba+=0x1){_0x731795=_0x1f71e2[_0x4d65ba];if(_[_0x0d36('0x42')](_0x393f46['campaigns'][_0x731795[_0x0d36('0x2b')]])){_0x393f46[_0x0d36('0x16')][_0x731795['name']]=new Campaign(_0x731795);}else{_0x393f46[_0x0d36('0x3e')](_0x393f46[_0x0d36('0x16')][_0x731795[_0x0d36('0x2b')]],_0x731795);_0x393f46[_0x0d36('0x16')][_0x731795[_0x0d36('0x2b')]][_0x0d36('0x64')]=_0x731795[_0x0d36('0x65')]?_0x731795[_0x0d36('0x65')][_0x0d36('0x2b')]:undefined;}}}return _0x393f46[_0x0d36('0x16')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x66')]=function(){var _0xd172eb=this;return function(_0x109d2b){if(_0x109d2b){freeIsNotKey(_0x109d2b,_0xd172eb[_0x0d36('0x18')],'id');for(var _0x397895=0x0,_0x3434d2={};_0x397895<_0x109d2b[_0x0d36('0x41')];_0x397895+=0x1){_0x3434d2=_0x109d2b[_0x397895];if(_[_0x0d36('0x42')](_0xd172eb[_0x0d36('0x18')][_0x3434d2['id']])){_0xd172eb[_0x0d36('0x18')][_0x3434d2['id']]=new VoiceExtension(_0x3434d2);}else{_0xd172eb[_0x0d36('0x3e')](_0xd172eb['voiceExtensions'][_0x3434d2['id']],_0x3434d2);}}}return _0xd172eb['voiceExtensions'];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x67')]=function(){var _0x387791=this;return function(_0x4a3415){clearCampaigns(_0x387791[_0x0d36('0x16')]);for(var _0xdfc9a6=0x0;_0xdfc9a6<_0x4a3415['length'];_0xdfc9a6+=0x1){_['merge'](_0x387791[_0x0d36('0x16')][_0x4a3415[_0xdfc9a6][_0x0d36('0x2b')]],_0x4a3415[_0xdfc9a6]);}return _0x387791[_0x0d36('0x16')];};};Realtime[_0x0d36('0x3f')][_0x0d36('0x68')]=function(){var _0x3dc455=this;return function(_0x24f69d){if(_0x24f69d){freeIsNotKey(_0x24f69d,_0x3dc455[_0x0d36('0x24')],'id');for(var _0x281f69=0x0,_0x27ea3b={},_0x479395={};_0x281f69<_0x24f69d[_0x0d36('0x41')];_0x281f69+=0x1){_0x27ea3b=_0x24f69d[_0x281f69];if(_[_0x0d36('0x42')](_0x3dc455[_0x0d36('0x24')][_0x27ea3b['id']])){_0x3dc455[_0x0d36('0x24')][_0x27ea3b['id']]=new FaxAccount(_0x27ea3b);}else{_0x3dc455[_0x0d36('0x3e')](_0x3dc455[_0x0d36('0x24')][_0x27ea3b['id']],_0x27ea3b);}}}return _0x3dc455[_0x0d36('0x24')];};};module['exports']=Realtime;
\ No newline at end of file
index 0ec1015..7d00edd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x599b=['connectedlinenum','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','blindTransfer','monitorFilename','monitors','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','sync','xdr','disabled','custom:voiceCallReport','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','isNil','format','SIP/%s','voiceQueueReport','length','assigned','lastAssignedTo','interface','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','calleridpreview','originatecalleridnum','destinationchannel','channel','calleridnum','disposition','ANSWERED'];(function(_0x5dd957,_0x3de3e7){var _0x58326c=function(_0x4c5e49){while(--_0x4c5e49){_0x5dd957['push'](_0x5dd957['shift']());}};_0x58326c(++_0x3de3e7);}(_0x599b,0x71));var _0xb599=function(_0x52787c,_0x35d76f){_0x52787c=_0x52787c-0x0;var _0x37e055=_0x599b[_0x52787c];return _0x37e055;};'use strict';var _=require(_0xb599('0x0'));var moment=require(_0xb599('0x1'));var util=require(_0xb599('0x2'));var config=require(_0xb599('0x3'));var ami=require(_0xb599('0x4'));var RpcVoiceAgentReport=require(_0xb599('0x5'));var RpcVoiceCallReport=require(_0xb599('0x6'));var RpcVoiceDialReport=require(_0xb599('0x7'));var RpcMemberReport=require(_0xb599('0x8'));var RpcVoiceQueueReport=require(_0xb599('0x9'));var RpcVoiceRecording=require(_0xb599('0xa'));var RpcVoiceTransferReport=require(_0xb599('0xb'));var VoiceQueueReport=require(_0xb599('0xc'));var VoiceCallReport=require(_0xb599('0xd'));var VoiceAgentReport=require(_0xb599('0xe'));var VoiceDialReport=require(_0xb599('0xf'));var UserReport=require(_0xb599('0x10'));function Report(_0x2f0309){this[_0xb599('0x11')]=_0x2f0309;this[_0xb599('0x12')]=_0x2f0309['agents'];this[_0xb599('0x13')]=_0x2f0309[_0xb599('0x13')];}Report['prototype'][_0xb599('0x14')]=function(_0x29f93a){var _0x4e66f6=new VoiceQueueReport(this['realtime']);var _0x41b8fc=new VoiceAgentReport(this[_0xb599('0x11')]);var _0x39db35=new VoiceDialReport(this[_0xb599('0x11')]);var _0x48d98d=new VoiceCallReport(this[_0xb599('0x11')]);var _0x1f93a7=new UserReport(this['realtime']);if(config[_0xb599('0x15')]&&config['xdr'][_0xb599('0x16')]){ami['on']('custom:voiceQueueReport',this['voiceQueueReport']['bind'](this));ami['on'](_0xb599('0x17'),this['voiceCallReport'][_0xb599('0x18')](this));ami['on'](_0xb599('0x19'),this[_0xb599('0x1a')][_0xb599('0x18')](this));ami['on'](_0xb599('0x1b'),this[_0xb599('0x1c')][_0xb599('0x18')](this));ami['on'](_0xb599('0x1d'),this['blindTransfer']['bind'](this));ami['on'](_0xb599('0x1e'),this[_0xb599('0x1f')]['bind'](this));}};Report[_0xb599('0x20')][_0xb599('0x21')]=function(_0x4fbb6e){var _0x2bc6fc;_0x2bc6fc=_[_0xb599('0x22')](this[_0xb599('0x12')],function(_0x2b9de6){return _0x2b9de6[_0xb599('0x23')]==_0x4fbb6e||_0x2b9de6[_0xb599('0x24')]==_0x4fbb6e;});if(_[_0xb599('0x25')](_0x2bc6fc)){var _0x197e51=_[_0xb599('0x22')](this[_0xb599('0x13')],function(_0x58d414){return _0x58d414[_0xb599('0x23')]==_0x4fbb6e||_0x58d414['name']==_0x4fbb6e;});if(_0x197e51){_0x2bc6fc=_[_0xb599('0x22')](this['agents'],function(_0x56aaa2){return _0x56aaa2['interface']==util[_0xb599('0x26')](_0xb599('0x27'),_0x197e51[_0xb599('0x24')]);});}}return _0x2bc6fc;};Report[_0xb599('0x20')][_0xb599('0x28')]=function(_0x197984){for(var _0x44c210=0x0;_0x44c210<_0x197984[_0xb599('0x29')];_0x44c210+=0x1){var _0x474c5c=this[_0xb599('0x21')](_0x197984[_0x44c210]['connectedlinenum']);if(_0x474c5c){_0x197984[_0x44c210][_0xb599('0x23')]=_0x474c5c[_0xb599('0x23')];_0x197984[_0x44c210][_0xb599('0x2a')]=!![];_0x197984[_0x44c210][_0xb599('0x2b')]=_0x474c5c[_0xb599('0x24')];_0x197984[_0x44c210][_0xb599('0x2c')]=_[_0xb599('0x25')](_0x474c5c[_0xb599('0x2c')])?util[_0xb599('0x26')]('SIP/%s',_0x474c5c['name']):_0x474c5c[_0xb599('0x2c')];if(_0x197984[_0x44c210]['queuecallercomplete']){_0x197984[_0x44c210][_0xb599('0x2d')]=moment()[_0xb599('0x26')](_0xb599('0x2e'));}if(_0x197984[_0x44c210]['queuecallerexit']){_0x197984[_0x44c210][_0xb599('0x2f')]=moment()['format'](_0xb599('0x2e'));}RpcMemberReport['voiceQueueReport'](_0x197984[_0x44c210]);}RpcVoiceQueueReport[_0xb599('0x30')](_0x197984[_0x44c210]);}};function extractCalleridNumber(_0x3935a6){var _0xa5b190=_0x3935a6[_0xb599('0x31')](/<(.*?)>/);return _0xa5b190?_0xa5b190[0x1]:_0x3935a6;}Report[_0xb599('0x20')]['voiceCallReport']=function(_0x5be1cd){_0x5be1cd[_0xb599('0x32')]=_0x5be1cd[_0xb599('0x32')]||_0x5be1cd[_0xb599('0x33')];if(_0x5be1cd[_0xb599('0x34')]=='dialer'){_0x5be1cd[_0xb599('0x35')]=_0xb599('0x36');_0x5be1cd[_0xb599('0x37')]=_0x5be1cd[_0xb599('0x36')];if(_0x5be1cd[_0xb599('0x38')]==_0xb599('0x39')){_0x5be1cd[_0xb599('0x23')]='';_0x5be1cd[_0xb599('0x32')]=extractCalleridNumber(_0x5be1cd[_0xb599('0x3a')]);}else if(_0x5be1cd[_0xb599('0x38')]==_0xb599('0x3b')){if(_0x5be1cd[_0xb599('0x32')]=='xcally-motion-preview'){_0x5be1cd['destination']=extractCalleridNumber(_0x5be1cd[_0xb599('0x3c')]);_0x5be1cd['calleridnum']=_0x5be1cd[_0xb599('0x3d')];_0x5be1cd[_0xb599('0x3e')]=[_0x5be1cd[_0xb599('0x3f')],_0x5be1cd[_0xb599('0x3f')]=_0x5be1cd[_0xb599('0x3e')]][0x0];_0x5be1cd[_0xb599('0x3a')]=_0x5be1cd[_0xb599('0x3c')];}else{_0x5be1cd[_0xb599('0x32')]=_0x5be1cd[_0xb599('0x40')];_0x5be1cd['calleridnum']=_0x5be1cd['originatecalleridnum'];if(_0x5be1cd[_0xb599('0x41')]==_0xb599('0x42')){_0x5be1cd[_0xb599('0x23')]=_0x5be1cd[_0xb599('0x43')];}else{_0x5be1cd[_0xb599('0x23')]='';}}}}else{_0x5be1cd[_0xb599('0x3a')]=util[_0xb599('0x26')](_0xb599('0x44'),_0x5be1cd[_0xb599('0x45')],_0x5be1cd[_0xb599('0x40')]);}if(RpcVoiceTransferReport['transfers'][_0x5be1cd[_0xb599('0x46')]]){var _0x32c224=RpcVoiceTransferReport[_0xb599('0x47')][_0x5be1cd[_0xb599('0x46')]];_0x32c224[_0xb599('0x48')]=_0x5be1cd[_0xb599('0x49')];RpcVoiceTransferReport[_0xb599('0x4a')](_0x32c224);delete RpcVoiceTransferReport['transfers'][_0x5be1cd['linkedid']];}RpcVoiceCallReport['create'](_0x5be1cd);if(_0x5be1cd['monitor']){for(var _0x27c8bd=0x0;_0x27c8bd<_0x5be1cd['monitors'][_0xb599('0x29')];_0x27c8bd+=0x1){_0x5be1cd[_0xb599('0x4b')]=_0x5be1cd[_0xb599('0x4c')][_0x27c8bd][_0xb599('0x4d')];_0x5be1cd[_0xb599('0x4e')]=_0x5be1cd[_0xb599('0x4c')][_0x27c8bd][_0xb599('0x4e')];if(_0x5be1cd[_0xb599('0x33')]=='xcally-motion-preview'){_0x5be1cd[_0xb599('0x40')]=_0x5be1cd[_0xb599('0x43')];_0x5be1cd[_0xb599('0x45')]=_0x5be1cd[_0xb599('0x4f')];_0x5be1cd[_0xb599('0x43')]=_0x5be1cd['accountcode'];_0x5be1cd[_0xb599('0x4f')]=_0x5be1cd[_0xb599('0x50')];_0x5be1cd['exten']=_0x5be1cd[_0xb599('0x3d')];}else if(_0x5be1cd[_0xb599('0x33')]==_0xb599('0x51')){_0x5be1cd['calleridnum']=_0x5be1cd['destination'];_0x5be1cd['exten']=_0x5be1cd[_0xb599('0x3d')];}RpcVoiceRecording[_0xb599('0x30')](_0x5be1cd);}}};Report['prototype'][_0xb599('0x1a')]=function(_0x3a142c){if(_['isArray'](_0x3a142c)){_0x3a142c[_0xb599('0x52')](function(_0x2d2f72){RpcVoiceAgentReport[_0xb599('0x30')](_0x2d2f72);});}else{RpcVoiceAgentReport['create'](_0x3a142c);}};Report[_0xb599('0x20')][_0xb599('0x1c')]=function(_0x4fbd90){RpcVoiceDialReport[_0xb599('0x30')](_0x4fbd90);var _0xb86dfe;var _0x3aaed4;var _0x2b596c=_0x4fbd90[_0xb599('0x3f')];if(_[_0xb599('0x53')](_0x2b596c,_0xb599('0x54'))){_0x3aaed4=_0x2b596c[_0xb599('0x55')](_0x2b596c[_0xb599('0x56')]('/')+0x1,_0x2b596c['indexOf']('@'));_0xb86dfe=_[_0xb599('0x22')](this[_0xb599('0x12')],function(_0x1b414b){return _0x1b414b[_0xb599('0x57')]==_0x3aaed4||_0x1b414b[_0xb599('0x58')]==_0x3aaed4||_0x1b414b[_0xb599('0x23')]==_0x3aaed4;});}else{_0x3aaed4=_0x2b596c[_0xb599('0x55')](_0x2b596c[_0xb599('0x56')]('/')+0x1,_0x2b596c[_0xb599('0x59')]('-'));_0xb86dfe=this[_0xb599('0x21')](_0x3aaed4);}if(_0xb86dfe){_0x4fbd90[_0xb599('0x2c')]=_[_0xb599('0x25')](_0xb86dfe[_0xb599('0x2c')])?util[_0xb599('0x26')](_0xb599('0x27'),_0xb86dfe[_0xb599('0x24')]):_0xb86dfe[_0xb599('0x2c')];_0x4fbd90[_0xb599('0x50')]=_0xb86dfe[_0xb599('0x24')];_0x4fbd90[_0xb599('0x23')]=_0xb86dfe[_0xb599('0x23')];RpcMemberReport['voiceDialReport'](_0x4fbd90);}};Report[_0xb599('0x20')][_0xb599('0x4a')]=function(_0x28d584){RpcVoiceTransferReport[_0xb599('0x47')][_0x28d584['transfererlinkedid']]=_0x28d584;};Report[_0xb599('0x20')][_0xb599('0x1f')]=function(_0x3bc29b){RpcVoiceTransferReport[_0xb599('0x1f')](_0x3bc29b);};module['exports']=Report;
\ No newline at end of file
+var _0x9d8c=['exports','lodash','moment','../../../config/environment','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','isNil','name','interface','format','SIP/%s','length','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','match','getAgentByInternal','keys','channel','calleridnum','internal','destination','exten','type','lastapplication','lastdata','queue','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','getCallType','UserId','split','membername','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','forEach','create','Local','substring','indexOf','phone','lastIndexOf','transfererlinkedid'];(function(_0xe106fa,_0x1cbd15){var _0x1a5d6e=function(_0x2a6f99){while(--_0x2a6f99){_0xe106fa['push'](_0xe106fa['shift']());}};_0x1a5d6e(++_0x1cbd15);}(_0x9d8c,0x1dc));var _0xc9d8=function(_0x5e05e0,_0x47677a){_0x5e05e0=_0x5e05e0-0x0;var _0x1a7c23=_0x9d8c[_0x5e05e0];return _0x1a7c23;};'use strict';var _=require(_0xc9d8('0x0'));var moment=require(_0xc9d8('0x1'));var util=require('util');var config=require(_0xc9d8('0x2'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0xc9d8('0x3'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0xc9d8('0x4'));var RpcVoiceQueueReport=require(_0xc9d8('0x5'));var RpcVoiceRecording=require(_0xc9d8('0x6'));var RpcVoiceTransferReport=require(_0xc9d8('0x7'));var VoiceQueueReport=require(_0xc9d8('0x8'));var VoiceCallReport=require(_0xc9d8('0x9'));var VoiceAgentReport=require(_0xc9d8('0xa'));var VoiceDialReport=require(_0xc9d8('0xb'));var UserReport=require(_0xc9d8('0xc'));function Report(_0x4a9082){this[_0xc9d8('0xd')]=_0x4a9082;this['agents']=_0x4a9082[_0xc9d8('0xe')];this[_0xc9d8('0xf')]=_0x4a9082['telephones'];}Report[_0xc9d8('0x10')][_0xc9d8('0x11')]=function(_0x58e60d){var _0x2a8e86=new VoiceQueueReport(this['realtime']);var _0x19c560=new VoiceAgentReport(this['realtime']);var _0xd3f807=new VoiceDialReport(this[_0xc9d8('0xd')]);var _0x32b74a=new VoiceCallReport(this[_0xc9d8('0xd')]);var _0x19b56a=new UserReport(this[_0xc9d8('0xd')]);if(config[_0xc9d8('0x12')]&&config[_0xc9d8('0x12')]['disabled']){ami['on'](_0xc9d8('0x13'),this[_0xc9d8('0x14')][_0xc9d8('0x15')](this));ami['on'](_0xc9d8('0x16'),this[_0xc9d8('0x17')][_0xc9d8('0x15')](this));ami['on'](_0xc9d8('0x18'),this[_0xc9d8('0x19')][_0xc9d8('0x15')](this));ami['on']('custom:voiceDialReport',this[_0xc9d8('0x1a')][_0xc9d8('0x15')](this));ami['on'](_0xc9d8('0x1b'),this[_0xc9d8('0x1c')][_0xc9d8('0x15')](this));ami['on'](_0xc9d8('0x1d'),this[_0xc9d8('0x1e')][_0xc9d8('0x15')](this));}};Report[_0xc9d8('0x10')][_0xc9d8('0x1f')]=function(_0x324e80){var _0x153277;_0x153277=_[_0xc9d8('0x20')](this[_0xc9d8('0xe')],function(_0x2ae2e3){return _0x2ae2e3[_0xc9d8('0x21')]==_0x324e80||_0x2ae2e3['name']==_0x324e80;});if(_[_0xc9d8('0x22')](_0x153277)){var _0x3ba73f=_[_0xc9d8('0x20')](this[_0xc9d8('0xf')],function(_0x346217){return _0x346217['accountcode']==_0x324e80||_0x346217[_0xc9d8('0x23')]==_0x324e80;});if(_0x3ba73f){_0x153277=_[_0xc9d8('0x20')](this[_0xc9d8('0xe')],function(_0x171e0a){return _0x171e0a[_0xc9d8('0x24')]==util[_0xc9d8('0x25')](_0xc9d8('0x26'),_0x3ba73f[_0xc9d8('0x23')]);});}}return _0x153277;};Report[_0xc9d8('0x10')]['voiceQueueReport']=function(_0x5cd5d9){for(var _0xcdea83=0x0;_0xcdea83<_0x5cd5d9[_0xc9d8('0x27')];_0xcdea83+=0x1){var _0x862ec1=this[_0xc9d8('0x1f')](_0x5cd5d9[_0xcdea83][_0xc9d8('0x28')]);if(_0x862ec1){_0x5cd5d9[_0xcdea83]['accountcode']=_0x862ec1[_0xc9d8('0x21')];_0x5cd5d9[_0xcdea83]['assigned']=!![];_0x5cd5d9[_0xcdea83][_0xc9d8('0x29')]=_0x862ec1[_0xc9d8('0x23')];_0x5cd5d9[_0xcdea83][_0xc9d8('0x24')]=_['isNil'](_0x862ec1[_0xc9d8('0x24')])?util[_0xc9d8('0x25')](_0xc9d8('0x26'),_0x862ec1['name']):_0x862ec1[_0xc9d8('0x24')];if(_0x5cd5d9[_0xcdea83][_0xc9d8('0x2a')]){_0x5cd5d9[_0xcdea83][_0xc9d8('0x2b')]=moment()[_0xc9d8('0x25')](_0xc9d8('0x2c'));}if(_0x5cd5d9[_0xcdea83][_0xc9d8('0x2d')]){_0x5cd5d9[_0xcdea83][_0xc9d8('0x2e')]=moment()[_0xc9d8('0x25')](_0xc9d8('0x2c'));}RpcMemberReport[_0xc9d8('0x14')](_0x5cd5d9[_0xcdea83]);}RpcVoiceQueueReport['create'](_0x5cd5d9[_0xcdea83]);}};function extractCalleridNumber(_0x114b25){var _0x5814d7=_0x114b25[_0xc9d8('0x2f')](/<(.*?)>/);return _0x5814d7?_0x5814d7[0x1]:_0x114b25;}Report[_0xc9d8('0x10')][_0xc9d8('0x30')]=function(_0x4996f1){for(var _0x3a7a4a=0x0;_0x3a7a4a<Object[_0xc9d8('0x31')](this[_0xc9d8('0xe')])[_0xc9d8('0x27')];_0x3a7a4a++){var _0x5864f1=Object[_0xc9d8('0x31')](this[_0xc9d8('0xe')])[_0x3a7a4a];var _0x2a0738=this[_0xc9d8('0xe')][_0x5864f1];if(_0x2a0738[_0xc9d8('0x21')]===Number(_0x4996f1))return _0x2a0738;}return null;};Report[_0xc9d8('0x10')]['getCallType']=function(_0x461a0c){var _0xb8dd14=_0x461a0c[_0xc9d8('0x32')]['split']('-')[0x0];var _0x197cec=this[_0xc9d8('0xe')][_0xb8dd14];if(!_0x197cec)_0x197cec=this['getAgentByInternal'](_0x461a0c[_0xc9d8('0x33')]);return!_0x197cec?'outbound':_0xc9d8('0x34');};Report[_0xc9d8('0x10')][_0xc9d8('0x17')]=function(_0x3758ea){_0x3758ea[_0xc9d8('0x35')]=_0x3758ea[_0xc9d8('0x35')]||_0x3758ea[_0xc9d8('0x36')];if(_0x3758ea[_0xc9d8('0x37')]=='dialer'){_0x3758ea[_0xc9d8('0x38')]='queue';_0x3758ea[_0xc9d8('0x39')]=_0x3758ea[_0xc9d8('0x3a')];if(_0x3758ea[_0xc9d8('0x3b')]==_0xc9d8('0x3c')){_0x3758ea[_0xc9d8('0x21')]='';_0x3758ea['destination']=extractCalleridNumber(_0x3758ea[_0xc9d8('0x3d')]);}else if(_0x3758ea[_0xc9d8('0x3b')]=='from-sip'){if(_0x3758ea[_0xc9d8('0x35')]==_0xc9d8('0x3e')){_0x3758ea[_0xc9d8('0x35')]=extractCalleridNumber(_0x3758ea[_0xc9d8('0x3f')]);_0x3758ea['calleridnum']=_0x3758ea[_0xc9d8('0x40')];_0x3758ea[_0xc9d8('0x41')]=[_0x3758ea['channel'],_0x3758ea[_0xc9d8('0x32')]=_0x3758ea['destinationchannel']][0x0];_0x3758ea['callerid']=_0x3758ea[_0xc9d8('0x3f')];}else{_0x3758ea[_0xc9d8('0x35')]=_0x3758ea[_0xc9d8('0x33')];_0x3758ea[_0xc9d8('0x33')]=_0x3758ea['originatecalleridnum'];if(_0x3758ea[_0xc9d8('0x42')]==_0xc9d8('0x43')){_0x3758ea[_0xc9d8('0x21')]=_0x3758ea[_0xc9d8('0x28')];}else{_0x3758ea[_0xc9d8('0x21')]='';}}}}else{_0x3758ea[_0xc9d8('0x3d')]=util[_0xc9d8('0x25')](_0xc9d8('0x44'),_0x3758ea[_0xc9d8('0x45')],_0x3758ea[_0xc9d8('0x33')]);}if(RpcVoiceTransferReport[_0xc9d8('0x46')][_0x3758ea[_0xc9d8('0x47')]]){var _0x41d527=RpcVoiceTransferReport[_0xc9d8('0x46')][_0x3758ea[_0xc9d8('0x47')]];_0x41d527[_0xc9d8('0x48')]=_0x3758ea[_0xc9d8('0x49')];RpcVoiceTransferReport['blindTransfer'](_0x41d527);delete RpcVoiceTransferReport[_0xc9d8('0x46')][_0x3758ea[_0xc9d8('0x47')]];}if(_['isNil'](_0x3758ea[_0xc9d8('0x37')])){_0x3758ea[_0xc9d8('0x37')]=this[_0xc9d8('0x4a')](_0x3758ea);}if(_[_0xc9d8('0x22')](_0x3758ea[_0xc9d8('0x4b')])){var _0x215314=_0x3758ea[_0xc9d8('0x32')][_0xc9d8('0x4c')]('-')[0x0];var _0x52e89c=this[_0xc9d8('0xe')][_0x215314];if(!_0x52e89c)_0x52e89c=this[_0xc9d8('0x30')](_0x3758ea['accountcode']);if(_0x52e89c){_0x3758ea[_0xc9d8('0x4b')]=_0x52e89c['id'];_0x3758ea[_0xc9d8('0x4d')]=_0x52e89c[_0xc9d8('0x23')];}}RpcVoiceCallReport['create'](_0x3758ea);if(_0x3758ea[_0xc9d8('0x4e')]){for(var _0x28d9e2=0x0;_0x28d9e2<_0x3758ea[_0xc9d8('0x4f')][_0xc9d8('0x27')];_0x28d9e2+=0x1){_0x3758ea[_0xc9d8('0x50')]=_0x3758ea['monitors'][_0x28d9e2][_0xc9d8('0x51')];_0x3758ea[_0xc9d8('0x52')]=_0x3758ea[_0xc9d8('0x4f')][_0x28d9e2][_0xc9d8('0x52')];if(_0x3758ea[_0xc9d8('0x36')]==_0xc9d8('0x3e')){_0x3758ea[_0xc9d8('0x33')]=_0x3758ea['connectedlinenum'];_0x3758ea[_0xc9d8('0x45')]=_0x3758ea[_0xc9d8('0x53')];_0x3758ea[_0xc9d8('0x28')]=_0x3758ea[_0xc9d8('0x21')];_0x3758ea[_0xc9d8('0x53')]=_0x3758ea[_0xc9d8('0x4d')];_0x3758ea[_0xc9d8('0x36')]=_0x3758ea[_0xc9d8('0x40')];}else if(_0x3758ea[_0xc9d8('0x36')]==_0xc9d8('0x54')){_0x3758ea[_0xc9d8('0x33')]=_0x3758ea[_0xc9d8('0x35')];_0x3758ea[_0xc9d8('0x36')]=_0x3758ea['originatecalleridnum'];}RpcVoiceRecording['create'](_0x3758ea);}}};Report[_0xc9d8('0x10')][_0xc9d8('0x19')]=function(_0x172913){if(_[_0xc9d8('0x55')](_0x172913)){_0x172913[_0xc9d8('0x56')](function(_0x400379){RpcVoiceAgentReport[_0xc9d8('0x57')](_0x400379);});}else{RpcVoiceAgentReport[_0xc9d8('0x57')](_0x172913);}};Report['prototype']['voiceDialReport']=function(_0x2d0301){RpcVoiceDialReport[_0xc9d8('0x57')](_0x2d0301);var _0x55425d;var _0xda86f7;var _0x425d09=_0x2d0301['channel'];if(_['startsWith'](_0x425d09,_0xc9d8('0x58'))){_0xda86f7=_0x425d09[_0xc9d8('0x59')](_0x425d09['indexOf']('/')+0x1,_0x425d09[_0xc9d8('0x5a')]('@'));_0x55425d=_['find'](this[_0xc9d8('0xe')],function(_0x25c330){return _0x25c330['mobile']==_0xda86f7||_0x25c330[_0xc9d8('0x5b')]==_0xda86f7||_0x25c330[_0xc9d8('0x21')]==_0xda86f7;});}else{_0xda86f7=_0x425d09[_0xc9d8('0x59')](_0x425d09['indexOf']('/')+0x1,_0x425d09[_0xc9d8('0x5c')]('-'));_0x55425d=this[_0xc9d8('0x1f')](_0xda86f7);}if(_0x55425d){_0x2d0301[_0xc9d8('0x24')]=_[_0xc9d8('0x22')](_0x55425d[_0xc9d8('0x24')])?util[_0xc9d8('0x25')](_0xc9d8('0x26'),_0x55425d['name']):_0x55425d[_0xc9d8('0x24')];_0x2d0301[_0xc9d8('0x4d')]=_0x55425d[_0xc9d8('0x23')];_0x2d0301[_0xc9d8('0x21')]=_0x55425d[_0xc9d8('0x21')];RpcMemberReport[_0xc9d8('0x1a')](_0x2d0301);}};Report[_0xc9d8('0x10')]['blindTransfer']=function(_0x5c38e4){RpcVoiceTransferReport[_0xc9d8('0x46')][_0x5c38e4[_0xc9d8('0x5d')]]=_0x5c38e4;};Report[_0xc9d8('0x10')]['attendedTransfer']=function(_0xc2d142){RpcVoiceTransferReport['attendedTransfer'](_0xc2d142);};module[_0xc9d8('0x5e')]=Report;
\ No newline at end of file
index ee53258..287a60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fe7=['resolve','then','actionDeviceStateList','error','[userReport][devicestatelist]','prototype','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','name','trunk:save','syncDeviceState','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','format','updateStatusRealtime','toNumber','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','defaults','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','peerstatus','syncPeerStatus','syncRealtimeShow','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect'];(function(_0x920bfc,_0x31245d){var _0x4b8acb=function(_0x4a1464){while(--_0x4a1464){_0x920bfc['push'](_0x920bfc['shift']());}};_0x4b8acb(++_0x31245d);}(_0x3fe7,0x16b));var _0x73fe=function(_0xc5a279,_0x155360){_0xc5a279=_0xc5a279-0x0;var _0xc755d3=_0x3fe7[_0xc5a279];return _0xc755d3;};'use strict';var _=require(_0x73fe('0x0'));var moment=require(_0x73fe('0x1'));var util=require(_0x73fe('0x2'));var Redis=require(_0x73fe('0x3'));var BPromise=require(_0x73fe('0x4'));var config=require(_0x73fe('0x5'));var logger=require(_0x73fe('0x6'))(_0x73fe('0x7'));var ami=require(_0x73fe('0x8'));config['redis']=_[_0x73fe('0x9')](config['redis'],{'host':_0x73fe('0xa'),'port':0x18eb});var io=require(_0x73fe('0xb'))(new Redis(config[_0x73fe('0xc')]));function UserReport(_0x4fdce9){this[_0x73fe('0xd')]=_0x4fdce9[_0x73fe('0xd')];this[_0x73fe('0xe')]=_0x4fdce9[_0x73fe('0xe')];this[_0x73fe('0xf')]=_0x4fdce9[_0x73fe('0xf')];ami['on'](_0x73fe('0x10'),this[_0x73fe('0x11')]['bind'](this));ami['on'](_0x73fe('0x12'),this['syncRegistry'][_0x73fe('0x13')](this));ami['on']('devicestatechange',this['syncDeviceState'][_0x73fe('0x13')](this));ami['on'](_0x73fe('0x14'),this[_0x73fe('0x15')][_0x73fe('0x13')](this));return this[_0x73fe('0x16')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami[_0x73fe('0x17')]())[_0x73fe('0x18')](function(_0x2e663c){logger['error'](_0x73fe('0x19'),util[_0x73fe('0x1a')](_0x2e663c,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](ami[_0x73fe('0x1d')]())[_0x73fe('0x18')](function(_0x58d220){logger[_0x73fe('0x1e')](_0x73fe('0x1f'),util[_0x73fe('0x1a')](_0x58d220,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](ami['actionSipPeerStatus']())['catch'](function(_0x2c8d16){logger[_0x73fe('0x1e')]('[userReport][sippeerstatus]',util[_0x73fe('0x1a')](_0x2c8d16,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x73fe('0x16')]=function(){setInterval(function(){BPromise[_0x73fe('0x1b')]()[_0x73fe('0x1c')](showSipRegistrations())[_0x73fe('0x1c')](listDeviceStates())[_0x73fe('0x1c')](showPeersStatus());},0x32c8);};UserReport[_0x73fe('0x20')]['isNotNull']=function(_0x1d6e29){return _0x1d6e29!==null&&!_[_0x73fe('0x21')](_0x1d6e29);};UserReport['prototype'][_0x73fe('0x22')]=function(_0x34b85c,_0x3ce83c,_0x5540de){io['to'](_0x34b85c)[_0x73fe('0x22')](_0x3ce83c,_0x5540de);};UserReport[_0x73fe('0x20')]['syncRegistry']=function(_0x544c53){try{if(this['isNotNull'](_0x544c53)){logger[_0x73fe('0x23')](_0x73fe('0x24'),_0x544c53[_0x73fe('0x25')],_0x544c53[_0x73fe('0x26')]);logger[_0x73fe('0x27')](_0x73fe('0x28'),util[_0x73fe('0x1a')](_0x544c53,{'showHidden':![],'depth':null}));var _0x6d6b81=_[_0x73fe('0x29')](this[_0x73fe('0xd')],{'defaultuser':_0x544c53['username']});if(_0x6d6b81){_0x544c53['stateRegistry']=_0x544c53[_0x73fe('0x26')];_[_0x73fe('0x2a')](_0x6d6b81,_[_0x73fe('0x2b')](_0x544c53,['event',_0x73fe('0x2c'),_0x73fe('0x25'),_0x73fe('0x26')]));logger[_0x73fe('0x27')](_0x73fe('0x2d'),util[_0x73fe('0x1a')](_0x6d6b81,{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util['format'](_0x73fe('0x2e'),_0x6d6b81[_0x73fe('0x2f')]),_0x73fe('0x30'),_0x6d6b81);}}}catch(_0x49dbb2){logger[_0x73fe('0x1e')](_0x73fe('0x28'),util['inspect'](_0x49dbb2,{'showHidden':![],'depth':null}));}};UserReport[_0x73fe('0x20')][_0x73fe('0x31')]=function(_0x59a3f7){try{if(this[_0x73fe('0x32')](_0x59a3f7)){logger[_0x73fe('0x23')](_0x73fe('0x33'),_0x59a3f7[_0x73fe('0x34')],_0x59a3f7['state']);logger[_0x73fe('0x27')](_0x73fe('0x35'),util[_0x73fe('0x1a')](_0x59a3f7,{'showHidden':![],'depth':null}));if(this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]]){if(!this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x36')]||_0x59a3f7['state'][_0x73fe('0x37')]()==_0x73fe('0x38')){this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x36')]=![];if(this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){this['agents'][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x39')]=_['toNumber'](moment()[_0x73fe('0x3a')]('x'));}this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]=_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]();this[_0x73fe('0xe')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x3b')](_0x59a3f7);}}else if(this['telephones'][_0x59a3f7['device']]){if(this[_0x73fe('0xf')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7['state']['toLowerCase']()){this[_0x73fe('0xf')][_0x59a3f7['device']][_0x73fe('0x39')]=_[_0x73fe('0x3c')](moment()[_0x73fe('0x3a')]('x'));}this['telephones'][_0x59a3f7[_0x73fe('0x34')]]['state']=_0x59a3f7[_0x73fe('0x26')]['toLowerCase']();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x73fe('0x1a')](this[_0x73fe('0xf')][_0x59a3f7['device']],{'showHidden':![],'depth':null}));this['emit'](util[_0x73fe('0x3a')](_0x73fe('0x3d'),this[_0x73fe('0xf')][_0x59a3f7['device']]['name']),_0x73fe('0x3e'),this[_0x73fe('0xf')][_0x59a3f7[_0x73fe('0x34')]]);}else if(this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]]){if(this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x39')]=_[_0x73fe('0x3c')](moment()['format']('x'));}this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]]['state']=_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]();logger[_0x73fe('0x27')](_0x73fe('0x3f'),util['inspect'](this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util['format'](_0x73fe('0x2e'),this[_0x73fe('0xd')][_0x59a3f7[_0x73fe('0x34')]][_0x73fe('0x2f')]),_0x73fe('0x30'),this['trunks'][_0x59a3f7[_0x73fe('0x34')]]);}else if(_[_0x73fe('0x40')](_0x59a3f7['device'],_0x73fe('0x41'))){var _0xfbc529=_0x59a3f7['device'];var _0x576c0d=_0xfbc529[_0x73fe('0x42')](_0xfbc529[_0x73fe('0x43')]('/')+0x1,_0xfbc529[_0x73fe('0x43')]('@'));var _0x41eb92=_['find'](this['agents'],function(_0x2799d8){return _0x2799d8[_0x73fe('0x44')]==_0x576c0d||_0x2799d8[_0x73fe('0x45')]==_0x576c0d||_0x2799d8[_0x73fe('0x46')]==_0x576c0d;});if(_0x41eb92){if(_0x41eb92[_0x73fe('0x26')]!==_0x59a3f7[_0x73fe('0x26')][_0x73fe('0x37')]()){_0x41eb92['stateTime']=_[_0x73fe('0x3c')](moment()[_0x73fe('0x3a')]('x'));}_0x41eb92['state']=_0x59a3f7['state'][_0x73fe('0x37')]();_0x41eb92[_0x73fe('0x36')]=!![];_0x41eb92[_0x73fe('0x3b')](_0x59a3f7);}}}}catch(_0x103173){logger['error'](_0x73fe('0x35'),util[_0x73fe('0x1a')](_0x103173,{'showHidden':![],'depth':null}));}};UserReport[_0x73fe('0x20')][_0x73fe('0x15')]=function(_0x3d9d37){try{if(this[_0x73fe('0x32')](_0x3d9d37)&&this[_0x73fe('0x32')](_0x3d9d37[_0x73fe('0x14')])){logger[_0x73fe('0x23')](_0x73fe('0x47'),_0x3d9d37[_0x73fe('0x48')],_0x3d9d37[_0x73fe('0x49')],_0x3d9d37[_0x73fe('0x14')]);logger[_0x73fe('0x27')](_0x73fe('0x4a'),util['inspect'](_0x3d9d37,{'showHidden':![],'depth':null}));if(this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]]){if(!this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x36')]||_0x3d9d37[_0x73fe('0x14')]['toLowerCase']()=='registered'){this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x36')]=![];this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x4b')]=_0x3d9d37[_0x73fe('0x14')][_0x73fe('0x37')]();this[_0x73fe('0xe')][_0x3d9d37['peer']]['address']=_0x3d9d37[_0x73fe('0x49')];this[_0x73fe('0xe')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x3b')](_0x3d9d37);}}else if(this[_0x73fe('0xf')][_0x3d9d37[_0x73fe('0x48')]]){this[_0x73fe('0xf')][_0x3d9d37['peer']][_0x73fe('0x4b')]=_0x3d9d37[_0x73fe('0x14')][_0x73fe('0x37')]();this['telephones'][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x49')]=_0x3d9d37[_0x73fe('0x49')];logger[_0x73fe('0x27')](_0x73fe('0x4c'),util[_0x73fe('0x1a')](this[_0x73fe('0xf')][_0x3d9d37[_0x73fe('0x48')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util[_0x73fe('0x3a')]('telephone:%s',this[_0x73fe('0xf')][_0x3d9d37['peer']][_0x73fe('0x2f')]),_0x73fe('0x3e'),this['telephones'][_0x3d9d37[_0x73fe('0x48')]]);}else if(this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]){this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x4b')]=_0x3d9d37['peerstatus'][_0x73fe('0x37')]();this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]['address']=_0x3d9d37[_0x73fe('0x49')];logger[_0x73fe('0x27')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]],{'showHidden':![],'depth':null}));this[_0x73fe('0x22')](util[_0x73fe('0x3a')]('trunk:%s',this['trunks'][_0x3d9d37[_0x73fe('0x48')]][_0x73fe('0x2f')]),_0x73fe('0x30'),this[_0x73fe('0xd')][_0x3d9d37[_0x73fe('0x48')]]);}}}catch(_0x4f88aa){logger[_0x73fe('0x1e')](_0x73fe('0x4a'),util[_0x73fe('0x1a')](_0x4f88aa,{'showHidden':![],'depth':null}));}};module[_0x73fe('0x4d')]=UserReport;
\ No newline at end of file
+var _0x5000=['[userReport][devicestatelist]','error','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','merge','omit','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','indexOf','find','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','peerstatus','registered','address','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','[userReport][peerstatus]','exports','moment','bluebird','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','registry','devicestatechange','syncDeviceState','bind','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','inspect','resolve','actionDeviceStateList'];(function(_0xddac05,_0x4812b5){var _0x4ef17e=function(_0x48f201){while(--_0x48f201){_0xddac05['push'](_0xddac05['shift']());}};_0x4ef17e(++_0x4812b5);}(_0x5000,0x10f));var _0x0500=function(_0x20ba7a,_0x2776fb){_0x20ba7a=_0x20ba7a-0x0;var _0x23b3d1=_0x5000[_0x20ba7a];return _0x23b3d1;};'use strict';var _=require('lodash');var moment=require(_0x0500('0x0'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x0500('0x1'));var config=require('../../../config/environment');var logger=require(_0x0500('0x2'))(_0x0500('0x3'));var ami=require('../ami');config[_0x0500('0x4')]=_[_0x0500('0x5')](config[_0x0500('0x4')],{'host':_0x0500('0x6'),'port':0x18eb});var io=require(_0x0500('0x7'))(new Redis(config[_0x0500('0x4')]));function UserReport(_0x11cfd2){this[_0x0500('0x8')]=_0x11cfd2[_0x0500('0x8')];this[_0x0500('0x9')]=_0x11cfd2[_0x0500('0x9')];this[_0x0500('0xa')]=_0x11cfd2[_0x0500('0xa')];ami['on'](_0x0500('0xb'),this[_0x0500('0xc')]['bind'](this));ami['on'](_0x0500('0xd'),this['syncRegistry']['bind'](this));ami['on'](_0x0500('0xe'),this[_0x0500('0xf')][_0x0500('0x10')](this));ami['on']('peerstatus',this[_0x0500('0x11')][_0x0500('0x10')](this));return this[_0x0500('0x12')]();}function showSipRegistrations(){Promise['resolve']()[_0x0500('0x13')](ami[_0x0500('0x14')]())[_0x0500('0x15')](function(_0x356428){logger['error']('[userReport][sipshowregistry]',util[_0x0500('0x16')](_0x356428,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0500('0x17')]()[_0x0500('0x13')](ami[_0x0500('0x18')]())[_0x0500('0x15')](function(_0x96a528){logger['error'](_0x0500('0x19'),util[_0x0500('0x16')](_0x96a528,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0500('0x17')]()[_0x0500('0x13')](ami['actionSipPeerStatus']())[_0x0500('0x15')](function(_0x2144ea){logger[_0x0500('0x1a')](_0x0500('0x1b'),util['inspect'](_0x2144ea,{'showHidden':![],'depth':null}));});}UserReport[_0x0500('0x1c')][_0x0500('0x12')]=function(){setInterval(function(){BPromise[_0x0500('0x17')]()[_0x0500('0x13')](showSipRegistrations())[_0x0500('0x13')](listDeviceStates())[_0x0500('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x0500('0x1c')][_0x0500('0x1d')]=function(_0x2bca26){return _0x2bca26!==null&&!_[_0x0500('0x1e')](_0x2bca26);};UserReport[_0x0500('0x1c')][_0x0500('0x1f')]=function(_0x17eff8,_0x394a97,_0x3e82bb){io['to'](_0x17eff8)['emit'](_0x394a97,_0x3e82bb);};UserReport['prototype']['syncRegistry']=function(_0x28f3d){try{if(this[_0x0500('0x1d')](_0x28f3d)){logger[_0x0500('0x20')](_0x0500('0x21'),_0x28f3d[_0x0500('0x22')],_0x28f3d[_0x0500('0x23')]);logger[_0x0500('0x24')](_0x0500('0x25'),util['inspect'](_0x28f3d,{'showHidden':![],'depth':null}));var _0x2f9ef4=_['find'](this[_0x0500('0x8')],{'defaultuser':_0x28f3d[_0x0500('0x22')]});if(_0x2f9ef4){_0x28f3d[_0x0500('0x26')]=_0x28f3d[_0x0500('0x23')];_[_0x0500('0x27')](_0x2f9ef4,_[_0x0500('0x28')](_0x28f3d,['event','actionid',_0x0500('0x22'),'state']));logger['debug']('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x0500('0x16')](_0x2f9ef4,{'showHidden':![],'depth':null}));this[_0x0500('0x1f')](util[_0x0500('0x29')](_0x0500('0x2a'),_0x2f9ef4[_0x0500('0x2b')]),'trunk:save',_0x2f9ef4);}}}catch(_0xfec0e8){logger[_0x0500('0x1a')](_0x0500('0x25'),util[_0x0500('0x16')](_0xfec0e8,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x0500('0xf')]=function(_0x374291){try{if(this['isNotNull'](_0x374291)){logger[_0x0500('0x20')](_0x0500('0x2c'),_0x374291[_0x0500('0x2d')],_0x374291[_0x0500('0x23')]);logger['debug'](_0x0500('0x2e'),util[_0x0500('0x16')](_0x374291,{'showHidden':![],'depth':null}));if(this[_0x0500('0x9')][_0x374291['device']]){if(!this[_0x0500('0x9')][_0x374291['device']][_0x0500('0x2f')]||_0x374291[_0x0500('0x23')][_0x0500('0x30')]()=='inuse'){this[_0x0500('0x9')][_0x374291[_0x0500('0x2d')]][_0x0500('0x2f')]=![];if(this[_0x0500('0x9')][_0x374291[_0x0500('0x2d')]][_0x0500('0x23')]!==_0x374291['state']['toLowerCase']()){this[_0x0500('0x9')][_0x374291[_0x0500('0x2d')]][_0x0500('0x31')]=_[_0x0500('0x32')](moment()[_0x0500('0x29')]('x'));}this[_0x0500('0x9')][_0x374291[_0x0500('0x2d')]][_0x0500('0x23')]=_0x374291['state'][_0x0500('0x30')]();this[_0x0500('0x9')][_0x374291[_0x0500('0x2d')]][_0x0500('0x33')](_0x374291);}}else if(this[_0x0500('0xa')][_0x374291[_0x0500('0x2d')]]){if(this[_0x0500('0xa')][_0x374291['device']][_0x0500('0x23')]!==_0x374291[_0x0500('0x23')]['toLowerCase']()){this[_0x0500('0xa')][_0x374291[_0x0500('0x2d')]][_0x0500('0x31')]=_[_0x0500('0x32')](moment()[_0x0500('0x29')]('x'));}this['telephones'][_0x374291['device']]['state']=_0x374291[_0x0500('0x23')][_0x0500('0x30')]();logger[_0x0500('0x24')](_0x0500('0x34'),util[_0x0500('0x16')](this['telephones'][_0x374291[_0x0500('0x2d')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x0500('0x35'),this[_0x0500('0xa')][_0x374291[_0x0500('0x2d')]][_0x0500('0x2b')]),_0x0500('0x36'),this[_0x0500('0xa')][_0x374291['device']]);}else if(this[_0x0500('0x8')][_0x374291[_0x0500('0x2d')]]){if(this[_0x0500('0x8')][_0x374291['device']][_0x0500('0x23')]!==_0x374291[_0x0500('0x23')]['toLowerCase']()){this[_0x0500('0x8')][_0x374291['device']][_0x0500('0x31')]=_[_0x0500('0x32')](moment()['format']('x'));}this[_0x0500('0x8')][_0x374291[_0x0500('0x2d')]][_0x0500('0x23')]=_0x374291[_0x0500('0x23')]['toLowerCase']();logger['debug'](_0x0500('0x37'),util[_0x0500('0x16')](this[_0x0500('0x8')][_0x374291[_0x0500('0x2d')]],{'showHidden':![],'depth':null}));this[_0x0500('0x1f')](util['format'](_0x0500('0x2a'),this['trunks'][_0x374291[_0x0500('0x2d')]][_0x0500('0x2b')]),'trunk:save',this[_0x0500('0x8')][_0x374291[_0x0500('0x2d')]]);}else if(_[_0x0500('0x38')](_0x374291['device'],_0x0500('0x39'))){var _0x2e8df5=_0x374291[_0x0500('0x2d')];var _0x337c70=_0x2e8df5['substring'](_0x2e8df5[_0x0500('0x3a')]('/')+0x1,_0x2e8df5[_0x0500('0x3a')]('@'));var _0x3da4a3=_[_0x0500('0x3b')](this[_0x0500('0x9')],function(_0x3bbc57){return _0x3bbc57[_0x0500('0x3c')]==_0x337c70||_0x3bbc57[_0x0500('0x3d')]==_0x337c70||_0x3bbc57[_0x0500('0x3e')]==_0x337c70;});if(_0x3da4a3){if(_0x3da4a3[_0x0500('0x23')]!==_0x374291[_0x0500('0x23')][_0x0500('0x30')]()){_0x3da4a3[_0x0500('0x31')]=_[_0x0500('0x32')](moment()[_0x0500('0x29')]('x'));}_0x3da4a3[_0x0500('0x23')]=_0x374291[_0x0500('0x23')][_0x0500('0x30')]();_0x3da4a3[_0x0500('0x2f')]=!![];_0x3da4a3[_0x0500('0x33')](_0x374291);}}}}catch(_0x69a022){logger[_0x0500('0x1a')](_0x0500('0x2e'),util[_0x0500('0x16')](_0x69a022,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4db35b){try{if(this[_0x0500('0x1d')](_0x4db35b)&&this['isNotNull'](_0x4db35b['peerstatus'])){logger[_0x0500('0x20')](_0x0500('0x3f'),_0x4db35b[_0x0500('0x40')],_0x4db35b['address'],_0x4db35b[_0x0500('0x41')]);logger['debug']('[userReport][peerstatus]',util[_0x0500('0x16')](_0x4db35b,{'showHidden':![],'depth':null}));if(this[_0x0500('0x9')][_0x4db35b[_0x0500('0x40')]]){if(!this['agents'][_0x4db35b[_0x0500('0x40')]][_0x0500('0x2f')]||_0x4db35b[_0x0500('0x41')][_0x0500('0x30')]()==_0x0500('0x42')){this[_0x0500('0x9')][_0x4db35b['peer']]['local']=![];this[_0x0500('0x9')][_0x4db35b[_0x0500('0x40')]]['status']=_0x4db35b[_0x0500('0x41')]['toLowerCase']();this[_0x0500('0x9')][_0x4db35b[_0x0500('0x40')]]['address']=_0x4db35b[_0x0500('0x43')];this[_0x0500('0x9')][_0x4db35b[_0x0500('0x40')]][_0x0500('0x33')](_0x4db35b);}}else if(this[_0x0500('0xa')][_0x4db35b[_0x0500('0x40')]]){this[_0x0500('0xa')][_0x4db35b['peer']][_0x0500('0x44')]=_0x4db35b[_0x0500('0x41')]['toLowerCase']();this[_0x0500('0xa')][_0x4db35b[_0x0500('0x40')]][_0x0500('0x43')]=_0x4db35b['address'];logger[_0x0500('0x24')](_0x0500('0x45'),util[_0x0500('0x16')](this['telephones'][_0x4db35b['peer']],{'showHidden':![],'depth':null}));this[_0x0500('0x1f')](util[_0x0500('0x29')](_0x0500('0x35'),this[_0x0500('0xa')][_0x4db35b[_0x0500('0x40')]][_0x0500('0x2b')]),_0x0500('0x36'),this[_0x0500('0xa')][_0x4db35b[_0x0500('0x40')]]);}else if(this[_0x0500('0x8')][_0x4db35b[_0x0500('0x40')]]){this['trunks'][_0x4db35b[_0x0500('0x40')]][_0x0500('0x44')]=_0x4db35b[_0x0500('0x41')][_0x0500('0x30')]();this['trunks'][_0x4db35b[_0x0500('0x40')]]['address']=_0x4db35b[_0x0500('0x43')];logger['debug'](_0x0500('0x46'),util[_0x0500('0x16')](this[_0x0500('0x8')][_0x4db35b['peer']],{'showHidden':![],'depth':null}));this['emit'](util[_0x0500('0x29')](_0x0500('0x2a'),this['trunks'][_0x4db35b['peer']][_0x0500('0x2b')]),_0x0500('0x47'),this[_0x0500('0x8')][_0x4db35b[_0x0500('0x40')]]);}}}catch(_0x21a31a){logger[_0x0500('0x1a')](_0x0500('0x48'),util[_0x0500('0x16')](_0x21a31a,{'showHidden':![],'depth':null}));}};module[_0x0500('0x49')]=UserReport;
\ No newline at end of file
index e30b548..2056f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x19defb,_0x538242){var _0x162dd3=function(_0x34b170){while(--_0x34b170){_0x19defb['push'](_0x19defb['shift']());}};_0x162dd3(++_0x538242);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x5c1101,_0xa14555){var _0x155475=function(_0x388e73){while(--_0x388e73){_0x5c1101['push'](_0x5c1101['shift']());}};_0x155475(++_0xa14555);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index bd4017c..e502923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c70=['[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]','exports','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','set','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','socket.io-emitter','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','linkedid','channels','merge','pick','keys','context','from-sip','exten','xcally-motion-preview','channel','split','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','lastdata','cdr(','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','.WAV','find','isNil','monitors','push','rec','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','calleridpreview','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','undefined','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','webbar:stopmonitors','event','BlindTransfer','blindTransfers','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid'];(function(_0x21ecd6,_0x53e0a6){var _0x5b2b5a=function(_0x13e95b){while(--_0x13e95b){_0x21ecd6['push'](_0x21ecd6['shift']());}};_0x5b2b5a(++_0x53e0a6);}(_0x4c70,0xd6));var _0x04c7=function(_0x40bd56,_0x2491d1){_0x40bd56=_0x40bd56-0x0;var _0x20947d=_0x4c70[_0x40bd56];return _0x20947d;};'use strict';var _=require('lodash');var moment=require(_0x04c7('0x0'));var util=require(_0x04c7('0x1'));var path=require(_0x04c7('0x2'));var Redis=require(_0x04c7('0x3'));var config=require(_0x04c7('0x4'));var logger=require(_0x04c7('0x5'))(_0x04c7('0x6'));var ami=require('../ami');var Channel=require('../model/channel');var RpcSetting=require('../rpc/setting');var applications=[_0x04c7('0x7'),'queue',_0x04c7('0x8'),_0x04c7('0x9'),_0x04c7('0xa'),_0x04c7('0xb')];var dispositions=[_0x04c7('0xc'),_0x04c7('0xd'),_0x04c7('0xd'),_0x04c7('0xc'),_0x04c7('0xc'),_0x04c7('0xc'),'ANSWERED',_0x04c7('0xe'),_0x04c7('0xd'),'FAILED',_0x04c7('0xd')];config[_0x04c7('0xf')]=_[_0x04c7('0x10')](config[_0x04c7('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x04c7('0x11'))(new Redis(config[_0x04c7('0xf')]));function VoiceCallReport(_0xdf467){this['channels']=_0xdf467['channels'];this[_0x04c7('0x12')]=_0xdf467[_0x04c7('0x12')];this['blindTransfers']={};ami['on'](_0x04c7('0x13'),this[_0x04c7('0x14')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x16'),this[_0x04c7('0x14')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x17'),this['syncNewChannel'][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x18'),this[_0x04c7('0x19')]['bind'](this));ami['on']('varset',this[_0x04c7('0x1a')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x1b'),this[_0x04c7('0x1c')][_0x04c7('0x15')](this));ami['on'](_0x04c7('0x1d'),this[_0x04c7('0x1e')]['bind'](this));ami['on']('attendedtransfer',this[_0x04c7('0x1f')][_0x04c7('0x15')](this));ami['on']('blindtransfer',this[_0x04c7('0x20')]['bind'](this));ami['on'](_0x04c7('0x21'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x04c7('0x22'),this[_0x04c7('0x23')]['bind'](this));try{logger[_0x04c7('0x24')](_0x04c7('0x25'));ami[_0x04c7('0x26')]();}catch(_0x13924b){logger[_0x04c7('0x27')](_0x04c7('0x28'),util[_0x04c7('0x29')](_0x13924b,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x2b')]=function(_0x4b3177){return _0x4b3177!==null&&!_[_0x04c7('0x2c')](_0x4b3177);};VoiceCallReport[_0x04c7('0x2a')]['emit']=function(_0x8f7012,_0x14eb3e,_0x21eca8){io['to'](_0x8f7012)[_0x04c7('0x2d')](_0x14eb3e,_0x21eca8);};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1e')]=function(_0x24dbd5){try{if(this['isNotNull'](_0x24dbd5)){logger['info'](_0x04c7('0x2e'),_0x24dbd5[_0x04c7('0x2f')],_0x24dbd5[_0x04c7('0x30')],_0x24dbd5['calleridnum']);logger[_0x04c7('0x31')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x24dbd5['uniqueid'],util[_0x04c7('0x29')](_0x24dbd5,{'showHidden':![],'depth':null}));if(_0x24dbd5[_0x04c7('0x2f')]===_0x24dbd5[_0x04c7('0x32')]){if(!_['isUndefined'](this[_0x04c7('0x33')][_0x24dbd5[_0x04c7('0x2f')]])){_[_0x04c7('0x34')](this[_0x04c7('0x33')][_0x24dbd5[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x24dbd5,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x24dbd5['uniqueid']])));}}if(_0x24dbd5[_0x04c7('0x37')]===_0x04c7('0x38')){if(this['agents'][_0x24dbd5['channel']['split']('-')[0x0]]){if(_0x24dbd5[_0x04c7('0x39')]==_0x04c7('0x3a')){this[_0x04c7('0x12')][_0x24dbd5[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')]=_0x24dbd5[_0x04c7('0x3e')];this[_0x04c7('0x2d')](util[_0x04c7('0x3f')](_0x04c7('0x40'),this['agents'][_0x24dbd5['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x42'),{'destaccountcode':this[_0x04c7('0x12')][_0x24dbd5['channel']['split']('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x24dbd5[_0x04c7('0x3e')]});}}}}}catch(_0xd6986d){logger[_0x04c7('0x27')](_0x04c7('0x44'),_0x24dbd5[_0x04c7('0x2f')],util['inspect'](_0xd6986d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x45')]=function(_0x1d493d){try{if(this['isNotNull'](_0x1d493d)){logger[_0x04c7('0x31')](_0x04c7('0x46'),_0x1d493d[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x1d493d,{'showHidden':![],'depth':null}));if(_0x1d493d[_0x04c7('0x2f')]===_0x1d493d[_0x04c7('0x32')]&&_0x1d493d[_0x04c7('0x3b')]!=_0x04c7('0x47')){if(_[_0x04c7('0x2c')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]])){logger[_0x04c7('0x24')](_0x04c7('0x48'),_0x1d493d[_0x04c7('0x2f')],_0x1d493d['context'],_0x1d493d[_0x04c7('0x39')]);this['channels'][_0x1d493d[_0x04c7('0x2f')]]=new Channel();this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]][_0x04c7('0x49')]=moment()['format'](_0x04c7('0x4a'));this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]][_0x04c7('0x4b')]=dispositions[_['toNumber'](_0x1d493d[_0x04c7('0x4c')])];_[_0x04c7('0x34')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x1d493d,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x1d493d[_0x04c7('0x2f')]])));if(_0x1d493d[_0x04c7('0x37')]===_0x04c7('0x38')){if(this[_0x04c7('0x12')][_0x1d493d[_0x04c7('0x3b')]['split']('-')[0x0]]){if(_[_0x04c7('0x2c')](this[_0x04c7('0x12')][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')])){this['agents'][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x3d')]=_0x1d493d[_0x04c7('0x39')];logger[_0x04c7('0x31')](_0x04c7('0x4d'),_0x1d493d['uniqueid'],util[_0x04c7('0x29')]({'id':this[_0x04c7('0x12')][_0x1d493d['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x1d493d[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x1d493d['exten']},{'showHidden':![],'depth':null}));this[_0x04c7('0x2d')](util[_0x04c7('0x3f')]('user:%s',this[_0x04c7('0x12')][_0x1d493d['channel'][_0x04c7('0x3c')]('-')[0x0]]['name']),'user:agentconnect',{'id':this[_0x04c7('0x12')][_0x1d493d[_0x04c7('0x3b')]['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x1d493d[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1d493d[_0x04c7('0x39')]});}}}}}}}catch(_0x22da2f){logger['error']('[%s][voiceCallReport][newchannel]',_0x1d493d[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x22da2f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')]['syncNewExten']=function(_0x1af4c9){try{if(this[_0x04c7('0x2b')](_0x1af4c9)){logger[_0x04c7('0x31')]('[%s][voiceCallReport][newexten]\x20event:',_0x1af4c9[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x1af4c9,{'showHidden':![],'depth':null}));if(_0x1af4c9['uniqueid']===_0x1af4c9[_0x04c7('0x32')]&&_0x1af4c9[_0x04c7('0x39')]!='h'&&_0x1af4c9[_0x04c7('0x3b')]!=_0x04c7('0x47')){_0x1af4c9[_0x04c7('0x4e')]=_0x1af4c9[_0x04c7('0x4e')][_0x04c7('0x4f')]();_0x1af4c9[_0x04c7('0x50')]=_0x1af4c9[_0x04c7('0x51')]&&_0x1af4c9[_0x04c7('0x51')][_0x04c7('0x52')](_0x04c7('0x53'))?_0x1af4c9[_0x04c7('0x51')]:(_0x1af4c9['appdata']||_0x1af4c9['applicationdata'])[_0x04c7('0x4f')]();logger['info'](_0x04c7('0x54'),_0x1af4c9['uniqueid'],_0x1af4c9[_0x04c7('0x4e')],_0x1af4c9['applicationdata']);if(_[_0x04c7('0x2c')](this[_0x04c7('0x33')][_0x1af4c9['uniqueid']])){this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]]=new Channel();this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]][_0x04c7('0x49')]=_0x1af4c9['duration']?moment()['subtract'](moment[_0x04c7('0x55')](_0x1af4c9[_0x04c7('0x55')])[_0x04c7('0x56')](),_0x04c7('0x56'))[_0x04c7('0x3f')](_0x04c7('0x4a')):moment()['format'](_0x04c7('0x4a'));this['channels'][_0x1af4c9[_0x04c7('0x2f')]][_0x04c7('0x4b')]=_0x04c7('0xc');}_[_0x04c7('0x34')](this['channels'][_0x1af4c9[_0x04c7('0x2f')]],_[_0x04c7('0x35')](_0x1af4c9,_[_0x04c7('0x36')](this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]])));if(_[_0x04c7('0x57')](applications,_0x1af4c9[_0x04c7('0x4e')])){this[_0x04c7('0x33')][_0x1af4c9['uniqueid']][_0x04c7('0x58')]=_0x1af4c9['application'];this[_0x04c7('0x33')][_0x1af4c9['uniqueid']][_0x04c7('0x59')]=_0x1af4c9['applicationdata'];if(_0x1af4c9[_0x04c7('0x4e')]===_0x04c7('0x7')&&_['startsWith'](_0x1af4c9[_0x04c7('0x50')][_0x04c7('0x4f')](),_0x04c7('0x5a'))){var _0x3f67a7=_0x1af4c9[_0x04c7('0x50')]['split']('=');var _0x4e1d16=_0x3f67a7[0x0][_0x04c7('0x4f')]()[_0x04c7('0x5b')](/cdr\((.*)\)/);if(_0x4e1d16){this[_0x04c7('0x33')][_0x1af4c9[_0x04c7('0x2f')]][_0x4e1d16[0x1]]=_0x3f67a7[0x1];}}else if(_0x1af4c9['application']===_0x04c7('0x5c')){this['channels'][_0x1af4c9['uniqueid']]['queue']=_0x1af4c9[_0x04c7('0x50')][_0x04c7('0x3c')](',')[0x0];}}}}}catch(_0x18fb1d){logger['error'](_0x04c7('0x5d'),_0x1af4c9[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x18fb1d,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0x19')]=function(_0x11e834){try{if(this[_0x04c7('0x2b')](_0x11e834)){logger[_0x04c7('0x24')](_0x04c7('0x5e'),_0x11e834['uniqueid'],_0x11e834[_0x04c7('0x32')],_0x11e834[_0x04c7('0x30')],_0x11e834[_0x04c7('0x5f')]);logger[_0x04c7('0x31')]('[%s][voiceCallReport][newstate]\x20event:',_0x11e834['uniqueid'],util[_0x04c7('0x29')](_0x11e834,{'showHidden':![],'depth':null}));if(_0x11e834[_0x04c7('0x2f')]!==_0x11e834[_0x04c7('0x32')]){if(this['channels'][_0x11e834[_0x04c7('0x32')]]){if(_0x11e834[_0x04c7('0x4c')]==='6'){if(!this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x60')]){var _0x6e32e7=moment();this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x60')]=!![];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x61')]=_0x6e32e7[_0x04c7('0x3f')](_0x04c7('0x4a'));if(this[_0x04c7('0x33')][_0x11e834['linkedid']]['starttime']){this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x62')]=_0x6e32e7[_0x04c7('0x63')](this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['starttime'],'seconds');}}this['channels'][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x32')]=_0x11e834[_0x04c7('0x2f')];if(_0x11e834[_0x04c7('0x5f')]!=='xcally-motion-preview'){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['connectedlinenum']=_0x11e834[_0x04c7('0x5f')];}this[_0x04c7('0x33')][_0x11e834['linkedid']][_0x04c7('0x64')]=_0x11e834['calleridname'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x65')]=_0x11e834[_0x04c7('0x3b')];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x4b')]=dispositions[_['toNumber'](_0x11e834[_0x04c7('0x4c')])];if(this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['UserId']=this[_0x04c7('0x12')][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]]['id'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['membername']=this['agents'][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')];}}}}else{if(this['channels'][_0x11e834[_0x04c7('0x2f')]]){if(_0x11e834[_0x04c7('0x4c')]==='6'){if(this['agents'][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]['UserId']=this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'];this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]][_0x04c7('0x66')]=this[_0x04c7('0x12')][_0x11e834['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')];}}}}if(_0x11e834[_0x04c7('0x4c')]==='6'&&_0x11e834['context']===_0x04c7('0x38')){if(this['agents'][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['destconnectedlinenum']=_0x11e834[_0x04c7('0x39')];var _0x5cdd3a,_0x4cd318;if(this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]){_0x5cdd3a=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]][_0x04c7('0x67')];_0x4cd318=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x2f')]]['queue'];}else if(this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]){_0x5cdd3a=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]][_0x04c7('0x67')];_0x4cd318=this[_0x04c7('0x33')][_0x11e834[_0x04c7('0x32')]]['queue'];}logger[_0x04c7('0x31')](_0x04c7('0x68'),_0x11e834[_0x04c7('0x2f')],util['inspect']({'id':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x11e834[_0x04c7('0x39')],'routealias':_0x5cdd3a,'queue':_0x4cd318||undefined},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x04c7('0x40'),this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x42'),{'id':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x04c7('0x12')][_0x11e834[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')],'destconnectedlinenum':_0x11e834['exten'],'routealias':_0x5cdd3a,'queue':_0x4cd318||undefined});}}}}catch(_0x5861ad){logger[_0x04c7('0x27')](_0x04c7('0x69'),_0x11e834[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x5861ad,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x6a')]=function(_0x39b2bf,_0x5dcaf1){try{if(this[_0x04c7('0x33')][_0x39b2bf]){logger[_0x04c7('0x24')](_0x04c7('0x6b'),_0x39b2bf,_0x5dcaf1);this[_0x04c7('0x33')][_0x39b2bf][_0x04c7('0x6c')]=!![];if(_[_0x04c7('0x6d')](_0x5dcaf1,'.wav49')){_0x5dcaf1=_0x5dcaf1[_0x04c7('0x6e')](_0x04c7('0x6f'),_0x04c7('0x70'));}this[_0x04c7('0x33')][_0x39b2bf]['monitorFilename']=_0x5dcaf1;var _0x2f5009=_[_0x04c7('0x71')](this[_0x04c7('0x33')][_0x39b2bf]['monitors'],{'filename':_0x5dcaf1});if(_[_0x04c7('0x72')](_0x2f5009)){this[_0x04c7('0x33')][_0x39b2bf][_0x04c7('0x73')][_0x04c7('0x74')]({'filename':_0x5dcaf1,'createdAt':moment()[_0x04c7('0x3f')](_0x04c7('0x4a')),'mixmonitorid':'','status':_0x04c7('0x75')});}}}catch(_0x2a3235){logger[_0x04c7('0x27')]('[%s][voiceCallReport][mixMonitorFilename]',_0x39b2bf,util[_0x04c7('0x29')](_0x2a3235,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0x1a')]=function(_0x5847da){try{if(this[_0x04c7('0x2b')](_0x5847da)){logger[_0x04c7('0x31')](_0x04c7('0x76'),_0x5847da['uniqueid'],util['inspect'](_0x5847da,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]]&&_0x5847da[_0x04c7('0x3b')]!='OutgoingSpoolFailed'){if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')])){if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x78')])){logger['info'](_0x04c7('0x79'),_0x5847da[_0x04c7('0x2f')],_0x5847da['value']);this['syncMixMonitorFilename'](_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x7b')])){logger[_0x04c7('0x24')](_0x04c7('0x7c'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x5f')]=_0x5847da[_0x04c7('0x7a')];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')]['xmd-callerid'])){logger[_0x04c7('0x24')](_0x04c7('0x7d'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x7e')]=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x7f')])){logger['info'](_0x04c7('0x80'),_0x5847da['uniqueid'],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x81')]=_0x5847da[_0x04c7('0x7a')];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x82')])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x5847da['uniqueid'],_0x5847da[_0x04c7('0x7a')][_0x04c7('0x3c')](',')[0x0]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x5c')]=_0x5847da[_0x04c7('0x7a')][_0x04c7('0x3c')](',')[0x0];}else if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')][_0x04c7('0x83')])){logger['info'](_0x04c7('0x84'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da['uniqueid']][_0x04c7('0x85')]=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['xmd-destination'])){logger[_0x04c7('0x24')](_0x04c7('0x86'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]]['destination']=_0x5847da['value'];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['xmd-callerid-preview'])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this['channels'][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x87')]=_0x5847da[_0x04c7('0x7a')];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x5847da['uniqueid'],_0x5847da['value']);this[_0x04c7('0x33')][_0x5847da['uniqueid']]['queue']=_0x5847da[_0x04c7('0x7a')];}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')][_0x04c7('0x89')])){logger[_0x04c7('0x24')](_0x04c7('0x8a'),_0x5847da[_0x04c7('0x2f')],_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x2f')]][_0x04c7('0x8b')]=_0x5847da[_0x04c7('0x7a')];}}}else if(this['isNotNull'](_0x5847da[_0x04c7('0x77')]['mixmonitor_filename'])){if(_0x5847da['value']){var _0x15e960=path[_0x04c7('0x8c')](_0x5847da[_0x04c7('0x7a')])[_0x04c7('0x41')];logger[_0x04c7('0x24')](_0x04c7('0x79'),_0x15e960,_0x5847da[_0x04c7('0x7a')]);this[_0x04c7('0x6a')](_0x15e960,_0x5847da[_0x04c7('0x7a')]);}}else if(this[_0x04c7('0x33')][_0x5847da[_0x04c7('0x32')]]){if(this['isNotNull'](_0x5847da[_0x04c7('0x77')])){if(this[_0x04c7('0x2b')](_0x5847da[_0x04c7('0x77')]['sipcallid'])){logger[_0x04c7('0x24')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x5847da[_0x04c7('0x32')],_0x5847da['value']);this['channels'][_0x5847da[_0x04c7('0x32')]][_0x04c7('0x8d')]=_0x5847da[_0x04c7('0x7a')];}}}}}catch(_0x2afdca){logger[_0x04c7('0x27')](_0x04c7('0x8e'),_0x5847da['uniqueid'],util['inspect'](_0x2afdca,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1c')]=function(_0xdbf55b){try{if(this[_0x04c7('0x2b')](_0xdbf55b)){logger[_0x04c7('0x31')](_0x04c7('0x8f'),_0xdbf55b[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0xdbf55b,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0xdbf55b['uniqueid'],_0xdbf55b[_0x04c7('0x90')]);var _0xc99010=moment();this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x91')]=_0xc99010['format'](_0x04c7('0x4a'));this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x55')]=_0xc99010[_0x04c7('0x63')](this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x49')],_0x04c7('0x56'));if(this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x60')]){this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x92')]=_0xc99010[_0x04c7('0x63')](this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x61')],_0x04c7('0x56'));this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x62')]=this[_0x04c7('0x33')][_0xdbf55b['uniqueid']][_0x04c7('0x55')]-this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x92')];}if(_0xdbf55b[_0x04c7('0x37')]===_0x04c7('0x38')){if(this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]]){this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]=_[_0x04c7('0x93')](this['agents'][_0xdbf55b[_0x04c7('0x3b')]['split']('-')[0x0]],['destconnectedlinenum']);logger[_0x04c7('0x31')](_0x04c7('0x94'),_0xdbf55b[_0x04c7('0x2f')],util[_0x04c7('0x29')]({'id':this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x04c7('0x12')][_0xdbf55b['channel'][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x43')]},{'showHidden':![],'depth':null}));this[_0x04c7('0x2d')](util[_0x04c7('0x3f')]('user:%s',this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]][_0x04c7('0x41')]),_0x04c7('0x95'),{'id':this[_0x04c7('0x12')][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xdbf55b[_0x04c7('0x3b')][_0x04c7('0x3c')]('-')[0x0]]['accountcode']});for(var _0x4c59b1=0x0;_0x4c59b1<Object[_0x04c7('0x36')](this[_0x04c7('0x12')])[_0x04c7('0x96')];_0x4c59b1++){var _0x527935=Object[_0x04c7('0x36')](this[_0x04c7('0x12')])[_0x4c59b1];var _0x1c13ac=this[_0x04c7('0x12')][_0x527935];if(_0x1c13ac[_0x04c7('0x43')]===Number(_0xdbf55b[_0x04c7('0x3e')])){this['emit'](util[_0x04c7('0x3f')](_0x04c7('0x40'),_0x1c13ac[_0x04c7('0x41')]),_0x04c7('0x95'),{'id':_0x1c13ac['id'],'destaccountcode':_0x1c13ac[_0x04c7('0x43')],'transfer':this[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x97')]});break;}}}}var _0x3962b3=this;Promise[_0x04c7('0x98')]()[_0x04c7('0x99')](function(){var _0x36e4f5=_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];if(typeof _0x36e4f5[_0x04c7('0x97')]===_0x04c7('0x9a'))return;if(_['isEmpty'](_0x36e4f5[_0x04c7('0x73')]))return;return RpcSetting[_0x04c7('0x9b')]()[_0x04c7('0x99')](function(_0x1fb7aa){if(!_0x1fb7aa[_0x04c7('0x9c')])return;return Promise['resolve']()[_0x04c7('0x99')](function(){return ami[_0x04c7('0x9d')]({'action':_0x04c7('0x9e'),'channel':_0x36e4f5[_0x04c7('0x3b')]})[_0x04c7('0x9f')](function(){});})['then'](function(){return ami[_0x04c7('0x9d')]({'action':_0x04c7('0x9e'),'channel':_0x36e4f5[_0x04c7('0x65')]})[_0x04c7('0x9f')](function(){})['finally'](function(){var _0xbb6dfa=_0x3962b3['agents'][_0x36e4f5[_0x04c7('0x65')][_0x04c7('0x3c')]('-')[0x0]];if(!_0xbb6dfa)return;io[_0x04c7('0x2d')](_0x04c7('0xa0'),{'agentId':_0xbb6dfa['id'],'uniqueid':_0x36e4f5[_0x04c7('0x2f')]});});});});})['then'](function(){if(_0xdbf55b[_0x04c7('0xa1')]===_0x04c7('0xa2')){_0x3962b3['blindTransfers'][_0xdbf55b[_0x04c7('0x2f')]]=_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];}else{if(_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x81')]==='outbound'&&_0x3962b3[_0x04c7('0xa3')][_0xdbf55b[_0x04c7('0x2f')]]){_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x2f')]=[_0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']]['linkedid'],_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x32')]=_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]][_0x04c7('0x2f')]][0x0];delete _0x3962b3[_0x04c7('0xa3')][_0xdbf55b[_0x04c7('0x2f')]];}}logger[_0x04c7('0x31')](_0x04c7('0xa4'),_0xdbf55b[_0x04c7('0x2f')],util['inspect'](_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]],{'showHidden':![],'depth':null}));ami[_0x04c7('0x2d')](_0x04c7('0xa5'),_0x3962b3[_0x04c7('0x33')][_0xdbf55b[_0x04c7('0x2f')]]);delete _0x3962b3[_0x04c7('0x33')][_0xdbf55b['uniqueid']];});}}}catch(_0x2821e9){logger[_0x04c7('0x27')](_0x04c7('0xa6'),_0xdbf55b['uniqueid'],util[_0x04c7('0x29')](_0x2821e9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x1f')]=function(_0x110cd2){try{if(this['isNotNull'](_0x110cd2)){logger[_0x04c7('0x24')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x110cd2['uniqueid'],_0x110cd2[_0x04c7('0xa7')],_0x110cd2[_0x04c7('0xa8')]);logger[_0x04c7('0x31')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x110cd2['uniqueid'],util['inspect'](_0x110cd2,{'showHidden':![],'depth':null}));var _0x62452c;if(this[_0x04c7('0x33')][_0x110cd2['transfereeuniqueid']]){this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xa9')]][_0x04c7('0xaa')]=_0x110cd2[_0x04c7('0xa7')];this['channels'][_0x110cd2[_0x04c7('0xa9')]]['transferconnectedlinenum']=_0x110cd2[_0x04c7('0xa8')];if(this[_0x04c7('0x33')][_0x110cd2['secondtransfereruniqueid']]){_0x62452c=this[_0x04c7('0x33')][_0x110cd2['secondtransfereruniqueid']];this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]=this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xa9')]];this[_0x04c7('0x33')][_0x110cd2['transfereeuniqueid']]=_0x62452c;}this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]['transferType']=_0x04c7('0xac');}else if(this['channels'][_0x110cd2[_0x04c7('0xad')]]){this[_0x04c7('0x33')][_0x110cd2['transfertargetuniqueid']][_0x04c7('0xaa')]=_0x110cd2[_0x04c7('0xa7')];this['channels'][_0x110cd2[_0x04c7('0xad')]][_0x04c7('0xae')]=_0x110cd2[_0x04c7('0xa8')];if(this['channels'][_0x110cd2[_0x04c7('0xaf')]]){_0x62452c=this['channels'][_0x110cd2[_0x04c7('0xaf')]];this['channels'][_0x110cd2[_0x04c7('0xaf')]]=this['channels'][_0x110cd2[_0x04c7('0xad')]];this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xad')]]=_0x62452c;}this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xad')]][_0x04c7('0x97')]=_0x04c7('0xac');}if((this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]]||this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xb0')]])&&this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]){var _0x1309f7=_[_0x04c7('0xb1')]([this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]],this['channels'][_0x110cd2['origtransfererlinkedid']],this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]]],function(_0x7aac2c){return _0x7aac2c&&_0x7aac2c['type']===_0x04c7('0xb2')&&_0x7aac2c[_0x04c7('0xb3')];});if(_0x1309f7){if(this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]])this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xaf')]][_0x04c7('0x97')]=_0x04c7('0xac');if(this['channels'][_0x110cd2[_0x04c7('0xb0')]])this['channels'][_0x110cd2[_0x04c7('0xb0')]]['transferType']=_0x04c7('0xac');this[_0x04c7('0x33')][_0x110cd2[_0x04c7('0xab')]][_0x04c7('0x97')]=_0x04c7('0xac');}}}}catch(_0x2cd804){logger[_0x04c7('0x27')](_0x04c7('0xb4'),_0x110cd2['uniqueid'],util[_0x04c7('0x29')](_0x2cd804,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x20')]=function(_0x4e4deb){try{if(this[_0x04c7('0x2b')](_0x4e4deb)){logger[_0x04c7('0x24')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x4e4deb[_0x04c7('0x2f')],_0x4e4deb[_0x04c7('0xb5')],_0x4e4deb[_0x04c7('0xb6')]);logger['debug'](_0x04c7('0xb7'),_0x4e4deb[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x4e4deb,{'showHidden':![],'depth':null}));if(this[_0x04c7('0x33')][_0x4e4deb['transfereeuniqueid']]){this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]]['transfercalleridnum']=_0x4e4deb[_0x04c7('0xb5')];this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]][_0x04c7('0xae')]=_0x4e4deb[_0x04c7('0xb6')];this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xa9')]][_0x04c7('0x97')]=_0x04c7('0xb8');this[_0x04c7('0x1c')]({'event':_0x04c7('0xa2'),'uniqueid':_0x4e4deb[_0x04c7('0xa9')],'context':_0x4e4deb['context'],'channel':_0x4e4deb[_0x04c7('0xb9')]});}else{this[_0x04c7('0x33')][_0x4e4deb[_0x04c7('0xba')]][_0x04c7('0x97')]=_0x04c7('0xb8');}}}catch(_0x2fda98){logger[_0x04c7('0x27')](_0x04c7('0xbb'),_0x4e4deb[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x2fda98,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x04c7('0xbc')]=function(_0x473288){try{if(this[_0x04c7('0x2b')](_0x473288)){logger[_0x04c7('0x31')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x473288[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x473288,{'showHidden':![],'depth':null}));if(this['channels'][_0x473288[_0x04c7('0x2f')]]){if(!_[_0x04c7('0x72')](this[_0x04c7('0x33')][_0x473288['uniqueid']][_0x04c7('0x61')])){this[_0x04c7('0x33')][_0x473288[_0x04c7('0x2f')]][_0x04c7('0xbd')]=moment()[_0x04c7('0x3f')](_0x04c7('0x4a'));logger[_0x04c7('0x24')](_0x04c7('0xbe'),_0x473288[_0x04c7('0x2f')],this[_0x04c7('0x33')][_0x473288['uniqueid']][_0x04c7('0xbd')]);}}}}catch(_0x2f7be2){logger[_0x04c7('0x27')](_0x04c7('0xbf'),_0x473288[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x2f7be2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x04c7('0x2a')][_0x04c7('0x23')]=function(_0x32187a){try{if(this[_0x04c7('0x2b')](_0x32187a)){logger[_0x04c7('0x31')](_0x04c7('0xc0'),_0x32187a[_0x04c7('0x2f')],util['inspect'](_0x32187a,{'showHidden':![],'depth':null}));if(this['channels'][_0x32187a[_0x04c7('0x2f')]]){if(!_[_0x04c7('0x72')](this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]][_0x04c7('0xbd')])){this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]][_0x04c7('0xc1')]+=moment()[_0x04c7('0xc2')](0x0)[_0x04c7('0x63')](this[_0x04c7('0x33')][_0x32187a[_0x04c7('0x2f')]]['mohstarttime'],'seconds');logger[_0x04c7('0x24')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x32187a[_0x04c7('0x2f')],this['channels'][_0x32187a[_0x04c7('0x2f')]]['mohtime']);delete this['channels'][_0x32187a['uniqueid']][_0x04c7('0xbd')];}}}}catch(_0x150bf7){logger[_0x04c7('0x27')](_0x04c7('0xc3'),_0x32187a[_0x04c7('0x2f')],util[_0x04c7('0x29')](_0x150bf7,{'showHidden':![],'depth':null}));}};module[_0x04c7('0xc4')]=VoiceCallReport;
\ No newline at end of file
+var _0xba0b=['[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','ATTENDED','origtransfererlinkedid','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereruniqueid','transfererchannel','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','path','ioredis','../../../config/environment','../../../config/logger','../ami','../model/channel','../rpc/setting','set','queue','dial','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newchannel','bind','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','inspect','prototype','isNotNull','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','linkedid','isUndefined','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','format','user:%s','name','user:agentconnect','accountcode','connectedlinenum','syncNewChannel','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','context','starttime','YYYY-MM-DD\x20HH:mm:ss','channelstate','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','startsWith','CDR(routeAlias)','appdata','toLowerCase','duration','subtract','seconds','disposition','merge','includes','lastapplication','lastdata','cdr(','match','type','isNil','error','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','connectedlinename','destinationchannel','toNumber','membername','answertime','diff','UserId','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue'];(function(_0x1ab676,_0x310261){var _0x48aee9=function(_0x14adb6){while(--_0x14adb6){_0x1ab676['push'](_0x1ab676['shift']());}};_0x48aee9(++_0x310261);}(_0xba0b,0x110));var _0xbba0=function(_0x31bc2e,_0x390275){_0x31bc2e=_0x31bc2e-0x0;var _0x4c9321=_0xba0b[_0x31bc2e];return _0x4c9321;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var path=require(_0xbba0('0x0'));var Redis=require(_0xbba0('0x1'));var config=require(_0xbba0('0x2'));var logger=require(_0xbba0('0x3'))('ami');var ami=require(_0xbba0('0x4'));var Channel=require(_0xbba0('0x5'));var RpcSetting=require(_0xbba0('0x6'));var applications=[_0xbba0('0x7'),_0xbba0('0x8'),'agi',_0xbba0('0x9'),_0xbba0('0xa'),_0xbba0('0xb')];var dispositions=['NO\x20ANSWER',_0xbba0('0xc'),_0xbba0('0xc'),_0xbba0('0xd'),_0xbba0('0xd'),_0xbba0('0xd'),_0xbba0('0xe'),_0xbba0('0xf'),_0xbba0('0xc'),_0xbba0('0xc'),_0xbba0('0xc')];config['redis']=_[_0xbba0('0x10')](config[_0xbba0('0x11')],{'host':_0xbba0('0x12'),'port':0x18eb});var io=require(_0xbba0('0x13'))(new Redis(config[_0xbba0('0x11')]));function VoiceCallReport(_0x283fb2){this[_0xbba0('0x14')]=_0x283fb2['channels'];this[_0xbba0('0x15')]=_0x283fb2[_0xbba0('0x15')];this[_0xbba0('0x16')]={};ami['on'](_0xbba0('0x17'),this[_0xbba0('0x18')]['bind'](this));ami['on']('newexten',this[_0xbba0('0x18')]['bind'](this));ami['on'](_0xbba0('0x19'),this['syncNewChannel'][_0xbba0('0x1a')](this));ami['on'](_0xbba0('0x1b'),this[_0xbba0('0x1c')][_0xbba0('0x1a')](this));ami['on'](_0xbba0('0x1d'),this[_0xbba0('0x1e')][_0xbba0('0x1a')](this));ami['on'](_0xbba0('0x1f'),this[_0xbba0('0x20')][_0xbba0('0x1a')](this));ami['on']('newcallerid',this[_0xbba0('0x21')][_0xbba0('0x1a')](this));ami['on'](_0xbba0('0x22'),this['syncAttendedTransfer'][_0xbba0('0x1a')](this));ami['on'](_0xbba0('0x23'),this[_0xbba0('0x24')][_0xbba0('0x1a')](this));ami['on']('musiconholdstart',this[_0xbba0('0x25')][_0xbba0('0x1a')](this));ami['on']('musiconholdstop',this[_0xbba0('0x26')][_0xbba0('0x1a')](this));try{logger[_0xbba0('0x27')](_0xbba0('0x28'));ami[_0xbba0('0x29')]();}catch(_0x2b023f){logger['error']('[voiceCallReport][coreshowchannels]',util[_0xbba0('0x2a')](_0x2b023f,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x2c')]=function(_0x4178ee){return _0x4178ee!==null&&!_['isUndefined'](_0x4178ee);};VoiceCallReport['prototype'][_0xbba0('0x2d')]=function(_0x5f1b22,_0xf8d48,_0x381a9f){io['to'](_0x5f1b22)['emit'](_0xf8d48,_0x381a9f);};VoiceCallReport['prototype'][_0xbba0('0x21')]=function(_0x18418f){try{if(this[_0xbba0('0x2c')](_0x18418f)){logger[_0xbba0('0x27')](_0xbba0('0x2e'),_0x18418f[_0xbba0('0x2f')],_0x18418f[_0xbba0('0x30')],_0x18418f[_0xbba0('0x31')]);logger[_0xbba0('0x32')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x18418f[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x18418f,{'showHidden':![],'depth':null}));if(_0x18418f[_0xbba0('0x2f')]===_0x18418f[_0xbba0('0x33')]){if(!_[_0xbba0('0x34')](this[_0xbba0('0x14')][_0x18418f[_0xbba0('0x2f')]])){_['merge'](this[_0xbba0('0x14')][_0x18418f[_0xbba0('0x2f')]],_[_0xbba0('0x35')](_0x18418f,_[_0xbba0('0x36')](this[_0xbba0('0x14')][_0x18418f[_0xbba0('0x2f')]])));}}if(_0x18418f['context']===_0xbba0('0x37')){if(this[_0xbba0('0x15')][_0x18418f[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]){if(_0x18418f[_0xbba0('0x3a')]==_0xbba0('0x3b')){this[_0xbba0('0x15')][_0x18418f[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['destconnectedlinenum']=_0x18418f['connectedlinenum'];this[_0xbba0('0x2d')](util[_0xbba0('0x3c')](_0xbba0('0x3d'),this[_0xbba0('0x15')][_0x18418f[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x3e')]),_0xbba0('0x3f'),{'destaccountcode':this[_0xbba0('0x15')][_0x18418f['channel']['split']('-')[0x0]][_0xbba0('0x40')],'destconnectedlinenum':_0x18418f[_0xbba0('0x41')]});}}}}}catch(_0x2077ae){logger['error']('[%s][voiceCallReport][newcallerid]',_0x18418f[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x2077ae,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x42')]=function(_0xf61ef){try{if(this[_0xbba0('0x2c')](_0xf61ef)){logger['debug'](_0xbba0('0x43'),_0xf61ef[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0xf61ef,{'showHidden':![],'depth':null}));if(this[_0xbba0('0x14')][_0xf61ef[_0xbba0('0x2f')]])return;if(_0xf61ef['channel']===_0xbba0('0x44'))return;if(_0xf61ef[_0xbba0('0x2f')]!==_0xf61ef['linkedid']&&!this[_0xbba0('0x16')][_0xf61ef['linkedid']])return;logger[_0xbba0('0x27')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0xf61ef[_0xbba0('0x2f')],_0xf61ef[_0xbba0('0x45')],_0xf61ef['exten']);this['channels'][_0xf61ef[_0xbba0('0x2f')]]=new Channel();this[_0xbba0('0x14')][_0xf61ef[_0xbba0('0x2f')]][_0xbba0('0x46')]=moment()['format'](_0xbba0('0x47'));this[_0xbba0('0x14')][_0xf61ef[_0xbba0('0x2f')]]['disposition']=dispositions[_['toNumber'](_0xf61ef[_0xbba0('0x48')])];_['merge'](this[_0xbba0('0x14')][_0xf61ef[_0xbba0('0x2f')]],_['pick'](_0xf61ef,_['keys'](this[_0xbba0('0x14')][_0xf61ef[_0xbba0('0x2f')]])));if(_0xf61ef['context']===_0xbba0('0x37')){if(this['agents'][_0xf61ef['channel'][_0xbba0('0x39')]('-')[0x0]]){if(_[_0xbba0('0x34')](this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x49')])){this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x49')]=_0xf61ef[_0xbba0('0x3a')];logger[_0xbba0('0x32')](_0xbba0('0x4a'),_0xf61ef[_0xbba0('0x2f')],util[_0xbba0('0x2a')]({'id':this[_0xbba0('0x15')][_0xf61ef['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x40')],'destconnectedlinenum':_0xf61ef['exten']},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xbba0('0x3d'),this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x3e')]),'user:agentconnect',{'id':this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xbba0('0x15')][_0xf61ef[_0xbba0('0x38')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xf61ef['exten']});}}}}}catch(_0x24a2db){logger['error']('[%s][voiceCallReport][newchannel]',_0xf61ef[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x24a2db,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x18')]=function(_0x426a27){try{if(this[_0xbba0('0x2c')](_0x426a27)){logger[_0xbba0('0x32')](_0xbba0('0x4b'),_0x426a27[_0xbba0('0x2f')],util['inspect'](_0x426a27,{'showHidden':![],'depth':null}));if(_0x426a27[_0xbba0('0x38')]===_0xbba0('0x44')||_0x426a27[_0xbba0('0x3a')]==='h')return;if(_0x426a27[_0xbba0('0x2f')]===_0x426a27[_0xbba0('0x33')]||this[_0xbba0('0x16')][_0x426a27[_0xbba0('0x33')]]){_0x426a27[_0xbba0('0x4c')]=_0x426a27[_0xbba0('0x4c')]['toLowerCase']();_0x426a27[_0xbba0('0x4d')]=_0x426a27['appdata']&&_0x426a27['appdata'][_0xbba0('0x4e')](_0xbba0('0x4f'))?_0x426a27['appdata']:(_0x426a27[_0xbba0('0x50')]||_0x426a27[_0xbba0('0x4d')])[_0xbba0('0x51')]();logger[_0xbba0('0x27')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x426a27[_0xbba0('0x2f')],_0x426a27[_0xbba0('0x4c')],_0x426a27[_0xbba0('0x4d')]);if(_[_0xbba0('0x34')](this['channels'][_0x426a27[_0xbba0('0x2f')]])){this[_0xbba0('0x14')][_0x426a27['uniqueid']]=new Channel();this[_0xbba0('0x14')][_0x426a27['uniqueid']][_0xbba0('0x46')]=_0x426a27[_0xbba0('0x52')]?moment()[_0xbba0('0x53')](moment[_0xbba0('0x52')](_0x426a27[_0xbba0('0x52')])[_0xbba0('0x54')](),_0xbba0('0x54'))[_0xbba0('0x3c')](_0xbba0('0x47')):moment()['format'](_0xbba0('0x47'));this[_0xbba0('0x14')][_0x426a27['uniqueid']][_0xbba0('0x55')]=_0xbba0('0xd');}_[_0xbba0('0x56')](this[_0xbba0('0x14')][_0x426a27[_0xbba0('0x2f')]],_[_0xbba0('0x35')](_0x426a27,_['keys'](this[_0xbba0('0x14')][_0x426a27[_0xbba0('0x2f')]])));if(_[_0xbba0('0x57')](applications,_0x426a27[_0xbba0('0x4c')])){this[_0xbba0('0x14')][_0x426a27[_0xbba0('0x2f')]][_0xbba0('0x58')]=_0x426a27['application'];this[_0xbba0('0x14')][_0x426a27[_0xbba0('0x2f')]][_0xbba0('0x59')]=_0x426a27[_0xbba0('0x4d')];if(_0x426a27[_0xbba0('0x4c')]===_0xbba0('0x7')&&_[_0xbba0('0x4e')](_0x426a27[_0xbba0('0x4d')]['toLowerCase'](),_0xbba0('0x5a'))){var _0x5dcb8d=_0x426a27[_0xbba0('0x4d')][_0xbba0('0x39')]('=');var _0x77159b=_0x5dcb8d[0x0][_0xbba0('0x51')]()[_0xbba0('0x5b')](/cdr\((.*)\)/);if(_0x77159b){if(_0x77159b[0x1]===_0xbba0('0x5c')&&!_[_0xbba0('0x5d')](this['channels'][_0x426a27['uniqueid']][_0x77159b[0x1]]))return;this['channels'][_0x426a27[_0xbba0('0x2f')]][_0x77159b[0x1]]=_0x5dcb8d[0x1];}}else if(_0x426a27['application']==='queue'){this[_0xbba0('0x14')][_0x426a27[_0xbba0('0x2f')]][_0xbba0('0x8')]=_0x426a27[_0xbba0('0x4d')][_0xbba0('0x39')](',')[0x0];}}}}}catch(_0x5c7c92){logger[_0xbba0('0x5e')]('[%s][voiceCallReport][newexten]',_0x426a27['uniqueid'],util[_0xbba0('0x2a')](_0x5c7c92,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x1c')]=function(_0x1936b7){try{if(this[_0xbba0('0x2c')](_0x1936b7)){logger[_0xbba0('0x27')](_0xbba0('0x5f'),_0x1936b7[_0xbba0('0x2f')],_0x1936b7['linkedid'],_0x1936b7['calleridname'],_0x1936b7[_0xbba0('0x31')]);logger[_0xbba0('0x32')](_0xbba0('0x60'),_0x1936b7[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x1936b7,{'showHidden':![],'depth':null}));if(_0x1936b7[_0xbba0('0x48')]!=='6')return;if(_0x1936b7[_0xbba0('0x2f')]!==_0x1936b7[_0xbba0('0x33')]){var _0x2a39a3=moment();if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]]){if(!this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x61')]){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x61')]=!![];this[_0xbba0('0x14')][_0x1936b7['linkedid']]['answertime']=_0x2a39a3[_0xbba0('0x3c')](_0xbba0('0x47'));if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x46')]){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x62')]=_0x2a39a3['diff'](this['channels'][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x46')],_0xbba0('0x54'));}}this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]]['linkedid']=_0x1936b7[_0xbba0('0x2f')];if(_0x1936b7[_0xbba0('0x31')]!==_0xbba0('0x3b')){this[_0xbba0('0x14')][_0x1936b7['linkedid']][_0xbba0('0x41')]=_0x1936b7[_0xbba0('0x31')];}this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x63')]=_0x1936b7[_0xbba0('0x30')];this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x64')]=_0x1936b7[_0xbba0('0x38')];this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]]['disposition']=dispositions[_[_0xbba0('0x65')](_0x1936b7[_0xbba0('0x48')])];if(this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]]['UserId']=this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['id'];this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x66')]=this[_0xbba0('0x15')][_0x1936b7['channel'][_0xbba0('0x39')]('-')[0x0]]['name'];}}if(this['channels'][_0x1936b7[_0xbba0('0x2f')]]){if(!this['channels'][_0x1936b7['uniqueid']][_0xbba0('0x61')]){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]]['answered']=!![];this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x67')]=_0x2a39a3[_0xbba0('0x3c')](_0xbba0('0x47'));if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]]['starttime']){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x62')]=_0x2a39a3[_0xbba0('0x68')](this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x46')],_0xbba0('0x54'));}}if(_0x1936b7[_0xbba0('0x31')]!==_0xbba0('0x3b')){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x41')]=_0x1936b7[_0xbba0('0x31')];}this['channels'][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x63')]=_0x1936b7[_0xbba0('0x30')];this['channels'][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x64')]=_0x1936b7[_0xbba0('0x38')];this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x55')]=dispositions[_[_0xbba0('0x65')](_0x1936b7['channelstate'])];}}else{if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]]){if(this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]){this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x69')]=this['agents'][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['id'];this['channels'][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x66')]=this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x3e')];}}}if(_0x1936b7[_0xbba0('0x45')]==='from-sip'){if(this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]){this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')]['split']('-')[0x0]][_0xbba0('0x49')]=_0x1936b7[_0xbba0('0x3a')];var _0x2d1fea,_0x38327d;if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]]){_0x2d1fea=this['channels'][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x6a')];_0x38327d=this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x2f')]][_0xbba0('0x8')];}else if(this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]]){_0x2d1fea=this[_0xbba0('0x14')][_0x1936b7[_0xbba0('0x33')]][_0xbba0('0x6a')];_0x38327d=this[_0xbba0('0x14')][_0x1936b7['linkedid']]['queue'];}logger[_0xbba0('0x32')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x1936b7[_0xbba0('0x2f')],util[_0xbba0('0x2a')]({'id':this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xbba0('0x15')][_0x1936b7['channel'][_0xbba0('0x39')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1936b7[_0xbba0('0x3a')],'routealias':_0x2d1fea,'queue':_0x38327d||undefined},{'showHidden':![],'depth':null}));this[_0xbba0('0x2d')](util[_0xbba0('0x3c')](_0xbba0('0x3d'),this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x3e')]),_0xbba0('0x3f'),{'id':this[_0xbba0('0x15')][_0x1936b7[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xbba0('0x15')][_0x1936b7['channel'][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x40')],'destconnectedlinenum':_0x1936b7[_0xbba0('0x3a')],'routealias':_0x2d1fea,'queue':_0x38327d||undefined});}}}}catch(_0x46f1ab){logger['error'](_0xbba0('0x6b'),_0x1936b7['uniqueid'],util[_0xbba0('0x2a')](_0x46f1ab,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x6c')]=function(_0x4a6a62,_0x1a2ff8){try{if(this[_0xbba0('0x14')][_0x4a6a62]){logger[_0xbba0('0x27')](_0xbba0('0x6d'),_0x4a6a62,_0x1a2ff8);this[_0xbba0('0x14')][_0x4a6a62]['monitor']=!![];if(_[_0xbba0('0x6e')](_0x1a2ff8,_0xbba0('0x6f'))){_0x1a2ff8=_0x1a2ff8[_0xbba0('0x70')](_0xbba0('0x6f'),_0xbba0('0x71'));}this[_0xbba0('0x14')][_0x4a6a62][_0xbba0('0x72')]=_0x1a2ff8;var _0x343c56=_[_0xbba0('0x73')](this['channels'][_0x4a6a62]['monitors'],{'filename':_0x1a2ff8});if(_['isNil'](_0x343c56)){this[_0xbba0('0x14')][_0x4a6a62][_0xbba0('0x74')][_0xbba0('0x75')]({'filename':_0x1a2ff8,'createdAt':moment()[_0xbba0('0x3c')](_0xbba0('0x47')),'mixmonitorid':'','status':_0xbba0('0x76')});}}}catch(_0x20959a){logger[_0xbba0('0x5e')]('[%s][voiceCallReport][mixMonitorFilename]',_0x4a6a62,util[_0xbba0('0x2a')](_0x20959a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x1e')]=function(_0x38f988){try{if(this['isNotNull'](_0x38f988)){logger[_0xbba0('0x32')](_0xbba0('0x77'),_0x38f988[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x38f988,{'showHidden':![],'depth':null}));if(this[_0xbba0('0x14')][_0x38f988['uniqueid']]&&_0x38f988[_0xbba0('0x38')]!=_0xbba0('0x44')){if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')])){if(this['isNotNull'](_0x38f988[_0xbba0('0x78')]['mixmonitor_filename'])){logger[_0xbba0('0x27')](_0xbba0('0x79'),_0x38f988['uniqueid'],_0x38f988[_0xbba0('0x7a')]);this[_0xbba0('0x6c')](_0x38f988[_0xbba0('0x2f')],_0x38f988[_0xbba0('0x7a')]);}else if(this['isNotNull'](_0x38f988[_0xbba0('0x78')][_0xbba0('0x7b')])){logger['info'](_0xbba0('0x7c'),_0x38f988[_0xbba0('0x2f')],_0x38f988[_0xbba0('0x7a')]);this['channels'][_0x38f988[_0xbba0('0x2f')]][_0xbba0('0x31')]=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x7d')])){logger[_0xbba0('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x38f988['uniqueid'],_0x38f988[_0xbba0('0x7a')]);this[_0xbba0('0x14')][_0x38f988[_0xbba0('0x2f')]][_0xbba0('0x7e')]=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988['variable'][_0xbba0('0x7f')])){logger['info'](_0xbba0('0x80'),_0x38f988[_0xbba0('0x2f')],_0x38f988['value']);this[_0xbba0('0x14')][_0x38f988[_0xbba0('0x2f')]][_0xbba0('0x5c')]=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988['variable'][_0xbba0('0x81')])){logger[_0xbba0('0x27')](_0xbba0('0x82'),_0x38f988[_0xbba0('0x2f')],_0x38f988[_0xbba0('0x7a')]['split'](',')[0x0]);this['channels'][_0x38f988[_0xbba0('0x2f')]][_0xbba0('0x8')]=_0x38f988[_0xbba0('0x7a')][_0xbba0('0x39')](',')[0x0];}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x83')])){logger[_0xbba0('0x27')](_0xbba0('0x84'),_0x38f988[_0xbba0('0x2f')],_0x38f988[_0xbba0('0x7a')]);this[_0xbba0('0x14')][_0x38f988['uniqueid']][_0xbba0('0x85')]=_0x38f988[_0xbba0('0x7a')];}else if(this['isNotNull'](_0x38f988[_0xbba0('0x78')][_0xbba0('0x86')])){logger[_0xbba0('0x27')](_0xbba0('0x87'),_0x38f988[_0xbba0('0x2f')],_0x38f988['value']);this[_0xbba0('0x14')][_0x38f988[_0xbba0('0x2f')]]['destination']=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x88')])){logger[_0xbba0('0x27')](_0xbba0('0x89'),_0x38f988[_0xbba0('0x2f')],_0x38f988['value']);this[_0xbba0('0x14')][_0x38f988['uniqueid']]['calleridpreview']=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x8a')])){logger[_0xbba0('0x27')](_0xbba0('0x8b'),_0x38f988['uniqueid'],_0x38f988[_0xbba0('0x7a')]);this['channels'][_0x38f988[_0xbba0('0x2f')]][_0xbba0('0x8')]=_0x38f988[_0xbba0('0x7a')];}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x8c')])){logger[_0xbba0('0x27')](_0xbba0('0x8d'),_0x38f988[_0xbba0('0x2f')],_0x38f988[_0xbba0('0x7a')]);this[_0xbba0('0x14')][_0x38f988['uniqueid']][_0xbba0('0x8e')]=_0x38f988[_0xbba0('0x7a')];}}}else if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x8f')])){if(_0x38f988[_0xbba0('0x7a')]){var _0x2088fb=path[_0xbba0('0x90')](_0x38f988[_0xbba0('0x7a')])['name'];logger[_0xbba0('0x27')](_0xbba0('0x79'),_0x2088fb,_0x38f988[_0xbba0('0x7a')]);this[_0xbba0('0x6c')](_0x2088fb,_0x38f988[_0xbba0('0x7a')]);}}else if(this['channels'][_0x38f988[_0xbba0('0x33')]]){if(this['isNotNull'](_0x38f988[_0xbba0('0x78')])){if(this[_0xbba0('0x2c')](_0x38f988[_0xbba0('0x78')][_0xbba0('0x8c')])){logger[_0xbba0('0x27')](_0xbba0('0x8d'),_0x38f988[_0xbba0('0x33')],_0x38f988['value']);this[_0xbba0('0x14')][_0x38f988['linkedid']][_0xbba0('0x91')]=_0x38f988[_0xbba0('0x7a')];}}}}}catch(_0x16f824){logger['error'](_0xbba0('0x92'),_0x38f988['uniqueid'],util[_0xbba0('0x2a')](_0x16f824,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0x20')]=function(_0x3fdecb){try{if(this[_0xbba0('0x2c')](_0x3fdecb)){logger[_0xbba0('0x32')](_0xbba0('0x93'),_0x3fdecb['uniqueid'],util[_0xbba0('0x2a')](_0x3fdecb,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]]){if(this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]]){this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb['linkedid']][_0xbba0('0x33')]][_0xbba0('0x2f')]=_0x3fdecb['uniqueid'];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]][_0xbba0('0x61')]=this[_0xbba0('0x14')][_0x3fdecb['uniqueid']][_0xbba0('0x61')];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]][_0xbba0('0x67')]=this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x67')];this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]][_0xbba0('0x64')]=this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]]['linkedid']][_0xbba0('0x38')];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]][_0xbba0('0x55')]=this[_0xbba0('0x14')][_0x3fdecb['uniqueid']][_0xbba0('0x55')];this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]=this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]];delete this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x33')]];}else if(this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]]['uniqueid']]){this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]]['uniqueid']][_0xbba0('0x2f')]=[this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]]['linkedid'],this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]][_0xbba0('0x33')]=this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]][_0xbba0('0x2f')]][0x0];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]][_0xbba0('0x61')]=this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x61')];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]]['uniqueid']][_0xbba0('0x67')]=this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x67')];this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]]['uniqueid']][_0xbba0('0x64')]=this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb['linkedid']]['uniqueid']][_0xbba0('0x38')];this[_0xbba0('0x14')][this[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]][_0xbba0('0x55')]=this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]['disposition'];this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]=this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]][_0xbba0('0x2f')]];delete this[_0xbba0('0x14')][this['blindTransfers'][_0x3fdecb[_0xbba0('0x33')]]['uniqueid']];}}if(this[_0xbba0('0x14')][_0x3fdecb['uniqueid']]){logger['info'](_0xbba0('0x94'),_0x3fdecb[_0xbba0('0x2f')],_0x3fdecb[_0xbba0('0x95')]);var _0x1adafe=moment();this['channels'][_0x3fdecb['uniqueid']]['endtime']=_0x1adafe[_0xbba0('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x52')]=_0x1adafe[_0xbba0('0x68')](this['channels'][_0x3fdecb['uniqueid']][_0xbba0('0x46')],'seconds');if(this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]['answered']){this['channels'][_0x3fdecb['uniqueid']][_0xbba0('0x96')]=_0x1adafe['diff'](this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]['answertime'],'seconds');this['channels'][_0x3fdecb[_0xbba0('0x2f')]]['holdtime']=this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]['duration']-this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x96')];}if(_0x3fdecb[_0xbba0('0x45')]===_0xbba0('0x37')){if(this[_0xbba0('0x15')][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]){this['agents'][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]=_[_0xbba0('0x97')](this['agents'][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]],[_0xbba0('0x49')]);logger[_0xbba0('0x32')](_0xbba0('0x98'),_0x3fdecb[_0xbba0('0x2f')],util[_0xbba0('0x2a')]({'id':this[_0xbba0('0x15')][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x40')]},{'showHidden':![],'depth':null}));this[_0xbba0('0x2d')](util[_0xbba0('0x3c')]('user:%s',this[_0xbba0('0x15')][_0x3fdecb[_0xbba0('0x38')]['split']('-')[0x0]][_0xbba0('0x3e')]),_0xbba0('0x99'),{'id':this[_0xbba0('0x15')][_0x3fdecb['channel'][_0xbba0('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0xbba0('0x15')][_0x3fdecb[_0xbba0('0x38')][_0xbba0('0x39')]('-')[0x0]][_0xbba0('0x40')]});for(var _0x13f866=0x0;_0x13f866<Object[_0xbba0('0x36')](this[_0xbba0('0x15')])['length'];_0x13f866++){var _0x5d3313=Object[_0xbba0('0x36')](this[_0xbba0('0x15')])[_0x13f866];var _0x46d12a=this['agents'][_0x5d3313];if(_0x46d12a[_0xbba0('0x40')]===Number(_0x3fdecb[_0xbba0('0x41')])){this[_0xbba0('0x2d')](util[_0xbba0('0x3c')]('user:%s',_0x46d12a[_0xbba0('0x3e')]),_0xbba0('0x99'),{'id':_0x46d12a['id'],'destaccountcode':_0x46d12a['accountcode'],'transfer':this[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]['transferType']});break;}}}}var _0x4f147a=this;Promise[_0xbba0('0x9a')]()[_0xbba0('0x9b')](function(){var _0x407673=_0x4f147a[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]];if(typeof _0x407673[_0xbba0('0x9c')]===_0xbba0('0x9d'))return;if(_[_0xbba0('0x9e')](_0x407673['monitors']))return;return RpcSetting[_0xbba0('0x9f')]()[_0xbba0('0x9b')](function(_0x116869){if(!_0x116869[_0xbba0('0xa0')])return;return Promise[_0xbba0('0x9a')]()['then'](function(){return ami[_0xbba0('0xa1')]({'action':_0xbba0('0xa2'),'channel':_0x407673[_0xbba0('0x38')]})[_0xbba0('0xa3')](function(){});})[_0xbba0('0x9b')](function(){return ami[_0xbba0('0xa1')]({'action':'StopMixMonitor','channel':_0x407673[_0xbba0('0x64')]})[_0xbba0('0xa3')](function(){})[_0xbba0('0xa4')](function(){var _0x26b863=_0x4f147a[_0xbba0('0x15')][_0x407673[_0xbba0('0x64')][_0xbba0('0x39')]('-')[0x0]];if(!_0x26b863)return;io['emit'](_0xbba0('0xa5'),{'agentId':_0x26b863['id'],'uniqueid':_0x407673[_0xbba0('0x2f')]});});});});})[_0xbba0('0x9b')](function(){if(_0x3fdecb[_0xbba0('0xa6')]===_0xbba0('0xa7')){_0x4f147a[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x2f')]]=_0x3fdecb;}else{if(_0x4f147a[_0xbba0('0x14')][_0x3fdecb['uniqueid']][_0xbba0('0x5c')]===_0xbba0('0xa8')&&_0x4f147a[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x2f')]]){_0x4f147a[_0xbba0('0x14')][_0x3fdecb['uniqueid']][_0xbba0('0x2f')]=[_0x4f147a['channels'][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x33')],_0x4f147a['channels'][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x33')]=_0x4f147a[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]][_0xbba0('0x2f')]][0x0];delete _0x4f147a[_0xbba0('0x16')][_0x3fdecb[_0xbba0('0x2f')]];}}logger[_0xbba0('0x32')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x3fdecb[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x4f147a[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]],{'showHidden':![],'depth':null}));ami['emit'](_0xbba0('0xa9'),_0x4f147a[_0xbba0('0x14')][_0x3fdecb[_0xbba0('0x2f')]]);delete _0x4f147a[_0xbba0('0x14')][_0x3fdecb['uniqueid']];});}}}catch(_0x240371){logger[_0xbba0('0x5e')](_0xbba0('0xaa'),_0x3fdecb[_0xbba0('0x2f')],util['inspect'](_0x240371,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')][_0xbba0('0xab')]=function(_0x2874a8){try{if(this[_0xbba0('0x2c')](_0x2874a8)){logger[_0xbba0('0x27')](_0xbba0('0xac'),_0x2874a8[_0xbba0('0x2f')],_0x2874a8[_0xbba0('0xad')],_0x2874a8[_0xbba0('0xae')]);logger[_0xbba0('0x32')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x2874a8[_0xbba0('0x2f')],util['inspect'](_0x2874a8,{'showHidden':![],'depth':null}));var _0x21fa16;if(this['channels'][_0x2874a8[_0xbba0('0xaf')]]){this['channels'][_0x2874a8[_0xbba0('0xaf')]][_0xbba0('0xb0')]=_0x2874a8['origtransferercalleridnum'];this[_0xbba0('0x14')][_0x2874a8['transfereeuniqueid']]['transferconnectedlinenum']=_0x2874a8[_0xbba0('0xae')];if(this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb1')]]){_0x21fa16=this['channels'][_0x2874a8['secondtransfereruniqueid']];this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb1')]]=this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xaf')]];this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xaf')]]=_0x21fa16;}this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb1')]][_0xbba0('0x9c')]='ATTENDED';}else if(this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb2')]]){this['channels'][_0x2874a8['transfertargetuniqueid']][_0xbba0('0xb0')]=_0x2874a8[_0xbba0('0xad')];this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb2')]][_0xbba0('0xb3')]=_0x2874a8[_0xbba0('0xae')];if(this['channels'][_0x2874a8['origtransfereruniqueid']]){_0x21fa16=this[_0xbba0('0x14')][_0x2874a8['origtransfereruniqueid']];this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb4')]]=this[_0xbba0('0x14')][_0x2874a8['transfertargetuniqueid']];this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb2')]]=_0x21fa16;}this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb2')]][_0xbba0('0x9c')]=_0xbba0('0xb5');}if((this['channels'][_0x2874a8[_0xbba0('0xb4')]]||this['channels'][_0x2874a8[_0xbba0('0xb6')]])&&this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb1')]]){var _0x126e3f=_['some']([this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb4')]],this['channels'][_0x2874a8[_0xbba0('0xb6')]],this['channels'][_0x2874a8[_0xbba0('0xb1')]]],function(_0x2cc7c4){return _0x2cc7c4&&_0x2cc7c4[_0xbba0('0x5c')]===_0xbba0('0xa8')&&_0x2cc7c4[_0xbba0('0xb7')];});if(_0x126e3f){if(this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb4')]])this[_0xbba0('0x14')][_0x2874a8['origtransfereruniqueid']][_0xbba0('0x9c')]=_0xbba0('0xb5');if(this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb6')]])this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb6')]][_0xbba0('0x9c')]=_0xbba0('0xb5');this[_0xbba0('0x14')][_0x2874a8[_0xbba0('0xb1')]][_0xbba0('0x9c')]=_0xbba0('0xb5');}}}}catch(_0x4b7051){logger['error'](_0xbba0('0xb8'),_0x2874a8[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x4b7051,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xbba0('0x24')]=function(_0x7aca90){try{if(this['isNotNull'](_0x7aca90)){logger['info'](_0xbba0('0xb9'),_0x7aca90[_0xbba0('0x2f')],_0x7aca90[_0xbba0('0xba')],_0x7aca90[_0xbba0('0xbb')]);logger[_0xbba0('0x32')](_0xbba0('0xbc'),_0x7aca90[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x7aca90,{'showHidden':![],'depth':null}));if(this[_0xbba0('0x14')][_0x7aca90['transfereeuniqueid']]){this[_0xbba0('0x14')][_0x7aca90[_0xbba0('0xaf')]][_0xbba0('0xb0')]=_0x7aca90['transfereecalleridnum'];this[_0xbba0('0x14')][_0x7aca90['transfereeuniqueid']][_0xbba0('0xb3')]=_0x7aca90['extension'];this[_0xbba0('0x14')][_0x7aca90[_0xbba0('0xaf')]][_0xbba0('0x9c')]='BLIND';this[_0xbba0('0x20')]({'event':_0xbba0('0xa7'),'uniqueid':_0x7aca90['transfereeuniqueid'],'linkedid':_0x7aca90[_0xbba0('0xbd')],'context':_0x7aca90[_0xbba0('0x45')],'channel':_0x7aca90[_0xbba0('0xbe')]});}else{this['channels'][_0x7aca90[_0xbba0('0xbd')]][_0xbba0('0x9c')]=_0xbba0('0xbf');this[_0xbba0('0x20')]({'event':_0xbba0('0xa7'),'uniqueid':_0x7aca90[_0xbba0('0xbd')],'linkedid':_0x7aca90[_0xbba0('0xaf')],'context':_0x7aca90[_0xbba0('0x45')],'channel':_0x7aca90[_0xbba0('0xbe')]});}}}catch(_0x25f490){logger['error'](_0xbba0('0xc0'),_0x7aca90['uniqueid'],util['inspect'](_0x25f490,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')]['syncMusicOnHoldStart']=function(_0x454381){try{if(this[_0xbba0('0x2c')](_0x454381)){logger[_0xbba0('0x32')](_0xbba0('0xc1'),_0x454381[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x454381,{'showHidden':![],'depth':null}));if(this['channels'][_0x454381['uniqueid']]){if(!_[_0xbba0('0x5d')](this[_0xbba0('0x14')][_0x454381[_0xbba0('0x2f')]][_0xbba0('0x67')])){this[_0xbba0('0x14')][_0x454381[_0xbba0('0x2f')]][_0xbba0('0xc2')]=moment()[_0xbba0('0x3c')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xbba0('0x27')](_0xbba0('0xc3'),_0x454381[_0xbba0('0x2f')],this[_0xbba0('0x14')][_0x454381['uniqueid']][_0xbba0('0xc2')]);}}}}catch(_0x2d8163){logger['error'](_0xbba0('0xc4'),_0x454381[_0xbba0('0x2f')],util[_0xbba0('0x2a')](_0x2d8163,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xbba0('0x2b')]['syncMusicOnHoldStop']=function(_0x286ad8){try{if(this[_0xbba0('0x2c')](_0x286ad8)){logger[_0xbba0('0x32')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x286ad8['uniqueid'],util['inspect'](_0x286ad8,{'showHidden':![],'depth':null}));if(this['channels'][_0x286ad8[_0xbba0('0x2f')]]){if(!_[_0xbba0('0x5d')](this[_0xbba0('0x14')][_0x286ad8[_0xbba0('0x2f')]][_0xbba0('0xc2')])){this[_0xbba0('0x14')][_0x286ad8['uniqueid']][_0xbba0('0xc5')]+=moment()[_0xbba0('0xc6')](0x0)[_0xbba0('0x68')](this[_0xbba0('0x14')][_0x286ad8[_0xbba0('0x2f')]][_0xbba0('0xc2')],_0xbba0('0x54'));logger['info'](_0xbba0('0xc7'),_0x286ad8[_0xbba0('0x2f')],this[_0xbba0('0x14')][_0x286ad8[_0xbba0('0x2f')]][_0xbba0('0xc5')]);delete this[_0xbba0('0x14')][_0x286ad8['uniqueid']][_0xbba0('0xc2')];}}}}catch(_0x33e891){logger['error'](_0xbba0('0xc8'),_0x286ad8['uniqueid'],util[_0xbba0('0x2a')](_0x33e891,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index f17267a..6d5e123 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e2b=['../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','varset','syncVarSet','syncHangup','isNotNull','prototype','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','substring','omit','event','interface','debug','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','inspect','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','outboundrouteid','isUndefined','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','duration','endtime','diff','seconds','complete','total','answered','holdtime','starttime','billableseconds','sumHoldTime','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','match','exports','lodash','moment','util','ioredis'];(function(_0x17c4c0,_0x9f0ea2){var _0x59e09e=function(_0x5279c0){while(--_0x5279c0){_0x17c4c0['push'](_0x17c4c0['shift']());}};_0x59e09e(++_0x9f0ea2);}(_0x9e2b,0x73));var _0xb9e2=function(_0x4af8ce,_0x1a58f2){_0x4af8ce=_0x4af8ce-0x0;var _0x39deee=_0x9e2b[_0x4af8ce];return _0x39deee;};'use strict';var _=require(_0xb9e2('0x0'));var moment=require(_0xb9e2('0x1'));var util=require(_0xb9e2('0x2'));var Redis=require(_0xb9e2('0x3'));var config=require('../../../config/environment');var logger=require(_0xb9e2('0x4'))(_0xb9e2('0x5'));var ami=require(_0xb9e2('0x6'));config[_0xb9e2('0x7')]=_[_0xb9e2('0x8')](config['redis'],{'host':_0xb9e2('0x9'),'port':0x18eb});var io=require(_0xb9e2('0xa'))(new Redis(config[_0xb9e2('0x7')]));function VoiceDialReport(_0x201ad2){this[_0xb9e2('0xb')]=_0x201ad2[_0xb9e2('0xc')];this[_0xb9e2('0xd')]=_0x201ad2[_0xb9e2('0xd')];this['applications']={};this[_0xb9e2('0xe')]={};ami['on'](_0xb9e2('0xf'),this[_0xb9e2('0x10')][_0xb9e2('0x11')](this));ami['on'](_0xb9e2('0x12'),this['syncDialEnd'][_0xb9e2('0x11')](this));ami['on'](_0xb9e2('0x13'),this[_0xb9e2('0x14')][_0xb9e2('0x11')](this));ami['on']('newexten',this['syncNewExten'][_0xb9e2('0x11')](this));ami['on']('hangup',this[_0xb9e2('0x15')][_0xb9e2('0x11')](this));}VoiceDialReport['prototype'][_0xb9e2('0x16')]=function(_0x32ec6d){return _0x32ec6d!==null&&!_['isUndefined'](_0x32ec6d);};VoiceDialReport[_0xb9e2('0x17')][_0xb9e2('0x18')]=function(_0xbc5a78,_0x3a2e41,_0x1c6fe9){io['to'](_0xbc5a78)[_0xb9e2('0x18')](_0x3a2e41,_0x1c6fe9);};VoiceDialReport[_0xb9e2('0x17')][_0xb9e2('0x10')]=function(_0xf570ff){try{if(this['isNotNull'](_0xf570ff)){logger['debug'](_0xb9e2('0x19'),_0xf570ff['uniqueid'],util['inspect'](_0xf570ff,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]){_[_0xb9e2('0x1b')](this[_0xb9e2('0xb')][_0xf570ff['uniqueid']],{'starttime':moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d')),'lastevent':_0xb9e2('0x1e'),'interface':_0xf570ff[_0xb9e2('0x1f')]['substring'](0x0,_0xf570ff['channel'][_0xb9e2('0x20')]('-')),'membername':_0xf570ff[_0xb9e2('0x1f')][_0xb9e2('0x21')](_0xf570ff[_0xb9e2('0x1f')][_0xb9e2('0x20')]('/')+0x1,_0xf570ff[_0xb9e2('0x1f')]['lastIndexOf']('-'))},_[_0xb9e2('0x22')](_0xf570ff,[_0xb9e2('0x23'),'privilege']));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0xf570ff[_0xb9e2('0x1a')],this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]['membername'],this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]][_0xb9e2('0x24')]);logger[_0xb9e2('0x25')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0xf570ff['uniqueid'],util['inspect'](this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0xb9e2('0x26')][_0xf570ff[_0xb9e2('0x1a')]])_[_0xb9e2('0x1b')](this['channels'][_0xf570ff[_0xb9e2('0x1a')]],this[_0xb9e2('0x26')][_0xf570ff[_0xb9e2('0x1a')]]);this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0xf570ff['uniqueid']]);logger[_0xb9e2('0x25')](_0xb9e2('0x29'),_0xf570ff['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')]('custom:dialbegin',this[_0xb9e2('0xb')][_0xf570ff[_0xb9e2('0x1a')]]);}}}catch(_0x2066a6){logger['error'](_0xb9e2('0x2b'),_0xf570ff[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x2066a6,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x40f718){try{if(this['isNotNull'](_0x40f718)){logger['debug'](_0xb9e2('0x2c'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x40f718,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]){this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]['dialstatus']=_0x40f718[_0xb9e2('0x2d')];if(_0x40f718[_0xb9e2('0x2d')]==='ANSWER'){this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]['connectedlinenum']=_0x40f718[_0xb9e2('0x2e')];this[_0xb9e2('0xb')][_0x40f718['uniqueid']][_0xb9e2('0x2f')]=_0x40f718[_0xb9e2('0x2f')];this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]][_0xb9e2('0x30')]=moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d'));this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]][_0xb9e2('0x31')]=_0xb9e2('0x32');logger[_0xb9e2('0x33')](_0xb9e2('0x34'),_0x40f718[_0xb9e2('0x1a')],_0x40f718[_0xb9e2('0x1f')]['substring'](_0x40f718['channel'][_0xb9e2('0x20')]('/')+0x1,_0x40f718['channel'][_0xb9e2('0x20')]('-')));logger[_0xb9e2('0x25')](_0xb9e2('0x35'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')](_0xb9e2('0x36'),this[_0xb9e2('0xb')][_0x40f718['uniqueid']]);}logger['debug'](_0xb9e2('0x37'),_0x40f718[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0x40f718[_0xb9e2('0x1a')]]);}}}catch(_0xe7a90a){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][dialend]',_0x40f718[_0xb9e2('0x1a')],util['inspect'](_0xe7a90a,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb9e2('0x14')]=function(_0x4ad446){try{if(this[_0xb9e2('0x16')](_0x4ad446)){logger[_0xb9e2('0x25')](_0xb9e2('0x39'),_0x4ad446[_0xb9e2('0x1a')],util['inspect'](_0x4ad446,{'showHidden':![],'depth':null}));this['addVariable'](_0x4ad446[_0xb9e2('0x1a')],_[_0xb9e2('0x3a')](_0x4ad446[_0xb9e2('0x3b')])[0x0],_0x4ad446[_0xb9e2('0x3c')]);if(this[_0xb9e2('0x16')](_0x4ad446[_0xb9e2('0x3b')])&&this[_0xb9e2('0x16')](_0x4ad446[_0xb9e2('0x3b')][_0xb9e2('0x3d')])){if(_[_0xb9e2('0x3e')](this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]])){this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]]={'routeId':_0x4ad446[_0xb9e2('0x3c')],'variables':this[_0xb9e2('0xe')][_0x4ad446[_0xb9e2('0x1a')]],'motionChannel':_0xb9e2('0x3f')};logger['info'](_0xb9e2('0x40'),_0x4ad446[_0xb9e2('0x1a')],_0x4ad446[_0xb9e2('0x3b')]['outboundrouteid'],_[_0xb9e2('0x3a')](_0x4ad446[_0xb9e2('0x3b')])[0x0],_0x4ad446[_0xb9e2('0x3c')]);logger[_0xb9e2('0x25')](_0xb9e2('0x41'),_0x4ad446['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x28'),this[_0xb9e2('0xb')][_0x4ad446[_0xb9e2('0x1a')]]);}}}}catch(_0x344379){logger[_0xb9e2('0x38')](_0xb9e2('0x42'),_0x4ad446[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x344379,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb9e2('0x43')]=function(_0x450f70,_0x4f2573,_0x5356fc){var _0x534d32=[_0xb9e2('0x44'),_0xb9e2('0x45'),_0xb9e2('0x46'),'rtpaudioqosjitterbridged',_0xb9e2('0x47'),_0xb9e2('0x48'),_0xb9e2('0x49'),_0xb9e2('0x4a'),_0xb9e2('0x4b'),'sipuri',_0xb9e2('0x4c'),_0xb9e2('0x4d'),_0xb9e2('0x4e'),_0xb9e2('0x4f'),_0xb9e2('0x50'),_0xb9e2('0x51'),_0xb9e2('0x52'),'memberpenalty',_0xb9e2('0x53')];if(!_[_0xb9e2('0x54')](_0x4f2573)&&!_[_0xb9e2('0x55')](_0x534d32,_0x4f2573)){if(_[_0xb9e2('0x3e')](this['variables'][_0x450f70])){this[_0xb9e2('0xe')][_0x450f70]={};}this[_0xb9e2('0xe')][_0x450f70][_0x4f2573]=_0x5356fc;}};VoiceDialReport['prototype'][_0xb9e2('0x15')]=function(_0x304095){try{if(this[_0xb9e2('0x16')](_0x304095)){logger[_0xb9e2('0x25')](_0xb9e2('0x56'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x304095,{'showHidden':![],'depth':null}));if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]){logger[_0xb9e2('0x33')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x304095[_0xb9e2('0x1a')],_0x304095[_0xb9e2('0x57')]);this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]['endtime']=moment()[_0xb9e2('0x1c')](_0xb9e2('0x1d'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x58')]=moment(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x59')])[_0xb9e2('0x5a')](this[_0xb9e2('0xb')][_0x304095['uniqueid']]['starttime'],_0xb9e2('0x5b'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x31')]=_0xb9e2('0x5c');this[_0xb9e2('0xd')][_0xb9e2('0x5d')]+=0x1;if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]['answertime']){this[_0xb9e2('0xd')][_0xb9e2('0x5e')]+=0x1;this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x5f')]=moment(this['channels'][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x30')])[_0xb9e2('0x5a')](this['channels'][_0x304095['uniqueid']][_0xb9e2('0x60')],_0xb9e2('0x5b'));this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x61')]=moment(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x59')])['diff'](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x30')],_0xb9e2('0x5b'));this[_0xb9e2('0xd')][_0xb9e2('0x62')]+=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x5f')]||0x0;this[_0xb9e2('0xd')]['sumBillable']+=this['channels'][_0x304095[_0xb9e2('0x1a')]]['billableseconds'];}this['outbound'][_0xb9e2('0x63')]+=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]][_0xb9e2('0x58')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x304095['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb9e2('0x64'),this[_0xb9e2('0xb')][_0x304095['uniqueid']]);logger[_0xb9e2('0x25')](_0xb9e2('0x65'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xb9e2('0x18')](_0xb9e2('0x66'),this['channels'][_0x304095[_0xb9e2('0x1a')]]);logger[_0xb9e2('0x25')](_0xb9e2('0x67'),_0x304095['uniqueid'],util[_0xb9e2('0x2a')](this[_0xb9e2('0xb')][_0x304095['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xb9e2('0x27'),_0xb9e2('0x68'),this[_0xb9e2('0xd')]);logger[_0xb9e2('0x33')](_0xb9e2('0x69'),JSON[_0xb9e2('0x6a')](this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]]));logger['debug'](_0xb9e2('0x6b'),_0x304095[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](this['channels'][_0x304095[_0xb9e2('0x1a')]],{'showHidden':![],'depth':null}));this[_0xb9e2('0x18')](_0xb9e2('0x27'),_0xb9e2('0x6c'),this['channels'][_0x304095[_0xb9e2('0x1a')]]);delete this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x1a')]];}else if(this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]]){this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]][_0xb9e2('0x1a')]=this[_0xb9e2('0xb')][_0x304095[_0xb9e2('0x6d')]][_0xb9e2('0x6e')];}if(this[_0xb9e2('0xe')][_0x304095['uniqueid']]){delete this[_0xb9e2('0xe')][_0x304095[_0xb9e2('0x1a')]];}}}catch(_0x285990){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][hangup]',_0x304095[_0xb9e2('0x1a')],util['inspect'](_0x285990,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb9e2('0x17')]['syncNewExten']=function(_0x2c482e){try{if(this[_0xb9e2('0x16')](_0x2c482e)){logger[_0xb9e2('0x25')](_0xb9e2('0x6f'),_0x2c482e[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x2c482e,{'showHidden':![],'depth':null}));if(_0x2c482e[_0xb9e2('0x70')][_0xb9e2('0x71')]()==='set'){_0x2c482e[_0xb9e2('0x72')]=(_0x2c482e[_0xb9e2('0x73')]||_0x2c482e[_0xb9e2('0x72')])[_0xb9e2('0x71')]();if(_[_0xb9e2('0x74')](_0x2c482e['applicationdata'],'cdr(')){if(_[_0xb9e2('0x3e')](this['applications'][_0x2c482e[_0xb9e2('0x1a')]]))this['applications'][_0x2c482e[_0xb9e2('0x1a')]]={};logger[_0xb9e2('0x33')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x2c482e['uniqueid'],_0x2c482e['application'],_0x2c482e['applicationdata']);var _0x3c1114=_0x2c482e['applicationdata']['split']('=');var _0x465f7b=_0x3c1114[0x0][_0xb9e2('0x75')](/cdr\((.*)\)/);if(_0x465f7b)this[_0xb9e2('0x26')][_0x2c482e[_0xb9e2('0x1a')]][_0x465f7b[0x1]]=_0x3c1114[0x1];}}}}catch(_0x5aef27){logger[_0xb9e2('0x38')]('[%s][voiceDialReport][newexten]',_0x2c482e[_0xb9e2('0x1a')],util[_0xb9e2('0x2a')](_0x5aef27,{'showHidden':![],'depth':null}));}};module[_0xb9e2('0x76')]=VoiceDialReport;
\ No newline at end of file
+var _0x907d=['voice_outbound:save','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','applications','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','hangup','prototype','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','format','called','substring','channel','lastIndexOf','event','privilege','info','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','merge','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','isNotNull','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinename','answertime','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','includes','variables','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','duration','endtime','diff','starttime','seconds','complete','total','answered','holdtime','sumBillable','billableseconds','sumDuration','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x907d,0x8c));var _0xd907=function(_0x16e0c8,_0x4861eb){_0x16e0c8=_0x16e0c8-0x0;var _0xe4b5af=_0x907d[_0x16e0c8];return _0xe4b5af;};'use strict';var _=require(_0xd907('0x0'));var moment=require(_0xd907('0x1'));var util=require(_0xd907('0x2'));var Redis=require(_0xd907('0x3'));var config=require(_0xd907('0x4'));var logger=require(_0xd907('0x5'))(_0xd907('0x6'));var ami=require(_0xd907('0x7'));config[_0xd907('0x8')]=_['defaults'](config[_0xd907('0x8')],{'host':_0xd907('0x9'),'port':0x18eb});var io=require(_0xd907('0xa'))(new Redis(config[_0xd907('0x8')]));function VoiceDialReport(_0x2d0771){this[_0xd907('0xb')]=_0x2d0771[_0xd907('0xc')];this['outbound']=_0x2d0771[_0xd907('0xd')];this['applications']={};this['variables']={};ami['on'](_0xd907('0xe'),this[_0xd907('0xf')][_0xd907('0x10')](this));ami['on'](_0xd907('0x11'),this[_0xd907('0x12')][_0xd907('0x10')](this));ami['on'](_0xd907('0x13'),this[_0xd907('0x14')]['bind'](this));ami['on'](_0xd907('0x15'),this[_0xd907('0x16')][_0xd907('0x10')](this));ami['on'](_0xd907('0x17'),this['syncHangup']['bind'](this));}VoiceDialReport[_0xd907('0x18')]['isNotNull']=function(_0x44e8e9){return _0x44e8e9!==null&&!_[_0xd907('0x19')](_0x44e8e9);};VoiceDialReport[_0xd907('0x18')][_0xd907('0x1a')]=function(_0x492ebd,_0x20a9de,_0x32e8aa){io['to'](_0x492ebd)[_0xd907('0x1a')](_0x20a9de,_0x32e8aa);};VoiceDialReport[_0xd907('0x18')]['syncDialBegin']=function(_0x1ad075){try{if(this['isNotNull'](_0x1ad075)){logger[_0xd907('0x1b')](_0xd907('0x1c'),_0x1ad075[_0xd907('0x1d')],util['inspect'](_0x1ad075,{'showHidden':![],'depth':null}));if(this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]]){_['merge'](this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]],{'starttime':moment()[_0xd907('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xd907('0x1f'),'interface':_0x1ad075['channel'][_0xd907('0x20')](0x0,_0x1ad075[_0xd907('0x21')][_0xd907('0x22')]('-')),'membername':_0x1ad075['channel'][_0xd907('0x20')](_0x1ad075[_0xd907('0x21')]['lastIndexOf']('/')+0x1,_0x1ad075[_0xd907('0x21')][_0xd907('0x22')]('-'))},_['omit'](_0x1ad075,[_0xd907('0x23'),_0xd907('0x24')]));logger[_0xd907('0x25')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x1ad075['uniqueid'],this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]][_0xd907('0x26')],this[_0xd907('0xb')][_0x1ad075['uniqueid']]['interface']);logger[_0xd907('0x1b')](_0xd907('0x27'),_0x1ad075[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x1ad075['uniqueid']])_[_0xd907('0x29')](this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]],this['applications'][_0x1ad075['uniqueid']]);this[_0xd907('0x1a')](_0xd907('0x2a'),_0xd907('0x2b'),this['channels'][_0x1ad075[_0xd907('0x1d')]]);logger[_0xd907('0x1b')](_0xd907('0x2c'),_0x1ad075[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xd907('0x1a')](_0xd907('0x2d'),this[_0xd907('0xb')][_0x1ad075[_0xd907('0x1d')]]);}}}catch(_0x488c7d){logger[_0xd907('0x2e')](_0xd907('0x2f'),_0x1ad075[_0xd907('0x1d')],util[_0xd907('0x28')](_0x488c7d,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xd907('0x12')]=function(_0x45e972){try{if(this[_0xd907('0x30')](_0x45e972)){logger['debug'](_0xd907('0x31'),_0x45e972[_0xd907('0x1d')],util[_0xd907('0x28')](_0x45e972,{'showHidden':![],'depth':null}));if(this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]]){this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]][_0xd907('0x32')]=_0x45e972['dialstatus'];if(_0x45e972[_0xd907('0x32')]===_0xd907('0x33')){this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]]['connectedlinenum']=_0x45e972['connectedlinenum'];this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]][_0xd907('0x34')]=_0x45e972[_0xd907('0x34')];this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]][_0xd907('0x35')]=moment()['format'](_0xd907('0x36'));this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]][_0xd907('0x37')]=_0xd907('0x38');logger[_0xd907('0x25')](_0xd907('0x39'),_0x45e972[_0xd907('0x1d')],_0x45e972[_0xd907('0x21')][_0xd907('0x20')](_0x45e972['channel'][_0xd907('0x22')]('/')+0x1,_0x45e972[_0xd907('0x21')]['lastIndexOf']('-')));logger[_0xd907('0x1b')](_0xd907('0x3a'),_0x45e972[_0xd907('0x1d')],util['inspect'](this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xd907('0x1a')](_0xd907('0x3b'),this['channels'][_0x45e972[_0xd907('0x1d')]]);}logger[_0xd907('0x1b')](_0xd907('0x3c'),_0x45e972[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x45e972[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));this[_0xd907('0x1a')](_0xd907('0x2a'),_0xd907('0x2b'),this['channels'][_0x45e972[_0xd907('0x1d')]]);}}}catch(_0x37c0a1){logger[_0xd907('0x2e')](_0xd907('0x3d'),_0x45e972[_0xd907('0x1d')],util[_0xd907('0x28')](_0x37c0a1,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd907('0x18')][_0xd907('0x14')]=function(_0x5540fc){try{if(this[_0xd907('0x30')](_0x5540fc)){logger['debug'](_0xd907('0x3e'),_0x5540fc[_0xd907('0x1d')],util['inspect'](_0x5540fc,{'showHidden':![],'depth':null}));this['addVariable'](_0x5540fc[_0xd907('0x1d')],_[_0xd907('0x3f')](_0x5540fc['variable'])[0x0],_0x5540fc['value']);if(this[_0xd907('0x30')](_0x5540fc['variable'])&&this[_0xd907('0x30')](_0x5540fc[_0xd907('0x40')]['outboundrouteid'])){if(_[_0xd907('0x19')](this[_0xd907('0xb')][_0x5540fc['uniqueid']])){this[_0xd907('0xb')][_0x5540fc['uniqueid']]={'routeId':_0x5540fc[_0xd907('0x41')],'variables':this['variables'][_0x5540fc['uniqueid']],'motionChannel':_0xd907('0x42')};logger[_0xd907('0x25')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x5540fc[_0xd907('0x1d')],_0x5540fc['variable']['outboundrouteid'],_[_0xd907('0x3f')](_0x5540fc[_0xd907('0x40')])[0x0],_0x5540fc[_0xd907('0x41')]);logger['debug'](_0xd907('0x43'),_0x5540fc[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x5540fc[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));this[_0xd907('0x1a')](_0xd907('0x2a'),_0xd907('0x2b'),this[_0xd907('0xb')][_0x5540fc[_0xd907('0x1d')]]);}}}}catch(_0x5e9dd8){logger[_0xd907('0x2e')](_0xd907('0x44'),_0x5540fc[_0xd907('0x1d')],util[_0xd907('0x28')](_0x5e9dd8,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['addVariable']=function(_0x84009e,_0xc047dd,_0x44a8e8){var _0x1a2dbf=[_0xd907('0x45'),_0xd907('0x46'),_0xd907('0x47'),_0xd907('0x48'),_0xd907('0x49'),_0xd907('0x4a'),_0xd907('0x4b'),'rtpaudioqosrttbridged',_0xd907('0x4c'),_0xd907('0x4d'),_0xd907('0x4e'),'bridgepvtcallid',_0xd907('0x4f'),_0xd907('0x50'),_0xd907('0x51'),_0xd907('0x52'),_0xd907('0x26'),'memberpenalty',_0xd907('0x53')];if(!_['isNil'](_0xc047dd)&&!_[_0xd907('0x54')](_0x1a2dbf,_0xc047dd)){if(_['isUndefined'](this['variables'][_0x84009e])){this[_0xd907('0x55')][_0x84009e]={};}this[_0xd907('0x55')][_0x84009e][_0xc047dd]=_0x44a8e8;}};VoiceDialReport[_0xd907('0x18')]['syncHangup']=function(_0x2ed6ae){try{if(this[_0xd907('0x30')](_0x2ed6ae)){logger[_0xd907('0x1b')](_0xd907('0x56'),_0x2ed6ae[_0xd907('0x1d')],util[_0xd907('0x28')](_0x2ed6ae,{'showHidden':![],'depth':null}));if(this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]){logger[_0xd907('0x25')](_0xd907('0x57'),_0x2ed6ae['uniqueid'],_0x2ed6ae[_0xd907('0x58')]);this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]['endtime']=moment()['format'](_0xd907('0x36'));this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x59')]=moment(this['channels'][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x5a')])[_0xd907('0x5b')](this[_0xd907('0xb')][_0x2ed6ae['uniqueid']][_0xd907('0x5c')],_0xd907('0x5d'));this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x37')]=_0xd907('0x5e');this[_0xd907('0xd')][_0xd907('0x5f')]+=0x1;if(this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x35')]){this['outbound'][_0xd907('0x60')]+=0x1;this[_0xd907('0xb')][_0x2ed6ae['uniqueid']][_0xd907('0x61')]=moment(this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x35')])[_0xd907('0x5b')](this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x5c')],_0xd907('0x5d'));this[_0xd907('0xb')][_0x2ed6ae['uniqueid']]['billableseconds']=moment(this[_0xd907('0xb')][_0x2ed6ae['uniqueid']][_0xd907('0x5a')])[_0xd907('0x5b')](this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]['answertime'],_0xd907('0x5d'));this[_0xd907('0xd')]['sumHoldTime']+=this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x61')]||0x0;this[_0xd907('0xd')][_0xd907('0x62')]+=this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x63')];}this[_0xd907('0xd')][_0xd907('0x64')]+=this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]][_0xd907('0x59')];logger[_0xd907('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x2ed6ae[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));ami['emit'](_0xd907('0x65'),this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]);logger[_0xd907('0x1b')](_0xd907('0x66'),_0x2ed6ae[_0xd907('0x1d')],util[_0xd907('0x28')](this[_0xd907('0xb')][_0x2ed6ae['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xd907('0x1a')](_0xd907('0x67'),this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]);logger[_0xd907('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x2ed6ae[_0xd907('0x1d')],util['inspect'](this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]],{'showHidden':![],'depth':null}));this[_0xd907('0x1a')]('voice:outbound',_0xd907('0x68'),this[_0xd907('0xd')]);logger[_0xd907('0x25')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON['stringify'](this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]));logger['debug'](_0xd907('0x69'),_0x2ed6ae['uniqueid'],util['inspect'](this['channels'][_0x2ed6ae['uniqueid']],{'showHidden':![],'depth':null}));this[_0xd907('0x1a')]('voice:outbound',_0xd907('0x6a'),this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]]);delete this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x1d')]];}else if(this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x6b')]]){this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x6b')]][_0xd907('0x1d')]=this[_0xd907('0xb')][_0x2ed6ae[_0xd907('0x6b')]][_0xd907('0x6c')];}if(this[_0xd907('0x55')][_0x2ed6ae[_0xd907('0x1d')]]){delete this[_0xd907('0x55')][_0x2ed6ae[_0xd907('0x1d')]];}}}catch(_0x799a36){logger[_0xd907('0x2e')](_0xd907('0x6d'),_0x2ed6ae['uniqueid'],util[_0xd907('0x28')](_0x799a36,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xd907('0x16')]=function(_0x405006){try{if(this[_0xd907('0x30')](_0x405006)){logger[_0xd907('0x1b')](_0xd907('0x6e'),_0x405006[_0xd907('0x1d')],util[_0xd907('0x28')](_0x405006,{'showHidden':![],'depth':null}));if(_0x405006[_0xd907('0x6f')][_0xd907('0x70')]()===_0xd907('0x71')){_0x405006[_0xd907('0x72')]=(_0x405006[_0xd907('0x73')]||_0x405006[_0xd907('0x72')])[_0xd907('0x70')]();if(_[_0xd907('0x74')](_0x405006[_0xd907('0x72')],'cdr(')){if(_['isUndefined'](this[_0xd907('0x75')][_0x405006[_0xd907('0x1d')]]))this[_0xd907('0x75')][_0x405006[_0xd907('0x1d')]]={};logger[_0xd907('0x25')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x405006[_0xd907('0x1d')],_0x405006[_0xd907('0x6f')],_0x405006['applicationdata']);var _0x4324ff=_0x405006[_0xd907('0x72')][_0xd907('0x76')]('=');var _0x6ad118=_0x4324ff[0x0][_0xd907('0x77')](/cdr\((.*)\)/);if(_0x6ad118)this[_0xd907('0x75')][_0x405006[_0xd907('0x1d')]][_0x6ad118[0x1]]=_0x4324ff[0x1];}}}}catch(_0xf07c80){logger[_0xd907('0x2e')](_0xd907('0x78'),_0x405006[_0xd907('0x1d')],util[_0xd907('0x28')](_0xf07c80,{'showHidden':![],'depth':null}));}};module[_0xd907('0x79')]=VoiceDialReport;
\ No newline at end of file
index f494dc6..cd31e19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97df=['[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','syncAgentConnect','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexit','transfer','reason','COMPLETED','startsWith','channel','toLowerCase','linkedid','queuecallerexitAt','queuecallerjoinAt','add','seconds','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','queuecallerleaveAt','custom:timeout','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberpenalty','includes','length','unmanaged','diff','milliseconds','total','queuecallercomplete','answered','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','emitVoiceQueueSummary','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','ATTENDEDTRANSFER','ATTENDED','secondtransfereruniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash','util','md5','../../../config/environment','../model/queueReport','defaults','redis','localhost','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','varset','hangup','syncHangup','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','clearZombieChannels','isNil','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','[%s][voiceQueueReport][checkQueueReport]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','voice:queue:%s','name','voice_queue_channel:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','format','voice_queue_channel:remove','voice_queue_presence:remove','available','sumBillable','sumDuration','sumHoldTime','talking','type','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','loopQueueSummary','then','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedIn','loggedin','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason'];(function(_0x229e6c,_0x20ff2c){var _0x122364=function(_0x17aa9a){while(--_0x17aa9a){_0x229e6c['push'](_0x229e6c['shift']());}};_0x122364(++_0x20ff2c);}(_0x97df,0x151));var _0xf97d=function(_0x4d1ee9,_0x394a78){_0x4d1ee9=_0x4d1ee9-0x0;var _0x9a5456=_0x97df[_0x4d1ee9];return _0x9a5456;};'use strict';var _=require(_0xf97d('0x0'));var moment=require('moment');var util=require(_0xf97d('0x1'));var md5=require(_0xf97d('0x2'));var Redis=require('ioredis');var config=require(_0xf97d('0x3'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0xf97d('0x4'));config['redis']=_[_0xf97d('0x5')](config[_0xf97d('0x6')],{'host':_0xf97d('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf97d('0x6')]));var Sequence=function(){};Sequence[_0xf97d('0x8')][_0xf97d('0x9')]=function(_0x3661b3){this['tail']=this[_0xf97d('0xa')]?this[_0xf97d('0xa')][_0xf97d('0xb')](_0x3661b3):_0x3661b3();};function VoiceQueueReport(_0x15e394){this[_0xf97d('0xc')]=new Sequence();this[_0xf97d('0xd')]={};this[_0xf97d('0xe')]=_0x15e394[_0xf97d('0xe')];this[_0xf97d('0xf')]=_0x15e394[_0xf97d('0x10')];this[_0xf97d('0x11')]=_0x15e394[_0xf97d('0x11')];this[_0xf97d('0x12')]=!![];this[_0xf97d('0x13')]=_0x15e394[_0xf97d('0x13')];this[_0xf97d('0x14')]={};ami['on'](_0xf97d('0x15'),this[_0xf97d('0x16')][_0xf97d('0x17')](this));ami['on']('queuesummarycomplete',this[_0xf97d('0x18')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x19'),this[_0xf97d('0x1a')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x1b'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0xf97d('0x1c'),this[_0xf97d('0x1d')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x1e'),this[_0xf97d('0x1f')][_0xf97d('0x17')](this));ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0xf97d('0x20'),this['syncVarSet']['bind'](this));ami['on'](_0xf97d('0x21'),this[_0xf97d('0x22')]['bind'](this));ami['on']('fullybooted',this['syncFullyBooted']['bind'](this));ami['on'](_0xf97d('0x23'),this[_0xf97d('0x24')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x25'),this[_0xf97d('0x26')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x27'),this[_0xf97d('0x28')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x29'),this[_0xf97d('0x2a')][_0xf97d('0x17')](this));ami['on'](_0xf97d('0x2b'),this[_0xf97d('0x2c')]['bind'](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x1f6804){if(!_[_0xf97d('0x2d')](_0x1f6804)){for(var _0x12aa4a in _0x1f6804){if(_0x1f6804['hasOwnProperty'](_0x12aa4a)){delete _0x1f6804[_0x12aa4a];}}}}function clearCampaigns(_0x4b5a){if(!_[_0xf97d('0x2d')](_0x4b5a)){for(var _0x2ea3d6 in _0x4b5a){if(_0x4b5a[_0xf97d('0x2e')](_0x2ea3d6)){_0x4b5a[_0x2ea3d6][_0xf97d('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x51b410){if(!_['isEmpty'](_0x51b410)){for(var _0x2808ab in _0x51b410){if(_0x51b410['hasOwnProperty'](_0x2808ab)){_0x51b410[_0x2808ab][_0xf97d('0x2f')]=0x0;_0x51b410[_0x2808ab]['talking']=0x0;_0x51b410[_0x2808ab][_0xf97d('0x30')]=0x0;_0x51b410[_0x2808ab][_0xf97d('0x31')]=0x0;_0x51b410[_0x2808ab][_0xf97d('0x32')]=!![];}}}}function clearAgentBooked(_0x5d3fda){if(!_[_0xf97d('0x2d')](_0x5d3fda)){for(var _0x1b983f in _0x5d3fda){if(_0x5d3fda['hasOwnProperty'](_0x1b983f)){_0x5d3fda[_0x1b983f]['unlockRR']=!![];}}}}VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x33')]=function(){var _0x252cee=this;for(var _0x36afd0 in this[_0xf97d('0xf')]){if(this[_0xf97d('0xf')][_0xf97d('0x2e')](_0x36afd0)&&!this['channels'][_0x36afd0]['switch']){this[_0xf97d('0xc')][_0xf97d('0x9')](function(){if(!_[_0xf97d('0x34')](_0x252cee[_0xf97d('0xf')][_0x36afd0])){return ami[_0xf97d('0x35')]({'action':_0xf97d('0x36'),'channel':_0x252cee[_0xf97d('0xf')][_0x36afd0]['channel']})[_0xf97d('0x37')](function(_0x1d8cc2){if(_0x1d8cc2[_0xf97d('0x38')]===_0xf97d('0x39')){setTimeout(function(){if(_0x252cee[_0xf97d('0xf')][_0x36afd0]){delete _0x252cee['channels'][_0x36afd0];logger['error'](_0xf97d('0x3a'),_0x36afd0,util[_0xf97d('0x3b')](_0x1d8cc2,{'showHidden':![],'depth':null}));}if(_0x252cee[_0xf97d('0xd')][_0x36afd0]){delete _0x252cee['queueReports'][_0x36afd0];logger[_0xf97d('0x3c')](_0xf97d('0x3d'),_0x36afd0,util['inspect'](_0x1d8cc2,{'showHidden':![],'depth':null}));}if(_0x252cee[_0xf97d('0x14')][_0x36afd0]){delete _0x252cee['variables'][_0x36afd0];logger[_0xf97d('0x3c')]('[%s][voiceQueueReport][checkVariables]',_0x36afd0,util[_0xf97d('0x3b')](_0x1d8cc2,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xf97d('0x8')]['syncFullyBooted']=function(){logger[_0xf97d('0x3c')](_0xf97d('0x3e'));clearChannels(this['channels']);this[_0xf97d('0x3f')](this[_0xf97d('0xd')]);clearAgentBooked(this[_0xf97d('0xe')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xf97d('0x13')]);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x3f')]=function(_0x38b1a4){var _0x43de90=this;if(!_[_0xf97d('0x2d')](_0x38b1a4)){for(var _0x162f1e in _0x38b1a4){if(_0x38b1a4['hasOwnProperty'](_0x162f1e)){_0x43de90[_0xf97d('0x40')](_0x38b1a4[_0x162f1e],_0xf97d('0x41'));delete _0x38b1a4[_0x162f1e];}}}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x42')]=function(_0x2634d3,_0x122419,_0x1bcbf0){io['to'](_0x2634d3)['emit'](_0x122419,_0x1bcbf0);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x43')]=function(_0x4ba45a,_0x2a5cd8){logger[_0xf97d('0x44')](_0xf97d('0x45')+_0x2a5cd8+']\x20sending\x20voice_queue_channel:save\x20event:',_0x4ba45a['uniqueid'],util[_0xf97d('0x3b')](_0x4ba45a,{'showHidden':![],'depth':null}));this[_0xf97d('0x42')](util['format'](_0xf97d('0x46'),_0x4ba45a[_0xf97d('0x47')]),_0xf97d('0x48'),_0x4ba45a);io['emit']('voice_queue_presence:save',_0x4ba45a);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x40')]=function(_0x2af5f0,_0xe63dc8){logger[_0xf97d('0x44')](_0xf97d('0x45')+_0xe63dc8+_0xf97d('0x49'),_0x2af5f0[_0xf97d('0x4a')],util['inspect'](_0x2af5f0,{'showHidden':![],'depth':null}));this[_0xf97d('0x42')](util[_0xf97d('0x4b')](_0xf97d('0x46'),_0x2af5f0[_0xf97d('0x47')]),_0xf97d('0x4c'),_0x2af5f0);io[_0xf97d('0x42')](_0xf97d('0x4d'),_0x2af5f0);};VoiceQueueReport[_0xf97d('0x8')]['emitVoiceQueueSummary']=function(_0x1eca42,_0x5e64fb){if(_0x1eca42['type']==='inbound'){var _0x2f661c={'id':_0x1eca42['id'],'name':_0x1eca42[_0xf97d('0x47')],'strategy':_0x1eca42['strategy'],'answered':_0x1eca42['answered'],'available':_0x1eca42[_0xf97d('0x4e')],'loggedIn':_0x1eca42['loggedIn'],'pTalking':_0x1eca42[_0xf97d('0x30')],'sumBillable':_0x1eca42[_0xf97d('0x4f')],'sumDuration':_0x1eca42[_0xf97d('0x50')],'sumHoldTime':_0x1eca42[_0xf97d('0x51')]||0x0,'talking':_0x1eca42[_0xf97d('0x52')],'total':_0x1eca42['total'],'type':_0x1eca42[_0xf97d('0x53')],'unmanaged':_0x1eca42['unmanaged'],'abandoned':_0x1eca42['abandoned'],'waiting':_0x1eca42[_0xf97d('0x31')]};if(_0x1eca42['Trunk']){_0x2f661c[_0xf97d('0x54')]={'id':_0x1eca42[_0xf97d('0x54')]['id'],'name':_0x1eca42[_0xf97d('0x54')]['name'],'active':_0x1eca42['Trunk'][_0xf97d('0x55')],'callerid':_0x1eca42[_0xf97d('0x54')][_0xf97d('0x56')]};}if(_0x1eca42[_0xf97d('0x57')]){_0x2f661c[_0xf97d('0x57')]={'id':_0x1eca42['Interval']['id'],'name':_0x1eca42[_0xf97d('0x57')][_0xf97d('0x47')]};}var _0x521bfa=md5(JSON[_0xf97d('0x58')](_0x2f661c));if(_0x1eca42[_0xf97d('0x2')]!==_0x521bfa){_0x1eca42['md5']=_0x521bfa;logger[_0xf97d('0x44')](_0xf97d('0x59')+_0x5e64fb+_0xf97d('0x5a'),util[_0xf97d('0x3b')](_0x2f661c,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xf97d('0x46'),_0x2f661c[_0xf97d('0x47')]),_0xf97d('0x5b'),_0x2f661c);}}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x5c')]=function(_0x1a3ba5){return _0x1a3ba5!==null&&!_[_0xf97d('0x5d')](_0x1a3ba5);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x57872e=this;setInterval(function(){_0x57872e['clearZombieChannels']();ami['Action']({'action':_0xf97d('0x5e')})[_0xf97d('0x37')](function(_0x460a0c){logger[_0xf97d('0x3c')](_0xf97d('0x5f'),util[_0xf97d('0x3b')](_0x460a0c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0xf97d('0x60')]=function(){var _0x3765ef=this;setInterval(function(){if(_0x3765ef['flagQueueSummary']){return ami[_0xf97d('0x35')]({'action':_0xf97d('0x15')})[_0xf97d('0x61')](function(_0x30a238){_0x3765ef[_0xf97d('0x12')]=![];})[_0xf97d('0x37')](function(_0x85ff66){logger[_0xf97d('0x3c')](_0xf97d('0x62'),util[_0xf97d('0x3b')](_0x85ff66,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x16')]=function(_0x2464b1){try{if(this[_0xf97d('0x5c')](_0x2464b1)&&this[_0xf97d('0x5c')](_0x2464b1[_0xf97d('0x63')])){logger[_0xf97d('0x44')]('[voiceQueueReport][queuesummary]\x20event:',util[_0xf97d('0x3b')](_0x2464b1,{'showHidden':![],'depth':null}));if(this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]){logger[_0xf97d('0x64')](_0xf97d('0x65'),_0x2464b1[_0xf97d('0x63')]);var _0x4b64ab=_['countBy'](this[_0xf97d('0xf')],_0xf97d('0x63'))[_0x2464b1['queue']]||0x0;var _0x4cc883=_0x4b64ab-_0x2464b1[_0xf97d('0x66')];if(this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x31')]!==_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x66')])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x68')]!==_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x4e')]!==_['toNumber'](_0x2464b1['available'])||this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x52')]!==_0x4cc883){this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x31')]=_[_0xf97d('0x67')](_0x2464b1['callers']);this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x68')]=_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')]);this['voiceQueues'][_0x2464b1[_0xf97d('0x63')]]['available']=_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x4e')]);this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x52')]=_0x4cc883>0x0?_0x4cc883:0x0;this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]][_0xf97d('0x52')]=this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]['talking']>_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')])?_[_0xf97d('0x67')](_0x2464b1[_0xf97d('0x69')]):this[_0xf97d('0x11')][_0x2464b1['queue']][_0xf97d('0x52')];this['emitVoiceQueueSummary'](this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]],_0xf97d('0x15'));}logger[_0xf97d('0x44')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0xf97d('0x3b')](this[_0xf97d('0x11')][_0x2464b1['queue']],{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0x6a'),this[_0xf97d('0x11')][_0x2464b1[_0xf97d('0x63')]]);}}}catch(_0x47bf80){logger['error']('[voiceQueueReport][queuesummary]',util[_0xf97d('0x3b')](_0x47bf80,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x18')]=function(_0x51a198){logger[_0xf97d('0x44')](_0xf97d('0x6b'),util[_0xf97d('0x3b')](_0x51a198,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x1a')]=function(_0xb1671b){try{if(this[_0xf97d('0x5c')](_0xb1671b)){logger['debug'](_0xf97d('0x6c'),_0xb1671b['uniqueid'],util[_0xf97d('0x3b')](_0xb1671b,{'showHidden':![],'depth':null}));if(_[_0xf97d('0x5d')](this['queueReports'][_0xb1671b[_0xf97d('0x4a')]]))this[_0xf97d('0xd')][_0xb1671b['uniqueid']]=[];if(_[_0xf97d('0x5d')](this[_0xf97d('0xf')][_0xb1671b['uniqueid']]))this[_0xf97d('0xf')][_0xb1671b[_0xf97d('0x4a')]]={};var _0x276f59=new QueueReport();_0x276f59[_0xf97d('0x47')]=_0xb1671b[_0xf97d('0x63')];_0x276f59[_0xf97d('0x53')]=this['voiceQueues'][_0x276f59[_0xf97d('0x47')]]&&this[_0xf97d('0x11')][_0x276f59['name']][_0xf97d('0x53')]?this[_0xf97d('0x11')][_0x276f59[_0xf97d('0x47')]][_0xf97d('0x53')]||_0xf97d('0x6d'):'inbound';_0x276f59[_0xf97d('0x63')]=_0xb1671b[_0xf97d('0x63')];_0x276f59['queuecallerjoinAt']=moment()['format'](_0xf97d('0x6e'));_0x276f59['position']=_0xb1671b[_0xf97d('0x6f')];_0x276f59[_0xf97d('0x70')]=_0xb1671b[_0xf97d('0x70')];_0x276f59['uniqueid']=_0xb1671b[_0xf97d('0x4a')];_0x276f59[_0xf97d('0x71')]=this[_0xf97d('0xf')][_0xb1671b[_0xf97d('0x4a')]][_0xf97d('0x71')];logger[_0xf97d('0x64')](_0xf97d('0x72'),_0x276f59[_0xf97d('0x47')],_0x276f59[_0xf97d('0x53')]);_[_0xf97d('0x73')](_0x276f59,_[_0xf97d('0x74')](_0xb1671b,_[_0xf97d('0x75')](_0x276f59)));this[_0xf97d('0xd')][_0xb1671b['uniqueid']]['push'](_0x276f59);this['channels'][_0xb1671b[_0xf97d('0x4a')]]=_0x276f59;this[_0xf97d('0x43')](_0x276f59,_0xf97d('0x19'));}}catch(_0x1134a9){logger['error'](_0xf97d('0x6c'),_0xb1671b[_0xf97d('0x4a')],util['inspect'](_0x1134a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x76')]=function(_0x43e7a9){try{if(this['isNotNull'](_0x43e7a9)){logger['debug'](_0xf97d('0x77'),_0x43e7a9[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x43e7a9,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x43e7a9[_0xf97d('0x4a')]]){var _0x5aa222=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x43e7a9[_0xf97d('0x4a')]]);_0x5aa222['queuecallercomplete']=![];_0x5aa222['queuecallercompleteAt']=null;_0x5aa222['holdtime']=_0x43e7a9[_0xf97d('0x79')];_0x5aa222[_0xf97d('0x7a')]=_0x43e7a9['originalposition'];_0x5aa222[_0xf97d('0x1b')]=!![];_0x5aa222[_0xf97d('0x7b')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x5aa222[_0xf97d('0x7c')]='ABANDONED';_0x5aa222['lastAssignedTo']=null;logger[_0xf97d('0x64')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x5aa222['name'],_0x5aa222[_0xf97d('0x53')]);this[_0xf97d('0xf')][_0x43e7a9[_0xf97d('0x4a')]]=_0x5aa222;this['emitVoiceQueueChannelRemove'](_0x5aa222,_0xf97d('0x1b'));}}}catch(_0x2cf6c3){logger['error'](_0xf97d('0x77'),_0x43e7a9[_0xf97d('0x4a')],util['inspect'](_0x2cf6c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x1d')]=function(_0x10893){try{if(this[_0xf97d('0x5c')](_0x10893)){logger[_0xf97d('0x44')](_0xf97d('0x7d'),_0x10893[_0xf97d('0x4a')],util['inspect'](_0x10893,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x10893[_0xf97d('0x4a')]]){var _0x39d3f7=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x10893[_0xf97d('0x4a')]]);_0x39d3f7['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x39d3f7['connectedlinenum']=_0x10893[_0xf97d('0x7e')];_0x39d3f7[_0xf97d('0x7f')]=_0x10893[_0xf97d('0x7f')];logger[_0xf97d('0x64')](_0xf97d('0x80'),_0x39d3f7[_0xf97d('0x47')],_0x39d3f7[_0xf97d('0x53')],_0x10893[_0xf97d('0x7e')],_0x10893['connectedlinename']);this[_0xf97d('0xf')][_0x10893[_0xf97d('0x4a')]]=_0x39d3f7;this[_0xf97d('0x43')](_0x39d3f7,_0xf97d('0x1c'));}}}catch(_0x1ad2fa){logger['error'](_0xf97d('0x7d'),_0x10893['uniqueid'],util[_0xf97d('0x3b')](_0x1ad2fa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x81')]=function(_0x3e7974){try{if(this[_0xf97d('0x5c')](_0x3e7974)){logger[_0xf97d('0x44')]('[%s][voiceQueueReport][agentconnect]',_0x3e7974[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x3e7974,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x3e7974[_0xf97d('0x4a')]]){var _0x4e49c0=_['last'](this[_0xf97d('0xd')][_0x3e7974['uniqueid']]);_0x4e49c0['queuecallercomplete']=!![];_0x4e49c0[_0xf97d('0x7c')]='COMPLETEDBYAGENT';logger[_0xf97d('0x64')](_0xf97d('0x82'),_0x4e49c0[_0xf97d('0x47')],_0x4e49c0[_0xf97d('0x53')]);}}}catch(_0x978e25){logger['error'](_0xf97d('0x83'),_0x3e7974[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x978e25,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentComplete']=function(_0x4ee4d6){try{if(this['isNotNull'](_0x4ee4d6)){logger['debug'](_0xf97d('0x84'),_0x4ee4d6[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4ee4d6,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]]){var _0x3270d8=_[_0xf97d('0x78')](this['queueReports'][_0x4ee4d6[_0xf97d('0x4a')]]);_0x3270d8[_0xf97d('0x1b')]=![];_0x3270d8[_0xf97d('0x7b')]=null;_0x3270d8[_0xf97d('0x85')]=!![];_0x3270d8[_0xf97d('0x86')]=_0x4ee4d6[_0xf97d('0x87')];_0x3270d8[_0xf97d('0x79')]=_0x4ee4d6[_0xf97d('0x79')];_0x3270d8['queuecallercomplete']=!![];_0x3270d8[_0xf97d('0x88')]=![];_0x3270d8['queuecallerexitAt']=null;if(!_0x3270d8[_0xf97d('0x89')]){if(_0x4ee4d6[_0xf97d('0x8a')]=='transfer'){_0x3270d8['queuecallerexitreason']=_0xf97d('0x8b');logger[_0xf97d('0x64')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x3270d8[_0xf97d('0x47')],_0x3270d8[_0xf97d('0x53')]);}else{if(_[_0xf97d('0x8c')](_0x4ee4d6[_0xf97d('0x8d')][_0xf97d('0x8e')](),'local/')){if(this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x8f')]]){var _0x474f47=_[_0xf97d('0x78')](this['queueReports'][_0x4ee4d6[_0xf97d('0x8f')]]);_0x474f47['queuecallercomplete']=![];_0x474f47[_0xf97d('0x88')]=!![];_0x474f47[_0xf97d('0x90')]=moment(_0x3270d8[_0xf97d('0x91')])[_0xf97d('0x92')](_0x4ee4d6[_0xf97d('0x79')],_0xf97d('0x93'))[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x474f47[_0xf97d('0x7c')]='FORWARDTRANSFER';_0x474f47['transfer']=!![];_0x474f47[_0xf97d('0x94')]='FORWARD';_0x474f47[_0xf97d('0x95')]=_0x4ee4d6[_0xf97d('0x96')];_0x474f47[_0xf97d('0x97')]=_0x4ee4d6[_0xf97d('0x4a')];logger[_0xf97d('0x64')](_0xf97d('0x98'),_0x474f47[_0xf97d('0x47')],_0x474f47['type']);var _0x2a2db5=this[_0xf97d('0xd')][_0x4ee4d6['linkedid']];this['queueReports'][_0x4ee4d6[_0xf97d('0x8f')]]=this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]];this[_0xf97d('0xd')][_0x4ee4d6[_0xf97d('0x4a')]]=_0x2a2db5;}}else{_0x3270d8[_0xf97d('0x7c')]=_0xf97d('0x99')+_0x4ee4d6[_0xf97d('0x8a')]['toUpperCase']();logger[_0xf97d('0x64')](_0xf97d('0x9a'),_0x3270d8[_0xf97d('0x47')],_0x3270d8[_0xf97d('0x53')],_0x3270d8['queuecallerexitreason']);}}}this[_0xf97d('0xf')][_0x4ee4d6[_0xf97d('0x4a')]]=_0x3270d8;this[_0xf97d('0x40')](_0x3270d8,_0xf97d('0x1e'));}}}catch(_0x356033){logger['error'](_0xf97d('0x84'),_0x4ee4d6[_0xf97d('0x4a')],util['inspect'](_0x356033,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x9b')]=function(_0x2fee45){try{if(this[_0xf97d('0x5c')](_0x2fee45)){logger[_0xf97d('0x44')](_0xf97d('0x9c'),_0x2fee45[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x2fee45,{'showHidden':![],'depth':null}));this[_0xf97d('0x9d')](_0x2fee45[_0xf97d('0x4a')],_[_0xf97d('0x75')](_0x2fee45[_0xf97d('0x9e')])[0x0],_0x2fee45[_0xf97d('0x9f')]);if(this['queueReports'][_0x2fee45[_0xf97d('0x4a')]]){var _0x4b7402=_['last'](this[_0xf97d('0xd')][_0x2fee45[_0xf97d('0x4a')]]);if(_0x4b7402){if(this['isNotNull'](_0x2fee45[_0xf97d('0x9e')])&&this[_0xf97d('0x5c')](_0x2fee45[_0xf97d('0x9e')][_0xf97d('0xa0')])){switch(_0x2fee45[_0xf97d('0x9f')]){case _0xf97d('0xa1'):_0x4b7402[_0xf97d('0x88')]=![];_0x4b7402['queuecallerexitAt']=null;break;case _0xf97d('0xa2'):_0x4b7402[_0xf97d('0xa3')]='timeout';_0x4b7402[_0xf97d('0x88')]=!![];_0x4b7402[_0xf97d('0x90')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));logger[_0xf97d('0x44')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x2fee45[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4b7402,{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xa5'),_0x4b7402);break;default:_0x4b7402['queuecallerexit']=!![];_0x4b7402[_0xf97d('0x90')]=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4b7402['queuecallerabandon']=![];_0x4b7402[_0xf97d('0x7b')]=null;_0x4b7402[_0xf97d('0x7c')]=_0x2fee45['value'];this[_0xf97d('0xf')][_0x2fee45[_0xf97d('0x4a')]]=_0x4b7402;this[_0xf97d('0x40')](_0x4b7402,_0xf97d('0x20'));}else if(this[_0xf97d('0x5c')](_0x2fee45[_0xf97d('0x9e')])&&this['isNotNull'](_0x2fee45[_0xf97d('0x9e')][_0xf97d('0xa6')])){if(!_0x4b7402[_0xf97d('0x1b')]){_0x4b7402[_0xf97d('0x88')]=!![];_0x4b7402[_0xf97d('0x90')]=moment()['format'](_0xf97d('0x6e'));_0x4b7402['queuecallerexitreason']='EXITWITHKEY';_0x4b7402[_0xf97d('0xa4')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xf97d('0xf')][_0x2fee45[_0xf97d('0x4a')]]=_0x4b7402;}}logger[_0xf97d('0x64')](_0xf97d('0xa7'),_0x2fee45[_0xf97d('0x4a')],_0x4b7402[_0xf97d('0x47')],_0x4b7402[_0xf97d('0x53')],_[_0xf97d('0x75')](_0x2fee45[_0xf97d('0x9e')])[0x0],_0x2fee45[_0xf97d('0x9f')]);_0x4b7402[_0xf97d('0x14')]=this['variables'][_0x2fee45['uniqueid']];}}}}catch(_0x41837f){logger['error'](_0xf97d('0x9c'),_0x2fee45[_0xf97d('0x4a')],util['inspect'](_0x41837f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x9d')]=function(_0x11c85d,_0x4a81a6,_0x51d3d1){var _0x349986=['rtpaudioqos',_0xf97d('0xa8'),_0xf97d('0xa9'),_0xf97d('0xaa'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0xf97d('0xab'),_0xf97d('0xac'),_0xf97d('0xad'),_0xf97d('0xae'),_0xf97d('0xaf'),_0xf97d('0xb0'),'membercalls',_0xf97d('0xb1'),_0xf97d('0xb2'),'memberlastcall','membername',_0xf97d('0xb3'),'memberrealtime'];if(!_['isNil'](_0x4a81a6)&&!_[_0xf97d('0xb4')](_0x349986,_0x4a81a6)){if(_[_0xf97d('0x5d')](this['variables'][_0x11c85d])){this[_0xf97d('0x14')][_0x11c85d]={};}this['variables'][_0x11c85d][_0x4a81a6]=_0x51d3d1;}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x22')]=function(_0x150c73){try{if(this['isNotNull'](_0x150c73)){logger[_0xf97d('0x44')]('[%s][voiceQueueReport][hangup]',_0x150c73[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x150c73,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]]){for(var _0x2b738c=0x0,_0x221885={};_0x2b738c<this[_0xf97d('0xd')][_0x150c73['uniqueid']][_0xf97d('0xb5')];_0x2b738c+=0x1){_0x221885=this['queueReports'][_0x150c73[_0xf97d('0x4a')]][_0x2b738c];if(this['voiceQueues'][_0x221885[_0xf97d('0x63')]]){if(_0x221885[_0xf97d('0x88')]&&_0x221885[_0xf97d('0x89')]!=!![]){this['voiceQueues'][_0x221885[_0xf97d('0x63')]][_0xf97d('0xb6')]+=0x1;}if(_0x221885[_0xf97d('0x1b')]){this[_0xf97d('0x11')][_0x221885['queue']]['abandoned']+=0x1;}this[_0xf97d('0x11')][_0x221885['queue']][_0xf97d('0x51')]+=moment(_0x221885[_0xf97d('0xa4')])[_0xf97d('0xb7')](_0x221885['queuecallerjoinAt'],_0xf97d('0x93'))||0x0;if(_0x2b738c===this[_0xf97d('0xd')][_0x150c73['uniqueid']]['length']-0x1){this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]]['sumDuration']+=moment()[_0xf97d('0xb8')](0x0)[_0xf97d('0xb7')](_0x221885[_0xf97d('0x91')],_0xf97d('0x93'));this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0xb9')]+=0x1;if(_0x221885[_0xf97d('0xba')]){this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0xbb')]+=0x1;this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0x4f')]+=moment()[_0xf97d('0xb8')](0x0)['diff'](_0x221885[_0xf97d('0xa4')],'seconds');_0x221885['queuecallercompleteAt']=moment()[_0xf97d('0x4b')](_0xf97d('0x6e'));_0x221885[_0xf97d('0x88')]=![];_0x221885['queuecallerexitAt']=null;}if(_0x221885[_0xf97d('0x88')]&&_0x221885['transfer']!=!![]){_0x221885[_0xf97d('0xa3')]=_0xf97d('0xb6');logger[_0xf97d('0x44')](_0xf97d('0xbc'),_0x150c73[_0xf97d('0x4a')],util['inspect'](_0x221885,{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xbd'),_0x221885);}if(_0x221885[_0xf97d('0x1b')]){_0x221885[_0xf97d('0xa3')]=_0xf97d('0xbe');logger['debug'](_0xf97d('0xbf'),_0x150c73[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x221885,{'showHidden':![],'depth':null}));ami['emit'](_0xf97d('0xc0'),_0x221885);}}else{this[_0xf97d('0x11')][_0x221885[_0xf97d('0x63')]][_0xf97d('0x50')]+=this[_0xf97d('0x11')][_0x221885['queue']][_0xf97d('0x51')];}logger[_0xf97d('0x64')](_0xf97d('0xc1'),_0x150c73[_0xf97d('0x4a')],_0x221885['name'],_0x221885['type'],_0x150c73['cause-txt']);this['channels'][_0x150c73[_0xf97d('0x4a')]]=_0x221885;this[_0xf97d('0x40')](_0x221885,_0xf97d('0x21'));this[_0xf97d('0xc2')](this[_0xf97d('0x11')][_0x221885['queue']],_0xf97d('0x21'));}}logger[_0xf97d('0x44')](_0xf97d('0xc3'),_0x150c73[_0xf97d('0x4a')],util['inspect'](this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]],{'showHidden':![],'depth':null}));ami[_0xf97d('0x42')](_0xf97d('0xc4'),this[_0xf97d('0xd')][_0x150c73[_0xf97d('0x4a')]]);delete this[_0xf97d('0xd')][_0x150c73['uniqueid']];delete this[_0xf97d('0xf')][_0x150c73[_0xf97d('0x4a')]];}if(this[_0xf97d('0x14')][_0x150c73[_0xf97d('0x4a')]]){delete this[_0xf97d('0x14')][_0x150c73[_0xf97d('0x4a')]];}}}catch(_0x15b619){logger[_0xf97d('0x3c')](_0xf97d('0xc5'),_0x150c73[_0xf97d('0x4a')],util['inspect'](_0x15b619,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x2a')]=function(_0x55316b){try{if(this[_0xf97d('0x5c')](_0x55316b)){logger[_0xf97d('0x44')](_0xf97d('0xc6'),_0x55316b['uniqueid'],util[_0xf97d('0x3b')](_0x55316b,{'showHidden':![],'depth':null}));var _0x38c4a1;if(this['queueReports'][_0x55316b['transfereeuniqueid']]){_0x38c4a1=_['last'](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]]);_0x38c4a1['transferexten']=_0x55316b['secondtransfererexten'];_0x38c4a1['transferuniqueid']=_0x55316b['secondtransfereruniqueid'];_0x38c4a1[_0xf97d('0x7c')]=_0xf97d('0xc8');_0x38c4a1['transfer']=!![];_0x38c4a1[_0xf97d('0x94')]=_0xf97d('0xc9');if(this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xca')]]){var _0x3efd1c=this[_0xf97d('0xd')][_0x55316b['secondtransfereruniqueid']];this[_0xf97d('0xd')][_0x55316b['secondtransfereruniqueid']]=this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]];this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xc7')]]=_0x3efd1c;var _0xc6b03e=_[_0xf97d('0x78')](this['queueReports'][_0x55316b[_0xf97d('0xc7')]]);_0xc6b03e[_0xf97d('0xcb')]=!![];}logger[_0xf97d('0x64')](_0xf97d('0xcc'),_0x55316b[_0xf97d('0x4a')],_0x38c4a1[_0xf97d('0x47')],_0x38c4a1[_0xf97d('0x53')],_0x38c4a1[_0xf97d('0x95')],_0x38c4a1['transferuniqueid']);}else if(this[_0xf97d('0xd')][_0x55316b['transfertargetuniqueid']]){_0x38c4a1=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcd')]]);_0x38c4a1['transferexten']=_0x55316b[_0xf97d('0xce')];_0x38c4a1[_0xf97d('0x97')]=_0x55316b[_0xf97d('0xcf')];_0x38c4a1['queuecallerexitreason']=_0xf97d('0xc8');_0x38c4a1['transfer']=!![];_0x38c4a1[_0xf97d('0x94')]='ATTENDED';if(this[_0xf97d('0xd')][_0x55316b['origtransfereruniqueid']]){var _0x3efd1c=this[_0xf97d('0xd')][_0x55316b['origtransfereruniqueid']];this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcf')]]=this['queueReports'][_0x55316b[_0xf97d('0xcd')]];this[_0xf97d('0xd')][_0x55316b['transfertargetuniqueid']]=_0x3efd1c;var _0xc6b03e=_['last'](this[_0xf97d('0xd')][_0x55316b[_0xf97d('0xcd')]]);_0xc6b03e['switch']=!![];}logger['info'](_0xf97d('0xcc'),_0x55316b['uniqueid'],_0x38c4a1[_0xf97d('0x47')],_0x38c4a1[_0xf97d('0x53')],_0x38c4a1[_0xf97d('0x95')],_0x38c4a1[_0xf97d('0x97')]);}}}catch(_0x24387b){logger[_0xf97d('0x3c')](_0xf97d('0xc6'),_0x55316b[_0xf97d('0x4a')],util['inspect'](_0x24387b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xf97d('0x2c')]=function(_0x24636f){try{if(this[_0xf97d('0x5c')](_0x24636f)){logger['debug'](_0xf97d('0xd0'),_0x24636f[_0xf97d('0x4a')],util['inspect'](_0x24636f,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x24636f[_0xf97d('0xc7')]]){var _0x463cb9=_[_0xf97d('0x78')](this['queueReports'][_0x24636f['transfereeuniqueid']]);_0x463cb9[_0xf97d('0x7c')]=_0xf97d('0xd1');_0x463cb9[_0xf97d('0x89')]=!![];_0x463cb9[_0xf97d('0x94')]='BLIND';_0x463cb9[_0xf97d('0x95')]=_0x24636f[_0xf97d('0xd2')];_0x463cb9[_0xf97d('0x97')]=_0x24636f['transfereeuniqueid'];logger[_0xf97d('0x64')](_0xf97d('0xd3'),_0x24636f['uniqueid'],_0x463cb9[_0xf97d('0x47')],_0x463cb9[_0xf97d('0x53')],_0x463cb9[_0xf97d('0x95')],_0x463cb9[_0xf97d('0x97')]);this['syncHangup']({'event':_0xf97d('0xd4'),'uniqueid':_0x24636f[_0xf97d('0xc7')],'context':_0x24636f['context'],'channel':_0x24636f[_0xf97d('0xd5')]});}}}catch(_0x455d10){logger[_0xf97d('0x3c')](_0xf97d('0xd0'),_0x24636f[_0xf97d('0x4a')],util['inspect'](_0x455d10,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x26')]=function(_0x2d032a){try{if(this['isNotNull'](_0x2d032a)){logger['debug'](_0xf97d('0xd6'),_0x2d032a[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x2d032a,{'showHidden':![],'depth':null}));if(this[_0xf97d('0xd')][_0x2d032a[_0xf97d('0x4a')]]){var _0x56a73f=_[_0xf97d('0x78')](this[_0xf97d('0xd')][_0x2d032a[_0xf97d('0x4a')]]);if(!_[_0xf97d('0x34')](_0x56a73f[_0xf97d('0xa4')])){_0x56a73f[_0xf97d('0xd7')]=moment()[_0xf97d('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xf97d('0x64')](_0xf97d('0xd8'),_0x2d032a[_0xf97d('0x4a')],_0x56a73f['mohstarttime']);}}}}catch(_0x28d80f){logger['error'](_0xf97d('0xd6'),_0x2d032a[_0xf97d('0x4a')],util['inspect'](_0x28d80f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x28')]=function(_0x4a5641){try{if(this['isNotNull'](_0x4a5641)){logger[_0xf97d('0x44')](_0xf97d('0xd9'),_0x4a5641[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x4a5641,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4a5641[_0xf97d('0x4a')]]){var _0x11cf46=_[_0xf97d('0x78')](this['queueReports'][_0x4a5641[_0xf97d('0x4a')]]);if(!_[_0xf97d('0x34')](_0x11cf46[_0xf97d('0xd7')])){_0x11cf46['mohtime']+=moment()[_0xf97d('0xb8')](0x0)[_0xf97d('0xb7')](_0x11cf46[_0xf97d('0xd7')],_0xf97d('0x93'));logger[_0xf97d('0x64')](_0xf97d('0xda'),_0x4a5641[_0xf97d('0x4a')],_0x11cf46[_0xf97d('0xdb')]);delete _0x11cf46[_0xf97d('0xd7')];}}}}catch(_0x31e95a){logger['error'](_0xf97d('0xd9'),_0x4a5641['uniqueid'],util['inspect'](_0x31e95a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xf97d('0x8')][_0xf97d('0x24')]=function(_0x9bd389){try{if(this[_0xf97d('0x5c')](_0x9bd389)){logger[_0xf97d('0x44')](_0xf97d('0xdc'),_0x9bd389[_0xf97d('0x4a')],util[_0xf97d('0x3b')](_0x9bd389,{'showHidden':![],'depth':null}));if(_0x9bd389[_0xf97d('0xdd')]['toLowerCase']()===_0xf97d('0xde')){_0x9bd389[_0xf97d('0xdf')]=_0x9bd389[_0xf97d('0xe0')]&&_0x9bd389['appdata']['startsWith'](_0xf97d('0xe1'))?_0x9bd389[_0xf97d('0xe0')]:(_0x9bd389[_0xf97d('0xe0')]||_0x9bd389[_0xf97d('0xdf')])[_0xf97d('0x8e')]();if(_[_0xf97d('0x8c')](_0x9bd389[_0xf97d('0xdf')][_0xf97d('0x8e')](),_0xf97d('0xe2'))){logger[_0xf97d('0x64')](_0xf97d('0xe3'),_0x9bd389[_0xf97d('0x4a')],_0x9bd389['application'],_0x9bd389['applicationdata']);if(_[_0xf97d('0x5d')](this[_0xf97d('0xf')][_0x9bd389['uniqueid']]))this[_0xf97d('0xf')][_0x9bd389['uniqueid']]={};var _0x181965=_0x9bd389[_0xf97d('0xdf')][_0xf97d('0xe4')]('=');var _0x29c77d=_0x181965[0x0][_0xf97d('0x8e')]()[_0xf97d('0xe5')](/cdr\((.*)\)/);if(_0x29c77d)this['channels'][_0x9bd389[_0xf97d('0x4a')]][_0x29c77d[0x1]]=_0x181965[0x1];}}}}catch(_0xc7559){logger['error']('[%s][voiceQueueReport][newexten]',_0x9bd389['uniqueid'],util[_0xf97d('0x3b')](_0xc7559,{'showHidden':![],'depth':null}));}};module[_0xf97d('0xe6')]=VoiceQueueReport;
\ No newline at end of file
+var _0x30ea=['queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','emitVoiceQueueChannelSave','queuecallerleave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerexit','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[%s][voiceQueueReport][agentcomplete]','addVariable','value','variable','queuestatus','CONTINUE','TIMEOUT','timeout','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','milliseconds','diff','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','match','[%s][voiceQueueReport][newexten]','lodash','util','ioredis','../../../config/environment','ami','../ami','../model/queueReport','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','queueChannels','voiceQueues','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncVarSet','fullybooted','syncFullyBooted','newexten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','channels','isNil','Action','status','channel','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify','md5','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','flagQueueSummary','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','info','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete'];(function(_0x5b27da,_0x4a6532){var _0x3254f4=function(_0x4194c6){while(--_0x4194c6){_0x5b27da['push'](_0x5b27da['shift']());}};_0x3254f4(++_0x4a6532);}(_0x30ea,0x6f));var _0xa30e=function(_0x150854,_0x1e82ea){_0x150854=_0x150854-0x0;var _0x3bed25=_0x30ea[_0x150854];return _0x3bed25;};'use strict';var _=require(_0xa30e('0x0'));var moment=require('moment');var util=require(_0xa30e('0x1'));var md5=require('md5');var Redis=require(_0xa30e('0x2'));var config=require(_0xa30e('0x3'));var logger=require('../../../config/logger')(_0xa30e('0x4'));var ami=require(_0xa30e('0x5'));var QueueReport=require(_0xa30e('0x6'));config[_0xa30e('0x7')]=_['defaults'](config[_0xa30e('0x7')],{'host':_0xa30e('0x8'),'port':0x18eb});var io=require(_0xa30e('0x9'))(new Redis(config[_0xa30e('0x7')]));var Sequence=function(){};Sequence[_0xa30e('0xa')][_0xa30e('0xb')]=function(_0x596299){this[_0xa30e('0xc')]=this['tail']?this[_0xa30e('0xc')][_0xa30e('0xd')](_0x596299):_0x596299();};function VoiceQueueReport(_0x2f33a2){this[_0xa30e('0xe')]=new Sequence();this[_0xa30e('0xf')]={};this[_0xa30e('0x10')]=_0x2f33a2[_0xa30e('0x10')];this['channels']=_0x2f33a2[_0xa30e('0x11')];this[_0xa30e('0x12')]=_0x2f33a2[_0xa30e('0x12')];this['flagQueueSummary']=!![];this[_0xa30e('0x13')]=_0x2f33a2[_0xa30e('0x13')];this[_0xa30e('0x14')]={};ami['on'](_0xa30e('0x15'),this[_0xa30e('0x16')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x18'),this[_0xa30e('0x19')]['bind'](this));ami['on'](_0xa30e('0x1a'),this[_0xa30e('0x1b')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x1c'),this[_0xa30e('0x1d')][_0xa30e('0x17')](this));ami['on']('queuecallerleave',this[_0xa30e('0x1e')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x1f'),this['syncAgentComplete'][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x20'),this[_0xa30e('0x21')]['bind'](this));ami['on']('varset',this[_0xa30e('0x22')][_0xa30e('0x17')](this));ami['on']('hangup',this['syncHangup'][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x23'),this[_0xa30e('0x24')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x25'),this['syncNewExten'][_0xa30e('0x17')](this));ami['on']('musiconholdstart',this[_0xa30e('0x26')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x27'),this[_0xa30e('0x28')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x29'),this[_0xa30e('0x2a')][_0xa30e('0x17')](this));ami['on'](_0xa30e('0x2b'),this[_0xa30e('0x2c')][_0xa30e('0x17')](this));this[_0xa30e('0x2d')]();this[_0xa30e('0x2e')]();}function clearChannels(_0x449f92){if(!_[_0xa30e('0x2f')](_0x449f92)){for(var _0x533948 in _0x449f92){if(_0x449f92[_0xa30e('0x30')](_0x533948)){delete _0x449f92[_0x533948];}}}}function clearCampaigns(_0xe71bb1){if(!_[_0xa30e('0x2f')](_0xe71bb1)){for(var _0x588cbd in _0xe71bb1){if(_0xe71bb1[_0xa30e('0x30')](_0x588cbd)){_0xe71bb1[_0x588cbd]['originated']=0x0;}}}}function clearVoiceQueues(_0x3b836d){if(!_[_0xa30e('0x2f')](_0x3b836d)){for(var _0x369ce7 in _0x3b836d){if(_0x3b836d['hasOwnProperty'](_0x369ce7)){_0x3b836d[_0x369ce7][_0xa30e('0x31')]=0x0;_0x3b836d[_0x369ce7][_0xa30e('0x32')]=0x0;_0x3b836d[_0x369ce7]['pTalking']=0x0;_0x3b836d[_0x369ce7][_0xa30e('0x33')]=0x0;_0x3b836d[_0x369ce7][_0xa30e('0x34')]=!![];}}}}function clearAgentBooked(_0x21715a){if(!_[_0xa30e('0x2f')](_0x21715a)){for(var _0x2ffc23 in _0x21715a){if(_0x21715a[_0xa30e('0x30')](_0x2ffc23)){_0x21715a[_0x2ffc23][_0xa30e('0x35')]=!![];}}}}VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x36')]=function(){var _0x5831ff=this;for(var _0x34c2f9 in this['channels']){if(this[_0xa30e('0x37')]['hasOwnProperty'](_0x34c2f9)&&!this[_0xa30e('0x37')][_0x34c2f9]['switch']){this['sequence'][_0xa30e('0xb')](function(){if(!_[_0xa30e('0x38')](_0x5831ff[_0xa30e('0x37')][_0x34c2f9])){return ami[_0xa30e('0x39')]({'action':_0xa30e('0x3a'),'channel':_0x5831ff['channels'][_0x34c2f9][_0xa30e('0x3b')]})['catch'](function(_0x3e92b6){if(_0x3e92b6[_0xa30e('0x3c')]===_0xa30e('0x3d')){setTimeout(function(){if(_0x5831ff[_0xa30e('0x37')][_0x34c2f9]){delete _0x5831ff['channels'][_0x34c2f9];logger[_0xa30e('0x3e')](_0xa30e('0x3f'),_0x34c2f9,util[_0xa30e('0x40')](_0x3e92b6,{'showHidden':![],'depth':null}));}if(_0x5831ff[_0xa30e('0xf')][_0x34c2f9]){delete _0x5831ff[_0xa30e('0xf')][_0x34c2f9];logger[_0xa30e('0x3e')](_0xa30e('0x41'),_0x34c2f9,util['inspect'](_0x3e92b6,{'showHidden':![],'depth':null}));}if(_0x5831ff[_0xa30e('0x14')][_0x34c2f9]){delete _0x5831ff[_0xa30e('0x14')][_0x34c2f9];logger['error'](_0xa30e('0x42'),_0x34c2f9,util[_0xa30e('0x40')](_0x3e92b6,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xa30e('0xa')]['syncFullyBooted']=function(){logger['error']('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0xa30e('0x37')]);this[_0xa30e('0x43')](this[_0xa30e('0xf')]);clearAgentBooked(this[_0xa30e('0x10')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xa30e('0x13')]);};VoiceQueueReport[_0xa30e('0xa')]['clearQueueReport']=function(_0x5307fd){var _0x105920=this;if(!_[_0xa30e('0x2f')](_0x5307fd)){for(var _0x438afc in _0x5307fd){if(_0x5307fd[_0xa30e('0x30')](_0x438afc)){_0x105920[_0xa30e('0x44')](_0x5307fd[_0x438afc],_0xa30e('0x45'));delete _0x5307fd[_0x438afc];}}}};VoiceQueueReport[_0xa30e('0xa')]['emit']=function(_0x20dc1c,_0x944785,_0x234f2c){io['to'](_0x20dc1c)[_0xa30e('0x46')](_0x944785,_0x234f2c);};VoiceQueueReport[_0xa30e('0xa')]['emitVoiceQueueChannelSave']=function(_0x2fe56a,_0x2492d0){logger[_0xa30e('0x47')](_0xa30e('0x48')+_0x2492d0+_0xa30e('0x49'),_0x2fe56a['uniqueid'],util[_0xa30e('0x40')](_0x2fe56a,{'showHidden':![],'depth':null}));this[_0xa30e('0x46')](util[_0xa30e('0x4a')](_0xa30e('0x4b'),_0x2fe56a[_0xa30e('0x4c')]),_0xa30e('0x4d'),_0x2fe56a);io[_0xa30e('0x46')](_0xa30e('0x4e'),_0x2fe56a);};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x44')]=function(_0x183a6a,_0x5e3ee9){logger['debug']('[%s][voiceQueueReport]['+_0x5e3ee9+_0xa30e('0x4f'),_0x183a6a[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x183a6a,{'showHidden':![],'depth':null}));this['emit'](util[_0xa30e('0x4a')](_0xa30e('0x4b'),_0x183a6a[_0xa30e('0x4c')]),'voice_queue_channel:remove',_0x183a6a);io[_0xa30e('0x46')](_0xa30e('0x51'),_0x183a6a);};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x52')]=function(_0x3db29b,_0x61379d){if(_0x3db29b[_0xa30e('0x53')]===_0xa30e('0x54')){var _0x4dd82f={'id':_0x3db29b['id'],'name':_0x3db29b['name'],'strategy':_0x3db29b[_0xa30e('0x55')],'answered':_0x3db29b[_0xa30e('0x56')],'available':_0x3db29b[_0xa30e('0x57')],'loggedIn':_0x3db29b[_0xa30e('0x58')],'pTalking':_0x3db29b['pTalking'],'sumBillable':_0x3db29b[_0xa30e('0x59')],'sumDuration':_0x3db29b[_0xa30e('0x5a')],'sumHoldTime':_0x3db29b[_0xa30e('0x5b')]||0x0,'talking':_0x3db29b[_0xa30e('0x32')],'total':_0x3db29b[_0xa30e('0x5c')],'type':_0x3db29b['type'],'unmanaged':_0x3db29b[_0xa30e('0x5d')],'abandoned':_0x3db29b[_0xa30e('0x5e')],'waiting':_0x3db29b[_0xa30e('0x33')]};if(_0x3db29b[_0xa30e('0x5f')]){_0x4dd82f[_0xa30e('0x5f')]={'id':_0x3db29b[_0xa30e('0x5f')]['id'],'name':_0x3db29b['Trunk'][_0xa30e('0x4c')],'active':_0x3db29b['Trunk']['active'],'callerid':_0x3db29b[_0xa30e('0x5f')][_0xa30e('0x60')]};}if(_0x3db29b[_0xa30e('0x61')]){_0x4dd82f[_0xa30e('0x61')]={'id':_0x3db29b[_0xa30e('0x61')]['id'],'name':_0x3db29b[_0xa30e('0x61')][_0xa30e('0x4c')]};}var _0xe75a2b=md5(JSON[_0xa30e('0x62')](_0x4dd82f));if(_0x3db29b['md5']!==_0xe75a2b){_0x3db29b[_0xa30e('0x63')]=_0xe75a2b;logger['debug'](_0xa30e('0x64')+_0x61379d+']\x20sending\x20voice_queue:save\x20event:',util[_0xa30e('0x40')](_0x4dd82f,{'showHidden':![],'depth':null}));this[_0xa30e('0x46')](util['format'](_0xa30e('0x4b'),_0x4dd82f['name']),_0xa30e('0x65'),_0x4dd82f);}}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x66')]=function(_0x5ad8a6){return _0x5ad8a6!==null&&!_[_0xa30e('0x67')](_0x5ad8a6);};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x2e')]=function(){var _0x2513aa=this;setInterval(function(){_0x2513aa[_0xa30e('0x36')]();ami['Action']({'action':_0xa30e('0x68')})[_0xa30e('0x69')](function(_0x51dcd1){logger['error'](_0xa30e('0x6a'),util['inspect'](_0x51dcd1,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x2d')]=function(){var _0x570acb=this;setInterval(function(){if(_0x570acb[_0xa30e('0x6b')]){return ami[_0xa30e('0x39')]({'action':_0xa30e('0x15')})[_0xa30e('0x6c')](function(_0x36b831){_0x570acb[_0xa30e('0x6b')]=![];})[_0xa30e('0x69')](function(_0xa65baf){logger[_0xa30e('0x3e')](_0xa30e('0x6d'),util[_0xa30e('0x40')](_0xa65baf,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x16')]=function(_0x387fe0){try{if(this[_0xa30e('0x66')](_0x387fe0)&&this[_0xa30e('0x66')](_0x387fe0[_0xa30e('0x6e')])){logger[_0xa30e('0x47')](_0xa30e('0x6f'),util[_0xa30e('0x40')](_0x387fe0,{'showHidden':![],'depth':null}));if(this[_0xa30e('0x12')][_0x387fe0['queue']]){logger[_0xa30e('0x70')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x387fe0[_0xa30e('0x6e')]);var _0x59e89d=_[_0xa30e('0x71')](this[_0xa30e('0x37')],_0xa30e('0x6e'))[_0x387fe0[_0xa30e('0x6e')]]||0x0;var _0x2031e9=_0x59e89d-_0x387fe0[_0xa30e('0x72')];if(this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]][_0xa30e('0x33')]!==_[_0xa30e('0x73')](_0x387fe0['callers'])||this[_0xa30e('0x12')][_0x387fe0['queue']]['loggedIn']!==_['toNumber'](_0x387fe0[_0xa30e('0x74')])||this[_0xa30e('0x12')][_0x387fe0['queue']][_0xa30e('0x57')]!==_[_0xa30e('0x73')](_0x387fe0[_0xa30e('0x57')])||this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]]['talking']!==_0x2031e9){this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]][_0xa30e('0x33')]=_[_0xa30e('0x73')](_0x387fe0['callers']);this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]][_0xa30e('0x58')]=_[_0xa30e('0x73')](_0x387fe0[_0xa30e('0x74')]);this[_0xa30e('0x12')][_0x387fe0['queue']]['available']=_[_0xa30e('0x73')](_0x387fe0[_0xa30e('0x57')]);this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]][_0xa30e('0x32')]=_0x2031e9>0x0?_0x2031e9:0x0;this[_0xa30e('0x12')][_0x387fe0['queue']][_0xa30e('0x32')]=this['voiceQueues'][_0x387fe0[_0xa30e('0x6e')]][_0xa30e('0x32')]>_['toNumber'](_0x387fe0[_0xa30e('0x74')])?_[_0xa30e('0x73')](_0x387fe0[_0xa30e('0x74')]):this[_0xa30e('0x12')][_0x387fe0['queue']][_0xa30e('0x32')];this[_0xa30e('0x52')](this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]],_0xa30e('0x15'));}logger['debug'](_0xa30e('0x75'),util[_0xa30e('0x40')](this[_0xa30e('0x12')][_0x387fe0[_0xa30e('0x6e')]],{'showHidden':![],'depth':null}));ami[_0xa30e('0x46')](_0xa30e('0x76'),this[_0xa30e('0x12')][_0x387fe0['queue']]);}}}catch(_0xc9020d){logger[_0xa30e('0x3e')](_0xa30e('0x6d'),util[_0xa30e('0x40')](_0xc9020d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x125a37){logger['debug'](_0xa30e('0x77'),util['inspect'](_0x125a37,{'showHidden':![],'depth':null}));this[_0xa30e('0x6b')]=!![];};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x1b')]=function(_0x47b088){try{if(this[_0xa30e('0x66')](_0x47b088)){logger[_0xa30e('0x47')](_0xa30e('0x78'),_0x47b088[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x47b088,{'showHidden':![],'depth':null}));if(_[_0xa30e('0x67')](this['queueReports'][_0x47b088[_0xa30e('0x50')]]))this[_0xa30e('0xf')][_0x47b088[_0xa30e('0x50')]]=[];if(_[_0xa30e('0x67')](this[_0xa30e('0x37')][_0x47b088[_0xa30e('0x50')]]))this['channels'][_0x47b088[_0xa30e('0x50')]]={};var _0x410a1=new QueueReport();_0x410a1[_0xa30e('0x4c')]=_0x47b088[_0xa30e('0x6e')];_0x410a1['type']=this['voiceQueues'][_0x410a1[_0xa30e('0x4c')]]&&this[_0xa30e('0x12')][_0x410a1[_0xa30e('0x4c')]]['type']?this[_0xa30e('0x12')][_0x410a1[_0xa30e('0x4c')]]['type']||_0xa30e('0x54'):_0xa30e('0x54');_0x410a1[_0xa30e('0x6e')]=_0x47b088[_0xa30e('0x6e')];_0x410a1[_0xa30e('0x79')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));_0x410a1[_0xa30e('0x7b')]=_0x47b088[_0xa30e('0x7b')];_0x410a1[_0xa30e('0x7c')]=_0x47b088[_0xa30e('0x7c')];_0x410a1['uniqueid']=_0x47b088['uniqueid'];_0x410a1[_0xa30e('0x7d')]=this['channels'][_0x47b088[_0xa30e('0x50')]]['routealias'];logger[_0xa30e('0x70')](_0xa30e('0x7e'),_0x410a1[_0xa30e('0x4c')],_0x410a1[_0xa30e('0x53')]);_[_0xa30e('0x7f')](_0x410a1,_['pick'](_0x47b088,_[_0xa30e('0x80')](_0x410a1)));this[_0xa30e('0xf')][_0x47b088['uniqueid']][_0xa30e('0x81')](_0x410a1);this['channels'][_0x47b088[_0xa30e('0x50')]]=_0x410a1;this['emitVoiceQueueChannelSave'](_0x410a1,'queuecallerjoin');}}catch(_0x426b4b){logger['error'](_0xa30e('0x78'),_0x47b088[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x426b4b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x1d')]=function(_0x37cf8f){try{if(this[_0xa30e('0x66')](_0x37cf8f)){logger['debug'](_0xa30e('0x82'),_0x37cf8f[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x37cf8f,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x37cf8f['uniqueid']]){var _0xe93891=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x37cf8f[_0xa30e('0x50')]]);_0xe93891[_0xa30e('0x84')]=![];_0xe93891[_0xa30e('0x85')]=null;_0xe93891[_0xa30e('0x86')]=_0x37cf8f['holdtime'];_0xe93891[_0xa30e('0x87')]=_0x37cf8f[_0xa30e('0x87')];_0xe93891[_0xa30e('0x1c')]=!![];_0xe93891[_0xa30e('0x88')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));_0xe93891[_0xa30e('0x89')]='ABANDONED';_0xe93891[_0xa30e('0x8a')]=null;logger[_0xa30e('0x70')](_0xa30e('0x8b'),_0xe93891[_0xa30e('0x4c')],_0xe93891[_0xa30e('0x53')]);this[_0xa30e('0x37')][_0x37cf8f[_0xa30e('0x50')]]=_0xe93891;this[_0xa30e('0x44')](_0xe93891,'queuecallerabandon');}}}catch(_0x45b988){logger[_0xa30e('0x3e')]('[%s][voiceQueueReport][queuecallerabandon]',_0x37cf8f[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x45b988,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xa30e('0x1e')]=function(_0x3a5db1){try{if(this[_0xa30e('0x66')](_0x3a5db1)){logger[_0xa30e('0x47')](_0xa30e('0x8c'),_0x3a5db1[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x3a5db1,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x3a5db1[_0xa30e('0x50')]]){var _0x17b9d9=_['last'](this[_0xa30e('0xf')][_0x3a5db1[_0xa30e('0x50')]]);_0x17b9d9['queuecallerleaveAt']=moment()[_0xa30e('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x17b9d9[_0xa30e('0x8d')]=_0x3a5db1['connectedlinenum'];_0x17b9d9['connectedlinename']=_0x3a5db1[_0xa30e('0x8e')];logger[_0xa30e('0x70')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x17b9d9[_0xa30e('0x4c')],_0x17b9d9[_0xa30e('0x53')],_0x3a5db1[_0xa30e('0x8d')],_0x3a5db1[_0xa30e('0x8e')]);this[_0xa30e('0x37')][_0x3a5db1[_0xa30e('0x50')]]=_0x17b9d9;this[_0xa30e('0x8f')](_0x17b9d9,_0xa30e('0x90'));}}}catch(_0x2cf26c){logger[_0xa30e('0x3e')]('[%s][voiceQueueReport][queuecallerleave]',_0x3a5db1[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x2cf26c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x2972e5){try{if(this[_0xa30e('0x66')](_0x2972e5)){logger[_0xa30e('0x47')](_0xa30e('0x91'),_0x2972e5[_0xa30e('0x50')],util['inspect'](_0x2972e5,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x2972e5['uniqueid']]){var _0x4dc6e8=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x2972e5[_0xa30e('0x50')]]);_0x4dc6e8[_0xa30e('0x84')]=!![];_0x4dc6e8[_0xa30e('0x89')]=_0xa30e('0x92');logger[_0xa30e('0x70')](_0xa30e('0x93'),_0x4dc6e8[_0xa30e('0x4c')],_0x4dc6e8[_0xa30e('0x53')]);}}}catch(_0xb937e6){logger['error'](_0xa30e('0x91'),_0x2972e5[_0xa30e('0x50')],util[_0xa30e('0x40')](_0xb937e6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')]['syncAgentComplete']=function(_0x393b5c){try{if(this[_0xa30e('0x66')](_0x393b5c)){logger[_0xa30e('0x47')]('[%s][voiceQueueReport][agentcomplete]',_0x393b5c[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x393b5c,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x393b5c[_0xa30e('0x50')]]){var _0x122d33=_['last'](this['queueReports'][_0x393b5c[_0xa30e('0x50')]]);_0x122d33[_0xa30e('0x1c')]=![];_0x122d33[_0xa30e('0x88')]=null;_0x122d33[_0xa30e('0x94')]=!![];_0x122d33['lastAssignedTo']=_0x393b5c[_0xa30e('0x95')];_0x122d33[_0xa30e('0x86')]=_0x393b5c[_0xa30e('0x86')];_0x122d33[_0xa30e('0x84')]=!![];_0x122d33['queuecallerexit']=![];_0x122d33[_0xa30e('0x96')]=null;if(!_0x122d33[_0xa30e('0x97')]){if(_0x393b5c[_0xa30e('0x98')]=='transfer'){_0x122d33['queuecallerexitreason']=_0xa30e('0x99');logger[_0xa30e('0x70')](_0xa30e('0x9a'),_0x122d33[_0xa30e('0x4c')],_0x122d33[_0xa30e('0x53')]);}else{if(_[_0xa30e('0x9b')](_0x393b5c['channel'][_0xa30e('0x9c')](),_0xa30e('0x9d'))){if(this[_0xa30e('0xf')][_0x393b5c[_0xa30e('0x9e')]]){var _0x120ad8=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x393b5c['linkedid']]);_0x120ad8[_0xa30e('0x84')]=![];_0x120ad8[_0xa30e('0x9f')]=!![];_0x120ad8[_0xa30e('0x96')]=moment(_0x122d33[_0xa30e('0x79')])['add'](_0x393b5c['holdtime'],_0xa30e('0xa0'))[_0xa30e('0x4a')](_0xa30e('0x7a'));_0x120ad8[_0xa30e('0x89')]=_0xa30e('0xa1');_0x120ad8[_0xa30e('0x97')]=!![];_0x120ad8[_0xa30e('0xa2')]=_0xa30e('0xa3');_0x120ad8[_0xa30e('0xa4')]=_0x393b5c[_0xa30e('0xa5')];_0x120ad8[_0xa30e('0xa6')]=_0x393b5c[_0xa30e('0x50')];logger['info'](_0xa30e('0xa7'),_0x120ad8[_0xa30e('0x4c')],_0x120ad8[_0xa30e('0x53')]);var _0x3f34b9=this[_0xa30e('0xf')][_0x393b5c[_0xa30e('0x9e')]];this[_0xa30e('0xf')][_0x393b5c[_0xa30e('0x9e')]]=this['queueReports'][_0x393b5c[_0xa30e('0x50')]];this[_0xa30e('0xf')][_0x393b5c[_0xa30e('0x50')]]=_0x3f34b9;}}else{_0x122d33['queuecallerexitreason']=_0xa30e('0xa8')+_0x393b5c[_0xa30e('0x98')][_0xa30e('0xa9')]();logger[_0xa30e('0x70')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x122d33[_0xa30e('0x4c')],_0x122d33[_0xa30e('0x53')],_0x122d33[_0xa30e('0x89')]);}}}this[_0xa30e('0x37')][_0x393b5c[_0xa30e('0x50')]]=_0x122d33;this[_0xa30e('0x44')](_0x122d33,_0xa30e('0x1f'));}}}catch(_0x4c96bf){logger['error'](_0xa30e('0xaa'),_0x393b5c[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x4c96bf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x22')]=function(_0x368fe1){try{if(this[_0xa30e('0x66')](_0x368fe1)){logger[_0xa30e('0x47')]('[%s][voiceQueueReport][varset]',_0x368fe1[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x368fe1,{'showHidden':![],'depth':null}));this[_0xa30e('0xab')](_0x368fe1[_0xa30e('0x50')],_[_0xa30e('0x80')](_0x368fe1['variable'])[0x0],_0x368fe1[_0xa30e('0xac')]);if(this[_0xa30e('0xf')][_0x368fe1['uniqueid']]){var _0x2cf4a5=_[_0xa30e('0x83')](this['queueReports'][_0x368fe1[_0xa30e('0x50')]]);if(_0x2cf4a5){if(this['isNotNull'](_0x368fe1[_0xa30e('0xad')])&&this[_0xa30e('0x66')](_0x368fe1[_0xa30e('0xad')][_0xa30e('0xae')])){switch(_0x368fe1[_0xa30e('0xac')]){case _0xa30e('0xaf'):_0x2cf4a5[_0xa30e('0x9f')]=![];_0x2cf4a5[_0xa30e('0x96')]=null;break;case _0xa30e('0xb0'):_0x2cf4a5['lastevent']=_0xa30e('0xb1');_0x2cf4a5[_0xa30e('0x9f')]=!![];_0x2cf4a5[_0xa30e('0x96')]=moment()[_0xa30e('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x2cf4a5[_0xa30e('0xb2')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger['debug'](_0xa30e('0xb3'),_0x368fe1['uniqueid'],util[_0xa30e('0x40')](_0x2cf4a5,{'showHidden':![],'depth':null}));ami[_0xa30e('0x46')](_0xa30e('0xb4'),_0x2cf4a5);break;default:_0x2cf4a5[_0xa30e('0x9f')]=!![];_0x2cf4a5[_0xa30e('0x96')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));_0x2cf4a5[_0xa30e('0xb2')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));}_0x2cf4a5['queuecallerabandon']=![];_0x2cf4a5[_0xa30e('0x88')]=null;_0x2cf4a5['queuecallerexitreason']=_0x368fe1[_0xa30e('0xac')];this[_0xa30e('0x37')][_0x368fe1[_0xa30e('0x50')]]=_0x2cf4a5;this[_0xa30e('0x44')](_0x2cf4a5,_0xa30e('0xb5'));}else if(this[_0xa30e('0x66')](_0x368fe1['variable'])&&this[_0xa30e('0x66')](_0x368fe1[_0xa30e('0xad')][_0xa30e('0xb6')])){if(!_0x2cf4a5['queuecallerabandon']){_0x2cf4a5[_0xa30e('0x9f')]=!![];_0x2cf4a5[_0xa30e('0x96')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));_0x2cf4a5[_0xa30e('0x89')]='EXITWITHKEY';_0x2cf4a5['queuecallerleaveAt']=moment()['format'](_0xa30e('0x7a'));this[_0xa30e('0x37')][_0x368fe1[_0xa30e('0x50')]]=_0x2cf4a5;}}logger[_0xa30e('0x70')](_0xa30e('0xb7'),_0x368fe1[_0xa30e('0x50')],_0x2cf4a5['name'],_0x2cf4a5[_0xa30e('0x53')],_[_0xa30e('0x80')](_0x368fe1[_0xa30e('0xad')])[0x0],_0x368fe1[_0xa30e('0xac')]);_0x2cf4a5[_0xa30e('0x14')]=this[_0xa30e('0x14')][_0x368fe1['uniqueid']];}}}}catch(_0x3f9a1f){logger[_0xa30e('0x3e')]('[%s][voiceQueueReport][varset]',_0x368fe1[_0xa30e('0x50')],util['inspect'](_0x3f9a1f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0xab')]=function(_0x2ce7fc,_0x574cff,_0x356cde){var _0x4cf276=[_0xa30e('0xb8'),_0xa30e('0xb9'),_0xa30e('0xba'),'rtpaudioqosjitterbridged','rtpaudioqosloss',_0xa30e('0xbb'),_0xa30e('0xbc'),_0xa30e('0xbd'),_0xa30e('0xbe'),_0xa30e('0xbf'),_0xa30e('0xc0'),_0xa30e('0xc1'),_0xa30e('0xc2'),_0xa30e('0xc3'),_0xa30e('0xc4'),_0xa30e('0xc5'),_0xa30e('0x95'),_0xa30e('0xc6'),_0xa30e('0xc7')];if(!_[_0xa30e('0x38')](_0x574cff)&&!_[_0xa30e('0xc8')](_0x4cf276,_0x574cff)){if(_[_0xa30e('0x67')](this[_0xa30e('0x14')][_0x2ce7fc])){this['variables'][_0x2ce7fc]={};}this[_0xa30e('0x14')][_0x2ce7fc][_0x574cff]=_0x356cde;}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0xc9')]=function(_0x1fb4f4){try{if(this[_0xa30e('0x66')](_0x1fb4f4)){logger[_0xa30e('0x47')](_0xa30e('0xca'),_0x1fb4f4[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x1fb4f4,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x1fb4f4[_0xa30e('0x50')]]){for(var _0x4a8b2a=0x0,_0xd2142c={};_0x4a8b2a<this[_0xa30e('0xf')][_0x1fb4f4[_0xa30e('0x50')]][_0xa30e('0xcb')];_0x4a8b2a+=0x1){_0xd2142c=this[_0xa30e('0xf')][_0x1fb4f4[_0xa30e('0x50')]][_0x4a8b2a];if(this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]]){if(_0xd2142c['queuecallerexit']&&_0xd2142c[_0xa30e('0x97')]!=!![]){this['voiceQueues'][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x5d')]+=0x1;}if(_0xd2142c[_0xa30e('0x1c')]){this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x5e')]+=0x1;}this['voiceQueues'][_0xd2142c['queue']][_0xa30e('0x5b')]+=moment(_0xd2142c[_0xa30e('0xb2')])['diff'](_0xd2142c['queuecallerjoinAt'],'seconds')||0x0;if(_0x4a8b2a===this[_0xa30e('0xf')][_0x1fb4f4['uniqueid']]['length']-0x1){this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x5a')]+=moment()[_0xa30e('0xcc')](0x0)[_0xa30e('0xcd')](_0xd2142c[_0xa30e('0x79')],_0xa30e('0xa0'));this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x5c')]+=0x1;if(_0xd2142c['queuecallercomplete']){this['voiceQueues'][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x56')]+=0x1;this[_0xa30e('0x12')][_0xd2142c['queue']][_0xa30e('0x59')]+=moment()['milliseconds'](0x0)[_0xa30e('0xcd')](_0xd2142c[_0xa30e('0xb2')],_0xa30e('0xa0'));_0xd2142c[_0xa30e('0x85')]=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));_0xd2142c[_0xa30e('0x9f')]=![];_0xd2142c[_0xa30e('0x96')]=null;}if(_0xd2142c['queuecallerexit']&&_0xd2142c[_0xa30e('0x97')]!=!![]){_0xd2142c['lastevent']='unmanaged';logger[_0xa30e('0x47')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x1fb4f4[_0xa30e('0x50')],util[_0xa30e('0x40')](_0xd2142c,{'showHidden':![],'depth':null}));ami[_0xa30e('0x46')](_0xa30e('0xce'),_0xd2142c);}if(_0xd2142c[_0xa30e('0x1c')]){_0xd2142c['lastevent']=_0xa30e('0x5e');logger[_0xa30e('0x47')](_0xa30e('0xcf'),_0x1fb4f4[_0xa30e('0x50')],util[_0xa30e('0x40')](_0xd2142c,{'showHidden':![],'depth':null}));ami[_0xa30e('0x46')](_0xa30e('0xd0'),_0xd2142c);}}else{this[_0xa30e('0x12')][_0xd2142c['queue']][_0xa30e('0x5a')]+=this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]][_0xa30e('0x5b')];}logger[_0xa30e('0x70')](_0xa30e('0xd1'),_0x1fb4f4[_0xa30e('0x50')],_0xd2142c[_0xa30e('0x4c')],_0xd2142c['type'],_0x1fb4f4['cause-txt']);this[_0xa30e('0x37')][_0x1fb4f4[_0xa30e('0x50')]]=_0xd2142c;this[_0xa30e('0x44')](_0xd2142c,_0xa30e('0xd2'));this['emitVoiceQueueSummary'](this[_0xa30e('0x12')][_0xd2142c[_0xa30e('0x6e')]],'hangup');}}logger[_0xa30e('0x47')](_0xa30e('0xd3'),_0x1fb4f4[_0xa30e('0x50')],util[_0xa30e('0x40')](this['queueReports'][_0x1fb4f4[_0xa30e('0x50')]],{'showHidden':![],'depth':null}));ami[_0xa30e('0x46')](_0xa30e('0xd4'),this[_0xa30e('0xf')][_0x1fb4f4[_0xa30e('0x50')]]);delete this[_0xa30e('0xf')][_0x1fb4f4['uniqueid']];delete this['channels'][_0x1fb4f4[_0xa30e('0x50')]];}if(this[_0xa30e('0x14')][_0x1fb4f4[_0xa30e('0x50')]]){delete this['variables'][_0x1fb4f4[_0xa30e('0x50')]];}}}catch(_0xe19ba7){logger[_0xa30e('0x3e')]('[%s][voiceQueueReport][hangup]',_0x1fb4f4[_0xa30e('0x50')],util[_0xa30e('0x40')](_0xe19ba7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x2a')]=function(_0x5c1af0){try{if(this[_0xa30e('0x66')](_0x5c1af0)){logger['debug'](_0xa30e('0xd5'),_0x5c1af0[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x5c1af0,{'showHidden':![],'depth':null}));var _0x155462;if(this[_0xa30e('0xf')][_0x5c1af0['transfereeuniqueid']]){_0x155462=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xd6')]]);_0x155462[_0xa30e('0xa4')]=_0x5c1af0['secondtransfererexten'];_0x155462[_0xa30e('0xa6')]=_0x5c1af0[_0xa30e('0xd7')];_0x155462['queuecallerexitreason']=_0xa30e('0xd8');_0x155462[_0xa30e('0x97')]=!![];_0x155462[_0xa30e('0xa2')]=_0xa30e('0xd9');if(this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xd7')]]){var _0x503091=this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xd7')]];this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xd7')]]=this[_0xa30e('0xf')][_0x5c1af0['transfereeuniqueid']];this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xd6')]]=_0x503091;var _0x4b920d=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x5c1af0['transfereeuniqueid']]);_0x4b920d[_0xa30e('0xda')]=!![];}logger[_0xa30e('0x70')](_0xa30e('0xdb'),_0x5c1af0[_0xa30e('0x50')],_0x155462[_0xa30e('0x4c')],_0x155462[_0xa30e('0x53')],_0x155462[_0xa30e('0xa4')],_0x155462[_0xa30e('0xa6')]);}else if(this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xdc')]]){_0x155462=_[_0xa30e('0x83')](this['queueReports'][_0x5c1af0['transfertargetuniqueid']]);_0x155462[_0xa30e('0xa4')]=_0x5c1af0[_0xa30e('0xdd')];_0x155462[_0xa30e('0xa6')]=_0x5c1af0[_0xa30e('0xde')];_0x155462[_0xa30e('0x89')]=_0xa30e('0xd8');_0x155462[_0xa30e('0x97')]=!![];_0x155462[_0xa30e('0xa2')]=_0xa30e('0xd9');if(this[_0xa30e('0xf')][_0x5c1af0['origtransfereruniqueid']]){var _0x503091=this['queueReports'][_0x5c1af0[_0xa30e('0xde')]];this['queueReports'][_0x5c1af0['origtransfereruniqueid']]=this[_0xa30e('0xf')][_0x5c1af0['transfertargetuniqueid']];this[_0xa30e('0xf')][_0x5c1af0[_0xa30e('0xdc')]]=_0x503091;var _0x4b920d=_[_0xa30e('0x83')](this[_0xa30e('0xf')][_0x5c1af0['transfertargetuniqueid']]);_0x4b920d['switch']=!![];}logger[_0xa30e('0x70')](_0xa30e('0xdb'),_0x5c1af0[_0xa30e('0x50')],_0x155462['name'],_0x155462['type'],_0x155462['transferexten'],_0x155462[_0xa30e('0xa6')]);}}}catch(_0x5a6f31){logger[_0xa30e('0x3e')](_0xa30e('0xd5'),_0x5c1af0[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x5a6f31,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x2c')]=function(_0xceab5d){try{if(this[_0xa30e('0x66')](_0xceab5d)){logger[_0xa30e('0x47')](_0xa30e('0xdf'),_0xceab5d[_0xa30e('0x50')],util[_0xa30e('0x40')](_0xceab5d,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0xceab5d['transfereeuniqueid']]){var _0x495993=_['last'](this[_0xa30e('0xf')][_0xceab5d[_0xa30e('0xd6')]]);_0x495993[_0xa30e('0x89')]=_0xa30e('0xe0');_0x495993['transfer']=!![];_0x495993['transfertype']=_0xa30e('0xe1');_0x495993['transferexten']=_0xceab5d[_0xa30e('0xe2')];_0x495993[_0xa30e('0xa6')]=_0xceab5d['transfereeuniqueid'];logger['info']('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0xceab5d[_0xa30e('0x50')],_0x495993['name'],_0x495993[_0xa30e('0x53')],_0x495993[_0xa30e('0xa4')],_0x495993[_0xa30e('0xa6')]);this[_0xa30e('0xc9')]({'event':_0xa30e('0xe3'),'uniqueid':_0xceab5d[_0xa30e('0xd6')],'context':_0xceab5d['context'],'channel':_0xceab5d[_0xa30e('0xe4')]});}}}catch(_0x3c67b7){logger[_0xa30e('0x3e')](_0xa30e('0xdf'),_0xceab5d['uniqueid'],util[_0xa30e('0x40')](_0x3c67b7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0x26')]=function(_0x5f074b){try{if(this[_0xa30e('0x66')](_0x5f074b)){logger[_0xa30e('0x47')]('[%s][voiceQueueReport][musiconholdstart]',_0x5f074b[_0xa30e('0x50')],util['inspect'](_0x5f074b,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x5f074b[_0xa30e('0x50')]]){var _0x43fdc0=_['last'](this[_0xa30e('0xf')][_0x5f074b[_0xa30e('0x50')]]);if(!_[_0xa30e('0x38')](_0x43fdc0[_0xa30e('0xb2')])){_0x43fdc0['mohstarttime']=moment()[_0xa30e('0x4a')](_0xa30e('0x7a'));logger[_0xa30e('0x70')](_0xa30e('0xe5'),_0x5f074b[_0xa30e('0x50')],_0x43fdc0[_0xa30e('0xe6')]);}}}}catch(_0x566a64){logger[_0xa30e('0x3e')]('[%s][voiceQueueReport][musiconholdstart]',_0x5f074b[_0xa30e('0x50')],util['inspect'](_0x566a64,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xa30e('0x28')]=function(_0x4e2dd7){try{if(this[_0xa30e('0x66')](_0x4e2dd7)){logger['debug'](_0xa30e('0xe7'),_0x4e2dd7[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x4e2dd7,{'showHidden':![],'depth':null}));if(this[_0xa30e('0xf')][_0x4e2dd7[_0xa30e('0x50')]]){var _0x2e8574=_[_0xa30e('0x83')](this['queueReports'][_0x4e2dd7[_0xa30e('0x50')]]);if(!_[_0xa30e('0x38')](_0x2e8574[_0xa30e('0xe6')])){_0x2e8574['mohtime']+=moment()[_0xa30e('0xcc')](0x0)[_0xa30e('0xcd')](_0x2e8574['mohstarttime'],_0xa30e('0xa0'));logger[_0xa30e('0x70')](_0xa30e('0xe8'),_0x4e2dd7[_0xa30e('0x50')],_0x2e8574[_0xa30e('0xe9')]);delete _0x2e8574[_0xa30e('0xe6')];}}}}catch(_0x805a5c){logger[_0xa30e('0x3e')](_0xa30e('0xe7'),_0x4e2dd7[_0xa30e('0x50')],util['inspect'](_0x805a5c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xa30e('0xa')][_0xa30e('0xea')]=function(_0x3a1e3f){try{if(this[_0xa30e('0x66')](_0x3a1e3f)){logger[_0xa30e('0x47')](_0xa30e('0xeb'),_0x3a1e3f[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x3a1e3f,{'showHidden':![],'depth':null}));if(_0x3a1e3f[_0xa30e('0xec')][_0xa30e('0x9c')]()===_0xa30e('0xed')){_0x3a1e3f[_0xa30e('0xee')]=_0x3a1e3f['appdata']&&_0x3a1e3f[_0xa30e('0xef')]['startsWith'](_0xa30e('0xf0'))?_0x3a1e3f[_0xa30e('0xef')]:(_0x3a1e3f[_0xa30e('0xef')]||_0x3a1e3f[_0xa30e('0xee')])['toLowerCase']();if(_[_0xa30e('0x9b')](_0x3a1e3f['applicationdata'][_0xa30e('0x9c')](),_0xa30e('0xf1'))){logger['info']('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x3a1e3f['uniqueid'],_0x3a1e3f[_0xa30e('0xec')],_0x3a1e3f[_0xa30e('0xee')]);if(_[_0xa30e('0x67')](this[_0xa30e('0x37')][_0x3a1e3f[_0xa30e('0x50')]]))this[_0xa30e('0x37')][_0x3a1e3f['uniqueid']]={};var _0x74bbbb=_0x3a1e3f[_0xa30e('0xee')]['split']('=');var _0x1fac27=_0x74bbbb[0x0]['toLowerCase']()[_0xa30e('0xf2')](/cdr\((.*)\)/);if(_0x1fac27)this[_0xa30e('0x37')][_0x3a1e3f['uniqueid']][_0x1fac27[0x1]]=_0x74bbbb[0x1];}}}}catch(_0x1f00be){logger[_0xa30e('0x3e')](_0xa30e('0xf3'),_0x3a1e3f[_0xa30e('0x50')],util[_0xa30e('0x40')](_0x1f00be,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index b02edd5..2c31a02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3db2=['Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x33040d,_0x2ca9c7){var _0x217854=function(_0x4c15df){while(--_0x4c15df){_0x33040d['push'](_0x33040d['shift']());}};_0x217854(++_0x2ca9c7);}(_0x3db2,0x10b));var _0x23db=function(_0x4f2330,_0x371cd7){_0x4f2330=_0x4f2330-0x0;var _0x38016f=_0x3db2[_0x4f2330];return _0x38016f;};'use strict';var client=require(_0x23db('0x0'));exports[_0x23db('0x1')]=function(_0x32adec){return function(){_0x32adec[_0x23db('0x2')]=_0x32adec['queue'];return client[_0x23db('0x3')](_0x23db('0x4'),{'body':_0x32adec,'log':_0x23db('0x4')});};};
\ No newline at end of file
+var _0xcc48=['CreateReportAgentPreview','../client','campaign','queue','Request'];(function(_0xfdae33,_0x153961){var _0x58df2e=function(_0x56340d){while(--_0x56340d){_0xfdae33['push'](_0xfdae33['shift']());}};_0x58df2e(++_0x153961);}(_0xcc48,0xb5));var _0x8cc4=function(_0x4eb0b1,_0x1621ac){_0x4eb0b1=_0x4eb0b1-0x0;var _0x1b58bd=_0xcc48[_0x4eb0b1];return _0x1b58bd;};'use strict';var client=require(_0x8cc4('0x0'));exports['createHistory']=function(_0xef0f27){return function(){_0xef0f27[_0x8cc4('0x1')]=_0xef0f27[_0x8cc4('0x2')];return client[_0x8cc4('0x3')](_0x8cc4('0x4'),{'body':_0xef0f27,'log':_0x8cc4('0x4')});};};
\ No newline at end of file
index e6ceab3..913e26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5923=['create','Request','CreateAttachment','../client'];(function(_0x5f3a35,_0x132793){var _0x4735ad=function(_0x36a183){while(--_0x36a183){_0x5f3a35['push'](_0x5f3a35['shift']());}};_0x4735ad(++_0x132793);}(_0x5923,0x1d7));var _0x3592=function(_0x69c7e3,_0x1bf0bf){_0x69c7e3=_0x69c7e3-0x0;var _0x39f03a=_0x5923[_0x69c7e3];return _0x39f03a;};'use strict';var client=require(_0x3592('0x0'));exports[_0x3592('0x1')]=function(_0x2091a0){return client[_0x3592('0x2')](_0x3592('0x3'),{'body':_0x2091a0,'log':_0x3592('0x3')});};
\ No newline at end of file
+var _0x02b6=['../client','create','Request','CreateAttachment'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x02b6,0xf0));var _0x602b=function(_0x287cdc,_0x262dfe){_0x287cdc=_0x287cdc-0x0;var _0x4546e1=_0x02b6[_0x287cdc];return _0x4546e1;};'use strict';var client=require(_0x602b('0x0'));exports[_0x602b('0x1')]=function(_0x300bf0){return client[_0x602b('0x2')](_0x602b('0x3'),{'body':_0x300bf0,'log':_0x602b('0x3')});};
\ No newline at end of file
index fc477c8..cbad04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x3b5bef,_0x215f48){var _0x232fc1=function(_0x1fa3dd){while(--_0x1fa3dd){_0x3b5bef['push'](_0x3b5bef['shift']());}};_0x232fc1(++_0x215f48);}(_0x326f,0xd1));var _0xf326=function(_0x422f96,_0x19d1fc){_0x422f96=_0x422f96-0x0;var _0x518792=_0x326f[_0x422f96];return _0x518792;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x2d2de8,_0x387d19){var _0x5d39cc=function(_0x5bfcb9){while(--_0x5bfcb9){_0x2d2de8['push'](_0x2d2de8['shift']());}};_0x5d39cc(++_0x387d19);}(_0x7a54,0x106));var _0x47a5=function(_0xfd49a8,_0x1a50c8){_0xfd49a8=_0xfd49a8-0x0;var _0x504cca=_0x7a54[_0xfd49a8];return _0x504cca;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index 2247fc6..da4e1c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2279=['CreateCmContact','getContacts','Request','GetCmContact','../client','createContact'];(function(_0x3db964,_0x155186){var _0x4b5d99=function(_0x132961){while(--_0x132961){_0x3db964['push'](_0x3db964['shift']());}};_0x4b5d99(++_0x155186);}(_0x2279,0x148));var _0x9227=function(_0x414858,_0x135c77){_0x414858=_0x414858-0x0;var _0x451bcd=_0x2279[_0x414858];return _0x451bcd;};'use strict';var client=require(_0x9227('0x0'));exports[_0x9227('0x1')]=function(_0x57c88e){return function(){return client['Request'](_0x9227('0x2'),{'body':_0x57c88e,'log':_0x9227('0x2')});};};exports[_0x9227('0x3')]=function(_0xd6d5ca){return function(){return client[_0x9227('0x4')](_0x9227('0x5'),{'options':_0xd6d5ca,'log':_0x9227('0x5')});};};
\ No newline at end of file
+var _0xf515=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xf515,0xa2));var _0x5f51=function(_0x45ebb5,_0x40bc15){_0x45ebb5=_0x45ebb5-0x0;var _0x394391=_0xf515[_0x45ebb5];return _0x394391;};'use strict';var client=require(_0x5f51('0x0'));exports[_0x5f51('0x1')]=function(_0x402de3){return function(){return client[_0x5f51('0x2')](_0x5f51('0x3'),{'body':_0x402de3,'log':_0x5f51('0x3')});};};exports[_0x5f51('0x4')]=function(_0x165de4){return function(){return client[_0x5f51('0x2')](_0x5f51('0x5'),{'options':_0x165de4,'log':_0x5f51('0x5')});};};
\ No newline at end of file
index fedcf14..9ba59c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61e2=['GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','Queue','name','unlockContact','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','Request'];(function(_0x4f11ca,_0x29d79c){var _0x5c1421=function(_0x2f5551){while(--_0x2f5551){_0x4f11ca['push'](_0x4f11ca['shift']());}};_0x5c1421(++_0x29d79c);}(_0x61e2,0x19e));var _0x261e=function(_0x13c862,_0x3fffd0){_0x13c862=_0x13c862-0x0;var _0xc14aab=_0x61e2[_0x13c862];return _0xc14aab;};'use strict';var client=require('../client');var moment=require(_0x261e('0x0'));var _=require(_0x261e('0x1'));exports[_0x261e('0x2')]=function(_0x5ace7b,_0x20d28d){return function(){return client[_0x261e('0x3')](_0x261e('0x4'),{'options':{'where':{'VoiceQueueId':_0x5ace7b},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')}],'limit':_0x20d28d,'raw':![]},'log':_0x261e('0x7')});};};exports[_0x261e('0x8')]=function(_0x184681,_0x15dbb5,_0xe3570){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x184681,'options':{'where':{'VoiceQueueId':_0x15dbb5,'scheduledat':{'$lte':moment()[_0x261e('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xe3570},'log':_0x261e('0x9')});};};exports[_0x261e('0xb')]=function(_0x4a72fd){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x4a72fd,'options':{'where':{'ContactId':_0x4a72fd[_0x261e('0xc')],'ListId':_0x4a72fd[_0x261e('0xd')],'VoiceQueueId':_0x4a72fd[_0x261e('0xe')],'CampaignId':_0x4a72fd[_0x261e('0xf')]}},'log':_0x261e('0xb')});};};exports['destroyContact']=function(_0xbb4cfa,_0x190f10,_0xa56e){return function(){return client[_0x261e('0x3')](_0x261e('0x10'),{'options':{'where':{'VoiceQueueId':_0xbb4cfa,'ListId':_0x190f10,'ContactId':_0xa56e}},'log':'DestroyCmHopper'});};};exports[_0x261e('0x11')]=function(_0x3dd037,_0x14a10a,_0x5a80a7,_0x3f0013){return function(){return client[_0x261e('0x3')](_0x261e('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3dd037,'active':![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x14a10a}}]},'order':[[_0x261e('0x14'),_0x261e('0x15')],[_0x261e('0x16'),_0x3f0013],['id','ASC']],'raw':!![],'limit':_0x5a80a7},'log':_0x261e('0x12')});};};exports['getContactDialerIvr']=function(_0x4af5d8,_0x1c50d0,_0x439602){return function(){return client['Request'](_0x261e('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4af5d8,'active':![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))}},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')}],'order':[['priority',_0x261e('0x15')],[_0x261e('0x16'),_0x439602],['id',_0x261e('0x17')]],'raw':!![],'limit':_0x1c50d0},'log':_0x261e('0x18')});};};exports[_0x261e('0x19')]=function(_0x3071cc,_0x32ef99){return function(){_0x3071cc['campaign']=_0x3071cc['queue'];return client[_0x261e('0x3')]('MoveContactManagedDialer',{'body':_0x3071cc,'options':{'where':{'ContactId':_0x3071cc[_0x261e('0xc')],'ListId':_0x3071cc['ListId'],'VoiceQueueId':_0x3071cc[_0x261e('0xe')],'CampaignId':_0x3071cc[_0x261e('0xf')],'active':_0x32ef99?undefined:!![]}},'log':_0x261e('0x1a')});};};exports[_0x261e('0x1b')]=function(_0x5a8538){return function(){return client[_0x261e('0x3')](_0x261e('0x1c'),{'options':{'where':{'VoiceQueueId':_0x5a8538['id']?_0x5a8538['id']||null:null}},'log':_0x261e('0x1b')});};};exports[_0x261e('0x1d')]=function(_0x24757c){return function(){return client[_0x261e('0x3')](_0x261e('0x1e'),{'options':{'where':{'id':_0x24757c},'include':[{'model':_0x261e('0x5'),'as':_0x261e('0x6')},{'model':_0x261e('0x1f'),'as':_0x261e('0x20'),'attributes':['id','name']},{'model':'VoiceQueue','as':_0x261e('0x21'),'attributes':['id',_0x261e('0x22')]}],'raw':!![]},'log':_0x261e('0x7')});};};exports[_0x261e('0x23')]=function(_0x137f75,_0x471a0f,_0x14719d){return function(){return client[_0x261e('0x3')](_0x261e('0x9'),{'body':_0x137f75,'options':{'where':{'id':_0x471a0f},'limit':_0x14719d},'log':'UpdateCmHopper'});};};exports['getContactRecallMe']=function(_0x399963,_0x521ca6){return function(){return client[_0x261e('0x3')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x399963,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x261e('0xa')](_0x261e('0x13'))},'UserId':{'$in':_0x521ca6}},'order':[[_0x261e('0x14'),_0x261e('0x15')],[_0x261e('0x16'),'DESC'],['id',_0x261e('0x17')]],'include':[{'model':'CmContact','as':_0x261e('0x6')},{'model':_0x261e('0x1f'),'as':_0x261e('0x20'),'attributes':['id',_0x261e('0x22'),_0x261e('0x24')]}],'group':_0x261e('0x25'),'raw':!![]},'log':'GetContactDialer'});};};
\ No newline at end of file
+var _0xf7fe=['getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','VoiceQueueId','CountReScheduled','countReScheduled','GetCmHopperPreview','Agent','name','Queue','getContactRecallMe','User','../client','moment','lodash','getContacts','GetCmHopper','Contact','Request','format','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ContactId','ListId','CampaignId','destroyContact','DestroyCmHopper'];(function(_0x61c7ca,_0x7d345e){var _0xc75428=function(_0x3e9e80){while(--_0x3e9e80){_0x61c7ca['push'](_0x61c7ca['shift']());}};_0xc75428(++_0x7d345e);}(_0xf7fe,0x192));var _0xef7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf7fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xef7f('0x0'));var moment=require(_0xef7f('0x1'));var _=require(_0xef7f('0x2'));exports[_0xef7f('0x3')]=function(_0x51951c,_0x48f0dc){return function(){return client['Request'](_0xef7f('0x4'),{'options':{'where':{'VoiceQueueId':_0x51951c},'include':[{'model':'CmContact','as':_0xef7f('0x5')}],'limit':_0x48f0dc,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x166f49,_0x5c8fdc,_0x3e857b){return function(){return client[_0xef7f('0x6')]('UpdateCmHopper',{'body':_0x166f49,'options':{'where':{'VoiceQueueId':_0x5c8fdc,'scheduledat':{'$lte':moment()[_0xef7f('0x7')](_0xef7f('0x8'))}},'limit':_0x3e857b},'log':_0xef7f('0x9')});};};exports[_0xef7f('0xa')]=function(_0x157671){return function(){return client[_0xef7f('0x6')]('UpdateCmHopper',{'body':_0x157671,'options':{'where':{'ContactId':_0x157671[_0xef7f('0xb')],'ListId':_0x157671[_0xef7f('0xc')],'VoiceQueueId':_0x157671['VoiceQueueId'],'CampaignId':_0x157671[_0xef7f('0xd')]}},'log':_0xef7f('0xa')});};};exports[_0xef7f('0xe')]=function(_0x19c1be,_0x40a686,_0x5a2b9f){return function(){return client['Request'](_0xef7f('0xf'),{'options':{'where':{'VoiceQueueId':_0x19c1be,'ListId':_0x40a686,'ContactId':_0x5a2b9f}},'log':_0xef7f('0xf')});};};exports[_0xef7f('0x10')]=function(_0x18cc2d,_0x29c208,_0x29d871,_0x5f1adc){return function(){return client[_0xef7f('0x6')](_0xef7f('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x18cc2d,'active':![],'scheduledat':{'$lte':moment()[_0xef7f('0x7')](_0xef7f('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x29c208}}]},'order':[[_0xef7f('0x12'),_0xef7f('0x13')],[_0xef7f('0x14'),_0x5f1adc],['id',_0xef7f('0x15')]],'raw':!![],'limit':_0x29d871},'log':_0xef7f('0x11')});};};exports[_0xef7f('0x16')]=function(_0x2bd187,_0x250993,_0x10c579){return function(){return client[_0xef7f('0x6')](_0xef7f('0x11'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2bd187,'active':![],'scheduledat':{'$lte':moment()['format'](_0xef7f('0x8'))}},'include':[{'model':_0xef7f('0x17'),'as':'Contact'}],'order':[['priority',_0xef7f('0x13')],[_0xef7f('0x14'),_0x10c579],['id',_0xef7f('0x15')]],'raw':!![],'limit':_0x250993},'log':_0xef7f('0x18')});};};exports[_0xef7f('0x19')]=function(_0x247473,_0x1cdeb4){return function(){_0x247473[_0xef7f('0x1a')]=_0x247473[_0xef7f('0x1b')];return client['Request'](_0xef7f('0x1c'),{'body':_0x247473,'options':{'where':{'ContactId':_0x247473[_0xef7f('0xb')],'ListId':_0x247473[_0xef7f('0xc')],'VoiceQueueId':_0x247473[_0xef7f('0x1d')],'CampaignId':_0x247473[_0xef7f('0xd')],'active':_0x1cdeb4?undefined:!![]}},'log':_0xef7f('0x1c')});};};exports['countReScheduled']=function(_0x160229){return function(){return client[_0xef7f('0x6')](_0xef7f('0x1e'),{'options':{'where':{'VoiceQueueId':_0x160229['id']?_0x160229['id']||null:null}},'log':_0xef7f('0x1f')});};};exports['getContactPreview']=function(_0x50513c){return function(){return client['Request'](_0xef7f('0x20'),{'options':{'where':{'id':_0x50513c},'include':[{'model':_0xef7f('0x17'),'as':'Contact'},{'model':'User','as':_0xef7f('0x21'),'attributes':['id',_0xef7f('0x22')]},{'model':'VoiceQueue','as':_0xef7f('0x23'),'attributes':['id',_0xef7f('0x22')]}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x474e6a,_0x318b9e,_0x383cce){return function(){return client[_0xef7f('0x6')](_0xef7f('0x9'),{'body':_0x474e6a,'options':{'where':{'id':_0x318b9e},'limit':_0x383cce},'log':_0xef7f('0x9')});};};exports[_0xef7f('0x24')]=function(_0x88942d,_0x285eb7){return function(){return client['Request']('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x88942d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xef7f('0x8'))},'UserId':{'$in':_0x285eb7}},'order':[[_0xef7f('0x12'),_0xef7f('0x13')],[_0xef7f('0x14'),_0xef7f('0x13')],['id','ASC']],'include':[{'model':_0xef7f('0x17'),'as':_0xef7f('0x5')},{'model':_0xef7f('0x25'),'as':'Agent','attributes':['id','name','voicePause']}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xef7f('0x11')});};};
\ No newline at end of file
index 41ea864..3d0f111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['Contact','phone','../client','checkIsBlackList','Request','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x58dfbc,_0x4f1e8f){var _0x87f8ce=function(_0x455f4a){while(--_0x455f4a){_0x58dfbc['push'](_0x58dfbc['shift']());}};_0x87f8ce(++_0x4f1e8f);}(_0x3c81,0x102));var _0x13c8=function(_0x246240,_0x42f421){_0x246240=_0x246240-0x0;var _0x1e3205=_0x3c81[_0x246240];return _0x1e3205;};'use strict';var client=require(_0x13c8('0x0'));exports[_0x13c8('0x1')]=function(_0x48c35b){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'VoiceQueueId':_0x48c35b['VoiceQueueId'],'phone':_0x48c35b['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0x13c8('0x4')]=function(_0x3ec886){return function(){return client[_0x13c8('0x2')](_0x13c8('0x3'),{'options':{'where':{'CampaignId':_0x3ec886[_0x13c8('0x5')],'phone':_0x3ec886[_0x13c8('0x6')][_0x13c8('0x7')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x0102=['checkIsBlackList','Request','GetCmHopperBlack','CampaignId','phone'];(function(_0x1fa760,_0x1bf063){var _0xd8eda1=function(_0x4a21d6){while(--_0x4a21d6){_0x1fa760['push'](_0x1fa760['shift']());}};_0xd8eda1(++_0x1bf063);}(_0x0102,0x186));var _0x2010=function(_0x3bc0ba,_0x2d32ad){_0x3bc0ba=_0x3bc0ba-0x0;var _0x4bbe55=_0x0102[_0x3bc0ba];return _0x4bbe55;};'use strict';var client=require('../client');exports[_0x2010('0x0')]=function(_0xe55e65){return function(){return client[_0x2010('0x1')](_0x2010('0x2'),{'options':{'where':{'VoiceQueueId':_0xe55e65['VoiceQueueId'],'phone':_0xe55e65['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlack'});};};exports['checkIsBlackListIvr']=function(_0x22e49f){return function(){return client[_0x2010('0x1')](_0x2010('0x2'),{'options':{'where':{'CampaignId':_0x22e49f[_0x2010('0x3')],'phone':_0x22e49f['Contact'][_0x2010('0x4')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index d610007..40a3e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa52a=['CreateCmHopperFinal','../client','Request'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xa52a,0x67));var _0xaa52=function(_0x2dc70d,_0x26e805){_0x2dc70d=_0x2dc70d-0x0;var _0x3b9ecc=_0xa52a[_0x2dc70d];return _0x3b9ecc;};'use strict';var client=require(_0xaa52('0x0'));exports['createContact']=function(_0x29d60d){return function(){_0x29d60d['campaign']=_0x29d60d['queue'];return client[_0xaa52('0x1')](_0xaa52('0x2'),{'body':_0x29d60d,'log':_0xaa52('0x2')});};};
\ No newline at end of file
+var _0x337a=['../client','campaign','CreateCmHopperFinal'];(function(_0x8f581a,_0x4250f5){var _0x349b8d=function(_0x4213dd){while(--_0x4213dd){_0x8f581a['push'](_0x8f581a['shift']());}};_0x349b8d(++_0x4250f5);}(_0x337a,0x7b));var _0xa337=function(_0x37c6b4,_0x589032){_0x37c6b4=_0x37c6b4-0x0;var _0x2e0f58=_0x337a[_0x37c6b4];return _0x2e0f58;};'use strict';var client=require(_0xa337('0x0'));exports['createContact']=function(_0x39b9fa){return function(){_0x39b9fa[_0xa337('0x1')]=_0x39b9fa['queue'];return client['Request'](_0xa337('0x2'),{'body':_0x39b9fa,'log':_0xa337('0x2')});};};
\ No newline at end of file
index 9352453..cf31fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8fd=['minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','startOf','createHistory','campaign','queue','CreateCmHopperHistory','Request','AvgHandleTime'];(function(_0x1402f9,_0x3c4025){var _0x2dd64a=function(_0xe621d7){while(--_0xe621d7){_0x1402f9['push'](_0x1402f9['shift']());}};_0x2dd64a(++_0x3c4025);}(_0xa8fd,0x1e7));var _0xda8f=function(_0x3eb5d3,_0xbd0292){_0x3eb5d3=_0x3eb5d3-0x0;var _0x56b544=_0xa8fd[_0x3eb5d3];return _0x56b544;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xda8f('0x0')]=function(_0x4507d0){return function(){_0x4507d0[_0xda8f('0x1')]=_0x4507d0[_0xda8f('0x2')];return client['Request'](_0xda8f('0x3'),{'body':_0x4507d0,'log':_0xda8f('0x3')});};};exports['avgHandleTime']=function(_0x4a6617){return function(){return client[_0xda8f('0x4')](_0xda8f('0x5'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x4a6617,_0xda8f('0x6'))[_0xda8f('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xda8f('0x7')](_0xda8f('0x8'))]}},'raw':![]},'log':_0xda8f('0x9')});};};exports[_0xda8f('0xa')]=function(_0x18a78a){return function(){return client[_0xda8f('0x4')](_0xda8f('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xda8f('0xc'))[_0xda8f('0x7')](_0xda8f('0x8')),moment()[_0xda8f('0xd')]('day')[_0xda8f('0x7')](_0xda8f('0x8'))]},'campaigntype':_0xda8f('0x2')},'raw':![]},'log':_0xda8f('0xb')});};};exports[_0xda8f('0xe')]=function(_0x2c5f10){return function(){return client[_0xda8f('0x4')](_0xda8f('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xda8f('0x10')](_0xda8f('0xc'))['format'](_0xda8f('0x8')),moment()[_0xda8f('0xd')](_0xda8f('0xc'))[_0xda8f('0x7')](_0xda8f('0x8'))]},'campaigntype':'ivr'},'raw':![]},'log':_0xda8f('0xf')});};};
\ No newline at end of file
+var _0x1940=['getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','format','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x5759fb,_0x47334d){var _0x1c3406=function(_0x4db3af){while(--_0x4db3af){_0x5759fb['push'](_0x5759fb['shift']());}};_0x1c3406(++_0x47334d);}(_0x1940,0x185));var _0x0194=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x1940[_0x424a9a];return _0xa7831c;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x0194('0x0')]=function(_0x35c070){return function(){_0x35c070[_0x0194('0x1')]=_0x35c070[_0x0194('0x2')];return client[_0x0194('0x3')](_0x0194('0x4'),{'body':_0x35c070,'log':_0x0194('0x4')});};};exports[_0x0194('0x5')]=function(_0x487682){return function(){return client[_0x0194('0x3')](_0x0194('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x0194('0x7')](_0x487682,_0x0194('0x8'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['format'](_0x0194('0x9'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x0194('0xa')]=function(_0x4139d4){return function(){return client[_0x0194('0x3')](_0x0194('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0194('0xc')](_0x0194('0xd'))[_0x0194('0xe')](_0x0194('0x9')),moment()[_0x0194('0xf')](_0x0194('0xd'))[_0x0194('0xe')](_0x0194('0x9'))]},'campaigntype':_0x0194('0x2')},'raw':![]},'log':_0x0194('0xb')});};};exports[_0x0194('0x10')]=function(_0x364312){return function(){return client[_0x0194('0x3')](_0x0194('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x0194('0xd'))[_0x0194('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x0194('0xf')](_0x0194('0xd'))[_0x0194('0xe')](_0x0194('0x9'))]},'campaigntype':_0x0194('0x12')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index a6f5d51..510e30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f3e=['modem','gateway','faxdetect','tech','TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','localstationid','minrate'];(function(_0x2022ba,_0x1cee00){var _0x58d704=function(_0x178e4f){while(--_0x178e4f){_0x2022ba['push'](_0x2022ba['shift']());}};_0x58d704(++_0x1cee00);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f3e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe6f3('0x0'));exports[_0xe6f3('0x1')]=function(){return function(){return client[_0xe6f3('0x2')](_0xe6f3('0x3'),{'options':{'raw':![],'attributes':['id',_0xe6f3('0x4'),_0xe6f3('0x5'),_0xe6f3('0x6'),'headerinfo',_0xe6f3('0x7'),_0xe6f3('0x8'),'maxrate',_0xe6f3('0x9'),_0xe6f3('0xa'),_0xe6f3('0xb'),'t38timeout',_0xe6f3('0xc'),_0xe6f3('0xd'),_0xe6f3('0xe'),'key'],'include':[{'model':_0xe6f3('0xf'),'as':'Trunk','attributes':['id',_0xe6f3('0x4'),_0xe6f3('0x10'),_0xe6f3('0x11')]}]},'log':_0xe6f3('0x12')});};};exports[_0xe6f3('0x13')]=function(_0x39ae53,_0x4fe8b6){return client[_0xe6f3('0x2')]('NotifyFaxAccount',{'account':{'id':_0x39ae53},'body':_0x4fe8b6,'log':_0xe6f3('0x14')});};
\ No newline at end of file
+var _0x4e7b=['getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','description','ecm','localstationid','minrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','name','callerid'];(function(_0x119e6d,_0xe3377d){var _0x56b2d5=function(_0x31d728){while(--_0x31d728){_0x119e6d['push'](_0x119e6d['shift']());}};_0x56b2d5(++_0xe3377d);}(_0x4e7b,0xf3));var _0xb4e7=function(_0x25e435,_0x5610b1){_0x25e435=_0x25e435-0x0;var _0x1e0c5d=_0x4e7b[_0x25e435];return _0x1e0c5d;};'use strict';var client=require(_0xb4e7('0x0'));exports[_0xb4e7('0x1')]=function(){return function(){return client['Request'](_0xb4e7('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xb4e7('0x3'),_0xb4e7('0x4'),'headerinfo',_0xb4e7('0x5'),_0xb4e7('0x6'),'maxrate',_0xb4e7('0x7'),_0xb4e7('0x8'),_0xb4e7('0x9'),_0xb4e7('0xa'),_0xb4e7('0xb'),'TrunkId',_0xb4e7('0xc'),_0xb4e7('0xd')],'include':[{'model':'Trunk','as':_0xb4e7('0xe'),'attributes':['id',_0xb4e7('0xf'),_0xb4e7('0x10'),'active']}]},'log':_0xb4e7('0x11')});};};exports[_0xb4e7('0x12')]=function(_0x514075,_0x5e40cb){return client['Request']('NotifyFaxAccount',{'account':{'id':_0x514075},'body':_0x5e40cb,'log':_0xb4e7('0x13')});};
\ No newline at end of file
index 13b04c0..8ca1703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cc3=['../client','Request','UpdateFaxMessage'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6cc3,0x1ef));var _0x36cc=function(_0x2e7f96,_0x2ffe43){_0x2e7f96=_0x2e7f96-0x0;var _0x315277=_0x6cc3[_0x2e7f96];return _0x315277;};'use strict';var client=require(_0x36cc('0x0'));exports['update']=function(_0xa7cdfe,_0x1db44c){return client[_0x36cc('0x1')](_0x36cc('0x2'),{'body':_0x1db44c,'options':{'where':{'AttachmentId':_0xa7cdfe}},'log':_0x36cc('0x2')});};
\ No newline at end of file
+var _0x0036=['update','UpdateFaxMessage','../client'];(function(_0x546aaf,_0x1ed138){var _0x1cbf6d=function(_0x36c837){while(--_0x36c837){_0x546aaf['push'](_0x546aaf['shift']());}};_0x1cbf6d(++_0x1ed138);}(_0x0036,0x1ac));var _0x6003=function(_0x2c4831,_0x4f36f9){_0x2c4831=_0x2c4831-0x0;var _0x3dce74=_0x0036[_0x2c4831];return _0x3dce74;};'use strict';var client=require(_0x6003('0x0'));exports[_0x6003('0x1')]=function(_0x12cd67,_0x30034b){return client['Request'](_0x6003('0x2'),{'body':_0x30034b,'options':{'where':{'AttachmentId':_0x12cd67}},'log':_0x6003('0x2')});};
\ No newline at end of file
index 5fb12b1..2156c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de0=['content','Variable','key','keyType','variableName','idField','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x1de0,0x136));var _0x01de=function(_0x5e3ac2,_0x225614){_0x5e3ac2=_0x5e3ac2-0x0;var _0x29a007=_0x1de0[_0x5e3ac2];return _0x29a007;};'use strict';var client=require('../../client');exports[_0x01de('0x0')]=function(){return function(_0x2cd7d7){return client[_0x01de('0x1')](_0x01de('0x2'),{'options':{'raw':![],'attributes':['id',_0x01de('0x3'),_0x01de('0x4'),_0x01de('0x5'),_0x01de('0x6'),'remoteUri',_0x01de('0x7'),_0x01de('0x8'),_0x01de('0x9')],'include':[{'model':_0x01de('0xa'),'as':_0x01de('0xb'),'attributes':['id','name'],'include':[{'model':_0x01de('0xc'),'as':'Subjects','attributes':['id','type',_0x01de('0xd'),'variableName'],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':_0x01de('0xc'),'as':'Descriptions','attributes':['id',_0x01de('0x8'),_0x01de('0xd'),_0x01de('0xf'),_0x01de('0x10'),'keyContent',_0x01de('0x11')],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':_0x01de('0xc'),'as':'Fields','attributes':['id',_0x01de('0x8'),_0x01de('0xd'),_0x01de('0x12'),'nameField','customField','variableName'],'include':[{'model':_0x01de('0xe'),'as':_0x01de('0xe'),'attributes':['id',_0x01de('0x3')]}]},{'model':'Tag','as':'Tags','attributes':['id','name']}]}]},'log':_0x01de('0x2')});};};
\ No newline at end of file
+var _0xf853=['getDeskAccounts','Request','description','password','type','serverUrl','DeskConfiguration','Configurations','name','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','customField','Tag','Tags','GetDeskAccount','../../client'];(function(_0x1be648,_0x1e8622){var _0x281bd1=function(_0x284113){while(--_0x284113){_0x1be648['push'](_0x1be648['shift']());}};_0x281bd1(++_0x1e8622);}(_0xf853,0x14f));var _0x3f85=function(_0x2e249d,_0x41b7e7){_0x2e249d=_0x2e249d-0x0;var _0x1faa37=_0xf853[_0x2e249d];return _0x1faa37;};'use strict';var client=require(_0x3f85('0x0'));exports[_0x3f85('0x1')]=function(){return function(_0x2ec59b){return client[_0x3f85('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name',_0x3f85('0x3'),'username',_0x3f85('0x4'),'remoteUri','authType',_0x3f85('0x5'),_0x3f85('0x6')],'include':[{'model':_0x3f85('0x7'),'as':_0x3f85('0x8'),'attributes':['id',_0x3f85('0x9')],'include':[{'model':_0x3f85('0xa'),'as':_0x3f85('0xb'),'attributes':['id',_0x3f85('0x5'),_0x3f85('0xc'),_0x3f85('0xd')],'include':[{'model':_0x3f85('0xe'),'as':_0x3f85('0xe'),'attributes':['id',_0x3f85('0x9')]}]},{'model':_0x3f85('0xa'),'as':_0x3f85('0xf'),'attributes':['id',_0x3f85('0x5'),_0x3f85('0xc'),_0x3f85('0x10'),_0x3f85('0x11'),_0x3f85('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x3f85('0x9')]}]},{'model':_0x3f85('0xa'),'as':_0x3f85('0x13'),'attributes':['id',_0x3f85('0x5'),_0x3f85('0xc'),'idField','nameField',_0x3f85('0x14'),_0x3f85('0xd')],'include':[{'model':'Variable','as':_0x3f85('0xe'),'attributes':['id',_0x3f85('0x9')]}]},{'model':_0x3f85('0x15'),'as':_0x3f85('0x16'),'attributes':['id',_0x3f85('0x9')]}]}]},'log':_0x3f85('0x17')});};};
\ No newline at end of file
index 779d9c2..edda248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3080=['idField','nameField','customField','../../client','Request','GetDynamics365Account','username','password','remoteUri','clientSecret','serverUrl','description','Configurations','ticketType','Subjects','variableName','Variable','name','Dynamics365Field','keyType','keyContent','Fields','type','content'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x3080,0x1b3));var _0x0308=function(_0x1157b9,_0x20d3c7){_0x1157b9=_0x1157b9-0x0;var _0xe5e54c=_0x3080[_0x1157b9];return _0xe5e54c;};'use strict';var client=require(_0x0308('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x58881a){return client[_0x0308('0x1')](_0x0308('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x0308('0x3'),_0x0308('0x4'),_0x0308('0x5'),'tenantId','clientId',_0x0308('0x6'),_0x0308('0x7'),_0x0308('0x8')],'include':[{'model':'Dynamics365Configuration','as':_0x0308('0x9'),'attributes':['id','name',_0x0308('0xa')],'include':[{'model':'Dynamics365Field','as':_0x0308('0xb'),'attributes':['id','type','content',_0x0308('0xc')],'include':[{'model':_0x0308('0xd'),'as':_0x0308('0xd'),'attributes':['id',_0x0308('0xe')]}]},{'model':_0x0308('0xf'),'as':'Descriptions','attributes':['id','type','content','key',_0x0308('0x10'),_0x0308('0x11'),'variableName'],'include':[{'model':_0x0308('0xd'),'as':'Variable','attributes':['id',_0x0308('0xe')]}]},{'model':_0x0308('0xf'),'as':_0x0308('0x12'),'attributes':['id',_0x0308('0x13'),_0x0308('0x14'),_0x0308('0x15'),_0x0308('0x16'),_0x0308('0x17'),_0x0308('0xc')],'include':[{'model':_0x0308('0xd'),'as':_0x0308('0xd'),'attributes':['id',_0x0308('0xe')]}]}]}]},'log':_0x0308('0x2')});};};
\ No newline at end of file
+var _0xdc13=['name','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Subjects','type','content','variableName','Variable','Dynamics365Field','Descriptions','keyType','Fields','idField','nameField','getDynamics365Accounts','Request','GetDynamics365Account'];(function(_0x2dc367,_0x591c8a){var _0x14845a=function(_0xaef88b){while(--_0xaef88b){_0x2dc367['push'](_0x2dc367['shift']());}};_0x14845a(++_0x591c8a);}(_0xdc13,0x14d));var _0x3dc1=function(_0x559bb4,_0x5a6463){_0x559bb4=_0x559bb4-0x0;var _0x53f32c=_0xdc13[_0x559bb4];return _0x53f32c;};'use strict';var client=require('../../client');exports[_0x3dc1('0x0')]=function(){return function(_0x2690f6){return client[_0x3dc1('0x1')](_0x3dc1('0x2'),{'options':{'raw':![],'attributes':['id',_0x3dc1('0x3'),'username','password',_0x3dc1('0x4'),_0x3dc1('0x5'),_0x3dc1('0x6'),_0x3dc1('0x7'),_0x3dc1('0x8'),_0x3dc1('0x9')],'include':[{'model':_0x3dc1('0xa'),'as':_0x3dc1('0xb'),'attributes':['id',_0x3dc1('0x3'),_0x3dc1('0xc')],'include':[{'model':'Dynamics365Field','as':_0x3dc1('0xd'),'attributes':['id',_0x3dc1('0xe'),_0x3dc1('0xf'),_0x3dc1('0x10')],'include':[{'model':_0x3dc1('0x11'),'as':_0x3dc1('0x11'),'attributes':['id','name']}]},{'model':_0x3dc1('0x12'),'as':_0x3dc1('0x13'),'attributes':['id',_0x3dc1('0xe'),'content','key',_0x3dc1('0x14'),'keyContent',_0x3dc1('0x10')],'include':[{'model':_0x3dc1('0x11'),'as':_0x3dc1('0x11'),'attributes':['id',_0x3dc1('0x3')]}]},{'model':_0x3dc1('0x12'),'as':_0x3dc1('0x15'),'attributes':['id','type',_0x3dc1('0xf'),_0x3dc1('0x16'),_0x3dc1('0x17'),'customField',_0x3dc1('0x10')],'include':[{'model':_0x3dc1('0x11'),'as':_0x3dc1('0x11'),'attributes':['id',_0x3dc1('0x3')]}]}]}]},'log':_0x3dc1('0x2')});};};
\ No newline at end of file
index e01e806..9534a41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c66=['Descriptions','type','keyType','keyContent','idField','nameField','customField','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','Subjects','content','variableName','Variable','FreshdeskField'];(function(_0x50dbbf,_0x2b746a){var _0x4c2f6b=function(_0xa89ac1){while(--_0xa89ac1){_0x50dbbf['push'](_0x50dbbf['shift']());}};_0x4c2f6b(++_0x2b746a);}(_0x3c66,0x8b));var _0x63c6=function(_0x32ba85,_0x1db066){_0x32ba85=_0x32ba85-0x0;var _0x51034d=_0x3c66[_0x32ba85];return _0x51034d;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x57e61e){return client[_0x63c6('0x0')](_0x63c6('0x1'),{'options':{'raw':![],'attributes':['id',_0x63c6('0x2'),_0x63c6('0x3'),_0x63c6('0x4'),_0x63c6('0x5'),_0x63c6('0x6')],'include':[{'model':_0x63c6('0x7'),'as':_0x63c6('0x8'),'attributes':['id',_0x63c6('0x2')],'include':[{'model':_0x63c6('0x9'),'attributes':['id',_0x63c6('0x2')]},{'model':'FreshdeskField','as':_0x63c6('0xa'),'attributes':['id','type',_0x63c6('0xb'),_0x63c6('0xc')],'include':[{'model':'Variable','as':_0x63c6('0xd'),'attributes':['id',_0x63c6('0x2')]}]},{'model':_0x63c6('0xe'),'as':_0x63c6('0xf'),'attributes':['id',_0x63c6('0x10'),_0x63c6('0xb'),'key',_0x63c6('0x11'),_0x63c6('0x12'),_0x63c6('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':'Fields','attributes':['id','type',_0x63c6('0xb'),_0x63c6('0x13'),_0x63c6('0x14'),_0x63c6('0x15'),_0x63c6('0xc')],'include':[{'model':'Variable','as':_0x63c6('0xd'),'attributes':['id',_0x63c6('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0xdd6e=['name','username','apiKey','remoteUri','Tag','FreshdeskField','Subjects','type','content','variableName','key','keyType','Variable','Fields','idField','nameField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request'];(function(_0x4dd71c,_0x23a24e){var _0x8e4e36=function(_0x5c0e){while(--_0x5c0e){_0x4dd71c['push'](_0x4dd71c['shift']());}};_0x8e4e36(++_0x23a24e);}(_0xdd6e,0xa5));var _0xedd6=function(_0x4e4440,_0x45eaad){_0x4e4440=_0x4e4440-0x0;var _0xf36c8f=_0xdd6e[_0x4e4440];return _0xf36c8f;};'use strict';var client=require(_0xedd6('0x0'));exports[_0xedd6('0x1')]=function(){return function(_0x1546be){return client[_0xedd6('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0xedd6('0x3'),_0xedd6('0x4'),_0xedd6('0x5'),_0xedd6('0x6'),'serverUrl'],'include':[{'model':'FreshdeskConfiguration','as':'Configurations','attributes':['id',_0xedd6('0x3')],'include':[{'model':_0xedd6('0x7'),'attributes':['id','name']},{'model':_0xedd6('0x8'),'as':_0xedd6('0x9'),'attributes':['id',_0xedd6('0xa'),_0xedd6('0xb'),_0xedd6('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xedd6('0x3')]}]},{'model':_0xedd6('0x8'),'as':'Descriptions','attributes':['id',_0xedd6('0xa'),_0xedd6('0xb'),_0xedd6('0xd'),_0xedd6('0xe'),'keyContent',_0xedd6('0xc')],'include':[{'model':'Variable','as':_0xedd6('0xf'),'attributes':['id',_0xedd6('0x3')]}]},{'model':_0xedd6('0x8'),'as':_0xedd6('0x10'),'attributes':['id','type',_0xedd6('0xb'),_0xedd6('0x11'),_0xedd6('0x12'),_0xedd6('0x13'),_0xedd6('0xc')],'include':[{'model':_0xedd6('0xf'),'as':_0xedd6('0xf'),'attributes':['id',_0xedd6('0x3')]}]}]}]},'log':_0xedd6('0x14')});};};
\ No newline at end of file
index 1f942ed..429911d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aa3=['FreshsalesField','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','../../client','getFreshsalesAccounts','Request','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations'];(function(_0x172f64,_0x16e787){var _0x320b65=function(_0x209dae){while(--_0x209dae){_0x172f64['push'](_0x172f64['shift']());}};_0x320b65(++_0x16e787);}(_0x2aa3,0x83));var _0x32aa=function(_0x1ff2a5,_0x1a8372){_0x1ff2a5=_0x1ff2a5-0x0;var _0x35c020=_0x2aa3[_0x1ff2a5];return _0x35c020;};'use strict';var client=require(_0x32aa('0x0'));exports[_0x32aa('0x1')]=function(){return function(_0x107517){return client[_0x32aa('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id','name',_0x32aa('0x3'),_0x32aa('0x4'),_0x32aa('0x5'),_0x32aa('0x6')],'include':[{'model':_0x32aa('0x7'),'as':_0x32aa('0x8'),'attributes':['id','name'],'include':[{'model':_0x32aa('0x9'),'as':_0x32aa('0xa'),'attributes':['id',_0x32aa('0xb'),_0x32aa('0xc'),_0x32aa('0xd')],'include':[{'model':_0x32aa('0xe'),'as':_0x32aa('0xe'),'attributes':['id',_0x32aa('0xf')]}]},{'model':'FreshsalesField','as':_0x32aa('0x10'),'attributes':['id','type',_0x32aa('0xc'),_0x32aa('0x11'),_0x32aa('0x12'),_0x32aa('0x13'),'variableName'],'include':[{'model':_0x32aa('0xe'),'as':_0x32aa('0xe'),'attributes':['id',_0x32aa('0xf')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
+var _0x5075=['GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','remoteUri','serverUrl','FreshsalesConfiguration','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','keyType','keyContent'];(function(_0x13b27b,_0x28db07){var _0x377110=function(_0x255c1d){while(--_0x255c1d){_0x13b27b['push'](_0x13b27b['shift']());}};_0x377110(++_0x28db07);}(_0x5075,0x73));var _0x5507=function(_0x423a9a,_0x2ec223){_0x423a9a=_0x423a9a-0x0;var _0x564475=_0x5075[_0x423a9a];return _0x564475;};'use strict';var client=require(_0x5507('0x0'));exports[_0x5507('0x1')]=function(){return function(_0x701161){return client[_0x5507('0x2')](_0x5507('0x3'),{'options':{'raw':![],'attributes':['id',_0x5507('0x4'),_0x5507('0x5'),'apiKey',_0x5507('0x6'),_0x5507('0x7')],'include':[{'model':_0x5507('0x8'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x5507('0x9'),'as':_0x5507('0xa'),'attributes':['id','type',_0x5507('0xb'),_0x5507('0xc')],'include':[{'model':_0x5507('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x5507('0x9'),'as':_0x5507('0xe'),'attributes':['id',_0x5507('0xf'),_0x5507('0xb'),'key',_0x5507('0x10'),_0x5507('0x11'),'variableName'],'include':[{'model':_0x5507('0xd'),'as':_0x5507('0xd'),'attributes':['id','name']}]}]}]},'log':_0x5507('0x12')});};};
\ No newline at end of file
index d8308c2..90055a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf30=['securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','getSalesforceAccounts','Request','GetSalesforceAccount','name','password','remoteUri','clientId','clientSecret'];(function(_0x562e59,_0x110cd2){var _0x44ce54=function(_0xb5a117){while(--_0xb5a117){_0x562e59['push'](_0x562e59['shift']());}};_0x44ce54(++_0x110cd2);}(_0xaf30,0xd0));var _0x0af3=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xaf30[_0x122ef9];return _0x42fba0;};'use strict';var client=require('../../client');exports[_0x0af3('0x0')]=function(){return function(_0x5efee9){return client[_0x0af3('0x1')](_0x0af3('0x2'),{'options':{'raw':![],'attributes':['id',_0x0af3('0x3'),'username',_0x0af3('0x4'),_0x0af3('0x5'),_0x0af3('0x6'),_0x0af3('0x7'),_0x0af3('0x8'),_0x0af3('0x9'),_0x0af3('0xa')],'include':[{'model':_0x0af3('0xb'),'as':_0x0af3('0xc'),'attributes':['id',_0x0af3('0x3'),_0x0af3('0xd'),_0x0af3('0xe'),_0x0af3('0xf'),_0x0af3('0x10'),_0x0af3('0x11'),_0x0af3('0x12'),_0x0af3('0x13')],'include':[{'model':_0x0af3('0x14'),'as':_0x0af3('0x15'),'include':[{'model':_0x0af3('0x16'),'as':'Variable','attributes':['id','name']}]},{'model':'SalesforceField','as':_0x0af3('0x17'),'include':[{'model':_0x0af3('0x16'),'as':_0x0af3('0x16'),'attributes':['id',_0x0af3('0x3')]}]},{'model':_0x0af3('0x14'),'as':'Fields','include':[{'model':_0x0af3('0x16'),'as':_0x0af3('0x16'),'attributes':['id',_0x0af3('0x3')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0xcc97=['ticketType','additionalSearchAccount','additionalSearchLead','SalesforceField','Subjects','Variable','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','Configurations','moduleSearch','moduleCreate'];(function(_0x3c4dad,_0x25ffd5){var _0x1a4f49=function(_0x6fe6c){while(--_0x6fe6c){_0x3c4dad['push'](_0x3c4dad['shift']());}};_0x1a4f49(++_0x25ffd5);}(_0xcc97,0x1a8));var _0x7cc9=function(_0x1c51bb,_0x5cebf2){_0x1c51bb=_0x1c51bb-0x0;var _0x40f8da=_0xcc97[_0x1c51bb];return _0x40f8da;};'use strict';var client=require(_0x7cc9('0x0'));exports[_0x7cc9('0x1')]=function(){return function(_0x547599){return client[_0x7cc9('0x2')](_0x7cc9('0x3'),{'options':{'raw':![],'attributes':['id',_0x7cc9('0x4'),_0x7cc9('0x5'),_0x7cc9('0x6'),_0x7cc9('0x7'),_0x7cc9('0x8'),_0x7cc9('0x9'),_0x7cc9('0xa'),_0x7cc9('0xb'),_0x7cc9('0xc')],'include':[{'model':'SalesforceConfiguration','as':_0x7cc9('0xd'),'attributes':['id',_0x7cc9('0x4'),_0x7cc9('0xe'),_0x7cc9('0xf'),_0x7cc9('0x10'),'leadId',_0x7cc9('0x11'),'additionalSearchContact',_0x7cc9('0x12')],'include':[{'model':_0x7cc9('0x13'),'as':_0x7cc9('0x14'),'include':[{'model':_0x7cc9('0x15'),'as':_0x7cc9('0x15'),'attributes':['id',_0x7cc9('0x4')]}]},{'model':_0x7cc9('0x13'),'as':'Descriptions','include':[{'model':'Variable','as':_0x7cc9('0x15'),'attributes':['id','name']}]},{'model':_0x7cc9('0x13'),'as':'Fields','include':[{'model':_0x7cc9('0x15'),'as':_0x7cc9('0x15'),'attributes':['id',_0x7cc9('0x4')]}]}]}]},'log':_0x7cc9('0x3')});};};
\ No newline at end of file
index a960508..cf0bd04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','email','remoteUri','ServicenowConfiguration','ServicenowField','type','content','variableName','Variable','Descriptions','keyType','idField','nameField'];(function(_0x3b0b41,_0x9d760c){var _0x1ad463=function(_0x2d4f11){while(--_0x2d4f11){_0x3b0b41['push'](_0x3b0b41['shift']());}};_0x1ad463(++_0x9d760c);}(_0x53ec,0x192));var _0xc53e=function(_0xdbff26,_0xfc8995){_0xdbff26=_0xdbff26-0x0;var _0x4adb23=_0x53ec[_0xdbff26];return _0x4adb23;};'use strict';var client=require(_0xc53e('0x0'));exports[_0xc53e('0x1')]=function(){return function(_0x2d5f51){return client[_0xc53e('0x2')](_0xc53e('0x3'),{'options':{'raw':![],'attributes':['id',_0xc53e('0x4'),'description',_0xc53e('0x5'),'password',_0xc53e('0x6'),_0xc53e('0x7'),'serverUrl'],'include':[{'model':_0xc53e('0x8'),'as':'Configurations','attributes':['id',_0xc53e('0x4')],'include':[{'model':_0xc53e('0x9'),'as':'Subjects','attributes':['id',_0xc53e('0xa'),_0xc53e('0xb'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':_0xc53e('0xe'),'attributes':['id',_0xc53e('0xa'),'content','key',_0xc53e('0xf'),'keyContent','variableName'],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':'Fields','attributes':['id','type',_0xc53e('0xb'),_0xc53e('0x10'),_0xc53e('0x11'),_0xc53e('0x12'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]}]}]},'log':_0xc53e('0x13')});};};
\ No newline at end of file
+var _0x4819=['GetServicenowAccount','name','description','username','password','email','remoteUri','ServicenowConfiguration','ServicenowField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request'];(function(_0xc54c54,_0x59053b){var _0x476786=function(_0x2d6a30){while(--_0x2d6a30){_0xc54c54['push'](_0xc54c54['shift']());}};_0x476786(++_0x59053b);}(_0x4819,0xcd));var _0x9481=function(_0x190681,_0x590f58){_0x190681=_0x190681-0x0;var _0x4f2ada=_0x4819[_0x190681];return _0x4f2ada;};'use strict';var client=require('../../client');exports[_0x9481('0x0')]=function(){return function(_0x3307b0){return client[_0x9481('0x1')](_0x9481('0x2'),{'options':{'raw':![],'attributes':['id',_0x9481('0x3'),_0x9481('0x4'),_0x9481('0x5'),_0x9481('0x6'),_0x9481('0x7'),_0x9481('0x8'),'serverUrl'],'include':[{'model':_0x9481('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x9481('0xa'),'as':_0x9481('0xb'),'attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0xe')],'include':[{'model':'Variable','as':_0x9481('0xf'),'attributes':['id','name']}]},{'model':_0x9481('0xa'),'as':'Descriptions','attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0x10'),_0x9481('0x11'),_0x9481('0x12'),_0x9481('0xe')],'include':[{'model':_0x9481('0xf'),'as':_0x9481('0xf'),'attributes':['id',_0x9481('0x3')]}]},{'model':'ServicenowField','as':'Fields','attributes':['id',_0x9481('0xc'),_0x9481('0xd'),_0x9481('0x13'),_0x9481('0x14'),_0x9481('0x15'),_0x9481('0xe')],'include':[{'model':_0x9481('0xf'),'as':'Variable','attributes':['id',_0x9481('0x3')]}]}]}]},'log':_0x9481('0x16')});};};
\ No newline at end of file
index 9cf285c..ea9b96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['name','username','password','remoteUri','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','nameField','getSugarcrmAccounts','GetSugarcrmAccount'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x57ca,0x108));var _0xa57c=function(_0x52c8b6,_0x4471d7){_0x52c8b6=_0x52c8b6-0x0;var _0x43a26c=_0x57ca[_0x52c8b6];return _0x43a26c;};'use strict';var client=require('../../client');exports[_0xa57c('0x0')]=function(){return function(_0x4ad696){return client['Request'](_0xa57c('0x1'),{'options':{'raw':![],'attributes':['id',_0xa57c('0x2'),_0xa57c('0x3'),_0xa57c('0x4'),_0xa57c('0x5'),'serverUrl'],'include':[{'model':_0xa57c('0x6'),'as':_0xa57c('0x7'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),_0xa57c('0xc')],'include':[{'model':'Variable','as':_0xa57c('0xd'),'attributes':['id','name']}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0xe'),'attributes':['id','type',_0xa57c('0xb'),'key',_0xa57c('0xf'),_0xa57c('0x10'),'variableName'],'include':[{'model':_0xa57c('0xd'),'as':'Variable','attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0x8'),'as':_0xa57c('0x11'),'attributes':['id',_0xa57c('0xa'),_0xa57c('0xb'),'idField',_0xa57c('0x12'),'customField',_0xa57c('0xc')],'include':[{'model':_0xa57c('0xd'),'as':_0xa57c('0xd'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x1')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x18b5e8,_0x51e875){var _0x25baed=function(_0x3fcdf9){while(--_0x3fcdf9){_0x18b5e8['push'](_0x18b5e8['shift']());}};_0x25baed(++_0x51e875);}(_0x14a0,0x8e));var _0x014a=function(_0x44ee79,_0x41e740){_0x44ee79=_0x44ee79-0x0;var _0x362223=_0x14a0[_0x44ee79];return _0x362223;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index 8522720..5736d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x193a=['Request','GetVtigerAccount','description','accessKey','remoteUri','serverUrl','Configurations','name','Subjects','type','variableName','Variable','Descriptions','key','keyContent','VtigerField','Fields','content','nameField','../../client','getVtigerAccounts'];(function(_0xd60420,_0x5d135f){var _0x2be732=function(_0x50d108){while(--_0x50d108){_0xd60420['push'](_0xd60420['shift']());}};_0x2be732(++_0x5d135f);}(_0x193a,0xbb));var _0xa193=function(_0x186926,_0x3ee500){_0x186926=_0x186926-0x0;var _0x47173f=_0x193a[_0x186926];return _0x47173f;};'use strict';var client=require(_0xa193('0x0'));exports[_0xa193('0x1')]=function(){return function(_0x1bbdb3){return client[_0xa193('0x2')](_0xa193('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa193('0x4'),'username',_0xa193('0x5'),_0xa193('0x6'),_0xa193('0x7')],'include':[{'model':'VtigerConfiguration','as':_0xa193('0x8'),'attributes':['id',_0xa193('0x9')],'include':[{'model':'VtigerField','as':_0xa193('0xa'),'attributes':['id',_0xa193('0xb'),'content',_0xa193('0xc')],'include':[{'model':_0xa193('0xd'),'as':'Variable','attributes':['id',_0xa193('0x9')]}]},{'model':'VtigerField','as':_0xa193('0xe'),'attributes':['id',_0xa193('0xb'),'content',_0xa193('0xf'),'keyType',_0xa193('0x10'),_0xa193('0xc')],'include':[{'model':'Variable','as':_0xa193('0xd'),'attributes':['id',_0xa193('0x9')]}]},{'model':_0xa193('0x11'),'as':_0xa193('0x12'),'attributes':['id','type',_0xa193('0x13'),'idField',_0xa193('0x14'),'customField',_0xa193('0xc')],'include':[{'model':_0xa193('0xd'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xa193('0x3')});};};
\ No newline at end of file
+var _0x8ed0=['serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','Variable','key','keyContent','variableName','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x8ed0,0x8b));var _0x08ed=function(_0xa82d96,_0x272ff9){_0xa82d96=_0xa82d96-0x0;var _0x5e5d09=_0x8ed0[_0xa82d96];return _0x5e5d09;};'use strict';var client=require(_0x08ed('0x0'));exports[_0x08ed('0x1')]=function(){return function(_0x169997){return client[_0x08ed('0x2')](_0x08ed('0x3'),{'options':{'raw':![],'attributes':['id',_0x08ed('0x4'),_0x08ed('0x5'),'username',_0x08ed('0x6'),_0x08ed('0x7'),_0x08ed('0x8')],'include':[{'model':_0x08ed('0x9'),'as':'Configurations','attributes':['id',_0x08ed('0x4')],'include':[{'model':_0x08ed('0xa'),'as':_0x08ed('0xb'),'attributes':['id',_0x08ed('0xc'),_0x08ed('0xd'),'variableName'],'include':[{'model':_0x08ed('0xe'),'as':_0x08ed('0xe'),'attributes':['id','name']}]},{'model':_0x08ed('0xa'),'as':'Descriptions','attributes':['id',_0x08ed('0xc'),_0x08ed('0xd'),_0x08ed('0xf'),'keyType',_0x08ed('0x10'),_0x08ed('0x11')],'include':[{'model':_0x08ed('0xe'),'as':'Variable','attributes':['id',_0x08ed('0x4')]}]},{'model':_0x08ed('0xa'),'as':'Fields','attributes':['id',_0x08ed('0xc'),_0x08ed('0xd'),_0x08ed('0x12'),_0x08ed('0x13'),_0x08ed('0x14'),_0x08ed('0x11')],'include':[{'model':_0x08ed('0xe'),'as':_0x08ed('0xe'),'attributes':['id',_0x08ed('0x4')]}]}]}]},'log':_0x08ed('0x3')});};};
\ No newline at end of file
index eda7a59..ac5ba51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe905=['key','keyType','Fields','idField','customField','GetZendeskAccount','../../client','name','username','password','token','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','content','variableName','Variable'];(function(_0x2d364e,_0x301c5e){var _0x1b9312=function(_0x1b05bb){while(--_0x1b05bb){_0x2d364e['push'](_0x2d364e['shift']());}};_0x1b9312(++_0x301c5e);}(_0xe905,0xc3));var _0x5e90=function(_0x1b0037,_0x3223a7){_0x1b0037=_0x1b0037-0x0;var _0x51375b=_0xe905[_0x1b0037];return _0x51375b;};'use strict';var client=require(_0x5e90('0x0'));exports['getZendeskAccounts']=function(){return function(_0x2b3f5d){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x5e90('0x1'),_0x5e90('0x2'),_0x5e90('0x3'),_0x5e90('0x4'),_0x5e90('0x5'),_0x5e90('0x6'),_0x5e90('0x7'),_0x5e90('0x8')],'include':[{'model':_0x5e90('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x5e90('0xa'),'attributes':['id',_0x5e90('0x1')]},{'model':_0x5e90('0xb'),'as':'Subjects','attributes':['id',_0x5e90('0x8'),_0x5e90('0xc'),_0x5e90('0xd')],'include':[{'model':_0x5e90('0xe'),'as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]},{'model':_0x5e90('0xb'),'as':'Descriptions','attributes':['id','type',_0x5e90('0xc'),_0x5e90('0xf'),_0x5e90('0x10'),'keyContent',_0x5e90('0xd')],'include':[{'model':'Variable','as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]},{'model':_0x5e90('0xb'),'as':_0x5e90('0x11'),'attributes':['id',_0x5e90('0x8'),_0x5e90('0xc'),_0x5e90('0x12'),'nameField',_0x5e90('0x13'),_0x5e90('0xd')],'include':[{'model':_0x5e90('0xe'),'as':_0x5e90('0xe'),'attributes':['id',_0x5e90('0x1')]}]}]}]},'log':_0x5e90('0x14')});};};
\ No newline at end of file
+var _0x20c4=['../../client','getZendeskAccounts','GetZendeskAccount','name','username','token','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','type','content','Variable','variableName','Fields','idField'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x20c4,0xc8));var _0x420c=function(_0x108925,_0x7ea3){_0x108925=_0x108925-0x0;var _0x34fb32=_0x20c4[_0x108925];return _0x34fb32;};'use strict';var client=require(_0x420c('0x0'));exports[_0x420c('0x1')]=function(){return function(_0x109c19){return client['Request'](_0x420c('0x2'),{'options':{'raw':![],'attributes':['id',_0x420c('0x3'),_0x420c('0x4'),'password',_0x420c('0x5'),_0x420c('0x6'),_0x420c('0x7'),_0x420c('0x8'),'type'],'include':[{'model':_0x420c('0x9'),'as':_0x420c('0xa'),'attributes':['id',_0x420c('0x3')],'include':[{'model':_0x420c('0xb'),'attributes':['id',_0x420c('0x3')]},{'model':_0x420c('0xc'),'as':_0x420c('0xd'),'attributes':['id',_0x420c('0xe'),_0x420c('0xf'),'variableName'],'include':[{'model':'Variable','as':_0x420c('0x10'),'attributes':['id',_0x420c('0x3')]}]},{'model':_0x420c('0xc'),'as':'Descriptions','attributes':['id',_0x420c('0xe'),_0x420c('0xf'),'key','keyType','keyContent',_0x420c('0x11')],'include':[{'model':_0x420c('0x10'),'as':_0x420c('0x10'),'attributes':['id','name']}]},{'model':'ZendeskField','as':_0x420c('0x12'),'attributes':['id',_0x420c('0xe'),_0x420c('0xf'),_0x420c('0x13'),'nameField','customField','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x420c('0x3')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 6c3a839..a31b9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b42=['key','keyContent','Fields','type','idField','../../client','getZohoAccounts','Request','GetZohoAccount','host','zone','clientId','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','description','ZohoField','Subjects','content','variableName','Variable','Descriptions'];(function(_0x43b100,_0x4eca73){var _0x205fbf=function(_0x5afa0f){while(--_0x5afa0f){_0x43b100['push'](_0x43b100['shift']());}};_0x205fbf(++_0x4eca73);}(_0x0b42,0xd5));var _0x20b4=function(_0x5990c6,_0x13d5a7){_0x5990c6=_0x5990c6-0x0;var _0x517776=_0x0b42[_0x5990c6];return _0x517776;};'use strict';var client=require(_0x20b4('0x0'));exports[_0x20b4('0x1')]=function(){return function(_0x329c71){return client[_0x20b4('0x2')](_0x20b4('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x20b4('0x4'),_0x20b4('0x5'),_0x20b4('0x6'),'clientSecret',_0x20b4('0x7'),_0x20b4('0x8'),_0x20b4('0x9')],'include':[{'model':_0x20b4('0xa'),'as':_0x20b4('0xb'),'attributes':['id',_0x20b4('0xc'),_0x20b4('0xd'),'moduleSearch',_0x20b4('0xe')],'include':[{'model':_0x20b4('0xf'),'as':_0x20b4('0x10'),'attributes':['id','type',_0x20b4('0x11'),_0x20b4('0x12')],'include':[{'model':'Variable','as':_0x20b4('0x13'),'attributes':['id',_0x20b4('0xc')]}]},{'model':_0x20b4('0xf'),'as':_0x20b4('0x14'),'attributes':['id','type','content',_0x20b4('0x15'),'keyType',_0x20b4('0x16'),'variableName'],'include':[{'model':_0x20b4('0x13'),'as':_0x20b4('0x13'),'attributes':['id',_0x20b4('0xc')]}]},{'model':'ZohoField','as':_0x20b4('0x17'),'attributes':['id',_0x20b4('0x18'),_0x20b4('0x11'),_0x20b4('0x19'),'nameField','customField','variableName'],'include':[{'model':_0x20b4('0x13'),'as':'Variable','attributes':['id',_0x20b4('0xc')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x2aeb=['key','keyContent','Fields','idField','nameField','customField','../../client','getZohoAccounts','Request','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','name','moduleCreate','ZohoField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x1266dd,_0x4bb582){var _0x293111=function(_0x2f0a89){while(--_0x2f0a89){_0x1266dd['push'](_0x1266dd['shift']());}};_0x293111(++_0x4bb582);}(_0x2aeb,0x172));var _0xb2ae=function(_0x427612,_0xbeb540){_0x427612=_0x427612-0x0;var _0x4ba8b4=_0x2aeb[_0x427612];return _0x4ba8b4;};'use strict';var client=require(_0xb2ae('0x0'));exports[_0xb2ae('0x1')]=function(){return function(_0x371c43){return client[_0xb2ae('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id','name',_0xb2ae('0x3'),_0xb2ae('0x4'),_0xb2ae('0x5'),_0xb2ae('0x6'),_0xb2ae('0x7'),_0xb2ae('0x8'),_0xb2ae('0x9'),_0xb2ae('0xa')],'include':[{'model':_0xb2ae('0xb'),'as':_0xb2ae('0xc'),'attributes':['id',_0xb2ae('0xd'),_0xb2ae('0xe'),'moduleSearch',_0xb2ae('0x3')],'include':[{'model':_0xb2ae('0xf'),'as':_0xb2ae('0x10'),'attributes':['id',_0xb2ae('0x11'),_0xb2ae('0x12'),_0xb2ae('0x13')],'include':[{'model':'Variable','as':_0xb2ae('0x14'),'attributes':['id',_0xb2ae('0xd')]}]},{'model':_0xb2ae('0xf'),'as':_0xb2ae('0x15'),'attributes':['id',_0xb2ae('0x11'),'content',_0xb2ae('0x16'),'keyType',_0xb2ae('0x17'),_0xb2ae('0x13')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb2ae('0xd')]}]},{'model':_0xb2ae('0xf'),'as':_0xb2ae('0x18'),'attributes':['id','type','content',_0xb2ae('0x19'),_0xb2ae('0x1a'),_0xb2ae('0x1b'),'variableName'],'include':[{'model':_0xb2ae('0x14'),'as':_0xb2ae('0x14'),'attributes':['id',_0xb2ae('0xd')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 7032ea5..3d1be68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x518f=['seconds','inbound','calleridnum','agent','accountcode','toNumber','uniqueid','voice','membername','starttime','endtime','diff','outbound','exten','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','isNil','format','SIP/%s','lastAssignedTo','interface','TALKING','queuecallerleaveAt'];(function(_0x5bea65,_0x4318f9){var _0x4ee575=function(_0x332244){while(--_0x332244){_0x5bea65['push'](_0x5bea65['shift']());}};_0x4ee575(++_0x4318f9);}(_0x518f,0x126));var _0xf518=function(_0x4f46f1,_0x2a39b9){_0x4f46f1=_0x4f46f1-0x0;var _0x5e146b=_0x518f[_0x4f46f1];return _0x5e146b;};'use strict';var moment=require(_0xf518('0x0'));var _=require(_0xf518('0x1'));var util=require(_0xf518('0x2'));var client=require(_0xf518('0x3'));exports[_0xf518('0x4')]=function(_0x5a6093){var _0x3f5413=_0x5a6093[_0xf518('0x5')]||_0x5a6093[_0xf518('0x6')];return client[_0xf518('0x7')](_0xf518('0x8'),{'body':{'channel':'voice','membername':_0x5a6093['lastAssignedTo'],'interface':_[_0xf518('0x9')](_0x5a6093['interface'])?util[_0xf518('0xa')](_0xf518('0xb'),_0x5a6093[_0xf518('0xc')]):_0x5a6093[_0xf518('0xd')],'type':_0xf518('0xe'),'enterAt':_0x5a6093[_0xf518('0xf')],'exitAt':_0x3f5413,'duration':moment(_0x3f5413)['diff'](_0x5a6093[_0xf518('0xf')],_0xf518('0x10')),'data1':_0xf518('0x11'),'data2':_0x5a6093[_0xf518('0x12')],'data3':_0x5a6093['exten'],'data4':null,'data5':_0x5a6093['queue'],'role':_0xf518('0x13'),'internal':_0x5a6093[_0xf518('0x14')]?_[_0xf518('0x15')](_0x5a6093[_0xf518('0x14')]):undefined,'uniqueid':_0x5a6093[_0xf518('0x16')]},'log':_0xf518('0x8')});};exports['voiceDialReport']=function(_0x5e2bcc){return client['Request'](_0xf518('0x8'),{'body':{'channel':_0xf518('0x17'),'membername':_0x5e2bcc[_0xf518('0x18')],'interface':_0x5e2bcc['interface'],'type':_0xf518('0xe'),'enterAt':_0x5e2bcc[_0xf518('0x19')],'exitAt':_0x5e2bcc[_0xf518('0x1a')],'duration':moment(_0x5e2bcc[_0xf518('0x1a')])[_0xf518('0x1b')](_0x5e2bcc['starttime'],'seconds')>=0x0?moment(_0x5e2bcc[_0xf518('0x1a')])[_0xf518('0x1b')](_0x5e2bcc[_0xf518('0x19')],_0xf518('0x10')):null,'data1':_0xf518('0x1c'),'data2':_0x5e2bcc['accountcode'],'data3':_0x5e2bcc[_0xf518('0x1d')],'data4':_0x5e2bcc[_0xf518('0x1e')]||null,'role':_0xf518('0x13'),'internal':_0x5e2bcc[_0xf518('0x14')]?_[_0xf518('0x15')](_0x5e2bcc[_0xf518('0x14')]):undefined,'uniqueid':_0x5e2bcc[_0xf518('0x16')]},'log':_0xf518('0x8')});};
\ No newline at end of file
+var _0xa79a=['util','../client','voiceQueueReport','queuecallercompleteAt','Request','CreateMemberReport','voice','lastAssignedTo','format','SIP/%s','interface','TALKING','queuecallerleaveAt','diff','calleridnum','exten','queue','agent','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','seconds','accountcode','moment','lodash'];(function(_0x463980,_0x196732){var _0x420d5e=function(_0x4dccb7){while(--_0x4dccb7){_0x463980['push'](_0x463980['shift']());}};_0x420d5e(++_0x196732);}(_0xa79a,0x1da));var _0xaa79=function(_0x3b12b4,_0x5a5937){_0x3b12b4=_0x3b12b4-0x0;var _0x4f4055=_0xa79a[_0x3b12b4];return _0x4f4055;};'use strict';var moment=require(_0xaa79('0x0'));var _=require(_0xaa79('0x1'));var util=require(_0xaa79('0x2'));var client=require(_0xaa79('0x3'));exports[_0xaa79('0x4')]=function(_0x412977){var _0x5b328e=_0x412977[_0xaa79('0x5')]||_0x412977['queuecallerexitAt'];return client[_0xaa79('0x6')](_0xaa79('0x7'),{'body':{'channel':_0xaa79('0x8'),'membername':_0x412977[_0xaa79('0x9')],'interface':_['isNil'](_0x412977['interface'])?util[_0xaa79('0xa')](_0xaa79('0xb'),_0x412977['lastAssignedTo']):_0x412977[_0xaa79('0xc')],'type':_0xaa79('0xd'),'enterAt':_0x412977[_0xaa79('0xe')],'exitAt':_0x5b328e,'duration':moment(_0x5b328e)[_0xaa79('0xf')](_0x412977['queuecallerleaveAt'],'seconds'),'data1':'inbound','data2':_0x412977[_0xaa79('0x10')],'data3':_0x412977[_0xaa79('0x11')],'data4':null,'data5':_0x412977[_0xaa79('0x12')],'role':_0xaa79('0x13'),'internal':_0x412977['accountcode']?_[_0xaa79('0x14')](_0x412977['accountcode']):undefined,'uniqueid':_0x412977[_0xaa79('0x15')]},'log':_0xaa79('0x7')});};exports[_0xaa79('0x16')]=function(_0x4a666b){return client[_0xaa79('0x6')](_0xaa79('0x7'),{'body':{'channel':_0xaa79('0x8'),'membername':_0x4a666b[_0xaa79('0x17')],'interface':_0x4a666b[_0xaa79('0xc')],'type':_0xaa79('0xd'),'enterAt':_0x4a666b[_0xaa79('0x18')],'exitAt':_0x4a666b['endtime'],'duration':moment(_0x4a666b[_0xaa79('0x19')])[_0xaa79('0xf')](_0x4a666b[_0xaa79('0x18')],_0xaa79('0x1a'))>=0x0?moment(_0x4a666b[_0xaa79('0x19')])[_0xaa79('0xf')](_0x4a666b['starttime'],_0xaa79('0x1a')):null,'data1':'outbound','data2':_0x4a666b[_0xaa79('0x1b')],'data3':_0x4a666b[_0xaa79('0x11')],'data4':_0x4a666b['dialstring']||null,'role':_0xaa79('0x13'),'internal':_0x4a666b[_0xaa79('0x1b')]?_[_0xaa79('0x14')](_0x4a666b[_0xaa79('0x1b')]):undefined,'uniqueid':_0x4a666b[_0xaa79('0x15')]},'log':_0xaa79('0x7')});};
\ No newline at end of file
index 0a5bd8f..0d425b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4e=['../client','getSettings','Request','stopRecordingOnTransfer','GetSettings'];(function(_0x2fc8a9,_0x5db275){var _0x5005fd=function(_0x515649){while(--_0x515649){_0x2fc8a9['push'](_0x2fc8a9['shift']());}};_0x5005fd(++_0x5db275);}(_0xee4e,0x122));var _0xeee4=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xee4e[_0x2a6809];return _0x11c371;};'use strict';var client=require(_0xeee4('0x0'));exports[_0xeee4('0x1')]=function(){return client[_0xeee4('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xeee4('0x3')]},'log':_0xeee4('0x4')});};
\ No newline at end of file
+var _0xa1b9=['ShowSetting','stopRecordingOnTransfer','GetSettings','../client','Request'];(function(_0xa6cb09,_0x39410f){var _0x12b437=function(_0x1813cc){while(--_0x1813cc){_0xa6cb09['push'](_0xa6cb09['shift']());}};_0x12b437(++_0x39410f);}(_0xa1b9,0x71));var _0x9a1b=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa1b9[_0x3635ce];return _0x97ecd0;};'use strict';var client=require(_0x9a1b('0x0'));exports['getSettings']=function(){return client[_0x9a1b('0x1')](_0x9a1b('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9a1b('0x3')]},'log':_0x9a1b('0x4')});};
\ No newline at end of file
index 30c794f..b68de1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec8=['GetTemplate','name','html','../client','getTemplates','Request'];(function(_0x22ce82,_0x574678){var _0x143aaf=function(_0x40ffd4){while(--_0x40ffd4){_0x22ce82['push'](_0x22ce82['shift']());}};_0x143aaf(++_0x574678);}(_0x3ec8,0x1c5));var _0x83ec=function(_0x3c9090,_0x4682ca){_0x3c9090=_0x3c9090-0x0;var _0x175790=_0x3ec8[_0x3c9090];return _0x175790;};'use strict';var client=require(_0x83ec('0x0'));exports[_0x83ec('0x1')]=function(_0x42c3f3){return function(_0x58c493){return client[_0x83ec('0x2')](_0x83ec('0x3'),{'options':{'raw':!![],'attributes':['id',_0x83ec('0x4'),_0x83ec('0x5')]},'log':_0x83ec('0x3')});};};
\ No newline at end of file
+var _0xa16d=['../client','getTemplates','Request','GetTemplate','html'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0xa16d,0xaa));var _0xda16=function(_0x1a809b,_0x4c15e3){_0x1a809b=_0x1a809b-0x0;var _0x5d90e6=_0xa16d[_0x1a809b];return _0x5d90e6;};'use strict';var client=require(_0xda16('0x0'));exports[_0xda16('0x1')]=function(_0x54e28c){return function(_0xc3b2e5){return client[_0xda16('0x2')](_0xda16('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0xda16('0x4')]},'log':_0xda16('0x3')});};};
\ No newline at end of file
index 2c7f406..81327ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0108=['Condition','AnyConditions','Action','Actions','action','data1','data2','data3','data4','data5','data7','../client','getTriggers','Request','name','status','AllConditions','field','operator','value'];(function(_0x315e91,_0x55e6c3){var _0x2b3b08=function(_0x4d6d3d){while(--_0x4d6d3d){_0x315e91['push'](_0x315e91['shift']());}};_0x2b3b08(++_0x55e6c3);}(_0x0108,0xbf));var _0x8010=function(_0x1daafa,_0x5562d5){_0x1daafa=_0x1daafa-0x0;var _0x421f30=_0x0108[_0x1daafa];return _0x421f30;};'use strict';var client=require(_0x8010('0x0'));exports[_0x8010('0x1')]=function(_0x524531){return function(_0x226616){return client[_0x8010('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x8010('0x3'),'channel',_0x8010('0x4')],'include':[{'model':'Condition','as':_0x8010('0x5'),'attributes':['id',_0x8010('0x6'),_0x8010('0x7'),_0x8010('0x8')]},{'model':_0x8010('0x9'),'as':_0x8010('0xa'),'attributes':['id',_0x8010('0x6'),'operator','value']},{'model':_0x8010('0xb'),'as':_0x8010('0xc'),'attributes':['id',_0x8010('0xd'),_0x8010('0xe'),_0x8010('0xf'),_0x8010('0x10'),_0x8010('0x11'),_0x8010('0x12'),'data6',_0x8010('0x13')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0x4b4a=['data4','data5','getTriggers','Request','GetTrigger','channel','status','Condition','AllConditions','value','AnyConditions','field','operator','Action','Actions','action','data1','data2','data3'];(function(_0x47c8fa,_0x57159d){var _0xa12c9a=function(_0x35a420){while(--_0x35a420){_0x47c8fa['push'](_0x47c8fa['shift']());}};_0xa12c9a(++_0x57159d);}(_0x4b4a,0xe6));var _0xa4b4=function(_0x5cc556,_0x158710){_0x5cc556=_0x5cc556-0x0;var _0x12103b=_0x4b4a[_0x5cc556];return _0x12103b;};'use strict';var client=require('../client');exports[_0xa4b4('0x0')]=function(_0x235ba4){return function(_0x1d9d35){return client[_0xa4b4('0x1')](_0xa4b4('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xa4b4('0x3'),_0xa4b4('0x4')],'include':[{'model':_0xa4b4('0x5'),'as':_0xa4b4('0x6'),'attributes':['id','field','operator',_0xa4b4('0x7')]},{'model':'Condition','as':_0xa4b4('0x8'),'attributes':['id',_0xa4b4('0x9'),_0xa4b4('0xa'),_0xa4b4('0x7')]},{'model':_0xa4b4('0xb'),'as':_0xa4b4('0xc'),'attributes':['id',_0xa4b4('0xd'),_0xa4b4('0xe'),_0xa4b4('0xf'),_0xa4b4('0x10'),_0xa4b4('0x11'),_0xa4b4('0x12'),'data6','data7']}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 6b1244b..d27480a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f7d=['defaultuser','../client','getTrunks','GetTrunk','name','registry'];(function(_0x32bc64,_0x13d382){var _0x5a38a8=function(_0x4356ca){while(--_0x4356ca){_0x32bc64['push'](_0x32bc64['shift']());}};_0x5a38a8(++_0x13d382);}(_0x5f7d,0x6d));var _0xd5f7=function(_0x179ef4,_0x6efb67){_0x179ef4=_0x179ef4-0x0;var _0x4ef972=_0x5f7d[_0x179ef4];return _0x4ef972;};'use strict';var client=require(_0xd5f7('0x0'));exports[_0xd5f7('0x1')]=function(_0x1a46e8){return function(_0x1109c7){return client['Request'](_0xd5f7('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xd5f7('0x3'),_0xd5f7('0x4'),_0xd5f7('0x5')]},'log':_0xd5f7('0x2')});};};
\ No newline at end of file
+var _0x1fdc=['getTrunks','Request','GetTrunk','name','registry','defaultuser','../client'];(function(_0x56ccbc,_0x10c4cb){var _0x262719=function(_0x3f83b9){while(--_0x3f83b9){_0x56ccbc['push'](_0x56ccbc['shift']());}};_0x262719(++_0x10c4cb);}(_0x1fdc,0x8b));var _0xc1fd=function(_0x5f382f,_0x3f1432){_0x5f382f=_0x5f382f-0x0;var _0x3bb11b=_0x1fdc[_0x5f382f];return _0x3bb11b;};'use strict';var client=require(_0xc1fd('0x0'));exports[_0xc1fd('0x1')]=function(_0x4b8084){return function(_0x6a4afa){return client[_0xc1fd('0x2')](_0xc1fd('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xc1fd('0x4'),_0xc1fd('0x5'),_0xc1fd('0x6')]},'log':_0xc1fd('0x3')});};};
\ No newline at end of file
index 372d90c..35ac1f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x32ed5b,_0x207b27){var _0x465935=function(_0x359f51){while(--_0x359f51){_0x32ed5b['push'](_0x32ed5b['shift']());}};_0x465935(++_0x207b27);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
+var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0x2de80b,_0x16f05e){var _0x5c3b0d=function(_0xd7e9e7){while(--_0xd7e9e7){_0x2de80b['push'](_0x2de80b['shift']());}};_0x5c3b0d(++_0x16f05e);}(_0x70e0,0x17b));var _0x070e=function(_0x48200f,_0x5837b4){_0x48200f=_0x48200f-0x0;var _0x4d9eb7=_0x70e0[_0x48200f];return _0x4d9eb7;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
index 66034be..aaf03b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db7=['UpdateVoiceAgentReport','../client','Request','CreateVoiceAgentReport'];(function(_0x584dd7,_0x4e8ea0){var _0x4b6bae=function(_0x20f5cc){while(--_0x20f5cc){_0x584dd7['push'](_0x584dd7['shift']());}};_0x4b6bae(++_0x4e8ea0);}(_0x7db7,0xa5));var _0x77db=function(_0x5d1932,_0x3cf679){_0x5d1932=_0x5d1932-0x0;var _0x5181d0=_0x7db7[_0x5d1932];return _0x5181d0;};'use strict';var client=require(_0x77db('0x0'));exports['create']=function(_0x32d6cc){return client[_0x77db('0x1')](_0x77db('0x2'),{'body':_0x32d6cc,'log':_0x77db('0x2')});};exports['update']=function(_0x64a0a8,_0x23230a,_0x313f0d){return client['Request'](_0x77db('0x3'),{'body':_0x64a0a8,'options':{'where':{'uniqueid':_0x23230a,'interface':_0x313f0d,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0xa9df=['UpdateVoiceAgentReport','../client','create','Request','CreateVoiceAgentReport','update'];(function(_0xc048e2,_0x3825ef){var _0x4012ed=function(_0x40740b){while(--_0x40740b){_0xc048e2['push'](_0xc048e2['shift']());}};_0x4012ed(++_0x3825ef);}(_0xa9df,0x1b7));var _0xfa9d=function(_0x57abd4,_0x5ddc8e){_0x57abd4=_0x57abd4-0x0;var _0x5495b1=_0xa9df[_0x57abd4];return _0x5495b1;};'use strict';var client=require(_0xfa9d('0x0'));exports[_0xfa9d('0x1')]=function(_0x4e2d19){return client[_0xfa9d('0x2')](_0xfa9d('0x3'),{'body':_0x4e2d19,'log':_0xfa9d('0x3')});};exports[_0xfa9d('0x4')]=function(_0x44d435,_0x464dee,_0x59d4c1){return client[_0xfa9d('0x2')](_0xfa9d('0x5'),{'body':_0x44d435,'options':{'where':{'uniqueid':_0x464dee,'interface':_0x59d4c1,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index 9512da5..4594788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e6=['GetVoiceCallReport','outbound','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','type','disposition','billableseconds','GetVoiceCallReports','util','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','getVoiceCallReports'];(function(_0x1dd78c,_0x522162){var _0x37b054=function(_0x2ece12){while(--_0x2ece12){_0x1dd78c['push'](_0x1dd78c['shift']());}};_0x37b054(++_0x522162);}(_0x24e6,0xb3));var _0x624e=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x24e6[_0x397e5f];return _0x5302b8;};'use strict';var moment=require('moment');var util=require(_0x624e('0x0'));var _=require('lodash');var client=require(_0x624e('0x1'));exports[_0x624e('0x2')]=function(_0x427746){return client[_0x624e('0x3')](_0x624e('0x4'),{'body':_[_0x624e('0x5')](_0x427746,{'source':_0x427746[_0x624e('0x6')],'destinationcontext':_0x427746[_0x624e('0x7')],'callerid':_0x427746[_0x624e('0x8')],'amaflags':'DOCUMENTATION'}),'log':_0x624e('0x4')});};exports[_0x624e('0x9')]=function(){return function(){return client[_0x624e('0x3')](_0x624e('0xa'),{'options':{'where':{'type':[_0x624e('0xb')],'createdAt':{'$between':[moment()[_0x624e('0xc')]('day')[_0x624e('0xd')](_0x624e('0xe')),moment()[_0x624e('0xf')](_0x624e('0x10'))[_0x624e('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x624e('0x11'),_0x624e('0x12'),'duration',_0x624e('0x13')]},'log':_0x624e('0x14')});};};
\ No newline at end of file
+var _0xdd96=['Request','CreateVoiceCallReport','calleridnum','context','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','day','YYYY-MM-DD\x20HH:mm:ss','format','type','disposition','billableseconds','GetVoiceCallReports','moment','util','lodash','../client'];(function(_0x118db8,_0x3ffaab){var _0x283c15=function(_0x20cb12){while(--_0x20cb12){_0x118db8['push'](_0x118db8['shift']());}};_0x283c15(++_0x3ffaab);}(_0xdd96,0x188));var _0x6dd9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd96[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x6dd9('0x0'));var util=require(_0x6dd9('0x1'));var _=require(_0x6dd9('0x2'));var client=require(_0x6dd9('0x3'));exports['create']=function(_0x529e35){return client[_0x6dd9('0x4')](_0x6dd9('0x5'),{'body':_['merge'](_0x529e35,{'source':_0x529e35[_0x6dd9('0x6')],'destinationcontext':_0x529e35[_0x6dd9('0x7')],'callerid':_0x529e35['callerid'],'amaflags':_0x6dd9('0x8')}),'log':_0x6dd9('0x5')});};exports[_0x6dd9('0x9')]=function(){return function(){return client[_0x6dd9('0x4')](_0x6dd9('0xa'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf'](_0x6dd9('0xb'))['format'](_0x6dd9('0xc')),moment()['endOf'](_0x6dd9('0xb'))[_0x6dd9('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x6dd9('0xe'),_0x6dd9('0xf'),'duration',_0x6dd9('0x10')]},'log':_0x6dd9('0x11')});};};
\ No newline at end of file
index b75e45f..ca08867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4260=['../client','create'];(function(_0x15ec4e,_0x40b7e0){var _0xb5e5dd=function(_0x42bdd7){while(--_0x42bdd7){_0x15ec4e['push'](_0x15ec4e['shift']());}};_0xb5e5dd(++_0x40b7e0);}(_0x4260,0x1a8));var _0x0426=function(_0x43beb4,_0x20daf4){_0x43beb4=_0x43beb4-0x0;var _0x5a4267=_0x4260[_0x43beb4];return _0x5a4267;};'use strict';var client=require(_0x0426('0x0'));exports[_0x0426('0x1')]=function(_0x163578){return client['Request']('CreateVoiceDialReport',{'body':_0x163578,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x78a7=['CreateVoiceDialReport','../client'];(function(_0x422be2,_0x1c439e){var _0x1b820e=function(_0x513cc8){while(--_0x513cc8){_0x422be2['push'](_0x422be2['shift']());}};_0x1b820e(++_0x1c439e);}(_0x78a7,0xcf));var _0x778a=function(_0x3ed203,_0x4e3a3c){_0x3ed203=_0x3ed203-0x0;var _0x558502=_0x78a7[_0x3ed203];return _0x558502;};'use strict';var client=require(_0x778a('0x0'));exports['create']=function(_0x3fbe89){return client['Request'](_0x778a('0x1'),{'body':_0x3fbe89,'log':_0x778a('0x1')});};
\ No newline at end of file
index bf37c64..ec7d80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c2=['GetVoiceExtension','exten','recordingFormat','getVoiceExtensions'];(function(_0x41d432,_0x20e878){var _0x1650f9=function(_0x27f177){while(--_0x27f177){_0x41d432['push'](_0x41d432['shift']());}};_0x1650f9(++_0x20e878);}(_0x26c2,0x130));var _0x226c=function(_0x32659a,_0x8d9871){_0x32659a=_0x32659a-0x0;var _0x1ebbea=_0x26c2[_0x32659a];return _0x1ebbea;};'use strict';var client=require('../client');exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0x226c('0x0'),{'options':{'raw':!![],'attributes':['id',_0x226c('0x1'),_0x226c('0x2')],'where':{'VoiceExtensionId':null}},'log':_0x226c('0x3')});};};
\ No newline at end of file
+var _0xc112=['recordingFormat','../client','getVoiceExtensions','Request','exten'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0xc112,0xec));var _0x2c11=function(_0x1a057f,_0x4e7f36){_0x1a057f=_0x1a057f-0x0;var _0x146696=_0xc112[_0x1a057f];return _0x146696;};'use strict';var client=require(_0x2c11('0x0'));exports[_0x2c11('0x1')]=function(){return function(){return client[_0x2c11('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x2c11('0x3'),_0x2c11('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x2c11('0x1')});};};
\ No newline at end of file
index 9fc94e0..1f997fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x10690f,_0x2b9f94){var _0x421583=function(_0x6f246b){while(--_0x6f246b){_0x10690f['push'](_0x10690f['shift']());}};_0x421583(++_0x2b9f94);}(_0xf494,0x1c6));var _0x4f49=function(_0x3eb8a8,_0x2af5e9){_0x3eb8a8=_0x3eb8a8-0x0;var _0x173073=_0xf494[_0x3eb8a8];return _0x173073;};'use strict';var client=require(_0x4f49('0x0'));exports[_0x4f49('0x1')]=function(){return function(){return client[_0x4f49('0x2')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x4f49('0x3'),_0x4f49('0x4'),_0x4f49('0x5'),_0x4f49('0x6'),_0x4f49('0x7'),_0x4f49('0x8'),_0x4f49('0x9'),_0x4f49('0xa'),_0x4f49('0xb'),_0x4f49('0xc'),_0x4f49('0xd'),'dialPredictiveOptimization','dialPredictiveOptimizationPercentage',_0x4f49('0xe'),_0x4f49('0xf'),_0x4f49('0x10'),_0x4f49('0x11'),_0x4f49('0x12'),_0x4f49('0x13'),_0x4f49('0x14'),_0x4f49('0x15'),'dialCongestionRetryFrequency',_0x4f49('0x16'),_0x4f49('0x17'),'dialNoAnswerMaxRetry',_0x4f49('0x18'),'dialGlobalMaxRetry','dialTimezone',_0x4f49('0x19'),_0x4f49('0x1a'),'dialCheckDuplicateType',_0x4f49('0x1b'),_0x4f49('0x1c'),_0x4f49('0x1d'),_0x4f49('0x1e'),_0x4f49('0x1f'),_0x4f49('0x20'),_0x4f49('0x21'),'dialAMDMaximumNumberOfWords',_0x4f49('0x22'),_0x4f49('0x23'),_0x4f49('0x24'),'dialRecallMeTimeout','dialRecallInQueue',_0x4f49('0x25'),_0x4f49('0x26'),_0x4f49('0x27'),'dialQueueProject2',_0x4f49('0x7'),_0x4f49('0x28'),_0x4f49('0x29'),'dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0x4f49('0x2a'),_0x4f49('0x2b'),_0x4f49('0x2c'),_0x4f49('0x2d'),'dialMachineRetryFrequency',_0x4f49('0x2e'),_0x4f49('0x2f'),_0x4f49('0x30'),_0x4f49('0x31'),_0x4f49('0x32'),'dialPreviewAutoRecallMe'],'include':[{'model':_0x4f49('0x33'),'as':_0x4f49('0x33'),'attributes':['id',_0x4f49('0x3'),'callerid',_0x4f49('0x34')]},{'model':_0x4f49('0x35'),'as':_0x4f49('0x36'),'attributes':['id',_0x4f49('0x3')]},{'model':_0x4f49('0x33'),'as':_0x4f49('0x37'),'attributes':['id','name','callerid',_0x4f49('0x34')]},{'model':_0x4f49('0x38'),'as':'Interval','attributes':['id',_0x4f49('0x3')],'include':[{'model':_0x4f49('0x38'),'as':_0x4f49('0x39'),'attributes':['id','name',_0x4f49('0x3a')]}]}]},'log':_0x4f49('0x1')});};};
\ No newline at end of file
+var _0x4279=['dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','Trunk','Pause','mandatoryDispositionPause','TrunkBackup','callerid','active','Interval','getVoiceQueues','Request','name','acw','acwTimeout','autopause','type','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialNoSuchNumberRetryFrequency'];(function(_0x2cb48e,_0x4cac3c){var _0x26d76d=function(_0x1807c5){while(--_0x1807c5){_0x2cb48e['push'](_0x2cb48e['shift']());}};_0x26d76d(++_0x4cac3c);}(_0x4279,0x8d));var _0x9427=function(_0x2762d2,_0x7702c5){_0x2762d2=_0x2762d2-0x0;var _0x7c8058=_0x4279[_0x2762d2];return _0x7c8058;};'use strict';var client=require('../client');exports[_0x9427('0x0')]=function(){return function(){return client[_0x9427('0x1')]('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x9427('0x2'),_0x9427('0x3'),_0x9427('0x4'),_0x9427('0x5'),'monitor_format',_0x9427('0x6'),'dialActive',_0x9427('0x7'),_0x9427('0x8'),'dialLimitQueue',_0x9427('0x9'),_0x9427('0xa'),_0x9427('0xb'),'dialPredictiveInterval',_0x9427('0xc'),'dialOriginateCallerIdNumber',_0x9427('0xd'),'dialQueueOptions','dialQueueTimeout',_0x9427('0xe'),_0x9427('0xf'),_0x9427('0x10'),_0x9427('0x11'),_0x9427('0x12'),_0x9427('0x13'),_0x9427('0x14'),_0x9427('0x15'),'dialTimezone',_0x9427('0x16'),_0x9427('0x17'),_0x9427('0x18'),_0x9427('0x19'),_0x9427('0x1a'),_0x9427('0x1b'),_0x9427('0x1c'),_0x9427('0x1d'),_0x9427('0x1e'),_0x9427('0x1f'),_0x9427('0x20'),_0x9427('0x21'),_0x9427('0x22'),'timeout',_0x9427('0x23'),_0x9427('0x24'),_0x9427('0x25'),'dialAgiAfterHangupAgent','dialAgiAfterHangupClient',_0x9427('0x26'),'monitor_format',_0x9427('0x27'),_0x9427('0x28'),'dialCutDigit','dialNoSuchNumberMaxRetry',_0x9427('0x29'),_0x9427('0x2a'),_0x9427('0x2b'),_0x9427('0x2c'),_0x9427('0x2d'),_0x9427('0x2e'),_0x9427('0x2f'),_0x9427('0x30'),_0x9427('0x31'),_0x9427('0x32'),_0x9427('0x33'),_0x9427('0x34'),_0x9427('0x35')],'include':[{'model':_0x9427('0x36'),'as':_0x9427('0x36'),'attributes':['id',_0x9427('0x2'),'callerid','active']},{'model':_0x9427('0x37'),'as':_0x9427('0x38'),'attributes':['id',_0x9427('0x2')]},{'model':_0x9427('0x36'),'as':_0x9427('0x39'),'attributes':['id',_0x9427('0x2'),_0x9427('0x3a'),_0x9427('0x3b')]},{'model':_0x9427('0x3c'),'as':_0x9427('0x3c'),'attributes':['id',_0x9427('0x2')],'include':[{'model':_0x9427('0x3c'),'as':'Intervals','attributes':['id',_0x9427('0x2'),'interval']}]}]},'log':_0x9427('0x0')});};};
\ No newline at end of file
index 7e30cc2..77187d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x469f5e,_0x8f7674){var _0x4d4d20=function(_0x258b0b){while(--_0x258b0b){_0x469f5e['push'](_0x469f5e['shift']());}};_0x4d4d20(++_0x8f7674);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x487261,_0x4432b6){var _0x5663c5=function(_0x2155d9){while(--_0x2155d9){_0x487261['push'](_0x487261['shift']());}};_0x5663c5(++_0x4432b6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xa9e0[_0x8de54f];return _0x14cba4;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 685d721..e333ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78cd=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x22c6b1,_0x4d9813){var _0x2aeb05=function(_0x2254d0){while(--_0x2254d0){_0x22c6b1['push'](_0x22c6b1['shift']());}};_0x2aeb05(++_0x4d9813);}(_0x78cd,0x18c));var _0xd78c=function(_0x3d9e8f,_0x197be8){_0x3d9e8f=_0x3d9e8f-0x0;var _0x52dd70=_0x78cd[_0x3d9e8f];return _0x52dd70;};'use strict';var client=require('../client');exports[_0xd78c('0x0')]=function(_0x58f6dd){return function(){return client[_0xd78c('0x1')](_0xd78c('0x2'),{'options':{'where':{'VoiceQueueId':_0x58f6dd,'paused':!![]},'raw':!![]},'log':_0xd78c('0x0')});};};
\ No newline at end of file
+var _0x1697=['Request','getVoiceQueueRtPauses','../client'];(function(_0x4063a4,_0x19d730){var _0x17908d=function(_0x3ce714){while(--_0x3ce714){_0x4063a4['push'](_0x4063a4['shift']());}};_0x17908d(++_0x19d730);}(_0x1697,0xfb));var _0x7169=function(_0x311909,_0x414bf7){_0x311909=_0x311909-0x0;var _0x8d3163=_0x1697[_0x311909];return _0x8d3163;};'use strict';var client=require(_0x7169('0x0'));exports['getVoiceQueueRtPauses']=function(_0x4f3feb){return function(){return client[_0x7169('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x4f3feb,'paused':!![]},'raw':!![]},'log':_0x7169('0x2')});};};
\ No newline at end of file
index e950b7d..04511e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x434e89,_0x132188){var _0x3e9a66=function(_0x4946ee){while(--_0x4946ee){_0x434e89['push'](_0x434e89['shift']());}};_0x3e9a66(++_0x132188);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x4b1ede,_0x8b2cc6){var _0x1f2995=function(_0x4f65cc){while(--_0x4f65cc){_0x4b1ede['push'](_0x4b1ede['shift']());}};_0x1f2995(++_0x8b2cc6);}(_0x7a54,0x106));var _0x47a5=function(_0x22a45f,_0x30b051){_0x22a45f=_0x22a45f-0x0;var _0x33e01a=_0x7a54[_0x22a45f];return _0x33e01a;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 7751515..fbdc61f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27fe=['transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','isexternal','context','extension','blind','attendedTransfer','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfererexten','transfereechannel'];(function(_0x48a237,_0x3f4b59){var _0x280fc4=function(_0x237dd4){while(--_0x237dd4){_0x48a237['push'](_0x48a237['shift']());}};_0x280fc4(++_0x3f4b59);}(_0x27fe,0x66));var _0xe27f=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x27fe[_0x3c2a69];return _0x596bc8;};'use strict';var client=require(_0xe27f('0x0'));exports[_0xe27f('0x1')]={};exports[_0xe27f('0x2')]=function(_0x271b76){return client[_0xe27f('0x3')](_0xe27f('0x4'),{'body':{'result':_0x271b76[_0xe27f('0x5')],'transfererchannel':_0x271b76[_0xe27f('0x6')],'transferercalleridnum':_0x271b76[_0xe27f('0x7')],'transferercalleridname':_0x271b76[_0xe27f('0x8')],'transfererconnectedlinenum':_0x271b76['transfererconnectedlinenum'],'transfererconnectedlinename':_0x271b76[_0xe27f('0x9')],'transfereraccountcode':_0x271b76['transfereraccountcode'],'transferercontext':_0x271b76['transferercontext'],'transfererexten':_0x271b76[_0xe27f('0xa')],'transfererlinkedid':_0x271b76['transfererlinkedid'],'transfereechannel':_0x271b76[_0xe27f('0xb')],'transfereecalleridnum':_0x271b76['transfereecalleridnum'],'transfereecalleridname':_0x271b76[_0xe27f('0xc')],'transfereeconnectedlinenum':_0x271b76[_0xe27f('0xd')],'transfereeconnectedlinename':_0x271b76['transfereeconnectedlinename'],'transfereeaccountcode':_0x271b76[_0xe27f('0xe')],'transfereecontext':_0x271b76[_0xe27f('0xf')],'transfereeexten':_0x271b76[_0xe27f('0x10')],'transfereelinkedid':_0x271b76['transfereelinkedid'],'isexternal':_0x271b76[_0xe27f('0x11')],'context':_0x271b76[_0xe27f('0x12')],'extension':_0x271b76[_0xe27f('0x13')],'type':_0xe27f('0x14')},'log':_0xe27f('0x4')});};exports[_0xe27f('0x15')]=function(_0x44e647){return client[_0xe27f('0x3')](_0xe27f('0x4'),{'body':{'result':_0x44e647[_0xe27f('0x5')],'transfererchannel':_0x44e647['origtransfererchannel'],'transferercalleridnum':_0x44e647[_0xe27f('0x16')],'transferercalleridname':_0x44e647[_0xe27f('0x17')],'transfererconnectedlinenum':_0x44e647['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x44e647[_0xe27f('0x18')],'transfereraccountcode':_0x44e647['origtransfereraccountcode'],'transferercontext':_0x44e647['secondtransferercontext'],'transfererexten':_0x44e647[_0xe27f('0x19')],'transfererlinkedid':_0x44e647[_0xe27f('0x1a')],'transfereechannel':_0x44e647[_0xe27f('0x1b')],'transfereecalleridnum':_0x44e647[_0xe27f('0x1c')],'transfereecalleridname':_0x44e647[_0xe27f('0x1d')],'transfereeconnectedlinenum':_0x44e647[_0xe27f('0x1e')],'transfereeconnectedlinename':_0x44e647[_0xe27f('0x1f')],'transfereeaccountcode':_0x44e647[_0xe27f('0x20')],'transfereecontext':_0x44e647['transfertargetcontext'],'transfereeexten':_0x44e647[_0xe27f('0x21')],'transfereelinkedid':_0x44e647[_0xe27f('0x22')],'isexternal':_0x44e647[_0xe27f('0x11')],'context':_0x44e647[_0xe27f('0x23')],'extension':_0x44e647[_0xe27f('0x24')],'type':_0xe27f('0x25')},'log':_0xe27f('0x4')});};
\ No newline at end of file
+var _0x9dac=['transfereraccountcode','transfererexten','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereelinkedid','context','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','origtransferercontext','origtransfererexten','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9dac,0x1e7));var _0xc9da=function(_0x3e7008,_0x56d436){_0x3e7008=_0x3e7008-0x0;var _0x4ce8df=_0x9dac[_0x3e7008];return _0x4ce8df;};'use strict';var client=require('../client');exports['transfers']={};exports['blindTransfer']=function(_0x4d5735){return client[_0xc9da('0x0')](_0xc9da('0x1'),{'body':{'result':_0x4d5735[_0xc9da('0x2')],'transfererchannel':_0x4d5735[_0xc9da('0x3')],'transferercalleridnum':_0x4d5735[_0xc9da('0x4')],'transferercalleridname':_0x4d5735[_0xc9da('0x5')],'transfererconnectedlinenum':_0x4d5735[_0xc9da('0x6')],'transfererconnectedlinename':_0x4d5735[_0xc9da('0x7')],'transfereraccountcode':_0x4d5735[_0xc9da('0x8')],'transferercontext':_0x4d5735['transferercontext'],'transfererexten':_0x4d5735[_0xc9da('0x9')],'transfererlinkedid':_0x4d5735['transfererlinkedid'],'transfereechannel':_0x4d5735[_0xc9da('0xa')],'transfereecalleridnum':_0x4d5735[_0xc9da('0xb')],'transfereecalleridname':_0x4d5735[_0xc9da('0xc')],'transfereeconnectedlinenum':_0x4d5735[_0xc9da('0xd')],'transfereeconnectedlinename':_0x4d5735[_0xc9da('0xe')],'transfereeaccountcode':_0x4d5735[_0xc9da('0xf')],'transfereecontext':_0x4d5735['transfereecontext'],'transfereeexten':_0x4d5735['transfereeexten'],'transfereelinkedid':_0x4d5735[_0xc9da('0x10')],'isexternal':_0x4d5735['isexternal'],'context':_0x4d5735[_0xc9da('0x11')],'extension':_0x4d5735['extension'],'type':'blind'},'log':_0xc9da('0x1')});};exports['attendedTransfer']=function(_0x4b19f8){return client[_0xc9da('0x0')](_0xc9da('0x1'),{'body':{'result':_0x4b19f8[_0xc9da('0x2')],'transfererchannel':_0x4b19f8[_0xc9da('0x12')],'transferercalleridnum':_0x4b19f8['origtransferercalleridnum'],'transferercalleridname':_0x4b19f8[_0xc9da('0x13')],'transfererconnectedlinenum':_0x4b19f8['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x4b19f8[_0xc9da('0x14')],'transfereraccountcode':_0x4b19f8[_0xc9da('0x15')],'transferercontext':_0x4b19f8[_0xc9da('0x16')],'transfererexten':_0x4b19f8[_0xc9da('0x17')],'transfererlinkedid':_0x4b19f8[_0xc9da('0x18')],'transfereechannel':_0x4b19f8[_0xc9da('0x19')],'transfereecalleridnum':_0x4b19f8[_0xc9da('0x1a')],'transfereecalleridname':_0x4b19f8[_0xc9da('0x1b')],'transfereeconnectedlinenum':_0x4b19f8['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x4b19f8[_0xc9da('0x1c')],'transfereeaccountcode':_0x4b19f8[_0xc9da('0x1d')],'transfereecontext':_0x4b19f8['transfertargetcontext'],'transfereeexten':_0x4b19f8[_0xc9da('0x1e')],'transfereelinkedid':_0x4b19f8['transfertargetlinkedid'],'isexternal':_0x4b19f8['isexternal'],'context':_0x4b19f8[_0xc9da('0x1f')],'extension':_0x4b19f8[_0xc9da('0x20')],'type':'attended'},'log':_0xc9da('0x1')});};
\ No newline at end of file
index a7dc231..f55d1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa0=['then','message','catch','voiceQueues','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','type','unmanaged','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','length','find','omit','undefined','values','channels','voicechannel','uniqueid','channel','%s.%s','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','monitors','stop','filename','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','emit','custom:','send','checkAfterSend','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','validate','moment','../../../config/environment','../properties','listen','format','%s/%s','SIP','timers','timer','agents','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action'];(function(_0x10d244,_0x49c680){var _0x67755d=function(_0x21ea7b){while(--_0x21ea7b){_0x10d244['push'](_0x10d244['shift']());}};_0x67755d(++_0x49c680);}(_0xdfa0,0x69));var _0x0dfa=function(_0x22076f,_0x3f54b0){_0x22076f=_0x22076f-0x0;var _0x131547=_0xdfa0[_0x22076f];return _0x131547;};'use strict';var _=require(_0x0dfa('0x0'));var util=require('util');var jayson=require(_0x0dfa('0x1'));var schema=require(_0x0dfa('0x2'));var BPromise=require('bluebird');var moment=require(_0x0dfa('0x3'));var config=require(_0x0dfa('0x4'));var properties=require(_0x0dfa('0x5'));var ami=require('../ami');exports[_0x0dfa('0x6')]=function(_0x50b91e,_0x2f60d7,_0x2efe20){return new BPromise(function(_0x4830b6,_0x417f7a){var _0x29ca78={'QueuePause':function(_0x32280b){return new Promise(function(_0x16070c,_0x3b6881){var _0x4c7be0=util[_0x0dfa('0x7')](_0x0dfa('0x8'),_0x0dfa('0x9'),_0x32280b['name']);if(_0x50b91e[_0x0dfa('0xa')]&&_0x50b91e['timers'][_0x4c7be0]&&_0x50b91e[_0x0dfa('0xa')][_0x4c7be0][_0x0dfa('0xb')]){_0x50b91e[_0x0dfa('0xa')][_0x4c7be0]['updateAcw']();}if(_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]){_0x50b91e[_0x0dfa('0xc')][_0x4c7be0]['updateStatusRealtime']({'statePause':_0x32280b[_0x0dfa('0xd')]?!![]:![]});}_0x16070c({'code':0xc8,'message':_0x0dfa('0xe')});});},'Reload':function(_0x47c37c){var _0x4162e1=this;return new Promise(function(_0x1e5532,_0x4215fd){if(ami[_0x0dfa('0xf')]()==![]){return _0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config['asterisk'][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}_0x47c37c=_[_0x0dfa('0x15')](_0x47c37c,_[_0x0dfa('0x16')](properties[_0x0dfa('0x17')]));_0x47c37c[_0x0dfa('0x18')]=_0x0dfa('0x19');return ami[_0x0dfa('0x1a')](_0x47c37c)[_0x0dfa('0x1b')](function(_0xc524fe){_0x1e5532({'code':0xc8,'message':_0xc524fe[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x208c0b){_0x4215fd(_0x4162e1[_0x0dfa('0x10')](0x1f5,_0x208c0b['message']));});});},'Command':function(_0xd21935){var _0x22ff4e=this;return new Promise(function(_0x263d6c,_0x1bb2a){if(ami[_0x0dfa('0xf')]()==![]){return _0x1bb2a(_0x22ff4e['error'](0x1f4,[config['asterisk']['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}_0xd21935=_[_0x0dfa('0x15')](_0xd21935,'command');_0xd21935[_0x0dfa('0x18')]='Command';return ami[_0x0dfa('0x1a')](_0xd21935)[_0x0dfa('0x1b')](function(_0x43f048){_0x263d6c({'code':0xc8,'message':_0x43f048['content']});})[_0x0dfa('0x1d')](function(_0x70ff72){_0x1bb2a(_0x22ff4e[_0x0dfa('0x10')](0x1f5,_0x70ff72[_0x0dfa('0x1c')]));});});},'VoiceQueues':function(_0x1dfbea){return new Promise(function(_0x12bd2a,_0x13005a){var _0x3f40e4=[];for(var _0x2e4523 in _0x50b91e[_0x0dfa('0x1e')]){if(_0x50b91e['voiceQueues']['hasOwnProperty'](_0x2e4523)){var _0x4084c6=_0x50b91e[_0x0dfa('0x1e')][_0x2e4523];var _0x4992b8={'id':_0x4084c6['id'],'name':_0x4084c6[_0x0dfa('0x1f')],'strategy':_0x4084c6[_0x0dfa('0x20')],'answered':_0x4084c6[_0x0dfa('0x21')],'available':_0x4084c6['available'],'loggedIn':_0x4084c6[_0x0dfa('0x22')],'pTalking':_0x4084c6[_0x0dfa('0x23')],'sumBillable':_0x4084c6[_0x0dfa('0x24')],'sumDuration':_0x4084c6[_0x0dfa('0x25')],'sumHoldTime':_0x4084c6[_0x0dfa('0x26')]||0x0,'talking':_0x4084c6[_0x0dfa('0x27')],'total':_0x4084c6['total'],'type':_0x4084c6[_0x0dfa('0x28')],'unmanaged':_0x4084c6[_0x0dfa('0x29')],'abandoned':_0x4084c6['abandoned'],'waiting':_0x4084c6[_0x0dfa('0x2a')],'loggedInDb':_0x4084c6[_0x0dfa('0x2b')]};if(_0x4084c6[_0x0dfa('0x28')]===_0x0dfa('0x2c')){_0x4992b8['dialActive']=_0x4084c6[_0x0dfa('0x2d')];_0x4992b8[_0x0dfa('0x2e')]=_0x4084c6[_0x0dfa('0x2e')];_0x4992b8['dialOriginateCallerIdName']=_0x4084c6['dialOriginateCallerIdName'];_0x4992b8[_0x0dfa('0x2f')]=_0x4084c6[_0x0dfa('0x2f')];_0x4992b8['dialOriginateTimeout']=_0x4084c6['dialOriginateTimeout'];_0x4992b8['dialPrefix']=_0x4084c6[_0x0dfa('0x30')];_0x4992b8[_0x0dfa('0x31')]=_0x4084c6[_0x0dfa('0x31')];_0x4992b8[_0x0dfa('0x32')]=_0x4084c6['outboundAnswerAgiCallsDay'];_0x4992b8[_0x0dfa('0x33')]=_0x4084c6[_0x0dfa('0x33')];_0x4992b8[_0x0dfa('0x34')]=_0x4084c6[_0x0dfa('0x34')];_0x4992b8[_0x0dfa('0x35')]=_0x4084c6[_0x0dfa('0x35')];_0x4992b8[_0x0dfa('0x36')]=_0x4084c6[_0x0dfa('0x36')];_0x4992b8[_0x0dfa('0x37')]=_0x4084c6[_0x0dfa('0x37')];_0x4992b8['outboundDropCallsDayCallersExit']=_0x4084c6['outboundDropCallsDayCallersExit'];_0x4992b8[_0x0dfa('0x38')]=_0x4084c6[_0x0dfa('0x38')];_0x4992b8[_0x0dfa('0x39')]=_0x4084c6[_0x0dfa('0x39')];_0x4992b8[_0x0dfa('0x3a')]=_0x4084c6['outboundNoSuchCallsDay'];_0x4992b8[_0x0dfa('0x3b')]=_0x4084c6['outboundOriginateFailureCallsDay'];_0x4992b8[_0x0dfa('0x3c')]=_0x4084c6[_0x0dfa('0x3c')];_0x4992b8[_0x0dfa('0x3d')]=_0x4084c6['outboundRejectCallsDay'];_0x4992b8['outboundUnknownCallsDay']=_0x4084c6[_0x0dfa('0x3e')];_0x4992b8[_0x0dfa('0x3f')]=_0x4084c6[_0x0dfa('0x3f')];_0x4992b8['predictiveIntervalAvgHoldtime']=_0x4084c6[_0x0dfa('0x40')];_0x4992b8['predictiveIntervalAvgTalktime']=_0x4084c6[_0x0dfa('0x41')];_0x4992b8[_0x0dfa('0x42')]=_0x4084c6['predictiveIntervalDroppedCallsCallersExit'];_0x4992b8[_0x0dfa('0x43')]=_0x4084c6[_0x0dfa('0x43')];_0x4992b8[_0x0dfa('0x44')]=_0x4084c6[_0x0dfa('0x44')];_0x4992b8[_0x0dfa('0x45')]=_0x4084c6[_0x0dfa('0x45')];_0x4992b8['predictiveIntervalHitRate']=_0x4084c6[_0x0dfa('0x46')];_0x4992b8[_0x0dfa('0x47')]=_0x4084c6[_0x0dfa('0x47')];_0x4992b8[_0x0dfa('0x48')]=_0x4084c6[_0x0dfa('0x48')];_0x4992b8[_0x0dfa('0x49')]=_0x4084c6[_0x0dfa('0x49')];_0x4992b8[_0x0dfa('0x4a')]=_0x4084c6[_0x0dfa('0x4a')];_0x4992b8[_0x0dfa('0x1c')]=_0x4084c6[_0x0dfa('0x1c')];_0x4992b8['originated']=_0x4084c6['originated'];_0x4992b8[_0x0dfa('0x4b')]=_0x4084c6[_0x0dfa('0x4b')];_0x4992b8['erlangCallToSecond']=_0x4084c6['erlangCallToSecond'];_0x4992b8['erlangAbandonmentRate']=_0x4084c6[_0x0dfa('0x4c')];_0x4992b8['erlangBusyFactor']=_0x4084c6[_0x0dfa('0x4d')];_0x4992b8[_0x0dfa('0x4e')]=_0x4084c6[_0x0dfa('0x4e')];_0x4992b8[_0x0dfa('0x4f')]=_0x4084c6[_0x0dfa('0x4f')];}if(_0x4084c6[_0x0dfa('0x50')]){_0x4992b8[_0x0dfa('0x50')]={'id':_0x4084c6[_0x0dfa('0x50')]['id'],'name':_0x4084c6['Trunk'][_0x0dfa('0x1f')],'active':_0x4084c6[_0x0dfa('0x50')]['active'],'callerid':_0x4084c6[_0x0dfa('0x50')][_0x0dfa('0x51')]};}if(_0x4084c6['Interval']){_0x4992b8[_0x0dfa('0x52')]={'id':_0x4084c6[_0x0dfa('0x52')]['id'],'name':_0x4084c6[_0x0dfa('0x52')][_0x0dfa('0x1f')]};}_0x3f40e4['push'](_0x4992b8);}}_0x12bd2a({'count':_0x3f40e4[_0x0dfa('0x53')],'rows':_0x3f40e4});});},'UpdateVoiceQueue':function(_0x2617b1){return new Promise(function(_0x483630,_0x3fc10d){var _0x13c4ad=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x1e')],{'id':parseInt(_0x2617b1['id'])});var _0x1f31b7=_[_0x0dfa('0x55')](_0x2617b1,['id']);if(_0x13c4ad){for(var _0x33c17b in _0x1f31b7){if(typeof _0x1f31b7[_0x33c17b]!==_0x0dfa('0x56')&&typeof _0x13c4ad[_0x33c17b]!==_0x0dfa('0x56')){_0x13c4ad[_0x33c17b]=_0x1f31b7[_0x33c17b];}}_0x483630(_0x13c4ad);}else{_0x3fc10d();}});},'VoiceChannels':function(_0x5bb41a){return new Promise(function(_0x28573d,_0x326433){var _0x48de6c=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x58')]);_0x28573d({'count':_0x48de6c[_0x0dfa('0x53')],'rows':_0x48de6c});});},'VoiceChannelMixMonitor':function(_0xa676cc){var _0x560dfe=this;return new Promise(function(_0x5df0e8,_0x5f4572){if(ami[_0x0dfa('0xf')]()==![]){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x595ba5=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0xa676cc);if(_0x595ba5[_0x0dfa('0x53')]>0x0){return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f4,_['map'](_0x595ba5,'message')['join'](',\x20')));}var _0x2f018c=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0xa676cc[_0x0dfa('0x5a')]});if(_0x2f018c&&_0x2f018c[_0x0dfa('0x5b')]){var _0x16b025=util[_0x0dfa('0x7')](_0x0dfa('0x5c'),_0xa676cc['filename']||_0xa676cc['uniqueid'],_0xa676cc['format']||_0x0dfa('0x5d'));return ami['Action']({'action':_0x0dfa('0x5e'),'channel':_0x2f018c[_0x0dfa('0x5b')],'file':_0x16b025,'options':_0x0dfa('0x5f')})[_0x0dfa('0x1b')](function(_0x748132){var _0x31f272=_['find'](_0x2f018c['monitors'],{'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')]()});if(_[_0x0dfa('0x62')](_0x31f272)){_0x2f018c['monitors'][_0x0dfa('0x63')]({'filename':_0x0dfa('0x60')+_0x16b025[_0x0dfa('0x61')](),'createdAt':moment()[_0x0dfa('0x7')](_0x0dfa('0x64')),'mixmonitorid':_0x748132[_0x0dfa('0x65')],'status':_0x0dfa('0x66')});}else{_0x31f272[_0x0dfa('0x65')]=_0x748132['mixmonitorid'];_0x31f272[_0x0dfa('0x67')]=_0x0dfa('0x66');}_0x5df0e8({'code':0xc8,'message':[_0xa676cc[_0x0dfa('0x5a')],_0x0dfa('0x68'),_0x748132[_0x0dfa('0x65')]]['join']('\x20'),'mixmonitorid':_0x748132['mixmonitorid']});})[_0x0dfa('0x1d')](function(_0x5389d6){_0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,[_0xa676cc[_0x0dfa('0x5a')],_0x5389d6[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x5f4572(_0x560dfe[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x417ee1){var _0x1dddca=this;return new Promise(function(_0x598888,_0x4b4b04){if(ami['isConnected']()==![]){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')][_0x0dfa('0x14')]('\x20')));}var _0x56e483=schema(properties[_0x0dfa('0x59')])[_0x0dfa('0x2')](_0x417ee1);if(_0x56e483[_0x0dfa('0x53')]>0x0){return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x56e483,_0x0dfa('0x1c'))['join'](',\x20')));}var _0x34d1e1=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x58')],{'uniqueid':_0x417ee1['uniqueid']});if(_0x34d1e1){return BPromise[_0x0dfa('0x6b')]()[_0x0dfa('0x1b')](function(){if(_0x34d1e1[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1[_0x0dfa('0x5b')],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x4a1c24){});}})[_0x0dfa('0x1b')](function(){if(_0x34d1e1['destinationchannel']){return ami['Action']({'action':_0x0dfa('0x6c'),'channel':_0x34d1e1['destinationchannel'],'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]})[_0x0dfa('0x1d')](function(_0x34107a){});}})['then'](function(_0x20217b){var _0x2b0b2d=_['find'](_0x34d1e1[_0x0dfa('0x6d')],{'mixmonitorid':_0x417ee1[_0x0dfa('0x65')]});if(_0x2b0b2d){_0x2b0b2d[_0x0dfa('0x67')]=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){var _0x36c123=util[_0x0dfa('0x7')]('%s.%s',_0x417ee1[_0x0dfa('0x6f')]||_0x417ee1['uniqueid'],_0x417ee1[_0x0dfa('0x7')]||_0x0dfa('0x5d'));var _0x4a96b3=_['find'](_0x34d1e1['monitors'],{'filename':_0x0dfa('0x60')+_0x36c123['toLowerCase']()});if(_0x4a96b3){_0x4a96b3['status']=_0x0dfa('0x6e');}})[_0x0dfa('0x1b')](function(){_0x598888({'code':0xc8,'message':[_0x417ee1[_0x0dfa('0x5a')],_0x0dfa('0x70')][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3b1c93){_0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,[_0x417ee1[_0x0dfa('0x5a')],_0x3b1c93[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x4b4b04(_0x1dddca[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannels':function(_0x478b01){return new Promise(function(_0x212c43,_0x4132b5){var _0x230333=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x71')]);_0x212c43({'count':_0x230333[_0x0dfa('0x53')],'rows':_0x230333});});},'VoiceQueuesChannel':function(_0x2e5d85){var _0x1c1e49=this;return new Promise(function(_0x1b3c5c,_0x321219){var _0x311560=schema(properties[_0x0dfa('0x72')])['validate'](_0x2e5d85);if(_0x311560['length']>0x0){return _0x321219(_0x1c1e49[_0x0dfa('0x10')](0x1f4,_['map'](_0x311560,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x44e3d3=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2e5d85[_0x0dfa('0x5a')]});if(_0x44e3d3){_0x1b3c5c(_0x44e3d3);}else{return _0x321219(_0x1c1e49['error'](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x2d10ba){var _0xbf4253=this;return new Promise(function(_0x1e66ed,_0x48930b){if(ami[_0x0dfa('0xf')]()==![]){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')][_0x0dfa('0x12')],_0x0dfa('0x13')]['join']('\x20')));}var _0x21828e=schema(properties[_0x0dfa('0x73')])[_0x0dfa('0x2')](_0x2d10ba);if(_0x21828e[_0x0dfa('0x53')]>0x0){return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x21828e,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x460210=_[_0x0dfa('0x54')](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x2d10ba[_0x0dfa('0x5a')]});if(_0x460210&&_0x460210[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':'Hangup','channel':_0x460210['channel']})[_0x0dfa('0x1b')](function(_0x4e3d5c){_0x1e66ed({'code':0xc8,'message':[_0x2d10ba[_0x0dfa('0x5a')],_0x4e3d5c[_0x0dfa('0x1c')][_0x0dfa('0x61')]()]['join']('\x20')});})[_0x0dfa('0x1d')](function(_0x57cf28){_0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,[_0x2d10ba[_0x0dfa('0x5a')],_0x57cf28[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')));});}else{return _0x48930b(_0xbf4253[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x5b013d){var _0x47221a=this;return new Promise(function(_0x2e32eb,_0x13f23d){if(ami[_0x0dfa('0xf')]()==![]){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,[config[_0x0dfa('0x11')]['ip'],config[_0x0dfa('0x11')]['username'],'ami\x20disconnected'][_0x0dfa('0x14')]('\x20')));}var _0x47ef36=schema(properties[_0x0dfa('0x74')])[_0x0dfa('0x2')](_0x5b013d);if(_0x47ef36[_0x0dfa('0x53')]>0x0){return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f4,_[_0x0dfa('0x6a')](_0x47ef36,_0x0dfa('0x1c'))[_0x0dfa('0x14')](',\x20')));}var _0x5d757c=_['find'](_0x50b91e[_0x0dfa('0x71')],{'uniqueid':_0x5b013d[_0x0dfa('0x5a')]});if(_0x5d757c&&_0x5d757c[_0x0dfa('0x5b')]){return ami[_0x0dfa('0x1a')]({'action':_0x0dfa('0x75'),'channel':_0x5d757c[_0x0dfa('0x5b')],'exten':_0x5b013d[_0x0dfa('0x76')],'context':_0x5b013d[_0x0dfa('0x77')]||_0x5d757c[_0x0dfa('0x77')],'priority':0x1})['then'](function(_0x1b3e83){_0x2e32eb({'code':0xc8,'message':[_0x5b013d[_0x0dfa('0x5a')],_0x1b3e83[_0x0dfa('0x1c')][_0x0dfa('0x61')]()][_0x0dfa('0x14')]('\x20')});})[_0x0dfa('0x1d')](function(_0x3c8641){_0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,[_0x5b013d[_0x0dfa('0x5a')],_0x3c8641[_0x0dfa('0x1c')]['toLowerCase']()][_0x0dfa('0x14')]('\x20')));});}else{return _0x13f23d(_0x47221a[_0x0dfa('0x10')](0x1f5,_0x0dfa('0x69')));}});},'Agents':function(_0xd61f76){return new Promise(function(_0x1541b0,_0x55571d){var _0x4d917b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0xc')]);_0x1541b0({'count':_0x4d917b['length'],'rows':_0x4d917b});});},'Telephones':function(_0x207a7e){return new Promise(function(_0x49c24e,_0x22b554){var _0x31ad4b=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x78')]);_0x49c24e({'count':_0x31ad4b[_0x0dfa('0x53')],'rows':_0x31ad4b});});},'Trunks':function(_0x1dfe90){return new Promise(function(_0x25c249,_0x300cf3){var _0xe5c893=_[_0x0dfa('0x57')](_0x50b91e['trunks']);_0x25c249({'count':_0xe5c893[_0x0dfa('0x53')],'rows':_0xe5c893});});},'OutboundChannels':function(_0x5cbd8c){return new Promise(function(_0x4060df,_0x10d2bb){var _0x5ccf40=_[_0x0dfa('0x57')](_0x50b91e[_0x0dfa('0x79')]);_0x4060df({'count':_0x5ccf40[_0x0dfa('0x53')],'rows':_0x5ccf40});});},'Outbound':function(_0x215164){return new Promise(function(_0x595432,_0x220503){_0x595432(_0x50b91e['outbound']);});},'Campaigns':function(_0x3293af){return new Promise(function(_0x457a6e,_0x235d55){var _0x246ec7=_['values'](_0x50b91e[_0x0dfa('0x7a')]);_0x457a6e({'count':_0x246ec7[_0x0dfa('0x53')],'rows':_0x246ec7});});},'VoiceQueuesPreview':function(_0x2fabad){var _0x1940c3=this;return new Promise(function(_0x43ed92,_0x9a23ac){_0x2f60d7[_0x0dfa('0x7b')](_0x2fabad['id'])['then'](function(_0x1422e3){_0x43ed92({'code':0xc8,'message':_0x1422e3[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x149c42){_0x9a23ac(_0x1940c3[_0x0dfa('0x10')](0x1f4,_0x149c42[_0x0dfa('0x1c')]));});});},'EventManager':function(_0xa31f6d){var _0x24b545=this;return new Promise(function(_0x1aaec4,_0x2d10fe){if(!_0xa31f6d[_0x0dfa('0x7c')]){return _0x2d10fe(_0x24b545['error'](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x0dfa('0x7d')](_0x0dfa('0x7e')+_0xa31f6d[_0x0dfa('0x7c')],_0xa31f6d[_0x0dfa('0x1c')]);_0x1aaec4({'code':0xc8,'message':_0xa31f6d});});},'FaxAccounts':function(_0xf1a314){return new Promise(function(_0x415311,_0x5962b0){var _0x106093=_[_0x0dfa('0x57')](_0x50b91e['faxAccounts']);_0x415311({'count':_0x106093[_0x0dfa('0x53')],'rows':_0x106093});});},'SendFax':function(_0x4ec4e6){var _0x5bd9ca=this;return new Promise(function(_0x2160d8,_0x4ea5f9){_0x2efe20[_0x0dfa('0x7f')](_0x4ec4e6)[_0x0dfa('0x1b')](function(_0x279182){_0x2160d8({'code':0xc8,'message':_0x279182[_0x0dfa('0x1c')]});})['catch'](function(_0x588d9a){_0x4ea5f9(_0x5bd9ca[_0x0dfa('0x10')](0x1f4,_0x588d9a[_0x0dfa('0x1c')]));});});},'CheckAfterSend':function(_0x31c7e8){var _0x1fed70=this;return new Promise(function(_0x17c14f,_0x371df9){_0x2efe20[_0x0dfa('0x80')](_0x31c7e8)[_0x0dfa('0x1b')](function(_0x5a8633){_0x17c14f({'code':0xc8,'message':_0x5a8633[_0x0dfa('0x1c')]});})[_0x0dfa('0x1d')](function(_0x383be1){_0x371df9(_0x1fed70['error'](0x1f4,_0x383be1[_0x0dfa('0x1c')]));});});}};var _0xbe1c53=jayson['server'](_0x29ca78)['http']();_0xbe1c53['on'](_0x0dfa('0x10'),function(_0x464bc1){return _0x417f7a(_0x464bc1);});_0xbe1c53['listen'](0x232a,_0x0dfa('0x81'),function(){console[_0x0dfa('0x82')](_0x0dfa('0x83'),0x232a);return _0x4830b6('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x06ae=['sumDuration','sumHoldTime','talking','total','type','unmanaged','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','name','Interval','push','find','omit','undefined','voicechannel','length','channels','channel','uniqueid','wav','MixMonitor','ai(mixmonitorid)','monitors','toLowerCase','isNil','/var/spool/asterisk/monitor/','format','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','map','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','filename','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','context','telephones','trunks','outboundChannels','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','SIP','timers','timer','agents','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','Reload','message','catch','command','action','Command','Action','then','content','voiceQueues','strategy','answered','loggedIn','pTalking','sumBillable'];(function(_0x13ae89,_0x832c38){var _0x1744a0=function(_0x4c406a){while(--_0x4c406a){_0x13ae89['push'](_0x13ae89['shift']());}};_0x1744a0(++_0x832c38);}(_0x06ae,0x16e));var _0xe06a=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x06ae[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0xe06a('0x0'));var jayson=require(_0xe06a('0x1'));var schema=require(_0xe06a('0x2'));var BPromise=require(_0xe06a('0x3'));var moment=require(_0xe06a('0x4'));var config=require(_0xe06a('0x5'));var properties=require(_0xe06a('0x6'));var ami=require(_0xe06a('0x7'));exports[_0xe06a('0x8')]=function(_0x4de363,_0x4d8533,_0x50e6cf){return new BPromise(function(_0x1df79f,_0x745f79){var _0x20bd8a={'QueuePause':function(_0x3dfa60){return new Promise(function(_0x1ea66c,_0x563322){var _0x326c46=util['format']('%s/%s',_0xe06a('0x9'),_0x3dfa60['name']);if(_0x4de363[_0xe06a('0xa')]&&_0x4de363['timers'][_0x326c46]&&_0x4de363['timers'][_0x326c46][_0xe06a('0xb')]){_0x4de363[_0xe06a('0xa')][_0x326c46]['updateAcw']();}if(_0x4de363[_0xe06a('0xc')][_0x326c46]){_0x4de363[_0xe06a('0xc')][_0x326c46]['updateStatusRealtime']({'statePause':_0x3dfa60[_0xe06a('0xd')]?!![]:![]});}_0x1ea66c({'code':0xc8,'message':_0xe06a('0xe')});});},'Reload':function(_0x3aaf53){var _0x4b3501=this;return new Promise(function(_0x126866,_0x34e933){if(ami[_0xe06a('0xf')]()==![]){return _0x34e933(_0x4b3501[_0xe06a('0x10')](0x1f4,[config[_0xe06a('0x11')]['ip'],config['asterisk'][_0xe06a('0x12')],_0xe06a('0x13')][_0xe06a('0x14')]('\x20')));}_0x3aaf53=_[_0xe06a('0x15')](_0x3aaf53,_[_0xe06a('0x16')](properties[_0xe06a('0x17')]));_0x3aaf53['action']=_0xe06a('0x18');return ami['Action'](_0x3aaf53)['then'](function(_0x4941ce){_0x126866({'code':0xc8,'message':_0x4941ce[_0xe06a('0x19')]});})[_0xe06a('0x1a')](function(_0xc62c1f){_0x34e933(_0x4b3501['error'](0x1f5,_0xc62c1f[_0xe06a('0x19')]));});});},'Command':function(_0x6483d4){var _0x5806b6=this;return new Promise(function(_0xe61520,_0x5382a6){if(ami[_0xe06a('0xf')]()==![]){return _0x5382a6(_0x5806b6['error'](0x1f4,[config['asterisk']['ip'],config[_0xe06a('0x11')][_0xe06a('0x12')],_0xe06a('0x13')][_0xe06a('0x14')]('\x20')));}_0x6483d4=_[_0xe06a('0x15')](_0x6483d4,_0xe06a('0x1b'));_0x6483d4[_0xe06a('0x1c')]=_0xe06a('0x1d');return ami[_0xe06a('0x1e')](_0x6483d4)[_0xe06a('0x1f')](function(_0x5970d9){_0xe61520({'code':0xc8,'message':_0x5970d9[_0xe06a('0x20')]});})[_0xe06a('0x1a')](function(_0xf13325){_0x5382a6(_0x5806b6[_0xe06a('0x10')](0x1f5,_0xf13325[_0xe06a('0x19')]));});});},'VoiceQueues':function(_0x2c96bd){return new Promise(function(_0x3f468e,_0x19a7e0){var _0x456d2d=[];for(var _0x4ef4ca in _0x4de363['voiceQueues']){if(_0x4de363[_0xe06a('0x21')]['hasOwnProperty'](_0x4ef4ca)){var _0x319e25=_0x4de363['voiceQueues'][_0x4ef4ca];var _0x4afa75={'id':_0x319e25['id'],'name':_0x319e25['name'],'strategy':_0x319e25[_0xe06a('0x22')],'answered':_0x319e25[_0xe06a('0x23')],'available':_0x319e25['available'],'loggedIn':_0x319e25[_0xe06a('0x24')],'pTalking':_0x319e25[_0xe06a('0x25')],'sumBillable':_0x319e25[_0xe06a('0x26')],'sumDuration':_0x319e25[_0xe06a('0x27')],'sumHoldTime':_0x319e25[_0xe06a('0x28')]||0x0,'talking':_0x319e25[_0xe06a('0x29')],'total':_0x319e25[_0xe06a('0x2a')],'type':_0x319e25[_0xe06a('0x2b')],'unmanaged':_0x319e25[_0xe06a('0x2c')],'abandoned':_0x319e25['abandoned'],'waiting':_0x319e25['waiting'],'loggedInDb':_0x319e25[_0xe06a('0x2d')]};if(_0x319e25[_0xe06a('0x2b')]===_0xe06a('0x2e')){_0x4afa75[_0xe06a('0x2f')]=_0x319e25['dialActive'];_0x4afa75[_0xe06a('0x30')]=_0x319e25['dialMethod'];_0x4afa75[_0xe06a('0x31')]=_0x319e25[_0xe06a('0x31')];_0x4afa75[_0xe06a('0x32')]=_0x319e25[_0xe06a('0x32')];_0x4afa75['dialOriginateTimeout']=_0x319e25[_0xe06a('0x33')];_0x4afa75[_0xe06a('0x34')]=_0x319e25[_0xe06a('0x34')];_0x4afa75[_0xe06a('0x35')]=_0x319e25['temp'];_0x4afa75['outboundAnswerAgiCallsDay']=_0x319e25[_0xe06a('0x36')];_0x4afa75[_0xe06a('0x37')]=_0x319e25[_0xe06a('0x37')];_0x4afa75[_0xe06a('0x38')]=_0x319e25[_0xe06a('0x38')];_0x4afa75[_0xe06a('0x39')]=_0x319e25['outboundBusyCallsDay'];_0x4afa75['outboundCongestionCallsDay']=_0x319e25[_0xe06a('0x3a')];_0x4afa75['outboundDropCallsDayACS']=_0x319e25[_0xe06a('0x3b')];_0x4afa75['outboundDropCallsDayCallersExit']=_0x319e25[_0xe06a('0x3c')];_0x4afa75[_0xe06a('0x3d')]=_0x319e25[_0xe06a('0x3d')];_0x4afa75['outboundNoAnswerCallsDay']=_0x319e25['outboundNoAnswerCallsDay'];_0x4afa75[_0xe06a('0x3e')]=_0x319e25[_0xe06a('0x3e')];_0x4afa75[_0xe06a('0x3f')]=_0x319e25[_0xe06a('0x3f')];_0x4afa75[_0xe06a('0x40')]=_0x319e25[_0xe06a('0x40')];_0x4afa75['outboundRejectCallsDay']=_0x319e25['outboundRejectCallsDay'];_0x4afa75['outboundUnknownCallsDay']=_0x319e25['outboundUnknownCallsDay'];_0x4afa75[_0xe06a('0x41')]=_0x319e25[_0xe06a('0x41')];_0x4afa75[_0xe06a('0x42')]=_0x319e25[_0xe06a('0x42')];_0x4afa75[_0xe06a('0x43')]=_0x319e25['predictiveIntervalAvgTalktime'];_0x4afa75[_0xe06a('0x44')]=_0x319e25[_0xe06a('0x44')];_0x4afa75[_0xe06a('0x45')]=_0x319e25['predictiveIntervalDroppedCallsTimeout'];_0x4afa75[_0xe06a('0x46')]=_0x319e25[_0xe06a('0x46')];_0x4afa75[_0xe06a('0x47')]=_0x319e25[_0xe06a('0x47')];_0x4afa75[_0xe06a('0x48')]=_0x319e25[_0xe06a('0x48')];_0x4afa75[_0xe06a('0x49')]=_0x319e25[_0xe06a('0x49')];_0x4afa75['predictiveIntervalPauses']=_0x319e25['predictiveIntervalPauses'];_0x4afa75[_0xe06a('0x4a')]=_0x319e25['predictiveIntervalAvailable'];_0x4afa75['predictiveIntervalTotalCalls']=_0x319e25[_0xe06a('0x4b')];_0x4afa75[_0xe06a('0x19')]=_0x319e25[_0xe06a('0x19')];_0x4afa75['originated']=_0x319e25['originated'];_0x4afa75[_0xe06a('0x4c')]=_0x319e25[_0xe06a('0x4c')];_0x4afa75[_0xe06a('0x4d')]=_0x319e25[_0xe06a('0x4d')];_0x4afa75['erlangAbandonmentRate']=_0x319e25[_0xe06a('0x4e')];_0x4afa75['erlangBusyFactor']=_0x319e25[_0xe06a('0x4f')];_0x4afa75[_0xe06a('0x50')]=_0x319e25['startPredictive'];_0x4afa75[_0xe06a('0x51')]=_0x319e25[_0xe06a('0x51')];}if(_0x319e25['Trunk']){_0x4afa75['Trunk']={'id':_0x319e25['Trunk']['id'],'name':_0x319e25['Trunk'][_0xe06a('0x52')],'active':_0x319e25['Trunk']['active'],'callerid':_0x319e25['Trunk']['callerid']};}if(_0x319e25[_0xe06a('0x53')]){_0x4afa75[_0xe06a('0x53')]={'id':_0x319e25[_0xe06a('0x53')]['id'],'name':_0x319e25[_0xe06a('0x53')][_0xe06a('0x52')]};}_0x456d2d[_0xe06a('0x54')](_0x4afa75);}}_0x3f468e({'count':_0x456d2d['length'],'rows':_0x456d2d});});},'UpdateVoiceQueue':function(_0x44b1d4){return new Promise(function(_0x3f9a6d,_0x128b4c){var _0x60b435=_[_0xe06a('0x55')](_0x4de363['voiceQueues'],{'id':parseInt(_0x44b1d4['id'])});var _0x4e32a0=_[_0xe06a('0x56')](_0x44b1d4,['id']);if(_0x60b435){for(var _0x1030ba in _0x4e32a0){if(typeof _0x4e32a0[_0x1030ba]!==_0xe06a('0x57')&&typeof _0x60b435[_0x1030ba]!==_0xe06a('0x57')){_0x60b435[_0x1030ba]=_0x4e32a0[_0x1030ba];}}_0x3f9a6d(_0x60b435);}else{_0x128b4c();}});},'VoiceChannels':function(_0x53f456){return new Promise(function(_0x164a80,_0x35b22b){var _0x2d9a0b=_['values'](_0x4de363['channels']);_0x164a80({'count':_0x2d9a0b['length'],'rows':_0x2d9a0b});});},'VoiceChannelMixMonitor':function(_0x28ebb0){var _0x101214=this;return new Promise(function(_0x8b0c6c,_0x37269c){if(ami['isConnected']()==![]){return _0x37269c(_0x101214[_0xe06a('0x10')](0x1f4,[config[_0xe06a('0x11')]['ip'],config[_0xe06a('0x11')][_0xe06a('0x12')],_0xe06a('0x13')]['join']('\x20')));}var _0xa37eaa=schema(properties[_0xe06a('0x58')])[_0xe06a('0x2')](_0x28ebb0);if(_0xa37eaa[_0xe06a('0x59')]>0x0){return _0x37269c(_0x101214['error'](0x1f4,_['map'](_0xa37eaa,_0xe06a('0x19'))[_0xe06a('0x14')](',\x20')));}var _0x2755e5=_['find'](_0x4de363[_0xe06a('0x5a')],{'uniqueid':_0x28ebb0['uniqueid']});if(_0x2755e5&&_0x2755e5[_0xe06a('0x5b')]){var _0x4b07bc=util['format']('%s.%s',_0x28ebb0['filename']||_0x28ebb0[_0xe06a('0x5c')],_0x28ebb0['format']||_0xe06a('0x5d'));return ami[_0xe06a('0x1e')]({'action':_0xe06a('0x5e'),'channel':_0x2755e5[_0xe06a('0x5b')],'file':_0x4b07bc,'options':_0xe06a('0x5f')})['then'](function(_0x164869){var _0x147829=_[_0xe06a('0x55')](_0x2755e5[_0xe06a('0x60')],{'filename':'/var/spool/asterisk/monitor/'+_0x4b07bc[_0xe06a('0x61')]()});if(_[_0xe06a('0x62')](_0x147829)){_0x2755e5[_0xe06a('0x60')][_0xe06a('0x54')]({'filename':_0xe06a('0x63')+_0x4b07bc[_0xe06a('0x61')](),'createdAt':moment()[_0xe06a('0x64')](_0xe06a('0x65')),'mixmonitorid':_0x164869[_0xe06a('0x66')],'status':_0xe06a('0x67')});}else{_0x147829[_0xe06a('0x66')]=_0x164869[_0xe06a('0x66')];_0x147829[_0xe06a('0x68')]=_0xe06a('0x67');}_0x8b0c6c({'code':0xc8,'message':[_0x28ebb0['uniqueid'],'MixMonitor\x20Success',_0x164869[_0xe06a('0x66')]]['join']('\x20'),'mixmonitorid':_0x164869[_0xe06a('0x66')]});})[_0xe06a('0x1a')](function(_0x399407){_0x37269c(_0x101214[_0xe06a('0x10')](0x1f5,[_0x28ebb0[_0xe06a('0x5c')],_0x399407[_0xe06a('0x19')][_0xe06a('0x61')]()][_0xe06a('0x14')]('\x20')));});}else{return _0x37269c(_0x101214[_0xe06a('0x10')](0x1f5,_0xe06a('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x20ad20){var _0x366bc6=this;return new Promise(function(_0x4f707a,_0xa67b10){if(ami[_0xe06a('0xf')]()==![]){return _0xa67b10(_0x366bc6['error'](0x1f4,[config['asterisk']['ip'],config[_0xe06a('0x11')]['username'],_0xe06a('0x13')][_0xe06a('0x14')]('\x20')));}var _0x494569=schema(properties[_0xe06a('0x58')])[_0xe06a('0x2')](_0x20ad20);if(_0x494569['length']>0x0){return _0xa67b10(_0x366bc6[_0xe06a('0x10')](0x1f4,_[_0xe06a('0x6a')](_0x494569,_0xe06a('0x19'))[_0xe06a('0x14')](',\x20')));}var _0x2f7cd0=_[_0xe06a('0x55')](_0x4de363[_0xe06a('0x5a')],{'uniqueid':_0x20ad20[_0xe06a('0x5c')]});if(_0x2f7cd0){return BPromise[_0xe06a('0x6b')]()[_0xe06a('0x1f')](function(){if(_0x2f7cd0[_0xe06a('0x5b')]){return ami[_0xe06a('0x1e')]({'action':_0xe06a('0x6c'),'channel':_0x2f7cd0[_0xe06a('0x5b')],'mixmonitorid':_0x20ad20[_0xe06a('0x66')]})['catch'](function(_0x254197){});}})[_0xe06a('0x1f')](function(){if(_0x2f7cd0['destinationchannel']){return ami[_0xe06a('0x1e')]({'action':_0xe06a('0x6c'),'channel':_0x2f7cd0[_0xe06a('0x6d')],'mixmonitorid':_0x20ad20[_0xe06a('0x66')]})[_0xe06a('0x1a')](function(_0xa7022c){});}})['then'](function(_0x304cde){var _0x13fd34=_[_0xe06a('0x55')](_0x2f7cd0[_0xe06a('0x60')],{'mixmonitorid':_0x20ad20[_0xe06a('0x66')]});if(_0x13fd34){_0x13fd34[_0xe06a('0x68')]=_0xe06a('0x6e');}})[_0xe06a('0x1f')](function(){var _0x4af3b7=util[_0xe06a('0x64')](_0xe06a('0x6f'),_0x20ad20[_0xe06a('0x70')]||_0x20ad20[_0xe06a('0x5c')],_0x20ad20[_0xe06a('0x64')]||_0xe06a('0x5d'));var _0x2c8e2d=_[_0xe06a('0x55')](_0x2f7cd0[_0xe06a('0x60')],{'filename':_0xe06a('0x63')+_0x4af3b7[_0xe06a('0x61')]()});if(_0x2c8e2d){_0x2c8e2d['status']=_0xe06a('0x6e');}})[_0xe06a('0x1f')](function(){_0x4f707a({'code':0xc8,'message':[_0x20ad20[_0xe06a('0x5c')],_0xe06a('0x71')][_0xe06a('0x14')]('\x20')});})[_0xe06a('0x1a')](function(_0x3cd94c){_0xa67b10(_0x366bc6[_0xe06a('0x10')](0x1f5,[_0x20ad20[_0xe06a('0x5c')],_0x3cd94c[_0xe06a('0x19')][_0xe06a('0x61')]()][_0xe06a('0x14')]('\x20')));});}else{return _0xa67b10(_0x366bc6[_0xe06a('0x10')](0x1f5,_0xe06a('0x69')));}});},'VoiceQueuesChannels':function(_0x4c3640){return new Promise(function(_0x3e4144,_0x469e9b){var _0x15ece6=_[_0xe06a('0x72')](_0x4de363[_0xe06a('0x73')]);_0x3e4144({'count':_0x15ece6[_0xe06a('0x59')],'rows':_0x15ece6});});},'VoiceQueuesChannel':function(_0x573878){var _0x33eead=this;return new Promise(function(_0xbf5520,_0x30b241){var _0x38d8eb=schema(properties[_0xe06a('0x74')])[_0xe06a('0x2')](_0x573878);if(_0x38d8eb[_0xe06a('0x59')]>0x0){return _0x30b241(_0x33eead[_0xe06a('0x10')](0x1f4,_['map'](_0x38d8eb,_0xe06a('0x19'))[_0xe06a('0x14')](',\x20')));}var _0x352d05=_[_0xe06a('0x55')](_0x4de363[_0xe06a('0x73')],{'uniqueid':_0x573878[_0xe06a('0x5c')]});if(_0x352d05){_0xbf5520(_0x352d05);}else{return _0x30b241(_0x33eead[_0xe06a('0x10')](0x1f5,_0xe06a('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x479fed){var _0x216402=this;return new Promise(function(_0x10c260,_0x3efa07){if(ami[_0xe06a('0xf')]()==![]){return _0x3efa07(_0x216402[_0xe06a('0x10')](0x1f4,[config[_0xe06a('0x11')]['ip'],config[_0xe06a('0x11')][_0xe06a('0x12')],_0xe06a('0x13')]['join']('\x20')));}var _0x24e901=schema(properties[_0xe06a('0x75')])[_0xe06a('0x2')](_0x479fed);if(_0x24e901[_0xe06a('0x59')]>0x0){return _0x3efa07(_0x216402[_0xe06a('0x10')](0x1f4,_['map'](_0x24e901,_0xe06a('0x19'))['join'](',\x20')));}var _0x2b1bd4=_['find'](_0x4de363[_0xe06a('0x73')],{'uniqueid':_0x479fed[_0xe06a('0x5c')]});if(_0x2b1bd4&&_0x2b1bd4[_0xe06a('0x5b')]){return ami[_0xe06a('0x1e')]({'action':_0xe06a('0x76'),'channel':_0x2b1bd4[_0xe06a('0x5b')]})[_0xe06a('0x1f')](function(_0x452164){_0x10c260({'code':0xc8,'message':[_0x479fed[_0xe06a('0x5c')],_0x452164['message'][_0xe06a('0x61')]()][_0xe06a('0x14')]('\x20')});})[_0xe06a('0x1a')](function(_0x5ac4ce){_0x3efa07(_0x216402[_0xe06a('0x10')](0x1f5,[_0x479fed[_0xe06a('0x5c')],_0x5ac4ce[_0xe06a('0x19')][_0xe06a('0x61')]()][_0xe06a('0x14')]('\x20')));});}else{return _0x3efa07(_0x216402[_0xe06a('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x1ed817){var _0x313f6e=this;return new Promise(function(_0x12ac44,_0x4cdfc9){if(ami[_0xe06a('0xf')]()==![]){return _0x4cdfc9(_0x313f6e['error'](0x1f4,[config['asterisk']['ip'],config[_0xe06a('0x11')][_0xe06a('0x12')],_0xe06a('0x13')][_0xe06a('0x14')]('\x20')));}var _0x5ba6b6=schema(properties[_0xe06a('0x77')])[_0xe06a('0x2')](_0x1ed817);if(_0x5ba6b6[_0xe06a('0x59')]>0x0){return _0x4cdfc9(_0x313f6e[_0xe06a('0x10')](0x1f4,_[_0xe06a('0x6a')](_0x5ba6b6,_0xe06a('0x19'))['join'](',\x20')));}var _0x524d25=_['find'](_0x4de363[_0xe06a('0x73')],{'uniqueid':_0x1ed817['uniqueid']});if(_0x524d25&&_0x524d25['channel']){return ami[_0xe06a('0x1e')]({'action':_0xe06a('0x78'),'channel':_0x524d25[_0xe06a('0x5b')],'exten':_0x1ed817['exten'],'context':_0x1ed817[_0xe06a('0x79')]||_0x524d25['context'],'priority':0x1})[_0xe06a('0x1f')](function(_0x1619d0){_0x12ac44({'code':0xc8,'message':[_0x1ed817[_0xe06a('0x5c')],_0x1619d0[_0xe06a('0x19')]['toLowerCase']()][_0xe06a('0x14')]('\x20')});})[_0xe06a('0x1a')](function(_0x44b2c1){_0x4cdfc9(_0x313f6e['error'](0x1f5,[_0x1ed817[_0xe06a('0x5c')],_0x44b2c1[_0xe06a('0x19')][_0xe06a('0x61')]()][_0xe06a('0x14')]('\x20')));});}else{return _0x4cdfc9(_0x313f6e[_0xe06a('0x10')](0x1f5,_0xe06a('0x69')));}});},'Agents':function(_0x31bbc2){return new Promise(function(_0x385639,_0x3a4b66){var _0x19b8c4=_[_0xe06a('0x72')](_0x4de363['agents']);_0x385639({'count':_0x19b8c4[_0xe06a('0x59')],'rows':_0x19b8c4});});},'Telephones':function(_0x2b239a){return new Promise(function(_0x131f2c,_0x44e7ab){var _0x58f446=_[_0xe06a('0x72')](_0x4de363[_0xe06a('0x7a')]);_0x131f2c({'count':_0x58f446['length'],'rows':_0x58f446});});},'Trunks':function(_0x238eb9){return new Promise(function(_0x3444ad,_0x4d24cd){var _0x5b4c89=_[_0xe06a('0x72')](_0x4de363[_0xe06a('0x7b')]);_0x3444ad({'count':_0x5b4c89[_0xe06a('0x59')],'rows':_0x5b4c89});});},'OutboundChannels':function(_0xf94f88){return new Promise(function(_0x5e9ad0,_0x466906){var _0x1b702a=_[_0xe06a('0x72')](_0x4de363[_0xe06a('0x7c')]);_0x5e9ad0({'count':_0x1b702a[_0xe06a('0x59')],'rows':_0x1b702a});});},'Outbound':function(_0x259212){return new Promise(function(_0xd1d8e3,_0x580b34){_0xd1d8e3(_0x4de363[_0xe06a('0x2e')]);});},'Campaigns':function(_0x29181f){return new Promise(function(_0x54a4aa,_0x32f878){var _0x2dc900=_['values'](_0x4de363['campaigns']);_0x54a4aa({'count':_0x2dc900['length'],'rows':_0x2dc900});});},'VoiceQueuesPreview':function(_0x34c243){var _0x22fba7=this;return new Promise(function(_0x5da55f,_0x52797b){_0x4d8533['run'](_0x34c243['id'])[_0xe06a('0x1f')](function(_0x58db0c){_0x5da55f({'code':0xc8,'message':_0x58db0c[_0xe06a('0x19')]});})[_0xe06a('0x1a')](function(_0x37c86c){_0x52797b(_0x22fba7['error'](0x1f4,_0x37c86c[_0xe06a('0x19')]));});});},'EventManager':function(_0x2fc737){var _0x4808bc=this;return new Promise(function(_0x1d3819,_0x4dd396){if(!_0x2fc737[_0xe06a('0x7d')]){return _0x4dd396(_0x4808bc[_0xe06a('0x10')](0x1f4,_0xe06a('0x7e')));}ami['emit'](_0xe06a('0x7f')+_0x2fc737[_0xe06a('0x7d')],_0x2fc737['message']);_0x1d3819({'code':0xc8,'message':_0x2fc737});});},'FaxAccounts':function(_0x3ce75e){return new Promise(function(_0x422211,_0x2ff32e){var _0xff913a=_[_0xe06a('0x72')](_0x4de363[_0xe06a('0x80')]);_0x422211({'count':_0xff913a[_0xe06a('0x59')],'rows':_0xff913a});});},'SendFax':function(_0x13cd1c){var _0x30bf97=this;return new Promise(function(_0x59c331,_0x3989ba){_0x50e6cf[_0xe06a('0x81')](_0x13cd1c)[_0xe06a('0x1f')](function(_0x1a0067){_0x59c331({'code':0xc8,'message':_0x1a0067[_0xe06a('0x19')]});})[_0xe06a('0x1a')](function(_0x275136){_0x3989ba(_0x30bf97[_0xe06a('0x10')](0x1f4,_0x275136[_0xe06a('0x19')]));});});},'CheckAfterSend':function(_0x232e67){var _0x1ba85f=this;return new Promise(function(_0x299296,_0x3a7973){_0x50e6cf['checkAfterSend'](_0x232e67)[_0xe06a('0x1f')](function(_0x428c4a){_0x299296({'code':0xc8,'message':_0x428c4a[_0xe06a('0x19')]});})[_0xe06a('0x1a')](function(_0x22fbd6){_0x3a7973(_0x1ba85f[_0xe06a('0x10')](0x1f4,_0x22fbd6[_0xe06a('0x19')]));});});}};var _0x5e4a08=jayson[_0xe06a('0x82')](_0x20bd8a)[_0xe06a('0x83')]();_0x5e4a08['on'](_0xe06a('0x10'),function(_0x2837a4){return _0x745f79(_0x2837a4);});_0x5e4a08['listen'](0x232a,_0xe06a('0x84'),function(){console[_0xe06a('0x85')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x1df79f(_0xe06a('0x86')+0x232a);});});};
\ No newline at end of file
index 96ae5df..732e78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','routeId','format','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','emit','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or','map','destcalleridnum','calleridnum','firstName','lastName','updatedAt','union'];(function(_0x5723a1,_0x624b39){var _0x3a01e9=function(_0x22e30e){while(--_0x22e30e){_0x5723a1['push'](_0x5723a1['shift']());}};_0x3a01e9(++_0x624b39);}(_0xa8a8,0xec));var _0x8a8a=function(_0x92772e,_0x197fa5){_0x92772e=_0x92772e-0x0;var _0x352302=_0xa8a8[_0x92772e];return _0x352302;};'use strict';var _=require(_0x8a8a('0x0'));var BPromise=require(_0x8a8a('0x1'));var Redis=require(_0x8a8a('0x2'));var util=require(_0x8a8a('0x3'));var config=require('../../../../config/environment');var logger=require(_0x8a8a('0x4'))(_0x8a8a('0x5'));var cmContactRpc=require(_0x8a8a('0x6'));config[_0x8a8a('0x7')]=_[_0x8a8a('0x8')](config[_0x8a8a('0x7')],{'host':_0x8a8a('0x9'),'port':0x18eb});var io=require(_0x8a8a('0xa'))(new Redis(config[_0x8a8a('0x7')]));function emit(_0x315fe9,_0x1d7121,_0x8e7aa0,_0x4225b9,_0xecaa6f){logger[_0x8a8a('0xb')]('[CM][%s][%s]',_0x315fe9,_0x1d7121['id'],_0x8e7aa0,_0x4225b9,JSON['stringify'](_0xecaa6f));io['to'](_0x8e7aa0)[_0x8a8a('0xc')](_0x4225b9,_0xecaa6f);}exports['exec']=function(_0x11788d,_0x3d3a00,_0x532621,_0x118380){var _0x76b586,_0xb13fca;var _0x5e448d={};var _0x679da2=Number(_0x532621[_0x8a8a('0xd')]);var _0x330796=_0x532621[_0x8a8a('0xe')]?Boolean(Number(_0x532621['data2'])):![];var _0x23febf;var _0x4e5d74=![];if(!_[_0x8a8a('0xf')](_0x532621[_0x8a8a('0x10')])){if(_0x532621[_0x8a8a('0x10')]=='1')_0x4e5d74=!![];}if(!_0x4e5d74){if(_0x118380[_0x8a8a('0x11')]){_0x5e448d['id']=_0x118380[_0x8a8a('0x11')];}}if(!_0x5e448d['id']){_0x5e448d[_0x8a8a('0x12')]=_0x679da2;_0x23febf=_0x532621[_0x8a8a('0x13')]&&_0x532621['data3']!=='0'?_0x532621[_0x8a8a('0x13')]['split'](','):[_0x8a8a('0x14')];_0x5e448d[_0x8a8a('0x15')]=_[_0x8a8a('0x16')](_0x23febf,function(_0x4291e9){var _0x42e8b6={};_0x42e8b6[_0x4291e9]=_0x118380['routeId']?_0x118380[_0x8a8a('0x17')]:_0x118380[_0x8a8a('0x18')];return _0x42e8b6;});}var _0x262ca9=['id',_0x8a8a('0x19'),_0x8a8a('0x1a'),_0x8a8a('0x14'),'mobile','fax','ListId','createdAt','scheduledAt',_0x8a8a('0x1b')];var _0x45095b=_[_0x8a8a('0x1c')](_0x262ca9,_0x23febf);BPromise[_0x8a8a('0x1d')]()[_0x8a8a('0x1e')](cmContactRpc[_0x8a8a('0x1f')]({'attributes':_0x45095b,'where':_0x5e448d}))[_0x8a8a('0x1e')](function(_0xe0321c){_0xb13fca=_0xe0321c;if(!_[_0x8a8a('0x20')](_0xb13fca)){if(_0xb13fca[_0x8a8a('0x21')]===0x1){_0x76b586=_0xb13fca[0x0];logger[_0x8a8a('0xb')](_0x8a8a('0x22'),_0x118380[_0x8a8a('0x23')],_0x3d3a00['id'],_0x76b586['id']);}else{logger[_0x8a8a('0xb')](_0x8a8a('0x24'),_0x118380['uniqueid'],_0x3d3a00['id'],_[_0x8a8a('0x16')](_0xb13fca,'id')[_0x8a8a('0x25')](','));}return;}else{logger[_0x8a8a('0xb')](_0x8a8a('0x26'),_0x118380[_0x8a8a('0x23')],_0x3d3a00['id']);var _0x251315={'ListId':_0x679da2};var _0x3aa46d=_0x532621['data4']&&_0x532621[_0x8a8a('0x27')]!=='0'?_0x532621[_0x8a8a('0x27')]:_0x8a8a('0x14');if(_0x330796){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x118380[_0x8a8a('0x23')],_0x3d3a00['id']);_0x251315[_0x3aa46d]=_[_0x8a8a('0xf')](_0x118380['routeId'])?_0x118380['calleridnum']:_0x118380['destcalleridnum'];if(_[_0x8a8a('0xf')](_0x118380['routeId'])){_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x28')]&&_0x118380['calleridname']!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x28')]:_0x8a8a('0x2a');}else{_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x2b')]&&_0x118380[_0x8a8a('0x2b')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x2b')]:'Unknown';}return BPromise['resolve']()['then'](cmContactRpc[_0x8a8a('0x2c')](_0x251315))[_0x8a8a('0x1e')](function(_0x5f301e){_0x76b586=_0x5f301e;_0xb13fca[_0x8a8a('0x2d')](_0x5f301e);if(_0x76b586){logger[_0x8a8a('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x118380[_0x8a8a('0x23')],_0x3d3a00['id'],_0x76b586['id']);}return;});}else{logger[_0x8a8a('0xb')](_0x8a8a('0x2e'),_0x118380['uniqueid'],_0x3d3a00['id']);_0x251315[_0x3aa46d]=_['isNil'](_0x118380[_0x8a8a('0x2f')])?_0x118380['calleridnum']:_0x118380[_0x8a8a('0x17')];if(_[_0x8a8a('0xf')](_0x118380[_0x8a8a('0x2f')])){_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x28')]&&_0x118380[_0x8a8a('0x28')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x28')]:_0x8a8a('0x2a');}else{_0x251315[_0x8a8a('0x19')]=_0x118380[_0x8a8a('0x2b')]&&_0x118380[_0x8a8a('0x2b')]!==_0x8a8a('0x29')?_0x118380[_0x8a8a('0x2b')]:_0x8a8a('0x2a');}_0x76b586=_0x251315;_0xb13fca[_0x8a8a('0x2d')](_0x251315);return;}}})[_0x8a8a('0x1e')](function(){if(_0x11788d){emit(_0x118380[_0x8a8a('0x23')],_0x3d3a00,util['format']('user:%s',_0x11788d['name']),util[_0x8a8a('0x30')](_0x8a8a('0x31'),_0x532621[_0x8a8a('0x32')][_0x8a8a('0x33')]()),{'evt':_[_0x8a8a('0x34')](_0x118380,{'autoCreate':_0x330796}),'contact':_0x76b586===undefined?{}:_0x76b586,'contacts':_0xb13fca['length']===0x0?undefined:_0xb13fca});}});};
\ No newline at end of file
+var _0xd0bb=['format','user:%s','name','trigger:%s','merge','lodash','bluebird','ioredis','../../../../config/environment','trigger','../../rpc/cmContact','defaults','localhost','socket.io-emitter','redis','info','[CM][%s][%s]','stringify','data1','data2','isNil','data5','xmd-contactid','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','firstName','fax','ListId','createdAt','scheduledAt','union','resolve','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','destcalleridname','Unknown','then','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x490d4c,_0x50eb76){_0x490d4c=_0x490d4c-0x0;var _0x540b78=_0xd0bb[_0x490d4c];return _0x540b78;};'use strict';var _=require(_0xbd0b('0x0'));var BPromise=require(_0xbd0b('0x1'));var Redis=require(_0xbd0b('0x2'));var util=require('util');var config=require(_0xbd0b('0x3'));var logger=require('../../../../config/logger')(_0xbd0b('0x4'));var cmContactRpc=require(_0xbd0b('0x5'));config['redis']=_[_0xbd0b('0x6')](config['redis'],{'host':_0xbd0b('0x7'),'port':0x18eb});var io=require(_0xbd0b('0x8'))(new Redis(config[_0xbd0b('0x9')]));function emit(_0x37c205,_0x809599,_0x5eb975,_0x2a4075,_0x4533ff){logger[_0xbd0b('0xa')](_0xbd0b('0xb'),_0x37c205,_0x809599['id'],_0x5eb975,_0x2a4075,JSON[_0xbd0b('0xc')](_0x4533ff));io['to'](_0x5eb975)['emit'](_0x2a4075,_0x4533ff);}exports['exec']=function(_0x14bc5b,_0x110cf1,_0x4a69ff,_0x26b834){var _0x196beb,_0x526258;var _0x1e3173={};var _0x15919b=Number(_0x4a69ff[_0xbd0b('0xd')]);var _0x315ed9=_0x4a69ff[_0xbd0b('0xe')]?Boolean(Number(_0x4a69ff[_0xbd0b('0xe')])):![];var _0x420f96;var _0x1f25b6=![];if(!_[_0xbd0b('0xf')](_0x4a69ff[_0xbd0b('0x10')])){if(_0x4a69ff[_0xbd0b('0x10')]=='1')_0x1f25b6=!![];}if(!_0x1f25b6){if(_0x26b834['xmd-contactid']){_0x1e3173['id']=_0x26b834[_0xbd0b('0x11')];}}if(!_0x1e3173['id']){_0x1e3173['ListId']=_0x15919b;_0x420f96=_0x4a69ff['data3']&&_0x4a69ff[_0xbd0b('0x12')]!=='0'?_0x4a69ff[_0xbd0b('0x12')][_0xbd0b('0x13')](','):[_0xbd0b('0x14')];_0x1e3173[_0xbd0b('0x15')]=_['map'](_0x420f96,function(_0x55e0a1){var _0x2136ef={};_0x2136ef[_0x55e0a1]=_0x26b834[_0xbd0b('0x16')]?_0x26b834[_0xbd0b('0x17')]:_0x26b834[_0xbd0b('0x18')];return _0x2136ef;});}var _0x1c0a7c=['id',_0xbd0b('0x19'),'lastName',_0xbd0b('0x14'),'mobile',_0xbd0b('0x1a'),_0xbd0b('0x1b'),_0xbd0b('0x1c'),_0xbd0b('0x1d'),'updatedAt'];var _0x403c91=_[_0xbd0b('0x1e')](_0x1c0a7c,_0x420f96);BPromise[_0xbd0b('0x1f')]()['then'](cmContactRpc[_0xbd0b('0x20')]({'attributes':_0x403c91,'where':_0x1e3173}))['then'](function(_0xc66b8){_0x526258=_0xc66b8;if(!_[_0xbd0b('0x21')](_0x526258)){if(_0x526258[_0xbd0b('0x22')]===0x1){_0x196beb=_0x526258[0x0];logger[_0xbd0b('0xa')](_0xbd0b('0x23'),_0x26b834['uniqueid'],_0x110cf1['id'],_0x196beb['id']);}else{logger[_0xbd0b('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x26b834[_0xbd0b('0x24')],_0x110cf1['id'],_[_0xbd0b('0x25')](_0x526258,'id')[_0xbd0b('0x26')](','));}return;}else{logger[_0xbd0b('0xa')](_0xbd0b('0x27'),_0x26b834[_0xbd0b('0x24')],_0x110cf1['id']);var _0x4fe9ed={'ListId':_0x15919b};var _0x382f76=_0x4a69ff[_0xbd0b('0x28')]&&_0x4a69ff[_0xbd0b('0x28')]!=='0'?_0x4a69ff[_0xbd0b('0x28')]:_0xbd0b('0x14');if(_0x315ed9){logger[_0xbd0b('0xa')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x26b834[_0xbd0b('0x24')],_0x110cf1['id']);_0x4fe9ed[_0x382f76]=_[_0xbd0b('0xf')](_0x26b834[_0xbd0b('0x16')])?_0x26b834['calleridnum']:_0x26b834['destcalleridnum'];if(_[_0xbd0b('0xf')](_0x26b834[_0xbd0b('0x16')])){_0x4fe9ed[_0xbd0b('0x19')]=_0x26b834[_0xbd0b('0x29')]&&_0x26b834[_0xbd0b('0x29')]!==_0xbd0b('0x2a')?_0x26b834[_0xbd0b('0x29')]:'Unknown';}else{_0x4fe9ed[_0xbd0b('0x19')]=_0x26b834[_0xbd0b('0x2b')]&&_0x26b834['destcalleridname']!=='<unknown>'?_0x26b834[_0xbd0b('0x2b')]:_0xbd0b('0x2c');}return BPromise['resolve']()[_0xbd0b('0x2d')](cmContactRpc[_0xbd0b('0x2e')](_0x4fe9ed))[_0xbd0b('0x2d')](function(_0x417e25){_0x196beb=_0x417e25;_0x526258[_0xbd0b('0x2f')](_0x417e25);if(_0x196beb){logger[_0xbd0b('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x26b834[_0xbd0b('0x24')],_0x110cf1['id'],_0x196beb['id']);}return;});}else{logger[_0xbd0b('0xa')](_0xbd0b('0x30'),_0x26b834[_0xbd0b('0x24')],_0x110cf1['id']);_0x4fe9ed[_0x382f76]=_[_0xbd0b('0xf')](_0x26b834[_0xbd0b('0x16')])?_0x26b834[_0xbd0b('0x18')]:_0x26b834[_0xbd0b('0x17')];if(_[_0xbd0b('0xf')](_0x26b834[_0xbd0b('0x16')])){_0x4fe9ed[_0xbd0b('0x19')]=_0x26b834[_0xbd0b('0x29')]&&_0x26b834[_0xbd0b('0x29')]!==_0xbd0b('0x2a')?_0x26b834['calleridname']:_0xbd0b('0x2c');}else{_0x4fe9ed[_0xbd0b('0x19')]=_0x26b834['destcalleridname']&&_0x26b834[_0xbd0b('0x2b')]!==_0xbd0b('0x2a')?_0x26b834[_0xbd0b('0x2b')]:_0xbd0b('0x2c');}_0x196beb=_0x4fe9ed;_0x526258[_0xbd0b('0x2f')](_0x4fe9ed);return;}}})[_0xbd0b('0x2d')](function(){if(_0x14bc5b){emit(_0x26b834['uniqueid'],_0x110cf1,util[_0xbd0b('0x31')](_0xbd0b('0x32'),_0x14bc5b[_0xbd0b('0x33')]),util[_0xbd0b('0x31')](_0xbd0b('0x34'),_0x4a69ff['action']['toLowerCase']()),{'evt':_[_0xbd0b('0x35')](_0x26b834,{'autoCreate':_0x315ed9}),'contact':_0x196beb===undefined?{}:_0x196beb,'contacts':_0x526258[_0xbd0b('0x22')]===0x0?undefined:_0x526258});}});};
\ No newline at end of file
index 4500c2e..de9b72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2884=['redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','vtigerAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','info','emit','prototype','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','variables','Actions','length','action','contactmanager','browser','data1','TemplateId','html','templates','data2','render','template\x20not\x20found','uri','isNil','data4','location','uriLocation','windowWidth','800','data5','windowHeight','data6','winArguments','data3','format','user:%s','trigger:%s:%s','toLowerCase','merge','jscripty','name','trigger:%s','integration','exec','queue','routeId','urlforward','script','buildUri','parse','query','search','channel','AllConditions','every','some','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','exports','util','lodash','url','ioredis','./urlforward','./integration','../../../config/environment','../../../config/logger','trigger','../ami','defaults'];(function(_0x333f9f,_0x4bf7f1){var _0x126182=function(_0x4f3402){while(--_0x4f3402){_0x333f9f['push'](_0x333f9f['shift']());}};_0x126182(++_0x4bf7f1);}(_0x2884,0xfb));var _0x4288=function(_0x5d3bac,_0x2eb657){_0x5d3bac=_0x5d3bac-0x0;var _0x2c8242=_0x2884[_0x5d3bac];return _0x2c8242;};'use strict';var util=require(_0x4288('0x0'));var _=require(_0x4288('0x1'));var url=require(_0x4288('0x2'));var Mustache=require('mustache');var Redis=require(_0x4288('0x3'));var urlforward=require(_0x4288('0x4'));var integration=require(_0x4288('0x5'));var cmContact=require('./cmContact');var script=require('./script');var config=require(_0x4288('0x6'));var logger=require(_0x4288('0x7'))(_0x4288('0x8'));var ami=require(_0x4288('0x9'));config['redis']=_[_0x4288('0xa')](config[_0x4288('0xb')],{'host':_0x4288('0xc'),'port':0x18eb});var io=require(_0x4288('0xd'))(new Redis(config[_0x4288('0xb')]));var operators={'equals':function(_0x4c37bc,_0x145c68){return _0x4c37bc==_0x145c68;},'not_equals':function(_0x76d823,_0xe77c3c){return _0x76d823!=_0xe77c3c;}};var barAndWebActions=[_0x4288('0xe'),'url',_0x4288('0xf')];function Trigger(_0x4d30a4){this[_0x4288('0x10')]=_0x4d30a4[_0x4288('0x10')];this[_0x4288('0x11')]=_0x4d30a4[_0x4288('0x11')];this[_0x4288('0x12')]=_0x4d30a4[_0x4288('0x12')];this['templates']=_0x4d30a4['templates'];this['voiceExtensions']=_0x4d30a4[_0x4288('0x13')];this[_0x4288('0x14')]=_0x4d30a4['zendeskAccounts'];this['freshdeskAccounts']=_0x4d30a4[_0x4288('0x15')];this[_0x4288('0x16')]=_0x4d30a4[_0x4288('0x16')];this['sugarcrmAccounts']=_0x4d30a4[_0x4288('0x17')];this[_0x4288('0x18')]=_0x4d30a4[_0x4288('0x18')];this[_0x4288('0x19')]=_0x4d30a4['deskAccounts'];this['vtigerAccounts']=_0x4d30a4['vtigerAccounts'];this['servicenowAccounts']=_0x4d30a4[_0x4288('0x1a')];this['dynamics365Accounts']=_0x4d30a4[_0x4288('0x1b')];this[_0x4288('0x1c')]=_0x4d30a4['freshsalesAccounts'];this[_0x4288('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x4288('0x16')],'freshdesk':this[_0x4288('0x15')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x4288('0x18')],'desk':this[_0x4288('0x19')],'vtiger':this[_0x4288('0x1e')],'dynamics365':this[_0x4288('0x1b')],'freshsales':this[_0x4288('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0x4288('0x1f'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x21'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x23'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x24'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x25'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x26'),this[_0x4288('0x22')]['bind'](this));ami['on'](_0x4288('0x27'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4288('0x28'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x29'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on']('custom:amd',this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2a'),this['syncCustomEvent']['bind'](this));ami['on'](_0x4288('0x2b'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2c'),this['syncAgentDial'][_0x4288('0x20')](this));ami['on'](_0x4288('0x2d'),this[_0x4288('0x2e')]['bind'](this));ami['on']('custom:dialend',this[_0x4288('0x2e')][_0x4288('0x20')](this));ami['on'](_0x4288('0x2f'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x30'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x31'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x32'),this['syncCustomEvent'][_0x4288('0x20')](this));ami['on'](_0x4288('0x33'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x34'),this[_0x4288('0x22')][_0x4288('0x20')](this));ami['on'](_0x4288('0x35'),this['syncCustomEvent']['bind'](this));}Trigger['prototype']['emit']=function(_0x2ddf5e,_0x2c3e55,_0x42bbd6){logger[_0x4288('0x36')](_0x2ddf5e,_0x2c3e55,JSON['stringify'](_0x42bbd6));io['to'](_0x2ddf5e)[_0x4288('0x37')](_0x2c3e55,_0x42bbd6);};Trigger[_0x4288('0x38')][_0x4288('0x22')]=function(_0x3b3d6b){var _0x91420a=_[_0x4288('0x39')](_0x3b3d6b);if(typeof _0x91420a[_0x4288('0x3a')]===_0x4288('0x3b')){_0x91420a['motionChannel']=_0x4288('0x3c');}this[_0x4288('0x3d')](_0x91420a);};Trigger['prototype'][_0x4288('0x2e')]=function(_0x2cc56c){if(this['agents'][_0x2cc56c[_0x4288('0x3e')]]){this['syncCustomEvent'](_0x2cc56c);}};Trigger[_0x4288('0x38')][_0x4288('0x3d')]=function(_0x2f7e43){var _0x2387a6;for(var _0x2a28af in this['triggers']){if(this[_0x4288('0x10')][_0x4288('0x3f')](_0x2a28af)){if(this['triggers'][_0x2a28af][_0x4288('0x40')]){_0x2387a6=this[_0x4288('0x41')](this[_0x4288('0x10')][_0x2a28af],_0x2f7e43);if(_0x2387a6){_['merge'](_0x2f7e43,_0x2f7e43[_0x4288('0x42')]);for(var _0x27e31f=0x0,_0x44b6b6,_0x5bb782,_0x2c063b;_0x27e31f<this['triggers'][_0x2a28af][_0x4288('0x43')][_0x4288('0x44')];_0x27e31f+=0x1){_0x44b6b6=this[_0x4288('0x10')][_0x2a28af][_0x4288('0x43')][_0x27e31f];if(this['agents'][_0x2f7e43['interface']]){switch(_0x44b6b6[_0x4288('0x45')]['toLowerCase']()){case _0x4288('0x46'):break;case'motionbar':case _0x4288('0x47'):var _0x2fdcf8={};switch(barAndWebActions[_0x44b6b6[_0x4288('0x48')]]){case _0x4288('0xe'):_0x2fdcf8[_0x4288('0x49')]=_0x44b6b6['data2'];_0x2fdcf8[_0x4288('0x4a')]=this[_0x4288('0x4b')][_0x44b6b6[_0x4288('0x4c')]]?Mustache[_0x4288('0x4d')](this['templates'][_0x44b6b6[_0x4288('0x4c')]][_0x4288('0x4a')],_0x2f7e43):_0x4288('0x4e');break;case _0x4288('0x2'):_0x2fdcf8[_0x4288('0x4f')]=this['buildUri'](_0x44b6b6[_0x4288('0x4c')],_0x2f7e43,_[_0x4288('0x50')](_0x44b6b6['data3'])?!![]:parseInt(_0x44b6b6['data3'],0xa));if(_[_0x4288('0x50')](_0x44b6b6[_0x4288('0x51')])){_0x2fdcf8[_0x4288('0x52')]='0';}else{_0x2fdcf8[_0x4288('0x53')]=_0x44b6b6[_0x4288('0x51')];_0x2fdcf8[_0x4288('0x54')]=_[_0x4288('0x50')](_0x44b6b6['data5'])?_0x4288('0x55'):_0x44b6b6[_0x4288('0x56')];_0x2fdcf8[_0x4288('0x57')]=_[_0x4288('0x50')](_0x44b6b6[_0x4288('0x58')])?'600':_0x44b6b6[_0x4288('0x58')];}break;case _0x4288('0xf'):_0x2fdcf8['winApplication']=_0x44b6b6[_0x4288('0x4c')]?Mustache[_0x4288('0x4d')](_0x44b6b6[_0x4288('0x4c')],_0x2f7e43):'';_0x2fdcf8[_0x4288('0x59')]=_0x44b6b6[_0x4288('0x5a')]?Mustache[_0x4288('0x4d')](_0x44b6b6[_0x4288('0x5a')],_0x2f7e43):'';break;}this[_0x4288('0x37')](util[_0x4288('0x5b')](_0x4288('0x5c'),this['agents'][_0x2f7e43[_0x4288('0x3e')]]['name']),util[_0x4288('0x5b')](_0x4288('0x5d'),_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')](),barAndWebActions[_0x44b6b6[_0x4288('0x48')]]),_[_0x4288('0x5f')](_0x2fdcf8,_0x2f7e43));break;case _0x4288('0x60'):this[_0x4288('0x37')](util['format']('user:%s',this['agents'][_0x2f7e43[_0x4288('0x3e')]][_0x4288('0x61')]),util[_0x4288('0x5b')](_0x4288('0x62'),_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')]()),_['merge']({'ProjectId':parseInt(_0x44b6b6[_0x4288('0x48')],0xa)},_0x2f7e43));break;default:this[_0x4288('0x37')](util[_0x4288('0x5b')]('user:%s',this[_0x4288('0x11')][_0x2f7e43[_0x4288('0x3e')]]['name']),util['format']('trigger:%s',_0x44b6b6[_0x4288('0x45')]['toLowerCase']()),_[_0x4288('0x5f')]({},_0x44b6b6,_0x2f7e43));}}switch(_0x44b6b6[_0x4288('0x45')][_0x4288('0x5e')]()){case _0x4288('0x46'):cmContact['exec'](this[_0x4288('0x11')][_0x2f7e43['interface']],this[_0x4288('0x10')][_0x2a28af],_0x44b6b6,_0x2f7e43);break;case _0x4288('0x63'):integration[_0x4288('0x64')](_0x44b6b6,_0x2f7e43,this[_0x4288('0x1d')],this[_0x4288('0x11')][_0x2f7e43[_0x4288('0x3e')]],this[_0x4288('0x12')][_0x2f7e43[_0x4288('0x65')]],this['voiceExtensions'][_0x2f7e43[_0x4288('0x66')]]);break;case _0x4288('0x67'):urlforward[_0x4288('0x64')](_0x44b6b6,_0x2f7e43);break;case _0x4288('0x68'):script['exec'](_0x44b6b6,_0x2f7e43);break;}}}}}}};Trigger[_0x4288('0x38')][_0x4288('0x69')]=function(_0x2b4515,_0x3cf615,_0x535925){var _0x455a0f=url[_0x4288('0x6a')](Mustache[_0x4288('0x4d')](_0x2b4515,_0x3cf615),!![]);if(_0x535925){_[_0x4288('0x5f')](_0x455a0f[_0x4288('0x6b')],_0x3cf615);}delete _0x455a0f[_0x4288('0x6c')];var _0x25a83a=url[_0x4288('0x5b')](_0x455a0f);_0x25a83a=_0x25a83a['replace'](/\/\?/g,'?');return _0x25a83a;};Trigger[_0x4288('0x38')][_0x4288('0x41')]=function(_0x52e60e,_0xfbb18b){var _0x35924f=!![];var _0x51a5e7=!![];var _0x4dbc33=![];if(_0x52e60e[_0x4288('0x6d')]===_0xfbb18b[_0x4288('0x3a')]){_0x4dbc33=!![];}if(_0x52e60e[_0x4288('0x6e')][_0x4288('0x44')]){_0x35924f=_[_0x4288('0x6f')](_0x52e60e['AllConditions'],this['checkConditions'](_0xfbb18b,_0x52e60e['channel']));}if(_0x52e60e['AnyConditions'][_0x4288('0x44')]){_0x51a5e7=_[_0x4288('0x70')](_0x52e60e['AnyConditions'],this[_0x4288('0x71')](_0xfbb18b,_0x52e60e['channel']));}return _0x4dbc33&&_0x35924f&&_0x51a5e7;};Trigger[_0x4288('0x38')][_0x4288('0x71')]=function(_0x16e7f1,_0x549b2b){return function(_0x13b526){switch(_0x13b526[_0x4288('0x72')]){case _0x4288('0x73'):if(_0x16e7f1[_0x4288('0x6d')]===_0x549b2b){if(_0x549b2b===_0x4288('0x74')){return _0x16e7f1[_0x4288('0x75')]?operators[_0x13b526[_0x4288('0x76')]](Number(_0x13b526[_0x4288('0x77')]),_0x16e7f1[_0x4288('0x75')]):![];}else{return _0x16e7f1[_[_0x4288('0x78')](_0x549b2b)+_0x4288('0x79')]?operators[_0x13b526[_0x4288('0x76')]](Number(_0x13b526[_0x4288('0x77')]),_0x16e7f1[_[_0x4288('0x78')](_0x549b2b)+'AccountId']):![];}}break;case _0x4288('0x7a'):case _0x4288('0x7b'):if(_0x16e7f1['channel']===_0x549b2b){return _0x16e7f1[_0x4288('0x7c')]?operators[_0x13b526['operator']](_0x13b526[_0x4288('0x77')],_0x16e7f1['event']):![];}break;case _0x4288('0x65'):return _0x16e7f1['queue']?operators[_0x13b526['operator']](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x65')]):![];case'agent':return _0x16e7f1[_0x4288('0x7d')]?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x7d')]):![];case _0x4288('0x7e'):return _0x16e7f1[_0x4288('0x7e')]?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x7e')]):![];case _0x4288('0x66'):return _0x16e7f1['routeId']?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x66')]):![];case _0x4288('0x7f'):if(_0x13b526['value']===_0x4288('0x80'))_0x13b526[_0x4288('0x77')]=null;return typeof _0x16e7f1[_0x4288('0x81')]!=='undefined'?operators[_0x13b526[_0x4288('0x76')]](_0x13b526[_0x4288('0x77')],_0x16e7f1[_0x4288('0x81')]):![];}return![];};};module[_0x4288('0x82')]=Trigger;
\ No newline at end of file
+var _0x131f=['custom:rejectmessage','prototype','info','stringify','emit','clone','motionChannel','undefined','voice','checkTriggers','status','checkTrigger','merge','action','toLowerCase','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winApplication','render','winArguments','format','user:%s','jscripty','interface','name','trigger:%s','contactmanager','integration','exec','queue','routeId','urlforward','script','parse','query','search','channel','AllConditions','length','every','checkConditions','AnyConditions','some','field','chat','ChatWebsiteId','value','upperFirst','operator','interaction','message','event','agent','membername','lastevent','null','substatus','exports','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:closedinteraction','custom:acceptmessage'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x131f,0xc8));var _0xf131=function(_0x1ea319,_0x5633f9){_0x1ea319=_0x1ea319-0x0;var _0xca3464=_0x131f[_0x1ea319];return _0xca3464;};'use strict';var util=require('util');var _=require(_0xf131('0x0'));var url=require(_0xf131('0x1'));var Mustache=require(_0xf131('0x2'));var Redis=require(_0xf131('0x3'));var urlforward=require(_0xf131('0x4'));var integration=require(_0xf131('0x5'));var cmContact=require(_0xf131('0x6'));var script=require('./script');var config=require(_0xf131('0x7'));var logger=require(_0xf131('0x8'))(_0xf131('0x9'));var ami=require(_0xf131('0xa'));config[_0xf131('0xb')]=_[_0xf131('0xc')](config['redis'],{'host':_0xf131('0xd'),'port':0x18eb});var io=require(_0xf131('0xe'))(new Redis(config['redis']));var operators={'equals':function(_0x28fa6b,_0x264825){return _0x28fa6b==_0x264825;},'not_equals':function(_0x520474,_0x6ff636){return _0x520474!=_0x6ff636;}};var barAndWebActions=[_0xf131('0xf'),'url',_0xf131('0x10')];function Trigger(_0x645a6b){this[_0xf131('0x11')]=_0x645a6b[_0xf131('0x11')];this[_0xf131('0x12')]=_0x645a6b[_0xf131('0x12')];this[_0xf131('0x13')]=_0x645a6b[_0xf131('0x13')];this[_0xf131('0x14')]=_0x645a6b[_0xf131('0x14')];this[_0xf131('0x15')]=_0x645a6b[_0xf131('0x15')];this['zendeskAccounts']=_0x645a6b[_0xf131('0x16')];this['freshdeskAccounts']=_0x645a6b[_0xf131('0x17')];this['salesforceAccounts']=_0x645a6b[_0xf131('0x18')];this['sugarcrmAccounts']=_0x645a6b['sugarcrmAccounts'];this[_0xf131('0x19')]=_0x645a6b['zohoAccounts'];this['deskAccounts']=_0x645a6b[_0xf131('0x1a')];this[_0xf131('0x1b')]=_0x645a6b[_0xf131('0x1b')];this[_0xf131('0x1c')]=_0x645a6b[_0xf131('0x1c')];this[_0xf131('0x1d')]=_0x645a6b[_0xf131('0x1d')];this['freshsalesAccounts']=_0x645a6b[_0xf131('0x1e')];this[_0xf131('0x1f')]={'zendesk':this[_0xf131('0x16')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xf131('0x17')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xf131('0x19')],'desk':this['deskAccounts'],'vtiger':this[_0xf131('0x1b')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xf131('0x1e')],'servicenow':this[_0xf131('0x1c')]};ami['on']('custom:agentcalled',this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x22'),this['syncCustomEvent'][_0xf131('0x21')](this));ami['on']('custom:agentringnoanswer',this[_0xf131('0x20')]['bind'](this));ami['on'](_0xf131('0x23'),this['syncCustomEvent'][_0xf131('0x21')](this));ami['on'](_0xf131('0x24'),this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x25'),this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x26'),this['syncCustomEvent'][_0xf131('0x21')](this));ami['on'](_0xf131('0x27'),this[_0xf131('0x20')]['bind'](this));ami['on']('custom:agentreject',this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x28'),this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent'][_0xf131('0x21')](this));ami['on'](_0xf131('0x29'),this['syncCustomEvent'][_0xf131('0x21')](this));ami['on'](_0xf131('0x2a'),this[_0xf131('0x2b')][_0xf131('0x21')](this));ami['on'](_0xf131('0x2c'),this[_0xf131('0x2b')][_0xf131('0x21')](this));ami['on']('custom:dialend',this[_0xf131('0x2b')][_0xf131('0x21')](this));ami['on'](_0xf131('0x2d'),this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x2e'),this[_0xf131('0x20')]['bind'](this));ami['on']('custom:substatus',this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on']('custom:incomingmessage',this[_0xf131('0x20')]['bind'](this));ami['on']('custom:outgoingmessage',this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x2f'),this[_0xf131('0x20')][_0xf131('0x21')](this));ami['on'](_0xf131('0x30'),this[_0xf131('0x20')]['bind'](this));}Trigger[_0xf131('0x31')]['emit']=function(_0x372fa8,_0x31fa10,_0x266fc3){logger[_0xf131('0x32')](_0x372fa8,_0x31fa10,JSON[_0xf131('0x33')](_0x266fc3));io['to'](_0x372fa8)[_0xf131('0x34')](_0x31fa10,_0x266fc3);};Trigger[_0xf131('0x31')][_0xf131('0x20')]=function(_0x35d2de){var _0x27643e=_[_0xf131('0x35')](_0x35d2de);if(typeof _0x27643e[_0xf131('0x36')]===_0xf131('0x37')){_0x27643e['motionChannel']=_0xf131('0x38');}this['checkTriggers'](_0x27643e);};Trigger['prototype'][_0xf131('0x2b')]=function(_0x4db390){if(this[_0xf131('0x12')][_0x4db390['interface']]){this['syncCustomEvent'](_0x4db390);}};Trigger[_0xf131('0x31')][_0xf131('0x39')]=function(_0x48007e){var _0x333622;for(var _0x4546e in this[_0xf131('0x11')]){if(this[_0xf131('0x11')]['hasOwnProperty'](_0x4546e)){if(this[_0xf131('0x11')][_0x4546e][_0xf131('0x3a')]){_0x333622=this[_0xf131('0x3b')](this[_0xf131('0x11')][_0x4546e],_0x48007e);if(_0x333622){_[_0xf131('0x3c')](_0x48007e,_0x48007e['variables']);for(var _0x1028ba=0x0,_0x227b1d,_0x5db6f5,_0x4e62c7;_0x1028ba<this[_0xf131('0x11')][_0x4546e]['Actions']['length'];_0x1028ba+=0x1){_0x227b1d=this[_0xf131('0x11')][_0x4546e]['Actions'][_0x1028ba];if(this[_0xf131('0x12')][_0x48007e['interface']]){switch(_0x227b1d[_0xf131('0x3d')][_0xf131('0x3e')]()){case'contactmanager':break;case _0xf131('0x3f'):case _0xf131('0x40'):var _0x2494b1={};switch(barAndWebActions[_0x227b1d[_0xf131('0x41')]]){case _0xf131('0xf'):_0x2494b1[_0xf131('0x42')]=_0x227b1d[_0xf131('0x43')];_0x2494b1[_0xf131('0x44')]=this[_0xf131('0x14')][_0x227b1d[_0xf131('0x43')]]?Mustache['render'](this[_0xf131('0x14')][_0x227b1d[_0xf131('0x43')]][_0xf131('0x44')],_0x48007e):_0xf131('0x45');break;case'url':_0x2494b1[_0xf131('0x46')]=this[_0xf131('0x47')](_0x227b1d[_0xf131('0x43')],_0x48007e,_[_0xf131('0x48')](_0x227b1d[_0xf131('0x49')])?!![]:parseInt(_0x227b1d[_0xf131('0x49')],0xa));if(_[_0xf131('0x48')](_0x227b1d[_0xf131('0x4a')])){_0x2494b1[_0xf131('0x4b')]='0';}else{_0x2494b1[_0xf131('0x4c')]=_0x227b1d[_0xf131('0x4a')];_0x2494b1[_0xf131('0x4d')]=_[_0xf131('0x48')](_0x227b1d[_0xf131('0x4e')])?_0xf131('0x4f'):_0x227b1d['data5'];_0x2494b1[_0xf131('0x50')]=_['isNil'](_0x227b1d[_0xf131('0x51')])?_0xf131('0x52'):_0x227b1d[_0xf131('0x51')];}break;case _0xf131('0x10'):_0x2494b1[_0xf131('0x53')]=_0x227b1d['data2']?Mustache[_0xf131('0x54')](_0x227b1d[_0xf131('0x43')],_0x48007e):'';_0x2494b1[_0xf131('0x55')]=_0x227b1d[_0xf131('0x49')]?Mustache['render'](_0x227b1d[_0xf131('0x49')],_0x48007e):'';break;}this['emit'](util[_0xf131('0x56')](_0xf131('0x57'),this[_0xf131('0x12')][_0x48007e['interface']]['name']),util[_0xf131('0x56')]('trigger:%s:%s',_0x227b1d['action'][_0xf131('0x3e')](),barAndWebActions[_0x227b1d['data1']]),_[_0xf131('0x3c')](_0x2494b1,_0x48007e));break;case _0xf131('0x58'):this[_0xf131('0x34')](util['format']('user:%s',this[_0xf131('0x12')][_0x48007e[_0xf131('0x59')]][_0xf131('0x5a')]),util[_0xf131('0x56')](_0xf131('0x5b'),_0x227b1d[_0xf131('0x3d')][_0xf131('0x3e')]()),_['merge']({'ProjectId':parseInt(_0x227b1d['data1'],0xa)},_0x48007e));break;default:this[_0xf131('0x34')](util[_0xf131('0x56')](_0xf131('0x57'),this['agents'][_0x48007e['interface']][_0xf131('0x5a')]),util['format'](_0xf131('0x5b'),_0x227b1d[_0xf131('0x3d')][_0xf131('0x3e')]()),_['merge']({},_0x227b1d,_0x48007e));}}switch(_0x227b1d[_0xf131('0x3d')][_0xf131('0x3e')]()){case _0xf131('0x5c'):cmContact['exec'](this[_0xf131('0x12')][_0x48007e[_0xf131('0x59')]],this[_0xf131('0x11')][_0x4546e],_0x227b1d,_0x48007e);break;case _0xf131('0x5d'):integration[_0xf131('0x5e')](_0x227b1d,_0x48007e,this[_0xf131('0x1f')],this[_0xf131('0x12')][_0x48007e[_0xf131('0x59')]],this[_0xf131('0x13')][_0x48007e[_0xf131('0x5f')]],this['voiceExtensions'][_0x48007e[_0xf131('0x60')]]);break;case _0xf131('0x61'):urlforward[_0xf131('0x5e')](_0x227b1d,_0x48007e);break;case _0xf131('0x62'):script['exec'](_0x227b1d,_0x48007e);break;}}}}}}};Trigger[_0xf131('0x31')][_0xf131('0x47')]=function(_0xfd27dc,_0x2ace1d,_0x1564f9){var _0x351063=url[_0xf131('0x63')](Mustache['render'](_0xfd27dc,_0x2ace1d),!![]);if(_0x1564f9){_[_0xf131('0x3c')](_0x351063[_0xf131('0x64')],_0x2ace1d);}delete _0x351063[_0xf131('0x65')];var _0x5f4a28=url[_0xf131('0x56')](_0x351063);_0x5f4a28=_0x5f4a28['replace'](/\/\?/g,'?');return _0x5f4a28;};Trigger['prototype'][_0xf131('0x3b')]=function(_0x754ffa,_0x31d9c0){var _0x26573a=!![];var _0x88389a=!![];var _0x26c7bf=![];if(_0x754ffa[_0xf131('0x66')]===_0x31d9c0[_0xf131('0x36')]){_0x26c7bf=!![];}if(_0x754ffa[_0xf131('0x67')][_0xf131('0x68')]){_0x26573a=_[_0xf131('0x69')](_0x754ffa[_0xf131('0x67')],this[_0xf131('0x6a')](_0x31d9c0,_0x754ffa[_0xf131('0x66')]));}if(_0x754ffa[_0xf131('0x6b')][_0xf131('0x68')]){_0x88389a=_[_0xf131('0x6c')](_0x754ffa[_0xf131('0x6b')],this[_0xf131('0x6a')](_0x31d9c0,_0x754ffa[_0xf131('0x66')]));}return _0x26c7bf&&_0x26573a&&_0x88389a;};Trigger[_0xf131('0x31')][_0xf131('0x6a')]=function(_0x5c72b0,_0x33fc3a){return function(_0x46227e){switch(_0x46227e[_0xf131('0x6d')]){case'account':if(_0x5c72b0['channel']===_0x33fc3a){if(_0x33fc3a===_0xf131('0x6e')){return _0x5c72b0[_0xf131('0x6f')]?operators[_0x46227e['operator']](Number(_0x46227e[_0xf131('0x70')]),_0x5c72b0[_0xf131('0x6f')]):![];}else{return _0x5c72b0[_[_0xf131('0x71')](_0x33fc3a)+'AccountId']?operators[_0x46227e[_0xf131('0x72')]](Number(_0x46227e[_0xf131('0x70')]),_0x5c72b0[_['upperFirst'](_0x33fc3a)+'AccountId']):![];}}break;case _0xf131('0x73'):case _0xf131('0x74'):if(_0x5c72b0[_0xf131('0x66')]===_0x33fc3a){return _0x5c72b0[_0xf131('0x75')]?operators[_0x46227e[_0xf131('0x72')]](_0x46227e[_0xf131('0x70')],_0x5c72b0['event']):![];}break;case _0xf131('0x5f'):return _0x5c72b0[_0xf131('0x5f')]?operators[_0x46227e[_0xf131('0x72')]](_0x46227e[_0xf131('0x70')],_0x5c72b0['queue']):![];case _0xf131('0x76'):return _0x5c72b0[_0xf131('0x77')]?operators[_0x46227e[_0xf131('0x72')]](_0x46227e['value'],_0x5c72b0['membername']):![];case'lastevent':return _0x5c72b0[_0xf131('0x78')]?operators[_0x46227e['operator']](_0x46227e[_0xf131('0x70')],_0x5c72b0['lastevent']):![];case'routeId':return _0x5c72b0[_0xf131('0x60')]?operators[_0x46227e['operator']](_0x46227e[_0xf131('0x70')],_0x5c72b0[_0xf131('0x60')]):![];case'mailSubstatus':if(_0x46227e[_0xf131('0x70')]===_0xf131('0x79'))_0x46227e['value']=null;return typeof _0x5c72b0[_0xf131('0x7a')]!==_0xf131('0x37')?operators[_0x46227e[_0xf131('0x72')]](_0x46227e[_0xf131('0x70')],_0x5c72b0['substatus']):![];}return![];};};module[_0xf131('0x7b')]=Trigger;
\ No newline at end of file
index 3da63f4..63199f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe14b,0x93));var _0xbe14=function(_0x2d095c,_0x4a8f72){_0x2d095c=_0x2d095c-0x0;var _0x357aba=_0xe14b[_0x2d095c];return _0x357aba;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
+var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x26c72d,_0x52413e){var _0x4be065=function(_0x1385b3){while(--_0x1385b3){_0x26c72d['push'](_0x26c72d['shift']());}};_0x4be065(++_0x52413e);}(_0x55ca,0x126));var _0xa55c=function(_0x30c91d,_0x1a8c6d){_0x30c91d=_0x30c91d-0x0;var _0x319942=_0x55ca[_0x30c91d];return _0x319942;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
index 7749ee0..2442f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3827=['lastIndexOf','enduserId','catch','toLowerCase','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','value','telephone1',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','nameField','customField','idField','indexOf','content','ticketType','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','phonecalls','callDirection','queue','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','lodash','util','./util','md5','ioredis','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','POST','clientId','remoteUri','password','clientSecret','then','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','email','userEmail','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','username','length','internalemailaddress','outbound','destcalleridnum','calleridnum','contacts','Bearer\x20','odata-entityid','substring'];(function(_0x37d48d,_0x4e998c){var _0x2679cc=function(_0x445246){while(--_0x445246){_0x37d48d['push'](_0x37d48d['shift']());}};_0x2679cc(++_0x4e998c);}(_0x3827,0x1c4));var _0x7382=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x3827[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0x7382('0x0'));var BPromise=require('bluebird');var rp=require('request-promise');var util=require(_0x7382('0x1'));var intUtil=require(_0x7382('0x2'));var md5=require(_0x7382('0x3'));var Redis=require(_0x7382('0x4'));var logger=require(_0x7382('0x5'))('dynamics365');var config=require('../../../../config/environment');config['redis']=_[_0x7382('0x6')](config[_0x7382('0x7')],{'host':_0x7382('0x8'),'port':0x18eb});var io=require(_0x7382('0x9'))(new Redis(config[_0x7382('0x7')]));function getAuthToken(_0x199d1d,_0x45281f,_0x5cbc24){var _0x1ab2e7={'method':_0x7382('0xa'),'uri':_0x45281f,'form':{'client_id':_0x199d1d[_0x7382('0xb')],'resource':_0x199d1d[_0x7382('0xc')],'username':_0x199d1d['username'],'password':_0x199d1d[_0x7382('0xd')],'grant_type':_0x7382('0xd'),'client_secret':_0x199d1d[_0x7382('0xe')]},'json':!![]};return rp(_0x1ab2e7)[_0x7382('0xf')](function(_0x5cc7f0){return _0x5cc7f0['access_token'];})['catch'](function(_0x226091){logger['error']('['+[_0x5cbc24[_0x7382('0x10')]()]+_0x7382('0x11'));return _0x226091[_0x7382('0x12')];});}function getUser(_0x2cdd18,_0x2da338,_0x8e4b80,_0x49df7d,_0x4f1462,_0x58c88f){return new BPromise(function(_0x3ea904,_0x352854){return getAuthToken(_0x2da338,_0x49df7d,_0x58c88f)[_0x7382('0xf')](function(_0x524b77){var _0xcc7829={'method':'GET','uri':_0x4f1462+_0x7382('0x13'),'headers':{'Authorization':'Bearer\x20'+_0x524b77,'OData-Version':_0x7382('0x14')},'json':!![]};return rp(_0xcc7829);})[_0x7382('0xf')](function(_0x2bee6c){var _0x468be2=_0x2bee6c['value'];var _0x23570c=![];var _0x1b17be=null;if(!_['isNil'](_0x8e4b80)){if(intUtil['validateEmail'](_0x8e4b80[_0x7382('0x15')])){_0x2cdd18[_0x7382('0x16')]=_0x8e4b80[_0x7382('0x15')];for(_0x1b17be=0x0;_0x1b17be<_0x468be2['length'];_0x1b17be++){if(_0x468be2[_0x1b17be]['internalemailaddress']===_0x8e4b80[_0x7382('0x15')]&&!_0x468be2[_0x1b17be][_0x7382('0x17')]){_0x23570c=!![];logger[_0x7382('0x18')]('['+[_0x58c88f[_0x7382('0x10')]()]+_0x7382('0x19')+_0x468be2[_0x1b17be][_0x7382('0x1a')]+'!');_0x2cdd18[_0x7382('0x1b')]=_0x468be2[_0x1b17be][_0x7382('0x1a')];}}}}if(!_0x23570c){logger['info']('['+[_0x58c88f[_0x7382('0x10')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x2cdd18['userEmail']=_0x2da338[_0x7382('0x1c')];for(_0x1b17be=0x0;_0x1b17be<_0x468be2[_0x7382('0x1d')];_0x1b17be++){if(_0x468be2[_0x1b17be][_0x7382('0x1e')]===_0x2da338[_0x7382('0x1c')]){_0x2cdd18['userId']=_0x468be2[_0x1b17be]['systemuserid'];}}}_0x3ea904(_0x2cdd18);})['catch'](function(_0x49a021){_0x352854(_0x49a021['message']);});});}function createEndUser(_0xb10f00,_0x1c5268,_0x4a26c1,_0x42f165,_0x54998d,_0x19139b){return new BPromise(function(_0x5eb5e8,_0x510bd5){return getAuthToken(_0x1c5268,_0x4a26c1,_0x19139b)[_0x7382('0xf')](function(_0x45402c){var _0x36ca4e=_0x19139b['toLowerCase']()===_0x7382('0x1f')?_0x54998d[_0x7382('0x20')]:_0x54998d[_0x7382('0x21')];var _0x16c099={'method':_0x7382('0xa'),'uri':_0x42f165+_0x7382('0x22'),'body':{'telephone1':_0x36ca4e,'fullname':_0x36ca4e,'firstname':_0x36ca4e,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0xb10f00[_0x7382('0x1b')]+')'},'headers':{'Authorization':_0x7382('0x23')+_0x45402c,'OData-Version':_0x7382('0x14')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x16c099);})[_0x7382('0xf')](function(_0x17cb33){var _0x99ac52=_0x17cb33['headers'][_0x7382('0x24')];var _0x55dbdc=_0x99ac52[_0x7382('0x25')](_0x99ac52[_0x7382('0x26')]('(')+0x1,_0x99ac52['lastIndexOf'](')'));_0xb10f00[_0x7382('0x27')]=_0x55dbdc;_0x5eb5e8(_0xb10f00);})[_0x7382('0x28')](function(_0x4ac67d){_0x510bd5(_0x4ac67d[_0x7382('0x12')]);});});}function getEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400){return new BPromise(function(_0x5aa61f,_0x1d34aa){var _0xc0bf77=_0x2e2400[_0x7382('0x29')]()===_0x7382('0x1f')?_0x5a119a[_0x7382('0x20')]:_0x5a119a[_0x7382('0x21')];return getAuthToken(_0x5317af,_0x56295d,_0x2e2400)[_0x7382('0xf')](function(_0xcb8f7c){var _0x299c84={'method':_0x7382('0x2a'),'uri':_0x1d4e44+_0x7382('0x2b')+_0xc0bf77['replace']('+',_0x7382('0x2c'))+'\x27','headers':{'Authorization':_0x7382('0x23')+_0xcb8f7c,'If-None-Match':null,'OData-Version':_0x7382('0x14')},'json':!![]};return rp(_0x299c84);})[_0x7382('0xf')](function(_0x123519){var _0x49ac46=null;if(_0x123519){var _0x47dc79=_0x123519[_0x7382('0x2d')];var _0xa43ef7=![];for(_0x49ac46=0x0;_0x49ac46<_0x47dc79['length'];_0x49ac46++){if(_0x47dc79[_0x49ac46][_0x7382('0x2e')]===_0xc0bf77){_0xa43ef7=!![];_0x3bf25b[_0x7382('0x27')]=_0x47dc79[_0x49ac46]['contactid'];}}if(_0xa43ef7){_0x5aa61f(_0x3bf25b);}else{return createEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400)['then'](function(_0x4aeb7a){logger[_0x7382('0x18')]('['+[_0x2e2400[_0x7382('0x10')]()]+_0x7382('0x2f'),_0x4aeb7a[_0x7382('0x27')]);_0x5aa61f(_0x4aeb7a);});}}else{return createEndUser(_0x3bf25b,_0x5317af,_0x56295d,_0x1d4e44,_0x5a119a,_0x2e2400)[_0x7382('0xf')](function(_0xae4a89){logger[_0x7382('0x18')]('['+[_0x2e2400[_0x7382('0x10')]()]+_0x7382('0x30'),_0xae4a89['enduserId']);_0x5aa61f(_0xae4a89);});}});});}function getCustomFields(_0x34aa15,_0x4e2b68,_0x358014){var _0x542d43={};if(_0x34aa15['length']>0x0){_[_0x7382('0x31')](_0x34aa15,function(_0x5efe6a){if(_[_0x7382('0x32')]([_0x7382('0x33'),'picklist'],_0x5efe6a['type'])&&_0x5efe6a[_0x7382('0x34')]&&!_0x5efe6a[_0x7382('0x35')]){var _0x660c03=_0x5efe6a[_0x7382('0x36')][_0x7382('0x29')]();var _0x4eb05a=_0x660c03['substring'](0x0,_0x660c03['indexOf']('_'));var _0x19f4d7=_0x660c03[_0x7382('0x25')](_0x660c03[_0x7382('0x37')]('_')+0x1);if(_0x4eb05a===_0x358014){_0x542d43[_0x19f4d7]=_0x5efe6a[_0x7382('0x38')];}}});}return _0x542d43;}function getTicket(_0x413160,_0x2226b2,_0x44ce5e,_0x445d1a,_0x4d9cf9,_0x2336b3,_0x56ff22){return new BPromise(function(_0x1bfdbc,_0x5a55cc){var _0xde6d64;return getAuthToken(_0x2226b2,_0x44ce5e,_0x56ff22)[_0x7382('0xf')](function(_0x493313){if(_0x2336b3[_0x7382('0x39')]==='incident'){_0xde6d64={'method':_0x7382('0xa'),'uri':_0x445d1a+_0x7382('0x3a'),'body':Object[_0x7382('0x3b')]({},{'title':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3d')],_0x4d9cf9,'\x20'),'description':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3e')],_0x4d9cf9,'\x0a'),'customerid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','ownerid@odata.bind':_0x7382('0x40')+_0x413160[_0x7382('0x1b')]+')','caseorigincode':'1'},getCustomFields(_0x2336b3[_0x7382('0x41')],_0x4d9cf9,_0x2336b3[_0x7382('0x39')])),'headers':{'Authorization':_0x7382('0x23')+_0x493313,'OData-Version':_0x7382('0x14')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x2336b3[_0x7382('0x39')]===_0x7382('0x42')){_0xde6d64={'method':_0x7382('0xa'),'uri':_0x445d1a+_0x7382('0x43'),'body':Object['assign']({},{'subject':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3d')],_0x4d9cf9,'\x20'),'phonenumber':String(_0x4d9cf9[_0x7382('0x21')]),'description':intUtil[_0x7382('0x3c')](_0x2336b3[_0x7382('0x3e')],_0x4d9cf9,'\x0a'),'regardingobjectid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','ownerid@odata.bind':'/systemusers('+_0x413160['userId']+')','directioncode':_0x413160['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x413160[_0x7382('0x1b')]+')','participationtypemask':_0x413160[_0x7382('0x44')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x7382('0x3f')+_0x413160[_0x7382('0x27')]+')','participationtypemask':_0x413160['callDirection']===_0x7382('0x45')?0x1:0x2}]},getCustomFields(_0x2336b3[_0x7382('0x41')],_0x4d9cf9,_0x2336b3[_0x7382('0x39')])),'headers':{'Authorization':_0x7382('0x23')+_0x493313,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xde6d64);})[_0x7382('0xf')](function(_0x199e9d){var _0x2fd5d3=_0x199e9d[_0x7382('0x46')][_0x7382('0x24')];var _0xa6042e=_0x2fd5d3['substring'](_0x2fd5d3[_0x7382('0x26')]('(')+0x1,_0x2fd5d3[_0x7382('0x26')](')'));_0x413160[_0x7382('0x47')]=_0xa6042e;_0x1bfdbc(_0x413160);})['catch'](function(_0x4dc3a5){_0x5a55cc(_0x4dc3a5[_0x7382('0x12')]);});});}function emit(_0x4cd65d,_0x429658,_0x5a7d57,_0x3217d3){var _0x5e7536={'uri':util[_0x7382('0x48')](_0x7382('0x49'),_0x4cd65d,_0x5a7d57,_0x3217d3)};io['to'](util['format'](_0x7382('0x4a'),_0x429658))['emit'](_0x7382('0x4b'),_0x5e7536);}exports['cs']=function(_0x3d2abf,_0x14f7dd,_0x238348,_0x59dc42,_0x171202,_0x127a3a,_0x583e40,_0x10bd68){var _0x184424={};_0x127a3a['remoteUri']=intUtil[_0x7382('0x4c')](_0x127a3a[_0x7382('0xc')]);_0x127a3a['serverUrl']=intUtil['stripTrailingSlash'](_0x127a3a[_0x7382('0x4d')]);_0x184424[_0x7382('0x44')]=_0x10bd68==='queue'||_0x10bd68===_0x7382('0x4e')?_0x7382('0x45'):_0x7382('0x1f');var _0x16dc8c=util[_0x7382('0x48')](_0x7382('0x4f'),_0x127a3a[_0x7382('0xc')]);var _0x170731=util[_0x7382('0x48')](_0x7382('0x50'),_0x127a3a[_0x7382('0x51')]);var _0x1857fd=util['format'](_0x7382('0x52'),_0x127a3a[_0x7382('0x4d')],_0x14f7dd[_0x7382('0x53')],md5(_0x14f7dd[_0x7382('0x53')]));if(_0x171202&&_0x171202[_0x7382('0x54')]){logger[_0x7382('0x18')](_0x7382('0x55'),_0x7382('0x56'));_0x14f7dd['recordingURL']=_0x1857fd;}else if(_0x583e40&&_0x583e40[_0x7382('0x57')]&&_0x583e40[_0x7382('0x57')]!==_0x7382('0x58')){logger['info'](_0x7382('0x59'),'Recording\x20is\x20enabled!');_0x14f7dd[_0x7382('0x5a')]=_0x1857fd;}else{_0x14f7dd['recordingURL']='';}return getUser(_0x184424,_0x127a3a,_0x59dc42,_0x170731,_0x16dc8c,_0x10bd68)[_0x7382('0xf')](function(_0x1c4d96){logger['info']('['+_0x10bd68['toUpperCase']()+_0x7382('0x5b'),_0x1c4d96[_0x7382('0x1b')]);logger['info']('['+_0x10bd68[_0x7382('0x10')]()+']\x20The\x20User\x20email\x20is:',_0x1c4d96[_0x7382('0x16')]);return getEndUser(_0x1c4d96,_0x127a3a,_0x170731,_0x16dc8c,_0x14f7dd,_0x10bd68);})['then'](function(_0x5c5795){logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5c'),_0x5c5795[_0x7382('0x27')]);logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5d'),_0x14f7dd['calleridnum']);return getTicket(_0x5c5795,_0x127a3a,_0x170731,_0x16dc8c,_0x14f7dd,_0x238348,_0x10bd68);})['then'](function(_0x31b479){logger[_0x7382('0x18')](util[_0x7382('0x48')]('['+_0x10bd68['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x238348['ticketType'],_0x31b479[_0x7382('0x47')]));logger['info'](util[_0x7382('0x48')]('['+_0x10bd68[_0x7382('0x10')]()+_0x7382('0x5e'),_0x10bd68));if(_0x10bd68!==_0x7382('0x4e')){logger[_0x7382('0x18')]('['+_0x10bd68[_0x7382('0x10')]()+']',_0x7382('0x5f'));emit(_0x127a3a[_0x7382('0xc')],_0x59dc42[_0x7382('0x60')],_0x238348[_0x7382('0x39')],_0x31b479[_0x7382('0x47')]);}})[_0x7382('0x28')](function(_0x18f199){logger[_0x7382('0x61')]('['+_0x10bd68[_0x7382('0x10')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x18f199,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb662=[']\x20Wrong\x20credentials!','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','email','userEmail','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','message','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','value','length','telephone1','enduserId',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','type','nameField','idField','indexOf','content','ticketType','incidents','assign','getString','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','dynamics365','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','POST','remoteUri','password','clientSecret','access_token','catch','error','toUpperCase'];(function(_0x3c4f55,_0x211bbd){var _0x171c51=function(_0x2e3f67){while(--_0x2e3f67){_0x3c4f55['push'](_0x3c4f55['shift']());}};_0x171c51(++_0x211bbd);}(_0xb662,0x177));var _0x2b66=function(_0x13ff53,_0x5e1424){_0x13ff53=_0x13ff53-0x0;var _0x290228=_0xb662[_0x13ff53];return _0x290228;};'use strict';var _=require(_0x2b66('0x0'));var BPromise=require(_0x2b66('0x1'));var rp=require(_0x2b66('0x2'));var util=require('util');var intUtil=require('./util');var md5=require('md5');var Redis=require('ioredis');var logger=require('../../../../config/logger')(_0x2b66('0x3'));var config=require(_0x2b66('0x4'));config['redis']=_[_0x2b66('0x5')](config[_0x2b66('0x6')],{'host':_0x2b66('0x7'),'port':0x18eb});var io=require(_0x2b66('0x8'))(new Redis(config[_0x2b66('0x6')]));function getAuthToken(_0x3fb488,_0x346aae,_0x54aa11){var _0xaf811b={'method':_0x2b66('0x9'),'uri':_0x346aae,'form':{'client_id':_0x3fb488['clientId'],'resource':_0x3fb488[_0x2b66('0xa')],'username':_0x3fb488['username'],'password':_0x3fb488['password'],'grant_type':_0x2b66('0xb'),'client_secret':_0x3fb488[_0x2b66('0xc')]},'json':!![]};return rp(_0xaf811b)['then'](function(_0xa280ca){return _0xa280ca[_0x2b66('0xd')];})[_0x2b66('0xe')](function(_0x2ad600){logger[_0x2b66('0xf')]('['+[_0x54aa11[_0x2b66('0x10')]()]+_0x2b66('0x11'));return _0x2ad600['message'];});}function getUser(_0x20e89b,_0x5fa519,_0x12c100,_0x187c15,_0x1b23f4,_0x11e67c){return new BPromise(function(_0x3f8f53,_0x4290cc){return getAuthToken(_0x5fa519,_0x187c15,_0x11e67c)[_0x2b66('0x12')](function(_0x2f9655){var _0x57548a={'method':_0x2b66('0x13'),'uri':_0x1b23f4+_0x2b66('0x14'),'headers':{'Authorization':_0x2b66('0x15')+_0x2f9655,'OData-Version':_0x2b66('0x16')},'json':!![]};return rp(_0x57548a);})['then'](function(_0x24b784){var _0x187590=_0x24b784['value'];var _0x538778=![];var _0xd32349=null;if(!_['isNil'](_0x12c100)){if(intUtil['validateEmail'](_0x12c100[_0x2b66('0x17')])){_0x20e89b[_0x2b66('0x18')]=_0x12c100[_0x2b66('0x17')];for(_0xd32349=0x0;_0xd32349<_0x187590['length'];_0xd32349++){if(_0x187590[_0xd32349][_0x2b66('0x19')]===_0x12c100['email']&&!_0x187590[_0xd32349][_0x2b66('0x1a')]){_0x538778=!![];logger[_0x2b66('0x1b')]('['+[_0x11e67c[_0x2b66('0x10')]()]+_0x2b66('0x1c')+_0x187590[_0xd32349]['systemuserid']+'!');_0x20e89b[_0x2b66('0x1d')]=_0x187590[_0xd32349][_0x2b66('0x1e')];}}}}if(!_0x538778){logger[_0x2b66('0x1b')]('['+[_0x11e67c[_0x2b66('0x10')]()]+_0x2b66('0x1f'));_0x20e89b['userEmail']=_0x5fa519[_0x2b66('0x20')];for(_0xd32349=0x0;_0xd32349<_0x187590['length'];_0xd32349++){if(_0x187590[_0xd32349]['internalemailaddress']===_0x5fa519[_0x2b66('0x20')]){_0x20e89b[_0x2b66('0x1d')]=_0x187590[_0xd32349][_0x2b66('0x1e')];}}}_0x3f8f53(_0x20e89b);})['catch'](function(_0x336a62){_0x4290cc(_0x336a62['message']);});});}function createEndUser(_0xd6d723,_0x54bce5,_0x30cf2b,_0x1b532a,_0x4d75a1,_0x428f0c){return new BPromise(function(_0x205839,_0x2096ad){return getAuthToken(_0x54bce5,_0x30cf2b,_0x428f0c)[_0x2b66('0x12')](function(_0x250144){var _0x11ecb9=_0x428f0c[_0x2b66('0x21')]()===_0x2b66('0x22')?_0x4d75a1[_0x2b66('0x23')]:_0x4d75a1[_0x2b66('0x24')];var _0x537e3d={'method':_0x2b66('0x9'),'uri':_0x1b532a+_0x2b66('0x25'),'body':{'telephone1':_0x11ecb9,'fullname':_0x11ecb9,'firstname':_0x11ecb9,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x2b66('0x26')+_0xd6d723[_0x2b66('0x1d')]+')'},'headers':{'Authorization':_0x2b66('0x15')+_0x250144,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x537e3d);})[_0x2b66('0x12')](function(_0x45e57b){var _0x28c4c7=_0x45e57b[_0x2b66('0x27')][_0x2b66('0x28')];var _0x5439df=_0x28c4c7[_0x2b66('0x29')](_0x28c4c7['lastIndexOf']('(')+0x1,_0x28c4c7[_0x2b66('0x2a')](')'));_0xd6d723['enduserId']=_0x5439df;_0x205839(_0xd6d723);})[_0x2b66('0xe')](function(_0x3a73d7){_0x2096ad(_0x3a73d7[_0x2b66('0x2b')]);});});}function getEndUser(_0x2af239,_0x3d672e,_0x14dae2,_0x34d7aa,_0x46b7a0,_0x34536d){return new BPromise(function(_0x179cfb,_0x3517ff){var _0x14c1ac=_0x34536d['toLowerCase']()===_0x2b66('0x22')?_0x46b7a0['destcalleridnum']:_0x46b7a0[_0x2b66('0x24')];return getAuthToken(_0x3d672e,_0x14dae2,_0x34536d)[_0x2b66('0x12')](function(_0xdfde56){var _0x188d9a={'method':_0x2b66('0x13'),'uri':_0x34d7aa+_0x2b66('0x2c')+_0x14c1ac[_0x2b66('0x2d')]('+',_0x2b66('0x2e'))+'\x27','headers':{'Authorization':_0x2b66('0x15')+_0xdfde56,'If-None-Match':null,'OData-Version':_0x2b66('0x16')},'json':!![]};return rp(_0x188d9a);})[_0x2b66('0x12')](function(_0x2d7baf){var _0x2787b3=null;if(_0x2d7baf){var _0x2bd9c2=_0x2d7baf[_0x2b66('0x2f')];var _0x705187=![];for(_0x2787b3=0x0;_0x2787b3<_0x2bd9c2[_0x2b66('0x30')];_0x2787b3++){if(_0x2bd9c2[_0x2787b3][_0x2b66('0x31')]===_0x14c1ac){_0x705187=!![];_0x2af239[_0x2b66('0x32')]=_0x2bd9c2[_0x2787b3]['contactid'];}}if(_0x705187){_0x179cfb(_0x2af239);}else{return createEndUser(_0x2af239,_0x3d672e,_0x14dae2,_0x34d7aa,_0x46b7a0,_0x34536d)[_0x2b66('0x12')](function(_0x10810b){logger[_0x2b66('0x1b')]('['+[_0x34536d[_0x2b66('0x10')]()]+_0x2b66('0x33'),_0x10810b[_0x2b66('0x32')]);_0x179cfb(_0x10810b);});}}else{return createEndUser(_0x2af239,_0x3d672e,_0x14dae2,_0x34d7aa,_0x46b7a0,_0x34536d)['then'](function(_0xbf4635){logger[_0x2b66('0x1b')]('['+[_0x34536d[_0x2b66('0x10')]()]+_0x2b66('0x34'),_0xbf4635[_0x2b66('0x32')]);_0x179cfb(_0xbf4635);});}});});}function getCustomFields(_0xe66f5e,_0x5d713b,_0xaf9b65){var _0xd0aeed={};if(_0xe66f5e[_0x2b66('0x30')]>0x0){_[_0x2b66('0x35')](_0xe66f5e,function(_0x1a7d05){if(_[_0x2b66('0x36')]([_0x2b66('0x37'),_0x2b66('0x38')],_0x1a7d05[_0x2b66('0x39')])&&_0x1a7d05[_0x2b66('0x3a')]&&!_0x1a7d05['customField']){var _0x4be27f=_0x1a7d05[_0x2b66('0x3b')][_0x2b66('0x21')]();var _0x245b2b=_0x4be27f[_0x2b66('0x29')](0x0,_0x4be27f[_0x2b66('0x3c')]('_'));var _0x3176dc=_0x4be27f[_0x2b66('0x29')](_0x4be27f[_0x2b66('0x3c')]('_')+0x1);if(_0x245b2b===_0xaf9b65){_0xd0aeed[_0x3176dc]=_0x1a7d05[_0x2b66('0x3d')];}}});}return _0xd0aeed;}function getTicket(_0x254f79,_0x4eaa57,_0x44164e,_0x1266cc,_0xde9992,_0x5ed96c,_0x5a96b5){return new BPromise(function(_0x27ced0,_0x2bec55){var _0x11f509;return getAuthToken(_0x4eaa57,_0x44164e,_0x5a96b5)[_0x2b66('0x12')](function(_0x241fa9){if(_0x5ed96c[_0x2b66('0x3e')]==='incident'){_0x11f509={'method':'POST','uri':_0x1266cc+_0x2b66('0x3f'),'body':Object[_0x2b66('0x40')]({},{'title':intUtil[_0x2b66('0x41')](_0x5ed96c['Subjects'],_0xde9992,'\x20'),'description':intUtil[_0x2b66('0x41')](_0x5ed96c[_0x2b66('0x42')],_0xde9992,'\x0a'),'customerid_contact@odata.bind':_0x2b66('0x43')+_0x254f79[_0x2b66('0x32')]+')','ownerid@odata.bind':_0x2b66('0x26')+_0x254f79[_0x2b66('0x1d')]+')','caseorigincode':'1'},getCustomFields(_0x5ed96c[_0x2b66('0x44')],_0xde9992,_0x5ed96c['ticketType'])),'headers':{'Authorization':_0x2b66('0x15')+_0x241fa9,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5ed96c[_0x2b66('0x3e')]===_0x2b66('0x45')){_0x11f509={'method':_0x2b66('0x9'),'uri':_0x1266cc+'phonecalls','body':Object[_0x2b66('0x40')]({},{'subject':intUtil['getString'](_0x5ed96c['Subjects'],_0xde9992,'\x20'),'phonenumber':String(_0xde9992[_0x2b66('0x24')]),'description':intUtil[_0x2b66('0x41')](_0x5ed96c[_0x2b66('0x42')],_0xde9992,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x254f79['enduserId']+')','ownerid@odata.bind':_0x2b66('0x26')+_0x254f79['userId']+')','directioncode':_0x254f79[_0x2b66('0x46')]===_0x2b66('0x47')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x2b66('0x26')+_0x254f79['userId']+')','participationtypemask':_0x254f79['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x2b66('0x43')+_0x254f79[_0x2b66('0x32')]+')','participationtypemask':_0x254f79['callDirection']===_0x2b66('0x47')?0x1:0x2}]},getCustomFields(_0x5ed96c[_0x2b66('0x44')],_0xde9992,_0x5ed96c[_0x2b66('0x3e')])),'headers':{'Authorization':_0x2b66('0x15')+_0x241fa9,'OData-Version':_0x2b66('0x16')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x11f509);})[_0x2b66('0x12')](function(_0x522d9b){var _0x1b8039=_0x522d9b['headers'][_0x2b66('0x28')];var _0x4b7b02=_0x1b8039['substring'](_0x1b8039[_0x2b66('0x2a')]('(')+0x1,_0x1b8039[_0x2b66('0x2a')](')'));_0x254f79[_0x2b66('0x48')]=_0x4b7b02;_0x27ced0(_0x254f79);})[_0x2b66('0xe')](function(_0x4dfbd6){_0x2bec55(_0x4dfbd6[_0x2b66('0x2b')]);});});}function emit(_0x4dbcf8,_0x59527f,_0x612735,_0x2a30c2){var _0x4c7d69={'uri':util[_0x2b66('0x49')](_0x2b66('0x4a'),_0x4dbcf8,_0x612735,_0x2a30c2)};io['to'](util['format'](_0x2b66('0x4b'),_0x59527f))[_0x2b66('0x4c')]('trigger:browser:url',_0x4c7d69);}exports['cs']=function(_0x9914f1,_0x4f48a2,_0x53ed7d,_0x44e1bd,_0x29a715,_0x38fd27,_0x21b44c,_0x102469){var _0x17d392={};_0x38fd27[_0x2b66('0xa')]=intUtil['stripTrailingSlash'](_0x38fd27[_0x2b66('0xa')]);_0x38fd27['serverUrl']=intUtil[_0x2b66('0x4d')](_0x38fd27['serverUrl']);_0x17d392[_0x2b66('0x46')]=_0x102469==='queue'||_0x102469==='unmanaged'?'queue':_0x2b66('0x22');var _0x2e0173=util[_0x2b66('0x49')](_0x2b66('0x4e'),_0x38fd27[_0x2b66('0xa')]);var _0x2a3d5b=util[_0x2b66('0x49')]('https://login.microsoftonline.com/%s/oauth2/token',_0x38fd27[_0x2b66('0x4f')]);var _0x14afc7=util[_0x2b66('0x49')](_0x2b66('0x50'),_0x38fd27[_0x2b66('0x51')],_0x4f48a2[_0x2b66('0x52')],md5(_0x4f48a2['uniqueid']));if(_0x29a715&&_0x29a715[_0x2b66('0x53')]){logger[_0x2b66('0x1b')]('[QUEUE]',_0x2b66('0x54'));_0x4f48a2[_0x2b66('0x55')]=_0x14afc7;}else if(_0x21b44c&&_0x21b44c['recordingFormat']&&_0x21b44c[_0x2b66('0x56')]!==_0x2b66('0x57')){logger[_0x2b66('0x1b')](_0x2b66('0x58'),_0x2b66('0x54'));_0x4f48a2['recordingURL']=_0x14afc7;}else{_0x4f48a2[_0x2b66('0x55')]='';}return getUser(_0x17d392,_0x38fd27,_0x44e1bd,_0x2a3d5b,_0x2e0173,_0x102469)[_0x2b66('0x12')](function(_0x45f8d4){logger[_0x2b66('0x1b')]('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x59'),_0x45f8d4[_0x2b66('0x1d')]);logger[_0x2b66('0x1b')]('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x5a'),_0x45f8d4[_0x2b66('0x18')]);return getEndUser(_0x45f8d4,_0x38fd27,_0x2a3d5b,_0x2e0173,_0x4f48a2,_0x102469);})[_0x2b66('0x12')](function(_0x2daa9c){logger[_0x2b66('0x1b')]('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x5b'),_0x2daa9c[_0x2b66('0x32')]);logger[_0x2b66('0x1b')]('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x5c'),_0x4f48a2['calleridnum']);return getTicket(_0x2daa9c,_0x38fd27,_0x2a3d5b,_0x2e0173,_0x4f48a2,_0x53ed7d,_0x102469);})[_0x2b66('0x12')](function(_0x56319a){logger['info'](util['format']('['+_0x102469[_0x2b66('0x10')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x53ed7d[_0x2b66('0x3e')],_0x56319a[_0x2b66('0x48')]));logger[_0x2b66('0x1b')](util[_0x2b66('0x49')]('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x5d'),_0x102469));if(_0x102469!=='unmanaged'){logger[_0x2b66('0x1b')]('['+_0x102469[_0x2b66('0x10')]()+']',_0x2b66('0x5e'));emit(_0x38fd27[_0x2b66('0xa')],_0x44e1bd[_0x2b66('0x5f')],_0x53ed7d[_0x2b66('0x3e')],_0x56319a['ticketId']);}})[_0x2b66('0xe')](function(_0xdd988f){logger['error']('['+_0x102469[_0x2b66('0x10')]()+_0x2b66('0x60'),util[_0x2b66('0x61')](_0xdd988f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2644af0..1e79436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x691b=['uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','error','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','catch','lastevent','toUpperCase','request-promise','util','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','then','info','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','push','idField','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x2e0367,_0x55e4b0){var _0x448611=function(_0x569674){while(--_0x569674){_0x2e0367['push'](_0x2e0367['shift']());}};_0x448611(++_0x55e4b0);}(_0x691b,0x6d));var _0xb691=function(_0x23829e,_0x281228){_0x23829e=_0x23829e-0x0;var _0x323102=_0x691b[_0x23829e];return _0x323102;};'use strict';var _=require('lodash');var rp=require(_0xb691('0x0'));var md5=require('md5');var util=require(_0xb691('0x1'));var Redis=require('ioredis');var intUtil=require(_0xb691('0x2'));var config=require(_0xb691('0x3'));var logger=require(_0xb691('0x4'))(_0xb691('0x5'));config[_0xb691('0x6')]=_['defaults'](config[_0xb691('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0xb691('0x7'))(new Redis(config[_0xb691('0x6')]));var headers={'Content-Type':'application/json','Accept':_0xb691('0x8')};function emit(_0x40558c,_0x284a88,_0x12d0e0){io['to'](_0x40558c)[_0xb691('0x9')](_0x284a88,_0x12d0e0);}function getTicket(_0x2a726c,_0x3c6bde,_0x4b6abb,_0x4f586f,_0x3e59a3){logger['info']('Creating\x20new\x20ticket...');var _0x1329ba=_['merge']({'responder_id':_0x3c6bde['id'],'requester_id':_0x4b6abb['id'],'name':util['format'](_0xb691('0xa'),_0x3e59a3[_0xb691('0xb')]),'phone':_0x3e59a3[_0xb691('0xc')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb691('0xd')](_0x4f586f[_0xb691('0xe')],_0x3e59a3,'\x20'),'description':intUtil[_0xb691('0xd')](_0x4f586f[_0xb691('0xf')],_0x3e59a3,'<br>'),'tags':getTags(_0x4f586f[_0xb691('0x10')],_0xb691('0x11'))},getCustomFields(_0x4f586f[_0xb691('0x12')],_0x3e59a3));_0x1329ba['custom_fields']=_[_0xb691('0x13')](_[_0xb691('0x14')](_0x1329ba[_0xb691('0x15')],'id'),_0xb691('0x16'));return request({'uri':util['format'](_0xb691('0x17'),_0x2a726c[_0xb691('0x18')]),'method':_0xb691('0x19'),'body':_0x1329ba})[_0xb691('0x1a')](function(_0x2765d5){logger[_0xb691('0x1b')]('Ticket\x20created!');return _0x2765d5;});}function getUser(_0x9e2d83,_0x3b1edf){if(intUtil[_0xb691('0x1c')](_0x3b1edf)){return request({'uri':util['format'](_0xb691('0x1d'),_0x9e2d83[_0xb691('0x18')]),'qs':{'email':_0x3b1edf}})[_0xb691('0x1a')](function(_0x431b15){if(_0x431b15[_0xb691('0x1e')]){logger['info'](_0xb691('0x1f'));return _[_0xb691('0x20')](_0x431b15,function(_0x51cd44){return _0x51cd44[_0xb691('0x21')][_0xb691('0x22')]===_0x3b1edf;});}else{logger[_0xb691('0x1b')](_0xb691('0x23'));return request({'uri':util[_0xb691('0x24')]('%s/api/v2/agents/me',_0x9e2d83['remoteUri'])})['then'](function(_0x1ddb71){logger[_0xb691('0x1b')](_0xb691('0x25'));return _0x1ddb71;});}});}else{logger[_0xb691('0x1b')](_0xb691('0x26'));return request({'uri':util[_0xb691('0x24')]('%s/api/v2/agents/me',_0x9e2d83[_0xb691('0x18')])})[_0xb691('0x1a')](function(_0xc5a7a1){logger[_0xb691('0x1b')](_0xb691('0x25'));return _0xc5a7a1;});}}function getEndUser(_0x1e9d65,_0x31ea4b,_0x4011d3){logger[_0xb691('0x1b')](_0xb691('0x27'),_0x4011d3);return request({'uri':util[_0xb691('0x24')](_0xb691('0x28'),_0x1e9d65[_0xb691('0x18')]),'qs':{'phone':_0x4011d3}})[_0xb691('0x1a')](function(_0x20fe15){if(_0x20fe15['length']){logger['info']('Enduser\x20found!');return _['find'](_0x20fe15,{'phone':_0x4011d3});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xb691('0x24')]('%s/api/v2/contacts',_0x1e9d65[_0xb691('0x18')]),'method':_0xb691('0x19'),'body':{'name':_0x31ea4b,'phone':_0x4011d3}})[_0xb691('0x1a')](function(_0x486d8c){logger[_0xb691('0x1b')](_0xb691('0x29'));return _0x486d8c;});}});}function getAuth(_0x8174d8){return util[_0xb691('0x24')]('Basic\x20%s',new Buffer(_0x8174d8[_0xb691('0x2a')]+':X')[_0xb691('0x2b')]('base64'));}function request(_0x166b70){logger['debug'](_0xb691('0x2c'),JSON[_0xb691('0x2d')](_0x166b70));return rp(_['defaults'](_0x166b70,{'method':_0xb691('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x50b429,_0x1f699f){var _0x57b793=[];if(_0x50b429&&_0x50b429[_0xb691('0x1e')]>0x0){_0x57b793=_[_0xb691('0x2f')](_0x50b429,_0x1f699f);}return _0x57b793;}function getCustomFields(_0x42b00d,_0x1c1659){var _0xfb2be8=[];var _0x293abd={'custom_fields':[]};if(_0x42b00d[_0xb691('0x1e')]>0x0){_[_0xb691('0x30')](_0x42b00d,function(_0x160535){if(_[_0xb691('0x31')]([_0xb691('0x32'),_0xb691('0x33')],_0x160535[_0xb691('0x34')])&&_0x160535[_0xb691('0x35')]&&!_0x160535[_0xb691('0x36')]){_0x293abd[_0x160535[_0xb691('0x35')][_0xb691('0x37')]()]=_0x160535[_0xb691('0x38')][_0xb691('0x2b')]();}else if(_['includes'](['string',_0xb691('0x33')],_0x160535[_0xb691('0x34')])&&_0x160535['idField']&&_0x160535[_0xb691('0x36')]){_0x293abd['custom_fields'][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x160535['content'][_0xb691('0x2b')]()});}else if(_0x160535['type']==='variable'&&_0x160535[_0xb691('0x3b')]&&_0x160535[_0xb691('0x3a')]&&_0x160535['customField']){_0x1c1659[_0x160535[_0xb691('0x3b')]]&&_0x293abd[_0xb691('0x15')][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x1c1659[_0x160535[_0xb691('0x3b')]][_0xb691('0x2b')]()});}else if(_0x160535[_0xb691('0x34')]==='customVariable'&&_0x160535[_0xb691('0x3c')]&&_0x160535[_0xb691('0x3c')]['name']&&_0x160535[_0xb691('0x3a')]&&_0x160535['customField']){_0x1c1659[_0x160535[_0xb691('0x3c')][_0xb691('0x11')]['toLowerCase']()]&&_0x293abd[_0xb691('0x15')][_0xb691('0x39')]({'id':_0x160535[_0xb691('0x3a')],'value':_0x1c1659[_0x160535['Variable'][_0xb691('0x11')][_0xb691('0x37')]()][_0xb691('0x2b')]()});}});}return _0x293abd;}exports[_0xb691('0x3d')]=function(_0xfd994d,_0x403800,_0x30aa2f,_0x1c33de,_0x5d3d59,_0x19f62a){var _0x3a1c87,_0x53cdac;_0x19f62a[_0xb691('0x18')]=intUtil[_0xb691('0x3e')](_0x19f62a[_0xb691('0x18')]);_0x19f62a[_0xb691('0x3f')]=intUtil[_0xb691('0x3e')](_0x19f62a[_0xb691('0x3f')]);if(_0x5d3d59&&_0x5d3d59[_0xb691('0x40')]){logger['info'](_0xb691('0x41'),_0xb691('0x42'));_0x403800['recordingURL']=util[_0xb691('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x19f62a[_0xb691('0x3f')],_0x403800[_0xb691('0x43')],md5(_0x403800[_0xb691('0x43')]));}else{_0x403800[_0xb691('0x44')]='';}headers[_0xb691('0x45')]=getAuth(_0x19f62a);return getUser(_0x19f62a,_0x1c33de[_0xb691('0x22')])[_0xb691('0x1a')](function(_0x4d6fc4){_0x3a1c87=_0x4d6fc4;logger[_0xb691('0x1b')](_0xb691('0x46'),_0x3a1c87['id']);return getEndUser(_0x19f62a,_0x403800[_0xb691('0xb')],_0x403800[_0xb691('0xc')]);})[_0xb691('0x1a')](function(_0x43c459){_0x53cdac=_0x43c459;logger['info']('The\x20Enduser\x20ID\x20is:',_0x53cdac['id']);return getTicket(_0x19f62a,_0x3a1c87,_0x53cdac,_0x30aa2f,_0x403800);})[_0xb691('0x1a')](function(_0x626514){if(_0x626514&&_0x626514['id']){logger[_0xb691('0x1b')](_0xb691('0x47'));logger[_0xb691('0x1b')](_0xb691('0x48'),_0x626514['id']);logger[_0xb691('0x1b')](_0xb691('0x41'),_0xb691('0x49'));emit(util[_0xb691('0x24')]('user:%s',_0x1c33de[_0xb691('0x11')]),'trigger:browser:url',{'uri':util[_0xb691('0x24')](_0xb691('0x4a'),_0x19f62a[_0xb691('0x18')],_0x626514['id'])});}})['catch'](function(_0x270669){logger[_0xb691('0x4b')](_0xb691('0x41'),JSON[_0xb691('0x2d')](_0x270669));});};exports['outbound']=function(_0x14ec3c,_0x3f4d1b,_0xe6da4,_0x4f6ae5,_0x518bd4,_0x48691c,_0x38eefa){var _0x3e4ba4,_0x3ca2d1;_0x48691c[_0xb691('0x18')]=intUtil[_0xb691('0x3e')](_0x48691c[_0xb691('0x18')]);_0x48691c[_0xb691('0x3f')]=intUtil['stripTrailingSlash'](_0x48691c['serverUrl']);if(_0x38eefa&&_0x38eefa[_0xb691('0x4c')]&&_0x38eefa['recordingFormat']!==_0xb691('0x4d')){logger['info'](_0xb691('0x4e'),_0xb691('0x42'));_0x3f4d1b[_0xb691('0x44')]=util[_0xb691('0x24')](_0xb691('0x4f'),_0x48691c[_0xb691('0x3f')],_0x3f4d1b[_0xb691('0x43')],md5(_0x3f4d1b[_0xb691('0x43')]));}headers[_0xb691('0x45')]=getAuth(_0x48691c);return getUser(_0x48691c,_0x4f6ae5['email'])['then'](function(_0x2543c6){_0x3e4ba4=_0x2543c6;logger[_0xb691('0x1b')](_0xb691('0x46'),_0x3e4ba4['id']);return getEndUser(_0x48691c,_0x3f4d1b[_0xb691('0x50')],_0x3f4d1b[_0xb691('0x51')]);})[_0xb691('0x1a')](function(_0x10c570){_0x3ca2d1=_0x10c570;logger[_0xb691('0x1b')](_0xb691('0x52'),_0x3ca2d1['id']);return getTicket(_0x48691c,_0x3e4ba4,_0x3ca2d1,_0xe6da4,_0x3f4d1b);})[_0xb691('0x1a')](function(_0x3bfcdb){if(_0x3bfcdb&&_0x3bfcdb['id']){logger[_0xb691('0x1b')]('Ticket\x20created!');logger[_0xb691('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x3bfcdb['id']);logger[_0xb691('0x1b')](_0xb691('0x4e'),_0xb691('0x49'));emit(util[_0xb691('0x24')](_0xb691('0x53'),_0x4f6ae5[_0xb691('0x11')]),_0xb691('0x54'),{'uri':util[_0xb691('0x24')]('%s/helpdesk/tickets/%d',_0x48691c[_0xb691('0x18')],_0x3bfcdb['id'])});}})[_0xb691('0x55')](function(_0xd5f074){logger[_0xb691('0x4b')](_0xb691('0x4e'),JSON[_0xb691('0x2d')](_0xd5f074));});};exports['unmanaged']=function(_0x381e4a,_0x22ded4,_0x33f17a,_0x2c01c8,_0x2af84a,_0x53e83a){var _0x2594b5,_0x5ef7a3;_0x53e83a[_0xb691('0x18')]=intUtil['stripTrailingSlash'](_0x53e83a[_0xb691('0x18')]);_0x53e83a[_0xb691('0x3f')]=intUtil[_0xb691('0x3e')](_0x53e83a[_0xb691('0x3f')]);if(_0x2af84a&&_0x2af84a['monitor_format']){logger[_0xb691('0x1b')]('['+_0x22ded4[_0xb691('0x56')][_0xb691('0x57')]()+']',_0xb691('0x42'));_0x22ded4[_0xb691('0x44')]=util[_0xb691('0x24')](_0xb691('0x4f'),_0x53e83a[_0xb691('0x3f')],_0x22ded4[_0xb691('0x43')],md5(_0x22ded4[_0xb691('0x43')]));}else{_0x22ded4[_0xb691('0x44')]='';}headers[_0xb691('0x45')]=getAuth(_0x53e83a);return getUser(_0x53e83a,'')[_0xb691('0x1a')](function(_0x5b4341){_0x2594b5=_0x5b4341;logger[_0xb691('0x1b')]('The\x20User\x20ID\x20is:',_0x2594b5['id']);return getEndUser(_0x53e83a,_0x22ded4['calleridname'],_0x22ded4[_0xb691('0xc')]);})[_0xb691('0x1a')](function(_0x384cb0){_0x5ef7a3=_0x384cb0;logger[_0xb691('0x1b')](_0xb691('0x52'),_0x5ef7a3['id']);return getTicket(_0x53e83a,_0x2594b5,_0x5ef7a3,_0x33f17a,_0x22ded4);})[_0xb691('0x1a')](function(_0x5c352f){if(_0x5c352f){logger[_0xb691('0x1b')](_0xb691('0x47'));logger[_0xb691('0x1b')](_0xb691('0x48'),_0x5c352f['id']);}})['catch'](function(_0x347173){logger[_0xb691('0x4b')]('['+_0x22ded4[_0xb691('0x56')][_0xb691('0x57')]()+']',JSON[_0xb691('0x2d')](_0x347173));});};
\ No newline at end of file
+var _0x99d1=['recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','trigger:browser:url','catch','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','Subjects','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','info','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','length','find','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','type','customField','nameField','content','idField','push','variable','variableName','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','error','[QUEUE]','outbound'];(function(_0x2ce387,_0x474309){var _0x15608d=function(_0x5c9579){while(--_0x5c9579){_0x2ce387['push'](_0x2ce387['shift']());}};_0x15608d(++_0x474309);}(_0x99d1,0x123));var _0x199d=function(_0x24edfa,_0x1f1070){_0x24edfa=_0x24edfa-0x0;var _0x2b0c0f=_0x99d1[_0x24edfa];return _0x2b0c0f;};'use strict';var _=require(_0x199d('0x0'));var rp=require(_0x199d('0x1'));var md5=require(_0x199d('0x2'));var util=require(_0x199d('0x3'));var Redis=require(_0x199d('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x199d('0x5'))(_0x199d('0x6'));config[_0x199d('0x7')]=_[_0x199d('0x8')](config[_0x199d('0x7')],{'host':_0x199d('0x9'),'port':0x18eb});var io=require(_0x199d('0xa'))(new Redis(config[_0x199d('0x7')]));var headers={'Content-Type':_0x199d('0xb'),'Accept':_0x199d('0xb')};function emit(_0x1ab554,_0x5c236f,_0x5816ec){io['to'](_0x1ab554)[_0x199d('0xc')](_0x5c236f,_0x5816ec);}function getTicket(_0x4eac25,_0x15f99a,_0x2a3fd8,_0x2f8301,_0x1828e){logger['info'](_0x199d('0xd'));var _0x13fc1c=_[_0x199d('0xe')]({'responder_id':_0x15f99a['id'],'requester_id':_0x2a3fd8['id'],'name':util[_0x199d('0xf')](_0x199d('0x10'),_0x1828e[_0x199d('0x11')]),'phone':_0x1828e['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2f8301[_0x199d('0x12')],_0x1828e,'\x20'),'description':intUtil['getString'](_0x2f8301[_0x199d('0x13')],_0x1828e,_0x199d('0x14')),'tags':getTags(_0x2f8301[_0x199d('0x15')],_0x199d('0x16'))},getCustomFields(_0x2f8301['Fields'],_0x1828e));_0x13fc1c[_0x199d('0x17')]=_[_0x199d('0x18')](_[_0x199d('0x19')](_0x13fc1c[_0x199d('0x17')],'id'),'value');return request({'uri':util[_0x199d('0xf')](_0x199d('0x1a'),_0x4eac25[_0x199d('0x1b')]),'method':_0x199d('0x1c'),'body':_0x13fc1c})[_0x199d('0x1d')](function(_0x5855eb){logger['info'](_0x199d('0x1e'));return _0x5855eb;});}function getUser(_0x1c6397,_0x2358dc){if(intUtil[_0x199d('0x1f')](_0x2358dc)){return request({'uri':util['format'](_0x199d('0x20'),_0x1c6397[_0x199d('0x1b')]),'qs':{'email':_0x2358dc}})[_0x199d('0x1d')](function(_0x5a740a){if(_0x5a740a['length']){logger[_0x199d('0x21')](_0x199d('0x22'));return _['find'](_0x5a740a,function(_0x1f62e2){return _0x1f62e2[_0x199d('0x23')][_0x199d('0x24')]===_0x2358dc;});}else{logger['info'](_0x199d('0x25'));return request({'uri':util[_0x199d('0xf')](_0x199d('0x26'),_0x1c6397[_0x199d('0x1b')])})[_0x199d('0x1d')](function(_0x5e0a4c){logger[_0x199d('0x21')](_0x199d('0x27'));return _0x5e0a4c;});}});}else{logger[_0x199d('0x21')](_0x199d('0x28'));return request({'uri':util[_0x199d('0xf')]('%s/api/v2/agents/me',_0x1c6397[_0x199d('0x1b')])})[_0x199d('0x1d')](function(_0x1eaf73){logger['info'](_0x199d('0x27'));return _0x1eaf73;});}}function getEndUser(_0x9e2e31,_0x3f7f37,_0x81afef){logger['info']('Searching\x20enduser\x20with\x20phone',_0x81afef);return request({'uri':util[_0x199d('0xf')](_0x199d('0x29'),_0x9e2e31['remoteUri']),'qs':{'phone':_0x81afef}})['then'](function(_0xdd84f3){if(_0xdd84f3[_0x199d('0x2a')]){logger['info']('Enduser\x20found!');return _[_0x199d('0x2b')](_0xdd84f3,{'phone':_0x81afef});}else{logger[_0x199d('0x21')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x199d('0xf')](_0x199d('0x29'),_0x9e2e31[_0x199d('0x1b')]),'method':_0x199d('0x1c'),'body':{'name':_0x3f7f37,'phone':_0x81afef}})[_0x199d('0x1d')](function(_0x281ad2){logger['info'](_0x199d('0x2c'));return _0x281ad2;});}});}function getAuth(_0x194829){return util[_0x199d('0xf')](_0x199d('0x2d'),new Buffer(_0x194829[_0x199d('0x2e')]+':X')[_0x199d('0x2f')](_0x199d('0x30')));}function request(_0x5cdfae){logger[_0x199d('0x31')](_0x199d('0x32'),JSON[_0x199d('0x33')](_0x5cdfae));return rp(_[_0x199d('0x8')](_0x5cdfae,{'method':_0x199d('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x4186c5,_0x36777d){var _0x4855c2=[];if(_0x4186c5&&_0x4186c5[_0x199d('0x2a')]>0x0){_0x4855c2=_[_0x199d('0x35')](_0x4186c5,_0x36777d);}return _0x4855c2;}function getCustomFields(_0x1ad995,_0x30c29c){var _0x3ae596=[];var _0x19236d={'custom_fields':[]};if(_0x1ad995[_0x199d('0x2a')]>0x0){_[_0x199d('0x36')](_0x1ad995,function(_0x475519){if(_[_0x199d('0x37')]([_0x199d('0x38'),'picklist'],_0x475519[_0x199d('0x39')])&&_0x475519['nameField']&&!_0x475519[_0x199d('0x3a')]){_0x19236d[_0x475519[_0x199d('0x3b')]['toLowerCase']()]=_0x475519[_0x199d('0x3c')][_0x199d('0x2f')]();}else if(_[_0x199d('0x37')]([_0x199d('0x38'),'picklist'],_0x475519[_0x199d('0x39')])&&_0x475519[_0x199d('0x3d')]&&_0x475519[_0x199d('0x3a')]){_0x19236d[_0x199d('0x17')][_0x199d('0x3e')]({'id':_0x475519[_0x199d('0x3d')],'value':_0x475519[_0x199d('0x3c')][_0x199d('0x2f')]()});}else if(_0x475519[_0x199d('0x39')]===_0x199d('0x3f')&&_0x475519[_0x199d('0x40')]&&_0x475519[_0x199d('0x3d')]&&_0x475519[_0x199d('0x3a')]){_0x30c29c[_0x475519['variableName']]&&_0x19236d[_0x199d('0x17')]['push']({'id':_0x475519[_0x199d('0x3d')],'value':_0x30c29c[_0x475519[_0x199d('0x40')]][_0x199d('0x2f')]()});}else if(_0x475519['type']==='customVariable'&&_0x475519[_0x199d('0x41')]&&_0x475519[_0x199d('0x41')][_0x199d('0x16')]&&_0x475519['idField']&&_0x475519[_0x199d('0x3a')]){_0x30c29c[_0x475519['Variable']['name'][_0x199d('0x42')]()]&&_0x19236d[_0x199d('0x17')][_0x199d('0x3e')]({'id':_0x475519[_0x199d('0x3d')],'value':_0x30c29c[_0x475519['Variable'][_0x199d('0x16')]['toLowerCase']()]['toString']()});}});}return _0x19236d;}exports[_0x199d('0x43')]=function(_0x186711,_0x997325,_0x35f022,_0x61c726,_0x226b24,_0x2e934a){var _0x6aa1ca,_0x241edd;_0x2e934a[_0x199d('0x1b')]=intUtil[_0x199d('0x44')](_0x2e934a['remoteUri']);_0x2e934a[_0x199d('0x45')]=intUtil[_0x199d('0x44')](_0x2e934a[_0x199d('0x45')]);if(_0x226b24&&_0x226b24[_0x199d('0x46')]){logger['info']('[QUEUE]',_0x199d('0x47'));_0x997325[_0x199d('0x48')]=util['format'](_0x199d('0x49'),_0x2e934a[_0x199d('0x45')],_0x997325[_0x199d('0x4a')],md5(_0x997325[_0x199d('0x4a')]));}else{_0x997325[_0x199d('0x48')]='';}headers[_0x199d('0x4b')]=getAuth(_0x2e934a);return getUser(_0x2e934a,_0x61c726[_0x199d('0x24')])[_0x199d('0x1d')](function(_0x39d021){_0x6aa1ca=_0x39d021;logger['info'](_0x199d('0x4c'),_0x6aa1ca['id']);return getEndUser(_0x2e934a,_0x997325['calleridname'],_0x997325['calleridnum']);})[_0x199d('0x1d')](function(_0x2949ff){_0x241edd=_0x2949ff;logger['info'](_0x199d('0x4d'),_0x241edd['id']);return getTicket(_0x2e934a,_0x6aa1ca,_0x241edd,_0x35f022,_0x997325);})['then'](function(_0x5e2696){if(_0x5e2696&&_0x5e2696['id']){logger[_0x199d('0x21')](_0x199d('0x1e'));logger[_0x199d('0x21')](_0x199d('0x4e'),_0x5e2696['id']);logger[_0x199d('0x21')]('[QUEUE]',_0x199d('0x4f'));emit(util[_0x199d('0xf')](_0x199d('0x50'),_0x61c726[_0x199d('0x16')]),'trigger:browser:url',{'uri':util[_0x199d('0xf')](_0x199d('0x51'),_0x2e934a[_0x199d('0x1b')],_0x5e2696['id'])});}})['catch'](function(_0x5a1c2a){logger[_0x199d('0x52')](_0x199d('0x53'),JSON[_0x199d('0x33')](_0x5a1c2a));});};exports[_0x199d('0x54')]=function(_0x269796,_0x31168b,_0x9860e3,_0x3bed8b,_0x1e92d0,_0x21b171,_0x43ce44){var _0x5e0fca,_0x3a7403;_0x21b171[_0x199d('0x1b')]=intUtil[_0x199d('0x44')](_0x21b171['remoteUri']);_0x21b171['serverUrl']=intUtil[_0x199d('0x44')](_0x21b171[_0x199d('0x45')]);if(_0x43ce44&&_0x43ce44['recordingFormat']&&_0x43ce44[_0x199d('0x55')]!==_0x199d('0x56')){logger[_0x199d('0x21')](_0x199d('0x57'),_0x199d('0x47'));_0x31168b[_0x199d('0x48')]=util['format'](_0x199d('0x49'),_0x21b171[_0x199d('0x45')],_0x31168b[_0x199d('0x4a')],md5(_0x31168b[_0x199d('0x4a')]));}headers[_0x199d('0x4b')]=getAuth(_0x21b171);return getUser(_0x21b171,_0x3bed8b[_0x199d('0x24')])[_0x199d('0x1d')](function(_0x6c846c){_0x5e0fca=_0x6c846c;logger['info'](_0x199d('0x4c'),_0x5e0fca['id']);return getEndUser(_0x21b171,_0x31168b[_0x199d('0x58')],_0x31168b[_0x199d('0x59')]);})[_0x199d('0x1d')](function(_0x488f7c){_0x3a7403=_0x488f7c;logger[_0x199d('0x21')](_0x199d('0x4d'),_0x3a7403['id']);return getTicket(_0x21b171,_0x5e0fca,_0x3a7403,_0x9860e3,_0x31168b);})[_0x199d('0x1d')](function(_0x87b368){if(_0x87b368&&_0x87b368['id']){logger[_0x199d('0x21')](_0x199d('0x1e'));logger[_0x199d('0x21')](_0x199d('0x4e'),_0x87b368['id']);logger['info'](_0x199d('0x57'),_0x199d('0x4f'));emit(util[_0x199d('0xf')](_0x199d('0x50'),_0x3bed8b[_0x199d('0x16')]),_0x199d('0x5a'),{'uri':util[_0x199d('0xf')]('%s/helpdesk/tickets/%d',_0x21b171['remoteUri'],_0x87b368['id'])});}})['catch'](function(_0x12e4c7){logger[_0x199d('0x52')](_0x199d('0x57'),JSON['stringify'](_0x12e4c7));});};exports['unmanaged']=function(_0x3733a8,_0xa9d5f1,_0x2a4946,_0x19fd2b,_0x40081c,_0x4da547){var _0x4f2be1,_0x1e3e5b;_0x4da547['remoteUri']=intUtil[_0x199d('0x44')](_0x4da547[_0x199d('0x1b')]);_0x4da547[_0x199d('0x45')]=intUtil[_0x199d('0x44')](_0x4da547['serverUrl']);if(_0x40081c&&_0x40081c[_0x199d('0x46')]){logger[_0x199d('0x21')]('['+_0xa9d5f1['lastevent']['toUpperCase']()+']',_0x199d('0x47'));_0xa9d5f1[_0x199d('0x48')]=util[_0x199d('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4da547[_0x199d('0x45')],_0xa9d5f1[_0x199d('0x4a')],md5(_0xa9d5f1['uniqueid']));}else{_0xa9d5f1[_0x199d('0x48')]='';}headers[_0x199d('0x4b')]=getAuth(_0x4da547);return getUser(_0x4da547,'')[_0x199d('0x1d')](function(_0x3ae7d9){_0x4f2be1=_0x3ae7d9;logger[_0x199d('0x21')]('The\x20User\x20ID\x20is:',_0x4f2be1['id']);return getEndUser(_0x4da547,_0xa9d5f1[_0x199d('0x11')],_0xa9d5f1['calleridnum']);})['then'](function(_0x3733f5){_0x1e3e5b=_0x3733f5;logger[_0x199d('0x21')](_0x199d('0x4d'),_0x1e3e5b['id']);return getTicket(_0x4da547,_0x4f2be1,_0x1e3e5b,_0x2a4946,_0xa9d5f1);})[_0x199d('0x1d')](function(_0xabff1a){if(_0xabff1a){logger[_0x199d('0x21')](_0x199d('0x1e'));logger[_0x199d('0x21')](_0x199d('0x4e'),_0xabff1a['id']);}})[_0x199d('0x5b')](function(_0x22fcef){logger['error']('['+_0xa9d5f1[_0x199d('0x5c')][_0x199d('0x5d')]()+']',JSON['stringify'](_0x22fcef));});};
\ No newline at end of file
index 670279e..c1c28fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7942=['message','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','getString','Descriptions','YYYY-MM-DDTHH:mm:ss','add','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','Admin\x20selected','adminEmail','userId','error'];(function(_0x58eced,_0x5cc68a){var _0x665fff=function(_0xf19f0f){while(--_0xf19f0f){_0x58eced['push'](_0x58eced['shift']());}};_0x665fff(++_0x5cc68a);}(_0x7942,0x8b));var _0x2794=function(_0x3b5ad9,_0x223867){_0x3b5ad9=_0x3b5ad9-0x0;var _0x611ae9=_0x7942[_0x3b5ad9];return _0x611ae9;};'use strict';var _=require('lodash');var rp=require(_0x2794('0x0'));var md5=require(_0x2794('0x1'));var util=require('util');var moment=require(_0x2794('0x2'));var Promise=require(_0x2794('0x3'));var Redis=require(_0x2794('0x4'));var intUtil=require(_0x2794('0x5'));var config=require(_0x2794('0x6'));var logger=require(_0x2794('0x7'))('freshsales');config[_0x2794('0x8')]=_['defaults'](config[_0x2794('0x8')],{'host':_0x2794('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2794('0x8')]));function getAdminId(_0x26a288,_0x12880e,_0xbbd411,_0x393ad0){return new Promise(function(_0x3493dd,_0x510866){var _0x5c8fab=![];var _0x3856c0={'method':_0x2794('0xa'),'uri':_0x393ad0+_0x2794('0xb'),'json':!![]};_0x3856c0[_0x2794('0xc')]=_0xbbd411;logger[_0x2794('0xd')](_0x2794('0xe'));return rp(_0x3856c0)[_0x2794('0xf')](function(_0x37d395){if(_0x37d395){var _0x200b7f=_0x37d395[_0x2794('0x10')];var _0x492709=null;for(_0x492709=0x0;_0x492709<_0x200b7f[_0x2794('0x11')];_0x492709++){if(_0x200b7f[_0x492709][_0x2794('0x12')]===_0x26a288['adminEmail']){_0x26a288[_0x2794('0x13')]=_0x200b7f[_0x492709]['id'];_0x5c8fab=!![];}}if(_0x5c8fab){logger[_0x2794('0xd')]('Admin\x20found:',_0x26a288[_0x2794('0x13')]);_0x3493dd(_0x26a288);}else{_0x510866({'statusCode':0x194,'message':_0x2794('0x14')});}}else{_0x510866({'statusCode':0x194,'message':_0x2794('0x14')});}})[_0x2794('0x15')](function(_0x19531a){logger['error']('['+[_0x12880e[_0x2794('0x16')]()]+']',_0x19531a['message']);_0x510866(_0x19531a);});});}function getUser(_0x292328,_0x2489ef,_0x3dc138){return function(_0x11387c){return new Promise(function(_0x76b0a4,_0x438bd2){var _0x2191ae={'method':_0x2794('0xa'),'uri':_0x3dc138+_0x2794('0xb'),'json':!![]};_0x2191ae[_0x2794('0xc')]=_0x2489ef;logger['info'](_0x2794('0x17'));return rp(_0x2191ae)['then'](function(_0x28bc04){if(_0x28bc04){var _0x20ccda=_0x28bc04[_0x2794('0x10')];var _0x54b523=![];var _0x370549=null;if(_0x11387c[_0x2794('0x18')]!==null){logger['info'](_0x2794('0x19'),_0x11387c[_0x2794('0x18')]);_0x11387c[_0x2794('0x1a')]=_0x11387c[_0x2794('0x18')];for(_0x370549=0x0;_0x370549<_0x20ccda[_0x2794('0x11')];_0x370549++){if(_0x20ccda[_0x370549]['email']===_0x11387c[_0x2794('0x18')]){_0x54b523=!![];_0x11387c['userId']=_0x20ccda[_0x370549]['id'];logger[_0x2794('0xd')]('User\x20found:',_0x11387c['userId']);}}}if(!_0x54b523){logger[_0x2794('0xd')](_0x2794('0x1b'));_0x11387c['userEmail']=_0x11387c[_0x2794('0x1c')];_0x11387c[_0x2794('0x1d')]=_0x11387c[_0x2794('0x13')];_0x54b523=!![];}if(_0x54b523){_0x76b0a4(_0x11387c);}else{_0x438bd2({'statusCode':0x194,'message':_0x2794('0x14')});}}else{_0x438bd2({'statusCode':0x194,'message':_0x2794('0x14')});}})[_0x2794('0x15')](function(_0x50ffa1){logger[_0x2794('0x1e')]('['+[_0x292328[_0x2794('0x16')]()]+']',_0x50ffa1[_0x2794('0x1f')]);_0x438bd2(_0x50ffa1);});});};}function searchContact(_0x59bd70,_0x408940,_0x29e36d,_0x3d1db5){return new Promise(function(_0x347dec,_0x5c7ebd){var _0xeabd63={'method':_0x2794('0xa'),'headers':_0x408940,'uri':_0x59bd70+'/api/lookup?q='+_0x3d1db5+_0x2794('0x20')+_0x29e36d+_0x2794('0x21'),'json':!![]};rp(_0xeabd63)['then'](function(_0x863337){var _0x5ec1a6=_[_0x2794('0x22')](_0x863337[_0x2794('0x23')]['contacts'],[_0x29e36d,_0x3d1db5]);_0x347dec(_0x5ec1a6);})[_0x2794('0x15')](function(_0x3f4cef){_0x5c7ebd(_0x3f4cef);});});}function getEndUser(_0x36455d,_0x27206d,_0x55eb98){return function(_0x1357e7){return new Promise(function(_0x334f09,_0x185409){logger[_0x2794('0xd')](util[_0x2794('0x24')](_0x2794('0x25'),_0x1357e7[_0x2794('0x26')]));searchContact(_0x55eb98,_0x27206d,_0x2794('0x27'),_0x1357e7[_0x2794('0x26')])[_0x2794('0xf')](function(_0x342868){if(_0x342868){_0x1357e7[_0x2794('0x28')]=_0x342868['id'];logger['info'](_0x2794('0x29'),_0x1357e7['endUserId']);return _0x334f09(_0x1357e7);}searchContact(_0x55eb98,_0x27206d,_0x2794('0x2a'),_0x1357e7[_0x2794('0x26')])['then'](function(_0x3deaab){if(_0x3deaab){_0x1357e7[_0x2794('0x28')]=_0x3deaab['id'];logger[_0x2794('0xd')](_0x2794('0x2b'),_0x1357e7[_0x2794('0x28')]);return _0x334f09(_0x1357e7);}createEndUser(_0x1357e7,_0x36455d,_0x27206d,_0x55eb98)[_0x2794('0xf')](function(_0x2f2365){logger[_0x2794('0xd')]('Contact\x20created:',_0x2f2365[_0x2794('0x28')]);return _0x334f09(_0x2f2365);});});})['catch'](function(_0x5a9b25){_0x185409(_0x5a9b25);});});};}function createEndUser(_0x1c810b,_0x93388b,_0x5a07d3,_0x5a40e8){return new Promise(function(_0x39323e,_0x453222){var _0x472e12=moment();var _0x27cc01={'method':'POST','uri':_0x5a40e8+_0x2794('0x2c'),'body':{'contact':{'last_name':_0x1c810b[_0x2794('0x26')],'work_number':_0x1c810b[_0x2794('0x26')],'mobile_number':_0x1c810b[_0x2794('0x26')],'owner_id':_0x1c810b[_0x2794('0x1d')],'created_at':_0x472e12[_0x2794('0x24')]('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x27cc01[_0x2794('0xc')]=_0x5a07d3;logger[_0x2794('0xd')](_0x2794('0x2d'));return rp(_0x27cc01)[_0x2794('0xf')](function(_0x341040){_0x1c810b[_0x2794('0x28')]=_0x341040[_0x2794('0x2e')]['id'];_0x39323e(_0x1c810b);})['catch'](function(_0x26be40){logger['error']('['+[_0x93388b[_0x2794('0x16')]()]+']',_0x26be40['message']);_0x453222(_0x26be40[_0x2794('0x1f')]);});});}function getTicket(_0x2ad66a,_0x4a12b6,_0x5dc3d0,_0x60a6e4,_0x16eb79){return function(_0x3ddafd){logger['info'](_0x2794('0x2f'));return new Promise(function(_0x2fe806,_0x546ff0){var _0x14d62f=moment();var _0x27374f={'method':'POST','uri':_0x5dc3d0+_0x2794('0x30'),'body':{'title':intUtil['getString'](_0x60a6e4[_0x2794('0x31')],_0x16eb79,'\x20'),'description':intUtil[_0x2794('0x32')](_0x60a6e4[_0x2794('0x33')],_0x16eb79,'\x0a'),'owner_id':_0x3ddafd['userId'],'creater_id':_0x3ddafd['adminId'],'targetable_id':_0x3ddafd[_0x2794('0x28')],'targetable_type':'Contact','created_at':_0x14d62f[_0x2794('0x24')](_0x2794('0x34')),'due_date':_0x14d62f[_0x2794('0x35')](0x1e,'m')[_0x2794('0x24')](_0x2794('0x34'))},'json':!![]};_0x27374f[_0x2794('0xc')]=_0x4a12b6;return rp(_0x27374f)['then'](function(_0x91db2d){_0x3ddafd[_0x2794('0x36')]=_0x91db2d[_0x2794('0x37')]['id'];logger[_0x2794('0xd')]('Task\x20created:',_0x3ddafd[_0x2794('0x36')]);_0x2fe806(_0x3ddafd);})['catch'](function(_0x2fd5d3){logger['error']('['+[_0x2ad66a[_0x2794('0x16')]()]+']',_0x2fd5d3[_0x2794('0x1f')]);_0x546ff0(_0x2fd5d3[_0x2794('0x1f')]);});});};}function emit(_0xde3591,_0x3d1946,_0x28ca85){var _0x27ce9c={'uri':_0xde3591+_0x2794('0x38')+_0x28ca85};io['to'](util['format'](_0x2794('0x39'),_0x3d1946))[_0x2794('0x3a')](_0x2794('0x3b'),_0x27ce9c);}exports['cs']=function(_0x1e2a7a,_0x5deb16,_0x4a4715,_0x42e8f9,_0x541df2,_0x258220,_0x2d3511,_0x3628c3){var _0x4f8b0a={};var _0x31c85c={'Authorization':_0x2794('0x3c')+_0x258220[_0x2794('0x3d')]};_0x258220[_0x2794('0x3e')]=intUtil[_0x2794('0x3f')](_0x258220[_0x2794('0x3e')]);_0x258220[_0x2794('0x40')]=intUtil[_0x2794('0x3f')](_0x258220[_0x2794('0x40')]);var _0x5e2574=_0x258220[_0x2794('0x3e')];_0x4f8b0a[_0x2794('0x1c')]=_0x258220[_0x2794('0x41')];_0x4f8b0a['contactNumber']=_0x3628c3[_0x2794('0x42')]()===_0x2794('0x43')?_0x5deb16[_0x2794('0x44')]:_0x5deb16[_0x2794('0x45')];_0x4f8b0a[_0x2794('0x46')]=_0x3628c3===_0x2794('0x47')||_0x3628c3===_0x2794('0x48')?_0x2794('0x47'):'outbound';if(_0x42e8f9){_0x4f8b0a[_0x2794('0x18')]=_0x42e8f9[_0x2794('0x12')];}var _0xe76453=util[_0x2794('0x24')](_0x2794('0x49'),_0x258220['serverUrl'],_0x5deb16[_0x2794('0x4a')],md5(_0x5deb16['uniqueid']));if(_0x541df2&&_0x541df2[_0x2794('0x4b')]){logger['info']('[QUEUE]',_0x2794('0x4c'));_0x5deb16[_0x2794('0x4d')]=_0xe76453;}else if(_0x2d3511&&_0x2d3511[_0x2794('0x4e')]&&_0x2d3511[_0x2794('0x4e')]!==_0x2794('0x4f')){logger[_0x2794('0xd')](_0x2794('0x50'),_0x2794('0x4c'));_0x5deb16['recordingURL']=_0xe76453;}else{_0x5deb16[_0x2794('0x4d')]='';}return getAdminId(_0x4f8b0a,_0x3628c3,_0x31c85c,_0x5e2574)[_0x2794('0xf')](getUser(_0x3628c3,_0x31c85c,_0x5e2574))['then'](getEndUser(_0x3628c3,_0x31c85c,_0x5e2574))[_0x2794('0xf')](getTicket(_0x3628c3,_0x31c85c,_0x5e2574,_0x4a4715,_0x5deb16))['then'](function(_0xeaf37d){logger[_0x2794('0xd')](util[_0x2794('0x24')]('The\x20ticket\x20ID\x20is:\x20%s',_0xeaf37d['ticketId']));if(_0x3628c3!==_0x2794('0x48')){logger[_0x2794('0xd')]('['+[_0x3628c3[_0x2794('0x16')]()]+']',_0x2794('0x51'));emit(_0x5e2574,_0x42e8f9[_0x2794('0x52')],_0xeaf37d[_0x2794('0x28')]);}})[_0x2794('0x15')](function(_0xa35f30){logger[_0x2794('0x1e')]('['+[_0x3628c3['toUpperCase']()]+_0x2794('0x53'),util[_0x2794('0x54')](_0xa35f30,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x3c0f=['Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','toLowerCase','outbound','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','name','lodash','request-promise','moment','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','GET','/api/selector/owners','Getting\x20admin\x20information','then','length','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','headers','Getting\x20user\x20list','users','Getting\x20user\x20with\x20email','userEmail','agentEmail','email','userId','Admin\x20selected','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','contactNumber','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Creating\x20new\x20task','/api/tasks','getString','Subjects','ticketId','Task\x20created:','/contacts/','user:%s','emit'];(function(_0x5da2a1,_0x3cba65){var _0x190605=function(_0x5104d5){while(--_0x5104d5){_0x5da2a1['push'](_0x5da2a1['shift']());}};_0x190605(++_0x3cba65);}(_0x3c0f,0x1e1));var _0xf3c0=function(_0x41d432,_0x20e878){_0x41d432=_0x41d432-0x0;var _0x1650f9=_0x3c0f[_0x41d432];return _0x1650f9;};'use strict';var _=require(_0xf3c0('0x0'));var rp=require(_0xf3c0('0x1'));var md5=require('md5');var util=require('util');var moment=require(_0xf3c0('0x2'));var Promise=require('bluebird');var Redis=require(_0xf3c0('0x3'));var intUtil=require(_0xf3c0('0x4'));var config=require(_0xf3c0('0x5'));var logger=require(_0xf3c0('0x6'))('freshsales');config[_0xf3c0('0x7')]=_[_0xf3c0('0x8')](config[_0xf3c0('0x7')],{'host':_0xf3c0('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf3c0('0x7')]));function getAdminId(_0x4efa8e,_0x5a49b4,_0x56c6ce,_0x185f15){return new Promise(function(_0x5eb364,_0x6e7a54){var _0x540367=![];var _0x1453e7={'method':_0xf3c0('0xa'),'uri':_0x185f15+_0xf3c0('0xb'),'json':!![]};_0x1453e7['headers']=_0x56c6ce;logger['info'](_0xf3c0('0xc'));return rp(_0x1453e7)[_0xf3c0('0xd')](function(_0x29351e){if(_0x29351e){var _0x2c9fa0=_0x29351e['users'];var _0x355ee2=null;for(_0x355ee2=0x0;_0x355ee2<_0x2c9fa0[_0xf3c0('0xe')];_0x355ee2++){if(_0x2c9fa0[_0x355ee2]['email']===_0x4efa8e[_0xf3c0('0xf')]){_0x4efa8e[_0xf3c0('0x10')]=_0x2c9fa0[_0x355ee2]['id'];_0x540367=!![];}}if(_0x540367){logger[_0xf3c0('0x11')]('Admin\x20found:',_0x4efa8e['adminId']);_0x5eb364(_0x4efa8e);}else{_0x6e7a54({'statusCode':0x194,'message':_0xf3c0('0x12')});}}else{_0x6e7a54({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xf3c0('0x13')](function(_0x49ebd4){logger['error']('['+[_0x5a49b4[_0xf3c0('0x14')]()]+']',_0x49ebd4[_0xf3c0('0x15')]);_0x6e7a54(_0x49ebd4);});});}function getUser(_0x1330b6,_0x2cdd7e,_0x402c8a){return function(_0x1dbde3){return new Promise(function(_0xd09aa9,_0x18a86f){var _0x1a6296={'method':_0xf3c0('0xa'),'uri':_0x402c8a+_0xf3c0('0xb'),'json':!![]};_0x1a6296[_0xf3c0('0x16')]=_0x2cdd7e;logger[_0xf3c0('0x11')](_0xf3c0('0x17'));return rp(_0x1a6296)[_0xf3c0('0xd')](function(_0x5cf739){if(_0x5cf739){var _0x4748f7=_0x5cf739[_0xf3c0('0x18')];var _0x15b307=![];var _0x94d072=null;if(_0x1dbde3['agentEmail']!==null){logger['info'](_0xf3c0('0x19'),_0x1dbde3['agentEmail']);_0x1dbde3[_0xf3c0('0x1a')]=_0x1dbde3[_0xf3c0('0x1b')];for(_0x94d072=0x0;_0x94d072<_0x4748f7[_0xf3c0('0xe')];_0x94d072++){if(_0x4748f7[_0x94d072][_0xf3c0('0x1c')]===_0x1dbde3['agentEmail']){_0x15b307=!![];_0x1dbde3[_0xf3c0('0x1d')]=_0x4748f7[_0x94d072]['id'];logger[_0xf3c0('0x11')]('User\x20found:',_0x1dbde3[_0xf3c0('0x1d')]);}}}if(!_0x15b307){logger[_0xf3c0('0x11')](_0xf3c0('0x1e'));_0x1dbde3[_0xf3c0('0x1a')]=_0x1dbde3[_0xf3c0('0xf')];_0x1dbde3[_0xf3c0('0x1d')]=_0x1dbde3[_0xf3c0('0x10')];_0x15b307=!![];}if(_0x15b307){_0xd09aa9(_0x1dbde3);}else{_0x18a86f({'statusCode':0x194,'message':_0xf3c0('0x12')});}}else{_0x18a86f({'statusCode':0x194,'message':_0xf3c0('0x12')});}})['catch'](function(_0x104a14){logger[_0xf3c0('0x1f')]('['+[_0x1330b6['toUpperCase']()]+']',_0x104a14[_0xf3c0('0x15')]);_0x18a86f(_0x104a14);});});};}function searchContact(_0x1f3745,_0x8a3320,_0x3e2665,_0x48bcaa){return new Promise(function(_0x3a038b,_0x52b6d2){var _0x2e48da={'method':'GET','headers':_0x8a3320,'uri':_0x1f3745+_0xf3c0('0x20')+_0x48bcaa+_0xf3c0('0x21')+_0x3e2665+_0xf3c0('0x22'),'json':!![]};rp(_0x2e48da)[_0xf3c0('0xd')](function(_0x1b0ef3){var _0x2fdd6c=_[_0xf3c0('0x23')](_0x1b0ef3[_0xf3c0('0x24')]['contacts'],[_0x3e2665,_0x48bcaa]);_0x3a038b(_0x2fdd6c);})[_0xf3c0('0x13')](function(_0x26039a){_0x52b6d2(_0x26039a);});});}function getEndUser(_0x582ac0,_0x39c96d,_0x1e120f){return function(_0x47c166){return new Promise(function(_0x2d1a67,_0x58820b){logger[_0xf3c0('0x11')](util[_0xf3c0('0x25')](_0xf3c0('0x26'),_0x47c166['contactNumber']));searchContact(_0x1e120f,_0x39c96d,_0xf3c0('0x27'),_0x47c166['contactNumber'])[_0xf3c0('0xd')](function(_0x41da93){if(_0x41da93){_0x47c166[_0xf3c0('0x28')]=_0x41da93['id'];logger['info'](_0xf3c0('0x29'),_0x47c166[_0xf3c0('0x28')]);return _0x2d1a67(_0x47c166);}searchContact(_0x1e120f,_0x39c96d,_0xf3c0('0x2a'),_0x47c166[_0xf3c0('0x2b')])[_0xf3c0('0xd')](function(_0x26dbb5){if(_0x26dbb5){_0x47c166['endUserId']=_0x26dbb5['id'];logger[_0xf3c0('0x11')](_0xf3c0('0x2c'),_0x47c166[_0xf3c0('0x28')]);return _0x2d1a67(_0x47c166);}createEndUser(_0x47c166,_0x582ac0,_0x39c96d,_0x1e120f)[_0xf3c0('0xd')](function(_0x2a428d){logger[_0xf3c0('0x11')](_0xf3c0('0x2d'),_0x2a428d[_0xf3c0('0x28')]);return _0x2d1a67(_0x2a428d);});});})[_0xf3c0('0x13')](function(_0x104d7e){_0x58820b(_0x104d7e);});});};}function createEndUser(_0x24fe11,_0x176978,_0x457ca4,_0x3109e2){return new Promise(function(_0xd68c35,_0x41b124){var _0x4bf7a5=moment();var _0xb3887c={'method':_0xf3c0('0x2e'),'uri':_0x3109e2+_0xf3c0('0x2f'),'body':{'contact':{'last_name':_0x24fe11['contactNumber'],'work_number':_0x24fe11[_0xf3c0('0x2b')],'mobile_number':_0x24fe11['contactNumber'],'owner_id':_0x24fe11[_0xf3c0('0x1d')],'created_at':_0x4bf7a5[_0xf3c0('0x25')](_0xf3c0('0x30'))}},'json':!![]};_0xb3887c[_0xf3c0('0x16')]=_0x457ca4;logger[_0xf3c0('0x11')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0xb3887c)[_0xf3c0('0xd')](function(_0x3a7d00){_0x24fe11['endUserId']=_0x3a7d00['contact']['id'];_0xd68c35(_0x24fe11);})['catch'](function(_0x2fa6c1){logger['error']('['+[_0x176978[_0xf3c0('0x14')]()]+']',_0x2fa6c1[_0xf3c0('0x15')]);_0x41b124(_0x2fa6c1[_0xf3c0('0x15')]);});});}function getTicket(_0x11f91b,_0x438286,_0x381f7f,_0x50def1,_0x2fa32a){return function(_0x990e6){logger[_0xf3c0('0x11')](_0xf3c0('0x31'));return new Promise(function(_0x5265fa,_0xf11699){var _0x5c98eb=moment();var _0x29d23e={'method':'POST','uri':_0x381f7f+_0xf3c0('0x32'),'body':{'title':intUtil[_0xf3c0('0x33')](_0x50def1[_0xf3c0('0x34')],_0x2fa32a,'\x20'),'description':intUtil[_0xf3c0('0x33')](_0x50def1['Descriptions'],_0x2fa32a,'\x0a'),'owner_id':_0x990e6['userId'],'creater_id':_0x990e6[_0xf3c0('0x10')],'targetable_id':_0x990e6['endUserId'],'targetable_type':'Contact','created_at':_0x5c98eb[_0xf3c0('0x25')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x5c98eb['add'](0x1e,'m')['format'](_0xf3c0('0x30'))},'json':!![]};_0x29d23e['headers']=_0x438286;return rp(_0x29d23e)[_0xf3c0('0xd')](function(_0x4bfaf1){_0x990e6[_0xf3c0('0x35')]=_0x4bfaf1['task']['id'];logger[_0xf3c0('0x11')](_0xf3c0('0x36'),_0x990e6[_0xf3c0('0x35')]);_0x5265fa(_0x990e6);})[_0xf3c0('0x13')](function(_0x1d7c7c){logger[_0xf3c0('0x1f')]('['+[_0x11f91b[_0xf3c0('0x14')]()]+']',_0x1d7c7c[_0xf3c0('0x15')]);_0xf11699(_0x1d7c7c[_0xf3c0('0x15')]);});});};}function emit(_0x5b8ef5,_0x46a7eb,_0x2923c4){var _0x17b0c1={'uri':_0x5b8ef5+_0xf3c0('0x37')+_0x2923c4};io['to'](util[_0xf3c0('0x25')](_0xf3c0('0x38'),_0x46a7eb))[_0xf3c0('0x39')]('trigger:browser:url',_0x17b0c1);}exports['cs']=function(_0x3e43ca,_0x2a0141,_0x1d2c17,_0x5e6089,_0xddb32a,_0x81410f,_0x1f8b0d,_0x199145){var _0x53403a={};var _0x2831e8={'Authorization':_0xf3c0('0x3a')+_0x81410f[_0xf3c0('0x3b')]};_0x81410f[_0xf3c0('0x3c')]=intUtil['stripTrailingSlash'](_0x81410f[_0xf3c0('0x3c')]);_0x81410f[_0xf3c0('0x3d')]=intUtil[_0xf3c0('0x3e')](_0x81410f['serverUrl']);var _0x4b86f4=_0x81410f[_0xf3c0('0x3c')];_0x53403a[_0xf3c0('0xf')]=_0x81410f['username'];_0x53403a[_0xf3c0('0x2b')]=_0x199145[_0xf3c0('0x3f')]()===_0xf3c0('0x40')?_0x2a0141['destcalleridnum']:_0x2a0141['calleridnum'];_0x53403a[_0xf3c0('0x41')]=_0x199145===_0xf3c0('0x42')||_0x199145===_0xf3c0('0x43')?_0xf3c0('0x42'):'outbound';if(_0x5e6089){_0x53403a[_0xf3c0('0x1b')]=_0x5e6089[_0xf3c0('0x1c')];}var _0x30f76b=util[_0xf3c0('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x81410f[_0xf3c0('0x3d')],_0x2a0141[_0xf3c0('0x44')],md5(_0x2a0141['uniqueid']));if(_0xddb32a&&_0xddb32a[_0xf3c0('0x45')]){logger[_0xf3c0('0x11')](_0xf3c0('0x46'),'Recording\x20is\x20enabled!');_0x2a0141[_0xf3c0('0x47')]=_0x30f76b;}else if(_0x1f8b0d&&_0x1f8b0d[_0xf3c0('0x48')]&&_0x1f8b0d['recordingFormat']!==_0xf3c0('0x49')){logger[_0xf3c0('0x11')](_0xf3c0('0x4a'),'Recording\x20is\x20enabled!');_0x2a0141[_0xf3c0('0x47')]=_0x30f76b;}else{_0x2a0141[_0xf3c0('0x47')]='';}return getAdminId(_0x53403a,_0x199145,_0x2831e8,_0x4b86f4)[_0xf3c0('0xd')](getUser(_0x199145,_0x2831e8,_0x4b86f4))['then'](getEndUser(_0x199145,_0x2831e8,_0x4b86f4))[_0xf3c0('0xd')](getTicket(_0x199145,_0x2831e8,_0x4b86f4,_0x1d2c17,_0x2a0141))[_0xf3c0('0xd')](function(_0x1753f9){logger['info'](util[_0xf3c0('0x25')](_0xf3c0('0x4b'),_0x1753f9[_0xf3c0('0x35')]));if(_0x199145!=='unmanaged'){logger[_0xf3c0('0x11')]('['+[_0x199145[_0xf3c0('0x14')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x4b86f4,_0x5e6089[_0xf3c0('0x4c')],_0x1753f9[_0xf3c0('0x28')]);}})[_0xf3c0('0x13')](function(_0x54ba05){logger[_0xf3c0('0x1f')]('['+[_0x199145[_0xf3c0('0x14')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x54ba05,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 82ab463..7bafdf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe34c=['zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','servicenow','exec','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','vtiger','log','data1','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./freshdesk','./zoho','./vtiger','./servicenow','./dynamics365','./freshsales'];(function(_0x22b476,_0x33e669){var _0xe5426b=function(_0x32ed9a){while(--_0x32ed9a){_0x22b476['push'](_0x22b476['shift']());}};_0xe5426b(++_0x33e669);}(_0xe34c,0x144));var _0xce34=function(_0xced10f,_0x5f0820){_0xced10f=_0xced10f-0x0;var _0x57d39b=_0xe34c[_0xced10f];return _0x57d39b;};'use strict';var _=require(_0xce34('0x0'));var util=require(_0xce34('0x1'));var zendesk=require(_0xce34('0x2'));var salesforce=require('./salesforce');var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xce34('0x3'));var zoho=require(_0xce34('0x4'));var desk=require('./desk');var vtiger=require(_0xce34('0x5'));var servicenow=require(_0xce34('0x6'));var dynamics365=require(_0xce34('0x7'));var freshsales=require(_0xce34('0x8'));var integrations=[_0xce34('0x9'),_0xce34('0xa'),_0xce34('0xb'),_0xce34('0xc'),_0xce34('0xd'),_0xce34('0xe'),'vtiger',_0xce34('0xf'),_0xce34('0x10'),_0xce34('0x11')];exports[_0xce34('0x12')]=function(_0x1ccccf,_0x2cae9e,_0x4940e7,_0x5544ad,_0x253488,_0x504907){if(_0x4940e7){if(_['includes'](integrations,_0x1ccccf['data1'][_0xce34('0x13')]())){try{var _0x408d47=null;var _0x28df2b='';var _0x1ad9d9=_0x4940e7[_0x1ccccf['data1'][_0xce34('0x13')]()];if(_0x1ad9d9){var _0x444753=_0x1ad9d9[_0x1ccccf[_0xce34('0x14')]];if(_0x444753){var _0x386f99=_[_0xce34('0x15')](_0x444753[_0xce34('0x16')],{'id':parseInt(_0x1ccccf[_0xce34('0x17')],0xa)});if(_0x386f99){if(_0x5544ad){if(_0x253488&&_0x2cae9e['queue']){_0x28df2b=_0xce34('0x18');}else if(_0x2cae9e[_0xce34('0x19')]){_0x28df2b=_0xce34('0x1a');}else{console['log'](_0xce34('0x1b'),_0x2cae9e);}}else{_0x28df2b=_0xce34('0x1c');}switch(_0x1ccccf['data1'][_0xce34('0x13')]()){case'zendesk':zendesk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xa'):salesforce[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xb'):sugarcrm[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xc'):freshdesk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0xd'):zoho[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case'desk':desk[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case _0xce34('0x1d'):vtiger[_0x28df2b](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907);break;case'freshsales':freshsales['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;case'servicenow':servicenow['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;case'dynamics365':dynamics365['cs'](_0x1ccccf,_0x2cae9e,_0x386f99,_0x5544ad,_0x253488,_0x444753,_0x504907,_0x28df2b);break;default:console[_0xce34('0x1e')]('unknown\x20integration');}}else{_0x408d47=require('../../../../config/logger')(_0x1ccccf[_0xce34('0x1f')]['toLowerCase']());_0x408d47[_0xce34('0x20')](_0xce34('0x21'),util[_0xce34('0x22')](_0xce34('0x23'),_0x1ccccf[_0xce34('0x1f')]['toLowerCase'](),_0x1ccccf[_0xce34('0x17')]));}}else{_0x408d47=require('../../../../config/logger')(_0x1ccccf[_0xce34('0x1f')][_0xce34('0x13')]());_0x408d47[_0xce34('0x20')](_0xce34('0x21'),util[_0xce34('0x22')](_0xce34('0x24'),_0x1ccccf['data1'][_0xce34('0x13')](),_0x1ccccf[_0xce34('0x14')]));}}else{}}catch(_0x1c9e86){console['error'](_0x1c9e86);}}}};
\ No newline at end of file
+var _0x8106=['dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','queue','outbound','log','EVENT\x20UNKNOWN','unmanaged','zendesk','desk','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','salesforce','sugarcrm','vtiger'];(function(_0xf20b6,_0x49ddbb){var _0x4ff567=function(_0x3ccc7f){while(--_0x3ccc7f){_0xf20b6['push'](_0xf20b6['shift']());}};_0x4ff567(++_0x49ddbb);}(_0x8106,0x1c7));var _0x6810=function(_0x32d63b,_0x18a6fa){_0x32d63b=_0x32d63b-0x0;var _0x4d2b03=_0x8106[_0x32d63b];return _0x4d2b03;};'use strict';var _=require(_0x6810('0x0'));var util=require(_0x6810('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0x6810('0x2'));var sugarcrm=require(_0x6810('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x6810('0x4'));var desk=require(_0x6810('0x5'));var vtiger=require(_0x6810('0x6'));var servicenow=require(_0x6810('0x7'));var dynamics365=require(_0x6810('0x8'));var freshsales=require(_0x6810('0x9'));var integrations=['zendesk',_0x6810('0xa'),_0x6810('0xb'),'freshdesk','zoho','desk',_0x6810('0xc'),_0x6810('0xd'),_0x6810('0xe'),_0x6810('0xf')];exports[_0x6810('0x10')]=function(_0x479b92,_0x235b5e,_0x39627b,_0x3ed825,_0x157040,_0x3867cf){if(_0x39627b){if(_[_0x6810('0x11')](integrations,_0x479b92[_0x6810('0x12')][_0x6810('0x13')]())){try{var _0x3e7f61=null;var _0x261584='';var _0x2bf354=_0x39627b[_0x479b92[_0x6810('0x12')][_0x6810('0x13')]()];if(_0x2bf354){var _0x4ad018=_0x2bf354[_0x479b92[_0x6810('0x14')]];if(_0x4ad018){var _0x461514=_[_0x6810('0x15')](_0x4ad018[_0x6810('0x16')],{'id':parseInt(_0x479b92['data3'],0xa)});if(_0x461514){if(_0x3ed825){if(_0x157040&&_0x235b5e[_0x6810('0x17')]){_0x261584=_0x6810('0x17');}else if(_0x235b5e['routeId']){_0x261584=_0x6810('0x18');}else{console[_0x6810('0x19')](_0x6810('0x1a'),_0x235b5e);}}else{_0x261584=_0x6810('0x1b');}switch(_0x479b92[_0x6810('0x12')][_0x6810('0x13')]()){case _0x6810('0x1c'):zendesk[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case _0x6810('0xa'):salesforce[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case _0x6810('0xb'):sugarcrm[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case'freshdesk':freshdesk[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case'zoho':zoho[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case _0x6810('0x1d'):desk[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case _0x6810('0xc'):vtiger[_0x261584](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf);break;case _0x6810('0xe'):freshsales['cs'](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf,_0x261584);break;case _0x6810('0xf'):servicenow['cs'](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf,_0x261584);break;case _0x6810('0xd'):dynamics365['cs'](_0x479b92,_0x235b5e,_0x461514,_0x3ed825,_0x157040,_0x4ad018,_0x3867cf,_0x261584);break;default:console['log'](_0x6810('0x1e'));}}else{_0x3e7f61=require(_0x6810('0x1f'))(_0x479b92[_0x6810('0x12')][_0x6810('0x13')]());_0x3e7f61[_0x6810('0x20')](_0x6810('0x21'),util[_0x6810('0x22')](_0x6810('0x23'),_0x479b92[_0x6810('0x12')]['toLowerCase'](),_0x479b92['data3']));}}else{_0x3e7f61=require(_0x6810('0x1f'))(_0x479b92['data1'][_0x6810('0x13')]());_0x3e7f61[_0x6810('0x20')]('[EXEC]',util[_0x6810('0x22')]('%s\x20account\x20#%s\x20not\x20found',_0x479b92[_0x6810('0x12')][_0x6810('0x13')](),_0x479b92[_0x6810('0x14')]));}}else{}}catch(_0x94320a){console[_0x6810('0x20')](_0x94320a);}}}};
\ No newline at end of file
index 84e7f24..502306b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793e=['Connection\x20established.','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','error','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','%s/%s/e','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','catch','lodash','request-promise','moment','./util','../../../../config/logger','redis','defaults','localhost','emit','assign','Subjects','getString','Descriptions','ticketType','Task','IsReminderSet','contact','endUserType','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','find','then','length','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','execute','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Company','No\x20Company','<unknown>','forEach','includes','content','toString','variable','variableName','idField','customVariable','Variable','name','password','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','username'];(function(_0x5df0a9,_0x4d38b9){var _0x403964=function(_0x151454){while(--_0x151454){_0x5df0a9['push'](_0x5df0a9['shift']());}};_0x403964(++_0x4d38b9);}(_0x793e,0x125));var _0xe793=function(_0x38a155,_0x2aa026){_0x38a155=_0x38a155-0x0;var _0x269403=_0x793e[_0x38a155];return _0x269403;};'use strict';var _=require(_0xe793('0x0'));var rp=require(_0xe793('0x1'));var moment=require(_0xe793('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require('jsforce');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xe793('0x3'));var config=require('../../../../config/environment');var logger=require(_0xe793('0x4'))('salesforce');config[_0xe793('0x5')]=_[_0xe793('0x6')](config[_0xe793('0x5')],{'host':_0xe793('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x19f6f1,_0x21d7d2,_0x3e1174){io['to'](_0x19f6f1)[_0xe793('0x8')](_0x21d7d2,_0x3e1174);}function getTicket(_0x4962d4,_0x3dcfe5,_0x12d4b8,_0x4bc5d7,_0x52b9ac,_0x397910,_0x1a8651,_0x40cc9a){var _0x5f4cee=Object[_0xe793('0x9')]({},{'OwnerId':_0x3dcfe5['id'],'Subject':intUtil['getString'](_0x4bc5d7[_0xe793('0xa')],_0x52b9ac,'\x20'),'Description':intUtil[_0xe793('0xb')](_0x4bc5d7[_0xe793('0xc')],_0x52b9ac,'\x0a')},getCustomFields(_0x397910,_0x52b9ac));if(_0x12d4b8){if(_0x4bc5d7[_0xe793('0xd')]===_0xe793('0xe')){_0x5f4cee['ActivityDate']=moment['utc']();_0x5f4cee[_0xe793('0xf')]=![];_0x5f4cee['IsRecurrence']=![];if(_0x12d4b8['endUserType']===_0xe793('0x10')||_0x12d4b8[_0xe793('0x11')]===_0xe793('0x12')){_0x5f4cee[_0xe793('0x13')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]===_0xe793('0x14')){_0x5f4cee[_0xe793('0x15')]=_0x12d4b8['id'];}}else if(_0x4bc5d7[_0xe793('0xd')]===_0xe793('0x16')){if(_0x12d4b8[_0xe793('0x11')]===_0xe793('0x10')){_0x5f4cee[_0xe793('0x17')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]==='account'){_0x5f4cee[_0xe793('0x18')]=_0x12d4b8['id'];}else if(_0x12d4b8[_0xe793('0x11')]==='lead'&&_0x4bc5d7[_0xe793('0x19')]){_0x5f4cee[_0x4bc5d7['leadId']]=_0x12d4b8['id'];}else{logger[_0xe793('0x1a')](_0xe793('0x1b'));}}}return _0x1a8651[_0xe793('0x1c')](_0x4bc5d7[_0xe793('0xd')])[_0xe793('0x1d')](_0x5f4cee);}function getUser(_0x20f128,_0x138b2c,_0x75cf04){if(!_[_0xe793('0x1e')](_0x138b2c)&&intUtil[_0xe793('0x1f')](_0x138b2c)){var _0x1e2c57={'Email':_0x138b2c};var _0x4d361b={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x75cf04[_0xe793('0x1c')](_0xe793('0x20'))[_0xe793('0x21')](_0x1e2c57,_0x4d361b)['execute']()[_0xe793('0x22')](function(_0x3de695){if(_0x3de695[_0xe793('0x23')]){var _0x53be9d=_['find'](_0x3de695,function(_0x3f459f){return _0x3f459f['Email']===_0x138b2c;});if(_0x53be9d){logger[_0xe793('0x1a')](_0xe793('0x24'),_0x138b2c);return BPromise[_0xe793('0x25')]({'id':_0x53be9d['Id'],'name':_0x53be9d[_0xe793('0x26')]});}}else{logger[_0xe793('0x1a')](_0xe793('0x27'),_0x138b2c);return _0x75cf04[_0xe793('0x28')]()[_0xe793('0x22')](function(_0x2c1dd1){return BPromise['resolve']({'id':_0x2c1dd1[_0xe793('0x29')],'name':_0x2c1dd1[_0xe793('0x2a')]});});}});}else{logger['info'](_0xe793('0x27'),_0x138b2c);return _0x75cf04[_0xe793('0x28')]()[_0xe793('0x22')](function(_0x31412a){return BPromise[_0xe793('0x25')]({'id':_0x31412a['user_id'],'name':_0x31412a['display_name']});});}}function getEndUser(_0x4142b7,_0xad9076,_0x384d8f,_0xd4dd75,_0x40f426){var _0x46617c={'$or':{'Phone':_0xd4dd75}};var _0x59360f={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xe793('0x25')]()[_0xe793('0x22')](function(){logger[_0xe793('0x1a')](_0xe793('0x2b'),_0xd4dd75,_0xad9076[_0xe793('0x2c')]);switch(_0xad9076['moduleSearch']){case _0xe793('0x2d'):var _0x4be1db=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x2f')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x2f')]]=_0xd4dd75;_[_0xe793('0x30')](_0x4be1db[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')]('Contact')[_0xe793('0x21')](_0x4be1db,_0x59360f)[_0xe793('0x32')]()['then'](function(_0x3df84b){if(_0x3df84b&&_0x3df84b[_0xe793('0x23')]){return _0x3df84b;}else{var _0x56d33a=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x33')]){var _0x40c0a6={};_0x40c0a6[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x56d33a[_0xe793('0x31')],_0x40c0a6);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x56d33a,_0x59360f);}});case _0xe793('0x35'):var _0x6fc3e=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchAccount']){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x36')]]=_0xd4dd75;_[_0xe793('0x30')](_0x6fc3e[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426['sobject'](_0xe793('0x37'))[_0xe793('0x21')](_0x6fc3e,_0x59360f)[_0xe793('0x32')]()[_0xe793('0x22')](function(_0x116a96){if(_0x116a96&&_0x116a96['length']){return _0x116a96;}else{var _0x369536=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchContact']){var _0xf31210={};_0xf31210[_0xad9076[_0xe793('0x2f')]]=_0xd4dd75;_[_0xe793('0x30')](_0x369536[_0xe793('0x31')],_0xf31210);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x38'))[_0xe793('0x21')](_0x369536,_0x59360f)[_0xe793('0x22')](function(_0x29201e){if(_0x29201e&&_0x29201e[_0xe793('0x23')]){return _0x29201e;}else{var _0x2c7358=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076['additionalSearchLead']){var _0x3af882={};_0x3af882[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x2c7358[_0xe793('0x31')],_0x3af882);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x2c7358,_0x59360f);}});}});case _0xe793('0x10'):var _0x4be1db=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x2f')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076['additionalSearchContact']]=_0xd4dd75;_['merge'](_0x4be1db[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426['sobject']('Contact')[_0xe793('0x21')](_0x4be1db,_0x59360f)[_0xe793('0x32')]();case _0xe793('0x12'):var _0x34c1cd=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x33')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x33')]]=_0xd4dd75;_[_0xe793('0x30')](_0x34c1cd[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x34'))[_0xe793('0x21')](_0x34c1cd,_0x59360f);case'account':var _0x6fc3e=_[_0xe793('0x2e')](_0x46617c);if(_0xad9076[_0xe793('0x36')]){var _0x2f1a4f={};_0x2f1a4f[_0xad9076[_0xe793('0x36')]]=_0xd4dd75;_[_0xe793('0x30')](_0x6fc3e[_0xe793('0x31')],_0x2f1a4f);}return _0x40f426[_0xe793('0x1c')](_0xe793('0x37'))[_0xe793('0x21')](_0x6fc3e,_0x59360f);default:return null;}})[_0xe793('0x22')](function(_0x3aea34){if(_0x3aea34&&_0x3aea34[_0xe793('0x23')]){var _0x4cec61=_[_0xe793('0x39')](_0x3aea34);if(_0x4cec61){return BPromise[_0xe793('0x25')]({'id':_0x4cec61['Id'],'name':_0x4cec61['Name'],'phone':_0x4cec61[_0xe793('0x3a')],'endUserType':_0x4cec61[_0xe793('0x3b')][_0xe793('0x3c')][_0xe793('0x3d')]()});}}})[_0xe793('0x22')](function(_0x69f987){if(_0x69f987){logger[_0xe793('0x1a')](_0xe793('0x3e'),_0x69f987[_0xe793('0x11')],_0xd4dd75);return BPromise['resolve'](_0x69f987);}else{logger['info'](_0xe793('0x3f'),_0xd4dd75);var _0x1bf9f1={'Phone':_0xd4dd75};if(_0xad9076[_0xe793('0x40')]){if(_0xad9076[_0xe793('0x40')]==='contact'){logger[_0xe793('0x1a')](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1[_0xe793('0x42')]=_0x384d8f!=='<unknown>'?_0x384d8f:util['format']('Caller\x20-\x20%s',_0xd4dd75);}else if(_0xad9076[_0xe793('0x40')]===_0xe793('0x12')){logger[_0xe793('0x1a')](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1['LastName']=_0x384d8f!=='<unknown>'?_0x384d8f:util[_0xe793('0x43')]('Caller\x20-\x20%s',_0xd4dd75);_0x1bf9f1[_0xe793('0x44')]=_0xe793('0x45');}else if(_0xad9076[_0xe793('0x40')]===_0xe793('0x14')){logger['info'](_0xe793('0x41'),_0xd4dd75,_0xad9076[_0xe793('0x40')]);_0x1bf9f1[_0xe793('0x26')]=_0x384d8f!==_0xe793('0x46')?_0x384d8f:util[_0xe793('0x43')]('Caller\x20-\x20%s',_0xd4dd75);}else{return null;}}return _0x40f426[_0xe793('0x1c')](_['upperFirst'](_0xad9076['moduleCreate']))[_0xe793('0x1d')](_0x1bf9f1)[_0xe793('0x22')](function(_0x2d9b34){return BPromise[_0xe793('0x25')]({'id':_0x2d9b34['id'],'endUserType':_0xad9076[_0xe793('0x40')]});});}});}function getCustomFields(_0x4bb07c,_0x1bedec){var _0x35d8c3={};if(_0x4bb07c[_0xe793('0x23')]>0x0){_[_0xe793('0x47')](_0x4bb07c,function(_0x1d7191){if(_[_0xe793('0x48')](['string','picklist'],_0x1d7191['type'])&&_0x1d7191['idField']){_0x35d8c3[_0x1d7191['idField']]=_0x1d7191[_0xe793('0x49')][_0xe793('0x4a')]();}else if(_0x1d7191[_0xe793('0x3c')]===_0xe793('0x4b')&&_0x1d7191[_0xe793('0x4c')]&&_0x1d7191[_0xe793('0x4d')]){_0x1bedec[_0x1d7191['variableName']]&&(_0x35d8c3[_0x1d7191[_0xe793('0x4d')]]=_0x1bedec[_0x1d7191['variableName']][_0xe793('0x4a')]());}else if(_0x1d7191['type']===_0xe793('0x4e')&&_0x1d7191['Variable']&&_0x1d7191[_0xe793('0x4f')]['name']&&_0x1d7191[_0xe793('0x4d')]){_0x1bedec[_0x1d7191[_0xe793('0x4f')][_0xe793('0x50')][_0xe793('0x3d')]()]&&(_0x35d8c3[_0x1d7191[_0xe793('0x4d')]]=_0x1bedec[_0x1d7191['Variable'][_0xe793('0x50')][_0xe793('0x3d')]()]['toString']());}});}return _0x35d8c3;}function getConnection(_0x2c853d){var _0x26b6a4=_0x2c853d[_0xe793('0x51')]['concat'](_0x2c853d[_0xe793('0x52')]);var _0x193a73=new jsforce['Connection']({'oauth2':{'loginUrl':_0x2c853d[_0xe793('0x53')]||_0xe793('0x54'),'clientId':_0x2c853d[_0xe793('0x55')],'clientSecret':_0x2c853d[_0xe793('0x56')]}});return _0x193a73['login'](_0x2c853d[_0xe793('0x57')],_0x26b6a4)[_0xe793('0x22')](function(){logger[_0xe793('0x1a')](_0xe793('0x58'));return _0x193a73;});}exports[_0xe793('0x59')]=function(_0x3c607e,_0x2752aa,_0x3f47b1,_0x466bb9,_0x42d1b3,_0x5975a6){var _0x402146,_0x23473b,_0x385ed0,_0x2c3d5d;_0x5975a6['serverUrl']=intUtil[_0xe793('0x5a')](_0x5975a6[_0xe793('0x5b')]);_0x5975a6[_0xe793('0x53')]=intUtil[_0xe793('0x5a')](_0x5975a6['remoteUri']);if(_0x42d1b3&&_0x42d1b3[_0xe793('0x5c')]){logger[_0xe793('0x1a')](_0xe793('0x5d'),_0xe793('0x5e'));_0x2752aa[_0xe793('0x5f')]=util[_0xe793('0x43')](_0xe793('0x60'),_0x5975a6[_0xe793('0x5b')],_0x2752aa[_0xe793('0x61')],md5(_0x2752aa['uniqueid']));}else{_0x2752aa[_0xe793('0x5f')]='';}return getConnection(_0x5975a6)[_0xe793('0x22')](function(_0x5b39c1){_0x2c3d5d=_0x5b39c1;return getUser(_0x5975a6,_0x466bb9[_0xe793('0x62')],_0x2c3d5d);})['then'](function(_0x369827){_0x402146=_0x369827;return getEndUser(_0x5975a6,_0x3f47b1,_0x2752aa[_0xe793('0x63')],_0x2752aa[_0xe793('0x64')],_0x2c3d5d);})[_0xe793('0x22')](function(_0x411b24){_0x23473b=_0x411b24;return getTicket(_0x5975a6,_0x402146,_0x23473b,_0x3f47b1,_0x2752aa,_0x3f47b1['Fields'],_0x2c3d5d,_0xe793('0x59'));})[_0xe793('0x22')](function(_0x5292e0){_0x385ed0=_0x5292e0;logger[_0xe793('0x1a')](_0xe793('0x65'),_0x385ed0['id']);logger[_0xe793('0x1a')](_0xe793('0x66'),_0x385ed0['id'],_0x466bb9[_0xe793('0x50')],_0x5975a6[_0xe793('0x3c')]);switch(_0x5975a6[_0xe793('0x3c')]){case _0xe793('0x67'):emit(util[_0xe793('0x43')](_0xe793('0x68'),_0x466bb9[_0xe793('0x50')]),_0xe793('0x69'),{'recordId':_0x385ed0['id']});break;case _0xe793('0x6a'):emit(util['format']('user:%s',_0x466bb9[_0xe793('0x50')]),_0xe793('0x6b'),{'uri':util[_0xe793('0x43')]('%s/%s/e',_0x2c3d5d['instanceUrl'],_0x385ed0['id'])});break;default:logger['error'](_0xe793('0x6c'));}})['catch'](function(_0x202a3e){logger[_0xe793('0x6d')](_0xe793('0x5d'),_0x202a3e);});};exports['outbound']=function(_0x5cd44a,_0xad84c7,_0xad6600,_0x1b8751,_0x48320f,_0x5871b9,_0x2fc335){var _0x3e7fdb,_0x535ed5,_0x76efa3,_0x4ce05a;_0x5871b9[_0xe793('0x5b')]=intUtil['stripTrailingSlash'](_0x5871b9[_0xe793('0x5b')]);_0x5871b9[_0xe793('0x53')]=intUtil['stripTrailingSlash'](_0x5871b9[_0xe793('0x53')]);if(_0x2fc335&&_0x2fc335[_0xe793('0x6e')]&&_0x2fc335[_0xe793('0x6e')]!=='none'){logger[_0xe793('0x1a')](_0xe793('0x6f'),_0xe793('0x5e'));_0xad84c7['recordingURL']=util[_0xe793('0x43')](_0xe793('0x60'),_0x5871b9[_0xe793('0x5b')],_0xad84c7[_0xe793('0x61')],md5(_0xad84c7[_0xe793('0x61')]));}return getConnection(_0x5871b9)[_0xe793('0x22')](function(_0xd6d18a){_0x4ce05a=_0xd6d18a;return getUser(_0x5871b9,_0x1b8751[_0xe793('0x62')],_0x4ce05a);})[_0xe793('0x22')](function(_0x5613eb){_0x3e7fdb=_0x5613eb;return getEndUser(_0x5871b9,_0xad6600,_0xad84c7[_0xe793('0x70')],_0xad84c7[_0xe793('0x71')],_0x4ce05a);})['then'](function(_0x216ba0){_0x535ed5=_0x216ba0;return getTicket(_0x5871b9,_0x3e7fdb,_0x535ed5,_0xad6600,_0xad84c7,_0xad6600[_0xe793('0x72')],_0x4ce05a,_0xe793('0x73'));})[_0xe793('0x22')](function(_0x5f1d3b){_0x76efa3=_0x5f1d3b;logger[_0xe793('0x1a')](_0xe793('0x74'),_0x76efa3['id']);logger[_0xe793('0x1a')](_0xe793('0x75'),_0x76efa3['id'],_0x1b8751['name'],_0x5871b9['type']);switch(_0x5871b9[_0xe793('0x3c')]){case _0xe793('0x67'):emit(util[_0xe793('0x43')]('user:%s',_0x1b8751['name']),_0xe793('0x69'),{'recordId':_0x76efa3['id']});break;case'newTab':emit(util[_0xe793('0x43')]('user:%s',_0x1b8751[_0xe793('0x50')]),_0xe793('0x6b'),{'uri':util[_0xe793('0x43')](_0xe793('0x76'),_0x4ce05a[_0xe793('0x77')],_0x76efa3['id'])});break;default:logger['error'](_0xe793('0x6f'),_0xe793('0x78'));}})['catch'](function(_0x4ebdd1){logger['error'](_0xe793('0x6f'),_0x4ebdd1);});};exports[_0xe793('0x79')]=function(_0x37f9de,_0x1e1b3b,_0x1db217,_0x5eca75,_0x5bca94,_0x596b56){var _0xff6d32,_0x24475b,_0x516f22,_0x336785;_0x596b56['serverUrl']=intUtil['stripTrailingSlash'](_0x596b56[_0xe793('0x5b')]);_0x596b56[_0xe793('0x53')]=intUtil['stripTrailingSlash'](_0x596b56[_0xe793('0x53')]);if(_0x5bca94&&_0x5bca94[_0xe793('0x5c')]){logger[_0xe793('0x1a')]('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+']',_0xe793('0x5e'));_0x1e1b3b[_0xe793('0x5f')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x596b56[_0xe793('0x5b')],_0x1e1b3b['uniqueid'],md5(_0x1e1b3b[_0xe793('0x61')]));}else{_0x1e1b3b['recordingURL']='';}return getConnection(_0x596b56)['then'](function(_0x4f5a4e){_0x336785=_0x4f5a4e;if(!_[_0xe793('0x1e')](_0x5eca75)){return getUser(_0x596b56,_0x5eca75[_0xe793('0x50')],_0x336785);}else{return getUser(_0x596b56,null,_0x336785);}})[_0xe793('0x22')](function(_0x3f6886){_0xff6d32=_0x3f6886;return getEndUser(_0x596b56,_0x1db217,_0x1e1b3b['calleridname'],_0x1e1b3b[_0xe793('0x64')],_0x336785);})[_0xe793('0x22')](function(_0x2fedee){_0x24475b=_0x2fedee;return getTicket(_0x596b56,_0xff6d32,_0x24475b,_0x1db217,_0x1e1b3b,_0x1db217[_0xe793('0x72')],_0x336785);})[_0xe793('0x22')](function(_0x5d3db0){_0x516f22=_0x5d3db0;logger['info']('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+_0xe793('0x7c'),_0x516f22['id']);logger[_0xe793('0x1a')]('['+_0x1e1b3b[_0xe793('0x7a')][_0xe793('0x7b')]()+_0xe793('0x7d'),_0x596b56[_0xe793('0x3c')]);})[_0xe793('0x7e')](function(_0x2b32f4){logger[_0xe793('0x6d')]('['+_0x1e1b3b[_0xe793('0x7a')]['toUpperCase']()+']',_0x2b32f4);});};
\ No newline at end of file
+var _0x6121=['Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','Fields','queue','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','newTab','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:browser:url','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','calleridname',']\x20Ticket\x20%s\x20created.','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','jsforce','util','ioredis','./util','salesforce','redis','localhost','socket.io-emitter','emit','Subjects','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','then','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','merge','$or','execute','additionalSearchLead','additionalSearchAccount','Account','length','Contact','Lead','first','Phone','attributes','type','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','upperFirst','includes','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','password','securityToken','remoteUri','clientSecret','login','username'];(function(_0x4f46fb,_0x280fe1){var _0x393325=function(_0x2c5ed9){while(--_0x2c5ed9){_0x4f46fb['push'](_0x4f46fb['shift']());}};_0x393325(++_0x280fe1);}(_0x6121,0x1a6));var _0x1612=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6121[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x1612('0x0'));var rp=require(_0x1612('0x1'));var moment=require(_0x1612('0x2'));var BPromise=require(_0x1612('0x3'));var md5=require('md5');var jsforce=require(_0x1612('0x4'));var util=require(_0x1612('0x5'));var Redis=require(_0x1612('0x6'));var intUtil=require(_0x1612('0x7'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x1612('0x8'));config[_0x1612('0x9')]=_['defaults'](config[_0x1612('0x9')],{'host':_0x1612('0xa'),'port':0x18eb});var io=require(_0x1612('0xb'))(new Redis(config[_0x1612('0x9')]));function emit(_0x3092be,_0x1a43f6,_0x34f4c8){io['to'](_0x3092be)[_0x1612('0xc')](_0x1a43f6,_0x34f4c8);}function getTicket(_0x59df84,_0x32f3ce,_0x3aef66,_0x40876f,_0x39e82c,_0x44914a,_0x345b3c,_0x3e1cb7){var _0x3893a7=Object['assign']({},{'OwnerId':_0x32f3ce['id'],'Subject':intUtil['getString'](_0x40876f[_0x1612('0xd')],_0x39e82c,'\x20'),'Description':intUtil[_0x1612('0xe')](_0x40876f[_0x1612('0xf')],_0x39e82c,'\x0a')},getCustomFields(_0x44914a,_0x39e82c));if(_0x3aef66){if(_0x40876f[_0x1612('0x10')]===_0x1612('0x11')){_0x3893a7[_0x1612('0x12')]=moment[_0x1612('0x13')]();_0x3893a7[_0x1612('0x14')]=![];_0x3893a7['IsRecurrence']=![];if(_0x3aef66[_0x1612('0x15')]===_0x1612('0x16')||_0x3aef66['endUserType']===_0x1612('0x17')){_0x3893a7[_0x1612('0x18')]=_0x3aef66['id'];}else if(_0x3aef66[_0x1612('0x15')]===_0x1612('0x19')){_0x3893a7[_0x1612('0x1a')]=_0x3aef66['id'];}}else if(_0x40876f[_0x1612('0x10')]===_0x1612('0x1b')){if(_0x3aef66[_0x1612('0x15')]===_0x1612('0x16')){_0x3893a7[_0x1612('0x1c')]=_0x3aef66['id'];}else if(_0x3aef66[_0x1612('0x15')]===_0x1612('0x19')){_0x3893a7[_0x1612('0x1d')]=_0x3aef66['id'];}else if(_0x3aef66[_0x1612('0x15')]===_0x1612('0x17')&&_0x40876f[_0x1612('0x1e')]){_0x3893a7[_0x40876f[_0x1612('0x1e')]]=_0x3aef66['id'];}else{logger[_0x1612('0x1f')](_0x1612('0x20'));}}}return _0x345b3c[_0x1612('0x21')](_0x40876f[_0x1612('0x10')])[_0x1612('0x22')](_0x3893a7);}function getUser(_0x457d62,_0x1034b3,_0x808a8b){if(!_[_0x1612('0x23')](_0x1034b3)&&intUtil[_0x1612('0x24')](_0x1034b3)){var _0x11dcb8={'Email':_0x1034b3};var _0xae79f2={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x808a8b[_0x1612('0x21')]('User')[_0x1612('0x25')](_0x11dcb8,_0xae79f2)['execute']()[_0x1612('0x26')](function(_0x525e3e){if(_0x525e3e['length']){var _0x3c4366=_[_0x1612('0x25')](_0x525e3e,function(_0x6df3c8){return _0x6df3c8[_0x1612('0x27')]===_0x1034b3;});if(_0x3c4366){logger['info'](_0x1612('0x28'),_0x1034b3);return BPromise[_0x1612('0x29')]({'id':_0x3c4366['Id'],'name':_0x3c4366[_0x1612('0x2a')]});}}else{logger[_0x1612('0x1f')](_0x1612('0x2b'),_0x1034b3);return _0x808a8b[_0x1612('0x2c')]()['then'](function(_0x234f1a){return BPromise[_0x1612('0x29')]({'id':_0x234f1a[_0x1612('0x2d')],'name':_0x234f1a[_0x1612('0x2e')]});});}});}else{logger[_0x1612('0x1f')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x1034b3);return _0x808a8b['identity']()[_0x1612('0x26')](function(_0x4d69bc){return BPromise['resolve']({'id':_0x4d69bc['user_id'],'name':_0x4d69bc['display_name']});});}}function getEndUser(_0x442220,_0x1489e4,_0x4e1db9,_0x3726f0,_0x5684f6){var _0x40cad0={'$or':{'Phone':_0x3726f0}};var _0x1698b3={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x1612('0x29')]()['then'](function(){logger[_0x1612('0x1f')](_0x1612('0x2f'),_0x3726f0,_0x1489e4[_0x1612('0x30')]);switch(_0x1489e4[_0x1612('0x30')]){case'contact_lead':var _0x150121=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4[_0x1612('0x32')]){var _0x3d3dd={};_0x3d3dd[_0x1489e4[_0x1612('0x32')]]=_0x3726f0;_[_0x1612('0x33')](_0x150121[_0x1612('0x34')],_0x3d3dd);}return _0x5684f6[_0x1612('0x21')]('Contact')[_0x1612('0x25')](_0x150121,_0x1698b3)[_0x1612('0x35')]()['then'](function(_0x2bb04a){if(_0x2bb04a&&_0x2bb04a['length']){return _0x2bb04a;}else{var _0x36f3d1=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4[_0x1612('0x36')]){var _0x1d8ee2={};_0x1d8ee2[_0x1489e4[_0x1612('0x36')]]=_0x3726f0;_['merge'](_0x36f3d1['$or'],_0x1d8ee2);}return _0x5684f6[_0x1612('0x21')]('Lead')[_0x1612('0x25')](_0x36f3d1,_0x1698b3);}});case'account_contact_lead':var _0x45276f=_['cloneDeep'](_0x40cad0);if(_0x1489e4['additionalSearchAccount']){var _0x3d3dd={};_0x3d3dd[_0x1489e4[_0x1612('0x37')]]=_0x3726f0;_[_0x1612('0x33')](_0x45276f[_0x1612('0x34')],_0x3d3dd);}return _0x5684f6['sobject'](_0x1612('0x38'))[_0x1612('0x25')](_0x45276f,_0x1698b3)[_0x1612('0x35')]()['then'](function(_0x3f1505){if(_0x3f1505&&_0x3f1505[_0x1612('0x39')]){return _0x3f1505;}else{var _0x4e9070=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4[_0x1612('0x32')]){var _0x424858={};_0x424858[_0x1489e4['additionalSearchContact']]=_0x3726f0;_[_0x1612('0x33')](_0x4e9070[_0x1612('0x34')],_0x424858);}return _0x5684f6[_0x1612('0x21')]('Contact')['find'](_0x4e9070,_0x1698b3)[_0x1612('0x26')](function(_0x4c49ae){if(_0x4c49ae&&_0x4c49ae[_0x1612('0x39')]){return _0x4c49ae;}else{var _0x28f81e=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4['additionalSearchLead']){var _0x35164e={};_0x35164e[_0x1489e4['additionalSearchLead']]=_0x3726f0;_[_0x1612('0x33')](_0x28f81e[_0x1612('0x34')],_0x35164e);}return _0x5684f6[_0x1612('0x21')]('Lead')[_0x1612('0x25')](_0x28f81e,_0x1698b3);}});}});case'contact':var _0x150121=_['cloneDeep'](_0x40cad0);if(_0x1489e4['additionalSearchContact']){var _0x3d3dd={};_0x3d3dd[_0x1489e4[_0x1612('0x32')]]=_0x3726f0;_['merge'](_0x150121[_0x1612('0x34')],_0x3d3dd);}return _0x5684f6[_0x1612('0x21')](_0x1612('0x3a'))[_0x1612('0x25')](_0x150121,_0x1698b3)[_0x1612('0x35')]();case _0x1612('0x17'):var _0x4a3cd8=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4['additionalSearchLead']){var _0x3d3dd={};_0x3d3dd[_0x1489e4[_0x1612('0x36')]]=_0x3726f0;_['merge'](_0x4a3cd8[_0x1612('0x34')],_0x3d3dd);}return _0x5684f6['sobject'](_0x1612('0x3b'))['find'](_0x4a3cd8,_0x1698b3);case _0x1612('0x19'):var _0x45276f=_[_0x1612('0x31')](_0x40cad0);if(_0x1489e4[_0x1612('0x37')]){var _0x3d3dd={};_0x3d3dd[_0x1489e4['additionalSearchAccount']]=_0x3726f0;_[_0x1612('0x33')](_0x45276f['$or'],_0x3d3dd);}return _0x5684f6[_0x1612('0x21')]('Account')['find'](_0x45276f,_0x1698b3);default:return null;}})['then'](function(_0x411b92){if(_0x411b92&&_0x411b92[_0x1612('0x39')]){var _0x1727bc=_[_0x1612('0x3c')](_0x411b92);if(_0x1727bc){return BPromise[_0x1612('0x29')]({'id':_0x1727bc['Id'],'name':_0x1727bc[_0x1612('0x2a')],'phone':_0x1727bc[_0x1612('0x3d')],'endUserType':_0x1727bc[_0x1612('0x3e')][_0x1612('0x3f')]['toLowerCase']()});}}})[_0x1612('0x26')](function(_0x2e1dd1){if(_0x2e1dd1){logger['info']('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x2e1dd1['endUserType'],_0x3726f0);return BPromise[_0x1612('0x29')](_0x2e1dd1);}else{logger[_0x1612('0x1f')](_0x1612('0x40'),_0x3726f0);var _0x1a2ef9={'Phone':_0x3726f0};if(_0x1489e4[_0x1612('0x41')]){if(_0x1489e4['moduleCreate']===_0x1612('0x16')){logger[_0x1612('0x1f')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3726f0,_0x1489e4[_0x1612('0x41')]);_0x1a2ef9[_0x1612('0x42')]=_0x4e1db9!==_0x1612('0x43')?_0x4e1db9:util[_0x1612('0x44')](_0x1612('0x45'),_0x3726f0);}else if(_0x1489e4[_0x1612('0x41')]==='lead'){logger[_0x1612('0x1f')](_0x1612('0x46'),_0x3726f0,_0x1489e4[_0x1612('0x41')]);_0x1a2ef9[_0x1612('0x42')]=_0x4e1db9!=='<unknown>'?_0x4e1db9:util[_0x1612('0x44')](_0x1612('0x45'),_0x3726f0);_0x1a2ef9[_0x1612('0x47')]='No\x20Company';}else if(_0x1489e4[_0x1612('0x41')]==='account'){logger[_0x1612('0x1f')](_0x1612('0x46'),_0x3726f0,_0x1489e4[_0x1612('0x41')]);_0x1a2ef9[_0x1612('0x2a')]=_0x4e1db9!=='<unknown>'?_0x4e1db9:util[_0x1612('0x44')]('Caller\x20-\x20%s',_0x3726f0);}else{return null;}}return _0x5684f6[_0x1612('0x21')](_[_0x1612('0x48')](_0x1489e4['moduleCreate']))[_0x1612('0x22')](_0x1a2ef9)[_0x1612('0x26')](function(_0x1db26b){return BPromise[_0x1612('0x29')]({'id':_0x1db26b['id'],'endUserType':_0x1489e4[_0x1612('0x41')]});});}});}function getCustomFields(_0x45c70a,_0x507902){var _0x26e718={};if(_0x45c70a[_0x1612('0x39')]>0x0){_['forEach'](_0x45c70a,function(_0x5da6fc){if(_[_0x1612('0x49')](['string',_0x1612('0x4a')],_0x5da6fc[_0x1612('0x3f')])&&_0x5da6fc['idField']){_0x26e718[_0x5da6fc[_0x1612('0x4b')]]=_0x5da6fc[_0x1612('0x4c')][_0x1612('0x4d')]();}else if(_0x5da6fc[_0x1612('0x3f')]===_0x1612('0x4e')&&_0x5da6fc[_0x1612('0x4f')]&&_0x5da6fc['idField']){_0x507902[_0x5da6fc[_0x1612('0x4f')]]&&(_0x26e718[_0x5da6fc[_0x1612('0x4b')]]=_0x507902[_0x5da6fc[_0x1612('0x4f')]]['toString']());}else if(_0x5da6fc[_0x1612('0x3f')]===_0x1612('0x50')&&_0x5da6fc[_0x1612('0x51')]&&_0x5da6fc['Variable']['name']&&_0x5da6fc['idField']){_0x507902[_0x5da6fc[_0x1612('0x51')][_0x1612('0x52')][_0x1612('0x53')]()]&&(_0x26e718[_0x5da6fc['idField']]=_0x507902[_0x5da6fc[_0x1612('0x51')][_0x1612('0x52')]['toLowerCase']()][_0x1612('0x4d')]());}});}return _0x26e718;}function getConnection(_0x5b97f2){var _0x14a86b=_0x5b97f2[_0x1612('0x54')]['concat'](_0x5b97f2[_0x1612('0x55')]);var _0x43032b=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5b97f2[_0x1612('0x56')]||'https://login.salesforce.com','clientId':_0x5b97f2['clientId'],'clientSecret':_0x5b97f2[_0x1612('0x57')]}});return _0x43032b[_0x1612('0x58')](_0x5b97f2[_0x1612('0x59')],_0x14a86b)['then'](function(){logger[_0x1612('0x1f')](_0x1612('0x5a'));return _0x43032b;});}exports['queue']=function(_0x3126f5,_0x4c0f72,_0x3c58fd,_0xa9a348,_0x579952,_0x4d8a74){var _0xd75743,_0x189289,_0x5b09ac,_0x32c0b6;_0x4d8a74[_0x1612('0x5b')]=intUtil[_0x1612('0x5c')](_0x4d8a74['serverUrl']);_0x4d8a74['remoteUri']=intUtil[_0x1612('0x5c')](_0x4d8a74[_0x1612('0x56')]);if(_0x579952&&_0x579952[_0x1612('0x5d')]){logger[_0x1612('0x1f')](_0x1612('0x5e'),'Recording\x20is\x20enabled!');_0x4c0f72[_0x1612('0x5f')]=util[_0x1612('0x44')](_0x1612('0x60'),_0x4d8a74[_0x1612('0x5b')],_0x4c0f72[_0x1612('0x61')],md5(_0x4c0f72[_0x1612('0x61')]));}else{_0x4c0f72[_0x1612('0x5f')]='';}return getConnection(_0x4d8a74)[_0x1612('0x26')](function(_0x4f777f){_0x32c0b6=_0x4f777f;return getUser(_0x4d8a74,_0xa9a348['email'],_0x32c0b6);})[_0x1612('0x26')](function(_0x57d04a){_0xd75743=_0x57d04a;return getEndUser(_0x4d8a74,_0x3c58fd,_0x4c0f72['calleridname'],_0x4c0f72[_0x1612('0x62')],_0x32c0b6);})['then'](function(_0x37e0e2){_0x189289=_0x37e0e2;return getTicket(_0x4d8a74,_0xd75743,_0x189289,_0x3c58fd,_0x4c0f72,_0x3c58fd[_0x1612('0x63')],_0x32c0b6,_0x1612('0x64'));})[_0x1612('0x26')](function(_0x56ecba){_0x5b09ac=_0x56ecba;logger[_0x1612('0x1f')](_0x1612('0x65'),_0x5b09ac['id']);logger[_0x1612('0x1f')](_0x1612('0x66'),_0x5b09ac['id'],_0xa9a348[_0x1612('0x52')],_0x4d8a74['type']);switch(_0x4d8a74[_0x1612('0x3f')]){case _0x1612('0x67'):emit(util['format'](_0x1612('0x68'),_0xa9a348[_0x1612('0x52')]),_0x1612('0x69'),{'recordId':_0x5b09ac['id']});break;case _0x1612('0x6a'):emit(util[_0x1612('0x44')](_0x1612('0x68'),_0xa9a348[_0x1612('0x52')]),'trigger:browser:url',{'uri':util[_0x1612('0x44')]('%s/%s/e',_0x32c0b6[_0x1612('0x6b')],_0x5b09ac['id'])});break;default:logger['error'](_0x1612('0x6c'));}})[_0x1612('0x6d')](function(_0x1c2c40){logger[_0x1612('0x6e')](_0x1612('0x5e'),_0x1c2c40);});};exports[_0x1612('0x6f')]=function(_0x3ef7cd,_0x1a5788,_0x1c8d17,_0x241e24,_0x23b034,_0x1e1d02,_0x582177){var _0x5436ca,_0x4ac97f,_0x227457,_0x2e0e94;_0x1e1d02['serverUrl']=intUtil['stripTrailingSlash'](_0x1e1d02[_0x1612('0x5b')]);_0x1e1d02[_0x1612('0x56')]=intUtil['stripTrailingSlash'](_0x1e1d02['remoteUri']);if(_0x582177&&_0x582177['recordingFormat']&&_0x582177['recordingFormat']!==_0x1612('0x70')){logger[_0x1612('0x1f')](_0x1612('0x71'),_0x1612('0x72'));_0x1a5788[_0x1612('0x5f')]=util[_0x1612('0x44')](_0x1612('0x60'),_0x1e1d02[_0x1612('0x5b')],_0x1a5788[_0x1612('0x61')],md5(_0x1a5788[_0x1612('0x61')]));}return getConnection(_0x1e1d02)[_0x1612('0x26')](function(_0x2cba39){_0x2e0e94=_0x2cba39;return getUser(_0x1e1d02,_0x241e24[_0x1612('0x73')],_0x2e0e94);})[_0x1612('0x26')](function(_0x23b921){_0x5436ca=_0x23b921;return getEndUser(_0x1e1d02,_0x1c8d17,_0x1a5788[_0x1612('0x74')],_0x1a5788[_0x1612('0x75')],_0x2e0e94);})['then'](function(_0x4a2e06){_0x4ac97f=_0x4a2e06;return getTicket(_0x1e1d02,_0x5436ca,_0x4ac97f,_0x1c8d17,_0x1a5788,_0x1c8d17[_0x1612('0x63')],_0x2e0e94,_0x1612('0x6f'));})[_0x1612('0x26')](function(_0x2a1989){_0x227457=_0x2a1989;logger[_0x1612('0x1f')](_0x1612('0x76'),_0x227457['id']);logger['info'](_0x1612('0x77'),_0x227457['id'],_0x241e24[_0x1612('0x52')],_0x1e1d02[_0x1612('0x3f')]);switch(_0x1e1d02[_0x1612('0x3f')]){case _0x1612('0x67'):emit(util[_0x1612('0x44')]('user:%s',_0x241e24[_0x1612('0x52')]),_0x1612('0x69'),{'recordId':_0x227457['id']});break;case _0x1612('0x6a'):emit(util[_0x1612('0x44')](_0x1612('0x68'),_0x241e24['name']),_0x1612('0x78'),{'uri':util[_0x1612('0x44')]('%s/%s/e',_0x2e0e94['instanceUrl'],_0x227457['id'])});break;default:logger['error']('[OUTBOUND]',_0x1612('0x79'));}})[_0x1612('0x6d')](function(_0x5cb17a){logger[_0x1612('0x6e')](_0x1612('0x71'),_0x5cb17a);});};exports[_0x1612('0x7a')]=function(_0x49c838,_0x1c0fa7,_0x217f55,_0x5255d1,_0x140aa9,_0x3f5b3f){var _0x1447d6,_0x483acc,_0x3be8fa,_0x3af945;_0x3f5b3f['serverUrl']=intUtil[_0x1612('0x5c')](_0x3f5b3f['serverUrl']);_0x3f5b3f['remoteUri']=intUtil[_0x1612('0x5c')](_0x3f5b3f[_0x1612('0x56')]);if(_0x140aa9&&_0x140aa9['monitor_format']){logger[_0x1612('0x1f')]('['+_0x1c0fa7[_0x1612('0x7b')]['toUpperCase']()+']',_0x1612('0x72'));_0x1c0fa7['recordingURL']=util[_0x1612('0x44')](_0x1612('0x60'),_0x3f5b3f[_0x1612('0x5b')],_0x1c0fa7[_0x1612('0x61')],md5(_0x1c0fa7[_0x1612('0x61')]));}else{_0x1c0fa7['recordingURL']='';}return getConnection(_0x3f5b3f)[_0x1612('0x26')](function(_0x5bb720){_0x3af945=_0x5bb720;if(!_['isNil'](_0x5255d1)){return getUser(_0x3f5b3f,_0x5255d1['name'],_0x3af945);}else{return getUser(_0x3f5b3f,null,_0x3af945);}})[_0x1612('0x26')](function(_0x2b80ce){_0x1447d6=_0x2b80ce;return getEndUser(_0x3f5b3f,_0x217f55,_0x1c0fa7[_0x1612('0x7c')],_0x1c0fa7['calleridnum'],_0x3af945);})['then'](function(_0x13fa47){_0x483acc=_0x13fa47;return getTicket(_0x3f5b3f,_0x1447d6,_0x483acc,_0x217f55,_0x1c0fa7,_0x217f55[_0x1612('0x63')],_0x3af945);})[_0x1612('0x26')](function(_0x112664){_0x3be8fa=_0x112664;logger['info']('['+_0x1c0fa7[_0x1612('0x7b')]['toUpperCase']()+_0x1612('0x7d'),_0x3be8fa['id']);logger[_0x1612('0x1f')]('['+_0x1c0fa7[_0x1612('0x7b')][_0x1612('0x7e')]()+_0x1612('0x7f'),_0x3f5b3f[_0x1612('0x3f')]);})[_0x1612('0x6d')](function(_0x4d9e0b){logger['error']('['+_0x1c0fa7[_0x1612('0x7b')][_0x1612('0x7e')]()+']',_0x4d9e0b);});};
\ No newline at end of file
index f5c56b1..f0b23e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d64=['catch','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','active','true','userId','adminEmail','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','string','picklist','type','nameField','customField','toLowerCase','toString','includes','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','POST','incident','getString','Subjects','Fields','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','push','all','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','username','sysparm_display_value=true','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','remoteUri','inspect','lodash','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm'];(function(_0x47b41f,_0x20cdc5){var _0x50e1d7=function(_0x365d82){while(--_0x365d82){_0x47b41f['push'](_0x47b41f['shift']());}};_0x50e1d7(++_0x20cdc5);}(_0x8d64,0x1f4));var _0x48d6=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0x8d64[_0x30faec];return _0x29484f;};'use strict';var _=require(_0x48d6('0x0'));var Promise=require('bluebird');var rp=require(_0x48d6('0x1'));var util=require(_0x48d6('0x2'));var md5=require(_0x48d6('0x3'));var Redis=require(_0x48d6('0x4'));var intUtil=require(_0x48d6('0x5'));var config=require(_0x48d6('0x6'));var logger=require(_0x48d6('0x7'))('servicenow');config[_0x48d6('0x8')]=_[_0x48d6('0x9')](config[_0x48d6('0x8')],{'host':_0x48d6('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x48d6('0x8')]));function getAdminUser(_0x4dc27d,_0x48dd73,_0x1c6846,_0x127a2f,_0x2d4f17,_0x55c373){return new Promise(function(_0x3f9cc7,_0x4a7491){var _0x2fb9ad={'method':_0x48d6('0xb'),'uri':_0x127a2f+_0x48d6('0xc')+'&'+_0x2d4f17+'&'+_0x55c373,'auth':_0x48dd73,'json':!![]};return rp(_0x2fb9ad)[_0x48d6('0xd')](function(_0x4d072b){if(_0x4d072b[_0x48d6('0xe')][_0x48d6('0xf')]>0x0){_0x1c6846[_0x48d6('0x10')]=_0x4d072b[_0x48d6('0xe')][0x0][_0x48d6('0x11')];}logger['info']('['+[_0x4dc27d[_0x48d6('0x12')]()]+_0x48d6('0x13'),_0x1c6846);_0x3f9cc7(_0x1c6846);})[_0x48d6('0x14')](function(_0x5513fd){logger['error']('['+[_0x4dc27d['toUpperCase']()]+']',_0x5513fd[_0x48d6('0x15')]);_0x4a7491(_0x5513fd[_0x48d6('0x15')]);});});}function getUser(_0x5e4fd,_0xf1a9c6,_0xe52f5a,_0x3d425c,_0x2ce658){return function(_0x3e1da6){logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+_0x48d6('0x17'),_0x3e1da6);return new Promise(function(_0x12938e,_0x339b9e){if(intUtil[_0x48d6('0x18')](_0x3e1da6[_0x48d6('0x19')])){var _0x844f45={'method':_0x48d6('0xb'),'uri':_0xe52f5a+'sys_user?sysparm_query=email%3D'+_0x3e1da6[_0x48d6('0x19')]+'&'+_0x3d425c+'&'+_0x2ce658,'auth':_0xf1a9c6,'json':!![]};logger[_0x48d6('0x16')]('['+[_0x5e4fd['toUpperCase']()]+_0x48d6('0x1a'),_0x844f45);return rp(_0x844f45)['then'](function(_0xff2f24){logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+'],\x20getUser\x20entity',_0xff2f24);if(_0xff2f24[_0x48d6('0xe')][_0x48d6('0xf')]>0x0&&String(_0xff2f24['result'][0x0][_0x48d6('0x1b')])===_0x48d6('0x1c')){_0x3e1da6[_0x48d6('0x1d')]=_0xff2f24['result'][0x0]['sys_id'];}else{_0x3e1da6[_0x48d6('0x1d')]=_0x3e1da6[_0x48d6('0x10')];_0x3e1da6['userEmail']=_0x3e1da6[_0x48d6('0x1e')];}logger[_0x48d6('0x16')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+'],\x20getUser\x20crm',_0x3e1da6);_0x12938e(_0x3e1da6);})[_0x48d6('0x14')](function(_0x1205ec){logger[_0x48d6('0x1f')]('['+[_0x5e4fd[_0x48d6('0x12')]()]+']',_0x1205ec[_0x48d6('0x15')]);_0x339b9e(_0x1205ec[_0x48d6('0x15')]);});}else{logger['info']('['+[_0x5e4fd[_0x48d6('0x12')]()]+_0x48d6('0x20'));_0x3e1da6[_0x48d6('0x1d')]=_0x3e1da6['adminId'];_0x3e1da6[_0x48d6('0x19')]=_0x3e1da6[_0x48d6('0x1e')];_0x12938e(_0x3e1da6);}});};}function createEndUser(_0x29e06b,_0x4604ec,_0x495a24,_0x95ca26,_0x26e59a){logger[_0x48d6('0x16')]('['+[_0x29e06b[_0x48d6('0x12')]()]+_0x48d6('0x21'),_0x495a24);return new Promise(function(_0x12074b,_0x1795ca){var _0x1c1458={'method':'POST','uri':_0x95ca26+'sys_user?'+_0x26e59a,'body':{'user_name':_0x495a24[_0x48d6('0x22')],'roles':_0x48d6('0x23'),'first_name':_0x495a24[_0x48d6('0x22')],'active':'true','date_format':_0x48d6('0x24'),'phone':_0x495a24[_0x48d6('0x22')]},'auth':_0x4604ec,'json':!![]};return rp(_0x1c1458)[_0x48d6('0xd')](function(_0x45adb5){logger[_0x48d6('0x16')]('['+[_0x29e06b['toUpperCase']()]+_0x48d6('0x25'),_0x45adb5[_0x48d6('0xe')]);_0x495a24[_0x48d6('0x26')]=_0x45adb5[_0x48d6('0xe')]['sys_id'];_0x12074b(_0x495a24);})[_0x48d6('0x14')](function(_0x1d8ae2){logger['error']('['+[_0x29e06b['toUpperCase']()]+']',_0x1d8ae2['message']);_0x1795ca(_0x1d8ae2[_0x48d6('0x15')]);});});}function getEndUser(_0x50b79b,_0x2ec800,_0x5635d6,_0x5a87b4,_0x14b65f){return function(_0x1a4590){logger[_0x48d6('0x16')]('['+[_0x50b79b['toUpperCase']()]+_0x48d6('0x27'),_0x1a4590);return new Promise(function(_0x36b5cd,_0x303aca){var _0x321b20={'method':_0x48d6('0xb'),'uri':_0x5635d6+_0x48d6('0x28')+_0x1a4590[_0x48d6('0x22')]+'&'+_0x5a87b4+'&'+_0x14b65f,'auth':_0x2ec800,'json':!![]};return rp(_0x321b20)[_0x48d6('0xd')](function(_0x5be4d5){if(_0x5be4d5[_0x48d6('0xe')][_0x48d6('0xf')]>0x0){_0x1a4590[_0x48d6('0x26')]=_0x5be4d5[_0x48d6('0xe')][0x0][_0x48d6('0x11')];logger[_0x48d6('0x16')]('['+[_0x50b79b[_0x48d6('0x12')]()]+_0x48d6('0x29'),_0x1a4590);_0x36b5cd(_0x1a4590);}else{return createEndUser(_0x50b79b,_0x2ec800,_0x1a4590,_0x5635d6,_0x5a87b4)[_0x48d6('0xd')](function(_0x4607ae){logger[_0x48d6('0x16')]('['+[_0x50b79b[_0x48d6('0x12')]()]+'],\x20createEndUser\x20crm',_0x4607ae);_0x36b5cd(_0x4607ae);});}})[_0x48d6('0x14')](function(_0x2b11df){logger[_0x48d6('0x1f')]('['+[_0x50b79b[_0x48d6('0x12')]()]+']',_0x2b11df[_0x48d6('0x15')]);_0x303aca(_0x2b11df[_0x48d6('0x15')]);});});};}function getCustomFields(_0x2fa6e6,_0x267047){var _0x4b6761={};if(_0x2fa6e6[_0x48d6('0xf')]>0x0){_[_0x48d6('0x2a')](_0x2fa6e6,function(_0xfe1641){if(_['includes']([_0x48d6('0x2b'),_0x48d6('0x2c')],_0xfe1641[_0x48d6('0x2d')])&&_0xfe1641[_0x48d6('0x2e')]&&!_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641['nameField'][_0x48d6('0x30')]()]=_0xfe1641['content'][_0x48d6('0x31')]();}else if(_[_0x48d6('0x32')]([_0x48d6('0x2b'),'picklist'],_0xfe1641[_0x48d6('0x2d')])&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')]['toLowerCase']()]=_0xfe1641[_0x48d6('0x34')][_0x48d6('0x31')]();}else if(_0xfe1641['type']===_0x48d6('0x35')&&_0xfe1641[_0x48d6('0x36')]&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')][_0x48d6('0x30')]()]=_0x267047[_0xfe1641[_0x48d6('0x36')]]['toString']();}else if(_0xfe1641[_0x48d6('0x2d')]===_0x48d6('0x37')&&_0xfe1641[_0x48d6('0x38')]&&_0xfe1641[_0x48d6('0x38')][_0x48d6('0x39')]&&_0xfe1641[_0x48d6('0x33')]&&_0xfe1641[_0x48d6('0x2f')]){_0x4b6761[_0xfe1641[_0x48d6('0x33')][_0x48d6('0x30')]()]=_0x267047[_0xfe1641[_0x48d6('0x38')][_0x48d6('0x39')][_0x48d6('0x30')]()][_0x48d6('0x31')]();}});}return _0x4b6761;}function getTicket(_0x5744e7,_0x1a3a8e,_0x4e3129,_0x4f42fd,_0x5bf052,_0x19739d){return function(_0xdb3682){logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+_0x48d6('0x3a'),_0xdb3682);return new Promise(function(_0x73b410,_0x816f71){var _0x9e7d25=_0x5744e7['toLowerCase']()===_0x48d6('0x3b')?_0xdb3682['userId']:_0xdb3682[_0x48d6('0x26')];var _0x41d301={'method':_0x48d6('0x3c'),'uri':_0x4e3129+_0x48d6('0x3d')+'?'+_0x19739d,'body':Object['assign']({},{'active':_0x48d6('0x1c'),'caller_id':_0x9e7d25,'assigned_to':_0xdb3682[_0x48d6('0x1d')],'short_description':intUtil[_0x48d6('0x3e')](_0x4f42fd[_0x48d6('0x3f')],_0x5bf052,'\x20'),'description':intUtil['getString'](_0x4f42fd['Descriptions'],_0x5bf052,'\x0a')},getCustomFields(_0x4f42fd[_0x48d6('0x40')],_0x5bf052)),'auth':_0x1a3a8e,'json':!![]};return rp(_0x41d301)['then'](function(_0x292080){logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x292080['result']);_0xdb3682[_0x48d6('0x41')]=_0x292080[_0x48d6('0xe')][_0x48d6('0x11')];_0xdb3682[_0x48d6('0x42')]=_0x292080[_0x48d6('0xe')]['number'];logger[_0x48d6('0x16')]('['+[_0x5744e7[_0x48d6('0x12')]()]+_0x48d6('0x43'),_0xdb3682);_0x73b410(_0xdb3682);})[_0x48d6('0x14')](function(_0x7543b){logger[_0x48d6('0x1f')]('['+[_0x5744e7[_0x48d6('0x12')]()]+']',_0x7543b[_0x48d6('0x15')]);_0x816f71(_0x7543b[_0x48d6('0x15')]);});});};}function createRemoteTag(_0x2264f9,_0x36eb51,_0xe92ac6,_0x38c643){return new Promise(function(_0x51aaa1,_0x570a2a){var _0x4cef52={'method':_0x48d6('0x3c'),'uri':_0xe92ac6+_0x48d6('0x44')+'?'+_0x38c643,'body':{'short_description':_0x2264f9,'global':!![],'active':!![],'name':_0x2264f9},'auth':_0x36eb51,'json':!![]};return rp(_0x4cef52)[_0x48d6('0xd')](function(_0x2b58b7){var _0x1717d5=_0x2b58b7[_0x48d6('0xe')]['sys_id'];_0x51aaa1(_0x1717d5);});});}function getRemoteTag(_0x199c09,_0xccb68b,_0x2b3b91,_0x1928a1,_0x19e261){return new Promise(function(_0x437fa9,_0x23891c){var _0x3cb279={'method':_0x48d6('0xb'),'uri':_0x2b3b91+_0x48d6('0x44')+_0x48d6('0x45')+_0x199c09+'&'+_0x1928a1,'auth':_0xccb68b,'json':!![]};return rp(_0x3cb279)[_0x48d6('0xd')](function(_0x4536ff){if(_0x4536ff['result']['length']>0x0){var _0x3f5586=_0x4536ff[_0x48d6('0xe')][0x0]['sys_id'];_0x437fa9(_0x3f5586);}else{return createRemoteTag(_0x199c09,_0xccb68b,_0x2b3b91,_0x1928a1)['then'](function(_0x2ce89d){_0x437fa9(_0x2ce89d);});}});});}function assignTagToIncident(_0x545848,_0x14a26e,_0x1bd30a,_0x3dd566,_0x4af6a2){return new Promise(function(_0x56b7ad,_0x4271fd){var _0x50b416={'method':_0x48d6('0x3c'),'uri':_0x1bd30a+_0x48d6('0x46')+'?'+_0x4af6a2,'body':{'label':_0x545848,'table':_0x48d6('0x3d'),'id_type':_0x48d6('0x47'),'table_key':_0x3dd566[_0x48d6('0x41')],'title':'Incident\x20-\x20'+_0x3dd566[_0x48d6('0x42')],'id_display':_0x3dd566[_0x48d6('0x42')]},'auth':_0x14a26e,'json':!![]};return rp(_0x50b416)[_0x48d6('0xd')](function(_0x55d51e){_0x56b7ad();})[_0x48d6('0x14')](function(){_0x56b7ad();});});}function manageTags(_0x553338,_0x1bc3d0,_0x41b0b1,_0x5c4ba7,_0x14546e,_0x279151,_0x6aec01){return new Promise(function(_0x53da25,_0x1a221c){var _0x2b0f57=[];_0x1bc3d0[_0x48d6('0x2a')](function(_0x3f0c74){_0x2b0f57[_0x48d6('0x48')](getRemoteTag(_0x3f0c74,_0x41b0b1,_0x5c4ba7,_0x279151,_0x6aec01));});return Promise['all'](_0x2b0f57)[_0x48d6('0xd')](function(_0x42809d){if(_0x42809d[_0x48d6('0xf')]){logger[_0x48d6('0x16')]('['+[_0x553338[_0x48d6('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x42809d);var _0x46712a=[];_0x42809d[_0x48d6('0x2a')](function(_0x3c37d4){_0x46712a['push'](assignTagToIncident(_0x3c37d4,_0x41b0b1,_0x5c4ba7,_0x14546e,_0x279151));});return Promise[_0x48d6('0x49')](_0x46712a)[_0x48d6('0xd')](function(){_0x53da25();})[_0x48d6('0x14')](function(){_0x53da25();});}else{_0x53da25();}});});}function getTags(_0x3bc16a,_0x4f6bf5,_0x1ca6ae,_0x11b344,_0x234d0d,_0x535ec0){return function(_0x41f13d){return new Promise(function(_0x2e0f05,_0xdc3f49){var _0x4cc422=[];var _0x40fd0e=_0x11b344[_0x48d6('0x4a')];if(_0x40fd0e&&_0x40fd0e[_0x48d6('0xf')]>0x0){_0x4cc422=_[_0x48d6('0x4b')](_0x40fd0e,_0x48d6('0x39'));}if(_0x4cc422['length']>0x0){return manageTags(_0x3bc16a,_0x4cc422,_0x4f6bf5,_0x1ca6ae,_0x41f13d,_0x234d0d,_0x535ec0)[_0x48d6('0xd')](function(){_0x2e0f05(_0x41f13d);});}else{_0x2e0f05(_0x41f13d);}});};}function emit(_0x13fecb,_0x3d91b1,_0x54678b){var _0x2a37da='%26sysparm_record_target%3Dincident'+_0x48d6('0x4c')+_0x48d6('0x4d')+_0x48d6('0x4e');var _0x40d63c={'uri':_0x13fecb+_0x48d6('0x4f')+_0x54678b+_0x2a37da};io['to'](util[_0x48d6('0x50')]('user:%s',_0x3d91b1))[_0x48d6('0x51')]('trigger:browser:url',_0x40d63c);}exports['cs']=function(_0x249174,_0x3d9f1f,_0xa5767c,_0x22b59f,_0x1065de,_0x1d35c8,_0x50fc62,_0x43a34b){var _0x27b1c0={};var _0x40d45f={'user':_0x1d35c8[_0x48d6('0x52')],'pass':_0x1d35c8['password']};var _0x185132='sysparm_limit=1';var _0xfe47f8=_0x48d6('0x53');_0x1d35c8['remoteUri']=intUtil[_0x48d6('0x54')](_0x1d35c8['remoteUri']);_0x1d35c8[_0x48d6('0x55')]=intUtil['stripTrailingSlash'](_0x1d35c8[_0x48d6('0x55')]);var _0x44c2bb=util[_0x48d6('0x50')](_0x48d6('0x56'),_0x1d35c8['remoteUri']);_0x27b1c0['userEmail']=!_[_0x48d6('0x57')](_0x22b59f)?_0x22b59f[_0x48d6('0x58')]:null;_0x27b1c0[_0x48d6('0x1e')]=_0x1d35c8[_0x48d6('0x58')];_0x27b1c0['endUserNumber']=_0x43a34b[_0x48d6('0x30')]()===_0x48d6('0x3b')?_0x3d9f1f['destcalleridnum']:_0x3d9f1f['calleridnum'];_0x27b1c0[_0x48d6('0x59')]=_0x43a34b===_0x48d6('0x5a')||_0x43a34b===_0x48d6('0x5b')?_0x48d6('0x5a'):_0x48d6('0x3b');var _0x36bab3=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1d35c8[_0x48d6('0x55')],_0x3d9f1f[_0x48d6('0x5c')],md5(_0x3d9f1f[_0x48d6('0x5c')]));if(_0x1065de&&_0x1065de[_0x48d6('0x5d')]){logger['info'](_0x48d6('0x5e'),_0x48d6('0x5f'));_0x3d9f1f['recordingURL']=_0x36bab3;}else if(_0x50fc62&&_0x50fc62[_0x48d6('0x60')]&&_0x50fc62[_0x48d6('0x60')]!==_0x48d6('0x61')){logger[_0x48d6('0x16')]('[OUTBOUND]',_0x48d6('0x5f'));_0x3d9f1f[_0x48d6('0x62')]=_0x36bab3;}else{_0x3d9f1f['recordingURL']='';}return getAdminUser(_0x43a34b,_0x40d45f,_0x27b1c0,_0x44c2bb,_0xfe47f8,_0x185132)[_0x48d6('0xd')](getUser(_0x43a34b,_0x40d45f,_0x44c2bb,_0xfe47f8,_0x185132))[_0x48d6('0xd')](getEndUser(_0x43a34b,_0x40d45f,_0x44c2bb,_0xfe47f8,_0x185132))[_0x48d6('0xd')](getTicket(_0x43a34b,_0x40d45f,_0x44c2bb,_0xa5767c,_0x3d9f1f,_0xfe47f8))['then'](function(_0x3c1b4e){logger['info'](util[_0x48d6('0x50')](_0x48d6('0x63'),_0x3c1b4e['ticketId']));logger[_0x48d6('0x16')](util[_0x48d6('0x50')](_0x48d6('0x64'),_0x43a34b));if(_0x43a34b!=='unmanaged'){logger[_0x48d6('0x16')]('['+[_0x43a34b[_0x48d6('0x12')]()]+']',_0x48d6('0x65'));emit(_0x1d35c8[_0x48d6('0x66')],_0x22b59f[_0x48d6('0x39')],_0x3c1b4e['ticketId']);}})[_0x48d6('0x14')](function(_0x5342d1){logger[_0x48d6('0x1f')]('['+[_0x43a34b[_0x48d6('0x12')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x48d6('0x67')](_0x5342d1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xbad3=['md5','ioredis','./util','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminId','adminEmail','],\x20getUser\x20crm','message','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','string','picklist','nameField','toLowerCase','content','toString','type','idField','customField','variable','variableName','customVariable','Variable','outbound','incident','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','label_entry','Incident','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','%s/api/now/table/','email','destcalleridnum','calleridnum','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','[OUTBOUND]','recordingURL','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise'];(function(_0x2d98f1,_0x21174b){var _0x701cc7=function(_0x24dd62){while(--_0x24dd62){_0x2d98f1['push'](_0x2d98f1['shift']());}};_0x701cc7(++_0x21174b);}(_0xbad3,0x13b));var _0x3bad=function(_0xe3a15e,_0x41268e){_0xe3a15e=_0xe3a15e-0x0;var _0x418401=_0xbad3[_0xe3a15e];return _0x418401;};'use strict';var _=require(_0x3bad('0x0'));var Promise=require(_0x3bad('0x1'));var rp=require(_0x3bad('0x2'));var util=require('util');var md5=require(_0x3bad('0x3'));var Redis=require(_0x3bad('0x4'));var intUtil=require(_0x3bad('0x5'));var config=require(_0x3bad('0x6'));var logger=require(_0x3bad('0x7'))('servicenow');config['redis']=_[_0x3bad('0x8')](config[_0x3bad('0x9')],{'host':_0x3bad('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3bad('0x9')]));function getAdminUser(_0x5fff07,_0x15e781,_0x2752cf,_0xd31dfa,_0x4f38c8,_0x54397e){return new Promise(function(_0x425d9e,_0x4e12e0){var _0x4ab2dc={'method':_0x3bad('0xb'),'uri':_0xd31dfa+_0x3bad('0xc')+'&'+_0x4f38c8+'&'+_0x54397e,'auth':_0x15e781,'json':!![]};return rp(_0x4ab2dc)[_0x3bad('0xd')](function(_0x58211d){if(_0x58211d[_0x3bad('0xe')][_0x3bad('0xf')]>0x0){_0x2752cf['adminId']=_0x58211d[_0x3bad('0xe')][0x0][_0x3bad('0x10')];}logger[_0x3bad('0x11')]('['+[_0x5fff07['toUpperCase']()]+_0x3bad('0x12'),_0x2752cf);_0x425d9e(_0x2752cf);})[_0x3bad('0x13')](function(_0x236936){logger[_0x3bad('0x14')]('['+[_0x5fff07[_0x3bad('0x15')]()]+']',_0x236936['message']);_0x4e12e0(_0x236936['message']);});});}function getUser(_0xf6447a,_0xf85248,_0x31dfb3,_0x4e4227,_0x31202f){return function(_0x137d82){logger[_0x3bad('0x11')]('['+[_0xf6447a[_0x3bad('0x15')]()]+_0x3bad('0x16'),_0x137d82);return new Promise(function(_0x28060d,_0x1575ac){if(intUtil[_0x3bad('0x17')](_0x137d82[_0x3bad('0x18')])){var _0x51dda1={'method':_0x3bad('0xb'),'uri':_0x31dfb3+_0x3bad('0x19')+_0x137d82[_0x3bad('0x18')]+'&'+_0x4e4227+'&'+_0x31202f,'auth':_0xf85248,'json':!![]};logger[_0x3bad('0x11')]('['+[_0xf6447a['toUpperCase']()]+_0x3bad('0x1a'),_0x51dda1);return rp(_0x51dda1)[_0x3bad('0xd')](function(_0x3db5f9){logger[_0x3bad('0x11')]('['+[_0xf6447a['toUpperCase']()]+_0x3bad('0x1b'),_0x3db5f9);if(_0x3db5f9[_0x3bad('0xe')][_0x3bad('0xf')]>0x0&&String(_0x3db5f9[_0x3bad('0xe')][0x0][_0x3bad('0x1c')])===_0x3bad('0x1d')){_0x137d82[_0x3bad('0x1e')]=_0x3db5f9['result'][0x0][_0x3bad('0x10')];}else{_0x137d82[_0x3bad('0x1e')]=_0x137d82[_0x3bad('0x1f')];_0x137d82['userEmail']=_0x137d82[_0x3bad('0x20')];}logger[_0x3bad('0x11')]('['+[_0xf6447a['toUpperCase']()]+_0x3bad('0x21'),_0x137d82);_0x28060d(_0x137d82);})['catch'](function(_0x9e137f){logger[_0x3bad('0x14')]('['+[_0xf6447a[_0x3bad('0x15')]()]+']',_0x9e137f['message']);_0x1575ac(_0x9e137f[_0x3bad('0x22')]);});}else{logger[_0x3bad('0x11')]('['+[_0xf6447a['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x137d82[_0x3bad('0x1e')]=_0x137d82[_0x3bad('0x1f')];_0x137d82[_0x3bad('0x18')]=_0x137d82['adminEmail'];_0x28060d(_0x137d82);}});};}function createEndUser(_0x6c8324,_0x598919,_0x38c13f,_0x5c61e8,_0x3723df){logger['info']('['+[_0x6c8324[_0x3bad('0x15')]()]+'],\x20createEndUser\x20input\x20crm',_0x38c13f);return new Promise(function(_0x4e6a41,_0x27a1d0){var _0x1b6b5a={'method':_0x3bad('0x23'),'uri':_0x5c61e8+_0x3bad('0x24')+_0x3723df,'body':{'user_name':_0x38c13f[_0x3bad('0x25')],'roles':_0x3bad('0x26'),'first_name':_0x38c13f['endUserNumber'],'active':_0x3bad('0x1d'),'date_format':_0x3bad('0x27'),'phone':_0x38c13f['endUserNumber']},'auth':_0x598919,'json':!![]};return rp(_0x1b6b5a)[_0x3bad('0xd')](function(_0x26ebb7){logger[_0x3bad('0x11')]('['+[_0x6c8324['toUpperCase']()]+_0x3bad('0x28'),_0x26ebb7[_0x3bad('0xe')]);_0x38c13f[_0x3bad('0x29')]=_0x26ebb7[_0x3bad('0xe')][_0x3bad('0x10')];_0x4e6a41(_0x38c13f);})[_0x3bad('0x13')](function(_0x3a6fac){logger[_0x3bad('0x14')]('['+[_0x6c8324[_0x3bad('0x15')]()]+']',_0x3a6fac[_0x3bad('0x22')]);_0x27a1d0(_0x3a6fac['message']);});});}function getEndUser(_0x16d7b9,_0x9f0e5e,_0x3db702,_0x59a5e1,_0x4b6edb){return function(_0x5aad07){logger['info']('['+[_0x16d7b9[_0x3bad('0x15')]()]+'],\x20getEndUser\x20input\x20crm',_0x5aad07);return new Promise(function(_0x234252,_0x3942c2){var _0x357bda={'method':_0x3bad('0xb'),'uri':_0x3db702+'sys_user?sysparm_query=phone%3D'+_0x5aad07['endUserNumber']+'&'+_0x59a5e1+'&'+_0x4b6edb,'auth':_0x9f0e5e,'json':!![]};return rp(_0x357bda)[_0x3bad('0xd')](function(_0x214b49){if(_0x214b49[_0x3bad('0xe')][_0x3bad('0xf')]>0x0){_0x5aad07[_0x3bad('0x29')]=_0x214b49[_0x3bad('0xe')][0x0]['sys_id'];logger[_0x3bad('0x11')]('['+[_0x16d7b9['toUpperCase']()]+_0x3bad('0x2a'),_0x5aad07);_0x234252(_0x5aad07);}else{return createEndUser(_0x16d7b9,_0x9f0e5e,_0x5aad07,_0x3db702,_0x59a5e1)[_0x3bad('0xd')](function(_0x5c17bf){logger[_0x3bad('0x11')]('['+[_0x16d7b9['toUpperCase']()]+_0x3bad('0x2b'),_0x5c17bf);_0x234252(_0x5c17bf);});}})[_0x3bad('0x13')](function(_0x3b8785){logger['error']('['+[_0x16d7b9['toUpperCase']()]+']',_0x3b8785['message']);_0x3942c2(_0x3b8785[_0x3bad('0x22')]);});});};}function getCustomFields(_0x3a88fc,_0x2a761c){var _0x5edaa2={};if(_0x3a88fc[_0x3bad('0xf')]>0x0){_['forEach'](_0x3a88fc,function(_0x568574){if(_[_0x3bad('0x2c')]([_0x3bad('0x2d'),_0x3bad('0x2e')],_0x568574['type'])&&_0x568574[_0x3bad('0x2f')]&&!_0x568574['customField']){_0x5edaa2[_0x568574[_0x3bad('0x2f')][_0x3bad('0x30')]()]=_0x568574[_0x3bad('0x31')][_0x3bad('0x32')]();}else if(_[_0x3bad('0x2c')]([_0x3bad('0x2d'),'picklist'],_0x568574[_0x3bad('0x33')])&&_0x568574[_0x3bad('0x34')]&&_0x568574[_0x3bad('0x35')]){_0x5edaa2[_0x568574[_0x3bad('0x34')][_0x3bad('0x30')]()]=_0x568574['content'][_0x3bad('0x32')]();}else if(_0x568574['type']===_0x3bad('0x36')&&_0x568574['variableName']&&_0x568574[_0x3bad('0x34')]&&_0x568574[_0x3bad('0x35')]){_0x5edaa2[_0x568574[_0x3bad('0x34')][_0x3bad('0x30')]()]=_0x2a761c[_0x568574[_0x3bad('0x37')]][_0x3bad('0x32')]();}else if(_0x568574[_0x3bad('0x33')]===_0x3bad('0x38')&&_0x568574[_0x3bad('0x39')]&&_0x568574[_0x3bad('0x39')]['name']&&_0x568574[_0x3bad('0x34')]&&_0x568574[_0x3bad('0x35')]){_0x5edaa2[_0x568574[_0x3bad('0x34')][_0x3bad('0x30')]()]=_0x2a761c[_0x568574[_0x3bad('0x39')]['name'][_0x3bad('0x30')]()][_0x3bad('0x32')]();}});}return _0x5edaa2;}function getTicket(_0x3e686c,_0x98b91d,_0x13df10,_0xff5f9b,_0x111dbf,_0x40cea2){return function(_0x4672ad){logger[_0x3bad('0x11')]('['+[_0x3e686c[_0x3bad('0x15')]()]+']\x20getTicket\x20input\x20crm',_0x4672ad);return new Promise(function(_0x2007f0,_0x3d486f){var _0x3f481d=_0x3e686c[_0x3bad('0x30')]()===_0x3bad('0x3a')?_0x4672ad[_0x3bad('0x1e')]:_0x4672ad['endUserId'];var _0x43ca08={'method':_0x3bad('0x23'),'uri':_0x13df10+_0x3bad('0x3b')+'?'+_0x40cea2,'body':Object[_0x3bad('0x3c')]({},{'active':'true','caller_id':_0x3f481d,'assigned_to':_0x4672ad[_0x3bad('0x1e')],'short_description':intUtil['getString'](_0xff5f9b[_0x3bad('0x3d')],_0x111dbf,'\x20'),'description':intUtil[_0x3bad('0x3e')](_0xff5f9b[_0x3bad('0x3f')],_0x111dbf,'\x0a')},getCustomFields(_0xff5f9b[_0x3bad('0x40')],_0x111dbf)),'auth':_0x98b91d,'json':!![]};return rp(_0x43ca08)[_0x3bad('0xd')](function(_0x5aebcd){logger[_0x3bad('0x11')]('['+[_0x3e686c[_0x3bad('0x15')]()]+_0x3bad('0x41'),_0x5aebcd[_0x3bad('0xe')]);_0x4672ad[_0x3bad('0x42')]=_0x5aebcd[_0x3bad('0xe')][_0x3bad('0x10')];_0x4672ad[_0x3bad('0x43')]=_0x5aebcd[_0x3bad('0xe')][_0x3bad('0x44')];logger[_0x3bad('0x11')]('['+[_0x3e686c[_0x3bad('0x15')]()]+']\x20getTicket\x20crm',_0x4672ad);_0x2007f0(_0x4672ad);})[_0x3bad('0x13')](function(_0x38f0ba){logger[_0x3bad('0x14')]('['+[_0x3e686c[_0x3bad('0x15')]()]+']',_0x38f0ba[_0x3bad('0x22')]);_0x3d486f(_0x38f0ba[_0x3bad('0x22')]);});});};}function createRemoteTag(_0x52c02f,_0x17e4db,_0x1f8721,_0x3c8f62){return new Promise(function(_0x41b6ff,_0x4268f4){var _0x1b128e={'method':'POST','uri':_0x1f8721+_0x3bad('0x45')+'?'+_0x3c8f62,'body':{'short_description':_0x52c02f,'global':!![],'active':!![],'name':_0x52c02f},'auth':_0x17e4db,'json':!![]};return rp(_0x1b128e)['then'](function(_0x4a8fe2){var _0xcb4db0=_0x4a8fe2[_0x3bad('0xe')][_0x3bad('0x10')];_0x41b6ff(_0xcb4db0);});});}function getRemoteTag(_0x586160,_0x45041b,_0x1d22b6,_0x4f51a1,_0xe3842f){return new Promise(function(_0x355b99,_0x2beede){var _0x47dcdc={'method':_0x3bad('0xb'),'uri':_0x1d22b6+_0x3bad('0x45')+'?sysparm_query=name%3D'+_0x586160+'&'+_0x4f51a1,'auth':_0x45041b,'json':!![]};return rp(_0x47dcdc)[_0x3bad('0xd')](function(_0xe17cf5){if(_0xe17cf5[_0x3bad('0xe')][_0x3bad('0xf')]>0x0){var _0x312887=_0xe17cf5[_0x3bad('0xe')][0x0][_0x3bad('0x10')];_0x355b99(_0x312887);}else{return createRemoteTag(_0x586160,_0x45041b,_0x1d22b6,_0x4f51a1)[_0x3bad('0xd')](function(_0x401ce6){_0x355b99(_0x401ce6);});}});});}function assignTagToIncident(_0x1d6f9d,_0xc7a865,_0x164a68,_0x4683ca,_0x191bb6){return new Promise(function(_0x528e6e,_0x567dc1){var _0x478f26={'method':_0x3bad('0x23'),'uri':_0x164a68+_0x3bad('0x46')+'?'+_0x191bb6,'body':{'label':_0x1d6f9d,'table':_0x3bad('0x3b'),'id_type':_0x3bad('0x47'),'table_key':_0x4683ca[_0x3bad('0x42')],'title':'Incident\x20-\x20'+_0x4683ca[_0x3bad('0x43')],'id_display':_0x4683ca[_0x3bad('0x43')]},'auth':_0xc7a865,'json':!![]};return rp(_0x478f26)[_0x3bad('0xd')](function(_0x343c6c){_0x528e6e();})[_0x3bad('0x13')](function(){_0x528e6e();});});}function manageTags(_0x2dc14f,_0x18837b,_0x14c59c,_0x2cc7a9,_0x3072de,_0x138f2b,_0x550c8d){return new Promise(function(_0x3937f8,_0x59b051){var _0x32424b=[];_0x18837b[_0x3bad('0x48')](function(_0x15602e){_0x32424b[_0x3bad('0x49')](getRemoteTag(_0x15602e,_0x14c59c,_0x2cc7a9,_0x138f2b,_0x550c8d));});return Promise[_0x3bad('0x4a')](_0x32424b)[_0x3bad('0xd')](function(_0x3a1ff8){if(_0x3a1ff8[_0x3bad('0xf')]){logger['info']('['+[_0x2dc14f[_0x3bad('0x15')]()]+_0x3bad('0x4b'),_0x3a1ff8);var _0x15143f=[];_0x3a1ff8[_0x3bad('0x48')](function(_0x205662){_0x15143f[_0x3bad('0x49')](assignTagToIncident(_0x205662,_0x14c59c,_0x2cc7a9,_0x3072de,_0x138f2b));});return Promise['all'](_0x15143f)[_0x3bad('0xd')](function(){_0x3937f8();})[_0x3bad('0x13')](function(){_0x3937f8();});}else{_0x3937f8();}});});}function getTags(_0x1b03e0,_0x59b934,_0x3540bf,_0x4acc6f,_0x77c6b,_0x19c730){return function(_0x48dd02){return new Promise(function(_0x543695,_0x2e2018){var _0x1f26ce=[];var _0x347857=_0x4acc6f[_0x3bad('0x4c')];if(_0x347857&&_0x347857[_0x3bad('0xf')]>0x0){_0x1f26ce=_[_0x3bad('0x4d')](_0x347857,_0x3bad('0x4e'));}if(_0x1f26ce['length']>0x0){return manageTags(_0x1b03e0,_0x1f26ce,_0x59b934,_0x3540bf,_0x48dd02,_0x77c6b,_0x19c730)[_0x3bad('0xd')](function(){_0x543695(_0x48dd02);});}else{_0x543695(_0x48dd02);}});};}function emit(_0x27b496,_0x1feb99,_0x549bb6){var _0x35f243='%26sysparm_record_target%3Dincident'+_0x3bad('0x4f')+_0x3bad('0x50')+_0x3bad('0x51');var _0x4bcd55={'uri':_0x27b496+_0x3bad('0x52')+_0x549bb6+_0x35f243};io['to'](util[_0x3bad('0x53')](_0x3bad('0x54'),_0x1feb99))[_0x3bad('0x55')]('trigger:browser:url',_0x4bcd55);}exports['cs']=function(_0x48a6f1,_0x263680,_0xf1248b,_0x2ca471,_0x6a56f0,_0x19e738,_0x5e2e5f,_0x44d19d){var _0x4b9741={};var _0xa383cf={'user':_0x19e738['username'],'pass':_0x19e738[_0x3bad('0x56')]};var _0x1e6f15=_0x3bad('0x57');var _0x306a5d=_0x3bad('0x58');_0x19e738[_0x3bad('0x59')]=intUtil['stripTrailingSlash'](_0x19e738[_0x3bad('0x59')]);_0x19e738['serverUrl']=intUtil[_0x3bad('0x5a')](_0x19e738['serverUrl']);var _0x1e5a69=util[_0x3bad('0x53')](_0x3bad('0x5b'),_0x19e738[_0x3bad('0x59')]);_0x4b9741['userEmail']=!_['isNil'](_0x2ca471)?_0x2ca471['email']:null;_0x4b9741['adminEmail']=_0x19e738[_0x3bad('0x5c')];_0x4b9741[_0x3bad('0x25')]=_0x44d19d[_0x3bad('0x30')]()===_0x3bad('0x3a')?_0x263680[_0x3bad('0x5d')]:_0x263680[_0x3bad('0x5e')];_0x4b9741['callDirection']=_0x44d19d==='queue'||_0x44d19d===_0x3bad('0x5f')?'queue':'outbound';var _0x1c33a8=util['format'](_0x3bad('0x60'),_0x19e738['serverUrl'],_0x263680[_0x3bad('0x61')],md5(_0x263680[_0x3bad('0x61')]));if(_0x6a56f0&&_0x6a56f0[_0x3bad('0x62')]){logger[_0x3bad('0x11')](_0x3bad('0x63'),'Recording\x20is\x20enabled!');_0x263680['recordingURL']=_0x1c33a8;}else if(_0x5e2e5f&&_0x5e2e5f[_0x3bad('0x64')]&&_0x5e2e5f[_0x3bad('0x64')]!==_0x3bad('0x65')){logger[_0x3bad('0x11')](_0x3bad('0x66'),'Recording\x20is\x20enabled!');_0x263680[_0x3bad('0x67')]=_0x1c33a8;}else{_0x263680[_0x3bad('0x67')]='';}return getAdminUser(_0x44d19d,_0xa383cf,_0x4b9741,_0x1e5a69,_0x306a5d,_0x1e6f15)[_0x3bad('0xd')](getUser(_0x44d19d,_0xa383cf,_0x1e5a69,_0x306a5d,_0x1e6f15))['then'](getEndUser(_0x44d19d,_0xa383cf,_0x1e5a69,_0x306a5d,_0x1e6f15))[_0x3bad('0xd')](getTicket(_0x44d19d,_0xa383cf,_0x1e5a69,_0xf1248b,_0x263680,_0x306a5d))[_0x3bad('0xd')](function(_0x2e3879){logger[_0x3bad('0x11')](util[_0x3bad('0x53')]('The\x20ticket\x20ID\x20is:\x20%s',_0x2e3879['ticketId']));logger[_0x3bad('0x11')](util[_0x3bad('0x53')]('call\x20direction:\x20%s',_0x44d19d));if(_0x44d19d!==_0x3bad('0x5f')){logger['info']('['+[_0x44d19d[_0x3bad('0x15')]()]+']',_0x3bad('0x68'));emit(_0x19e738[_0x3bad('0x59')],_0x2ca471[_0x3bad('0x4e')],_0x2e3879[_0x3bad('0x42')]);}})[_0x3bad('0x13')](function(_0xcd76d4){logger[_0x3bad('0x14')]('['+[_0x44d19d[_0x3bad('0x15')]()]+_0x3bad('0x69'),util['inspect'](_0xcd76d4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 6d93396..6a1f812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4818=['socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','description','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','get_entry_list','Employees','user_name','then','entry_list','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','find','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','string','nameField','customField','toLowerCase','content','type','custom_fields','push','variable','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','Recording\x20is\x20enabled!','recordingURL','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','%s/service/v4_1/rest.php','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','Fields','Outbound','version','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','trigger:browser:url','unmanaged','monitor_format','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','../../../../config/logger','sugarcrm','redis','localhost'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4818,0x16b));var _0x8481=function(_0x2d524e,_0x3bf30f){_0x2d524e=_0x2d524e-0x0;var _0x59c183=_0x4818[_0x2d524e];return _0x59c183;};'use strict';var _=require(_0x8481('0x0'));var rp=require(_0x8481('0x1'));var BPromise=require(_0x8481('0x2'));var md5=require('md5');var util=require(_0x8481('0x3'));var Redis=require(_0x8481('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x8481('0x5'))(_0x8481('0x6'));config[_0x8481('0x7')]=_['defaults'](config[_0x8481('0x7')],{'host':_0x8481('0x8'),'port':0x18eb});var io=require(_0x8481('0x9'))(new Redis(config[_0x8481('0x7')]));var def={'method':_0x8481('0xa'),'json':!![]};function emit(_0x14e2ad,_0x69f19,_0x43fbac){io['to'](_0x14e2ad)[_0x8481('0xb')](_0x69f19,_0x43fbac);}function getTicket(_0x5d2f6b,_0xcdbb15,_0x3b36c3,_0x3a34d6,_0x45946f,_0x45d854,_0x4b4aa8,_0x334287){logger[_0x8481('0xc')](_0x8481('0xd'));var _0x37cd3e=new Date();var _0x2a74ff=[{'name':_0x8481('0xe'),'value':intUtil[_0x8481('0xf')](_0x3a34d6[_0x8481('0x10')],_0x45946f,'\x20')},{'name':_0x8481('0x11'),'value':_0xcdbb15['id']},{'name':'created_by','value':_0xcdbb15['id']},{'name':_0x8481('0x12'),'value':intUtil[_0x8481('0xf')](_0x3a34d6['Descriptions'],_0x45946f,'\x0a')},{'name':_0x8481('0x13'),'value':_0x37cd3e[_0x8481('0x14')]()['slice'](0x0,0x13)[_0x8481('0x15')]('T','\x20')},{'name':_0x8481('0x16'),'value':'0'},{'name':_0x8481('0x17'),'value':'15'},{'name':_0x8481('0x18'),'value':_0x3b36c3['id']},{'name':_0x8481('0x19'),'value':_0x8481('0x1a')},{'name':_0x8481('0x1b'),'value':_0x3b36c3[_0x8481('0xe')]},{'name':_0x8481('0x1c'),'value':_0x334287}];if(_0x45d854[_0x8481('0x1d')]){_[_0x8481('0x1e')](_0x45d854,function(_0x2767b8){if(_0x45946f[_0x2767b8[_0x8481('0x1f')]]){_0x2a74ff['push']({'name':_0x2767b8[_0x8481('0x20')],'value':_0x45946f[_0x2767b8['variableName']]});}});}return request({'form':{'method':_0x8481('0x21'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x4b4aa8['id'],'module_name':_0x8481('0x24'),'name_value_list':_0x2a74ff})}});}function getAuth(_0x523d28){return util[_0x8481('0x25')]('Basic\x20%s',new Buffer(_0x523d28[_0x8481('0x26')]+':X')[_0x8481('0x27')](_0x8481('0x28')));}function getServerInfo(_0x2bc5d0){return request({'form':{'method':_0x8481('0x29'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x2bc5d0['id']})}});}function getUser(_0x541bd3,_0xe40659,_0x5aa807){if(!_[_0x8481('0x2a')](_0xe40659)){logger['info']('Getting\x20agent\x20with\x20name',_0xe40659);return request({'form':{'method':_0x8481('0x2b'),'input_type':'JSON','response_type':_0x8481('0x22'),'rest_data':JSON['stringify']({'session':_0x5aa807['id'],'module_name':_0x8481('0x2c'),'query':util['format']('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0xe40659),'order_by':'','offset':'0','select_fields':['id','name',_0x8481('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x8481('0x2e')](function(_0x28d6aa){if(_0x28d6aa[_0x8481('0x2f')][_0x8481('0x1d')]){var _0x2b9b06=_['find'](_0x28d6aa['entry_list'],function(_0x1eb33c){return _0x1eb33c[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]===_0xe40659;});if(_0x2b9b06){logger['info'](_0x8481('0x32'));return BPromise['resolve']({'id':_0x2b9b06[_0x8481('0x30')]['id'][_0x8481('0x31')],'name':_0x2b9b06[_0x8481('0x30')]['name'][_0x8481('0x31')]});}}logger['info'](_0x8481('0x33'));return BPromise['resolve']({'id':_0x5aa807[_0x8481('0x30')]['user_id'][_0x8481('0x31')],'name':_0x5aa807[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]});});}else{logger[_0x8481('0xc')](_0x8481('0x34'));return BPromise[_0x8481('0x35')]({'id':_0x5aa807['name_value_list'][_0x8481('0x36')][_0x8481('0x31')],'name':_0x5aa807[_0x8481('0x30')][_0x8481('0x2d')][_0x8481('0x31')]});}}function getEndUser(_0x4bcaa8,_0x3a21b5,_0x2f849b,_0x509b29){logger['info'](_0x8481('0x37'),_0x2f849b);return request({'form':{'method':'get_entry_list','input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON[_0x8481('0x23')]({'session':_0x509b29['id'],'module_name':_0x8481('0x1a'),'query':util[_0x8481('0x25')](_0x8481('0x38'),_0x2f849b),'order_by':'','offset':'0','select_fields':['id',_0x8481('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x8481('0x2e')](function(_0x26d02b){if(_0x26d02b[_0x8481('0x2f')]['length']){var _0x259bbd=_[_0x8481('0x39')](_0x26d02b[_0x8481('0x2f')],function(_0x2c0b1a){return _0x2c0b1a[_0x8481('0x30')][_0x8481('0x3a')][_0x8481('0x31')]===_0x2f849b;});if(_0x259bbd){logger[_0x8481('0xc')](_0x8481('0x3b'));return BPromise['resolve']({'id':_0x259bbd[_0x8481('0x30')]['id'][_0x8481('0x31')],'name':_0x259bbd['name_value_list'][_0x8481('0xe')]['value'],'phone':_0x259bbd[_0x8481('0x30')]['phone_home'][_0x8481('0x31')]});}}else{logger[_0x8481('0xc')](_0x8481('0x3c'));return request({'form':{'method':_0x8481('0x21'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x509b29['id'],'module_name':_0x8481('0x1a'),'name_value_list':[{'name':'first_name','value':_0x3a21b5!==_0x8481('0x3d')?_0x3a21b5:util['format'](_0x8481('0x3e'),_0x2f849b)},{'name':_0x8481('0x3a'),'value':_0x2f849b}]})}})[_0x8481('0x2e')](function(_0x1f58f1){logger[_0x8481('0xc')](_0x8481('0x3f'));return BPromise[_0x8481('0x35')]({'id':_0x1f58f1['id'],'name':_0x1f58f1['entry_list']['first_name'][_0x8481('0x31')],'phone':_0x1f58f1[_0x8481('0x2f')]['phone_home']['value']});});}});}function request(_0x3cb6fa){logger[_0x8481('0x40')](_0x8481('0x41'),JSON[_0x8481('0x23')](_0x3cb6fa));return rp(_['merge'](def,_0x3cb6fa));}function getTags(_0x385994,_0x3a9e65){var _0x441176=[];if(_0x385994&&_0x385994[_0x8481('0x1d')]>0x0){_0x441176=_[_0x8481('0x42')](_0x385994,_0x3a9e65);}return _0x441176;}function getCustomFields(_0x4541ef,_0x26353e){var _0x542772=[];var _0x15eea2={'custom_fields':[]};if(_0x4541ef[_0x8481('0x1d')]>0x0){_[_0x8481('0x1e')](_0x4541ef,function(_0x50dd2f){if(_0x50dd2f['type']===_0x8481('0x43')&&_0x50dd2f[_0x8481('0x44')]&&!_0x50dd2f[_0x8481('0x45')]){_0x15eea2[_0x50dd2f[_0x8481('0x44')][_0x8481('0x46')]()]=_0x50dd2f[_0x8481('0x47')][_0x8481('0x27')]();}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x43')&&_0x50dd2f['idField']&&_0x50dd2f[_0x8481('0x45')]){_0x15eea2[_0x8481('0x49')][_0x8481('0x4a')]({'id':_0x50dd2f[_0x8481('0x20')],'value':_0x50dd2f[_0x8481('0x47')][_0x8481('0x27')]()});}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x4b')&&_0x50dd2f[_0x8481('0x1f')]&&_0x50dd2f['idField']&&_0x50dd2f[_0x8481('0x45')]){_0x26353e[_0x50dd2f[_0x8481('0x1f')]]&&_0x15eea2[_0x8481('0x49')]['push']({'id':_0x50dd2f[_0x8481('0x20')],'value':_0x26353e[_0x50dd2f['variableName']][_0x8481('0x27')]()});}else if(_0x50dd2f[_0x8481('0x48')]===_0x8481('0x4c')&&_0x50dd2f[_0x8481('0x4d')]&&_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')]&&_0x50dd2f[_0x8481('0x20')]&&_0x50dd2f[_0x8481('0x45')]){_0x26353e[_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')][_0x8481('0x46')]()]&&_0x15eea2[_0x8481('0x49')][_0x8481('0x4a')]({'id':_0x50dd2f['idField'],'value':_0x26353e[_0x50dd2f[_0x8481('0x4d')][_0x8481('0xe')][_0x8481('0x46')]()]['toString']()});}});}return _0x15eea2;}function getConnection(_0x3f427d){return request({'method':'POST','form':{'method':_0x8481('0x4e'),'input_type':_0x8481('0x22'),'response_type':_0x8481('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x3f427d[_0x8481('0x4f')],'password':_0x3f427d[_0x8481('0x50')],'encryption':_0x8481('0x51')},'application':_0x8481('0x52')})}})['then'](function(_0x5f5c4c){var _0x5f242a=_0x5f5c4c;if(_0x5f242a['id']){def[_0x8481('0x53')]=_0x5f242a['id'];return BPromise[_0x8481('0x35')](_0x5f242a);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x3f427d['id']));}});}function setRelationship(_0x21707a,_0x442865,_0x535ff5,_0x4aa421){return request({'form':{'method':_0x8481('0x54'),'input_type':_0x8481('0x22'),'response_type':'JSON','rest_data':JSON[_0x8481('0x23')]({'session':_0x21707a['id'],'module_name':'Calls','module_id':_0x535ff5['id'],'link_field_name':_0x4aa421,'related_ids':[_0x442865['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x8481('0x55')]=function(_0x43ff88,_0x418373,_0x20b19f,_0x1167b2,_0x1b641e,_0x4c757c){var _0x445fca,_0x29716b,_0x1580a6,_0x3dd2ae;_0x4c757c[_0x8481('0x56')]=intUtil[_0x8481('0x57')](_0x4c757c[_0x8481('0x56')]);_0x4c757c[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x4c757c['serverUrl']);def[_0x8481('0x59')]=util['format']('%s/service/v4_1/rest.php',_0x4c757c[_0x8481('0x56')]);if(_0x1b641e&&_0x1b641e['monitor_format']){logger[_0x8481('0xc')]('[QUEUE]',_0x8481('0x5a'));_0x418373[_0x8481('0x5b')]=util[_0x8481('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c757c['serverUrl'],_0x418373[_0x8481('0x5c')],md5(_0x418373[_0x8481('0x5c')]));}else{_0x418373[_0x8481('0x5b')]='';}return getConnection(_0x4c757c)['then'](function(_0x396520){_0x3dd2ae=_0x396520;return getUser(_0x4c757c,_0x1167b2[_0x8481('0xe')],_0x3dd2ae);})[_0x8481('0x2e')](function(_0x25520a){_0x445fca=_0x25520a;logger[_0x8481('0xc')]('The\x20User\x20ID\x20is:',_0x445fca['id']);return getEndUser(_0x4c757c,_0x418373[_0x8481('0x5d')],_0x418373[_0x8481('0x5e')],_0x3dd2ae);})[_0x8481('0x2e')](function(_0x248519){_0x29716b=_0x248519;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x29716b['id']);return getTicket(_0x4c757c,_0x445fca,_0x29716b,_0x20b19f,_0x418373,_0x20b19f['Fields'],_0x3dd2ae,_0x8481('0x60'));})[_0x8481('0x2e')](function(_0x18677f){_0x1580a6=_0x18677f;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')](_0x8481('0x62'),_0x1580a6['id']);return setRelationship(_0x3dd2ae,_0x445fca,_0x1580a6,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x3dd2ae,_0x29716b,_0x1580a6,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x3dd2ae);})['then'](function(_0x40745c){var _0x383725=parseInt(_0x40745c['version'][_0x8481('0x65')](0x0));var _0x717d5c=util[_0x8481('0x25')](_0x8481('0x66'),_0x4c757c[_0x8481('0x56')],_0x1580a6['id']);if(_0x383725>0x6){_0x717d5c=util[_0x8481('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4c757c[_0x8481('0x56')],_0x1580a6['id']);}logger[_0x8481('0xc')](_0x8481('0x67'),_0x8481('0x68'));emit(util[_0x8481('0x25')](_0x8481('0x69'),_0x1167b2[_0x8481('0xe')]),'trigger:browser:url',{'uri':_0x717d5c});})[_0x8481('0x6a')](function(_0x566e25){logger[_0x8481('0x6b')](_0x8481('0x67'),JSON[_0x8481('0x23')](_0x566e25));});};exports[_0x8481('0x6c')]=function(_0xd57231,_0x5a71b3,_0x1c7570,_0x5d48aa,_0x588636,_0x433a46,_0x19696d){var _0x5e7957,_0x192979,_0xb0d446,_0x6f4f96;_0x433a46[_0x8481('0x56')]=intUtil[_0x8481('0x57')](_0x433a46[_0x8481('0x56')]);_0x433a46[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x433a46['serverUrl']);def[_0x8481('0x59')]=util[_0x8481('0x25')](_0x8481('0x6d'),_0x433a46[_0x8481('0x56')]);if(_0x19696d&&_0x19696d[_0x8481('0x6e')]&&_0x19696d[_0x8481('0x6e')]!=='none'){logger[_0x8481('0xc')](_0x8481('0x6f'),_0x8481('0x5a'));_0x5a71b3[_0x8481('0x5b')]=util[_0x8481('0x25')](_0x8481('0x70'),_0x433a46['serverUrl'],_0x5a71b3[_0x8481('0x5c')],md5(_0x5a71b3[_0x8481('0x5c')]));}return getConnection(_0x433a46)[_0x8481('0x2e')](function(_0x36afef){_0x6f4f96=_0x36afef;return getUser(_0x433a46,_0x5d48aa['name'],_0x6f4f96);})[_0x8481('0x2e')](function(_0x3a3b95){_0x5e7957=_0x3a3b95;logger['info'](_0x8481('0x71'),_0x5e7957['id']);return getEndUser(_0x433a46,_0x5a71b3[_0x8481('0x72')],_0x5a71b3['destcalleridnum'],_0x6f4f96);})[_0x8481('0x2e')](function(_0x36080d){_0x192979=_0x36080d;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x192979['id']);return getTicket(_0x433a46,_0x5e7957,_0x192979,_0x1c7570,_0x5a71b3,_0x1c7570[_0x8481('0x73')],_0x6f4f96,_0x8481('0x74'));})[_0x8481('0x2e')](function(_0x2fd0ce){_0xb0d446=_0x2fd0ce;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')]('The\x20Ticket\x20ID\x20is:',_0xb0d446['id']);return setRelationship(_0x6f4f96,_0x5e7957,_0xb0d446,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x6f4f96,_0x192979,_0xb0d446,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x6f4f96);})[_0x8481('0x2e')](function(_0x1f13a3){var _0x1629a1=parseInt(_0x1f13a3[_0x8481('0x75')]['charAt'](0x0));var _0x4551ec=util['format']('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x433a46[_0x8481('0x56')],_0xb0d446['id']);if(_0x1629a1>0x6){_0x4551ec=util[_0x8481('0x25')](_0x8481('0x76'),_0x433a46['remoteUri'],_0xb0d446['id']);}logger[_0x8481('0xc')](_0x8481('0x6f'),_0x8481('0x68'));emit(util[_0x8481('0x25')]('user:%s',_0x5d48aa['name']),_0x8481('0x77'),{'uri':_0x4551ec});})[_0x8481('0x6a')](function(_0xe6d043){logger[_0x8481('0x6b')](_0x8481('0x6f'),JSON['stringify'](_0xe6d043));});};exports[_0x8481('0x78')]=function(_0x2e0c62,_0x12f212,_0x315ce1,_0x4d4ac8,_0x5eadc6,_0x27bdbb){var _0x23cc4b,_0x431eb4,_0x491435,_0x1dbb33;_0x27bdbb['remoteUri']=intUtil[_0x8481('0x57')](_0x27bdbb[_0x8481('0x56')]);_0x27bdbb[_0x8481('0x58')]=intUtil[_0x8481('0x57')](_0x27bdbb[_0x8481('0x58')]);def['uri']=util[_0x8481('0x25')](_0x8481('0x6d'),_0x27bdbb[_0x8481('0x56')]);if(_0x5eadc6&&_0x5eadc6[_0x8481('0x79')]){logger[_0x8481('0xc')]('['+_0x12f212[_0x8481('0x7a')][_0x8481('0x7b')]()+']','Recording\x20is\x20enabled!');_0x12f212[_0x8481('0x5b')]=util[_0x8481('0x25')](_0x8481('0x70'),_0x27bdbb[_0x8481('0x58')],_0x12f212['uniqueid'],md5(_0x12f212[_0x8481('0x5c')]));}else{_0x12f212[_0x8481('0x5b')]='';}return getConnection(_0x27bdbb)['then'](function(_0x5a60b4){_0x1dbb33=_0x5a60b4;if(!_[_0x8481('0x2a')](_0x4d4ac8)){return getUser(_0x27bdbb,_0x4d4ac8['name'],_0x1dbb33);}else{return getUser(_0x27bdbb,null,_0x1dbb33);}})['then'](function(_0xe692a7){_0x23cc4b=_0xe692a7;logger[_0x8481('0xc')](_0x8481('0x71'),_0x23cc4b['id']);return getEndUser(_0x27bdbb,_0x12f212[_0x8481('0x5d')],_0x12f212['calleridnum'],_0x1dbb33);})[_0x8481('0x2e')](function(_0x39c719){_0x431eb4=_0x39c719;logger[_0x8481('0xc')](_0x8481('0x5f'),_0x431eb4['id']);return getTicket(_0x27bdbb,_0x23cc4b,_0x431eb4,_0x315ce1,_0x12f212,_0x315ce1[_0x8481('0x73')],_0x1dbb33,'Inbound');})['then'](function(_0x46fabe){_0x491435=_0x46fabe;logger[_0x8481('0xc')](_0x8481('0x61'));logger[_0x8481('0xc')](_0x8481('0x62'),_0x491435['id']);return setRelationship(_0x1dbb33,_0x23cc4b,_0x491435,_0x8481('0x63'));})[_0x8481('0x2e')](function(){return setRelationship(_0x1dbb33,_0x431eb4,_0x491435,_0x8481('0x64'));})[_0x8481('0x2e')](function(){return getServerInfo(_0x1dbb33);})[_0x8481('0x6a')](function(_0x5c9637){logger[_0x8481('0x6b')]('['+_0x12f212['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x5c9637));});};
\ No newline at end of file
+var _0xc6c3=['length','Enduser\x20found!','Enduser\x20created.','first_name','debug','[HTTP]','merge','map','type','nameField','customField','toLowerCase','content','string','custom_fields','variable','customVariable','Variable','POST','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[QUEUE]','trigger:browser:url','catch','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','error','unmanaged','lastevent','toUpperCase','Ticket\x20created!','request-promise','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','emit','info','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','duration_hours','duration_minutes','parent_id','Contacts','parent_name','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','get_entry_list','Employees','user_name','find','name_value_list','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then','entry_list'];(function(_0x4a5642,_0x18c3f9){var _0x4ecc72=function(_0x589939){while(--_0x589939){_0x4a5642['push'](_0x4a5642['shift']());}};_0x4ecc72(++_0x18c3f9);}(_0xc6c3,0x1b2));var _0x3c6c=function(_0x576fb7,_0x24c08){_0x576fb7=_0x576fb7-0x0;var _0x19f219=_0xc6c3[_0x576fb7];return _0x19f219;};'use strict';var _=require('lodash');var rp=require(_0x3c6c('0x0'));var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x3c6c('0x1'));var Redis=require(_0x3c6c('0x2'));var intUtil=require(_0x3c6c('0x3'));var config=require(_0x3c6c('0x4'));var logger=require('../../../../config/logger')(_0x3c6c('0x5'));config[_0x3c6c('0x6')]=_[_0x3c6c('0x7')](config[_0x3c6c('0x6')],{'host':_0x3c6c('0x8'),'port':0x18eb});var io=require(_0x3c6c('0x9'))(new Redis(config[_0x3c6c('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x56e7c7,_0x4b2b40,_0x18d9a2){io['to'](_0x56e7c7)[_0x3c6c('0xa')](_0x4b2b40,_0x18d9a2);}function getTicket(_0x40b63b,_0x3eaeb2,_0x2324f4,_0x4805ad,_0x9f7d4b,_0xc9bca0,_0x5bb44c,_0x37df64){logger[_0x3c6c('0xb')]('Creating\x20new\x20ticket...');var _0x32851a=new Date();var _0x48234c=[{'name':_0x3c6c('0xc'),'value':intUtil[_0x3c6c('0xd')](_0x4805ad[_0x3c6c('0xe')],_0x9f7d4b,'\x20')},{'name':_0x3c6c('0xf'),'value':_0x3eaeb2['id']},{'name':_0x3c6c('0x10'),'value':_0x3eaeb2['id']},{'name':_0x3c6c('0x11'),'value':intUtil['getString'](_0x4805ad[_0x3c6c('0x12')],_0x9f7d4b,'\x0a')},{'name':_0x3c6c('0x13'),'value':_0x32851a[_0x3c6c('0x14')]()[_0x3c6c('0x15')](0x0,0x13)['replace']('T','\x20')},{'name':_0x3c6c('0x16'),'value':'0'},{'name':_0x3c6c('0x17'),'value':'15'},{'name':_0x3c6c('0x18'),'value':_0x2324f4['id']},{'name':'parent_type','value':_0x3c6c('0x19')},{'name':_0x3c6c('0x1a'),'value':_0x2324f4[_0x3c6c('0xc')]},{'name':_0x3c6c('0x1b'),'value':_0x37df64}];if(_0xc9bca0['length']){_[_0x3c6c('0x1c')](_0xc9bca0,function(_0x2be3f2){if(_0x9f7d4b[_0x2be3f2[_0x3c6c('0x1d')]]){_0x48234c[_0x3c6c('0x1e')]({'name':_0x2be3f2[_0x3c6c('0x1f')],'value':_0x9f7d4b[_0x2be3f2[_0x3c6c('0x1d')]]});}});}return request({'form':{'method':_0x3c6c('0x20'),'input_type':_0x3c6c('0x21'),'response_type':_0x3c6c('0x21'),'rest_data':JSON[_0x3c6c('0x22')]({'session':_0x5bb44c['id'],'module_name':_0x3c6c('0x23'),'name_value_list':_0x48234c})}});}function getAuth(_0x11346e){return util[_0x3c6c('0x24')]('Basic\x20%s',new Buffer(_0x11346e[_0x3c6c('0x25')]+':X')[_0x3c6c('0x26')](_0x3c6c('0x27')));}function getServerInfo(_0x1e6905){return request({'form':{'method':_0x3c6c('0x28'),'input_type':_0x3c6c('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x1e6905['id']})}});}function getUser(_0x517506,_0x59200c,_0x1d3c07){if(!_[_0x3c6c('0x29')](_0x59200c)){logger['info']('Getting\x20agent\x20with\x20name',_0x59200c);return request({'form':{'method':_0x3c6c('0x2a'),'input_type':_0x3c6c('0x21'),'response_type':'JSON','rest_data':JSON[_0x3c6c('0x22')]({'session':_0x1d3c07['id'],'module_name':_0x3c6c('0x2b'),'query':util[_0x3c6c('0x24')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x59200c),'order_by':'','offset':'0','select_fields':['id',_0x3c6c('0xc'),_0x3c6c('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x1f08ab){if(_0x1f08ab['entry_list']['length']){var _0x47fd1f=_[_0x3c6c('0x2d')](_0x1f08ab['entry_list'],function(_0x190a26){return _0x190a26[_0x3c6c('0x2e')]['user_name'][_0x3c6c('0x2f')]===_0x59200c;});if(_0x47fd1f){logger['info'](_0x3c6c('0x30'));return BPromise[_0x3c6c('0x31')]({'id':_0x47fd1f['name_value_list']['id'][_0x3c6c('0x2f')],'name':_0x47fd1f[_0x3c6c('0x2e')][_0x3c6c('0xc')][_0x3c6c('0x2f')]});}}logger[_0x3c6c('0xb')](_0x3c6c('0x32'));return BPromise[_0x3c6c('0x31')]({'id':_0x1d3c07[_0x3c6c('0x2e')]['user_id']['value'],'name':_0x1d3c07[_0x3c6c('0x2e')]['user_name'][_0x3c6c('0x2f')]});});}else{logger[_0x3c6c('0xb')](_0x3c6c('0x33'));return BPromise[_0x3c6c('0x31')]({'id':_0x1d3c07[_0x3c6c('0x2e')][_0x3c6c('0x34')][_0x3c6c('0x2f')],'name':_0x1d3c07[_0x3c6c('0x2e')]['user_name'][_0x3c6c('0x2f')]});}}function getEndUser(_0x1cc058,_0x3a3b1b,_0x22a8c7,_0x45a1c3){logger['info'](_0x3c6c('0x35'),_0x22a8c7);return request({'form':{'method':_0x3c6c('0x2a'),'input_type':_0x3c6c('0x21'),'response_type':_0x3c6c('0x21'),'rest_data':JSON[_0x3c6c('0x22')]({'session':_0x45a1c3['id'],'module_name':'Contacts','query':util[_0x3c6c('0x24')](_0x3c6c('0x36'),_0x22a8c7),'order_by':'','offset':'0','select_fields':['id',_0x3c6c('0xc'),_0x3c6c('0x37')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3c6c('0x38')](function(_0x24a11f){if(_0x24a11f[_0x3c6c('0x39')][_0x3c6c('0x3a')]){var _0x2dbd50=_[_0x3c6c('0x2d')](_0x24a11f[_0x3c6c('0x39')],function(_0x5c3dc7){return _0x5c3dc7[_0x3c6c('0x2e')]['phone_home'][_0x3c6c('0x2f')]===_0x22a8c7;});if(_0x2dbd50){logger['info'](_0x3c6c('0x3b'));return BPromise[_0x3c6c('0x31')]({'id':_0x2dbd50[_0x3c6c('0x2e')]['id'][_0x3c6c('0x2f')],'name':_0x2dbd50[_0x3c6c('0x2e')][_0x3c6c('0xc')][_0x3c6c('0x2f')],'phone':_0x2dbd50[_0x3c6c('0x2e')][_0x3c6c('0x37')][_0x3c6c('0x2f')]});}}else{logger[_0x3c6c('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x3c6c('0x21'),'response_type':_0x3c6c('0x21'),'rest_data':JSON[_0x3c6c('0x22')]({'session':_0x45a1c3['id'],'module_name':'Contacts','name_value_list':[{'name':'first_name','value':_0x3a3b1b!=='<unknown>'?_0x3a3b1b:util['format']('Caller\x20-\x20%s',_0x22a8c7)},{'name':_0x3c6c('0x37'),'value':_0x22a8c7}]})}})[_0x3c6c('0x38')](function(_0x59e11e){logger['info'](_0x3c6c('0x3c'));return BPromise[_0x3c6c('0x31')]({'id':_0x59e11e['id'],'name':_0x59e11e[_0x3c6c('0x39')][_0x3c6c('0x3d')]['value'],'phone':_0x59e11e['entry_list'][_0x3c6c('0x37')][_0x3c6c('0x2f')]});});}});}function request(_0x309b23){logger[_0x3c6c('0x3e')](_0x3c6c('0x3f'),JSON[_0x3c6c('0x22')](_0x309b23));return rp(_[_0x3c6c('0x40')](def,_0x309b23));}function getTags(_0x21f8ba,_0x52b55f){var _0x2c7ae6=[];if(_0x21f8ba&&_0x21f8ba['length']>0x0){_0x2c7ae6=_[_0x3c6c('0x41')](_0x21f8ba,_0x52b55f);}return _0x2c7ae6;}function getCustomFields(_0x45e625,_0x58a18c){var _0x7cece4=[];var _0x3b8a06={'custom_fields':[]};if(_0x45e625[_0x3c6c('0x3a')]>0x0){_[_0x3c6c('0x1c')](_0x45e625,function(_0x4ebc47){if(_0x4ebc47[_0x3c6c('0x42')]==='string'&&_0x4ebc47[_0x3c6c('0x43')]&&!_0x4ebc47[_0x3c6c('0x44')]){_0x3b8a06[_0x4ebc47[_0x3c6c('0x43')][_0x3c6c('0x45')]()]=_0x4ebc47[_0x3c6c('0x46')]['toString']();}else if(_0x4ebc47[_0x3c6c('0x42')]===_0x3c6c('0x47')&&_0x4ebc47[_0x3c6c('0x1f')]&&_0x4ebc47[_0x3c6c('0x44')]){_0x3b8a06[_0x3c6c('0x48')][_0x3c6c('0x1e')]({'id':_0x4ebc47['idField'],'value':_0x4ebc47[_0x3c6c('0x46')][_0x3c6c('0x26')]()});}else if(_0x4ebc47['type']===_0x3c6c('0x49')&&_0x4ebc47[_0x3c6c('0x1d')]&&_0x4ebc47['idField']&&_0x4ebc47[_0x3c6c('0x44')]){_0x58a18c[_0x4ebc47[_0x3c6c('0x1d')]]&&_0x3b8a06[_0x3c6c('0x48')][_0x3c6c('0x1e')]({'id':_0x4ebc47[_0x3c6c('0x1f')],'value':_0x58a18c[_0x4ebc47[_0x3c6c('0x1d')]][_0x3c6c('0x26')]()});}else if(_0x4ebc47[_0x3c6c('0x42')]===_0x3c6c('0x4a')&&_0x4ebc47['Variable']&&_0x4ebc47[_0x3c6c('0x4b')][_0x3c6c('0xc')]&&_0x4ebc47[_0x3c6c('0x1f')]&&_0x4ebc47[_0x3c6c('0x44')]){_0x58a18c[_0x4ebc47[_0x3c6c('0x4b')][_0x3c6c('0xc')][_0x3c6c('0x45')]()]&&_0x3b8a06[_0x3c6c('0x48')][_0x3c6c('0x1e')]({'id':_0x4ebc47[_0x3c6c('0x1f')],'value':_0x58a18c[_0x4ebc47['Variable'][_0x3c6c('0xc')][_0x3c6c('0x45')]()][_0x3c6c('0x26')]()});}});}return _0x3b8a06;}function getConnection(_0xcdc430){return request({'method':_0x3c6c('0x4c'),'form':{'method':_0x3c6c('0x4d'),'input_type':'JSON','response_type':_0x3c6c('0x21'),'rest_data':JSON[_0x3c6c('0x22')]({'user_auth':{'user_name':_0xcdc430[_0x3c6c('0x4e')],'password':_0xcdc430[_0x3c6c('0x4f')],'encryption':_0x3c6c('0x50')},'application':_0x3c6c('0x51')})}})['then'](function(_0x1e7bcd){var _0x3e937b=_0x1e7bcd;if(_0x3e937b['id']){def['sessionID']=_0x3e937b['id'];return BPromise[_0x3c6c('0x31')](_0x3e937b);}else{throw new Error(util[_0x3c6c('0x24')](_0x3c6c('0x52'),_0xcdc430['id']));}});}function setRelationship(_0x3b08bb,_0x405502,_0x1f8fcd,_0x2177f3){return request({'form':{'method':_0x3c6c('0x53'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3b08bb['id'],'module_name':_0x3c6c('0x23'),'module_id':_0x1f8fcd['id'],'link_field_name':_0x2177f3,'related_ids':[_0x405502['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x1b2ba2,_0x1f35f2,_0x53cbc7,_0x23e06a,_0x242ee8,_0x38d026){var _0x5e1934,_0x3694ce,_0x541515,_0xd5cbc4;_0x38d026[_0x3c6c('0x54')]=intUtil[_0x3c6c('0x55')](_0x38d026[_0x3c6c('0x54')]);_0x38d026[_0x3c6c('0x56')]=intUtil[_0x3c6c('0x55')](_0x38d026[_0x3c6c('0x56')]);def[_0x3c6c('0x57')]=util[_0x3c6c('0x24')]('%s/service/v4_1/rest.php',_0x38d026['remoteUri']);if(_0x242ee8&&_0x242ee8[_0x3c6c('0x58')]){logger['info']('[QUEUE]',_0x3c6c('0x59'));_0x1f35f2[_0x3c6c('0x5a')]=util[_0x3c6c('0x24')](_0x3c6c('0x5b'),_0x38d026[_0x3c6c('0x56')],_0x1f35f2[_0x3c6c('0x5c')],md5(_0x1f35f2[_0x3c6c('0x5c')]));}else{_0x1f35f2['recordingURL']='';}return getConnection(_0x38d026)[_0x3c6c('0x38')](function(_0x2b3886){_0xd5cbc4=_0x2b3886;return getUser(_0x38d026,_0x23e06a['name'],_0xd5cbc4);})[_0x3c6c('0x38')](function(_0x43f756){_0x5e1934=_0x43f756;logger[_0x3c6c('0xb')]('The\x20User\x20ID\x20is:',_0x5e1934['id']);return getEndUser(_0x38d026,_0x1f35f2[_0x3c6c('0x5d')],_0x1f35f2[_0x3c6c('0x5e')],_0xd5cbc4);})[_0x3c6c('0x38')](function(_0x122cd9){_0x3694ce=_0x122cd9;logger[_0x3c6c('0xb')](_0x3c6c('0x5f'),_0x3694ce['id']);return getTicket(_0x38d026,_0x5e1934,_0x3694ce,_0x53cbc7,_0x1f35f2,_0x53cbc7[_0x3c6c('0x60')],_0xd5cbc4,_0x3c6c('0x61'));})['then'](function(_0x2fab8f){_0x541515=_0x2fab8f;logger[_0x3c6c('0xb')]('Ticket\x20created!');logger[_0x3c6c('0xb')](_0x3c6c('0x62'),_0x541515['id']);return setRelationship(_0xd5cbc4,_0x5e1934,_0x541515,_0x3c6c('0x63'));})[_0x3c6c('0x38')](function(){return setRelationship(_0xd5cbc4,_0x3694ce,_0x541515,_0x3c6c('0x64'));})['then'](function(){return getServerInfo(_0xd5cbc4);})['then'](function(_0x17d36b){var _0x3ef083=parseInt(_0x17d36b[_0x3c6c('0x65')][_0x3c6c('0x66')](0x0));var _0x1dea07=util[_0x3c6c('0x24')](_0x3c6c('0x67'),_0x38d026[_0x3c6c('0x54')],_0x541515['id']);if(_0x3ef083>0x6){_0x1dea07=util['format'](_0x3c6c('0x68'),_0x38d026[_0x3c6c('0x54')],_0x541515['id']);}logger[_0x3c6c('0xb')](_0x3c6c('0x69'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3c6c('0x24')]('user:%s',_0x23e06a[_0x3c6c('0xc')]),_0x3c6c('0x6a'),{'uri':_0x1dea07});})[_0x3c6c('0x6b')](function(_0x585e22){logger['error'](_0x3c6c('0x69'),JSON['stringify'](_0x585e22));});};exports['outbound']=function(_0x1c4a2e,_0x41f207,_0x20ddaf,_0x33b95a,_0x3f33b4,_0x27eabf,_0x1f7638){var _0xef8672,_0x57b420,_0x3289f7,_0x38677e;_0x27eabf[_0x3c6c('0x54')]=intUtil['stripTrailingSlash'](_0x27eabf[_0x3c6c('0x54')]);_0x27eabf['serverUrl']=intUtil[_0x3c6c('0x55')](_0x27eabf[_0x3c6c('0x56')]);def[_0x3c6c('0x57')]=util[_0x3c6c('0x24')](_0x3c6c('0x6c'),_0x27eabf['remoteUri']);if(_0x1f7638&&_0x1f7638[_0x3c6c('0x6d')]&&_0x1f7638[_0x3c6c('0x6d')]!==_0x3c6c('0x6e')){logger[_0x3c6c('0xb')](_0x3c6c('0x6f'),'Recording\x20is\x20enabled!');_0x41f207[_0x3c6c('0x5a')]=util[_0x3c6c('0x24')](_0x3c6c('0x5b'),_0x27eabf[_0x3c6c('0x56')],_0x41f207[_0x3c6c('0x5c')],md5(_0x41f207[_0x3c6c('0x5c')]));}return getConnection(_0x27eabf)[_0x3c6c('0x38')](function(_0x8a7365){_0x38677e=_0x8a7365;return getUser(_0x27eabf,_0x33b95a[_0x3c6c('0xc')],_0x38677e);})[_0x3c6c('0x38')](function(_0x49970c){_0xef8672=_0x49970c;logger[_0x3c6c('0xb')](_0x3c6c('0x70'),_0xef8672['id']);return getEndUser(_0x27eabf,_0x41f207[_0x3c6c('0x71')],_0x41f207[_0x3c6c('0x72')],_0x38677e);})[_0x3c6c('0x38')](function(_0x228c10){_0x57b420=_0x228c10;logger[_0x3c6c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x57b420['id']);return getTicket(_0x27eabf,_0xef8672,_0x57b420,_0x20ddaf,_0x41f207,_0x20ddaf[_0x3c6c('0x60')],_0x38677e,_0x3c6c('0x73'));})[_0x3c6c('0x38')](function(_0x358171){_0x3289f7=_0x358171;logger['info']('Ticket\x20created!');logger['info'](_0x3c6c('0x62'),_0x3289f7['id']);return setRelationship(_0x38677e,_0xef8672,_0x3289f7,_0x3c6c('0x63'));})[_0x3c6c('0x38')](function(){return setRelationship(_0x38677e,_0x57b420,_0x3289f7,_0x3c6c('0x64'));})[_0x3c6c('0x38')](function(){return getServerInfo(_0x38677e);})['then'](function(_0x4c5a6f){var _0x1761f9=parseInt(_0x4c5a6f['version']['charAt'](0x0));var _0x59396d=util['format'](_0x3c6c('0x67'),_0x27eabf[_0x3c6c('0x54')],_0x3289f7['id']);if(_0x1761f9>0x6){_0x59396d=util[_0x3c6c('0x24')](_0x3c6c('0x68'),_0x27eabf[_0x3c6c('0x54')],_0x3289f7['id']);}logger['info']('[OUTBOUND]',_0x3c6c('0x74'));emit(util[_0x3c6c('0x24')](_0x3c6c('0x75'),_0x33b95a[_0x3c6c('0xc')]),'trigger:browser:url',{'uri':_0x59396d});})['catch'](function(_0x477b10){logger[_0x3c6c('0x76')](_0x3c6c('0x6f'),JSON['stringify'](_0x477b10));});};exports[_0x3c6c('0x77')]=function(_0x18a811,_0x16cf0b,_0x59ff0e,_0x283331,_0x12be4b,_0x3885c7){var _0x19141a,_0x444bf3,_0x19d914,_0x4e5f08;_0x3885c7['remoteUri']=intUtil[_0x3c6c('0x55')](_0x3885c7['remoteUri']);_0x3885c7[_0x3c6c('0x56')]=intUtil[_0x3c6c('0x55')](_0x3885c7[_0x3c6c('0x56')]);def[_0x3c6c('0x57')]=util[_0x3c6c('0x24')]('%s/service/v4_1/rest.php',_0x3885c7[_0x3c6c('0x54')]);if(_0x12be4b&&_0x12be4b[_0x3c6c('0x58')]){logger['info']('['+_0x16cf0b[_0x3c6c('0x78')][_0x3c6c('0x79')]()+']',_0x3c6c('0x59'));_0x16cf0b['recordingURL']=util['format'](_0x3c6c('0x5b'),_0x3885c7['serverUrl'],_0x16cf0b[_0x3c6c('0x5c')],md5(_0x16cf0b[_0x3c6c('0x5c')]));}else{_0x16cf0b[_0x3c6c('0x5a')]='';}return getConnection(_0x3885c7)['then'](function(_0x249084){_0x4e5f08=_0x249084;if(!_[_0x3c6c('0x29')](_0x283331)){return getUser(_0x3885c7,_0x283331[_0x3c6c('0xc')],_0x4e5f08);}else{return getUser(_0x3885c7,null,_0x4e5f08);}})['then'](function(_0x415f27){_0x19141a=_0x415f27;logger[_0x3c6c('0xb')](_0x3c6c('0x70'),_0x19141a['id']);return getEndUser(_0x3885c7,_0x16cf0b[_0x3c6c('0x5d')],_0x16cf0b[_0x3c6c('0x5e')],_0x4e5f08);})[_0x3c6c('0x38')](function(_0x59a255){_0x444bf3=_0x59a255;logger[_0x3c6c('0xb')](_0x3c6c('0x5f'),_0x444bf3['id']);return getTicket(_0x3885c7,_0x19141a,_0x444bf3,_0x59ff0e,_0x16cf0b,_0x59ff0e[_0x3c6c('0x60')],_0x4e5f08,_0x3c6c('0x61'));})[_0x3c6c('0x38')](function(_0x55c6a9){_0x19d914=_0x55c6a9;logger['info'](_0x3c6c('0x7a'));logger[_0x3c6c('0xb')](_0x3c6c('0x62'),_0x19d914['id']);return setRelationship(_0x4e5f08,_0x19141a,_0x19d914,_0x3c6c('0x63'));})[_0x3c6c('0x38')](function(){return setRelationship(_0x4e5f08,_0x444bf3,_0x19d914,_0x3c6c('0x64'));})[_0x3c6c('0x38')](function(){return getServerInfo(_0x4e5f08);})[_0x3c6c('0x6b')](function(_0x1a1bf0){logger[_0x3c6c('0x76')]('['+_0x16cf0b[_0x3c6c('0x78')][_0x3c6c('0x79')]()+']',JSON[_0x3c6c('0x22')](_0x1a1bf0));});};
\ No newline at end of file
index ca4570f..06b4d92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce61=['variable','variableName','push','toString','Variable','name','toLowerCase','keyType','string','key','%s:\x20%s','keyContent','format','customVariable','join','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','lodash','getString','length','sortBy','type'];(function(_0x1950dd,_0x3c5d10){var _0x1f4b1c=function(_0x213dc3){while(--_0x213dc3){_0x1950dd['push'](_0x1950dd['shift']());}};_0x1f4b1c(++_0x3c5d10);}(_0xce61,0x18b));var _0x1ce6=function(_0x45c2ae,_0x126f42){_0x45c2ae=_0x45c2ae-0x0;var _0x157ea0=_0xce61[_0x45c2ae];return _0x157ea0;};'use strict';var _=require(_0x1ce6('0x0'));var util=require('util');exports[_0x1ce6('0x1')]=function(_0x3c9509,_0x4961bd,_0xcb65da){var _0x40531b=[];if(_0x3c9509[_0x1ce6('0x2')]>0x0){var _0x50c8ac=_[_0x1ce6('0x3')](_0x3c9509,['id']);for(var _0xf7cedd=0x0;_0xf7cedd<_0x50c8ac['length'];_0xf7cedd++){var _0x3a058b=_0x50c8ac[_0xf7cedd];if(_0x3a058b[_0x1ce6('0x4')]==='string'){_0x40531b['push'](_0x3a058b['content']);}else if(_0x3a058b[_0x1ce6('0x4')]===_0x1ce6('0x5')&&_0x3a058b[_0x1ce6('0x6')]){_0x4961bd[_0x3a058b[_0x1ce6('0x6')]]&&_0x40531b[_0x1ce6('0x7')](_0x4961bd[_0x3a058b[_0x1ce6('0x6')]][_0x1ce6('0x8')]());}else if(_0x3a058b['type']==='customVariable'&&_0x3a058b[_0x1ce6('0x9')]&&_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')]){_0x4961bd[_0x3a058b['Variable']['name'][_0x1ce6('0xb')]()]&&_0x40531b[_0x1ce6('0x7')](_0x4961bd[_0x3a058b[_0x1ce6('0x9')]['name']['toLowerCase']()][_0x1ce6('0x8')]());}else if(_0x3a058b[_0x1ce6('0x4')]==='keyValue'){if(_0x3a058b[_0x1ce6('0xc')]===_0x1ce6('0xd')&&_0x3a058b[_0x1ce6('0xe')]){_0x40531b[_0x1ce6('0x7')](util['format'](_0x1ce6('0xf'),_0x3a058b[_0x1ce6('0xe')],_0x3a058b[_0x1ce6('0x10')]));}else if(_0x3a058b[_0x1ce6('0xc')]===_0x1ce6('0x5')&&_0x3a058b[_0x1ce6('0x6')]&&_0x3a058b['key']){_0x4961bd[_0x3a058b[_0x1ce6('0x6')]]&&_0x40531b[_0x1ce6('0x7')](util[_0x1ce6('0x11')](_0x1ce6('0xf'),_0x3a058b['key'],_0x4961bd[_0x3a058b['variableName']]));}else if(_0x3a058b['keyType']===_0x1ce6('0x12')&&_0x3a058b[_0x1ce6('0x9')]&&_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')]&&_0x3a058b[_0x1ce6('0xe')]){_0x4961bd[_0x3a058b[_0x1ce6('0x9')]['name'][_0x1ce6('0xb')]()]&&_0x40531b['push'](util['format']('%s:\x20%s',_0x3a058b[_0x1ce6('0xe')],_0x4961bd[_0x3a058b[_0x1ce6('0x9')][_0x1ce6('0xa')][_0x1ce6('0xb')]()]));}}}}return _0x40531b[_0x1ce6('0x13')](_0xcb65da);};exports[_0x1ce6('0x14')]=function(_0x4988e6){var _0x3ae3e1=_0x4988e6[_0x1ce6('0x15')](-0x1);if(_0x3ae3e1==='/'){_0x4988e6=_0x4988e6[_0x1ce6('0x16')](0x0,_0x4988e6[_0x1ce6('0x17')](_0x3ae3e1));}return _0x4988e6;};exports[_0x1ce6('0x18')]=function(_0x62ea46){if(!_['isNil'](_0x62ea46)&&_0x62ea46!==''){var _0x273ce5=/^(([^<>()\[\]\\.,;:\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,}))$/;return _0x273ce5['test'](String(_0x62ea46)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x2a65=['%s:\x20%s','keyContent','format','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil','lodash','length','sortBy','type','string','variable','variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key'];(function(_0x18ce11,_0x24c013){var _0x3ecc18=function(_0x289657){while(--_0x289657){_0x18ce11['push'](_0x18ce11['shift']());}};_0x3ecc18(++_0x24c013);}(_0x2a65,0x11c));var _0x52a6=function(_0x4bf0bc,_0x2c6490){_0x4bf0bc=_0x4bf0bc-0x0;var _0x223837=_0x2a65[_0x4bf0bc];return _0x223837;};'use strict';var _=require(_0x52a6('0x0'));var util=require('util');exports['getString']=function(_0x179fef,_0x989c7d,_0x3c925d){var _0x22c39d=[];if(_0x179fef[_0x52a6('0x1')]>0x0){var _0x42b3a8=_[_0x52a6('0x2')](_0x179fef,['id']);for(var _0x1ea22b=0x0;_0x1ea22b<_0x42b3a8['length'];_0x1ea22b++){var _0x3ee427=_0x42b3a8[_0x1ea22b];if(_0x3ee427[_0x52a6('0x3')]===_0x52a6('0x4')){_0x22c39d['push'](_0x3ee427['content']);}else if(_0x3ee427[_0x52a6('0x3')]===_0x52a6('0x5')&&_0x3ee427[_0x52a6('0x6')]){_0x989c7d[_0x3ee427['variableName']]&&_0x22c39d[_0x52a6('0x7')](_0x989c7d[_0x3ee427['variableName']][_0x52a6('0x8')]());}else if(_0x3ee427[_0x52a6('0x3')]===_0x52a6('0x9')&&_0x3ee427[_0x52a6('0xa')]&&_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')]){_0x989c7d[_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')]['toLowerCase']()]&&_0x22c39d[_0x52a6('0x7')](_0x989c7d[_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')][_0x52a6('0xc')]()][_0x52a6('0x8')]());}else if(_0x3ee427[_0x52a6('0x3')]===_0x52a6('0xd')){if(_0x3ee427[_0x52a6('0xe')]==='string'&&_0x3ee427[_0x52a6('0xf')]){_0x22c39d['push'](util['format'](_0x52a6('0x10'),_0x3ee427[_0x52a6('0xf')],_0x3ee427[_0x52a6('0x11')]));}else if(_0x3ee427['keyType']===_0x52a6('0x5')&&_0x3ee427[_0x52a6('0x6')]&&_0x3ee427[_0x52a6('0xf')]){_0x989c7d[_0x3ee427['variableName']]&&_0x22c39d['push'](util[_0x52a6('0x12')](_0x52a6('0x10'),_0x3ee427['key'],_0x989c7d[_0x3ee427[_0x52a6('0x6')]]));}else if(_0x3ee427[_0x52a6('0xe')]===_0x52a6('0x9')&&_0x3ee427[_0x52a6('0xa')]&&_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')]&&_0x3ee427[_0x52a6('0xf')]){_0x989c7d[_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')][_0x52a6('0xc')]()]&&_0x22c39d[_0x52a6('0x7')](util['format']('%s:\x20%s',_0x3ee427['key'],_0x989c7d[_0x3ee427[_0x52a6('0xa')][_0x52a6('0xb')][_0x52a6('0xc')]()]));}}}}return _0x22c39d['join'](_0x3c925d);};exports[_0x52a6('0x13')]=function(_0x2866c0){var _0x38029b=_0x2866c0[_0x52a6('0x14')](-0x1);if(_0x38029b==='/'){_0x2866c0=_0x2866c0[_0x52a6('0x15')](0x0,_0x2866c0[_0x52a6('0x16')](_0x38029b));}return _0x2866c0;};exports[_0x52a6('0x17')]=function(_0x3b8793){if(!_[_0x52a6('0x18')](_0x3b8793)&&_0x3b8793!==''){var _0xd2d2e9=/^(([^<>()\[\]\\.,;:\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,}))$/;return _0xd2d2e9['test'](String(_0x3b8793)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 4028fd7..0113e5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
+var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x3f9b9e,_0x2461d5){var _0x19b9f5=function(_0x2c9e03){while(--_0x2c9e03){_0x3f9b9e['push'](_0x3f9b9e['shift']());}};_0x19b9f5(++_0x2461d5);}(_0x34e8,0x12c));var _0x834e=function(_0x35cfdd,_0x146019){_0x35cfdd=_0x35cfdd-0x0;var _0xfbbfd3=_0x34e8[_0x35cfdd];return _0xfbbfd3;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
index 4d972cb..755f26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9951=['[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','calleridnum','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','base64','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','toString','idField','custom_fields','push','type','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','%s/agent/tickets/%s','/api/v2','error','catch','outbound','recordingFormat','[OUTBOUND]','uniqueid','Authorization','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace'];(function(_0x4c7ab7,_0x519b09){var _0x146103=function(_0x43d56a){while(--_0x43d56a){_0x4c7ab7['push'](_0x4c7ab7['shift']());}};_0x146103(++_0x519b09);}(_0x9951,0x15c));var _0x1995=function(_0x4a6093,_0x43f470){_0x4a6093=_0x4a6093-0x0;var _0x585971=_0x9951[_0x4a6093];return _0x585971;};'use strict';var _=require(_0x1995('0x0'));var rp=require(_0x1995('0x1'));var md5=require('md5');var util=require(_0x1995('0x2'));var Redis=require(_0x1995('0x3'));var intUtil=require('./util');var config=require(_0x1995('0x4'));var logger=require(_0x1995('0x5'))(_0x1995('0x6'));config[_0x1995('0x7')]=_[_0x1995('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1995('0x7')]));function emit(_0x2ca40f,_0x1a66c5,_0x263403){io['to'](_0x2ca40f)[_0x1995('0x9')](_0x1a66c5,_0x263403);}var headers={'Content-Type':_0x1995('0xa'),'Accept':_0x1995('0xa')};function getTicket(_0x8a297a,_0x5ca7f3,_0x3241e9,_0x4437f8,_0x1bed41){logger['info'](_0x1995('0xb'));return request({'uri':util[_0x1995('0xc')](_0x1995('0xd'),_0x8a297a[_0x1995('0xe')]),'method':_0x1995('0xf'),'body':{'ticket':_[_0x1995('0x10')]({'requester_id':_0x3241e9['id'],'submitter_id':_0x5ca7f3?_0x5ca7f3['id']:undefined,'assignee_id':_0x5ca7f3?_0x5ca7f3['id']:undefined,'tags':getTags(_0x4437f8[_0x1995('0x11')],_0x1995('0x12')),'subject':intUtil[_0x1995('0x13')](_0x4437f8[_0x1995('0x14')],_0x1bed41,'\x20'),'description':intUtil[_0x1995('0x13')](_0x4437f8[_0x1995('0x15')],_0x1bed41,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x4437f8['Descriptions'],_0x1bed41,'\x0a')}},getCustomFields(_0x4437f8[_0x1995('0x16')],_0x1bed41))}})[_0x1995('0x17')](function(_0x8206cf){logger[_0x1995('0x18')](_0x1995('0x19'));return _0x8206cf[_0x1995('0x1a')];});}function getUser(_0x5a8448,_0x278c87){if(intUtil['validateEmail'](_0x278c87)){logger['info'](_0x1995('0x1b'),_0x278c87);return request({'uri':util[_0x1995('0xc')](_0x1995('0x1c'),_0x5a8448[_0x1995('0xe')]),'qs':{'query':util[_0x1995('0xc')](_0x1995('0x1d'),_0x278c87)}})[_0x1995('0x17')](function(_0xc4b25d){if(_0xc4b25d[_0x1995('0x1e')]){logger[_0x1995('0x18')](_0x1995('0x1f'));return _[_0x1995('0x20')](_0xc4b25d[_0x1995('0x21')],{'email':_0x278c87,'role':_0x1995('0x22')});}else{logger[_0x1995('0x18')](_0x1995('0x23'));return request({'uri':util[_0x1995('0xc')](_0x1995('0x24'),_0x5a8448[_0x1995('0xe')])})['then'](function(_0x29e7e3){logger[_0x1995('0x18')](_0x1995('0x25'));return _0x29e7e3[_0x1995('0x26')];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1995('0xc')](_0x1995('0x24'),_0x5a8448[_0x1995('0xe')])})[_0x1995('0x17')](function(_0x3d3022){logger[_0x1995('0x18')](_0x1995('0x25'));return _0x3d3022['user'];});}}function getEndUser(_0x6d7732,_0x3dac44,_0x3b0cb2){logger[_0x1995('0x18')](_0x1995('0x27'),_0x3b0cb2);return request({'uri':util[_0x1995('0xc')](_0x1995('0x1c'),_0x6d7732[_0x1995('0xe')]),'qs':{'query':util[_0x1995('0xc')](_0x1995('0x28'),_0x3b0cb2)}})['then'](function(_0xdcb561){var _0x21a184;if(_0xdcb561[_0x1995('0x21')][_0x1995('0x29')]){_0xdcb561[_0x1995('0x21')]=_[_0x1995('0x2a')](_0xdcb561['results'],{'suspended':![],'role':_0x1995('0x2b')});if(_0xdcb561[_0x1995('0x21')][_0x1995('0x29')]){_0x21a184=_[_0x1995('0x2c')](_0xdcb561[_0x1995('0x21')]);}}if(_0x21a184){logger[_0x1995('0x18')](_0x1995('0x2d'));return _0x21a184;}else{logger[_0x1995('0x18')](_0x1995('0x2e'));return request({'uri':util['format']('%s/users.json',_0x6d7732[_0x1995('0xe')]),'method':'POST','body':{'user':{'role':_0x1995('0x2b'),'name':util[_0x1995('0xc')]('Caller\x20-\x20%s',_0x3dac44||_0x3b0cb2),'phone':_0x3b0cb2}}})[_0x1995('0x17')](function(_0x2a4db1){logger[_0x1995('0x18')](_0x1995('0x2f'));return _0x2a4db1[_0x1995('0x26')];});}});}function getAuth(_0x30bd8d){var _0x2b5c87;if(_0x30bd8d[_0x1995('0x30')]===_0x1995('0x31')){_0x2b5c87=util['format']('%s:%s',_0x30bd8d[_0x1995('0x32')],_0x30bd8d[_0x1995('0x31')]);}else if(_0x30bd8d[_0x1995('0x30')]===_0x1995('0x33')){_0x2b5c87=util['format'](_0x1995('0x34'),_0x30bd8d[_0x1995('0x32')],_0x30bd8d[_0x1995('0x33')]);}return util[_0x1995('0xc')](_0x1995('0x35'),new Buffer(_0x2b5c87)['toString'](_0x1995('0x36')));}function request(_0x2ec360){logger['debug'](_0x1995('0x37'),JSON[_0x1995('0x38')](_0x2ec360));return rp(_[_0x1995('0x8')](_0x2ec360,{'method':_0x1995('0x39'),'headers':headers,'json':!![]}));}function getTags(_0xdec0da,_0x4cea69){var _0x307350=[];if(_0xdec0da&&_0xdec0da[_0x1995('0x29')]>0x0){_0x307350=_[_0x1995('0x3a')](_0xdec0da,_0x4cea69);}return _0x307350;}function getCustomFields(_0x8f1303,_0x1bf9ae){var _0x5317e4=[];var _0x5b5464={'custom_fields':[]};if(_0x8f1303[_0x1995('0x29')]>0x0){_[_0x1995('0x3b')](_0x8f1303,function(_0x424108){if(_[_0x1995('0x3c')]([_0x1995('0x3d'),_0x1995('0x3e')],_0x424108['type'])&&_0x424108[_0x1995('0x3f')]&&!_0x424108[_0x1995('0x40')]){_0x5b5464[_0x424108[_0x1995('0x3f')][_0x1995('0x41')]()]=_0x424108[_0x1995('0x42')][_0x1995('0x43')]();}else if(_[_0x1995('0x3c')]([_0x1995('0x3d'),'picklist'],_0x424108['type'])&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x424108['content'][_0x1995('0x43')]()});}else if(_0x424108[_0x1995('0x47')]===_0x1995('0x48')&&_0x424108['variableName']&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x1bf9ae[_0x424108[_0x1995('0x49')]]&&_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x1bf9ae[_0x424108[_0x1995('0x49')]][_0x1995('0x43')]()});}else if(_0x424108[_0x1995('0x47')]===_0x1995('0x4a')&&_0x424108[_0x1995('0x4b')]&&_0x424108[_0x1995('0x4b')][_0x1995('0x12')]&&_0x424108[_0x1995('0x44')]&&_0x424108[_0x1995('0x40')]){_0x1bf9ae[_0x424108[_0x1995('0x4b')]['name'][_0x1995('0x41')]()]&&_0x5b5464[_0x1995('0x45')][_0x1995('0x46')]({'id':_0x424108[_0x1995('0x44')],'value':_0x1bf9ae[_0x424108[_0x1995('0x4b')][_0x1995('0x12')][_0x1995('0x41')]()][_0x1995('0x43')]()});}});}return _0x5b5464;}exports[_0x1995('0x4c')]=function(_0x3bdd12,_0x105ef7,_0x50ff43,_0x3a90e5,_0xd97b92,_0x2559d8){var _0x22b1f9,_0x5d2425;_0x2559d8[_0x1995('0xe')]=intUtil[_0x1995('0x4d')](_0x2559d8[_0x1995('0xe')]);_0x2559d8[_0x1995('0x4e')]=intUtil[_0x1995('0x4d')](_0x2559d8[_0x1995('0x4e')]);if(_0xd97b92&&_0xd97b92[_0x1995('0x4f')]){logger[_0x1995('0x18')](_0x1995('0x50'),_0x1995('0x51'));_0x105ef7[_0x1995('0x52')]=util[_0x1995('0xc')](_0x1995('0x53'),_0x2559d8['serverUrl'],_0x105ef7['uniqueid'],md5(_0x105ef7['uniqueid']));}else{_0x105ef7[_0x1995('0x52')]='';}headers['Authorization']=getAuth(_0x2559d8);return getUser(_0x2559d8,_0x3a90e5[_0x1995('0x54')])[_0x1995('0x17')](function(_0x2754ea){_0x22b1f9=_0x2754ea;logger[_0x1995('0x18')](_0x1995('0x55'),_0x22b1f9['id']);return getEndUser(_0x2559d8,_0x105ef7[_0x1995('0x56')],_0x105ef7['calleridnum']);})[_0x1995('0x17')](function(_0x4254c4){_0x5d2425=_0x4254c4;logger[_0x1995('0x18')](_0x1995('0x57'),_0x5d2425['id']);return getTicket(_0x2559d8,_0x22b1f9,_0x5d2425,_0x50ff43,_0x105ef7);})[_0x1995('0x17')](function(_0x2d43e7){if(_0x2d43e7){logger['info'](_0x1995('0x58'),_0x2d43e7['id']);switch(_0x2559d8[_0x1995('0x47')]){case _0x1995('0x59'):logger['info']('[QUEUE]',_0x1995('0x5a'));return request({'uri':util[_0x1995('0xc')](_0x1995('0x5b'),_0x2559d8[_0x1995('0xe')],_0x22b1f9['id'],_0x2d43e7['id']),'method':_0x1995('0xf')});case _0x1995('0x5c'):logger[_0x1995('0x18')](_0x1995('0x50'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x1995('0x5d'),_0x3a90e5[_0x1995('0x12')]),'trigger:browser:url',{'uri':util[_0x1995('0xc')](_0x1995('0x5e'),_0x2559d8[_0x1995('0xe')]['replace'](_0x1995('0x5f'),''),_0x2d43e7['id'])});break;default:logger[_0x1995('0x60')]('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1995('0x61')](function(_0x5423a8){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x5423a8,{'showHidden':!![],'depth':null}));});};exports[_0x1995('0x62')]=function(_0xcf2b23,_0x4dc64e,_0x1fb094,_0x3996c2,_0x1daa7c,_0x2625e6,_0x449792){var _0x5abc81,_0xcef449;_0x2625e6[_0x1995('0xe')]=intUtil['stripTrailingSlash'](_0x2625e6[_0x1995('0xe')]);_0x2625e6[_0x1995('0x4e')]=intUtil[_0x1995('0x4d')](_0x2625e6[_0x1995('0x4e')]);if(_0x449792&&_0x449792[_0x1995('0x63')]&&_0x449792['recordingFormat']!=='none'){logger[_0x1995('0x18')](_0x1995('0x64'),'Recording\x20is\x20enabled!');_0x4dc64e[_0x1995('0x52')]=util[_0x1995('0xc')](_0x1995('0x53'),_0x2625e6['serverUrl'],_0x4dc64e[_0x1995('0x65')],md5(_0x4dc64e[_0x1995('0x65')]));}headers[_0x1995('0x66')]=getAuth(_0x2625e6);return getUser(_0x2625e6,_0x3996c2[_0x1995('0x54')])[_0x1995('0x17')](function(_0x44ba23){_0x5abc81=_0x44ba23;logger['info'](_0x1995('0x55'),_0x5abc81['id']);return getEndUser(_0x2625e6,_0x4dc64e[_0x1995('0x67')],_0x4dc64e[_0x1995('0x68')]);})[_0x1995('0x17')](function(_0x20de7b){_0xcef449=_0x20de7b;logger[_0x1995('0x18')](_0x1995('0x57'),_0xcef449['id']);return getTicket(_0x2625e6,_0x5abc81,_0xcef449,_0x1fb094,_0x4dc64e);})['then'](function(_0x418a3e){if(_0x418a3e){logger['info'](_0x1995('0x58'),_0x418a3e['id']);switch(_0x2625e6[_0x1995('0x47')]){case _0x1995('0x59'):logger[_0x1995('0x18')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x1995('0xc')](_0x1995('0x5b'),_0x2625e6[_0x1995('0xe')],_0x5abc81['id'],_0x418a3e['id']),'method':_0x1995('0xf')});case _0x1995('0x5c'):logger[_0x1995('0x18')](_0x1995('0x64'),_0x1995('0x69'));emit(util[_0x1995('0xc')](_0x1995('0x5d'),_0x3996c2[_0x1995('0x12')]),_0x1995('0x6a'),{'uri':util['format'](_0x1995('0x5e'),_0x2625e6['remoteUri'][_0x1995('0x6b')]('/api/v2',''),_0x418a3e['id'])});break;default:logger[_0x1995('0x60')](_0x1995('0x64'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x1995('0x61')](function(_0x8c85bf){logger[_0x1995('0x60')](_0x1995('0x6c'),util[_0x1995('0x6d')](_0x8c85bf,{'showHidden':!![],'depth':null}));});};exports[_0x1995('0x6e')]=function(_0x102977,_0x54809d,_0x2c1c33,_0x27cab,_0x3a7dc5,_0x25a5ad){var _0x122215,_0x306fe8;_0x25a5ad['remoteUri']=intUtil[_0x1995('0x4d')](_0x25a5ad[_0x1995('0xe')]);_0x25a5ad[_0x1995('0x4e')]=intUtil['stripTrailingSlash'](_0x25a5ad[_0x1995('0x4e')]);if(_0x3a7dc5&&_0x3a7dc5[_0x1995('0x4f')]){logger['info']('['+_0x54809d[_0x1995('0x6f')][_0x1995('0x70')]()+']','Recording\x20is\x20enabled!');_0x54809d[_0x1995('0x52')]=util['format'](_0x1995('0x53'),_0x25a5ad[_0x1995('0x4e')],_0x54809d['uniqueid'],md5(_0x54809d['uniqueid']));}else{_0x54809d['recordingURL']='';}headers[_0x1995('0x66')]=getAuth(_0x25a5ad);return getUser(_0x25a5ad)[_0x1995('0x17')](function(_0x5098c1){_0x122215=_0x5098c1;logger[_0x1995('0x18')](_0x1995('0x55'),_0x122215['id']);return getEndUser(_0x25a5ad,_0x54809d[_0x1995('0x56')],_0x54809d[_0x1995('0x71')]);})['then'](function(_0x2d65fb){_0x306fe8=_0x2d65fb;logger[_0x1995('0x18')](_0x1995('0x57'),_0x306fe8['id']);return getTicket(_0x25a5ad,_0x122215,_0x306fe8,_0x2c1c33,_0x54809d);})[_0x1995('0x17')](function(_0x46fd2b){if(_0x46fd2b){logger['info'](_0x1995('0x58'),_0x46fd2b['id']);}})['catch'](function(_0x5ad7d7){logger[_0x1995('0x60')]('['+_0x54809d[_0x1995('0x6f')][_0x1995('0x70')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x1995('0x6d')](_0x5ad7d7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4c04=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','[OUTBOUND]','trigger:browser:url','error','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','ioredis','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','remoteUri','POST','merge','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','info','Getting\x20agent\x20with\x20email','%s/search.json','format','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','customField','toLowerCase','idField','custom_fields','push','variable','variableName','customVariable','Variable','name','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x4c04,0x158));var _0x44c0=function(_0x52a658,_0x5e9f16){_0x52a658=_0x52a658-0x0;var _0x3b51c8=_0x4c04[_0x52a658];return _0x3b51c8;};'use strict';var _=require(_0x44c0('0x0'));var rp=require('request-promise');var md5=require(_0x44c0('0x1'));var util=require(_0x44c0('0x2'));var Redis=require(_0x44c0('0x3'));var intUtil=require('./util');var config=require(_0x44c0('0x4'));var logger=require(_0x44c0('0x5'))(_0x44c0('0x6'));config['redis']=_[_0x44c0('0x7')](config[_0x44c0('0x8')],{'host':_0x44c0('0x9'),'port':0x18eb});var io=require(_0x44c0('0xa'))(new Redis(config[_0x44c0('0x8')]));function emit(_0x638140,_0x38e755,_0x49f709){io['to'](_0x638140)[_0x44c0('0xb')](_0x38e755,_0x49f709);}var headers={'Content-Type':'application/json','Accept':_0x44c0('0xc')};function getTicket(_0x321faf,_0x43ecf1,_0x3aa34e,_0x510985,_0x5da464){logger['info'](_0x44c0('0xd'));return request({'uri':util['format']('%s/tickets.json',_0x321faf[_0x44c0('0xe')]),'method':_0x44c0('0xf'),'body':{'ticket':_[_0x44c0('0x10')]({'requester_id':_0x3aa34e['id'],'submitter_id':_0x43ecf1?_0x43ecf1['id']:undefined,'assignee_id':_0x43ecf1?_0x43ecf1['id']:undefined,'tags':getTags(_0x510985['Tags'],'name'),'subject':intUtil['getString'](_0x510985['Subjects'],_0x5da464,'\x20'),'description':intUtil[_0x44c0('0x11')](_0x510985['Descriptions'],_0x5da464,'\x0a'),'comment':{'public':![],'body':intUtil[_0x44c0('0x11')](_0x510985[_0x44c0('0x12')],_0x5da464,'\x0a')}},getCustomFields(_0x510985[_0x44c0('0x13')],_0x5da464))}})[_0x44c0('0x14')](function(_0x5effe4){logger['info'](_0x44c0('0x15'));return _0x5effe4[_0x44c0('0x16')];});}function getUser(_0x36c469,_0xca7adb){if(intUtil[_0x44c0('0x17')](_0xca7adb)){logger[_0x44c0('0x18')](_0x44c0('0x19'),_0xca7adb);return request({'uri':util['format'](_0x44c0('0x1a'),_0x36c469[_0x44c0('0xe')]),'qs':{'query':util[_0x44c0('0x1b')]('type:user\x20role:agent\x20email:%s',_0xca7adb)}})[_0x44c0('0x14')](function(_0x5f012b){if(_0x5f012b['count']){logger[_0x44c0('0x18')](_0x44c0('0x1c'));return _[_0x44c0('0x1d')](_0x5f012b[_0x44c0('0x1e')],{'email':_0xca7adb,'role':_0x44c0('0x1f')});}else{logger[_0x44c0('0x18')](_0x44c0('0x20'));return request({'uri':util['format'](_0x44c0('0x21'),_0x36c469[_0x44c0('0xe')])})['then'](function(_0x50c474){logger[_0x44c0('0x18')]('Admin\x20account\x20selected.');return _0x50c474[_0x44c0('0x22')];});}});}else{logger[_0x44c0('0x18')](_0x44c0('0x20'));return request({'uri':util['format'](_0x44c0('0x21'),_0x36c469[_0x44c0('0xe')])})[_0x44c0('0x14')](function(_0x80656){logger[_0x44c0('0x18')](_0x44c0('0x23'));return _0x80656[_0x44c0('0x22')];});}}function getEndUser(_0x34bbdb,_0x4de2dc,_0xcad5d3){logger[_0x44c0('0x18')](_0x44c0('0x24'),_0xcad5d3);return request({'uri':util[_0x44c0('0x1b')](_0x44c0('0x1a'),_0x34bbdb[_0x44c0('0xe')]),'qs':{'query':util['format'](_0x44c0('0x25'),_0xcad5d3)}})[_0x44c0('0x14')](function(_0x597c59){var _0x2de405;if(_0x597c59['results'][_0x44c0('0x26')]){_0x597c59[_0x44c0('0x1e')]=_[_0x44c0('0x27')](_0x597c59[_0x44c0('0x1e')],{'suspended':![],'role':_0x44c0('0x28')});if(_0x597c59[_0x44c0('0x1e')][_0x44c0('0x26')]){_0x2de405=_[_0x44c0('0x29')](_0x597c59[_0x44c0('0x1e')]);}}if(_0x2de405){logger['info'](_0x44c0('0x2a'));return _0x2de405;}else{logger['info'](_0x44c0('0x2b'));return request({'uri':util[_0x44c0('0x1b')](_0x44c0('0x2c'),_0x34bbdb['remoteUri']),'method':_0x44c0('0xf'),'body':{'user':{'role':'end-user','name':util[_0x44c0('0x1b')](_0x44c0('0x2d'),_0x4de2dc||_0xcad5d3),'phone':_0xcad5d3}}})[_0x44c0('0x14')](function(_0x31ff17){logger[_0x44c0('0x18')](_0x44c0('0x2e'));return _0x31ff17[_0x44c0('0x22')];});}});}function getAuth(_0x396e4){var _0x479902;if(_0x396e4[_0x44c0('0x2f')]===_0x44c0('0x30')){_0x479902=util[_0x44c0('0x1b')](_0x44c0('0x31'),_0x396e4[_0x44c0('0x32')],_0x396e4[_0x44c0('0x30')]);}else if(_0x396e4[_0x44c0('0x2f')]==='token'){_0x479902=util[_0x44c0('0x1b')](_0x44c0('0x33'),_0x396e4[_0x44c0('0x32')],_0x396e4['token']);}return util[_0x44c0('0x1b')](_0x44c0('0x34'),new Buffer(_0x479902)[_0x44c0('0x35')](_0x44c0('0x36')));}function request(_0x360c62){logger['debug'](_0x44c0('0x37'),JSON[_0x44c0('0x38')](_0x360c62));return rp(_['defaults'](_0x360c62,{'method':_0x44c0('0x39'),'headers':headers,'json':!![]}));}function getTags(_0x187ea9,_0x32d23b){var _0x175153=[];if(_0x187ea9&&_0x187ea9[_0x44c0('0x26')]>0x0){_0x175153=_['map'](_0x187ea9,_0x32d23b);}return _0x175153;}function getCustomFields(_0x426576,_0x3a85fa){var _0x5c17a6=[];var _0xce550f={'custom_fields':[]};if(_0x426576[_0x44c0('0x26')]>0x0){_[_0x44c0('0x3a')](_0x426576,function(_0x550e0a){if(_[_0x44c0('0x3b')]([_0x44c0('0x3c'),_0x44c0('0x3d')],_0x550e0a[_0x44c0('0x3e')])&&_0x550e0a['nameField']&&!_0x550e0a[_0x44c0('0x3f')]){_0xce550f[_0x550e0a['nameField'][_0x44c0('0x40')]()]=_0x550e0a['content']['toString']();}else if(_[_0x44c0('0x3b')]([_0x44c0('0x3c'),_0x44c0('0x3d')],_0x550e0a[_0x44c0('0x3e')])&&_0x550e0a[_0x44c0('0x41')]&&_0x550e0a['customField']){_0xce550f[_0x44c0('0x42')][_0x44c0('0x43')]({'id':_0x550e0a[_0x44c0('0x41')],'value':_0x550e0a['content'][_0x44c0('0x35')]()});}else if(_0x550e0a[_0x44c0('0x3e')]===_0x44c0('0x44')&&_0x550e0a[_0x44c0('0x45')]&&_0x550e0a[_0x44c0('0x41')]&&_0x550e0a[_0x44c0('0x3f')]){_0x3a85fa[_0x550e0a[_0x44c0('0x45')]]&&_0xce550f[_0x44c0('0x42')][_0x44c0('0x43')]({'id':_0x550e0a[_0x44c0('0x41')],'value':_0x3a85fa[_0x550e0a[_0x44c0('0x45')]][_0x44c0('0x35')]()});}else if(_0x550e0a[_0x44c0('0x3e')]===_0x44c0('0x46')&&_0x550e0a['Variable']&&_0x550e0a[_0x44c0('0x47')][_0x44c0('0x48')]&&_0x550e0a[_0x44c0('0x41')]&&_0x550e0a['customField']){_0x3a85fa[_0x550e0a['Variable'][_0x44c0('0x48')][_0x44c0('0x40')]()]&&_0xce550f[_0x44c0('0x42')]['push']({'id':_0x550e0a['idField'],'value':_0x3a85fa[_0x550e0a[_0x44c0('0x47')][_0x44c0('0x48')][_0x44c0('0x40')]()][_0x44c0('0x35')]()});}});}return _0xce550f;}exports['queue']=function(_0x55b79e,_0x41f784,_0x5e70d3,_0xa6b210,_0x23f537,_0x418d2f){var _0x497956,_0x1f996d;_0x418d2f['remoteUri']=intUtil[_0x44c0('0x49')](_0x418d2f[_0x44c0('0xe')]);_0x418d2f[_0x44c0('0x4a')]=intUtil[_0x44c0('0x49')](_0x418d2f[_0x44c0('0x4a')]);if(_0x23f537&&_0x23f537['monitor_format']){logger[_0x44c0('0x18')](_0x44c0('0x4b'),_0x44c0('0x4c'));_0x41f784[_0x44c0('0x4d')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x418d2f[_0x44c0('0x4a')],_0x41f784[_0x44c0('0x4e')],md5(_0x41f784[_0x44c0('0x4e')]));}else{_0x41f784['recordingURL']='';}headers[_0x44c0('0x4f')]=getAuth(_0x418d2f);return getUser(_0x418d2f,_0xa6b210[_0x44c0('0x50')])[_0x44c0('0x14')](function(_0x279b73){_0x497956=_0x279b73;logger['info']('The\x20User\x20ID\x20is:',_0x497956['id']);return getEndUser(_0x418d2f,_0x41f784[_0x44c0('0x51')],_0x41f784[_0x44c0('0x52')]);})[_0x44c0('0x14')](function(_0x226f55){_0x1f996d=_0x226f55;logger[_0x44c0('0x18')](_0x44c0('0x53'),_0x1f996d['id']);return getTicket(_0x418d2f,_0x497956,_0x1f996d,_0x5e70d3,_0x41f784);})[_0x44c0('0x14')](function(_0x6c09d3){if(_0x6c09d3){logger[_0x44c0('0x18')]('The\x20Ticket\x20ID\x20is:',_0x6c09d3['id']);switch(_0x418d2f[_0x44c0('0x3e')]){case _0x44c0('0x54'):logger[_0x44c0('0x18')](_0x44c0('0x4b'),_0x44c0('0x55'));return request({'uri':util[_0x44c0('0x1b')](_0x44c0('0x56'),_0x418d2f[_0x44c0('0xe')],_0x497956['id'],_0x6c09d3['id']),'method':_0x44c0('0xf')});case _0x44c0('0x57'):logger[_0x44c0('0x18')]('[QUEUE]',_0x44c0('0x58'));emit(util['format'](_0x44c0('0x59'),_0xa6b210[_0x44c0('0x48')]),'trigger:browser:url',{'uri':util[_0x44c0('0x1b')](_0x44c0('0x5a'),_0x418d2f[_0x44c0('0xe')][_0x44c0('0x5b')](_0x44c0('0x5c'),''),_0x6c09d3['id'])});break;default:logger['error']('[QUEUE]',_0x44c0('0x5d'));}}})[_0x44c0('0x5e')](function(_0x478cb9){logger['error'](_0x44c0('0x5f'),util[_0x44c0('0x60')](_0x478cb9,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x34dac2,_0x28b75e,_0x44c15b,_0x4bf36a,_0x15261c,_0x3079ec,_0x29d074){var _0x4d1c6e,_0x57fbd1;_0x3079ec[_0x44c0('0xe')]=intUtil[_0x44c0('0x49')](_0x3079ec[_0x44c0('0xe')]);_0x3079ec[_0x44c0('0x4a')]=intUtil[_0x44c0('0x49')](_0x3079ec[_0x44c0('0x4a')]);if(_0x29d074&&_0x29d074['recordingFormat']&&_0x29d074[_0x44c0('0x61')]!=='none'){logger[_0x44c0('0x18')]('[OUTBOUND]',_0x44c0('0x4c'));_0x28b75e[_0x44c0('0x4d')]=util[_0x44c0('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3079ec[_0x44c0('0x4a')],_0x28b75e[_0x44c0('0x4e')],md5(_0x28b75e[_0x44c0('0x4e')]));}headers[_0x44c0('0x4f')]=getAuth(_0x3079ec);return getUser(_0x3079ec,_0x4bf36a[_0x44c0('0x50')])[_0x44c0('0x14')](function(_0x1bae61){_0x4d1c6e=_0x1bae61;logger[_0x44c0('0x18')](_0x44c0('0x62'),_0x4d1c6e['id']);return getEndUser(_0x3079ec,_0x28b75e[_0x44c0('0x63')],_0x28b75e[_0x44c0('0x64')]);})[_0x44c0('0x14')](function(_0x3dcba3){_0x57fbd1=_0x3dcba3;logger[_0x44c0('0x18')](_0x44c0('0x53'),_0x57fbd1['id']);return getTicket(_0x3079ec,_0x4d1c6e,_0x57fbd1,_0x44c15b,_0x28b75e);})[_0x44c0('0x14')](function(_0x545a77){if(_0x545a77){logger[_0x44c0('0x18')]('The\x20Ticket\x20ID\x20is:',_0x545a77['id']);switch(_0x3079ec[_0x44c0('0x3e')]){case _0x44c0('0x54'):logger[_0x44c0('0x18')](_0x44c0('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x44c0('0x1b')](_0x44c0('0x56'),_0x3079ec[_0x44c0('0xe')],_0x4d1c6e['id'],_0x545a77['id']),'method':'POST'});case'newTab':logger[_0x44c0('0x18')]('[OUTBOUND]',_0x44c0('0x58'));emit(util[_0x44c0('0x1b')](_0x44c0('0x59'),_0x4bf36a['name']),_0x44c0('0x66'),{'uri':util[_0x44c0('0x1b')]('%s/agent/tickets/%s',_0x3079ec[_0x44c0('0xe')]['replace']('/api/v2',''),_0x545a77['id'])});break;default:logger[_0x44c0('0x67')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x44c0('0x5e')](function(_0x2e16f0){logger[_0x44c0('0x67')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x44c0('0x60')](_0x2e16f0,{'showHidden':!![],'depth':null}));});};exports[_0x44c0('0x68')]=function(_0x554a81,_0x324ec1,_0x1851d9,_0x1a13b5,_0x1f7816,_0xa84c40){var _0x12dcf,_0x9ad90b;_0xa84c40[_0x44c0('0xe')]=intUtil[_0x44c0('0x49')](_0xa84c40[_0x44c0('0xe')]);_0xa84c40[_0x44c0('0x4a')]=intUtil[_0x44c0('0x49')](_0xa84c40[_0x44c0('0x4a')]);if(_0x1f7816&&_0x1f7816['monitor_format']){logger[_0x44c0('0x18')]('['+_0x324ec1[_0x44c0('0x69')][_0x44c0('0x6a')]()+']',_0x44c0('0x4c'));_0x324ec1[_0x44c0('0x4d')]=util[_0x44c0('0x1b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xa84c40['serverUrl'],_0x324ec1[_0x44c0('0x4e')],md5(_0x324ec1[_0x44c0('0x4e')]));}else{_0x324ec1[_0x44c0('0x4d')]='';}headers[_0x44c0('0x4f')]=getAuth(_0xa84c40);return getUser(_0xa84c40)[_0x44c0('0x14')](function(_0x2cf336){_0x12dcf=_0x2cf336;logger[_0x44c0('0x18')](_0x44c0('0x62'),_0x12dcf['id']);return getEndUser(_0xa84c40,_0x324ec1[_0x44c0('0x51')],_0x324ec1['calleridnum']);})[_0x44c0('0x14')](function(_0x4a0a84){_0x9ad90b=_0x4a0a84;logger[_0x44c0('0x18')](_0x44c0('0x53'),_0x9ad90b['id']);return getTicket(_0xa84c40,_0x12dcf,_0x9ad90b,_0x1851d9,_0x324ec1);})[_0x44c0('0x14')](function(_0x541620){if(_0x541620){logger[_0x44c0('0x18')]('The\x20Ticket\x20ID\x20is:',_0x541620['id']);}})['catch'](function(_0x11d7f1){logger[_0x44c0('0x67')]('['+_0x324ec1['lastevent']['toUpperCase']()+']'+_0x44c0('0x6b'),util[_0x44c0('0x60')](_0x11d7f1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 87e67c6..6ddfbae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x518b=['catch','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','users','isArrayLikeObject','findIndex','info','Using\x20the\x20admin\x20account!','Administrator','user','profile','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','POST','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','SUCCESS','data','The\x20failing\x20result\x20is','Error:\x20','log','CREATE\x20ERROR','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','lead','Owner','administrator','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','called','Call_Result','Called','complete','connect','Answered','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','starttime','agentcalledAt','Inbound','merge','Fields','Call\x20created!','details','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Outbound','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','unmanaged','lastevent','toUpperCase','calleridnum','lodash','request-promise','md5','util','moment','ioredis','../../../../config/environment','zoho','redis','socket.io-emitter','emit','debug','[HTTP]','stringify','length','string','picklist','type','idField','toString','variable','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds'];(function(_0x2e54ab,_0x1d286f){var _0x16cacc=function(_0x3e004e){while(--_0x3e004e){_0x2e54ab['push'](_0x2e54ab['shift']());}};_0x16cacc(++_0x1d286f);}(_0x518b,0x6e));var _0xb518=function(_0x594497,_0x3a4774){_0x594497=_0x594497-0x0;var _0x58a661=_0x518b[_0x594497];return _0x58a661;};'use strict';var _=require(_0xb518('0x0'));var rp=require(_0xb518('0x1'));var md5=require(_0xb518('0x2'));var util=require(_0xb518('0x3'));var intUtil=require('./util');var moment=require(_0xb518('0x4'));var Redis=require(_0xb518('0x5'));var BPromise=require('bluebird');var config=require(_0xb518('0x6'));var logger=require('../../../../config/logger')(_0xb518('0x7'));config[_0xb518('0x8')]=_['defaults'](config[_0xb518('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xb518('0x9'))(new Redis(config[_0xb518('0x8')]));function emit(_0x5362b6,_0x1b2deb,_0x1a58f0){io['to'](_0x5362b6)[_0xb518('0xa')](_0x1b2deb,_0x1a58f0);}function request(_0x23f0ba){logger[_0xb518('0xb')](_0xb518('0xc'),JSON[_0xb518('0xd')](_0x23f0ba));return rp(_0x23f0ba);}function getCustomFields(_0x4da300,_0x4133f8){var _0x498ba4={};if(_0x4da300[_0xb518('0xe')]>0x0){_['forEach'](_0x4da300,function(_0x1d07bc){if(_['includes']([_0xb518('0xf'),_0xb518('0x10')],_0x1d07bc[_0xb518('0x11')])&&_0x1d07bc[_0xb518('0x12')]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x1d07bc['content'][_0xb518('0x13')]();}else if(_0x1d07bc['type']===_0xb518('0x14')&&_0x1d07bc['variableName']&&_0x1d07bc[_0xb518('0x12')]&&_0x4133f8[_0x1d07bc[_0xb518('0x15')]]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x4133f8[_0x1d07bc[_0xb518('0x15')]][_0xb518('0x13')]();}else if(_0x1d07bc['type']==='customVariable'&&_0x1d07bc[_0xb518('0x16')]&&_0x1d07bc[_0xb518('0x16')][_0xb518('0x17')]&&_0x1d07bc[_0xb518('0x12')]&&_0x4133f8[_0x1d07bc[_0xb518('0x16')][_0xb518('0x17')]['toLowerCase']()]){_0x498ba4[_0x1d07bc[_0xb518('0x12')]]=_0x4133f8[_0x1d07bc[_0xb518('0x16')]['name'][_0xb518('0x18')]()][_0xb518('0x13')]();}});}return _0x498ba4;}function getName(_0x8a7e19){if(_0x8a7e19[_0xb518('0x19')]('\x20')>0x0){var _0x106ea9=_0x8a7e19[_0xb518('0x1a')](/ (.+)/);if(_0x106ea9[0x1]){return _0x106ea9;}}return[_0x8a7e19,_0x8a7e19];}var accountsTokens={};function getAccessToken(_0x116fd4){return new Promise(function(_0x32078a,_0x2071a9){if(!_['isNil'](accountsTokens[_0x116fd4['id']])&&!_[_0xb518('0x1b')](accountsTokens[_0x116fd4['id']][_0xb518('0x1c')])){if(moment()[_0xb518('0x1d')](accountsTokens[_0x116fd4['id']][_0xb518('0x1e')])){_0x32078a(accountsTokens[_0x116fd4['id']]['access_token']);}}var _0x5d960c;switch(_0x116fd4[_0xb518('0x1f')]){case'US':_0x5d960c=_0xb518('0x20');break;case'AU':_0x5d960c=_0xb518('0x21');break;case'EU':_0x5d960c=_0xb518('0x22');break;case'IN':_0x5d960c='https://accounts.zoho.in';break;case'CN':_0x5d960c=_0xb518('0x23');break;default:_0x5d960c=_0xb518('0x22');break;}var _0x263e2b={'method':'POST','uri':_0x5d960c+_0xb518('0x24'),'qs':{'refresh_token':_0x116fd4[_0xb518('0x25')],'client_id':_0x116fd4[_0xb518('0x26')],'client_secret':_0x116fd4[_0xb518('0x27')],'grant_type':_0xb518('0x28')},'json':!![]};return rp(_0x263e2b)[_0xb518('0x29')](function(_0x2473a7){accountsTokens[_0x116fd4['id']]={'access_token':_0x2473a7[_0xb518('0x1c')],'expires_in':moment()[_0xb518('0x2a')](_0x2473a7[_0xb518('0x1e')],_0xb518('0x2b'))};_0x32078a(_0x2473a7[_0xb518('0x1c')]);})[_0xb518('0x2c')](function(_0xd51756){logger[_0xb518('0x2d')](_0xb518('0x2e'),_0xd51756[_0xb518('0x2f')]);_0x2071a9(_0xd51756);});});}function getUser(_0x4c408b,_0x3cda64,_0x3200c8,_0x366b18){logger['info'](_0xb518('0x30'));return request({'method':_0xb518('0x31'),'uri':util[_0xb518('0x32')](_0xb518('0x33'),_0x3cda64),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4c408b},'json':!![]})[_0xb518('0x29')](function(_0x3956e4){if(_0x3956e4[_0xb518('0x34')]){var _0x879918=-0x1;if(_[_0xb518('0x35')](_0x3956e4['users'])){if(!_[_0xb518('0x1b')](_0x366b18)){_0x879918=_[_0xb518('0x36')](_0x3956e4['users'],function(_0x4281eb){return _0x4281eb['email']===_0x366b18;});}if(_0x879918>=0x0){logger[_0xb518('0x37')]('Agent\x20found!');}else{logger[_0xb518('0x37')](_0xb518('0x38'));_0x879918=_[_0xb518('0x36')](_0x3956e4[_0xb518('0x34')],function(_0x189eb1){return _0x189eb1['profile'][_0xb518('0x17')]===_0xb518('0x39');});}return _0x3956e4[_0xb518('0x34')][_0x879918];}else{if(_0x3956e4[_0xb518('0x3a')][_0xb518('0x3b')][_0xb518('0x17')]==='Administrator'){logger['info'](_0xb518('0x38'));user=_0x3956e4[_0xb518('0x3a')];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0xb518('0xd')](_0x3956e4));throw new Error(_0xb518('0x3c')+JSON[_0xb518('0xd')](_0x3956e4));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x3956e4));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xb518('0xd')](_0x3956e4));}})['catch'](function(_0x40517f){console[_0xb518('0x2d')](_0x40517f);});}function getZohoUser(_0x352f24,_0x5b6c24){return new BPromise(function(_0x1e774b,_0x2ad332){request(_0x352f24)[_0xb518('0x29')](function(_0x301a56){var _0x2338d2=null;if(_0x301a56){_0x2338d2=_0x301a56['data'][0x0];_0x2338d2[_0xb518('0x3d')]=_0x5b6c24;}_0x1e774b(_0x2338d2);})[_0xb518('0x2c')](function(_0x582042){_0x2ad332(_0x582042);});});}function createEndUser(_0x29944b,_0x329d31,_0x17316c,_0x5d9cd4,_0x15a9c5,_0x1eaba7){var _0x17316c=getName(_0x17316c);return request({'method':_0xb518('0x3e'),'uri':_0xb518('0x3f')+_0x329d31+'/crm/v2/'+_[_0xb518('0x40')](_0x1eaba7[_0xb518('0x41')])+'s','body':{'data':[{'Last_Name':_0x17316c[0x1],'First_Name':_0x17316c[0x0],'Phone':_0x5d9cd4,'Owner':{'name':!_[_0xb518('0x1b')](_0x15a9c5[_0xb518('0x42')][_0xb518('0x17')])?_0x15a9c5[_0xb518('0x42')]['name']:!_['isNil'](_0x15a9c5[_0xb518('0x43')])?_0x15a9c5[_0xb518('0x43')]+'\x20'+_0x15a9c5[_0xb518('0x44')]:_0x15a9c5[_0xb518('0x44')],'id':_0x15a9c5['id']}}]},'headers':{'Authorization':_0xb518('0x45')+_0x29944b},'json':!![]})['then'](function(_0x51dd9f){if(_0x51dd9f&&_0x51dd9f['data'][0x0][_0xb518('0x46')]===_0xb518('0x47')){var _0x23d0a6=_0x51dd9f[_0xb518('0x48')][0x0]['details'];_0x23d0a6[_0xb518('0x3d')]=_[_0xb518('0x40')](_0x1eaba7[_0xb518('0x41')])+'s';return _0x23d0a6;}logger[_0xb518('0x2d')](_0xb518('0x49'),JSON[_0xb518('0xd')](data));throw new Error(_0xb518('0x4a')+JSON[_0xb518('0xd')](data));})[_0xb518('0x2c')](function(_0x8ad7e2){console[_0xb518('0x4b')](_0xb518('0x4c'),_0x8ad7e2);});}function getEndUser(_0x23a583,_0x426837,_0x8aadef,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76){var _0x2a4570={'method':_0xb518('0x31'),'uri':'','headers':{'Authorization':_0xb518('0x45')+_0x23a583},'json':!![]};switch(_0x2aed76['moduleSearch']){case'contact_lead':_0x2a4570['uri']=_0xb518('0x3f')+_0x426837+_0xb518('0x4d')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x4e'))['then'](function(_0x1fae6a){if(_0x1fae6a)return _0x1fae6a;_0x2a4570[_0xb518('0x4f')]=_0xb518('0x3f')+_0x426837+_0xb518('0x50')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x51'))[_0xb518('0x29')](function(_0x56882d){if(_0x56882d)return _0x56882d;if(_0x2aed76[_0xb518('0x41')]!='nothing'){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});});break;case _0xb518('0x52'):_0x2a4570[_0xb518('0x4f')]='https://www.zohoapis.'+_0x426837+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x4e'))['then'](function(_0x3e1f91){if(_0x3e1f91)return _0x3e1f91;if(_0x2aed76[_0xb518('0x41')]!=_0xb518('0x53')){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});break;case _0xb518('0x54'):_0x2a4570[_0xb518('0x4f')]=_0xb518('0x3f')+_0x426837+_0xb518('0x50')+_0x592867+'))';return getZohoUser(_0x2a4570,_0xb518('0x51'))[_0xb518('0x29')](function(_0xf8c80b){if(_0xf8c80b)return _0xf8c80b;if(_0x2aed76[_0xb518('0x41')]!='nothing'){return createEndUser(_0x23a583,_0x426837,_0x1eb0a9,_0x592867,_0x3d8f77,_0x2aed76);}else{return{};}});break;}}function getCall(_0x3587e9,_0x375316,_0x4d3aea,_0x4f868b,_0xc62596,_0x163e1e,_0x154104,_0x3f23b5){logger[_0xb518('0x37')]('Creating\x20new\x20call...');var _0x5a98b9={};_0x5a98b9[_0xb518('0x55')]={'name':!_[_0xb518('0x1b')](_0x4f868b[_0xb518('0x42')][_0xb518('0x17')])&&!_['isNil'](_0x4f868b['profile'][_0xb518('0x17')])&&_0x4f868b['profile'][_0xb518('0x17')]===_0xb518('0x56')?_0x4f868b[_0xb518('0x42')][_0xb518('0x17')]:!_['isNil'](_0x4f868b[_0xb518('0x43')])?_0x4f868b[_0xb518('0x43')]+'\x20'+_0x4f868b['last_name']:_0x4f868b[_0xb518('0x44')],'id':_0x4f868b['id']};_0x5a98b9['Subject']=intUtil[_0xb518('0x57')](_0x163e1e[_0xb518('0x58')],_0x154104,'\x20');_0x5a98b9[_0xb518('0x59')]=intUtil['getString'](_0x163e1e[_0xb518('0x5a')],_0x154104,'\x0a');if(_0xc62596[_0xb518('0x3d')]===_0xb518('0x4e')){_0x5a98b9[_0xb518('0x5b')]={'name':!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5c')])?_0xc62596['Full_Name']:!_['isNil'](_0xc62596[_0xb518('0x5d')])?_0xc62596['First_Name']+'\x20'+_0xc62596[_0xb518('0x5e')]:_0xc62596[_0xb518('0x5e')],'id':_0xc62596['id']};}if(_0xc62596[_0xb518('0x3d')]===_0xb518('0x51')){_0x5a98b9[_0xb518('0x5f')]={'name':!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5c')])?_0xc62596[_0xb518('0x5c')]:!_[_0xb518('0x1b')](_0xc62596[_0xb518('0x5d')])?_0xc62596[_0xb518('0x5d')]+'\x20'+_0xc62596[_0xb518('0x5e')]:_0xc62596['Last_Name'],'id':_0xc62596['id']};_0x5a98b9[_0xb518('0x60')]=_[_0xb518('0x40')](_0xc62596[_0xb518('0x3d')]);}if(_0x154104[_0xb518('0x61')]){_0x5a98b9[_0xb518('0x62')]=moment[_0xb518('0x63')](parseInt(_0x154104[_0xb518('0x61')])*0x3e8)[_0xb518('0x32')](_0xb518('0x64'));}else if(_0x154104[_0xb518('0x65')]&&_0x154104[_0xb518('0x66')]){_0x5a98b9[_0xb518('0x62')]=moment[_0xb518('0x63')](moment(_0x154104[_0xb518('0x66')],_0xb518('0x67'))[_0xb518('0x68')](moment(_0x154104['starttime'],_0xb518('0x67'))))[_0xb518('0x32')](_0xb518('0x64'));}switch(_0x154104['lastevent']){case _0xb518('0x69'):_0x5a98b9[_0xb518('0x6a')]=_0xb518('0x6b');break;case _0xb518('0x6c'):case _0xb518('0x6d'):_0x5a98b9['Call_Result']=_0xb518('0x6e');break;case'rejected':_0x5a98b9[_0xb518('0x6a')]=_0xb518('0x6f');break;case _0xb518('0x70'):_0x5a98b9['Call_Result']=_0xb518('0x71');break;case _0xb518('0x72'):_0x5a98b9[_0xb518('0x6a')]='Timeout';default:}_0x5a98b9[_0xb518('0x73')]=(_0x3f23b5===_0xb518('0x74')?moment(_0x154104[_0xb518('0x75')])[_0xb518('0x32')](_0xb518('0x67')):moment(_0x154104[_0xb518('0x76')])['format'](_0xb518('0x67')))||moment()[_0xb518('0x32')]('YYYY-MM-DDTHH:mm:ss');_0x5a98b9['Call_Type']=_0x3f23b5||_0xb518('0x77');_0x5a98b9=_[_0xb518('0x78')](_0x5a98b9,getCustomFields(_0x163e1e[_0xb518('0x79')],_0x154104));return request({'method':'POST','uri':_0xb518('0x3f')+_0x375316+'/crm/v2/Calls','headers':{'Authorization':_0xb518('0x45')+_0x3587e9},'body':{'data':[_0x5a98b9]},'json':!![]})[_0xb518('0x29')](function(_0x433010){if(_0x433010&&_0x433010[_0xb518('0x48')][0x0][_0xb518('0x46')]==='SUCCESS'){logger['info'](_0xb518('0x7a'));return{'id':_0x433010[_0xb518('0x48')][0x0][_0xb518('0x7b')]['id']};}})[_0xb518('0x2c')](function(_0x5e1d60){logger[_0xb518('0x37')](_0xb518('0x7c'),_0x5e1d60[_0xb518('0x2f')]);console[_0xb518('0x4b')](_0xb518('0x7c'),_0x5e1d60);});}exports[_0xb518('0x7d')]=function(_0x27b8b9,_0x2e474f,_0x3e213b,_0x556b53,_0x273fc2,_0x4c954e){var _0x4fb715,_0xec58e6,_0x2b8fa6;_0x4c954e[_0xb518('0x7e')]=intUtil[_0xb518('0x7f')](_0x4c954e[_0xb518('0x7e')]);_0x4c954e[_0xb518('0x80')]=intUtil['stripTrailingSlash'](_0x4c954e[_0xb518('0x80')]);if(_0x273fc2&&_0x273fc2[_0xb518('0x81')]){logger['info'](_0xb518('0x82'),_0xb518('0x83'));_0x2e474f[_0xb518('0x84')]=_0x4c954e['serverUrl']+_0xb518('0x85')+_0x2e474f[_0xb518('0x86')]+_0xb518('0x87')+md5(_0x2e474f[_0xb518('0x86')]);}else{_0x2e474f[_0xb518('0x84')]='';}var _0x1b3648=_0x4c954e[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x4c954e)['then'](function(_0x584d78){_0x2b8fa6=_0x584d78;return getUser(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x556b53[_0xb518('0x8a')]);})['then'](function(_0x212e8b){_0x4fb715=_0x212e8b;logger[_0xb518('0x37')](_0xb518('0x8b'),_0x4fb715['id']);return getEndUser(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x2e474f[_0xb518('0x8c')],_0x2e474f['calleridnum'],_0x4fb715,_0x3e213b);})[_0xb518('0x29')](function(_0x37db96){_0xec58e6=_0x37db96;return getCall(_0x2b8fa6,_0x1b3648,_0x4c954e,_0x4fb715,_0xec58e6,_0x3e213b,_0x2e474f,_0xb518('0x77'));})[_0xb518('0x29')](function(_0x322c41){if(_0x322c41){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x322c41['id']);logger['info'](_0xb518('0x82'),_0xb518('0x8e'));emit(util['format'](_0xb518('0x8f'),_0x556b53[_0xb518('0x17')]),'trigger:browser:url',{'uri':'https://crm.'+_0x4c954e[_0xb518('0x7e')]+'/crm/EntityInfo.do?module=Calls&id='+_0x322c41['id']});}})[_0xb518('0x2c')](function(_0x38b233){logger[_0xb518('0x2d')](_0xb518('0x82'),JSON[_0xb518('0xd')](_0x38b233));});};exports[_0xb518('0x74')]=function(_0x5287a2,_0x23693b,_0x4bb82d,_0x5e9f17,_0x5ac8df,_0x106ea1,_0x5dc154){var _0xc2c389,_0x23983c,_0x3b803a;_0x106ea1[_0xb518('0x7e')]=intUtil['stripTrailingSlash'](_0x106ea1[_0xb518('0x7e')]);_0x106ea1['serverUrl']=intUtil[_0xb518('0x7f')](_0x106ea1['serverUrl']);if(_0x5dc154&&_0x5dc154[_0xb518('0x90')]&&_0x5dc154[_0xb518('0x90')]!==_0xb518('0x91')){logger[_0xb518('0x37')](_0xb518('0x92'),_0xb518('0x83'));_0x23693b[_0xb518('0x84')]=_0x106ea1[_0xb518('0x80')]+_0xb518('0x85')+_0x23693b['uniqueid']+_0xb518('0x87')+md5(_0x23693b[_0xb518('0x86')]);}var _0x9b4fac=_0x106ea1[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x106ea1)['then'](function(_0x5f4439){_0x3b803a=_0x5f4439;return getUser(_0x3b803a,_0x9b4fac,_0x106ea1,_0x5e9f17[_0xb518('0x8a')]);})[_0xb518('0x29')](function(_0x5d4d7d){_0xc2c389=_0x5d4d7d;logger[_0xb518('0x37')](_0xb518('0x8b'),_0xc2c389['id']);return getEndUser(_0x3b803a,_0x9b4fac,_0x106ea1,_0x23693b['destcalleridname'],_0x23693b['destcalleridnum'],_0xc2c389,_0x4bb82d);})[_0xb518('0x29')](function(_0x513fb7){_0x23983c=_0x513fb7;return getCall(_0x3b803a,_0x9b4fac,_0x106ea1,_0xc2c389,_0x23983c,_0x4bb82d,_0x23693b,_0xb518('0x93'));})[_0xb518('0x29')](function(_0x1a73ca){if(_0x1a73ca){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x1a73ca['id']);logger[_0xb518('0x37')](_0xb518('0x92'),_0xb518('0x8e'));emit(util[_0xb518('0x32')](_0xb518('0x8f'),_0x5e9f17[_0xb518('0x17')]),_0xb518('0x94'),{'uri':'https://crm.'+_0x106ea1[_0xb518('0x7e')]+_0xb518('0x95')+_0x1a73ca['id']});}})['catch'](function(_0x4c7ff3){logger[_0xb518('0x2d')]('[OUTBOUND]',JSON[_0xb518('0xd')](_0x4c7ff3));});};exports[_0xb518('0x96')]=function(_0x144c57,_0x504c0c,_0x3c3d3f,_0x157c36,_0xdfefbe,_0x5ce8c7){var _0x59ab01,_0x17e8b3,_0x6f9651;_0x5ce8c7[_0xb518('0x7e')]=intUtil[_0xb518('0x7f')](_0x5ce8c7[_0xb518('0x7e')]);_0x5ce8c7['serverUrl']=intUtil['stripTrailingSlash'](_0x5ce8c7['serverUrl']);if(_0xdfefbe&&_0xdfefbe[_0xb518('0x81')]){logger[_0xb518('0x37')]('['+_0x504c0c[_0xb518('0x97')][_0xb518('0x98')]()+']','Recording\x20is\x20enabled!');_0x504c0c[_0xb518('0x84')]=_0x5ce8c7['serverUrl']+_0xb518('0x85')+_0x504c0c[_0xb518('0x86')]+_0xb518('0x87')+md5(_0x504c0c[_0xb518('0x86')]);}else{_0x504c0c['recordingURL']='';}var _0x283f66=_0x5ce8c7[_0xb518('0x7e')]===_0xb518('0x88')?'eu':_0xb518('0x89');return getAccessToken(_0x5ce8c7)['then'](function(_0x17506a){_0x6f9651=_0x17506a;return getUser(_0x6f9651,_0x283f66,_0x5ce8c7);})['then'](function(_0x6cf0ff){_0x59ab01=_0x6cf0ff;logger[_0xb518('0x37')](_0xb518('0x8b'),_0x59ab01['id']);return getEndUser(_0x6f9651,_0x283f66,_0x5ce8c7,_0x504c0c[_0xb518('0x8c')],_0x504c0c[_0xb518('0x99')],_0x59ab01,_0x3c3d3f);})['then'](function(_0x27a6d5){_0x17e8b3=_0x27a6d5;return getCall(_0x6f9651,_0x283f66,_0x5ce8c7,_0x59ab01,_0x17e8b3,_0x3c3d3f,_0x504c0c,'Inbound');})['then'](function(_0x2477b1){if(_0x2477b1){logger[_0xb518('0x37')](_0xb518('0x8d'),_0x2477b1['id']);}})[_0xb518('0x2c')](function(_0x5df692){logger[_0xb518('0x2d')]('['+_0x504c0c[_0xb518('0x97')][_0xb518('0x98')]()+']',JSON[_0xb518('0xd')](_0x5df692));});};
\ No newline at end of file
+var _0xabed=['Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','Outbound','unmanaged','lastevent','toUpperCase','lodash','request-promise','./util','moment','ioredis','bluebird','zoho','redis','localhost','socket.io-emitter','debug','length','forEach','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','isBefore','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','expires_in','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','data','enduserType','catch','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','code','details','Error:\x20','Zoho-oauthtoken\x20','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','lead','nothing','Owner','administrator','getString','Subjects','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','mm:ss','answertime','endtime','utc','YYYY-MM-DDTHH:mm:ss','diff','Call_Result','Called','connect','rejected','abandoned','Abandoned','Timeout','Call_Start_Time','outbound','starttime','agentcalledAt','Call_Type','Inbound','Fields','/crm/v2/Calls','err','log','queue','host','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:'];(function(_0x435627,_0x38cd99){var _0x152052=function(_0x48e1c1){while(--_0x48e1c1){_0x435627['push'](_0x435627['shift']());}};_0x152052(++_0x38cd99);}(_0xabed,0xa4));var _0xdabe=function(_0xea35d1,_0x302471){_0xea35d1=_0xea35d1-0x0;var _0x1d7a7c=_0xabed[_0xea35d1];return _0x1d7a7c;};'use strict';var _=require(_0xdabe('0x0'));var rp=require(_0xdabe('0x1'));var md5=require('md5');var util=require('util');var intUtil=require(_0xdabe('0x2'));var moment=require(_0xdabe('0x3'));var Redis=require(_0xdabe('0x4'));var BPromise=require(_0xdabe('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xdabe('0x6'));config[_0xdabe('0x7')]=_['defaults'](config['redis'],{'host':_0xdabe('0x8'),'port':0x18eb});var io=require(_0xdabe('0x9'))(new Redis(config[_0xdabe('0x7')]));function emit(_0x1912d8,_0x64109a,_0x5bac26){io['to'](_0x1912d8)['emit'](_0x64109a,_0x5bac26);}function request(_0xc5904f){logger[_0xdabe('0xa')]('[HTTP]',JSON['stringify'](_0xc5904f));return rp(_0xc5904f);}function getCustomFields(_0x1304d8,_0x25567b){var _0x5ade27={};if(_0x1304d8[_0xdabe('0xb')]>0x0){_[_0xdabe('0xc')](_0x1304d8,function(_0x20db16){if(_['includes']([_0xdabe('0xd'),_0xdabe('0xe')],_0x20db16['type'])&&_0x20db16[_0xdabe('0xf')]){_0x5ade27[_0x20db16[_0xdabe('0xf')]]=_0x20db16[_0xdabe('0x10')][_0xdabe('0x11')]();}else if(_0x20db16['type']===_0xdabe('0x12')&&_0x20db16[_0xdabe('0x13')]&&_0x20db16[_0xdabe('0xf')]&&_0x25567b[_0x20db16[_0xdabe('0x13')]]){_0x5ade27[_0x20db16[_0xdabe('0xf')]]=_0x25567b[_0x20db16[_0xdabe('0x13')]]['toString']();}else if(_0x20db16['type']===_0xdabe('0x14')&&_0x20db16[_0xdabe('0x15')]&&_0x20db16[_0xdabe('0x15')][_0xdabe('0x16')]&&_0x20db16[_0xdabe('0xf')]&&_0x25567b[_0x20db16[_0xdabe('0x15')][_0xdabe('0x16')][_0xdabe('0x17')]()]){_0x5ade27[_0x20db16[_0xdabe('0xf')]]=_0x25567b[_0x20db16[_0xdabe('0x15')]['name'][_0xdabe('0x17')]()][_0xdabe('0x11')]();}});}return _0x5ade27;}function getName(_0x12bf53){if(_0x12bf53[_0xdabe('0x18')]('\x20')>0x0){var _0x39172b=_0x12bf53[_0xdabe('0x19')](/ (.+)/);if(_0x39172b[0x1]){return _0x39172b;}}return[_0x12bf53,_0x12bf53];}var accountsTokens={};function getAccessToken(_0x5c5879){return new Promise(function(_0x395d97,_0x2fe0ea){if(!_[_0xdabe('0x1a')](accountsTokens[_0x5c5879['id']])&&!_[_0xdabe('0x1a')](accountsTokens[_0x5c5879['id']]['access_token'])){if(moment()[_0xdabe('0x1b')](accountsTokens[_0x5c5879['id']]['expires_in'])){_0x395d97(accountsTokens[_0x5c5879['id']][_0xdabe('0x1c')]);}}var _0x555b2a;switch(_0x5c5879[_0xdabe('0x1d')]){case'US':_0x555b2a=_0xdabe('0x1e');break;case'AU':_0x555b2a=_0xdabe('0x1f');break;case'EU':_0x555b2a=_0xdabe('0x20');break;case'IN':_0x555b2a=_0xdabe('0x21');break;case'CN':_0x555b2a=_0xdabe('0x22');break;default:_0x555b2a=_0xdabe('0x20');break;}var _0x26c824={'method':_0xdabe('0x23'),'uri':_0x555b2a+'/oauth/v2/token','qs':{'refresh_token':_0x5c5879[_0xdabe('0x24')],'client_id':_0x5c5879[_0xdabe('0x25')],'client_secret':_0x5c5879[_0xdabe('0x26')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x26c824)['then'](function(_0x3a585c){accountsTokens[_0x5c5879['id']]={'access_token':_0x3a585c['access_token'],'expires_in':moment()['add'](_0x3a585c[_0xdabe('0x27')],'seconds')};_0x395d97(_0x3a585c[_0xdabe('0x1c')]);})['catch'](function(_0x46be3b){logger[_0xdabe('0x28')](_0xdabe('0x29'),_0x46be3b[_0xdabe('0x2a')]);_0x2fe0ea(_0x46be3b);});});}function getUser(_0x13eddd,_0x10ecf5,_0x4bac16,_0x28888a){logger[_0xdabe('0x2b')](_0xdabe('0x2c'));return request({'method':_0xdabe('0x2d'),'uri':util[_0xdabe('0x2e')](_0xdabe('0x2f'),_0x10ecf5),'qs':{'type':_0xdabe('0x30')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x13eddd},'json':!![]})['then'](function(_0x48a8af){if(_0x48a8af[_0xdabe('0x31')]){var _0x5e0d1d=-0x1;if(_[_0xdabe('0x32')](_0x48a8af[_0xdabe('0x31')])){if(!_[_0xdabe('0x1a')](_0x28888a)){_0x5e0d1d=_[_0xdabe('0x33')](_0x48a8af[_0xdabe('0x31')],function(_0x20f187){return _0x20f187['email']===_0x28888a;});}if(_0x5e0d1d>=0x0){logger[_0xdabe('0x2b')](_0xdabe('0x34'));}else{logger[_0xdabe('0x2b')](_0xdabe('0x35'));_0x5e0d1d=_[_0xdabe('0x33')](_0x48a8af[_0xdabe('0x31')],function(_0x50f461){return _0x50f461[_0xdabe('0x36')][_0xdabe('0x16')]==='Administrator';});}return _0x48a8af[_0xdabe('0x31')][_0x5e0d1d];}else{if(_0x48a8af[_0xdabe('0x37')][_0xdabe('0x36')][_0xdabe('0x16')]==='Administrator'){logger[_0xdabe('0x2b')]('Using\x20the\x20admin\x20account!');user=_0x48a8af[_0xdabe('0x37')];return user;}else{logger[_0xdabe('0x28')](_0xdabe('0x38'),JSON[_0xdabe('0x39')](_0x48a8af));throw new Error(_0xdabe('0x3a')+JSON[_0xdabe('0x39')](_0x48a8af));}}}else{logger[_0xdabe('0x28')](_0xdabe('0x38'),JSON['stringify'](_0x48a8af));throw new Error(_0xdabe('0x3a')+JSON[_0xdabe('0x39')](_0x48a8af));}})['catch'](function(_0x20515b){console['error'](_0x20515b);});}function getZohoUser(_0x1ce28d,_0x16ea52){return new BPromise(function(_0x143d38,_0xe07ec6){request(_0x1ce28d)[_0xdabe('0x3b')](function(_0x48e197){var _0x5bf390=null;if(_0x48e197){_0x5bf390=_0x48e197[_0xdabe('0x3c')][0x0];_0x5bf390[_0xdabe('0x3d')]=_0x16ea52;}_0x143d38(_0x5bf390);})[_0xdabe('0x3e')](function(_0x41dad2){_0xe07ec6(_0x41dad2);});});}function createEndUser(_0x2c7121,_0x5c62c7,_0x1dd13b,_0x211aeb,_0x3e8ae0,_0x647f58){var _0x1dd13b=getName(_0x1dd13b);return request({'method':'POST','uri':_0xdabe('0x3f')+_0x5c62c7+'/crm/v2/'+_[_0xdabe('0x40')](_0x647f58[_0xdabe('0x41')])+'s','body':{'data':[{'Last_Name':_0x1dd13b[0x1],'First_Name':_0x1dd13b[0x0],'Phone':_0x211aeb,'Owner':{'name':!_[_0xdabe('0x1a')](_0x3e8ae0['role'][_0xdabe('0x16')])?_0x3e8ae0[_0xdabe('0x42')][_0xdabe('0x16')]:!_['isNil'](_0x3e8ae0[_0xdabe('0x43')])?_0x3e8ae0[_0xdabe('0x43')]+'\x20'+_0x3e8ae0[_0xdabe('0x44')]:_0x3e8ae0[_0xdabe('0x44')],'id':_0x3e8ae0['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2c7121},'json':!![]})[_0xdabe('0x3b')](function(_0x6ca472){if(_0x6ca472&&_0x6ca472[_0xdabe('0x3c')][0x0][_0xdabe('0x45')]==='SUCCESS'){var _0x389fbe=_0x6ca472[_0xdabe('0x3c')][0x0][_0xdabe('0x46')];_0x389fbe[_0xdabe('0x3d')]=_[_0xdabe('0x40')](_0x647f58[_0xdabe('0x41')])+'s';return _0x389fbe;}logger[_0xdabe('0x28')](_0xdabe('0x38'),JSON['stringify'](data));throw new Error(_0xdabe('0x47')+JSON[_0xdabe('0x39')](data));})[_0xdabe('0x3e')](function(_0x1701cf){console['log']('CREATE\x20ERROR',_0x1701cf);});}function getEndUser(_0xc55dd1,_0x49f700,_0x41e135,_0xbd0db9,_0x1c5e0c,_0x5c937a,_0x2a24b0){var _0x91e305={'method':_0xdabe('0x2d'),'uri':'','headers':{'Authorization':_0xdabe('0x48')+_0xc55dd1},'json':!![]};switch(_0x2a24b0[_0xdabe('0x49')]){case _0xdabe('0x4a'):_0x91e305[_0xdabe('0x4b')]=_0xdabe('0x3f')+_0x49f700+_0xdabe('0x4c')+_0x1c5e0c+'))';return getZohoUser(_0x91e305,_0xdabe('0x4d'))['then'](function(_0x27aba5){if(_0x27aba5)return _0x27aba5;_0x91e305['uri']=_0xdabe('0x3f')+_0x49f700+_0xdabe('0x4e')+_0x1c5e0c+'))';return getZohoUser(_0x91e305,_0xdabe('0x4f'))[_0xdabe('0x3b')](function(_0xb6655e){if(_0xb6655e)return _0xb6655e;if(_0x2a24b0[_0xdabe('0x41')]!='nothing'){return createEndUser(_0xc55dd1,_0x49f700,_0xbd0db9,_0x1c5e0c,_0x5c937a,_0x2a24b0);}else{return{};}});});break;case _0xdabe('0x50'):_0x91e305[_0xdabe('0x4b')]='https://www.zohoapis.'+_0x49f700+_0xdabe('0x4c')+_0x1c5e0c+'))';return getZohoUser(_0x91e305,'Contacts')['then'](function(_0x29f92e){if(_0x29f92e)return _0x29f92e;if(_0x2a24b0['moduleCreate']!='nothing'){return createEndUser(_0xc55dd1,_0x49f700,_0xbd0db9,_0x1c5e0c,_0x5c937a,_0x2a24b0);}else{return{};}});break;case _0xdabe('0x51'):_0x91e305[_0xdabe('0x4b')]=_0xdabe('0x3f')+_0x49f700+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1c5e0c+'))';return getZohoUser(_0x91e305,'Leads')['then'](function(_0x372d23){if(_0x372d23)return _0x372d23;if(_0x2a24b0[_0xdabe('0x41')]!=_0xdabe('0x52')){return createEndUser(_0xc55dd1,_0x49f700,_0xbd0db9,_0x1c5e0c,_0x5c937a,_0x2a24b0);}else{return{};}});break;}}function getCall(_0x45ef2f,_0x52db2a,_0x35993d,_0x29cff8,_0x580dad,_0x3e3171,_0x216260,_0x52185d){logger['info']('Creating\x20new\x20call...');var _0x37789c={};_0x37789c[_0xdabe('0x53')]={'name':!_[_0xdabe('0x1a')](_0x29cff8[_0xdabe('0x42')][_0xdabe('0x16')])&&!_['isNil'](_0x29cff8[_0xdabe('0x36')][_0xdabe('0x16')])&&_0x29cff8[_0xdabe('0x36')][_0xdabe('0x16')]===_0xdabe('0x54')?_0x29cff8[_0xdabe('0x42')][_0xdabe('0x16')]:!_[_0xdabe('0x1a')](_0x29cff8[_0xdabe('0x43')])?_0x29cff8[_0xdabe('0x43')]+'\x20'+_0x29cff8['last_name']:_0x29cff8[_0xdabe('0x44')],'id':_0x29cff8['id']};_0x37789c['Subject']=intUtil[_0xdabe('0x55')](_0x3e3171[_0xdabe('0x56')],_0x216260,'\x20');_0x37789c['Description']=intUtil['getString'](_0x3e3171[_0xdabe('0x57')],_0x216260,'\x0a');if(_0x580dad['enduserType']===_0xdabe('0x4d')){_0x37789c[_0xdabe('0x58')]={'name':!_[_0xdabe('0x1a')](_0x580dad[_0xdabe('0x59')])?_0x580dad[_0xdabe('0x59')]:!_[_0xdabe('0x1a')](_0x580dad[_0xdabe('0x5a')])?_0x580dad[_0xdabe('0x5a')]+'\x20'+_0x580dad[_0xdabe('0x5b')]:_0x580dad[_0xdabe('0x5b')],'id':_0x580dad['id']};}if(_0x580dad[_0xdabe('0x3d')]===_0xdabe('0x4f')){_0x37789c[_0xdabe('0x5c')]={'name':!_['isNil'](_0x580dad[_0xdabe('0x59')])?_0x580dad[_0xdabe('0x59')]:!_['isNil'](_0x580dad['First_Name'])?_0x580dad[_0xdabe('0x5a')]+'\x20'+_0x580dad[_0xdabe('0x5b')]:_0x580dad[_0xdabe('0x5b')],'id':_0x580dad['id']};_0x37789c[_0xdabe('0x5d')]=_[_0xdabe('0x40')](_0x580dad[_0xdabe('0x3d')]);}if(_0x216260[_0xdabe('0x5e')]){_0x37789c[_0xdabe('0x5f')]=moment['utc'](parseInt(_0x216260['talktime'])*0x3e8)['format'](_0xdabe('0x60'));}else if(_0x216260[_0xdabe('0x61')]&&_0x216260[_0xdabe('0x62')]){_0x37789c[_0xdabe('0x5f')]=moment[_0xdabe('0x63')](moment(_0x216260['endtime'],_0xdabe('0x64'))[_0xdabe('0x65')](moment(_0x216260['starttime'],_0xdabe('0x64'))))['format'](_0xdabe('0x60'));}switch(_0x216260['lastevent']){case'called':_0x37789c[_0xdabe('0x66')]=_0xdabe('0x67');break;case'complete':case _0xdabe('0x68'):_0x37789c[_0xdabe('0x66')]='Answered';break;case _0xdabe('0x69'):_0x37789c[_0xdabe('0x66')]='Rejected';break;case _0xdabe('0x6a'):_0x37789c[_0xdabe('0x66')]=_0xdabe('0x6b');break;case'timeout':_0x37789c[_0xdabe('0x66')]=_0xdabe('0x6c');default:}_0x37789c[_0xdabe('0x6d')]=(_0x52185d===_0xdabe('0x6e')?moment(_0x216260[_0xdabe('0x6f')])['format'](_0xdabe('0x64')):moment(_0x216260[_0xdabe('0x70')])['format'](_0xdabe('0x64')))||moment()[_0xdabe('0x2e')](_0xdabe('0x64'));_0x37789c[_0xdabe('0x71')]=_0x52185d||_0xdabe('0x72');_0x37789c=_['merge'](_0x37789c,getCustomFields(_0x3e3171[_0xdabe('0x73')],_0x216260));return request({'method':_0xdabe('0x23'),'uri':_0xdabe('0x3f')+_0x52db2a+_0xdabe('0x74'),'headers':{'Authorization':_0xdabe('0x48')+_0x45ef2f},'body':{'data':[_0x37789c]},'json':!![]})[_0xdabe('0x3b')](function(_0xd80c7c){if(_0xd80c7c&&_0xd80c7c[_0xdabe('0x3c')][0x0]['code']==='SUCCESS'){logger[_0xdabe('0x2b')]('Call\x20created!');return{'id':_0xd80c7c[_0xdabe('0x3c')][0x0][_0xdabe('0x46')]['id']};}})['catch'](function(_0x466cde){logger[_0xdabe('0x2b')](_0xdabe('0x75'),_0x466cde[_0xdabe('0x2a')]);console[_0xdabe('0x76')]('err',_0x466cde);});}exports[_0xdabe('0x77')]=function(_0x2bbe6d,_0x3868fd,_0x21537e,_0x271a21,_0x3e35f9,_0x3b67ab){var _0x56996b,_0x43053d,_0x27a896;_0x3b67ab[_0xdabe('0x78')]=intUtil['stripTrailingSlash'](_0x3b67ab['host']);_0x3b67ab[_0xdabe('0x79')]=intUtil[_0xdabe('0x7a')](_0x3b67ab[_0xdabe('0x79')]);if(_0x3e35f9&&_0x3e35f9[_0xdabe('0x7b')]){logger[_0xdabe('0x2b')](_0xdabe('0x7c'),'Recording\x20is\x20enabled!');_0x3868fd[_0xdabe('0x7d')]=_0x3b67ab[_0xdabe('0x79')]+_0xdabe('0x7e')+_0x3868fd[_0xdabe('0x7f')]+_0xdabe('0x80')+md5(_0x3868fd[_0xdabe('0x7f')]);}else{_0x3868fd['recordingURL']='';}var _0x2b4cda=_0x3b67ab[_0xdabe('0x78')]===_0xdabe('0x81')?'eu':_0xdabe('0x82');return getAccessToken(_0x3b67ab)['then'](function(_0x544d2f){_0x27a896=_0x544d2f;return getUser(_0x27a896,_0x2b4cda,_0x3b67ab,_0x271a21[_0xdabe('0x83')]);})['then'](function(_0x400e32){_0x56996b=_0x400e32;logger['info'](_0xdabe('0x84'),_0x56996b['id']);return getEndUser(_0x27a896,_0x2b4cda,_0x3b67ab,_0x3868fd[_0xdabe('0x85')],_0x3868fd[_0xdabe('0x86')],_0x56996b,_0x21537e);})[_0xdabe('0x3b')](function(_0x594c06){_0x43053d=_0x594c06;return getCall(_0x27a896,_0x2b4cda,_0x3b67ab,_0x56996b,_0x43053d,_0x21537e,_0x3868fd,_0xdabe('0x72'));})[_0xdabe('0x3b')](function(_0x549e6b){if(_0x549e6b){logger[_0xdabe('0x2b')](_0xdabe('0x87'),_0x549e6b['id']);logger[_0xdabe('0x2b')](_0xdabe('0x7c'),_0xdabe('0x88'));emit(util[_0xdabe('0x2e')](_0xdabe('0x89'),_0x271a21['name']),_0xdabe('0x8a'),{'uri':_0xdabe('0x8b')+_0x3b67ab[_0xdabe('0x78')]+_0xdabe('0x8c')+_0x549e6b['id']});}})[_0xdabe('0x3e')](function(_0x5459b7){logger['error']('[QUEUE]',JSON['stringify'](_0x5459b7));});};exports[_0xdabe('0x6e')]=function(_0x340268,_0x4acf29,_0x34bc45,_0x1a3005,_0x4ebf10,_0xf1d986,_0x34a02e){var _0xe01eda,_0x3dcb1d,_0xa92439;_0xf1d986[_0xdabe('0x78')]=intUtil[_0xdabe('0x7a')](_0xf1d986['host']);_0xf1d986[_0xdabe('0x79')]=intUtil['stripTrailingSlash'](_0xf1d986[_0xdabe('0x79')]);if(_0x34a02e&&_0x34a02e[_0xdabe('0x8d')]&&_0x34a02e[_0xdabe('0x8d')]!==_0xdabe('0x8e')){logger[_0xdabe('0x2b')](_0xdabe('0x8f'),_0xdabe('0x90'));_0x4acf29[_0xdabe('0x7d')]=_0xf1d986[_0xdabe('0x79')]+_0xdabe('0x7e')+_0x4acf29[_0xdabe('0x7f')]+_0xdabe('0x80')+md5(_0x4acf29[_0xdabe('0x7f')]);}var _0x385a92=_0xf1d986[_0xdabe('0x78')]===_0xdabe('0x81')?'eu':_0xdabe('0x82');return getAccessToken(_0xf1d986)[_0xdabe('0x3b')](function(_0x5918cc){_0xa92439=_0x5918cc;return getUser(_0xa92439,_0x385a92,_0xf1d986,_0x1a3005[_0xdabe('0x83')]);})[_0xdabe('0x3b')](function(_0x4e772e){_0xe01eda=_0x4e772e;logger['info']('The\x20User\x20ID\x20is:',_0xe01eda['id']);return getEndUser(_0xa92439,_0x385a92,_0xf1d986,_0x4acf29[_0xdabe('0x91')],_0x4acf29['destcalleridnum'],_0xe01eda,_0x34bc45);})[_0xdabe('0x3b')](function(_0x2b49de){_0x3dcb1d=_0x2b49de;return getCall(_0xa92439,_0x385a92,_0xf1d986,_0xe01eda,_0x3dcb1d,_0x34bc45,_0x4acf29,_0xdabe('0x92'));})['then'](function(_0x32d0e4){if(_0x32d0e4){logger[_0xdabe('0x2b')](_0xdabe('0x87'),_0x32d0e4['id']);logger['info'](_0xdabe('0x8f'),_0xdabe('0x88'));emit(util[_0xdabe('0x2e')](_0xdabe('0x89'),_0x1a3005[_0xdabe('0x16')]),'trigger:browser:url',{'uri':'https://crm.'+_0xf1d986['host']+_0xdabe('0x8c')+_0x32d0e4['id']});}})[_0xdabe('0x3e')](function(_0xe0716e){logger[_0xdabe('0x28')](_0xdabe('0x8f'),JSON['stringify'](_0xe0716e));});};exports[_0xdabe('0x93')]=function(_0x54ef5c,_0x5a744c,_0x166393,_0x2da28a,_0x54ad85,_0xa9b1d0){var _0x5a223b,_0x2ef758,_0x2207d0;_0xa9b1d0[_0xdabe('0x78')]=intUtil['stripTrailingSlash'](_0xa9b1d0[_0xdabe('0x78')]);_0xa9b1d0['serverUrl']=intUtil[_0xdabe('0x7a')](_0xa9b1d0[_0xdabe('0x79')]);if(_0x54ad85&&_0x54ad85['monitor_format']){logger[_0xdabe('0x2b')]('['+_0x5a744c[_0xdabe('0x94')][_0xdabe('0x95')]()+']',_0xdabe('0x90'));_0x5a744c['recordingURL']=_0xa9b1d0[_0xdabe('0x79')]+_0xdabe('0x7e')+_0x5a744c['uniqueid']+_0xdabe('0x80')+md5(_0x5a744c['uniqueid']);}else{_0x5a744c[_0xdabe('0x7d')]='';}var _0x2ccb2e=_0xa9b1d0[_0xdabe('0x78')]===_0xdabe('0x81')?'eu':_0xdabe('0x82');return getAccessToken(_0xa9b1d0)[_0xdabe('0x3b')](function(_0x287704){_0x2207d0=_0x287704;return getUser(_0x2207d0,_0x2ccb2e,_0xa9b1d0);})[_0xdabe('0x3b')](function(_0x3a588c){_0x5a223b=_0x3a588c;logger[_0xdabe('0x2b')](_0xdabe('0x84'),_0x5a223b['id']);return getEndUser(_0x2207d0,_0x2ccb2e,_0xa9b1d0,_0x5a744c['calleridname'],_0x5a744c['calleridnum'],_0x5a223b,_0x166393);})[_0xdabe('0x3b')](function(_0x572cdc){_0x2ef758=_0x572cdc;return getCall(_0x2207d0,_0x2ccb2e,_0xa9b1d0,_0x5a223b,_0x2ef758,_0x166393,_0x5a744c,'Inbound');})['then'](function(_0x4479eb){if(_0x4479eb){logger['info']('The\x20Call\x20ID\x20is:',_0x4479eb['id']);}})[_0xdabe('0x3e')](function(_0x4995f3){logger[_0xdabe('0x28')]('['+_0x5a744c[_0xdabe('0x94')][_0xdabe('0x95')]()+']',JSON['stringify'](_0x4995f3));});};
\ No newline at end of file
index bf1223f..fd2e0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfad8=['render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','../../../../config/logger','trigger','exec','data2','data3'];(function(_0x59d069,_0x597985){var _0x2d1f28=function(_0x3c51a5){while(--_0x3c51a5){_0x59d069['push'](_0x59d069['shift']());}};_0x2d1f28(++_0x597985);}(_0xfad8,0x9e));var _0x8fad=function(_0x5a99db,_0x1cece5){_0x5a99db=_0x5a99db-0x0;var _0x3aad62=_0xfad8[_0x5a99db];return _0x3aad62;};'use strict';var util=require(_0x8fad('0x0'));var sh=require(_0x8fad('0x1'));var Mustache=require('mustache');var logger=require(_0x8fad('0x2'))(_0x8fad('0x3'));exports[_0x8fad('0x4')]=function(_0x2afe2b,_0x27c832){var _0x202fe1=_0x2afe2b[_0x8fad('0x5')]?_0x2afe2b[_0x8fad('0x5')]:'Script';var _0xb32287=_0x2afe2b[_0x8fad('0x6')]?Mustache[_0x8fad('0x7')](_0x2afe2b[_0x8fad('0x6')],_0x27c832):_0x27c832;sh[_0x8fad('0x4')](_0xb32287,function(_0x36e983,_0x101bf9,_0x4c16ad){if(_0x36e983!==0x0){logger['error'](util[_0x8fad('0x8')](_0x8fad('0x9'),_0x202fe1,_0xb32287,_0x36e983,_0x4c16ad));}else{logger[_0x8fad('0xa')](util[_0x8fad('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x202fe1,_0xb32287,_0x101bf9));}});};
\ No newline at end of file
+var _0xc1ec=['mustache','trigger','data2','Script','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util'];(function(_0x2ced4f,_0x3e2bec){var _0x4cf01a=function(_0x1c0a08){while(--_0x1c0a08){_0x2ced4f['push'](_0x2ced4f['shift']());}};_0x4cf01a(++_0x3e2bec);}(_0xc1ec,0xf1));var _0xcc1e=function(_0x527b4a,_0x2f118c){_0x527b4a=_0x527b4a-0x0;var _0xb7e2bc=_0xc1ec[_0x527b4a];return _0xb7e2bc;};'use strict';var util=require(_0xcc1e('0x0'));var sh=require('shelljs');var Mustache=require(_0xcc1e('0x1'));var logger=require('../../../../config/logger')(_0xcc1e('0x2'));exports['exec']=function(_0x5f452e,_0x843f6c){var _0x5f49=_0x5f452e[_0xcc1e('0x3')]?_0x5f452e[_0xcc1e('0x3')]:_0xcc1e('0x4');var _0x228cb2=_0x5f452e[_0xcc1e('0x5')]?Mustache[_0xcc1e('0x6')](_0x5f452e[_0xcc1e('0x5')],_0x843f6c):_0x843f6c;sh['exec'](_0x228cb2,function(_0x2432f5,_0x23cf58,_0x21a20f){if(_0x2432f5!==0x0){logger[_0xcc1e('0x7')](util[_0xcc1e('0x8')](_0xcc1e('0x9'),_0x5f49,_0x228cb2,_0x2432f5,_0x21a20f));}else{logger[_0xcc1e('0xa')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x5f49,_0x228cb2,_0x23cf58));}});};
\ No newline at end of file
index 571fb3c..d201465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c1=['DELETE','POST','data7','body','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','format','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','data2','number','data5','headers','parse','render','data6','error','stack','GET'];(function(_0x2ba604,_0x2eb868){var _0x47c1cd=function(_0x17d540){while(--_0x17d540){_0x2ba604['push'](_0x2ba604['shift']());}};_0x47c1cd(++_0x2eb868);}(_0xc1c1,0xea));var _0x1c1c=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xc1c1[_0xfae23b];return _0x200640;};'use strict';var rp=require(_0x1c1c('0x0'));var util=require(_0x1c1c('0x1'));var _=require(_0x1c1c('0x2'));var Mustache=require(_0x1c1c('0x3'));var logger=require(_0x1c1c('0x4'))('trigger');exports[_0x1c1c('0x5')]=function(_0x2789a7,_0x15ddab){var _0x381688,_0x38d69f;var _0x593fa3={'method':_0x2789a7[_0x1c1c('0x6')][_0x1c1c('0x7')](),'uri':Mustache['render'](_0x2789a7[_0x1c1c('0x8')],_0x15ddab),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x2789a7['data5'])===_0x1c1c('0x9')&&parseInt(_0x2789a7[_0x1c1c('0xa')])>=0x1&&parseInt(_0x2789a7[_0x1c1c('0xa')])<=0xa?parseInt(_0x2789a7[_0x1c1c('0xa')])*0x3e8:0x5*0x3e8};try{_0x593fa3[_0x1c1c('0xb')]=_0x2789a7['data6']?JSON[_0x1c1c('0xc')](Mustache[_0x1c1c('0xd')](_0x2789a7[_0x1c1c('0xe')],_0x15ddab)):{};}catch(_0x28bffc){logger[_0x1c1c('0xf')](_0x28bffc[_0x1c1c('0x10')]);}switch(_0x2789a7['data1'][_0x1c1c('0x7')]()){case _0x1c1c('0x11'):case _0x1c1c('0x12'):_0x381688=null;_0x593fa3['qs']=_0x15ddab;break;case _0x1c1c('0x13'):case'PUT':if(_0x2789a7[_0x1c1c('0x14')]){try{_0x381688=JSON[_0x1c1c('0xc')](Mustache[_0x1c1c('0xd')](_0x2789a7['data7'],_0x15ddab));_0x593fa3[_0x1c1c('0x15')]=_0x381688;}catch(_0x20b884){logger[_0x1c1c('0xf')](_0x20b884[_0x1c1c('0x10')]);logger[_0x1c1c('0xf')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x381688=_0x15ddab;_0x593fa3[_0x1c1c('0x15')]=_0x381688;}break;}logger[_0x1c1c('0x16')](util['format'](_0x1c1c('0x17'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],JSON['stringify'](_0x593fa3)));rp(_0x593fa3)[_0x1c1c('0x18')](function(_0x14044e){_0x381688=!_[_0x1c1c('0x19')](_0x381688)?_0x1c1c('0x1a')+_0x381688:'';_0x38d69f=typeof _0x14044e[_0x1c1c('0x15')]===_0x1c1c('0x1b')?JSON[_0x1c1c('0x1c')](_0x14044e[_0x1c1c('0x15')]):_0x14044e[_0x1c1c('0x15')];logger[_0x1c1c('0x16')](util['format'](_0x1c1c('0x1d'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],_0x14044e[_0x1c1c('0x1e')],_0x38d69f));})[_0x1c1c('0x1f')](function(_0x265736){logger[_0x1c1c('0xf')](util[_0x1c1c('0x20')](_0x1c1c('0x21'),_0x2789a7[_0x1c1c('0x6')],_0x2789a7[_0x1c1c('0x8')],_0x265736['statusCode'],_0x265736[_0x1c1c('0x22')],_0x265736[_0x1c1c('0x23')]));});};
\ No newline at end of file
+var _0xbba2=['catch','message','request-promise','lodash','mustache','exec','data1','toUpperCase','render','data2','data5','number','data6','parse','error','stack','GET','POST','PUT','data7','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then',',\x20request\x20body:\x20','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode'];(function(_0x158da6,_0x3cb06d){var _0x429c30=function(_0x2d5895){while(--_0x2d5895){_0x158da6['push'](_0x158da6['shift']());}};_0x429c30(++_0x3cb06d);}(_0xbba2,0x1ef));var _0x2bba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbba2[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0x2bba('0x0'));var util=require('util');var _=require(_0x2bba('0x1'));var Mustache=require(_0x2bba('0x2'));var logger=require('../../../../config/logger')('trigger');exports[_0x2bba('0x3')]=function(_0x577879,_0x41cefa){var _0x45a2ab,_0x52d431;var _0x3ec064={'method':_0x577879[_0x2bba('0x4')][_0x2bba('0x5')](),'uri':Mustache[_0x2bba('0x6')](_0x577879[_0x2bba('0x7')],_0x41cefa),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x577879[_0x2bba('0x8')])===_0x2bba('0x9')&&parseInt(_0x577879['data5'])>=0x1&&parseInt(_0x577879['data5'])<=0xa?parseInt(_0x577879[_0x2bba('0x8')])*0x3e8:0x5*0x3e8};try{_0x3ec064['headers']=_0x577879[_0x2bba('0xa')]?JSON[_0x2bba('0xb')](Mustache[_0x2bba('0x6')](_0x577879[_0x2bba('0xa')],_0x41cefa)):{};}catch(_0x3a32aa){logger[_0x2bba('0xc')](_0x3a32aa[_0x2bba('0xd')]);}switch(_0x577879['data1'][_0x2bba('0x5')]()){case _0x2bba('0xe'):case'DELETE':_0x45a2ab=null;_0x3ec064['qs']=_0x41cefa;break;case _0x2bba('0xf'):case _0x2bba('0x10'):if(_0x577879[_0x2bba('0x11')]){try{_0x45a2ab=JSON[_0x2bba('0xb')](Mustache[_0x2bba('0x6')](_0x577879['data7'],_0x41cefa));_0x3ec064[_0x2bba('0x12')]=_0x45a2ab;}catch(_0x1ce192){logger['error'](_0x1ce192[_0x2bba('0xd')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x45a2ab=_0x41cefa;_0x3ec064['body']=_0x45a2ab;}break;}logger[_0x2bba('0x13')](util[_0x2bba('0x14')](_0x2bba('0x15'),_0x577879[_0x2bba('0x4')],_0x577879[_0x2bba('0x7')],JSON['stringify'](_0x3ec064)));rp(_0x3ec064)[_0x2bba('0x16')](function(_0x404596){_0x45a2ab=!_['isNil'](_0x45a2ab)?_0x2bba('0x17')+_0x45a2ab:'';_0x52d431=typeof _0x404596['body']==='object'?JSON[_0x2bba('0x18')](_0x404596[_0x2bba('0x12')]):_0x404596['body'];logger['info'](util[_0x2bba('0x14')](_0x2bba('0x19'),_0x577879[_0x2bba('0x4')],_0x577879[_0x2bba('0x7')],_0x404596[_0x2bba('0x1a')],_0x52d431));})[_0x2bba('0x1b')](function(_0x44481b){logger[_0x2bba('0xc')](util[_0x2bba('0x14')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x577879[_0x2bba('0x4')],_0x577879[_0x2bba('0x7')],_0x44481b[_0x2bba('0x1a')],_0x44481b['name'],_0x44481b[_0x2bba('0x1c')]));});};
\ No newline at end of file
index b8aa231..afc827c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda8b=['rpc','error','message','result','catch','jayson/promise','routing','client','http','Request','request','then','debug'];(function(_0x44ec24,_0x1efaca){var _0x2fcac2=function(_0x50bbed){while(--_0x50bbed){_0x44ec24['push'](_0x44ec24['shift']());}};_0x2fcac2(++_0x1efaca);}(_0xda8b,0x1e6));var _0xbda8=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xda8b[_0x5b644e];return _0x49c6bf;};'use strict';var jayson=require(_0xbda8('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')(_0xbda8('0x1'));var client=jayson[_0xbda8('0x2')][_0xbda8('0x3')]({'port':0x2329});client[_0xbda8('0x4')]=function(_0xc54af4,_0x5d6472){return new BPromise(function(_0x3567e0,_0x3adf83){return client[_0xbda8('0x5')](_0xc54af4,_0x5d6472)[_0xbda8('0x6')](function(_0x8285ac){logger[_0xbda8('0x7')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x5d6472,_0x8285ac);if(_0x8285ac[_0xbda8('0x9')]){logger[_0xbda8('0x9')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x8285ac[_0xbda8('0x9')][_0xbda8('0xa')],_0x5d6472);return _0x3adf83(_0x8285ac[_0xbda8('0x9')][_0xbda8('0xa')]);}else{return _0x3567e0(_0x8285ac[_0xbda8('0xb')]);}})[_0xbda8('0xc')](function(_0x50215f){logger[_0xbda8('0x9')](_0xbda8('0x8'),_0xbda8('0x1'),_0xc54af4,_0x50215f,_0x5d6472);return _0x3adf83(_0x50215f);});});};module['exports']=client;
\ No newline at end of file
+var _0xcbd5=['exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','debug','rpc','error','result','catch'];(function(_0x5476f6,_0x5ea695){var _0x216cc0=function(_0x28d0d9){while(--_0x28d0d9){_0x5476f6['push'](_0x5476f6['shift']());}};_0x216cc0(++_0x5ea695);}(_0xcbd5,0x112));var _0x5cbd=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xcbd5[_0xa148b7];return _0x51efd3;};'use strict';var jayson=require(_0x5cbd('0x0'));var BPromise=require(_0x5cbd('0x1'));var logger=require(_0x5cbd('0x2'))(_0x5cbd('0x3'));var client=jayson[_0x5cbd('0x4')][_0x5cbd('0x5')]({'port':0x2329});client[_0x5cbd('0x6')]=function(_0x6c16a7,_0xfd22ce){return new BPromise(function(_0x1b82ed,_0xc791b){return client['request'](_0x6c16a7,_0xfd22ce)['then'](function(_0x270dc0){logger[_0x5cbd('0x7')](_0x5cbd('0x8'),_0x5cbd('0x3'),_0x6c16a7,_0xfd22ce,_0x270dc0);if(_0x270dc0[_0x5cbd('0x9')]){logger['error'](_0x5cbd('0x8'),'routing',_0x6c16a7,_0x270dc0[_0x5cbd('0x9')]['message'],_0xfd22ce);return _0xc791b(_0x270dc0[_0x5cbd('0x9')]['message']);}else{return _0x1b82ed(_0x270dc0[_0x5cbd('0xa')]);}})[_0x5cbd('0xb')](function(_0x5a6b6d){logger['error'](_0x5cbd('0x8'),_0x5cbd('0x3'),_0x6c16a7,_0x5a6b6d,_0xfd22ce);return _0xc791b(_0x5a6b6d);});});};module[_0x5cbd('0xc')]=client;
\ No newline at end of file
index b4c16aa..8d9f2bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1fc=['then','initMailAccounts','mailAccounts','listen','getSettings','loginMailFrequency','catch','log','bluebird','./server','./rpc/mailAccount','resolve','getMailAccounts'];(function(_0x1bfe2b,_0x34856e){var _0x1477d4=function(_0x1d558c){while(--_0x1d558c){_0x1bfe2b['push'](_0x1bfe2b['shift']());}};_0x1477d4(++_0x34856e);}(_0xb1fc,0xf2));var _0xcb1f=function(_0x47959d,_0x50bcb9){_0x47959d=_0x47959d-0x0;var _0x1c4402=_0xb1fc[_0x47959d];return _0x1c4402;};'use strict';var BPromise=require(_0xcb1f('0x0'));var server=require(_0xcb1f('0x1'));var Realtime=require('./realtime');var EmailChannel=require('./lib/email');var mailAccount=require(_0xcb1f('0x2'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xcb1f('0x3')]()['then'](mailAccount[_0xcb1f('0x4')]())[_0xcb1f('0x5')](realtime[_0xcb1f('0x6')]())['then'](function(){email['refresh'](realtime[_0xcb1f('0x7')]);return realtime;});}function main(){return server[_0xcb1f('0x8')](realtime,email)[_0xcb1f('0x5')](function(){return initRealtime();})[_0xcb1f('0x5')](function(){return setting[_0xcb1f('0x9')]();})[_0xcb1f('0x5')](function(_0xe62505){return setInterval(initRealtime,_0xe62505[_0xcb1f('0xa')]*0x3e8);})[_0xcb1f('0xb')](function(_0x4448c6){console[_0xcb1f('0xc')](_0x4448c6);});}main();
\ No newline at end of file
+var _0x967b=['bluebird','./server','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','initMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','catch'];(function(_0x2014d9,_0x2a2fab){var _0x13687c=function(_0x29357e){while(--_0x29357e){_0x2014d9['push'](_0x2014d9['shift']());}};_0x13687c(++_0x2a2fab);}(_0x967b,0x9c));var _0xb967=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x967b[_0x5f309e];return _0x487b5e;};'use strict';var BPromise=require(_0xb967('0x0'));var server=require(_0xb967('0x1'));var Realtime=require('./realtime');var EmailChannel=require(_0xb967('0x2'));var mailAccount=require(_0xb967('0x3'));var setting=require(_0xb967('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xb967('0x5')]()[_0xb967('0x6')](mailAccount['getMailAccounts']())[_0xb967('0x6')](realtime[_0xb967('0x7')]())[_0xb967('0x6')](function(){email[_0xb967('0x8')](realtime[_0xb967('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0xb967('0x6')](function(){return initRealtime();})[_0xb967('0x6')](function(){return setting[_0xb967('0xa')]();})['then'](function(_0x49db41){return setInterval(initRealtime,_0x49db41[_0xb967('0xb')]*0x3e8);})[_0xb967('0xc')](function(_0x313f74){console['log'](_0x313f74);});}main();
\ No newline at end of file
index c64a045..b4ce838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf822=['mailAccounts','name','key','Imap','status','total','isNil','stringify','md5','emit','mailAccount:update','refresh','email','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','disabled','messageStatus','connected','messages','lastName','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','send','Smtp','verify','verified','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','defaults','redis','localhost','./imap','./smtp','../rpc/mailAccount','info','imapAccounts','smtp','prototype'];(function(_0xd0a2ea,_0x341745){var _0x5349a4=function(_0x4b6085){while(--_0x4b6085){_0xd0a2ea['push'](_0xd0a2ea['shift']());}};_0x5349a4(++_0x341745);}(_0xf822,0x1ef));var _0x2f82=function(_0x1e5a42,_0x36a376){_0x1e5a42=_0x1e5a42-0x0;var _0x17d56d=_0xf822[_0x1e5a42];return _0x17d56d;};'use strict';var _=require(_0x2f82('0x0'));var moment=require(_0x2f82('0x1'));var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x2f82('0x2'));var config=require(_0x2f82('0x3'));var logger=require(_0x2f82('0x4'))('email');config['redis']=_[_0x2f82('0x5')](config[_0x2f82('0x6')],{'host':_0x2f82('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2f82('0x6')]));var EmailImap=require(_0x2f82('0x8'));var EmailSmtp=require(_0x2f82('0x9'));var mailAccount=require(_0x2f82('0xa'));var md5Accounts={};function EmailChannel(_0x11e90b){logger[_0x2f82('0xb')]('start\x20email\x20channel');this['mailAccounts']=_0x11e90b['mailAccounts'];this[_0x2f82('0xc')]={};this[_0x2f82('0xd')]=new EmailSmtp();}EmailChannel[_0x2f82('0xe')]['emit']=function(_0x5ced9d){var _0x350ea5=this[_0x2f82('0xf')][_0x5ced9d];var _0x3a2baf={'id':_0x350ea5['id'],'name':_0x350ea5[_0x2f82('0x10')],'key':_0x350ea5[_0x2f82('0x11')],'active':_0x350ea5['active'],'Imap':{'status':_0x350ea5[_0x2f82('0x12')][_0x2f82('0x13')],'messageStatus':_0x350ea5[_0x2f82('0x12')]['messageStatus'],'total':_0x350ea5[_0x2f82('0x12')][_0x2f82('0x14')]}};if(_[_0x2f82('0x15')](md5Accounts[_0x5ced9d])){md5Accounts[_0x5ced9d]={};}var _0x4e32f3=md5(JSON[_0x2f82('0x16')](_0x3a2baf));if(md5Accounts[_0x5ced9d][_0x2f82('0x17')]!==_0x4e32f3){md5Accounts[_0x5ced9d][_0x2f82('0x17')]=_0x4e32f3;io[_0x2f82('0x18')](_0x2f82('0x19'),_0x3a2baf);}};EmailChannel['prototype'][_0x2f82('0x1a')]=function(_0x4f6685){for(var _0x4a5f6b in _0x4f6685){if(_0x4f6685['hasOwnProperty'](_0x4a5f6b)){if(_0x4f6685[_0x4a5f6b][_0x2f82('0x12')]&&_0x4f6685[_0x4a5f6b]['active']){var _0x21a0d2=_0x4f6685[_0x4a5f6b][_0x2f82('0x12')];if(!this[_0x2f82('0xc')]['hasOwnProperty'](_0x21a0d2['id'])){this[_0x2f82('0xc')][_0x21a0d2['id']]=new EmailImap(_0x21a0d2,_0x4f6685[_0x4a5f6b][_0x2f82('0x1b')]);this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x1c'),this[_0x2f82('0x1d')][_0x2f82('0x1e')](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x1b'),this[_0x2f82('0x1f')]['bind'](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x20'),this[_0x2f82('0x21')]['bind'](this,_0x4a5f6b));this[_0x2f82('0xc')][_0x21a0d2['id']]['on'](_0x2f82('0x22'),this['handleImapError'][_0x2f82('0x1e')](this,_0x4a5f6b));}}else{if(_[_0x2f82('0x15')](this['mailAccounts'][_0x4a5f6b][_0x2f82('0x12')])){this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')]={};}this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')][_0x2f82('0x13')]=_0x2f82('0x23');this[_0x2f82('0xf')][_0x4a5f6b][_0x2f82('0x12')][_0x2f82('0x24')]='';this[_0x2f82('0x18')](_0x4a5f6b);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x47f619,_0x3e4bcc){if(this[_0x2f82('0xf')][_0x47f619]){this['mailAccounts'][_0x47f619]['Imap']['status']=_0x2f82('0x25');this[_0x2f82('0xf')][_0x47f619][_0x2f82('0x12')][_0x2f82('0x24')]=_0x3e4bcc[_0x2f82('0x10')];if(_0x3e4bcc[_0x2f82('0x26')]){this[_0x2f82('0xf')][_0x47f619]['Imap']['total']=_0x3e4bcc[_0x2f82('0x26')][_0x2f82('0x14')];}return this[_0x2f82('0x18')](_0x47f619);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x1f')]=function(_0x593fcb,_0x5058a6){logger[_0x2f82('0xb')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x5058a6['firstName'],_0x5058a6[_0x2f82('0x27')],_0x5058a6['from'],_0x593fcb);if(this['mailAccounts'][_0x593fcb]){return mailAccount['notify'](_0x593fcb,_0x5058a6)[_0x2f82('0x28')](function(_0x46b0a1){if(_0x46b0a1){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x2f82('0x29')](function(_0x51e08a){logger[_0x2f82('0x22')](_0x2f82('0x2a'),JSON['stringify'](_0x51e08a));});}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x21')]=function(_0xce5653){if(this[_0x2f82('0xf')][_0xce5653]&&this[_0x2f82('0xf')][_0xce5653][_0x2f82('0x12')]){if(this[_0x2f82('0xc')][this['mailAccounts'][_0xce5653][_0x2f82('0x12')]['id']]){delete this[_0x2f82('0xc')][this[_0x2f82('0xf')][_0xce5653]['Imap']['id']];}this[_0x2f82('0xf')][_0xce5653][_0x2f82('0x12')][_0x2f82('0x2b')]=moment();this[_0x2f82('0x18')](_0xce5653);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x2c')]=function(_0xbf6b9,_0x22cd83){if(this[_0x2f82('0xf')][_0xbf6b9]){this[_0x2f82('0xf')][_0xbf6b9]['Imap'][_0x2f82('0x13')]=_0x2f82('0x22');this[_0x2f82('0xf')][_0xbf6b9]['Imap']['messageStatus']=_0x22cd83;return this[_0x2f82('0x18')](_0xbf6b9);}};EmailChannel[_0x2f82('0xe')][_0x2f82('0x2d')]=function(_0x48d19c,_0x482bea){return this[_0x2f82('0xd')][_0x2f82('0x2e')](_0x48d19c,_0x482bea);};EmailChannel[_0x2f82('0xe')]['verifySmtp']=function(_0x51a6f3){var _0xf7e4cb=this;if(this[_0x2f82('0xf')][_0x51a6f3['id']]){if(_[_0x2f82('0x15')](this[_0x2f82('0xf')][_0x51a6f3['id']]['Smtp'])){this[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')]={};}this[_0x2f82('0xf')][_0x51a6f3['id']]['Smtp'][_0x2f82('0x2b')]=moment();return new BPromise(function(_0x49b8d2,_0x281094){return _0xf7e4cb[_0x2f82('0xd')][_0x2f82('0x30')](_0x51a6f3)[_0x2f82('0x28')](function(_0x52c5c8){_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')][_0x2f82('0x13')]=_0x2f82('0x31');_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')]['messageStatus']='';_0xf7e4cb[_0x2f82('0x18')](_0x51a6f3['id']);_0x49b8d2(_0x52c5c8);})[_0x2f82('0x29')](function(_0x1cfbd2){_0xf7e4cb[_0x2f82('0xf')][_0x51a6f3['id']][_0x2f82('0x2f')][_0x2f82('0x13')]='error';_0xf7e4cb['mailAccounts'][_0x51a6f3['id']][_0x2f82('0x2f')]['messageStatus']=_0x1cfbd2;_0xf7e4cb[_0x2f82('0x18')](_0x51a6f3['id']);_0x281094(_0x1cfbd2);});});}return this[_0x2f82('0xd')][_0x2f82('0x30')](_0x51a6f3);};module[_0x2f82('0x32')]=EmailChannel;
\ No newline at end of file
+var _0xad08=['name','key','active','status','Imap','messageStatus','total','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','imapAccounts','email','box','handleImapBox','bind','end','error','handleImapError','disabled','connected','messages','handleImapEmail','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','send','verifySmtp','Smtp','lastSync','verify','then','verified','md5','ioredis','../../../config/logger','redis','localhost','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','prototype','emit'];(function(_0x2f6ae4,_0x1a41cb){var _0x3b3e40=function(_0x210516){while(--_0x210516){_0x2f6ae4['push'](_0x2f6ae4['shift']());}};_0x3b3e40(++_0x1a41cb);}(_0xad08,0x192));var _0x8ad0=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xad08[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0x8ad0('0x0'));var Redis=require(_0x8ad0('0x1'));var config=require('../../../config/environment');var logger=require(_0x8ad0('0x2'))('email');config[_0x8ad0('0x3')]=_['defaults'](config['redis'],{'host':_0x8ad0('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8ad0('0x3')]));var EmailImap=require(_0x8ad0('0x5'));var EmailSmtp=require(_0x8ad0('0x6'));var mailAccount=require(_0x8ad0('0x7'));var md5Accounts={};function EmailChannel(_0x39c93d){logger[_0x8ad0('0x8')](_0x8ad0('0x9'));this[_0x8ad0('0xa')]=_0x39c93d[_0x8ad0('0xa')];this['imapAccounts']={};this[_0x8ad0('0xb')]=new EmailSmtp();}EmailChannel[_0x8ad0('0xc')][_0x8ad0('0xd')]=function(_0x3297d2){var _0x9ff599=this[_0x8ad0('0xa')][_0x3297d2];var _0x1bf018={'id':_0x9ff599['id'],'name':_0x9ff599[_0x8ad0('0xe')],'key':_0x9ff599[_0x8ad0('0xf')],'active':_0x9ff599[_0x8ad0('0x10')],'Imap':{'status':_0x9ff599['Imap'][_0x8ad0('0x11')],'messageStatus':_0x9ff599[_0x8ad0('0x12')][_0x8ad0('0x13')],'total':_0x9ff599[_0x8ad0('0x12')][_0x8ad0('0x14')]}};if(_[_0x8ad0('0x15')](md5Accounts[_0x3297d2])){md5Accounts[_0x3297d2]={};}var _0x914ffc=md5(JSON[_0x8ad0('0x16')](_0x1bf018));if(md5Accounts[_0x3297d2][_0x8ad0('0x0')]!==_0x914ffc){md5Accounts[_0x3297d2][_0x8ad0('0x0')]=_0x914ffc;io[_0x8ad0('0xd')](_0x8ad0('0x17'),_0x1bf018);}};EmailChannel[_0x8ad0('0xc')][_0x8ad0('0x18')]=function(_0x1918ae){for(var _0x835f9b in _0x1918ae){if(_0x1918ae[_0x8ad0('0x19')](_0x835f9b)){if(_0x1918ae[_0x835f9b]['Imap']&&_0x1918ae[_0x835f9b][_0x8ad0('0x10')]){var _0x252376=_0x1918ae[_0x835f9b]['Imap'];if(!this[_0x8ad0('0x1a')][_0x8ad0('0x19')](_0x252376['id'])){this[_0x8ad0('0x1a')][_0x252376['id']]=new EmailImap(_0x252376,_0x1918ae[_0x835f9b][_0x8ad0('0x1b')]);this['imapAccounts'][_0x252376['id']]['on'](_0x8ad0('0x1c'),this[_0x8ad0('0x1d')][_0x8ad0('0x1e')](this,_0x835f9b));this['imapAccounts'][_0x252376['id']]['on'](_0x8ad0('0x1b'),this['handleImapEmail'][_0x8ad0('0x1e')](this,_0x835f9b));this[_0x8ad0('0x1a')][_0x252376['id']]['on'](_0x8ad0('0x1f'),this['handleImapEnd']['bind'](this,_0x835f9b));this[_0x8ad0('0x1a')][_0x252376['id']]['on'](_0x8ad0('0x20'),this[_0x8ad0('0x21')][_0x8ad0('0x1e')](this,_0x835f9b));}}else{if(_['isNil'](this[_0x8ad0('0xa')][_0x835f9b][_0x8ad0('0x12')])){this[_0x8ad0('0xa')][_0x835f9b][_0x8ad0('0x12')]={};}this[_0x8ad0('0xa')][_0x835f9b]['Imap'][_0x8ad0('0x11')]=_0x8ad0('0x22');this['mailAccounts'][_0x835f9b][_0x8ad0('0x12')]['messageStatus']='';this['emit'](_0x835f9b);}}}};EmailChannel[_0x8ad0('0xc')][_0x8ad0('0x1d')]=function(_0x482e45,_0x6107b5){if(this['mailAccounts'][_0x482e45]){this[_0x8ad0('0xa')][_0x482e45][_0x8ad0('0x12')]['status']=_0x8ad0('0x23');this[_0x8ad0('0xa')][_0x482e45][_0x8ad0('0x12')][_0x8ad0('0x13')]=_0x6107b5[_0x8ad0('0xe')];if(_0x6107b5[_0x8ad0('0x24')]){this['mailAccounts'][_0x482e45]['Imap']['total']=_0x6107b5[_0x8ad0('0x24')]['total'];}return this[_0x8ad0('0xd')](_0x482e45);}};EmailChannel[_0x8ad0('0xc')][_0x8ad0('0x25')]=function(_0x212603,_0x557365){logger[_0x8ad0('0x8')](_0x8ad0('0x26'),_0x557365[_0x8ad0('0x27')],_0x557365['lastName'],_0x557365[_0x8ad0('0x28')],_0x212603);if(this[_0x8ad0('0xa')][_0x212603]){return mailAccount[_0x8ad0('0x29')](_0x212603,_0x557365)['then'](function(_0x2f216b){if(_0x2f216b){logger[_0x8ad0('0x8')]('Mail\x20accepted\x20from\x20routing');}})[_0x8ad0('0x2a')](function(_0x31d7ab){logger[_0x8ad0('0x20')](_0x8ad0('0x2b'),JSON[_0x8ad0('0x16')](_0x31d7ab));});}};EmailChannel[_0x8ad0('0xc')][_0x8ad0('0x2c')]=function(_0x149ddc){if(this[_0x8ad0('0xa')][_0x149ddc]&&this[_0x8ad0('0xa')][_0x149ddc][_0x8ad0('0x12')]){if(this['imapAccounts'][this[_0x8ad0('0xa')][_0x149ddc][_0x8ad0('0x12')]['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x149ddc][_0x8ad0('0x12')]['id']];}this[_0x8ad0('0xa')][_0x149ddc][_0x8ad0('0x12')]['lastSync']=moment();this[_0x8ad0('0xd')](_0x149ddc);}};EmailChannel[_0x8ad0('0xc')][_0x8ad0('0x21')]=function(_0x171249,_0x5890c0){if(this['mailAccounts'][_0x171249]){this['mailAccounts'][_0x171249]['Imap'][_0x8ad0('0x11')]=_0x8ad0('0x20');this[_0x8ad0('0xa')][_0x171249][_0x8ad0('0x12')][_0x8ad0('0x13')]=_0x5890c0;return this[_0x8ad0('0xd')](_0x171249);}};EmailChannel['prototype']['sendMail']=function(_0x1d37cc,_0x1b9f32){return this['smtp'][_0x8ad0('0x2d')](_0x1d37cc,_0x1b9f32);};EmailChannel['prototype'][_0x8ad0('0x2e')]=function(_0x3411e6){var _0x116e8e=this;if(this[_0x8ad0('0xa')][_0x3411e6['id']]){if(_['isNil'](this[_0x8ad0('0xa')][_0x3411e6['id']]['Smtp'])){this[_0x8ad0('0xa')][_0x3411e6['id']][_0x8ad0('0x2f')]={};}this[_0x8ad0('0xa')][_0x3411e6['id']][_0x8ad0('0x2f')][_0x8ad0('0x30')]=moment();return new BPromise(function(_0x5a0caf,_0x462a48){return _0x116e8e[_0x8ad0('0xb')][_0x8ad0('0x31')](_0x3411e6)[_0x8ad0('0x32')](function(_0x5b3adf){_0x116e8e[_0x8ad0('0xa')][_0x3411e6['id']][_0x8ad0('0x2f')][_0x8ad0('0x11')]=_0x8ad0('0x33');_0x116e8e['mailAccounts'][_0x3411e6['id']]['Smtp'][_0x8ad0('0x13')]='';_0x116e8e[_0x8ad0('0xd')](_0x3411e6['id']);_0x5a0caf(_0x5b3adf);})[_0x8ad0('0x2a')](function(_0x10cd7e){_0x116e8e[_0x8ad0('0xa')][_0x3411e6['id']][_0x8ad0('0x2f')][_0x8ad0('0x11')]='error';_0x116e8e[_0x8ad0('0xa')][_0x3411e6['id']]['Smtp'][_0x8ad0('0x13')]=_0x10cd7e;_0x116e8e[_0x8ad0('0xd')](_0x3411e6['id']);_0x462a48(_0x10cd7e);});});}return this[_0x8ad0('0xb')]['verify'](_0x3411e6);};module['exports']=EmailChannel;
\ No newline at end of file
index 7178970..8fce0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fcd=['closeBox','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','handleFetchError','handleEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','lodash','simpleParser','iconv','events','EventEmitter','mailbox','INBOX','account','getAccount','imap','once','handleReady','bind','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','user','password','host','port','tls','autotls','required','getHost','email','anonymous@xcally.com','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','end'];(function(_0x15ae53,_0x8880f){var _0x318f5f=function(_0x73e1c8){while(--_0x73e1c8){_0x15ae53['push'](_0x15ae53['shift']());}};_0x318f5f(++_0x8880f);}(_0x5fcd,0x189));var _0xd5fc=function(_0x51104a,_0x2f3ae0){_0x51104a=_0x51104a-0x0;var _0x42d8e3=_0x5fcd[_0x51104a];return _0x42d8e3;};'use strict';var fs=require('fs');var path=require(_0xd5fc('0x0'));var util=require(_0xd5fc('0x1'));var Imap=require('imap');var _=require(_0xd5fc('0x2'));var rs=require('randomstring');var simpleParser=require('mailparser')[_0xd5fc('0x3')];var Iconv=require(_0xd5fc('0x4'))['Iconv'];var EventEmitter=require(_0xd5fc('0x5'))[_0xd5fc('0x6')];var utils=require('./utils');var logger=require('../../../config/logger')('email');function EmailImap(_0x3aee6,_0x57dd12){this[_0xd5fc('0x7')]=_0xd5fc('0x8');this[_0xd5fc('0x9')]=this[_0xd5fc('0xa')](_0x3aee6,_0x57dd12);this[_0xd5fc('0xb')]=new Imap(this[_0xd5fc('0x9')]);this[_0xd5fc('0xb')][_0xd5fc('0xc')]('ready',this[_0xd5fc('0xd')][_0xd5fc('0xe')](this));this[_0xd5fc('0xb')][_0xd5fc('0xc')]('end',this['handleEnd'][_0xd5fc('0xe')](this));this['imap']['on'](_0xd5fc('0xf'),this[_0xd5fc('0x10')][_0xd5fc('0xe')](this));this[_0xd5fc('0xb')][_0xd5fc('0x11')]();}util[_0xd5fc('0x12')](EmailImap,EventEmitter);EmailImap[_0xd5fc('0x13')]['getAccount']=function(_0x1aa193,_0x9f97c){var _0x4e5f2d={'connTimeout':_0x1aa193[_0xd5fc('0x14')]?_0x1aa193[_0xd5fc('0x14')]*0x3e8:0x2710,'authTimeout':_0x1aa193[_0xd5fc('0x15')]?_0x1aa193[_0xd5fc('0x15')]*0x3e8:0x1388};if(_[_0xd5fc('0x16')](_0x1aa193[_0xd5fc('0x17')])){if(_0x1aa193['authentication']){_0x4e5f2d[_0xd5fc('0x18')]=_0x1aa193[_0xd5fc('0x18')];_0x4e5f2d['password']=_0x1aa193[_0xd5fc('0x19')];}_0x4e5f2d[_0xd5fc('0x1a')]=_0x1aa193[_0xd5fc('0x1a')];_0x4e5f2d[_0xd5fc('0x1b')]=_0x1aa193[_0xd5fc('0x1b')]||0x3e1;if(_0x1aa193[_0xd5fc('0x1c')]){_0x4e5f2d[_0xd5fc('0x1c')]=!![];}else{_0x4e5f2d[_0xd5fc('0x1c')]=![];_0x4e5f2d[_0xd5fc('0x1d')]=_0xd5fc('0x1e');}}else{_0x4e5f2d['user']=_0x1aa193[_0xd5fc('0x18')];_0x4e5f2d['password']=_0x1aa193['password'];_0x4e5f2d['host']=utils[_0xd5fc('0x1f')](_0x1aa193[_0xd5fc('0x17')]);_0x4e5f2d[_0xd5fc('0x1b')]=0x3e1;_0x4e5f2d[_0xd5fc('0x1c')]=!![];}_0x4e5f2d[_0xd5fc('0x20')]=_0x9f97c||_0x1aa193[_0xd5fc('0x18')]||_0xd5fc('0x21');return _0x4e5f2d;};EmailImap[_0xd5fc('0x13')][_0xd5fc('0xd')]=function(){this[_0xd5fc('0xb')][_0xd5fc('0x22')](this['mailbox'],![],this[_0xd5fc('0x23')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x23')]=function(_0x2f49c4,_0x19a6a4){if(_0x2f49c4){this[_0xd5fc('0x10')](_0x2f49c4,!![]);}else{this[_0xd5fc('0x24')](_0xd5fc('0x25'),_0x19a6a4);this[_0xd5fc('0x26')]();}};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x27')]=function(_0x56ba0d){if(_0x56ba0d){this[_0xd5fc('0x10')](_0x56ba0d,!![]);}else{this[_0xd5fc('0xb')]['end']();}};EmailImap['prototype'][_0xd5fc('0x26')]=function(){this[_0xd5fc('0xb')][_0xd5fc('0x28')]([_0xd5fc('0x29')],this[_0xd5fc('0x2a')][_0xd5fc('0xe')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0x1ea19e,_0x37e77f){if(_0x1ea19e){this[_0xd5fc('0x10')](_0x1ea19e,!![]);}else{if(_0x37e77f[_0xd5fc('0x2b')]){try{var _0x18cd66=this[_0xd5fc('0xb')][_0xd5fc('0x2c')](_0x37e77f,{'bodies':'','markSeen':!![]});_0x18cd66['on'](_0xd5fc('0x2d'),this[_0xd5fc('0x2e')][_0xd5fc('0xe')](this));_0x18cd66[_0xd5fc('0xc')]('error',this['handleFetchError'][_0xd5fc('0xe')](this));_0x18cd66[_0xd5fc('0xc')](_0xd5fc('0x2f'),this['handleFetchEnd'][_0xd5fc('0xe')](this));}catch(_0xe12b86){logger['error'](_0xe12b86);}}else{this['imap'][_0xd5fc('0x30')](!![],this[_0xd5fc('0x27')]['bind'](this));}}};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x2e')]=function(_0x545929,_0xbe2876){_0x545929['on']('body',this[_0xd5fc('0x31')]['bind'](this));_0x545929[_0xd5fc('0xc')](_0xd5fc('0x32'),this[_0xd5fc('0x33')][_0xd5fc('0xe')](this));_0x545929[_0xd5fc('0xc')](_0xd5fc('0x2f'),this[_0xd5fc('0x34')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x31')]=function(_0x311634,_0x18606a){simpleParser(_0x311634,{'Iconv':Iconv},this['handleSimpleParser'][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x33')]=function(_0xf8a3f2){};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x34')]=function(){};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x35')]=function(_0x3870d4,_0x563090){if(_0x3870d4){logger[_0xd5fc('0xf')](_0x3870d4);}else{var _0x4975b2=this;utils[_0xd5fc('0x36')](this['account'],_0x563090,function(_0xd1c09a){_0x4975b2[_0xd5fc('0x24')](_0xd5fc('0x20'),_0xd1c09a);});}};EmailImap['prototype'][_0xd5fc('0x37')]=function(){this[_0xd5fc('0xb')]['closeBox'](!![],this[_0xd5fc('0x27')][_0xd5fc('0xe')](this));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x38')]=function(_0x3fe046){this[_0xd5fc('0x10')](_0x3fe046);this['imap'][_0xd5fc('0x30')](!![],this[_0xd5fc('0x27')][_0xd5fc('0xe')](this));};EmailImap['prototype'][_0xd5fc('0x39')]=function(){this[_0xd5fc('0x24')](_0xd5fc('0x2f'));};EmailImap[_0xd5fc('0x13')][_0xd5fc('0x10')]=function(_0x1b2eb3,_0x14e445){logger[_0xd5fc('0xf')](_0xd5fc('0x10'),this[_0xd5fc('0x9')][_0xd5fc('0x20')],JSON[_0xd5fc('0x3a')](_0x1b2eb3));var _0x15fa54='';if(_0x1b2eb3){if(_0x1b2eb3[_0xd5fc('0x3b')]){_0x15fa54=_0x1b2eb3[_0xd5fc('0x3b')];}else{for(var _0x280919 in _0x1b2eb3){if(_0x1b2eb3[_0xd5fc('0x3c')](_0x280919)){_0x15fa54+=_[_0xd5fc('0x3d')](_0x280919)+':\x20'+_0x1b2eb3[_0x280919]+'\x0a';}}}}if(_0x14e445){this['imap'][_0xd5fc('0x2f')]();}else{this[_0xd5fc('0x24')](_0xd5fc('0xf'),_0x15fa54);this['emit'](_0xd5fc('0x2f'));}};module[_0xd5fc('0x3e')]=EmailImap;
\ No newline at end of file
+var _0xaba3=['account','getAccount','ready','handleReady','once','handleEnd','bind','error','handleError','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','getHost','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','end','search','handleReadUnseen','fetch','message','handleFetchMessage','handleFetchEnd','closeBox','body','handleMessageBody','handleMessageEnd','handleSimpleParser','parser','handleFetchError','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','randomstring','mailparser','simpleParser','Iconv','events','./utils','../../../config/logger','email','mailbox','INBOX'];(function(_0x35f798,_0x5e6cea){var _0x29bd97=function(_0x5691d7){while(--_0x5691d7){_0x35f798['push'](_0x35f798['shift']());}};_0x29bd97(++_0x5e6cea);}(_0xaba3,0x123));var _0x3aba=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0xaba3[_0x1beef3];return _0x5af964;};'use strict';var fs=require('fs');var path=require(_0x3aba('0x0'));var util=require(_0x3aba('0x1'));var Imap=require(_0x3aba('0x2'));var _=require(_0x3aba('0x3'));var rs=require(_0x3aba('0x4'));var simpleParser=require(_0x3aba('0x5'))[_0x3aba('0x6')];var Iconv=require('iconv')[_0x3aba('0x7')];var EventEmitter=require(_0x3aba('0x8'))['EventEmitter'];var utils=require(_0x3aba('0x9'));var logger=require(_0x3aba('0xa'))(_0x3aba('0xb'));function EmailImap(_0xdb66a0,_0x13499b){this[_0x3aba('0xc')]=_0x3aba('0xd');this[_0x3aba('0xe')]=this[_0x3aba('0xf')](_0xdb66a0,_0x13499b);this['imap']=new Imap(this[_0x3aba('0xe')]);this[_0x3aba('0x2')]['once'](_0x3aba('0x10'),this[_0x3aba('0x11')]['bind'](this));this[_0x3aba('0x2')][_0x3aba('0x12')]('end',this[_0x3aba('0x13')][_0x3aba('0x14')](this));this[_0x3aba('0x2')]['on'](_0x3aba('0x15'),this[_0x3aba('0x16')][_0x3aba('0x14')](this));this[_0x3aba('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x3aba('0x17')][_0x3aba('0xf')]=function(_0x18e726,_0x1bbe38){var _0x1c78c8={'connTimeout':_0x18e726[_0x3aba('0x18')]?_0x18e726[_0x3aba('0x18')]*0x3e8:0x2710,'authTimeout':_0x18e726[_0x3aba('0x19')]?_0x18e726[_0x3aba('0x19')]*0x3e8:0x1388};if(_[_0x3aba('0x1a')](_0x18e726[_0x3aba('0x1b')])){if(_0x18e726[_0x3aba('0x1c')]){_0x1c78c8[_0x3aba('0x1d')]=_0x18e726['user'];_0x1c78c8[_0x3aba('0x1e')]=_0x18e726['password'];}_0x1c78c8[_0x3aba('0x1f')]=_0x18e726[_0x3aba('0x1f')];_0x1c78c8['port']=_0x18e726[_0x3aba('0x20')]||0x3e1;if(_0x18e726['tls']){_0x1c78c8[_0x3aba('0x21')]=!![];}else{_0x1c78c8[_0x3aba('0x21')]=![];_0x1c78c8[_0x3aba('0x22')]='required';}}else{_0x1c78c8[_0x3aba('0x1d')]=_0x18e726['user'];_0x1c78c8[_0x3aba('0x1e')]=_0x18e726[_0x3aba('0x1e')];_0x1c78c8[_0x3aba('0x1f')]=utils[_0x3aba('0x23')](_0x18e726['service']);_0x1c78c8['port']=0x3e1;_0x1c78c8[_0x3aba('0x21')]=!![];}_0x1c78c8[_0x3aba('0xb')]=_0x1bbe38||_0x18e726['user']||'anonymous@xcally.com';return _0x1c78c8;};EmailImap[_0x3aba('0x17')]['handleReady']=function(){this['imap'][_0x3aba('0x24')](this[_0x3aba('0xc')],![],this[_0x3aba('0x25')][_0x3aba('0x14')](this));};EmailImap['prototype'][_0x3aba('0x25')]=function(_0x12381b,_0x176d1d){if(_0x12381b){this['handleError'](_0x12381b,!![]);}else{this[_0x3aba('0x26')](_0x3aba('0x27'),_0x176d1d);this[_0x3aba('0x28')]();}};EmailImap[_0x3aba('0x17')][_0x3aba('0x29')]=function(_0x18b5ab){if(_0x18b5ab){this[_0x3aba('0x16')](_0x18b5ab,!![]);}else{this[_0x3aba('0x2')][_0x3aba('0x2a')]();}};EmailImap[_0x3aba('0x17')]['readUnseen']=function(){this['imap'][_0x3aba('0x2b')](['UNSEEN'],this[_0x3aba('0x2c')][_0x3aba('0x14')](this));};EmailImap[_0x3aba('0x17')][_0x3aba('0x2c')]=function(_0x13048d,_0x4c1d0d){if(_0x13048d){this['handleError'](_0x13048d,!![]);}else{if(_0x4c1d0d['length']){try{var _0x809420=this[_0x3aba('0x2')][_0x3aba('0x2d')](_0x4c1d0d,{'bodies':'','markSeen':!![]});_0x809420['on'](_0x3aba('0x2e'),this[_0x3aba('0x2f')]['bind'](this));_0x809420[_0x3aba('0x12')](_0x3aba('0x15'),this['handleFetchError'][_0x3aba('0x14')](this));_0x809420[_0x3aba('0x12')](_0x3aba('0x2a'),this[_0x3aba('0x30')][_0x3aba('0x14')](this));}catch(_0x30c9f9){logger[_0x3aba('0x15')](_0x30c9f9);}}else{this[_0x3aba('0x2')][_0x3aba('0x31')](!![],this[_0x3aba('0x29')][_0x3aba('0x14')](this));}}};EmailImap['prototype']['handleFetchMessage']=function(_0x20abba,_0x518900){_0x20abba['on'](_0x3aba('0x32'),this[_0x3aba('0x33')][_0x3aba('0x14')](this));_0x20abba[_0x3aba('0x12')]('attributes',this['handleMessageAttributes']['bind'](this));_0x20abba['once'](_0x3aba('0x2a'),this[_0x3aba('0x34')][_0x3aba('0x14')](this));};EmailImap[_0x3aba('0x17')][_0x3aba('0x33')]=function(_0x271b6a,_0x29a014){simpleParser(_0x271b6a,{'Iconv':Iconv},this[_0x3aba('0x35')][_0x3aba('0x14')](this));};EmailImap['prototype']['handleMessageAttributes']=function(_0x5c308a){};EmailImap['prototype'][_0x3aba('0x34')]=function(){};EmailImap[_0x3aba('0x17')][_0x3aba('0x35')]=function(_0x4f9eb6,_0x4ae4a0){if(_0x4f9eb6){logger[_0x3aba('0x15')](_0x4f9eb6);}else{var _0x2e2d1d=this;utils[_0x3aba('0x36')](this[_0x3aba('0xe')],_0x4ae4a0,function(_0xf622ee){_0x2e2d1d[_0x3aba('0x26')]('email',_0xf622ee);});}};EmailImap['prototype'][_0x3aba('0x30')]=function(){this['imap']['closeBox'](!![],this['handleCloseBox'][_0x3aba('0x14')](this));};EmailImap['prototype'][_0x3aba('0x37')]=function(_0x48c69f){this['handleError'](_0x48c69f);this[_0x3aba('0x2')][_0x3aba('0x31')](!![],this[_0x3aba('0x29')][_0x3aba('0x14')](this));};EmailImap['prototype'][_0x3aba('0x13')]=function(){this['emit'](_0x3aba('0x2a'));};EmailImap[_0x3aba('0x17')][_0x3aba('0x16')]=function(_0x54b4a5,_0x29102a){logger['error']('handleError',this[_0x3aba('0xe')][_0x3aba('0xb')],JSON[_0x3aba('0x38')](_0x54b4a5));var _0x391ef8='';if(_0x54b4a5){if(_0x54b4a5[_0x3aba('0x39')]){_0x391ef8=_0x54b4a5[_0x3aba('0x39')];}else{for(var _0x41de2c in _0x54b4a5){if(_0x54b4a5[_0x3aba('0x3a')](_0x41de2c)){_0x391ef8+=_[_0x3aba('0x3b')](_0x41de2c)+':\x20'+_0x54b4a5[_0x41de2c]+'\x0a';}}}}if(_0x29102a){this[_0x3aba('0x2')][_0x3aba('0x2a')]();}else{this[_0x3aba('0x26')](_0x3aba('0x15'),_0x391ef8);this[_0x3aba('0x26')](_0x3aba('0x2a'));}};module[_0x3aba('0x3c')]=EmailImap;
\ No newline at end of file
index 74cd2d8..ca9cfe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb251=['verify','Not\x20verifired','exports','prototype','send','createTransport','use','compile','toString'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0xb251,0x1c5));var _0x1b25=function(_0x3f7dc6,_0x2a513a){_0x3f7dc6=_0x3f7dc6-0x0;var _0x2d89a3=_0xb251[_0x3f7dc6];return _0x2d89a3;};'use strict';var nodemailer=require('nodemailer');var BPromise=require('bluebird');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x1b25('0x0')][_0x1b25('0x1')]=function(_0x38b156,_0x4d334e){return new BPromise(function(_0x4e814e,_0x2e0a64){var _0x32a88a=nodemailer[_0x1b25('0x2')](_0x38b156);_0x32a88a[_0x1b25('0x3')](_0x1b25('0x4'),inlineBase64());_0x32a88a['sendMail'](_0x4d334e,function(_0x2d9c77,_0x24bc25){if(_0x2d9c77){_0x2e0a64(_0x2d9c77[_0x1b25('0x5')]());}else{_0x4e814e(_0x24bc25);}});});};EmailSmtp[_0x1b25('0x0')][_0x1b25('0x6')]=function(_0x4e6d77){return new BPromise(function(_0x185353,_0x3ec2c4){var _0x194a20=nodemailer[_0x1b25('0x2')](_0x4e6d77);_0x194a20[_0x1b25('0x6')](function(_0x5ef5d4,_0x362717){if(_0x5ef5d4){_0x3ec2c4(_0x5ef5d4[_0x1b25('0x5')]());}else{if(_0x362717){_0x185353(_0x362717);}else{_0x3ec2c4(_0x1b25('0x7'));}}});});};module[_0x1b25('0x8')]=EmailSmtp;
\ No newline at end of file
+var _0xca28=['verify','Not\x20verifired','exports','nodemailer','prototype','send','createTransport','use','sendMail','toString'];(function(_0x158988,_0x30addd){var _0x2bd5cd=function(_0x15f3b2){while(--_0x15f3b2){_0x158988['push'](_0x158988['shift']());}};_0x2bd5cd(++_0x30addd);}(_0xca28,0xe9));var _0x8ca2=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xca28[_0xfae23b];return _0x200640;};'use strict';var nodemailer=require(_0x8ca2('0x0'));var BPromise=require('bluebird');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x8ca2('0x1')][_0x8ca2('0x2')]=function(_0x1eec4d,_0x53fed0){return new BPromise(function(_0x5df90f,_0x43da56){var _0xd04f68=nodemailer[_0x8ca2('0x3')](_0x1eec4d);_0xd04f68[_0x8ca2('0x4')]('compile',inlineBase64());_0xd04f68[_0x8ca2('0x5')](_0x53fed0,function(_0x1e9aad,_0xf7345b){if(_0x1e9aad){_0x43da56(_0x1e9aad[_0x8ca2('0x6')]());}else{_0x5df90f(_0xf7345b);}});});};EmailSmtp[_0x8ca2('0x1')][_0x8ca2('0x7')]=function(_0xca84dc){return new BPromise(function(_0x14a84c,_0x450899){var _0x4fca36=nodemailer[_0x8ca2('0x3')](_0xca84dc);_0x4fca36[_0x8ca2('0x7')](function(_0x13286b,_0x1bd036){if(_0x13286b){_0x450899(_0x13286b[_0x8ca2('0x6')]());}else{if(_0x1bd036){_0x14a84c(_0x1bd036);}else{_0x450899(_0x8ca2('0x8'));}}});});};module[_0x8ca2('0x9')]=EmailSmtp;
\ No newline at end of file
index 78e7fbd..a730795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe829=['html','test','replace','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','email','message','originCc','includes','originTo','bcc','attach','attachment','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','address','anonymous','@xcally.com','head','name','substring','indexOf','split','length','join','Anonymous','pop','value','isEmpty'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xe829,0xde));var _0x9e82=function(_0x4730bd,_0x1e9541){_0x4730bd=_0x4730bd-0x0;var _0x1b2849=_0xe829[_0x4730bd];return _0x1b2849;};'use strict';var _=require('lodash');var moment=require(_0x9e82('0x0'));var random=require(_0x9e82('0x1'));var fs=require('fs');var path=require(_0x9e82('0x2'));var util=require(_0x9e82('0x3'));var tnef=require(_0x9e82('0x4'));var logger=require(_0x9e82('0x5'))('email');var config=require(_0x9e82('0x6'));function getAddress(_0x19ece0){var _0x4bd524=_['head'](_0x19ece0['value']);return _0x4bd524&&_0x4bd524[_0x9e82('0x7')]?_0x4bd524[_0x9e82('0x7')]:_0x9e82('0x8')+random['generate'](0x6)+_0x9e82('0x9');}function getFirstName(_0x2b1ecb){var _0x2d83f8=_[_0x9e82('0xa')](_0x2b1ecb['value']);if(_0x2d83f8&&_0x2d83f8[_0x9e82('0xb')]){if(_0x2d83f8[_0x9e82('0xb')]==_0x2d83f8['address']){return _0x2d83f8[_0x9e82('0xb')][_0x9e82('0xc')](0x0,_0x2d83f8['name'][_0x9e82('0xd')]('@'));}var _0x2f0639=_0x2d83f8[_0x9e82('0xb')][_0x9e82('0xe')](/\s+/);return _0x2f0639[_0x9e82('0xf')]>0x1?_0x2f0639['slice'](0x0,-0x1)[_0x9e82('0x10')]('\x20'):_0x2d83f8[_0x9e82('0xb')];}return _0x9e82('0x11');}function getLastName(_0x6a793a){var _0x583c49=_['head'](_0x6a793a['value']);if(_0x583c49&&_0x583c49['name']){var _0x5909a6=_0x583c49[_0x9e82('0xb')]['split'](/\s+/);return _0x5909a6[_0x9e82('0xf')]>0x1?_0x5909a6[_0x9e82('0x12')]():'';}return'';}function getMails(_0x1bdf3f,_0x37cea0){var _0x4fa628='';for(var _0x36c82e=0x0;_0x36c82e<_0x37cea0[_0x9e82('0x13')]['length'];_0x36c82e+=0x1){if(_0x37cea0['value'][_0x36c82e][_0x9e82('0x7')]!==_0x1bdf3f){if(!_[_0x9e82('0x14')](_0x4fa628)){_0x4fa628+=',';}_0x4fa628+=_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0xb')]||_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0x7')]||'';_0x4fa628+='\x20<';_0x4fa628+=_0x37cea0[_0x9e82('0x13')][_0x36c82e]['address']?_0x37cea0[_0x9e82('0x13')][_0x36c82e][_0x9e82('0x7')]:_0x9e82('0x8')+random['generate'](0x6)+_0x9e82('0x9');_0x4fa628+='>';}}return _0x4fa628;}function parseEmail(_0x516302,_0x2e8cec,_0x2fd0fa){if(_0x2e8cec[_0x9e82('0x15')]){var _0xede436=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xede436[_0x9e82('0x16')](_0x2e8cec['html'])){_0x2e8cec[_0x9e82('0x15')]=_0x2e8cec[_0x9e82('0x15')][_0x9e82('0x17')](_0xede436,'');}if(_0x2e8cec[_0x9e82('0x15')]['includes']('<img')){var _0x2f7d3f=[];_0x2e8cec[_0x9e82('0x18')][_0x9e82('0x19')](_0x1c0646=>{_0x2f7d3f[_0x9e82('0x1a')](_0x1c0646[_0x9e82('0x1b')]);});var _0x54ffa4=/<img.*? _SRC(.*?)[^>]+>/g;var _0x18c645=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4c2778=_0x2e8cec['html'][_0x9e82('0x17')](_0x18c645,'_SRC');var _0x5a5a4e=_0x4c2778[_0x9e82('0x17')](_0x54ffa4,_0x9e82('0x1c'));for(let _0x2ceb2a=0x0;_0x2ceb2a<_0x2f7d3f[_0x9e82('0xf')];_0x2ceb2a++){var _0x19491d=_0x5a5a4e['replace']('_IMG',_0x9e82('0x1d')+_0x2f7d3f[_0x2ceb2a]+_0x9e82('0x1e'));_0x5a5a4e=_0x19491d;}_0x2e8cec[_0x9e82('0x15')]=_0x5a5a4e;}_0x2fd0fa['body']=_0x2e8cec['html'];}else{_0x2fd0fa[_0x9e82('0x1f')]=_0x2e8cec[_0x9e82('0x20')];}if(_0x2fd0fa[_0x9e82('0x1f')]){_0x2fd0fa[_0x9e82('0x1f')]=_0x2fd0fa[_0x9e82('0x1f')][_0x9e82('0x17')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x2e8cec['to']){_0x2fd0fa['message']['originTo']=getMails(null,_0x2e8cec['to']);var _0x5579c2=getMails(_0x516302[_0x9e82('0x21')],_0x2e8cec['to']);if(!_[_0x9e82('0x14')](_0x5579c2)){_0x2fd0fa[_0x9e82('0x22')]['cc']+=_0x5579c2;}}if(_0x2e8cec['cc']){_0x2fd0fa['message'][_0x9e82('0x23')]=getMails(null,_0x2e8cec['cc']);var _0x4398c7=getMails(_0x516302['email'],_0x2e8cec['cc']);if(!_[_0x9e82('0x14')](_0x4398c7)){if(!_[_0x9e82('0x14')](_0x2fd0fa[_0x9e82('0x22')]['cc'])){_0x2fd0fa[_0x9e82('0x22')]['cc']+=',';}_0x2fd0fa[_0x9e82('0x22')]['cc']+=_0x4398c7;}}if(!_[_0x9e82('0x24')](_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x25')],_0x516302[_0x9e82('0x21')])&&!_[_0x9e82('0x24')](_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x23')],_0x516302[_0x9e82('0x21')])){_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x26')]=_0x516302[_0x9e82('0x21')];}if(_0x2e8cec[_0x9e82('0x18')]&&_0x2e8cec[_0x9e82('0x18')][_0x9e82('0xf')]){_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x27')]=_0x2e8cec[_0x9e82('0x18')][_0x9e82('0xf')];for(var _0x164c4d=0x0,_0x2ff371,_0x2709fa,_0x2f406f;_0x164c4d<_0x2e8cec['attachments']['length'];_0x164c4d+=0x1){if(_0x2e8cec['attachments'][_0x164c4d]['type']===_0x9e82('0x28')){_0x2f406f=_0x2e8cec[_0x9e82('0x18')][_0x164c4d][_0x9e82('0x1b')]||_0x9e82('0x29')+_0x164c4d;_0x2ff371=util[_0x9e82('0x2a')](_0x9e82('0x2b'),Date[_0x9e82('0x2c')](),_0x2f406f);_0x2709fa=path[_0x9e82('0x10')](config[_0x9e82('0x2d')],_0x9e82('0x2e'),_0x2ff371);fs[_0x9e82('0x2f')](_0x2709fa,_0x2e8cec[_0x9e82('0x18')][_0x164c4d]['content']);_0x2fd0fa[_0x9e82('0x22')][_0x9e82('0x18')][_0x9e82('0x1a')]({'name':_0x2f406f,'basename':_0x2ff371,'type':_0x2e8cec['attachments'][_0x164c4d][_0x9e82('0x30')],'filepath':_0x2709fa});}}}if(_0x2e8cec[_0x9e82('0x31')]&&_0x2e8cec[_0x9e82('0x31')]['length']>0x0){var _0x12fbdb=[_0x9e82('0x32'),_0x9e82('0x33'),_0x9e82('0x34')];for(var _0x1d652b=0x0;_0x1d652b<_0x2e8cec[_0x9e82('0x31')][_0x9e82('0xf')];_0x1d652b++){var _0x179a7b=_[_0x9e82('0xd')](_0x12fbdb,_0x2e8cec[_0x9e82('0x31')][_0x1d652b][_0x9e82('0x35')]);if(_0x179a7b>=0x0){_0x2fd0fa['isAutoreply']=!![];}}}return _0x2fd0fa;}exports[_0x9e82('0x36')]=function(_0x3f9020,_0x2c5622,_0x4a3fda){var _0x5c1542={'from':getAddress(_0x2c5622['from']),'firstName':getFirstName(_0x2c5622[_0x9e82('0x37')]),'lastName':getLastName(_0x2c5622[_0x9e82('0x37')]),'mapKey':_0x9e82('0x21'),'message':{'from':getMails(_0x3f9020['email'],_0x2c5622[_0x9e82('0x37')]),'to':_0x3f9020[_0x9e82('0x21')],'cc':'','subject':_0x2c5622[_0x9e82('0x38')]||'','messageId':_0x2c5622[_0x9e82('0x39')],'inReplyTo':_0x2c5622[_0x9e82('0x3a')],'sentAt':moment(_0x2c5622[_0x9e82('0x3b')])['format'](_0x9e82('0x3c')),'attach':![],'attachments':[]}};if(!_0x2c5622['html']&&!_0x2c5622['textAsHtml']){var _0x2be969=_[_0x9e82('0x3d')](_0x2c5622[_0x9e82('0x18')],{'contentType':_0x9e82('0x3e')});if(_0x2be969[_0x9e82('0xf')]){logger[_0x9e82('0x3f')](util[_0x9e82('0x2a')](_0x9e82('0x40'),_0x2c5622['messageId']));tnef[_0x9e82('0x41')](_['first'](_0x2be969)[_0x9e82('0x42')],function(_0x2ccaa3,_0x800eff){if(_0x800eff){_0x2c5622[_0x9e82('0x15')]=_0x800eff[_0x9e82('0x43')]||_0x9e82('0x44');if(_0x800eff[_0x9e82('0x45')]){for(var _0x418ca3=0x0;_0x418ca3<_0x800eff[_0x9e82('0x45')]['length'];_0x418ca3++){var _0x23040=_0x800eff[_0x9e82('0x45')][_0x418ca3];_0x5c1542[_0x9e82('0x22')][_0x9e82('0x18')][_0x9e82('0x1a')]({'filename':_0x23040[_0x9e82('0x46')],'content':Buffer[_0x9e82('0x37')](_0x23040[_0x9e82('0x47')])});}}}_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));});}else{_0x2c5622[_0x9e82('0x15')]=_0x9e82('0x44');_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));}}else{_0x4a3fda(parseEmail(_0x3f9020,_0x2c5622,_0x5c1542));}};exports[_0x9e82('0x48')]=function(_0x9426c){switch(_0x9426c){case _0x9e82('0x49'):return _0x9e82('0x4a');case'yahoo':return _0x9e82('0x4b');case _0x9e82('0x4c'):return _0x9e82('0x4d');case _0x9e82('0x4e'):return _0x9e82('0x4f');}return _0x9e82('0x50');};
\ No newline at end of file
+var _0x8aad=['server/files/attachments/','writeFileSync','content','contentType','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','format','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','Attachments','Title','Data','<p>Empty\x20message</p>','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook.office365.com','127.0.0.1','lodash','moment','path','node-tnef','../../../config/logger','value','address','generate','@xcally.com','name','substring','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','anonymous','html','replace','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','email','message','originCc','bcc','attach','type','attachment','%s-%s','root'];(function(_0x90fdd9,_0x126f21){var _0x16c8cd=function(_0x55c271){while(--_0x55c271){_0x90fdd9['push'](_0x90fdd9['shift']());}};_0x16c8cd(++_0x126f21);}(_0x8aad,0x146));var _0xd8aa=function(_0x3cab32,_0x342761){_0x3cab32=_0x3cab32-0x0;var _0x525264=_0x8aad[_0x3cab32];return _0x525264;};'use strict';var _=require(_0xd8aa('0x0'));var moment=require(_0xd8aa('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0xd8aa('0x2'));var util=require('util');var tnef=require(_0xd8aa('0x3'));var logger=require(_0xd8aa('0x4'))('email');var config=require('../../../config/environment');function getAddress(_0x401aef){var _0x59804a=_['head'](_0x401aef[_0xd8aa('0x5')]);return _0x59804a&&_0x59804a[_0xd8aa('0x6')]?_0x59804a[_0xd8aa('0x6')]:'anonymous'+random[_0xd8aa('0x7')](0x6)+_0xd8aa('0x8');}function getFirstName(_0x2a23b5){var _0x350171=_['head'](_0x2a23b5['value']);if(_0x350171&&_0x350171[_0xd8aa('0x9')]){if(_0x350171[_0xd8aa('0x9')]==_0x350171[_0xd8aa('0x6')]){return _0x350171[_0xd8aa('0x9')][_0xd8aa('0xa')](0x0,_0x350171['name'][_0xd8aa('0xb')]('@'));}var _0x1619c6=_0x350171[_0xd8aa('0x9')][_0xd8aa('0xc')](/\s+/);return _0x1619c6[_0xd8aa('0xd')]>0x1?_0x1619c6[_0xd8aa('0xe')](0x0,-0x1)[_0xd8aa('0xf')]('\x20'):_0x350171[_0xd8aa('0x9')];}return _0xd8aa('0x10');}function getLastName(_0x364280){var _0x5ea934=_['head'](_0x364280[_0xd8aa('0x5')]);if(_0x5ea934&&_0x5ea934[_0xd8aa('0x9')]){var _0x2bbd1e=_0x5ea934['name'][_0xd8aa('0xc')](/\s+/);return _0x2bbd1e[_0xd8aa('0xd')]>0x1?_0x2bbd1e[_0xd8aa('0x11')]():'';}return'';}function getMails(_0x404ed6,_0x47a0e3){var _0x476930='';for(var _0xa9ba1b=0x0;_0xa9ba1b<_0x47a0e3['value'][_0xd8aa('0xd')];_0xa9ba1b+=0x1){if(_0x47a0e3[_0xd8aa('0x5')][_0xa9ba1b][_0xd8aa('0x6')]!==_0x404ed6){if(!_[_0xd8aa('0x12')](_0x476930)){_0x476930+=',';}_0x476930+=_0x47a0e3[_0xd8aa('0x5')][_0xa9ba1b]['name']||_0x47a0e3[_0xd8aa('0x5')][_0xa9ba1b][_0xd8aa('0x6')]||'';_0x476930+='\x20<';_0x476930+=_0x47a0e3[_0xd8aa('0x5')][_0xa9ba1b][_0xd8aa('0x6')]?_0x47a0e3['value'][_0xa9ba1b][_0xd8aa('0x6')]:_0xd8aa('0x13')+random[_0xd8aa('0x7')](0x6)+_0xd8aa('0x8');_0x476930+='>';}}return _0x476930;}function parseEmail(_0x16694e,_0x4fe5d8,_0xe1219){if(_0x4fe5d8[_0xd8aa('0x14')]){var _0xc4f55c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xc4f55c['test'](_0x4fe5d8[_0xd8aa('0x14')])){_0x4fe5d8[_0xd8aa('0x14')]=_0x4fe5d8[_0xd8aa('0x14')][_0xd8aa('0x15')](_0xc4f55c,'');}if(_0x4fe5d8[_0xd8aa('0x14')][_0xd8aa('0x16')](_0xd8aa('0x17'))){var _0x34d957=[];_0x4fe5d8[_0xd8aa('0x18')][_0xd8aa('0x19')](_0x6614ab=>{_0x34d957[_0xd8aa('0x1a')](_0x6614ab[_0xd8aa('0x1b')]);});var _0x5f1027=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1f066a=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x59eb3f=_0x4fe5d8[_0xd8aa('0x14')][_0xd8aa('0x15')](_0x1f066a,_0xd8aa('0x1c'));var _0x3696fd=_0x59eb3f[_0xd8aa('0x15')](_0x5f1027,_0xd8aa('0x1d'));for(let _0x3bba1d=0x0;_0x3bba1d<_0x34d957[_0xd8aa('0xd')];_0x3bba1d++){var _0x4cdb90=_0x3696fd[_0xd8aa('0x15')](_0xd8aa('0x1d'),_0xd8aa('0x1e')+_0x34d957[_0x3bba1d]+'\x20]</span>');_0x3696fd=_0x4cdb90;}_0x4fe5d8[_0xd8aa('0x14')]=_0x3696fd;}_0xe1219['body']=_0x4fe5d8[_0xd8aa('0x14')];}else{_0xe1219[_0xd8aa('0x1f')]=_0x4fe5d8[_0xd8aa('0x20')];}if(_0xe1219[_0xd8aa('0x1f')]){_0xe1219[_0xd8aa('0x1f')]=_0xe1219[_0xd8aa('0x1f')][_0xd8aa('0x15')](/<a\s+/gi,_0xd8aa('0x21'));}if(_0x4fe5d8['to']){_0xe1219['message'][_0xd8aa('0x22')]=getMails(null,_0x4fe5d8['to']);var _0x1c6fe6=getMails(_0x16694e[_0xd8aa('0x23')],_0x4fe5d8['to']);if(!_[_0xd8aa('0x12')](_0x1c6fe6)){_0xe1219[_0xd8aa('0x24')]['cc']+=_0x1c6fe6;}}if(_0x4fe5d8['cc']){_0xe1219[_0xd8aa('0x24')][_0xd8aa('0x25')]=getMails(null,_0x4fe5d8['cc']);var _0x3133fb=getMails(_0x16694e['email'],_0x4fe5d8['cc']);if(!_[_0xd8aa('0x12')](_0x3133fb)){if(!_[_0xd8aa('0x12')](_0xe1219[_0xd8aa('0x24')]['cc'])){_0xe1219['message']['cc']+=',';}_0xe1219[_0xd8aa('0x24')]['cc']+=_0x3133fb;}}if(!_[_0xd8aa('0x16')](_0xe1219[_0xd8aa('0x24')][_0xd8aa('0x22')],_0x16694e[_0xd8aa('0x23')])&&!_[_0xd8aa('0x16')](_0xe1219[_0xd8aa('0x24')][_0xd8aa('0x25')],_0x16694e[_0xd8aa('0x23')])){_0xe1219['message'][_0xd8aa('0x26')]=_0x16694e[_0xd8aa('0x23')];}if(_0x4fe5d8[_0xd8aa('0x18')]&&_0x4fe5d8[_0xd8aa('0x18')][_0xd8aa('0xd')]){_0xe1219[_0xd8aa('0x24')][_0xd8aa('0x27')]=_0x4fe5d8[_0xd8aa('0x18')][_0xd8aa('0xd')];for(var _0x5983f6=0x0,_0x1df47c,_0x50ef57,_0x18d7fe;_0x5983f6<_0x4fe5d8[_0xd8aa('0x18')]['length'];_0x5983f6+=0x1){if(_0x4fe5d8[_0xd8aa('0x18')][_0x5983f6][_0xd8aa('0x28')]===_0xd8aa('0x29')){_0x18d7fe=_0x4fe5d8[_0xd8aa('0x18')][_0x5983f6][_0xd8aa('0x1b')]||'attachment-'+_0x5983f6;_0x1df47c=util['format'](_0xd8aa('0x2a'),Date['now'](),_0x18d7fe);_0x50ef57=path[_0xd8aa('0xf')](config[_0xd8aa('0x2b')],_0xd8aa('0x2c'),_0x1df47c);fs[_0xd8aa('0x2d')](_0x50ef57,_0x4fe5d8[_0xd8aa('0x18')][_0x5983f6][_0xd8aa('0x2e')]);_0xe1219[_0xd8aa('0x24')][_0xd8aa('0x18')][_0xd8aa('0x1a')]({'name':_0x18d7fe,'basename':_0x1df47c,'type':_0x4fe5d8[_0xd8aa('0x18')][_0x5983f6][_0xd8aa('0x2f')],'filepath':_0x50ef57});}}}if(_0x4fe5d8['headerLines']&&_0x4fe5d8[_0xd8aa('0x30')][_0xd8aa('0xd')]>0x0){var _0x1d8d59=['Auto-Submitted:\x20auto-replied',_0xd8aa('0x31'),_0xd8aa('0x32')];for(var _0x417ff9=0x0;_0x417ff9<_0x4fe5d8[_0xd8aa('0x30')][_0xd8aa('0xd')];_0x417ff9++){var _0x3bbb17=_[_0xd8aa('0xb')](_0x1d8d59,_0x4fe5d8[_0xd8aa('0x30')][_0x417ff9][_0xd8aa('0x33')]);if(_0x3bbb17>=0x0){_0xe1219[_0xd8aa('0x34')]=!![];}}}return _0xe1219;}exports[_0xd8aa('0x35')]=function(_0x3ec42f,_0x3b26c9,_0x18bea0){var _0x30ed50={'from':getAddress(_0x3b26c9[_0xd8aa('0x36')]),'firstName':getFirstName(_0x3b26c9[_0xd8aa('0x36')]),'lastName':getLastName(_0x3b26c9[_0xd8aa('0x36')]),'mapKey':'email','message':{'from':getMails(_0x3ec42f[_0xd8aa('0x23')],_0x3b26c9[_0xd8aa('0x36')]),'to':_0x3ec42f[_0xd8aa('0x23')],'cc':'','subject':_0x3b26c9[_0xd8aa('0x37')]||'','messageId':_0x3b26c9[_0xd8aa('0x38')],'inReplyTo':_0x3b26c9[_0xd8aa('0x39')],'sentAt':moment(_0x3b26c9['date'])[_0xd8aa('0x3a')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x3b26c9[_0xd8aa('0x14')]&&!_0x3b26c9['textAsHtml']){var _0x59565f=_['filter'](_0x3b26c9['attachments'],{'contentType':_0xd8aa('0x3b')});if(_0x59565f[_0xd8aa('0xd')]){logger[_0xd8aa('0x3c')](util[_0xd8aa('0x3a')](_0xd8aa('0x3d'),_0x3b26c9[_0xd8aa('0x38')]));tnef['parseBuffer'](_[_0xd8aa('0x3e')](_0x59565f)[_0xd8aa('0x2e')],function(_0x22325c,_0xf6728d){if(_0xf6728d){_0x3b26c9[_0xd8aa('0x14')]=_0xf6728d['BodyHTML']||'<p>Empty\x20message</p>';if(_0xf6728d['Attachments']){for(var _0x1fd1dc=0x0;_0x1fd1dc<_0xf6728d[_0xd8aa('0x3f')][_0xd8aa('0xd')];_0x1fd1dc++){var _0x2ae10b=_0xf6728d[_0xd8aa('0x3f')][_0x1fd1dc];_0x30ed50[_0xd8aa('0x24')]['attachments'][_0xd8aa('0x1a')]({'filename':_0x2ae10b[_0xd8aa('0x40')],'content':Buffer['from'](_0x2ae10b[_0xd8aa('0x41')])});}}}_0x18bea0(parseEmail(_0x3ec42f,_0x3b26c9,_0x30ed50));});}else{_0x3b26c9[_0xd8aa('0x14')]=_0xd8aa('0x42');_0x18bea0(parseEmail(_0x3ec42f,_0x3b26c9,_0x30ed50));}}else{_0x18bea0(parseEmail(_0x3ec42f,_0x3b26c9,_0x30ed50));}};exports['getHost']=function(_0xee55b3){switch(_0xee55b3){case _0xd8aa('0x43'):return _0xd8aa('0x44');case _0xd8aa('0x45'):return _0xd8aa('0x46');case _0xd8aa('0x47'):return'imap-mail.outlook.com';case'outlook365':return _0xd8aa('0x48');}return _0xd8aa('0x49');};
\ No newline at end of file
index 4956bc7..5f8aedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfae9=['Service','key','SERV','active','Imap','Smtp','exports','lodash','name'];(function(_0x106a78,_0x591cae){var _0x221cc6=function(_0x3533a4){while(--_0x3533a4){_0x106a78['push'](_0x106a78['shift']());}};_0x221cc6(++_0x591cae);}(_0xfae9,0x7c));var _0x9fae=function(_0x29e2af,_0x15e2b1){_0x29e2af=_0x29e2af-0x0;var _0x1ea06a=_0xfae9[_0x29e2af];return _0x1ea06a;};'use strict';var _=require(_0x9fae('0x0'));function MailAccount(_0x39db91){this['id']=_0x39db91['id']||0x0;this[_0x9fae('0x1')]=_0x39db91[_0x9fae('0x1')]||_0x9fae('0x2');this[_0x9fae('0x3')]=_0x39db91[_0x9fae('0x3')]||_0x9fae('0x4');this[_0x9fae('0x5')]=_0x39db91[_0x9fae('0x5')]||![];this[_0x9fae('0x6')]=_0x39db91[_0x9fae('0x6')]||[];this[_0x9fae('0x7')]=_0x39db91[_0x9fae('0x7')]||[];}module[_0x9fae('0x8')]=MailAccount;
\ No newline at end of file
+var _0x9d15=['key','SERV','active','Imap','Smtp','exports','lodash'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x9d15,0x156));var _0x59d1=function(_0x39c8e1,_0x5306c2){_0x39c8e1=_0x39c8e1-0x0;var _0x2342d1=_0x9d15[_0x39c8e1];return _0x2342d1;};'use strict';var _=require(_0x59d1('0x0'));function MailAccount(_0x3a2fe0){this['id']=_0x3a2fe0['id']||0x0;this['name']=_0x3a2fe0['name']||'Service';this[_0x59d1('0x1')]=_0x3a2fe0[_0x59d1('0x1')]||_0x59d1('0x2');this['active']=_0x3a2fe0[_0x59d1('0x3')]||![];this[_0x59d1('0x4')]=_0x3a2fe0[_0x59d1('0x4')]||[];this['Smtp']=_0x3a2fe0[_0x59d1('0x5')]||[];}module[_0x59d1('0x6')]=MailAccount;
\ No newline at end of file
index a119694..e3f07c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6555=['hasOwnProperty','prototype','mergeFromDatabase','length','isUndefined','exports','../model/mailAccount','mailAccounts','mapKeys'];(function(_0x53d709,_0x1906f6){var _0xc1f741=function(_0x5a6643){while(--_0x5a6643){_0x53d709['push'](_0x53d709['shift']());}};_0xc1f741(++_0x1906f6);}(_0x6555,0x1bf));var _0x5655=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6555[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var MailAccount=require(_0x5655('0x0'));var Realtime=function(){this[_0x5655('0x1')]={};};function freeIsNotKey(_0x3ea321,_0x468f7e,_0x132ca3){var _0x364522=_[_0x5655('0x2')](_0x3ea321,function(_0x5b713c,_0xa4680){return _0x5b713c[_0x132ca3];});for(var _0x519962 in _0x468f7e){if(_0x468f7e[_0x5655('0x3')](_0x519962)){if(!_0x364522[_0x519962]){delete _0x468f7e[_0x519962];}}}}Realtime[_0x5655('0x4')][_0x5655('0x5')]=function(_0x313df6,_0x11d39a){for(var _0x2ce829 in _0x11d39a){if(_0x313df6[_0x5655('0x3')](_0x2ce829)){_0x313df6[_0x2ce829]=_0x11d39a[_0x2ce829];}}};Realtime[_0x5655('0x4')]['initMailAccounts']=function(){var _0x42f36e=this;return function(_0x1cec20){if(_0x1cec20){freeIsNotKey(_0x1cec20,_0x42f36e[_0x5655('0x1')],'id');for(var _0x213d7c=0x0,_0x3bae9a={},_0x3e7aed={};_0x213d7c<_0x1cec20[_0x5655('0x6')];_0x213d7c+=0x1){_0x3bae9a=_0x1cec20[_0x213d7c];if(_[_0x5655('0x7')](_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']])){_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']]=new MailAccount(_0x3bae9a);}else{_['merge'](_0x42f36e[_0x5655('0x1')][_0x3bae9a['id']],_0x3bae9a);}}}return _0x42f36e[_0x5655('0x1')];};};module[_0x5655('0x8')]=Realtime;
\ No newline at end of file
+var _0xd51e=['length','isUndefined','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase'];(function(_0x1e0eaf,_0x4a208b){var _0x43fda0=function(_0x5ac370){while(--_0x5ac370){_0x1e0eaf['push'](_0x1e0eaf['shift']());}};_0x43fda0(++_0x4a208b);}(_0xd51e,0x77));var _0xed51=function(_0x102977,_0x3a99a6){_0x102977=_0x102977-0x0;var _0x15c466=_0xd51e[_0x102977];return _0x15c466;};'use strict';var _=require(_0xed51('0x0'));var MailAccount=require(_0xed51('0x1'));var Realtime=function(){this[_0xed51('0x2')]={};};function freeIsNotKey(_0x5acac0,_0x21ba3c,_0x413e81){var _0x1bf24b=_[_0xed51('0x3')](_0x5acac0,function(_0x54c915,_0x3fb1fc){return _0x54c915[_0x413e81];});for(var _0xfe8388 in _0x21ba3c){if(_0x21ba3c[_0xed51('0x4')](_0xfe8388)){if(!_0x1bf24b[_0xfe8388]){delete _0x21ba3c[_0xfe8388];}}}}Realtime[_0xed51('0x5')][_0xed51('0x6')]=function(_0x2e6d22,_0x2271b4){for(var _0x4f17e5 in _0x2271b4){if(_0x2e6d22['hasOwnProperty'](_0x4f17e5)){_0x2e6d22[_0x4f17e5]=_0x2271b4[_0x4f17e5];}}};Realtime[_0xed51('0x5')]['initMailAccounts']=function(){var _0x3cda31=this;return function(_0x4754ce){if(_0x4754ce){freeIsNotKey(_0x4754ce,_0x3cda31[_0xed51('0x2')],'id');for(var _0x4a7c3d=0x0,_0x3322f8={},_0x145b00={};_0x4a7c3d<_0x4754ce[_0xed51('0x7')];_0x4a7c3d+=0x1){_0x3322f8=_0x4754ce[_0x4a7c3d];if(_[_0xed51('0x8')](_0x3cda31['mailAccounts'][_0x3322f8['id']])){_0x3cda31['mailAccounts'][_0x3322f8['id']]=new MailAccount(_0x3322f8);}else{_['merge'](_0x3cda31[_0xed51('0x2')][_0x3322f8['id']],_0x3322f8);}}}return _0x3cda31[_0xed51('0x2')];};};module['exports']=Realtime;
\ No newline at end of file
index 3f21411..d533363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x287e=['Smtp','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active','key','TemplateId','MailServerIn'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0x287e,0x1e3));var _0xe287=function(_0x1a39d0,_0x4866a9){_0x1a39d0=_0x1a39d0-0x0;var _0x3bd72b=_0x287e[_0x1a39d0];return _0x3bd72b;};'use strict';var client=require(_0xe287('0x0'));exports[_0xe287('0x1')]=function(){return function(){return client[_0xe287('0x2')](_0xe287('0x3'),{'options':{'attributes':['id',_0xe287('0x4'),_0xe287('0x5'),_0xe287('0x6'),_0xe287('0x7'),_0xe287('0x8'),'ListId',_0xe287('0x9')],'raw':![],'include':[{'model':_0xe287('0xa'),'as':'Imap'},{'model':'MailServerOut','as':_0xe287('0xb')}]},'log':'getMailAccount'});};};exports['notify']=function(_0x4cd1f4,_0x2082c6){return client[_0xe287('0x2')](_0xe287('0xc'),{'account':{'id':_0x4cd1f4},'body':_0x2082c6,'log':_0xe287('0xc')});};
\ No newline at end of file
+var _0xdbc6=['getMailAccount','notify','NotifyMailAccount','Request','name','service','email','active','key','ListId','MailServerIn','Imap','Smtp'];(function(_0x109998,_0x1dce0f){var _0x5e4c73=function(_0x1a77bb){while(--_0x1a77bb){_0x109998['push'](_0x109998['shift']());}};_0x5e4c73(++_0x1dce0f);}(_0xdbc6,0x13b));var _0x6dbc=function(_0x5cf7f6,_0x4dd172){_0x5cf7f6=_0x5cf7f6-0x0;var _0xbbe7cb=_0xdbc6[_0x5cf7f6];return _0xbbe7cb;};'use strict';var client=require('../client');exports['getMailAccounts']=function(){return function(){return client[_0x6dbc('0x0')]('GetMailAccount',{'options':{'attributes':['id',_0x6dbc('0x1'),_0x6dbc('0x2'),_0x6dbc('0x3'),_0x6dbc('0x4'),_0x6dbc('0x5'),_0x6dbc('0x6'),'TemplateId'],'raw':![],'include':[{'model':_0x6dbc('0x7'),'as':_0x6dbc('0x8')},{'model':'MailServerOut','as':_0x6dbc('0x9')}]},'log':_0x6dbc('0xa')});};};exports[_0x6dbc('0xb')]=function(_0x2f028f,_0x3231d8){return client['Request'](_0x6dbc('0xc'),{'account':{'id':_0x2f028f},'body':_0x3231d8,'log':_0x6dbc('0xc')});};
\ No newline at end of file
index f9c2e73..709e54f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b92=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x245632,_0x4210c3){var _0x58d2b9=function(_0x3e31c5){while(--_0x3e31c5){_0x245632['push'](_0x245632['shift']());}};_0x58d2b9(++_0x4210c3);}(_0x3b92,0x137));var _0x23b9=function(_0x13e482,_0x150dc2){_0x13e482=_0x13e482-0x0;var _0x10a28f=_0x3b92[_0x13e482];return _0x10a28f;};'use strict';var client=require(_0x23b9('0x0'));exports[_0x23b9('0x1')]=function(){return client[_0x23b9('0x2')](_0x23b9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x23b9('0x4')]},'log':_0x23b9('0x5')});};
\ No newline at end of file
+var _0x92c2=['getSettings','Request','loginMailFrequency','../client'];(function(_0x38cc02,_0x5b4110){var _0xf12414=function(_0x42f54e){while(--_0x42f54e){_0x38cc02['push'](_0x38cc02['shift']());}};_0xf12414(++_0x5b4110);}(_0x92c2,0x157));var _0x292c=function(_0x2d25e2,_0x83eac){_0x2d25e2=_0x2d25e2-0x0;var _0x10a496=_0x92c2[_0x2d25e2];return _0x10a496;};'use strict';var client=require(_0x292c('0x0'));exports[_0x292c('0x1')]=function(){return client[_0x292c('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x292c('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
index 47ac31b..10d1ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 32210f4..81ac045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0258=['default','../../config/express','../../routes','listening','log','port','lodash','http','express','sticky-session','../../config/environment','createServer','socket.io','websocket','polling','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers'];(function(_0x321dab,_0x3ac245){var _0x33aa70=function(_0x4e57c7){while(--_0x4e57c7){_0x321dab['push'](_0x321dab['shift']());}};_0x33aa70(++_0x3ac245);}(_0x0258,0x16b));var _0x8025=function(_0x262f46,_0x4e0837){_0x262f46=_0x262f46-0x0;var _0x2b7750=_0x0258[_0x262f46];return _0x2b7750;};'use strict';var _=require(_0x8025('0x0'));var http=require(_0x8025('0x1'));var express=require(_0x8025('0x2'));var sticky=require(_0x8025('0x3'));var Redis=require('ioredis');var config=require(_0x8025('0x4'));var app=express();var server=http[_0x8025('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config['port'])){var socketio=require(_0x8025('0x6'))(server,{'transports':[_0x8025('0x7'),_0x8025('0x8')]});config['redis']=_[_0x8025('0x9')](config[_0x8025('0xa')],{'host':_0x8025('0xb'),'port':0x18eb});socketio[_0x8025('0xc')](require(_0x8025('0xd'))({'pubClient':new Redis(config[_0x8025('0xa')]),'subClient':new Redis(config[_0x8025('0xa')])}));require(_0x8025('0xe'))[_0x8025('0xf')]();require('../../config/socketio')[_0x8025('0xf')](socketio);require(_0x8025('0x10'))['default'](app);require(_0x8025('0x11'))['default'](app);}else{server['once'](_0x8025('0x12'),function(){console[_0x8025('0x13')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x8025('0x14')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xfb6f=['createServer','timeout','listen','socket.io','websocket','polling','redis','defaults','localhost','../../config/triggers','../../config/socketio','default','../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','port','exports','http','ioredis','../../config/environment'];(function(_0x217657,_0x2246e9){var _0x115c80=function(_0x331ebe){while(--_0x331ebe){_0x217657['push'](_0x217657['shift']());}};_0x115c80(++_0x2246e9);}(_0xfb6f,0xd9));var _0xffb6=function(_0x329dd6,_0x283c61){_0x329dd6=_0x329dd6-0x0;var _0x31a918=_0xfb6f[_0x329dd6];return _0x31a918;};'use strict';var _=require('lodash');var http=require(_0xffb6('0x0'));var express=require('express');var sticky=require('sticky-session');var Redis=require(_0xffb6('0x1'));var config=require(_0xffb6('0x2'));var app=express();var server=http[_0xffb6('0x3')](app);server[_0xffb6('0x4')]=0xdbba0;if(sticky[_0xffb6('0x5')](server,config['port'])){var socketio=require(_0xffb6('0x6'))(server,{'transports':[_0xffb6('0x7'),_0xffb6('0x8')]});config[_0xffb6('0x9')]=_[_0xffb6('0xa')](config['redis'],{'host':_0xffb6('0xb'),'port':0x18eb});socketio['adapter'](require('socket.io-redis')({'pubClient':new Redis(config[_0xffb6('0x9')]),'subClient':new Redis(config[_0xffb6('0x9')])}));require(_0xffb6('0xc'))['default']();require(_0xffb6('0xd'))[_0xffb6('0xe')](socketio);require('../../config/express')[_0xffb6('0xe')](app);require(_0xffb6('0xf'))['default'](app);}else{server['once']('listening',function(){console[_0xffb6('0x10')](_0xffb6('0x11'),config[_0xffb6('0x12')]);});}exports=module[_0xffb6('0x13')]=app;
\ No newline at end of file
index 5b2e85e..799414f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c6c=['exports','jayson/promise','bluebird','../../config/logger','routing','http','then','error','rpc','message','result','catch'];(function(_0x2c7780,_0x100f4a){var _0x580bc8=function(_0x3d435c){while(--_0x3d435c){_0x2c7780['push'](_0x2c7780['shift']());}};_0x580bc8(++_0x100f4a);}(_0x5c6c,0x139));var _0xc5c6=function(_0x599330,_0xc9ed32){_0x599330=_0x599330-0x0;var _0xc4751a=_0x5c6c[_0x599330];return _0xc4751a;};'use strict';var jayson=require(_0xc5c6('0x0'));var BPromise=require(_0xc5c6('0x1'));var logger=require(_0xc5c6('0x2'))(_0xc5c6('0x3'));var client=jayson['client'][_0xc5c6('0x4')]({'port':0x2329});client['Request']=function(_0x5748e7,_0x34e4bc){return new BPromise(function(_0x4c6a63,_0x527b79){return client['request'](_0x5748e7,_0x34e4bc)[_0xc5c6('0x5')](function(_0x2e8305){logger['debug']('rpc',_0xc5c6('0x3'),_0x5748e7,_0x34e4bc,_0x2e8305);if(_0x2e8305[_0xc5c6('0x6')]){logger[_0xc5c6('0x6')](_0xc5c6('0x7'),'routing',_0x5748e7,_0x2e8305['error'][_0xc5c6('0x8')],_0x34e4bc);return _0x527b79(_0x2e8305[_0xc5c6('0x6')]['message']);}else{return _0x4c6a63(_0x2e8305[_0xc5c6('0x9')]);}})[_0xc5c6('0xa')](function(_0x5be7fc){logger[_0xc5c6('0x6')](_0xc5c6('0x7'),_0xc5c6('0x3'),_0x5748e7,_0x5be7fc,_0x34e4bc);return _0x527b79(_0x5be7fc);});});};module[_0xc5c6('0xb')]=client;
\ No newline at end of file
+var _0x86dd=['debug','rpc','error','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','http'];(function(_0x5d6e30,_0xc21d51){var _0x3d3f3b=function(_0x33597b){while(--_0x33597b){_0x5d6e30['push'](_0x5d6e30['shift']());}};_0x3d3f3b(++_0xc21d51);}(_0x86dd,0x1be));var _0xd86d=function(_0x545531,_0x15fb73){_0x545531=_0x545531-0x0;var _0x312aca=_0x86dd[_0x545531];return _0x312aca;};'use strict';var jayson=require(_0xd86d('0x0'));var BPromise=require(_0xd86d('0x1'));var logger=require(_0xd86d('0x2'))(_0xd86d('0x3'));var client=jayson['client'][_0xd86d('0x4')]({'port':0x2329});client['Request']=function(_0x39750a,_0x129ab9){return new BPromise(function(_0x373f1d,_0xc114c7){return client['request'](_0x39750a,_0x129ab9)['then'](function(_0x3b973f){logger[_0xd86d('0x5')](_0xd86d('0x6'),_0xd86d('0x3'),_0x39750a,_0x129ab9,_0x3b973f);if(_0x3b973f[_0xd86d('0x7')]){logger[_0xd86d('0x7')]('rpc',_0xd86d('0x3'),_0x39750a,_0x3b973f[_0xd86d('0x7')]['message'],_0x129ab9);return _0xc114c7(_0x3b973f[_0xd86d('0x7')]['message']);}else{return _0x373f1d(_0x3b973f[_0xd86d('0x8')]);}})[_0xd86d('0x9')](function(_0x24fe0c){logger[_0xd86d('0x7')](_0xd86d('0x6'),'routing',_0x39750a,_0x24fe0c,_0x129ab9);return _0xc114c7(_0x24fe0c);});});};module[_0xd86d('0xa')]=client;
\ No newline at end of file
index a7c0072..ec6c6c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d88=['./rpc/smsQueue','./rpc/faxQueue','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','listen','log','bluebird','./realtime','./rpc/user','./rpc/interval'];(function(_0x4e3b9c,_0x4d76a3){var _0x358b13=function(_0x2409d6){while(--_0x2409d6){_0x4e3b9c['push'](_0x4e3b9c['shift']());}};_0x358b13(++_0x4d76a3);}(_0x5d88,0x130));var _0x85d8=function(_0xe05d9c,_0x4de4bc){_0xe05d9c=_0xe05d9c-0x0;var _0x170227=_0x5d88[_0xe05d9c];return _0x170227;};'use strict';var BPromise=require(_0x85d8('0x0'));var server=require('./server');var Realtime=require(_0x85d8('0x1'));var user=require(_0x85d8('0x2'));var interval=require(_0x85d8('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x85d8('0x4'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x85d8('0x5'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x85d8('0x6')](user[_0x85d8('0x7')]())[_0x85d8('0x6')](realtime[_0x85d8('0x8')]())[_0x85d8('0x6')](interval[_0x85d8('0x9')]())['then'](realtime['initIntervals']())[_0x85d8('0x6')](openchannelQueue[_0x85d8('0xa')]())[_0x85d8('0x6')](realtime[_0x85d8('0xb')]())[_0x85d8('0x6')](chatQueue[_0x85d8('0xc')]())['then'](realtime[_0x85d8('0xd')]())[_0x85d8('0x6')](smsQueue[_0x85d8('0xe')]())[_0x85d8('0x6')](realtime[_0x85d8('0xf')]())[_0x85d8('0x6')](mailQueue[_0x85d8('0x10')]())[_0x85d8('0x6')](realtime[_0x85d8('0x11')]())[_0x85d8('0x6')](faxQueue['getFaxQueues']())[_0x85d8('0x6')](realtime[_0x85d8('0x12')]())[_0x85d8('0x6')](whatsappQueue[_0x85d8('0x13')]())['then'](realtime['initWhatsappQueues']())[_0x85d8('0x6')](function(){return realtime;});}function main(){return server[_0x85d8('0x14')](realtime)[_0x85d8('0x6')](function(_0x58fc7f){return initRealtime();})[_0x85d8('0x6')](function(_0x41997c){return setInterval(initRealtime,0x1388);})['catch'](function(_0x37890e){console[_0x85d8('0x15')](_0x37890e);});}main();
\ No newline at end of file
+var _0x0272=['initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','catch','log','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initChatQueues','getSmsQueues','initSmsQueues'];(function(_0x2d3206,_0x434cf5){var _0x18702d=function(_0x4e0735){while(--_0x4e0735){_0x2d3206['push'](_0x2d3206['shift']());}};_0x18702d(++_0x434cf5);}(_0x0272,0xdf));var _0x2027=function(_0x4920c3,_0x5dadfe){_0x4920c3=_0x4920c3-0x0;var _0x41d187=_0x0272[_0x4920c3];return _0x41d187;};'use strict';var BPromise=require('bluebird');var server=require(_0x2027('0x0'));var Realtime=require('./realtime');var user=require(_0x2027('0x1'));var interval=require(_0x2027('0x2'));var openchannelQueue=require(_0x2027('0x3'));var chatQueue=require(_0x2027('0x4'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x2027('0x5'));var faxQueue=require(_0x2027('0x6'));var whatsappQueue=require(_0x2027('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x2027('0x8')](user['getAgents']())[_0x2027('0x8')](realtime[_0x2027('0x9')]())[_0x2027('0x8')](interval[_0x2027('0xa')]())[_0x2027('0x8')](realtime[_0x2027('0xb')]())['then'](openchannelQueue[_0x2027('0xc')]())[_0x2027('0x8')](realtime[_0x2027('0xd')]())[_0x2027('0x8')](chatQueue['getChatQueues']())[_0x2027('0x8')](realtime[_0x2027('0xe')]())[_0x2027('0x8')](smsQueue[_0x2027('0xf')]())['then'](realtime[_0x2027('0x10')]())[_0x2027('0x8')](mailQueue['getMailQueues']())[_0x2027('0x8')](realtime[_0x2027('0x11')]())[_0x2027('0x8')](faxQueue[_0x2027('0x12')]())[_0x2027('0x8')](realtime[_0x2027('0x13')]())['then'](whatsappQueue[_0x2027('0x14')]())['then'](realtime[_0x2027('0x15')]())['then'](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x2027('0x8')](function(_0x37ad91){return initRealtime();})[_0x2027('0x8')](function(_0x3d6dd5){return setInterval(initRealtime,0x1388);})[_0x2027('0x16')](function(_0x517c95){console[_0x2027('0x17')](_0x517c95);});}main();
\ No newline at end of file
index 1f9b217..c8df0fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['next','isEqual','restart','condition','matches','filter','turn','prioritize','findRules','length','priority','toJSON','map','toString','fromJSON','parse','object','exports','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','rules','activeRules','prototype','isArray','concat','push','sync','orderBy','result','clone','consequence','name','index_','nextTick','ruleRef','call'];(function(_0x24cfa0,_0x1bafe8){var _0x58882c=function(_0x2063be){while(--_0x2063be){_0x24cfa0['push'](_0x24cfa0['shift']());}};_0x58882c(++_0x1bafe8);}(_0x2ef3,0xba));var _0x32ef=function(_0x2f0971,_0x14a986){_0x2f0971=_0x2f0971-0x0;var _0x3cb533=_0x2ef3[_0x2f0971];return _0x3cb533;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var EventEmitter=require(_0x32ef('0x2'))[_0x32ef('0x3')];function RuleEngine(_0x3944df,_0x38047b){this['init']();if(!_[_0x32ef('0x4')](_0x3944df)){this[_0x32ef('0x5')](_0x3944df);}if(_0x38047b){this['ignoreFactChanges']=_0x38047b[_0x32ef('0x6')];}return this;}util[_0x32ef('0x7')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x2c0089){this[_0x32ef('0x8')]=[];this[_0x32ef('0x9')]=[];};RuleEngine[_0x32ef('0xa')][_0x32ef('0x5')]=function(_0x298066){if(Array[_0x32ef('0xb')](_0x298066)){this[_0x32ef('0x8')]=this[_0x32ef('0x8')][_0x32ef('0xc')](_0x298066);}else if(_0x298066!==null&&_['isObject'](_0x298066)){this['rules'][_0x32ef('0xd')](_0x298066);}this[_0x32ef('0xe')]();};RuleEngine[_0x32ef('0xa')][_0x32ef('0xe')]=function(){this['activeRules']=this[_0x32ef('0x8')]['filter'](function(_0x1a5106){if(_['isNil'](_0x1a5106['on'])){_0x1a5106['on']=!![];}if(_0x1a5106['on']===!![]){return _0x1a5106;}});this[_0x32ef('0x9')]=_[_0x32ef('0xf')](this['activeRules'],['p'],['asc']);};RuleEngine[_0x32ef('0xa')]['execute']=function(_0x326fce,_0x40a6e6){var _0x93d492=![];_0x326fce[_0x32ef('0x10')]=!![];var _0x57aff1=_['clone'](_0x326fce);var _0x531e30=_[_0x32ef('0x11')](_0x326fce);var _0x3950e6=this[_0x32ef('0x9')];var _0x53a5ca=[];var _0x5d559b=this[_0x32ef('0x6')];(function FnRuleLoop(_0x1a9476){var _0x286bfb={'rules':function(){return _0x3950e6;},'rule':function(){return _0x3950e6[_0x1a9476];},'when':function(_0x57863c){if(_0x57863c){var _0xbe37f6=_0x3950e6[_0x1a9476][_0x32ef('0x12')];_0xbe37f6['ruleRef']=_0x3950e6[_0x1a9476]['id']||_0x3950e6[_0x1a9476][_0x32ef('0x13')]||_0x32ef('0x14')+_0x1a9476;process[_0x32ef('0x15')](function(){_0x53a5ca[_0x32ef('0xd')](_0xbe37f6[_0x32ef('0x16')]);_0xbe37f6[_0x32ef('0x17')](_0x57aff1,_0x286bfb);});}else{process['nextTick'](function(){_0x286bfb[_0x32ef('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x93d492=!![];return FnRuleLoop(0x0);},'next':function(_0x5cc3ef){if(!_0x5d559b&&!_[_0x32ef('0x19')](_0x531e30,_0x57aff1)){_0x531e30=_[_0x32ef('0x11')](_0x57aff1);process['nextTick'](function(){_0x286bfb[_0x32ef('0x1a')]();});}else{process[_0x32ef('0x15')](function(){if(_[_0x32ef('0x4')](_0x5cc3ef)){return FnRuleLoop(_0x1a9476+0x1);}else{return FnRuleLoop(_0x5cc3ef);}});}}};if(_0x1a9476<_0x3950e6['length']&&_0x93d492===![]){var _0x57f5e5=_0x3950e6[_0x1a9476][_0x32ef('0x1b')];_0x57f5e5[_0x32ef('0x17')](_0x57aff1,_0x286bfb);}else{process[_0x32ef('0x15')](function(){_0x57aff1['matchPath']=_0x53a5ca;return _0x40a6e6?_0x40a6e6(_0x57aff1):_['noop']();});}}(0x0));};RuleEngine[_0x32ef('0xa')]['findRules']=function(_0x51a412){if(_[_0x32ef('0x4')](_0x51a412)){return this[_0x32ef('0x8')];}else{var _0x371540=_[_0x32ef('0x1c')](_0x51a412);return _[_0x32ef('0x1d')](this[_0x32ef('0x8')],_0x371540);}};RuleEngine[_0x32ef('0xa')][_0x32ef('0x1e')]=function(_0x338f19,_0x2f52d7){var _0x1335e2=_0x338f19==='on'||_0x338f19==='ON'?!![]:![];var _0xba4b3f=this['findRules'](_0x2f52d7);for(var _0xd65fde=0x0,_0x2f5d06=_0xba4b3f['length'];_0xd65fde<_0x2f5d06;_0xd65fde+=0x1){_0xba4b3f[_0xd65fde]['on']=_0x1335e2;}this[_0x32ef('0xe')]();};RuleEngine[_0x32ef('0xa')][_0x32ef('0x1f')]=function(_0x26e207,_0x50a95b){_0x26e207=parseInt(_0x26e207,0xa);var _0x10e38c=this[_0x32ef('0x20')](_0x50a95b);for(var _0x31dbc3=0x0,_0x2ac686=_0x10e38c[_0x32ef('0x21')];_0x31dbc3<_0x2ac686;_0x31dbc3+=0x1){_0x10e38c[_0x31dbc3][_0x32ef('0x22')]=_0x26e207;}this[_0x32ef('0xe')]();};RuleEngine['prototype'][_0x32ef('0x23')]=function(){var _0x537214=this[_0x32ef('0x8')];if(_0x537214 instanceof Array){_0x537214=_0x537214[_0x32ef('0x24')](function(_0x5a9565){_0x5a9565[_0x32ef('0x1b')]=_0x5a9565[_0x32ef('0x1b')][_0x32ef('0x25')]();_0x5a9565[_0x32ef('0x12')]=_0x5a9565[_0x32ef('0x12')]['toString']();return _0x5a9565;});}else if(!_['isNil'](_0x537214)){_0x537214[_0x32ef('0x1b')]=_0x537214['condition'][_0x32ef('0x25')]();_0x537214[_0x32ef('0x12')]=_0x537214[_0x32ef('0x12')][_0x32ef('0x25')]();}return _0x537214;};RuleEngine[_0x32ef('0xa')][_0x32ef('0x26')]=function(_0x566b56){this['init']();if(_['isString'](_0x566b56)){_0x566b56=JSON[_0x32ef('0x27')](_0x566b56);}if(_0x566b56 instanceof Array){_0x566b56=_0x566b56[_0x32ef('0x24')](function(_0x136b02){_0x136b02['condition']=eval('('+_0x136b02['condition']+')');_0x136b02[_0x32ef('0x12')]=eval('('+_0x136b02[_0x32ef('0x12')]+')');return _0x136b02;});}else if(_0x566b56!==null&&typeof _0x566b56==_0x32ef('0x28')){_0x566b56['condition']=eval('('+_0x566b56['condition']+')');_0x566b56[_0x32ef('0x12')]=eval('('+_0x566b56[_0x32ef('0x12')]+')');}this[_0x32ef('0x5')](_0x566b56);};module[_0x32ef('0x29')]=RuleEngine;
\ No newline at end of file
+var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x234c1c,_0x5579c3){var _0x324258=function(_0x16d2a7){while(--_0x16d2a7){_0x234c1c['push'](_0x234c1c['shift']());}};_0x324258(++_0x5579c3);}(_0x814b,0x1a2));var _0xb814=function(_0x1249f4,_0x27226c){_0x1249f4=_0x1249f4-0x0;var _0x47c8a9=_0x814b[_0x1249f4];return _0x47c8a9;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
index 7e0247f..eb524d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbedc=['jayson/promise','client','request','error','message','result','catch','sendMailMessage'];(function(_0x503ecd,_0x542e82){var _0x25cb6a=function(_0x4f87b9){while(--_0x4f87b9){_0x503ecd['push'](_0x503ecd['shift']());}};_0x25cb6a(++_0x542e82);}(_0xbedc,0x160));var _0xcbed=function(_0x58226c,_0x3333d9){_0x58226c=_0x58226c-0x0;var _0x545de4=_0xbedc[_0x58226c];return _0x545de4;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xcbed('0x0'));var client=jayson[_0xcbed('0x1')]['http']({'port':0x232b});function request(_0x45b1d3,_0x2209cc){return new BPromise(function(_0x2dabe1,_0x59cd1d){return client[_0xcbed('0x2')](_0x45b1d3,_0x2209cc)['then'](function(_0x578565){if(_0x578565['error']){return _0x59cd1d(_0x578565[_0xcbed('0x3')][_0xcbed('0x4')]);}else{return _0x2dabe1(_0x578565[_0xcbed('0x5')]);}})[_0xcbed('0x6')](function(_0x1ab61c){return _0x59cd1d(_0x1ab61c);});});}exports[_0xcbed('0x7')]=function(_0x245149,_0x51df52){return request('SendMail',{'account':_0x245149,'message':_0x51df52});};
\ No newline at end of file
+var _0xbf5c=['then','error','message','catch','SendMail','bluebird','jayson/promise','client','http','request'];(function(_0x2a141d,_0x5244e3){var _0x5e9296=function(_0x4e5454){while(--_0x4e5454){_0x2a141d['push'](_0x2a141d['shift']());}};_0x5e9296(++_0x5244e3);}(_0xbf5c,0x1ef));var _0xcbf5=function(_0x55fe82,_0x329b56){_0x55fe82=_0x55fe82-0x0;var _0xc3b698=_0xbf5c[_0x55fe82];return _0xc3b698;};'use strict';var BPromise=require(_0xcbf5('0x0'));var jayson=require(_0xcbf5('0x1'));var client=jayson[_0xcbf5('0x2')][_0xcbf5('0x3')]({'port':0x232b});function request(_0x2f6eec,_0x2bd20b){return new BPromise(function(_0x239f12,_0x23601a){return client[_0xcbf5('0x4')](_0x2f6eec,_0x2bd20b)[_0xcbf5('0x5')](function(_0x347d1a){if(_0x347d1a[_0xcbf5('0x6')]){return _0x23601a(_0x347d1a['error'][_0xcbf5('0x7')]);}else{return _0x239f12(_0x347d1a['result']);}})[_0xcbf5('0x8')](function(_0x4a6775){return _0x23601a(_0x4a6775);});});}exports['sendMailMessage']=function(_0x4755f5,_0x5bd31f){return request(_0xcbf5('0x9'),{'account':_0x4755f5,'message':_0x5bd31f});};
\ No newline at end of file
index 1f78cf2..5de6e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb10=['length','Status','StatusTime','toNumber','chatStatusTime','faxStatus','faxCurrentCapacity','smsStatusTime','whatsappCurrentCapacity','openchannelStatus','openchannelCurrentCapacity','busyQueue','stringify','emit','user:save','exports','lodash','moment','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','busy','md5','updateRealtime','prototype','CurrentCapacity','Capacity','maxcapacity','idle','mail','chat','fax','sms','whatsapp'];(function(_0x169724,_0x3c77f4){var _0x9c9c94=function(_0x4aa35d){while(--_0x4aa35d){_0x169724['push'](_0x169724['shift']());}};_0x9c9c94(++_0x3c77f4);}(_0xcb10,0x104));var _0x0cb1=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0xcb10[_0x4b7895];return _0x264180;};'use strict';var _=require(_0x0cb1('0x0'));var moment=require(_0x0cb1('0x1'));var md5=require('md5');var Redis=require(_0x0cb1('0x2'));var config=require(_0x0cb1('0x3'));config['redis']=_[_0x0cb1('0x4')](config['redis'],{'host':_0x0cb1('0x5'),'port':0x18eb});var io=require(_0x0cb1('0x6'))(new Redis(config[_0x0cb1('0x7')]));function Agent(_0x1cf87a){this['id']=_0x1cf87a['id']||0x0;this[_0x0cb1('0x8')]=_0x1cf87a[_0x0cb1('0x8')]||'';this[_0x0cb1('0x9')]=_0x1cf87a[_0x0cb1('0x9')]||!![];this['voicePause']=_0x1cf87a[_0x0cb1('0xa')]||![];this[_0x0cb1('0xb')]=_0x1cf87a[_0x0cb1('0xb')]||![];this[_0x0cb1('0xc')]=_0x1cf87a[_0x0cb1('0xc')]||![];this[_0x0cb1('0xd')]=_0x1cf87a[_0x0cb1('0xd')]||![];this['smsPause']=_0x1cf87a['smsPause']||![];this['openchannelPause']=_0x1cf87a[_0x0cb1('0xe')]||![];this[_0x0cb1('0xf')]='unknown';this['chatStatusTime']=0x0;this['chatCapacity']=_0x1cf87a[_0x0cb1('0x10')]||0x0;this['chatCurrentCapacity']=0x0;this[_0x0cb1('0x11')]=_0x0cb1('0x12');this[_0x0cb1('0x13')]=0x0;this[_0x0cb1('0x14')]=_0x1cf87a[_0x0cb1('0x14')]||0x0;this[_0x0cb1('0x15')]=0x0;this['faxStatus']=_0x0cb1('0x12');this[_0x0cb1('0x16')]=0x0;this['faxCapacity']=_0x1cf87a[_0x0cb1('0x17')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x0cb1('0x18')]=_0x0cb1('0x12');this['smsStatusTime']=0x0;this[_0x0cb1('0x19')]=_0x1cf87a[_0x0cb1('0x19')]||0x0;this[_0x0cb1('0x1a')]=0x0;this[_0x0cb1('0x1b')]='unknown';this[_0x0cb1('0x1c')]=0x0;this[_0x0cb1('0x1d')]=_0x1cf87a[_0x0cb1('0x1d')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x0cb1('0x12');this[_0x0cb1('0x1e')]=0x0;this['openchannelCapacity']=_0x1cf87a[_0x0cb1('0x1f')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x0cb1('0x20')]=![];this['busyQueue']=undefined;this[_0x0cb1('0x21')]='';this[_0x0cb1('0x22')]();}Agent[_0x0cb1('0x23')]['getChannelStatus']=function(_0x2ec66f){if(this[_0x2ec66f+_0x0cb1('0x24')]>0x0){if(this[_0x2ec66f+_0x0cb1('0x25')]>0x0&&this[_0x2ec66f+_0x0cb1('0x24')]>=this[_0x2ec66f+'Capacity']){return _0x0cb1('0x26');}else{return'working';}}else{return _0x0cb1('0x27');}};Agent[_0x0cb1('0x23')][_0x0cb1('0x22')]=function(){var _0x233056=[_0x0cb1('0x28'),_0x0cb1('0x29'),'openchannel',_0x0cb1('0x2a'),_0x0cb1('0x2b'),_0x0cb1('0x2c')];for(var _0x21189f=0x0;_0x21189f<_0x233056[_0x0cb1('0x2d')];_0x21189f+=0x1){var _0x421183=this['getChannelStatus'](_0x233056[_0x21189f]);if(this[_0x233056[_0x21189f]+_0x0cb1('0x2e')]!==_0x421183){this[_0x233056[_0x21189f]+_0x0cb1('0x2f')]=_[_0x0cb1('0x30')](moment()['format']('x'));}this[_0x233056[_0x21189f]+_0x0cb1('0x2e')]=_0x421183;}var _0x57da8d={'id':this['id'],'name':this[_0x0cb1('0x8')],'online':this[_0x0cb1('0x9')],'voicePause':this[_0x0cb1('0xa')],'chatPause':this[_0x0cb1('0xb')],'mailPause':this[_0x0cb1('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0x0cb1('0xd')],'openchannelPause':this[_0x0cb1('0xe')],'chatStatus':this[_0x0cb1('0xf')],'chatStatusTime':this[_0x0cb1('0x31')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x0cb1('0x11')],'mailStatusTime':this[_0x0cb1('0x13')],'mailCapacity':this[_0x0cb1('0x14')],'mailCurrentCapacity':this[_0x0cb1('0x15')],'faxStatus':this[_0x0cb1('0x32')],'faxStatusTime':this[_0x0cb1('0x16')],'faxCapacity':this[_0x0cb1('0x17')],'faxCurrentCapacity':this[_0x0cb1('0x33')],'smsStatus':this[_0x0cb1('0x18')],'smsStatusTime':this[_0x0cb1('0x34')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x0cb1('0x1a')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x0cb1('0x1d')],'whatsappCurrentCapacity':this[_0x0cb1('0x35')],'openchannelStatus':this[_0x0cb1('0x36')],'openchannelStatusTime':this[_0x0cb1('0x1e')],'openchannelCapacity':this[_0x0cb1('0x1f')],'openchannelCurrentCapacity':this[_0x0cb1('0x37')],'busy':this['busy'],'busyQueue':this[_0x0cb1('0x38')]};var _0x313e66=md5(JSON[_0x0cb1('0x39')](_0x57da8d));if(this['md5']!==_0x313e66){this[_0x0cb1('0x21')]=_0x313e66;io[_0x0cb1('0x3a')](_0x0cb1('0x3b'),_0x57da8d);}};module[_0x0cb1('0x3c')]=Agent;
\ No newline at end of file
+var _0x1ec9=['mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','mail','openchannel','fax','sms','Status','toNumber','format','openchannelPause','chatStatusTime','whatsappStatusTime','stringify','emit','user:save','lodash','moment','md5','ioredis','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity'];(function(_0x3d47df,_0x2d0121){var _0x2091e0=function(_0x1bc0ad){while(--_0x1bc0ad){_0x3d47df['push'](_0x3d47df['shift']());}};_0x2091e0(++_0x2d0121);}(_0x1ec9,0xa1));var _0x91ec=function(_0xeb7d30,_0x479439){_0xeb7d30=_0xeb7d30-0x0;var _0x3788dd=_0x1ec9[_0xeb7d30];return _0x3788dd;};'use strict';var _=require(_0x91ec('0x0'));var moment=require(_0x91ec('0x1'));var md5=require(_0x91ec('0x2'));var Redis=require(_0x91ec('0x3'));var config=require('../../../config/environment');config[_0x91ec('0x4')]=_[_0x91ec('0x5')](config[_0x91ec('0x4')],{'host':_0x91ec('0x6'),'port':0x18eb});var io=require(_0x91ec('0x7'))(new Redis(config['redis']));function Agent(_0x156220){this['id']=_0x156220['id']||0x0;this[_0x91ec('0x8')]=_0x156220[_0x91ec('0x8')]||'';this[_0x91ec('0x9')]=_0x156220[_0x91ec('0x9')]||!![];this[_0x91ec('0xa')]=_0x156220[_0x91ec('0xa')]||![];this[_0x91ec('0xb')]=_0x156220[_0x91ec('0xb')]||![];this[_0x91ec('0xc')]=_0x156220['mailPause']||![];this[_0x91ec('0xd')]=_0x156220[_0x91ec('0xd')]||![];this[_0x91ec('0xe')]=_0x156220[_0x91ec('0xe')]||![];this['openchannelPause']=_0x156220['openchannelPause']||![];this[_0x91ec('0xf')]=_0x91ec('0x10');this['chatStatusTime']=0x0;this[_0x91ec('0x11')]=_0x156220['chatCapacity']||0x0;this[_0x91ec('0x12')]=0x0;this[_0x91ec('0x13')]=_0x91ec('0x10');this[_0x91ec('0x14')]=0x0;this['mailCapacity']=_0x156220[_0x91ec('0x15')]||0x0;this[_0x91ec('0x16')]=0x0;this[_0x91ec('0x17')]=_0x91ec('0x10');this[_0x91ec('0x18')]=0x0;this[_0x91ec('0x19')]=_0x156220[_0x91ec('0x19')]||0x0;this[_0x91ec('0x1a')]=0x0;this[_0x91ec('0x1b')]=_0x91ec('0x10');this[_0x91ec('0x1c')]=0x0;this['smsCapacity']=_0x156220[_0x91ec('0x1d')]||0x0;this[_0x91ec('0x1e')]=0x0;this[_0x91ec('0x1f')]='unknown';this['whatsappStatusTime']=0x0;this[_0x91ec('0x20')]=_0x156220[_0x91ec('0x20')]||0x0;this[_0x91ec('0x21')]=0x0;this[_0x91ec('0x22')]=_0x91ec('0x10');this[_0x91ec('0x23')]=0x0;this[_0x91ec('0x24')]=_0x156220[_0x91ec('0x24')]||0x0;this[_0x91ec('0x25')]=0x0;this[_0x91ec('0x26')]=![];this[_0x91ec('0x27')]=undefined;this['md5']='';this[_0x91ec('0x28')]();}Agent[_0x91ec('0x29')][_0x91ec('0x2a')]=function(_0x3fd7e6){if(this[_0x3fd7e6+_0x91ec('0x2b')]>0x0){if(this[_0x3fd7e6+'Capacity']>0x0&&this[_0x3fd7e6+_0x91ec('0x2b')]>=this[_0x3fd7e6+_0x91ec('0x2c')]){return _0x91ec('0x2d');}else{return _0x91ec('0x2e');}}else{return'idle';}};Agent[_0x91ec('0x29')][_0x91ec('0x28')]=function(){var _0x39e3c2=[_0x91ec('0x2f'),'chat',_0x91ec('0x30'),_0x91ec('0x31'),_0x91ec('0x32'),'whatsapp'];for(var _0x5a6568=0x0;_0x5a6568<_0x39e3c2['length'];_0x5a6568+=0x1){var _0x197cd3=this['getChannelStatus'](_0x39e3c2[_0x5a6568]);if(this[_0x39e3c2[_0x5a6568]+_0x91ec('0x33')]!==_0x197cd3){this[_0x39e3c2[_0x5a6568]+'StatusTime']=_[_0x91ec('0x34')](moment()[_0x91ec('0x35')]('x'));}this[_0x39e3c2[_0x5a6568]+_0x91ec('0x33')]=_0x197cd3;}var _0x484960={'id':this['id'],'name':this[_0x91ec('0x8')],'online':this[_0x91ec('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0x91ec('0xb')],'mailPause':this[_0x91ec('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0x91ec('0xd')],'openchannelPause':this[_0x91ec('0x36')],'chatStatus':this[_0x91ec('0xf')],'chatStatusTime':this[_0x91ec('0x37')],'chatCapacity':this[_0x91ec('0x11')],'chatCurrentCapacity':this[_0x91ec('0x12')],'mailStatus':this[_0x91ec('0x13')],'mailStatusTime':this[_0x91ec('0x14')],'mailCapacity':this[_0x91ec('0x15')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x91ec('0x18')],'faxCapacity':this[_0x91ec('0x19')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x91ec('0x1c')],'smsCapacity':this[_0x91ec('0x1d')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x91ec('0x1f')],'whatsappStatusTime':this[_0x91ec('0x38')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x91ec('0x21')],'openchannelStatus':this[_0x91ec('0x22')],'openchannelStatusTime':this[_0x91ec('0x23')],'openchannelCapacity':this[_0x91ec('0x24')],'openchannelCurrentCapacity':this[_0x91ec('0x25')],'busy':this['busy'],'busyQueue':this[_0x91ec('0x27')]};var _0x32a904=md5(JSON[_0x91ec('0x39')](_0x484960));if(this[_0x91ec('0x2')]!==_0x32a904){this['md5']=_0x32a904;io[_0x91ec('0x3a')](_0x91ec('0x3b'),_0x484960);}};module['exports']=Agent;
\ No newline at end of file
index bc627e7..99d2b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64a6=['paused','length','online','chatPause','available','format','chat_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','Agents','prototype','loggedIn'];(function(_0x44a869,_0xb3f747){var _0x12d1da=function(_0x1ca4ae){while(--_0x1ca4ae){_0x44a869['push'](_0x44a869['shift']());}};_0x12d1da(++_0xb3f747);}(_0x64a6,0x19d));var _0x664a=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x64a6[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0x664a('0x0'));var md5=require(_0x664a('0x1'));var util=require(_0x664a('0x2'));var Redis=require(_0x664a('0x3'));var config=require(_0x664a('0x4'));config[_0x664a('0x5')]=_[_0x664a('0x6')](config[_0x664a('0x5')],{'host':_0x664a('0x7'),'port':0x18eb});var io=require(_0x664a('0x8'))(new Redis(config[_0x664a('0x5')]));function ChatQueue(_0x358de4){this['id']=_0x358de4['id']||0x0;this[_0x664a('0x9')]=_0x358de4[_0x664a('0x9')]||'';this[_0x664a('0xa')]=_0x358de4['timeout']||0xa;this['strategy']=_0x358de4[_0x664a('0xb')]||_0x664a('0xc');this['Agents']=_0x358de4['Agents'];this[_0x664a('0xd')]={};this[_0x664a('0xe')]=0x0;this['md5']='';this[_0x664a('0xf')]();this[_0x664a('0x10')]();}ChatQueue['prototype'][_0x664a('0xf')]=function(){var _0x3efa51=this[_0x664a('0xd')][_0x664a('0x11')];this[_0x664a('0xd')]=_[_0x664a('0x12')](this[_0x664a('0x13')],'id');this['mapAgentsId'][_0x664a('0x11')]=_0x3efa51;};ChatQueue[_0x664a('0x14')][_0x664a('0x10')]=function(){this[_0x664a('0x15')]=0x0;this[_0x664a('0x16')]=0x0;for(var _0x17d9da=0x0;_0x17d9da<this['Agents'][_0x664a('0x17')];_0x17d9da+=0x1){if(this['Agents'][_0x17d9da][_0x664a('0x18')]){this['loggedIn']+=0x1;}if(this[_0x664a('0x13')][_0x17d9da][_0x664a('0x19')]){this[_0x664a('0x16')]+=0x1;}}this[_0x664a('0x1a')]=this['loggedIn']-this[_0x664a('0x16')];this[_0x664a('0x1a')]=this[_0x664a('0x1a')]>=0x0?this['available']:0x0;var _0x24d258={'id':this['id'],'available':this[_0x664a('0x1a')],'loggedIn':this[_0x664a('0x15')],'name':this['name'],'paused':this[_0x664a('0x16')],'waiting':this['waiting']};var _0x3893f6=md5(JSON['stringify'](_0x24d258));if(this[_0x664a('0x1')]!==_0x3893f6){this[_0x664a('0x1')]=_0x3893f6;io['to'](util[_0x664a('0x1b')]('chat:queue:%s',_0x24d258['name']))['emit'](_0x664a('0x1c'),_0x24d258);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0xbc8e=['exports','lodash','md5','ioredis','../../../config/environment','redis','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','paused','available','stringify','format','chat:queue:%s','emit','chat_queue:save'];(function(_0x24fa1a,_0x16d9c2){var _0xc5621f=function(_0x5616ac){while(--_0x5616ac){_0x24fa1a['push'](_0x24fa1a['shift']());}};_0xc5621f(++_0x16d9c2);}(_0xbc8e,0x10f));var _0xebc8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc8e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xebc8('0x0'));var md5=require(_0xebc8('0x1'));var util=require('util');var Redis=require(_0xebc8('0x2'));var config=require(_0xebc8('0x3'));config['redis']=_['defaults'](config[_0xebc8('0x4')],{'host':_0xebc8('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xebc8('0x4')]));function ChatQueue(_0xcaf548){this['id']=_0xcaf548['id']||0x0;this[_0xebc8('0x6')]=_0xcaf548['name']||'';this[_0xebc8('0x7')]=_0xcaf548[_0xebc8('0x7')]||0xa;this[_0xebc8('0x8')]=_0xcaf548[_0xebc8('0x8')]||'beepall';this['Agents']=_0xcaf548[_0xebc8('0x9')];this[_0xebc8('0xa')]={};this[_0xebc8('0xb')]=0x0;this[_0xebc8('0x1')]='';this[_0xebc8('0xc')]();this[_0xebc8('0xd')]();}ChatQueue[_0xebc8('0xe')][_0xebc8('0xc')]=function(){var _0x59521c=this[_0xebc8('0xa')][_0xebc8('0xf')];this[_0xebc8('0xa')]=_[_0xebc8('0x10')](this[_0xebc8('0x9')],'id');this[_0xebc8('0xa')][_0xebc8('0xf')]=_0x59521c;};ChatQueue[_0xebc8('0xe')]['updateRealtime']=function(){this[_0xebc8('0x11')]=0x0;this['paused']=0x0;for(var _0x41eecb=0x0;_0x41eecb<this['Agents'][_0xebc8('0x12')];_0x41eecb+=0x1){if(this[_0xebc8('0x9')][_0x41eecb]['online']){this[_0xebc8('0x11')]+=0x1;}if(this['Agents'][_0x41eecb]['chatPause']){this[_0xebc8('0x13')]+=0x1;}}this[_0xebc8('0x14')]=this[_0xebc8('0x11')]-this[_0xebc8('0x13')];this[_0xebc8('0x14')]=this[_0xebc8('0x14')]>=0x0?this[_0xebc8('0x14')]:0x0;var _0x10a340={'id':this['id'],'available':this[_0xebc8('0x14')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xebc8('0x13')],'waiting':this[_0xebc8('0xb')]};var _0x1b56cd=md5(JSON[_0xebc8('0x15')](_0x10a340));if(this['md5']!==_0x1b56cd){this[_0xebc8('0x1')]=_0x1b56cd;io['to'](util[_0xebc8('0x16')](_0xebc8('0x17'),_0x10a340['name']))[_0xebc8('0x18')](_0xebc8('0x19'),_0x10a340);}};module[_0xebc8('0x1a')]=ChatQueue;
\ No newline at end of file
index 7804375..e257a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fed=['faxPause','available','name','waiting','stringify','format','fax:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','Agents','mapAgentsId','updateRouting','_rr','prototype','loggedIn','paused','length','online'];(function(_0x37e34a,_0x266762){var _0x57c67b=function(_0x53da41){while(--_0x53da41){_0x37e34a['push'](_0x37e34a['shift']());}};_0x57c67b(++_0x266762);}(_0x0fed,0xb0));var _0xd0fe=function(_0x4c8c4d,_0x170fc3){_0x4c8c4d=_0x4c8c4d-0x0;var _0x7c72d2=_0x0fed[_0x4c8c4d];return _0x7c72d2;};'use strict';var _=require(_0xd0fe('0x0'));var md5=require(_0xd0fe('0x1'));var util=require(_0xd0fe('0x2'));var Redis=require(_0xd0fe('0x3'));var config=require(_0xd0fe('0x4'));config[_0xd0fe('0x5')]=_[_0xd0fe('0x6')](config[_0xd0fe('0x5')],{'host':_0xd0fe('0x7'),'port':0x18eb});var io=require(_0xd0fe('0x8'))(new Redis(config[_0xd0fe('0x5')]));function FaxQueue(_0x4a72c3){this['id']=_0x4a72c3['id']||0x0;this['name']=_0x4a72c3['name']||'';this[_0xd0fe('0x9')]=_0x4a72c3['timeout']||0xa;this[_0xd0fe('0xa')]=_0x4a72c3[_0xd0fe('0xa')]||'beepall';this['Agents']=_0x4a72c3[_0xd0fe('0xb')];this[_0xd0fe('0xc')]={};this['waiting']=0x0;this[_0xd0fe('0x1')]='';this[_0xd0fe('0xd')]();this['updateRealtime']();}FaxQueue['prototype'][_0xd0fe('0xd')]=function(){var _0x2c61c7=this['mapAgentsId']['_rr'];this[_0xd0fe('0xc')]=_['map'](this[_0xd0fe('0xb')],'id');this[_0xd0fe('0xc')][_0xd0fe('0xe')]=_0x2c61c7;};FaxQueue[_0xd0fe('0xf')]['updateRealtime']=function(){this[_0xd0fe('0x10')]=0x0;this[_0xd0fe('0x11')]=0x0;for(var _0x1ca50f=0x0;_0x1ca50f<this['Agents'][_0xd0fe('0x12')];_0x1ca50f+=0x1){if(this[_0xd0fe('0xb')][_0x1ca50f][_0xd0fe('0x13')]){this[_0xd0fe('0x10')]+=0x1;}if(this[_0xd0fe('0xb')][_0x1ca50f][_0xd0fe('0x14')]){this[_0xd0fe('0x11')]+=0x1;}}this[_0xd0fe('0x15')]=this[_0xd0fe('0x10')]-this[_0xd0fe('0x11')];this[_0xd0fe('0x15')]=this[_0xd0fe('0x15')]>=0x0?this[_0xd0fe('0x15')]:0x0;var _0x1b0da4={'id':this['id'],'available':this[_0xd0fe('0x15')],'loggedIn':this[_0xd0fe('0x10')],'name':this[_0xd0fe('0x16')],'paused':this['paused'],'waiting':this[_0xd0fe('0x17')]};var _0x2d278e=md5(JSON[_0xd0fe('0x18')](_0x1b0da4));if(this[_0xd0fe('0x1')]!==_0x2d278e){this[_0xd0fe('0x1')]=_0x2d278e;io['to'](util[_0xd0fe('0x19')](_0xd0fe('0x1a'),_0x1b0da4[_0xd0fe('0x16')]))[_0xd0fe('0x1b')]('fax_queue:save',_0x1b0da4);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xb29d=['emit','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','length','faxPause','paused','available','stringify','format','fax:queue:%s'];(function(_0x464b25,_0x5aa21c){var _0x298d60=function(_0x113b6b){while(--_0x113b6b){_0x464b25['push'](_0x464b25['shift']());}};_0x298d60(++_0x5aa21c);}(_0xb29d,0xd5));var _0xdb29=function(_0x2bb38f,_0x1033bf){_0x2bb38f=_0x2bb38f-0x0;var _0xf85438=_0xb29d[_0x2bb38f];return _0xf85438;};'use strict';var _=require(_0xdb29('0x0'));var md5=require(_0xdb29('0x1'));var util=require(_0xdb29('0x2'));var Redis=require(_0xdb29('0x3'));var config=require(_0xdb29('0x4'));config[_0xdb29('0x5')]=_['defaults'](config[_0xdb29('0x5')],{'host':_0xdb29('0x6'),'port':0x18eb});var io=require(_0xdb29('0x7'))(new Redis(config['redis']));function FaxQueue(_0x1f793b){this['id']=_0x1f793b['id']||0x0;this[_0xdb29('0x8')]=_0x1f793b[_0xdb29('0x8')]||'';this[_0xdb29('0x9')]=_0x1f793b[_0xdb29('0x9')]||0xa;this[_0xdb29('0xa')]=_0x1f793b[_0xdb29('0xa')]||_0xdb29('0xb');this[_0xdb29('0xc')]=_0x1f793b[_0xdb29('0xc')];this[_0xdb29('0xd')]={};this[_0xdb29('0xe')]=0x0;this[_0xdb29('0x1')]='';this[_0xdb29('0xf')]();this[_0xdb29('0x10')]();}FaxQueue[_0xdb29('0x11')][_0xdb29('0xf')]=function(){var _0x48fcfe=this[_0xdb29('0xd')][_0xdb29('0x12')];this[_0xdb29('0xd')]=_['map'](this[_0xdb29('0xc')],'id');this['mapAgentsId'][_0xdb29('0x12')]=_0x48fcfe;};FaxQueue[_0xdb29('0x11')]['updateRealtime']=function(){this[_0xdb29('0x13')]=0x0;this['paused']=0x0;for(var _0xe9f16e=0x0;_0xe9f16e<this['Agents'][_0xdb29('0x14')];_0xe9f16e+=0x1){if(this[_0xdb29('0xc')][_0xe9f16e]['online']){this['loggedIn']+=0x1;}if(this[_0xdb29('0xc')][_0xe9f16e][_0xdb29('0x15')]){this['paused']+=0x1;}}this['available']=this[_0xdb29('0x13')]-this[_0xdb29('0x16')];this[_0xdb29('0x17')]=this[_0xdb29('0x17')]>=0x0?this[_0xdb29('0x17')]:0x0;var _0x441f02={'id':this['id'],'available':this['available'],'loggedIn':this[_0xdb29('0x13')],'name':this[_0xdb29('0x8')],'paused':this[_0xdb29('0x16')],'waiting':this[_0xdb29('0xe')]};var _0x8978e0=md5(JSON[_0xdb29('0x18')](_0x441f02));if(this['md5']!==_0x8978e0){this[_0xdb29('0x1')]=_0x8978e0;io['to'](util[_0xdb29('0x19')](_0xdb29('0x1a'),_0x441f02[_0xdb29('0x8')]))[_0xdb29('0x1b')](_0xdb29('0x1c'),_0x441f02);}};module[_0xdb29('0x1d')]=FaxQueue;
\ No newline at end of file
index 6bb00b9..f44bfca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46bf=['Intervals','exports','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x46bf,0x98));var _0xf46b=function(_0x45afc1,_0x52a029){_0x45afc1=_0x45afc1-0x0;var _0x182539=_0x46bf[_0x45afc1];return _0x182539;};'use strict';function Interval(_0x241b66){this['id']=_0x241b66['id']||0x0;this[_0xf46b('0x0')]=_0x241b66[_0xf46b('0x0')]||'';this['Intervals']=_0x241b66[_0xf46b('0x1')]||{};}module[_0xf46b('0x2')]=Interval;
\ No newline at end of file
+var _0x5d0f=['Intervals','name'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5d0f,0xbf));var _0xf5d0=function(_0xb1174e,_0x1e68a7){_0xb1174e=_0xb1174e-0x0;var _0x285bac=_0x5d0f[_0xb1174e];return _0x285bac;};'use strict';function Interval(_0x1a259c){this['id']=_0x1a259c['id']||0x0;this['name']=_0x1a259c[_0xf5d0('0x0')]||'';this[_0xf5d0('0x1')]=_0x1a259c[_0xf5d0('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index 49c9fad..0375a1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a36=['name','timeout','strategy','beepall','Agents','mapAgentsId','updateRealtime','prototype','updateRouting','_rr','map','paused','length','online','loggedIn','mailPause','available','waiting','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter'];(function(_0x1edd8e,_0x40455e){var _0x59f672=function(_0x42ea5b){while(--_0x42ea5b){_0x1edd8e['push'](_0x1edd8e['shift']());}};_0x59f672(++_0x40455e);}(_0x3a36,0xb8));var _0x63a3=function(_0x111617,_0x3fdd21){_0x111617=_0x111617-0x0;var _0x5f4898=_0x3a36[_0x111617];return _0x5f4898;};'use strict';var _=require(_0x63a3('0x0'));var md5=require(_0x63a3('0x1'));var util=require(_0x63a3('0x2'));var Redis=require(_0x63a3('0x3'));var config=require('../../../config/environment');config[_0x63a3('0x4')]=_[_0x63a3('0x5')](config[_0x63a3('0x4')],{'host':_0x63a3('0x6'),'port':0x18eb});var io=require(_0x63a3('0x7'))(new Redis(config[_0x63a3('0x4')]));function MailQueue(_0x2b8d7e){this['id']=_0x2b8d7e['id']||0x0;this[_0x63a3('0x8')]=_0x2b8d7e['name']||'';this['timeout']=_0x2b8d7e[_0x63a3('0x9')]||0xa;this[_0x63a3('0xa')]=_0x2b8d7e[_0x63a3('0xa')]||_0x63a3('0xb');this[_0x63a3('0xc')]=_0x2b8d7e['Agents'];this[_0x63a3('0xd')]={};this['waiting']=0x0;this[_0x63a3('0x1')]='';this['updateRouting']();this[_0x63a3('0xe')]();}MailQueue[_0x63a3('0xf')][_0x63a3('0x10')]=function(){var _0xcfba42=this[_0x63a3('0xd')][_0x63a3('0x11')];this[_0x63a3('0xd')]=_[_0x63a3('0x12')](this[_0x63a3('0xc')],'id');this[_0x63a3('0xd')][_0x63a3('0x11')]=_0xcfba42;};MailQueue['prototype'][_0x63a3('0xe')]=function(){this['loggedIn']=0x0;this[_0x63a3('0x13')]=0x0;for(var _0x2e3f81=0x0;_0x2e3f81<this[_0x63a3('0xc')][_0x63a3('0x14')];_0x2e3f81+=0x1){if(this[_0x63a3('0xc')][_0x2e3f81][_0x63a3('0x15')]){this[_0x63a3('0x16')]+=0x1;}if(this[_0x63a3('0xc')][_0x2e3f81][_0x63a3('0x17')]){this[_0x63a3('0x13')]+=0x1;}}this[_0x63a3('0x18')]=this[_0x63a3('0x16')]-this['paused'];this[_0x63a3('0x18')]=this['available']>=0x0?this[_0x63a3('0x18')]:0x0;var _0x4f4b19={'id':this['id'],'available':this[_0x63a3('0x18')],'loggedIn':this['loggedIn'],'name':this[_0x63a3('0x8')],'paused':this[_0x63a3('0x13')],'waiting':this[_0x63a3('0x19')]};var _0x4e4795=md5(JSON[_0x63a3('0x1a')](_0x4f4b19));if(this[_0x63a3('0x1')]!==_0x4e4795){this[_0x63a3('0x1')]=_0x4e4795;io['to'](util[_0x63a3('0x1b')](_0x63a3('0x1c'),_0x4f4b19[_0x63a3('0x8')]))[_0x63a3('0x1d')](_0x63a3('0x1e'),_0x4f4b19);}};module[_0x63a3('0x1f')]=MailQueue;
\ No newline at end of file
+var _0x221f=['mail_queue:save','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','map','updateRealtime','loggedIn','paused','online','mailPause','available','stringify','emit'];(function(_0x45fe9c,_0x55e0d7){var _0x233d48=function(_0xa2ba2e){while(--_0xa2ba2e){_0x45fe9c['push'](_0x45fe9c['shift']());}};_0x233d48(++_0x55e0d7);}(_0x221f,0x72));var _0xf221=function(_0x5f49c0,_0x27a1b4){_0x5f49c0=_0x5f49c0-0x0;var _0x5ab653=_0x221f[_0x5f49c0];return _0x5ab653;};'use strict';var _=require(_0xf221('0x0'));var md5=require(_0xf221('0x1'));var util=require(_0xf221('0x2'));var Redis=require('ioredis');var config=require(_0xf221('0x3'));config[_0xf221('0x4')]=_[_0xf221('0x5')](config[_0xf221('0x4')],{'host':_0xf221('0x6'),'port':0x18eb});var io=require(_0xf221('0x7'))(new Redis(config[_0xf221('0x4')]));function MailQueue(_0x32647e){this['id']=_0x32647e['id']||0x0;this[_0xf221('0x8')]=_0x32647e[_0xf221('0x8')]||'';this[_0xf221('0x9')]=_0x32647e[_0xf221('0x9')]||0xa;this['strategy']=_0x32647e[_0xf221('0xa')]||'beepall';this['Agents']=_0x32647e[_0xf221('0xb')];this['mapAgentsId']={};this[_0xf221('0xc')]=0x0;this[_0xf221('0x1')]='';this[_0xf221('0xd')]();this['updateRealtime']();}MailQueue[_0xf221('0xe')][_0xf221('0xd')]=function(){var _0x10513f=this[_0xf221('0xf')][_0xf221('0x10')];this[_0xf221('0xf')]=_[_0xf221('0x11')](this['Agents'],'id');this[_0xf221('0xf')][_0xf221('0x10')]=_0x10513f;};MailQueue[_0xf221('0xe')][_0xf221('0x12')]=function(){this[_0xf221('0x13')]=0x0;this[_0xf221('0x14')]=0x0;for(var _0x1cc2cf=0x0;_0x1cc2cf<this[_0xf221('0xb')]['length'];_0x1cc2cf+=0x1){if(this['Agents'][_0x1cc2cf][_0xf221('0x15')]){this[_0xf221('0x13')]+=0x1;}if(this[_0xf221('0xb')][_0x1cc2cf][_0xf221('0x16')]){this[_0xf221('0x14')]+=0x1;}}this['available']=this[_0xf221('0x13')]-this['paused'];this[_0xf221('0x17')]=this[_0xf221('0x17')]>=0x0?this[_0xf221('0x17')]:0x0;var _0x20c520={'id':this['id'],'available':this['available'],'loggedIn':this[_0xf221('0x13')],'name':this[_0xf221('0x8')],'paused':this[_0xf221('0x14')],'waiting':this[_0xf221('0xc')]};var _0x1b5d86=md5(JSON[_0xf221('0x18')](_0x20c520));if(this[_0xf221('0x1')]!==_0x1b5d86){this[_0xf221('0x1')]=_0x1b5d86;io['to'](util['format']('mail:queue:%s',_0x20c520['name']))[_0xf221('0x19')](_0xf221('0x1a'),_0x20c520);}};module[_0xf221('0x1b')]=MailQueue;
\ No newline at end of file
index 3fc104a..f6147f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x1261,0x144));var _0x1126=function(_0x283127,_0x54d4d5){_0x283127=_0x283127-0x0;var _0x43da5d=_0x1261[_0x283127];return _0x43da5d;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x476c7,_0x298ee0){var _0x47ae56=function(_0x4acf5a){while(--_0x4acf5a){_0x476c7['push'](_0x476c7['shift']());}};_0x47ae56(++_0x298ee0);}(_0x1261,0x144));var _0x1126=function(_0x4a464e,_0x250abf){_0x4a464e=_0x4a464e-0x0;var _0x54d070=_0x1261[_0x4a464e];return _0x54d070;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index b6dba42..a75364c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd2f=['socket.io-emitter','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','_rr','map','online','loggedIn','smsPause','paused','available','name','format','sms_queue:save','exports','lodash','md5','util','../../../config/environment','defaults','redis'];(function(_0x18cdf5,_0x26c941){var _0x15c9a4=function(_0x4abccb){while(--_0x4abccb){_0x18cdf5['push'](_0x18cdf5['shift']());}};_0x15c9a4(++_0x26c941);}(_0xfd2f,0x14a));var _0xffd2=function(_0x299b07,_0x5460d3){_0x299b07=_0x299b07-0x0;var _0x252c66=_0xfd2f[_0x299b07];return _0x252c66;};'use strict';var _=require(_0xffd2('0x0'));var md5=require(_0xffd2('0x1'));var util=require(_0xffd2('0x2'));var Redis=require('ioredis');var config=require(_0xffd2('0x3'));config['redis']=_[_0xffd2('0x4')](config[_0xffd2('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xffd2('0x6'))(new Redis(config[_0xffd2('0x5')]));function SmsQueue(_0x4aef44){this['id']=_0x4aef44['id']||0x0;this['name']=_0x4aef44['name']||'';this[_0xffd2('0x7')]=_0x4aef44[_0xffd2('0x7')]||0xa;this['strategy']=_0x4aef44[_0xffd2('0x8')]||'beepall';this['Agents']=_0x4aef44[_0xffd2('0x9')];this[_0xffd2('0xa')]={};this[_0xffd2('0xb')]=0x0;this[_0xffd2('0x1')]='';this['updateRouting']();this[_0xffd2('0xc')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x506d58=this[_0xffd2('0xa')][_0xffd2('0xd')];this[_0xffd2('0xa')]=_[_0xffd2('0xe')](this[_0xffd2('0x9')],'id');this[_0xffd2('0xa')][_0xffd2('0xd')]=_0x506d58;};SmsQueue['prototype']['updateRealtime']=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x2f0d34=0x0;_0x2f0d34<this[_0xffd2('0x9')]['length'];_0x2f0d34+=0x1){if(this[_0xffd2('0x9')][_0x2f0d34][_0xffd2('0xf')]){this[_0xffd2('0x10')]+=0x1;}if(this[_0xffd2('0x9')][_0x2f0d34][_0xffd2('0x11')]){this[_0xffd2('0x12')]+=0x1;}}this[_0xffd2('0x13')]=this[_0xffd2('0x10')]-this[_0xffd2('0x12')];this['available']=this[_0xffd2('0x13')]>=0x0?this[_0xffd2('0x13')]:0x0;var _0x214737={'id':this['id'],'available':this['available'],'loggedIn':this[_0xffd2('0x10')],'name':this[_0xffd2('0x14')],'paused':this[_0xffd2('0x12')],'waiting':this[_0xffd2('0xb')]};var _0x49690c=md5(JSON['stringify'](_0x214737));if(this[_0xffd2('0x1')]!==_0x49690c){this[_0xffd2('0x1')]=_0x49690c;io['to'](util[_0xffd2('0x15')]('sms:queue:%s',_0x214737[_0xffd2('0x14')]))['emit'](_0xffd2('0x16'),_0x214737);}};module[_0xffd2('0x17')]=SmsQueue;
\ No newline at end of file
+var _0x07c3=['updateRouting','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','emit','sms_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype'];(function(_0x3bb1c4,_0x4dcb27){var _0x4d1124=function(_0x5a6a70){while(--_0x5a6a70){_0x3bb1c4['push'](_0x3bb1c4['shift']());}};_0x4d1124(++_0x4dcb27);}(_0x07c3,0x1bf));var _0x307c=function(_0x12e073,_0x4d43db){_0x12e073=_0x12e073-0x0;var _0x267748=_0x07c3[_0x12e073];return _0x267748;};'use strict';var _=require(_0x307c('0x0'));var md5=require(_0x307c('0x1'));var util=require(_0x307c('0x2'));var Redis=require(_0x307c('0x3'));var config=require(_0x307c('0x4'));config[_0x307c('0x5')]=_[_0x307c('0x6')](config[_0x307c('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x307c('0x7'))(new Redis(config[_0x307c('0x5')]));function SmsQueue(_0x27515b){this['id']=_0x27515b['id']||0x0;this[_0x307c('0x8')]=_0x27515b[_0x307c('0x8')]||'';this[_0x307c('0x9')]=_0x27515b[_0x307c('0x9')]||0xa;this[_0x307c('0xa')]=_0x27515b[_0x307c('0xa')]||_0x307c('0xb');this[_0x307c('0xc')]=_0x27515b[_0x307c('0xc')];this[_0x307c('0xd')]={};this[_0x307c('0xe')]=0x0;this[_0x307c('0x1')]='';this['updateRouting']();this[_0x307c('0xf')]();}SmsQueue[_0x307c('0x10')][_0x307c('0x11')]=function(){var _0x2af63f=this['mapAgentsId']['_rr'];this[_0x307c('0xd')]=_['map'](this[_0x307c('0xc')],'id');this[_0x307c('0xd')]['_rr']=_0x2af63f;};SmsQueue[_0x307c('0x10')][_0x307c('0xf')]=function(){this[_0x307c('0x12')]=0x0;this[_0x307c('0x13')]=0x0;for(var _0x4193d8=0x0;_0x4193d8<this[_0x307c('0xc')][_0x307c('0x14')];_0x4193d8+=0x1){if(this[_0x307c('0xc')][_0x4193d8][_0x307c('0x15')]){this[_0x307c('0x12')]+=0x1;}if(this[_0x307c('0xc')][_0x4193d8][_0x307c('0x16')]){this['paused']+=0x1;}}this[_0x307c('0x17')]=this[_0x307c('0x12')]-this[_0x307c('0x13')];this[_0x307c('0x17')]=this[_0x307c('0x17')]>=0x0?this[_0x307c('0x17')]:0x0;var _0x3e05e2={'id':this['id'],'available':this[_0x307c('0x17')],'loggedIn':this[_0x307c('0x12')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x307c('0xe')]};var _0x4aa3c8=md5(JSON[_0x307c('0x18')](_0x3e05e2));if(this['md5']!==_0x4aa3c8){this['md5']=_0x4aa3c8;io['to'](util[_0x307c('0x19')](_0x307c('0x1a'),_0x3e05e2['name']))[_0x307c('0x1b')](_0x307c('0x1c'),_0x3e05e2);}};module['exports']=SmsQueue;
\ No newline at end of file
index 26be8b3..f8ef645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf16b=['defaults','socket.io-emitter','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','available','stringify','whatsapp:queue:%s','name','emit','exports','lodash','md5','util','ioredis','redis'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf16b,0x91));var _0xbf16=function(_0x5eecae,_0x428c99){_0x5eecae=_0x5eecae-0x0;var _0x484182=_0xf16b[_0x5eecae];return _0x484182;};'use strict';var _=require(_0xbf16('0x0'));var md5=require(_0xbf16('0x1'));var util=require(_0xbf16('0x2'));var Redis=require(_0xbf16('0x3'));var config=require('../../../config/environment');config[_0xbf16('0x4')]=_[_0xbf16('0x5')](config[_0xbf16('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xbf16('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x29f7b1){this['id']=_0x29f7b1['id']||0x0;this['name']=_0x29f7b1['name']||'';this[_0xbf16('0x7')]=_0x29f7b1[_0xbf16('0x7')]||0xa;this[_0xbf16('0x8')]=_0x29f7b1[_0xbf16('0x8')]||'beepall';this['Agents']=_0x29f7b1[_0xbf16('0x9')];this[_0xbf16('0xa')]={};this[_0xbf16('0xb')]=0x0;this[_0xbf16('0x1')]='';this[_0xbf16('0xc')]();this[_0xbf16('0xd')]();}WhatsappQueue['prototype'][_0xbf16('0xc')]=function(){var _0x15e8e9=this['mapAgentsId']['_rr'];this[_0xbf16('0xa')]=_[_0xbf16('0xe')](this[_0xbf16('0x9')],'id');this[_0xbf16('0xa')][_0xbf16('0xf')]=_0x15e8e9;};WhatsappQueue[_0xbf16('0x10')]['updateRealtime']=function(){this[_0xbf16('0x11')]=0x0;this[_0xbf16('0x12')]=0x0;for(var _0x1ce5ed=0x0;_0x1ce5ed<this[_0xbf16('0x9')]['length'];_0x1ce5ed+=0x1){if(this[_0xbf16('0x9')][_0x1ce5ed]['online']){this[_0xbf16('0x11')]+=0x1;}if(this['Agents'][_0x1ce5ed]['whatsappPause']){this['paused']+=0x1;}}this[_0xbf16('0x13')]=this[_0xbf16('0x11')]-this[_0xbf16('0x12')];this[_0xbf16('0x13')]=this[_0xbf16('0x13')]>=0x0?this[_0xbf16('0x13')]:0x0;var _0x775396={'id':this['id'],'available':this['available'],'loggedIn':this[_0xbf16('0x11')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x13b35f=md5(JSON[_0xbf16('0x14')](_0x775396));if(this[_0xbf16('0x1')]!==_0x13b35f){this['md5']=_0x13b35f;io['to'](util['format'](_0xbf16('0x15'),_0x775396[_0xbf16('0x16')]))[_0xbf16('0x17')]('whatsapp_queue:save',_0x775396);}};module[_0xbf16('0x18')]=WhatsappQueue;
\ No newline at end of file
+var _0x7369=['mapAgentsId','_rr','map','loggedIn','length','online','paused','available','stringify','format','whatsapp_queue:save','lodash','md5','util','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype'];(function(_0x54b3fa,_0x29484b){var _0x15081f=function(_0x3a9ea2){while(--_0x3a9ea2){_0x54b3fa['push'](_0x54b3fa['shift']());}};_0x15081f(++_0x29484b);}(_0x7369,0x1d6));var _0x9736=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x7369[_0x134c2e];return _0x2825db;};'use strict';var _=require(_0x9736('0x0'));var md5=require(_0x9736('0x1'));var util=require(_0x9736('0x2'));var Redis=require(_0x9736('0x3'));var config=require('../../../config/environment');config[_0x9736('0x4')]=_['defaults'](config[_0x9736('0x4')],{'host':_0x9736('0x5'),'port':0x18eb});var io=require(_0x9736('0x6'))(new Redis(config[_0x9736('0x4')]));function WhatsappQueue(_0x53283a){this['id']=_0x53283a['id']||0x0;this['name']=_0x53283a[_0x9736('0x7')]||'';this[_0x9736('0x8')]=_0x53283a['timeout']||0xa;this[_0x9736('0x9')]=_0x53283a[_0x9736('0x9')]||_0x9736('0xa');this['Agents']=_0x53283a[_0x9736('0xb')];this['mapAgentsId']={};this[_0x9736('0xc')]=0x0;this[_0x9736('0x1')]='';this[_0x9736('0xd')]();this[_0x9736('0xe')]();}WhatsappQueue[_0x9736('0xf')][_0x9736('0xd')]=function(){var _0x354606=this[_0x9736('0x10')][_0x9736('0x11')];this['mapAgentsId']=_[_0x9736('0x12')](this[_0x9736('0xb')],'id');this['mapAgentsId'][_0x9736('0x11')]=_0x354606;};WhatsappQueue['prototype']['updateRealtime']=function(){this[_0x9736('0x13')]=0x0;this['paused']=0x0;for(var _0x1234f7=0x0;_0x1234f7<this['Agents'][_0x9736('0x14')];_0x1234f7+=0x1){if(this[_0x9736('0xb')][_0x1234f7][_0x9736('0x15')]){this[_0x9736('0x13')]+=0x1;}if(this[_0x9736('0xb')][_0x1234f7]['whatsappPause']){this[_0x9736('0x16')]+=0x1;}}this[_0x9736('0x17')]=this[_0x9736('0x13')]-this[_0x9736('0x16')];this[_0x9736('0x17')]=this[_0x9736('0x17')]>=0x0?this['available']:0x0;var _0x177ab9={'id':this['id'],'available':this[_0x9736('0x17')],'loggedIn':this[_0x9736('0x13')],'name':this['name'],'paused':this[_0x9736('0x16')],'waiting':this['waiting']};var _0x49f8da=md5(JSON[_0x9736('0x18')](_0x177ab9));if(this[_0x9736('0x1')]!==_0x49f8da){this['md5']=_0x49f8da;io['to'](util[_0x9736('0x19')]('whatsapp:queue:%s',_0x177ab9[_0x9736('0x7')]))['emit'](_0x9736('0x1a'),_0x177ab9);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index ed01840..abd7726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x4fe1e2,_0x551767){var _0x1ae2e1=function(_0x20d632){while(--_0x20d632){_0x4fe1e2['push'](_0x4fe1e2['shift']());}};_0x1ae2e1(++_0x551767);}(_0xb10b,0x12a));var _0xbb10=function(_0x2ce9d,_0x4ff962){_0x2ce9d=_0x2ce9d-0x0;var _0x578428=_0xb10b[_0x2ce9d];return _0x578428;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index ef25485..dff8a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da0=['../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x58cc93,_0x215ecc){var _0x1764d5=function(_0x38db14){while(--_0x38db14){_0x58cc93['push'](_0x58cc93['shift']());}};_0x1764d5(++_0x215ecc);}(_0x5da0,0x1a0));var _0x05da=function(_0x1adaee,_0x5b65e1){_0x1adaee=_0x1adaee-0x0;var _0x1e8c47=_0x5da0[_0x1adaee];return _0x1e8c47;};'use strict';var client=require(_0x05da('0x0'));exports[_0x05da('0x1')]=function(_0x1f86dc,_0x27ddcb){return client[_0x05da('0x2')](_0x05da('0x3'),{'body':_0x27ddcb,'options':{'where':{'id':_0x1f86dc}},'log':_0x05da('0x4')});};exports[_0x05da('0x5')]=function(_0x4a6771,_0x1c6a09){return client[_0x05da('0x2')](_0x05da('0x6'),{'body':_0x1c6a09,'options':{'where':{'id':_0x4a6771}},'log':_0x05da('0x7')});};
\ No newline at end of file
+var _0xeee8=['UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xeee8,0x10f));var _0x8eee=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeee8[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x8eee('0x0'));exports[_0x8eee('0x1')]=function(_0x5a232f,_0x331e49){return client['Request'](_0x8eee('0x2'),{'body':_0x331e49,'options':{'where':{'id':_0x5a232f}},'log':_0x8eee('0x3')});};exports[_0x8eee('0x4')]=function(_0x2fa97f,_0x4ac55d){return client['Request'](_0x8eee('0x5'),{'body':_0x4ac55d,'options':{'where':{'id':_0x2fa97f}},'log':_0x8eee('0x6')});};
\ No newline at end of file
index 0d678b4..bccb5f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea8=['CreateChatMessage','createChatMessage','Request'];(function(_0x3932a8,_0x3cf323){var _0x49f670=function(_0x3d4ce3){while(--_0x3d4ce3){_0x3932a8['push'](_0x3932a8['shift']());}};_0x49f670(++_0x3cf323);}(_0xeea8,0x7a));var _0x8eea=function(_0x202614,_0x80b668){_0x202614=_0x202614-0x0;var _0x48ebce=_0xeea8[_0x202614];return _0x48ebce;};'use strict';var client=require('../client');exports['create']=function(_0x5c4f20){return client[_0x8eea('0x0')](_0x8eea('0x1'),{'body':_0x5c4f20,'log':_0x8eea('0x2')});};
\ No newline at end of file
+var _0x6680=['Request','CreateChatMessage','createChatMessage','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6680,0x19f));var _0x0668=function(_0x533843,_0x3d5ec0){_0x533843=_0x533843-0x0;var _0x55a5f4=_0x6680[_0x533843];return _0x55a5f4;};'use strict';var client=require('../client');exports[_0x0668('0x0')]=function(_0x289bdf){return client[_0x0668('0x1')](_0x0668('0x2'),{'body':_0x289bdf,'log':_0x0668('0x3')});};
\ No newline at end of file
index a673d00..bea1665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f7a=['timeout','name','online','../client','getChatQueues','Request','GetChatQueue'];(function(_0x346389,_0x90686b){var _0x22bfd1=function(_0x44db41){while(--_0x44db41){_0x346389['push'](_0x346389['shift']());}};_0x22bfd1(++_0x90686b);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x9f7a[_0x3305de];return _0x3b5a84;};'use strict';var client=require(_0xa9f7('0x0'));exports[_0xa9f7('0x1')]=function(){return function(){return client[_0xa9f7('0x2')](_0xa9f7('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xa9f7('0x4'),'strategy'],'include':[{'model':'User','as':'Agents','attributes':['id',_0xa9f7('0x5'),_0xa9f7('0x6'),'chatPause']}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x2208=['timeout','strategy','User','Agents','name','online','getChatQueues','GetChatQueue'];(function(_0x4e12bd,_0x136d34){var _0xa10292=function(_0x4214dc){while(--_0x4214dc){_0x4e12bd['push'](_0x4e12bd['shift']());}};_0xa10292(++_0x136d34);}(_0x2208,0x11e));var _0x8220=function(_0x46a93c,_0x4a3156){_0x46a93c=_0x46a93c-0x0;var _0xb11270=_0x2208[_0x46a93c];return _0xb11270;};'use strict';var client=require('../client');exports[_0x8220('0x0')]=function(){return function(){return client['Request'](_0x8220('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x8220('0x2'),_0x8220('0x3')],'include':[{'model':_0x8220('0x4'),'as':_0x8220('0x5'),'attributes':['id',_0x8220('0x6'),_0x8220('0x7'),'chatPause']}]},'log':_0x8220('0x0')});};};
\ No newline at end of file
index 8facd55..acd883c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d4=['create','Request','update','UpdateChatQueueReport','DESC','../client'];(function(_0x575a38,_0x2e83d7){var _0x5a7bdd=function(_0x1bf478){while(--_0x1bf478){_0x575a38['push'](_0x575a38['shift']());}};_0x5a7bdd(++_0x2e83d7);}(_0xd1d4,0xfb));var _0x4d1d=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xd1d4[_0x1f9f37];return _0x21c080;};'use strict';var client=require(_0x4d1d('0x0'));exports[_0x4d1d('0x1')]=function(_0x5c408a){return client[_0x4d1d('0x2')]('CreateChatQueueReport',{'body':_0x5c408a,'log':'CreateChatQueueReport'});};exports[_0x4d1d('0x3')]=function(_0xb64ee,_0x260e6a){return client[_0x4d1d('0x2')](_0x4d1d('0x4'),{'body':_0x260e6a,'options':{'where':{'uniqueid':_0xb64ee},'order':[['id',_0x4d1d('0x5')]],'limit':0x1},'log':_0x4d1d('0x4')});};
\ No newline at end of file
+var _0xb201=['DESC','../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x140e13,_0x131c89){var _0x31154f=function(_0x4c686a){while(--_0x4c686a){_0x140e13['push'](_0x140e13['shift']());}};_0x31154f(++_0x131c89);}(_0xb201,0x1b1));var _0x1b20=function(_0x31a793,_0x592cb2){_0x31a793=_0x31a793-0x0;var _0x1efcde=_0xb201[_0x31a793];return _0x1efcde;};'use strict';var client=require(_0x1b20('0x0'));exports['create']=function(_0x333586){return client[_0x1b20('0x1')](_0x1b20('0x2'),{'body':_0x333586,'log':_0x1b20('0x2')});};exports[_0x1b20('0x3')]=function(_0x1fc27a,_0x48d5c9){return client[_0x1b20('0x1')](_0x1b20('0x4'),{'body':_0x48d5c9,'options':{'where':{'uniqueid':_0x1fc27a},'order':[['id',_0x1b20('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index f5d7b8e..2aaf2b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x3ced49,_0x1b8e8b){var _0x3ba782=function(_0x44acf5){while(--_0x44acf5){_0x3ced49['push'](_0x3ced49['shift']());}};_0x3ba782(++_0x1b8e8b);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4d79bc,_0x32c905){var _0x4b4760=function(_0x212302){while(--_0x212302){_0x4d79bc['push'](_0x4d79bc['shift']());}};_0x4b4760(++_0x32c905);}(_0x7a54,0x106));var _0x47a5=function(_0x4f0e79,_0x9fc180){_0x4f0e79=_0x4f0e79-0x0;var _0x434cf9=_0x7a54[_0x4f0e79];return _0x434cf9;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index 595b72e..22f8f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x933b=['Request','CreateFaxMessage','createFaxMessage','create'];(function(_0x330762,_0x540513){var _0x9d56ac=function(_0x9b4d26){while(--_0x9b4d26){_0x330762['push'](_0x330762['shift']());}};_0x9d56ac(++_0x540513);}(_0x933b,0x97));var _0xb933=function(_0x2ec27f,_0xbebdbb){_0x2ec27f=_0x2ec27f-0x0;var _0x23f006=_0x933b[_0x2ec27f];return _0x23f006;};'use strict';var client=require('../client');exports[_0xb933('0x0')]=function(_0x459949){return client[_0xb933('0x1')](_0xb933('0x2'),{'body':_0x459949,'log':_0xb933('0x3')});};
\ No newline at end of file
+var _0x1c4b=['Request','CreateFaxMessage','createFaxMessage','../client'];(function(_0x5b31df,_0x4dc876){var _0x3aeedb=function(_0x5d7c3a){while(--_0x5d7c3a){_0x5b31df['push'](_0x5b31df['shift']());}};_0x3aeedb(++_0x4dc876);}(_0x1c4b,0xd3));var _0xb1c4=function(_0x2a7d88,_0x3b4228){_0x2a7d88=_0x2a7d88-0x0;var _0x388dbb=_0x1c4b[_0x2a7d88];return _0x388dbb;};'use strict';var client=require(_0xb1c4('0x0'));exports['create']=function(_0xcd5456){return client[_0xb1c4('0x1')](_0xb1c4('0x2'),{'body':_0xcd5456,'log':_0xb1c4('0x3')});};
\ No newline at end of file
index a801762..ee1b53b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff48=['faxPause','getFaxQueues','../client','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online'];(function(_0x5d4572,_0x34556c){var _0x58d3aa=function(_0x395604){while(--_0x395604){_0x5d4572['push'](_0x5d4572['shift']());}};_0x58d3aa(++_0x34556c);}(_0xff48,0x1af));var _0x8ff4=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xff48[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0x8ff4('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x8ff4('0x1')](_0x8ff4('0x2'),{'options':{'raw':![],'attributes':['id',_0x8ff4('0x3'),_0x8ff4('0x4'),_0x8ff4('0x5')],'include':[{'model':_0x8ff4('0x6'),'as':_0x8ff4('0x7'),'attributes':['id','name',_0x8ff4('0x8'),_0x8ff4('0x9')]}]},'log':_0x8ff4('0xa')});};};
\ No newline at end of file
+var _0xb0b6=['getFaxQueues','strategy','User','Agents','online','faxPause'];(function(_0x4f3937,_0x3dedb2){var _0x7f48d4=function(_0x27a71f){while(--_0x27a71f){_0x4f3937['push'](_0x4f3937['shift']());}};_0x7f48d4(++_0x3dedb2);}(_0xb0b6,0x8a));var _0x6b0b=function(_0x300c03,_0x220f6a){_0x300c03=_0x300c03-0x0;var _0x3771d9=_0xb0b6[_0x300c03];return _0x3771d9;};'use strict';var client=require('../client');exports[_0x6b0b('0x0')]=function(){return function(){return client['Request']('GetFaxQueue',{'options':{'raw':![],'attributes':['id','name','timeout',_0x6b0b('0x1')],'include':[{'model':_0x6b0b('0x2'),'as':_0x6b0b('0x3'),'attributes':['id','name',_0x6b0b('0x4'),_0x6b0b('0x5')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 950cfe1..807abd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a5=['CreateFaxQueueReport','UpdateFaxQueueReport','create','Request'];(function(_0x1be1a5,_0x495c28){var _0xb78921=function(_0x134a20){while(--_0x134a20){_0x1be1a5['push'](_0x1be1a5['shift']());}};_0xb78921(++_0x495c28);}(_0xd4a5,0x166));var _0x5d4a=function(_0x3117ce,_0x7dd4c2){_0x3117ce=_0x3117ce-0x0;var _0x5b3962=_0xd4a5[_0x3117ce];return _0x5b3962;};'use strict';var client=require('../client');exports[_0x5d4a('0x0')]=function(_0x45e5ed){return client[_0x5d4a('0x1')](_0x5d4a('0x2'),{'body':_0x45e5ed,'log':_0x5d4a('0x2')});};exports['update']=function(_0x38669c,_0x3a8918){return client[_0x5d4a('0x1')]('UpdateFaxQueueReport',{'body':_0x3a8918,'options':{'where':{'uniqueid':_0x38669c},'order':[['id','DESC']],'limit':0x1},'log':_0x5d4a('0x3')});};
\ No newline at end of file
+var _0xdce4=['../client','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdce4,0x186));var _0x4dce=function(_0x38c48b,_0x2306df){_0x38c48b=_0x38c48b-0x0;var _0x4714eb=_0xdce4[_0x38c48b];return _0x4714eb;};'use strict';var client=require(_0x4dce('0x0'));exports['create']=function(_0x2b2469){return client[_0x4dce('0x1')](_0x4dce('0x2'),{'body':_0x2b2469,'log':_0x4dce('0x2')});};exports[_0x4dce('0x3')]=function(_0x58ebd6,_0x13cc58){return client[_0x4dce('0x1')](_0x4dce('0x4'),{'body':_0x13cc58,'options':{'where':{'uniqueid':_0x58ebd6},'order':[['id',_0x4dce('0x5')]],'limit':0x1},'log':_0x4dce('0x4')});};
\ No newline at end of file
index 3fb751a..a248992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeadd=['Intervals','interval','../client','getIntervals','Request','name','Interval'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0xeadd,0x152));var _0xdead=function(_0x43a538,_0x385c5e){_0x43a538=_0x43a538-0x0;var _0x5ad554=_0xeadd[_0x43a538];return _0x5ad554;};'use strict';var client=require(_0xdead('0x0'));exports[_0xdead('0x1')]=function(){return function(){return client[_0xdead('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xdead('0x3')],'include':[{'model':_0xdead('0x4'),'as':_0xdead('0x5'),'attributes':['id',_0xdead('0x3'),_0xdead('0x6')]}]},'log':_0xdead('0x1')});};};
\ No newline at end of file
+var _0x8c39=['name','Interval','../client','getIntervals','GetInterval'];(function(_0x267f09,_0x495c0f){var _0xf7c9fe=function(_0x1ea823){while(--_0x1ea823){_0x267f09['push'](_0x267f09['shift']());}};_0xf7c9fe(++_0x495c0f);}(_0x8c39,0x12e));var _0x98c3=function(_0x4171ed,_0x4353c9){_0x4171ed=_0x4171ed-0x0;var _0x431699=_0x8c39[_0x4171ed];return _0x431699;};'use strict';var client=require(_0x98c3('0x0'));exports[_0x98c3('0x1')]=function(){return function(){return client['Request'](_0x98c3('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x98c3('0x3')],'include':[{'model':_0x98c3('0x4'),'as':'Intervals','attributes':['id','name','interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
index b8f8f7d..ee361a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','../client'];(function(_0x84dbc9,_0x804160){var _0x365eea=function(_0x5c11c6){while(--_0x5c11c6){_0x84dbc9['push'](_0x84dbc9['shift']());}};_0x365eea(++_0x804160);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xf2e3[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0x3f2e('0x0'));exports['update']=function(_0x143e9e,_0x231b2b){return client[_0x3f2e('0x1')](_0x3f2e('0x2'),{'body':_0x231b2b,'options':{'where':{'id':_0x143e9e}},'log':_0x3f2e('0x3')});};exports[_0x3f2e('0x4')]=function(_0x3938e2,_0xabcf5c){return client[_0x3f2e('0x1')]('AddTagsToMailInteraction',{'body':_0xabcf5c,'options':{'where':{'id':_0x3938e2}},'log':_0x3f2e('0x5')});};
\ No newline at end of file
+var _0x6d38=['updateMailInteraction','Request','addTagsToChatInteraction','update'];(function(_0x30780e,_0x537b34){var _0x5b9129=function(_0xcf4cd1){while(--_0xcf4cd1){_0x30780e['push'](_0x30780e['shift']());}};_0x5b9129(++_0x537b34);}(_0x6d38,0x1ef));var _0x86d3=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6d38[_0x31e29a];return _0x32d892;};'use strict';var client=require('../client');exports[_0x86d3('0x0')]=function(_0x4c9c06,_0x3db243){return client['Request']('UpdateMailInteraction',{'body':_0x3db243,'options':{'where':{'id':_0x4c9c06}},'log':_0x86d3('0x1')});};exports['addTags']=function(_0xe9198a,_0x455b9d){return client[_0x86d3('0x2')]('AddTagsToMailInteraction',{'body':_0x455b9d,'options':{'where':{'id':_0xe9198a}},'log':_0x86d3('0x3')});};
\ No newline at end of file
index bcfbb1a..0fb3674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0400=['Request','createMailMessage','../client'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0x0400,0x1f4));var _0x0040=function(_0x2187b0,_0x10504c){_0x2187b0=_0x2187b0-0x0;var _0x341dc1=_0x0400[_0x2187b0];return _0x341dc1;};'use strict';var client=require(_0x0040('0x0'));exports['create']=function(_0x421fe7){return client[_0x0040('0x1')]('CreateMailMessage',{'body':_0x421fe7,'log':_0x0040('0x2')});};
\ No newline at end of file
+var _0xb35a=['create','Request','CreateMailMessage','../client'];(function(_0x50bbcc,_0x4a3e0c){var _0x328037=function(_0x3d0ce4){while(--_0x3d0ce4){_0x50bbcc['push'](_0x50bbcc['shift']());}};_0x328037(++_0x4a3e0c);}(_0xb35a,0x8f));var _0xab35=function(_0x2cfc4e,_0x155bd9){_0x2cfc4e=_0x2cfc4e-0x0;var _0x4788ac=_0xb35a[_0x2cfc4e];return _0x4788ac;};'use strict';var client=require(_0xab35('0x0'));exports[_0xab35('0x1')]=function(_0x2bf674){return client[_0xab35('0x2')](_0xab35('0x3'),{'body':_0x2bf674,'log':'createMailMessage'});};
\ No newline at end of file
index e133e2f..01b8dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1015=['User','Agents','mailPause','../client','getMailQueues','Request','GetMailQueue','name','timeout','strategy'];(function(_0x49fda9,_0x54d0d4){var _0x376bc2=function(_0x3b796f){while(--_0x3b796f){_0x49fda9['push'](_0x49fda9['shift']());}};_0x376bc2(++_0x54d0d4);}(_0x1015,0x85));var _0x5101=function(_0x3e6ff9,_0x225ad7){_0x3e6ff9=_0x3e6ff9-0x0;var _0x3c3a0d=_0x1015[_0x3e6ff9];return _0x3c3a0d;};'use strict';var client=require(_0x5101('0x0'));exports[_0x5101('0x1')]=function(){return function(){return client[_0x5101('0x2')](_0x5101('0x3'),{'options':{'raw':![],'attributes':['id',_0x5101('0x4'),_0x5101('0x5'),_0x5101('0x6')],'include':[{'model':_0x5101('0x7'),'as':_0x5101('0x8'),'attributes':['id','name','online',_0x5101('0x9')]}]},'log':_0x5101('0x1')});};};
\ No newline at end of file
+var _0x79d0=['../client','getMailQueues','name','timeout','strategy','User','mailPause'];(function(_0x429174,_0x1b42a0){var _0x2df43a=function(_0x35708b){while(--_0x35708b){_0x429174['push'](_0x429174['shift']());}};_0x2df43a(++_0x1b42a0);}(_0x79d0,0x165));var _0x079d=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x79d0[_0x209941];return _0x1e8729;};'use strict';var client=require(_0x079d('0x0'));exports[_0x079d('0x1')]=function(){return function(){return client['Request']('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x079d('0x2'),_0x079d('0x3'),_0x079d('0x4')],'include':[{'model':_0x079d('0x5'),'as':'Agents','attributes':['id',_0x079d('0x2'),'online',_0x079d('0x6')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 10213b5..1ad05e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x776d=['DESC','Request','CreateMailQueueReport','update','UpdateMailQueueReport'];(function(_0x5acdf2,_0x30b5db){var _0x3054f7=function(_0x3e1185){while(--_0x3e1185){_0x5acdf2['push'](_0x5acdf2['shift']());}};_0x3054f7(++_0x30b5db);}(_0x776d,0x11e));var _0xd776=function(_0x216dab,_0x247742){_0x216dab=_0x216dab-0x0;var _0x37fe33=_0x776d[_0x216dab];return _0x37fe33;};'use strict';var client=require('../client');exports['create']=function(_0x463b44){return client[_0xd776('0x0')](_0xd776('0x1'),{'body':_0x463b44,'log':'CreateMailQueueReport'});};exports[_0xd776('0x2')]=function(_0x571b11,_0x4faa97){return client[_0xd776('0x0')](_0xd776('0x3'),{'body':_0x4faa97,'options':{'where':{'uniqueid':_0x571b11},'order':[['id',_0xd776('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x12dc=['../client','create','Request','CreateMailQueueReport','UpdateMailQueueReport'];(function(_0x44255f,_0x57cb8e){var _0x1a0c68=function(_0x54a4a4){while(--_0x54a4a4){_0x44255f['push'](_0x44255f['shift']());}};_0x1a0c68(++_0x57cb8e);}(_0x12dc,0x1f4));var _0xc12d=function(_0xdc6e9b,_0x5eb1a9){_0xdc6e9b=_0xdc6e9b-0x0;var _0x3554b1=_0x12dc[_0xdc6e9b];return _0x3554b1;};'use strict';var client=require(_0xc12d('0x0'));exports[_0xc12d('0x1')]=function(_0x8a1745){return client[_0xc12d('0x2')](_0xc12d('0x3'),{'body':_0x8a1745,'log':'CreateMailQueueReport'});};exports['update']=function(_0xf176a1,_0x50b111){return client['Request'](_0xc12d('0x4'),{'body':_0x50b111,'options':{'where':{'uniqueid':_0xf176a1},'order':[['id','DESC']],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 043c2d1..5d20f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc478=['updateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0xc478,0x1ad));var _0x8c47=function(_0x1fc2ea,_0x3466b3){_0x1fc2ea=_0x1fc2ea-0x0;var _0x3771a1=_0xc478[_0x1fc2ea];return _0x3771a1;};'use strict';var client=require(_0x8c47('0x0'));exports[_0x8c47('0x1')]=function(_0x5e55d4,_0xcb495a){return client['Request'](_0x8c47('0x2'),{'body':_0xcb495a,'options':{'where':{'id':_0x5e55d4}},'log':_0x8c47('0x3')});};exports[_0x8c47('0x4')]=function(_0x2b4514,_0x43e24b){return client[_0x8c47('0x5')](_0x8c47('0x6'),{'body':_0x43e24b,'options':{'where':{'id':_0x2b4514}},'log':_0x8c47('0x7')});};
\ No newline at end of file
+var _0xf43b=['addTags','AddTagsToOpenchannelInteraction','../client','Request','UpdateOpenchannelInteraction'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xf43b,0x138));var _0xbf43=function(_0x113e2e,_0x3b5a22){_0x113e2e=_0x113e2e-0x0;var _0x1dc01d=_0xf43b[_0x113e2e];return _0x1dc01d;};'use strict';var client=require(_0xbf43('0x0'));exports['update']=function(_0x40aac6,_0x1eb4c5){return client[_0xbf43('0x1')](_0xbf43('0x2'),{'body':_0x1eb4c5,'options':{'where':{'id':_0x40aac6}},'log':'updateOpenchannelInteraction'});};exports[_0xbf43('0x3')]=function(_0x5a90e7,_0x33da5f){return client[_0xbf43('0x1')](_0xbf43('0x4'),{'body':_0x33da5f,'options':{'where':{'id':_0x5a90e7}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index aa8f65d..e0251e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db7=['CreateOpenchannelMessage','createOpenchannelMessage','create'];(function(_0x5e2a5e,_0x92525b){var _0x5d6641=function(_0x4b905e){while(--_0x4b905e){_0x5e2a5e['push'](_0x5e2a5e['shift']());}};_0x5d6641(++_0x92525b);}(_0x0db7,0x1ac));var _0x70db=function(_0x57c2c0,_0xd5af1a){_0x57c2c0=_0x57c2c0-0x0;var _0x4887f7=_0x0db7[_0x57c2c0];return _0x4887f7;};'use strict';var client=require('../client');exports[_0x70db('0x0')]=function(_0x3f6e1b){return client['Request'](_0x70db('0x1'),{'body':_0x3f6e1b,'log':_0x70db('0x2')});};
\ No newline at end of file
+var _0xe401=['create','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x3b4fff,_0x119f97){var _0x15e89d=function(_0x5123e1){while(--_0x5123e1){_0x3b4fff['push'](_0x3b4fff['shift']());}};_0x15e89d(++_0x119f97);}(_0xe401,0x183));var _0x1e40=function(_0x55a246,_0x9feb4b){_0x55a246=_0x55a246-0x0;var _0x5e1aad=_0xe401[_0x55a246];return _0x5e1aad;};'use strict';var client=require('../client');exports[_0x1e40('0x0')]=function(_0x3efb67){return client['Request'](_0x1e40('0x1'),{'body':_0x3efb67,'log':_0x1e40('0x2')});};
\ No newline at end of file
index 6c9f7c9..91e9b1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e36=['Request','name','timeout','strategy','User','Agents','online','../client','getOpenchannelQueues'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5e36,0x97));var _0x65e3=function(_0x3cce19,_0x470ba6){_0x3cce19=_0x3cce19-0x0;var _0x151990=_0x5e36[_0x3cce19];return _0x151990;};'use strict';var client=require(_0x65e3('0x0'));exports[_0x65e3('0x1')]=function(){return function(){return client[_0x65e3('0x2')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x65e3('0x3'),_0x65e3('0x4'),_0x65e3('0x5')],'include':[{'model':_0x65e3('0x6'),'as':_0x65e3('0x7'),'attributes':['id',_0x65e3('0x3'),_0x65e3('0x8'),'openchannelPause']}]},'log':_0x65e3('0x1')});};};
\ No newline at end of file
+var _0xc8fc=['name','online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','strategy','User'];(function(_0x40bd96,_0x5cbb7d){var _0x3ebff3=function(_0x317da8){while(--_0x317da8){_0x40bd96['push'](_0x40bd96['shift']());}};_0x3ebff3(++_0x5cbb7d);}(_0xc8fc,0x78));var _0xcc8f=function(_0xed6570,_0x592079){_0xed6570=_0xed6570-0x0;var _0x53e475=_0xc8fc[_0xed6570];return _0x53e475;};'use strict';var client=require('../client');exports[_0xcc8f('0x0')]=function(){return function(){return client[_0xcc8f('0x1')](_0xcc8f('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xcc8f('0x3'),_0xcc8f('0x4')],'include':[{'model':_0xcc8f('0x5'),'as':'Agents','attributes':['id',_0xcc8f('0x6'),_0xcc8f('0x7'),_0xcc8f('0x8')]}]},'log':_0xcc8f('0x0')});};};
\ No newline at end of file
index 7174df4..272fffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['Request','UpdateOpenchannelQueueReport','../client','create','CreateOpenchannelQueueReport','update'];(function(_0x21e7e6,_0x17565f){var _0xa412a9=function(_0x1d499b){while(--_0x1d499b){_0x21e7e6['push'](_0x21e7e6['shift']());}};_0xa412a9(++_0x17565f);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x39c7e3,_0x4a74a2){_0x39c7e3=_0x39c7e3-0x0;var _0x469315=_0x9ffd[_0x39c7e3];return _0x469315;};'use strict';var client=require(_0xd9ff('0x0'));exports[_0xd9ff('0x1')]=function(_0x47e5c0){return client['Request'](_0xd9ff('0x2'),{'body':_0x47e5c0,'log':_0xd9ff('0x2')});};exports[_0xd9ff('0x3')]=function(_0x5493ae,_0x53e962){return client[_0xd9ff('0x4')](_0xd9ff('0x5'),{'body':_0x53e962,'options':{'where':{'uniqueid':_0x5493ae},'order':[['id','DESC']],'limit':0x1},'log':_0xd9ff('0x5')});};
\ No newline at end of file
+var _0x0e21=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','create','Request'];(function(_0x4af1cc,_0x14946f){var _0x41d9d3=function(_0x1c63a2){while(--_0x1c63a2){_0x4af1cc['push'](_0x4af1cc['shift']());}};_0x41d9d3(++_0x14946f);}(_0x0e21,0xe8));var _0x10e2=function(_0x1ce0ec,_0x3735a1){_0x1ce0ec=_0x1ce0ec-0x0;var _0x25f052=_0x0e21[_0x1ce0ec];return _0x25f052;};'use strict';var client=require('../client');exports[_0x10e2('0x0')]=function(_0x1caf3e){return client[_0x10e2('0x1')]('CreateOpenchannelQueueReport',{'body':_0x1caf3e,'log':_0x10e2('0x2')});};exports[_0x10e2('0x3')]=function(_0xf6e4fe,_0x4861d5){return client['Request'](_0x10e2('0x4'),{'body':_0x4861d5,'options':{'where':{'uniqueid':_0xf6e4fe},'order':[['id',_0x10e2('0x5')]],'limit':0x1},'log':_0x10e2('0x4')});};
\ No newline at end of file
index 683a063..6d1390a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c02=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','update'];(function(_0x22071a,_0x4bcf62){var _0x5c6c85=function(_0x4c531b){while(--_0x4c531b){_0x22071a['push'](_0x22071a['shift']());}};_0x5c6c85(++_0x4bcf62);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x20c0('0x0')]=function(_0x33da8b,_0x590c5c){return client[_0x20c0('0x1')](_0x20c0('0x2'),{'body':_0x590c5c,'options':{'where':{'id':_0x33da8b}},'log':_0x20c0('0x3')});};exports[_0x20c0('0x4')]=function(_0x38022e,_0x2e9d65){return client[_0x20c0('0x1')](_0x20c0('0x5'),{'body':_0x2e9d65,'options':{'where':{'id':_0x38022e}},'log':_0x20c0('0x6')});};
\ No newline at end of file
+var _0x430e=['AddTagsToSmsInteraction','addTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x3e112d,_0x2bb132){var _0x531c31=function(_0x1954bc){while(--_0x1954bc){_0x3e112d['push'](_0x3e112d['shift']());}};_0x531c31(++_0x2bb132);}(_0x430e,0x105));var _0xe430=function(_0x4bc706,_0x2fbaba){_0x4bc706=_0x4bc706-0x0;var _0x23bce4=_0x430e[_0x4bc706];return _0x23bce4;};'use strict';var client=require('../client');exports[_0xe430('0x0')]=function(_0x2984a5,_0x4eaa9b){return client[_0xe430('0x1')](_0xe430('0x2'),{'body':_0x4eaa9b,'options':{'where':{'id':_0x2984a5}},'log':_0xe430('0x3')});};exports[_0xe430('0x4')]=function(_0x4a1cd1,_0x3b9e89){return client[_0xe430('0x1')](_0xe430('0x5'),{'body':_0x3b9e89,'options':{'where':{'id':_0x4a1cd1}},'log':_0xe430('0x6')});};
\ No newline at end of file
index acf7885..39b102b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x252f=['CreateSmsMessage','createSmsMessage','../client','Request'];(function(_0x510675,_0x489669){var _0xdf8bc4=function(_0x41c617){while(--_0x41c617){_0x510675['push'](_0x510675['shift']());}};_0xdf8bc4(++_0x489669);}(_0x252f,0x1e2));var _0xf252=function(_0x42f3a6,_0x45285c){_0x42f3a6=_0x42f3a6-0x0;var _0xdf3c33=_0x252f[_0x42f3a6];return _0xdf3c33;};'use strict';var client=require(_0xf252('0x0'));exports['create']=function(_0x2e802c){return client[_0xf252('0x1')](_0xf252('0x2'),{'body':_0x2e802c,'log':_0xf252('0x3')});};
\ No newline at end of file
+var _0xec17=['../client','create','Request','CreateSmsMessage','createSmsMessage'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0xec17,0x172));var _0x7ec1=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xec17[_0x57b54c];return _0x59cc19;};'use strict';var client=require(_0x7ec1('0x0'));exports[_0x7ec1('0x1')]=function(_0x2b79d4){return client[_0x7ec1('0x2')](_0x7ec1('0x3'),{'body':_0x2b79d4,'log':_0x7ec1('0x4')});};
\ No newline at end of file
index 23f6bae..921d8b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x28f95f,_0x3065a0){var _0x568df0=function(_0x2845e3){while(--_0x2845e3){_0x28f95f['push'](_0x28f95f['shift']());}};_0x568df0(++_0x3065a0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x47b15f,_0x103e93){_0x47b15f=_0x47b15f-0x0;var _0x55bf25=_0xcb91[_0x47b15f];return _0x55bf25;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x2b5949,_0x3573cd){var _0x5848ec=function(_0x493364){while(--_0x493364){_0x2b5949['push'](_0x2b5949['shift']());}};_0x5848ec(++_0x3573cd);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xb7e7[_0x2ec461];return _0x28603d;};'use strict';var client=require(_0x7b7e('0x0'));exports['getSmsQueues']=function(){return function(){return client[_0x7b7e('0x1')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x7b7e('0x2'),'timeout',_0x7b7e('0x3')],'include':[{'model':'User','as':_0x7b7e('0x4'),'attributes':['id',_0x7b7e('0x2'),_0x7b7e('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index ecf0913..6c4dead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x3fc6cf,_0x350711){var _0x32a963=function(_0xd11e69){while(--_0xd11e69){_0x3fc6cf['push'](_0x3fc6cf['shift']());}};_0x32a963(++_0x350711);}(_0x55ca,0x126));var _0xa55c=function(_0x56fb7d,_0x539ea1){_0x56fb7d=_0x56fb7d-0x0;var _0x3be1c3=_0x55ca[_0x56fb7d];return _0x3be1c3;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
+var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x446a9b,_0x48468a){var _0x371972=function(_0x473733){while(--_0x473733){_0x446a9b['push'](_0x446a9b['shift']());}};_0x371972(++_0x48468a);}(_0x008c,0x188));var _0xc008=function(_0xb8cfbe,_0x2e81b6){_0xb8cfbe=_0xb8cfbe-0x0;var _0x227d51=_0x008c[_0xb8cfbe];return _0x227d51;};'use strict';var client=require(_0xc008('0x0'));exports[_0xc008('0x1')]=function(_0x15aadc){return client[_0xc008('0x2')](_0xc008('0x3'),{'body':_0x15aadc,'log':'CreateSmsQueueReport'});};exports[_0xc008('0x4')]=function(_0x47063f,_0x10b33c){return client[_0xc008('0x2')](_0xc008('0x5'),{'body':_0x10b33c,'options':{'where':{'uniqueid':_0x47063f},'order':[['id',_0xc008('0x6')]],'limit':0x1},'log':_0xc008('0x5')});};
\ No newline at end of file
index bd7444e..c6d19eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x140e7a,_0xad4c82){var _0x380c40=function(_0x39f860){while(--_0x39f860){_0x140e7a['push'](_0x140e7a['shift']());}};_0x380c40(++_0xad4c82);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0xf58c4c,_0x14dfef){var _0x483859=function(_0x1f2c86){while(--_0x1f2c86){_0xf58c4c['push'](_0xf58c4c['shift']());}};_0x483859(++_0x14dfef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 8b2b836..db3b198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975b=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x3fb358,_0x530837){var _0x407b46=function(_0x3abfcd){while(--_0x3abfcd){_0x3fb358['push'](_0x3fb358['shift']());}};_0x407b46(++_0x530837);}(_0x975b,0x1c9));var _0xb975=function(_0x886338,_0x1bf8e1){_0x886338=_0x886338-0x0;var _0x27fcfe=_0x975b[_0x886338];return _0x27fcfe;};'use strict';var client=require(_0xb975('0x0'));exports[_0xb975('0x1')]=function(_0x39f2a7,_0x354374){return client[_0xb975('0x2')](_0xb975('0x3'),{'body':_0x354374,'options':{'where':{'id':_0x39f2a7}},'log':_0xb975('0x4')});};exports['addTags']=function(_0xa92c72,_0xfb173){return client[_0xb975('0x2')](_0xb975('0x5'),{'body':_0xfb173,'options':{'where':{'id':_0xa92c72}},'log':_0xb975('0x6')});};
\ No newline at end of file
+var _0x9a14=['Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags'];(function(_0x15f8ad,_0x5275c3){var _0xc0238a=function(_0x5550c8){while(--_0x5550c8){_0x15f8ad['push'](_0x15f8ad['shift']());}};_0xc0238a(++_0x5275c3);}(_0x9a14,0xa8));var _0x49a1=function(_0x5c5c16,_0x10e89d){_0x5c5c16=_0x5c5c16-0x0;var _0x84d368=_0x9a14[_0x5c5c16];return _0x84d368;};'use strict';var client=require('../client');exports['update']=function(_0xece3f3,_0x3bfde6){return client[_0x49a1('0x0')](_0x49a1('0x1'),{'body':_0x3bfde6,'options':{'where':{'id':_0xece3f3}},'log':_0x49a1('0x2')});};exports[_0x49a1('0x3')]=function(_0x10de2e,_0x453ecf){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x453ecf,'options':{'where':{'id':_0x10de2e}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 3ed5722..7082a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dd5=['create','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x3ea3ae,_0x29dd29){var _0x2aa587=function(_0x1d6dca){while(--_0x1d6dca){_0x3ea3ae['push'](_0x3ea3ae['shift']());}};_0x2aa587(++_0x29dd29);}(_0x0dd5,0x123));var _0x50dd=function(_0x17c14f,_0x21e297){_0x17c14f=_0x17c14f-0x0;var _0x2561d5=_0x0dd5[_0x17c14f];return _0x2561d5;};'use strict';var client=require(_0x50dd('0x0'));exports[_0x50dd('0x1')]=function(_0x1f77de){return client['Request'](_0x50dd('0x2'),{'body':_0x1f77de,'log':_0x50dd('0x3')});};
\ No newline at end of file
+var _0x30cc=['Request','CreateWhatsappMessage','createWhatsappMessage','../client','create'];(function(_0x371b64,_0x192fb4){var _0x1d6bf8=function(_0xb1f472){while(--_0xb1f472){_0x371b64['push'](_0x371b64['shift']());}};_0x1d6bf8(++_0x192fb4);}(_0x30cc,0x1d4));var _0xc30c=function(_0x5a8aa3,_0x2294d5){_0x5a8aa3=_0x5a8aa3-0x0;var _0x5d0458=_0x30cc[_0x5a8aa3];return _0x5d0458;};'use strict';var client=require(_0xc30c('0x0'));exports[_0xc30c('0x1')]=function(_0x492438){return client[_0xc30c('0x2')](_0xc30c('0x3'),{'body':_0x492438,'log':_0xc30c('0x4')});};
\ No newline at end of file
index ba23960..67f1d9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x854f=['online','whatsappPause','getWhatsappQueues','../client','Request','name','timeout','strategy','User','Agents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x854f,0xc1));var _0xf854=function(_0x503b8e,_0x434167){_0x503b8e=_0x503b8e-0x0;var _0x1fee18=_0x854f[_0x503b8e];return _0x1fee18;};'use strict';var client=require(_0xf854('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xf854('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xf854('0x2'),_0xf854('0x3'),_0xf854('0x4')],'include':[{'model':_0xf854('0x5'),'as':_0xf854('0x6'),'attributes':['id',_0xf854('0x2'),_0xf854('0x7'),_0xf854('0x8')]}]},'log':_0xf854('0x9')});};};
\ No newline at end of file
+var _0x050a=['strategy','User','Agents','whatsappPause','getWhatsappQueues','GetWhatsappQueue','name','timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x050a,0x144));var _0xa050=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x050a[_0x4b369d];return _0x571a98;};'use strict';var client=require('../client');exports[_0xa050('0x0')]=function(){return function(){return client['Request'](_0xa050('0x1'),{'options':{'raw':![],'attributes':['id',_0xa050('0x2'),_0xa050('0x3'),_0xa050('0x4')],'include':[{'model':_0xa050('0x5'),'as':_0xa050('0x6'),'attributes':['id','name','online',_0xa050('0x7')]}]},'log':_0xa050('0x0')});};};
\ No newline at end of file
index f8e65d0..9aaedb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9f4=['../client','create','Request','update','UpdateWhatsappQueueReport','DESC'];(function(_0x20375d,_0x3a841d){var _0x2d058b=function(_0x21413f){while(--_0x21413f){_0x20375d['push'](_0x20375d['shift']());}};_0x2d058b(++_0x3a841d);}(_0xb9f4,0x90));var _0x4b9f=function(_0x3cb060,_0x230f40){_0x3cb060=_0x3cb060-0x0;var _0x2a567c=_0xb9f4[_0x3cb060];return _0x2a567c;};'use strict';var client=require(_0x4b9f('0x0'));exports[_0x4b9f('0x1')]=function(_0x305728){return client[_0x4b9f('0x2')]('CreateWhatsappQueueReport',{'body':_0x305728,'log':'CreateWhatsappQueueReport'});};exports[_0x4b9f('0x3')]=function(_0x1e8eff,_0x557cd0){return client[_0x4b9f('0x2')](_0x4b9f('0x4'),{'body':_0x557cd0,'options':{'where':{'uniqueid':_0x1e8eff},'order':[['id',_0x4b9f('0x5')]],'limit':0x1},'log':_0x4b9f('0x4')});};
\ No newline at end of file
+var _0x4361=['CreateWhatsappQueueReport','update','DESC','Request'];(function(_0x192019,_0x321beb){var _0x17182d=function(_0x1753cb){while(--_0x1753cb){_0x192019['push'](_0x192019['shift']());}};_0x17182d(++_0x321beb);}(_0x4361,0xcb));var _0x1436=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4361[_0x5b644e];return _0x49c6bf;};'use strict';var client=require('../client');exports['create']=function(_0x11e316){return client[_0x1436('0x0')]('CreateWhatsappQueueReport',{'body':_0x11e316,'log':_0x1436('0x1')});};exports[_0x1436('0x2')]=function(_0x55be5e,_0x55ea9a){return client[_0x1436('0x0')]('UpdateWhatsappQueueReport',{'body':_0x55ea9a,'options':{'where':{'uniqueid':_0x55be5e},'order':[['id',_0x1436('0x3')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 03ff3e5..f197fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2863=['[%s][AGENT]\x20ROUTING\x20END','close','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','util','seq-queue','../../../../config/logger','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','[%s][AGENT]\x20%s','map','join','agents','timeout','createQueue','atimeout','channel','rules','end','stop','complete'];(function(_0x1b16ba,_0xe1a8dc){var _0x30d703=function(_0x4b6f53){while(--_0x4b6f53){_0x1b16ba['push'](_0x1b16ba['shift']());}};_0x30d703(++_0xe1a8dc);}(_0x2863,0xf6));var _0x3286=function(_0x5dd3b1,_0x2e259b){_0x5dd3b1=_0x5dd3b1-0x0;var _0x2af759=_0x2863[_0x5dd3b1];return _0x2af759;};'use strict';var schema=require(_0x3286('0x0'));var _=require('lodash');var util=require(_0x3286('0x1'));var seqqueue=require(_0x3286('0x2'));var logger=require(_0x3286('0x3'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x3286('0x4')},'timeout':{'type':_0x3286('0x5'),'message':_0x3286('0x6')}});function writeLog(_0x3c3237,_0x59c235,_0x25af23){return logger[_0x3286('0x7')](util[_0x3286('0x8')](_0x3286('0x9'),_0x3c3237,_0x59c235[_0x3286('0xa')],_0x25af23));}function handleFindAgent(_0x49b87b){return function(_0x2247aa){return _0x2247aa['name']['toLowerCase']()===_0x49b87b[_0x3286('0xb')]();};}exports[_0x3286('0xc')]=function(_0x22dbb4,_0x4d4c52,_0x2a867e,_0x55820e){return function(_0x10fb1f){try{var _0xa5480e={'name':_0x4d4c52[0x0],'timeout':_0x4d4c52[0x1]};var _0x26e17c=queue[_0x3286('0x0')](_0xa5480e,{'typecast':!![]});if(_0x26e17c[_0x3286('0xd')]){logger['error'](_0x3286('0xe'),_0x22dbb4,_[_0x3286('0xf')](_0x26e17c,'message')[_0x3286('0x10')](',\x20'));_0x10fb1f['stop']();}else{var _0x46ad5b=_['find'](_0x2a867e[_0x3286('0x11')],handleFindAgent(_0xa5480e[_0x3286('0xa')]));if(_0x46ad5b){var _0x87f562=(_0xa5480e[_0x3286('0x12')]||0xa)*0x3e8;var _0x3277a8,_0x4b68a1;var _0x273c98=seqqueue[_0x3286('0x13')](_0x87f562);_0x273c98['id']=_0x22dbb4;_0x273c98[_0x3286('0x14')]=_0x87f562;_0x273c98[_0x3286('0x15')]=_0x55820e[_0x3286('0x15')];writeLog(_0x22dbb4,_0x46ad5b,util[_0x3286('0x8')]('START:%s',_0x87f562));_0x2a867e[_0x3286('0x16')][_0x22dbb4]['on'](_0x3286('0x17'),function(){logger[_0x3286('0x7')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x22dbb4);clearTimeout(_0x4b68a1);_0x4b68a1=undefined;_0x273c98['close']();if(_0x2a867e['rules'][_0x22dbb4]){delete _0x2a867e[_0x3286('0x16')][_0x22dbb4];}_0x10fb1f[_0x3286('0x18')]();});_0x2a867e[_0x3286('0x16')][_0x22dbb4]['on'](_0x3286('0x19'),function(){if(_0x2a867e['rules'][_0x22dbb4]){delete _0x2a867e[_0x3286('0x16')][_0x22dbb4];}});_0x4b68a1=setTimeout(function(){logger[_0x3286('0x7')](_0x3286('0x1a'),_0x22dbb4);clearTimeout(_0x4b68a1);_0x273c98[_0x3286('0x1b')]();_0x10fb1f[_0x3286('0x1c')]();},_0x87f562);strategy[_0x3286('0x1d')](_0x273c98,_0x46ad5b,_0x2a867e,_0x55820e);}else{logger[_0x3286('0x1e')](_0x3286('0x1f'),_0x22dbb4,_0xa5480e[_0x3286('0xa')]);_0x10fb1f['stop']();}}}catch(_0x2c667b){console['log'](_0x2c667b);logger[_0x3286('0x1e')](_0x3286('0x20'),_0x22dbb4,_0x2c667b[_0x3286('0x21')]);_0x10fb1f[_0x3286('0x18')]();}};};
\ No newline at end of file
+var _0xd303=['error','log','[%s][QUEUE]\x20%s','validate','lodash','util','seq-queue','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','toLowerCase','length','[%s][AGENT]\x20%s','map','message','join','stop','agents','name','createQueue','atimeout','channel','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','rules','complete','next','agent'];(function(_0x2ac5ac,_0x41b2dd){var _0x1cd4c4=function(_0x477482){while(--_0x477482){_0x2ac5ac['push'](_0x2ac5ac['shift']());}};_0x1cd4c4(++_0x41b2dd);}(_0xd303,0xf1));var _0x3d30=function(_0x5cc500,_0xf96644){_0x5cc500=_0x5cc500-0x0;var _0x328936=_0xd303[_0x5cc500];return _0x328936;};'use strict';var schema=require(_0x3d30('0x0'));var _=require(_0x3d30('0x1'));var util=require(_0x3d30('0x2'));var seqqueue=require(_0x3d30('0x3'));var logger=require(_0x3d30('0x4'))('routing');var strategy=require(_0x3d30('0x5'));var queue=schema({'name':{'type':_0x3d30('0x6'),'required':!![],'message':_0x3d30('0x7')},'timeout':{'type':_0x3d30('0x8'),'message':_0x3d30('0x9')}});function writeLog(_0x553652,_0x484e49,_0x47780c){return logger[_0x3d30('0xa')](util[_0x3d30('0xb')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x553652,_0x484e49['name'],_0x47780c));}function handleFindAgent(_0x1fa40a){return function(_0x4e2f0d){return _0x4e2f0d['name'][_0x3d30('0xc')]()===_0x1fa40a[_0x3d30('0xc')]();};}exports['consequence']=function(_0x2708e7,_0x55c627,_0x48427f,_0x1c8632){return function(_0x2715c9){try{var _0x541c31={'name':_0x55c627[0x0],'timeout':_0x55c627[0x1]};var _0x54e5c5=queue['validate'](_0x541c31,{'typecast':!![]});if(_0x54e5c5[_0x3d30('0xd')]){logger['error'](_0x3d30('0xe'),_0x2708e7,_[_0x3d30('0xf')](_0x54e5c5,_0x3d30('0x10'))[_0x3d30('0x11')](',\x20'));_0x2715c9[_0x3d30('0x12')]();}else{var _0x3b48d0=_['find'](_0x48427f[_0x3d30('0x13')],handleFindAgent(_0x541c31[_0x3d30('0x14')]));if(_0x3b48d0){var _0x2836da=(_0x541c31['timeout']||0xa)*0x3e8;var _0x15c7bf,_0x5e9037;var _0xaef86a=seqqueue[_0x3d30('0x15')](_0x2836da);_0xaef86a['id']=_0x2708e7;_0xaef86a[_0x3d30('0x16')]=_0x2836da;_0xaef86a[_0x3d30('0x17')]=_0x1c8632['channel'];writeLog(_0x2708e7,_0x3b48d0,util['format']('START:%s',_0x2836da));_0x48427f['rules'][_0x2708e7]['on'](_0x3d30('0x18'),function(){logger[_0x3d30('0xa')](_0x3d30('0x19'),_0x2708e7);clearTimeout(_0x5e9037);_0x5e9037=undefined;_0xaef86a[_0x3d30('0x1a')]();if(_0x48427f['rules'][_0x2708e7]){delete _0x48427f[_0x3d30('0x1b')][_0x2708e7];}_0x2715c9[_0x3d30('0x12')]();});_0x48427f[_0x3d30('0x1b')][_0x2708e7]['on'](_0x3d30('0x1c'),function(){if(_0x48427f[_0x3d30('0x1b')][_0x2708e7]){delete _0x48427f[_0x3d30('0x1b')][_0x2708e7];}});_0x5e9037=setTimeout(function(){logger[_0x3d30('0xa')]('[%s][AGENT]\x20ROUTING\x20END',_0x2708e7);clearTimeout(_0x5e9037);_0xaef86a[_0x3d30('0x1a')]();_0x2715c9[_0x3d30('0x1d')]();},_0x2836da);strategy[_0x3d30('0x1e')](_0xaef86a,_0x3b48d0,_0x48427f,_0x1c8632);}else{logger[_0x3d30('0x1f')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x2708e7,_0x541c31[_0x3d30('0x14')]);_0x2715c9[_0x3d30('0x12')]();}}}catch(_0x581d81){console[_0x3d30('0x20')](_0x581d81);logger[_0x3d30('0x1f')](_0x3d30('0x21'),_0x2708e7,_0x581d81['stack']);_0x2715c9[_0x3d30('0x12')]();}};};
\ No newline at end of file
index ed1e332..7d57d75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x676e=['dialogState','catch','lodash','moment','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','phone','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','Message','info','[%s][AMAZONLEX]\x20%s','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','$LATEST','message','toString','postText','error','providerName','stringify','create','then'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x676e,0x197));var _0xe676=function(_0x3f00ee,_0x1d1673){_0x3f00ee=_0x3f00ee-0x0;var _0x18a07e=_0x676e[_0x3f00ee];return _0x18a07e;};'use strict';var _=require(_0xe676('0x0'));var moment=require(_0xe676('0x1'));var AWS=require(_0xe676('0x2'));var utils=require(_0xe676('0x3'));var logger=require(_0xe676('0x4'))('routing');var rpc={'chatMessage':require(_0xe676('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe676('0x6')),'smsMessage':require(_0xe676('0x7')),'faxMessage':require(_0xe676('0x8')),'whatsappMessage':require(_0xe676('0x9'))};exports['consequence']=function(_0x4c574f,_0x2fb265){return function(_0xadbe48){try{if(!_['isNil'](this[_0xe676('0xa')]['UserId'])){logger['info']('[%s][AMAZONLEX]\x20%s',_0x4c574f,_0xe676('0xb'));return _0xadbe48[_0xe676('0xc')]();}var _0x13c10d={'ContactId':this[_0xe676('0xd')]['id'],'sentAt':moment()[_0xe676('0xe')](_0xe676('0xf')),'direction':_0xe676('0x10')};if(this['channel']==='sms'||this['channel']==='whatsapp'){_0x13c10d[_0xe676('0x11')]=this['interaction'][_0xe676('0x11')];}var _0x3e4a52=this[_0xe676('0x12')];if(_0x3e4a52===_0xe676('0x13')){_0x13c10d[_0xe676('0x14')]=this[_0xe676('0x15')]['id'];}else{_0x13c10d[_[_0xe676('0x16')](_0x3e4a52)+_0xe676('0x17')]=this[_0xe676('0x15')]['id'];}_0x13c10d[_[_0xe676('0x16')](_0x3e4a52)+_0xe676('0x18')]=this[_0xe676('0xa')]['id'];if(this['interaction'][_0xe676('0x19')]){var _0x9a2c=_0x2fb265[0x4];if(!_['isEmpty'](_0x9a2c)){_0x13c10d[_0xe676('0x1a')]=utils['getMustacheRender'](_0x9a2c,this);return rpc[_0x3e4a52+_0xe676('0x1b')]['create'](_0x13c10d)['then'](function(_0x2cda2d){logger[_0xe676('0x1c')](_0xe676('0x1d'),_0x4c574f,_0x13c10d[_0xe676('0x1a')]);})['catch'](function(_0x4e994e){logger['error'](_0xe676('0x1d'),_0x4c574f,JSON['stringify'](_0x4e994e));})[_0xe676('0x1e')](function(){logger['info'](_0xe676('0x1f'),_0x4c574f);_0xadbe48[_0xe676('0x20')]();});}else{logger['info'](_0xe676('0x21'),_0x4c574f);_0xadbe48[_0xe676('0x20')]();}}else{var _0xcba9f5=this;var _0x53e64a=new AWS['LexRuntime']({'accessKeyId':_0x2fb265[0x0],'secretAccessKey':_0x2fb265[0x1],'region':_0x2fb265[0x2]});var _0x489363={'botAlias':_0xe676('0x22'),'botName':_0x2fb265[0x3],'inputText':this[_0xe676('0x23')][_0xe676('0x1a')],'userId':this[_0xe676('0x12')]+':'+this['interaction']['id'][_0xe676('0x24')]()};_0x53e64a[_0xe676('0x25')](_0x489363,function(_0x3b1ae6,_0x54c06b){if(_0x3b1ae6){logger[_0xe676('0x26')]('[%s][AMAZONLEX]\x20%s',_0x4c574f,_0x3b1ae6[_0xe676('0x23')]);_0xadbe48['next']();}else if(_0x54c06b&&_0x54c06b[_0xe676('0x23')]){_0xcba9f5[_0xe676('0x1a')]['amazonlex']=_0x54c06b;_0x13c10d['body']=_0x54c06b['message'];_0x13c10d[_0xe676('0x27')]='amazonlex';_0x13c10d['providerResponse']=JSON[_0xe676('0x28')](_0x54c06b);return rpc[_0x3e4a52+'Message'][_0xe676('0x29')](_0x13c10d)[_0xe676('0x2a')](function(_0x3059b8){logger[_0xe676('0x1c')](_0xe676('0x1d'),_0x4c574f,_0x13c10d['body']);if(_0x54c06b[_0xe676('0x2b')]=='Failed'){_0xadbe48['next']();}else{_0xadbe48[_0xe676('0x20')]();}})[_0xe676('0x2c')](function(_0x2c05b9){logger['error'](_0xe676('0x1d'),_0x4c574f,JSON[_0xe676('0x28')](_0x2c05b9));_0xadbe48['next']();});}else{_0xadbe48[_0xe676('0xc')]();}});}}catch(_0xbe8b8a){logger[_0xe676('0x26')](_0xe676('0x1d'),_0x4c574f,JSON['stringify'](_0xbe8b8a));_0xadbe48[_0xe676('0x20')]();}};};
\ No newline at end of file
+var _0xcae1=['[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','message','toString','postText','error','amazonlex','providerName','providerResponse','dialogState','Failed','stop','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','consequence','isNil','UserId','info','[%s][AMAZONLEX]\x20%s','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','sms','channel','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','Message','create','catch','stringify','finally'];(function(_0x14b942,_0x5c9906){var _0x137382=function(_0x34a54c){while(--_0x34a54c){_0x14b942['push'](_0x14b942['shift']());}};_0x137382(++_0x5c9906);}(_0xcae1,0x1e1));var _0x1cae=function(_0x567d9c,_0x50405d){_0x567d9c=_0x567d9c-0x0;var _0x472c9b=_0xcae1[_0x567d9c];return _0x472c9b;};'use strict';var _=require('lodash');var moment=require(_0x1cae('0x0'));var AWS=require(_0x1cae('0x1'));var utils=require(_0x1cae('0x2'));var logger=require(_0x1cae('0x3'))(_0x1cae('0x4'));var rpc={'chatMessage':require(_0x1cae('0x5')),'openchannelMessage':require(_0x1cae('0x6')),'mailMessage':require(_0x1cae('0x7')),'smsMessage':require(_0x1cae('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x1cae('0x9')]=function(_0x7d6723,_0x5e5008){return function(_0x1d9ac0){try{if(!_[_0x1cae('0xa')](this['interaction'][_0x1cae('0xb')])){logger[_0x1cae('0xc')](_0x1cae('0xd'),_0x7d6723,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x1d9ac0[_0x1cae('0xe')]();}var _0x4cf324={'ContactId':this[_0x1cae('0xf')]['id'],'sentAt':moment()[_0x1cae('0x10')](_0x1cae('0x11')),'direction':'out'};if(this['channel']===_0x1cae('0x12')||this[_0x1cae('0x13')]===_0x1cae('0x14')){_0x4cf324[_0x1cae('0x15')]=this[_0x1cae('0x16')][_0x1cae('0x15')];}var _0x5255ee=this[_0x1cae('0x13')];if(_0x5255ee===_0x1cae('0x17')){_0x4cf324[_0x1cae('0x18')]=this[_0x1cae('0x19')]['id'];}else{_0x4cf324[_[_0x1cae('0x1a')](_0x5255ee)+_0x1cae('0x1b')]=this[_0x1cae('0x19')]['id'];}_0x4cf324[_[_0x1cae('0x1a')](_0x5255ee)+_0x1cae('0x1c')]=this[_0x1cae('0x16')]['id'];if(this[_0x1cae('0x16')]['created']){var _0x4d465f=_0x5e5008[0x4];if(!_[_0x1cae('0x1d')](_0x4d465f)){_0x4cf324[_0x1cae('0x1e')]=utils['getMustacheRender'](_0x4d465f,this);return rpc[_0x5255ee+_0x1cae('0x1f')][_0x1cae('0x20')](_0x4cf324)['then'](function(_0x3e37ed){logger[_0x1cae('0xc')](_0x1cae('0xd'),_0x7d6723,_0x4cf324['body']);})[_0x1cae('0x21')](function(_0x11d4fe){logger['error'](_0x1cae('0xd'),_0x7d6723,JSON[_0x1cae('0x22')](_0x11d4fe));})[_0x1cae('0x23')](function(){logger[_0x1cae('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x7d6723);_0x1d9ac0['stop']();});}else{logger['info'](_0x1cae('0x24'),_0x7d6723);_0x1d9ac0['stop']();}}else{var _0x2be320=this;var _0x1e65ed=new AWS['LexRuntime']({'accessKeyId':_0x5e5008[0x0],'secretAccessKey':_0x5e5008[0x1],'region':_0x5e5008[0x2]});var _0x58905e={'botAlias':'$LATEST','botName':_0x5e5008[0x3],'inputText':this[_0x1cae('0x25')][_0x1cae('0x1e')],'userId':this[_0x1cae('0x13')]+':'+this[_0x1cae('0x16')]['id'][_0x1cae('0x26')]()};_0x1e65ed[_0x1cae('0x27')](_0x58905e,function(_0xe4b1c3,_0x6fbab7){if(_0xe4b1c3){logger[_0x1cae('0x28')](_0x1cae('0xd'),_0x7d6723,_0xe4b1c3[_0x1cae('0x25')]);_0x1d9ac0[_0x1cae('0xe')]();}else if(_0x6fbab7&&_0x6fbab7[_0x1cae('0x25')]){_0x2be320[_0x1cae('0x1e')][_0x1cae('0x29')]=_0x6fbab7;_0x4cf324[_0x1cae('0x1e')]=_0x6fbab7[_0x1cae('0x25')];_0x4cf324[_0x1cae('0x2a')]='amazonlex';_0x4cf324[_0x1cae('0x2b')]=JSON[_0x1cae('0x22')](_0x6fbab7);return rpc[_0x5255ee+'Message'][_0x1cae('0x20')](_0x4cf324)['then'](function(_0x454f56){logger[_0x1cae('0xc')](_0x1cae('0xd'),_0x7d6723,_0x4cf324['body']);if(_0x6fbab7[_0x1cae('0x2c')]==_0x1cae('0x2d')){_0x1d9ac0['next']();}else{_0x1d9ac0['stop']();}})[_0x1cae('0x21')](function(_0xfb1523){logger[_0x1cae('0x28')](_0x1cae('0xd'),_0x7d6723,JSON['stringify'](_0xfb1523));_0x1d9ac0[_0x1cae('0xe')]();});}else{_0x1d9ac0[_0x1cae('0xe')]();}});}}catch(_0x377499){logger['error']('[%s][AMAZONLEX]\x20%s',_0x7d6723,JSON['stringify'](_0x377499));_0x1d9ac0[_0x1cae('0x2e')]();}};};
\ No newline at end of file
index adc1ad7..49adcaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5129=['channel','phone','read','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','upperFirst','account','InteractionId','Message','Smtp','service','host','port','secure','auth','user','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','body','isAutoreply','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','message','from'];(function(_0x94586b,_0x2a88b3){var _0x2f9418=function(_0x5acca3){while(--_0x5acca3){_0x94586b['push'](_0x94586b['shift']());}};_0x2f9418(++_0x2a88b3);}(_0x5129,0xbc));var _0x9512=function(_0x588324,_0x816fc){_0x588324=_0x588324-0x0;var _0x435985=_0x5129[_0x588324];return _0x435985;};'use strict';var _=require(_0x9512('0x0'));var moment=require('moment');var utils=require(_0x9512('0x1'));var logger=require('../../../../config/logger')(_0x9512('0x2'));var rpc={'chatMessage':require(_0x9512('0x3')),'openchannelMessage':require(_0x9512('0x4')),'mailMessage':require(_0x9512('0x5')),'smsMessage':require(_0x9512('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0x9512('0x7')),'openchannelInteraction':require(_0x9512('0x8')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x9512('0x9')),'faxInteraction':require(_0x9512('0xa')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x9512('0xb'));exports['consequence']=function(_0x747c90,_0x57d5e6,_0x364179,_0x41b120){return function(_0x412464){try{var _0x23fd2f=this['channel'];if(_0x23fd2f==='mail'&&_0x41b120[_0x9512('0xc')][_0x9512('0xd')]){logger['info'](_0x9512('0xe'),_0x747c90,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x412464[_0x9512('0xf')]();}if(_0x57d5e6[0x0]==='1'&&(_[_0x9512('0x10')](this[_0x9512('0x11')]['created'])||!this[_0x9512('0x11')][_0x9512('0x12')])){logger[_0x9512('0x13')](_0x9512('0xe'),_0x747c90,_0x9512('0x14'));return _0x412464[_0x9512('0xf')]();}if(_0x57d5e6[0x0]==='2'&&this[_0x9512('0x11')][_0x9512('0x15')]){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,_0x9512('0x17'));return _0x412464[_0x9512('0xf')]();}var _0x47e261={'ContactId':this['contact']['id'],'sentAt':moment()[_0x9512('0x18')](_0x9512('0x19')),'direction':_0x9512('0x1a')};if(this['channel']===_0x9512('0x1b')){_0x47e261[_0x9512('0xc')]=utils['getMustacheRender'](_0x57d5e6[0x2],this);}else{_0x47e261[_0x9512('0xc')]=utils[_0x9512('0x1c')](_0x57d5e6[0x1],this);}if(this[_0x9512('0x1d')]){_0x47e261['to']=this['message'][_0x9512('0x1e')]||'';if(this[_0x9512('0x1f')]===_0x9512('0x1b')&&_0x57d5e6[0x1]==='1'){_0x47e261['cc']=this['message']['cc']||'';}_0x47e261[_0x9512('0x1e')]=this[_0x9512('0x1d')]['to']||'';_0x47e261[_0x9512('0x20')]=this[_0x9512('0x1d')][_0x9512('0x20')]||'';_0x47e261[_0x9512('0x21')]=!![];if(this[_0x9512('0x1d')]['subject']){_0x47e261[_0x9512('0x22')]='';_0x47e261[_0x9512('0x22')]+=_[_0x9512('0x23')](this[_0x9512('0x1d')][_0x9512('0x22')],_0x9512('0x24'))?'':_0x9512('0x25');_0x47e261[_0x9512('0x22')]+=this[_0x9512('0x1d')][_0x9512('0x22')];}}if(this[_0x9512('0x1f')]==='chat'){_0x47e261[_0x9512('0x26')]=this['account']['id'];}else{_0x47e261[_[_0x9512('0x27')](this['channel'])+'AccountId']=this[_0x9512('0x28')]['id'];}_0x47e261[_[_0x9512('0x27')](this[_0x9512('0x1f')])+_0x9512('0x29')]=this[_0x9512('0x11')]['id'];var _0x4ede1d=this[_0x9512('0x11')];if(rpc[this['channel']+_0x9512('0x2a')]){if(this[_0x9512('0x1f')]===_0x9512('0x1b')){var _0x179d65={'tls':{'rejectUnauthorized':![]}};if(this[_0x9512('0x28')][_0x9512('0x2b')][_0x9512('0x2c')]){_0x179d65[_0x9512('0x2c')]=this[_0x9512('0x28')][_0x9512('0x2b')]['service'];}else{_0x179d65['host']=this[_0x9512('0x28')]['Smtp'][_0x9512('0x2d')];_0x179d65[_0x9512('0x2e')]=this[_0x9512('0x28')][_0x9512('0x2b')][_0x9512('0x2e')];_0x179d65['secure']=this[_0x9512('0x28')]['Smtp'][_0x9512('0x2f')];}if(this['account'][_0x9512('0x2b')]['authentication']){_0x179d65[_0x9512('0x30')]={'user':this[_0x9512('0x28')]['Smtp'][_0x9512('0x31')],'pass':this[_0x9512('0x28')][_0x9512('0x2b')]['pass']};}_0x47e261[_0x9512('0x32')]=this[_0x9512('0x1d')][_0x9512('0x33')];_0x47e261[_0x9512('0x34')]=_0x9512('0x35')+_[_0x9512('0x36')](_0x47e261[_0x9512('0xc')],_0x9512('0x37'),_0x9512('0x38'))+_0x9512('0x39');_0x47e261[_0x9512('0x3a')]={'Auto-Submitted':_0x9512('0x3b'),'X-Auto-Response-Suppress':_0x9512('0x3c'),'Precedence':'auto_reply'};return mailRpc['sendMailMessage'](_0x179d65,_0x47e261)[_0x9512('0x3d')](function(_0x30d7b2){logger['info'](_0x9512('0x3e'),_0x747c90);_0x47e261[_0x9512('0x33')]=_0x30d7b2[_0x9512('0x1d')]['messageId'];return rpc[_0x23fd2f+'Message'][_0x9512('0x3f')](_0x47e261);})[_0x9512('0x3d')](function(_0x54cedf){logger['info']('[%s][AUTOREPLY]\x20%s',_0x747c90,JSON[_0x9512('0x40')](_0x54cedf));})[_0x9512('0x41')](function(_0x1d77c7){logger[_0x9512('0x42')](_0x9512('0x43'),_0x747c90,JSON[_0x9512('0x40')](_0x1d77c7));})[_0x9512('0x44')](function(){Promise['resolve']()[_0x9512('0x3d')](function(){if(_0x57d5e6[0x0]!=='2'||_0x4ede1d['autoreplyExecuted'])return;return rpc[_0x23fd2f+_0x9512('0x45')][_0x9512('0x46')](_0x4ede1d['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3b07c9){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,JSON[_0x9512('0x40')](_0x3b07c9));})['catch'](function(_0x3fea71){logger[_0x9512('0x42')](_0x9512('0x47'),_0x747c90,JSON['stringify'](_0x3fea71));});})[_0x9512('0x3d')](function(){_0x412464[_0x9512('0xf')]();});});}else{return rpc[this['channel']+'Message']['create'](_0x47e261)['then'](function(_0x5d2224){logger[_0x9512('0x13')](_0x9512('0xe'),_0x747c90,_0x47e261[_0x9512('0xc')]);})[_0x9512('0x41')](function(_0x4622ce){logger[_0x9512('0x42')](_0x9512('0xe'),_0x747c90,JSON[_0x9512('0x40')](_0x4622ce));})[_0x9512('0x44')](function(){Promise['resolve']()[_0x9512('0x3d')](function(){if(_0x57d5e6[0x0]!=='2'||_0x4ede1d['autoreplyExecuted'])return;return rpc[_0x23fd2f+_0x9512('0x45')][_0x9512('0x46')](_0x4ede1d['id'],{'autoreplyExecuted':!![]})[_0x9512('0x3d')](function(_0x5ac1dc){logger[_0x9512('0x13')](_0x9512('0x16'),_0x747c90,JSON[_0x9512('0x40')](_0x5ac1dc));})[_0x9512('0x41')](function(_0x484a52){logger['error'](_0x9512('0x47'),_0x747c90,JSON[_0x9512('0x40')](_0x484a52));});})['then'](function(){_0x412464[_0x9512('0xf')]();});});}}}catch(_0x166db9){logger[_0x9512('0x42')](_0x9512('0xe'),_0x747c90,JSON[_0x9512('0x40')](_0x166db9));_0x412464[_0x9512('0x48')]();}};};
\ No newline at end of file
+var _0x7fde=['user','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','[%s][AUTOREPLY]\x20%s','catch','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','Interaction','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','finally','resolve','update','stop','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','info','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','Message','account','service','Smtp','host','port','secure','auth'];(function(_0x171cc1,_0x1687fc){var _0x2c95ba=function(_0xd77dda){while(--_0xd77dda){_0x171cc1['push'](_0x171cc1['shift']());}};_0x2c95ba(++_0x1687fc);}(_0x7fde,0x18b));var _0xe7fd=function(_0x40c8da,_0x2bf1e5){_0x40c8da=_0x40c8da-0x0;var _0x531f9c=_0x7fde[_0x40c8da];return _0x531f9c;};'use strict';var _=require('lodash');var moment=require('moment');var utils=require(_0xe7fd('0x0'));var logger=require(_0xe7fd('0x1'))(_0xe7fd('0x2'));var rpc={'chatMessage':require(_0xe7fd('0x3')),'openchannelMessage':require(_0xe7fd('0x4')),'mailMessage':require(_0xe7fd('0x5')),'smsMessage':require(_0xe7fd('0x6')),'faxMessage':require(_0xe7fd('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require(_0xe7fd('0x8')),'openchannelInteraction':require(_0xe7fd('0x9')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xe7fd('0xa')),'faxInteraction':require(_0xe7fd('0xb')),'whatsappInteraction':require(_0xe7fd('0xc'))};var mailRpc=require(_0xe7fd('0xd'));exports[_0xe7fd('0xe')]=function(_0x579f6b,_0x106791,_0x40f668,_0x11c8e2){return function(_0x366766){try{var _0x3a8577=this[_0xe7fd('0xf')];if(_0x3a8577===_0xe7fd('0x10')&&_0x11c8e2[_0xe7fd('0x11')]['isAutoreply']){logger[_0xe7fd('0x12')]('[%s][AUTOREPLY]\x20%s',_0x579f6b,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x366766[_0xe7fd('0x13')]();}if(_0x106791[0x0]==='1'&&(_[_0xe7fd('0x14')](this[_0xe7fd('0x15')][_0xe7fd('0x16')])||!this['interaction'][_0xe7fd('0x16')])){logger[_0xe7fd('0x12')]('[%s][AUTOREPLY]\x20%s',_0x579f6b,'Autoreply\x20already\x20sent');return _0x366766[_0xe7fd('0x13')]();}if(_0x106791[0x0]==='2'&&this['interaction'][_0xe7fd('0x17')]){logger[_0xe7fd('0x12')](_0xe7fd('0x18'),_0x579f6b,'One\x20Time\x20already\x20sent');return _0x366766[_0xe7fd('0x13')]();}var _0x1cf0bd={'ContactId':this[_0xe7fd('0x19')]['id'],'sentAt':moment()[_0xe7fd('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xe7fd('0x1b')};if(this[_0xe7fd('0xf')]===_0xe7fd('0x10')){_0x1cf0bd[_0xe7fd('0x11')]=utils[_0xe7fd('0x1c')](_0x106791[0x2],this);}else{_0x1cf0bd[_0xe7fd('0x11')]=utils[_0xe7fd('0x1c')](_0x106791[0x1],this);}if(this[_0xe7fd('0x1d')]){_0x1cf0bd['to']=this[_0xe7fd('0x1d')]['from']||'';if(this[_0xe7fd('0xf')]==='mail'&&_0x106791[0x1]==='1'){_0x1cf0bd['cc']=this['message']['cc']||'';}_0x1cf0bd[_0xe7fd('0x1e')]=this[_0xe7fd('0x1d')]['to']||'';_0x1cf0bd['phone']=this['message'][_0xe7fd('0x1f')]||'';_0x1cf0bd[_0xe7fd('0x20')]=!![];if(this[_0xe7fd('0x1d')]['subject']){_0x1cf0bd['subject']='';_0x1cf0bd[_0xe7fd('0x21')]+=_[_0xe7fd('0x22')](this[_0xe7fd('0x1d')][_0xe7fd('0x21')],_0xe7fd('0x23'))?'':_0xe7fd('0x24');_0x1cf0bd['subject']+=this['message']['subject'];}}if(this[_0xe7fd('0xf')]===_0xe7fd('0x25')){_0x1cf0bd[_0xe7fd('0x26')]=this['account']['id'];}else{_0x1cf0bd[_[_0xe7fd('0x27')](this['channel'])+_0xe7fd('0x28')]=this['account']['id'];}_0x1cf0bd[_[_0xe7fd('0x27')](this[_0xe7fd('0xf')])+'InteractionId']=this[_0xe7fd('0x15')]['id'];var _0x1dfdb4=this['interaction'];if(rpc[this[_0xe7fd('0xf')]+_0xe7fd('0x29')]){if(this[_0xe7fd('0xf')]===_0xe7fd('0x10')){var _0x1dd7da={'tls':{'rejectUnauthorized':![]}};if(this[_0xe7fd('0x2a')]['Smtp'][_0xe7fd('0x2b')]){_0x1dd7da[_0xe7fd('0x2b')]=this[_0xe7fd('0x2a')][_0xe7fd('0x2c')][_0xe7fd('0x2b')];}else{_0x1dd7da[_0xe7fd('0x2d')]=this[_0xe7fd('0x2a')][_0xe7fd('0x2c')][_0xe7fd('0x2d')];_0x1dd7da[_0xe7fd('0x2e')]=this[_0xe7fd('0x2a')][_0xe7fd('0x2c')][_0xe7fd('0x2e')];_0x1dd7da[_0xe7fd('0x2f')]=this[_0xe7fd('0x2a')]['Smtp'][_0xe7fd('0x2f')];}if(this[_0xe7fd('0x2a')]['Smtp']['authentication']){_0x1dd7da[_0xe7fd('0x30')]={'user':this[_0xe7fd('0x2a')]['Smtp'][_0xe7fd('0x31')],'pass':this[_0xe7fd('0x2a')]['Smtp'][_0xe7fd('0x32')]};}_0x1cf0bd[_0xe7fd('0x33')]=this[_0xe7fd('0x1d')]['messageId'];_0x1cf0bd[_0xe7fd('0x34')]='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x1cf0bd[_0xe7fd('0x11')],_0xe7fd('0x35'),_0xe7fd('0x36'))+_0xe7fd('0x37');_0x1cf0bd[_0xe7fd('0x38')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':'All','Precedence':_0xe7fd('0x39')};return mailRpc[_0xe7fd('0x3a')](_0x1dd7da,_0x1cf0bd)[_0xe7fd('0x3b')](function(_0x241bea){logger[_0xe7fd('0x12')](_0xe7fd('0x3c'),_0x579f6b);_0x1cf0bd[_0xe7fd('0x3d')]=_0x241bea[_0xe7fd('0x1d')][_0xe7fd('0x3d')];return rpc[_0x3a8577+_0xe7fd('0x29')][_0xe7fd('0x3e')](_0x1cf0bd);})[_0xe7fd('0x3b')](function(_0x3e58be){logger[_0xe7fd('0x12')](_0xe7fd('0x3f'),_0x579f6b,JSON['stringify'](_0x3e58be));})[_0xe7fd('0x40')](function(_0x551f5c){logger[_0xe7fd('0x41')](_0xe7fd('0x42'),_0x579f6b,JSON[_0xe7fd('0x43')](_0x551f5c));})['finally'](function(){Promise['resolve']()[_0xe7fd('0x3b')](function(){if(_0x106791[0x0]!=='2'||_0x1dfdb4[_0xe7fd('0x17')])return;return rpc[_0x3a8577+_0xe7fd('0x44')]['update'](_0x1dfdb4['id'],{'autoreplyExecuted':!![]})[_0xe7fd('0x3b')](function(_0x535e1e){logger[_0xe7fd('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x579f6b,JSON[_0xe7fd('0x43')](_0x535e1e));})[_0xe7fd('0x40')](function(_0x204e32){logger['error'](_0xe7fd('0x45'),_0x579f6b,JSON[_0xe7fd('0x43')](_0x204e32));});})['then'](function(){_0x366766[_0xe7fd('0x13')]();});});}else{return rpc[this[_0xe7fd('0xf')]+_0xe7fd('0x29')][_0xe7fd('0x3e')](_0x1cf0bd)['then'](function(_0x37c73c){logger[_0xe7fd('0x12')](_0xe7fd('0x3f'),_0x579f6b,_0x1cf0bd['body']);})[_0xe7fd('0x40')](function(_0x210ae1){logger[_0xe7fd('0x41')](_0xe7fd('0x3f'),_0x579f6b,JSON[_0xe7fd('0x43')](_0x210ae1));})[_0xe7fd('0x46')](function(){Promise[_0xe7fd('0x47')]()[_0xe7fd('0x3b')](function(){if(_0x106791[0x0]!=='2'||_0x1dfdb4[_0xe7fd('0x17')])return;return rpc[_0x3a8577+_0xe7fd('0x44')][_0xe7fd('0x48')](_0x1dfdb4['id'],{'autoreplyExecuted':!![]})[_0xe7fd('0x3b')](function(_0x4235b1){logger['info'](_0xe7fd('0x18'),_0x579f6b,JSON['stringify'](_0x4235b1));})['catch'](function(_0x5ad60e){logger[_0xe7fd('0x41')](_0xe7fd('0x45'),_0x579f6b,JSON['stringify'](_0x5ad60e));});})[_0xe7fd('0x3b')](function(){_0x366766[_0xe7fd('0x13')]();});});}}}catch(_0x87afa1){logger['error'](_0xe7fd('0x3f'),_0x579f6b,JSON[_0xe7fd('0x43')](_0x87afa1));_0x366766[_0xe7fd('0x49')]();}};};
\ No newline at end of file
index 48c1473..bcb9327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c6=['error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','system','channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x29733c,_0x2da30b){var _0x49e72f=function(_0x405c92){while(--_0x405c92){_0x29733c['push'](_0x29733c['shift']());}};_0x49e72f(++_0x2da30b);}(_0x42c6,0x175));var _0x642c=function(_0x1ab8a5,_0x3b80d8){_0x1ab8a5=_0x1ab8a5-0x0;var _0x506d52=_0x42c6[_0x1ab8a5];return _0x506d52;};'use strict';var moment=require('moment');var logger=require(_0x642c('0x0'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x642c('0x1')),'whatsappInteraction':require(_0x642c('0x2'))};exports[_0x642c('0x3')]=function(_0x4e72e,_0x35c7a4,_0x19e030,_0x3c1422){return function(_0x189e3f){try{logger[_0x642c('0x4')]('[%s][CLOSE]\x20reason\x20%s',_0x4e72e,_0x35c7a4[0x0]);var _0x2a9ac0={'closed':0x1,'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x642c('0x5'),'disposition':_0x35c7a4[0x0]};if(rpc[_0x3c1422[_0x642c('0x6')]+_0x642c('0x7')]){rpc[_0x3c1422[_0x642c('0x6')]+'Interaction'][_0x642c('0x8')](_0x3c1422[_0x642c('0x9')]['id'],_0x2a9ac0)['then'](function(_0x26638){logger[_0x642c('0x4')](_0x642c('0xa'),_0x4e72e,_0x3c1422[_0x642c('0x9')]['id']);})['catch'](function(_0x5c4ba6){logger[_0x642c('0xb')](_0x642c('0xc'),_0x4e72e,JSON[_0x642c('0xd')](_0x5c4ba6));})[_0x642c('0xe')](function(){_0x189e3f[_0x642c('0xf')]();});}}catch(_0x42e74a){logger['error'](_0x642c('0xc'),_0x4e72e,JSON[_0x642c('0xd')](_0x42e74a));_0x189e3f[_0x642c('0xf')]();}};};
\ No newline at end of file
+var _0x4a8a=['format','channel','Interaction','update','interaction','then','catch','stringify','error','[%s][CLOSE]\x20%s','stop','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s'];(function(_0x335bad,_0x546bd4){var _0x2fb08f=function(_0x27e0b2){while(--_0x27e0b2){_0x335bad['push'](_0x335bad['shift']());}};_0x2fb08f(++_0x546bd4);}(_0x4a8a,0x9b));var _0xa4a8=function(_0x622035,_0x1a4b91){_0x622035=_0x622035-0x0;var _0x326cf2=_0x4a8a[_0x622035];return _0x326cf2;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xa4a8('0x0')),'smsInteraction':require(_0xa4a8('0x1')),'mailInteraction':require(_0xa4a8('0x2')),'faxInteraction':require(_0xa4a8('0x3')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xa4a8('0x4')]=function(_0x1316be,_0x3dcea6,_0x4079b8,_0x133c90){return function(_0x4cd98f){try{logger[_0xa4a8('0x5')](_0xa4a8('0x6'),_0x1316be,_0x3dcea6[0x0]);var _0x1f52ae={'closed':0x1,'closedAt':moment()[_0xa4a8('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x3dcea6[0x0]};if(rpc[_0x133c90[_0xa4a8('0x8')]+'Interaction']){rpc[_0x133c90[_0xa4a8('0x8')]+_0xa4a8('0x9')][_0xa4a8('0xa')](_0x133c90[_0xa4a8('0xb')]['id'],_0x1f52ae)[_0xa4a8('0xc')](function(_0xe58123){logger[_0xa4a8('0x5')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x1316be,_0x133c90['interaction']['id']);})[_0xa4a8('0xd')](function(_0x79919d){logger['error']('[%s][CLOSE]\x20%s',_0x1316be,JSON[_0xa4a8('0xe')](_0x79919d));})['finally'](function(){_0x4cd98f['stop']();});}}catch(_0x36b195){logger[_0xa4a8('0xf')](_0xa4a8('0x10'),_0x1316be,JSON['stringify'](_0x36b195));_0x4cd98f[_0xa4a8('0x11')]();}};};
\ No newline at end of file
index ed97639..9ec1db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a4f=['info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','body','create','then','catch','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','fulfillment','providerName','providerResponse','result','endConversation','error','lodash','apiai-promise','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId'];(function(_0x147d60,_0xcfabc){var _0x62cc8d=function(_0x4b0976){while(--_0x4b0976){_0x147d60['push'](_0x147d60['shift']());}};_0x62cc8d(++_0xcfabc);}(_0x5a4f,0x10d));var _0xf5a4=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x5a4f[_0x4e6ae6];return _0x23c108;};'use strict';var _=require(_0xf5a4('0x0'));var moment=require('moment');var apiai=require(_0xf5a4('0x1'));var md5=require('md5');var utils=require(_0xf5a4('0x2'));var logger=require('../../../../config/logger')(_0xf5a4('0x3'));var rpc={'chatMessage':require(_0xf5a4('0x4')),'openchannelMessage':require(_0xf5a4('0x5')),'mailMessage':require(_0xf5a4('0x6')),'smsMessage':require(_0xf5a4('0x7')),'faxMessage':require(_0xf5a4('0x8')),'whatsappMessage':require(_0xf5a4('0x9'))};exports['consequence']=function(_0x354c7d,_0xac1c57){return function(_0x3ef3da){try{if(!_[_0xf5a4('0xa')](this[_0xf5a4('0xb')][_0xf5a4('0xc')])){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0xf5a4('0xf'));return _0x3ef3da[_0xf5a4('0x10')]();}var _0x3cdf31={'ContactId':this['contact']['id'],'sentAt':moment()[_0xf5a4('0x11')](_0xf5a4('0x12')),'direction':_0xf5a4('0x13')};if(this[_0xf5a4('0x14')]===_0xf5a4('0x15')||this[_0xf5a4('0x14')]==='whatsapp'){_0x3cdf31[_0xf5a4('0x16')]=this[_0xf5a4('0xb')][_0xf5a4('0x16')];}var _0x3bf5ec=this[_0xf5a4('0x14')];if(_0x3bf5ec===_0xf5a4('0x17')){_0x3cdf31[_0xf5a4('0x18')]=this['account']['id'];}else{_0x3cdf31[_[_0xf5a4('0x19')](_0x3bf5ec)+_0xf5a4('0x1a')]=this[_0xf5a4('0x1b')]['id'];}_0x3cdf31[_[_0xf5a4('0x19')](_0x3bf5ec)+_0xf5a4('0x1c')]=this[_0xf5a4('0xb')]['id'];if(this['interaction'][_0xf5a4('0x1d')]){var _0x14c8c3=_0xac1c57[0x2];if(!_['isEmpty'](_0x14c8c3)){_0x3cdf31[_0xf5a4('0x1e')]=utils['getMustacheRender'](_0x14c8c3,this);return rpc[_0x3bf5ec+'Message'][_0xf5a4('0x1f')](_0x3cdf31)[_0xf5a4('0x20')](function(_0x30d013){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0x3cdf31[_0xf5a4('0x1e')]);})[_0xf5a4('0x21')](function(_0x357db0){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x357db0));})['finally'](function(){logger['info'](_0xf5a4('0x23'),_0x354c7d);_0x3ef3da[_0xf5a4('0x24')]();});}else{logger[_0xf5a4('0xd')](_0xf5a4('0x25'),_0x354c7d);_0x3ef3da[_0xf5a4('0x24')]();}}else{var _0x5d577a=this;var _0x544d10=apiai(_0xac1c57[0x0],{'language':_0xac1c57[0x1]||'en'});return _0x544d10[_0xf5a4('0x26')](this[_0xf5a4('0x27')][_0xf5a4('0x1e')],{'sessionId':md5(this[_0xf5a4('0xb')]['id'])})[_0xf5a4('0x20')](function(_0x27ebae){_0x5d577a['body'][_0xf5a4('0x28')]=_0x27ebae;_0x3cdf31[_0xf5a4('0x1e')]=_0x27ebae['result'][_0xf5a4('0x29')]['speech'];_0x3cdf31[_0xf5a4('0x2a')]=_0xf5a4('0x28');_0x3cdf31[_0xf5a4('0x2b')]=JSON[_0xf5a4('0x22')](_0x27ebae);return rpc[_0x3bf5ec+'Message'][_0xf5a4('0x1f')](_0x3cdf31)[_0xf5a4('0x20')](function(_0x2f45a4){logger[_0xf5a4('0xd')](_0xf5a4('0xe'),_0x354c7d,_0x3cdf31[_0xf5a4('0x1e')]);if(_0x27ebae[_0xf5a4('0x2c')]['metadata'][_0xf5a4('0x2d')]){_0x3ef3da[_0xf5a4('0x10')]();}else{_0x3ef3da[_0xf5a4('0x24')]();}})[_0xf5a4('0x21')](function(_0x219aa6){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x219aa6));_0x3ef3da[_0xf5a4('0x10')]();});})[_0xf5a4('0x21')](function(_0x43ebf2){logger[_0xf5a4('0x2e')](_0xf5a4('0xe'),_0x354c7d,_0x43ebf2[_0xf5a4('0x27')]);_0x3ef3da[_0xf5a4('0x10')]();});}}catch(_0x5a500a){logger['error'](_0xf5a4('0xe'),_0x354c7d,JSON[_0xf5a4('0x22')](_0x5a500a));_0x3ef3da[_0xf5a4('0x24')]();}};};
\ No newline at end of file
+var _0xabce=['getMustacheRender','Message','create','then','body','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','dialogflow','result','speech','providerName','providerResponse','endConversation','catch','error','message','lodash','moment','apiai-promise','md5','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','isNil','interaction','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','isEmpty'];(function(_0x22f963,_0x4bb343){var _0x3ef3ee=function(_0x1bbbac){while(--_0x1bbbac){_0x22f963['push'](_0x22f963['shift']());}};_0x3ef3ee(++_0x4bb343);}(_0xabce,0x103));var _0xeabc=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xabce[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0xeabc('0x0'));var moment=require(_0xeabc('0x1'));var apiai=require(_0xeabc('0x2'));var md5=require(_0xeabc('0x3'));var utils=require(_0xeabc('0x4'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0xeabc('0x5')),'openchannelMessage':require(_0xeabc('0x6')),'mailMessage':require(_0xeabc('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xeabc('0x8'))};exports['consequence']=function(_0x229ba4,_0x52ede8){return function(_0x3bdc29){try{if(!_[_0xeabc('0x9')](this[_0xeabc('0xa')]['UserId'])){logger[_0xeabc('0xb')](_0xeabc('0xc'),_0x229ba4,_0xeabc('0xd'));return _0x3bdc29[_0xeabc('0xe')]();}var _0x4301e4={'ContactId':this[_0xeabc('0xf')]['id'],'sentAt':moment()[_0xeabc('0x10')](_0xeabc('0x11')),'direction':_0xeabc('0x12')};if(this[_0xeabc('0x13')]===_0xeabc('0x14')||this[_0xeabc('0x13')]===_0xeabc('0x15')){_0x4301e4[_0xeabc('0x16')]=this[_0xeabc('0xa')][_0xeabc('0x16')];}var _0x53df9c=this[_0xeabc('0x13')];if(_0x53df9c===_0xeabc('0x17')){_0x4301e4[_0xeabc('0x18')]=this['account']['id'];}else{_0x4301e4[_['upperFirst'](_0x53df9c)+_0xeabc('0x19')]=this[_0xeabc('0x1a')]['id'];}_0x4301e4[_[_0xeabc('0x1b')](_0x53df9c)+'InteractionId']=this[_0xeabc('0xa')]['id'];if(this[_0xeabc('0xa')]['created']){var _0x53fe28=_0x52ede8[0x2];if(!_[_0xeabc('0x1c')](_0x53fe28)){_0x4301e4['body']=utils[_0xeabc('0x1d')](_0x53fe28,this);return rpc[_0x53df9c+_0xeabc('0x1e')][_0xeabc('0x1f')](_0x4301e4)[_0xeabc('0x20')](function(_0x31dd53){logger[_0xeabc('0xb')](_0xeabc('0xc'),_0x229ba4,_0x4301e4[_0xeabc('0x21')]);})['catch'](function(_0x1253e4){logger['error'](_0xeabc('0xc'),_0x229ba4,JSON[_0xeabc('0x22')](_0x1253e4));})['finally'](function(){logger[_0xeabc('0xb')](_0xeabc('0x23'),_0x229ba4);_0x3bdc29[_0xeabc('0x24')]();});}else{logger[_0xeabc('0xb')](_0xeabc('0x25'),_0x229ba4);_0x3bdc29['stop']();}}else{var _0xecdbf=this;var _0x10c675=apiai(_0x52ede8[0x0],{'language':_0x52ede8[0x1]||'en'});return _0x10c675[_0xeabc('0x26')](this['message'][_0xeabc('0x21')],{'sessionId':md5(this[_0xeabc('0xa')]['id'])})[_0xeabc('0x20')](function(_0x319119){_0xecdbf['body'][_0xeabc('0x27')]=_0x319119;_0x4301e4['body']=_0x319119[_0xeabc('0x28')]['fulfillment'][_0xeabc('0x29')];_0x4301e4[_0xeabc('0x2a')]=_0xeabc('0x27');_0x4301e4[_0xeabc('0x2b')]=JSON[_0xeabc('0x22')](_0x319119);return rpc[_0x53df9c+_0xeabc('0x1e')][_0xeabc('0x1f')](_0x4301e4)['then'](function(_0x5b2934){logger[_0xeabc('0xb')]('[%s][DIALOGFLOW]\x20%s',_0x229ba4,_0x4301e4[_0xeabc('0x21')]);if(_0x319119[_0xeabc('0x28')]['metadata'][_0xeabc('0x2c')]){_0x3bdc29[_0xeabc('0xe')]();}else{_0x3bdc29[_0xeabc('0x24')]();}})[_0xeabc('0x2d')](function(_0x149170){logger[_0xeabc('0x2e')](_0xeabc('0xc'),_0x229ba4,JSON[_0xeabc('0x22')](_0x149170));_0x3bdc29[_0xeabc('0xe')]();});})['catch'](function(_0x5b34dd){logger['error'](_0xeabc('0xc'),_0x229ba4,_0x5b34dd[_0xeabc('0x2f')]);_0x3bdc29[_0xeabc('0xe')]();});}}catch(_0x3c606a){logger[_0xeabc('0x2e')](_0xeabc('0xc'),_0x229ba4,JSON[_0xeabc('0x22')](_0x3c606a));_0x3bdc29['stop']();}};};
\ No newline at end of file
index 97440b4..4792bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab4d=['AccountId','InteractionId','created','isEmpty','Message','finally','stop','sessionPath','message','detectIntent','dialogflowV2','queryResult','fields','end_conversation','boolValue','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','diagnosticInfo','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','queryText','intentDetectionConfidence','providerName','providerResponse','length','push','fulfillmentText','all','stringify','lodash','dialogflow','md5','moment','routing','./utils','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','consequence','isNil','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','account','upperFirst'];(function(_0x5617e2,_0x1ffcd7){var _0x27b60d=function(_0xf3f7a2){while(--_0xf3f7a2){_0x5617e2['push'](_0x5617e2['shift']());}};_0x27b60d(++_0x1ffcd7);}(_0xab4d,0x1ae));var _0xdab4=function(_0xf89c3,_0x351bf1){_0xf89c3=_0xf89c3-0x0;var _0x274fc8=_0xab4d[_0xf89c3];return _0x274fc8;};'use strict';var _=require(_0xdab4('0x0'));var dialogflow=require(_0xdab4('0x1'));var md5=require(_0xdab4('0x2'));var moment=require(_0xdab4('0x3'));var Promise=require('bluebird');var logger=require('../../../../config/logger')(_0xdab4('0x4'));var utils=require(_0xdab4('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xdab4('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xdab4('0x7')),'whatsappMessage':require(_0xdab4('0x8'))};function createMessage(_0x1a57f9,_0x34ee7c,_0x69556c,_0x176349){return new Promise(function(_0x8e5a7e,_0xdaa865){var _0x504a31=_[_0xdab4('0x9')](_0x69556c);_0x504a31[_0xdab4('0xa')]=_0x176349;return rpc[_0x34ee7c+'Message'][_0xdab4('0xb')](_0x504a31)[_0xdab4('0xc')](function(){logger[_0xdab4('0xd')](_0xdab4('0xe'),_0x1a57f9,_0x504a31[_0xdab4('0xa')]);_0x8e5a7e();})[_0xdab4('0xf')](function(_0xa6c0c4){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x1a57f9,JSON['stringify'](_0xa6c0c4));_0xdaa865(_0xa6c0c4);});});}exports[_0xdab4('0x11')]=function(_0x40075b,_0x318c63){return function(_0x18e03b){try{if(!_[_0xdab4('0x12')](this[_0xdab4('0x13')]['UserId'])){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,_0xdab4('0x14'));return _0x18e03b[_0xdab4('0x15')]();}var _0x482602={'ContactId':this[_0xdab4('0x16')]['id'],'sentAt':moment()[_0xdab4('0x17')](_0xdab4('0x18')),'direction':_0xdab4('0x19')};if(this[_0xdab4('0x1a')]==='sms'||this[_0xdab4('0x1a')]===_0xdab4('0x1b')){_0x482602['phone']=this[_0xdab4('0x13')][_0xdab4('0x1c')];}var _0x5aaa40=this['channel'];if(_0x5aaa40===_0xdab4('0x1d')){_0x482602['ChatWebsiteId']=this[_0xdab4('0x1e')]['id'];}else{_0x482602[_[_0xdab4('0x1f')](_0x5aaa40)+_0xdab4('0x20')]=this[_0xdab4('0x1e')]['id'];}_0x482602[_['upperFirst'](_0x5aaa40)+_0xdab4('0x21')]=this['interaction']['id'];if(this[_0xdab4('0x13')][_0xdab4('0x22')]){var _0x187335=_0x318c63[0x4];if(!_[_0xdab4('0x23')](_0x187335)){_0x482602[_0xdab4('0xa')]=utils['getMustacheRender'](_0x187335,this);return rpc[_0x5aaa40+_0xdab4('0x24')][_0xdab4('0xb')](_0x482602)[_0xdab4('0xc')](function(_0x1ed0bc){logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,_0x482602[_0xdab4('0xa')]);})['catch'](function(_0x4b3b22){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x40075b,JSON['stringify'](_0x4b3b22));})[_0xdab4('0x25')](function(){logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x40075b);_0x18e03b[_0xdab4('0x26')]();});}else{logger[_0xdab4('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x40075b);_0x18e03b[_0xdab4('0x26')]();}}else{var _0x4c8da1=this;var _0x1deeec=_0x318c63[0x2]['replace'](/\\n/g,'\x0a');var _0x18c268={'credentials':{'private_key':_0x1deeec,'client_email':_0x318c63[0x1]}};var _0x5a02fb=new dialogflow['SessionsClient'](_0x18c268);var _0x5c706e=_0x5a02fb[_0xdab4('0x27')](_0x318c63[0x0],md5(_0x4c8da1['interaction']['id']));var _0xad8888={'session':_0x5c706e,'queryInput':{'text':{'text':_0x4c8da1[_0xdab4('0x28')][_0xdab4('0xa')],'languageCode':_0x318c63[0x3]||'en'}}};return _0x5a02fb[_0xdab4('0x29')](_0xad8888)[_0xdab4('0xc')](function(_0x4f3c5b){if(_0x4f3c5b&&_0x4f3c5b['length']){_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x2a')]=_0x4f3c5b;var _0x4aa222=_0x4f3c5b[0x0];var _0x24d31f=_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo']&&_0x4aa222['queryResult']['diagnosticInfo']['fields']?_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo'][_0xdab4('0x2c')][_0xdab4('0x2d')][_0xdab4('0x2e')]:![];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_ACTION']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x2f')];_0x4c8da1['body'][_0xdab4('0x30')]=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x31')];_0x4c8da1['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x32')]&&_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo']['fields']?_0x4aa222[_0xdab4('0x2b')]['diagnosticInfo'][_0xdab4('0x2c')][_0xdab4('0x2d')][_0xdab4('0x2e')]:![];_0x4c8da1['body'][_0xdab4('0x33')]=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x34')][_0xdab4('0x35')];_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x36')]=_0x4aa222[_0xdab4('0x2b')]['intent']['displayName'];_0x4c8da1[_0xdab4('0xa')][_0xdab4('0x37')]=_0x4aa222['queryResult'][_0xdab4('0x34')]['isFallback'];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_LANGUAGECODE']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x38')];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_QUERYTEXT']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x39')];_0x4c8da1[_0xdab4('0xa')]['DIALOGFLOWV2_SCORE']=_0x4aa222[_0xdab4('0x2b')][_0xdab4('0x3a')];_0x482602[_0xdab4('0x3b')]='dialogflowV2';_0x482602[_0xdab4('0x3c')]=JSON['stringify'](_0x4f3c5b);var _0x46aa8d=[];for(var _0x267941=0x0;_0x267941<_0x4f3c5b[_0xdab4('0x3d')];_0x267941++){var _0x3d6980=_0x4f3c5b[_0x267941];if(_0x3d6980&&_0x3d6980[_0xdab4('0x2b')]&&_0x3d6980[_0xdab4('0x2b')]['fulfillmentText']){_0x46aa8d[_0xdab4('0x3e')](createMessage(_0x40075b,_0x5aaa40,_0x482602,_0x3d6980[_0xdab4('0x2b')][_0xdab4('0x3f')]));}}return Promise[_0xdab4('0x40')](_0x46aa8d)[_0xdab4('0xc')](function(){if(_0x24d31f){_0x18e03b[_0xdab4('0x15')]();}else{_0x18e03b['stop']();}})[_0xdab4('0xf')](function(_0xf10046){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x40075b,JSON[_0xdab4('0x41')](_0xf10046));_0x18e03b[_0xdab4('0x15')]();});}})[_0xdab4('0xf')](function(_0x28ffbe){logger['error'](_0xdab4('0xe'),_0x40075b,_0x28ffbe[_0xdab4('0x28')]);_0x18e03b[_0xdab4('0x15')]();});}}catch(_0x496cc7){logger[_0xdab4('0x10')](_0xdab4('0xe'),_0x40075b,JSON[_0xdab4('0x41')](_0x496cc7));_0x18e03b['stop']();}};};
\ No newline at end of file
+var _0x95b3=['consequence','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','stringify','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','dialogflowV2','providerResponse','fulfillmentText','push','catch','lodash','dialogflow','md5','moment','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','Message','create','then','info','error','[%s][DIALOGFLOWV2]\x20%s'];(function(_0x306318,_0x288860){var _0x39bfc9=function(_0x52bc80){while(--_0x52bc80){_0x306318['push'](_0x306318['shift']());}};_0x39bfc9(++_0x288860);}(_0x95b3,0x1d6));var _0x395b=function(_0x45ec64,_0x45c0aa){_0x45ec64=_0x45ec64-0x0;var _0x31af7a=_0x95b3[_0x45ec64];return _0x31af7a;};'use strict';var _=require(_0x395b('0x0'));var dialogflow=require(_0x395b('0x1'));var md5=require(_0x395b('0x2'));var moment=require(_0x395b('0x3'));var Promise=require('bluebird');var logger=require(_0x395b('0x4'))(_0x395b('0x5'));var utils=require(_0x395b('0x6'));var rpc={'chatMessage':require(_0x395b('0x7')),'openchannelMessage':require(_0x395b('0x8')),'mailMessage':require(_0x395b('0x9')),'smsMessage':require(_0x395b('0xa')),'faxMessage':require(_0x395b('0xb')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x734f7d,_0x56bc26,_0x35f639,_0x1a4a18){return new Promise(function(_0x3cc7b3,_0x1d2231){var _0x299743=_[_0x395b('0xc')](_0x35f639);_0x299743[_0x395b('0xd')]=_0x1a4a18;return rpc[_0x56bc26+_0x395b('0xe')][_0x395b('0xf')](_0x299743)[_0x395b('0x10')](function(){logger[_0x395b('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x734f7d,_0x299743['body']);_0x3cc7b3();})['catch'](function(_0x189ac2){logger[_0x395b('0x12')](_0x395b('0x13'),_0x734f7d,JSON['stringify'](_0x189ac2));_0x1d2231(_0x189ac2);});});}exports[_0x395b('0x14')]=function(_0x5da4b7,_0xd29087){return function(_0x4610ed){try{if(!_['isNil'](this[_0x395b('0x15')]['UserId'])){logger[_0x395b('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x5da4b7,_0x395b('0x16'));return _0x4610ed[_0x395b('0x17')]();}var _0x286cc2={'ContactId':this[_0x395b('0x18')]['id'],'sentAt':moment()[_0x395b('0x19')](_0x395b('0x1a')),'direction':_0x395b('0x1b')};if(this[_0x395b('0x1c')]===_0x395b('0x1d')||this[_0x395b('0x1c')]===_0x395b('0x1e')){_0x286cc2[_0x395b('0x1f')]=this[_0x395b('0x15')][_0x395b('0x1f')];}var _0x29bc8f=this[_0x395b('0x1c')];if(_0x29bc8f===_0x395b('0x20')){_0x286cc2[_0x395b('0x21')]=this[_0x395b('0x22')]['id'];}else{_0x286cc2[_[_0x395b('0x23')](_0x29bc8f)+_0x395b('0x24')]=this['account']['id'];}_0x286cc2[_[_0x395b('0x23')](_0x29bc8f)+'InteractionId']=this['interaction']['id'];if(this['interaction'][_0x395b('0x25')]){var _0x2844c3=_0xd29087[0x4];if(!_[_0x395b('0x26')](_0x2844c3)){_0x286cc2[_0x395b('0xd')]=utils[_0x395b('0x27')](_0x2844c3,this);return rpc[_0x29bc8f+_0x395b('0xe')][_0x395b('0xf')](_0x286cc2)[_0x395b('0x10')](function(_0x565d57){logger[_0x395b('0x11')](_0x395b('0x13'),_0x5da4b7,_0x286cc2[_0x395b('0xd')]);})['catch'](function(_0x328380){logger[_0x395b('0x12')](_0x395b('0x13'),_0x5da4b7,JSON[_0x395b('0x28')](_0x328380));})['finally'](function(){logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5da4b7);_0x4610ed[_0x395b('0x29')]();});}else{logger['info'](_0x395b('0x2a'),_0x5da4b7);_0x4610ed[_0x395b('0x29')]();}}else{var _0x3bfbae=this;var _0x59898f=_0xd29087[0x2][_0x395b('0x2b')](/\\n/g,'\x0a');var _0x539cd8={'credentials':{'private_key':_0x59898f,'client_email':_0xd29087[0x1]}};var _0x35e375=new dialogflow[(_0x395b('0x2c'))](_0x539cd8);var _0x127feb=_0x35e375[_0x395b('0x2d')](_0xd29087[0x0],md5(_0x3bfbae[_0x395b('0x15')]['id']));var _0x8ae65c={'session':_0x127feb,'queryInput':{'text':{'text':_0x3bfbae[_0x395b('0x2e')][_0x395b('0xd')],'languageCode':_0xd29087[0x3]||'en'}}};return _0x35e375['detectIntent'](_0x8ae65c)['then'](function(_0x14da0c){if(_0x14da0c&&_0x14da0c[_0x395b('0x2f')]){_0x3bfbae[_0x395b('0xd')]['dialogflowV2']=_0x14da0c;var _0x731a33=_0x14da0c[0x0];var _0x46327d=_0x731a33[_0x395b('0x30')][_0x395b('0x31')]&&_0x731a33['queryResult'][_0x395b('0x31')][_0x395b('0x32')]?_0x731a33[_0x395b('0x30')]['diagnosticInfo'][_0x395b('0x32')][_0x395b('0x33')][_0x395b('0x34')]:![];_0x3bfbae[_0x395b('0xd')][_0x395b('0x35')]=_0x731a33[_0x395b('0x30')]['action'];_0x3bfbae[_0x395b('0xd')][_0x395b('0x36')]=_0x731a33['queryResult']['allRequiredParamsPresent'];_0x3bfbae[_0x395b('0xd')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x731a33['queryResult'][_0x395b('0x31')]&&_0x731a33[_0x395b('0x30')][_0x395b('0x31')][_0x395b('0x32')]?_0x731a33['queryResult']['diagnosticInfo'][_0x395b('0x32')][_0x395b('0x33')][_0x395b('0x34')]:![];_0x3bfbae[_0x395b('0xd')]['DIALOGFLOWV2_INTENTNAME']=_0x731a33[_0x395b('0x30')]['intent'][_0x395b('0x37')];_0x3bfbae[_0x395b('0xd')][_0x395b('0x38')]=_0x731a33['queryResult'][_0x395b('0x39')][_0x395b('0x3a')];_0x3bfbae[_0x395b('0xd')][_0x395b('0x3b')]=_0x731a33[_0x395b('0x30')][_0x395b('0x39')]['isFallback'];_0x3bfbae['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x731a33[_0x395b('0x30')][_0x395b('0x3c')];_0x3bfbae[_0x395b('0xd')][_0x395b('0x3d')]=_0x731a33[_0x395b('0x30')][_0x395b('0x3e')];_0x3bfbae[_0x395b('0xd')][_0x395b('0x3f')]=_0x731a33[_0x395b('0x30')][_0x395b('0x40')];_0x286cc2['providerName']=_0x395b('0x41');_0x286cc2[_0x395b('0x42')]=JSON[_0x395b('0x28')](_0x14da0c);var _0x36085a=[];for(var _0x1d5e55=0x0;_0x1d5e55<_0x14da0c[_0x395b('0x2f')];_0x1d5e55++){var _0x625c70=_0x14da0c[_0x1d5e55];if(_0x625c70&&_0x625c70[_0x395b('0x30')]&&_0x625c70[_0x395b('0x30')][_0x395b('0x43')]){_0x36085a[_0x395b('0x44')](createMessage(_0x5da4b7,_0x29bc8f,_0x286cc2,_0x625c70['queryResult'][_0x395b('0x43')]));}}return Promise['all'](_0x36085a)['then'](function(){if(_0x46327d){_0x4610ed[_0x395b('0x17')]();}else{_0x4610ed[_0x395b('0x29')]();}})[_0x395b('0x45')](function(_0x12f0af){logger['error'](_0x395b('0x13'),_0x5da4b7,JSON[_0x395b('0x28')](_0x12f0af));_0x4610ed[_0x395b('0x17')]();});}})[_0x395b('0x45')](function(_0x37cadc){logger['error'](_0x395b('0x13'),_0x5da4b7,_0x37cadc['message']);_0x4610ed['next']();});}}catch(_0x1f7d0c){logger[_0x395b('0x12')](_0x395b('0x13'),_0x5da4b7,JSON[_0x395b('0x28')](_0x1f7d0c));_0x4610ed['stop']();}};};
\ No newline at end of file
index 79272df..c4d6b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e2=['stop','priorityTrue','priorityFalse','info','condition','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','replace','length','[%s][GOTOIF]\x20%s','map','message','join'];(function(_0x37080e,_0x250eb0){var _0x9ffbce=function(_0x84dfb5){while(--_0x84dfb5){_0x37080e['push'](_0x37080e['shift']());}};_0x9ffbce(++_0x250eb0);}(_0x66e2,0xf5));var _0x266e=function(_0x5d7ae8,_0x48a800){_0x5d7ae8=_0x5d7ae8-0x0;var _0x680da3=_0x66e2[_0x5d7ae8];return _0x680da3;};'use strict';var schema=require(_0x266e('0x0'));var _=require(_0x266e('0x1'));var htmlToText=require(_0x266e('0x2'));var utils=require(_0x266e('0x3'));var logger=require(_0x266e('0x4'))('routing');var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x266e('0x5')},'priorityTrue':{'type':_0x266e('0x6'),'message':_0x266e('0x7')},'priorityFalse':{'type':'number','message':_0x266e('0x8')}});exports[_0x266e('0x9')]=function(_0x1dee3f,_0x61fa16){return function(_0x57f7f6){try{var _0x61be0f={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x61fa16[0x0],this),{'wordwrap':![]})[_0x266e('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x61fa16[0x1],'priorityFalse':_0x61fa16[0x2]};var _0x1d7d9f=gotoif[_0x266e('0x0')](_0x61be0f,{'typecast':!![]});if(_0x1d7d9f[_0x266e('0xb')]){logger['error'](_0x266e('0xc'),_0x1dee3f,_[_0x266e('0xd')](_0x1d7d9f,_0x266e('0xe'))[_0x266e('0xf')](',\x20'));_0x57f7f6[_0x266e('0x10')]();}else{try{var _0x299f57=eval('('+_0x61be0f['condition']+')');var _0x5543e8=_0x299f57?_0x61be0f[_0x266e('0x11')]:_0x61be0f[_0x266e('0x12')];logger[_0x266e('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1dee3f,_0x61be0f[_0x266e('0x14')],_0x299f57,_0x5543e8||_0x266e('0x15'));if(_0x5543e8){var _0x2ec756=_[_0x266e('0x16')](_0x57f7f6[_0x266e('0x17')](),{'p':_0x5543e8});if(_0x2ec756>=0x0){logger['info'](_0x266e('0x18'),_0x1dee3f,_0x5543e8||_0x266e('0x15'),_0x2ec756);_0x57f7f6[_0x266e('0x15')](_0x2ec756);}else{logger[_0x266e('0x13')](_0x266e('0x19'),_0x1dee3f,_0x5543e8||_0x266e('0x15'));_0x57f7f6[_0x266e('0x10')]();}}else{_0x57f7f6[_0x266e('0x15')]();}}catch(_0x4c5a96){logger[_0x266e('0x1a')](_0x266e('0x1b'),_0x1dee3f,_0x4c5a96[_0x266e('0xe')]);_0x57f7f6['stop']();}}}catch(_0x505ecf){logger[_0x266e('0x1a')](_0x266e('0xc'),_0x1dee3f,JSON[_0x266e('0x1c')](_0x505ecf));_0x57f7f6[_0x266e('0x10')]();}};};
\ No newline at end of file
+var _0xf547=['fromString','getMustacheRender','replace','error','message','join','stop','condition','priorityTrue','priorityFalse','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','rules','info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','validate','lodash','html-to-text','./utils','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence'];(function(_0xf79bae,_0x263b2a){var _0x5d2cb7=function(_0x27c86b){while(--_0x27c86b){_0xf79bae['push'](_0xf79bae['shift']());}};_0x5d2cb7(++_0x263b2a);}(_0xf547,0x18b));var _0x7f54=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0xf547[_0x4bb66f];return _0xf2772f;};'use strict';var schema=require(_0x7f54('0x0'));var _=require(_0x7f54('0x1'));var htmlToText=require(_0x7f54('0x2'));var utils=require(_0x7f54('0x3'));var logger=require('../../../../config/logger')(_0x7f54('0x4'));var gotoif=schema({'condition':{'type':_0x7f54('0x5'),'required':!![],'message':_0x7f54('0x6')},'priorityTrue':{'type':'number','message':_0x7f54('0x7')},'priorityFalse':{'type':_0x7f54('0x8'),'message':_0x7f54('0x9')}});exports[_0x7f54('0xa')]=function(_0x406143,_0x46e3a4){return function(_0x301933){try{var _0x5c4338={'condition':htmlToText[_0x7f54('0xb')](utils[_0x7f54('0xc')](_0x46e3a4[0x0],this),{'wordwrap':![]})[_0x7f54('0xd')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x46e3a4[0x1],'priorityFalse':_0x46e3a4[0x2]};var _0x454bbc=gotoif[_0x7f54('0x0')](_0x5c4338,{'typecast':!![]});if(_0x454bbc['length']){logger[_0x7f54('0xe')]('[%s][GOTOIF]\x20%s',_0x406143,_['map'](_0x454bbc,_0x7f54('0xf'))[_0x7f54('0x10')](',\x20'));_0x301933[_0x7f54('0x11')]();}else{try{var _0x19447b=eval('('+_0x5c4338[_0x7f54('0x12')]+')');var _0x5dcfe2=_0x19447b?_0x5c4338[_0x7f54('0x13')]:_0x5c4338[_0x7f54('0x14')];logger['info'](_0x7f54('0x15'),_0x406143,_0x5c4338[_0x7f54('0x12')],_0x19447b,_0x5dcfe2||'next');if(_0x5dcfe2){var _0x6af86f=_['findIndex'](_0x301933[_0x7f54('0x16')](),{'p':_0x5dcfe2});if(_0x6af86f>=0x0){logger[_0x7f54('0x17')](_0x7f54('0x18'),_0x406143,_0x5dcfe2||_0x7f54('0x19'),_0x6af86f);_0x301933['next'](_0x6af86f);}else{logger[_0x7f54('0x17')](_0x7f54('0x1a'),_0x406143,_0x5dcfe2||'next');_0x301933['stop']();}}else{_0x301933[_0x7f54('0x19')]();}}catch(_0x16ff46){logger[_0x7f54('0xe')](_0x7f54('0x1b'),_0x406143,_0x16ff46[_0x7f54('0xf')]);_0x301933[_0x7f54('0x11')]();}}}catch(_0x2a51ea){logger[_0x7f54('0xe')](_0x7f54('0x1c'),_0x406143,JSON['stringify'](_0x2a51ea));_0x301933[_0x7f54('0x11')]();}};};
\ No newline at end of file
index e1e4b21..114c677 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed70=['lodash','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','message','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate'];(function(_0x1a4dee,_0x1432e4){var _0x21f5fe=function(_0x4daff9){while(--_0x4daff9){_0x1a4dee['push'](_0x1a4dee['shift']());}};_0x21f5fe(++_0x1432e4);}(_0xed70,0x97));var _0x0ed7=function(_0x37adf8,_0x1ab9e0){_0x37adf8=_0x37adf8-0x0;var _0x92cd7e=_0xed70[_0x37adf8];return _0x92cd7e;};'use strict';var schema=require(_0x0ed7('0x0'));var _=require(_0x0ed7('0x1'));var logger=require('../../../../config/logger')(_0x0ed7('0x2'));var gotop=schema({'priority':{'type':_0x0ed7('0x3'),'required':!![],'message':_0x0ed7('0x4')}});exports[_0x0ed7('0x5')]=function(_0x3e1336,_0x3502ab){return function(_0x3ebf65){try{var _0x53e416={'priority':_0x3502ab[0x0]};var _0x4ad250=gotop['validate'](_0x53e416,{'typecast':!![]});if(_0x4ad250['length']){logger[_0x0ed7('0x6')](_0x0ed7('0x7'),_0x3e1336,_[_0x0ed7('0x8')](_0x4ad250,_0x0ed7('0x9'))['join'](',\x20'));_0x3ebf65[_0x0ed7('0xa')]();}else{logger[_0x0ed7('0xb')](_0x0ed7('0xc'),_0x3e1336,_0x53e416['priority']);if(_0x53e416[_0x0ed7('0xd')]){var _0x53eb7f=_[_0x0ed7('0xe')](_0x3ebf65['rules'](),{'p':_0x53e416['priority']});if(_0x53eb7f>=0x0){logger['info'](_0x0ed7('0xf'),_0x3e1336,_0x53e416[_0x0ed7('0xd')]||_0x0ed7('0x10'),_0x53eb7f);_0x3ebf65['next'](_0x53eb7f);}else{logger[_0x0ed7('0xb')](_0x0ed7('0x11'),_0x3e1336,_0x53e416[_0x0ed7('0xd')]||_0x0ed7('0x10'));_0x3ebf65[_0x0ed7('0xa')]();}}else{_0x3ebf65['next']();}}}catch(_0x41985e){logger[_0x0ed7('0x6')](_0x0ed7('0x7'),_0x3e1336,JSON[_0x0ed7('0x12')](_0x41985e));_0x3ebf65[_0x0ed7('0xa')]();}};};
\ No newline at end of file
+var _0xa509=['[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next'];(function(_0x418f96,_0x21a183){var _0x1a2dff=function(_0x3baca0){while(--_0x3baca0){_0x418f96['push'](_0x418f96['shift']());}};_0x1a2dff(++_0x21a183);}(_0xa509,0x1e5));var _0x9a50=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa509[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x9a50('0x0'));var _=require(_0x9a50('0x1'));var logger=require(_0x9a50('0x2'))('routing');var gotop=schema({'priority':{'type':_0x9a50('0x3'),'required':!![],'message':_0x9a50('0x4')}});exports['consequence']=function(_0x24f617,_0x170650){return function(_0x1211a5){try{var _0x357eec={'priority':_0x170650[0x0]};var _0x47b3bd=gotop['validate'](_0x357eec,{'typecast':!![]});if(_0x47b3bd[_0x9a50('0x5')]){logger[_0x9a50('0x6')](_0x9a50('0x7'),_0x24f617,_[_0x9a50('0x8')](_0x47b3bd,_0x9a50('0x9'))[_0x9a50('0xa')](',\x20'));_0x1211a5[_0x9a50('0xb')]();}else{logger[_0x9a50('0xc')](_0x9a50('0xd'),_0x24f617,_0x357eec[_0x9a50('0xe')]);if(_0x357eec['priority']){var _0x434b6e=_[_0x9a50('0xf')](_0x1211a5[_0x9a50('0x10')](),{'p':_0x357eec[_0x9a50('0xe')]});if(_0x434b6e>=0x0){logger['info'](_0x9a50('0x11'),_0x24f617,_0x357eec[_0x9a50('0xe')]||_0x9a50('0x12'),_0x434b6e);_0x1211a5['next'](_0x434b6e);}else{logger[_0x9a50('0xc')](_0x9a50('0x13'),_0x24f617,_0x357eec['priority']||_0x9a50('0x12'));_0x1211a5['stop']();}}else{_0x1211a5[_0x9a50('0x12')]();}}}catch(_0xce3df5){logger[_0x9a50('0x6')](_0x9a50('0x7'),_0x24f617,JSON[_0x9a50('0x14')](_0xce3df5));_0x1211a5[_0x9a50('0xb')]();}};};
\ No newline at end of file
index 898e231..f8d9b32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0924=['AccountId','InteractionId','interaction','Message','create','info','[%s][MESSAGE]\x20%s','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','contact','chat','ChatWebsiteId','account','upperFirst','channel'];(function(_0x165531,_0x1d9fb6){var _0x1c1a61=function(_0x19dc29){while(--_0x19dc29){_0x165531['push'](_0x165531['shift']());}};_0x1c1a61(++_0x1d9fb6);}(_0x0924,0x110));var _0x4092=function(_0x26dfc5,_0x138166){_0x26dfc5=_0x26dfc5-0x0;var _0x566350=_0x0924[_0x26dfc5];return _0x566350;};'use strict';var _=require(_0x4092('0x0'));var utils=require(_0x4092('0x1'));var logger=require(_0x4092('0x2'))(_0x4092('0x3'));var rpc={'chatMessage':require(_0x4092('0x4')),'openchannelMessage':require(_0x4092('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x4092('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x4092('0x7'))};exports['consequence']=function(_0x2d05ea,_0x107701){return function(_0x1acb9a){try{var _0x2b29a6={'body':utils['getMustacheRender'](_0x107701[0x0],this),'ContactId':this[_0x4092('0x8')]['id']};if(this['channel']===_0x4092('0x9')){_0x2b29a6[_0x4092('0xa')]=this[_0x4092('0xb')]['id'];}else{_0x2b29a6[_[_0x4092('0xc')](this[_0x4092('0xd')])+_0x4092('0xe')]=this['account']['id'];}_0x2b29a6[_['upperFirst'](this[_0x4092('0xd')])+_0x4092('0xf')]=this[_0x4092('0x10')]['id'];if(rpc[this['channel']+_0x4092('0x11')]){return rpc[this['channel']+_0x4092('0x11')][_0x4092('0x12')](_0x2b29a6)['then'](function(_0x5dcee6){logger[_0x4092('0x13')](_0x4092('0x14'),_0x2d05ea,_0x2b29a6['body']);_0x1acb9a[_0x4092('0x15')]();})[_0x4092('0x16')](function(_0x37df97){logger['error'](_0x4092('0x14'),_0x2d05ea,JSON[_0x4092('0x17')](_0x37df97));_0x1acb9a[_0x4092('0x18')]();});}}catch(_0x26b2e7){logger[_0x4092('0x19')](_0x4092('0x14'),_0x2d05ea,JSON[_0x4092('0x17')](_0x26b2e7));_0x1acb9a['stop']();}};};
\ No newline at end of file
+var _0x6017=['contact','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','create','then','info','body','catch','error','[%s][MESSAGE]\x20%s','stringify','stop','lodash','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','getMustacheRender'];(function(_0x3d886a,_0x222ba1){var _0x44aa60=function(_0x2049a5){while(--_0x2049a5){_0x3d886a['push'](_0x3d886a['shift']());}};_0x44aa60(++_0x222ba1);}(_0x6017,0xae));var _0x7601=function(_0x58977c,_0x5b35df){_0x58977c=_0x58977c-0x0;var _0x534303=_0x6017[_0x58977c];return _0x534303;};'use strict';var _=require(_0x7601('0x0'));var utils=require(_0x7601('0x1'));var logger=require(_0x7601('0x2'))('routing');var rpc={'chatMessage':require(_0x7601('0x3')),'openchannelMessage':require(_0x7601('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x7601('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7601('0x6'))};exports['consequence']=function(_0x5080a3,_0x425bf9){return function(_0xc62b2c){try{var _0xcb5ed9={'body':utils[_0x7601('0x7')](_0x425bf9[0x0],this),'ContactId':this[_0x7601('0x8')]['id']};if(this[_0x7601('0x9')]==='chat'){_0xcb5ed9[_0x7601('0xa')]=this[_0x7601('0xb')]['id'];}else{_0xcb5ed9[_[_0x7601('0xc')](this['channel'])+_0x7601('0xd')]=this[_0x7601('0xb')]['id'];}_0xcb5ed9[_[_0x7601('0xc')](this['channel'])+_0x7601('0xe')]=this[_0x7601('0xf')]['id'];if(rpc[this[_0x7601('0x9')]+_0x7601('0x10')]){return rpc[this[_0x7601('0x9')]+_0x7601('0x10')][_0x7601('0x11')](_0xcb5ed9)[_0x7601('0x12')](function(_0x2f5dbf){logger[_0x7601('0x13')]('[%s][MESSAGE]\x20%s',_0x5080a3,_0xcb5ed9[_0x7601('0x14')]);_0xc62b2c['next']();})[_0x7601('0x15')](function(_0x2b8cbc){logger[_0x7601('0x16')](_0x7601('0x17'),_0x5080a3,JSON[_0x7601('0x18')](_0x2b8cbc));_0xc62b2c[_0x7601('0x19')]();});}}catch(_0x3a1706){logger[_0x7601('0x16')](_0x7601('0x17'),_0x5080a3,JSON['stringify'](_0x3a1706));_0xc62b2c[_0x7601('0x19')]();}};};
\ No newline at end of file
index 6c9b9d5..3654b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3e=['routing','consequence','info','getMustacheRender','next','error','[%s][NOOP]\x20%s','stringify','stop'];(function(_0x4b2cc6,_0x29ef43){var _0x3e0b08=function(_0x3b4131){while(--_0x3b4131){_0x4b2cc6['push'](_0x4b2cc6['shift']());}};_0x3e0b08(++_0x29ef43);}(_0x7d3e,0x15f));var _0xe7d3=function(_0x9ad80e,_0x34dfb5){_0x9ad80e=_0x9ad80e-0x0;var _0x549f5f=_0x7d3e[_0x9ad80e];return _0x549f5f;};'use strict';var utils=require('./utils');var logger=require('../../../../config/logger')(_0xe7d3('0x0'));exports[_0xe7d3('0x1')]=function(_0x552508,_0x3b3e81){return function(_0x55df57){try{logger[_0xe7d3('0x2')]('[%s][NOOP]\x20%s',_0x552508,utils[_0xe7d3('0x3')](_0x3b3e81[0x0],this));_0x55df57[_0xe7d3('0x4')]();}catch(_0x1675d5){logger[_0xe7d3('0x5')](_0xe7d3('0x6'),_0x552508,JSON[_0xe7d3('0x7')](_0x1675d5));_0x55df57[_0xe7d3('0x8')]();}};};
\ No newline at end of file
+var _0x9d8b=['[%s][NOOP]\x20%s','getMustacheRender','error','stringify','stop','./utils','../../../../config/logger','consequence'];(function(_0x5c3ae9,_0x450f9a){var _0x3f5950=function(_0x594c1f){while(--_0x594c1f){_0x5c3ae9['push'](_0x5c3ae9['shift']());}};_0x3f5950(++_0x450f9a);}(_0x9d8b,0x1cd));var _0xb9d8=function(_0x20025e,_0x44c8e1){_0x20025e=_0x20025e-0x0;var _0x4a5ac4=_0x9d8b[_0x20025e];return _0x4a5ac4;};'use strict';var utils=require(_0xb9d8('0x0'));var logger=require(_0xb9d8('0x1'))('routing');exports[_0xb9d8('0x2')]=function(_0x20e133,_0x1976ab){return function(_0x5970e0){try{logger['info'](_0xb9d8('0x3'),_0x20e133,utils[_0xb9d8('0x4')](_0x1976ab[0x0],this));_0x5970e0['next']();}catch(_0x47ab18){logger[_0xb9d8('0x5')](_0xb9d8('0x3'),_0x20e133,JSON[_0xb9d8('0x6')](_0x47ab18));_0x5970e0[_0xb9d8('0x7')]();}};};
\ No newline at end of file
index c306224..e37a3f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9910=['info','name','create','catch','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','QueueReport','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','close','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','routing','defaults','redis','localhost','account','queue','joinAt','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','channel','QueueId','interaction','message','AccountId','WebsiteId'];(function(_0x73b427,_0x18ecb6){var _0x366218=function(_0x32381e){while(--_0x32381e){_0x73b427['push'](_0x73b427['shift']());}};_0x366218(++_0x18ecb6);}(_0x9910,0xfa));var _0x0991=function(_0x2aa78d,_0x409dd8){_0x2aa78d=_0x2aa78d-0x0;var _0x3868fc=_0x9910[_0x2aa78d];return _0x3868fc;};'use strict';var schema=require(_0x0991('0x0'));var _=require(_0x0991('0x1'));var util=require(_0x0991('0x2'));var seqqueue=require(_0x0991('0x3'));var moment=require('moment');var Redis=require(_0x0991('0x4'));var config=require(_0x0991('0x5'));var logger=require('../../../../config/logger')(_0x0991('0x6'));var strategy=require('./strategy');config['redis']=_[_0x0991('0x7')](config[_0x0991('0x8')],{'host':_0x0991('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0991('0x8')]));var attributes=['id','queue_id',_0x0991('0xa'),_0x0991('0xb'),'from',_0x0991('0xc')];function emit(_0x25d041,_0x4ca4ad,_0x43587f){io['to'](_0x25d041)['emit'](_0x4ca4ad,_0x43587f);}function emitChannelQueueInteraction(_0x3b8368,_0x1c8c65,_0x3b2fca,_0x173159,_0x5f05,_0x3d57bd,_0x31f8eb,_0x4590a8){var _0x5aba65=_[_0x0991('0xd')](_0x3b2fca);_0x5aba65['queue_id']=_0x4590a8;_0x5aba65['queue']=_0x1c8c65;_0x5aba65[_0x0991('0xa')]=_0x173159;_0x5aba65['id']=_0x5f05;if(_0x3d57bd){_0x31f8eb[util[_0x0991('0xe')](_0x0991('0xf'),_0x3b8368)][_0x5f05]=_['pick'](_0x5aba65,attributes);}else{delete _0x31f8eb[util['format'](_0x0991('0xf'),_0x3b8368)][_0x5f05];}emit(util[_0x0991('0xe')](_0x0991('0x10'),_0x3b8368,_0x1c8c65),util[_0x0991('0xe')](_0x0991('0x11'),_0x3b8368,_0x3d57bd?'save':_0x0991('0x12')),_[_0x0991('0x13')](_0x5aba65,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x0991('0x14')),'chatQueueReport':require(_0x0991('0x15')),'smsQueueReport':require(_0x0991('0x16')),'faxQueueReport':require(_0x0991('0x17')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x0991('0x18'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':_0x0991('0x19')}});function startRouting(_0x2b663c,_0x43514a,_0x2d7d1f,_0x9cf3d2){if(_0x2b663c&&_0x43514a&&_0x2d7d1f){_0x43514a[_0x0991('0x1a')]+=0x1;var _0x1d2c6d={'uniqueid':_0x2b663c,'from':_0x2d7d1f['body']?_0x2d7d1f[_0x0991('0x1b')][_0x0991('0x1c')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2d7d1f[_0x0991('0x1d')]?_0x2d7d1f['contact']['id']:null,'ListId':_0x2d7d1f[_0x0991('0x1e')]?_0x2d7d1f[_0x0991('0x1e')]['id']:null};_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+_0x0991('0x21')]=_0x43514a['id']||null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+'InteractionId']=_0x2d7d1f['interaction']?_0x2d7d1f[_0x0991('0x22')]['id']:null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+'MessageId']=_0x2d7d1f[_0x0991('0x23')]?_0x2d7d1f[_0x0991('0x23')]['id']:null;_0x1d2c6d[_[_0x0991('0x1f')](_0x2d7d1f[_0x0991('0x20')])+(_0x2d7d1f[_0x0991('0x20')]!=='chat'?_0x0991('0x24'):_0x0991('0x25'))]=_0x2d7d1f[_0x0991('0xa')]?_0x2d7d1f[_0x0991('0xa')]['id']:null;logger[_0x0991('0x26')](util['format']('[%s][START:QUEUE][NAME:%s]',_0x2b663c,_0x43514a[_0x0991('0x27')]));emitChannelQueueInteraction(_0x2d7d1f[_0x0991('0x20')],_0x43514a[_0x0991('0x27')],_0x1d2c6d,_0x2d7d1f[_0x0991('0xa')]['name'],_0x2d7d1f['message']['id'],!![],_0x9cf3d2,_0x43514a['id']);if(rpc[_0x2d7d1f[_0x0991('0x20')]+'QueueReport']){return rpc[_0x2d7d1f[_0x0991('0x20')]+'QueueReport'][_0x0991('0x28')](_0x1d2c6d)[_0x0991('0x29')](function(_0x1e61c0){logger['error'](_0x0991('0x2a'));});}}}function stopRouting(_0x2c3999,_0x594a27,_0x3a8998,_0x474173){if(_0x2c3999&&_0x594a27){_0x594a27['waiting']-=0x1;var _0xf2f5d={'leaveAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'acceptAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'reason':_0x0991('0x2c')};logger[_0x0991('0x26')](util[_0x0991('0xe')](_0x0991('0x2d'),_0x2c3999,_0x594a27[_0x0991('0x27')]));emitChannelQueueInteraction(_0x3a8998['channel'],_0x594a27[_0x0991('0x27')],_0x3a8998['body'],_0x3a8998[_0x0991('0xa')][_0x0991('0x27')],_0x3a8998[_0x0991('0x23')]['id'],![],_0x474173,_0x594a27['id']);if(rpc[_0x3a8998[_0x0991('0x20')]+_0x0991('0x2e')]){return rpc[_0x3a8998[_0x0991('0x20')]+_0x0991('0x2e')]['update'](_0x2c3999,_0xf2f5d)[_0x0991('0x29')](function(_0x243bba){logger[_0x0991('0x2f')](_0x0991('0x30'));});}}}function endRouting(_0x302be6,_0x2ae852,_0x566e55,_0x3261dd){if(_0x302be6&&_0x2ae852){_0x2ae852[_0x0991('0x1a')]-=0x1;var _0x4ec492={'leaveAt':moment()[_0x0991('0xe')](_0x0991('0x2b')),'exitAt':moment()['format'](_0x0991('0x2b')),'reason':_0x0991('0x31')};logger[_0x0991('0x26')](util['format'](_0x0991('0x32'),_0x302be6,_0x2ae852['name']));emitChannelQueueInteraction(_0x566e55[_0x0991('0x20')],_0x2ae852[_0x0991('0x27')],_0x566e55['body'],_0x566e55[_0x0991('0xa')][_0x0991('0x27')],_0x566e55[_0x0991('0x23')]['id'],![],_0x3261dd);if(rpc[_0x566e55[_0x0991('0x20')]+_0x0991('0x2e')]){return rpc[_0x566e55[_0x0991('0x20')]+_0x0991('0x2e')][_0x0991('0x33')](_0x302be6,_0x4ec492)[_0x0991('0x29')](function(_0x395b45){logger[_0x0991('0x2f')](_0x0991('0x30'));});}}}function handleFindQueue(_0x17f990){return function(_0xa068d3){return _0xa068d3['name'][_0x0991('0x34')]()===_0x17f990[_0x0991('0x34')]();};}exports[_0x0991('0x35')]=function(_0xe4d25,_0x7ac3b8,_0x50a3c2,_0x4f935f){return function(_0x53caf1){try{var _0x56b52d={'name':_0x7ac3b8[0x0],'timeout':_0x7ac3b8[0x1]};var _0x42ef65=queue[_0x0991('0x0')](_0x56b52d,{'typecast':!![]});if(_0x42ef65[_0x0991('0x36')]){logger['error'](_0x0991('0x37'),_0xe4d25,_[_0x0991('0x38')](_0x42ef65,_0x0991('0x23'))[_0x0991('0x39')](',\x20'));_0x53caf1[_0x0991('0x3a')]();}else{var _0x7858e8=_[_0x0991('0x3b')](_0x50a3c2[_0x4f935f['channel']+_0x0991('0x3c')],handleFindQueue(_0x56b52d[_0x0991('0x27')]));if(_0x7858e8){startRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);var _0x412c26=(_0x7858e8[_0x0991('0x31')]||0xa)*0x3e8;var _0x5781d6=(_0x56b52d[_0x0991('0x31')]||0x14)*0x3e8;var _0x2d8f0d,_0x42cd10;if(_0x412c26>_0x5781d6){_0x5781d6=_0x412c26;}var _0x528680=seqqueue[_0x0991('0x3d')](_0x412c26);_0x528680['id']=_0xe4d25;_0x528680['atimeout']=_0x412c26;_0x528680['qtimeout']=_0x5781d6;_0x528680[_0x0991('0x20')]=_0x4f935f[_0x0991('0x20')];_0x50a3c2[_0x0991('0x3e')][_0xe4d25]['on'](_0x0991('0x3f'),function(){logger['info'](_0x0991('0x40'),_0xe4d25);stopRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);clearTimeout(_0x2d8f0d);_0x2d8f0d=undefined;_0x528680['close'](!![]);if(_0x50a3c2[_0x0991('0x3e')][_0xe4d25]){delete _0x50a3c2['rules'][_0xe4d25];}_0x53caf1[_0x0991('0x3a')]();});_0x50a3c2[_0x0991('0x3e')][_0xe4d25]['on'](_0x0991('0x41'),function(){if(_0x50a3c2[_0x0991('0x3e')][_0xe4d25]){delete _0x50a3c2['rules'][_0xe4d25];}});_0x2d8f0d=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0xe4d25);endRouting(_0xe4d25,_0x7858e8,_0x4f935f,_0x50a3c2);clearTimeout(_0x2d8f0d);_0x528680[_0x0991('0x42')](!![]);_0x53caf1['next']();},_0x5781d6);switch(_0x7858e8[_0x0991('0x43')]){case _0x0991('0x44'):strategy[_0x0991('0x44')](_0x528680,_0x7858e8,_0x50a3c2,_0x4f935f);break;default:strategy[_0x0991('0x45')](_0x528680,_0x7858e8,_0x50a3c2,_0x4f935f);}}else{logger[_0x0991('0x2f')](_0x0991('0x46'),_0xe4d25,_0x56b52d['name']);_0x53caf1['stop']();}}}catch(_0x182631){console[_0x0991('0x47')](_0x182631);logger['error'](_0x0991('0x37'),_0xe4d25,_0x182631['stack']);_0x53caf1[_0x0991('0x3a')]();}};};
\ No newline at end of file
+var _0xa71d=['%s_queue_waiting_interaction:%s','save','../../rpc/smsQueueReport','string','number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','QueueId','channel','InteractionId','interaction','upperFirst','MessageId','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','timeout','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','createQueue','atimeout','qtimeout','rules','end','close','stop','complete','next','strategy','rrmemory','beepall','validate','lodash','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','queue_id','account','queue','from','joinAt','emit','clone','format','pick','%sQueuesWaitingInteractions','%s:queue:%s'];(function(_0x1732b4,_0x278ea5){var _0x2a3620=function(_0x654a9){while(--_0x654a9){_0x1732b4['push'](_0x1732b4['shift']());}};_0x2a3620(++_0x278ea5);}(_0xa71d,0xbd));var _0xda71=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xa71d[_0x4e9d3c];return _0x2d0825;};'use strict';var schema=require(_0xda71('0x0'));var _=require(_0xda71('0x1'));var util=require('util');var seqqueue=require('seq-queue');var moment=require(_0xda71('0x2'));var Redis=require(_0xda71('0x3'));var config=require(_0xda71('0x4'));var logger=require(_0xda71('0x5'))(_0xda71('0x6'));var strategy=require(_0xda71('0x7'));config[_0xda71('0x8')]=_[_0xda71('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xda71('0x8')]));var attributes=['id',_0xda71('0xa'),_0xda71('0xb'),_0xda71('0xc'),_0xda71('0xd'),_0xda71('0xe')];function emit(_0x297a6e,_0x3393ca,_0x9451c6){io['to'](_0x297a6e)[_0xda71('0xf')](_0x3393ca,_0x9451c6);}function emitChannelQueueInteraction(_0x352d4d,_0x185b49,_0x2e07ff,_0x2247c4,_0xd7f67f,_0x1b9662,_0x251b15,_0x156d41){var _0xcfa919=_[_0xda71('0x10')](_0x2e07ff);_0xcfa919[_0xda71('0xa')]=_0x156d41;_0xcfa919[_0xda71('0xc')]=_0x185b49;_0xcfa919[_0xda71('0xb')]=_0x2247c4;_0xcfa919['id']=_0xd7f67f;if(_0x1b9662){_0x251b15[util[_0xda71('0x11')]('%sQueuesWaitingInteractions',_0x352d4d)][_0xd7f67f]=_[_0xda71('0x12')](_0xcfa919,attributes);}else{delete _0x251b15[util[_0xda71('0x11')](_0xda71('0x13'),_0x352d4d)][_0xd7f67f];}emit(util[_0xda71('0x11')](_0xda71('0x14'),_0x352d4d,_0x185b49),util[_0xda71('0x11')](_0xda71('0x15'),_0x352d4d,_0x1b9662?_0xda71('0x16'):'remove'),_[_0xda71('0x12')](_0xcfa919,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xda71('0x17')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xda71('0x18'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xda71('0x19'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x4015ea,_0x132a6a,_0x6eb140,_0x2ff2f3){if(_0x4015ea&&_0x132a6a&&_0x6eb140){_0x132a6a['waiting']+=0x1;var _0x419f46={'uniqueid':_0x4015ea,'from':_0x6eb140[_0xda71('0x1a')]?_0x6eb140[_0xda71('0x1a')][_0xda71('0xd')]:'','joinAt':moment()[_0xda71('0x11')](_0xda71('0x1b')),'ContactId':_0x6eb140[_0xda71('0x1c')]?_0x6eb140['contact']['id']:null,'ListId':_0x6eb140[_0xda71('0x1d')]?_0x6eb140[_0xda71('0x1d')]['id']:null};_0x419f46[_['upperFirst'](_0x6eb140['channel'])+_0xda71('0x1e')]=_0x132a6a['id']||null;_0x419f46[_['upperFirst'](_0x6eb140[_0xda71('0x1f')])+_0xda71('0x20')]=_0x6eb140[_0xda71('0x21')]?_0x6eb140['interaction']['id']:null;_0x419f46[_[_0xda71('0x22')](_0x6eb140[_0xda71('0x1f')])+_0xda71('0x23')]=_0x6eb140[_0xda71('0x24')]?_0x6eb140[_0xda71('0x24')]['id']:null;_0x419f46[_[_0xda71('0x22')](_0x6eb140[_0xda71('0x1f')])+(_0x6eb140[_0xda71('0x1f')]!==_0xda71('0x25')?_0xda71('0x26'):_0xda71('0x27'))]=_0x6eb140[_0xda71('0xb')]?_0x6eb140[_0xda71('0xb')]['id']:null;logger[_0xda71('0x28')](util[_0xda71('0x11')](_0xda71('0x29'),_0x4015ea,_0x132a6a[_0xda71('0x2a')]));emitChannelQueueInteraction(_0x6eb140[_0xda71('0x1f')],_0x132a6a[_0xda71('0x2a')],_0x419f46,_0x6eb140[_0xda71('0xb')][_0xda71('0x2a')],_0x6eb140[_0xda71('0x24')]['id'],!![],_0x2ff2f3,_0x132a6a['id']);if(rpc[_0x6eb140['channel']+_0xda71('0x2b')]){return rpc[_0x6eb140[_0xda71('0x1f')]+_0xda71('0x2b')][_0xda71('0x2c')](_0x419f46)[_0xda71('0x2d')](function(_0x3c2d8d){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x57a3be,_0x35abcd,_0x393d09,_0x4107b9){if(_0x57a3be&&_0x35abcd){_0x35abcd[_0xda71('0x2e')]-=0x1;var _0x356405={'leaveAt':moment()[_0xda71('0x11')](_0xda71('0x1b')),'acceptAt':moment()[_0xda71('0x11')](_0xda71('0x1b')),'reason':_0xda71('0x2f')};logger[_0xda71('0x28')](util['format'](_0xda71('0x30'),_0x57a3be,_0x35abcd[_0xda71('0x2a')]));emitChannelQueueInteraction(_0x393d09[_0xda71('0x1f')],_0x35abcd[_0xda71('0x2a')],_0x393d09[_0xda71('0x1a')],_0x393d09[_0xda71('0xb')][_0xda71('0x2a')],_0x393d09[_0xda71('0x24')]['id'],![],_0x4107b9,_0x35abcd['id']);if(rpc[_0x393d09[_0xda71('0x1f')]+_0xda71('0x2b')]){return rpc[_0x393d09[_0xda71('0x1f')]+'QueueReport'][_0xda71('0x31')](_0x57a3be,_0x356405)[_0xda71('0x2d')](function(_0x1758b5){logger[_0xda71('0x32')]('update\x20queue\x20report');});}}}function endRouting(_0x2dd446,_0x2df748,_0x397a27,_0x3be621){if(_0x2dd446&&_0x2df748){_0x2df748[_0xda71('0x2e')]-=0x1;var _0x55b29d={'leaveAt':moment()[_0xda71('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xda71('0x11')](_0xda71('0x1b')),'reason':_0xda71('0x33')};logger[_0xda71('0x28')](util['format']('[%s][END:QUEUE][NAME:%s]',_0x2dd446,_0x2df748[_0xda71('0x2a')]));emitChannelQueueInteraction(_0x397a27[_0xda71('0x1f')],_0x2df748['name'],_0x397a27[_0xda71('0x1a')],_0x397a27['account'][_0xda71('0x2a')],_0x397a27['message']['id'],![],_0x3be621);if(rpc[_0x397a27['channel']+_0xda71('0x2b')]){return rpc[_0x397a27['channel']+_0xda71('0x2b')][_0xda71('0x31')](_0x2dd446,_0x55b29d)[_0xda71('0x2d')](function(_0x56129c){logger[_0xda71('0x32')](_0xda71('0x34'));});}}}function handleFindQueue(_0x2128ee){return function(_0x4cada8){return _0x4cada8[_0xda71('0x2a')]['toLowerCase']()===_0x2128ee[_0xda71('0x35')]();};}exports[_0xda71('0x36')]=function(_0x1bccdc,_0x3bee70,_0x4159dd,_0x55a4bb){return function(_0xabe15b){try{var _0x28d680={'name':_0x3bee70[0x0],'timeout':_0x3bee70[0x1]};var _0x5caf0a=queue[_0xda71('0x0')](_0x28d680,{'typecast':!![]});if(_0x5caf0a[_0xda71('0x37')]){logger[_0xda71('0x32')](_0xda71('0x38'),_0x1bccdc,_['map'](_0x5caf0a,_0xda71('0x24'))[_0xda71('0x39')](',\x20'));_0xabe15b['stop']();}else{var _0x5b7d81=_['find'](_0x4159dd[_0x55a4bb[_0xda71('0x1f')]+'Queues'],handleFindQueue(_0x28d680[_0xda71('0x2a')]));if(_0x5b7d81){startRouting(_0x1bccdc,_0x5b7d81,_0x55a4bb,_0x4159dd);var _0x3c7d62=(_0x5b7d81[_0xda71('0x33')]||0xa)*0x3e8;var _0x2c9d1f=(_0x28d680['timeout']||0x14)*0x3e8;var _0x38a814,_0x1d1e7e;if(_0x3c7d62>_0x2c9d1f){_0x2c9d1f=_0x3c7d62;}var _0x188490=seqqueue[_0xda71('0x3a')](_0x3c7d62);_0x188490['id']=_0x1bccdc;_0x188490[_0xda71('0x3b')]=_0x3c7d62;_0x188490[_0xda71('0x3c')]=_0x2c9d1f;_0x188490[_0xda71('0x1f')]=_0x55a4bb[_0xda71('0x1f')];_0x4159dd[_0xda71('0x3d')][_0x1bccdc]['on'](_0xda71('0x3e'),function(){logger[_0xda71('0x28')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x1bccdc);stopRouting(_0x1bccdc,_0x5b7d81,_0x55a4bb,_0x4159dd);clearTimeout(_0x38a814);_0x38a814=undefined;_0x188490[_0xda71('0x3f')](!![]);if(_0x4159dd[_0xda71('0x3d')][_0x1bccdc]){delete _0x4159dd['rules'][_0x1bccdc];}_0xabe15b[_0xda71('0x40')]();});_0x4159dd['rules'][_0x1bccdc]['on'](_0xda71('0x41'),function(){if(_0x4159dd[_0xda71('0x3d')][_0x1bccdc]){delete _0x4159dd['rules'][_0x1bccdc];}});_0x38a814=setTimeout(function(){logger[_0xda71('0x28')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x1bccdc);endRouting(_0x1bccdc,_0x5b7d81,_0x55a4bb,_0x4159dd);clearTimeout(_0x38a814);_0x188490[_0xda71('0x3f')](!![]);_0xabe15b[_0xda71('0x42')]();},_0x2c9d1f);switch(_0x5b7d81[_0xda71('0x43')]){case _0xda71('0x44'):strategy[_0xda71('0x44')](_0x188490,_0x5b7d81,_0x4159dd,_0x55a4bb);break;default:strategy[_0xda71('0x45')](_0x188490,_0x5b7d81,_0x4159dd,_0x55a4bb);}}else{logger[_0xda71('0x32')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x1bccdc,_0x28d680[_0xda71('0x2a')]);_0xabe15b[_0xda71('0x40')]();}}}catch(_0x279881){console['log'](_0x279881);logger[_0xda71('0x32')](_0xda71('0x38'),_0x1bccdc,_0x279881['stack']);_0xabe15b[_0xda71('0x40')]();}};};
\ No newline at end of file
index b395a30..813be93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c3e=['isNil','[%s][AGENT]\x20timeout\x20with\x20%s','busyQueue','lodash','../../../../../config/logger','routing','squeue','agent','realtime','push','bind','handleTimeout','timeout','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','busy','notificationId','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x1c3e,0x1bd));var _0xe1c3=function(_0x54c10d,_0x2f2251){_0x54c10d=_0x54c10d-0x0;var _0x1fa703=_0x1c3e[_0x54c10d];return _0x1fa703;};'use strict';var _=require(_0xe1c3('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xe1c3('0x1'))(_0xe1c3('0x2'));var Agent=function(_0x16304e,_0x356a8e,_0x2388db,_0x2f7325){this['notificationId']=uuid['v4']();this[_0xe1c3('0x3')]=_0x16304e;this[_0xe1c3('0x4')]=_0x356a8e;this[_0xe1c3('0x5')]=_0x2388db;this[_0xe1c3('0x2')]=_0x2f7325;this[_0xe1c3('0x3')][_0xe1c3('0x6')](this['handleRun'][_0xe1c3('0x7')](this),this[_0xe1c3('0x8')][_0xe1c3('0x7')](this));this['squeue']['on'](_0xe1c3('0x9'),this[_0xe1c3('0x8')][_0xe1c3('0x7')](this));this[_0xe1c3('0x3')]['on']('drained',this[_0xe1c3('0xa')]['bind'](this));};Agent[_0xe1c3('0xb')][_0xe1c3('0x6')]=function(){this[_0xe1c3('0x3')]['push'](this['handleRun']['bind'](this),this[_0xe1c3('0x8')]['bind'](this));};Agent['prototype'][_0xe1c3('0xa')]=function(){this[_0xe1c3('0x8')](!![]);};Agent[_0xe1c3('0xb')]['handleRun']=function(_0x38fa39){logger[_0xe1c3('0xc')](_0xe1c3('0xd'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);if(_['isNil'](this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']])){logger[_0xe1c3('0xc')](_0xe1c3('0xf'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);setTimeout(this[_0xe1c3('0x6')][_0xe1c3('0x7')](this),0x3e8);}else{if(this[_0xe1c3('0x2')][_0xe1c3('0x10')]||util['isAgentAvailable'](this[_0xe1c3('0x3')]['id'],this['realtime']['agents'][this[_0xe1c3('0x4')]['id']],this[_0xe1c3('0x3')]['channel'],![])){this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']][_0xe1c3('0x11')]=!![];this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0xe1c3('0x12')],this['squeue']['id'],this['realtime'][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],null,this['routing']);util[_0xe1c3('0x13')](this['squeue']['id'],this[_0xe1c3('0x5')]['agents'][this['agent']['id']],_0xe1c3('0x14')+(this[_0xe1c3('0x2')]['forcedOwnership']?_0xe1c3('0x15'):''));}else{logger[_0xe1c3('0xc')](_0xe1c3('0x16'),this[_0xe1c3('0x3')]['id'],this['agent']['id']);setTimeout(this[_0xe1c3('0x6')][_0xe1c3('0x7')](this),0x3e8);}}};Agent[_0xe1c3('0xb')][_0xe1c3('0x8')]=function(_0x3e2f0d){if(_[_0xe1c3('0x17')](this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']])){return logger['info'](_0xe1c3('0xf'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);}else{logger[_0xe1c3('0xc')](_0xe1c3('0x18'),this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x4')]['id']);util['hideNotification'](this[_0xe1c3('0x12')],this[_0xe1c3('0x3')]['id'],this['realtime'][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],null,this[_0xe1c3('0x2')]);this[_0xe1c3('0x5')][_0xe1c3('0xe')][this['agent']['id']]['busy']=![];this[_0xe1c3('0x5')]['agents'][this[_0xe1c3('0x4')]['id']][_0xe1c3('0x19')]=undefined;util[_0xe1c3('0x13')](this[_0xe1c3('0x3')]['id'],this[_0xe1c3('0x5')][_0xe1c3('0xe')][this[_0xe1c3('0x4')]['id']],_0x3e2f0d?'STOP':'TIMEOUT');}if(!_0x3e2f0d){setTimeout(this[_0xe1c3('0x6')]['bind'](this),0x3e8);}};function agent(_0x31a3e1,_0x49c29e,_0x549f51,_0x4a688e){return new Agent(_0x31a3e1,_0x49c29e,_0x549f51,_0x4a688e);}module['exports']=agent;
\ No newline at end of file
+var _0xadfd=['routing','notificationId','squeue','agent','realtime','push','handleRun','handleTimeout','bind','timeout','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busy','showNotification',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','busyQueue','writeLog','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger'];(function(_0x199690,_0x20d9be){var _0x584e8d=function(_0x2ad94a){while(--_0x2ad94a){_0x199690['push'](_0x199690['shift']());}};_0x584e8d(++_0x20d9be);}(_0xadfd,0xfc));var _0xdadf=function(_0x58cf3c,_0x5b188c){_0x58cf3c=_0x58cf3c-0x0;var _0x5057ad=_0xadfd[_0x58cf3c];return _0x5057ad;};'use strict';var _=require(_0xdadf('0x0'));var uuid=require(_0xdadf('0x1'));var util=require(_0xdadf('0x2'));var logger=require(_0xdadf('0x3'))(_0xdadf('0x4'));var Agent=function(_0x690db9,_0x252c8c,_0x2cae1e,_0x46a31f){this[_0xdadf('0x5')]=uuid['v4']();this[_0xdadf('0x6')]=_0x690db9;this[_0xdadf('0x7')]=_0x252c8c;this[_0xdadf('0x8')]=_0x2cae1e;this[_0xdadf('0x4')]=_0x46a31f;this[_0xdadf('0x6')][_0xdadf('0x9')](this[_0xdadf('0xa')]['bind'](this),this[_0xdadf('0xb')][_0xdadf('0xc')](this));this[_0xdadf('0x6')]['on'](_0xdadf('0xd'),this[_0xdadf('0xb')][_0xdadf('0xc')](this));this[_0xdadf('0x6')]['on']('drained',this['handleDrained'][_0xdadf('0xc')](this));};Agent['prototype'][_0xdadf('0x9')]=function(){this['squeue']['push'](this[_0xdadf('0xa')][_0xdadf('0xc')](this),this['handleTimeout'][_0xdadf('0xc')](this));};Agent[_0xdadf('0xe')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0xdadf('0xe')][_0xdadf('0xa')]=function(_0x51742c){logger[_0xdadf('0xf')](_0xdadf('0x10'),this['squeue']['id'],this[_0xdadf('0x7')]['id']);if(_[_0xdadf('0x11')](this[_0xdadf('0x8')][_0xdadf('0x12')][this[_0xdadf('0x7')]['id']])){logger[_0xdadf('0xf')](_0xdadf('0x13'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0xdadf('0x9')][_0xdadf('0xc')](this),0x3e8);}else{if(this[_0xdadf('0x4')][_0xdadf('0x14')]||util[_0xdadf('0x15')](this[_0xdadf('0x6')]['id'],this[_0xdadf('0x8')][_0xdadf('0x12')][this[_0xdadf('0x7')]['id']],this[_0xdadf('0x6')]['channel'],![])){this[_0xdadf('0x8')]['agents'][this[_0xdadf('0x7')]['id']][_0xdadf('0x16')]=!![];this[_0xdadf('0x8')]['agents'][this[_0xdadf('0x7')]['id']]['busyQueue']=undefined;util[_0xdadf('0x17')](this[_0xdadf('0x5')],this[_0xdadf('0x6')]['id'],this[_0xdadf('0x8')][_0xdadf('0x12')][this[_0xdadf('0x7')]['id']],null,this[_0xdadf('0x4')]);util['writeLog'](this['squeue']['id'],this['realtime']['agents'][this['agent']['id']],'RINGING'+(this['routing'][_0xdadf('0x14')]?_0xdadf('0x18'):''));}else{logger[_0xdadf('0xf')](_0xdadf('0x19'),this[_0xdadf('0x6')]['id'],this[_0xdadf('0x7')]['id']);setTimeout(this[_0xdadf('0x9')][_0xdadf('0xc')](this),0x3e8);}}};Agent['prototype'][_0xdadf('0xb')]=function(_0x9a3321){if(_[_0xdadf('0x11')](this[_0xdadf('0x8')]['agents'][this[_0xdadf('0x7')]['id']])){return logger[_0xdadf('0xf')](_0xdadf('0x13'),this['squeue']['id'],this[_0xdadf('0x7')]['id']);}else{logger[_0xdadf('0xf')](_0xdadf('0x1a'),this[_0xdadf('0x6')]['id'],this[_0xdadf('0x7')]['id']);util['hideNotification'](this[_0xdadf('0x5')],this['squeue']['id'],this[_0xdadf('0x8')][_0xdadf('0x12')][this[_0xdadf('0x7')]['id']],null,this[_0xdadf('0x4')]);this[_0xdadf('0x8')][_0xdadf('0x12')][this[_0xdadf('0x7')]['id']][_0xdadf('0x16')]=![];this[_0xdadf('0x8')]['agents'][this[_0xdadf('0x7')]['id']][_0xdadf('0x1b')]=undefined;util[_0xdadf('0x1c')](this['squeue']['id'],this[_0xdadf('0x8')][_0xdadf('0x12')][this['agent']['id']],_0x9a3321?_0xdadf('0x1d'):_0xdadf('0x1e'));}if(!_0x9a3321){setTimeout(this[_0xdadf('0x9')]['bind'](this),0x3e8);}};function agent(_0x4d6b14,_0x2e7665,_0x5647d5,_0x1f1330){return new Agent(_0x4d6b14,_0x2e7665,_0x5647d5,_0x1f1330);}module[_0xdadf('0x1f')]=agent;
\ No newline at end of file
index d372eac..83b44f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d9=['handleDrained','prototype','push','isNil','Agents','queue','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','writeLog','STOP','TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','handleRun','handleTimeout','timeout','bind','drained'];(function(_0x1f4c0f,_0x3bce06){var _0x354d43=function(_0x5718b3){while(--_0x5718b3){_0x1f4c0f['push'](_0x1f4c0f['shift']());}};_0x354d43(++_0x3bce06);}(_0xf4d9,0x7c));var _0x9f4d=function(_0x26a481,_0x4252a3){_0x26a481=_0x26a481-0x0;var _0x3bff9a=_0xf4d9[_0x26a481];return _0x3bff9a;};'use strict';var _=require(_0x9f4d('0x0'));var uuid=require('uuid');var util=require(_0x9f4d('0x1'));var logger=require(_0x9f4d('0x2'))(_0x9f4d('0x3'));var Beepall=function(_0x41bd00,_0x22339e,_0x47aa76,_0x179d90){this[_0x9f4d('0x4')]=uuid['v4']();this[_0x9f4d('0x5')]=_0x41bd00;this['queue']=_0x22339e;this[_0x9f4d('0x6')]=_0x47aa76;this[_0x9f4d('0x3')]=_0x179d90;this[_0x9f4d('0x5')]['push'](this[_0x9f4d('0x7')]['bind'](this),this[_0x9f4d('0x8')]['bind'](this));this[_0x9f4d('0x5')]['on'](_0x9f4d('0x9'),this[_0x9f4d('0x8')][_0x9f4d('0xa')](this));this['squeue']['on'](_0x9f4d('0xb'),this[_0x9f4d('0xc')][_0x9f4d('0xa')](this));};Beepall[_0x9f4d('0xd')][_0x9f4d('0xe')]=function(){this[_0x9f4d('0x5')][_0x9f4d('0xe')](this[_0x9f4d('0x7')][_0x9f4d('0xa')](this),this[_0x9f4d('0x8')][_0x9f4d('0xa')](this));};Beepall['prototype'][_0x9f4d('0xc')]=function(_0x426157){this[_0x9f4d('0x8')](!![]);};Beepall['prototype'][_0x9f4d('0x7')]=function(_0x20f444){var _0x192ad3=!![];if(!_[_0x9f4d('0xf')](this['queue'])&&!_['isNil'](this['queue'][_0x9f4d('0x10')])&&this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x9f4d('0x12')]>0x0){for(var _0x214195=0x0,_0x385787;_0x214195<this['queue'][_0x9f4d('0x10')][_0x9f4d('0x12')];_0x214195+=0x1){_0x385787=this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x214195]['id'];if(_[_0x9f4d('0xf')](this['realtime'][_0x9f4d('0x13')][_0x385787])){logger[_0x9f4d('0x14')](_0x9f4d('0x15'),this[_0x9f4d('0x5')]['id'],_0x385787);}else{if(util[_0x9f4d('0x16')](this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],this[_0x9f4d('0x5')][_0x9f4d('0x17')],!![])){_0x192ad3=![];util['writeLog'](this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],'RINGING');this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787][_0x9f4d('0x18')]=!![];this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787][_0x9f4d('0x19')]=this[_0x9f4d('0x11')][_0x9f4d('0x1a')];util[_0x9f4d('0x1b')](this[_0x9f4d('0x4')],this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x385787],this['queue'],this[_0x9f4d('0x3')]);}}}if(_0x192ad3){logger[_0x9f4d('0x14')](_0x9f4d('0x1c'),this[_0x9f4d('0x5')]['id']);setTimeout(this[_0x9f4d('0xe')][_0x9f4d('0xa')](this),0x3e8);}}else{logger[_0x9f4d('0x14')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x9f4d('0xe')]['bind'](this),0x3e8);}};Beepall[_0x9f4d('0xd')]['handleTimeout']=function(_0x1f0928){if(!_[_0x9f4d('0xf')](this[_0x9f4d('0x11')])&&!_['isNil'](this[_0x9f4d('0x11')]['Agents'])){for(var _0x8ead0b=0x0,_0x4d66e7;_0x8ead0b<this['queue'][_0x9f4d('0x10')][_0x9f4d('0x12')];_0x8ead0b+=0x1){_0x4d66e7=this[_0x9f4d('0x11')][_0x9f4d('0x10')][_0x8ead0b]['id'];if(_[_0x9f4d('0xf')](this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7])){logger['info'](_0x9f4d('0x15'),this[_0x9f4d('0x5')]['id'],_0x4d66e7);}else{util[_0x9f4d('0x1d')](this[_0x9f4d('0x4')],this[_0x9f4d('0x5')]['id'],this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7],this['queue'],this[_0x9f4d('0x3')]);util[_0x9f4d('0x1e')](this[_0x9f4d('0x5')]['id'],this['realtime'][_0x9f4d('0x13')][_0x4d66e7],_0x1f0928?_0x9f4d('0x1f'):_0x9f4d('0x20'));this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7][_0x9f4d('0x18')]=![];this[_0x9f4d('0x6')][_0x9f4d('0x13')][_0x4d66e7][_0x9f4d('0x19')]=undefined;}}}if(!_0x1f0928){setTimeout(this[_0x9f4d('0xe')][_0x9f4d('0xa')](this),0x3e8);}};function beepall(_0x56c742,_0x2bc3b5,_0x32eefe,_0xe7efa3){return new Beepall(_0x56c742,_0x2bc3b5,_0x32eefe,_0xe7efa3);}module[_0x9f4d('0x21')]=beepall;
\ No newline at end of file
+var _0xf873=['handleRun','bind','handleTimeout','squeue','drained','handleDrained','prototype','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','uuid','./util','../../../../../config/logger','routing','notificationId','queue','realtime','push'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xf873,0xb2));var _0x3f87=function(_0x523957,_0x2887d1){_0x523957=_0x523957-0x0;var _0x3bd33d=_0xf873[_0x523957];return _0x3bd33d;};'use strict';var _=require('lodash');var uuid=require(_0x3f87('0x0'));var util=require(_0x3f87('0x1'));var logger=require(_0x3f87('0x2'))(_0x3f87('0x3'));var Beepall=function(_0x1c56a3,_0xd4592c,_0x2fbb4f,_0x1d68dd){this[_0x3f87('0x4')]=uuid['v4']();this['squeue']=_0x1c56a3;this[_0x3f87('0x5')]=_0xd4592c;this[_0x3f87('0x6')]=_0x2fbb4f;this[_0x3f87('0x3')]=_0x1d68dd;this['squeue'][_0x3f87('0x7')](this[_0x3f87('0x8')][_0x3f87('0x9')](this),this[_0x3f87('0xa')][_0x3f87('0x9')](this));this[_0x3f87('0xb')]['on']('timeout',this[_0x3f87('0xa')][_0x3f87('0x9')](this));this[_0x3f87('0xb')]['on'](_0x3f87('0xc'),this[_0x3f87('0xd')][_0x3f87('0x9')](this));};Beepall[_0x3f87('0xe')][_0x3f87('0x7')]=function(){this[_0x3f87('0xb')][_0x3f87('0x7')](this[_0x3f87('0x8')][_0x3f87('0x9')](this),this[_0x3f87('0xa')][_0x3f87('0x9')](this));};Beepall['prototype'][_0x3f87('0xd')]=function(_0x1da47f){this['handleTimeout'](!![]);};Beepall[_0x3f87('0xe')][_0x3f87('0x8')]=function(_0xabd141){var _0x28cb47=!![];if(!_[_0x3f87('0xf')](this[_0x3f87('0x5')])&&!_[_0x3f87('0xf')](this[_0x3f87('0x5')]['Agents'])&&this[_0x3f87('0x5')][_0x3f87('0x10')][_0x3f87('0x11')]>0x0){for(var _0x4e1df8=0x0,_0x3c6fbe;_0x4e1df8<this['queue'][_0x3f87('0x10')][_0x3f87('0x11')];_0x4e1df8+=0x1){_0x3c6fbe=this[_0x3f87('0x5')][_0x3f87('0x10')][_0x4e1df8]['id'];if(_[_0x3f87('0xf')](this['realtime'][_0x3f87('0x12')][_0x3c6fbe])){logger[_0x3f87('0x13')](_0x3f87('0x14'),this[_0x3f87('0xb')]['id'],_0x3c6fbe);}else{if(util['isAgentAvailable'](this['squeue']['id'],this['realtime'][_0x3f87('0x12')][_0x3c6fbe],this[_0x3f87('0xb')][_0x3f87('0x15')],!![])){_0x28cb47=![];util['writeLog'](this[_0x3f87('0xb')]['id'],this[_0x3f87('0x6')][_0x3f87('0x12')][_0x3c6fbe],_0x3f87('0x16'));this[_0x3f87('0x6')][_0x3f87('0x12')][_0x3c6fbe][_0x3f87('0x17')]=!![];this[_0x3f87('0x6')][_0x3f87('0x12')][_0x3c6fbe][_0x3f87('0x18')]=this[_0x3f87('0x5')][_0x3f87('0x19')];util['showNotification'](this[_0x3f87('0x4')],this[_0x3f87('0xb')]['id'],this[_0x3f87('0x6')]['agents'][_0x3c6fbe],this['queue'],this[_0x3f87('0x3')]);}}}if(_0x28cb47){logger[_0x3f87('0x13')](_0x3f87('0x1a'),this[_0x3f87('0xb')]['id']);setTimeout(this[_0x3f87('0x7')][_0x3f87('0x9')](this),0x3e8);}}else{logger[_0x3f87('0x13')](_0x3f87('0x1b'),this[_0x3f87('0xb')]['id']);setTimeout(this[_0x3f87('0x7')][_0x3f87('0x9')](this),0x3e8);}};Beepall[_0x3f87('0xe')][_0x3f87('0xa')]=function(_0x241d88){if(!_[_0x3f87('0xf')](this[_0x3f87('0x5')])&&!_['isNil'](this[_0x3f87('0x5')][_0x3f87('0x10')])){for(var _0x2546d2=0x0,_0x2f0f05;_0x2546d2<this['queue']['Agents']['length'];_0x2546d2+=0x1){_0x2f0f05=this[_0x3f87('0x5')][_0x3f87('0x10')][_0x2546d2]['id'];if(_[_0x3f87('0xf')](this[_0x3f87('0x6')][_0x3f87('0x12')][_0x2f0f05])){logger['info'](_0x3f87('0x14'),this['squeue']['id'],_0x2f0f05);}else{util[_0x3f87('0x1c')](this[_0x3f87('0x4')],this[_0x3f87('0xb')]['id'],this[_0x3f87('0x6')][_0x3f87('0x12')][_0x2f0f05],this[_0x3f87('0x5')],this[_0x3f87('0x3')]);util['writeLog'](this['squeue']['id'],this[_0x3f87('0x6')][_0x3f87('0x12')][_0x2f0f05],_0x241d88?_0x3f87('0x1d'):_0x3f87('0x1e'));this[_0x3f87('0x6')][_0x3f87('0x12')][_0x2f0f05][_0x3f87('0x17')]=![];this['realtime'][_0x3f87('0x12')][_0x2f0f05]['busyQueue']=undefined;}}}if(!_0x241d88){setTimeout(this[_0x3f87('0x7')][_0x3f87('0x9')](this),0x3e8);}};function beepall(_0x75be4b,_0x2d8399,_0x51a33d,_0x3bc7f6){return new Beepall(_0x75be4b,_0x2d8399,_0x51a33d,_0x3bc7f6);}module['exports']=beepall;
\ No newline at end of file
index 7461b5f..c8db5c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda95=['./beepall','./agent','exports'];(function(_0x11ba33,_0xc8f8d){var _0x49f898=function(_0x222d34){while(--_0x222d34){_0x11ba33['push'](_0x11ba33['shift']());}};_0x49f898(++_0xc8f8d);}(_0xda95,0x161));var _0x5da9=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0xda95[_0x57486e];return _0x5f110b;};'use strict';module[_0x5da9('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x5da9('0x1')),'agent':require(_0x5da9('0x2'))};
\ No newline at end of file
+var _0x5bb5=['./agent','exports','./rrmemory','./beepall'];(function(_0x2192d2,_0x2301d2){var _0x361ecd=function(_0x423049){while(--_0x423049){_0x2192d2['push'](_0x2192d2['shift']());}};_0x361ecd(++_0x2301d2);}(_0x5bb5,0xa9));var _0x55bb=function(_0x377aff,_0x41c907){_0x377aff=_0x377aff-0x0;var _0x354973=_0x5bb5[_0x377aff];return _0x354973;};'use strict';module[_0x55bb('0x0')]={'rrmemory':require(_0x55bb('0x1')),'beepall':require(_0x55bb('0x2')),'agent':require(_0x55bb('0x3'))};
\ No newline at end of file
index dd1c3a0..feff20f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x707b=['handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','showNotification','writeLog','RINGING','done','isNil','hideNotification','TIMEOUT','busy','busyQueue','lodash','./util','routing','notificationId','queue','realtime','intervals','squeue','push','handleRun','bind','handleTimeout','module','timeout','drained'];(function(_0x5685b3,_0x2f3adb){var _0x381680=function(_0x411cd2){while(--_0x411cd2){_0x5685b3['push'](_0x5685b3['shift']());}};_0x381680(++_0x2f3adb);}(_0x707b,0x135));var _0xb707=function(_0x333bb9,_0x334274){_0x333bb9=_0x333bb9-0x0;var _0xfa004a=_0x707b[_0x333bb9];return _0xfa004a;};'use strict';var rr=require('rr');var _=require(_0xb707('0x0'));var uuid=require('uuid');var util=require(_0xb707('0x1'));var logger=require('../../../../../config/logger')(_0xb707('0x2'));var RRMemory=function(_0x4ac0cd,_0x29a935,_0x5720fb,_0x25b351){this[_0xb707('0x3')]=uuid['v4']();this['squeue']=_0x4ac0cd;this[_0xb707('0x4')]=_0x29a935;this[_0xb707('0x5')]=_0x5720fb;this[_0xb707('0x2')]=_0x25b351;this[_0xb707('0x6')]={};this[_0xb707('0x7')][_0xb707('0x8')](this[_0xb707('0x9')][_0xb707('0xa')](this),this[_0xb707('0xb')]['bind'](this),this[_0xb707('0xc')]);this[_0xb707('0x7')]['on'](_0xb707('0xd'),this[_0xb707('0xb')][_0xb707('0xa')](this));this[_0xb707('0x7')]['on'](_0xb707('0xe'),this[_0xb707('0xf')][_0xb707('0xa')](this));};RRMemory[_0xb707('0x10')][_0xb707('0x8')]=function(){this[_0xb707('0x7')][_0xb707('0x8')](this[_0xb707('0x9')][_0xb707('0xa')](this),this[_0xb707('0xb')][_0xb707('0xa')](this));};RRMemory[_0xb707('0x10')]['handleDrained']=function(_0x2d6745){this['handleTimeout'](!![]);};RRMemory[_0xb707('0x10')][_0xb707('0x11')]=function(_0x29a546){if(util[_0xb707('0x12')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]],this[_0xb707('0x7')][_0xb707('0x14')],!![])){logger[_0xb707('0x15')](_0xb707('0x16'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);clearInterval(this['intervals'][this['agentId']]);_0x29a546['done']();setTimeout(this[_0xb707('0x8')][_0xb707('0xa')](this),0x3e8);}};RRMemory['prototype'][_0xb707('0x9')]=function(_0x42e3d2){this[_0xb707('0x13')]=rr(this[_0xb707('0x4')][_0xb707('0x17')]);logger[_0xb707('0x15')](_0xb707('0x18'),this['squeue']['id'],this[_0xb707('0x13')]);if(_['isNil'](this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]])){logger['info'](_0xb707('0x1a'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);_0x42e3d2['done']();setTimeout(this[_0xb707('0x8')]['bind'](this),0x3e8);}else{if(util[_0xb707('0x12')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')][_0xb707('0x19')][this['agentId']],this[_0xb707('0x7')][_0xb707('0x14')],!![])){this[_0xb707('0x5')]['agents'][this['agentId']]['busy']=!![];this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]]['busyQueue']=this[_0xb707('0x4')]['name'];util[_0xb707('0x1b')](this[_0xb707('0x3')],this['squeue']['id'],this[_0xb707('0x5')]['agents'][this['agentId']],this[_0xb707('0x4')],this['routing']);util[_0xb707('0x1c')](this[_0xb707('0x7')]['id'],this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]],_0xb707('0x1d'));this[_0xb707('0x6')][this['agentId']]=setInterval(this[_0xb707('0x11')]['bind'](this,_0x42e3d2),0x3e8);}else{logger[_0xb707('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);_0x42e3d2[_0xb707('0x1e')]();setTimeout(this[_0xb707('0x8')][_0xb707('0xa')](this),0x3e8);}}};RRMemory[_0xb707('0x10')][_0xb707('0xb')]=function(_0x92cdd6){logger[_0xb707('0x15')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);if(_[_0xb707('0x1f')](this['realtime']['agents'][this['agentId']])){logger[_0xb707('0x15')](_0xb707('0x1a'),this[_0xb707('0x7')]['id'],this[_0xb707('0x13')]);}else{clearInterval(this['intervals'][this[_0xb707('0x13')]]);util[_0xb707('0x20')](this[_0xb707('0x3')],this[_0xb707('0x7')]['id'],this['realtime']['agents'][this[_0xb707('0x13')]],this['queue'],this[_0xb707('0x2')]);util[_0xb707('0x1c')](this['squeue']['id'],this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]],_0xb707('0x21'));this[_0xb707('0x5')][_0xb707('0x19')][this[_0xb707('0x13')]][_0xb707('0x22')]=![];this[_0xb707('0x5')]['agents'][this[_0xb707('0x13')]][_0xb707('0x23')]=undefined;}if(!_0x92cdd6){setTimeout(this[_0xb707('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0x1970cd,_0x4a160b,_0x387c1e,_0xc46cb9){return new RRMemory(_0x1970cd,_0x4a160b,_0x387c1e,_0xc46cb9);}module['exports']=rrmemory;
\ No newline at end of file
+var _0xf251=['bind','handleTimeout','timeout','drained','prototype','handleDrained','handleCheckReject','agents','channel','info','agentId','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','busy','busyQueue','name','showNotification','writeLog','RINGING','intervals','[%s][QUEUE]\x20timeout\x20with\x20%s','TIMEOUT','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','push','handleRun'];(function(_0x1fd3c4,_0x30d6b8){var _0x15055a=function(_0xf7d96a){while(--_0xf7d96a){_0x1fd3c4['push'](_0x1fd3c4['shift']());}};_0x15055a(++_0x30d6b8);}(_0xf251,0x1d7));var _0x1f25=function(_0x1c08f6,_0x14c077){_0x1c08f6=_0x1c08f6-0x0;var _0xbc156a=_0xf251[_0x1c08f6];return _0xbc156a;};'use strict';var rr=require('rr');var _=require(_0x1f25('0x0'));var uuid=require(_0x1f25('0x1'));var util=require(_0x1f25('0x2'));var logger=require('../../../../../config/logger')(_0x1f25('0x3'));var RRMemory=function(_0x1d511a,_0x280860,_0x117a9d,_0x4907c1){this[_0x1f25('0x4')]=uuid['v4']();this[_0x1f25('0x5')]=_0x1d511a;this[_0x1f25('0x6')]=_0x280860;this[_0x1f25('0x7')]=_0x117a9d;this[_0x1f25('0x3')]=_0x4907c1;this['intervals']={};this[_0x1f25('0x5')][_0x1f25('0x8')](this[_0x1f25('0x9')][_0x1f25('0xa')](this),this[_0x1f25('0xb')]['bind'](this),this['module']);this['squeue']['on'](_0x1f25('0xc'),this[_0x1f25('0xb')][_0x1f25('0xa')](this));this[_0x1f25('0x5')]['on'](_0x1f25('0xd'),this['handleDrained'][_0x1f25('0xa')](this));};RRMemory[_0x1f25('0xe')][_0x1f25('0x8')]=function(){this[_0x1f25('0x5')][_0x1f25('0x8')](this[_0x1f25('0x9')][_0x1f25('0xa')](this),this[_0x1f25('0xb')][_0x1f25('0xa')](this));};RRMemory['prototype'][_0x1f25('0xf')]=function(_0x33d11c){this['handleTimeout'](!![]);};RRMemory[_0x1f25('0xe')][_0x1f25('0x10')]=function(_0x1abfe5){if(util['isAgentAvailable'](this[_0x1f25('0x5')]['id'],this[_0x1f25('0x7')][_0x1f25('0x11')][this['agentId']],this[_0x1f25('0x5')][_0x1f25('0x12')],!![])){logger[_0x1f25('0x13')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x1f25('0x5')]['id'],this[_0x1f25('0x14')]);clearInterval(this['intervals'][this[_0x1f25('0x14')]]);_0x1abfe5[_0x1f25('0x15')]();setTimeout(this[_0x1f25('0x8')][_0x1f25('0xa')](this),0x3e8);}};RRMemory[_0x1f25('0xe')][_0x1f25('0x9')]=function(_0x374267){this[_0x1f25('0x14')]=rr(this[_0x1f25('0x6')][_0x1f25('0x16')]);logger[_0x1f25('0x13')](_0x1f25('0x17'),this['squeue']['id'],this[_0x1f25('0x14')]);if(_[_0x1f25('0x18')](this[_0x1f25('0x7')]['agents'][this[_0x1f25('0x14')]])){logger[_0x1f25('0x13')](_0x1f25('0x19'),this[_0x1f25('0x5')]['id'],this[_0x1f25('0x14')]);_0x374267[_0x1f25('0x15')]();setTimeout(this[_0x1f25('0x8')][_0x1f25('0xa')](this),0x3e8);}else{if(util[_0x1f25('0x1a')](this[_0x1f25('0x5')]['id'],this[_0x1f25('0x7')][_0x1f25('0x11')][this[_0x1f25('0x14')]],this[_0x1f25('0x5')][_0x1f25('0x12')],!![])){this['realtime']['agents'][this[_0x1f25('0x14')]][_0x1f25('0x1b')]=!![];this['realtime'][_0x1f25('0x11')][this[_0x1f25('0x14')]][_0x1f25('0x1c')]=this['queue'][_0x1f25('0x1d')];util[_0x1f25('0x1e')](this['notificationId'],this[_0x1f25('0x5')]['id'],this[_0x1f25('0x7')][_0x1f25('0x11')][this[_0x1f25('0x14')]],this[_0x1f25('0x6')],this[_0x1f25('0x3')]);util[_0x1f25('0x1f')](this[_0x1f25('0x5')]['id'],this[_0x1f25('0x7')][_0x1f25('0x11')][this['agentId']],_0x1f25('0x20'));this[_0x1f25('0x21')][this[_0x1f25('0x14')]]=setInterval(this[_0x1f25('0x10')]['bind'](this,_0x374267),0x3e8);}else{logger[_0x1f25('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x1f25('0x5')]['id'],this[_0x1f25('0x14')]);_0x374267[_0x1f25('0x15')]();setTimeout(this[_0x1f25('0x8')]['bind'](this),0x3e8);}}};RRMemory[_0x1f25('0xe')][_0x1f25('0xb')]=function(_0x1c0ac9){logger['info'](_0x1f25('0x22'),this[_0x1f25('0x5')]['id'],this[_0x1f25('0x14')]);if(_[_0x1f25('0x18')](this[_0x1f25('0x7')][_0x1f25('0x11')][this[_0x1f25('0x14')]])){logger[_0x1f25('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x1f25('0x14')]);}else{clearInterval(this[_0x1f25('0x21')][this[_0x1f25('0x14')]]);util['hideNotification'](this[_0x1f25('0x4')],this['squeue']['id'],this[_0x1f25('0x7')]['agents'][this[_0x1f25('0x14')]],this[_0x1f25('0x6')],this[_0x1f25('0x3')]);util[_0x1f25('0x1f')](this['squeue']['id'],this[_0x1f25('0x7')][_0x1f25('0x11')][this[_0x1f25('0x14')]],_0x1f25('0x23'));this['realtime']['agents'][this[_0x1f25('0x14')]][_0x1f25('0x1b')]=![];this[_0x1f25('0x7')][_0x1f25('0x11')][this[_0x1f25('0x14')]][_0x1f25('0x1c')]=undefined;}if(!_0x1c0ac9){setTimeout(this[_0x1f25('0x8')][_0x1f25('0xa')](this),0x3e8);}};function rrmemory(_0x49c189,_0x3b8b1a,_0xaa1695,_0x5d6d64){return new RRMemory(_0x49c189,_0x3b8b1a,_0xaa1695,_0x5d6d64);}module[_0x1f25('0x24')]=rrmemory;
\ No newline at end of file
index 19d7e13..c6e592b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['notificationSound','account','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','format','message','user:%s','save','remove','info','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','routing','redis','socket.io-emitter','emit','name','user:save','split','\x20interaction'];(function(_0x26b372,_0x56f1fc){var _0x90ef34=function(_0x211c99){while(--_0x211c99){_0x26b372['push'](_0x26b372['shift']());}};_0x90ef34(++_0x56f1fc);}(_0x627e,0x14a));var _0xe627=function(_0x122261,_0x13eb33){_0x122261=_0x122261-0x0;var _0x2e96b4=_0x627e[_0x122261];return _0x2e96b4;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var utils=require(_0xe627('0x2'));var Mustache=require(_0xe627('0x3'));var Redis=require(_0xe627('0x4'));var config=require('../../../../../config/environment');var logger=require(_0xe627('0x5'))(_0xe627('0x6'));config[_0xe627('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe627('0x8'))(new Redis(config[_0xe627('0x7')]));function emit(_0x45e49a,_0x2d4f63,_0xd5016e){io['to'](_0x45e49a)[_0xe627('0x9')](_0x2d4f63,_0xd5016e);}function sendNotification(_0x4bae52,_0x3f2948,_0x4c9bf9,_0x56549e,_0x4411c0,_0x952c23){io['to'](util['format']('user:%s',_0x56549e[_0xe627('0xa')]))[_0xe627('0x9')](_0xe627('0xb'),_0x56549e);var _0x4543f5=_0x952c23||{};var _0x3d3c22=_0x4c9bf9[_0xe627('0xc')]('.');var _0x24261d={'uniqueid':_0x3f2948,'channel':_0x3d3c22[0x0],'id':_0x3d3c22[0x1],'title':_0x3d3c22[0x0]+_0xe627('0xd'),'interactionId':_0x3d3c22[0x2],'queue':_0x4411c0?_0x4411c0[_0xe627('0xa')]:null,'sound':_0x4543f5['account'][_0xe627('0xe')],'shake':_0x4543f5[_0xe627('0xf')][_0xe627('0x10')]};try{if(!_0x4543f5['body']){_0x4543f5[_0xe627('0x11')]={};}if(_0x4411c0){_0x4543f5[_0xe627('0x11')][_0xe627('0x12')]=_0x4411c0;}else if(_0x4543f5[_0xe627('0x11')][_0xe627('0x12')]){delete _0x4543f5[_0xe627('0x11')][_0xe627('0x12')];}_0x24261d['msg']=utils[_0xe627('0x13')](_0x4543f5[_0xe627('0xf')][_0xe627('0x14')],_0x4543f5);}catch(_0x76fac){_0x24261d[_0xe627('0x15')]=_0xe627('0x16');logger[_0xe627('0x17')](util[_0xe627('0x18')]('[%s][QUEUE]\x20%s',_0x3f2948,_0x76fac[_0xe627('0x19')]));}io['to'](util['format'](_0xe627('0x1a'),_0x56549e['name']))['emit'](util[_0xe627('0x18')]('notification:%s',_0x4bae52?_0xe627('0x1b'):_0xe627('0x1c')),_0x24261d);}function writeLog(_0x4adde7,_0x4c9b97,_0x4ecfa6){return logger[_0xe627('0x1d')](util[_0xe627('0x18')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x4adde7,_0x4c9b97[_0xe627('0xa')],_0x4ecfa6));}exports[_0xe627('0x1e')]=function(_0x4873e6,_0x44861b,_0x29221b,_0x52d492){if(_0x44861b[_0xe627('0x1f')]){writeLog(_0x4873e6,_0x44861b,_0xe627('0x20'));return![];}if(!_0x44861b[_0xe627('0x21')]){writeLog(_0x4873e6,_0x44861b,'OFFLINE');return![];}if(_0x44861b[_0x29221b+_0xe627('0x22')]){writeLog(_0x4873e6,_0x44861b,_0xe627('0x23'));return![];}if(_0x52d492&&_0x44861b[_0xe627('0x24')](_0x29221b+_0xe627('0x25'))&&_0x44861b['hasOwnProperty'](_0x29221b+_0xe627('0x26'))){if(_0x44861b[_0x29221b+_0xe627('0x25')]>0x0&&_0x44861b[_0x29221b+_0xe627('0x26')]>=_0x44861b[_0x29221b+_0xe627('0x25')]){writeLog(_0x4873e6,_0x44861b,_0x29221b[_0xe627('0x27')]()+_0xe627('0x28'));return![];}}return!![];};exports[_0xe627('0x29')]=function(_0x44c9f7,_0x3e9eda,_0x58c728,_0x5ad327,_0x5aeba1){return sendNotification(!![],_0x44c9f7,_0x3e9eda,_0x58c728,_0x5ad327,_0x5aeba1);};exports['hideNotification']=function(_0x1e0bd7,_0xdf63c8,_0x5799a3,_0x39c23f,_0x54029d){return sendNotification(![],_0x1e0bd7,_0xdf63c8,_0x5799a3,_0x39c23f,_0x54029d);};exports[_0xe627('0x2a')]=writeLog;
\ No newline at end of file
+var _0x5d58=['Pause','PAUSE','hasOwnProperty','Capacity','toUpperCase','\x20MAXCAPACITY','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','user:save','split','\x20interaction','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','format','[%s][QUEUE]\x20%s','message','user:%s','name','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','OFFLINE'];(function(_0x2cf639,_0x29715a){var _0x53e5a1=function(_0x1a0e89){while(--_0x1a0e89){_0x2cf639['push'](_0x2cf639['shift']());}};_0x53e5a1(++_0x29715a);}(_0x5d58,0x187));var _0x85d5=function(_0x5636bd,_0x1a901a){_0x5636bd=_0x5636bd-0x0;var _0x208251=_0x5d58[_0x5636bd];return _0x208251;};'use strict';var _=require('lodash');var util=require('util');var utils=require('../utils');var Mustache=require('mustache');var Redis=require('ioredis');var config=require(_0x85d5('0x0'));var logger=require(_0x85d5('0x1'))('routing');config[_0x85d5('0x2')]=_[_0x85d5('0x3')](config['redis'],{'host':_0x85d5('0x4'),'port':0x18eb});var io=require(_0x85d5('0x5'))(new Redis(config[_0x85d5('0x2')]));function emit(_0x46e7b4,_0x5f47ec,_0x98c963){io['to'](_0x46e7b4)[_0x85d5('0x6')](_0x5f47ec,_0x98c963);}function sendNotification(_0x4ca293,_0x4326a8,_0x4eb3ae,_0x1098be,_0x2ce6b9,_0x258f0c){io['to'](util['format']('user:%s',_0x1098be['name']))[_0x85d5('0x6')](_0x85d5('0x7'),_0x1098be);var _0xde1063=_0x258f0c||{};var _0x25369e=_0x4eb3ae[_0x85d5('0x8')]('.');var _0x18331f={'uniqueid':_0x4326a8,'channel':_0x25369e[0x0],'id':_0x25369e[0x1],'title':_0x25369e[0x0]+_0x85d5('0x9'),'interactionId':_0x25369e[0x2],'queue':_0x2ce6b9?_0x2ce6b9['name']:null,'sound':_0xde1063['account']['notificationSound'],'shake':_0xde1063[_0x85d5('0xa')][_0x85d5('0xb')]};try{if(!_0xde1063[_0x85d5('0xc')]){_0xde1063[_0x85d5('0xc')]={};}if(_0x2ce6b9){_0xde1063[_0x85d5('0xc')][_0x85d5('0xd')]=_0x2ce6b9;}else if(_0xde1063[_0x85d5('0xc')]['queue']){delete _0xde1063[_0x85d5('0xc')][_0x85d5('0xd')];}_0x18331f[_0x85d5('0xe')]=utils[_0x85d5('0xf')](_0xde1063[_0x85d5('0xa')][_0x85d5('0x10')],_0xde1063);}catch(_0x2dbf13){_0x18331f[_0x85d5('0xe')]=_0x85d5('0x11');logger[_0x85d5('0x12')](util[_0x85d5('0x13')](_0x85d5('0x14'),_0x4326a8,_0x2dbf13[_0x85d5('0x15')]));}io['to'](util[_0x85d5('0x13')](_0x85d5('0x16'),_0x1098be[_0x85d5('0x17')]))[_0x85d5('0x6')](util[_0x85d5('0x13')]('notification:%s',_0x4ca293?_0x85d5('0x18'):_0x85d5('0x19')),_0x18331f);}function writeLog(_0x5f5755,_0x231b57,_0x1264ca){return logger['info'](util['format'](_0x85d5('0x1a'),_0x5f5755,_0x231b57['name'],_0x1264ca));}exports[_0x85d5('0x1b')]=function(_0x5ce96e,_0x240000,_0x1f8d27,_0x560b3a){if(_0x240000['busy']){writeLog(_0x5ce96e,_0x240000,'BUSY');return![];}if(!_0x240000['online']){writeLog(_0x5ce96e,_0x240000,_0x85d5('0x1c'));return![];}if(_0x240000[_0x1f8d27+_0x85d5('0x1d')]){writeLog(_0x5ce96e,_0x240000,_0x85d5('0x1e'));return![];}if(_0x560b3a&&_0x240000[_0x85d5('0x1f')](_0x1f8d27+_0x85d5('0x20'))&&_0x240000[_0x85d5('0x1f')](_0x1f8d27+'CurrentCapacity')){if(_0x240000[_0x1f8d27+_0x85d5('0x20')]>0x0&&_0x240000[_0x1f8d27+'CurrentCapacity']>=_0x240000[_0x1f8d27+_0x85d5('0x20')]){writeLog(_0x5ce96e,_0x240000,_0x1f8d27[_0x85d5('0x21')]()+_0x85d5('0x22'));return![];}}return!![];};exports['showNotification']=function(_0x2d0497,_0x367704,_0x815808,_0x370c97,_0x4605c5){return sendNotification(!![],_0x2d0497,_0x367704,_0x815808,_0x370c97,_0x4605c5);};exports['hideNotification']=function(_0x1cbef1,_0x476c8b,_0x330f8a,_0x22a961,_0x43ac91){return sendNotification(![],_0x1cbef1,_0x476c8b,_0x330f8a,_0x22a961,_0x43ac91);};exports['writeLog']=writeLog;
\ No newline at end of file
index 660a0ef..c02519e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb379=['next','getMustacheRender','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','isObject','stringify','validate','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next'];(function(_0x1f1709,_0x1c5f3b){var _0x2fc064=function(_0x30cd91){while(--_0x30cd91){_0x1f1709['push'](_0x1f1709['shift']());}};_0x2fc064(++_0x1c5f3b);}(_0xb379,0x16b));var _0x9b37=function(_0x301cc3,_0x12db72){_0x301cc3=_0x301cc3-0x0;var _0x56b5ae=_0xb379[_0x301cc3];return _0x56b5ae;};'use strict';var schema=require(_0x9b37('0x0'));var sh=require('shelljs');var _=require(_0x9b37('0x1'));var utils=require(_0x9b37('0x2'));var logger=require(_0x9b37('0x3'))('routing');var system=schema({'command':{'type':_0x9b37('0x4'),'required':!![],'message':_0x9b37('0x5')}});exports[_0x9b37('0x6')]=function(_0x89fd51,_0x47df75){return function(_0x553988){try{var _0x344fb5={'command':_0x47df75[0x0]};var _0x371d38=system[_0x9b37('0x0')](_0x344fb5,{'typecast':!![]});if(_0x371d38[_0x9b37('0x7')]){logger[_0x9b37('0x8')](_0x9b37('0x9'),_0x89fd51,_[_0x9b37('0xa')](_0x371d38,_0x9b37('0xb'))[_0x9b37('0xc')](',\x20'));logger[_0x9b37('0xd')](_0x9b37('0xe'),_0x89fd51);_0x553988[_0x9b37('0xf')]();}else{var _0x5c371b=this;var _0x4a1f2a=utils[_0x9b37('0x10')](_0x47df75[0x0],this);logger[_0x9b37('0xd')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x89fd51,_0x4a1f2a);sh['exec'](_[_0x9b37('0x11')](_0x4a1f2a),function(_0x5a9a9a,_0x509176){logger[_0x9b37('0xd')](_0x9b37('0x12'),_0x89fd51,_0x5a9a9a);if(_0x5a9a9a==0x0){var _0x1f1c4b=_0x509176[_0x9b37('0x13')](/(\r\n|\n|\r)/gm,'');if(_[_0x9b37('0x14')](_0x47df75[0x1])||_[_0x9b37('0x15')](_0x47df75[0x1])){logger[_0x9b37('0xd')](_0x9b37('0x16'),_0x89fd51);_0x5c371b['body'][_0x47df75[0x1]]=_0x1f1c4b;}else{logger[_0x9b37('0xd')](_0x9b37('0x17'),_0x89fd51,_0x47df75[0x1],_0x1f1c4b);_0x5c371b[_0x9b37('0x18')][_0x47df75[0x1]]=_0x1f1c4b;}}_0x553988[_0x9b37('0xf')]();});}}catch(_0x3e0640){logger[_0x9b37('0x8')](_0x9b37('0x9'),_0x89fd51,_[_0x9b37('0x19')](_0x3e0640)?JSON[_0x9b37('0x1a')](_0x3e0640):_0x3e0640);logger[_0x9b37('0xd')](_0x9b37('0xe'),_0x89fd51);_0x553988['next']();}};};
\ No newline at end of file
+var _0x1c73=['routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','info','exec','trim','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','next','isObject','stringify','validate','lodash','./utils','../../../../config/logger'];(function(_0xb1ee0e,_0x2126df){var _0x376116=function(_0x44b7ad){while(--_0x44b7ad){_0xb1ee0e['push'](_0xb1ee0e['shift']());}};_0x376116(++_0x2126df);}(_0x1c73,0xc2));var _0x31c7=function(_0x36e4dc,_0x4cc695){_0x36e4dc=_0x36e4dc-0x0;var _0x303297=_0x1c73[_0x36e4dc];return _0x303297;};'use strict';var schema=require(_0x31c7('0x0'));var sh=require('shelljs');var _=require(_0x31c7('0x1'));var utils=require(_0x31c7('0x2'));var logger=require(_0x31c7('0x3'))(_0x31c7('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':_0x31c7('0x5')}});exports[_0x31c7('0x6')]=function(_0x466930,_0x5bd07d){return function(_0x5b0f31){try{var _0x3da553={'command':_0x5bd07d[0x0]};var _0x597fbf=system['validate'](_0x3da553,{'typecast':!![]});if(_0x597fbf[_0x31c7('0x7')]){logger[_0x31c7('0x8')](_0x31c7('0x9'),_0x466930,_[_0x31c7('0xa')](_0x597fbf,'message')['join'](',\x20'));logger['info'](_0x31c7('0xb'),_0x466930);_0x5b0f31['next']();}else{var _0x53900e=this;var _0xae5246=utils[_0x31c7('0xc')](_0x5bd07d[0x0],this);logger[_0x31c7('0xd')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x466930,_0xae5246);sh[_0x31c7('0xe')](_[_0x31c7('0xf')](_0xae5246),function(_0x5797ae,_0xf045c0){logger['info']('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x466930,_0x5797ae);if(_0x5797ae==0x0){var _0x3967a7=_0xf045c0['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x5bd07d[0x1])||_['isEmpty'](_0x5bd07d[0x1])){logger['info'](_0x31c7('0x10'),_0x466930);_0x53900e[_0x31c7('0x11')][_0x5bd07d[0x1]]=_0x3967a7;}else{logger[_0x31c7('0xd')](_0x31c7('0x12'),_0x466930,_0x5bd07d[0x1],_0x3967a7);_0x53900e[_0x31c7('0x11')][_0x5bd07d[0x1]]=_0x3967a7;}}_0x5b0f31[_0x31c7('0x13')]();});}}catch(_0x53f1a5){logger[_0x31c7('0x8')](_0x31c7('0x9'),_0x466930,_[_0x31c7('0x14')](_0x53f1a5)?JSON[_0x31c7('0x15')](_0x53f1a5):_0x53f1a5);logger[_0x31c7('0xd')](_0x31c7('0xb'),_0x466930);_0x5b0f31['next']();}};};
\ No newline at end of file
index fe2578d..7afd161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf330=['next','channel','Interaction','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','error','[%s][TAG]\x20%s','finally','isObject','stringify','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0x4e0332,_0x67dfc8){var _0xddf07=function(_0x5b2679){while(--_0x5b2679){_0x4e0332['push'](_0x4e0332['shift']());}};_0xddf07(++_0x67dfc8);}(_0xf330,0x15e));var _0x0f33=function(_0x413dc1,_0x1ae43d){_0x413dc1=_0x413dc1-0x0;var _0x10d054=_0xf330[_0x413dc1];return _0x10d054;};'use strict';var schema=require('validate');var _=require(_0x0f33('0x0'));var rpc={'chatInteraction':require(_0x0f33('0x1')),'openchannelInteraction':require(_0x0f33('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x0f33('0x3')),'faxInteraction':require(_0x0f33('0x4')),'whatsappInteraction':require(_0x0f33('0x5'))};var logger=require('../../../../config/logger')('routing');var tag=schema({'tag':{'type':_0x0f33('0x6'),'required':!![],'message':_0x0f33('0x7')}});exports[_0x0f33('0x8')]=function(_0x114d50,_0x28939e,_0x326c1a,_0x1c2bb0){return function(_0x1256e6){try{var _0x2fb2dd={'tag':_0x28939e[0x0]};var _0x32972f=tag[_0x0f33('0x9')](_0x2fb2dd,{'typecast':!![]});if(_0x32972f[_0x0f33('0xa')]){logger['error']('[%s][TAG]\x20%s',_0x114d50,_['map'](_0x32972f,'message')[_0x0f33('0xb')](',\x20'));logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);_0x1256e6[_0x0f33('0xe')]();}else{var _0x3b104d={'ids':[_0x28939e[0x0]]};if(rpc[_0x1c2bb0[_0x0f33('0xf')]+_0x0f33('0x10')]){rpc[_0x1c2bb0[_0x0f33('0xf')]+_0x0f33('0x10')][_0x0f33('0x11')](_0x1c2bb0['interaction']['id'],_0x3b104d)[_0x0f33('0x12')](function(_0xf56538){logger[_0x0f33('0xc')](_0x0f33('0x13'),_0x114d50,_0x28939e[0x1],_0x1c2bb0[_0x0f33('0xf')],_0x1c2bb0['interaction']['id']);})[_0x0f33('0x14')](function(_0x5dc7a4){logger[_0x0f33('0x15')](_0x0f33('0x16'),_0x114d50,JSON['stringify'](_0x5dc7a4));logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);})[_0x0f33('0x17')](function(){_0x1256e6[_0x0f33('0xe')]();});}}}catch(_0x335c97){logger['error'](_0x0f33('0x16'),_0x114d50,_[_0x0f33('0x18')](_0x335c97)?JSON[_0x0f33('0x19')](_0x335c97):_0x335c97);logger[_0x0f33('0xc')](_0x0f33('0xd'),_0x114d50);_0x1256e6[_0x0f33('0xe')]();}};};
\ No newline at end of file
+var _0x0651=['error','finally','next','isObject','stringify','validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][TAG]\x20%s','map','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch'];(function(_0x564506,_0x39c92a){var _0x35a571=function(_0x14ed38){while(--_0x14ed38){_0x564506['push'](_0x564506['shift']());}};_0x35a571(++_0x39c92a);}(_0x0651,0xe5));var _0x1065=function(_0x17538a,_0x3e5370){_0x17538a=_0x17538a-0x0;var _0x32a992=_0x0651[_0x17538a];return _0x32a992;};'use strict';var schema=require(_0x1065('0x0'));var _=require(_0x1065('0x1'));var rpc={'chatInteraction':require(_0x1065('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x1065('0x3')),'mailInteraction':require(_0x1065('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x1065('0x5'))};var logger=require(_0x1065('0x6'))(_0x1065('0x7'));var tag=schema({'tag':{'type':_0x1065('0x8'),'required':!![],'message':_0x1065('0x9')}});exports[_0x1065('0xa')]=function(_0x1e8e7c,_0x44290b,_0x5f2cae,_0x3c09ab){return function(_0x383f87){try{var _0x42170b={'tag':_0x44290b[0x0]};var _0x4b2867=tag[_0x1065('0x0')](_0x42170b,{'typecast':!![]});if(_0x4b2867[_0x1065('0xb')]){logger['error'](_0x1065('0xc'),_0x1e8e7c,_[_0x1065('0xd')](_0x4b2867,_0x1065('0xe'))['join'](',\x20'));logger[_0x1065('0xf')](_0x1065('0x10'),_0x1e8e7c);_0x383f87['next']();}else{var _0x1ee668={'ids':[_0x44290b[0x0]]};if(rpc[_0x3c09ab[_0x1065('0x11')]+_0x1065('0x12')]){rpc[_0x3c09ab['channel']+_0x1065('0x12')][_0x1065('0x13')](_0x3c09ab[_0x1065('0x14')]['id'],_0x1ee668)['then'](function(_0xceeeef){logger[_0x1065('0xf')](_0x1065('0x15'),_0x1e8e7c,_0x44290b[0x1],_0x3c09ab[_0x1065('0x11')],_0x3c09ab[_0x1065('0x14')]['id']);})[_0x1065('0x16')](function(_0x400716){logger[_0x1065('0x17')]('[%s][TAG]\x20%s',_0x1e8e7c,JSON['stringify'](_0x400716));logger[_0x1065('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x1e8e7c);})[_0x1065('0x18')](function(){_0x383f87[_0x1065('0x19')]();});}}}catch(_0x2be6ba){logger[_0x1065('0x17')]('[%s][TAG]\x20%s',_0x1e8e7c,_[_0x1065('0x1a')](_0x2be6ba)?JSON[_0x1065('0x1b')](_0x2be6ba):_0x2be6ba);logger[_0x1065('0xf')](_0x1065('0x10'),_0x1e8e7c);_0x383f87[_0x1065('0x19')]();}};};
\ No newline at end of file
index b4796fe..aa8d306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f9=['params','utf8','application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','stringify','info','stop','catch','error','isObject','next','request-promise','routing','lodash','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','?params=','title','jsonrpc','2.0','method','login'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0x62f9,0x75));var _0x962f=function(_0x5275b8,_0x51e5dd){_0x5275b8=_0x5275b8-0x0;var _0x568a9b=_0x62f9[_0x5275b8];return _0x568a9b;};'use strict';var rp=require(_0x962f('0x0'));var logger=require('../../../../config/logger')(_0x962f('0x1'));var _=require(_0x962f('0x2'));var arr=[];exports[_0x962f('0x3')]=function(_0x5319a0,_0x14571c){return function(_0x17016c){var _0x598475=_0x14571c[0xa];var _0x519d4f=_0x14571c[0xb];var _0x33edf4=_0x14571c[0xc];var _0x3b666d=_0x14571c[0xd];var _0x3da02e=_0x14571c[0xe];var _0x3c9a4a=_0x14571c[0xf][_0x962f('0x4')](/\n/g,_0x962f('0x5'));var _0x511571=_0x14571c[0x10][_0x962f('0x4')](/\n/g,'\x20');if(!arr[_0x962f('0x6')](_0x519d4f)){arr[_0x962f('0x7')](_0x519d4f);var _0x1a6c13=_0x14571c[0x3];var _0x2146af=_0x14571c[0x4];var _0x3cacad=_0x14571c[0x1];var _0xabf279=_0x14571c[0x0];var _0x4991f1={};_0x4991f1[_0x962f('0x8')]=_0x14571c[0x8]+'?params='+_0x33edf4+'|'+_0x598475+'|'+_0x3b666d+'|'+_0x519d4f+'|'+_0x3da02e;_0x4991f1['urlOnRing']=_0x14571c[0x7]+_0x962f('0x9')+_0x33edf4+'|'+_0x598475+'|'+_0x3b666d+'|'+_0x519d4f+'|'+_0x3da02e+'|'+_0x3c9a4a+'|'+_0x511571;_0x4991f1[_0x962f('0xa')]=_0x14571c[0x9];var _0x3992db={};_0x3992db[_0x962f('0xb')]=_0x962f('0xc');_0x3992db[_0x962f('0xd')]=_0x962f('0xe');var _0x22fc15=[];_0x22fc15[_0x962f('0x7')](_0x14571c[0x2]);_0x22fc15[_0x962f('0x7')](_0x14571c[0x5]);_0x22fc15['push'](_0x14571c[0x6]);_0x3992db[_0x962f('0xf')]=_0x22fc15;_0x3992db['id']=0x1;var _0x534fbf=JSON['stringify'](_0x3992db);var _0x3f5e9b={'encoding':_0x962f('0x10'),'method':'POST','timeout':0x2710,'url':_0x1a6c13,'headers':{'Content-Type':_0x962f('0x11')},'body':_0x534fbf};return rp(_0x3f5e9b)[_0x962f('0x12')](function(_0x51d72f){const _0x462d30=JSON[_0x962f('0x13')](_0x51d72f);if(!_0x462d30['result'][_0x962f('0x14')]){throw new Error(_0x962f('0x15'));}var _0x24555c=_0x519d4f;var _0x28d4b6=_0x962f('0x16')+_0x3cacad+_0x962f('0x17')+_0xabf279+_0x962f('0x18')+_0x24555c+_0x962f('0x19')+JSON[_0x962f('0x1a')](_0x4991f1);var _0x2307ef=_0x2146af+'?'+_0x28d4b6;return rp(_0x2307ef);})[_0x962f('0x12')](function(_0x10c8dc){logger[_0x962f('0x1b')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x5319a0,_0x10c8dc);_0x17016c[_0x962f('0x1c')]();})[_0x962f('0x1d')](function(_0x24c209){logger[_0x962f('0x1e')]('[%s][TVOX]\x20%s',_0x5319a0,_[_0x962f('0x1f')](_0x24c209)?JSON[_0x962f('0x1a')](_0x24c209):_0x24c209);_0x17016c[_0x962f('0x1c')]();});}else{logger[_0x962f('0x1b')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x5319a0);_0x17016c[_0x962f('0x20')]();}};};
\ No newline at end of file
+var _0x4b5e=['application/json-rpc','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','routing','lodash','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','?params=','urlOnRing','jsonrpc','2.0','method','login','params','stringify','utf8','POST'];(function(_0x3c5316,_0xfca7ae){var _0x27accf=function(_0x13ae00){while(--_0x13ae00){_0x3c5316['push'](_0x3c5316['shift']());}};_0x27accf(++_0xfca7ae);}(_0x4b5e,0x142));var _0xe4b5=function(_0x2cb3d9,_0x2e343f){_0x2cb3d9=_0x2cb3d9-0x0;var _0x250a71=_0x4b5e[_0x2cb3d9];return _0x250a71;};'use strict';var rp=require(_0xe4b5('0x0'));var logger=require(_0xe4b5('0x1'))(_0xe4b5('0x2'));var _=require(_0xe4b5('0x3'));var arr=[];exports[_0xe4b5('0x4')]=function(_0x3d2f03,_0x4c7264){return function(_0x1357be){var _0x59d1f1=_0x4c7264[0xa];var _0x38ac23=_0x4c7264[0xb];var _0x539c69=_0x4c7264[0xc];var _0x39f990=_0x4c7264[0xd];var _0x2e931c=_0x4c7264[0xe];var _0x554df4=_0x4c7264[0xf][_0xe4b5('0x5')](/\n/g,_0xe4b5('0x6'));var _0x5d83b6=_0x4c7264[0x10][_0xe4b5('0x5')](/\n/g,'\x20');if(!arr[_0xe4b5('0x7')](_0x38ac23)){arr[_0xe4b5('0x8')](_0x38ac23);var _0x4de66f=_0x4c7264[0x3];var _0x3a2c18=_0x4c7264[0x4];var _0x2288f4=_0x4c7264[0x1];var _0x2271cd=_0x4c7264[0x0];var _0x38b766={};_0x38b766[_0xe4b5('0x9')]=_0x4c7264[0x8]+_0xe4b5('0xa')+_0x539c69+'|'+_0x59d1f1+'|'+_0x39f990+'|'+_0x38ac23+'|'+_0x2e931c;_0x38b766[_0xe4b5('0xb')]=_0x4c7264[0x7]+_0xe4b5('0xa')+_0x539c69+'|'+_0x59d1f1+'|'+_0x39f990+'|'+_0x38ac23+'|'+_0x2e931c+'|'+_0x554df4+'|'+_0x5d83b6;_0x38b766['title']=_0x4c7264[0x9];var _0x2939e6={};_0x2939e6[_0xe4b5('0xc')]=_0xe4b5('0xd');_0x2939e6[_0xe4b5('0xe')]=_0xe4b5('0xf');var _0x38032d=[];_0x38032d[_0xe4b5('0x8')](_0x4c7264[0x2]);_0x38032d['push'](_0x4c7264[0x5]);_0x38032d[_0xe4b5('0x8')](_0x4c7264[0x6]);_0x2939e6[_0xe4b5('0x10')]=_0x38032d;_0x2939e6['id']=0x1;var _0x13b28a=JSON[_0xe4b5('0x11')](_0x2939e6);var _0x2f3fff={'encoding':_0xe4b5('0x12'),'method':_0xe4b5('0x13'),'timeout':0x2710,'url':_0x4de66f,'headers':{'Content-Type':_0xe4b5('0x14')},'body':_0x13b28a};return rp(_0x2f3fff)['then'](function(_0x10a5bc){const _0x3fbf0d=JSON[_0xe4b5('0x15')](_0x10a5bc);if(!_0x3fbf0d[_0xe4b5('0x16')][_0xe4b5('0x17')]){throw new Error(_0xe4b5('0x18'));}var _0xda62c7=_0x38ac23;var _0x1d9837=_0xe4b5('0x19')+_0x2288f4+_0xe4b5('0x1a')+_0x2271cd+_0xe4b5('0x1b')+_0xda62c7+_0xe4b5('0x1c')+JSON[_0xe4b5('0x11')](_0x38b766);var _0x56ad59=_0x3a2c18+'?'+_0x1d9837;return rp(_0x56ad59);})['then'](function(_0x2997b9){logger[_0xe4b5('0x1d')](_0xe4b5('0x1e'),_0x3d2f03,_0x2997b9);_0x1357be[_0xe4b5('0x1f')]();})[_0xe4b5('0x20')](function(_0x647428){logger[_0xe4b5('0x21')](_0xe4b5('0x22'),_0x3d2f03,_[_0xe4b5('0x23')](_0x647428)?JSON[_0xe4b5('0x11')](_0x647428):_0x647428);_0x1357be['stop']();});}else{logger['info'](_0xe4b5('0x24'),_0x3d2f03);_0x1357be[_0xe4b5('0x25')]();}};};
\ No newline at end of file
index 46734ae..b8bb5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x52e373,_0x24e0f5){var _0x3b07f3=function(_0xf29cd1){while(--_0xf29cd1){_0x52e373['push'](_0x52e373['shift']());}};_0x3b07f3(++_0x24e0f5);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x101d2b,_0x5b61a7){var _0x2b59ea=function(_0x5a2d9e){while(--_0x5a2d9e){_0x101d2b['push'](_0x101d2b['shift']());}};_0x2b59ea(++_0x5b61a7);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index 10b6682..c623e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['update','UserId','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting','mailQueues','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','bluebird','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','message','interaction','isArray','length','applications','existsSync','toLowerCase','channel','mail','push','slice','join','dialogflow','split','dialogflowv2','appdata','tag','TagId','tvox','getMustacheRender','account','ChatWebsiteId','ContactId','body','format','app','./interval','condition','intervals','./applications/','consequence','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x750a,0x140));var _0xa750=function(_0x5a947b,_0x5c32b4){_0x5a947b=_0x5a947b-0x0;var _0xaeccb5=_0x750a[_0x5a947b];return _0xaeccb5;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xa750('0x1'));var uuid=require(_0xa750('0x2'));var utils=require(_0xa750('0x3'));var config=require(_0xa750('0x4'));var logger=require(_0xa750('0x5'))(_0xa750('0x6'));var rpc={'openchannelQueueReport':require(_0xa750('0x7')),'mailQueueReport':require(_0xa750('0x8')),'chatQueueReport':require(_0xa750('0x9')),'smsQueueReport':require(_0xa750('0xa')),'faxQueueReport':require(_0xa750('0xb')),'whatsappQueueReport':require(_0xa750('0xc'))};var RuleEngine=require(_0xa750('0xd'));function getId(_0x47a4dd,_0x53f2cb,_0x2678ff){return util['format'](_0xa750('0xe'),_0x47a4dd,_0x53f2cb||0x0,_0x2678ff||0x0);}function getIntervals(_0x1760f5,_0x51f594){var _0x264284=[];if(!_[_0xa750('0xf')](_0x51f594['IntervalId'])&&!_['isNil'](_0x1760f5[_0x51f594[_0xa750('0x10')]])&&!_['isNil'](_0x1760f5[_0x51f594[_0xa750('0x10')]][_0xa750('0x11')])){_0x264284=_['map'](_0x1760f5[_0x51f594[_0xa750('0x10')]][_0xa750('0x11')],_0xa750('0x12'));}else if(!_['isNil'](_0x51f594[_0xa750('0x12')])){_0x264284=[_0x51f594[_0xa750('0x12')]];}return _0x264284;}exports[_0xa750('0x13')]=function(_0x24e48a){_0x24e48a[_0xa750('0x14')]={};return new BPromise(function(_0x339329,_0x5806ed){var _0x3ae2a1={'Start':function(_0x8488ea){var _0x290d46=this;return new Promise(function(_0x49fe3b,_0x337095){if(_0x8488ea){try{var _0x29480c=[];var _0x58639b=getId(_0x8488ea['channel'],_0x8488ea[_0xa750('0x15')]?_0x8488ea['message']['id']:0x0,_0x8488ea[_0xa750('0x16')]?_0x8488ea[_0xa750('0x16')]['id']:0x0);if(_0x8488ea['applications']&&_[_0xa750('0x17')](_0x8488ea['applications'])&&_0x8488ea['applications'][_0xa750('0x18')]){for(var _0x5d0935=0x0;_0x5d0935<_0x8488ea[_0xa750('0x19')]['length'];_0x5d0935+=0x1){var _0x174a8c=_0x8488ea['applications'][_0x5d0935];if(fs[_0xa750('0x1a')](path['join'](__dirname,_0xa750('0x19'),_0x174a8c['app']+'.js'))){var _0xaa9d3e=[];switch(_0x174a8c['app'][_0xa750('0x1b')]()){case'autoreply':var _0x5c7203=_0x174a8c['appdata']['split'](',');if(_0x8488ea[_0xa750('0x1c')]===_0xa750('0x1d')){_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[_0xa750('0x1f')](0x2,_0x5c7203[_0xa750('0x18')])[_0xa750('0x20')](','));}else{_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x5c7203[_0xa750('0x1f')](0x1,_0x5c7203[_0xa750('0x18')])[_0xa750('0x20')](','));}break;case _0xa750('0x21'):var _0x310e2d=_0x174a8c['appdata'][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x310e2d[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x310e2d[0x1]);_0xaa9d3e['push'](_0x310e2d[_0xa750('0x1f')](0x2,_0x310e2d[_0xa750('0x18')])[_0xa750('0x20')](','));break;case _0xa750('0x23'):var _0x579f1c=_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c[0x2]);_0xaa9d3e['push'](_0x579f1c[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0x579f1c['slice'](0x4,_0x579f1c[_0xa750('0x18')])[_0xa750('0x20')](','));break;case'amazonlex':var _0x8b5c2d=_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x2]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0x8b5c2d['slice'](0x4,_0x8b5c2d[_0xa750('0x18')])['join'](','));break;case _0xa750('0x15'):_0xaa9d3e[_0xa750('0x1e')](_0x174a8c[_0xa750('0x24')]);break;case _0xa750('0x25'):_0xaa9d3e['push'](_0x174a8c[_0xa750('0x26')]);_0xaa9d3e[_0xa750('0x1e')](_0x174a8c['appdata']);break;case _0xa750('0x27'):var _0x330710=utils[_0xa750('0x28')](_0x8488ea[_0xa750('0x29')]['notificationTemplate'],_0x8488ea);var _0xf60128=_0x174a8c['appdata']['split'](',');_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x0]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x1]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x2]);_0xaa9d3e['push'](_0xf60128[0x3]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x4]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x5]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x6]);_0xaa9d3e['push'](_0xf60128[0x7]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x8]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0x9]);_0xaa9d3e[_0xa750('0x1e')](_0xf60128[0xa]);_0xaa9d3e['push'](_0x8488ea[_0xa750('0x16')]['id']);_0xaa9d3e[_0xa750('0x1e')](_0x8488ea[_0xa750('0x15')]['id']);_0xaa9d3e['push'](_0x174a8c[_0xa750('0x2a')]);_0xaa9d3e[_0xa750('0x1e')](_0x8488ea[_0xa750('0x16')][_0xa750('0x2b')]);_0xaa9d3e['push'](_0x8488ea['body'][_0xa750('0x2c')]);_0xaa9d3e[_0xa750('0x1e')](_0x330710);break;default:_0xaa9d3e=_['isNil'](_0x174a8c[_0xa750('0x24')])?[]:_0x174a8c[_0xa750('0x24')][_0xa750('0x22')](',');}var _0x1166ff={'id':util[_0xa750('0x2d')]('%s:%s:%s',_0x58639b,_0x174a8c['id'],_0x174a8c[_0xa750('0x2e')]),'condition':require(_0xa750('0x2f'))[_0xa750('0x30')](_0x58639b,getIntervals(_0x24e48a[_0xa750('0x31')],_0x174a8c),_0x24e48a),'consequence':require(_0xa750('0x32')+_0x174a8c[_0xa750('0x2e')])[_0xa750('0x33')](_0x58639b,_0xaa9d3e,_0x24e48a,_0x8488ea),'p':_0x174a8c['priority']||0x0};logger[_0xa750('0x34')]('Push\x20new\x20rule',_0x1166ff['id'],_0xa750('0x35'),getIntervals(_0x24e48a['intervals'],_0x174a8c)[_0xa750('0x20')](_0xa750('0x36')));_0x29480c[_0xa750('0x1e')](_0x1166ff);}else{logger[_0xa750('0x37')](_0xa750('0x38'),path[_0xa750('0x20')](__dirname,_0xa750('0x19'),_0x174a8c[_0xa750('0x2e')]+_0xa750('0x39')));}}_0x24e48a[_0xa750('0x14')][_0x58639b]=new RuleEngine(_0x29480c);_0x24e48a[_0xa750('0x14')][_0x58639b][_0xa750('0x3a')](_0x8488ea,function(_0x3ec860){logger[_0xa750('0x34')](_0xa750('0x3b'),JSON[_0xa750('0x3c')](_0x3ec860[_0xa750('0x3d')]));if(_0x24e48a[_0xa750('0x14')][_0x58639b]){_0x24e48a[_0xa750('0x14')][_0x58639b][_0xa750('0x3e')]('complete');}});return _0x49fe3b({'code':0xc8,'message':_0x8488ea});}else{logger[_0xa750('0x34')](_0xa750('0x3f'));return _0x49fe3b({'code':0xc8,'message':_0x8488ea});}}catch(_0x1e397b){logger[_0xa750('0x37')](_0x1e397b[_0xa750('0x40')]);return _0x337095(_0x290d46[_0xa750('0x37')](0x1f4,_0x1e397b));}}return _0x337095(_0xa750('0x41'));});},'AcceptMessage':function(_0x1f0500){var _0x3534b1=this;return new Promise(function(_0x5635b9,_0x2c6ad3){if(_0x1f0500[_0xa750('0x42')]&&_0x1f0500['agent']['id']){if(_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']]){_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']][_0xa750('0x44')]=![];_0x24e48a[_0xa750('0x43')][_0x1f0500[_0xa750('0x42')]['id']][_0xa750('0x45')]=undefined;}}if(_0x1f0500[_0xa750('0x15')]&&_0x1f0500[_0xa750('0x15')]['id']){try{var _0x482da9=getId(_0x1f0500[_0xa750('0x1c')],_0x1f0500[_0xa750('0x15')]?_0x1f0500['message']['id']:0x0,_0x1f0500[_0xa750('0x16')]?_0x1f0500[_0xa750('0x16')]['id']:0x0);if(_0x24e48a[_0xa750('0x14')][_0x482da9]){_0x24e48a['rules'][_0x482da9][_0xa750('0x3e')](_0xa750('0x46'));if(rpc[_0x1f0500[_0xa750('0x1c')]+_0xa750('0x47')]){rpc[_0x1f0500['channel']+_0xa750('0x47')][_0xa750('0x48')](_0x482da9,{'UserId':_0x1f0500[_0xa750('0x15')][_0xa750('0x49')]})['catch'](function(_0x203f2a){logger[_0xa750('0x37')]('error\x20update\x20queue\x20report');});}}return _0x5635b9({'code':0xc8,'message':_0x1f0500});}catch(_0x38aa35){logger['error'](_0x38aa35[_0xa750('0x40')]);return _0x2c6ad3(_0x3534b1[_0xa750('0x37')](0x1f4,_0x38aa35));}}logger['error']('message\x20is\x20empty');return _0x2c6ad3(_0x3534b1['error'](0x1f4,_0xa750('0x4a')));});},'RejectMessage':function(_0x401125){var _0x4ea12b=this;return new Promise(function(_0xe88dc,_0x1a79a9){if(_0x401125[_0xa750('0x42')]&&_0x401125['agent']['id']){try{if(_0x24e48a['agents'][_0x401125['agent']['id']]){_0x24e48a['agents'][_0x401125[_0xa750('0x42')]['id']]['busy']=![];_0x24e48a[_0xa750('0x43')][_0x401125[_0xa750('0x42')]['id']]['busyQueue']=undefined;}return _0xe88dc({'code':0xc8,'message':_0x401125});}catch(_0x1647c3){logger['error'](_0x1647c3[_0xa750('0x40')]);return _0x1a79a9(_0x4ea12b['error'](0x1f4,_0x1647c3));}}logger['error']('message\x20is\x20empty');return _0x1a79a9(_0x4ea12b['error'](0x1f4,_0xa750('0x4a')));});},'AbandonInteraction':function(_0x40dac2){var _0x5f1313=this;return new Promise(function(_0x552578,_0x4faeda){if(_0x40dac2[_0xa750('0x1c')]&&_0x40dac2[_0xa750('0x16')]&&_0x40dac2[_0xa750('0x16')]['id']){try{var _0x45a7da=getId(_0x40dac2[_0xa750('0x1c')],_0x40dac2[_0xa750('0x15')]?_0x40dac2['message']['id']:0x0,_0x40dac2['interaction']?_0x40dac2[_0xa750('0x16')]['id']:0x0);if(_0x24e48a[_0xa750('0x14')][_0x45a7da]){_0x24e48a[_0xa750('0x14')][_0x45a7da][_0xa750('0x3e')](_0xa750('0x46'));}return _0x552578({'code':0xc8,'message':_0x40dac2});}catch(_0x5a3cd5){logger[_0xa750('0x37')](_0x5a3cd5[_0xa750('0x40')]);return _0x4faeda(_0x5f1313[_0xa750('0x37')](0x1f4,_0x5a3cd5));}}logger[_0xa750('0x37')](_0xa750('0x4a'));return _0x4faeda(_0x5f1313[_0xa750('0x37')](0x1f4,_0xa750('0x4a')));});},'AgentCapacity':function(_0x1bd660){var _0x5e78f1=this;return new Promise(function(_0x2aa1d6,_0x1c7713){if(_0x24e48a[_0xa750('0x43')][_0xa750('0x4b')](_0x1bd660['id'])){for(var _0x58bc33 in _0x1bd660['capacity']){if(_0x1bd660[_0xa750('0x4c')][_0xa750('0x4b')](_0x58bc33)){if(_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0xa750('0x4b')](_0x58bc33+_0xa750('0x4d'))){_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0x58bc33+_0xa750('0x4d')]=parseInt(_0x1bd660[_0xa750('0x4c')][_0x58bc33],0xa);}}}_0x24e48a[_0xa750('0x43')][_0x1bd660['id']][_0xa750('0x4e')]();return _0x2aa1d6({'code':0xc8,'message':_0x24e48a[_0xa750('0x43')][_0x1bd660['id']]});}else{return _0x1c7713(_0x5e78f1[_0xa750('0x37')](0x1f4,_0xa750('0x4f')));}});},'Agents':function(_0x29799a){return new Promise(function(_0x99a54c,_0x313732){var _0x49e132=_[_0xa750('0x50')](_0x24e48a['agents']);_0x99a54c({'count':_0x49e132[_0xa750('0x18')],'rows':_0x49e132});});},'ChatQueues':function(_0x2d488d){return new Promise(function(_0xbe7451,_0x5845c5){var _0x18c242=[];for(var _0x2ed01a in _0x24e48a[_0xa750('0x51')]){if(_0x24e48a[_0xa750('0x51')][_0xa750('0x4b')](_0x2ed01a)){var _0x278a58=_0x24e48a['chatQueues'][_0x2ed01a];var _0x3001d7={'id':_0x278a58['id'],'available':_0x278a58[_0xa750('0x52')],'loggedIn':_0x278a58['loggedIn'],'name':_0x278a58[_0xa750('0x53')],'paused':_0x278a58[_0xa750('0x54')],'waiting':_0x278a58[_0xa750('0x55')]};_0x18c242[_0xa750('0x1e')](_0x3001d7);}}_0xbe7451({'count':_0x18c242[_0xa750('0x18')],'rows':_0x18c242});});},'MailQueues':function(_0x1b7597){return new Promise(function(_0x28f477,_0xc0b61b){var _0x1af7bb=[];for(var _0x8c5a88 in _0x24e48a[_0xa750('0x56')]){if(_0x24e48a['mailQueues']['hasOwnProperty'](_0x8c5a88)){var _0x230582=_0x24e48a[_0xa750('0x56')][_0x8c5a88];var _0x36a0dc={'id':_0x230582['id'],'available':_0x230582[_0xa750('0x52')],'loggedIn':_0x230582['loggedIn'],'name':_0x230582[_0xa750('0x53')],'paused':_0x230582[_0xa750('0x54')],'waiting':_0x230582[_0xa750('0x55')]};_0x1af7bb[_0xa750('0x1e')](_0x36a0dc);}}_0x28f477({'count':_0x1af7bb[_0xa750('0x18')],'rows':_0x1af7bb});});},'OpenchannelQueues':function(_0x473188){return new Promise(function(_0x17b25e,_0x5d883d){var _0x1dcc15=[];for(var _0x2783b9 in _0x24e48a[_0xa750('0x57')]){if(_0x24e48a['openchannelQueues']['hasOwnProperty'](_0x2783b9)){var _0x477d65=_0x24e48a['openchannelQueues'][_0x2783b9];var _0x5ba3f5={'id':_0x477d65['id'],'available':_0x477d65[_0xa750('0x52')],'loggedIn':_0x477d65[_0xa750('0x58')],'name':_0x477d65[_0xa750('0x53')],'paused':_0x477d65[_0xa750('0x54')],'waiting':_0x477d65[_0xa750('0x55')]};_0x1dcc15['push'](_0x5ba3f5);}}_0x17b25e({'count':_0x1dcc15[_0xa750('0x18')],'rows':_0x1dcc15});});},'SmsQueues':function(_0x217222){return new Promise(function(_0x37cebc,_0x26e6c7){var _0x439dce=[];for(var _0x1eff4e in _0x24e48a['smsQueues']){if(_0x24e48a['smsQueues'][_0xa750('0x4b')](_0x1eff4e)){var _0x2dadd0=_0x24e48a[_0xa750('0x59')][_0x1eff4e];var _0x38c836={'id':_0x2dadd0['id'],'available':_0x2dadd0[_0xa750('0x52')],'loggedIn':_0x2dadd0[_0xa750('0x58')],'name':_0x2dadd0[_0xa750('0x53')],'paused':_0x2dadd0[_0xa750('0x54')],'waiting':_0x2dadd0['waiting']};_0x439dce[_0xa750('0x1e')](_0x38c836);}}_0x37cebc({'count':_0x439dce['length'],'rows':_0x439dce});});},'FaxQueues':function(_0x59ac88){return new Promise(function(_0x470211,_0x7c3321){var _0x2b9d99=[];for(var _0x1f5ee4 in _0x24e48a['faxQueues']){if(_0x24e48a[_0xa750('0x5a')][_0xa750('0x4b')](_0x1f5ee4)){var _0x3e3f47=_0x24e48a[_0xa750('0x5a')][_0x1f5ee4];var _0x54aa6a={'id':_0x3e3f47['id'],'available':_0x3e3f47[_0xa750('0x52')],'loggedIn':_0x3e3f47[_0xa750('0x58')],'name':_0x3e3f47[_0xa750('0x53')],'paused':_0x3e3f47[_0xa750('0x54')],'waiting':_0x3e3f47[_0xa750('0x55')]};_0x2b9d99[_0xa750('0x1e')](_0x54aa6a);}}_0x470211({'count':_0x2b9d99[_0xa750('0x18')],'rows':_0x2b9d99});});},'WhatsappQueues':function(_0x429c1e){return new Promise(function(_0x51ea09,_0x584593){var _0x1af209=[];for(var _0x52ae23 in _0x24e48a[_0xa750('0x5b')]){if(_0x24e48a[_0xa750('0x5b')]['hasOwnProperty'](_0x52ae23)){var _0x24f1f4=_0x24e48a['whatsappQueues'][_0x52ae23];var _0x19028a={'id':_0x24f1f4['id'],'available':_0x24f1f4[_0xa750('0x52')],'loggedIn':_0x24f1f4[_0xa750('0x58')],'name':_0x24f1f4['name'],'paused':_0x24f1f4[_0xa750('0x54')],'waiting':_0x24f1f4[_0xa750('0x55')]};_0x1af209[_0xa750('0x1e')](_0x19028a);}}_0x51ea09({'count':_0x1af209[_0xa750('0x18')],'rows':_0x1af209});});},'ChatQueuesWaitingInteractions':function(_0x505c68){return new Promise(function(_0x56c2ce,_0x5b8fe3){var _0x377efa=_[_0xa750('0x50')](_0x24e48a['chatQueuesWaitingInteractions']);_0x56c2ce({'count':_0x377efa[_0xa750('0x18')],'rows':_0x377efa});});},'MailQueuesWaitingInteractions':function(_0x167ec1){return new Promise(function(_0x3fdd89,_0x30a7e8){var _0x459f1d=_[_0xa750('0x50')](_0x24e48a['mailQueuesWaitingInteractions']);_0x3fdd89({'count':_0x459f1d[_0xa750('0x18')],'rows':_0x459f1d});});},'OpenchannelQueuesWaitingInteractions':function(_0x709154){return new Promise(function(_0xdb39a6,_0x50ff65){var _0x4bc4a6=_[_0xa750('0x50')](_0x24e48a[_0xa750('0x5c')]);_0xdb39a6({'count':_0x4bc4a6[_0xa750('0x18')],'rows':_0x4bc4a6});});},'SmsQueuesWaitingInteractions':function(_0x584fdf){return new Promise(function(_0xfbb51c,_0x15552b){var _0x32b8e7=_['values'](_0x24e48a[_0xa750('0x5d')]);_0xfbb51c({'count':_0x32b8e7['length'],'rows':_0x32b8e7});});},'FaxQueuesWaitingInteractions':function(_0x29c20d){return new Promise(function(_0x2e3b00,_0x26fbe1){var _0x1d7ba6=_[_0xa750('0x50')](_0x24e48a['faxQueuesWaitingInteractions']);_0x2e3b00({'count':_0x1d7ba6[_0xa750('0x18')],'rows':_0x1d7ba6});});},'WhatsappQueuesWaitingInteractions':function(_0x3aa634){return new Promise(function(_0xec315a,_0x105ed2){var _0x374adb=_['values'](_0x24e48a[_0xa750('0x5e')]);_0xec315a({'count':_0x374adb[_0xa750('0x18')],'rows':_0x374adb});});}};var _0x42211f=jayson[_0xa750('0x5f')](_0x3ae2a1)[_0xa750('0x60')]();_0x42211f['on'](_0xa750('0x37'),function(_0x26bda4){logger[_0xa750('0x37')](JSON['stringify'](_0x26bda4));return _0x5806ed(_0x26bda4);});_0x42211f['listen'](0x232c,'127.0.0.1',function(){console['log'](_0xa750('0x61'),0x232c);return _0x339329('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x4b6c=['UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','stack','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','name','paused','mailQueues','available','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','log','lodash','util','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','condition','intervals','./applications/','consequence','info','\x20|\x20','error','rules','Applications\x20executed','emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update'];(function(_0x564821,_0x4d037e){var _0x2b604d=function(_0x26fabf){while(--_0x26fabf){_0x564821['push'](_0x564821['shift']());}};_0x2b604d(++_0x4d037e);}(_0x4b6c,0x14a));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc4b6('0x0'));var util=require(_0xc4b6('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xc4b6('0x2'));var BPromise=require(_0xc4b6('0x3'));var uuid=require(_0xc4b6('0x4'));var utils=require('./applications/utils');var config=require(_0xc4b6('0x5'));var logger=require(_0xc4b6('0x6'))(_0xc4b6('0x7'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xc4b6('0x8')),'chatQueueReport':require(_0xc4b6('0x9')),'smsQueueReport':require(_0xc4b6('0xa')),'faxQueueReport':require(_0xc4b6('0xb')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xc4b6('0xc'));function getId(_0x4b935f,_0x4b723a,_0x27daa9){return util[_0xc4b6('0xd')](_0xc4b6('0xe'),_0x4b935f,_0x4b723a||0x0,_0x27daa9||0x0);}function getIntervals(_0x2f0cc9,_0x8088db){var _0x423d81=[];if(!_['isNil'](_0x8088db[_0xc4b6('0xf')])&&!_[_0xc4b6('0x10')](_0x2f0cc9[_0x8088db['IntervalId']])&&!_[_0xc4b6('0x10')](_0x2f0cc9[_0x8088db[_0xc4b6('0xf')]][_0xc4b6('0x11')])){_0x423d81=_[_0xc4b6('0x12')](_0x2f0cc9[_0x8088db[_0xc4b6('0xf')]][_0xc4b6('0x11')],_0xc4b6('0x13'));}else if(!_[_0xc4b6('0x10')](_0x8088db[_0xc4b6('0x13')])){_0x423d81=[_0x8088db['interval']];}return _0x423d81;}exports[_0xc4b6('0x14')]=function(_0x2b7aab){_0x2b7aab['rules']={};return new BPromise(function(_0x17b63b,_0x4f0682){var _0x41be8d={'Start':function(_0x408652){var _0x20c517=this;return new Promise(function(_0x23144b,_0x5f54fa){if(_0x408652){try{var _0x47e19a=[];var _0x3e5527=getId(_0x408652[_0xc4b6('0x15')],_0x408652[_0xc4b6('0x16')]?_0x408652[_0xc4b6('0x16')]['id']:0x0,_0x408652[_0xc4b6('0x17')]?_0x408652[_0xc4b6('0x17')]['id']:0x0);if(_0x408652[_0xc4b6('0x18')]&&_[_0xc4b6('0x19')](_0x408652[_0xc4b6('0x18')])&&_0x408652[_0xc4b6('0x18')][_0xc4b6('0x1a')]){for(var _0x19ad3f=0x0;_0x19ad3f<_0x408652['applications'][_0xc4b6('0x1a')];_0x19ad3f+=0x1){var _0x142c22=_0x408652[_0xc4b6('0x18')][_0x19ad3f];if(fs[_0xc4b6('0x1b')](path[_0xc4b6('0x1c')](__dirname,_0xc4b6('0x18'),_0x142c22[_0xc4b6('0x1d')]+_0xc4b6('0x1e')))){var _0x51090f=[];switch(_0x142c22[_0xc4b6('0x1d')][_0xc4b6('0x1f')]()){case _0xc4b6('0x20'):var _0x1511e1=_0x142c22[_0xc4b6('0x21')][_0xc4b6('0x22')](',');if(_0x408652[_0xc4b6('0x15')]===_0xc4b6('0x23')){_0x51090f[_0xc4b6('0x24')](_0x1511e1[0x0]);_0x51090f['push'](_0x1511e1[0x1]);_0x51090f['push'](_0x1511e1['slice'](0x2,_0x1511e1[_0xc4b6('0x1a')])[_0xc4b6('0x1c')](','));}else{_0x51090f['push'](_0x1511e1[0x0]);_0x51090f[_0xc4b6('0x24')](_0x1511e1[_0xc4b6('0x25')](0x1,_0x1511e1['length'])[_0xc4b6('0x1c')](','));}break;case _0xc4b6('0x26'):var _0x1ce21c=_0x142c22[_0xc4b6('0x21')][_0xc4b6('0x22')](',');_0x51090f[_0xc4b6('0x24')](_0x1ce21c[0x0]);_0x51090f[_0xc4b6('0x24')](_0x1ce21c[0x1]);_0x51090f[_0xc4b6('0x24')](_0x1ce21c[_0xc4b6('0x25')](0x2,_0x1ce21c[_0xc4b6('0x1a')])['join'](','));break;case _0xc4b6('0x27'):var _0x17a744=_0x142c22[_0xc4b6('0x21')]['split'](',');_0x51090f['push'](_0x17a744[0x0]);_0x51090f[_0xc4b6('0x24')](_0x17a744[0x1]);_0x51090f['push'](_0x17a744[0x2]);_0x51090f[_0xc4b6('0x24')](_0x17a744[0x3]);_0x51090f[_0xc4b6('0x24')](_0x17a744[_0xc4b6('0x25')](0x4,_0x17a744['length'])[_0xc4b6('0x1c')](','));break;case _0xc4b6('0x28'):var _0x4e5ced=_0x142c22[_0xc4b6('0x21')][_0xc4b6('0x22')](',');_0x51090f[_0xc4b6('0x24')](_0x4e5ced[0x0]);_0x51090f['push'](_0x4e5ced[0x1]);_0x51090f['push'](_0x4e5ced[0x2]);_0x51090f[_0xc4b6('0x24')](_0x4e5ced[0x3]);_0x51090f[_0xc4b6('0x24')](_0x4e5ced['slice'](0x4,_0x4e5ced[_0xc4b6('0x1a')])['join'](','));break;case _0xc4b6('0x16'):_0x51090f[_0xc4b6('0x24')](_0x142c22[_0xc4b6('0x21')]);break;case _0xc4b6('0x29'):_0x51090f[_0xc4b6('0x24')](_0x142c22[_0xc4b6('0x2a')]);_0x51090f[_0xc4b6('0x24')](_0x142c22['appdata']);break;case'tvox':var _0x552a95=utils[_0xc4b6('0x2b')](_0x408652[_0xc4b6('0x2c')][_0xc4b6('0x2d')],_0x408652);var _0x34b579=_0x142c22['appdata']['split'](',');_0x51090f[_0xc4b6('0x24')](_0x34b579[0x0]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x1]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x2]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x3]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x4]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x5]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x6]);_0x51090f['push'](_0x34b579[0x7]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x8]);_0x51090f[_0xc4b6('0x24')](_0x34b579[0x9]);_0x51090f['push'](_0x34b579[0xa]);_0x51090f[_0xc4b6('0x24')](_0x408652[_0xc4b6('0x17')]['id']);_0x51090f[_0xc4b6('0x24')](_0x408652[_0xc4b6('0x16')]['id']);_0x51090f[_0xc4b6('0x24')](_0x142c22[_0xc4b6('0x2e')]);_0x51090f[_0xc4b6('0x24')](_0x408652[_0xc4b6('0x17')][_0xc4b6('0x2f')]);_0x51090f['push'](_0x408652[_0xc4b6('0x30')]['body']);_0x51090f[_0xc4b6('0x24')](_0x552a95);break;default:_0x51090f=_[_0xc4b6('0x10')](_0x142c22[_0xc4b6('0x21')])?[]:_0x142c22['appdata'][_0xc4b6('0x22')](',');}var _0x4594e5={'id':util[_0xc4b6('0xd')](_0xc4b6('0x31'),_0x3e5527,_0x142c22['id'],_0x142c22['app']),'condition':require('./interval')[_0xc4b6('0x32')](_0x3e5527,getIntervals(_0x2b7aab[_0xc4b6('0x33')],_0x142c22),_0x2b7aab),'consequence':require(_0xc4b6('0x34')+_0x142c22[_0xc4b6('0x1d')])[_0xc4b6('0x35')](_0x3e5527,_0x51090f,_0x2b7aab,_0x408652),'p':_0x142c22['priority']||0x0};logger[_0xc4b6('0x36')]('Push\x20new\x20rule',_0x4594e5['id'],'on\x20interval',getIntervals(_0x2b7aab[_0xc4b6('0x33')],_0x142c22)['join'](_0xc4b6('0x37')));_0x47e19a[_0xc4b6('0x24')](_0x4594e5);}else{logger[_0xc4b6('0x38')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xc4b6('0x1c')](__dirname,_0xc4b6('0x18'),_0x142c22[_0xc4b6('0x1d')]+_0xc4b6('0x1e')));}}_0x2b7aab[_0xc4b6('0x39')][_0x3e5527]=new RuleEngine(_0x47e19a);_0x2b7aab[_0xc4b6('0x39')][_0x3e5527]['execute'](_0x408652,function(_0x5aaea2){logger[_0xc4b6('0x36')](_0xc4b6('0x3a'),JSON['stringify'](_0x5aaea2['matchPath']));if(_0x2b7aab['rules'][_0x3e5527]){_0x2b7aab[_0xc4b6('0x39')][_0x3e5527][_0xc4b6('0x3b')](_0xc4b6('0x3c'));}});return _0x23144b({'code':0xc8,'message':_0x408652});}else{logger[_0xc4b6('0x36')](_0xc4b6('0x3d'));return _0x23144b({'code':0xc8,'message':_0x408652});}}catch(_0x198ab6){logger[_0xc4b6('0x38')](_0x198ab6['stack']);return _0x5f54fa(_0x20c517[_0xc4b6('0x38')](0x1f4,_0x198ab6));}}return _0x5f54fa(_0xc4b6('0x3e'));});},'AcceptMessage':function(_0x1ee5b8){var _0x192f4b=this;return new Promise(function(_0x1a9e28,_0x4555d9){if(_0x1ee5b8[_0xc4b6('0x3f')]&&_0x1ee5b8['agent']['id']){if(_0x2b7aab['agents'][_0x1ee5b8[_0xc4b6('0x3f')]['id']]){_0x2b7aab[_0xc4b6('0x40')][_0x1ee5b8[_0xc4b6('0x3f')]['id']][_0xc4b6('0x41')]=![];_0x2b7aab['agents'][_0x1ee5b8[_0xc4b6('0x3f')]['id']][_0xc4b6('0x42')]=undefined;}}if(_0x1ee5b8[_0xc4b6('0x16')]&&_0x1ee5b8[_0xc4b6('0x16')]['id']){try{var _0x5bb3fb=getId(_0x1ee5b8[_0xc4b6('0x15')],_0x1ee5b8['message']?_0x1ee5b8[_0xc4b6('0x16')]['id']:0x0,_0x1ee5b8[_0xc4b6('0x17')]?_0x1ee5b8['interaction']['id']:0x0);if(_0x2b7aab[_0xc4b6('0x39')][_0x5bb3fb]){_0x2b7aab['rules'][_0x5bb3fb][_0xc4b6('0x3b')](_0xc4b6('0x43'));if(rpc[_0x1ee5b8[_0xc4b6('0x15')]+_0xc4b6('0x44')]){rpc[_0x1ee5b8[_0xc4b6('0x15')]+'QueueReport'][_0xc4b6('0x45')](_0x5bb3fb,{'UserId':_0x1ee5b8[_0xc4b6('0x16')][_0xc4b6('0x46')]})[_0xc4b6('0x47')](function(_0x3e94df){logger[_0xc4b6('0x38')](_0xc4b6('0x48'));});}}return _0x1a9e28({'code':0xc8,'message':_0x1ee5b8});}catch(_0x2f226f){logger[_0xc4b6('0x38')](_0x2f226f['stack']);return _0x4555d9(_0x192f4b[_0xc4b6('0x38')](0x1f4,_0x2f226f));}}logger[_0xc4b6('0x38')](_0xc4b6('0x49'));return _0x4555d9(_0x192f4b[_0xc4b6('0x38')](0x1f4,_0xc4b6('0x49')));});},'RejectMessage':function(_0x1f34d6){var _0xad8b52=this;return new Promise(function(_0x3896e6,_0x56d6d7){if(_0x1f34d6['agent']&&_0x1f34d6[_0xc4b6('0x3f')]['id']){try{if(_0x2b7aab[_0xc4b6('0x40')][_0x1f34d6['agent']['id']]){_0x2b7aab[_0xc4b6('0x40')][_0x1f34d6[_0xc4b6('0x3f')]['id']][_0xc4b6('0x41')]=![];_0x2b7aab[_0xc4b6('0x40')][_0x1f34d6[_0xc4b6('0x3f')]['id']]['busyQueue']=undefined;}return _0x3896e6({'code':0xc8,'message':_0x1f34d6});}catch(_0x2e3b21){logger[_0xc4b6('0x38')](_0x2e3b21['stack']);return _0x56d6d7(_0xad8b52[_0xc4b6('0x38')](0x1f4,_0x2e3b21));}}logger[_0xc4b6('0x38')]('message\x20is\x20empty');return _0x56d6d7(_0xad8b52['error'](0x1f4,_0xc4b6('0x49')));});},'AbandonInteraction':function(_0x5a04f7){var _0x4d0bd3=this;return new Promise(function(_0x20eaf4,_0xdf65c2){if(_0x5a04f7['channel']&&_0x5a04f7[_0xc4b6('0x17')]&&_0x5a04f7[_0xc4b6('0x17')]['id']){try{var _0x502153=getId(_0x5a04f7[_0xc4b6('0x15')],_0x5a04f7[_0xc4b6('0x16')]?_0x5a04f7[_0xc4b6('0x16')]['id']:0x0,_0x5a04f7[_0xc4b6('0x17')]?_0x5a04f7['interaction']['id']:0x0);if(_0x2b7aab[_0xc4b6('0x39')][_0x502153]){_0x2b7aab[_0xc4b6('0x39')][_0x502153][_0xc4b6('0x3b')](_0xc4b6('0x43'));}return _0x20eaf4({'code':0xc8,'message':_0x5a04f7});}catch(_0x1d0a1b){logger[_0xc4b6('0x38')](_0x1d0a1b[_0xc4b6('0x4a')]);return _0xdf65c2(_0x4d0bd3[_0xc4b6('0x38')](0x1f4,_0x1d0a1b));}}logger[_0xc4b6('0x38')](_0xc4b6('0x49'));return _0xdf65c2(_0x4d0bd3[_0xc4b6('0x38')](0x1f4,_0xc4b6('0x49')));});},'AgentCapacity':function(_0x36188e){var _0x2f0c5d=this;return new Promise(function(_0x319af1,_0x1ce050){if(_0x2b7aab['agents'][_0xc4b6('0x4b')](_0x36188e['id'])){for(var _0x32073b in _0x36188e['capacity']){if(_0x36188e[_0xc4b6('0x4c')][_0xc4b6('0x4b')](_0x32073b)){if(_0x2b7aab[_0xc4b6('0x40')][_0x36188e['id']][_0xc4b6('0x4b')](_0x32073b+_0xc4b6('0x4d'))){_0x2b7aab[_0xc4b6('0x40')][_0x36188e['id']][_0x32073b+_0xc4b6('0x4d')]=parseInt(_0x36188e[_0xc4b6('0x4c')][_0x32073b],0xa);}}}_0x2b7aab[_0xc4b6('0x40')][_0x36188e['id']][_0xc4b6('0x4e')]();return _0x319af1({'code':0xc8,'message':_0x2b7aab[_0xc4b6('0x40')][_0x36188e['id']]});}else{return _0x1ce050(_0x2f0c5d[_0xc4b6('0x38')](0x1f4,_0xc4b6('0x4f')));}});},'Agents':function(_0x304aa2){return new Promise(function(_0x33b128,_0x157831){var _0x16cd26=_[_0xc4b6('0x50')](_0x2b7aab[_0xc4b6('0x40')]);_0x33b128({'count':_0x16cd26[_0xc4b6('0x1a')],'rows':_0x16cd26});});},'ChatQueues':function(_0x452cac){return new Promise(function(_0x3df53e,_0x11b241){var _0x520cbd=[];for(var _0x1961da in _0x2b7aab[_0xc4b6('0x51')]){if(_0x2b7aab[_0xc4b6('0x51')][_0xc4b6('0x4b')](_0x1961da)){var _0x1349eb=_0x2b7aab['chatQueues'][_0x1961da];var _0x38c984={'id':_0x1349eb['id'],'available':_0x1349eb['available'],'loggedIn':_0x1349eb[_0xc4b6('0x52')],'name':_0x1349eb[_0xc4b6('0x53')],'paused':_0x1349eb[_0xc4b6('0x54')],'waiting':_0x1349eb['waiting']};_0x520cbd[_0xc4b6('0x24')](_0x38c984);}}_0x3df53e({'count':_0x520cbd[_0xc4b6('0x1a')],'rows':_0x520cbd});});},'MailQueues':function(_0x3dd54e){return new Promise(function(_0x4f4dfa,_0xeeeb63){var _0x37dfe4=[];for(var _0x157eaa in _0x2b7aab['mailQueues']){if(_0x2b7aab[_0xc4b6('0x55')][_0xc4b6('0x4b')](_0x157eaa)){var _0x36e8ba=_0x2b7aab['mailQueues'][_0x157eaa];var _0x8bce4d={'id':_0x36e8ba['id'],'available':_0x36e8ba[_0xc4b6('0x56')],'loggedIn':_0x36e8ba['loggedIn'],'name':_0x36e8ba[_0xc4b6('0x53')],'paused':_0x36e8ba[_0xc4b6('0x54')],'waiting':_0x36e8ba[_0xc4b6('0x57')]};_0x37dfe4[_0xc4b6('0x24')](_0x8bce4d);}}_0x4f4dfa({'count':_0x37dfe4[_0xc4b6('0x1a')],'rows':_0x37dfe4});});},'OpenchannelQueues':function(_0x39459a){return new Promise(function(_0x7f1ba3,_0x276e33){var _0x89be5d=[];for(var _0x3c30ee in _0x2b7aab['openchannelQueues']){if(_0x2b7aab[_0xc4b6('0x58')][_0xc4b6('0x4b')](_0x3c30ee)){var _0xe1060=_0x2b7aab[_0xc4b6('0x58')][_0x3c30ee];var _0x5b2936={'id':_0xe1060['id'],'available':_0xe1060[_0xc4b6('0x56')],'loggedIn':_0xe1060[_0xc4b6('0x52')],'name':_0xe1060[_0xc4b6('0x53')],'paused':_0xe1060[_0xc4b6('0x54')],'waiting':_0xe1060['waiting']};_0x89be5d['push'](_0x5b2936);}}_0x7f1ba3({'count':_0x89be5d['length'],'rows':_0x89be5d});});},'SmsQueues':function(_0x55a47d){return new Promise(function(_0x560ee0,_0x32c2e2){var _0x23c967=[];for(var _0x154c02 in _0x2b7aab[_0xc4b6('0x59')]){if(_0x2b7aab[_0xc4b6('0x59')][_0xc4b6('0x4b')](_0x154c02)){var _0x5f15a0=_0x2b7aab[_0xc4b6('0x59')][_0x154c02];var _0x298ea3={'id':_0x5f15a0['id'],'available':_0x5f15a0[_0xc4b6('0x56')],'loggedIn':_0x5f15a0[_0xc4b6('0x52')],'name':_0x5f15a0[_0xc4b6('0x53')],'paused':_0x5f15a0[_0xc4b6('0x54')],'waiting':_0x5f15a0['waiting']};_0x23c967[_0xc4b6('0x24')](_0x298ea3);}}_0x560ee0({'count':_0x23c967[_0xc4b6('0x1a')],'rows':_0x23c967});});},'FaxQueues':function(_0x60689d){return new Promise(function(_0xb52a87,_0x51ffc6){var _0x255655=[];for(var _0x5066dc in _0x2b7aab[_0xc4b6('0x5a')]){if(_0x2b7aab['faxQueues'][_0xc4b6('0x4b')](_0x5066dc)){var _0x4ef015=_0x2b7aab[_0xc4b6('0x5a')][_0x5066dc];var _0xeda299={'id':_0x4ef015['id'],'available':_0x4ef015[_0xc4b6('0x56')],'loggedIn':_0x4ef015[_0xc4b6('0x52')],'name':_0x4ef015['name'],'paused':_0x4ef015['paused'],'waiting':_0x4ef015['waiting']};_0x255655[_0xc4b6('0x24')](_0xeda299);}}_0xb52a87({'count':_0x255655[_0xc4b6('0x1a')],'rows':_0x255655});});},'WhatsappQueues':function(_0x3ea8ea){return new Promise(function(_0x5c3174,_0x2ad98d){var _0x5ec3fa=[];for(var _0x5b1ed1 in _0x2b7aab['whatsappQueues']){if(_0x2b7aab['whatsappQueues']['hasOwnProperty'](_0x5b1ed1)){var _0x78e78e=_0x2b7aab[_0xc4b6('0x5b')][_0x5b1ed1];var _0x10034e={'id':_0x78e78e['id'],'available':_0x78e78e[_0xc4b6('0x56')],'loggedIn':_0x78e78e[_0xc4b6('0x52')],'name':_0x78e78e[_0xc4b6('0x53')],'paused':_0x78e78e['paused'],'waiting':_0x78e78e['waiting']};_0x5ec3fa[_0xc4b6('0x24')](_0x10034e);}}_0x5c3174({'count':_0x5ec3fa[_0xc4b6('0x1a')],'rows':_0x5ec3fa});});},'ChatQueuesWaitingInteractions':function(_0xdc7f35){return new Promise(function(_0x197c29,_0x5cd346){var _0x45fddf=_[_0xc4b6('0x50')](_0x2b7aab[_0xc4b6('0x5c')]);_0x197c29({'count':_0x45fddf['length'],'rows':_0x45fddf});});},'MailQueuesWaitingInteractions':function(_0x3c1f92){return new Promise(function(_0x53910d,_0x1ed794){var _0x2735d3=_[_0xc4b6('0x50')](_0x2b7aab[_0xc4b6('0x5d')]);_0x53910d({'count':_0x2735d3[_0xc4b6('0x1a')],'rows':_0x2735d3});});},'OpenchannelQueuesWaitingInteractions':function(_0x1a2139){return new Promise(function(_0x204aab,_0x17f6c9){var _0x4fc3fb=_[_0xc4b6('0x50')](_0x2b7aab['openchannelQueuesWaitingInteractions']);_0x204aab({'count':_0x4fc3fb[_0xc4b6('0x1a')],'rows':_0x4fc3fb});});},'SmsQueuesWaitingInteractions':function(_0x13c381){return new Promise(function(_0x24b438,_0x48e080){var _0x579494=_[_0xc4b6('0x50')](_0x2b7aab[_0xc4b6('0x5e')]);_0x24b438({'count':_0x579494[_0xc4b6('0x1a')],'rows':_0x579494});});},'FaxQueuesWaitingInteractions':function(_0x5d4eb9){return new Promise(function(_0x311091,_0x150a0b){var _0x47e16a=_[_0xc4b6('0x50')](_0x2b7aab[_0xc4b6('0x5f')]);_0x311091({'count':_0x47e16a[_0xc4b6('0x1a')],'rows':_0x47e16a});});},'WhatsappQueuesWaitingInteractions':function(_0x2635a3){return new Promise(function(_0x2e6614,_0x5f13ee){var _0x40279a=_['values'](_0x2b7aab[_0xc4b6('0x60')]);_0x2e6614({'count':_0x40279a['length'],'rows':_0x40279a});});}};var _0x1a8550=jayson[_0xc4b6('0x61')](_0x41be8d)['http']();_0x1a8550['on']('error',function(_0x1ca354){logger[_0xc4b6('0x38')](JSON['stringify'](_0x1ca354));return _0x4f0682(_0x1ca354);});_0x1a8550[_0xc4b6('0x14')](0x232c,_0xc4b6('0x62'),function(){console[_0xc4b6('0x63')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x17b63b('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index 019a7bf..a163d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03bf=['condition','rules','stop','length','push','Command','format','iftime\x20%s','message','indexOf','catch','[%s][INTERVAL]\x20%s','all','some','info','[%s][INTERVAL]\x20%s\x20%s','join','log','\x20|\x20','stack','bluebird','lodash','../../../config/logger','routing','client','http','request','then','error'];(function(_0x41bfa8,_0x2222f0){var _0x5a689e=function(_0x9c9b27){while(--_0x9c9b27){_0x41bfa8['push'](_0x41bfa8['shift']());}};_0x5a689e(++_0x2222f0);}(_0x03bf,0x136));var _0xf03b=function(_0x26dd97,_0x57e1e8){_0x26dd97=_0x26dd97-0x0;var _0x5db606=_0x03bf[_0x26dd97];return _0x5db606;};'use strict';var util=require('util');var BPromise=require(_0xf03b('0x0'));var jayson=require('jayson/promise');var _=require(_0xf03b('0x1'));var logger=require(_0xf03b('0x2'))(_0xf03b('0x3'));var client=jayson[_0xf03b('0x4')][_0xf03b('0x5')]({'port':0x232a});function request(_0x20774c,_0x5b2e5f){return new BPromise(function(_0x4428ad,_0x3d233e){return client[_0xf03b('0x6')](_0x20774c,_0x5b2e5f)[_0xf03b('0x7')](function(_0x273c72){if(_0x273c72[_0xf03b('0x8')]){return _0x3d233e(_0x273c72['error']['message']);}else{return _0x4428ad(_0x273c72['result']);}})['catch'](function(_0x5afcfd){return _0x3d233e(_0x5afcfd);});});}exports[_0xf03b('0x9')]=function(_0x4669c6,_0x2fbadd,_0x1e363d){return function(_0x306fe1){if(_0x1e363d['rules']&&!_0x1e363d[_0xf03b('0xa')][_0x4669c6]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x4669c6);return _0x306fe1[_0xf03b('0xb')]();}var _0x13487d=[];for(var _0x50f40d=0x0;_0x50f40d<_0x2fbadd[_0xf03b('0xc')];_0x50f40d+=0x1){_0x13487d[_0xf03b('0xd')](request(_0xf03b('0xe'),{'command':util[_0xf03b('0xf')](_0xf03b('0x10'),_0x2fbadd[_0x50f40d])})[_0xf03b('0x7')](function(_0x58748b){return _0x58748b&&_0x58748b[_0xf03b('0x11')]&&_0x58748b['message'][_0xf03b('0x12')]('true')>=0x0?!![]:![];})[_0xf03b('0x13')](function(_0x52163e){logger[_0xf03b('0x8')](_0xf03b('0x14'),_0x4669c6,_0x2fbadd[_0x50f40d]);}));}BPromise[_0xf03b('0x15')](_0x13487d)[_0xf03b('0x7')](function(_0x4758d1){var _0x63e160=_[_0xf03b('0x16')](_0x4758d1);logger[_0xf03b('0x17')](_0xf03b('0x18'),_0x4669c6,_0x2fbadd[_0xf03b('0x19')]('\x20|\x20'),_0x63e160);_0x306fe1['when'](_0x63e160);})[_0xf03b('0x13')](function(_0xaefcad){console[_0xf03b('0x1a')](_0xaefcad);logger[_0xf03b('0x8')](_0xf03b('0x18'),_0x4669c6,_0x2fbadd[_0xf03b('0x19')](_0xf03b('0x1b')),_0xaefcad[_0xf03b('0x1c')]);_0x306fe1[_0xf03b('0xb')]();});};};
\ No newline at end of file
+var _0x7c22=['rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','push','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','stop','util','bluebird','jayson/promise','../../../config/logger','routing','client','http','request','then','error','message','result','catch','condition'];(function(_0x350a8b,_0xbad336){var _0x168990=function(_0x23fb70){while(--_0x23fb70){_0x350a8b['push'](_0x350a8b['shift']());}};_0x168990(++_0xbad336);}(_0x7c22,0x196));var _0x27c2=function(_0x5e3f17,_0x31e5de){_0x5e3f17=_0x5e3f17-0x0;var _0x3af83f=_0x7c22[_0x5e3f17];return _0x3af83f;};'use strict';var util=require(_0x27c2('0x0'));var BPromise=require(_0x27c2('0x1'));var jayson=require(_0x27c2('0x2'));var _=require('lodash');var logger=require(_0x27c2('0x3'))(_0x27c2('0x4'));var client=jayson[_0x27c2('0x5')][_0x27c2('0x6')]({'port':0x232a});function request(_0x35e502,_0xe1e597){return new BPromise(function(_0x27de6f,_0x518edc){return client[_0x27c2('0x7')](_0x35e502,_0xe1e597)[_0x27c2('0x8')](function(_0x41960c){if(_0x41960c[_0x27c2('0x9')]){return _0x518edc(_0x41960c[_0x27c2('0x9')][_0x27c2('0xa')]);}else{return _0x27de6f(_0x41960c[_0x27c2('0xb')]);}})[_0x27c2('0xc')](function(_0x4dbdf8){return _0x518edc(_0x4dbdf8);});});}exports[_0x27c2('0xd')]=function(_0x46e9fb,_0x2a248e,_0x27dbd5){return function(_0x2a6c47){if(_0x27dbd5[_0x27c2('0xe')]&&!_0x27dbd5[_0x27c2('0xe')][_0x46e9fb]){logger[_0x27c2('0xf')](_0x27c2('0x10'),_0x46e9fb);return _0x2a6c47['stop']();}var _0x329218=[];for(var _0x2e555c=0x0;_0x2e555c<_0x2a248e['length'];_0x2e555c+=0x1){_0x329218[_0x27c2('0x11')](request(_0x27c2('0x12'),{'command':util[_0x27c2('0x13')](_0x27c2('0x14'),_0x2a248e[_0x2e555c])})[_0x27c2('0x8')](function(_0x8cab49){return _0x8cab49&&_0x8cab49['message']&&_0x8cab49[_0x27c2('0xa')][_0x27c2('0x15')](_0x27c2('0x16'))>=0x0?!![]:![];})['catch'](function(_0x7a736a){logger[_0x27c2('0x9')](_0x27c2('0x17'),_0x46e9fb,_0x2a248e[_0x2e555c]);}));}BPromise[_0x27c2('0x18')](_0x329218)[_0x27c2('0x8')](function(_0x27110f){var _0x2272c0=_['some'](_0x27110f);logger[_0x27c2('0xf')](_0x27c2('0x19'),_0x46e9fb,_0x2a248e[_0x27c2('0x1a')](_0x27c2('0x1b')),_0x2272c0);_0x2a6c47[_0x27c2('0x1c')](_0x2272c0);})[_0x27c2('0xc')](function(_0x19b599){console['log'](_0x19b599);logger[_0x27c2('0x9')](_0x27c2('0x19'),_0x46e9fb,_0x2a248e[_0x27c2('0x1a')](_0x27c2('0x1b')),_0x19b599['stack']);_0x2a6c47[_0x27c2('0x1d')]();});};};
\ No newline at end of file
index 18fa2fd..1470294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','talktime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','[%s][agents][hangup]','util','./utils','info','format','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','agentcalledAt','now','connectedlinename','error','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','holdtime','ringtime','push','forIn'];(function(_0x592d7c,_0x405966){var _0xaa8d19=function(_0x20a67a){while(--_0x20a67a){_0x592d7c['push'](_0x592d7c['shift']());}};_0xaa8d19(++_0x405966);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var utils=require(_0x0baf('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x1e212d,_0x263f79){utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x1e212d[_0x0baf('0x4')],_0x1e212d[_0x0baf('0x5')],_0x1e212d[_0x0baf('0x6')],_0x1e212d[_0x0baf('0x7')],_0x1e212d[_0x0baf('0x8')],_0x1e212d[_0x0baf('0x9')],_0x1e212d[_0x0baf('0xa')],_0x1e212d[_0x0baf('0xb')]));if(_0x1e212d[_0x0baf('0x6')]){utils['getVoiceQueueByName'](_0x1e212d[_0x0baf('0x6')])['then'](function(_0x4605c3){if(_0x4605c3){_0x1e212d[_0x0baf('0xc')]=_0x4605c3[_0x0baf('0xc')];_0x1e212d[_0x0baf('0xd')]=_0x1e212d[_0x0baf('0xe')]?_0x4605c3[_0x0baf('0xf')]:![];_0x1e212d[_0x0baf('0x10')]=_0x1e212d[_0x0baf('0xd')]?_0x4605c3[_0x0baf('0x11')]:0x0;}utils[_0x0baf('0x12')](_0x0baf('0x13'),_0x1e212d);});}else{utils['request']('CreateVoiceAgentReport',_0x1e212d);}if(_0x263f79){delete transfers[_0x1e212d[_0x0baf('0x4')]];}else{delete agents[_0x1e212d[_0x0baf('0x14')]];}}exports[_0x0baf('0x15')]=function(_0x13df17){try{utils['debug'](util[_0x0baf('0x3')]('[%s][agents][agentcalled]',_0x13df17[_0x0baf('0x4')]),_0x13df17);agents[_0x13df17[_0x0baf('0x14')]]=_0x13df17;agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x16')]=utils[_0x0baf('0x17')]();agents[_0x13df17[_0x0baf('0x14')]]['lastevent']='called';agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0xa')]=null;agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x18')]=null;utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x13df17[_0x0baf('0x4')],agents[_0x13df17[_0x0baf('0x14')]][_0x0baf('0x7')],_0x13df17[_0x0baf('0x14')]));}catch(_0x47070d){utils[_0x0baf('0x19')](util['format']('[%s][agents][agentcalled]',_0x13df17[_0x0baf('0x4')]),_0x47070d);}};exports[_0x0baf('0x1a')]=function(_0x32e839){try{if(!_[_0x0baf('0x1b')](agents[_0x32e839[_0x0baf('0x14')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x1d'),_0x32e839[_0x0baf('0x4')]),_0x32e839);utils[_0x0baf('0x2')](util['format'](_0x0baf('0x1e'),_0x32e839['uniqueid'],agents[_0x32e839[_0x0baf('0x14')]]['membername'],_0x32e839['destuniqueid']));agents[_0x32e839[_0x0baf('0x14')]]['agentringnoanswer']=!![];agents[_0x32e839['destuniqueid']][_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();agents[_0x32e839[_0x0baf('0x14')]][_0x0baf('0xb')]=_0x0baf('0x20');agents[_0x32e839['destuniqueid']][_0x0baf('0x21')]=_0x0baf('0x20');agents[_0x32e839[_0x0baf('0x14')]][_0x0baf('0x22')]=_0x32e839[_0x0baf('0x23')]?parseInt(_0x32e839[_0x0baf('0x23')])/0x3e8:0x0;agents[_0x32e839[_0x0baf('0x14')]]['talktime']=0x0;unanswered[_0x0baf('0x24')](_0x32e839[_0x0baf('0x14')]);}}catch(_0xcaf13d){utils[_0x0baf('0x19')](util['format'](_0x0baf('0x1d'),_0x32e839[_0x0baf('0x4')]),_0xcaf13d);}};exports['queuecallerabandon']=function(_0x44ec31){try{_[_0x0baf('0x25')](agents,function(_0x478ce8,_0xb4dbb1){if(_0x478ce8[_0x0baf('0x4')]==_0x44ec31[_0x0baf('0x4')]&&!_[_0x0baf('0x26')](unanswered,_0x478ce8['destuniqueid'])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x27'),_0x44ec31[_0x0baf('0x4')]),_0x44ec31);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x28'),_0x44ec31[_0x0baf('0x4')],_0x478ce8[_0x0baf('0x7')],_0x478ce8[_0x0baf('0x14')]));_0x478ce8[_0x0baf('0x1a')]=!![];_0x478ce8[_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();_0x478ce8[_0x0baf('0xb')]='abandoned';_0x478ce8[_0x0baf('0x21')]='abandoned';_0x478ce8[_0x0baf('0x22')]=_0x44ec31[_0x0baf('0x22')];_0x478ce8[_0x0baf('0x29')]=0x0;writeDB(_0x478ce8);}});}catch(_0x3d65f2){utils['error'](util[_0x0baf('0x3')](_0x0baf('0x27'),_0x44ec31['uniqueid']),_0x3d65f2);}};exports[_0x0baf('0x2a')]=function(_0x2447c2){try{if(agents[_0x2447c2[_0x0baf('0x14')]]){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x2b'),_0x2447c2[_0x0baf('0x4')]),_0x2447c2);utils[_0x0baf('0x2')](util['format'](_0x0baf('0x2c'),_0x2447c2[_0x0baf('0x4')],agents[_0x2447c2['destuniqueid']][_0x0baf('0x7')],_0x2447c2['destuniqueid']));agents[_0x2447c2['destuniqueid']][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();agents[_0x2447c2['destuniqueid']]['connectedlinenum']=_0x2447c2[_0x0baf('0xa')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0x18')]=_0x2447c2[_0x0baf('0x18')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0x22')]=_0x2447c2[_0x0baf('0x23')];agents[_0x2447c2[_0x0baf('0x14')]][_0x0baf('0xb')]=_0x0baf('0x2e');_[_0x0baf('0x25')](agents,function(_0x148540,_0x354cb1){if(_0x148540[_0x0baf('0x14')]!=_0x2447c2['destuniqueid']&&_0x148540[_0x0baf('0x4')]==_0x2447c2[_0x0baf('0x4')]){_0x148540['talktime']=0x0;_0x148540[_0x0baf('0x22')]=_0x2447c2[_0x0baf('0x23')];_0x148540[_0x0baf('0x1a')]=!![];_0x148540[_0x0baf('0x1f')]=utils[_0x0baf('0x17')]();_0x148540[_0x0baf('0xb')]='answered_elsewhere';_0x148540[_0x0baf('0x21')]=_0x0baf('0x2f');_0x148540['answeredelsewheredestinationuniqueid']=_0x2447c2[_0x0baf('0x14')];_0x148540[_0x0baf('0x30')]=_0x2447c2[_0x0baf('0x7')];writeDB(_0x148540);}});}}catch(_0x57903e){utils['error'](util[_0x0baf('0x3')](_0x0baf('0x2b'),_0x2447c2[_0x0baf('0x4')]),_0x57903e);}};exports[_0x0baf('0xe')]=function(_0x2b6d54){try{if(!_[_0x0baf('0x1b')](agents[_0x2b6d54[_0x0baf('0x14')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x31'),_0x2b6d54['uniqueid']),_0x2b6d54);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x32'),_0x2b6d54[_0x0baf('0x4')],agents[_0x2b6d54[_0x0baf('0x14')]]['membername'],_0x2b6d54[_0x0baf('0x14')]));agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0xe')]=!![];agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x33')]=utils['now']();agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x29')]=utils[_0x0baf('0x34')](agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x33')],agents[_0x2b6d54[_0x0baf('0x14')]][_0x0baf('0x2d')]);agents[_0x2b6d54['destuniqueid']][_0x0baf('0x21')]=_0x2b6d54[_0x0baf('0x21')];agents[_0x2b6d54[_0x0baf('0x14')]]['lastevent']=_0x0baf('0x35');writeDB(agents[_0x2b6d54[_0x0baf('0x14')]]);}}catch(_0x10fa62){utils[_0x0baf('0x19')](util[_0x0baf('0x3')](_0x0baf('0x31'),_0x2b6d54[_0x0baf('0x4')]),_0x10fa62);}};exports['blindtransfer']=function(_0x22c451){try{if(!_[_0x0baf('0x1b')](agents[_0x22c451[_0x0baf('0x36')]])){utils[_0x0baf('0x1c')](util[_0x0baf('0x3')](_0x0baf('0x37'),_0x22c451[_0x0baf('0x4')]),_0x22c451);utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x38'),_0x22c451[_0x0baf('0x4')],agents[_0x22c451['transfereruniqueid']]['membername'],agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x4')]));agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x39')]=!![];agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x3a')]=_0x0baf('0x3b');agents[_0x22c451['transfereruniqueid']][_0x0baf('0x3c')]=_0x22c451[_0x0baf('0x3d')];agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x3e')]=agents[_0x22c451[_0x0baf('0x36')]][_0x0baf('0x4')];}}catch(_0x5e1849){utils[_0x0baf('0x19')](util['format'](_0x0baf('0x37'),_0x22c451['uniqueid']),_0x5e1849);}};exports[_0x0baf('0x3f')]=function(_0x5eaeb2){try{utils[_0x0baf('0x1c')](util['format'](_0x0baf('0x40'),_0x5eaeb2[_0x0baf('0x41')]),_0x5eaeb2);if(_0x5eaeb2[_0x0baf('0x41')]==_0x5eaeb2[_0x0baf('0x42')]){if(!_[_0x0baf('0x1b')](agents[_0x5eaeb2['secondtransfereruniqueid']])){utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x43'),_0x5eaeb2[_0x0baf('0x41')],agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x7')]));agents[_0x5eaeb2['secondtransfereruniqueid']][_0x0baf('0x39')]=!![];agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x3a')]=_0x0baf('0x45');agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x3c')]=_0x5eaeb2[_0x0baf('0x46')];agents[_0x5eaeb2['secondtransfereruniqueid']]['transferuniqueid']=_0x5eaeb2[_0x0baf('0x41')];}if(_0x5eaeb2[_0x0baf('0x47')]&&agents[_0x5eaeb2[_0x0baf('0x47')]]){agents[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x48')]=0x1;transfers[_0x5eaeb2[_0x0baf('0x47')]]=_[_0x0baf('0x49')](agents[_0x5eaeb2[_0x0baf('0x47')]]);transfers[_0x5eaeb2[_0x0baf('0x47')]]['calleridnum']=agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x9')];transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x4a')]=agents[_0x5eaeb2[_0x0baf('0x44')]][_0x0baf('0x4a')];transfers[_0x5eaeb2[_0x0baf('0x47')]]['agentcalledAt']=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x22')]=0x0;transfers[_0x5eaeb2[_0x0baf('0x47')]][_0x0baf('0x48')]=0x2;}}else if(_0x5eaeb2['secondtransfereruniqueid']==_0x5eaeb2[_0x0baf('0x4b')]){if(!_['isNil'](agents[_0x5eaeb2[_0x0baf('0x41')]])){utils['info'](util['format'](_0x0baf('0x43'),_0x5eaeb2['origtransfereruniqueid'],agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x7')]));agents[_0x5eaeb2['origtransfereruniqueid']][_0x0baf('0x39')]=!![];agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x3a')]='ATTENDED';agents[_0x5eaeb2['origtransfereruniqueid']][_0x0baf('0x3c')]=_0x5eaeb2[_0x0baf('0x4c')];agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x3e')]=_0x5eaeb2[_0x0baf('0x44')];}if(_0x5eaeb2['transfertargetuniqueid']&&agents[_0x5eaeb2[_0x0baf('0x4d')]]){agents[_0x5eaeb2['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x5eaeb2['transfertargetuniqueid']]=_[_0x0baf('0x49')](agents[_0x5eaeb2['transfertargetuniqueid']]);transfers[_0x5eaeb2['transfertargetuniqueid']][_0x0baf('0x9')]=agents[_0x5eaeb2[_0x0baf('0x41')]][_0x0baf('0x9')];transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x4a')]=agents[_0x5eaeb2[_0x0baf('0x41')]]['calleridname'];transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x16')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x2d')]=utils[_0x0baf('0x17')]();transfers[_0x5eaeb2['transfertargetuniqueid']][_0x0baf('0x22')]=0x0;transfers[_0x5eaeb2[_0x0baf('0x4d')]][_0x0baf('0x48')]=0x2;}}}catch(_0x5d4053){utils[_0x0baf('0x19')](util[_0x0baf('0x3')](_0x0baf('0x40'),_0x5eaeb2[_0x0baf('0x41')]),_0x5d4053);}};exports[_0x0baf('0x4e')]=function(_0x27a959){try{utils[_0x0baf('0x1c')](util['format']('[%s][agents][hangup]',_0x27a959['uniqueid']),_0x27a959);if(agents[_0x27a959[_0x0baf('0x4')]]&&agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]===_0x0baf('0x20')){if(_0x27a959[_0x0baf('0x4f')]==='21'){agents[_0x27a959[_0x0baf('0x4')]]['reason']='rejected';agents[_0x27a959[_0x0baf('0x4')]]['lastevent']=_0x0baf('0x50');}utils[_0x0baf('0x2')](util['format'](_0x0baf('0x51'),_0x27a959[_0x0baf('0x4')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x7')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(agents[_0x27a959[_0x0baf('0x4')]]);var _0x5ea0f3=unanswered['indexOf'](_0x27a959['uniqueid']);if(_0x5ea0f3>-0x1){unanswered['splice'](_0x5ea0f3,0x1);}}if(transfers[_0x27a959['uniqueid']]){transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xe')]=!![];transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x33')]=utils['now']();transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x29')]=utils['diffTime'](transfers[_0x27a959['uniqueid']][_0x0baf('0x33')],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x2d')]);transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]=_0x0baf('0x52');transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]='complete';utils[_0x0baf('0x2')](util[_0x0baf('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x27a959[_0x0baf('0x4')],transfers[_0x27a959[_0x0baf('0x4')]]['membername'],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],transfers[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(transfers[_0x27a959[_0x0baf('0x4')]],!![]);}if(agents[_0x27a959['uniqueid']]&&agents[_0x27a959['uniqueid']][_0x0baf('0x2d')]){agents[_0x27a959[_0x0baf('0x4')]]['agentcomplete']=!![];agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x33')]=utils[_0x0baf('0x17')]();agents[_0x27a959['uniqueid']][_0x0baf('0x29')]=utils[_0x0baf('0x34')](agents[_0x27a959[_0x0baf('0x4')]]['agentcompleteAt'],agents[_0x27a959[_0x0baf('0x4')]]['agentconnectAt']);agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')]=agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x39')]?_0x0baf('0x39'):'agent';agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]='complete';utils[_0x0baf('0x2')](util[_0x0baf('0x3')](_0x0baf('0x51'),_0x27a959[_0x0baf('0x4')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x7')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0x21')],agents[_0x27a959[_0x0baf('0x4')]][_0x0baf('0xb')]));writeDB(agents[_0x27a959[_0x0baf('0x4')]]);}}catch(_0x2c2f09){utils['error'](util['format'](_0x0baf('0x53'),_0x27a959[_0x0baf('0x4')]),_0x2c2f09);}};
\ No newline at end of file
+var _0x6cb4=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','[%s][agents][hangup]','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','interface','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete','acw','agentacw','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','push','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','agentcompleteAt','complete','transfereruniqueid','[%s][agents][blindtransfer]','transfer','blind','transferexten','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','secondtransfererlinkedid','transfertype','secondtransfererexten','transfertargetuniqueid','hangup','cause'];(function(_0xdbbb7c,_0x19e8e2){var _0x23643f=function(_0x47c578){while(--_0x47c578){_0xdbbb7c['push'](_0xdbbb7c['shift']());}};_0x23643f(++_0x19e8e2);}(_0x6cb4,0xff));var _0x46cb=function(_0x521656,_0x24fd6d){_0x521656=_0x521656-0x0;var _0x5c81e5=_0x6cb4[_0x521656];return _0x5c81e5;};'use strict';var _=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var utils=require(_0x46cb('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3403fc,_0x375bef){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x5'),_0x3403fc[_0x46cb('0x6')],_0x3403fc['channel'],_0x3403fc[_0x46cb('0x7')],_0x3403fc['membername'],_0x3403fc[_0x46cb('0x8')],_0x3403fc['calleridnum'],_0x3403fc[_0x46cb('0x9')],_0x3403fc[_0x46cb('0xa')]));if(_0x3403fc[_0x46cb('0x7')]){utils[_0x46cb('0xb')](_0x3403fc[_0x46cb('0x7')])[_0x46cb('0xc')](function(_0x56258a){if(_0x56258a){_0x3403fc[_0x46cb('0xd')]=_0x56258a[_0x46cb('0xd')];_0x3403fc['agentacw']=_0x3403fc[_0x46cb('0xe')]?_0x56258a[_0x46cb('0xf')]:![];_0x3403fc['acwtime']=_0x3403fc[_0x46cb('0x10')]?_0x56258a[_0x46cb('0x11')]:0x0;}utils['request']('CreateVoiceAgentReport',_0x3403fc);});}else{utils['request'](_0x46cb('0x12'),_0x3403fc);}if(_0x375bef){delete transfers[_0x3403fc[_0x46cb('0x6')]];}else{delete agents[_0x3403fc[_0x46cb('0x13')]];}}exports[_0x46cb('0x14')]=function(_0x553440){try{utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x16'),_0x553440[_0x46cb('0x6')]),_0x553440);agents[_0x553440[_0x46cb('0x13')]]=_0x553440;agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0x17')]=utils[_0x46cb('0x18')]();agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0xa')]=_0x46cb('0x19');agents[_0x553440['destuniqueid']][_0x46cb('0x9')]=null;agents[_0x553440['destuniqueid']][_0x46cb('0x1a')]=null;utils['info'](util['format']('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x553440[_0x46cb('0x6')],agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0x1b')],_0x553440[_0x46cb('0x13')]));}catch(_0xbd488f){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x16'),_0x553440[_0x46cb('0x6')]),_0xbd488f);}};exports[_0x46cb('0x1d')]=function(_0x149483){try{if(!_[_0x46cb('0x1e')](agents[_0x149483[_0x46cb('0x13')]])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x1f'),_0x149483[_0x46cb('0x6')]),_0x149483);utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x20'),_0x149483[_0x46cb('0x6')],agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0x1b')],_0x149483[_0x46cb('0x13')]));agents[_0x149483[_0x46cb('0x13')]]['agentringnoanswer']=!![];agents[_0x149483['destuniqueid']][_0x46cb('0x21')]=utils[_0x46cb('0x18')]();agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0xa')]=_0x46cb('0x22');agents[_0x149483['destuniqueid']][_0x46cb('0x23')]='timeout';agents[_0x149483['destuniqueid']]['holdtime']=_0x149483[_0x46cb('0x24')]?parseInt(_0x149483[_0x46cb('0x24')])/0x3e8:0x0;agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0x25')]=0x0;unanswered[_0x46cb('0x26')](_0x149483[_0x46cb('0x13')]);}}catch(_0x378dc7){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x1f'),_0x149483[_0x46cb('0x6')]),_0x378dc7);}};exports['queuecallerabandon']=function(_0x1ce88f){try{_[_0x46cb('0x27')](agents,function(_0x4c73bd,_0x49e0bc){if(_0x4c73bd[_0x46cb('0x6')]==_0x1ce88f['uniqueid']&&!_[_0x46cb('0x28')](unanswered,_0x4c73bd[_0x46cb('0x13')])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x29'),_0x1ce88f[_0x46cb('0x6')]),_0x1ce88f);utils['info'](util[_0x46cb('0x4')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x1ce88f[_0x46cb('0x6')],_0x4c73bd[_0x46cb('0x1b')],_0x4c73bd['destuniqueid']));_0x4c73bd[_0x46cb('0x1d')]=!![];_0x4c73bd[_0x46cb('0x21')]=utils[_0x46cb('0x18')]();_0x4c73bd[_0x46cb('0xa')]=_0x46cb('0x2a');_0x4c73bd['reason']=_0x46cb('0x2a');_0x4c73bd['holdtime']=_0x1ce88f[_0x46cb('0x2b')];_0x4c73bd[_0x46cb('0x25')]=0x0;writeDB(_0x4c73bd);}});}catch(_0x2630e0){utils['error'](util[_0x46cb('0x4')](_0x46cb('0x29'),_0x1ce88f['uniqueid']),_0x2630e0);}};exports[_0x46cb('0x2c')]=function(_0xf8be9){try{if(agents[_0xf8be9[_0x46cb('0x13')]]){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x2d'),_0xf8be9[_0x46cb('0x6')]),_0xf8be9);utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x2e'),_0xf8be9[_0x46cb('0x6')],agents[_0xf8be9['destuniqueid']]['membername'],_0xf8be9['destuniqueid']));agents[_0xf8be9[_0x46cb('0x13')]][_0x46cb('0x2f')]=utils[_0x46cb('0x18')]();agents[_0xf8be9[_0x46cb('0x13')]][_0x46cb('0x9')]=_0xf8be9[_0x46cb('0x9')];agents[_0xf8be9['destuniqueid']][_0x46cb('0x1a')]=_0xf8be9['connectedlinename'];agents[_0xf8be9['destuniqueid']][_0x46cb('0x2b')]=_0xf8be9['ringtime'];agents[_0xf8be9['destuniqueid']][_0x46cb('0xa')]='connect';_['forIn'](agents,function(_0x67bd14,_0x10017d){if(_0x67bd14[_0x46cb('0x13')]!=_0xf8be9[_0x46cb('0x13')]&&_0x67bd14[_0x46cb('0x6')]==_0xf8be9[_0x46cb('0x6')]){_0x67bd14[_0x46cb('0x25')]=0x0;_0x67bd14['holdtime']=_0xf8be9[_0x46cb('0x24')];_0x67bd14['agentringnoanswer']=!![];_0x67bd14[_0x46cb('0x21')]=utils['now']();_0x67bd14[_0x46cb('0xa')]=_0x46cb('0x30');_0x67bd14[_0x46cb('0x23')]='answered_elsewhere';_0x67bd14[_0x46cb('0x31')]=_0xf8be9[_0x46cb('0x13')];_0x67bd14['answeredelsewheremembername']=_0xf8be9[_0x46cb('0x1b')];writeDB(_0x67bd14);}});}}catch(_0x3d0b83){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x2d'),_0xf8be9['uniqueid']),_0x3d0b83);}};exports['agentcomplete']=function(_0x10bada){try{if(!_['isNil'](agents[_0x10bada[_0x46cb('0x13')]])){utils[_0x46cb('0x15')](util['format'](_0x46cb('0x32'),_0x10bada[_0x46cb('0x6')]),_0x10bada);utils[_0x46cb('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x10bada['uniqueid'],agents[_0x10bada['destuniqueid']][_0x46cb('0x1b')],_0x10bada[_0x46cb('0x13')]));agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0xe')]=!![];agents[_0x10bada[_0x46cb('0x13')]]['agentcompleteAt']=utils['now']();agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x25')]=utils['diffTime'](agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x33')],agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x2f')]);agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x23')]=_0x10bada[_0x46cb('0x23')];agents[_0x10bada['destuniqueid']]['lastevent']=_0x46cb('0x34');writeDB(agents[_0x10bada['destuniqueid']]);}}catch(_0x2c4ecb){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')]('[%s][agents][agentcomplete]',_0x10bada[_0x46cb('0x6')]),_0x2c4ecb);}};exports['blindtransfer']=function(_0x5c02c9){try{if(!_[_0x46cb('0x1e')](agents[_0x5c02c9[_0x46cb('0x35')]])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x36'),_0x5c02c9[_0x46cb('0x6')]),_0x5c02c9);utils[_0x46cb('0x3')](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x5c02c9[_0x46cb('0x6')],agents[_0x5c02c9[_0x46cb('0x35')]]['membername'],agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x6')]));agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x37')]=!![];agents[_0x5c02c9[_0x46cb('0x35')]]['transfertype']=_0x46cb('0x38');agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x39')]=_0x5c02c9['extension'];agents[_0x5c02c9[_0x46cb('0x35')]]['transferuniqueid']=agents[_0x5c02c9['transfereruniqueid']][_0x46cb('0x6')];}}catch(_0x2cfe6f){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x36'),_0x5c02c9['uniqueid']),_0x2cfe6f);}};exports[_0x46cb('0x3a')]=function(_0xd51a75){try{utils['debug'](util['format'](_0x46cb('0x3b'),_0xd51a75[_0x46cb('0x3c')]),_0xd51a75);if(_0xd51a75[_0x46cb('0x3c')]==_0xd51a75['origtransfererlinkedid']){if(!_[_0x46cb('0x1e')](agents[_0xd51a75[_0x46cb('0x3d')]])){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x3e'),_0xd51a75[_0x46cb('0x3c')],agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x1b')]));agents[_0xd51a75[_0x46cb('0x3d')]]['transfer']=!![];agents[_0xd51a75[_0x46cb('0x3d')]]['transfertype']=_0x46cb('0x3f');agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x39')]=_0xd51a75[_0x46cb('0x40')];agents[_0xd51a75['secondtransfereruniqueid']][_0x46cb('0x41')]=_0xd51a75[_0x46cb('0x3c')];}if(_0xd51a75[_0x46cb('0x42')]&&agents[_0xd51a75[_0x46cb('0x42')]]){agents[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x43')]=0x1;transfers[_0xd51a75[_0x46cb('0x42')]]=_[_0x46cb('0x44')](agents[_0xd51a75['transfereeuniqueid']]);transfers[_0xd51a75['transfereeuniqueid']]['calleridnum']=agents[_0xd51a75['secondtransfereruniqueid']][_0x46cb('0x45')];transfers[_0xd51a75[_0x46cb('0x42')]]['calleridname']=agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x46')];transfers[_0xd51a75[_0x46cb('0x42')]]['agentcalledAt']=utils['now']();transfers[_0xd51a75[_0x46cb('0x42')]]['agentconnectAt']=utils[_0x46cb('0x18')]();transfers[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x2b')]=0x0;transfers[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x43')]=0x2;}}else if(_0xd51a75[_0x46cb('0x3d')]==_0xd51a75[_0x46cb('0x47')]){if(!_[_0x46cb('0x1e')](agents[_0xd51a75[_0x46cb('0x3c')]])){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x3e'),_0xd51a75[_0x46cb('0x3c')],agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x1b')]));agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x37')]=!![];agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x48')]=_0x46cb('0x3f');agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x39')]=_0xd51a75[_0x46cb('0x49')];agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x41')]=_0xd51a75[_0x46cb('0x3d')];}if(_0xd51a75[_0x46cb('0x4a')]&&agents[_0xd51a75[_0x46cb('0x4a')]]){agents[_0xd51a75['transfertargetuniqueid']][_0x46cb('0x43')]=0x1;transfers[_0xd51a75[_0x46cb('0x4a')]]=_[_0x46cb('0x44')](agents[_0xd51a75[_0x46cb('0x4a')]]);transfers[_0xd51a75[_0x46cb('0x4a')]]['calleridnum']=agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x45')];transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x46')]=agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x46')];transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x17')]=utils['now']();transfers[_0xd51a75['transfertargetuniqueid']]['agentconnectAt']=utils[_0x46cb('0x18')]();transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x2b')]=0x0;transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x43')]=0x2;}}}catch(_0x1e3dca){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x3b'),_0xd51a75[_0x46cb('0x3c')]),_0x1e3dca);}};exports[_0x46cb('0x4b')]=function(_0x199dc0){try{utils[_0x46cb('0x15')](util[_0x46cb('0x4')]('[%s][agents][hangup]',_0x199dc0[_0x46cb('0x6')]),_0x199dc0);if(agents[_0x199dc0['uniqueid']]&&agents[_0x199dc0[_0x46cb('0x6')]]['reason']===_0x46cb('0x22')){if(_0x199dc0[_0x46cb('0x4c')]==='21'){agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')]='rejected';agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]='rejected';}utils['info'](util[_0x46cb('0x4')](_0x46cb('0x4d'),_0x199dc0[_0x46cb('0x6')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x1b')],agents[_0x199dc0['uniqueid']]['reason'],agents[_0x199dc0['uniqueid']][_0x46cb('0xa')]));writeDB(agents[_0x199dc0[_0x46cb('0x6')]]);var _0x30b303=unanswered[_0x46cb('0x4e')](_0x199dc0[_0x46cb('0x6')]);if(_0x30b303>-0x1){unanswered[_0x46cb('0x4f')](_0x30b303,0x1);}}if(transfers[_0x199dc0[_0x46cb('0x6')]]){transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xe')]=!![];transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x33')]=utils['now']();transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x25')]=utils[_0x46cb('0x50')](transfers[_0x199dc0[_0x46cb('0x6')]]['agentcompleteAt'],transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x2f')]);transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')]='agent';transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]=_0x46cb('0x34');utils[_0x46cb('0x3')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x199dc0['uniqueid'],transfers[_0x199dc0[_0x46cb('0x6')]]['membername'],transfers[_0x199dc0[_0x46cb('0x6')]]['reason'],transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]));writeDB(transfers[_0x199dc0[_0x46cb('0x6')]],!![]);}if(agents[_0x199dc0[_0x46cb('0x6')]]&&agents[_0x199dc0['uniqueid']][_0x46cb('0x2f')]){agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xe')]=!![];agents[_0x199dc0[_0x46cb('0x6')]]['agentcompleteAt']=utils['now']();agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x25')]=utils[_0x46cb('0x50')](agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x33')],agents[_0x199dc0[_0x46cb('0x6')]]['agentconnectAt']);agents[_0x199dc0['uniqueid']][_0x46cb('0x23')]=agents[_0x199dc0[_0x46cb('0x6')]]['transfer']?_0x46cb('0x37'):_0x46cb('0x51');agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]=_0x46cb('0x34');utils[_0x46cb('0x3')](util[_0x46cb('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x199dc0[_0x46cb('0x6')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x1b')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]));writeDB(agents[_0x199dc0[_0x46cb('0x6')]]);}}catch(_0x5567cc){utils['error'](util[_0x46cb('0x4')](_0x46cb('0x52'),_0x199dc0[_0x46cb('0x6')]),_0x5567cc);}};
\ No newline at end of file
index 1d6eb0c..0f8299e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd66=['lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','OutgoingSpoolFailed','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','calleridnum','exten','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','linkedid','destinationchannel','answertime','disposition','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','billableseconds','error','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','Queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','split','includes','noop','execif','gotoif','lastdata'];(function(_0x3af40b,_0x55323b){var _0x64bf5d=function(_0x1e847d){while(--_0x1e847d){_0x3af40b['push'](_0x3af40b['shift']());}};_0x64bf5d(++_0x55323b);}(_0xbd66,0xe6));var _0x6bd6=function(_0xbb9c9a,_0xbbd357){_0xbb9c9a=_0xbb9c9a-0x0;var _0xc28341=_0xbd66[_0xbb9c9a];return _0xc28341;};'use strict';var _=require(_0x6bd6('0x0'));var util=require(_0x6bd6('0x1'));var utils=require(_0x6bd6('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x6bd6('0x3'),_0x6bd6('0x4'),'FAILED',_0x6bd6('0x3'),_0x6bd6('0x3'),'NO\x20ANSWER',_0x6bd6('0x5'),_0x6bd6('0x6'),'FAILED',_0x6bd6('0x4'),_0x6bd6('0x4')];var channels={};function writeDB(_0x332491){var _0x1007f6;if(transfers[_0x6bd6('0x7')][_0x332491[_0x6bd6('0x8')]]){_0x1007f6=_0x332491['uniqueid'];_0x332491[_0x6bd6('0x8')]=transfers['blinds'][_0x332491[_0x6bd6('0x8')]][_0x6bd6('0x9')];}utils['info'](util['format'](_0x6bd6('0xa'),_0x332491[_0x6bd6('0x8')],_0x332491[_0x6bd6('0xb')],_0x332491[_0x6bd6('0xc')],_0x332491[_0x6bd6('0xd')],_0x332491[_0x6bd6('0xe')],_0x332491['calleridnum'],_0x332491[_0x6bd6('0xf')],_0x332491[_0x6bd6('0x10')]));if(_0x332491[_0x6bd6('0x11')]){utils[_0x6bd6('0x12')](_0x332491['accountcode'])[_0x6bd6('0x13')](function(_0x34b101){if(_0x34b101){_0x332491['UserId']=_0x34b101['id'];}utils[_0x6bd6('0x14')]('CreateVoiceCallReport',_0x332491);});}else{utils[_0x6bd6('0x14')](_0x6bd6('0x15'),_0x332491);}if(channels[_0x332491[_0x6bd6('0x8')]]){delete channels[_0x332491[_0x6bd6('0x8')]];}else if(_0x1007f6&&channels[_0x1007f6]){delete transfers[_0x6bd6('0x7')][_0x1007f6];delete channels[_0x1007f6];}}exports[_0x6bd6('0x16')]=function(_0x54ad64){try{utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x19'),_0x54ad64[_0x6bd6('0x8')]),_0x54ad64);if(_0x54ad64['uniqueid']==_0x54ad64['linkedid']&&_0x54ad64['channel']!=_0x6bd6('0x1a')){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x1c'),_0x54ad64['uniqueid'],_0x54ad64[_0x6bd6('0x1d')],_0x54ad64['exten']));channels[_0x54ad64[_0x6bd6('0x8')]]={'uniqueid':_0x54ad64[_0x6bd6('0x8')],'accountcode':_0x54ad64[_0x6bd6('0x11')],'source':_0x54ad64[_0x6bd6('0x1e')],'destination':_0x54ad64[_0x6bd6('0x1f')],'destinationcontext':_0x54ad64['context'],'channel':_0x54ad64[_0x6bd6('0xb')],'starttime':utils[_0x6bd6('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x6bd6('0x3'),'amaflags':_0x6bd6('0x21')};}}catch(_0x29a535){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x19'),_0x54ad64[_0x6bd6('0x8')]),_0x29a535);}};exports[_0x6bd6('0x22')]=function(_0x4aaacc){try{utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x23'),_0x4aaacc['uniqueid']),_0x4aaacc);if(!_[_0x6bd6('0x24')](channels[_0x4aaacc['uniqueid']])&&_0x4aaacc[_0x6bd6('0x25')]==0x6){utils['info'](util[_0x6bd6('0x18')](_0x6bd6('0x26'),_0x4aaacc[_0x6bd6('0x8')],_0x4aaacc[_0x6bd6('0x1d')],_0x4aaacc['channel']));if(_[_0x6bd6('0x24')](channels[_0x4aaacc[_0x6bd6('0x8')]][_0x6bd6('0x27')])){channels[_0x4aaacc[_0x6bd6('0x8')]][_0x6bd6('0x27')]=utils[_0x6bd6('0x20')]();}}else if(!_[_0x6bd6('0x24')](channels[_0x4aaacc['linkedid']])&&_0x4aaacc[_0x6bd6('0x25')]==0x6&&_0x4aaacc[_0x6bd6('0x1d')]!=_0x6bd6('0x28')){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x29'),_0x4aaacc[_0x6bd6('0x8')],_0x4aaacc['linkedid'],_0x4aaacc['context'],_0x4aaacc[_0x6bd6('0xb')]));channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x11')]=_0x4aaacc[_0x6bd6('0x11')];channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2b')]=_0x4aaacc[_0x6bd6('0xb')];if(_[_0x6bd6('0x24')](channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2c')])){channels[_0x4aaacc['linkedid']][_0x6bd6('0x2c')]=utils['now']();}channels[_0x4aaacc[_0x6bd6('0x2a')]][_0x6bd6('0x2d')]=dispositions[_[_0x6bd6('0x2e')](_0x4aaacc[_0x6bd6('0x25')])]||_0x6bd6('0x5');}}catch(_0x14a53f){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x23'),_0x4aaacc['uniqueid']),_0x14a53f);}};exports[_0x6bd6('0x2f')]=function(_0x37a53d){try{if(!_[_0x6bd6('0x24')](channels[_0x37a53d[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x30'),_0x37a53d[_0x6bd6('0x8')]),_0x37a53d);if(_['isNil'](channels[_0x37a53d['uniqueid']][_0x6bd6('0x31')])){channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x31')]=_0x37a53d[_0x6bd6('0x32')]+'\x20<'+_0x37a53d[_0x6bd6('0x1e')]+'>';}utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x33'),_0x37a53d[_0x6bd6('0x8')],channels[_0x37a53d[_0x6bd6('0x8')]]['callerid'],_0x37a53d[_0x6bd6('0x34')]));channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x35')]=utils[_0x6bd6('0x20')]();channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x36')]=utils[_0x6bd6('0x37')](channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x35')],channels[_0x37a53d[_0x6bd6('0x8')]]['starttime']);channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x38')]=channels[_0x37a53d[_0x6bd6('0x8')]][_0x6bd6('0x2c')]?utils['diffTime'](channels[_0x37a53d['uniqueid']][_0x6bd6('0x35')],channels[_0x37a53d[_0x6bd6('0x8')]]['answertime']):0x0;writeDB(channels[_0x37a53d[_0x6bd6('0x8')]]);}}catch(_0x1c4a63){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')]('[%s][calls][hangup]',_0x37a53d[_0x6bd6('0x8')]),_0x1c4a63);}};exports[_0x6bd6('0x3a')]=function(_0x309835){try{if(!_[_0x6bd6('0x24')](channels[_0x309835[_0x6bd6('0x3b')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x3c'),_0x309835[_0x6bd6('0x3d')]),_0x309835);if(channels[_0x309835['localtwolinkedid']][_0x6bd6('0xb')]==_0x309835[_0x6bd6('0x3e')]){utils[_0x6bd6('0x1b')](util['format'](_0x6bd6('0x3f'),_0x309835[_0x6bd6('0x3d')],_0x309835[_0x6bd6('0x3b')],_0x309835[_0x6bd6('0x40')]));channels[_0x309835['localtwolinkedid']]['destinationchannel']=_0x309835[_0x6bd6('0x40')];channels[_0x309835[_0x6bd6('0x3b')]][_0x6bd6('0x41')]=_0x6bd6('0x42');}else if(channels[_0x309835[_0x6bd6('0x3b')]][_0x6bd6('0xb')]=_0x309835[_0x6bd6('0x43')]){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x3f'),_0x309835[_0x6bd6('0x3d')],_0x309835[_0x6bd6('0x3b')],_0x309835['origtransfererchannel']));channels[_0x309835[_0x6bd6('0x3b')]]['destinationchannel']=_0x309835[_0x6bd6('0x44')];channels[_0x309835['localtwolinkedid']][_0x6bd6('0x41')]=_0x6bd6('0x42');}}}catch(_0x2f2f0a){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x3c'),_0x309835[_0x6bd6('0x3d')]),_0x2f2f0a);}};exports[_0x6bd6('0x45')]=function(_0x18d2b8){try{if(!_[_0x6bd6('0x24')](channels[_0x18d2b8[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util[_0x6bd6('0x18')](_0x6bd6('0x46'),_0x18d2b8[_0x6bd6('0x8')]),_0x18d2b8);channels[_0x18d2b8[_0x6bd6('0x8')]][_0x6bd6('0x47')]=utils['now']();utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x48'),_0x18d2b8[_0x6bd6('0x8')],channels[_0x18d2b8[_0x6bd6('0x8')]][_0x6bd6('0x47')]));}}catch(_0x7b5c7c){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x46'),_0x18d2b8['uniqueid']),_0x7b5c7c);}};exports[_0x6bd6('0x49')]=function(_0x12df35){try{if(!_[_0x6bd6('0x24')](channels[_0x12df35['uniqueid']])){utils['debug'](util['format']('[%s][calls][musiconholdstop]',_0x12df35[_0x6bd6('0x8')]),_0x12df35);if(!_['isNil'](channels[_0x12df35['uniqueid']][_0x6bd6('0x47')])){channels[_0x12df35[_0x6bd6('0x8')]]['mohtime']+=utils[_0x6bd6('0x37')](utils[_0x6bd6('0x20')](),channels[_0x12df35[_0x6bd6('0x8')]]['musiconholdstartAt']);utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x4a'),_0x12df35[_0x6bd6('0x8')],channels[_0x12df35[_0x6bd6('0x8')]][_0x6bd6('0x4b')]));delete channels[_0x12df35['uniqueid']]['musiconholdstartAt'];}}}catch(_0x332d74){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x4c'),_0x12df35[_0x6bd6('0x8')]),_0x332d74);}};exports[_0x6bd6('0x4d')]=function(_0x5ce7c9){try{if(!_['isNil'](channels[_0x5ce7c9[_0x6bd6('0x8')]])){utils[_0x6bd6('0x17')](util['format'](_0x6bd6('0x4e'),_0x5ce7c9[_0x6bd6('0x8')]),_0x5ce7c9);if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x50')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9['value']));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x51')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x53')])){utils['info'](util[_0x6bd6('0x18')](_0x6bd6('0x54'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x55')]=_0x5ce7c9[_0x6bd6('0x52')];channels[_0x5ce7c9[_0x6bd6('0x8')]]['callerid']='\x22'+_0x5ce7c9[_0x6bd6('0x52')]+_0x6bd6('0x56')+_0x5ce7c9[_0x6bd6('0x52')]+'>';}if(!_['isNil'](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x57')])||!_[_0x6bd6('0x24')](_0x5ce7c9['variable'][_0x6bd6('0x58')])){utils['info'](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x57')])?_0x6bd6('0x57'):_0x6bd6('0x58'),_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['callerid']=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')]['xmd-queue'])||!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x59')])){utils[_0x6bd6('0x1b')](util['format'](_0x6bd6('0x5a'),_0x5ce7c9['uniqueid'],!_[_0x6bd6('0x24')](_0x5ce7c9['variable']['xmd-queue'])?'xmd-queue':'xmcs-queue',_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['lastapplication']=_0x6bd6('0x5b');channels[_0x5ce7c9['uniqueid']]['lastdata']=_0x5ce7c9[_0x6bd6('0x52')];channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0xc')]=!![];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x5c')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x5d'),_0x5ce7c9['uniqueid'],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x5e')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_['isNil'](_0x5ce7c9['variable'][_0x6bd6('0x5f')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x60'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]][_0x6bd6('0x61')]=_0x5ce7c9['value'];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')][_0x6bd6('0x62')])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x63'),_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9['uniqueid']][_0x6bd6('0x64')]=_0x5ce7c9[_0x6bd6('0x52')];}if(!_[_0x6bd6('0x24')](_0x5ce7c9[_0x6bd6('0x4f')]['sipcallid'])){utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x5ce7c9[_0x6bd6('0x8')],_0x5ce7c9[_0x6bd6('0x52')]));channels[_0x5ce7c9[_0x6bd6('0x8')]]['sipcallid']=_0x5ce7c9['value'];}}}catch(_0x431fcf){utils[_0x6bd6('0x39')](util[_0x6bd6('0x18')](_0x6bd6('0x4e'),_0x5ce7c9['uniqueid']),_0x431fcf);}};exports[_0x6bd6('0x65')]=function(_0x5a2e9c){try{if(!_[_0x6bd6('0x24')](channels[_0x5a2e9c[_0x6bd6('0x8')]])){utils['debug'](util[_0x6bd6('0x18')](_0x6bd6('0x66'),_0x5a2e9c[_0x6bd6('0x8')]),_0x5a2e9c);utils[_0x6bd6('0x1b')](util[_0x6bd6('0x18')](_0x6bd6('0x67'),_0x5a2e9c[_0x6bd6('0x8')],_0x5a2e9c[_0x6bd6('0x68')],_0x5a2e9c[_0x6bd6('0x69')]));if(_0x5a2e9c['application'][_0x6bd6('0x6a')]()==_0x6bd6('0x6b')&&_['startsWith'](_0x5a2e9c[_0x6bd6('0x69')]['toLowerCase'](),_0x6bd6('0x6c'))){var _0x32ad28=_0x5a2e9c[_0x6bd6('0x69')][_0x6bd6('0x6d')]('=');var _0x2c7764=_0x32ad28[0x0]['substring'](_0x32ad28[0x0]['lastIndexOf']('(')+0x1,_0x32ad28[0x0]['lastIndexOf'](')'));var _0x12c021=_0x32ad28[0x1];channels[_0x5a2e9c[_0x6bd6('0x8')]][_0x2c7764]=_0x12c021;}if(!_[_0x6bd6('0x6e')]([_0x6bd6('0x2f'),_0x6bd6('0x6f'),_0x6bd6('0x70'),'set',_0x6bd6('0x71')],_0x5a2e9c[_0x6bd6('0x68')][_0x6bd6('0x6a')]())){channels[_0x5a2e9c[_0x6bd6('0x8')]]['lastapplication']=_0x5a2e9c[_0x6bd6('0x68')];channels[_0x5a2e9c['uniqueid']][_0x6bd6('0x72')]=_0x5a2e9c[_0x6bd6('0x69')];}}}catch(_0x20dd8b){utils['error'](util[_0x6bd6('0x18')](_0x6bd6('0x66'),_0x5a2e9c['uniqueid']),_0x20dd8b);}};
\ No newline at end of file
+var _0x1bec=['transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','origtransfererchannel','[%s][calls][attendedtransfer]','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','gotoif','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','context','exten','now','error','newstate','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','starttime','billableseconds','answertime','diffTime','endtime','attendedtransfer','localtwolinkedid','origtransfereruniqueid'];(function(_0x1e175d,_0x41ff45){var _0x3a3ce5=function(_0x186001){while(--_0x186001){_0x1e175d['push'](_0x1e175d['shift']());}};_0x3a3ce5(++_0x41ff45);}(_0x1bec,0x168));var _0xc1be=function(_0xeee8f2,_0x351024){_0xeee8f2=_0xeee8f2-0x0;var _0x16102b=_0x1bec[_0xeee8f2];return _0x16102b;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xc1be('0x0'));var transfers=require('./transfers.controller');var dispositions=[_0xc1be('0x1'),_0xc1be('0x2'),_0xc1be('0x2'),_0xc1be('0x1'),'NO\x20ANSWER',_0xc1be('0x1'),_0xc1be('0x3'),_0xc1be('0x4'),_0xc1be('0x2'),_0xc1be('0x2'),_0xc1be('0x2')];var channels={};function writeDB(_0xda3bc2){var _0x22b9be;if(transfers[_0xc1be('0x5')][_0xda3bc2[_0xc1be('0x6')]]){_0x22b9be=_0xda3bc2['uniqueid'];_0xda3bc2[_0xc1be('0x6')]=transfers[_0xc1be('0x5')][_0xda3bc2[_0xc1be('0x6')]]['transfereeuniqueid'];}utils[_0xc1be('0x7')](util['format'](_0xc1be('0x8'),_0xda3bc2[_0xc1be('0x6')],_0xda3bc2[_0xc1be('0x9')],_0xda3bc2[_0xc1be('0xa')],_0xda3bc2['membername'],_0xda3bc2[_0xc1be('0xb')],_0xda3bc2[_0xc1be('0xc')],_0xda3bc2[_0xc1be('0xd')],_0xda3bc2[_0xc1be('0xe')]));if(_0xda3bc2[_0xc1be('0xf')]){utils[_0xc1be('0x10')](_0xda3bc2[_0xc1be('0xf')])[_0xc1be('0x11')](function(_0x2e22ba){if(_0x2e22ba){_0xda3bc2['UserId']=_0x2e22ba['id'];}utils[_0xc1be('0x12')](_0xc1be('0x13'),_0xda3bc2);});}else{utils[_0xc1be('0x12')]('CreateVoiceCallReport',_0xda3bc2);}if(channels[_0xda3bc2[_0xc1be('0x6')]]){delete channels[_0xda3bc2[_0xc1be('0x6')]];}else if(_0x22b9be&&channels[_0x22b9be]){if(!transfers[_0xc1be('0x5')][_0x22b9be]['recording'])delete transfers['blinds'][_0x22b9be];delete channels[_0x22b9be];}}exports[_0xc1be('0x14')]=function(_0x1a8f8b){try{utils[_0xc1be('0x15')](util[_0xc1be('0x16')](_0xc1be('0x17'),_0x1a8f8b[_0xc1be('0x6')]),_0x1a8f8b);if(_0x1a8f8b['uniqueid']==_0x1a8f8b[_0xc1be('0x18')]&&_0x1a8f8b[_0xc1be('0x9')]!=_0xc1be('0x19')){utils['info'](util[_0xc1be('0x16')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x1a8f8b['uniqueid'],_0x1a8f8b[_0xc1be('0x1a')],_0x1a8f8b[_0xc1be('0x1b')]));channels[_0x1a8f8b[_0xc1be('0x6')]]={'uniqueid':_0x1a8f8b[_0xc1be('0x6')],'accountcode':_0x1a8f8b[_0xc1be('0xf')],'source':_0x1a8f8b['calleridnum'],'destination':_0x1a8f8b[_0xc1be('0x1b')],'destinationcontext':_0x1a8f8b[_0xc1be('0x1a')],'channel':_0x1a8f8b[_0xc1be('0x9')],'starttime':utils[_0xc1be('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xc1be('0x1'),'amaflags':'DOCUMENTATION'};}}catch(_0x1533c8){utils[_0xc1be('0x1d')](util[_0xc1be('0x16')]('[%s][calls][newchannel]',_0x1a8f8b[_0xc1be('0x6')]),_0x1533c8);}};exports[_0xc1be('0x1e')]=function(_0x3ff224){try{utils[_0xc1be('0x15')](util[_0xc1be('0x16')]('[%s][calls][newstate]',_0x3ff224[_0xc1be('0x6')]),_0x3ff224);if(!_[_0xc1be('0x1f')](channels[_0x3ff224[_0xc1be('0x6')]])&&_0x3ff224[_0xc1be('0x20')]==0x6){utils[_0xc1be('0x7')](util[_0xc1be('0x16')](_0xc1be('0x21'),_0x3ff224[_0xc1be('0x6')],_0x3ff224['context'],_0x3ff224[_0xc1be('0x9')]));if(_['isNil'](channels[_0x3ff224[_0xc1be('0x6')]][_0xc1be('0x22')])){channels[_0x3ff224['uniqueid']][_0xc1be('0x22')]=utils[_0xc1be('0x1c')]();}}else if(!_[_0xc1be('0x1f')](channels[_0x3ff224[_0xc1be('0x18')]])&&_0x3ff224['channelstate']==0x6&&_0x3ff224['context']!='transfer'){utils['info'](util[_0xc1be('0x16')](_0xc1be('0x23'),_0x3ff224['uniqueid'],_0x3ff224[_0xc1be('0x18')],_0x3ff224[_0xc1be('0x1a')],_0x3ff224[_0xc1be('0x9')]));channels[_0x3ff224[_0xc1be('0x18')]][_0xc1be('0xf')]=_0x3ff224[_0xc1be('0xf')];channels[_0x3ff224['linkedid']][_0xc1be('0x24')]=_0x3ff224[_0xc1be('0x9')];if(_['isNil'](channels[_0x3ff224[_0xc1be('0x18')]]['answertime'])){channels[_0x3ff224[_0xc1be('0x18')]]['answertime']=utils[_0xc1be('0x1c')]();}channels[_0x3ff224[_0xc1be('0x18')]]['disposition']=dispositions[_[_0xc1be('0x25')](_0x3ff224['channelstate'])]||_0xc1be('0x3');}}catch(_0x24c9b6){utils[_0xc1be('0x1d')](util[_0xc1be('0x16')]('[%s][calls][newstate]',_0x3ff224[_0xc1be('0x6')]),_0x24c9b6);}};exports[_0xc1be('0x26')]=function(_0x537de3){try{if(!_[_0xc1be('0x1f')](channels[_0x537de3[_0xc1be('0x6')]])){utils['debug'](util[_0xc1be('0x16')](_0xc1be('0x27'),_0x537de3['uniqueid']),_0x537de3);if(_[_0xc1be('0x1f')](channels[_0x537de3[_0xc1be('0x6')]][_0xc1be('0x28')])){channels[_0x537de3[_0xc1be('0x6')]]['callerid']=_0x537de3[_0xc1be('0x29')]+'\x20<'+_0x537de3['calleridnum']+'>';}utils[_0xc1be('0x7')](util[_0xc1be('0x16')](_0xc1be('0x2a'),_0x537de3[_0xc1be('0x6')],channels[_0x537de3['uniqueid']][_0xc1be('0x28')],_0x537de3[_0xc1be('0x2b')]));channels[_0x537de3['uniqueid']]['endtime']=utils[_0xc1be('0x1c')]();channels[_0x537de3['uniqueid']]['duration']=utils['diffTime'](channels[_0x537de3[_0xc1be('0x6')]]['endtime'],channels[_0x537de3['uniqueid']][_0xc1be('0x2c')]);channels[_0x537de3[_0xc1be('0x6')]][_0xc1be('0x2d')]=channels[_0x537de3[_0xc1be('0x6')]][_0xc1be('0x2e')]?utils[_0xc1be('0x2f')](channels[_0x537de3[_0xc1be('0x6')]][_0xc1be('0x30')],channels[_0x537de3[_0xc1be('0x6')]][_0xc1be('0x2e')]):0x0;writeDB(channels[_0x537de3[_0xc1be('0x6')]]);}}catch(_0x1081e2){utils[_0xc1be('0x1d')](util[_0xc1be('0x16')](_0xc1be('0x27'),_0x537de3[_0xc1be('0x6')]),_0x1081e2);}};exports[_0xc1be('0x31')]=function(_0x5e0d18){try{if(!_[_0xc1be('0x1f')](channels[_0x5e0d18[_0xc1be('0x32')]])){utils[_0xc1be('0x15')](util[_0xc1be('0x16')]('[%s][calls][attendedtransfer]',_0x5e0d18[_0xc1be('0x33')]),_0x5e0d18);if(channels[_0x5e0d18[_0xc1be('0x32')]][_0xc1be('0x9')]==_0x5e0d18[_0xc1be('0x34')]){utils[_0xc1be('0x7')](util[_0xc1be('0x16')](_0xc1be('0x35'),_0x5e0d18[_0xc1be('0x33')],_0x5e0d18[_0xc1be('0x32')],_0x5e0d18[_0xc1be('0x36')]));channels[_0x5e0d18[_0xc1be('0x32')]]['destinationchannel']=_0x5e0d18[_0xc1be('0x36')];channels[_0x5e0d18[_0xc1be('0x32')]][_0xc1be('0x37')]='_attended';}else if(channels[_0x5e0d18[_0xc1be('0x32')]]['channel']=_0x5e0d18['transfertargetchannel']){utils[_0xc1be('0x7')](util['format'](_0xc1be('0x35'),_0x5e0d18['origtransfereruniqueid'],_0x5e0d18['localtwolinkedid'],_0x5e0d18[_0xc1be('0x38')]));channels[_0x5e0d18['localtwolinkedid']][_0xc1be('0x24')]=_0x5e0d18['origtransfererchannel'];channels[_0x5e0d18[_0xc1be('0x32')]][_0xc1be('0x37')]='_attended';}}}catch(_0x3954bf){utils[_0xc1be('0x1d')](util[_0xc1be('0x16')](_0xc1be('0x39'),_0x5e0d18[_0xc1be('0x33')]),_0x3954bf);}};exports['musiconholdstart']=function(_0x3a5847){try{if(!_[_0xc1be('0x1f')](channels[_0x3a5847[_0xc1be('0x6')]])){utils[_0xc1be('0x15')](util[_0xc1be('0x16')](_0xc1be('0x3a'),_0x3a5847['uniqueid']),_0x3a5847);channels[_0x3a5847['uniqueid']][_0xc1be('0x3b')]=utils['now']();utils[_0xc1be('0x7')](util['format'](_0xc1be('0x3c'),_0x3a5847[_0xc1be('0x6')],channels[_0x3a5847[_0xc1be('0x6')]]['musiconholdstartAt']));}}catch(_0x33ec4d){utils['error'](util[_0xc1be('0x16')](_0xc1be('0x3a'),_0x3a5847[_0xc1be('0x6')]),_0x33ec4d);}};exports[_0xc1be('0x3d')]=function(_0x573f76){try{if(!_[_0xc1be('0x1f')](channels[_0x573f76[_0xc1be('0x6')]])){utils['debug'](util[_0xc1be('0x16')](_0xc1be('0x3e'),_0x573f76[_0xc1be('0x6')]),_0x573f76);if(!_[_0xc1be('0x1f')](channels[_0x573f76[_0xc1be('0x6')]][_0xc1be('0x3b')])){channels[_0x573f76[_0xc1be('0x6')]][_0xc1be('0x3f')]+=utils[_0xc1be('0x2f')](utils[_0xc1be('0x1c')](),channels[_0x573f76['uniqueid']]['musiconholdstartAt']);utils[_0xc1be('0x7')](util[_0xc1be('0x16')](_0xc1be('0x40'),_0x573f76['uniqueid'],channels[_0x573f76[_0xc1be('0x6')]][_0xc1be('0x3f')]));delete channels[_0x573f76[_0xc1be('0x6')]][_0xc1be('0x3b')];}}}catch(_0x30ea52){utils['error'](util['format'](_0xc1be('0x3e'),_0x573f76[_0xc1be('0x6')]),_0x30ea52);}};exports[_0xc1be('0x41')]=function(_0x48d9ae){try{if(!_[_0xc1be('0x1f')](channels[_0x48d9ae[_0xc1be('0x6')]])){utils[_0xc1be('0x15')](util[_0xc1be('0x16')](_0xc1be('0x42'),_0x48d9ae[_0xc1be('0x6')]),_0x48d9ae);if(!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')]['xmd-originatecalleridnum'])){utils[_0xc1be('0x7')](util[_0xc1be('0x16')](_0xc1be('0x44'),_0x48d9ae[_0xc1be('0x6')],_0x48d9ae['value']));channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x45')]=_0x48d9ae[_0xc1be('0x46')];}if(!_['isNil'](_0x48d9ae[_0xc1be('0x43')]['xmd-phone'])){utils[_0xc1be('0x7')](util[_0xc1be('0x16')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x48d9ae[_0xc1be('0x6')],_0x48d9ae['value']));channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x47')]=_0x48d9ae[_0xc1be('0x46')];channels[_0x48d9ae[_0xc1be('0x6')]]['callerid']='\x22'+_0x48d9ae[_0xc1be('0x46')]+_0xc1be('0x48')+_0x48d9ae['value']+'>';}if(!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x49')])||!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x4a')])){utils[_0xc1be('0x7')](util['format'](_0xc1be('0x4b'),_0x48d9ae[_0xc1be('0x6')],!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')]['xmd-callerid-preview'])?_0xc1be('0x49'):_0xc1be('0x4a'),_0x48d9ae[_0xc1be('0x46')]));channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x28')]=_0x48d9ae[_0xc1be('0x46')];}if(!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x4c')])||!_['isNil'](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x4d')])){utils['info'](util[_0xc1be('0x16')](_0xc1be('0x4b'),_0x48d9ae['uniqueid'],!_['isNil'](_0x48d9ae[_0xc1be('0x43')]['xmd-queue'])?_0xc1be('0x4c'):'xmcs-queue',_0x48d9ae['value']));channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x4e')]='Queue';channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x4f')]=_0x48d9ae[_0xc1be('0x46')];channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0xa')]=!![];}if(!_[_0xc1be('0x1f')](_0x48d9ae['variable'][_0xc1be('0x50')])){utils['info'](util[_0xc1be('0x16')](_0xc1be('0x51'),_0x48d9ae[_0xc1be('0x6')],_0x48d9ae[_0xc1be('0x46')]));channels[_0x48d9ae['uniqueid']]['ContactId']=_0x48d9ae['value'];}if(!_[_0xc1be('0x1f')](_0x48d9ae['variable'][_0xc1be('0x52')])){utils[_0xc1be('0x7')](util['format'](_0xc1be('0x53'),_0x48d9ae[_0xc1be('0x6')],_0x48d9ae['value']));channels[_0x48d9ae[_0xc1be('0x6')]]['type']=_0x48d9ae[_0xc1be('0x46')];}if(!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x54')])){utils['info'](util['format'](_0xc1be('0x55'),_0x48d9ae[_0xc1be('0x6')],_0x48d9ae[_0xc1be('0x46')]));channels[_0x48d9ae[_0xc1be('0x6')]][_0xc1be('0x56')]=_0x48d9ae[_0xc1be('0x46')];}if(!_[_0xc1be('0x1f')](_0x48d9ae[_0xc1be('0x43')][_0xc1be('0x57')])){utils[_0xc1be('0x7')](util[_0xc1be('0x16')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x48d9ae['uniqueid'],_0x48d9ae[_0xc1be('0x46')]));channels[_0x48d9ae['uniqueid']][_0xc1be('0x57')]=_0x48d9ae[_0xc1be('0x46')];}}}catch(_0x1be448){utils['error'](util[_0xc1be('0x16')](_0xc1be('0x42'),_0x48d9ae[_0xc1be('0x6')]),_0x1be448);}};exports[_0xc1be('0x58')]=function(_0x2f8fe9){try{if(!_[_0xc1be('0x1f')](channels[_0x2f8fe9[_0xc1be('0x6')]])){utils[_0xc1be('0x15')](util[_0xc1be('0x16')](_0xc1be('0x59'),_0x2f8fe9[_0xc1be('0x6')]),_0x2f8fe9);utils['info'](util[_0xc1be('0x16')](_0xc1be('0x5a'),_0x2f8fe9[_0xc1be('0x6')],_0x2f8fe9[_0xc1be('0x5b')],_0x2f8fe9[_0xc1be('0x5c')]));if(_0x2f8fe9[_0xc1be('0x5b')][_0xc1be('0x5d')]()==_0xc1be('0x5e')&&_[_0xc1be('0x5f')](_0x2f8fe9['appdata'][_0xc1be('0x5d')](),_0xc1be('0x60'))){var _0x3c1d5c=_0x2f8fe9[_0xc1be('0x5c')][_0xc1be('0x61')]('=');var _0x114757=_0x3c1d5c[0x0][_0xc1be('0x62')](_0x3c1d5c[0x0][_0xc1be('0x63')]('(')+0x1,_0x3c1d5c[0x0][_0xc1be('0x63')](')'));var _0xff5961=_0x3c1d5c[0x1];channels[_0x2f8fe9[_0xc1be('0x6')]][_0x114757]=_0xff5961;}if(!_[_0xc1be('0x64')]([_0xc1be('0x26'),_0xc1be('0x65'),'execif',_0xc1be('0x5e'),_0xc1be('0x66')],_0x2f8fe9['application'][_0xc1be('0x5d')]())){channels[_0x2f8fe9['uniqueid']]['lastapplication']=_0x2f8fe9['application'];channels[_0x2f8fe9[_0xc1be('0x6')]][_0xc1be('0x4f')]=_0x2f8fe9[_0xc1be('0x5c')];}}}catch(_0x2a7a3b){utils[_0xc1be('0x1d')](util[_0xc1be('0x16')](_0xc1be('0x59'),_0x2f8fe9['uniqueid']),_0x2a7a3b);}};
\ No newline at end of file
index 684d290..d6c9f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3879=['close','managerevent','./utils','connect','info','[core]\x20connected','error','[core]\x20error'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x3879,0x1aa));var _0x9387=function(_0x269aa1,_0x23813a){_0x269aa1=_0x269aa1-0x0;var _0x202737=_0x3879[_0x269aa1];return _0x202737;};'use strict';var utils=require(_0x9387('0x0'));exports[_0x9387('0x1')]=function(){utils[_0x9387('0x2')](_0x9387('0x3'));};exports['shutdown']=function(){utils[_0x9387('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x9387('0x2')]('[core]\x20fullybooted');};exports[_0x9387('0x4')]=function(_0x2f484a){utils['error'](_0x9387('0x5'),_0x2f484a);};exports[_0x9387('0x6')]=function(){utils[_0x9387('0x2')]('[core]\x20close');};exports[_0x9387('0x7')]=function(_0x5a4396){};
\ No newline at end of file
+var _0x76f2=['[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','./utils','connect','info','[core]\x20connected','shutdown'];(function(_0x32e56f,_0x218222){var _0x132e71=function(_0x261c46){while(--_0x261c46){_0x32e56f['push'](_0x32e56f['shift']());}};_0x132e71(++_0x218222);}(_0x76f2,0x8b));var _0x276f=function(_0x30b58,_0x48df3b){_0x30b58=_0x30b58-0x0;var _0x9d210d=_0x76f2[_0x30b58];return _0x9d210d;};'use strict';var utils=require(_0x276f('0x0'));exports[_0x276f('0x1')]=function(){utils[_0x276f('0x2')](_0x276f('0x3'));};exports[_0x276f('0x4')]=function(){utils[_0x276f('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x276f('0x2')](_0x276f('0x5'));};exports[_0x276f('0x6')]=function(_0x1e83bd){utils['error'](_0x276f('0x7'),_0x1e83bd);};exports['close']=function(){utils[_0x276f('0x2')](_0x276f('0x8'));};exports['managerevent']=function(_0x3c8919){};
\ No newline at end of file
index e2e75ca..db16fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb46=['billableseconds','lodash','util','./utils','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','request','newexten','debug','format','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','split','error','varset','[%s][dials][varset]','isNil','variable','value','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime'];(function(_0x4c587a,_0x3bf54a){var _0x3e66fc=function(_0x48529b){while(--_0x48529b){_0x4c587a['push'](_0x4c587a['shift']());}};_0x3e66fc(++_0x3bf54a);}(_0xcb46,0x1de));var _0x6cb4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcb46[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6cb4('0x0'));var util=require(_0x6cb4('0x1'));var utils=require(_0x6cb4('0x2'));var dials={};function writeDB(_0x99006d){utils['info'](util['format'](_0x6cb4('0x3'),_0x99006d[_0x6cb4('0x4')],_0x99006d[_0x6cb4('0x5')],_0x99006d[_0x6cb4('0x6')],_0x99006d[_0x6cb4('0x7')],_0x99006d[_0x6cb4('0x8')],_0x99006d['dialstatus']));utils[_0x6cb4('0x9')]('CreateVoiceDialReport',_0x99006d);delete dials[_0x99006d[_0x6cb4('0x4')]];}exports[_0x6cb4('0xa')]=function(_0x564cf8){try{utils[_0x6cb4('0xb')](util[_0x6cb4('0xc')](_0x6cb4('0xd'),_0x564cf8['uniqueid']),_0x564cf8);utils[_0x6cb4('0xe')](util['format'](_0x6cb4('0xf'),_0x564cf8[_0x6cb4('0x4')],_0x564cf8[_0x6cb4('0x10')],_0x564cf8[_0x6cb4('0x11')]));if(_0x564cf8[_0x6cb4('0x10')][_0x6cb4('0x12')]()==_0x6cb4('0x13')&&_[_0x6cb4('0x14')](_0x564cf8[_0x6cb4('0x11')][_0x6cb4('0x12')](),'cdr(routeid)')){var _0x59c36c=_0x564cf8[_0x6cb4('0x11')][_0x6cb4('0x15')]('=');dials[_0x564cf8[_0x6cb4('0x4')]]={'routeId':_0x59c36c[0x1]};}}catch(_0x9424d8){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')](_0x6cb4('0xd'),_0x564cf8[_0x6cb4('0x4')]),_0x9424d8);}};exports[_0x6cb4('0x17')]=function(_0x17a79a){try{utils[_0x6cb4('0xb')](util['format'](_0x6cb4('0x18'),_0x17a79a['uniqueid']),_0x17a79a);if(!_[_0x6cb4('0x19')](_0x17a79a[_0x6cb4('0x1a')]['outboundrouteid'])){utils['info'](util[_0x6cb4('0xc')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x17a79a[_0x6cb4('0x4')],_0x17a79a[_0x6cb4('0x1b')]));dials[_0x17a79a[_0x6cb4('0x4')]]={'routeId':_0x17a79a[_0x6cb4('0x1b')]};}}catch(_0x38e6a4){utils['error'](util[_0x6cb4('0xc')]('[%s][dials][varset]',_0x17a79a['uniqueid']),_0x38e6a4);}};exports['dialbegin']=function(_0x4c3508){try{if(!_[_0x6cb4('0x19')](dials[_0x4c3508[_0x6cb4('0x4')]])){utils[_0x6cb4('0xb')](util[_0x6cb4('0xc')]('[%s][dials][dialbegin]',_0x4c3508[_0x6cb4('0x4')]),_0x4c3508);dials[_0x4c3508['uniqueid']]=_[_0x6cb4('0x1c')](dials[_0x4c3508[_0x6cb4('0x4')]],_0x4c3508);dials[_0x4c3508['uniqueid']]['starttime']=utils[_0x6cb4('0x1d')]();dials[_0x4c3508['uniqueid']][_0x6cb4('0x1e')]=_0x6cb4('0x1f');utils[_0x6cb4('0xe')](util['format'](_0x6cb4('0x20'),_0x4c3508[_0x6cb4('0x4')],dials[_0x4c3508[_0x6cb4('0x4')]][_0x6cb4('0x21')]));}}catch(_0x132670){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')](_0x6cb4('0x22'),_0x4c3508[_0x6cb4('0x4')]),_0x132670);}};exports[_0x6cb4('0x23')]=function(_0x51bd8a){try{if(!_[_0x6cb4('0x19')](dials[_0x51bd8a[_0x6cb4('0x4')]])){utils[_0x6cb4('0xb')](util['format'](_0x6cb4('0x24'),_0x51bd8a[_0x6cb4('0x4')]),_0x51bd8a);dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x25')]=_0x51bd8a[_0x6cb4('0x25')];if(_0x51bd8a[_0x6cb4('0x25')]=='ANSWER'){dials[_0x51bd8a[_0x6cb4('0x4')]]=_[_0x6cb4('0x1c')](dials[_0x51bd8a[_0x6cb4('0x4')]],_0x51bd8a);dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x26')]=utils[_0x6cb4('0x1d')]();dials[_0x51bd8a[_0x6cb4('0x4')]][_0x6cb4('0x1e')]=_0x6cb4('0x27');utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x28'),_0x51bd8a['uniqueid'],_0x51bd8a[_0x6cb4('0x25')],dials[_0x51bd8a[_0x6cb4('0x4')]]['answertime']));}else{utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x29'),_0x51bd8a[_0x6cb4('0x4')],_0x51bd8a[_0x6cb4('0x25')]));}}}catch(_0x5cda16){utils['error'](util[_0x6cb4('0xc')](_0x6cb4('0x24'),_0x51bd8a[_0x6cb4('0x4')]),_0x5cda16);}};exports[_0x6cb4('0x2a')]=function(_0x18c186){try{if(!_[_0x6cb4('0x19')](dials[_0x18c186[_0x6cb4('0x4')]])){utils['debug'](util[_0x6cb4('0xc')](_0x6cb4('0x2b'),_0x18c186['uniqueid']),_0x18c186);utils[_0x6cb4('0xe')](util[_0x6cb4('0xc')](_0x6cb4('0x2c'),_0x18c186[_0x6cb4('0x4')],_0x18c186[_0x6cb4('0x7')],_0x18c186[_0x6cb4('0x2d')],_0x18c186[_0x6cb4('0x2e')]));dials[_0x18c186['uniqueid']]=_['assign'](dials[_0x18c186[_0x6cb4('0x4')]],{'endtime':utils[_0x6cb4('0x1d')](),'lastevent':_0x6cb4('0x2f')});dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x30')]=utils[_0x6cb4('0x31')](dials[_0x18c186['uniqueid']][_0x6cb4('0x32')],dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x21')]);dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x33')]=utils[_0x6cb4('0x31')](dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x26')]||dials[_0x18c186[_0x6cb4('0x4')]][_0x6cb4('0x32')],dials[_0x18c186['uniqueid']][_0x6cb4('0x21')]);dials[_0x18c186['uniqueid']][_0x6cb4('0x34')]=dials[_0x18c186[_0x6cb4('0x4')]]['answertime']?utils[_0x6cb4('0x31')](dials[_0x18c186['uniqueid']][_0x6cb4('0x32')],dials[_0x18c186[_0x6cb4('0x4')]]['answertime']):0x0;writeDB(dials[_0x18c186[_0x6cb4('0x4')]]);}}catch(_0x43d868){utils[_0x6cb4('0x16')](util[_0x6cb4('0xc')]('[%s][dials][hangup]',_0x18c186[_0x6cb4('0x4')]),_0x43d868);}};
\ No newline at end of file
+var _0x8070=['varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][dialbegin]','assign','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialend]','ANSWER','answertime','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash','util','info','format','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','error'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x8070,0x1c6));var _0x0807=function(_0xc82ed7,_0x3cf3ea){_0xc82ed7=_0xc82ed7-0x0;var _0x31811a=_0x8070[_0xc82ed7];return _0x31811a;};'use strict';var _=require(_0x0807('0x0'));var util=require(_0x0807('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x217375){utils[_0x0807('0x2')](util[_0x0807('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x217375[_0x0807('0x4')],_0x217375[_0x0807('0x5')],_0x217375[_0x0807('0x6')],_0x217375[_0x0807('0x7')],_0x217375[_0x0807('0x8')],_0x217375[_0x0807('0x9')]));utils[_0x0807('0xa')](_0x0807('0xb'),_0x217375);delete dials[_0x217375[_0x0807('0x4')]];}exports[_0x0807('0xc')]=function(_0x258c7f){try{utils[_0x0807('0xd')](util[_0x0807('0x3')](_0x0807('0xe'),_0x258c7f[_0x0807('0x4')]),_0x258c7f);utils[_0x0807('0x2')](util[_0x0807('0x3')](_0x0807('0xf'),_0x258c7f[_0x0807('0x4')],_0x258c7f[_0x0807('0x10')],_0x258c7f[_0x0807('0x11')]));if(_0x258c7f['application'][_0x0807('0x12')]()==_0x0807('0x13')&&_[_0x0807('0x14')](_0x258c7f['appdata']['toLowerCase'](),_0x0807('0x15'))){var _0x46f33c=_0x258c7f['appdata']['split']('=');dials[_0x258c7f[_0x0807('0x4')]]={'routeId':_0x46f33c[0x1]};}}catch(_0x2a969c){utils[_0x0807('0x16')](util[_0x0807('0x3')](_0x0807('0xe'),_0x258c7f[_0x0807('0x4')]),_0x2a969c);}};exports[_0x0807('0x17')]=function(_0xb64651){try{utils[_0x0807('0xd')](util[_0x0807('0x3')](_0x0807('0x18'),_0xb64651['uniqueid']),_0xb64651);if(!_[_0x0807('0x19')](_0xb64651[_0x0807('0x1a')][_0x0807('0x1b')])){utils['info'](util['format'](_0x0807('0x1c'),_0xb64651[_0x0807('0x4')],_0xb64651[_0x0807('0x1d')]));dials[_0xb64651[_0x0807('0x4')]]={'routeId':_0xb64651['value']};}}catch(_0x2ce796){utils[_0x0807('0x16')](util[_0x0807('0x3')](_0x0807('0x18'),_0xb64651[_0x0807('0x4')]),_0x2ce796);}};exports['dialbegin']=function(_0x1b3bc7){try{if(!_[_0x0807('0x19')](dials[_0x1b3bc7[_0x0807('0x4')]])){utils[_0x0807('0xd')](util['format'](_0x0807('0x1e'),_0x1b3bc7[_0x0807('0x4')]),_0x1b3bc7);dials[_0x1b3bc7[_0x0807('0x4')]]=_[_0x0807('0x1f')](dials[_0x1b3bc7[_0x0807('0x4')]],_0x1b3bc7);dials[_0x1b3bc7[_0x0807('0x4')]]['starttime']=utils[_0x0807('0x20')]();dials[_0x1b3bc7['uniqueid']]['lastevent']=_0x0807('0x21');utils[_0x0807('0x2')](util['format'](_0x0807('0x22'),_0x1b3bc7['uniqueid'],dials[_0x1b3bc7[_0x0807('0x4')]][_0x0807('0x23')]));}}catch(_0x4f75c0){utils[_0x0807('0x16')](util[_0x0807('0x3')](_0x0807('0x1e'),_0x1b3bc7[_0x0807('0x4')]),_0x4f75c0);}};exports['dialend']=function(_0x4d6676){try{if(!_['isNil'](dials[_0x4d6676[_0x0807('0x4')]])){utils['debug'](util[_0x0807('0x3')](_0x0807('0x24'),_0x4d6676['uniqueid']),_0x4d6676);dials[_0x4d6676[_0x0807('0x4')]]['dialstatus']=_0x4d6676[_0x0807('0x9')];if(_0x4d6676[_0x0807('0x9')]==_0x0807('0x25')){dials[_0x4d6676[_0x0807('0x4')]]=_[_0x0807('0x1f')](dials[_0x4d6676[_0x0807('0x4')]],_0x4d6676);dials[_0x4d6676['uniqueid']][_0x0807('0x26')]=utils[_0x0807('0x20')]();dials[_0x4d6676[_0x0807('0x4')]][_0x0807('0x27')]='connect';utils[_0x0807('0x2')](util[_0x0807('0x3')](_0x0807('0x28'),_0x4d6676[_0x0807('0x4')],_0x4d6676[_0x0807('0x9')],dials[_0x4d6676[_0x0807('0x4')]][_0x0807('0x26')]));}else{utils[_0x0807('0x2')](util[_0x0807('0x3')](_0x0807('0x29'),_0x4d6676[_0x0807('0x4')],_0x4d6676[_0x0807('0x9')]));}}}catch(_0x59bb06){utils[_0x0807('0x16')](util[_0x0807('0x3')](_0x0807('0x24'),_0x4d6676[_0x0807('0x4')]),_0x59bb06);}};exports[_0x0807('0x2a')]=function(_0x52651b){try{if(!_[_0x0807('0x19')](dials[_0x52651b[_0x0807('0x4')]])){utils[_0x0807('0xd')](util[_0x0807('0x3')](_0x0807('0x2b'),_0x52651b[_0x0807('0x4')]),_0x52651b);utils[_0x0807('0x2')](util[_0x0807('0x3')](_0x0807('0x2c'),_0x52651b[_0x0807('0x4')],_0x52651b['calleridnum'],_0x52651b[_0x0807('0x2d')],_0x52651b[_0x0807('0x2e')]));dials[_0x52651b[_0x0807('0x4')]]=_['assign'](dials[_0x52651b['uniqueid']],{'endtime':utils[_0x0807('0x20')](),'lastevent':_0x0807('0x2f')});dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x30')]=utils[_0x0807('0x31')](dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x32')],dials[_0x52651b['uniqueid']][_0x0807('0x23')]);dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x33')]=utils[_0x0807('0x31')](dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x26')]||dials[_0x52651b['uniqueid']][_0x0807('0x32')],dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x23')]);dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x34')]=dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x26')]?utils[_0x0807('0x31')](dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x32')],dials[_0x52651b[_0x0807('0x4')]][_0x0807('0x26')]):0x0;writeDB(dials[_0x52651b['uniqueid']]);}}catch(_0xd975af){utils[_0x0807('0x16')](util['format']('[%s][dials][hangup]',_0x52651b[_0x0807('0x4')]),_0xd975af);}};
\ No newline at end of file
index 7ed2c8e..03871f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b1b=['shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','[%s][index][cdr]','cdr','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','../../config/environment','./utils','util','asterisk','password','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./transfers.controller','./core.controller','connect'];(function(_0x28e0f1,_0xd1bfa0){var _0x13aedc=function(_0x2c752a){while(--_0x2c752a){_0x28e0f1['push'](_0x28e0f1['shift']());}};_0x13aedc(++_0xd1bfa0);}(_0x8b1b,0x75));var _0xb8b1=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x8b1b[_0x11ce46];return _0x368a1e;};var AsteriskManager=require('asterisk-manager');var config=require(_0xb8b1('0x0'));var utils=require(_0xb8b1('0x1'));var util=require(_0xb8b1('0x2'));var ami=new AsteriskManager(config[_0xb8b1('0x3')]['port'],config[_0xb8b1('0x3')]['ip'],config[_0xb8b1('0x3')]['username'],config[_0xb8b1('0x3')][_0xb8b1('0x4')],!![]);ami['keepConnected']();if(config[_0xb8b1('0x5')]&&config[_0xb8b1('0x5')][_0xb8b1('0x6')]){utils[_0xb8b1('0x7')](_0xb8b1('0x8'));}else{var agents=require(_0xb8b1('0x9'));var calls=require(_0xb8b1('0xa'));var queues=require('./queues.controller');var recordings=require(_0xb8b1('0xb'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0xb8b1('0xc'));var core=require(_0xb8b1('0xd'));ami['on'](_0xb8b1('0xe'),core[_0xb8b1('0xe')]);ami['on'](_0xb8b1('0xf'),core[_0xb8b1('0xf')]);ami['on'](_0xb8b1('0x10'),core[_0xb8b1('0x10')]);ami['on']('error',core[_0xb8b1('0x11')]);ami['on'](_0xb8b1('0x12'),core['close']);ami['on'](_0xb8b1('0x13'),core['managerevent']);ami['on'](_0xb8b1('0x14'),function(_0x283c68){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x16'),_0x283c68[_0xb8b1('0x17')]),_0x283c68);members[_0xb8b1('0x14')](_0x283c68);}catch(_0x52d61a){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x16'),_0x283c68[_0xb8b1('0x17')]),_0x52d61a);}});ami['on'](_0xb8b1('0x18'),function(_0x2cd778){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x1a'),_0x2cd778[_0xb8b1('0x1b')]),_0x2cd778);agents[_0xb8b1('0x18')](_0x2cd778);}catch(_0x3baa75){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x1a'),_0x2cd778[_0xb8b1('0x1b')]),_0x3baa75);}});ami['on'](_0xb8b1('0x1c'),function(_0x17a8e2){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][agentringnoanswer]',_0x17a8e2[_0xb8b1('0x1b')]),_0x17a8e2);agents['agentringnoanswer'](_0x17a8e2);}catch(_0x63a782){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x1d'),_0x17a8e2[_0xb8b1('0x1b')]),_0x63a782);}});ami['on'](_0xb8b1('0x1e'),function(_0x565282){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][agentconnect]',_0x565282[_0xb8b1('0x1b')]),_0x565282);agents['agentconnect'](_0x565282);queues[_0xb8b1('0x1e')](_0x565282);}catch(_0x3d1fa8){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x1f'),_0x565282['uniqueid']),_0x3d1fa8);}});ami['on'](_0xb8b1('0x20'),function(_0x40ee97){try{utils['debug'](util['format'](_0xb8b1('0x21'),_0x40ee97['uniqueid']),_0x40ee97);agents['agentcomplete'](_0x40ee97);queues[_0xb8b1('0x20')](_0x40ee97);members[_0xb8b1('0x20')](_0x40ee97);}catch(_0x19de59){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x21'),_0x40ee97['uniqueid']),_0x19de59);}});ami['on'](_0xb8b1('0x22'),function(_0x1d2e79){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x23'),_0x1d2e79[_0xb8b1('0x1b')]),_0x1d2e79);agents[_0xb8b1('0x22')](_0x1d2e79);queues[_0xb8b1('0x22')](_0x1d2e79);}catch(_0x1c1d60){utils['error'](util[_0xb8b1('0x15')]('[%s][index][queuecallerabandon]',_0x1d2e79[_0xb8b1('0x1b')]),_0x1c1d60);}});ami['on'](_0xb8b1('0x24'),function(_0x427a83){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x25'),_0x427a83[_0xb8b1('0x1b')]),_0x427a83);queues['queuecallerjoin'](_0x427a83);recordings['queuecallerjoin'](_0x427a83);}catch(_0x4499c4){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x25'),_0x427a83[_0xb8b1('0x1b')]),_0x4499c4);}});ami['on'](_0xb8b1('0x26'),function(_0x436933){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x27'),_0x436933[_0xb8b1('0x1b')]),_0x436933);queues['queuecallerleave'](_0x436933);}catch(_0x166ca8){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')]('[%s][index][queuecallerleave]',_0x436933[_0xb8b1('0x1b')]),_0x166ca8);}});ami['on'](_0xb8b1('0x28'),function(_0x45dd45){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x29'),_0x45dd45[_0xb8b1('0x1b')]),_0x45dd45);queues[_0xb8b1('0x28')](_0x45dd45);calls['musiconholdstart'](_0x45dd45);}catch(_0xc87302){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x29'),_0x45dd45[_0xb8b1('0x1b')]),_0xc87302);}});ami['on'](_0xb8b1('0x2a'),function(_0x4005ef){try{utils['debug'](util[_0xb8b1('0x15')]('[%s][index][musiconholdstop]',_0x4005ef['uniqueid']),_0x4005ef);queues[_0xb8b1('0x2a')](_0x4005ef);calls[_0xb8b1('0x2a')](_0x4005ef);}catch(_0x1f8176){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x2b'),_0x4005ef[_0xb8b1('0x1b')]),_0x1f8176);}});ami['on'](_0xb8b1('0x2c'),function(_0x193152){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x2d'),_0x193152['uniqueid']),_0x193152);calls['newstate'](_0x193152);recordings[_0xb8b1('0x2c')](_0x193152);}catch(_0x368242){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x2d'),_0x193152[_0xb8b1('0x1b')]),_0x368242);}});ami['on'](_0xb8b1('0x2e'),function(_0x1b4fca){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x2f'),_0x1b4fca[_0xb8b1('0x1b')]),_0x1b4fca);calls[_0xb8b1('0x2e')](_0x1b4fca);recordings[_0xb8b1('0x2e')](_0x1b4fca);dials[_0xb8b1('0x2e')](_0x1b4fca);agents['hangup'](_0x1b4fca);queues[_0xb8b1('0x2e')](_0x1b4fca);}catch(_0x3d37a6){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x2f'),_0x1b4fca[_0xb8b1('0x1b')]),_0x3d37a6);}});ami['on']('cdr',function(_0x34bff0){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x30'),_0x34bff0[_0xb8b1('0x1b')]),_0x34bff0);members[_0xb8b1('0x31')](_0x34bff0);}catch(_0x3c9e15){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x30'),_0x34bff0[_0xb8b1('0x1b')]),_0x3c9e15);}});ami['on']('blindtransfer',function(_0x12191){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x32'),_0x12191[_0xb8b1('0x1b')]),_0x12191);queues['blindtransfer'](_0x12191);agents[_0xb8b1('0x33')](_0x12191);transfers[_0xb8b1('0x33')](_0x12191);}catch(_0x398b78){utils[_0xb8b1('0x11')](util['format']('[%s][index][blindtransfer]',_0x12191['uniqueid']),_0x398b78);}});ami['on'](_0xb8b1('0x34'),function(_0x40ffda){try{utils['debug'](util['format'](_0xb8b1('0x35'),_0x40ffda[_0xb8b1('0x36')]),_0x40ffda);queues[_0xb8b1('0x34')](_0x40ffda);transfers['attendedtransfer'](_0x40ffda);agents['attendedtransfer'](_0x40ffda);calls[_0xb8b1('0x34')](_0x40ffda);}catch(_0x1a1b90){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x35'),_0x40ffda[_0xb8b1('0x36')]),_0x1a1b90);}});ami['on'](_0xb8b1('0x37'),function(_0xc5b6a){try{utils['debug'](util[_0xb8b1('0x15')](_0xb8b1('0x38'),_0xc5b6a[_0xb8b1('0x1b')]),_0xc5b6a);queues[_0xb8b1('0x37')](_0xc5b6a);recordings[_0xb8b1('0x37')](_0xc5b6a);calls['varset'](_0xc5b6a);dials[_0xb8b1('0x37')](_0xc5b6a);}catch(_0x21647e){utils[_0xb8b1('0x11')](util['format'](_0xb8b1('0x38'),_0xc5b6a[_0xb8b1('0x1b')]),_0x21647e);}});ami['on'](_0xb8b1('0x39'),function(_0x39649c){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][newexten]',_0x39649c[_0xb8b1('0x1b')]),_0x39649c);calls['newexten'](_0x39649c);recordings[_0xb8b1('0x39')](_0x39649c);dials[_0xb8b1('0x39')](_0x39649c);}catch(_0x493aac){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x3a'),_0x39649c[_0xb8b1('0x1b')]),_0x493aac);}});ami['on'](_0xb8b1('0x3b'),function(_0x4f873d){try{utils['debug'](util['format'](_0xb8b1('0x3c'),_0x4f873d[_0xb8b1('0x1b')]),_0x4f873d);calls['newchannel'](_0x4f873d);recordings['newchannel'](_0x4f873d);}catch(_0x156d07){utils['error'](util[_0xb8b1('0x15')](_0xb8b1('0x3c'),_0x4f873d[_0xb8b1('0x1b')]),_0x156d07);}});ami['on'](_0xb8b1('0x3d'),function(_0x29ca7e){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')](_0xb8b1('0x3e'),_0x29ca7e['uniqueid']),_0x29ca7e);dials[_0xb8b1('0x3d')](_0x29ca7e);}catch(_0x6bc4a9){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x3f'),_0x29ca7e[_0xb8b1('0x1b')]),_0x6bc4a9);}});ami['on'](_0xb8b1('0x40'),function(_0x5a147a){try{utils[_0xb8b1('0x19')](util[_0xb8b1('0x15')]('[%s][index][dialend]',_0x5a147a['uniqueid']),_0x5a147a);dials[_0xb8b1('0x40')](_0x5a147a);}catch(_0x4f2e98){utils[_0xb8b1('0x11')](util[_0xb8b1('0x15')](_0xb8b1('0x41'),_0x5a147a['uniqueid']),_0x4f2e98);}});}
\ No newline at end of file
+var _0x1661=['username','password','keepConnected','xdr','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','connect','shutdown','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','[%s][index][newexten]','newexten','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port'];(function(_0x527372,_0x173b25){var _0x4f88b2=function(_0x1d0bb6){while(--_0x1d0bb6){_0x527372['push'](_0x527372['shift']());}};_0x4f88b2(++_0x173b25);}(_0x1661,0x198));var _0x1166=function(_0x8823bf,_0xd02e83){_0x8823bf=_0x8823bf-0x0;var _0x3bbc77=_0x1661[_0x8823bf];return _0x3bbc77;};var AsteriskManager=require(_0x1166('0x0'));var config=require(_0x1166('0x1'));var utils=require(_0x1166('0x2'));var util=require(_0x1166('0x3'));var ami=new AsteriskManager(config[_0x1166('0x4')][_0x1166('0x5')],config[_0x1166('0x4')]['ip'],config[_0x1166('0x4')][_0x1166('0x6')],config[_0x1166('0x4')][_0x1166('0x7')],!![]);ami[_0x1166('0x8')]();if(config[_0x1166('0x9')]&&config[_0x1166('0x9')]['disabled']){utils[_0x1166('0xa')](_0x1166('0xb'));}else{var agents=require(_0x1166('0xc'));var calls=require(_0x1166('0xd'));var queues=require('./queues.controller');var recordings=require(_0x1166('0xe'));var members=require(_0x1166('0xf'));var dials=require(_0x1166('0x10'));var transfers=require(_0x1166('0x11'));var core=require('./core.controller');ami['on'](_0x1166('0x12'),core[_0x1166('0x12')]);ami['on']('shutdown',core[_0x1166('0x13')]);ami['on']('fullybooted',core['fullybooted']);ami['on']('error',core[_0x1166('0x14')]);ami['on'](_0x1166('0x15'),core['close']);ami['on'](_0x1166('0x16'),core[_0x1166('0x16')]);ami['on'](_0x1166('0x17'),function(_0x5bab2f){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x1a'),_0x5bab2f['device']),_0x5bab2f);members[_0x1166('0x17')](_0x5bab2f);}catch(_0x4f3a17){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x1a'),_0x5bab2f[_0x1166('0x1b')]),_0x4f3a17);}});ami['on'](_0x1166('0x1c'),function(_0x3b688d){try{utils[_0x1166('0x18')](util['format'](_0x1166('0x1d'),_0x3b688d[_0x1166('0x1e')]),_0x3b688d);agents[_0x1166('0x1c')](_0x3b688d);}catch(_0x3c58ca){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x1d'),_0x3b688d[_0x1166('0x1e')]),_0x3c58ca);}});ami['on'](_0x1166('0x1f'),function(_0xc51bc4){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x20'),_0xc51bc4[_0x1166('0x1e')]),_0xc51bc4);agents[_0x1166('0x1f')](_0xc51bc4);}catch(_0x10cd8f){utils['error'](util['format']('[%s][index][agentringnoanswer]',_0xc51bc4['uniqueid']),_0x10cd8f);}});ami['on'](_0x1166('0x21'),function(_0xb56321){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x22'),_0xb56321[_0x1166('0x1e')]),_0xb56321);agents['agentconnect'](_0xb56321);queues[_0x1166('0x21')](_0xb56321);}catch(_0x2eef89){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x22'),_0xb56321['uniqueid']),_0x2eef89);}});ami['on']('agentcomplete',function(_0x3aad2f){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x23'),_0x3aad2f[_0x1166('0x1e')]),_0x3aad2f);agents[_0x1166('0x24')](_0x3aad2f);queues[_0x1166('0x24')](_0x3aad2f);members[_0x1166('0x24')](_0x3aad2f);}catch(_0x5f1f4b){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x23'),_0x3aad2f[_0x1166('0x1e')]),_0x5f1f4b);}});ami['on'](_0x1166('0x25'),function(_0x52ab9a){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x26'),_0x52ab9a[_0x1166('0x1e')]),_0x52ab9a);agents['queuecallerabandon'](_0x52ab9a);queues[_0x1166('0x25')](_0x52ab9a);}catch(_0x2917aa){utils['error'](util[_0x1166('0x19')]('[%s][index][queuecallerabandon]',_0x52ab9a[_0x1166('0x1e')]),_0x2917aa);}});ami['on']('queuecallerjoin',function(_0x51d4e1){try{utils[_0x1166('0x18')](util[_0x1166('0x19')]('[%s][index][queuecallerjoin]',_0x51d4e1['uniqueid']),_0x51d4e1);queues[_0x1166('0x27')](_0x51d4e1);recordings[_0x1166('0x27')](_0x51d4e1);}catch(_0xf4dd5b){utils[_0x1166('0x14')](util['format'](_0x1166('0x28'),_0x51d4e1['uniqueid']),_0xf4dd5b);}});ami['on'](_0x1166('0x29'),function(_0x16cdc1){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x2a'),_0x16cdc1[_0x1166('0x1e')]),_0x16cdc1);queues['queuecallerleave'](_0x16cdc1);}catch(_0x466f2){utils['error'](util[_0x1166('0x19')]('[%s][index][queuecallerleave]',_0x16cdc1[_0x1166('0x1e')]),_0x466f2);}});ami['on'](_0x1166('0x2b'),function(_0x3d1d4e){try{utils['debug'](util[_0x1166('0x19')](_0x1166('0x2c'),_0x3d1d4e[_0x1166('0x1e')]),_0x3d1d4e);queues[_0x1166('0x2b')](_0x3d1d4e);calls[_0x1166('0x2b')](_0x3d1d4e);}catch(_0x455378){utils[_0x1166('0x14')](util['format'](_0x1166('0x2c'),_0x3d1d4e['uniqueid']),_0x455378);}});ami['on'](_0x1166('0x2d'),function(_0x1ec1c4){try{utils[_0x1166('0x18')](util['format'](_0x1166('0x2e'),_0x1ec1c4['uniqueid']),_0x1ec1c4);queues[_0x1166('0x2d')](_0x1ec1c4);calls[_0x1166('0x2d')](_0x1ec1c4);}catch(_0x5c8565){utils['error'](util[_0x1166('0x19')](_0x1166('0x2e'),_0x1ec1c4[_0x1166('0x1e')]),_0x5c8565);}});ami['on'](_0x1166('0x2f'),function(_0x1a3eb8){try{utils['debug'](util[_0x1166('0x19')](_0x1166('0x30'),_0x1a3eb8['uniqueid']),_0x1a3eb8);calls['newstate'](_0x1a3eb8);recordings[_0x1166('0x2f')](_0x1a3eb8);}catch(_0x17d074){utils['error'](util[_0x1166('0x19')]('[%s][index][newstate]',_0x1a3eb8[_0x1166('0x1e')]),_0x17d074);}});ami['on'](_0x1166('0x31'),function(_0x2852da){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x32'),_0x2852da[_0x1166('0x1e')]),_0x2852da);calls[_0x1166('0x31')](_0x2852da);recordings['hangup'](_0x2852da);dials[_0x1166('0x31')](_0x2852da);agents[_0x1166('0x31')](_0x2852da);queues['hangup'](_0x2852da);}catch(_0x2e031c){utils[_0x1166('0x14')](util['format'](_0x1166('0x32'),_0x2852da['uniqueid']),_0x2e031c);}});ami['on'](_0x1166('0x33'),function(_0x4c7421){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x34'),_0x4c7421[_0x1166('0x1e')]),_0x4c7421);members[_0x1166('0x33')](_0x4c7421);}catch(_0x13bdb5){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x34'),_0x4c7421[_0x1166('0x1e')]),_0x13bdb5);}});ami['on'](_0x1166('0x35'),function(_0x312373){try{utils[_0x1166('0x18')](util[_0x1166('0x19')]('[%s][index][blindtransfer]',_0x312373['uniqueid']),_0x312373);queues[_0x1166('0x35')](_0x312373);agents['blindtransfer'](_0x312373);transfers['blindtransfer'](_0x312373);recordings[_0x1166('0x35')](_0x312373);}catch(_0x232160){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x36'),_0x312373[_0x1166('0x1e')]),_0x232160);}});ami['on'](_0x1166('0x37'),function(_0xce2d94){try{utils['debug'](util['format'](_0x1166('0x38'),_0xce2d94[_0x1166('0x39')]),_0xce2d94);queues['attendedtransfer'](_0xce2d94);transfers[_0x1166('0x37')](_0xce2d94);agents[_0x1166('0x37')](_0xce2d94);calls[_0x1166('0x37')](_0xce2d94);}catch(_0x31f52c){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x38'),_0xce2d94[_0x1166('0x39')]),_0x31f52c);}});ami['on'](_0x1166('0x3a'),function(_0x4e9af0){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x3b'),_0x4e9af0[_0x1166('0x1e')]),_0x4e9af0);queues[_0x1166('0x3a')](_0x4e9af0);recordings['varset'](_0x4e9af0);calls[_0x1166('0x3a')](_0x4e9af0);dials[_0x1166('0x3a')](_0x4e9af0);}catch(_0x204655){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x3b'),_0x4e9af0['uniqueid']),_0x204655);}});ami['on']('newexten',function(_0x18f509){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x3c'),_0x18f509[_0x1166('0x1e')]),_0x18f509);calls[_0x1166('0x3d')](_0x18f509);recordings[_0x1166('0x3d')](_0x18f509);dials[_0x1166('0x3d')](_0x18f509);}catch(_0x5f2a71){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x3c'),_0x18f509[_0x1166('0x1e')]),_0x5f2a71);}});ami['on'](_0x1166('0x3e'),function(_0x4ac6f5){try{utils[_0x1166('0x18')](util[_0x1166('0x19')](_0x1166('0x3f'),_0x4ac6f5['uniqueid']),_0x4ac6f5);calls[_0x1166('0x3e')](_0x4ac6f5);recordings[_0x1166('0x3e')](_0x4ac6f5);}catch(_0xd91e0f){utils['error'](util[_0x1166('0x19')](_0x1166('0x3f'),_0x4ac6f5[_0x1166('0x1e')]),_0xd91e0f);}});ami['on'](_0x1166('0x40'),function(_0x423907){try{utils[_0x1166('0x18')](util['format'](_0x1166('0x41'),_0x423907[_0x1166('0x1e')]),_0x423907);dials['dialbegin'](_0x423907);}catch(_0x56b0c4){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x42'),_0x423907[_0x1166('0x1e')]),_0x56b0c4);}});ami['on']('dialend',function(_0x11dab6){try{utils[_0x1166('0x18')](util['format']('[%s][index][dialend]',_0x11dab6['uniqueid']),_0x11dab6);dials[_0x1166('0x43')](_0x11dab6);}catch(_0x33fe02){utils[_0x1166('0x14')](util[_0x1166('0x19')](_0x1166('0x44'),_0x11dab6[_0x1166('0x1e')]),_0x33fe02);}});}
\ No newline at end of file
index de3dd61..31467be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['CreateMemberReport','getUserByName','split','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','duration','exitAt','agentcomplete','isNil','queue','assign','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','type','then','membername','name','internal','request'];(function(_0x30f60,_0x5aab07){var _0x151f76=function(_0xc56c60){while(--_0xc56c60){_0x30f60['push'](_0x30f60['shift']());}};_0x151f76(++_0x5aab07);}(_0xb43b,0xbf));var _0xbb43=function(_0x54bdcf,_0x36c510){_0x54bdcf=_0x54bdcf-0x0;var _0x495848=_0xb43b[_0x54bdcf];return _0x495848;};'use strict';var _=require(_0xbb43('0x0'));var util=require('util');var utils=require(_0xbb43('0x1'));var members={};var exclude=[_0xbb43('0x2'),_0xbb43('0x3')];function writeDB(_0x293836){utils[_0xbb43('0x4')](util[_0xbb43('0x5')](_0xbb43('0x6'),_0x293836[_0xbb43('0x7')],_0x293836[_0xbb43('0x8')],_0x293836[_0xbb43('0x9')],_0x293836[_0xbb43('0xa')],_0x293836['membername'],_0x293836[_0xbb43('0xb')]));if(_0x293836['interface']){utils['getUserByInterface'](_0x293836[_0xbb43('0x8')])[_0xbb43('0xc')](function(_0x20ed03){if(_0x20ed03){_0x293836[_0xbb43('0xd')]=_0x20ed03[_0xbb43('0xe')];_0x293836['internal']=_0x20ed03[_0xbb43('0xf')];utils[_0xbb43('0x10')](_0xbb43('0x11'),_0x293836);}else{utils[_0xbb43('0x12')](_0x293836['interface'][_0xbb43('0x13')]('/')[0x1])[_0xbb43('0xc')](function(_0x5a25b6){if(_0x5a25b6){_0x293836['membername']=_0x5a25b6['name'];_0x293836[_0xbb43('0xf')]=_0x5a25b6['internal'];utils[_0xbb43('0x10')]('CreateMemberReport',_0x293836);}});}})[_0xbb43('0x14')](function(_0x217a4e){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x16'),_0x293836['uniqueid']),_0x217a4e);});}delete members[_0x293836[_0xbb43('0x8')]];}function startsWith(_0x4ac25c,_0x199726){return _[_0xbb43('0x17')](_0x4ac25c,function(_0x15182b){return _[_0xbb43('0x18')](_0x199726,_0x15182b);});}exports[_0xbb43('0x19')]=function(_0x126f61){try{utils[_0xbb43('0x1a')](util[_0xbb43('0x5')](_0xbb43('0x1b'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')]),_0x126f61);utils['info'](util[_0xbb43('0x5')](_0xbb43('0x1d'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')],_0x126f61[_0xbb43('0x1e')],_0x126f61[_0xbb43('0x1c')]));switch(_0x126f61[_0xbb43('0x1e')]){case _0xbb43('0x1f'):case _0xbb43('0x20'):if(!startsWith(exclude,_0x126f61[_0xbb43('0x1c')])){members[_0x126f61[_0xbb43('0x1c')]]={'channel':_0xbb43('0x21'),'interface':_0x126f61[_0xbb43('0x1c')],'type':_0xbb43('0x22'),'enterAt':utils[_0xbb43('0x23')](),'role':_0xbb43('0x24')};}break;case _0xbb43('0x25'):if(!_['isNil'](members[_0x126f61[_0xbb43('0x1c')]])){members[_0x126f61[_0xbb43('0x1c')]]['exitAt']=utils[_0xbb43('0x23')]();members[_0x126f61[_0xbb43('0x1c')]][_0xbb43('0x26')]=utils['diffTime'](members[_0x126f61['device']][_0xbb43('0x27')],members[_0x126f61[_0xbb43('0x1c')]]['enterAt']);if(members[_0x126f61['device']][_0xbb43('0x7')]){writeDB(members[_0x126f61[_0xbb43('0x1c')]]);}}break;default:break;}}catch(_0x268fb5){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x1b'),members[_0x126f61[_0xbb43('0x1c')]]?members[_0x126f61[_0xbb43('0x1c')]]['uniqueid']:_0x126f61[_0xbb43('0x1c')]),_0x268fb5);}};exports[_0xbb43('0x28')]=function(_0x821beb){try{if(!_[_0xbb43('0x29')](members[_0x821beb[_0xbb43('0x8')]])){utils[_0xbb43('0x1a')](util[_0xbb43('0x5')]('[%s][members][agentcomplete]',_0x821beb[_0xbb43('0x7')]),_0x821beb);utils[_0xbb43('0x4')](util[_0xbb43('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x821beb[_0xbb43('0x7')],_0x821beb[_0xbb43('0x8')],_0x821beb[_0xbb43('0x2a')]));members[_0x821beb[_0xbb43('0x8')]]=_[_0xbb43('0x2b')](members[_0x821beb[_0xbb43('0x8')]],{'data4':_0x821beb[_0xbb43('0x2a')],'uniqueid':_0x821beb[_0xbb43('0x7')]});}}catch(_0xd579d8){utils['error'](util['format']('[%s][members][agentcomplete]',_0x821beb['uniqueid']),_0xd579d8);}};exports[_0xbb43('0x2c')]=function(_0x1186fd){try{utils[_0xbb43('0x1a')](util[_0xbb43('0x5')](_0xbb43('0x2d'),_0x1186fd[_0xbb43('0x7')]),_0x1186fd);if(_0x1186fd[_0xbb43('0x9')]){var _0x3082b3=_0x1186fd['channel'][_0xbb43('0x13')]('-')[0x0];if(!_[_0xbb43('0x29')](members[_0x3082b3])){members[_0x3082b3]=_[_0xbb43('0x2b')](members[_0x3082b3],{'data1':members[_0x3082b3][_0xbb43('0x2e')]||_0x1186fd['type'],'data2':members[_0x3082b3][_0xbb43('0xa')]||_0x1186fd[_0xbb43('0x2f')],'data3':members[_0x3082b3][_0xbb43('0x30')]||_0x1186fd[_0xbb43('0x31')],'uniqueid':members[_0x3082b3]['uniqueid']||_0x1186fd[_0xbb43('0x7')]});utils['info'](util[_0xbb43('0x5')](_0xbb43('0x32'),_0x1186fd[_0xbb43('0x7')],members[_0x3082b3][_0xbb43('0x2e')],members[_0x3082b3][_0xbb43('0xa')],members[_0x3082b3][_0xbb43('0x30')]));if(members[_0x3082b3][_0xbb43('0x27')]){writeDB(members[_0x3082b3]);}}}if(_0x1186fd[_0xbb43('0x33')]){var _0xc087aa=_0x1186fd[_0xbb43('0x33')][_0xbb43('0x13')]('-')[0x0];if(!_[_0xbb43('0x29')](members[_0xc087aa])){members[_0xc087aa]=_['assign'](members[_0xc087aa],{'data1':members[_0xc087aa][_0xbb43('0x2e')]||_0x1186fd[_0xbb43('0xb')],'data2':members[_0xc087aa][_0xbb43('0xa')]||_0x1186fd[_0xbb43('0x2f')],'data3':members[_0xc087aa][_0xbb43('0x30')]||_0x1186fd[_0xbb43('0x31')],'uniqueid':members[_0xc087aa][_0xbb43('0x7')]||_0x1186fd[_0xbb43('0x7')]});utils[_0xbb43('0x4')](util[_0xbb43('0x5')](_0xbb43('0x32'),_0x1186fd[_0xbb43('0x7')],members[_0xc087aa][_0xbb43('0x2e')],members[_0xc087aa][_0xbb43('0xa')],members[_0xc087aa][_0xbb43('0x30')]));if(members[_0xc087aa]['exitAt']){writeDB(members[_0xc087aa]);}}}}catch(_0x4807a3){utils[_0xbb43('0x15')](util[_0xbb43('0x5')](_0xbb43('0x2d'),_0x1186fd[_0xbb43('0x7')]),_0x4807a3);}};
\ No newline at end of file
+var _0xfa68=['interface','channel','data2','type','then','name','internal','request','CreateMemberReport','split','membername','catch','error','format','[%s][members][writeDB]','some','startsWith','debug','device','state','BUSY','TALKING','now','duration','exitAt','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','[%s][members][cdr]','isNil','data1','source','data3','destination','destinationchannel','assign','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','./utils','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid'];(function(_0x34e485,_0x45a486){var _0x56e7bf=function(_0x1e470e){while(--_0x1e470e){_0x34e485['push'](_0x34e485['shift']());}};_0x56e7bf(++_0x45a486);}(_0xfa68,0x86));var _0x8fa6=function(_0x4e0181,_0x393c5c){_0x4e0181=_0x4e0181-0x0;var _0x305518=_0xfa68[_0x4e0181];return _0x305518;};'use strict';var _=require(_0x8fa6('0x0'));var util=require(_0x8fa6('0x1'));var utils=require(_0x8fa6('0x2'));var members={};var exclude=['Local/_attended@transfer',_0x8fa6('0x3')];function writeDB(_0x3debfe){utils[_0x8fa6('0x4')](util['format'](_0x8fa6('0x5'),_0x3debfe[_0x8fa6('0x6')],_0x3debfe[_0x8fa6('0x7')],_0x3debfe[_0x8fa6('0x8')],_0x3debfe[_0x8fa6('0x9')],_0x3debfe['membername'],_0x3debfe[_0x8fa6('0xa')]));if(_0x3debfe[_0x8fa6('0x7')]){utils['getUserByInterface'](_0x3debfe[_0x8fa6('0x7')])[_0x8fa6('0xb')](function(_0x530b2e){if(_0x530b2e){_0x3debfe['membername']=_0x530b2e[_0x8fa6('0xc')];_0x3debfe[_0x8fa6('0xd')]=_0x530b2e['internal'];utils[_0x8fa6('0xe')](_0x8fa6('0xf'),_0x3debfe);}else{utils['getUserByName'](_0x3debfe['interface'][_0x8fa6('0x10')]('/')[0x1])[_0x8fa6('0xb')](function(_0x480ca0){if(_0x480ca0){_0x3debfe[_0x8fa6('0x11')]=_0x480ca0[_0x8fa6('0xc')];_0x3debfe['internal']=_0x480ca0[_0x8fa6('0xd')];utils[_0x8fa6('0xe')]('CreateMemberReport',_0x3debfe);}});}})[_0x8fa6('0x12')](function(_0x3f387f){utils[_0x8fa6('0x13')](util[_0x8fa6('0x14')](_0x8fa6('0x15'),_0x3debfe['uniqueid']),_0x3f387f);});}delete members[_0x3debfe['interface']];}function startsWith(_0x3426a7,_0x5eff0e){return _[_0x8fa6('0x16')](_0x3426a7,function(_0x22bb50){return _[_0x8fa6('0x17')](_0x5eff0e,_0x22bb50);});}exports['devicestatechange']=function(_0x210bfe){try{utils[_0x8fa6('0x18')](util[_0x8fa6('0x14')]('[%s][members][devicestatechange]',members[_0x210bfe[_0x8fa6('0x19')]]?members[_0x210bfe[_0x8fa6('0x19')]][_0x8fa6('0x6')]:_0x210bfe[_0x8fa6('0x19')]),_0x210bfe);utils['info'](util[_0x8fa6('0x14')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x210bfe[_0x8fa6('0x19')]]?members[_0x210bfe[_0x8fa6('0x19')]][_0x8fa6('0x6')]:_0x210bfe[_0x8fa6('0x19')],_0x210bfe['state'],_0x210bfe[_0x8fa6('0x19')]));switch(_0x210bfe[_0x8fa6('0x1a')]){case'INUSE':case _0x8fa6('0x1b'):if(!startsWith(exclude,_0x210bfe[_0x8fa6('0x19')])){members[_0x210bfe[_0x8fa6('0x19')]]={'channel':'voice','interface':_0x210bfe[_0x8fa6('0x19')],'type':_0x8fa6('0x1c'),'enterAt':utils[_0x8fa6('0x1d')](),'role':'agent'};}break;case'NOT_INUSE':if(!_['isNil'](members[_0x210bfe[_0x8fa6('0x19')]])){members[_0x210bfe[_0x8fa6('0x19')]]['exitAt']=utils['now']();members[_0x210bfe[_0x8fa6('0x19')]][_0x8fa6('0x1e')]=utils['diffTime'](members[_0x210bfe['device']][_0x8fa6('0x1f')],members[_0x210bfe[_0x8fa6('0x19')]][_0x8fa6('0x20')]);if(members[_0x210bfe['device']][_0x8fa6('0x6')]){writeDB(members[_0x210bfe[_0x8fa6('0x19')]]);}}break;default:break;}}catch(_0x4bf08b){utils[_0x8fa6('0x13')](util[_0x8fa6('0x14')]('[%s][members][devicestatechange]',members[_0x210bfe[_0x8fa6('0x19')]]?members[_0x210bfe[_0x8fa6('0x19')]]['uniqueid']:_0x210bfe['device']),_0x4bf08b);}};exports[_0x8fa6('0x21')]=function(_0xbe8f01){try{if(!_['isNil'](members[_0xbe8f01['interface']])){utils[_0x8fa6('0x18')](util[_0x8fa6('0x14')](_0x8fa6('0x22'),_0xbe8f01[_0x8fa6('0x6')]),_0xbe8f01);utils[_0x8fa6('0x4')](util[_0x8fa6('0x14')](_0x8fa6('0x23'),_0xbe8f01[_0x8fa6('0x6')],_0xbe8f01['interface'],_0xbe8f01['queue']));members[_0xbe8f01[_0x8fa6('0x7')]]=_['assign'](members[_0xbe8f01[_0x8fa6('0x7')]],{'data4':_0xbe8f01[_0x8fa6('0x24')],'uniqueid':_0xbe8f01[_0x8fa6('0x6')]});}}catch(_0x50ed35){utils[_0x8fa6('0x13')](util[_0x8fa6('0x14')]('[%s][members][agentcomplete]',_0xbe8f01[_0x8fa6('0x6')]),_0x50ed35);}};exports[_0x8fa6('0x25')]=function(_0x304fed){try{utils[_0x8fa6('0x18')](util[_0x8fa6('0x14')](_0x8fa6('0x26'),_0x304fed[_0x8fa6('0x6')]),_0x304fed);if(_0x304fed[_0x8fa6('0x8')]){var _0x133300=_0x304fed[_0x8fa6('0x8')][_0x8fa6('0x10')]('-')[0x0];if(!_[_0x8fa6('0x27')](members[_0x133300])){members[_0x133300]=_['assign'](members[_0x133300],{'data1':members[_0x133300][_0x8fa6('0x28')]||_0x304fed[_0x8fa6('0xa')],'data2':members[_0x133300][_0x8fa6('0x9')]||_0x304fed[_0x8fa6('0x29')],'data3':members[_0x133300][_0x8fa6('0x2a')]||_0x304fed[_0x8fa6('0x2b')],'uniqueid':members[_0x133300][_0x8fa6('0x6')]||_0x304fed['uniqueid']});utils['info'](util[_0x8fa6('0x14')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x304fed['uniqueid'],members[_0x133300]['data1'],members[_0x133300]['data2'],members[_0x133300]['data3']));if(members[_0x133300]['exitAt']){writeDB(members[_0x133300]);}}}if(_0x304fed[_0x8fa6('0x2c')]){var _0x448036=_0x304fed[_0x8fa6('0x2c')]['split']('-')[0x0];if(!_['isNil'](members[_0x448036])){members[_0x448036]=_[_0x8fa6('0x2d')](members[_0x448036],{'data1':members[_0x448036][_0x8fa6('0x28')]||_0x304fed[_0x8fa6('0xa')],'data2':members[_0x448036][_0x8fa6('0x9')]||_0x304fed['source'],'data3':members[_0x448036][_0x8fa6('0x2a')]||_0x304fed['destination'],'uniqueid':members[_0x448036]['uniqueid']||_0x304fed[_0x8fa6('0x6')]});utils[_0x8fa6('0x4')](util[_0x8fa6('0x14')](_0x8fa6('0x2e'),_0x304fed[_0x8fa6('0x6')],members[_0x448036][_0x8fa6('0x28')],members[_0x448036][_0x8fa6('0x9')],members[_0x448036][_0x8fa6('0x2a')]));if(members[_0x448036][_0x8fa6('0x1f')]){writeDB(members[_0x448036]);}}}}catch(_0x4e2597){utils[_0x8fa6('0x13')](util['format'](_0x8fa6('0x26'),_0x304fed['uniqueid']),_0x4e2597);}};
\ No newline at end of file
index e27db3c..a137a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6304=['queuecallerjoinAt','count','connectedlinenum','connectedlinename','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','transfer','COMPLETEDBY','reason','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','extension','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','transferexten','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','[%s][queues][queuecallerjoin]','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','variable','queuestatus','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','queuecallerabandon','EXITWITHKEY','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','holdtime','diffTime'];(function(_0x232248,_0x493ede){var _0x149261=function(_0x5de40e){while(--_0x5de40e){_0x232248['push'](_0x232248['shift']());}};_0x149261(++_0x493ede);}(_0x6304,0xf6));var _0x4630=function(_0x4d2d57,_0x375bec){_0x4d2d57=_0x4d2d57-0x0;var _0x172c5d=_0x6304[_0x4d2d57];return _0x172c5d;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x4630('0x0'));var queues={};function writeDB(_0x113e9c){utils[_0x4630('0x1')](util['format'](_0x4630('0x2'),_0x113e9c[_0x4630('0x3')],_0x113e9c['channel'],_0x113e9c[_0x4630('0x4')],_0x113e9c[_0x4630('0x5')],_0x113e9c[_0x4630('0x6')],_0x113e9c[_0x4630('0x7')],_0x113e9c[_0x4630('0x8')]));if(_0x113e9c[_0x4630('0x4')]){utils[_0x4630('0x9')](_0x113e9c[_0x4630('0x4')])[_0x4630('0xa')](function(_0x5d96e0){if(_0x5d96e0){_0x113e9c[_0x4630('0xb')]=_0x5d96e0[_0x4630('0xb')];}utils['request'](_0x4630('0xc'),_0x113e9c);});}else{utils[_0x4630('0xd')](_0x4630('0xc'),_0x113e9c);}if(_0x113e9c[_0x4630('0xe')]){delete queues[_0x113e9c[_0x4630('0xe')]];}else{delete queues[_0x113e9c['uniqueid']];}}exports[_0x4630('0xf')]=function(_0x2f2bd7){try{utils[_0x4630('0x10')](util['format']('[%s][queues][queuecallerjoin]',_0x2f2bd7[_0x4630('0x3')]),_0x2f2bd7);utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x12'),_0x2f2bd7[_0x4630('0x3')],_0x2f2bd7[_0x4630('0x4')],_0x2f2bd7['position']));queues[_0x2f2bd7[_0x4630('0x3')]]=_[_0x4630('0x13')](_0x2f2bd7,{'originalposition':_0x2f2bd7[_0x4630('0x14')],'queuecallerjoinAt':utils[_0x4630('0x15')](),'mohtime':0x0});}catch(_0x5b23b1){utils['error'](util[_0x4630('0x11')](_0x4630('0x16'),_0x2f2bd7['uniqueid']),_0x5b23b1);}};exports['hangup']=function(_0x227fdb){try{if(!_['isNil'](queues[_0x227fdb[_0x4630('0x3')]])){utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x17'),_0x227fdb[_0x4630('0x3')]),_0x227fdb);if(queues[_0x227fdb['uniqueid']][_0x4630('0x18')]){if(!queues[_0x227fdb[_0x4630('0x3')]]['queuecallerabandon']&&!queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x19')]){queues[_0x227fdb['uniqueid']][_0x4630('0x1a')]=!![];queues[_0x227fdb['uniqueid']]['queuecallercompleteAt']=utils[_0x4630('0x15')]();queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x8')]=_0x4630('0x1b');}utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x1c'),_0x227fdb[_0x4630('0x3')],queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0x1d')],queues[_0x227fdb[_0x4630('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x227fdb[_0x4630('0x3')]]);}else if(queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0xe')]){utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x1e'),_0x227fdb[_0x4630('0x3')],queues[_0x227fdb['uniqueid']][_0x4630('0x1d')],queues[_0x227fdb['uniqueid']][_0x4630('0xe')]));queues[queues[_0x227fdb[_0x4630('0x3')]][_0x4630('0xe')]]=queues[_0x227fdb[_0x4630('0x3')]];queues[queues[_0x227fdb[_0x4630('0x3')]]['transfereduniqueid']][_0x4630('0x1f')]=0x2;delete queues[_0x227fdb['uniqueid']];}}}catch(_0x28a9d8){utils[_0x4630('0x20')](util[_0x4630('0x11')]('[%s][queues][hangup]',_0x227fdb[_0x4630('0x3')]),_0x28a9d8);}};exports[_0x4630('0x21')]=function(_0xdb1f1a){try{utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x22'),_0xdb1f1a['uniqueid']),_0xdb1f1a);if(!_[_0x4630('0x23')](_0xdb1f1a[_0x4630('0x24')][_0x4630('0x25')])&&_0xdb1f1a['value'][_0x4630('0x26')]()!==_0x4630('0x27')){if(!_[_0x4630('0x23')](queues[_0xdb1f1a['uniqueid']])){queues[_0xdb1f1a[_0x4630('0x3')]]['queuecallerabandon']=![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0xdb1f1a['uniqueid']][_0x4630('0x19')]=!![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x29')]=utils['now']();queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]=_0xdb1f1a['value'][_0x4630('0x26')]();utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x2a'),_0xdb1f1a[_0x4630('0x3')],queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x1d')],_0xdb1f1a[_0x4630('0x2b')],queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]));writeDB(queues[_0xdb1f1a[_0x4630('0x3')]]);}}else if(!_[_0x4630('0x23')](_0xdb1f1a['variable'][_0x4630('0x2c')])){if(!_[_0x4630('0x23')](queues[_0xdb1f1a[_0x4630('0x3')]])&&!queues[_0xdb1f1a['uniqueid']]['queuecallerabandon']){queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x2d')]=![];queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0xdb1f1a['uniqueid']][_0x4630('0x19')]=!![];queues[_0xdb1f1a['uniqueid']][_0x4630('0x29')]=utils[_0x4630('0x15')]();queues[_0xdb1f1a['uniqueid']][_0x4630('0x8')]=_0x4630('0x2e');utils[_0x4630('0x1')](util[_0x4630('0x11')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0xdb1f1a['uniqueid'],queues[_0xdb1f1a[_0x4630('0x3')]][_0x4630('0x1d')],_0xdb1f1a[_0x4630('0x2b')],queues[_0xdb1f1a['uniqueid']]['queuecallerexitreason']));}}}catch(_0x4a1774){utils['error'](util['format']('[%s][queues][varset]',_0xdb1f1a['uniqueid']),_0x4a1774);}};exports[_0x4630('0x2d')]=function(_0x27f917){try{if(!_[_0x4630('0x23')](queues[_0x27f917['uniqueid']])){utils[_0x4630('0x10')](util[_0x4630('0x11')](_0x4630('0x2f'),_0x27f917[_0x4630('0x3')]),_0x27f917);queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x19')]=![];queues[_0x27f917[_0x4630('0x3')]]['queuecallerexitAt']=null;queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x2d')]=!![];queues[_0x27f917['uniqueid']][_0x4630('0x28')]=utils['now']();queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x8')]='ABANDONED';utils[_0x4630('0x1')](util['format'](_0x4630('0x30'),_0x27f917[_0x4630('0x3')],queues[_0x27f917['uniqueid']][_0x4630('0x1d')],queues[_0x27f917[_0x4630('0x3')]][_0x4630('0x8')]));}}catch(_0x331c7a){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x2f'),_0x27f917[_0x4630('0x3')]),_0x331c7a);}};exports[_0x4630('0x31')]=function(_0x4f02c6){try{if(!_[_0x4630('0x23')](queues[_0x4f02c6[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x32'),_0x4f02c6[_0x4630('0x3')]),_0x4f02c6);utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x33'),_0x4f02c6['uniqueid'],queues[_0x4f02c6['uniqueid']][_0x4630('0x1d')],_0x4f02c6['connectedlinenum'],_0x4f02c6['connectedlinename']));queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x31')]=!![];queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x18')]=utils[_0x4630('0x15')]();queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x34')]=utils[_0x4630('0x35')](queues[_0x4f02c6['uniqueid']]['queuecallerleaveAt'],queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x36')]);queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x14')]=_0x4f02c6['position'];queues[_0x4f02c6['uniqueid']][_0x4630('0x37')]=_0x4f02c6[_0x4630('0x37')];queues[_0x4f02c6[_0x4630('0x3')]]['connectedlinenum']=_0x4f02c6[_0x4630('0x38')];queues[_0x4f02c6[_0x4630('0x3')]][_0x4630('0x39')]=_0x4f02c6[_0x4630('0x39')];}}catch(_0x11f584){utils['error'](util['format'](_0x4630('0x32'),_0x4f02c6['uniqueid']),_0x11f584);}};exports[_0x4630('0x3a')]=function(_0x4bbaa5){try{if(!_[_0x4630('0x23')](queues[_0x4bbaa5[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x3b'),_0x4bbaa5[_0x4630('0x3')]),_0x4bbaa5);utils['info'](util[_0x4630('0x11')](_0x4630('0x3c'),_0x4bbaa5[_0x4630('0x3')],queues[_0x4bbaa5['uniqueid']][_0x4630('0x1d')],_0x4bbaa5[_0x4630('0x3d')],_0x4bbaa5[_0x4630('0x3e')]));queues[_0x4bbaa5['uniqueid']][_0x4630('0x2d')]=![];queues[_0x4bbaa5[_0x4630('0x3')]]['queuecallerabandon']=![];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x19')]=![];queues[_0x4bbaa5[_0x4630('0x3')]]['queuecallerexitreason']=null;queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x29')]=null;queues[_0x4bbaa5['uniqueid']][_0x4630('0x3f')]=!![];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x7')]=_0x4bbaa5[_0x4630('0x3e')];queues[_0x4bbaa5[_0x4630('0x3')]][_0x4630('0x5')]=_0x4bbaa5[_0x4630('0x3d')];}}catch(_0x4fa23a){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x3b'),_0x4bbaa5[_0x4630('0x3')]),_0x4fa23a);}};exports[_0x4630('0x40')]=function(_0x481cd0){try{if(!_['isNil'](queues[_0x481cd0['uniqueid']])){if(queues[_0x481cd0[_0x4630('0x3')]]['queuecallerleaveAt']){utils[_0x4630('0x10')](util['format'](_0x4630('0x41'),_0x481cd0[_0x4630('0x3')]),_0x481cd0);queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x2d')]=![];queues[_0x481cd0['uniqueid']][_0x4630('0x2d')]=![];queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x28')]=null;queues[_0x481cd0[_0x4630('0x3')]]['queuecallerexit']=![];queues[_0x481cd0['uniqueid']][_0x4630('0x29')]=null;queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x3f')]=!![];queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x5')]=_0x481cd0[_0x4630('0x3d')];queues[_0x481cd0[_0x4630('0x3')]]['queuecallercomplete']=!![];queues[_0x481cd0[_0x4630('0x3')]]['queuecallercompleteAt']=utils[_0x4630('0x15')]();if(_0x481cd0['reason']==_0x4630('0x42')){if(!queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x42')]){queues[_0x481cd0['uniqueid']][_0x4630('0x8')]='TRANSFER';}}else{queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x8')]=_0x4630('0x43')+_0x481cd0[_0x4630('0x44')][_0x4630('0x26')]();}utils[_0x4630('0x1')](util[_0x4630('0x11')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x481cd0[_0x4630('0x3')],queues[_0x481cd0[_0x4630('0x3')]][_0x4630('0x1d')],_0x481cd0[_0x4630('0x3d')],queues[_0x481cd0[_0x4630('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x481cd0['uniqueid']]);}}}catch(_0x4787b7){utils['error'](util['format'](_0x4630('0x41'),_0x481cd0[_0x4630('0x3')]),_0x4787b7);}};exports['blindtransfer']=function(_0x157c2f){try{if(!_[_0x4630('0x23')](queues[_0x157c2f['transfereeuniqueid']])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x45'),_0x157c2f[_0x4630('0x3')]),_0x157c2f);queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x42')]=!![];queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x47')]=_0x4630('0x48');queues[_0x157c2f[_0x4630('0x46')]]['transferexten']=_0x157c2f[_0x4630('0x49')];queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x4a')]=_0x157c2f[_0x4630('0x46')];queues[_0x157c2f[_0x4630('0x46')]]['queuecallerexitreason']='BLINDTRANSFER';utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x4b'),_0x157c2f['uniqueid'],queues[_0x157c2f[_0x4630('0x46')]][_0x4630('0x1d')],_0x157c2f[_0x4630('0x46')],_0x157c2f[_0x4630('0x49')]));}}catch(_0x4b1551){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x45'),_0x157c2f[_0x4630('0x3')]),_0x4b1551);}};exports[_0x4630('0x4c')]=function(_0x955663){try{utils[_0x4630('0x10')](util[_0x4630('0x11')]('[%s][queues][attendedtransfer]',_0x955663['origtransfereruniqueid']),_0x955663);if(_0x955663[_0x4630('0x4d')]==_0x955663[_0x4630('0x4e')]){if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4f')]])){utils['info'](util[_0x4630('0x11')](_0x4630('0x50'),_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x1d')],_0x955663['origtransfererexten']));queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x42')]=!![];queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x47')]='ATTENDED';queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x51')]=_0x955663[_0x4630('0x52')];queues[_0x955663['secondtransfererlinkedid']]['transferuniqueid']=_0x955663['origtransfereruniqueid'];queues[_0x955663[_0x4630('0x4f')]]['queuecallerexitreason']=_0x4630('0x53');}if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4e')]])){if(_0x955663['transfereelinkedid']&&queues[_0x955663[_0x4630('0x54')]]){queues[_0x955663[_0x4630('0x54')]][_0x4630('0x1f')]=0x1;queues[_0x955663[_0x4630('0x46')]]=_[_0x4630('0x55')](queues[_0x955663[_0x4630('0x54')]]);queues[_0x955663[_0x4630('0x46')]][_0x4630('0xe')]=_0x955663[_0x4630('0x56')];queues[_0x955663[_0x4630('0x46')]][_0x4630('0x1f')]=0x2;queues[_0x955663[_0x4630('0x46')]][_0x4630('0x6')]=queues[_0x955663['secondtransfererlinkedid']][_0x4630('0x6')];queues[_0x955663[_0x4630('0x46')]]['calleridname']=queues[_0x955663['secondtransfererlinkedid']][_0x4630('0x57')];queues[_0x955663[_0x4630('0x46')]][_0x4630('0x36')]=utils[_0x4630('0x15')]();queues[_0x955663[_0x4630('0x46')]]['queuecallerleaveAt']=utils[_0x4630('0x15')]();queues[_0x955663['transfereeuniqueid']][_0x4630('0x34')]=0x0;queues[_0x955663[_0x4630('0x46')]][_0x4630('0x58')]=0x0;utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x59'),_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x46')]][_0x4630('0x1d')],queues[_0x955663[_0x4630('0x46')]][_0x4630('0x6')],queues[_0x955663[_0x4630('0x46')]]['calleridname']));}else{utils[_0x4630('0x1')](util['format'](_0x4630('0x5a'),_0x955663['origtransfereruniqueid'],queues[_0x955663['origtransfererlinkedid']]['name'],_0x955663[_0x4630('0x4f')]));queues[_0x955663[_0x4630('0x4e')]][_0x4630('0xe')]=_0x955663['secondtransfererlinkedid'];}}}else if(_0x955663[_0x4630('0x5b')]==_0x955663[_0x4630('0x4f')]){if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4e')]])){utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x5c'),_0x955663['origtransfereruniqueid'],queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x1d')],_0x955663['secondtransfereruniqueid'],_0x955663[_0x4630('0x5d')]));queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x42')]=!![];queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x47')]='ATTENDED';queues[_0x955663[_0x4630('0x4e')]][_0x4630('0x51')]=_0x955663['secondtransfererexten'];queues[_0x955663[_0x4630('0x4e')]]['transferuniqueid']=_0x955663[_0x4630('0x5b')];queues[_0x955663[_0x4630('0x4e')]]['queuecallerexitreason']=_0x4630('0x53');}if(!_[_0x4630('0x23')](queues[_0x955663[_0x4630('0x4f')]])){if(_0x955663['transfertargetlinkedid']&&queues[_0x955663['transfertargetlinkedid']]){queues[_0x955663[_0x4630('0x5e')]][_0x4630('0x1f')]=0x1;queues[_0x955663['transfertargetuniqueid']]=_[_0x4630('0x55')](queues[_0x955663[_0x4630('0x5e')]]);queues[_0x955663[_0x4630('0x56')]]['transfereduniqueid']=_0x955663[_0x4630('0x56')];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x1f')]=0x2;queues[_0x955663[_0x4630('0x56')]][_0x4630('0x6')]=queues[_0x955663['origtransfererlinkedid']]['calleridnum'];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x57')]=queues[_0x955663['origtransfererlinkedid']][_0x4630('0x57')];queues[_0x955663[_0x4630('0x56')]][_0x4630('0x36')]=utils[_0x4630('0x15')]();queues[_0x955663[_0x4630('0x56')]][_0x4630('0x18')]=utils['now']();queues[_0x955663[_0x4630('0x56')]][_0x4630('0x34')]=0x0;queues[_0x955663[_0x4630('0x56')]][_0x4630('0x58')]=0x0;utils[_0x4630('0x1')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x1d')],queues[_0x955663['transfertargetuniqueid']][_0x4630('0xe')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x6')],queues[_0x955663[_0x4630('0x56')]][_0x4630('0x57')]));}else{utils[_0x4630('0x1')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x955663[_0x4630('0x4d')],queues[_0x955663[_0x4630('0x4f')]][_0x4630('0x1d')],_0x955663[_0x4630('0x4e')]));queues[_0x955663['secondtransfererlinkedid']]['transfereduniqueid']=_0x955663[_0x4630('0x4e')];}}}}catch(_0x42bdfc){utils[_0x4630('0x20')](util[_0x4630('0x11')](_0x4630('0x5f'),_0x955663[_0x4630('0x4d')]),_0x42bdfc);}};exports['musiconholdstart']=function(_0x3ede66){try{if(!_[_0x4630('0x23')](queues[_0x3ede66[_0x4630('0x3')]])){utils['debug'](util[_0x4630('0x11')](_0x4630('0x60'),_0x3ede66[_0x4630('0x3')]),_0x3ede66);queues[_0x3ede66[_0x4630('0x3')]][_0x4630('0x61')]=utils[_0x4630('0x15')]();utils[_0x4630('0x1')](util[_0x4630('0x11')](_0x4630('0x62'),_0x3ede66[_0x4630('0x3')],queues[_0x3ede66['uniqueid']][_0x4630('0x1d')],queues[_0x3ede66['uniqueid']][_0x4630('0x61')]));}}catch(_0x2381a2){utils[_0x4630('0x20')](util['format'](_0x4630('0x60'),_0x3ede66[_0x4630('0x3')]),_0x2381a2);}};exports[_0x4630('0x63')]=function(_0x27d9a8){try{if(!_[_0x4630('0x23')](queues[_0x27d9a8[_0x4630('0x3')]])){if(!_['isNil'](queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x61')])){utils[_0x4630('0x10')](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]',_0x27d9a8[_0x4630('0x3')]),_0x27d9a8);queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x58')]+=utils['diffTime'](utils[_0x4630('0x15')](),queues[_0x27d9a8[_0x4630('0x3')]]['musiconholdstartAt']);utils['info'](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x27d9a8[_0x4630('0x3')],queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x1d')],queues[_0x27d9a8[_0x4630('0x3')]][_0x4630('0x58')]));delete queues[_0x27d9a8[_0x4630('0x3')]]['musiconholdstartAt'];}}}catch(_0x58b353){utils[_0x4630('0x20')](util[_0x4630('0x11')]('[%s][queues][musiconholdstop]',_0x27d9a8[_0x4630('0x3')]),_0x58b353);}};
\ No newline at end of file
+var _0x1216=['BLIND','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','transferexten','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','transfertargetlinkedid','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','debug','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][hangup]','[%s][queues][varset]','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition','EXITWITHKEY','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','[%s][queues][queuecallerleave]','[%s][queues][agentconnect]','destaccountcode','assigned','[%s][queues][agentcomplete]','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','membername','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]'];(function(_0x277bea,_0xc20f25){var _0x1d403d=function(_0x362f8d){while(--_0x362f8d){_0x277bea['push'](_0x277bea['shift']());}};_0x1d403d(++_0xc20f25);}(_0x1216,0xe8));var _0x6121=function(_0x57d370,_0x3ed0f6){_0x57d370=_0x57d370-0x0;var _0x550fd2=_0x1216[_0x57d370];return _0x550fd2;};'use strict';var _=require(_0x6121('0x0'));var util=require('util');var utils=require(_0x6121('0x1'));var queues={};function writeDB(_0x55783e){utils[_0x6121('0x2')](util['format'](_0x6121('0x3'),_0x55783e[_0x6121('0x4')],_0x55783e['channel'],_0x55783e[_0x6121('0x5')],_0x55783e[_0x6121('0x6')],_0x55783e[_0x6121('0x7')],_0x55783e[_0x6121('0x8')],_0x55783e[_0x6121('0x9')]));if(_0x55783e[_0x6121('0x5')]){utils[_0x6121('0xa')](_0x55783e[_0x6121('0x5')])[_0x6121('0xb')](function(_0x12cf17){if(_0x12cf17){_0x55783e[_0x6121('0xc')]=_0x12cf17[_0x6121('0xc')];}utils[_0x6121('0xd')]('CreateVoiceQueueReport',_0x55783e);});}else{utils[_0x6121('0xd')](_0x6121('0xe'),_0x55783e);}if(_0x55783e[_0x6121('0xf')]){delete queues[_0x55783e['transfereduniqueid']];}else{delete queues[_0x55783e[_0x6121('0x4')]];}}exports['queuecallerjoin']=function(_0xf7cac5){try{utils['debug'](util[_0x6121('0x10')]('[%s][queues][queuecallerjoin]',_0xf7cac5[_0x6121('0x4')]),_0xf7cac5);utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x11'),_0xf7cac5['uniqueid'],_0xf7cac5[_0x6121('0x5')],_0xf7cac5[_0x6121('0x12')]));queues[_0xf7cac5[_0x6121('0x4')]]=_['assign'](_0xf7cac5,{'originalposition':_0xf7cac5[_0x6121('0x12')],'queuecallerjoinAt':utils[_0x6121('0x13')](),'mohtime':0x0});}catch(_0x58259c){utils[_0x6121('0x14')](util[_0x6121('0x10')](_0x6121('0x15'),_0xf7cac5[_0x6121('0x4')]),_0x58259c);}};exports[_0x6121('0x16')]=function(_0xe426d4){try{if(!_[_0x6121('0x17')](queues[_0xe426d4['uniqueid']])){utils[_0x6121('0x18')](util[_0x6121('0x10')]('[%s][queues][hangup]',_0xe426d4[_0x6121('0x4')]),_0xe426d4);if(queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0x19')]){if(!queues[_0xe426d4['uniqueid']][_0x6121('0x1a')]&&!queues[_0xe426d4[_0x6121('0x4')]]['queuecallerexit']){queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0x1b')]=!![];queues[_0xe426d4['uniqueid']]['queuecallercompleteAt']=utils[_0x6121('0x13')]();queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0x9')]=_0x6121('0x1c');}utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x1d'),_0xe426d4[_0x6121('0x4')],queues[_0xe426d4['uniqueid']][_0x6121('0x1e')],queues[_0xe426d4['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0xe426d4[_0x6121('0x4')]]);}else if(queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0xf')]){utils[_0x6121('0x2')](util['format'](_0x6121('0x1f'),_0xe426d4[_0x6121('0x4')],queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0x1e')],queues[_0xe426d4['uniqueid']]['transfereduniqueid']));queues[queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0xf')]]=queues[_0xe426d4[_0x6121('0x4')]];queues[queues[_0xe426d4[_0x6121('0x4')]][_0x6121('0xf')]]['queuecallerenterreason']=0x2;delete queues[_0xe426d4[_0x6121('0x4')]];}}}catch(_0x1026a0){utils[_0x6121('0x14')](util[_0x6121('0x10')](_0x6121('0x20'),_0xe426d4[_0x6121('0x4')]),_0x1026a0);}};exports['varset']=function(_0x27c88d){try{utils['debug'](util[_0x6121('0x10')](_0x6121('0x21'),_0x27c88d[_0x6121('0x4')]),_0x27c88d);if(!_[_0x6121('0x17')](_0x27c88d['variable'][_0x6121('0x22')])&&_0x27c88d[_0x6121('0x23')]['toUpperCase']()!==_0x6121('0x24')){if(!_[_0x6121('0x17')](queues[_0x27c88d[_0x6121('0x4')]])){queues[_0x27c88d['uniqueid']]['queuecallerabandon']=![];queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x25')]=null;queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x26')]=!![];queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x27')]=utils[_0x6121('0x13')]();queues[_0x27c88d['uniqueid']][_0x6121('0x9')]=_0x27c88d[_0x6121('0x23')][_0x6121('0x28')]();utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x29'),_0x27c88d['uniqueid'],queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x1e')],_0x27c88d[_0x6121('0x23')],queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x9')]));writeDB(queues[_0x27c88d[_0x6121('0x4')]]);}}else if(!_['isNil'](_0x27c88d[_0x6121('0x2a')][_0x6121('0x2b')])){if(!_['isNil'](queues[_0x27c88d[_0x6121('0x4')]])&&!queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x1a')]){queues[_0x27c88d[_0x6121('0x4')]]['queuecallerabandon']=![];queues[_0x27c88d[_0x6121('0x4')]]['queuecallerabandonAt']=null;queues[_0x27c88d['uniqueid']][_0x6121('0x26')]=!![];queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x27')]=utils['now']();queues[_0x27c88d[_0x6121('0x4')]][_0x6121('0x9')]=_0x6121('0x2c');utils[_0x6121('0x2')](util[_0x6121('0x10')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x27c88d[_0x6121('0x4')],queues[_0x27c88d[_0x6121('0x4')]]['name'],_0x27c88d[_0x6121('0x23')],queues[_0x27c88d[_0x6121('0x4')]]['queuecallerexitreason']));}}}catch(_0x20bee2){utils[_0x6121('0x14')](util[_0x6121('0x10')](_0x6121('0x21'),_0x27c88d[_0x6121('0x4')]),_0x20bee2);}};exports['queuecallerabandon']=function(_0x3b0a24){try{if(!_[_0x6121('0x17')](queues[_0x3b0a24[_0x6121('0x4')]])){utils[_0x6121('0x18')](util[_0x6121('0x10')]('[%s][queues][queuecallerabandon]',_0x3b0a24[_0x6121('0x4')]),_0x3b0a24);queues[_0x3b0a24[_0x6121('0x4')]][_0x6121('0x26')]=![];queues[_0x3b0a24['uniqueid']][_0x6121('0x27')]=null;queues[_0x3b0a24['uniqueid']]['queuecallerabandon']=!![];queues[_0x3b0a24[_0x6121('0x4')]][_0x6121('0x25')]=utils['now']();queues[_0x3b0a24['uniqueid']][_0x6121('0x9')]=_0x6121('0x2d');utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x2e'),_0x3b0a24['uniqueid'],queues[_0x3b0a24[_0x6121('0x4')]]['name'],queues[_0x3b0a24['uniqueid']][_0x6121('0x9')]));}}catch(_0x1dd9f9){utils['error'](util['format'](_0x6121('0x2f'),_0x3b0a24['uniqueid']),_0x1dd9f9);}};exports[_0x6121('0x30')]=function(_0x4919b3){try{if(!_[_0x6121('0x17')](queues[_0x4919b3[_0x6121('0x4')]])){utils[_0x6121('0x18')](util[_0x6121('0x10')]('[%s][queues][queuecallerleave]',_0x4919b3[_0x6121('0x4')]),_0x4919b3);utils['info'](util[_0x6121('0x10')](_0x6121('0x31'),_0x4919b3['uniqueid'],queues[_0x4919b3[_0x6121('0x4')]]['name'],_0x4919b3['connectedlinenum'],_0x4919b3[_0x6121('0x32')]));queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x30')]=!![];queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x19')]=utils[_0x6121('0x13')]();queues[_0x4919b3['uniqueid']][_0x6121('0x33')]=utils[_0x6121('0x34')](queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x19')],queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x35')]);queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x12')]=_0x4919b3[_0x6121('0x12')];queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x36')]=_0x4919b3[_0x6121('0x36')];queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x37')]=_0x4919b3[_0x6121('0x37')];queues[_0x4919b3[_0x6121('0x4')]][_0x6121('0x32')]=_0x4919b3[_0x6121('0x32')];}}catch(_0x4c2f0b){utils[_0x6121('0x14')](util['format'](_0x6121('0x38'),_0x4919b3[_0x6121('0x4')]),_0x4c2f0b);}};exports['agentconnect']=function(_0x3782b7){try{if(!_['isNil'](queues[_0x3782b7['uniqueid']])){utils[_0x6121('0x18')](util[_0x6121('0x10')](_0x6121('0x39'),_0x3782b7[_0x6121('0x4')]),_0x3782b7);utils[_0x6121('0x2')](util[_0x6121('0x10')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x3782b7[_0x6121('0x4')],queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x1e')],_0x3782b7['membername'],_0x3782b7[_0x6121('0x3a')]));queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x1a')]=![];queues[_0x3782b7[_0x6121('0x4')]]['queuecallerabandon']=![];queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x25')]=null;queues[_0x3782b7[_0x6121('0x4')]]['queuecallerexit']=![];queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x9')]=null;queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x27')]=null;queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x3b')]=!![];queues[_0x3782b7['uniqueid']][_0x6121('0x8')]=_0x3782b7[_0x6121('0x3a')];queues[_0x3782b7[_0x6121('0x4')]][_0x6121('0x6')]=_0x3782b7['membername'];}}catch(_0x2af4dd){utils['error'](util[_0x6121('0x10')](_0x6121('0x39'),_0x3782b7[_0x6121('0x4')]),_0x2af4dd);}};exports['agentcomplete']=function(_0x4c8794){try{if(!_['isNil'](queues[_0x4c8794['uniqueid']])){if(queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x19')]){utils['debug'](util[_0x6121('0x10')](_0x6121('0x3c'),_0x4c8794[_0x6121('0x4')]),_0x4c8794);queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x1a')]=![];queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x1a')]=![];queues[_0x4c8794['uniqueid']][_0x6121('0x25')]=null;queues[_0x4c8794['uniqueid']][_0x6121('0x26')]=![];queues[_0x4c8794['uniqueid']][_0x6121('0x27')]=null;queues[_0x4c8794[_0x6121('0x4')]]['assigned']=!![];queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x6')]=_0x4c8794['membername'];queues[_0x4c8794[_0x6121('0x4')]]['queuecallercomplete']=!![];queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x3d')]=utils[_0x6121('0x13')]();if(_0x4c8794[_0x6121('0x3e')]==_0x6121('0x3f')){if(!queues[_0x4c8794[_0x6121('0x4')]]['transfer']){queues[_0x4c8794['uniqueid']]['queuecallerexitreason']=_0x6121('0x40');}}else{queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x9')]=_0x6121('0x41')+_0x4c8794[_0x6121('0x3e')]['toUpperCase']();}utils['info'](util[_0x6121('0x10')](_0x6121('0x42'),_0x4c8794[_0x6121('0x4')],queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x1e')],_0x4c8794[_0x6121('0x43')],queues[_0x4c8794[_0x6121('0x4')]][_0x6121('0x9')]));writeDB(queues[_0x4c8794[_0x6121('0x4')]]);}}}catch(_0x48b233){utils['error'](util['format'](_0x6121('0x3c'),_0x4c8794[_0x6121('0x4')]),_0x48b233);}};exports[_0x6121('0x44')]=function(_0x57efb0){try{if(!_[_0x6121('0x17')](queues[_0x57efb0[_0x6121('0x45')]])){utils[_0x6121('0x18')](util['format'](_0x6121('0x46'),_0x57efb0[_0x6121('0x4')]),_0x57efb0);queues[_0x57efb0[_0x6121('0x45')]]['transfer']=!![];queues[_0x57efb0[_0x6121('0x45')]]['transfertype']=_0x6121('0x47');queues[_0x57efb0[_0x6121('0x45')]]['transferexten']=_0x57efb0[_0x6121('0x48')];queues[_0x57efb0['transfereeuniqueid']][_0x6121('0x49')]=_0x57efb0[_0x6121('0x45')];queues[_0x57efb0[_0x6121('0x45')]][_0x6121('0x9')]=_0x6121('0x4a');utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x4b'),_0x57efb0[_0x6121('0x4')],queues[_0x57efb0[_0x6121('0x45')]][_0x6121('0x1e')],_0x57efb0['transfereeuniqueid'],_0x57efb0[_0x6121('0x48')]));}}catch(_0x272adb){utils[_0x6121('0x14')](util[_0x6121('0x10')](_0x6121('0x46'),_0x57efb0[_0x6121('0x4')]),_0x272adb);}};exports[_0x6121('0x4c')]=function(_0x4e5782){try{utils[_0x6121('0x18')](util[_0x6121('0x10')]('[%s][queues][attendedtransfer]',_0x4e5782[_0x6121('0x4d')]),_0x4e5782);if(_0x4e5782[_0x6121('0x4d')]==_0x4e5782[_0x6121('0x4e')]){if(!_[_0x6121('0x17')](queues[_0x4e5782[_0x6121('0x4f')]])){utils[_0x6121('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x1e')],_0x4e5782[_0x6121('0x50')]));queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x3f')]=!![];queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x51')]=_0x6121('0x52');queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x53')]=_0x4e5782[_0x6121('0x50')];queues[_0x4e5782['secondtransfererlinkedid']][_0x6121('0x49')]=_0x4e5782['origtransfereruniqueid'];queues[_0x4e5782['secondtransfererlinkedid']][_0x6121('0x9')]='ATTENDEDTRANSFER';}if(!_[_0x6121('0x17')](queues[_0x4e5782['origtransfererlinkedid']])){if(_0x4e5782[_0x6121('0x54')]&&queues[_0x4e5782['transfereelinkedid']]){queues[_0x4e5782[_0x6121('0x54')]][_0x6121('0x55')]=0x1;queues[_0x4e5782[_0x6121('0x45')]]=_[_0x6121('0x56')](queues[_0x4e5782['transfereelinkedid']]);queues[_0x4e5782['transfereeuniqueid']][_0x6121('0xf')]=_0x4e5782[_0x6121('0x57')];queues[_0x4e5782[_0x6121('0x45')]][_0x6121('0x55')]=0x2;queues[_0x4e5782[_0x6121('0x45')]][_0x6121('0x7')]=queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x7')];queues[_0x4e5782[_0x6121('0x45')]]['calleridname']=queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0x58')];queues[_0x4e5782['transfereeuniqueid']][_0x6121('0x35')]=utils['now']();queues[_0x4e5782['transfereeuniqueid']]['queuecallerleaveAt']=utils[_0x6121('0x13')]();queues[_0x4e5782[_0x6121('0x45')]][_0x6121('0x33')]=0x0;queues[_0x4e5782[_0x6121('0x45')]]['mohtime']=0x0;utils[_0x6121('0x2')](util[_0x6121('0x10')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782[_0x6121('0x45')]][_0x6121('0x1e')],queues[_0x4e5782['transfereeuniqueid']][_0x6121('0x7')],queues[_0x4e5782[_0x6121('0x45')]][_0x6121('0x58')]));}else{utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x59'),_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782[_0x6121('0x4e')]]['name'],_0x4e5782[_0x6121('0x4f')]));queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0xf')]=_0x4e5782[_0x6121('0x4f')];}}}else if(_0x4e5782['secondtransfereruniqueid']==_0x4e5782[_0x6121('0x4f')]){if(!_['isNil'](queues[_0x4e5782[_0x6121('0x4e')]])){utils[_0x6121('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782['origtransfererlinkedid']]['name'],_0x4e5782[_0x6121('0x5a')],_0x4e5782['secondtransfererexten']));queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0x3f')]=!![];queues[_0x4e5782['origtransfererlinkedid']][_0x6121('0x51')]=_0x6121('0x52');queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0x53')]=_0x4e5782['secondtransfererexten'];queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0x49')]=_0x4e5782[_0x6121('0x5a')];queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0x9')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x4e5782[_0x6121('0x4f')]])){if(_0x4e5782[_0x6121('0x5b')]&&queues[_0x4e5782['transfertargetlinkedid']]){queues[_0x4e5782[_0x6121('0x5b')]][_0x6121('0x55')]=0x1;queues[_0x4e5782[_0x6121('0x57')]]=_[_0x6121('0x56')](queues[_0x4e5782['transfertargetlinkedid']]);queues[_0x4e5782[_0x6121('0x57')]]['transfereduniqueid']=_0x4e5782['transfertargetuniqueid'];queues[_0x4e5782[_0x6121('0x57')]][_0x6121('0x55')]=0x2;queues[_0x4e5782[_0x6121('0x57')]][_0x6121('0x7')]=queues[_0x4e5782[_0x6121('0x4e')]][_0x6121('0x7')];queues[_0x4e5782['transfertargetuniqueid']]['calleridname']=queues[_0x4e5782['origtransfererlinkedid']][_0x6121('0x58')];queues[_0x4e5782[_0x6121('0x57')]]['queuecallerjoinAt']=utils[_0x6121('0x13')]();queues[_0x4e5782[_0x6121('0x57')]][_0x6121('0x19')]=utils['now']();queues[_0x4e5782['transfertargetuniqueid']]['holdtime']=0x0;queues[_0x4e5782[_0x6121('0x57')]][_0x6121('0x5c')]=0x0;utils['info'](util[_0x6121('0x10')](_0x6121('0x5d'),_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782['transfertargetuniqueid']][_0x6121('0x1e')],queues[_0x4e5782['transfertargetuniqueid']][_0x6121('0xf')],queues[_0x4e5782[_0x6121('0x57')]][_0x6121('0x7')],queues[_0x4e5782['transfertargetuniqueid']]['calleridname']));}else{utils[_0x6121('0x2')](util[_0x6121('0x10')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x4e5782[_0x6121('0x4d')],queues[_0x4e5782['secondtransfererlinkedid']][_0x6121('0x1e')],_0x4e5782[_0x6121('0x4e')]));queues[_0x4e5782[_0x6121('0x4f')]][_0x6121('0xf')]=_0x4e5782[_0x6121('0x4e')];}}}}catch(_0x2d3290){utils[_0x6121('0x14')](util['format'](_0x6121('0x5e'),_0x4e5782['origtransfereruniqueid']),_0x2d3290);}};exports[_0x6121('0x5f')]=function(_0x323eb6){try{if(!_[_0x6121('0x17')](queues[_0x323eb6['uniqueid']])){utils[_0x6121('0x18')](util['format'](_0x6121('0x60'),_0x323eb6[_0x6121('0x4')]),_0x323eb6);queues[_0x323eb6[_0x6121('0x4')]][_0x6121('0x61')]=utils[_0x6121('0x13')]();utils[_0x6121('0x2')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x323eb6['uniqueid'],queues[_0x323eb6[_0x6121('0x4')]]['name'],queues[_0x323eb6[_0x6121('0x4')]][_0x6121('0x61')]));}}catch(_0x3a3b8a){utils[_0x6121('0x14')](util[_0x6121('0x10')](_0x6121('0x60'),_0x323eb6[_0x6121('0x4')]),_0x3a3b8a);}};exports[_0x6121('0x62')]=function(_0x3b55da){try{if(!_[_0x6121('0x17')](queues[_0x3b55da[_0x6121('0x4')]])){if(!_['isNil'](queues[_0x3b55da['uniqueid']][_0x6121('0x61')])){utils[_0x6121('0x18')](util[_0x6121('0x10')](_0x6121('0x63'),_0x3b55da[_0x6121('0x4')]),_0x3b55da);queues[_0x3b55da['uniqueid']][_0x6121('0x5c')]+=utils[_0x6121('0x34')](utils[_0x6121('0x13')](),queues[_0x3b55da[_0x6121('0x4')]]['musiconholdstartAt']);utils[_0x6121('0x2')](util[_0x6121('0x10')](_0x6121('0x64'),_0x3b55da[_0x6121('0x4')],queues[_0x3b55da[_0x6121('0x4')]]['name'],queues[_0x3b55da[_0x6121('0x4')]][_0x6121('0x5c')]));delete queues[_0x3b55da[_0x6121('0x4')]][_0x6121('0x61')];}}}catch(_0x4523b6){utils[_0x6121('0x14')](util[_0x6121('0x10')]('[%s][queues][musiconholdstop]',_0x3b55da[_0x6121('0x4')]),_0x4523b6);}};
\ No newline at end of file
index 1e957be..3740fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3311=['transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','mixmonitor_filename','[%s][recordings][varset]','variable','value','.wav49','replace','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','outbound','forEach','clone','[%s][recordings][newexten]','appdata','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','./utils','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','uniqueid','linkedid','info','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','context'];(function(_0x5e622b,_0x41e198){var _0x563646=function(_0x5760e3){while(--_0x5760e3){_0x5e622b['push'](_0x5e622b['shift']());}};_0x563646(++_0x41e198);}(_0x3311,0x17d));var _0x1331=function(_0x4519fd,_0x428b01){_0x4519fd=_0x4519fd-0x0;var _0x4ac21f=_0x3311[_0x4519fd];return _0x4ac21f;};'use strict';var _=require('lodash');var util=require(_0x1331('0x0'));var utils=require(_0x1331('0x1'));var recordings={};function writeDB(_0x1fec43){utils['info'](util['format'](_0x1331('0x2'),_0x1fec43['uniqueid']));if(_0x1fec43[_0x1331('0x3')]){utils[_0x1331('0x4')](_0x1fec43[_0x1331('0x3')])[_0x1331('0x5')](function(_0x1beed7){if(_0x1beed7){_0x1fec43['membername']=_0x1beed7['name'];_0x1fec43['UserId']=_0x1beed7['id'];}utils['request'](_0x1331('0x6'),_0x1fec43);});}else{utils[_0x1331('0x7')](_0x1331('0x6'),_0x1fec43);}}exports[_0x1331('0x8')]=function(_0x1f9fab){try{utils[_0x1331('0x9')](util['format'](_0x1331('0xa'),_0x1f9fab[_0x1331('0xb')]),_0x1f9fab);if(_0x1f9fab['uniqueid']==_0x1f9fab[_0x1331('0xc')]){utils[_0x1331('0xd')](util[_0x1331('0xe')](_0x1331('0xf'),_0x1f9fab[_0x1331('0xb')],_0x1f9fab['context'],_0x1f9fab[_0x1331('0x10')]));recordings[_0x1f9fab[_0x1331('0xb')]]={'uniqueid':_0x1f9fab[_0x1331('0xb')],'accountcode':_0x1f9fab['accountcode'],'exten':_0x1f9fab[_0x1331('0x10')],'context':_0x1f9fab['context'],'channel':_0x1f9fab[_0x1331('0x11')],'monitors':[]};}}catch(_0xb3dc0d){utils[_0x1331('0x12')](util['format'](_0x1331('0xa'),_0x1f9fab[_0x1331('0xb')]),_0xb3dc0d);}};exports[_0x1331('0x13')]=function(_0x4d4058){try{utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x14'),_0x4d4058[_0x1331('0xb')]),_0x4d4058);if(!_[_0x1331('0x15')](recordings[_0x4d4058[_0x1331('0xb')]])&&_0x4d4058[_0x1331('0x16')]==0x6){utils[_0x1331('0xd')](util[_0x1331('0xe')](_0x1331('0x17'),_0x4d4058[_0x1331('0xb')],_0x4d4058['context'],_0x4d4058[_0x1331('0x11')]));}else if(!_[_0x1331('0x15')](recordings[_0x4d4058[_0x1331('0xc')]])&&_0x4d4058[_0x1331('0x16')]==0x6&&_0x4d4058[_0x1331('0x18')]!=_0x1331('0x19')){utils['info'](util[_0x1331('0xe')](_0x1331('0x1a'),_0x4d4058[_0x1331('0xb')],_0x4d4058[_0x1331('0xc')],_0x4d4058[_0x1331('0x18')],_0x4d4058[_0x1331('0x11')]));recordings[_0x4d4058[_0x1331('0xc')]][_0x1331('0x3')]=_0x4d4058['accountcode'];}}catch(_0x474f62){utils[_0x1331('0x12')](util['format'](_0x1331('0x14'),_0x4d4058['uniqueid']),_0x474f62);}};exports[_0x1331('0x1b')]=function(_0x38492c){try{if(!_[_0x1331('0x15')](_0x38492c['variable'])&&!_[_0x1331('0x15')](_0x38492c['variable'][_0x1331('0x1c')])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x1d'),_0x38492c[_0x1331('0xb')]),_0x38492c);utils[_0x1331('0xd')](util[_0x1331('0xe')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x38492c[_0x1331('0xb')],_0x38492c[_0x1331('0x1e')],_0x38492c[_0x1331('0x1f')]));if(_['endsWith'](_0x38492c[_0x1331('0x1f')],_0x1331('0x20'))){_0x38492c['value']=_0x38492c[_0x1331('0x1f')][_0x1331('0x21')]('.wav49',_0x1331('0x22'));}if(recordings[_0x38492c[_0x1331('0xc')]]){var _0x327761=_[_0x1331('0x23')](recordings[_0x38492c[_0x1331('0xc')]][_0x1331('0x24')],{'value':_0x38492c[_0x1331('0x1f')]});if(_['isNil'](_0x327761)){recordings[_0x38492c[_0x1331('0xc')]][_0x1331('0x24')][_0x1331('0x25')]({'value':_0x38492c[_0x1331('0x1f')]});}}}}catch(_0x566397){utils[_0x1331('0x12')](util['format'](_0x1331('0x1d'),_0x38492c[_0x1331('0xb')]),_0x566397);}};exports[_0x1331('0x26')]=function(_0x308051){try{if(!_[_0x1331('0x15')](recordings[_0x308051[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')]('[%s][recordings][hangup]',_0x308051[_0x1331('0xb')]),_0x308051);utils['info'](util['format'](_0x1331('0x27'),_0x308051[_0x1331('0xb')],_0x308051[_0x1331('0x28')],_0x308051[_0x1331('0x29')],_0x308051['cause-txt']));recordings[_0x308051[_0x1331('0xb')]]['calleridnum']=_0x308051[_0x1331('0x28')];recordings[_0x308051['uniqueid']]['calleridname']=_0x308051[_0x1331('0x29')];recordings[_0x308051[_0x1331('0xb')]]['connectedlinenum']=_0x308051[_0x1331('0x2a')];recordings[_0x308051['uniqueid']][_0x1331('0x2b')]=_0x308051['connectedlinename'];if(recordings[_0x308051[_0x1331('0xb')]]['type']==_0x1331('0x2c')&&recordings[_0x308051['uniqueid']][_0x1331('0x3')]){recordings[_0x308051[_0x1331('0xb')]][_0x1331('0x2a')]=recordings[_0x308051[_0x1331('0xb')]]['accountcode'];recordings[_0x308051[_0x1331('0xb')]][_0x1331('0x2b')]='';}recordings[_0x308051[_0x1331('0xb')]]['monitors'][_0x1331('0x2d')](function(_0x1a5f20){var _0x47eea4=_[_0x1331('0x2e')](recordings[_0x308051['uniqueid']]);_0x47eea4['value']=_0x1a5f20[_0x1331('0x1f')];writeDB(_0x47eea4);});delete recordings[_0x308051['uniqueid']];}}catch(_0x24a881){utils[_0x1331('0x12')](util[_0x1331('0xe')]('[%s][recordings][hangup]',_0x308051[_0x1331('0xb')]),_0x24a881);}};exports['newexten']=function(_0x59f9f5){try{if(!_[_0x1331('0x15')](recordings[_0x59f9f5[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x2f'),_0x59f9f5[_0x1331('0xb')]),_0x59f9f5);utils['info'](util[_0x1331('0xe')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x59f9f5[_0x1331('0xb')],_0x59f9f5['application'],_0x59f9f5[_0x1331('0x30')]));if(_0x59f9f5['application'][_0x1331('0x31')]()==_0x1331('0x32')&&_[_0x1331('0x33')](_0x59f9f5[_0x1331('0x30')]['toLowerCase'](),_0x1331('0x34'))){var _0x362c99=_0x59f9f5[_0x1331('0x30')]['split']('=');var _0x98fa43=_0x362c99[0x0][_0x1331('0x35')](_0x362c99[0x0]['lastIndexOf']('(')+0x1,_0x362c99[0x0][_0x1331('0x36')](')'));var _0x463464=_0x362c99[0x1];recordings[_0x59f9f5[_0x1331('0xb')]][_0x98fa43]=_0x463464;}}}catch(_0x41aa4b){utils['error'](util['format'](_0x1331('0x2f'),_0x59f9f5[_0x1331('0xb')]),_0x41aa4b);}};exports['queuecallerjoin']=function(_0x16a57c){try{if(!_[_0x1331('0x15')](recordings[_0x16a57c[_0x1331('0xb')]])){utils[_0x1331('0x9')](util[_0x1331('0xe')](_0x1331('0x37'),_0x16a57c['uniqueid']),_0x16a57c);utils[_0x1331('0xd')](util['format'](_0x1331('0x38'),_0x16a57c[_0x1331('0xb')],_0x16a57c[_0x1331('0x39')]));recordings[_0x16a57c[_0x1331('0xb')]][_0x1331('0x39')]=_0x16a57c[_0x1331('0x39')];}}catch(_0x171dd4){utils[_0x1331('0x12')](util['format']('[%s][recordings][queuecallerjoin]',_0x16a57c[_0x1331('0xb')]),_0x171dd4);}};
\ No newline at end of file
+var _0x673e=['[%s][recordings][newexten]','application','appdata','toLowerCase','set','startsWith','cdr','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','util','./utils','info','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then','membername','request','CreateVoiceRecording','newchannel','debug','format','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','variable','isNil','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','value','.wav49','monitors','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','type','outbound','clone','newexten'];(function(_0x503ea5,_0x45dd4f){var _0x550153=function(_0x10c54e){while(--_0x10c54e){_0x503ea5['push'](_0x503ea5['shift']());}};_0x550153(++_0x45dd4f);}(_0x673e,0x197));var _0xe673=function(_0x4850eb,_0xa65f6e){_0x4850eb=_0x4850eb-0x0;var _0x544cdc=_0x673e[_0x4850eb];return _0x544cdc;};'use strict';var _=require('lodash');var util=require(_0xe673('0x0'));var utils=require(_0xe673('0x1'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x229cf5){var _0x4843c7;utils[_0xe673('0x2')](util['format'](_0xe673('0x3'),_0x229cf5[_0xe673('0x4')]));if(transfers[_0xe673('0x5')][_0x229cf5['uniqueid']]){_0x4843c7=_0x229cf5['uniqueid'];_0x229cf5[_0xe673('0x4')]=transfers['blinds'][_0x229cf5[_0xe673('0x4')]][_0xe673('0x6')];}if(_0x229cf5[_0xe673('0x7')]){utils[_0xe673('0x8')](_0x229cf5['accountcode'])[_0xe673('0x9')](function(_0x4f7c53){if(_0x4f7c53){_0x229cf5[_0xe673('0xa')]=_0x4f7c53['name'];_0x229cf5['UserId']=_0x4f7c53['id'];}utils[_0xe673('0xb')](_0xe673('0xc'),_0x229cf5);});}else{utils['request']('CreateVoiceRecording',_0x229cf5);}if(_0x4843c7)delete transfers[_0xe673('0x5')][_0x4843c7];}exports[_0xe673('0xd')]=function(_0x1139dc){try{utils[_0xe673('0xe')](util[_0xe673('0xf')](_0xe673('0x10'),_0x1139dc['uniqueid']),_0x1139dc);if(_0x1139dc['uniqueid']==_0x1139dc[_0xe673('0x11')]){utils[_0xe673('0x2')](util[_0xe673('0xf')](_0xe673('0x12'),_0x1139dc[_0xe673('0x4')],_0x1139dc['context'],_0x1139dc['exten']));recordings[_0x1139dc[_0xe673('0x4')]]={'uniqueid':_0x1139dc[_0xe673('0x4')],'accountcode':_0x1139dc[_0xe673('0x7')],'exten':_0x1139dc[_0xe673('0x13')],'context':_0x1139dc[_0xe673('0x14')],'channel':_0x1139dc[_0xe673('0x15')],'monitors':[]};}}catch(_0x2e1a2b){utils[_0xe673('0x16')](util[_0xe673('0xf')](_0xe673('0x10'),_0x1139dc['uniqueid']),_0x2e1a2b);}};exports['newstate']=function(_0x3d6ee1){try{utils['debug'](util[_0xe673('0xf')]('[%s][recordings][newstate]',_0x3d6ee1[_0xe673('0x4')]),_0x3d6ee1);if(!_['isNil'](recordings[_0x3d6ee1[_0xe673('0x4')]])&&_0x3d6ee1[_0xe673('0x17')]==0x6){utils[_0xe673('0x2')](util['format'](_0xe673('0x18'),_0x3d6ee1[_0xe673('0x4')],_0x3d6ee1[_0xe673('0x14')],_0x3d6ee1[_0xe673('0x15')]));}else if(!_['isNil'](recordings[_0x3d6ee1[_0xe673('0x11')]])&&_0x3d6ee1[_0xe673('0x17')]==0x6&&_0x3d6ee1[_0xe673('0x14')]!='transfer'){utils['info'](util['format'](_0xe673('0x19'),_0x3d6ee1[_0xe673('0x4')],_0x3d6ee1[_0xe673('0x11')],_0x3d6ee1[_0xe673('0x14')],_0x3d6ee1[_0xe673('0x15')]));recordings[_0x3d6ee1['linkedid']][_0xe673('0x7')]=_0x3d6ee1[_0xe673('0x7')];}}catch(_0x58a786){utils[_0xe673('0x16')](util['format'](_0xe673('0x1a'),_0x3d6ee1['uniqueid']),_0x58a786);}};exports[_0xe673('0x1b')]=function(_0x5c59ed){try{if(!_['isNil'](_0x5c59ed[_0xe673('0x1c')])&&!_[_0xe673('0x1d')](_0x5c59ed[_0xe673('0x1c')]['mixmonitor_filename'])){utils[_0xe673('0xe')](util[_0xe673('0xf')](_0xe673('0x1e'),_0x5c59ed[_0xe673('0x4')]),_0x5c59ed);utils['info'](util[_0xe673('0xf')](_0xe673('0x1f'),_0x5c59ed[_0xe673('0x4')],_0x5c59ed['variable'],_0x5c59ed['value']));if(_[_0xe673('0x20')](_0x5c59ed[_0xe673('0x21')],_0xe673('0x22'))){_0x5c59ed[_0xe673('0x21')]=_0x5c59ed[_0xe673('0x21')]['replace'](_0xe673('0x22'),'.WAV');}if(recordings[_0x5c59ed[_0xe673('0x11')]]){var _0x2852ea=_['find'](recordings[_0x5c59ed['linkedid']][_0xe673('0x23')],{'value':_0x5c59ed[_0xe673('0x21')]});if(_['isNil'](_0x2852ea)){recordings[_0x5c59ed[_0xe673('0x11')]]['monitors']['push']({'value':_0x5c59ed[_0xe673('0x21')]});}}}}catch(_0x4249df){utils[_0xe673('0x16')](util[_0xe673('0xf')](_0xe673('0x1e'),_0x5c59ed[_0xe673('0x4')]),_0x4249df);}};exports[_0xe673('0x24')]=function(_0x45a100){try{if(!_[_0xe673('0x1d')](recordings[_0x45a100[_0xe673('0x4')]])){utils[_0xe673('0xe')](util[_0xe673('0xf')](_0xe673('0x25'),_0x45a100['uniqueid']),_0x45a100);utils['info'](util[_0xe673('0xf')](_0xe673('0x26'),_0x45a100[_0xe673('0x4')],_0x45a100[_0xe673('0x27')],_0x45a100['calleridname'],_0x45a100[_0xe673('0x28')]));recordings[_0x45a100[_0xe673('0x4')]][_0xe673('0x27')]=_0x45a100[_0xe673('0x27')];recordings[_0x45a100['uniqueid']][_0xe673('0x29')]=_0x45a100[_0xe673('0x29')];recordings[_0x45a100['uniqueid']][_0xe673('0x2a')]=_0x45a100[_0xe673('0x2a')];recordings[_0x45a100['uniqueid']][_0xe673('0x2b')]=_0x45a100[_0xe673('0x2b')];if(recordings[_0x45a100[_0xe673('0x4')]][_0xe673('0x2c')]==_0xe673('0x2d')&&recordings[_0x45a100['uniqueid']][_0xe673('0x7')]){recordings[_0x45a100['uniqueid']][_0xe673('0x2a')]=recordings[_0x45a100[_0xe673('0x4')]][_0xe673('0x7')];recordings[_0x45a100[_0xe673('0x4')]][_0xe673('0x2b')]='';}recordings[_0x45a100[_0xe673('0x4')]][_0xe673('0x23')]['forEach'](function(_0x56ebed){var _0x1e6101=_[_0xe673('0x2e')](recordings[_0x45a100[_0xe673('0x4')]]);_0x1e6101[_0xe673('0x21')]=_0x56ebed[_0xe673('0x21')];writeDB(_0x1e6101);});delete recordings[_0x45a100[_0xe673('0x4')]];}}catch(_0x13f391){utils[_0xe673('0x16')](util[_0xe673('0xf')]('[%s][recordings][hangup]',_0x45a100[_0xe673('0x4')]),_0x13f391);}};exports[_0xe673('0x2f')]=function(_0x3b2761){try{if(!_['isNil'](recordings[_0x3b2761[_0xe673('0x4')]])){utils[_0xe673('0xe')](util[_0xe673('0xf')](_0xe673('0x30'),_0x3b2761['uniqueid']),_0x3b2761);utils[_0xe673('0x2')](util[_0xe673('0xf')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x3b2761[_0xe673('0x4')],_0x3b2761[_0xe673('0x31')],_0x3b2761[_0xe673('0x32')]));if(_0x3b2761[_0xe673('0x31')][_0xe673('0x33')]()==_0xe673('0x34')&&_[_0xe673('0x35')](_0x3b2761[_0xe673('0x32')][_0xe673('0x33')](),_0xe673('0x36'))){var _0x153339=_0x3b2761[_0xe673('0x32')]['split']('=');var _0x272482=_0x153339[0x0]['substring'](_0x153339[0x0][_0xe673('0x37')]('(')+0x1,_0x153339[0x0][_0xe673('0x37')](')'));var _0x52557d=_0x153339[0x1];recordings[_0x3b2761[_0xe673('0x4')]][_0x272482]=_0x52557d;}}}catch(_0x2c21fb){utils[_0xe673('0x16')](util[_0xe673('0xf')](_0xe673('0x30'),_0x3b2761['uniqueid']),_0x2c21fb);}};exports[_0xe673('0x38')]=function(_0x2622f3){try{if(!_['isNil'](recordings[_0x2622f3['uniqueid']])){utils[_0xe673('0xe')](util[_0xe673('0xf')](_0xe673('0x39'),_0x2622f3[_0xe673('0x4')]),_0x2622f3);utils['info'](util[_0xe673('0xf')](_0xe673('0x3a'),_0x2622f3[_0xe673('0x4')],_0x2622f3[_0xe673('0x3b')]));recordings[_0x2622f3[_0xe673('0x4')]][_0xe673('0x3b')]=_0x2622f3[_0xe673('0x3b')];}}catch(_0x547046){utils[_0xe673('0x16')](util[_0xe673('0xf')](_0xe673('0x39'),_0x2622f3[_0xe673('0x4')]),_0x547046);}};exports['blindtransfer']=function(_0x623ce9){try{utils[_0xe673('0xe')](util[_0xe673('0xf')]('[%s][recordings][blindtransfer]',_0x623ce9[_0xe673('0x4')]),_0x623ce9);utils[_0xe673('0x2')](util['format'](_0xe673('0x3c'),_0x623ce9[_0xe673('0x4')],_0x623ce9['transferercalleridnum'],_0x623ce9[_0xe673('0x3d')],_0x623ce9['transfereecalleridnum'],_0x623ce9['transfereecalleridname']));if(recordings[_0x623ce9[_0xe673('0x3e')]]&&transfers[_0xe673('0x5')][_0x623ce9[_0xe673('0x3e')]]){transfers[_0xe673('0x5')][_0x623ce9['transfereruniqueid']][_0xe673('0x3f')]=!![];}}catch(_0x5e685f){utils[_0xe673('0x16')](util[_0xe673('0xf')](_0xe673('0x40'),_0x623ce9[_0xe673('0x4')]),_0x5e685f);}};
\ No newline at end of file
index 493504f..6d8568d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb9b=['origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinename','transfertargetcontext','transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','[%s][transfers][blindtransfer]','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel'];(function(_0x118d61,_0x2410d8){var _0x45c03c=function(_0x988f18){while(--_0x988f18){_0x118d61['push'](_0x118d61['shift']());}};_0x45c03c(++_0x2410d8);}(_0xbb9b,0x124));var _0xbbb9=function(_0xf43cb,_0x465374){_0xf43cb=_0xf43cb-0x0;var _0x14e869=_0xbb9b[_0xf43cb];return _0x14e869;};'use strict';var _=require(_0xbbb9('0x0'));var util=require(_0xbbb9('0x1'));var utils=require(_0xbbb9('0x2'));function writeDB(_0x1d0b2e){utils[_0xbbb9('0x3')](util[_0xbbb9('0x4')](_0xbbb9('0x5'),_0x1d0b2e[_0xbbb9('0x6')]===_0xbbb9('0x7')?_0x1d0b2e[_0xbbb9('0x8')]:_0x1d0b2e[_0xbbb9('0x9')],_0x1d0b2e['type']));utils['request']('CreateVoiceTransferReport',_0x1d0b2e);}exports[_0xbbb9('0xa')]={};exports[_0xbbb9('0xb')]=function(_0x3653ae){try{utils[_0xbbb9('0xc')](util[_0xbbb9('0x4')]('[%s][transfers][blindtransfer]',_0x3653ae[_0xbbb9('0x9')]),_0x3653ae);utils[_0xbbb9('0x3')](util['format'](_0xbbb9('0xd'),_0x3653ae[_0xbbb9('0x9')],_0x3653ae[_0xbbb9('0xe')],_0x3653ae[_0xbbb9('0xf')],_0x3653ae[_0xbbb9('0x10')],_0x3653ae[_0xbbb9('0x11')]));_0x3653ae[_0xbbb9('0x6')]=_0xbbb9('0x12');exports[_0xbbb9('0xa')][_0x3653ae['transfereruniqueid']]=_0x3653ae;writeDB(_0x3653ae);}catch(_0x567e21){utils['error'](util[_0xbbb9('0x4')](_0xbbb9('0x13'),_0x3653ae[_0xbbb9('0x9')]),_0x567e21);}};exports['attendedtransfer']=function(_0x342665){try{utils[_0xbbb9('0xc')](util['format'](_0xbbb9('0x14'),_0x342665[_0xbbb9('0x8')]),_0x342665);utils[_0xbbb9('0x3')](util[_0xbbb9('0x4')](_0xbbb9('0x15'),_0x342665[_0xbbb9('0x8')],_0x342665[_0xbbb9('0x16')],_0x342665[_0xbbb9('0x17')],_0x342665[_0xbbb9('0x18')],_0x342665[_0xbbb9('0x19')]));_0x342665=_[_0xbbb9('0x1a')](_0x342665,{'transfererchannel':_0x342665[_0xbbb9('0x1b')],'transferercalleridnum':_0x342665[_0xbbb9('0x16')],'transferercalleridname':_0x342665['origtransferercalleridname'],'transfererconnectedlinenum':_0x342665['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x342665['secondtransfererconnectedlinename'],'transfereraccountcode':_0x342665[_0xbbb9('0x1c')],'transferercontext':_0x342665[_0xbbb9('0x1d')],'transfererexten':_0x342665[_0xbbb9('0x1e')],'transfererlinkedid':_0x342665[_0xbbb9('0x1f')],'context':_0x342665[_0xbbb9('0x20')],'extension':_0x342665[_0xbbb9('0x21')],'type':_0xbbb9('0x7')});if(_[_0xbbb9('0x22')](_0x342665[_0xbbb9('0x23')])){_0x342665=_['assign'](_0x342665,{'transfereechannel':_0x342665[_0xbbb9('0x24')],'transfereecalleridnum':_0x342665[_0xbbb9('0x18')],'transfereecalleridname':_0x342665[_0xbbb9('0x19')],'transfereeconnectedlinenum':_0x342665['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x342665[_0xbbb9('0x25')],'transfereeaccountcode':_0x342665['transfertargetaccountcode'],'transfereecontext':_0x342665[_0xbbb9('0x26')],'transfereeexten':_0x342665['transfertargetexten'],'transfereelinkedid':_0x342665[_0xbbb9('0x27')]});}writeDB(_0x342665);}catch(_0x256dc0){utils['error'](util[_0xbbb9('0x4')]('[%s][transfers][attendedtransfer]',_0x342665[_0xbbb9('0x8')]),_0x256dc0);}};
\ No newline at end of file
+var _0x4584=['transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','blinds','transfereruniqueid','error','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','assign','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','isNil','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','CreateVoiceTransferReport','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0x4584,0xbe));var _0x4458=function(_0x36d45b,_0x417426){_0x36d45b=_0x36d45b-0x0;var _0x3dc01c=_0x4584[_0x36d45b];return _0x3dc01c;};'use strict';var _=require(_0x4458('0x0'));var util=require(_0x4458('0x1'));var utils=require(_0x4458('0x2'));function writeDB(_0x209f84){utils[_0x4458('0x3')](util[_0x4458('0x4')](_0x4458('0x5'),_0x209f84[_0x4458('0x6')]===_0x4458('0x7')?_0x209f84[_0x4458('0x8')]:_0x209f84['uniqueid'],_0x209f84[_0x4458('0x6')]));utils['request'](_0x4458('0x9'),_0x209f84);}exports['blinds']={};exports[_0x4458('0xa')]=function(_0xfd8050){try{utils[_0x4458('0xb')](util['format'](_0x4458('0xc'),_0xfd8050[_0x4458('0xd')]),_0xfd8050);utils[_0x4458('0x3')](util[_0x4458('0x4')](_0x4458('0xe'),_0xfd8050['uniqueid'],_0xfd8050[_0x4458('0xf')],_0xfd8050[_0x4458('0x10')],_0xfd8050[_0x4458('0x11')],_0xfd8050['transfereecalleridname']));_0xfd8050[_0x4458('0x6')]=_0x4458('0x12');exports[_0x4458('0x13')][_0xfd8050[_0x4458('0x14')]]=_0xfd8050;writeDB(_0xfd8050);}catch(_0x338332){utils[_0x4458('0x15')](util[_0x4458('0x4')](_0x4458('0xc'),_0xfd8050[_0x4458('0xd')]),_0x338332);}};exports['attendedtransfer']=function(_0x3ea8cf){try{utils['debug'](util['format']('[%s][transfers][attendedtransfer]',_0x3ea8cf[_0x4458('0x8')]),_0x3ea8cf);utils[_0x4458('0x3')](util[_0x4458('0x4')](_0x4458('0x16'),_0x3ea8cf[_0x4458('0x8')],_0x3ea8cf['origtransferercalleridnum'],_0x3ea8cf[_0x4458('0x17')],_0x3ea8cf[_0x4458('0x18')],_0x3ea8cf['transfertargetcalleridname']));_0x3ea8cf=_[_0x4458('0x19')](_0x3ea8cf,{'transfererchannel':_0x3ea8cf['origtransfererchannel'],'transferercalleridnum':_0x3ea8cf[_0x4458('0x1a')],'transferercalleridname':_0x3ea8cf['origtransferercalleridname'],'transfererconnectedlinenum':_0x3ea8cf[_0x4458('0x1b')],'transfererconnectedlinename':_0x3ea8cf[_0x4458('0x1c')],'transfereraccountcode':_0x3ea8cf[_0x4458('0x1d')],'transferercontext':_0x3ea8cf[_0x4458('0x1e')],'transfererexten':_0x3ea8cf[_0x4458('0x1f')],'transfererlinkedid':_0x3ea8cf[_0x4458('0x20')],'context':_0x3ea8cf[_0x4458('0x21')],'extension':_0x3ea8cf['origtransfererexten'],'type':_0x4458('0x7')});if(_[_0x4458('0x22')](_0x3ea8cf['transfereechannel'])){_0x3ea8cf=_[_0x4458('0x19')](_0x3ea8cf,{'transfereechannel':_0x3ea8cf[_0x4458('0x23')],'transfereecalleridnum':_0x3ea8cf['transfertargetcalleridnum'],'transfereecalleridname':_0x3ea8cf['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x3ea8cf[_0x4458('0x24')],'transfereeconnectedlinename':_0x3ea8cf[_0x4458('0x25')],'transfereeaccountcode':_0x3ea8cf[_0x4458('0x26')],'transfereecontext':_0x3ea8cf[_0x4458('0x27')],'transfereeexten':_0x3ea8cf[_0x4458('0x28')],'transfereelinkedid':_0x3ea8cf['transfertargetlinkedid']});}writeDB(_0x3ea8cf);}catch(_0xc22c48){utils['error'](util[_0x4458('0x4')]('[%s][transfers][attendedtransfer]',_0x3ea8cf[_0x4458('0x8')]),_0xc22c48);}};
\ No newline at end of file
index 81f61b1..777758d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f26=['isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','info','inspect','error','request','then','debug','[utils][request]\x20name:%s','GetUser','name','interface','length','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','catch','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','seconds','sumTime','now'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1f26,0x197));var _0x61f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f26[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x61f2('0x0'));var jayson=require(_0x61f2('0x1'));var moment=require(_0x61f2('0x2'));var util=require(_0x61f2('0x3'));var client=jayson[_0x61f2('0x4')][_0x61f2('0x5')]({'port':0x2329});var logger=require(_0x61f2('0x6'))('xdr');exports[_0x61f2('0x7')]=function(_0x4357bb,_0xeb6ad6){logger['info'](_0x4357bb,_0xeb6ad6?util[_0x61f2('0x8')](_0xeb6ad6,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x29211f,_0x5ed631){logger['debug'](_0x29211f,_0x5ed631?util[_0x61f2('0x8')](_0x5ed631,{'showHidden':![],'depth':null}):'');};exports[_0x61f2('0x9')]=function(_0x160dd2,_0x2ef9f2){logger[_0x61f2('0x9')](_0x160dd2,_0x2ef9f2?util[_0x61f2('0x8')](_0x2ef9f2,{'showHidden':![],'depth':null}):'');};exports[_0x61f2('0xa')]=function(_0x3dc52b,_0x1c59e5){return client[_0x61f2('0xa')](_0x3dc52b,{'body':_0x1c59e5})[_0x61f2('0xb')](function(_0x4d591b){logger[_0x61f2('0xc')](_0x61f2('0xd'),_0x3dc52b,_0x4d591b?util['inspect'](_0x4d591b,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x5d991d){logger['error']('[utils][request]\x20name:%s',_0x3dc52b,_0x5d991d?util[_0x61f2('0x8')](_0x5d991d,{'showHidden':![],'depth':null}):'');});};function getUser(_0x45ab46){return client['request'](_0x61f2('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x61f2('0xf'),_0x61f2('0x10')],'where':_0x45ab46,'limit':0x1}})[_0x61f2('0xb')](function(_0x51b9e8){logger[_0x61f2('0xc')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0x45ab46),_0x51b9e8?util['inspect'](_0x51b9e8,{'showHidden':![],'depth':null}):'');return _0x51b9e8['result'][_0x61f2('0x11')]?_0x51b9e8[_0x61f2('0x12')][0x0]:null;});}exports[_0x61f2('0x13')]=function(_0x5743e6){return new BPromise(function(_0x2e51d1,_0x4fbf2d){if(_0x5743e6){return getUser({'internal':_0x5743e6})[_0x61f2('0xb')](function(_0x22f514){logger[_0x61f2('0x7')](_0x61f2('0x14'),_0x5743e6,_0x22f514?_0x61f2('0x15'):'notfound');return _0x2e51d1(_0x22f514);})['catch'](function(_0x234a47){logger[_0x61f2('0x9')]('[utils][getUserByInternal]',_0x234a47?util['inspect'](_0x234a47,{'showHidden':![],'depth':null}):'');return _0x2e51d1(null);});}return _0x2e51d1(null);});};exports['getUserByInterface']=function(_0x5464be){return new BPromise(function(_0xcc1130,_0xfa024f){if(_0x5464be){return getUser({'interface':_0x5464be})['then'](function(_0x32c690){logger[_0x61f2('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x5464be,_0x32c690?_0x61f2('0x15'):_0x61f2('0x16'));return _0xcc1130(_0x32c690);})[_0x61f2('0x17')](function(_0x2288ed){logger[_0x61f2('0x9')](_0x61f2('0x18'),_0x2288ed?util[_0x61f2('0x8')](_0x2288ed,{'showHidden':![],'depth':null}):'');return _0xcc1130(null);});}return _0xcc1130(null);});};exports[_0x61f2('0x19')]=function(_0x5847e1){return new BPromise(function(_0x21fa88,_0x3304f4){if(_0x5847e1){return getUser({'name':_0x5847e1})[_0x61f2('0xb')](function(_0x223f17){logger['info'](_0x61f2('0x1a'),_0x5847e1,_0x223f17?_0x61f2('0x15'):_0x61f2('0x16'));return _0x21fa88(_0x223f17);})['catch'](function(_0x4a39b7){logger[_0x61f2('0x9')]('[utils][getUserByName]',_0x4a39b7?util['inspect'](_0x4a39b7,{'showHidden':![],'depth':null}):'');return _0x21fa88(null);});}return _0x21fa88(null);});};exports[_0x61f2('0x1b')]=function(_0x394a07){return new BPromise(function(_0x2b08d3,_0x36ff97){if(_0x394a07){return client['request'](_0x61f2('0x1c'),{'options':{'raw':!![],'attributes':['id','name','type',_0x61f2('0x1d'),_0x61f2('0x1e')],'where':{'name':_0x394a07},'limit':0x1}})[_0x61f2('0xb')](function(_0x145a4c){logger[_0x61f2('0xc')](_0x61f2('0x1f'),_0x394a07,_0x145a4c?util['inspect'](_0x145a4c,{'showHidden':![],'depth':null}):'');logger[_0x61f2('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x394a07,_0x145a4c?'found':_0x61f2('0x16'));return _0x2b08d3(_0x145a4c[_0x61f2('0x12')][_0x61f2('0x11')]?_0x145a4c[_0x61f2('0x12')][0x0]:null);})[_0x61f2('0x17')](function(_0x54e89a){logger[_0x61f2('0x9')](_0x61f2('0x20'),_0x54e89a?util[_0x61f2('0x8')](_0x54e89a,{'showHidden':![],'depth':null}):'');return _0x2b08d3(null);});}return _0x2b08d3(null);});};exports[_0x61f2('0x21')]=function(_0x1b0964,_0x30454a){return moment(_0x1b0964)['add'](_0x30454a,'seconds')[_0x61f2('0x22')](_0x61f2('0x23'));};exports[_0x61f2('0x24')]=function(_0x1b95a8,_0x427d30){return moment(_0x1b95a8)[_0x61f2('0x25')](_0x427d30,'seconds')['format'](_0x61f2('0x23'));};exports[_0x61f2('0x26')]=function(_0x1453d5,_0x659366){return moment(_0x1453d5)[_0x61f2('0x27')](moment(_0x659366),_0x61f2('0x28'));};exports[_0x61f2('0x29')]=function(_0x2df23b,_0x2d8a0f){return parseInt(_0x2df23b,0xa)+parseInt(_0x2d8a0f,0xa);};exports[_0x61f2('0x2a')]=function(){return moment()[_0x61f2('0x22')](_0x61f2('0x23'));};exports[_0x61f2('0x2b')]=function(_0x5906f7,_0x5257df){if(_0x5257df){return moment(_0x5906f7)['isAfter'](_0x5257df);}return!![];};exports[_0x61f2('0x2c')]=function(_0x599da0,_0x33df93){if(_0x33df93){return moment(_0x599da0)[_0x61f2('0x2c')](_0x33df93);}else if(_0x599da0){return!![];}return![];};
\ No newline at end of file
+var _0x5fba=['format','YYYY-MM-DD\x20HH:mm:ss','subtract','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','moment','http','../../config/logger','xdr','info','inspect','debug','error','request','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','then','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','length','[utils][getVoiceQueueByName]','add','seconds'];(function(_0x66c54b,_0x8f7c18){var _0x17d7fe=function(_0x357e0e){while(--_0x357e0e){_0x66c54b['push'](_0x66c54b['shift']());}};_0x17d7fe(++_0x8f7c18);}(_0x5fba,0x128));var _0xa5fb=function(_0x2c378c,_0x33d67f){_0x2c378c=_0x2c378c-0x0;var _0x548704=_0x5fba[_0x2c378c];return _0x548704;};'use strict';var BPromise=require(_0xa5fb('0x0'));var jayson=require(_0xa5fb('0x1'));var moment=require(_0xa5fb('0x2'));var util=require('util');var client=jayson['client'][_0xa5fb('0x3')]({'port':0x2329});var logger=require(_0xa5fb('0x4'))(_0xa5fb('0x5'));exports[_0xa5fb('0x6')]=function(_0x418a2b,_0x4c79d4){logger[_0xa5fb('0x6')](_0x418a2b,_0x4c79d4?util[_0xa5fb('0x7')](_0x4c79d4,{'showHidden':![],'depth':null}):'');};exports[_0xa5fb('0x8')]=function(_0x287d0b,_0xf174a4){logger[_0xa5fb('0x8')](_0x287d0b,_0xf174a4?util[_0xa5fb('0x7')](_0xf174a4,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x18a9ad,_0x3b5bbf){logger[_0xa5fb('0x9')](_0x18a9ad,_0x3b5bbf?util[_0xa5fb('0x7')](_0x3b5bbf,{'showHidden':![],'depth':null}):'');};exports[_0xa5fb('0xa')]=function(_0x30fb7a,_0x18e80c){return client[_0xa5fb('0xa')](_0x30fb7a,{'body':_0x18e80c})['then'](function(_0x27258e){logger[_0xa5fb('0x8')](_0xa5fb('0xb'),_0x30fb7a,_0x27258e?util[_0xa5fb('0x7')](_0x27258e,{'showHidden':![],'depth':null}):'');})[_0xa5fb('0xc')](function(_0x1a546e){logger[_0xa5fb('0x9')](_0xa5fb('0xb'),_0x30fb7a,_0x1a546e?util[_0xa5fb('0x7')](_0x1a546e,{'showHidden':![],'depth':null}):'');});};function getUser(_0x9c3f71){return client[_0xa5fb('0xa')](_0xa5fb('0xd'),{'options':{'raw':!![],'attributes':['id',_0xa5fb('0xe'),_0xa5fb('0xf'),_0xa5fb('0x10')],'where':_0x9c3f71,'limit':0x1}})[_0xa5fb('0x11')](function(_0x493099){logger[_0xa5fb('0x8')](_0xa5fb('0x12'),JSON[_0xa5fb('0x13')](_0x9c3f71),_0x493099?util[_0xa5fb('0x7')](_0x493099,{'showHidden':![],'depth':null}):'');return _0x493099[_0xa5fb('0x14')]['length']?_0x493099[_0xa5fb('0x14')][0x0]:null;});}exports[_0xa5fb('0x15')]=function(_0x5c2783){return new BPromise(function(_0x3b4d4f,_0x4b4e56){if(_0x5c2783){return getUser({'internal':_0x5c2783})[_0xa5fb('0x11')](function(_0x1820a6){logger[_0xa5fb('0x6')](_0xa5fb('0x16'),_0x5c2783,_0x1820a6?_0xa5fb('0x17'):_0xa5fb('0x18'));return _0x3b4d4f(_0x1820a6);})[_0xa5fb('0xc')](function(_0x48eeee){logger[_0xa5fb('0x9')](_0xa5fb('0x19'),_0x48eeee?util[_0xa5fb('0x7')](_0x48eeee,{'showHidden':![],'depth':null}):'');return _0x3b4d4f(null);});}return _0x3b4d4f(null);});};exports[_0xa5fb('0x1a')]=function(_0x5ae01c){return new BPromise(function(_0x5a7ee3,_0x26cb7d){if(_0x5ae01c){return getUser({'interface':_0x5ae01c})[_0xa5fb('0x11')](function(_0x5b01b0){logger[_0xa5fb('0x6')](_0xa5fb('0x1b'),_0x5ae01c,_0x5b01b0?_0xa5fb('0x17'):_0xa5fb('0x18'));return _0x5a7ee3(_0x5b01b0);})['catch'](function(_0x3de4b8){logger['error'](_0xa5fb('0x1c'),_0x3de4b8?util[_0xa5fb('0x7')](_0x3de4b8,{'showHidden':![],'depth':null}):'');return _0x5a7ee3(null);});}return _0x5a7ee3(null);});};exports['getUserByName']=function(_0x4d5a1e){return new BPromise(function(_0x142c52,_0xc81315){if(_0x4d5a1e){return getUser({'name':_0x4d5a1e})['then'](function(_0xe19ef){logger[_0xa5fb('0x6')](_0xa5fb('0x1d'),_0x4d5a1e,_0xe19ef?_0xa5fb('0x17'):_0xa5fb('0x18'));return _0x142c52(_0xe19ef);})[_0xa5fb('0xc')](function(_0x17dde7){logger['error'](_0xa5fb('0x1e'),_0x17dde7?util[_0xa5fb('0x7')](_0x17dde7,{'showHidden':![],'depth':null}):'');return _0x142c52(null);});}return _0x142c52(null);});};exports[_0xa5fb('0x1f')]=function(_0x2d085e){return new BPromise(function(_0x55b7bb,_0x1036e7){if(_0x2d085e){return client[_0xa5fb('0xa')](_0xa5fb('0x20'),{'options':{'raw':!![],'attributes':['id',_0xa5fb('0xf'),_0xa5fb('0x21'),'acw',_0xa5fb('0x22')],'where':{'name':_0x2d085e},'limit':0x1}})[_0xa5fb('0x11')](function(_0x719a70){logger[_0xa5fb('0x8')](_0xa5fb('0x23'),_0x2d085e,_0x719a70?util[_0xa5fb('0x7')](_0x719a70,{'showHidden':![],'depth':null}):'');logger[_0xa5fb('0x6')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x2d085e,_0x719a70?_0xa5fb('0x17'):_0xa5fb('0x18'));return _0x55b7bb(_0x719a70[_0xa5fb('0x14')][_0xa5fb('0x24')]?_0x719a70['result'][0x0]:null);})[_0xa5fb('0xc')](function(_0xba095f){logger[_0xa5fb('0x9')](_0xa5fb('0x25'),_0xba095f?util['inspect'](_0xba095f,{'showHidden':![],'depth':null}):'');return _0x55b7bb(null);});}return _0x55b7bb(null);});};exports['addTime']=function(_0x1c977e,_0x57208b){return moment(_0x1c977e)[_0xa5fb('0x26')](_0x57208b,_0xa5fb('0x27'))[_0xa5fb('0x28')](_0xa5fb('0x29'));};exports['subtractTime']=function(_0x298696,_0xbd94fb){return moment(_0x298696)[_0xa5fb('0x2a')](_0xbd94fb,_0xa5fb('0x27'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xa5fb('0x2b')]=function(_0x3f23e7,_0x464a12){return moment(_0x3f23e7)[_0xa5fb('0x2c')](moment(_0x464a12),_0xa5fb('0x27'));};exports[_0xa5fb('0x2d')]=function(_0x11ca2d,_0x3897f9){return parseInt(_0x11ca2d,0xa)+parseInt(_0x3897f9,0xa);};exports['now']=function(){return moment()['format'](_0xa5fb('0x29'));};exports[_0xa5fb('0x2e')]=function(_0x1debb9,_0x4340e6){if(_0x4340e6){return moment(_0x1debb9)['isAfter'](_0x4340e6);}return!![];};exports[_0xa5fb('0x2f')]=function(_0x4c75b8,_0x30b903){if(_0x30b903){return moment(_0x4c75b8)[_0xa5fb('0x2f')](_0x30b903);}else if(_0x4c75b8){return!![];}return![];};
\ No newline at end of file